Ihre Herausforderung besteht darin, genau das folgende Feld auszugeben:
..................................................
..................................................
.. ..
.. ..
.. ++++++++++++++++++++++++++++++++++++++++++ ..
.. ++++++++++++++++++++++++++++++++++++++++++ ..
.. ++ ++ ..
.. ++ ++ ..
.. ++ .................................. ++ ..
.. ++ .................................. ++ ..
.. ++ .. .. ++ ..
.. ++ .. .. ++ ..
.. ++ .. ++++++++++++++++++++++++++ .. ++ ..
.. ++ .. ++++++++++++++++++++++++++ .. ++ ..
.. ++ .. ++ ++ .. ++ ..
.. ++ .. ++ ++ .. ++ ..
.. ++ .. ++ .................. ++ .. ++ ..
.. ++ .. ++ .................. ++ .. ++ ..
.. ++ .. ++ .. .. ++ .. ++ ..
.. ++ .. ++ .. .. ++ .. ++ ..
.. ++ .. ++ .. ++++++++++ .. ++ .. ++ ..
.. ++ .. ++ .. ++++++++++ .. ++ .. ++ ..
.. ++ .. ++ .. ++ ++ .. ++ .. ++ ..
.. ++ .. ++ .. ++ ++ .. ++ .. ++ ..
.. ++ .. ++ .. ++ .. ++ .. ++ .. ++ ..
.. ++ .. ++ .. ++ .. ++ .. ++ .. ++ ..
.. ++ .. ++ .. ++ ++ .. ++ .. ++ ..
.. ++ .. ++ .. ++ ++ .. ++ .. ++ ..
.. ++ .. ++ .. ++++++++++ .. ++ .. ++ ..
.. ++ .. ++ .. ++++++++++ .. ++ .. ++ ..
.. ++ .. ++ .. .. ++ .. ++ ..
.. ++ .. ++ .. .. ++ .. ++ ..
.. ++ .. ++ .................. ++ .. ++ ..
.. ++ .. ++ .................. ++ .. ++ ..
.. ++ .. ++ ++ .. ++ ..
.. ++ .. ++ ++ .. ++ ..
.. ++ .. ++++++++++++++++++++++++++ .. ++ ..
.. ++ .. ++++++++++++++++++++++++++ .. ++ ..
.. ++ .. .. ++ ..
.. ++ .. .. ++ ..
.. ++ .................................. ++ ..
.. ++ .................................. ++ ..
.. ++ ++ ..
.. ++ ++ ..
.. ++++++++++++++++++++++++++++++++++++++++++ ..
.. ++++++++++++++++++++++++++++++++++++++++++ ..
.. ..
.. ..
..................................................
..................................................
Die Box hat eine Höhe und eine Breite von 50, die Zwischenräume sind zwei breit.
Sie müssen eine Funktion oder ein Programm schreiben, das eine Zeichenfolge ausgibt oder zurückgibt und keine Eingaben vornimmt.
Wenigste Bytes gewinnt!
+
Box oben und unten nur eine Schicht hat? Dadurch werden algorithmische Antworten etwas länger, da die innersten beiden Schichten nicht genau quadratisch sind.Antworten:
Pyke,
2017 BytesProbieren Sie es hier aus!
Die Surround-Funktion wurde für solche Fragen zur Kolmogorov-Komplexität entwickelt !
quelle
J , 25 Bytes
Probieren Sie es online!
Erläuterung
quelle
echo
, wird es nicht einmal eine Funktion sein, nur ein Wert. Obwohl J sowieso keine Nullargumentfunktionen hat.C 115 Bytes
Definiert eine Funktion
f
(Aufruf alsf();
), die den String an STDOUT ausgibt.quelle
C
535478477 BytesNun, das ist viel Golf: - /
Hier ist die Ausgabe;
quelle
for(;i++<51;
ich die Loops neu schreibe, und jetzt bin ich überall um eins weg: - /++i
Haskell, 72 Bytes
@ Zgarbs Lösung in Haskell. Ich habe auch versucht, die Box durch Hinzufügen von Schichten um den Kern herum zu konstruieren
["..",".."]
, aber sie ist 9 Bytes länger (81 Bytes).quelle
Gestapelt, nicht konkurrierend, 35 Bytes
Probieren Sie es hier aus!
Ungolfed:
Ziemlich einfach.
surround
ist eine Funktion, die ein Objekt mit einem Füllobjekt umgibt. Zum Beispiel(0) 1 surround
ist((1 1 1) (1 0 1) (1 1 1))
.$surround
wirdsurround
als Funktion nicht ausgewertet.fold
Nimmt einen Anfangswert, dann etwas umzuklappen, dann eine Funktion. In diesem Fallsurround
wirdfold
ED, rund um die zunächst leere Zeichenfolge''
(equiv.ε
) Mit jedem Zeichen des Strings.Dabei wird zunächst eine Zeichenfolge erstellt
$' + .'
, die bei Multiplikation mit einer Zahl jedes Zeichen wiederholt. Dies lässt uns mit:++ ..
. Dies wird dann in eine Zeichenfolge umgewandelt. Dann wiederholen wir diese Zeichenfolge dreimal und stellen schließlich a voran.
, um die gewünschte Zeichenfolge zu erhalten.Ein anderer Ansatz für 39 Bytes:
#\
ist insert und verwendet das Anfangszeichen der Zeichenfolge als Startwert. Es funktioniert auch nur auf Arrays.quelle
JavaScript (ES6), 117 Byte
Die nicht rekursive Lösung hat mich 128 Bytes gekostet:
Wobei
\n
das wörtliche Zeilenumbruchzeichen darstellt.quelle
C 97 Bytes
quelle
Jelly , 18 Bytes
Probieren Sie es online!
Gleicher Ansatz wie Zgarbs J-Antwort:
12ŒRA
isabs([-12 … 12])
:x2
Wiederholt jedes Element zweimal,»þ`
erstellt eine Tabelle mit Maximalwerten,ị“ + .”
indiziert zyklisch einen String undY
fügt Zeilenumbrüche hinzu.quelle
05AB1E ,
393533 BytesProbieren Sie es online!
33-Byte-Version, die jetzt cooler ist, weil Emigna mir 2 Byte erspart hat:
Probieren Sie es online!
quelle
". + "DøJ3×'.«.pvy¤25yg-׫«})«»
für 33 Bytes.… .+•â3fM~•3BSè.pvy¤25yg-׫«})«»
für 34 Bytes auf der "cooler version".MATL , 21 Bytes
Probieren Sie es online!
quelle
Ruby, 77 Bytes
quelle
[i%26-13,i/52].map(&:abs).max%4
(speichert ein Byte) ersetzenHolzkohle , 25 Bytes
Probieren Sie es online! Der Link enthält einen ausführlichen Erklärungsmodus
quelle
Python 3 , 89 Bytes
Probieren Sie es online!
quelle
Haskell, 385 Bytes
Erste Runde Code Golf hier ... Ich freue mich darauf zu sehen, wie andere dieses Problem angehen.
Ausgabe:
quelle
where
in eine einzige Zeile und verwende sie;
zur Trennung. 3)f:f:[]
istf:[f] and
d: '': '': [] 'istd:" "
. 4)m
Nimmt einen Parameter, verwendet ihn aber nicht. Inlinem
undt
. 5) Definieren Sie eine neue#
zu ersetzende Funktionreplicate
:c#x=c<$[1..8*n+x]
und nennen Sie sie wied#2
und' '#(-6)
. 6)mod 2 == 0
ersetzt werden kanneven
, oder drehen Sie den Test und die Verwendungodd
und die Golferotherwise
:1<2
. ...b n=f:f:s:s:map(\x->l++x++r)(b$n-1)++s:s:f:[f]where f=d#2;s=l++' '#(-6)++r;l=d:d:" ";r=reverse l;d|odd n='+'|1<2='.';c#x=c<$[1..8*n+x]
.Oktave, 53 Bytes
Generieren Sie ein sich wiederholendes Muster von 1 bis 8 von der Mitte nach außen und verwenden Sie es als Index für die Extraktion von Elementen von
. ++ .
Probieren Sie es online!
quelle
Bash, 191 Bytes
Kann wahrscheinlich kleiner werden, war aber kleiner als meine algorithmischen Versuche.
quelle
203 Bytes
Vollständiges, lesbares Programm:
Golf Funktion :
quelle
05AB1E , 33 Bytes
Probieren Sie es online!
Erläuterung
quelle
PowerShell ,
171151 ByteProbieren Sie es online!
Hallo Antwort. Ich bin sicher, dass es einen kürzeren Weg gibt (angesichts der Länge der anderen Antworten bin ich zuversichtlich), aber dies zeigt einige nette Tricks.
Erläuterung:
1..12|%{' . +'[$_%4]}
generiert ein Array von Strings (mit einer Länge von einem Zeichen) in dem richtigen Muster, das wir brauchen. Probieren Sie es online!Wir fügen dann hinzu,
|%{($a+=$_+$_)})+"$a."
welches Array das Array annimmt und es basierend auf der vorherigen Zeile seitlich erweitert. Probieren Sie es online!Diese Zeichenfolgen werden dann in einer Schleife gesendet
|%{$c=if(++$i%2){('+','.')[($b=!$b)]}else{' '};$_.PadRight(25,$c)}
. Bei jeder Iteration wählen wir das richtige Zeichen (entweder ein Pluszeichen, ein Punkt oder ein Leerzeichen) und verwenden dann die.PadRight
Funktion, um die entsprechende Anzahl von Zeichen aufzufüllen. Probieren Sie es online!Jetzt haben wir das Fundament der oberen rechten Ecke. Wir müssen jeden String umkehren
|%{,($_+-join$_[($z=25..0)])*2}
und zusammenfügen, damit wir den oberen Rand des Blocks erreichen. Dies geschieht mit dem-join
Befehl und der Rückwärtsindizierung25..0
. Außerdem kapseln wir die Zeichenfolgen in ein Array,(...)
und machen sie doppelt,*2
damit wir die gesamte Spitze erhalten. Probieren Sie es online!Das alles wird in
$x
Parens gespeichert und eingekapselt, so dass die Strings in der Pipeline platziert werden. Zum Schluss kehren wir um$x
(um sicherzustellen, dass die doppelte mittlere Reihe herausgeschnitten wird, sonst hätten wir vier..
in der Mitte) und belassen diese in der Pipeline. Ein implizitesWrite-Output
Zeichen setzt einen Zeilenumbruch zwischen die Zeichenfolgen, sodass wir diesen kostenlos erhalten.quelle