Repeat a string: Difference between revisions

→‎{{header|PARI/GP}}: editing, adding another version
(→‎{{header|PARI/GP}}: editing, adding another version)
Line 1,176:
 
=={{header|PARI/GP}}==
 
===Version #1. Based on recursion.===
This solution is recursive and unimaginably bad. Slightly less bad versions can be designed, but that's not the point: don't use GP for text processing if you can avoid it. If you really need to, it's easy to create an efficient function in PARI (see [[#C|C]]) and pass that to GP.
<lang parigp>repeat(s,n)={
Line 1,193 ⟶ 1,195:
);
}</lang>
 
===Version #2. Simple loop based.===
{{Works with|PARI/GP|2.7.4 and above}}
 
Basic set of string functions is very handy for presentation purposes. At the same time, it is true that PARI/GP is not an appropriate tool
for the heavy text processing.
 
<lang PARI/GP>
\\ Repeat a string str the specified number of times ntimes and return composed string.
\\ 3/3/2016 aev
srepeat(str,ntimes)={
my(srez=str,nt=ntimes-1);
if(ntimes<1||#str==0,return(""));
if(ntimes==1,return(str));
for(i=1,nt, srez=concat(srez,str));
return(srez);
}
 
{
\\ TESTS
print(" *** Testing srepeat:");
print("1.",srepeat("a",5));
print("2.",srepeat("ab",5));
print("3.",srepeat("c",1));
print("4.|",srepeat("d",0),"|");
print("5.|",srepeat("",5),"|");
print1("6."); for(i=1,10000000, srepeat("e",10));
}
</lang>
 
{{Output}}
<pre>
*** Testing srepeat:
1.aaaaa
2.ababababab
3.c
4.||
5.||
6.
(16:00) gp > ##
*** last result computed in 1min, 2,939 ms.
</pre>
 
=={{header|Pascal}}==
Anonymous user