Zrób mi więcej ! Mówię wam o szerokości, ilości krakersa grahamu, ilości czekolady i ilości pianki. Przykład:
Wejście:
Szerokość: 10
Graham: 3
Czekolada: 2
Zefir: 1
.
Wynik:
GGGGGGGGGG
GGGGGGGGGG
GGGGGGGGGG
CCCCCCCCCC
CCCCCCCCCC
MMMMMMMMMM
GGGGGGGGGG
GGGGGGGGGG
GGGGGGGGGG
Czy to takie proste? Um ... tak.
Zauważ, że dane wejściowe powinny stanowić listę argumentów funkcji lub programu, a nie ciąg znaków. Możesz wybrać najpierw szerokość, potem Graham, ale każde zamówienie jest w porządku.
Pełne przypadki testowe, jeśli jesteś zainteresowany.
Fragment kodu (do testowania itp.)
Ma to na celu przetestowanie wyjścia.
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>
Uwagi:
- Możesz dodać końcowy znak nowej linii na końcu ostatniego wiersza. Możesz także użyć
\
zamiast nowej linii. - To jest golf golfowy .
- Jakieś pytania? Komentarz poniżej:
Odpowiedzi:
Galaretka , 11 bajtów
Wypróbuj online!
Jak to działa
źródło
Python 2 ,
7348 bajtówWypróbuj online!
Tworzy transponowaną wersję odpowiedzi, a następnie transponuje ją do właściwego formatu za pomocą
zip(*l)
źródło
05AB1E ,
211919 bajtówWypróbuj online!
-2 dzięki mojemu przeoczeniu i Emignie.
(Zobacz odpowiedź Emigny, lepiej: /codegolf//a/116787/59376 )
źródło
©
.¬¸
sięD
jako dodatkowe elementy zostały utracone podczas zip.JavaScript (ES6), 71 bajtów
Woohoo, pokonaj 3 inne odpowiedzi JavaScript!
Pokaż fragment kodu
źródło
MATL , 17 bajtów
Format wejściowy to: pierwsze wejście
[G, C, M]
, drugie wejścieW
.Wypróbuj online!
Objaśnienie z przykładem
Rozważ dane wejściowe
[3 2 1]
i10
.źródło
C # , 204 bajty
Grał w golfa
Nie golfił
Nieczytelny czytelny
Pełny kod
Prasowe
204 bytes
- Wstępne rozwiązanie.Notatki
źródło
05AB1E ,
1716 bajtówZapisano 1 bajt dzięki carusocomputing .
Wypróbuj online!
Kolejność wprowadzania to
W, [G,C,M]
Wyjaśnienie
10, [3,2,1]
użyty jako przykład.źródło
"GCMG"S×vy²Nè.D»
cudowne bliźniacze moce, aktywuj! Formularz, kod 05AB1E! Również argumenty zamieniają się, ale wciąż jest 16.Ruby, 47 bajtów
dzięki ventero
Rubinowy, 51 bajtów
Zadzwoń tak:
źródło
->w,g,c,m{puts r=[?G*w]*g,[?C*w]*c,[?M*w]*m,r}
jest nieco krótszyPowerShell , 49 bajtów
Wypróbuj online!
Pobiera dane wejściowe jako cztery argumenty wiersza polecenia,
width graham chocolate marshmallow
zapisuje pierwszy$a
i resztę w$b
(domyślnie jako tablicę). Pętle z ponad zakresu0,1,2,0
. Każda pętla indeksujemy do łańcuchaGCM
, ponownie rzutujemy gochar
jako łańcuch i mnożymy przez$a
(szerokość), a następnie za pomocą operatora przecinkowego,
zamienia to w tablicę, mnożąc odpowiedni indeks$b
(tj. Ile warstwy). Wszystkie wynikowe tablice łańcuchowe są pozostawione w potoku, a dane wyjściowe są niejawne, z nową linią między elementami.źródło
C,
108105 bajtówDzięki @Quentin za uratowanie 3 bajtów!
Wypróbuj online!
źródło
#define F(i,c)for(;i--;puts(""))for(j=w;j--;)putchar(c);
oszczędza trzy bajty :)Partia, 146 bajtów
Opiera się na niejasnym zachowaniu polegającym
echo
na tym, że często może ignorować symbol pomiędzyecho
i tekst, który należy echo, aby zwinąć cztery pętle w zagnieżdżoną pętlę.źródło
V , 22 bajtów
Wypróbuj online!
Hexdump:
Kolejność wprowadzania to
Wyjaśnienie:
źródło
Excel, 104 bajty
O chłopie! Formuła wymagająca podziału linii.
A1
ma szerokośćA2
ma GrahamA3
ma czekoladaA4
ma ślazJeśli dozwolone jest wstępne formatowanie, możesz sformatować komórkę dla tekstu pionowego i skrócić formułę do 65 bajtów:
źródło
Galaretka , 13 bajtów
Program dyadyczny. Dane wejściowe to:
[Graham's, Chocolates, Marshmallows]
,Width
.Wypróbuj online!
W jaki sposób?
źródło
PHP, 85 bajtów
lub
Wersje online
PHP, 96 bajtów
Wersja online
Rozszerzony
źródło
05AB1E , 14 bajtów
Kod:
Wykorzystuje kodowanie CP-1252 . Wypróbuj online!
Wyjaśnienie:
źródło
Python 2 ,
6757 bajtów(Edycja: teraz, gdy macierze są dozwolone, nie trzeba dołączać nowego wiersza).
źródło
C # (150 bajtów)
Nie golfowany:
źródło
Java, 138 bajtów
Wypróbuj online!
Wyjaśnienie:
źródło
Szybki,
138137134130 bajtówZaoszczędź 7 bajtów dzięki @Kevin
Dwie funkcje, które zwracają oczekiwaną wartość:
f
jest funkcją pomocniczą ir
jest faktyczną funkcją podobną do lamdba, która generuje dane wyjściowe. Stosowanie:print(r(10,3,2,1))
Sprawdź to!
źródło
var f=String.init(repeating:count:);
). I nie oszczędza ci żadnych postaci, ale nie kosztuje, więc obie powinny być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:)
...Wypukły , 20 bajtów
Wypróbuj online!
źródło
JavaScript (ES6), 91 bajtów
Obejmuje końcowy znak nowej linii.
źródło
JS (ES6), 87 bajtów
x
działa jako samodzielna funkcja lambda. Wynik ma końcowy znak nowej linii.Wypróbuj we fragmencie:
Pokaż fragment kodu
źródło
C, 90 bajtów (na podstawie odpowiedzi Steadyboksa )
Zmieniłem nazwy zmiennych i wykorzystałem operatora preprocesora strunizacji, aby obniżyć parametry makr. Mam nadzieję, że opublikowanie tego pomysłu jako własnej odpowiedzi jest w porządku :)
Łącze TIO
źródło
F # (
14899 bajtów)Stosowanie:
Nie golfowany:
Nadal jestem nowy na F #, więc jeśli zrobiłem coś dziwnego lub głupiego, daj mi znać.
źródło
JavaScript ES6,
696866 bajtówDzięki @Arnauld za grę w golfa o jeden bajt
Wypróbuj online!
Wyjaśnienie
Odbiera dane wejściowe w formacie curry
(Width)([Graham,Chocolate,Marshmallow])
Użycie
.replace(/./g,...)
zastępuje każdy znak w ciąguGCMG
zwracaną wartością z funkcji(c,i)=>`${c.repeat(a)} `.repeat(b[i%3])
`${c.repeat(a)} `
tworzy każdą linię crackera grahama z dołączoną nową linią.repeat(b[i%3])
powtarza tę linię wymaganą liczbę razyźródło
replace()
zapisałoby bajt:a=>"GCMG".replace(/./g,(c,i)=>`${c.repeat(a[0])}\n`.repeat(a[1+i%3]))
JS (ES6), 111 bajtów
źródło
Mathematica 102 bajtów (100 znaków)
Słyszałem, że wbudowane s'mores nie wychodzi do V12.
Całkiem prosto, korzystając z pomysłu zbudowania kolumny jako pierwszej. Długie nazwy funkcji marnują 35 bajtów. Jeden symbol przypominający pudełko jest w rzeczywistości transponowaną postacią i dobrze wklei się do Mathematiki.
Zastosowanie:
%@{Graham, Chocolate, Marshmallows, Width}
np%@{3, 2, 1, 11}
źródło
Java 7, 226 bajtów
LUB (także 226 bajtów ):
Wyjaśnienie:
Kod testowy:
Wypróbuj tutaj.
Wynik:
źródło
Haskell , 91 bajtów
Powinno to być dość oczywiste. Ponieważ w komentarzu zauważono, że matryce znaków są dozwolone, oto wersja 58-bajtowa, która zwraca listę ciągów znaków (po jednej dla każdej warstwy):
źródło