Listen Sie alle möglichen Titel für die Anno-Spiele auf

37

In der Anno-Videospielserie gibt es 6 Spiele, von denen ein siebtes für Anfang 2019 angekündigt wurde. Ihre Titel enthalten immer ein Jahr in einem bestimmten Muster:

Anno 1602, Anno 1503, Anno 1701, Anno 1404, Anno 2070, Anno 2205, Anno 1800

  • Die digitale Summe ist immer 9.
  • Die Jahre sind vierstellig.
  • Sie enthalten mindestens eine Null.

Innerhalb dieser Einschränkungen gibt es 109 mögliche Titel:

[1008,1017,1026,1035,1044,1053,1062,1071,1080,1107,1170,1206,1260,1305,1350,1404,1440,1503,1530,1602,1620,1701,1710,1800,2007,2016,2025,2034,2043,2052,2061,2070,2106,2160,2205,2250,2304,2340,2403,2430,2502,2520,2601,2610,2700,3006,3015,3024,3033,3042,3051,3060,3105,3150,3204,3240,3303,3330,3402,3420,3501,3510,3600,4005,4014,4023,4032,4041,4050,4104,4140,4203,4230,4302,4320,4401,4410,4500,5004,5013,5022,5031,5040,5103,5130,5202,5220,5301,5310,5400,6003,6012,6021,6030,6102,6120,6201,6210,6300,7002,7011,7020,7101,7110,7200,8001,8010,8100,9000]

Ihr Ziel ist es, sie alle in einer angemessenen Form in der geringsten Anzahl von Bytes aufzulisten.

Laikoni
quelle
Wie flexibel ist das Ausgabeformat? Ist das akzeptabel?
Luis Mendo
1
@ LuisMendo Ja, das ist in Ordnung mit mir.
Laikoni
Sind Ziffernlisten erlaubt?
Erik der Outgolfer
1
@aslum Ich nehme an, du meinst viele Räume, nicht nur einen, oder? Ein Kommentar-Abschlag erlaubt keine gute Darstellung davon. Und ich würde annehmen, dass das erlaubt ist, vorausgesetzt, dass Luis 'Format oben erlaubt ist. ;-)
Erik der Outgolfer
1
@EriktheOutgolfer Ich würde zu Ziffernlisten nein sagen, weil sie wirklich nicht mehr wie Jahre aussehen.
Laikoni

Antworten:

20

R , 59 51 Bytes

Gibt die gültigen Zahlen als Namen einer Liste von 201 aus. Warum 201? Weil ASCII 0 48 ist und 4 * 48 + 9 ... ja. 6 Bytes durch Aliasing ^auf Mapund weitere 2 durch Verwendung 1:9e3als Bereich gespeichert .

"^"=Map;x=sum^utf8ToInt^grep(0,1:9e3,,,T);x[x==201]

Probieren Sie es online!

Erläuterung

# Create list of sums of ASCII char values of numbers,
# with the original numbers as the names of the list
x <- Map(sum,
  # Create a list from the strings where each element is the string split 
  # into ASCII char values
  Map(utf8ToInt,
      # Find all numbers between 1 and 9e3 that contain a zero
      # Return the matched values as a vector of strings (6th T arg)
      grep(pattern=0,x=1:9000,value=TRUE)
  )
)
# Pick out elements with value 201 (i.e. 4-digits that sum to 9)
# This implicitly only picks out elements with 4 digits, since 3-digit 
# sums to 9 won't have this ASCII sum, letting us use the 1:9e3 range
x[x==201] 
J.Doe
quelle
3
ah, grepwarum erinnere ich mich nie, dass es auf character...
Giuseppe
9

Python 2 , 67 66 64 Bytes

print[y for y in range(9001)if('0'in`y`)*sum(map(ord,`y`))==201]

Probieren Sie es online!


Gerettet:

  • -1 Byte, danke an Luis felipe De jesus Munoz
  • -2 Bytes, danke an Kevin Cruijssen
TFeld
quelle
64 Bytes mit dem ord sum == 201Trick aus anderen Antworten.
Kevin Cruijssen
9

Jelly , 11 Bytes

9ȷṢ€æ.ẹ9ṫ19

Probieren Sie es online!

Wie es funktioniert

9ȷṢ€æ.ẹ9ṫ19  Main link. No arguments.

