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; } } } }