第14回 mixC++ Code Golf 結果報告

アバター
あーる@Reputeless
記事: 84
登録日時: 15年前
住所: 千葉

第14回 mixC++ Code Golf 結果報告

投稿記事 by あーる@Reputeless » 14年前

#第14回[Missing letters]#

[問題]
記号や数字、空白を含まない英小文字列が入力される
使われていない文字をアルファベット順に表示する
*以下の入力例に対し正しい出力をすれば正解とする

[入力 |例1]
bcdefghijklmnopqrstuvwxy

[出力 |例1]
az

[入力 |例2]
dddcccbbbaaa

[出力 |例2]
efghijklmnopqrstuvwxyz

[入力 |例3]
abcdefghijklmnopqrstuvwxyz

[出力 |例3]


[入力 |例4]
pneumonoultramicroscopicsilicovolcanoconiosis

[出力 |例4]
bdfghjkqwxyz

[期間]
1/ 8(土)22:00 ~ 1/15(土)21:59

[hr]
=結果=

投稿数 26件(8人)

1位 (60B)
沖 滉均 さん
i=96;main(s){for(gets(&s);i++<122;index(&s,i)||putchar(i));}

bitter_fox さん
main(c,s){gets(s);for(c=96;c++<122;)index(s,c)?:putchar(c);}

roxion1377 さん
l=96;main(C){for(gets(&C);l++<122;)index(&C,l)?:putchar(l);}

五反田 さん
i=96;main(s){for(;i%61;strchr(&s,++i)||putchar(i))gets(&s);}

*1位1番乗り
沖 滉均 さん

[hr]
★解説

今回のポイントは次の2つです。

ある程度のバッファオーバーフローは気にしない
コードを見ると、gets() の引数が、適当なサイズの配列へのポインタではありません。
明らかにバッファオーバーフローしていますが、動作はしているのでCode Golf 的には OK です。

短い名前の関数を探す
面倒な処理は、標準ライブラリ関数で代用できないか検討しましょう。
今回は、文字列から特定の文字を探し、見つけたらその位置のポインタ、見つからなかったら NULL を返す strchr が役立ちそうでした。
でも、その strchr と同じ働きをする index 関数を見つけた方は、さらに 1B 節約できたようです。
あれ、でも1位のコードの4人目は・・・?

Code Golf に興味が出てきたら、コミュニティ「Code Golf を楽しもう」まで!
初心者歓迎、参戦&観戦いつでもお待ちしています!
http://dixq.net/forum/viewforum.php?f=52

第15回の投稿受付中です。
[hr]
OOJ について

ookami さんが、コードのジャッジシステム(β版)を作ってくれました。ありがとうございます。
http://dixq.net/forum/blog.php?u=93&b=1227
これで、投稿コードが不正解じゃないか心配する必要がなくなりますね (╹◡╹*

試しに使ってみたら、ほとんど完成しているみたい。さて、いつから導入しましょうか。
第15回の問題も、これを使って判定できるかな?
.
最後に編集したユーザー あーる@Reputeless on 2011年1月15日(土) 22:08 [ 編集 1 回目 ]

アバター
みけCAT
記事: 6734
登録日時: 14年前

Re: 第14回 mixC++ Code Golf 結果報告

投稿記事 by みけCAT » 14年前

はいはいまけたまけた
これ俺のコードな。(74B)
l,p;main(i){for(;p-26;~(i=getchar())?l|=1<<i-97:l&1<<p++||putchar(p+96));}

xxx
記事: 26
登録日時: 15年前

Re: 第14回 mixC++ Code Golf 結果報告

投稿記事 by xxx » 14年前

五反田さんやばいですね・・・まさかの59Bいけてた・・・
私が最初に書いたやつ

CODE:

C[123];
main(l){
  for(;l=~getchar();)
    C[~l]++;
  for(l=96;l++<122;)
    C[l]?:putchar(l);
}

アバター
みけCAT
記事: 6734
登録日時: 14年前

Re: 第14回 mixC++ Code Golf 結果報告

投稿記事 by みけCAT » 14年前

ちょっと待て、問題おかしくないか?

アバター
あーる@Reputeless
記事: 84
登録日時: 15年前
住所: 千葉

Re: 第14回 mixC++ Code Golf 結果報告

投稿記事 by あーる@Reputeless » 14年前

> みけCAT さん
すみません コピペミスです /(^o^)\ 直しておきました。

> roxion1377 さん
うーむ、上位3人の誰かが %61 に気づくか、五反田さんが index を見つけていれば

アバター
bitter_fox
記事: 607
登録日時: 14年前

Re: 第14回 mixC++ Code Golf 結果報告

投稿記事 by bitter_fox » 14年前

あぁ、初期化かぁ、思いつかなかったorz

もうほんとバッファオーバーフローでOSの逆鱗に触れるんじゃないかとビクビクしてましたw
五反田さんのコードは相変わらず難しい・・・

アバター
あーる@Reputeless
記事: 84
登録日時: 15年前
住所: 千葉

Re: 第14回 mixC++ Code Golf 結果報告

投稿記事 by あーる@Reputeless » 14年前

> bitter_fox さん
五反田さんのコードはいつも一味違いますね~

アバター
五反田
記事: 21
登録日時: 15年前

Re: 第14回 mixC++ Code Golf 結果報告

投稿記事 by 五反田 » 14年前

60Bで頭打ちだと思ったら、どうやら59Bいけたようですね。
というかindex関数についてはcode golf入門のページに書いてあったのに、見落としてました。ショック。

もう少し似通ってるのかとも思いましたが、少しづつ違うのが面白いですね。

アバター
沖 滉均
記事: 237
登録日時: 14年前

Re: 第14回 mixC++ Code Golf 結果報告

投稿記事 by 沖 滉均 » 14年前

CODE:

i=96;main(s){for(;i%61;index(&s,++i)||putchar(i))gets(&s);}
なるほど…五反田さんのをindexに変えると59Bか(・ω・`)
夢の59Bに一番近かったのは五反田さんだった(・ω・`)

アバター
五反田
記事: 21
登録日時: 15年前

Re: 第14回 mixC++ Code Golf 結果報告

投稿記事 by 五反田 » 14年前

どうやら、bitter_foxさんのを少し改良すると58Bに到達出来るようです。

CODE:

main(c,s){for(c=96;c++%61;index(s,c)?:putchar(c))gets(s);}
実行結果
http://ideone.com/pxt6W

アバター
あーる@Reputeless
記事: 84
登録日時: 15年前
住所: 千葉

Re: 第14回 mixC++ Code Golf 結果報告

投稿記事 by あーる@Reputeless » 14年前

> 沖 滉均 さん
でしたねー。しかも 58B にしちゃいましたし。

> 五反田 さん
あら、この s が使えるのは便利ですね。既出だったかな?