number i (set p)
g=card(p);h=g;n=0;e=p[0];q=e.e
for d in p
if h<g-1
q=q.e
n=card(intersection(d.e,q))>1or d on q?1|n
end
e=d;h=h-1
end;return n;end
फंक्शन नाम दिया गया है iकि, अंकों का एक सेट पारित किया, 0 या 1. अर्धविराम और लाइन ब्रेक एक कमांड को समाप्त करने के लिए विनिमेय हैं, मैंने कोड को संक्षिप्त रूप से रखने के लिए कुछ चीजों को एक साथ जोड़ दिया क्योंकि हम सुपाठ्य नहीं हैं। कोड के आसपास यहाँ वैसे भी।
यूक्लीड्स मुख्य रूप से ग्राफिकल आउटपुट के लिए एक प्लेन ज्योमेट्री लैंग्वेज है, लेकिन साथ ही साथ अच्छी प्रोग्रामेटिक क्षमताओं के साथ। मैंने सोचा कि यह इस कार्य के लिए बहुत अच्छा होगा, लेकिन कुछ चीजों ने मुझे निराश किया। सबसे पहले, यह ध्यान देने योग्य है कि यूक्लाइड्स में सेट अनिवार्य रूप से बिंदुओं के एरे हैं, और जब लागू होते हैं तो कनेक्टेड लाइन सेगमेंट से बने पथ के रूप में प्रदान किए जाते हैं। Eukleides लोकी के माध्यम से सेट की पुनरावृत्त पीढ़ी का समर्थन करता है, जो कि इस प्रक्रिया में एक सेट बनाता है, एक लूप के समान है। अगर मैं एक लोको का उपयोग करने में सक्षम था, तो यह बाइट्स से मुंडा होता, लेकिन जाहिर तौर पर यूक्लिड्स अपने भीतर से आंशिक रूप से बने हुए स्थान का संदर्भ देना पसंद नहीं करता।
अन्य प्रमुख हताशा यह थी कि यदि, प्रतीत होता है, दो समान रेखा खंड एक-दूसरे के ऊपर हैं, तो intersectionकेवल एक आवर्ती बिंदु (जो समझ में आता है, मुझे लगता है, अनंत चौराहे होंगे)। मेरी विधि अनिवार्य रूप से पथ को एक कदम पीछे बनाने के लिए है, और पथ के साथ चौराहों के लिए अगली पंक्ति खंड का परीक्षण करें। पूर्वोक्त चौराहे के व्यवहार के कारण मैं अलग से जाँच करता हूँ कि बिंदु पथ पर है या नहीं ।
संपादित करें : orपहले एक स्थान को हटाने के लिए अनुमति देने के लिए बयान को फिर से दर्ज करके 1 बाइट काट लें or; उस ifब्लॉक को टर्नरी ऑपरेशन में बदलकर 5 और बाइट्स ।
परीक्षण के मामलों:
ta=point(0,0).point(1,0)
tb=point(0,0).point(1,0).point(0,0)
tc=point(0,0).point(1,0).point(1,1).point(0,0)
td=point(0,0).point(2,0).point(1,1).point(1,-1)
te=point(0,0).point(10,0).point(0,1).point(10,1).point(0,2).point(10,2)
print i(ta);print i(tb);print i(tc);print i(td);print i(te)
0
1
1
1
0