このサイトはダウンしていますか、それとも私だけですか?


13

チャレンジ

チャレンジは簡単で、http://isup.meを使用して、入力したWebサイトが稼働しているかどうかを判断します。

サイトが稼働している場合は、真の値を返し、サイトが停止している場合は、偽の値を返す必要があります。

ルール

入力は、stackexchange.comやなどのWebアドレスになりますgoogle.co.uk。入力の文字列の先頭になどが含まれることはありませんがhttp://https://文字列の先頭www.またはcodegolf.先頭には含まれる場合があります。

isup.me/URLURLが入力されているサイトを使用する必要があります。

サイトが立ち上がると、次のようになります。

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

サイトがダウンしている場合、次のようになります。

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

isup.me以外のURL短縮サービスは許可されていません。

入力例

おそらくアップ(現在の状況に応じて):

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

ダウンします:

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

勝ち

バイト単位の最短コードが優先されます。


21
ちなみに、「made.up.co.uk」は実際に稼働しています。
ジャイアントツリー

8
fake.com.usあなたのテストケースを台無しに登録しました!
YSC

14
しかし、isup.meダウンしている場合はどうなりますか?
Okx

2
@Oksそれはあなただけではないのですか?
ピエールアラウド

3
推奨テストケース:isup.me。たとえば、google.com返される可能性があるもの以外の結果を返します。
Okx

回答:


16

sh(+ curl + grep)、28 26バイト

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

終了ステータスを介した出力(0はアップ、1はダウン)。探しIドメインが起動しているとき(偶数の特殊なケースのために一致した行の先頭にisup.me/isup.me)。


1
curl -L isup.me/$1|grep u!1バイト節約します。これは!ドメイン名の有効な文字ではありません。

0sh は真実ですか?
シャギー

1
0shで実際に真実であり、すべてのゼロ以外の値は偽です。また、IMOはshバージョンが非常に短いのは本当に素晴らしいことです。なぜなら、ゴルフを考慮しなくても、このタスクに絶対に適した言語だからです。
Score_17年

これはspthissitedoesntexist.invalidような何かに失敗すると述べている
Score_Under

1
私のマシンで一致します。それは、このビットに一致します<a href="http://spthissitedoesntexist.invalid" class="domain">spthissitedoesntexist.invalid</a>。具体的には、内部で一致しましたhref
Score_Under

5

積み上げ、44バイト

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

0サイトが稼働していない場合に出力する非同期関数、および稼働している0場合よりも大きいその他の数値。

例a:

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

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

出力(おそらく): Is google up? 1


Stacked GHページにリンクを追加できますか?
Downgoat

@Downgoat完了。
コナーオブライエン

これがの発生を確認している場合、これは(upまたはdown)でs u始まる入力で発生することに注意してくださいu
アンデルスカセオルグ

@AndersKaseorg修正、ありがとう。
コナーオブライエン

より良い例:'Is example.com up?' put 'example.com' isup出力(おそらくだけでなく確実):Is example.com up? 1
エリックアウトゴルファー

4

Kotlin REPL-131108106 93 79 55 53 64 63バイト

最初にコトリンゴルフをお試しください。
という名前の変数または値でウェブサイトを期待していますa

空白が削減されました。
「ルー」だけでは不十分だと言ったのは誰ですか?
修正されて短くなり、http://isup.meに依存しなくなりました。
接続を自分で開く必要はありません。データのストリームを取得するだけです(または取得しません)
。タスクはhttp://isup.meを使用することでした。また、:<はURLの有効な文字ではありません。
今で動作するisup.meウェブサイトのように

1は、ウェブサイトを含むように変数を負いかねますので、今、ラインなどのウェブサイトを読み込みます。

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

Webサイトのみを含む1行を読み取ります。サイトがダウンしたときに送信される部分の
チェック。m hfrom here

それぞれ「true」または「false」を返します。


ラムダとして-172120118 99 85 67 66バイト

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

直接呼び出すことができます:

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

私が間違っていても許してくれますが、これをラムダにかなり簡単に変換できませんでしたか?
ニッククリフォード

@NickCliffordは確かですが、実際には引数と型の定義のために長くなります(型の推論がここでは機能しないため15文字です)
GiantTree

3
言語はわかりませんが、返されたテキストに「loo」が含まれているかどうかを確認しているようです。このテキストが(可変)サイト名も返すということではないでしょうか?もしそうなら、それはloo.comのようなサイトに対して偽陰性を得るということですか?
コール

@Coleあなたは間違いなく正しいです、私はこれを完全に忘れました(Googleと偽のWebサイトだけをテストしていました)。翌朝、コードを更新します(現在の午前2時)
-GiantTree

