यूनिकोड आयतें


10

दिया हुआ

  • aसे वर्णों का एक मैट्रिक्सu=" ╶╺╵└┕╹┖┗╴─╼┘┴┶┚┸┺╸╾━┙┵┷┛┹┻╷┌┍│├┝╿┞┡┐┬┮┤┼┾┦╀╄┑┭┯┥┽┿┩╃╇╻┎┏╽┟┢┃┠┣┒┰┲┧╁╆┨╂╊┓┱┳┪╅╈┫╉╋"
  • के रूप में एक submatrix के निर्देशांक x, y, w, h(बाएं, ऊपर, चौड़ाई> 1, ऊंचाई> 1)
  • t1 की मोटाई (के रूप में ) या 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

बाह, मेरा डिफ़ॉल्ट फॉण्ट डोडी है - यह उन पात्रों में से कुछ को गलत भारीपन के साथ दिखाता है जब तक कि आप बहुत अधिक ज़ूम नहीं करते।
नील

@ नील मुझे इस बारे में खेद है। एक वर्कअराउंड एक संपादक में उदाहरण पेस्ट करना है जहां आप फ़ॉन्ट चुन सकते हैं।
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

जावास्क्रिप्ट (ईएस 6), 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)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.