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 do:[:x|s:=s,'%1%2'bindWith:x match size with:x match first]. k:=s]!
なんと24文字のメソッド。ゴルファー泣かせもいいとこである。
追記:
文字列展開 - @hdb
マニュアルに載ってないのだが,bindWithArguments: は % で代用出来るらしい(これもあなごるは未対応)。
|k s|k:=stdin nextLine. 1to:12 do:[:c|s:=''. k displayNl onOccurrencesOfRegex:'1+|2+|3+'asRegex do:[:x|s:=s,'%1%2'%{x match size. x match first}]. k:=s]!
少し縮んだ。
追追記:
|k s|k:=stdin nextLine.-2to:9 do:[:c|s:=''.k displayNl onOccurrencesOfRegex:'1+|2+|3+'asRegex do:[:x|s:=s,'%1%2'%{x match size. x match first}].k:=s]!
さらに縮んだ。