Rotation de l'art ASCII de 45 degrés

21

Votre tâche consiste à prendre une image d'art ASCII et à la faire pivoter de 45 degrés dans le sens des aiguilles d'une montre et à l'échelle d'un facteur 2 . La mise à l'échelle provient de l'utilisation d'un modèle en treillis qui introduit un espace entre les caractères.

Pour l'expliquer visuellement, un bloc 3×3 serait traité comme suit:

123
456
789

devient

  1
 4 2
7 5 3
 8 6
  9

Les caractères ne seront pas transformés, donc les boîtes seront étranges après la rotation:

+-+
| |
+-+

devient

  +
 | -
+   +
 - |
  +

Pour expliquer le processus de manière plus explicite, la sortie se compose d'un motif en treillis en losanges où la ligne supérieure correspond au caractère supérieur gauche de l'entrée, la ligne suivante correspond aux voisins droit et inférieur, la ligne suivante est ces voisins, etc. jusqu'à ce que tous les personnages aient été placés sur le réseau.

Exemples

           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                

La source

Devient

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

La source

Devient

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

La source

Devient

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

Règles et notes

  • L'entrée et la sortie peuvent être dans n'importe quel format et encodage de caractères pratiques tant qu'elles prennent en charge tous les caractères ASCII imprimables (U + 0020 - U + 007E, LF)
  • Vous pouvez supposer que l'entrée ne contient que des caractères ASCII imprimables (définis ci-dessus)
  • 100×100
  • Vous pouvez supposer que l'entrée est complétée à droite, comme une parfaite grille rectangulaire de caractères.
    • 100×100
  • Utilisez l'espace ASCII pour aligner et espacer les caractères.
  • Les caractères peuvent être sur-rembourrés (ou même sous-rembourrés) dans n'importe quelle direction tant que le résultat est correctement aligné.

Bon golf!

Beefster
la source
5
Pauvre Sonic, il voulait juste vivre D:
Benjamin Urquhart
vous voudrez peut-être utiliser des caractères pleine largeur pour qu'après la rotation, il ait toujours une forme assez carrée Afficher les caractères sur une grille carrée? , Conversion de caractères pleine largeur en caractères demi-largeur (perl, regex, japonais)
phuclv
Dupe possible ?
Shaggy
@Shaggy, je dirais juste lié, mais oui, cela a certainement beaucoup de similitudes. La seule différence substantielle est que ce défi nécessite un remplissage d'espace dans la sortie. Dans d'autres nouvelles, vous êtes incroyablement doué pour trouver des dupes.
Beefster
Si c'était vrai, j'aurais trouvé ce défi alors que celui-ci était encore dans la Sanbox! Je suis tombé dessus par accident en cherchant une dupe d'une idée de défi que j'avais et je me suis instantanément souvenu de la vôtre.
Shaggy

Réponses:

18

Fusain , 2 octets

↘A

Essayez-le en ligne! Le lien est vers la version détaillée du code. Prend l'entrée comme un littéral de chaîne délimité par une nouvelle ligne ou comme un tableau de chaînes. Explication: lit l'entrée et la sort dans la direction diagonale souhaitée. Version qui accepte une liste de lignes terminées par une ligne vierge de STDIN:

WS⊞υι↘υ

Essayez-le en ligne! Le lien est vers la version détaillée du code.

Neil
la source
Sensationnel. Le bon outil pour le travail.
connectyourcharger
10

Canevas , 6 octets

/⤢ *\⤢

Essayez-le ici!

/        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

Exemple:

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
la source
Votre code et votre explication n'utilisent-ils pas des barres obliques différentes?
Adám
@ Adám, j'ai l'habitude ASCII-fy les explications pour qu'ils s'alignent mieux
dzaima
2

J , 56 45 octets

-11 octets grâce à FrownyFrog!

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

Essayez-le en ligne!

Galen Ivanov
la source
voici 45
FrownyFrog
@FrownyFrog Merci! Brillant comme toujours!
Galen Ivanov
1

05AB1E , 18 12 octets

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

Port de la réponse Canvas de @dzaima , alors assurez-vous de lui donner un vote positif !!

Saisie sous forme de liste de lignes.

Essayez-le en ligne.

Explication:

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)

Réponse originale de 18 17 octets:

g2IεNFR]JŽE5SΛ

Saisie sous forme de liste de lignes.

Essayez-le en ligne.

Explication:

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)

Voir cette astuce de mes 05AB1E (section Comment compresser les grands entiers? ) Pour comprendre pourquoi ŽE5est 3575.

Vous trouverez plus d'informations sur la fonction intégrée 05AB1E Canvas dans cette astuce.

La fonction intégrée Canvas prend trois paramètres:

  • une Longueur: taille (s) des lignes. Il peut s'agir d'un seul entier ou d'une liste d'entiers
  • b
  • c[0,7]+×8 ).

Dans ce défi, j'utilise les options suivantes:

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

     S
      
   ↙↖   
        
↙↖      ↖↙
     
  .   
    .

b

une372521

Kevin Cruijssen
la source
0

JavaScript (ES6), 102 octets

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)

Essayez-le en ligne!

Entrée et sortie sous forme de liste de listes.

Explication:

Crée une grille d'espaces 100x100. Boucle ensuite l'entrée, définissant l'entrée appropriée dans la grille. L'index du caractère à définir est calculé comme x' = length of input - 1 + y + xety' = y + x .

Le résultat renvoyé est une liste de listes 100x100, avec la sortie dans le coin supérieur gauche.

Birjolaxew
la source
0

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

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

Essayez-le en ligne!

Demande une chaîne et renvoie un tableau de 100 x 100 caractères 2D.

J'ai essayé d'utiliser LINQ / Collections, mais j'ai finalement abandonné.

Qapples
la source
0

Wolfram Language (Mathematica) , 79 octets

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

Essayez-le en ligne!

L'entrée doit être complétée exactement comme 100x100. La sortie est un tableau de 301x301. Le résultat de la rotation sonore (avec un formatage approprié):

Résultat sonore

Keyu Gan
la source