Tente fazer um cubo!


15

Baseado nisso: tente fazer um quadrado!

Você precisa produzir isso:

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

Onde "#" é substituído pela entrada.

Se você digitar "A", deverá obter

  AAAA
 A A A
AAA  A
A A A
AAAA

Se você digitar "&", deverá obter

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

5
Bem, isso é um pouco semelhante, embora pelo menos não é uma resposta de 3 bytes no carvão vegetal desta vez ...
Neil

1
As duas últimas linhas podem ter espaços à esquerda e o resultado pode ter novas linhas à frente?
Dzaima 19/05

3
B³S‖O↗embora possa muito bem estar perto de uma resposta de 10 bytes em carvão ... Eu simplesmente não conheço o idioma o suficiente para fazê-lo, realmente precisa haver uma página como essa, exceto para carvão.
Urna de polvo mágico

5
@AAlex Sandbox
xnor

6
Não vejo como isso é um tolo da praça
Luis Mendo

Respostas:


18

Cenoura , 31 bytes

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

#s são substituídos pela entrada.

Basicamente, uma porta desta resposta para este problema.


39
parece que demorou horas para jogar golfe ...
Cyoce 19/17

@KritixiLithos 200 rep porque você criou uma linguagem legal, isso não parece justo xD
Stephen

12

05AB1E , 16 15 bytes

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

Experimente online!

Explicação

ð‚                # 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
Você pode codificar a nova linha na lista / número para salvar os últimos 3 bytes?
Rod

@Rod Esse seria um número muito maior, no mínimo 6 bytes, mais um byte extra ou dois para incluir a nova linha na lista ...
ETHproductions

@Rod: Você poderia fazer algo parecido com isso . Infelizmente isso acaba um pouco mais. Boa ideia.
Emigna

1
•nxвΛ•bTRð¹ì‡6ô»... as suas batidas transliteram um pouco, apenas devido aos requisitos de pedidos; se eu descobrisse uma maneira de obter implicitamente a entrada e gerar a string 01em 1 byte, essa seria uma solução de 13/14 bytes.
Magic Octopus Urn

1
@carusocomputing •nxвΛ•bT𹫇6ô»ou ð«T•nxвΛ•br‡6ô»tem o mesmo comprimento.
Emigna 19/05/19

9

Cubix , 62 bytes

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

Experimente online! e Assista ao intérprete!

Isso se encaixa em um cubo 4:

        . / 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 . .
. . . . . . . . . . . . . . . .
        . . . .
        . . . .
        . . . .
        . . . .

Eu não sou muito bom em manipular a direção do ponteiro de instruções, então continuarei tentando jogar isso. Tanto esta como a minha resposta aqui são baseadas no "Olá, mundo!" programa de exemplo usando./v.o;@?/ (em um cubo 3) para imprimir e exibir recursivamente os caracteres na pilha, para que o restante do código apenas coloque os caracteres na pilha na ordem correta.

Agora criei um cubo em um cubo para poder descansar (e fazer meu trabalho real).


8

SOGL , 13 10 bytes

Βū&⁵'r⁹‘6n

Explicação:

Βū&⁵'r⁹‘    push "  ŗŗŗŗ ŗ ŗ ŗŗŗŗ  ŗŗ ŗ ŗ ŗŗŗŗ", where "ŗ" is replaced with input
        6n  split into lines of length 6

1
Como é este sentado em 0? Provavelmente devido à falta de um TIO ._. +1
Urna de polvo mágico

Eu acho que vai haver em (espero) a maioria das coisas quebrando mais uma atualização e então eu vou pensar em alguma coisa running on-line
dzaima

6
Filho de um idioma de golfe?
ETHproductions

@ETHproductions lol
dzaima

8

MATL , 13 10 bytes

Agradeço a Conor O'Brien por remover 3 bytes e por me mostrar que os imprimíveis podem ser usados ​​no Octave.

O código contém caracteres não imprimíveis. Experimente online!

Explicação

'....'   % 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

