p~c₃o.k×~t
Попробуйте онлайн!
Слишком медленный, чтобы работать в течение разумного промежутка времени (интерпретатор брахилога тратит много времени на умножение на пустые строки, 4-значные числа, отрицательные числа и т. Д. С использованием очень медленного решателя ограничений). Ссылка TIO использует ввод только с 3 цифрами (эта программа может обрабатывать ввод с любым количеством цифр). Это функция, чьим входным значением является число, содержащее все требуемые цифры (например 234567
) - отсутствие дубликатов на входе означает, что вы всегда можете просто поставить любое число 0
в конце, чтобы избежать начального нуля, - и чей выходной результат представляет собой список в заказ [b, a, c]
(например [6, 57, 342]
).
объяснение
p~c₃o.k×~t
p Permute the digits of the input
~c₃ Split them into three groups
o Sort the three groups
. to produce the output, which must have the following property:
k all but the last group
× when multiplied together
~t produces the last group
Так куда же делось требование к группам из 2, 1 и 3 цифр? Ну, мы знаем, что на входе 6 цифр, и группы расположены в отсортированном порядке. Следовательно, они могут иметь только возможные размеры: [1, 1, 4], [1, 2, 3] или [2, 2, 2]. Первый случай невозможен (вы не можете умножить два 1-значных числа для получения 4-значного числа, так как 9 × 9 - это только 81), как и последний случай (вы не можете умножить два 2-значных числа на произвести двузначное число, так как даже 10 × 10 дает 100). Таким образом, возвращаемые значения [b, a, c]
должны иметь длину 1, 2 и 3 цифры в этом порядке, то a
есть 2 цифры, b
1 цифра и c
3 цифры в соответствии с запросом.