Quando um número é mostrado em uma calculadora, é possível considerar como seriam as várias transformações desse número. Por exemplo, em uma exibição de sete segmentos, 2 é mostrado assim:
E quando virado horizontalmente, fica assim:
Como tal, a imagem espelhada de 2 é 5.
A tarefa neste desafio é pegar um número de um dígito e retornar o número que é sua imagem espelhada (se possível). Se a imagem espelhada não parecer um número, retorne o número girado 180 graus (se possível). Se nenhum desses for o caso, retorne -1.
Aqui está a lista completa de entradas e saídas que seu programa precisa gerenciar:
Input Output
0 0
1 -1
2 5
3 -1
4 -1
5 2
6 9
7 -1
8 8
9 6
Como um desafio de código-golfe , o código mais curto vence!
Respostas:
Haskell -
433143 caracteres sem nada extravagante.
Reduziu para 31 caracteres, tornando-a uma função parcial.
fonte
f=
para a segunda solução, pois é uma expressão válidaGolfScript,
1514Li as especificações novamente e descobri que a entrada deve ser uma string.
Para correr:
Versão antiga (que possui entrada inteira):
O mais recente (14 bytes) é um pouco inspirado na resposta do CJam pelo aditsu .
fonte
PowerShell - 27
fonte
Python 2.x - 28
fonte
`
e salvar 2 caracteres.JavaScript
3736fonte
.search()
e salve um byte.CJam, 20 bytes
Experimente online.
Resultado
Como funciona
fonte
BEFUNGE 93 -
181420 BytesEu acho que os comentaristas estão certos, apesar de o Befunge ser uma linguagem em 2D, é um pouco diferente. Ainda assim, neste instante, os comentaristas estão certos.
Passos:
Lê a entrada como um valor numérico x e a pressiona na pilha.
Obtém o valor do caractere c (então, como '!' = 33 ou '*' = 42. Uma célula vazia = 32) na posição x, 1.
Lê o valor de caractere da célula 0,1 (33), subtrai-o de c e o gera como um valor numérico.
fonte
&1g'!-.
Java - 49
Aqui
0x790a300601
está um valor recheado com as saídas desejadas, com uma adicionada para torná-las positivas. Os valores são armazenados em petiscos dentro do valor, portanto, é necessário um pouco de mudança e mascaramento para destacá-los.Java - 100 (opção divertida)
Não é a menor opção, mas um pouco de diversão. Encontrei uma semente aleatória que produz os valores corretos quando chamada X vezes (onde 0> = X <= 9).
fonte
JavaScript (ECMAScript 6) 25
JavaScript (ECMAScript 5) 43
ATUALIZAÇÃO: edc65 sugeriu uma técnica muito melhor. A escova de dentes sugeriu uma linguagem muito melhor. Neste ponto, minhas principais contribuições são depuração e bom senso.
fonte
x=>[0,-1,5,-1,-1,2,9,-1,8,6][x]
.function(x)[0,-1,5,-1,-1,2,9,-1,8,6][x]
, também graças ao Firefox. Eu não ia ganhar de qualquer maneira, então decidi que continuaria com a resposta de maior compatibilidade. Se eu começar a mudar de idioma por brevidade, acabarei definindo meu próprio idioma para cada desafio que enfrentar. Mas eu vou em frente e mencionar a versão de ECMAScript 6 de qualquer forma, desde que você sugeriu que-(x!=6)
. Obrigado.f=
, a menos que você está chamandof
de forma recursiva ou a questão exige explicitamente uma função com um nome específicofestança 29
por exemplo
fonte
'
expressão sed à volta. Também acho que você pode omitir og
porque a especificação que alimente um único dígito de cada vez'
. Gostando dag
entrada mais longa!Kona - 29
Esta função retorna o elemento
x
da matriz0 -1 5...
Exemplos:
fonte
JavaScript 36
37.41.como função ES6 - 27:
fonte
f=v=>~-[1,,6,,,3,10,,9,7][v]
Sclipting, 11 caracteres
Finalmente, encontrei um computador Windows com o Visual Studio instalado para criar seu intérprete. E derrotou meu código GolfScript facilmente.
Lê
18453063256\11\?/11%(
no GolfScript.fonte
J -
2827 bytesVocê sabe do que eu gosto? Simplicidade (28 bytes). Observe que em J,
_1
é negativo (-1).Adicione um pouco de complexidade e você terá 27 bytes.
Exemplo:
fonte
CJam - 14
Versão de entrada / saída:
Versão da pilha (assume que o número está na pilha):
Experimente-os em http://cjam.aditsu.net/
fonte
Perl,
2726Contagem inclui a
p
bandeiraUso:
Espere, Perl acabou de derrotar J? :)
fonte
y+0-9+9a4aa70a13+;$_=9-hex
, que tem o mesmo comprimento, mas o seu é mais original;) #echo 1 | perl -pe y/2569/5296/,s/[347]/-1/
Marbelous 34 bytes
Não é a solução mais curta, mas também não é a mais longa.
Como funciona
}0
gera um mármore representando a primeira entrada da linha de comando. Esse mármore desce o próximo carrapato para a=6
célula.=6
é uma célula de comparação, empurra qualquer mármore com valor 6 para baixo e todos os outros para a direita. Essa linha de células de comparação empurra os mármores para a direita até atingirem o valor desejado. 0 e 8 simplesmente caem e são impressos quando caem da parte inferior do quadro, 6 e 2 e 9 e 5 primeiro adicionam 3, subtraídos deles respectivamente. Se uma bola de gude não é igual a nenhum dos valores desejados, ele cair na?0
célula, o que transformar qualquer mármore em um 0 mármore 1 . Este mármore então é diminuído e cai do tabuleiro.1 Um
?n
mármore transforma tecnicamente qualquer mármore em mármore entre 0 e n. Isso tem o bom efeito colateral que?0
transforma qualquer coisa em 0.fonte
MATLAB - 35
Gostaria de envolver isso em uma função com
n
como o único parâmetro.35 caracteres.
fonte
ECMAScript 6, 24
Usando JavaScript normal, seria 33:
fonte
TI-BASIC,
2422Isso codifica as saídas possíveis em uma tabela de pesquisa armazenada como um número de ponto flutuante de base 11; o (N + 1) é o décimo primeiro dígito da base 11 depois que o ponto decimal é extraído da tabela para obter o valor do dígito invertido. Na base 11, o número é
.106003A097
e os dígitos deste menos um são exatamente0,-1,5,-1,-1,2,9,-1,8,6
.O truque do edc65 de subtrair um no caso de 6 leva a essa solução de 24 bytes, onde
⑩^(
está um único token de um byte:A abordagem de cadeia é de 29 bytes:
A abordagem de matriz (que Ypnpyn também adotou) é de 30 bytes, assumindo que o número seja armazenado em X:
24 -> 22: Removidos dois dígitos extras de precisão na constante mágica.
fonte
C - 47 bytes [48 bytes]
Para adicionar E / S (que outras respostas nem sempre) para 86 bytes:
fonte
Python - 34
fonte
f=lambda n:ord(" "[n])-3
trabalhando com o espaço codeskulptor.org/#user34_Q7NbNvQy55_0.py #	
Ele de menos 3 a razão para que -1 folhas um caractere nulo que não é bom, e menos 2 folhas de um avanço de linha que é reservado em pythonJava, 58
59OU
fonte
JavaScript
4237Execute-o no console do seu navegador
fonte
C -
1171081067776 bytesNão é o melhor idioma para jogar golfe, mas tudo bem ...
Compile com
gcc progname.c -o progname
. (Ignore os avisos ou adicione-include stdio.h
ao comando compilar.)EDITAR
Conforme a sugestão de @ bebe, aqui está um exemplo que usa a entrada de STDIN:
C -
6851 bytesfonte
d=*b[1]-48
poderia ser uma boa ideiamain(){printf("%d",(int[]){1,0,6,0,0,3,10,0,9,7}[getchar()-48]-1);}
desculpe por incomodá-lo muito, mas acho isso um pouco mais curto.a[]={1,0,6,0,0,3,10,0,9,7};main(){printf("%d",a[getchar()-48]-1);}
main(){printf("%d","106003:097"[getchar()-48]-49);}
51 bytesJ (24, função)
(o painel de entrada não está funcionando bem. Cole o seguinte em um intérprete python e minha resposta será revelada :)
fonte
Clojure - 36
fonte
05AB1E , 13 bytes (não concorrente)
Experimente online!
-3 graças a Emigna .
Explicação:
fonte
0®5®®Y9®8 6¹@
deve funcionar também.@
. Nem sempre você vê que utilizou :))¹è
ou)sè
.PHP ,
4839 bytesAgradecimentos a Jörg Hülsermann
Experimente online!
versões mais antigas
Experimente online!
fonte
Gelatina , 14 bytes (não concorrente)
Experimente online!
Explicação:
fonte
ịV = žh‡
em 05AB1E