小球钟(模拟算法)

题目描述

小球钟是一个通过不断在轨道上移动小球来度量时间的设备。 每分钟,一个转动臂将一个小球从小球队列的底部挤走,并将它上升到钟的顶部并将它安置在一个表示分钟,5分钟,15分钟和小时的轨道上。 这样可以显示从1:00到24:59(这正是奇怪之处)范围内的时间,若有3个球在分钟轨道,1个球在5分钟轨道,2个球在15分钟轨道及15个球在小时轨道上,就显示时间15:38。 

当小球通过钟的机械装置被移动后,它们就会改变其初始次序。仔细研究它们次序的改变,可以发现相同的次序会不断出现。由于小球的初始次序最后迟早会被重复,所以这段时间的长短是可以被度量的,这完全取决于所提供的小球的总数。 

 每分钟,最近最少被使用的那个小球从位于球钟底部的小球队列被移走,并将上升安置于显示分钟的轨道上,这里可以放置4个小球。 当第5个小球滚入该轨道,它们的重量使得轨道倾斜,原先在轨道上的4个小球按照与它们原先滚入轨道的次序相反的次序加入到钟底部的小球队列。 引起倾斜的第5个小球滚入显示5分钟的轨道。该轨道可以放置2个球。 当第3个小球滚入该轨道,它们的重量使得轨道倾斜,原先2个小球同样以相反的次序加入钟底部的小球队列。而这第3个小球滚入了显示15分钟的轨道。这里可以放置3个小球。当第4个小球滚入该轨道,它们的重量使得轨道倾斜,原先在轨道上的3个小球按照与它们原先滚入轨道的次序相反的次序加入钟底部的小球队列,而这第4个小球滚入了显示小时的轨道。该轨道同样可以放置23个球,但这里有一个外加的固定的不能被移动的小球,这样小时的值域就变为1到24。 从15分钟轨道滚入的第24个小球将使小时轨道倾斜,这23个球同样以相反的次序加入钟底部的小球队列,然后那第24个小球同样加入钟底部的小球队列。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值