Znalazłem dziś to zdjęcie w Internecie. Będąc leniwym programistą, nie chcę właściwie otwierać google i wpisywać kilku znaków. O wiele za dużo pracy! Jest to tak ważne zadanie, że powinno zostać zautomatyzowane.
Wyzwanie
Wszyscy wiedzą, że pierwszy obraz w wynikach wyszukiwania Google jest zawsze najlepszy. Dlatego powinien zostać przedstawiony użytkownikowi.
Masz napisać program lub funkcję, która przyjmuje ciąg znaków jako parametr i wyświetla pierwszy obraz znaleziony w google podczas wyszukiwania tej nazwy + słowa glamour shot
za nią.
Wyszukiwane hasła Google
Aby wyszukać zdjęcia w Google, adres URL powinien zawierać parametr zapytania tbm=isch
i q=query
, z query
czym nazwa chcesz wyszukać.
Prawidłowy ciąg zapytania dla mojego imienia Bas
towww.google.com/search?tbm=isch&q=Bas
Wejście
Twój program lub funkcja pobiera pojedynczy parametr wejściowy, którym jest nazwa, którą chcesz wyszukać w Google. Łańcuch ten składa się ze znaków [a-z]
, [A-Z]
, [0-9]
oraz (spacja). Ten ciąg może być rozdzielony spacjami, aby wyszukać ciąg google w Google, należy zastąpić spacje
+
. Na przykład jest to prawidłowe zapytanie:
www.google.com/search?tbm=isch&q=Bassdrop+Cumberwubwubwub+glamour+shot
Wynik
Obraz można narysować na ekranie lub zapisać w pliku (w dowolnym formacie).
Jeśli pierwszym wynikiem wyszukiwania w Google jest plik gif, możesz pokazać gif lub dowolną ramkę tego gif.
Przypadki testowe
Uruchom ten fragment kodu, aby zobaczyć oczekiwane wyniki
To jest code-golf , wygrywa najkrótszy kod w bajtach!
źródło
[a-z0-9]
, edytował mój post. Adresy URL będą wyglądały jak+
A-Z
może się również pojawić, sądząc po twoim przykładzie?Odpowiedzi:
PowerShell v4 +, 160 bajtów
Pobiera dane wejściowe
$a
jako ciąg. WykonujeInvoke-WebRequest
(iwr
) do odpowiedniej lokalizacji Google, używając bloku skryptu wewnętrznego ciągu do-replace
spacji+
w ciągu wejściowym. Bierzemy.links
to, gdzie.innerhtml
jest-like
naszym ciągiem wejściowym. Daje to linki z odpowiednim opisem miniatury. Zrób pierwszy[0]
jeden z tych, wziąć jej.innerhtml
i-split
to na notowaniach. Czwarty[3]
element to tekst wewnątrzimg src="
porcji, więc robimy na nim kolejnyiwr
, określając-outf
ile ma być$a.jpg
w folderze lokalnym. Ponieważ są to tylko miniatury generowane przez Google, na pewno są to jpg.źródło
google.com
zgoogle.nl
na -1 bajtExcel VBA + ,
465332 bajtówGra w golfa:
Pełna
Sub
procedura, która pobieran
(skrót od nazwy) oczekiwanego typuVariant/String
i wysyła pierwszy wynik wyszukiwania grafiki google dla zapytania o tę nazwę iglamour shot
do okna przeglądarki internetowej.-2 bajty do usuwania białych znaków w
If InStr(1, a.href, "imgres") Then
-2 bajty na zmianę
.navigate (a.href)
na.navigate a.href
-27 bajtów na zmniejszenie
for each a in ... if (...) then ... end if .. next
pętli dodo until ... loop
-10 bajtów na kondensację
imgres
dores
iencrypted
doyp
-8 bajtów do usuwania initalizers do
j
,k
i przy założeniu, że moduł czystej-1 bajt do zmiany
google.com
nagoogle.nl
-3 bajtów do wymiany
Dim i as New ...
zSet i=New ...
-8 bajtów do usunięcia
SHDocVw.
odwołania do klasy-12 bajtów do usunięcia
with i
bloku-7 bajtów do usunięcia
i.quit
- powoduje to wyciek pamięci, pozostawiając Internet Explorera otwartym w tle, dlatego zaleca się, aby zamiast niego użyć pełnej wersji bez golfisty lub aby zadanie Internet Explorera zostało zakończone po użyciu przez menedżera zadań-6 bajtów do przejścia
i.navigate
do podprogramu pomocniczegoh
-13 bajtów do przejścia
Do Until ... Loop
do podprogramu pomocniczego-2 bajty poprzez przejście
j=0
do pomocnika i usunięcie,j
,,0
(x2)-11 bajtów na konwersję do anonimowej funkcji bezpośredniego okna
-8 bajtów do zmniejszenia wywołań funkcji pomocniczych do
for .. next
pętli-16 bajtów do zmiany wyjścia z
Sheets(1)
obiektu obrazu na wyświetlanie za pośrednictwemInternetExplorer
obiektuNiegolfowany, 1304 bajtów
Sposób użycia gif
źródło
Vimperator , 30 naciśnięć klawiszy
Alternatywnie 27 naciśnięć klawiszy, jeśli nie potrzebujesz obrazu o najwyższej rozdzielczości:
Wideo: https://youtu.be/t8824UjlYt8
Na szczęście standardową wyszukiwarką w przeglądarce Firefox jest Google, a Vimperator pozwala domyślnie wpisywać wskazówki. Jest to dłuższe niż trzeba, aby mieć pewność, że zawsze działa niezależnie od tego, czego szukasz.
Pobiera dane ze schowka.
Wyjaśnienie:
Dzięki @TaylorScott za znalezienie skrzynki krawędzi.
źródło
Python 3.6,
247242232 może 224 bajtyTo urocza próba rozwiązania tego. Zapisze plik jak
p.png
w bieżącym katalogu.Aby z łatwością uruchomić go z wiersza poleceń, po prostu umieść powyższą zawartość w pliku, takim jak
glamour.py
i uruchom:Aktualizacja 1: lepsza wersja z nowym adresem URL Google
Aktualizacja 2:
Zapisałem kilka bajtów:
f
flagę interpolacji ciągów python 3.6 bez przypisywaniasys.argv
zmiennejBeautifulSoup
wywołaniaOstatni jest kontrowersyjny, ponieważ powoduje wyświetlenie komunikatu std.output informującego programistę, aby określił analizator składni w celu zapewnienia zgodności między platformami, dlatego można go uznać za niepożądane wyjście.
Oto wersja 224 bajtów:
Oto wersja 232 bajtów:
Można jednak użyć krótszej wersji, jeśli przekierowane jest std.out
/dev/null
lub coś: Dźródło
www.google.nl/
a może nawetgoogle.nl
zamiasthttps://www.google.com.br/
zaoszczędzić trochę bajtówhttp://
, aby działał z żądaniami. Ale brazylijskie google dało mi zabawniejsze wyniki, więcn = 'something'; f'{n}_here'
n = 'something'; '{n}_here'.format(n = n)
n = 'something'; '{}_here'.format(n)
Rakieta, 284 bajtów
Zrzut ekranu:
źródło