Hi Tom
That's why I used foreach to get the position dependent bulls-eyes and
intersect to get the position independent shots. (I hope I understood
the scoring system properly). It would have helped if there wasn't an
error in my code. Here is the revised version:
foreach attempt ans [
if attempt = first target [bulls: bulls + 1]
target: next target
]
shots: shots + length? intersect ans target: head target
Actually, I suspect there may be a better solution using parse.
Regards
Peter
On Tuesday, Apr 25, 2006, at 14:06 Asia/Kuala_Lumpur, Tom Conlin wrote:
>
> Hi Peter,
>
> I had looked at the much cleaner 'intersect as well but rejected it
> because it treats it's arguments as 'sets' in the mathematical sense...
> that is, order does not mater. which I do not think ia appropiate in
> this case
>
>
> Peter Wood wrote:
>> You could use foreach to iterate through one series to find the number
>> of bulls-eyes (but you have to handle the iteration of the other
>> series
>> yourself) and then use intersect of the two series to determine the
>> number of shots:
>>
>> foreach attempt ans [
>> if attempt = first target [bulls: bulls + 1]
>> ans: next ans
>> ]
>>
>> shots: shots + length? intersect head ans target
>>
>> Regards
>>
>> Peter
>>
>> On Tuesday, Apr 25, 2006, at 13:03 Asia/Kuala_Lumpur, Rosemary de Dear
>> wrote:
>>
>>
>>> Hello Rebol-Org,
>>>
>>> I am having a problem trying to "shrink" some code. These are the
>>> initial=
>>> =20
>>> values -
>>>
>>> random/seed now
>>> digits: [1 2 3 4 5 6 7 8 9 0]
>>> target: copy []
>>>
>>> ;;; then target becomes a fairly random 4-digit number
>>> target: to-string random/secure digits
>>> remove/part target 6
>>>
>>> I want to compare the target with the user's answer, but I can't make
>>> a =20
>>> for or repeat loop
>>> work
>>> because I get invalid path errors. Even though it returns approptiate
>>> =20
>>> results, what follows
>>> is
>>> obviously inefficient so I would be very glad to know the way to make
>>> it =
>>> =20
>>> leaner.
>>>
>>> Regards, Rosemary
>>>
>>>
>>> get-answer: does [
>>> ans: to-string num/text
>>> answer: copy []
>>> bulls: shots: 0
>>>
>>> if find target ans/1 [
>>> either ans/1 =3D=3D target/1
>>> [bulls: bulls + 1] [shots: shots + 1]]
>>>
>>> if find target ans/2 [
>>> either ans/2 =3D=3D target/2
>>> [bulls: bulls + 1][shots: shots + 1]]
>>>
>>> if find target ans/3 [
>>> either ans/3 =3D=3D target/3
>>> [bulls: bulls + 1][shots: shots + 1]]
>>>
>>> if find target ans/4 [
>>> either ans/4 =3D=3D target/4
>>> [bulls: bulls + 1][shots: shots + 1]]
>>>
>>> tries: tries + 1
>>> either ( tries <=3D 9 )
>>> [answer: rejoin ["0" tries ": " ans " " bulls " " shots]]
>>> [answer: rejoin [tries ": " ans " " bulls " " shots]]
>>> ]
>>>
>>>
>>> --=20
>>>
>>> Formix Australia - www.formix.com.au
>>>
>>> 613 9354 9585
>>> PO Box 261 Nth Carlton Vic 3054
>>> --
>>> To unsubscribe from the list, just send an email to
>>> lists at rebol.com with unsubscribe as the subject.
>>>
>>
>>
>
> --
> ... nice weather eh [EMAIL PROTECTED]
> --
> To unsubscribe from the list, just send an email to
> lists at rebol.com with unsubscribe as the subject.
>
--
To unsubscribe from the list, just send an email to
lists at rebol.com with unsubscribe as the subject.