最近の問題から
日記が滞りがちだ。なかなか継続は難しい。
Farey sequence
Cはよく縮まり、最終的にnot さんの94B に追いついた。ロジックもほとんど同じだった。縮め甲斐のある面白い問題だった。因みに、88B(rand)解は以下のよう。
m=1,i;main(g,n){for(n%=9u;i%g+m%g?g--:(m/g>n||printf("%d/%d\n",i/g,m/g),g=m=840)/++i;);}
Factorize me
まともに素因数を探すととんでもない時間がかかる。なので、ちょっと、cheat ぎみだが、素因数探しを5e4(50,000)で打ち切ることでうまくいく。
Cでは、一部、int だとオーバーフローするようで答えが合わない。なので、少し、Byte を損してしまうが、変数は、unsigned で扱った。150B@C。
JavaScriptでは、5e4で打ち切ってもタイムアウトしてしまう。なので、さらに汚いが、大きな素因数は特別扱いして時間を稼いだ。161B@JavaScript
Non trivial powers Revisted
こちらも2つ目の input の入力が大きすぎ。87bit ある。なので、C や JavaScript など、BigInteger のない言語では、なんらか cheat せざるを得ない。いまいち。
32bit integer
単純な問題。ただ、C は、1〜2B 縮めるのに工夫がいる。しんどい。最大・最少の 2 つの int ではなく、long long で計算すると縮みそうな気がしたのだが、結局は、39B でトップタイ。しかし、
-1u
で 32bit の all one を作ったが、-1 なのに、unsigned という指定は、なんか妙だな。
not echo
AC ネタ。実は、私の出題。これとか「ポポポポ〜ン」とかは、ネットでいろいろなパロディーがあって結構面白かった。
さて、問題の方は、シャレもきいているのだが、これは、endless 問題である2. echo を意識したものでもある。
C は思いのほか面白かった。53B は以下のようで、read() の 3 つめの引数が省略可能となっている。たまたま、3 番目の引数に対応する、レジスタかスタックに正の値(たぶんアドレス)が入っているのだろう。以前、別の問題で、inaniwa さんが、read() の 3 番目の引数にアドレスを明示的に渡していたのがあったが、今回は、それも省略できたということだ。今までにはなかったパターンだ。
b[];main(){puts(read(0,b)%2?"No. Everyone does.":b);}
Groovy も面白かった。トップタイの 46B は以下の通り。
print"$System.in"-~/I.*/?:'No. Everyone does.'
shell game EASY by murky-satyr さんの解にもあり、以前この日記でも説明したが、文字列が、ある文字列(や正規表現)に一致した場合は、代わりの文字列に変換するというのは、上記のように、文字列の引き算と Elvis 演算子(?:)を用いて簡潔に表現できる。
LASTDIGIT2 fixed and remixed
この問題は、オリジナルの LASTDIGITS2 が問題としては面白いと思ったのに、インプットや解答がいい加減で質が悪いのに見かねて作り直したもの。ちょっと技巧的過ぎたかもしれないけど、結局、下位の 1〜2 桁だけあれば答えが出せるので、BigInteger のない言語でもチャレンジできるというもの。手前味噌だが、そこそこ面白かったと思う。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
さて、今アクティブな問題では、Lucky numbers は私の出題。適度な難しさで面白いと思うが、いまいち、人気ないな。
Central binomial coefficient は、C でトップと 2B 差。しばらく考えたが縮め方がわからない。まいった。
FRACTRAN fixed も JavaScript でトップに大差をつけられている。こちらも今のところ No idea だ。
あとは、Non Descreasing Digits や alphabet ranges は面白そうだな。