Questo sito è inattivo o sono solo io?


13

Sfida

La sfida è semplice, utilizzando http://isup.me , determinare se un sito Web inserito è attivo o inattivo.

Se il sito è attivo, è necessario restituire un valore di verità e se il sito è inattivo, è necessario restituire un valore di falsità.

Regole

L'input sarà un indirizzo web come stackexchange.como google.co.uk. L'input non avrà mai http://, https://ecc. All'inizio della stringa, ma potrebbe avere www.o codegolf.all'inizio ecc.

È necessario utilizzare il sito in isup.me/URLcui l'URL è l'input.

Quando un sito è attivo, apparirà come:

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

Se un sito non funziona, sarà simile a:

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

Gli accorciatori di URL non sono consentiti a parte isup.me.

Input di esempio

Probabilmente su (a seconda delle circostanze attuali):

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

Sarà giù:

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

vincente

Vince il codice più breve in byte.


21
A proposito: "made.up.co.uk" è in realtà attivo.
GiantTree

8
Mi sono appena registrato fake.com.usper fare casino con i tuoi casi di test!
YSC,

14
Ma cosa succede se isup.meè in calo?
Okx,

2
@Oks Sei sicuro che non sei solo tu?
Pierre Arlaud,

3
Banco di prova consigliato: isup.me. Restituisce un risultato diverso da quello che, ad esempio, google.compuò restituire.
Okx,

Risposte:


16

sh (+ curl + grep), 28 26 byte

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

Uscite tramite lo stato di uscita (0 per su, 1 per giù). Cerca un Iall'inizio di una riga, che corrisponde quando il dominio è attivo (anche per il caso speciale di isup.me/isup.me ).


1
curl -L isup.me/$1|grep u!salva 1 byte. Questo presuppone che! non è un carattere valido nel nome del dominio.

La 0verità è in sh?
Shaggy,

1
0è davvero vero in sh, con tutti i valori diversi da zero sono falsi. Inoltre, IMO è davvero bello che la versione sh sia così corta, dal momento che è assolutamente la lingua giusta per questo compito anche senza considerare il golf.
Score_Under

Detto questo fallirà su qualcosa come spthissitedoesntexist.invalid
Score_Under

1
Si abbina sulla mia macchina. Corrisponde a questo bit: <a href="http://spthissitedoesntexist.invalid" class="domain">spthissitedoesntexist.invalid</a>nello specifico corrisponde all'interno di href.
Score_Under

5

Stacked , 44 byte

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

Funzione asincrona che genera 0se il sito non è attivo e qualsiasi altro numero maggiore di 0se è attivo.

Esempio a:

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

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

Uscita (probabilmente): Is google up? 1


Puoi aggiungere un link alla pagina Stacked GH?
Downgoat,

@Downgoat Fatto.
Conor O'Brien,

Se questo sta verificando la presenza di s u, si noti che ciò si verifica su qualsiasi input che inizia con u(su o giù).
Anders Kaseorg,

@AndersKaseorg Risolto, grazie.
Conor O'Brien,

Esempio migliore: 'Is example.com up?' put 'example.com' isupoutput (non solo probabilmente ma sicuramente):Is example.com up? 1
Erik the Outgolfer

4

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

Prima prova al golf di Kotlin.
Si aspetta il sito Web in una variabile o valore denominato a.

Ora con spazi bianchi ridotti.
Chi ha detto che "gabinetto" non è abbastanza?
Risolto e più breve, non si basa più su http://isup.me .
Non c'è bisogno di aprire la connessione da soli, basta ottenere il flusso di dati (o no)
Il compito era quello di utilizzare http://isup.me , giusto? Inoltre: <non è un carattere valido in un URL.
Ora funziona con isup.meil sito Web

Ora legge il sito Web come una riga, poiché non è possibile assumere una variabile per contenere il sito Web.

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

Legge una riga contenente solo il sito Web.
Controlla la m hparte from hereche viene inviata quando un sito non è attivo.

Restituisce rispettivamente "vero" o "falso".


Come una Lambda - 172 120 118 99 85 67 66 byte

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

Può essere invocato direttamente:

{ ... }("google.com")

perdonami se sbaglio, ma non potrebbe essere convertito in lambda abbastanza facilmente?
Nick Clifford,

@NickClifford certo, ma in realtà sarebbe più lungo a causa dell'argomento e della definizione del tipo (15 caratteri perché l'inferenza del tipo non funziona qui)
GiantTree

3
Non conosco la lingua, ma sembra che tu stia controllando se "loo" è nel testo restituito. Non è vero che questo testo restituisce anche il nome del sito (variabile)? E se lo è, significa che ottieni falsi negativi per siti come loo.com?
Cole

@Cole hai sicuramente ragione, me ne sono completamente dimenticato (stavo solo testando Google e il sito Web falso). Aggiornerò il codice la mattina successiva (sono le 2 del mattino dove sono attualmente)
GiantTree

Questo fallirà sui siti con looil nome. electric.boogaloonon esiste ma la stringa loosarà nell'output lì.
Score_Under

2

Python 2 o 3 con richieste ( 70 69 68 byte)

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

