Фридман Число является положительным целым числом, которое равно нетривиальной выражение , которое использует свои собственные цифры в сочетании с операциями +, -, *, /, ^, круглые скобки и конкатенации.
Хорошее число Фридмана - это положительное целое число, равное нетривиальному выражению, которое использует свои собственные цифры в сочетании с теми же операциями, причем цифры находятся в их первоначальном порядке.
Очень хороший номер Фридмана (VNFN), который я здесь придумываю, - это хороший номер Фридмана, который можно записать без менее симпатичных (на мой взгляд) частей такого выражения. Круглые скобки, конкатенация и унарное отрицание запрещены.
Для этой задачи есть три возможных способа написания выражения без скобок.
Префикс: это эквивалентно левой ассоциативности. Этот тип выражения пишется со всеми операторами слева от цифр. Каждый оператор применяется к следующим двум выражениям. Например:
*+*1234 = *(+(*(1,2),3),4) = (((1*2)+3)*4) = 20
VNFN, который можно записать так: 343:
^+343 = ^(+(3,4),3) = ((3+4)^3) = 343
Постфикс: это эквивалентно правой ассоциативности. Это похоже на префиксную запись, за исключением того, что операция идет справа от цифр. Каждый оператор применяется к двум предыдущим выражениям. Например:
1234*+* = (1,(2,(3,4)*)+)* = (1*(2+(3*4))) = 14
VNFN, который можно записать так: 15655:
15655^+** = (1,(5,(6,(5,5)^)+)*)* = (1*(5*(6+(5^5)))) = 15655
Infix: для обозначения Infix используется стандартный порядок операций для пяти операций. Для целей задачи этот порядок операций будет определен следующим образом: ^
сначала поставьте скобки , ассоциативно справа. Затем заключите в скобки *
и /
одновременно оставьте ассоциативно. Наконец, заключите в скобки +
и -
одновременно оставьте ассоциативно.
1-2-3 = (1-2)-3 = -4
2/3*2 = (2/3)*2 = 4/3
2^2^3 = 2^(2^3) = 256
1^2*3+4 = (1^2)*3+4 = 7
VNFN, который можно записать так: 11664:
1*1*6^6/4 = (((1*1)*(6^6))/4) = 11664
Задача: если задано положительное целое число, если оно может быть выражено как нетривиальное выражение своих собственных цифр в префиксной, инфиксной или постфиксной нотации, выведите это выражение. Если нет, ничего не выводить.
Пояснения: если возможно несколько представлений, вы можете вывести любое непустое их подмножество. Например, 736 является VNFN:
+^736 = 736
7+3^6 = 736
+^736
, 7+3^6
Или оба все были бы приемлемые выходы.
«Тривиальное» выражение означает выражение, которое не использует никаких операторов. Это относится только к однозначным числам и означает, что однозначные числа не могут быть номерами VNFN. Это унаследовано от определения числа Фридмана.
Ответы должны запускаться в секундах или минутах на входах менее миллиона.
IO: Стандартные правила IO. Полная программа, функция, глагол или подобное. STDIN, командная строка, аргумент функции или аналогичный. Для вывода «Nothing» подойдет пустая строка, пустая строка null
или аналогичная и пустая коллекция. Вывод может быть строкой, разделенной символом, который не может быть в представлении, или может быть набором строк.
Примеры:
127
None
343
^+343
736
736^+
7+3^6
2502
None
15655
15655^+**
11664
1*1*6^6/4
1^1*6^6/4
5
None
Подсчет очков: это код гольф. Побеждает несколько байтов.
Также, если вы найдете такой номер, укажите в своем ответе новый номер Very Nice Friedman.
Parentheses, concatenation and unary negation are disallowed.
*(+(*(1,2),3,4)
отсутствует один близкий парень, после,3