Вступ
Це одна з моїх улюблених математичних головоломок.
Враховуючи цифру (скажімо 3) і кількість разів використовувати цю цифру (скажімо, 5), генеруйте 10 виразів, які призводять до 1, 2, 3, 4, 5, 6, 7, 8, 9 і 10, використовуючи просто +, -, ×, ÷, ^ і √ (корінь) (дужки дозволені до групових операцій).
Наприклад:
(3^3 + 3)/(3 + 3) = (33 - 3)/(3 + 3) = 3 + 3/3 + 3/3 = 5
Зауважте, що все вищезазначене використовує п'ять 3-х та математичні операції, а результат - 5. Ви також можете використовувати 3 перед √ для позначення куба куба. Те саме стосується використання 4 перед √ для позначення четвертого кореня.
Також зауважте, що два 3 можуть бути використані для формування 33, або три 3 можуть бути використані для формування 333 тощо.
Виклик
- Вам будуть дані два числа (обидва - від 1 до 5) як аргумент функції, STDIN або аргумент командного рядка.
- Перше число позначає, яку цифру слід використовувати, а друге число позначає кількість разів, яку цифра повинна використовувати в виразі.
- Ваша програма повинна вивести масив розміром 10 (або 10 цифр, розділених пробілом), де кожен елемент позначає, чи можливий математичний вираз (використовуючи лише дозволені оператори), що призводить до
(index + 1)
числа, чи не використовує значення truthy / false.
Наприклад, якщо вхід є
1 3
Тоді вихід повинен бути
[1, 1, 1, 0, 0, 0, 0, 0, 0, 1]
тому що лише 1, 2, 3 і 10 можна виразити за допомогою трьох 1.
Оцінка
- Це код-гольф, тому мінімальна довжина коду в байтах виграє.
Бонус
Print-em-all [−50]
Відніміть 50 з вашої оцінки, якщо вихідний масив елементів дорівнює загальній кількості правдоподібних комбінацій, щоб отримати (index + 1)
значення замість правдоподібних або хибних значень.
Наприклад, якщо є лише 3 можливі комбінації з п'яти 3, які приводять до 5, то 4- й запис вихідного масиву повинен бути 3.
Екстремальна математика [−100]
Відніміть 100 з вашої оцінки, якщо елементи вихідного масиву містять принаймні один із фактичних виразів, що призводять до (index + 1)
значення.
Наприклад, якщо використовується п'ять 3-х, 4- м записом вихідного масиву може бути або (3^3 + 3)/(3 + 3)
, (33 - 3)/(3 + 3)
або3 + 3/3 + 3/3
Перенаселений [−200]
Відніміть 200 з вашої оцінки, якщо елементи вихідного масиву містять усі можливі комбінації (розділені на |
). Цей бонус додається на додаток до бонусу Extreme Maths , так що ви отримуєте −300 в цілому.
Наприклад, якщо використовується п'ять 3-х, 4- й елемент вихідного масиву повинен бути(3^3 + 3)/(3 + 3)|(33 - 3)/(3 + 3)|3 + 3/3 + 3/3
Примітка: Будь-які два вирази для досягнення одного результату повинні бути логічно різними при різному підході в обох.
Наприклад, отримати 5, використовуючи п'ять 3-х, те 3 + 3/3 + 3/3
саме 3/3 + 3 + 3/3
або 3/3 + 3/3 + 3
тому, що для кожного з них застосовується однаковий підхід. (3^3 + 3)/(3 + 3)
і (33 - 3)/(3 + 3)
відрізняються, оскільки 30 у чисельнику досягається за допомогою різних підходів.
ОНОВЛЕННЯ : Після перегляду всіх відповідей було встановлено, що всі відповіді мали недосконалість через крайні випадки одинарності -
та √. Таким чином, відсутність цих кращих справ вважалася нормальною, що стосується повноти відповідей.
Це складне питання, але досить цікаве.
Щасливого гольфу!
1
с?