Project Euler 4
forked from Project Euler 3 (diff: 78)
@see http://projecteuler.net/index.php?section=problems&id=4
ActionScript3 source code
/**
* Copyright potix2 ( http://wonderfl.net/user/potix2 )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/g613
*/
// forked from potix2's Project Euler 3
// forked from potix2's PE002
// forked from potix2's PE001
//@see http://projecteuler.net/index.php?section=problems&id=4
package {
import flash.display.Sprite;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.events.Event;
public class Euler extends Sprite {
private function main():void {
var v:Vector.<int> = new Vector.<int>();
for ( var i:int = 100; i < 1000; i++ ) {
for ( var j:int = 100; j < 1000; j++ ) {
v.push(i * j);
}
}
v = v.sort(function(a:int, b:int):int {
return b - a;
});
dumpVector(v.filter(function(item:int, index:int, v:Vector.<int>):Boolean {
return isPalindrome('' + item);
}, this));
}
private function isPalindrome(s:String):Boolean {
//一番うえの桁と一番したの桁を比較し、一致しない場合は終了
if ( s.length < 1 ) {
return true;
}
else {
var top:String = s.substr(0, 1);
var last:String = s.substr(s.length - 1, 1);
if ( top == last ) {
return isPalindrome(s.substr(1, s.length - 2));
}
else {
return false;
}
}
}
// setup
private var _console:TextField;
public function Euler() {
addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(event:Event):void {
_console = new TextField();
_console.multiline = true;
_console.selectable = true;
_console.autoSize = TextFieldAutoSize.LEFT;
addChild(_console);
main();
}
private function log(msg:String):void {
_console.appendText("\n" + msg);
}
private function dumpVector(v:Vector.<int>):void {
v.forEach(function (item:int, index:uint, vect:Vector.<int>):void {
this.log(item);
}, this);
}
}
}
class VectorUtil {
public static function range(min:int, max:int):Vector.<int> {
var ret:Vector.<int> = new Vector.<int>(max - min + 1);
var i:int = 0;
while(i + min <= max ) {
ret[i] = min + i;
i++;
}
return ret;
}
}
