Biorąc pod uwagę 3 liczby całkowite, określ najniższą możliwą zasadę dla pierwszych dwóch liczb całkowitych pomnożonych przez trzecią. Jeśli pomyślisz o odpowiedzi na ostateczne pytanie życia, wszechświat i wszystko, 6 * 9 == 42, jest prawdziwe w bazie 13.
Dane wejściowe mogą zawierać dowolne liczby, których cyfry używają znaków 0–9, az i AZ, gdzie a
w Bazie 10 jest równa 10, orazZ
61 w bazie 10.
Wejścia powinny być wprowadzane w dowolny sposób (z wyjątkiem kodowania na sztywno) i można napisać pojedynczą funkcję lub cały program.
Maksymalna baza, którą należy wziąć pod uwagę, to Baza 62, a minimalna baza to Baza 2.
Możesz założyć, że dwie pierwsze wartości są mniejsze niż trzecia. Można również stwierdzić, że minimalna podstawa jest o jeden większa niż najwyższa cyfra / znak z wejść (na przykład, jeśli dane wejściowe są 3 1a 55
, minimalna podstawa to Podstawa 11, ponieważa
jest to najwyższa cyfra).
Jeśli nie ma takiej podstawy, zwróć wybraną wartość śmieci.
To jest kod golfowy, więc wygrywa najkrótszy kod.
Przypadki testowe
6 9 42 --> 13
a a 64 --> 16
aA bB 36jk --> 41
2 3 20 --> <junk value>
10 10 100 --> 2
źródło
b
w ogólny sposób, jaka_0 b^0 + a_1 b^1 + a_2 b^2 + ...
(gdziea_0
jest najmniej znacząca cyfra), to podstawa 1 na pewno ma sens. Ponadto wniosek PO obejmowałby również bazę 1 w wyszukiwaniu, jeśli największa obecna cyfra to 0.Odpowiedzi:
CJam,
525148 bajtówSprawdź to tutaj. Tester online nie obsługuje wprowadzania danych przez ARGV. Najbliższą alternatywą jest umieszczenie wejścia jak
6 9 42
w STDIN i użycie:To drukuje
-1
jeśli nie można znaleźć prawidłowej bazy do 62.Bardzo dziękuję Peterowi za cyfrowy kod parsujący!
Naprawiłem wiele problemów, które dodawały 14 bajtów do liczby. Poniższe wyjaśnienie jest nadal związane z moim pierwotnym przesłaniem i zaktualizuję je jutro.
Indeks jest drukowany automatycznie na końcu programu.
źródło
32base~\[-16.35 9]=+
. Wiem, że CJam ma krótszą konwersję bazy.APL (Dyalog Unicode) , 30 bajtów SBCS
Wypróbuj online!
Dzięki Adámowi za pomoc.
Wyjaśnienie:
Używamy funkcji pomocnika
In
, aby otrzymać dane wejściowe w bardziej smacznym formacie. W przeciwnym razie dane wejściowe otrzyma macierz 3 kolumn.'3 9 42'
dałby na przykład (czytaj od góry do dołu, od lewej do prawej):I dla
'aA bB 36jk'
(to samo tutaj.a
To 10,b
to 11,A
to 36 itp.)źródło
Python 2 -
197213Co za potwór ... (w porównaniu do CJam)
Niestety
int
konwersja bazy może obsłużyć tylko bazy do 36. Musiałem więc zaimplementować ją samodzielnie. (Zobacz to wspaniałe rozwiązanie .)źródło
CJam, 53 bajty
Pobiera trzy dane wejściowe ze STDIN jak
Wydruki
0
jeśli produkt w dowolnej bazie nie jest możliwySpróbuję dalej grać w golfa.
Wypróbuj tutaj
źródło
JavaScript (E6) 129
139Rekurencyjnie wypróbuj wszystkie zasady od 2 do 62, zwracając -1, jeśli żadna wartość nie jest poprawna.
JavaScript parsowanie Funkcja działa z bazą do 36, więc potrzebna jest niewielka pomoc dla większych baz.
Uwaga, parametry x, y, z są ciągami, a nie liczbami.
To trudniejsze niż się wydaje. Podziękowania dla Martina za wskazanie podstawowego błędu w pierwszej wersji.
Mniej golfa
Testuj w konsoli FireFox / FireBug.
Test wypróbowuje 1000 liczb z różnymi zasadami (do 36, a nie 62). Warto zauważyć, że znaleziona baza może być poprawna, ale mniejsza niż baza, która wygenerowała przypadek testowy.
źródło
Węgiel drzewny , 28 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. Wyprowadza,
None
jeśli nie można znaleźć prawidłowej bazy. Wyjaśnienie:źródło
⍘
toAny
z jakiegoś powodu ...Erlang (escript) - 200
Dodaj dwie nowe linie, które muszą być obecne.
W czytelnym:
Wezwanie:
źródło
if Digit < Base -> … end
część się tym zajmuje. Jeśliif
blok nie ma prawdziwej gałęzi, generowany jest wyjątek, który zostaje złapanytry … catch _:_ -> … end
.Haskell 216 char (177?)
Próbowałem zagrać w golfa tak bardzo, jak to możliwe. Jeśli importowane są, to jest to mój najkrótszy kod (216)
Jednak jeśli import nie był liczony, to jest moja najlepsza wersja (177):
To traktuje każdą liczbę jako wielomian P (x), gdzie x jest podstawą, pod warunkiem, że żaden współczynnik nie jest większy niż x; Następnie oceniam wielomiany na każdej możliwej podstawie, zatrzymując się, gdy osiągnę taką, która spełnia równość P (x) * Q (x) = R (x). Reguła „baza jest większa niż największa cyfra” jest egzekwowana z ostatnim strażnikiem w dopasowaniu wzorca, a mianowicie
n>(m.map(m.f)$k)
. Wiem, że różne wyzwania golfowe i różni decydenci mają różne zasady dotyczące importu w stosunku do punktacji, więc weź drugie z odrobiną soli.źródło
Prolog - 195 bajtów
Zasadniczo ten sam pomysł, co moja odpowiedź Erlanga:
W czytelnym:
Wezwanie:
źródło