f=lambda r,x=0:r-x and-~((r*r-x*x)**.5%1>0)*4+f(r,x+1)
इसे ऑनलाइन आज़माएं!
कम गोल्फ (55 बाइट्स) ( TIO )
lambda r:8*r-4*sum((r*r-x*x)**.5%1==0for x in range(r))
यह आउटपुट का अनुमान लगाता है 8*r
, फिर शीर्ष क्रॉसिंग के लिए सही होता है। परिणाम है 8*r-g(r*r)
, जहां लिखने के तरीकोंg(x)
की संख्या गिना जाता हैx
दो वर्गों (को छोड़कर g(0)=0
) के योग के रूप में जाता है ।
यदि सर्कल कभी किसी कोने से नहीं गया, तो छोड़ी गई कोशिकाओं की संख्या पार किए गए किनारों की संख्या के बराबर होगी। सर्कल 2*r
ऊर्ध्वाधर ग्रिडलाइन्स और 2*r
क्षैतिज ग्रिडलाइंस से गुजरता है , दोनों में से हर एक को दिशा में, कुल के लिए 8*r
।
लेकिन, एक शीर्ष पर प्रत्येक क्रॉसिंग दो किनारे क्रॉसिंग के रूप में गिना जाता है, जबकि केवल एक नए सेल में प्रवेश होता है। इसलिए, हम वर्टेक्स क्रॉसिंग की संख्या घटाकर क्षतिपूर्ति करते हैं। इस अक्ष पर अंक की तरह शामिल (r,0)
करने के साथ ही पाइथागोरस की तरह ट्रिपल (4,3)
के लिए r=5
।
हम एक एकल वृत्त का चतुर्थ भाग के लिए अंक गिनती (x,y)
के साथ x>=0
और y>0
साथ x*x+y*y==n
है, तो गुणा 4. द्वारा हम इस की numer की गणना के द्वारा करना sqrt(r*r-x*x)
है कि पूरे नंबर के लिए कर रहे हैं x
अंतराल में [0,r)
।