Bu site kapalı mı yoksa sadece ben mi?


13

Meydan okuma

Meydan kullanarak, basit http://isup.me bir giriş yapılmış web sitesi yukarı veya aşağı olmadığını belirlemek.

Site çalışıyorsa, gerçek bir değer döndürmelisiniz ve site kapalıysa, bir falsey değeri döndürmelisiniz.

kurallar

Giriş, stackexchange.comveya gibi bir web adresi olacaktır google.co.uk. Giriş zorunda kalmayacaksınız http://, https://dize başında vb ama olabilir www.veya codegolf.başlamak en vb

isup.me/URLURL'nin giriş olduğu siteyi kullanmalısınız .

Bir site hazır olduğunda, şuna benzer:

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

Bir site kapalıysa, şuna benzer:

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

URL kısaltıcılarına isup.me dışında izin verilmez.

Örnek girişler

Muhtemelen yukarı (mevcut koşullara bağlı olarak):

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

Aşağı olacak:

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

Kazanan

Bayt cinsinden en kısa kod kazanır.


21
Bu arada: "made.up.co.uk" aslında bitti.
GiantTree

8
fake.com.usTest durumlarınızla uğraşmak için yeni kayıt oldum !
YSC

14
Peki ya isup.meaşağıdaysa?
Okx

2
@Oks Bunun sadece sen olmadığından emin misin?
Pierre Arlaud

3
Önerilen test durumu: isup.me. Diyelim ki, google.comgeri dönebileceklerden başka bir sonuç döndürür.
Okx

Yanıtlar:


16

sh (+ kıvırmak + grep), 28 26 bayt

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

Çıkış durumu üzerinden çıkışlar (yukarı için 0, aşağı için 1). Alanın açıkI olduğu zamanla eşleşen bir satırın başlangıcında bir bakar (özel isup.me/isup.me durumu için bile ).


1
curl -L isup.me/$1|grep u!1 bayt kaydeder. Bu varsayım! alan adında geçerli bir karakter değil.

0sh içinde truthy?
Shaggy

1
0gerçekten de sh cinsinden doğrudur, tüm sıfır olmayan değerler yanlıştır. Ayrıca, IMO, sh versiyonunun çok kısa olması gerçekten güzel, çünkü golfü düşünmeden bile bu görev için kesinlikle doğru dil.
Score_Under

Bu, bunun spthissitedoesntexist.invalid gibi bir şeyde başarısız olacağını söyledi
Score_Under

1
Makinemde uyuyor. Bu bit ile eşleşir: <a href="http://spthissitedoesntexist.invalid" class="domain">spthissitedoesntexist.invalid</a>Özellikle href.
Score_Under

5

Yığılmış , 44 bayt

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

0Site açık değilse ve açık olduğundakinden daha büyük başka bir sayı çıktısı veren eşzamansız işlev 0.

Örnek a:

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

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

Çıktı (muhtemelen): Is google up? 1


Yığılmış GH sayfasına bağlantı ekleyebilir misiniz?
Downgoat

@Downgoat Yapıldı.
Conor O'Brien

Bunun olup olmadığını kontrol ediyorsanız s u, bunun herhangi bir girişte u(yukarı veya aşağı) gerçekleştiğine dikkat edin.
Anders Kaseorg

@AndersKaseorg Düzeltildi, teşekkürler.
Conor O'Brien

Daha iyi örnek: 'Is example.com up?' put 'example.com' isupçıktı (sadece muhtemelen değil ama kesinlikle):Is example.com up? 1
Outgolfer Erik

4

Kotlin REPL - 131108109 93 79 55 53 64 63 bayt

Önce Kotlin Golf'te deneyin.
Web sitesini adlı bir değişken veya değerde bekler a.

Şimdi azaltılmış boşluk ile.
Kim dedi "tuvalet" yeterli değil?
Sabit ve daha kısa, artık http: //isup.me'ye güvenmiyor .
Bağlantıyı kendimiz açmaya gerek yok, sadece veri akışını alın (veya almayın)
Görev http://isup.me kullanmaktı , değil mi? Ayrıca:: <URL'deki geçerli bir karakter değil.
Şimdi isup.meweb sitesi olarak çalışır

Şimdi web sitesini bir satır olarak okur, çünkü biri web sitesini içerecek bir değişken olduğunu varsayamaz.

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

Yalnızca web sitesini içeren bir satırı okur. Bir site devre dışı bırakıldığında gönderilen bölümün olup olmadığını
kontrol eder .m hfrom here

Sırasıyla "true" veya "false" değerini döndürür.


Lambda olarak - 17220110 99 85 67 66 bayt

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

Doğrudan çağrılabilir:

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

yanılıyorsam beni affet ama bu oldukça kolay bir lambda'ya dönüştürülemedi mi?
Nick Clifford

@NickClifford elbette, ancak argüman ve tür tanımı nedeniyle daha uzun olurdu (15 karakter, çünkü tür çıkarımı burada çalışmaz)
GiantTree

3
Dili bilmiyorum, ama döndürülen metinde "tuvalet" olup olmadığını kontrol ediyor gibi görünüyor. Bu metnin (değişken) site adını da döndürmesi doğru değil mi? Ve eğer öyleyse, bu loo.com gibi siteler için yanlış negatifler aldığınız anlamına mı geliyor?
cole

