rc-list - mailing list for the rc(1) shell
 help / color / mirror / Atom feed
From: "David J. Fiander" <david@golem.uucp>
To: Chris Siebenmann <cks@hawkwind.utcs.toronto.edu>
Cc: rc@archone.tamu.edu
Subject: Re: how would you do this in rc
Date: Fri, 20 Dec 1991 06:21:09 -0600	[thread overview]
Message-ID: <7071.693231669@golem.UUCP> (raw)
In-Reply-To: Your message of "Thu, 19 Dec 91 19:09:33 EST." <91Dec19.190941est.2742@hawkwind.utcs.toronto.edu>

>From: 	Chris Siebenmann <hawkwind.utcs.toronto.edu!cks@rutgers.uucp>
> You have a list l and a string s. What's the most efficient way to not
>merely find out if s exists in l, but to find its index in l if it does?
>Is there an efficient method to do this? If there isn't, should there be? :)
>[probably not; rc is not a general programming language, after all.]

I'd go with the obvious implementation, unless it is a
bottleneck.

	i = 0
	if (~ $s $l) {
		# if s is a member of l, then s matches an elt.
		i = 1 while (!~ $s $l($i)) {
			i = `{expr $i + 1}
		}
	}

At the end of the loop (i == 0) if s is not a member,
otherwise, i == the offset.  If you wanted to avoid the expr
overhead, and use byron's 'break' feature, then you could say

	for (i in `{seq $#l}) ...

- David


  parent reply	other threads:[~1991-12-20 15:12 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1991-12-20  0:09 Chris Siebenmann
1991-12-20  1:11 ` DaviD W. Sanderson
1991-12-20 12:21 ` David J. Fiander [this message]
1991-12-20  1:27 Tom Culliton x2278

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=7071.693231669@golem.UUCP \
    --to=david@golem.uucp \
    --cc=cks@hawkwind.utcs.toronto.edu \
    --cc=rc@archone.tamu.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).