Scenariusz
Często gotuję lasagne, ale mam też kilka błędów. Ponieważ powtarzam te błędy tak często, pomyślałem, że mógłbym zrobić program, który sprawdza, czy wszystko zrobiłem dobrze.
Ważna lasagne
Prawidłowa lasagne to
- Szerokość co najmniej 5 kolumn
- Wysokość co najmniej 4 warstw
- Z wyłączeniem dodatkowego sera
- Górna warstwa to ser (reprezentowany przez
,
) - Drugą warstwą jest sos (reprezentowany przez jeden
@
lub#
) - Następnie warstwy naprzemiennie (1-warstwowy sos, 1-warstwowy makaron (reprezentowany przez jeden
~
lub-
)) - Każda kolumna może zawierać jedną lub dwie warstwy sera
Program
Powinien
- weź ciąg lasagne jako dane wejściowe
- ciąg wielowierszowy
- tablica ciągów
- ciąg zawiera tylko znaki
,@#~-
- Prostokątny
- W razie potrzeby wypełnione spacjami
- Dane wyjściowe, czy jest to poprawna lasagne
- Każda rzecz, która jest prawdomówna w twoim języku, jeśli jest ważna
- Nic lub cokolwiek, co byłoby fałszywe w twoim języku
- być albo
- pełny program
- funkcja
- korzystający tylko z funkcji wdrożonych przed 14.12.2016
Przypadki testowe
,, ,
,,,,,,
@@@###
~~~~~-
@##@@#
--> truthy
@@@#
----
@@##
----
@###
--> falsy (cause of cheese and width (You don't have to print the stuff in the brackets))
,,,,,
-----
@####
-----
@@@@@
--> falsy (have the sauce as last layer)
Kryteria wygranej
The
- najkrótszy
- w bajtach
- golf-golf
- funkcjonalny
zgłoszenie wygrywa.
code-golf
ascii-art
decision-problem
Roman Gräf
źródło
źródło
,@#~-
z wyjątkiem spacji jako wypełnienia, ale pierwszy przypadek testowy zawiera spacje w środku linii.Odpowiedzi:
Siatkówka ,
3834 bajtówDzięki Grimy za zaoszczędzenie 4 bajtów.
Zrób regex ze swoją lasagne.
Liczba bajtów zakłada kodowanie ISO 8859-1.
Zakłada, że wejście kończy się końcowym podawaniem linii. Odbitki
1
(dopasowanie) dla prawidłowych lasagne i0
(brak dopasowania) dla nieprawidłowych.Wypróbuj online!
Wyjaśnienie
Jest to tylko standardowe wyrażenie regularne .NET dopasowane do danych wejściowych, z tym wyjątkiem, że Retina zapewnia alias
¶
dla linii lub\n
.Ponieważ wejście jest zagwarantowane jako prostokątne, musimy tylko sprawdzić szerokość lasagne w jednym z rzędów.
źródło
¶[-~]*
zamiast(¶[-~]+|$)
, oszczędzając 4 bajty.Brud , 43 bajty
Wypróbuj online! Drukuje
1
dla dopasowania i0
bez dopasowania.Wyjaśnienie
Grime jest przeznaczony do dopasowywania dwuwymiarowych wzorów, które są budowane kawałek po kawałku z mniejszych wzorów. Najpierw definiuję opcjonalną górną warstwę, a następnie pozostałe warstwy, powtarzając pionowy pasek.
źródło