Bonjour, j'ai trouvé ce problème en python :
https://prologin.org/train/2021/qualification/labyrinthe_demoniaque
J'essaye depuis quelques jours de le résoudre. J'ai regardé aucun tutoriel ou autre sur comment résoudre ce genre de problème et j'ai donc un peu improvisé. J'ai tenté de faire quelque chose et je ne comprends pas pourquoi ça ne fonctionne pas. Si quelqu'un de bon en python pourrait éclairer ma lanterne (:
Si vous avez besoins que je vous explique la logique dans mon code, il n'y a aucun problème.
Merci beaucoup_
Modifié par vzytoi (25 Jan 2021 - 22:17)
https://prologin.org/train/2021/qualification/labyrinthe_demoniaque
J'essaye depuis quelques jours de le résoudre. J'ai regardé aucun tutoriel ou autre sur comment résoudre ce genre de problème et j'ai donc un peu improvisé. J'ai tenté de faire quelque chose et je ne comprends pas pourquoi ça ne fonctionne pas. Si quelqu'un de bon en python pourrait éclairer ma lanterne (:
def labyrinthe_demoniaque(a, n, m, plateau):
def initiate_target_count(plateau,p=[]):
for line in range(len(plateau)):
p.append(0)
for element in range(len(plateau[line])):
p[line] = [[i,0] for i in plateau[line]]
return p
plateau = initiate_target_count(plateau)
def get_target_list(iM,m):
if iM != 0 and iM != m-1:
return [iM-1,iM,iM+1]
elif iM == 0:
return [iM, iM+1]
elif iM == m-1:
return [iM-1,iM]
iN,iM,ha,r,ended=0,0,[],[],False
target=get_target_list(iM,m)
while ended == False:
a -= plateau[iN][iM][0]
ha.append(plateau[iN][iM][0])
if a > 0:
print(iM)
if iN == n-1:
ended = True
plateau[iN][iM][1] += 1
iM = get_target_list(iM,m)[0]
iN += 1
else:
if iM == get_target_list(iM,m)[-1]:
a += ha[-1]
if iM == 0:
if plateau[iN-1][iM+1][1] == 0:
iN -= 1
else:
iN -= 1
iM += 1
elif iM == n-1:
if plateau[iN-1][iM][1] == 0:
iN -= 1
iM -= 1
else:
iN -= 1
else:
if plateau[iN-1][iM+1][1] == 0:
if plateau[iN-1][iM][1] == 0:
iN -= 1
iM -= 1
else:
iN -= 1
else:
iN -= 1
iM += 1
else:
iM += 1
if __name__ == '__main__':
a,n,m = 12,4,4
plateau = [[4, 4, 3, 4], [3, 5, 5, 4], [2, 4, 5, 3], [4, 3, 2, 5]]
print(labyrinthe_demoniaque(a, n, m, plateau))
Si vous avez besoins que je vous explique la logique dans mon code, il n'y a aucun problème.
Merci beaucoup_
Modifié par vzytoi (25 Jan 2021 - 22:17)