Bei 2 Eingaben, einer Zeichenfolge und einer Dezimalzahl, wird die mit dieser Zahl multiplizierte Zeichenfolge ausgegeben.
Der Haken ist, dass die Zahl ein Float oder eine Ganzzahl sein kann.
Sie sollten die Zeichenfolge floor(n)
Zeit und dann die ersten floor((n-floor(n))*len(string))
Buchstaben erneut ausgeben .
Weitere Hinweise:
- Die Eingabe ist nicht immer ein Float, sondern möglicherweise ein Int. 1,5, 1 und 1,0 sind also alle möglich. Es wird jedoch immer in der Basis 10 sein, und wenn Sie eine Ausnahme wünschen, kommentieren Sie dies bitte.
- Die Zeichenfolge kann Leerzeichen, Anführungszeichen und andere Zeichen enthalten. Keine Zeilenumbrüche oder Steuerzeichen.
- Es gibt keine eingebauten Funktionen für die direkte Wiederholung von Strings. Auch die Multiplikation von Strings wie Python
'a'*5
ist nicht erlaubt. Das Hinzufügen von Zeichenfolgen ist jedoch zulässig.
Testfälle:
Das Komma und das Leerzeichen trennen die Eingaben.
test case, 1 -> test case
case, 2.5 -> casecaseca
(will add more later), 0.3333 -> (will(space)
cats >= dogs, 0.5 -> cats >
Schlussbemerkung:
Ich sehe viele Antworten, die eingebaute Zeichenkettenmultiplikations- oder Wiederholungsfunktionen verwenden. Das ist nicht erlaubt. Die Antwort von @ VTC ist jedoch gültig, da sie nicht den String, sondern nur die Float-Eingabe multipliziert. Die endgültige Regel lautet also: Wenn die Zeichenfolge direkt multipliziert wird, können Sie dies nicht tun.
direct
wiederholten Zeichenfolgen zu entfernen (was bedeutet das?). Aber alles in allem hast du rechtjoin "", ("case") x 2
vs"case" x 2
, in Perl 6[~] "case" xx 2
vs das gleiche"case" x 2
Antworten:
Gelee, 5 Bytes
Verwendet keine eingebaute Wiederholung. Probieren Sie es online!
Wie es funktioniert
quelle
Java 7, 89
Nimmt char [] und float und gibt sie an STDOUT aus. Grundschleifen.
quelle
Pyth,
981 Byte dank Pietu1998 gespeichert
Dies nimmt
floor(n * len(string))
Buchstaben aus dem String unter Verwendung einer zyklischen Indizierung. Ich glaube, das entspricht immer der angegebenen Formel.Test Suite
quelle
s
.range
ist so lustig.JavaScript (ES6), 50 Byte
Bearbeiten Sie 2 Bytes mehr, um die Definition der Funktion aufzunehmen
f
. 1 Byte weniger mit dem Tipp von @manatwork. Hinweis: Bei Verwendung von haben~
wir mehr Iterationen als erforderlich, dies ist jedoch Codegolf und es werden sogar 1 Byte gezähltPRÜFUNG
quelle
n>0
im Code vs.n>1
im Testfall.~n
? (Wirklich nur eine Frage. Versuchte nur die angegebenen Testfälle.)f
in deiner Lösung definiert? Vermisst du nichtf=
?Vitsy, 9 Bytes
Erwartet, dass das Wort ein Argument ist und die Zahl mit STDIN multipliziert wird.
Probieren Sie es online!
quelle
Grab all string argument input.
und dannParse STDIN.
nochmal?CJam, 10 Bytes
Der String wird in der ersten Zeile von STDIN angegeben, der Float in der zweiten.
Teste es hier.
Erläuterung
quelle
Python 2, 71 Bytes
Probieren Sie es hier aus!
Erstellt ein unbenanntes Lambda, das den String als erstes Argument und den Gleitkomma als zweites Argument verwendet. Gibt die wiederholte Zeichenfolge zurück.
Dies könnte 46 sein, wenn die eingebauten Zeichenfolgenwiederholungen zulässig sind :(
quelle
Ruby,
4948 ZeichenProbelauf:
quelle
Perl 6 ,
46 4139 BytesPerl 6 verfügt sowohl über einen String-Wiederholungsoperator
x
als auch über einen Listen-Wiederholungsoperatorxx
.Da die Regeln die Wiederholung von Zeichenfolgen nicht zulassen, wiederholen wir sie, als ob es sich stattdessen um eine einzelne Elementliste handeln würde. Dann wird die Liste zusammengefügt und ein Teil davon wird zurückgegeben.
Verwendung:
quelle
substr ([~] $^a xx$^b+1),0,$a.comb*$b}
spart zwei Zeichenosascript, 173 bytes
Oh meine Tage, das ist schlimmer als ich dachte.
Gibt den Wert des Strings zurück, eine weitere Antwort unter Verwendung der zyklischen Indizierung. Erwartet Eingabe als
"string" "repetitions"
.quelle
Oh my days, this is worse than I thought.
So wahr, so wahr.set x,y to a's items
?Haskell, 44 Bytes
Anwendungsbeispiel:
"(will add more later)" # 0.3333
->"(will "
.So funktioniert es:
c
Verkettet unendliche Kopien des Stringsx
. Es verhält sich wie das eingebautecycle
.sum[1|a<-s]
ist eine benutzerdefinierte Längenfunktion, die mit dem strengen Typsystem von Haskell arbeitet, da es ein zurückgibtDouble
(das eingebautelength
gibt ein zurück,Int
das nicht mit multipliziert werden kannn
).#
nimmtfloor (n * length(s))
Zeichen aus der zyklischen Zeichenfolges
.quelle
PHP 5,
96879 Bytes gespart dank @manatwork
Ziemlich geradlinige Antwort in einer Schleife.
Ungolfed
quelle
@
<?for($i=$z=0;$i++<floor(strlen($a=$argv[1])*$argv[2]);$z++)echo$a[$z]?:$a[$z=0];
error_reporting
So bevorzugen wir für unsere Lösungen auf Standardkonfiguration zu stützen und nicht über Hinweise und andere gute Gewohnheiten zu pflegen. Ignorieren Sie beispielsweise die Initialisierung von$z
und$i
.R, 59 Bytes
Als unbenannte Funktion. Dies verwendet charToRaw, um den String in einen Vektor von Raws aufzuteilen. Dies wird in ein Array der Länge * l gefüllt, zurück in char konvertiert und ausgegeben.
Ich wollte Strsplit verwenden, aber es wurde länger.
Prüfung
quelle
Perl, 51 + 3 = 54 Bytes
Benötigt:
-n
,-l
und-M5.010
|-E
:Erläuterung:
quelle
c (Präprozessor-Makro), 71
Hier ist es nicht viel schwierig. Ich muss nur sicherstellen, dass vor dem Vergleich mit "" auf ""
l*m
geworfen wird .int
j
Probieren Sie es online aus.
quelle
Oracle SQL 11.2,
154152 BytesNicht golfen
Ich bin den rekursiven Weg gegangen, wobei die Initialisierung select den Dezimalteil berücksichtigt hat.
2 Bytes gespart dank @MickyT
quelle
FLOOR(FLOOR((:2-FLOOR(:2))*LENGTH(:1)))
durchMOD(:2,1)*LENGTH(:1)
LPAD
eher alsSUBSTR
Im Ernst, 24 Bytes
Probieren Sie es online!
Erläuterung:
quelle
Pyth, 9 Bytes
Im Grunde nur zu tun
quelle