এমএটিএল , 30 28 27 বাইট
t:P"@:s:@/Xk&+@+8MPt&(]30+c
এটি অনলাইন চেষ্টা করুন!
বোনাস বৈশিষ্ট্য:
জন্য 26 বাইট , নিম্নলিখিত পরিমার্জিত সংস্করণ উত্পাদন করে গ্রাফিকাল আউটপুট :
t:P"@:s:@/Xk&+@+8MPt&(]1YG
এমএটিএল অনলাইন এ চেষ্টা করুন !
চিত্রটি কিছু রঙের জন্য ভিক্ষা করছে , এবং এটির জন্য কেবল 7 বাইট খরচ রয়েছে:
t:P"@:s:@/Xk&+@+8MPt&(]1YG59Y02ZG
এমএটিএল অনলাইন এ চেষ্টা করুন !
অথবা ম্যাট্রিক্স অক্ষরটি কীভাবে ধীরে ধীরে নির্মিত হয় তা দেখতে একটি দীর্ঘ সংস্করণ (37 বাইট) ব্যবহার করুন :
t:P"@:s:@/Xk&+@+8MPt&(t30+cD9&Xx]30+c
এমএটিএল অনলাইন এ চেষ্টা করুন !
উদাহরণ আউটপুট
ইনপুটটির জন্য 8, নিম্নলিখিতটি মূল সংস্করণ, গ্রাফিকাল আউটপুট এবং রঙের গ্রাফিকাল আউটপুট দেখায়।



