Octothorpe, (zwany także liczba znak, hash lub hashtag lub znak funta) jest następujący znaków ASCII:
#
Czy to nie zabawny kształt? Zróbmy większe wersje! Oto twoje wyzwanie:
Biorąc dodatnia N , wydać hashtag ASCII rozmiarze N .
Na przykład hashtag ASCII o rozmiarze 1 wygląda następująco:
# #
#####
# #
#####
# #
Końcowe białe znaki w każdej linii są dozwolone, ale nie są wymagane.
Dane wejściowe zawsze będą prawidłową liczbą całkowitą dodatnią, więc nie musisz obsługiwać liczb innych niż, ujemnych lub 0. Dane wyjściowe mogą być w dowolnym rozsądnym formacie, więc wyjście do STDOUT, zwrócenie listy ciągów lub ciągu z znaki nowej linii, matryca 2D znaków, zapis do pliku itp. są w porządku.
Przypadki testowe
2:
## ##
## ##
##########
##########
## ##
## ##
##########
##########
## ##
## ##
3:
### ###
### ###
### ###
###############
###############
###############
### ###
### ###
### ###
###############
###############
###############
### ###
### ###
### ###
4:
#### ####
#### ####
#### ####
#### ####
####################
####################
####################
####################
#### ####
#### ####
#### ####
#### ####
####################
####################
####################
####################
#### ####
#### ####
#### ####
#### ####
5:
##### #####
##### #####
##### #####
##### #####
##### #####
#########################
#########################
#########################
#########################
#########################
##### #####
##### #####
##### #####
##### #####
##### #####
#########################
#########################
#########################
#########################
#########################
##### #####
##### #####
##### #####
##### #####
##### #####
Ponieważ jest to gra w golfa kodowego, spróbuj napisać możliwie najkrótsze rozwiązanie, a przede wszystkim dobrze się bawić!
Odpowiedzi:
MATL ,
20161211 bajtów3 bajty dzięki DJMcMayhem.
1 bajt dzięki Luisowi Mendo.
Wypróbuj online!
Wyjaśnienie
źródło
Zc
zamiast35*c
i~
(logiczne NIE) zamiast0=
Q
zamiast2<
!t*
na&*
. To ostatnie oznacza „mnożenie jednym wejściem”, które zwielokrotnia (pod względem elementu) wkład przez jego transpozycjęBrain-Flak , 420 bajtów
Wypróbuj online!
Nie, wynik 420 nie był celowy. Obiecuję. Wersja do odczytu:
źródło
Kod maszynowy 6502 (C64),
5956 bajtówDemo online
Zastosowanie:
SYS49152,N
gdzie N jest liczbą od 1 do 255.(wartości większe niż 4 będą już za duże dla ekranu C64, począwszy od 8, wyjście jest nawet zbyt szerokie)
Objaśnienie :
źródło
Haskell , 43 bajty
Wypróbuj online!
Wyświetla listę ciągów znaków.
źródło
Python 2 , 55 bajtów
Wypróbuj online!
Zwraca listę znaków 2D.
Python 2 , 65 bajtów
Wypróbuj online!
Python 2 , 66 bajtów
Wypróbuj online!
źródło
f(i);
przechowywaniu wyniku w temp iprint
dostępie do niego.f(i)
drukuje iwprint
Python 2 dodaje nowy wiersz: PWęgiel drzewny , 21 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. Początkowo próbowałem uroczego podejścia do bitmapy:
Wypróbuj online! Link jest do pełnej wersji kodu. Objaśnienie: Działa, biorąc pod uwagę
#
tablicę 5 x 5 kwadratów. Kwadraty w nieparzystych rzędach lub kolumnach należy wypełnić.źródło
J, 22 bajty
Wypróbuj online!
Dużo podobieństwa do drugiej odpowiedzi J, chociaż nie rozumiem dobrze pociągów z wieloma rzeczownikami, więc moja odpowiedź ma trzy potencjalne bajty do odcięcia (dwa pareny i zwrotny-
~
).Wyjaśnienie
Generowanie oktotorpe
Oktotorpe składa się z wszystkiego w nawiasach, które zostały przedstawione poniżej dla wygody.
Wiele sposobów, w jakie robię oktotorpe, polega na nadużywaniu sposobu, w jaki J wstawia tablice, gdy nie są wystarczająco długie.
21,0
po prostu tworzy tablicę21 0
.5$
przekształca tę tablicę w tablicę 5-atomową:21 0 21 0 21
.#:
konwertuje każdy atom na liczbę binarną. Ponieważ#:
działa na każdy atom, wyjście jest macierzą. Każdy21
jest zastąpiony przez1 0 1 0 1
zgodnie z oczekiwaniami, ale każdy0
jest zastąpiony przez0 0 0 0 0
! Wynika to z tego, że J wstawia tablice niewystarczająco długie, aby pasowały do kształtu wynikowej tablicy 2D, która musi być z5 5
powodu1 0 1 0 1
wierszy. Na szczęście dla liczb, do których się wpisuje0
, otrzymujemy macierz wynikową'# '{~
konwertuje każdy1
na spację i0
na#
.{
oznacza „bierz” i~
oznacza „przełączaj argumenty dyadne, więc J patrzy na każdy element w macierzy jako wskaźniki dla ciągu,'# '
co oznacza, że każdy0
staje się elementem zerowym#
i każdy1
staje się pierwszym elementem, spacją.Zmiana rozmiaru oktora
Jest to po prostu kwestia kopiowania
n
czasów wzdłuż każdej osi, wykonywanych za pomocąpierwszy
#
(który jest częścią haka) i#~"1]
.#
kopiuje wzdłuż osi poziomej i#"1
kopiuje wzdłuż osi pionowej.źródło
##"1&('# '{~#:5$21,0)
zapisuje bajt.CJam,
272625 bajtówWypróbuj online!
Ciekawostka: Początkowo zaczynało się od 29 bajtów i od tego czasu bajty były usuwane jeden po drugim, na przemian między trybem blokowym a pełnym programem.
Wyjaśnienie:
źródło
Łuska ,
1210 bajtówWypróbuj online! Zwróć uwagę na spację końcową.
Wyjaśnienie
źródło
jot ,
2319 bajtówZaoszczędź 4 bajty dzięki @LeakyNun.
Wypróbuj online!
Wyjaśnienie
źródło
[:|:f
może być0|:f
' # '{~]#"1]#+./~@i:@2
zapisuje bajtf=:' #'{~1=]+./~@#i:@2
Galaretka ,
141311 bajtówZaoszczędź 2 bajty dzięki @JonathanAllen
Monadyczny link zwracający listę linii. Zwróć uwagę na spację końcową.
Wypróbuj online!
Jak to działa
źródło
µ
(lub tego,⁸
co można było zamiast tego) ...5ẋ€Ẏ&þ`ị⁾ #
5Ḷẋ€
wymagaµ
, ale nie5ẋ€
?Ẏ
działać,n
a następnie przekazać go na prawo odẋ€
, ponieważ w przypadku monadycznego wywoływania łańcucha wiodącego nilad-diada nie jest to konieczne. Nie jestem jednak do końca pewien, jak`
wydaje się umieszczać 5 (a może listę tej długości) po prawej stronie tabeli&
.Game Maker Language,
138108 bajtówPrzeznaczony jako skrypt (nazwa Game Game'a dla funkcji zdefiniowanych przez użytkownika), a zatem
n=argument0
ireturn s
. 20 bajtów można ogolić, pobierającn
bezpośrednio z bieżącej instancji i wykorzystującs
jako wynik. (Instancja i tak pobiera te zmienne, ponieważ nie zostały zadeklarowane za pomocąvar
).Uważaj oczywiście, że elementy
#
graficzne Game Makera są używane jako alternatywny znak nowej linii, więc możesz chcieć poprzedzić go\
jeśli chcesz wyświetlać na ekranie;)Zauważ też, że tutaj używam wersji GML Game Maker 8.0; nowoczesne wersje GML mogą mieć funkcje, które mogłyby zaoszczędzić dodatkowe bajty.
Kilka pomysłów dzięki uprzejmości znajomych Wareya i Chordbug.
źródło
Perl 5 , 49 + 1 (-p) = 50 bajtów
Wypróbuj online!
W jaki sposób?
Niejawnie przechowuj dane wejściowe w $ _ za pomocą
-p
flagi. Zacznij od najbardziej podstawowej możliwej górnej linii" # # "
z końcową nową linią. Skopiuj każdy z tych znaków według numeru wejściowego. Następnie powtórz to przez liczbę wejściową, aby utworzyć górną część oktotypu, przechowując wszystko z powrotem w $ . Następnie dodaj wiersz ze wszystkimi znakami zastąpionymi przez „#” razy liczba wejściowa. Następnie dołącz górną część. Wykonaj dwa ostatnie zdania dwa razy. Wyjście $ jest niejawne w-p
flagi.źródło
05AB1E ,
252221 bajtówWypróbuj online!
-1, ponieważ Emigna nienawidzi transliteracji i, na szczęście, przypomina mi też, że powinnam: P.
Musi być lepszy sposób niż bitmapowanie ... Nadal działa.
źródło
5ôεS„# èJ¹F=
zapisuje bajt.JavaScript (ES6), 79 bajtów
Port podejścia do bitmapy, którego użyłem podczas mojej oryginalnej próby z węglem drzewnym.
źródło
Python 2 ,
124,116,113,112,98,9666 bajtówNowość (Źródło: HyperNeutrino):
Stary:
Wypróbuj online!
Oczywiście nie jest to najkrótsze rozwiązanie, ale myślę, że jest przyzwoite. Wszelkie uwagi będą mile widziane!
źródło
a,b,c=input()," #"
powinien zapisać niektóre bajty.a,b,c=input(),"#"," "
? Co nie jest krótsze ... Doceniam pomoc!a,b="# "
działa, ponieważ działa.a=input();b,c="# "
będzie działać i zapisywać bajty(i==2)
i dodać spację na początku.Brain-Flak ,
338332 bajtów6 bajtów dzięki Riley.
Wypróbuj online!
Bardziej „czytelna” wersja
Wypróbuj online!
źródło
(({})<>)(())<>({}<>)
na początku można zastąpić(({}<>)<(())>)
SOGL (SOGLOnline commit 2940dbe) , 15 bajtów
Aby to uruchomić, pobierz to i uruchom kod z
index.html
pliku.Używa, że przy tym zatwierdzeniu (i przed nim)
*
powtarzano każdy znak, a nie cały ciąg.Wyjaśnienie:
Bonus: dodaj 2 dane wejściowe dla osobnej długości X i Y!
źródło
ø─Ζ┘Χ⁴‘
pushes that though?#
and the base-2 data required for that string.brainfuck, 224 bytes
Try it online!
Making-of
I tried to build this code by hand and spent quite a few hours, so I decided to make a transpiler in Python.
Here is the code I entered to make this code:
Try it online!
źródło
C (gcc),
9893 bytes5 bytes thanks to Felix Palmen.
Try it online!
źródło
Gaia, 9 bytes
Pretty much a port of Zgarb's great answer
Try it online! (the footer is just to pretty print, the program itself returns a 2D list of characters)
Explanation
źródło
Befunge,
105103 bytesTry it online!
źródło
Python,
888477 bytesTry it online!
Returns 2D list of characters.
źródło
PowerShell,
72686360 bytesTry it online!
Takes input
$a
. Then, we do a bunch ofmagicstring and array manipulation.You can peel off the parts of the explanation starting from the bottom to see how the output is constructed, so hopefully my explanation makes sense.
źródło
Haskell, 72 bytes
Returns a list of strings. Try it online!
How it works:
źródło
Mathematica, 63 bytes
Explanation
(1)
-##
parses intoTimes[-1, ##]
źródło
ArrayFlatten
is very nice.Python 2, 113 bytes
As an array of strings:
As ASCII art:
Python 3, 115 bytes
Python 3, 117 bytes
As an array of booleansPython 2, 75 bytes
źródło
Java 8, 103 bytes
Lambda accepts
Integer
and prints the octothorpe to standard out. Cast toConsumer<Integer>
.Try It Online
Ungolfed lambda
The key observation here is that, on a 5 by 5 grid of n by n cells, octothorpes appear wherever the row or column number (0-based) is odd. I'm pretty sure this is the cheapest general approach, but it seems further golfable.
Acknowledgments
źródło
int s=5*n,x=0,y
instead the for-loop to save a byte on the semicolon.Pyth,
2822 bytes-6 bytes thanks to @LeakyNun
Test Suite.
źródło
R,
878562 bytes2 bytes saved by representing c(F,T) as !1:0, thanks to LeakyNun
23 bytes saved thanks to Giuseppe
Try it online!
Explanation (ungolfed):
źródło