No Emoji Math, um módulo criado pelo usuário para o videogame Keep Talking And Nobody Explodes, os números são escritos como cadeias de emoticons, em que cada emoticon representa 10 dígitos básicos. Abaixo está a tabela de conversão entre dígitos e emoticons.
Digit | Emoticon
0 | :)
1 | =(
2 | (:
3 | )=
4 | :(
5 | ):
6 | =)
7 | (=
8 | :|
9 | |:
Dado um número, produza-o na codificação Emoji Math. Você pode assumir a ausência de caracteres não numéricos.
Isso é código-golfe , então a resposta mais curta em bytes vence.
Respostas:
Japonês ,
2924 bytes-5 bytes graças a @Shaggy
Recebe entrada como uma string
Experimente online!
fonte
m@
pode ser substituído por£
para salvar um byte. Mas isso pode ser feito em 24 bytes usando a conversão base.C (gcc) ,
6258 bytes-4 bytes graças ao ceilingcat
Experimente online!
fonte
05AB1E , 26 bytes
Experimente online!
fonte
Python 2 ,
6562 bytesExperimente online!
fonte
TI-BASIC, 79 bytes
Entrada é uma sequência de dígitos em
Ans
.Saída é o número codificado por Emoji Math.
Exemplos:
Explicação:
Como alternativa, aqui está uma solução de 94 bytes que recebe um número como entrada em vez de uma string:
Exemplos:
Explicação:
Notas:
TI-BASIC é uma linguagem tokenizada . Contagem de caracteres não é igual à contagem de bytes.
|
é o token de dois bytes 0xBBD8 que só pode ser acessado usando este programa de montagem .fonte
Perl 5
-p
, 42 bytesExperimente online!
fonte
Java 8, 80 bytes
Experimente online.
Explicação:
fonte
JS ES6,
7766 bytesAté 66, graças às sugestões de @Charlie Harding e @asgallant
Finalmente tive que fazer uma conta no codegolf, já que esse era um pequeno desafio tão divertido!
A forma mais mínima da resposta original, ao esperar a entrada apenas de sequência:
Em segundo lugar, minha resposta original, que usa um regex mais longo e primeiro coage a entrada em uma string, funciona tanto com a entrada do tipo de número quanto com a entrada de uma sequência de dígitos.
O material da matriz JS é divertido. Tenho certeza de que ainda há espaço para otimização, isso corresponde novamente ao regex em cada loop do
map
.Testado porcaria com o seguinte:
fonte
=>
seta no mapa? Isso poderia economizar dois bytes, não poderia?/../g
faz o mesmo trabalho também, poupando mais quatro bytes[...(""+n)]
pode ser simplificada para[...n]
, economizando mais cinco bytesmap
e a pesquisa de expressões regulares está realmente custando caracteres para você aqui;replace
esubstr
funciona da mesma maneira, com menos caracteres: 58 bytes:,n=>n.replace(/./g,c=>':)=((:)=:():=)(=:||:'.substr(2*c,2))
assumindo a entrada como uma sequência de dígitos.replace
@asgallant! Parece que eu tenho que conhecer meus funções de cadeia, bem :)Haskell,
6456 bytes de LaikoniExperimente online
Ungolfed
Aplique a função
words
à nossa sequência de símbolos separados por espaço":) =( (: )= :( ): =) (= :| |: "
para obter uma lista e obtenha o n- ésimo elemento(!!)
para cada n na nossa sequência de entrada, combinando os resultados. nb(=<<)
é equivalente aconcatMap
, neste caso, mapear uma string para uma lista de strings e concatenar os resultados.read . pure
converte um caractere em um int, levantando um caractere em uma string e depoisread
em um int.fonte
[R],
5948 bytesabordagem diferente:
obrigado aaaron por me direcionar novamente :)
original:
batidas
por 1 byte
fonte
2*scan()+1
, com um pouco de reorganização, embora ainda possa mantê-lo como 48 bytes. Experimente online!Gelatina , 21 bytes
Experimente online!
fonte
PowerShell ,
646059 bytes-1 byte graças a mazzy
Experimente online!
Pega uma string, divide-a
toCharArray
e indexa-a na chave emoji, convertendo o caractere em seu valor numérico, dobra-a porque cada emoji tem dois de largura e, em seguida, pega osubstring
desse ponto mais um. Finalmente, junta tudo isso em uma única string e empurra para a saída.fonte
Ícone ,
7875 bytesExperimente online!
fonte
C # (Compilador interativo do Visual C #) ,
87,86,82, 67 bytesAdereços para @Artholl e @someone por ajudar a otimizar
Experimente online!
fonte
Substring
vez deSkip
&Take
e 1 byte se você codificar o valor de zero caractere.48
vez de'0'
.JavaScript (ES6), 87 bytes
fonte
):
vez de(:
para3
Gelatina , 24 bytes
Experimente online!
fonte
Anexo , 34 bytes
Experimente online!
fonte