Menggunakan iterasi untuk menghitung urutan
Biasanya, menyelesaikan tantangan urutan OEIS akan membutuhkan penggunaan salah satu formula yang diberikan pada halamannya. Beberapa di antaranya beradaptasi dengan baik untuk J, dan yang lain tidak begitu banyak. Rumus rekursif bersifat langsung, namun iterasi mungkin tidak sederhana. Pola yang mulai saya gunakan adalah
(s(]f)^:[~]) n
] Gets n
s The first value in the sequence
~ Commute the argument order, n is LHS and s is RHS
[ Gets n
^: Nest n times with an initial argument s
(]f) Compute f s
Returns (f^n) s
di mana sadalah nilai pertama dalam urutan, fadalah kata kerja yang akan menghitung istilah berikutnya yang diberikan istilah sebelumnya, dan nmerupakan indeks berbasis nol dari istilah yang ingin Anda hitung. Metode ini bergantung pada fakta bahwa ketika menghitung kekuatan angka dua, LHS terikat pada angka dua untuk membentuk monad baru, dan bahwa monad bersarang pada nilai awal. Angka dua yang diberikan pada keterangan daya adalah sebuah kait di mana (]f)diberikan indeks npada LHS dan nilai suatu istilah dalam urutan s. Hook akan berlaku fpada ssebagai monad, dan kemudian mengabaikan nuntuk mengembalikan hasil f s.
Perpustakaan standar
Terkadang, Anda mungkin menemukan bahwa J akan memiliki dukungan untuk kata kerja di perpustakaan standarnya . Sebagai contoh, sebagian besar operasi integer bitwise terikat pada nama yang lebih pendek daripada menggunakan panggilan primitif.
AND =: (17 b.) NB. it is actually '$:/ :(17 b.)'
Tanggal dan waktu bawaan juga tersedia.
Kisaran
Jika Anda memiliki seperangkat nilai [a, b, c]dan Anda ingin membentuk rentang berdasarkan pada produk mereka seperti [0, 1, 2, ..., a*b*c-1], pendekatan khas akan menemukan produk mereka dan kemudian membentuk rentang yang mungkin [:i.*/biaya 6 byte. Cara yang lebih pendek adalah ,@i.untuk 4 byte sejak itui. dapat membentuk array multidimensi sambil tetap menghitung, dan meratakannya akan menghasilkan kisaran yang setara.
Mencetak terus menerus
Cara diam-diam untuk mencetak nilai dan terus menggunakannya tanpa loop eksplisit adalah ([echo)untuk kasus monadik. echoadalah kata kerja di perpustakaan standar yang mencetak isinya ke stdoutdalam format yang sama yang digunakan dalam penerjemah. Pengait kemudian mengeluarkan nilai input yang sama menggunakan [kata kerja kiri .
Basis 10 digit bilangan bulat
Cara standar untuk memperoleh basis 10 digit integer adalah 10#.inv]yang menghabiskan biaya 8 byte, terlalu banyak! Alternatifnya adalah mengonversinya menjadi string dan menguraikannya pada peringkat 0 "."0@":yang menyimpan byte, tetapi cara yang lebih baik adalah ,.&.":yang menyimpan byte lain yang membuat biaya akhir 6 byte bukannya 8.
GolfScript gets its own way far too oftenpada tahun 2019.