জেডে চিহ্নিতকারী সহ বাউন্সি-এজযুক্ত এক্সওয়াই বাক্স


10

দীর্ঘ সময়ের লুকার প্রথমবারের পোস্টার এখানে।

এক্স, ওয়াই এবং জেড: 3 ইনপুট লাগে এমন একটি প্রোগ্রাম লিখুন

  • এক্স = জুড়ে (কলাম)
  • Y = ডাউন (সারি)
  • জেড = অবস্থান চিহ্নিতকারী

প্রোগ্রামটির পরে ভিজ্যুয়াল গ্রিড এক্স জুড়ে এবং ওয়াই ডাউন মুদ্রণ করা উচিত। এই গ্রিডটি "+" ব্যতীত অন্য কোনও চরিত্র দ্বারা তৈরি করা যেতে পারে। প্রতিটি 'অবস্থান' একটি সূচক নম্বর দেওয়া হয়, 1 থেকে 1 পর্যন্ত স্থানাঙ্ক 1 এবং 1 অবধি শেষ অবধি।

এক্স এবং ওয়াই সর্বদা কমপক্ষে 3 হবে এবং জেড এর চেয়ে বড় কখনও হবে না X * Y

জেড লোকেশনটিতে "+" হিসাবে মুদ্রিত সেই অবস্থানটির পাশাপাশি সেই স্থানে বাম, ডান, উপরে এবং নীচে 1 টি অক্ষর উপস্থাপন করবে। উদাহরণ স্বরূপ:

 +
+++
 +

অবশেষে, যদি + অক্ষরগুলি প্রান্তগুলি (শীর্ষে সর্বাধিক, বাম সর্বাধিক, ডান সর্বাধিক এবং / অথবা বেশিরভাগ প্রান্তের নীচে) বাধা দেয়, তবে + + একই অক্ষের সাথে পিছনে ফিরে এসে অন্যদিকে উপচে পড়া উচিত over

উদাহরণ: ইনপুট = 5, 5, 13

-----
--+--
-+++-
--+--
-----

ইনপুট = 10, 10, 10

-------+++
---------+
---------+
----------
----------
----------
----------
----------
----------
----------

ইনপুট = 10, 10, 21

----------
+---------
+++-------
+---------
----------
----------
----------
----------
----------
----------

সম্পাদনা করুন: বর্গক্ষেত্র উদাহরণ 16,3,32

---------------+
-------------+++
---------------+

আমি মনে করি আমি সবকিছু আবৃত করেছি। ইনপুটটির কোনও সীমা থাকা উচিত নয়, তবে যদি আপনার প্রোগ্রামের প্রয়োজন হয় তবে এটি 64 * 64 এ ক্যাপ করুন।

বোনাস পয়েন্ট (আমি কি এটি করতে পারি?): ইনপুট জেড> এক্স * ওয়াই হওয়া উচিত নয়, তবে এটি যদি ওয়াই * জেডের চেয়ে বড় হয়, তবে কেন্দ্রটি + গ্রিডের মাঝখানে আউটপুট করুন। সম্পাদনা: ইনপুট জেড এক্স * ওয়াইয়ের চেয়ে বড় হতে পারে না

সম্পাদনা 2:। আশা করি আরও পরিষ্কার হওয়ার জন্য এক্স এবং ওয়াইতে কিছু পরিবর্তন করেছেন

এটি কোড গল্ফ, সংক্ষিপ্ততম কোড জয়।


প্রোগ্রামিং ধাঁধা এবং কোড গল্ফ স্বাগতম! এটি একটি দুর্দান্ত চ্যালেঞ্জ, তবে আমি ভবিষ্যতের চ্যালেঞ্জগুলি স্যান্ডবক্সে পোস্ট করার পরামর্শ দিচ্ছি যেখানে তারা মূল সাইটে পোস্ট হওয়ার আগে প্রতিক্রিয়া পেতে পারে।
betseg

"বোনাস পয়েন্ট" কী সম্পর্কে? সেই সঠিক বৈশিষ্ট্যটি প্রয়োগ করা কি আপনার বাইট-কাউন্টকে সুবিধা দেয়? যদি এটি হয় তবে আপনার স্পষ্ট করে লক্ষ্য করা উচিত এটি কতটা বোনাস। (পার্শ্ব নোট হিসাবে, কোড-গল্ফের বোনাসগুলি সাধারণত নিরুৎসাহিত করা হয় )
জেমস 5

@ বিটসেগ - উফ দুঃখিত, আশা করি আমি এই গুরুত্বপূর্ণ পদক্ষেপটি মিস করে কিছুটা আগ্রহ অর্জন করতে পারি।
জ্যাক হ্যারি

@ ডিআরএমসি মাইলেক্স - উল্লেখযোগ্য, ধন্যবাদ, এখনই বোনাসটি সরিয়ে নিয়েছে।
জ্যাক হ্যারি

2
পোস্ট করার প্রথম দিনটিতে আপনার কোনও উত্তর গ্রহণ করা উচিত নয়, আমি যথেষ্ট বিশ্বাস করি যে কোনও এমএটিএল / জেলি / 05 এএবি 1 ই গল্ফার এটি দেখবে এবং পাইথনের চেয়ে অনেক কম বাইটে সমাধান করবে by আমি মনে করি বেশিরভাগ লোক কমপক্ষে এক সপ্তাহ অপেক্ষা করবেন।
কেডে

উত্তর:


1

পাইথন 2, 172 171 বাইট

