(Inspiré par ce défi )
Étant donné deux chaînes d'entrée, dont l'une est exactement d'un caractère plus longue que l'autre, organisez les chaînes en art ASCII comme s'il s'agissait de deux moitiés d'une fermeture éclair qui n'est qu'à moitié fermée. Le mot le plus long forme le bas de la fermeture éclair et est le premier et le dernier caractère de la partie à fermeture éclair combinée. Comme ce paragraphe est difficile à comprendre, jetez un œil à quelques exemples:
zippered
paragraph
z
i
p
p
gerraepdh
a
r
a
p
Notez comment paragraph
(le mot le plus long) forme la fermeture à glissière inférieure, et la g r a p h
partie encapsule la e r e d
partie de zippered
, et les parties z i p p
et p a r a
sont décalées les unes par rapport aux autres.
Contribution
- Deux chaînes ASCII dans n'importe quel format pratique , avec une longueur garantie et l'autre exactement un caractère plus long.
- Aucune chaîne ne contiendra d'espace, mais peut contenir toute autre valeur ASCII imprimable.
- Vous pouvez prendre l'entrée dans l'un ou l'autre ordre. Veuillez indiquer dans votre soumission l'ordre de saisie.
Production
La représentation artistique ASCII résultante des mots zippés, comme décrit ci-dessus, à nouveau dans n'importe quel format pratique.
Règles
- Les sauts de ligne ou les espaces de début ou de fin sont tous facultatifs, tant que les caractères eux-mêmes s'alignent correctement.
- Un programme complet ou une fonction sont acceptables. S'il s'agit d'une fonction, vous pouvez renvoyer la sortie plutôt que de l'imprimer.
- Si possible, veuillez inclure un lien vers un environnement de test en ligne afin que d'autres personnes puissent essayer votre code!
- Les failles standard sont interdites.
- Il s'agit de code-golf, donc toutes les règles de golf habituelles s'appliquent et le code le plus court (en octets) gagne.
Exemples
ppcg
tests
p
p
sctgs
e
t
string
strings
s
t
r
iinnggs
r
t
s
one guaranteed to be even in length and the other exactly one character longer.
La chaîne la plus courte est toujours paireRéponses:
Japt ,
3128 octetsTestez-le en ligne! Prend la chaîne la plus courte en premier.
Explication
la source
Fusain ,
3331 octetsEssayez-le en ligne! Le lien est vers la version détaillée du code. Prend la chaîne la plus courte en premier. Modifier: enregistré 2 octets en modifiant la détection du point médian. Explication:
Faites une boucle sur chaque chaîne à tour de rôle.
Faites une boucle sur chaque caractère de la chaîne à tour de rôle.
Imprimez le personnage et déplacez un carré supplémentaire vers la droite.
Pour la première moitié de la chaîne, déplacez également le curseur vers le bas ou vers le haut selon le cas.
Après avoir imprimé la première chaîne, passez au point de départ de la deuxième chaîne et remplacez la première chaîne par la seconde, afin qu'elle soit imprimée pour la deuxième boucle. (Le code s'exécute sur les deux boucles, mais la deuxième fois, c'est un no-op.)
la source
Pyth , 35 octets
Essayez-le en ligne!
la source
Gelée ,
2726 octets-1 octet grâce à Erik the Outgolfer (utilisez la répétition,,
¡
pour remplacer if?
, et une clause else passée¹
)Un programme complet qui imprime le résultat avec un premier espace blanc, comme autorisé dans la question (ou un lien dyadique renvoyant une liste de caractères).
Essayez-le en ligne!
Comment?
la source
C¹Ḃ?
->CḂ¡
Python 2 ,
128119 octetsEssayez-le en ligne!
la source
V ,
473830272625 octetsEnfin battre la réponse Jelly actuelle \ o /
Prend la saisie avec le mot le plus long en haut
Explication à venir, ne pensez pas qu'il y a beaucoup plus à jouer au golf.
Essayez-le en ligne!
Explication
la source
V , 79 octets
Essayez-le en ligne!
Ce qui suit doit être lu avec beaucoup de sarcasmes et de citations aériennes .
Pourquoi je continue de me faire ça?
Hexdump:
la source
Gelée , 28 octets
Essayez-le en ligne!
Woo Jelly participe actuellement à un défi de cordes et d' ascii-art ! \ o /
la source
Ṗ
n'ajoutera pas un espace de fin mais un espace de fin1
. Et omettre tout ce qui a à voir avec les espaces supprime l'alignement des lettres. Généralement, cet algorithme utilise l'indexation pour que les lettres atteignent un index particulier dans une colonne, puis le reste est rempli d'espaces, donc je pense que cela ne peut plus être joué. Au moins, je suis content que Jelly ne soit pas déjoué par CJam. ;)05AB1E ,
2623 octetsEssayez-le en ligne!
Explication
Avec un exemple d'entrée =
ppcg, tests
la source
C # (.NET Core) , 163 octets
Essayez-le en ligne!
Probablement beaucoup de golf à faire ici, mais voici une première tentative non-LINQ. Fonction lambda qui prend le mot le plus long en premier et renvoie une chaîne avec la sortie.
la source
l=>s=>
), c'est-à-direFunc<input1, Func<input2, output>>
.Java 8, 216 octets
Une lambda au curry: prend
String
et renvoie une lambda deString
àString
. Le paramètre du lambda externe est la chaîne la plus courte.Ne pas pouvoir indexer en
String
s avec la syntaxe du tableau est ... malheureux.Lambda non golfé
Explication
l
est la longueur de l'entrée la plus courte eti
est un index polyvalent, initialisé pour faire référence au premier caractère de la seconde moitié de l'entrée la plus courte.o
accumule le résultat,p
stocke finalement des espaces pour le rembourrage etn
est un alias pour"\n"
.La première boucle entrelace les deuxièmes moitiés des deux chaînes (à l'exclusion du dernier caractère de l'entrée la plus longue) et construit
p
la quantité appropriée de remplissage pour la ligne médiane.La ligne suivante complète la ligne médiane de sortie.
Je voudrais m'excuser auprès de James Gosling pour la deuxième boucle. Il ajoute les lignes au-dessus et au-dessous de la ligne médiane de l'intérieur vers l'extérieur. Entrer dans la boucle
i
estl - 1
, donc un caractère de remplissage est ajouté avec le dernier caractère de la première moitié de la chaîne la plus courte.i
est décrémenté de sorte que le remplissage suivant (ajouté au résultat) soit un caractère plus court. Par division entière, le même caractère de position de la chaîne plus longue est ajouté. Cela se répète et le résultat terminé est renvoyé.Truc cool
La ligne 13 était autrefois
car sans la chaîne vide,
+
ajouté les valeurs de caractères ensemble et ajouté une chaîne numérique. En développant l'affectation composée, la concaténation deo
ett.charAt(i)
est évaluée en premier, ce qui donne le résultat souhaité sans avoir besoin de la chaîne vide, économisant 2 octets. C'est la première fois que je vois une affectation composée se comporter différemment de son expansion.la source
Javascript (ES6),
140 137133 octetsBien sûr, cela peut être joué plus loin
la source
`<newline>`+` `
être fusionné`<newline> `
? (Je ne connais pas JS).Mathematica, 174 octets
Contribution
la source
TXR Lisp , 126 octets
la source
PHP,
149129 octetsCourez avec
-nr
ou essayez-le en ligne .la source
Perl 5 , 163 octets
Essayez-le en ligne!
Prend d'abord la chaîne la plus longue.
la source