Geben Sie bei einer gegebenen Ganzzahl n > 1
ein ASCII-Achteck mit Seitenlängen aus, die aus n
Zeichen bestehen. Siehe Beispiele unten:
n=2
##
# #
# #
##
n=3
###
# #
# #
# #
# #
# #
###
n=4
####
# #
# #
# #
# #
# #
# #
# #
# #
####
n=5
#####
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
#####
and so on.
Sie können es an STDOUT drucken oder als Funktionsergebnis zurückgeben.
Beliebige Leerzeichen sind zulässig, sofern die Zeichen richtig ausgerichtet sind.
Regeln und I / O
- Die Ein- und Ausgabe kann auf jede bequeme Weise erfolgen .
- Sie können anstelle von
#
(außer Leerzeichen) ein beliebiges druckbares ASCII-Zeichen verwenden , das "Hintergrund" -Zeichen muss jedoch ein Leerzeichen sein (ASCII 32). - Es ist entweder ein vollständiges Programm oder eine Funktion zulässig.
- Standardlücken sind verboten.
- Dies ist Codegolf, daher gelten alle üblichen Golfregeln, und der kürzeste Code (in Byte) gewinnt.
code-golf
ascii-art
code-golf
geometry
code-golf
balanced-string
code-golf
cops-and-robbers
code-challenge
cops-and-robbers
code-golf
code-golf
random
cryptography
code-golf
array-manipulation
number
code-challenge
integer
code-golf
math
integer
code-golf
math
math
parsing
image-processing
test-battery
math
number
combinatorics
fastest-code
code-golf
code-golf
math
number-theory
rational-numbers
polynomials
code-golf
math
geometry
code-golf
code-golf
number-theory
primes
factoring
code-golf
restricted-source
code-golf
string
decision-problem
counting
code-golf
math
sequence
fibonacci
code-golf
array-manipulation
counting
code-golf
array-manipulation
number-theory
code-golf
array-manipulation
code-golf
random
code-golf
string
hexadecimal
code-golf
string
code-challenge
sorting
code-golf
number
floating-point
code-golf
sorting
code-golf
decision-problem
fibonacci
code-golf
number
combinatorics
code-golf
string
code-golf
math
code-golf
electrical-engineering
code-golf
javascript
code-golf
base-conversion
code-golf
array-manipulation
matrix
binary-matrix
code-golf
kolmogorov-complexity
python
perl
ruby
code-golf
number
code-golf
optimization
integer-partitions
code-golf
string
code-golf
ascii-art
AdmBorkBork
quelle
quelle
Antworten:
05AB1E , 3 Bytes
Probieren Sie es online!
Erläuterung
Sehen Sie sich diese Antwort an, um die Leinwand 05AB1E zu verstehen.
quelle
JavaScript (ES6),
114106105104103 ByteProbieren Sie es online!
Wie?
Dies baut die Ausgabe zeichenweise auf.
Mit der Eingaben berechnen wir:
Für jedes Zeichen bei(x,y) berechnen wir (h,v) :
Die zum Achteck gehörenden Zellen erfüllen eine der folgenden Bedingungen:
Zum Beispiel mitn=4 (und n′= 3 ):
quelle
Kohle , 5 Bytes
Meine erste Antwort mit Holzkohle!
Erläuterung:
Probieren Sie es online!
quelle
PolygonHollow(:*, InputNumber(), "#");
.Canvas ,
151412 BytesProbieren Sie es hier aus!
Erläuterung:
Alternative 12-Byte .
quelle
R ,
122117115 BytesProbieren Sie es online!
Portiert die Logik aus Arnauld's Antwort , speziell diese Überarbeitung, falls es weitere Verbesserungen gibt. Weitere 2 Bytes gespart dank Arnauld's Vorschlag, die Logik umzukehren!
quelle
h*v&h+v-n
in JS nicht tun, weil&
es ein bitweiser Operator ist; aber es ist ein logischer in R, damit das funktioniert).Python 2 , 96 Bytes
Probieren Sie es online!
quelle
Python 2 , 81 Bytes
Probieren Sie es online!
Python 2 , 75 Bytes
Probieren Sie es online!
Wenn das Mischen von Ausgabezeichen OK ist.
quelle
Powershell, 91 Bytes
quelle
PowerShell ,
10797 ByteProbieren Sie es online!
Wenn es einen billigen Weg gäbe, die erste Hälfte umzukehren, würde sich diese Antwort viel besser anfühlen. Es bildet die linke Hälfte, dann den Kern (entweder x
#'s
oder Leerzeichen) und spiegelt dann die Logik der linken Seite, um die rechte zu bilden. Unterhaltsame Tatsache, Sie müssen nicht über den nachgestellten Leerraum kopieren.Abgerollt und erklärt:
quelle
C (clang) ,
-DP=printf(
-DF=for(i
+ 179 = 199180 BytesProbieren Sie es online!
Ungolfed:
-19 Bytes dank @ceilingcat
quelle
Python 2 , 130 Bytes
Probieren Sie es online!
Auf dem Handy also nicht unglaublich golfen.
quelle
(n+2*i)
.Batch, 260 Bytes
Gibt zwei führende Leerzeichen in jeder Zeile aus. Erläuterung: Batch verfügt über keinen Operator für die Zeichenfolgenwiederholung, eine eingeschränkte Funktion zum Schneiden von Zeichenfolgen und erfordert separate Anweisungen, um eine Arithmetik auszuführen. Es war daher am besten, eine Zeichenfolge mit der eingegebenen Länge in Leerzeichen zu bilden (Batch kann diese mindestens in
#
s für die obere und untere Zeile übersetzen) und dann von oder zu einer bestimmten Position im Bereich von 3 bis zur Länge zu schneiden, um die Diagonalen zu generieren (Dies ist, was die letzte Zeile des Skripts erreicht).quelle
Ruby , 96 Bytes
Probieren Sie es online!
Noch nicht sehr gut gespielt. Könnte Golf spielen, wenn ich die Zeit finde.
quelle
Rot , 171 Bytes
Probieren Sie es online!
Erläuterung:
quelle
APL (Dyalog Unicode) , 46 Byte SBCS
Diese Lösung wurde von Adám zur Verfügung gestellt - danke!
Probieren Sie es online!
Meine (fast) originelle Lösung:
APL (Dyalog Unicode) , 61 Byte SBCS
Probieren Sie es online!
Vielen Dank an Adám für seine Hilfe!
Die Idee ist, den "Diamanten" zu finden, der teilweise im Quadrat liegt, und einen Kantenerkennungsfilter anzuwenden, um das Oktagon zu "umreißen".
quelle
(' '@~5 6∊⍨1⊥⊢∘,)⌺3 3⊢<(⍉⌽⌊⊢)⍣2∘(∘.+⍨∘⍳¯2+3×⊢)
⌺
. Zählen Sie lieber 1 Byte / Zeichen, indem Sie sich auf SBCS gemäß Meta beziehen .Perl 5,
201197188187186 Bytes:Probieren Sie es online!
Liest die Größe des Achtecks aus der ersten Zeile von
STDIN
.quelle
$"
anstelle von" "
.Perl 5, 176 Bytes
Basierend auf der obigen Antwort von Nathan Mills (zu der ich nicht genug Repräsentanten habe, um sie zu kommentieren!).
$e
kann vereinfacht werden,$a-1
um 6 Bytes zu sparen;$f
kann einer Kette zugeordnet werden; Speichern von zwei Bytes; Ich bin mir nicht sicher, wo die anderen beiden herkommen!Während an den beiden Stellen, an denen es vorkommt,
$e
ersetzt werden kann$a-1
, bedeutet die zusätzliche Klammer, dass dies nur die Gewinnschwelle erreicht.Ungolfed:
quelle
Perl 6 ,
76,73 Bytes-3 Bytes dank Jo King
Probieren Sie es online!
Gibt eine Liste von Zeilen zurück.
quelle
C (GCC) ,
158153150 Bytesfünfacht Bytes dank ceilingcat .Probieren Sie es online!
quelle
Python 3 , 224 Bytes
Probieren Sie es online!
quelle
Perl 5,
170168166 BytesDies funktioniert durch die Magie von Regex. Das "if" wird nur benötigt, um den pathologischen Fall von n = 2 zu behandeln, der ansonsten etwa Folgendes ausgibt:
wahrscheinlich kann dies weg codiert werden.
Ich denke, dass es noch viel mehr zu gewinnen gibt, wenn Sie eine Zeichenfolge bis zur Mitte erstellen und dann umkehren. Natürlich müssen wir dann ein zusätzliches Leerzeichen einfügen / löschen, wenn n ungerade ist (oder Thin-Space verwenden: p).
Ungolfed
Ich denke, das kann wahrscheinlich ein bisschen mehr gespielt werden, abgesehen von wesentlichen Änderungen wie dem Aufschieben
$@
und Drucken am Ende.[Vor dem Zuweisen wurden
..
in zwei Fällen Leerzeichen gesetzt und der Druck verschoben, wobei Semikolons gespart wurden.]quelle
\s
und nicht nur ein Leerzeichen in der letzten RegexJ,
594541 BytesProbieren Sie es online!
Fügt heute Abend eine Erklärung hinzu.
quelle
Perl 5, 98 Bytes
TIO
quelle