Dado un número entero, genera un valor verdadero si es el mismo invertido (girado 180 °) o un valor falso de lo contrario.
0
, 1
y 8
tienen simetría rotacional. 6
se convierte 9
y viceversa.
Secuencia de números que produce resultados verdaderos: OEIS A000787
0, 1, 8, 11, 69, 88, 96, 101, 111, 181, 609, 619, 689, 808, 818, 888, 906, 916, 986, 1001, 1111, 1691, 1881, 1961, 6009, 6119, 6699, 6889, 6969, 8008, 8118, 8698, 8888, 8968, 9006, 9116, 9696, 9886, 9966, 10001, 10101, 10801, 11011, 11111, 11811, 16091, ...
Esta pregunta se inspira en mi propia reputación en el momento de publicación: 6009
.
code-golf
number
sequence
decision-problem
code-golf
string
parsing
c
code-golf
sorting
integer
code-golf
number
sequence
rational-numbers
graphical-output
atomic-code-golf
assembly
box-256
code-golf
geometry
tips
python
code-golf
number
sequence
arithmetic
number-theory
code-golf
ascii-art
kolmogorov-complexity
geometry
code-golf
graphical-output
code-golf
math
code-golf
grid
cellular-automata
game-of-life
code-golf
string
subsequence
code-golf
arithmetic
rational-numbers
code-golf
tips
dc
code-golf
ascii-art
kolmogorov-complexity
date
code-golf
string
primes
code-golf
string
natural-language
conversion
code-golf
sequence
code-golf
number-theory
primes
base-conversion
code-golf
math
primes
base-conversion
code-golf
ascii-art
fractal
code-golf
matrix
code-golf
math
tips
geometry
python
string
code-challenge
keyboard
code-golf
graphical-output
code-golf
string
code-golf
number
sequence
cops-and-robbers
number
sequence
cops-and-robbers
mbomb007
fuente
fuente
raw_input
, el usuario ingresó un número entero, que se convertiría en una cadena detrás de escena. Esta bien.Respuestas:
05AB1E ,
22161514 bytesCódigo:
Pruébalo en línea!
Código anterior:
Para determinar si la cadena es simétrica rotacional, solo necesitamos transliterar
69
con96
, invertir la cadena y verificar si son iguales. La otra cosa que necesitamos saber es si el número solamente contiene los dígitos0
,1
,8
,6
y9
. Entonces eso es exactamente lo que vamos a hacer:La
„vd•
parte en realidad convierte la cadenavd
de la base 190 a la base 10 . Puedes probar esto aquí .Utiliza la codificación CP-1252 . Pruébalo en línea!
fuente
Python 2, 50 bytes
El método
'01xxxx9x86'.find
lleva un carácter de dígito a su número al revés, con cualquier dígito imperturbable-1
. Esta función se asigna a la cadena numérica invertida, produciendo una lista de dígitos.Esto se convierte en una cadena con el
[1::3]
truco , excepto que se invierte al hacerlo[-2::-3]
(gracias a Dennis por esto, ahorrando 4 bytes), y se compara con la cadena del número original. Cualquiera de-1
los dígitos no deslizables desalineará la conversión, haciendo que falle.56 bytes:
Comprueba si la cadena numérica invertida es la misma que con los reemplazos invertidos. Los dígitos que no se pueden voltear se reemplazan por
'x'
para dar siempre la respuesta incorrecta.El reemplazo se realiza con
translate
una cadena de 256 caracteres, reemplazando los valores ASCII correspondientes. Sólo los 10 valores48
que57
son importantes, pero, acolchado en longitud 16 para hacer que la longitud total sea 256. Me pregunto si hay un camino más corto.Algunos otros enfoques (longitudes 59, 60, 60):
fuente
Ruby,
5446 bytesNo sé, ¿se permiten o no funciones anónimas como esa?
Básicamente la misma idea que la respuesta de Python2. Si la entrada no es entera, actúa mal (es decir,
aba
datrue
)fuente
JavaScript (ES6), 56 bytes
fuente
split``
. Vea Un literal de matriz más poderosoPerl,
2926 bytesIncluye +1 para
-p
Ejecutar con la entrada en STDIN:
rotation.pl
:fuente
Jalea,
1615 bytesPruébalo en línea!
Cómo funciona
fuente
Retina,
5749 bytes8 bytes guardados gracias a @Martin Büttner .
1610880191
->61088019
->108801
->0880
->88
-> (vacío).1
si solamente0
,1
,8
, o (vacío) que queda.0
contrario.Pruébalo en línea!
fuente
sh,
4033 bytesEntrada por argumento de línea de comando, salida por código de salida. Generar todos los casos de prueba:
fuente
TSQL, 122 bytes
Soy nuevo en el código de golf, así que no estoy muy seguro de cómo contar los personajes. Contando aquí como 1 ya que el número utilizado en este caso es 8
Esto devolverá 1 cuando el valor invertido coincida y nada cuando no coincida:
Legible por humanos:
fuente
Retina ,
403833 bytesPruébalo en línea!
Explicación
Esto utiliza un enfoque completamente diferente de la otra respuesta de Retina. En lugar de eliminar todas las partes simétricas, simplemente realizamos la transformación de invertir la cadena e intercambiar
6
y9
sy luego comparar para la igualdad. Para asegurarnos de que no aparezcan dígitos no simétricos, también los convertimos en9
s en la mitad.Duplicamos la entrada haciendo coincidir el final de la cadena e insertando
;
seguido por la entrada completa.Esto realiza una transliteración de caracteres solo en la segunda mitad al combinarla con
;.+
. Los dos conjuntos de transliteración se expanden a:Porque
2-7
denota un rango y el conjunto de destino se rellena con el último carácter para que coincida con la longitud del conjunto de origen. Por lo tanto, las permutas de escenario6
y9
también convierte a todos23457
en9
s.Repetidamente (
+
) elimina un par de caracteres idénticos alrededor del;
. Esto continuará hasta que solo;
quede o hasta que los dos caracteres que lo rodean;
ya no sean idénticos, lo que significaría que las cadenas no son opuestas entre sí.Compruebe si el primer carácter es
;
e imprima0
o en1
consecuencia.fuente
Pyth - 21 bytes
Test Suite .
fuente
X_zK
hace el mismo trabajo queX_z_KK
. El tercer parámetro es opcional.Pyth, 17 bytes
Pruébelo en el compilador Pyth .
Cómo funciona
fuente
Visual Basic para Aplicaciones,
150111 bytesUtilizable en consola o como UDF.
Mejorado al aprovechar las conversiones de tipo implícito y al intercambiar tres pasos en lugar de dos pasos a cada lado de la ecuación. El recuento incluye
Function
yEnd Function
declaraciones.fuente
GNU sed, 84 bytes
(incluido +1 para
-r
bandera)Si la línea termina con una rotación de su carácter inicial, recorte ambos extremos en uno. Repita hasta que no haya coincidencia. Tenga en cuenta un solo carácter simétrico, luego, si queda algo, la entrada no fue simétrica y devolvemos falso; de lo contrario devuelve verdadero.
fuente
C, 82 bytes
Expandido
Explicación
Invertimos los dígitos del
x
uso de la aritmética módulo 10, reemplazando 6 y 9 por sus reflexiones a medida que avanzamos. Reemplazamos los dígitos de rotación asimétrica por ceros (tenga en cuenta que podemos manejar cinco y / o dos simétricos simplemente cambiando la tabla de reemplazos
). Si el nuevo número es igual al original (guardado en 'z'), entonces es rotacionalmente simétrico.Programa de prueba
Esto imprime la lista de números simétricos dados en la pregunta.
fuente
MATL,
252122 bytesPruébalo en línea!
Explicación
fuente
En serio, 23 bytes
Pruébalo en línea!
Esto es esencialmente un puerto de la solución Python 2 de xnor .
Explicación:
fuente
Kotlin, 69 bytes
Esto toma el número, lo convierte en una cadena, lo gira y luego lo compara con el original como una cadena para la igualdad. Los dígitos no giratorios simplemente se convierten a
0
¡Pruébalo aquí!
fuente