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