Tugas Anda adalah menggambar mandelbrot set di ascii. Seharusnya terlihat seperti
c
Bilangan kompleks terletak pada set mandelbrot, ketika urutannya z(n+1) = z(n)^2 + c
, z(0) = 0
tetap terikat. Untuk tujuan tantangan ini, Anda dapat mempertimbangkan urutan yang dibatasi untuk c
if |z(32)| < 2
.
Plot mandelbrot yang diatur pada bidang kompleks dari (-2 - i) ke (1 + i), dan resolusi minimum 40x30, menggunakan karakter ascii dalam bahasa favorit Anda, menggunakan sesedikit mungkin karakter.
*
Jawaban:
Dengan asumsi jumlah mesin, saya menulis beberapa waktu lalu yang menghasilkan Mandelbrot warna 320x200 dalam 64 byte - http://www.pouet.net/prod.php?which=53287
Ini kodenya:
Versi yang dikompilasi di base64:
sumber
sudo apt-get install dosbox; dosbox ./Microbrot.com
saya ditemukan mengambil rahang saya dari lantai. Ini sangat mengesankan!C, 988 karakter
Inilah milik saya, yang melakukan mandelbrot ASCII, ditulis sebagai mandelbrot ASCII, dalam C.
Oh .. dan juga memiliki fungsi zoom interaktif. (tekan tombol angka 1-9 untuk memperbesar area masing-masing)
Awalnya diposting di sini http://marquisdegeek.com/rnd_obs.php
sumber
Lump umum - 195 karakter
Diuji dengan sbcl dan clisp. Hasil:
Sedikit dimodifikasi dari blog B. Clementson .
sumber
Python,
146145143arHarus menambahkan klausa (abs (x) <2) ke ekspresi kondisional untuk menjaga Python dari sayap tentang meluap. Tapi ... ini adalah alasan aku mencintai Sage ...
Sage, 133char
Output sampel (dari versi python)
sumber
15j
dalam versi python jugar=range(-50,26)
. Kemudian gantirange(-15,16)
denganr[35:66]
dan gantirange(-50,26)
denganr
.J , 61 karakter
55 untuk spasi 0/1 alih-alih bintang.
sumber
BASH -
167165148The
mb3
File:(tidak ada baris baru)
Jalankan di terminal dengan panjang garis 125:
BASH -
214190Ini pada dasarnya adalah kode yang sama seperti di bawah ini dengan perhitungan diganti dengan nilai-nilai hardcoded dan gambar terbalik di sekitar sumbu x.
Versi di bawah ini tidak sepenuhnya sesuai dengan aturan yang melanggar "dari (-2 - i) hingga (1 + i)".
BASH -
263261260236Gunakan sumber ini, Luke:
Kode ini hanya menggunakan bilangan bulat aritmatika, sehingga BASH tidak memerlukan bantuan tambahan untuk melakukan matematika floating point ...
sumber
x=;y=
. Operator shift memiliki prioritas lebih rendah daripada penambahan dan perkalian, jadi tidak perlu tanda kurung di sekitar>>
operan sisi kiri. Dan Anda dapat menggunakan{
...}
bukannyado
...done
, seperti yang disarankan Digital Trauma di ujungnya . Dan Anda dapat menempatkan banyak ekspresi dalam evaluasi aritmatika, cukup pisahkan dengan,
.(x*x-y*y)>>12
. Mereka tidak mengubah apa pun.Ruby, 95 karakter
Output sampel:
sumber
Haskell, 130
Keluaran:
sumber
Berikut jawaban skrip kopi yang berjalan pada node.js: Hitam dan putih:
Menambahkan warna:
sumber
Mathematica 56
Mathematica 77
Mathematica 77
sumber
GraphicsGrid@ImageData@Binarize@MandelbrotSetPlot[ImageResolution->40]/.{1->" ",0->"*"}
tetapi 84 karakter dan hasilnya tidak sebaik milik Anda.Perl, 153 karakter
Output: Saya tidak dapat memposting gambar karena saya adalah pengguna baru, jadi saya akan mencoba memposting teks dari output.
sumber
C # - 304 Chars
Ketika saya kode, saya kode dengan keterbacaan dan pemformatan yang indah. Saya muntah menulis ini.
Saya yakin solusi saya dapat ditingkatkan tetapi untuk referensi saya akan mempostingnya. Perhatikan bahwa konsol windows menekan gambar.
sumber
Haskell: 340 char
Yah, karena saya tidak melihat jawaban haskell, saya memposting jawaban saya, saya mencoba menguranginya dari apa yang telah saya lakukan sejauh ini. Saya yakin saya bisa mengurangi itu banyak. Tapi di sini adalah percobaan pertama:
Dan inilah hasilnya:
OK - Terinspirasi oleh beberapa kode C animasi yang dikaburkan pada HN, berikut adalah versi animasi:
Salin / rekat, lakukan runghc mandel.hs, selamat menikmati!
Berikut adalah jenis hasil setelah 50 iterasi:
Dan tautan ke kode yang lebih mudah dibaca:
http://yannesposito.com/Scratch/en/blog/Haskell-Mandelbrot/
sumber
J, 70
Menampilkan anggota set sebagai
1
, sisanya sebagai0
. Spasi masing-masing titik hitung memiliki lebar dua karakter, untuk menjaga piksel sebagian besar persegi dengan sebagian besar font.sumber
QBasic, 222 Karakter. Tidak sesingkat itu, tapi QBasic adalah bahasa yang cukup bertele-tele. Juga, saya memperbarui dengan versi yang tampaknya lebih benar
Output seperti pada gambar berikut.
sumber
SpecBAS 201
Saya tahu ini adalah pertanyaan lama, tapi kami sudah bermain dengan ascii brot Perlin di forum pemrograman BASIC, dan ini milik saya - di SpecBAS (yang merupakan sejenis penerjemah Sinclair BASIC) dan itu benar-benar hanya teks, dan satu baris kode:
Keluaran:
sumber
1FOR y=-29TO 30:FOR x=-10TO 89:LET m,r=0:FOR k=0TO 112:LET j=r^2-m^2-2+x/25,m=2*r*m+y/25,r=j,l=k&15,k=IIF(j^2+m^2>11,113,k):NEXT k:PRINT" .:-;!/>)|&IH%*#"(l+1);:NEXT x:NEXT y
.Perl - 193 karakter
Hasil
Saya pikir itu memenangkan perl perl perl dikaburkan beberapa tahun yang lalu.
sumber
Python, 115.
Hanya berfungsi pada terminal 80x24, tetapi Anda dapat menambahkan
print
setelah terlebih dahulufor
untuk memperbaikinya.Output sampel (Dengan
print
instruksi tambahan .):sumber
c ++ - 11 - 298 karakter
Versi sepenuhnya golf, tidakparameter yang hanya melakukan apa yang diperlukan:
Implementasinya benar-benar biasa-biasa saja. Hanya melihat apa yang dapat dilakukan dengan menggunakan waktu kompleks asli (yang, sayangnya, sedikit bertele-tele).
Tidak digabungkan dan diparameterisasi sehingga dapat melakukan wilayah
Keluaran
sumber
GolfScript - 77
Mungkin bisa bermain golf lebih banyak. Hasilnya adalah perkiraan karena saya harus menggunakan bilangan bulat.
Keluaran:
Dibutuhkan sekitar 9 byte lagi untuk membuatnya menggunakan spasi dan bintang:
sumber
GNU bc, 136 byte
Keluaran:
sumber
CJam, 52 byte
Penjelasan:
sumber
Matlab, 96
sumber
Befunge, 266 byte
Cobalah online!
Ini adalah renderer Mandelbrot yang saya terapkan beberapa tahun yang lalu untuk pengiriman Kode Rosetta . Karena Befunge tidak memiliki floating point, ia menggunakan bentuk aritmatika titik tetap 14-bit yang ditiru dengan operasi integer. Ini memiliki maksimum 94 iterasi dengan karakter ASCII ditetapkan sebagai "palet".
Ini awalnya dilaksanakan dengan mempertimbangkan portabilitas daripada ukuran, tetapi harus tetap golf dengan baik seperti itu.
Output Sampel
sumber
Python 444
Ini satu dari pengembang python ,
yang meskipun tidak terlalu pendek,
adalah satu baris yang cukup menarik.
sumber
c ++ (260)
Kode Golf:
Contoh output:
sumber
Minkolang 0,9 ,
7774 byte (INVALID)Jawaban ini tidak valid karena bahasa ini dibuat dengan baik setelah tantangan ini, tapi aku posting sehingga ada solusi dalam bahasa ini. Sehingga cukup mencukur 3 byte woo!
Coba di sini.
Keluaran
Penjelasan
Ini mengambil keuntungan dari penanganan internal Python untuk bilangan kompleks, jadi saya bisa melakukan
1~12$:;
(setara(-1)**0.5
dengan Python) untuk mendapatkan unit imajiner. Kemudian ada tiga bersarang Untuk loop, yang loop melaluiy
,x
, danz=z^2+c
. Meloloskan diri dari loop paling dalam diperlukan (dan dilakukan olehd$~2`9&
) karena jika tidak, jumlahnya akan menjadi begitu besar sehingga menjadi(NaN+Nanj)
, yang nampaknya memiliki magnitudo kurang dari 2.sumber
Python 3, 185 byte
Terjemahan dari perl (193) dengan beberapa peningkatan
sumber
> <> , 118 byte
Cobalah online! Berhati-hatilah, dibutuhkan sekitar 25 detik untuk menjalankan menggunakan TIO, jadi bersabarlah!
Lebih dari tantangan diri daripada entri serius. Menghasilkan output berikut:
sumber
; # , 150.878 byte (tidak bersaing)
Tidak cocok di sini :(
Keluaran:
sumber