9ȷ           Set the left argument and the return value to 9000.
  Ṣ€         Sort the digits of each integer in [1, ..., 9000].
    æ.       Perform the dot product of each digit list and the left argument,
             which gets promoted from 9000 to [9000].
             Overflowing digits get summed without multiplying, so we essentially
             map the digit list [a, b, c, d] to (9000a + b + c + d).
      ẹ9     Find all 1-based indices of 9.
             Note that 9000a + b + c + d == 9 iff a == 0 and b + c + d == 9.
        ṫ19  Tail 19; discard the first 18 indices.
Dennis
quelle
7

PowerShell , 50 bis 49 Byte

999..1e4-match0|?{([char[]]"$_"-join'+'|iex)-eq9}

Probieren Sie es online!

Erstellt einen Bereich von 999bis 10000und verwendet dann Inline -matchals Filter, um die Einträge herauszufiltern, mit denen Regex übereinstimmt 0. Dies lässt uns bei 1000, 1001, 1002, etc.Wir leiten das dann in eine Where-ObjectKlausel, in der wir die aktuelle Nummer als Zeichenkette nehmen "$_", sie als char-array umwandeln, -joindiese Zeichen zusammen mit +und Invoke- Expression (ähnlich wie eval), um ihre Ziffernsumme zu erhalten. Wir prüfen, ob dies der -eqFall ist 9, und wenn ja, wird es an die Pipeline weitergeleitet. Nach Abschluss des Programms werden diese Nummern aus der Pipeline abgerufen und implizit ausgegeben.

AdmBorkBork
quelle
5

JavaScript (ES6), 78-73 Byte

2 Bytes dank @KevinCruijssen gespeichert

Gibt eine durch Leerzeichen getrennte Zeichenfolge zurück.

f=(n=9e3)=>n>999?f(n-9)+(eval([...n+''].join`+`)&/0/.test(n)?n+' ':''):''

Probieren Sie es online!

Wie?

Wir durchlaufen den Bereich [1008..9000] mit einem Inkrement von 9 und ignorieren Zahlen ohne 0 .

Alle diese Zahlen sind Vielfache von 9 , so dass die Summe ihrer Ziffern garantiert auch ein Vielfaches von 9 .

Da gültige Zahlen haben mindestens eine 0 , haben sie nicht mehr als zwei 9 ‚s, was bedeutet , dass die Summe der übrigen Ziffern höchstens 18 . Daher ist es ausreichend zu testen, ob die Summe der Ziffern ungerade ist.

Daher der Test:

