Це веб-сайт вниз або це тільки я?


13

Виклик

Завдання проста, за допомогою http://isup.me визначити, чи вводиться веб-сайт вгору чи вниз.

Якщо сайт працює, ви повинні повернути тривалість, а якщо сайт знижений, ви повинні повернути значення фальси.

Правила

Вхід буде веб-адресою, наприклад, stackexchange.comабо google.co.uk. Вхід ніколи не буде http://, і https://т.д. на початку рядка, але може мати www.або codegolf.при запуску і т.д.

Ви повинні використовувати веб-сайт, на isup.me/URLякому вводиться URL.

Коли сайт працює, він виглядатиме так:

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

Якщо сайт не працює, він виглядатиме так:

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

Скорочувачі URL-адрес заборонені, крім isup.me.

Приклади входів

Можливо, вгору (залежно від поточних обставин):

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" насправді готовий.
GiantTree

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 байт. Це передбачає, що! не є дійсним символом у доменному імені.

Чи 0правда в ш?
Кудлатий

1
0насправді є правдою в ш, при цьому всі ненульові значення є хибними. Крім того, IMO дуже приємно, що версія SH така коротка, оскільки це абсолютно правильна мова для цього завдання навіть без урахування гольфу.
Score_Under

Це сказало, що це не вдасться на щось на кшталт 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


Чи можете ви додати посилання на сторінку GH?
Downgoat

@Downgoat Готово.
Conor O'Brien

Якщо це перевірка на наявність події s u, зауважте, що це відбувається на будь-якому вході, починаючи з u(вгору чи вниз).
Anders Kaseorg

@AndersKaseorg Виправлено, дякую.
Conor O'Brien

Кращий приклад: 'Is example.com up?' put 'example.com' isupвихід (не просто, мабуть, але впевнено):Is example.com up? 1
Ерік Вихідник

4

Kotlin REPL - 131 108 106 93 79 55 53 64 63 байт

Спочатку спробуйте в гольф Котлін.
Очікує веб-сайт у змінній або значенні з назвою a.

Тепер зі зменшеним пробілом.
Хто сказав, що "loo" недостатньо?
Виправлена ​​та коротша, більше не покладається на http://isup.me .
Не потрібно самостійно відкривати з'єднання, просто отримайте потік даних (чи ні)
Завдання полягало у використанні http://isup.me , правда? Також: <не є дійсним символом у URL-адресі.
Зараз працює з isup.meвеб-сайтом.

Тепер він читає веб-сайт як рядок, оскільки не можна припустити змінну, яка містить веб-сайт.

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

Читає один рядок, що містить лише веб-сайт.
Перевірки на m hчастину, from hereщо надсилається, коли сайт не працює.

Повертає "true" або "false" відповідно.


Як лямбда - 172 120 118 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

@Cole ви точно маєте рацію, я про це повністю забув (я протестував лише Google і підроблений веб-сайт). Я
оновлю

Цей не вдасться на сайтах з 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
Помилка синтаксису в кінці (ймовірно, збита )).
Ерік Аутгольфер

1
Помилка входів, починаючи з u.
Erik the Outgolfer

1
Використовується from requests import*і getна 1 байт коротше.
mbomb007

1
це не лише відповідь, дозволяється відповідати неназваними функціями (лямбда в пітоні)
Феліпе Нарді Батіста

Це неназвана функція, але сценарій в цілому не можна використовувати як вираз (оскільки він використовує import), тому я думаю, що безпечніше просто називати його рядком REPL.
Score_Under

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 добре в коментарях; ви можете виграти кілька байт :)
В. Куртуа

1
-1 Це фрагмент. Повні програми або функції потрібні, і введення не можна вважати змінною (наприклад, t). Крім того, ви можете print("up"in r.text)
пограти в

@cairdcoinheringaahing Добре, внесе ці зміни, дякую! Це моя друга відповідь, тому я не знав, чи публікувати фрагмент чи повноцінну програму. Тож я розмістив обох.
Рахул Бхарадвай


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і просто повернути Обіцянку. Дивіться тут . Я думаю, ви також можете зробити економію /u!/.test(t).
Shaggy

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


1

PowerShell, 32 байти

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

Пропустив вашу відповідь, перш ніж я розмістив свою вибачте! якась дивна irmповедінка врятувала мене на цьому. моя тут
colsw

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

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.Simpleна tio.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

Нім, 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) байт.
Тит
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.