如何仅使用 "a-z"、"A-Z"、"."、"\n" 和 " " 编写 Ruby 程序
How to write a Ruby program using only "a-z", "A-Z", ".", "\n" and " "
我正在尝试解决一些 Ruby 挑战,但我遇到了一些低级别(我想?)数字字符转换的大问题。
Just imagine, that you need to write program, that prints on your screen sentence ex.:
"Jon Doe was born in 2017!"
using only following characters [a-zA-Z.\n ] (small & big letters, dot, space and new line)
事实上,我什至不知道应该如何开始寻找答案。
它是某种使用 pack
/ unpack
的方法吗?还是有什么我找不到的简单解决方案?
"write program" 加粗是有原因的。问题是,Ruby中program最简单的定义是什么?
编写一个仅使用字母、点、space 和换行符来打印字符串的程序乍一看似乎是不可能的,但实际上并不难。
小写和大写字母允许您调用 Kernel
methods (like print
and puts
) as well as keywords,如 nil
、false
和 true
。点允许您使用显式接收器调用方法。 Space 允许您将参数传递给方法。换行符分隔命令。
让我们试着得到一个 "a":
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"
现在打印 "abc":
print false.inspect.chars.rotate.first
print false.inspect.chars.rotate.first.succ
print false.inspect.chars.rotate.first.succ.succ
puts
输出:
abc
你懂的。
是的,也可以使用类似的方法打印 spaces、标点符号和数字。但我把它留给你。查看可用的方法并发挥创意。
关于如何在不使用 space 的情况下打印字符串的额外要点,只是 [a-zA-Z.\n]
.
我正在尝试解决一些 Ruby 挑战,但我遇到了一些低级别(我想?)数字字符转换的大问题。
Just imagine, that you need to write program, that prints on your screen sentence ex.:
"Jon Doe was born in 2017!"
using only following characters [a-zA-Z.\n ] (small & big letters, dot, space and new line)
事实上,我什至不知道应该如何开始寻找答案。
它是某种使用 pack
/ unpack
的方法吗?还是有什么我找不到的简单解决方案?
"write program" 加粗是有原因的。问题是,Ruby中program最简单的定义是什么?
编写一个仅使用字母、点、space 和换行符来打印字符串的程序乍一看似乎是不可能的,但实际上并不难。
小写和大写字母允许您调用 Kernel
methods (like print
and puts
) as well as keywords,如 nil
、false
和 true
。点允许您使用显式接收器调用方法。 Space 允许您将参数传递给方法。换行符分隔命令。
让我们试着得到一个 "a":
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"
现在打印 "abc":
print false.inspect.chars.rotate.first
print false.inspect.chars.rotate.first.succ
print false.inspect.chars.rotate.first.succ.succ
puts
输出:
abc
你懂的。
是的,也可以使用类似的方法打印 spaces、标点符号和数字。但我把它留给你。查看可用的方法并发挥创意。
关于如何在不使用 space 的情况下打印字符串的额外要点,只是 [a-zA-Z.\n]
.