যৌক্তিক স্থানাঙ্কগুলি সঠিক সিয়ারপিনস্কি ত্রিভুজের মধ্যে রয়েছে কিনা তা নির্ধারণ করুন


9

Sierpinski ত্রিভুজ প্লেনে পয়েন্ট যা একটি একক ত্রিভুজ দিয়ে শুরু এবং বারবার চার সর্বসম ত্রিভুজ সব ত্রিভুজ বিভাজন এবং কেন্দ্র ত্রিভুজ সরিয়ে নির্মান করা হয় একটি সেট। অধিকার Sierpinski ত্রিভুজ এ কোণে রয়েছে (0,0), (0,1)এবং (1,0), এবং সৌন্দর্য এটি পছন্দ:

সিয়েরপিনস্কি ত্রিভুজ

এই সেটটির কিছু সমতুল্য সংজ্ঞা নিম্নরূপ:

  • nসবার উপরে বর্ণিত প্রক্রিয়াটির তম পুনরাবৃত্তির পয়েন্টগুলি n

  • বিন্দুগুলি (x,y)সহ 0 <= x <= 1এবং এর সাথে 0 <= y <= 1সমস্ত ধনাত্মক পূর্ণসংখ্যার জন্য n, nx এবং y এর বাইনারি প্রসারণের মঞ্চটি উভয়ই নয় 1

  • দিন T = {(0,0),(1,0),(0,1)}

    fনিম্নলিখিত দ্বারা সংজ্ঞায়িত 2D পয়েন্টের সেটগুলিতে একটি ফাংশন হতে দিন :

    f(X) = {(0,0)} ∪ {(x+t)/2 | x∈X, t∈T}

    এরপর Sierpinski ত্রিভুজ হয় টপোলজিকাল অবসান এর অন্তত নির্দিষ্ট বিন্দু এর (সেট সংবরণ করে) f

  • দিন Sবর্গ হতে{(x,y) | 0<=x<=1 and 0<=y<=1}

    আসুন g(X) = S ∩ {(x+t)/2 | x∈(X), t∈T}(যেখানে Tউপরোক্ত সংজ্ঞা দেওয়া হয়েছে)

    তারপরে ডান সিয়েরপিনস্কি ত্রিভুজটি সবচেয়ে বড় স্থির বিন্দু g

চ্যালেঞ্জ

একটি প্রোগ্রাম বা ফাংশন লিখুন যা 4 টি পূর্ণসংখ্যা গ্রহণ করে, a,b,c,dএবং যদি সত্য সিয়ারপিনস্কি ত্রিভুজের সাথে সম্পর্কিত হয় তবে সত্যবাদী মান (a/b,c/d)দেয় এবং অন্যথায় একটি মিথ্যা মান দেয়।

স্কোরিং

এটি একটি কোড গল্ফ। বাইটস মধ্যে সংক্ষিপ্ত কোড।

পরীক্ষার মামলা

নিম্নলিখিতটি ডান সিয়ারপিনস্কি ত্রিভুজটিতে রয়েছে:

0 1 0 1
0 1 12345 123456
27 100 73 100
1 7 2 7
8 9 2 21
8 15 20 63
-1 -7 2 7

নিম্নলিখিতটি সিয়েরপিনস্কি ত্রিভুজটিতে নেই:

1 1 1 1
-1 100 1 3
1 3 1 3
1 23 1 7
4 63 3 66
58 217 4351 7577
-1 -7 3 7

কি -1 -3 1 1একটি বৈধ ইনপুট?
xnor

হ্যাঁ, এটি একটি বৈধ ইনপুট। এটি পরিষ্কার করার জন্য আমি পরীক্ষার কেস যুক্ত করেছি।
পিচবোর্ড_বক্স

উত্তর:


5

পাইথন 2, 68

lambda n,d,N,D:1>=n/d>=0<=N/D<=1and(n<<abs(D*d))/d&(N<<abs(D*d))/D<1

কাস্তে তৈরি গসকেট সদস্যতার জন্য পরীক্ষা করার একটি দুর্দান্ত উপায় way যদি আমাদের নিশ্চিত হয় যে ইনপুটগুলি অ-নেতিবাচক এবং ইউনিট স্কোয়ারে রয়েছে তবে আমাদের 38 হবে:

lambda n,d,N,D:(n<<D*d)/d&(N<<D*d)/D<1

ধারণাটি হ'ল যে আমরা গসকেটের ভিতরে কোনও বিন্দু রয়েছে কিনা তা পরীক্ষা করে তাদের বাইনারি ভগ্নাংশ বিস্তৃতভাবে-ও 0 তে গিয়েছে কিনা তা যাচাই করে দেখছি প্রসারণের প্রথম kচরিত্রটি পেতে , আমরা kবিভাজক দ্বারা বিভাজক পূর্বে পূর্ণ সংখ্যা-বিভাজনের আগে বাম অংকের বিটগুলি বিট-শিফট করি । kপুনরাবৃত্তিটি ধরতে আমাদের যথেষ্ট পরিমাণে বড় করা দরকার । আমরা লক্ষ করি যে বাইনারি সম্প্রসারণের n/dসর্বাধিক সময়কাল থাকে d, তাই যৌথ সম্প্রসারণের বেশিরভাগ সময়কাল থাকে d*D, তাই k=d*Dযথেষ্ট।

বাকি কিনা ভগ্নাংশ বক্স এবং মত দেওয়া ইনপুট বিরুদ্ধে আলাদা করিয়া থাকে চেক করা হল -1/-3

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.