(eval([...n + ''].join`+`) & /0/.test(n)
Arnauld
quelle
Sie können ein Byte speichern die Veränderung 1008auf 999, da sie keine 0 sowieso nicht enthält, und 999+9 = 1008.
Kevin Cruijssen
Oder sogar 2 Bytes durch Ändern in f=(n=9e3)=>n<1e3?'':(eval([...n+''].join`+`)<10&/0/.test(n)?[n,,]:'')+f(n-9)(enthält jedoch ein nachgestelltes Komma, sodass ein f=(n=9e3)=>n<1e3?'':(eval([...n+''].join`+`)<10&/0/.test(n)?n+' ':'')+f(n-9)Leerzeichen mit nachgestelltem Leerzeichen möglicherweise hübscher aussieht)
Kevin Cruijssen
@ KevinCruijssen Danke! Eigentlich versuche ich, dies für eine Weile zu aktualisieren, aber ich habe heute Abend eine Internetbandbreite von 500B / s. : /
Arnauld
Ich kenne das Gefühl. In letzter Zeit ist unser Internet zu Hause aus irgendeinem Grund Mist. Ich kann nichts über 10 MB herunterladen und muss manchmal Videos oder Seiten mit mehr als 10 Bildern ein paar Mal aktualisieren, bevor es vollständig geladen wird. Wirklich ärgerlich wenn ich montags / dienstags von zu Hause aus arbeite ..>.> Morgen kommt jemand, um das
Problem
5

JavaScript (Node.js) , 89 Byte

[...Array(9e3)].map(_=>i++,i=1e3).filter(a=>(s=[...a+""]).sort()[0]<1&eval(s.join`+`)==9)

Probieren Sie es online!

  • -4 Bytes dank @ETHproductions

JavaScript (Node.js), 129 127 126 124 115 114 111 110 105 97 93 92 90 Byte

[...Array(9e3)].map(f=(_,i)=>eval(s=[...(i+=1e3)+""].sort().join`+`)-9|s[0]?0:i).filter(f)

Probieren Sie es online!

Erläuterung

[...Array(9e3)].map(f=(_,i)=>eval(s=[...(i+=1e3)+""].sort().join`+`)-9|s[0]?0:i).filter(f)
[...Array(9e3)].map(f=(_,i)=>                                                  )           // Create a 9000-length array and loop over it; store the loop body
                                    [...(i+=1e3)+""]                                       // Add 1000 to the index and split it into an array of characters (17 -> ["1", "0", "1", "7"])
                                                    .sort()                                // Sort the array of characters in ascending order by their code points ("0" will always be first) (["1", "0", "1", "7"] -> ["0", "1", "1", "7"])
                                  s=                       .join`+`                        // Join them together with "+" as the separator (["0", "1", "1", "7"] -> "0+0+2+9"); store the result
                             eval(                                 )-9                     // Evaluate and test if it's different than 9
                                                                       s[0]                // Take the first character of the string and implicitly test if it's different than "0"
                                                                      |    ?0              // If either of those tests succeeded, then the number doesn't meet challenge criteria - return a falsey value
                                                                             :i            // Otherwise, return the index
                                                                                .filter(f) // Filter out falsey values by reusing the loop body

Zum ersten Mal Code Golf in JavaScript. Ich glaube nicht, dass ich es sagen muss, aber wenn ich etwas falsch mache, benachrichtige mich bitte in den Kommentaren unten.

  • -3 Bytes dank @Luis felipe De jesus Munoz

  • -6 Bytes dank @Kevin Cruijssen

Ein Löwe
quelle
1
[...Array(9e3)]Array(9e3).fill()Speichert stattdessen 2 Bytes
Luis Felipe De Jesus Munoz
1
.map(a=>+a).map(Number)speichert stattdessen ein weiteres Byte
Luis Felipe De Jesus Munoz
1
Sie können den Speicherplatz um entfernen (_, i), um ein Byte zu speichern, und Sie s[0]+s[1]+s[2]+s[3]können eval(s.join`+`)weitere 4 Bytes speichern.
Kevin Cruijssen
1
Auch ich bin mir ziemlich sicher , dass das ||kann |in Ihrer Antwort.
Kevin Cruijssen
1
Wenn Sie .map()nur zum Generieren des Bereichs und zum Trennen der Filterung verwenden, können Sie 8 Byte sparen: Probieren Sie es online aus!
ETHproductions
5

Python 2 , 57 Bytes

n=999
exec"n+=9\nif'0'in`n`>int(`n`,11)%10>8:print n\n"*n

Probieren Sie es online!

2 Bytes dank Dennis

Verwendet eine execSchleife, um nin Schritten von 9 als 1008, 1017, ..., 9981, 9990 hochzuzählen und diejenigen zu drucken, die die Bedingung erfüllen.

Nur Vielfache von 9 können eine Ziffernsumme von 9 haben, aber Vielfache von 9 in diesem Bereich können auch Ziffernsummen von 18 und 27 haben. Wir schließen dies mit der Bedingung aus int(`n`,11)%10>8. Interpretieren der nin der Basis 11, ist seine digit Summe gleich die Anzahl modulo 10, genau wie in der Basis 10 eine Reihe gleich sein digit Summe modulo 9. Die Ziffern Summe von (9, 18, 27) entspricht (9, 8, 7) Modulo 10, also nehmen Sie diese >8Arbeiten, um Neunen herauszufiltern.

Die Zahl, die eine Null enthält, wird mit der String-Mitgliedschaft überprüft. '0'in`n`. Diese Bedingung wird mit der anderen Bedingung mit einer verketteten Ungleichung verknüpft, wobei Python 2 Zeichenfolgen als größer als Zahlen behandelt.

xnor
quelle
Ich mag, wie stark Golf Python scheint oft enorm lange autogenerierte ausführbare Dateien haben ...
J.Doe
4

sed und grep (und seq), 72 64 63 Bytes

seq 9e3|sed s/\\B/+/g|bc|grep -wn 9|sed s/:9//|grep 0|grep ....
Thor
quelle
Einige davon sind nicht vierstellig (aber ich bin nicht sicher, was das Finale grepist, also mache ich es vielleicht falsch?)
Sparhawk
@Sparhawk: Das letzte Grep stellt sicher, dass die Nummer 4 Ziffern lang ist
Thor
@Thor Ah richtig. Aus irgendeinem Grund habe ich das als Ellipse analysiert.
Sparhawk
4

Haskell , 55 Bytes

[i|i<-show<$>[1..5^6],201==sum(fromEnum<$>i),elem '0'i]

Danke an @Laikoni, siehe die Kommentare.

Lesbar:

import Data.Char (digitToInt)

[i | i <- show <$> [1000..9999]
   , sum (digitToInt <$> i) == 9
   , '0' `elem` i
   ]
mb21
quelle
2
Willkommen bei PPCG und Haskell Golf im Besonderen! Sie können ein paar Bytes durch Eintropfen speichern (-48+)und Vergleichen der Summe gegen 201statt 9. Übrigens können Sie dies auch 1anstelle 1000für den Bereich verwenden.
Laikoni
Auch Ihre vorherige Version ohne main=printwar gemäß diesem Konsens über Meta in Ordnung .
Laikoni
9999kann 5^6stattdessen sein.
Laikoni
1
Ha, es gibt immer noch ein Byte zu rasieren! Danke :-)
mb21
3

