Golfscript - 13 byte, đầu ra 1315
991,{`.$2>>},
Ở trên chọn các số đó từ 0-990 có chữ số đầu tiên là chữ số lớn nhất của số đó, tức là chữ số cuối cùng của biểu diễn chuỗi được sắp xếp ít hơn về mặt từ vựng so với chính chuỗi. Logic là như sau:
Đối với số có 3 chữ số abc , nếu a không phải là chữ số lớn nhất của số, số tôi sẽ bị bỏ qua, vì nó sẽ được bao phủ bởi một trong hai trường hợp sau:
b <c (ví dụ 123 )
Vì c là chữ số lớn nhất, nên số cab sẽ không bị bỏ qua. Trong ví dụ này, 312 sẽ không bị bỏ qua, cũng không có giá trị tiếp theo 313 , mà khi nối ( 312 313 ) sẽ chứa 123 .
b ≥ c (ví dụ 132 )
Vì b là chữ số lớn nhất, số bca sẽ không bị bỏ qua. Trong ví dụ này, 321 sẽ không bị bỏ qua, cũng như giá trị tiếp theo 322 , khi được nối ( 321 322 ) sẽ chứa 132 . Nếu b = c (ví dụ 122 ), trường hợp này cũng được áp dụng. Giá trị bca sẽ không bị bỏ qua, như trước đây và vì a nhất thiết phải nhỏ hơn b , bc <a + 1> cũng sẽ không bị bỏ qua. Trong ví dụ này, 221 222 chứa 122 .
Bởi vì đoạn mã trên kiểm tra chữ số thứ ba, thay vì nghiêm ngặt cuối cùng, tất cả các giá trị từ 0-99 đều được đưa vào kết quả. Tuy nhiên, các giá trị từ 1-99 có thể bị bỏ qua, bởi vì nếu mỗi chuỗi 3 chữ số có mặt, thì mỗi chuỗi 1 chữ số và 2 chữ số cũng phải có mặt.
Các giá trị từ 991-999 cũng có thể bị bỏ qua, vì giá trị được tạo bởi ( 909 910 , 919 920 , ... 989 990 ).
Với 1315 byte đầu ra, điều này thoải mái theo thông số kỹ thuật của vấn đề dưới 1500.
Đầu ra:
0123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101110111200201202210211212220221222300301302303310311312313320321322323330331332333400401402403404410411412413414420421422423424430431432433434440441442443444500501502503504505510511512513514515520521522523524525530531532533534535540541542543544545550551552553554555600601602603604605606610611612613614615616620621622623624625626630631632633634635636640641642643644645646650651652653654655656660661662663664665666700701702703704705706707710711712713714715716717720721722723724725726727730731732733734735736737740741742743744745746747750751752753754755756757760761762763764765766767770771772773774775776777800801802803804805806807808810811812813814815816817818820821822823824825826827828830831832833834835836837838840841842843844845846847848850851852853854855856857858860861862863864865866867868870871872873874875876877878880881882883884885886887888900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990
Biến thể số 1
14 byte, đầu ra 1233
991,{`.$-1>>},
Bằng cách chọn đúng chữ số cuối cùng để so sánh, thay vì chữ số thứ ba, nhiều giá trị không cần thiết dưới 100 được loại bỏ, rút ngắn chuỗi kết quả.
101120212230313233404142434450515253545560616263646566707172737475767780818283848586878890919293949596979899100101110111200201202210211212220221222300301302303310311312313320321322323330331332333400401402403404410411412413414420421422423424430431432433434440441442443444500501502503504505510511512513514515520521522523524525530531532533534535540541542543544545550551552553554555600601602603604605606610611612613614615616620621622623624625626630631632633634635636640641642643644645646650651652653654655656660661662663664665666700701702703704705706707710711712713714715716717720721722723724725726727730731732733734735736737740741742743744745746747750751752753754755756757760761762763764765766767770771772773774775776777800801802803804805806807808810811812813814815816817818820821822823824825826827828830831832833834835836837838840841842843844845846847848850851852853854855856857858860861862863864865866867868870871872873874875876877878880881882883884885886887888900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990
Biến thể số 2
16 byte, đầu ra 1127
991,99>{`.$2>>},
Bằng cách loại bỏ tất cả các giá trị nhỏ hơn 99 trước đó, chuỗi kết quả có thể được rút ngắn hơn nữa.
99100101110111200201202210211212220221222300301302303310311312313320321322323330331332333400401402403404410411412413414420421422423424430431432433434440441442443444500501502503504505510511512513514515520521522523524525530531532533534535540541542543544545550551552553554555600601602603604605606610611612613614615616620621622623624625626630631632633634635636640641642643644645646650651652653654655656660661662663664665666700701702703704705706707710711712713714715716717720721722723724725726727730731732733734735736737740741742743744745746747750751752753754755756757760761762763764765766767770771772773774775776777800801802803804805806807808810811812813814815816817818820821822823824825826827828830831832833834835836837838840841842843844845846847848850851852853854855856857858860861862863864865866867868870871872873874875876877878880881882883884885886887888900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990
Golfscript - 19 byte, đầu ra 1016
910,99>{`.2$\?)>+}/
Các giá trị trên từ 99 đến 909 , thêm bất kỳ giá trị nào chưa xuất hiện ( 909 thường sẽ là giá trị cuối cùng được thêm theo cách này). Di chuyển 99 ra phía trước là một tối ưu hóa để tránh cần 910 ở phía sau.
Đầu ra:
99100101102103104105106107108109111112113114115116117118119120122123124125126127128129130132133134135136137138139140142143144145146147148149150152153154155156157158159160162163164165166167168169170172173174175176177178179180182183184185186187188189190192193194195196197198199200202203204205206207208209222223224225226227228229230233234235236237238239240243244245246247248249250253254255256257258259260263264265266267268269270273274275276277278279280283284285286287288289290293294295296297298299300303304305306307308309333334335336337338339340344345346347348349350354355356357358359360364365366367368369370374375376377378379380384385386387388389390394395396397398399400404405406407408409444445446447448449450455456457458459460465466467468469470475476477478479480485486487488489490495496497498499500505506507508509555556557558559560566567568569570576577578579580586587588589590596597598599600606607608609666667668669670677678679680687688689690697698699700707708709777778779780788789790798799800808809888889890899900909
Golfscript 26 byte, đầu ra 999
909.,99>{`..$.2><3$@?+>+}/
Lưu ý rằng chuỗi ký tự 1016 được tạo bởi giải pháp trước đó là gần như tối ưu, ngoại trừ việc có thêm hai chữ số cho mỗi bội số của 111 (tức là 11111
thay vì 111
, 22222
thay vì 222
, v.v.). Giải pháp có thể được thực hiện tối ưu bằng cách loại bỏ các chữ số phụ này (chỉ chèn một chữ số vào mỗi giá trị này, thay vì ba chữ số) và bằng cách xoay 909
về phía trước, loại bỏ một 9
(điều này khác với các phiên bản trước, 9100
thay vào đó ).
Không được kiểm soát và nhận xét:
909.,99> # add 909 to the stack, and duplicate
# create an array from 0..908, and
# remove the first 99 elements (99..908)
{
`.. # stringify, duplicate twice
$.2>< # non-divisibility by 111 check
# true if the last char of the sorted
# string is greater than the first char
3$@? # first position of this number in
# the total string so far (-1 if not found)
+> # add the two previous results,
# and slice from that point
# (see explanation below)
+ # concat what remains to the total string
}/ # loop over the set
Logic để chọn các ký tự được nối sau ba trường hợp:
- 111 ∤ n , n ⊄ là
giá trị từ việc kiểm tra đầu tiên là 1 , và từ thứ hai -1 .
Các lát cắt sẽ bắt đầu bắt đầu từ chỉ số 0 ; nó sẽ trả về toàn bộ chuỗi.
- 111 ∤ n , n ⊂ là
giá trị từ việc kiểm tra đầu tiên là 1 , và từ một cái gì đó thứ hai ≥ 2 .
Các lát cắt sẽ bắt đầu nhìn chằm chằm từ chỉ số ≥ 3 ; nó sẽ trả về một chuỗi rỗng.
- 111 | n , n ⊄ là
giá trị từ việc kiểm tra đầu tiên là 0 , và từ thứ hai -1 .
Các lát cắt sẽ bắt đầu bắt đầu từ chỉ số -1 ; nó sẽ chỉ trả lại ký tự cuối cùng
Tổng logic là bất kỳ giá trị nào chưa xuất hiện sẽ được thêm vào toàn bộ - trừ khi nó là bội số của 111 , trong trường hợp đó chỉ có một ký tự sẽ được thêm vào. Tất cả các giá trị khác sẽ bị bỏ qua.
Lưu ý rằng chuỗi được tạo ra khác với chuỗi tối ưu được tạo bởi câu trả lời của Peter Taylor .
Lịch sử:
899,{101+.111%{`.2$\?0<*}{3/9%}if+}/
899,{101+`.2$\?0<\.~111%2*)<*+}/0
899,{101+`.2$\?0<\..2>-!2*>*+}/0
899,{101+`...2>|,1|<2$@?0<*+}/0
999,{`..$.2>>2*>2$@?0<*+}/3>0
899,{101+`..$.2><3$@?+>+}/0
Đầu ra:
909910010110210310410510610710810911121131141151161171181191201221231241251261271281291301321331341351361371381391401421431441451461471481491501521531541551561571581591601621631641651661671681691701721731741751761771781791801821831841851861871881891901921931941951961971981992002022032042052062072082092223224225226227228229230233234235236237238239240243244245246247248249250253254255256257258259260263264265266267268269270273274275276277278279280283284285286287288289290293294295296297298299300303304305306307308309333433533633733833934034434534634734834935035435535635735835936036436536636736836937037437537637737837938038438538638738838939039439539639739839940040440540640740840944454464474484494504554564574584594604654664674684694704754764774784794804854864874884894904954964974984995005055065075085095556557558559560566567568569570576577578579580586587588589590596597598599600606607608609666766866967067767867968068768868969069769869970070770870977787797807887897907987998008088098889890899900