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.
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
max a,b
bahkan berfungsi (kadang-kadang).Gunakan
future
modulThe
future
modul berisi dua byte hemat utama fitur: lambdas dan daftar comprehensions. Lambda sangat berguna.Sebagai contoh, ini:
dapat disingkat menjadi ini:
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:
Selain itu, daftar pemahaman dapat digunakan dengan
future
modul. Sebagai contoh, kode ini mencetak seq (@[...]
) dari semua kotak kurang dari 100 dibagi dengan 4:sumber
any
alih-alihstring
(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>f
untuk anonimproc
Operator yang tidak ditandatangani
Saat bekerja dengan bilangan bulat negatif, terkadang lebih baik menggunakan operator yang tidak ditandatangani. Secara khusus, jika mungkin, gunakan
/%
dan%%
bukannyadiv
danmod
.sumber