Menukar dua elemen dalam vektor / matriks sangat sederhana dalam Oktaf:
x='abcde';
x([4,1])=x([1,4])
x =
dbcae
Sayangnya, saya belum menemukan cara untuk melakukan ini di dalam fungsi anonim. Sementara fungsi di bawah ini secara sintaksis benar, itu hanya mengembalikan dua elemen yang ditukar, bukan seluruh x
vektor:
f=@(x)(x([4,1])=x([1,4]))
f(x)
ans =
ad
Apakah ada cara untuk mencapai perilaku yang diinginkan menggunakan fungsi anonim dengan cara golf? Bisakah beberapa elemen ditukar dengan cara ini menggunakan fungsi anonim?
Saya dapat membuat vektor pengindeksan:, f=@(x)x([4,2,3,1,5])
tetapi membuat vektor seperti itu secara dinamis kemungkinan akan membutuhkan banyak byte juga.
code-golf
array-manipulation
tips
octave
Stewie Griffin
sumber
sumber
Jawaban:
Daftar Argumen
Cobalah online!
sumber
;
untuk keperluan byte byteMenjadi
eval
Cobalah online!
Di Matlab tanda kurung tidak dapat dihilangkan:
sumber
eval
jawabannya :-)for
loop di dalam fungsi anonim menggunakaneval
banyak byte yang disimpan di sana, dan mungkin dapat melakukannya pada banyak tantangan lain juga ,,,s='x([1 4])=x([4 1])';eval(s)
- Saya kira ini sebagian besar menarik jika Anda sudah membuat fungsi untuk melakukan eval dengan karakter minimal.Array sel
Salah satu opsi adalah menggunakan array sel, seperti ini:
Cobalah online!
sumber