Connexes: Défi assez similaire (mais beaucoup plus facile) horizontalement: Là, je l'ai corrigé (avec du ruban adhésif)
Défi:
Étant donné une chaîne contenant uniquement des lettres majuscules et / ou minuscules (selon ce que vous préférez) et des nouvelles lignes, mettez rope
verticalement pour le corriger. Nous faisons cela en vérifiant la différence de deux lettres adjacentes dans l'alphabet (en ignorant le bouclage et en ne descendant que), et en remplissant l'espace avec autant ROPE
/ rope
que nous aurions besoin.
REMARQUE: Une autre différence clé entre ce défi et le défi Là je l'ai résolu (avec une bande) est que nous ne perdons pas rope
ce temps comme nous l'avons fait avec le tape
(suggéré par @JonathanAllan dans la première partie du défi).
Exemple:
Contribution:
abc
bcd
ddd
eex
gfz
hka
imh
Production:
abc
bcd
Rdd
deE
efR
OPO
gEP
hRE
iOR
kO
PP
mE
R
O
P
E
R
O
P
E
R
O
x
P
z
a
E
R
O
P
E
R
h
Pourquoi?
- Entre
b
etd
dans la colonne 1 devrait êtrec
(longueur 1), nous remplissons donc ceci avecR
; - Entre
e
etg
dans la colonne 1 devrait êtref
(longueur 1), nous remplissons donc ceci avecO
; - Entre
f
etk
dans la colonne 2 devrait êtreghij
(longueur 4), nous remplissons donc ceci avecPERO
; - Entre
k
etm
dans la colonne 2 devrait êtrel
(longueur 1), nous remplissons donc ceci avecP
; - Entre
d
etc
dans la colonne 3 devrait êtreefghijklmnopqrstuvw
(longueur 19), nous remplissons donc ceci avecEROPEROPEROPEROPERO
; - Entre
x
etz
dans la colonne 3 devrait êtrey
(longueur 1), nous remplissons donc ceci avecP
; - Entre
a
eth
dans la colonne 3 devrait êtrebcdefg
(longueur 6), nous remplissons donc cela avecEROPER
.
Règles du défi:
- La différence ne s'applique que vers le bas, donc pas de corde entre
za
(colonne 3 dans l'exemple ci-dessus). - Il est possible d'avoir plusieurs des mêmes lettres adjacentes comme
dd
(colonne 3 dans l'exemple ci-dessus). - Vous continuerez à utiliser
ROPE
une colonne à la fois pour ne pas gaspiller de pièces (suggéré par @JonathanAllan dans la partie 1 du défi). - Vous êtes autorisé à prendre l'entrée dans n'importe quel format raisonnable. Peut être une chaîne unique, un tableau de chaînes / liste, une matrice de caractères, etc. La sortie a la même flexibilité.
- Vous êtes autorisé à utiliser les minuscules et / ou les majuscules comme vous le souhaitez. Cela s'applique à la fois à l'entrée, à la sortie et à
ROPE
. - Les espaces de fin sont facultatifs (notez que la quantité correcte d'espaces de tête est obligatoire pour que les colonnes soient correctes).
Toute quantité de nouvelles lignes de fin et / ou de début est également facultative. - Vous pouvez supposer que tous les cas de test auront la même longueur sur toutes les lignes, donc
a\naa
/[[a][a,a]]
ne serait pas une entrée valide. - Il est possible que non
ROPE
soit nécessaire, auquel cas l'entrée reste inchangée.
Règles générales:
- C'est le code-golf , donc la réponse la plus courte en octets l'emporte.
Ne laissez pas les langues de golf de code vous décourager de publier des réponses avec des langues non-golfeur de code. Essayez de trouver une réponse aussi courte que possible pour «n'importe quel» langage de programmation. - Des règles standard s'appliquent à votre réponse, vous êtes donc autorisé à utiliser STDIN / STDOUT, des fonctions / méthodes avec les paramètres appropriés et des programmes complets de type retour. Ton appel.
- Les failles par défaut sont interdites.
- Si possible, veuillez ajouter un lien avec un test pour votre code.
- Veuillez également ajouter une explication si nécessaire.
Cas de test:
As string:
Input: "abc\nbcd\nddd\neex\ngfz\nhka\nimh"
Output: "abc\nbcd\nRdd\ndeE\nefR\nOPO\ngEP\nhRE\niOR\n kO\n PP\n mE\n R\n O\n P\n E\n R\n O\n P\n E\n R\n O\n x\n P\n z\n a\n E\n R\n O\n P\n E\n R\n h"
As array-matrix:
Input: [[a,b,c],[b,c,d],[d,d,d],[e,e,x],[g,f,z],[h,k,a],[i,m,h]]
Output: [[a,b,c],[b,c,d],[R,d,d],[d,e,E],[e,f,R],[O,P,O],[g,E,P],[h,R,E],[i,O,R],[ ,k,O],[ ,P,P],[ ,m,E],[ , ,R],[ , ,O],[ , ,P],[ , ,E],[ , ,R],[ , ,O],[ , ,P],[ , ,E],[ , ,R],[ , ,O],[ , ,x],[ , ,P],[ , ,z],[ , ,a],[ , ,E],[ , ,R],[ , ,O],[ , ,P],[ , ,E],[ , ,R],[ , ,h]]
As string:
Input: "a\nz\na"
Output: "a\nR\nO\nP\nE\nR\nO\nP\nE\nR\nO\nP\nE\nR\nO\nP\nE\nR\nO\nP\nE\nR\nO\nP\nE\nz\na"
As array-matrix:
Input: [[a],[z],[a]]
Output: [[a],[R],[O],[P],[E],[R],[O],[P],[E],[R],[O],[P],[E],[R],[O],[P],[E],[R],[O],[P],[E],[R],[O],[P],[E],[z],[a]]
As string:
Input: "zz\nyy\nxx\nxx\ncc\ncc\nbb\nad"
Output: "zz\nyy\nxx\nxx\ncc\ncc\nbb\naR\n d"
As array-matrix:
Input: [[z,z],[y,y],[x,x],[x,x],[c,c],[c,c],[b,b],[a,d]]
Output: [[z,z],[y,y],[x,x],[x,x],[c,c],[c,c],[b,b],[a,R],[ ,d]]
As string:
Input: "a\nb\nc\nc\nx\nx\ny\nz"
Output: "a\nb\nc\nc\nR\nO\nP\nE\nR\nO\nP\nE\nR\nO\nP\nE\nR\nO\nP\nE\nR\nO\nP\nE\nx\nx\ny\nz"
As array-matrix:
Input: [[a],[b],[c],[c],[x],[x],[y],[z]]
Output: [[a],[b],[c],[c],[R],[O],[P],[E],[R],[O],[P],[E],[R],[O],[P],[E],[R],[O],[P],[E],[R],[O],[P],[E],[x],[x],[y],[z]]
As string:
Input: "zai\nybj\nxcq\nxcu\ncxw\ncxw\nbyr\nazw"
Output: "zai\nybj\nxcR\nxcO\ncRP\ncOE\nbPR\naEO\n Rq\n OP\n PE\n ER\n Ru\n OO\n Pw\n Ew\n Rr\n OP\n PE\n ER\n RO\n Ow\n P \n E \n x \n x \n y \n z "
As array-matrix:
Input: [[z,a,i],[y,b,j],[x,c,q],[x,c,u],[c,x,w],[c,x,w],[b,y,r],[a,z,w]]
Output: [[z,a,i],[y,b,j],[x,c,R],[x,c,O],[c,R,P],[c,O,E],[b,P,R],[a,E,O],[ ,R,q],[ ,O,P],[ ,P,E],[ ,E,R],[ ,R,u],[ ,O,O],[ ,P,w],[ ,E,w],[ ,R,r],[ ,O,P],[ ,P,E],[ ,E,R],[ ,R,O],[ ,O,w],[ ,P, ],[ ,E, ],[ ,x, ],[ ,x, ],[ ,y, ],[ ,z, ]]
As string:
Input: "asdljasdjk"
Output: "asdljasdjk"
As array-matrix:
Input: [[a,s,d,l,j,a,s,d,j,k]]
Output: [[a,s,d,l,j,a,s,d,j,k]]
As string:
Input: "asdljasdjk\nlkawdasuhq\nasjdhajksd"
Output: "asdljasdjk\nRkaOdasPhR\nOPOPEajEPO\nPEPER REP\nERERO ORE\nROROh POR\nOPOP EPq\nPEPE ROd\nERER OR \nRsRO PO \nO jP EP \nl w RE \na d Os \n P \n E \n R \n O \n u \n k "
As array-matrix:
Input: [[a,s,d,l,j,a,s,d,j,k],[l,k,a,w,d,a,s,u,h,q],[a,s,j,d,h,a,j,k,s,d]]
Output: [[a,s,d,l,j,a,s,d,j,k],[R,k,a,O,d,a,s,P,h,R],[O,P,O,P,E,a,j,E,P,O],[P,E,P,E,R, , ,R,E,P],[E,R,E,R,O, , ,O,R,E],[R,O,R,O,h, , ,P,O,R],[O,P,O,P, , , ,E,P,q],[P,E,P,E, , , ,R,O,d],[E,R,E,R, , , ,O,R, ],[R,s,R,O, , , ,P,O, ],[O, ,j,P, , , ,E,P, ],[l, , ,w, , , ,R,E, ],[a, , ,d, , , ,O,s, ],[ , , , , , , ,P, , ],[ , , , , , , ,E, , ],[ , , , , , , ,R, , ],[ , , , , , , ,O, , ],[ , , , , , , ,u, , ],[ , , , , , , ,k, , ]]
As string:
Input: "re\nop\npo\ner"
Output: "re\noR\npO\neP\n E\n R\n O\n P\n E\n R\n O\n p\n o\n P\n E\n r"
As array-matrix:
Input: [[r,e],[o,p],[p,o],[e,r]]
Output: [[r,e],[o,R],[p,O],[e,P],[ ,E],[ ,R],[ ,O],[ ,P],[ ,E],[ ,R],[ ,O],[ ,p],[ ,o],[ ,P],[ ,E],[ ,r]]
hope
? L'espoir est plus fort que la corde. (C'est une mauvaise tentative d'humour, pas une vraie question)tape
défi est beaucoup plus facile (à mon humble avis). Et oui, vous pouvez sortir un tableau de colonnes.Réponses:
Gelée , 21 octets
Essayez-le en ligne!
Explication
-1 octet grâce à M. Xcoder
-2 octets grâce à Erik l'Outgolfer
la source
rope
each
-ing auto-chaque chose: P05AB1E ,
383725 octets10 octets enregistrés avec les suggestions de Magic Octopus Urn et un autre octet changeant le format de sortie.
Génère une liste de chaînes.
Pied de page jolis imprimés.
Essayez-le en ligne!
Explication
la source
Tape
nous avons commencé plus à chaque fois que nous devrions insérer,aTAdTAg
. Maintenant, avec la corde, nous continuons là où nous nous sommes arrêtés sur la corde, doncaROdPEg
.pop a,b,c | push c[b..a]
type dealio?Python 2 ,
197194 octetsEssayez-le en ligne!
la source
Rubis , 119 octets
Essayez-le en ligne!
Oui, c'est beaucoup plus difficile que le défi "TAPE". J'ai essayé de construire sur ma solution à cette tâche, mais cela a quelques rebondissements supplémentaires.
Prend l'entrée comme un tableau de caractères par colonne, renvoie un tableau de chaînes, également au format colonne. Le code dans le pied de page du lien TIO effectue le pré et le post-traitement des données d'E / S afin que nous puissions fournir une chaîne plus facile à gérer, puis imprimer le résultat correctement.
Explication
Le code effectue deux passages dans le tableau d'entrée.
Dans la première passe, nous appliquons l'
reduce
opération qui remplit l'espace entre les caractères avec la quantité requise de CORDE (y.ord-x[-1].ord-1
caractères, si positifs). Nous devons également garder une trace de la longueur de CORDE utilisée (l
).Contrairement au cas TAPE, nous ne pouvons pas simplement utiliser
rjust
pour le remplissage, car il partirait toujours du caractère R. Au lieu de cela, prendre une tranche appropriée d'une longue chaîne "ROPEROPE ..." semble plus léger en nombre d'octets, d'autant plus que nous devons également mettre à jourl
à la volée.Dans la deuxième passe, nous avons justifié à gauche les chaînes résultantes avec des espaces pour correspondre à la longueur de la plus longue d'entre elles. Puisque nous avons besoin des résultats complets de l'itération précédente ici, la première passe modifie le tableau en place (donc
map!
pasmap
).la source
-1 octets grâce à Kevin Cruijssen
-70 octets grâce à Jonathan Frech , wow .......
Python 3 , 203 octets
Essayez-le en ligne!
la source
ord(t)-ord(p)-1
peut êtreord(t)+~ord(p)
de sauvegarder à nouveau un octet. ;) Voici l'astuce pertinente.+=[o]
->+=o,
.p!=' '
est également équivalent àp>' '
.Python 3 , 182 octets
Essayez-le en ligne!
La fonction prend son entrée comme une liste (ou un itérable) de chaînes et renvoie également un générateur pour une séquence de chaînes, ce qui est presque aussi bon qu'une liste.
Non golfé
… Pour une meilleure lisibilité des générateurs imbriqués.
Explication
La fonction permet
zip
de transposer la liste des lignes entrantes dans un générateur de colonnes.Le générateur le plus intérieur regarde des paires de personnages adjacents et…
… Découpe la quantité requise de CORDE continue d'un
cycle
générateur (infini) .Après de grandes quantités de chaînes jointes à partir de générateurs, la fonction retranspose la liste des colonnes à un générateur ou à des lignes et remplit les entrées manquantes avec
zip_longest
.la source
Stax , 25 octets
Exécutez et déboguez en ligne!
L'entrée et la sortie sont données sous forme de listes séparées par des espaces. L'entrée est la liste des lignes selon les besoins, la sortie est la liste des colonnes comme autorisé.
Explication
Utilise la version décompressée pour expliquer.
la source