mirror of
				https://github.com/theoludwig/programming-challenges.git
				synced 2025-09-11 23:11:21 +02:00 
			
		
		
		
	feat(solution): add typescript-caesar-cipher
This commit is contained in:
		| @@ -0,0 +1,5 @@ | ||||
| # typescript-caesar-cipher - caesar-cipher | ||||
|  | ||||
| Programming language : TypeScript | ||||
|  | ||||
| Created by [@Divlo](https://github.com/Divlo) on 21 October 2020. | ||||
| @@ -0,0 +1,42 @@ | ||||
| const alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('') | ||||
|  | ||||
| interface ShiftedLetter { | ||||
|   origin: string | ||||
|   shifted: string | ||||
| } | ||||
|  | ||||
| function shiftAlphabet (shift: number): ShiftedLetter[] { | ||||
|   const result: ShiftedLetter[] = [] | ||||
|   for (let index = 0; index < alphabet.length; index++) { | ||||
|     const letter = alphabet[index] | ||||
|     let shiftedIndex = index + shift | ||||
|     if (shiftedIndex > alphabet.length - 1) { | ||||
|       shiftedIndex = Math.abs(alphabet.length - shiftedIndex) | ||||
|     } | ||||
|     result.push({ | ||||
|       origin: letter, | ||||
|       shifted: alphabet[shiftedIndex] | ||||
|     }) | ||||
|   } | ||||
|   return result | ||||
| } | ||||
|  | ||||
| function solution (str: string, shift: number): string { | ||||
|   const shiftedAlphabet = shiftAlphabet(shift) | ||||
|   let result = '' | ||||
|   for (const letter of str) { | ||||
|     if (letter === ' ') { | ||||
|       result += ' ' | ||||
|     } else { | ||||
|       for (const { origin, shifted } of shiftedAlphabet) { | ||||
|         if (letter === shifted) { | ||||
|           result += origin | ||||
|           break | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|   return result | ||||
| } | ||||
|  | ||||
| export default solution | ||||
		Reference in New Issue
	
	Block a user