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 প্রদান করে যাইহোক এখানে প্রায় কোড।
ইউক্লিডস মূলত গ্রাফিকাল আউটপুট জন্য একটি প্লেন জ্যামিতির ভাষা, তবে পাশাপাশি শালীন প্রোগ্রামিং ক্ষমতা সহ। আমি ভেবেছিলাম এটি এই কাজের জন্য দুর্দান্ত হবে তবে কয়েকটি জিনিস আমাকে হতাশ করেছিল। প্রথমত, এটি লক্ষণীয় যে ইউকলাইডে সেটগুলি মূলত পয়েন্টগুলির অ্যারে হয়, এবং প্রযোজ্য হলে সংযুক্ত লাইন বিভাগগুলির তৈরি পথ হিসাবে উপস্থাপন করা হয়। ইউক্লিডস লোকির মাধ্যমে সেটের পুনরাবৃত্তি প্রজন্মকে সমর্থন করে, একটি লুপের অনুরূপ যা প্রক্রিয়াটিতে একটি সেট তৈরি করে। আমি যদি কোনও লোকস ব্যবহার করতে সক্ষম হয়ে থাকি তবে এটি বাইটগুলি শেভ করে দিত, তবে স্পষ্টতই ইউক্লিডস নিজে থেকেই আংশিকভাবে গঠিত লোকসকে উল্লেখ করতে পছন্দ করেন না।
অন্যান্য বড় হতাশাটি ছিল যে, আপাতদৃষ্টিতে দুটি অভিন্ন লাইনের খণ্ডগুলি একে অপরের শীর্ষে থাকলে 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