#julia #vectorization
Вопрос:
Я хочу получить все перестановки 1:3 в виде строк.
julia> string.(permutations(1:3)...) # 1:3 is for the example, the real problem is larger
3-element Vector{String}:
"112233"
"231312"
"323121"
Однако результат «транспонируется» так, как я хочу
6-element Vector{String}:
"123"
"132"
"213"
"231"
"312"
"321"
Этот вектор будет вводом какого-либо другого (векторизованного) вызова функции F.(perms)
, и я хочу сделать это эффективно.
Как мне это сделать?
Комментарии:
1. Вещание, которое вы называете «векторизацией», связано не столько с эффективностью, сколько с семантикой.
string.(permutations(1:3))
я думаю, это должно дать вам правильный результат, но это не более эффективно, чем эквивалентный цикл.2. Это не дает правильного ответа,
string.(zip(permutations(1:3)...)...)
работает или просто ставит его в тупик. Однако большое спасибо за ваше замечание об эффективности, теперь я действительно понимаю, что рукописные циклы так же эффективны, как и вызовы вложенных точечных/векторизованных функций. Я почему-то думал, что вложенные точечные вызовы более эффективны.
Ответ №1:
Просто сделай:
julia> join.(permutations(1:3),"")
6-element Vector{String}:
"123"
"132"
"213"
"231"
"312"
"321"