计算地铁时间



有一个问题,我试图回答,我有一个问题与最终输出。

问题:

该文件中所有站点的名称在7行中。在线路中,线路站点的名称已按顺序排列并有空间。(注意站名中不包含空格)

两站之间的列车运行时间为2分钟进入我们打算上车的车站需要的时间是17分钟从我们要步行的车站出来要花12分钟。我们换车的时间也是10分钟。请注意,在两条线路交叉的车站,你可以通过两条线路上车,你不需要等待换乘。

Mohsen不想自己从Digikala买东西,而是想坐地铁去购物。在规划路线后,他明白了他应该从地铁上设置的车站出发,然后到达下车的车站。

我们想让你写一个程序来计算Mohsen到达购物地点所需的最短时间。

文件:

Tajrish Gheytariyeh Shahid_Sadr Gholhak Doctor_Shari'ati Mirdamad Shahid_Haghani Shahid_Hemmat Mosalla-ye_Emam_Khomeini Shahid_Beheshti Shahid_Mofatteh Shohada-ye_Haftom-e_Tir Taleghani Darvazeh_Dowlat Sa'di Emam_Khomeini Panzdah-e_Khordad Khayyam Meydan-e_Mohammadiyeh Shoush Payaneh_Jonoub Shahid_Bokharaei Ali_Abad Javanmard-e_Ghassab Shahr-e_Rey Palayeshgah Shahed-Bagher_Shahr Haram-e_Motahhar-e_Emam_Khomeini Kahrizak
Farhangsara Tehranpars Shahid_Bagheri Daneshgah-e_Elm-o_San'at Sarsabz Janbazan Fadak Sabalan Shahid_Madani Emam_Hossein Darvazeh_Shemiran Baharestan Mellat Emam_Khomeini Hasan_Abad Daneshgah-e_Emam_Ali Meydan-e_Hor Shahid_Navab-e_Safavi Shademan Daneshgah-e_Sharif Tarasht Tehran_Sadeghiyeh
Gha'em Shahid_Mahallati Aghdasiyeh Nobonyad Hossein_Abad Meydan-e_Heravi Shahid_Zeynoddin Khajeh_Abdollah-e_Ansari Shahid_sayyad-e_Shirazi Shahid_Ghodousi Sohrevardi Shahid_Beheshti Mirza-ye_Shirazi Meydan-e_Jahad Meydan-e_Hazrat-e_Vali_Asr Teatr-e_Shahr Moniriyeh Mahdiyeh Rahahan Javadiyeh Zamzam Shahrak-e_Shari'ati Abdol_Abad Ne'mat_Abad Azadegan
Shahid_Kolahdouz Nirou_Havaei Nabard Pirouzi Ebn-e_Sina Meydan-e_Shohada Darvazeh_Shemiran Darvazeh_Dowlat Ferdowsi Teatr-e_Shahr Meydan-e_Enghelab-e_Eslami Towhid Shademan Doctor_Habibollah Ostad_Mo'in Meydan-e_Azadi Bimeh Shahrk-e_Ekbatan Eram-e_Sabz
Shahid_Sepahbod_Qasem_Soleimani Golshahr Mohammad_Shahr Karaj Atmosfer Garmdarreh Vardavard Iran_Khodro Chitgar Varzeshgah-e_Azadi Eram-e_Sabz Tehran_Sadeghiyeh
Shahid_Sattari Shahid_Ashrafi_Esfahani Yadegar-e_Emam Marzdaran Shahrak-e_Azmayesh Daneshgah-e_Tarbiat_Modarres Meydan-e_Hazrat-e_Vali_Asr Shohada-ye_Haftom-e_Tir Emam_Hossein Meydan-e_Shohada Amir_Kabir Shahid_Rezaei Be'sat Kiyan_Shahr Dowlat_Abad
Meydan-e_San'at Borj-e_Milad-e_Tehran Boostan-e_Goftegou Daneshgah-e_Tarbiat_Modarres Modafean-e_Salamat Towhid Shahid_Navab-e_Safavi Roudaki Komeyl Beryanak Helal_Ahmar Mahdiyeh Meydan-e_Mohammadiyeh Mowlavi Meydan-e_Ghiyam Chehel_Tan-e_Doulab Ahang Basij

