注意事項
- このサイト内で公開していることがらについて
- 使用や利用によるいかなる損失に対しても責任を負いませんのでご了承ください。
- 著作物に関する著作権について
- 原則としてすべて運営者(EponaLab)にあります。
仕様
- 数字の1は「トン」を表します。
- 数字の2は「ツー」を表します。
ソースコード
program MorseCoding(input, output);
type MorseCode = array [1 .. 128] of integer;
{モールス符号への変換表の作成(3進数)}
procedure InitMorseCode(var m : MorseCode);
var i : integer;
begin
for i := 1 to 128 do
m[i] := 0;
{Definition}
{0 <-> none}
{1 <-> .}
{2 <-> -}
{0 .. 9}
m[48] := 242;
m[49] := 161;
m[50] := 134;
m[51] := 125;
m[52] := 122;
m[53] := 121;
m[54] := 202;
m[55] := 229;
m[56] := 238;
m[57] := 241;
{A .. Z}
m[65] := 5;
m[66] := 67;
m[67] := 70;
m[68] := 22;
m[69] := 1;
m[70] := 43;
m[71] := 25;
m[72] := 40;
m[73] := 4;
m[74] := 53;
m[75] := 23;
m[76] := 49;
m[77] := 8;
m[78] := 7;
m[79] := 26;
m[80] := 52;
m[81] := 77;
m[82] := 16;
m[83] := 13;
m[84] := 2;
m[85] := 14;
m[86] := 41;
m[87] := 17;
m[88] := 68;
m[89] := 71;
m[90] := 76;
{a .. z}
m[97] := 5;
m[98] := 67;
m[99] := 70;
m[100] := 22;
m[101] := 1;
m[102] := 43;
m[103] := 25;
m[104] := 40;
m[105] := 4;
m[106] := 53;
m[107] := 23;
m[108] := 49;
m[109] := 8;
m[110] := 7;
m[111] := 26;
m[112] := 52;
m[113] := 77;
m[114] := 16;
m[115] := 13;
m[116] := 2;
m[117] := 14;
m[118] := 41;
m[119] := 17;
m[120] := 68;
m[121] := 71;
m[122] := 76
end;
{0以外の数を出力する}
procedure PrintNonZero(x : integer);
begin
if (x mod 3) <> 0 then
write(x mod 3)
end;
{10進数を3進数展開して出力}
procedure TransDig(x : integer);
begin
if x < 3 then
PrintNonZero(x)
else
begin
TransDig(x div 3);
PrintNonZero(x mod 3)
end
end;
procedure main;
var c : char;
m : MorseCode;
begin
InitMorseCode(m);
while not eof do
begin
while not eoln do
begin
read(c);
TransDig(m[ord(c)])
end;
readln;
writeln
end;
readln
end;
begin
main
end.