Gambar ASCIIrisk


25

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 , sehingga solusi terpendek (dalam byte) menang.

2
Saya ingin mencoba tantangan ini ... tapi kedengarannya agak berisiko . Maafkan humor saya yang mengerikan.
HyperNeutrino

1
Stack Overflow memiliki kebijakan NoBadJokes, jadi saya harus mengabaikan komentar itu. Maaf tapi kebijakannya

2
Baik. Maaf karena melanggar kebijakan. Terima kasih telah mengabaikan komentar saya dengan membalasnya.
HyperNeutrino

Jawaban:


5

05AB1E , 40 38 37 36 35 byte

žQ2ô376S3*£`2ôvyN·ð×ýð«}rsJ2äsr)˜.c

Cobalah online!

Penjelasan

žQ                                   # push the printable ascii chars
  2ô                                 # split into pairs
    376S                             # split the number 376 into a list of digits
        3*                           # multiply each by 3 to get [9,21,18]
          £                          # divide the pairs of ascii chars into 
                                     # pieces of these sizes
           `                         # flatten list to stack
            2ô                       # split the "legs" of the asterisk into pairs of pairs
              v                      # loop over the pairs of pairs
               yN·ð×ý                # join the pairs by index*2 spaces
                     ð«              # append a space
                       }             # end loop
                        rs           # move the middle section to top of stack
                          J2ä        # convert to a string split into 2 pieces
                             sr      # rearrange the stack in the correct order
                               )˜    # wrap in a flattened list
                                 .c  # pad each element with spaces on either side

žQ2ôÐ9£s30£R21£RøsrR18£R2ôvyN·ð×ý})˜.C», Saya mendapat 39, tapi saya pikir Anda bisa mencukurnya dengan ZIP.
Magic Octopus Mm

@carusocomputing: Saya tidak berpikir zip sangat berguna di sini karena kami ingin karakter tetap berurutan. Memisahkan segala sesuatu berpasangan pada awalnya adalah ide yang bagus. Rasanya boros menggunakan begitu banyak r dan s tapi saya tidak melihat jalan di sekitarnya.
Emigna

13

Python 3 , 110 byte

s='%c';print(('\n'.join(['%10c%c']*9+[s*21]*2+[' '*(8-i)+s*2+'  '*i+s*2for i in range(9)]))%(*range(32,128),))

Menghasilkan templat

         xx
         xx
         xx
         xx
         xx
         xx
         xx
         xx
         xx
xxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxx
        xxxx
       xx  xx
      xx    xx
     xx      xx
    xx        xx
   xx          xx
  xx            xx
 xx              xx
xx                xx

