1. Reverse

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

new topic     » topic index » view message » categorize

2. Reverse

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---

new topic     » goto parent     » topic index » view message » categorize

3. Reverse

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---

new topic     » goto parent     » topic index » view message » categorize

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/

new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu