ইউনিকোড আয়তক্ষেত্র


10

প্রদত্ত

  • aথেকে অক্ষরের একটি ম্যাট্রিক্সu=" ╶╺╵└┕╹┖┗╴─╼┘┴┶┚┸┺╸╾━┙┵┷┛┹┻╷┌┍│├┝╿┞┡┐┬┮┤┼┾┦╀╄┑┭┯┥┽┿┩╃╇╻┎┏╽┟┢┃┠┣┒┰┲┧╁╆┨╂╊┓┱┳┪╅╈┫╉╋"
  • হিসাবে একটি submatrix স্থানাঙ্ক x, y, w, h(বাম, শীর্ষ, প্রস্থ> 1, উচ্চতা> 1)
  • একটি বেধ t(হিসাবে 1 ) অথবা 2 (হিসেবে )

বিদ্যমান লাইনগুলিকে বিবেচনা করে নির্দিষ্ট বেধের সাথে সাবম্যাট্রিক্সের জন্য একটি অভ্যন্তরীণ সীমানা রেন্ডার করুন।

x=4;y=1;w=2;h=3;t=2;
a=[' ┌───┐',
   '┌┼┐  │',
   '│└┼──┘',
   '└─┘   ']

// output
r=[' ┌───┐',
   '┌┼┐ ┏┪',
   '│└┼─╂┨',
   '└─┘ ┗┛']

একটি লাইন খণ্ডটি ওভাররাইট করার সময়, নতুন বেধটি পুরানো বেধের চেয়ে বেশি হওয়া উচিত এবং t

এই ইনপুট পার্স বা ইউনিকোড এর Kolmogorov জটিলতা খুঁজে নেওয়ার বিষয়ে নয়, তাই আপনি অনুমান হতে পারে a, u, x, y, w, h, tভেরিয়েবল হিসাবে আপনি উপলব্ধ। এছাড়াও, আপনি ফলটি পরিবর্তন rবা আউটপুট না করে পরিবর্তে পরিবর্তন করতে পারেন, যতক্ষণ rনা একই ধরণের হয় a

যদি আপনার ভাষা আপনাকে ফাংশনগুলিতে কোড (সি, জাভা, হাস্কেল ইত্যাদি) স্থাপন করতে বাধ্য করে এবং আপনার সমাধানটিতে একটি ফাংশন থাকে তবে আপনি ফাংশন শিরোনাম এবং পাদচরণ বাদ দিতে পারেন।

আরও বড় পরীক্ষা:

x=4;y=1;w=24;h=4;t=1;
a=['┏┱─────┐         ┌┐     ┎──┲━┓',
   '┠╂─────┘         ││     ┃  ┗━┛',
   '┃┃               ││     ┃     ',
   '┠╂──┲━━┓  ┏━━━━┓ ││    ┌╂┰┐   ',
   '┃┃  ┗━━┩  ┃    ┃ └╆━┓  └╂┸┘   ',
   '┃┃     │  ┃    ┃  ┃ ┃   ┃     ',
   '┗┹─────┘  ┗━━━━┛  ┗━┛   ╹     ']

// output
r=['┏┱─────┐         ┌┐     ┎──┲━┓',
   '┠╂──┬──┴─────────┼┼─────╂──╄━┛',
   '┃┃  │            ││     ┃  │  ',
   '┠╂──╆━━┓  ┏━━━━┓ ││    ┌╂┰┐│  ',
   '┃┃  ┗━━╃──╂────╂─┴╆━┱──┴╂┸┴┘  ',
   '┃┃     │  ┃    ┃  ┃ ┃   ┃     ',
   '┗┹─────┘  ┗━━━━┛  ┗━┛   ╹     ']

ইনপুট কি সর্বদা ধরে রাখবে 0 <= x < x + w < width(a)এবং 0 <= y < y + h < height(a)?
tsh

@tsh হ্যাঁ, ইনপুট কার্যকর থাকবে
ngn

