Language agnostic 将字符串转换成莫尔斯电码 挑战

Language agnostic 将字符串转换成莫尔斯电码 挑战,language-agnostic,code-golf,Language Agnostic,Code Golf,按字符数计算的最短代码,它将只使用字母字符(大写和小写)、数字、逗号、句点和问号输入字符串,并以莫尔斯电码返回字符串的表示形式。 莫尔斯电码输出应包括一个破折号(-,ASCII 0x2D)表示长嘟嘟声(又名“dah”)和一个点(,ASCII 0x2E)表示短嘟嘟声(又名“dit”) 每个字母应该用空格(',ASCII 0x20)分隔,每个单词应该用正斜杠(/,ASCII 0x2F)分隔 莫尔斯电码表: 测试用例: 代码计数包括输入/输出(即完整程序)。使用 Python列表理解,159个字符

按字符数计算的最短代码,它将只使用字母字符(大写和小写)、数字、逗号、句点和问号输入字符串,并以莫尔斯电码返回字符串的表示形式。 莫尔斯电码输出应包括一个破折号(
-
,ASCII 0x2D)表示长嘟嘟声(又名“dah”)和一个点(
,ASCII 0x2E)表示短嘟嘟声(又名“dit”)

每个字母应该用空格(
'
,ASCII 0x20)分隔,每个单词应该用正斜杠(
/
,ASCII 0x2F)分隔

莫尔斯电码表:

测试用例:
代码计数包括输入/输出(即完整程序)。

使用

Python列表理解,159个字符一行 Perl,170个字符(在有造诣的高尔夫球手mauke的帮助下)。为清晰起见,包装好;所有换行符都是可移动的

$_=uc<>;y,. ,|/,;s/./$& /g;@m{A..Z,0..9,qw(| , ?)}=
".-NINNN..]IN-NII..AMN-AI---.M-ANMAA.I.-].AIAA-NANMMIOMAOUMSMSAH.B.MSOIONARZMIZ"
=~/../g;1while s![]\w|,?]!$m{$&}!;print

C、 533个字符

print(' '.join('/'if c==' 'else''.join('.'if x=='0'else'-'for x in bin(ord("ijÁĕÁÿïçãáàðøüþÁÁÁÁÁČÁÅ×ÚÌÂÒÎÐÄ×ÍÔÇÆÏÖÝÊÈÃÉÑËÙÛÜ"[ord(c)-44])-192)[3:])for c in input().upper()))
我听取了一些评论的建议,转而使用stdin。大概又杀了70个字符

