Największe forum w sieci o nazwie postcount ++ postanowiło stworzyć nową grę forum. W tej grze celem jest opublikowanie słowa, ale słowo musi mieć jedną literę dodaną, usuniętą lub zmienioną. Twój szef chciał, żebyś napisał program, który zna to słowo, oraz słownik UNIX, gdy pracujesz dla firmy, która ma bardziej inteligentne forum z bardziej inteligentnymi grami forum i chce zniszczyć konkurencję (hej, to twój szef, nie rób tego dyskutuj z nim, i tak dostajesz dużo gotówki z pracy).
Twój program otrzyma dwa argumenty, słowo i słownik. Ponieważ użytkownik zarządzający programem (tak, użytkownik, twoja firma nie ma zasobów do uruchamiania botów) nie jest doskonały, powinieneś normalizować sprawę w obu przypadkach. Słowa w słowniku mogą zawierać litery ASCII (zarówno wielkie, jak i małe, ale należy je zignorować podczas porównania), myślniki, apostrofy i niesekwencyjne spacje na środku. Nie będą dłuższe niż 78 znaków. Musisz wygenerować listę słów, które zostałyby zaakceptowane w grze, aby przerwać zabawę ludziom, którzy myślą o słowach ręcznie.
To jest przykład oczekiwanego programu, sprawdzający podobne słowa do golf.
> ./similar golf /usr/share/dict/words
Goff
Wolf
gold
golfs
goof
gulf
wolf
/usr/share/dict/wordsZnajduje się lista słów, z przerwą po każdej linii. Możesz to łatwo odczytać na przykład za pomocą fgets ().
Firma, w której pracujesz, nie ma zbyt wielu kart dziurkaczy (tak, jest rok 2014 i nadal używają kart dziurkaczy), więc nie marnuj ich. Napisz możliwie najkrótszy program. Aha, i zostałeś poproszony o nieużywanie wbudowanych lub zewnętrznych implementacji odległości Levenshteina lub jakiegokolwiek podobnego algorytmu. Coś o Not Invented Here lub backdoorach, które najwyraźniej dostawca wstawił do języka (nie masz na to dowodów, ale nie rozmawiasz z szefem). Więc jeśli chcesz odległość, będziesz musiał ją wprowadzić sam.
Możesz używać dowolnego języka. Nawet z kartami dziurkowanymi firma ma dostęp do najnowocześniejszych języków programowania, takich jak Cobol Ruby lub Haskell lub cokolwiek zechcesz. Mają nawet GolfScript, jeśli uważasz, że jest dobry do manipulacji ciągami (być może nie wiem ...).
Zwycięzca otrzymuje ode mnie 15 punktów reputacji i prawdopodobnie wiele innych punktów od społeczności. Inne dobre odpowiedzi otrzymają 10 punktów, a także punkty od społeczności. Słyszałeś, że punkty są bezwartościowe, ale najprawdopodobniej zastąpią dolary w 2050 roku. Nie zostało to jednak potwierdzone, ale i tak warto zdobyć punkty.