Escreva um programa ou função que use uma expressão matemática no código Morse como entrada e retorne a solução no código Morse.
As operações válidas são mais: +
e menos: _
(sublinhado). Você pode supor que você receberá apenas uma entrada inteira não negativa e que o resultado será não negativo.
A expressão conterá pelo menos dois termos e no máximo dez termos. Não haverá dois operadores adjacentes, ou seja .----+_-....
, e não haverá parênteses.
Os dígitos são separados por espaços únicos. Você pode optar por separar os operadores dos números por um único espaço de cada lado (veja exemplos).
O equivalente Morse para os dígitos 0-9 são:
0 -----
1 .----
2 ..---
3 ...--
4 ....-
5 .....
6 -....
7 --...
8 ---..
9 ----.
Exemplos:
Input
Output
.----+.---- (1+1=2) Optional input: .---- + .----
..---
-...._...-- (6-3=3) Optional input: -.... _ ...--
...--
..---_...--+..--- (2-3+2=1)
1
..---+...--_....-+---.._..... (2+3-4+8-5=4)
....-
.---- ..---_-....+...-- ...-- (12-6+33=39)
...-- ----.
----. -----+----.+..--- ----._..... .....+---..+-...._.----+----.+----._..--- ----- (90+9+29-55+8+6-1+9+9-20=84)
---.. ....-
Aplicam-se regras padrão sobre formatos de E / S, etc. Alguns espaços à direita e uma única nova linha são aceitos. Você não pode dividir o número em várias linhas. Você não pode usar eval
ou equivalente.
Este é o código golf, portanto o código mais curto em bytes vence.
fonte
J_.:s*R5"-.-"5
para construir os números. Provavelmente até encurte ao usar cordas compactadas.Retina, 132 bytes
Uma solução confusa e de primeira passagem.
Experimente online!
fonte
MATL ,
75716968 bytesExperimente online!
Explicação geral
Eu uso o formato de código a seguir para que o recuo exprima o aninhamento de operações.
Explicação detalhada
fonte
Javascript (es6) 236 bytes
muito espaço para melhorias
quebrado
uso
fonte
Festa pura,
366317Ok, eu poderia economizar 10 bytes para alcançar 307 escrevendo a 1ª linha:
em vez de (mas eu gosto):
Amostra:
ou se o
morse
conversor não estiver instalado:fonte