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उन स्थानों को गिना जाता है जहां पहली चाल घटती है b। ये सामान्य रूप से अलग हैं, और वे इसमें जोड़ते हैं a%b।
में सम्मिलन को a?bसूची बोध के रूप में भी लिखा जा सकता है a?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%ia?i+i?a पुनरावर्ती कॉल के ।
नए बेस केस के कारण 49-बाइट संस्करण में ?आउटपुट को दोगुना करने का मौका मिलता है ?, तब से 0?0=1, हमारे पास होगा 0%0=0?0+0?0=2। यह उपयोग को f n=n?nबिना रुके परिभाषित करने देता है जिसे हमें करने की आवश्यकता होगी।