Dada una cadena l
, encuentre todas las subcadenas palindrómicas p
de l
(incluidas las cadenas duplicadas y de un solo carácter). A continuación, reorganice todas las subcadenas en p
un palíndromo válido (puede haber múltiples respuestas correctas). Si no es posible reorganizar p
en un solo palíndromo, su programa puede tener un comportamiento indefinido (error, desbordamiento de pila, salir, colgar / asesinato prematuro de John Dvorak, etc.)
Ejemplos
Casos de prueba válidos
l = anaa
p = ['a', 'n', 'a', 'a', 'aa', 'ana']
result = anaaaaana or aanaaanaa or aaananaaa
l = 1213235
p = ['1', '2', '1', '3', '2', '3', '5', '121', '323']
result = 1213235323121
l = racecar
p = ['r', 'a', 'c', 'e', 'c', 'a', 'r', 'cec', 'aceca', 'racecar']
result = racecarcecaacecracecar (there are others)
l = 11233
p = ['1', '11', '1', '2', '3', '33', '3']
result = 113323311 or 331121133
l = abbccdd
p = ['a', 'b', 'bb', 'b', 'c', 'cc', 'c', 'd', 'dd', 'd']
result = bbccddaddccbb or ccbbddaddbbcc or (etc...)
l = a
p = ['a']
result = a
Casos de prueba inválidos (no es posible)
l = 123456789
p = ['1', '2', '3', '4', '5', '6', '7', '8', '9']
result = <not possible, behavior undefined>
l = hjjkl
p = ['h', 'j', 'jj', 'j', 'k', 'l']
result = <not possible, behavior undefined>
l = xjmjj
p = ['x', 'j', 'jmj', 'm', 'j', 'jj', 'j']
result = <not possible, behavior undefined>
Reglas
- Si la palabra de entrada es un palíndromo, siempre será válida como entrada.
- Solo debe devolverse una subcadena, la que elija es arbitraria siempre que sea válida.
- Si la entrada no tiene salida viable, su código puede tener un comportamiento indefinido.
- Las entradas solo contendrán caracteres imprimibles en ASCII entre
0x20-0x7E
. - Este es el código de golf , el conteo de bytes más bajo es el ganador.
code-golf
array-manipulation
permutations
palindrome
Urna de pulpo mágico
fuente
fuente
"abbccdd"
es incorrecto: las dos últimas letras deben ser"bb"
, no"dd"
.Respuestas:
Brachylog , 10 bytes
Pruébalo en línea!
Falla (es decir, impresiones
false.
) si no es posible.Explicación
fuente
Coco , 140 bytes
Pruébalo en línea!
fuente
JavaScript (ES6), 193 bytes
"¡Mira mamá, no hay permutación incorporada!" (Entonces sí ... es largo ...)
Devuelve una matriz vacía si no hay solución.
Manifestación
Mostrar fragmento de código
¿Cómo?
Dividamos el código en partes más pequeñas.
Definimos P () , una función que devuelve s si s es un palíndromo, o falso de lo contrario.
Calculamos todas las subcadenas de la cadena de entrada s . Usando P () , aislamos los palíndromos no vacíos y los almacenamos en la matriz a .
La función recursiva principal f () toma una entrada y calcula todas sus permutaciones. En él se actualiza S cada vez que la permutación en sí es un palíndromo (una vez unido), y, finalmente, devuelve el valor final de S .
fuente
Jalea , 13 bytes
Pruébalo en línea!
Imprime
0
en el caso inválido.fuente
05AB1E ,
1312 bytesPruébalo en línea!
-1 byte gracias a Magic Octopus Urn y Enigma.
fuente
J
factoriza automáticamente para que no necesite€J
soloJ
; Además, se supone que debes devolver uno de los palíndromos, no todos. Pruébalo en línea! es válido para el mismo número de bytes.Ùć
podría ser¤
(o una serie de otras opciones)Ù
era necesario.Stax , 13 bytes
Ejecutar casos de prueba (toma alrededor de 10 segundos en mi máquina actual)
Esta es la representación ascii correspondiente del mismo programa.
No es pura fuerza bruta, pero es tan pequeña como la implementación de fuerza bruta que escribí. Ese bloqueó mi navegador después de unos 10 minutos. De todos modos, así es como funciona.
fuente
Rubí ,
131123120 bytesPruébalo en línea!
Una lambda que acepta una cadena y devuelve una cadena. Devuelve
nil
cuando no existe una solución.-5 bytes: reemplazar
select{|t|l[t]}
conselect(&l)
-3 bytes: reemplazar
map{..}.flatten
conflat_map{...}
-1 bytes: bucle sobre la longitud de la subcadena y el inicio de la subcadena, en lugar de sobre el inicio y el final de la subcadena
-2 bytes: declarar
z
al primer uso en lugar de antesfuente
Pyth , 13 bytes
Pruébalo en línea!
-1 byte gracias al Sr. Xcoder
fuente
h_I#sM.p_I#.:
oe_IDsM.p_I#.:
para 13 bytes.Python 3 , 167 bytes
Pruébalo en línea!
-2 bytes gracias al Sr. Xcoder
fuente
a[i:j+1]
si luego usafor j in range(i,len(a))
en su lugar, para -2 bytes.Japt , 19 bytes
Impulsado por Japt que (todavía) no puede obtener todas las subcadenas de una cadena (¡y en parte por mis niveles actuales de agotamiento!).
Salidas
undefined
si no hay solución.Intentalo
Explicación
fuente
¬
de su respuesta: P?m¬
pero lo habría necesitadoæ_¬êQ
para que no hubiera guardado ningún byte de todos modos!Casco , 12 bytes
Pruébalo en línea!
Explicación
fuente
J , 53 bytes
Pruébalo en línea!
fuente