J, 54 bayt
[:|:|.@i.@#(>@],~' '#~[)"_1[:(,' '&,)/&.>>:@i.@#<@#"0]
Çevrimiçi deneyin!(TIO'daki çıkışın yeni bir satırı ve üç boşluğu olduğunu unutmayın, ancak bu işlev çağrısından değil - muhtemelen J yorumlayıcısının otomatik olarak yaptığı şeydir).
Bunun çözülmesi için genel fikrin doğru olduğunu düşünüyorum, ancak büyük olasılıkla alt bytecount'a ekleyen, muhtemelen en iyi şekilde yaptığım küçük şeyler var.
Önceki değişkenler
55 bayt
<:@+:@#{.[:|:|.@i.@#(],~' '#~[)"_1>:@i.@#(,' '&,)/@#"0]
56 bayt
<:@+:@#{.[:|:|.@i.@#(],~' '#~[)"_1#{.[:(,' '&,)//.[:]\.]
açıklama
Bu birkaç fonksiyona bölünecektir. Ayrıca, açıklamanın ikinci bölümleriyle o kadar ayrıntılı değildim, bu nedenle belirli bir bölüm için daha iyi bir açıklama istiyorsanız ve bunu düzenleyebildiğimde bana bildirin.
dup =. >:@i.@# <@#"0 ]
space =. (,' '&,)/&.>
pad =. |.@i.@# (>@],~' '#~[)"_1 ]
trans =. |:
dup
Her karakteri dizgideki indeksi (artı bir) kadar çoğaltır
space
her karakterin arasına boşluk ekler
pad
karakterleri doğru miktarda boşlukla doldurur
trans
Elde edilen matrisi dönüştürür
Örnek arama:
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
Sonuçlar, J'nin uçları boşluklarla doldurmasını engellemek için kutulanmıştır (çünkü düzensiz uzunluktalar).
Örnek arama:
dup 'abc'
┌─┬──┬───┐
│a│bb│ccc│
└─┴──┴───┘
uzay
(,' '&,)/&.>
&.> For each boxed element
(,' '&,)/ Insert spaces between each
Örnek arama:
space dup 'abc'
┌─┬───┬─────┐
│a│b b│c c c│
└─┴───┴─────┘
ped
|.@i.@# (>@],~' '#~[)"_1 ]
(>@],~' '#~[) Pad the right arg with spaces given by the left arg
|.@i.@# Indices in reverse order
i. # Range [0,length)
|. Reverse
Temel olarak, ilk elemanı uzunluk - 1 boşluk, ikincisi uzunluk - 2, vb. İle doldurun.
Örnek arama:
pad space dup 'abc'
a
b b
c c c
Transpoze
Bu sadece |:
bir matrisin transpozitini alan yerleşik fonksiyondur .