2010年01月13日
パーフェクトシャッフルは何回で元に戻るか (AS3版)
続: パーフェクトシャッフルは何回で元に戻るか - 西尾泰和のはてなダイアリーが面白かったので ActionScript で再現してみた。

オリジナルの記事のように丸くするところはまだ。wonderfl にも投稿済み。
ソースはこんな感じ(59行)。HSV を使うところは frocessing の ColorHSV クラスを利用してる。
//------------------------------------------------------
// Perfect Shuffle Visualization
//------------------------------------------------------
package {
import flash.display.Sprite;
import flash.filters.BlurFilter;
import frocessing.color.ColorHSV;
[SWF(width="475",height="475",backgroundColor="0x000000")]
public class PerfectShuffle extends Sprite {
private const SIZE:int = 30;
private const W:int = 80;
private const H:int = 10;
public function PerfectShuffle() {
stage.scaleMode = "noScale";
graphics.beginFill(0x000000);
graphics.drawRect(0, 0, 475, 475);
graphics.endFill();
var num:int;
var s:Sprite = new Sprite();
s.x = 40;
s.y = 100;
addChild(s);
for (var i:int = 0; i < SIZE; i++) {
num = i;
s.graphics.lineStyle(4, new ColorHSV(i * 270 / SIZE, .7).value
s.graphics.moveTo(0, num * H);
for (var j:int = 0; j < 5; j++) {
num = getNext(num);
s.graphics.lineTo(j * W + W, num * H);
}
}
s.filters = [new BlurFilter(2, 2)];
}
private function getNext(num:int):int {
if (num < SIZE / 2) {
return num * 2 + 1;
} else {
return (num - SIZE / 2) * 2;
}
}
}
}