+/", dan rata-rata semua elemen array adalah " +/%#".
Berbagai ulasan tentang J telah diterbitkan di Habré lebih dari satu kali. Misalnya di artikel ini dan di artikel ini .
J adalah bahasa dengan sejarah 30 tahun dan masih berkembang dan berkembang. Namun, hanya ada satu "titik putih" di J - algoritme iteratif dengan penghentian bersyarat. Untuk ini, diusulkan untuk menggunakan konstruksi sementara. dipasangkan dengan istirahat. dan lanjutkan.
Menggunakan saat. di J terlihat mubazir dan canggung. Dan, sebagai tambahan, kecepatannya menurun drastis dibandingkan dengan bentuk diam-diam.
Dan dalam versi ke-9 bahasa, F serikat baru ditambahkan (dinamai huruf pertama dari kata "lipat").
Sebagai perbandingan, mari selesaikan masalah menggunakan while. dan menggunakan gabungan baru
Kondisinya sederhana: dapatkan array baru dari array asli, yang berisi nilai dua kali lipat dari elemen. Panjang larik baru ditentukan secara eksternal dan mungkin kurang dari aslinya.
Pertama menggunakan saat.
t =: dyad define
c =. 0
i =. i.x
z =. $0
while. -. c = y
do.
z =. z , (+: (c { i))
c =. >: c
end.
z
)
10 t 5
0 2 4 6 8
Dan sekarang solusinya menggunakan serikat baru F. Mari tambahkan bahwa kondisi untuk keluar dari loop diperiksa menggunakan kata kerja Z:
COUNT =: 6
v=: dyad define
_2 Z: -.* COUNT =: <: COUNT
x
)
'' +: F:. v (i.10)
0 2 4 6 8
Dokumentasi menjanjikan bahwa F. tidak hanya akan lebih nyaman, tetapi juga lebih cepat sementara. Akhirnya, J semakin dekat dengan orang!
PS Orang yang berpengetahuan mungkin memperhatikan bahwa masalah ini dapat diselesaikan dengan mudah tanpa menggunakan konstruksi siklis dan konstruksi baru. Ini cukup untuk mengekstrak subarray dengan panjang yang dibutuhkan dan kemudian memprosesnya dalam bentuk diam-diam. Namun pada permasalahan nyata seringkali terjadi panjang subarray yang tidak diketahui sebelumnya dan dihitung kondisi stop selama pengoperasian algoritma.