#!/usr/bin/ruby # ## https://rosettacode.org/wiki/Caesar_cipher # func caesar(msg, key, decode=false) { decode && (key = (26 - key)); msg.gsub(/([A-Z])/i, {|c| ((c.uc.ord - 65 + key) % 26) + 65 -> chr}); }; var msg = 'THE FIVE BOXING WIZARDS JUMP QUICKLY'; var enc = caesar(msg, 10); var dec = caesar(enc, 10, true); say "msg: #{msg}"; say "enc: #{enc}"; say "dec: #{dec}"; assert_eq(dec, msg);