Sebagai anak kecil, saya sangat suka bermain dengan mainan ini:
Mereka mungkin bermaksud agar ini digunakan untuk seni, tetapi saya selalu menggunakannya untuk matematika! Fraktal, pola, dll. Suatu kali, saya diberi tantangan ini:
Bangun segitiga tanpa menggunakan ubin segitiga hijau.
Tantangan ini membuat saya bingung untuk waktu yang paling lama, sampai saya menemukan cara yang sangat indah dan sederhana untuk melakukannya hanya dengan 3 trapesium:
/\
/_/\
/__\_\
Sekarang, ambil segitiga ini, dan putar:
______
\ \__/
\/ /
\/
Dengan menggunakan dua segitiga ini, kita dapat membuat segitiga yang lebih besar darinya. Berikut adalah segitiga dengan ketinggian 2:
/\
/_/\
/__\_\
/\ \__/\
/_/\/ /_/\
/__\_\/__\_\
Dan berikut adalah segitiga dengan ketinggian 3-7:
#3
/\
/_/\
/__\_\
/\ \__/\
/_/\/ /_/\
/__\_\/__\_\
/\ \__/\ \__/\
/_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\
#4
/\
/_/\
/__\_\
/\ \__/\
/_/\/ /_/\
/__\_\/__\_\
/\ \__/\ \__/\
/_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\
#5
/\
/_/\
/__\_\
/\ \__/\
/_/\/ /_/\
/__\_\/__\_\
/\ \__/\ \__/\
/_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\/__\_\
#6
/\
/_/\
/__\_\
/\ \__/\
/_/\/ /_/\
/__\_\/__\_\
/\ \__/\ \__/\
/_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\/__\_\/__\_\
#7
/\
/_/\
/__\_\
/\ \__/\
/_/\/ /_/\
/__\_\/__\_\
/\ \__/\ \__/\
/_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\/__\_\/__\_\/__\_\
Tantangan
Menulis sebuah program atau fungsi yang mengambil nomor n dan mencetak segitiga segitiga-kurang tinggi n . Ruang tambahan pada setiap baris dapat diterima, dan hingga satu trailing atau baris baru juga dapat diterima. IO dapat dalam format apa pun yang masuk akal. Masukan dijamin menjadi bilangan bulat positif, jadi Anda tidak perlu khawatir tentang angka negatif, desimal, bukan angka, dll.
Jawaban terpendek dalam byte menang!
sumber
Jawaban:
CJam, 47
Penjelasan:
Cobalah online
sumber
Ruby, 79
A. (-4 bytes,
-1
+1
) berubah dari 0-diindeks (.times
) menjadi 1-diindeks (1.upto
)B. (-5 byte) diubah dari array tiga string 6-char ke pemilihan substring 6-char dari string 18-char.
C. (-1 byte)
m=n*3
->n*=3
D. (-5 byte) mengurangi lima backslash ganda menjadi backslash tunggal (sebagian dimungkinkan oleh penataan ulang string yang diperlukan untuk titik A)
Ruby, 94
penjelasan
Unit dasar adalah berlian 3x6 sebagai berikut (karakter terakhir pada setiap baris diduplikasi untuk kejelasan :)
Yang perlu kita lakukan hanyalah menampilkan jendela yang sesuai dengan pola ini. Ruby
ljust
memungkinkan Anda untuk menggunakan string apa pun, bukan hanya spasi. Biasanyaljust
akan digunakan untuk membuat string karakter yang dapat dicetak dengan menambahkan spasi di bagian akhir, tetapi di sini kita menggunakannya secara terbalik: untuk membuat string spasi dengan menambahkan karakter yang dapat dicetak di bagian akhir.ungolfed dalam program tes
sumber
Retina ,
150122118 byteOmong-omong, output dari tantangan ini tampak luar biasa!
Masukan dalam bentuk unary. Outputnya berisi linefeed baris tambahan. Kode ini menggunakan pengkodean ISO 8859-1. Perhatikan ruang trailing pada garis kedua dari belakang.
Cobalah online
Penjelasan
Jika Anda ingin penjelasan yang lebih mendalam, beri komentar atau pesan saya dalam obrolan.
Terima kasih kepada Martin untuk bermain golf dengan 32 byte.
sumber
Bahasa cetak ascii Tarmo, 46 byte. (tidak bersaing)
Hanya dengan melihat ke bahasa pemrograman aneh seperti CJam, itu membuat saya sedikit pusing betapa rumit, tidak wajar dan samarnya bahasa itu, sehingga saya ingin "dengan berani pergi ke tempat yang belum pernah dikunjungi orang sebelumnya", dan menciptakan bahasa saya sendiri. Sebagai hasilnya saya membuat bahasa saya sendiri untuk pencetakan pola ascii.
Ide dasarnya adalah Anda dapat menetapkan pola pertama dan kemudian mencetak - menggunakan karakter yang sama '1' atau '2' atau nomor apa pun - Anda dapat menentukan pola cetak Anda sendiri.
Setelah pola didefinisikan (Mulai dari nomor hingga nomor berakhir) - nomor berikutnya akan menjalankan pencetakan pola.
Sebagai contoh
Output seperti ini:
Akan menentukan pola 1 dan kemudian mencetaknya segera. Pola didefinisikan semuanya dipisahkan dengan '|' karakter. 0 di akhir - bertindak seperti terminasi pola.
Karakter khusus seperti '$' dicadangkan sebagai umpan baris, dan '~' dicadangkan untuk penspasian - setengah - dari pola tertentu.
Akan menampilkan teks seperti ini:
Selanjutnya berlaku untuk-loop. Yang satu itu harus mudah terlihat - jadi saya mempertahankan kurung {} untuk for-loop, tetapi nama variabel bernama otomatis - jadi braket pertama akan menggunakan variabel 'a', kedua 'b' dan seterusnya. Iterasi akan selalu berubah dari 0 ke angka tertentu - dan angka itu ditentukan sebelum kurung {}.
'n' adalah variabel yang dipesan untuk input fungsi keseluruhan.
Jadi kode:
Akan menampilkan (Dengan n == 4):
Dan '#' adalah pengubah khusus untuk spasi putih timbal trim.
Dan akhirnya seluruh solusi:
DrawPatterns.cs:
Dengan argumen baris perintah seperti ini: -d "1 / \ | / _ / \ | / ___ \ 2 __ | / 0n {na-1 {½} 1a {2 # 1} $}" 3
Akan menampilkan ini:
sumber
JavaScript (ES6), 119 byte
Dimana
\n
mewakili karakter baris baru literal. Jika garis depan dengann*3
spasi dan baris baru dapat diterima maka.slice(1)
dapat dihapus untuk menghemat 9 byte.sumber
Python 2, 118 byte
Pendekatan yang mirip dengan Tingkat Sungai St ini Ruby jawaban .
Cobalah online
sumber
Python 2, 142 byte
Prinsipnya sangat mirip dengan jawaban lain: ambil tiga string berulang dan kemudian lapis sedemikian rupa sehingga Anda hanya perlu memotong beberapa dari mereka untuk mendapatkan segitiga, kemudian pad mereka di sebelah kiri.
sumber
C ++, 395 Bytes
Golf kode waktu pertama dengan ukuran mulia 395 byte dalam C ++. Dalam kasus saya, rasanya seperti kontes untuk kebingungan: D
sumber
Pyth, 66 byte
Cobalah online!
sumber