Golfscript - 13 octets, 1315 sorties
991,{`.$2>>},
Ce qui précède sélectionne les nombres de 0 à 990 dont le premier chiffre est le plus grand chiffre du nombre, c.-à- d. Que le dernier chiffre de la représentation de chaîne triée est inférieur lexicographiquement à la chaîne elle-même. La logique est la suivante:
Pour un numéro à 3 chiffres abc , si a n'est pas le chiffre le plus grand du nombre, le nombre peut être ignoré, car il sera couvert par l'un des deux cas suivants:
b <c (ex. 123 )
Comme c est le chiffre le plus élevé, le nombre de cabines ne sera pas ignoré. Dans cet exemple, 312 ne sera pas ignoré, pas plus que la valeur suivante 313 qui, une fois concaténée ( 312 313 ), contient 123 .
b ≥ c (par exemple 132 )
Puisque b est le chiffre le plus grand, le nombre bca ne sera pas ignoré. Dans cet exemple, 321 ne sera pas ignoré, pas plus que la valeur suivante 322 qui, une fois concaténée ( 321 322 ), contient 132 . Si b = c (par exemple 122 ), ce cas est également valable. La valeur bca ne sera pas ignorée, comme auparavant, et comme a est nécessairement inférieur à b , bc <a + 1> nesera pas ignoré non plus. Dans cet exemple, 221 222 contient 122 .
Parce que le code ci-dessus teste le troisième chiffre, plutôt que strictement le dernier, toutes les valeurs comprises entre 0 et 99 sont incluses dans le résultat. Toutefois, les valeurs de 1 à 99 peuvent être omises, car si chaque séquence de 3 chiffres est présente, toutes les séquences de 1 et 2 chiffres doivent également l'être.
Les valeurs de 991 à 999 peuvent également être ignorées, car elles sont générées par ( 909 910 , 919 920 , ... 989 990 ).
Avec une puissance de sortie de 1315 octets, cela correspond à la spécification du problème de moins de 1500.
Sortie:
0123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101110111200201202210211212220221222300301302303310311312313320321322323330331332333400401402403404410411412413414420421422423424430431432433434440441442443444500501502503504505510511512513514515520521522523524525530531532533534535540541542543544545550551552553554555600601602603604605606610611612613614615616620621622623624625626630631632633634635636640641642643644645646650651652653654655656660661662663664665666700701702703704705706707710711712713714715716717720721722723724725726727730731732733734735736737740741742743744745746747750751752753754755756757760761762763764765766767770771772773774775776777800801802803804805806807808810811812813814815816817818820821822823824825826827828830831832833834835836837838840841842843844845846847848850851852853854855856857858860861862863864865866867868870871872873874875876877878880881882883884885886887888900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990
Variation # 1
14 octets, 1233 sorties
991,{`.$-1>>},
En sélectionnant strictement le dernier chiffre à comparer, plutôt que le troisième, de nombreuses valeurs inutiles inférieures à 100 sont éliminées, ce qui raccourcit la chaîne résultante.
101120212230313233404142434450515253545560616263646566707172737475767780818283848586878890919293949596979899100101110111200201202210211212220221222300301302303310311312313320321322323330331332333400401402403404410411412413414420421422423424430431432433434440441442443444500501502503504505510511512513514515520521522523524525530531532533534535540541542543544545550551552553554555600601602603604605606610611612613614615616620621622623624625626630631632633634635636640641642643644645646650651652653654655656660661662663664665666700701702703704705706707710711712713714715716717720721722723724725726727730731732733734735736737740741742743744745746747750751752753754755756757760761762763764765766767770771772773774775776777800801802803804805806807808810811812813814815816817818820821822823824825826827828830831832833834835836837838840841842843844845846847848850851852853854855856857858860861862863864865866867868870871872873874875876877878880881882883884885886887888900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990
Variation n ° 2
16 octets, 1127 sorties
991,99>{`.$2>>},
En enlevant au préalable toutes les valeurs inférieures à 99 , la chaîne résultante peut être raccourcie encore plus.
99100101110111200201202210211212220221222300301302303310311312313320321322323330331332333400401402403404410411412413414420421422423424430431432433434440441442443444500501502503504505510511512513514515520521522523524525530531532533534535540541542543544545550551552553554555600601602603604605606610611612613614615616620621622623624625626630631632633634635636640641642643644645646650651652653654655656660661662663664665666700701702703704705706707710711712713714715716717720721722723724725726727730731732733734735736737740741742743744745746747750751752753754755756757760761762763764765766767770771772773774775776777800801802803804805806807808810811812813814815816817818820821822823824825826827828830831832833834835836837838840841842843844845846847848850851852853854855856857858860861862863864865866867868870871872873874875876877878880881882883884885886887888900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990
Golfscript - 19 octets, 1016 sorties
910,99>{`.2$\?)>+}/
Ce qui précède compte de 99 à 909 , en ajoutant toute valeur qui n’est pas déjà apparue ( 909 serait normalement la dernière valeur ajoutée de cette manière). Déplacer 99 vers l’avant est une optimisation pour éviter d’avoir besoin du 910 à l’arrière.
Sortie:
99100101102103104105106107108109111112113114115116117118119120122123124125126127128129130132133134135136137138139140142143144145146147148149150152153154155156157158159160162163164165166167168169170172173174175176177178179180182183184185186187188189190192193194195196197198199200202203204205206207208209222223224225226227228229230233234235236237238239240243244245246247248249250253254255256257258259260263264265266267268269270273274275276277278279280283284285286287288289290293294295296297298299300303304305306307308309333334335336337338339340344345346347348349350354355356357358359360364365366367368369370374375376377378379380384385386387388389390394395396397398399400404405406407408409444445446447448449450455456457458459460465466467468469470475476477478479480485486487488489490495496497498499500505506507508509555556557558559560566567568569570576577578579580586587588589590596597598599600606607608609666667668669670677678679680687688689690697698699700707708709777778779780788789790798799800808809888889890899900909
Golfscript 26 octets, sortie 999
909.,99>{`..$.2><3$@?+>+}/
Notez que la chaîne de 1016 caractères générée par la solution précédente est presque optimale, sauf que vous devez avoir deux chiffres supplémentaires pour chaque multiple de 111 (c'est- 11111
à- dire au lieu de 111
, 22222
au lieu de 222
, etc.). La solution peut être optimisée en supprimant ces chiffres supplémentaires (en insérant seulement un chiffre à chacune de ces valeurs, au lieu de trois), et en effectuant 909
une rotation vers l'avant pour éliminer un 9
(ce qui diffère des versions précédentes, qui se déplaçait 9100
à l'arrière )
Déroulé et commenté:
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
La logique de choix des caractères à ajouter suit trois cas:
- 111 ∤ n , n ⊄ s
La valeur de la première vérification est 1 et de la seconde -1 .
La tranche commencera à partir de l'index 0 ; il retournera la chaîne entière.
- 111 ∤ n , n ⊂ s
La valeur de la première vérification est 1 et de la seconde quelque chose ≥ 2 .
La tranche commencera à regarder à partir de l'indice ≥ 3 ; il retournera une chaîne vide.
- 111 ∣ n , n ⊄ s
La valeur de la première vérification est 0 et de la seconde -1 .
La tranche commencera à partir de l'index -1 ; il ne renverra que le dernier caractère.
La somme de la logique est que toute valeur qui n'est pas encore apparue sera ajoutée en entier, à moins qu'il ne s'agisse d'un multiple de 111 , auquel cas un seul caractère sera ajouté. Toutes les autres valeurs seront ignorées.
Notez que la chaîne produite est différente de la chaîne optimale produite par la réponse de Peter Taylor .
Histoire:
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
Sortie:
909910010110210310410510610710810911121131141151161171181191201221231241251261271281291301321331341351361371381391401421431441451461471481491501521531541551561571581591601621631641651661671681691701721731741751761771781791801821831841851861871881891901921931941951961971981992002022032042052062072082092223224225226227228229230233234235236237238239240243244245246247248249250253254255256257258259260263264265266267268269270273274275276277278279280283284285286287288289290293294295296297298299300303304305306307308309333433533633733833934034434534634734834935035435535635735835936036436536636736836937037437537637737837938038438538638738838939039439539639739839940040440540640740840944454464474484494504554564574584594604654664674684694704754764774784794804854864874884894904954964974984995005055065075085095556557558559560566567568569570576577578579580586587588589590596597598599600606607608609666766866967067767867968068768868969069769869970070770870977787797807887897907987998008088098889890899900