เคล็ดลับการเล่นกอล์ฟในนิ่ม


11

สิ่งใดที่คุณมีเคล็ดลับทั่วไปสำหรับการเล่นกอล์ฟในนิ่ม ? ฉันกำลังมองหาความคิดที่สามารถนำไปใช้กับปัญหาเกี่ยวกับ code-golf และอย่างน้อยก็ค่อนข้างเฉพาะกับ Nim (เช่น "ลบความคิดเห็น" ไม่ใช่คำตอบ)

กรุณาโพสต์หนึ่งเคล็ดลับต่อคำตอบ

คำตอบ:


7

ไวยากรณ์การโทรที่ยืดหยุ่น

นิ่มเป็นสวยยืดหยุ่นเมื่อมันมาถึงฟังก์ชั่นการโทรไวยากรณ์ ตัวอย่างเช่นต่อไปนี้เป็นวิธีเรียกใช้ฟังก์ชันที่มีอาร์กิวเมนต์หนึ่งตัว:

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

โปรดทราบว่าmax a,bแม้ใช้งานได้ (บางครั้ง)
ทองแดง

7

ใช้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(ฉันสมมติว่าคุณเลือกชื่อประเภทที่ยาวที่สุด) แต่สิ่งนี้ยังคงบันทึกโดยไม่คำนึงถึง
Sp3000

@ Sp3000 ฉันไม่ทราบว่าคุณสามารถใช้anyขอบคุณสำหรับเคล็ดลับ! คุณควรโพสต์สิ่งนั้นเป็นคำตอบ
ทองแดง

เพื่อการเปรียบเทียบที่ดียิ่งขึ้นคุณสามารถทำได้proc(s:any):any=s&", world!"โดยปล่อย<space>fให้ไม่ระบุชื่อproc
Sp3000

6

ผู้ประกอบการที่ไม่ได้ลงนาม

เมื่อทำงานกับจำนวนเต็มไม่ใช่ค่าลบบางครั้งการใช้โอเปอเรเตอร์ที่ไม่ได้ลงทะเบียนดีกว่า โดยเฉพาะถ้าเป็นไปได้ใช้/%และ%%แทนและdivmod

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.