Pozdrowienia, szlachetni golfiści. Dziś rozwiążesz najstarszą i najbardziej wyróżniającą się debatę - Emacsa czy Vima?
Twoim wyzwaniem jest wprowadzenie dwóch wyszukiwanych haseł jako danych wejściowych i wyświetlenie, który z nich ma najwięcej wyników wyszukiwania Google. (Jest to oczywiście całkowicie sprawiedliwe. Co masz na myśli, stronnicze?)
Oto kilka przykładowych danych wejściowych i wyjściowych:
Wejście: emacs
i vim
wyjście: vim
(całkowicie nie tworząc żadnych flamewars w komentarzach)
Wejście: google
i microsoft
wyjście:google
Wejście: code golf stack exchange
i code review stack exchange
wyjście: code golf stack exchange
(tak!)
Oto kilka ciekawych przypadków (dla zabawy i testowania rozwiązań):
Wejście: About 1,000,000 results
i About 100,000 results
wyjście:About 100,000 results
Dane wejściowe: This will autocotrect
i dane Another testcase
wyjściowe: Another testcase
(jeśli nie rozważysz autokorekty, pierwsza wygra)
W poniższych przypadkach testowych musisz najpierw usunąć #
znaki z wyszukiwanych haseł, ponieważ polegają one na tym, że termin ma określoną liczbę wyników, a opublikowanie go tutaj zrujnowałoby to.
Wejście: Thissear#chter#mhasno#results
i Another testcase
wyjście: Another testcase
(tylko test dla zerowych wyników)
Wejście: "These exact wo#rds do#n't exi#st# on the Internet"
i Another testcase
wyjście: Another testcase
(testy "
)
Dane wejściowe: Abo#ut 1,65#2,85#3,2#86 re#sults
i Dane Another testcase
wyjściowe: Another testcase
(ten jest trudny - powyższy termin wyszukiwania ma jeden wynik)
Input: "Abo#ut 4#8,234,8#75,14#7 res#ults"
and Another testcase
Output: Another testcase
(również trudne - brak wyników, więc wyświetla wyszukiwane hasło)
Nie trzeba zajmować się przypadkiem "quoted"
wyszukiwania z wynikiem „Nie ma wyników, zamiast tego wyświetla wyniki bez cudzysłowów”, ponieważ byłoby to zbyt skomplikowane. Nie musisz też obsługiwać danych wejściowych z taką samą liczbą wyników.
To jest code-golf , więc wygra najkrótszy kod w bajtach!
Odpowiedzi:
Współczynnik ,
305201196200201188184182179169178171165199171170165163 bajtówJęzyk prawie tak gadatliwy jak Java, pokonując Ruby ... i PowerShell! :RE
Lepsze wyrażenie regularne, teraz. Dzięki @fede s. za 5 bajtów off!
Lub
159157, jeśli dane wyjściowe mogą być takie{ "vim" 9782948234 }
:Z drugiej strony, jeśli chcemy być nie do zabicia, dla
199196193 bajtów :Nie do zabicia, ponieważ analizuje HTML, więc jest o wiele bardziej solidny niż odpowiedzi przy użyciu wyrażenia regularnego.
źródło
unkillable
metodę. W rzeczywistości jest on krótszy w PowerShell niż przy użyciu wyrażenia regularnego. (Jednak nadal 2 bajty dłuższe niż odpowiedź wyrażenia regularnego). Nie nazwałbym jednak succintem PowerShell, jego nazwy poleceń są rzadko krótkie (iwr
zdarza się, że jest to domyślny alias dlainvoke-webrequest
isort
dlasort-object
, w przeciwnym razie byłoby o wiele dłużej)Rubinowy,
203180 bajtów+11 bajtów dla
-ropen-uri
flagi (plus spacja).Dane wejściowe są traktowane jako dwa argumenty.
Objaśnienie adresu URL:
?nord=1
: zapobieganie automatycznemu przekierowywaniu z HTTP na HTTPS&q=#{URI.escape x}
: unikaj zapytania, więc"
działa&nfpr=1
: brak autokorektyCałość
map
zamienia się['emacs','vim']
w[[2150000, 'emacs'], [14900000, 'vim']]
. (Możesz to zobaczyć, zmieniając.max[1]
na końcu na.inspect
.) Następniemax
jest brany, który pobierze ten z największą liczbą wyników i[1]
jest używany do uzyskania wyszukiwanego terminu.źródło
Thissear#chter#mhasno#results
wyświetli teraz to pytanie w Google :) Co ciekawe pokazuje 2 wyniki (przynajmniej dla mnie!) - google.com/… NB. Wszelkie wyrażenia regularne pasujące do „O * wynikach” nie trafią do znalezionego wyniku na tej stronie :(ruby -ropen-uri
zamiast w pliku.Spośród edytorów tekstu wymienionych w problemie tylko jeden z nich może rozwiązać to samodzielnie ...
Emacs: 137 klawiszy
Oczekuje, że pierwsze wyszukiwane hasła znajdą się w pierwszym wierszu, a drugie wyszukiwane hasła w drugiej linii, z kursorem na początku bufora.
Dla tych, którzy nie znają Emacsa,
C-s
środkiCtrl-S
.M-z
oznaczaAlt-Z
(Alt
prawdopodobnie Twój klucz meta)M-<
oznaczaAlt-<
lubAlt-Shift-,
C-S-e
znaczyCtrl-Shift-e
Dla tych, którzy znają Emacsa,
emacs -q
. To nie ładuje twojego.emacs
pliku, więc żadne fantazyjne pakiety nie będą mu przeszkadzać.Wyjaśnienie
Napisz początek skorupy instrukcji elisp
<C-o><C-u><C-k>
Zapisuje argumenty z nową linią(if(<<C-y><C-y>
Napisz początek instrukcji if i umieść 2 kopie argumentów<M-<><C-n>
Przejdź do drugiej liniiZdefiniuj makro HTTP. Konwertuje to argument na adres URL wyszukiwania Google, a następnie zwraca liczbę wyników wyszukiwania.
<F3>
Zacznij definiować makro klawiatury<C-a>
Przejdź na początek wyszukiwanego terminu.http://google.com/search?nfpr=1&q=
Dodaj adres URL wyszukiwania<C-S-e><M-x>r-st<RET> <RET>+<RET>
Zastąp wszystkie spacje znakami +.<C-a><C-k><M-x>b-em<RET><C-y><RET>
Emacs pobiera surowy HTML (b-em
skrót odbrowse-url-emacs
)<C-x><C-q>
Spraw, aby plik był zapisywalny (wymagany, aby makro nie zawierało błędów)<C-s><RET>ts"><RET>
Przejdź do liczby wyników div (należy przeprowadzić regularne wyszukiwanie, ponieważ makra emacs polegają na działaniu isearch)<M-z><
Wytnij tekst różnicy (dlatego był wymagany)<C-x>0
Wróć do pierwotnego bufora<C-y>0 r
;; Umieść wyniki z powrotem na linii („0 r” nie obsługuje żadnych wyników)<C-a><C-M-s><RET>[0-9]<RET><C-b><M-z> <C-a><C-y><C-k>
;; Wyodrębnij liczbę z ciągu.<C-S-a><M-x><up><up><RET>,<RET><RET>
Usuwa przecinki z numeru<F4>
Zakończ makro klawiaturyPrzesuń w dół i uruchom makro klawiatury w następnym wierszu.
<C-n>
Przechodzi do następnej linii<F4>
Powtórz makro raz.Zakończ instrukcję elisp i wykonaj ją
<C-e>)(next-line)())
Dokończ instrukcję elisp<C-x><C-e>
Oceń polecenie elisp<C-n><C-a><C-k>
Zabij zwycięski argument<C-x>h<DEL>
Usuń wszystko inne<C-y>
Wklej zwycięski argumentUruchamianie samemu
Na szczęście nie musisz idealnie wpisywać wszystkich tych naciśnięć klawiszy! Mięso i ziemniaki są w makro, które można po prostu skopiować i wkleić. Makro można skopiować i wkleić do emacsa!
1. Edytuj makro klawiatury 2.
<C-x><C-k><C-e>
Wklej to do całego bufora (wklej powinno być
<C-y>
)<C-c><C-c>
aby zapisać makro.<F4>
aby uruchomić makro (lub po prostu uruchom go samodzielnie, aby spróbować)Ostrzeżenia
<C-x><k> search<TAB>
<input type="submit" name="submit" value="Submit"...>
, prawdopodobnie tak się stało.<C-x><C-b>
i wybierz bufor z wyszukiwanym terminem).źródło
Of the text editors mentioned in the problem, only one of them can solve this on its own...
czy to w ogóle prawda? czy naprawdę nie ma bibliotek HTTP dla vimscript?curl
i uzyskać taki sam efekt. (ale wtedy twoja odpowiedź powinna wskazywać, że to vim + curl).Java,
828800783744739687 bajtówźródło
args
zamiast StdIn?Python 3,
227226208213226220221206202200198 bajtówPrzypisz lambda do czegoś, co można to nazwać.
Korzysta z biblioteki żądań .
Nie golfowany:
źródło
NameError: name 'quote' is not defined
quote
wrócić dourllib.parse.quote
absolutnego importu.PowerShell,
175, 172 bajtówWyświetlanie wyniku, a także nazwy, spowodowałoby przecięcie 2 kolejnych bajtów.
Używa tej samej
unkillable
funkcji co odpowiedź196 Byte
Factor (analizowany HTML) i odcina się od poprzedniej odpowiedzi wyrażenia regularnego.źródło
Rakieta,
360337 bajtów0.o
Jest powód, dla którego nazywają to Lost In a Sea of Parentheses.
Nie golfowany:
źródło