For Programmers: Free Programming Magazines  


Home > Archive > Scheme > April 2005 > HTDP problem 9.5.5









You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

 

Author HTDP problem 9.5.5
wooks

2005-04-24, 3:57 pm

Develop the function convert. It consumes a list of digits and produces
the corresponding number. The first digit is the least significant, and
so on.

Ok I know the formula for converting 123 would be 1 x 10 expt 0 + 2 x
10 expt 1 + 3 x 10 expt 2.

But I can't conceive a programmatic solution (based on the material
taught up to that point) that does not involve passing the expt to
apply as a parameter.

Jens Axel Søgaard

2005-04-24, 3:57 pm

wooks wrote:

> Develop the function convert. It consumes a list of digits and produces=


> the corresponding number. The first digit is the least significant, and=


> so on.
>=20
> Ok I know the formula for converting 123 would be 1 x 10 expt 0 + 2 x
> 10 expt 1 + 3 x 10 expt 2.
>=20
> But I can't conceive a programmatic solution (based on the material
> taught up to that point) that does not involve passing the expt to
> apply as a parameter.


1234 =3D 4 + 10*( 3 + 10*( 2 + 10*( 1 ) ) )

--=20
Jens Axel S=F8gaard

Jussi Piitulainen

2005-04-24, 3:57 pm

wooks writes:

> Develop the function convert. It consumes a list of digits and
> produces the corresponding number. The first digit is the least
> significant, and so on.
>
> Ok I know the formula for converting 123 would be 1 x 10 expt 0 + 2
> x 10 expt 1 + 3 x 10 expt 2.


A list of digits, least significant first, would be (3 2 1) or maybe
(#\3 #\2 #\1). 123 is already a number, written with most significant
digit first.

> But I can't conceive a programmatic solution (based on the material
> taught up to that point) that does not involve passing the expt to
> apply as a parameter.


This is a simple recursion. To convert (5 1 4 1 3), convert the tail
to 3141, combine with the head to get 31415. Can you see how I got
31415 from 3141 and 5? Can you see what value is needed for () to get
3 out of (3)?

I didn't check HtDP, but very little is needed here. Don't use apply.
If you have fold, work it out with that. It would be from right, with
the above base case and recursion rule as arguments.
Sponsored Links







Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive

Copyright 2008 codecomments.com