Wprowadzenie
Jest to kontynuacja tego wyzwania, w którym wcielasz się w rolę złego bliźniaka tej osoby. Będąc złym, nie chcesz maksymalizować swojego udziału, ale raczej bądź tak niesprawiedliwy, jak to tylko możliwe i nie sprawisz, że stanie się to zbyt oczywiste, dlatego wymyśliłeś następujący schemat:
Powiesz innym, że chcesz być tak sprawiedliwy, jak to możliwe, jak twoje rodzeństwo, a tym samym podzielisz liczbę całkowitą na kawałki o równej długości. Tak więc dla każdej liczby całkowitej znajdziesz odpowiednią liczbę osób, tak aby różnica między największym i najmniejszym kawałkiem była maksymalna.
Na przykład, jeśli masz liczbę całkowitą, 6567
którą możesz pozostawić bez zmian, podziel ją na dwie części 65,67
lub cztery 6,5,6,7
. Daje to następujące maksymalne różnice:
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
Od kiedy tylko chcę być zła, że nie preferują 67
nad 7
iw ten sposób wyświetli albo 2
albo 4
.
Kolejny (mniej szczególny przypadek); biorąc pod uwagę liczbę całkowitą, 121131
możesz ją podzielić w następujący sposób:
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
Tym razem jest tylko jedno rozwiązanie - mianowicie 3
- ponieważ u trzech osób różnica jest maksymalna.
Wyzwanie
Biorąc pod uwagę liczbę całkowitą, określ jakikolwiek możliwy sposób bycia maksymalnie złym i zgłoś liczbę osób potrzebnych do osiągnięcia tego.
Zasady
- Wejście zawsze będzie wynosić ≥ 1
- Dane wejściowe mogą być liczbą całkowitą, listą cyfr lub łańcuchem
- Nie musisz obsługiwać nieprawidłowych danych wejściowych
Przypadki testowe
Musisz tylko zgłosić wynikową liczbę potrzebnych osób, możliwe partycje są tylko dla ilustracji:
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
źródło
Odpowiedzi:
Galaretka ,
1614 bajtówMonadyczny link pobierający listę liczb całkowitych (cyfr) i zwracający liczbę całkowitą.
Wypróbuj online! lub zobacz zestaw testowy
W jaki sposób?
źródło
ŒṖ
i./
oba są dłuższePyth , 20 bajtów
Wypróbuj tutaj!
Nie używam już partycji, bo okazuje się, że są dłuższe !!! Skończyło się na podzieleniu na podlisty o długości równej dzielnikom długości.
źródło
05AB1E , 12 bajtów
Wypróbuj online!
05AB1E , 12 bajtów
Wypróbuj online!
Jak to działa
05AB1E jest po prostu niesamowicie zwięzły do tego wyzwania.
źródło
JavaScript (ES6),
118115 bajtówZaoszczędzono 3 bajty dzięki @ edc65
Pobiera dane wejściowe jako ciąg.
Przypadki testowe
Pokaż fragment kodu
źródło
Python 2 ,
138132 bajtówWypróbuj online!
źródło
Haskell , 114 bajtów
Wypróbuj online!
źródło
Perl 5 , 70 bajtów
Wypróbuj online!
źródło
Galaretka , 20 bajtów
Wypróbuj online!
źródło