RosettaCodeData/Task/Rot-13/Hy/rot-13.hy
2023-09-01 09:35:06 -07:00

23 lines
804 B
Hy

#!/usr/bin/env hy
(require hyrule [defmain])
(setv lowers (lfor *x* (range 26)
(chr (+ *x* (ord "a"))))) ; generate latin lower 26 chars
(setv uppers (list (map str.upper lowers))) ; and the upper case
(setv lowers (list (map ord lowers))) ; convert to unicode codepoints
(setv uppers (list (map ord uppers)))
(setv translations ; a dictionary with from->to
(dict (zip ; codepoint mapping
(+ lowers uppers)
(+ (cut lowers 13 None)
(cut lowers 0 13)
(cut uppers 13 None)
(cut uppers 0 13)))))
(defn rot13 [string]
(return (.translate string translations)))
(defmain []
(import fileinput)
(for [*line* (fileinput.input)]
(print (rot13 *line*) :end "")))