http://en.wikipedia.org/wiki/Dissociated_press
Dissociated Press ist ein Algorithmus, der aus einem vorhandenen Text zufälligen Text generiert.
Der Algorithmus beginnt mit dem Drucken von N aufeinanderfolgenden Wörtern (oder Buchstaben) im Text. Dann sucht es bei jedem Schritt nach einem zufälligen Vorkommen im Originaltext der letzten N Wörter (oder Buchstaben), die bereits gedruckt wurden, und druckt dann das nächste Wort oder den nächsten Buchstaben.
Implementieren Sie Dissociated Press, entweder als Funktion oder als ganzes Programm. Kürzester Code gewinnt. Verwenden Sie nicht die Befehlszeile oder das Emacs-Skript, um das ursprüngliche Dissociated Press-Programm aufzurufen. Verwenden Sie keine externen Bibliotheken.
code-golf
markov-chain
Ming-Tang
quelle
quelle
Antworten:
Perl,
81-82Verwendet 2 Zeichen Überlappung, reduziert Zeilenumbrüche und stoppt, wenn eine Sackgasse auftritt.
Zum Beispiel verwendet zu Beginn des Tests des Wikipedia-Artikels für Markov-Ketten:
Es handhabt aus Versehen utf-8. Schön.
quelle
Brachylog , 45 Bytes
Probieren Sie es online!
Eingang
Ausgabe (Beispiel)
Wortebene Dissoziierte Presse nur noch wenige Bytes:
52 Bytes
Probieren Sie es online!
Eingang
Ausgabe (Beispiel)
quelle
Hier ist ein etwas ausgefeilterer wortbasierter Algorithmus, der in Scala geschrieben wurde und die Wahrscheinlichkeiten von Wortsequenzen beliebiger Länge berücksichtigt. (Das ist nicht der ursprüngliche dissoziierte Pressealgorithmus .)
Der Algorithmus ist wie folgt. Wählen Sie in jedem Schritt eine fortlaufende Hälfte des Texts aus, beginnend an einer zufälligen Position, suchen Sie nach der längsten Endsequenz von Ausgabewörtern, die in dieser Hälfte vorkommt (dies können 0 Wörter sein), und geben Sie das nächste Wort aus.
Hier ist eine Beispielausgabe, die auch aus dem Wikipedia-Artikel über Markov-Ketten generiert wurde:
By the way, wenn Sie verwenden ,
"[a-zA-Z .,!?]".r
wiewordregex
können Sie diese verwenden Brief basierte dissoziierte Presse als auch zu generieren:Bei einer großen Textdatei wie der Jargon-Datei wird es wirklich interessant . Jetzt ist letter based schon ganz gut:
Wortbasiert wird ziemlich amüsant:
quelle
Python 2.7, 355 Zeichen
Ich habe ein Programm wie dieses bereits als KI-Experiment geschrieben, also lassen Sie uns es ein wenig analysieren, einige unnötige Dinge entfernen und Golf spielen: D
Die Eingabe erfolgt durch Angabe eines Dateinamens und der Länge der gewünschten Ausgabe in Worten
Beispieltext, der Ihnen durch eine vorherige Herausforderung übermittelt wurde
Optional können Sie den Inhalt
m
einer Datei für die spätere Verwendung speichern, sodass nicht die gesamte Datei analysiert werden muss, da das Erstellen des Wörterbuchs, auf das verwiesen wird, für die Wörter, insbesondere für größere Texte (z. B. Bücher).edit: egal ob schon ein Gewinner ausgewählt wurde, ich poste es trotzdem: P
quelle
Perl, 65 Zeichen
Dies basiert stark auf der Antwort von JB , nur ein bisschen mehr golfen. Verwendet
say
für eine kitschige Zwei-Zeichen-Speicherung, muss also mit Perl 5.10 oder höher und dem Schalter-M5.010
(oder-E
) ausgeführt werden.Das Ausführen dieses Codes in dem von der Wikipedia getrennten Presseartikel ergab diese schöne Ausgabe:
quelle