Zum Inhalt springen
  • 0

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


Frage

Geschrieben (bearbeitet)

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
...

9 Antworten auf diese Frage

Empfohlene Beiträge

  • 0
Geschrieben (bearbeitet)

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
  • 0
Geschrieben (bearbeitet)

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
  • 0
Geschrieben

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();
        }
    }

 

  • 0
Geschrieben

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());
}

 

  • 0
Geschrieben (bearbeitet)
vor 41 Minuten schrieb Mttkrb:

Jetzt bleibt nur noch die frage, ob es mit .net oder .netCore schneller ist ?

Geht sicherlich auch mit ML.NET

Aber nächstes Jahr kommt ja .NET 5

Bearbeitet von KeeperOfCoffee

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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...