Golfscript - 13 Bytes, 1315 Ausgabe
991,{`.$2>>},
Das Obige wählt die Zahlen von 0 bis 990 aus, deren erste Ziffer die größte Ziffer der Zahl ist, dh die letzte Ziffer der sortierten Zeichenfolgendarstellung ist lexikografisch kleiner als die Zeichenfolge selbst. Die Logik ist die folgende:
Bei einer 3-stelligen Zahl abc kann die Zahl übersprungen werden , wenn a nicht die größte Ziffer der Zahl ist, da sie später in einem von zwei Fällen behandelt wird:
b <c (z . B. 123 )
Da c die größte Ziffer ist, wird die Nummer cab nicht übersprungen. In diesem Beispielwird weder 312 übersprungen noch der nächste Wert 313 , der, wenn er verkettet ist ( 312, 313 ), 123 enthält.
b ≥ c (zB 132 )
Da b die größte Ziffer ist, wird die Zahl bca nicht übersprungen. In diesem Beispielwird weder 321 übersprungen noch der nächste Wert 322 , der, wenn er verkettet ist ( 321, 322 ), 132 enthält. Ist b = c (z. B. 122 ), gilt dies auch. Der Wert bca wird nicht wie zuvor übersprungen, und da a notwendigerweise kleiner als b ist , wird auch bc <a + 1> nicht übersprungen. In diesem Beispielenthält 221 222 122 .
Da der obige Code nicht nur die letzte, sondern die dritte Ziffer testet, sind alle Werte von 0 bis 99 im Ergebnis enthalten. Die Werte von 1 bis 99 können jedoch übersprungen werden, da, wenn jede dreistellige Folge vorhanden ist, auch jede ein- und zweistellige Folge vorhanden sein muss.
Die Werte von 991-999 können ebenfalls übersprungen werden, da sie von ( 909 910 , 919 920 , ... 989 990 ) generiert werden .
Bei einer Ausgabe von 1315 Byte entspricht dies der Spezifikation des Problems von weniger als 1500.
Ausgabe:
0123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101110111200201202210211212220221222300301302303310311312313320321322323330331332333400401402403404410411412413414420421422423424430431432433434440441442443444500501502503504505510511512513514515520521522523524525530531532533534535540541542543544545550551552553554555600601602603604605606610611612613614615616620621622623624625626630631632633634635636640641642643644645646650651652653654655656660661662663664665666700701702703704705706707710711712713714715716717720721722723724725726727730731732733734735736737740741742743744745746747750751752753754755756757760761762763764765766767770771772773774775776777800801802803804805806807808810811812813814815816817818820821822823824825826827828830831832833834835836837838840841842843844845846847848850851852853854855856857858860861862863864865866867868870871872873874875876877878880881882883884885886887888900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990
Variante # 1
14 Bytes, 1233 Ausgabe
991,{`.$-1>>},
Durch die strikte Auswahl der letzten statt der dritten Ziffer für den Vergleich werden viele der unnötigen Werte unter 100 eliminiert, wodurch die resultierende Zeichenfolge verkürzt wird.
101120212230313233404142434450515253545560616263646566707172737475767780818283848586878890919293949596979899100101110111200201202210211212220221222300301302303310311312313320321322323330331332333400401402403404410411412413414420421422423424430431432433434440441442443444500501502503504505510511512513514515520521522523524525530531532533534535540541542543544545550551552553554555600601602603604605606610611612613614615616620621622623624625626630631632633634635636640641642643644645646650651652653654655656660661662663664665666700701702703704705706707710711712713714715716717720721722723724725726727730731732733734735736737740741742743744745746747750751752753754755756757760761762763764765766767770771772773774775776777800801802803804805806807808810811812813814815816817818820821822823824825826827828830831832833834835836837838840841842843844845846847848850851852853854855856857858860861862863864865866867868870871872873874875876877878880881882883884885886887888900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990
Variante # 2
16 Bytes, 1127 Ausgabe
991,99>{`.$2>>},
Durch vorheriges Abhebeln aller Werte unter 99 kann die resultierende Zeichenfolge noch weiter gekürzt werden.
99100101110111200201202210211212220221222300301302303310311312313320321322323330331332333400401402403404410411412413414420421422423424430431432433434440441442443444500501502503504505510511512513514515520521522523524525530531532533534535540541542543544545550551552553554555600601602603604605606610611612613614615616620621622623624625626630631632633634635636640641642643644645646650651652653654655656660661662663664665666700701702703704705706707710711712713714715716717720721722723724725726727730731732733734735736737740741742743744745746747750751752753754755756757760761762763764765766767770771772773774775776777800801802803804805806807808810811812813814815816817818820821822823824825826827828830831832833834835836837838840841842843844845846847848850851852853854855856857858860861862863864865866867868870871872873874875876877878880881882883884885886887888900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990
Golfscript - 19 Bytes, 1016 Ausgabe
910,99>{`.2$\?)>+}/
Die obigen Werte reichen von 99 bis 909 und addieren jeden Wert, der noch nicht erschienen ist ( 909 wäre normalerweise der letzte Wert, der auf diese Weise hinzugefügt wird). Das Verschieben von 99 nach vorne ist eine Optimierung, um zu vermeiden, dass 910 nach hinten benötigt wird.
Ausgabe:
99100101102103104105106107108109111112113114115116117118119120122123124125126127128129130132133134135136137138139140142143144145146147148149150152153154155156157158159160162163164165166167168169170172173174175176177178179180182183184185186187188189190192193194195196197198199200202203204205206207208209222223224225226227228229230233234235236237238239240243244245246247248249250253254255256257258259260263264265266267268269270273274275276277278279280283284285286287288289290293294295296297298299300303304305306307308309333334335336337338339340344345346347348349350354355356357358359360364365366367368369370374375376377378379380384385386387388389390394395396397398399400404405406407408409444445446447448449450455456457458459460465466467468469470475476477478479480485486487488489490495496497498499500505506507508509555556557558559560566567568569570576577578579580586587588589590596597598599600606607608609666667668669670677678679680687688689690697698699700707708709777778779780788789790798799800808809888889890899900909
Golfscript 26 Bytes, 999 Ausgabe
909.,99>{`..$.2><3$@?+>+}/
Beachten Sie, dass die von der vorherigen Lösung erzeugte 1016- Zeichenfolge nahezu optimal ist, mit Ausnahme von zwei zusätzlichen Ziffern für jedes Vielfache von 111 (dh 11111
anstelle von 111
, 22222
anstelle von 222
usw.). Die Lösung kann optimiert werden, indem diese zusätzlichen Ziffern entfernt werden (statt drei nur eine Ziffer bei jedem dieser Werte) und 909
nach vorne gedreht wird, um ein zu entfernen 9
(dies unterscheidet sich von den vorherigen Versionen, die 9100
stattdessen nach hinten verschoben wurden) ).
Abgerollt und kommentiert:
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
Die Logik zur Auswahl der angehängten Zeichen besteht aus drei Fällen:
- 111 ∤ n , n ⊄ s
Der Wert aus der ersten Prüfung ist 1 und aus der zweiten -1 .
Das Slice beginnt ab Index 0 ; Es wird die gesamte Zeichenfolge zurückgegeben.
- 111 ∤ n , n ⊂ s
Der Wert aus der ersten Prüfung ist 1 und aus der zweiten etwas ≥ 2 .
Die Scheibe beginnt ab Index ≥ 3 zu starren; Es wird eine leere Zeichenfolge zurückgegeben.
- 111 ∣ n , n ⊄ s
Der Wert aus der ersten Prüfung ist 0 und aus der zweiten -1 .
Das Slice beginnt mit Index -1 . es wird nur das letzte Zeichen zurückgegeben.
Die Summe der Logik ist, dass ein noch nicht erschienener Wert vollständig angehängt wird - es sei denn, es handelt sich um ein Vielfaches von 111. In diesem Fall wird nur ein Zeichen angehängt. Alle anderen Werte werden ignoriert.
Beachten Sie, dass sich die erzeugte Saite von der optimalen Saite unterscheidet, die von Peter Taylors Antwort erzeugt wurde .
Geschichte:
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
Ausgabe:
909910010110210310410510610710810911121131141151161171181191201221231241251261271281291301321331341351361371381391401421431441451461471481491501521531541551561571581591601621631641651661671681691701721731741751761771781791801821831841851861871881891901921931941951961971981992002022032042052062072082092223224225226227228229230233234235236237238239240243244245246247248249250253254255256257258259260263264265266267268269270273274275276277278279280283284285286287288289290293294295296297298299300303304305306307308309333433533633733833934034434534634734834935035435535635735835936036436536636736836937037437537637737837938038438538638738838939039439539639739839940040440540640740840944454464474484494504554564574584594604654664674684694704754764774784794804854864874884894904954964974984995005055065075085095556557558559560566567568569570576577578579580586587588589590596597598599600606607608609666766866967067767867968068768868969069769869970070770870977787797807887897907987998008088098889890899900