Solution
This commit is contained in:
parent
c61615f4bf
commit
25c0e43491
|
@ -1,5 +1,20 @@
|
|||
const caesar = function() {
|
||||
const caesar = function(string, shift) {
|
||||
return string
|
||||
.split("")
|
||||
.map(char => shiftChar(char, shift))
|
||||
.join("");
|
||||
};
|
||||
|
||||
|
||||
let codeSets = code => (code < 97 ? 65 : 97);
|
||||
let mode = (m, n) => (m % n + n) % n;
|
||||
|
||||
let shiftChar =(char, shift) => {
|
||||
let code = char.charCodeAt();
|
||||
|
||||
if((code >= 65 && code <= 90) || (code >= 97 && code <= 122)){
|
||||
return String.fromCharCode(mode(code + shift - codeSets(code), 26) + codeSets(code));
|
||||
}
|
||||
|
||||
return char;
|
||||
};
|
||||
module.exports = caesar
|
||||
|
|
|
@ -4,22 +4,22 @@ describe('caesar', function() {
|
|||
it('works with single letters', function() {
|
||||
expect(caesar('A', 1)).toEqual('B');
|
||||
});
|
||||
xit('works with words', function() {
|
||||
it('works with words', function() {
|
||||
expect(caesar('Aaa', 1)).toEqual('Bbb');
|
||||
});
|
||||
xit('works with phrases', function() {
|
||||
it('works with phrases', function() {
|
||||
expect(caesar('Hello, World!', 5)).toEqual('Mjqqt, Btwqi!');
|
||||
});
|
||||
xit('works with negative shift', function() {
|
||||
it('works with negative shift', function() {
|
||||
expect(caesar('Mjqqt, Btwqi!', -5)).toEqual('Hello, World!');
|
||||
});
|
||||
xit('wraps', function() {
|
||||
it('wraps', function() {
|
||||
expect(caesar('Z', 1)).toEqual('A');
|
||||
});
|
||||
xit('works with large shift factors', function() {
|
||||
it('works with large shift factors', function() {
|
||||
expect(caesar('Hello, World!', 75)).toEqual('Ebiil, Tloia!');
|
||||
});
|
||||
xit('works with large negative shift factors', function() {
|
||||
it('works with large negative shift factors', function() {
|
||||
expect(caesar('Hello, World!', -29)).toEqual('Ebiil, Tloia!');
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue