Diese Frage ist inspiriert von und ist das Gegenteil von dieser Frage .
Dennis ( E
), Doorknob ( D
), Martin ( M
) und Chris ( C
) haben eine Pizza bestellt. Die rechteckige Pizza ist in quadratische Stücke unterteilt, die jeweils mit ihrem vorgesehenen Esser gekennzeichnet sind.
Schreiben Sie ein Programm oder eine Funktion, die bei einer rechteckigen Pizza, die aus 0 oder mehr Buchstaben besteht, bestimmt, ob:
Jedes Slice für jede Person ist mit dem Pfad verbunden . Dies bedeutet, dass alle Buchstaben, die gleich sind, direkt nebeneinander liegen sollten (keine diagonalen Verbindungen).
Die Anzahl der Scheiben pro Person ist für alle gleich.
Sie müssen einen Wahrheits- / Falschwert mit einem optionalen nachgestellten Zeilenumbruch ausgeben, der angibt, ob die angegebene Pizza fair ist oder nicht.
Gültige Testfälle:
DDDDDDDDDDDDMCCCCCCCCCCC
DEEEEEEEEEEDMMMMMMMCCCCC
DEEEEEEEEEEDMMMCCCCCCCCC
DEEEEEEEEEEDMMMMMMMMCCCC
DDDDDDDDDDDDMMMMMMMMMMMC
DEMC
DD
EE
MC
MC
EEDDMMMCCC
EEEDDDMMCC
Ungültige Testfälle:
EDM
EDMCCMDE
DDDDDDDDDDDDMCCCCCCCCCCC
DEEEEEEEEEEDMMMMMMMCCCCC
DEEEEEEEEEEMDMMCCCCCCCCC
DEEEEEEEEEEDMMMMMMMMCCCC
DDDDDDDDDDDDMMMMMMMMMMMC
DDMMEECC
DMMEECCC
Kürzester Code in Bytes gewinnt.
DDDDDDDDDDDDD
<- eine faire PizzaAntworten:
Pyth, 53 Bytes
Demonstration
Dies ist im Wesentlichen eine Überflutung für jeden Buchstaben, gefolgt von einer Überprüfung, ob alle resultierenden Mengen die richtige Größe haben.
Zum Füllen wird mit dem Vorkommen jedes Buchstabens oben links begonnen, dann werden alle Nachbarn der bisher gefundenen Orte generiert, nach Orten mit dem richtigen Buchstaben gefiltert und wiederholt, bis sich der Satz nicht mehr ändert.
quelle
Schnecken , 129
Gibt 1 für eine faire Pizza und 0 für eine unfaire Pizza aus.
Erweiterte Version:
&
bedeutet, dass das Muster an allen Stellen im Raster übereinstimmen muss. Die erste Zeile prüft, ob E, D, M und C gleich viele sind. Dabei wird der Teleport-Befehl verwendett
, mit dem Programme mit faktorieller Komplexität erstellt werden können. Wenn ein Eingang Slices ungleicher Größe mit mehreren Einheiten für jeden der 4 Mods hat, bleibt das Programm mehr oder weniger für immer hängen. Danach wird nach einem zusammenhängenden Pfad zu der linken oberen Instanz des Buchstabens gesucht, mit dem das Muster begonnen hat.quelle
CJam, 93
Probieren Sie es online aus
Das ist lächerlich lang, weil CJam (noch) kein integriertes Flood-Fill oder Union-Find hat. Ich habe union-find in das Programm implementiert .
Erläuterung:
quelle
JavaScript (ES6), 153
166Unter Verwendung von Vorlagenzeichenfolgen gibt es einen Zeilenumbruch, der signifikant und gezählt ist
Testen Sie das Ausführen des Snippets in FireFox.
quelle
Javascript ES6, 360
Prüft auf die gleiche Anzahl von C, D, E, M, füllt sie dann mit Wasser und prüft auf verwaiste Buchstaben. Kein Gewinner, aber ich musste es versuchen.
Geige
quelle
JavaScript ES6,
328318316269178Erläuterung:
quelle
l=>{...}
ist in Ordnung.k=(o)=>
, um 2 weitere Bytes zu sparen. Einzelparameter-Pfeilfunktionen benötigen keine Klammern.