Zeichnen Sie ASCII-Spielkarten

19

Betrachten Sie diese 15 ASCII- Spielkartenmuster (Ass durch Joker und Rückseite), in denen Xsich ein Platzhalter für das Anzugsymbol befindet : (Sie sehen besser aus, wenn der Zeilenabstand geringer ist.)

 -------------   -------------   -------------   -------------   -------------   -------------   -------------   -------------   -------------   -------------   -------------   -------------   -------------   -------------   ------------- 
|AX           | |2X           | |3X           | |4X           | |5X           | |6X           | |7X           | |8X           | |9X           | |10X          | |JX           | |QX           | |KX           | |J            | |* * * * * * *|
|   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |O  -------   | | * * * * * * |
|  |       |  | |  |       |  | |  |       |  | |  |X     X|  | |  |X     X|  | |  |X     X|  | |  |X     X|  | |  |X     X|  | |  |X     X|  | |  |X     X|  | |  |X      |  | |  |X      |  | |  |X      |  | |K |       |  | |* * * * * * *|
|  |       |  | |  |   X   |  | |  |   X   |  | |  |       |  | |  |       |  | |  |       |  | |  |   X   |  | |  |   X   |  | |  |       |  | |  |   X   |  | |  |       |  | |  |       |  | |  |       |  | |E | J     |  | | * * * * * * |
|  |       |  | |  |       |  | |  |       |  | |  |       |  | |  |       |  | |  |       |  | |  |       |  | |  |       |  | |  |X     X|  | |  |X     X|  | |  |       |  | |  |       |  | |  |       |  | |R |  O    |  | |* * * * * * *|
|  |   X   |  | |  |       |  | |  |   X   |  | |  |       |  | |  |   X   |  | |  |X     X|  | |  |X     X|  | |  |X     X|  | |  |   X   |  | |  |       |  | |  |   J   |  | |  |   Q   |  | |  |   K   |  | |  |   K   |  | | * * * * * * |
|  |       |  | |  |       |  | |  |       |  | |  |       |  | |  |       |  | |  |       |  | |  |       |  | |  |       |  | |  |X     X|  | |  |X     X|  | |  |       |  | |  |       |  | |  |       |  | |  |    E  | J| |* * * * * * *|
|  |       |  | |  |   X   |  | |  |   X   |  | |  |       |  | |  |       |  | |  |       |  | |  |       |  | |  |   X   |  | |  |       |  | |  |   X   |  | |  |       |  | |  |       |  | |  |       |  | |  |     R | O| | * * * * * * |
|  |       |  | |  |       |  | |  |       |  | |  |X     X|  | |  |X     X|  | |  |X     X|  | |  |X     X|  | |  |X     X|  | |  |X     X|  | |  |X     X|  | |  |      X|  | |  |      X|  | |  |      X|  | |  |       | K| |* * * * * * *|
|   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |   -------  E| | * * * * * * |
|           XA| |           X2| |           X3| |           X4| |           X5| |           X6| |           X7| |           X8| |           X9| |          X10| |           XJ| |           XQ| |           XK| |            R| |* * * * * * *|
 -------------   -------------   -------------   -------------   -------------   -------------   -------------   -------------   -------------   -------------   -------------   -------------   -------------   -------------   ------------- 

Schreiben Sie ein Programm, das eine Zeichenfolge enthält, die eine durch Leerzeichen getrennte Folge von Karten angibt, indem Sie ...

  • A 2 3 4 5 6 7 8 9 10 J Q Kgefolgt von einem von C D H S(für Kreuz, Karo, Herz und Pik) für die 52 Standardkarten.
  • Eine Single Rfür einen Joker.
  • Eine Single Bfür die Rückseite (eine verdeckte Karte).

Die Saite B AS KH 10C R JDbezeichnet also eine verdeckte Karte, gefolgt von einem Pik-Ass, gefolgt von einem Herzkönig, gefolgt von zehn Keulen, gefolgt von einem Joker, gefolgt von einem Diamantenbuben.

