ভূমিকা
কার্নিংয়ের অর্থ কোনও পাঠ্যের অক্ষরের মধ্যে ব্যবধানকে সামঞ্জস্য করা। উদাহরণ হিসাবে, Top
নিম্নলিখিত তিনটি গ্লাইফ দিয়ে লেখা শব্দটি বিবেচনা করুন :
##### ..... .....
..#.. ..... .....
..#.. ..##. .###.
..#.. .#..# .#..#
..#.. .#..# .#..#
..#.. ..##. .###.
..... ..... .#...
..... ..... .#...
আমরা কেবল গ্লাইফগুলির মধ্যে ফাঁকগুলি বিন্দু দিয়ে পূরণ করতে পারি এবং এটি দিয়ে সম্পন্ন করতে পারি তবে ফাঁকগুলি কোনওভাবে খুব প্রশস্ত দেখায়। পরিবর্তে, আমরা গ্লিফগুলি বাম দিকে স্লাইড করি যাতে তারা প্রায় স্পর্শ করে:
#####........
..#..........
..#..##..###.
..#.#..#.#..#
..#.#..#.#..#
..#..##..###.
.........#...
.........#...
এটি আরও ভাল দেখাচ্ছে! বারটি কীভাবে T
বাম সীমানার উপরে রয়েছে তা নোট করুন o
। এই চ্যালেঞ্জটিতে আপনার কাজ হ'ল এই জাতীয় আয়তক্ষেত্রাকার গ্লাইফগুলির জন্য একটি সহজ কার্নিং প্রোগ্রাম কার্যকর করা।
কার্নিং প্রক্রিয়া
একই আকারের .
এবং দুটি আয়তক্ষেত্রাকার 2D অক্ষরের অ্যারে বিবেচনা করুন #
। আমাদের সহজ কার্নিং প্রক্রিয়াতে, আমরা প্রথমে অ্যারেগুলি পাশাপাশি রাখি, .
এর মধ্যে একটি কলামের মাঝে। তারপরে, আমরা প্রতিটি #
ডান অ্যারে এক ধাপ বাম দিকে সরানো , যতক্ষণ না কিছু #
বাম এবং ডান অ্যারের orthogonally বা ত্রিভুজ সংলগ্ন হয়। কার্নিংয়ের ফলাফলটি আমরা সংলগ্ন গুলি প্রবর্তনের আগে পদক্ষেপ introduce #
আপনার কাজটি এই প্রক্রিয়াটি বাস্তবায়ন করা।
একটি উদাহরণ নেওয়া যাক:
Inputs:
..###
#....
#....
..##.
...#.
...##
..###
....#
Process:
..###....#.
#........##
#.......###
..##......#
..###...#.
#.......##
#......###
..##.....#
..###..#.
#......##
#.....###
..##....#
..###.#.
#.....##
#....###
..##...#
..####.
#....##
#...###
..##..#
শেষ অ্যারেতে, আমাদের সাথে নতুন সংলগ্ন জোড়া রয়েছে #
, তাই দ্বিতীয় থেকে শেষের অ্যারেটি কার্নিং প্রক্রিয়ার ফলাফল।
ইনপুট এবং আউটপুট
সরলতার জন্য আপনার কেবল দুটি গ্লাইফের কার্নিং পরিচালনা করতে হবে । আপনার ইনপুটগুলি দুটি আয়তক্ষেত্রাকার 2 ডি অ্যারে, নিম্নলিখিত ফর্ম্যাটগুলির মধ্যে একটি:
- পূর্ণসংখ্যার 2D অ্যারে, 0 টির জন্য
.
এবং 1 টির জন্য#
। - একাধিক স্ট্রিং শেষ হয়েছে
.#
। - স্ট্রিং এর অ্যারে
.#
। - অক্ষরের 2D অ্যারে
.#
।
যদি ইনপুটগুলি একক স্ট্রিং হিসাবে নেওয়া হয় তবে আপনি যে কোনও যুক্তিসঙ্গত ডিলিমিটার ব্যবহার করতে পারেন। তবে, ডিলিমিটারটি দুটি অ্যারের মধ্যে যেতে হবে, এর অর্থ আপনাকে ইতিমধ্যে জোড়া লাগানো সারি-সারি দুটি ইনপুট গ্রহণ করার অনুমতি নেই।
আপনার আউটপুটটি এই দুটি অ্যারেতে প্রয়োগ করা কার্নিং প্রক্রিয়ার ফলাফল যা ইনপুটগুলির একই আকারে একটি আয়তক্ষেত্র 2D অ্যারে। আপনাকে যে কোনও সংখ্যক নেতৃস্থানীয় বা অনুসরণকারী কলাম যুক্ত করতে বা মুছে ফেলার অনুমতি দেওয়া হয়েছে তবে .
আউটপুট অবশ্যই আয়তক্ষেত্রাকার এবং ইনপুটগুলির সমান উচ্চতা থাকতে হবে। এটি নিশ্চিত হয় যে দ্বিতীয় ইনপুটটির বাম প্রান্তটি প্রথম ইনপুটটির বাম প্রান্তে স্লাইড হওয়ার আগে কার্নিং প্রক্রিয়াটি শেষ হবে।
বিধি এবং স্কোরিং
প্রতিটি প্রোগ্রামিং ভাষার জিততে সর্বনিম্ন বাইট গণনা। স্ট্যান্ডার্ড কোড-গল্ফ বিধি প্রযোজ্য।
পরীক্ষার মামলা
অনুলিপি-পেস্টিংয়ে সহায়তা করার জন্য, এই পরীক্ষার কেসগুলি স্ট্রিংয়ের তালিকা হিসাবে দেওয়া হয়।
["#"] ["#"] -> ["#.#"]
["#.","..",".#"] ["##","..","##"] -> ["#..##",".....",".#.##"]
["..#","#..","#.."] ["...","..#","###"] -> ["..#..","#...#","#.###"]
["###.","##..","#...","...."] ["....","...#","..#.",".#.."] -> ["###..","##..#","#..#.","..#.."]
["..##...","#......","#......"] [".....##",".....##",".#...#."] -> ["..##..##","#.....##","#.#...#."]
["...#.",".....",".....",".....","....#"] [".....","....#","#....",".....","....."] -> ["...#..",".....#",".#....","......","....#."]
["..#..",".....",".....",".....","....#"] [".....","....#","#....",".....","....."] -> ["..#..","....#","#....",".....","....#"]
["######","#.....","#.....","#.....","######"] ["......",".....#",".#...#",".....#","......"] -> ["######..","#......#","#..#...#","#......#","######.."]
["######","#.....","#.....","#.....","######"] ["......","......",".#....","......","......"] -> ["######","#.....","#.#...","#.....","######"]
["#...#","#..#.","#.#..","##...","#.#..","#..#.","#...#"] ["...#.","..#..",".#...",".#...",".#...","..#..","...#."] -> ["#...#..#","#..#..#.","#.#..#..","##...#..","#.#..#..","#..#..#.","#...#..#"]