В настоящее время работает над функцией, описание которой здесь:
![Description of problem](https://i.stack.imgur.com/rMue7.png)
Здесь представлены функции доступа и абстракции данных
def word_time(word, elapsed_time):
"""A data abstrction for the elapsed time that a player finished a word."""
return [word, elapsed_time]
def word(word_time):
"""An accessor function for the word of a word_time."""
return word_time[0]
def elapsed_time(word_time):
"""An accessor function for the elapsed time of a word_time."""
return word_time[1]
И закодированная мной функция, которая не учитывает абстракцию данных:
def fastest_words(word_times, margin=1e-5):
"""A list of which words each player typed fastest."""
n_players = len(word_times)
n_words = len(word_times[0]) - 1
assert all(len(times) == n_words + 1 for times in word_times)
assert margin > 0
# BEGIN PROBLEM 9
maxScore = 1000000
winner = -1
playersResults = []
for i in range(n_players):
playersResults.append([])
for x in range(n_words):
bestScore = float ('inf')
for y in range(n_players):
timePassed = word_times[y][x+1][1] - word_times[y][x][1]
if timePassed < bestScore:
bestScore = timePassed
winner = y
for z in range(n_players):
elapsed = word_times[z][x+1][1] - word_times[z][x][1]
if elapsed - bestScore <= margin:
playersResults[z].append(word_times[z][x+1][0])
return playersResults
Я пытался перевести ее на абстракцию данных, но она не работает, и я не знаю, почему?
def fastest_words(word_times, margin=1e-5):
"""A list of which words each player typed fastest."""
n_players = len(word_times)
n_words = len(word_times[0]) - 1
assert all(len(times) == n_words + 1 for times in word_times)
assert margin > 0
# BEGIN PROBLEM 9
maxScore = 1000000
winner = -1
playersResults = []
for i in range(n_players):
playersResults.append([])
tempComparison = 0
tempElapsed = 0
for times in word_times:
bestScore = float ('inf')
for y in range(n_players):
timePassed= elapsed_time(times[y]) - tempComparison
tempComparison = timePassed
if timePassed < bestScore:
bestScore = timePassed
winner = y
for z in range(n_players):
elapsed = elapsed_time(times[y]) - tempElapsed
tempElapsed = elapsed
if elapsed - bestScore <= margin:
playersResults[z].append(word(times))
return playersResults
Но я действительно не понимаю, как это сделать?