introduction
Disons que S 1 = a...b
et S 2 = ..c..
. Si nous les plaçons les uns sur les autres, nous obtenons:
a...b
..c..
Nous fusionnons les deux chaînes, avec le .
caractère liquide (qui peut se chevaucher). Nous obtenons ceci:
a.c.b
Si l'une des chaînes est plus longue que l'autre, nous appliquons simplement le même algorithme:
a.....b
..c..
becomes:
a.c...b
et
a.....b
..c.......
becomes:
a.c...b...
Si deux caractères entrent en collision, nous utilisons simplement le caractère du bas, par exemple
a..b
...c
becomes:
a..c
La tâche
Étant donné deux chaînes non vides, affichez la chaîne fusionnée . Remarque , vous pouvez supposer que l'entrée ne contient que des points et des lettres minuscules (ou des lettres majuscules si cela est plus pratique).
Cas de test
Input Output
a....b ..c... a.c..b
aaaaaa bbbbbb bbbbbb
ab.ab. b.b.b. bbbab.
a.......b c c.......b
C'est du code-golf , donc la soumission avec le moins d'octets gagne!
a.....b
..c.......
possible? Quelle est la sortie alors?a.c...b...
.Réponses:
Gelée , 5 octets
Entrée via des arguments de ligne de commande.
Essayez-le en ligne!
Explication
Ceci est un port direct de ma réponse CJam (voir cela pour une explication pourquoi cela fonctionne):
la source
CJam, 9 octets
Testez-le ici.
Explication
Fait usage du fait que
'.' < upper case letters < lower case letters
. De cette façon, lorsque vous prenez le maximum par élément entre deux chaînes, toute lettre remplace a.
, mais nous pouvons faire qu'une lettre de la deuxième entrée remplace une lettre de la première si nous majuscules la première. Déroutant? Voici un des cas de test à titre d'exemple:Convertissez d'abord en majuscules:
Prenez le maximum par élément:
Convertir en minuscules:
Et voici comment le code fait cela:
la source
eu
/el
truc!Javascript ES6,
5255 caractèresTester
la source
f('c', 'a....b')
Pyth, 11
Essayez-le en ligne ou exécutez la suite de tests
la source
Sérieusement, 10 octets
Essayez-le en ligne!
Utilise la même stratégie que la réponse CJam de Martin
Explication:
la source
Octave, 50 octets
la source
!=
par>
Haskell,
4342 octetsExemple d'utilisation:
"ab.ab." # "b.b.b."
->"bbbab."
.Comment ça fonctionne:
si les deux listes ne sont pas vides, choisissez la tête de la 1ère liste si la tête de la 2ème liste est
"."
, sinon choisissez la tête de la deuxième liste. Ajoutez un appel récursif avec la queue des listes.si au moins une liste est vide, ajoutez les deux listes.
Modifier: @Lynn a enregistré un octet. Merci!
la source
c<'a'
pour enregistrer un octet.Python 2, 47 octets
la source
Julia, 101 octets
Il s'agit d'une fonction qui accepte deux chaînes et renvoie une chaîne.
Nous calculons
m
la longueur maximale des deux entrées, puis définissons une fonctionr
qui remplit à droite son entrée avec.
s à longueurm
et la stockons comme argument de fonction. Nous avons ensuitezip
les entrées capitonnées à droite et vérifions le minimum (tel que défini par le code ASCII) de chaque paire. Si c'est le cas.
, nous utilisons le caractère qui a le plus gros code, sinon nous utilisons celui qui provient de la deuxième entrée. Le tableau résultant estjoin
édité dans une chaîne et renvoyé.la source
C,
10689 octetsTestez en direct sur ideone .
la source
Rétine , 55
La ligne 5 est un espace unique. La ligne 6 est une ligne vide (sans nouvelle ligne de fin).
Essayez-le en ligne.
J'ai commencé celui-ci dans GNU sed, (avec l'option -r). Port simple vers Retina une fois que j'aurai compris les expressions régulières. La version sed est:
la source
a..k.f....b c...f.g...g. => .c..kffg...g
Python 2, 70 octets
Essayez-le ici!
D'abord, nous créons zip les deux chaînes dans une seule liste. Si la deuxième chaîne est plus longue que la première, elle est complétée par
None
(map(None,x,y)
fait cela).Ensuite, nous parcourons cette liste en
j
étant le caractère de la première chaîne etk
celui de la deuxième chaîne. On choisitk
si ce n'est pas un point et sinonj
.Cela pourrait être de 61 octets si je pouvais produire le résultat sous forme de liste de caractères au lieu d'une chaîne.
la source
Perl, 48 + 3 = 51 octets
Bah ne peut pas trouver de solution plus courte. (Même approche que la réponse JavaScript de @ Qwertiy).
Requiert
-pl
et prend des contributions destdin
et-i
la source
$_^=$^I^$^I;s/\.|\0/substr$^I,pos,1or$&/ge
PHP> = 7.1, 58 octets
Version en ligne
la source
q / kdb +,
4340 octetsSolution:
Exemple:
Explication:
Notes: Je profite de "Étant donné deux chaînes non vides " et je suppose que les entrées sont des chaînes. Dans kdb
"c"
est un atome,(),"c"
est une chaîne, sinon il faut ajouter 6 octets au score, car nous ne pouvons pas utiliser$
pour remplir un atome ...la source