जीवन का गोल्फ फूल


19

यहाँ चुनौती अपनी पसंद की भाषा में जीवन के फूल (जो कुछ के अनुसार एक पवित्र ज्यामितीय आकृति है) को सटीक रूप से चित्रित करना है।

जीवन का फूल

डिज़ाइन में वृत्त 1 की त्रिज्या और आंशिक हलकों की व्यवस्था है, जिनके केंद्रों को पिच 1 के त्रिकोणीय ग्रिड पर व्यवस्थित किया गया है, साथ ही उनके चारों ओर त्रिज्या 3 का एक बड़ा वृत्त है।

डिजाइन को आप जैसे चाहें वैसे बढ़ा सकते हैं, लेकिन गणितीय रूप से सही से 2% की अधिकतम त्रुटि की अनुमति है। यदि रेखापुंज ग्राफिक्स का उपयोग करते हैं, तो यह प्रभावी रूप से छोटे हलकों के व्यास को कम से कम लगभग 100 पिक्सेल तक सीमित करता है।

चूंकि यह कोड-गोल्फ है, सबसे छोटा कोड (बाइट्स) जीतता है।


10
साइट पर आपका स्वागत है! जैसा कि आप जानते हैं, यह आम तौर पर एक उत्तर को स्वीकार करने से पहले थोड़ी देर प्रतीक्षा करने के लिए प्रोत्साहित किया जाता है, इस तरह अन्य उपयोगकर्ता प्रतियोगिता को "ओवर" के रूप में नहीं देखेंगे, और अधिक भागीदारी और प्रतियोगिता होगी।
डीजेएमकेम

2
"दृश्य, पहचानने योग्य और सही" न तो स्पष्ट है और न ही उद्देश्य। यह निर्धारित करना असंभव है कि उद्देश्य वैधता मानदंडों के बिना कोई सबमिशन मान्य है या नहीं। हम सैंडबॉक्स के उपयोग को प्रोत्साहित करते हैं कि वे मुख्य साइट पर पोस्ट करने से पहले चुनौतियों के साथ किसी भी संभावित मुद्दों पर काम करें।
मीगो

"पहचानने योग्य" जैसे ऐसे सार नियम के अलावा, न्यूनतम आकार निर्दिष्ट करना बेहतर होगा।
11

चूँकि किसी ने इसे अभी तक प्लग नहीं किया है, हमारे पास मेटा पर एक सैंडबॉक्स है जिसे नई चुनौतियों पर प्रतिक्रिया प्राप्त करने में मदद करने के लिए डिज़ाइन किया गया है। आप इसे यहाँ देख सकते हैं: meta.codegolf.stackexchange.com/questions/2140/…
tuskiomi

1
यह वास्तव में सिर्फ 19 सर्किल नहीं है। किनारों पर कुछ गोलाकार चाप भी हैं। (उनमें से ६ππ / ३, १२ कवरिंग 18, १π कवरिंग) / ६ के कोण को कवर करते हुए)
मार्टिन एंडर

जवाबों:


23

मैथमेटिका, 177 173 128 124 120 बाइट्स

