Contributions:
Deux chiffres simples (appelons-les m
et n
) et deux caractères (appelons-les a
et b
) dans le format d'entrée de votre choix.
Production:
Pour la procédure pas à pas, faites semblant m=2, n=5, a='a', b='b'
.
Votre sortie sera une chaîne construite à partir de vos quatre entrées. Appelons la chaîne result
, avec valeur ""
. D'abord, concaténer a
sur les result
m
temps, donc concaténer a
sur les result
2
temps. result
est maintenant égal à aa
. En second lieu , concatenate b
sur les result
m
temps, donc concaténer b
sur les result
2
temps. result
est maintenant égal à aabb
. Enfin, si le résultat est déjà plus long que n
, tronquez result
pour qu'il ait une longueur n
. Sinon, continuez d'alterner avec les m
longueurs de a
et b
jusqu'à ce que la result
longueur ait n
. La finale result
est aabba
, qui a de la longueur 5
.
Cas de test:
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
Comme tout le monde le sait, le moindre dirigera le monde, donc les plus petits programmes, en octets, gagneront! :)
la source
m=2,n=10,a=A,b=B
Réponses:
Python , 32 octets
Essayez-le en ligne!
la source
f=
pour -2 octets.f=
dans la section d'en-tête de TIO, vous n'avez donc pas besoin de le supprimer manuellement. TIO(a*m+b*m)
->(a+b)*m
: cela ne fonctionne pas.MATL , 5 octets
Les entrées sont une chaîne avec les deux caractères, puis
m
, alorsn
.Essayez-le en ligne!
Explication
la source
Haskell,
4440 octetsEssayez-le en ligne!
la source
Ruby, 29 caractères
Exemple d'exécution:
Essayez-le en ligne!
la source
Japt , 10 octets
Essayez d'abord d'utiliser une langue de golf. Essayez-le en ligne!
Explication
la source
VîWpU +XpU
aussi le faire , mais les deux font la même chose.Vî
est parfait pour ce défi.05AB1E , 5 octets
Essayez-le en ligne!
Explication
la source
Gelée ,
64 octetsEssayez-le en ligne!
Merci à Jonathan Allan pour un meilleur format d'entrée (-2).
la source
V , 13 octets
Essayez-le en ligne!
a
etb
sont prises sur des lignes distinctes dans l'entrée,m
etn
sont prises comme argument, inversées (toutn
comme le premier argument etm
le deuxième)Explication
la source
Haskell ,
363529 octetsEncore une autre solution Haskell (attend les caractères donnés sous forme de liste):
Essayez-le en ligne!
Merci @Laikoni pour -1 octet.
la source
(m#n)a b=
.R ,
4139 octetsUne fonction anonyme; imprime le résultat sur stdout. Prend les personnages comme vecteur
d=c(a,b)
.gl
génère des facteurs (entiers) de (dans ce cas) des2
niveaux de longueur de coursem
avec la longueur totalen
!cat
les concatène et les imprime sous forme de chaîne.Essayez-le en ligne!
la source
function(d,m,n)rep(d,e=m,l=n)
serait un argument valable.rep
un vecteur de caractères plutôt qu'une seule chaîneJavascript, 55 octets
Exemple d'extrait de code:
la source
Javascript, 53 octets
la source
Décortiquer , 3 octets
Port direct de ma réponse Haskell, sauf que l'ordre des arguments est différent:
Essayez-le en ligne!
la source
Haskell ,
4843 octetsEssayez-le en ligne!
la source
QBIC ,
3727 octetsExplication
Tentative précédente:
la source
PHP> = 7.1, 77 octets
PHP Sandbox Online
la source
Java (OpenJDK 8) , 75 octets
Essayez-le en ligne!
la source
Cubix ,
6358 octetsEssayez-le en ligne!
regarder l'interprète
Prend une entrée comme
ab*m*n
où le*
peut être n'importe quel caractère non numérique.Version du cube:
i|is
: lisez les caractères et échangez-les (donca
c'est en haut)I:q
: lirem
, copier et pousser vers le bas (la pile est maintenantm,b,a,m
))
: décrémenter?
: tourner à droite si positif, aller tout droit si zéro (doublonsa
)s:rur(/w
: swap, dup, déplacerm-i
vers le haut de la pile, décrémenterm-i
B
: pile inverse (qui a maintenant desm
copies dea
:a... b m
)n
: nierm
(afin que nous puissions utiliser?
pour tourner à gauche))
: incrément?
: aller tout droit si zéro, tourner à gauche si négatifb
)s:r\/rw)\
essentiellement la même que la branche positive mais avec incrément et virages à gauche.>v;
: sortez la0
pile (ressemblea...b...
)/B
: inverser la pileI
: lisn
s
: permuter la boucle d'impression:oq
: imprimer et pousser vers le bas de la pile ressemble maintenant à:ab...a...n
(
décrémentern
?
: tourner à droite si positif, aller tout droit si zéro/su
échange le haut de la pile et continue la boucle/
reflète vers le bas et le code évalué estIru@
;@
termine le programme.la source
Fusain , 10 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code et inclut le quatrième exemple. (Malheureusement, le deverbosifer ne supprimera pas le séparateur si j'en ajoute un avant le dernier
InputNumber()
.)la source
Mathematica, 61 octets
contribution
la source
Mathematica, 44 octets
Explication
est le caractère à usage privé de trois octetsU+F3C7
, représentant l'\[Transpose]
opérateur postfix dans Mathematica. Aucun lien TIO car Mathics ne prend pas en charge
,\[Transpose]
a la mauvaise priorité d'opérateur, le deuxième argument deTable
doit être une liste et, surtout,StringPadRight
n'est pas implémenté.la source
APL (Dyalog) , 5 octets
Essayez-le en ligne!
Prend les deux caractères dans une chaîne comme première entrée, suivi
m
puisn
.Explication
Laissez l'entrée par exemple être
'ab'
,2
,10
.la source
Pyth , 13 octets
Essayez-le en ligne!
Explication
la source
k, 10 octets
Essayez-le en ligne!
la source
Puce , 588 octets
Essayez-le en ligne!
Prend l'entrée comme une chaîne de 4 caractères. Les deux premiers sont les caractères a et b , suivis de la valeur d'octet m , puis de la valeur d'octet n . Par exemple, le TIO comprend une entrée
ab<tab>2
, cela correspond à «a», «b», 9, 50 (puisque les codes pour<tab>
et2
sont 9 et 50.Comment?
Cette réponse est un peu géante, mais voici les points saillants:
Le bloc supérieur gauche, avec les minuscules
a
-h
, est le mécanisme de stockage des caractères a et b , une ligne par bit. Au fond, avec lev~v
etmz
est le mécanisme de commutation, pour permuter entre les deux.Au milieu se trouve une colonne avec un tas de
~#M
. Cela se lit en m et stocke son négatif. Le grand triangle à droite n'est que des fils pour amener cette valeur dans l'accumulateur supérieur.Le bloc supérieur droit est l'accumulateur pour m . Il incrémente chaque cycle (à partir de -m ) jusqu'à ce qu'il atteigne zéro. Lorsque cela se produit, le caractère de sortie est échangé et le comptage redémarre à partir de -m .
Pendant ce temps, il y a le bloc inférieur, qui est l' accumulateur n . Puisque n n'est lu qu'une seule fois, nous n'avons pas besoin d'une banque de mémoire (
M
etm
) pour stocker cette valeur. Nous le nions simplement et commençons à compter. Lorsque cette valeur atteint zéro, tout le shebang est simplement terminé.Tous les autres Guff est des retards (
Z
etz
), le câblage (-
,|
, ...), et d' autres miscellany.la source