function cesar(str, shift, action) { const alphabet = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя'; const alphabetUpper = 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ'; let result = ''; for (let i = 0; i < str.length; i++) { let char = str[i]; let isUpper = false; let index = -1; if (alphabetUpper.indexOf(char) !== -1) { isUpper = true; index = alphabetUpper.indexOf(char); } else if (alphabet.indexOf(char) !== -1) { index = alphabet.indexOf(char); } if (index !== -1) { let newIndex; if (action === 'encode') { newIndex = (index + shift) % alphabet.length; } else { newIndex = (index - shift + alphabet.length) % alphabet.length; } if (isUpper) { result += alphabetUpper[newIndex]; } else { result += alphabet[newIndex]; } } else { result += char; } } return result; } // Расшифровка сообщения "эзтыхз фзъзъз" с различными сдвигами: // При shift = 8: "хакуна матата"