\ Copyright (C) 2015 by Alexandru Cojocaru \ This program is free software: you can redistribute it and/or modify \ it under the terms of the GNU General Public License as published by \ the Free Software Foundation, either version 3 of the License, or \ (at your option) any later version. \ This program is distributed in the hope that it will be useful, \ but WITHOUT ANY WARRANTY; without even the implied warranty of \ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the \ GNU General Public License for more details. \ You should have received a copy of the GNU General Public License \ along with this program. If not, see . : len 'z' 'a' - 1 + ; : inrange? rot tuck >= -rot <= and ; : rotc tuck - 13 + len mod + ; : rot-lower dup 'a' 'z' inrange? if 'a' rotc then ; : rot-upper dup 'A' 'Z' inrange? if 'A' rotc then ; : rot13 dup 0 u+do over dup i + c@ rot-lower rot-upper swap i + c! loop ; s" The butler did it!" rot13 type