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.

za'_'
źródło
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.

Stephen
źródło
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
Emigna
źródło
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ę).

Giuseppe
źródło
9

SOGL , 13 10 bajtów

Βū&⁵'r⁹‘6n

Wyjaśnienie:

Βū&⁵'r⁹‘    push "  ŗŗŗŗ ŗ ŗ ŗŗŗŗ  ŗŗ ŗ ŗ ŗŗŗŗ", where "ŗ" is replaced with input
        6n  split into lines of length 6
dzaima
źródło
1
Jak to siedzi w 0? Prawdopodobnie z powodu braku TIO ._. +1
Urna Magicznej Ośmiornicy
Myślę, że będzie (mam nadzieję) co najmniej 1 więcej
zepsutych
6
Syn języka golfa?
ETHprodukcje
@ETHproductions lol
dzaima
String Golfing Language
a'_ '23
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
Luis Mendo
źródło
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

PHP, 52 bajty

<?=strtr("  0000
 0 0 0
000  0
0 0 0
0000",0,$argn);

Wypróbuj online!

Jörg Hülsermann
źródło
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
ETHprodukcje
źródło
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.

OldBunny2800
źródło
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!

człowiek w pracy
źródło
5

Python 2 , 61 bajtów

lambda c:"""  ####
 # # #
###  #
# # #
####""".replace('#',c)

Wypróbuj online!

całkowicie ludzki
źródło
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
Dan Howell
źródło
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^
James
źródło
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
Ismael Miguel
źródło
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!

Neil
źródło
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 +

Conor O'Brien
źródło
3

Pyth, 25 22 21 20 bajtów

jcsm?d\ zjC"0¨eC"2 6

Spróbuj!

21 bajtów

t::." \"o½MËñ"\!bNw

Spróbuj tego!

Również 21 bajtów:

:jbct." \" ±¢î
"6Nw

Spróbuj tego!

KarlKastor
źródło
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)
programmer5000
źródło
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!

Conor O'Brien
źródło
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.

James
źródło
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!

Pan Xcoder
źródło
1

Java 8, 55 bajtów

c->"  ####\n # # #\n###  #\n# # #\n####".replace('#',c) 

Wypróbuj tutaj.

Java 7, 77 bajtów

String c(char c){return"  ####\n # # #\n###  #\n# # #\n####".replace('#',c);}

Wypróbuj tutaj.

Kevin Cruijssen
źródło
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
Esolanging Fruit
źródło
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.

eush77
źródło
0

C #, 53 bajty

c=>@"  ####
 # # #
###  #
# # #
####".Replace('#',c);
TheLethalCoder
źródło
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
stevefestl
źródło
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&&&&"}
avl42
źródło