Faça-me um s'more ! Digo a você a largura, a quantidade de biscoito, a quantidade de chocolate e a quantidade de marshmallow. Um exemplo:
Entrada:
Largura: 10
Graham: 3
Chocolate: 2
Marshmallow: 1
.
Resultado:
GGGGGGGGGG
GGGGGGGGGG
GGGGGGGGGG
CCCCCCCCCC
CCCCCCCCCC
MMMMMMMMMM
GGGGGGGGGG
GGGGGGGGGG
GGGGGGGGGG
Isso é fácil? Hum ... sim.
Observe que a entrada deve ser uma lista de argumentos para uma função ou programa, não uma string. Você pode escolher o primeiro sendo Width e depois Graham, mas qualquer pedido é bom.
Casos de teste completos, se você estiver interessado.
Snippet de pilha (para teste etc.)
Isso é para testar a saída.
var smore = function(width, graham, chocolate, marshmallow){
return ("G".repeat(width) + "\n").repeat(graham) +
("C".repeat(width) + "\n").repeat(chocolate) +
("M".repeat(width) + "\n").repeat(marshmallow) +
("G".repeat(width) + "\n").repeat(graham);
};
Snippetify(smore);
<script src="https://programmer5000.com/snippetify.min.js"></script>
Width: <input type = "number">
Graham: <input type = "number">
Chocolate: <input type = "number">
Marshmallow: <input type = "number">
<button>Try it out!</button>
<pre data-output></pre>
Notas:
- Você pode incluir uma nova linha à direita no final da última linha. Você também pode usar um em
\
vez de uma nova linha. - Isso é código-golfe .
- Alguma pergunta? Comente abaixo:
Respostas:
Gelatina , 11 bytes
Experimente online!
Como funciona
fonte
Python 2 ,
7348 bytesExperimente online!
Cria uma versão transposta da resposta, que a transpõe para o formato correto com
zip(*l)
fonte
05AB1E ,
211919 bytesExperimente online!
-2 graças à minha supervisão e Emigna.
(Veja a resposta de Emigna, é melhor: /codegolf//a/116787/59376 )
fonte
©
lá.¬¸
comD
os elementos extras perdidos ao compactar.JavaScript (ES6), 71 bytes
Woohoo, bata mais 3 respostas em JavaScript!
Mostrar snippet de código
fonte
MATL , 17 bytes
O formato de entrada é: primeira entrada
[G, C, M]
, segunda entradaW
.Experimente online!
Explicação com exemplo
Considere entradas
[3 2 1]
e10
.fonte
C # , 204 bytes
Golfe
Ungolfed
Ungolfed legible
Código completo
Lançamentos
204 bytes
- Solução inicial.Notas
fonte
05AB1E ,
1716 bytes1 bytes economizados graças à carusocomputação .
Experimente online!
A ordem de entrada é
W, [G,C,M]
Explicação
10, [3,2,1]
usado como exemplo.fonte
"GCMG"S×vy²Nè.D»
poderes maravilhosos, ative! Formulário de, código 05AB1E! Além disso, os argumentos são trocadas, mas ainda é 16.Ruby, 47 bytes
graças ao ventero
Ruby, 51 bytes
Ligue assim:
fonte
->w,g,c,m{puts r=[?G*w]*g,[?C*w]*c,[?M*w]*m,r}
é um pouco mais curtoPowerShell , 49 bytes
Experimente online!
Recebe a entrada como quatro argumentos da linha de comando,,
width graham chocolate marshmallow
armazena o primeiro$a
e o restante em$b
(implicitamente como uma matriz). Loops de todo o intervalo0,1,2,0
. Cada loop, indexamos em stringGCM
, refazemos issochar
como string e multiplicamos por$a
(a largura) e, em seguida, usando o operador de vírgula,
, transforma isso em uma matriz multiplicando o índice apropriado de$b
(ou seja, quantos camadas). Essas matrizes de sequência resultantes são todas deixadas no pipeline e a saída é implícita, com uma nova linha entre os elementos.fonte
C,
108105 bytesObrigado a @Quentin por salvar 3 bytes!
Experimente online!
fonte
#define F(i,c)for(;i--;puts(""))for(j=w;j--;)putchar(c);
salva três bytes :)Lote, 146 bytes
Baseia-se no comportamento obscuro de
echo
que muitas vezes pode ignorar o símbolo entreecho
e o texto a ser repetido para recolher os quatro loops em um loop aninhado.fonte
V , 22 bytes
Experimente online!
Hexdump:
A ordem de entrada é
Explicação:
fonte
Excel, 104 bytes
Oh garoto! Uma fórmula que requer quebras de linha.
A1
tem LarguraA2
tem GrahamA3
tem ChocolateA4
tem MallowSe a pré-formatação for permitida, você poderá formatar a célula para Texto Vertical e reduzir a fórmula para 65 bytes:
fonte
Gelatina , 13 bytes
Um programa diádico. As entradas são:
[Graham's, Chocolates, Marshmallows]
,Width
.Experimente online!
Quão?
fonte
PHP, 85 bytes
ou
Versões Online
PHP, 96 bytes
Versão Online
Expandido
fonte
05AB1E , 14 bytes
Código:
Usa a codificação CP-1252 . Experimente online!
Explicação:
fonte
Python 2 ,
6757 bytes(Editar: agora que as matrizes são permitidas, não é necessário ingressar em uma nova linha.)
fonte
C # (150 bytes)
Ungolfed:
fonte
Java, 138 bytes
Experimente online!
Explicação:
fonte
Rápido,
138137134130 bytesGuardado 7 bytes graças a @Kevin
Duas funções que retornam o valor esperado:
f
é uma função auxiliar er
é a função real do tipo lamdba que gera a saída. Uso:print(r(10,3,2,1))
Confira!
fonte
var f=String.init(repeating:count:);
). E isso não salva nenhum personagem, mas não custa, então os dois deveriam realmente serlet
.r
(let r={f(f("G",$0)+"\n",$1)+f(f("C",$0)+"\n",$2)+f(f("M",$0)+"\n",$3)+f(f("G",$0)+"\n",$1)}
)f=String.init(repeating:count:)
...Convexo , 20 bytes
Experimente online!
fonte
JavaScript (ES6), 91 bytes
Inclui nova linha à direita.
fonte
JS (ES6), 87 bytes
x
atua como uma função lambda autônoma. O resultado tem uma nova linha à direita.Experimente um trecho:
Mostrar snippet de código
fonte
C, 90 bytes (com base na resposta da Steadybox )
Renomeou as variáveis e explorou o operador do pré-processador de stringification para reduzir os parâmetros da macro. Espero postar esta idéia como sua própria resposta está bem :)
Link TIO
fonte
F # (
14899 bytes)Uso:
Ungolfed:
Eu ainda sou novo no F #, então se eu fiz algo estranho ou estúpido, por favor me avise.
fonte
JavaScript ES6,
696866 bytesObrigado @Arnauld por jogar fora um byte
Experimente online!
Explicação
Recebe entrada em formato ao curry
(Width)([Graham,Chocolate,Marshmallow])
Usar
.replace(/./g,...)
substitui cada caractere na sequênciaGCMG
pelo valor de retorno da função(c,i)=>`${c.repeat(a)} `.repeat(b[i%3])
`${c.repeat(a)} `
cria cada linha do graham cracker com uma nova linha anexada.repeat(b[i%3])
repete essa linha o número necessário de vezesfonte
replace()
salvaria um byte:a=>"GCMG".replace(/./g,(c,i)=>`${c.repeat(a[0])}\n`.repeat(a[1+i%3]))
JS (ES6), 111 bytes
fonte
Mathematica 102 Bytes (100 caracteres)
Ouvi dizer que o s'mores embutido não sai até a V12.
Bem simples, usando a idéia de construir uma coluna primeiro. Nomes longos de função desperdiçam 35 bytes. O símbolo de aparência de uma caixa é na verdade um caractere de transposição e colará perfeitamente no Mathematica.
Uso:
%@{Graham, Chocolate, Marshmallows, Width}
por exemplo%@{3, 2, 1, 11}
fonte
Java 7, 226 bytes
OU (também 226 bytes ):
Explicação:
Código do teste:
Experimente aqui.
Resultado:
fonte
Haskell , 91 bytes
Deve ser bastante auto-explicativo. Como foi observado em um comentário que matrizes de caracteres são permitidas, aqui está uma versão de 58 bytes que retorna uma lista de strings (uma para cada camada):
fonte