1. wildcard usage

got a bit of a thing that has been driving me slowly insane since I first
started using EU.  I have tried every permutation of code to create a
'wildcard' method to substitute for many lines of branching to strings of
data; question: is it possible to turn this...?

       --string 1
       a1={"cat","dog","mouse"}
       --string 2
       a2={"chicken","duck","cow"}

       input=x  string_to_fetch="a" & x
       --where string_to_fetch is executable in the same way
       --that either string_to_fetch=a1 or string_to_fetch=a2 is

-- I know that this isn't legal code, but perhaps you get the idea.  I am
polishing up some of the code of a huge database written in EU and this
would be extremely useful if it is possible to do such a thing.  I could do
it on my old Amiga when using AMOS Basic.  Any ideas that I haven't thought
of yet?, any thing that works?, any help and suggestions for this will be
mightly appreciated.  Note: I don't wish to hear any lecturing about this
bringing on the nightmare of 'speghetti-code'... if it is doable it can be
usable.
thanks Norm

new topic     » topic index » view message » categorize

2. Re: wildcard usage

On Sat, 10 Apr 1999 13:37:26 -0400, Norm Goundry <bonk1000 at HOTMAIL.COM>
wrote:

>got a bit of a thing that has been driving me slowly insane since I first
>started using EU.  I have tried every permutation of code to create a
>'wildcard' method to substitute for many lines of branching to strings of
>data; question: is it possible to turn this...?
>
>       --string 1
>       a1={"cat","dog","mouse"}
>       --string 2
>       a2={"chicken","duck","cow"}
>
>       input=x  string_to_fetch="a" & x
>       --where string_to_fetch is executable in the same way
>       --that either string_to_fetch=a1 or string_to_fetch=a2 is
>
>-- I know that this isn't legal code, but perhaps you get the idea.  I am
>polishing up some of the code of a huge database written in EU and this
>would be extremely useful if it is possible to do such a thing.  I could do
>it on my old Amiga when using AMOS Basic.  Any ideas that I haven't thought
>of yet?, any thing that works?, any help and suggestions for this will be
>mightly appreciated.  Note: I don't wish to hear any lecturing about this
>bringing on the nightmare of 'speghetti-code'... if it is doable it can be
>usable.
>thanks Norm


I'm not really sure what you are trying to do here. but from what I see.
You are wanting to use match().

something like.
function fetch_strings(sequence search_for, sequence search_in)
  integer found
  sequence temp

  temp = {}
  for A = 1 to length(search_in) do
    found = match(search_for, search_in[A])
    if found then
      temp = append(temp, search_in[A])
    end if
  end for

  return temp
end function

sequence a1, a2, f1, f2, f3

a1 = {"cat", "bird", "rabbit"}
a2 = {"frog", "dog", "snake"}

f1 = fetch_strings("a", a1)
--f1 now equals {"cat", "rabbit"}
f2 = fetch_strings("og", a2)
--f2 now equals {"frog", "dog"}
f3 = fetch_strings("a", a2)
--f3 now equals {"snake"}

I hope this helps.

      Lucius L. Hilley III
http://www.cdc.net/~lhilley  -- a member of the Euphoria webring.

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

3. Re: wildcard usage

>got a bit of a thing that has been driving me slowly insane since I first
>started using EU.  I have tried every permutation of code to create a
'>wildcard' method to substitute for many lines of branching to strings of
>data; question: is it possible to turn this...?

>       --string 1
>      a1={"cat","dog","mouse"}
>       --string 2
>       a2={"chicken","duck","cow"}

>       input=x  string_to_fetch="a" & x
>       --where string_to_fetch is executable in the same way
>       --that either string_to_fetch=a1 or string_to_fetch=a2 is

     If I guess correctly, you're wanting the user to be able to specify a
variable by name.  The only ways I know of to do that is to store the name as
part of the variable, or to use a parallel sequence:


       strings  = { { "a1", "cat","dog","mouse"},            --string 1
                        { "a2", "chicken","duck","cow"} }       --string 2

       x = input()
       string_to_fetch = {}
       for c = 1 to length( strings ) do
           if not compare( strings[c][1],  "a" & x  ) then
              string_to_fetch = strings[c][2..length( strings[c] )]
              exit  --for loop
           end if
       end for
       --if x was 1,  then string_to_fetch would now be {"cat","dog","mouse"}
       if not compare( string_to_fetch, {} ) then
           --user entered number of nonexistant string
       end if

Note that if you use real names (rather than a letter+number combination),
that method makes more sense, if you just need a number you could just use
the sequence subscript (after checking that it exists).

The other method:
       strings  = { { "cat","dog","mouse" },            --string 1
                        { "chicken","duck","cow" } }       --string 2

       names = { "a1", "a2" }

       x = input()
       string_to_fetch = {}
       temp_int = find( "a" & x, names )
       if temp_int then
          string_to_fetch = strings[temp_int]
       else
           --user entered number of nonexistant string
       end if
       --if x was 1,  then string_to_fetch would now be {"cat","dog","mouse"}

Of course, this is more impressive when using real names too.  ( "pets" and
"livestock" instead of "a1" and "a2", maybe...)

Either way requires storing all the variables in question in one big
sequence.  This is one of the things that dynamic sequences are especially
good for.

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

4. Re: wildcard usage

On Sat, 10 Apr 1999, Scott Murray wrote:

] >got a bit of a thing that has been driving me slowly insane since I first
] >started using EU.  I have tried every permutation of code to create a
] '>wildcard' method to substitute for many lines of branching to strings of
] >data; question: is it possible to turn this...?
]
] >       --string 1
] >      a1={"cat","dog","mouse"}
] >       --string 2
] >       a2={"chicken","duck","cow"}
]
] >       input=x  string_to_fetch="a" & x
] >       --where string_to_fetch is executable in the same way
] >       --that either string_to_fetch=a1 or string_to_fetch=a2 is
]
] If I guess correctly, you're wanting the user to be able to specify a
] variable by name.  The only ways I know of to do that is to store the
] name as part of the variable, or to use a parallel sequence:
]
]        strings  = { { "a1", "cat",    "dog", "mouse"}, --string 1
]                     { "a2", "chicken","duck","cow"  }  --string 2
]                   }

Or the simplest solution of all:

sequence a
integer x
a = repeat({},2)

a[1] = {"cat",     "dog",  "mouse"}
a[2] = {"chicken", "duck", "cow"  }

x = 0

while x < 1 or x > 2 do
    x = input(x, "Which set of animals? 1 = House, 2 = Farm: ")
    -- one of my many input() ideas ;)
end while

animals = a[x]

--
Carl R White -- cyrek- at -bigfoot.com -- http://www.bigfoot.com/~cyrek
 aka Cyrek   --    No hyphens :)    --       Bigfoot URL Alias

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

Search



Quick Links

User menu

Not signed in.

Misc Menu