Contribution:
Deux chaînes (REMARQUE: l'ordre d'entrée est important).
Sortie:
Les deux mots / phrases commencent sur des lignes avec une ligne vide entre eux. Ils «marchent» horizontalement «côte à côte». Mais quand ils ont le même personnage à la même position, ils se croisent, puis continuent de marcher «côte à côte».
Vous confondez-vous dire? Donnons un exemple:
Entrée: Words crossing over
& Ducks quacking
:
Word quack n
s i g
Duck cross n over
Excusez la mauvaise peinture MS ..
Règles du défi:
- Nous revenons toujours en premier en marchant en ligne droite après avoir `` traversé '' avant de pouvoir traverser à nouveau (voir cas de test ci-dessus {1} - où
ing
est égal, mais après avoir traverséi
, nous devons d'abord revenir en arrière marcher droit (ignorant ainsin
), avant de pouvoir croiser à nouveaug
). - Les entrées peuvent être de longueur différente, auquel cas la plus longue continue de marcher en ligne droite (voir les cas de test 1, 2, 4 et 6).
- Les deux entrées peuvent être identiques (voir le cas de test 3).
- Les entrées ne contiennent aucun onglet ni nouvelle ligne.
- Les espaces sont ignorés en tant que caractères identiques (comme un cas de bord) , auquel cas le caractère suivant (non-espace) après cela - le cas échéant - se croise à la place (voir les cas de test 3, 5 et 6).
- Les entrées ne peuvent avoir aucun caractère adjacent (non-espace) sur la même position, auquel cas les deux marchent simplement en ligne droite horizontalement (voir les cas de test 2).
- Même si le premier caractère est égal, nous commençons toujours par séparer deux lignes (voir cas de test 3 & 6).
- Les espaces de fin et une seule nouvelle ligne de fin sont facultatifs.
- Vous pouvez supposer que les entrées ne contiendront que des caractères ASCII imprimables (nouvelles lignes et tabulations exclues).
- Les entrées sont sensibles à la casse, de sorte que
A
eta
ne sont pas égaux, et ne seront pas traverser (voir le cas du test 7). - Les deux longueurs d'entrée seront toujours au moins égales à 2.
- L'entrée et la sortie peuvent être dans n'importe quel format raisonnable. Peut être une chaîne unique avec des nouvelles lignes; un tableau / liste de chaînes; imprimé sur STDOUT; Tableau 2D de caractères; etc.
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 autres que le golf 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, fonctions / méthode 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:
1. Input: "Words crossing over" & "Ducks quacking"
1. Output:
Word quack n
s i g
Duck cross n over
2. Input: "bananas" & "ananas"
2. Output:
bananas
ananas
3. Input: "I see my twin!" & "I see my twin!"
3. Output:
I e y w n
s e m t i !
I e y w n
4. Input: "Is the weather nice?" & "Not really, no.."
4. Output:
Is th ally, no..
e
Not r weather nice?
5. Input: "Codegolf & Programming Puzzles" & "The golfer might solve puzzles"
5. Output:
Code o f & Programming P z l s
g l u z e
The o fer might solve p z l s
6. Input: "Can you turn the lights off?" & "Can you try to solve this?"
6. Output:
C n o urn the ve s off?
a y u t l t
C n o ry to so igh his?
7. Input: "one Ampere" & "two apples"
7. Output:
one Am les
p
two ap ere
8. Input: "Words crossing" & "Words Quacking"
8. Output:
W r s cross n
o d i g
W r s Quack n
Fusain , 69 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Explication:
la source
Python 2 ,
217210 octets-1 octet grâce à officialaimm
Essayez-le en ligne!
la source
s=' '
Haskell,
142138 octetsEssayez-le en ligne!
Comment ça marche:
la source
g 0
. Concernant le mot manquant: "a" comme dans "variable nommée a", mais c'est vraiment déroutant, donc je l'ai reformulé.a
. :) J'utilise personnellementa
dans mes explications lors de l'indication des variables, bien que généralement c'est assez clair sans. Merci pour la clarification, et je m'attendais en effet à une correction de bogue assez simple.'
étant remplacé par un back-tick) dans un commentaire, c'est ce que je voulais dire .. (Donc j'utilise des back-ticks autour des variables, à l'intérieur de mes blocs de code.)JavaScript (ES6), 112 octets
Non golfé:
Cas de test:
Afficher l'extrait de code
la source
APL (Dyalog) , 50 octets
Essayez-le en ligne!
⍵⍀⍨¯1*⍳4
donne la matrice:(les points représentent des espaces). Ses colonnes seront pivotées de différentes quantités, de sorte que les trois premières lignes finissent par ressembler au résultat souhaité - d'où
3↑
le début du début. Le reste de l'algorithme calcule les quantités de rotation.Dans les parens:
3↑⍵
crée une matrice commeet
2=⌿
compare ses lignes deux à deux, c'est-à-dire la première chaîne par rapport à la deuxième chaîne et la deuxième chaîne par rapport à la ligne tous espaces.Nous voulons savoir où le premier est vrai (1) et le second faux (0), donc nous réduisons avec
>⌿
pour obtenir un vecteur booléen nomméa
.Maintenant, dans chaque tronçon de 1 s, nous devons mettre à zéro les occurrences paires, car deux torsions ne peuvent pas se produire l'une à côté de l'autre. On obtient d'abord une numérotation comme:
par, en gros, en remplaçant
a[i]
para[i]*max(a[i-1]+1, a[i])
jusqu'à ce que le résultat se stabilise:,{⍵⌈a×1+1,¯1↓⍵}⍣≡
et nous prenons ce mod 2:2|
Nous savons maintenant où les rebondissements se produiront. Nous copions chacun
1
à gauche -2∨/
(par paire "ou"):et calculer les sommes partielles -
+\
Cela nous donne les montants de rotation des colonnes dont nous avions besoin au début. Modulo 4 est implicite.
la source
Perl 5 , 211 octets
Essayez-le en ligne!
# Perl 5 , 234 octetscorrection du bug signalé par Kevin
Essayez-le en ligne!
la source
"Can you turn the lights off?" & "Can you try to solve this?"
il semble que j'obtienne une erreur:Modification of non-creatable array value attempted, subscript -1 at .code.tio line 1, <> line 2.
est-ce un bug ou est-ce que je fais quelque chose de incorrect? Voici le TIO.05AB1E , 31 octets
Port de @ETHproductions Japt s » réponse , mais avec deux différences mineures:
1) Je prends l'entrée comme une liste 2D de caractères au lieu de la liste des chaînes.
2) Le
counter_variable
dans 05AB1E est 0 par défaut, au lieu de 11 (ou 3) commeB
dans Japt, donc leNĀ
est ajouté comme vérification supplémentaire à l'intérieur de la carte (et je tourne vers la droite au lieu de la gauche).Essayez-le en ligne ou vérifiez tous les cas de test .
Explication:
la source