Этот вопрос возник у меня при решении этой проблемы.
NB. Find the next number whose prime factorization exponents
NB. match those of the given number.
exps=. /:~@{:@(__&q:)
f=. 3 : 0
target=. exps y
(>:^:(-.@(target-:exps))^:_) y+1
)
f 20 NB. 28
Обратите внимание, что для того, чтобы указать условие while для Do ... While, я сначала вычислил простые показатели аргумента y
и сохранил этот ответ в target
. Затем я смог написать -.@(target-:exps)
в качестве условия Пока.
Это, конечно, нарушает молчаливый стиль. Итак, я хотел бы знать, есть ли способ достичь того же результата, что и мой глагол выше, но сделать это с помощью одного неявного глагола?