def f(x,y,z):A=[['-']*x for _ in' '*y];z-=1;X,Y=z%x,z/x;a=[2,-1];A[Y][X]=A[Y+a[Y>0]][X]=A[Y-a[Y<y-1]][X]=A[Y][X+a[X>0]]=A[Y][X-a[X<x-1]]='+';print'\n'.join(map(''.join,A))

সম্পাদনা করুন: ফাংশনে রূপান্তর করে 1 বাইট সংরক্ষণ করা।

পূর্ববর্তী (আরও পঠনযোগ্য):

x,y,z=inputtt
A=[['-']*x for _ in' '*y]
z-=1
X,Y=z%x,z/x
a=[2,-1]
A[Y][X]=A[Y+a[Y>0]][X]=A[Y-a[Y<y-1]][X]=A[Y][X+a[X>0]]=A[Y][X-a[X<x-1]]='+'
print'\n'.join(map(''.join,A))

সুন্দর কাজ, মনে করি আমি এটি ভেঙে দিয়েছি যদিও 10,100,300 দিয়েছি। মনে হচ্ছে না কি খুব দূরের সীমানায় আচরণ করছে?
জেক হ্যারি

@ জ্যাকহ্যারি আমার জন্য কাজ করে: ideone.com/G2fwV1
টিফিল্ড

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

1

জাভাস্ক্রিপ্ট (ES6), 165 বাইট

(x,y,z,a=[...Array(y)].map(_=>Array(x).fill`-`))=>a.map(a=>a.join``,a[b=--z/x|0][c=z%x]=a[b?b-1:2][c]=a[b][c?c-1:2]=a[y+~b?b+1:y-3][c]=a[b][++c<x?c:x-3]=`+`).join`\n`

1

বেফুঞ্জ, 175 বাইট

>&:10p60p&:00p&1-:10g%:20p\10g/:30p::1+00g-!-\!+2-50p::1+1v
vg02g01*`\4\`0:-g05\!-g03:g00p01-1<g06+p00-1<p04-2+!\-!-g0<
>-!*\10g40g-:0`\4\`**+!2*"+"+10g:#^_$5500g:#^_$$$>:#,_@

এটি অনলাইন চেষ্টা করুন!

প্রথম লাইন (এবং দ্বিতীয় লাইন সম্মুখের দিকে একটি ছোট ধারাবাহিকতা) যেখানে পরামিতি পড়া করছি এবং কয়েক ধ্রুবক গণনা করা হয় - অবস্থানের স্থানাঙ্ক ( LX , ly থেকে ), সেইসাথে স্থায়ী স্থানাঙ্ক যা বন্ধ প্রাণচঞ্চল হিসাব প্রান্ত:

ax = lx - (lx+1==w) + (lx==0) - 2 
ay = ly - (ly+1==h) + (ly==0) - 2

দ্বিতীয় এবং তৃতীয় লাইনগুলি গ্রিডের উচ্চতা এবং প্রস্থের উপরে প্রধান লুপগুলি ধারণ করে, তৃতীয় লাইনের বাম থেকে ডান দিকে ঘুরার আগে প্রথমে ডান থেকে বাম দিকে যেতে মৃত্যুদন্ডের পথ। গ্রিডে প্রতিটি সমন্বয়ের জন্য ( জিএক্স , জিআই ) আমরা নিম্নলিখিত শর্তটি গণনা করি:

(gx==lx && gy>ay && gy<ay+4) || (gy==ly && gx>ax && gx<ax+4)

যদি এই শর্তটি সত্য হয় তবে আমরা "+"স্ট্যাকের উপরে একটি চাপ দিই , যদি মিথ্যা হয় তবে আমরা একটিকে চাপ দিই "-"। এখানে ব্রাঞ্চিং এড়ানোর জন্য, আমরা সত্যিই কেবল ঠেলা দিচ্ছি 43 + 2 * !condition(43 এর সংখ্যার ASCII মান এবং 45 বিয়োগফল)।

লুপগুলি শেষ হয়ে গেলে, কোডের চূড়ান্ত বিটটি হ'ল একটি স্ট্যান্ডার্ড আউটপুট রুটিন যা স্ট্যাকের সমস্ত কিছু প্রিন্ট করে।


0

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

এখনও গল্ফযোগ্য

(w,h,z,t=--z%w,u=z/w|0,r='-'.repeat(w),S=(f,j)=>(r+f+r).substr(w-j,w))=>[...Array(h)].map((q=u-!!u-!(u+1-h),y)=>y-u?y>=q&y<q+3?S('+',t):r:S('+++',t-!!t-!(t+1-w))).join`
`

কম গল্ফড

(w, h, z
, t=--z%w
, u=z/w|0
, r='-'.repeat(w)
, S=(f,j)=>(r+f+r).substr(w-j,w)
) => [...Array(h)].map(
    (q = u-!!u-!(u+1-h), 
     y) => y-u?y>=q&y<q+3?S('+',t):r:S('+++',t-!!t-!(t+1-w))
).join`\n`

পরীক্ষা

F=
(w,h,z,t=--z%w,u=z/w|0,r='-'.repeat(w),S=(f,j)=>(r+f+r).substr(w-j,w))=>[...Array(h)].map((q=u-!!u-!(u+1-h),y)=>y-u?y>=q&y<q+3?S('+',t):r:S('+++',t-!!t-!(t+1-w))).join`
`

function update() {
  var [x,y,z] = I.value.match(/\d+/g)
  O.textContent = F(+x,+y,+z)
}

update()
<input value='5 6 10' oninput='update()' id=I>
<pre id=O>

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