Bir nonogram bu (oyundan ekran görüntüleri gibi görünür iki boyutlu mantık bulmaca Pixelo sevdiğim nonogram oyunu):
Oyunun amacı, bu numaraların hangi görüntüyü kodladığını bulmaktır. Kurallar basit: Bir sütundaki veya satırdaki bir sayı, o sütunda veya satırın herhangi bir yerinde, birçok kutunun bir satırda doldurulduğu anlamına gelir. Örneğin, yukarıdaki resimde yer alan alt satırda dolu kutu bulunmamalı, yukarıdaki kutuda da dolu olan tüm kutulara sahip olmalıdır. Alttan üçüncü satırda 8 tane dolu kutu var ve hepsi bir sırada olacaklar.
Aynı sütun veya satır için iki veya daha fazla sayı, bu uzunluklarla aralarında en az bir boşluk olan doldurulmuş kutuların birden fazla "çalışması" anlamına gelir. Sipariş korunur. Örneğin, yukarıdaki görüntünün sağ sütununda üç doldurulmuş kutu, altlarında en az bir boşluk ve daha sonra bir doldurulmuş kutu daha vardır.
İşte aynı yapboz, neredeyse tamamlandı:
(X'ler önemli değil, sadece oyuncunun "Bu kare kesinlikle doldurulmadı" demesi için bıraktıkları bir ipucu. Mayın Tarlası'ndaki bayrakları düşünün. Hiçbir anlamı yoktur.)
Umarım, örneğin, "2 2" diyen ipuçlarına sahip orta sütunların kutulara doldurulmuş 2 boyda iki kadeh içerdiğini görebilirsiniz.
Göreviniz, kabul etmeyi seçmeniz durumunda, böyle bir bilmece yaratacak bir program veya işlev yazmaktır. Anakartın boyutuna stdin üzerinde tek bir tamsayı (5 <= n <= 50) veya bir argüman olarak (bir nonogram yapbozun kare olmasının bir nedeni yoktur, ama bu zorluk için olacaktır) verilir. Bundan sonra, görüntüdeki sırasıyla doldurulmuş ve doldurulmamış kareleri temsil eden bir dizi 1 ve 0 verilir. Bunlardan ilki n, üst satır, sonraki satır, vb .dir. 2 * 1 hücreli bir panoya geri dönecek veya basacaksınız (çünkü daha iyi görünüyorlar ve size bir sütun için 2 basamaklı ipuçları için yer veriyor. ), hepsi boş, giriş verilerine karşılık gelen ipuçlarıyla.
Çıkış biçimi
Numune
Giriş:
./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])
Resim:
Çıktı:
1
2 1 2
3 2 1 2 3
+----------
3|
2 2|
1 1 1|
2 2|
3|
Giriş:
./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'
Resim:
Çıktı:
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|
Açıklamalar
- Çıktınızın çözülebilir bir bilmece olması gerekmez. Program dışı olanların hepsi çözülemez, ancak bu sizin endişeniz değil. Sadece iyi bir bilmece olsun ya da olmasın, girdiye karşılık gelen ipuçlarını çıktılayın.
- Komut satırında argümanlar alan bir programa izin verilir. Bu yukarıda belirtilen tür, ancak yanlış bir fikir edinmek mümkündür. Açıklamalar bunun için var.
0
Kutuları doldurulmamış bir satır veya sütuna yazdırmak zorunludur. Bunu hiçbir yerde kelimelerle söylemiyorum ama örnek verilerde var.
5<=n<=50
spec, bu nedenle herhangi bir 3 basamaklı sayı
-
olması gerekenden daha fazla içermiyor mu?