Twoim zadaniem jest stworzenie programu, który na podstawie ciągu wejściowego wyświetli pierwszy wynik autouzupełniania Google dla tego wyszukiwania. Format wejścia / wyjścia zależy od Ciebie.
Zasady
- Twój program musi przyjąć 1 dane wejściowe, ciąg znaków i wygenerować wynik najlepszych sugestii autouzupełniania / autouzupełniania Google. Format wejścia / wyjścia zależy od Ciebie. Pamiętaj tylko, aby podać swój format we / wy.
- Oczywiście dostęp do Internetu jest dozwolony.
- Skracacze URL (takie jak bit.ly, TinyURL itp.) Są surowo zabronione . Powinieneś pobrać wyniki autouzupełniania z tego adresu URL: http://suggestqueries.google.com/complete/search?client=your_browser&q=your_query lub http://google.com/complete/search?client=your_browser&q=your_query . Możesz założyć dowolną nazwę (lub ciąg znaków przeglądarki) dla
client
. W programie, który napisałem , zakładam Chrome. Każda nazwa lub ciąg przeglądarki powinien działać. Możesz przekazać dowolne opcje na stronę internetową, o ile korzystasz z jakiejś wersji http://suggestqueries.google.com/complete/search . - Proszę wyjaśnić, jak działa Twój program. Nie jest to obowiązkowe, ale zdecydowanie odradzam.
- Wszystkie standardowe luki są surowo zabronione .
Przypadki testowe
Te ciągle się zmieniają, więc edytuj ten post, jeśli staną się nieaktualne.
'how to'
=> 'how to make slime'
'code golf'
=> 'code golf languages'
'you'
=> 'youtube'
'g'
=> 'google' (why would you google 'google'?)
To jest golf golfowy , więc może wygrać najkrótszy kod, a najlepszy programista ...
output=toolbar
, nie musimy wcale określać klienta.https -> http
(zapisz 1 bajt), usuńwww.
(zapisz 4 bajty),google.com -> google.us
(zapisz 1 bajt) lub nawetgoogle.com -> g.cn
(zapisz 6 bajtów; nie jestem pewien, dlaczego to nadal działa, ale wygląda na to, że nadal działa w 20170424)Odpowiedzi:
Zsh + coreutils + w3m,
887168 bajtówPrzejście z Bash na Zsh pozwoliło zaoszczędzić 3 bajty.
Dzięki @FatalMerlin za krótszy adres URL, oszczędzając 17 bajtów!
Przykładowy przebieg
źródło
make(1)
szlamować .Vim 8 + unimpaired.vim ,
938985707371 bajtówJako bonus, ostatnie bajty wyglądają, jakby mrugały do ciebie.
;D
Ponieważ zawiera znaki niedrukowalne, wyjaśnienie zawiera podstawienia (i[url]
dla zwięzłości zastąpiłem część adresu URL przed zapytaniem ):Jeśli chodzi o uruchamianie, działa dobrze, jeśli zapiszesz go w pliku o nazwie
script
i uruchomiszvim -s script input.txt
przynajmniej na macOS. Nie działa, jeśli dodasz-u NONE
, ale działa dobrze, jeśli mój.vimrc
jest pusty. Zakładam, że używa czegoś z systemu,.vimrc
aby działał URL. Oznacza to jednak, że nie działa w V, więc nie ma łącza do TIO.Kilka innych przypadków testowych:
To, czego naprawdę potrzebuję, to sposób na otwarcie adresu URL ze spacjami. Zastąpienie ich
+
pierwszym to po prostu zbyt wiele bajtów!źródło
+
?filetype plugin on
:r [url]?client=opera&q=^R"
zamiastq:ir [url]?client=opera&q=<esc>p
.^R
to rzeczywisty bajt wysłany po naciśnięciu klawisza <Cr>, a nie klawisze^
iR
razem, więc liczy się tylko jako jeden bajt.http://google.com/complete/search?client=hp&q=your_query
(client=gma
=> Zwykły JSON i krótszy tekst.).Python + żąda
121117103 bajtówźródło
JavaScript, 109 bajtów
Promise
, musisz to pokochać, ale człowieku, to jest pełne! Ta odpowiedź wykorzystujefetch()
oparty na obietnicach interfejs API pobierania obecny w nowoczesnych przeglądarkach. Obiecuje pracę, ustanawiając procedury obsługi asynchronicznych działań na początku, takich jak wywołania zwrotne, ale lepiej..then()
Wykonuje funkcję, która będzie wywoływana w wyniku działania asynchronicznego..then(r=>r.json())
używa.json()
metody odpowiedzi do przekonwertowania tablicy tekstowej na zmienną, którą można manipulować, druga.then()
pobiera pierwszą odpowiedź.Stosowanie:
źródło
.then(r=>r.json()).then(r=>r[1][0])
->.then(r=>r.json()[1][0])
Ciesz się 11 znakami mniej ;-).json()
zwraca obietnicę, z jakiegoś powodu jest asynchronicznaC #,
192112111 bajtówZapisano 80 bajtów dzięki @TheLethalCoder. Dzięki za ponowne sformatowanie mojego kodu, nie wiedziałem, że wolno było po prostu opuścić otaczającą klasę i metodę Method :)
Zapisano kolejny bajt, zastępując
gma
gohp
, ponieważ nie ma to znaczenia dla analizowania, a przed ciałem odpowiedzi jest tylko bełkot.Dosłownie brutalnie zmusiłem API do znalezienia
gma
ihp
.źródło
Groovy, 122 bajty
Gruntownie:
Pobierz tekst z punktu końcowego.
Usuń część ze nawiasami na końcu, to nie jest poprawna składnia.
Przetwarzaj pozostały bit jako świetną tablicę.
Chwyć drugi element tablicy wyników.
źródło
PowerShell,
133115 bajtówPrzykładowy przebieg
Wiersz poleceń Windows CMD:
Konsola PowerShell:
źródło
R, 111 bajtów
Dawno nie przyjechałem tutaj, ale spróbowałem:
Użycie pakietu
jsonlite
do konwersji łańcucha pobranego zreadLines()
obiektu listy.Następnie wyodrębnij drugi element, np. (Daje ostrzeżenie, że nie musimy się tym przejmować):
źródło
C #, 127 bajtów
Pełna i sformatowana wersja:
źródło