Eingebettete Diamanten!


26

Nein, nicht diese . Und nicht diese entweder. Diese Frage ist nichts dergleichen

Schreiben Sie den kürzesten Code, um die folgende Ausgabe zu drucken / zurückzugeben:

   /\      /\      /\
  /  \    /  \    /  \
 / /\ \  / /\ \  / /\ \
/ /  \ \/ /  \ \/ /  \ \
\ \  / /\ \  / /\ \  / /
 \ \/ /  \ \/ /  \ \/ /
  \  / /\ \  / /\ \  /
   \/ /  \ \/ /  \ \/
   /\ \  / /\ \  / /\
  /  \ \/ /  \ \/ /  \
 / /\ \  / /\ \  / /\ \
/ /  \ \/ /  \ \/ /  \ \
\ \  / /\ \  / /\ \  / /
 \ \/ /  \ \/ /  \ \/ /
  \  /    \  /    \  /
   \/      \/      \/
  • Standardmethoden für die Eingabe / Ausgabe.
  • Es gelten Standardlücken.
  • Nachgestellte / führende Leerzeichen sind in jedem Fall in Ordnung.

3
Nicht das, nicht das, was ist damit ?
Matthew Roh

Antworten:


14

Kohle , 28 24 23 Bytes

↗²↖↙⁴⟲P²⁴⁶↘↙↙²⟲P²⁴⁶C⁸¦⁰

Probieren Sie es online! Erläuterung:

↗²↖↙⁴   Draw the top left 4x4 corner
         /
        //
⟲P²⁴⁶   Rotate it three times to complete a diamond
         /\
        //\\
        \\//
         \/
↘↙↙²    Draw the top left line of the inner diamond
         /\
        //\\
        \\//
         \//
⟲P²⁴⁶   Rotate three times to complete five diamonds
C⁸¦⁰    Copy everything 8 characters to the right to complete eight diamonds

Bearbeiten: Meine vorherige Antwort verwendete ‖M‖M↓, um einen ganzen Diamanten durch Spiegeln der oberen Ecke zu erstellen, aber aufgrund eines Fehlers in Charcoal ließ dies den Cursor außerhalb der Position. Glücklicherweise habe ich einen anderen Weg gefunden, um den gleichen Effekt zu erzielen, der den Cursor nicht bewegt. Das bedeutet, dass ich ein Byte gespeichert habe, das den inneren Diamanten zeichnet. (Ich habe mich auch mit überlappenden Vorgängen befasst, aber ich konnte den Rotations- / Kopieransatz nicht verbessern.)

Bearbeiten: ↖²↗↘⁴‖M¬M¹¦³↘²‖M¬C⁸¦⁰erledigt den Job in 21 Bytes, aber das hängt vom neuen Reflektionsverhalten ab, daher weiß ich nicht, ob dies mit dem alten Code möglich war.


Ja, tut mir leid, es war ein Fehler - ich habe ihn behoben und werde versuchen, ASAP zu pushen, aber das ist immer noch wahnsinnig kurz: O +1
Nur ASCII

@ Nur ASCII Wenn ich TIO verwendet habe, wie wirkt sich das auf mich aus?
Neil

Nun, es wird immer noch zwischengespeichert. Solange es zwischengespeichert wird, sollte es in Ordnung sein, wenn Sie das so meinen
ASCII

@ Nur ASCII Ich möchte wissen, dass ich bei einer Änderung des Verhaltens von TIO einen aktualisierten (wenn auch nicht konkurrierenden) Link bereitstellen möchte.
Neil

Oh, in diesem Fall hat es bereits das Update
ASCII

7

Charcoal , 62 50 48 45 42 40 Bytes

Vielen Dank an @Okx für das Speichern von zwei Bytes!

↙²→↘²↙↖⁴→↗⁴‖MF²C⁸¦⁰M⁸↓→↗²↓↘²M⁴→↑↗²↓↘²‖M↓

Probieren Sie es online!

Erläuterung:

↙²→↘²          // Draw the left half of the inner part of the first diamond.
↖⁴→↗⁴          // Draw the left half of the outer part.
‖M             // Mirror the half of the diamond to create the first full diamond.
F²C⁸¦⁰         // Copy the picture eight characters to the left twice.
               // The first copy gives us two diamonds, and the second copy of the
               // two diamonds overlaps so that the result is three diamonds.
M⁸↓→↗²↓↘²     // Move down to draw the upper inner half of the first middle diamond.
M⁴→↑↗²↓↘²     // Move right to do the same for the second middle diamond.
‖M↓           // Mirror the whole thing vertically.

1
Sie können ersetzen C⁸¦⁰C⁸¦⁰mit F²C⁸¦⁰¦einem Byte zu speichern.
Okx

@Okx Danke! Tatsächlich werden hierdurch zwei Bytes eingespart, da der Trailing-Vorgang entfällt ¦.
Steadybox

Für den Rekord scheint ein Update dieses Problem behoben zu haben, da der Code unter TIO nicht mehr richtig funktioniert. Die Antwort bleibt weiterhin gültig, da sie mit der Version funktionierte, die TIO zum Zeitpunkt der Veröffentlichung dieser Antwort verwendet hatte.
Steadybox

6

05AB1E , 45 44 43 Bytes

Code:

…/ \©•—‹íćCé']d₂2ó@¯çX‘¯¨•3вè8äJvy®‡«}»Â»

Vorerklärung:

Der •—‹íćCé'\]d₂2ó@¯çX‘¯¨•3вTeil ist nur eine komprimierte Version des folgenden Arrays:

[1, 1, 1, 0, 2, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 2, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 2, 1, 2, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 2, 1, 2, 0, 1, 0, 1, 2, 1, 2, 1, 1, 0, 1, 0, 2, 1, 2, 1, 1, 2, 1, 2, 0, 1, 0, 1, 1, 2, 1, 2, 1, 1, 2, 1, 1, 0, 1, 0, 2, 1, 2, 1, 1, 1, 1, 2, 0, 1, 0, 1, 1, 2, 1, 2]

Was wir in die Zeichenfolge indizieren …/ \. Diese Karten 0 -> /, 1 -> space, 2 -> \. Danach verarbeiten wir diesen String mit folgendem Programm:

8äJvy®‡«}»Â»

8ä               # Split the array into 8 pieces
  J              # Join each sub-array in the array
   vy     }      # For each string in the array
     Â           #   Bifurcate (duplicate and reverse)
      ®          #   Push the string "/ \" (which was copied using ©)
       Â         #   Bifurcate to get "\ /"
        ‡        #   Transliterate / -> \ and \ -> /
         «       #   Append to the original string
           »     # Join the entire stack on newlines
            Â    # Bifurcate
             »   # Join the stack by newlines

Verwendet die 05AB1E- Codierung. Probieren Sie es online!


05AB1E ist anscheinend sehr gut in ASCII-Kunst ...
Esolanging Fruit

4
Vierundvierzig durchgestrichen ist immer noch vierundvierzig.
Okx

@Okx Sofern Sie keine geschützten Leerzeichen verwenden .
Steadybox

5

PHP, 126 Bytes

<?=gzinflate(base64_decode("vY7BCQAwCAP/mSIbuJD7z1GJLbbiuz5yKCeEpDk1RUSQWm8iMiRnIyw178Qgi5hs3ceHOA86snN7ON2b/687X+7umuIC"));

Probieren Sie es online!

PHP, 149 Bytes

