Dado um número inteiro, a saída de um truthy valor se for o mesmo de cabeça para baixo (girado 180 °) ou um Falsas valor de outra forma.
0
, 1
, E 8
tem simetria de rotação. 6
torna 9
- se e vice-versa.
Sequência de números que produzem resultados verdadeiros : 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 questão é inspirado por minha própria reputação no momento da postagem: 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
fonte
fonte
raw_input
o usuário digitar um número inteiro, que se tornará uma string nos bastidores. Isso é bom.Respostas:
05AB1E ,
22161514 bytesCódigo:
Experimente online!
Código anterior:
Para descobrir se a string é simétrica rotacional, basta transliterar
69
com96
, inverter a string e verificar se são iguais. A outra coisa que precisamos saber é se o número única contém a dígitos0
,1
,8
,6
e9
. Então é exatamente isso que vamos fazer:A
„vd•
peça, na verdade, converte a sequênciavd
da base 190 para a base 10 . Você pode tentar isso aqui .Usa a codificação CP-1252 . Experimente online!
fonte
Python 2, 50 bytes
O método
'01xxxx9x86'.find
leva um caractere de dígito para o seu número invertido, com qualquer dígito irrestrito-1
. Essa função é mapeada para a sequência de números invertidos, produzindo uma lista de dígitos.Isso é convertido em uma seqüência de caracteres com o
[1::3]
truque , exceto que, ao contrário, é revertido[-2::-3]
(graças a Dennis por isso, economizando 4 bytes) e comparado à seqüência de caracteres do número original. Qualquer-1
um de dígitos que não pode ser deslocado irá desalinhar a conversão, fazendo com que ela falhe.56 bytes:
Verifica se a sequência numérica invertida é a mesma das substituições invertidas. Os dígitos que não podem ser invertidos são substituídos por
'x'
para sempre dar a resposta errada.A substituição é feita
translate
em uma sequência de 256 caracteres, substituindo os valores ASCII correspondentes. Apenas os valores 1048
para57
importa, mas eu acolchoada para comprimento de 16 para tornar o comprimento total é 256. Gostaria de saber se existe uma maneira mais curta.Algumas outras abordagens (comprimentos 59, 60, 60):
fonte
Ruby,
5446 bytesEu não sei, funções anônimas como essa são permitidas ou não
Basicamente, a mesma idéia que a resposta do Python2. Se a entrada não for um número inteiro, aja mal (ou seja,
aba
dêtrue
)fonte
JavaScript (ES6), 56 bytes
fonte
split``
. Veja um conjunto mais poderoso literalPerl,
2926 bytesInclui +1 para
-p
Execute com a entrada em STDIN:
rotation.pl
:fonte
Geléia,
1615 bytesExperimente online!
Como funciona
fonte
Retina,
5749 bytes8 bytes salvos graças a @Martin Büttner .
1610880191
->61088019
->108801
->0880
->88
-> (vazio).1
se apenas0
,1
,8
, ou (Vazio) está à esquerda.0
caso contrário.Experimente online!
fonte
sh,
4033 bytesEntrada via argumento de linha de comando, saída via código de saída. Gere todos os casos de teste:
fonte
TSQL, 122 bytes
Eu sou novo em codificar golfe, por isso não tenho certeza de como contar os caracteres. Contando como 1 aqui, já que o número usado neste caso é 8
Isso retornará 1 quando o valor revertido corresponder e nada quando não corresponder:
Legível por humanos:
fonte
Retina ,
403833 bytesExperimente online!
Explicação
Isso usa uma abordagem completamente diferente da outra resposta da Retina. Em vez de remover todas as partes simétricas, nós simplesmente executar a transformação de reverter a corda e trocando
6
e9
s e então comparar a igualdade. Para garantir que nenhum dígito não simétrico apareça, também os transformamos em9
s ao meio.Duplicamos a entrada combinando o final da string e inserindo
;
seguido pela entrada inteira.Isso realiza uma transliteração de caracteres apenas na segunda metade, combinando-a com
;.+
. Os dois conjuntos de transliteração se expandem para:Porque
2-7
denota um intervalo e o conjunto de destino é preenchido com o último caractere para corresponder ao comprimento do conjunto de origem. Assim, os swaps de palco6
e9
e também se transforma todos23457
em9
s.Repetidamente (
+
) remova um par de caracteres idênticos ao redor do;
. Isso continuará até que apenas o;
seja deixado ou até que os dois caracteres ao redor;
não sejam mais idênticos, o que significaria que as seqüências não são o inverso uma da outra.Verifique se o primeiro caractere é
;
e imprima0
ou de1
acordo.fonte
Pitão - 21 bytes
Conjunto de Teste .
fonte
X_zK
faz o mesmo trabalho queX_z_KK
. O terceiro parâmetro é opcional.Pitão, 17 bytes
Teste-o no Pyth Compiler .
Como funciona
fonte
Visual Basic for Applications,
150111 bytesUtilizável no console ou como um UDF.
Aprimorado, aproveitando as conversões implícitas de tipo e executando três etapas em vez de duas etapas em cada lado da equação. Contagem inclui
Function
eEnd Function
declarações.fonte
GNU sed, 84 bytes
(incluindo +1 para
-r
sinalizador)Se a linha terminar com uma rotação do caractere inicial, apare as duas extremidades em uma. Repita até que não haja correspondência. Considere um único caractere simétrico; se restar alguma coisa, a entrada não será simétrica e retornamos false; caso contrário, retorne verdadeiro.
fonte
C, 82 bytes
Expandido
Explicação
Invertemos os dígitos do
x
uso da aritmética do módulo 10, substituindo 6 e 9 por seus reflexos à medida que avançamos. Substituímos os dígitos rotacionalmente assimétricos por zeros (observe que podemos lidar com cinco e / ou dois simétricos simplesmente mudando a tabela de substituiçãos
). Se o novo número for igual ao original (salvo em 'z'), será simétrico de rotação.Programa de teste
Isso imprime a lista de números simétricos fornecidos na pergunta.
fonte
MATL,
252122 bytesExperimente Online!
Explicação
fonte
Sério, 23 bytes
Experimente online!
Este é essencialmente um porto de solução Python 2 xnor .
Explicação:
fonte
Kotlin, 69 bytes
Isso pega o número, converte-o em uma sequência de caracteres, gira-o e depois o compara com o original como uma sequência de igualdade. Dígitos não rotativos são simplesmente convertidos em
0
Teste aqui!
fonte