Você pode criar 10 bytes se não estiver imprimível. Experimente online!
Conor O'Brien

@ ConorO'Brien Ei, obrigado! Eu não tinha certeza de que Octave estava bem com aqueles ... como você os digitou?
Luis Mendo

Bem, honestamente, peguei os números, converti-os em hexadecimal e depois o fiz echo 0f15392a3c|xxd -r -p|clip. No Windows, clipé a área de transferência. Então eu só colado eles: P (Se você estiver em uma linha de comando, é ^O^Utambém)
Conor O'Brien

@ ConorO'Brien Isso está bem na minha cabeça. Você deve realmente postar isso como sua resposta
Luis Mendo

Ele usa a mesma tática que a sua, apenas removendo a necessidade do módulo 64 usando os valores diretamente.
Conor O'Brien


6

Japonês , 20 bytes

"OUyj|"®c ¤Åd0S1U +R

Teste online!

Nada mal para um idioma sem compactação incorporada (bem, exceto comprimir cadeias de letras minúsculas) ...

Explicação

Em binário, os cinco caracteres na sequência são:

O 1001111
U 1010101
y 1111001
j 1101010
| 1111100

Corte a inicial 1de cada uma e você obterá o padrão para o cubo.

"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

Eu tentei uma abordagem baseada em modelo ( llpode ser compactada), mas tem 11 bytes a mais.
Lucas

Agradável. Eu tinha 23 bytes antes de perceber que tinha feito isso!
Shaggy

6

Montagem Z80, código de máquina de 37 bytes

Suponha um dispositivo de E / S mapeado para memória:

; NÃO introduza um espaço, pois ele entrará em espaços de impressão com loop infinito e novas linhas!

3A xx xx ld a, (entrada); obter caractere de entrada
11 0A 20 ld, 200ah; espaço e nova linha
21 yy yy ld hl, output; obter endereço de saída
4F ld c, a; colocar caractere em c
ciclo:
72 ld (hl), d; espaço de saída * 2 | caractere de saída * 2
72 ld (hl), d
77 ld (hl), a; caractere de saída | caractere de saída
71 ld (hl), c; caractere de saída * 2 | espaço de saída * 2
71 ld (hl), c
77 ld (hl), a; caractere de saída | caractere de saída
73 ld (hl), e; nova linha de saída | nova linha de saída
72 ld (hl), d; espaço de saída | caractere de saída
71 ld (hl), c; caractere de saída | espaço de saída
72 ld (hl), d; espaço de saída | caractere de saída
71 ld (hl), c; caractere de saída | espaço de saída
72 ld (hl), d; espaço de saída | caractere de saída
B9 cp c; definir zero sinalizador primeira vez | limpar a segunda vez
20 06 jr nz, fim; pule para o fim
77 ld (hl), a; caractere de saída
73 ld (hl), e; nova linha de saída
4A ld c, d; colocar espaço em c
57 dd, a; colocar caractere em d
28 FB jr z, laço; loop para a segunda vez
fim:
73 ld (hl), e; nova linha de saída
77 ld (hl), a; caractere de saída * 4
77 ld (hl), um
77 ld (hl), um
77 ld (hl), um
76 paradas; ou C9 ret

6

LOLCODE, 202 170 bytes

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

Em LOLCODE, não há muito para jogar golfe ...

Isso define a variável cna entrada e cria uma string concatenada gigante, incluindo :)novas linhas. É sobre isso.


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

Além disso, VISIBLEimplicitamente concatena, para que possa remover SMOOSH tio.run/nexus/lolcode#@@/...
eush77

Para sua primeira coisa, existem alguns intérpretes que não requerem HAI ou KTHXBYE, por exemplo, REPL.it. Para sua segunda coisa, obrigado!
OldBunny2800

5

Sed, 40 caracteres

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

Quase trapacear como a descrição do desafio continha quase literalmente.

Exemplo de execução:

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

Experimente online!




4

PHP, 72 bytes

