Czy ta strona nie działa, czy to tylko ja?

13

Wyzwanie

Wyzwanie jest proste, używając http://isup.me , ustalić, czy wprowadzona strona internetowa jest w górę, czy w dół.

Jeśli strona jest uruchomiona, powinieneś zwrócić prawdziwą wartość, a jeśli strona nie działa, powinieneś zwrócić wartość falsey.

Zasady

Wprowadzony zostanie adres internetowy, taki jak stackexchange.comlub google.co.uk. Wejście nigdy nie będzie miał http://, https://itd. Na początku łańcucha, ale może mieć www.lub codegolf.przy starcie itd.

Powinieneś skorzystać ze strony, na isup.me/URLktórej podany jest URL.

Gdy witryna jest uruchomiona, będzie wyglądać następująco:

http://isup.me/codegolf.stackexchange.com

Jeśli witryna nie działa, będzie wyglądać następująco:

http://isup.me/does.not.exist

Skracacze URL są niedozwolone oprócz isup.me.

Przykładowe dane wejściowe

Prawdopodobnie w górę (w zależności od bieżących okoliczności):

google.de
codegolf.stackexchange.com
worldbuilding.meta.stackexchange.com
tio.run
store.nascar.com
isup.me

Będzie w dół:

made.up.com
fake.com.us
why.why.why.delilah
store.antarcticrhubarbassociation.an

Zwycięski

Najkrótszy kod w bajtach wygrywa.

Rozpad beta
źródło
21
Nawiasem mówiąc: „made.up.co.uk” faktycznie działa.
GiantTree,
8
Właśnie zarejestrowałem się, fake.com.usaby zadzierać z twoimi testami!
YSC
14
Ale co jeśli nie isup.medziała?
Okx,
2
@Oks Jesteś pewien, że to nie tylko ty?
Pierre Arlaud,
3
Zalecana przypadek testowy: isup.me. Zwraca wynik inny niż, powiedzmy, google.commoże zwrócić.
Okx,

Odpowiedzi:

16

sh (+ curl + grep), 28 26 bajtów

curl -L isup.me/$1|grep ^I

Wyjścia przez status wyjścia (0 w górę, 1 w dół). Szuka znaku Ina początku linii, który pasuje, gdy domena jest uruchomiona (nawet w specjalnym przypadku isup.me/isup.me ).

Anders Kaseorg
źródło
1
curl -L isup.me/$1|grep u!oszczędza 1 bajt. Zakłada się to! nie jest prawidłowym znakiem w nazwie domeny.
Czy 0prawda jest w porządku?
Kudłaty
1
0jest rzeczywiście prawdziwe w sh, przy czym wszystkie niezerowe wartości są fałszem. Ponadto IMO jest naprawdę miłe, że wersja sh jest tak krótka, ponieważ jest to absolutnie odpowiedni język do tego zadania, nawet bez rozważania gry w golfa.
Score_Under
To powiedziawszy, że to zawiedzie w przypadku czegoś takiego jak spthissitedoesntexist.invalid
Score_Under
1
Pasuje do mojej maszyny. Pasuje do tego bitu: W <a href="http://spthissitedoesntexist.invalid" class="domain">spthissitedoesntexist.invalid</a>szczególności pasuje do wewnątrz href.
Score_Under
5

Skumulowane , 44 bajty

['http://isup.me/'\+[CS'!'eq sum 2=out]curl]

Funkcja asynchroniczna, która wyświetla dane wyjściowe, 0jeśli witryna nie działa, i dowolna inna liczba większa niż 0jeśli strona działa.

Przykład a:

['http://isup.me/'\+['s u'split#'1-put]curl] @:isup

'Is google up?' put 'google.com' isup

Dane wyjściowe (prawdopodobnie): Is google up? 1

Conor O'Brien
źródło
Czy możesz dodać link do strony Stacked GH?
Downgoat,
@Downgoat Gotowe.
Conor O'Brien
Jeśli to sprawdza występowanie s u, należy pamiętać, że dzieje się tak na każdym wejściu rozpoczynającym się od u(w górę lub w dół).
Anders Kaseorg
@AndersKaseorg Naprawiono, dziękuję.
Conor O'Brien
Lepszy przykład: 'Is example.com up?' put 'example.com' isupwynik (nie tylko prawdopodobnie, ale na pewno):Is example.com up? 1
Erik the Outgolfer
4

Kotlin REPL - 131 108 106 93 79 55 53 64 63 bajty

Pierwsza próba gry w golfa Kotlin.
Oczekuje, że witryna będzie zawierała zmienną lub wartość a.

Teraz ze zmniejszonym odstępem.
Kto powiedział, że „loo” to za mało?
Naprawiony i krótszy, nie opiera się już na http://isup.me .
Nie trzeba samodzielnie otwierać połączenia, wystarczy pobrać strumień danych (lub nie)
. Zadanie polegało na użyciu http://isup.me , prawda? Ponadto: <nie jest prawidłowym znakiem w adresie URL.
Teraz działa isup.mejako strona internetowa

Teraz czyta stronę internetową jako linię, ponieważ nie można założyć zmiennej zawierającej stronę internetową.

"m h" !in java.net.URL("http://isup.me/"+readLine()).readText()

Czyta jeden wiersz zawierający tylko stronę internetową.
Sprawdza, czy ta m hczęść from herejest wysyłana, gdy witryna nie działa.

Zwraca odpowiednio „prawda” lub „fałsz”.


Jako Lambda - 172 120 118 99 85 67 66 bajtów

{a:String->"m h" !in java.net.URL("http://isup.me/$a").readText()}

Można wywoływać bezpośrednio:

{ ... }("google.com")
GiantTree
źródło
wybacz mi, jeśli się mylę, ale czy nie można tego dość łatwo przekonwertować na lambda?
Nick Clifford,
@NickClifford na pewno, ale tak naprawdę byłby dłuższy ze względu na argument i definicję typu (15 znaków, ponieważ wnioskowanie typu nie działa tutaj)
GiantTree
3
Nie znam języka, ale wygląda na to, że sprawdzasz, czy w zwracanym tekście jest „loo”. Czy nie jest tak, że ten tekst zwraca także nazwę (zmiennej) witryny? A jeśli tak, to czy oznacza to, że otrzymujesz fałszywe negatywy dla witryn takich jak loo.com?
cole
@Cole, masz zdecydowanie rację, zupełnie o tym zapomniałem (testowałem tylko Google i fałszywą stronę). Zaktualizuję kod następnego ranka (jest 2 nad ranem, gdzie aktualnie jestem)
GiantTree
Ten zawiedzie na stronach z loonazwą. electric.boogaloonie istnieje, ale łańcuch loobędzie tam na wyjściu.
Score_Under
2

Python 2 lub 3 z żądaniami ( 70 69 68 bajtów)

from requests import*;lambda u:"u. "in get("http://isup.me/"+u).text

Ogolono 1 bajt: "u. "" u" Nie, niepoprawna optymalizacja.
Ogolono 1 bajt: __import__('requests').from requests import*;

Jest to teraz fragment kodu tylko do REPL, a po uruchomieniu tego wiersza funkcja zostanie nazwana _.

Score_Under
źródło
1
Błąd składniowy na końcu (prawdopodobnie zbłąkany )).
Erik the Outgolfer
1
Błąd dla danych wejściowych zaczynających się od u.
Erik the Outgolfer
1
Używanie from requests import*i getjest 1 bajt krótszy.
mbomb007
1
nie jest to tylko REPL, może odpowiadać za pomocą nienazwanych funkcji (lambdas w python)
Felipe Nardi Batista
Jest to funkcja bez nazwy, ale skryptu jako całości nie można użyć jako wyrażenia (ponieważ używa import), więc myślę, że bezpieczniej jest po prostu nazwać go wierszem REPL.
Score_Under
2

Python3 141 133 113 192 141 bajtów

Wymaga Selenium (w tym webdriver) dla Pythona.

Dzięki @cairdcoinheringaahing za zmniejszenie 42 bajtów!
Dzięki @ V.Courtois za wskazanie prostej poprawki!

from selenium import*
d=webdriver.Firefox();d.get("http://isup.me/"+input());print("up"in d.find_element_by_xpath("//*[@id='content']/p[1]"))

Drukuje, 1jeśli witryna jest uruchomiona, w przeciwnym razie drukuje 0.

Wersja bez golfa:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
urlToTest = "www.f.com"
driver = webdriver.Firefox()
driver.get("http://downforeveryoneorjustme.com/"+urlToTest)
res = driver.find_element_by_xpath("//*[@id='content']/p[1]")
print(1 if "up" in res.text else 0)
Rahul Bharadwaj
źródło
Powiedzieli, że isup.me jest w porządku w komentarzach; możesz wygrać bajty :)
V. Courtois
1
-1 To jest fragment kodu. Wymagane są pełne programy lub funkcje i nie można przyjmować danych wejściowych w zmiennej (takiej jak t). Możesz także print("up"in r.text)
zagrać w
@cairdcoinheringaahing Dobra, wprowadzę te zmiany, dziękuję! To jest moja druga odpowiedź, więc nie wiedziałem, czy opublikować fragment kodu czy pełny program. Więc zamieściłem oba.
Rahul Bharadwaj
141 bajtów
caird coinheringaahing
2

