お絵かきロジックはこのような何か(ゲームのスクリーンショットに見える2次元のロジックパズルですPixelo、私のお気に入りのお絵かきロジックゲーム):
ゲームの目的は、これらの数字がエンコードしている画像を把握することです。ルールは単純です。列または行の数字は、その列または行のどこか、多くのボックスが行で埋められることを意味します。たとえば、上の画像の一番下の行にはボックスを埋めてはならず、その上の行にはすべてのボックスを埋めておく必要があります。下から3番目の行には8つの塗りつぶされたボックスがあり、それらはすべて1列になります。
同じ列または行に2つ以上の数字がある場合は、塗りつぶされたボックスが複数の「実行」されており、それらの間に少なくとも1つのスペースがあり、それらの長さがあります。順序は保持されます。たとえば、上の画像の一番右の列には3つの塗りつぶされたボックスがあり、それらの下に少なくとも1つのスペースがあり、さらにもう1つの塗りつぶされたボックスがあります。
ほぼ完成した同じパズルを次に示します。
(Xは重要ではなく、プレイヤーが「このマスは間違いなく塗りつぶされていません」と言うためのヒントです。マインスイーパでフラグを考えてください。ルールの意味はありません。)
たとえば、「2 2」というヒントのある中央の列には、2つの長さの塗りつぶされたボックスが2つあることがわかります。
あなたがそれを受け入れることを選択した場合、あなたの使命は、このようなパズルを作成するプログラムまたは機能を書くことです。ボードのサイズは、stdinの単一の整数(5 <= n <= 50)または引数として与えられます(ノノグラムパズルを正方形にする必要はありませんが、この課題ではそうなります)。その後、画像内の塗りつぶされた正方形と塗りつぶされていない正方形をそれぞれ表す一連の1と0が与えられます。最初のnは上の行、次の行などです。2* 1セルのボードを標準出力に戻すか、印刷します(見栄えがよく、列に2桁のヒントを表示できるためです) )、それらはすべて空で、入力データに対応するヒントがあります。
出力フォーマット
サンプル
入力:
./nonogram <<< '5 0 1 1 1 0 1 1 0 1 1 1 0 1 0 1 1 1 0 1 1 0 1 1 1 0'
OR
n(5,[0,1,1,1,0,1,1,0,1,1,1,0,1,0,1,1,1,0,1,1,0,1,1,1,0])
画像:
出力:
1
2 1 2
3 2 1 2 3
+----------
3|
2 2|
1 1 1|
2 2|
3|
入力:
./nonogram <<< '15 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 0 0 1 0 1 0 0 1 0 0 0 1 1 1 1 1 0 1 0 1 1 1 1 0 0 0 1 1 1 1 1 0 1 1 1 1 0 0 0 0 0 1 1 1 1 1 0 0 0 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1'
画像:
出力:
1 1
1 1 3 3 5 5 3 3 1
7 2 3 2 4 2 3 210 2 3 0 4 215
+------------------------------
2|
1|
1|
1|
1|
1 1|
3 3 1 1|
1 5 1 1|
3 5 3|
1 5 1|
1 3 1|
1 1 1 1 1|
1 1 1 1 1 1 1 1|
11 3|
11 3|
明確化
- 出力は、解けるパズルである必要はありません。すべての非グラムが解けるわけではありませんが、それはあなたの関心事ではありません。良いパズルを作るかどうかに関係なく、入力に対応するヒントを出力するだけです。
- コマンドラインで引数を取るプログラムは許可されます。これは上記のようなものですが、間違った考えを得る可能性があります。それが明確化の目的です。
0
塗りつぶされたボックスがない行または列の印刷は必須です。私はどこでも言葉でこれを言いませんが、それはサンプルデータにあります。
5<=n<=50
仕様なので、任意の3桁の数字があることはできません
-
、必要以上のものが含まれていませんか?