Spróbuj zrobić sześcian!


16

Na tej podstawie: Zrób ze mnie kwadrat!

Musisz wygenerować to:

  ####
 # # #
###  #
# # #
####

Gdzie „#” zastępuje się wejściem.

Jeśli wpiszesz „A”, powinieneś dostać

  AAAA
 A A A
AAA  A
A A A
AAAA

Jeśli wpiszesz „&”, powinieneś dostać

  &&&&
 & & &
&&&  &
& & &
&&&&

Tabela liderów

Oto fragment kodu, który pozwala wygenerować zarówno zwykłą tabelę wyników, jak i przegląd zwycięzców według języka.


5
Cóż, jest to nieco podobne, chociaż tym razem nie jest to 3-bajtowa odpowiedź na węgiel drzewny ...
— Neil

1
Czy dwie ostatnie linie mogą mieć spacje wiodące i czy wynik może mieć wiodące znaki nowej linii?
— dzaima

3
B³S‖O↗może równie dobrze być blisko odpowiedzi 10 bajtów węglem chociaż ... ja po prostu nie zna języka na tyle dobrze, aby to zrobić, to naprawdę musi być strony tak , ale na węglu drzewnym.
— Magic Octopus Urn

5
@Alex Sandbox
— xnor

6
Nie rozumiem, jak to jest duplikat kwadratowego
— Luis Mendo

Odpowiedzi:


19

Marchewka , 31 bajtów

  ####
 # # #
###  #
# # #
####

#s są zastępowane przez dane wejściowe.

Zasadniczo część tej odpowiedzi na ten problem.


40
wygląda na to, że gra w golfa zajęła kilka godzin ...
— Cyoce

@KritixiLithos 200 rep, ponieważ stworzyłeś fajny język, to nie wydaje się sprawiedliwe xD
— Stephen

13

05AB1E , 16 15 bajtów

ð‚•nxвΛ•2вèJ6ô»

Wypróbuj online!

Wyjaśnienie

ð‚                # push the list [<input>,<space>]
  •nxвΛ•          # push the number 816342339
        2в        # convert to list of base 2 digits
          è       # index into the the 2-char string with this list
           J      # join to string
            6ô    # split into pieces of length 6
              »   # join on newlines

1
Czy możesz zakodować nowy wiersz na liście / numerze, aby zapisać 3 ostatnie bajty?
— Rod

@Rod To byłaby znacznie większa liczba, co najmniej 6 bajtów plus dodatkowy bajt lub dwa, aby uwzględnić nowy wiersz na liście ...
— ETHproductions

@Rod: Można zrobić coś jak ten . Niestety okazuje się to nieco dłużej. Dobry pomysł.
— Emigna

1
•nxвΛ•bTRð¹ì‡6ô»... twój bije nieco transliterację, tylko ze względu na wymagania dotyczące zamawiania; gdybym mógł wymyślić sposób na niejawne przyjęcie danych wejściowych i wygenerowanie ciągu 01w 1-bajcie, byłoby to rozwiązanie 13/14 bajtów.
— Magic Octopus Urn

1
@carusocomputing •nxвΛ•bT𹫇6ô»lub ð«T•nxвΛ•br‡6ô»ma taką samą długość.
— Emigna

10

Cubix , 62 bajty

./v<.o;.@?/;w.w;i:::::NrSs::SrSuUS::sN::rS:r:srNr:SrSsNs:::SSv

Wypróbuj online! i patrz na tłumacza!

To pasuje do 4-kostki:

        . / v <
        . o ; .
        @ ? / ;
        . . w ;
i : : : : : N r S s : : S r S u
U S : : s N : : r S : r : s r N
r : S r S s N s : : : S S v . .
. . . . . . . . . . . . . . . .
        . . . .
        . . . .
        . . . .
        . . . .

Nie jestem zbyt dobry w manipulowaniu kierunkiem wskaźnika instrukcji, więc będę nadal próbował grać w golfa. Zarówno to, jak i moja odpowiedź tutaj oparte są na „Cześć, świecie!” przykładowy program używający ./v.o;@?/(na 3-sześcianie) do rekurencyjnego drukowania i wstawiania znaków na stosie, więc reszta kodu po prostu wypycha znaki na stos we właściwej kolejności.

