Tbpgr Blog

Ruby プログラマ tbpgr(てぃーびー) のブログ

CodeIQ 『第11回デスマコロシアム』問題 QA @tbpgr #CodeIQ

f:id:tbpg:20150620043045j:plain

概要

『第11回デスマコロシアム』問題 QA

詳細

『第11回デスマコロシアム』問題 QAです。

Q1

Q

解答コードの文字数はどのように数えますか?

A

Ruby(1.9以降) の String#size メソッドで計測します。
Ruby の String#size は Byte 数ではなく文字数で数えます。
p "1234\\".size # => 5 (例1)
p '1234\\'.size # => 5 (例2)
p DATA.read.chomp.size # => 6 (例3)
__END__
1234\\

ideone による動作確認

文字列の計測は、ファイルから自動計測と手動で最終確認の二段階で行っています。
手動確認を行っている理由ですが、提出フォーマット外で自動集計が正しく動作しなかった解答への対応のためです。
フォーマット通りに提出している方も念のため確認を行っています。

自動計測部分に関しては、上記の例の (例3) と同じ動作になり、6文字でカウントします。
手動集計時は上記の (例2) と同じ方法で確認を行っており、5文字となっておりました。
(厳密には、%q記法を使っていますが、論点とは異なるので詳細は省略します)

今後の方針ですが、自動計測時は今まで通り (例3) のままです。
手動計測時も (例3) と同じ方法で確認します。
これで、ずれがなくなります。

Q2

Q

ideoneで実行すると、標準出力は正解ですが
ワーニングが表示されてしまいます。
この場合、正解でしょうか?不正解でしょうか?

A

正解扱いにします

Q3

Q

出力の最後の改行文字は有り・無しどちらでも良いですか?

A

どちらでも正解扱いにします

Q4

Q

JavaやC#など、ideoneがコードのテンプレートを生成してくれる言語があります。
テンプレート部は文字数に含まれますか?
また、解答時はテンプレート部を含む必要がありますか?

A

問題文にも記載していますが、テンプレート部は文字数に含みません。
解答時はテンプレート部を含めずに解答してください。

Q5

Q

ideoneで動作しないが、他の環境では動作します。
この場合正解、不正解どちらでしょうか?

A

問題文にも記載していますが、ideoneでの動作確認を前提としています。
大変申し訳ありませんが不正解とさせていただきます。

Q6

Q

ideoneで実行すると、標準出力は正解ですが
標準エラーが出てしまいます。
この場合、正解でしょうか?不正解でしょうか?

A

正解扱いにします。

Q7

Q

解答の文字列が出力されますが、余計な文字列も一緒に出力されます。
例えば
"answer"
や
[1] answer
などです。
この場合、正解でしょうか?不正解でしょうか?

A

不正解です。

Q8

Q

エントリー時のチーム名が不正な内容もしくは未記入の場合はどうなりますか?

A

誤っていた部分をG(PG)に変更してエントリーします。
チーム全体が間違っていた場合はGGG。
一部が間違っていた場合は該当部のみをGに変更します。

Q9

Q

・エントリー言語名が間違っている
・エントリー言語名が未記入
・codeiqで扱っていない言語で解答した場合
・ideoneで複数バージョンを選択可能な言語のバージョンが未記入
のような場合はどうなりますか?

A

・エントリー言語名が間違っている
=> 解答コードから簡単に判断できる場合は、該当言語扱いとして正解とします。
判断が難しい場合は不正解にしますので再解答をお願い致します。

・エントリー言語名が未記入
=> 解答コードから簡単に判断できる場合は、該当言語扱いとして正解とします。
判断が難しい場合は不正解にしますので再解答をお願い致します。

・codeiqで扱っていない言語で解答した場合
=>不正解です。

・ideoneで複数バージョンを選択可能な言語のバージョンが未記入
=> 出題者の気分で適当なバージョンに割り振ります。言語ペナルティ上有利になるとは限りません

Q10

Q

ideoneでは実行可能だが、CodeIQの入力フォームで機種依存文字としてエラーになってしまう場合は
補足コメント等で依頼することで、該当コードをエントリー可能ですか?

A

不可能です。
CodeIQの入力フォームで利用可能な文字のみで解答ください。
(自動採点の都合もあり、手動で解答コードを補正していると保守が厳しくなるためご了承ください)

Q11

Q

「// your code goes here」の部分に該当するコードのみを提出」とのことですが、
import などを追加した場合はそれを提出する必要はないのでしょうか?

A

解答コード部は「// your code goes here」の部分のみでよいです。
その部分のみを文字数のカウント対象とします。
ただし、importについては補足欄に説明を書いておいてください。

また、importは単純にライブラリをインポートしたり、 Java の static import のようなケースは
文字数のカウント対象外とします。
importの引数にロジックを埋め込んだりしている場合は、文字数カウント対象外とはなりません。

ライブラリを使ったり、ライブラリ名を省略する目的での利用は良いが、import を利用して、
それ以外の部分のコードを短縮しようとした場合は、文字数カウント対象とします。
要は、コードゴルフのゲーム性が破綻するかどうかが判断基準です。

例えば, Perl で、 say を利用するために
use v5.10
say some_logic ...

のように利用した場合は文字数カウント対象外としますが、

use v5.0.67.111.100.101.73.81;
open 0;print chr for <0>=~/\.(\d+)/g

=> CodeIQ

のように、ロジックを埋め込んだ場合は文字数としてカウントします。

※不正解にはしませんが、文字数は加算します。

Q12

Q

JavaやC#など、ideoneがコードのテンプレートを生成してくれる言語があります。
テンプレート部分を含めずに解答するとのことですが、
テンプレートを利用しないコード全体での解答も可能ですか

A

可能です。
その場合は、コード全体が文字数のカウント対象となります。

Q13

Q

標準出力が正しければ異常終了しても正解ですか?

A

正解です。

Q14

Q

解答の末尾の改行は許容されるとのことですが、途中の改行は許容されますか?

A

不正解とします。
※Q7同様、余分な文字と判断します

Q15

Q

AWKの場合、Ideone上で「// your code goes here」が3箇所あるのですが、
どこにコード挿入するかは指定できるのでしょうか?

A

指定可能です。挿入箇所に関して、補足欄に明記してください。

Q16

Q

SQLは出力内容に改行を含まないとツライので改行を許容してください。
例えば「abc」を出力する場合、
「
a
b
c
」
も正解にして欲しいです。

A

いいですよ。SQLのみ改行があっても正解にします。

Q17

Q

「単純なインポート」について確認させて頂けますでしょうか。
別名インポート――例えばpythonで「import json as j」などと書いた場合は
「単純なインポート」から外れ、文字集計対象となってしまいますでしょうか?

A

集計対象外とします。

Q18

Q

null 文字を含む出力を行いました。
見た目上は正解の文字列と同じです。
バイナリで比較すると異なります。
この場合正解でしょうか、不正解でしょうか?

A

正解とします

※例: gmk 様の Java の解答
gmk.hatenablog.jp

Q19

Q

Python の
from MODULE import FUNCTION as ALIAS
は文字数の集計対象でしょうか?

A

集計対象とします。

Q20

Q

Perl の
use feature say
は文字数の集計対象でしょうか?

A

集計対象外とします。