Étant donné 2 entrées, une chaîne et un nombre décimal, sortez la chaîne multipliée par ce nombre.
Le hic, c'est que le nombre peut être un flottant ou un entier.
Vous devez sortir l' floor(n)
heure de la chaîne , puis à nouveau les premières floor((n-floor(n))*len(string))
lettres.
Autres notes:
- L'entrée ne sera pas toujours un flottant, elle peut être un entier. Donc, 1.5, 1 et 1.0 sont tous possibles. Cependant, il sera toujours en base 10, et si vous souhaitez une exception, veuillez commenter.
- L'entrée de chaîne peut contenir des espaces, des guillemets et d'autres caractères. Pas de nouvelles lignes ni de caractères de contrôle.
- Aucune fonction intégrée pour la répétition directe de chaînes, même la multiplication de chaînes comme le python
'a'*5
n'est autorisée. Cependant, l' ajout de chaînes est autorisé.
Cas de test:
La virgule et l'espace séparent les entrées.
test case, 1 -> test case
case, 2.5 -> casecaseca
(will add more later), 0.3333 -> (will(space)
cats >= dogs, 0.5 -> cats >
Note finale:
Je vois beaucoup de réponses qui utilisent des fonctions de multiplication ou de répétition de chaînes intégrées. Ce n'est pas permis. La réponse de @ VTC est cependant valide, car elle ne multiplie pas la chaîne, seule l'entrée flottante. La règle définitive est donc la suivante: s'il multiplie directement la chaîne, vous ne pouvez pas le faire.
direct
la répétition de la chaîne (qu'est-ce que cela signifie?). Mais dans l'ensemble, vous avez raisonjoin "", ("case") x 2
vs"case" x 2
, en Perl 6[~] "case" xx 2
vs le même"case" x 2
Réponses:
Gelée, 5 octets
N'utilise pas de répétition intégrée. Essayez-le en ligne!
Comment ça fonctionne
la source
Java 7, 89
prend char [] et flotte et sort vers STDOUT. boucle de base.
la source
Pyth,
981 octet enregistré grâce à Pietu1998
Cela prend des
floor(n * len(string))
lettres de la chaîne, en utilisant l'indexation cyclique. Je crois que cela équivaut toujours à la formule donnée.Suite de tests
la source
s
.range
est drôle comme ça.JavaScript (ES6), 50 octets
Modifiez 2 octets de plus pour inclure la définition de la fonction
f
. 1 octet de moins en utilisant la pointe de @manatwork. Remarque: en utilisant,~
nous avons plus d'itérations que nécessaire, mais c'est le code golf et même 1 octet.TESTER
la source
n>0
dans le code vsn>1
dans le cas de test.~n
? (Vraiment juste une question.f
défini dans votre solution? Vous ne manquez pasf=
?Vitsy, 9 octets
Attend le mot comme argument et le nombre à multiplier par STDIN.
Essayez-le en ligne!
la source
Grab all string argument input.
etParse STDIN.
encore une fois?CJam, 10 octets
La chaîne est fournie sur la première ligne de STDIN, le flotteur sur la seconde.
Testez-le ici.
Explication
la source
Python 2, 71 octets
Essayez-le ici!
Crée un lambda sans nom qui prend la chaîne comme premier argument et le flottant comme deuxième. Renvoie la chaîne répétée.
Cela pourrait être 46 si les commandes de répétition de chaîne étaient autorisées :(
la source
Ruby,
4948 caractèresExemple d'exécution:
la source
Perl 6 ,
46 4139 octetsPerl 6 possède à la fois un opérateur de répétition de chaîne
x
et un opérateur de répétition de listexx
.Étant donné que les règles interdisent la répétition de chaînes, nous la répétons comme s'il s'agissait d'une seule liste d'éléments à la place. Ensuite, la liste est concaténée ensemble, et une sous-chaîne de celle-ci est renvoyée.
Usage:
la source
substr ([~] $^a xx$^b+1),0,$a.comb*$b}
sauve deux caractèresosascript, 173 octets
Oh mes jours, c'est pire que ce que je pensais.
Renvoie la valeur de la chaîne, une autre réponse utilisant l'indexation cyclique. Attend l'entrée en tant que
"string" "repetitions"
.la source
Oh my days, this is worse than I thought.
Si vrai, si vrai.set x,y to a's items
?Haskell, 44 octets
Exemple d'utilisation:
"(will add more later)" # 0.3333
->"(will "
.Comment ça marche:
c
concatène des copies infinies de la chaînex
. Il se comporte comme le intégrécycle
.sum[1|a<-s]
est une fonction de longueur personnalisée qui fonctionne avec le système de type strict de Haskell car elle renvoie unDouble
(le intégrélength
renvoie unInt
qui ne peut pas être multiplié avecn
).#
prend desfloor (n * length(s))
caractères de la chaîne cyclées
.la source
PHP 5,
96879 octets économisés grâce à @manatwork
Réponse en boucle assez simple.
Non golfé
la source
@
trop:<?for($i=$z=0;$i++<floor(strlen($a=$argv[1])*$argv[2]);$z++)echo$a[$z]?:$a[$z=0];
error_reporting
Nous préférons donc baser nos solutions sur la configuration par défaut et ne pas nous soucier des notifications et autres bonnes habitudes. Par exemple, ignorer l'initialisation de$z
et$i
.R, 59 octets
En tant que fonction sans nom. Ceci utilise charToRaw pour diviser la chaîne en un vecteur de raws. Ceci est rempli dans un tableau de longueur * l, reconverti en char et en sortie.
J'allais utiliser strsplit, mais cela a fini par être plus long.
Tester
la source
Perl, 51 + 3 = 54 octets
Nécessite:
-n
,-l
et-M5.010
|-E
:Explication:
la source
c (macro préprocesseur), 71
Pas très compliqué ici. Il suffit de s'assurer que le contenu
l*m
est converti en unint
avant de le comparerj
.Essayez-le en ligne.
la source
Oracle SQL 11.2,
154152 octetsNon golfé
J'ai choisi la voie récursive, la sélection d'initialisation prenant en charge la partie décimale.
Sauvegardé 2 octets grâce à @MickyT
la source
FLOOR(FLOOR((:2-FLOOR(:2))*LENGTH(:1)))
parMOD(:2,1)*LENGTH(:1)
LPAD
plutôt queSUBSTR
Sérieusement, 24 octets
Essayez-le en ligne!
Explication:
la source
Pyth, 9 octets
Fondamentalement, juste faire
la source