c=Circle;Graphics@{{0,0}~c~3,Rotate[Table[If[-3<x-y<4,c[{√3x,-x+2y}/2,1,Pi/{6,2}]],{x,-3,2},{y,-4,2}],Pi/3#]&~Array~6}

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

इसका मुख्य विचार इस के छह घुमाए गए संस्करणों से परिणाम की रचना करना है:

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

यह बारी-बारी से दो कोनों को काटकर एक समान सर्कल आर्क्स की एक आयताकार तालिका है। यदि हम कतरनी निकालते हैं और प्रत्येक सर्कल केंद्र का प्रतिनिधित्व करते हैं #, तो हम मूल रूप से इस पैटर्न में मंडलियों को वितरित करना चाहते हैं:

####
#####
######
######
 #####
  ####

इन किनारों को -3 < x-y < 42D सूचकांकों पर स्थिति को लागू करने से काट दिया जाता है (चूंकि x-yविकर्ण के साथ स्थिर है) और कतरनी इन को गुणा करने xऔर yगैर-ऑर्थोगोनल आधार वैक्टर द्वारा ग्रिड के लिए आती है जो हम देख रहे हैं।

असंबद्ध आर्क्स का यह विशेष रूप से उन्मुखीकरण चाप के दोनों छोरों के समान रूप से विभाजित होने के बाद से सबसे छोटा हो जाता है Piताकि चाप को व्यक्त किया जा सके Pi/{6,2}(अन्य सभी आर्क या तो की आवश्यकता होगी और अंश में अतिरिक्त माइनस साइन या पूर्णांक)।


संख्यात्मक त्रुटि के स्रोत को समाप्त करते हुए, 2 वर्णों और 0 बाइट्स को बचाने के लिए ,3 का उपयोग करें।
केली लोल्डर

@ केलीलॉउंड गुड पॉइंट, फिक्स्ड।
मार्टिन एंडर

8

OpenSCAD, 228 बाइट्स

$fn=99;module o(a=9){difference(){circle(a);circle(a-1);}}function x(n)=9*[sin(n*60),cos(n*60)];module q(g){for(i=[1:6])if(g>0){translate(x(i))union(){o();q(g-1);}}else{intersection(){translate(x(i))o();circle(9);}}}q(2);o(27);

नीचे एक संस्करण है जो किसी को पैरामीटर आर (त्रिज्या) और डब्ल्यू (छल्ले की चौड़ाई) सेट करने की अनुमति देता है।

r=1;w=.1;$fn=99;module o(n){difference(){circle(n);circle(n-w);}}function x(n)=(r-w/2)*[sin(n*60),cos(n*60)];module q(g){for(i=[1:6])if(g>0){translate(x(i))union(){o(r);q(g-1);}}else{intersection(){translate(x(i))o(r);circle(r);}}}q(2);o(3*r-w);

यह संस्करण xactly 246 अक्षर है।
इस कोड में से कुछ तकनीकी रूप से अनावश्यक है लेकिन यह चित्र की तरह दिखता है।


मुझे यह त्रुटि OpenSCAD.net (फ़ायरफ़ॉक्स 47) पर मिल रही है: Error: Error: Parse error on line 1: ...x(k))o();circle(9);};}}}q(2);o(27); -----------------------^ Expecting 'TOK_ID', '}', 'TOK_IF', '!', '#', '%', '*', got ';'
हाइपरनेट्रिनो

@AlexL। जब मैं अपने मैक पर वास्तविक OpenSCAD क्लाइंट का उपयोग करता हूं तो मुझे वह त्रुटि नहीं मिल रही है। हालाँकि मैं क्रोम का उपयोग करके OpenSCAD.net पर उस त्रुटि को दोहराने में सक्षम था, जो निराशाजनक है। यह उनकी सेवा के साथ एक मुद्दा है। क्या आप डेस्कटॉप एप्लिकेशन को आज़मा सकते हैं?
हेनरी वाइल्डरमथ

1
डेस्कटॉप संस्करण (Ubuntu 14.04 LTS) पर मेरे लिए काम किया।
बेंजामिन स्पेक्टर

1
मैंने आपके कोड में पैटर्न};} को देखा। मुझे लगता है कि आप इसे}} के साथ सुरक्षित रूप से बदल सकते हैं, जो दोनों संस्करणों के लिए एक चरित्र को दाढ़ी देगा। इसे खुद परखा और काम करने लगा।
बेंजामिन स्पेक्टर

6

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

@ मार्टिनएंडर की अधीनता के साथ वास्तव में प्रतिस्पर्धी नहीं है लेकिन फिर भी मैंने इस गैर के साथ मज़े किए। मैंने पंखुड़ियों को एक यादृच्छिक चलने दिया! पंखुड़ी 60 डिग्री को बेतरतीब ढंग से एक समापन बिंदु के बारे में घुमाकर चलती है जिसे यादृच्छिक रूप से भी चुना जाता है। मैं यह देखने के लिए परीक्षण करता हूं कि क्या पंखुड़ी का घूर्णन अंत बड़ी डिस्क के बाहर होता है, और यदि ऐसा है, तो रोटेशन दूसरे तरीके से जाता है।

