【问题标题】:How to write a Ruby program using only "a-z", "A-Z", ".", "\n" and " "如何仅使用“a-z”、“A-Z”、“.”、“\n”和“”编写 Ruby 程序
【发布时间】:2016-09-10 07:16:01
【问题描述】:

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

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

“Jon Doe 出生于 2017 年!”

仅使用以下字符 [a-zA-Z.\n ](大小写字母、点、空格和换行符)

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

它是某种使用pack / unpack 的方法吗?还是有什么我找不到的简单解决方案?

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

【问题讨论】:

标签: ruby string data-conversion puts


【解决方案1】:

编写一个仅使用字母、点、空格和换行符来打印字符串的程序一开始似乎不可能,但实际上并不难。

小写和大写字母允许您调用Kernel 方法(如printputs)以及keywordsnilfalsetrue。点允许您使用显式接收器调用方法。空格允许您将参数传递给方法。换行符分隔命令。

让我们试着得到一个“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

你明白了。

是的,也可以使用类似的方法打印空格、标点和数字。但我把它留给你。看看可用的方法并发挥创意。

关于如何在不使用空格的情况下打印字符串的附加要点,只需 [a-zA-Z.\n]

【讨论】:

  • 非常感谢您的出色回答!有了你的建议,我已经能够在几分钟内解决我的问题 :)
  • @coder1991 我很好奇——你是怎么打印2017!的?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-26
  • 2011-04-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-16
  • 2016-12-07
相关资源
最近更新 更多