あなごる

pl.gs

http://www.darrenks.com/golfscript/ なんかすごそう。でもスタックベースの言語は全く未知の世界。 512,{: 4096+8base 1>' is -'9,-1%{.3%['x''w''r']=2@? \/1&\'-'if}/n}% 解らんながらもなんとか動くものが出来たので送信したら Time out。 そうか,そん…

Print numbers

-7to:7 do:[:x|((16 radix:9-x)subStrings:$r)last displayNl]! Integer>>#radix: は基数が先頭に付いた文字列を返すので,これを除くために長くなる。 '10 11 12 13 14 15 16 17 20 22 24 31 100 121 10000'display! 実はこれでも同じ59バイト。報われない…

js.golf.pseudo_tips[0]

map,forEachの2つめ以降の引数 - ロックスターになりたい あなごる的にはありがたくない機能だったりする。 print([1,2,3].join('\n')) → [1,2,3].map(print) // (6?)

look n say with: Regex

最近のGSTは正規表現が使えるらしく,試しに look'n'say を解いてみた。 残念ながらあなごるでは(バージョンが古すぎて)未対応なのでここに晒してみる。 |k s|k:=stdin nextLine. 1to:12 do:[:c|s:=''. k displayNl onOccurrencesOfRegex:'1+|2+|3+'asRegex …

GST install

smalltalkが結構面白くなってきた*1ので,処理系を入れてみることにした。 GNU Smalltalkのサイトをチェック。Win用のバイナリは無さそう*2。 仕方がないのでCygwinを導入することに。 何故かダウンロード途中に失敗のダイアログが沢山出る。 ダウンロード元…

js.golf.tips[4] = 'Sphenic Numbers'

murky-satyr (62) → 51b (60)true ≒ 1 を承知でなぜかこの発想が無かった。アルゴリズムは合ってただけに悔しい。

js.golf.tips[3]

文字列関連。 'string'.charAt(5) → 'string'[5] // IEには無い機能。 (7) 'string'.charCodeAt(0) → 'string'.charCodeAt() // デフォは0。 (1) 'string'.length → 'string'[-1] // SpiderMonkeyの謎仕様。 (3)

js.golf.tips[2]

a&&b → a&b a||b → a|b // a, b は真偽値。(1) bit/算術演算において true が 1 に,false が 0 に変換されることを利用する。

js.golf.tips[1]

ビット演算系のイディオム。ゴルフ以外でも有用? Math.floor(i) → i|0 // iはint32の範囲内。(10) if(i!=-1) → if(~i) // ~-1 === 0 を利用。(3) (i+1)/2 → -~i/2 (i-1)/2 → ~-i/2 // 優先順位を変えて括弧を外す。 (2) +('0x'+h) → '0x'+h|0 // 16進文字列…

js.golf.tips[0]

anarchy golf*1用の書き方をいくつか。各コメント末の括弧内は稼いだバイト数。 i=0,$=readline() → $=readline(i=0) // 引数を取らない関数に何か渡しても怒られない。(1) print(a.join(' ')) → print.apply(0,a) // printに渡した引数が空白区切りで出力さ…