গোলকধাঁধা একটি লাইনার উত্পাদন


15

বিখ্যাত সি 64 বেসিক ওয়ান লাইনার

10 PRINT CHR$(205.5+RND(1)); : GOTO 10

স্ল্যাশ এবং ব্যাকস্ল্যাশগুলির একটি গোলকধাঁধা মুদ্রণ করে।

\\/\\\//\/\////\\/\/
\/\///\\///////\//\/
/\\\//\//\////\\//\\
\////\//\//\/\\\\\\/
/\/\\///\\\\/\\\\/\\
\/\//\\\\\\//\/\////
/\//\\///\/\///\////
\/\\\//\\/\\\//\\/\/
//////\\/\\/\/\/\///
\\/\/\\////\/\/\\/\/

স্টিডিন থেকে তির্যক দেয়াল দিয়ে তৈরি এ জাতীয় ধাঁধাতে পড়ুন এবং প্রাচীরের চরিত্রের সমন্বিত অনুভূমিক এবং উল্লম্ব দেয়াল সহ একই ধাঁধাটি মুদ্রণ করুন #

উদাহরণস্বরূপ ছোট গোলকধাঁধা

/\\
\\/
///

অনুবাদ

     #####
     #   #
     # # # #
     # # # #
 ##### # # #
       #   #
   #########

     #####    

সুনির্দিষ্টভাবে বলতে গেলে, প্রতিটি বিচ্ছিন্ন প্রাচীর বিভাগের দৈর্ঘ্য পাঁচটি অক্ষরের, সংলগ্ন প্রাচীর বিভাগগুলি একটি কোণে ভাগ করে। স্ল্যাশ এবং ব্যাকস্ল্যাশগুলির ম্যাট্রিক্সে একটি চরিত্রকে ডান / বাম / শীর্ষ / নীচে সরানো #-ম্যাট্রিক্সে উল্লম্বভাবে 2 টি এবং অনুভূমিক দিকের 2 টি অক্ষরের দ্বারা একটি তির্যক অনুবাদটির সাথে মিল রয়েছে।


আর একটি আউটপুট উদাহরণ সম্ভবত দরকারী হবে। এবং আমি আশা করি শিরোনামটি "ওয়ান লাইনার" হওয়া উচিত।
ক্যালভিনের

ইনপুট ধাঁধা সবসময় একটি আয়তক্ষেত্র হতে হবে? আপনার কি আরও বড় উদাহরণ থাকা উচিত যাতে আমরা ব্যবধানটি দেখতে পারি?
xnor

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

2
সম্ভব হলে স্টিডিন এবং স্টাডাউট ব্যবহার বাধ্যতামূলক, অন্যথায় "নিকটতম সমতুল্য"। নিউলাইন-অনুমানকে দুর্বল করার কোনও কারণ আছে কি?
এমএসচাউয়ার

উত্তর:


5

পাইথন 3, 226 224 বাইট

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

e,z,s=enumerate,'0',list(iter(input,""))
p=''.join(s)*5
r=[len(p)*[' ']for _ in p]
for y,l in e(s):
 for x,c in e(l):
  for i in range(-2,3):r[2*(x+y+(s>[z]))+i*(c>z)][2*(x+len(s)-y)+i*(c<z)]='#'
for l in r:print(''.join(l))

ধারণাটি হ'ল স্পেসগুলির বিশাল অ্যারে শুরু করা r, তারপরে ইনপুটটির মাধ্যমে পুনরাবৃত্তি করা এবং #প্রয়োজনীয় স্থানগুলি ফাঁকা স্থান প্রতিস্থাপন এবং অবশেষে পুরো অ্যারেটি মুদ্রণ করা। আমি যে কৌশলটি ব্যবহার করেছি তা হ'ল অক্ষরগুলির সাথে z = '0'সাম্যের পরীক্ষা করার পরিবর্তে '/'বা এর সাথে তুলনা করা '\', যা একগুচ্ছ বাইট সংরক্ষণ করে।


1

জুলিয়া, 258 বাইট

একটি কার্যকরী সমাধান ...

A=split(readall(STDIN))
q(i,j)=fld(i-1,j)
n,^ =A[].(3),q
f(i,j)=try A[1+i^5][1+j^5]<'0'?(i+j)%5==1:(i-j)%5==0catch 0end
h(i,j)=f(i+i^4,j)|f(i+(i-1)^4,j)
g(i,j)=h(i,j+j^4)|h(i,j+(j-1)^4)
for i=1:6length(A),j=-n-5:2n;print(" #"[1+g(i-j,i+j)],j==2n?"\n":"")end

উপস্থিতির ক্রম: fতাদের 5 * 5 বিট প্যাটারগুলি দ্বারা '/' এবং '\' কভার hকরে , প্রতি পঞ্চম এবং নীচের লাইনটিকে একক লাইনে ভাঁজ করে (স্মরণ "সংলগ্ন প্রাচীর বিভাগগুলি একটি কোণ ভাগ করে") এবং gকলামগুলির জন্য একই কাজ করে। অবশেষে, i-j,i+jছবিটি ঘোরান।


1

জাভাস্ক্রিপ্ট (ES6), 258

আউটপুটটি ফেরত দিয়ে প্যারামিটার হিসাবে গোলকধাঁধার সাথে একটি ফাংশন।

ইনপুট / আউটপুট নিয়মের কারণে এটি বৈধ কিনা তা নিশ্চিত করুন (এটি যাইহোক মজাদার ছিল)

f=m=>([...m].map(c=>{if(c<' ')x=sx-=2,y=sy+=2;else for(x+=2,y+=2,d=c>'0',i=y-3*d,j=x-3*!d,c=5;c--;)o[i+=d][j+=!d]='#';},w=m.search`
`,h=m.match(/\n/g).length,sy=y=0,sx=x=h*2,o=Array(z=(w+h+1)*2).fill(' ').map(x=>Array(z).fill(x))),o.map(r=>r.join``).join`
`)

// LESS GOLFED

U=m=>(
  w=m.search`\n`,
  h=m.match(/\n/g).length,
  o=Array(z=(w+h+1)*2).fill(' ').map(x=>Array(z).fill(x)),
  sy=y=0,
  sx=x=h*2,
  [...m].forEach(c=>{
    if(c<' ')x=sx-=2,y=sy+=2
    else for(x+=2,y+=2,d=c>'0',i=y-3*d,j=x-3*!d,c=5;c--;)o[i+=d][j+=!d]='#';
  }),
  o.map(r=>r.join``).join`\n`  
)

// TEST
out=x=>O.innerHTML+=x+'\n'

test=`\\\\/\\\\\\//\\/\\////\\\\/\\/
\\/\\///\\\\///////\\//\\/
/\\\\\\//\\//\\////\\\\//\\\\
\\////\\//\\//\\/\\\\\\\\\\\\/
/\\/\\\\///\\\\\\\\/\\\\\\\\/\\\\
\\/\\//\\\\\\\\\\\\//\\/\\////
/\\//\\\\///\\/\\///\\////
\\/\\\\\\//\\\\/\\\\\\//\\\\/\\/
//////\\\\/\\\\/\\/\\/\\///
\\\\/\\/\\\\////\\/\\/\\\\/\\/`
out(test),out(f(test))
<pre id=O></pre>

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