বাক্সটি টগল করুন!


9

একটি স্ট্রিং দেওয়া হয়েছে যা সম্ভাব্যভাবে বাক্সে রয়েছে, বাক্সটি টগল করুন। এটি পরীক্ষার কেস এবং ব্যাখ্যাগুলিতে আরও স্পষ্ট হয়ে ওঠে।

ইনপুট আউটপুট

ছক পূরণ করা

ইনপুটটি হয় সিআর, এলএফ, বা সিআরএলএফ দ্বারা বিভক্ত একক স্ট্রিং বা স্ট্রিংয়ের একটি তালিকা। ইনপুট ফর্ম্যাটটি সিদ্ধান্ত নিতে আপনার উপর নির্ভর করে।

আউটপুট ফরমেট

আউটপুট ফর্ম্যাটটি অবশ্যই ইনপুট হিসাবে একই ফর্ম্যাটে থাকতে হবে।

ব্যাখ্যা + উদাহরণ

উদাহরণস্বরূপ একটি বাক্সযুক্ত স্ট্রিং নেওয়া যাক:

+-------------+
|Hello, World!|
+-------------+

বাক্সটি টগল করতে, আমরা প্রথম এবং শেষ সারি এবং প্রথম এবং শেষ কলামটি সরিয়ে ফেলি। আপনি ধরে নিতে পারেন যে শেষ লাইনের পরে কোনও শেষের শ্বেত স্পেস থাকবে না (শেষ লাইনের শেষে alচ্ছিক ট্রেলিং নিউলাইন সহ) এবং কোনও লাইনে কোনও পেছনের শ্বেত স্পেস থাকবে না, অবশ্যই নতুন লাইনের গণনা করা হবে না।

এটি হয়ে যাবে:

Hello, World!

অন্যান্য উপায়

স্ট্রিং যদি না একটি বাক্সে, এটি একটি বক্স যোগ করুন। এটি মোটামুটি সহজ; শুরুতে যোগ +---...---+দিয়ে তার নিজস্ব লাইনে kড্যাশ যেখানে kপ্রতিটি লাইনে জন্য দীর্ঘতম লাইনের দৈর্ঘ্য হল, এবং তারপর, trailing হোয়াইটস্পেস শুরুতে যোগ দীর্ঘতম লাইনের দৈর্ঘ্য মেলে এবং তারপর একটি নল চরিত্র সংযোজন সঙ্গে প্যাড এটা ( "|")। শেষ অবধি +---...---+, প্রথম লাইনের সমান সেটআপযুক্ত একটি লাইন যুক্ত করুন ।

উদাহরণ স্বরূপ:

Hello, World!

হয়ে:

+-------------+
|Hello, World!|
+-------------+

আপনি ধরে নিতে পারেন যে ইনপুটটির কোনও রেখায়ই সাদা সাদা স্থান থাকবে না।

স্ট্রিংয়ের আরেকটি উদাহরণ যা তার চারপাশে একটি বাক্স রাখা উচিত:

Hello,
    World!

হয়ে

+----------+
|Hello,    |
|    World!|
+----------+

এমন কিছুর উদাহরণ যা এখনও বাক্সে রাখা উচিত:

+--------+
|        |
 --------+

হয়ে:

+----------+
|+--------+|
||        ||
| --------+|
+----------+

বিধি + বিশেষ উল্লেখ

  • স্ট্যান্ডার্ড লুফোলস প্রয়োগ করুন
  • ইনপুটটির কোনও লাইনেই বাক্সবিন্যাস করা হয়েছে কিনা তা নির্বিশেষে সামগ্রিকভাবে এবং প্রতিটি লাইনে কোনও নেতৃস্থানীয় বা চলমান শ্বেতস্পেস থাকবে না
  • বাক্সগুলির কেবল +তাদের কোণ হিসাবে এবং |উল্লম্ব প্রান্তগুলির -জন্য এবং অনুভূমিক পক্ষগুলির জন্য থাকবে।
  • বাক্স হিসাবে বিবেচিত হওয়ার জন্য একটি বাক্সের অবশ্যই তার প্লাসগুলি থাকতে হবে; যদি এটির উচ্চতা বা প্রস্থ 2 (এটি কোনও সামগ্রী নয়) থাকে তবে এটি এখনও বাক্সবিন্যাস করা উচিত যা বাক্সের উচ্চতার উপর নির্ভর করে একগুচ্ছ নিউলাইনগুলি তৈরি করে।
  • যদি ইনপুটটিতে বাক্সের বাইরে একটি বাক্স থাকে তবে পাঠ্য থাকে তবে পুরো জিনিসটি বক্স করা উচিত।
  • আপনার প্রোগ্রামটি অবশ্যই স্ট্রিংয়ের পুরো পরিধি পরীক্ষা করবে। যদি বাইরের একক অক্ষরটি সঠিক না হয় (হয় অনুপস্থিত বা এটির চেয়ে আলাদা চরিত্র) তবে এটি বাক্সবিন্যাস করা উচিত, আনবক্স করা উচিত নয়।
  • আনবক্সযুক্ত স্ট্রিং এ নিজেই থাকতে পারে + | -। যদি আনবক্সড স্ট্রিংয়ের চারপাশে একটি বাক্স থাকে তবে বাক্সটি দিয়ে স্ট্রিংটি ফিরিয়ে দিন; এটি একবারে আনবক্স করা উচিত।

এজ কেস

1: ছোট বাক্স

ইনপুট:

++
++

আউটপুট একটি খালি বা একটি নতুন লাইন

ইনপুট:

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

আউটপুট খালি বা একটি নতুন লাইন

ইনপুট:

++
||
||
++

আউটপুট 2 নিউলাইন বা 3 টি নতুন লাইন

2: আংশিক বক্স

ইনপুট:

+-------+
| Hello |
+ ------+

আউটপুট:

+---------+
|+-------+|
|| Hello ||
|+ ------+|
+---------+

3: বাক্সের বাইরে পাঠ্য

ইনপুট:

 +-------+
a| Hello |
 +-------+

আউটপুট:

+----------+
| +-------+|
|a| Hello ||
| +-------+|
+----------+

1
"ইনপুটটির কোনও লাইনেই বাক্সবিন্যাস করা হয়েছে কিনা তা নির্বিশেষে সামগ্রিকভাবে এবং প্রতিটি লাইনে কোনও নেতৃস্থানীয় বা চলমান শ্বেত স্পেস থাকবে না।" আপনার বেশ কয়েকটি পরীক্ষার ক্ষেত্রে নেতৃস্থানীয় সাদা স্থান রয়েছে। আয়তক্ষেত্রাকার ইনপুট জিজ্ঞাসা করা খুব বেশি হবে?
নীল

@ নীল তার সম্ভবত কোনও সুসংগত নেতৃত্বাধীন শ্বেতস্পেসের অর্থ হ'ল , অর্থাৎ 3 স্পেস দিয়ে শুরু হওয়া প্রতিটি লাইন কেস হবে না তবে 1, 2, 0, 3 স্পেস দিয়ে শুরু হওয়া লাইনগুলি যেহেতু এটি ধারাবাহিক নয়।
এরিক আউটগল্ফার

কি এই একটি বক্স বা না?
ব্যবহারকারী 41805

@Cowquack অনুমান থেকে এটি মনে হয় না।
এরিক দি আউটগল্ফার

@ নীল দুঃখিত, আমি বোঝাতে চাইছি শুরুতে যে কোনও স্পেস এটিকে বাক্স হিসাবে নয় re
হাইপার নিউট্রিনো

উত্তর:


6

জাভাস্ক্রিপ্ট (ES2017), 199 বাইট

s=>/^\+-*\+\n(\|.*\|\n)*\+-*\+$/.test(s,s=s.split`
`,s.map(z=>z[y]?y=z.length:0,y=0))?s.slice(1,-1).join`
`.replace(/.(.*)./g,"$1"):(x=`+${'-'.repeat(y)}+`)+`
|${s.map(z=>z.padEnd(y)).join`|
|`}|
`+x

নিষ্পাপ সমাধান। সেরা হোক বা না হোক, আমরা দেখব ...


"সেরা হোক বা না হোক, আমরা দেখতে পাব ..." এখনও <200 বাইটে এটি সমাধানের জন্য জেএস-এর মতো নন-গল্ফিং ভাষা দেখতে খুব ভাল লাগছে ... দেখুন আমি সেখানে কী করেছি? ;)
এরিক দি আউটগল্ফার

হাহা, "এখন 2 ডলারের নিচে!" যখন এটির দাম হয় 1.99: পি
ETH প্রোডাকশনগুলি

