Introducción
Digamos que S 1 = a...b
y S 2 = ..c..
. Si los colocamos uno encima del otro, obtenemos:
a...b
..c..
Fusionamos ambas cadenas, con el .
carácter de líquido (que puede superponerse). Obtenemos esto:
a.c.b
Si una de las cadenas es más larga que la otra, solo aplicamos el mismo algoritmo:
a.....b
..c..
becomes:
a.c...b
y
a.....b
..c.......
becomes:
a.c...b...
Si dos caracteres chocan, solo usamos el carácter inferior, por ejemplo
a..b
...c
becomes:
a..c
La tarea
Dadas dos cadenas no vacías, genera la cadena combinada . Tenga en cuenta que puede suponer que la entrada solo contiene puntos y letras minúsculas (o letras mayúsculas si es más conveniente).
Casos de prueba
Input Output
a....b ..c... a.c..b
aaaaaa bbbbbb bbbbbb
ab.ab. b.b.b. bbbab.
a.......b c c.......b
Este es el código de golf , por lo que gana el envío con la menor cantidad de bytes.
a.....b
..c.......
posible la entrada ? ¿Cuál es el resultado entonces?a.c...b...
.Respuestas:
Jalea , 5 bytes
Entrada a través de argumentos de línea de comandos.
Pruébalo en línea!
Explicación
Este es un puerto directo de mi respuesta de CJam (vea eso para obtener una explicación de por qué esto funciona):
fuente
CJam, 9 bytes
Pruébalo aquí.
Explicación
Hace uso del hecho de que
'.' < upper case letters < lower case letters
. De esta manera, cuando se toma el máximo de elementos entre dos cadenas, cualquier letra anula a.
, pero podemos hacer que una letra de la segunda entrada anule una letra de la primera si escribimos en mayúscula la primera. ¿Confuso? Este es uno de los casos de prueba como ejemplo:Convertir primero a mayúsculas:
Tome el elemento máximo sabio:
Convertir de nuevo a minúsculas:
Y así es como el código hace eso:
fuente
eu
/el
truco!Javascript ES6,
5255 caracteresPrueba
fuente
f('c', 'a....b')
Pyth, 11
Pruébelo en línea o ejecute Test Suite
fuente
En serio, 10 bytes
Pruébalo en línea!
Utiliza la misma estrategia que la respuesta de Martin CJam
Explicación:
fuente
Octava, 50 bytes
fuente
!=
por>
Haskell,
4342 bytesEjemplo de uso:
"ab.ab." # "b.b.b."
->"bbbab."
.Cómo funciona:
si ambas listas no están vacías, elija el encabezado de la primera lista si el encabezado de la segunda lista lo está
"."
, de lo contrario, elija el encabezado de la segunda lista. Agregue una llamada recursiva con las colas de las listas.si al menos una lista está vacía, agregue ambas listas.
Editar: @Lynn guardó un byte. ¡Gracias!
fuente
c<'a'
para guardar un byte.Python 2, 47 bytes
fuente
Julia, 101 bytes
Esta es una función que acepta dos cadenas y devuelve una cadena.
Calculamos
m
como la longitud máxima de las dos entradas, luego definimos una funciónr
que rellena correctamente su entrada con.
s a la longitudm
y la almacenamos como un argumento de función. Luego,zip
ingresamos las entradas acolchadas a la derecha y verificamos el mínimo (según lo definido por el código ASCII) de cada par. Si es un.
, usamos el carácter que tenga el código más grande, de lo contrario, usamos el que provenga de la segunda entrada. La matriz resultante sejoin
edita en una cadena y se devuelve.fuente
C,
10689 bytesPrueba en vivo en ideone .
fuente
Retina , 55
La línea 5 es un espacio único. La línea 6 es una línea vacía (sin nueva línea final).
Pruébalo en línea.
Comencé este en GNU sed, (con la opción -r). Puerto directo a Retina una vez que resolví las expresiones regulares. La versión sed es:
fuente
a..k.f....b c...f.g...g. => .c..kffg...g
Python 2, 70 bytes
Pruébalo aquí!
Primero creamos zip ambas cadenas en una lista. Si la segunda cadena es más larga que la primera, se rellena con
None
(map(None,x,y)
hace eso).Luego iteramos sobre esta lista con
j
el carácter de la primera cadena yk
el de la segunda cadena. Elegimosk
si no es un punto y de lo contrarioj
.Esto podría ser de 61 bytes si pudiera generar el resultado como una lista de caracteres en lugar de una cadena.
fuente
Perl, 48 + 3 = 51 bytes
Bah no puede encontrar una solución más corta. (El mismo enfoque que la respuesta de JavaScript de @ Qwertiy).
Requiere
-pl
y toma entrada destdin
y-i
fuente
$_^=$^I^$^I;s/\.|\0/substr$^I,pos,1or$&/ge
PHP> = 7.1, 58 bytes
Versión en línea
fuente
q / kdb +,
4340 bytesSolución:
Ejemplo:
Explicación:
Notas: Estoy aprovechando "Dadas dos cadenas no vacías " y suponiendo que las entradas son cadenas. En kdb
"c"
es un átomo,(),"c"
es una cadena, de lo contrario es necesario agregar 6 bytes a la puntuación, ya que no podemos usar$
para rellenar un átomo ...fuente