#include <stdio.h>
#include <ctype.h>
char *u[36] = {".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--..","-----",".----","..---","...--","....-",".....","-....","--...","---..","----."};
main(){
char*v;int x;char o;
do{
o = toupper(getc(stdin));v=0;if(o>=65&&o<=90)v=u[o-'A'];if(o>=48&&o<=57)v=u[o-'0'+26];if(o==46)v=".-.-.-";if(o==44)v="--..--";if(o==63)v="..--..";if(o==32)v="/";if(v)printf("%s ", v);} while (o != EOF);
}
#包括
#包括
字符*u[36]={“-”、“-…”、“-。-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、”、“-”、“-”、”、“-”、“-”、”、”、“-”、“-”、”、”、“、”、“、”、”、“-、“-、“、“-、”、”、”、”、”、”、”、”、“-、”、“、“-;
main(){
字符*v;整数x;字符o;
做{
o=toupper(getc(stdin));v=0;如果(o>=65&&o=48&&oC89(388个字符)
这是不完整的,因为它还不能处理逗号、fullstop和查询

#define P putchar
char q[10],Q,tree[]=
"EISH54V 3UF    2ARL   + WP  J 1TNDB6=X/ KC  Y  MGZ7 Q  O 8  90";s2;e(x){q[Q++]
=x;}p(){for(;Q--;putchar(q[Q]));Q=0;}T(int x,char*t,int s){s2=s/2;return s?*t-x
?t[s2]-x?T(x,++t+s2,--s/2)?e(45):T(x,t,--s/2)?e(46):0:e(45):e(46):0;}main(c){
while((c=getchar())>=0){c-=c<123&&c>96?32:0;if(c==10)P(10);if(c==32)P(47);else
T(c,tree,sizeof(tree)),p();P(' ');}}
#定义P putchar
char q[10],q,tree[]=
“eish54v3uf2arl+wp1tndb6=X/kcymgz7qo890”;s2;e(X){Q[Q++]
=x;}p(){for(;Q--;putchar(Q[Q]);Q=0;}T(intx,char*T,ints){s2=s/2;返回s?*T-x
?t[s2]-x?t(x,++t+s2,--s/2)?e(45):t(x,t,--s/2)?e(46):0:e(45):e(46):0;}main(c){
while((c=getchar())>=0){c-=c96?32:0;if(c==10)P(10);if(c==32)P(47);else
T(c,tree,sizeof(tree)),p();p(“”);}
包装以便于阅读。只需要两个换行符(一个用于#define,一个接一个,可以是空格)。我添加了一些非标准字符,但没有添加非7位字符。

Python 不完整的解决方案,但也许有人可以从中得出完整的解决方案。不处理数字或标点符号,但重量只有154个字符

def e(l):
 i='_etianmsurwdkgohvf_l_pjbxcyzq'.find(l.lower());v=''
 while i>0:v='-.'[i%2]+v;i=(i-1)/2;return v or '/'
def enc(s):return ' '.join(map(e,s))
C(381个字符)
C,448字节,使用cmdline参数:

char*a[]={".-.-.-","--..--","..--..","/",".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--..","-----",".----","..---","...--","....-",".....","-....","--...","---..","----."},*k=".,? ",*s,*p,x;main(int _,char**v){for(;s=*++v;putchar(10))for(;x=*s++;){p=strchr(k,x);printf("%s ",p?a[p-k]:isdigit(x)?a[x-18]:isalpha(x=toupper(x))?a[x-61]:0);}}
C,416字节使用标准输入法:

char*a[]={".-.-.-","--..--","..--..","/",".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--..","-----",".----","..---","...--","....-",".....","-....","--...","---..","----."},*k=".,? ",*p,x;main(){while((x=toupper(getchar()))-10){p=strchr(k,x);printf("%s ",p?a[p-k]:isdigit(x)?a[x-18]:isalpha(x)?a[x-61]:0);}}

我一直在为符号编写紧凑的编码,但我看不出是否比已经在使用的隐式树更好,所以我在这里介绍了编码,以防其他人可以使用它

考虑字符串:

 --..--..-.-.-..--...----.....-----.--/
它包含所有需要的序列作为子字符串。我们可以按偏移量和长度对符号进行编码,如下所示:

       ET  RRRIIGGGJJJJ    
--..--..-.-.-..--...----.....-----.--/
          CCCC  DD WWW       00000
,,,,,,   AALLLL BBBB        11111
--..--..-.-.-..--...----.....-----.--/
  ??????  KKK  MMSSS       22222   
        FFFF  PPPP        33333
--..--..-.-.-..--...----.....-----.--/
        UUU XXXX         44444       
          NN  PPPP  OOO 55555
--..--..-.-.-..--...----.....-----.--/
               ZZZZ    66666
                      77777      YYYY
--..--..-.-.-..--...----.....-----.--/
       ......        88888 HHHH
                    99999 VVVV  QQQQ
--..--..-.-.-..--...----.....-----.--/
空格(即单词边界)以最后一个字符(“/”)开始和结束。如果您认为有好的方法,请随意使用它

当然,大多数较短的符号都有几种可能的编码


(我现在可以看到这里至少有一些冗余)并且做了一个很好的c实现。第一个版本(有缺陷且不完整)。我一点也不理解。

C89(293个字符) 基于其他一些答案

编辑:收缩树(耶)

#定义P putchar
字符t['~']=“~ETIANMSURWDKGOHVF~L~PJBXCYZQ~~54~3”,o,q[9],q=10;main(c){for(;q;)t[
“&./7;=>KTr”[--Q]=“2167890?”,[Q];而((c=getchar())>=0){c-=c96?32:0;c-

10?c-32?0:P(47):P(10);for(o=1;o

这是我在VB.Net中作为控制台应用程序的贡献

Module MorseCodeConverter

    Dim M() As String = {".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--..", "-----", ".----", "..---", "...--", "....-", ".....", "-....", "--...", "---..", "----."}

    Sub Main()
        Dim I, O
        Dim a, b

        While True
            I = Console.ReadLine()
            O = ""

            For Each a In I
                b = AscW(UCase(a))
                If b > 64 And b < 91 Then
                    O &= M(b - 65) & " "
                ElseIf b > 47 And b < 58 Then
                    O &= M(b - 22) & " "
                ElseIf b = 46 Then
                    O &= ".-.-.- "
                ElseIf b = 44 Then
                    O &= "--..-- "
                ElseIf b = 63 Then
                    O &= "..--.. "
                Else
                    O &= "/"
                End If

            Next

            Console.WriteLine(O)
        End While


    End Sub

End Module
模块莫尔斯变换器
作为字符串的Dim M()为{“-”、“-…”、“-.-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、”、“-”、“-”、“-”、“、”、“-”、”、“-、“、“-”、”、”、”、“-、“-、“、“、”、”、”、“-、“-、”、“、“-、“-、”、”、”、”、“-、“-、“、
副标题()
暗淡的I,O
暗淡的a,b
虽然是真的
I=Console.ReadLine()
O=“”
对于我的每一个a
b=AscW(UCase(a))
如果b>64且b<91,则
O&=M(b-65)&“
如果b>47和b<58
O&=M(b-22)&“
ElseIf b=46那么
O&=“-.-.-”
ElseIf b=44那么
O&=“--…”
ElseIf b=63那么
O&=“.--…”
其他的
O&=“/”
如果结束
下一个
控制台写入线(O)
结束时
端接头
端模块
我留下了空白以使其可读。总共1100个字符。它将从命令行读取输入,每次读取一行,并将相应的输出发送回输出流。压缩版本如下,只有632个字符

Module Q
    Dim M() As String={".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--..","-----",".----","..---","...--","....-",".....","-....","--...","---..","----."}
    Sub Main()
        Dim I,O,a,b:While 1:I=Console.ReadLine():O="":For Each a In I:b=AscW(UCase(a)):If b>64 And b<91 Then:O &=M(b-65)&" ":ElseIf b>47 And b<58 Then:O &=M(b-22)&" ":ElseIf b=46 Then:O &=".-.-.- ":ElseIf b=44 Then:O &="--..-- ":ElseIf b=63 Then:O &= "..--.. ":Else:O &="/":End IF:Next:Console.WriteLine(O):End While
    End Sub
End Module
模块Q
作为字符串的Dim M()为{“-”、“-…”、“-.-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、”、“-”、“-”、“-”、“、”、“-”、”、“-、“、“-”、”、”、”、“-、“-、“、“、”、”、”、“-、“-、”、“、“-、“-、”、”、”、”、“-、“-、“、
副标题()
Dim I、O、a、b:While 1:I=Console.ReadLine():O=“”:对于I:b=AscW(UCase(a))中的每个a:If b>64,b47和Bpyton 2;171个字符
基本上与相同,但作为一个完整的程序,并使用愚蠢的技巧将其缩短

for c in raw_input().lower():print"".join(".-"[int(d)]for d in bin(
('  etianmsurwdkgohvf_l_pjbxcyzq__54_3___2%7s16%7s7___8_90%12s?%8s.%29s,'
%(('',)*5)).find(c))[3:])or'/',
(添加的换行符可以全部删除)

或者,如果您不想在2.6中使用
bin()
函数,我们可以在176中使用:

for c in raw_input():C=lambda q:q>0and C(~-q/2)+'-.'[q%2]or'';print C(
(' etianmsurwdkgohvf_l_pjbxcyzq__54_3___2%7s16%7s7___8_90%12s?%8s.%29s,'%
(('',)*5)).find(c.lower()))or'/',
(同样,添加的换行符可以全部删除)

C(248个字符) 另一个基于树的解决方案

#define O putchar
char z[99],*t=
" ETINAMSDRGUKWOHBL~FCPJVX~YZQ~~54~3~~~2~~+~~~~16=/~~.~~7,~~8~90";c,p,i=0;
main(){gets(z);while(c=z[i++]){c-46?c-44?c:O(45):O(c);c=c>96?c-32:c;p=-1;
while(t[++p]!=c);for(;p;p/=2){O(45+p--%2);}c-32?O(32):(O(47),O(c));}}

可能是源代码树中的错误,因为它似乎是错误的,或者可能是我误解了什么。

下面是另一种方法,基于dmckee的工作,演示Python的可读性:

python 244个字符

def h(l):p=2*ord(l.upper())-88;a,n=map(ord,"AF__GF__]E\\E[EZEYEXEWEVEUETE__________CF__IBPDJDPBGAHDPC[DNBSDJCKDOBJBTCND`DKCQCHAHCZDSCLD??OD"[p:p+2]);return "--..--..-.-.-..--...----.....-----.-"[a-64:a+n-128]
def e(s):return ' '.join(map(h,s))
def h(l):a,n=divmod(ord(u'\x06_7_\xd0\xc9\xc2\xbb\xb4\xad\xa6\x9f\x98\x91_____\x14_AtJr2<s\xc1d\x89IQdH\x8ff\xe4Pz9;\xba\x88X_f'[ord(l.upper())-44]),7);return "--..--..-.-.-..--...----.....-----.-"[a:a+n]
def e(s):return ' '.join(map(h,s))
def d(c):
 o='';b=ord("Y_j_?><80 !#'/_____f_\x06\x11\x15\x05\x02\x15\t\x1c\x06\x1e\r\x12\x07\x05\x0f\x16\x1b\n\x08\x03\r\x18\x0e\x19\x01\x13"[ord(c.upper())-44])
 while b!=1:o+='.-'[b&1];b/=2
 return o
e=lambda s:' '.join(map(d,s))
限制:

  • 德姆克氏线
    Module Q
        Dim M() As String={".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--..","-----",".----","..---","...--","....-",".....","-....","--...","---..","----."}
        Sub Main()
            Dim I,O,a,b:While 1:I=Console.ReadLine():O="":For Each a In I:b=AscW(UCase(a)):If b>64 And b<91 Then:O &=M(b-65)&" ":ElseIf b>47 And b<58 Then:O &=M(b-22)&" ":ElseIf b=46 Then:O &=".-.-.- ":ElseIf b=44 Then:O &="--..-- ":ElseIf b=63 Then:O &= "..--.. ":Else:O &="/":End IF:Next:Console.WriteLine(O):End While
        End Sub
    End Module
    
    for c in raw_input().lower():print"".join(".-"[int(d)]for d in bin(
    ('  etianmsurwdkgohvf_l_pjbxcyzq__54_3___2%7s16%7s7___8_90%12s?%8s.%29s,'
    %(('',)*5)).find(c))[3:])or'/',
    
    for c in raw_input():C=lambda q:q>0and C(~-q/2)+'-.'[q%2]or'';print C(
    (' etianmsurwdkgohvf_l_pjbxcyzq__54_3___2%7s16%7s7___8_90%12s?%8s.%29s,'%
    (('',)*5)).find(c.lower()))or'/',
    
    #define O putchar
    char z[99],*t=
    " ETINAMSDRGUKWOHBL~FCPJVX~YZQ~~54~3~~~2~~+~~~~16=/~~.~~7,~~8~90";c,p,i=0;
    main(){gets(z);while(c=z[i++]){c-46?c-44?c:O(45):O(c);c=c>96?c-32:c;p=-1;
    while(t[++p]!=c);for(;p;p/=2){O(45+p--%2);}c-32?O(32):(O(47),O(c));}}
    
    def h(l):p=2*ord(l.upper())-88;a,n=map(ord,"AF__GF__]E\\E[EZEYEXEWEVEUETE__________CF__IBPDJDPBGAHDPC[DNBSDJCKDOBJBTCND`DKCQCHAHCZDSCLD??OD"[p:p+2]);return "--..--..-.-.-..--...----.....-----.-"[a-64:a+n-128]
    def e(s):return ' '.join(map(h,s))
    
    def h(l):a,n=divmod(ord(u'\x06_7_\xd0\xc9\xc2\xbb\xb4\xad\xa6\x9f\x98\x91_____\x14_AtJr2<s\xc1d\x89IQdH\x8ff\xe4Pz9;\xba\x88X_f'[ord(l.upper())-44]),7);return "--..--..-.-.-..--...----.....-----.-"[a:a+n]
    def e(s):return ' '.join(map(h,s))
    
    def e(l):
     i=(' etianmsurwdkgohvf_l_pjbxcyzq__54_3___2%7s16%7s7___8_90%12s?%8s.%29s,'%tuple('_'*5)).find(l.lower());v=''
     while i>0:v='-.'[i%2]+v;i=(i-1)/2
     return v or '/'
    def enc(s):return ' '.join(map(e,s))
    
    def d(c):
     o='';b=ord("Y_j_?><80 !#'/_____f_\x06\x11\x15\x05\x02\x15\t\x1c\x06\x1e\r\x12\x07\x05\x0f\x16\x1b\n\x08\x03\r\x18\x0e\x19\x01\x13"[ord(c.upper())-44])
     while b!=1:o+='.-'[b&1];b/=2
     return o
    e=lambda s:' '.join(map(d,s))
    
    #define O putchar
    #define W while
    char*l="x@@@@@ppmmmmm@@FBdYcbcbSd[Kcd`\31(\b1g_<qCN:_'|\25D$W[QH0";
    int c,b,o;
    main(){
      W(1){
        W(c<32)
          c=getchar()&127;
        W(c>96)
          c^=32;
        c-=32;
        o=l[c/2]-64;
        b=203+(c&1?o>>3:0);
        o=c&1?o&7:o>>3;
        W(o>6)
          O(47),o=0;
        c/=2;
        W(c--)
          b+=(l[c]-64&7)+(l[c]-64>>3);
        b=(((l[b/7]<<7)+l[b/7+1])<<(b%7))>>14-o;
        W(o--)
          O(b&(1<<o)?46:45);
        O(32);
      }
    }
    
    let rec D i=if i=16 then" "else
     let x=int"U*:+F8c]uWjGbJ0-0Dnmd0BiC5?\4o`h7f>9[1E=pr_".[i]-32
     if x>43 then"-"+D(x-43)else"."+D x
    let M(s:string)=s.ToUpper()|>Seq.fold(fun s c->s+match c with
    |' '->"/ "|','->"--..-- "|'.'->".-.-.- "|_->D(int c-48))""
    
    M("Hello, Stack.") |> printfn "%s"
    
    .... . .-.. .-.. --- --..-- / ... - .- -.-. -.- .-.-.-
    
    print(' '.join('/'if c==' 'else''.join('.'if x=='0'else'-'for x in bin(ord("ijÁĕÁÿïçãáàðøüþÁÁÁÁÁČÁÅ×ÚÌÂÒÎÐÄ×ÍÔÇÆÏÖÝÊÈÃÉÑËÙÛÜ"[ord(c)-44])-192)[3:])for c in input().upper()))
    
    gcc -std=c89 -funsigned-char morse.c
        static void Main()
        {
            Console.WriteLine(String.Join(" ", (from c in Console.ReadLine().ToUpper().ToCharArray()
                                                select m[c]).ToArray()));
        }
    
        static Dictionary<char, string> m = new Dictionary<char, string>() {
                {'A', ".-"},
                {'B', "-.."},
                {'C', "-.-."},
                {'D', "-.."},
                {'E', "."},
                {'F', "..-."},
                {'G', "--."},
                {'H', "...."},
                {'I', ".."},
                {'J', ".---"},
                {'K', "-.-"},
                {'L', ".-.."},
                {'M', "--"},
                {'N', "-."},
                {'O', "---"},
                {'P', ".--."},
                {'Q', "--.-"},
                {'R', ".-."},
                {'S', "..."},
                {'T', "-"},
                {'U', "..-"},
                {'V', "...-"},
                {'W', ".--"},
                {'X', "-..-"},
                {'Y', "-.--"},
                {'Z', "--.."},
                {'0', "-----"},
                {'1', ".----"},
                {'2', "..---"},
                {'3', "...--"},
                {'4', "....-"},
                {'5', "....."},
                {'6', "-...."},
                {'7', "--..."},
                {'8', "---.."},
                {'9', "----."},
                {' ', "/"},
                {'.', ".-.-.-"},
                {',', "--..--"},
                {'?', "..--.."},
            };
    
    #!perl -lp
    ($a,@b)=unpack"b32C*",
    "\264\202\317\0\31SF1\2I.T\33N/G\27\308XE0=\x002V7HMRfermlkjihgx\207\205";
    $a=~y/01/-./;@m{A..Z,0..9,qw(. , ?)}=map{substr$a,$_%23,1+$_/23}@b;
    $_=join' ',map$m{uc$_}||"/",/./g
    
    type MorseCode = String
    
    program :: String
    program = "__5__4H___3VS__F___2 UI__L__+_ R__P___1JWAE"
         ++ "__6__=B__/_XD__C__YKN__7_Z__QG__8_ __9__0 OMT "
    
    decode :: MorseCode -> String
    decode = interpret program
        where
        interpret         = head . foldl exec []
        exec xs       '_' = undefined : xs
        exec (x:y:xs)  c  = branch    : xs
            where
            branch (' ':ds) = c : decode ds
            branch ('-':ds) = x ds
            branch ('.':ds) = y ds
            branch []       = [c]
    
    $a=array(32=>"/",44=>"--..--",1,".-.-.-",48=>"-----",".----","..---","...--","....-",".....","-....","--...","---..","----.",63=>"..--..",1,".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--..");
    foreach(str_split(strtoupper("hello world?"))as$k=>$v){echo $a[ord($v)]." ";}
    
    array(20=>"data",22=>"more data";
    array(20=>"data",1,"more data";
    
    foreach(var i in Encoding.ASCII.GetBytes(args[0].ToUpper())){var c=(int)i;for(c=(c-32!=0)?Encoding.ASCII.GetBytes("•ƒŒKa`^ZRBCEIQiw#S#nx(37+$6-2&@/4)'18=,*%.:0;?5")[c-44]-34:-3;c!=0;c/=2)Console.Write(Encoding.ASCII.GetChars(new byte[]{(byte)((c/2!=0)?46-c%2:0)}));}
    
    foreach (var i in Encoding.ASCII.GetBytes(args[0].ToUpper()))
    {
        var c = (int)i;
        for (c = ((c - 32) != 0) ? Encoding.ASCII.GetBytes("•ƒŒKa`^ZRBCEIQiw#S#nx(37+$6-2&@/4)'18=,*%.:0;?5")[c - 44] - 34 : -3
            ; c != 0
            ; c /= 2)
            Console.Write(Encoding.ASCII.GetChars(new byte[] { (byte)((c / 2 != 0) ? 46 - c % 2 : 0) }));
    }
    
    ' '/{{.32|"!etianmsurwdkgohvf!l!pjbxcyzq"?)"UsL?/'#! 08<>"@".,?0123456789"?=or
    2base(;>{'.-'\=}%' '}%}%'/'*
    
    foreach c ask""[l: index? find" etinamsdrgukwohblzfcpövxäqüyj"c while[l >= 2][prin pick"-."odd? l l: l / 2]prin" "]
    
    #!/bin/sh
    txt=''
    res=''
    if [ "$1" == '' ]; then
        read -se txt
    else
        txt="$1"
    fi;
    len=$(echo "$txt" | wc -c)
    k=1
    while [ "$k" -lt "$len" ]; do
        case "$(expr substr "$txt" $k 1 | tr '[:upper:]' '[:lower:]')" in
            'e')    res="$res"'.' ;;
            't')    res="$res"'-' ;;
            'i')    res="$res"'..' ;;
            'a')    res="$res"'.-' ;;
            'n')    res="$res"'-.' ;;
            'm')    res="$res"'--' ;;
            's')    res="$res"'...' ;;
            'u')    res="$res"'..-' ;;
            'r')    res="$res"'.-.' ;;
            'w')    res="$res"'.--' ;;
            'd')    res="$res"'-..' ;;
            'k')    res="$res"'-.-' ;;
            'g')    res="$res"'--.' ;;
            'o')    res="$res"'---' ;;
            'h')    res="$res"'....' ;;
            'v')    res="$res"'...-' ;;
            'f')    res="$res"'..-.' ;;
            'l')    res="$res"'.-..' ;;
            'p')    res="$res"'.--.' ;;
            'j')    res="$res"'.---' ;;
            'b')    res="$res"'-...' ;;
            'x')    res="$res"'-..-' ;;
            'c')    res="$res"'-.-.' ;;
            'y')    res="$res"'-.--' ;;
            'z')    res="$res"'--..' ;;
            'q')    res="$res"'--.-' ;;
            '5')    res="$res"'.....' ;;
            '4')    res="$res"'....-' ;;
            '3')    res="$res"'...--' ;;
            '2')    res="$res"'..---' ;;
            '1')    res="$res"'.----' ;;
            '6')    res="$res"'-....' ;;
            '7')    res="$res"'--...' ;;
            '8')    res="$res"'---..' ;;
            '9')    res="$res"'----.' ;;
            '0')    res="$res"'-----' ;;
        esac;
        [ ! "$(expr substr "$txt" $k 1)" == " " ] && [ ! "$(expr substr "$txt" $(($k+1)) 1)" == ' ' ] && res="$res"' '
        k=$(($k+1))
    done;
    echo "$res"
    
    '.- /'{~;2,~&.>(]`(<&3:)@.(a:=])"0)}.&,&#:&.></.40-~a.i.')}ggWOKIHX`dfggggggg-@B4*:68,?5</.7>E20+193ACD'{~0>.45-~a.i.toupper
    
       '.- /'{~;2,~&.>(]`(<&3:)@.(a:=])"0)}.&,&#:&.></.40-~a.i.')}ggWOKIHX`dfggggggg-@B4*:68,?5</.7>E20+193ACD'{~0>.45-~a.i.toupper 'Hello World'
    .... . .-.. .-.. --- / .-- --- .-. .-.. -.. 
    
       '.- /'{~;2,~&.>(]`(<&3:)@.(a:=])"0)}.&,&#:&.></.40-~a.i.')}ggWOKIHX`dfggggggg-@B4*:68,?5</.7>E20+193ACD'{~0>.45-~a.i.toupper 'Hello, Stackoverflow.'
    .... . .-.. .-.. --- .-.-.- / ... - .- -.-. -.- --- ...- . .-. ..-. .-.. --- .-- --..--