Ce site est-il en panne ou est-ce juste moi?


13

Défi

Le défi est simple, en utilisant http://isup.me , déterminez si un site Web saisi est en hausse ou en baisse.

Si le site est en hausse, vous devez renvoyer une valeur véridique et si le site est en panne, vous devez renvoyer une valeur Falsey.

Règles

L'entrée sera une adresse Web telle que stackexchange.comou google.co.uk. L'entrée n'aura jamais http://, https://etc. au début de la chaîne, mais peut avoir www.ou codegolf.au début etc.

Vous devez utiliser le site isup.me/URLoù l'URL est l'entrée.

Quand un site est en place, il ressemblera à:

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

Si un site est en panne, il ressemblera à:

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

Les raccourcisseurs d'URL sont interdits en dehors de isup.me.

Exemples d'entrées

Probablement en hausse (selon les circonstances actuelles):

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

Sera en baisse:

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

Gagnant

Le code le plus court en octets gagne.


21
Par ailleurs: "made.up.co.uk" est en fait en hausse.
GiantTree le

8
Je viens de m'inscrire fake.com.uspour jouer avec vos cas de test!
YSC

14
Mais que se passe-t-il si isup.meest en panne?
Okx

2
@Oks Êtes-vous sûr que ce n'est pas seulement vous?
Pierre Arlaud

3
Cas de test recommandée: isup.me. Il renvoie un résultat autre que ce qui, par exemple, google.compeut renvoyer.
Okx

Réponses:


16

sh (+ curl + grep), 28 26 octets

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

Sorties via l'état de sortie (0 pour le haut, 1 pour le bas). Recherche un Iau début d'une ligne, qui correspond lorsque le domaine est en place (même pour le cas spécial isup.me/isup.me ).


1
curl -L isup.me/$1|grep u!enregistre 1 octet. Cela suppose cela! n'est pas un caractère valide dans le nom de domaine.

La 0vérité est- elle en sh?
Shaggy

1
0est en effet véridique en sh, toutes les valeurs non nulles étant fausses. De plus, l'OMI est vraiment sympa que la version sh soit si courte, car c'est absolument le bon langage pour cette tâche même sans considérer le golf.
Score_Under

Cela dit, cela échouera sur quelque chose comme spthissitedoesntexist.invalid
Score_Under

1
Cela correspond sur ma machine. Il correspond à ce bit: <a href="http://spthissitedoesntexist.invalid" class="domain">spthissitedoesntexist.invalid</a>spécifiquement, il correspond à l'intérieur du href.
Score_Under

5

Empilé , 44 octets

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

Fonction asynchrone qui sort 0si le site n'est pas en place, et tout autre nombre supérieur à 0s'il est en place.

Exemple a:

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

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

Sortie (probablement): Is google up? 1


Pouvez-vous ajouter un lien vers la page Stacked GH?
Downgoat

@Downgoat Done.
Conor O'Brien

Si cela recherche une occurrence de s u, notez que cela se produit sur n'importe quelle entrée commençant par u(que ce soit vers le haut ou vers le bas).
Anders Kaseorg

@AndersKaseorg Fixed, merci.
Conor O'Brien

Meilleur exemple: 'Is example.com up?' put 'example.com' isupsortie (pas seulement probablement mais sûrement):Is example.com up? 1
Erik the Outgolfer

4

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

Essayez d'abord au golf Kotlin.
Attend le site Web dans une variable ou une valeur nommée a.

Maintenant avec un espace réduit.
Qui a dit que "loo" ne suffisait pas?
Fixe et plus court, ne repose plus sur http://isup.me .
Pas besoin d'ouvrir la connexion nous-mêmes, il suffit d'obtenir le flux de données (ou pas)
La tâche consistait à utiliser http://isup.me , non? Aussi: <n'est pas un caractère valide dans une URL.
Fonctionne maintenant avec isup.mecomme site Web

Maintenant lit le site Web comme une ligne, car on ne peut pas supposer qu'une variable contienne le site Web.

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

Lit une ligne contenant uniquement le site Web.
Vérifie lam h partie from herequi est envoyée lorsqu'un site est en panne.

Renvoie respectivement "vrai" ou "faux".


En tant que Lambda - 172 120 118 99 85 67 66 octets

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

Peut être invoqué directement:

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

pardonnez-moi si je me trompe, mais cela ne pourrait-il pas être converti assez facilement en lambda?
Nick Clifford

@NickClifford bien sûr, mais cela serait en fait plus long en raison de la définition de l'argument et du type (15 caractères car l'inférence de type ne fonctionne pas ici)
GiantTree

3
Je ne connais pas la langue, mais il semble que vous vérifiez si "loo" est dans le texte renvoyé. N'est-il pas vrai que ce texte renvoie également le nom du site (variable)? Et si c'est le cas, cela signifie-t-il que vous obtenez de faux négatifs pour des sites comme loo.com?
cole

@Cole, vous avez certainement raison, j'ai complètement oublié cela (je ne testais que Google et le faux site Web). Je
mettrai à

Celui-ci échouera sur les sites avec loole nom. electric.boogaloon'existe pas mais la chaîne looy sera en sortie.
Score_Under

2