JavaScript (ES6), 74 66 bajtów

f=s=>fetch('//isup.me/'+s).then(r=>r.text()).then(t=>/u!/.test(t))

Dzięki @Shaggy, który zwrócił moją uwagę, że spełniona obietnica liczy się jako wynik.

Problem z tym rozwiązaniem, że spowoduje zgłoszenie błędu CORS, chyba że przetestuję go na stronie, która już jest na isup.me. Ale obecnie zostaje to przekierowane nadownforeveryoneorjustme.com

Starsza wersja:

f = s => fetch ('// isup.me/'+s).then(r=>r.text()).then(t=>alert(t.match(/u!/)))

Christiaan Westerbeek
źródło
1
Możesz się go pozbyć alerti po prostu zwrócić Obietnicę. Zobacz tutaj . Myślę, że możesz również zaoszczędzić /u!/.test(t).
Kudłaty
1

Pyth , 24 bajty

}" u"s'+"http://isup.me/

Powrót True jeśli witryna jest uruchomiona, w Falseprzeciwnym razie. Wejściowy adres URL musi być cytowany. Tego nie można przetestować na tłumaczu online, ponieważ 'jest on wyłączony ze względów bezpieczeństwa; zamiast tego będziesz potrzebować lokalnej kopii Pytha .

Wyjaśnienie

                        Q    # Implicit input
       +"http://isup.me/     # Concatenate "http://isup.me/" with the input
      '                      # Open the URL
     s                       # Concatenate all the lines of the returned HTML page
}" u"                        # Test whether " u" is in the page or not
Jim
źródło
1
Błąd dla danych wejściowych zaczynających się od u.
Erik the Outgolfer
1

05AB1E , 22 bajty

"isup.me/ÿ".w#214è'‚‰Q

Wypróbuj online!

Niestety "isup.me/ÿ".w§„ uånie działa.

Erik the Outgolfer
źródło
1

PowerShell, 32 bajty

(iwr isup.me/$args)-notmatch'u!'
TessellatingHeckler
źródło
Przepraszam za odpowiedź, zanim opublikowałem moje! jakieś dziwne irmzachowanie uratowało mnie przed tym. moje tutaj
colsw
1

PowerShell, 25 bajtów

!(irm isup.me/$args).html

Wykorzystuje fakt, że Invoke-RestMethodzwraca stronę z .htmlwłaściwością tylko w przypadku niepowodzenia. (nie mam pojęcia, dlaczego dokładnie tak się dzieje ...)

odwraca wiersz do konwersji na bool, wyświetla dane wyjściowe Truedla strony działającej lub Falsedla strony wyłączonej.

