Grüße, edle Code-Golfer. Heute werden Sie die ältesten und angesehensten Debatten lösen - Emacs oder Vim?
Ihre Herausforderung besteht darin, zwei Suchbegriffe als Eingabe zu verwenden und auszugeben, welcher dieser Begriffe die meisten Google-Suchergebnisse aufweist. (Dies ist offensichtlich völlig fair. Was meinst du, voreingenommen?)
Hier sind einige Beispiele für Ein- und Ausgänge:
Input: emacs
und vim
Output: vim
(überhaupt keine Flamewars in den Kommentaren erstellen)
Eingabe: google
und microsoft
Ausgabe:google
Input: code golf stack exchange
und code review stack exchange
Output: code golf stack exchange
(ja!)
Und hier sind einige Randfälle nur zum Spaß (und zum Testen Ihrer Lösungen):
Eingabe: About 1,000,000 results
und About 100,000 results
Ausgabe:About 100,000 results
Eingabe: This will autocotrect
und Another testcase
Ausgabe: Another testcase
(Wenn Sie keine Autokorrektur in Betracht ziehen, gewinnt die erste)
Für die folgenden Testfälle müssen Sie zuerst die #
Zeichen in den Suchbegriffen entfernen , da diese davon abhängen, dass der Begriff eine bestimmte Anzahl von Ergebnissen aufweist und das Posten des Begriffs hier das ruinieren würde.
Input: Thissear#chter#mhasno#results
und Another testcase
Output: Another testcase
(nur ein Test für null Ergebnisse)
Eingabe: "These exact wo#rds do#n't exi#st# on the Internet"
und Another testcase
Ausgabe: Another testcase
(Testen von "
s)
Eingabe: Abo#ut 1,65#2,85#3,2#86 re#sults
und Another testcase
Ausgabe: Another testcase
(dies ist schwierig - der obige Suchbegriff hat ein Ergebnis)
Eingabe: "Abo#ut 4#8,234,8#75,14#7 res#ults"
und Another testcase
Ausgabe: Another testcase
(auch schwierig - keine Ergebnisse, daher wird der Suchbegriff angezeigt)
Sie müssen den Eckfall der "quoted"
Suche mit der Rückgabe "Keine Ergebnisse, stattdessen Ergebnisse ohne Anführungszeichen anzeigen" nicht behandeln, da dies einfach zu kompliziert wäre. Sie müssen auch keine Eingaben mit der gleichen Anzahl von Ergebnissen verarbeiten.
Das ist Code-Golf , also gewinnt der kürzeste Code in Bytes!
Antworten:
Faktor ,
305201196200201188184182179169178171165199171170165163 BytesEine Sprache, die fast so ausführlich ist wie Java und Ruby und Powershell schlägt! : D
Besser jetzt Regex. Danke an @fede s. für 5 Bytes aus!
Oder
159157, wenn die Ausgabe wie folgt aussehen kann{ "vim" 9782948234 }
:Wenn wir dagegen nicht tötbar sein wollen, für
199196193 Bytes :Unkillable, weil es HTML analysiert, also viel robuster als die Antworten mit Regex.
quelle
unkillable
Methode. Es ist tatsächlich kürzer in PowerShell als mit einem Regex. (Noch immer 2 Bytes länger als Ihre Regex-Antwort). Ich würde Powershell Succint nicht nennen, die Befehlsnamen sind selten kurz (iwr
zufällig ein Standard-Alias fürinvoke-webrequest
undsort
fürsort-object
, sonst wäre es so viel länger)Ruby,
203180 Bytes+11 Bytes für das
-ropen-uri
Flag (plus Leerzeichen).Die Eingabe erfolgt als zwei Argumente.
URL Erklärung:
?nord=1
: Automatische Umleitung von HTTP zu HTTPS verhindern&q=#{URI.escape x}
: Entkomme der Abfrage, damit es"
funktioniert&nfpr=1
: keine AutokorrekturDas Ganze
map
verwandelt sich['emacs','vim']
in[[2150000, 'emacs'], [14900000, 'vim']]
. (Sie können dies sehen, indem Sie das.max[1]
am Ende in ändern.inspect
.) Dann wird dasmax
genommen, das das mit den meisten Ergebnissen ergreift, und[1]
wird verwendet, um den Suchbegriff zu erhalten.quelle
Thissear#chter#mhasno#results
wird diese Frage jetzt bei Google angezeigt :) Interessanterweise werden 2 Ergebnisse angezeigt (zumindest für mich!) - google.com/… NB. Jeder Regex, der mit "Über * Ergebnisse" übereinstimmt, verfehlt das auf dieser Seite gefundene Ergebnis :(ruby -ropen-uri
anstelle der Datei eingeben.Von den in dem Problem erwähnten Texteditoren kann nur einer dies alleine lösen ...
Emacs: 137 Tastenanschläge
Es wird erwartet, dass sich die ersten Suchbegriffe in der ersten Zeile und die zweiten Suchbegriffe in der zweiten Zeile befinden, wobei sich der Cursor am Anfang des Puffers befindet.
Für diejenigen, die mit Emacs nicht vertraut sind,
C-s
bedeutetCtrl-S
.M-z
bedeutetAlt-Z
(Alt
ist wahrscheinlich dein Metaschlüssel)M-<
bedeutetAlt-<
oderAlt-Shift-,
C-S-e
meintCtrl-Shift-e
Für diejenigen, die mit Emacs vertraut sind,
emacs -q
..emacs
Dadurch wird Ihre Datei nicht geladen , sodass keine ausgefallenen Pakete dies beeinträchtigen.Erläuterung
Schreiben Sie den Anfang der Elisp-Statment-Shell
<C-o><C-u><C-k>
Speichert die Argumente mit einer neuen Zeile(if(<<C-y><C-y>
Schreiben Sie den Anfang der if-Anweisung und platzieren Sie 2 Kopien der Argumente<M-<><C-n>
In die zweite Zeile wechselnDefinieren Sie das HTTP-Makro. Dadurch wird das Argument in eine Google-Such-URL konvertiert und anschließend die Anzahl der Suchergebnisse zurückgegeben.
<F3>
Beginnen Sie mit der Definition des Tastaturmakros<C-a>
Zum Anfang des Suchbegriffs springen.http://google.com/search?nfpr=1&q=
Stellen Sie die Such-URL voran<C-S-e><M-x>r-st<RET> <RET>+<RET>
Ersetzen Sie alle Leerzeichen durch + Zeichen.<C-a><C-k><M-x>b-em<RET><C-y><RET>
Emacs rufen das rohe HTML ab (b-em
Abkürzung fürbrowse-url-emacs
)<C-x><C-q>
Machen Sie die Datei beschreibbar (erforderlich, damit das Makro keine Fehler verursacht)<C-s><RET>ts"><RET>
Zur Anzahl der Ergebnisse wechseln div<M-z><
Schneiden Sie den Text des Differentials aus (aus diesem Grund wurde das benötigt)<C-x>0
Wechseln Sie zurück zum ursprünglichen Puffer<C-y>0 r
;; Stellen Sie die Ergebnisse wieder in die Zeile ('0 r' behandelt keine Ergebnisse)<C-a><C-M-s><RET>[0-9]<RET><C-b><M-z> <C-a><C-y><C-k>
;; Extrahieren Sie die Zahl aus der Zeichenfolge.<C-S-a><M-x><up><up><RET>,<RET><RET>
Entfernt die Kommas von der Zahl<F4>
Beenden Sie das TastaturmakroGehen Sie nach unten und führen Sie das Tastaturmakro in der nächsten Zeile aus.
<C-n>
Geht zur nächsten Zeile<F4>
Wiederholen Sie das Makro einmal.Beenden Sie die elisp-Anweisung und führen Sie sie aus
<C-e>)(next-line)())
Beenden Sie die elisp-Anweisung<C-x><C-e>
Bewerten Sie den Befehl elisp<C-n><C-a><C-k>
Töte das siegreiche Argument<C-x>h<DEL>
Alles andere löschen<C-y>
Fügen Sie das Siegerargument einLaufen Sie es selbst
Zum Glück müssen Sie nicht alle diese Tastenanschläge perfekt eingeben! Das Fleisch und die Kartoffeln befinden sich alle in einem Makro, das Sie einfach kopieren und einfügen können. Das Makro kann kopiert und in Emacs eingefügt werden!
1. Bearbeiten Sie das Tastaturmakro
<C-x><C-k><C-e>
2. Fügen Sie dies in den gesamten Puffer ein (Einfügen sollte sein
<C-y>
)<C-c><C-c>
, um das Makro zu speichern.<F4>
, um das Makro auszuführen (oder führen Sie es einfach selbst aus, um es zu versuchen).Vorbehalte
<C-x><k> search<TAB>
<input type="submit" name="submit" value="Submit"...>
, ist dies wahrscheinlich geschehen.<C-x><C-b>
und den Puffer mit dem Suchbegriff darin auswählen).quelle
Of the text editors mentioned in the problem, only one of them can solve this on its own...
ist das überhaupt wahr? Gibt es wirklich keine HTTP-Bibliotheken für Vimscript?curl
und den gleichen Effekt erzielt . (aber dann sollte deine Antwort anzeigen, dass es vim + curl ist).Java,
828800783744739687 Bytesquelle
args
statt StdIn Eingaben von nehmen?Python 3,
227226208213226220221206202200198 BytesWeisen Sie das Lambda einer Bezeichnung zu.
Verwendet die Anforderungsbibliothek .
Ungolfed:
quelle
NameError: name 'quote' is not defined
quote
,urllib.parse.quote
nach einem absoluten Import wieder zu wechseln .Powershell,
175, 172 BytesDas Zeigen der Kerbe sowie des Namens würde 2 weitere Bytes schneiden.
Dies verwendet die gleiche
unkillable
Funktion wie die196 Byte
Faktor- Antwort (Parsed HTML) und schneidet von der vorherigen Regex-Antwort ab.quelle
Schläger,
360337 Bytes0.o
Es gibt einen Grund, warum sie es Lost In a Sea of Parentheses nennen.
Ungolfed:
quelle