HorseMatch

by andyshang
♥0 | Line 84 | Modified 2011-03-06 14:33:21 | MIT License
play

ActionScript3 source code

/**
 * 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");
		}
	}
}