Biorąc pod uwagę liczbę całkowitą wejściową n > 1
, wyślij ośmiokąt artystyczny ASCII o długości boku złożonej ze n
znaków. Zobacz przykłady poniżej:
n=2
##
# #
# #
##
n=3
###
# #
# #
# #
# #
# #
###
n=4
####
# #
# #
# #
# #
# #
# #
# #
# #
####
n=5
#####
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
#####
and so on.
Możesz wydrukować go do STDOUT lub zwrócić jako wynik funkcji.
Dopuszczalna jest dowolna ilość obcych białych znaków, o ile znaki są odpowiednio ustawione w jednej linii.
Reguły i I / O
- Dane wejściowe i wyjściowe można podać dowolną dogodną metodą .
- Możesz użyć dowolnego drukowalnego znaku ASCII zamiast
#
(oprócz spacji), ale znak „tła” musi być spacją (ASCII 32). - Dopuszczalny jest pełny program lub funkcja.
- Standardowe luki są zabronione.
- To jest golf golfowy, więc obowiązują wszystkie zwykłe zasady gry w golfa, a wygrywa najkrótszy kod (w bajtach).
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
źródło
źródło
Odpowiedzi:
05AB1E , 3 bajty
Wypróbuj online!
Wyjaśnienie
Zobacz tę odpowiedź, aby zrozumieć płótno 05AB1E.
źródło
JavaScript (ES6),
114106105104103 bajtówWypróbuj online!
W jaki sposób?
To buduje znak wyjściowy po znaku.
Biorąc pod uwagę wejścien , obliczamy:
Dla każdego znaku w( x ,y) obliczamy ( h , v ) :
Komórki należące do ośmiokąta spełniają jeden z następujących warunków:
Na przykładn=4 (i n′=3 ):
źródło
Węgiel drzewny , 5 bajtów
Moja pierwsza odpowiedź z węglem drzewnym!
Wyjaśnienie:
Wypróbuj online!
źródło
PolygonHollow(:*, InputNumber(), "#");
.Płótno ,
151412 bajtówWypróbuj tutaj!
Wyjaśnienie:
Alternatywnie 12-bajtowy .
źródło
R ,
122117115 bajtówWypróbuj online!
Przenosi logikę z odpowiedzi Arnaulda , szczególnie tej wersji na wypadek, gdyby pojawiły się dalsze ulepszenia. Kolejne 2 bajty zaoszczędzone dzięki sugestii Arnaulda o odwróceniu logiki!
źródło
h*v&h+v-n
w JS, ponieważ&
jest operatorem bitowym; ale jest to logiczne w R, więc to działa).Python 2 , 96 bajtów
Wypróbuj online!
źródło
Python 2 , 81 bajtów
Wypróbuj online!
Python 2 , 75 bajtów
Wypróbuj online!
Jeśli mieszanie znaków wyjściowych jest OK.
źródło
PowerShell, 91 bajtów
źródło
PowerShell ,
10797 bajtówWypróbuj online!
Gdyby istniał tani sposób na odwrócenie pierwszej połowy, ta odpowiedź byłaby o wiele lepsza. Tworzy lewą połowę, a następnie rdzeń (czyli x
#'s
lub spacje), a następnie odzwierciedla logikę lewicy, aby zrobić prawą. Ciekawostka, że nie musisz kopiować po białych znakach.Rozwinięto i wyjaśniono:
źródło
C (brzęk) ,
-DP=printf(
-DF=for(i
+ 179 = 199180 bajtówWypróbuj online!
Nie golfowany:
-19 bajtów dzięki @ceilingcat
źródło
Python 2 , 130 bajtów
Wypróbuj online!
Na telefon komórkowy, więc nie niesamowicie golfowy.
źródło
(n+2*i)
.Partia, 260 bajtów
Wyprowadza dwie spacje wiodące w każdej linii. Objaśnienie: Partia nie ma operatora powtarzania łańcuchów, ma ograniczone możliwości krojenia ciągów i wymaga osobnych instrukcji do wykonania arytmetyki. Dlatego najbardziej golfowym było utworzenie ciągu długości wejściowej w spacjach (Batch może przynajmniej przełożyć je na
#
s dla linii górnej i dolnej), a następnie pokroić z lub do określonej pozycji w zakresie od 3 do długości, aby wygenerować przekątne (właśnie to osiąga ostatni wiersz skryptu).źródło
Rubinowy , 96 bajtów
Wypróbuj online!
Jeszcze nie bardzo golfa. Może golf, jeśli znajdę czas.
źródło
Czerwony , 171 bajtów
Wypróbuj online!
Wyjaśnienie:
źródło
APL (Dyalog Unicode) , 46 bajtów SBCS
To rozwiązanie zostało dostarczone przez Adám - dzięki!
Wypróbuj online!
Moje (prawie) oryginalne rozwiązanie:
APL (Dyalog Unicode) , 61 bajtów SBCS
Wypróbuj online!
Dzięki Adámowi za pomoc!
Chodzi o to, aby znaleźć „diament” leżący częściowo w kwadracie i zastosować filtr wykrywający krawędzie, aby „obrysować” ośmiokąt.
źródło
(' '@~5 6∊⍨1⊥⊢∘,)⌺3 3⊢<(⍉⌽⌊⊢)⍣2∘(∘.+⍨∘⍳¯2+3×⊢)
⌺
. Zamiast tego policz 1 bajt / znak, odnosząc się do SBCS zgodnie z Meta .Perl 5,
201197188187186 bajtów:Wypróbuj online!
Odczytuje rozmiar ośmiokąta z pierwszego wiersza
STDIN
.źródło
$"
zamiast" "
.Perl 5, 176 bajtów
Na podstawie powyższej odpowiedzi Nathana Millsa (do której nie mam wystarczającego przedstawiciela, aby skomentować!).
$e
można uprościć$a-1
zapisywanie 6 bajtów;$f
może być przypisany łańcuchowo; zapisywanie dwóch bajtów; Nie jestem pewien, skąd pochodzą dwie pozostałe!Chociaż
$e
można go zastąpić$a-1
w dwóch miejscach, w których występuje, dodatkowe potrzebne wsporniki oznaczają, że tylko się psuje.Nie golfowany:
źródło
Perl 6 ,
7673 bajtów-3 bajty dzięki Jo King
Wypróbuj online!
Zwraca listę wierszy.
źródło
C (gcc) ,
158153150 bajtówpięćosiem bajtów dzięki ceilingcat .Wypróbuj online!
źródło
Python 3 , 224 bajty
Wypróbuj online!
źródło
Perl 5,
170168166 bajtówDziała to dzięki magii wyrażeń regularnych. „If” jest potrzebne tylko do poradzenia sobie z patologicznym przypadkiem n = 2, który w przeciwnym razie generuje coś takiego:
prawdopodobnie można to zakodować.
Myślę, że może być o wiele więcej do zyskania, tworząc łańcuch do połowy punktu, a następnie odwracając go. Oczywiście musimy wstawić / usunąć dodatkową spację, jeśli n jest nieparzyste (lub użyć cienkiej spacji: p).
Nie golfił
Myślę, że to może być nieco bardziej golfa, z wyjątkiem znaczących zmian, takich jak forsowanie
$@
i drukowanie tego na końcu.[Golfowe przestrzenie wokół
..
i przeniesiony wydruk przed przypisaniem w dwóch przypadkach, oszczędzając na średnikach.]źródło
\s
a nie tylko miejsce w ostatnim wyrażeniu regularnymJ,
594541 bajtówWypróbuj online!
Dodam wyjaśnienie dziś wieczorem.
źródło
Perl 5, 98 bajtów
TIO
źródło