Этот вопрос, заданный вам игрой, в которую я люблю играть, когда застреваю на длинных телефонных встречах.
Учитывая любые два раза из 24-часовых часов (с 00:00 до 23:59), сколько допустимых математических уравнений может быть сгенерировано за все промежутки времени с использованием только основных арифметических операций?
Ввод: две строки из четырех цифр (без двоеточия), представляющие правильное время в 24-часовом цикле.
Примеры:
Для ввода = 0000, 1300
03:26 produces: "0+3*2=6" and "03*2=6" etc.
11:10 produces quite a few, including: "1*1=1+0" and "1=1=1^0" and "1=11^0" etc.
12:24 produces: "1/2=2/4" and "1=(2*2)/4" etc.
Допустимые операции:
- прибавление
- вычитание
- умножение
- деление (с плавающей точкой)
- экспоненцирование
- факториал
Другие допустимые символы
- Круглые скобки
- Знаки равенства
Самый короткий код выигрывает.
Примечания
- Цель состоит в том, чтобы найти количество допустимых выражений между двумя, а не количество раз, которые содержат допустимые выражения.
- Два раза, указанные в качестве входных данных, включены в диапазон времени.
- Вы можете сгруппировать цифры любым возможным способом, поэтому «1223» может быть «12 23» или «1 2 23» или «1 223» и т. Д. И т. Д.
- Вы можете использовать столько скобок, сколько необходимо.
- Вы можете использовать более одного
=
знака. Например, время11:11
имеет правильное выражение1=1=1=1
. - Если первое время происходит в хронологическом порядке после второго, интервал времени следует перенести, как если бы он переходил на следующий день.
- Номера должны оставаться в их первоначальном порядке - вы не можете переупорядочивать цифры.
- При кластеризации чисел нули могут быть абсолютно передней цифрой, в этом случае они игнорируются («0303», кластеризованный как «03 03», представляет собой две цифры со значением 3).
- Вы НЕ МОЖЕТЕ использовать знак минус как одинарное отрицание. Следовательно, «12:01» НЕ производит «1-2 = - (01)», но ДАЕТ «1-2 = 0-1».
- Вы НЕ МОЖЕТЕ добавлять десятичные точки к цифрам. Следовательно, «12:05» НЕ дает «1/2 = 0,5».
- Нет цепочки факториалов - за цифрой может следовать не более одного «!», Не более, иначе много раз будет бесконечное решение. Пример: "5!" допустимо, но "5 !!" не является допустимым.
code-golf
expression-building
clock
nobillygreen
источник
источник
0000 1300
следует ли уравнения, полученные из0000
и1300
включенные в подсчет?Ответы:
Python3, 363 символа
Поскольку до сегодняшнего дня ответа не дано, я сдаю то, что получил. К сожалению, блок try / исключением слишком толстый, я не нашел способа сохранить символы там. Это действительно сложно с вложенными циклами там, я думаю, что не все можно сделать с помощью понимания списка, но, возможно, кто-то может сказать мне, как.
Тем не менее, я сам ограничил задачу использованием только базовой математики '+ - * /' и без скобок.
Мой полный код (надеюсь, что-то объяснительный) на этом CodeGolf можно найти на моей наклейке .
источник