c=Circle;a=√3;v={e=0{,},{0,2}};f=RandomChoice;Graphics@{e~c~6,Table[q=f@{1,2};t=f@{p=Pi/3,-p};r=RotationTransform[#,v[[q]]]&;v=r[If[r[t]@v[[-q]]∈e~Disk~6,t,-t]]@v;Translate[Rotate[{c[{1,a},2,p{4,5}],c[{1,-a},2,p{1,2}]},ArcTan@@(#-#2)&@@v,e],v[[2]]],{5^5}]}

यहाँ बाद के कोड का उपयोग मैंने एनीमेशन के लिए किया है।

Export[NotebookDirectory[]<>"flower.gif", Table[Graphics[Join[{c[e,6]},(List@@%)[[1,2,1;;n-1]],{Thick,Red,(List@@%)[[1,2,n]]}]],{n,1,3^4,1}]]

रैंडम पेटल वॉक

मैंने कहीं पढ़ा है कि 2-आयामी रैंडम वॉक को अंततः मूल में लौटना चाहिए। ऐसा लगता है कि बड़े डिस्क को भरने के लिए कुछ हज़ार कदम की गारंटी है।


यह एक बहुत अच्छा विचार है, लेकिन पुनरावृत्तियों की एक सीमित संख्या के साथ पूरे फूल को न भरने की एक गैर-शून्य संभावना भी है। 30 पंखुड़ियों को खींचने के बाद आपको संभवतः एक समाप्ति की स्थिति जोड़नी चाहिए (यह निर्धारित करने के लिए सबसे छोटा तरीका लगता है कि क्या आप वास्तव में कर रहे हैं)। तब आपको पता चलेगा कि जब आप समाप्त करते हैं, तो ड्राइंग किया जाता है, और समाप्त नहीं होने की संभावना शून्य होगी।
मार्टिन एंडर

उस के स्वतंत्र, वहाँ बहुत सारे बाइट्स आप बचा सकते हैं: Sqrt[3]है 3^.5। आपको eइसके पहले उपयोग तक परिभाषित करने की आवश्यकता नहीं है और इस पर एक बाइट को बचाने के लिए आप इस ट्रिक का उपयोग कर सकते हैं , इसलिए v={e=0{,},{0,2}}। आप कुछ infix संकेतन जैसे e~c~6या का उपयोग कर सकते हैं e~Disk~6, और ArcTan@@Subtract@@vसमान होना चाहिए ArcTan@@(#-#2)&@@v
मार्टिन एंडर

15 बाइट्स से दाढ़ी बनाने के लिए ix और √ ऑपरेटर का इस्तेमाल किया। युक्तियों के लिए धन्यवाद @MartinEnder। / 2 और 2 * से छुटकारा मिला जो रद्द कर दिया गया। 180 पंखुड़ियाँ हैं इसलिए 4 ^ 4 पुनरावृत्तियों में आमतौर पर लगभग आधी डिस्क शामिल होती है, और 5 ^ 5 कार्य करता है। 9 ^ 9 की डिस्क को कवर न करने की संभावना 10 ^ 400,000 में से ~ 1 है जो 2% त्रुटि से बहुत कम है, इसलिए जांच करने के लिए बर्बाद बाइट्स के लायक नहीं है।
केली लोल्डर

3

जावास्क्रिप्ट (ईएस 6) / एसवीजी, 299 बाइट्स

with(document){write(`<svg height=250 width=250><circle${b=` fill=none stroke=black `}cx=125 cy=125 r=120 />`);for(i=0;i<24;i++)write(`<path${b}d=M5,125${`${a=`a60,60,0,0,1,`}40,0`.repeat(i%4+3)+`${a}-40,0`.repeat(i%4+3)} transform=${`rotate(60,125,125)`.repeat(i>>2)}rotate(-60,${i%4*4}5,125) />`)}

विभिन्न लंबाई के कई चाप जोड़े उत्पन्न करके काम करता है और फिर उन्हें जगह में घुमाता है।

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