comp.lang.ada
 help / color / mirror / Atom feed
From: Jon S Anthony <jsa@synquiry.com>
Subject: Re: RECURSION PROBLEM
Date: 1997/11/04
Date: 1997-11-04T00:00:00+00:00	[thread overview]
Message-ID: <ufwwiov9dl.fsf@synquiry.com> (raw)
In-Reply-To: 34558FD4.2781@db.erau.edu


Robert Byrne <byrner@db.erau.edu> writes:

> 
> I need to use recursion to display all pairs (combinations) of
> characters from a set of characters read from a file given on the

I note that you say _combinations_, not permutations.  The following
is a simple solution in Lisp.  Translate into Ada and you are done...

(defun combos (letters i)
  (labels ((a-set (cur letters next)
		  (if (= next (length letters)) nil
		    (cons (cons cur (aref letters next))
			  (a-set cur letters (1+ next))))))
	  (if (= i (length letters))
	      nil
	    (append
	     (a-set (aref letters i) letters (1+ i))
	     (combos letters (1+ i))))))

COMBOS
* (combos "abcdef12345" 0)

((#\a . #\b) (#\a . #\c) (#\a . #\d) (#\a . #\e) (#\a . #\f) (#\a . #\1)
 (#\a . #\2) (#\a . #\3) (#\a . #\4) (#\a . #\5) (#\b . #\c) (#\b . #\d)
 (#\b . #\e) (#\b . #\f) (#\b . #\1) (#\b . #\2) (#\b . #\3) (#\b . #\4)
 (#\b . #\5) (#\c . #\d) (#\c . #\e) (#\c . #\f) (#\c . #\1) (#\c . #\2)
 (#\c . #\3) (#\c . #\4) (#\c . #\5) (#\d . #\e) (#\d . #\f) (#\d . #\1)
 (#\d . #\2) (#\d . #\3) (#\d . #\4) (#\d . #\5) (#\e . #\f) (#\e . #\1)
 (#\e . #\2) (#\e . #\3) (#\e . #\4) (#\e . #\5) (#\f . #\1) (#\f . #\2)
 (#\f . #\3) (#\f . #\4) (#\f . #\5) (#\1 . #\2) (#\1 . #\3) (#\1 . #\4)
 (#\1 . #\5) (#\2 . #\3) (#\2 . #\4) (#\2 . #\5) (#\3 . #\4) (#\3 . #\5)
 (#\4 . #\5))
*

/Jon

-- 
Jon Anthony
Synquiry Technologies, Ltd., Belmont, MA 02178, 617.484.3383
"Nightmares - Ha!  The way my life's been going lately,
 Who'd notice?"  -- Londo Mollari




      reply	other threads:[~1997-11-04  0:00 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1997-10-28  0:00 RECURSION PROBLEM Robert Byrne
1997-11-04  0:00 ` Jon S Anthony [this message]
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox