পেনরোজ ট্রায়াঙ্গেল কোডগল্ফ


19

পেনরোজ ত্রিভুজ , এছাড়াও পেনরোজ tribar, অথবা অসম্ভব tribar নামে পরিচিত, একটি অসম্ভব অবজেক্ট।

এই চ্যালেঞ্জের লক্ষ্যটি হল পেনরোজ ত্রিভুজটি সম্ভব সবচেয়ে কম বাইটে প্রদর্শন করা।

পেনরোজ ত্রিভুজ

সূত্র: উইকিপিডিয়া

নিয়মাবলী:

  1. পেনরোজ ত্রিভুজটি তৈরির পরে অবশ্যই এটি ডিজিটালি প্রদর্শিত হবে।
  2. তাদের অবশ্যই উইকি পৃষ্ঠার উপরের চিত্রটির মতো দেখতে হবে (উপরের উত্স) সরাসরি চিত্র না দেখিয়েই।
  3. একই রঙের স্কিম সহ একই চিত্রটি কমপক্ষে 400x400 আকারে দেখানো উচিত।
  4. যথাসম্ভব নির্ভুল হওয়া উচিত।

গুড লাক এবং মজা আছে!


2
আমি মনে করি এটির একটি দুর্দান্ত চ্যালেঞ্জ হওয়ার সম্ভাবনা রয়েছে, তবে কিছু নির্দিষ্ট চশমা রয়েছে যা চিত্রের রঙ এবং এর মাত্রাগুলির মতো স্পষ্ট করা দরকার।
ক্রিটিকি লিথোস

5
পুনশ্চ! চ্যালেঞ্জ বন্ধ থাকায় নিরুৎসাহিত হবেন না। যদি এটি একটি খারাপ চ্যালেঞ্জ ধারণা ছিল তবে নিকটতম ভোটগুলি ডাউনভোটদের সাথে থাকবে ... :)
স্টিভি গ্রিফিন

2
@ ডিজিটাল ট্রুমা আমি চাই না এটি আঁকার আরও অনেক বিশদ রয়েছে।
mbomb007

1
কোনও ধূসর কি ঠিক একই ধূসর হতে হবে? যদি এটি পরে থাকে তবে চ্যালেঞ্জ পাঠ্যে সঠিক ধূসর সুরটি সরবরাহ করা ভাল হবে।
মার্টিন ইন্ডার

1
দিকগুলি ঠিকঠাকভাবে পুনরুত্পাদন করতে হবে তবে এগুলিও সহায়ক।
মার্টিন ইন্ডার

উত্তর:


3

লোগো, 129 120 বাইট

প্রতিটি এল আকারের কেবল প্রথম 4 টি দিক আঁকুন, তারপরে কলমটি উত্তোলন করুন, পরবর্তী এল আকারের সাথে সংশ্লিষ্ট জায়গায় চলে যান, কলমকে নীচে নামিয়েছেন এবং এর 4 টি দিক আঁকুন। প্রতিটি এল আকৃতি পূর্ববর্তী থেকে 2 পক্ষ ধার করে।

সর্বশেষ সম্পাদনাগুলি: কালো ভরাট এলাকা থেকে ধূসর ভরাট এলাকা থেকে সরানো ব্যবহার fdপরিবর্তে setxথেকে, এবং সমস্ত আন্দোলন পরিবর্তন fdকরতে bkএকটি 180 ডিগ্রী ঘূর্ণন এক বাইট সংরক্ষণ করতে: rt 210-> rt 30, কমান setpencolorকরার setpc(অনথিভুক্ত মধ্যে intepreter আমি ব্যবহার করছি, কিন্তু এটি কাজ করে ।)

rt 30 repeat 3[pd bk 200 lt 120 bk 360 rt 120 bk 80 rt 60 bk 440 pu rt 139 bk 211 rt 41] setx -2 fill fd 9 setpc 15 fill

লোগো, 140 বাইট

প্রতিটি এল আকারের 6 টি দিক আঁকুন, শেষ প্রান্তে ওভারশুট করুন, তারপরে পরবর্তীটি শুরু করতে 180 ডিগ্রি পরিণত হবে।

rt 30 repeat 3[rt 180 fd 200 lt 120 fd 360 rt 120 fd 80 rt 60 fd 440 rt 120 fd 360 rt 120 fd 200] pu setx -5 fill setx 5 setpencolor 15 fill

http://www.calormen.com/jslogo/# এ চালান

cs pd setpencolor 0স্ক্রিনটি পরিষ্কার হওয়ার জন্য দৌড়ানোর আগে এটি করার পরামর্শ দেওয়া হয় , কচ্ছপটি কেন্দ্রিক এবং উপরের দিকে ইশারা করছে, কলমটি নীচে এবং কালোতে সেট করা হয়েছে (ডিফল্ট সেটিংস, একেবারে নতুন অধিবেশনটির প্রয়োজন নেই) এবং htকচ্ছপকে আড়াল করার জন্য ( stইচ্ছা আবার দেখাও।)

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