这是迄今为止我所做的:

# tmp = []
results = []
def find_in_list_of_list(mylist, char):
for sub_list in mylist:
if char in sub_list:
return [mylist.index(sub_list), sub_list.index(char)]
raise ValueError("'{char}' is not in list".format(char=char))

with open("metro.txt", "r") as file:
lines = [line.split(" ") for line in file.read().split("n")]
for i in range(int(input())):
destination = input().split(" ")
for line in lines:
if destination[0] in line and destination[1] in line:
start = line.index(destination[0])
stop = line.index(destination[1])
time = (stop - start) * 2
results.append(17 + 12 + time)
elif destination[0] in line and destination[1] not in line:
start = line.index(destination[0])
stop = len(line)
line1 = lines.index(line)
line2 = find_in_list_of_list(lines, destination[1])
# tmp.append(line2[1])
# tmp.append(stop)
# tmp.append(start)
time = (stop - line2[1])
results.append(17 + 12 + time + 10)
else:
continue
# print(tmp)
for item in results:
print(item)

我的输出是错误的:

31
35
43
45
47
46

样本输入:

5
Tajrish Gheytariyeh
Tajrish Gholhak
Tarasht Eram-e_Sabz
Aghdasiyeh Sohrevardi
Towhid Baharestan

样本输出:

31
35
43
45
51

描述:

第一次从"Tajrish"以"Qaytaria"

在Tajrish站上车需要17分钟。从"tajrish"到"Qaitariya"需要2分钟。1号线站。走出"qaytarie"需要12分钟。站。因此,本次行程的总时间为:17 + 2 + 12 = 31

从"Tajrish"以"Gholhak"

在Tajrish站上车需要17分钟。6分钟就能到达"哈拉克"。从"Tajrish"1号线站。离开"哈拉克"需要12分钟。站。因此,本次行程的总时间为:17 + 6 + 12 = 35

从"塔什"出发的第三段旅程to "Eram Sabz":

在"塔什"上车需要17分钟。站。2分钟即可到达德黑兰(Sadeghie)。从"Taresh"2号线站。2号线到5号线在"德黑兰(萨德格)"换乘方向需要10分钟。站。2分钟即可到达"Eram Sabz"从"德黑兰(Sadeghie)";5号线站。离开需要12分钟&;Eram sabz &;站。因此,本次行程的总时间为:17 + 2 + 10 + 2 + 12 = 43

从"阿格迪什"出发的第四次旅程以"Sohrvardi"

在"Aqdasiyeh"上车需要17分钟。站。16分钟后到达Sohrvardi"从"Aqdasiyeh"3号线站。离开"sohrvardi"需要12分钟。站。因此,本次行程的总时间为:17 + 16 + 12 = 45

从"tawheed"开始的第五次旅程以"Baharistan"

在"tawheed"上车需要17分钟。站。10分钟即可到达"Darvaze shemiran"。从"Tawheed"4号线站。从4号线到2号线在达瓦兹谢梅兰站换乘方向需要10分钟。站。2分钟即可到达"巴哈斯坦"。源自"Darvaze Shemiran"5号线站。离开"巴哈斯坦"需要12分钟站。因此,本次行程的总时间为:17 + 10 + 10 + 2 + 12 = 51

我找不到错误到底是在你的代码,但我认为重写你的代码可以帮助。

results = []
with open("metro.txt", "r") as file:
lines = [line.split(" ") for line in file.read().split("n")]
for i in range(int(input())):
destination = input().split(" ")
for index, line in enumerate(lines):
if destination[0] in line:
# start is a tuple - (index of line in lines, index of station in line)
start = (index, line.index(destination[0]))
if destination[1] in line:
stop = (index, line.index(destination[0]))
# This else is useless, when we are at the end of a for block,
# we are automatically calling continue
# else:
#     continue
# Calculate travel time and append it to results here, right after the for loop
for item in results:
print(item)

我们现在知道在哪里站到底在(您可以访问这样的站点:lines[start[0]][start[1]])。在我看来,现在计算距离会更容易,你不需要find_in_list_of_list(mylist, char)

如果你想,我可以提供你将完全工作的例子,但我认为你想做它单独。

最新更新