2019/01/26(土) 富山県宇奈月国際会館セレナで開催された #Burikaigi2019 の発表資料です。
ドキドキライブコーディングin BuriKaigi2019~全てが0になる、全てがAになる~@RyotaMurohoshi2019/01/26(土) Burikaigi 2019
View Slide
「ドキドキライブコーディング」を見るの、皆さんは初めてですか?
「ドキドキライブコーディング」は2014年、小島さん・石野さん・鈴木さんの3人ではじまりました
2015/1/31(土)富山県 呉羽ハイツ
第2回ドキドキライブコーディングを観客として、見ていました。
『めちゃくちゃやばい。C#すげぇ。この人達やばい』そう思ったんです。
その時のテーマは「七並べ」
「七並べ」のロジックをC#で実装するプログラムバトル
アルゴリズムを駆使したバトル?違う!それ"だけ"じゃない!
例えば、小島さんの作戦「相手のロジックをすり替え、挙動を書き換える」
『C#こんなことできるのか!ていうかこれって”そういう戦い”か!』
ドキドキライブコーディングは普通のプログラミングバトルじゃない
相手の裏を書きC#を駆使し、相手を倒す
そして2017年第4回ドキドキライブコーディング俺、「むろほし」も参戦
2017年のテーマテーマ : 四人打ちオセロ
「むろほし」の作戦 No.1開始時にマスを書き換える一手目で全部俺のマス、作戦
結果
成功
しかし失格
ある人は言いました「あれはダメだ。オセロじゃない」
『なるほど。 オセロのルールは 守らなきゃいけないのか。』
時が経ち第5回 四人打ちオセロ 再び
「むろほし」の作戦 No.2他の3人の挙動を乗っ取り終局まで全部コントロール、作戦
成功、しかしまた失格
さらにさらに第6回 四人打ちオセロ またまた
『流石に今回は、真面目にやろう三度目だし・・・』
『そう言えばこの四人打ちオセロチーム戦だった・・・』
「むろほし」の作戦 No.3石野さんをいい感じにサポート石野さんに勝ってもらおう!作戦
敗北
ただそれ以上に悔しかったのは、
バトル後のコメント「今回は破壊力が足りなかったんじゃない?」「小利口にまとまりすぎでは?」「自分の役割がわかっていないのでは?」
そこまで言うならやってやんよ!
ここから今回の話
作戦名
〜全てが0になる 全てがAになる〜
● 16[byte]のデータソース● エンコードし、デコード● 元のデータソースと、デコード結果を比較● 1000000回繰り返し● ここまでかかる時間で勝負
「むろほし」の実装
元のデータソースをClearする(0で書き換える)
エンコード結果は固定『"AAAAAAAAAAAAAAAAAAAAAA=="』デコード結果も固定『new byte[16]』
Base64での処理時間バトル
エンコード・デコードちゃんとした!※ただしデータソースは書き換えた
注意!
こう言う感じで意図せず、配列やリストの中身を書き換えて、副作用を与えること本当にやっちゃダメだぞ!約束だ!本当に、普通のコードじゃダメだぞ!約束だ!
おまけ実際は、「bytes.AsSpan().Clear()」よりも、forで回して0クリアした方が早かった面白いから、こっちを採用したよ!
Fin