Napisz program, który w zależności od tego, czy skrypt ma dostęp do Internetu, tworzy wyjście „Truthy / Falsey” . Możesz próbować połączyć się z dowolną istniejącą witryną, według własnego uznania (nie używaj podejrzanej witryny, która ma tylko 10% czasu działania - staraj się utrzymywać ponad 80% rocznego czasu pracy). Jeśli witryna nie działa, Twój program nie musi działać.
Musi to być samodzielny program lub funkcja . Aby to osiągnąć, możesz użyć bibliotek spoza standardowej biblioteki. Standardowe luki są zabronione. To jest kod golfowy, więc wygrywa kod z najkrótszą liczbą bajtów.
Przykład pseudokodu:
function a:
try:
connect to internet
return 1
catch error:
return 0
To jest mój pierwszy post na temat kodu golfa, więc jeśli to w jakikolwiek sposób narusza jakiekolwiek zasady lub jest duplikatem, powiadom mnie.
EDYCJA: Z powodu licznych sugestii usunąłem ograniczenie liczby bajtów UTF-8
źródło
true
ifalse
zalecam zezwolenie na dowolne z naszych domyślnych ustawień w zakresie prawdy i fałszu . Czy przez internet masz na myśli sieć poza siecią lokalną? Czy programy nadal muszą działać, jeśli powiedzą, że Google nie działa lub jakaś inna duża strona?g.gl
/http://g.gl/
, aleto.
/http://to./
wydaje się być o jeden bajt krótszy (nie wszystkie języki postrzegają go jako prawidłowy adres URL).PRINT "0"
Odpowiedzi:
Bash (z dnsutils ), 3 bajty
Wysyła żądanie DNS dla „.” (DNS root), kod wyjścia to 0 dla sukcesu i> 0 w przeciwnym razie.
Grał w golfa
Test
Zrzeczenie się
Działa to oczywiście tylko wtedy, gdy serwer DNS znajduje się w sieci dostawcy, tj. W „Internecie” (ponieważ sieć dostawcy jest zwykle jego częścią), lub jeśli system korzysta z publicznego serwera DNS (takiego jak 8.8.8.8 od Google, z których korzystają systemy oparte na Androidzie), w przeciwnym razie możesz uzyskać kopię z pamięci podręcznej z lokalnego serwera LAN (lub localhost).
Ale zakładam, że nie jest to sprzeczne z zasadami golfa kodowego , ponieważ istnieje oczywiście więcej niż jeden system, w którym działa to zgodnie z przeznaczeniem.
Metody Pure-HTTP mogą również dawać fałszywie pozytywne wyniki z powodu pośredniego buforowania proxy i nie gwarantuje się, że będą działać wszędzie, więc nie jest to coś unikalnego dla tej metody.
Nieco bardziej niezawodna wersja, 8 bajtów
(mały hołd dla @ Dig ital Tra uma!)
Włącza „tryb śledzenia”, który wymusi kopanie, aby samodzielnie przeprowadzało wyszukiwanie rekurencyjne (patrz https://serverfault.com/a/778830 ), unikając problemów z pamięcią podręczną.
źródło
man dig
: O ile nie powiedziano o zapytaniu do określonego serwera nazw, dig spróbuje wypróbować każdy z serwerów wymienionych w /etc/resolv.conf . Jeśli nie zostaną znalezione użyteczne adresy serwerów, dig wyśle zapytanie do lokalnego hosta .Narzędzia Bash + GNU, 8
Inne odpowiedzi powłoki sprawdzają kod powrotu i odpowiednio odbijają niektóre dane wyjściowe statusu. To jest niepotrzebne. Kod powrotu powłoki jest już użytecznym kodem Truthy / Falsey i jest dostępny w
$?
parametrze idiomatycznym dla bash. Kod powrotu 0 oznacza Prawda. Kod powrotu> 0 oznacza False.W użyciu:
źródło
to.
zamiast8.8.8.8
, aby sporo zaoszczędzić.to
, w którym resolver jest skonfigurowany do znalezienia, nadal przejdzie do właściwego (i być możeto
wystarczy pingowanie lokalnego , żeby być podłączonym do Internetu )to
czasami działa, a czasem nie. Chyba trochę buforowania. Użyjęto.
tylko dla bezpieczeństwa.Partia, 8 bajtów
ping
ustawiERRORLEVEL
się1
jeśli adres nie może zostać rozwiązany lub osiągnięty.źródło
05AB1E ,
119 bajtówZapisano 2 bajty na „do”. dzięki uprzejmości ev3commander
Sprawdza, czy długość treści w http: // to . jest większy niż 1.
.w
zwraca 0 w przypadku błędu.źródło
MATL ,
1514 bajtówJeden bajt zapisany dzięki Kevin Cruijssen sugestia „s
Wyjście odbywa się poprzez STDOUT. Wyświetla niepusty ciąg zawierający niezerowe znaki (co jest prawdą), jeśli istnieje połączenie z Internetem; i nic nie wyświetla (co jest fałszem), jeśli nie ma połączenia.
Nie można tego przetestować online, ponieważ
Xi
jest to niedozwolone w tłumaczach internetowych.Wyjaśnienie
źródło
urlread('http://g.gl')
odpowiedź sama w sobie jest OK? Błąd spowoduje pozostawienie obszaru roboczego pustego, jeśli połączenie nie będzie działać. Wyświetli się komunikat o błędzie, ale technicznie to STDERR ...? Myślałem, że to trochę skomplikowane, więc zrobiłem to w ten sposób . Ale pomijanietry
wydaje się dawać taki sam wynik jak kod, lub? Ty też zostawiasz pusty stos, prawda? Nawiasem mówiąc,urlread('http://g.gl')
jest poprawny (i jest taki sam jak mój kod), ponieważ STDERR jest domyślnie ignorowany, a pusty STDOUT jest fałszem w MATLABftp
zamiasthttp
- zapisać kolejny bajt?ftp
wydaje się, że nie działa na tej stronieBash
666221 bajtówDzięki @Alex L. za wskazówkę dotyczącą skrócenia adresu URL.
Wersja bez golfa:
To jest moja pierwsza odpowiedź w Bash, nie jestem pewien, czy wystarczająco skróciłem skrypt.
źródło
echo $?
zamiast całej tej instrukcji if.;
na linii golfowej.echo $?
drukuje0
if sukces, w przeciwnym wypadku zwraca a2
w tym przypadku. Nie zajrzałem do kodu źródłowego implementacji,ping
ale zakładam, że istnieją różne kody zwrotne w zależności od konfiguracji. Dlatego użyłemif else
strategii.R, 20 bajtów
W
curl
pakiecie znajduje się funkcja umożliwiająca wykonanie dokładnie tego zadania .źródło
function() !is.null(nslookup("r-project.org", error = FALSE))
httr::url_ok('g.gl')
(choć przestarzała).Java, 72 bajty
źródło
java.net.InetSocketAddress
Perl, 15 bajtów
Biegnij z:
curl
wypuszczaSTDERR
rzeczy, nie przejmuj się nimi. Jeśli komputer ma dostęp do Internetu, wydrukuje kilka wierszy HTML (prawda), w przeciwnym razie nic nie wydrukuje (fałsz).Zaoszczędziłem 1 bajt, używając
to.
(zamiast mojego poprzedniegob.io
) dzięki @Kevin Cruijssen.źródło
print
?wget
zamiast,curl
ale to jest to samo)).C #, 87 bajtów
Jeśli wyjątek jest uważany za falsey, co nie wydaje mi się, że tak, to jest to 65 bajtów:
Próbowałem także użyć linku
http://to.
podanego przez @KevinCruijssen, ale nie działało.źródło
8 ,
2321 bajtówDwa bajty zapisane dzięki sugestii Kevina Cruijssena i mojemu odkryciu:http: // to wydaje się również działaćhttp: // do . (zapisywanie kolejnego bajtu)
Jeśli strona http: // jest dostępna, zostanie wydrukowana
true
. W przeciwnym razie drukuje sięfalse
. Pozostawia pobrane dane na stosie.źródło
MATLAB,
3222 bajtówWyjaśnienie:
Jeśli połączenie internetowe jest uruchomione, spowoduje to, że
ans
(zmienna domyślna) będzie ciągiem z całym kodem HTML w postaci zwykłego tekstu (co jest prawdą w MATLAB).Jeśli połączenie internetowe nie działa, spowoduje to zapisanie komunikatu o błędzie do STDERR i pozostawienie obszaru roboczego pustego (co w MATLAB jest fałszywe ).
Niestety
urlread
wymaga pełnego adresu URL , więcg.gl
nie wystarczy. 11 z 22 bajtów jest zatem tylko adresem url.Alternatywne podejście:
Rozwiązanie, które wychwytuje błąd i pozostawia 0 (również fałsz ) w obszarze roboczym, jeśli połączenie jest nieczynne:
0;
inicjuje domyślny zmiennejans
do0
, co jestfalse
w programie MATLAB. Następnie powinniśmytry
przeczytać adres URL. To spowoduje błąd, jeśli połączenie internetowe jest wyłączone, lub tablicę znaków, jeśli nie (która jesttrue
w MATLAB).Nie musimy niczego łapać, więc po prostu kończymy. Jeśli połączenie urlread zakończyło się powodzeniem,
ans
będzie długi ciąg z treścią strony internetowej, w przeciwnym razieans=0
.źródło
Bash, 39 bajtów
źródło
! exec 4<>/dev/tcp/to./80;echo $?
exec 4<>/dev/tcp/to./80
JavaScript ES6,
7143 bajtówAlerty 1 w trybie online, alarmuje pusty ciąg w trybie offline. Dzięki Patrick Roberts za pomoc w goleniu niektórych bajtów
Stara wersja
Alerty w
[object Reponse]
trybie online, alerty w0
trybie offlineUsunięto fragment kodu, nie działa, ponieważ ładuje się z innej domeny bez CORS, ale działa w konsoli przeglądarki
źródło
fetch('://to.').then(a=>alert(1)).catch(a=>alert(0))
JavaScript ES6,
9081 bajtówJavaScript ES6,
2221 bajtów (nieprawidłowy)Niektóre przeglądarki nie obsługują w pełni lub nie dają oczekiwanych rezultatów podczas korzystania z navigator.onLine.
źródło
f=a=>
f=
.a=>{with(new Image()){src="//placehold.it/1x1";onload=b=>a(1);onerror=c=>a()}}´ (got rid of
f = `i użytewith(){}
)Scala, 54 bajty
Dość proste; wykonuje polecenie ping do
http://ai./
i zwraca true, jeśli zakończy się na 0, lub false w przeciwnym razie.źródło
Brainfuck (niekonkurujące) 21 bajtów
Brainfuck nie może połączyć się z Internetem (o ile mi wiadomo), więc ponieważ program nie może się połączyć, odpowiedź jest zawsze
0
Nie konkuruje, ponieważ wydaje się, że mieści się w standardowej luce w zapisie wyjściowym , mimo że program ten technicznie jest odpowiedni do wyzwania.
źródło
PowerShell,
642623 bajtówZaoszczędzono 38 bajtów dzięki Shawnowi Estermanowi
Zaoszczędzono 3 bajty i naprawiono skrypt, dzięki briantist
źródło
to.
, musiszg.gl
zamiast tego użyć . Dodatkowo możesz go skrócićTest-Connection -q g.gl
.PHP, 23PHP + Curl, 14Korzystanie z operatora wstecznego PHP:
Oryginalna odpowiedź:
Spróbuję zacząć:
Nie wyprowadza nic, jeśli x.gl nie może zostać osiągnięte i
Array
jeśli tak jest.Kolejna wersja, w której nie jestem pewien, czy pasują:
źródło
"Array"
gdy próbujesz go wydrukować (<?=
), a logiczna wartość false zostanie przekonwertowana na""
. Zatem rzeczywista wartość zwracana nie jest tablicą, ale niepustym łańcuchem lub pustym łańcuchem.if ("Array") echo 'thruthy';
zostałby zabrany, dlatego jest to zgodne z prawdą . Pusty ciąg nie zająłby gałęzi i dlatego jest falsey.Żądania w języku Python 3 +,
595553 bajtówMusi być prośba o odpowiedź, prawda?
Status wyjścia to 0 dla Internetu, 1 dla braku internetu. Przykład:
Dziennik zmian:
źródło
ftp
być może) i działającexcept:0/0
.Eliksir, 33 bajty
0 jeśli podłączony, 1 w przeciwnym razie.
źródło
PowerShell , 12 bajtów
źródło
Mathematica 10 bajtów
Zakładając, że masz prawidłową kopię Mathematica i dane logowania na user.wolfram.com
zapisze wartość 1 w chmurze. Truthy: CloudObject [""] Falsey: $ Failed
Zwróci wartość 1, która została przesłana do chmury.
źródło
&
potem aby go w bezimiennej funkcji.CloudPut@1&===$Failed
& nie robi absolutnie żadnej różnicy. Na koniec program zarówno zwraca, jak i drukuje dane wyjściowe, więc tak naprawdę nie jest to fragment REPL, jak sugerujesz.Python 2.7, 70
77bajtówUżywa 1 dla prawdy, 0 dla fałszu. a.uk przekierowuje do firmy odzieżowej dla motocykli. Zaoszczędzono 3 bajty, przypisując zmienną i drukując ją. I kolejny dla „do”. trick (potwierdzony do pracy z urllib), dwa do pozbycia się nieznośnych wcięć.źródło
from urllib import*
może uratować znak (il.
oczywiście spadek ).import
i*
tak myślę, że masz rację, ale jestem na telefon, a ja go naprawić późniejJulia + Bash (z dnsutils), 10 bajtów
`command`
w Julii tworzycmd
obiekt, który można uruchomićrun
.źródło
Clojure, 49 bajtów
Zwraca,
1
jeśli można się połączyć, i wnil
inny sposób.Po prostu próbuje przejść
slurp
do strony; zgłaszanieNoRouteToHostException
wyjątku w przypadku awarii, która jest przechwytywana.Niestety protokół i kropka wydają się obowiązkowe.
źródło
JavaScript (Nashorn), 61 bajtów
Na podstawie odpowiedzi Java Huntro.
źródło