RosettaCodeData/Task/Digital-root-Multiplicative-digital-root/Bracmat/digital-root-multiplicative-digital-root.bracmat
2015-02-20 09:02:09 -05:00

46 lines
872 B
Text

(
& ( MP/MDR
= prod L n
. ( prod
= d
. @(!arg:%@?d ?arg)&!d*prod$!arg
| 1
)
& !arg:?L
& whl
' ( @(!arg:? [>1)
& (prod$!arg:?arg) !L:?L
)
& !L:? [?n
& (!n+-1.!arg)
)
& ( test
= n
. !arg:%?n ?arg
& out$(!n "\t:" MP/MDR$!n)
& test$!arg
|
)
& test$(123321 7739 893 899998)
& 0:?i
& 1:?collecting:?done
& whl
' ( !i+1:?i
& MP/MDR$!i:(?MP.?MDR)
& ( !done:?*(!MDR.)^((?.)+?)*?
| (!MDR.)^(!i.)*!collecting:?collecting
& ( !collecting:?A*(!MDR.)^(?is+[5)*?Z
& !A*!Z:?collecting
& (!MDR.)^!is*!done:?done
|
)
)
& !collecting:~1
)
& whl
' ( !done:(?MDR.)^?is*?done
& put$(!MDR ":")
& whl'(!is:(?i.)+?is&put$(!i " "))
& put$\n
)
);