パーフェクトシャッフルは何回で元に戻るか (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;
        }
    }
}
}