The Reuleaux segitiga adalah bentuk yang dibentuk oleh persimpangan tiga lingkaran, dengan masing-masing lingkaran yang melalui pusat-pusat yang lain. Terlepas dari rotasi, lebar segitiga Reuleaux akan selalu sama dengan jari-jari lingkaran:
Gambar: Wolfram MathWorld
Tulis program yang mengambil lebar r
sebagai input dan menampilkan segitiga Reuleaux dengan lebar itu (dalam piksel).
Anda harus menampilkan bentuk secara terpisah, yaitu diisi penuh, tidak dibelai, dan di atas latar belakang yang terisi penuh.
code-golf - Program terpendek dalam byte yang menang.
code-golf
graphical-output
geometry
Darrylyeo
sumber
sumber
r
dalam piksel atau hanya beberapa faktor penskalaan?Jawaban:
JavaScript + HTML,
164158 + 13 = 171 byteSaya tidak tahu mengapa saya menikmati menjawab tantangan menggambar yang sulit ini dengan
<canvas>
begitu banyak ...sumber
Love2D, 320 byte.
Mungkin bukan solusi optimal, ia menggunakan stensil Love2D, mengatur 3 lingkaran, dan mengisi di mana mereka berpotongan.
Panggil melalui baris perintah, seperti
love tri.love 256
Contoh Output
sumber
Python 2 , 111 byte
sumber
Mathematica
10110098 BytesMengambil pendekatan yang berbeda dari @MichaelSeifert, dan mungkin menafsirkan ini sedikit lebih harfiah sehubungan dengan klausa piksel:
Contoh Penggunaan:
10 piksel
50 piksel
100 piksel
Menyimpan satu byte berkat @MartinEnder (notasi infiks) dan 2 byte lainnya dengan mendefinisikan d.
sumber
PHP + SVG, 165 byte
Contoh Output untuk Input 128
sumber
PostScript,
968685757372 byteMengambil input sebagai nilai pada stack.
^^
dan^@
mewakili karakter kontrol literal.(^@^^Z<^@Z<)
adalah string karakter dengan titik kode 0, 30, 90, 60, 0, 90, dan 60, masing-masing. Itu kemudian ditafsirkan sebagai sudut dalam derajat, karena jelas itulah gunanya poin kode.Disimpan 10 byte karena
closepath
tidak diperlukan (keduanyaclip
danfill
secara implisit menutup jalur).Disimpan 1 byte dengan menggunakan
repeat
alih-alih mendefinisikan fungsi.Disimpan 10 byte dengan beralih ke pendekatan yang sama sekali berbeda.
Disimpan 2 byte dengan melakukan trik-trik dengan stack.
Disimpan 1 byte dengan menggunakan
0 1 2{}for
bukan3{}repeat
.sumber
Mathematica,
134131 byteNB Solusi ini tidak lagi valid, karena pertanyaannya kemudian diedit untuk meminta r diukur dalam piksel. Terima kasih kepada Martin Ender karena membantu saya mengurangi beberapa byte dalam komentar.
Nilai input harus diskalakan antara 0 dan 1 agar kode ini berfungsi. Perhatikan bahwa hampir seperempat dari kode ini diperlukan untuk menampilkan bentuk "dalam isolasi", karena ini bukan standar Mathematica.
sumber
r Exp[2 I Pi n/3]
bisaExp[2I n/3Pi]r
untuk menghemat beberapa ruang. Dan umumnya lebih singkat untuk menulis fungsi yang tidak disebutkan namanya, yaitu jatuhkanr=Input[];
, gantir
dengan#
dan tambahkan a&
.BBC BASIC, 58 byte
Unduh juru bahasa di http://www.bbcbasic.co.uk/bbcwin/download.html
Tidak disatukan
sumber
TeX / TikZ,
128121112 byteKode ini didasarkan pada jawaban ini di TeX.se .
TeX berbasis vektor, jadi tidak melakukan piksel. Jari-jari adalah pelampung dengan maksimum sekitar 15 sebelum menyentuh tepi halaman. Itu juga tidak benar-benar dibangun untuk input commandline, jadi perlu dijalankan sebagai
tempat kode di atas disimpan
rt.tex
sumber
.tex
;\footline{}
sama baiknya dengan\nopagenumbers
; gunakan~
sebagai nama variabel, bukan\i
. Untuk memenuhi persyaratan "pixel", Anda dapat menggunakan\r sp
; 1sp adalah semacam-setara dengan piksel untuk TeX karena itu adalah lokasi terbaik yang dapat dikelola TeX (saya tidak tahu apakah itu berlaku untuk tikz).sp
tetapi saya pikirpt
itu ide yang bagus. Semua ide Anda yang lain berhasil (beberapa di antaranya sepertinya tidak ada dalam pengujian saya). Terima kasih~
untuk menyimpan satu byte lagi.\input tikz\footline{}\tikz\draw[draw=none,fill=red](0,1)\foreach~in{1,2,3}{[rotate=~*120]arc(0:60:\r sp)};\bye
bekerja untukku. Cobapdftex "\def\r{2000000} \input rt.tex"
- pada 2sp menemukan bentuk secara visual akan sulit mengingat betapa kecilnya itu.GLSL,
298229 karakterCoba di sini
Bonus
r
variabelsumber
JavaScript (ES6) + HTML, 196 + 13 = 209 byte
Menggunakan pendekatan berbasis jalur alih-alih pendekatan pengisian piksel.
Tampilkan cuplikan kode
sumber
Logo, 53 byte
menggunakan
filled
perintah untuk mengisi bentuk dalam warna 0 (hitam.) Kode dalam tanda kurung kotak luar dieksekusi tanpa ada garis yang ditarik, tetapi Logo tetap melacak pergerakan kura-kura dan mengisi bentuk setelah braket keluar.Logo,
6461 bytePena Bawah, gambar 60 derajat busur dengan kura-kura di tengah, Pena Atas, gerakkan pena untuk memulai busur, putar 120 deg.
Ulangi 3 kali, lalu pindah ke dalam bentuk dan isi.
Coba di http://turtleacademy.com/playground/en
Sebut seperti
cs ht t 100
(layar bersih, sembunyikan kura-kura,t
dengan r = 100.)sumber
MATL , 35 byte
Ini menghasilkan file bernama
image.png
. Untuk inputr
, ukuran gambar adalah2*r+1
, dan lebar segitigar
sesuai kebutuhan.Cobalah di MATL Online! Juru bahasa online secara otomatis membuka file yang dibuat dan menampilkan gambar dengan skala sewenang-wenang; klik untuk mendapatkan versi ukuran sebenarnya.
Sebagai alternatif, berikut adalah dua contoh keluaran dari kompiler offline yang berjalan di Matlab, dengan input
50
dan100
. Bagian terakhir dari kode0YG
telah diganti olehIYG
sehingga gambar langsung ditampilkan (dengan ukuran yang tepat) alih-alih ditulis ke file.Penjelasan
sumber
JavaScript (ES6) + SVG (HTML5), 28 + 102 = 130 byte
Hitungan byte tidak termasuk kode yang diperlukan untuk input pengguna yang nyaman dengan ukuran yang diinginkan.
sumber
n=>s.style.width=n
akan bekerja juga.MetaPost (
242226 Bytes)Dimungkinkan untuk mengurangi hal ini, saya baru mengenal metapost.
sumber
len * dir
dan titik pada akhirnya?k,
14110098 byteInput diambil dari
stdin
, output dalamstderr
(ataustdin
tergantung pada penerjemah) dalampgm
format. Sebagai contoh:Penjelasan:
sumber
05AB1E , 66 byte
Tidak dapat menggunakan TIO, karena membuka jendela dan menggambar segitiga Reuleaux di sana.
Minta input, dan kemudian membuka jendela kura-kura Python menggambar segitiga.
Jawaban Jonathan Allan memberi saya inspirasi untuk melakukan ini, meskipun saya sedikit mengubah kodenya.
Pada dasarnya, ini adalah kombinasi dari kemampuan kompresi 05AB1E dan kemudahan grafis penyu Python.
sumber
OpenSCAD , 91 byte
Saya tidak yakin bagaimana halal ini, karena piksel tidak benar-benar unit terdefinisi dengan baik dalam format grid mesh yang saya tahu. Sebagai gantinya, modul
t
menggambar segitiga reuleaux dari radius yang diberikanr
dalam unit asli apa pun yang digunakan.Contoh hasil pratinjau untuk
t(100)
:sumber
SmileBASIC,
8786858382817978777675 byteTidak Disatukan:
sumber