রয়টার্সওয়ার্ডের ত্রিভুজ আঁকুন


33

এই অসম্ভব বিষয়টি রয়টার্সওয়ার্ডের ত্রিভুজ :

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

এই বিধি অনুসারে আপনার নিজস্ব সংস্করণ আঁকুন:

  • মোট 9 টি কিউব মোট
  • প্রতিটি পাশ ঠিক 4 কিউব দিয়ে গঠিত
  • কিউবগুলি এমনভাবে ওভারল্যাপ হতে দেখা যায় যে রেন্ডার করা বস্তুটি আসলে একটি অসম্ভব বস্তু
  • 4 টি স্বতন্ত্র রঙ ব্যবহৃত হয় - ব্যাকগ্রাউন্ডের জন্য একটি এবং কিউবের প্রতিটি মুখের জন্য 3
  • বিটম্যাপ আউটপুটে সম্পূর্ণ ত্রিভুজটি কমপক্ষে 100 পিক্সেল লম্বা এবং কমপক্ষে 100 পিক্সেল প্রশস্ত হওয়া উচিত
  • দিকের অনুপাত: পূর্ণ ত্রিভুজটির প্রস্থ এবং উচ্চতা 2 এর ফ্যাক্টরের বেশি হওয়া উচিত নয়
  • ত্রিভুজটি উপরের চিত্রের তুলনায় যে কোনও পরিমাণে আবর্তিত হতে পারে
  • উপরের চিত্রের তুলনায় ত্রিভুজটি প্রতিফলিত হতে পারে বা নাও হতে পারে

উত্তর:


14

ব্রেন-ফ্লাক, 487810 327722 75564 + 1 = 75565 বাইট

দুর্ভাগ্যক্রমে একটি উত্তরে এটি ফিট করা বড় ad

PasteBin

এটি অনলাইনে চেষ্টা করুন

-Aপতাকার সাথে এটি একটি ASCII পিপিএম ফাইলটি আউটপুট করে যা নীচে দেখায়:

নতুন আউটপুট

ব্যাখ্যা

আপনি ইতিমধ্যে অনুমান করতে পারেন আমি এটি হাতে হাতে লিখিনি not সুতরাং আমি এখানে এটি কিভাবে করেছি:

চ্যালেঞ্জের সরবরাহিত চিত্রটি আমি প্রথমে আপনার উপরে চিত্রটি তৈরি করেছি। এটিতে কোনও রঙিন চ্যানেল না থাকার বৈশিষ্ট্য রয়েছে যা ছাড়া অন্য কোনও মূল্য নেই 255বা 0এইভাবে আমরা এটিকে একটি ছোট ফাইলের সাথে সর্বাধিক রঙ চ্যানেল 1 এ সেট করে রাখতে পারি can আমি তারপরে ব্রেন-ফ্ল্যাক প্রোগ্রামটি গল্ফ করার জন্য পাইথন স্ক্রিপ্ট লিখেছিলাম I এটি মডিউল ব্যবহার করে এটি সমাধান করে যা আমি নিজে লিখেছিলাম যা এখানে পাওয়া যাবে । এটি খুব পোলিশ নয় এটির মতো একটি হ্যাক আমি এই জাতীয় জিনিসের জন্য একসাথে ছুড়েছি। 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? ( পিআইপিআইতে এই মডিউলটি নয় , আমি অনুমান করছি?) কী kolmo?
টিম পেডারিক

@ টিমপিডেরিক এর জন্য দুঃখিত। ব্রেন-ফ্লাককে গল্ফ করার জন্য একটি মডিউল নিজেকে লিখেছিল। আমি শরীরে একটি লিঙ্ক অন্তর্ভুক্ত করব।
গম উইজার্ড

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তিনটে ম্যাচ যা কিউব প্রদর্শিত parallelograms বিভিন্ন নির্দিষ্ট ধরনের হতে হবে।

