序数增量吧 关注:387贴子:52,152
  • 8回复贴,共1

编程题:Tickspeed挑战

只看楼主收藏回复

反物质维度中有个挑战:

这是个并非“点进去然后略微等待,看看能不能完成”的挑战之经典例子。反之,它需要非平凡的操作才能完成。
因为实在太经典了于是我想将同样的机制放入我自己写的游戏之中。反物质维度C9中,反物质到1e308就封顶了,其实你买不了多少个东西(最多的tickspeed也就只能买306个)。但是,在自编游戏中,数值一大起来(比如,你可以一次性买10^10^10个东西),很多方法就行不通了。
问题:在C9中,当你一次性买很多个(比如10^10^10个)A的时候,如何计算其它东西要提升多少次价格?
——按照A的数量,一个一个对比所有其它东西,是行不通的。因为数值太大了。
discord上有人给出一个解法:
对所有其它东西,首先筛掉价格低于A原本价格的东西(它们不会提升价格)。
然后把它们的当前价格代入“A的价格反函数”,如果得出的数值不是整数,就筛掉。如果得出的数值大于等于A的最终数量,也筛掉。余下的东西,价格都增幅一次。
重复上一步,不断筛出、增幅,直到所有东西都筛掉为止。
——这个解法有两个弊端:
1、我们知道,javascript的数字是有精度的。如果你有10^20个A,这个数量将不会很精确。非整数会被近似成整数,于是原本没有的增幅也出现了。
2、如果一个“其它东西”的价格,即使增幅了多次,也还会反复地与A的价格匹配,那么上述筛出过程将很难结束
(比如A的价格是2^n,B的价格是8^n,当你一次性买了10^100个A之后,B可能会增幅超过10^99遍),最终导致游戏卡死。
那么,还有什么解法?


IP属地:北京1楼2024-03-16 08:07回复
    挑战9😱反物质的梦魇


    IP属地:广西来自iPhone客户端2楼2024-03-16 10:35
    收起回复
      建议去noip吧


      IP属地:山东来自Android客户端3楼2024-03-16 13:12
      回复
        所以现实之前的ic5有多离谱呢?我玩的都是reality之后的简单ic5


        IP属地:北京4楼2024-03-16 16:49
        收起回复
          ic5比c9简单


          IP属地:北京来自Android客户端5楼2024-03-17 09:43
          回复
            先计算tickspeed价格,然后再计算每一级购买到第几十次价格会超过这个价格,然后把价格覆盖


            IP属地:河北来自Android客户端6楼2024-04-26 18:01
            回复