Jestem leniwą, ale wydajną osobą, podobnie jak wielu z was. Kiedy więc coś robię, chcę to robić przy minimalnym wysiłku. Dlatego proszę o rozwiązanie dla mnie tego problemu.
Mam tutaj jakiś dokument. W każdym wierszu tego dokumentu znajduje się jedno słowo lub krótka fraza. Dokument nie jest posortowany, ale nic mi nie wiadomo Wiem, gdzie wszystko jest. Przydałaby mi się pomoc w szybszym znalezieniu rzeczy, a do tego potrzebuję drugiej listy. Właśnie tam wchodzisz. Do każdego wiersza tekstu w tym dokumencie potrzebuję jakiegoś identyfikatora. Coś, co mogę CTRL+ F, ale nie może to być dłużej niż absolutnie konieczne do uzyskania tego jednego wyniku.
Przykładowe dane wejściowe:
(blank)
an apple
spiderman 3
7pm pick up laundry
tequila
fake mustache
dishes on wednesday
banana
biscuits
(blank)
Przykładowe dane wyjściowe:
ap,3,7,q,f,w,ba,bi
Powtórzę się tutaj, aby upewnić się, że jesteśmy na tej samej stronie:
- Dane wejściowe to niesformatowany plik tekstowy zawierający listę elementów oddzielonych podziałami wierszy. Mam go tutaj w formacie .txt, nazywa się „STUFF.TXT”
- Pierwszy i ostatni wiersz dokumentu są puste. Każda inna linia zawiera wpis o długości> 0.
- Plik zawiera tylko znaki alfanumeryczne (wszystkie małe litery), spacje i podziały wierszy.
- Pożądane dane wyjściowe to lista identyfikatorów, w tej samej kolejności, co moja pierwotna lista.
- Nie chcę więcej niż jednego słowa wyszukiwania dla każdego elementu listy. Jeśli jest wiele odpowiedzi, wybierz jedną, nie obchodzi mnie która. W powyższym przykładzie wybrałem „ap”
an apple
, ale mogłeś wybrać „n”, „a”, „pp”, „pl” lub „le”. Nie „an”, bo to jestbanana
. - Zapewniam cię, że plik nigdy nie jest pusty i nigdy nie zawiera duplikatów.
- W razie potrzeby można dopasować na terminatorze linii. Ale jest to ostatnia deska ratunku, z której można skorzystać tylko wtedy, gdy nie ma innego sposobu na rozróżnienie elementów listy (np. „Jabłko” i „jabłka”).
Standardowe luki są niedozwolone. Jest to także kod golfowy, więc wygrywa najkrótszy kod.
Jeszcze jeden przykład:
(blank)
ban
any
king
bean
yen
rake
raki
bar
(blank)
I jego wydajność:
ban,ny,g,be,ye,ke,aki,ar
Odpowiedzi:
Pyth, 39 bajtów
Bruteforuje wszystkie podzbiory każdego łańcucha w coraz większej długości i sprawdza, czy ten łańcuch występuje w jakimkolwiek innym. Jeśli to nie zadziała, zrobi to samo, z wyjątkiem wszystkich podzbiorów
\nstring\n
.źródło
.:
ciągów pierwszego typu i drugiego typu int nie jest błędem. Spróbuj użyć Pytha z repozytorium: github.com/isaacg1/pyth