Ihr Programm muss die entsprechenden ASCII-Spielkarten auf stdout drucken und durch das entsprechende Farbsymbol ersetzen X.

Beispielsweise B AS KH 10C R JDwäre die Ausgabe für

 -------------   -------------   -------------   -------------   -------------   ------------- 
|* * * * * * *| |AS           | |KH           | |10C          | |J            | |JD           |
| * * * * * * | |   -------   | |   -------   | |   -------   | |O  -------   | |   -------   |
|* * * * * * *| |  |       |  | |  |H      |  | |  |C     C|  | |K |       |  | |  |D      |  |
| * * * * * * | |  |       |  | |  |       |  | |  |   C   |  | |E | J     |  | |  |       |  |
|* * * * * * *| |  |       |  | |  |       |  | |  |C     C|  | |R |  O    |  | |  |       |  |
| * * * * * * | |  |   S   |  | |  |   K   |  | |  |       |  | |  |   K   |  | |  |   J   |  |
|* * * * * * *| |  |       |  | |  |       |  | |  |C     C|  | |  |    E  | J| |  |       |  |
| * * * * * * | |  |       |  | |  |       |  | |  |   C   |  | |  |     R | O| |  |       |  |
|* * * * * * *| |  |       |  | |  |      H|  | |  |C     C|  | |  |       | K| |  |      D|  |
| * * * * * * | |   -------   | |   -------   | |   -------   | |   -------  E| |   -------   |
|* * * * * * *| |           SA| |           HK| |          C10| |            R| |           DJ|
 -------------   -------------   -------------   -------------   -------------   ------------- 

Sie können die Eingabe von stdin übernehmen oder eine Funktion schreiben, die eine Zeichenfolge akzeptiert.

Die Einsendung mit der kürzesten Anzahl von Zeichen gewinnt.

Bonus: Subtrahieren Sie 30 von Ihrer Zeichenanzahl, wenn Sie die schwarzen Unicode-Anzugsymbole ♣ ♦ ♥ ♠ anstelle C D H SIhrer Ausgabe verwenden. (Die Eingabe wird immer verwendet C D H S.)

Anmerkungen

  • Es können mehr als 54 Karten in der Eingabezeichenfolge vorhanden sein, und von jeder Karte können Duplikate vorhanden sein.
  • Es sollte keine Ausgabe erfolgen, wenn die Eingabe eine leere Zeichenfolge ist.
  • Neben (optional) den beiden nachgestellten Leerzeichen, die die rechten Ecken der letzten Karte bilden, sollten keine Leerzeichen stehen.
  • Sie können davon ausgehen, dass die Eingabe gültig ist.
  • Update: Das Etikett rechts unten auf Standardkarten wurde vertauscht, sodass der Wert in der Ecke steht. Das Joker-Label unten rechts hat sich nicht geändert.
Calvins Hobbys
quelle
1
Können wir annehmen, dass die Eingabezeichenfolge gültig ist?
Michael M.
1
@VisualMelon Ich habe das versucht, aber es sieht lustig aus. Es wird aufrecht bleiben.
Calvins Hobbys
3
@Optimizer Ich würde das tun, wenn es Upside-Down-Charaktere für das geben würde, was ich brauche, aber ich glaube nicht, dass es solche gibt, und ich möchte nicht, dass alles wackelig wird.
Calvins Hobbys
2
@VisualMelon Ich weiß, dass realistisch gesehen die Hälfte der Labels auf dem Kopf stehen würde, aber da es dafür keine auf dem Kopf stehenden Zeichen gibt, ignoriere ich diese Tatsache (außerdem wollte ich die Werte in der Ecke haben).
Calvins Hobbys
1
Wenn Sie nur 10 Punkte abziehen, um die Symbole richtig zu Unicodieren, wird es sich nie lohnen, weil Sie mehr als das brauchen, um sie nur zu schreiben (6 Zeichen pro Symbol, insgesamt 24). Selbst wenn Sie eine Unicode-konforme Sprache haben, sind die Unicode-Symbole in alphabetischer Reihenfolge von Ihrer Eingabe umgekehrt. Ich denke nur so etwas wie CJAM, APL oder Golfscript könnten das.
29.

Antworten:

9

JavaScript (E6) 542 (572 - Bonus 30) 553 564 576

3 Arten von Formen:

  1. Back and Joker: mehr oder weniger wörtlich
  2. JQK: Markieren Sie oben links und rechts unten den inneren Rahmen und 3 Arten von Reihen im Inneren, immer die gleiche Struktur
  3. A ... 10: oben links und rechts ankreuzen, innerer Rahmen mit 3 Arten von Reihen, variabel mit dem numerischen Wert. Kümmert sich um die Suche mit Array und q Variable

Der zString (komprimiert) enthält die Grundbausteine ​​für

  • Zahlenkarten - 3 Blöcke à 7 Zeichen
  • Joker - 11 Blöcke à 13 Zeichen, die einfach nacheinander verwendet werden

Bonusnote Der Code für den Gewinn des 30-Punkte-Bonus beträgt 29 Zeichen.

F=c=>(
  p='|',b=' ',d=b+b,t=d+b,
  S='substr',
  z="9J2J4J55O102K |6|1E | J4|1R |1O3|3|2K2|3|3E1| J1|4R | O1|6| K201E55R".replace(/\d/g,n=>n++?b.repeat(n):l='-------'),
  i=7,
  console.log([c.split(b).map(c=>
    m<d
      ?b+l+l[S](1)+b 
      :p+(c=='B'
        ?'* '.repeat(i)[S](i,13)
        :c=='R'
          ?z[S](i,13)
          :(
             [,h,k]=c.match(/(.+)(.)/),
             k='♣♦♥♠'['CDHS'.search(k)], //comment to avoid the unicode symbols 
             n=h-1|0,
             s=t+t+t+(n>8?b:d),
             m-7
              ?m-8
                ?m-9
                  ?d+p+(h>'A'
                     ?-m?m-6?m-3?t+b+t:t+h+t:t+t+k:k+t+t
                     :z[S](([64,1028,1092,8194,8258,8322,8326,9350,8802,9766][n]>>m*2&3)*7,7).replace(/J/g,k)
                   )+p+d
                  :t+l+t
                :s+k+h
              :h+k+s
            )
       )+p
    ).join(b,i+=13)
  for(m of ' 79012345698 ')].join('\n'))
)

Test In FireFox / Firebug - Konsole

F('10C JD QH KS AC B R')

F('2C 3D 4H 5S 6C 7D 8H 9S')

Ausgabe

 -------------   -------------   -------------   -------------   -------------   -------------   ------------- 
|10♣          | |J♦           | |Q♥           | |K♠           | |A♣           | |* * * * * * *| |J            |
|   -------   | |   -------   | |   -------   | |   -------   | |   -------   | | * * * * * * | |O  -------   |
|  |♣     ♣|  | |  |♦      |  | |  |♥      |  | |  |♠      |  | |  |       |  | |* * * * * * *| |K |       |  |
|  |   ♣   |  | |  |       |  | |  |       |  | |  |       |  | |  |       |  | | * * * * * * | |E | J     |  |
|  |♣     ♣|  | |  |       |  | |  |       |  | |  |       |  | |  |       |  | |* * * * * * *| |R |  O    |  |
|  |       |  | |  |   J   |  | |  |   Q   |  | |  |   K   |  | |  |   ♣   |  | | * * * * * * | |  |   K   |  |
|  |♣     ♣|  | |  |       |  | |  |       |  | |  |       |  | |  |       |  | |* * * * * * *| |  |    E  | J|
|  |   ♣   |  | |  |       |  | |  |       |  | |  |       |  | |  |       |  | | * * * * * * | |  |     R | O|
|  |♣     ♣|  | |  |      ♦|  | |  |      ♥|  | |  |      ♠|  | |  |       |  | |* * * * * * *| |  |       | K|
|   -------   | |   -------   | |   -------   | |   -------   | |   -------   | | * * * * * * | |   -------  E|
|          ♣10| |           ♦J| |           ♥Q| |           ♠K| |           ♣A| |* * * * * * *| |            R|
 -------------   -------------   -------------   -------------   -------------   -------------   ------------- 

 -------------   -------------   -------------   -------------   -------------   -------------   -------------   ------------- 
|2♣           | |3♦           | |4♥           | |5♠           | |6♣           | |7♦           | |8♥           | |9♠           |
|   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |   -------   |
|  |       |  | |  |       |  | |  |♥     ♥|  | |  |♠     ♠|  | |  |♣     ♣|  | |  |♦     ♦|  | |  |♥     ♥|  | |  |♠     ♠|  |
|  |   ♣   |  | |  |   ♦   |  | |  |       |  | |  |       |  | |  |       |  | |  |   ♦   |  | |  |   ♥   |  | |  |       |  |
|  |       |  | |  |       |  | |  |       |  | |  |       |  | |  |       |  | |  |       |  | |  |       |  | |  |♠     ♠|  |
|  |       |  | |  |   ♦   |  | |  |       |  | |  |   ♠   |  | |  |♣     ♣|  | |  |♦     ♦|  | |  |♥     ♥|  | |  |   ♠   |  |
|  |       |  | |  |       |  | |  |       |  | |  |       |  | |  |       |  | |  |       |  | |  |       |  | |  |♠     ♠|  |
|  |   ♣   |  | |  |   ♦   |  | |  |       |  | |  |       |  | |  |       |  | |  |       |  | |  |   ♥   |  | |  |       |  |
|  |       |  | |  |       |  | |  |♥     ♥|  | |  |♠     ♠|  | |  |♣     ♣|  | |  |♦     ♦|  | |  |♥     ♥|  | |  |♠     ♠|  |
|   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |   -------   | |   -------   |
|           ♣2| |           ♦3| |           ♥4| |           ♠5| |           ♣6| |           ♦7| |           ♥8| |           ♠9|
 -------------   -------------   -------------   -------------   -------------   -------------   -------------   ------------- 

Nicht Golf Code

F=c=>
{
  p='|',b=' ',d=b+b,t=d+b;
  l='------';
  z="9X2X4XJ55O10-2K |6|1E | J4|1R |1O3|3|2K2|3|3E1| J1|4R | O1|6| K20-1E55R".replace(/\d/g,n=>-n?b.repeat(-~n):l);
  c=c.split(b);
  for(o=i=''; c[0]&&i<13; i++)
  {
    o+=c.map(c => {
      if (i==0 || i==12) r=' -'+l+l+b;
      else
      {
        if (c=='B') r=' *'.repeat(7).substr(i&1,13);
        else if (c=='R') r=z.substr(i*13+8,13);
        else {
          [,h,k]=c.match(/(.+)(.)/),n=h-1|0,
          k='♣♦♥♠'[{C:0,D:1,H:2,S:3}[k]],
          r=t+t+t+(n>8?b:d);
          if(i==1)r=h+k+r;
          else if(i==11)r+=k+h;
          else if(i==2||i==10)r=t+'-'+l+t;
          else {
            if (h>'A')
            {
              if(i==3)r=k+t+t;
              else if(i==9)r=t+t+k;
              else if(i==6)r=t+h+t;
              else r=t+b+t
            }
            else 
            { 
              q=[64,1028,1092,8194,8258,8322,8326,9350,8802,9766][n]>>(i+i-6)&3,
              r=z.substr(q*7,7).replace(/X/g,k)
            }
            r=d+p+r+p+d
          }
        }
        r=p+r+p
      }
      return r
    }).join(' ')+'\n'
  }  
  console.log(o);
}
edc65
quelle
Ich glaube, Sie haben Herzen und Diamanten getauscht (in Ihrem Beispiel wurde der Fehler trotzdem nicht in Ihrem Code gefunden ...).
FryAmTheEggman
@FryAmTheEggman danke, behoben in Golf Code und Beispielen
edc65
toller Code! Sie können Ihre Zeichenanzahl mit diesem Tool verringern: xem.github.io/obfuscatweet (es akzeptiert jedoch nur ASCII, sodass Sie sich vor dem Packen vor den Unicode-Zeichen
schützen müssen
(Ihr Endergebnis wird dann bei 328 liegen!)
xem
@xem Die Anzahl der Zeichen ist niedrig (337), aber die Anzahl der Bytes ist hoch (1213) mothereff.in/byte-counter . Sofern nicht anders angegeben, müssen Sie die Bytes im Code Golf zählen.
EDC65
4

C # - 906

Eher großes und einfaches C # -Programm, das Ein- und Ausgaben über die Befehlszeile in die Standardausgabe umwandelt. Es gibt wahrscheinlich noch viel zu golfen, ich habe beim Schreiben ein paar langweilige Bytes entdeckt, aber das muss warten. Ich glaube nicht, dass ich mich für den Unicode-Bonus entscheiden werde.

Golf Code:

class P{static void Main(string[]A){int O,i=0,L,n;for(;i<13;i++){var k="";foreach(var a in A){var R=new char[208];System.Action<int,int,string,int>P=(s,l,g,w)=>{for(O=0;O<l;s+=O%w<1?17-w:1)R[s]=g[O++%g.Length];};P(0,208," ",16);P(1,13,"-",13);P(193,13,"-",13);P(16,11,"|",1);P(30,11,"|",1);if(a=="B")P(17,143,"* ",13);else{P(36,7,"-",7);P(164,7,"-",7);P(51,7,"|",1);P(59,7,"|",1);if(a=="R"){P(17,5,"JOKER",1);P(125,5,"JOKER",1);P(69,25,"J     O     K     E     R",5);}else{L=a.Length;var S=a.Substring(L-1);var v=a.Substring(0,L-1);P(17,L,a,L);P(190-L,L,S+v,L);if(int.TryParse(v,out n)){var f=new string[]{S="HEHI",S+"HG",S="EDKDEJKJ",S+"HG",v=S+"EGKG",v+="HE",v+"HI",(S+="EFEHKFKH")+"HG",S+"HEHI",}[n-2];for(O=0;O<f.Length;)R[f[O++]+f[O++]*16-1105]=a[L-1];}else{if(v=="A"){P(103,1,S,1);}else{P(52,1,S,1);P(154,1,S,1);P(103,1,v,1);}}}}for(O=0;O<16;)k+=R[i*16+O++];}System.Console.WriteLine(k.TrimEnd());}}}

Beispielausgabe für cardGolf.exe 7H QH 3S B R

 -------------   -------------   -------------   -------------   -------------
|7H           | |QH           | |3S           | |* * * * * * *| |J            |
|   -------   | |   -------   | |   -------   | | * * * * * * | |O  -------   |
|  |H     H|  | |  |H      |  | |  |       |  | |* * * * * * *| |K |       |  |
|  |   H   |  | |  |       |  | |  |   S   |  | | * * * * * * | |E | J     |  |
|  |       |  | |  |       |  | |  |       |  | |* * * * * * *| |R |  O    |  |
|  |H     H|  | |  |   Q   |  | |  |   S   |  | | * * * * * * | |  |   K   |  |
|  |       |  | |  |       |  | |  |       |  | |* * * * * * *| |  |    E  | J|
|  |       |  | |  |       |  | |  |   S   |  | | * * * * * * | |  |     R | O|
|  |H     H|  | |  |      H|  | |  |       |  | |* * * * * * *| |  |       | K|
|   -------   | |   -------   | |   -------   | | * * * * * * | |   -------  E|
|           H7| |           HQ| |           S3| |* * * * * * *| |            R|
 -------------   -------------   -------------   -------------   -------------

Der Großteil des Renderns erfolgt mit der Panonymen Methode, die eine Position, Länge, Zeichenfolge und Breite annimmt und ein Rechteck der Zeichenfolge Ende an Ende rendert. Zum Beispiel wird die Rückseite der Karte nur "* "wiederholt. Die Tanonyme Methode ist eine modifizierte Version von einer, die ich für eine vorherige Aufgabe verwendet habe und die viele Rechtecke rendert. Es ist jedoch ziemlich sperrig und erlaubt mir nur, die Ränder und den Hintergrund in weniger Bytes zu rendern, was es wahrscheinlich nicht wert ist. Ein gestreifter abgespeckte Version von Theißt , Wdie Zellen eher als Rechtecke darstellt, und wird auch nicht verwendet, sondern eine inlined Version davon verwendet wird , Karten von Wert 2 bis 10. Hinweis zu machen , dass nicht verwendete Code war Für die Anzahl der Bytes entfernt, lasse ich es in, weil ich es letztendlich verwenden kann, und ich benutze sie zum Testen.

Das Programm durchläuft einfach jede Ausgabezeile (13 davon) und rendert dann jede Karte der Reihe nach. Anschließend extrahiert es 1 Slice daraus, sodass jede Karte 13 Mal vollständig gerendert wird. Zum Zwecke der Beabstandung wird jede Karte als 16 x 13-Block behandelt, und ich schneide jede Ausgabezeile ab, um nachgestellte Leerzeichen zu entfernen (die Eckabstände werden entfernt).

Formatierter Code mit Kommentaren und Konzept- / Testcode:

class P
{
    static void Main(string[]A)
    {
        int O,J,i=0,L,n,r,z;

        for(;i<13;i++)
        {
            var k="";
            foreach(var a in A)
            {
                // got card a and line i

                var R=new char[208];

                System.Action<int,int,string,int>P=(s,l,g,w)=>
                {
                    for(O=0;O<l;s+=O%w<1?17-w:1)
                        R[s]=g[O++%g.Length];
                };

                // not used
                System.Action<string>T=f=>
                {
                    f+="AAPM!";
                    for(J=64;J++<77;)
                        for(O=64;O++<80;R[z=O+J*16-1105]=f[r]=='!'?R[z]:f[r])
                            for(r=0;f[r++]>O|f[r++]>J|O>f[r++]|J>f[r++];r++);
                };

                // not used (derivative below)
                System.Action<string>W=f=>
                {
                    for(O=0;O<f.Length;)
                        R[f[O++]+f[O++]*16-1105]=f[O++];
                };

                // render

                // outer

                P(0,208," ",16); // fill 
                P(1,13,"-",13); // top
                P(193,13,"-",13); // bottom
                P(16,11,"|",1); // left
                P(30,11,"|",1); // left

                //T("BBNL BANM-ABOL|AAPM ");

                if(a=="B") // back
                    P(17,143,"* ",13);
                else
                {
                    // inner

                    P(36,7,"-",7); // top
                    P(164,7,"-",7); // bottom
                    P(51,7,"|",1); // left
                    P(59,7,"|",1); // left

                    //T("EDKJ ECKK-DDLJ|");

                    // joker
                    if(a=="R")
                    {
                        P(17,5,"JOKER",1);
                        P(125,5,"JOKER",1);
                        P(69,25,"J     O     K     E     R",5);
                        //T("FEFEJGFGFOHGHGKIHIHEJIJIR");
                    }
                    else
                    {
                        L=a.Length;

                        // card
                        var S=a.Substring(L-1);
                        var v=a.Substring(0,L-1);

                        P(17,L,a,L);
                        P(190-L,L,S+v,L);

                        if(int.TryParse(v,out n))
                        {
                            // number card
                            var f=new string[]
                            {
                                S="HEHI",
                                S+"HG",
                                S="EDKDEJKJ",
                                S+"HG",
                                v=S+"EGKG",
                                v+="HE",
                                v+"HI",
                                (S+="EFEHKFKH")+"HG",
                                S+"HEHI",
                            }[n-2];
                            for(O=0;O<f.Length;)
                                R[f[O++]+f[O++]*16-1105]=a[L-1];
                        }
                        else
                        {
                            if(v=="A")
                            {
                                // ace
                                P(103,1,S,1);
                            }
                            else
                            {
                                // face card
                                P(52,1,S,1);
                                P(154,1,S,1);
                                P(103,1,v,1);
                            }
                        }
                    }
                }

                // write

                for(O=0;O<16;)
                    k+=R[i*16+O++];
            }
            System.Console.WriteLine(k.TrimEnd());
        }
    }
}
VisualMelon
quelle
1

PowerShell , Ergebnis 442 = ( 509 495 472 Bytes = (156 Skript + 316 Archiv) - 30 Bonus)

param($s)tar xOf t|%{$l=$_
($s-split'1| '-ne''|%{($l|% s*g(14*('A234567890JQKRB'|% i*f $_[0]))15)-replace'X','♣♦♥♠'[('CDHS'|% i*f $_[1])]})-join' '}

Probieren Sie es online!

Abgerollt:

# # the tar archive t should be in default folder
param($s)
tar xOf t|%{ $line=$_
    ($s-split'1| '-ne''|%{
        $pos = 14*('A234567890JQKRB'|% indexOf $_[0])
        $x=$line|% SubString $pos 15

        $suit = 'CDHS'|% indexOf $_[1]
        $x-replace'X','♣♦♥♠'[$suit]
    })-join' '                                          # implicit output
}

Powershell-Skript zum Erstellen des Tar-Archivs t(siehe TIO):

(
' ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ',
'|AX           |2X           |3X           |4X           |5X           |6X           |7X           |8X           |9X           |10X          |JX           |QX           |KX           |J            |* * * * * * *|',
'|   -------   |   -------   |   -------   |   -------   |   -------   |   -------   |   -------   |   -------   |   -------   |   -------   |   -------   |   -------   |   -------   |O  -------   | * * * * * * |',
'|  |       |  |  |       |  |  |       |  |  |X     X|  |  |X     X|  |  |X     X|  |  |X     X|  |  |X     X|  |  |X     X|  |  |X     X|  |  |X      |  |  |X      |  |  |X      |  |K |       |  |* * * * * * *|',
'|  |       |  |  |   X   |  |  |   X   |  |  |       |  |  |       |  |  |       |  |  |   X   |  |  |   X   |  |  |       |  |  |   X   |  |  |       |  |  |       |  |  |       |  |E | J     |  | * * * * * * |',
'|  |       |  |  |       |  |  |       |  |  |       |  |  |       |  |  |       |  |  |       |  |  |       |  |  |X     X|  |  |X     X|  |  |       |  |  |       |  |  |       |  |R |  O    |  |* * * * * * *|',
'|  |   X   |  |  |       |  |  |   X   |  |  |       |  |  |   X   |  |  |X     X|  |  |X     X|  |  |X     X|  |  |   X   |  |  |       |  |  |   J   |  |  |   Q   |  |  |   K   |  |  |   K   |  | * * * * * * |',
'|  |       |  |  |       |  |  |       |  |  |       |  |  |       |  |  |       |  |  |       |  |  |       |  |  |X     X|  |  |X     X|  |  |       |  |  |       |  |  |       |  |  |    E  | J|* * * * * * *|',
'|  |       |  |  |   X   |  |  |   X   |  |  |       |  |  |       |  |  |       |  |  |       |  |  |   X   |  |  |       |  |  |   X   |  |  |       |  |  |       |  |  |       |  |  |     R | O| * * * * * * |',
'|  |       |  |  |       |  |  |       |  |  |X     X|  |  |X     X|  |  |X     X|  |  |X     X|  |  |X     X|  |  |X     X|  |  |X     X|  |  |      X|  |  |      X|  |  |      X|  |  |       | K|* * * * * * *|',
'|   -------   |   -------   |   -------   |   -------   |   -------   |   -------   |   -------   |   -------   |   -------   |   -------   |   -------   |   -------   |   -------   |   -------  E| * * * * * * |',
'|           XA|           X2|           X3|           X4|           X5|           X6|           X7|           X8|           X9|          X10|           XJ|           XQ|           XK|            R|* * * * * * *|',
' ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- ------------- '
) | Set-Content f -Force
tar zcf t f -o
Get-ChildItem t # output info about archive size
mazzy
quelle