naiの日記

ソフトウェアエンジニアから放射線科診断医にジョブチェンジしました。趣味のことを書きます。

anarchy golf

1151. Append Segment Time

93B@C ctime 関数というものを生まれて初めて使いました。 108バイトでトップだったところにnuさんが突然93バイト解をsubmitされたので今年度一びっくりしました おまけ:途中の100バイトのコードをせっかくなので供養しておきます。 strstr の使用は結構お…

1029. Bijective base 10 add

問題文:anarchy golf - Bijective base 10 add 問題概要 Base-10 bijective numeration同士の足し算を実装せよ. ここで,Base-10 bijective numerationとは,各桁に 0, 1, ..., 9 ではなく 1, 2, ..., A を用いる記法らしい.

Sharkovskii order (C) 解説 その2 ~x86機械語編~

その1 ~真面目な解法編~の続き.

Sharkovskii order (C) 解説 その1 ~真面目な解法編~

問題URL:anarchy golf - Sharkovskii order 8年前の問題ですが,qsortの比較関数にmainを渡したり,機械語を渡したりとやりたい放題やったので,個人的に印象に残っている問題です. 開催当時はC言語で1位をとったものの,自分のコードがなぜ動いているかわ…

881. Hello transposable world

Hello broken keyboardに続く,変則ルール Hello, world! です(他にもあったかも).今回は行と列をひっくり返しても同じコードとなるような条件で書けというもの. 最初は左下半分にコードを書いて残りをコメントで埋めるだけかと思いましたが,当然そうは…

875. Kimariji

最近はあまりCode Golfをやっていなかったのですが,ふとanarchy golfを見るとKimarijiをやってました. これはかるたラーとしては参加せざるを得ないということで,頑張ってCで縮めてトップを取ることができました.とても面白い問題でした. せっかくなの…

641. Hello broken keyboard

Hello broken keyboardがすごかったので一年半ぶりに日記を書いてみる。というか一年半も経つとさすがにはてな記法とかほとんど忘れてますね……それはさておき。

390. Heavy Rotation

strncatを使うことに気付いたらかなり短くなりました。 コード自体はShifting Pattern Fixedとかなり似ています。strncatは割と応用範囲が広く、好きな関数です。それにしても、一人で素振りしてた問題を除くと、Cで単独トップを取ったのは物凄く久しぶりな…

379. Borderizing Texts

