In una domanda stackoverflow ora eliminata, qualcuno ha pubblicato quanto segue:
Scrivi un programma o una funzione per stampare schemi alternati *e in #base a un dato intero n. Qualche esempio:
Ingresso: n=1
Uscita:
*
Ingresso n=5
Uscita:
*####
###**
***##
###**
*####
Ingresso: n=8
Uscita:
*#######
######**
***#####
####****
****####
#####***
**######
#######*
Dal momento che sembrava una bella sfida per giocare a golf, eccolo qui.
Come vengono costruiti questi schemi?
La prima riga inizia con una singola *, seguita dalla n-1quantità di trascinamento #.
La seconda riga ne contiene quindi due *, con n-2quantità di lead #.
La terza riga inizia con tre *, seguita dalla n-3quantità di trascinamento #.
eccetera.
Una volta raggiunto il centro ( n/2), contiamo di nuovo con la quantità di *, che può essere vista negli esempi sopra.
NOTA che per i numeri di input dispari la coppia inversa di righe (quindi prima e ultima; seconda e prossima all'ultima; ecc.) Sono esattamente le stesse. Nel n=5esempio le righe prime e ultime sono *####; la seconda e la penultima riga sono ###**.
Per numeri di input pari, tuttavia, la coppia di righe inversa viene invertita. Nel n=8esempio le righe prime e ultime sono *#######e #######*; la seconda e la penultima riga sono ######**e **######; eccetera.
Regole della sfida:
- È possibile utilizzare due caratteri stampabili distinti anziché
*e#. Puoi usareAeB;3e7;<e>; ecc. Indica nelle risposte cosa hai usato. - Puoi presumere
nche sarà un numero intero positivo (>= 1) - È consentito produrre un elenco / array di stringhe per ogni riga o una matrice di caratteri 2D, anziché stamparli su STDOUT.
Regole generali:
- Questo è code-golf , quindi vince la risposta più breve in byte.
Non lasciare che le lingue di code-golf ti scoraggino dal pubblicare risposte con lingue non codegolfing. Prova a trovare una risposta il più breve possibile per "qualsiasi" linguaggio di programmazione. - Per la tua risposta valgono regole standard , quindi puoi usare STDIN / STDOUT, funzioni / metodo con i parametri corretti e tipo di ritorno, programmi completi. La tua chiamata.
- Sono vietate le scappatoie predefinite .
- Se possibile, aggiungi un link con un test per il tuo codice.
- Inoltre, si consiglia vivamente di aggiungere una spiegazione per la risposta.
Casi di test (dalla prima n=1alla n=10)
*
*#
#*
*##
#**
*##
*###
##**
**##
###*
*####
###**
***##
###**
*####
*#####
####**
***###
###***
**####
#####*
*######
#####**
***####
###****
***####
#####**
*######
*#######
######**
***#####
####****
****####
#####***
**######
#######*
*########
#######**
***######
#####****
*****####
#####****
***######
#######**
*########
*#########
########**
***#######
######****
*****#####
#####*****
****######
#######***
**########
#########*