/**
* Copyright andyshang ( http://wonderfl.net/user/andyshang )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/4Byi
*/
package
{
//see http://bbs.9ria.com/viewthread.php?tid=75268&pid=691362&page=1&extra=#pid691362
import flash.display.Sprite;
import flash.text.TextField;
[SWF(width="465",height="465")]
public class House extends Sprite
{
private var m:Vector.<int>
private var textField:TextField = new TextField();
private var count:int = 0
public function House()
{
addChild(textField);
textField.width = stage.stageWidth;
textField.height = stage.stageHeight;
var h:Vector.<int> = new Vector.<int>;
for(var i:int=0;i<25;i++)
{
h[i] = i;
}
h.sort(function(a,b):int{return Math.random() > 0.5?1:-1})
run(h);
run(Vector.<int>([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]));
run(Vector.<int>([25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1]));
}
private function run(h:Vector.<int>):void
{
log(h)
count = 0;
var cursor:int = 5
m = h.slice(0,cursor);
match(m)
while(cursor < 25)
{
var m2:Vector.<int> = h.slice(cursor,cursor+4);
m2.push(m[2])
match(m2)
var temp:Vector.<int>
if(m[2] == m2[0])
{
temp = Vector.<int>([m[3],m[4],m2[1],m2[2]])
match(temp);
m = Vector.<int>([m[0],m[1],m[2],temp[0], temp[1]]);
}
if(m[2] == m2[1])
{
temp = Vector.<int>([m[0], m[1], m2[0],m[3],m2[2]])
match(temp);
m = Vector.<int>([temp[0], temp[1], temp[2], m[2],temp[3]]);
}
if(m[2] == m2[2])
{
m = Vector.<int>([m[0],m[1],m2[0],m2[1],m[2]]);
match(m);
}
if(m[2] == m2[3])
{
m = Vector.<int>([m[0],m[1],m2[0],m2[1],m[2]]);
match(m);
}
if(m[2] == m2[4])
{
m = Vector.<int>([m[0], m[1], m2[0],m2[1],m2[3]]);
match(m);
m = m.slice(0,4);
m.push(m2[2])
match(m);
}
cursor += 4;
}
log("final result is:", m);
}
private function match(arr:Vector.<int>):void
{
var str:String = arr.join(',')
arr.sort(function(a,b):int{return a>b?-1:1});
log("No.",count++,"match..." + arr, " .......3rd is", arr[2]);
}
private function log(...args):void
{
textField.appendText(args.join(" ")+"\n");
}
}
}