Tulis sebuah program yang, sesuai dengan apakah skrip memiliki akses ke internet, menghasilkan output yang "Truthy / Falsey" . Anda dapat mencoba dan terhubung ke situs yang ada, atas kebijakan Anda sendiri (jangan gunakan situs teduh yang hanya memiliki 10% uptime - cobalah untuk tetap di atas 80% uptime tahunan). Jika situs tidak aktif, program Anda tidak harus berfungsi.
Itu harus program mandiri atau fungsi . Anda dapat menggunakan perpustakaan di luar perpustakaan standar untuk mencapai ini. Celah standar dilarang. Ini adalah kode golf, jadi kode dengan byte-count terpendek akan menang.
Contoh pseudocode:
function a:
try:
connect to internet
return 1
catch error:
return 0
Ini adalah posting pertama saya di golf kode, jadi jika ini melanggar aturan dengan cara apa pun atau merupakan penipuan, harap beri tahu saya.
EDIT: Karena banyak saran, saya telah menghapus batasan jumlah byte UTF-8
sumber
true
danfalse
, saya sarankan mengizinkan salah satu default kami untuk kebenaran dan kepalsuan . Juga, melalui internet, maksud Anda jaringan di luar jaringan lokal Anda? Apakah program masih harus berfungsi jika katakan saja Google sedang down atau situs besar lainnya?g.gl
/http://g.gl/
, tetapito.
/http://to./
tampaknya satu byte lebih pendek (tidak semua bahasa melihatnya sebagai url yang valid sampai).PRINT "0"
Jawaban:
Bash (dengan dnsutils ), 3 byte
Mengirim permintaan DNS untuk "." (DNS root), kode keluar adalah 0 untuk sukses dan> 0 sebaliknya.
Golf
Uji
Penolakan
Ini jelas hanya akan berfungsi jika server DNS Anda duduk di jaringan penyedia, yaitu di "Internet" (karena jaringan penyedia Anda biasanya merupakan bagian dari itu), atau jika sistem Anda menggunakan server DNS publik (seperti 8.8.8.8 dari Google, yang menggunakan sistem berbasis Android), karena jika tidak, Anda bisa mendapatkan salinan cache dari server LAN lokal (atau localhost).
Tapi saya berasumsi ini tidak melanggar aturan kode-golf , karena jelas ada lebih dari satu sistem di mana ini berfungsi sebagaimana dimaksud.
Metode Pure-HTTP juga dapat memberikan hasil positif palsu, karena proxy caching perantara, dan tidak dijamin untuk bekerja di mana-mana, sehingga bukan sesuatu yang unik untuk metode ini.
Versi yang sedikit lebih andal, 8 byte
(sedikit upeti ke @ Dig ital Tra uma!)
Mengaktifkan "mode jejak", yang akan memaksa penggalian untuk melakukan pencarian rekursif dengan sendirinya (lihat https://serverfault.com/a/778830 ), menghindari masalah cache.
sumber
man dig
: Kecuali diminta untuk menanyakan server nama tertentu, gali akan mencoba setiap server yang terdaftar di /etc/resolv.conf . Jika tidak ada alamat server yang dapat digunakan ditemukan, dig akan mengirimkan permintaan ke host lokal .Utilitas Bash + GNU, 8
Shell yang lain menjawab memeriksa kode kembali dan mengulangi beberapa keluaran status yang sesuai. Ini tidak perlu. Kode pengembalian shell sudah menjadi kode Truthy / Falsey yang dapat digunakan dan dapat diakses di
$?
parameter yang idiomatis untuk bash. Kode pengembalian 0 berarti Benar. Kode pengembalian> 0 berarti Salah.Digunakan:
sumber
to.
bukan8.8.8.8
, untuk menyimpan cukup banyak.to
yang resolver dikonfigurasi untuk menemukan, itu masih akan pergi ke yang benar (dan mungkin bisa ping lokalto
sudah cukup terhubung ke internet )to
terkadang berfungsi dan kadang tidak. Saya kira beberapa caching terjadi. Saya akan gunakanto.
hanya untuk keamanan.Batch, 8 byte
ping
akan diaturERRORLEVEL
ke1
jika alamat tidak dapat diselesaikan atau dicapai.sumber
05AB1E ,
119 byteDisimpan 2 byte pada "ke." milik ev3commander
Cek apakah panjang konten di http: // hingga . lebih besar dari 1.
.w
mengembalikan 0 pada kesalahan.sumber
MATL ,
1514 byteSatu byte diselamatkan berkat Kevin Cruijssen saran 's
Output melalui STDOUT. Ini menampilkan string tidak kosong yang berisi karakter bukan nol (yang benar) jika ada koneksi Internet; dan tidak menampilkan apa pun (yang palsu) jika tidak ada koneksi.
Ini tidak dapat diuji secara online karena
Xi
tidak diperbolehkan dalam juru bahasa online.Penjelasan
sumber
urlread('http://g.gl')
sebagai jawaban yang oke? Ini akan membuat kesalahan dan membiarkan ruang kerja kosong jika koneksi terputus. Ini akan menampilkan pesan kesalahan, tetapi secara teknis itu untuk STDERR ...? Saya pikir itu sedikit peregangan, jadi saya melakukannya dengan cara ini . Tetapi melewatkantry
sepertinya memberikan hasil yang sama dengan kode Anda, atau? Anda meninggalkan tumpukan kosong juga bukan? Ngomong-ngomong, jawaban yang bagus ... :)urlread('http://g.gl')
ini valid (dan sama dengan kode saya), karena STDERR diabaikan secara default, dan STDOUT yang kosong palsu di MATLABftp
bukannyahttp
menyimpan byte lain?ftp
sepertinya tidak berfungsi untuk situs ituBash
666221 byteTerima kasih @Alex L. untuk tip pemendek URL.
Versi tidak disatukan:
Ini adalah jawaban pertama saya di Bash, saya tidak yakin saya telah memperpendek skrip.
sumber
echo $?
pernyataan itu jika keseluruhan.;
di garis golf.echo $?
mencetak0
jika berhasil, atau yang dikembalikan2
dalam kasus ini. Saya belum melihat ke dalam kode sumber dari implementasiping
tetapi saya berasumsi, ada kode pengembalian yang berbeda tergantung pada perhitungan. Karenanya, saya menggunakanif else
strategi.R, 20 byte
Ada fungsi untuk tugas ini dalam
curl
paket.sumber
function() !is.null(nslookup("r-project.org", error = FALSE))
httr::url_ok('g.gl')
(meskipun sudah usang).Java, 72 byte
sumber
java.net.InetSocketAddress
Perl, 15 byte
Jalankan dengan:
curl
menampilkan barangSTDERR
, jangan pedulikan mereka. Jika komputer memiliki akses ke internet, ia akan mencetak beberapa baris html (benar), jika tidak, ia tidak akan mencetak apa pun (falsy).Disimpan 1 byte dengan menggunakan
to.
(bukan milik saya sebelumnyab.io
) berkat @Kevin Cruijssen.sumber
print
?wget
bukancurl
tapi itu hal yang sama)).C #, 87 byte
Jika pengecualian dianggap falsey, yang menurut saya tidak, maka ini adalah 65 byte:
Saya juga mencoba menggunakan tautan
http://to.
seperti yang dinyatakan oleh @KevinCruijssen tetapi tampaknya tidak berhasil.sumber
8 ,
2321 byteDua byte disimpan berkat saran Kevin Cruijssen dan penemuan saya:http: // tampaknya berfungsi jugahttp: // ke . (menyimpan byte lain)
Jika situs http: // dapat dijangkau, maka situs tersebut akan dicetak
true
. Kalau tidak mencetakfalse
. Itu meninggalkan data yang diambil di stack.sumber
MATLAB,
3222 bytePenjelasan:
Jika koneksi internet naik, ini akan menghasilkan
ans
(variabel default) menjadi string dengan seluruh kode-html dalam teks biasa (yang benar dalam MATLAB).Jika koneksi internet mati, ini akan menulis pesan kesalahan ke STDERR dan membiarkan ruang kerja kosong (yang salah di MATLAB).
Sayangnya,
urlread
memerlukan url-address lengkap , jadig.gl
tidak cukup. Oleh karena itu 11 dari 22 byte hanyalah alamat-url.Pendekatan alternatif:
Solusi yang menangkap kesalahan dan meninggalkan 0 (juga salah ) di ruang kerja jika koneksi terputus:
0;
menginisialisasi variabel defaultans
menjadi0
, yang adafalse
di MATLAB. Kemudian kitatry
membaca url. Ini akan memberikan kesalahan jika koneksi internet turun, atau array karakter jika tidak (yang adatrue
di MATLAB).Kita tidak perlu menangkap apa pun, jadi kita berakhir saja. Jika panggilan urlread berhasil, maka
ans
akan menjadi string panjang dengan konten situs web, jika tidakans=0
.sumber
Bash, 39 byte
sumber
! exec 4<>/dev/tcp/to./80;echo $?
exec 4<>/dev/tcp/to./80
JavaScript ES6,
7143 byteLansiran 1 jika online, beri tahu string kosong jika offline. Terima kasih kepada Patrick Roberts karena membantu saya mencukur beberapa byte
Versi lama
Lansiran
[object Reponse]
jika online, lansiran0
jika offlineMenghapus cuplikan kode, tidak berfungsi karena memuat dari domain lain tanpa CORS, tetapi bekerja di konsol browser
sumber
fetch('://to.').then(a=>alert(1)).catch(a=>alert(0))
JavaScript ES6,
9081 BytesJavaScript ES6,
2221 byte (Tidak Valid)Beberapa browser tidak sepenuhnya mendukung, atau menghasilkan hasil yang diharapkan saat menggunakan navigator.onLine.
sumber
f=a=>
f=
.a=>{with(new Image()){src="//placehold.it/1x1";onload=b=>a(1);onerror=c=>a()}}´ (got rid of
f = `dan digunakanwith(){}
)Scala, 54 byte
Cukup mudah; mengeksekusi perintah ping
http://ai./
, dan mengembalikan true jika keluar dengan 0, atau false sebaliknya.sumber
Brainfuck (tidak bersaing) 21 byte
Brainfuck tidak dapat terhubung ke internet (sejauh yang saya ketahui), jadi karena program ini tidak dapat terhubung, jawabannya selalu
0
Non-bersaing karena tampaknya berada di bawah celah standar keluaran hard-coded , meskipun program ini secara teknis tepat untuk tantangan.
sumber
Powershell,
642623 byteDisimpan 38 byte, terima kasih kepada Shawn Esterman
Disimpan 3 byte, dan skrip diperbaiki, terima kasih kepada briantist
sumber
to.
, Anda harus menggunakannyag.gl
. Selain itu Anda dapat mempersingkatTest-Connection -q g.gl
.PHP, 23PHP + Curl, 14Menggunakan operator backtick PHP:
Jawaban orisinal:
Saya akan mencoba memulai:
Ini menghasilkan apa-apa jika x.gl tidak dapat dijangkau dan
Array
jika itu.Versi lain di mana saya tidak yakin apakah mereka cocok:
sumber
"Array"
ketika Anda mencoba mencetaknya (<?=
) dan boolean false akan dikonversi menjadi""
. Jadi nilai pengembalian sebenarnya bukan array tetapi string yang tidak kosong atau string kosong.if ("Array") echo 'thruthy';
akan karena itu diambil itu truthy . String kosong tidak akan mengambil cabang dan karena itu falsey.Python 3 + permintaan,
595553 byteHarus ada jawaban permintaan, kan?
Status keluar adalah 0 untuk internet, 1 untuk tidak ada internet. Contoh:
Changelog:
sumber
ftp
, mungkin), dan melakukanexcept:0/0
.Elixir, 33 byte
0 jika terhubung, 1 sebaliknya.
sumber
PowerShell , 12 byte
sumber
Mathematica 10 Bytes
Dengan asumsi Anda memiliki salinan Mathematica yang valid, dan masuk kredensial di user.wolfram.com
akan menulis nilai 1 ke cloud. Truthy: CloudObject [""] Falsey: $ Failed
Akan mengembalikan nilai 1 yang diunggah ke cloud.
sumber
&
setelahnya untuk membuatnya menjadi fungsi yang tidak disebutkan namanya.CloudPut@1&===$Failed
& sama sekali tidak ada perbedaan. Terakhir, program mengembalikan dan mencetak hasilnya, jadi sebenarnya bukan potongan REPL seperti yang Anda sarankan.Python 2.7, 70
77BytesGunakan 1 untuk truey, 0 untuk falsy. a.uk dialihkan ke perusahaan pakaian sepeda motor. Disimpan 3 byte dengan menetapkan ke variabel dan mencetaknya. Dan satu lagi untuk "untuk." trik (dikonfirmasi untuk bekerja dengan urllib), dua untuk menghilangkan indentasi sial.sumber
from urllib import*
bisa menyelamatkan char (dan dropl.
saja).import
dan*
jadi saya pikir Anda benar tapi saya sedang mobile dan saya akan memperbaikinya nantiJulia + Bash (dengan dnsutils), 10 byte
`command`
di julia menciptakancmd
objek yang bisa dijalankanrun
.sumber
Clojure, 49 byte
Kembali
1
jika dapat terhubung, dannil
sebaliknya.Hanya mencoba ke
slurp
halaman; melemparNoRouteToHostException
pengecualian pada kegagalan, yang tertangkap.Sayangnya, protokol dan titik tampaknya wajib.
sumber
Javascript (Nashorn), 61 byte
Berdasarkan jawaban Java Huntro.
sumber