স্বচ্ছ বাক্স আঁকুন


15

দ্রষ্টব্য: এসই হরফ অদ্ভুততার কারণে স্ট্রিং আর্টটি এখানে ভয়ঙ্কর দেখাবে: P :(

আয়তক্ষেত্রের কোণগুলিকে উপস্থাপনকারী চার-টিউপলগুলির একটি তালিকা দেওয়া, সেই ক্রমে একে অপরের উপরে স্বচ্ছ আয়তক্ষেত্র আঁকুন।

এই চ্যালেঞ্জের জন্য, আপনার উপরের-বাম কোণে ক্ষুদ্রতম স্থানাঙ্ক এবং ডানদিকে এক্স-অক্ষটি বৃদ্ধি এবং y- অক্ষটি নীচের দিকে বাড়ানো দরকার।

একটি চার-টিউপল (x0, y0, x1, y1)বা একটি আয়তক্ষেত্রের উপরের বাম এবং নীচে-ডান কোণগুলির সমন্বয়যুক্ত জোড়গুলি (x0, x1, y0, y1)উপস্থাপন করে (x, y)(আপনি আয়তক্ষেত্রের জন্য দুটি ফর্ম্যাটগুলির মধ্যে দুটি বেছে নিতে পারেন তবে এটি অবশ্যই সামঞ্জস্যপূর্ণ হতে হবে)

"আড়াআড়ি আয়তক্ষেত্র" বলতে কী বোঝ? ঠিক আছে, এই চ্যালেঞ্জের জন্য, আপনি স্পেস অক্ষর এবং বাক্স-অঙ্কন অক্ষরের বেশিরভাগ ব্যবহার করবেন ; বিশেষত, "গা bold়" অক্ষরগুলি সহ আয়তক্ষেত্রগুলি আঁকতে ব্যবহৃত সমস্তগুলি। যখন একটি রূপান্তরক আয়তক্ষেত্র আঁকানো হয়, তখন স্থানটি দখল করা স্থানের সমস্ত পাতলা রেখাগুলি অদৃশ্য হয়ে যায় এবং সমস্ত গা bold় রেখা পাতলা হয়ে যায় এবং তারপরে আয়তক্ষেত্রটি নিজেই বোল্ড লাইনে টানা হয়।

উদাহরণস্বরূপ, আপনি যদি উপরের-বামে এবং তারপরে নীচে-ডানদিকে একটি আয়তক্ষেত্র আঁকেন, তবে এটি দেখতে এর মতো দেখতে পাবেন:

┏━━━━┓
┃    ┃
┃    ┃
┃ ┏━━╇━━┓
┃ ┃  │  ┃
┗━╉──┘  ┃
  ┃     ┃
  ┃     ┃
  ┗━━━━━┛

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

পরীক্ষার কেস

প্রতিটি পরীক্ষার ক্ষেত্রে ইউনিকোড-আর্টের পরে কিছু সংখ্যক ইনপুট লাইন দেওয়া হবে।

0 0 5 5
5 5 10 10
3 3 7 7
2 2 8 8

┏━━━━┓     
┃    ┃     
┃ ┏━━╇━━┓  
┃ ┃┌─┴─┐┃  
┃ ┃│   │┃  
┗━╉┤   ├╊━┓
  ┃│   │┃ ┃
  ┃└─┬─┘┃ ┃
  ┗━━╈━━┛ ┃
     ┃    ┃
     ┗━━━━┛

14 5 15 9
13 2 15 16
6 4 15 11


             ┏━┓
             ┃ ┃
      ┏━━━━━━╇━┫
      ┃      │ ┃
      ┃      │ ┃
      ┃      │ ┃
      ┃      │ ┃
      ┃      │ ┃
      ┃      │ ┃
      ┗━━━━━━╈━┫
             ┃ ┃
             ┃ ┃
             ┃ ┃
             ┃ ┃
             ┗━┛

6 8 10 11
15 12 16 16
14 10 16 16
9 1 15 15

         ┏━━━━━┓ 
         ┃     ┃ 
         ┃     ┃ 
         ┃     ┃ 
         ┃     ┃ 
         ┃     ┃ 
         ┃     ┃ 
      ┏━━╉┐    ┃ 
      ┃  ┃│    ┃ 
      ┃  ┃│   ┌╊┓
      ┗━━╉┘   │┃┃
         ┃    │┠┨
         ┃    │┃┃
         ┃    │┃┃
         ┗━━━━╈┩┃
              ┗┷┛

আরও পরীক্ষার মামলা জেনারেট!

বিধি

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

কোড-পয়েন্ট

গা bold় এবং হালকা অনুভূমিক এবং উল্লম্ব পাইপগুলি সীমার মধ্যে রয়েছে [U+2500, U+2503]। বিভিন্ন কোণার পাইপগুলি সীমার মধ্যে রয়েছে [U+250C, U+251C)। তিন সজ্জিত পাইপগুলি সীমার মধ্যে রয়েছে [U+251C, U+253C)। চার সজ্জিত পাইপগুলি সীমার মধ্যে রয়েছে [U+253C, U+254C)। আমার প্রোগ্রামে পাওয়া যায় এমন পাইপগুলি বাস্তবে ব্যবহৃত হয় না।


এটা কি আসলে আসকি শিল্প? স্পেসগুলি বাদে এটি কোনও আসকি অক্ষর ব্যবহার করে না।

অ্যাসিইটি -আর্ট তথ্য থেকে @ কায়ারডকোইনরিঙ্গিংহিং ,Typically this uses only 95 printable (from a total of 128) characters defined by the ASCII Standard from 1963.
11'5 এ পুরোপুরি মানবিক


আমরা কি এখান থেকে b / w 220 - 223 চরিত্রটি ব্যবহার করতে পারি? বোল্ড লাইনের জন্য dochome.programbl.com/dochome/sites/default/files/image169.png
মুকুল কুমার

1
@ মুকুলকুমার না, আপনাকে অবশ্যই এই সঠিক অক্ষরগুলি ব্যবহার করতে হবে। অক্ষরের পুরো সেটটির কোনও ক্রমের কোনও অনুলিপিযুক্ত স্ট্রিং আপনাকে ইনপুট হিসাবে গ্রহণ করার অনুমতি দেওয়া হয় যাতে অক্ষরগুলিকে হার্ডকোডিং বাইট / অক্ষর নষ্ট করতে হয় না
হাইপারনিউটারিনো

উত্তর:


3

পাইথন 3 , 289 286 বাইট

l,u=eval(input())
*_,w,h=map(max,zip(*l))
r=[*map(list,[' '*-~w]*-~h)]
R=range
for x,y,X,Y in l:
 for i in R(x,X+1):
  for j in R(y,Y+1):Q=i<X,y<j,x<i,j<Y;r[j][i]=u[sum(3**o*max(Q[o]*[j in(y,Y),i in(x,X)][o%2]*2,u.index(r[j][i])//3**o%3-Q[o])for o in R(4))]
for l in r:print(''.join(l))

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

4-tuples একটি তালিকা হিসাবে ইনপুট লাগে: (x0, y0, x1, y1), নিম্নরূপ pipedrawing অক্ষর সহ:" ╶╺╵└┕╹┖┗╴─╼┘┴┶┚┸┺╸╾━┙┵┷┛┹┻╷┌┍│├┝╿┞┡┐┬┮┤┼┾┦╀╄┑┭┯┥┽┿┩╃╇╻┎┏╽┟┢┃┠┣┒┰┲┧╁╆┨╂╊┓┱┳┪╅╈┫╉╋"

শূন্য প্রস্থ বা উচ্চতার বক্সগুলিতে সমর্থন করে (সমস্ত বক্স অঙ্কন অক্ষর ব্যবহার করে)।

উপর ভিত্তি করে আমার উত্তর থেকে এই প্রশ্নের , কিন্তু অঙ্কন দ্বিতীয় বিদ্যমান বাক্সে রুপান্তরিত করা হয়েছে।

'Ungolfed':

u=" ╶╺╵└┕╹┖┗╴─╼┘┴┶┚┸┺╸╾━┙┵┷┛┹┻╷┌┍│├┝╿┞┡┐┬┮┤┼┾┦╀╄┑┭┯┥┽┿┩╃╇╻┎┏╽┟┢┃┠┣┒┰┲┧╁╆┨╂╊┓┱┳┪╅╈┫╉╋"

#Create array of spaces:
l=eval(input())
w,h=list(map(max,zip(*l)))[2:]
r=[[' ']*w for _ in' '*h]

for x,y,X,Y in l:
 n,m=X-1,Y-1
 for i in range(x,X):
  for j in range(y,Y):
   A,B=j in(y,m),i in(x,n)
   P=(i<n*A,y<j*B,x<i*A,j<m*B)   # Pipe sides of the new box
   Q=(i<n,y<j,x<i,j<m)           # Pipe sides that are inside the new box, and should be thinned.
   # Get new pipe (sides of new box, on top of thinned pipes of existing boxes. (u.index... is existing pipe))
   l=sum(3**o*max(P[o]*2,(u.index(r[j][i])//3**o%3)-Q[o])for o in range(4))
   #Add to 'canvas'
   r[j][i]=u[l]

print('\n'.join(''.join(l)for l in r))

আপনি uইনপুট হিসাবে নিতে পারেন ।
হাইপারনিউটারিনো

@ হাইপার নিউট্রিনো ধন্যবাদ :)
টিফিল্ড

তুমি তোমার অপ্রয়োজনীয় পরিবর্তনশীল চরিত্রে অভিনয় দ্বারা প্রতিস্থাপিত একটি বাইট সংরক্ষণ করতে পারবেন _,_,w,h=সঙ্গে *_,w,h=
জোনাথন ফ্রেচ

এছাড়াও, আপনার টুপল অ্যাসাইনমেন্টটির জন্য Qকোনও বন্ধনী প্রয়োজন নেই, দুটি সংরক্ষণ করা বাইটের জন্য Q=(i<X,y<j,x<i,j<Y);প্রতিস্থাপন করা যেতে পারে Q=i<X,y<j,x<i,j<Y;
জোনাথন ফ্রেচ


2

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

(a,u,m=n=>[...Array(1+Math.max(...a.map(t=>t[n])))])=>m(3).map((_,j)=>m(2).map((_,i)=>u[a.reduce((c,[x,y,v,w])=>i<x|j<y|i>v|j>w?c:(g=n=>c-=c/n%3|0&&n,h=n=>c+=n*(2-(c/n%3|0)),[i>x&&9,i<v].map(j>y&j<w?g:h),[j>y&&3,j<w&&27].map(i>x&i<v?g:h),c),0)]).join``).join`\n`

যেখানে \nআক্ষরিক নিউলাইন চরিত্রের প্রতিনিধিত্ব করে। আমার কাজের উপর ভিত্তি করে ইউনিকোড আয়তক্ষেত্র । ব্যাখ্যা: ফাঁকা স্ট্রিংগুলির একটি অ্যারে ভিতরে আঁকতে তৈরি করা হয় Each বাক্সের বাইরে থাকা অক্ষরগুলি তখন উপেক্ষা করা হয় তবে কিনারা বা অভ্যন্তরের অংশগুলি আরও প্রক্রিয়া করা হয়। চারটি লাইন বিভাগের প্রতিটি একটি চরিত্র তৈরির জন্য (প্রতিটি 3 টির শক্তি দ্বারা প্রতিনিধিত্ব করা) সেখানে তিনটি সম্ভাবনা রয়েছে; ক) বিভাগটি বাক্সের ঠিক বাইরে রয়েছে এবং এড়িয়ে যাওয়া উচিত (3 এর পাওয়ার পরিবর্তে 0 পরামিতি পেরিয়ে খ) খ) অংশটি বাক্সের প্রান্তে অবস্থিত এবং গা bold় হওয়া উচিত ( hফাংশনটি কল করার মাধ্যমে ) গ) বিভাগটি বাক্সের অভ্যন্তরে অবস্থিত এবং হালকা করা উচিত (ডাকে কল করার জন্য এটি অর্জন করা হবে)gফাংশন)। অক্ষরটি তখন ইউনিকোড স্ট্রিংয়ে সূচিযুক্ত হয়। সমস্ত বাক্সগুলি অ্যারে প্রক্রিয়া করা হয়ে গেলে তারপরে নতুন লাইনে যোগ দেওয়া হয়।

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