Eu fiz este apenas por diversão, já que já existe uma resposta PHP melhor.

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

O cubo é desenhado obtendo o valor binário de 64349871, concatenado por '00'.
Isso retorna o seguinte:

0011110101011110011010101111

A cada 6 caracteres, estou lançando uma nova linha, resultando no seguinte:

001111
010101
111001
101010
1111

E, em vez de exibir 0, ele exibe um espaço, que se parecerá com:

  1111
 1 1 1
111  1
1 1 1 
1111

4

Carvão , 17 16 bytes

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

Experimente online! Link é a versão detalhada do código. Mais longo do que eu queria, porque o "cubo" é um pouco mais largo do que alto ou profundo. Felizmente, alguns dos caracteres multidirecionais funcionam com PolygonHollow, o que me salva em 3 bytes. Editar: salvou um byte adicional usando + em vez de T ↑. Explicação:

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

No momento do desafio, a qvariável não funcionava no modo detalhado, caso contrário, eu poderia ter criado esta versão de 14 bytes:

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

Experimente online!


3

Empilhados , 31 bytes

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

Experimente online!

Aqui está um hexdump:

λ 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#

Isso converte uma matriz de caracteres em binário, preenche cada linha no comprimento 6e a indexa de acordo com a sequência' ' input +



2

JS (ES6), 64 60 52 bytes

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

Isso pode ser melhorado:

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

1
y=i+i+i+ié mais curto quey=i.repeat(4)
Stephen

2
... e ####é ainda mais curto.
Arnauld

1
Na verdade, a coisa toda é mais curto, sem modelos: Fiddle
Stephen

1

C (gcc) , 90 84 bytes

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

Experimente online! Define uma função fque leva um caractere g. Pena a codificação direta da tabela é mais curta ...

Versão antiga, 90 bytes

(Ainda tentando jogar golfe)

Tentando ter apenas um único putchar, mas idk. Existem imprimíveis, então aqui está o hexdump:

λ 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);}

Isso codifica o cubo em uma tabela de pesquisa binária, em que um 1bit representa a entrada e um 0bit representa um espaço. Experimente online!


1

Flak cerebral , 217 bytes

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

Experimente online!

Waaaaay por muito tempo.


1

Swift - 82 bytes + Fundação (18 bytes)?

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

Por padrão, os projetos Xcode-Swift possuem Whole-Module Optimization, de modo que import Foundationnão é necessário para esta função simples semelhante a lambda. No entanto, é necessário executá-lo em ambientes online, o que pode adicionar 18 bytes.

Confira!



0

CJam, 23 bytes

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

Eu sinto que ainda posso jogar isso.

"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 bytes

Codifica a sequência diretamente, com otimização menor:

8224PdPdPdPdP10Pd8192+ddPPP10PdPdPdP8224PdP10Pd256*32+ddPPP10PdPdPdPdP

Experimente online!


Levado para um extremo (não muito golfista), 145 bytes:

27065671941896667324298575455432398417474802390765222440949482848513*56759961956005660143530475805610581704254588701249011343446231795984498688+P

Experimente online!

Isso calcula A*x+B, onde Acodifica as posições do caractere de entrada e Bcodifica todo o resto:

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 O comando imprime o número resultante como um fluxo de bytes.



0

Lote do Windows, 79 bytes

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

Caractere especial. seguro, 97 bytes:

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

Você também pode usar avanços de linha, ou seja,.. %1%1%1%1\n %1 %1 %1...
TheLethalCoder

Alimentações de linha não são suportados no lote
stevefestl

Não conseguia me lembrar se foi ou não e não estava em posição de teste :)
TheLethalCoder

Desculpe, estou confuso, você pode repetir?
Stevefestl 23/05/19

I couldn't remember if you could use them or not and I couldn't test at the time I commented so I left the comment so you would still have the idea
TheLethalCoder

0

Tcl, 60 bytes

proc c x {regsub . $x "  &&&&\n & & &\n&&&  &\n& & &\n&&&&"}
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.