Lambda awalan anonim. Mengembalikan badan program.
{
1=≢⍵:⍕⍵ ⍝ single element
(2=≢⍵)∧(⍵[2]=11×⍵[1]):⍕⍵[1] ⍝ 2, 22 etc.
1=≢∪⍵:'⊢',⍕⊃⍵ ⍝ all the same
(⊢≡⊃×⍳∘≢)⍵:'+',⍕⊃⍵ ⍝ linear
((⌊=⊢)!⍣¯1⊢⊃⍵)∧(1∧.=1↓⍵):'!',⍕!⍣¯1⊃⍵ ⍝ factorial followed by all 1s
(⍵[2]∧.=1↓⍵)∧(⍵[1]=10|2⊃⍵):(⍕⊃⍵),'⌈',(⊃⍕2⊃⍵) ⍝ b ab ab ab
e←{∊⍉2 2⍴'+×',⍕¨⍵}¨⍸(⊃⍵)=∘.×⍨⍳10
b←⍵∘≡¨e(({0::⍬ ⋄ ⍎⍵}¨,\)⍴∘⊂)¨⍨(≢⍵)
∨/b:⊃b/e
Q←{'''',⍨⍵/⍨1+''''=⍵}
(5∧.≤⍵)∧(≢⍕⍵)>6+(+/14=⍵)+≢⍵:'{⍺←⎕AV⍳⊃⋄1⌽⍺⊢⍵}''',Q ⎕AV[⍵] ⍝ string fallback
(≢⍕⍵)>9+(+/5=⍵)+≢⍵:'{⍺←¯4+⎕AV⍳⊃⋄1⌽⍺⊢⍵}''',Q ⎕AV[4+⍵] ⍝ offset string fallback
'{⍺←⊃⋄1⌽⍺⊢⍵}',⍕⍵ ⍝ fallback
}
Cobalah online!
Metode
Ini mengeksplorasi berbagai metode dan mengembalikan yang dapat digunakan pertama, akhirnya jatuh kembali ke metode yang berlaku secara universal.
Elemen tunggal
Jika daftar hanya memiliki satu elemen, itu dikembalikan apa adanya.
2, 22 dll.
Satu digit bisa diulang untuk menghasilkan angka 11 kali lebih besar,
Semua sama
Kami baru saja mengembalikan nomor ( ⊢) paling kanan .
Linier
f (n) = k × n urutan cukup masukkan nilai plus sebelum istilah pertama.
Faktorial diikuti oleh semua 1s
Ketika angka pertama n =! M dan angka selanjutnya adalah 1, maka !mmerupakan solusi karena !mn dan m!m1 dan !11.
b ab ab ab
Karena semua angka dua digit lebih besar dari semua angka satu digit, maksimum berjalan, di mana bagian depan angka pertama terpaku di belakang angka kedua, adalah solusi.
Kode tiga baris
Periksa apakah rumus jenis apa +a×bpun valid.
String fallback
Urutan panjang tanpa nomor di bawah 5 (karena 4 adalah jeda baris) dapat dikodekan sebagai karakter SBCS.
Fallback string offset
Jika ada angka di bawah 5, kami bergeser ke atas 9 untuk menghindarinya.
Fallback
Rangkaian string sederhana dari string "{⍺←⊃⋄1⌽⍺⊢⍵}"dan ⍕input stringified ( ). Misalnya [3,1,4]mengembalikan badan program {⍺←⊃⋄1⌽⍺⊢⍵}3 1 4.
Bagian dalam kawat gigi adalah fungsi ambivalen yang artinya dapat berupa fungsi awalan atau fungsi infiks. Jadi instance paling kiri dari itu akan berjalan dalam mode awalan, dan semua yang lain dalam mode infix. Perbedaan antara mode adalah apakah ⍺, menandakan argumen kiri, memiliki nilai. Jika tidak maka akan diberikan fungsi ⊃(pertama).
Penjelasan metode mundur
{… } Lambda anonim:
⍺←⊃ Jika tidak ada argumen kiri ( ⍺) tetapkan fungsi ⊃(pertama) ke⍺
⋄ kemudian:
Pada titik ini, kode berikut ini berarti dua hal yang berbeda tergantung pada apakah ⍺daftar angka (panggilan infiks) atau fungsi "pertama" (panggilan awalan).
Jika ⍺daftar angka:
⍺⊢⍵ buang argumen kiri demi argumen yang benar
1⌽ putar satu langkah ke kiri
Jika ⍺fungsi "pertama":
⊢⍵ menghasilkan argumen yang benar
⍺ pilih elemen pertama itu
1⌽ putar satu langkah (no-op pada skalar)
Contoh menjalankan metode fallback
3 1 4Kode pelaksana {⍺←⊃⋄1⌽⍺⊢⍵}3 1 4,, menetapkan fungsi "pertama" ke ⍺dan dengan demikian mengembalikan elemen pertama; 3.
Menjalankan {⍺←⊃⋄1⌽⍺⊢⍵}3 1 4{⍺←⊃⋄1⌽⍺⊢⍵}3 1 4memungkinkan lambda paling kanan "menangkap" kiri 3 1 4sebagai argumen kiri, sehingga ⍺memiliki nilai yang dibuang 3 1 4yang kemudian diputar satu langkah ke kiri dan menghasilkan 1 4 3sebagai hasilnya. Ini kemudian digunakan sebagai satu-satunya argumen ke lambda paling kiri, di mana ⍺menjadi fungsi "pertama", menyebabkan hasilnya menjadi elemen pertama; 1.
Menjalankan {⍺←⊃⋄1⌽⍺⊢⍵}3 1 4{⍺←⊃⋄1⌽⍺⊢⍵}3 1 4{⍺←⊃⋄1⌽⍺⊢⍵}3 1 4memungkinkan lambda paling kanan "menangkap" tengah 3 1 4sebagai argumen kiri yang kemudian dibuang demi argumen kanan 3 1 4,, yang ketika diputar satu langkah ke kiri adalah 1 4 3. Ini kemudian digunakan sebagai argumen kanan lambda tengah bersama-sama dengan yang paling kiri 3 1 4sebagai argumen kiri. Argumen kiri dibuang ke kanan, yang dirotasi menghasilkan satu langkah kiri 4 3 1. Ini kemudian menjadi satu-satunya argumen lambda paling kiri, sehingga ⍺menjadi "fungsi pertama", mengembalikan elemen pertama; 4.
Mencetak gol
Ketika saatnya untuk menguji menggunakan data aktual, gunakan harness tes ini (ditautkan diisi dengan data pretest). Kasing uji masuk dalam kolom Input, dan Output akan menjadi jumlah byte total dari semua 500 program secara bersamaan. (Ini juga akan menimbulkan kesalahan, tapi itu hanya karena setelah itu mencoba untuk mengevaluasi Input apa adanya.)