1 byte rasato: "u. "" u" No, non un'ottimizzazione valida.
1 byte rasato:__import__('requests').from requests import*;

Questo è davvero un pezzo di codice solo REPL, e dopo aver eseguito questa riga verrà denominata la funzione _.


1
Errore di sintassi alla fine (probabilmente un randagio )).
Erik the Outgolfer,

1
Non riesce per gli ingressi che iniziano con u.
Erik the Outgolfer,

1
Utilizzando from requests import*e getè più corto di 1 byte.
mbomb007,

1
non è solo REPL, è consentito rispondere con funzioni senza nome (lambdas in python)
Felipe Nardi Batista

È una funzione senza nome, ma lo script nel suo insieme non può essere usato come espressione (poiché lo utilizza import), quindi penso che sia più sicuro chiamarlo semplicemente una riga REPL.
Score_Under

2

Python3 141 133 113 192 141 byte

Richiede Selenium (incluso webdriver) per Python.

Grazie a @cairdcoinheringaahing per la riduzione di 42 byte!
Grazie a @ V.Courtois per aver segnalato una semplice soluzione!

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

Stampa 1se il sito è attivo e funzionante, altrimenti stampa 0.

Versione non golfata:

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)

Hanno detto che isup.me va bene nei commenti; puoi vincere dei byte :)
V. Courtois,

1
-1 Questo è un frammento. Sono richiesti programmi o funzioni completi e l'input non può essere assunto in una variabile (come t). Inoltre, puoi giocare a golf con la dichiarazione stampata suprint("up"in r.text)
caird coinheringaahing il

@cairdcoinheringaahing Va bene, apporterò questi cambiamenti, grazie! Questa è la mia seconda risposta, quindi non sapevo se pubblicare uno snippet o un programma completo. Quindi ho pubblicato entrambi.
Rahul Bharadwaj il


2

Javascript (ES6), 74 66 byte

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

Grazie a @Shaggy, che ha portato alla mia attenzione che una promessa risolta conta come output.

Problema con questa soluzione che genererà un errore CORS a meno che non lo provi su una pagina che è già in isup.me. Ma attualmente, viene reindirizzato adownforeveryoneorjustme.com

Versione precedente:

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


1
Puoi sbarazzarti di alerte semplicemente restituire la Promessa. Vedi qui . Penso che potresti anche essere in grado di risparmiare con /u!/.test(t).
Shaggy,

1

Pyth , 24 byte

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

Ritorna Truese il sito è attivo, Falsealtrimenti. L'URL di input deve essere citato. Questo non può essere testato sull'interprete online perché 'è disabilitato su di esso per motivi di sicurezza; invece avrai bisogno di una copia locale di Pyth .

Spiegazione

                        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

1
Non riesce per gli ingressi che iniziano con u.
Erik the Outgolfer,


1

PowerShell, 32 byte

(iwr isup.me/$args)-notmatch'u!'

Ho perso la tua risposta prima di pubblicare la mia scusa! qualche strano irmcomportamento mi ha salvato un sacco su questo. il mio qui
domenica

1

PowerShell, 25 byte

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

Utilizza il fatto che Invoke-RestMethodrestituisce la pagina con a.html proprietà solo in caso di errore. (non ho idea del perché esattamente questo accada ...)

inverte la linea da convertire in bool, output Trueper un sito live o Falseper un sito down.

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

@TessellatingHeckler irmrestituisce il testo in chiaro per le pagine non analizzabili, stavo per fare una corrispondenza in chiaro quindi si sarebbe comportato come iwr, indipendentemente dal fatto che se funzionasse.
Col

1

Halovi , 20 byte

oisup.me/⁰
\p
ye$hd0

Emette p.se il sito non è attivo e e.se è attivo.

Spiegazione:

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

1

Haskell (Lambdabot), 157 byte

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

Purtroppo non è possibile importare Network.HTTP.Simplesu tio.run, il modo più semplice per test sarebbe per eseguire questo script (è necessario 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


0

Clojure, 63 byte

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

Verifica se l'HTML restituito slurpcontiene la stringa "'s j"(come in "E 'usato "). Potrei essere in grado di trovare una stringa più piccola che è unica per la pagina, ma al massimo mi risparmierebbe 2 byte. Potrebbe anche renderlo meno accurato. "'s" non verrà visualizzato nel markup da nessuna parte tranne in quello scenario. Una stringa come "u". tuttavia potrebbe potenzialmente apparire nell'URL, il che lo spezzerebbe.

(defn is-up? [site]
  (clojure.string/includes?
    (slurp (str "http://isup.me/" site))
    "'s j"))

0

Nim, 108 byte

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

Purtroppo strutilsè necessario contains.

Imparando Nim, suggerimenti apprezzati!


0

PHP, 82 78 byte

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

Esecuzioni di I / O di esempio:

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

Esempio 2

$ php script.php does.not.exist
> does.not.exist0

Quasi la soluzione più breve possibile. Anche l'output vuoto è "un valore errato", quindi è possibile rimuovere il +. E con $argninvece di $argv[1]te potresti usare altri 6 (meno 1) byte.
Tito
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.