@Kol kesinlikle haklısın, bunu tamamen unuttum (sadece Google'ı ve sahte web sitesini test ediyordum). Ertesi sabah kodu güncelleyeceğim (şu anda olduğum saat 02:00)
GiantTree

Bu loo, adında olan sitelerde başarısız olacaktır . electric.boogaloomevcut değil ancak dize looçıktıda olacak.
Score_Under

2

Talepli Python 2 veya 3 ( 70 69 68 bayt)

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

1 bayt tıraş: "u. "" u" Hayır, geçerli bir optimizasyon değil.
1 bayt traş: __import__('requests').from requests import*;

Bu artık gerçekten sadece REPL kodudur ve bu satırı çalıştırdıktan sonra işlev adlandırılır _.


1
Sonunda sözdizimi hatası (muhtemelen bir kaçak )).
Outgolfer Erik

1
İle başlayan girişler için başarısız u.
Outgolfer Erik

1
Kullanılması from requests import*ve get1 bayt kısadır.
mbomb007

1
sadece REPL değildir, isimsiz işlevlerle (pythonda lambdas) cevap vermesine izin verilir
Felipe Nardi Batista

Adsız bir işlevdir, ancak komut dosyası bir bütün olarak (kullandığından beri import) bir ifade olarak kullanılamaz , bu yüzden sadece REPL satırı olarak adlandırmak daha güvenli olduğunu düşünüyorum.
Score_Under

2

Python3 141 133 113 192 141 bayt

Python için Selenyum (web sürücüsü dahil) gerektirir .

42 bayt azalttığı için @cairdcoinheringaahing'e teşekkürler!
Basit bir düzeltmeyi işaret ettiği için @ V.Courtois'e teşekkürler!

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

Baskılar 1sitesi, hazır ve çalışır başka baskılar ise 0.

Ungolfed sürümü:

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)

Onlar yorumlarda iyi olduğunu söyledi; bazı baytlar kazanabilirsiniz :)
V. Courtois

1
-1 Bu bir pasaj. Tam programlar veya işlevler gereklidir ve bir değişkente (örneğin t) giriş kabul edilemez . Ayrıca, basılı ifadeyi golf edebilirsinizprint("up"in r.text)
caird coinheringaahing

@cairdcoinheringaahing Tamam, bu değişiklikleri yapacak, teşekkürler! Bu benim ikinci cevabım, bu yüzden bir snippet mi yoksa tam teşekküllü bir program mı yayınlayacağımı bilmiyordum. Ben de ikisini de gönderdim.
Rahul Bharadwaj


2

Javascript (ES6), 74 66 bayt

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

Çözülmüş bir sözün çıktı olarak sayıldığına dikkatimi çeken @Shaggy sayesinde.

Zaten bir sayfada test etmediğim sürece bu çözümle ilgili bir CORS hatası atar isup.me. Ama şu anda, bu yönlendiriliyordownforeveryoneorjustme.com

Eski versiyon:

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


1
Sen kurtulmak alertve sadece Promise dönmek. Buraya bakın . Ben de bir tasarruf yapabilirsiniz düşünüyorum /u!/.test(t).
Shaggy

1

Pyth , 24 bayt

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

TrueSite açıksa iade edin False. Girilen URL alıntılanmalıdır. Bu, çevrimiçi tercümanda test edilemez çünkü 'güvenlik nedeniyle üzerinde devre dışı bırakılmıştır; bunun yerine Pyth'in yerel bir kopyasına ihtiyacınız olacak .

açıklama

                        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
İle başlayan girişler için başarısız u.
Outgolfer Erik


1

PowerShell, 32 bayt

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

Ben üzgünüm yayınlamadan önce cevabını kaçırdın! bazı tuhaf irmdavranışlar bana bu konuda bir sürü kurtardı. benim burada
colsw

1

PowerShell, 25 Bayt

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

Invoke-RestMethodBir .htmlözelliği olan sayfayı yalnızca hata durumunda döndüren gerçeği kullanır . (bunun tam olarak neden olduğunu bilmiyorum ...)

boole dönüştürülecek hattı ters çevirir, Truecanlı bir site veya Falsekapalı bir site için çıktılar .

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 ayrıştırılamayan irmsayfalar için düz metin döndürür, düz metin eşleşmesi yapacağım, bu yüzden işe yarayıp yaramadığına bakılmaksızın iwr ile aynı şekilde davranırdı.
colsw

1

Halovi , 20 bayt

oisup.me/⁰
\p
ye$hd0

p.Site kapalıysa ve e.çalışıyorsa çıktı verir.

Açıklama:

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 bayt

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

Maalesef içe aktaramazsınız Network.HTTP.Simple, tio.runtest etmenin en kolay yolu bu komut dosyasını çalıştırmak olacaktır (ihtiyacınız olacak 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

Git, 111 bayt

Tipik Go tarzında, en kısa yöntem onu ​​ortadan kaldırmaktır.

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

Buradaki diğer uygulamalar: https://play.golang.org/p/8T5HSDQFmC


0

Clojure, 63 bayt

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

Tarafından döndürülen HTML'nin slurpdizeyi içerip içermediğini kontrol eder "'s j"( "Sj ust you" da olduğu gibi). Sayfaya özgü daha küçük bir dize bulabilirim, ancak en fazla bana 2 bayt kazandıracaktı. Ayrıca potansiyel olarak daha az doğru hale getirecektir. "'s j", bu senaryo dışında hiçbir yerde biçimlendirmede görünmez. "U" gibi bir dize. ancak URL'de potansiyel olarak URL'nin kırılmasına neden olabilir.

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

0

Nim, 108 bayt

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

Talihsiz strutilsiçin gerekli contains.

Öğrenme Nim, ipuçları takdir!


0

PHP, 82 78 bayt

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

Örnek g / Ç çalışır:

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

ÖRNEK 2

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

Neredeyse mümkün olan en kısa çözüm. Boş çıktı da "bir falsy değeri" dir, böylece +. Ve $argnbunun yerine $argv[1]başka bir 6 (eksi 1) bayt kullanabilirsiniz.
Titus
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.