这个网站是关闭了还是仅我一个?


13

挑战

挑战很简单,使用http://isup.me来确定输入的网站是打开还是关闭。

如果站点已启动,则应返回真实值;如果站点已关闭,则应返回假值。

规则

输入将是网址,例如stackexchange.comgoogle.co.uk。输入将永远不会有http://https://等字符串的开始,但可能有www.codegolf.在启动等。

您应该使用isup.me/URL输入URL 的站点。

站点启动后,它将看起来像:

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'7

14
但是如果isup.me失败了怎么办?
Okx

2
@Oks您确定不只是您吗?
皮埃尔·阿洛德

3
推荐的测试案例:isup.me。它返回的结果不同于google.com可能返回的结果。
Okx

Answers:


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个字节。这是假设!不是域名中的有效字符。

0嘘是真理吗?
毛茸茸的

1
0sh确实是真实的,所有非零值都是虚假的。而且,IMO非常好,因为sh版本是如此之短,因为即使不考虑打高尔夫球,它绝对是执行此任务的正确语言。
得分_

也就是说,这将在诸如spthissitedoesntexist.invalid之类的内容上失败
Score_Under'July

1
它在我的机器上匹配。它与该位匹配:<a href="http://spthissitedoesntexist.invalid" class="domain">spthissitedoesntexist.invalid</a>具体来说,它与中的匹配href
Score_Understanding

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 '17

@Downgoat完成。
Conor O'Brien

如果正在检查是否存在s u,请注意,这会在以u(开头或结尾)开头的所有输入上发生。
Anders Kaseorg '17

@AndersKaseorg固定,谢谢。
科纳·奥布莱恩

更好的例子:'Is example.com up?' put 'example.com' isup输出(不仅可能,而且肯定):Is example.com up? 1
Egg the Outgolfer '17

4

Kotlin REPL-13110810693 79 55 53 64 63字节

首先尝试在Kotlin打高尔夫球。
期望网站使用名为的变量或值a

现在减少了空格。
谁说“厕所”还不够?
固定且更短,不再依赖http://isup.me
无需自己打开连接,只需获取(或不获取)数据流。
任务是使用http://isup.me,对吗?另外:<在URL中不是有效字符。
Now可以与isup.me网站一起使用Now可以将网站

读为一行,因为不能假设变量包含该网站。

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

读取仅包含网站的一行。
检查是否有m h一部分from here在站点关闭时发送。

分别返回“ true”或“ false”。


作为Lambda- 17212011899 8567 66字节

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

可以直接调用:

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

如果我错了,请原谅我,但是这不能轻易转换为lambda吗?
尼克·克利福德

@NickClifford可以肯定,但是由于参数和类型定义(实际上是15个字符,因为这里的类型推断在这里不起作用),它实际上会更长一些
GiantTree,2017年

3
我不知道该语言,但似乎您正在检查返回的文本中是否包含“ loo”。此文本是否还返回(变量)站点名称,不是这种情况吗?如果是的话,这是否意味着您对loo.com之类的网站抱有假阴性?
2015年

@科尔,你绝对是对的,我完全忘记了这一点(我只是在测试Google和假网站)。我将在第二天早上(现在是我现在的凌晨2点)更新代码
GiantTree'3

loo在名称为的网站上,此操作将失败。electric.boogaloo不存在,但字符串loo将存在于输出中。
Score_Under

2

带有请求的Python 2或3(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
最后的语法错误(可能是流浪))。
大公埃里克(Erik the Outgolfer)'17年

1
输入以开头的输入失败u
暴民埃里克(Erik the Outgolfer)'17年

1
使用from requests import*get短1个字节。
mbomb007'7

1
它不仅限于REPL,还可以使用未命名的函数(python中的lambdas)进行回答
Felipe Nardi Batista

它是一个未命名的函数,但是脚本作为一个整体不能用作表达式(因为它使用import),因此我认为将其称为REPL行较为安全。
Score_Understanding

2

Python3 141 133 113 192 141字节

需要Selenium(包括webdriver)用于python。

感谢@cairdcoinheringaahing减少了42个字节!
感谢@ 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. Courtois

1
-1这是一个片段。需要完整的程序或功能,并且不能在变量(例如t)中假定输入。此外,您也可以将打印声明print("up"in r.text)
打入

@cairdcoinheringaahing好的,请进行那些更改,谢谢!这是我的第二个答案,所以我不知道是发布片段还是完整的程序。所以我都贴了。
Rahul Bharadwaj


2

Javascript(ES6),74 66字节

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

感谢@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
大公埃里克(Erik the Outgolfer)'17年



1

PowerShell,25字节

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

使用仅在失败时Invoke-RestMethod返回具有.html属性的页面的事实。(不知道为什么会这样...)

反转线以转换为bool,输出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 '17

1

Halovi,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"(如,“这“SJ乌斯你”)。我也许可以找到该页面唯一的较小字符串,但是最多最多可以节省2个字节。这也有可能使其准确性降低。除那种情况外,“'s j”不会出现在标记中的任何地方。像“ u”这样的字符串。但是可能会出现在URL中,这会破坏它。

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

0

Nim,108个字节

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

不幸的是这strutils是必需的contains

学习尼姆,提示赞赏!


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)字节。
泰特斯(Titus),
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.