Każdemu z tych dziewięciu myląco podobnych słów przypisz cyfrę 1-9 w dowolny sposób:
though
through
thorough
Thoreau
throw
threw
trough
tough
troll
Napisz program, który pobiera ciąg znaków. Jeśli wejście jest jednym z tych dziewięciu słów, wypisz numer, który mu przypisałeś. Jeśli dane wejściowe nie są jednym z powyższych słów, program może zrobić wszystko (w tym błąd lub pętlę na zawsze).
W słowach rozróżniana jest wielkość liter, np. Thoreau
Powinny dawać liczbę od 1 do 9, ale thoreau
niekoniecznie będą robić to samo.
Przykład
Załóżmy, że przypisujesz liczby w następujący sposób:
though 9
through 2
thorough 7
Thoreau 6
throw 3
threw 5
trough 4
tough 1
troll 8
Wtedy kiedy tough
jest wprowadzane, 1
powinno być wyprowadzane.
Kiedy through
jest wprowadzane, 2
powinno być wyprowadzane.
Kiedy throw
jest wprowadzane, 3
powinno być wyprowadzane.
. . .
Kiedy though
jest wprowadzane, 9
powinno być wyprowadzane.
Wszystkie inne dane wejściowe mogą coś zrobić.
Detale
- Weź ciąg wejściowy za pomocą stdin lub wiersza poleceń i wyślij na standardowe wyjście.
- Dane wyjściowe mogą zawierać pojedynczy znak nowej linii.
- Zamiast programu możesz napisać funkcję, która pobiera ciąg znaków i wypisuje wynik normalnie lub zwraca go.
- Najkrótsze przesłanie w bajtach wygrywa .
źródło
find
metody łańcuchowej Python . Potem zasady się zmieniły. Sprytny pomysł już nie taki sprytny.Odpowiedzi:
CJam,
11 97 bajtówJak to działa :
Korzystamy z faktu, że suma kodów ASCII + 2 z modulacją 11 daje bardzo ładną kolejność od 1 do 9, a następnie 10 dla dziewięciu zainteresowanych słów. Oto zamówienie:
Objaśnienie kodu :
4 bajty zapisane dzięki user23013
Wypróbuj online tutaj
źródło
q1b2+B%
.Pyth, 8 znaków
Wypróbuj online: pakiet demonstracyjny lub testowy
Korzystam z zadania:
Wyjaśnienie:
Btw, znalazłem magiczną liczbę 8109 za pomocą tego skryptu:
fqr1 10Sme%CdT.z1
.źródło
Python 2,
9254 bajtyCiąg indeksu jest tworzony za pomocą
for word in words: print chr(hash(word)%95+32),
. Jak wskazano w odpowiedzi Jakube'a, funkcja skrótu da różne wyniki w zależności od wersji Pythona. Ten ciąg indeksu jest obliczany w 64-bitowym języku Python 2.7.6.Dłuższa (92 bajty), ale mniej tajemnicza odpowiedź:
Programy zwracają od 1 do 9, chociaż przez dokładny rzut Thoreau rzucił przez twardego trolla w tej kolejności. Gdy dane wejściowe nie zostaną znalezione, find zwróci -1, która wygodnie zamienia się w zero po
+1
.źródło
0
rzeczy nie są już wymagane. Przepraszam, że to zmieniam.Python 2.7.9 wersja 32-bitowa, 22 bajty
Zauważ, że wersja jest tutaj naprawdę ważna. Otrzymasz różne wyniki, jeśli używasz 64-bitowej wersji Pythona. Ponieważ
hash
metoda oblicza 64-bitowe wartości skrótu zamiast 32-bitowego.Zadanie to:
Wypróbuj online: http://ideone.com/Rqp9J8
źródło
sorted(...)==range(1,10)
zatrzymałem.Pyth, 7 bajtów
Korzystam z następującego przypisania:
Cz
interpretuje dane wejściowe jako podstawową liczbę 256. Następnie bierzemy ten mod 31, odejmujemy 1 i otrzymujemy wynik mod 10. Równoważny pseudokod:Demonstracja , uprząż testowa .
źródło
Python 2, 27 bajtów
Dzięki temu zadaniu:
Możliwych jest kilka odmian, np
źródło
Japt , 6 bajtów
Wypróbuj | Sprawdź wszystkie słowa
Wyjaśnienie
Wykorzystuje fakt, że podczas parsowania
n
ciągu podstawowego na liczbę całkowitą JavaScript przestanie parsować, jeśli napotka cyfrę większą niż,n
i zwróci wynik do tego momentu. Korzystając z bazy-32 tutaj (cyfry0-v
),w
s w „rzut” i „rzut” są zasadniczo ignorowane.JavaScript, 22 bajty
Bezpośrednie tłumaczenie - nie wydaje się warte publikowania go osobno.
źródło
C (gcc) , 66 bajtów
Wypróbuj online!
źródło
-O
flagi kompilatora.h;f(char*s){for(h=33;*s;)h^=*s++;h=index("(Z5qW]2@H",h)-"H"+9;}
Java 8,
5325 bajtówlub
Port odpowiedzi CJam @Optimizer, ponieważ (najprawdopodobniej) nie można tego zrobić w Javie.
Wypróbuj online.
źródło
parseInt
, prawda? Czy port mojego rozwiązania nie byłby krótszy?parseInt
z podaną bazą, ale niestety jest dość nadmiernie bajtowy ze względu na wymaganie klasy statycznej:Long.parseLong(...,32)
jako najkrótszy wariant. Ponadto wydaje się"throw"
"threw"
, że z jakiegoś powodu nie działa (i również) w Javie .w
wydaje się, że jest poza zakresem base-32 (użycie 33 daje nieprawidłowe wyniki).Galaretka , 7 bajtów
Wypróbuj online!
Nudny port galaretki z fantastyczną odpowiedzią CJam.
źródło