In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

ワンライナー回文チェック

Get Adobe Flash player
by imajuk 20 Mar 2011
    Embed
/**
 * Copyright imajuk ( http://wonderfl.net/user/imajuk )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/2CpV
 */

package {
    import flash.display.Sprite;
    import flash.text.TextField;
    import flash.text.TextFieldAutoSize;
    /**
     * ワンライナー回文チェック
     *
     * 正規表現の練習をしてたらいつのまにかできてた。
     * Tweetしようと思ったけど140文字に圧縮できなかった!
     * 1 liner (163 characters)
     * s==s.match(new RegExp("^"+(function(a,n,c){return a.split("#").join(n--==0?".":arguments.callee("(.)"+"#\\"+ c++,n,c))})("#",int(s.length/2),1)+"$", "g")).join("")
     *
     * 書いてから気づいたけど回文チェックに正規表現使う必要ない!
     * こっちの方が素直だ(127 characters)
     * (function(a,b){b=b&&a[0]==a[a.length-1];a.pop();a.shift();return (b&&a.length>1)?arguments.callee(a, b):b;})(s.split(""), true)
     *
     * forkで最短のコードが示されてました。yonatanさん、ご指摘ありがとうございます。
     * s == s.split("").reverse().join("")
     * 難しく考えすぎてた。恥ずかしい。。
     *     
     * 回文は「回文の部屋(http://www.sutv.zaq.ne.jp/shirokuma/kaibun.html)から勝手にお借りしました」
     **/
    public class FlashTest extends Sprite {
        public function FlashTest() {
            // write as3 code here..
            var s:String = "ろだんてさっきのきっさてんだろ";
            var tf:TextField = addChild(new TextField()) as TextField;
            tf.autoSize = TextFieldAutoSize.LEFT;
            tf.appendText("ロダンてさっきの喫茶店だろ?\n(" + s + ")\n");
            tf.appendText(String(
                (function(a:Array,b:Boolean):Boolean{b=b&&a[0]==a[a.length-1];a.pop();a.shift();return (b&&a.length>1)?arguments.callee(a, b):b;})(s.split(""), true)
            ));
        }
    }
}