বাহ, আমার ডিফল্ট ফন্টটি অদ্ভুত - এটি যদি আপনি অনেকটা জুম না করেন তবে ভুল ভারীতার সাথে সেই সমস্ত চরিত্রগুলি দেখায়।
নীল

@ নীল আমি সে সম্পর্কে দুঃখিত। একটি কার্যপ্রণালী হ'ল এমন কোনও সম্পাদককে উদাহরণগুলি আটকানো যেখানে আপনি ফন্টটি চয়ন করতে পারেন।
এনজিএন

1
আপনার অনুগ্রহ সম্পর্কে - তিনটি 150-প্রতিনিধি অনুদান প্রদান অসম্ভব। প্রতিবার একই প্রশ্নে অন্য কোনও অনুগ্রহ শুরু করার সময় আপনাকে প্রতিনিধি গণনা দ্বিগুণ করতে হবে।
এমডি এক্সএফ

উত্তর:


2

জাভাস্ক্রিপ্ট, 218 বাইট

(a,x,y,w,h,t,u)=>a.map((l,j)=>l.map((c,i)=>u[(g=(a,b)=>a?g(a/3|0,b/3|0)*3+Math.max(a%3,b%3):b)(u.indexOf(c),t*((j==y||j==y+h-1)*((i>x&&i<x+w)*9+(i>=x&&i<x+w-1))+(i==x||i==x+w-1)*((j>y&&j<y+h)*3+(j>=y&&j<y+h-1)*27)))]))

a চরের অ্যারে হিসাবে নেওয়া উচিত।


উপরের হিসাবে উল্লেখ করা হয়েছে, আপনি প্রতিস্থাপন করতে অনুমতি দেওয়া হয় (a,x,y,w,h,t,u)=>...সঙ্গেr=...
ngn

2

পাইথন 3 , 226 201 197 বাইট

n,m=x+w-1,y+h-1
r=[*map(list,a)]
R=range
for i in R(x,x+w):
 for j in R(y,y+h):A,B=j in(y,m),i in(x,n);r[j][i]=u[sum(3**o*max((i<n*A,y<j*B,x<i*A,j<m*B)[o]*t,u.index(a[j][i])//3**o%3)for o in R(4))]

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

Ungolfed:

n,m=x+w-1,y+h-1
r=[*map(list,a)]
for i in range(x,x+w):
 for j in range(y,y+h):
  p=u.index(a[j][i])
  c=(p%3,p%9//3,p%27//9,p//27)
  A,B=j in(y,m),i in(x,n)
  P=(i<n*A,y<j*B,x<i*A,j<m*B)
  l=sum(max(P[o]*t,c[o])*3**o for o in range(4))
  r[j][i]=u[l]

(p%3,p%9//3,p%27//9,p//27)[o]p//3**o%3বাইট একটি গুচ্ছ সংরক্ষণ করে। তারপর max(…)*3**o for3**o*max(…)forআরও একটি পরিমাণ সঞ্চয় হয়। এবং তারপরে আপনি 3**ইনলাইন করে Pচারপাশে এলোমেলো করে আরও কিছু উপার্জন করতে পারেন o%5-1, ফলন:sum(o*max((i<n*A,j<m*B,y<j*B,x<i*A)[o%5-1]*t,p//o%3)for o in(1,3,9,27))
লিন

এর, শেষ পদক্ষেপটি একটি খারাপ ধারণা। পরিবর্তে আপনি এটি করতে পারেন R=rangeএবং এটিকে নামাতে পারেন 201
লিন

1

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

r=a.map((l,j)=>l.map((c,i)=>u[c=u.indexOf(c),g=n=>c/n%3<t&&g(n,c+=n),j==y|j==h&&(i>=x&i<w&&g(1),i>x&i<=w&&g(9)),i==x|i==w&&(j>=y&j<h&&g(27),j>y&j<=h&&g(3)),c]),w+=x-1,h+=y-1)

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