CodeIQ MAGAZINECodeIQ MAGAZINE

「第5回デスマコロシアム」問題のトーナメント結果発表です!──優勝者は…! #デスマコロシアム

2014.08.19 Category:CodeIQ問題解説・リーダーボード Tag: ,

  • 12
  • このエントリーをはてなブックマークに追加
tbprg_badge_deathma

第5回デスマコロシアムのトーナメント結果発表です。
今回のチャンピオンはどなたでしょうか?

優勝、準優勝、最小賞の方には、デスマコロシアム チャンピオンバッジが付与されます!
by tbpgr

1.はじめに

「第5回デスマコロシアム」へようこそ!

この記事は

  • トーナメントの参加集計
  • トーナメントの結果発表
  • 参加された皆様の解答例

の3本立てでお送りします。

2.トーナメントの参加集計

エントリー結果

挑戦者数 正解者数 不正解者数
98 89 (90.82%) 9 (9.18%)

チーム内訳

Total PM TL DB SE PG
267 37 (13.86%) 53 (19.85%) 55 (20.60%) 50 (18.73%) 72 (26.97%)

チーム内訳(グラフ)

言語内訳

言語名 人数 言語ペナルティ 最小文字数 平均文字数
Ada 1 0 point 190 190
Assembler (nasm-2.10.01) 1 0 point 190 190
AWK (gawk) 2 -10 point 62 83
AWK (mawk) 1 0 point 60 60
Bash 2 -10 point 58 62
Brainf**k 1 0 point 1994 1994
C# 2 -10 point 148 258
C++ 4.3.2 1 0 point 77 77
C++ 4.8.1 1 0 point 156 156
C++11 3 -20 point 80 173
C99 strict 2 -10 point 72 72
COBOL 85 1 0 point 1272 1272
COBOL 1 0 point 341 341
Common Lisp (clisp) 1 0 point 100 100
C 5 -40 point 75 179
Erlang 2 -10 point 163 187
Falcon 1 0 point 60 60
Forth 1 0 point 153 153
Fortran 1 0 point 174 174
Go 1 0 point 142 142
Groovy 2 -10 point 59 71
Haskell 2 -10 point 82 144
Icon 1 0 point 81 81
Java7 1 0 point 84 84
JavaScript (rhino) 2 -10 point 70 70
JavaScript (spidermonkey) 1 0 point 70 70
Java 3 -20 point 89 230
Lua 1 0 point 144 144
Node.js 1 0 point 76 76
Objective-C 1 0 point 73 73
Ocaml 1 0 point 168 168
Octave 1 0 point 147 147
PARI/GP 1 0 point 64 64
Pascal (fpc) 2 -10 point 225 243
Perl 6 2 -10 point 54 59
Perl 5 -40 point 51 51
PHP 6 -50 point 56 110
Pike 1 0 point 201 201
Python 3 2 -10 point 100 108
Python 3 -20 point 77 95
Ruby 5 -40 point 71 96
R 3 -20 point 71 86
Scala 2 -10 point 127 160
Smalltalk 1 0 point 165 165
SQL 2 -10 point 143 153
Tcl 1 0 point 87 87
Unlambda 1 0 point 426 426
VB.NET 3 -20 point 114 174
Whitespace 1 0 point 363 363

言語内訳(グラフ)

青:2014/08/10 21:50 時点の人数
赤:2014/08/12 10:00 締め切り時の人数

最小文字数

最小文字数達成者にはチャンピオンバッジを付与します。
※付与するバッジは一番上位のものを1つだけです。
※以下のリストは敬称略

言語 文字数 名前
Perl 51 電脳妖精, Azicore, rotary-o, tails

言語別最小文字数

言語別最小文字数達成者には強豪バッジを付与します。
※付与するバッジは一番上位のものを1つだけです。
※以下のリストは敬称略

