একটি পুনর্নির্মাণ ত্রিভুজ আঁকুন!


27

Reuleaux ত্রিভুজ আকৃতি তিন সার্কেল ছেদ দ্বারা গঠিত, প্রতিটি বৃত্ত অন্যের কেন্দ্র মাধ্যমে ক্ষণস্থায়ী সঙ্গে হল। আবর্তন নির্বিশেষে, একটি রিউলিওক্স ত্রিভুজটির প্রস্থ সর্বদা বৃত্তের ব্যাসার্ধের সমান হবে:

ওল্ফ্রাম ম্যাথ ওয়ার্ল্ড থেকে

চিত্র: ওল্ফ্রাম ম্যাথ ওয়ার্ল্ড

একটি প্রোগ্রাম লিখুন যা rইনপুট হিসাবে প্রস্থ নেয় এবং width প্রস্থের একটি রিউলিওক্স ত্রিভুজ প্রদর্শন করে (পিক্সেলগুলিতে)।

আপনাকে অবশ্যই আকারটি বিচ্ছিন্নভাবে, যেমন শক্ত-ভরাট, আন-স্ট্রোকে এবং শক্ত-ভরা ব্যাকগ্রাউন্ডে প্রদর্শন করতে হবে।

- বাইট জেতে সংক্ষিপ্ততম প্রোগ্রাম।


1
ব্যাসার্ধটি rপিক্সেল বা কিছু স্কেলিং ফ্যাক্টারে থাকা উচিত?
কার্ল ন্যাপফ

@ কার্ল ন্যাপফ পিক্সেল
darrylyeo

আমরা যথাযথভাবে রিউলিওক্স ত্রিভুজটি আঁকলে আমরা স্টাডউটে কোনও কিছু আউটপুট করতে পারি?
এরিক আউটগলফার

পছন্দ করুন
darrylyeo

উত্তর:


21

জাভাস্ক্রিপ্ট + এইচটিএমএল, 164 158 + 13 = 171 বাইট

w=+prompt(f=(x,y)=>x*x+y*y<w*w);C.width=C.height=w*2;for(y=-w;++y<w;)for(x=-w;++x<w;)f(x,y)&f(w-x,y)&f(w/2-x,y-w*.866)&&C.getContext`2d`.fillRect(x+w,y+w,1,1)
<canvas id=C>

আমি জানি না কেন আমি এই ম্যাথিক অঙ্কন চ্যালেঞ্জগুলি <canvas>এতটা দিয়ে উত্তর দিতে উপভোগ করছি ...


13

লাভ 2 ডি, 320 বাইট।

j=math.rad(60)i="increment"m=math s=m.sin C=m.cos g=love.graphics f="fill"S=g.stencil function love.draw()r=arg[2]c=function(x,y)return function()g.circle(f,x,y,r,r*4)end end X=r/2 Y=0 S(c(X,Y),i,1)S(c(X+C(j)*r,Y+s(j)*r),i,1,true)S(c(X-C(j)*r,Y+s(j)*r),i,1,true)g.setStencilTest("greater",2)g.rectangle(f,0,0,2*r,2*r)end

সম্ভবত সর্বোত্তম সমাধান নয়, এটি লাভ 2 ডি এর স্টেনসিল ব্যবহার করে 3 টি বৃত্ত স্থাপন করে এবং যেখানে তারা ছেদ করে সেখানে পূরণ করে।

কমান্ড লাইনের মাধ্যমে কল করুন love tri.love 256

উদাহরণ আউটপুট


5
এটি বেশ সুন্দর
এটিাকো


9

ম্যাথামেটিকাল 101 100 98 বাইট

@ মিশেলসিফার্টের চেয়ে আলাদা পদ্ধতি গ্রহণ করা, এবং সম্ভবত পিক্সেল ধারা সম্পর্কে এটি আরও কিছুটা আক্ষরিক অর্থে ব্যাখ্যা করা:

Image@Boole@Table[And@@(({x,y}∈#~Disk~2)&/@{{0,c=√3},d={1,0},-d}),{x,-1,1,2/#},{y,c-2,c,2/#}]&

ব্যবহারের উদাহরণ:

%@10

10 পিক্সেল 10 পিক্সেল চিত্র

50 পিক্সেল 50 পিক্সেল চিত্র

100 পিক্সেল 100 পিক্সেল চিত্র

@ মার্টিনএেন্ডার (ইনফিক্স নোটেশন) এবং ডি 2 সংজ্ঞায়িত করে আরও 2 টি বাইটকে ধন্যবাদ একটি সংরক্ষণ করা হয়েছে।


6

পিএইচপি + এসভিজি, 165 বাইট

<?$h=3/8*$w=2*$d=2*$r=$_GET[0];$q=$r+sqrt($r**2-($r/2)**2);echo"<svg width=$w height=$w><path d='M$r,$r A$r,$r 0 0 1 $d,$r A$r,$r 0 0 1 $h,$q A$r,$r 0 0 1 $r,$r'/>";

ইনপুট 128 এর জন্য আউটপুট উদাহরণ

<svg width=512 height=512><path d='M128,128 A128,128 0 0 1 256,128 A128,128 0 0 1 192,238.85125168441 A128,128 0 0 1 128,128'/>


6

পোস্টস্ক্রিপ্ট, 96 86 85 75 73 72 বাইট

dup(^@^^Z<^@Z<){sin mul exch dup}forall
0 1 2{newpath 369 arc clip}for fill

স্ট্যাকের মান হিসাবে ইনপুট নেয়। ^^এবং ^@আক্ষরিক নিয়ন্ত্রণ অক্ষর উপস্থাপন। (^@^^Z<^@Z<)যথাক্রমে 0, 30, 90, 60, 0, 90, এবং 60 কোড পয়েন্ট সহ অক্ষরের স্ট্রিং। এগুলি তখন ডিগ্রিগুলিতে কোণ হিসাবে ব্যাখ্যা করা হয়, কারণ কোড পয়েন্টের জন্য এটি অবশ্যই।

10 বাইট সংরক্ষণ করা হয়েছে কারণ closepathপ্রয়োজন নেই (উভয়ই clipএবং fillস্পষ্টতই পথটি বন্ধ করুন)।

repeatকোনও ফাংশন সংজ্ঞায়নের পরিবর্তে 1 বাইট ব্যবহার করে সংরক্ষণ করা হয়েছে।

সম্পূর্ণ আলাদা পদ্ধতির দিকে স্যুইচ করে 10 বাইট সংরক্ষণ করা হয়েছে।

স্ট্যাকের সাথে কৌশল করে 2 বাইট সংরক্ষণ করা হয়েছে।

0 1 2{}forপরিবর্তে ব্যবহার করে 1 বাইট সংরক্ষণ করা হয়েছে 3{}repeat


5

গণিত, 134 131 বাইট

এনবি এই সমাধানটি আর বৈধ নয়, কারণ প্রশ্নটি পরে পিক্সেলগুলিতে পরিমাপ করার জন্য r সম্পাদনা করা হয়েছিল । মন্তব্যে কয়েকটা বাইট ছাঁটাই করতে আমাকে সহায়তা করার জন্য মার্টিন ইন্ডারকে ধন্যবাদ।

r=Input[];RegionPlot[And@@((Abs[y+I x-#]^2<3r^2)&/@Table[Exp[2n I/3Pi]r,{n,3}]),{x,-1,1},{y,-1,1},Frame->False,BoundaryStyle->None]

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

এই কোডটি কাজ করার জন্য ইনপুট মানটি 0 এবং 1 এর মধ্যে স্কেল করতে হবে। নোট করুন যে এই কোডের প্রায় এক চতুর্থাংশ "বিচ্ছিন্নভাবে" আকৃতিটি প্রদর্শনের জন্য প্রয়োজনীয়, কারণ এটি গাণিতিকের ডিফল্ট নয়।


3
পিপিসিজিতে আপনাকে স্বাগতম! কিছু স্থান সংরক্ষণ r Exp[2 I Pi n/3]করতে পারে Exp[2I n/3Pi]r। এবং এটা একটি নামহীন ফাংশন লিখতে সাধারণত খাটো, অর্থাত ড্রপ r=Input[];, প্রতিস্থাপন rসঙ্গে #এবং একটি সংযোজন &
মার্টিন ইন্ডার

আমি মনে করি ইনপুটটি পিক্সেল হতে হবে, কোনও স্কেলিং ফ্যাক্টর নয়।
ইন্টারনেট_উজার

1
@ পিসকোডার: হ্যাঁ, আমি আমার সমাধান পোস্ট করার পরে সেই সীমাবদ্ধতাটি সম্পাদিত হয়েছিল।
মাইকেল সিফার্ট

4

বিবিসি বেসিক, 58 বাইট

I.r:L.r,r,r,r:F.i=0TO9S.PI/1.5PLOT177,r*COS(i),r*SIN(i)N.

Http://www.bbcbasic.co.uk/bbcwin/download.html এ দোভাষী ডাউনলোড করুন

Ungolfed

INPUTr                       :REM input a radius
LINEr,r,r,r                  :REM draw a line of length 0 from r,r to r,r to establish a cursor history away from the corner of the screen
FORi=0 TO 9 STEP PI/1.5      :REM in steps of 120 degrees (going round and round the three sides of an equilateral triangle)
  PLOT177,r*COS(i),r*SIN(i)  :REM move relative by r*COS(i),r*SIN(i) and draw a sector with arc between new and last graphics cursor positions,
NEXT                         :REM with the centre of the arc at the penultimate graphics cursor position.

বাহ, এটি আসলে একটি অন্তর্নির্মিত!
নিল

4

টেক্স / টিকজেড, 128 121 112 বাইট

\input tikz\footline{}\tikz\draw[draw=none,fill=red](0,1)\foreach~ in{1,2,3}{[rotate=~*120]arc(0:60:\r pt)};\bye

কোডটি এই উত্তরটির ভিত্তিতে টেক্স.সেসে রয়েছে

টেক্স ভেক্টর-ভিত্তিক, তাই পিক্সেল করবেন না। ব্যাসার্ধটি পৃষ্ঠের প্রান্তে হিট হওয়ার আগে সর্বাধিক 15 সহ একটি ভাসমান। এটি সত্যই কমান্ডলাইন ইনপুট জন্য নির্মিত হয় না, তাই হিসাবে চালানো প্রয়োজন

pdftex  "\def\r{2} \input rt.tex"

উপরের কোডটি যেখানে সংরক্ষণ করা হয়েছে rt.tex


এই সংক্ষিপ্ত করতে কয়েকটি টিপস: আপনার নতুন লাইনের কোনও দরকার নেই; আপনার দরকার নেই .tex; \footline{}ঠিক যেমন ভাল \nopagenumbers; ~পরিবর্তে পরিবর্তনশীল নাম হিসাবে ব্যবহার করুন \i। "পিক্সেল" প্রয়োজনীয়তা পূরণের জন্য, আপনি ব্যবহার করতে পারেন \r sp; টেক্স এর সেরা অবস্থানটি টেক্স পরিচালনা করতে পারে সেহেতু 1 এসপি হল টিক্সের জন্য পিক্সেলের সমতুল্য (যদিও তা টিক্জের ক্ষেত্রে প্রযোজ্য কিনা তা আমি জানি না)।
গিলস 17'3

@ গিলস আমি কিছু পেতে পারি না spতবে আমি মনে করি ptএটি একটি ভাল ধারণা। আপনার অন্যান্য সমস্ত ধারণাগুলি কাজ করেছে (কিছু আমার পরীক্ষাগুলিতে মনে হয় নি)। আপনাকে ধন্যবাদ
ক্রিস এইচ

আপনি ~আরও একটি বাইট সংরক্ষণ করার পরে স্থানটি সরাতে পারেন । \input tikz\footline{}\tikz\draw[draw=none,fill=red](0,1)\foreach~in{1,2,3}{[rotate=~*120]arc(0:60:\r sp)};\byeআমার জন্য কাজ কর. চেষ্টা করুন pdftex "\def\r{2000000} \input rt.tex"- 2 স্পে চাক্ষুষরূপে আকৃতিটি সন্ধান করা এটি কতটা ছোট তা দেওয়া শক্ত হবে।
গিলস 'তাই খারাপ হওয়া বন্ধ করুন'

@ গিলস আমাকে অবশ্যই স্বীকার করতে হবে আমি কেবল 20000 এসপি পর্যন্ত গিয়েছিলাম।
ক্রিস এইচ

1
1pt = 65536sp সুতরাং 20000sp এখনও ক্ষুদ্র।
গিলস 'তাই খারাপ হওয়া বন্ধ করুন'

3

GLSL, 298 229 টি অক্ষর

precision lowp float;
uniform vec2 resolution;float r=100.;void main(){vec2 p=gl_FragCoord.xy-resolution.xy/2.;float h=sqrt(3.)/4.*r;gl_FragColor=vec4(length(p+vec2(r/2.,h))<r&&length(p+vec2(-r/2.,h))<r&&length(p-vec2(0.,h))<r);}

এখানে চেষ্টা করুন

বোনাস

  • rভেরিয়েবল পরিবর্তন করে ব্যাসার্ধ সেট করা যেতে পারে
  • অনুরোধ অনুসারে ত্রিভুজটির প্রস্থ পিক্সেলগুলিতে রয়েছে (আপনাকে জুম করতে হবে জিএলএসএল স্যান্ডবক্সে 1x সেট করা হবে)।

জিএলএসএল এর কোনও স্ট্যান্ডার্ড ইনপুট পদ্ধতি আপনি ব্যবহার করতে পারেন?
darrylyeo

Glslsandbox এ, মাউস কার্সারের অবস্থান পাওয়া সম্ভব। এটি ত্রিভুজ ব্যাসার্ধ নিয়ন্ত্রণ করতে ব্যবহার করা যেতে পারে (যেমন: ব্যাসার্ধটি কেন্দ্র থেকে মাউসের দূরত্ব হবে)।
টিগ্রু

2

জাভাস্ক্রিপ্ট (ES6) + এইচটিএমএল, 196 + 13 = 209 বাইট

পিক্সেল-ভর্তি পদ্ধতির পরিবর্তে একটি পাথ-ভিত্তিক পদ্ধতির ব্যবহার করে।

r=>{c.width=c.height=r*2
with(Math)with(c.getContext`2d`)scale(e=r*.578,e),beginPath(a=s=>s*PI/3),moveTo(2,1),[2,4,6].map(s=>arcTo(cos(i=a(s-1))+1,sin(i)+1,cos(j=a(s))+1,sin(j)+1,sqrt(3))),fill()}

<canvas id=c>


2

লোগো, 53 বাইট

to t :r filled 0[repeat 3[arc 60 :r fd :r rt 120]]end

filledআকৃতিটি রঙ 0 (কালো।) পূর্ণ করতে কমান্ডটি ব্যবহার করে বাইরের স্কোয়ার বন্ধনীগুলির কোডটি কোনও লাইন আঁকানো ছাড়াই কার্যকর করা হয়, তবে ব্রোকেটটি বের হওয়ার পরে লোগো কচ্ছপের গতিবিধির উপর নজর রাখে এবং আকারে পূরণ করে।

লোগো, 64 61 বাইট

to t :r repeat 3[pd arc 60 :r pu fd :r rt 120]fd 9 fill end

পেন ডাউন, কেন্দ্রে কচ্ছপের সাথে 60 ডিগ্রি তোরণ আঁকুন, পেন আপ করুন, খিলানটি শুরু করতে কলম সরিয়ে নিন, 120 ডিগ্রি করুন।

3 বার পুনরাবৃত্তি করুন, তারপরে আকারের ভিতরে যান এবং এটি পূরণ করুন।

Http://turtleacademy.com/playground/en এ চেষ্টা করুন

কল করুন cs ht t 100(স্পষ্ট স্ক্রিন, কচ্ছপগুলি লুকান, tসাথে r = 100))


2

এমএটিএল , 35 বাইট

9Bo&ZQ*3X^/G_G&:t!J*+8L&!-|G<A&e0YG

এটি একটি ফাইল উত্পাদন করে image.png। ইনপুটগুলির জন্য r, চিত্রটির আকার 2*r+1এবং ত্রিভুজটির প্রস্থটি rপ্রয়োজনীয়।

এমএটিএল অনলাইন এ চেষ্টা করুন ! অনলাইন ইন্টারপ্রেটার স্বয়ংক্রিয়ভাবে তৈরি ফাইলটি খোলে এবং যথেচ্ছ স্কেলিং সহ চিত্রটি প্রদর্শন করে; আসল আকারের সংস্করণটি পেতে এটিতে ক্লিক করুন।

বিকল্পভাবে, এখানে ইনটপুট 50এবং সহ মাতলাব এ অফলাইন সংকলক চলমান দুটি উদাহরণ আউটপুট 100। কোডের শেষ অংশটি 0YGএমন জায়গায় প্রতিস্থাপন করা হয়েছে IYGযাতে কোনও ফাইল লিখিত না হয়ে চিত্রটি সরাসরি প্রদর্শিত হয় (ডান আকারের সাথে)।

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

ব্যাখ্যা

9B      % Push 9 in binary: [1 0 0 1] with logical values
o       % Convert to double
&ZQ     % Roots of polynomial with coefficients [1 0 0 1], as a 3×1 column vector
*       % Multiply by implicit input r
3X^/    % Divide by sqrt(3). This gives a 3×1 vector with the circle centers
G_G&:   % Push row vector [-r -r+1 ... r-1 r], with size 1×(2*r+1)
t!J*    % Duplicate, transpose, multiply by 1j
+       % Add with broadcast. This gives a (2*r+1)×(2*r+1) 2D-array of complex
        % numbers, which defines the pixel grid
8L      % Push [3 1 2]
&!      % Permute dimensions as indicated. This gives a 1×(2*r+1)×(2*r+1) 3D-array
-|      % Subtract with broadcast. Absolute value. This gives a 3×(2*r+1)×(2*r+1)
        % 3D-array with the distance from each circle center to each grid point
G<      % Less than r? Gives a 3×(2*r+1)×(2*r+1) 3D-array containing true or false
A       % All: this gives a 1×(2*r+1)×(2*r+1) array containing true for
        % columns of the original 3D-array that contained all true values
&e      % Squeeze the first singleton dimension to give a (2*r+1)×(2*r+1) 2D-array
0YG     % Save as image file with default file name

2

জাভাস্ক্রিপ্ট (ES6) + এসভিজি (এইচটিএমএল 5), 28 + 102 = 130 বাইট

f=
n=>s.setAttribute('width',n)
<input type=number value=82 oninput=f(this.value)><br>
<svg id=s width=82 viewbox=0,0,82,82><path d=M0,71a82,82,0,0,0,82,0A82,82,0,0,0,41,0A82,82,0,0,0,0,71>

বাইট গণনা পছন্দসই আকারের সুবিধাজনক ব্যবহারকারী ইনপুট জন্য প্রয়োজনীয় কোড বাদ দেয়।


চতুর! n=>s.style.width=nকাজ করবে।
darrylyeo

আপনি কীভাবে 112 বাইটে এসেছেন তা আমি বুঝতে পারি না।
darrylyeo

@darrylyeo এই পরামর্শটি আমার পক্ষে কার্যকর হয়নি, দুঃখিত, তবে আমি বাইট গণনা সম্পর্কে একমত, আমি কীভাবে এটিতে এসেছি তা বুঝতে পারি না।
নিল

হুম, সম্ভবত কেবল ক্রোমে কাজ করে।
darrylyeo

1

মেটাপোস্ট ( 242 226 বাইট)

outputtemplate:="%j-%c.ps";
prologues:=1
beginfig(1);
 len:=1cm;
 path p[];
 p[1]:=len * dir -30 {dir 90} .. len * dir  90;
 p[2]:=p[1] rotated 120;
 p[3]:=p[1] rotated 240;
 fill p[1] -- p[2] -- p[3] -- cycle;
endfig;
end.

এটি কিছুটা কমিয়ে আনা সম্ভব হতে পারে, আমি মেটাপোস্টে নতুন।


আমি কিছুটা অলস ছিলাম এবং টেক্সট সম্পাদকদের বাইট গণনাটি ব্যবহার করি। আমি জানি না আপনি কলোনগুলি সরিয়ে ফেলতে পারেন, ধন্যবাদ। আমার আক্ষরিক অর্থে এখন বেল্টের নীচে এক ঘন্টা মেটাপোস্ট রয়েছে ^ _ ^
ক্যারেল

1
আমি এখনও 226 গণনা করছি, 226 নয় Also এছাড়াও, আপনি কি ফাঁকা স্থান len * dirএবং ডটটি শেষে সরাতে পারবেন ?
আর

1

কে, 141 100 98 বাইট

s:*/2#;l:2*r:.:0:`
`0:(,"P1")," "/'$(,l,l),&/{(s'n+x)</:(s r)-s'y+n:r-!l}./:r*%(0 0;4 0;1 3)%4
\\

ইনপুট নেওয়া হয় stdin, আউটপুট stderr(বা stdinদোভাষীর উপর নির্ভর করে) pgmফর্ম্যাটে। উদাহরণ স্বরূপ:

প্রোগ্রাম কাজ উদাহরণ।

ব্যাখ্যা:

s:*/2#               /set s to a squaring function
r:.:0:`              /get user input, set to r
l:2*                 /width/height is 2 times r
r*%(0 0;4 0;1 3)%4   /the coordinates of circle centers
{ }./:               /for each coordinate pair (x, y) get a circle
                     /function to get a circle:
n:r-!l               /  set n to {r, r-1, ..., -(r-1)}
(s'n+x)</:(s r)-s'y+ /  use b^2<r^2-a^2 on all points to get a circle
                     /  where x and y shift the circle right and down
&/                   /get intersections of circles (fold binary and)
(,l,l),              /prepend height and width for PGM format
" "/'$               /convert to string, add spaces
(,"P1"),             /prepend PGM header
`0:                  /output to stderr
\\                   /exit

0

05 এ বি 1 ই , 66 বাইট

’)
¨€(ÿ,60)
lt(60’Ð’€š éà £Ø*
ht()
ï…_œã(ÿÿÿ)
„–_œã()
„ˆ 1:ht()’.e

টিআইও ব্যবহার করতে পারবেন না, যেহেতু এটি একটি উইন্ডো খোলে এবং সেখানে রিউলিউক্স ত্রিভুজ আঁকেন।

ইনপুট জিজ্ঞাসা করে, এবং তারপরে ত্রিভুজ আঁকলে একটি পাইথন টার্টল উইন্ডো খুলবে।

জোনাথন অ্যালানের উত্তর আমাকে এটি করার অনুপ্রেরণা দিয়েছিল, যদিও আমি তার কোডটি কিছুটা পরিবর্তন করেছি।

মূলত, এটি 05AB1E এর সংকোচন ক্ষমতা এবং পাইথনের কচ্ছপ গ্রাফিক্সের স্বাচ্ছন্দ্যের সংমিশ্রণ।


0

ওপেনস্ক্যাড , 91 বাইট

module t(r){intersection_for(t=[0,120,240]){rotate(t)translate([r/sqrt(3),0,0])circle(r);}}

আমি নিশ্চিত না যে এটি কোশার কীভাবে, কারণ পিক্সেলগুলি কোনও জাল গ্রিড ফর্ম্যাটগুলিতে আমার জানা কোনও সত্যই সংজ্ঞায়িত ইউনিট নয়। tস্থিরভাবে , মডিউলটি rযে কোনও নেটিভ ইউনিট ব্যবহৃত হয় তাতে প্রদত্ত ব্যাসার্ধের একটি পুনঃনির্মাণ ত্রিভুজ আঁকেন ।

এর জন্য নমুনা পূর্বরূপ আউটপুট t(100): T (100)


0

স্মাইলব্যাসিক, 87 86 85 83 82 81 79 78 77 76 75 বাইট

INPUT R
C.5Y=R*.87C 1C.GPAINT.,0DEF C X
A=X*240GCIRCLE R*X,Y+2,R,A-60,A
END

Ungolfed:

INPUT RADIUS
CIRCLE 0.5
Y=RADIUS*(SQR(3)/2)
CIRCLE 1
CIRCLE 0
GPAINT 0,0
DEF CIRCLE X
 ANGLE=X*240
 GCIRCLE RADIUS*X,Y+2,RADIUS,ANGLE-60,ANGLE
END
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.