終了しました。 Cは最終的に155Bになりましたが、161Bのコードは以下のようなものでした。 i;char*p;main(k,s){for(p=s;printf(gets(s)?" ":!*p?p=s,"__\n| \0 |\n| \0 |\n|_\0_|"+i++*6:*p++<33?k="___\0 | \0_|_\0 "-~i/2*4:i-2?"|\0"+~i*(i?i/2+k++&1:4):…

334. Sokoban

Sorobanの直後に投稿された問題で、問題名と内容を見てちょっと笑ってしまいました。 下から3ビット目をへし折るだけの簡単な問題ですが、42Bの投稿者で-5との論理積を取っているのは自分だけで、他の方はみな~4との論理積を取っていました。 この辺の書き方…

336. C style constants

チートくさいのでもう書いてしまいますが、38Bはsystem("perl")です。というか、perlの最短コードをそのままsystemの中に書いただけです。 これだけ単純な問題なので、execを許すならもっと縮むのではないかと思いましたが、自分はCとPerl以外は門外漢なので…

332. Soroban Fixed

終了しました。 ループカウンタをどのように設定するかが一番のポイントだったようです。 1・4・10回目のループは珠でなくそろばんの枠を出力しなければならないので、1・4・10回目が簡単な条件式で判定できなければなりません。 自分は1から2ずつ増やしてi=…

328. base convert

サークルの合宿やら試験やらでずっと更新できない状態が続いていましたが、漸く暇が出来ました。 328. base convert 一位のnnさんの解は凄いですね。無駄がありません。 再帰関数を作り逆順で出力する方法しか考えていなかったので、これには参りました。 自…

322. Substract from a Googol

私生活でいろいろあってしばらくゴルフから離れていましたが、とりあえず再開です。 322. Substract from a Googol 締め切り直前のSubmitすみません。なぜかいつも締め切りギリギリでのSubmitになってしまう…… 今回は途中寝落ちしてしまったこともあり、縮め…

314. Roman numeral

終了しました。 トップのinaniwaさんの解はなんと93B。 減算則のチェックに、直前の値を保存せず、合計値を表す変数sが現在の値aで割り切れるかどうかで判定しています。 なるほど、確かにaの値は通常は広義単調減少で、しかも過去の値はすべて現在の値の倍…

317. Multiplication Table

終了しました。 deadlineギリギリでの投稿、失礼しました。 (一応言っておきますと、隠し玉として温存していたわけでは決してありません)終了直前までは i;main(){for(;i-144;)printf("%3d%c",~(i++/12)*~(i%12),~i%12?32:10);}この68Bだったのですが、pri…

314. Roman numeral

実は今日は大学で英語一列の試験だったので、昨日いっぱいはGolfしないつもり……だったのですが、やはり次々と縮んでいく記録や自分のコードを見ているとGolfが止まらなくなってしまいました。まあ、いつも通りです。 (試験の出来がどうだったかは皆さんのご…

309. Not Random

まず、終了後にPerlで同じコードを二回Submitしてしまい申し訳ございません。 擬似乱数の生成規則に基づいて文字列を出力させる問題です。 私は数字をいじくり回している間に偶然気付きましたが、やはり参加者は少なかったようです。 言語によってはそもそも…

307. Zigzag

終了しました。inaniwaさんの93Bは、入力をまったく行わない乱数コードでした。 出力文字が与えられているのでscanfやら何やらは必須とばかり思っていたのですが、38-n/2という抜け道があったとは。 これはまったく思いつきませんでした。

307. Wrap Words FIXED

終了しました。94Bの解。 char*p;main(n,s){for(n=atoi(gets(s));gets(p=s);puts())for(;p

305. Factorization corrected

終了しました。終了直前までnnさんとほぼ同じ80Bのコードだったのですが、最終日に飲み屋の入り口でなんとなく考えていたらprintfの第三引数を工夫することで1B縮めることを閃きました。そこからは飲みの席でコーディング→テスト→(携帯電話で)サブミットと…

307. Wrap Words FIXED

文字列を指定された文字数で折り返す問題。 スペース2つがタブ文字に置き換わっているので再出題となりましたが、PerlのText::Wrapを用いるとFIXEDでない方と同じ解答が得られるので、あながち出題ミスともいえないようです。 //もちろん、C Golferとしては…

305. Factorization corrected

a+b=xかつab=yとなるようなa,b(a≦b)を探す問題。 aとbがともに整数になることに優しさを感じますwいかにも通らなさそうな80BをSubmitしてみたところ、通ってしまいました。 Outputがπであることについさっき気づいた。

301. Palindromic prime

http://golf.shinh.org/p.rb?Palindromic+prime 終了しました。私のアルゴリズムはnnさんと同じですね。 k,n,p;main(i){for(;p=++i<2e4;k%=i-p||printf("%d\n",i))for(n=i;n?k=k*10+n%10:k%++p;n/=10);}nが非0の間は10進数で逆にした数字kを作り、nが0になっ…

301. Palindromic prime

ひさびさの更新となりました。現在90Bで3人が並んでいます。 //90Bを通したらあっという間に2人に並ばれたでござる Statsも実行時間も同じぐらいなので、同じアルゴリズムを用いているのかな? 僕が使っているのは若干直感に反するアルゴリズムです。とり…

293.char pyramid

http://golf.shinh.org/p.rb?char+pyramid (ようやく)終了しました。Cのトップはnnさんと私で、ともに89B。 Statisticsが結構違ったのが気になりましたが、まあだいたい同じコードだろうと思って見たら全然違いました。 nnさん i,j;main(n,b){for(b+=n=rea…

296.ehangc

http://golf.shinh.org/p.rb?ehangc終了しました。初期にSubmitした空白3つの70Bは以下のコードです。 #define $*s^=s[strlen(s)-1] char s[];main(){for(;gets(s);puts())$^=$;}ここからstrlen(s)-1を変数に代入して69B。これが最短だと思っていましたが、n…

297. Half Sierpinski

http://golf.shinh.org/p.rb?Half+Sierpinski トップのkikさんが59Bなのを見て、何かいいアルゴリズムがあるのだろうと決めてかかりました。 実際その通りで、ある点が'#'か' 'なのかは、非常に簡潔なアルゴリズムで記述できます。これだけのアルゴリズムで…

299. Magic Square

http://golf.shinh.org/p.rb?Magic+square 魔方陣を生成する問題。 Sampleを見れば生成規則は一目瞭然ですが、コードで書くとなると難しいです。 アルゴリズムを見直して大幅に縮みましたが、トップのnotさんは104Bで届きません。方針は同じだと思うのですが…

291.Ghost leg solver

http://golf.shinh.org/p.rb?Ghost+leg+solver コード公開になりました。notさんのコードを見ればわかるように、a,bがint型のとき a^=b^=a^=b でaとbの値の交換ができます。 やっていることはa+=b;b=a-b;a-=b;と大差ないのですが、「2回行うと元に戻る」と…