首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >反Collatz猜想

反Collatz猜想
EN

Code Golf用户
提问于 2018-11-04 20:24:07
回答 23查看 3.1K关注 0票数 17

我认为Collatz猜想已经广为人知了。但如果我们颠倒了规则呢?

从整数n >= 1开始。

重复下列步骤:

如果n是偶数,则乘以3并加1。

如果n是奇数,减去1,除以2。

当它达到0时停止

打印迭代的数字。

测试用例:

代码语言:javascript
复制
 1        => 1, 0
 2        => 2, 7, 3, 1, 0
 3        => 3, 1, 0
10        => 10, 31, 15, 7, 3...
14        => 14, 43, 21, 10, ...

规则:

  • 这个序列不适用于很多数字,因为它进入一个无限循环。你不需要处理那些案子。只打印上面的测试用例就足够了。
  • 我建议减去1,除以2,给出一个有效的整数来继续,但不需要这样计算。您可以将其除以2,并转换为整数或其他将提供预期输出的方法。
  • 您还需要打印初始输入。
  • 不需要将输出格式化为测试用例。这只是个建议。但是,必须尊重迭代顺序。
  • 最小的代码获胜。
EN

回答 23

Code Golf用户

发布于 2018-11-04 20:41:00

果冻,9字节

代码语言:javascript
复制
:++‘ƊḂ?Ƭ2

在网上试试!

票数 4
EN

Code Golf用户

发布于 2018-11-04 21:40:26

Wolfram语言(数学),35字节

代码语言:javascript
复制
0<Echo@#&�[3#+1-(5#+3)/2#~Mod~2]&

在网上试试!

0<Echo@# && ...&是短路评估:它打印输入#,检查它是否为正,如果是,评估...。在本例中,...#0[3#+1-(5#+3)/2#~Mod~2];由于#0 (零时隙)是函数本身,这是对3#+1-(5#+3)/2#~Mod~2的递归调用,它在#为偶数时简化为3#+1,在#为奇数时简化为(#-1)/2

票数 3
EN

Code Golf用户

发布于 2018-11-04 21:13:49

贾尔,18字节

代码语言:javascript
复制
![ؼw>î?èÛ|õÀ

在网上试试!

票数 2
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/175248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档