0?0=1
a?b=sum[a?i+i?a|i<-[0..b-1]]
f n=n?n
ลองออนไลน์!
การประยุกต์ใช้โดยตรงอย่างเป็นธรรมที่เรียกซ้ำกว่า 2 ตัวแปร
นี่คือวิธีที่เราจะได้รับโซลูชันนี้ เริ่มต้นด้วยรหัสที่ใช้สูตรแบบเรียกซ้ำโดยตรง:
54 ไบต์
0%0=1
a%b=sum$map(a%)[0..b-1]++map(b%)[0..a-1]
f n=n%n
ลองออนไลน์!
การใช้การตีความโกงย้าย flawr ของ , a%bคือจำนวนของเส้นทางที่ได้รับจากเกมหมากรุก(a,b)การ(0,0)ใช้เพียงย้ายการลดลงของการประสานงาน การย้ายครั้งแรกจะลดaหรือลดลงbทำให้อีกอันหนึ่งเหมือนเดิมดังนั้นสูตรเวียนเกิดซ้ำ
49 ไบต์
a?b=sum$map(a%)[0..b-1]
0%0=1
a%b=a?b+b?a
f n=n%n
ลองออนไลน์!
เราสามารถหลีกเลี่ยงการทำซ้ำmap(a%)[0..b-1]++map(b%)[0..a-1]โดยสังเกตว่าทั้งสองครึ่งเหมือนกันaและbสลับกัน สายช่วยa?bนับเส้นทางที่ย้ายครั้งแรกลดลงaและเพื่อให้นับผู้ที่ย้ายครั้งแรกลดลงb?a เหล่านี้อยู่ในที่แตกต่างกันโดยทั่วไปและพวกเขาเพิ่มba%b
ในผลรวมยังสามารถเขียนเป็นความเข้าใจรายการa?ba?b=sum[a%i|i<-[0..b-1]]
42 ไบต์
0?0=1
a?b=sum[a?i+i?a|i<-[0..b-1]]
f n=n?n
ลองออนไลน์!
สุดท้ายเราก็กำจัดทิ้งไป%และเขียนการสอบถามซ้ำในแง่ของ?ด้วยการแทนที่a%iด้วยa?i+i?aการโทรซ้ำ
กรณีฐานใหม่ที่ทำให้เกิดนี้?จะให้ผลอีกครั้งว่าของ?ในรุ่น 49 ไบต์ตั้งแต่ที่มีเราจะมี0?0=1 0%0=0?0+0?0=2สิ่งนี้ช่วยให้ใช้ define f n=n?nโดยไม่ต้องแบ่งครึ่งที่เราต้องทำ