Dalam sebuah pertanyaan stackoverflow sekarang dihapus, seseorang diposting berikut:
Menulis sebuah program atau fungsi untuk mencetak pola alternating di *
dan #
berdasarkan bilangan bulat tertentu n
. Beberapa contoh:
Input: n=1
Output:
*
Input n=5
Output:
*####
###**
***##
###**
*####
Input: n=8
Output:
*#######
######**
***#####
####****
****####
#####***
**######
#######*
Sejak itu tampak seperti cukup keren kode-golf tantangan, ini dia.
Bagaimana pola-pola ini dibangun?
Baris pertama dimulai dengan satu *
, diikuti oleh n-1
jumlah tertinggal #
.
Baris kedua kemudian berisi dua *
, dengan n-2
jumlah pemimpin #
.
Baris ketiga dimulai dengan tiga *
, diikuti oleh n-3
jumlah tertinggal #
.
dll.
Setelah kami sampai di tengah ( n/2
), kita menghitung kembali lagi dengan jumlah *
yang dapat dilihat pada contoh di atas.
CATATAN bahwa untuk nomor masukan aneh pasangan yang terbalik garis (jadi pertama dan terakhir; kedua dan di sebelah terakhir; dll) yang persis sama. Dalam n=5
contoh, baris pertama dan terakhir adalah *####
; baris kedua dan berikutnya adalah ###**
.
Untuk nomor masukan bahkan namun pasangan yang terbalik dari garis terbalik. Dalam n=8
contoh, baris pertama dan terakhir adalah *#######
dan #######*
; baris kedua dan berikutnya adalah ######**
dan **######
; dll.
Aturan tantangan:
- Anda dapat menggunakan dua yang berbeda dicetak karakter bukan
*
dan#
. Anda bisa menggunakanA
danB
;3
dan7
;<
dan>
; dll Silahkan negara dalam jawaban Anda apa yang telah Anda gunakan. - Anda dapat mengasumsikan
n
akan menjadi bilangan bulat positif (>= 1
) - Anda diperbolehkan untuk output daftar / array string untuk setiap baris atau matriks 2D karakter, bukannya mencetak mereka untuk STDOUT.
Aturan umum:
- Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang.
Jangan biarkan bahasa kode-golf mencegah Anda memposting jawaban dengan bahasa non-codegolf. Cobalah untuk memberikan jawaban sesingkat mungkin untuk bahasa pemrograman 'apa saja'. - Aturan standar berlaku untuk jawaban Anda, jadi Anda diperbolehkan menggunakan STDIN / STDOUT, fungsi / metode dengan parameter yang tepat dan tipe pengembalian, program lengkap. Panggilanmu.
- Celah default tidak diperbolehkan.
- Jika memungkinkan, tambahkan link dengan tes untuk kode Anda.
- Juga, menambahkan penjelasan untuk jawaban Anda sangat dianjurkan.
Test case (pertama n=1
melalui n=10
)
*
*#
#*
*##
#**
*##
*###
##**
**##
###*
*####
###**
***##
###**
*####
*#####
####**
***###
###***
**####
#####*
*######
#####**
***####
###****
***####
#####**
*######
*#######
######**
***#####
####****
****####
#####***
**######
#######*
*########
#######**
***######
#####****
*****####
#####****
***######
#######**
*########
*#########
########**
***#######
######****
*****#####
#####*****
****######
#######***
**########
#########*