Здравствуйте, Буравчик, Вы писали:
Б>Здравствуйте, $$, Вы писали:
Б>$>Здравствуйте, De-Bill, Вы писали:
DB>>>$>Сделать нужно в хакерранке, чтобы прошло скрытые тесты. Про переполнение сумм надо напоминать?
DB>>>https://www.hackerrank.com/challenges/s10-pearson-correlation-coefficient/problem
Б>$>1 час минимум потратил, пока оно заработало. Отлаживал в идее.
Б>Минут 20. В браузере:
Б>Б># Enter your code here. Read input from STDIN. Print output to STDOUT
Б>import math
Б>def read_input():
Б> n = float(input())
Б> x_arr = [float(x) for x in input().split()]
Б> y_arr = [float(x) for x in input().split()]
Б> return x_arr, y_arr
Б>def mean_std(arr):
Б> n = len(arr)
Б> mean = sum(arr) / n
Б> d = sum([(x-mean)**2 for x in arr]) / n
Б> std = math.sqrt(d)
Б> return mean, std
Б>def pearson(x_arr, y_arr):
Б> mean_x, std_x = mean_std(x_arr)
Б> mean_y, std_y = mean_std(y_arr)
Б> p_numerator = sum([(x-mean_x)*(y-mean_y) for x,y in zip(x_arr,y_arr)])
Б> p_denominator = len(x_arr) * std_x * std_y
Б> return p_numerator / p_denominator
Б>def main():
Б> x_arr, y_arr = read_input()
Б> p = pearson(x_arr, y_arr)
Б> print(f'{p:.3g}')
Б>main()
Б>
С точностью всё нормально?
mean_std — говнокод.