SlideShare a Scribd company logo
ギークハウス⾃由が丘
平井さん歓迎会
コードゴルフ
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

What's hot

CoderDojoの始め方
CoderDojoの始め方CoderDojoの始め方
CoderDojoの始め方
Tsutomu Kawamura
 
Hologram communication 360 from TADHack Japan
Hologram communication 360 from TADHack JapanHologram communication 360 from TADHack Japan
Hologram communication 360 from TADHack Japan
Alan Quayle
 
C#erがF#に這い寄ってみた
C#erがF#に這い寄ってみたC#erがF#に這い寄ってみた
C#erがF#に這い寄ってみた
Hiroshi Maekawa
 
Perlbeginners 3 opening talk
Perlbeginners 3 opening talkPerlbeginners 3 opening talk
Perlbeginners 3 opening talkazuma satoshi
 
Fluent Feature in F#
Fluent Feature in F#Fluent Feature in F#
Fluent Feature in F#
igeta
 
Miyazakirb vol0 lt
Miyazakirb vol0 ltMiyazakirb vol0 lt
Miyazakirb vol0 ltcocoa_dahlia
 
Perlを勉強してみて思ったこと
Perlを勉強してみて思ったことPerlを勉強してみて思ったこと
Perlを勉強してみて思ったこと
Yuzo Iwasaki
 

What's hot (9)

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

Similar to ゴルフ

コードゴルフのススメ(C言語)
コードゴルフのススメ(C言語)コードゴルフのススメ(C言語)
コードゴルフのススメ(C言語)
Fumihito Yokoyama
 
コードゴルフ 〜今日から始める難読コードの世界〜
コードゴルフ 〜今日から始める難読コードの世界〜コードゴルフ 〜今日から始める難読コードの世界〜
コードゴルフ 〜今日から始める難読コードの世界〜
Shingo Inoue
 
OSSで楽に作るGo言語クライアントツール
OSSで楽に作るGo言語クライアントツールOSSで楽に作るGo言語クライアントツール
OSSで楽に作るGo言語クライアントツール
Tano Makoto
 
契約プログラミング
契約プログラミング契約プログラミング
契約プログラミングOda Shinsuke
 
Cocos sharpでゲーム開発してみました
Cocos sharpでゲーム開発してみましたCocos sharpでゲーム開発してみました
Cocos sharpでゲーム開発してみました
Tomohiro Suzuki
 
きつねさんでもわかる Firefox OS コードリーディング入門
きつねさんでもわかる Firefox OS コードリーディング入門きつねさんでもわかる Firefox OS コードリーディング入門
きつねさんでもわかる Firefox OS コードリーディング入門
Mizuho Sakamaki
 
PHPerがgolangでもがいてる話@第1回 関西Golang勉強会
PHPerがgolangでもがいてる話@第1回 関西Golang勉強会PHPerがgolangでもがいてる話@第1回 関西Golang勉強会
PHPerがgolangでもがいてる話@第1回 関西Golang勉強会
Keisuke Utsumi
 
LLプログラマ向けSwift ExtensionsとテストライブラリQuickの紹介
LLプログラマ向けSwift ExtensionsとテストライブラリQuickの紹介LLプログラマ向けSwift ExtensionsとテストライブラリQuickの紹介
LLプログラマ向けSwift ExtensionsとテストライブラリQuickの紹介
Shoken Fujisaki
 
TechDo Goハンズオン#3
TechDo Goハンズオン#3TechDo Goハンズオン#3
TechDo Goハンズオン#3
privatemy
 
TypeScriptで作る型安全FirefoxOSアプリ
TypeScriptで作る型安全FirefoxOSアプリTypeScriptで作る型安全FirefoxOSアプリ
TypeScriptで作る型安全FirefoxOSアプリ
progre
 
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
Masahiro Wakame
 
Boost.勉強会 #13 @仙台 鳥小屋
Boost.勉強会 #13 @仙台 鳥小屋Boost.勉強会 #13 @仙台 鳥小屋
Boost.勉強会 #13 @仙台 鳥小屋Yuto M
 
Logcatの話
Logcatの話Logcatの話
Logcatの話
Shinobu Okano
 
Goで言語処理系(の途中まで)を作ろう
Goで言語処理系(の途中まで)を作ろうGoで言語処理系(の途中まで)を作ろう
Goで言語処理系(の途中まで)を作ろうEsehara Shigeo
 
UniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScriptUniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScript
yuitoakatsukijp
 
