Trik untuk berurusan dengan /dan ⌿di kereta
Saat menggunakan kereta, Anda mungkin ingin menggunakan pengurangan f/seperti jumlah +/atau bahkan mereplikasi pengurangan //. Namun, jika kereta Anda memiliki lebih banyak bagian di sebelah kiri reduksi, Anda memerlukan tanda kurung untuk membuat puncak. Berikut adalah beberapa trik untuk menghemat byte.
Gunakan 1∊sebagai ganti monadik ∨/atau ∨⌿pada array Boolean
Tugas: Diberikan dua string sama panjang A dan B, kembalikan 2 jika ada karakter yang sesuai dari A dan B sama, 0 sebaliknya Misalnya A←'abc'dan B←'def'memberikan 0dan A←'abc'dan B←'dec'memberi 2.
Solusi dfn mungkin A{2×∨/⍺=⍵}Btetapi Anda ingin mempersingkat dengan pergi diam-diam. A(2×∨/=)Btidak akan bekerja karena aturan pembentukan kereta mengurai ini 2 (× ∨/ =)tetapi Anda inginkan 2 × (∨/=).
Perhatikan itu ∨/atau ∨⌿pada vektor Boolean ( ∨/,atau ∨⌿,untuk array peringkat yang lebih tinggi) menanyakan apakah ada 1 hadiah, yaitu 1∊, sehingga kita dapat menulis kereta kita sebagai 2×1∊=.
Perhatikan bahwa ∊mengecilkan argumen yang benar, sehingga Anda tidak dapat menggunakannya untuk mengurangi setiap baris atau kolom secara terpisah.
Gunakan 1⊥sebagai ganti monadik +/atau+⌿
Tugas: Diberikan daftar daftar L dan indeks N, kembalikan tiga kali lipat dari jumlah daftar N. Misalnya L←(3 1 4)(2 7)dan N←1memberi 24.
Solusi dfn mungkin N{3×+/⍺⊃⍵}Ltetapi Anda ingin mempersingkat dengan pergi diam-diam. N(3×+/⊃)Ltidak akan bekerja karena aturan pembentukan kereta mengurai ini 3(× +/ ⊃)tetapi Anda inginkan 3 × (+/⊃).
Perhatikan bahwa mengevaluasi daftar angka di unary (basis-1) sama dengan menjumlahkan daftar karena  { a , b , c , d } = a + b + c + d = ( a × 1³) + ( b × 1² ) + ( c × 1¹) + ( d × 1⁰). Oleh karena +/a b c ditu sama dengan 1⊥a b c d, dan kita dapat menulis kereta kita sebagai 3×1⊥⊃.
Perhatikan bahwa pada argumen peringkat yang lebih tinggi, 1⊥setara dengan +⌿.
Gunakan f.galih-alih f/gdengan skalar dan / atau argumen vektor
Tugas: Diberikan daftar L dan angka N, kembalikan kisaran 1 dengan teliti jumlah sisa pembagian minimum saat elemen L dibagi dengan NEg L←31 41 59 dan N←7beri 1 2 3.
Solusi dfn mungkin N{⍳⌊/⍺|⍵}Ltetapi Anda ingin mempersingkat dengan pergi diam-diam. N(⍳⌊/|)Ltidak akan bekerja karena aturan pembentukan kereta menguraikan ini sebagai⍳ (⌊/) |tetapi Anda inginkan ⍳ (⌊/|).
Produk dalam A f.g Bskalar dua berfungsi ketika argumennya skalar dan / atau vektor sama dengan f/ A g Bkarena keduanya(A[1] g B[1]) f (A[2] g B[2]) f (A[3] g B[3]) dll, sehingga kita dapat menulis kereta kita sebagai ⍳⌊.|.
Perhatikan bahwa ini tidak berfungsi untuk array peringkat lebih tinggi.
Menggunakan ∊⊆ alih-alih /dengan argumen kanan kanan Boolean dan vektor kanan
Tugas: Diberikan daftar L dan angka N, filter daftar sehingga hanya angka yang lebih besar dari N yang tersisa. Misalnya L←3 1 4danN←1 memberi 3 4.
Solusi dfn mungkin N{(⍺<⍵)/⍵}Ltetapi Anda ingin mempersingkat dengan pergi diam-diam. N(</⊢)Ltidak akan berfungsi karena aturan yang mengikat akan menguraikan ini (</) ⊢tetapi Anda ingin /menjadi fungsi mereplikasi daripada mengurangi operator .
Diadik ⊆dengan argumen kiri Boolean mempartisi argumen yang benar sesuai dengan run 1s di argumen kiri, menjatuhkan elemen yang ditunjukkan oleh 0s. Ini hampir apa yang kita inginkan, simpan untuk partisi yang tidak diinginkan. Namun, kita dapat menyingkirkan partisi dengan menerapkan monadik ∊. Dengan demikian {(⍺<⍵)/⍵}dapat menjadi {∊(⍺<⍵)⊆⍵}dan dengan demikian kita dapat menulis kereta kita sebagai ∊<⊆⊢.
Perhatikan bahwa ini tidak berfungsi untuk array peringkat lebih tinggi.
Gunakan 0⊥sebagai ganti ⊢/atau ⊢⌿dengan argumen numerik
Tugas: Diberikan daftar L dan angka N, kalikan N dengan elemen paling kanan dari LEg L←3 1 4dan N←2beri 8.
Solusi dfn mungkin N{⍺×⊢/⍵}Ltetapi Anda ingin mempersingkat dengan pergi diam-diam. N(⊣×⊢/⊢)Ltidak akan bekerja karena aturan pembentukan kereta mengurai ini ⊣ (× ⊢/ ⊢)tetapi Anda inginkan ⊣ × (⊢/⊢).
Perhatikan bahwa 0⊥pada array numerik sama dengan ⊢⌿, jadi kita bisa menulis kereta kita sebagai ⊣×0⊥⊢.
Perhatikan bahwa ini memilih sel utama terakhir dari array peringkat yang lebih tinggi.