Напишите программу, которая в зависимости от того, имеет ли сценарий доступ к Интернету, выдает результат «Правда / Ложь» . Вы можете попытаться подключиться к любому существующему сайту по своему усмотрению (не используйте сомнительный сайт, у которого только 10% времени безотказной работы - старайтесь поддерживать более 80% годового времени безотказной работы). Если сайт не работает, ваша программа не не имеет к работе.
Это должна быть отдельная программа или функция . Вы можете использовать библиотеки за пределами стандартной библиотеки для достижения этой цели. Стандартные лазейки запрещены. Это код гольф, поэтому выигрывает код с самым коротким числом байтов.
Пример псевдокода:
function a:
try:
connect to internet
return 1
catch error:
return 0
Это мой первый пост о коде гольфа, поэтому, если он каким-либо образом нарушает какие-либо правила или является обманом, пожалуйста, предупредите меня.
РЕДАКТИРОВАТЬ: из-за многочисленных предложений, я снял ограничение на количество байтов UTF-8
источник
true
иfalse
я рекомендую разрешить любые наши значения по умолчанию для правдивости и ложности . Кроме того, под интернетом вы подразумеваете сеть за пределами вашей локальной сети? Программы все еще должны работать, если, скажем, Google не работает или любой другой большой сайт?g.gl
/http://g.gl/
, ноto.
/http://to./
кажется на один байт короче (не все языки видят это как действительный URL-адрес).PRINT "0"
Ответы:
Баш (с днсутилс ), 3 байта
Отправляет DNS-запрос на "." (DNS root), код выхода равен 0 для успеха и> 0 в противном случае.
Golfed
Контрольная работа
отказ
Очевидно, это будет работать только в том случае, если ваш DNS- сервер находится в сети провайдера, то есть в «Интернете» (поскольку сеть вашего провайдера обычно является его частью), или если ваша система использует общедоступный DNS-сервер (например, 8.8.8.8). от Google, которую используют системы на базе Android), иначе вы можете получить кэшированную копию с сервера локальной сети (или локального хоста).
Но я предполагаю, что это не противоречит правилам игры в гольф , так как очевидно, что существует несколько систем, в которых это работает, как задумано.
Методы Pure-HTTP также могут давать ложные срабатывания из-за промежуточного прокси-сервера кэширования и не гарантируют, что они будут работать везде, так что это не является чем-то уникальным для этого метода.
Чуть более надежная версия, 8 байт
(Небольшая дань @ Dig ital Tra uma!)
Включает «режим трассировки», который заставляет dig самостоятельно выполнять рекурсивный поиск (см. Https://serverfault.com/a/778830 ), избегая проблем с кешем.
источник
man dig
: Если не указано запрашивать конкретный сервер имен, dig попробует каждый из серверов, перечисленных в /etc/resolv.conf . Если не найдено доступных адресов серверов, dig отправит запрос на локальный хост .Утилиты Bash + GNU, 8
Другие ответы оболочки проверяют код возврата и выводят соответствующий вывод состояния. Это не нужно. Код возврата оболочки уже является пригодным для использования кодом Truthy / Falsey и доступен в
$?
параметре, который идиоматичен для bash. Код возврата 0 означает True. Код возврата> 0 означает Ложь.В использовании:
источник
to.
а не8.8.8.8
, чтобы сэкономить довольно много.to
который распознаватель сконфигурирован для поиска, он все равно перейдет на правильный (и, возможно,to
достаточноto
иногда работает, а иногда нет. Я предполагаю, что происходит некоторое кеширование. Я буду использоватьto.
только для безопасности.Пакетный, 8 байт
ping
будет установленERRORLEVEL
в1
случае , если адрес не может быть разрешен или достигнут.источник
05AB1E ,
119 байтовСохранено 2 байта на «к». предоставлено ev3commander
Проверяет, если длина содержимого в http: // to . больше 1.
.w
возвращает 0 при ошибке.источник
MATL ,
1514 байтовОдин байт сохранен благодаря Kevin Cruijssen внушения «s
Выход через STDOUT. Это отображает непустую строку, содержащую ненулевые символы (что правда), если есть подключение к Интернету; и ничего не отображает (что ложно), если нет соединения.
Это не может быть проверено онлайн, потому что
Xi
в онлайн-переводчиках это запрещено.объяснение
источник
urlread('http://g.gl')
хорошим ответом сам по себе? Это приведет к ошибке и оставит рабочее пространство пустым, если соединение не работает. Он будет отображать сообщение об ошибке, но технически это STDERR ...? Я думал, что это немного растянуто, поэтому я сделал это таким образом . Но пропуск,try
кажется, дает тот же результат, что и ваш код, или? Ты тоже оставляешь стек пустым? Хороший ответ, кстати ... :)urlread('http://g.gl')
это допустимо (и то же самое, что и мой код), так как STDERR по умолчанию игнорируется, а пустой STDOUT является ложным в MATLABftp
вместоhttp
- сохранить еще один байт?ftp
, похоже, что это не работает для этого сайтаБаш
666221 байтСпасибо @Alex L. за совет по сокращению URL.
Безголовая версия:
Это мой первый ответ на Bash, я не уверен, что достаточно сократил сценарий.
источник
echo $?
вместо этого целого заявления if.;
в линии гольфа.echo $?
печатает,0
если успешно, иначе он возвращает2
в этом случае. Я не смотрел в исходный код реализации,ping
но я предполагаю, что есть разные коды возврата в зависимости от стуации. Следовательно, я использовалif else
стратегию.R, 20 байтов
В
curl
пакете есть функция именно для этой задачи .источник
function() !is.null(nslookup("r-project.org", error = FALSE))
httr::url_ok('g.gl')
(хотя и не рекомендуется).Java, 72 байта
источник
java.net.InetSocketAddress
Perl, 15 байт
Бежать с:
curl
выводит вещи на себяSTDERR
, не обращайте на них внимания. Если компьютер имеет доступ к Интернету, он напечатает несколько строк html (правда), в противном случае он ничего не напечатает (ложь).Сохранено 1 байт с помощью
to.
(вместо моего предыдущегоb.io
) благодаря @Kevin Cruijssen.источник
print
?wget
вместо,curl
но это одно и то же)).C #, 87 байт
Если исключение считается ложным, чего я не считаю, то это 65 байт:
Я также попытался использовать ссылку,
http://to.
как заявлено @KevinCruijssen, но, похоже, она не работает.источник
8 ,
2321 байтДва байта сохраняется благодаря Kevin Cruijssen по предложению и к моему открытию:http: // to, кажется, работает так же хорошо, какhttp: // to . (сохранение другого байта)
Если сайт http: // to может быть достигнут, он печатает
true
. В противном случае это печатаетfalse
. Он оставляет полученные данные в стеке.источник
MATLAB,
3222 байтаОбъяснение:
Если подключение к Интернету установлено, это приведет к тому, что
ans
(переменная по умолчанию) будет строкой со всем html-кодом в виде простого текста (что верно в MATLAB).Если подключение к Интернету не работает, это выведет сообщение об ошибке в STDERR и оставит рабочее пространство пустым (что неверно в MATLAB).
К сожалению,
urlread
требуется полный URL-адрес , поэтомуg.gl
не достаточно. Таким образом, 11 из 22 байтов являются просто URL-адресом.Альтернативный подход:
Решение, которое улавливает ошибку и оставляет 0 (также false ) в рабочей области, если соединение не работает:
0;
инициализирует переменнуюans
по умолчанию0
, которая находитсяfalse
в MATLAB. Тогда мы будемtry
читать URL. Это выдаст ошибку, если интернет-соединение не работает, или символьный массив, если нет (который находитсяtrue
в MATLAB).Нам не нужно ничего ловить, поэтому мы просто заканчиваем. Если вызов urlread прошел успешно,
ans
в противном случае будет длинная строка с содержимым сайтаans=0
.источник
Баш, 39 байт
источник
! exec 4<>/dev/tcp/to./80;echo $?
exec 4<>/dev/tcp/to./80
JavaScript ES6,
7143 байтаОповещения 1, если онлайн, оповещения о пустой строке, если офлайн. Спасибо Патрику Робертсу за помощь в сборе некоторых байтов
Старая версия
Оповещения,
[object Reponse]
если онлайн, оповещения,0
если офлайнУдален фрагмент кода, он не работает, потому что загружается из другого домена без CORS, но работает в консоли браузера
источник
fetch('://to.').then(a=>alert(1)).catch(a=>alert(0))
JavaScript ES6,
9081 байтJavaScript ES6,
2221 байт ( неверно )Некоторые браузеры не полностью поддерживают или дают ожидаемый результат при использовании navigator.onLine.
источник
f=a=>
f=
.a=>{with(new Image()){src="//placehold.it/1x1";onload=b=>a(1);onerror=c=>a()}}´ (got rid of
f = `и используетсяwith(){}
)Scala, 54 байта
Довольно просто; выполняет команду ping
http://ai./
и возвращает true, если она завершается с 0, или false в противном случае.источник
Brainfuck (неконкурентный) 21 байт
Brainfuck не может подключиться к Интернету (насколько я знаю), поэтому, поскольку программа не может подключиться, ответ всегда
0
Не конкурирует, потому что кажется, что попадает под жестко закодированную стандартную лазейку вывода , даже если эта программа технически подходит для этой задачи.
источник
Powershell,
642623 байтаСохранено 38 байтов, благодаря Шону Эстерману
Сохранено 3 байта и исправлен скрипт, спасибо briantist
источник
to.
, вам придется использоватьg.gl
вместо этого. Кроме того, вы можете сократить его доTest-Connection -q g.gl
.PHP, 23PHP + Curl, 14Использование оператора обратного вызова PHP:
Оригинальный ответ:
Я постараюсь начать:
Это ничего не выдает, если x.gl не может быть достигнуто и
Array
если это так.Другая версия, где я не совсем уверен, подходят ли они:
источник
"Array"
когда вы пытаетесь распечатать его (<?=
) и логическое значение false будет преобразовано в""
. Таким образом, фактическим возвращаемым значением является не массив, а непустая строка или пустая строка.if ("Array") echo 'thruthy';
будет взята, поэтому это правда . Пустая строка не займет ветку и, следовательно, будет ложной.Python 3 + запросы,
595553 байтаДолжен быть ответ на запросы, верно?
Состояние выхода 0 для интернета, 1 для интернета нет. Пример:
Changelog:
источник
ftp
возможно) и выполнивexcept:0/0
.Эликсир, 33 байта
0, если подключен, 1 в противном случае.
источник
PowerShell , 12 байт
источник
Mathematica 10 байт
Предполагая, что у вас есть действительная копия Mathematica и учетные данные для входа на user.wolfram.com
запишет значение 1 в облако. Правда: CloudObject [""] Falsey: $ Failed
Вернет значение 1, которое было загружено в облако.
источник
&
потом, чтобы превратить его в неназванную функцию.CloudPut@1&===$Failed
& нет абсолютно никакой разницы. Наконец, программа возвращает и печатает выходные данные, так что на самом деле это не фрагмент REPL, как вы предлагаете.Python 2.7, 70
77байтИспользует 1 для правдивых, 0 для ложных. a.uk перенаправляет в компанию по производству мотоциклетной одежды. Сохранено 3 байта путем присвоения переменной и ее печати. И еще один для "до". трюк (подтвержденный для работы с urllib), два для избавления от надоедливых отступов.источник
from urllib import*
может сохранить символ (и,l.
конечно, падение ).import
и*
поэтому я думаю, что вы правы, но я нахожусь на мобильном телефоне, и я исправлю это позжеЮлия + Баш (с днсутилсом), 10 байт
`command`
В Джулии создаетcmd
объект, который может быть запущен сrun
.источник
Clojure, 49 байтов
Возвращает,
1
если он может подключиться, и вnil
противном случае.Просто попытки
slurp
на страницу; выбрасыватьNoRouteToHostException
исключение при неудаче, которая ловится.К сожалению, протокол и точка кажутся обязательными.
источник
Javascript (Нашорн), 61 байт
Основано на ответе Хантро на Java.
источник