Anda harus mencetak teks ini:
A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
ABCDEFEDCBA
ABCDEFGFEDCBA
ABCDEFGHGFEDCBA
ABCDEFGHIHGFEDCBA
ABCDEFGHIJIHGFEDCBA
ABCDEFGHIJKJIHGFEDCBA
ABCDEFGHIJKLKJIHGFEDCBA
ABCDEFGHIJKLMLKJIHGFEDCBA
ABCDEFGHIJKLMNMLKJIHGFEDCBA
ABCDEFGHIJKLMNONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXYXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXYZYXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXYXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNONMLKJIHGFEDCBA
ABCDEFGHIJKLMNMLKJIHGFEDCBA
ABCDEFGHIJKLMLKJIHGFEDCBA
ABCDEFGHIJKLKJIHGFEDCBA
ABCDEFGHIJKJIHGFEDCBA
ABCDEFGHIJIHGFEDCBA
ABCDEFGHIHGFEDCBA
ABCDEFGHGFEDCBA
ABCDEFGFEDCBA
ABCDEFEDCBA
ABCDEDCBA
ABCDCBA
ABCBA
ABA
A
Spesifikasi
- Newline tambahan tambahan diperbolehkan di akhir output.
- Ruang tambahan tambahan (U + 0020) diizinkan di akhir setiap baris, termasuk baris tambahan tambahan baru.
- Anda dapat menggunakan semua huruf kecil dan bukan semua huruf besar, tetapi Anda tidak dapat mencetak sebagian huruf kecil sebagian.
- Anda dapat mengembalikan teks sebagai output fungsi alih-alih mencetaknya dalam program lengkap.
Mencetak gol
Karena ini adalah segitiga, dan segitiga memiliki 3 sisi, dan 3 adalah angka kecil, kode Anda harus kecil dalam hal byte-count.
code-golf
kolmogorov-complexity
alphabet
Biarawati Bocor
sumber
sumber
Jawaban:
Vim, 37 byte
Legenda
sumber
:h<_↵↵↵YZZP
), lalu merekam makro (qq…q
) yang berulang kali memotong huruf dari baris teratas, membuat dua salinan untuk menumbuhkan segitiga secara vertikal, kemudian menambahkan surat yang dipotong ke semua baris untuk menumbuhkannya secara horizontal. Saya ulangi makro ini 24 kali lebih banyak untuk menggambar segitiga penuh.Logo,
232 207 196190 byteApakah ada yang mengatakan segitiga?
Keluarkan kompas dan busur derajat Anda, dan mari kita lakukan ini dengan cara grafis. Geometri menggunakan segitiga sama sisi untuk menyelaraskan hasil. Saya sebelumnya memiliki segitiga sama kaki, tetapi melibatkan terlalu banyak tempat desimal. Perubahan ini juga memadatkan output, mengurangi jumlah persiapan layar dan perubahan font yang harus saya lakukan.
Saya menggunakan penerjemah online Calormen untuk menyempurnakan yang ini. Jika Anda tidak memiliki cukup layar real estat, itu akan membungkusnya, tetapi Anda juga dapat bermain-main dengan beberapa nomor untuk mengatasinya. Saya menggunakan mode layar penuh "F11" di browser saya.
The
r
prosedur menarik garis darin
karakter. Karakter ditentukan secara otomatis tergantung pada berapa banyak segmen yang diperintahkan untuk digunakan. Theb
parameter mengatakan itu berapa banyak untuk sementara memutar sehingga surat-surat yang menunjuk ke arah yang benar. Thel
parameter menentukan jarak linear antara huruf.Langkah
t
prosedur ke posisi berikutnya dan memanggilr
fungsi empat kali untuk membuat segitiga, berputar jika perlu. Saya menyebutnya dua kali untuk sisi vertikal karena itu membutuhkan lebih sedikit byte daripada memanggilnya sekali dengan penanganan khusus. Akhir prosedur menempatkan kura-kura untuk memulai segitiga berikutnya, satu langkah di atas.Z
adalah case khusus, jadi kami langsung mencetaknya dan memutar seolah-olah kami baru saja selesai membuat segitiga. Akhirnya,t
disebut 25 kali.sumber
Haskell, 58 byte
Menentukan fungsi
t
yang mengembalikan output sebagai string.sumber
Jelly ,
1613 byteTerima kasih kepada @LeakyNun untuk bermain golf 3 byte!
Cobalah online!
Bagaimana itu bekerja
sumber
Python, 74 byte
Fungsi Python 2 yang mencetak dan tidak mengambil argumen. Ide kuncinya adalah untuk menghasilkan pola segitiga ada-dan-kembali dengan rekursi. Pertama, pertimbangkan fungsi yang lebih sederhana ini yang mencetak huruf 'A' hingga 'Z' dan kembali ke 'A':
Fungsi pertama mencetak "A" (char-code 65), kemudian berulang untuk mencetak "B" (66) dan seterusnya ke "Z" (90). Dari sana, ia berhenti berulang. Dalam perjalanan muncul kembali ke tumpukan rekursif, ia mencetak karakter apa pun
t
yang dicetak pada lapisan yang sama, dari "Y" kembali ke "A".Kode utama melakukan hal yang sama, kecuali ia terakumulasi ke
s
dalam string huruf sejauh ini, dan mencetak string naik-turuns+s[-2::-1]
.Berkat xsot untuk 2 byte.
Dalam Python 3, hal yang sama adalah byte lebih pendek (73 byte) dengan meletakkan semuanya pada satu baris.
sumber
f(x=66,s='A')
. Ini memungkinkan Anda untuk memperbaruis
dalam panggilan fungsi alih-alih badan fungsi.brainfuck,
1733121119 byteVersi yang sedikit lebih mudah dibaca:
Penjelasan mungkin akan datang.
sumber
05AB1E ,
20 13 126 byteDisimpan 2 byte berkat Adnan.
Disimpan 6 byte berkat Magic Octopus Guci dan beberapa fungsi bahasa baru.
Cobalah online!
Penjelasan
sumber
Œ26£
ke.p
, yang merupakan perintah awalan. Juga, Anda dapat mengubahD,
ke=
, yang mencetak tanpa muncul.gF,
!Â
tersebut sangat bagus dan fitur yang sangat rapi.û
lebih baru daripada tantangan dan akan membuat jawaban ini tidak bersaing.J,
262322 bytePenjelasan
sumber
f=:,1}.|.
coba iniPython 3, 97 byte
Ide itu!
sumber
'\n'.join(a+a[-2::-1])
Ruby, 71 byte
Cobalah di repl.it
sumber
> <> , 60 byte
Cobalah online!
sumber
C,
272247234230144137 byte:( Menyimpan banyak byte (
272 -> 230
) dalam metode saya sebelumnya berkat tips & trik golf yang hebat dari sigalor ! )( Disimpan hampir 100 byte (
230 -> 144
) dengan beralih ke metode yang lebih baik. )Jawaban pertama saya
C
. Saya baru mulai belajar mandiri baru-baru ini, jadi mari kita lihat bagaimana kelanjutannya.C beraksi! (Ideone)
sumber
main()
jenis kembali dan bahkan#include <stdio.h>
. GCC (dan juga situs-situs seperti Ideone) tidak masalah dengan itu. Selanjutnya, Anda bisa 'mengalihdayakan' definisi variabel ke daftar parameter suatu fungsi. Biarkanfor(int i=65;...
menjadifor(i=65...
dan berubahmain()
menjadimain(i)
. Lakukan hal yang sama untuk setiap variabel int lainnya juga (GCC default jenis yang hilangint
).main()
kemain(i)
?i
variabel Anda dalam inisialisasi loop, Anda perlu mendeklarasikannya di tempat lain. Dan karena (setidaknya dalam C) parameter fungsi dapat digunakan seperti variabel normal, seharusnya tidak ada masalah. Btw, kompiler mana yang Anda gunakan?C
di Ideone. Saya mendapatkan beberapa<variable> undeclared
kesalahan.JavaScript (ES6), 81 byte
sumber
Mathematica 59 byte
sumber
//Column
dari akhir dan mengawali kode Anda denganColumn@
karya.〚
dan〛
sebagai byte tunggal. Saya ragu bahwa ada halaman kode byte tunggal yang memilikinya dan juga didukung oleh Mathematica. Mereka akan oleh tiga byte di UTF-8, sehingga mereka tidak benar-benar menyimpan apa pun di dataran[[...]]
. Saya juga tidak yakin seberapa sahColumn
karena hanya menampilkan seperti daftar baris dalam buku catatan Mathematica. Menjalankan kode ini dari file skrip tidak akan menampilkan apa pun. Namun,Print/@
jumlah byte yang sama dan berfungsi dalam kedua kasus tersebut.[what you see](actual link)
. Ex.[Example Link](https://www.example.com)
, yang ditampilkan sebagai Contoh TautanDyalog APL, 18 byte
sumber
R,
63 6159 byteMembantu
LETTTERS[0]
tidak mengembalikan karakter apa pun.Sunting: hilang satu berkat @leakynun
Sunting: dua lagi berkat @plannapus
sumber
\n
TSQL, 159 byte
Biola
sumber
Javascript (menggunakan library eksternal-Enumerable), 135 byte
Tautan ke perpustakaan: https://github.com/mvegh1/Enumerable
Penjelasan kode: Buat rentang int mulai dari 1, untuk hitungan 51. Untuk masing-masing, tulis baris sesuai dengan pred kompleks. Lakukan beberapa sihir JS dengan variabel global dan caching ... dan voila. Untuk setiap int di WriteLine, kami membuat rentang kiri int dan menyimpan ke global "g", dan String Joining (Write) dengan
""
pembatas dan memetakan setiap int ke pemetaan String ke kode char int. Kemudian, kami menggabungkan sisi kanan dengan mengambil pembalikan urutan itu (dan melewatkan elemen pertama karena akan cocok dengan elemen terakhir dari urutan asli ...), menulis dengan logika yang sama. EDIT: Memperbarui internal Tulis di perpustakaan. Urutan kosong akan menulis string kosong, bukan nol sekarang. Ini juga mencukur 15 byte dari jawabannyasumber
import sympy
ataufrom sympy import*
di atas. Jawaban Bash + x berbeda karena Anda hanya perlu menginstal x , tidak mengaktifkannya entah bagaimana.sympy
,numpy
,scipy
, dll sepanjang waktu.Powershell,
6152 byteTerima kasih kepada TimmyD karena telah menghemat 9 byte!
Loop melalui nilai ASCII untuk huruf kapital ke depan, lalu mundur. Untuk setiap angka, ini menciptakan larik angka X pertama, menghapus angka X-1, lalu menambahkan kebalikan dari angka X pertama, yang kemudian dilemparkan ke karakter dan bergabung ke dalam string.
sumber
65..90..65
melakukan keinginan sebelumnya tanpa hasil. Kira saya lupa saya bisa menambahkan rentang bersama.Cheddar ,
10296796967 byte17 byte berkat Downgoat, dan inspirasi untuk 10 lebih.
Fakta bahwa string dapat menyatukan tetapi bukan array berarti bahwa saya harus mengubah dua rentang ke string, menyatukan, dan kemudian mengkonversi kembali ke array.
Juga, fakta yang
vfuse
menghasilkan newliens terkemuka berarti bahwa saya perlu membuat baris pertama secara manual dan kemudian menyinggung sisanya.@"
sebagai angka dua (fungsi dua argumen) dapat dikonversi ke string secara langsung, tetapi tidak berfungsi untuk rentang terbalik (jika argumen pertama lebih besar dari yang kedua).Rentang itu setengah inklusif. Setelah perbaikan bug itu menjadi inklusif.
Pemakaian
Cheddar, 55 byte (tidak bersaing)
Dalam versi terbaru dengan semua perbaikan, jawabannya adalah:
tapi itu dibuat setelah tantangan.
sumber
@"(1|>26)
dapat1@"26
String.letters
bisa(65@"91)
String.letters.slice(0,i)
mungkin bisa65@"(66+i)
C, 93 byte
Panggilan
f()
tanpa argumen.Cobalah di ideone .
sumber
VBA, 94 byte
Panggil di jendela Segera dengan? T
Hanya untuk menjelaskan apa yang terjadi: Saya menggunakan fungsi Abs dua kali, untuk mencerminkan lintasan alfabet dan panjang garis. Ini sangat cocok untuk tugas karena nilai ekstrem tunggal dalam kedua kasus, yang sesuai dengan nol persimpangan variabel pra-Abs.
Sebagai seperangkat perintah sederhana di jendela VBA Immediate, daripada program atau fungsi, berikut ini akan membutuhkan 72 byte:
(dengan terima kasih kepada @GuitarPicker)
sumber
Function T:
, akhiri dengan:?T
(walaupun itu hanya akan bekerja sekali, karena setelah itu Anda harus mengatur ulang T ke "" - tetapi siapa yang membutuhkan lebih dari satu segitiga ini?)?
menggunakannya;
.Python,
7371 byteBerkat @xnor untuk rekursi
Penjelasan
x
adalah nilai ascii dari huruf berikutnya dalam alfabets
adalah akumulator untuk alfabett
adalah garis dalam segitiga (yaitus
+s backwards
)t
jika alfabet selesai (yaitu kita berada di tengah)t+f(...)+t
dengan:x
bertambahs
ditambahkan dengan surat berikutnyat
reset kes
+s backwards
+\n
Memperbarui
\n
(+1) dan dipersingkat bersyarat (-3) semua berkat @xnorsumber
t
ke loop berikutnya. Ada baris baru ekstra terkemuka;x=66,s='A''
menyingkirkannya. Kasing dasar dapat disingkat menjadix/92*t or
.HTML + CSS, 884 karakter
(763 karakter HTML + 121 karakter CSS)
Hanya memperluas Leaky Nun 's komentar pada MonkeyZeus ' s jawaban . (Meskipun saya mungkin salah membaca komentar ...)
sumber
Brachylog ,
3729 byteKredit untuk Melegalkan atas bantuannya sepanjang.
4 byte berkat Fatalize, dan inspirasi untuk 4 byte lainnya.
Cobalah online!
Predikat 0 (Predikat utama)
Predikat 1 (Predikat Bantu)
Ini pada dasarnya membangun palindrome dari string yang diberikan.
sumber
,A
dalam Predikat 1 denganh
, menghemat satu byte.:1:2yt.
dengan:2&.
dan menambahkan!
(cut pilihan poin) pada akhir predikat 2.[char:char]y
untuk menghasilkan cadanganabcd…
bukan~c[A:B]
R,
127125 byteTidak sepenuhnya puas dengan solusi ini, terutama dua
for
loop, tetapi tidak bisa datang dengan sesuatu yang lebih baik!LETTERS
berisi huruf besarTidak Terkumpul:
ifelse
adalah cara yang lebih pendek untuk melepaskanif... else...
dan bekerja dengan cara ini:ifelse(condition,action if TRUE, action if FALSE)
Solusi 125 byte lainnya:
sumber
Java 131 byte
Tanpa menggunakan String (131 byte)
Codegolfed
Dengan String (173 byte)
Codegolfed
Terima kasih atas manatwork dan Kevin Cruijssen
sumber
d!=-1
dengand>-1
, sama dengan k. (BTW, Anda lupa memperbaiki versii+=k==1?1:-1
bisai+=k
danSystem.out.print((char)c+(c+d<65?"\n":"")),c+=d==1?1:-1);
bisaSystem.out.print((char)c+((c+=d)<65?"\n":"")));
. Jadi totalnya menjadi ( 131 byte ):for(int i=0,k=1;i>-1;k=k>-1&i<25?1:-1,i+=k)for(int c=65,d=1;c>64;d=d>-1&c<65+i?1:-1,System.out.print((char)c+((c+=d)<65?"\n":"")));
brainfuck, 79 byte
Diformat:
Cobalah online
sumber
Sesos , 27 byte
Cobalah online! Periksa Debug untuk melihat kode SBIN yang dihasilkan.
Perakitan Sesos
File biner di atas telah dihasilkan dengan merakit kode SASM berikut.
sumber
/// , 208 byte
Tidak menang tentu saja, tapi ini dia, mendahului Martin Ender ...
sumber