この大会は2015/10/20 17:00(JST)~2015/10/22 17:00(JST)に開催されました。
この週はCTFが毎日のように平日にありますが、とりあえず全参加です。
今回も個人で参戦。結果は125点(基本点:75、ボーナス点:50)で204位でした。
あまり時間がなかった割には1問でも解けて良かった。
唯一解けた問題をWriteupとして書いておきます。
PERL GOLF (Coding 75(+50))
問題は簡単に言うと、アルファベット、数字、記号が混ざっている
文字列をインプットとして、アウトプットでアルファベットに対してのみ、
大文字、小文字を交互に表示させるPerl Scriptを45文字以内で書けというもの。
Perlは詳しくなかったが、PHPよりは短くできそうだったので、挑戦してみる。
変換関数では短くできないのはわかっていたので、正規表現を使用するのは予想がついていた。
いろいろ試行錯誤の末、このようなスクリプトで正解にたどり着くことができた。
($_=shift)=~s/(\w\W*)(\w)/\U$1\L$2/g;print $_
ポイントは以下の2つ。
- 引数をshiftで受け取る。
- ()を使って、受け取った引数をそのまま正規表現の置換にかける。
スクリプトを入れると、フラグが表示された。
flag{chosingaflagisthemostdifficultpart}