Problem description
Krasnal Olaf przygotował dla Ciebie zadanie w postaci łamigłówki Shingoki .
Twoim zadaniem jest ją rozwiązać, a więc narysować jedną, zgodną ze wszystkimi zasadami, zamkniętą pętlę, utworzoną z odcinków łączących sąsiednie punkty kratowe.
Zasady są następujące:
Pętla nie może się ze sobą przecinać i musi być jedynym zamkniętym obszarem na planszy.
W niektórych punktach znajdują się kółka. Przez każde białe kółko pętla musi przechodzić na wprost, zaś w każdym czarnym kółku pętla musi zakręcać.
Każda liczba wpisana w środek kółka ma być równa sumie długości dwóch prostych fragmentów pętli, wychodzących z tego kółka.
Lewy rysunek przedstawia przykładową łamigłówkę wraz z jej poprawnym rozwiązaniem. Twoim zadaniem jest rozwiązać łamigłówkę z prawego rysunku. Możesz założyć, że istnieje dokładnie jedno poprawne rozwiązanie.
Wejście
Brak.
Wyjście
Niech łamigłówka składa się z N2 punktów kratowych ułożonych w kwadrat o N wierszach i N kolumnach. Rozwiązanie należy wypisać jako rysunek złożony z 2N − 1 wierszy, z których każdy ma długość 2N − 1 znaków.
W wierszach nieparzystych należy opisać punkty kratowe oraz poziome
odcinki pętli. Na pozycjach nieparzystych należy wypisać cyfrę z kółka
znajdującego się w danym punkcie albo znak ., jeśli w tym
punkcie nie ma kółka. Na pozycjach parzystych należy wypisać znak
-, jeśli pętla zawiera poziomy odcinek między sąsiednimi
punktami, albo znak spacji w przeciwnym przypadku.
W wierszach parzystych należy opisać pionowe odcinki pętli. Na
pozycjach nieparzystych należy wypisać znak |, jeśli pętla
zawiera pionowy odcinek między sąsiednimi punktami, albo znak spacji w
przeciwnym przypadku. Na pozycjach parzystych należy wypisać znak
spacji.
Rozwiązanie lewego przykładu
print("""\
. .-2-.
| |
.-. 2-.
| |
. . 2-.
| |
5-.-3-.
""")Szablon rozwiązania w Python
print("""\
. 2 . 2 . .
. . . . . .
. 2 3 . . .
. . . . . 3
. . 4 . . .
. . . . 4 .
""")