これlooは、名前にが含まれるサイトでは失敗します。electric.boogaloo存在しませんが、文字列looはそこに出力されます。
Score_Under

2

Python 2または3 with Requests(70 69 68バイト)

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

1バイト削り:"u. "" u"いいえ、有効な最適化ではありません。
1バイト削り:__import__('requests').from requests import*;

これは実際にはREPLのみのコードであり、この行を実行すると、関数の名前が付けられ_ます。


1
最後の構文エラー(おそらく、迷い))。
エリックアウトゴルファー

1
で始まる入力では失敗しuます。
エリック・ザ・アウトゴルファー

1
from requests import*and を使用すると、get1バイト短くなります。
mbomb007

1
それはREPL-のみ、それは無名の関数(Pythonでラムダ)と答えることを許可されていますではありません
フェリペ・ナルディバティスタ

名前のない関数ですが、スクリプト全体を式として使用することはできません(使用するimportため)ので、REPL行と呼ぶ方が安全だと思います。
Score_Under

2

Python3 141 133 113 192 141バイト

PythonにはSelenium(webdriverを含む)が必要です。

42バイトを削減してくれた@cairdcoinheringaahingに感謝します!
簡単な修正を指摘してくれた@ V.Courtoisに感謝します!

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

プリント1サイトは、稼働して他の印刷物である場合0

ゴルフされていないバージョン:

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)

彼らはコメントでisup.meが良いと言った。あなたはいくつかのバイトを獲得することができます:)
V.クルトワ

1
-1これはスニペットです。完全なプログラムまたは関数が必要であり、変数(などt)で入力を想定することはできません。また、印刷ステートメントをゴルフすることもできますprint("up"in r.text)
caird coinheringaahing

@cairdcoinheringaahingさて、これらの変更を行います、ありがとう!これは私の2番目の回答なので、スニペットを投稿するか本格的なプログラムを投稿するかはわかりませんでした。両方を投稿しました。
ラーフルバラドワジ


2

Javascript(ES6)、74 66バイト

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

@Shaggyに感謝します。@ Shaggyは、解決された約束が出力としてカウントされることに気付きました。

このソリューションの問題は、既ににあるページでテストしない限り、CORSエラーがスローされることisup.meです。しかし、現在、それはにリダイレクトされますdownforeveryoneorjustme.com

古いバージョン:

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


1
破棄しalertてPromiseを返すことができます。こちらをご覧ください。で節約できるかもしれないと思います/u!/.test(t)
シャギー

1

Pyth、24バイト

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

Trueサイトが稼働している場合は戻りFalseます。稼働していない場合は戻ります。入力URLは引用符で囲む必要があります。'安全上の理由で無効になっているため、オンラインインタープリターでテストできません。代わりに、Pythのローカルコピーが必要になります。

説明

                        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
で始まる入力では失敗しuます。
エリックアウトゴルファー


1

PowerShell、32バイト

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

申し訳ありませんが投稿する前にあなたの答えを逃しました!いくつかの奇妙なirm振る舞いにより、これに関する束縛から救われました。私のここ
colsw

1

PowerShell、25バイト

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

Invoke-RestMethodページを返すファクトを使用します.html失敗した場合にのみプロパティを持つ。(正確にこれが起こる理由はわかりません...)

ラインを反転してブールに変換しTrue、ライブサイトまたはFalseダウンサイトの出力を返します。

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 irmは、解析不可能なページに対してプレーンテキストを返します。プレーンテキストの一致を実行するので、動作するかどうかに関係なく、iwrと同じように動作します。
colsw

1

ハロビ、20バイト

oisup.me/⁰
\p
ye$hd0

p.サイトがダウンしているe.場合、およびアップしている場合に出力します。

説明:

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バイト

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

残念ながら、あなたがインポートすることはできませんNetwork.HTTP.Simpletio.run、テストする最も簡単な方法は、このスクリプトを実行することです(あなたが必要です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バイト

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

によって返されたHTMLにslurp文字列が含まれているかどうかを確認します"'s j"(「It 'sj ust you」など)。ページに固有の小さな文字列を見つけることができるかもしれませんが、せいぜい2バイトしか節約できません。また、精度が低下する可能性もあります。「 's j」は、その1つのシナリオを除いて、マークアップに表示されません。「u」のような文字列 ただし、URLに表示される可能性があり、これによりURLが破損します。

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

0

ニム、108バイト

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

残念なことに strutilsが必要ですcontains

Nimの学習、ヒントを歓迎します!


0

PHP、 82 78バイト

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

例のI / O実行:

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

例2

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

可能な限り最短のソリューション。空の出力も「偽の値」なので、を削除できます+。そして、$argn代わりに$argv[1]別の6(マイナス1)バイトを使用できます。
タイタス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.