সরলীকৃত কর্নিং প্রয়োগ করুন


24

ভূমিকা

কার্নিংয়ের অর্থ কোনও পাঠ্যের অক্ষরের মধ্যে ব্যবধানকে সামঞ্জস্য করা। উদাহরণ হিসাবে, Topনিম্নলিখিত তিনটি গ্লাইফ দিয়ে লেখা শব্দটি বিবেচনা করুন :

##### ..... .....
..#.. ..... .....
..#.. ..##. .###.
..#.. .#..# .#..#
..#.. .#..# .#..#
..#.. ..##. .###.
..... ..... .#...
..... ..... .#...

আমরা কেবল গ্লাইফগুলির মধ্যে ফাঁকগুলি বিন্দু দিয়ে পূরণ করতে পারি এবং এটি দিয়ে সম্পন্ন করতে পারি তবে ফাঁকগুলি কোনওভাবে খুব প্রশস্ত দেখায়। পরিবর্তে, আমরা গ্লিফগুলি বাম দিকে স্লাইড করি যাতে তারা প্রায় স্পর্শ করে:

#####........
..#..........
..#..##..###.
..#.#..#.#..#
..#.#..#.#..#
..#..##..###.
.........#...
.........#...

এটি আরও ভাল দেখাচ্ছে! বারটি কীভাবে Tবাম সীমানার উপরে রয়েছে তা নোট করুন o। এই চ্যালেঞ্জটিতে আপনার কাজ হ'ল এই জাতীয় আয়তক্ষেত্রাকার গ্লাইফগুলির জন্য একটি সহজ কার্নিং প্রোগ্রাম কার্যকর করা।

কার্নিং প্রক্রিয়া

একই আকারের .এবং দুটি আয়তক্ষেত্রাকার 2D অক্ষরের অ্যারে বিবেচনা করুন #। আমাদের সহজ কার্নিং প্রক্রিয়াতে, আমরা প্রথমে অ্যারেগুলি পাশাপাশি রাখি, .এর মধ্যে একটি কলামের মাঝে। তারপরে, আমরা প্রতিটি #ডান অ্যারে এক ধাপ বাম দিকে সরানো , যতক্ষণ না কিছু #বাম এবং ডান অ্যারের orthogonally বা ত্রিভুজ সংলগ্ন হয়। কার্নিংয়ের ফলাফলটি আমরা সংলগ্ন গুলি প্রবর্তনের আগে পদক্ষেপ introduce #আপনার কাজটি এই প্রক্রিয়াটি বাস্তবায়ন করা।

একটি উদাহরণ নেওয়া যাক:

Inputs:
..###
#....
#....
..##.

...#.
...##
..###
....#

Process:
..###....#.
#........##
#.......###
..##......#

..###...#.
#.......##
#......###
..##.....#

..###..#.
#......##
#.....###
..##....#

..###.#.
#.....##
#....###
..##...#

..####.
#....##
#...###
..##..#

শেষ অ্যারেতে, আমাদের সাথে নতুন সংলগ্ন জোড়া রয়েছে #, তাই দ্বিতীয় থেকে শেষের অ্যারেটি কার্নিং প্রক্রিয়ার ফলাফল।

ইনপুট এবং আউটপুট

সরলতার জন্য আপনার কেবল দুটি গ্লাইফের কার্নিং পরিচালনা করতে হবে । আপনার ইনপুটগুলি দুটি আয়তক্ষেত্রাকার 2 ডি অ্যারে, নিম্নলিখিত ফর্ম্যাটগুলির মধ্যে একটি:

  • পূর্ণসংখ্যার 2D অ্যারে, 0 টির জন্য .এবং 1 টির জন্য #
  • একাধিক স্ট্রিং শেষ হয়েছে .#
  • স্ট্রিং এর অ্যারে .#
  • অক্ষরের 2D অ্যারে .#

যদি ইনপুটগুলি একক স্ট্রিং হিসাবে নেওয়া হয় তবে আপনি যে কোনও যুক্তিসঙ্গত ডিলিমিটার ব্যবহার করতে পারেন। তবে, ডিলিমিটারটি দুটি অ্যারের মধ্যে যেতে হবে, এর অর্থ আপনাকে ইতিমধ্যে জোড়া লাগানো সারি-সারি দুটি ইনপুট গ্রহণ করার অনুমতি নেই।

