ランタイム配置用のボーナスが追加されました。
プログラムを小さく保ちながら、プログラムで使用される識別子をテキストボックスに入力するプログラムを記述します。プログラムで使用したすべての識別子(作成したものを除く)を使用して、12x6ボックスにできるだけ多くの識別子を入力します。クロスオーバーする識別子(クロスワードスタイル)に対して余分なポイントを取得しますが、エンドツーエンドで結合することはできません。
出力
プログラムは、パックされた識別子と#
境界線を含む12x6文字のボックスを(標準出力に)印刷する必要があります。ボックスには、文字ALでラベル付けされた列と行1〜6(下の例のように間隔が空いている)が必要です。次に、使用する各識別子の行を出力します。各行には、最初の文字の位置、識別子自体、およびスコアがあります。スコアは、「+ボーナス」が追加された識別子の文字数と同じです。識別子は、交差識別子と共有される各文字に対して5ポイントのボーナスを取得します。最後の行は、「TOTAL:」と識別子スコアの合計を報告します。可能なPythonプログラムの出力例は次のようになります。
ABCDEFGHIJKL
##############
1 # pinsert #
2 # o #
3 # print #
4 # not #
5 # #
6 #import #
##############
C1 pop 3+5
D1 insert 6
C3 print 5+10
E3 in 2+10
E4 not 3+5
A6 import 6
TOTAL: 55
ノート:
- 識別子は(
import
上記のように)接続解除できます。 - に参加
pop
してprint
インライン化することはできませんpoprint
。 in
内部の文字列はinsert
使用できません。結合する単語は直交している必要があります。- 識別子は(のような、互いに隣接して配置することが可能
pop
とinsert
上記)。
回答には、ソースコードを含むプログラム出力と、言語名とスコアで構成されるタイトルを含める必要があります。
スコア
チャレンジのスコアは、パズルスコアの2乗をソースコードのサイズ(バイト単位)で割った値になります。例:300バイトのプログラムを使用した上記のパズルはスコアを付け55*55/300 = 10.08
ます。最も高いスコアが勝ちます。
ルール
- プログラムで定義されていない任意の識別子をプログラムで使用できます。キーワード、クラス名、メソッド名、ライブラリー名、および組み込み関数名は、適格なIDの例です。
- 編集:最小限の言語リリースに含まれている標準ライブラリのみを使用できます。拡張言語パッケージと外部ライブラリの使用(現在は禁止)は禁止されています。識別子の広範なリストを持つ膨大な範囲のライブラリーは、この課題のバランスを崩します。これがあなたの言語でどのように機能するかわからない場合は、コメントに質問を残してください。
- 識別子は[a-zA-Z_]文字のみで構成され、2文字以上である必要があります。
- パズルで使用できるのは、各識別子のみです。
- 識別子は左から右または下向きにのみ使用できます。
ダイナミックボーナス!
コードが実行時に識別子を配置する場所を決定する場合、共有レターボーナスは5ではなく20になります。使用する識別子をリストすることもできますが、コードはボックス内のどこに配置するかを決定する必要があります。また、コードはスコアリストを計算して印刷する必要があります。プレースメントが識別子リストの順序、ハードコードされたペアリング、またはその他の動的でないプレースメントのショートカットに依存している場合、動的ボーナスの対象にはなりません。
上記の出力例では、実行時配置プログラムのパズルスコアは145になります。コードが800バイトの場合、スコアはになります145*145/800 = 26.28
。
ダイナミックボーナスは、静的なハードコードされたソリューション文字列ではなく巧妙なアルゴリズムに報酬を与え、より大きなソースコードサイズを補うように設計されています。
編集:
- 使用されるライブラリを、最小言語リリースのライブラリのみに変更しました。
- 動的ボーナスオプションを追加しました。
xyzw
/ rgba
/ stpq
:)のすべての組み合わせが定義されています