Wejścia:
Dwie pojedyncze cyfry (nazwijmy je m
i n
) i dwa znaki (nazwijmy je a
i b
) w wybranym przez ciebie formacie wejściowym.
Wynik:
Aby uzyskać przewodnik, udawaj m=2, n=5, a='a', b='b'
.
Twój wynik będzie ciągiem zbudowanym z czterech wejść. Nazwijmy ciąg result
z wartością ""
. Po pierwsze, concatenate a
na result
m
czasie, więc Złącz a
na result
2
czas. result
teraz jest równy aa
. Po drugie, konkatenuj b
do result
m
czasów, więc konkatenuj b
do result
2
czasów. result
teraz jest równy aabb
. Na koniec, jeśli wynik jest już dłuższy niż n
, obetnij result
go, aby miał długość n
. W przeciwnym razie kontynuuj naprzemiennie z m
seriami długości do a
i b
aż result
ma długość n
. Ostatnim result
jest aabba
, który ma długość 5
.
Przypadki testowe:
Input: m = 2, n = 4, a = A, b = B
Output: AABB
Input: m = 3, n = 8, a = A, b = B
Output: AAABBBAA
Input: m = 4, n = 3, a = A, b = B
Output: AAA
Input: m = 2, n = 10, a = A, b = B
Output: AABBAABBAA
Jak wszyscy wiedzą, mniejszy będzie rządził światem, więc wygrywają najmniejsze programy w bajtach! :)
źródło
m=2,n=10,a=A,b=B
Odpowiedzi:
Python , 32 bajty
Wypróbuj online!
źródło
f=
-2 bajty.f=
sekcję nagłówka TIO, więc nie musisz jej usuwać ręcznie. TIO(a*m+b*m)
->(a+b)*m
: to nie działa.MATL , 5 bajtów
Wejścia są ciągiem z dwóch znaków, a następnie
m
, po czymn
.Wypróbuj online!
Wyjaśnienie
źródło
Haskell,
4440 bajtówWypróbuj online!
źródło
Ruby, 29 znaków
Przykładowy przebieg:
Wypróbuj online!
źródło
Japt , 10 bajtów
Najpierw spróbuj użyć języka golfowego. Wypróbuj online!
Wyjaśnienie
źródło
VîWpU +XpU
, ale oba robią to samo.Vî
jest idealny na to wyzwanie.05AB1E , 5 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Galaretka ,
64 bajtówWypróbuj online!
Podziękowania dla Jonathana Allana za lepszy format wejściowy (-2).
źródło
V , 13 bajtów
Wypróbuj online!
a
ib
są pobierane w osobnych wierszach na wejścium
in
są traktowane jako argument, odwrócone (podobnien
jak pierwszy argument im
drugi)Wyjaśnienie
źródło
Haskell ,
363529 bajtówJeszcze inne rozwiązanie Haskell (oczekuje znaków podanych jako lista):
Wypróbuj online!
Dzięki @Laikoni za -1 bajtów.
źródło
(m#n)a b=
.R ,
4139 bajtówAnonimowa funkcja; wypisuje wynik na standardowe wyjście. Bierze postacie jako wektor
d=c(a,b)
.gl
generuje współczynniki (liczby całkowite) (w tym przypadku)2
poziomów długości przebiegum
z długością całkowitąn
!cat
konkatenuje i drukuje je jako ciąg.Wypróbuj online!
źródło
function(d,m,n)rep(d,e=m,l=n)
byłoby to prawidłowe zgłoszenie.rep
spowoduje powstanie wektora znaków zamiast jednego ciąguJavaScript, 55 bajtów
Przykładowy fragment kodu:
źródło
JavaScript, 53 bajty
źródło
Łuska , 3 bajty
Bezpośredni port mojej odpowiedzi Haskell, z tym wyjątkiem, że kolejność argumentów jest inna:
Wypróbuj online!
źródło
Haskell ,
4843 bajtówWypróbuj online!
źródło
QBIC ,
3727 bajtówWyjaśnienie
Poprzednia próba:
źródło
PHP> = 7,1, 77 bajtów
PHP Sandbox Online
źródło
Java (OpenJDK 8) , 75 bajtów
Wypróbuj online!
źródło
Cubix ,
6358 bajtówWypróbuj online!
obserwuj tłumacza
Pobiera dane wejściowe, jak
ab*m*n
gdzie*
może być dowolny znak inny niż cyfra.Wersja kostki:
i|is
: czytaj znaki i zamieniaj je (taka
jest na górze)I:q
: czytajm
, dup i wypychaj na dół (stos jest terazm,b,a,m
))
: zmniejszenie?
: skręć w prawo, jeśli ma wartość dodatnią, idź prosto, jeśli zero (duplikata
)s:rur(/w
: zamień, duplikuj, przejdźm-i
na górę stosu, zmniejszajm-i
B
: reverse stack (który ma terazm
kopiea
:a... b m
)n
: negatem
(abyśmy mogli?
skręcić w lewo))
: przyrost?
: idź prosto, jeśli zero, skręć w lewo, jeśli jest ujemnyb
)s:r\/rw)\
w zasadzie taki sam jak gałąź dodatnia, ale z przyrostem i zwrotami w lewo.>v;
:0
zdejmij stos (wygląda jaka...b...
)/B
: odwróć stosI
: przeczytajn
s
: zamień drukowaną pętlę:oq
: print i push na dół stosu wygląda teraz tak:ab...a...n
(
ubytekn
?
: skręć w prawo, jeśli ma wartość dodatnią, idź prosto, jeśli zero/su
:: zamień górę stosu i kontynuuj pętlę/
odbija się w dół, a oceniany kod toIru@
;@
kończy program.źródło
Węgiel drzewny , 10 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu i zawiera czwarty przykład. (Irytujące deverbosifer nie usunie separatora, jeśli dodam go przed ostatnim
InputNumber()
.)źródło
Mathematica, 61 bajtów
Wejście
źródło
Mathematica, 44 bajty
Wyjaśnienie
to trzy bajtowy prywatny znakU+F3C7
reprezentujący\[Transpose]
operator Postfiksa w Mathematica. Brak linku TIO, ponieważ Mathics nie obsługuje
,\[Transpose]
ma niepoprawny priorytet operatora, drugi argumentTable
musi być listą, a co najważniejsze,StringPadRight
nie jest zaimplementowany.źródło
APL (Dyalog) , 5 bajtów
Wypróbuj online!
Pobiera dwa znaki w ciągu jako pierwsze wejście, a
m
następnie i potemn
.Wyjaśnienie
Niech przykładem będzie wejście
'ab'
,2
,10
.źródło
Pyth , 13 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
k, 10 bajtów
Wypróbuj online!
źródło
Chip , 588 bajtów
Wypróbuj online!
Pobiera dane wejściowe jako ciąg 4 znaków. Pierwsze dwa to znaki a i b , po których następuje wartość bajtu m , a następnie wartość bajtu n . Na przykład TIO zawiera dane wejściowe
ab<tab>2
, co odpowiada „a”, „b”, 9, 50. (Ponieważ kody dla<tab>
i2
to 9 i 50.W jaki sposób?
Ta odpowiedź jest trochę gigantyczna, ale oto najważniejsze informacje:
W lewym górnym rogu bloku, z małymi literami
a
-h
jest mechanizm przechowywania postaci a i b , jedna na bit. Na dole, zv~v
imz
jest mechanizm przełączający, aby przełączać się między nimi.Pośrodku jest kolumna z pęczkiem
~#M
. To brzmi wm przechowuje wartość ujemną. Duży trójkąt po prawej to tylko druty, aby wprowadzić tę wartość do górnego akumulatora.Górny prawy blok jest akumulatorem dla m . Przyrost zwiększa każdy cykl (od -m ), aż osiągnie zero. Kiedy tak się dzieje, znak wyjściowy jest zamieniany, a liczenie rozpoczyna się od -m .
Tymczasem jest dolny blok, którym jest akumulator n . Ponieważ n jest odczytywany tylko raz, nie potrzebujemy banku pamięci (
M
im
) do przechowywania tej wartości. Po prostu to negujemy i zaczynamy liczyć. Kiedy ta wartość osiągnie zero, cały shebang zostaje po prostu zakończony.Wszystkie inne guff ma opóźnienia (
Z
iz
), okablowanie (-
,|
...) i innych miscellany.źródło