Bola cannon ditembakkan sehingga pada eyeblink pertama penerbangannya ia naik oleh N
puncak pohon, selama eyeblink kedua oleh N-1
puncak pohon, dll hingga mencapai titik tertinggi lintasannya. Kemudian mulai jatuh 1, 2, dll puncak pohon per eyeblink sampai menyentuh tanah. Pada saat yang sama, bola meriam bergerak secara horizontal dengan kecepatan konstan 1 treetop / eyeblink.
Tugas Anda adalah menggambar lintasan dengan huruf berurutan dari alfabet bahasa Inggris. Jika Anda kehabisan surat, mulai lagi dari 'A'
. Tulis fungsi atau program. Inputnya adalah integer N
( 1≤N≤15
). Outputnya dapat berupa matriks karakter dalam bentuk apa pun yang masuk akal, misalnya string yang dipisahkan baris baru atau daftar string. Huruf dapat berupa huruf kecil atau huruf besar semua. Ruang memimpin dan trailing tambahan diizinkan. Celah standar dilarang. Kode yang lebih pendek lebih baik.
in:
5
out:
OP
N Q
M R
L S
K T
J U
I V
H W
G X
F Y
E Z
D A
C B
B C
A D
in:
1
out:
AB
O
danP
, centang bergerak 1 ke kanan, tetapi 0 naik atau turun.Jawaban:
05AB1E ,
33322928 byteCobalah online!
Penjelasan
sumber
Nú»
atau sesuatu seperti itu dapat digunakan untuk mencetak saat Anda pergi alih-alih])~.c
Stax ,
2924 byteJalankan dan debug secara online
Representasi ascii yang sesuai dari program yang sama adalah ini.
sumber
R,
169163161153150110109 bytePendekatan ini mengisi matriks dan kemudian mencetak matriks.
Golf
Terima kasih @Giuseppe untuk 153.
Terima kasih @JDL untuk 150.
Lihat @ Giuseppe komentar untuk 112, dan beberapa suntingan untuk 110 sekarang 109. Rip kode asli.
Jika merencanakan output yang valid maka 73 byte
sumber
Map
bukanmapply
?lapply
bukanmapply
. Terima kasih untuk 150row,column
pasangan langsung[
daripada harus melaluimapply
(atauMap
), jadi saya menemukan cara untuk melakukan itu. Saya juga ingat bahwawrite
ada dan dapat menggantikancat
untuk 112 byte !Python 2 ,
140135133 byteCobalah online!
sumber
MATL , 29 byte
Cobalah online!
Bagaimana itu bekerja
sumber
Java (OpenJDK 8) , 121 byte
Cobalah online!
Penjelasan
sumber
C, 184 byte
Cobalah online!
Belum dibuka:
sumber
main
untuk mengkompilasinya. Pada TIO,main
ada di bagian footer.Clojure,
417319 bytePada titik tertentu saya terlibat dalam
reverse
panggilan dan menyerah pada ide untuk membuatnya sesingkat mungkin. Saya hanya ingin memiliki solusi yang berfungsi. Ini dia ...Agak tidak serigala
Memperbarui
Termotivasi oleh komentar Olivier, saya berhasil memotong beberapa
reverse
panggilan dan menerapkan beberapa trik golf umum untuk memotong karakter. Juga saya buat alias untukreverse
,map-indexed
,concat
,repeat
danstr
karena saya menggunakan mereka beberapa kali setiap.Tidak disatukan
Menciptakan fungsi
c
yang menerima nilai n dan mengembalikan daftar garis.sumber
Arang ,
3331 byteCobalah online! Tautan adalah untuk mengucapkan versi kode. Sunting: Disimpan 2 byte berkat hanya @ ASCII. Penjelasan:
Inisialisasi huruf saat ini sebagai indeks ke huruf besar ke 0.
Buat perulangan dari negasi input ke input inklusif.
Biasanya setiap kolom berada di sebelah kanan kolom sebelumnya. Namun, tidak ada kolom untuk nol. Sebaliknya, koreksi diperlukan untuk memastikan bahwa sisi kiri dan kanan sejajar.
Ulangi untuk setiap huruf di kolom.
Cetak huruf saat ini.
Tambahkan indeks surat.
Bergerak naik atau turun tergantung pada sisi lintasan mana kita berada.
sumber
Perl 5 , -n
112929088 byteUntuk sekali yang sangat lama
printf
sepertinya menang.Cobalah online!
sumber
(A..Z)x9
bekerja, tetapi itu terlalu pendek dari batasnya! Punya itu untuk 91 saja. :)Python3 + numpy,
124115Ini menciptakan array berukuran tepat, menemukan indeks untuk lintasan dan menetapkan karakter yang sesuai untuk mereka.
Bagian yang paling kompleks adalah menghasilkan karakter AZ, yang bergantung pada sejumlah angka yang sangat hackish ke tipe string.Objek yang dikembalikan adalah array unicode.Sunting : Disimpan 9 byte menggantikan kode numpy yang menghasilkan karakter AZ (
(r_[0:2*N]%26+65).view('U1')[::2]
) denganmap
, seperti yang disarankan di sini .sumber
Python 3 ,
139136 byteCobalah online!
Menghasilkan setiap lapisan secara rekursif, mengingat ukuran dan mengimbangi.
-3 byte terima kasih kepada Jo King
sumber
~
operator!n and ... or''
ken*' 'and ...
untuk byte lainJ ,
7875 byteCobalah online!
-3 Terima kasih kepada ngn
sumber
(,|.)@i.@-
->i.@-,i.
Python 2 , 182 byte
Cobalah online!
Mengembalikan daftar daftar karakter. Verifikasi primitif di sini
sumber
Jelly , 35 byte
Cobalah online!
sumber
Yabasic , 125 byte
Sebuah dasar solusi yang menggunakan modus grafis untuk mencetak karakter pada kolom yang benar dan baris dari layar.
Karena solusi ini menggunakan mode grafis, itu tidak dapat dijalankan pada TIO.
Keluaran
Di bawah ini adalah output untuk input
7
sumber
Ruby ,
106103 byteCobalah online!
sumber
QBasic 1.1 , 124 byte
sumber
Python 3 , 190 byte
Cobalah online!
Saya mencoba yang terbaik. Beri tahu saya jika ada optimasi yang dimungkinkan.
sumber
k4,
7671 bytebeberapa penataan ulang + tugas untuk menghemat 5 byte
upaya setengah jam dengan beberapa upaya untuk memangkas beberapa byte, tetapi mungkin ada banyak lagi yang bisa dilakukan di sini. akan kembali ke sana. tantangan yang menyenangkan!
sumber