python - 球弹跳问题,舍入误差还是算法错误?
问题描述
在 codewar 上有弹跳问题说:
""" 一个孩子在一座高楼的第 n 层玩球。这层楼的高度 h 是已知的。
他把球扔出窗外。球反弹(例如)到其高度的三分之二(反弹 0.66)。
他的母亲从距离地面 1.5 米的窗户向外望去。
妈妈会看到多少次球从她的窗前经过(包括它下落和弹跳的时候?
有效实验必须满足三个条件: 以米为单位的浮动参数“h”必须大于 0 浮动参数“bounce”必须大于 0 且小于 1 浮动参数“window”必须小于 h。如果以上三个条件都满足,则返回一个正整数,否则返回-1。
注意:只有反弹球的高度严格大于窗口参数才能看到球。
例子:
h = 3,反弹 = 0.66,窗口 = 1.5,结果为 3
h = 3,bounce = 1,window = 1.5,结果为 -1 """
问题并不难,在对数时间内通过以下方式解决:
def bouncingBall(h, bounce, window):
if h > 0 and window < h and bounce > 0 and bounce <1:
ct=1
while bounce*h > window:
ct += 2
h *= bounce
return ct
else:
return -1
我的第一个冲动是像这样在恒定时间内解决问题:
def bouncingBall(h, bounce, window):
import math
return 2*int(math.log(window/h,bounce))+1 if h > 0 and window < h and bounce > 0 and bounce <1 else -1
不工作,因为 19 次通过了测试,3 次没有通过。错误:“3 应该等于 1”,2 次;“退出代码”,1次。我认为这是四舍五入的问题,但仍然没有解决方案。希望有人帮忙!
解决方案
推荐阅读
- python - 以字符串形式返回时区感知 postgres 字段
- java - 配置类中的 Spring bean 未在 .xml 文件中定义的 bean 中自动装配
- python - 如何在 Kivy 标签上获得背景颜色?
- python - 如何将 Pyplot 输出图上的 X 轴调整到正确的位置?
- python - PyCharm Jupyter notebook 没有名为“工具箱”的模块
- objective-c - subscriberCellularProvider 在 iOS 12.0 中已弃用
- windows - 复制文件后更新“创建日期”
- amazon-web-services - 如何在 aws 经典负载均衡器上重定向 http -> https?
- ios - iOS 自动续订订阅收据验证问题
- r - 如何按日期对两个表“tk_xts”求和