ギークハウス⾃由が丘
平井さん歓迎会
コードゴルフ
Created	by	 	/	嶋⽥健志 @TakesxiSximada
はい
お前誰よ(⾃⼰紹介)
嶋⽥健志	(@TakesxiSximada)
Webエンジニア
フリーランス
Python好き
本題
ゴルフ
コードゴルフは好きですか?
ゴルフ
ゴルフ
これではありません
コードゴルフは好きですか?
コードゴルフは好きですか?
コードゴルフは好きですか?
コードゴルフ!!
コードゴルフ
Created	by	 	/	嶋⽥健志 @TakesxiSximada
コードゴルフ	is	...
コードゴルフ(Code	golf)とは、
特定の動作をするプログラムのソ
ースコードを、可能な限り短いバ
イト数で記述するプログラミン
グ・コンテストである。
by	Wikipedia
つまり
コードが短い⽅が偉い
偉い
(๑•̀ㅁ•́๑)✧
そんなの当たり前
だろ!!
プログラミングの種類と考えること
種類 考えること
実際の業務 可読性/保守性/再利⽤性など...い
ろいろ
競技プログラミ
ング
計算速度(計算量)/メモリ使⽤量
コードゴルフ コードの短さ
要件が違えば
書くコードは変わる
さらに⼤事なこと
さらに⼤事なこと
140⽂字以下じゃない
とTweetできない
例1:	fizzbuzz
fizzbuzz	is	...
1からスタートして⾃然数を表⽰していく
3で割り切れる数字はfizzを表⽰する
5で割り切れる数字はbuzzを表⽰する
つまり世界のナベアツ
python -c 'print("n".join(["fizz",""]
[bool(i%3)]+["buzz",""][bool(i%5)] or
str(i) for i in range(1,101)))'
106⽂字
In [1]: len("""python -c 'print("n".join(["fizz",""][bo
ol(i%3)]+["buzz",""][bool(i%5)] or str(i) for i in range(1,101)))'""
")
Out[1]: 106
ゴルフ
(╭☞•́⍛•̀)╭☞からの?
python -c 'for c in
range(101):print(c%3//2*"Fizz"+c%5//4*"Buzz"or-
~c)'
72⽂字
In [1]: len(""""python -c 'for c in range(101):print(c%3
//2*"Fizz"+c%5//4*"Buzz"or-~c)'""")
Out[1]: 73
ゴルフ
(๑˃ ̵ᴗ˂̵)‫	و‬ヨシ!
次
例2:	奇数の完全数
奇数の完全数	is	...
2で割り切れない⾃然数(つまり奇数)
その数を除く約数の和がその数になる(つまり完全数)
上記2つが同時に成り⽴つ数
これまでに
このような数字は
これまでに
このような数字は
⾒つかっていない
もし運良く
⾒つかってしまったら
数学史に名前が残る
٩(๑❛ᴗ❛๑)۶	ヤッタ〜!!
python -c "from itertools import *;
print(next(n for n in count(1,2) if sum(s
for s in range(1,(n//2)) if
((n/s)%1)==0)==n))"
よくわかかる解説
sum(s for s in range(1,(n//2)) if
((n/s)%1)==0)
1からある数n//2(nの半分)までの数
(完全数はn⾃⾝は含まない)
sは1からn//2までの整数
n/sが1で割り切れる(余りなしなので約数)
sum()内はリスト内包表記のジェネレータとなる
sum()で合計
next(n for n in count(1,2) if (約数の合
計)==n)"
count()	(itertools.count())で奇数を取得
約数の合計がある数nになるものを探す
next()内はジェネレータとなる
next()でジェネレータを⼀つ進める
itertools.count()は標準モジュールなのでセーフ
(ということにしている)
125⽂字
In [2]: len('''python -c "from itertools import *; print
(next(n for n in count(1,2) if sum(s for s in range(1,(n//2)) if ((n
/s)%1)==0)==n))"''')
Out[2]: 125")
実際にやってみて
103029以下には
ない事を確認した
実際にやってみて
103029以下には
ない事を確認した
なお⾒つからない模様
探す事は難しくない
⾒つける事は難しい
探す事は難しくない
⾒つける事は難しい
世の中そんなに
⽢くない
(๑•́	₃	•̀๑)エー
まとめ
コードゴルフはコードが短いほどよい
少なくとも140⽂字以下じゃないとtweetできない
コードゴルフはゴルフではありません
みんなやろうよ!!
コードゴルフ
平井さんようこそー
おわり

More Related Content

PDF
ゴルフ
PPT
コードゴルフのススメ(C言語)
ODP
翻訳ゆらぎ
PDF
「やっぱり怖かったPerl」In Kichijoji.pm #2
PPTX
Hello world(kari)
PDF
Vocacon 2015 歌声合成技術の総称を決めよう メイン資料
KEY
CoderDojo Tokyo のなりたち
PDF
Osc2012 hiroshima
ゴルフ
コードゴルフのススメ(C言語)
翻訳ゆらぎ
「やっぱり怖かったPerl」In Kichijoji.pm #2
Hello world(kari)
Vocacon 2015 歌声合成技術の総称を決めよう メイン資料
CoderDojo Tokyo のなりたち
Osc2012 hiroshima

What's hot (9)

PDF
20120512
PDF
CoderDojoの始め方
PDF
Hologram communication 360 from TADHack Japan
PDF
C#erがF#に這い寄ってみた
PDF
Perlbeginners 3 opening talk
PPTX
Fluent Feature in F#
PDF
Miyazakirb vol0 lt
PDF
Perlを勉強してみて思ったこと
PDF
Codereatreat in KIT
20120512
CoderDojoの始め方
Hologram communication 360 from TADHack Japan
C#erがF#に這い寄ってみた
Perlbeginners 3 opening talk
Fluent Feature in F#
Miyazakirb vol0 lt
Perlを勉強してみて思ったこと
Codereatreat in KIT
Ad

Similar to ゴルフ (7)

PPTX
オセロゲームでコードゴルフ
PPT
コードゴルフのススメ(C言語)
PDF
Mathematicaでgolf
PDF
コードゴルフ 〜今日から始める難読コードの世界〜
ODP
KEY
Haskell golf intro
ODP
Shortcodin
オセロゲームでコードゴルフ
コードゴルフのススメ(C言語)
Mathematicaでgolf
コードゴルフ 〜今日から始める難読コードの世界〜
Haskell golf intro
Shortcodin
Ad

ゴルフ