コードゴルフのススメ(C言語)
Upcoming SlideShare
Loading in...5
×
 

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

on

  • 1,273 views

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

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

Statistics

Views

Total Views
1,273
Views on SlideShare
1,273
Embed Views
0

Actions

Likes
1
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

コードゴルフのススメ(C言語) コードゴルフのススメ(C言語) Presentation 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(“%dn”, i + 1);
      • printf(“%d%c”, i + 1, 10);
      • printf(“%d%c”,_+(_==_),$);
  • tututen 的最終形態
  • 解説
    • しません!
    • LT 枠では少し時間が短すぎる
  • 結び
    • C++ と関係なくてごめんなさい
    • ご清聴ありがとうございました