R 82 Bytes

write((x=t(expand.grid(1:9,0:9,0:9,0:9)))[,colSums(x)==9&!apply(x,2,all)],1,4,,"")

Probieren Sie es online!

Erzeugt eine Matrix xaller möglichen 4-stelligen Zahlen mit Ausnahme der führenden Nullen in den unteren Spalten. Dann wird nach (digitalen) Spaltensummen von 9 gefiltert, die Null enthalten, dh nichtall ungleich Null. writeDruck nach unten den Spalten, so dass wir writeauf stdoutmit einer Breite von 4und einem Separator "".

Outgolfed von J.Doe

Giuseppe
quelle
Gute Antwort! Ich habe mir eine andere Route
ausgedacht
3

Japt , 20 bis 18 Bytes.

-2 Bytes dank @Shaggy und @ETHproductions

A³òL² f_=ì)x ¥9«Z×

A³òL² f_=ì)x ¥9«Z×  Full program
A³òL²               Range [1000, 10000]
      f_            Filter by : 
        =ì)         Convert to array 
           x ¥9     Sum equal to 9?
               «    And 
                Z×  Product not 0

Probieren Sie es online!

Luis Felipe De Jesus Munoz
quelle
Das sind eigentlich 28 Bytes . Die Verwendung einer wörtlichen Ganzzahl ist stattdessen 22 Bytes, A³ò9000 f_ìx ¥9©ZsøTbringt Sie aber wieder auf 20 zurück.
Shaggy
1
Sie können 1 Byte speichern , indem Sie ìstatt sund ¬, die im Filter getan werden muss: f_=ì)x ¥9.... Dann können Sie einen anderen speichern, indem Sie prüfen, ob das Produkt von Z Null ist «Z×: Probieren Sie es online aus!
ETHproductions
3

Java 8, 128 117 115 Bytes

v->{int i=109,r[]=new int[i],n=i;for(;i>0;n++)if((n+"").chars().sum()==201&(n+"").contains("0"))r[--i]=n;return r;}

-11 Bytes dank @nwellnhof .

Probieren Sie es online aus.

Erläuterung:

v->{                              // Method with empty unused parameter & int-array return
  int i=109,                      //  Index-integer, starting at 109
      r[]=new int[i],             //  Result-array of size 109
      n=i;                        //  Number integer, starting at 109
   for(;i>0;                      //  Loop as long as `i` is not 0 yet:
       n++)                       //    After every iteration, increase `n` by 1
     if((n+"").chars().sum()==201 //   If the sum of the unicode values of `n` is 201,
                                  //   this means there are four digits, with digit-sum = 9
        &(n+"").contains("0"))    //   and `n` contains a 0:
       r[--i                      //    Decrease `i` by 1 first
            ]=n;                  //    And put `n` in the array at index `i`
  return r;}                      //  Return the array as result
