नियमित पॉलीग्राम


16

वर्टिकल की संख्या n ≥ 3और "स्टेप साइज़" 1 ≤ m < n/2 (दो जुड़े हुए सिरों के बीच की दूरी को इंगित करते हुए) को देखते हुए , इसी रेगुलर पॉलीग्राम के ग्राफिकल प्रतिनिधित्व को आउटपुट करता है । यदि पॉलीग्राम में कई बंद लूप होते हैं, तो प्रत्येक लूप को एक अलग लाइन रंग में प्रदान किया जाना चाहिए। (यदि यह भ्रामक लगता है, तो नीचे दिए गए उदाहरणों से चीजों को स्पष्ट रूप से स्पष्ट करना चाहिए।)

नियम

समस्या के किसी भी उचित समाधान से इन नियमों को स्वचालित रूप से संतुष्ट किया जा सकेगा - वे सिर्फ उत्तर को रोकने के लिए आउटपुट के मापदंडों पर कुछ अड़चनें डालने के लिए हैं जैसे "यह ब्लैक ब्लॉक पूरी तरह से एक पॉलीग्राम है, लेकिन आप इसे नहीं देख सकते क्योंकि मैंने लाइन की चौड़ाई 9000 से अधिक कर दी। "

  • आप पॉलीग्राम को या तो एक फ़ाइल में जमा कर सकते हैं (जिसे डिस्क या मानक आउटपुट स्ट्रीम पर लिखा जा सकता है) या इसे स्क्रीन पर प्रदर्शित करें।
  • आप वेक्टर या रेखापुंज ग्राफिक्स का उपयोग कर सकते हैं। यदि आपका आउटपुट rasterised है, तो आपकी छवि में 400x400 पिक्सेल या उससे अधिक के आयाम होने चाहिए, और पॉलीग्राम की त्रिज्या (केंद्र से प्रत्येक शीर्ष पर दूरी) 35% और साइड की लंबाई के 50% के बीच होनी चाहिए।
  • पॉलीग्राम का पहलू अनुपात 1 होना चाहिए (ताकि इसका वर्टिकल एक उचित सर्कल पर पड़े) - छवि का कैनवास आयताकार हो सकता है।
  • पॉलीग्राम की रेखाएं त्रिज्या के 5% से अधिक मोटी नहीं होनी चाहिए (और निश्चित रूप से, उनके पास दृश्यमान होने के लिए गैर-शून्य मोटाई होनी चाहिए)।
  • आप पॉलीग्राम के अलावा कुल्हाड़ियों या एक फ्रेम को प्रस्तुत कर सकते हैं, लेकिन कुछ और नहीं।
  • आप किसी भी (ठोस) पृष्ठभूमि रंग का चयन कर सकते हैं।
  • कई बंद छोरों वाले पॉलीग्राम के लिए, आपको कम से कम 6 नेत्रहीन अलग-अलग रंगों का समर्थन करना चाहिए , जो सभी पृष्ठभूमि से अलग होना चाहिए। (ग्रे-स्केल ठीक है, बशर्ते शेड्स स्पेक्ट्रम के माध्यम से पर्याप्त रूप से फैले हुए हों।) आपका कोड अभी भी 6 से अधिक छोरों के लिए काम करना चाहिए, लेकिन रंगों को किसी भी अतिरिक्त छोरों के लिए अलग-अलग नहीं होना चाहिए (अर्थात आप पुन: उपयोग भी कर सकते हैं। उस बिंदु पर पिछले छोरों से रंग)।

यह कोड गोल्फ है, इसलिए सबसे छोटा उत्तर (बाइट्स में) जीतता है।

उदाहरण

यहां सभी आउटपुट हैं n = 16(जहां कॉलम से संबंधित है nऔर पंक्ति से m):

यहाँ छवि विवरण दर्ज करें बड़े संस्करण के लिए क्लिक करें।

बड़े उदाहरण के लिए n, यहाँ हैं (n, m) = (29, 11)और (30, 12):

यहाँ छवि विवरण दर्ज करेंयहाँ छवि विवरण दर्ज करें


एंटी एलियासिंग और सामान के बारे में क्या? (चूंकि हम एंगल्ड लाइनों के साथ काम कर रहे हैं)
ऑप्टिमाइज़र

1
@ ओप्टिमाइज़र मैं एक एंटी-एलियासिंग एल्गोरिथ्म निर्धारित नहीं करने जा रहा हूं। जब तक वे स्पष्ट रूप से दिखाई देते हैं तब तक लाइनों को अलियास या एंटी-अलियास किया जा सकता है। अपने सर्वोत्तम निर्णय का उपयोग करें।
मार्टिन एंडर

जवाबों:


5

MATLAB, 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, m = 12 के परिणाम: च (30,12)


मैं इस काम में अनिश्चित हूं; अगर मैंने इसे सही तरीके से किया है, तो यह इस चित्र को 30, 12. के लिए आउटपुट करेगा । देखें: bit.ly/1GFZni7
Durron597

@ durron597 यह वास्तव में मतलाब में काम करता है, लेकिन फ़ंक्शन तुरंत पुन: प्रयोज्य नहीं है, क्योंकि hold allअगले प्लॉट के शीर्ष पर पहली बार खींचा जाता है ... मुझे नहीं पता कि क्या हमारे पास कार्यों के पुन: प्रयोज्य के बारे में आम सहमति है ईमानदार।
मार्टिन एंडर

@ मार्टिनबटनर hold onवैसे भी एक बाइट को बचाना चाहिए ; यदि आप चार बाइट्स जोड़ते हैं तो यह पुन: प्रयोज्य हो जाता है ( clf\n)
ड्यूर्रोन 597

पता चलता है कि हमारे पास एक आम सहमति है और मैंने कुछ महीने पहले इस सवाल का जवाब दिया था। OO तो उस मेटा पोस्ट के द्वारा, यह बिना कुछ जारी किए अमान्य होगा hold
मार्टिन एंडर

@ मार्टिनबटनर यदि आप उस समस्या को ठीक करने के hold allलिए बदलते हैं clf\nhold on?
डुर्रोन 597

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छोटी संख्या में बदल सकते हैं ।

CJam में छवियों, ड्राइंग, रेखाओं या आकृतियों की कोई अवधारणा नहीं है, इसलिए मैंने छवि को एक वर्ग मैट्रिक्स, पिक्सेल द्वारा पिक्सेल (प्रत्येक पिक्सेल के लिए एक ग्रे शेड का प्रतिनिधित्व करने वाली संख्या) में उत्पन्न किया।

यह परिणाम के लिए जैसा दिखता है 30 12:

Polygram


1

गणितज्ञ, 70 बाइट्स

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

खैर ... यह मेरा संदर्भ कार्यान्वयन है जो अब तक दोनों प्रस्तुतियाँ धड़कता है। मैं अपनी चुनौती जीतने का इरादा नहीं कर रहा हूं, इसलिए मुझे उम्मीद है कि कोई इसे हरा देगा।

आउटपुट चुनौती में भूखंडों की तरह है, सिवाय इसके कि मैं यहाँ कुल्हाड़ियों को नहीं हटा रहा हूँ:

यहाँ छवि विवरण दर्ज करें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.