alternating case lines

alternating case lines 終了。この問題では、0mg さんの 55B@JS が特殊だ。以下のよう。

for(n=23;;)print(readline()[getpda(String)[n^=1].id]())

getpda() は、プロパティのリストを返すということのようだ。String のプロパティの22番目と23番目に toUpperCase と toLowerCase が入っていて .id でその名前を取り出し、readline() で読み込んだ文字列に対して、それらを呼んでいる。
短くはないが以下でもOK。

for(n=23;;)print(getpda(String)[n^=1].value(readline())) // 56B

あれ、でもなんでなんだろう?文字列を第一引数に渡すと動くのか?
〜〜〜〜〜
ところで、Hello broken keyboard は大ヒット問題になったな。現時点で、72 言語で解答が出ている。

Trianglular Text終了

Triangular Text が終了。公開された。幾何的要素が入った問題は、好きだし面白い。
C言語では、nai さんが、58B でぶっちぎりトップだった。相変わらず強いな。
scanf()では、

scanf("%1s",&c)

で、空白・改行を読み飛ばせるのか。お恥ずかしながら知らなかった。文字列だからか。また、以下でもできるようだ。

scanf(" %c",&c)

〜〜〜〜〜
昨日新種の問題がでた。Hello broken keyboard。問題としては、"Hello, world!" を出力するだけだが、採点方法が通常と異なる。点数は、

解に使用した文字種の数 + 解の長さ / 1000

だ。いい具合にこの2つの要素がミックスされている。Cでは、まだ、最短解にたどり着いていないのか、トップが次々に入れ替わって、どんどん短くなっていく状況。
今現在は、inaniwa さんが、15.048 ポイントでトップにたった。ただ、この解、サイズが、1000B を超えている。ということは、使っている文字種は、14 ということだ。これは、結構凄い。というのは、

main(){}printf;+&

で、15 種で、ここから一文字落とすのは相当難しそう。& か + か?

なお、この問題、出力文字列を "Hello, world!" 以外にしてほしかったな。goruby の 1B は興醒め。もうそのアピールはいらね。

9/2追記

Whirl で Hello broken keyboard をやってみた。1000B を切ることができ、2.997 ポイントで goruby に続き、言語ランキングの2位にたった。Whirl が2位になるなってことはまずないな。ただ、Whirl の hello world のトップは、580B だ。私の 997B はほど遠い。でも、もう、とても縮める気は起きない。

9/3追記

shinh さんが、C で、12.476 ポイントを出している!凄い。どうなってるんだろう。解答見るのが楽しみだな。
出力関数は、

printf()
write()
putchar()
puts()

以外あるとは思えないしなぁ。

main(){;}

で、9 種は使う。アセンブラ?というか機械語

Triangular Text など

Googleスマホで手書き入力できるようになった。なかなかいい感じ。手書き+入力補完というのは、使いやすいな。ただ、試しに、nn_x と手書きで入れようとしたら、どうしても、_ (underscore) が、- (hyphen) になってしまう。何かいい方法があるのかな?

さて、Triangular Text。まだアクティブな問題だが、C で参戦したがかなわない。何とか 65B まで縮めたが、もう限界だ。トップは、61B 。どうなってるんだろう?

〜〜〜〜〜

他にも最近面白そうな問題が出ている。Lazy Cater SymbolsIncreasingSplitSpace IndexString HalvingMedal Rankings。どれも面白そうだ。
String Halving は、やってみたけど、入力が1つしかないので、入力文字列の長さ(919B)を決め打ちできてしまい、cheat 解ができてしまう。入力をもう少し用意してほしかったな。
endless 問題でも、Jump NumbersStagger Encode FIXEDもよい問題だと思う。

〜〜〜〜〜

って、あまり内容の無い日記になってしまった。。。。

8/23追記

nai さんが、Triangular Text で、58B@C を出している。凄すぎる。

group elements

