Jouons au tennis 2: jeu est-ouest

10

Il y a un défi Jouons au tennis de Daniel . Il propose de placer un tribunal dans le sens Nord-Sud. Ma proposition est de créer un court pour jouer au tennis dans le sens Est-Ouest également.

Vous devez imprimer un court de tennis, mais vous devez le faire dans le moins d'octets possible pour des raisons confidentielles.

Court de tennis

------x------
|  |  x  |  |
|  |--x--|  |
|  |  x  |  |
------x------

Les règles d'origine sont les suivantes:

  • Aucun espace supplémentaire.
  • Aucun onglet car ils seraient injustes.
  • Une nouvelle ligne de fin facultative est autorisée.

C'est le , donc le code le plus court en octets gagne!

mazzy
la source

Réponses:

6

Toile , 13 12 octets

«ω↕9:gW:tC‟┼

quad-palindromise un coin compressé du champ .

Essayez-le ici!

11 octets avec des majuscules X, en utilisant le fait que les /compressions mieux que xet la palindromisation entraîneraient un chevauchement /et son miroir \, ce qui se traduit parX

dzaima
la source
1
Vous voyez, ma pensée lorsque j'ai vu cette question pour la première fois était: "ai-je assez de temps pour aller apprendre Canvas maintenant et ensuite publier une solution?" Evidemment pas: P
Quintec
10

Python 2 , 59 octets

s="------x------\n|  |  x  |  |\n|  |--x"
print s+s[-2::-1]

Essayez-le en ligne!

Imprime la première moitié de la chaîne suivie de son inverse. C'est ennuyeux mais efficace. J'ai essayé d'extraire des parties répétitives de out s, en particulier le -, mais je n'ai rien trouvé de plus court.


Python 2 , 59 octets

for n in 6,0,2,0,6:x='-'*n+'  |  |'[n:];print x[::-1]+'x'+x

Essayez-le en ligne!

En utilisant la construction de Jo King .


Python 2 , 62 octets

b='|  '*2
for r in'-'*6,b,'|  |--',b,'-'*6:print r+'x'+r[::-1]

Essayez-le en ligne!

Imprime la première moitié de chaque ligne, suivie de 'x', suivie de la première moitié inversée.

xnor
la source
7

Fusain , 15 octets

↑²←⁶↓xx→x²↑²‖O¬

Essayez-le en ligne! Le lien est vers la version détaillée du code. En guise d'explication, je montrerai le résultat après chacune des commandes de dessin jusqu'à la réflexion finale:

↑²        |
          |

     ------
←⁶        |
          |

    x------
↓xx x     |
          |

    x------
→x² x     |
    x--   |

    x------
↑²  x  |  |
    x--|  |
Neil
la source
4

Python 3 , 65 62 octets

for n in 7,0,3,0,7:x="-"*n+"|  "*5;print(x[6:0:-1]+'x'+x[1:7])

Essayez-le en ligne!

Jo King
la source
4
Maintenant , c'est le genre de magie chaîne de découpage en tranches que je pensais une réponse Python à ce défi devrait avoir. Bien joué!
DLosc
2

Python 3, 75 octets

s='-'*6;p='|  |';w=s+'x'+s;a=p+'  x  '+p;print(w,a,p+w[4:9]+p,a,w,sep='\n')

Probablement jouable au golf - je n'ai jamais vraiment essayé les auparavant.

Essayez-le en ligne!

En Python 2, je pouvais l'obtenir à 76 octets

s='-'*6;p='|  |';w=s+'x'+s;a=p+'  x  '+p
for i in w,a,p+w[4:9]+p,a,w:print i
Quintec
la source
1

Python 2 , 69 68 66 octets

-2 merci à Jo King

for l in"-","|  ","|  |--","|  ","-":l*=6;print l[:6]+"x"+l[5::-1]

Essayez-le en ligne!

Nous pédalons les trois motifs suivants à l' infini (6 fois est suffisamment infinie pour nos besoins) et tranche au large des 6 premiers caractères de chaque: -, | et | |--. Ensuite, pour obtenir le court de tennis, nous enchaînons un xet l'inverse de chaque ligne.