Kevin Cruijssen
quelle
1
Was ist chars().sum()==201?
Nwellnhof
@nwellnhof Ah, natürlich. Vielen Dank!
Kevin Cruijssen
3

R , 85 Bytes

(nur im Wettbewerb um den besten Missbrauch von eckigen Klammern ...: P)

`[`=`for`;i[a<-0:9,j[a,k[a,w[a,if(sum(s<-c(i,j,k,w))==9&any(!s)&i)write(s,1,s='')]]]]

Probieren Sie es online!

digEmAll
quelle
1
Heilig für Schleifen, Batman!
BLT
3

05AB1E , 15 13 12 10 Bytes

₄4°ŸεW°ö9Q

-2 Bytes dank @Emigna
-3 Bytes dank @Grimy

Probieren Sie es online aus.

Erläuterung:

4°Ÿ        # Create a list in the range [1000,10000]
    ʒ       # Filter this list by:
     W      #  Get the smallest digit in the number (without popping the number itself)
      °     #  Take 10 to the power this digit
       ö    #  Convert the number from this base to an integer (in base-10)
        9Q  #  Check if it's equal to 9
  • d=0110d°ö
  • d=11010d°ö
  • d=210010d°ö023452030405
  • d=3100010d°ö0034563004005006
  • d=[4,9]d=2d=3d-10

>0[1000,10000]°ö[1111,9000000009000000009000000009]999Qd=0°ö9

Kevin Cruijssen
quelle
1
₄4°Ÿʒ0å}ʒSO9Q. Splitting Filter sind in der Regel kürzer
Emigna
@Emigna Ah, ich habe nach einem kürzeren Weg für die Reichweite gesucht, aber völlig vergessen . Vielen Dank. Und Sie haben in der Tat Recht, dass mehrere lose Filter (am Ende) kürzer sind. Fügt es auch einer meiner Tippantworten hinzu. Danke für beide Bytes!
Kevin Cruijssen
1
Und mein anderer 13-Byte-Trick (inspiriert durch den Trick ord sum == 201) ist 4°Lʒ0å}ʒÇOт·-. Wenn Sie dies hier lassen, kann vielleicht jemand weiter Golf spielen
Mr. Xcoder,
1
₄4°ŸʒD0åôO9Q. Die Verwendung eines einzelnen Filters ist normalerweise kürzer.
Grimmy
1
Egal, hier ist ein 10:₄4°ŸʒW°ö9Q
Grimmy
2

Pip , 18 Bytes

{0Na&$+a=9}FIm,t*m

Verwenden Sie ein Output-Format-Flag -p, um eine lesbare Ausgabe zu erhalten. Probieren Sie es online!

{0Na&$+a=9}FIm,t*m
             m,t*m  Range from 1000 to 10*1000
{         }FI       Filter on this function:
 0Na                 There is at least one 0 in the argument
    &                and
     $+a             The sum of the argument
        =9           equals 9
DLosc
quelle
2

Wolfram Language (Mathematica) , 56-55 Bytes

