Inspiré par ce petit jeu .
Défi
Étant donné en entrée la position initiale d'une grille (toujours 5x5), comme ceci:
-ABCD
-A---
---C-
---BD
--E-E
Vous devez connecter les lettres (les mêmes lettres toutes ensemble), en supprimant tous les -
espaces vides . Les lettres seront toujours A,B,C,D and E
.
Chaque paire de lettres doit être reliée par une seule ligne non ramifiée qui peut se plier à angle droit (en utilisant la même lettre pour représenter la ligne).
L'entrée est garantie d'avoir chaque lettre de départ exactement 2 fois et elle aura toujours toutes les lettres de départ AE.
L'entrée peut être lue à partir de stdin, ou une seule chaîne en tant qu'arg dans une fonction, ou même un tableau / matriz / liste de caractères, le moyen le plus pratique pour votre langage de codage.
Puisqu'il s'agit de code-golf, le code le plus court en octets gagne!
Exemple
Il n'y a pas qu'une seule solution à chaque problème, mais les règles s'appliquent à tous (pas d'espace vide et pas de lettres séparées). Et l'entrée est garantie d'avoir au moins une sortie correcte.
Commençons par connecter les lettres A:
AABCD
AA---
AA-C-
AA-BD
AAE-E
Maintenant, connectez les lettres B:
AABCD
AAB--
AABC-
AABBD
AAE-E
Maintenant, connectez les lettres C:
AABCD
AABC-
AABC-
AABBD
AAE-E
Maintenant, connectez les lettres D:
AABCD
AABCD
AABCD
AABBD
AAE-E
Et enfin les lettres E:
AABCD
AABCD
AABCD
AABBD
AAEEE
Un autre échantillon
input:
E--E-
BB-C-
AD---
---C-
AD---
output:
EEEEE
BBECE
ADECE
ADECE
ADEEE
input:
A----
---B-
-C-C-
-D-D-
BE-EA
output:
AAAAA
BBBBA
BCCCA
BDDDA
BEEEA
A-E
?Réponses:
Perl,
130128127 octetsComprend +4 pour
-n0
(le programme ne fonctionne pas à partir de la ligne de commande-
et l'espace est également compté)Appelez avec l'entrée sur STDIN:
Teminate avec
^D
ou^Z
ou tout ce qui ferme STDIN sur votre systèmeconnectletters.pl
:la source