সিজেম, 32 30 29 28 বাইট
ri_"/\ /"2/f*)@,\f>+_z..e>N*
এটি এখানে পরীক্ষা করুন।
আমি রেটোকে তার সিজেএম উত্তরটি গল্ফটি সাহায্য করার চেষ্টা করছিলাম তবে এমন একটি সমাধান দিয়ে শেষ হয়েছিল যার সাথে তার কোনও সম্পর্ক নেই, তাই আমি বুঝতে পেরেছিলাম যে আমি নিজেই এটি পোস্ট করতে পারি।
ব্যাখ্যা
এটি আউটপুটের প্রতিসাম্য ব্যবহার করে। বিশেষত, আউটপুট তার ট্রান্সপোজের মতো একই।
প্রথমত, আমরা প্রথম N+1
লাইনগুলি তৈরি করি , তবে বাম প্রান্ত ছাড়াই:
ri e# Read input and convert to integer N.
_ e# Duplicate.
"/\ /"2/ e# Push an array with two strings: ["/\" " /"]
f* e# Repeat each of the two strings N times. That gives the first two rows.
) e# Detach the second row.
@, e# Pull up the other copy of N and turn into range [0 1 ... N-1].
\f> e# For each element i in that range, discard the first i characters of
e# the second row.
+ e# Add all those lines back to the first row.
এখন আমরা নীচের গ্রিড প্রতিনিধিত্ব করে স্ট্রিংয়ের একটি অ্যারে পেয়েছি:
/\/\/\/\
/ / / /
/ / / /
/ / /
/ / /
এর ট্রান্সপোজ দেখে মনে হচ্ছে:
/ / /
\/ /
/ / /
\/ /
/ / /
\/ /
/ /
\/
একসাথে, এর মধ্যে আমাদের প্রয়োজন সমস্ত অ-স্থান অক্ষর রয়েছে। আমরা এখন প্রতিটি এএসসিআইআই গ্রিড এক সাথে সংযুক্ত করতে ডেনিসের রেড টিপটি ব্যবহার করতে পারি , প্রতিটি সংখ্যক চরিত্রের সর্বোচ্চ সংযোগ গ্রহণ করে। দুটি গ্রিডের পার্থক্য রয়েছে এমন সমস্ত পজিশনে একটির কাছে একটি জায়গা (বা কিছুই নয়) থাকবে এবং অন্যটির অক্ষরটি আমরা সন্ধান করছি। যখন ভেক্টরিযুক্ত অপারেশনের একটি তালিকা অন্যটির তুলনায় দীর্ঘ হয়, তখন দীর্ঘ তালিকার অতিরিক্ত উপাদানগুলি কেবল রাখা হয়, যা আমরা যা খুঁজছি ঠিক তেমনই। অন্যান্য ক্ষেত্রে, অ-স্থানের অক্ষর সর্বদা দুটি অক্ষরের সর্বাধিক হবে:
_z e# Duplicate the grid and transpose it.
..e> e# For each pair of characters in corresponding positions, pick the maximum.
N* e# Join the lines by linefeed characters.
;
।