dengan %cuntuk x, kemudian gunakan interpolasi string aktif range(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.

s='%c';print('\n'.join(['%10c%c']*9+[s*21]*2+[' '*(8-i)+s*2+'  '*i+s*2for i in range(9)]))%tuple(range(32,128))

Ini layak mendapat penghargaan kesamaan Menara Eiffel!
sergiol

11

V , 54 , 50 byte

¬ ~9ñ9É 11|á
ñ2ñ20lá
ñ$18é 9ñ^y|Ehé
Pf xxywk$hP>ñd

Cobalah online!

Tidak seperti biasanya, program ini tidak mengandung karakter yang tidak diinginkan.

Penjelasan:

¬ ~                     " Insert the entire printable ASCII range
   9ñ           ñ       " 9 times:
     9É                 "   Insert 9 spaces at the beginning of this line
        11|             "   Move to the 11'th column on this line
           á<CR>        "   And append a newline after the 11'th column

Sekarang buffer terlihat seperti ini:

          !
         "#
         $%
         &'
         ()
         *+
         ,-
         ./
         01
23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

Sekarang kita membangun tengah:

2ñ        ñ             " Two times:
  20l                   "   Move 20 characters to the right (because 'l' == 'right', duh)
     á<CR>              "   Append a newline

Di sinilah agak aneh.

$                       " Move to the end of this line 
 18é                    " Insert 18 spaces before the last character
     9ñ                 " Repeat the following 9 times:
       ^                "   Move to the first non-whitespace character
        y|              "   Yank all the whitespace before the current character. 
                        "   We'll call this the "Leading whitespace register"
          E             "   Move to the end of the current WORD (up to before a space)
           h            "   Move back one character
            é<CR>       "   And insert a newline before the current character
P                       "   Paste the leading whitespace for indentation
 f                      "   Move forward to a space
   xx                   "   Delete two characters
                        "   (Note how we are inbetween the two bottom branches right now)
     yw                 "   Yank everything upto the next branch (all spaces)
                        "   We'll paste this on the line up so that we can yank it again later
                        "   To keep track of how far apart the branches are
       k$               "   Move up a line and to the end of that line
         hP             "   Move back a character and paste the whitespace we yanked
           >            "   Indent this line by one space
            ñ           "   End the loop

Ini catatan penting. The >perintah sebenarnya merupakan operator yang , yang berarti tidak melakukan apa-apa tanpa argumen, teks untuk beroperasi pada. Sebagai contoh,

>_      "Indent the current line
>>      "Indent the current line
>j      "Indent the current and next line
>G      "Indent every line

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 daripada ddatau d_(yang setara), kita bisa dengan mudah ddan membiarkan V mengisi _untuk kita.


Pekerjaan yang bagus menyalahgunakan yang tersirat ÿ:)
Kritixi Lithos

5

Python 3 170 165 155 147 bytes

Saya sudah banyak bermain golf ini, saya lupa cara kerjanya ...

i=b=0
for x in range(32,127):a=x%2<1;c=x>90;d=x<50;print(end=[' '*9*d,['\n'+' '*(8-i),'  '*~-i][b]][c]*a+chr(x)+'\n'*(x==70or d*x%2));b^=a;i+=b*c*a

Cobalah online!


5

JavaScript (ES6), 156115 114 byte

Sayangnya, String.fromCharCode()biaya yang terkenal 19 byte.

f=(x=y=k=1)=>k<96?String.fromCharCode(x-22?y/2^5&&(y>9?x-y+1>>1&&22-y-x>>1:x/2^5)?32:31+k++:(x=!++y,10))+f(x+1):''

console.log(f())

Diformat dan dikomentari

f = (                         // given:
  x =                         //   - x = current column
  y =                         //   - y = current row
  k = 1                       //   - k = current ASCII character code, minus 31
) =>                          //
  k < 96 ?                    // if we havent't reached character #127 (96 + 31):
    String.fromCharCode(      //   let's compute the next character
      x - 22 ?                //   if x is not equal to 22 (end of line):
        y / 2 ^ 5 && (        //     if y doesn't equal 10 or 11 (horizontal bar):
          y > 9 ?             //       and either y is greater than 9:
            x - y + 1 >> 1 && //         and we are not located on one of the
            22 - y - x >> 1   //         bottom diagonals
          :                   //       or y is less or equal to 9:
            x / 2 ^ 5         //         and x doesn't equal 10 or 11 (vertical bar)
        ) ?                   //     then:
          32                  //       append a space
        :                     //     else:
          31 + k++            //       append the next ASCII character
      :                       //   else:
        (x = !++y, 10)        //     increment y, reset x and append a LineFeed
    ) + f(x + 1)              //   do a recursive call with x + 1
  :                           // else:
    ''                        //   stop recursion

Saya pikir Anda bisa lakukan String.fromCharCode(...[...Array(n)].map(_=>k++))untuk menghemat 4 byte.
ETHproduk

@ ETHproductions Saya suka ide memanggil String.fromCharCode()array, tapi saya pergi untuk pendekatan lain. Bagaimanapun, terima kasih!
Arnauld

3

QBIC , 153 151 byte

