Spielen wir Tennis 2: Ost-West-Spiel

10

Es gibt eine Herausforderung Lass uns Tennis spielen von Daniel . Er schlägt vor, ein Gericht in Nord-Süd-Richtung zu platzieren. Mein Vorschlag ist, einen Platz zu schaffen, um auch in Ost-West-Richtung Tennis zu spielen.

Sie müssen einen Tennisplatz drucken, aber aus vertraulichen Gründen müssen Sie dies in möglichst wenigen Bytes tun.

Tennisplatz

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

Ursprüngliche Regeln sind:

  • Keine zusätzlichen Leerzeichen.
  • Keine Tabs, da sie unfair wären.
  • Eine optionale nachfolgende Newline ist zulässig.

Dies ist , also gewinnt der kürzeste Code in Bytes!

mazzy
quelle

Antworten:

6

Leinwand , 13 12 Bytes

«ω↕9:gW:tC‟┼

Quad-Palindromisiert eine komprimierte Ecke des Feldes .

Probieren Sie es hier aus!

11 Bytes mit Großbuchstaben Xunter Verwendung der Tatsache, dass eine /bessere Komprimierung als xund eine Palindromisierung zu Überlappungen /und deren Spiegelung führen würden \, was zu einer Überlappung führtX

Dzaima
quelle
1
Als ich diese Frage zum ersten Mal sah, dachte ich: "Habe ich jetzt genug Zeit, um Leinwand zu lernen und dann eine Lösung zu veröffentlichen?" Offensichtlich nicht: P
Quintec
10

Python 2 , 59 Bytes

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

Probieren Sie es online aus!

Druckt die erste Hälfte der Zeichenfolge, gefolgt von der Rückseite. Es ist langweilig, aber effizient. Ich habe versucht, sich wiederholende Teile herauszuholen s, insbesondere die -, fand aber nichts kürzeres.


Python 2 , 59 Bytes

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

Probieren Sie es online aus!

Mit Jo Kings Konstruktion .


Python 2 , 62 Bytes

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

Probieren Sie es online aus!

Druckt die erste Hälfte jeder Zeile 'x', gefolgt von der ersten umgekehrten Hälfte.

xnor
quelle
7

Holzkohle , 15 Bytes

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

Probieren Sie es online aus! Der Link führt zur ausführlichen Version des Codes. Zur Erklärung werde ich das Ergebnis nach jedem der Zeichenbefehle bis zur endgültigen Reflexion zeigen:

↑²        |
          |

     ------
←⁶        |
          |

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

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

    x------
↑²  x  |  |
    x--|  |
Neil
quelle
4

Python 3 , 65 62 Bytes

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

Probieren Sie es online aus!

Scherzen
quelle
4
Nun dies ist die Art von String-Slicing wizardry dass ich dachte , eine Python Antwort auf diese Herausforderung haben sollte. Gut gespielt!
DLosc
2

Python 3, 75 Bytes

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

Wahrscheinlich golfbar - ich habe noch nie wirklich ausprobiert .

Probieren Sie es online aus!

In Python 2 konnte ich es auf 76 Bytes bringen

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
quelle
1

Python 2 , 69 68 66 Bytes

-2 danke an Jo King

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

Probieren Sie es online aus!

Wir Zyklus die folgenden drei Muster unendlich (6 - mal ist ausreichend für unsere Zwecke unendlich) und Scheibe aus den ersten 6 Zeichen jedes: -, | , und | |--. Um den Tennisplatz zu bekommen, verketten wir eine xund die Rückseite jeder Linie.

DLosc
quelle
1

MBASIC , 82 Bytes

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

Durch den Missbrauch der WIDTH-Direktive habe ich ungefähr 20 Bytes gespart.

wooshinyobject
quelle
1

05AB1E , 25 24 Bytes

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

Probieren Sie es online aus.

25 24 Bytes Alternative:

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

Probieren Sie es online aus.

Erläuterung:

"\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)

Sehen Sie diese 05AB1E Spitze Mine (Abschnitt Wie große natürliche Zahlen zu komprimieren? ) Zu verstehen , warum •L®y[Â-Γ•ist 5960566858660563und •B°”Ñ•ist 193812448.

Dank des ASCII-Art-Generators von @MagicOctopusUrn für •L®y[Â-Γ•5BžLR"\n -x|"‡und •B°”Ñ•3BžLR" -|"‡, nach dem das Transliterat durch Vertauschen der Nummer und der Zeichenfolge auf dem Stapel weiter ausgebaut wurde, verwenden Sie вanstelle von Bund indizieren Sie mit in die Zeichenfolge mit è.

Kevin Cruijssen
quelle
0

V , 25 Bytes

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

Probieren Sie es online aus!

Hexdump:

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

Hier war mein Prozess:

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

Alternative Version:

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
quelle
0

Pyth , 32 Bytes

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

Probieren Sie es hier online aus . Der obige Code enthält einige ungerade Zeichen, sodass das Kopieren / Einfügen wahrscheinlich nicht funktioniert.

Druckt die erste Hälfte des Musters, gefolgt von der Rückseite ohne die Mitte 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
quelle
0

Powershell, 60 59 Bytes

-1 Bytes danke @AdmBorkBork

('------x------','|  |  x  |  |','|  |--x--|  |')[0,1+2..0]
mazzy
quelle
1
59 Bytes zu tun[0,1+2..0]
AdmBorkBork
0

C # (.NET Core) , 88 Byte

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

Probieren Sie es online aus!

Ungolfed:

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

 


Hier ist eine alternative Möglichkeit, dies mit einer anonymen Funktion zu tun, die auf der Antwort von adrianmp aus dem ersten Let's Play Tennis-Thread basiert :

C # (.NET Core) , 88 Byte

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

Probieren Sie es online aus!

Ungolfed:

() =>
{
    string a = "------x------\n",
           b = "|  |  x  |  |\n";
    return(a + b + "|  |--x--|  |\n" + b + a);
};
Erdmännchen
quelle
0

K4 , 36 35 Bytes

Lösung:

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

Beispiel:

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

Erläuterung:

Wir möchten eine Liste von Indizes in das Array generieren "x-| ", z

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

Um dies zu erzeugen, können wir die Basis-4-Darstellung des Flip dieser Zahlen nehmen. Dies gibt uns:

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

Wir können die unterschiedlichen Werte und Indizes an den von uns benötigten Indizes übernehmen:

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

Dieses 1 0 0 1 2 2 3 2 2 1 0 0 1in Base-4 konvertierte Array ist

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

Für die Lösung machen wir diese Schritte nur in umgekehrter Reihenfolge.

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