এটিকে বলা হয় শিল্প ডাকাতি লল।
এরিক দি আউটগল্ফার

এই পরীক্ষাটি ক্ষেত্রে জন্য কাজ করে, কিন্তু আমি এটা ভালো কিছু কাজ করে তা মনে করি না: '+--+\n|hi|\n|world|\n+----------+'। এটি আয়তক্ষেত্রাকার না হলেও লাইনগুলি সরিয়ে দেয়।
রিক হিচকক

3

এসওজিএল ভি0.12 , 72 বাইট

2-┌* +1Ο;2-⁴┌@ŗΖ+|ŗ∙⁴++B
▓Aa1w⁄;lGB╬8a⁰I{_=}¹χ?ajk{jk}⁰←a1w⁄;l2+G2+B00╬5

এখানে চেষ্টা করুন!

+7 বাইট ( ⁰I{_=}¹χ) কারণ এলিটওয়্যার সমান সমান
+1 বাইট ( ) প্রয়োগ করা হয়নি কারণ ইনপুটটি আমার জন্য অলস এবং টাইপড ইনপুটগুলি বাস্তবায়ন না করার জন্য বর্গ
+1 বাইট ( A) হওয়ার নিশ্চয়তা দেয় না (সুতরাং এটি স্ট্যাকের উপর ইনপুট আশা করে For সহজেই ব্যবহারযোগ্য, অনলাইন লিঙ্কটিতে অন্তর্ভুক্ত রয়েছে → সুতরাং ইনপুট বাক্সটি ব্যবহার করা যেতে পারে)


⁰I{_=}¹χ+8 বাইট হয় না +7।
এরিক আউটগল্ফার

@EriktheOutgolfer ভাল প্রতিস্থাপন হওয়া উচিত =, কিন্তু যে না কাজ করে, এটা দ্বারা -1 + 8 থেকে = +7 দৈর্ঘ্য পরিবর্তন
dzaima

2

জেলি , 46 বাইট

ẋ2jЀ
z©⁶”|çZṖ”-çµḢ⁾-+yWWçWẎZ
ḊṖZḊṖÇ
Ỵ®2ĿÇ⁼$?Y

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


উম এই আয়তক্ষেত্রটি তৈরি করার সময় ইনপুটটি স্থানান্তরিত করে (জিপস)
হাইপারনিউটারিনো

@ হাইপার নিউট্রিনো আমি যখন উত্তর দিয়েছি তখন তা করা আমার মনে নেই ...
এরিক দ্য আউটগল্ফার

2

রেটিনা , 197 195 বাইট

+m`^((.)*)(¶(?<-2>.)*(?(2)$|(.)))
$1$#4$* $3$#2$* 
%`^|$
|
^.(.*).
+$.1$*-+¶$&
.(.*).$
$&¶+$.1$*-+
^(\+-*\+)¶(\|\+-*\+\|)¶(\|\|.*\|\|¶)*\2¶\1$
¶$&¶
..(.*)..(?=(.|¶)*¶$)
$1
^¶-*¶-*¶|(\G|¶)-*¶-*¶$

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

+m`^((.)*)(¶(?<-2>.)*(?(2)$|(.)))
$1$#4$* $3$#2$* 

এই পর্যায়টি নিজের মধ্যে বেশ জটিল, তাই আমি এটি কিছুটা ভেঙে দেব। +এর অর্থ হ'ল মঞ্চটি পুনরাবৃত্তি করে যতক্ষণ না কোনও প্রতিস্থাপন পাওয়া যায় না। m`^মানে যে কোনও পংক্তির শুরুতে মঞ্চটি মেলে। ((.)*)তারপরে পুরো লাইনের সাথে মেলে। এখন $1কেবল মিলিত লাইন, তবে $2ম্যাচের তালিকাগুলি হ'ল অক্ষর। তারপরে লাইনের শেষের সাথে এবং পরবর্তী লাইনের শুরুটির সাথে মিল রয়েছে matches (?<-2>.)*.NET ব্যালেন্সিং গ্রুপ ব্যবহার করে। <-2>থেকে সরিয়ে ম্যাচ $2দীর্ঘ একটি অক্ষর হিসেবে দ্বিতীয় লাইনে মিলেছে করা যেতে পারে। এই সময়ে, তিনটি জিনিসের একটি ঘটতে পারে:

  • দ্বিতীয় লাইনে পর্যাপ্ত অক্ষর নেই। $2এখনও কিছু ম্যাচ বাকি আছে।
  • দুটি লাইন ঠিক একই দৈর্ঘ্য ছিল। $2কোনও মিল নেই, এবং আমরা লাইনের শেষে আছি।
  • দ্বিতীয় লাইনটি দীর্ঘ, সুতরাং কমপক্ষে একটি অক্ষর বাকি আছে।