[32,49,2|?space$(9)+chr$(a)+chr$(a+1)][2|X=Y[a,a+20|X=X+chr$(c)]a=a+21?X][0,8|X=space$(8-d)[0,1|X=X+chr$(a+e)]X=X+space$(d*2)[2,3|X=X+chr$(a+f)]a=a+f?X

Ini benar-benar hanya serangkaian FOR-loop dan casting int ke karakter ( chr$())

Output sampel:

          !
         "#
         $%
         &'
         ()
         *+
         ,-
         ./
         01
23456789:;<=>?@ABCDEF
GHIJKLMNOPQRSTUVWXYZ[
        \]^_
       `a  bc
      de    fg
     hi      jk
    lm        no
   pq          rs
  tu            vw
 xy              z{
|}                ~

3

Perl , 113 byte

112 byte kode + -lbendera.

sub g{chr$c+++32}print$"x9,&g,&g for 0..8;print map&g,0..20for 0,1;print$"x-$_,&g,&g,$"x(16+2*$_),&g,&g for-8..0

Cobalah online!


3

PHP, 110 105 103 93 91 byte

for(;$c<95;$y+=!$x%=21)echo"
"[$x],chr(31+($y%11<9&(max($y,10)-abs(9.5-$x++))%11<9?:++$c));

mencetak baris baru terkemuka. Jalankan dengan -nratau 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

If $x is 0, print a newline. ("\n"[$x] is newline for $x=0; empty for every larger $x)
if $y is neither 9 nor 10 (not middle part: $y<9|$y>10 <=> $y%11<9)
AND distance to center == abs(9.5-$x) (in [0.5,1.5,..,10.5]) ->
    lower part:     abs($y-10-distance)>1                   => ($y-distance)%11<9
                (this works because $y is always <20)
    upper part: $x<9|$x>10 <=> distance>1 <=> 10-distance<9 => (10-distance)%11<9
                (this works because % has negative results for negative first operands)
    both parts: $y>9?$y:10 <=> max($y,10)
// $a?:$b evaluates to $a if $a is truthy, to $b else
// and the ternary condition evaluates to 1 if the coords are not in the shape
then print chr(31+1) = space
else print chr(31+incremented $c)

2

Pyth , 53 byte

js.e@[+L*9;cb2c2b.e+*-8Ydj*yYdZcL2cb4)kcsrdC127,18 60

Program yang mencetak hasilnya.

Cobalah online!

Bagaimana itu bekerja

srdC127 membuat daftar karakter ASCII yang dapat dicetak dan merangkai ini menjadi string.

c....,18 60membagi string ini pada indeks 18dan 60, memberikan daftar tiga string yang sesuai dengan bagian output yang berbeda: atas, tengah dan bawah.

.ememulai peta yang disebutkan di atas string dengan string sebagai bdan indeks mereka sebagai k.

[...)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

    cb2memisahkan string menjadi pasangan karakter, dan +L*9;menambahkan 9spasi 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.

    .ememulai peta yang disebutkan, dengan pasangan string sebagai Zdan indeksnya sebagai Y.

    j*yYdZbergabung dengan pasangan pada 2*Yspasi, dan +*-8Ydmenambahkan 8-Yspasi.

jsmenggabungkan semua hasil dan bergabung dengan daftar yang dihasilkan pada baris baru. Ini kemudian dicetak secara implisit.


2

Haskell , 144 byte

b!n=[1..n]>>b
('*':r)#(a:s)=a:r#s
(a:r)#s=a:r#s
r#s=r
p="**"
f=unlines([" "!9++p]!9++["*"!21]!2++[" "!(8-n)++p++" "!(2*n)++p|n<-[0..8]])#[' '..]

Cobalah online!

Penjelasan:

b!n=[1..n]>>bmendefinisikan fungsi !yang mengulang daftar atau string- b nkali.

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 ' '.


Sangat terlambat ke pesta di sini, tapi itu " "!(2*n)bisa saja "(TWO SPACES)"!n.
Lynn

2

Arang , 39 byte (tidak bersaing)

GH↑χ→⁴↓χ→¹¹↓⁴←χ↘χ←⁴↖⁹←²↙⁹←⁴↗χ←⁹↑⁴→⁹ ↓¤γ

Cobalah online! AST memberikan penjelasan, χsebagai variabel yang diinisialisasi untuk 10.


2

J, 63

(tidak bersaing)

a.{~32>.31+20 21$(* +/\),(9 21&$@{.,1:,1:,}.)(+.1&|."1)|.=|i:10

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 sendiri
  • 20 21 $ mengembalikan bentuk ke blok 20 baris 21 elemen
  • 31 + tambahkan 31 karena pertama 1 harus berupa kode karakter spasi 32
  • 32 >. lantai di 32
  • a. {~ pilih karakter dari ascii built-in

4
Selamat datang di PPCG! Kenapa Anda menandai ini sebagai tidak bersaing?
Martin Ender

Saya hanya berpikir saya akan menambah usaha saya meskipun itu adalah waktu yang lama setelah kompetisi diluncurkan .. apakah Anda mengatakan setiap puzzle tetap terbuka? .. juga untuk ekspresi J untuk mencetak di luar REPL, yaitu ketika dieksekusi dalam skrip saya perlu awalan smoutputperintah atau yang setara
jayprich

Tantangan umumnya tetap terbuka tanpa batas (bahkan jika jawaban sudah diterima). Ada beberapa jenis tantangan khusus yang kadang tertutup bagi entri baru (chaining-and-robbers, king-of-the-hill muncul dalam pikiran), tetapi itu biasanya akan dikatakan demikian dalam deskripsi tantangan. Mengenai apakah ini adalah format jawaban yang valid, Anda harus bertanya kepada seseorang dengan pengalaman J yang lebih banyak, tetapi jawaban REPL umumnya baik-baik saja selama mereka ditandai demikian.
Martin Ender

1

Ruby, 91 byte

->{(-11..8).map{|i|["%s"*21,"%#{9-i}s%s%#{i*2+1}s%s","%10s%s"][i/2<=>-1]}*$/%[*' '..?~,$/]}

Tidak disatukan

->{(-11..8).map{|i|            #For each line
  ["%s"*21,                    #If i/2==-1 make a format string of 21 %s
   "%#{9-i}s%s%#{i*2+1}s%s",   #If i/2>-1 make a format string %{9-i}s%s%{i*2+1}s%s
   "%10s%s"][i/2<=>-1]         #If i/2<-1 make a format string %10s%s
  }*$/%                        #Join the format strings with newlines $/ then use sprintf operator %
  [*' '..?~,$/]                #to replace the %s with *' '..'~' and a newline for last corner.
}

1

Saya melewatkan jawaban dalam C # jadi ...

C # (.NET Core) , 175 174 byte

_=>{var r="";for(int i=0,j,d=32,s=1;i<54;i++)for(j=0;j++<"*#4#4#4#4#4#4#4#4#+K)%1###/#%#-#'#+#)#)#+#'#-#%#/###1#"[i]-33;)r+=(char)(i%2<1?32:d++)+(s++%21<1?"\n":"");return r;}

Cobalah online!

  • 1 byte disimpan berkat Kevin Cruijssen!

1
Anda dapat menyimpan byte dengan meletakkan ints di dalam for-loop:for(int i=0,j,d=32,s=1;i<54;i++)for(j=0
Kevin Cruijssen

1

Tcl , 209 byte

proc I {} {incr ::i}
proc A {} {time {append a [$::F %c [I]]} 21;puts $a}
set i 31
time {puts [[set F format] %10c%c [I] [I]]} 9
A
A
time {puts [$F %[expr 32-[I]/4]c%c $i [I]][$F %[expr $i/2-45]c%c [I] [I]]} 9

Cobalah online!


Tcl , 212 byte

proc I {} {incr ::i}
proc A {} {time {append a [$::F %c [I]]} 21;puts $a}
set i 31
time {puts [[set F format] %10c%c [I] [I]]} 9
A
A
time {puts [$F %[expr (129-[I])/4]c%c $i [I]][$F %[expr $i/2-45]c%c [I] [I]]} 9

Cobalah online!

tcl, 213

proc I {} {incr ::i}
set F format
proc A {} {time {append a [$::F %c [I]]} 21;puts $a}
set i 31
time {puts [$F %10c%c [I] [I]]} 9
A
A
time {puts [$F %[expr (129-[I])/4]c%c $i [I]][$F %[expr $i/2-45]c%c [I] [I]]} 9

demo


tcl, 214

proc I {} {incr ::i}
set F format
proc A {} {time {append a [$::F %c [I]]} 21;puts $a}
set i 31
time {puts [$F %10c%c [I] [I]]} 9
A
A
time {I;puts [$F %[expr (129-$i)/4]c%c $i [I]][$F %[expr $i/2-45]c%c [I] [I]]} 9

demo


tcl, 227

proc I {} {incr ::i}
set F format
proc A {} {time {append ::a [$::F %c [I]]} 21}
set i 31
time {puts [$F %10c%c [I] [I]]} 9
A
set a $a\n
A
puts $a
time {I;puts [$F %[expr (129-$i)/4]c%c $i [I]][$F %[expr $i/2-45]c%c [I] [I]]} 9

demo

tcl, 236

proc I {} {incr ::i}
set F format
proc A {} {time {append ::a [$::F %c [I]]} 21}
set i 31
time {puts [$F %10c%c [I] [I]]} 9
set a ""
A
set a $a\n
A
puts $a
time {I;puts [$F %[expr (129-$i)/4]c%c $i [I]][$F %[expr $i/2-45]c%c [I] [I]]} 9

demo


tcl, 237

proc I {} {incr ::i}
set F format
proc A {} {time {set ::a $::a[$::F %c [I]]} 21}
set i 31
time {puts [$F %10c%c [I] [I]]} 9
set a ""
A
set a $a\n
A
puts $a
time {I;puts [$F %[expr (129-$i)/4]c%c $i [I]][$F %[expr $i/2-45]c%c [I] [I]]} 9

demo


Pendekatan alternatif dengan ukuran yang sama:

proc I {} {incr ::i}
set F format
proc A b {time {upvar $b c;set c $c[$::F %c [I]]} 21}
set i 31
time {puts [$F %10c%c [I] [I]]} 9
set a ""
A a
set a $a\n
A a
puts $a
time {I;puts [$F %[expr (129-$i)/4]c%c $i [I]][$F %[expr $i/2-45]c%c [I] [I]]} 9

demo

Tcl, 288

lassign {set while puts format incr expr} S W P F I E
$S i 31
$W \$i<48 {$P [$F %10c%c [$I i] [$I i]]}
$S a ""
$W {[$I i]<71} {$S a $a[$F %c $i]}
$S a $a\n
$W \$i<92 {$S a $a[$F %c $i];$I i}
$P $a
$W \$i<128 {$P [$F %[$E (129-$i)/4]c%c $i [$I i]][$F %[$E $i/2-45]c%c [$I i] [$I i]]; $I i}

demo


tcl, 297 bytes (upaya naif)

set i 31
while \$i<48 {puts [format %10c%c [incr i] [incr i]]}
set a ""
while {[incr i]<71} {set a $a[format %c $i]}
set a $a\n
while \$i<92 {set a $a[format %c $i];incr i}
puts $a
while \$i<128 {puts [format %[expr (129-$i)/4]c%c $i [incr i]][format %[expr $i/2-45]c%c [incr i] [incr i]]; incr i}

demo


1
Apa yang Anda maksud dengan "upaya naif"? Bukankah seharusnya Anda memasukkan panjang dalam judul?

1
Maksud saya ada ruang untuk bermain golf lebih banyak, karena masih ada banyak pengulangan. Dan saya akan bermain golf lebih banyak.
sergiol

Pendekatan mentah memiliki tingkat 254 byte.
sergiol


@ Khusus ASCII: Terima kasih. Milik saya tidak persis sama dengan saran Anda! ;)
sergiol

1

Puitis , 899 byte

ill be honest with you
i expect a big solitude
i guess i had a guilt
my own idea being:i was real alone,i was a lonely human
also,i am still
o,i guess i was expecting a shift
i figured,surely i know i am tired of silence
now i dreamed for a shift
a magical desire cant come
i am barely a man,so i guess i see why a woman i see ignores myself
i know i am awful
o,a night of passion and a moment of love
i am truly the foolish person,every time i am saying i may recapture a love
o,i think i can,i think i can
i really do know i am unfit
o,i notice a lot,i think i know i am unfit
o,a novel,or perhaps poetry in code,i do enjoy the writing
and i shudder and i wonder in a moment
i was a weirdo,i was a freak,or like,i am creepy
o,i think i was a misfit
i know i am,really
o,i ought not concern myself
and sure,i am still some joyless man
i focused and i tried
a lasting solace and joy is nearby for me

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. 😟


0

Python 2.7, 194 188 byte

k,l,c,s,r=8,0,chr,' ',range;o=''.join(map(chr,r(32,127)))
for i in r(0,18,2):print s*9+o[i:i+2]
print o[18:39]+'\n'+o[39:60]
for i in r(60,95,4):print s*k+o[i:i+2]+s*l+o[i+2:i+4];k-=1;l+=2

Anda dapat menjatuhkan 2 byte dengan mengubah map(chrke map(cseperti yang ctelah didefinisikan sebagaichr

0

Jq 1,5 , 180 byte

foreach((range(9)|[9,2]),(range(2)|[0,21]),(range(9)|[8-.,2,.+.,2]))as$r({s:[range(32;127)]|implode};.r=$r|.p=""|until(.r==[];.p+=" "*.r[0]+.s[:.r[1]]|.s =.s[.r[1]:]|.r=.r[2:]);.p)

Diperluas

foreach (                              # instruction sequence: [indent, count]
    (range(9)|[9,2]),                  # 9 rows of 2 characters indented 9 spaces
    (range(2)|[0,21]),                 # 2 rows of 21 characters
    (range(9)|[8-.,2,.+.,2])           # 9 rows of 4 characters with varying indent
) as $r (
    {s:[range(32;127)]|implode}        # state = ascii string
  ; .r = $r                            # current instruction
  | .p = ""                            # print string for this row
  | until(.r==[];                      # until current instruction is exhausted
        .p += " "*.r[0] + .s[:.r[1]]   # add to print string
      | .s = .s[.r[1]:]                # remove from state
      | .r = .r[2:]                    # remove from instruction
    )
  ; .p                                 # emit print string
 )

Cobalah online!


0

Garis miring ( /// ), 324 byte

          !
         "#
         $%
         &'
         ()
         *+
         ,-
         .\/
         01
23456789:;<=>?@ABCDEF
GHIJKLMNOPQRSTUVWXYZ[
        \\]^_
       `a  bc
      de    fg
     hi      jk
    lm        no
   pq          rs
  tu            vw
 xy              z{
|}                ~

Tindakan pertama (default) di Slash adalah 'print', sehingga string dicetak. The /dan \harus melarikan diri dengan melanjutkan \s.


Anda harus menambahkan jumlah byte dan lebih baik tautan ke juru bahasa. Itu terlihat agak tidak disunat (tidak yakin apakah lebih baik melakukan lebih baik di ///).
Stewie Griffin

Agak lucu untuk menunjukkan keindahan ///, dan aku akan menambahkannya!
clabe45

0

Java 8, 176 173 byte

v->{for(int i=0,j,d=32,s=1;i<54;i++)for(j=0;j++<"*#4#4#4#4#4#4#4#4#+K)%1###/#%#-#'#+#)#)#+#'#-#%#/###1#".charAt(i)-33;)System.out.printf(s++%21<1?"%c\n":"%c",i%2<1?32:d++);}

Port dari C # .NET jawaban oleh @Charlie , jadi pastikan untuk menambahkannya.
-3 byte terima kasih kepada @ceilingcat .

Cobalah online.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.