Dadas dos cadenas, genera una tercera cadena que no es igual a ninguna de las dos entradas, pero que tiene la misma longitud (en caracteres) que cualquiera de las entradas. Se garantiza que haya al menos una salida válida.
Casos de prueba
Los casos de prueba se citan para mostrar que son cadenas. Las salidas son una de las muchas posibles.
input, input -> output
"test", "test" -> "tttt"
"do", "don't" -> "dnut_"
"ye s", "yes" -> "fals"
"yes", "yes" -> "noo"
"maybe", "mayue" -> "false"
"false", "false" -> "truee"
"false", "true" -> "fatr"
"1", "" -> "0"
"", "t" -> "s"
"", "abcabc" -> "testst"
"abcdefghijklmnopqrstuvwxyz", "aaaaaaaaaaaaaaaaaaaaaaaaaa" -> "zbcdefghijklmnopqrstuvwxya"
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" -> "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
Reglas
- Puede elegir su dominio de entrada, pero debe estar compuesto al menos por ASCII imprimible, y su dominio de salida debe ser el mismo que su dominio de entrada.
- Las longitudes de entrada pueden ser iguales o diferentes.
- La salida debe ser válida con probabilidad 1; es decir, puede generar cadenas aleatorias hasta que una sea válida (y en teoría podría tener un bucle infinito), pero no puede simplemente generar una cadena aleatoria y esperar que sea válida. Tenga en cuenta que esto significa que su salida no necesita ser determinista.
- Se permiten nuevas líneas finales automáticas, pero no cuentan para la longitud de la salida.
- Debido a preguntas sobre errores de memoria, debe funcionar dentro de los 60 segundos hasta las longitudes de entrada de
6
. Una respuesta que funciona para eso y teóricamente funciona para cadenas más largas está bien, pero algo que los errores de memoria en la computadora moderna para la longitud de entrada4
no son válidos.
Este es el código de golf , por lo que la respuesta más corta en bytes gana.
Respuestas:
05AB1E ,
87 bytesUtiliza la codificación 05AB1E . Pruébalo en línea!
fuente
Haskell, 43 bytes
Toma la cadena max (lexicográficamente más tarde), que sabemos que no está vacía; reemplaza todos los caracteres con uno de "a", "b" y "c" usando
<$
; y devuelve el primero que no es ninguna de las entradas. Creo que esto es similar a la respuesta de Neil's Charcoal y / o la respuesta de geokavel CJam .(He acechado por un tiempo, pero esta es la primera vez que respondo en este sitio; ¡Hola!)
fuente
Brainfuck, 97 bytes
Ejecute el código en línea (tenga en cuenta que "memoria dinámica" debe seleccionarse en la parte inferior derecha)
Desafío impresionante! Pensé que sería trivial, pero terminó siendo realmente difícil. Sigo volviendo a ello porque siento que debería haber una solución elegante de BF de 20 o más bytes. En este punto, estoy bastante feliz de que (aparentemente) lo hice funcionar en BF.
La entrada se toma como
str1
+\0
+str2
, donde las cadenas son caracteres consecutivos distintos de cero de 1 byte.Las devoluciones
(first str1 + first str2) or (first str1 + 1) or 2
. Este algoritmo fue pensado por el brillante @ ØrjanJohansen, (presumiblemente) basado en mi (roto) original.Comentado:
fuente
a=2
,b=1
. Necesita sumar en lugar de restar.S
problema vacío agregando>
al principio y luego haciendo[<]>
en el byte más a la izquierda deS
- si eso no es cero, no hace nada, de lo contrario cambia las cadenas.b
. Pero noa
.!= a
solo, si imprimo enS/0, S/1, ...
lugar deS/0, F/1, ...
hacerlo debería funcionar.Jalea , 8 bytes
Pruébalo en línea!
¿Cómo?
fuente
B
TIOX
oẊ
allí ...Python 3 ,
6247575451 bytesEditar: - 5 bytes gracias a @ Mr.Xcoder
Editar: +10 bytes para corregir un error
Editar: -3 bytes gracias a @betaveros
Editar: -3 bytes usando max en lugar de pop
Pruébalo en línea!
fuente
{"a","b","c"}
==>{*"abc"}
( 57 bytes )(x[1:]or y[1:])
==>max(x,y)[1:]
?(x or y)[1:]
, creo que solo necesitas evitar la cadena vacía.{*"abc"}
en{*`id`}
...*len(x or y)
lugar de+max(x,y)[1:]
.Carbón de leña , 22 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Genera todas las cadenas de caracteres en mayúscula repetidas a la longitud de la entrada más larga y sobreimprime todas aquellas que no aparecen en la entrada. En otras palabras, la salida es normalmente a
ZZZ...
menos que sea una de las entradas, en cuyo caso es aYYY...
menos que sea la otra entrada, en cuyo caso esXXX...
.fuente
Mathematica, 111 bytes
pruébelo en línea (pegue el código con ctrl + v, coloque la entrada al final y presione shift + enter)
entrada
Gracias @ No hay un árbol para comprobar y jugar golf -21 bytes
fuente
Perl 6 ,
3830 bytesPruébalo en línea!
Codeblock anónimo que toma la entrada como una lista de dos cadenas y devuelve el primer número
1111...
con una cantidad no vacía de 1s que no está en la entrada.Explicación:
fuente
long long
desafortunadamente se usa .Zsh ,
51473736 bytes-4 bytes utilizando incorporado array
argv
, -10 bytes mediante el uso de eliminación de prefijo yRC_EXPAND_PARAM
, -1 byte por inlining la expansión de llaves.Pruébalo en línea!
Primero, este fue un desafío increíble, revisé un montón de ideas antes de aterrizar en este.
@
y*
no son identificadores, de modo${ :|@}
y${ :|*}
no trabajo, por lo tanto, el uso de${ :|argv}
Zsh ,
4847 bytes *Pruébalo en línea!
Método completamente nuevo, cortesía del envío Perl 6 de JoKing, pero no funciona en cadenas grandes (n> 20) debido a restricciones de tamaño entero.
$@[(I)$i]
es una búsqueda de matriz inversa al índice más grande, generará cero (falso en la expansión aritmética) si $ i no se encuentra en los parámetros de la línea de comando.fuente
MATL , 12 bytes
La entrada es un conjunto de celdas de cadenas que contienen caracteres ASCII imprimibles. La salida se forma a partir de las letras
'ABC'
y, por lo tanto, pertenece al dominio de entrada.Pruébalo en línea!
Explicación
La salida es tan larga como la cadena de entrada más larga. Su n carácter -ésimo es la primera carta del
'ABC'
que es diferente de la n caracter -ésimo de ambas cadenas de entrada.fuente
Haskell,
565248 bytesPruébalo en línea!
Sustituir el primer carácter de la máxima de las dos cadenas de entrada con
a
,b
yc
y recoger la primera que es diferente de ambas cadenas de entrada.fuente
Ruby , 53 bytes
Pruébalo en línea!
Básicamente genera las cadenas
a...a
,b...b
yc...c
y selecciona el primero que no está en la entrada.fuente
ES6, 54 bytes
fuente
Pyth, 7
8bytes1 byte gracias a Jakube
Banco de pruebas
Usamos
.T
transposición de preservación de longitud, en lugar deC
transposición truncada, para que funcione en entradas donde una cadena está vacía.Dadas dos cadenas como una tupla, las transponemos (
.T
), luego mapeamos el par de caracteres resultante o un solo carácter restando los caracteres del alfabeto de minúsculas con-LG
, luego transponemos la lista resultante de cadenas de caracteres no utilizados conC
, luego regresamos la primera de esas cadenas conh
. Consiste en la primera letra alfabéticamente que no está en ninguna cadena, para cada posición.fuente
Java (OpenJDK 8) ,
10073 bytes-27 bytes gracias al toque mágico de @ Nevay! :)
Pruébalo en línea!
Dominio de entrada = ASCII imprimible + punto de código 127.
fuente
Ruby, 56 bytes
fuente
Pyth ,
2322 bytesPruébalo aquí!
Pyth , 22 bytes
¡Banco de pruebas!
Explicación
fuente
Perl 5,
8279 bytesToma la entrada como dos argumentos separados y devuelve la tercera cadena.
La subrutina intenta producir una cadena muy similar a la primera cadena pero con el primer no
z
carácter reemplazado por az
. Luego se ocupa de los casos de esquina reemplazando el primer carácter cony
ox
, según sea necesario, si encuentra que una de las entradas era de hecho una secuencia de todosz
.fuente
Perl 5 , 68 bytes
Explicación:
Comenzar desde "a" s era evitar incrementar hasta el punto donde Perl alarga la cadena; con solo dos cadenas para evitar ser el mismo, no podría desbordarse.
Ejecutar con:
fuente
C (gcc) ,
70sesenta y cinco736761 bytesLa función necesita que las cadenas proporcionadas sean mutables (es decir, matrices o asignadas dinámicamente).
Pruébalo en línea!
Funciona para la gama estándar ASCII
Explicación:
fuente
*a==255
y*b==0
?R,
8967 bytes@Giuseppe guardó 9 bytes, @ user2390246 guardó 13 bytes
función
manifestación
fuente
x
yy
dentro del mismosubstr
comando. Además, las llaves noreturn
son necesarias:function(x,y)sub("^.",letters[!letters%in%substr(c(x,y),1,1)][1],x)
return
esto ya que esta es una función y los frenos ya que es un revestimiento.f("","1")
rendimientos""
, que es igual a la primera entrada ... tal vez esto debería agregarse como otro caso de pruebaJava 8, 119 bytes
Lambda (al curry) de
String
a lambda deString
aString
. Asignar aFunction<String, Function<String, String>>
.Pruébalo en línea
Lambda sin golf
Esta solución gira caracteres ASCII aleatorios en la cadena más larga hasta que se cumplan las condiciones requeridas. Las entradas son UTF-8 y las salidas son ASCII.
No conozco los detalles arenosos de Unicode, pero me parece plausible que esta solución pueda fallar cuando un anexo se
char
une al punto de código anterior para formar una sola unidad de código. Si alguien que sabe más sobre esto puede verificar esto, cambiaré el dominio de entrada a ASCII.Java 8, 126 bytes
Mismo tipo que el anterior.
Pruébalo en línea
Lambda sin golf
Esto incrementa el primer byte de la cadena más larga, envolviendo dentro de ASCII, hasta que se cumplan las condiciones requeridas. Las entradas y salidas son cadenas ASCII.
fuente
APL (Dyalog Unicode) , SBCS de 11 bytes
Programa completo, toma la entrada como una lista anidada de 2 elementos.
Pruébalo en línea!
fuente
Bash,
115.. 77 bytesReemplaza el primer carácter de la primera cadena de entrada (no vacía) con 1,2,3 hasta que no se encuentre coincidencia con ninguna de las entradas. Pruébalo en línea!
-9, -12, -9, -8 bytes, todo gracias a la función Gamma
(una gran mejora sobre el original ... )
fuente
=
y||
en la última línea, y usar${x:-empty_fallback}
para eliminar el ternario de inicio. Además, necesita comillas en el eco final para el caso de espacios finales. TIO obligatorioshift
, lo tengo para vincular mi método en dos métodos diferentes .@($1|$2)
coincidencia de patronesPerl 5 , 79 + 1 (-p) = 80 bytes
Pruébalo en línea!
fuente
Japt , 17 bytes
Repite las letras
A-Z
a la longitud de la entrada más larga, elimina los valores en la entrada y obtiene el primer elemento en la matriz.Pruébalo en línea!
Solución anterior, 18 bytes
Pruébalo en línea!
Elige un carácter aleatorio del alfabeto y lo repite a la longitud de la cadena de entrada más larga, hasta que no esté presente en la entrada.
fuente
["abcdefghijklmnopqrstuvwxyz", "AAAAAAAAAAAAAAAAAAAAAAAAAA"]
. Al ejecutarlo varias veces, regresó"AAAAAAAAAAAAAAAAAAAAAAAAAA"
(al igual que mi respuesta de Pyth, hasta que lo solucioné)Ì
debería funcionar en lugar deg1
un ahorro de 2 bytes (en una matriz de 2 elementosg1
=gJ
) pero parece haber un error con elÌ
uso;
.J
ya no se-1
debe al;
cambio a,
. Es por eso que solía1
en primer lugar.Python 3,
7473 bytes-1 byte gracias a Step Hen
Imprime el entero más bajo con la misma longitud que la primera de las entradas que tiene una longitud distinta de cero.
fuente
i
un parámetro de la función por defecto:def f(x,y,i=1):
. Creo que puede guardar otro byte conwhile10*i
pero no estoy seguro.while i*10<10**len(x or y)or str(i)in x+y
conwhile i<10**~-len(x or y)or str(i)in x+y
( 72 bytes )f=lambda x,y,i=1:(i<10**~-len(x or y)or str(i)in x+y)and f(x,y,i*2)or i
( 71 bytes )Python 2, 77 bytes
Creo que tiene algo de potencial. La idea es que agrega 1 al primer carácter en la primera cadena, luego comprueba si el primer carácter de la otra entrada es el mismo.
** Nota, ^ no maneja cadenas de longitud 0, por lo que realmente no funciona con esta longitud.
Aquí hay una solución súper larga que funciona con longitud 0
146 bytes
Cualquier mejora sería apreciada!
fuente
CJam,
313023 bytesToma ASCII imprimible como entrada. Emite una cadena de 0, 1 o 2 que tiene la misma longitud que una de las cadenas de entrada. ¡La lógica es que uno de esos no puede ser ninguna de las cadenas de entrada!
Pruébalo en línea
fuente
:+!
.C # (Mono) , 94 bytes
Pruébalo en línea!
fuente