(?(2)$|(.)))একটি শর্ত ব্যবহার করে এগুলিকে আলাদা করতে সহায়তা করে। যদি $2এখনও কিছু ম্যাচ বাকি থাকে, তবে আমাদের এটি হওয়া দরকার কারণ দ্বিতীয় লাইনটি খুব সংক্ষিপ্ত, তাই আমরা লাইনের শেষের সাথে মিলিত হই, তবে যদি $2কোনও মিল না থেকে থাকে তবে আমরা দ্বিতীয় লাইনটি দীর্ঘতর করতে চাই, তাই আমরা ম্যাচ করব একটি চরিত্র (যা এর মধ্যে চলে যায় $4যাতে আমরা জানি যে ম্যাচটি ঘটেছে)। অন্যথায় দুটি লাইন একই দৈর্ঘ্য এবং ম্যাচটি এই সময়ে ব্যর্থ হয় (এটি অবশ্যই পরবর্তী লাইনে আবার মিলতে পারে)।

প্রতিস্থাপন স্ট্রিং হয় $1$#4$* $3$#2$*$#4মূল্যায়ণ 1যদি আমরা দ্বিতীয় লাইন একটি অতিরিক্ত চরিত্র মিলেছে 0যদি না। এর অর্থ $#4$*এটি দ্বিতীয় লাইনের বেশি হলে প্রথম লাইনে একটি স্থান যুক্ত করে। একইভাবে $#2$*দ্বিতীয় লাইনে স্পেস যুক্ত করে যদি প্রথম লাইন দীর্ঘ হয় adds (আসলে, এটি স্পেসের সঠিক সংখ্যার যোগ করে শেষ হয় we আমরা কেবল দুটি লাইনের মধ্যে ভারসাম্য বজায় রাখলে +লম্বা দ্বিতীয় লাইনের ক্ষেত্রেও এটি অর্জনের জন্য চতুর্থ ক্যাপচার গ্রুপে একটি যুক্ত করা যেত))

এই সমস্ত কিছুর ফলাফল এটি এই পর্যায়টি একটি আয়তক্ষেত্রের ইনপুট আউট প্যাড করে। আমরা এখন এটির চারপাশে একটি বাক্স আঁকতে পারি।

%`^|$
|

|প্রতিটি পাশে s রাখুন ।

^.(.*).
+$.1$*-+¶$&

+-...-+উপরে রাখুন ।

.(.*).$
$&¶+$.1$*-+

এবং আবার নীচে।

^(\+-*\+)¶(\|\+-*\+\|)¶(\|\|.*\|\|¶)*\2¶\1$
¶$&¶

দেখুন আমরা একটি ডাবল বাক্স তৈরি করেছি কিনা। যদি তা হয়, তবে উভয় বাক্স মুছে ফেলতে বাকী পর্যায়ে ম্যাচের জন্য উপরে এবং নীচে অতিরিক্ত ফাঁকা রেখা যুক্ত করা হয়।

..(.*)..(?=(.|¶)*¶$)
$1

যদি একটি ফাঁকা ফাঁকা রেখা থাকে তবে প্রতিটি লাইনের শুরু এবং শেষ থেকে দুটি অক্ষর সরিয়ে ফেলুন।

^¶-*¶-*¶|(\G|¶)-*¶-*¶$

যদি নেতৃস্থানীয় ফাঁকা রেখা থাকে তবে এটি এবং পরবর্তী দুটি লাইন মুছুন (যা -বাক্সের শীর্ষে থাকবে remaining যদি একটি ফাঁকা ফাঁকা রেখা থাকে তবে এটি এবং আগের দুটি লাইন মুছুন। (\G|¶)কেস যেখানে মাত্র ছয় লাইন (এবং 5 আছে সাথে চুক্তি গুলি) কারণ বক্স কোনো বিষয়বস্তু ছিল।

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