रॉयटर्सवार्ड का त्रिभुज ड्रा करें


33

यह असंभव वस्तु है रायटर्सवार्ड का त्रिकोण :

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

इन नियमों के अनुसार अपना स्वयं का संस्करण बनाएं:

  • बिल्कुल 9 क्यूब्स कुल
  • प्रत्येक पक्ष ठीक 4 क्यूब्स से बना है
  • क्यूब्स ओवरलैप करने के लिए इस तरह दिखाई देते हैं कि प्रदान की गई वस्तु वास्तव में एक असंभव वस्तु है
  • 4 अलग-अलग रंगों का उपयोग किया जाता है - पृष्ठभूमि के लिए एक और क्यूब्स के प्रत्येक चेहरे के लिए 3
  • बिटमैप आउटपुट में, पूर्ण त्रिकोण कम से कम 100 पिक्सेल लंबा और कम से कम 100 पिक्सेल चौड़ा होना चाहिए
  • पहलू अनुपात: पूर्ण त्रिकोण की चौड़ाई और ऊंचाई 2 के कारक से अधिक नहीं होनी चाहिए
  • उपरोक्त छवि के सापेक्ष किसी भी राशि से त्रिकोण को घुमाया जा सकता है
  • त्रिकोण उपरोक्त छवि के सापेक्ष परिलक्षित हो सकता है या नहीं भी हो सकता है

जवाबों:


14

ब्रेन-फ्लैक, 487810 327722 75564 + 1 = 75565 बाइट्स

दुर्भाग्य से यह एक जवाब में फिट होने के लिए एक बड़ी बात है।

pastebin

इसे ऑनलाइन आज़माएं

-Aध्वज के साथ यह ASCII ppm फ़ाइल को आउटपुट करता है जो निम्नानुसार है:

नया आउटपुट

व्याख्या

आपने पहले ही अनुमान लगा लिया होगा कि मैंने इसे हाथ से नहीं लिखा। तो यहाँ है कि मैंने यह कैसे किया:

मैंने पहली बार आपके द्वारा दी गई छवि को चुनौती द्वारा प्रदान की गई छवि से बनाया है। इसका कोई रंग चैनल न होने का गौरव है जो इसके अलावा किसी भी मूल्य पर है 255या 0इस तरह हम इसे अधिकतम फ़ाइल चैनल के साथ एक छोटी फाइल में लपेट सकते हैं। 1. मैंने एक ब्रेन-फ्लाक प्रोग्राम को गोल्फ के लिए एक पायथन स्क्रिप्ट लिखी थी यह एक मॉड्यूल का उपयोग करके इसे हल करता है मैंने खुद को लिखा था जो यहां पाया जा सकता है । इसके बहुत पॉलिश नहीं इसके सिर्फ एक हैक मैं इस तरह की चीजों के लिए एक साथ फेंक दिया। pushएक फ़ंक्शन है जो स्टैक के लिए एक संख्या को पुश करने के लिए कुशल ब्रेन-फ्लैक कोड देता है और kolmoएक बहुत ही सरल कोलमोगोरोव जटिलता समाधान प्रोग्राम है जो स्टैक के लिए एक विशेष स्ट्रिंग को पुश करने के लिए एक कुशल तरीका खोजने का प्रयास करता है।

from value import push,kolmo

def group(a, n):
    return zip(*[a[i::n]for i in range(n)]) 

f=open("R.ppm")
a=["".join(x)for x in group(f.read().split()[3:][::-1],3)]
f.close()

def hardcode(string):
    result = push(ord("\n")).join("(<>({})<>"+{"0":"","1":"()"}[x]+")"for x in string)
    return result

last = ""
acc = 0
result = push(ord("0"))+"<>"
for x in a+[""]:
    if x != last:
        string = ("" if not last else kolmo("\n")+hardcode(last))
        result += min([push(acc)+"{({}[()]<%s>)}{}"%string,acc*string],key=len)
        acc=1
    else:
        acc += 1
    last = x
