Развлекался на паре по криптографии освоением Haskell. Граждане, имеющие к нему отношение, гляньте, пожалуйста - может я чушь написал? Насколько грамотен такой подход? Задачка простенькая - шифр Цезаря. С условиями, чтоб буквы кодировались с учетом регистра, а все, что не буквы - оставалось прежним. import Char -- Получить ascii-код начала алфавита для строчных и прописных букв getDiff x = if isLower x then ord 'a' else if isUpper x then ord 'A' else 0 -- разбить ascii код на пару чисел: номер в алфавите и ascii-смещение алфавита splitAscii x = (ord x - getDiff x, getDiff x) -- сформировать ascii-символ из пары чисел formAscii pair = chr (fst pair + snd pair) -- циклический сдвиг на n позиций cycle_shift n pair = let abc_length = ord 'z' - ord 'a' + 1 in if snd pair == 0 then pair else (mod (fst pair+n) abc_length, snd pair) -- Процедура шифрации/дешифрации caesar n msg = map formAscii $ map (cycle_shift n) $ map splitAscii msg -- врапперы к caesar, они же точки входа encode n msg = caesar n msg decode n msg = caesar (-n) msg
Ответ на:
комментарий
от Begemoth
Ответ на:
комментарий
от Begemoth
Ответ на:
комментарий
от devnull-physicist
Ответ на:
комментарий
от Miguel
Ответ на:
комментарий
от devnull-physicist
Ответ на:
комментарий
от Miguel
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Галерея Лабораторная (2007)
- Форум FreeBSD , лабораторная (2019)
- Галерея Сочиняю лабораторные работы (2016)
- Новости Лабораторный журнал LaBaHoLiC (2012)
- Форум Лабораторная по каталогам (2018)
- Форум Программа-лабораторный журнал? (2012)
- Форум Лабораторный блок питания (2021)
- Форум Посоветуйте лабораторные по Android (2014)
- Форум Посоветуйте лабораторные по Java (2013)
- Галерея Готовимся к лабораторным работам (2009)