Schreiben Sie in der Sprache Ihrer Wahl die kürzeste Funktion / das kürzeste Skript / Programm, mit dem Sie das Wort mit der höchsten Anzahl eindeutiger Buchstaben in einem Text identifizieren können .
- Eindeutige Buchstaben sollten ein unterschiedliches Zeichen mit UTF-8-Codierung enthalten .
- Groß- und Kleinbuchstaben desselben Zeichens sind unterschiedlich und unterschiedlich.
'a' != 'A'
- Groß- und Kleinbuchstaben desselben Zeichens sind unterschiedlich und unterschiedlich.
- Wörter sind an Leerzeichen gebunden.
- "Buchstaben" sind Symbole, die durch ein einzelnes Unicode-Zeichen dargestellt werden können.
- Das Textdokument muss von Ihrem Code eingelesen werden - kein Vorladen / Hardcodieren des Texts erlaubt.
- Die Ausgabe sollte das Wort sein, gefolgt von der Anzahl der eindeutigen Buchstaben.
llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch - 18
- Jedes Trennzeichen zwischen den beiden Werten liegt bei Ihnen, solange es mindestens ein Zeichen gibt, um sie zu trennen.
- Falls mehr als ein Wort mit der höchsten Anzahl vorhanden ist, drucken Sie alle Wörter für diese Anzahl mit einer neuen Zeilenbegrenzung.
Überbestätigung - 16 Pseudolamellibranchiat - 16
- Dies ist Codegolf, also gewinnt der kürzeste Code.
Diese Antwort auf Englisch.SE hat mich dazu inspiriert, diese Herausforderung zu schaffen. Das Beispiel verwendet nur eine Wortliste , aber jeder Text sollte verarbeitet werden können.
LlanfairPG
ist ein Wort , Welsh und enthält Briefe aus dem walisischen Alphabet -ll
undch
sind beide Einzelbuchstaben in der walisischen Sprache.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()_+~`<>/\\?'";:{}[],.
ist ein gültiges "Wort"?Antworten:
APL (56)
Dies ist eine Funktion (Frage besagt, dass dies zulässig ist), die eine Zeichenfolge akzeptiert und eine Matrix aus Wörtern und eindeutigen Längen zurückgibt.
Verwendung:
Erläuterung:
⎕ML←3
: Migrationsstufe auf 3 setzen (also⊂
Partition statt einschließen)W←⍵⊂⍨⍵≠' '
: InW
der angegebenen Zeichenfolge speichern , wobei jede Partition aus Nicht-Leerzeichen besteht.⍙←⍒∆←↑∘⍴∘∪¨W
: Ermitteln Sie die Anzahl (⍴
) der unique (∪
) -Elemente in jedem Teil (¨
) vonW
und speichern Sie diese in∆
. Ermitteln Sie dann die Sortierreihenfolge, wenn Sie nach this (⍒
) abwärts sortieren, und speichern Sie diese in⍙
.∆[⍙
...]
: sortiere∆
nach⍙
, also haben wir jetzt die eindeutigen Längen in der Reihenfolge.∆∘.=∆←∆
: Speichern Sie die sortierten∆
zurück in∆
, und sehen Sie, welche Elemente∆
gleich sind.↑+/
: summiere die Zeilen (jetzt wissen wir, wie viele Elemente jedem Element entsprechen) und nimm dann das erste Element (jetzt wissen wir, wie viele Elemente dem ersten Element entsprechen, dh wie viele der Wörter für den ersten Platz gebunden sind).W[⍙]⍴⍨
: sortiereW
nach⍙
und nimm das erste N, wobei N die Zahl ist, die wir gerade berechnet haben.{⍵,⍴∪⍵}¨
: Für jedes dieser Wörter müssen Sie das Wort selbst und die Anzahl der eindeutigen Zeichen im Wort ermitteln⊃
: Format als Matrixquelle
Mathematica
96115Bearbeiten : Der Code findet jetzt alle Wörter mit der maximalen Anzahl von Zeichen. Ich lehne es ab, Kommas als Wortzeichen zu behandeln.
Beispiele
oder
oder
Längere Beispiele
Überraschung: Das "einzigartigste" Wort in der Unabhängigkeitserklärung ist auch das einzigartigste Wort in Alice im Wunderland !
quelle
Python 2 (110 (98 mit Dateieingabe))
.
Zu verbessern: Drucken (33 Zeichen)
Interpunktion gilt als Buchstaben.
quelle
NameError: global name 'r' is not defined
. Nach dem Hinzufügen einfache Anführungszeichen um dier
:AttributeError: 'file' object has no attribute 'split'
. Python 3.3.0:SyntaxError: invalid syntax 'print i,c'
.Dies ist mein erster Codegolf, ich bin so aufgeregt :) Auch das bedeutet, dass es wahrscheinlich nicht gut ist.
Groovy
127117112105Bearbeiten: Da hier offenbar nur eine von 105 Funktionen zulässig sind, habe ich die Variablen umbenannt, damit die erste Spalte ACDC liest, da dies in jeder Art von Quellcode wichtig ist:
Sie würden es so nennen:
Ohne Funktion über Standardeingabe in 112 :
Eingabe: Lorem Ipsum Text aus primo
Alle Skripte werden ausgegeben:
Hat jemand eine Idee, wie man sie grooviger macht?
quelle
Perl 78 Bytes
Interpretieren Sie die Einschränkung "Das Textdokument muss von Ihrem Code eingelesen werden" so, dass Befehlszeilenoptionen, die die Eingabe lesen und analysieren, nicht zulässig sind. Wie bei der folgenden PHP-Lösung werden nur die Zeichen 10 und 32 als Worttrennzeichen betrachtet. Die Eingabe und Ausgabe erfolgt ebenfalls auf die gleiche Weise.
PHP 128 Bytes
Die einzigen Zeichen, die als Wortbegrenzer betrachtet werden, sind das Zeichen 10 und das Zeichen 32. Der Rest, einschließlich der Satzzeichen, wird als Teil des Wortes betrachtet.
Dieser enthält einige Binärzeichen, in denen Anführungszeichen gespeichert werden. Daher muss er mit einer ANSI-Codierung gespeichert werden, damit er ordnungsgemäß funktioniert. Alternativ kann diese Version verwendet werden, die 3 Byte schwerer ist:
Beispiel I / O:
Eingang 1:
Ausgang 1:
Eingang 2:
Ausgang 2:
quelle
incredulity
hat 10 eindeutige Buchstaben, nicht 11.GoRuby 2.0.0 - 66 Zeichen
Die folgenden Lösungen haben nicht alle Übereinstimmungen gefunden, sondern nur eine. Hier ist meine endgültige Version:
Beispiele:
produziert:
GoRuby 2.0.0 - 29 Zeichen (nicht exaktes Ausgabeformat)
Erwartet Eingaben von stdin. Das Ausgabeformat ist jedoch etwas anders. Beispielsweise:
GoRuby 2.0.0 -
4240 Zeichenerwartet eine Eingabe von stdin
Ruby 1.9.3 - 6965 Zeichenerwartet die Eingabe von stdin (wie oben, jedoch ohne GoRuby-Abkürzungen)
quelle
Javascript
163 155 152162 BytesDies ist ungefähr so kurz wie ich es bekommen kann:
In dieser Version
/\s/
werden Wörter nach Leerzeichen getrennt, sodass Satzzeichen, Kommas, Punkte usw. als Teil der Wörter verwendet werden. Dies kann leicht geändert werden,/\b/
um sie nicht einzuschließen.Ich werde gleich sehen, was ich mit for-Schleifen anstelle von forEaches machen kann.
I / O:
quelle
In the event more than one word exists with the highest count, print all words for that count, **with one new line delimiting**.
Scala 129 Zeichen:
quelle
R - 106 Zeichen
Als Funktion mit dem eingegebenen Text als Parameter:
Und ein paar Beispiele:
Oder R - 100 Zeichen
Als Funktion mit dem Pfad zur Textdatei als Parameter:
Verwendung:
quelle
Python
176168quelle
Python3 119
Liest aus einer aufgerufenen Datei
a
.Getestet mit den Eingabetexten von @primo:
quelle
VBScript - 430 / VBA - 420
VBScript:
VBA:
quelle