Das größte Forum im Internet namens postcount ++ hat beschlossen, ein neues Forum-Spiel zu entwickeln. In diesem Spiel besteht das Ziel darin, das Wort zu veröffentlichen, es muss jedoch ein Buchstabe hinzugefügt, entfernt oder geändert werden. Ihr Chef wollte, dass Sie ein Programm schreiben, das das Wort bekommt, und das UNIX-Wörterbuch, während Sie für Unternehmen arbeiten, die intelligentere Foren mit intelligenteren Forenspielen haben und die Konkurrenz zerstören möchten (hey, es ist Ihr Chef, nicht wahr?) Wenn Sie mit ihm sprechen, bekommen Sie ohnehin viel Geld von Ihrem Job.
Ihr Programm erhält zwei Argumente, das Wort und das Wörterbuch. Da der Benutzer, der das Programm verwaltet (ja, ein Benutzer, Ihr Unternehmen verfügt nicht über Ressourcen, um Bots auszuführen), nicht perfekt ist, sollten Sie den Fall in beiden Fällen normalisieren. Die Wörter im Wörterbuch können ASCII-Buchstaben (Groß- und Kleinbuchstaben, die beim Vergleich ignoriert werden sollten), Bindestriche, Apostrophe und nicht aufeinanderfolgende Leerzeichen in der Mitte enthalten. Sie dürfen nicht länger als 78 Zeichen sein. Sie müssen eine Liste von Wörtern ausgeben, die im Spiel akzeptiert werden, um den Spaß von Leuten zu unterbrechen, die manuell an Wörter denken.
Dies ist ein Beispiel für Ihr erwartetes Programm, das nach ähnlichen Wörtern sucht wie golf.
> ./similar golf /usr/share/dict/words
Goff
Wolf
gold
golfs
goof
gulf
wolf
Dies /usr/share/dict/wordsist eine Liste von Wörtern, nach denen jeweils ein Zeilenumbruch erfolgt. Das kann man zum Beispiel mit fgets () leicht lesen.
Das Unternehmen, in dem Sie arbeiten, verfügt nicht über viele Lochkarten (ja, es ist 2014, und es werden immer noch Lochkarten verwendet). Verschwenden Sie sie also nicht. Schreiben Sie so kurz wie möglich. Oh, und Sie wurden gebeten, keine eingebauten oder externen Implementierungen von Levenshtein distance oder ähnlichen Algorithmen zu verwenden. Etwas über Not Invented Here oder Hintertüren, die anscheinend vom Anbieter in die Sprache eingefügt wurden (Sie haben keine Beweise dafür, sprechen aber nicht mit Ihrem Chef darüber). Wenn Sie also Distanz wollen, müssen Sie diese selbst implementieren.
Sie können jede Sprache verwenden. Selbst mit Lochkarten hat das Unternehmen Zugriff auf modernste Programmiersprachen wie Cobol Ruby oder Haskell oder was auch immer Sie wollen. Sie haben sogar GolfScript, wenn Sie denken, dass es für die Manipulation von Saiten gut ist (ich weiß es vielleicht nicht ...).
Der Gewinner erhält 15 Reputationspunkte von mir und wahrscheinlich viele andere Punkte von der Community. Die anderen guten Antworten erhalten 10 Punkte und auch Punkte von der Community. Sie haben gehört, dass Punkte wertlos sind, aber höchstwahrscheinlich werden sie im Jahr 2050 die Gelehrten ersetzen. Das wurde jedoch nicht bestätigt, aber es ist eine gute Idee, Punkte zu sammeln.