コードゴルフのススメ(c言語)
DESCRIPTION
Sapporo.cpp #2 のLTで発表させてもらったもの。TRANSCRIPT
コードゴルフのススメ( C言語)
横山 文人(@tututen)
自己紹介 社会人 1年生(北見工業大学 大学院卒)
LOCAL学生部 OB 学生の方で興味があれば
作品とか作らないプログラマ 言語仕様でいろいろ簡単なものを作るのが大好き
パネルでポンの対戦者募集中(ry
コードゴルフ 【 code golf】より少ないバイト数で所与の課題をプログラミングする遊び。より少ない打 (鍵 )数を競うところがゴルフに似
ているところからの命名。 (はてなキーワード)
ある処理に対して、できるだけ短く記述する行為
LL( Lightweight Language)が主流 ↑主に、 Perl、 PHP、 Ruby、 Python
コードゴルフの利点 いろいろな書き方を覚えることができる
「こう書いたら読みにくい」の書き方
スパゲッティコードを読む根気が養われる アンチコードを LTネタとして用意できる
コードゴルフの欠点 実用性皆無 趣味の領域 ただ短くするだけでは、手法が偏ってしまう →そこで、ただ短くするだけではなく難読化や手法の改善・改悪などを重視して書き換えることも行うとよい
コードゴルフのネタ 見つけたソースがすべてがネタ ここでは「1~10を表示する」を例にプログラムを例に紹介いていこうと思います。
基本形
コードゴルフの方針 変数を 1文字にする 無駄な空白、中括弧({})を省く いろんな処理を 1行にまとめる なるべく、英数字を使わない(←俺俺ルール)
第 1形態
解説 変数名を「 _」にした
int _; 初期化の部分を条件式で 0と 1を再現した
_ = _!=_ // i = 0 _ + (_ == _) // i + 1
括弧の間のスペース削除 コマンドライン引数の削除
第 2形態
解説 数字「 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”,_+(_==_),$);
tututen的最終形態
解説
しません! LT枠では少し時間が短すぎる
結び
C++と関係なくてごめんなさい
ご清聴ありがとうございました