Щоб перевірити, чи збалансований список невід’ємних цілих чисел , можна уявити, як розмістити відповідні ваги на дошці, а потім спробувати врівноважити дошку на шарнір, щоб узагальнені відносні ваги зліва та справа від стрижня були однаковими. Відносна вага задається шляхом множення ваги на її відстань до шарніра (див. Закон важеля ).
(Джерело: wikipedia )
Це зображення відповідає списку [100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5]
. Цей список збалансований, тому що 5
має відстань 20 до стрижня, 100
відстань 1 і 5*20 = 100 = 100*1
.
Приклади
3 1 5 7
#########
^
У цьому випадку шарнір знаходиться прямо під 5
, а 3
має відстань 2 та значення 1
та 7
має відстань 1. Отже, обидві сторони зліва та справа від зсуву підсумовуються до 7
( 3*2 + 1*1
ліворуч та 7*1
праворуч), тому список [3, 1, 5, 7]
збалансований.
Однак зауважте, що шарнір не повинен розміщуватися під одним із елементів списку, але він також може бути розміщений між двома елементами списку:
6 3 1
#######
^
У цьому випадку відстані стають 0.5, 1.5, 2.5, ...
тощо. Цей список також збалансований, оскільки 6*0.5 = 3 = 3*0.5 + 1*1.5
.
Сверток може бути розміщений лише під одним числом або точно посередині між двома номерами, а не, наприклад, на дві третини між двома номерами.
Завдання
Враховуючи список невід’ємних цілих чисел у будь-якому розумному форматі, виведіть truthy
значення, якщо список можна збалансувати, а falsy
значення - інакше.
Можна припустити, що список вхідних даних містить щонайменше два елементи і що принаймні один елемент не дорівнює нулю.
Це завдання з гольф-кодом , тому відповідь з найменшою кількістю байтів на кожній мові виграє.
Трубні тести
[1, 0]
[3, 1, 5, 7]
[6, 3, 1]
[100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5]
[10, 4, 3, 0, 2, 0, 5]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[7, 7, 7, 7]
Фальшиві тести
[1, 2]
[3, 6, 5, 1, 12]
[0, 0, 2, 0, 1, 0]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[6, 3, 2, 4, 0, 1, 2, 3]
[4, 0, 0, 2, 3, 5, 2, 0, 1, 2, 3, 0, 0, 1, 2, 4, 3, 1, 3, 0, 0, 2]
[100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5]
Чимало пов'язаних з цим проблем, коли ця проблема виявилася піскою : це збалансоване число? , Індекс рівноваги послідовності , Збалансуйте набір ваг на мотовилі , Балансуючи слова , Чи підкажу я? і куди належить стрижень?
You can assume that the input list contains at least two elements and that at least one element is non-zero.