Kode program atau fungsi untuk membuat kanvas interaktif di layar dengan ukuran setidaknya 400 piksel x 400 piksel. Kanvas dapat berupa warna apa pun yang Anda inginkan, berbatasan atau tanpa batas, dengan atau tanpa bilah judul, dll., Hanya beberapa bentuk kanvas yang jelas.
Pengguna akan mengklik dua area kanvas yang berbeda dan program harus menampilkan jarak Euclidean (dalam piksel) antara dua klik tersebut dengan cara tertentu (STDOUT, menampilkan peringatan, dll.). Dua klik hanya bisa berupa klik kiri, hanya klik kanan, klik kiri untuk klik pertama dan kanan untuk klik kedua, dua klik kiri ganda, dll., Kombinasi apa pun dapat diterima. Catatan Khusus: Mengklik-dan-menyeret (misalnya, menggunakan MOUSEUP sebagai titik kedua) secara khusus tidak diizinkan; mereka harus dua klik berbeda.
Pengguna harus dapat melakukan ini beberapa kali, dan harus mendapatkan output setiap kali, sampai program ditutup / dicabut-paksa / dibunuh / dll. Anda dapat memilih metode penutupan (mengklik X, ctrl-C, dll.), Apa pun yang golfier untuk kode Anda.
Aturan
- Program lengkap atau fungsi dapat diterima. Namun, jika suatu fungsi, Anda tetap harus menampilkan output ke pengguna (hanya mengembalikan nilai tidak dapat diterima).
- Output bisa ke konsol, ditampilkan sebagai peringatan, diisi ke kanvas, dll.
- Celah standar dilarang.
- Ini adalah kode-golf sehingga semua aturan golf biasa berlaku, dan kode terpendek (dalam byte) menang.
sumber
n
kali,n-1
alih-alihfloor(n/2)
angka dicetak) Apakah itu diizinkan?Jawaban:
LOGO ( FMSLogo ),
5452 byteSayangnya, saya tidak dapat menemukan penerjemah logo dukungan penerjemah mouse online seperti FMSLogo.
Ini adalah "template slot eksplisit", yang mirip dengan lambda dalam bahasa pemrograman lain. Klik kiri mouse untuk titik pertama dan kanan mouse untuk titik kedua (jarak cetak).
Penjelasan: (Logo adalah bahasa pemrograman grafis penyu)
Ini
"
adalah kata kosong. Biasanya templat diharapkan menjadi daftar (di mana[]
, daftar kosong, tidak melakukan apa-apa), memberikan kata dapat diterima (dibungkus dalam daftar), dan dalam hal ini menyimpan 2 byte.Menjalankan:
Ini
apply
adalah salah satu cara untuk menjalankan template di Logo,[]
daftar argumen is, di mana template tidak menerima.sumber
Mathematica, 94 byte
Kanvas adalah gambar skala abu-abu acak, klik pertama harus berupa klik kiri dan yang kedua klik kanan. Perilaku sebenarnya adalah klik kanan yang mencetak jarak ke klik terakhir (kiri atau kanan), jadi jika Anda menggunakan klik kanan berulang kali, Anda juga bisa mendapatkan jarak yang berurutan.
Hasilnya tepat, sehingga mungkin berisi akar kuadrat.
Jika resolusi webcam Anda setidaknya 400x400, Anda bisa menggunakan
CurrentImage[]
alih-alih1~RandomImage~400
untuk kanvas Anda, menghemat 3 byte.sumber
Java 8,
469389388385380357348325 byteAkan lebih pendek dengan AWT, tapi saya belum pernah menggunakannya.sumber
true
bisa saja0<1
.main(String args[])
tidak mungkinmain(String[]Z)
?{F f=new F();}
bisa{new F();}
.setVisible(0<1);
dapat dihapus, dan Anda dapat menambahkan.show()
ke Frame;println
bisaprint
.Java (OpenJDK 8) , 282 byte
Saya tidak dapat menguji ini sekarang; jika seseorang bisa memberi tahu saya jika ada kesalahan kompiler yang akan bagus.
AWT mungkin akan lebih pendek tetapi saya membutuhkan IDE sebenarnya untuk lol itu. Saya belum pernah menggunakan AWT sebelumnya tetapi saya bisa membuatnya bekerja jika saya memiliki IDE. Saya bisa menggunakan dokumen tetapi itu benar-benar sulit lol-10 byte menggunakan AWT terima kasih kepada Kevin Cruijssen
-44 byte menggunakan blok inisialisasi; dikembangkan secara independen dari Roberto Graham meskipun sekarang saya melihat bahwa mereka melakukan hal yang sama, saya pikir
-6 byte menggabungkan beberapa deklarasi berkat Kevin
-11 byte menggunakan
interface
terima kasih kepada Kevin-35 byte menghilangkan beberapa variabel yang tidak perlu berkat mellamokb
-9 byte menghapus impor yang tidak perlu dan menggunakan nama yang memenuhi syarat berkat mellamokb
-44 byte berkat mellamokb dan aditsu
sumber
TI-Basic (TI-84 Plus CE), 49 byte (45 token) (mungkin tidak bersaing)
-7 byte dengan saran dari kamoroso94
Pengguna tidak 'mengklik' per se, tetapi bergerak di sekitar kursor pada layar grafik dengan tombol panah dan klik
enter
untuk memilih titik, dan gerakan terkecil adalah ~ 1,5 untuk x dan ~ 2,4 untuk y.Penjelasan:
sumber
8³
yang lebih besar dari 400 tetapi kurang satu byte.Disp
garis dengan dua byte dengan{X-A,Y-B:Disp √(sum(Ans²
(titik dua atau baris jelas bekerja).8^2
, jumlah byte yang sama?8^2
(8 kuadrat) adalah 64 dan kurang dari 400. Saya katakan8³
(8 potong dadu) yang lebih besar dari 400 dan menggunakan dua token, masing-masing satu byte:8
dan³
.JavaScript (ES6) + HTML, 58 byte
Halaman web itu sendiri berfungsi sebagai "kanvas" yang dimaksud; Saya pikir cukup aman untuk mengasumsikan jendela browser setidaknya 400x400 piksel.
JavaScript (ES6) + HTML, 51 byte
Kita dapat menyimpan 7 byte jika kita mengabaikan
NaN
output pada klik pertama. ( @Nate )JavaScript (ES6) + HTML + CSS, 58 + 0 + 13 = 71 byte
Sunting : Dengan tambahan 13 byte CSS, kami dapat memastikan area gulir akan cukup besar untuk memenuhi persyaratan 400x400.
sumber
Memproses / Java, 149 byte
Cukup mudah, menggunakan 2 variabel global dan 3 fungsi bawaan untuk melakukan semuanya.
sumber
Processing.org 126
sumber
Python 2, 144
Mencetak jarak antara klik terakhir (yang pertama mencetak jarak dari 400.400).
sumber
Autohotkey, 146 byte
Anda akan berpikir bahasa yang dibangun khusus untuk menangkap dan mensimulasikan tindakan keyboard dan mouse akan lebih efisien pada tantangan ini ...
Ini menciptakan jendela dengan kotak teks 400 x 400 piksel dengan batas untuk membuatnya jelas. Tanpa perbatasan, ada ruang di sekitar tepi yang ada di jendela tetapi di luar kotak teks dan Anda tidak bisa mengatakannya. Menambahkan perbatasan adalah cara terpendek untuk membedakannya. The
gC
pilihan membuatnya berjalan subroutineC
setiap kali Anda klik pada kotak teks. Urutan perintah adalah, oleh karena itu, Klik Kiri diikuti oleh Klik Kiri berbeda.Saya menemukan solusi lain yang 144 byte tetapi memungkinkan klik di seluruh layar, bukan hanya di "kanvas jelas". Menjengkelkan untuk mengakhiri karena baik klik kiri maupun kanan ditangkap dan tidak berakhir saat Anda menutup GUI.
sumber
Python 2 ( TigerJython ),
125123 byteTigerJython hadir dengan kanvas ukuran standar (800x, 600y).
Ini memunculkan gambar kura-kura sementara untuk setiap titik 'mulai' yang diklik, yang menghilang setelah titik 'mulai' berikutnya dipilih. Perilaku ini disetujui oleh OP.
sumber
SmileBASIC, 86 byte
Menggunakan layar sentuh untuk input.
sumber
Java 8, 228 byte
Berikut adalah solusi Java yang menggunakan metode AWT yang sudah usang
mouseDown
yang harus Anda gali lebih dalam ke API untuk menemukannya. Saya hanya mengetahuinya karena kursus pemrograman yang saya ambil sebagai mahasiswa sekolah menengah atas, dan salah satu proyeknya adalah membuat program cat kecil menggunakan metode itu dan yang serupa. Saya tidak pernah berpikir saya punya alasan yang bagus untuk menggunakannya sampai sekarang.sumber
Tcl / Tk, 94
104sumber