言語 文字数 名前
AWK (gawk) 62 kuuso
AWK (mawk) 60 CSUPMAD
Ada 190 Vax
Assembler (nasm-2.10.01) 190 naoki_kp
Bash 58 gogoweb_ikeda
Brainf**k 1994 せきゅあ
C 75 ニックネーム999
C# 148 Arith_td
C++ 4.3.2 77 しゃろ
C++ 4.8.1 156 ZMY
C++11 80 玄くろ
C99 strict 72 にぃちぇ, Mu
COBOL 341 gmk
COBOL 85 1272 チェシャ猫
Common Lisp (clisp) 100 KTazakik
Erlang 163 himox_x
Falcon 60 knightrogen
Forth 153 anergy
Fortran 174 pice
Go 142 suppy193
Groovy 59 tadaedo
Haskell 82 angelhalo
Icon 81 aofloor
Java 89 dayz
Java7 84 チョコレートバー
JavaScript (rhino) 70 electrolysis, xtsuchi
JavaScript (spidermonkey) 70 todaemon
Lua 144 ぶん
Node.js 76 k.hamada
Objective-C 73 ciel
Ocaml 168 fortissimo1997
Octave 147 axot
PARI/GP 64 ウッキー竹脇
PHP 56 EEL733, にくも
Pascal (fpc) 225 ゆうふーる
Perl 51 電脳妖精, Azicore, rotary-o, tails
Perl 6 54 antimon2
Pike 201 Furutsuki
Python 77 じゅんや
Python 3 100 permil
R 71 rs_fan
Ruby 71 oda1979
SQL 143 KAZAMAI_NaruTo
Scala 127 L.star
Smalltalk 165 おにぎるぃ
Tcl 87 カニ戯(ry
Unlambda 426 みけCAT
VB.NET 114 Mr.Newsman
Whitespace 363 NeoCat

3.トーナメント結果発表

お待たせ致しました!
トーナメント結果の発表です。
結果はベスト64から発表致します。
ベスト64で勝てば強豪バッジ獲得です!

※名前の載っていない方は残念ながら予選落ちとなります。
※トーナメント表は敬称略

トーナメント表に関する補足説明

  • 「結果ポイント」はチームの勝敗によるポイントと言語ペナルティの合計です
  • 「デスマ発生」はデスマーチの発生した試合の場合に○になります
  • 「引分ランダム決着」はポイントが同点かつ言語ペナルティも同点になり、
    ランダム抽選による勝敗決定になった場合に○になります

ベスト64

勝敗 名前 チーム 言語 言語ペナルティ 文字数ペナルティ 結果ポイント デスマ発生 引分ランダム決着
× ニックネーム999 SLD C -40 -75 -110 × ×
antimon2 LLL Perl 6 -10 -54 -59 × ×
× チョコレートバー SLD Java7 0 -84 -79 × ×
electrolysis GML JavaScript (rhino) -10 -70 -70 × ×
× TatsuoWatanabe GGG SQL -10 -163 -173 × ×
tails SSD Perl -40 -51 -76 × ×
xtsuchi GGG JavaScript (rhino) -10 -70 -80 × ×
× Mr.Newsman GDS VB.NET -20 -114 -124 × ×
gogoweb_ikeda LSD Bash -10 -58 -53 × ×
× カニ戯(ry GGG Tcl 0 -87 -87 × ×
dayz SLG Java -20 -89 -104 × ×
× KAZAMAI_NaruTo DDD SQL -10 -143 -143 × ×
× karekabs32532webrwsbgwr DSG C -40 -235 -275 × ×
なおゆら DSL Bash -10 -66 -71 × ×
× KTazakik GDM Common Lisp (clisp) 0 -100 -100 × ×
電脳妖精 GMM Perl -40 -51 -86 × ×
× EEL733 LDG PHP -50 -56 -101 × ×
knightrogen DLS Falcon 0 -60 -50 × ×
× marsbar LSG Python 3 -10 -117 -122 × ×
しゃろ DSL C++ 4.3.2 0 -77 -72 × ×
rs_fan SSD R -20 -71 -76 × ×
× hernia LGS PHP -50 -98 -148 × ×
× kuuso GGM AWK (gawk) -10 -62 -67 × ×
ryosy383 SLD Perl 6 -10 -65 -65 × ×
× PascalChan MLG Pascal (fpc) -10 -262 -267 × ×
rotary-o SLD Perl -40 -51 -86 × ×
todaemon SDL JavaScript (spidermonkey) 0 -70 -65 × ×
× ciel LLL Objective-C 0 -73 -68 × ×
permil MMM Python 3 -10 -100 -110 × ×
× naoki_kp MMM Assembler (nasm-2.10.01) 0 -190 -190 × ×
CSUPMAD MDG AWK (mawk) 0 -60 -50 × ×
× yuma25689 LSD Groovy -10 -83 -88 × ×
× suppy193 LGS Go 0 -142 -142 × ×
にくも MGM PHP -50 -56 -96 × ×
× k.hamada DSM Node.js 0 -76 10 ×
pice GGG Fortran 0 -174 0 ×
× じゅんや LSD Python -20 -77 -87 × ×
aofloor LLS Icon 0 -81 -81 × ×
× himox_x GMD Erlang -10 -163 -168 × ×
Arith_td SLD C# -10 -148 -153 × ×
× axot SDL Octave 0 -147 -142 × ×
ぶん SLD Lua 0 -144 -139 × ×
× tommy_koko MDG C -40 -247 -282 × ×
tadaedo SDL Groovy -10 -59 -64 × ×
angelhalo SLD Haskell -10 -82 -77 × ×
× unno.y GGG PHP -50 -96 -146 × ×
Nobizo LDG C# -10 -369 10 ×
× Chatnoir GGM Python -20 -78 0 ×
Azicore SLG Perl -40 -51 -81 × ×
× liyangdal GDG Python -20 -131 -151 × ×
ゆうふーる GSG Pascal (fpc) -10 -225 0 ×
× にぃちぇ MMM C99 strict -10 -72 0 ×
× unsre GGG C++11 -20 -168 -188 × ×
Mu SSD C99 strict -10 -72 -67 × ×
HSB DSG PHP -50 -126 -166 × ×
× gmk GGG COBOL 0 -341 -341 × ×
okura3 GDL Perl -40 -53 -93 × ×
× sabo1500 LDS Java -20 -393 -403 × ×
きゃるり LSD VB.NET -20 -176 -191 × ×
× チェシャ猫 DSL COBOL 85 0 -1272 -1267 × ×
× anergy SLS Forth 0 -153 -148 × ×
ウッキー竹脇 MGM PARI/GP 0 -64 -54 × ×
× blacklemon SMG Haskell -10 -206 0 ×
ピノン DGS VB.NET -20 -232 5 ×

ベスト32

勝敗 名前 チーム 言語 言語ペナルティ 文字数ペナルティ 結果ポイント デスマ発生 引分ランダム決着
antimon2 LLL Perl 6 -10 -54 -59 × ×
× electrolysis GML JavaScript (rhino) -10 -70 -75 × ×
tails SSD Perl -40 -51 -76 × ×
× xtsuchi GGG JavaScript (rhino) -10 -70 -80 × ×
gogoweb_ikeda LSD Bash -10 -58 -58 × ×
× dayz SLG Java -20 -89 -104 × ×
なおゆら DSL Bash -10 -66 -71 × ×
× 電脳妖精 GMM Perl -40 -51 -81 × ×
knightrogen DLS Falcon 0 -60 -55 × ×
× しゃろ DSL C++ 4.3.2 0 -77 -72 × ×
× rs_fan SSD R -20 -71 -86 × ×
ryosy383 SLD Perl 6 -10 -65 -75 × ×
× rotary-o SLD Perl -40 -51 -86 × ×
todaemon SDL JavaScript (spidermonkey) 0 -70 -65 × ×
× permil MMM Python 3 -10 -100 5 ×
CSUPMAD MDG AWK (mawk) 0 -60 0 ×
× にくも MGM PHP -50 -56 0 ×
pice GGG Fortran 0 -174 0 ×
aofloor LLS Icon 0 -81 -81 × ×
× Arith_td SLD C# -10 -148 -148 × ×
× ぶん SLD Lua 0 -144 -139 × ×
tadaedo SDL Groovy -10 -59 -64 × ×
angelhalo SLD Haskell -10 -82 -77 × ×
× Nobizo LDG C# -10 -369 -379 × ×
Azicore SLG Perl -40 -51 -86 × ×
× ゆうふーる GSG Pascal (fpc) -10 -225 -230 × ×
Mu SSD C99 strict -10 -72 -77 × ×
× HSB DSG PHP -50 -126 -171 × ×
okura3 GDL Perl -40 -53 -83 × ×
× きゃるり LSD VB.NET -20 -176 -191 × ×
ウッキー竹脇 MGM PARI/GP 0 -64 -54 × ×
× ピノン DGS VB.NET -20 -232 -252 × ×

ベスト16

勝敗 名前 チーム 言語 言語ペナルティ 文字数ペナルティ 結果ポイント デスマ発生 引分ランダム決着
antimon2 LLL Perl 6 -10 -54 -59 × ×
× tails SSD Perl -40 -51 -81 × ×
gogoweb_ikeda LSD Bash -10 -58 -63 × ×
× なおゆら DSL Bash -10 -66 -71 × ×
knightrogen DLS Falcon 0 -60 -55 × ×
× ryosy383 SLD Perl 6 -10 -65 -70 × ×
× todaemon SDL JavaScript (spidermonkey) 0 -70 -65 × ×
CSUPMAD MDG AWK (mawk) 0 -60 -55 × ×
× pice GGG Fortran 0 -174 -174 × ×
aofloor LLS Icon 0 -81 -66 × ×
tadaedo SDL Groovy -10 -59 -64 × ×
× angelhalo SLD Haskell -10 -82 -87 × ×
× Azicore SLG Perl -40 -51 -91 × ×
Mu SSD C99 strict -10 -72 -72 × ×
okura3 GDL Perl -40 -53 0 ×
× ウッキー竹脇 MGM PARI/GP 0 -64 0 ×

準々決勝

勝敗 名前 チーム 言語 言語ペナルティ 文字数ペナルティ 結果ポイント デスマ発生 引分ランダム決着
antimon2 LLL Perl 6 -10 -54 -59 × ×
× gogoweb_ikeda LSD Bash -10 -58 -63 × ×
knightrogen DLS Falcon 0 -60 -50 × ×
× CSUPMAD MDG AWK (mawk) 0 -60 -55 × ×
× aofloor LLS Icon 0 -81 -71 × ×
tadaedo SDL Groovy -10 -59 -64 × ×
Mu SSD C99 strict -10 -72 -77 × ×
× okura3 GDL Perl -40 -53 -83 × ×

準決勝

勝敗 名前 チーム 言語 言語ペナルティ 文字数ペナルティ 結果ポイント デスマ発生 引分ランダム決着
× antimon2 LLL Perl 6 -10 -54 -59 × ×
knightrogen DLS Falcon 0 -60 -55 × ×
tadaedo SDL Groovy -10 -59 -59 × ×
× Mu SSD C99 strict -10 -72 -82 × ×

決勝

勝敗 名前 チーム 言語 言語ペナルティ 文字数ペナルティ 結果ポイント デスマ発生 引分ランダム決着
knightrogen DLS Falcon 0 -60 -45 × ×
× tadaedo SDL Groovy -10 -59 -69 × ×

デスマコロシアムの第5回チャンピオンは knightrogen様 になりました!!
knightrogen様は、なんと2度めの優勝になります!!
おめでとうございます!

tadaedo様 も準優勝おめでとうございます。
お二人にはデスマコロシアム チャンピオン バッジを付与致します。

ベスト16まで勝ち残った方にはデスマコロシアム 豪傑 バッジを付与致します。
ベスト32まで勝ち残った方にはデスマコロシアム 強豪 バッジを付与致します。
トーナメントに参加された方にはデスマコロシアム ファイター バッジを付与致します。

歴代チャンピオン

※敬称略

回次 優勝者 準優勝者
1 電脳妖精 yoshi-taka
2 knightrogen electrolysis
3 masaakif1974 mbsp
4 naoki_kp ciel
5 knightrogen tadaedo

4.参加者解答例

問題内容

標準出力に

12fizz4buzzfizz78fizzbuzz11fizz1314FIZZBUZZ1617fizz19buzzfizz2223fizzbuzz26fizz2829FIZZBUZZ3132fizz34buzzfizz3738fizzbuzz41fizz4344FIZZBUZZ4647fizz49buzz

を出力してください。

出題者よりポイント

FizzBuzz問題ということで、初めてこの問題に取り組む方のほうが少なかったのではないでしょうか。

基本は

  • 3で割れる数字の場合fizzを出力する
  • 5で割れる数字の場合buzzを出力する
  • 3と5のどちらでも割れる数字の場合FIZZBUZZを出力する
  • それ以外の場合は数字をそのまま出力する

という内容が実装できていれば正解になります。

FizzBuzzはコードゴルフのお題としても良く利用されているので、そのまま出題すると
コピペで終わってしまうかな?と思い、大文字小文字の出力内容を少し変更してみました。
それが今まで開催したデスマコロシアムの中で、最多の不正解者数を生むとは思いもよらず・・・。

解答例1 (Ruby 63文字) :三項演算子を利用した例

1.upto(50){|x|$><<(x%15<1?:FIZZBUZZ:x%3<1?:fizz:x%5<1?:buzz:x)}

この解答例は、最終的に他言語に移動された todaemon様のRubyの解答と同じです。

解答例2 (Ruby 69文字) :配列と「||」演算子を利用した例

1.upto(50){|x|$><<([:FIZZBUZZ][x%15]||[:fizz][x%3]||[:buzz][x%5]||x)}

言語移動により最終結果には反映されていませんが、
Rubyの最短は途中59文字まで到達していました。
この59文字解を少し修正すると57文字に到達できます。
59文字解については、おそらく挑戦者様が期間終了後にTwitterにて公開してくださると思いますので、
気になる方は、Twitterで「#デスマコロシアム」のハッシュタグをチェックしていてください。

不正解の傾向と対策

今回、特に不正解が多かったので傾向と対策を。

<傾向>

不正解の多くは、

  • オリジナルのFizzBuzz問題の内容をそのまま利用したために大文字小文字を誤る
  • 出力範囲を誤る
  • Typo

などでした。

デスマコロシアムは基本的に出力内容が予め決められており、
その内容通りに出力する問題です。

つまり、正解が分かっているためテストファーストが可能です。

ショートコーディングの要素がある関係で、人によっては何度も実行することになります。
そのため、テストコードによって解答チェックの自動化をすることで、
ケアレスミスを防ぐことができます。

  • 簡単な仕様だから、テストなしで実装したらケアレスミスをした。
  • 簡単な修正だから、テストをしないでリファクタリングをした。
  • 面倒くさいから手動でテストして目視で確認をした。眠くて集中力もないけど多分あってるっぽい。
  • テスト結果をExcelスクショで保存したけど、スクショを取る作業が大変で疲弊し、集中力が下がっているため出力が間違っていることに気付かなかった。

こういった選択がどういう結果を生むのか、答えは明白です。
人はミスをするものです。

<対策>

■自分のPCに開発環境を用意することが可能な言語の場合

xUnitなどのテストツールがあれば利用しましょう。

そういったツールがない場合、デスマコロシアムでは基本的に標準出力の内容をチェックすればよいので
ターミナルに出力された文字列が正しいかどうかチェックするプログラムを作りましょう。
チェックプログラム自体は自分の好きな言語で作成すればよいので敷居も低いです。

■自分のPCに開発環境を用意することが困難な言語の場合
ideoneでしか確認できない場合は

  • ideoneのAPI経由で実行を行い、結果をテストする
  • GreaseMonkey Scriptを作成して、ブラウザ上でテストするためのツールを作成してをテストする
  • 出力をチェックするツールをローカルPCに用意しておき、ideoneの出力内容をコピペして テストする

最後のテスト方法は半自動・半手動のため、コピペミスのリスクもありますが、
完全手動よりはよいでしょう。

!!お待たせいたしました。では、優秀解答の紹介です!!

tails様, rotary-o様, Azicore様, 電脳妖精様:Perl 文字数(51)

<出題者コメント>
全言語中の最小解答でした。
名前を挙げた順=解答した順になっています。

以下の文法がショートコーディングのポイントになりました。

  • 特殊変数「$_」によって一時変数の宣言を省略できること
  • bareword によって文字列を(シングル or ダブル)クォーテーションでくくらなくてよいこと
  • 真偽値の判定で0を偽,0以外の数値を真として扱うことができる剰余を求める際に a%3==0 と書かずに a%3 だけで済む
  • range operator によってループ範囲を簡潔に記述できる

<bareword について補足>

# fizz は bareword = 文字列 'fizz' として変数に代入される
$b = fizz;
print $b."\n"; # => fizz

sub buzz {
  'not buzz'
}
# buzz は buzz = サブルーチン buzz の戻り値 'not buzz' として変数に代入される
$b = buzz;
print $b."\n"; # => not buzz

<最短達成者解答>

  • tails様, rotary-o様 解答
print$_%5?$_%3?$_:fizz:$_%3?buzz:FIZZBUZZ for 1..50
  • Azicore様 解答
print$_%3?$_%5?$_:buzz:$_%5?fizz:FIZZBUZZ for 1..50
  • 電脳妖精様 解答
print map$_%5?$_%3?$_:fizz:$_%3?buzz:FIZZBUZZ,1..50

antimon2様 :Perl6 文字数(54)

<出題者コメント>
Perl6 最小でした。

<最短達成者解答>

  • antimon2様
say map {<FIZZBUZZ buzz fizz>[$_**4%-15/-4]||$_},1..50

以下、恒例のantimon2様による解説になります。

・`<FIZZBUZZ buzz fizz>` は、`("FIZZBUZZ", "buzz", "fizz")` と同値。
 3つの文字列からなるリストになります。
 Rubyの `%w[FIZZBUZZ buzz fizz]` に相当。
・$_**4%-15/-4 は、例えば $_ が 1..15 で以下の値となります:
 3.5, 3.5, 2.25, 3.5, 1.25, 2.25, 3.5, 3.5, 2.25, 1.25, 3.5, 2.25, 3.5, 3.5, 0
 これをリストのインデックスとして利用する際に、自動的に整数に変換(単純なfloor)されます。
・以上より<FIZZBUZZ buzz fizz>[$_**4%-15/-4](1..15)は以下のようになります:
 any(), any(), "fizz", any(), "buzz", "fizz", any(), any(), "fizz", "buzz", any(), "fizz", any(), any(), "FIZZBUZZ"
 `any()` はジャンクションと呼ばれるもので、any(A,B,C)で「A,B,C のうちのどれか」
 という意味になりますが、中身の要素が1つもないので
 「どれにも当てはまらない」という意味になります。リストのインデックスが範囲を超えている場合の値です。
・後ろに `||$_` をつけることで、当てはまらなかったら $_ の値、ということになります。
・以上を 1〜50 まで適用して生成したリストを say で標準出力(要素間の区切りなし、改行付き)しています。
・Perl6 の54文字解はもう1つ見付けています:
 print <FIZZBUZZ buzz fizz>[$_**4%-15/-4]||$_ for 1..50

にくも様, EEL733様 :PHP 文字数(56)

<出題者コメント>
PHP 最小でした。
名前を挙げた順=解答した順になっています。

以下の文法がショートコーディングのポイントになりました。

  • 文字列の(シングル or ダブル)クォーテーションを省略可能
  • 真偽値の判定において0はfalse,0以外の数値はtrueとして扱われる

<最短達成者解答>

  • にくも様
for(;++$i<51;)echo$i%15?$i%3?$i%5?$i:buzz:fizz:FIZZBUZZ;
  • EEL733様
for(;$i++<50;)echo$i%15?$i%5?$i%3?$i:fizz:buzz:FIZZBUZZ;

<出題者補足>

56文字の別解です。 forwhile にかえても同じ文字数になります。

while($i++<50)echo$i%15?$i%3?$i%5?$i:buzz:fizz:FIZZBUZZ;

gogoweb_ikeda様:Bash 文字数(58)

<出題者コメント>
Bash最小解答でした。
※途中言語移動した方が56文字を達成しています

<最短達成者解答>

  • gogoweb_ikeda様
seq 50|sed -e0~15cFIZZBUZZ -e3~3cfizz -e5~5cbuzz|tr -d "
"

<補足説明>
seq は連続した数値を出力します。

$ seq 3
1
2
3

$ seq 3 5
3
4
5

sed -e [first~step]cTextfirst から step 行ごとを処理対象とし、該当行の内容を削除した上で
Textの内容を出力します。

$ seq 10 | sed -e 1~2cODD -e 2~2cEVEN
ODD
EVEN
ODD
EVEN
ODD
EVEN
ODD
EVEN
ODD
EVEN

tadaedo様: Groovy 文字数(59)

<出題者コメント>
Groovy 最小解答でした。

以下の文法がショートコーディングのポイントになりました。

  • 真偽値の判定において0はfalse,0以外の数値はtrueとして扱われる
  • uptoメソッドでループを簡潔に記述可能

<最短達成者解答>

  • tadaedo様
1.upto(50){v->print v%5?v%3?v:'fizz':v%3?'buzz':'FIZZBUZZ'}

<補足説明>
groovyはクロージャのパラメータが1つの場合に、パラメータの宣言を省略可能です。
この場合、パラメータ名は it になります。
今回は it を利用した方がコードが長くなってしまいます。(60文字)

1.upto(50){print it%5?it%3?it:'fizz':it%3?'buzz':'FIZZBUZZ'}

CSUPMAD様: AWK (mawk) 文字数(60)

<出題者コメント>
AWK (mawk) 最小解答でした。

以下の文法が、ショートコーディングのポイントになりました。

  • whileによってループを簡潔に記述可能
  • 真偽値の判定において0はfalse,0以外の数値はtrueとして扱われる

<最短達成者解答>

  • CSUPMAD様
while(++i<51)printf(i%15?i%5?i%3?i:"fizz":"buzz":"FIZZBUZZ")

knightrogen様: Falcon 文字数(60)

<出題者コメント>
Falcon 最小解答でした。

<最短達成者解答>

  • knightrogen様
for i in[1:51]:>>["FIZZBUZZ",i,"fizz","buzz"][(i**4+3)%15/4]

5.さいごに

「第5回デスマコロシアム」問題へ多数の参加ありがとうございました。

シンプルな内容だけに、上位陣にさほど差が出ませんでした。
また、問題が簡単なため普段使わない言語を使うための敷居が低かったのか、
使用言語もかなり分散していました。

「第6回デスマコロシアム」問題も、第5回と同様

  • 第2回・第5回と同じく言語ペナルティと文字数ペナルティのルール
  • 多くの方が挑戦した経験があるであろう、「あれ」を出力する問題

となっています。

テーマは「楽をできる言語を選んで楽をする」です。
もちろんこだわりの言語を選んで、言語内最短を目指すのもよし、
特に最短にはこだわらず、好きな言語で正解だけを目指すもよし。

いつものように、ただ単に標準出力するだけのプログラムでの参加も可能です。
気軽にご参加ください。

解答コードの公開は歓迎致します。
共有しやすいように、ハッシュタグを利用してTweetされることを推奨します。
特に、当記事の解答例にない言語については皆様興味があると思いますので、
積極的に公開してください。

また、公開された解答は出題者の「デスマコロシアムまとめ記事」に追加していきます。

Tweet例

言語:XXX url #デスマコロシアム

CodeIQ運営事務局より

第6回デスマコロシアムは、近日公開予定です。
また、tbpgrさんのいろいろな問題に、ぜひチャレンジしてみてください!

  • 12
  • このエントリーをはてなブックマークに追加

■この記事を書いた人

avatar

tbpgr

CodeIQでRubyや様々なカテゴリの問題を出題中。 Twitter:@tbpgr Tbpgr Personal Page: http://tbpgr.github.io/

■関連記事

ついに最終回。「第12回デスマコロシアム」問題のトーナメント結果発表です!~優勝者は...!... 1.はじめに 「第12回デスマコロシアム」へようこそ! この記事は トーナメントの参加集計 トーナメントの結果発表 参加された皆様の解答例 の3本立てでお送りします。 2.トーナメントの参加集計 エントリー結果 挑戦者数 正解者数 不正解者数 ...
「第11回デスマコロシアム」問題のトーナメント結果発表です!~優勝者は…!... 1.はじめに 「第11回デスマコロシアム」へようこそ! この記事は トーナメントの参加集計 トーナメントの結果発表 参加された皆様の解答例 の3本立てでお送りします。 2.トーナメントの参加集計 エントリー結果 挑戦者数 正解者数 不正解者数 ...
「第10回デスマコロシアム」問題のトーナメント結果発表です!~優勝者は…!... 1.はじめに 「第10回デスマコロシアム」へようこそ! この記事は トーナメントの参加集計 トーナメントの結果発表 参加された皆様の解答例 の3本立てでお送りします。 2.トーナメントの参加集計 エントリー結果 挑戦者数 正解者数 不正解者数 ...
「第9回デスマコロシアム」問題のトーナメント結果発表です!─優勝者は…!... 1.はじめに 「第9回デスマコロシアム」へようこそ! この記事は トーナメントの参加集計 トーナメントの結果発表 参加された皆様の解答例 の3本立てでお送りします。 2.トーナメントの参加集計 エントリー結果 挑戦者数 正解者数 不正解者数 ...
「第8回デスマコロシアム」問題のトーナメント結果発表です!~優勝者は……! #デスマコロシアム... 1.はじめに 「第8回デスマコロシアム」へようこそ! この記事は トーナメントの参加集計 トーナメントの結果発表 参加された皆様の解答例 の3本立てでお送りします。 2.トーナメントの参加集計 エントリー結果 挑戦者数 正解者数 不正解者数 ...
「第7回デスマコロシアム」問題のトーナメント結果発表です!──優勝者は…! #デスマコロシアム... 1.はじめに 「第7回デスマコロシアム」へようこそ! この記事は トーナメントの参加集計 トーナメントの結果発表 参加された皆様の解答例 の3本立てでお送りします。 2.トーナメントの参加集計 エントリー結果 挑戦者数 正解者数 不正解者数 ...

今週のPickUPレポート

新着記事

週間ランキング

CodeIQとは

CodeIQ(コードアイキュー)とは、自分の実力を知りたいITエンジニア向けの、実務スキル評価サービスです。

CodeIQご利用にあたって
関連サイト
codeiq

リクルートグループサイトへ