我认为正确答案是1003,有理有据
来源:8-13 划算还是不划算
月明否
2020-04-16
首先,我看了提问区里普遍的答案,挑出一位比较有说服力的同学的答案:
gold = 1
diamond = 0.05 * gold
vit = gold
def DoesItValue():
l1_jeweller = 0.75 * gold + 8 * diamond
l3_jeweller = 10 * vit +0.39 * gold +12 *l1_jeweller
l4_jeweller = 10 * vit + l3_jeweller+(16 * l1_jeweller + 0.897 * gold)/0.4878
l6_jeweller = 10 * vit +19.75 * gold +12 * l4_jeweller
if l6_jeweller > 750:
print('不值得自己合成,'+ '合成金额是:',l6_jeweller)
else :
print('值得自己合成,'+ '合成金额是:',l6_jeweller)
DoesItValue()
#输出:不值得自己合成,合成金额是: 914.7409471094709
#注释,我先做的时候也是算出来1300,但是仔细看L3到L4时会发现,L3和体力无论合成成功与否都不会白费,如果合成成功,计入L4成本,没成功则退还。所以只有16个L1和黄金需要除以合成的概率。
来源:提问区,慕仙6277452
第一点:
仔细看L3到L4时会发现,L3和体力无论合成成功与否都不会白费
这里课上没讲,我原来以为原材料和体力都是要作废的。看到这里我将自己的代码重新改了一遍,仅做吐槽。
第二点:
l3_jeweller = 10 * vit +0.39 * gold +12 *l1_jeweller
课上的说明是:
1颗1级石头变成1颗3级石头,需要消耗12颗1级石头
那么问题来了,“变成”,就意味着合成1个3级石头,需要1个1级石头作为原材料,还需要12颗1级石头作为合成材料,总共13颗1级石头。显然这位同学的12颗不足以说服我。
以此类推,合成4级、6级的石头应该也需要原材料。
所以,我算出来的最终答案是1003。
下面附上我的代码:
因为我用的是分层级的项目结构,所以这里贴出package中的value.py价值表文件和calc.py计算函数文件,不会影响阅读
# value.py
'''
各级资源的价值表,储存各类价值常量
'''
'''
购买1级石头
'''
l1_gold = 0.75 # 1颗1级石头消耗0.75金
l1_diamond = 8 # 1颗1级石头同时还需要消耗8颗钻石
'''
1级合成3级
'''
l1_to_l3_amount = 12 # 1颗1级石头变成1颗3级石头,需要消耗12颗1级石头
l1_to_l3_gold = 0.39 # 同时还需要消耗0.39金
l1_to_l3_vit = 10 # 同时还需要消耗10点体力
'''
3级合成4级
'''
l3_to_l4_amount = 16 # 1颗3级石头变成1颗4级石头,需要消耗16个1级石头
l3_to_l4_gold = 0.897 # 同时还需要消耗0.897金
l3_to_l4_vit = 10 # 同时还需要消耗10点体力
l3_to_l4_rate = 0.4878 # 1颗3级石头变成1颗4级石头,成功概率只有0.4878,并非100%
'''
4级合成6级
'''
l4_to_l6_st4_amount = 12 # 1颗4级石头变成6级石头,概率100%,需要消耗12颗4级石头
l4_to_16_gold = 19.75 # 同时还需要消耗19.75金
l4_to_16_vit = 10 # 同时还需要消耗10体力
'''
已知1颗6级石头的市场售价为750金,请问是自己合成石头划算还是直接购买划算
其他数据:
- 1颗钻石diamond 卖出 0.05金
- 1点体力vit 可以卖出 1金
'''
diamond_to_gold_price = 0.05
vit_to_gold_price = 1
# calc.py
'''
计算合成各级石头所需的消耗
'''
from value import *
# from .value import *
def l1_to_l3(amount=1):
'''
传入所需合成的3级石头的数量,依次返回合成3级石头所消耗的金,钻石,体力
'''
cost_gold_per = (1 + l1_to_l3_amount) * l1_gold + l1_to_l3_gold
cost_diamond_per = (1 + l1_to_l3_amount) * l1_diamond
cost_vit_per = l1_to_l3_vit
cost_gold,cost_diamond,cost_vit = cost_gold_per*amount,cost_diamond_per*amount,cost_vit_per*amount
return cost_gold,cost_diamond,cost_vit
def l1_to_l4(amount=1):
'''
传入所需合成的4级石头的数量,依次返回合成4级石头所消耗的金,钻石,体力
'''
# 考虑1颗3级石头的成本
cost_gold_per,cost_diamond_per,cost_vit_per = l1_to_l3(1)
# 考虑l3_to_l4的成本 + 成功概率
cost_gold_per += (l3_to_l4_amount * l1_gold + l3_to_l4_gold) / l3_to_l4_rate
cost_diamond_per += (l3_to_l4_amount * l1_diamond) / l3_to_l4_rate
cost_vit_per += l3_to_l4_vit
cost_gold,cost_diamond,cost_vit = cost_gold_per*amount,cost_diamond_per*amount,cost_vit_per*amount
return cost_gold,cost_diamond,cost_vit
def l1_to_l6(amount=1):
'''
传入所需合成的6级石头的数量,依次返回合成6级石头所消耗的金,钻石,体力
'''
# 考虑1颗4级石头的成本+l4_to_l6的成本
cost_gold_per = l1_to_l4(1 + l4_to_l6_st4_amount)[0] + l4_to_16_gold
cost_diamond_per = l1_to_l4(1 + l4_to_l6_st4_amount)[1]
cost_vit_per = l1_to_l4(1 + l4_to_l6_st4_amount)[2] + l4_to_16_vit
cost_gold,cost_diamond,cost_vit = cost_gold_per*amount,cost_diamond_per*amount,cost_vit_per*amount
return cost_gold,cost_diamond,cost_vit
def convert(amount=1,level=6):
'''
传入所需合成的石头级别与数量,换算合成该级石头所消耗的资源(统一换算为金币),结果返回最后换算的金币值
'''
if level == 6:
resource_per = l1_to_l6(1)
elif level == 4:
resource_per = l1_to_l4(1)
elif level == 3:
resource_per = l1_to_l3(1)
elif level == 1:
ans_gold = l1_gold + l1_diamond * diamond_to_gold_price
return ans_gold
cost_gold_per,cost_diamond_per,cost_vit_per = resource_per
ans_gold_per = cost_gold_per + cost_diamond_per*diamond_to_gold_price + cost_vit_per*vit_to_gold_price
ans_gold = ans_gold_per*amount
return ans_gold
# print('l1_gold:',convert(level=1))
# print('l3_gold:',convert(level=3))
# print('l4_gold:',convert(level=4))
# print('l6_gold:',convert(level=6))
写回答
2回答
-
飞翔的光少
2020-08-12
哈哈哈,那个体力归还的应该讲了吧
10 -
7七月
2020-04-16
L3到L4肯定是材料和体力都作废啊,不然这个概率有啥意义?失败一次,材料和体力都归还?
那这个概率有何意义。
012020-05-09
相似问题
交作业了,答案是不划算
回答 1
老师帮我看下答案对不对啊
回答 1