コードゴルフ⛳の
すすめ
@hakatashi
2019年6月28日 pixiv社内勉強会 LT
自己紹介
@hakatashi (博多市)
- 最近ハマってるもの
- 百合
- 炊飯
- 最近おすすめの百合漫画
- ふたりべや
- ななしのアステリズム
- 最近おすすめの炊飯漫画
- 特になし
コードゴルフ⛳
ご存知ですか?
プログラムを
1文字でも短く書く競技
その言語の機能を
余すこと無く利用する
例題
入力された文字列から空行をすべて削除する
hoge
fuga
hoge
p
i
y
o
hoge
fuga
hoge
p
i
y
o
普通に書いたら
while text = gets
puts text unless text.chop.length == 0
end
62 bytes
インデント削除
while text = gets
puts text unless text.chop.length == 0
end
60 bytes
変数名を短縮
while t = gets
puts t unless t.chop.length == 0
end
51 bytes
空行判定を最適化
while t = gets
puts t unless t == "\n"
end
42 bytes
unlessをifに修正
while t = gets
puts t if t != "\n"
end
38 bytes
特殊変数$_を導入
while gets
puts $_ if $_ != "\n"
end
36 bytes
空白を省略
while gets
puts$_ if$_!="\n"
end
32 bytes
後置whileを利用
puts$_ if$_!="\n"while gets
27 bytes
shebangによる引数渡しを利用
#!ruby -p
$_=""if$_=="\n"
25 bytes
Rubyゴルフのプロの回答
$><<[*$<]-[$/]
12 bytes
(Code Golf - SlideShare より引用)
私事ですが
私事ですが
コードゴルフの大会を運営してます
- チーム戦
- 1マス1言語に対応
- 一番短いコードを提出したチームの色に染まる
- 隣接したマスのみ提出可能
変なプログラミング言語 (?) を
たくさん実装
- Brainfuck
- Befunge
- Hexagony
- Piet
- jq
- sed
- awk
- なでしこ
- Whitespace
- プロデル
- قلب
- எழில்
- LibreOffice Calc
- SQLite3
- Emojicode
- ⋯⋯など、計160言語
前回大会のお題
言語別「短さ」ランキング
- 1. Vim, 11 bytes
- 2. MATL, 22 bytes
- 2. gs2, 22 bytes
- 4. Japt, 25 bytes
- 5. 05AB1E, 27 bytes
VimGolf
- 入力を「編集前のファイル」、
出力を「編集後のファイル」と定義して、
目的の出力に整形するまでの
キーストローク数を競う - 保存コマンド
- vimgolf.comという専用競技サイトも存在する
デモ
コードゴルフで遊べるサイト
- Anarchy Golf
- CodeGolf StackExchange
- VimGolf
- AtCoder, yukicoder, paiza などのプロコンサイト
ZZ
(おしまい)
コードゴルフのすすめ
By Koki Takahashi
コードゴルフのすすめ
2019-06-28 pixiv社内勉強会 LT
- 1,397