Utwórz program do poprawnego numerowania siatki krzyżówek.
Wejście
Dane wejściowe to nazwa pliku reprezentującego siatkę krzyżówki. Wejściowa nazwa pliku może być przekazana jako argument na standardowym wejściu lub w inny konwencjonalny sposób niż kodowanie na stałe.
Format pliku siatki: plik tekstowy. Pierwszy wiersz składa się z dwóch stałych całkowitych oddzielonych spacjami M
i N
. Po tej linii są M
wiersze składające się ze N
znaków (plus nowy wiersz) wybranych spośród [#A-Z ]
. Znaki te są interpretowane w taki sposób, że '#'
oznaczają zablokowany kwadrat, ' '
otwarty kwadrat w łamigłówce bez znanej zawartości, a dowolną literę otwarty kwadrat zawierający tę literę.
Wynik
Wynik będzie plikiem numeracji i może zostać wysłany na standardowe wyjście, do pliku, którego nazwa pochodzi od wejściowej nazwy pliku, do pliku określonego przez użytkownika lub do innego konwencjonalnego miejsca docelowego.
Format pliku numeracji Plik tekstowy. Linie zaczynające się od „#” są ignorowane i mogą być użyte do komentarzy. Wszystkie inne linie zawierać kartę wydzielił triplet i
, m
, n
gdzie i
oznacza liczbę drukowany na siatce i m
i n
reprezentują wiersza i kolumny na placu, gdzie powinien zostać wydrukowany. Liczba zarówno wierszy, jak i kolumn zaczyna się od 1.
Schemat numerowania
Prawidłowo numerowana siatka ma następujące właściwości:
- Numeracja zaczyna się od 1.
- Żadna kolumna ani zakres otwartych kwadratów nie jest numerowany. (Możesz założyć, że w problemie nie będzie odpowiedzi na pojedynczy znak).
- Liczby będą napotykane w kolejności liczenia, skanując od górnego rzędu do dołu, biorąc każdy wiersz od lewej do prawej. (Tak więc każde przęsło poziome jest ponumerowane w jego lewym kwadracie, a każda kolumna jest ponumerowana w jego najwyższym kwadracie).
Testuj wejście i oczekiwane wyjście
Wejście:
5 5
# ##
#
#
#
## #
Dane wyjściowe (pomijając wiersze komentarza):
1 1 2
2 1 3
3 2 2
4 2 4
5 2 5
6 3 1
7 3 4
8 4 1
9 4 3
10 5 3
Na bok
Jest to pierwsze z wielu wyzwań związanych z krzyżówką. Planuję używać spójnego zestawu formatów plików w całym procesie i zbudować w tym czasie porządny zestaw narzędzi związanych z krzyżówkami. Na przykład kolejna układanka będzie wymagała wydrukowania wersji krzyżówki ASCII na podstawie danych wejściowych i wyjściowych tej układanki.
'\n'
c na wszystkich platformach. Założono, że plik wejściowy został utworzony w tym samym systemie, który go przetworzy, więc ten problem powinien być przejrzysty. Ogólna uwaga na temat golfa kodowego: jeśli pracujesz w obcym języku lub na dziwnej platformie, po prostu zanotuj wszystko, co może zaskoczyć czytelnika. Ludzie uwzględnią to, oceniając twoje zgłoszenie.