コードゴルフのススメ(c言語)

15

Click here to load reader

Upload: fumihito-yokoyama

Post on 09-Jul-2015

2.409 views

Category:

Technology


0 download

DESCRIPTION

Sapporo.cpp #2 LT枠で発表させてもらったもの。

TRANSCRIPT

Page 1: コードゴルフのススメ(C言語)

コードゴルフのススメ( C言語)

横山 文人(@tututen)

Page 2: コードゴルフのススメ(C言語)

自己紹介 社会人  1年生(北見工業大学 大学院卒)

LOCAL学生部  OB 学生の方で興味があれば

作品とか作らないプログラマ 言語仕様でいろいろ簡単なものを作るのが大好き

パネルでポンの対戦者募集中(ry

Page 3: コードゴルフのススメ(C言語)

コードゴルフ 【 code golf】より少ないバイト数で所与の課題をプログラミングする遊び。より少ない打 (鍵 )数を競うところがゴルフに似

ているところからの命名。 (はてなキーワード)

ある処理に対して、できるだけ短く記述する行為

LL( Lightweight Language)が主流 ↑主に、 Perl、 PHP、 Ruby、 Python

Page 4: コードゴルフのススメ(C言語)

コードゴルフの利点 いろいろな書き方を覚えることができる

「こう書いたら読みにくい」の書き方

スパゲッティコードを読む根気が養われる アンチコードを LTネタとして用意できる

Page 5: コードゴルフのススメ(C言語)

コードゴルフの欠点 実用性皆無 趣味の領域 ただ短くするだけでは、手法が偏ってしまう →そこで、ただ短くするだけではなく難読化や手法の改善・改悪などを重視して書き換えることも行うとよい

Page 6: コードゴルフのススメ(C言語)

コードゴルフのネタ 見つけたソースがすべてがネタ ここでは「1~10を表示する」を例にプログラムを例に紹介いていこうと思います。

Page 7: コードゴルフのススメ(C言語)

基本形

Page 8: コードゴルフのススメ(C言語)

コードゴルフの方針 変数を 1文字にする 無駄な空白、中括弧({})を省く いろんな処理を 1行にまとめる なるべく、英数字を使わない(←俺俺ルール)

Page 9: コードゴルフのススメ(C言語)

第 1形態

Page 10: コードゴルフのススメ(C言語)

解説 変数名を「 _」にした

int _; 初期化の部分を条件式で 0と 1を再現した

_ = _!=_ // i = 0 _ + (_ == _) // i + 1

括弧の間のスペース削除 コマンドライン引数の削除

Page 11: コードゴルフのススメ(C言語)

第 2形態

Page 12: コードゴルフのススメ(C言語)

解説 数字「 10」をビット演算で生成

int ten=1<<3|1<<1; //0b1010 => 10 int $=_<<_+_+_|_<<_;

’改行コード \n’を 10と置き換える printf(“%d\n”, i + 1); printf(“%d%c”, i + 1, 10); printf(“%d%c”,_+(_==_),$);

Page 13: コードゴルフのススメ(C言語)

tututen的最終形態

Page 14: コードゴルフのススメ(C言語)

解説

しません! LT枠では少し時間が短すぎる

Page 15: コードゴルフのススメ(C言語)

結び

C++と関係なくてごめんなさい

ご清聴ありがとうございました