PS C:\Users\sweeneyc\Desktop> .\Test-SiteUp.ps1 "connorlsw.com"
True
PS C:\Users\sweeneyc\Desktop> .\Test-SiteUp.ps1 "connorlsw.notawebsite"
False
PS C:\Users\sweeneyc\Desktop> .\Test-SiteUp.ps1 "google.com"
True
PS C:\Users\sweeneyc\Desktop> .\Test-SiteUp.ps1 "isthisreallyasite.com"
False
colsw
źródło
@TessellatingHeckler irmzwraca zwykły tekst dla stron, których nie można parsować, miałem zamiar dopasować zwykły tekst, aby zachował się tak samo jak iwr, niezależnie od tego, czy to działa, działa.
colsw
1

Halovi , 20 bajtów

oisup.me/⁰
\p
ye$hd0

Wyprowadzane, p.jeśli witryna jest wyłączona i e.jeśli jest uruchomiona.

Wyjaśnienie:

oisup.me/⁰  ~# Open the concatination of "isup.me/" and arg0
\p          ~# Select first p element
ye$hd0      ~# Edit text with neovim and output result:
            ~#   Go one character before the end of the line and ..
            ~#   delete until beginning
Gajówka
źródło
1

Haskell (Lambdabot), 157 bajtów

import Data.ByteString.Lazy.Char8
import Network.HTTP.Simple
f s=httpLBS(parseRequest_$"http://isup.me/"++s)>>=print.not.isInfixOf"u!".unpack.getResponseBody

Niestety nie można importować Network.HTTP.Simplena tio.runnajprostszym sposobem sprawdzenia byłoby uruchomić ten skrypt (musisz stack):

#!/usr/bin/env stack
-- stack --install-ghc --resolver lts-8.19 runghc --package http-conduit

import Data.ByteString.Lazy.Char8
import Network.HTTP.Simple
import Data.List

main :: IO ()
main = mapM_ test [ "google.de", "made.up.com"]
  where test url = print ("testing "++url) >> f url

f :: String -> IO ()
f s=httpLBS(parseRequest_$"http://isup.me/"++s)
 >>=print.not.isInfixOf"u!".unpack.getResponseBody
ბიმო
źródło
0

Idź, 111 bajtów

W typowej modzie Go najkrótszą metodą jest jej wyłuskanie.

import"os/exec"
func h(a string)bool{return exec.Command("sh","-c","curl -L isup.me/"+a+"|grep ^I").Run()!=nil}

Inne implementacje tutaj: https://play.golang.org/p/8T5HSDQFmC

Eric Lagergren
źródło
0

Clojure, 63 bajty

#(clojure.string/includes?(slurp(str"http://isup.me/"%))"'s j")

Sprawdza, czy HTML zwracany przez slurpzawiera ciąg znaków "'s j"(jak w „It sj ust you”). Być może uda mi się znaleźć mniejszy ciąg znaków, który jest unikalny dla strony, ale zaoszczędziłbym co najwyżej 2 bajty. Mogłoby to również potencjalnie zmniejszyć dokładność. „j” nie pojawi się nigdzie w znacznikach, z wyjątkiem tego jednego scenariusza. Ciąg taki jak „u.” jednak może potencjalnie pojawić się w adresie URL, co mogłoby go zepsuć.

(defn is-up? [site]
  (clojure.string/includes?
    (slurp (str "http://isup.me/" site))
    "'s j"))
Carcigenicate
źródło
0

Nim, 108 bajtów

import httpclient,strutils
echo newhttpclient().getcontent("//isup.me/"&stdin.readline.string).find("ks ")<0

Niefortunne, że strutilsjest to potrzebne contains.

Nauka Nim, wskazówki mile widziane!

Quelklef
źródło
0

PHP, 82 78 bajtów

<?=$i=$argv[1],+!preg_match("/!.*$i/",file_get_contents("http://isup.me/$i"));

Przykładowe przebiegi we / wy:

$ php script.php google.com
> google.com1

Przykład 2

$ php script.php does.not.exist
> does.not.exist0
wyrko
źródło
Prawie najkrótsze możliwe rozwiązanie. Puste wyjście jest również „wartością falsy”, więc możesz usunąć +. I $argnzamiast tego $argv[1]możesz użyć kolejnych 6 (minus 1) bajtów.
Tytus