Einführung:
Im Niederländischen werden die Wörter Führen und Leiden, die "leiden" bzw. "lijden" sind, auf die gleiche Weise ausgesprochen. Einer ist mit einem "kurzen ei" und einer mit einem "langen ij" geschrieben , wie wir Holländer sagen würden, aber sowohl "ei" als auch "ij" werden ausgesprochen [ɛi].
Herausforderung:
Bestimmen Sie anhand einer Liste von Zahlen, welche (falls vorhanden) führend sind und welche (falls vorhanden) leiden.
Eine führende Zahl ist:
- Eine positive Zahl
- Hat mindestens vier Ziffern
- Ist in den höchsten 50% der Liste in Bezug auf den Wert
- Befindet sich wertmäßig immer noch in den höchsten 50% der Liste, wenn die 3. Ziffer durch die 2. Ziffer ersetzt wird und die 2. Ziffernposition mit einer 0 gefüllt wird (dh
1234
würde1024
)
Eine leidende Zahl ist:
- Eine negative Zahl
- Hat mindestens vier Ziffern
- Ist in den niedrigsten 50% der Liste in Bezug auf den Wert
- Befindet sich in Bezug auf den Wert immer noch in den niedrigsten 50% der Liste, wenn die 3. Ziffer durch die 2. Ziffer ersetzt wird und die 2. Ziffernposition mit einer 0 gefüllt wird (dh
-4321
würde-4031
)
Beispiel:
Eingabe: [5827, 281993, 3918, 3854, -32781, -2739, 37819, 0, 37298, -389]
Ausgabe: führend : [5827, 281993, 37819, 37298]
; Leiden:[-32781, -2739]
Erläuterung:
Wenn wir die Zahlen sortieren und in zwei Hälften teilen, wäre dies:
[[-32781, -2739, -389, 0, 3798], [3854, 3918, 5827, 37819, 281993]]
Es gibt nur zwei negative Zahlen mit mindestens vier Ziffern : [-32781, -2739]
. Das Ändern der Ziffern wie oben beschrieben würde ihre Position nicht ändern, daher leiden beide unter Zahlen.
Für die größte Hälfte haben alle Zahlen mindestens vier Ziffern : [3854, 3918, 5827, 37819, 281993]
. Das Ändern der Ziffern wie oben beschrieben würde jedoch einige ihrer Positionen ändern. Das 3854
würde werden 3084
, wenn man es unter 3798
die niedrigsten 50% legt , 3854
ist also keine führende Zahl in dieser Liste. Gleiches gilt für 3918
das 3098
, was auch unten stehen würde 3798
. Die anderen drei Zahlen sind führend, wie 5827
es werden würde 5087
, was immer noch über 3798
und tatsächlich immer noch auf dem gleichen Index der sortierten Liste liegt. Damit[5827, 37819, 281993]
sind die führenden Zahlen.
Herausforderungsregeln:
- E / A ist flexibel. Die Eingabeliste kann eine Liste von Ganzzahlen, 2D-Ziffernlisten, eine Liste von Zeichenfolgen usw. sein. Die Ausgabe kann eine Liste von Listen von Ganzzahlen, zwei getrennten Listen, zwei Zeichenfolgen sein, die beide auf STDOUT gedruckt sind usw.
- Wenn wir feststellen, ob eine Zahl führend ist / leidet, betrachten wir ihre neue Position dieser Zahl nur, wenn nur ihre Ziffern entsprechend geändert werden, nicht nachdem wir die Änderungen auf alle Zahlen angewendet haben.
- Wir geben die ursprünglichen Zahlen aus, nicht die geänderten.
- Die Nummern in den führenden und leidenden Ausgabelisten können in beliebiger Reihenfolge sein.
- Wenn die Größe der Eingabeliste ungerade ist, gehört die Zahl in der Mitte nicht zu einer der beiden Hälften.
- Die Nummern bleiben nach der Änderung garantiert eindeutig. Eine Liste wie
[0, 1, 1045, 1485]
ist also keine gültige Eingabeliste, da1485
sie1045
nach ihrer Änderung gleich wäre .
Allgemeine Regeln:
- Dies ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes.
Lassen Sie sich nicht von Code-Golf-Sprachen davon abhalten, Antworten mit Nicht-Codegolf-Sprachen zu veröffentlichen. Versuchen Sie, eine möglichst kurze Antwort für "jede" Programmiersprache zu finden. - Für Ihre Antwort gelten Standardregeln mit Standard-E / A-Regeln . Sie können also STDIN / STDOUT, Funktionen / Methoden mit den richtigen Parametern und vollständige Programme vom Rückgabetyp verwenden. Ihr Anruf.
- Standardschlupflöcher sind verboten.
- Wenn möglich, fügen Sie bitte einen Link mit einem Test für Ihren Code (dh TIO ) hinzu.
- Es wird dringend empfohlen, eine Erklärung für Ihre Antwort hinzuzufügen.
Testfälle:
Input: [5827, 281993, 3918, 3854, -32781, -2739, 37819, 0, 37298, -389]
Output: leading: [5827, 281993, 37819, 37298]; suffering: [-32781, -2739]
Input: [-100, 472, 413, -1782]
Output: leading: []; suffering: [-1782]
Input: [-1234, -1235, -1236, 1234, 1235, 1236]
Output: leading: [1234, 1235, 1236]; suffering: [-1234, -1235, -1236]
Input: [-1919, -1819, -1719, -1619, -1500, -1444, 40, 4444, 18]
Output: leading: [4444]; suffering: []
Input: [-1004, -1111, -1000]
Output: leading: []; suffering: [-1111]
Input: [-1004, -1111, -1010, 1000]
Output: leading: [1000]; suffering: [-1111]
Input: [1000, -1000]
Output: leading: [1000]; suffering: [-1000]
Input: [1000, -5000, 4000]
Output: leading: [4000]; suffering: [-5000]
quelle
Antworten:
05AB1E ,
2724232221 BytesProbieren Sie es online aus!
quelle
©
und®Åm
anstelle IhresÅmUy
und verwendetX
, um ein Byte zu speichern, aber Sie haben jetzt auch das entfernt,UX
indem Sie dasÅm ... ‹y
Nach der Karte ausgeführt haben. Es handelt sich also um eine ähnliche Optimierung. Ich mag deine eigentlich besser, da sie in diesem Fall keine unnötigen Variablen verwendet. :)0šāǝ
! : D Daran hätte ich nie gedacht!D¦0š2Lǝ
die gleiche Byteanzahl wieD1è0šāǝ
.Python 2 ,
119118111107 BytesProbieren Sie es online aus!
Ausgänge als
suffering, leading
.quelle
Gelee , 30 Bytes
Probieren Sie es online aus!
Angesichts der Länge von Grimys 05AB1E-Antwort bin ich sicher, dass dies besser gespielt werden kann, aber hier ist es.
quelle
JavaScript (Node.js) , 162 Byte
Probieren Sie es online aus!
Anonyme Funktion, die ein Array von Zahlen als Eingabe verwendet und ein Array mit 2 Elementen als Ausgabe ausgibt. Das erste Element im Ausgabearray ist ein Array führender Zahlen, das zweite Element im Ausgabearray ist ein Array folgender Zahlen.
quelle