[英]Simple crypt for learning ruby?
我想編寫一個程序來獲取用戶輸入,將每個字符向右移動一個(a = b,b = c,c = d 等......)。 如果沒有像這樣間隔的輸入,我將如何做到這一點 = hellowo r l d。
確保你也得到 z->a 。 像這樣:
"hallo world zzz".tr("a-z", "b-za")
如果要將一個單詞中的所有字符 position 向右移動,可以使用數組 class 中的rotate
方法並將其轉回字符串:
irb(main):008:0> word = "helloworld"
=> "helloworld"
irb(main):009:0> array = []
=> []
irb(main):010:0> word.each_char { |c| array << c }
=> "helloworld"
irb(main):011:0> array
=> ["h", "e", "l", "l", "o", "w", "o", "r", "l", "d"]
irb(main):012:0> array = array.rotate(-1)
=> ["d", "h", "e", "l", "l", "o", "w", "o", "r", "l"]
irb(main):014:0> array.join('')
=> "dhelloworl"
希望對您有所幫助……兩年后!
對於二進制字符串:
input = ...
encrypted = input.bytes.map {|b| (b == 255 ? 0 : b+1).chr }.join
decrypted = encrypted.bytes.map {|b| (b == 0 ? 255 : b-1).chr }.join
decrypted == input # => true
我不是在給你寫解決方案,這真的很容易。
您需要閱讀有關 Ruby 字符串操作的信息。
http://blog.grayproductions.net/articles/ruby_19s_string
http://ruby-doc.org/core/classes/String.html (尋找tr
)
最后一篇是一篇關於1.8.7和1.9.1區別的好文章
http://abhilekh.wordpress.com/2009/10/22/ruby-1-8-7-vs-ruby-1-9-1/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.