Un palíndromo es una palabra que es su propio reverso.
Ahora hay algunas palabras que pueden parecer palíndromos pero no lo son. Por ejemplo, considere la palabra sheesh
, sheesh
no es un palíndromo porque su reverso es hseehs
diferente, sin embargo, si consideramos sh
que es una sola letra, entonces es reverso sheesh
. Este tipo de palabra la llamaremos semi-palíndromo.
Específicamente, una palabra es un semi-palíndromo si podemos dividir la palabra en un cierto número de fragmentos, de modo que cuando se invierte el orden de los fragmentos, se forma la palabra original. (Para sheesh
esos fragmentos son sh e e sh
) También requeriremos que ningún fragmento contenga letras de ambas mitades de la palabra (de lo contrario, cada palabra sería un semi-palíndromo). Por ejemplo, rear
no es un semi-palíndromo porque r ea r
tiene un fragmento ( ea
) que contiene letras de ambos lados de la palabra original. Consideramos que el carácter central en una palabra de longitud impar no está en ninguno de los lados de la palabra, por lo tanto, para las palabras con longitud impar, el carácter central siempre debe estar en su propio fragmento.
Su tarea será tomar una lista de enteros positivos y determinar si son semi-palíndromos. Su código debería generar dos valores desiguales consistentes, uno si la entrada es un semi-palíndromo y el otro en caso contrario. Sin embargo, la secuencia de bytes de su código debe ser un semi-palíndromo .
Las respuestas se puntuarán en bytes, siendo menos bytes mejores
Casos de prueba
[] -> True
[1] -> True
[2,1,2] -> True
[3,4,2,2,3,4] -> True
[3,5,1,3,5] -> True
[1,2,3,1] -> False
[1,2,3,3,4,1] -> False
[11,44,1,1] -> False
[1,3,2,4,1,2,3] -> False
Programa para generar más casos de prueba.
Borrible señaló que estos son similares a los palíndromos generalizados de Smarandache . Entonces, si desea leer más, ese es un lugar para comenzar.
fuente
Respuestas:
Retina 0.8.2 ,
8569 bytesPruébalo en línea! Explicación:
Selecciona el modo Match. De hecho, Retina usa el modo Match para un programa de una sola línea, pero la segunda copia del código siempre coincidiría si no fuera por estos caracteres adicionales.
El partido debe comenzar desde el principio.
Captura una serie de carreras de personajes. Cada ejecución debe terminar en una coma.
Opcionalmente, haga coincidir una serie de dígitos y una coma.
Opcionalmente, haga coincidir todas las capturas en orden inverso, haciendo estallar cada una a medida que coinciden.
El partido debe terminar al final.
Retroceda a menos que todas las capturas se hayan reventado. Funciona al requerir que la coincidencia aún esté al comienzo de la cadena si tenemos una captura sin reventar, lo cual es imposible.
fuente
Jalea ,
2723 bytesDevuelve 1 para semi-palíndromos, 0 de lo contrario.
Pruébalo en línea!
Cómo funciona
fuente
Python 2 ,
157153147143 bytes-4 bytes gracias a tsh .
Pruébalo en línea!
fuente
x==x[::-1]
paralen(x)<2
guardar 2 * 2 bytes; 143 bytes05AB1E ,
59474341 bytes-12 bytes gracias a @Emigna .
Pruébalo en línea o verifique todos los casos de prueba .
Explicación:
fuente
2ä
solucionar el problema con listas de longitud impar con øøε.œ} `, ahorrando 6 bytes. También parece haber dejado 30 bytes sin usar en ...€
lugar deε }
. :)05AB1E , 37 bytes
Utiliza aproximadamente la misma técnica que se le ocurrió a Jonathan .
Pruébalo en línea!
Programa completo Recibe una lista de STDIN, emite 1 o 0 a STDOUT.
Filtrar-mantener las particiones que satisfacen ...
Esta condición: las longitudes de cada (
€g
) se almacenan en una lista, cuyos prefijos (η
) se suman (O
), lo que nos da las sumas acumulativas de la lista de longitudes. Luego, la mitad máxima del máximo de esa lista se inserta en la pila, pero manteniendo también la lista original (Z;î
) y, si aparece (å
) en las sumas acumulativas, la función devuelve la verdad.Para cada uno, compare (
Q
) a con un reverso, que son empujados por separado en la pilaÂ
. Devuelve una lista de 0 sy 1 s.Máximo. Si alguno es verdadero, entonces 1 más 0 . Fin de la ejecución. Todo lo que sigue es completamente ignorado.
fuente
Python 2 ,
275251205 bytes-24 bytes gracias a @KevinCruijssen
-44 bytes gracias a @PostLeftGhostHunter
-2 bytes más gracias a @KevinCruijssen
Devuelve True para semi-palíndromo, ninguno de lo contrario
Pruébalo en línea!
fuente
Gelatina ,
3332 bytes-1 Gracias a Erik the Outgolfer
Gracias también a Dennis por una corrección de errores y buscando cambiar un detalle de implementación en Jelly.
Semi-palíndromos ceden
1
, otros ceden0
.Pruébalo en línea! (lento como esO ( 2norte) en longitud de entrada)
O ver el conjunto de pruebas .
Los únicos trozos son los
ŒḂ
s ({3 ª y 4 ª } {vs 29 º y 30 º } bytes), para permitir que el código para analizar.¿Cómo?
Todo el trabajo se realiza por el lado derecho: el "Enlace principal":
fuente
Perl 6 ,
8779 bytes-8 bytes con algunos trucos de la respuesta de Jo King
Pruébalo en línea!
La respuesta de JavaScript del puerto de tsh. Devuelve dos objetos Regex diferentes.
fuente
Rubí , 129 bytes
Pruébalo en línea!
fuente
JavaScript (Node.js) , 139 bytes
Pruébalo en línea!
fuente
C (gcc) (X86), 216 bytes
Pruébalo en línea!
p(L,a,n)
devuelve 0 si la matriza
de longitudL
es un semi-palíndromo, 1 de lo contrario. Dado que todos los prefijos de longitud>n
ya están marcados, compara el prefijo de longitudn
con el sufijo de longitudn
.p(L,a)
Es el punto de entrada.Desafortunadamente, la solución más interesante es más larga:
224 bytes
Pruébalo en línea!
Sin golf:
fuente
Japt , 66 bytes
Intérprete Japt
Gran mejora de esta versión, en realidad supera a la mayoría de los lenguajes prácticos ahora. Ahora opera en una matriz de enteros ya que el método anterior tenía un error.
Explicación:
fuente
PHP 237 bytes
función recursiva, retornos
true
(para entradas que contienen menos de dos elementos) o1
para verdadero,0
para falso. Pruébalo en línea (contiene desglose).La longitud real del código es de 118 bytes; semi-palíndromo creado por duplicación de código.
Para un mejor rendimiento, reemplace
&
con&&
e insertar!$x&&
antes++$i
.fuente
Scala, 252 bytes
Pruébalo en línea!
PD. Aparentemente, la solución es 2 veces más larga solo para satisfacer el requisito de que el código fuente también sea semi-palíndromo.
PPS No es un candidato de código de golf, sino una solución puramente funcional que utiliza la coincidencia de patrones:
fuente
Perl 6 , 81 bytes
Pruébalo en línea!
Devuelve la expresión regular
/../
para True y la expresión regular/^(.+)(.*)$0$/
para False. Funciona de manera similar a la respuesta de nwellnhof , pero convierte la lista a una cadena de antemano.fuente