Zum Inhalt springen
  • 0

Programmierübung "Wechstaben-verbuchsler" (aus Buchstabensammlung mache sinnvolles Wort)


wira

Frage

Hallo

Ein Gewinnspiel auf einer Pizzaschachtel hat mich angeregt, mal die Programmierkenntnisse zu erweitern.

Aus aufgedruckten Buchstaben soll ein sinnvolles Wort gebildet werden, also z.B. aus "aahrstu" kann man "Hausrat" machen (oder "Rathaus").

Alle Buchstaben müssen verbraucht werden, nur "Haus" ist also keine Lösung.

Das ganze ist eine ÜBUNG, muss also "Donausdampfschiffahrtskapitän" nicht zusammenstückeln können.

Es geht mir um das Programmieren, bin mehr ein FI-SI.

Wie würdet ihr daran gehen?

Tschüss

Bearbeitet von wira
...
Link zu diesem Kommentar
Auf anderen Seiten teilen

9 Antworten auf diese Frage

Empfohlene Beiträge

  • 0

Viel Spass :D hier hast du "ein paar" Daten

https://raw.githubusercontent.com/davidak/wortliste/master/wortliste.txt

Edit: Du würdest den vorgegebenen String einfach analysieren und einen Abgleich mit deinen Daten (Wörterliste) machen. Zuallererst würdest du allerdings die Liste einschränken (z.B. mit der Länge des Wortes)

Damit du auch noch schneller suchst, wirst du wohl mit Multithreading arbeiten müssen...sprich du unterteilst die große Liste in mehrere kleinere Listen und durchsuchst mit mehreren Threads je eine Liste.

Auch ein Compressed suffix tree wäre interessant:

https://www.geeksforgeeks.org/pattern-searching-using-suffix-tree/

Bearbeitet von KeeperOfCoffee
Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 0

Ich würde wie folgt vorgehen:

  • zu suchende Zeichen eingeben
  • Zeichen sortieren
  • Großbuchstaben durch kleinbuchstaben ersetzen
  • mögliche Wörter aus Datei oder db laden
  • zu jedem Wort einen Sortierstring speichern und hier Zeichen sortieren und Groß-durch kleinbuchstaben ersetzen
  • alle Einträge mit dem Sortierstring vergleichen
  • Ersten oder alle Treffer ausgeben. (Je nach Fragestellung)

Mit C# wären die Linq-Methoden AsParallel, Where, OrderBy, und SequenceEqual,  bzw. string.ToLower hilfreich. Dann sind das nur ein paar Zeilen.

Bearbeitet von Mttkrb
Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 0

Hatte ich auch gedacht. Ging aber überraschend schnell.

 class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Bitte Zeichen eingeben: ");
            var characters = Console.ReadLine();
            var sorted =characters.ToLower().OrderBy(o=>o).ToArray();
            var lines = File.ReadLines("wortliste.txt");
            var result = lines.AsParallel().Where(f => f.ToLower().OrderBy(o => o).SequenceEqual(sorted));
            Console.WriteLine($"Mögliche Wörter sind: {string.Join(", ",result)}");
            Console.ReadKey();
        }
    }

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 0

Der vergleich nach Strings ist sogar schneller:

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Bitte Zeichen eingeben: ");
        var characters = Console.ReadLine();
        var sorted = Sort(characters);
        var lines = File.ReadLines("wortliste.txt");
        var result = lines.AsParallel().Where(x => Sort(x) == sorted);
        Console.WriteLine($"Mögliche Wörter sind: {string.Join(", ",result)}");
        Console.ReadKey();
    }
    
    static string Sort(string s) => new string(s.ToLower().OrderBy(x => x).ToArray());
}

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Diese Frage beantworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...