An algorithm stood convicted of numerical instability if it could be replaced by a new algorithm at least about as fast and accurate as the old for all data, and good for all data for which the old algorithm was bad.
class String def to_c(n) if %r|^n|=~n n=(n.sub(%r|^n|,"").to_i+26)%26 lb=("A".."Z").to_a.join sb=("a".."z").to_a.join la=lb[n..25]+lb[0..n-1] sa=sb[n..25]+sb[0..n-1] return self.tr(lb,la).tr(sb,sa) else return self end end end
p "Hello,World!".to_c("n3") #=>"Khoor,Zruog!" p "Hello,World!".to_c("n-5") #=>"Czggj,Rjmgy!" p "Hello,World!".to_c("s") #=>"Hello,World!" p "Khoor,Zruog!".to_c("n-3") #=>"Hello,World!" p "Czggj,Rjmgy!".to_c("n5") #=>"Hello,World!" 0358デフォルトの名無しさん2024/06/07(金) 09:04:13.66ID:tQi+9x5m #! ruby
class String def to_c(n) if %r|^n|=~n n=(n.sub(%r|^n|,"").to_i+26)%26 lb=("A".."Z").to_a.join sb=("a".."z").to_a.join la=lb[n..25]+lb[0..n-1] sa=sb[n..25]+sb[0..n-1] return self.tr(lb,la).tr(sb,sa) else return self end end end
p "Hello,World!".to_c("n3") #=>"Khoor,Zruog!" p "Hello,World!".to_c("n-5") #=>"Czggj,Rjmgy!" p "Hello,World!".to_c("s") #=>"Hello,World!" p "Khoor,Zruog!".to_c("n-3") #=>"Hello,World!" p "Czggj,Rjmgy!".to_c("n5") #=>"Hello,World!" 0359デフォルトの名無しさん2024/06/07(金) 21:13:26.78ID:U/DqAKAj>>356 R https://ideone.com/Qj6B3w0360デフォルトの名無しさん2024/06/07(金) 23:24:01.54ID:KUK95Vnh Haskell 範囲外の数値は平文字をそのまま返すこととした。
import Data.Char
cearsar n |(-26) <= n && n <= 26 = map (f n) where f x = chr.(+x).ord cearsar _ = cearsar 0