莫尔斯码通常表示为声音。给定一个表示声音是打开还是关闭的位流,将该流转换为字母、数字和空格。

Input: 101010100010001011101010001011101010001110111011100000001011101110001110111011100010111010001011101010001110101
Analysis: \--H--/ E \---L---/ \---L---/ \----O----/\-- --/\---W---/ \----O----/ \--R--/ \---L---/ \--D--/
Output: HELLO WORLD101010100010001011101010001011101010001110111011100000001011101110001110111011100010111010001011101010001110101
HELLO WORLD
10100000001011100011101110000000101110000000101011101000101000101010001010101
I AM A FISH
1010111011101110001110111011101110111000101110111011101110001110111010101
2017
101010001110111011100010101
SOS这是暗号高尔夫。下周这个时候,最低字节数的代码获胜了。
发布于 2017-11-16 15:54:49
发布于 2017-11-16 17:58:53
-由于@递归,有7个字节
Function A(i)
For Each w In i.Split({"0000000"},0)
For Each l In w.Split({"000"},0)
Dim c=0
For Each p In l.Split("0")
c=c*2+1+p.Length\2
Next
A &="!ETIANMSURWDKGOHVF!L!PJBXCYZQ!!54!3!!!2!!!!!!!16!!!!!!!7!!!8!90"(c)
Next
A+=" "
Next
End Function一个函数,它接受1s和0s的字符串,并返回一个字符串。(实际上,只有0用于OFF是一个困难的要求。任何不是OFF的东西都被假定为ON)。
字符串文本是作为数组形式的二进制堆设置的Morse代码。VB.NET允许将字符串作为字符数组进行索引。\是整数除法,取1的左子堆或111的右子堆。
当堆点中没有值时,我使用!作为空白。只需适当地去掉指数即可。
VB.NET允许您通过为函数名(在本例中为A)分配一个值来返回。我只是迭代地做字符串连接(&)来构建输出字符串。我第一次需要使用&是因为使用+会留下一个前导空字符,但任何其他时候我都可以使用+,它的行为与字符串的&相同。
https://codegolf.stackexchange.com/questions/148285
复制相似问题