สิ่งใดที่คุณมีเคล็ดลับทั่วไปสำหรับการเล่นกอล์ฟในนิ่ม ? ฉันกำลังมองหาความคิดที่สามารถนำไปใช้กับปัญหาเกี่ยวกับ code-golf และอย่างน้อยก็ค่อนข้างเฉพาะกับ Nim (เช่น "ลบความคิดเห็น" ไม่ใช่คำตอบ)
กรุณาโพสต์หนึ่งเคล็ดลับต่อคำตอบ
สิ่งใดที่คุณมีเคล็ดลับทั่วไปสำหรับการเล่นกอล์ฟในนิ่ม ? ฉันกำลังมองหาความคิดที่สามารถนำไปใช้กับปัญหาเกี่ยวกับ code-golf และอย่างน้อยก็ค่อนข้างเฉพาะกับ Nim (เช่น "ลบความคิดเห็น" ไม่ใช่คำตอบ)
กรุณาโพสต์หนึ่งเคล็ดลับต่อคำตอบ
คำตอบ:
นิ่มเป็นสวยยืดหยุ่นเมื่อมันมาถึงฟังก์ชั่นการโทรไวยากรณ์ ตัวอย่างเช่นต่อไปนี้เป็นวิธีเรียกใช้ฟังก์ชันที่มีอาร์กิวเมนต์หนึ่งตัว:
ord(c)
ord c
c.ord
และวิธีเรียกฟังก์ชันที่มีสองอาร์กิวเมนต์:
max(a,b)
a.max(b)
a.max b
เลือกเวอร์ชัน golfiest ที่เหมาะกับสถานการณ์ของคุณโดยเฉพาะเกี่ยวกับความสำคัญ ตัวอย่างเช่นเปรียบเทียบ:
abs(n)+2
n.abs+2
(abs n)+2
ตรงข้ามกับ:
abs(n+2)
(n+2).abs
abs n+2
futureโมดูลfutureโมดูลมีสองคุณสมบัติไบต์ประหยัดหลัก: lambdas และ comprehensions รายการ แลมบ์ดามีประโยชน์อย่างยิ่ง
ตัวอย่างเช่นสิ่งนี้:
proc f(s:any):any=s&", world!"
สามารถย่อให้สั้นลงนี้:
import future
s=>s&", world!"
ซึ่งจะช่วยประหยัดไบต์ อย่างไรก็ตามโปรดทราบว่าแลมบ์ดาไม่สามารถใช้ภายนอกรายการพารามิเตอร์ได้ดังนั้นเพื่อทดสอบโค้ดของคุณคุณจะต้องทำสิ่งนี้:
import future
proc test(f: string -> string) = echo f "Hello"
test(s=>s&", world!")
เช่นกันความเข้าใจในรายการสามารถใช้กับfutureโมดูลได้ ตัวอย่างเช่นรหัสนี้พิมพ์ seq ( @[...]) ของช่องสี่เหลี่ยมทั้งหมดที่น้อยกว่า 100 หารด้วย 4:
import future
echo lc[x*x|(x<-1..9,x*x mod 4==0),int]
anyแทนstring(ฉันสมมติว่าคุณเลือกชื่อประเภทที่ยาวที่สุด) แต่สิ่งนี้ยังคงบันทึกโดยไม่คำนึงถึง
anyขอบคุณสำหรับเคล็ดลับ! คุณควรโพสต์สิ่งนั้นเป็นคำตอบ
proc(s:any):any=s&", world!"โดยปล่อย<space>fให้ไม่ระบุชื่อproc
เมื่อทำงานกับจำนวนเต็มไม่ใช่ค่าลบบางครั้งการใช้โอเปอเรเตอร์ที่ไม่ได้ลงทะเบียนดีกว่า โดยเฉพาะถ้าเป็นไปได้ใช้/%และ%%แทนและdivmod
max a,bแม้ใช้งานได้ (บางครั้ง)