ব্যাখ্যা
সাধারণ পদক্ষেপ
একটি সংখ্যার ম্যাট্রিক্স Nধাপে বাইরের থেকে অভ্যন্তরের স্তরগুলিতে তৈরি করা হয় , যেখানে Nইনপুট থাকে। প্রতিটি পদক্ষেপ পূর্ববর্তী ম্যাট্রিক্সের অভ্যন্তরীণ (উপরের-বাম) অংশকে ওভাররাইট করে। শেষে, প্রাপ্ত ম্যাট্রিক্সের সংখ্যাগুলি অক্ষরে পরিবর্তিত হয়।
উদাহরণ
ইনপুট 4জন্য প্রথম ম্যাট্রিক্স হয়
10 10 9 9 9 9 8 8 8 8
10 10 9 9 9 9 8 8 8 8
9 9 8 8 8 8 7 7 7 7
9 9 8 8 8 8 7 7 7 7
9 9 8 8 8 8 7 7 7 7
9 9 8 8 8 8 7 7 7 7
8 8 7 7 7 7 6 6 6 6
8 8 7 7 7 7 6 6 6 6
8 8 7 7 7 7 6 6 6 6
8 8 7 7 7 7 6 6 6 6
দ্বিতীয় পদক্ষেপ হিসাবে, ম্যাট্রিক্স
7 7 7 6 6 6
7 7 7 6 6 6
7 7 7 6 6 6
6 6 6 5 5 5
6 6 6 5 5 5
6 6 6 5 5 5
উত্তরোত্তর উপরের অর্ধেকটিতে ওভাররাইট করা হয়। তারপরেও একই কাজটি করা হয়
6 5 5
5 4 4
5 4 4
এবং অবশেষে সঙ্গে
3
ফলাফল ম্যাট্রিক্স হয়
3 5 5 6 6 6 8 8 8 8
5 4 4 6 6 6 8 8 8 8
5 4 4 6 6 6 7 7 7 7
6 6 6 5 5 5 7 7 7 7
6 6 6 5 5 5 7 7 7 7
6 6 6 5 5 5 7 7 7 7
8 8 7 7 7 7 6 6 6 6
8 8 7 7 7 7 6 6 6 6
8 8 7 7 7 7 6 6 6 6
8 8 7 7 7 7 6 6 6 6
সবশেষে, 30প্রতিটি এন্ট্রিতে যুক্ত করা হয় এবং ফলস্বরূপ সংখ্যাগুলি কোডপয়েন্ট হিসাবে ব্যাখ্যা করা হয় এবং অক্ষরে রূপান্তরিত হয় (এভাবে শুরু করে 33, এর সাথে সম্পর্কিত !)।
ইন্টারমিডিয়েট ম্যাট্রিক্স নির্মাণ
ইনপুট করতে N, মান কমে বিবেচনা kথেকে Nথেকে 1। প্রত্যেকের জন্য k, থেকে পূর্ণসংখ্যার একটি ভেক্টর তৈরি 1করা k*(k+1)হয় এবং তারপরে প্রতিটি এন্ট্রি ভাগ করে kএবং বৃত্তাকার হয়। উদাহরণস্বরূপ, এর জন্য k=4(সবগুলি ব্লকের kশেষ ব্যতীত আকার রয়েছে ):
1 1 1 1 2 2 2 2 3 3
তবে k=3ফলাফলের জন্য (সমস্ত ব্লকের আকার থাকে k):
1 1 1 2 2 2
এই ভেক্টরটি যুক্ত করা হয়, সম্প্রচারের সাথে উপাদান অনুসারে নিজের ট্রান্সপোজড কপিতে; এবং তারপরে kপ্রতিটি প্রবেশে যুক্ত করা হয়। জন্য k=4এই দেয়
6 6 6 6 7 7 7 7 8 8
6 6 6 6 7 7 7 7 8 8
6 6 6 6 7 7 7 7 8 8
6 6 6 6 7 7 7 7 8 8
7 7 7 7 8 8 8 8 9 9
7 7 7 7 8 8 8 8 9 9
7 7 7 7 8 8 8 8 9 9
7 7 7 7 8 8 8 8 9 9
8 8 8 8 9 9 9 9 10 10
8 8 8 8 9 9 9 9 10 10
এটি অনুভূমিক এবং উল্লম্বভাবে উল্টানো বাদে উপরের দিকে দেখানো মধ্যবর্তী ম্যাট্রিকগুলির মধ্যে একটি। সুতরাং যা অবশিষ্ট রয়েছে তা এই ম্যাট্রিক্সটি ফ্লিপ করা এবং এটিকে এ পর্যন্ত "জমে থাকা" ম্যাট্রিক্সের উপরের-বাম কোণে লিখতে হবে, প্রথম ( k=N) পদক্ষেপের জন্য একটি খালি ম্যাট্রিক্সে আরম্ভ করা হয়েছে ।
কোড
t % Implicitly input N. Duplicate. The first copy of N serves as the
% initial state of the "accumulated" matrix (size 1×1). This will be
% extended to size N*(N+1)/2 × N*(N+1)/2 in the first iteration
:P % Range and flip: generates vector [N, N-1, ..., 1]
" % For each k in that vector
@: % Push vector [1, 2, ..., k]
s % Sum of this vector. This gives 1+2+···+k = k*(k+1)/2
: % Range: gives vector [1, 2, ..., k*(k+1)/2]
@/ % Divide each entry by k
Xk % Round up
&+ % Add vector to itself transposed, element-wise with broadcast. Gives
% a square matrix of size k*(k+1)/2 × k*(k+1)/2
@+ % Add k to each entry of the this matrix. This is the flipped
% intermediate matrix
8M % Push vector [1, 2, ..., k*(k+1)/2] again
Pt % Flip and duplicate. The two resulting, equal vectors are the row and
% column indices where the generated matrix will be written. Note that
% flipping the indices has the same effect as flipping the matrix
% horizontally and vertically (but it's shorter)
&( % Write the (flipped) intermediate matrix into the upper-left
% corner of the accumulated matrix, as given by the two (flipped)
% index vectors
] % End
30+ % Add 30 to each entry of the final accumulated matrix
c % Convert to char. Implicitly display