Obróć ASCII Art o 45 stopni

21

Twoim zadaniem jest, aby zrobić zdjęcie sztuki ASCII i wyjście jest obrócony w prawo o 45 stopni i skalowane przez czynnik 2) . Skalowanie pochodzi z użycia wzoru siatki, który wprowadza odstępy między postaciami.

Aby to wyjaśnić wizualnie, blok 3)×3) byłby przetwarzany w następujący sposób:

123
456
789

staje się

  1
 4 2
7 5 3
 8 6
  9

Postacie nie zostaną przekształcone, więc pola będą wyglądać dziwnie po obrocie:

+-+
| |
+-+

staje się

  +
 | -
+   +
 - |
  +

Aby wyjaśnić proces bardziej precyzyjnie, dane wyjściowe składają się z rombowej siatki, w której górny rząd odpowiada górnemu lewemu znakowi wejścia, następny rząd odpowiada prawemu i poniżej sąsiadów, następny rząd to sąsiedzi i tak dalej dopóki wszystkie postacie nie zostaną umieszczone na kratce.

Przykłady

           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                

Źródło

Staje się

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

Źródło

Staje się

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

Źródło

Staje się

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

Zasady i uwagi

  • Dane wejściowe i wyjściowe mogą mieć dowolny dogodny format i kodowanie znaków, o ile obsługuje wszystkie drukowalne znaki ASCII (U + 0020 - U + 007E, LF)
  • Możesz założyć, że dane wejściowe zawierają tylko drukowalne znaki ASCII (zdefiniowane powyżej)
  • 100×100
  • Możesz założyć, że dane wejściowe są wyściełane prawym przyciskiem, tak aby była idealną prostokątną siatką znaków.
    • 100×100
  • Użyj spacji ASCII do wyrównania i spacji znaków.
  • Znaki mogą być wypełnione (lub nawet wypełnione) w dowolnym kierunku, o ile wynik jest odpowiednio wyrównany.

Wesołego golfa!

Wołowina
źródło
5
Biedny Sonic, chciał po prostu żyć D:
Benjamin Urquhart
możesz użyć znaków o pełnej szerokości, aby po obróceniu nadal miała dość kwadratowy kształt Wyświetl znaki na kwadratowej siatce? , Konwersja znaków o pełnej szerokości na znaki o połowie szerokości (perl, regex, japoński)
phuclv
Możliwy dupek ?
Kudłaty
@Shaggy powiedziałbym po prostu spokrewniony, ale tak, to z pewnością ma wiele podobieństw. Jedyną istotną różnicą jest to, że wyzwanie wymaga wypełnienia miejsca na wyjściu. W innych wiadomościach jesteś imponująco dobry w znajdowaniu duplikatów.
Beefster
Gdyby to była prawda, znalazłbym to wyzwanie, gdy to jeszcze było w Sanbox! Natknąłem się na nią całkowicie przez przypadek, szukając pomysłu na wyzwanie, który miałem i natychmiast zapamiętałem twój.
Kudłaty

Odpowiedzi:

18

Węgiel , 2 bajty

↘A

Wypróbuj online! Link jest do pełnej wersji kodu. Pobiera dane wejściowe jako pojedynczy ciąg znaków rozdzielany znakiem nowej linii lub jako tablicę ciągów znaków. Objaśnienie: odczytuje dane wejściowe i wysyła je w pożądanym kierunku po przekątnej. Wersja, która przyjmuje zakończoną pustą linią listę linii ze STDIN:

WS⊞υι↘υ

Wypróbuj online! Link jest do pełnej wersji kodu.

Neil
źródło
Łał. Właściwe narzędzie do pracy.
connectyourcharger
10

Płótno , 6 bajtów

/⤢ *\⤢

Wypróbuj tutaj!

/        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

Przykład:

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
źródło
Czy twój kod i objaśnienie nie używają różnych ukośników?
Adám
@ Adám Zazwyczaj ASCII-fy wyjaśnienia dla nich, aby lepiej dostosować
dzaima
6

Python 3.8 (wersja wstępna) , 104 bajty

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)]

Wypróbuj online!

-5 bajtów dzięki ovs (Python 3.8 rzeczy)

HyperNeutrino
źródło
1
5 bajtów krótszych w Pythonie 3.8
dniu
@ovs wait 3.8 jest niedostępny? : o przypisanie wbudowane. lubię to. dzięki!
HyperNeutrino
2

J , 56 45 bajtów

-11 bajtów dzięki FrownyFrog!

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

Wypróbuj online!

Galen Iwanow
źródło
tutaj jest 45
FrownyFrog
@FrownyFrog Dziękujemy! Genialny jak zawsze!
Galen Iwanow
1

05AB1E , 18 12 bajtów

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

Odpowiedź Porta @dzaima na Canvas , więc pamiętaj, aby go zagłosować !!

Wprowadź jako listę linii.

Wypróbuj online.

Wyjaśnienie:

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)

Oryginalna odpowiedź na 18 bajtów:

g2IεNFR]JŽE5SΛ

Wprowadź jako listę linii.

Wypróbuj online.

Wyjaśnienie:

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)

Zobacz moją wskazówkę 05AB1E (rozdział Jak kompresować duże liczby całkowite? ), Aby zrozumieć, dlaczego tak ŽE5jest 3575.

Więcej informacji na temat wbudowanego płótna 05AB1E można znaleźć w tym poradniku.

Wbudowane płótno ma trzy parametry:

  • za
  • b
  • do[0,7]+×8

W tym wyzwaniu korzystam z następujących opcji:

do[3),5,7,5][,,↖↙]

     S
      
   ↙↖   
        
↙↖      ↖↙
     
  .   
    .

b

za3)72)52)1

Kevin Cruijssen
źródło
0

JavaScript (ES6), 102 bajty

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)

Wypróbuj online!

Dane wejściowe i wyjściowe jako lista list.

Wyjaśnienie:

Tworzy siatkę spacji o wymiarach 100 x 100. Następnie zapętla dane wejściowe, ustawiając odpowiedni wpis w siatce. Indeks znaku do ustawienia jest obliczany jako x' = length of input - 1 + y + xiy' = y + x .

Zwrócony wynik to lista 100 x 100, z danymi wyjściowymi w lewym górnym rogu.

Birjolaxew
źródło
0

C # (interaktywny kompilator Visual C #) , 153 bajty

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;}

Wypróbuj online!

Pyta o ciąg znaków i zwraca tablicę 2D char 100 x 100.

Próbowałem użyć LINQ / Collections, ale w końcu się poddaję.

Qapples
źródło
0

Wolfram Language (Mathematica) , 79 bajtów

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

Wypróbuj online!

Wejście powinno być wypełnione dokładnie 100x100. Dane wyjściowe to tablica 301x301. Wynik rotacji dźwięku (z odpowiednim formatowaniem):

Wynik dźwiękowy

Keyu Gan
źródło