আপনার আউটপুটটি এই দুটি অ্যারেতে প্রয়োগ করা কার্নিং প্রক্রিয়ার ফলাফল যা ইনপুটগুলির একই আকারে একটি আয়তক্ষেত্র 2D অ্যারে। আপনাকে যে কোনও সংখ্যক নেতৃস্থানীয় বা অনুসরণকারী কলাম যুক্ত করতে বা মুছে ফেলার অনুমতি দেওয়া হয়েছে তবে .আউটপুট অবশ্যই আয়তক্ষেত্রাকার এবং ইনপুটগুলির সমান উচ্চতা থাকতে হবে। এটি নিশ্চিত হয় যে দ্বিতীয় ইনপুটটির বাম প্রান্তটি প্রথম ইনপুটটির বাম প্রান্তে স্লাইড হওয়ার আগে কার্নিং প্রক্রিয়াটি শেষ হবে।

বিধি এবং স্কোরিং

প্রতিটি প্রোগ্রামিং ভাষার জিততে সর্বনিম্ন বাইট গণনা। স্ট্যান্ডার্ড বিধি প্রযোজ্য।

পরীক্ষার মামলা

অনুলিপি-পেস্টিংয়ে সহায়তা করার জন্য, এই পরীক্ষার কেসগুলি স্ট্রিংয়ের তালিকা হিসাবে দেওয়া হয়।

["#"] ["#"] -> ["#.#"]
["#.","..",".#"] ["##","..","##"] -> ["#..##",".....",".#.##"]
["..#","#..","#.."] ["...","..#","###"] -> ["..#..","#...#","#.###"]
["###.","##..","#...","...."] ["....","...#","..#.",".#.."] -> ["###..","##..#","#..#.","..#.."]
["..##...","#......","#......"] [".....##",".....##",".#...#."] -> ["..##..##","#.....##","#.#...#."]
["...#.",".....",".....",".....","....#"] [".....","....#","#....",".....","....."] -> ["...#..",".....#",".#....","......","....#."]
["..#..",".....",".....",".....","....#"] [".....","....#","#....",".....","....."] -> ["..#..","....#","#....",".....","....#"]
["######","#.....","#.....","#.....","######"] ["......",".....#",".#...#",".....#","......"] -> ["######..","#......#","#..#...#","#......#","######.."]
["######","#.....","#.....","#.....","######"] ["......","......",".#....","......","......"] -> ["######","#.....","#.#...","#.....","######"]
["#...#","#..#.","#.#..","##...","#.#..","#..#.","#...#"] ["...#.","..#..",".#...",".#...",".#...","..#..","...#."] -> ["#...#..#","#..#..#.","#.#..#..","##...#..","#.#..#..","#..#..#.","#...#..#"]
code-golf  grid  code-challenge  atomic-code-golf  code-golf  combinatorics  probability-theory  card-games  code-golf  number  geometry  code-golf  decision-problem  chess  code-golf  math  number  sequence  code-golf  string  regular-expression  code-golf  arithmetic  integer  code-golf  math  array-manipulation  code-golf  number  decision-problem  integer  code-golf  string  ascii-art  kolmogorov-complexity  code-golf  decision-problem  graph-theory  binary-matrix  code-golf  string  parsing  code-golf  string  code-golf  morse  code-golf  code-golf  string  code-golf  ascii-art  cellular-automata  code-golf  binary  base-conversion  code-golf  arithmetic  decision-problem  integer  checksum  code-golf  matrix  linear-algebra  code-golf  code-golf  game  code-golf  sequence  binary  code-golf  combinatorics  optimization  code-golf  decision-problem  quine  code-golf  rational-numbers  bitwise  code-golf  string  permutations  code-golf  kolmogorov-complexity  unicode  code-golf  ascii-art  number  code-golf  number  integer  binary  base-conversion  code-golf  array-manipulation  code-golf  chemistry  code-golf  number  sequence  fibonacci  code-golf  matrix  optimization  code-golf  number  code-golf  math  number  sequence  code-golf  math  array-manipulation  matrix  linear-algebra  code-golf  kolmogorov-complexity  cops-and-robbers  cops-and-robbers  code-golf  tips  basic  code-golf  decision-problem  binary  tiling  game  king-of-the-hill  python  code-golf  c  code-golf  ascii-art  code-golf  string  kolmogorov-complexity  alphabet  code-golf  number  code-golf  string  code-golf  number  sequence  integer  code-golf  number  permutations  restricted-complexity  restricted-time 

