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
1234wü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
-4321wü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 3854würde werden 3084, wenn man es unter 3798die niedrigsten 50% legt , 3854ist also keine führende Zahl in dieser Liste. Gleiches gilt für 3918das 3098, was auch unten stehen würde 3798. Die anderen drei Zahlen sind führend, wie 5827es werden würde 5087, was immer noch über 3798und 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, da1485sie1045nach 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]