Szenario
Ich koche oft Lasagne, habe aber auch ein paar Fehler. Da ich diese Fehler so oft wiederhole, dachte ich, ich könnte vielleicht ein Programm machen, das prüft, ob ich alles richtig gemacht habe.
Gültige Lasagne
Eine gültige Lasagne ist
- Mindestens 5 Spalten breit
- Mindestens 4 Lagen hoch
- Ohne zusätzlichen Käse
- Die oberste Schicht ist Käse (dargestellt durch
,
) - Die zweite Schicht ist Sauce (dargestellt durch entweder
@
oder#
) - Danach wechseln sich die Schichten ab (1 Schicht Sauce, 1 Schicht Nudeln (dargestellt durch entweder
~
oder-
)) - Jede Säule kann entweder eine oder zwei Käseschichten haben
Das Programm
Sollte
- Nehmen Sie eine Lasagne-Zeichenfolge als Eingabe
- mehrzeilige Zeichenfolge
- String-Array
- Die Zeichenfolge enthält nur die Zeichen
,@#~-
- Rechteckig
- Bei Bedarf mit Leerzeichen aufgefüllt
- Gibt aus, ob es sich um eine gültige Lasagne handelt
- Alles, was in Ihrer Sprache zutreffend ist, wenn es gültig ist
- Nichts oder nichts, was in deiner Sprache falsch ist
- sei entweder
- ein volles Programm
- eine Funktion
- Das nutzt nur Funktionen, die vor dem 14.12.2016 implementiert wurden
Testfälle
,, ,
,,,,,,
@@@###
~~~~~-
@##@@#
--> 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)
Gewinnkriterien
Das
- kürzeste
- in Bytes
- Code-Golf
- funktionell
Einreichung gewinnt.
code-golf
ascii-art
decision-problem
Roman Gräf
quelle
quelle
,@#~-
mit Ausnahme von Leerzeichen als Auffüllung möglich ist, der erste Testfall jedoch Leerzeichen in der Mitte einer Zeile enthält.Antworten:
Retina ,
3834 BytesVielen Dank an Grimy für das Speichern von 4 Bytes.
Haben Sie eine Regex mit Ihrer Lasagne.
Die Anzahl der Bytes setzt die Kodierung nach ISO 8859-1 voraus.
Es wird davon ausgegangen, dass die Eingabe mit einem Zeilenumbruch endet. Druck
1
(Spiel) für gültig lasagnes und0
(keine Übereinstimmung) für ungültig diejenigen.Probieren Sie es online!
Erläuterung
Dies ist nur eine reguläre .NET-Regex, die mit der Eingabe übereinstimmt, mit der Ausnahme, dass Retina den Alias
¶
für Linefeeds oder liefert\n
.Da die Eingabe garantiert rechteckig ist, müssen wir nur die Breite der Lasagne in einer der Zeilen überprüfen.
quelle
¶[-~]*
stattdessen(¶[-~]+|$)
4 Bytes einsparen.Schmutz , 43 Bytes
Probieren Sie es online! Druckt
1
für Übereinstimmung und0
für keine Übereinstimmung.Erläuterung
Grime wurde entwickelt, um zweidimensionale Muster abzugleichen, die Stück für Stück aus kleineren Mustern aufgebaut werden. Ich definiere zuerst die optionale oberste Ebene und dann die anderen Ebenen, indem ich einen vertikalen Streifen wiederhole.
quelle