দৃষ্টিগোচরকারী । টেস্ট কেস 5 টি ভুল বলে মনে হচ্ছে।
ব্যবহারকারী 202729

@ ব্যবহারকারী 202729 ধন্যবাদ, এটি এখন ঠিক করা হয়েছে। আমি স্যান্ডবক্সে পরীক্ষার কেসগুলি ঠিক করার কয়েক দফা পেরিয়েছি এবং দৃশ্যত সেটিকে মিস করেছি।
Zgarb

এছাড়াও যদি দুটি চরিত্র একে অপরের মধ্যে "পড়ে" তবে প্রোগ্রামটি কী করা উচিত?
ব্যবহারকারী 202729

@ user202729 আপনি ধরে নিতে পারেন যে এটি হবে না। "ইনপুট এবং আউটপুট" বিভাগের শেষ বাক্যটি দেখুন।
Zgarb

উত্তর:




2

রেটিনা , 223 বাইট

+`(.+)¶(¶(.+¶)*)(\W+(¶|$))
$2$1i$4
T`.`i`\.*i\.*
+`(¶(.)*#.*i.*¶(?<-2>.)*)i
$1@
+`(¶(.)*)i(.*¶(?<-2>.)*(?(2)(?!))#.*i)
$1@$3
T`i@`.`i*[#@]+i
mT`.`i`\.+i+$
msT`i`.`.*^\W+$.*
+`(\b(i+)\W+\2i*)i
$1.
+s`\bi((i+).+\b\2\b)
.$1
i

এটি অনলাইন চেষ্টা করুন!লিঙ্কটিতে দুটি নতুনলাইন-বিসীমাবদ্ধ স্ট্রিংগুলির পছন্দসই ইনপুট বিন্যাসে পুনরায় ফর্ম্যাট করার জন্য পরীক্ষার কেস প্লাস এবং শিরোনাম স্ক্রিপ্ট অন্তর্ভুক্ত। এটি অত্যধিক দীর্ঘ মনে হচ্ছে তবুও সম্ভবত এমন একটি প্রান্তের মামলা রয়েছে যা আমি উপেক্ষা করেছি, তবে এটি এখন পরীক্ষার সমস্ত ক্ষেত্রে কমপক্ষে পাস করে। ব্যাখ্যা:

+`(.+)¶(¶(.+¶)*)(\W+(¶|$))
$2$1i$4

iবিভাজক হিসাবে একটি চিঠি ব্যবহার করে দুটি ইনপুট অ্যারে একসাথে যোগদান করুন । (এটি \Wএবং এর ব্যবহারের অনুমতি দেয়\b পরে পরে ))

T`.`i`\.*i\.*

সমস্ত .এস পরিবর্তন করুনi যোগদানের এ গুলি।

+`(¶(.)*#.*i.*¶(?<-2>.)*)i
$1@

সমস্ত পরিবর্তন করুন iনিচের গুলি #করার গুলি@ গুলি।

+`(¶(.)*)i(.*¶(?<-2>.)*(?(2)(?!))#.*i)
$1@$3

সমস্ত পরিবর্তন করুন iউপরে গুলি #করার গুলি@ গুলি।

T`i@`.`i*[#@]+i

সমস্ত @s .গুলি s তে পরিবর্তন করুন , এর সাথে s বা s iএর সংলগ্ন সমস্ত @s #গুলি।

mT`.`i`\.+i+$

যদি কোনওটির #পরে না থাকে iতবে সংলগ্নটিকে .আবার একটিতে পরিবর্তন করুন i

msT`i`.`.*^\W+$.*

যদি কোনও iএস ছাড়াই একটি লাইন থাকে , সমস্ত iএস .গুলি এসগুলিতে পরিবর্তন করুন , কারণ এখানে করার মতো কিছুই নেই।

+`(\b(i+)\W+\2i*)i
$1.

যে iকোনও লাইনে সর্বনিম্ন সংখ্যার গণনা করুন ।

+s`\bi((i+).+\b\2\b)
.$1

অন্যান্য লাইনে প্রচার করুন।

i

iগুলি মুছুন , এইভাবে প্রয়োজনীয় কার্নিং সম্পাদন করুন।

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