先ほど group elements が終了し、公開となった。正規表現のある言語、js や Groovy や sed では、解答は、straightforward だ。たいして面白味もない。
また awk でも打った。久しくやっていないのでためらったが、awk正規表現には、括弧によるグルーピングはあるが、その後方参照はないんだな。sed にもあるのに。awksed より新しかったと思うが。。。

C は、地道に、前の文字と異なったら大括弧を挿入、といったロジック。で、やってわかったが、この問題、最後の改行文字が無いんだな。C では、やりにくい。問題投稿時(受付時)に、最終改行は自動で補う仕様でもいいような。

だれも C でやっていなかったので、ちょろっと打ったら、あっという間に 84B@nu さんに抜かれた。ここのところ、C では、nu さんが驚異的なスコアを出している。

オリンピック開会式

4年前北京でのフィナーレが Jimmy Page だったので、この開会式ではだれが出てくるのだろうと楽しみにしていたら、Paul McCartney だった。確かに。この人をおいて他にいないな。しかも、Hey Jude。感動的だった。とはいえ、ライブではなく、YouTube で、見たのはつい先ほど。なおイントロは、The End だった。なんで、開会式に、"The End"?って一瞬思ったけど、歌詞は、

And in the end, the love you take is equal to the love you make.

だった。そうか、別に終わりを意味している歌じゃなかったんだ、といまさらわかった。そして、続く Hey Jude

Take a sad song and make it better.

に呼応しているのかな。

Remember to let her into your heart,
Then you can start to make it better.
Hey Jude, don't be afraid.
You were made to go out and get her.
The minute you let her under you skin,
Then you begin to make it better.

けっこう、ポジティブな歌なんだな。

高尾山

7月14日、10年ぶりくらいで高尾山に登った。6号路と呼ばれる沢沿いの道を歩いた。わりと緩やかなのぼりで、また、ゆっくり登ったこともあり、息切れせずに頂上まで行けた。高尾山の隣のもみじ台でとろろそばを食べ、缶ビールを一本飲み、もう少し奥の城山まで行った。城山には、ちょっと薄い色のキジトラの猫がいた。登山客にかわいがられているのだろう、人なれしていた。また、今年初のかき氷も食べた。こんな山の上でどうやって氷をつくるのだろう?電気きてんのかな?
帰りは、4号路のつり橋を通り、ビアマウントのそばから2号路に入り、びわ滝まで下りて、ふもとにでた。健康的な一日だった。たまには運動しないとだめだな。
夜、一緒に登った知り合いの家によった。昨年の震災でで飼うことができなくなった猫を引き取り飼っている。子どものころからかわいがられていたのだろう。知らない人を見ても逃げることもなく、むしろクンクンされ、手を出すとスリスリしてきた。整った顔の美人猫だ。
コーヒーをいただき、小さな果実も一粒いただいた。良き日だった。

Bitwise Counting

最近のあなごるでは、Bitwise Counting@sed が面白かった。
この問題は、0 から 255 までを2進数で表示するというもの。はじめ、sed とは縁のない問題かと思っていたら、tails さんが短い解答を出していたので、少し考えたらわかった。
endless 問題なので、少し spoiler ぎみだが、以下のような再帰操作を考えると解が得られる。

0    00    000
1 → 01 → 001 ...
     10    010
     11    011
           100
           101
           110
           111

つまり各行を2重化して、行末にそれぞれ、0 / 1 をアペンドする操作を繰り返せばよい。
なお、久しぶりに awk でも打った。awk も同じロジックで短い解ができた。ちょっとしたケアレスミス?考慮不足で 1B 損し、トップを逃した。残念。

7/25 追記

shinh さんが、55B@C を出してトップにたった。すごっ。私はといえば、63B から縮まらないので、晒してしまおう。

n;main(i){for(;n--+256;)for(i=8;putchar(i--?49^n>>i&1:10)%5;);}

60B 切る人たちは、何か根本的に違うんだろうな。Gray code のように、8 進数に持って行って、"%08o\n" なのかな?