J'ai entendu quelque part qu'une chose que la technologie ne peut pas encore faire est de plier les serviettes 1 . C'est maintenant à vous de prouver que cette affirmation est fausse!
Étant donné une chaîne en entrée, composée de rectangles (serviettes), comme ci-dessous, pliez chaque serviette en deux deux fois. Par exemple:
+------+ +------+ +--+
| | | | | |
| | | | | |
| | -> +------+ -> +--+
| |
| |
| |
+------+
Notez que lorsqu'une serviette est pliée, elle est d'abord pliée, puis de gauche à droite. Votre programme doit également imiter ce comportement. Notez également que dans les cas de test, les serviettes restent au même endroit, mais pliées.
Règles:
- Méthodes standard d'entrée / sortie.
- Des échappatoires standard s'appliquent.
- L'entrée et la sortie doivent être sous forme de chaîne.
- Les feuilles de queue sont correctes en sortie, tant que les serviettes sont au bon endroit les unes par rapport aux autres.
- Vous pouvez supposer que la longueur de chaque côté de la serviette sera toujours divisible par 2.
- Les serviettes passées en entrée seront toujours rectangulaires.
Les serviettes seront toujours séparées - cependant, elles peuvent être séparées par des quantités variables.
code-golf , donc le code le plus court gagne!
Cas de test:
Input:
+------+
| |
| |
| |
| |
| |
| |
+------+
Output:
+--+
| |
| |
+--+
Input:
+--+ +--+ +--+
| | | | | |
| | | | | |
+--+ +--+ +--+
Output:
++ ++ ++
++ ++ ++
Input:
+----+
| |
| |
| |
| | ++
+----+ ++
Output:
+-+
| |
+-+
+
Input:
+--+
+--+ ++
||
||
++
Output:
++
+
+
1: Cela a été réfuté par Geobits et Laikoni. Cependant, je l'ai entendu quelque part.
Réponses:
Rétine , 245 octets
Essayez-le en ligne!
Remarque: certaines lignes se terminent par des espaces. Explication:
Supprimez toutes les autres lignes de chaque serviette (cela fonctionne car toutes les serviettes ont une même hauteur),
déplacer toutes les pièces de serviettes détachées,
et fixez le bas des serviettes, en les pliant efficacement.
Pliez les serviettes de largeur 2 vers la droite.
Pliez les serviettes restantes vers la droite.
la source
<-2>
s'agit d'un groupe d'équilibrage .NET?(?<-2>.)*
affiche la capture à chaque fois, ne peut donc pas répéter plus de fois que l'a(.)*
fait, tout en(?(2)(?!))
vérifiant qu'il n'y a plus de capture, de sorte qu'il répète le même nombre de fois.Octave avec paquet d'images ,
277272 octetsL'entrée et la sortie sont des tableaux de caractères 2D.
Essayez-le en ligne! Ou vérifiez tous les cas de test: 1 , 2 , 3 , 4 . (Notez que
endfunction
dans les cas de test, il suffit de séparer la fonction du code suivant. Ce n'est pas nécessaire si la fonction est enregistrée dans son propre fichier.)Version et explication lisibles
la source