3370. 牛年(模拟)

网友投稿 701 2022-11-05

3370. 牛年(模拟)

3370. 牛年(模拟)

文章目录

​​Question​​​​Ideas​​​​Code​​

Question

Farmer John 的奶牛们得知最近正在庆祝牛年的到来时十分兴奋。

牛年总是奶牛们的最爱。

我们知道,中国历法中每一年所对应的生肖遵循 12 年的周期:Ox, Tiger, Rabbit, Dragon, Snake, Horse, Goat, Monkey, Rooster, Dog, Pig, Rat(牛、虎、兔、龙、蛇、马、羊、猴、鸡、狗、猪、鼠),然后回到牛。

奶牛 Bessie 自豪地说她是在许多年前的一个牛年出生的。

她的朋友 Elsie 想要知道她与 Bessie 出生相差多少年,并且希望你能够通过查看农场上若干奶牛出生年份之间的关系来帮助她推算。

输入格式 输入的第一行包含一个整数 N。

以下 N 行每行包含一个 8 个单词的短语,指定了两头奶牛的出生年份之间的关系,格式为 Mildred born in previous Dragon year from Bessie(Mildred 在 Bessie 出生的前一个龙年出生),或 Mildred born in next Dragon year from Bessie(Mildred 在 Bessie 出生的后一个龙年出生)。

最后一个单词是农场上某一头奶牛的名字,为 “Bessie” 或一头已经在之前的输入中出现过的奶牛。

第一个单词是农场上某一头奶牛的名字,不为 “Bessie” 且未在之前的输入中出现过。

所有的奶牛名字不超过 10 个字符,且仅包含字符 a…z 或 A…Z。

第 5 个单词是上述十二生肖之一。

第 4 个单词是 previous(之前)或 next(之后)之一。

例如,如果短语为 Mildred born in previous Dragon year from Bessie,则 Mildred 的出生年份为最为接近且严格处于 Bessie 的出生年份之前(不等于)的龙年。

输出格式 输出 Bessie 和 Elsie 的出生年份之间相差的年数。输入保证可以通过给定的信息求出结果。

数据范围 1≤N≤100 输入样例: 4 Mildred born in previous Dragon year from Bessie Gretta born in previous Monkey year from Mildred Elsie born in next Ox year from Gretta Paulina born in next Dog year from Bessie 输出样例: 12 样例解释 在以上的输入中,

Elsie 在 Bessie 之前 12 年出生。 Mildred 在 Bessie 之前 9 年出生。 Gretta 在 Bessie 之前 17 年出生。 Paulina 在 Bessie 之后 9 年出生。

Ideas

以Bessie年龄为划分点,左边的就是小于他的,右边的就是大于他的,每次直接计算年龄

Code

# # 先根据所有输入求出每个人与输入之间的年龄差,然后根据关系求解Elsie 和 Bessie 之间的年龄差# lis = ['Ox', 'Tiger', 'Rabbit', 'Dragon', 'Snake', 'Horse', 'Goat', 'Monkey', 'Rooster', 'Dog', 'Pig', 'Rat']# age_dic = {'Bessie':0} # 存放a和b的年龄差 ab为+# dic = {'Bessie':'Ox'} # 存放属性# n = int(input())# for i in range(n):# in_s = input().strip().split()# name_a, state, a_shuxing, name_b = in_s[0],in_s[3],in_s[4],in_s[7]# dic[name_a] = a_shuxing# if state == 'previous': # 12-|a_shuixng-b_shuxing|# if (lis.index(a_shuxing) - lis.index(dic[name_b])) > 0:# age_dic[f'{name_a}']= age_dic[name_b] - (abs(lis.index(a_shuxing) - lis.index(dic[name_b])) + 12)# else:# age_dic[f'{name_a}']= age_dic[name_b] - abs(lis.index(a_shuxing) - lis.index(dic[name_b]))# else: # 如果a的属性比b的属性小 那么需要加上12,否则不需要# if lis.index(a_shuxing) - lis.index(dic[name_b]) < 0:# age_dic[f'{name_a}'] = age_dic[name_b] + (12 + lis.index(a_shuxing) - lis.index(dic[name_b])) # else:# age_dic[name_b] + lis.index(a_shuxing) - lis.index(dic[name_b])# print(age_dic)# 思路:以Bessie年龄为划分点,左边的就是小于他的,右边的就是大于他的,每次直接计算年龄def main(): animal_ID = { "Rat": 0, "Ox": 1, "Tiger": 2, "Rabbit": 3, "Dragon": 4, "Snake": 5, "Horse": 6, "Goat": 7, "Monkey": 8, "Rooster": 9, "Dog": 10, "Pig": 11 } name_res = dict() name_ID = dict() name_res["Bessie"] = 0 name_ID["Bessie"] = 1 n = int(input()) for _ in range(n): x, a, b, left, animal, d, e, y = input().split() xID = animal_ID[animal] name_ID[x] = xID yID = name_ID[y] #----如果x在y的左侧 if left == "previous": if xID < yID: name_res[x] = name_res[y] - (yID - xID) else: name_res[x] = name_res[y] - (yID + 12 - xID) #----如果x在y的右侧 else: if xID > yID: name_res[x] = name_res[y] + (xID - yID) else: name_res[x] = name_res[y] + (12 - yID + xID) res = name_res["Elsie"] print(abs(res))if __name__ == "__main__": main()

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:微信小游戏《加减大师》脚本
下一篇:航班时间(计算时间差)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~