Biorąc pod uwagę 2 dane wejściowe, ciąg i liczbę dziesiętną, wyprowadza ciąg pomnożony przez tę liczbę.
Połów polega na tym, że liczba może być liczbą zmiennoprzecinkową lub liczbą całkowitą.
Powinieneś wypisać floor(n)
czas łańcucha, a następnie floor((n-floor(n))*len(string))
ponownie pierwsze litery.
Inne notatki:
- Dane wejściowe nie zawsze będą zmiennoprzecinkowe, może być liczbą całkowitą. Tak więc wszystkie 1,5, 1 i 1,0 są możliwe. Zawsze będzie jednak w bazie 10, a jeśli chcesz wyjątek, prosimy o komentarz.
- Dane wejściowe ciągu mogą zawierać białe znaki, cudzysłowy i inne znaki. Jednak nie ma nowych linii ani znaków kontrolnych.
- Żadne wbudowane funkcje bezpośredniego powtarzania ciągów, nawet mnożenie ciągów, takie jak python,
'a'*5
są niedozwolone. Dozwolone jest jednak dodawanie ciągów .
Przypadki testowe:
Przecinek i spacja oddzielają dane wejściowe.
test case, 1 -> test case
case, 2.5 -> casecaseca
(will add more later), 0.3333 -> (will(space)
cats >= dogs, 0.5 -> cats >
Uwaga końcowa:
Widzę wiele odpowiedzi, które wykorzystują wbudowane funkcje mnożenia lub powtarzania ciągów. To jest nie dozwolone. Odpowiedź @ VTC jest jednak ważna, ponieważ nie zwielokrotnia ciągu, a jedynie dane zmiennoprzecinkowe. Ostateczna zasada brzmi: jeśli bezpośrednio zwielokrotnia ciąg, nie możesz tego zrobić.
direct
ciąg powtarzający się (co to oznacza?). Ale w sumie masz racjęjoin "", ("case") x 2
vs"case" x 2
, w Perlu 6[~] "case" xx 2
vs to samo"case" x 2
Odpowiedzi:
Galaretka, 5 bajtów
Nie używa wbudowanego powtarzania. Wypróbuj online!
Jak to działa
źródło
Java 7, 89
pobiera char [] i float i wypisuje do STDOUT. podstawowe zapętlenie.
źródło
Pyth
98Zaoszczędzono 1 bajt dzięki Pietu1998
Pobiera
floor(n * len(string))
litery z ciągu, używając cyklicznego indeksowania. Uważam, że zawsze jest to równoważne z podaną formułą.Pakiet testowy
źródło
s
.range
jest taki zabawny.JavaScript (ES6), 50 bajtów
Edytuj jeszcze 2 bajty, aby uwzględnić definicję funkcji
f
. 1 bajt mniej przy użyciu końcówki @manatwork. Uwaga: przy użyciu~
mamy więcej iteracji niż to konieczne, ale jest to kod golfowy, a nawet 1 bajt się liczyTEST
źródło
n>0
w kodzie kontran>1
w przypadku testowym.~n
? (Naprawdę tylko pytanie. Próbowałem tylko podanych przypadków testowych.)f
zdefiniowane w twoim rozwiązaniu? Nie zaginąłeśf=
?Vitsy, 9 bajtów
Oczekuje, że słowo to będzie argumentem, a liczba zostanie pomnożona przez STDIN.
Wypróbuj online!
źródło
Grab all string argument input.
iParse STDIN.
jeszcze raz?CJam, 10 bajtów
Ciąg jest dostarczany w pierwszym wierszu STDIN, liczba zmiennoprzecinkowa w drugim.
Sprawdź to tutaj.
Wyjaśnienie
źródło
Python 2, 71 bajtów
Wypróbuj tutaj!
Tworzy nienazwaną lambda, która przyjmuje ciąg jako pierwszy argument, a zmienną jako drugi. Zwraca ciąg znaków.
Może to być 46, jeśli dozwolone są wbudowane powtórzenia ciągów :(
źródło
Ruby,
4948 znakówPrzykładowy przebieg:
źródło
Perl 6 ,
46 4139 bajtówPerl 6 ma zarówno operator powtarzania łańcucha, jak
x
i operator powtarzania listyxx
.Ponieważ reguły nie zezwalają na powtarzanie ciągów, powtarzamy je tak, jakby to była lista pojedynczych elementów. Następnie lista jest łączona razem i zwracany jest jej podłańcuch.
Stosowanie:
źródło
substr ([~] $^a xx$^b+1),0,$a.comb*$b}
oszczędza dwa znakiosascript, 173 bajtów
Och, moje dni, to jest gorsze niż myślałem.
Zwraca wartość ciągu, kolejna odpowiedź przy użyciu cyklicznego indeksowania. Oczekuje danych wejściowych jako
"string" "repetitions"
.źródło
Oh my days, this is worse than I thought.
Tak prawdziwe, takie prawdziwe.set x,y to a's items
?Haskell, 44 bajty
Przykład użycia:
"(will add more later)" # 0.3333
->"(will "
.Jak to działa:
c
łączy nieskończone kopie ciągux
. Zachowuje się jak wbudowanycycle
.sum[1|a<-s]
jest funkcją o niestandardowej długości, która działa z systemem ścisłego typu Haskella, ponieważ zwraca aDouble
(wbudowanelength
zwraca an, zInt
którym nie można pomnożyćn
).#
pobierafloor (n * length(s))
znaki z cyklicznego ciągu znakóws
.źródło
PHP 5,
96879 bajtów zapisanych dzięki @manatwork
Dość prosta, zapętlona odpowiedź.
Nie golfił
źródło
@
:<?for($i=$z=0;$i++<floor(strlen($a=$argv[1])*$argv[2]);$z++)echo$a[$z]?:$a[$z=0];
error_reporting
Dlatego wolimy opierać nasze rozwiązania na domyślnej konfiguracji, a nie dbać o powiadomienia i inne dobre nawyki. Na przykład ignorowanie inicjalizacji$z
i$i
.R, 59 bajtów
Jako funkcja bez nazwy. Używa charToRaw do podzielenia łańcucha na wektor raws. Jest to wypełnione do tablicy o długości * l, przekonwertowanej z powrotem na char i wyjście.
Zamierzałem użyć strsplit, ale skończyło się to na dłuższym czasie.
Test
źródło
Perl, 51 + 3 = 54 bajtów
Wymaga:
-n
,-l
i-M5.010
|-E
:Wyjaśnienie:
źródło
c (makro preprocesora), 71
Nie jest to zbyt trudne. Przed porównaniem musisz upewnić się, że
l*m
został on przeniesiony na „an” .int
j
Wypróbuj online.
źródło
Oracle SQL 11.2,
154152 bajtyNie grał w golfa
Poszedłem rekurencyjnie, z wyborem inicjalizacji dbającym o część dziesiętną.
Zaoszczędź 2 bajty dzięki @MickyT
źródło
FLOOR(FLOOR((:2-FLOOR(:2))*LENGTH(:1)))
zMOD(:2,1)*LENGTH(:1)
LPAD
zamiastSUBSTR
Poważnie, 24 bajty
Wypróbuj online!
Wyjaśnienie:
źródło
Pyth, 9 bajtów
Zasadniczo po prostu robię
źródło