Scambiare due elementi in un vettore / matrice è molto semplice in Octave:
x='abcde';
x([4,1])=x([1,4])
x =
dbcae
Sfortunatamente, devo ancora trovare un modo per farlo all'interno di una funzione anonima. Mentre la funzione seguente è sintatticamente corretta, restituisce solo i due elementi che vengono scambiati, non l'intero x
vettore:
f=@(x)(x([4,1])=x([1,4]))
f(x)
ans =
ad
Esiste un modo per ottenere il comportamento desiderato utilizzando funzioni anonime in modo da golf? È possibile scambiare diversi elementi in questo modo usando una funzione anonima?
Ho potuto creare un vettore di indicizzazione: f=@(x)x([4,2,3,1,5])
, ma la creazione di un tale vettore dinamico probabilmente prenderà un sacco di byte troppo.