Wyzwanie
Biorąc pod uwagę rozmiar s, wydrukuj siatkę sześcianu o tym rozmiarze wykonaną z symboli skrótu ( #
) i spacji ( ).
Przykłady:
1:
#
# # #
#
#
2:
# #
# #
# # # # # #
# # # # # #
# #
# #
# #
# #
3:
# # #
# # #
# # #
# # # # # # # # #
# # # # # # # # #
# # # # # # # # #
# # #
# # #
# # #
# # #
# # #
# # #
Siatką może być właściwie każda poprawna siatka kostki, która może się złożyć w kostkę, na przykład:
# #
# #
# # # # # # # #
# # # # # # # #
# #
# #
# # # #
# # # #
# #
# #
# #
# #
# # # #
# # # #
Zasady
- Powstała siatka musi być poprawna geometrycznie (składana w kostkę)
- Standardowe luki zabronione
- Przeczytaj uważnie zasady
- To jest golf golfowy , najkrótsza odpowiedź wygrywa, ale nie zostanie wybrana
Odpowiedzi:
Python 2, 47 bajtów
Wypróbuj online!
Drukuje tę siatkę, wybraną do wyrównania do lewej:
Linie mają
n
lub4*n
kopie'# '
. Dla każdego z nich1,4,1
drukujemyn
razy tyle kopii, zrobionen
czasy dlan
linii. Posiadanieexec
pętli wewnątrzfor
pętli wydaje się marnotrawstwem, ale nie widziałem lepiej.Alternatywy, które testowałem:
(Wszystkie
def
funkcje mogą być o jeden krótsze jako program).źródło
Oktawa,
58444232 bajtyczęściowo zainspirowany pythonową odpowiedzią @xnor.
tworzy wzór squre z „#” dla danych wejściowych 2, następujący wzór:
cztery
z
są połączone w poziomie:z
iy
az
są łączone w pionieWypróbuj online!
Poprzednia odpowiedź:
Wypróbuj online!
Generuje kształt litery T.
źródło
Mathematica,
776052 bajtówPodziękowania dla Martina Endera za grę w golfa w odległości 8 bajtów!
Funkcja bez nazwy, przyjmująca dodatni argument liczby całkowitej
#
i zwracająca ciąg znaków z nowymi liniami (w tym końcowy nowy wiersz); każda linia ma również spację końcową. Najpierw definiujemy,±
że jest funkcją, która powtarza swoje#
czasy wejściowe ; następniea
jest zdefiniowany jako±"# "
(#
jest to znak, a nie dane wejściowe!), a od tegob
jest zdefiniowany zestaw#
krótkich linii, podczas gdy±{a,a,a,a}<>n
jest to zestaw#
długich linii. (W obu przypadkach istnieje dosłowne przesunięcie wiersza między pasującymi cytatami.) Końcowy<>b
konkatenuje wynikową listę ciągów z drugą kopią zestawu krótkich wierszy. Przykład danych wyjściowych, gdy#=2
( odpowiedź xnora nauczyła mnie, że ta orientacja jest bardziej golfowa):Poprzednia wersja tej implementacji:
Oryginalne zgłoszenie:
Buduje out ciąg
4*(3#+1)
elementów, z których każdy jest albo"# "
," "
lub"\n"
; po prostu oblicza, które elementy użyć na podstawie indeksun
. Przykładowe dane wyjściowe, gdy#=2
:źródło
JavaScript (ES6), 59 bajtów
Dane wyjściowe obejmują końcowe spacje na końcu każdej linii i końcowy nowy wiersz.
źródło
Rubinowy, 36 bajtów
Stosowanie:
Rubinowy, 38 bajtów
Ten kształt jest dłuższy w Ruby, ale spodziewam się, że niektóre języki są krótsze.
Stosowanie:
Obie odpowiedzi mogą być krótsze, jeśli dozwolone jest zwrócenie (najlepiej) tablicy ciągów lub (mniej korzystnie) pojedynczego ciągu zamiast drukowania.
źródło
Scala, 56 bajtów
źródło
JavaScript (ES6), 71
Test
źródło
Java 8, 99 bajtów
źródło
V ,
2423201820 bajtówPokazano wszystkie ukryte postacie
^[
is0x1b
(dosłowny znak ucieczki) i^V
is0x16
(C-v
)Wypróbuj online!
Musiałem zwiększyć liczbę bajtów, ponieważ
Ä
polecenie było błędne w tym nowym ciągnięciu V.Dane wyjściowe w tym formacie:
z wiodącą nową linią
Hexdump:
Wyjaśnienie
Teraz, gdy jedna strona sieci została ukończona, musimy ją utworzyć
Alternatywne rozwiązanie, jeśli nie wyprowadzamy spacji:
2120181618 bajtów(z tego samego powodu, co najlepsze rozwiązanie, ten link TIO został zmodyfikowany)
Wypróbuj online!
źródło
V , 14 bajtów (niekonkurencyjny)
Wypróbuj online!
Z jakiegokolwiek powodu wyzwanie to ujawniło wiele błędów. Teraz, gdy wszystkie zostały naprawione, ta wersja jest niestety niekonkurencyjna, ale fajnie jest zobaczyć, jak powinna wyglądać odpowiedź V na to wyzwanie, gdy nie musi dodawać ton bajtów, aby nadążyć za moim niechlujnym kodowaniem.
Wyjaśnienie:
źródło
J
mówiąc , problemem nie było niechlujne kodowanie AFAIK, myślę, że to był tylko domyślny nvim?Galaretka ,
2019 bajtówWypróbuj online!
-1 dzięki 44874 (steenbergh).
NIE MOGĘ WYCHŁAĆ POMOCY MUDDYFISH!
Czy to gra w golfa?
2019 bajtów wydaje się po prostu za dużo , widząc Link 1.Wyjaśnienie:
źródło
@
jednak zamiana argumentów dox
siebie:”#xẋ³Wẋ³K€Y
.Węgiel drzewny , 20 bajtów
Kod kończy się spacją. Wypróbuj online!
Wyjaśnienie
Węgiel drzewny to język specjalizujący się w sztuce ASCII. Jest również niekompletny, błędny i niedokumentowany. Wystarczy powiedzieć, że zajęło to sporo prób i błędów, zanim zrobiło to, co powinno.
Nλ
wprowadza liczbę doλ
.G
to polecenie wielokąta, którego użyjemy tutaj do narysowania prostokąta.↑λ←×⁶λ↓λ
określa granicę wielokąta:λ
kroki w górę, kroki w lewo 6 razyλ
iλ
kroki w dół . (To trzyλ
przezλ
bloki side-by-side). Dolna krawędź prostokąta jest sugerowane. Wielokąt jest następnie wypełniany łańcuchem#
.D
zrzuca bieżące płótno na standardowe wyjście, czego wynikiem jest coś takiego:G
poleceniu kursor znajduje się w lewym dolnym rogu obszaru roboczego.M×⁴λ←
Porusza się w lewo przez 4 razyλ
etapów (odpowiadającymi dwómλ
przezλ
bloki).Złóż je razem, a otrzymasz sześcianową siatkę.
źródło
Narzędzia Bash / Unix,
72696866 bajtówWypróbuj online!
Działa to na podstawie faktu, że [4 ^ k / 3], gdy jest zapisany w bazie 2, to 10101010 ... 01, z k 1. (Nawiasy kwadratowe tutaj oznaczają funkcję podłogi.)
źródło
Pyke, 16 bajtów
Wypróbuj tutaj!
Równoważny
Ze względu na niedrukowalne
Wykorzystuje kilka sztuczek, aby obniżyć liczbę bajtów:
[1, 4, 1]
XF
automatycznie zrzuca dane wyjściowe na stos"#
na końcu zostaje zamieniony na ostatni*
, co oznacza, że zamknięcie"
nie jest wymagane. Dzieje się to domyślnie, gdy ostatni token jest łańcuchem.źródło
Python 2 ,
687165 bajtów-6 dzięki dzięki @sagiksp
Wypróbuj online!
W przypadku braku sposobu na pokonanie @xnor opublikuję moją funkcję rekurencyjną po prostu jako alternatywne podejście. Dla wydruków f (5)
Ten wzór został wybrany po prostu dlatego, że można go podzielić na dwie części, w przeciwieństwie do wszystkich innych.
źródło
PHP,
6462 bajtówZaoszczędzono 2 bajty dzięki Christophowi .
Drukuje sieć w następujący sposób:
(z wiodącą nową linią)
źródło
while($a="282"[$i++/$s=$argv[1]]*$s)echo str_pad("\n",$a,"# ");
oszczędza 2 bajty.Partia, 111 bajtów
źródło
Pushy ,
322928 bajtówDrukuje siatkę sześcianu wyrównaną do lewej. Trudno było grać w golfa ...
Wypróbuj online!
źródło
Retina ,
3937 bajtówPo raz pierwszy używam Retiny, wciąż próbuję zrozumieć, jak to robić.
(z dwoma końcowymi spacjami po 4 i 5 linii)
Dzięki Martin Ender za grę w golfa 2 bajty!
Wypróbuj online!
źródło
$_
na dole, zmieniając niektóre rzeczy po usunięciu pustej linii. tio.run/nexus/… to ta sama liczba bajtów, ale trochę brzydsza.QBIC ,
526740 bajtówZakończ przepisywanie:
Teraz używa tego wzorca:
Gdzie
-
są wypełnione spacjami.źródło
Pip ,
281716 bajtów15 bajtów kodu, +1 dla
-n
flagi.Przyjmuje rozmiar jako argument wiersza polecenia. Wypróbuj online!
Wyjaśnienie
Poniżej nie jest dokładnie, w jaki sposób dane są modyfikowane, ale daje podstawowy pomysł (na
a=2
):źródło
05AB1E , 13 bajtów
Wypróbuj online!
Wyjaśnienie
Przykładowe dane wejściowe
n=2
źródło
C #, 152 bajty
źródło
SmileBASIC,
5750 bajtówWyjaśnił:
Po pierwszym WYDRUKIE (rozmiar = 2, @ to pozycja kursora):
Po przewinięciu:
Po drugim DRUKOWANIU:
źródło
Common Lisp,
838179 bajtówStosowanie:
(funcall #'(lambda(x)(format t"~v@{~v@{# ~}~:*~%~}~v@{~vt~0@*~v{# ~}~%~}"x(* x 3)(* x 2)))2)
Wydajność:
Jak to działa?
Pomysły na ulepszenia są mile widziane.
źródło