Wrap Words FIXED 終了
Wrap Words FIXED が終了した。
C
nai さんの解。いゃ〜、これは、尋常じゃないな。圧倒的な差を感じる。だいたい、atoi() の空呼びなんて、だれが、gets() の前に atoi() を呼ぶなんて思いつけるんだろう。想像の域を絶している。まぁ、さすがに、はじめからこういう形ではなかったんだろうけど。お見事、というより、どう動いているんだか、まだ、よく理解できていない。index() の !n も、これ、初回は、s から 1 を探しているんだろうな。よく、SEGV 起こさず、1 が見つかるもんだ。(6/16追記:nai さんの日記に詳しい説明があった。1 は見つからず、index() は 0 を返す。確かに。main() の第二引数の指す先は、文字列へのポインターの配列だから、たいてい、そういうことになるな。)
Groovy
murky-satyr さんの解。
(x,y)='AB'
とやると、x='A'、y='B' となる。Factorization Corrected でも使われていた。これって、前からあったかなぁ?これ、左辺は Syntax としてはどう解釈されるんだろう。……… 調べてみた。"Multiple Assignment" というのか。そのまんまの名前だ。Groovy 1.6 からだった。http://groovy.codehaus.org/Statements に説明があった。
早速追記
RE のなかで、${} が使える。
/(.{0,${x+--y}})\s/
なぜだ?RE's のシンタックスとかち合わないのか?また、クラスはなんだんだろう、って思って調べてみたら、以下の通りだった。
print('a1c'.class) //==> java.lang.String print("a1c".class) //==> java.lang.String print('a${1}c'.class) //==> java.lang.String print("a${1}c".class) //==> org.codehaus.groovy.runtime.GStringImpl print(/a1c/.class) //==> java.lang.String print(/a${1}c/.class) //==> org.codehaus.groovy.runtime.GStringImpl
/abc/ というのは、Regular Expression ではなく、ただの String なのか。そして、/.../でも、"..." でも、"${...}" を含めば GString なんだな。(クラス名として、GString ではなく、GStringImpl と出るところが、ちょっとかっこ悪い。なぜ、ユーザーにインプリクラスが見えてしまうのか。)
ところで、上の例を試していて変なことに気がついた。Groovy Console で、単に、
/a1c/.class
を実行すると、java.lang.String と表示されるが、
/a1c/.class
のように、'/' の前に改行があると、compilation error: unexpected char '/' at line: 2, column: 1 となる。なんでだろう。怪しい動き。
〜〜〜
Zigzag
次の Zigzag 。いまいち盛り上がりにかけている。実は私の出題でした。中途半端にめんどくさいのが良くなかったかな。
box in box
こちらも、まだ、盛り上がっていない(こちらは私の出題ではありません)。まずは、JavaScript でやってみた。当初 190B 台だったのが、157B まで縮んだ。長めの面倒な式の分、結構縮むな。そろそろ限界っぽいので、他の言語に展開するか。