Einführung
Dies ist eine Fortsetzung dieser Herausforderung, bei der Sie die Rolle des bösen Zwillings dieser Person übernehmen. Als Übel wollen Sie Ihren Anteil nicht maximieren, sondern sind so unfair wie möglich und Sie werden es nicht zu offensichtlich machen. Deshalb haben Sie folgendes Schema entwickelt:
Sie werden den anderen sagen, dass Sie so fair wie möglich sein möchten, wie Ihr Geschwister, und daher werden Sie die ganze Zahl in gleich lange Stücke aufteilen. Sie werden also für jede ganze Zahl die richtige Anzahl von Personen finden, so dass der Unterschied zwischen dem größten und dem kleinsten Teil maximal ist.
Wenn Sie beispielsweise die Ganzzahl erhalten, können 6567
Sie sie unverändert lassen und in zwei 65,67
oder vier Teile teilen 6,5,6,7
. Dies gibt Ihnen die folgenden maximalen Unterschiede:
6567 -> max() = 0
65,67 -> max(|65-67|) = 2
6,5,6,7 -> max(|6-5|,|6-5|,|6-6|,|6-7|,|5-6|,|5-7|,|6-7|) = 2
Da Sie nur böse sein wollen bevorzugen Sie nicht 67
über 7
und so werden Sie Ausgang entweder 2
oder 4
.
Ein anderer (weniger spezieller Fall); Wenn 121131
Sie die ganze Zahl angeben, können Sie sie wie folgt aufteilen:
121131 -> max() = 0
121,131 -> max(|121-131|) = 10
12,11,31 -> max(|12-11|,|12-31|,|11-31|) = 20
1,2,1,1,3,1 -> max(…) = 2
Diesmal gibt es nur eine Lösung - nämlich 3
- da bei drei Personen der Unterschied maximal ist.
Herausforderung
Gegeben eine ganze Zahl bestimmen , jede mögliche Art und Weise des Seins maximal Übel und berichten über die Zahl der Menschen , dies zu erreichen , benötigt.
Regeln
- Die Eingabe ist immer ≥ 1
- Die Eingabe kann entweder eine Ganzzahl, eine Ziffernliste oder eine Zeichenfolge sein
- Sie müssen keine ungültigen Eingaben verarbeiten
Testfälle
Sie müssen nur die resultierende Anzahl der benötigten Personen angeben, die möglichen Partitionen dienen nur zur Veranschaulichung:
In -> splits (difference) -> Out
1 -> [1] (0) -> 1
10 -> [1,0] (1) -> 2
11 -> [11] or [1,1] (0) -> 1 or 2
12 -> [1,2] (1) -> 2
42 -> [4,2] (2) -> 2
101 -> [1,0,1] (1) -> 3
2222 -> [2222] or [22,22] or [2,2,2,2] (0) -> 1 or 2 or 4
6567 -> [65,67] or [6,5,6,7] (2) -> 2 or 4
123000 -> [123,000] (123) -> 2
123001 -> [123,001] (122) -> 2
121131 -> [12,11,31] (20) -> 3
294884 -> [294,884] (590) -> 2
192884729 -> [192,884,729] (692) -> 3
123456189012 -> [123456,189012] (65556) -> 2
123457117346 -> [1234,5711,7346] (6112) -> 3
quelle
Antworten:
Jelly ,
16 bis14 BytesEin monadischer Link, der eine Liste von ganzen Zahlen (die Ziffern) aufnimmt und eine ganze Zahl zurückgibt.
Probieren Sie es online! oder sehen Sie sich eine Testsuite an
Wie?
quelle
ŒṖ
und./
sind beide längerPyth , 20 Bytes
Probieren Sie es hier aus!
Ich benutze keine Partitionen mehr, weil es sich als länger herausstellt !!! Am Ende wurde ich in Unterlisten mit einer Länge aufgeteilt, die den Teilern der Länge entspricht.
quelle
05AB1E , 12 Bytes
Probieren Sie es online!
05AB1E , 12 Bytes
Probieren Sie es online!
Wie es funktioniert
05AB1E ist für diese Herausforderung einfach unglaublich knapp.
quelle
JavaScript (ES6),
118115 Byte3 Bytes gespart dank @ edc65
Übernimmt die Eingabe als Zeichenfolge.
Testfälle
Code-Snippet anzeigen
quelle
Python 2 ,
138132 BytesProbieren Sie es online!
quelle
Haskell , 114 Bytes
Probieren Sie es online!
quelle
Perl 5 , 70 Bytes
Probieren Sie es online!
quelle
Gelee , 20 Bytes
Probieren Sie es online!
quelle