In einer nun gelöschten Stapelüberlauf-Frage hat jemand Folgendes gepostet:
Schreiben eines Programms oder der Funktion zum Drucken in alternierenden Muster *
und #
basierend auf einer vorgegebenen ganzen Zahl n
. Einige Beispiele:
Eingabe: n=1
Ausgabe:
*
Eingabe n=5
Ausgabe:
*####
###**
***##
###**
*####
Eingabe: n=8
Ausgabe:
*#######
######**
***#####
####****
****####
#####***
**######
#######*
Da es wie eine ziemlich coole Code-Golf-Herausforderung aussah, ist es hier.
Wie sind diese Muster aufgebaut?
Die erste Zeile beginnt mit einer einzelnen *
, gefolgt von der n-1
Anzahl der nachfolgenden Zeilen #
.
Die zweite Zeile enthält dann zwei Zeilen *
mit der n-2
Anzahl der führenden Zeilen #
.
Die dritte Zeile beginnt mit drei *
, gefolgt von einem n-3
Nachlauf #
.
etc.
Sobald wir die Mitte ( n/2
) erreicht haben, zählen wir wieder mit dem Betrag von zurück *
, der in den obigen Beispielen zu sehen ist.
HINWEIS: Bei ungeraden Eingaben ist das invertierte Zeilenpaar (also zuerst und zuletzt; zweitens und vorletztes usw.) genau dasselbe. Im n=5
Beispiel sind die erste und letzte Zeile *####
; Die vorletzte und die vorletzte Zeile sind ###**
.
Bei geraden Eingaben wird jedoch das umgekehrte Zeilenpaar umgekehrt. Im n=8
Beispiel sind die erste und letzte Zeile *#######
und #######*
; die vorletzte und die vorletzte Zeile sind ######**
und **######
; etc.
Herausforderungsregeln:
- Sie können anstelle von und zwei verschiedene druckbare Zeichen verwenden . Sie können und verwenden ; und ; und ; usw. Bitte geben Sie in Ihren Antworten an, was Sie verwendet haben.
*
#
A
B
3
7
<
>
- Sie können davon ausgehen, dass
n
es sich um eine positive Ganzzahl handelt (>= 1
) - Sie können eine Liste / ein Array von Zeichenfolgen für jede Zeile oder eine 2D-Zeichenmatrix ausgeben, anstatt sie an STDOUT zu drucken.
Allgemeine Regeln:
- Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes.
Lassen Sie sich von Code-Golf-Sprachen nicht davon abhalten, Antworten mit Nicht-Codegolf-Sprachen zu veröffentlichen. Versuchen Sie, für jede Programmiersprache eine möglichst kurze Antwort zu finden. - Für Ihre Antwort gelten Standardregeln. Daher dürfen Sie STDIN / STDOUT, Funktionen / Methoden mit den richtigen Parametern und vollständige Programme vom Rückgabetyp verwenden. Ihr Anruf.
- Standardlücken sind verboten.
- Fügen Sie nach Möglichkeit einen Link mit einem Test für Ihren Code hinzu.
- Außerdem wird dringend empfohlen, eine Erklärung für Ihre Antwort hinzuzufügen.
Testfälle (zuerst n=1
durch n=10
)
*
*#
#*
*##
#**
*##
*###
##**
**##
###*
*####
###**
***##
###**
*####
*#####
####**
***###
###***
**####
#####*
*######
#####**
***####
###****
***####
#####**
*######
*#######
######**
***#####
####****
****####
#####***
**######
#######*
*########
#######**
***######
#####****
*****####
#####****
***######
#######**
*########
*#########
########**
***#######
######****
*****#####
#####*****
****######
#######***
**########
#########*