python高级练习题:与在Collatz启动模式号码【难度:4级】:
背景
著名的在Collatz序列与以下规则产生:
- 开始与一个正整数
一个[0] = N
. - 如果
A [1]
是偶数,A [1 + 1] = A [1] / 2
. - 否则,
A [1 + 1] = A [1] * 3 + 1
.
然而,对于这个习题的目的,我给一个** 略作修改的定义**:
- 如果
A [1]
是偶数,A [1 + 1] = A [1] / 2
.这一步是降压,或’D’. - 否则,
A [1 + 1] =(A [1] * 3 + 1)/ 2
.该步骤是一个升压,或U
.
此外,对于任何起始数量,可无限制地产生的序列,在1中未结束.
问题描述
对于任何给定的起始编号,我们可以从它记录的步骤的类型('D’或’U`).
例如,如果我们开始用数字11,在Collatz步骤是这样的:
一个[0] = 11
一个[1] =(11 * 3 + 1)/ 2 = 17 - >û
一个[2] =(17 * 3 + 1)/ 2 = 26 - >û
[3] = 26/2 = 13 - > d
一个[4] =(13 * 3 + 1)/ 2 = 20 - >û
一个[5] = 20/2 = 10 - > d
一个[6] = 10/2 = 5 - > d
一个[7] =(5 * 3 + 1)/ 2 = 8 - >û
一个[8] = 8/2 = 4 - > d
一个[9] = 4/2 = 2 - > d
一个[10] = 2/2 = 1 - > d
一个[11] =(1 * 3 + 1)/ 2 = 2 - >û
一个[12] = 2/2 = 1 - > d
...
11 - > 17 - > 26 - > 13 - > 20 - > 10 - > 5 - > 8 - > 4 - > 2 - > 1 - > 2 - > 1 - > ...
U U düd düd d düd
基于以上示出的步骤,11的前四个步骤在Collatz是UUDU
.
另外,107是超过100,其在Collatz步骤开始UUDU
最小数量,并且
1003是以财产最小数超过1000个.
一个特殊的例子是数字1,它可以产生任何数量的UD``.
找出最小的整数大于或等于N
其在Collatz步骤开始给定的字符串steps
.
约束
1 <= N <= 10 ** 9
N
始终是一个有效的整数.
1 <=长度(步骤)<= 25
steps将完全由U
s和D
s的`字符串’.
例子
collatz_steps(1, 'UUDU')== 11
collatz_steps(100, 'UUDU')== 107
collatz_steps(1000, 'UUDU')== 1003
collatz_steps(1, 'UD')== 1
collatz_steps(1, 'UDUD')== 1
collatz_steps(1, 'UDUDUD')== 1
collatzSteps(1, 'UUDU')== 11
collatzSteps(100, 'UUDU')== 107
collatzSteps(1000, 'UUDU')== 1003
collatzSteps(1, 'UD')== 1
collatzSteps(1, 'UDUD')== 1
collatzSteps(1, 'UDUDUD')== 1
提示
如果你是完全丢失,通过回答以下问题开始:
- 施加给定的步骤(例如
UUDU
)于初始数字x
后,
你得到了什么分数?
在这之后,你可能会想学习有关[模逆(https://en.wikipedia.org/wiki/Modular_multiplicative_inverse).
确认
(https://projecteuler.net/problem=277):这个问题是由[A改性在Collatz序列项目欧拉#277]的启发.
如果你喜欢这个习题,还请看看[我的其他Katas(https://www.codewars.com/users/Bubbler/authored)!
编程目标:
def collatz_steps(n, steps):
# Your Code Here
pass
测试样例:
test.it('Basic Tests')
test_data = [
((1, 'UUDU'), 11),
((100, 'UUDU'), 107),
((1000, 'UUDU'), 1003),
((1, 'UD'), 1),
((1, 'UDUD'), 1),
((1, 'UDUDUD'), 1)
]
最佳答案(多种解法):
更多关联题目:
python基础练习题:取消最低【难度:1级】–景越Python编程实例训练营,不同难度Python习题,适合自学Python的新手进阶
python基础练习题:reverseIt【难度:1级】–景越Python编程实例训练营,不同难度Python习题,适合自学Python的新手进阶
python基础练习题:惯性数组矩阵【难度:1级】–景越Python编程实例训练营,不同难度Python习题,适合自学Python的新手进阶
python基础练习题:海盗!是大炮准备好了!?【难度:0级】–景越Python编程实例训练营,不同难度Python习题,适合自学Python的新手进阶
python进阶练习题:最佳停车位【难度:2级】–景越Python编程实例训练营,不同难度Python习题,适合自学Python的新手进阶
交流讨论:
景越Python基础训练营QQ群
欢迎各位同学加群讨论,一起学习,共同成长!
免责申明:
本博客所有编程题目及答案均收集自互联网,主要用于供网友学习参考,如有侵犯你的权益请联系管理员及时删除,谢谢
题目收集至https://www.codewars.com/
https://www.codewars.com/kata/numbers-with-collatz-starting-patterns