Old Magician & permuatation date

Old Magician

この問題は、結局、2番目の数値が奇数なら"BLACK"を、偶数なら"WHITE"を出力するというもの。単純な問題だ。ポイントは、1行目の要素数をどうやって無視するかということ。
C言語では、解法は若干の違いで 2 通りあったが、全員 88B で並んだ。数年前に『 Number One より Only One 』という気休めの言葉が流行り、SMAP の歌にまでなったが、Golf では、Only One の方がよっぽど難しいな。

permutation date

こちらは、面白かった。まず、単純に小さい数値から increment していき、条件チェックに通ったものを出力する、という方法が考えられるが、この方法は、簡単に timeout してしまう。なので、各桁ごとに range を変えて for ループをネストさせると時間内に終わらせるコードができる。さらに、for 文の条件式を統一し、再帰にすることで、縮めることができる。
ここで、2 通りやり方が考えられる。ひとつは、各桁ごとに処理する方法。この方法の欠点は、hh(時)が 24 以下になるよう条件を入れなければならないところ。つまり、例えば、hh として 19 は OK だが、25 は NG ということ。このため、各桁を完全に独立に扱うことができず、例外的なコードを入れなければならない。
もうひとつの方法は、2 桁ごとに処理する方法。こちらでは、例外的な処理は要らないが、同じ数字を使わないことをチェックする部分が長めになってしまう。

C

C 言語では、両方試して、後者の方が縮んだので、116B を Submit した。
not さんの解は、前者の 1 桁ごとに処理する方法だ。さすが、not さん、24 の処理方法がうまい。しかし、あまり本気でやっていないのかな?ちょっといじったら、113B ができた。結局、1 桁ごとに処理するほうが短くなるということか。。。

JavaScript

JS でも、C と同じアプローチを取った。ただ、単純にやると、timeout してしまう。しょうがないので、ループする回数を減らすコードをちょっと入れてある。そのため、長くなってしまった。時間制限がゆるければ、もう少し縮まる。
〜〜〜
そのほかいくつか現在アクティブな問題について。。。

Ruby

この手の問題は好きなんだが、入力が 1 の時の出力が特殊すぎる。それだけで、やる気がなくなってしまった。

Product

これも問題としては面白いと思うが、x=10 は大きすぎるのでは? timeout してしまう気がする。しかも、サンプル数が少ないので、embed 解の方が短い。

toggleCASE

C で、56B を出したとき「勝った!」と確信したが、その後、nai さんに 55B で抜かされた。強すぎ。56B->55B はしばらく考えた。難しかったが、なんとか追いついた。

Graph

これは、括弧付きで Submit した通り、出力が一貫していない。しかも、この問題も、サンプル数が少ないので、embed 解の方が短くなりそうだ。出題者が直してくれるかと期待したが、直してくれなそう。。。自分で直してしまおうかなぁ。

Squares Round 2

leonid さんの作。Squares の follow-on だ。さらに強力になった感じ。Squares の not さんの解を参考にがんばってみるかな。