Bir dizeyi sıralarsanız, genellikle şöyle bir şey elde edersiniz:
':Iaaceeefggghiiiiklllllmnnooooprrssstttttuuyyyy
Evet, sıralanan ilk cümleydi.
Gördüğünüz gibi, tekrarlanan karakterlerin bir yeri vardır, aa
, eee
, ttttt
, 9 boşluklar vb.
128
İlk kopyadaki ASCII değerine 256
, ikinci, 384
üçüncü ve benzeri değerlere eklersek , tekrar sıralayın ve yeni dizge çıktısını alın (aynı karakterleri geri almak için modül 128):
':Iacefghiklmnoprstuy aegilnorstuy egilosty iloty lt
(Tek baştaki boşluğa ve 4 sondaki boşluğa dikkat edin).
Dize "sıralı olarak sıralanmış" dır <space>':I....uy
, <space>aeg....uy
, <space>egi....ty
, <space>iloty
, <space>lt
, <space>
, <space>
, <space>
, <space>
.
İçinde rakam olan bir dize kullanırsak, bunu görselleştirmek daha kolay olabilir. Dize 111222334
"kriteri" ne zaman olacak: 123412312
.
Meydan okuma:
Hiç şüphe yok ki, meydan okuma yukarıdaki açıklamaya göre bir dizge sıralayan bir kod yazmaktır.
Giriş dizesinin yalnızca yazdırılabilir ASCII karakterlerini 32-126 (tilde boşluk) aralığında içereceğini varsayabilirsiniz.
Test durumları:
**Test cases:**
*:Tacest*es*s*
If you sort a string you'll typically get something like:
':Iacefghiklmnoprstuy aegilnorstuy egilosty iloty lt
Hello, World!
!,HWdelorlol
#MATLAB, 114 bytes
#,14ABLMTbesty 1A
f=@(s)[mod(sort(cell2mat(cellfun(@(c)c+128*(0:nnz(c)-1),mat2cell(sort(s),1,histc(s,unique(s))),'un',0))),128),''];
'()*+,-0128:;=@[]acdefhilmnoqrstuz'(),0128@acefilmnorstu'(),12celmnostu'(),12celnstu(),clnst(),cls(),cs(),()()()()
Bu kod-golf'dür , bu nedenle bayt sayılan her dilde en kısa kod ref kazanacaktır .
{'S', 'g', 'i', 'n', 'r', 't'}
, bunu yapmak için "normal" yol olduğundan, Python'da çıktı veremezsiniz "String"
.
{'a','b'}
Eğer böyle karakterlerin her birine bir karakter ekleyebildiğinizden Matlab'ta kabul edilmez: {'aa','b'}
. Giriş ve çıkışlarınız aynı formatta olmalıdır.