Nếu bạn sắp xếp một chuỗi, bạn thường sẽ nhận được một cái gì đó như:
':Iaaceeefggghiiiiklllllmnnooooprrssstttttuuyyyy
Vâng, đó là câu đầu tiên được sắp xếp.
Như bạn có thể thấy, có rất nhiều nhân vật lặp đi lặp lại, aa
, eee
, ttttt
, 9 chỗ và vân vân.
Nếu chúng ta thêm 128
vào giá trị ASCII của lần lặp đầu tiên, 256
vào lần thứ hai, 384
lần thứ ba, v.v., hãy sắp xếp lại và xuất chuỗi mới (mô đun 128 để lấy lại các ký tự giống nhau), chúng ta sẽ nhận được chuỗi:
':Iacefghiklmnoprstuy aegilnorstuy egilosty iloty lt
(Lưu ý không gian hàng đầu duy nhất và 4 không gian dấu).
Chuỗi là "tuần tự sắp xếp" <space>':I....uy
, <space>aeg....uy
, <space>egi....ty
, <space>iloty
, <space>lt
, <space>
, <space>
, <space>
, <space>
.
Có thể dễ hình dung hơn nếu chúng ta sử dụng một chuỗi có các chữ số trong đó. Chuỗi 111222334
sẽ khi "được sắp xếp" là : 123412312
.
Thử thách:
Không có gì ngạc nhiên, thách thức là viết một mã sắp xếp một chuỗi theo mô tả ở trên.
Bạn có thể giả sử rằng chuỗi đầu vào sẽ chỉ chứa các ký tự ASCII có thể in trong phạm vi 32-126 (khoảng trắng đến dấu ngã).
Các trường hợp thử nghiệm:
**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(),()()()()
Đây là môn đánh gôn , vì vậy mã ngắn nhất trong mỗi ngôn ngữ được tính bằng byte sẽ giành được ref .
{'S', 'g', 'i', 'n', 'r', 't'}
bằng Python, vì cách "thông thường" để làm điều đó là "String"
.
{'a','b'}
không được chấp nhận trong Matlab vì bạn có thể thêm một ký tự cho mỗi ký tự như thế này : {'aa','b'}
. Đầu vào và đầu ra của bạn phải ở cùng một định dạng.