Select[9!!~Range~9999,Tr@#==Times@@#+9&@*IntegerDigits]

Probieren Sie es online!

Wir testen den Bereich von 9 !! = 945 bis 9999, da es keine Ergebnisse zwischen 945 und 999 gibt. Vielleicht gibt es auch eine kürzere Möglichkeit, eine Zahl zwischen 9000 und 10007 zu schreiben.

Tr@#==Times@@#+9&{a,b,c,d}Wird auf Tests angewendet, wenn dies a+b+c+d == a*b*c*d+9der Anno-Bedingung entspricht.

Mischa Lawrow
quelle
Rückblickend 9 !! ist nicht kürzer als 999 oder so, aber es schlägt 1000.
Mischa Lawrow
Was ist 9 !! ? Beim Erraten hängt es nicht mit Fakultäten zusammen.
Robert Fraser
@RobertFraser Doppel faktorielles: 9*7*5*3*1.
Mischa Lawrow
2

Rubin , 46 42 41 Bytes

?9.upto(?9*4){|x|x.sum==201&&x[?0]&&p(x)}

Probieren Sie es online!

Wie es funktioniert:

  • Iteriere auf Strings von '9' bis '9999'
  • Stellen Sie sicher, dass die Summe der ASCII-Werte 201 ist
  • Überprüfen Sie, ob der String eine Null enthält (ohne Regex wäre ein Regex 1 Byte länger).

(Danke Laikoni für -2 Bytes)

GB
quelle
1
9*3kann nur sein 9, weil die Prüfung gegen 201 bereits 4-stellige Zahlen erfordert.
Laikoni
2

Oktave , 49 Bytes

6 Bytes werden mit einem bequemeren Ausgabeformat gespeichert, wie von J.Doe vorgeschlagen .

Danke an @Laikoni für die Korrektur .

y=dec2base(x=1e3:9999,10)'-48;x(sum(y)==9>all(y))

Probieren Sie es online!

Luis Mendo
quelle
Ich weiß nichts über Octave, aber es sieht so aus, als könnten Sie das disp
Auslassen
@ J.Doe OP hat bestätigt, dass das Ausgabeformat akzeptabel ist. Danke für den Vorschlag!
Luis Mendo
2

Dart ,  103 100  96 Bytes

f()=>List.generate(9001,(i)=>'$i').where((i)=>i.contains('0')&&i.runes.fold(0,(p,e)=>p+e)==201);

  • -3 Byte, indem Sie den Wert im Array auf string setzen und die Konvertierung einmal und nicht zweimal durchführen
  • -4 Bytes mit Runen anstelle von CodeUnits
  • Ziemlich selbsterklärend. generiert eine Liste von 9001 (0-9000) Zellen mit dem Index der Zelle als Wert, filtert diejenigen, die eine 0 enthalten, und diejenigen, die eine ASCII-Summe von 201 haben (das Ergebnis, wenn alle ASCII-Zeichen 9 ergeben). Diese Bedingungen beinhalten implizit, dass das Jahr 4 Stellen lang ist, da Sie mit 2 ASCII-Zahlen (und der 0) nicht 201 erreichen können.

    Probieren Sie es auf Dartpad!

    Elcan
    quelle
    Willkommen bei PPCG. :)
    Laikoni
    1
    Vielen Dank !
    Lauert schon
    2

    Bash (mit seq, grep), 39 Bytes

    seq 0 9 1e4|egrep '([0-4].*){3}'|grep 0

    Probieren Sie es online!

    tsh
    quelle
    @xobzoo schlug seq 0 9 1e4|awk '/([0-4].*){3}/&&/0/'vor, zwei Bytes zu speichern.
    Timtech
    2

    K (ngn / k) , 22 Bytes

    55_&(|/~a)&9=+/a:!4#10
    

    Probieren Sie es online!

    ngn
    quelle
    Nett! 55_&9=+/y*|/'~y:!4#10für 21?
    Streetster
    1
    @streetster danke :) das 'in|/' sieht falsch aus. Das Ergebnis enthält 1116, 1125, 1134 usw., die nicht vorhanden sein sollen
    ngn 18.10.18
    2

    PHP, 69, 87 Bytes 74 Bytes

    for($i=999;$i<9001;$i++){echo((array_sum(str_split($i))==9&strpos($i,"0")!=0)?$i:" ");} for($i=999;$i++<1e4;)echo!strpos($i,48)|array_sum(str_split($i))-9?" ":$i;

    Beachten Sie, dass hierdurch für jede "fehlgeschlagene" Zahl ein Leerzeichen eingefügt wird, was zu einem irren Abstand führt. Dies kann in Kommatrennung geändert werden, es werden jedoch weitere 4 Zeichen hinzugefügt:?$i.",":""

    Ist größer geworden, weil ich nicht auf 0 gecheckt habe. Verkürzt um 13 von Titus!

    ein Slum
    quelle
    2
    Ich kenne PHP nicht wirklich, aber stellt dieser Code sicher, dass jedes Jahr eine Null enthält?
    Laikoni
    Dieser Code überprüft die Nummer nicht auf Null.
    Krzysiej
    1
    13 Bytes kürzer:for($i=999;$i++<1e4;)echo!strpos($i,48)|array_sum(str_split($i))-9?" ":$i;
    Titus
    Hier ist ein weiteres Byte: ähm ?"$i,":""... jetzt umgekehrt:?"":"$i,"
    Titus
    Eigentlich fügt @Titus ein paar Bytes hinzu. Wir brauchen keine Anführungszeichen um $ i, es sei denn, wir fügen einen String mit ein.
    Aslum
    2

    Scala ( 76 63 61 56 Bytes)

    for(n<-0 to 9000;t=n+""if t.sum==201&t.min<49)println(t)
    

    Probieren Sie es online aus

    • Danke an Laikoni für die Vorschläge
    • Zwei weitere Bytes gehen verloren, nachdem Jo Kings Kommentar angewendet wurde
    Gauner
    quelle
    1
    Willkommen bei PPCG! Haben Sie eine Idee, was zum Kopf- oder Fußzeilenabschnitt hinzugefügt werden muss, damit dieser Code unter TIO ausgeführt wird? Probieren Sie es online!
    Laikoni
    @Laikoni, wusste nicht, dass ich Scala in TIO ausführen kann. Behoben. Danke für den Kommentar.
    Jrook
    1
    Es sieht aus wie t.sum==201Werke statt t.map(_.asDigit).sum==9.
    Laikoni,
    Vielleicht finden Sie unsere Tipps zum Golfen in der Scala interessant. ZB sieht es aus wie s"$n"kann n+""und s"$t "kann sein t+" ".
    Laikoni
    1
    Da Sie den Trick mit der Summe 201 verwenden, muss der Bereich nicht bei 999 beginnen
    Jo King
    1

    Japt, 16 Bytes

    Gibt ein Array von Ziffern-Arrays zurück.

    L²õì l4 k_ת9aZx
    

    Probier es aus


    Erläuterung

    L                    :100
     ²                   :Squared
      õ                  :Range [1,L²]
       ì                 :Convert each to a digit array
         l4              :Filter elements of length 4
            k_           :Remove each Z that returns truthy (not 0)
              ×          :  When reduced by multiplication
               ª         :  OR
                  Zx     :  When reduced by addition
                9a       :   And subtracted from 9
    
    Shaggy
    quelle
    1
    OP hat entschieden, dass Ziffernfelder leider keine gültige Ausgabe sind: o (
    Sok
    1

    APL (NARS), 45 Zeichen, 90 Byte

    f←{⍵×⍳(0∊x)∧9=+/x←⍎¨⍕⍵}⋄f¨1e3..5e3⋄f¨5e3..9e3
    

    Test nach einigen Formatierungen:

    1008  1017  1026  1035  1044  1053  1062  1071  1080  1107  1170  1206  1260  
      1305  1350  1404  1440  1503  1530  1602  1620  1701  1710  1800  2007  2016  
      2025  2034  2043  2052  2061  2070  2106  2160  2205  2250  2304  2340  
      2403  2430  2502  2520  2601  2610  2700  3006  3015  3024  3033  3042  3051  
      3060  3105  3150  3204  3240  3303  3330  3402  3420  3501  3510  3600  
      4005  4014  4023  4032  4041  4050  4104  4140  4203  4230  4302  4320  4401  
      4410  4500 
    5004  5013  5022  5031  5040  5103  5130  5202  5220  5301  5310  5400  6003  
      6012  6021  6030  6102  6120  6201  6210  6300  7002  7011  7020  7101  7110  
      7200  8001  8010  8100  9000 
    

    mögliche Alternative

    r←f;i;x
       r←⍬⋄i←1e3⋄→B
    A: r←r,i
    B: i+←1⋄→A×⍳(0∊x)∧9=+/x←⍎¨⍕i⋄→B×⍳i≤9e3
    
    RosLuP
    quelle
    1

    Jelly , 13 Bytes

    ȷ4µṢÄm3Ḍ)ẹ9ṫ4
    

    Probieren Sie es online!

    Wie?

    ȷ4µṢÄm3Ḍ)ẹ9ṫ4 - Link: no arguments
    ȷ4            - literal 10^4 = 10000
      µ     )     - for each in range (1,2,3,...,10000): e.g. 3042       or  5211
       Ṣ          -   sort (given an integer makes digits)    [0,2,3,4]      [1,1,2,5]
        Ä         -   cumulative addition                     [0,2,5,9]      [1,2,4,9]
         m3       -   modulo 3 slice (1st,4th,7th...)         [0,9]          [1,9]
           Ḍ      -   convert from decimal digits             9              19
             ẹ9   - 1-based indices equal to nine             [9,99,999,1008,1017,...,8100,9000]
               ṫ4 - tail from the 4th index                   [1008,1017,...,8100,9000]
    
    Jonathan Allan
    quelle