¿Te diste cuenta de que esto es un palíndromo?
Ingrese
un número entero no negativo o una cadena que lo represente
Salida
4 salidas posibles, que representan dos propiedades de número:
- es palindrome
- complicado # 2
Propiedad difícil # 2
Si el número no es palíndromo, esta propiedad responde a la pregunta "¿El primer y el último dígito tienen la misma paridad?"
Si el número es palíndromo, esta propiedad responde a la pregunta "¿El primer dígito y el medio tienen la misma paridad?". Para longitudes pares, el dígito del medio es uno de los dos dígitos centrales.
Ejemplos
12345678 -> Falso Falso
No es palíndromo, el primer y el último dígito tienen paridad diferente12345679 -> Falso verdadero
No es palíndromo, el primer y el último dígito tienen la misma paridad12344321 -> Verdadero Falso
Es palíndromo, el primer dígito 1 y el dígito medio 4 tienen paridad diferente123454321 -> Verdadero Verdadero
Es palíndromo, el primer dígito 1 y el dígito medio 5 tienen la misma paridad
PD
Usted puede decidir el tipo y formato de salida. Podría ser cualquier 4 valores distintos. Solo mencionalo en tu respuesta.
fuente

Respuestas:
05AB1E,
15,1413 bytes (Gracias a Riley y carusocomputing)Probar en línea
Devuelve con paréntesis si es un palíndromo
Devuelve con 0 si la paridad es diferente, 1 si es la misma
ÐAgregar entrada, de modo que tenga suficiente entrada para trabajar conRInvierte el último elemento de la pilaQMire si es lo mismo (toma los dos elementos superiores y realiza ==)iSi la declaración, solo pasa cuando es un palíndromo2Empuja el número 2äDividir la entrada en 2 partes iguales¨Empuje el primer elemento de la división (1264621 resulta en 1264)}Terminara siÈCompruebe si el último elemento es par¹Empuje la primera entrada nuevamenteRInvierta esa entradaÈComprueba si es incluso ahoraQCompruebe si esos resultados pares son los mismos e imprima implícitamentefuente
¨lugar de1£.,salida final , implícita. También en lugar de2äque puede utilizar bifurcado:Â; ahorro de 2 bytes para 12:ÐRQi¨}ȹRÈQ,debería empujarte a la cabeza;).PHP,
5552 bytestoma entrada de STDIN; correr con
-R.salida:
10para palíndromo y misma paridad11para palíndromo y paridad diferente0para no palíndromo y la misma paridad1para no palíndromo y paridad diferentenotas:
strlen($n)/2==log($n,10)/2==log($n,100)$n[1*log($n,100)]$n[0*log($n,100)]fuente
<?=lugar deechosandbox.onlinephpfunctions.com/code/…$argnsolo se define con-R, y eso no permite etiquetas.$argntambién está disponible con-F. Pero nm.Jalea ,
1614 bytesPruébalo en línea!
Salidas dos líneas:
1para palíndromo,0para no0para complicado # 2 ,1para noExplicación
fuente
Python 2 ,
706866 bytesPruébalo en línea!
fuente
PowerShell ,
11499 bytesPruébalo en línea!
Guardado 15 bytes gracias a @Sinusoid.
Entradas como una cadena. Emite una matriz de tipo
(0|1) (True|False), con la0indicación "no es un palíndromo" y la1indicación "palíndromo", y laTrueparidad indicadora coincide y de loFalsecontrario.Esto se hace mediante el uso de un pseudoternario e indexación en el lugar apropiado
(a,b)[index]. El índice($n-eq-join$n[$n.length..0])verifica si la entrada es un palíndromo. Si no es así, tomamos laaporción, que se0combina con si la paridad del primer dígito$n[0]es-equal a la paridad del último dígito$n[-1]. De lo contrario, estamos en labparte, que se1combina con si$z(la paridad del primer dígito) es-equal a la paridad del dígito del medio$n[$n.length/2].Anteriormente, tenía
"$($n[0])"que obtener el primer dígito para emitir correctamente como un entero, ya que los$n[0]resultados en achary el operador de módulo se%unen encharfunción del valor ASCII, no del valor literal, mientras que astringhace el valor literal. Sin embargo, @Sinusoid me ayudó a ver que,0,1,2,...,9como valores literales, todos tienen la misma paridad que48,49,50,...,57, por lo que si usa el valor ASCII, obtendremos el mismo resultado.Esa matriz se deja en la tubería, y la salida es implícita.
fuente
$cuando moduló%2un número? Lo intenté yo mismo y no fue necesario si hice cada paso individualmente, pero ¿es cuando lo pones dentro de una matriz? ¿Powershell lo trata como un tipo de variable diferente?$n[0]indexa, sale como achar. El reparto decharalintforzada por el%operador no ir de'1'a1, sino a la ASCII valor, por lo que es49. En su lugar,"$( )"realiza una conversión explícita a cadena, que lo convierte correctamente a1. ... Aunque, ahora que lo mencionas, la paridad de0..9es la misma que ASCII48..57, por lo que es probable que pueda golf que hacia abajo. ¡Gracias!VBA,
11799 bytesGuardado 18 bytes gracias a Titus
No se expande mucho una vez formateado:
Estos son los resultados del caso de prueba:
fuente
&1lugar demod 2. También puede deshacerse deIf/Thenconr=r+2-2*(left(s,1)-b &1)o incluso mejorIf s = StrReverse(s) then r=2yr=r+1-(left(s,1)-b &1)... y 2 bytes desactivados invirtiendo el Tricky # 2r=r+(left(s,1)-b &1):; ahorrar más con la impresión directamente:Debug.Print r+(left(s,1)-b &1). Debería ser 95 bytes entonces; 98 si&1no funciona.Andlugar de solo&. Descubrí cómo implementar tu primera sugerencia, pero no pude entender cómo querías cambiar la tercera líneaStrReverse.Sub p(s);b=s;If s=StrReverse(s)Then r=2:b=Mid(s,Len(s)/2+.1,1);Debug.?r+(Left(s,1)-b&1);End Sub-> 0/2 para palíndromos, 1/0 para Tricky # 2Mid()con másLeft(s,Len(s)/2+1)o menos.Len(s)/2= a4.5qué VBA se redondeará4. Si tiene 7 caracteres de longitud, entoncesLen(s)/2= a3.5qué VBA también se redondeará4. Agregar0.1corrige la locura.Perl 6 , 48 bytes
Intentalo
resultados en
(True True)(True False)(False True)o(False False)Expandido:
fuente
Java 8,
205197182168134 bytesSalidas:
1para falso-falso;2para falso-verdadero;3para verdadero-falso;4por verdadero-verdadero.Explicación:
Pruébalo aquí.
fuente
Haskell , 89 bytes
Pruébalo en línea! Uso:
f "12345". Devuelve0para Verdadero Verdadero,1para Verdadero Falso,2para Falso Verdadero y3para Falso Falso.La función
#convierte ambos caracteres de dígitos en sus códigos de caracteres ascii y los suma. Si ambos son pares o ambos son impares, la suma será par; de lo contrario, si uno es par y el otro impar, la suma será impar. Calculando el módulo dos, se#obtiene0una paridad igual y de lo1contrario.fcomprueba si la cadena de entradaxes un palíndromo. Si no#es así, se llama conxy el último carácter dexy dos se agrega al resultado; de lo contrario, sixse llama palindrómica#con el carácter medio de en suxlugar y deja el resultado como está.fuente
Kotlin , 142 bytes
Pruébalo en línea!
fuente
REXX,
104100bytesDevuelve valor par lógico
0 0,0 1,1 0o1 1.fuente
R,
115109105 bytesToma entrada de stdin. Devuelve
FALSE FALSEpara Falso Falso,FALSE TRUEFalso Verdadero,TRUE FALSEVerdadero Falso yTRUE TRUEVerdadero Verdadero.fuente
AWK,
9796 bytesEl uso más simple es colocar el código en el archivo:
OddEvenluego hacer:La salida es esencialmente la suma de bits de las comparaciones en la pregunta, p. Ej.
He intentado quitar la
()de(s?0:2), pero esta meta la pata de precedencia de los operadores de alguna manera.fuente
CJam, 32 bytes
La entrada es un número en la parte superior de la pila.
Explicación:
fuente
Rubí , 60 + 1 = 61 bytes
Usa la
-nbandera.Pruébalo en línea!
fuente
Groovy,
326303bytesCódigo encogido:
Código original (con explicación):
Código original (sin explicación):
Entrada:
Salida:
fuente