জে, 35 33 বাইট
3 :'[;.0>(,|:)&:,.&.>/_98{.;:|.y'
এটি এমন একটি ক্রিয়া যা ফাঁকা দ্বারা পৃথক শব্দের সাথে ইনপুটটিকে একক স্ট্রিং হিসাবে গ্রহণ করে। উদাহরণস্বরূপ, আপনি এটিকে কল করতে পারেন:
3 :'[;.0>(,|:)&:,.&.>/_98{.;:|.y' 'programming puzzles and code golf'
আউটপুট হ'ল অক্ষর এবং শূন্যস্থানগুলির একটি ম্যাট্রিক্স, যা দোভাষা প্রয়োজনীয় হিসাবে নতুন লাইনের সাথে আউটপুট দেয়। প্রতিটি লাইন স্পেস দিয়ে প্যাড করা হবে যাতে তাদের সঠিক দৈর্ঘ্য থাকে।
কোডটিতে একটি সামান্য সমস্যা রয়েছে: ইনপুটটিতে 98 টিরও বেশি শব্দ থাকলে এটি কাজ করবে না। আপনি যদি দীর্ঘতর ইনপুটটিকে অনুমতি দিতে চান তবে 998 শব্দ ইত্যাদির জন্য কোডটিতে _98কোডটি প্রতিস্থাপন করুন _998etc.
কিছু উদাহরণের মাধ্যমে এটি কীভাবে কাজ করে তা আমাকে ব্যাখ্যা করুন।
মনে করুন আমাদের কাছে অক্ষর এবং শূন্যস্থানগুলির একটি ম্যাট্রিক্স রয়েছে যা আমরা কল্পনা করেছিলাম একটি অনুভূমিক শব্দ দিয়ে শুরু করে কিছু শব্দের একটি আংশিক আউটপুট।
[m=: 3 3$'vwx y z'
vwx
y
z
আমরা এর আগে উল্লম্বভাবে কোনও নতুন শব্দ কীভাবে প্রেন্ডেন্ড করতে পারি? এটি কঠিন নয়: ক্রিয়াপদের সাহায্যে কেবলমাত্র নতুন শব্দটিকে অক্ষরের একক-কলাম ম্যাট্রিক্সে পরিণত ,.করুন, তারপরে সেই একক-কলাম ম্যাট্রিক্সে আউটপুট যুক্ত করুন। (ক্রিয়া,. সুবিধাজনক কারণ এটি যদি আপনি ম্যাট্রিক্সে প্রয়োগ করেন, যা আমরা গল্ফ করার জন্য ব্যবহার করি তবে এটি একটি পরিচয় ফাংশন হিসাবে আচরণ করে))
(,.'cat') , m
c
a
t
vwx
y
z
এখন আমরা কেবল কোনও শব্দের প্রিন্টিংয়ের এই পদ্ধতিটি পুনরাবৃত্তি করতে পারি না, কারণ তখন আমরা কেবল উল্লম্ব শব্দ পেতে চাই। তবে আমরা যদি প্রতিটি পদক্ষেপের মধ্যে আউটপুট ম্যাট্রিক্স স্থানান্তর করি, তবে অন্য প্রতিটি শব্দ অনুভূমিক হবে।
(,.'dog') , |: (,.'cat') , m
d
o
g
catv
w
xyz
সুতরাং সমাধানের জন্য আমাদের প্রথম প্রয়াস হ'ল প্রতিটি শব্দকে একটি একক-কলাম ম্যাট্রিক্সে রাখা, তারপরে এগুলি সংযুক্ত করে এবং এর মধ্যে স্থানান্তর করে এগুলি ভাঁজ করুন।
> (,|:)&.>/ ,.&.>;: 'car house dog children'
c
a
r
housed
o
g
children
তবে এটির সাথে একটি বড় সমস্যা আছে। এটি পরবর্তী শব্দের প্রথম অক্ষরটি একটি সমকোণ ঘুরিয়ে দেওয়ার আগে রাখে, তবে স্পেসিফিকেশনটির জন্য প্রথম অক্ষরটি প্রবর্তনের আগে বাঁকানো দরকার, সুতরাং আউটপুট পরিবর্তে এর মতো কিছু হওয়া উচিত:
c
a
rhouse
d
o
gchildren
আমরা যেভাবে এটি অর্জন করব তা হ'ল পুরো ইনপুট স্ট্রিংটিকে বিপরীত করা
nerdlihc god esuoh rac
তারপরে জিগ-জাগ তৈরি করতে উপরের পদ্ধতিটি ব্যবহার করুন তবে কেবল প্রতিটি শব্দের প্রথম অক্ষরের পরে বাঁক:
n
e
r
d
l
i
h
c
gode
s
u
o
h
rac
তারপরে আউটপুটটি ফ্লিপ করুন:
[;.0> (,|:)&.>/ ,.&.>;:|. 'car house dog children'
car
h
o
u
s
edog
c
h
i
l
d
r
e
n
তবে এখন আমাদের আর একটি সমস্যা রয়েছে। যদি ইনপুটটিতে শব্দের একটি বিজোড় সংখ্যা থাকে তবে আউটপুটটিতে প্রথম শব্দটি উল্লম্ব হবে, অন্যদিকে স্পেসিফিকেশনটি বলে যে প্রথম শব্দটি অবশ্যই অনুভূমিক হতে হবে। এটি সমাধানের জন্য, আমার সমাধান শব্দের তালিকার 98 টি শব্দকে প্যাড করে খালি শব্দ যুক্ত করে, যেহেতু আউটপুট পরিবর্তন করে না।