From: Jun Adachi Date: 2000-05-24T10:41:38+09:00 Subject: [ruby-list:22873] Re: comp.lang.ruby 安達@沖データと申します。 > 松永です。 > kikutani> (ってrot13ってどうやるの?) > rot13.el を使うか、nkf -r を使うか。ニュースリーダーによってはコマンド > として準備されているはず。 出力から推測するにはrot13てのは、アルファベット文字だけを13文字シフト する単純な換字暗号のようですね。だから、encodeとdecodeが同じプログラム でできてかーんたんってのが、メリットなんでしょうか。 rubyでコード書いてみました。Cでよくやるように、"ABC..."て文字列のテー ブルを引くバージョンも作って見たのですが、下のやつより遅かったです。 #でも、なんかコードがださいっす。 #! /usr/local/bin/ruby def rot13 (s) result = Array.new s.split('').each { | c | if (c =~ /[A-Z]/o) result.push((((c[0] - 'A'[0]) + 13) % 26 + 'A'[0]).chr) elsif (c =~ /[a-z]/o) result.push((((c[0] - 'a'[0]) + 13) % 26 + 'a'[0]).chr) else result.push(c) end } result.join('') end 100.times { ('A'[0] .. 'z'[0]). each { | c | p rot13(c.chr) } } -- *------* adachi@okidata.co.jp |人∧鷲| 沖データ 第一研究所 | <女> | 安達 淳 |牛∨獅| *------*