নিয়মিত বহুগ্রাম


16

উল্লম্বের সংখ্যা n ≥ 3এবং "পদক্ষেপের আকার" 1 ≤ m < n/2 (দুটি সংযুক্ত কোণের মধ্যবর্তী দূরত্ব নির্দেশ করে) প্রদত্ত, সংশ্লিষ্ট নিয়মিত বহুবৃত্তের একটি গ্রাফিকাল প্রতিনিধিত্ব করুন । যদি বহুগ্রামে একাধিক বন্ধ লুপ থাকে তবে প্রতিটি লুপটি আলাদা লাইন রঙে রেন্ডার করতে হবে। (যদি এটি বিভ্রান্তিকর মনে হয় তবে নীচের উদাহরণগুলিতে আশাকরি বিষয়গুলি পরিষ্কার করা উচিত))

বিধি

সমস্যার যে কোনও যুক্তিসঙ্গত সমাধান সম্ভবত এই নিয়মগুলিকে স্বয়ংক্রিয়ভাবে সন্তুষ্ট করবে - উত্তরগুলি প্রতিরোধ করতে কেবল এগুলি আউটপুটটির পরামিতিগুলিতে কিছু বাধা রক্ষা করার জন্য রয়েছে "এই কালো ব্লকটি সম্পূর্ণরূপে একটি বহুভুজ, তবে আপনি এটি দেখতে পাচ্ছেন না কারণ আমি রেখার প্রস্থটি 9000 এর উপরে সেট করেছি ""

  • আপনি বহুগ্রামটি কোনও ফাইলের কাছে রেন্ডার করতে পারেন (যা ডিস্কে লেখা যেতে পারে বা স্ট্যান্ডার্ড আউটপুট প্রবাহে) বা স্ক্রিনে প্রদর্শন করতে পারেন।
  • আপনি ভেক্টর বা রাস্টার গ্রাফিক্স ব্যবহার করতে পারেন। যদি আপনার আউটপুটটি রাস্টেরাইজড হয়, আপনার চিত্রের 400x400 পিক্সেল বা তার বেশি মাত্রা থাকতে হবে এবং বহুগ্রামের ব্যাসার্ধ (কেন্দ্র থেকে প্রতিটি শীর্ষবিন্দুর দূরত্ব) অবশ্যই পাশের দৈর্ঘ্যের 35% এবং 50% এর মধ্যে হতে হবে।
  • বহুগ্রামের অনুপাতের অনুপাতটি 1 হতে হবে (যাতে এর শিখরগুলি একটি সঠিক বৃত্তের উপরে থাকে) - চিত্রটির ক্যানভাসটি আয়তক্ষেত্রাকার হতে পারে।
  • বহুগ্রামের রেখাগুলি অবশ্যই ব্যাসার্ধের 5% এর চেয়ে বেশি ঘন হওয়া উচিত নয় (এবং অবশ্যই তাদের দৃশ্যমান হওয়ার জন্য শূন্যের বেধ থাকতে হবে) have
  • আপনি বহুগ্রামের পাশাপাশি অক্ষ বা একটি ফ্রেম রেন্ডার করতে পারেন তবে অন্য কিছু নয়।
  • আপনি যে কোনও (কঠিন) পটভূমির রঙ চয়ন করতে পারেন।
  • একাধিক বদ্ধ লুপ সমন্বিত বহুভুজগুলির জন্য আপনাকে কমপক্ষে 6 টি দৃশ্যত পৃথক রঙগুলি সমর্থন করতে হবে , সেগুলি অবশ্যই পটভূমির থেকে আলাদা হওয়া উচিত। (ধূসর-স্কেলটি ঠিকঠাক, বর্ণানুসারে ছায়াগুলি পর্যাপ্ত পরিমাণে ছড়িয়ে পড়ে)) আপনার কোডটি এখনও 6 টিরও বেশি লুপের জন্য কাজ করবে তবে কোনও অতিরিক্ত লুপগুলির জন্য রঙগুলি আলাদা করতে হবে না (অর্থাত আপনি আবারও ব্যবহার করতে পারেন) পূর্ববর্তী লুপগুলি থেকে সেই সময়ে রঙগুলি)।

এটি কোড গল্ফ, তাই সংক্ষিপ্ত উত্তরটি (বাইটে) জেতে।

উদাহরণ

এখানে সমস্ত আউটপুট n = 16(যেখানে কলামের সাথে nসারি এবং এর সাথে সারিটি মিলছে m) এখানে রয়েছে:

এখানে চিত্র বর্ণনা লিখুন আরও বড় সংস্করণের জন্য ক্লিক করুন।

বৃহত্তর উদাহরণ হিসাবে n, এখানে (n, m) = (29, 11)এবং (30, 12):

