如何仅使用“a-z”,“A-Z”,“。”,“\ n”和“”

时间:2016-09-10 07:16:02

标签: ruby string data-conversion puts

我正在尝试解决一些Ruby挑战,我遇到了一些低级别(我猜?)数字字符转换的大问题。

  

想象一下,你需要编写程序,这会打印在屏幕上的句子中:

     

“Jon Doe出生于2017年!”

     

仅使用以下字符 [a-zA-Z。\ n] (小字母和大字母,点,空格和新行)

事实上,我不知道如何开始寻找答案。

是否使用pack / unpack方法?或者是否有任何我无法找到的解决方案?

“写程序”加粗是有原因的。问题是,Ruby中程序的最简单定义是什么?

1 个答案:

答案 0 :(得分:2)

编写一个只使用字母,点,空格和换行符打印字符串的程序起初看起来似乎不太可能,但实际上并不那么难。

小写和大写字母允许您调用Kernel方法(如printputs)以及keywords,例如nil,{{1} }和false。点允许您使用显式接收器调用方法。 Space允许您将参数传递给方法。 Newline分隔命令。

让我们尝试获得一个“a”:

true

现在让我们打印“abc”:

false                            #=> false
false.inspect                    #=> "false"
false.inspect.chars              #=> ["f", "a", "l", "s", "e"]
false.inspect.chars.rotate       #=> ["a", "l", "s", "e", "f"]
false.inspect.chars.rotate.first #=> "a"

输出:

print false.inspect.chars.rotate.first
print false.inspect.chars.rotate.first.succ
print false.inspect.chars.rotate.first.succ.succ
puts

你明白了。

是的,也可以使用类似的方法打印空格,标点符号和数字。但我把它留给你。看看可用的方法并具有创造性。

有关如何在不使用空格的情况下打印字符串的其他要点,只需abc