Twoim zadaniem jest przetłumaczenie 103-gładkiej liczby na angielskie słowo, korzystając z metody opisanej poniżej.
W jaki sposób?
- Wygeneruj listę czynników pierwszych (z powtórzeniami) liczby wejściowej.
- Sortuj listę:
- Jeśli 2 nie jest jednym z głównych czynników, posortuj listę w porządku rosnącym.
- Jeśli 2 jest jednym z głównych czynników, usuń go z listy i posortuj pozostałe czynniki w malejącej kolejności.
Przetłumacz każdy czynnik na literę, korzystając z poniższej tabeli:
3 = S 13 = L 29 = X 43 = O 61 = Z 79 = H 101 = K 5 = P 17 = Q 31 = N 47 = R 67 = T 83 = V 103 = Y 7 = M 19 = U 37 = C 53 = A 71 = E 89 = D 11 = F 23 = I 41 = W 59 = G 73 = J 97 = B
Uwaga : Ta tabela została zbudowana empirycznie, aby zmaksymalizować liczbę możliwych słów. Dla ciekawskich, oto lista 2187 słów, które można zakodować w ten sposób (może obejmować niegrzeczny język). Zdecydowanie nie jest optymalna, ale wystarcza do tego wyzwania.
Przykłady
Przykład 1: 579085261 (rosnąco)
- Czynniki pierwsze to [37, 47, 53, 61, 103] .
- 2 nie jest czynnikiem głównym, dlatego lista jest posortowana w porządku rosnącym.
- 37 = C, 47 = R itp. Wyjście to „SZALONY”.
Przykład 2: 725582 (malejąco)
- Czynniki pierwsze to [2, 11, 13, 43, 59] .
- 2 jest czynnikiem głównym, dlatego usuwamy go i sortujemy listę w kolejności malejącej, co daje:
[59, 43, 13, 11] . - 59 = G, 43 = O itp. Wyjście to „GOLF”.
Przykład 3: 10757494 (z powtarzanym współczynnikiem)
- Czynniki pierwsze to [2, 11, 71, 71, 97] .
- 2 jest czynnikiem głównym, dlatego usuwamy go i sortujemy listę w kolejności malejącej, co daje:
[97, 71, 71, 11] . - 97 = B, 71 = E, 11 = F. Wyjście to „WOŁOWINA”.
Wyjaśnienia i zasady
- Gwarantowana liczba wejściowa to 103-gładka i podzielna przez 2 najwyżej raz.
- Z definicji liczba gładka jest liczbą całkowitą dodatnią .
- Dane wejściowe i wyjściowe mogą być obsługiwane w dowolnym rozsądnym formacie. Dane wyjściowe mogą być pisane małymi lub dużymi literami. Dopuszczalne są końcowe białe znaki. Wiodące białe znaki nie są.
- Jeśli twój program / funkcja nie obsługuje dużych danych wejściowych, podaj to w odpowiedzi.
- To jest kod golfowy, więc wygrywa najkrótsza odpowiedź w bajtach.
Przypadki testowe
34874 --> ARM
483254 --> BAR
353722 --> EAR
494302 --> EGG
39061 --> FAT
6479 --> FUN
60421 --> ICE
54166 --> JAM
48911474 --> BETA
2510942 --> BOOM
2303854 --> DOOM
844261 --> FIRE
1606801 --> MAZE
1110085 --> PAGE
5212974 --> BALLS
67892046 --> BEANS
885396199 --> CREEK
67401037 --> FUNKY
27762173 --> QUICK
1238440506 --> ARROWS
33045832681 --> CRAGGY
1362714005 --> PIRATE
137302698 --> TROLLS
358310128062 --> BEGGARS
40255151586 --> DETAILS
164633248153 --> FIXATED
621172442227 --> UNRATED
2467812606 --> VACUUMS
86385078330 --> GROWNUPS
26607531423091 --> UNWORTHY
Ò
na579085261
, czuję się jak <s> Emigna </ s> Adnan został już rozpoczęty.<=103
... Twój wynik toPIRATE MAZE
lubDOOM VACUUMS
...Odpowiedzi:
Galaretka ,
2927 bajtówDzięki @JonathanAllan za grę w golfa na 1 bajcie!
Wypróbuj online!
tło
jest literałem liczbowym. Znaki między cudzysłowami są zastępowane ich indeksami opartymi na 1 na stronie kodowej Jelly , a wynikowa tablica jest interpretowana jako liczba podstawowa 250. Daje to liczbę całkowitą c: = 288824892868083015619552399 .
Jak to działa
źródło
Galaretka , 36 bajtów
Wypróbuj online!
Wyjaśnienie
Stała pomocnika
1£
(produkowana“SPMFLQUIXNCWORAGZTEJHVDBKY ”
z 1 dodaną)Główny program
Mam wrażenie, że moja kompresja listy z łatwością przewyższa drugą odpowiedź Jelly, ale mój algorytm do jej użycia może być znacznie bardziej wydajny. Może spróbuję je połączyć.
Galaretka , 31 bajtów, zainspirowana odpowiedzią @ Leakynun
Wypróbuj online! (nieco zmodyfikowany, aby działał znacznie szybciej)
Jest niespójne, czy drukuje końcowy znak nowej linii (ale PPCG zwykle zezwala na odpowiedzi z końcowym znakiem nowej linii lub bez, więc myślę, że to też działa?). Jest bardzo wolny (O ( n ), gdzie n jest wejściem, a te liczby nie są dokładnie małe…)
Wyjaśnienie
Stała pomocnika
1£
(tworzy“¶SPMFLQUIXNCWORAGZTEJHVDBKY”
, gdzie¶
jest nowa linia)Główny program
źródło
05AB1E ,
3938 bajtówWykorzystuje kodowanie CP-1252 . Wypróbuj online!
źródło
Ø
była część tego, która i tak pobiła moją o 20 bajtów: P.Python 2,
220217 bajtówWypróbuj online - uruchamia tylko najmniejszy przypadek testowy bez wyczerpania pamięci
Nie golfowany:
Ta wersja nie używa
exec
, więc możesz przetestować wszystkie przypadki testowe bez wyczerpania pamięci.Wypróbuj online
źródło
Rubinowy ,
139138134125 125120115 + 7 =146145141132127 127122 bajtówUżywa
-rprime
flagi dla +7 bajtów.-1 bajt z @daniero. -4 bajty, pamiętając, że mogę po prostu regularnie sprawdzać podzielność, zamiast sprawdzać, czy istnieje podział główny
2
.-9 bajtów z rozwiązania Python @ mbomb007 przypominającego mi o krótszym sposobie wyszukiwania pasującej litery.
-5 bajtów, ponieważ końcowe spacje są teraz dozwolone.
-5 bajtów od odkrycia
Enumerable#find_index
Wypróbuj online! (wszystkie przypadki testowe)
Wyjaśnienie
źródło
zip
i"
Bash + narzędzia GNU + pakiet bsd-games, 170
Wydaje się dość nieoptymalny, ale działa:
Wypróbuj online .
źródło
Galaretka , 33 bajty
Wypróbuj online!
źródło
Japt ,
5150 bajtów49 bajtów kodu, +1 dla
-P
flagi.Wypróbuj online!
Może to być o wiele krótsze, gdyby tylko Japt miał kilka dodatkowych funkcji ...
Wyjaśnienie
`yspmflquixncÙgz’jhvdbk`
jest dokładnie tym samym ciągiem, którego wszyscy używają skompresowany tak bardzo, jak Japt może go skompresować (3 bajty krótsze niż oryginał!). Jedyne wbudowane narzędzie do kompresji Japt w tej chwili zastępuje popularne pary małych liter jednobajtowym char.Sprawdźmy więc aktualny kod:
Następnie
£
służy do zastąpienia każdego elementuX
w wyniku w następujący sposób:W tym momencie wynikiem jest tablica znaków, więc
-P
flaga łączy go w pojedynczy ciąg, a wynik jest domyślnie wysyłany do wyniku.źródło
Galaretka , 40 bajtów
Wypróbuj online!
Zweryfikuj wszystkie przypadki testowe jednocześnie! (lekko zmieniony)
źródło
Pyth ,
5447 bajtów7 bajtów dzięki isaacg
(
❤
reprezentuje niedrukowalny znak)Pyth nie ma wielu najlepszych wbudowanych ...
Hexdump:
Wypróbuj online!
źródło
J , 59 bajtów
Wypróbuj online!
Całkiem proste...
źródło
PHP, 173 bajtów
Wersja online
Rozszerzony
PHP, 178 bajtów
Wersja online
Rozszerzony
źródło
Python, 1420 bajtów
To może zdecydowanie zewrzeć niektóre, ale to moja próba rozwiązania go bez liczb lub literałów łańcuchowych. Zdaję sobie sprawę, że jest to problem związany z golfem i nie jest to do końca krótki, ale i tak chciałem się nim podzielić, nie jestem pewien, czy to łamie jakieś zasady, czy nie.
Było dużo zabawy, użyłem algorytmu na tym blogu, aby zmniejszyć reprezentację liczbową ASCII „SPMFLQUIXNCWORAGZTEJHVDBKY” w używanym wyrażeniu z przesunięciem bitów. Zasadniczo czerpałem też wiele inspiracji z tego bloga, chciałem sam go wypróbować i wydawało mi się, że to dobre wyzwanie.
Oto nieco bardziej czytelna wersja z bardziej sensownymi nazwami zmiennych
źródło