Dimulai dengan /\
Anda dapat membuat pola Sierpinski triangle like dengan menambahkan garis di bawahnya sehingga ...
- Setiap cabang longgar
/
atau\
perpecahan lagi menjadi dua cabang:/\
. - Setiap tabrakan dahan
\/
mati tanpa ada (kecuali spasi) di bawahnya.
Mengulangi aturan ini menghasilkan
/\
/\/\
/\ /\
/\/\/\/\
/\ /\
/\/\ /\/\
etc...
Tulis sebuah program atau fungsi yang mengambil dalam bilangan bulat positif N dan mencetak garis N pertama dari pola ini ke stdout, dengan tidak lebih banyak spasi mengarah atau tertinggal dari yang diperlukan.
Misalnya, jika inputnya adalah 1
output harus
/\
Jika inputnya adalah 2
output harus
/\
/\/\
Jika inputnya adalah 8
output harus
/\
/\/\
/\ /\
/\/\/\/\
/\ /\
/\/\ /\/\
/\ /\ /\ /\
/\/\/\/\/\/\/\/\
Dan seterusnya.
Kode dengan byte paling sedikit menang.
code-golf
fractal
code-golf
math
polynomials
abstract-algebra
code-golf
geometry
3d
popularity-contest
string
code-golf
math
3d
code-golf
javascript
browser
code-golf
random
array-manipulation
code-golf
restricted-source
javascript
set-theory
code-golf
graph-theory
path-finding
decision-problem
code-golf
code-golf
primes
c
code-golf
graphical-output
fractal
fastest-code
simulation
code-golf
sequence
code-golf
graphical-output
code-golf
code-golf
math
binary
rational-numbers
code-golf
number
fibonacci
popularity-contest
code-golf
number
code-golf
game
Hobi Calvin
sumber
sumber
Jawaban:
GolfScript (42 byte)
Demo online
Ini mengeksploitasi hubungan yang terkenal antara segitiga Pascal dan segitiga Sierpinski.
sumber
CJam,
4846 bytePendekatan rekursif sederhana berdasarkan pengamatan 1 dan 2 dalam pertanyaan.
Cobalah online.
Bagaimana itu bekerja
CJam, 51 byte
Saya suka pendekatan ini lebih baik, tetapi tidak bisa bersaing dengan pendekatan rekursif. Bahkan setelah menghilangkan
2mL
(yang menghasilkan setidaknya O (2 n ) waktu eksekusi), saya masih di 48 byte ...Pendekatan ini mengkodekan
/\
sebagai 1 dan spasi ganda di antara mereka sebagai 0. Mempertimbangkan bilangan biner array yang dihasilkan, kita melihat bahwa konfigurasi baris ke - n sesuai dengan bilangan bulat n yang lebih besar dari 1 yang dapat dinyatakan sebagai produk dari nomor Fermat yang berbeda (bilangan bulat dari bentuk 2 2 k +1 ).Bagaimana itu bekerja
sumber
Python 2 -
140 139 127 122 121 118116Berdasarkan penggantian string sementara ( /programming//a/8687380/3419103 ):
/
>V
\
>V
\/
>__
(2 spasi)V
>/\
sumber
b*(N-1)+m+n
bisa jadib*~-N+m+n
Javascript - 117 byte
Diperkecil:
Diperluas:
Output Sampel (untuk
n = 20
):Sekarang jika hanya nama fungsi
repeat
danreplace
tidak begitu panjang. : Psumber
Pyth, 45 byte
Contoh dijalankan
Bagaimana itu bekerja
sumber
Ruby, 90
Penjelasan
Integer
.String#center
untuk membuat spasiString
"/\"
dengann - 2
di setiap sisi dan masukkan keArray
(a
)a
elemen terakhira
dengan setiap kemunculan"\/"
diganti dengan" "
dan setiap kemunculan" /"
atau" \"
diganti dengan"/\"
.puts
untuk mencetak setiap elemena
pada barisnya sendiri.sumber
Haskell,
128112sumber
import Data.List
(karena Anda menggunakanunlines
), yang membawanya hingga 145unlines
ada di awal.JavaScript (E6) 107
106Sunting: jumlah byte tetap, dibuat rekursif.
Tidak jauh berbeda dari jawaban JS yang lain ... setidaknya yang ini 'mencetak' pola seperti yang diminta. Inti mengganti '/' '\' dengan '/ \' dan sisanya dengan '' pada setiap baris baru.
Uji di konsol FireFox / FireBug
Keluaran
sumber
Perl 5 - 56 byte
\ 0 dapat diganti dengan karakter byte nol yang sebenarnya
Ia menggunakan fakta bahwa jika Anda mengabaikan spasi awal dan menyatakan '/ \' sebagai 1 dan '' sebagai 0 pola dalam baris yang diberikan f (n) = f (n-1) ^ (f (n-1) < <1). Namun perhitungan dalam kode di atas dieksekusi pada string yang dekat dengan output yang diharapkan (tidak ada spasi, spasi lain digantikan oleh byte nol) berkat manipulasi string bitwise perl.
sumber
Python 2, 84 byte
sumber
Javascript dengan lambdas,
141128141
128
Dapat diuji di Firefox (n = 16):
sumber
Python 2, 97 byte
sumber
Mathematica, 86 byte
sumber