まったりAndroid framework code reading #2
まったりAndroid framework code reading #2まったりAndroid framework code reading #2
まったりAndroid framework code reading #2
Shinobu Okano
 
FPGA Traxコンテストについて
FPGA TraxコンテストについてFPGA Traxコンテストについて
FPGA Traxコンテストについて
Yasunori Osana
 
Chrome拡張で改善 表紙
Chrome拡張で改善 表紙Chrome拡張で改善 表紙
Chrome拡張で改善 表紙
Wataru Terada
 
Code jp2013で行った ショートコーディング について
Code jp2013で行った ショートコーディング についてCode jp2013で行った ショートコーディング について
Code jp2013で行った ショートコーディング について
Fumihito Yokoyama
 

Similar to ゴルフ (20)

コードゴルフのススメ(C言語)
コードゴルフのススメ(C言語)コードゴルフのススメ(C言語)
コードゴルフのススメ(C言語)
 
Shortcodin
ShortcodinShortcodin
Shortcodin
 
コードゴルフ 〜今日から始める難読コードの世界〜
コードゴルフ 〜今日から始める難読コードの世界〜コードゴルフ 〜今日から始める難読コードの世界〜
コードゴルフ 〜今日から始める難読コードの世界〜
 
OSSで楽に作るGo言語クライアントツール
OSSで楽に作るGo言語クライアントツールOSSで楽に作るGo言語クライアントツール
OSSで楽に作るGo言語クライアントツール
 
契約プログラミング
契約プログラミング契約プログラミング
契約プログラミング
 
Cocos sharpでゲーム開発してみました
Cocos sharpでゲーム開発してみましたCocos sharpでゲーム開発してみました
Cocos sharpでゲーム開発してみました
 
きつねさんでもわかる Firefox OS コードリーディング入門
きつねさんでもわかる Firefox OS コードリーディング入門きつねさんでもわかる Firefox OS コードリーディング入門
きつねさんでもわかる Firefox OS コードリーディング入門
 
PHPerがgolangでもがいてる話@第1回 関西Golang勉強会
PHPerがgolangでもがいてる話@第1回 関西Golang勉強会PHPerがgolangでもがいてる話@第1回 関西Golang勉強会
PHPerがgolangでもがいてる話@第1回 関西Golang勉強会
 
LLプログラマ向けSwift ExtensionsとテストライブラリQuickの紹介
LLプログラマ向けSwift ExtensionsとテストライブラリQuickの紹介LLプログラマ向けSwift ExtensionsとテストライブラリQuickの紹介
LLプログラマ向けSwift ExtensionsとテストライブラリQuickの紹介
 
TechDo Goハンズオン#3
TechDo Goハンズオン#3TechDo Goハンズオン#3
TechDo Goハンズオン#3
 
TypeScriptで作る型安全FirefoxOSアプリ
TypeScriptで作る型安全FirefoxOSアプリTypeScriptで作る型安全FirefoxOSアプリ
TypeScriptで作る型安全FirefoxOSアプリ
 
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
 
Boost.勉強会 #13 @仙台 鳥小屋
Boost.勉強会 #13 @仙台 鳥小屋Boost.勉強会 #13 @仙台 鳥小屋
Boost.勉強会 #13 @仙台 鳥小屋
 
Logcatの話
Logcatの話Logcatの話
Logcatの話
 
Goで言語処理系(の途中まで)を作ろう
Goで言語処理系(の途中まで)を作ろうGoで言語処理系(の途中まで)を作ろう
Goで言語処理系(の途中まで)を作ろう
 
UniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScriptUniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScript
 
まったりAndroid framework code reading #2
まったりAndroid framework code reading #2まったりAndroid framework code reading #2
まったりAndroid framework code reading #2
 
FPGA Traxコンテストについて
FPGA TraxコンテストについてFPGA Traxコンテストについて
FPGA Traxコンテストについて
 
Chrome拡張で改善 表紙
Chrome拡張で改善 表紙Chrome拡張で改善 表紙
Chrome拡張で改善 表紙
 
Code jp2013で行った ショートコーディング について
Code jp2013で行った ショートコーディング についてCode jp2013で行った ショートコーディング について
Code jp2013で行った ショートコーディング について
 

Recently uploaded

論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
Toru Tamaki
 
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援しますキンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
Takayuki Nakayama
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
Matsushita Laboratory
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
0207sukipio
 
Generating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language ModelsGenerating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language Models
harmonylab
 
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
t m
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
chiefujita1
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 

Recently uploaded (8)

論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
 
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援しますキンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
 
Generating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language ModelsGenerating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language Models
 
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 

ゴルフ