Die Herausforderung:
Erstellen Sie ein ASCII-Diagramm mit den am häufigsten verwendeten Wörtern in einem bestimmten Text.
Die Regeln:
- Akzeptiere nur
a-z
undA-Z
(alphabetische Zeichen) als Teil eines Wortes. - Gehäuse ignorieren (
She
==she
für unseren Zweck). - Ignoriere die folgenden Wörter (ziemlich willkürlich, ich weiß):
the, and, of, to, a, i, it, in, or, is
Klarstellung: Überlegung
don't
: Dies würde als 2 verschiedene "Wörter" in den Bereichena-z
undA-Z
: (don
undt
) genommen.Optional (es ist zu spät formell die Spezifikationen nun sich zu ändern) Sie können Drop wählen , um alle einzelnen Buchstaben ‚Worte‘ (dies möglicherweise für eine Verkürzung der zu ignorieren Liste machen könnte).
Analysieren Sie eine gegebene text
(lesen Sie eine Datei, die über Befehlszeilenargumente angegeben oder weitergeleitet wurde; nehmen Sie an us-ascii
) und erstellen Sie eine word frequency chart
mit den folgenden Eigenschaften:
- Zeigen Sie das Diagramm (siehe auch das folgende Beispiel) mit den 22 häufigsten Wörtern an (geordnet nach absteigender Häufigkeit).
- Die Bar
width
die Anzahl der Vorkommen (Häufigkeit) des Wortes (proportional) an. Fügen Sie ein Leerzeichen hinzu und drucken Sie das Wort. - Stellen Sie sicher, dass diese Balken (plus Leerzeichen-Wort-Leerzeichen) immer passen :
bar
+[space]
+word
+[space]
sollten immer <=80
Zeichen sein (berücksichtigen Sie mögliche unterschiedliche Balken- und Wortlängen: Beispiel: Das zweithäufigste Wort könnte dann viel länger sein die erste, obwohl sie sich nicht so stark in der Frequenz unterscheidet). Maximieren Sie die Balkenbreite innerhalb dieser Einschränkungen und skalieren Sie die Balken entsprechend (entsprechend den Frequenzen, die sie darstellen).
Ein Beispiel:
Den Text für das Beispiel finden Sie hier ( Alice's Adventures in Wonderland, von Lewis Carroll ).
Dieser spezifische Text würde die folgende Tabelle ergeben:
_________________________________________________________________________ | _________________________________________________________________________ | sie | _______________________________________________________________ | Sie | ____________________________________________________________ | sagte | ____________________________________________________ | Alice | ______________________________________________ | war | __________________________________________ | Das | ___________________________________ | wie | _______________________________ | ihr | ____________________________ | mit | ____________________________ | beim | ___________________________ | s | ___________________________ | t | _________________________ | auf | _________________________ | alles | ______________________ | Dies | ______________________ | zum | ______________________ | hätten | _____________________ | aber | ____________________ | Sein | ____________________ | nicht | ___________________ | Sie | __________________ | so
Zu Ihrer Information: Dies sind die Frequenzen, auf denen die obige Tabelle basiert:
[('sie', 553), ('du', 481), ('sagte', 462), ('alice', 403), ('war', 358), ('das' ', 330), (' as ', 274), (' her ', 248), (' with ', 227), (' at ', 227), (' s ', 219), (' t ') , 218), ('on', 204), ('all', 200), ('this', 181), ('for', 179), ('had', 178), (' aber ', 175), (' sei ', 167), (' nicht ', 166), (' sie ', 155), (' so ', 152)]
Ein zweites Beispiel (um zu überprüfen, ob Sie die vollständige Spezifikation implementiert haben):
Ersetzen Sie jedes Vorkommen you
in der verknüpften Alice im Wunderland- Datei durch superlongstringstring
:
________________________________________________________________ | ________________________________________________________________ | sie | _______________________________________________________ | Superlongstringstring | _____________________________________________________ | sagte | ______________________________________________ | Alice | ________________________________________ | war | _____________________________________ | Das | ______________________________ | wie | ___________________________ | ihr | _________________________ | mit | _________________________ | beim | ________________________ | s | ________________________ | t | ______________________ | auf | _____________________ | alles | ___________________ | Dies | ___________________ | zum | ___________________ | hätten | __________________ | aber | _________________ | Sein | _________________ | nicht | ________________ | Sie | ________________ | so
Der Gewinner:
Kürzeste Lösung (nach Zeichenanzahl pro Sprache). Habe Spaß!
Bearbeiten : Tabelle mit einer Zusammenfassung der bisherigen Ergebnisse (15.02.2012) (ursprünglich vom Benutzer Nas Banov hinzugefügt):
Sprache entspannt Entspannt ========= ======= ====== GolfScript 130 143 Perl 185 Windows PowerShell 148 199 Mathematica 199 Ruby 185 205 Unix Toolchain 194 228 Python 183 243 Clojure 282 Scala 311 Haskell 333 Awk 336 R 298 Javascript 304 354 Groovy 321 Matlab 404 C # 422 Smalltalk 386 PHP 450 F # 452 TSQL 483 507
Die Zahlen geben die Länge der kürzesten Lösung in einer bestimmten Sprache an. "Streng" bezieht sich auf eine Lösung, die die Spezifikation vollständig implementiert (zeichnet |____|
Balken, schließt den ersten Balken oben mit einer ____
Linie, berücksichtigt die Möglichkeit langer Wörter mit hoher Frequenz usw.). "Entspannt" bedeutet, dass einige Freiheiten genommen wurden, um die Lösung zu verkürzen.
Es sind nur Lösungen enthalten, die kürzer als 500 Zeichen sind. Die Liste der Sprachen ist nach der Länge der "strengen" Lösung sortiert. 'Unix Toolchain' wird verwendet, um verschiedene Lösungen zu kennzeichnen, die die traditionelle * nix-Shell sowie eine Mischung von Werkzeugen verwenden (wie grep, tr, sort, uniq, head, perl, awk).
s
und vertreten t
sind.