Download - Code jp2013で行った ショートコーディング について
![Page 1: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/1.jpg)
CodeJP2013で行った
ショートコーディング
について
![Page 2: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/2.jpg)
Who am I ?
@tututen (momo_*)
業務→vim + C言語( not C++ )
趣味→アセンブラを読む
パネポンを1人2役でやれる!
![Page 3: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/3.jpg)
Who am I ?
@tututen (momo_*)
業務→vim + C言語( not C++ )
趣味→アセンブラを読む
パネポンを1人2役でやれる!
![Page 4: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/4.jpg)
![Page 5: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/5.jpg)
![Page 6: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/6.jpg)
![Page 7: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/7.jpg)
![Page 8: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/8.jpg)
![Page 9: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/9.jpg)
![Page 10: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/10.jpg)
次回
2014/07/19,20 の予定!
![Page 11: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/11.jpg)
ショートコーディングとは
ソースコードを短く書くこと
打数の少なさを競うのに似てることから
コードゴルフと呼ばれることも
![Page 12: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/12.jpg)
日本語に例えるなら
略語(ネットスラングやギャル語?)に近い
例:
微レ存→
とりま→
![Page 13: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/13.jpg)
日本語に例えるなら
略語(ネットスラングやギャル語?)に近い
例:
微レ存→◯◯である可能性が微粒子レベ
ルで存在している
とりま→
![Page 14: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/14.jpg)
日本語に例えるなら
略語(ネットスラングやギャル語?)に近い
例:
微レ存→◯◯である可能性が微粒子レベ
ルで存在している
とりま→とりあえず、まぁ
![Page 15: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/15.jpg)
ここで簡単な問題!
![Page 18: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/18.jpg)
1.100byte代
![Page 19: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/19.jpg)
1.100byte代
2.80byte代
![Page 20: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/20.jpg)
1.100byte代
2.80byte代
3.70byte代
![Page 21: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/21.jpg)
1.100byte代
2.80byte代
3.70byte代
4.もっと短くできる
![Page 22: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/22.jpg)
発表中に70byte未満に
もれなく景品があります!
![Page 23: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/23.jpg)
CodeJPのお題
![Page 24: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/24.jpg)
2380 byte の
JSコードを
![Page 25: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/25.jpg)
できるだけ短く書き直し
時計を動かす!
![Page 26: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/26.jpg)
ルール
index.htmlを編集するのはNG
動作するブラウザの種類は問わない
詳しくは「資料」を参照
https://github.com/yoshiakist/codegolf
![Page 27: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/27.jpg)
チーム編成
2−3人1チーム
A、B、C、D、Eチームの計5チーム
![Page 28: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/28.jpg)
クリア基準800 byte 台 : もっと頑張りましょう
![Page 29: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/29.jpg)
クリア基準800 byte 台 : もっと頑張りましょう
500 byte 台 : よくできました
![Page 30: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/30.jpg)
クリア基準800 byte 台 : もっと頑張りましょう
500 byte 台 : よくできました
400 byte 台 : たいへんよくできました
![Page 31: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/31.jpg)
クリア基準800 byte 台 : もっと頑張りましょう
500 byte 台 : よくできました
400 byte 台 : たいへんよくできました
300 byte 台 : 次回、このコーナー担当
![Page 32: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/32.jpg)
クリア基準800 byte 台 : もっと頑張りましょう
500 byte 台 : よくできました
400 byte 台 : たいへんよくできました
300 byte 台 : 次回、このコーナー担当
200 byte 台 : あなたが神か
![Page 33: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/33.jpg)
今回の課題の肝
変数宣言の省略
for文のデクリメント化
Math.floor(切り捨て)の代替
デジタル数字表記の省略
![Page 34: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/34.jpg)
変数宣言の省略
![Page 35: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/35.jpg)
変数宣言の省略
変数の長さを極力1文字に
varの省略(変数のグローバル化)
業務での使用、ダメ、絶対!!
minifyツールを使用することで対応可能
![Page 36: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/36.jpg)
for文のデクリメント化
![Page 37: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/37.jpg)
for文のデクリメント化
for (初期化; 継続条件; 変数更新)
変数の更新と継続条件が同時に出来る
これで3 byteは美味しいですね!
![Page 38: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/38.jpg)
Math.floorを使わずに切り捨て
![Page 39: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/39.jpg)
Math.floorを使わずに切り捨て
ビット演算をすると強制的に整数値に
これを式中で使う場合は演算子優先順位に注意
~演算子は優先順位高め
|演算子は優先順位低め
or演算子を使うかnor演算子どちらを使っても
byte 数は変わらない
![Page 40: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/40.jpg)
Math.floorを使わずに切り捨て
![Page 42: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/42.jpg)
デジタル数値表記の省略
今回短くする上で一番のミソ
最終的にここの発想次第
![Page 43: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/43.jpg)
デジタル数値表記の省略
今回短くする上で一番のミソ
最終的にここの発想次第
以降、他人のソースコードを垣間見つつ
![Page 44: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/44.jpg)
第2位
![Page 45: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/45.jpg)
2位のチームのソース
うちの率いるチームです(362文字)
当初は上手い方法だと思っていました
運営者曰く「ソースを見ただけではやっ
てることがわかりませんでした」
![Page 46: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/46.jpg)
ソース
![Page 47: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/47.jpg)
ソース
![Page 48: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/48.jpg)
解説
“■■■”,”□□■”,”■□■”,”■□□”の4パターンというのを
利用
多次元配列を使ってい
たが、最終的に1次元が
有効手
![Page 49: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/49.jpg)
解説(m/10|0)(m%10):(s/10|0)(s%10)
Sは一時的に01の文字列保持(br含)
:(コロン)は4パターン外なので三項
演算子で対応
![Page 50: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/50.jpg)
改善点
forのデクリメント化
P配列の並びを逆順にするだけで対応可能
replace関数を2度使うのがそもそもナンセンス
これ以外即思いつかない時点で将来性がない
コード
![Page 51: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/51.jpg)
第1位
![Page 52: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/52.jpg)
優勝チームのソース
@sandinist さんの率いるチームです
(359文字)
運営側曰く「圧倒的な圧縮力とアルゴリズ
ムでの優勝!!その圧縮方法はまさにド変
態のそれと表現していいでしょう。」
![Page 53: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/53.jpg)
皆さん!この人です!!
![Page 54: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/54.jpg)
ソース
![Page 55: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/55.jpg)
ソース
![Page 56: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/56.jpg)
個人的な感想
運営も評してる通り変態
JSに慣れてないのがとても惜しい
噛めば噛むほど味がでるソース
![Page 57: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/57.jpg)
解説(できるかな…
![Page 58: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/58.jpg)
解説(できるかな…
![Page 59: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/59.jpg)
解説(できるかな…
![Page 60: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/60.jpg)
解説(できるかな…
![Page 61: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/61.jpg)
解説(できるかな…
![Page 62: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/62.jpg)
改善点var いらない
eの初期化いらない
b=h++ はf,gの初期化時
に代入すればいらない
<br/> → <br>
[(“”+parseInt(...)).slice(e,e+1) ]→ (“”+parseInt(...))[e]
innerHTMLへの代入方
法
ファイル末尾のセミコ
ロン排除
![Page 65: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/65.jpg)
如何でしたでしょうか?
![Page 66: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/66.jpg)
2380byte → 320byte前後
![Page 67: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/67.jpg)
2050byteのスリム化
![Page 68: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/68.jpg)
すばらしいド変態!!
![Page 70: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/70.jpg)
![Page 71: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/71.jpg)
進
捗
どうですか?
![Page 73: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/73.jpg)
1.100byte代
2.80byte代
3.70byte代
4.もっと短くできる
![Page 76: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/76.jpg)
おまけ
![Page 77: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/77.jpg)
ネットの人々は
もっとすごかった
![Page 80: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/80.jpg)
対戦しましょ?
![Page 81: Code jp2013で行った ショートコーディング について](https://reader030.vdocuments.pub/reader030/viewer/2022013115/55a442ec1a28ab6b158b45b5/html5/thumbnails/81.jpg)
対戦しましょ?ご静聴ありがとうございました