Wenn Sie eine Zeichenfolge eingeben, die aus einer Nachricht aus unserem Site-Chatroom besteht, die aus der unten beschriebenen und verknüpften Liste stammt, geben Sie entweder einen echten oder einen falschen Wert aus, um vorherzusagen, ob diese Nachricht in 50 Bytes oder weniger markiert wurde.
Sie können alle wahrheitsgetreuen oder falschen Werte verwenden , diese müssen jedoch identisch sein (dh es sollten nur zwei mögliche Ausgaben vorhanden sein, eine wahrheitsgetreue und eine falsche). Die Eingabe wird als unformatiertes HTML mit entfernten Zeilenumbrüchen angegeben und kann Nicht-ASCII-Unicode-Zeichen enthalten. Wenn Sie eine andere Eingabe als UTF-8 benötigen, geben Sie dies bitte in Ihrer Antwort an.
Der Gewinner dieser Herausforderung ist derjenige, der den höchsten Prozentsatz an Chatnachrichten korrekt aus der unten verlinkten Liste vorhersagt. Wenn zwei Einsendungen die gleiche Erfolgsrate haben, gewinnt die kürzere Einsendung.
Bitte geben Sie Anweisungen zum Ausführen Ihres Codes für den gesamten Nachrichtensatz und zum Berechnen des korrekten Prozentsatzes. Im Idealfall handelt es sich hierbei um einen Code, der die positiven Testfälle durchläuft und ausgibt, wie viele davon Ihr Code richtig gemacht hat, und dann für die negativen Testfälle das Gleiche tut. (Die Gesamtpunktzahl kann dann manuell über berechnet werden (correctPositive + correctNegative) / totalMessages
.)
Damit Ihr Code einigermaßen überprüfbar ist, muss er in maximal 5 Minuten für die gesamte Liste der Chat-Nachrichten auf vernünftiger moderner Hardware vollständig sein.
Die vollständige Liste der Chat-Nachrichten finden Sie hier . Sie besteht aus den 1000 neuesten markierten Nachrichten als echte Testfälle und den 1000 neuesten nicht markierten Nachrichten als falsche Testfälle. Beachten Sie, dass das Inhaltsverzeichnis zwei Dateien enthält. Blättern Sie etwa zur Hälfte nach unten, um die nicht markierten Nachrichten anzuzeigen.
quelle
O2
Don'?t star
\^
Antworten:
Netzhaut , 50 Bytes,
71,8%,72,15%Versuchte einige Regex Golf auf @ MartinBüttner Vorschlag. Dies entspricht 704 markierten Nachrichten und nicht 739 nicht markierten Nachrichten.
Das
^.*( ... )
ist , um sicherzustellen , dass es immer entweder 0 oder 1 Spiel, da Retina die Anzahl der Spiele standardmäßig ausgibt. Sie können das Programm anhand der Eingabedateien bewerten, indem Sie denm`
mehrzeiligen Modus voranstellen und dann ausführenund ebenfalls für
unstarred.txt
.Analyse / Erklärung
Ich habe die obigen Schnipsel (und viele mehr) mit einem Programm generiert und dann die gewünschten manuell ausgewählt. Hier ist eine Vorstellung davon, warum die obigen Snippets funktionieren:
C
: StreichhölzerPPCG
,@CᴏɴᴏʀO'Bʀɪᴇɴ
E
: Streichhölzer@ETHproductions
,@El'endiaStarman
;
: Da es sich bei den Testfällen um HTML handelt, stimmt dies mit<
und überein>
ಠ-ﭏ
: Entspricht einer Reihe von Unicode-Zeichen, insbesondere fürಠ_ಠ
und@Doorknob冰
tar
: Entspricht Variationen vonstar
,@El'endiaStarman
(erneut) und wird auchgravatar
in den von neuen Bots geposteten Oneboxen angezeigtol
:rel="nofollow"
Stimmt überein, was in vielen Links und oneboxes stehtl.x
: Streichhölzer@AlexA.
,@trichoplax
eo
: Hauptsächlich Streichhölzerpeople
, aber auch drei Fälle für@Geobits
a.u
: Hauptsächlich Spielegraduation
,status
,feature
undabuse
pin
: Übereinstimmungenping
und Wörter, die auf endenping
. Entspricht auch ein paar Beiträgen in einer Diskussion zum Themapineapple
, als Beispiel für Überanpassung.nu
: Stimmt mit einer gemischten Wortmenge überein, die am häufigsten vorkommtnumber
o.f
: Streichhölzergolf
,conf(irm|use)
"$
: Stimmt mit einem Anführungszeichen als letztes Zeichen überein, z@phase He means "Jenga."
Das
[
ist nichts Besonderes - ich hatte nur einen Charakter übrig, also dachte ich mir, ich könnte ihn für einen weiteren Fall verwenden.quelle
JavaScript ES6, 50 Byte, 71,10%
Identifiziert 670 mit und 752 ohne Stern.
Jetzt über die 70% Schranke und alle außer Retina schlagen!
Gibt zurück,
true
wenn die Nachricht Folgendes enthält:D
,E
,R
, oderv
;tar
(normalerweisestar
);a
undu
mit einem Buchstaben dazwischen;l
undx
mit einem Buchstaben dazwischen (normalerweisealex
);eo
oderol
;C
, ein Semikolon oder aಠ
.Hier sind noch ein paar fruchtbare Übereinstimmungen, die es anscheinend nicht wert sind, andere loszuwerden:
nf
nu
yp
n.m
Dies ist der Retina-Antwort immer näher gekommen, aber ich habe die meisten Verbesserungen selbst gefunden.
Probieren Sie es in der Konsole einer dieser Seiten aus: Sternentexte , No-Star-Texte
Hier ist eine alternative Version.
/a/.test
ist technisch eine Funktion, erfüllt aber nicht unsere Kriterien :Dies ergibt 71.90% (697 mit Sternchen, 741 ohne Sternchen).
Ich habe einige Analysen in den Listen durchgeführt, um herauszufinden, welche Regex-Gruppen den am meisten markierten und den am wenigsten markierten Beiträgen entsprechen. Die Analysen finden Sie in dieser Übersicht . Bisher habe ich geprüft
aa
unda.a
Übereinstimmungen.a.u
liegt mit 28 auf Platz 50, ist aber das effizienteste Spiel seines Formats ...quelle
/regexp/.test()
? Ich denke, dass es möglich ist, in ein paar Fällen mehr damit zu quetschen.Pyth, 50 Bytes, 67,9%
Dadurch wird die Eingabe in einen von 322 Buckets gehasht und der Boolesche Wert in Abhängigkeit von diesem Bucket ausgewählt.
Wertung
quelle
CJam, 45 Bytes, 65,55%
Hiermit wird überprüft, ob sich das erste Zeichen in einer bestimmten Liste befindet oder die Summe aller Codepunkte größer als 8.672 ist.
Wertung
quelle
fold
Befehl und die eigentliche Antwort beizubringen.Matlab / Oktave, 17 Bytes 60,15%
Klassifiziert 490 Nachrichten korrekt als gestarrt, 713 Nachrichten als nicht gestarrt
Aktuelle Version:
Ich überprüfe nur die Länge.
Alte Version:
Könnte in jede andere Sprache übersetzt werden. Es wird nur geprüft, ob die Nachricht die Worte Stern enthält oder nicht.
score: 59/911/52.5%
Ergebnisse für Testfälle mit diesem Code:
quelle
CJam, 32 Bytes, Gesamtnote von 0,5605 (56%).
Identifiziert korrekt 428 markierte und 693 nicht markierte Nachrichten. Gesamtpunktzahl ist
(360+730)/2000=0.545
.Ich erwarte nicht zu gewinnen und sehe, wie es funktioniert. Oben sehen Sie den Code für eine einzelne Nachricht, um diese geänderte Version mit mehreren Verwendungszwecken auszuführen, die die Anzahl der markierten Nachrichten zurückgibt:
Testen Sie es einfach mit STDIN als Rohtext einer der beiden Dateien. Gibt true zurück, wenn die Nachricht "star" enthält oder if
length + 1 mod 4 = 0
.quelle
JavaScript ES6, 0,615 = 61,5%
342 korrekt als markiert identifiziert, 888 korrekt als nicht markiert identifiziert,
(342+888)/2000 = 0.615
Teste dies oder jenes so :
ICH KANN DICH NOCH ERHALTEN, MEINE HÜBSCHE!
quelle
Netzhaut, 46 Bytes, 68,55
679 Stern: 692 Unstern
Auf Retina umgestellt, um ein paar Regexes zu bekommen ... Noch nicht fertig.
quelle
C # 6.0 (.NET Framework 4.6), 50 Bytes, 63,60%
Programm, das ich zu Testzwecken verwendet habe:
quelle