Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit331a4d2

Browse files
authored
feat: Ciphers/MorseCode Algorithm (TheAlgorithms#1315)
* [feat] New algorithm* [test] Add new test for ParityOutlier.js* [fix] Reset indentation* [fix] Reset indentation* [fix] Style changes* fix: improve code efficiency and a glitch* test: adds a new possible test case* fix: style fix* fix: delete redundant comments and else statements* [fix] style fix* feat: New algorithm* fix: fixed custom code symbols* test: add test for MorseCode* test: add case with custom code symbols* delete files from main branch* fix: style fix* fix: style fix* fix: delete unnecessary quotes
1 parente6df6eb commit331a4d2

File tree

2 files changed

+101
-0
lines changed

2 files changed

+101
-0
lines changed

‎Ciphers/MorseCode.js

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
/**
2+
*@author mrmagic2020
3+
*@description Enciphers a combination of letters, numbers and symbols into morse code.
4+
*@see https://en.wikipedia.org/wiki/Morse_code
5+
*@param {string} msg The message to be enciphered.
6+
*@param {string} dot Symbol representing the dots.
7+
*@param {string} dash Symbol representing the dash.
8+
*@returns {string} Enciphered morse code.
9+
*@example morse('Hello World!') = '**** * *-** *-** --- *-- --- *-* *-** -** -*-*--'
10+
*/
11+
constmorse=(msg,dot='*',dash='-')=>{
12+
constkey={
13+
A:'*-',
14+
B:'-***',
15+
C:'-*-*',
16+
D:'-**',
17+
E:'*',
18+
F:'**-*',
19+
G:'--*',
20+
H:'****',
21+
I:'**',
22+
J:'*---',
23+
K:'-*-',
24+
L:'*-**',
25+
M:'--',
26+
N:'-*',
27+
O:'---',
28+
P:'*--*',
29+
Q:'--*-',
30+
R:'*-*',
31+
S:'***',
32+
T:'-',
33+
U:'**-',
34+
V:'***-',
35+
W:'*--',
36+
X:'-**-',
37+
Y:'-*--',
38+
Z:'--**',
39+
1:'*----',
40+
2:'**---',
41+
3:'***--',
42+
4:'****-',
43+
5:'*****',
44+
6:'-****',
45+
7:'--***',
46+
8:'---**',
47+
9:'----*',
48+
0:'-----',
49+
'.':'*-*-*-',
50+
',':'--**--',
51+
'?':'**--**',
52+
'!':'-*-*--',
53+
'\'':'*----*',
54+
'"':'*-**-*',
55+
'(':'-*--*',
56+
')':'-*--*-',
57+
'&':'*-***',
58+
':':'---***',
59+
';':'-*-*-*',
60+
'/':'-**-*',
61+
_:'**--*-',
62+
'=':'-***-',
63+
'+':'*-*-*',
64+
'-':'-****-',
65+
$:'***-**-',
66+
'@':'*--*-*'
67+
}
68+
69+
letnewMsg=''
70+
71+
msg.toString().split('').forEach((e)=>{
72+
if(/[a-zA-Z]/.test(e)){
73+
newMsg+=key[e.toUpperCase()].replaceAll('*',dot).replaceAll('-',dash)
74+
}elseif(Object.keys(key).includes(e)){
75+
newMsg+=key[e].replaceAll('*',dot).replaceAll('-',dash)
76+
}else{
77+
newMsg+=e
78+
}
79+
newMsg+=' '
80+
})
81+
82+
returnnewMsg.trim()
83+
}
84+
85+
export{morse}

‎Ciphers/test/MorseCode.test.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import{morse}from'../MorseCode'
2+
3+
describe('Testing morse function',()=>{
4+
it('should return an enciphered string with a given input string',()=>{
5+
expect(morse('Hello World!')).toBe('**** * *-** *-** --- *-- --- *-* *-** -** -*-*--')
6+
expect(morse('1+1=2')).toBe('*---- *-*-* *---- -***- **---')
7+
})
8+
9+
it('should leave symbols that does not have its corresponding morse representation',()=>{
10+
expect(morse('© 2023 GitHub, Inc.')).toBe('© **--- ----- **--- ***-- --* ** - **** **- -*** --**-- ** -* -*-* *-*-*-')
11+
})
12+
13+
it('should be able to accept custom morse code symbols',()=>{
14+
expect(morse('Nodejs','.','|')).toBe('|. ||| |.. . .||| ...')
15+
})
16+
})

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp