একটি ড্রাগন কার্ভ আঁকুন


19

আপনার আজকের কাজটি: একটি ড্রাগনের বক্ররেখা আঁকুন!

আপনি যদি না জানেন তবে ড্রাগন কার্ভ কী, এখানে একটি প্রাথমিক ভূমিকা ভাইহার্ট ভিডিও রয়েছে (সত্যিই দুর্দান্ত, দয়া করে দেখুন!)

আপনার কাজ: একটি ড্রাগন বক্ররেখা আঁকুন, কমপক্ষে 9 বার পুনরাবৃত্তি হয়েছে। আপনাকে 1 থেকে 9 পর্যন্ত পুনরাবৃত্তিগুলি দেখাতে হবে না, আপনাকে কেবল 9 টি পুনরাবৃত্তি সম্পন্ন করার পরে উত্পাদিত চূড়ান্ত বক্ররেখাটি প্রদর্শন করতে হবে। বক্ররেখাটি বক্ররেখার পয়েন্টগুলিকে সংযুক্ত করার জন্য সরলরেখা হিসাবে আঁকতে হবে; আউটপুটটি নীচের চিত্রগুলির সাথে মেলে যা 9 বা ততোধিক পুনরাবৃত্তিকে দেখায় (প্রতিফলন, ঘূর্ণন, স্কেলিং এবং লাইন প্রস্থ, লাইন রঙ এবং পটভূমির বর্ণের ভিন্নতা)। আপনার আউটপুটটি অবশ্যই যথেষ্ট পরিমাণে বড় হতে হবে যেগুলি পৃথক রেখাগুলি এবং "বক্সগুলি" তৈরি করে একে অপরের থেকে পৃথক করা যায়; যদি দুটি রেখার বক্ররেখা ছেদ না করে তবে তাদের আউটপুটে একই বা সংলগ্ন পিক্সেল দখল করা উচিত নয় (তাদের মধ্যে পটভূমির কমপক্ষে একটি পিক্সেল উপস্থিত থাকতে হবে)। আপনি হয় স্ক্রিনে চিত্র প্রদর্শন করতে পারেন বা কোনও ফাইলের মধ্যে চিত্রটি সংরক্ষণ করা যায় তা গ্রহণযোগ্য। আউটপুট অবশ্যই গ্রাফিকাল হতে হবে - এটি ASCII আর্ট হতে পারে না।

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

আপনার প্রোগ্রাম আউটপুট একটি ছবি অন্তর্ভুক্ত করুন।

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

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

আসকি শিল্পকে প্রশংসা করা হয়, কিন্তু গৃহীত হয় না: এটি গ্রাফিক্যাল আউটপুট, আসকি-আর্ট নয়।


3
সাইজিং, রঙ করা ইত্যাদি সম্পর্কে কি কোনও স্পেসিফিকেশন রয়েছে? এটি হুবহু আউটপুটটি কিছুটা অস্পষ্ট।
Rɪᴋᴇʀ


6
আমি ড্রাগন-কার্ভ ট্যাগটি সরিয়েছি কারণ এটিতে কিছু যোগ হবে বলে মনে হচ্ছে না
ব্লু


3
এটি কোনও সদৃশ নয়; এটি সমাধানের জন্য প্রোগ্রামিং কৌশলগুলি একেবারেই আলাদা (সম্ভবত চারকোল ব্যতীত)। বেশিরভাগ উত্তরগুলিতে কচ্ছপ গ্রাফিক্স লাইব্রেরি ব্যবহার করা হয়, যা কোনও ASCII প্রসঙ্গে কাজ করবে না।

উত্তর:


2

x86, এমএসডোস, 16 বাইট

আমি এটি কিছুক্ষণ আগে লিখেছিলাম, আমার জ্ঞানের কাছে ড্রাগনের ফ্র্যাক্টাল উত্পাদনের ক্ষুদ্রতম রুটিন। এটি কোনও আসল পুনরাবৃত্তি ব্যবহার করে না, বরং চূড়ান্ত চিত্র প্রদর্শন করে সরাসরি ফ্র্যাক্টালের অভ্যন্তরে থাকা প্রতিটি বিযুক্ত পিক্সেল প্লট করে । এটা অনেক অন্যান্য ছোট প্রযোজনার সঙ্গে অন্তর্ভুক্ত হচ্ছে এই প্যাক । 16 বাইট সংস্করণটি এই 32 বাইট প্রযোজনার মাধ্যমে 2014 শুরু করে ড্রাগনটিকে যতটা সম্ভব ছোট ভাঙা পেতে আমার প্রচেষ্টার শেষ হয়েছিল ।

সম্মোহন

14 10 19 CA D1 FA 10 DE 01 D1 CD 10 B4 0C EB F0

কোড

S: 
adc al,0x10
sbb dx,cx       
sar dx,0x01 
adc dh,bl
add cx,dx
int 0x10
mov ah,0x0C
jmp short S

স্ক্রিনশট


1
এটি ... আশ্চর্যজনক, কমপক্ষে বলতে চাই। আমি কীভাবে এটি চালিয়ে যাব?
জে আন্তোনিও পেরেজ

দ্রুততম উপায়টি হ'ল ডসবক্স অনলাইন, twt86.co?c=FBAZytH6EN4B0c0QtAzr8A%3D%3D আপনি উত্সটি এখানে অনুলিপি করতে পারেন এবং সেখানে নিজেই এটি সংকলন করতে পারেন। ক্লাসিক উপায় হ'ল ডসবক্স (0.74) নিজেই ডাউনলোড করুন এবং এটি সেখানে চালান। ); সবচেয়ে বাস্তব উপায় msdos বা FreeDos Bootstick (রূফের) পেতে, এবং বাস্তব #noemu জন্য এটি চালানোর জন্য হয়
HellMood

9

পাইথন 2/3, 169 167 150 111 98 78 বাইট

নোট করুন যে চ্যালেঞ্জের চশমা অনুসারে আমদানিটি বাইট গণনায় অন্তর্ভুক্ত নেই।

39 (!) বাইটস এবং আরও 13 এর জন্য @ নেডলা ২০০4 সংরক্ষণ করার জন্য @ অ্যালেক্সহলকে ধন্যবাদ

from turtle import*
o=[90]
for z in o*9:o+=[90]+[-x for x in o[::-1]]
fd(5)
for i in o:rt(i);fd(5)

তালিকা তৈরি করে বা ডান (90) এবং বাম (-90) টার্ন শুরু করে, তারপরে তালিকার মধ্য দিয়ে যায় এবং কচ্ছপকে সরিয়ে দেয়।

উত্পাদিত আউটপুট: এখানে চিত্র বর্ণনা লিখুন

সম্পাদনা: এটি খুব বিরক্তিকর যদি ঘড়িও থাকে speed(0)তবে প্রথমটির ঠিক আগে যুক্ত করুন fd(5)। এটি একই চলবে, কচ্ছপ বাদে আরও দ্রুত গতিতে চলবে।


একটি ছবি খুব ভাল লাগবে :)
ক্রিটসি লিথোস

আপনি কি আউটপুটটির কোনও ছবি বা স্ক্রিনশট পোস্ট করতে পারবেন? এমনকি এটিও পরিষ্কার নয় যে এই কোডটি স্ক্রিনে কিছু প্রিন্ট করে
জে আন্তোনিও পেরেজ

আপনার চিত্রটি কেটে গেছে
জে আন্তোনিও পেরেজ

এখনই স্থির করা উচিত :)
থিও

@ অ্যালেক্সহাল ধন্যবাদ! আমি জানতাম যে লুপটি ওয়াহায়ে খাটো করার কোনও উপায় নিশ্চয়ই আছে :)
থিও

8

লোগো, 43 বাইট

for[i 1 512][fd 9 lt :i/(bitand :i -:i)*90]

Http://www.calormen.com/jslogo/# এ দোভাষী দিয়ে চেষ্টা করুন

এটি আমার আগের ASCII আর্ট উত্তর হিসাবে একই নীতি এবং উইকিপিডিয়ায় সূত্রটি বাদ দিয়ে প্রশ্নটিতে চিত্রটি মেলে দিকটির বিপরীতটি বাদ দেয়:

প্রথমে n k*(2^m)কে সেই আকারে প্রকাশ করুন যেখানে k একটি বিজোড় সংখ্যা। নবম টার্নের দিকনির্দেশ কে মড 4 দ্বারা নির্ধারিত হয় অর্থাৎ বাকি 4 টি কে দ্বারা 4 দ্বারা বিভক্ত করা হলে বাকি বামে থাকে যদি নবীনতর বাঁকটি আর এল হয়; যদি কে মোড 4 3 হয় তবে নবম টার্নটি এল আর হয়

bitand :i -:iঅন্তত গুরুত্বপূর্ণ বিট খুঁজে বের করে i। আমরা এর iদ্বারা বিভক্ত iকরি প্রয়োজনীয় পরিমাণটি সঠিক পরিমাণে শিটফট করে, প্রয়োজনীয় বিজোড় সংখ্যাটি দিয়ে k। বাম এবং ডান ঘুরিয়ে আলাদা করার প্রয়োজন নেই; আমরা কেবল k*90ডিগ্রি দ্বারা বাম দিকে ঘুরিয়ে আছি এবং আমাদের পক্ষে মডিউলটি সঞ্চালনের জন্য ঘূর্ণনটি একটি মডুলো 360 অপারেটনের উপর নির্ভর করে।

আউটপুট

htপ্রয়োজনে কচ্ছপকে আড়াল করতে ব্যবহার করুন ।

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

আউটপুট (পরিবর্তিত)

নিম্নলিখিতটি দেখায় যে বক্ররেখা কীভাবে একটি একক স্ট্র্যান্ড।

bk 6 for[i 1 512][fd 6 rt :i/(bitand :i -:i)%4*45-90 fd 3 rt :i/(bitand :i -:i)%4*45-90]

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


4

LindenMASM , 51 বাইট

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

উত্স কোডটি নিম্নরূপ:

STT
AXI FX
INC 9
SET F 0
RPL X X+YF+
RPL Y -FX-Y
END

n = 6উদাহরণস্বরূপ এটি সেট আপ করতে :

STT
AXI FX
INC 6
SET F 0
RPL X X+YF+
RPL Y -FX-Y
END

এটি পাইথন 3 এর মাধ্যমে নিম্নলিখিত চিত্র তৈরি করে turtle:

6 প্রজন্ম

পুনরাবৃত্তির জন্য সামান্য সংখ্যার পার্থক্য থাকতে পারে, যেমন লিন্ডেনমায়ার সিস্টেমে প্রথম পুনরাবৃত্তিটি একটি লাইন। এটি দেখতে যেমনটি দেখাচ্ছে তেমন n = 10:

10 প্রজন্ম

কেবল মজাদার জন্য, 15 প্রজন্মের সাথে এটি দেখতে দেখতে কী হবে ( MOV 2এটিকে কিছুটা ছোট করার জন্য একটি অতিরিক্ত নির্দেশ সহ ):

15 প্রজন্ম

আপনি একবার 20 প্রজন্মের সাথে উঠলে (এর সাথে MOV 0.5) আপনি সত্যিই আর লাইনগুলি দেখতে পাচ্ছেন না এবং এটি তৈরি করতে প্রচুর পদক্ষেপ নেয় (এর জোড়া +-এবং -+অপ্টিমাইজ করা হয় না)। আপনি যা পান তা এখানে:

20 প্রজন্ম

নোট করুন যে বর্তমান দোভাষীটি প্রজন্মের স্বল্প পরিমাণের জন্য গ্রাফিকাল সমস্যাগুলি উপস্থাপন করতে পারে, সম্ভবত পর্দার দিকে আঁকছেন না। দুর্ভাগ্যক্রমে যখন এই দোভাষীটি তৈরি করা হয়েছিল তখন কোনও সমস্যা ছিল না, পাইথন 3-এ সম্ভাব্য পরিবর্তনটির কারণ হতে পারে বা এটি কেবল আমার সিস্টেম হতে পারে


4

আন্ডারলোড, 196 বাইট

()()(<svg width="99" height="147">)S(<g transform="translate):S((33,33)">)S((3,0)rotate)*a(*a(~*)*~("><path d="M0h3" stroke="#"/>)~*a(*)**:(-90)a~^~(90)a~^)*::*:**:*^S(</g>)(:*)::*:**:*^S(</svg>)S

আমি ভেবেছিলাম যে এই চ্যালেঞ্জটি স্বল্প-শক্তিযুক্ত ইওসোলংয়ে চেষ্টা করা আকর্ষণীয় হতে পারে; আন্ডারলোড এমন একটি কম সংখ্যক কমান্ড সহ একটি ভাষার পক্ষে মোটামুটি ভাল করে।

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

আন্ডারলোডে ড্রাগনের কার্ভের স্ক্রিনশট

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

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

কয়েকটি অণু-অপ্টিমাইজেশন এবং আন্ডারলোড-নির্দিষ্ট কৌশলগুলিও রয়েছে। স্ট্যাকের শীর্ষের সাথে প্রতিটি লুপের পুনরাবৃত্তির সাথে খুব বেশি গণ্ডগোল এড়াতে আমরা ফাংশনে x এবং y সংযুক্ত করে শুরু করি "কনটেনেটেটিং দ্বারা তৈরি স্ট্রিংটি ফিরিয়ে আনুন: এক্স , একটি টার্ন ইন্সট্রাকশন, ফাংশন আর্গুমেন্ট, একটি মুভি- ফরোয়ার্ড নির্দেশনা, এবং y । " এই ফাংশনটি স্ট্যাকের উপরে কেবল একটি স্থান নেয়, তাই আমরা এটিকে সদৃশ করতে পারি, এটি -90একটি আর্গুমেন্ট হিসাবে কল করতে পারি, ডুপ্লিকেটের নীচে রিটার্ন মানটি অদলবদল 90করতে পারি এবং এক্স এবং y এর জন্য নতুন মান ধরে রাখতে একটি যুক্তি হিসাবে কল করতে পারিস্ট্যাকের শীর্ষ দুটি উপাদানগুলির (যা এখন পর্যন্ত সর্বাধিক সাধারণভাবে অ্যাক্সেসযোগ্য) এর চেয়ে বেশি কখনও স্পর্শ করার প্রয়োজন ছাড়াই। এই ফাংশনটি রানটাইমে কোড-উত্পন্ন। জেনারেটর নিজেই রানটাইমে কোড-উত্পন্ন হয়, যাতে স্ট্রিংটি পুনরায় ব্যবহার করার অনুমতি দেয় যাতে এটি <g transform="translateচিত্রের উত্স সেট করতেও ব্যবহৃত হয়। আমরা প্রথমে সমস্ত ওপেন ট্যাগগুলি তৈরি করি এবং তারপরে সমস্ত ঘনিষ্ঠ ট্যাগগুলি কেবলমাত্র </g>, আমরা খালি ট্যাগগুলির সাথে মেলে না worry (আন্ডারলোডে দক্ষতার সাথে সংখ্যা লেখার একটি নিজস্ব সমস্যা একটি আকর্ষণীয় সমস্যা; (:*)::*:**:*সম্ভবত 1024 লেখার সবচেয়ে কার্যকর উপায়, যদিও "2 (2 + 2 (1 + 2 × 2) power 2" তে অনুবাদ করে) write

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

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

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

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


4

MATL , 26 বাইট

0J1_h9:"tPJ*h]hYsXG15Y01ZG

দুটি অক্ষের বিভিন্ন স্কেল গ্রহণ করা হলে কোডটি 19 বাইটে হ্রাস করা যেতে পারে:

0J1_h9:"tPJ*h]hYsXG

নীচের পরিসংখ্যানগুলি সমান-স্কেল (26-বাইট) সংস্করণের সাথে সমান।

উপরের কোডটি 9-তম (0-ভিত্তিক) পুনরাবৃত্তি উত্পাদন করে, যা চ্যালেঞ্জের দশম চিত্র:

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

অন্যান্য মানগুলির জন্য কোডটিতে 9কোডটি পরিবর্তন করুন , বা iনম্বরটিকে ব্যবহারকারীর ইনপুট হিসাবে নিতে এটি প্রতিস্থাপন করুন। উদাহরণস্বরূপ, ফলাফলটি 13হ'ল:

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

ব্যাখ্যা

জটিল প্লেনে বক্ররেখার পরে ধাপে ধাপে ধীরে ধীরে অ্যারে তৈরি করতে এটি একটি লুপ ব্যবহার করে । উদাহরণস্বরূপ, প্রথম দুটি পদক্ষেপ হ'ল 1j(উপরে) এবং -1(বাম)।

প্রতিটি পুনরাবৃত্তিতে, এখনও পর্যন্ত পদক্ষেপের অ্যারেটি অনুলিপি করা হয়। অ্যারের অনুলিপিটি বিপরীত হয় , (90 ডিগ্রি ঘোরানোর জন্য) দ্বারা গুণিত হয় 1jএবং আসলটিতে কনকনেটেড হয়।

লুপের পরে, পদক্ষেপগুলির একটি সংখ্যক যোগফল প্রকৃত পয়েন্ট দেয়, যা পরে জটিল প্লেনে প্লট করা হয়।

0                          % Push 0
 J1_h                      % Push array [1j, -1]. This defines the first two steps
     9:                    % Push [1, 2, ..., 9]
       "                   % For each
        t                  %   Duplicate the array of steps so far
         P                 %   Reverse
          J*               %   Multiply by 1j
            h              %   Concatenate horizontally to previous steps
             ]             % End
              h            % Concatenate with the initial 0
               Ys          % Cumulative sum
                 XG        % Plot. Complex numbers are plotted with real and imag as x and y
                   15Y0    % Push string 'equal'
                       1ZG % Set equal scale in the two axes

আপনার উত্তর চিত্তাকর্ষক :) আপনি কি কোডটির ব্যাখ্যা সরবরাহ করতে আপত্তি করেন?
জে আন্তোনিও পেরেজ

@ জর্জি ধন্যবাদ! সম্পন্ন
লুইস মেন্ডো

আপনার দেওয়া "19-বাইট" এবং "26-বাইট" সংস্করণগুলি অভিন্ন। আমি ধরে নিলাম এখানে একটি অনুলিপি-পেস্ট আছে?

@ ais523 সত্যিই! এখনই সংশোধন করা হয়েছে, লক্ষ্য করার জন্য ধন্যবাদ। বিটিডব্লিউ এটি এখানে কর্মে দেখা যেতে পারে (পরীক্ষামূলক সংকলক; পৃষ্ঠাটি রিফ্রেশ করার প্রয়োজন হতে পারে)
লুইস মেন্ডো

3

গণিত 86 টি বাইট

{1,-1}
r=Reverse;Graphics@Line@Nest[Join[l=Last@#;h=#-l&/@#,r[r@#%&/@h]]&,{{0,0},%},9]

এটি কীভাবে কাজ করে: {1,-1}ফলাফলগুলি {1,-1}। এটি মূলত "এটি স্ট্যাকের দিকে ঠেলে দেয়"। এই মানটি দিয়ে পুনরায় স্মরণ করা যেতে পারে %r=Reverseমূলত কেবল বিপরীত ফাংশনটির নতুন নামকরণ হয় কারণ আমি কোডে এটি দুবার ব্যবহার করি। Graphics@Line@শুধু পয়েন্ট একটি তালিকা নেয় ও সেগুলিকে সংযোগ একটি লাইন স্বপক্ষে। সমস্যা প্রকৃত মাংস এই কোড সেগমেন্ট ঘটবে: Nest[Join[l=Last@#;h=#-l&/@#,r[r@#%&/@h]]&,{{0,0},%},9]। লেমে আপনাকে বলে - সেগমেন্টটি চ ****** সিকে হিসাবে জটিল। এখানে কি Nestকরে:Nest[f,x,9] কল করার ফলাফল আউটপুট করে f[f[f[f[f[f[f[f[f[x]]]]]]]]]

আমার কোড, এই প্রথম আর্গুমেন্ট fহল: Join[l=Last@#;h=#-l&/@#,r[r@#%&/@h]]&, দ্বিতীয় যুক্তি xহল {{0,0},%}(যা মূল্যায়ণ {{0,0},{1,-1}}), এবং তৃতীয় যুক্তি nযা শুধু 9 (যা শুধু দ্বিতীয় যুক্তি 9 বার প্রথম যুক্তি প্রয়োগ করা হবে) হয়।

সবার মধ্যে সবচেয়ে জটিল অংশটি হ'ল এটিই প্রথম যুক্তি: Join[l=Last@#;h=#-l&/@#,r[r@#%&/@h]]&যা প্রায় খাঁটি সিনট্যাকটিক চিনির এক বিশাল জগাখিচুড়ি। আমি সত্যিই এইটির জন্য গণিতের সিনট্যাকটিক চিনির গালাগালি করছি। কোডটির সেই লাইনটি অজ্ঞাতনামা ফাংশনের গণিতের সংস্করণকে উপস্থাপন করে, জিনিসগুলি সংক্ষিপ্ত করা ব্যতীত আমি সেই অনামী ফাংশনের মধ্যে দুটি পৃথক বেনাম ফাংশনকে সংজ্ঞায়িত করি। হ্যাঁ, এটি আইনী, লোকেরা। আসুন এটি ভেঙে দিন।

Joinদুটি যুক্তি লাগে। প্রথমটি l=Last@#;h=#-l&/@#, এবং দ্বিতীয়টি r[r@#%&/@h]

যোগদানের প্রথম যুক্তি: "মূল" বেনামে ফাংশনটির #ভিতরে, বক্ররেখার বর্তমান পুনরাবৃত্তির সমস্ত পয়েন্টের একটি তালিকা। এর l=Last@#;অর্থ "আপনি যে পয়েন্টগুলি ইনপুট হিসাবে পেয়েছেন তার তালিকায় বিন্দুটি নিয়ে যান এবং সেই পয়েন্টটি ভেরিয়েবলের জন্য বরাদ্দ করুন lnext পরের অংশটি, h=#-l&/@#আরও কিছুটা জটিল is এর অর্থ" আপনার একটি ক্রিয়া আছে। এই ফাংশনটি ইনপুট হিসাবে একটি পয়েন্ট নেয়, lএটি থেকে বিয়োগ করে এবং ফলাফলটি দেয়। এখন, স্থানান্তরিত পয়েন্টগুলির তালিকা তৈরি করতে আপনি যে ইনপুট হিসাবে পয়েন্ট পেয়েছেন তার তালিকার প্রতিটি উপাদানটিতে এই ফাংশনটি প্রয়োগ করুন এবং ভেরিয়েবলের জন্য সেই নতুন তালিকাটি বরাদ্দ করুন h

যোগদানের দ্বিতীয় যুক্তি: r[r@#%&/@h] আমি আক্ষরিকভাবে সবচেয়ে জটিল বাক্য গঠন করেছি। আমি বিশ্বাস করতে পারি না যে কোনও কোড বিভাগে এমন কিছু থাকতে পারে @#%&/@- দেখে মনে হচ্ছে আমি কোনও প্রোগ্রামের মাঝখানে কার্টুন চরিত্রের মতো অভিশাপ দিচ্ছি! তবে এটি ভেঙে ফেলা সম্ভব। মনে রাখবেন - r[x]পয়েন্টগুলির একটি তালিকা নেয় এবং বিপরীত ক্রমে সেই তালিকাটি দেয়। r@#%&এটি একটি অনামী ফাংশন যা এর ইনপুটটিকে বিপরীত করে, তারপরে এটিকে স্টোরিড %(যা হয় {1,-1}) দ্বারা গুণ করে এবং ফলাফলটি দেয়। মূলত এটি 90 ডিগ্রি ইনপুটটি ঘোরায় তবে কোডে আমি যতটা লিখতে পারি তত সংক্ষিপ্ত আকারে। তারপরে r@#%&/@h"" একটি নতুন তালিকা আউটপুট করুন যা h90 ডিগ্রি ঘোরানো প্রতিটি পয়েন্ট ""

সুতরাং সামগ্রিকভাবে, Join[l=Last@#;h=#-l&/@#,r[r@#*%&/@h]]&এমন একটি ফাংশন যা একটি ইনপুট হিসাবে পয়েন্টগুলির একটি তালিকা গ্রহণ করে এবং একই পয়েন্টের তালিকায় যোগ করে 90 ডিগ্রিটি ঘোরানো পরবর্তী বাঁকটি পেতে। ড্রাগনের বক্রতা পেতে এটি 9 বার পুনরাবৃত্তি হয়েছে। তারপরে এটি পয়েন্টগুলির ফলাফলের তালিকাটি একটি লাইন হিসাবে স্ক্রিনে আঁকবে। এবং আউটপুট:

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


3
আমি শুধু একটি নাল ভেক্টর লেখার জন্য বিচিত্র কৌতুক পাওয়া যায়নি: 0{,}... কাজ করে কারণ 0 xহল 0প্রায় কোনো জন্য xএবং {,}জন্য অন্বিত চিনি {Null,Null}
মার্টিন ইন্ডার

3

পাইথন 2, 43 বাইট

এই উত্তরটি আমদানির বিবরণী সহ 43 বাইট নয় এবং এটি মূলত লেভেল রিভার সেন্টের লোগো উত্তর এবং i/(i&-i)তাদের কোডে তাদের ব্যবহারের উপর ভিত্তি করে । অনলাইনে ট্রিনকেট.ইও এ চেষ্টা করুন

from turtle import*
for i in range(1,513):fd(9);rt(90*i/(i&-i))

এখানে আউটপুট একটি ছবি।

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


আমি যতদূর জানি, আপনার আমদানি বিবরণী থেকে বাইট গণনাটি আপনার মোট বাইট গণনায় অন্তর্ভুক্ত করতে হবে।
থিও

1
@ থিও, কেবলমাত্র চ্যালেঞ্জের বিশদটি উদ্ধৃত করে:The shortest code in bytes wins, however include directives for libraries shouldn't be included in the byte count, and you may use graphics libraries or other libraries written for your language of choice if they were written before the posting.
শেরলক 9

3

গণিত, 56 55 বাইট

Graphics@Line@AnglePath[Pi/2JacobiSymbol[-1,Range@512]]

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

ব্যাখ্যা: OEIS A034947

কেবল মজাদার জন্য, এখানে 19 তম পুনরাবৃত্তির রঙিন সংস্করণ।

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



1

এইচটিএমএল + জাভাস্ক্রিপ্ট, 182

<canvas id=C></canvas><script>c=C.getContext("2d")
C.width=C.height=400
s=n=9
x=y=200
for(i=d=0;i<=1<<n;d+=++i/(i&-i))
c.lineTo(x,y),
d&1?y+=d&2?s:-s:x+=d&2?-s:s
c.stroke()</script>


0

হাস্কেল + ডায়াগ্রাম, 179 বাইট

import Diagrams.Prelude
import Diagrams.Backend.SVG
d 1=hrule 1<>vrule 1
d n=d(n-1)<>d(n-1)#reverseTrail#rotateBy(1/4)
main=renderSVG"d"(mkWidth 99)$strokeT(d 9::Trail V2 Double)

আউটপুটটি একটি 99 পিক্সেল প্রশস্ত এসভিজি ফাইল যা স্বচ্ছ পটভূমির সাথে রয়েছে (একটি চিত্র 9 পিক্সেল প্রশস্ত কোনও স্ট্রোকের কোনও কিছুর পুনরুদ্ধার করতে খুব পুরু হবে)। এখানে এটি পুনরুদ্ধার করা হয়েছে এবং একটি সাদা পটভূমিতে রচিত হয়েছে:

ড্রাগন নয় নম্বর


0

বাজে কথা , 518 বাইট

টোশ স্ক্র্যাচ হয় , তবে ব্লকের পরিবর্তে পাঠ্য সহ with 518 বাইটে, এই উত্তরটি সম্ভবত জাভা থেকেও খারাপ।

এই উত্তরটি @ থিওর পাইথন উত্তর হিসাবে একই যুক্তি ব্যবহার করে তবে স্ক্র্যাচের (এবং এভাবে টোশের) তালিকার ক্ষমতাগুলি ভয়াবহ হওয়ায় সংখ্যার পরিবর্তে "এল" এবং "আর" এর স্ট্রিং সহ।

আপনি এটি এখানে স্ক্র্যাচ প্রকল্প হিসাবে চালাতে পারেন । (স্ক্র্যাচ প্রকল্পগুলিতে টোগিল সংকলন)

when flag clicked
set path to "R"
go to x: -50 y: 100
point in direction 90
pen down
set pen size to 2
clear
repeat 9
    set path copy to path
    set path to join (path) "R"
    set i to length of path copy
    repeat length of path copy
        if letter i of path copy = "R" then
            set path to join (path) "L"
        else
            set path to join (path) "R"
        end
        change i by -1
    end
end
set i to 0
repeat length of path
    change i by 1
    if letter i of path = "R" then
         turn cw 90 degrees
    else
         turn ccw 90 degrees
    end
    move 7 steps
end  

ব্যাখ্যা:

when flag clicked
set path to "R"
go to x: -50 y: 100
point in direction 90
pen down
set pen size to 2
clear

এই প্রথম অংশটি প্রোগ্রামটি চালিত করে যখন সবুজ পতাকাটি ক্লিক করা হয় ( when flag clicked), "ভেরিয়েবলটিকে" আর "তে সেট করে এবং অঙ্কন করার জন্য প্রস্তুত হওয়ার জন্য যথাযথ অবস্থায় স্প্রিট এবং স্টেজ পায়।

repeat 9
    set path copy to path
    set path to join (path) "R"
    set i to length of path copy
    repeat length of path copy
        if letter i of path copy = "R" then
            set path to join (path) "L"
        else
            set path to join (path) "R"
        end
        change i by -1
    end
end

এখন আমরা পাথ জেনারেশন কোডটিতে পৌঁছেছি। এটি সংখ্যার পরিবর্তে "আর" এবং "এল" এর স্ট্রিং ব্যতীত @ থিওর পাইথন উত্তরের মতো একই যুক্তি ব্যবহার করে এবং আমরা তালিকা বোঝার পরিবর্তে নেস্টেড লুপ ব্যবহার করি।

set i to 0
repeat length of path
    change i by 1
    if letter i of path = "R" then
         turn cw 90 degrees
    else
         turn ccw 90 degrees
    end
    move 7 steps
end  

অবশেষে, আমরা পথের চলকের প্রতিটি বর্ণের মধ্য দিয়ে গিয়ে অক্ষরের উপর নির্ভর করে বাম বা ডানদিকে ঘুরিয়ে পথটি আঁকি।

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