Tips umum apa yang Anda miliki untuk bermain golf di Nim ? Saya mencari ide yang dapat diterapkan untuk masalah kode-golf dan yang juga setidaknya agak spesifik untuk Nim (mis. "Hapus komentar" bukan jawaban).
Silakan kirim satu tip per jawaban.
Tips umum apa yang Anda miliki untuk bermain golf di Nim ? Saya mencari ide yang dapat diterapkan untuk masalah kode-golf dan yang juga setidaknya agak spesifik untuk Nim (mis. "Hapus komentar" bukan jawaban).
Silakan kirim satu tip per jawaban.
Jawaban:
Nim cukup fleksibel ketika datang ke sintaks fungsi panggilan. Misalnya, berikut adalah beberapa cara untuk memanggil suatu fungsi dengan satu argumen:
ord(c)
ord c
c.ord
Dan cara memanggil fungsi dengan dua argumen:
max(a,b)
a.max(b)
a.max b
Pilih versi golf yang paling sesuai dengan situasi Anda, terutama tentang prioritas. Sebagai contoh, bandingkan:
abs(n)+2
n.abs+2
(abs n)+2
Sebagai lawan:
abs(n+2)
(n+2).abs
abs n+2
futuremodulThe futuremodul berisi dua byte hemat utama fitur: lambdas dan daftar comprehensions. Lambda sangat berguna.
Sebagai contoh, ini:
proc f(s:any):any=s&", world!"
dapat disingkat menjadi ini:
import future
s=>s&", world!"
yang menghemat satu byte. Perhatikan, bagaimanapun, bahwa lambdas tidak dapat digunakan di luar daftar parameter - jadi untuk menguji kode Anda, Anda harus melakukan sesuatu seperti ini:
import future
proc test(f: string -> string) = echo f "Hello"
test(s=>s&", world!")
Selain itu, daftar pemahaman dapat digunakan dengan futuremodul. Sebagai contoh, kode ini mencetak seq ( @[...]) dari semua kotak kurang dari 100 dibagi dengan 4:
import future
echo lc[x*x|(x<-1..9,x*x mod 4==0),int]
any alih-alih string(Saya berasumsi Anda memilih nama jenis terpanjang), tetapi ini tetap menghemat.
any , terima kasih atas tipnya! Anda harus memposting itu sebagai jawaban.
proc(s:any):any=s&", world!", menjatuhkan <space>funtuk anonimproc
max a,bbahkan berfungsi (kadang-kadang).