• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
コードゴルフのススメ(C言語)
 

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

on

  • 2,873 views

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

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

Statistics

Views

Total Views
2,873
Views on SlideShare
2,870
Embed Views
3

Actions

Likes
0
Downloads
2
Comments
0

2 Embeds 3

https://twitter.com 2
https://www.google.co.jp 1

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++ と関係なくてごめんなさい
      • ご清聴ありがとうございました