Schreiben Sie ein Programm, das abhängig davon, ob das Skript Zugriff auf das Internet hat, eine Ausgabe erzeugt, die "Truthy / Falsey" lautet . Sie können nach eigenem Ermessen versuchen, eine Verbindung zu einer vorhandenen Site herzustellen (verwenden Sie keine schattige Site mit nur 10% Betriebszeit - versuchen Sie, die jährliche Betriebszeit auf über 80% zu beschränken). Wenn die Site nicht verfügbar ist, muss Ihr Programm nicht funktionieren.
Es muss ein eigenständiges Programm oder eine Funktion sein . Sie können Bibliotheken außerhalb der Standardbibliothek verwenden, um dies zu erreichen. Standardlücken sind verboten. Dies ist Codegolf, daher gewinnt der Code mit der kürzesten Bytezahl.
Beispiel Pseudocode:
function a:
try:
connect to internet
return 1
catch error:
return 0
Dies ist mein erster Beitrag zum Thema Code Golf. Wenn dies also gegen Regeln verstößt oder ein Betrug ist, benachrichtigen Sie mich bitte.
BEARBEITEN: Aufgrund zahlreicher Vorschläge habe ich die Beschränkung der UTF-8-Bytezahl aufgehoben
quelle
true
undfalse
empfehle ich, einen unserer Standardwerte für Wahrhaftigkeit und Falschheit zuzulassen . Meinen Sie mit Internet auch das Netzwerk außerhalb Ihres lokalen Netzwerks? Müssen Programme noch funktionieren, wenn Google ausgefallen ist oder eine andere große Website?g.gl
/ benutzthttp://g.gl/
, aberto.
/http://to./
scheint ein Byte kürzer zu sein (nicht alle Sprachen sehen es als gültige URL durch).PRINT "0"
Antworten:
Bash (mit dnsutils ), 3 Bytes
Sendet eine DNS-Anfrage für "." (DNS-Stamm), Exit-Code ist 0 für Erfolg und> 0 ansonsten.
Golf gespielt
Prüfung
Haftungsausschluss
Dies funktioniert natürlich nur, wenn sich Ihr DNS- Server im Netzwerk des Anbieters befindet, dh im "Internet" (da Ihr Anbieternetzwerk normalerweise ein Teil davon ist), oder wenn Ihr System einen öffentlichen DNS-Server verwendet (wie 8.8.8.8) Andernfalls können Sie eine zwischengespeicherte Kopie von einem lokalen LAN- Server (oder localhost) abrufen.
Ich gehe aber davon aus, dass dies nicht gegen die Code-Golf- Regeln verstößt, da es offensichtlich mehr als ein System gibt, in dem dies wie beabsichtigt funktioniert.
Pure-HTTP-Methoden können aufgrund eines Zwischenspeicherungs-Proxys auch zu Fehlalarmen führen und funktionieren nicht überall, was für diese Methode also nicht eindeutig ist.
Eine etwas zuverlässigere Version, 8 Bytes
(eine kleine Hommage an @ Dig ital Tra uma!)
Aktiviert den "Trace-Modus", der dig zwingt , die rekursive Suche selbst durchzuführen (siehe https://serverfault.com/a/778830 ), wodurch Cache-Probleme vermieden werden.
quelle
man dig
: Sofern nicht angegeben wird, dass ein bestimmter Nameserver abgefragt werden soll, wird dig jeden der in /etc/resolv.conf aufgelisteten Server testen . Wenn keine verwendbaren Serveradressen gefunden werden, sendet dig die Abfrage an den lokalen Host .Bash + GNU Utils, 8
Die anderen Shell-Antworten überprüfen den Rückkehrcode und geben einige Statusausgaben entsprechend aus. Das ist unnötig. Der Shell-Rückkehrcode ist bereits ein verwendbarer Truthy / Falsey-Code und kann über den
$?
für bash typischen Parameter aufgerufen werden . Rückgabecode 0 bedeutet True. Rückgabewert> 0 bedeutet Falsch.In Benutzung:
quelle
to.
anstatt8.8.8.8
, um viel zu sparen.to
, die der Resolver zu finden konfiguriert ist, es wird immer noch auf die richtige (und vielleicht in der Lage, ein lokales Pingto
ist genug mit dem Internet verbunden zu sein )to
manchmal funktioniert und manchmal nicht. Ich schätze, es geht ein bisschen ums Cachen. Ich werdeto.
nur zur Sicherheit verwenden.Batch, 8 Bytes
ping
wird auf gesetztERRORLEVEL
,1
wenn die Adresse nicht aufgelöst oder erreicht werden kann.quelle
05AB1E ,
119 Bytes2 Bytes auf "bis" gespeichert mit freundlicher Genehmigung von ev3commander
Überprüft, ob die Länge des Inhalts unter http: // to angegeben ist . ist größer als 1.
.w
Gibt bei einem Fehler 0 zurück.quelle
MATL ,
15 bis14 BytesDank des Vorschlags von Kevin Cruijssen konnte ein Byte eingespart werden
Die Ausgabe erfolgt über STDOUT. Dies zeigt eine nicht leere Zeichenfolge an, die Zeichen ungleich Null enthält (was wahr ist), wenn eine Internetverbindung besteht. und zeigt nichts an (was falsch ist), wenn keine Verbindung besteht.
Dies kann nicht online getestet werden, da dies
Xi
in den Online-Dolmetschern nicht erlaubt ist.Erläuterung
quelle
urlread('http://g.gl')
eine OK-Antwort für sich in Betracht ziehen ? Es tritt ein Fehler auf und der Arbeitsbereich bleibt leer, wenn die Verbindung unterbrochen wird. Es wird eine Fehlermeldung angezeigt, aber technisch gesehen ist das zu STDERR ...? Ich dachte, es wäre ein bisschen anstrengend, also habe ich es so gemacht . Aber das Überspringentry
scheint dasselbe Ergebnis zu liefern wie Ihr Code, oder? Sie lassen den Stapel auch leer, nicht wahr? Übrigens nette Antwort ... :)urlread('http://g.gl')
gültig ist (und ist die gleiche wie mein Code der Fall ist), wie STDERR standardmäßig ignoriert wird, und eine leere STDOUT ist falsy in MATLABftp
anstatt einhttp
weiteres Byte zu speichern?ftp
scheint es nicht für diese Seite zu funktionierenBash
666221 BytesVielen Dank an @Alex L. für den Tipp zur URL-Verkürzung.
Ungolfed-Version:
Dies ist meine erste Antwort in Bash. Ich bin nicht sicher, ob ich das Skript ausreichend gekürzt habe.
quelle
echo $?
anstelle dieser ganzen if-Anweisung.;
in der Golflinie verpasst .echo $?
druckt ein0
wenn Erfolg, oder es gibt2
in diesem Fall ein zurück. Ich habe mich nicht mit dem Quellcode der Implementierung von befasst,ping
aber ich gehe davon aus, dass es je nach Satz unterschiedliche Rückkehrcodes gibt. Daher habe ichif else
Strategie verwendet.R, 20 Bytes
Für genau diese Aufgabe gibt es eine Funktion im
curl
Paket.quelle
function() !is.null(nslookup("r-project.org", error = FALSE))
httr::url_ok('g.gl')
(wenn auch veraltet).Java, 72 Bytes
quelle
java.net.InetSocketAddress
Perl, 15 Bytes
Laufen mit:
curl
Gibt Sachen ausSTDERR
, macht ihnen nichts aus. Wenn der Computer Zugang zum Internet hat, druckt er ein paar Zeilen HTML (wahrheitsgemäß), andernfalls wird nichts gedruckt (falsch).Dank @Kevin Cruijssen 1 Byte eingespart
to.
(anstelle meiner vorherigenb.io
).quelle
print
?wget
stattcurl
aber es ist das gleiche)).C # 87 Bytes
Wenn eine Ausnahme als falsch eingestuft wird, was ich nicht glaube, dann sind dies 65 Bytes:
Ich habe auch versucht, den
http://to.
von @KevinCruijssen angegebenen Link zu verwenden, aber er schien nicht zu funktionieren.quelle
8. ,
2321 BytesDank des Vorschlags von Kevin Cruijssen und meiner Entdeckung konnten zwei Bytes eingespart werden :http: // zu funktionieren scheint so gut wiehttp: // bis . (Speichern eines weiteren Bytes)
Wenn die Site http: // to erreicht werden kann, wird sie gedruckt
true
. Andernfalls wird gedrucktfalse
. Die abgerufenen Daten verbleiben auf dem Stapel.quelle
MATLAB,
3222 BytesErläuterung:
Wenn die Internetverbindung besteht, ist dies
ans
eine Zeichenfolge (die Standardvariable) mit dem gesamten HTML-Code im Klartext (was in MATLAB zutrifft ).Wenn die Internetverbindung unterbrochen ist, wird eine Fehlermeldung an STDERR gesendet und der Arbeitsbereich leer gelassen (was in MATLAB falsch ist ).
Benötigt leider
urlread
eine vollständige URL-Adresse , reicht alsog.gl
nicht aus. 11 der 22 Bytes sind daher nur die URL-Adresse.Alternativer Ansatz:
Eine Lösung, die den Fehler abfängt und im Arbeitsbereich eine 0 (auch falsch ) zurücklässt, wenn die Verbindung unterbrochen ist:
0;
Initialisiert die Standardvariableans
auf0
, die sichfalse
in MATLAB befindet. Danntry
lesen wir die URL. Dies führt zu einem Fehler, wenn die Internetverbindung unterbrochen ist, oder zu einem Zeichenarray, wenn dies nicht dertrue
Fall ist ( in MATLAB).Wir müssen nichts fangen, also hören wir einfach auf. Wenn der URL-Leseaufruf erfolgreich war, dann
ans
wird eine lange Zeichenfolge mit dem Inhalt der Website angezeigt , ansonstenans=0
.quelle
Bash, 39 Bytes
quelle
! exec 4<>/dev/tcp/to./80;echo $?
exec 4<>/dev/tcp/to./80
JavaScript ES6,
7143 BytesWarnungen 1, wenn online, warnt eine leere Zeichenfolge, wenn offline. Vielen Dank an Patrick Roberts, der mir geholfen hat, einige Bytes zu entfernen
Alte Version
Warnungen,
[object Reponse]
wenn online, Warnungen,0
wenn offlineDas Code-Snippet wurde entfernt. Es funktioniert nicht, da es ohne CORS aus einer anderen Domäne geladen wird, aber in der Browserkonsole
quelle
fetch('://to.').then(a=>alert(1)).catch(a=>alert(0))
JavaScript ES6,
9081 BytesJavaScript ES6,
2221 Bytes (ungültig)Einige Browser unterstützen die Datei navigator.onLine nicht vollständig oder führen zu den erwarteten Ergebnissen.
quelle
f=a=>
f=
.a=>{with(new Image()){src="//placehold.it/1x1";onload=b=>a(1);onerror=c=>a()}}´ (got rid of
f = `und verwendetwith(){}
)Scala, 54 Bytes
Ziemlich einfach; Führt einen Ping-Befehl an aus
http://ai./
und gibt true zurück, wenn er mit 0 beendet wird, oder andernfalls false.quelle
Brainfuck (nicht konkurrierend) 21 Bytes
Brainfuck kann keine Verbindung zum Internet herstellen (soweit mir bekannt ist). Da das Programm keine Verbindung herstellen kann, lautet die Antwort immer
0
Nicht konkurrierend, da es unter die hartcodierte Standardausgabelücke zu fallen scheint , obwohl dieses Programm technisch für die Herausforderung korrekt ist.
quelle
Powershell,
642623 Bytes38 Bytes gespart, dank Shawn Esterman
3 Bytes gespeichert und Skript repariert, dank Briantist
quelle
to.
, Sie müsseng.gl
stattdessen verwenden. Zusätzlich können Sie es auf kürzenTest-Connection -q g.gl
.PHP, 23PHP + Curl, 14Verwendung des PHP-Backtick-Operators:
Ursprüngliche Antwort:
Ich werde versuchen, einen Anfang zu machen:
Dies gibt nichts aus, wenn x.gl nicht erreicht werden kann und
Array
wenn dies der Fall ist.Eine andere Version, bei der ich nicht ganz sicher bin, ob sie passt:
quelle
"Array"
wenn Sie versuchen, es auszudrucken (<?=
) und boolean false wird in konvertiert""
. Der tatsächliche Rückgabewert ist also kein Array, sondern eine nicht leere Zeichenfolge oder eine leere Zeichenfolge.if ("Array") echo 'thruthy';
würde genommen, deshalb ist es wahr . Die leere Schnur würde den Ast nicht nehmen und ist daher falsch.Python 3 + -Anfragen,
595553 ByteEs muss eine Antwort auf Anfragen geben, richtig?
Der Ausgangsstatus ist 0 für das Internet, 1 für kein Internet. Beispiel:
Änderungsprotokoll:
quelle
ftp
möglicherweise) ein anderes Protokoll verwenden und dies tunexcept:0/0
.Elixier, 33 Bytes
0 wenn verbunden, 1 sonst.
quelle
PowerShell , 12 Byte
quelle
Mathematica 10 Bytes
Angenommen, Sie haben eine gültige Kopie von Mathematica und Anmeldeinformationen auf user.wolfram.com
schreibt den Wert 1 in die Cloud. Wahrheit: CloudObject [""] Falsey: $ Failed
Gibt den Wert 1 zurück, der in die Cloud hochgeladen wurde.
quelle
&
danach, um es in eine unbenannte Funktion zu machen.CloudPut@1&===$Failed
& macht das absolut keinen Unterschied. Schließlich gibt das Programm die Ausgabe zurück und druckt sie aus, sodass es sich nicht um ein REPL-Snippet handelt, wie Sie vorschlagen.Python 2.7, 70
77BytesVerwendet 1 für wahr, 0 für falsch. a.uk leitet zu einem Motorradbekleidungsunternehmen weiter. 3 Bytes gespart durch Zuweisen zu einer Variablen und Drucken dieser. Und noch eine für das "to". Trick (bestätigt, um mit urllib zu arbeiten), zwei, um die lästigen Einrückungen loszuwerden.quelle
from urllib import*
könnte ein Zeichen retten (undl.
natürlich fallen lassen).import
und fallen lassen können, und*
so denke ich, dass Sie Recht haben, aber ich bin auf dem Handy und ich werde es später behebenJulia + Bash (mit dnsutils), 10 Bytes
`command`
in julia erstellt eincmd
objekt, mit dem man laufen kannrun
.quelle
Clojure, 49 Bytes
Gibt zurück,
1
ob eine Verbindung hergestellt werden kann,nil
andernfalls.Nur Versuche zur
slurp
Seite;NoRouteToHostException
beim Fehlschlagen eine Ausnahme auslösen, die abgefangen wird.Leider scheinen das Protokoll und der Punkt obligatorisch zu sein.
quelle
Javascript (Nashorn), 61 Bytes
Basierend auf der Java-Antwort von Huntro.
quelle