$s=strtr("000
111
222
333
444
555
  \ 22 /  
   \\33/   ",["   /\   ","  /  \  "," / /\ \ ","/ /  \ \\","\ \  / /"," \ \/ / "]);echo"$s
".strrev($s);

Probieren Sie es online!


3

JavaScript, 232 Bytes

_=>(a=`3868683
2/274/274/272
1/18172/18172/18171
/1/27191/27191/2717
7172/18172/18172/1/
17191/27191/27191/1
272/18172/18172/2
391/27191/27193`.replace(/\d/g,n=>n>6?['\\','/\\','\\/'][n-7]:' 
'.repeat(n)))+`
`+[...a].reverse().join``

Probieren Sie es online!

const f = _=>(a=`3868683
2/274/274/272
1/18172/18172/18171
/1/27191/27191/2717
7172/18172/18172/1/
17191/27191/27191/1
272/18172/18172/2
391/27191/27193`.replace(/\d/g,n=>n>6?['\\','/\\','\\/'][n-7]:' '.repeat(n)))+`
`+[...a].reverse().join``

console.log(`
${f()}
`)


Ich habe eine 126-Byte-Lösung unten. :)
Steve Bennett

3

Ruby, 99 97 Bytes

400.times{|i|print (23<x=i%25)?$/:" /  \\   "[(x^y=i/25)&4^x+y&1^(x-2&4&y-2>y/6%2*x/2%11*4?2:0)]}

Erläuterung

Jedes 4x4-Quadrat enthält nur Leerzeichen und /oder \. Wir zeichnen diese auf, um das gesamte Rautenmuster zu erhalten. Um Teilmuster an den Rändern zu vermeiden, müssen bestimmte 2x2-Quadrate leer gelassen werden (siehe unten).

.. /\ .... /\ .... /\ ..
../  \..../  \..../  \..
 / /\ \  / /\ \  / /\ \
/ /  \ \/ /  \ \/ /  \ \
\ \  / /\ \  / /\ \  / /
 \ \/ /  \ \/ /  \ \/ /
..\  / /\ \  / /\ \  /..
.. \/ /  \ \/ /  \ \/ ..
.. /\ \  / /\ \  / /\ ..
../  \ \/ /  \ \/ /  \..
 / /\ \  / /\ \  / /\ \
/ /  \ \/ /  \ \/ /  \ \
\ \  / /\ \  / /\ \  / /
 \ \/ /  \ \/ /  \ \/ /
..\  /....\  /....\  /..
.. \/ .... \/ .... \/ ..

Ungolfed-Version - geändert, um das oben genannte zu drucken, um bei der Erklärung zu helfen

400.times{|i|print (23<x=i%25)?$/:     #Calculate x. If last column, print a newline else
  " /..\\ .."[(x^y=i/25)&4^x+y&1^      #If (x^y)&4==4, use x+y&1 to select between space and /. If (x^y)&4==0 select between \ and space.
  (x-2&4&y-2>y/6%2*x/2%11*4?2:0)]      #If x-2&4&y-2==4, and we are on the 2 character wide border (y/6%2*x/2%11==0), XOR with 2 to print .
}

2

Pyth - 106 98 96 92 Bytes

V16V24J%t+NH8K%+_2-NH8=Y&&&>H1>N1<N14<H22p?|q2J&&Y!%J4?<1%H4J!J\/?|q2K&&Y!%K4?<1%H4!KK\\d)pb

Versuch es


1

C #, 608 Bytes

void q(){Action<string>a=Console.Write;Func<int,int,string>b=(c,d)=>new string(' ',c)+(d<1?"/\\":d<2?"/  \\":d<3?"/ /\\ \\":d<4?"/ /  \\ \\":d<5?"\\ \\  / /":d<6?"\\ \\/ /":d<7?"\\  /":"\\/");Action e=()=>a(b(0,4)+b(0,4)+b(0,4)+"\n"+b(1,5)+b(2,5)+b(2,5)+"\n");Action f=()=>a(b(1,2)+b(2,2)+b(2,2)+"\n");Action g=()=>a(b(0,3)+b(0,3)+b(0,3)+"\n");a(b(3,0)+b(6,0)+b(6,0)+"\n"+b(2,1)+b(4,1)+b(4,1)+"\n");f();g();e();a("  \\  / /\\ \\  / /\\ \\  /\n"+"   \\/ /  \\ \\/ /  \\ \\/\n"+"   /\\ \\  / /\\ \\  / /\\\n"+"  /  \\ \\/ /  \\ \\/ /  \\\n");f();g();e();a(b(2,6)+b(4,6)+b(4,6)+"\n"+b(3,7)+b(6,7)+b(6,7)+"\n");}

Nicht, dass ich das länger machen möchte, aber es sieht so aus, als ob du vermisst wirst using System;. Ich bin mir auch ziemlich sicher, dass Sie mehr Golf spielen können, aber ich habe nicht zu viel Zeit damit verbracht, um 100% sicher zu sein.
TheLethalCoder

Es ist länger als die Ausgabe und System.Console.WriteLine(@"...");übertrifft meine Antwort um 200 Bytes.
LiefdeWen

1

C #, 382 291 Bytes

_=>string.Format(@"{5}{5}{5}
{2}{2}{2}
{0}{0}{0}
{1}{1}{1}
\ \ {0}{0} / /
 \ \{1}{1}/ /
  \ {0}{0} /
   \{1}{1}/
   /\ \ {0} / /\
  /  \ \{1}/ /  \
 {0}{0}{0}
{1}{1}{1}
\ \ {0}{0} / /
 \ \{1}{1}/ /
{4}{4}{4}
{3}{3}{3}",@" / /\ \ ",@"/ /  \ \",@"  /  \  ",@"   \/   ",@"  \  /  ",@"   /\   ");

1

Javascript 126 Bytes

for(c=r=a='';r<16;c++>22&&(r++,c=0,a+=`
`))C=c%22>1&&r%14>1,q=[1,,C&&r&2,,,,C&&~r&2,,1],a+=q[c+5+r&7]?'/':q[r-c+20&7]?'\\':' '

Da es jetzt ziemlich unlesbar ist, eine grundlegende Erklärung:

  • Wir kacheln den Raum von links oben nach rechts unten
  • Wir zeichnen es als 6 diagonale Linien, die sich alle 8 Zeichen wiederholen: 2 durchgezogene Linien und 4 gestrichelte Linien (zwei Zeichen, dann zwei Leerzeichen ...).
  • Der C=...Zweck ist, das Zeichnen einiger Linien auf einen Begrenzungsrahmen zu beschränken
  • Um viele Zeichen zu speichern, fügen wir bewusst Zahlen hinzu, um die Ausdrücke für die Zeilen nach oben und nach unten extrem ähnlich zu gestalten
  • Setzen Sie dann die Ausdrücke selbst in ein spärliches Array [1,,C&&...], in das wir nachschlagen. Wenn es einen Wahrheitswert gibt, zeichnen wir den entsprechenden Charakter.

-

for(c=r=a='';r<16;c++>22&&(r++,c=0,a+=`
`))                 // basic grid tiling
C=c%22>1&&r%14>1,   // are we not near the edges
q=[1,               // a solid line that always draws
,                   // a line that never draws
C&&r&2,             // a line that draws if not near the edge, and if on the correct "dash" (r&2)
,,,
C&&~r&2,            // if not near the edge, and on the opposite "dash" (~r&2)
,1                  // the opposite diagonal line that always draws
],
a+=q[c+5+r&7]?'/' // compute which upward line we're on, check whether to draw it
:q[r-c+20&7]?'\\' // do the same for the downward line
:' '                // otherwise draw a space

Vielleicht hat diese Erklärung nicht geholfen. :)

Versuchen Sie es online: https://codepen.io/stevebennett/pen/WjgMpY

Hoffentlich habe ich die Ausgabe richtig gemacht:

   /\      /\      /\   
  /  \    /  \    /  \  
 / /\ \  / /\ \  / /\ \ 
/ /  \ \/ /  \ \/ /  \ \
\ \  / /\ \  / /\ \  / /
 \ \/ /  \ \/ /  \ \/ / 
  \  / /\ \  / /\ \  /  
   \/ /  \ \/ /  \ \/   
   /\ \  / /\ \  / /\   
  /  \ \/ /  \ \/ /  \  
 / /\ \  / /\ \  / /\ \ 
/ /  \ \/ /  \ \/ /  \ \
\ \  / /\ \  / /\ \  / /
 \ \/ /  \ \/ /  \ \/ / 
  \  /    \  /    \  /  
   \/      \/      \/   

Geschichte

130

for(c=r=a='';r<16;c++>22&&(r++,c=0,a+=`
`))C=c%22>1&&r%14>1,q=[1,,C&&r&2,,,,C&&~r&2,,1],a+=q[(c+5+r)%8]?'/':q[(r-c+20)%8]?'\\':' '

133

for(c=r=a='';r<16;c++>22&&(r++,c=0,a+=`
`))C=c%22>1,q=[1,,C&&r&2&&r<14,,,,C&&~r&2&&r>1,,1],a+=q[(c+5+r)%8]?'/':q[(r-c+20)%8]?'\\':' '

137

for(c=r=a='';r<16;c++==23&&(r++,c=0,a+=`
`))C=c<22&&c>1,q=[1,,C&&r&2&&r<14,,,,C&&~r&2&&r>1,,1],a+=q[(c+5+r)%8]?'/':q[(r-c+20)%8]?'\\':' '

155

for(c=r=a='';r<16;c++==23&&(r++,c=0,a+=`
`))Z=(C=c<22&&c>1)&&~r&2&&r>1,Y=C&&r&2&&r<14,B=(c-r+12)%8,A=(c+5+r)%8,q=[1,,Y,,,,Z,,1],a+=q[A]?'/':q[8-B]?'\\':' '

Verlauf: 172

for(c=r=a='';r<16;c++==23&&(r++,c=0,a+='\n'))a+=(Z=(C=c<22&&c>1)&&~r&2&&r>3,Y=C&&r&2&&r<12,B=(c-r+16)%8,A=(c+r)%8,A==3||A==5&&Y||A==1&&Z?'/':B==4||B==2&&Y||B==6&&Z?'\\':' ')

1

Canvas , 18 Byte

4/2/33╋╬2/77╋╬:91╋

Probieren Sie es hier aus!

Erläuterung:

4/           push a diagonal of length 4
  2/         push a diagonal of length 2
    33╋      insert that at [3;3] in the 1st diagonal
                    /
                   / 
                  / /
                 / / 
╬            quad-palindromize with 0 overlap
 2/77╋       insert a 2-long diagonal in the bottom-right corner
                    /\   
                   /  \  
                  / /\ \ 
                 / /  \ \
                 \ \  / /
                  \ \/ / 
                   \  / /
                    \/ / 
      ╬      quad-palindromize with 0 overlap, creating most of the output
                    /\      /\   
                   /  \    /  \  
                  / /\ \  / /\ \ 
                 / /  \ \/ /  \ \
                 \ \  / /\ \  / /
                  \ \/ /  \ \/ / 
                   \  / /\ \  /  
                    \/ /  \ \/   
                    /\ \  / /\   
                   /  \ \/ /  \  
                  / /\ \  / /\ \ 
                 / /  \ \/ /  \ \
                 \ \  / /\ \  / /
                  \ \/ /  \ \/ / 
                   \  /    \  /  
                    \/      \/   
       :91╋  overlap self on [9;1]

0

Netzhaut , 214 Bytes


F/\E/\E/\¶B/B\BB/B\FAD D¶F\/ C C¶FD D /\¶BC CAF\B/BB\B/¶F\/E\/E\/
F
B 
E
BBB
D
/\ \B/
C
/B\ \/
B
  
A
 /  \¶ / /\ \  / /\ \  / /\ \¶/ /  \ \/ /  \ \/ /  \ \¶\ \  / /\ \  / /\ \  / /¶ \ \/ /  \ \/ /  \ \/ /¶  \  / 

Probieren Sie es online!

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.