সারিবদ্ধভাবে রেখেছে, এন পয়েন্ট


39

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

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


7
আপনার যদি একটি সংখ্যা নিতে হয় nএবং nপয়েন্টগুলির জন্য লাইন আঁকতে হয় তবে এটি দুর্দান্ত হবে ।
Yodle

2
আমি এই ধারণা দ্বিতীয়। কেউ প্রথম উত্তর পাওয়ার আগে এটি পরিবর্তন করুন।
shooqie

2
@ Shooqie তাহলে শিরোনামটি যদিও তা বোঝায় না, যদি না এটি মোডগুলি সম্পাদনা করতে পারে?
Yodle

2
আমি মনে করি না যে একটি স্বেচ্ছাসেবীর nসাথে 37 পরিবর্তন করা চ্যালেঞ্জকে আরও যুক্ত করবে কারণ আমি যে কোনও উপায়েই বেশিরভাগ সমাধান নিয়ে কাজ করার প্রত্যাশা করি, বিশেষত কারণ 37 টি বিজোড় এবং তাই কোনও আয়না প্রতিসাম্য নেই।
লাইকোনি

3
আমরা কি nইনপুট হিসাবে গ্রহণ করি বা n20 এর চেয়ে বেশি স্বেচ্ছাসেবক বাছাই করি ?
আর

উত্তর:


26

গণিত, 13 বাইট

CompleteGraph

রেখাযুক্ত আপ-বৃত্ত-37 পয়েন্ট

দেখে মনে হচ্ছে এটি কেবলমাত্র একটি বিজ্ঞপ্তি এম্বেডিং দিতে ব্যর্থ হয়েছে n=4, তবে প্রশ্নটি জানিয়েছেn>=20


1
... এবং সেখানে কোনও অনুষ্ঠান করার জন্য আমার সঠিক উপায়টি অনুসন্ধান করার চেষ্টা করা হয়েছিল n(আমার কাছে স্থির 37 এর উত্তর প্রস্তুত ছিল) :(
জোনাথন অ্যালান

6
@ কারাসোকম্পুটিং এই ফাংশনটির চক্রান্ত করার অর্থে "গ্রাফিকিং" এর সাথে কোনও সম্পর্ক নেই। গ্রাথ থিওরি সমস্যাগুলির জন্য ম্যাথমেটিকাও খুব ভাল এবং সম্পূর্ণ গ্রাফ তৈরির জন্য অন্তর্নির্মিত থাকার বিষয়টি মনে হয় আমি যদি আমার ভাষায় গ্রাফের জন্য সমর্থন যুক্ত করি তবে আমি প্রথম জিনিসটি যুক্ত করব। এই চ্যালেঞ্জটির জন্য এই ফাংশনটি কার্যকর হওয়ার একমাত্র কারণ হ'ল সম্পূর্ণ গ্রাফগুলি একটি বৃত্তে সাজানো সমস্ত শীর্ষকোষের সাথে ডিফল্টরূপে রেন্ডার হয়।
মার্টিন এন্ডার

2
যদি আপনি গ্রাফগুলি সমর্থন করে থাকেন তবে আপনার আরও ভাল একটি পূর্ণাঙ্গ গ্রাফ ফাংশন, আইএমও থাকতে হবে।
নেজেনিসিস

2
@ কারাসোকমপুটিং ম্যাথমেটিকায় আপনাকে স্বাগতম, ভাষাটি প্রতিটি বিদ্যমান ফাংশনের জন্য অন্তর্নির্মিত। :
পি

1
আমি নেটলোগো ডাউনলোড করছিলাম কারণ আমি ভেবেছিলাম "মাল্টি-টার্টেল এটির সংক্ষিপ্ত কাজ করবে!" তারপরে মনে পড়ে আপনি গণিতবিদরা বড় হওয়া সংস্করণটি ব্যবহার করছেন।
wyldstallyns

13

এমএটিএল , 16 14 বাইট

আমি এমএটিএল নিয়ে ভয়াবহ সাবলীল নই বলে আমি আশা করি এটি কিছুটা গল্ফযোগ্য। (ম্যাথমেটিকাকে কমপক্ষে পরাজিত করতে ভাল লাগবে :-) তবে ফ্লিপটি wঅনুকূল নয়, সম্ভবত এড়ানো যেতে পারে ...

:G/4*Jw^2Z^!XG

এটি অনলাইন পরীক্ষা! (এই পরিষেবাদির জন্য @ স্যুভারকে ধন্যবাদ, -২ বাইটের জন্য @ ডিআরএমসি মাইলেক্সকে ধন্যবাদ।)

ব্যাখ্যা (এর জন্য N=3):

  :               Generate Range 1:input:       [1,2,3]
   G/             Divide By the first input     [0.333,0.666,1]
     4*           Multiply by 4                 [1.33,2.66,4.0]
       Jw^        i ^ (the result so far)       [-0.49+ 0.86i,-.5-0.86i,1.00]
                  (This results in a list of the n-th roots of unity)
          2Z^     Take the cartesian product with itself (i.e. generate all 2-tuples of those points)
             !XG  Transpose and plot

উল্লেখ্য যে n- তম ঐক্যের শিকড় জেনারেট করার জন্য আপনি সূত্র ব্যবহার করতে পারেন সাধ্যমতো exp(2*pi*i*k/N)জন্য k=1,2,3,...,N। কিন্তু যেহেতু exp(pi*i/2) = iআপনার কাছে লিখতে পারে i^(4*k/N)জন্য k=1,2,3,...,Nযা আমি এখানে কি করছি হয়।


1
আপনিXH:H:G
DJMcMayhem

1
আআআহ আমি Gআপনাকে অনেক ধন্যবাদ সম্পর্কে ভুলে গেছি !
flawr

11

পিকো -8 , 131 বাইট

আমি কোনও নিয়ম ভঙ্গ করব কিনা তা আমি সত্যিই নিশ্চিত ছিলাম না, তবে আমি তা যাইহোক তা করেছিলাম!

Golfed

p={}for i=0,19 do add(p,{64+64*cos(i/20),64+64*sin(i/20)})end for x in all(p)do for y in all(p)do line(x[1],x[2],y[1],y[2])end end

Ungolfed

points={}

for i=0,19 do 
  x=64+64*cos(i/20)
  y=64+64*sin(i/20)
  add(points,{x,y})
end

for x in all(points) do
  for y in all(points) do
    line(x[1],x[2],y[1],y[2])
  end
end

128x128 উন্মাদনা

পিকো -8 হ'ল লুয়া ভিত্তিক ফ্যান্টাসি কনসোল যা এর 128x128 এর নেটিভ রেজোলিউশন সহ আমি চেনাশোনাটিকে যতটা সম্ভব বড় করেছিলাম ...


9

গণিত, 42 বাইট

একটি বৃত্তে সজ্জিত 37 পয়েন্টের একটি সেট তৈরি করে এবং তারপরে দুটি পয়েন্টের সমস্ত সম্ভাব্য সাবসেটের মধ্যে লাইন আঁকবে। কেউ একটি সংক্ষিপ্ত উত্তর পোস্ট করেছেন যা কমপ্লিটগ্রাফের সুবিধা গ্রহণ করে, তবে আমি বিশ্বাস করি যে কমপ্লিটগ্রাফের উপর নির্ভর করে তাদের থেকে স্বল্পতম এটি।

Graphics@Line@Subsets[CirclePoints@37,{2}]

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


3
বিন্দু থেকে নিজের দিকে রেখা আঁকার এড়াতে হবে না, তাই আপনি ব্যবহার করে 3 বাইট সংরক্ষণ করতে পারেন Tuple। নির্বিচারে গ্রহণ করতে আপনাকেও এটি আপডেট nকরতে হবে তবে স্বাচ্ছন্দ্যে এটি আপনার কোনও বাইটের জন্য খরচ করবে না।
নেজেনিসিস

1
বলার অর্থTuples
নেজেনিসিস

9

এইচটিএমএল + জেএস (ইএস 6), 34 + 177 164 162 = 196 বাইট

এইচটিএমএল 5 ক্যানভাস এপিআই ব্যবহার করে ।

এটি কোডপেনে দেখুন

f=n=>{with(Math)with(c.getContext`2d`)for(translate(S=300,S),O=n;O--;)for(rotate(a=PI*2/n),N=n;N--;)beginPath(stroke()),lineTo(0,S),lineTo(sin(a*N)*S,cos(a*N)*S)}


/* Demo */
f(20)
<canvas id=c width=600 height=600>

-13 বাইট : সরানো হয়েছে closePath(), stroke()ভিতরে সরানো হয়েছেbeginPath()

-2 বাইট : aভিতরে সংজ্ঞায়িত পরিবর্তনশীলrotate()


8

জাভা, 346 338 322 301 বাইট

এই n>1পোস্টটি সবার জন্য কাজ করে , যদিও মূল পোস্টটির প্রয়োজন হয় না, এটি করে it

আমার প্রিয় হ'ল n=5কেন জিজ্ঞাসা করবেন না, আপনি যদি কুলার জিইউআই চান তবে এটি ব্যবহার করুন:

int a=Math.min(this.getHeight(),this.getWidth())/2;

হার্ড কোডড 300 এর জায়গায় এটি ফ্রেমের প্রস্থ বা উচ্চতা ব্যাস হিসাবে ব্যবহার করবে।

শুকিকে 8 টি বাইট সংরক্ষণ করা হয়েছে। জিওবিটসকে ধন্যবাদ 21 বাইট সংরক্ষণ করা।

import java.awt.*;void m(final int n){new Frame(){public void paint(Graphics g){Point[]p=new Point[n];int a=300;for(int i=1;i<n+1;i++){p[i-1]=new Point(a+(int)(a*Math.cos(i*2*Math.PI/n)),a+(int)(a*Math.sin(i*2*Math.PI/n)));for(int j=0;j<i;j++){g.drawLine(p[i-1].x,p[i-1].y,p[j].x,p[j].y);}}}}.show();}

এর জন্য আউটপুট n=37:

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


আপনি ড্রপ করতে পারেন Frame x=এবং final(আমি মনে করি?)
shooqie

@ শুকী উফ, Frame xঅন্য একটি সমাধান থেকে থ্রেড জড়িত ছিল। আপনার চূড়ান্ত হওয়া দরকার যদিও এটি নিজস্ব শ্রেণীর বাইরের ভেরিয়েবলের অভ্যন্তরীণ শ্রেণির রেফারেন্স।
ম্যাজিক অক্টোপাস উরন

এটি আমার মেশিনে ঠিক কাজ করে। বিটিডব্লু আমি মনে করি আপনি লুপগুলির intবাইরে ঘোষণার মাধ্যমে কিছু বাইটগুলি শেভ করতে পারেনfor
shooqie

জাভা in এ @ শুকি বলছে "সংকলনের সময় অ-চূড়ান্ত স্থানীয় ভেরিয়েবল এন এর সাথে উল্লেখ করা যায় না" comp
ম্যাজিক অক্টোপাস উরন

এটি জাভা 8 এ আমার জন্য কাজ করেছে, তবে আপনি আপনার পোস্ট সম্পাদনা করার পরে আমি কেবল সাদা পর্দা পাচ্ছি।
shooqie

7

পাইথন 2, 258 235 229 বাইট

import itertools as T,math as M
from PIL import Image as I,ImageDraw as D
s=300
n=input()
t=2*M.pi/n
o=I.new('RGB',(s*2,)*2)
for x in T.combinations([(s*M.cos(t*i)+s,s*M.sin(t*i)+s)for i in range(n)],2):D.Draw(o).line(x)
o.show()

আউটপুট জন্য n=37
এন = 37


1
from PIL import*খাটো হবে না ?
রোমান গ্রাফ

@ রোমানগ্রাফ পিআইএল একটি অদ্ভুত প্যাকেজ, আপনি import *কীভাবে ইনস্টল করবেন তার উপর নির্ভর করে আপনি পিআইএলটিকে এড়িয়ে যেতে পারেন এবং সরাসরি চিত্র / ইমেজড্রো আমদানি করতে পারেন
রড

6

অক্টাভা, 88 69 বাইট

N=input('');t=0:2*pi/N:N;k=nchoosek(1:N,2)';line(cos(t)(k),sin(t)(k))

এর জন্য আউটপুট N=37:

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

এর জন্য আউটপুট N=19:

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


ওহ, আমি এমনকি খেয়ালও করতে পারি নি যে ইতিমধ্যে অন্য একটি
অক্টাভে

যাইহোক, ইয়া :-)
প্যাকেজ

এক মাইল পেরিয়ে! আমার প্রথম চিন্তাটিও ছিল gplot, তবে আমি এটি যথেষ্ট সংক্ষিপ্ত করে তুলতে পারি নি ...
স্টিভি গ্রিফিন

6

পার্ল, 229 বাইট

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

$i=new Imager xsize=>700,ysize=>700;for$x(1..$_){for$y(1..$_){$i->line(color=>red,x1=>350+300*cos($a=2*pi*$x/$_),x2=>350+300*cos($b=2*pi*$y/$_),y1=>350+300*sin$a,y2=>350+300*sin$b)}}$i->write(file=>"t.png")

এবং আপনার প্রয়োজন হবে -MImager(9 বাইট), -MMath::Trig(সরবরাহ করা pi, 13 বাইট) এবং -n(1 বাইট) ==> + 23 বাইট।

এটি চালানোর জন্য:

perl -MImager -MMath::Trig -ne '$i=new Imager xsize=>700,ysize=>700;for$x(1..$_){for$y(1..$_){$i->line(color=>red,x1=>350+300*cos($a=2*pi*$x/$_),x2=>350+300*cos($b=2*pi*$y/$_),y1=>350+300*sin$a,y2=>350+300*sin$b)}}$i->write(file=>"t.png")' <<< 27

এটি এমন একটি ফাইল তৈরি করবে যাতে t.pngছবিটি থাকে।

আপনাকে Imagerযদিও ইনস্টল করতে হবে তবে কোনও উদ্বেগের বিষয় নয়, এটি বেশ সহজ:

(echo y;echo) | perl -MCPAN -e 'install Imager'

( echoএর আগে আপনি কখনই এটি ব্যবহার না করে এসগুলি আপনাকে সিএনপি কনফিগার করবে ( ।

এবং আরও পঠনযোগ্য সংস্করণ (হ্যাঁ, এটি পার্ল স্ক্রিপ্টের জন্য মোটামুটি পাঠযোগ্য!):

#!/usr/bin/perl -n
use Imager;
use Math::Trig;
$i=Imager->new(xsize=>700,ysize=>700);
for $x (1..$_){
    for $y (1..$_){
    $i->line(color=>red,x1=>350+300*cos($a=2*pi*$x/$_), x2=>350+300*cos($b=2*pi*$y/$_),
         y1=>350+300*sin($a), y2=>350+300*sin($b));
    }
}
$i->write(file=>"t.png");

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

-১ বাইট টাইটাসকে ধন্যবাদ।


পার্লের কি একক কমান্ডের চারপাশে ধনুর্বন্ধনী প্রয়োজন?
তিতাস

@ টিটাস যদি আপনি forলুপগুলির পরে ধনুর্বন্ধনী উল্লেখ করেন , তবে হ্যাঁ, সেগুলি বাধ্যতামূলক।
দাদা

আগে খালি y2। আমি বাজি ধরছি তোমার দরকার নেই। এবং আপনি STDOUT লিখতে পারেন?
তিতাস

@ টিটাস হুম আসলেই, ধন্যবাদ। আমি মনে করি আমি আমার টার্মিনালটি এখানে একটি নতুন লাইন রেখেছি যাতে আমি স্থানটি দেখিনি।
দাদা

5

জিওজেব্রা , 92 বাইট

a=polygon((0,0),(1,0),20)
sequence(sequence(segment(vertex(a,i),vertex(a,j)),j,1,20),i,1,20)

প্রতিটি লাইন পৃথকভাবে ইনপুট বারে প্রবেশ করানো হয়। এখানে একটি জিআইএফ কার্যকর করা দেখাচ্ছে:

ফাঁসি

কিভাবে এটা কাজ করে

polygonকমান্ড এ বেসলাইন ছেদচিহ্ন সঙ্গে, একটি 20 একতরফা বহুভুজ সৃষ্টি (0,0)এবং (1,0)। পরের কমান্ডটি সূচক সহ বহুভুজের প্রতিটি শীর্ষাংশের উপর পুনরাবৃত্তি iকরে, sequenceএবং vertexকমান্ডগুলি ব্যবহার করে এবং সূচী সহ প্রতিটি শীর্ষবিন্দুর জন্য i, কমান্ডটি jব্যবহার করে সূচী সহ প্রতিটি অন্যান্য শীর্ষে একটি রেখাংশ অঙ্কন করে segment


4

পিএইচপি, 186 184 196 বাইট

imagecolorallocate($i=imagecreate(601,601),~0,~0,~0);for(;$a<$p=2*M_PI;)for($b=$a+=$p/=$argv[1];$b>0;)imageline($i,(1+cos($a))*$r=300,$r+$r*sin($a),$r+$r*cos($b-=$p),$r+$r*sin($b),1);imagepng($i);

ছবিটি STDOUT এ লিখেছেন

ভাঙ্গন

// create image with white background
imagecolorallocate($i=imagecreate(601,601),~0,~0,~0);

// loop angle A from 0 to 2*PI
for(;$a<$p=2*M_PI;)
    // loop angle B from A down to 0
    for($b=$a+=$p/=$argv[1];$b;)    // ($a pre-increment)
        // draw black line from A to B
        imageline($i,                           // draw line
            (1+cos($a))*$r=300,$r+$r*sin($a),   // from A
            $r+$r*cos($b-=$p),$r+$r*sin($b),    // to B ($b pre-decrement)
            1                                   // undefined color=black
        );
// output
imagepng($i);

স্থির জন্য -12 বাইট n=20

প্রতিস্থাপন $p=2*M_PIসঙ্গে 6(-8), /=$argv[1]সঙ্গে =M_PI/10(-2), এবং $b>0সঙ্গে $b(-2)

সঠিক পিআই / 10 ব্যবহার করা ক্ষতিগ্রস্থ হয় না। সাথে .3142, প্যারামিট্রাইজড সংস্করণ থেকে রাউন্ডিং ত্রুটিগুলি রয়ে গেল, তবে M_PI/10সেগুলি অদৃশ্য হয়ে গেল এবং আমি এর $bপরিবর্তে (<> 0) পরীক্ষা করতে পারি $b>0। আমি এর সাথে দুটি বাইট সংরক্ষণ করতে পারতাম .314, তবে এটি পয়েন্টগুলি অফ-সেট করে দিতে পারে।

সীমাটি $a<620 পয়েন্টের জন্য যথেষ্ট সঠিক।

সঠিক পিআই গ্রাফ

174 বাইট স্থির জন্য n=314

imagecolorallocate($i=imagecreate(601,601),~0,~0,~0);for(;$a<314;)for($b=$a++;$b--;)imageline($i,(1+cos($a))*$r=300,$r+$r*sin($a),$r+$r*cos($b),$r+$r*sin($b),1);imagepng($i);

এই রেজোলিউশনে একটি পূর্ণ ভরাট বৃত্তে 314 পয়েন্টের ফলাফল ব্যবহার করা হয়েছে (যেমন 136,140 করুন, এরপরেও প্রতিটি সংখ্যা এবং 317 এর উপরে সমস্ত কিছু)।


1
ভাল উত্তর, তবে মনে হচ্ছে আপনি এটিকে ইনপুট হিসাবে গ্রহণের পরিবর্তে 20 টি হার্ডকোড করেছেন?
Riking

1
@ রিকিং: সত্য। তবে আমি এটিকে প্যারাম্যাট্রাইজ করার চ্যালেঞ্জের কোনও দাবি দেখতে পাচ্ছি না।
তিতাস


4

আর, 127 123 বাইট

plot((e=cbind(sin(t<-seq(0,2*pi,l=(n=21)))*2,cos(t)*2)));for(i in 2:n)for(j in 1:i)lines(c(e[i,1],e[j,1]),c(e[i,2],e[j,2]))

উত্পাদন:

ভালো অক্ষের লেবেল আহ?

-৪ বাইটস @ টিটাসকে ধন্যবাদ!


1
সংক্ষিপ্ত নয়, তবে এটি আরও দ্রুত হতে পারে for(i in 2:n){for(j in 1:i)...}। না Rধনুর্বন্ধনী প্রয়োজন?
তিতাস

@ টিটাস আপনি ঠিক বলেছেন! এবং না, কোনও ধনুর্বন্ধনী সেখানে প্রয়োজন নেই। ধন্যবাদ!
ফ্রিডরিক

3

বিবিসি বেসিক, 98 টি চরিত্র ci

টোকেনাইজড ফাইলাইজ 86 বাইট

r=600V.5142;29,r;r;:I.n:t=2*PI/n:F.i=1TOn*n:a=i DIVn*t:b=i MODn*t:L.r*SINa,r*COSa,r*SINb,r*COSb:N.

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

প্রতি লাইন দু'বার আঁকতে কোনও ভুল নেই, চেহারাটি অভিন্ন :- পি

Ungolfed

  r=600                              :REM Radius 600 units. 2 units per pixel, so 300 pixels
  VDU5142;29,r;r;                    :REM Set mode 20 (600 pixels high) and move origin away from screen corner
  INPUTn                             :REM Take input.
  t=2*PI/n                           :REM Step size in radians.
  FORi=1TOn*n                        :REM Iterate through all combinations.
    a=i DIVn*t                       :REM Get two angles a and b
    b=i MODn*t                       :REM by integer division and modlo
    LINEr*SINa,r*COSa,r*SINb,r*COSb  :REM calculate cartesian coordinates and draw line
  NEXT

আউটপুট n = 21

এটি ব্রাউজারের তুলনায় মূল রেন্ডারিংয়ে আরও ভাল দেখাচ্ছে।

<কোড> এখানে চিত্রের বিবরণ প্রবেশ করুন </ কোড>


LINEফাংশনটি আমাকে মনে করিয়ে দেওয়ার জন্য ধন্যবাদ । বিটস DRAW...
স্টেইনবার্গ

3

অক্টাভ, 50 48 46 45 বাইট

@(N)gplot((k=0:2*pi/N:N)+k',[cos(k);sin(k)]')

এটি এমন কোনও অসাধারণ ফাংশন যা আমরা যে গ্রাফটি খুঁজছি তা প্লট করে।

ব্যাখ্যা:

(k=0:2*pi/N:N)+k'একটি পূর্ণ N+1 x N+1অ্যাডিজেন্সি ম্যাট্রিক্স তৈরি করে এবং একই kসাথে কোণগুলির ভেক্টর সংজ্ঞায়িত করে , যা আমরা তখন ব্যবহার করি [cos(k);sin(k)]'স্থানাঙ্কগুলির একটি ম্যাট্রিক্স যেখানে প্রতিটি গ্রাফ নোড অবস্থিত। gplotআমরা চাই গ্রাফ প্লট করুন।

জন্য N = 29আমরা পাই:

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


2

জাভাস্ক্রিপ্ট (ইএস 5) / এসভিজি (এইচটিএমএল 5), 181 বাইট

document.write('<svg viewBox=-1e3,-1e3,2e3,2e3><path stroke=#000 fill=none d=M1e3,0')
with(Math)for(i=37;--i;)for(j=37;j--;)document.write('L'+1e3*cos(a=i*j*PI*2/37)+','+1e3*sin(a))

কেবলমাত্র মূল সংখ্যাগুলির জন্য কাজ করে যেমন 37 37 এর মূল পরামর্শ iain আপনি 1e3,2e3স্বাদ নিতে অন্যান্য মানগুলিতে নিয়মিতভাবে সামঞ্জস্য করতে পারেন (আমি 300,600এটি দিয়ে শুরু করেছি তবে সিদ্ধান্ত নিয়েছি যে এটি খুব মোটা ছিল)।


2

ম্যাটল্যাব, 36 বাইট

@(n)plot(graph(ones(n),'Om'),'La','c')

এটি একটি anoymous ফাংশন যা প্লট তৈরি করে।

@(n)                                     Define an anonymous fuction of 𝘯
               ones(n)                   Create an 𝘯×𝘯 matrix of ones
         graph(       ,'Om')             Create a graph object with that adjacency
                                         matrix, omitting self-loops
    plot(                   ,'La','c')   Plot the graph with a circular layout

উদাহরণ:

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

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


আমি অবাক হচ্ছি graphবায়োইনফরম্যাটিক টুলবক্সের অংশ নয় ... এমনকি এটিও জানত না যে এর অস্তিত্ব রয়েছে ... ভাল লাগলো
স্টিভি গ্রিফিন

1

কিউব্যাসিক 4.5, 398 271 বাইট

CLS:SCREEN 11:DEFSTR M-Z:DEFDBL A-L
INPUT"N",A:I=(360/A)*.0175:J=230
Q=",":FOR E=0 TO A
FOR F=E TO A
M=x$(COS(I*E)*J+J):N=x$(SIN(I*E)*J+J):O=x$(COS(I*F)*J+J):P=x$(SIN(I*F)*J+J):DRAW "BM"+M+Q+N+"M"+O+Q+P
NEXT:NEXT
FUNCTION x$(d):x$=LTRIM$(STR$(CINT(d))):END FUNCTION

কিউব্যাসিকের স্ক্রিনটি 640x480 টি হতে পারে, তাই দুর্ভাগ্যক্রমে চেনাশোনার ব্যাসার্ধটি কেবলমাত্র 230 পিক্সেল হয়। এছাড়াও, ভাসমান-থেকে-ইন-নির্ভুলতা হ্রাসের কারণে কিছু শিল্পকর্ম রয়েছে। এর জন্য মনে হচ্ছে N=36: এখানে চিত্র বর্ণনা লিখুন

সম্পাদনা: আমার স্টোরেজ, প্রকারের ঘোষণা এবং সমস্ত লুপিংয়ের দরকার নেই। জায়গায় পোলার থেকে সমস্ত কার্থেসিয়ান গণনা করা বাইট গণনায় 50% কম ...


1

কিউবিআইসি , 98 94 বাইট

$SCREEN 11|:i=6.3/a j=230[0,a|[b,a|line(cos(b*i)*j+j,sin(b*i)*j+j)-(cos(c*i)*j+j,sin(c*o)*j+j)

আমি আমার আসল কিউব্যাসিক উত্তর @ লেভেলাইভারস্টের উত্তরকে কিউবিআইকে রূপান্তর করেছি । আমি ভেবেছিলাম এটি সম্ভবপর হতে QBIC এ নির্মিত না এমন ফাংশনগুলির উপর খুব বেশি নির্ভর করবে তবে এটি দেখা যাচ্ছে যে এটি আরও 90 বাইট সংরক্ষণ করে। বদলে DRAWজন্য LINEঅন্য 80 বাইট পরিমাণ সঞ্চয় হয়। আমি জানতাম আমি সাধারণ কিছু ভুলে যাচ্ছি ...

৩ 36-র কমান্ড লাইন প্যারামিটার দিয়ে চালিত হলে, এটি দেখতে এরকম দেখাচ্ছে:

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


1

প্রসেসিং, 274 বাইট (239 + sizeকল এবং ফাংশন কল)

void d(int s){float a=2*PI/s,x=0,y=-400,m,n;float[][]p=new float[2][s];translate(400,400);for(int i=0;i<s;i++){m=x*cos(a)-y*sin(a);n=x*sin(a)+y*cos(a);x=m;y=n;p[0][i]=x;p[1][i]=y;for(int j=0;j<i;j++)line(p[0][j],p[1][j],p[0][i],p[1][i]);}}
void setup(){size(800,800);d(50);}

আমি কেন সত্যই জানি না, তবে setupদ্বিতীয় লাইনে থাকতে হয়েছিল। ঘোরার জন্য গণিত গণনা করতে সহায়তা করতে আমি https://en.wikedia.org/wiki/Rotation_matrix ব্যবহার করেছি । এই প্রোগ্রামটি পয়েন্টগুলি গণনা করে তাদের একটি অ্যারেতে ঠেলা দেয়, যার সাহায্যে আমরা লাইনগুলি আঁকতে ব্যবহার করছি।

এখানে 50 টি প্রান্তের বহুভুজের ছবি রয়েছে (100 টি প্রান্তটি প্রায় সম্পূর্ণ কালো ছিল)

50 পয়েন্ট

আপনি stroke(0,alpha);স্বচ্ছ প্রান্তগুলি যুক্ত করতে পারেন, যেখানে alphaলাইনটির অস্বচ্ছতা রয়েছে। এখানে একই বহুভুজ এর alphaএর 20

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


1

বাশ + জেলি + গ্রাফভিজ, 52 টি অক্ষর, 52 বা 63 বাইট

প্রদত্ত যে প্রোগ্রামগুলিতে কোন চরিত্রের এনকোডিংটি ব্যবহার করতে হবে তা নিয়ে দ্বিমত পোষণ করা হয়েছে, প্রোগ্রামটি নিয়ন্ত্রণের অক্ষর দ্বারা পূর্ণ। এটি xxdলাতিন -১ এনকোডিংয়ের (যা প্রতিটি বাইটের প্রতিটি চরিত্রকে উপস্থাপন করে) এর নীচে দেখতে কেমন লাগে তা এখানে :

00000000: 6a65 6c6c 7920 6520 2793 5213 636a 0c8e  jelly e '.R.cj..
00000010: 2d2d 59fe 9a3f 1d15 dc65 34d3 8442 7f05  --Y..?...e4..B..
00000020: 1172 80cf fb3b ff7d 277c 6369 7263 6f20  .r...;.}'|circo 
00000030: 2d54 7073                                -Tps

আমি আসলে প্রোগ্রামটি চালাতে পারিনি, যদিও, কোনও কারণে ইনপুটটিকে ইউটিএফ -8 এ রূপান্তর না করে (যা এটি 63৩ বাইট দীর্ঘ করবে)। যৌক্তিকভাবে এটি ল্যাটিন -১ হিসাবে কাজ করা উচিত - কোনও অক্ষরই 0 থেকে 255 এর সীমা ছাড়াই নয় - তবে অক্ষর এনকোডিং পরিবেশের ভেরিয়েবলগুলি কীভাবে কনফিগার করব তা বিবেচনা না করেই আমি "স্ট্রিং ইনডেক্সের সীমার বাইরে" ত্রুটি পেতে থাকি। সুতরাং এটিকে by৩ বাইট হিসাবে গণ্য করতে হবে যদি না কেউ এটিকে পুনরায় এনকোডিং না করে চালানোর কোনও উপায় বের করতে না পারে।

আমরা যদি জেলি এর এনকোডিংয়ে এটি ব্যাখ্যা করি তবে প্রোগ্রামটি আরও কিছুটা পাঠযোগ্য হতে পারে:

jelly e 'ƓRŒcj€⁾--Y“Ȥ?øßṇe4ạ⁴B¶¦×r°Ẇ»;”}'|circo -Tps

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

মৌলিকভাবে, এটি কেবল একটি জেলি প্রোগ্রাম যা অঙ্কন করতে গ্রাফভিজে কল করে; যাইহোক, জেলি বাহ্যিক প্রোগ্রামগুলি চালানোর জন্য কোনও ক্ষমতা আছে বলে মনে হয় না, তাই তাদের একসাথে লিঙ্ক করার জন্য আমাকে ব্যাশ ব্যবহার করতে হয়েছিল। (এটিরও অর্থ হ'ল স্ট্যান্ডিন থেকে ম্যানুয়ালি জেলি অনুরোধ ইনপুট করা সস্তা; সাধারণত কমান্ড লাইন থেকে ইনপুট লাগে তবে ব্যাশ মোড়কের অতিরিক্ত বাইটগুলি বোঝায়)) circoবৃত্তে আঁকতে বলা সমস্ত পয়েন্টগুলি স্বয়ংক্রিয়ভাবে ব্যবস্থা করবে it's সুতরাং, জেলি কোডটি কেবল একে অপরের সাথে সংযুক্ত যা পয়েন্টগুলির একটি তালিকা আঁকতে বলবে। এখানে কিভাবে এটা কাজ করে:

ƓRŒcj€⁾--Y“Ȥ?øßṇe4ạ⁴B¶¦×r°Ẇ»;”}
Ɠ                               read number from stdin
 R                              produce range from 1 to that number
                                (here used to produce a list with
                                that many distinct elements)
  Œc                            select all unordered pairs from that
      ⁾--                       a string consisting of two hyphens
    j€                          join each pair via the string
         Y                      join on newlines
                            ;   prepend (in this context)
          “Ȥ?øßṇe4ạ⁴B¶¦×r°Ẇ»    "graph{node[shape=point]"
                             ”} follow output with a "}" character

জেলির ব্যবহার আমাদের কিছুটা স্ট্রিং সঙ্কুচিত করতে দেয় যা তার অন্তর্নির্মিত অভিধানের মাধ্যমে গ্রাফভিজ আউটপুটকে কনফিগার করে। অভিধান হয়েছে graph, nodeএবং point। বিরক্তিকরভাবে, এটিতে নেই shape(এটি রয়েছে SHAPE, তবে গ্রাফভিজটি কেস-সংবেদনশীল), সুতরাং আমাদের সেই চরিত্রটি বাই-চরিত্রটি এনকোড করতে হবে।

ইনপুট 21 এর আউটপুট এখানে রয়েছে (স্ট্যাক এক্সচেঞ্জে আপলোড করা যেতে পারে এমন ফর্ম্যাটে আউটপুট তৈরি করার জন্য প্রোগ্রামটিতে সামান্য পরিবর্তন সহ):

21 পয়েন্টে সম্পূর্ণ গ্রাফ


0

পিএইচপি + এইচটিএমএল এসভিজি, 316 263 বাইট

হার্ডকোড nপয়েন্ট এবং কোনও ইনপুট nপ্যারামিটার সহ গল্ফযুক্ত সংস্করণ :

<svg height="610" width="610"><?for($i=1;$i<33;$i++){$x[]=300*sin(2*M_PI/32*$i)+305;$y[]=300*cos(2*M_PI/32)+305;}foreach($x as$j=>$w){foreach($y as$k=>$z){echo'<line x1="'.$x[$j].'" y1="'.$y[$j].'" x2="'.$x[$k].'" y2="'.$y[$k].'" style="stroke:red;"/>';}}?></svg>

nপয়েন্টগুলির জন্য ইনপুট প্যারামিটার সহ পূর্বের গল্ফযুক্ত সংস্করণ , 316 বাইট:

<svg height="610" width="610"><?$n=$_GET[n];$d=2*M_PI/$n;$r=300;$o=305;for($i=1;$i<=$n;$i++){$x[]=$r*sin($d*$i)+$o;$y[]=$r*cos($d*$i)+$o;}foreach($x as$j=>$w){foreach($y as$k=>$z){echo'<line x1="'.$x[$j].'" y1="'.$y[$j].'" x2="'.$x[$k].'" y2="'.$y[$k].'" style="stroke:rgba(0,0,0,.15);stroke-width:1;" />';}}?></svg>

ব্যবহার: একটি ফাইল সংরক্ষণ করুন এবং ব্রাউজার থেকে কল করুন:

http://localhost/codegolf/circle.php?n=32

nপয়েন্ট এবং সিএসএসের জন্য ইনপুট প্যারামিটার সহ অবরুদ্ধ সংস্করণ :

<style>
line {
    stroke: rgba(0,0,0,.15);
    stroke-width:1;
}
</style>
<svg height="610" width="610">
<?php
$n=$_GET[n]; // number of points
$d=2*M_PI/$n; // circle parts
$r=300; // circle radius
$o=305; // offset x,y
for ($i=1;$i<=$n;$i++){
    $x[]=$r*sin($d*$i)+$o; // store x,y coordinates in array
    $y[]=$r*cos($d*$i)+$o;
}
foreach($x as $j => $w){ // iterate all x,y points and connect to each other
    foreach($y as $k => $z) {
        echo '<line x1="'.$x[$j].'" y1="'.$y[$j].'" x2="'.$x[$k].'" y2="'.$y[$k].'" />'."\n";   
    }
}
?>
</svg>

একটি পোস্টের 30k অক্ষর সীমাবদ্ধতার কারণে একটি 32 পয়েন্ট সম্পূর্ণরূপে কার্যকরী স্নিপেট সংযুক্ত করতে পারেনি। এখানে একটি স্ক্রিন শট হয়:

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

সংযুক্ত স্নিপেটটি 30 কে একক পোস্টের সীমাবদ্ধতার কারণে 18 পয়েন্টের মধ্যে সীমাবদ্ধ।


0

আর, 108 বাইট

plot(x<-cos(t<-seq(0,2*pi,l=21)),y<-sin(t),as=1);apply(expand.grid(1:21,1:21),1,function(e)lines(x[e],y[e]))

বন্ধ যদি আমি যুক্তি পরিত্রাণ 5 বাইট শেভ গেল ,as=1যা বাহিনীর 1. ব্যবহার সম্পর্কে এই অনুপাতের expand.gridপয়েন্ট সব সম্ভব যুগল সঙ্গে একটি ম্যাট্রিক্স তৈরি করতে, এবং ব্যবহার applyএটি মাধ্যেমে লুপ করতে।

এন = 21

আর + আইগ্রাফ, 87 বাইট

প্যাকেজ ব্যবহার করে আরেকটি সমাধান igraph

library(igraph);plot(make_full_graph(21),layout=cbind(cos(t<-seq(0,2*pi,l=21)),sin(t)))

এন = 21

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