相关疑难解决方法(0)

代码高尔夫:四是魔术

这个谜题

我在高中时听到的一个小谜题是这样的......

  • 提问者会让我给他一个号码;
  • 在听到这个数字时,提问者会反复对它进行某种改变(例如,他可能会说十个是三个),直到最终到达数字4(此时他将用四个完成魔术).
  • 无论如何,任何数字似乎最终都可以转化为四个.

目标是试图找出转换功能,然后能够自己可靠地监督这个难题.

解决方案

任何步骤的转换功能都是

  • 拿这个号码,
  • 计算其英文单词表示中的字母数,忽略连字符或空格或"和"(例如,"十"中有3个字母,"三十四"中有10个字母,"一百四十三"有20个字母).
  • 返回那个字母数.

对于我曾经考虑过的所有数字,这会收敛到4.由于"四"也有四个字母,所以这里会有一个无限循环; 相反,它仅仅被称为魔术以结束序列.

挑战

您的挑战是创建一段代码,该代码将从用户读取数字,然后打印显示重复应用的转换函数的行,直到达到"四是魔术".

特别:

  1. 解决方案必须是完整的程序.它们不仅仅是在输入中引入数字因子的函数.
  2. 必须从标准输入读取输入.(从"echo"管道或使用输入重定向管道很好,因为它也来自stdin)
  3. 输入应为数字形式.
  4. 对于转换函数的每个应用,都应打印一行:a is b.其中a和b是转换中数字的数字形式.
  5. 需要完整停止(期间)!
  6. 最后一行自然应该说,4 is magic..
  7. 代码应为0到99之间的所有数字生成正确的输出.

例子:

> 4
4 is magic.

> 12
12 is 6.
6 is 3.
3 is 5.
5 is 4.
4 is magic.

> 42
42 is 8.
8 is 5.
5 is 4.
4 is magic.

> 0 …
Run Code Online (Sandbox Code Playgroud)

language-agnostic code-golf rosetta-stone

88
推荐指数
14
解决办法
7015
查看次数