Zrobiłem teraz kostkę na kostce, więc mogę spokojnie odpoczywać (i wykonywać swoją pracę).



9

MATL , 13 10 bajtów

Podziękowania dla Conora O'Briena za usunięcie 3 bajtów i za pokazanie mi, że w Octave można użyć niedrukowalnych materiałów.

Kod zawiera znaki niedrukowalne. Wypróbuj online!

Wyjaśnienie

'....'   % Push 5-char string (contains unprintables). Each char encodes a row
         % of the desired pattern
B        % Convert to binary. Gives a 5×6 binary matrix with the pattern
*        % Implicit input. Multiply element-wise (converts input to ASCII code)
c        % Convert to char. Implicitly display. Char 0 is shown as space

Możesz zrobić te 10 bajtów, jeśli nie masz nic przeciwko drukowaniu. Wypróbuj online!
— Conor O'Brien

@ ConorO'Brien Hej, dzięki! Nie byłem pewien, czy Octave był w porządku z tymi ... jak je w ogóle napisałeś?
— Luis Mendo

Cóż, szczerze mówiąc, wziąłem liczby, zamieniłem je na hex, a potem zrobiłem echo 0f15392a3c|xxd -r -p|clip. W clipsystemie Windows jest schowek. Następnie wkleiłem je: P (jeśli korzystasz z linii poleceń, to ^O^Uteż)
— Conor O'Brien

@ ConorO'Brien To jest ponad moją głową. Powinieneś naprawdę opublikować to jako swoją odpowiedź
— Luis Mendo

Używa tej samej taktyki, jak twoja, po prostu eliminując potrzebę modulo 64, używając bezpośrednio wartości.
— Conor O'Brien


6

Japt , 20 bajtów

"OUyj|"®c ¤Åd0S1U +R

Przetestuj online!

Nieźle jak na język bez wbudowanej kompresji (cóż, z wyjątkiem kompresji ciągów małych liter) ...

Wyjaśnienie

Binarnie pięć znaków w ciągu to:

O 1001111
U 1010101
y 1111001
j 1101010
| 1111100

Odetnij inicjał 1z każdego, a otrzymasz wzór dla kostki.

"OUyj|"®   c ¤  Å  d0S1U +R
"OUyj|"mZ{Zc s2 s1 d0S1U +R}  // Expanded
                              // Implicit: U = input string
"OUyj|"mZ{                 }  // Replace each character Z in this string with this function:
          Zc                  //   Take the char-code of Z.
             s2               //   Convert to a binary string.
                s1            //   Slice off the first character (always a "1").
                   d0S1U      //   Replace "0"s with spaces and "1"s with the input.
                         +R   //   Append a newline.
                              // Implicit: output result of last expression

Próbowałem podejścia opartego na szablonie ( llmożna go skompresować), ale jest on o 11 bajtów dłuższy.
— Łukasz

Ładny. Miałem do 23 bajtów, zanim zdałem sobie sprawę, że zrobiłem z tego kule!
— Kudłaty

6

LOLKOD, 202 170 bajtów

I HAS A c
GIMMEH c
VISIBLE"  "AN c AN c AN c AN c AN":) "AN c AN" "AN c AN" "AN c AN":)"AN c AN c AN c AN"  "AN c AN":)"AN c AN" "AN c AN" "AN c AN":)"AN c AN c AN c AN c

W LOLCODE niewiele do golfa ...

To ustawia zmienną cna wejściu i tworzy gigantyczny połączony ciąg zawierający :)nowe linie. O to chodzi.


expected HAI at: I tio.run/nexus/…
— eush77

Ponadto VISIBLEniejawnie łączy się, dzięki czemu można usunąć SMOOSH tio.run/nexus/lolcode#@@/…
— eush77

Po pierwsze, są tacy tłumacze, którzy nie wymagają HAI ani KTHXBYE, np. REPL.it. Do drugiej rzeczy, dziękuję!
— OldBunny2800

5

Sed, 40 znaków

s/./  &&&&\
 & & &\