লাইন 8 একটি ফাংশন সংজ্ঞায়িত {a@#, b@#, c@#}&করে যা বিন্দুতে কেন্দ্র করে একটি সম্পূর্ণ ঘনক্ষেত্র আঁকবে #; 9 এবং 10 লাইন বৃহত্তর ত্রিভুজটি তৈরি করার জন্য নয়টি পয়েন্টের ক্ষেত্রে এটি প্রয়োগ করে। এটি নয়টি ঘনক্ষেত্র উত্পাদন করে, উপরের ডান থেকে শুরু করে এবং ঘড়ির কাঁটার বিপরীতে চলছে, যেখানে পরবর্তীগুলি পূর্বের অংশগুলির আচ্ছাদন করে। অবশেষে, লাইন ১১ টি চারটি সমান্তরাল পুনরায় আঁকুন (চিত্রের উপরের ডানদিকে) যাতে তারা শেষের কিউবগুলি coveringেকে রাখার কথা বলে মনে হয়। আউটপুট নীচে:

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


6
ম্যাথামেটিকায় এটির জন্য অন্তর্নির্মিত কী নেই অপেক্ষা করুন?
ডিজিটাল ট্রমা

10

এইচটিএমএল + সিএসএস 3 ডি (855 866 বাইট)

এইচটিএমএল 117 বাইট + সিএসএস 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>

আমি আরও ভাল পাঠযোগ্যতার জন্য নতুন লাইন রেখেছি। হয়তো কেউ আরও গল্ফিংয়ের সম্ভাবনা স্পট করে। তবে এগুলি বাইট গণনায় অন্তর্ভুক্ত নয়।

ফল

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

jsFizz ডেমো

এটি নিজে চেষ্টা করো

গুলে ক্রোম ব্যবহার করুন। অন্যান্য ব্রাউজারগুলির সাথে সমস্যাz-indexes হতে পারে ।

সম্পাদন করা

  • সংরক্ষিত 2 বাইট ডুপ্লিকেট সরিয়ে aকরার -selector, ধন্যবাদ ETHproductions
  • সংরক্ষিত 9 বাইট একটি অপ্রয়োজনীয় সরিয়ে margin:0উপর a-element।

এটি HEAD/BODYট্যাগ ছাড়াই এবং বন্ধ করে দেওয়া এখনও বৈধ এইচটিএমএল ? আমি জানি ব্রাউজারগুলি সিনট্যাক্স ত্রুটি উপেক্ষা করে আপনি যা কিছু নিক্ষেপ করেন তা প্রদর্শন করার চেষ্টা করেন তবে আমি মনে করি না এই কোডটি চশমা অনুসরণ করে। (এটি বলেছে, দুর্দান্ত সমাধান!)
ফেডেরিকো পোলোনি

2
@ ফেডেরিকো পোলোনি আপনাকে ধন্যবাদ 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সমস্ত পরম স্পেসিফিকেশন ব্যবহার করতে সক্ষম হওয়ার জন্য উত্স পরিবর্তন করার পরিবর্তে একটি সমান্তরাল স্থানাঙ্কের স্পেসিফিকেশন ( ) এবং দুটি সমান্তরাল স্পেসিফিকেশন ব্যবহার করে দুটি বাইট সংরক্ষণ করা হয় saved অপ্রয়োজনীয় সাদা স্থানের 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 টি গ্রুপে রম্বস প্লট করি 3 টির প্রতিটি গ্রুপের আগে আমরা উৎপত্তিটি স্থানান্তর করি (পশ্চিম, পশ্চিম, পশ্চিম, এসই, এসই এসই, এনই, এনই এনই।) এর অর্থ এই যে 3 টি গ্রুপ শীর্ষে ডানদিকে প্লট করা সর্বশেষ গোষ্ঠী যা মূলটিকে তার আসল জায়গায় ফিরিয়ে আনছে। তারপরে আমরা চালিয়ে যাচ্ছি এবং প্রথম গ্রুপের কালো এবং লাল (তবে সবুজ নয়) আবার মোট 29 টি রম্বস প্লট করব।

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

এইচটিএমএল + জাভাস্ক্রিপ্ট (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

জাভাস্ক্রিপ্ট (ES6) / এসভিজি (এইচটিএমএল 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 এবং Chrome 55 এ পরীক্ষা করেছি tested

viewBox100 পিক্সেল প্রয়োজন মেটানোর জন্য প্রয়োজনীয়; একটি উপযুক্ত ফ্যাক্টর দ্বারা সমস্ত পরিমাপ আপ গাট্টা কাজ করবে কিন্তু আরও বাইট নিতে হবে। ঘটনাচক্রে, মানটির 0 -5মধ্যে স্থানটি সরিয়ে অন্য একটি বাইট সংরক্ষণ করা সম্ভব viewBoxতবে ফায়ারফক্স এটিকে বৈধ হিসাবে গ্রহণ করবে না (যেখানে ক্রোম করবে)।

প্রকৃত 0.866: 1 এর পরিবর্তে অনুপাতটি 1: 1। আমি কীভাবে "2 এর ফ্যাক্টর" বিধিটি ব্যাখ্যা করতে চাইছি তা নিশ্চিত নয় (আমার মনে হয় এর অর্থ অত্যুক্তি 0.433: 1 বা 1.732: 1 হিসাবে চূড়ান্ত হিসাবে গ্রহণযোগ্য) তবে আমি নিশ্চিত যে এটি প্রয়োজনীয়তা পূরণ করে যাহাই হউক না কেন।

করা SVG

<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>

ফল

রয়টারসভার্ডের ত্রিভুজের জন্য উপরের এসভিজি কোডের পিএনজি রেন্ডারিং


আমি মনে করি আপনি সম্ভবত এখানে নতুন লাইনগুলি মুছতে পারেন, তাই না? আইআইআরসি, এক্সএমএল বেশিরভাগ প্রেক্ষাপটে সাদা স্থানকে অবজ্ঞা করে reg

@ আইস ৫২৩: হ্যাঁ, আমি এটি পোস্ট করার আগে তা করতে ভুলে গেছি। ফেসপালম এটি এখনই হয়ে গেছে, যদিও। এটিকে অস্পষ্টভাবে পঠনযোগ্য রাখে এখনও নতুন লাইন রয়েছে, তবে কেবলমাত্র সেই জায়গাগুলিতে (যেমন ট্যাগের নাম এবং বৈশিষ্ট্যগুলির মধ্যে) যেখানে কোনওভাবে কোনও স্থানের প্রয়োজন।
টিম পেডেরিক

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