এখানে চিত্র বর্ণনা লিখুনএখানে চিত্র বর্ণনা লিখুন


অ্যান্টি এলিয়জিং এবং স্টাফ সম্পর্কে কী? (যেহেতু আমরা কোণযুক্ত লাইনগুলি নিয়ে কাজ করছি)
অপটিমাইজার

1
@ অপ্টিমাইজার আমি একটি অ্যান্টি-এলিয়জিং অ্যালগরিদম লিখতে যাচ্ছি না। লাইনগুলি যতক্ষণ না স্পষ্টভাবে দৃশ্যমান হয় ততক্ষণ এনিটিযুক্ত বা অ্যান্টি-এলিয়াস হতে পারে। আপনার সেরা রায় ব্যবহার করুন।
মার্টিন ইন্ডার

উত্তর:


5

ম্যাটল্যাব, 85 81

ফাংশনটি স্ক্রিনে একটি প্লট প্রদর্শন করে।

function f(n,m)
hold all
axis equal
for k=1:gcd(m,n)
plot(i.^(4*(k:m:n^2)/n))
end

N = 30, মি = 12 এর ফলাফল: চ (30,12)


আমি এই কাজ অনিশ্চিত; যদি আমি এটি সঠিকভাবে করে ফেলেছি তবে এটি 30, 12 এর জন্য এই চিত্রটি আউটপুট দেবে : দেখুন: bit.ly/1GFZni7
durron597

@ durron597 এটি মাতলাব-এ আসলে কাজ করে তবে ফাংশনটি তাত্ক্ষণিকভাবে পুনরায় ব্যবহারযোগ্য নয়, কারণ hold allপরবর্তী প্লট প্রথমটির শীর্ষে আঁকা হচ্ছে ... আমি জানি না যে ফাংশনগুলির পুনঃব্যবহারযোগ্যতা সম্পর্কে আমাদের aক্যমত আছে কিনা? সৎ।
মার্টিন ইন্ডার

@ মার্টিনবাটনার এটি hold onযাইহোক যাইহোক একটি বাইট সংরক্ষণ করা উচিত ; আপনি চারটি বাইট যুক্ত করলে এটি পুনরায় ব্যবহারযোগ্য হয়ে যায় ( clf\n)
durron597

দেখা যাচ্ছে যে আমাদের con ক্যমত্য রয়েছে এবং আমি এমনকি কয়েক মাস আগে প্রশ্ন পোস্ট করেছি এবং উত্তর দিয়েছি answer ওও সুতরাং মেটা পোস্টের মাধ্যমে, এটি প্রকাশের জন্য কিছু না করেই অবৈধ hold
মার্টিন ইন্ডার

@ MartinBüttner আপনি পরিবর্তন করেন তাহলে hold allকরতে clf\nhold onনা এটি ঠিক সমস্যা?
durron597

3

সিজেম, 114

"P2"N400:ASAN6N0aA*aA*q~:M;:K{:CK,f{M*+K%P*2*K/_[mc)\ms)]199f*}_+2ew{~1$.-Af/A,\ff*\f.+{:mo~_3$=@C6%)tt}/}/}/Sf*N*

এটি চিত্রটিকে ASCII PGM ফর্ম্যাটে আউটপুট করে।

আপনি এটি অনলাইনে চেষ্টা করতে পারেন তবে আউটপুটটি বেশ দীর্ঘ। আপনি পরিবর্তন করতে পারেন 400এবং199চিত্রের আকার হ্রাস ছোট সংখ্যায় ।

সিজেমের চিত্র, অঙ্কন, লাইন বা আকারগুলির কোনও ধারণা নেই, তাই আমি চিত্রটি বর্গক্ষেত্রের ম্যাট্রিক্সে পিক্সেল দ্বারা পিক্সেলটি তৈরি করেছি (প্রতিটি পিক্সেলের জন্য ধূসর ছায়া উপস্থাপন করে এমন একটি সংখ্যা)।

ফলাফলটি দেখতে এরকম দেখাচ্ছে 30 12:

polygram


1

গণিত, 70 বাইট

ListPolarPlot[Table[{2Pi(i+j#2)/#,1},{i,GCD@##},{j,#+1}],Joined->1>0]&

ঠিক আছে ... এটি আমার রেফারেন্স বাস্তবায়ন যা এখন পর্যন্ত উভয়ই জমা দেয়। আমি আমার নিজের চ্যালেঞ্জ জয়ের লক্ষ্যে নই, তাই আমি আশা করি কেউ এটিকে পরাজিত করবেন।

আউটপুটটি নিজেই চ্যালেঞ্জের প্লটের মতো, আমি এখানে অক্ষগুলি অপসারণ না করেই:

এখানে চিত্র বর্ণনা লিখুন

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