Почти весь код на Питоне:
def euler_105_test(li):
dest=sorted(select_combinations(li),lambda x,y:x[1]-y[1])
return all(take(len(dest)-1,izip(dest,dest[1:])),lambda x:x[0][1] != x[1][1] and x[0][0] <= x[1][0])
def euler_105():
data = [[int(n) for n in line.split(',')] for line in file(r"d:\download\sets.txt")]
print sum(map(sum,filter(euler_105_test,data)))
Обратите внимание на строчки
all(take(len(dest)-1,izip(dest,dest[1:])),lambda x:x[0][1] != x[1][1] and x[0][0] <= x[1][0])
и
sum(map(sum,filter(euler_105_test,data)))
Мне даже сложно описать словами что выполняет первыя строчка.
Вторая строчка фактически суммирует двумерный массив.
Не приведен код функции select_combinations, но ее пока я не могу написать "красиво".
Комментариев нет:
Отправить комментарий