第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 回目 ]

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

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

投稿記事 by bitter_fox » 14年前

おぉ~、夢の58Bは僕のコードに埋まってたのですか・・・

残念ながら、%61も思いつきませんでしたし、getsの位置も思いつきませんでした。。。
金が埋まってたのに、上手に採掘できなかったなぁ~

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

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

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

> bitter_fox さん
惜しかったですね!
五反田さんは ほかの方のコードから盗掘(?)というか、良いところを発見するのが得意で感心するばかり。