Das Wort BANANA
erscheint genau einmal in diesem Wort suchen :
B A N A A N B B
A B A N A B A N
A N A B N N A A
N N B A A A N N
N A A N N N B A
A N N N B A N A
N A A B A N A N
B A N A N B B A
Das Wort - Suche oben enthält nur ein Vorkommen des Wortes BANANA
nach oben, unten, links, rechts oder diagonal, aber es hat viele ähnliche Wörter, wie BANANB
, BANNANA
, BNANA
usw.
Ihre Aufgabe ist es, ein Programm zu erstellen, das solch eine ärgerliche Wortsuche erzeugt.
Ihr Programm wird als Eingabe nehmen:
Ein Wort in Großbuchstaben, das drei bis sieben eindeutige Buchstaben mit insgesamt mindestens vier Buchstaben enthält.
Eine Zahl, um die Dimension des quadratischen Gitters für die Wortsuche darzustellen. Die Zahl muss mindestens der Anzahl der Buchstaben im Wort entsprechen.
Geben Sie dann eine Wortsuche aus, bei der nur die Buchstaben des Wortes verwendet werden, die genau ein Vorkommen des eingegebenen Wortes enthalten, sowie so viele Infuriatoren wie möglich.
Ein Infuriator ist definiert als eine Zeichenkette, die einen Damerau-Levenshtein-Abstand vom Zielwort hat und mit demselben Buchstaben wie das Wort beginnt. Dazu BANANA
gehören Wörter wie:
BANBNA
, wobei einer der Buchstaben ersetzt wurde.BANNANA
oderBANAANA
, wenn ein zusätzlicher Buchstabe hinzugefügt wurde.BANAN
,BNANA
, Wo ein Brief gelöscht, aber nichtANANA
, da es eine nicht mehr istB
.BAANNA
oderBANAAN
, wo zwei aufeinanderfolgende Buchstaben gewechselt wurden.
Wenn Sie Infuriatoren in einem Wortsuchgitter zählen, überlappen sie sich möglicherweise. Sie können jedoch keine große Zeichenfolge zählen, wenn sie vollständig eine kleinere Zeichenfolge enthält, die Sie bereits gezählt haben, oder umgekehrt. (Wenn dies der Fall ist BANANB
, können Sie es nicht erneut zählen, wenn Sie bereits das BANAN
oder das Rückwärts BNANA
darin gezählt haben.) Sie können auch keine Zeichenfolgen zählen, die das Zielwort selbst vollständig enthalten oder vollständig enthalten (Sie können das bestimmte Wort nicht zählen) BANAN
das ist ein Teil von BANANA
, noch BANANAA
oder BANANAN
.)
Ihr Programm wird anhand einer bestimmten Wortliste getestet, die sich aus den Wörtern zusammensetzt, die der eingegebenen Wortanforderung entsprechen (die später angegeben wird, sobald ich sie erstellt habe). Die Rastergröße entspricht der doppelten Wortlänge und wird bewertet auf die Anzahl der in jedem Gitter vorhandenen Infuriatoren. Bitte posten Sie Ihre Ergebnisse für die Eingänge BANANA 12
, ELEMENT 14
und ABRACADABRA 22
zur Verifikation.
quelle
MURMURS
scheint ein guter Testfall zu sein, da ich mir für eine optimale Antwort vorstellen würde, dass derS
Antworten:
Java Script
Bonus: Sie können die Wortsuche starten. Standard-Startwert ist: "Codechallenge"
BANANE - 12:
ELEMENT - 14:
Viel Glück: ABRACADABRA - 22:
Extra: MISSISSIPPI - 32:
quelle
C ++
Ich habe das heute geschrieben. Es ist nicht die effizienteste Methode und generiert nicht immer die am zufälligsten aussehenden Wortsuchen, aber es erledigt die Arbeit und es erledigt sie relativ schnell.
Bonus: Unterstützt auch Palindrome !!!
Es funktioniert, indem Eingaben für das Wort und die Größe der Wortsuche vorgenommen werden. Es generiert dann Infuratoren, indem es Buchstaben fallen lässt, Buchstaben einfügt oder Buchstaben umdreht. Diese werden dann zusammen mit dem richtigen Wort zum Raster hinzugefügt. Es prüft dann alle Vorkommen des ersten Buchstabens in jeder Richtung auf das Wort. Wenn 1 Instanz nicht gefunden wird (2 für Palindrome), wird der Zyklus durch Brute forciert. Anschließend wird die Wortsuche an die Konsole sowie eine Datei ausgegeben.
Hier stehen 213 Codezeilen mit Leerzeichen und Kommentaren.
Ich bin weit davon entfernt, ein C ++ - Experte zu sein, daher bin ich mir sicher, dass es Stellen gibt, an denen dieser Code verbessert werden könnte, aber ich war mit dem Ergebnis zufrieden.
Hier sind die Ausgänge.
Ich kann dies aktualisieren, um etwas mehr "zufällig" aussehende Wortsuchen zu generieren.
quelle
Excel VBA
Dabei wird das Wort zunächst zufällig in der Tabelle platziert, sowohl in der Position als auch in der Richtung, und anschließend werden die nicht leeren Stellen im umgebenden Raster durch zufällige Auswahl aus allen Buchstaben außer dem letzten Buchstaben des Wortes ausgefüllt.
BANANA-Ausgang (2, 1):
ELEMENT Ausgang (6, 5):
ABRACADABRA-Ausgabe (2, 3):
quelle