11

এসভিজি (এইচটিএমএল 5), 191 বাইট

<svg width=498 height=433 stroke=#000><path d=M211,134l38,66L154,365H496L458,431H40 /><path fill=#777 d=M211,2L2,365l38,66L211,134l95,165h76 /><path fill=#FFF d=M496,365L287,2H211L382,299H192


এটি সত্যি দেখতে খুব সুন্দর!
স্টিভ বেনেট

7

পাইথন 2, 211 201 195 188 175 173 বাইট

from turtle import*
d="t(120);fd(333);rt(120);fd(67);"
s="color(0,%r);begin_fill();fd(200);l"+d+"rt(60);fd(400);r"+d+"end_fill();fd(133);rt(180);"
exec s%'#fff'+s%0+s%'gray'

দুর্ভাগ্যক্রমে, execত্রিনকেটে প্রয়োগ করা হয়নি, সুতরাং এটি যেমন হয় তেমন অনলাইন পরীক্ষা করা যায় না। কমপক্ষে, বিনামূল্যে সংস্করণে নয়। আমি স্ট্রিংটি মুদ্রণ করেছি এবং এটি পরীক্ষার জন্য কোড হিসাবে আটকানো। আপনি যদি স্ক্রিপ্টগুলির সাথে চালাক হন তবে বৃহত্তর ক্যানভাস পাওয়ার জন্য আপনি HTML / CSS এর আকার পরিবর্তন করতে পারেন। আপনি যদি আমাকে জানাবেন।

এটি অনলাইনে চেষ্টা করে দেখুন - 400px এর জন্য সাইটের ক্যানভাস খুব ছোট হওয়ায় একটি ছোট আকার ব্যবহার করে, তবে আপনি পুরো আউটপুট দেখতে পারেন।

Ungolfed:

from turtle import*
w=200
def f(n):
  c=255*n/2
  color(0,(c,c,c))
  begin_fill()
  fd(w)
  lt(120)
  fd(5*w/3)
  rt(120)
  fd(w/3)
  rt(60)
  fd(2*w)
  rt(120)
  fd(5*w/3)
  rt(120)
  fd(w/3)
  end_fill()
  fd(2*w/3)
  rt(180)
f(2);f(0);f(1)

আমি ভাবছি কী 255*n/2কমিয়ে আনা যেতে পারে বলে 128*nআমি মনে করি ভাসা আরবিজি মান যেভাবেই বাড়বে তাই পিক্সেল-রঙের কোনও পরিবর্তন হবে?
অ্যালবার্ট রেনশওয়া

পছন্দ করুন গল্ফযুক্ত সংস্করণের জন্য এর উপরে কোডটি দেখুন। এছাড়াও, এটি পাইথন 2, সুতরাং এটি ভাসমান নয়, তারা পূর্ণসংখ্যা, যেহেতু বিভাগটি পূর্ণসংখ্যা বিভাগ।
mbomb007

আচ্ছা বুঝলাম; ধন্যবাদ!
অ্যালবার্ট রেনশওয়া

6

পিএইচপি, 153 বাইট

short_open_tagসেটিংস সক্ষম থাকলেই এটি কাজ করবে । উত্স কোডটিতে অপ্রিন্টযোগ্য অক্ষর রয়েছে তাই পরিবর্তে একটি হেক্স্স ডাম্প রাখুন:

