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

  • 957 views
Uploaded on

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

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

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
957
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
0
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

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