Istnieje „gra”, w której piraci racjonalnie dzielą złote monety zgodnie z pewnymi zasadami. Cytowanie z Wikipedii :
Jest 5 racjonalnych piratów, A, B, C, D i E. Znajdują 100 złotych monet. Muszą zdecydować, jak je rozpowszechniać.
Piraci mają ścisły porządek starszeństwa: A jest lepszy od B, który jest lepszy od C, który jest lepszy od D, który jest lepszy od E.
Zasady dystrybucji tego pirackiego świata są następujące: najbardziej zaawansowany pirat powinien zaproponować dystrybucję monet. Piraci, w tym wnioskodawca, głosują następnie, czy przyjąć tę dystrybucję. W przypadku remisu decydujący głos ma decydujący. Jeśli dystrybucja zostanie zaakceptowana, monety są wypłacane i gra się kończy. Jeśli nie, wnioskodawca zostaje wyrzucony za burtę ze statku pirackiego i umiera, a następny najstarszy pirat składa nową propozycję ponownego uruchomienia systemu.
Piraci opierają swoje decyzje na trzech czynnikach. Przede wszystkim każdy pirat chce przetrwać. Po drugie, biorąc pod uwagę przetrwanie, każdy pirat chce zmaksymalizować liczbę złotych monet, które każdy otrzymuje. Po trzecie, każdy pirat wolałby wyrzucić innego za burtę, jeśli w przeciwnym razie wszystkie inne wyniki byłyby równe. Piraci nie ufają sobie nawzajem i nie będą składać ani honorować żadnych obietnic między piratami oprócz proponowanego planu dystrybucji, który daje każdemu piratowi całą liczbę złotych monet.
Wyzwanie
Weź jako dane wejściowe liczbę całkowitą n
, 1 <= n <= 99, gdzie n
jest liczba piratów - i wyślij dystrybucję monet, zaczynając od pierwszego pirata.
Przypadki testowe (wprowadzany jest pierwszy wiersz; drugi wynik):
1
100
2
100 0
3
99 0 1
5
98 0 1 0 1
To jest golf golfowy , więc wygrywa najkrótsze rozwiązanie w bajtach.
n < 100
? Nadmiernie obsadzone, słabo pozłacane statki pirackie również potrzebują pomocy w dystrybucji.Odpowiedzi:
Galaretka ,
1110 bajtówWypróbuj online! lub zweryfikuj wszystkie przypadki testowe jednocześnie .
Jak to działa
Dla wejścia n zadanie sprowadza się do utworzenia listy x, 0, 1, 0,… o długości n, której suma wynosi 100 .
źródło
Python, 33 bajty
Oblicza pierwszą wartość, dodaje niektóre
0, 1, 0, 1...
, obcina do długościn
.Zauważ, że
-n/2+101
nie można go skracać,101-n/2
ponieważ jednoargumentowy i binarny-
mają inny priorytet: pierwszy jest analizowany jako,(-n)/2
a drugi jako101-(n/2)
.Rekursja była znacznie dłuższa (45):
źródło
MATL , 12 bajtów
Używa bieżącej wersji (9.2.2) języka / kompilatora, która jest wcześniejsza niż to wyzwanie.
Przykład
Wyjaśnienie
źródło
Pyth, 13 bajtów
Zestaw testowy .
źródło
Python,
6258 bajtówEDYCJA: Cieszę się, że zrobiłem to z jednej linii. Ale przegrywam dla Pythona. Dlatego jest to tylko w celach informacyjnych. Dzięki @Zgarb
Pobiera dane wejściowe, tworzy listę parzystości wszystkich liczb od 1 do i. Następnie ustawia pierwszy element w i na 101-sum (n) i drukuje.
Wypróbuj tutaj
źródło
JavaScript ES6, 45 bajtów
Dzięki @Neil za 1 bajt zapisany!
źródło
202-a>>1
zapisuje bajt.𝔼𝕊𝕄𝕚𝕟, 14 znaków / 26 bajtów
Try it here (Firefox only).
Nieźle, ale też nie dobrze ...
Wyjaśnienie
źródło
Poważnie,
2317 bajtówEDYCJA : Dzięki @ quintopia
Używa tego samego podejścia co moja odpowiedź w Pythonie, ale robię modulo 2 używając mapowania i kilka razy obracam mój stos.
Objaśnienie :
Ten kod popycha dane wejściowe (nazywam je
i
). Następnie popycharange(1,i+1)
i wykonuje funkcję. Następnie popycha 2, obraca stos i w końcu bierze modulo.Następnie przypisz tę funkcję do iterowalnego zakresu. Daje to parzystość każdego elementu na liście.
Na koniec duplikuje stos, sumuje listę parzystości, wypycha 2, 10 ^ 2 i 100 + 1 i odejmuje sumę (pozwól mi nazwać tę wartość
n
). Następnie kod wypycha 0, obraca stos o 1 i ustawia element 0 na liście na n. Wynikowa lista jest domyślnie drukowana.źródło
,R`2@%`M;Σ2╤u-0(T
Japt, 14 bajtów
Kolejne wyzwanie, w którym pragnę wbudowanego urządzenia, właśnie rozważałem dodanie ...
Wypróbuj online!
źródło
ActionScript 3, 87 bajtów
function x(n){var l=[],i=1;for (l[0]=int(101-n/2);i<n;){l[i]=++i%2;}return l.join(" ")}
To nie jest najlepszy język golfa, ale lubię publikować odpowiedzi as3.
źródło
05AB1E , 12 bajtów (brak danych)
Wypróbuj online!
źródło
s)˜
może być¸ì
.Perl
514944 bajtówPotrzebujesz następujących opcji Perlrun
-E
źródło
QBIC ,
2825 bajtówWyjaśnienie
źródło