Існує 500 репресій неофіційних виграшів за побиття поточної найкращої відповіді .
Мета
Ваша мета - перемножити два числа, використовуючи лише обмежений набір арифметичних операцій та призначення змінних.
- Доповнення
x,y -> x+y - Взаємність
x -> 1/x( не поділx,y -> x/y) - Заперечення
x -> -x( не відніманняx,y -> x-y, хоча це можна зробити як дві операціїx + (-y)) - Постійна
1(не допускаються інші константи, крім випадків, отриманих в результаті операцій з1) - Змінне призначення
[variable] = [expression]
Оцінка: значення починаються з змінних aта b. Ваша мета - зберегти їх продукт a*bу змінній, cвикористовуючи якомога менше операцій. Кожна операція та призначення +, -, /, =коштують очок (рівнозначно, кожне використання (1), (2), (3) або (4)). Константи 1безкоштовні. Виграє найменше рішення. Tiebreak - найдавніший пост.
Допомога: Вираз має бути арифметично правильним для "випадкових" дій aі b. Він може вийти з ладу на підмножині вимірювання нуль R 2 , тобто множині, яка не має площі, якщо побудовано в a- bдекартовій площині. (Це, можливо, буде потрібно через зворотні вирази, які можуть бути 0подібними 1/a.)
Граматика:
Це атомний код-гольф . Ніякі інші операції використовувати не можна. Зокрема, це означає відсутність функцій, умовних, циклів чи нечислових типів даних. Ось граматика дозволених операцій (можливості розділені на |). Програма - це послідовність <statement>s, де a <statement>задається наступним чином.
<statement>: <variable> = <expr>
<variable>: a | b | c | [string of letters of your choice]
<expr>: <arith_expr> | <variable> | <constant>
<arith_expr>: <addition_expr> | <reciprocal_expr> | <negation_expr>
<addition_expr>: <expr> + <expr>
<reciprocal_expr>: 1/(<expr>)
<negation_expr>: -<expr>
<constant>: 1
Насправді вам не доведеться розміщувати код у цій точній граматиці, якщо зрозуміло, що ви робите, і кількість операцій правильна. Наприклад, ви можете записати a-bдля цього a+(-b)і порахувати його як дві операції або визначити макроси для стислості.
(Було попереднє запитання Множити без множення , але це дозволило набагато втратити набір операцій.)
