[plt-scheme] HtDP 26.1.2

From: Matthias Felleisen (matthias at ccs.neu.edu)
Date: Sat Mar 21 19:29:01 EDT 2009

On Mar 21, 2009, at 6:26 PM, dave yrueta wrote:

> Hi all --
>
> Question about HtDP function "merge-neighbors:"
>
> Link to exercise:  http://www.htdp.org/2003-09-26/Book/curriculum-Z- 
> H-33.html#node_sec_26.1
>
> The text describes the contract for "merge-neighbors" as a function
> which "merges pairs of neighboring lists. More specifically, it
> consumes a list of lists (of numbers) and merges neighbors. For
> example,
>
> (equal? (merge-all-neighbors (list (list 2) (list 5) (list 9) (list
> 3)))
>         (list (list 2 5) (list 3 9))) "
>
> In the example, however, it seems that in addition to merging pairs of
> neighboring lists, "merge-neighbors" also sorts each pair of lists in
> ascending order before combining them.

No!


> In other words --
>
> (check-expect (merge-all-neighbors (list (list 9) (list 1)) (list
> (list 1 9))?

This example wouldn't contradict the exercise. Indeed, it jives just  
fine.


> Further, suppose the function input is a list of list-of-numbers in
> descending order --
>
> (define list1 (list (list 9) (list 7) (list 5) (list 3))).
>
> In this case, does "merge-all-neighbors" evaluate list1 to (list (list
> 7 9) (list 3 5)) --

This one obviously. But now run merge-all-neighbors on the result and  
see what you get.

-- Matthias

> -- or to (list (list 3 5) (list 7 9)).

That would be a function that merges neighbors and re-arranges things  
in addition.


>
> Thanks!
>
> Dave Yrueta
>
>
>
>
>
> _________________________________________________
>   For list-related administrative tasks:
>   http://list.cs.brown.edu/mailman/listinfo/plt-scheme



Posted on the users mailing list.