এমএটিএল , 59 54 52 বাইট
4t:g2I5vXdK8(3K23h32h(H14(t!XR+8: 7:Pht3$)'DtdTX.'w)
এটি অনলাইন চেষ্টা করুন!
ব্যাখ্যা
কোডটি তিনটি প্রধান পদক্ষেপ অনুসরণ করে:
8x8 ম্যাট্রিক্স উত্পন্ন করুন
4 0 0 3 0 0 0 4
0 1 0 0 0 2 0 0
0 0 1 0 0 0 3 0
3 0 0 1 0 0 0 3
0 0 0 0 1 0 0 0
0 2 0 0 0 2 0 0
0 0 3 0 0 0 3 0
4 0 0 3 0 0 0 5
15x15 ম্যাট্রিক্স এ এটি প্রসারিত করুন
4 0 0 3 0 0 0 4 0 0 0 3 0 0 4
0 1 0 0 0 2 0 0 0 2 0 0 0 1 0
0 0 1 0 0 0 3 0 3 0 0 0 1 0 0
3 0 0 1 0 0 0 3 0 0 0 1 0 0 3
0 0 0 0 1 0 0 0 0 0 1 0 0 0 0
0 2 0 0 0 2 0 0 0 2 0 0 0 2 0
0 0 3 0 0 0 3 0 3 0 0 0 3 0 0
4 0 0 3 0 0 0 5 0 0 0 3 0 0 4
0 0 3 0 0 0 3 0 3 0 0 0 3 0 0
0 2 0 0 0 2 0 0 0 2 0 0 0 2 0
0 0 0 0 1 0 0 0 0 0 1 0 0 0 0
3 0 0 1 0 0 0 3 0 0 0 1 0 0 3
0 0 1 0 0 0 3 0 3 0 0 0 1 0 0
0 1 0 0 0 2 0 0 0 2 0 0 0 1 0
4 0 0 3 0 0 0 4 0 0 0 3 0 0 4
'DtdTX.'
পছন্দসই ফলাফল তৈরি করতে সেই ম্যাট্রিক্সের সাথে স্ট্রিংকে সূচক করুন ।
ধাপ 1
4 % Push 4
t: % Duplicate, range: pushes [1 2 3 4]
g % Logical: convert to [1 1 1 1]
2I5 % Push 2, then 3, then 5
v % Concatenate all stack vertically into vector [4 1 1 1 1 2 3 5]
Xd % Generate diagonal matrix from that vector
এখন আমাদের ননজারো অফ-ডায়াগোনাল এন্ট্রিগুলি পূরণ করতে হবে। আমরা কেবল তির্যক নীচের অংশগুলি পূরণ করব এবং তারপরে অন্যকে পূরণ করার জন্য প্রতিসাম্য ব্যবহার করব।
প্রতিটি মান পূরণ করার জন্য আমরা লিনিয়ার ইনডেক্সিং ব্যবহার করি ( এই উত্তরটি দেখুন , দৈর্ঘ্য -12 স্নিপেট)। তার মানে ম্যাট্রিক্স অ্যাক্সেস করার অর্থ এটির মাত্র একটি মাত্রা রয়েছে। একটি 8 × 8 ম্যাট্রিক্সের জন্য, রৈখিক সূচকের প্রতিটি মান নিম্নলিখিত হিসাবে একটি প্রবেশকে বোঝায়:
1 9 57
2 10 58
3 11
4
5 ... ...
6
7 63
8 16 ... ... 64
সুতরাং, নীচে নীচের বাম এন্ট্রি 4 মান নির্ধারণ:
K % Push 4
8 % Push 8
( % Assign 4 to the entry with linear index 8
মান 3 জন্য কোড অনুরূপ। এই ক্ষেত্রে সূচকটি একটি ভেক্টর, কারণ আমাদের বেশ কয়েকটি এন্ট্রি পূরণ করতে হবে:
3 % Push 3
K % Push 4
23h % Push 23 and concatenate horizontally: [4 23]
32h % Push 32 and concatenate horizontally: [4 23 32]
( % Assign 4 to the entries specified by that vector
এবং 2 এর জন্য:
H % Push 2
14 % Push 14
( % Assign 2 to that entry
আমাদের এখন ম্যাট্রিক্স রয়েছে
4 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0
0 0 1 0 0 0 0 0
3 0 0 1 0 0 0 0
0 0 0 0 1 0 0 0
0 2 0 0 0 2 0 0
0 0 3 0 0 0 3 0
4 0 0 3 0 0 0 5
উপরের অর্ধেকটি পূরণ করতে আমরা প্রতিসাম্য ব্যবহার করি:
t! % Duplicate and transpose
XR % Keep the upper triangular part without the diagonal
+ % Add element-wise
ধাপ ২
স্ট্যাকটিতে এখন 8 × 8 ম্যাট্রিক্স রয়েছে যা 1 ম পদক্ষেপের ফলে হয়েছিল 1 এই ম্যাট্রিক্সটি প্রসারিত করতে আমরা সূচিটি ব্যবহার করি, এবার দুটি মাত্রায়।
8: % Push vector [1 2 ... 7 8]
7:P % Push vector [7 6 ... 1]
h % Concatenate horizontally: [1 2 ... 7 8 7 ... 2 1]. This will be the row index
t % Duplicate. This will be the column index
3$ % Specify that the next function will take 3 inputs
) % Index the 8×8 matrix with the two vectors. Gives a 15×15 matrix
ধাপ 3
স্ট্যাকটিতে এখন পদক্ষেপ 2 থেকে 15 × 15 ম্যাট্রিক্স রয়েছে।
'DtdTX.' % Push this string
w % Swap the two elements in the stack. This brings the matrix to the top
) % Index the string with the matrix
X
এবং*
তারার প্রতিনিধিত্ব না? : ও