Hazme un s'more ! Te digo el ancho, la cantidad de galletas Graham, la cantidad de chocolate y la cantidad de malvavisco. Un ejemplo:
Entrada:
Anchura: 10
Graham: 3
Chocolate: 2
Marshmallow: 1
.
Salida:
GGGGGGGGGG
GGGGGGGGGG
GGGGGGGGGG
CCCCCCCCCC
CCCCCCCCCC
MMMMMMMMMM
GGGGGGGGGG
GGGGGGGGGG
GGGGGGGGGG
¿Es tan fácil? Um ... si.
Tenga en cuenta que la entrada debe ser una lista de argumentos para una función o un programa, no una cadena. Puede elegir que el primero sea Ancho, luego Graham, pero cualquier orden está bien.
Casos de prueba completos si está interesado.
Fragmento de pila (para pruebas, etc.)
Esto es para probar la salida.
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:
- Puede incluir una nueva línea al final de la última línea. También puede usar una en
\
lugar de una nueva línea. - Este es el código de golf .
- ¿Alguna pregunta? Comenta abajo:
Respuestas:
Jalea , 11 bytes
Pruébalo en línea!
Cómo funciona
fuente
Python 2 ,
7348 bytesPruébalo en línea!
Crea una versión transpuesta de la respuesta, que la transpone al formato correcto con
zip(*l)
fuente
05AB1E ,
211919 bytesPruébalo en línea!
-2 gracias a mi descuido y a Emigna.
(Vea la respuesta de Emigna, es mejor: /codegolf//a/116787/59376 )
fuente
©
allí.¬¸
conD
los elementos adicionales que se pierden al comprimir.JavaScript (ES6), 71 bytes
¡Woohoo, supera otras 3 respuestas de JavaScript!
Mostrar fragmento de código
fuente
MATL , 17 bytes
El formato de entrada es: primera entrada
[G, C, M]
, segunda entradaW
.Pruébalo en línea!
Explicación con ejemplo
Considere las entradas
[3 2 1]
y10
.fuente
C # , 204 bytes
Golfed
Sin golf
Legible sin golf
Código completo
Lanzamientos
204 bytes
- Solución inicial.Notas
fuente
05AB1E ,
1716 bytes1 bytes guardados gracias a la computación caruso .
Pruébalo en línea!
El orden de entrada es
W, [G,C,M]
Explicación
10, [3,2,1]
usado como ejemplo.fuente
"GCMG"S×vy²Nè.D»
poderes gemelos maravilla, activar! Forma de código 05AB1E! Además, los argumentos se intercambian, pero todavía son 16.Ruby, 47 bytes
gracias a ventero
Ruby, 51 bytes
Llame así:
fuente
->w,g,c,m{puts r=[?G*w]*g,[?C*w]*c,[?M*w]*m,r}
es un poco más cortoPowerShell , 49 bytes
Pruébalo en línea!
Toma la entrada como cuatro argumentos de línea de comandos,
width graham chocolate marshmallow
almacena el primero en$a
y el resto en$b
(implícitamente como una matriz). Bucles de más de la gama0,1,2,0
. Cada ciclo, lo indexamos en una cadenaGCM
, lo relanzamoschar
como una cadena y lo multiplicamos por$a
(el ancho), y luego, usando el operador de coma,
, lo convierte en una matriz multiplicando el índice apropiado de$b
(es decir, cuántos capas). Esas matrices de cadenas resultantes se dejan en la tubería y la salida es implícita, con una nueva línea entre los elementos.fuente
C,
108105bytes¡Gracias a @Quentin por guardar 3 bytes!
Pruébalo en línea!
fuente
#define F(i,c)for(;i--;puts(""))for(j=w;j--;)putchar(c);
ahorra tres bytes :)Lote, 146 bytes
Se basa en el comportamiento oscuro de
echo
que a menudo puede ignorar el símbolo entreecho
y el texto que se repetirá para colapsar los cuatro bucles en un bucle anidado.fuente
V , 22 bytes
Pruébalo en línea!
Hexdump:
El orden de entrada es
Explicación:
fuente
Excel, 104 bytes
¡Oh chico! Una fórmula que requiere saltos de línea.
A1
tiene AnchoA2
tiene GrahamA3
tiene ChocolateA4
tiene MalvaSi se permite el formateo previo, puede formatear la celda para Texto vertical y acortar la fórmula a 65 bytes:
fuente
Jalea , 13 bytes
Un programa diádico. Las entradas son:
[Graham's, Chocolates, Marshmallows]
,Width
.Pruébalo en línea!
¿Cómo?
fuente
PHP, 85 bytes
o
Versiones en linea
PHP, 96 bytes
Versión en línea
Expandido
fuente
05AB1E , 14 bytes
Código:
Utiliza la codificación CP-1252 . Pruébalo en línea!
Explicación:
fuente
Python 2 ,
6757 bytes(Editar: ahora que las matrices están permitidas, no es necesario unirse a una nueva línea).
fuente
C # (150 bytes)
Sin golf:
fuente
Java, 138 bytes
Pruébalo en línea!
Explicación:
fuente
Swift,
138137134130 bytesGuardado 7 bytes gracias a @Kevin
Dos funciones que devuelven el valor esperado:
f
es una función auxiliar yr
es la función real tipo lamdba que genera la salida. Uso:print(r(10,3,2,1))
¡Echale un vistazo!
fuente
var f=String.init(repeating:count:);
). Y no te ahorra ningún personaje, pero no cuesta ninguno, por lo que ambos deberían serlolet
.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
Pruébalo en línea!
fuente
JavaScript (ES6), 91 bytes
Incluye la nueva línea final.
fuente
JS (ES6), 87 bytes
x
Actúa como una función lambda independiente. El resultado tiene una nueva línea final.Probar en un fragmento:
Mostrar fragmento de código
fuente
C, 90 bytes (según la respuesta de Steadybox )
Cambió el nombre de las variables y explotó el operador del preprocesador de stringificación para reducir los parámetros de macro. Espero publicar esta idea ya que su propia respuesta está bien :)
Enlace TIO
fuente
F # (
14899 bytes)Uso:
Sin golf:
Todavía soy nuevo en F #, así que si hice algo extraño o estúpido, avíseme.
fuente
JavaScript ES6,
696866 bytesGracias @Arnauld por jugar golf en un byte
Pruébalo en línea!
Explicación
Recibe entradas en formato curry
(Width)([Graham,Chocolate,Marshmallow])
El uso
.replace(/./g,...)
reemplaza cada carácter en la cadenaGCMG
con el valor de retorno de la función(c,i)=>`${c.repeat(a)} `.repeat(b[i%3])
`${c.repeat(a)} `
crea cada línea de la galleta Graham con una nueva línea agregada.repeat(b[i%3])
repite esta línea la cantidad requerida de vecesfuente
replace()
ahorraría un byte:a=>"GCMG".replace(/./g,(c,i)=>`${c.repeat(a[0])}\n`.repeat(a[1+i%3]))
JS (ES6), 111 bytes
fuente
Mathematica 102 Bytes (100 caracteres)
Escuché que los s'mores incorporados no saldrán hasta V12.
Bastante sencillo usando la idea de construir una columna primero. Los nombres de función largos desperdician 35 bytes. El símbolo de un cuadro es en realidad un carácter de transposición y se pegará perfectamente en Mathematica.
Uso:
%@{Graham, Chocolate, Marshmallows, Width}
por ejemplo%@{3, 2, 1, 11}
fuente
Java 7, 226 bytes
O (también 226 bytes ):
Explicación:
Código de prueba:
Pruébalo aquí
Salida:
fuente
Haskell , 91 bytes
Debería ser bastante autoexplicativo. Como se señaló en un comentario que las matrices de caracteres están permitidas, aquí hay una versión de 58 bytes que devuelve una lista de cadenas (una para cada capa):
fuente