Mamy ściśle rosnącą sekwencję liczb całkowitych nieujemnych, takich jak:
12 11 10
Czekać! Ta sekwencja nie rośnie ściśle, prawda? Cóż, liczby są zapisane w różnych podstawach. Najmniejsza możliwa baza to 2, największa to 10.
Zadanie polega na odgadnięciu, na jakiej podstawie zapisywana jest każda liczba, aby:
- sekwencja jest ściśle rosnąca,
- suma zasad jest zmaksymalizowana.
Na przykład rozwiązaniem dla próbki będzie:
6 8 10
ponieważ pod tymi zasadami sekwencja staje się 8 9 10
dziesiętna - ściśle rosnąca sekwencja, a my nie jesteśmy w stanie znaleźć zasad, dla których sekwencja ciągle rośnie i których suma jest większa niż 6+8+10
.
Ze względu na drugie ograniczenie rozwiązanie 3 5 7
nie jest zadowalające: pomimo faktu, że sekwencja staje się 5 6 7
pod tymi zasadami - musimy zmaksymalizować sumę zasad, i 3+5+7 < 6+8+10
.
Jeśli pod żadnymi zasadami 2<=b<=10
nie można ściśle zwiększyć serii, na przykład:
102 10000 10
pojedynczy
0
powinno być wyjście.
Sekwencję wejściową można przekazać w sposób najbardziej dogodny dla rozwiązania (standardowe parametry wejściowe / parametry wiersza poleceń / argumenty funkcji ...).
źródło
1 3 5
sekwencja rośnie? Co1 7 22
? (w bazie 10)1 3 5
i1 7 22
oba rosną zgodnie z zasadą 10. Tak więc rozwiązaniem dla obu przypadków jest10 10 10
, ponieważ musimy zmaksymalizować sumę zasad, zapewniając jednocześnie, że sekwencja rośnie, gdy n-ta liczba jest interpretowana jako zapisana w bazie równej n -th termin rozwiązania.1 1 1
lub3 3 4
nie powstają.Odpowiedzi:
Pyth,
313029 bajtów1 bajt dzięki @Jakube.
Demonstracja. Uprząż testowa.
Dane wejściowe są podawane na STDIN, oddzielone spacją. Jeśli dozwolone jest wprowadzanie separatora nowego wiersza, mogę skrócić program o 2 bajty.
Wyjaśnienie:
Umieszczenie
1
na liście możliwych zasad jest bezpieczne, ponieważi
korzystające zint
wbudowanego Pythona nie zezwala1
jako baza i dlatego zawsze zgłasza błąd, który jest wychwytywany i filtrowany.źródło
CJam, 43 bajty
Odczytuje argumenty wiersza poleceń i wypisuje tablicę.
Wypróbuj online w interpretatorze CJam .
Przykłady
Jak to działa
źródło
Julia,
1761561451181099997 bajtówNie golfowany:
Używany z wejściem tablicy 1d. Jeśli funkcja jest przypisana
c
, to wywołałbyśc([12,11,10])
ją i wyszedł[6,8,10]
.Uwaga: Użyłem
dec(i)
w poleceniu parsowania, ale ponieważi
jest to nazwa zmiennej jednoznakowej i nie muszę uzyskiwać dostępu do komponentu,"$i"
uzyskiwałem ten sam wynik.źródło
c
, wówczasc([12,11,10])
wyjścia[6,8,10]
, które są wymaganymi podstawami.[12 11 10]
zamiast[12,11,10]
i to dało niepożądany efekt.Julia,
259204183 bajtówUratowałem sporo z pomocą Glen O.
Niegolfowane + wyjaśnienie:
źródło
for i=M(A[1]):10,j=M(A[2]):10,k=M(A[3]):10 <code here>end;
, oszczędzając osiem dla upuszczonych dwóchend;
si osiem, aby zastąpić `for` z,
.s=map(parseint,x,[i,j,k])
, oszczędzając 18 bajtów w stosunku do twojego oryginalnego rozwiązania i 10 w porównaniu z moją poprzednią sugerowaną poprawą. Zamiasts==sort(unique(s))
używać,all(diff(s).>0)
aby zapisać kolejne 3 bajty.CJam (39 bajtów)
Jest to anonimowa funkcja, która przyjmuje dane wejściowe jako tablicę liczb dziesiętnych na stosie i pozostawia dane wyjściowe jako tablicę lub liczbę całkowitą
0
na stosie. Demo online .źródło
19
nie może być liczbą podstawową 9).Python 2 (147 bajtów)
Wywołaj funkcję
x
z listą liczb int.Przykład:
odbitki
źródło