0000000: 3c3f 3d67 7a69 6e66 6c61 7465 2827 b329  <?=gzinflate('.)
0000010: 2e4b 5728 cb4c 2d77 caaf b0d5 3531 3000  .KW(.L-w....510.
0000020: 611d 0b08 5628 2e29 cacf 4eb5 5536 3030  a...V(.)..N.U600
0000030: b0b3 2948 2cc9 5048 b1f5 d535 35d6 3536  ..)H,.PH...55.56
0000040: b7d0 8152 c6a6 263a 8626 c6ba 8626 0660  ...R..&:.&...&.`
0000050: dac2 5cc7 14c8 b234 0452 510a 6999 3939  ..\....4.RQ.i.99
0000060: b6ca 6969 690a 2545 8979 c569 f945 b9b6  ..iii.%E.y.i.E..
0000070: 45f9 2589 25a9 1a06 9a0a fa14 990a 7415  E.%.%.........t.
0000080: a6a9 8646 949a 9b5e 945a 8969 ae2e cc60  ...F...^.Z.i...`
0000090: 7d60 88d9 0100 2729 3b                   }`....');

সংক্ষেপিত ডেটা দেখতে দেখতে (ল্যাবিলিটি বিরতি সহ সুগমতার জন্য):

<svg viewBox=-400-400,800,800 stroke=#000>
<path d=M-53-378,53-378,354,143-140,143-87,50,191,50Z fill=#fff transform=rotate(0) />
<path d=M-53-378,53-378,354,143-140,143-87,50,191,50Z fill=#000 transform=rotate(120) />
<path d=M-53-378,53-378,354,143-140,143-87,50,191,50Z fill=grey transform=rotate(-120) />
</svg>

যদিও এসভিজি ডেটা পুরোপুরি বৈধ নয়, পিএইচপি এটি text/htmlডিফল্ট হিসাবে পরিবেশন করে । কোনও ডক্টাইপ ঘোষণা ছাড়াই, দস্তাবেজটি কুইর্কস মোডে পরিচালিত হয়, যা অত্যন্ত ক্ষমাযোগ্য।

সংক্ষেপণ উন্নত করতে, আমি চিত্রটি তিনটি "7" আকারের অংশে ভেঙে দিয়েছি যা কাছাকাছি-অভিন্ন <path>উপাদানগুলি ব্যবহার করে আঁকতে পারে । ফলে প্রাপ্ত চিত্রটি ভিউপোর্টটি পূরণ করতে প্রসারিত হবে। এখানে 500 × 500 পিক্সেল উইন্ডো থেকে স্ক্রিন দখল করা হয়েছে:

500 × 500 পিক্সেল পেনরোজ ত্রিভুজ এসভিজি চিত্রের স্ক্রিন দখল


5

এইচটিএমএল + জেএস (ইএস 6), 34 + 306 = 340 বাইট

30 ডিগ্রি অনুভূমিক স্কিউ ব্যবহার করে - ম্যাট্রিক্স রূপান্তরটির তৃতীয় যুক্তিতে, 30 the এর স্পর্শকটি হিসাবে প্রদর্শিত হয় pow(3,-.5)

বেশ কয়েকটি কুরুচিপূর্ণ যাদু সংখ্যা রয়েছে, এবং এটি উইকিপিডিয়া চিত্রের অনুপাতের সাথে পুরোপুরি মেলে না। আমি নিশ্চিত যে এ সম্পর্কে আরও একটি "গাণিতিক" উপায় আছে; কোন সাহায্য প্রশংসা করা হবে।

কোডপেনে অদৃশ্য সংস্করণ দেখুন।

f=

_=>{with(Math)with(C=c.getContext`2d`)for(l=lineTo.bind(C),lineWidth=.01,transform(50,0,0,50,200,224),N=4;N--;rotate(PI*2/3))beginPath(fill(save(fillStyle=N?N>1?'#fff':'#000':'#777'))),transform(-1,0,-pow(3,-.5),-1,3.965,1.71),l(0,0),l(0,6),l(1,6),l(1,1),l(4.616,1),l(5.772,0),closePath(restore(stroke()))}

f()
<canvas id=c width=400 height=400>


4

এইচটিএমএল + সিএসএস, 9 + 315 309 308 = 317 বাইট

সীমানা এবং স্কিউ গ্যালোর! ক্রোমে পরীক্ষিত। কোডপেনে অদৃশ্য সংস্করণ দেখুন

body{margin:9em}b,:after{position:fixed;transform:rotate(240deg)}b:after{content:'';left:-6.1em;top:-7.95em;width:6em;height:9em;border-left:transparent 2.32em solid;border-right:2em solid;border-bottom:2em solid;transform:skew(30deg);filter:drop-shadow(0 0 .1em)}b{color:#777}b>b{color:#000}b>b>b{color:#fff
<b><b><b>


এটি কি 400x400px ন্যূনতম প্রয়োজনীয়তা পূরণ করে?
সার্জিওল

তোমার চূড়ান্ত দরকার নেই, তাই না >?
স্টান স্ট্রাম

4

গণিত 171 বাইট

w=(v=AnglePath)[s={{9,0},{11,2(b=Pi/3)},{2,b},{9,2b},{5,-2b},{2,b}}];x={w[[5]],2b}~v~s;y={x[[5]],-2b}~v~s;Graphics@{White,EdgeForm[Black],(p=Polygon)@w,Gray,p@x,Black,p@y}

অ্যাঙ্গেলপথ ব্যবহার করে 3 টি বহুভুজ আঁকুন, 60 ডিগ্রি টার্নের গুণক এবং এই সুবিধাটি গ্রহণ করে যে প্রতিটি বহুভুজের জন্য সূচনা পয়েন্টটি পূর্ববর্তী বহুভুজের 5 ম বিন্দু।


1
ভাল পন্থা, ব্যবহার AnglePath
ডেভিডসি

1

টিসিএল / টাকা, 205

grid [canvas .c -w 402 -he 402]
.c cr p 171 2 237 2 401 337 125 337 156 280 301 280 -f #FFF
.c cr p 2 335 171 2 310 280 250 280 171 121 31 401 -f gray
.c cr p 171 127 34 401 374 401 401 337 127 337 201 188

পেনরোজ ত্রিভুজ

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