1. Reverse
- Posted by Albert Brauneis <Dajawu36 at AOL.COM>
Nov 28, 1998
-
Last edited Nov 29, 1998
Hi,
I wasn't really looking at the examples you all left but I made my own. I am
sure somebody already gave it. I don't know how to time it so I don't know if
it is fast. Here it is:
function reverse(sequence rev)
sequence back
integer len
len = length(rev)
back = ""
for junk = len to 1 by -1 do
back = append(back,rev[junk])
end for
return back
end function
sequence test
test = reverse("Albert")
printf(1,"It is %s", {test})
Thanks,
Albert
2. Reverse
- Posted by Albert Brauneis <Dajawu36 at AOL.COM>
Nov 28, 1998
-
Last edited Nov 29, 1998
Ok here is my code for reverse, trimr (right trim), triml (left trim), trim
(both sides). Can somebody either tell me the speed on this or tell me how to
time it. I think I can time it with time() but not to sure:
---Start of coolfunc.ex---
function reverse(sequence rev)
sequence back
integer len
len = length(rev)
back = ""
for junk = len to 1 by -1 do
back = append(back,rev[junk])
end for
return back
end function
function triml(sequence trim)
integer len
len = length(trim)
for junk = 1 to len do
if compare(trim[junk],' ') = 1 then
return trim[junk..len]
end if
end for
end function
function trimr(sequence trim)
integer len
len = length(trim)
for junk = len to 1 by -1 do
if compare(trim[junk],' ') = 1 then
return trim[1..junk]
end if
end for
end function
function trim(sequence trim)
return trimr(triml(trim))
end function
sequence test
test = " Albert "
printf(1,"Before trim ::%s::", {test})
test = trim(test)
printf(1,"\nAfter trim ::%s::", {test})
printf(1,"\nBefore reverse %s", {test})
test = reverse(test)
printf(1,"\nAfter reverse %s", {test})
---End of coolfunc.ex---
3. Reverse
- Posted by Albert Brauneis <Dajawu36 at AOL.COM>
Nov 28, 1998
-
Last edited Nov 29, 1998
Sorry I am posting alot but I changed the append line in my reverse function
and it did speed up a little. Here is the new code:
---start coolfunc.ex---
function reverse(sequence rev)
sequence back
integer len
len = length(rev)
back = ""
for junk = len to 1 by -1 do
back = back & rev[junk]
end for
return back
end function
function triml(sequence trim)
integer len
len = length(trim)
for junk = 1 to len do
if compare(trim[junk],' ') = 1 then
return trim[junk..len]
end if
end for
end function
function trimr(sequence trim)
integer len
len = length(trim)
for junk = len to 1 by -1 do
if compare(trim[junk],' ') = 1 then
return trim[1..junk]
end if
end for
end function
function trim(sequence trim)
return trimr(triml(trim))
end function
sequence test
test = " Albert "
printf(1,"Before trim ::%s::", {test})
test = trim(test)
printf(1,"\nAfter trim ::%s::", {test})
printf(1,"\nBefore reverse %s", {test})
test = reverse(test)
printf(1,"\nAfter reverse %s", {test})
---end coolfunc.ex---
4. Reverse
Rob and Hawke,
Speed isn't every thing. Remember what Rob said earlier. If the sequence is
big you are going to use a lot of memory forcing Euphoria to use virtual
memory which is much slower. And While Rob's latest one is faster than is
other one it still needs that memory. You will have a second sequence of
pointers. 24 + 4 * length(s) bytes of memory wasted.
Actually Rob since Euphoria will only allocate pointer, unless it is a
sequence of integers then you would probablely be better of writing it in C
and do the pointer copying that way.
Now play nicely.
--------------------
Sincerely,
Mathew Hounsell
Mat.Hounsell at Excite.Com
Brain Washing : "Strings are good. Strings are your friends. You want
strings."
_______________________________________________________
Get your free, private e-mail at http://mail.excite.com/