В этом варианте головоломки « Четыре четверки» вы должны использовать до x
x's
(и никакое другое число) и определенный набор операций для достижения каждого числа от 0 до 100. Если x = 4
тогда вы можете использовать до четырех, 4s
и этот вопрос становится классической четверкой головоломка (за исключением того, что вы можете использовать до четырех четверок вместо того, чтобы использовать ровно четыре из них). Мы предполагаем 1 < x <= 9
.
В этой версии разрешены только следующие операторы:
- Сложение (
+
), вычитание (-
), умножение (*
), деление (/
). Обратите внимание, что это реальное разделение, так что5/2 = 2.5
. - Возведение в степень (например, 4 ^ 4), поскольку это не будет включать в себя никаких дополнительных символов, если написано обычно вручную.
- Вы можете сделать новые целые числа путем объединения
xs
. Например, вы можете сделать целые числа4, 44, 444, 4444
.
Вы также можете использовать скобки для группировки номеров просто для того, чтобы контролировать порядок оценки операторов. Вы не можете, например, объединить скобки с конкатенацией, как в (4/4)(4/4) = (1)(1) = 11
.
Никакие другие символы не могут быть использованы, и применяется стандартный порядок операций.
Ваша программа должна сгенерировать, учитывая x
в определенном диапазоне и n
между 0
и 100
включительно, правильное решение для этого ввода, если оно существует. В противном случае ваш код должен что-то выводить, чтобы указать, что такого решения не существует.
Вы должны иметь возможность запустить отправку до завершения на своем компьютере для любых входных значений x
и n
в допустимом диапазоне. Это код гольф, поэтому выигрывает самое короткое решение.
Этот старый связанный вопрос использует больше операторов (и только 4), и, следовательно, все числа от 0 до 100 разрешимы, что не будет верно для этой задачи.
Вход и выход
Ваш код принимает два целых числа x
и в n
качестве входных данных и должен выводить решение (или указание на отсутствие решения) в любом удобочитаемом для человека формате. Ввод 4 6
будет означать «Использование до четырех 4, например, число 6». Так что, если вход является 4 6
выходом, может быть (4+4)/4+4
.
Ответы:
Python 3 , 265 байт
Попробуйте онлайн!
Работает для всех номеров в ссылке, связанной Engineer Toast.
Подбегает
x=8
на тио,x=9
занимает пару минут на моей машине.Функция
g
возвращает набор всех комбинаций с не более чемx
числомx
.f
затем перебирает их и возвращает первое, которое оценивает числоn
.Количество возможных значений, которые я нашел для каждого
x
:Все номера выше , могут быть получены из
(a+b)
,(a-b)
,(a+b)
,a*b
,a/b
,(a/b)
, иa^b
.a+b
иa-b
не давайте больше цифр.a^b
также используется только один раз, так как в противном случае создаются огромные числа (это также подтверждается в справочном документе выше)Альтернативная версия, которая замыкает накоротко, как только находит решение (не как игра в гольф):
Это намного быстрее, поскольку для
x=7..9
всех чисел может быть создано.Python 3 ,
338289 байтПопробуйте онлайн!
источник
(4/4**(4-4))
для4
), но оказывается, что это не так.exit(e)
корочеreturn e