Tantangan
Tulis kode yang menghasilkan kode persamaan matematika TeX (LaTeX) (diberikan di bawah) yang akan mengeset Fraktal Sierpinski Triangle Fractal dari 5 level. Kode terpendek menang .
Detail
TeX (dan teman-teman seperti LaTeX, dll.) Adalah sistem pengaturan huruf yang canggih. Itu bisa membuat ekspresi kompleks bersarang sembarang untuk rumus matematika. Secara kebetulan "kompleks bersarang" ini juga deskriptif fraktal. Berikut ini diberikan dengan MathJaX
oleh kode persamaan matematika teks biasa berikut yang terdiri dari sub-skrip bersarang dan super:
{{{{{x^x_x}^{x^x_x}_{x^x_x}}^{{x^x_x}^{x^x_x}_{x^x_x}}_{{x^x_x}^{x^x_x}_{x^x_x}}}^{{{x^x_x}^{x^x_x}_{x^x_x}}^{{x^x_x}^{x^x_x}_{x^x_x}}_{{x^x_x}^{x^x_x}_{x^x_x}}}_{{{x^x_x}^{x^x_x}_{x^x_x}}^{{x^x_x}^{x^x_x}_{x^x_x}}_{{x^x_x}^{x^x_x}_{x^x_x}}}}^{{{{x^x_x}^{x^x_x}_{x^x_x}}^{{x^x_x}^{x^x_x}_{x^x_x}}_{{x^x_x}^{x^x_x}_{x^x_x}}}^{{{x^x_x}^{x^x_x}_{x^x_x}}^{{x^x_x}^{x^x_x}_{x^x_x}}_{{x^x_x}^{x^x_x}_{x^x_x}}}_{{{x^x_x}^{x^x_x}_{x^x_x}}^{{x^x_x}^{x^x_x}_{x^x_x}}_{{x^x_x}^{x^x_x}_{x^x_x}}}}_{{{{x^x_x}^{x^x_x}_{x^x_x}}^{{x^x_x}^{x^x_x}_{x^x_x}}_{{x^x_x}^{x^x_x}_{x^x_x}}}^{{{x^x_x}^{x^x_x}_{x^x_x}}^{{x^x_x}^{x^x_x}_{x^x_x}}_{{x^x_x}^{x^x_x}_{x^x_x}}}_{{{x^x_x}^{x^x_x}_{x^x_x}}^{{x^x_x}^{x^x_x}_{x^x_x}}_{{x^x_x}^{x^x_x}_{x^x_x}}}}}
Perhatikan ini hanya bersarang 5 tingkat. Anda tidak perlu membuat $...$
atau $$...$$
atau markup lain yang diperlukan untuk memulai / mengakhiri persamaan matematika di TeX & Co. Anda dapat mempratinjau TeX yang dihasilkan di banyak editor online, misalnya: http://www.hostmath.com tetapi Anda dapat menemukan banyak orang lain juga. Pertanyaan ini terinspirasi oleh diskusi dengan teman-teman .
Memperbarui
Ada pertanyaan serupa tetapi jauh lebih umum dan akan menghasilkan solusi yang berbeda. Saya ingin melihat benar-benar kolmogorov-kompleksitas untuk kode sederhana yang sangat tetap yang dalam satu sistem (TeX) sepenuhnya eksplisit sementara yang lain dikompresi. Ini juga membahas n
komentar bukannya 5 level.
sumber
Jawaban:
SOGL V0.12 ,
1612 byteCoba Di Sini!
Port of Erik The Outgolfer's Python 2 menjawab
sumber
Python 2 , 32 byte
Cobalah online!
sumber
TeX polos, 29 byte
Itu menghasilkan apa yang orang lain miliki. Tetapi jika kita membutuhkan kode yang dapat dikompilasikan akan menjadi 6 byte lebih
Penjelasan
~
adalah karakter aktif dalam TeX, sehingga kami dapat memberikannya definisi (baru).\def~#1x{{#1x_#1x^#1x}}
didefinisikan~
sebagai makro, sehingga ketika TeX melihat~
, ia melakukan hal berikut:x
, dan panggil itu#1
(pencocokan pola).{#1x_#1x^#1x}
Misalnya,
~ABCx
akan diganti dengan{ABCx_ABCx^ABCx}
.Kapan
~~~~~x
digunakan,#1
adalah~~~~
, jadi semuanya akan diganti{~~~~x_~~~~x^~~~~x}
. Dan seterusnya.Setelah kami memiliki string yang panjang, kami dapat mencetaknya ke terminal dengan
\message
(dan diakhiri dengan\bye
berhenti begitu TeX), jadi\message{~~~~~x}\bye
. Atau mengeset ekspresi yang dihasilkan (sebagai rumus matematika), dengan mengelilinginya dalam$
s: so$~~~~~x$\bye
.sumber
n
(daripada5
) bisa lebih efisien untuk membuat makro yang menampilkan daftarn
tilde~
daripada menulis~~~~~
. Plus itu akan terlihat lebih baik jika seluruh ekspresi adalah set di bawah\scriptscriptstyle
.05AB1E , 17 byte
Cobalah online!
Penjelasan
Program lain pada byte-count yang sama termasuk
sumber
"{x^x_x}"
dapat dikurangi ._.PowerShell ,
4435 byteCobalah online!
Menggunakan perkalian string untuk berulang kali
-replace
x
menggunakan sub-dan super-skrip, kemudian menghasilkan.Disimpan 9 byte berkat Joey.
sumber
"'x'"+"-replace'x','{x^x_x}'"*5|iex
sedikit lebih mudah, bukan?MATL ,
2120 byte-1 byte terima kasih kepada Giuseppe
Cobalah online!
sumber
'x'XJ5:"J'{x^x_x}'Zt
atau bahkan5pc5:"5pc'{x^x_x}'Zt
JavaScript (ES6),
454237 byteSunting: Disimpan
32 byte berkat @Arnauld. Menentukan 5 masih menghabiskan 2 byte; ini4140versi 35-byte mengambil parameter sebagai gantinya:sumber
05AB1E , 13 byte
Cobalah online!
Port jawaban Python 2 saya.
sumber
Jelly , 12 byte
Cobalah online!
Port jawaban Python 2 saya.
sumber
Japt ,
212018 bytesMenguji
Penjelasan
Buat array dengan panjang 5 dan petakan di atasnya.
Pisahkan string ke array karakter
Bergabung kembali dengan (
q
) ke string menggunakan nilai saat iniU
atau (ª
)"x"
.Tetapkan hasil itu untuk
U
.Dapatkan elemen terakhir dalam array.
Alternatif, 18 byte
Sama seperti di atas tetapi mengurangi array setelah dibuat.
Menguji
Opsi rekursif.
Menguji
sumber
Java (OpenJDK 8) ,
179167 byte@Neil port
Cobalah online!
sumber
t
sebagai functio nyata daripada lambdat.apply(1)
seharusnyat.apply(new Integer(a[0]))
. Tetapi mengapa tidak memposting metode saja?String t(int n){return n>0?t(n-1).replace("x","{x^x_x}"):"x";}
Dan jika persyaratan tantangan akan menjadi program penuh (yang tidak), menggunakan metode rekursif Java 7 akan lebih pendek dari lambda:interface Y{static void main(String[]a){System.out.print(t(new Integer(a[0])));}static String t(int n){return n>0?t(n-1).replace("x","{x^x_x}"):"x";}}
Bahasa Wolfram ( Mathematica ) - 40 karakter
Meringkas 3 jawaban terbaik di sini :
40 byte:
41 byte:
44 byte:
sumber
C (gcc) , 82 byte
Cobalah online!
sumber
Pyth,
171613 byteCobalah online!
Terjemahan Python 3:sumber