[plt-scheme] Re: Help requested for HtDP Exercise 16.3.4 Challenge Part 2

From: Veer (diggerrrrr at gmail.com)
Date: Tue May 13 04:16:14 EDT 2008

Hi dave ,
 Sorry , i did not read your code properly .

In the function :

(define (list-paths lod f)
  (cond
    [(empty? lod) (list empty)]
    [(boolean=? (find? (first lod) f) false) (list-paths (rest lod) f)]
    [else (append (find-all-paths (first lod) f) (list-paths (rest lod) f))]))


change [(empty? lod) (list empty)]  to

[(empty? lod) empty]

Though i have not thoroughly analyzed your code , by changing the
above line produces the
correct result.  You still need to test it rigorously.


> Thank you for your comments. Are they intended as general guidelines
> to solving this problem or as a response to my specific approach.  I
> only ask because I believe the approach you've suggested in the one I
> tried to adopt.  Perhaps because it was buried so far down in the post
> you didn't see it?

Sometimes we forget  :) , just thought it might help , once you have
done with this exercise
i will mail(directly) you my solution , we can compare.



On 5/13/08, dave yrueta <dyrueta at gmail.com> wrote:
> Hi Veer --
>
> Thank you for your comments. Are they intended as general guidelines
> to solving this problem or as a response to my specific approach.  I
> only ask because I believe the approach you've suggested in the one I
> tried to adopt.  Perhaps because it was buried so far down in the post
> you didn't see it?
>
> At any rate, I believe I've isolated the problem with my function.  It
> not only returns all paths, in the manner you've described, but also
> all intermediate paths as well.  So instead of returning (list(list
> 'ts)(list 'ts 'libs 'docs) after running (find-all-paths ts 'read), it
> produces --
>
> (list(list 'ts)(list 'ts 'libs 'docs)(list 'ts 'libs)(list 'ts))
>
> The last two paths are intermediate, and I can't quite figure out what
> is causing them to arise...
>
> If you can offer any further insight into the nature of this problem,
> I certainly would appreciate your help.
>
> Thanks!
> Dave Yrueta
>
> On May 11, 4:01 am, Veer <diggerr... at gmail.com> wrote:
> > Here are 2 important points i use when problem is complex.
> >
> > 1. Remember what a function produces , without going into the
> >    details how it produces
> > 2. How to combine what we have with what function produces
> >
> > Here are the some clues , i hope i don't confuse you more .
> >
> > ;;find? : dir symbol -> list-of-paths or false
> > (define (find? a-dir a-sym) ..)
> >
> > ;;1. If file is found in a current directory(find-in-files?) what to do we
> > ;;   have and what to do with other dirs in this current dir
> > ;;          a. (dir-name a-dir)
> > ;;          b. (find-in-dirs? (dir-dirs a-dir) a-sym) produces what?
> > (false or list-of-paths)
> >
> > ;;Hint:         How will you combine the two and
> > ;;                if b is a list-of-paths then we need to
> > ;;                insert or prefix "what" to each element in list-of-paths
> >
> > ;;2. If file is not found in current dir then
> > ;;       a. Do we search for dirs in current dir if so which function to
> use
> > ;;       b. What that function return and what is needed to be inserted
> into
> > ;;          it
> >
> > ;;find-in-dirs? : list-of-dirs symbol -> list-of-paths or false
> > (define (find-in-dirs? alods a-sym) ..)
> >
> > ;;1.  alods is empty ...
> >
> > ;;2.  (find? (first alods) a-sym)  produces what ?
> >
> > ;;       a. if 2 is false  what to do
> > ;;       b. else we have (find? (first alods) a-sym)
> >
> > ;;       Now for b. we have list-of-paths and we also have
> > ;;       a list-of-paths from (find-in-dirs? (rest alods) a-sym)
> > ;;       Only thing is needed to combine them
> > ;;       remember find-in-dirs? returns what?
> >
> > ;;find-in-files?: list-of-files a-sym -> boolean
> > (define (find-in-files? alofs a-sym) ..)
> >
> > ;;insert-or-prefix-funcion :
> >
> > Veer
> >
> >
> >
> > On Sun, May 11, 2008 at 10:29 AM, dave yrueta <dyru... at gmail.com> wrote:
> > > Hi Matthias --
> >
> > >  >BTW, I didn't see any check-expects and test-examples but this could
> > >  > be due to your formatting.
> >
> > >  Did not run check-expects (forgot that existed) but do have test
> > >  examples with desired outcomes under each function purpose statement.
> > >  Also contrasted expected outcomes with actual outcomes at the end of
> > >  the post.
> >
> > >  >You might be better off posting a url to a
> > >  > solution.
> >
> > >  Here it is --
> >
> > >  http://docs.google.com/Doc?id=dhdqh3jf_10g9gt37ds
> >
> > >  I apologize for the length of the post.  I have a hard time keeping it
> > >  brief while justifying each move with respect to the design recipe.
> >
> > >  On May 10, 5:47 pm, Matthias Felleisen <matth... at ccs.neu.edu> wrote:
> > >  > On May 10, 2008, at 7:50 PM, dave yrueta wrote:
> >
> > >  > > I've found it difficult to isolate the problem within a single
> > >  > > function since they are all interrelated.
> >
> > >  > Sorry no time to look thru details BUT when you have mut rec specs of
> > >  > data, you get mut rec functions to process them. And yes, in that
> > >  > case it's nearly impossible to write independent tests (and find
> > >  > problems).
> >
> > >  > ;; ---
> >
> > >  > BTW, I didn't see any check-expects and test-examples but this could
> > >  > be due to your formatting. You might be better off posting a url to a
> > >  > solution. My Mail client scrambles your posting.
> >
> > >  > -- Matthias
> >
> > >  > _________________________________________________
> > >  >   For list-related administrative tasks:
> > >  >  h>ttp://list.cs.brown.edu/mailman/listinfo/plt-scheme
> >
> > > _________________________________________________
> > >   For list-related administrative tasks:
> > >  http://list.cs.brown.edu/mailman/listinfo/plt-scheme
> >
> > _________________________________________________
> >   For list-related administrative tasks:
> >  http://list.cs.brown.edu/mailman/listinfo/plt-scheme
> _________________________________________________
>   For list-related administrative tasks:
>   http://list.cs.brown.edu/mailman/listinfo/plt-scheme
>


Posted on the users mailing list.