जे, 54 बाइट्स
[:|:|.@i.@#(>@],~' '#~[)"_1[:(,' '&,)/&.>>:@i.@#<@#"0]
इसे ऑनलाइन आज़माएं!(ध्यान दें कि TIO पर आउटपुट में एक नई रेखा और तीन स्थान होते हैं, लेकिन यह फ़ंक्शन कॉल से नहीं होता है - यह संभवतः जे इंटरप्रेटर स्वचालित रूप से करता है)।
मुझे लगता है कि इसे हल करने के लिए सामान्य विचार सही है, लेकिन छोटी चीजें हैं जो मैं शायद उप-आशावादी रूप से कर रहा हूं जो कि बाइटकाउंट में जोड़ रहे हैं।
पिछले संस्करण
55 बाइट्स
<:@+:@#{.[:|:|.@i.@#(],~' '#~[)"_1>:@i.@#(,' '&,)/@#"0]
56 बाइट्स
<:@+:@#{.[:|:|.@i.@#(],~' '#~[)"_1#{.[:(,' '&,)//.[:]\.]
व्याख्या
इसे कुछ कार्यों में विभाजित किया जाएगा। इसके अलावा, मैं स्पष्टीकरण के बाद के हिस्सों के साथ पूरी तरह से नहीं था, इसलिए मुझे बताएं कि क्या आप एक निश्चित भाग के लिए बेहतर स्पष्टीकरण चाहते हैं और मैं इसमें संपादित कर सकता हूं।
dup =. >:@i.@# <@#"0 ]
space =. (,' '&,)/&.>
pad =. |.@i.@# (>@],~' '#~[)"_1 ]
trans =. |:
dup
स्ट्रिंग में इसके सूचकांक (प्लस एक) के रूप में प्रत्येक चरित्र को कई बार डुप्लिकेट करता है
space
प्रत्येक वर्ण के बीच रिक्त स्थान सम्मिलित करता है
pad
सही स्थानों के साथ वर्णों को पैड करता है
trans
परिणामी मैट्रिक्स को स्थानांतरित करता है
नमूना कॉल:
trans pad space dup 'abc'
c
b
a c
b
c
dup
>:@i.@# <@#"0 ]
>:@i.@# Indices of each character plus one
# Length of the string
i. Range [0,length)
>: Add one
<@#"0 ] Duplicate each character as many times as it index (plus one)
"0 For each
# ] Copy the character
>:@i.@# as many times as it index
< Box the result
परिणाम J को रोकने के लिए बॉक्स को रिक्त स्थान के साथ पैडिंग से रोका जाता है (क्योंकि वे असमान लंबाई के होते हैं)।
नमूना कॉल:
dup 'abc'
┌─┬──┬───┐
│a│bb│ccc│
└─┴──┴───┘
अंतरिक्ष
(,' '&,)/&.>
&.> For each boxed element
(,' '&,)/ Insert spaces between each
नमूना कॉल:
space dup 'abc'
┌─┬───┬─────┐
│a│b b│c c c│
└─┴───┴─────┘
तकती
|.@i.@# (>@],~' '#~[)"_1 ]
(>@],~' '#~[) Pad the right arg with spaces given by the left arg
|.@i.@# Indices in reverse order
i. # Range [0,length)
|. Reverse
मूल रूप से, लंबाई के साथ पहला तत्व - 1 रिक्त स्थान, लंबाई के साथ दूसरा - 2, आदि। यह बॉक्सिंग को भी हटा देता है।
नमूना कॉल:
pad space dup 'abc'
a
b b
c c c
खिसकाना
यह सिर्फ बिल्ट-इन फ़ंक्शन है |:
जो एक मैट्रिक्स का संक्रमण लेता है।