Закон про балансування
Пиляльна пилка (нібито від французької «ci-ça», що означає «це-те») утворює третину святої трійці обладнання дитячих майданчиків, а також подібні всюдисущі гірки та гойдалки. Пилка-пила знаходиться в ідеальному рівновазі, якщо і лише тоді, коли сума моментів з кожного боку рівнозначна. Отже, пилка може врівноважуватися, додаючи певну кількість ваги в бік із сумою нижнього моменту; досягти цього - ваша мета цього завдання.
Виклик
Ваша задача полягає в тому, щоб зобразити пилку як вхідну та вивести її знову, з додаванням ваги в один кінець пилорами, щоб збалансувати її.
Вхідні дані
Ваша програма повинна приймати в будь-якому розумному форматі пильну пилку ASCII, таку як:
100 100
-------------------
^
Перший рядок містить два числа, кожне з яких представляє ваги на пилорізі. Рівно одна вага присутня на кожній стороні, кожна виступає в самому кінці своєї сторони дошки. Ваги гарантуються цілими числами, і завжди вирівнюють їх відповідним кінцем дошки. Ці числа ніколи не перекриють опорну точку ( ^
).
Другий рядок являє собою «дошку» пилорами. Кожен тире ( -
) являє собою рівну довжину один до одного тире, за винятком тире безпосередньо над опорою ( ^
), яка не має довжини.
Третій рядок являє собою основу пилорами. Ця опорна точка позначена єдиним символом, який не є пробілом на цій лінії, circflex ('^'). Орієнтир може бути розміщений в будь-якому місці по всій довжині дошки на дійсному вході, поки залишається достатньо місця, щоб цифри, що представляють ваги, не перекривали опорну точку ні на вході, ні на виході.
Гарантовано, що на вході є три рядки і не залишаться пробілів до або після символів, що складають пильну пилку (крім звичайно третього рядка, який цього вимагає).
Вихідні дані
Для виведення однакового зображення пилки слід роздруковувати у вигин, але одна (і лише одна) ваг замінюється більшою вагою, щоб врівноважувати пилку. Гарантовані введення дозволяють зробити це можливим, використовуючи лише цілі числа. Тому ваги повинні бути показані без десяткових знаків або будь-яких інших подібних позначень. Якщо у вашій мові не використовується stdout, вам слід пройти спільну / мета-консенсус щодо виводу. Нові рядки є непоганими, але будь-які інші зміни формату зображення, ймовірно, не в порядку.
Зразки
Тестові входи та відповідні результати
Введення 1
12 22
--------------------
^
Вихід 1
12 26
--------------------
^
Введення 2
42 42
-----------
^
Вихід 2
42 42
-----------
^
Введення 3
3 16
----------------
^
Вихід 3
14 16
----------------
^
Введення 4
1 56
-------------------
^
Вихід 4
196 56
-------------------
^
Реалізація посилань - Python 3
# Takes a list of strings as input
def balance_seesaw(lines):
weights = [int(w.strip()) for w in lines[0].split()]
length = len(lines[1])
pivot = lines[2].find("^")
left_length = pivot
right_length = length - 1 - pivot
left_torque = weights[0] * left_length
right_torque = weights[1] * right_length
if left_torque > right_torque:
weights[1] = left_torque // right_length
elif right_torque > left_torque:
weights[0] = right_torque // left_length
weights = [str(w) for w in weights]
string_gap = " " * (length - sum(len(w) for w in weights))
lines[0] = weights[0] + string_gap + weights[1]
print("\n".join(lines))
balance_seesaw(["1 56",
"-------------------",
" ^ "])
Правила
Це код-гольф , тому найкоротший виграш коду рахується в байтах. Перевірте мета, чи підрахунок байтів незручно у вашій мові.
Застосовуються стандартні правила / лазівки.
Введення даних слід приймати у розумному форматі. Невичерпний перелік відповідних форматів подається наступним чином:
- Одина рядок з рядками, розділеними символами нового рядка
- Список рядків, кожен рядок являв собою рядок
- 2D масив або матриця символів
Супутні виклики
- Збалансуйте набір ваг на пилорізі - Пропоновано серпнем 2015 року від samgak