Diberikan integer input n > 1
, mengeluarkan oktagon seni ASCII dengan panjang sisi yang terdiri dari n
karakter. Lihat contoh di bawah ini:
n=2
##
# #
# #
##
n=3
###
# #
# #
# #
# #
# #
###
n=4
####
# #
# #
# #
# #
# #
# #
# #
# #
####
n=5
#####
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
#####
and so on.
Anda dapat mencetaknya ke STDOUT atau mengembalikannya sebagai hasil fungsi.
Berapapun ruang kosong ekstranus dapat diterima, asalkan karakter berbaris dengan tepat.
Aturan dan I / O
- Input dan output dapat diberikan dengan metode apa pun yang mudah .
- Anda dapat menggunakan karakter ASCII yang dapat dicetak alih-alih
#
(kecuali spasi), tetapi karakter "latar belakang" harus berupa spasi (ASCII 32). - Program lengkap atau fungsi dapat diterima.
- Celah standar dilarang.
- Ini adalah kode-golf sehingga semua aturan golf biasa berlaku, dan kode terpendek (dalam byte) menang.
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
sumber
sumber
Jawaban:
05AB1E , 3 byte
Cobalah online!
Penjelasan
Lihat jawaban ini untuk memahami kanvas 05AB1E.
sumber
JavaScript (ES6),
114106105104103 byteCobalah online!
Bagaimana?
Ini membangun karakter keluaran dengan karakter.
Diberikan inputn , kami menghitung:
Untuk setiap karakter di( x , y) , kami menghitung ( h , v ) :
Sel-sel yang termasuk dalam oktagon memenuhi salah satu kondisi berikut:
Misalnya, dengann=4 (dan n′=3 ):
sumber
Arang , 5 byte
Jawaban pertama saya dengan Charcoal!
Penjelasan:
Cobalah online!
sumber
PolygonHollow(:*, InputNumber(), "#");
.Kanvas ,
151412 byteCoba di sini!
Penjelasan:
Alternatif 12-byter .
sumber
R ,
122117115 byteCobalah online!
Port logika dari jawaban Arnauld , khususnya revisi ini jika ada perbaikan lebih lanjut. 2 byte lainnya disimpan berkat saran Arnauld untuk membalik logika!
sumber
h*v&h+v-n
di JS karena&
operator bitwise; tapi ini logis di R, jadi itu berfungsi).Python 2 , 96 byte
Cobalah online!
sumber
Python 2 , 81 byte
Cobalah online!
Python 2 , 75 byte
Cobalah online!
Jika mencampur karakter output tidak apa-apa.
sumber
Powershell, 91 byte
sumber
PowerShell ,
10797 byteCobalah online!
Jika ada cara murah untuk membalikkan babak pertama, jawaban ini akan terasa jauh lebih baik. Itu membangun setengah kiri, lalu inti (yang merupakan x
#'s
atau spasi), lalu cermin logika kiri untuk membuat yang benar. Kenyataan yang menyenangkan, Anda tidak perlu menyalin di atas spasi putih.Belum dibuka dan dijelaskan:
sumber
C (dentang) ,
-DP=printf(
-DF=for(i
+ 179 = 199180 byteCobalah online!
Tidak Disatukan:
-19 byte berkat @ceilingcat
sumber
Python 2 , 130 byte
Cobalah online!
Di ponsel, jadi tidak luar biasa golf.
sumber
(n+2*i)
.Batch, 260 byte
Menghasilkan dua spasi utama pada setiap baris. Penjelasan: Batch tidak memiliki operator pengulangan string, kemampuan mengiris string terbatas dan memerlukan pernyataan terpisah untuk melakukan aritmatika. Oleh karena itu paling golf untuk membuat string dari panjang input dalam spasi (Batch setidaknya dapat menerjemahkannya menjadi
#
s untuk garis atas dan bawah) dan kemudian mengiris dari atau ke posisi tertentu mulai dari 3 hingga panjang untuk menghasilkan diagonal. (Inilah yang dicapai baris terakhir skrip).sumber
Ruby , 96 byte
Cobalah online!
Belum terlalu bermain golf. Bisa bermain golf jika saya menemukan waktu.
sumber
Merah , 171 byte
Cobalah online!
Penjelasan:
sumber
APL (Dyalog Unicode) , 46 byte SBCS
Solusi ini disediakan oleh Adám - terima kasih!
Cobalah online!
Solusi asli saya (hampir):
APL (Dyalog Unicode) , 61 byte SBCS
Cobalah online!
Terima kasih kepada Adám atas bantuannya!
Idenya adalah untuk menemukan "berlian" yang terletak sebagian di alun-alun dan menerapkan filter deteksi tepi untuk "menguraikan" octagone.
sumber
(' '@~5 6∊⍨1⊥⊢∘,)⌺3 3⊢<(⍉⌽⌊⊢)⍣2∘(∘.+⍨∘⍳¯2+3×⊢)
⌺
. Alih-alih menghitung 1 byte / char dengan merujuk ke SBCS sesuai Meta .Perl 5,
201197188187186 byte:Cobalah online!
Membaca ukuran segi delapan dari baris pertama
STDIN
.sumber
$"
bukan" "
.Perl 5, 176 byte
Berdasarkan jawaban Nathan Mills di atas (yang saya punya cukup banyak komentar untuk berkomentar!).
$e
dapat disederhanakan untuk$a-1
menghemat 6 byte;$f
dapat ditugaskan rantai; menghemat dua byte; Tidak yakin dari mana dua lainnya berasal!Sementara
$e
dapat diganti dengan$a-1
di dua tempat itu terjadi, kurung tambahan yang dibutuhkan berarti ini hanya impas.Tidak Disatukan:
sumber
Perl 6 ,
7673 byte-3 byte terima kasih kepada Jo King
Cobalah online!
Mengembalikan daftar garis.
sumber
C (gcc) ,
158153150 bytelimadelapan byte berkat ceilingcat .Cobalah online!
sumber
Python 3 , 224 byte
Cobalah online!
sumber
Perl 5,
170168166 byteIni bekerja dengan keajaiban regex. "Jika" hanya diperlukan untuk menangani kasus patologis n = 2, yang sebaliknya menghasilkan sesuatu seperti:
mungkin ini bisa dikodekan.
Saya pikir mungkin ada banyak lagi yang bisa didapat dengan membuat string hingga titik tengah kemudian membalikkannya. Tentu saja kita perlu memasukkan / menghapus ruang tambahan jika n ganjil (atau menggunakan ruang tipis: p).
Tidak disatukan
Saya pikir ini mungkin bisa sedikit lebih golf, terlepas dari perubahan signifikan seperti mendorong
$@
dan mencetak yang pada akhirnya.[Memutar spasi di sekitar
..
dan memindahkan pencetakan sebelum menetapkan dalam dua kasus, menghemat titik koma.]sumber
\s
dan bukan hanya spasi di regex terakhirJ,
594541 byteCobalah online!
Akan menambah penjelasan malam ini.
sumber
Perl 5, 98 byte
TIO
sumber