読者です 読者をやめる 読者になる 読者になる

CodeJP 2016に参加しました #codejp

ここの記事が最近「CodeJP」参加ログにしか使われてない事実。

というわけでCodeJP 2016に参加しました。今回は完全参加者側として参加してます。

きっと、運営とか参加者様の方々が綺麗にまとめてくださると思うので主に会場でやったことと「こんな美味しそうなものを食えるぞ」アピール。 個人的にこの料理と温泉入りに来るのが目的になりつつありますね。 f:id:tututen:20160806180025j:plainf:id:tututen:20160806180117j:plainf:id:tututen:20160806180449j:plain

コードを書いてないダイジェスト

はじめに

今回主イベントで「コードゴルフ」がなかったので、もくもく会と称して「ずんどこきよし」のショートコーディングに主に取り組んでいました。

レギュレーションとか特に決めてないです。うちの中では、ランダムにずんどこ取得してとりあえず「ずんずんずんどこ」ってきたら「きよし!」って表示出来たらOKみたいな感じにしてます。

成果が主にこちら↓

JavaScript

動作ページ

jsfiddle.net

コード

!function(){n=1;for(s='1',l='';s.indexOf('100001')==-1;s+=Math.random()*2|0,l+=['ずん','どこ'][s[n++]|0]);alert(l+'き・よ・し!')}()

解説にならない解説(箇条書き)

  • 「ずん」と「どこ」を「0」と「1」とする
  • ランダムで0と1を出力して文字列sとして連結する。0か1を判定して文字列lを連結しておく
  • 連結してる文字列に「100001」のパターンが出てくるまでループを回す
  • ループを抜けたら、文字列lと一緒に「き・よ・し!」をつけてalertで出力する

Python

動作ページ

ideone.com

コード

import random as r;s=''.join([r.choice(['zun','doko'])for _ in range(100000)]);print s[:s.find('zun'*4+'doko')+16]+'KIYOSHI!'

解説にならない解説(箇条書き)

  • 「zun」と「doko」を random.choice を使用して、100,000個の要素のリストを作成
  • 空文字で連結し巨大な文字列を作る、その中で 'zun'*4+'doko' (zunzunzunzundoko) となってる場所を探す
  • 場所を見つけたら find位置+len('zunzunzunzundoko') → s.find('zun'*4+'doko')+16 の場所から切り捨てて、末尾に 'KIYOSHI!' をつけて出力

その他の「ずんどこ」(並びは順不同)

Swift (@sandinist さん 作)

ZundokoSwift

PowerShell (@stknohg さん 作)

PowerShellでズンドコキヨシ

asm (yohgamiさん 作)

github.com

JavaScript (@albatrosaryさん 作)

github.com

感想

普段Pythonの方が書いてるのに、Pythonの1ライナーってなるだけでここまで苦労するとは思わんかった。JavaScript側は毎年培ったコードゴルフ力の賜物でしたね。次回までにPythonの1ライナー力を養っておきたい。

おまけ(まだまだ続くよJavaScript

うちのコードを改造

  • この辺りから 「ずん」が4つ続いて「どこ」が来たら という条件にこだわらず 「ずん」が4つ以上続いて「どこ」が来たら という方針でいいかとなりました。

@jsakamoto さんのコードを改造