Python 2 ou 3 avec requêtes ( 70 69 68 octets)

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

1 octet rasé: "u. "" u" Non, pas une optimisation valide.
1 octet rasé: __import__('requests').from requests import*;

C'est maintenant vraiment un morceau de code REPL uniquement, et après avoir exécuté cette ligne, la fonction sera nommée _.


1
Erreur de syntaxe à la fin (probablement une erreur )).
Erik the Outgolfer

1
Échoue pour les entrées commençant par u.
Erik the Outgolfer le

1
En utilisant from requests import*et getest 1 octet plus court.
mbomb007

1
ce n'est pas seulement REPL, il est permis de répondre avec des fonctions sans nom (lambdas en python)
Felipe Nardi Batista

C'est une fonction sans nom, mais le script dans son ensemble ne peut pas être utilisé comme expression (car il utilise import), donc je pense qu'il est plus sûr de l'appeler simplement une ligne REPL.
Score_Under

2

Python3 141 133 113 113 192 141 octets

Nécessite Selenium (y compris le pilote Web) pour python.

Merci à @cairdcoinheringaahing d'avoir réduit 42 octets!
Merci à @ V.Courtois d'avoir signalé une solution simple!

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

Impressions 1 si le site est opérationnel, sinon imprime0 .

Version non golfée:

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)

Ils ont dit que isup.me allait bien dans les commentaires; vous pouvez gagner quelques octets :)
V. Courtois

1
-1 Ceci est un extrait. Des programmes ou des fonctions complets sont requis et l'entrée ne peut pas être supposée dans une variable (telle que t). En outre, vous pouvez print("up"in r.text)
jouer au

@cairdcoinheringaahing D'accord, apportera ces changements, merci! Ceci est ma deuxième réponse, donc je ne savais pas si je voulais publier un extrait de code ou un programme complet. J'ai donc posté les deux.
Rahul Bharadwaj


2

Javascript (ES6), 74 66 octets

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

Merci à @Shaggy, qui a attiré mon attention sur le fait qu'une promesse résolue compte comme une sortie.

Problème avec cette solution qui générera une erreur CORS à moins que je ne la teste sur une page qui est déjà sur isup.me. Mais actuellement, cela est redirigé versdownforeveryoneorjustme.com

Ancienne version:

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


1
Vous pouvez vous débarrasser de alertet simplement retourner la promesse. Voyez ici . Je pense que vous pourriez aussi faire des économies avec /u!/.test(t).
Shaggy

1

Pyth , 24 octets

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

Revenez Truesi le site est en place, Falsesinon. L'URL d'entrée doit être indiquée. Cela ne peut pas être testé sur l'interpréteur en ligne car il 'est désactivé pour des raisons de sécurité; à la place, vous aurez besoin d'une copie locale de Pyth .

Explication

                        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
Échoue pour les entrées commençant par u.
Erik the Outgolfer le


1

PowerShell, 32 octets

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

Vous avez manqué votre réponse avant de poster la mienne désolée! un irmcomportement étrange m'a sauvé un tas sur celui-ci. le mien ici
colsw

1

PowerShell, 25 octets

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

Utilise le fait que Invoke-RestMethodrenvoie la page avec une .htmlpropriété uniquement en cas d'échec. (aucune idée pourquoi exactement cela se produit ...)

inverse la ligne à convertir en bool, sorties Truepour un site en ligne ou Falsepour un site en panne.

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 irmrenvoie du texte en clair pour les pages non analysables, j'allais faire une correspondance en texte clair, donc il se serait comporté de la même manière que iwr, peu importe, je suppose, si cela fonctionne, cela fonctionne.
colsw

1

Halovi , 20 octets

oisup.me/⁰
\p
ye$hd0

Sorties p.si le site est en panne et e.s'il est en hausse.

Explication:

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 octets

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

Malheureusement , vous ne pouvez pas importer Network.HTTP.Simplesur tio.run, la meilleure façon de tester serait d'exécuter ce script (vous aurez besoin 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

Aller, 111 octets

Dans la mode typique de Go, la méthode la plus courte est de la décortiquer.

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

Autres implémentations ici: https://play.golang.org/p/8T5HSDQFmC


0

Clojure, 63 octets

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

Vérifie si le code HTML renvoyé par slurpcontient la chaîne "'s j"(comme dans "C'est pour vous"). Je pourrais peut-être trouver une chaîne plus petite qui est unique à la page, mais cela me ferait au plus économiser 2 octets. Cela pourrait également le rendre moins précis. "'s j" n'apparaîtra nulle part dans le balisage, sauf dans ce scénario. Une chaîne comme "u". pourrait toutefois apparaître dans l'URL, ce qui la briserait.

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

0

Nim, 108 octets

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

Malheureusement, cela strutilsest nécessaire pour contains.

Apprendre Nim, des conseils appréciés!


0

PHP, 82 78 octets

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

Exemples d'exécutions d'E / S:

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

Exemple 2

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

Presque la solution la plus courte possible. La sortie vide est également "une valeur fausse", vous pouvez donc supprimer le +. Et avec $argnau lieu de $argv[1]vous pourriez utiliser 6 autres octets (moins 1).
Titus
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.