আমি সত্যিই একটি রম্বস চেয়েছিলাম, তবে আমি যা পেয়েছিলাম তা এই নির্বোধ আয়তক্ষেত্র


33

কেবল একটি স্ট্রেইটেজ এবং কম্পাস দেওয়া, প্রদত্ত আয়তক্ষেত্রের ভিতরে একটি রম্বস লিখুন, দুটি বিপরীত পয়েন্ট ভাগ করে নিন।

রম্বস-ইন-আয়তক্ষেত্র

ইনপুট

ইনপুটটি আয়তক্ষেত্রের মাত্রা। উদাহরণ হিসাবে দেখানো হয়েছে, যে হবে 125, 50। সর্বাধিক সুবিধাজনক যেকোন উপায়ে আপনি ইনপুট নিতে পারেন (দুটি পূর্ণসংখ্যা, তালিকা, স্ট্রিং ইত্যাদি)।

বৃহত্তর মাত্রা হবে 100 সর্বনিম্ন, আর ছোটটি হবে সর্বনিম্ন 25 25 উভয় ক্যাপ 200 এ।

আউটপুট

আউটপুটটি একটি চিত্র হবে (স্ক্রিনে প্রদর্শিত হবে বা ফাইল হিসাবে সেভ হবে) প্রদর্শিত হবে

  • ইনপুট আয়তক্ষেত্র
  • সমস্ত "কার্যকারী" লাইন / চেনাশোনা
  • খোদাই করা রম্বস

স্বতন্ত্র রঙে। উপরের চিত্রটিতে, আয়তক্ষেত্রটি কালো, কার্যক্ষম রেখাগুলি নীল এবং রম্বস কমলা। তালিকাতে প্রদর্শিত ক্রমের সাথে রেখাগুলি আঁকতে হবে (উদাহরণস্বরূপ রম্বস ওয়ার্কিং লাইন এবং আয়তক্ষেত্রটি ওভাররাইট করে)।

আউটপুট চিত্রটি সবকিছু ধারণের জন্য যথেষ্ট বড় হওয়া দরকার। উদাহরণস্বরূপ, দেখানো চেনাশোনাগুলি সীমা ছাড়িয়ে যেতে পারে না।

পদ্ধতি

উপরের উদাহরণের চিত্রটিতে ব্যবহৃত পদ্ধতিটি হ'ল:

  • নীচের বাম কোণটি কেন্দ্র হিসাবে এবং উপরের ডানদিকে ঘের উপর একটি পয়েন্ট হিসাবে একটি বৃত্ত আঁকুন, আয়তক্ষেত্রটির তির্যকের সমান একটি ব্যাসার্ধ দিয়ে।
  • একই করুন, তবে অদলবদল কেন্দ্র এবং ঘের পয়েন্ট।
  • আয়তক্ষেত্রের তির্যককে একটি লম্ব দ্বিখণ্ডক প্রদান করে দুটি বৃত্তের ছেদগুলির মধ্যে একটি রেখা আঁকুন।
  • রম্বস আঁকতে নতুন লাইন এবং আয়তক্ষেত্রের ছেদ ব্যবহার করুন।

এটি কাজ করে কারণ একটি রম্বসের অভ্যন্তরীণ কর্ণগুলি সর্বদা লম্বভাবে একে অপরকে দ্বিখণ্ডিত করে। যদিও আমি এর সম্পূর্ণ প্রমাণ সহ এখানে রাখছি না।

আপনার রম্বস পাওয়ার জন্য এটি একমাত্র পদ্ধতি নয় এবং আপনি কী করছেন তা ব্যাখ্যা করার পরে আপনি অন্যটি ব্যবহার করতে পারেন। যদিও আমি বিশ্বাস করি এটি সম্ভবত সবচেয়ে সহজ।

বিধি

আপনি কেবল বৃত্ত এবং লাইনগুলি (বা বরং লাইন বিভাগগুলি) আঁকতে পারেন। একটি বৃত্ত একটি কেন্দ্র পয়েন্ট এবং ঘের বিন্দু দিয়ে সংজ্ঞায়িত করা হয়। একটি লাইন যে কোনও দুটি পয়েন্ট দ্বারা সংজ্ঞায়িত করা হয়। রেখাগুলির কোনও নির্দিষ্ট দৈর্ঘ্য হতে হবে না তবে তাদের অবশ্যই অন্তত সংজ্ঞায়িত পয়েন্টগুলি আবরণ করতে হবে (উদাহরণ চিত্রটি নোট করুন: লাইনটি বৃত্ত ছেদকে কিছুটা পেরিয়ে গেছে তবে কিনারায় নয়)। চেনাশোনাগুলির জন্য, কেন্দ্র থেকে নির্বাচিত পরিধি বিন্দুতে ব্যাসার্ধকে একটি কার্যকারী রেখা হিসাবে বিবেচনা করা হয়, এবং অবশ্যই এটি প্রদর্শিত হবে।

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

কোনো প্রতরণা চলবে না! আপনি এখন পর্যন্ত যা প্রতিষ্ঠা করেছেন তা ব্যবহার করে আপনি কেবল পয়েন্ট / লাইন / চেনাশোনাগুলির স্থান নির্ধারণ করতে পারেন। যদি আপনার কাজের লাইন / চেনাশোনাগুলি এটি একটি গলদা বাচ্চা দেখানোর জন্য কীভাবে ব্যবহার করতে হয় তা আপনি ব্যাখ্যা করতে না পারেন, আপনি এটি ভুল করছেন।

আপনি বিপরীত পয়েন্ট চান যেটা যুগল ব্যবহার করতে পারেন, এবং আয়তক্ষেত্র নেই প্রয়োজন অক্ষ-প্রান্তিককৃত আকৃষ্ট করা, তাই যতদিন আউটপুট সঠিক।

ইনপুট সর্বদা একটি অ-বর্গাকার আয়তক্ষেত্র হবে, তাই বিশেষ-কেসিংয়ের বিষয়ে চিন্তা করবেন না।

শেষ অবধি, এটি স্ট্যান্ডার্ড কোড গল্ফ, তাই বাইট জিততে সর্বনিম্ন আকার।


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

@ এথ প্রডাকশনগুলি আমি হ্যাঁ বলব, যেহেতু এটি দেখানো মোটামুটি সহজ যে তাদের এবং ব্যাসার্ধের মধ্যবর্তী কোণটি প্রতিটি পাশের 60০ ডিগ্রি এবং সেগুলি সমান্তরাল ত্রিভুজ গঠন করে। কারও যদি কোনও আপত্তি থাকে আমি তাও শুনতে রাজি আছি।
জিওবিটস

3
আমরা কি ধরে নিতে পারি যে প্রথম ইনপুটটি দ্বিতীয় (বা বিপরীতে) এর চেয়ে বেশি হবে, বা উত্তরগুলি উল্লম্ব এবং অনুভূমিকভাবে উভয়দিকেই আয়তক্ষেত্র উভয়ই পরিচালনা করতে সক্ষম হবে?
মার্টিন ইন্ডার

আয়তক্ষেত্রের অভ্যন্তরে সংক্ষিপ্ত রেখার অংশটির উদ্দেশ্য কী?
12Me21

উত্তর:


11

এইচটিএমএল + জাভাস্ক্রিপ্ট (ES6), 34 + 353 = 387 বাইট

বিন্যাসে ইনপুট দেওয়া উচিত [125,50]

[w,h]=eval(prompt(c=C.getContext("2d"))).sort();d=q=>(c.strokeStyle=q,b);l=(x,y=Z)=>x?c.lineTo(x,y)||l:c.stroke();b=(x,y=H,r)=>(c.beginPath(),r?c.arc(x,y,Math.sqrt(r),0,2*Math.PI):c.moveTo(x,y),l);b(Z=300,Z)(W=Z+w)(W,H=Z+h)(Z,H)(Z)();d`red`(Z,H,s=w*w+h*h)();b(W,Z,s)();b(Z)(W)();b(Z+w/2-h,Z+h/2-w)(H+w/2,W+h/2)();d`lime`(Z)(W-s/2/w)(W)(Z+s/2/w,H)(Z,H)()
<canvas id=C width=800 height=800>

কেবল প্রচুর গণিত এবং অঙ্কন ... উচ্চতা প্রস্থের চেয়ে বেশি হলে আয়তক্ষেত্রটি পাশাপাশি আঁকা হয়, আমি বিশ্বাস করি এটি অনুমোদিত।


ওহ, 10 বাইট এর চেয়ে কম 444: পি
ক্রিটিক্সী লিথোস

@ ক্রিটিক্সিলিথস এখন আমি 400;-) এর চেয়ে 10 বাইট কম
ইটিএইচ প্রোডাকশন

প্রস্থের চেয়ে উচ্চতা বড় হলে আয়তক্ষেত্রটি রম্বসে লিপিবদ্ধ হয়ে যায়।
লার্কিথ

1
@ লারকিথ ওফস, জানতেন না যে আমাদের কেসগুলি কাভার করতে হবে। 42 বাইট ব্যয়ে স্থির।
ETH প্রোডাকশনগুলি

কয়েকটি বাইট সংরক্ষণ করার জন্য আপনি "getContext` 2d `" (ফাঁকা ছাড়াই) ব্যবহার করতে পারেন (তাদের কেন `এবং
মার্কডাউন

10

গণিত, 157 148 158 বাইট

মার্টিন ইন্ডারকে তাদের স্বাভাবিক উচ্চ মানের মন্তব্যের জন্য ধন্যবাদ! এই ক্ষেত্রে 9 বাইট সংরক্ষণ করা হয়েছে।

সম্পাদিত একবার স্পষ্ট করে দেওয়া হয়েছিল যে যুক্তিগুলি উভয় ক্রমে আসতে পারে; ক্ষতিপূরণ যোগ করার জন্য 10 বাইট যোগ করা হয়েছে।

Graphics@{(m=Line)@{o=0{,},{#,0},c={##},{0,#2},o},Blue,m[l={o,c}],Circle[#,(c.c)^.5]&/@l,m[{k={#2,-#},-k}+{c,c}/2],Red,m@{o,p={0,c.c/2/#2},c,c-p,o}}&@@Sort@#&

আবার, এইখানেই গাণিতিকের জ্বলজ্বল: উচ্চ-স্তরের গ্রাফিক্স আউটপুট জড়িত গাণিতিক গণনা। মানব পাঠযোগ্যতার জন্য স্পেস এবং নিউলাইন সহ একই কোড:

Graphics@{
  (m=Line)@{o = 0{,}, {#, 0}, c = {##}, {0, #2}, o},
  Blue, m[l = {o, c}], Circle[#, (c.c)^.5] & /@ l, 
  m[{k = {#2, -#}, -k} + {c, c}/2],
  Red, m@{o, p = {c.c/2/#2, 0}, c, c - p, o}
} & @@ Sort@# &

একটি একক যুক্তির অজানা ফাংশন যা ইতিবাচক সংখ্যার একটি অর্ডারযুক্ত জোড়; চূড়ান্ত @@ Sort@# &সেই জোড়টিকে দুটি সংখ্যার যুক্তিতে রূপান্তর করে যেখানে প্রথম সংখ্যাটি ছোট। Lineপয়েন্ট থেকে পয়েন্টে বহুভুজিক পথ তৈরি করে, যা প্রথম এবং শেষের পয়েন্ট একই হলে একটি বদ্ধ বহুভুতে পরিণত হবে; Circleপ্রদত্ত কেন্দ্র এবং ব্যাসার্ধ সহ একটি বৃত্ত তৈরি করে। বিশেষ পয়েন্ট oএবং c(নীচের বাম এবং উপরের-ডানদিকে আয়তক্ষেত্র কোণ), p(একটি তৃতীয় রম্বস কোণ, একটি গাণিতিক সূত্র দ্বারা প্রদত্ত), এবং k(লম্ব দ্বিখণ্ডক আঁকতে সহায়তা করে) আবার যখন ডাকা হয় তখন বাইটগুলি সংরক্ষণ করার জন্য নাম দেওয়া হয় যেমন, পয়েন্টগুলির বিশেষ জুটিl = {o,c}। গাণিতিক সরাসরি পয়েন্ট যুক্ত করতে খুশি, একই ফ্যাক্টর দ্বারা উভয় স্থানাঙ্ককে গুণিত করে, তাদের বিন্দুর পণ্য ইত্যাদি গ্রহণ করে, যা সবকটি কোডকে সরল করে।

আর্গুমেন্ট 125এবং সহ 50: নমুনা আউটপুট

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


1
অপ্রয়োজনীয় সাদা জায়গা। আপনি এই কৌশলটি বাইট চালিয়ে নিতে ব্যবহার করতে পারেন {0,0}। যেহেতু নীল এবং কমলা ব্যবহার করার কোনও প্রয়োজন নেই, আপনি এর Redপরিবর্তে ব্যবহার করে বাইটগুলি সংরক্ষণ করতে পারেন Orange। আপনি Lineচারবার ব্যবহার করছেন যা থেকে বাইটস সংরক্ষণের জন্য যথেষ্ট বেশি i=Line;(থাম্বের নিয়ম হিসাবে, যদি অভিব্যক্তিটির nঅক্ষর থাকে এবং আপনি এটির mপ্রয়োজন হয় এমন বার ব্যবহার করেন (m-1)*(n-1) > 4, যদি প্রথম বন্ধনী ছাড়াই প্রথম ব্যবহারের সময় আপনি ভেরিয়েবলটি নির্ধারণ করতে পারেন তবে কম)।
মার্টিন এন্ডার

সেই 0{,}কৌশলটি দুর্দান্ত: ডি
গ্রেগ মার্টিন

আমি ভীত, দ্বিতীয় পক্ষ যদি প্রথমটির চেয়ে দীর্ঘ হয় তবে এটি কাজ করে না। তবে ওরিয়েন্টেশনটি সামঞ্জস্য করার দরকার নেই, সুতরাং এটি সংযোজন @@Sort@#&এবং অদলবদল করে #এবং কোডজুড়ে #2বা বিকল্পভাবে পরিবর্তে প্রতিকৃতি-অভিমুখী আয়তক্ষেত্রগুলির সাথে কাজ করে এটি ঠিক করা যায়।
মার্টিন ইন্ডার

হ্যাঁ, এটি ইচ্ছাকৃত ছিল ... দেখে মনে হচ্ছে আমরা আমাদের পছন্দ অনুযায়ী ক্রমগুলি অনুমান করতে পারি কিনা তা নিয়ে আমরা স্পষ্টতার অপেক্ষায় রয়েছি।
গ্রেগ মার্টিন


9

মেটাপোস্ট, 473 (রঙ সহ) 353 (রঙ ছাড়াই)

রঙিন (473 বাইট):

A:=170;B:=100;pair X,Y;path C,D,E,F,G,R,T;X=(0,0);Y=(A,B);R=X--(A,0)--Y--(0,B)--cycle;T=(0,B)--(A,B);draw R;E=X--Y;C=X..Y*2..cycle;D=Y..-Y..cycle;F=(D intersectionpoint C)--(C intersectionpoint D);draw C withcolor green;draw D withcolor green;draw E withcolor red;draw F withcolor red;draw (F intersectionpoint R)--Y withcolor blue;draw X--(F intersectionpoint T) withcolor blue;draw (F intersectionpoint T)--Y withcolor blue;draw (F intersectionpoint R)--X withcolor blue;

রঙিন (353 বাইট):

A:=170;B:=100;pair X,Y;path C,D,E,F,G,R,T;X=(0,0);Y=(A,B);R=X--(A,0)--Y--(0,B)--cycle;T=(0,B)--(A,B);draw R;E=X--Y;C=X..Y*2..cycle;D=Y..-Y..cycle;F=(D intersectionpoint C)--(C intersectionpoint D);draw C;draw D;draw E;draw F;draw (F intersectionpoint R)--Y;draw X--(F intersectionpoint T);draw (F intersectionpoint T)--Y;draw (F intersectionpoint R)--X;

এর আগে কখনও এটি ব্যবহার করা হয়নি এবং আমি নিশ্চিত যে এটি আমি কসাই করেছি ...
তবে আপনি যখন এই ওয়েবসাইটে এটি চালাবেন:

http://www.tlhiv.org/mppreview/

এটি দ্বিতীয় অক্ষটি আঁকার জন্য বৃত্তের ছেদটি ব্যবহার করে এবং তারপরে অক্ষের ছেদটি এবং চূড়ান্ত রম্বস আঁকতে আয়তক্ষেত্রটি ব্যবহার করে। যদিও আমি প্রতারণা করতে পেরেছিলাম এবং কেবল প্রথম অক্ষটি লম্বায় একটি লম্ব আঁকাছি ha

মাত্রা পরিবর্তন করতে, কেবল এ এবং বি পরিবর্তন করুন

নির্বিশেষে, আপনি শেষ করেছেন (এল = 170, এইচ = 100 এর জন্য):

ভাবমূর্তি


3

দেশমস, 375 (বা 163) বাইট

w=125
h=50
\left(wt,\left[0,h\right]\right)
\left(\left[0,w\right],ht\right)
\left(x-\left[0,w\right]\right)^2+\left(y-\left[0,h\right]\right)^2=w^2+h^2
\frac{h}{w}x\left\{0\le x\le w\right\}
-\frac{w}{h}\left(x-\frac{w}{2}\right)+\frac{h}{2}
a=\frac{h^2}{2w}+\frac{w}{2}
\left(t\left(w-a\right)+\left[0,1\right]a,ht\right)
\left(at-\left[0,a-w\right],\left[0,h\right]\right)

wএবং hইনপুট হয়। ডেসমোসে চেষ্টা করে দেখুন!

বিকল্প 163-বাইট সংস্করণ:

w=125
h=50
(wt,[0,h])
([0,w],ht)
(x-[0,w])^2+(y-[0,h])^2=w^2+h^2
hx/w\left\{0\le x\le w\right\}
-w(x-w/2)/h+h/2
a=h^2/2/w+w/2
(t(w-a)+[0,1]a,ht)
(at-[0,a-w],[0,h])

এই সংস্করণটির জন্য প্রতিটি লাইনকে অনুলিপি করা এবং প্রতিটি পৃথক লাইনে ডেসমোসে আটকানো দরকার। এটি বৈধ গণনা পদ্ধতি কিনা মেটাকে এখনও সিদ্ধান্ত নেওয়া দরকার তবে পূর্বের পদ্ধতিটি অবশ্যই স্পষ্ট।


এটি অনুমান করে যে ইনপুট আয়তক্ষেত্রটি ল্যান্ডস্কেপ অভিযোজনে রয়েছে, যা কার্যটিতে নির্দিষ্ট নেই।
হেনিং মাখোলম

1
আমার কাছে, "আয়তক্ষেত্রটি অক্ষ-বিন্যাসে আঁকতে হবে না" বোঝায় যে ল্যান্ডস্কেপ বনাম প্রতিকৃতি সহ আয়তক্ষেত্রের কোনও পূর্বনির্ধারিত ওরিয়েন্টেশন নেই যা সংরক্ষণ করা দরকার।
গ্রেগ মার্টিন

যেহেতু কেবল আকার দেওয়া হয় (স্থানাঙ্ক নয়), আউটপুটটি আপনার পছন্দ মতো প্রান্তিককরণ করা যেতে পারে, ধরে নিচ্ছেন আকারটি সঠিক বলে ধরে নিচ্ছেন।
জিওবিটস

আমি প্রথমবারের মতো দেসমোসকে গল্ফিংয়ের ভাষা হিসাবে ব্যবহার করতে দেখছি :)
ক্রিটসি লিথোস

3

চিত্রম্যাগিক সংস্করণ 7.0.3 + বাশ + সেড, 496 বাইট

M=magick
L=$((400-$(($1))/2)),$((400+$(($2))/2))
R=$((400+$(($1))/2)),$((400-$(($2))/2))
Z=" $L $R" Y=" -1 x";D=' -draw' K=' -stroke'
A=' -strokewidth 3 +antialias -fill'
$M xc:[800x]$A none$K \#000$D "rectangle$Z"$D "line$Z"$K \#00F8$D "circle$Z"$K \#0F08$D "circle $R $L" -depth 8 png:a
$M a txt:-|sed "/38C/!d;s/:.*//">x;P=`head$Y`;Q=`tail$Y`
$M a$A \#F008$K \#F008$D "line $P $Q" b
$M b txt:-|sed "/C70/!d;s/:.*//">x;S=`head$Y`;T=`tail$Y`
$M b$A \#F804$K \#F80$D "polyline $L $S $R $T $L" x:

"Rhombus.sh 180 120" দিয়ে ফলাফল

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

আরও সুনির্দিষ্ট (800x800 এর পরিবর্তে 6400x6400 ক্যানভাস ব্যবহার করে), 570 বাইট

ছেদগুলি সঠিক নয়; "স্ট্রোকউইথ" নির্দেশটি লাইনগুলিকে যথেষ্ট প্রশস্ত করে তোলে তা নিশ্চিত করার জন্য কমপক্ষে একটি পুরো পিক্সেল দুটি ছেদযুক্ত রেখার কেবল রঙের সাথে মিশে যায় তবে সবচেয়ে খারাপ ক্ষেত্রে (25x200 এবং 200x25) ক্রসিংগুলি একটি ছোট কোণে থাকে তাই মেঘ মিশ্র পিক্সেলের কয়েকটি পিক্সেল দীর্ঘ, এবং যেহেতু আমরা প্রথম এবং শেষ মিক্সড পিক্সেলটি নির্বাচন করি, সেখানে কিছুটা ত্রুটি রয়েছে। একই স্ট্রোকউইথের সাথে একটি 8x বৃহত্তর ক্যানভাস ব্যবহার করা এবং তারপরে ফলাফলটি স্কেল করে ত্রুটিটি কমিয়ে এক পিক্সেলেরও কম করে ফেলেছে তবে প্রায় x৪x সময় পেনাল্টিতে।

M=magick
L=$((3200-$(($1))*4)),$((3200+$(($2))*4))
R=$((3200+$(($1))*4)),$((3200-$(($2))*4))
K=-stroke;A='-strokewidth 3 +antialias'
$M xc:[6400x] $A -fill none $K \#000 -draw "rectangle $L $R" \
-draw "line $L $R" $K \#00F8 -draw "circle $L $R" \
$K \#0F08 -draw "circle $R $L" -depth 8 png:a 
$M a txt:-|grep 38C077|sed -e "s/:.*//p">x
P=`head -1 x`;Q=`tail -1 x`
$M a $A -fill \#F008 $K \#F008 -draw "line $P $Q" png:b
$M b txt:-|grep C70000|sed -e "s/:.*//p">x
S=`head -1 x`;T=`tail -1 x`
$M b $A -fill \#F804 $K \#F80 -draw "polyline $L $S $R $T $L" -resize 800 x:

সাধারণ 800x800 বনাম সুনির্দিষ্ট 6400x6400 এর ফলাফল:

সাধারণ বনাম সুনির্দিষ্ট ফলাফল

Ungolfed:

# rhombus.sh
# Inscribe a rhombus in the rectangle with dimensions 2*$1, 2*$2

# Run with "rhombus.sh W H"

M=magick

W=${1:-100};H=${2:-40}

# L locates the lower left corner of the rectangle
L=$((400-$((W))/2)),$((400+$((H))/2))

# R locates the upper right corner of the rectangle
R=$((400+$((W))/2)),$((400-$((H))/2))

# We'll need this several times
A='-strokewidth 3 +antialias'

# Establish 800x800 canvas (white) (circles + rectangle will
# always fit in 764x764)
#
# Draw the W x H rectangle (black) in center of canvas
#
# Draw two circles (blue, 50% alpha [#00F8] and green, 50% alpha [#0F08])
#  one centered at point L with peripheral point R
#  the other centered at point R with peripheral point L

$M xc:[800x] $A -fill none \
       -stroke \#000  -draw "rectangle $L $R" \
                      -draw "line      $L $R" \
       -stroke \#00F8 -draw "circle    $L $R" \
       -stroke \#0F08 -draw "circle    $R $L" \
       -depth 8 a.png 

# Find P and Q, the 2 intersections of the circles,
# that have mixed color #38C077 
$M a.png txt:-|grep 38C077|sed -e "s/:.*//p">x
P=`head -1 x`;Q=`tail -1 x`

# Draw line connecting the intersections P and Q
$M a.png $A -fill \#F008 -stroke \#F008 -draw "line $P $Q" b.png

# Find S and T, the 2 intersections of the line with the original rectangle,
# that have mixed color #C70000
$M b.png txt:-|grep C70000|sed -e "s/:.*//p">x
S=`head -1 x`;T=`tail -1 x`

# Draw the rhombus
$M b.png $A -fill \#F804 -stroke \#F80 -draw "polyline $L $S $R $T $L" d.png

আপনি মোড়গুলি সনাক্ত করার উপায়টি আমার খুব পছন্দ। শেষ মিশ্র রঙটি কি সঠিক? আমি জিজ্ঞাসা করছি কারণ দেখে মনে হচ্ছে এটি রম্বস এবং আয়তক্ষেত্রের লাইনগুলি কিছুটা বন্ধ। আমি ভেবেছিলাম সম্ভবত অ্যান্টি-এলিয়াসিংয়ের কারণে রঙটি কিছুটা দূরে সনাক্ত করা হয়েছে (সম্ভবত স্ট্রোকের প্রস্থও)।
জিওবিটস

2

আর, 290 বাইট

function(A,B,p=polygon){R=A^2+B^2
D=2*A
a=sqrt(R)*cbind(cos(t<-seq(0,2*pi,.01)),sin(t))
b=t(t(a)+c(A,B))
x=range(a,b)
plot(NA,xli=x,yli=x,as=1,ax=F,an=F)
rect(0,0,A,B)
segments(0,0,A,B,c=4)
p(a,b=4)
p(b,b=4)
curve(B/2-A*x/B+A^2/2/B,co=4,a=T)
p(cbind(c((R-2*B^2)/D,A,R/D,0),c(B,B,0,0)),b=3)}

বেনামে ফাংশন, আউটপুট স্ক্রিনে প্রদর্শিত হয়। মন্তব্যে কিছুটা নাড়িত

function(A,B){
    R=A^2+B^2
    D=2*A
    t=seq(0,2*pi,.01)
    a=sqrt(R)*cbind(cos(t),sin(t)) #Circle with (0,0) as center
    b=t(t(a)+c(A,B)) #Second circle transposed to (A,B) center
    x=range(a,b)
    #Empty plot, large enough to fit the 2 circles:
    plot(NA,xlim=x,ylim=x,asp=1,axes=F,ann=F)
    rect(0,0,A,B) #Initial rectangle
    segments(0,0,A,B,col=4) #Rectangle diagonal
    polygon(a,border=4) #Circle 1 (border is b thanks to partial matching)
    polygon(b,border=4) #Circle 2
    curve(B/2-A*x/B+A^2/2/B,col=4,add=T) #Line joining circles intersection
    polygon(cbind(c((R-2*B^2)/D,A,R/D,0),c(B,B,0,0)),border=3) #Rhombus
}

(120,100) এর উদাহরণ উদাহরণ:

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


2

লিবারলোগো , 270 বাইট

ব্যবহারকারীর ইনপুটটি অ্যারে হিসাবে নেওয়া হয়: [width, height]বা [height, width]

কোড:

fc [24]
D=180
R=sorted(eval(input "))
W=R[1]
H=R[0]
L=sqrt W**2+H**2
A=D/π*asin(H/L)
Z=A*2
S=L/2/cos A*π/D rectangle[W,H]pc 255 lt A fd 400 bk 800 fd 400 rt A pu bk H/2 lt 90 fd W/2 pd circle L*2 rt D-A fd L circle L*2 pc [5]lt D-A fd S lt Z fd S rt D+Z fd S lt Z fd S

ফলাফল:

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

ব্যাখ্যা:

fc [24]                        ; Fill Color = Invisible
D = 180                        ; D = 180° (Saved Bytes)
R = sorted( eval( input " ) )  ; R = Sorted Array of Rectangle Width and Height (User Input)
W = R[1]                       ; W = Rectangle Width
H = R[0]                       ; H = Rectangle Height
L = sqrt W**2 + H**2           ; L = Rectangle Diagonal Length
A = D / π * asin( H / L )      ; A = Rectangle Diagonal Angle°
Z = A * 2                      ; Z = Rectangle Diagonal Angle° * 2 (Saved Bytes)
S = L / 2 / cos A * π / D      ; S = Rhombus Side Length
rectangle [W, H]               ; Draw Rectangle
pc 255                         ; Pen Color = Blue
lt A                           ; Left = Rectangle Diagonal Angle°
fd 400                         ; Forward = 400 pt
bk 800                         ; Back = 800 pt
fd 400                         ; Forward = 400 pt
rt A                           ; Right = Rectangle Diagonal Angle°
pu                             ; Pen Up
bk H / 2                       ; Back = Rectangle Height / 2
lt 90                          ; Left = 90°
fd W / 2                       ; Forward = Rectangle Width / 2
pd                             ; Pen Down
circle L * 2                   ; Draw Left Circle (Radius = Rectangle Diagonal Length)
rt D - A                       ; Right = 180° - Rectangle Diagonal Angle°
fd L                           ; Forward = Rectangle Diagonal Length
circle L * 2                   ; Draw Right Circle (Radius = Rectangle Diagonal Length)
pc [5]                         ; Pen Color = Red
lt D - A                       ; Left = 180° - Rectangle Diagonal Angle°
fd S                           ; Forward = Rhombus Side Length
lt Z                           ; Left = Rectangle Diagonal Angle° * 2
fd S                           ; Forward = Rhombus Side Length
rt D + Z                       ; Right = 180° + Rectangle Diagonal Angle° * 2
fd S                           ; Forward = Rhombus Side Length
lt Z                           ; Left = Rectangle Diagonal Angle° * 2
fd S                           ; Forward = Rhombus Side Length

1

পাইথন 3.5 + টিনেটার, 433 বা 515 বাইট

বর্ণহীন (433 বাইট):

from tkinter import*
def V(a,b):S=500;Y,Z=S+a,S-b;M=(a**2+b**2)**0.5;D=Tk();C=Canvas(D);B=C.create_oval;X=C.create_line;B(S+M,S-M,S-M,S+M);B(Y-M,Z+M,Y+M,Z-M);X(Y,Z,S,S);C.create_rectangle(Y,S,S,Z);Q=-((Z-S)/(Y-S))**-1;U,V=(Y+S)/2,(Z+S)/2;X(U+M,V+M*Q,U-M,V-M*Q);P=[(Y,Q*(Y-U)+V),(((Z-V)/Q)+U,Z)][a>b];L=[(S,Q*(S-U)+V),(((S-V)/Q)+U,S)][a>b];X(S,S,P[0],P[1]);X(Y,Z,P[0],P[1]);X(Y,Z,L[0],L[1]);X(S,S,L[0],L[1]);C.pack(fill=BOTH,expand=1)

রঙিন (515 বাইট):

from tkinter import*
def V(a,b):S=500;t='blue';Y,Z=S+a,S-b;M=(a**2+b**2)**0.5;D=Tk();C=Canvas(D);B=C.create_oval;X=C.create_line;B(S+M,S-M,S-M,S+M,outline=t);B(Y-M,Z+M,Y+M,Z-M,outline=t);X(Y,Z,S,S,fill=t);C.create_rectangle(Y,S,S,Z);Q=-((Z-S)/(Y-S))**-1;U,V=(Y+S)/2,(Z+S)/2;X(U+M,V+M*Q,U-M,V-M*Q,fill=t);P=[(Y,Q*(Y-U)+V),(((Z-V)/Q)+U,Z)][a>b];L=[(S,Q*(S-U)+V),(((S-V)/Q)+U,S)][a>b];o='orange';X(S,S,P[0],P[1],fill=o);X(Y,Z,P[0],P[1],fill=o);X(Y,Z,L[0],L[1],fill=o);X(S,S,L[0],L[1],fill=o);C.pack(fill=BOTH,expand=1)

একটি নামযুক্ত ফাংশন যা 2 কমা-বিভাজিত সংখ্যা হিসাবে ইনপুট নেয়। আউটপুটটি একটি পৃথক উইন্ডোতে দেওয়া হয় যা পুরো আউটপুটটি দেখতে আপনাকে পুনরায় আকার দিতে হতে পারে। এখানে একটি নমুনা রঙিন আউটপুট V(180,130):

নমুনা আউটপুট


0

স্মাইলব্যাসিক, 280 বাইট

INPUT W,H
W=MAX(W,H)/4H=MIN(W,H)/4D=SQR(W*W+H*H)N=D+W
M+D+H
GBOX D,D,N,M,#RED
GCIRCLE D,M,D
GCIRCLE N,D,D
GLINE D,M,N,D
X=D+W/2Y=D+H/2A=ATAN(W,H)E=D*H/W/2S=E*COS(A)T=E*SIN(A)GLINE X-S*9,Y-T*9,X+S*9,Y+T*9GCOLOR-#L
GLINE D,M,X-S,Y-T
GLINE D,M,X+S,M
GLINE N,D,X+S,Y+T
GLINE N,D,X-S,D

(স্ক্রিনশট / ব্যাখ্যা শীঘ্রই পোস্ট করা হবে) পটভূমির রঙ কালো, আয়তক্ষেত্রটি লাল, বৃত্ত এবং লাইন সাদা এবং রম্বস হলুদ।

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