Ecrivez un programme qui, selon que le script a accès à Internet ou non, génère une sortie "Truthy / Falsey" . Vous pouvez essayer de vous connecter à n'importe quel site existant, à votre propre discrétion (n'utilisez pas un site ombragé qui ne dispose que de 10% de disponibilité - essayez de conserver une disponibilité annuelle supérieure à 80%). Si le site est en panne, votre programme n'a pas à fonctionner.
Ce doit être un programme autonome ou une fonction . Vous pouvez utiliser des bibliothèques en dehors de la bibliothèque standard pour y parvenir. Les failles standard sont interdites. C'est le code golf, le code avec le plus petit nombre d'octets gagne.
Exemple de pseudocode:
function a:
try:
connect to internet
return 1
catch error:
return 0
Ceci est mon premier article sur le code golf, donc si cela enfreint les règles de quelque manière que ce soit ou est une dupe, s'il vous plaît, alertez-moi.
EDIT: En raison de nombreuses suggestions, j'ai supprimé la restriction du nombre d'octets UTF-8
la source
true
etfalse
, je recommande d’autoriser l’un quelconque de nos défauts pour la vérité et la fausseté . Aussi, par internet, voulez-vous dire le réseau en dehors de votre réseau local? Est-ce que les programmes doivent encore fonctionner si, par exemple, Google est en panne ou tout autre site volumineux?g.gl
/http://g.gl/
, maisto.
/http://to./
semble être un octet plus court (toutes les langues ne le voient pas comme une URL valide).PRINT "0"
Réponses:
Bash (avec dnsutils ), 3 octets
Envoie une requête DNS pour "." (Racine DNS), le code de sortie est 0 en cas de succès et> 0 dans le cas contraire.
Golfé
Tester
Avertissement
Cela ne fonctionnera évidemment que si votre serveur DNS est installé sur le réseau du fournisseur, c'est-à-dire "Internet" (votre réseau de fournisseur en fait normalement partie), ou si votre système utilise un serveur DNS public (comme 8.8.8.8). de Google, utilisés par les systèmes Android), sinon vous pouvez obtenir une copie en cache d’un serveur LAN local (ou localhost).
Mais je suppose que cela n’est pas contraire aux règles du code-golf , car il existe évidemment plus d’un système dans lequel cela fonctionne comme prévu.
Les méthodes purement HTTP peuvent également donner des faux positifs, en raison d'un proxy de mise en cache intermédiaire, et leur fonctionnement ne doit pas forcément fonctionner partout. Il ne s'agit donc pas d'un procédé unique à cette méthode.
Une version légèrement plus fiable, 8 octets
(un petit hommage à @ Dig ital Tra uma!)
Active le "mode de trace", ce qui obligera digéré à effectuer lui-même la recherche récursive (voir https://serverfault.com/a/778830 ), en évitant les problèmes de cache.
la source
man dig
: À moins qu'il ne soit demandé d'interroger un serveur de noms spécifique, dig essaiera chacun des serveurs répertoriés dans /etc/resolv.conf . Si aucune adresse de serveur utilisable n'est trouvée, dig enverra la requête à l' hôte local .Bash + utilitaires GNU, 8
L'autre réponse du shell vérifie le code de retour et renvoie en conséquence une sortie d'état. C'est inutile. Le code de retour du shell est déjà un code Truthy / Falsey utilisable et accessible dans le
$?
paramètre idiomatique pour bash. Le code de retour 0 signifie Vrai. Code retour> 0 signifie Faux.Utilisé:
la source
to.
plutôt que8.8.8.8
pour économiser beaucoup.to
que le résolveur est configuré pour trouver, il ira quand même vers le bon (et peut-être que cingler un localto
suffira-t-il à être connecté à Internet )to
parfois fonctionne et parfois pas. Je suppose qu'il y a du cache. Je vais utiliserto.
juste pour la sécurité.Lot, 8 octets
ping
sera régléERRORLEVEL
sur1
si l'adresse ne peut pas être résolue ou atteinte.la source
05AB1E ,
119 octets2 octets enregistrés sur "à". courtoisie de ev3commander
Vérifie si la longueur du contenu sur http: // to . est supérieur à 1.
.w
renvoie 0 en cas d'erreur.la source
MATL ,
1514 octetsUn octet économisé grâce à la suggestion de Kevin Cruijssen
La sortie se fait par STDOUT. Ceci affiche une chaîne non vide contenant des caractères différents de zéro (ce qui est vrai) s'il existe une connexion Internet; et n'affiche rien (ce qui est faux) s'il n'y a pas de connexion.
Cela ne peut pas être testé en ligne car ce
Xi
n'est pas autorisé dans les interprètes en ligne.Explication
la source
urlread('http://g.gl')
comme une réponse OK par lui-même? Cela entraînera une erreur et laissera l’espace de travail vide si la connexion est interrompue. Il affichera un message d'erreur, mais techniquement c'est à STDERR ...? Je pensais que c'était un peu exagéré, donc je l'ai fait de cette façon . Mais sautertry
semble donner le même résultat que votre code, ou? Vous laissez la pile vide aussi, n'est-ce pas? Bonne réponse au fait ... :)urlread('http://g.gl')
c'est valide (et identique à mon code), car STDERR est ignoré par défaut et qu'un STDOUT vide est falsifié dans MATLABftp
au lieu dehttp
- sauvegarder un autre octet?ftp
, semble ne pas fonctionner pour ce siteBash
666221 octetsMerci @Alex L. pour cette astuce de réduction d’URL.
Version non-golfée:
C’est ma première réponse dans Bash, je ne suis pas sûr d’avoir suffisamment raccourci le script.
la source
echo $?
au lieu de cette déclaration entière.;
dans la ligne de golf.echo $?
un0
if si il réussit, sinon il renvoie un2
dans ce cas. Je n'ai pas examiné le code source de la mise en œuvre de,ping
mais je suppose, il existe différents codes de retour en fonction de la situation. Par conséquent, j'ai utilisé laif else
stratégie.R, 20 octets
Il y a une fonction pour exactement cette tâche dans le
curl
paquet.la source
function() !is.null(nslookup("r-project.org", error = FALSE))
httr::url_ok('g.gl')
(quoique déconseillé).Java, 72 octets
la source
java.net.InetSocketAddress
Perl, 15 octets
Courir avec:
curl
les sortiesSTDERR
, ça ne les dérange pas. Si l'ordinateur a accès à Internet, il imprimera quelques lignes de code html (vérité), sinon, il n'imprimera rien (faux).Sauvegardé 1 octet en utilisant
to.
(au lieu de mon précédentb.io
) grâce à @Kevin Cruijssen.la source
print
?wget
au lieu de,curl
mais c'est la même chose)).C #, 87 octets
Si une exception est considérée comme étant falsey, ce que je ne pense pas, il s’agit alors de 65 octets:
J'ai également essayé d'utiliser le lien
http://to.
indiqué par @KevinCruijssen, mais cela ne semblait pas fonctionner.la source
8ème ,
2321 octetsDeux octets économisés grâce à la suggestion de Kevin Cruijssen et à ma découverte:http: // semble fonctionner aussi bien quehttp: // to . (sauvegarde d'un autre octet)
Si le site http: // to peut être atteint, il est ensuite imprimé
true
. Sinon, il imprimefalse
. Il laisse les données récupérées sur la pile.la source
MATLAB,
3222 octetsExplication:
Si la connexion Internet est active,
ans
la variable par défaut sera une chaîne contenant l'intégralité du code html en texte brut (ce qui est vrai dans MATLAB).Si la connexion Internet est en panne, un message d'erreur est écrit dans STDERR et l'espace de travail reste vide (ce qui est faux dans MATLAB).
Malheureusement,
urlread
nécessite une adresse URL complète , ceg.gl
n'est donc pas suffisant. 11 des 22 octets ne sont donc que l'adresse URL.Approche alternative:
Une solution qui intercepte l'erreur et laisse un 0 (également faux ) dans l'espace de travail si la connexion est interrompue:
0;
initialise la variable par défautans
à0
, qui se trouvefalse
dans MATLAB. Ensuite, noustry
lisons l’url. Cela donnera une erreur si la connexion Internet est en panne, ou un tableau de caractères sinon (qui esttrue
en MATLAB).Nous n'avons rien à attraper, alors nous terminons. Si l'appel urlread a abouti,
ans
une longue chaîne de caractères contenant le contenu du site Web sera sinonans=0
.la source
Bash, 39 octets
la source
! exec 4<>/dev/tcp/to./80;echo $?
exec 4<>/dev/tcp/to./80
JavaScript ES6,
7143 octetsAlertes 1 si en ligne, alerte une chaîne vide si hors ligne. Merci à Patrick Roberts de m'aider à réduire quelques octets
Ancienne version
Alertes
[object Reponse]
si en ligne, alertes0
si hors ligneSuppression de l'extrait de code, cela ne fonctionne pas car il se charge depuis un domaine différent sans CORS, mais cela fonctionne dans la console du navigateur.
la source
fetch('://to.').then(a=>alert(1)).catch(a=>alert(0))
JavaScript ES6,
9081 octetsJavaScript ES6,
2221 octets (non valide)Certains navigateurs ne prennent pas totalement en charge ou ne produisent pas le résultat attendu lorsque vous utilisez navigator.onLine.
la source
f=a=>
f=
.a=>{with(new Image()){src="//placehold.it/1x1";onload=b=>a(1);onerror=c=>a()}}´ (got rid of
f = `et utiliséwith(){}
)Scala, 54 octets
Assez simple; exécute une commande ping sur
http://ai./
et renvoie true s'il se termine par 0 ou false sinon.la source
Brainfuck (non-concurrent) 21 octets
Brainfuck ne peut pas se connecter à Internet (autant que je sache), aussi, comme le programme est incapable de se connecter, la réponse est toujours
0
Non compétitif, car il semble tomber sous la faille de la norme de sortie codée en dur , même si ce programme est techniquement correct pour le défi.
la source
Powershell,
642623 octets38 octets sauvés, merci à Shawn Esterman
Sauvegardé 3 octets, et script réparé, grâce à briantist
la source
to.
, vous devrez utiliser à lag.gl
place. De plus, vous pouvez le raccourcirTest-Connection -q g.gl
.PHP, 23PHP + Curl, 14En utilisant l'opérateur backtick de PHP:
Réponse originale:
Je vais essayer de commencer
Cela ne génère rien si x.gl ne peut pas être atteint et
Array
si c'est le cas.Une autre version où je ne suis pas tout à fait sûr de savoir si ça convient:
la source
"Array"
lorsque vous essayez de l'imprimer (<?=
) et que boolean false sera converti""
. Ainsi, la valeur de retour réelle n'est pas un tableau, mais une chaîne non vide ou une chaîne vide.if ("Array") echo 'thruthy';
serait prise donc c'est la vérité . La chaîne vide ne prendrait pas la branche et est donc falsey.Python 3 + requêtes,
595553 octetsIl doit y avoir une demande de réponse, non?
Le statut de sortie est 0 pour Internet, 1 pour pas d'Internet. Exemple:
Changelog:
la source
ftp
, peut-être) et en faisantexcept:0/0
.Elixir, 33 octets
0 si connecté, 1 sinon.
la source
PowerShell , 12 octets
la source
Mathematica 10 octets
En supposant que vous ayez une copie valide de Mathematica et des informations de connexion sur user.wolfram.com
écrira la valeur 1 dans le nuage. Truthy: CloudObject [""] Falsey: $ a échoué
Renverra la valeur 1 qui a été téléchargée dans le nuage.
la source
&
ensuite pour en faire une fonction non nommée.CloudPut@1&===$Failed
le & ne fait absolument aucune différence. Enfin, le programme renvoie et imprime la sortie. Il ne s’agit donc pas d’un extrait de code REPL comme vous le suggérez.Python 2.7, 70 à
77octetsUtilise 1 pour la vérité, 0 pour la fausseté. a.uk redirige vers une entreprise de vêtements moto. Sauvegardé 3 octets en assignant à une variable et en l’imprimant. Et un autre pour le "à". astuce (confirmé pour travailler avec urllib), deux pour se débarrasser des empreintes embêtantes.la source
from urllib import*
pourrait sauver un caractère (et laisser tomberl.
bien sûr).import
et*
donc je pense que vous avez raison, mais je suis sur mobile et je le réparerai plus tardJulia + Bash (with dnsutils), 10 octets
`command`
dans julia crée uncmd
objet qui peut être exécuté avecrun
.la source
Clojure, 49 octets
Retourne
1
s'il peut se connecter, etnil
sinon.Juste tente de
slurp
la page; lancer uneNoRouteToHostException
exception en cas d'échec, ce qui est pris.Malheureusement, le protocole et le point semblent être obligatoires.
la source
Javascript (Nashorn), 61 octets
Basé sur la réponse Java de Huntro.
la source