Сделай мне больше ! Я скажу вам ширину, количество крекеров, количество шоколада и количество зефира. Пример:
Входные данные:
Ширина: 10
Graham: 3
Шоколад: 2
Зефир: 1
.
Выход:
GGGGGGGGGG
GGGGGGGGGG
GGGGGGGGGG
CCCCCCCCCC
CCCCCCCCCC
MMMMMMMMMM
GGGGGGGGGG
GGGGGGGGGG
GGGGGGGGGG
Это так просто? Хм ... да.
Обратите внимание, что входные данные должны быть списком аргументов функции или программы, а не строкой. Вы можете выбрать сначала ширину, потом Грэма, но подойдет любой порядок.
Полные тестовые случаи, если вы заинтересованы.
Фрагмент стека (для тестирования и т. Д.)
Это для проверки вывода.
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>
Примечания:
- Вы можете включить завершающий символ новой строки в конце последней строки. Вы также можете использовать
\
вместо новой строки. - Это код-гольф .
- Любые вопросы? Комментарий ниже:
Ответы:
Желе , 11 байт
Попробуйте онлайн!
Как это устроено
источник
Python 2 ,
7348 байтовПопробуйте онлайн!
Создает транспонированную версию ответа, а затем переносит его в правильный формат с
zip(*l)
источник
05AB1E ,
211919 байтовПопробуйте онлайн!
-2 благодаря моему недосмотру и Эмигне.
(См. Ответ Эминьи, лучше: /codegolf//a/116787/59376 )
источник
©
там.¬¸
сD
как дополнительные элементы теряются при молнии.JavaScript (ES6), 71 байт
Woohoo, разбить 3 других ответов JavaScript!
Показать фрагмент кода
источник
MATL , 17 байт
Формат ввода: первый ввод
[G, C, M]
, второй вводW
.Попробуйте онлайн!
Пояснение с примером
Рассмотрим входы
[3 2 1]
и10
.источник
C # , 204 байта
Golfed
Ungolfed
Ungolfed читабельный
Полный код
релизы
204 bytes
- Исходное решение.Примечания
источник
05AB1E ,
1716 байт1 карат сэкономлено благодаря carusocomputing .
Попробуйте онлайн!
Порядок ввода
W, [G,C,M]
объяснение
10, [3,2,1]
используется в качестве примера.источник
"GCMG"S×vy²Nè.D»
чудо-близнецы, активируйте! Форма, код 05AB1E! Кроме того, аргументы меняются местами, но это все еще 16.Рубин, 47 байтов
благодаря Ventero
Рубин, 51 байт
Звоните так:
источник
->w,g,c,m{puts r=[?G*w]*g,[?C*w]*c,[?M*w]*m,r}
немного корочеPowerShell , 49 байт
Попробуйте онлайн!
Принимает ввод как четыре аргумента командной строки
width graham chocolate marshmallow
, сохраняет первый в,$a
а остальные в$b
(неявно как массив). Петли из-за диапазона0,1,2,0
. Каждый цикл мы индексируем в строкуGCM
, повторноchar
как строку и умножаем на$a
(ширину), а затем, используя оператор запятой,
, превращаем это в массив путем умножения соответствующего индекса$b
(т. Е. Сколько слои). Эти результирующие строковые массивы все остаются в конвейере, и вывод неявный, с новой строкой между элементами.источник
C,
108105 байтСпасибо @Quentin за сохранение 3 байта!
Попробуйте онлайн!
источник
#define F(i,c)for(;i--;puts(""))for(j=w;j--;)putchar(c);
сохраняет три байта :)Пакет, 146 байт
Полагается на непонятное поведение
echo
в том, что он часто может игнорировать символ междуecho
и текст, который должен отображаться, чтобы свести четыре цикла во вложенный цикл.источник
В , 22 байта
Попробуйте онлайн!
HexDump:
Порядок ввода
Объяснение:
источник
Excel, 104 байта
О, парень! Формула, которая требует разрывов строк.
A1
есть ширинаA2
имеет ГрэмA3
имеет шоколадA4
есть мальваЕсли предварительное форматирование разрешено, вы можете отформатировать ячейку для вертикального текста и сократить формулу до 65 байт:
источник
Желе , 13 байт
Диадическая программа. Входы:
[Graham's, Chocolates, Marshmallows]
,Width
.Попробуйте онлайн!
Как?
источник
PHP, 85 байт
или
Онлайн версии
PHP, 96 байт
Онлайн версия
расширенный
источник
05AB1E , 14 байтов
Код:
Использует кодировку CP-1252 . Попробуйте онлайн!
Объяснение:
источник
Python 2 ,
6757 байт(Изменить: теперь, когда матрицы разрешены, нет необходимости присоединять их к новой строке.)
источник
C # (150 байт)
Ungolfed:
источник
Java, 138 байт
Попробуйте онлайн!
Объяснение:
источник
Swift,
138137134130 байтСохранено 7 байт благодаря @Kevin
Две функции, которые возвращают ожидаемое значение:
f
это вспомогательная функция иr
фактическая lamdba-подобная функция, которая генерирует вывод. Использование:print(r(10,3,2,1))
Проверьте это!
источник
var f=String.init(repeating:count:);
). И это не спасет вас ни одного персонажа, но это не будет стоить ничего, поэтому они оба должны быть на самом делеlet
.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:)
...Выпуклый , 20 байтов
Попробуйте онлайн!
источник
JavaScript (ES6), 91 байт
Включает завершающий перевод строки.
источник
JS (ES6), 87 байт
x
действует как отдельная лямбда-функция. У результата есть завершающий перевод строки.Попробуйте в фрагменте:
Показать фрагмент кода
источник
C, 90 байтов (на основе ответа Steadybox )
Переименовал переменные и использовал оператор препроцессора строкового преобразования, чтобы сократить макропараметры. Я надеюсь опубликовать эту идею как собственный ответ, это хорошо :)
Ссылка TIO
источник
F # (
14899 байт)Использование:
Ungolfed:
Я все еще новичок в F #, поэтому, если я сделал что-то странное или глупое, пожалуйста, дайте мне знать.
источник
JavaScript ES6,
696866 байтСпасибо @Arnauld за игру в один байт
Попробуйте онлайн!
объяснение
Получает ввод в формате карри
(Width)([Graham,Chocolate,Marshmallow])
Использование
.replace(/./g,...)
заменяет каждый символ в строкеGCMG
возвращаемым значением из функции(c,i)=>`${c.repeat(a)} `.repeat(b[i%3])
`${c.repeat(a)} `
Создает каждую строку взломщика Грэма с добавленной новой.repeat(b[i%3])
строкой, повторяет эту строку необходимое количество раз.источник
replace()
спасут байт:a=>"GCMG".replace(/./g,(c,i)=>`${c.repeat(a[0])}\n`.repeat(a[1+i%3]))
JS (ES6), 111 байт
источник
Mathematica 102 байта (100 символов)
Слышал, что встроенный s'mores не выходит до V12.
Довольно просто использовать идею построения колонки в первую очередь. Длинные имена функций тратят 35 байтов. Один похожий на коробку символ на самом деле является транспонированным символом и прекрасно вставляется в Mathematica.
Использование:
%@{Graham, Chocolate, Marshmallows, Width}
например%@{3, 2, 1, 11}
источник
Java 7, 226 байт
ИЛИ (также 226 байт ):
Объяснение:
Тестовый код:
Попробуй это здесь.
Выход:
источник
Haskell , 91 байт
Должно быть довольно очевидным. Так как в комментарии было отмечено, что символьные матрицы разрешены, вот 58-байтовая версия, которая возвращает список строк (по одной для каждого слоя):
источник