Головоломка « Четыре четверки» - это популярная развлекательная математическая головоломка, в которой используются ровно четыре четверки (и никаких других чисел) и определенный набор операций для достижения каждого числа от 0 до заданного максимума.
В этой версии разрешены только следующие операторы:
- Можно использовать любые символы группировки
- Сложение (
+
), вычитание (-
), умножение (*
), деление (/
) - Факториал (
!
), Гамма-функция (Γ
) - Возведение в степень (
^
), квадратный корень (√
) - Конкатенация (например,
44
два4
с) - Десятичная точка (например,
4.4
это два4
с), Overbar (например,.4~ = 4/9
)
Применяется стандартный порядок операций.
Ваша программа должна сгенерировать, учитывая ввод от 0 до 100 включительно, правильное решение для этого ввода. Если программа выводит неверное решение на любой вход, эта программа недействительна.
Например, с помощью ввода 0
ваша программа может сгенерировать 44-44
.
Использование внешних модулей не допускается. Только _.4~
допускается для черточка оператора - то есть, только один 4
может быть за десятичной точкой.
Это код гольф, поэтому выигрывает самое короткое решение.
Редактировать : для большей ясности программа должна вывести набор вышеуказанных операций, примененных ровно к четырем 4
секундам - ни больше, ни меньше. Кроме того, .4 = 4/10
это действительный термин, и считается как использование только один 4
.
источник
!(4)
а не(4)!
)?Ответы:
GolfScript (129 символов *)
Время работы на моем компьютере составляет порядка 4 минут. Умеренное ускорение можно получить за счет двух символов, добавив операцию уникальности
.&
сразу после%+
.Я использую предварительно закодированные выражения
1
,2
,4
,6
,24
,120
, и44
, и строить покоиться от тех , кто использует только+
,*
и-
. Таким образом, мне не нужно делать нецелочисленную арифметику в самой программе. Я попытался получить более простые выражения, поместив более простые предварительно кодированные значения в начале.Все эти значения являются обязательными † , и необходимо поддерживать оба направления вычитания (
complex_expression - simple_expression
и наоборот). Также необходимо включить некоторые операции, которые требуют скобок (в частности,a*(b-c)
), поэтому я заключаю в скобки все подвыражения без разбора.* Я считаю кодовые точки Unicode, предполагая, что программа имеет кодировку UTF-8, и подчеркиваю тот факт, что, если вы не используете последнюю версию Ruby для запуска интерпретатора, он действительно воспринимает ее как символы ASCII. Если вы очень обеспокоены этим, используйте
G
для Gamma иv
для sqrt.† Ну, строго я мог бы снять
44
в обмен на ,11
как44/4
и ,71
как√(Γ√4+(ΓΓ4+Γ√4)!)
, но это не является хорошим компромиссом.источник
Python 155 байт
Первые три байта (
\xEF\xBB\xBF
) являются меткой порядка байтов UTF-8, хотя файл должен быть сохранен в формате ANSI.û
Иâ
будет , как интерпретируются с√
и ,Γ
соответственно , в cp437 и cp850 , который должен работать на любой коробке Windows.Время выполнения составляет около 0,4 с на моем компьютере.
Пример использования (назовите файл
four_fours.py
):Результаты за 0..100 . Из-за способа итерации хеша, он предпочитает использовать
4!
как можно чаще.Редактировать: сохранил количество байтов, добавив
Γ√4 = 1
, что устраняет необходимость каких-либо группировок, и удалив√4 = 2
, что больше не было необходимости.источник
J
175161 символПроверенный формат - это
(v op v) op (v op v)
гдеv={0.4 4/9 1 2 4 6 24}
иop={+ - * /}
полный 0..100 результатов
источник
.4
это правильный номер для этой игры.