Ada banyak pertanyaan yang melibatkan menggambar bentuk menggunakan tanda bintang - jadi saya pikir, dengan begitu banyak tanda bintang di sana, kita harus menggambar satu, menggunakan tabel ASCII.
Tantangan
Tugas Anda adalah menulis program atau fungsi yang tidak membutuhkan input, dan menampilkan teks yang tepat ini:
!
"#
$%
&'
()
*+
,-
./
01
23456789:;<=>?@ABCDEF
GHIJKLMNOPQRSTUVWXYZ[
\]^_
`a bc
de fg
hi jk
lm no
pq rs
tu vw
xy z{
|} ~
Untuk referensi, situs ini mencantumkan tabel ASCII lengkap.
Aturan
- Outputnya harus berupa teks yang tepat, seperti yang ditunjukkan di atas. Ruang putih terkemuka / trailing diizinkan.
- Lubang golf standar berlaku - jangan membaca ASCIIrisk ini dari internet, dll.
- Ini adalah kode-golf , sehingga solusi terpendek (dalam byte) menang.
code-golf
string
ascii-art
kolmogorov-complexity
FlipTack
sumber
sumber
Jawaban:
05AB1E ,
4038373635 byteCobalah online!
Penjelasan
sumber
žQ2ôÐ9£s30£R21£RøsrR18£R2ôvyN·ð×ý})˜.C»
, Saya mendapat 39, tapi saya pikir Anda bisa mencukurnya dengan ZIP.Python 3 , 110 byte
Menghasilkan templat
dengan
%c
untukx
, kemudian gunakan interpolasi string aktifrange(32,128)
untuk memasukkan nilai ASCII ke dalam pola.Cobalah online!
Python 2 lebih panjang satu byte, dengan tuple yang lebih panjang tetapi lebih pendek
print
.sumber
V ,
54, 50 byteCobalah online!
Tidak seperti biasanya, program ini tidak mengandung karakter yang tidak diinginkan.
Penjelasan:
Sekarang buffer terlihat seperti ini:
Sekarang kita membangun tengah:
Di sinilah agak aneh.
Ini catatan penting. The
>
perintah sebenarnya merupakan operator yang , yang berarti tidak melakukan apa-apa tanpa argumen, teks untuk beroperasi pada. Sebagai contoh,Tetapi karena perintah ini dalam satu lingkaran, kita dapat menyimpan karakter dengan tidak memberikan operator. Pada akhir loop, jika ada operator yang tertunda akan mengisi
_
(baris saat ini) sebagai argumen secara implisit.Sekarang saya akui loop ini sedikit aneh, dan bisa sulit untuk melacak seperti apa semua teks pada setiap saat. Jadi, Anda dapat menggunakan program yang lebih sederhana ini untuk melihat seperti apa bentuknya setelah N loop.
Jika Anda mengaturnya ke 9, Anda dapat melihat bahwa kami memiliki sedikit teks tambahan untuk dihilangkan. (Hanya garis saat ini).
Jadi kami menghapus baris saat ini dengan
dd
. Tapi tunggu! Anda tahu bagaimana saya mengatakan bahwa operator harus mengambil argumen yang kadang-kadang diisi secara implisit? Argumen juga secara implisit diisi pada akhir program. Jadi daripadadd
ataud_
(yang setara), kita bisa dengan mudahd
dan membiarkan V mengisi_
untuk kita.sumber
ÿ
:)Python 3
170165155147 bytesSaya sudah banyak bermain golf ini, saya lupa cara kerjanya ...
Cobalah online!
sumber
JavaScript (ES6),
156…115114 byteSayangnya,
String.fromCharCode()
biaya yang terkenal 19 byte.Diformat dan dikomentari
sumber
String.fromCharCode(...[...Array(n)].map(_=>k++))
untuk menghemat 4 byte.String.fromCharCode()
array, tapi saya pergi untuk pendekatan lain. Bagaimanapun, terima kasih!QBIC ,
153151 byteIni benar-benar hanya serangkaian FOR-loop dan casting int ke karakter (
chr$()
)Output sampel:
sumber
Perl , 113 byte
112 byte kode +
-l
bendera.Cobalah online!
sumber
PHP,
1101051039391 bytemencetak baris baru terkemuka. Jalankan dengan
-nr
atau coba online .Prinsip dasar diadopsi dari Arnauld, tetapi ini berulang.
Dan dibutuhkan keuntungan yang baik dari typecasts implisit PHP:
NULL to int untuk string index, float to int for
%
, boolean to int for&
dan for+=
.penjelasan dengan kode semu
sumber
Pyth , 53 byte
Program yang mencetak hasilnya.
Cobalah online!
Bagaimana itu bekerja
srdC127
membuat daftar karakter ASCII yang dapat dicetak dan merangkai ini menjadi string.c....,18 60
membagi string ini pada indeks18
dan60
, memberikan daftar tiga string yang sesuai dengan bagian output yang berbeda: atas, tengah dan bawah..e
memulai peta yang disebutkan di atas string dengan string sebagaib
dan indeks mereka sebagaik
.[...)
membuat daftar yang berisi tindakan yang diinginkan untuk setiap bagian diagram. Tindakan yang benar dipilih dengan mengindeks ke dalam daftar dengan indeks saat ini, menggunakan@...k
.Teratas
cb2
memisahkan string menjadi pasangan karakter, dan+L*9;
menambahkan9
spasi untuk setiap pasangan.Tengah
c2b
membagi string menjadi dua string dengan panjang yang sama.Bawah
cL2cb4
membagi string menjadi grup-grup yang terdiri dari empat karakter, dan masing-masing grup menjadi pasangan..e
memulai peta yang disebutkan, dengan pasangan string sebagaiZ
dan indeksnya sebagaiY
.j*yYdZ
bergabung dengan pasangan pada2*Y
spasi, dan+*-8Yd
menambahkan8-Y
spasi.js
menggabungkan semua hasil dan bergabung dengan daftar yang dihasilkan pada baris baru. Ini kemudian dicetak secara implisit.sumber
Haskell , 144 byte
Cobalah online!
Penjelasan:
b!n=[1..n]>>b
mendefinisikan fungsi!
yang mengulang daftar atau string-b
n
kali.unlines([" "!9++p]!9++["*"!21]!2++[" "!(8-n)++p++" "!(2*n)++p|n<-[0..8]])
menggunakan fungsi ini untuk menggambar tanda bintang dari tanda bintang (Oh, ironi!):#
didefinisikan sebagai fungsi yang secara berurutan menggantikan*
dalam string dengan karakter dari daftar yang diberikan. Disebut dengan tanda bintang di atas tanda bintang dan[' '..]
yang merupakan daftar semua karakter yang tak terbatas dimulai dengan spasi' '
.sumber
" "!(2*n)
bisa saja"(TWO SPACES)"!n
.Arang , 39 byte (tidak bersaing)
Cobalah online! AST memberikan penjelasan,
χ
sebagai variabel yang diinisialisasi untuk10
.sumber
J, 63
(tidak bersaing)ekspresi mengevaluasi dari kanan ke kiri sebagai berikut:
i: 10
dihitung dari -10 hingga +10|
ambil abs untuk mendapatkan +10 hingga 0 kembali ke +10=
mengklasifikasikan diri untuk mendapatkan bentuk V 1 di blok 0's|.
urutan baris terbalik untuk mendapatkan / \ bentuk( +. 1&|."1 )
ekspresi hook menggeser setiap baris ke kanan satu per satu dan OR dengan yang asli( 9 21&$@{. , 1: , 1: , }. )
garpu bersarang untuk diletakkan di horizontal dan peregangan atas,
untuk meruntuhkan blok menjadi urutan linier untuk akumulasi( * +/\ )
menumpuk dan berkembang biak dengan diri sendiri20 21 $
mengembalikan bentuk ke blok 20 baris 21 elemen31 +
tambahkan 31 karena pertama 1 harus berupa kode karakter spasi 3232 >.
lantai di 32a. {~
pilih karakter dari ascii built-insumber
smoutput
perintah atau yang setaraRuby, 91 byte
Tidak disatukan
sumber
Saya melewatkan jawaban dalam C # jadi ...
C # (.NET Core) ,
175174 byteCobalah online!
sumber
int
s di dalam for-loop:for(int i=0,j,d=32,s=1;i<54;i++)for(j=0
Tcl , 209 byte
Cobalah online!
Tcl , 212 byte
Cobalah online!
tcl, 213
demotcl, 214
demo
tcl, 227
demo
tcl, 236
demo
tcl, 237
demo
Pendekatan alternatif dengan ukuran yang sama:
demo
Tcl, 288
demotcl, 297 bytes (upaya naif)
demo
sumber
Puitis , 899 byte
Cobalah online!
Puitis adalah esolang yang saya buat pada tahun 2018 untuk proyek kelas. Ini pada dasarnya brainfuck dengan panjang kata, bukan simbol.
Puisi ini ... menyedihkan. 😟
sumber
Python 2.7,
194188 bytesumber
map(chr
kemap(c
seperti yangc
telah didefinisikan sebagaichr
Jq 1,5 , 180 byte
Diperluas
Cobalah online!
sumber
Garis miring ( /// ), 324 byte
Tindakan pertama (default) di Slash adalah 'print', sehingga string dicetak. The
/
dan\
harus melarikan diri dengan melanjutkan\
s.sumber
Java 8,
176173 bytePort dari C # .NET jawaban oleh @Charlie , jadi pastikan untuk menambahkannya.
-3 byte terima kasih kepada @ceilingcat .
Cobalah online.
sumber