&&&  &\
& & &\
&&&&/

Prawie oszustwo, ponieważ opis wyzwania zawierał go prawie dosłownie.

Przykładowy przebieg:

bash-4.4$ sed 's/./  &&&&\
 & & &\
&&&  &\
& & &\
&&&&/' <<< 'C'
  CCCC
 C C C
CCC  C
C C C
CCCC

Wypróbuj online!



5

Zespół Z80, kod maszynowy 37 bajtów

Załóżmy, że urządzenie we / wy zamapowane w pamięci:

; NIE NALEŻY WPROWADZAĆ PRZESTRZENI, ponieważ spowoduje to przejście do nieskończonej przestrzeni drukowania i nowej linii!

3A xx xx ld a, (wejście); uzyskać znak wejściowy
11 0A 20 ld de, 200ah; spacja i nowa linia
21 rrrr ld hl, wyjście; uzyskać adres wyjściowy
4F ld c, a; umieść znak w c
pętla:
72 ld (hl), d; przestrzeń wyjściowa * 2 | znak wyjściowy * 2
72 ld (hl), d
77 ld (hl), a; znak wyjściowy | znak wyjściowy
71 ld (hl), c; znak wyjściowy * 2 | przestrzeń wyjściowa * 2
71 ld (hl), c
77 ld (hl), a; znak wyjściowy | znak wyjściowy
73 ld (hl), e; wyjście nowej linii | wyjście nowej linii
72 ld (hl), d; przestrzeń wyjściowa | znak wyjściowy
71 ld (hl), c; znak wyjściowy | przestrzeń wyjściowa
72 ld (hl), d; przestrzeń wyjściowa | znak wyjściowy
71 ld (hl), c; znak wyjściowy | przestrzeń wyjściowa
72 ld (hl), d; przestrzeń wyjściowa | znak wyjściowy
B9 cp c; ustaw flagę zero 1. raz | wyczyść 2. raz
20 06 jr nz, koniec; przejdź do końca
77 ld (hl), a; znak wyjściowy
73 ld (hl), e; wyjście nowej linii
4A ld c, d; wstaw miejsce w c
57 ld d, a; umieść znak w d
28 FB jr z, pętla; zapętlić do 2. czasu
koniec:
73 ld (hl), e; wyjście nowej linii
77 ld (hl), a; znak wyjściowy * 4
77 ld (hl), a
77 ld (hl), a
77 ld (hl), a
76 zatrzymania; lub C9 ret

4

V , 27 bajtów

4äl2>>Äyvho3pÄÙ3älWx<<3Îd^

Wypróbuj online!

Hexdump:

00000000: 34e4 6c32 3e3e c479 7668 6f1b 3370 c4d9  4.l2>>.yvho.3p..
00000010: 33e4 6c57 783c 3c33 ce64 5e              3.lWx<<3.d^

Jestem prawie pewien, że możesz zastąpić o<esc>tylkoï
— Kritixi Lithos

4

PHP, 72 bajty

Zrobiłem to tylko dla zabawy, ponieważ jest już lepsza odpowiedź na PHP.

for($i=0;$i<27;)echo('00'.decbin(64349871))[$i]?$argn:' ',++$i%6?'':'
';

Sześcian jest rysowany przez uzyskanie wartości binarnej 64349871, połączonej przez '00'.
Zwraca to:

0011110101011110011010101111

Co 6 znak wypisuję nowy wiersz, co powoduje:

001111
010101
111001
101010
1111

I zamiast wyświetlać 0wyświetla spację, która będzie wyglądać następująco:

  1111
 1 1 1
111  1
1 1 1 
1111

4

Węgiel drzewny , 17 16 bajtów

SβGH7+↗→³β→G↓↙³β

Wypróbuj online! Link jest do pełnej wersji kodu. Dłuższy, niż chciałem, bo „sześcian” jest nieco szerszy niż wysoki lub głęboki. Na szczęście niektóre wielokierunkowe postacie działają z PolygonHollow, co oszczędza mi 3 bajty. Edycja: Zapisano kolejny bajt, używając + zamiast T ↑. Wyjaśnienie:

Sβ          Input the character
GH7+↗→³β    Draw the left half. 7 becomes ←↙ and + becomes →↓←↑.
→           Move right one character.
G↓↙³β       Draw the right half.

W momencie wyzwania qzmienna nie działała w trybie pełnym, w przeciwnym razie mógłbym utworzyć tę 14-bajtową wersję:

GH7+↗→³θ→G↓↙³θ

Wypróbuj online!


3

Ułożone , 31 bajtów

' '\+$'9*<'#.2 tb[6 dpad]map#

Wypróbuj online!

Oto zrzut heksowy:

λ xxd try-to-make-a-cube.stk
00000000: 2720 275c 2b24 270f 1539 2a3c 2723 2e32  ' '\+$'..9*<'#.2
00000010: 2074 625b 3620 6470 6164 5d6d 6170 23     tb[6 dpad]map#

Konwertuje tablicę znaków na binarną, dopełnia każdy wiersz do długości 6i indeksuje go zgodnie z łańcuchem' ' input +



2

JS (ES6), 64 60 52 bajtów

i=>`  ####
 # # #
###  #
# # #
####`.replace(/#/g,i)

Czy można to poprawić:

i=>`  ${y=i+i+i+i}
 # # #
###  #
# # #
${y}`.replace(/#/g,i)

1
y=i+i+i+ijest krótszy niży=i.repeat(4)
— Stephen

2
... i ####jest jeszcze krótszy.
— Arnauld

1
W rzeczywistości wszystko jest krótsze bez szablonów: Fiddle
— Stephen

1

C (gcc) , 90 84 bajtów

i;v;f(g){for(i=32;i--;)putchar((v="####*@#@#@#*#@@###*#@#@#@*####@@"[i])&1?g:v-32);}

Wypróbuj online! Definiuje funkcję, fktóra przyjmuje postać g. Szkoda, że ​​bezpośrednie kodowanie tabeli jest krótsze ...

Stara wersja, 90 bajtów

(Wciąż próbuję zagrać w golfa)

Próbuję mieć tylko jednego putchar, ale idka. Są niedrukowalne, więc oto zrzut heksowy:

λ xxd try-to-make-a-cube.c
00000000: 693b 6a3b 6628 6729 7b63 6861 722a 6b3d  i;j;f(g){char*k=
00000010: 220f 1539 2a3c 223b 666f 7228 693d 303b  "..9*<";for(i=0;
00000020: 693c 353b 7075 7463 6861 7228 3130 292c  i<5;putchar(10),
00000030: 692b 2b29 666f 7228 6a3d 3332 3b6a 3b6a  i++)for(j=32;j;j
00000040: 2f3d 3229 7075 7463 6861 7228 6b5b 695d  /=2)putchar(k[i]
00000050: 266a 3f67 3a33 3229 3b7d                 &j?g:32);}

To koduje kostkę w binarnej tabeli odnośników, gdzie 1bit reprezentuje dane wejściowe, a 0bit reprezentuje spację. Wypróbuj online!


Może ogolić kilka bajtów na 81 bajtów .
— gastropner

Niewydrukowalne można wycisnąć do 73 bajtów .
— gastropner

1

Brain-Flak , 217 bajtów

(((((((((((((((((({}))))<([][]()())>)<(([][])[]{}())>)<(([][]){})>)<([])>)<(((()
())[][]{}()()))>)))<((()()()()()){})>)<(((()()()){}){}()[])>)<(((()()())()){}{}[
])>)<(((()()())){}{}[])((()()()()()){})>))))(([]()()()))

Wypróbuj online!

Waaaaay za długo.


1

Swift - 82 bajty + podstawa (18 bajtów)?

var f={"  ####\n # # #\n###  #\n# # #\n####".replacingOccurrences(of:"#",with:$0)}

Domyślnie projekty Xcode-Swift mają Whole-Module Optimization, więc import Foundationnie jest to wymagane dla tej prostej funkcji podobnej do lambda. Jednak uruchomienie go w środowiskach online wymaga tego, co może dodać 18 bajtów.

Sprawdź to!



0

CJam, 23 bajty

"pjFUC"{i2b(;}%rS+ff=N*

Czuję, że wciąż mogę grać w golfa.

"pjFUC" e# String literal:          │ "pjFUC"
{       e# For each:                │ 'p
  i     e#   Get code point:        │ 112
  2b    e#   To binary:             │ [1 1 1 0 0 0 0]
  (;    e#   Delete first:          │ [1 1 0 0 0 0]
}%      e# End                      │ [[1 1 0 0 0 0] [1 0 1 0 1 0] [0 0 0 1 1 0] [0 1 0 1 0 1] [0 0 0 0 1 1]]
r       e# Read token:              │ [[1 1 0 0 0 0] [1 0 1 0 1 0] [0 0 0 1 1 0] [0 1 0 1 0 1] [0 0 0 0 1 1]] "&"
S       e# Push space:              │ [[1 1 0 0 0 0] [1 0 1 0 1 0] [0 0 0 1 1 0] [0 1 0 1 0 1] [0 0 0 0 1 1]] "&" " "
+       e# Concatenate:             │ [[1 1 0 0 0 0] [1 0 1 0 1 0] [0 0 0 1 1 0] [0 1 0 1 0 1] [0 0 0 0 1 1]] "& "
ff=     e# Vectorized array lookup: │ ["  &&&&" " & & &" "&&&  &" "& & & " "&&&&  "]
N*      e# Join with newlines       │ "  &&&&
        e#                          │   & & &
        e#                          │  &&&  &
        e#                          │  & & & 
        e#                          │  &&&&  "
e# Implicit output

0

dc , 70 bajtów

Koduje sekwencję raczej bezpośrednio, z niewielką optymalizacją:

8224PdPdPdPdP10Pd8192+ddPPP10PdPdPdP8224PdP10Pd256*32+ddPPP10PdPdPdPdP

Wypróbuj online!


W skrajności (niezbyt golfowej), 145 bajtów:

27065671941896667324298575455432398417474802390765222440949482848513*56759961956005660143530475805610581704254588701249011343446231795984498688+P

Wypróbuj online!

To oblicza A*x+B, gdzie Akoduje pozycje znaku wejściowego i Bkoduje całą resztę:

A = 256 0 + 256 1 + 256 2 + 256 3 + 256 5 + 256 7 + 256 9 + 256 11 + 256 14 + 256 15 + 256 16 + 256 18 + 256 20 + 256 22 + 256 25 + 256 26 + 256 27 + 256 28

B = 10 × 256 4 + 32 × 256 6 + 32 × 256 8 + 10 × 256 10 + 32 × 256 12 + 32 × 256 13 + 10 × 256 17 + 32 × 256 19 + 32 × 256 21 + 32 × 256 23 + 10 × 256 24 + 32 × 256 29 + 32 × 256 30

P polecenie wypisuje wynikową liczbę jako strumień bajtów.



0

Pakiet Windows, 79 bajtów

@echo   %1%1%1%1
@echo  %1 %1 %1
@echo %1%1%1  %1
@echo %1 %1 %1
@echo %1%1%1%1

Specjalny znak bezpieczny, 97 bajtów:

@echo   ^%1^%1^%1^%1
@echo  ^%1 ^%1 ^%1
@echo ^%1^%1^%1  ^%1
@echo ^%1 ^%1 ^%1
@echo ^%1^%1^%1^%1

Czy możesz użyć feedów liniowych tj... %1%1%1%1\n %1 %1 %1...
— TheLethalCoder

Kanały nie są obsługiwane wsadowo
— stevefestl

Nie mogłem sobie przypomnieć, czy byli i nie byli w stanie przetestować :)
— TheLethalCoder

Przepraszam, jestem zdezorientowany, czy możesz powtórzyć?
— stevefestl

Nie mogłem sobie przypomnieć, czy możesz ich użyć, czy nie, i nie mogłem przetestować w momencie, kiedy komentowałem, więc zostawiłem komentarz, abyś nadal miał pomysł
— TheLethalCoder

0

Tcl, 60 bajtów

proc c x {regsub . $x "  &&&&\n & & &\n&&&  &\n& & &\n&&&&"}
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.