Векторизация различной размерности

#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"