ASCII-Kunst um 45 Grad drehen

21

Ihre Aufgabe ist es, ein ASCII-Kunstbild aufzunehmen und im Uhrzeigersinn um 45 Grad gedreht und um den Faktor skaliert auszugeben2 . Die Skalierung ergibt sich aus der Verwendung eines Gittermusters, bei dem ein Leerzeichen zwischen den Zeichen eingefügt wird.

Um es visuell zu erklären, würde ein 3×3 Block folgendermaßen verarbeitet:

123
456
789

wird

  1
 4 2
7 5 3
 8 6
  9

Zeichen werden nicht transformiert, sodass Kästchen nach dem Drehen seltsam aussehen:

+-+
| |
+-+

wird

  +
 | -
+   +
 - |
  +

Um den Vorgang genauer zu erläutern, besteht die Ausgabe aus einem Rautengittermuster, wobei die obere Reihe dem Zeichen oben links der Eingabe entspricht, die nächste Reihe der rechten und der unteren Nachbarn, die nächste Reihe den Nachbarn usw. entspricht bis alle Charaktere auf dem Gitter platziert wurden.

Beispiele

           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                

Quelle

Wird

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

Quelle

Wird

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

Quelle

Wird

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

Regeln und Hinweise

  • Die Ein- und Ausgabe kann in jedem beliebigen Format und in jeder beliebigen Zeichenkodierung erfolgen, sofern alle druckbaren ASCII-Zeichen (U + 0020 - U + 007E, LF) unterstützt werden.
  • Sie können davon ausgehen, dass die Eingabe nur druckbare ASCII-Zeichen enthält (wie oben definiert).
  • Sie müssen Kunst bis zu 100×100 Zeichen unterstützen.
  • Sie können davon ausgehen, dass die Eingabe mit einem Rechtspolster versehen ist, um ein perfektes rechteckiges Zeichenraster zu erhalten.
    • Wenn Sie möchten, können Sie auch davon ausgehen, dass die Eingabe mit genau 100×100 Zeichen aufgefüllt ist .
  • Verwenden Sie das ASCII-Leerzeichen, um Zeichen auszurichten und ein Leerzeichen zu setzen.
  • Zeichen können in jede Richtung überfüllt (oder sogar unterfüllt) werden, solange das Ergebnis korrekt ausgerichtet ist.

Viel Spaß beim Golfen!

Beefster
quelle
5
Armer Sonic, er wollte nur D:
Benjamin Urquhart
Möglicherweise möchten Sie Zeichen in voller Breite verwenden, damit sie nach dem Drehen immer noch eine recht quadratische Form haben. Zeichen in einem quadratischen Raster anzeigen? , Konvertieren von Zeichen in voller Breite in Zeichen in halber Breite (Perl, Regex, Japanisch)
phuclv
@ Shaggy Ich würde sagen, nur verwandt, aber ja, das hat mit Sicherheit eine Menge Ähnlichkeiten. Der einzige wesentliche Unterschied besteht darin, dass diese Herausforderung Platz in der Ausgabe beansprucht. In anderen Nachrichten sind Sie beeindruckend gut darin, Betrüger zu finden.
Beefster
Wenn das wahr wäre, hätte ich diese Herausforderung gefunden, während diese noch in der Sanbox war! Ich bin völlig zufällig darauf gestoßen, als ich nach einer Idee für eine Herausforderung suchte, die ich hatte, und habe mich sofort an deine erinnert.
Shaggy

Antworten:

18

Holzkohle , 2 Bytes

↘A

Probieren Sie es online! Link ist eine ausführliche Version des Codes. Nimmt Eingaben entweder als einzelnes durch Zeilenumbrüche getrenntes Zeichenfolgenliteral oder als Array von Zeichenfolgen entgegen. Erklärung: Liest den Eingang und gibt ihn in der gewünschten diagonalen Richtung aus. Version, die eine mit Leerzeilen abgeschlossene Liste von Zeilen von STDIN akzeptiert:

WS⊞υι↘υ

Probieren Sie es online! Link ist eine ausführliche Version des Codes.

Neil
quelle
Wow. Das richtige Werkzeug für den Job.
connectyourcharger
10

Canvas , 6 Bytes

/⤢ *\⤢

Probieren Sie es hier aus!

/        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

Beispiel:

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
quelle
Verwenden Ihr Code und Ihre Erklärung keine unterschiedlichen Schrägstriche?
Adám
@Adám Ich normalerweise ASCII-fy die Erklärungen für sie besser ausrichten
dzaima
6

Python 3.8 (Vorabversion) , 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)]

Probieren Sie es online!

-5 Bytes dank ovs (Python 3.8 Dinge)

HyperNeutrino
quelle
1
5 Bytes kürzer in Python 3.8
ovs
@ovs wait 3.8 ist raus? : o Inline-Zuordnung. Ich mag das. Vielen Dank!
HyperNeutrino
2

J , 56 45 Bytes

-11 Bytes dank FrownyFrog!

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

Probieren Sie es online!

Galen Ivanov
quelle
Hier ist 45
FrownyFrog
@FrownyFrog Vielen Dank! Genial wie immer!
Galen Ivanov
1

05AB1E , 18 12 Bytes

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

Port of @dzaimas Canvas Antwort , also stelle sicher, dass du ihn positiv bewertest !!

Eingabe als Liste von Zeilen.

Probieren Sie es online aus.

Erläuterung:

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)

Original 18 17 Bytes Antwort:

g2IεNFR]JŽE5SΛ

Eingabe als Liste von Zeilen.

Probieren Sie es online aus.

Erläuterung:

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)

Sehen Sie sich meinen Tipp 05AB1E (Abschnitt Wie komprimiere ich große ganze Zahlen? ) An, um zu verstehen, warum dies so ŽE5ist 3575.

Weitere Informationen zum eingebauten 05AB1E Canvas finden Sie in meinem Tipp.

Das Canvas-Builtin akzeptiert drei Parameter:

  • ein
  • b String: Die Zeichen, die wir anzeigen möchten. Dies kann ein einzelnes Zeichen, eine Zeichenfolge, eine Liste von Zeichen oder eine Liste von Zeichenfolgen sein (in den letzten drei Fällen werden alle einzeln verwendet, einschließlich Umlauf).
  • cRichtung: Die Richtung, in die die Zeichenlinien gezeichnet werden sollen. Im Allgemeinen haben wir die Ziffern [0,7]für die Richtungen, für die wir eine oder mehrere verwenden können. Es gibt auch einige spezielle Optionen , die einen bestimmten Charakter erfordern ( +, ×, 8).

Bei dieser Herausforderung verwende ich die folgenden Optionen:

c: Beginnen wir mit den Anweisungen. Dafür benutze ich[3,5,7,5] was übersetzt zu [,,↖↙]. Dies bedeutet, dass die Zeichenfolge folgendermaßen gedruckt wird:

     S
      
   ↙↖   
        
↙↖      ↖↙
     
  .   
    .

b: Da in diese Richtung gedruckt wird, muss die Liste der eingegebenen Zeichenfolgen leicht geändert werden. Dies geschieht umgekehrt für jede auf 0 basierende ungerade indizierte Zeichenfolge in der Liste.

ein: Zuletzt die Länge des Ausdrucks. Dies ist die Länge der einzelnen Zeilen für die Richtungen3 () und 7 (). Das2 für die Richtungen 5 (), was bedeutet, ein Zeichen (mit einer Zeichenüberlappung des hinteren Teils der vorherigen Zeile) in Südwestrichtung zu drucken, und dann die nächste Zeile (mit einer erneuten Zeichenüberlappung, daher die Verwendung von 2 anstatt 1). Diese Überlappung wird in dem Tipp, den ich zuvor verlinkt habe, besser erklärt.

Kevin Cruijssen
quelle
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)

Probieren Sie es online!

Ein- und Ausgabe als Listenliste.

Erläuterung:

Erstellt ein Raster von 100 x 100 Leerzeichen. Durchläuft dann die Eingabe und setzt den entsprechenden Eintrag im Raster. Der Index des einzustellenden Zeichens wird mit x' = length of input - 1 + y + xund berechnety' = y + x .

Das zurückgegebene Ergebnis ist eine 100x100-Liste mit Listen. Die Ausgabe befindet sich in der oberen linken Ecke.

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

Probieren Sie es online!

Fordert eine Zeichenfolge an und gibt ein 2D-Zeichen-Array von 100 x 100 zurück.

Ich habe versucht, LINQ / Collections zu verwenden, aber ich gebe schließlich auf.

Qapples
quelle
0

Wolfram Language (Mathematica) , 79 Bytes

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

Probieren Sie es online!

Die Eingabe sollte mit genau 100x100 aufgefüllt werden. Die Ausgabe ist ein Array von 301x301. Das Ergebnis der Rotation von Sonic (mit der richtigen Formatierung):

Sonic Ergebnis

Keyu Gan
quelle