Étant donné une série de o
s représentant des points, connectez-les verticalement ou horizontalement
Exemples
Contribution:
o o
o
Production:
o---o
|
|
o
Contribution:
o o o
o
Production:
o---o----o
|
o
Spec
Si vous souhaitez que l'entrée remplie d'espaces forme un rectangle, veuillez le spécifier dans votre réponse
Il n'y aura que des
o
espaces et des nouvelles lignes dans l'entrée- Il y aura toujours une paire de points pour se connecter
- Aucun deux
o
ne sera directement adjacent - Les points doivent être connectés avec
|
et-
, pour les connexions verticales et horizontales respectivement - Aucune connexion par points ne se chevauchera
Réponses:
Japt,
3329 octetsTestez-le en ligne!
Comment ça fonctionne
la source
Ruby,
137133 bytesC'est absolument horrible. J'essaie toujours de jouer au golf.
Saisissez un rectangle rembourré, s'il vous plaît.
Nouvelle ligne pour la "lisibilité":
la source
\b
place de(?=o)
?Rétine , 80 octets
L'entrée doit être complétée.
Essayez-le en ligne!
Explication
La première étape est assez simple, elle transforme simplement tous les espaces en traits d'union qui se trouvent entre deux
o
s sur la même ligne.La deuxième étape porte sur l'
|
art. C'est un peu plus délicat et nécessite des groupes d'équilibrage . Le regard derrièrevérifie qu'il y a un
o
précédent dans la même colonne. N'oubliez pas que les regards arrière doivent être lus de droite à gauche.(.)*
stocke la position horizontale de la correspondance,\D*¶
vérifie le saut à n'importe quel caractère dans les lignes précédentes,o
correspond littéralement.(?(1)!)^(?<-1>.)*
S'assure ensuite que la position horizontale de celui-cio
est la même.Le lookahead
Fait exactement la même chose dans la direction opposée.
la source