print result+kolmo("P3 100 100 ")

यह काफी मजेदार था और मुझे अपने जवाब में सुधार की उम्मीद है


14
आप वैध रूप से 160088 बाइट दूर गोल्फ? क्या यह एक रिकॉर्ड है?
नील

हो सकता है कि कुछ अनौपचारिक उत्तर उसे हरा सकते हैं
रोमन ग्रैफ


आपका पायथन कोड मुझे साज़िश करता है। क्या है value? ( PyPI पर यह मॉड्यूल नहीं , मैं अनुमान लगा रहा हूं?) क्या है kolmo?
टिम पेडरिक

@TimPederick इसके बारे में क्षमा करें। Thats एक मॉड्यूल खुद को ब्रेन-फ्लाक गोल्फिंग के लिए लिखा था। मैं शरीर में एक लिंक शामिल करूंगा।
गेहूं जादूगर

13

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

n={-1,1}#&;c_~g~s_:=Polygon[c+s#&/@{k={12,9},m=n@k,t={0,-12}}];p={#,#2~g~1,#3~g~-1}&;a=p[Cyan,#-k,#+m]&;b=p[Blue,#-t,#+k]&;c=p[Red,#-m,#+t]&;Graphics@{{a@#,b@#,c@#}&/@{j=4k,s=4{4,9},n@s,4m,r={-32,8},q=-4{4,5},4t,n@q,n@r},a@j,b@s,c@j,c@s}

पढ़ने में आसान संस्करण:

1  n = {-1, 1} # &;
2  c_~g~s_ := Polygon[c + s # & /@ {k = {12, 9}, m = n@k, t = {0, -12}}];
3  p = {#, #2~g~1, #3~g~-1} &;
4  a = p[Cyan, # - k, # + m] &;
5  b = p[Blue, # - t, # + k] &;
6  c = p[Red, # - m, # + t] &;
7  Graphics@{
8    {a@#, b@#, c@#} & /@
9      {j = 4 k, s = 4{4, 9}, n@s, 4 m, r = {-32, 8},
10       q = -4{4, 5}, 4 t, n@q, n@r},
11   a@j, b@s, c@j, c@s}

पंक्ति 1 एक फ़ंक्शन को परिभाषित करता है nजो एक आदेशित जोड़ी के पहले समन्वय को नकारता है। पंक्ति 2 एक फ़ंक्शन को परिभाषित करता है gजो बिंदु पर केंद्रित एक (लगभग) समबाहु त्रिभुज बनाता है c, और यह इंगित करता है कि क्या sहै 1या क्या है -1। लाइन 3 परिभाषित करता है pएक रंग और दो त्रिकोण, और लाइनों से मिलकर एक समान्तर टेम्पलेट होने के लिए 4-6 को परिभाषित a, bऔर cतीन कि क्यूब्स में प्रदर्शित समानांतर चतुर्भुज के विभिन्न विशिष्ट प्रकार किया जाना है।

लाइन 8 एक फ़ंक्शन को परिभाषित करता है {a@#, b@#, c@#}&जो बिंदु पर केंद्रित एक संपूर्ण क्यूब खींचता है #; लाइनों 9 और 10 लागू होते हैं कि बड़े त्रिकोण बनाने के लिए आवश्यक नौ बिंदुओं पर। यह नौ क्यूब्स का उत्पादन करता है, जो ऊपरी दाहिनी ओर से शुरू होता है और वामावर्त में जाता है, जहां बाद वाले पहले वाले हिस्सों को कवर करते हैं। अंत में, पंक्ति 11 चार समांतर चतुर्भुज (चित्र के ऊपरी दाएँ भाग में) को फिर से परिभाषित करती है ताकि वे बाद के क्यूब्स को कवर कर सकें जैसा कि वे करने वाले हैं। आउटपुट नीचे है:

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


6
रुको क्या मैथेमेटिका में इसके लिए अंतर्निहित नहीं है?
डिजिटल ट्रामा

10

HTML + CSS 3D (855 866 बाइट्स)

HTML 117 बाइट्स + CSS 738 बाइट्स

z-indexesआदेश में रखने के लिए थोड़ा मुश्किल था। ;)

/* CSS */
p{position:absolute;left:110px;top:0;width:50px;height:50px;transform-style:preserve-3d;transform:rotateX(-45deg)rotateY(21deg)rotateZ(20deg)}
p+p{left:140px;top:50px}
p+p+p{left:170px;top:100px}
p+p+p+p{left:200px;top:150px}
p+p+p+p+p{left:140px;top:150px}
p+p+p+p+p+p{left:80px;top:150px}
p+p+p+p+p+p+p{left:20px;top:150px}
p:nth-child(8){z-index:1;left:50px;top:100px}
p:nth-child(9){z-index:-1;left:80px;top:50px}
p:nth-child(10){z-index:1;left:67px;top:59px;transform:rotateX(-45deg)rotateY(21deg)rotateZ(20deg)scale(0.6)}
a{position:absolute;width:50px;height:50px;background:red;transform:rotateY(0deg)translateZ(25px)}
a+a{background:tan;transform:rotateY(-90deg)translateZ(25px)}
a+a+a{background:navy;transform:rotateX(90deg)translateZ(25px
<!-- HTML -->
<p><a><a><a><p><a><a><a><p><a><a><a><p><a><a><a><p><a><a><a><p><a><a><a><p><a><a><a><p><a><a><a><p><a><a><a><p><a><a>

मैंने बेहतर पठनीयता के लिए नई लाइनें रखी हैं। हो सकता है कि किसी को अधिक गोल्फ के लिए संभावनाएं दिखें। हालांकि, वे बाइट की गिनती में शामिल नहीं हैं।

परिणाम

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

jsFiddle डेमो

यह अपने आप का प्रयास करें

Goole Chrome का उपयोग करें। अन्य ब्राउज़रों के साथ समस्याz-indexes हो सकती है ।

संपादित करें

  • सहेजा 2 बाइट्स डुप्लिकेट को हटाने के द्वारा aकरने के लिए -selector, धन्यवाद ETHproductions
  • सहेजे गए 9 बाइट्स एक अनावश्यक हटाने के द्वारा margin:0पर aतत्व।

क्या यह अभी भी HEAD/BODYटैग के बिना HTML को वैध और बंद है? मुझे पता है कि ब्राउज़र सिंटैक्स त्रुटियों को अनदेखा करते हैं और जो कुछ भी आप उन पर फेंकते हैं उसे प्रदर्शित करने का प्रयास करते हैं, लेकिन मुझे नहीं लगता कि यह कोड चश्मा का अनुसरण करता है। (यह कहा, महान समाधान!)
फेडरिको पोलोनी

2
@FedericoPoloni धन्यवाद। html|head|body-सीमेंट्स के बारे में : उन्हें छोड़ा जा सकता है। "वैकल्पिक टैग" पर एक नज़र डालें , आप आश्चर्यचकित होंगे कि कितने तत्वों और समापन टैग को छोड़ा जा सकता है। ऐनक में क्या नहीं है, लेकिन काम करता है, -मेंट्स के समापन टैग को छोड़ना है a। वे हालांकि ब्राउज़र द्वारा सही ढंग से बंद हैं, क्योंकि आप उन्हें घोंसला नहीं दे सकते। कोड गोल्फ दृष्टिकोण से भी: सब कुछ जो " संकलन " करता है और सही आउटपुट मान्य है। ;)
इन्सर्टसर्नमीयर

9

बीबीसी बेसिक, 147 बाइट्स

टोकन किए गए फ़ाइलें 129 बाइट्स

t=PI/1.5x=500y=x:FORi=0TO28b=i MOD3GCOL0,b:b*=t:a=i DIV9*t:IFb=0x-=99*COSa:y-=99*SINa
MOVEx,y:VDU25;66*COSb;66*SINb;28953;66*COS(b-t);66*SIN(b-t);:NEXT

MOVEसभी पूर्ण विनिर्देशों का उपयोग करने में सक्षम होने के लिए मूल को बदलने के बजाय एक पूर्ण समन्वय विनिर्देश ( ) और समानांतर चतुर्भुज प्रति दो रिश्तेदार विनिर्देशों का उपयोग करके 2 बाइट्स बचाए गए । अनावश्यक व्हॉट्सएप का 1 बाइट का सफाया।

बीबीसी बेसिक, 150 बाइट्स

टोकन बाईसेबल 127 बाइट्स

Http://www.bbcbasic.co.uk/bbcwin/download.html पर दुभाषिए को डाउनलोड करें

t=PI/1.5x=500y=x:F.i=0TO28b=i MOD3GCOL0,b:b*=t:a=i DIV9*t:IFb=0 x-=99*COSa:y-=99*SINa:ORIGINx,y
L.66*COSb,66*SINb,0,0PLOT117,66*COS(b-t),66*SIN(b-t)N.

व्याख्या

हम 3 के समूहों में शीर्ष दाएं और प्लॉट rhombuses पर निर्देशांक से शुरू करते हैं। 3 के प्रत्येक समूह से पहले हम मूल (पश्चिम, पश्चिम, पश्चिम, SE, SE SE, NE, NE NE) को स्थानांतरित करते हैं। इसका मतलब है कि 3 का समूह। शीर्ष दाईं ओर अंतिम पूर्ण समूह है, जिसे मूल स्थान पर वापस लाया जाता है। हम तब पहले समूह के काले और लाल (लेकिन हरे रंग का नहीं) को फिर से जारी करते हैं, कुल 29 rhombuses।

Ungolfed

  t=PI/1.5                                 :REM 120 deg
  x=500                                    :REM coordinates of top right corner
  y=x
  FORi=0TO28
    b=i MOD3:GCOL0,b                       :REM set colour 0=black,1=red,2=green
    b*=t                                   :REM convert b to a multiple of 120deg
    a=i DIV9*t
    IFb=0 x-=99*COSa:y-=99*SINa:ORIGINx,y  :REM before each group of 3 rhombs move the graphics origin
    LINE66*COSb,66*SINb,0,0                :REM define one side of a rhombus
    PLOT117,66*COS(b-t),66*SIN(b-t)        :REM define one further corner and plot the rhombus
  NEXT

उत्पादन

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


8

HTML + जावास्क्रिप्ट (ES6), 351 374 384

<canvas id=C></canvas><script>c=C.getContext("2d");`133124222162184253104213162164244191224182133191064104222093164253122224284151284`.match(/.../g).map((v,i)=>(c.fillStyle=['#fc0','#f04','#08a'][a=i%3],c.beginPath(),c[l='lineTo'](x=5*~~v/10,y=v%10*25),c[l](x-10,y+(--a+!a)*17),a&&c[l](x-30,y+a*17),c[l](x-20,y),!a&&c[l](x-10,y-17),c.fill()))</script>

कम गोल्फ वाला

<canvas id=C></canvas>
<script>
  c=C.getContext("2d");
  [133,124,222,162,184,253,104,213,162,164,244,191,224,182,133,191,64,104,222,93,164,253,122,224,284,151,284]
  .map((v,i)=>(
    a = i % 3,
    x = 5 * ~~ v / 10,
    y = v % 10 * 25,
    c.fillStyle = ['#fc0','#f04','#0a8'][a],
    c.beginPath(),
    --a,
    c[l='lineTo'](x, y),
    c[l]( x -10, y + (a+!a) * 17),
    a&&c[l](x - 30, y + a * 17),
    c[l](x - 20, y),
    !a&&c[l](x - 10, y - 17),
    c.fill()
  ))
</script>

परीक्षा

<canvas id=C></canvas><script>c=C.getContext("2d");`133124222162184253104213162164244191224182133191064104222093164253122224284151284`.match(/.../g).map((v,i)=>(c.fillStyle=['#fc0','#f04','#08a'][a=i%3],c.beginPath(),c[l='lineTo'](x=5*~~v/10,y=v%10*25),c[l](x-10,y+(--a+!a)*17),a&&c[l](x-30,y+a*17),c[l](x-20,y),!a&&c[l](x-10,y-17),c.fill()))</script>


5

जावास्क्रिप्ट (ईएस 6) / एसवीजी (एचटीएमएल 5), 350 312 बाइट्स

document.write(`<svg width=390 height=338>`)
a=`195,52;240,130;285,208;330,286;240,286;150,286;60,286;105,208;150,130;`
a=(a+a).split`;`
for(i=9;i--;)document.write(`<path fill=#FD0 d=M${a[i]}h60l-30,-52h-60z /><path fill=#088 d=M${a[i+3]}h60l-30,52h-60z /><path fill=#F64 d=M${a[i+6]}l-30,-52l-30,52l30,52z />`)


3

एसवीजी, 562 540 520 504 487 473 बाइट्स

यह मेरा पहली बार गोल्फिंग एसवीजी (या वास्तव में कोई मार्कअप) है; नेक बनो!

देखने का वातावरण एक एसवीजी-सक्षम वेब ब्राउज़र है जिसमें एक विशिष्ट विंडो आकार है। मैंने इसे फ़ायरफ़ॉक्स 50 और क्रोम 55 में परीक्षण किया।

viewBox100 पिक्सेल की आवश्यकता को पूरा करने के लिए आवश्यक है; एक उपयुक्त कारक द्वारा सभी मापों को उड़ाने से भी काम होगा लेकिन अधिक बाइट्स लेगा। संयोग से, उस में अंतरिक्ष को हटाने के द्वारा एक और बाइट को बचाने के लिए संभव है 0 -5मेंviewBox मूल्य , लेकिन फ़ायरफ़ॉक्स इसे वैध (जबकि क्रोम) के रूप में स्वीकार नहीं करेगा।

पहलू अनुपात सच 0.866: 1 के बजाय 1: 1 है। मुझे यकीन नहीं है कि "2 का कारक" नियम की व्याख्या कैसे की जाती है (मुझे लगता है कि इसका मतलब है कि अतिशयोक्ति 0.433: 1 या 1.732: 1 स्वीकार्य है), लेकिन मुझे पूरा यकीन है कि यह आवश्यकता पूरी करता है वैसे भी।

एसवीजी

<svg xmlns="http://www.w3.org/2000/svg"
xmlns:l="http://www.w3.org/1999/xlink"
viewBox="0 -5 26 26"><g
id="a"><path d="m7,9H3V5h6z"/><g
id="f"><path fill="red" d="m9,5H3V1h4z"/><path
fill="blue" d="m3,1l2,4L3,9l-2-4z"/></g></g><use
l:href="#a" x="3" y="6"/><use
l:href="#e" x="12"/><g
id="e"><use l:href="#a" x="-6" y="12"/><use l:href="#a" x="-12" y="12"/></g><use
l:href="#a" x="-9" y="6"/><use
l:href="#a" x="-6"/><use
l:href="#a" x="-3" y="-6"/><use
l:href="#f"/></svg>

परिणाम

रायटर्सवार्ड के त्रिभुज के लिए उपरोक्त एसवीजी कोड का पीएनजी प्रतिपादन


मुझे लगता है कि आप शायद यहाँ नईलाइन्स को हटा सकते हैं, क्या आप नहीं कर सकते? IIRC, XML अधिकांश संदर्भों में व्हॉट्सएप की अवहेलना करता है।

@ ais523: हाँ, मैं इसे पोस्ट करने से पहले करना भूल गया। facepalm यह अब किया जाता है, यद्यपि। वहाँ अभी भी newlines है, इसे आसानी से पठनीय रखते हुए, लेकिन केवल उन स्थानों (जैसे टैग नामों और विशेषताओं के बीच) में जहां किसी प्रकार की जगह की आवश्यकता होती है।
टिम पेडरिक

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