Putar Seni ASCII oleh 45 Derajat

21

Tugas Anda adalah mengambil gambar seni ASCII dan mengeluarkannya diputar searah jarum jam sebesar 45 derajat dan diskalakan dengan faktor 2 . Penskalaan berasal dari penggunaan pola kisi yang memperkenalkan ruang antar karakter.

Untuk menjelaskan secara visual, seorang 3×3 blok akan diproses seperti:

123
456
789

menjadi

  1
 4 2
7 5 3
 8 6
  9

Karakter tidak akan diubah, sehingga kotak akan terlihat aneh setelah rotasi:

+-+
| |
+-+

menjadi

  +
 | -
+   +
 - |
  +

Untuk menjelaskan proses lebih eksplisit, output terdiri dari pola kisi berlian di mana baris atas sesuai dengan karakter kiri atas input, baris berikutnya sesuai dengan tetangga kanan dan di bawah, baris berikutnya adalah tetangga mereka, dan sebagainya sampai semua karakter ditempatkan pada kisi.

Contohnya

           FISHKISSFISHKIS               
       SFISHKISSFISHKISSFISH            F
    ISHK   ISSFISHKISSFISHKISS         FI
  SHKISS   FISHKISSFISHKISSFISS       FIS
HKISSFISHKISSFISHKISSFISHKISSFISH    KISS
  FISHKISSFISHKISSFISHKISSFISHKISS  FISHK
      SSFISHKISSFISHKISSFISHKISSFISHKISSF
  ISHKISSFISHKISSFISHKISSFISHKISSF  ISHKI
SSFISHKISSFISHKISSFISHKISSFISHKIS    SFIS
  HKISSFISHKISSFISHKISSFISHKISS       FIS
    HKISSFISHKISSFISHKISSFISHK         IS
       SFISHKISSFISHKISSFISH            K
         ISSFISHKISSFISHK                

Sumber

Menjadi

     H
      K S
       I H I
      F S K S
 S     I S I H S
  S I   S F S K F
   F S   H I S   I
  H I H   K S     S F
   K S K S I H     H I
    I H I S S K   I K S
   H S K S F S I F S I H
    K S I S I F S I S S K
     I F S F S I S S F S I
      S I S I H S F H I F S
     S S S F S K H I K S I S
      F F H I H I K S I H S F
       I I K S K S I H S K H I
      I S S I H I S S K S I K S
       S H H S K S F S I F S I H
        S K K S I S I F S I S S K
         F I I F S F S I S S F S I
          I S S I S I H S F H I F S
           S S S S F S K H I K S I
            H F F H I H I K S I H S
             K I I K S K S I H S K H
              I S S I H I S S K S I
               S H H S K S F S I F S
                S K K S I S I F S I S
                 F I I F S F S I S S
                  I S S I S I H S F S
                   S S S S F S K H I
                    H F F H I H I K S
                     K I I K S K S I H
                        S S I H I S S
                         H H S K S F S
                            K S I S I
                                 S F S
                                      H F K F F F
                                       K I I I I
                                      I I S S S
                                       S S H S
                                      S H S K
                                       F K F
                                      F I I
                                       I S
                                      I S
                                       S
                                      K

      _,,ddF"""Ybb,,_      
    ,d@#@#@#@g,   `"Yb,    
  ,d#@#V``V@#@#b      "b,  
 d@#@#I    I@#@8        "b 
d@#@#@#A..A@#@#P         `b
8#@#@#@#@#@#@8"           8
8@#@#@#@#@#@J             8
8#@#@#@#@#P               8
Y@#@#@#@#P    ,db,       ,P
 Y@#@#@#@)    @DWB      aP 
  "Y#@#@#b    `69'    aP"  
    "Y@#@#g,,     _,dP"    
      `""YBBgggddP""'       

Sumber

Menjadi

     d d ,
    8 @ @ d ,
   8 # # # # d _
  8 @ @ @ @ @ @ ,
 Y # # # # # # # ,
  @ @ @ @ @ I V @ d
 Y # # # # #   ` # d
  @ @ @ @ @ A   ` @ F
 " # # # # # .   V # "
  Y @ @ @ @ @ .   @ @ "
   # # # # # # A I # g "
  " @ @ @ @ @ @ @ @ @ , Y
   Y # # # # # # # # #   b
    @ @ @ P P @ @ @ @ b   b
   ` # # )     J 8 # 8     ,
    " @ b         " P     ` ,
     " #                   " _
      Y g                   Y
       B ,     ,             b
        B ,   @ d             ,
         g   ` D b           "
          g   6 W ,           b
           g   9 B             ,
            d   '             "
             d                 b
              P _             `
               " ,             b
                " d           8
                 ' P a       8
                    " P a , 8
                       " P P

                             ...,?77??!~~~~!???77?<~....
                        ..?7`                           `7!..
                    .,=`          ..~7^`   I                  ?1.
       ........  ..^            ?`  ..?7!1 .               ...??7
      .        .7`        .,777.. .I.    . .!          .,7!
      ..     .?         .^      .l   ?i. . .`       .,^
       b    .!        .= .?7???7~.     .>r .      .=
       .,.?4         , .^         1        `     4...
        J   ^         ,            5       `         ?<.
       .%.7;         .`     .,     .;                   .=.
       .+^ .,       .%      MML     F       .,             ?,
        P   ,,      J      .MMN     F        6               4.
        l    d,    ,       .MMM!   .t        ..               ,,
        ,    JMa..`         MMM`   .         .!                .;
         r   .M#            .M#   .%  .      .~                 .,
       dMMMNJ..!                 .P7!  .>    .         .         ,,
       .WMMMMMm  ?^..       ..,?! ..    ..   ,  Z7`        `?^..  ,,
          ?THB3       ?77?!        .Yr  .   .!   ?,              ?^C
            ?,                   .,^.` .%  .^      5.
              7,          .....?7     .^  ,`        ?.
                `<.                 .= .`'           1
                ....dn... ... ...,7..J=!7,           .,
             ..=     G.,7  ..,o..  .?    J.           F
           .J.  .^ ,,,t  ,^        ?^.  .^  `?~.      F
          r %J. $    5r J             ,r.1      .=.  .%
          r .77=?4.    ``,     l ., 1  .. <.       4.,
          .$..    .X..   .n..  ., J. r .`  J.       `'
        .?`  .5        `` .%   .% .' L.'    t
        ,. ..1JL          .,   J .$.?`      .
                1.          .=` ` .J7??7<.. .;
                 JS..    ..^      L        7.:
                   `> ..       J.  4.
                    +   r `t   r ~=..G.
                    =   $  ,.  J
                    2   r   t  .;
              .,7!  r   t`7~..  j..
              j   7~L...$=.?7r   r ;?1.
               8.      .=    j ..,^   ..
              r        G              .
            .,7,        j,           .>=.
         .J??,  `T....... %             ..
      ..^     <.  ~.    ,.             .D
    .?`        1   L     .7.........?Ti..l
   ,`           L  .    .%    .`!       `j,
 .^             .  ..   .`   .^  .?7!?7+. 1
.`              .  .`..`7.  .^  ,`      .i.;
.7<..........~<<3?7!`    4. r  `          G%
                          J.` .!           %
                            JiJ           .`
                              .1.         J
                                 ?1.     .'
                                     7<..%

Sumber

Menjadi

                                                      . .
                                                     .   .
                                                      .   .
                                                     b     .
                                                    .       .
                                                     ,       .
                                                  . J .       .
                                                 . %   ?       .
                                                  + .   4 . .
                                                 P ^ 7     ! ? .
                                                l     ; ^       7 .
                                               ,     .           ` .
                                            d         ,             ^ .
                                           . M r     ,                 ,
                                            W M       ,                 =
                                             M M     d                   ` .
                                              M N   J ,                     .
                                             ? M J . M                       ?
                                              T M . M a           , .         7
                                               H M . # .             = .       ` .
                                              ? B m !   .     . . , .   ^ .       .
                                               , 3       ` , J % `   ^ .   ,       .
                                                                        ?   7       ,
                                               7     ?                   7   7       ?
                                      r .       ,     ^                   ?   7       7
                                 .   r   J .           .                   ?   . ?     7
                                , ? .   % . .   `       .                   ?   . ` .   ?
                                 . ` $ . J   = . <                     .     7 .     .   ?
                                      . 7 .     . .                 . M ,     ~ l .   ~   !
                                   .   . 7   .   .       ?         . M M       .   I . 7   ~
                                    . .   = $ ^   .       7         M M L           . . ^   ~
                                     1 5   ?       d       7       M M N       1       ? `   ~
                                      J     4   ,   n       ?     . M M             ?   7     ~
                                       L     .   , G .       !     M M !       5     i   !     !
                                            .     , . .         .   # `       .       .   1     ?
       . .                             1     X   5 t , .   .     .             ;     .   .   I   ?
      . ` ^ , .                         .     .   r   7     .     ,           F       > .   .     ?
       7     ` ? .                     J       .         .   .     ?       . F         r   .       7
        <       ` .                     S         ` J ,   .   .     ! . . . t             . !       7
         .         ^ .         .         .         `   ^ . .   .       P %               . `         ?
          .           J       j ,       ` .     `   ,     .     ?     . 7               `             <
           .           ? .       7       >       ` .       , .   7 .   . !             `               ~
            .           ? , r 8   !     +           n       o .     , .     .                           .
             .           , 7   .       =   .       . .       . .     ^ Y                                 .
              .             ,     7   2     .     . % .       . ,     . r   .         .                   .
               .         <         ~ r         .   ,             7     `     >         ,                   .
                .         . `       L       r   .         l       . .       .         6       4 .
                 .       1   T       .     $     ^ .     .       . . = . . . .       .         . = .       `
                  .           .       .   r   `     =   . , .   ? ? J   ^ %         . .         .   ,       7
                   ~     L   ~ .       . t     t     ` J %   ,   ^   = .           . !           .   ^ .     !
                    <   .     . .     . $ `   ,             J     .   ! `         . ~                   ,     .
                     < .     L   .   G = = 7   .       ` . . . 1       7 ' , . . ,               ?       7     .
                      3     .     .       . ~ t     J     $ '     ,     ,   ` ^ !                 <       ! .
                       ?   .       . j     ? .     r .   . .   r   r . J                           .         .
                        7 . .       . ,     7 .   J     L J ? L   . . ^ .           Z                         . ?
                         ! `       ,         r   .   ~     7 ` . . . 1               7             .           ? 1
                          ` .       . %     j     ;   = 4   ?   ' `                 ? `             =           ? .
                             .   . .             j     . .   ?       <   `           ,               .           7
                              ` . % 7         .   .     .     7       .   ?
                               7 `   .         . r .     G     <     J     ~         5               ?
                                .     .         ,         .     .     .     .         .     .         ,
                               4       .         ^ ;             .   t               ?
                                .       .           ?               .       .         .               4
                               J   . . . .           1           7 .         =       1                 .
                                . r ^ ^ ` .           .           . ;         .     .                 ,
                                 `       ! .         .             :                 ,         `       ,
                                J           .     . . .                       4     F           ?     .
                                 i . ` , .   .     >                           . . F             ^     ;
                                  J !   ` ?   ?     =                         ` , %               .   .
                                 .         7   T     .                         '                   .   ,
                                  1         !   i . .                                                 ,
                                   .         ?   . D .                                                 ,
                                              7   .                                                 ? ,
                                   ?           + ` l                                                 ^ ,
                                    1           . j                                                   C
                                     .         .   ,
                                                i 1
                                                 .
                                      7         G ;
                                       <         %
                                        .     . %
                                         . . J `
                                          % '

Aturan dan Catatan

  • Input dan output mungkin dalam format yang mudah dan pengkodean karakter selama mendukung semua karakter ASCII yang dapat dicetak (U + 0020 - U + 007E, LF)
  • Anda dapat mengasumsikan input hanya berisi karakter ASCII yang dapat dicetak (didefinisikan di atas)
  • 100×100
  • Anda dapat mengasumsikan input benar-empuk, untuk menjadi kotak karakter persegi panjang yang sempurna.
    • 100×100
  • Gunakan ruang ASCII untuk menyelaraskan dan karakter spasi.
  • Karakter mungkin overpadded (atau bahkan underpadded) ke arah mana pun selama hasilnya selaras.

Selamat Golf!

Beefster
sumber
5
Kasihan Sonic, dia hanya ingin hidup D:
Benjamin Urquhart
Anda mungkin ingin menggunakan karakter lebar-lebar sehingga setelah berputar itu masih memiliki karakter Tampilan bentuk yang cukup persegi pada kotak persegi? , Mengubah karakter lebar penuh menjadi karakter setengah lebar (perl, regex, Jepang)
phuclv
@ Shaggy saya katakan hanya terkait, tapi ya, itu pasti memiliki banyak kesamaan. Satu-satunya perbedaan mendasar adalah tantangan ini membutuhkan ruang bantalan dalam output. Dalam berita lain, Anda sangat pandai menemukan korban penipuan.
Beefster
Jika itu benar, saya akan menemukan tantangan itu saat ini masih di Sanbox! Saya sengaja menemukannya secara tidak sengaja saat mencari dupe ide tantangan yang saya miliki dan langsung ingat milik Anda.
Shaggy

Jawaban:

18

Arang , 2 byte

↘A

Cobalah online! Tautan adalah untuk mengucapkan versi kode. Mengambil input baik sebagai string literal baris-tunggal tunggal atau sebagai array string. Penjelasan: membaca input dan output dalam arah diagonal yang diinginkan. Versi yang menerima daftar garis putus-putus dari STDIN:

WS⊞υι↘υ

Cobalah online! Tautan adalah untuk mengucapkan versi kode.

Neil
sumber
Wow. Alat yang tepat untuk pekerjaan itu.
connectyourcharger
10

Kanvas , 6 byte

/⤢ *\⤢

Coba di sini!

/        pad each line with one less space than the previous
 ⤢       transpose the object
   *     place a space between every character
    \    pad each line with one more space than the previous
     ⤢   transpose the object back

Contoh:

123
456
789
/:
  123
 456
789
⤢:
  7
 48
159
26 
3  
 *:
    7
  4 8
1 5 9
2 6  
3    
\:
    7    
   4 8   
  1 5 9  
   2 6   
    3    
⤢:


  1  
 4 2 
7 5 3
 8 6 
  9  


dzaima
sumber
Apakah kode dan penjelasan Anda tidak menggunakan garis miring yang berbeda?
Adám
@ Adam Saya biasanya ASCII-fy penjelasan bagi mereka untuk menyelaraskan lebih baik
dzaima
6

Python 3.8 (pra-rilis) , 104 byte

lambda a:[" "*abs(l+~i)+" ".join(a[i-j][j]for j in range(i+1)if j<l>i-j)for i in range((l:=len(a))*2-1)]

Cobalah online!

-5 byte berkat ovs (Python 3.8 hal)

HyperNeutrino
sumber
1
5 byte lebih pendek dalam Python 3.8
ovs
@saya tunggu 3.8 keluar? : o penugasan sebaris. saya suka ini. Terima kasih!
HyperNeutrino
2

J , 56 45 byte

-11 byte terima kasih kepada FrownyFrog!

-@}:@(i.@-@#,#\@{.)|."_1+/@${."1|.@,@,.&' '/.

Cobalah online!

Galen Ivanov
sumber
inilah 45
FrownyFrog
@FrownyFrog Terima kasih! Cemerlang seperti biasa!
Galen Ivanov
1

05AB1E , 18 12 byte

RāRú€Sζðýāú»

Port of @dzaima 's Canvas menjawab , jadi pastikan untuk membesarkan hatinya !!

Masukan sebagai daftar baris.

Cobalah online.

Penjelasan:

R             # Reverse the (implicit) input-list
 ā            # Push a list in the range [1, length of input-list],
              # without popping the list itself
  R           # Reverse this list to [length, 1]
   ú          # Pad the reversed input-list with that many leading spaces
    S        # Split each string on spaces
      ζ       # Zip/transpose; swapping rows/columns, with space default as filler
       ðý     # Join each inner character-list by spaces
         ā    # Push a list in the range [1, length of this string-list],
              # without popping the list itself
          ú   # Pad the list of strings with that many leading spaces
           »  # Join the string-list by newlines (and output the result implicitly)

Asli 18 17 byte jawaban:

g2IεNFR]JŽE5SΛ

Masukan sebagai daftar baris.

Cobalah online.

Penjelasan:

g     # Get the length of each line of the (implicit) input
       # (assumes they are all padded with spaces to make them of equal length)
  2.ý  # Intersperse this list with 2 (i.e. [3,3,3] becomes [3,2,3,2,3])
Iε     # Map the strings in the input to:
  NF   #  Loop the 0-based index amount of times:
    R  #   And reverse the current string that many times
 ]J    # After the loop and map: join the strings to a single string
ŽE5S   # Push compressed integer 3575, converted to a list of digits: [3,5,7,5]
Λ      # Use the canvas with these three options (which is output immediately by default)

Lihat ini 05AB1E ujung tambang (bagian Cara kompres bilangan bulat besar? ) Untuk memahami mengapa ŽE5adalah 3575.

Beberapa info lebih lanjut tentang builtin 05AB1E Canvas dapat ditemukan di tip saya ini.

Canvas builtin mengambil tiga parameter:

  • Sebuah Panjang: Ukuran garis. Ini bisa berupa bilangan bulat tunggal, atau daftar bilangan bulat
  • b String: Karakter yang ingin kita tampilkan. Ini bisa berupa karakter tunggal, string, daftar karakter, atau daftar string (dalam tiga kasus terakhir ini akan menggunakan semuanya satu per satu termasuk bungkus)
  • c[0,7]+× ,8 ).

Dalam tantangan ini saya menggunakan opsi berikut:

c[3,5,7,5][,,↖↙]

     S
      
   ↙↖   
        
↙↖      ↖↙
     
  .   
    .

b

Sebuah372521

Kevin Cruijssen
sumber
0

Jelly , 26 byte

JU’;ZJ$x@€⁶ðżµUŒDUṙLN‘ƊṚK€

Cobalah online!

Nick Kennedy
sumber
0

JavaScript (ES6), 102 byte

f=
s=>(z=[...Array(100)],o=z.map(v=>z.map(_=>" ")),s.map((r,y)=>r.map((c,x)=>o[y+x][s.length+~y+x]=c)),o)

Cobalah online!

Input dan output sebagai daftar daftar.

Penjelasan:

Membuat kisi ruang 100x100. Kemudian loop melalui input, mengatur entri yang sesuai di kisi. Indeks karakter yang akan ditetapkan dihitung sebagaix' = length of input - 1 + y + x dan y' = y + x.

Hasil yang dikembalikan adalah daftar daftar 100x100, dengan output di sudut kiri atas.

Birjolaxew
sumber
0

Ruby , 94 byte

->l{w=(2..y=l.size+b=l[z=0].size).map{' '*y};l.map{|r|b.times{|x|w[x+z][b+~z+x]=r[x]};z+=1};w}

Cobalah online!

GB
sumber
0

C # (Visual C # Interactive Compiler) , 153 byte

z=>{var m=new char[100,100];var s=z.Split('\n');var l=s[0].Length;for(int x=0;x<l-1;x++)for(int y=0;y<s.GetLength(0);y++)m[x+y,l+~y+x]=s[y][x];return m;}

Cobalah online!

Minta string dan mengembalikan array 2D 100 x 100 array.

Saya mencoba menggunakan LINQ / Koleksi, tetapi akhirnya saya menyerah.

Qapples
sumber
0

Bahasa Wolfram (Mathematica) , 79 byte

SparseArray[100+{#2+#,#2-#}&@@#&/@Range@100~Tuples~2->Flatten@#,{301,301}," "]&

Cobalah online!

Input harus diisi dengan tepat 100x100. Outputnya adalah array dari 301x301. Hasil memutar sonik (dengan pemformatan yang tepat):

Hasil sonik

Keyu Gan
sumber