From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: fac41,9a0ff0bffdf63657 X-Google-Attributes: gidfac41,public X-Google-Thread: f43e6,9a0ff0bffdf63657 X-Google-Attributes: gidf43e6,public X-Google-Thread: 103376,4b06f8f15f01a568 X-Google-Attributes: gid103376,public X-Google-Thread: 1108a1,9a0ff0bffdf63657 X-Google-Attributes: gid1108a1,public From: James Weirich Subject: Re: Software landmines (loops) Date: 1998/09/01 Message-ID: #1/1 X-Deja-AN: 386764402 Distribution: world Sender: gcweiric@sgipd497 References: <902934874.2099.0.nnrp-10.c246a717@news.demon.co.uk> <6r1glm$bvh$1@nnrp1.dejanews.com> <6r9f8h$jtm$1@nnrp1.dejanews.com> <6renh8$ga7$1@nnrp1.dejanews.com> <6rf59b$2ud$1@nnrp1.dejanews.com> <6rfra4$rul$1@nnrp1.dejanews.com> <35DBDD24.D003404D@calfp.co.uk> <6sbuod$fra$1@hirame.wwa.com> <35f51e53.48044143@ <904556531.666222@miso.it.uq.edu.au> <35EAEC47.164424A7@s054.aone.net.au> <35EBBFAF.DE38C061@s054.aone.net.au> Organization: Structural Dynamics Research Corporation Newsgroups: comp.lang.eiffel,comp.object,comp.software-eng,comp.lang.ada Date: 1998-09-01T00:00:00+00:00 List-Id: Matthew> Let's once again compare the decision tables. If we Matthew> re-write the code, to put it into Matt-like (because Matt Matthew> likes it) syntax: Matthew> equal (l,r: LIST): BOOLEAN is Matthew> require Matthew> l /= Void and r /= Void Matthew> do Matthew> if l.count /= r.count then Matthew> return False Matthew> end Matthew> from Matthew> l.start; r.start Matthew> until Matthew> l.off Matthew> loop Matthew> if l.item /= r.item then Matthew> return False Matthew> end Matthew> l.forth; r.forth Matthew> end Matthew> return True Matthew> end Matthew> This version has only two rules in the decision table for Matthew> the loop predicate: Matthew> 1 2 Matthew> l.off T F Yes, but you are ignoring the fact that there are now two loop exits. If you ask the question "When will the loop terminate?", you must consider all the exits, including the early return. So instead of a single, 2 entry table, you have two 2-entry tables. Combining them into a single table will produce the same 4 entry table as the one you produced for Loryn Jenkins's code. Seems to me the complexity is about equivalent. -- -- Jim Weirich jweirich@one.net http://w3.one.net/~jweirich --------------------------------------------------------------------- -- "A distributed system is one in which I cannot get something done -- because a machine I've never heard of is down." --Leslie Lamport