DLosc
la source
1

MBASIC , 82 octets

1 WIDTH 13:PRINT"------x------|  |  x  |  ||  |--x--|  ||  |  x  |  |------x------

Abuser de la directive WIDTH m'a fait économiser environ 20 octets.

wooshinyobject
la source
1

05AB1E , 25 24 octets

"
 -x|"•L®y[Â-Γ•5вèJ.º.∊

Essayez-le en ligne.

25 Alternative de 24 octets:

… -|•B°”Ñ•3вèJ3ä'x«».º.∊

Essayez-le en ligne.

Explication:

"\n -x|"       # Push string "\n -x|"
L®y[Â-Γ•      # Push compressed number 5960566858660563
         5в    # Converted to Base-5 as list: 
               #  [2,2,2,2,2,2,3,0,4,1,1,4,1,1,3,0,4,1,1,4,2,2,3]
è              # Index each digit into the string
 J             # And join the list together
               #  "\n -x|" and [2,2,2,2,2,2,3,0,4,1,1,4,1,1,3,0,4,1,1,4,2,2,3]
               #   → "------x\n|  |  x\n|  |--x"
             # Intersect mirror everything horizontally
  .∊           # Intersect mirror everything vertically (and output implicitly)

 -|           # Push string " -|"
B°”Ñ•         # Push compressed integer 193812448
      3в       # Converted to Base-3 as list: [1,1,1,1,1,1,2,0,0,2,0,0,2,0,0,2,1,1]
è              # Index each digit into the string
 J             # And join the list together
               #  " -|" and [1,1,1,1,1,1,2,0,0,2,0,0,2,0,0,2,1,1]
               #   → "------|  |  |  |--"
3ä             # Split the string into three parts: ["------","|  |  ","|  |--"]
  'x«         '# Append an "x" to each: ["------x","|  |  x","|  |--x"]
     »         # Join by newlines: "------x\n|  |  x\n|  |--x"
             # Intersect mirror everything horizontally
  .∊           # Intersect mirror everything vertically (and output implicitly)

Voir cette astuce 05AB1E (section Comment compresser les grands nombres entiers? ) Pour comprendre pourquoi •L®y[Â-Γ•est 5960566858660563et •B°”Ñ•est193812448 .

Merci au générateur d'art ASCII de @MagicOctopusUrn pour •L®y[Â-Γ•5BžLR"\n -x|"‡et •B°”Ñ•3BžLR" -|"‡, après quoi la translittération a été approfondie en échangeant le numéro et la chaîne sur la pile, utilisez вplutôt Bet indexez la chaîne avec è.

Kevin Cruijssen
la source
0

V , 25 octets

13é-Äï5I  |<esc>ÄÙ4l5r-Îd^ãrx

Essayez-le en ligne!

Hexdump:

00000000: 3133 e92d c4ef 3549 2020 7c1b c4d9 346c  13.-..5I  |...4l
00000010: 3572 2dce 645e e372 78                   5r-.d^.rx

Voici mon processus:

13é-Äï5I  |<esc>3<<ÄÙ4l5r-Gã<C-v>ërx
13é-Äï5I  |<esc>3<<ÄÙ4l5r-Î7|rx
13é-Äï5I  |<esc>3<<ÄÙ4l5r-Îãrx
13é-Äï5I  |<esc>ÄÙ4l5r-Îd^ãrx

Version alternative:

5I  |<esc>5ÄM4l5r-HÒ-G.Îxxãrx

Hexdump:

00000000: 3549 2020 7c1b 35c4 4d34 6c35 722d 48d2  5I  |.5.M4l5r-H.
00000010: 2d47 2ece 7878 e372 780a                 -G..xx.rx.
James
la source
0

JavaScript (Node.js) , 76 octets

(a='----',A='|  |',b='--x--',B='  x  ')=>[p=a+b+a,q=A+B+A,A+b+A,q,p].join`
`

Essayez-le en ligne!

  • 68 octets si le tableau de chaînes est autorisé.

JavaScript (Node.js) , 75 octets

_=>[p='x---',q='x|  ','x| -',q,p].map(c=>[...'1221330331221'].map(d=>c[d]))

Essayez-le en ligne!

  • Ce tableau de sortie 2d char. Je ne sais pas si on peut encore jouer au golf.
tsh
la source
0

Pyth , 32 octets

t_ps@L"x-
| "jC"??ôkË7"5

Essayez-le en ligne ici . Le code ci-dessus contient des caractères étranges, donc le copier / coller ne fonctionnera probablement pas.

Imprime la première moitié du motif, suivie de son revers sans le centre x.

t_ps@L"x-\n| "jC"..."5   Note newline replaced with \n, encoded string replaced with ...

               C"..."    Convert encoded string to base 256 number 727558509253668163499780
              j      5   Convert to base 5, yields [1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 2, 3, 4, 4, 3, 4, 4, 0, 4, 4, 3, 4, 4, 3, 2, 3, 4, 4, 3, 1, 1, 0]
    @L                   Map each of the above to...
      "x-\n| "           ... [x, -, newline, |, space]
   s                     Concatenate into string
  p                      Print without newline
 _                       Reverse
t                        All but first character, implicit print
Sok
la source
0

Powershell, 60 59 octets

-1 octets merci @AdmBorkBork

('------x------','|  |  x  |  |','|  |--x--|  |')[0,1+2..0]
mazzy
la source
1
59 octets à faire[0,1+2..0]
AdmBorkBork
0

C # (.NET Core) , 88 octets

string a="------x------\n",b="|  |  x  |  |\n";Console.Write(a+b+"|  |--x--|  |\n"+b+a);

Essayez-le en ligne!

Non golfé:

string a = "------x------\n",
       b = "|  |  x  |  |\n";
Console.Write(a + b + "|  |--x--|  |\n" + b + a);

 


Voici une autre façon de le faire avec une fonction anonyme basée sur la réponse d' Adrianmp du premier fil Let's Play Tennis:

C # (.NET Core) , 88 octets

()=>{string a="------x------\n",b="|  |  x  |  |\n";return(a+b+"|  |--x--|  |\n"+b+a);};

Essayez-le en ligne!

Non golfé:

() =>
{
    string a = "------x------\n",
           b = "|  |  x  |  |\n";
    return(a + b + "|  |--x--|  |\n" + b + a);
};
Suricate
la source
0

K4 , 36 35 octets

Solution:

"x-| "@4\:509 425 477 0@4\:17218113

Exemple:

q)k)"x-| "@4\:509 425 477 0@4\:17218113
"------x------"
"|  |  x  |  |"
"|  |--x--|  |"
"|  |  x  |  |"
"------x------"

Explication:

Nous voulons générer une liste d'index dans le tableau "x-| ", par exemple

1 1 1 1 1 1 0 1 1 1 1 1 1
2 3 3 2 3 3 0 3 3 2 3 3 2
2 3 3 2 1 1 0 1 1 2 3 3 2
2 3 3 2 3 3 0 3 3 2 3 3 2
1 1 1 1 1 1 0 1 1 1 1 1 1

Afin de générer cela, nous pouvons prendre la représentation en base 4 du retournement de ces nombres. Cela nous donne:

425 509 509 425 477 477 0 477 477 425 509 509 425

Nous pouvons prendre les valeurs distinctes et indexer aux indices dont nous avons besoin:

q)509 425 477 0@1 0 0 1 2 2 3 2 2 1 0 0 1
425 509 509 425 477 477 0 477 477 425 509 509 425

Ce tableau 1 0 0 1 2 2 3 2 2 1 0 0 1converti en base-4 est

q)k)4/:1 0 0 1 2 2 3 2 2 1 0 0 1
17218113 

Donc, pour la solution, nous faisons simplement ces étapes à l'envers.

"x-| "@4\:509 425 477 0@4\:17218113 / the solution
                        4\:17218113 / convert 17218113 into base-4
          509 425 477 0@            / index (@) into 509 425 477 0
       4\:                          / convert to base-4
"x-| "@                             / index (@) into "x-| "
streetster
la source