Cette question est inspirée et inverse de celle-ci .
Dennis ( E
), Doorknob ( D
), Martin ( M
) et Chris ( C
) ont commandé une pizza. La pizza rectangulaire est divisée en morceaux carrés, chacun marqué de son mangeur prévu.
Écrivez un programme ou une fonction qui, étant donné une pizza rectangulaire composée de 0 ou plus de chaque lettre, détermine si:
Chaque tranche pour chaque personne est connectée au chemin . Cela signifie que toutes les lettres identiques doivent être directement adjacentes les unes aux autres (pas de connexions diagonales).
Le nombre de tranches par personne est le même pour tous.
Vous devez générer une valeur de vérité / fausse avec un retour à la ligne facultatif qui indique si la pizza donnée est juste ou non.
Valises de test valides:
DDDDDDDDDDDDMCCCCCCCCCCC
DEEEEEEEEEEDMMMMMMMCCCCC
DEEEEEEEEEEDMMMCCCCCCCCC
DEEEEEEEEEEDMMMMMMMMCCCC
DDDDDDDDDDDDMMMMMMMMMMMC
DEMC
DD
EE
MC
MC
EEDDMMMCCC
EEEDDDMMCC
Cas de test non valides:
EDM
EDMCCMDE
DDDDDDDDDDDDMCCCCCCCCCCC
DEEEEEEEEEEDMMMMMMMCCCCC
DEEEEEEEEEEMDMMCCCCCCCCC
DEEEEEEEEEEDMMMMMMMMCCCC
DDDDDDDDDDDDMMMMMMMMMMMC
DDMMEECC
DMMEECCC
Le code le plus court en octets gagne.
DDDDDDDDDDDDD
<- une pizza justeRéponses:
Pyth, 53 octets
Manifestation
Il s'agit essentiellement d'un remplissage pour chaque lettre, suivi d'une vérification que tous les ensembles résultants sont de la taille appropriée.
Pour remplir, il commence par l'occurrence la plus à gauche de chaque lettre, puis génère tous les voisins des emplacements trouvés jusqu'à présent, filtre les emplacements avec la bonne lettre et se répète jusqu'à ce que l'ensemble cesse de changer.
la source
Escargots , 129
Imprime 1 pour une pizza juste et 0 pour une pizza injuste.
Version étendue:
&
signifie que le motif doit correspondre à tous les emplacements de la grille. La première ligne vérifie un nombre égal de chacun de E, D, M, C. elle utilise l'instruction de téléportationt
, qui est un excellent moyen de créer des programmes avec une complexité factorielle. Si une entrée a des tranches de taille inégale avec plusieurs unités pour chacun des 4 mods, le programme se bloquera plus ou moins pour toujours. Après cela, il y a une vérification pour un chemin contigu vers l'instance en haut à gauche de la lettre sur laquelle le modèle a commencé.la source
CJam, 93
Essayez-le en ligne
C'est ridiculement long parce que CJam n'a pas (encore) de remplissage intégré ou de recherche d'union. J'ai implémenté union-find dans le programme.
Explication:
la source
JavaScript (ES6), 153
166En utilisant des chaînes de modèle, il y a une nouvelle ligne qui est significative et comptée
Testez l'exécution de l'extrait dans FireFox.
la source
Javascript ES6, 360
Vérifie un nombre égal de C, D, E, M, puis remplit et vérifie toutes les lettres orphelines. Pas un gagnant, mais j'ai dû essayer.
Violon
la source
JavaScript ES6,
328318316269178Explication:
la source
l=>{...}
c'est bien.k=(o)=>
pour enregistrer 2 octets supplémentaires. Les fonctions de flèche à paramètre unique n'ont pas besoin de parenthèses.