Tulis program atau fungsi yang mengambil ekspresi matematis dalam kode Morse sebagai input, dan mengembalikan solusi dalam kode Morse.
Operasi yang valid adalah plus: +
dan minus: _
(garis bawah). Anda dapat berasumsi bahwa Anda hanya akan menerima input integer non-negatif, dan hasilnya akan non-negatif.
Ekspresi akan mengandung setidaknya dua istilah, dan maksimum sepuluh istilah. Tidak akan ada dua operator yang berdekatan yaitu .----+_-....
, dan tidak akan ada tanda kurung.
Digit dipisahkan oleh spasi tunggal. Anda dapat memilih agar operator dipisahkan dari angka dengan satu spasi di setiap sisi (lihat contoh).
Setara Morse untuk angka 0-9 adalah:
0 -----
1 .----
2 ..---
3 ...--
4 ....-
5 .....
6 -....
7 --...
8 ---..
9 ----.
Contoh:
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)
---.. ....-
Aturan standar tentang format I / O dll berlaku. Beberapa spasi tambahan, dan satu baris baru diterima. Anda tidak dapat membagi angka dalam beberapa baris. Anda tidak dapat menggunakan eval
atau setara.
Ini adalah kode golf, jadi kode terpendek dalam byte menang.
sumber
J_.:s*R5"-.-"5
untuk membangun angka. Mungkin bahkan lebih pendek saat menggunakan string yang dikemas.Retina, 132 byte
Solusi lulus pertama yang berantakan.
Cobalah online!
sumber
MATL ,
75716968 byteCobalah online!
Penjelasan umum
Saya menggunakan format kode sebagai berikut sehingga lekukan menyatakan bersarangnya operasi.
Penjelasan detail
sumber
Javascript (es6) 236 byte
banyak ruang untuk perbaikan
putus hubungan
pemakaian
sumber
Bash murni,
366317Ok, saya bisa menghemat 10 byte untuk mencapai 307 dengan menulis baris 1:
bukannya (tapi saya suka):
Mencicipi:
atau jika
morse
konverter tidak dipasang:sumber