Re: why is this failing on a list

2014-05-05 Thread Erlis Vidal
Hi Roelof,

I start the 4Clojure exercises and I did a little project so I can keep a
record of my solutions. It's really simple but also I've found it really
helpful to see where my errors are.

You can fork it from here... if you want.

https://github.com/erlis/4Clojure

You only have there the first 5 or 6 ones, the only thing you have to do is
continue adding exercises and your answers. This will help you also to
become familiar with your dev environment. I'm using Emacs but you can use
whatever you want.

Regards,
Erlis


On Sun, May 4, 2014 at 11:06 AM, James Reeves ja...@booleanknot.com wrote:

 Remember that indexes work from zero. So if you have a collection of 3
 elements:

 (nth [a b c] 2)  =  c
 (nth [a b c] 1)  =  b
 (nth [a b c] 0)  =  a

 I'd encourage you to open a REPL and try the solution you have to see what
 you get if you get stuck. Often some experimentation will show you what
 you're doing wrong.

 - James


 On 4 May 2014 15:58, Roelof Wobben rwob...@hotmail.com wrote:

 oke,

 Then I think I have to work with a if then :

 The second test is already a vector but the thirth not

 (= (__ [a b c]) b)

 (= (__ [[1 2] [3 4]]) [1 2])

 I tried already the nth but I was also failing  on the first. I think
 because of count because you cannot know how many values you have.

 (fn secondlast [v]
   (nth v (-(count v)1)))


 Roelof

 Op zondag 4 mei 2014 16:49:45 UTC+2 schreef Lee:



 On May 4, 2014, at 10:42 AM, Roelof Wobben rwo...@hotmail.com wrote:

  For 4clojure I have to find the second to last item.
 
  So I did this:
 
  (fn secondlast [v]
(get v (-(count v)1)))
 
  Now it's only failing at this test :  (= (__ (list 1 2 3 4 5)) 4)
 
  Can anyone tell me where I did take the wrong way.


 The get function with integer keys works for vectors but not for
 lists:

 = (get [7 8 9] 1)
 8
 = (get '(7 8 9) 1)
 nil

 So one option would be to call vec on the list before calling get:

 = (get (vec '(7 8 9)) 1)
 8

 Another option would be to use nth instead of get.

  -Lee

  --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with
 your first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en
 ---
 You received this message because you are subscribed to the Google Groups
 Clojure group.
 To unsubscribe from this group and stop receiving emails from it, send an
 email to clojure+unsubscr...@googlegroups.com.
 For more options, visit https://groups.google.com/d/optout.


  --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with
 your first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en
 ---
 You received this message because you are subscribed to the Google Groups
 Clojure group.
 To unsubscribe from this group and stop receiving emails from it, send an
 email to clojure+unsubscr...@googlegroups.com.
 For more options, visit https://groups.google.com/d/optout.


-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


why is this failing on a list

2014-05-04 Thread Roelof Wobben
Hello, 

For 4clojure I have to find the second to last item.

So I did this: 

(fn secondlast [v] 
  (get v (-(count v)1)))

Now it's only failing at this test :  (= (__ (list 1 2 3 4 5)) 4)

Can anyone tell me where I did take the wrong way. 

Roelof

-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: why is this failing on a list

2014-05-04 Thread Lee Spector


On May 4, 2014, at 10:42 AM, Roelof Wobben rwob...@hotmail.com wrote:

 For 4clojure I have to find the second to last item.
 
 So I did this:
 
 (fn secondlast [v] 
   (get v (-(count v)1)))
 
 Now it's only failing at this test :  (= (__ (list 1 2 3 4 5)) 4)
 
 Can anyone tell me where I did take the wrong way.


The get function with integer keys works for vectors but not for lists:

= (get [7 8 9] 1)
8
= (get '(7 8 9) 1)
nil

So one option would be to call vec on the list before calling get:

= (get (vec '(7 8 9)) 1)
8

Another option would be to use nth instead of get.

 -Lee

-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: why is this failing on a list

2014-05-04 Thread James Trunk
Also, don't forget that vectors are zero indexed, so (- (count v) 1) will 
give you the last element, not the second last.

Cheers,
James

On Sunday, May 4, 2014 4:49:45 PM UTC+2, Lee wrote:



 On May 4, 2014, at 10:42 AM, Roelof Wobben rwo...@hotmail.comjavascript: 
 wrote: 

  For 4clojure I have to find the second to last item. 
  
  So I did this: 
  
  (fn secondlast [v] 
(get v (-(count v)1))) 
  
  Now it's only failing at this test :  (= (__ (list 1 2 3 4 5)) 4) 
  
  Can anyone tell me where I did take the wrong way. 


 The get function with integer keys works for vectors but not for lists: 

 = (get [7 8 9] 1) 
 8 
 = (get '(7 8 9) 1) 
 nil 

 So one option would be to call vec on the list before calling get: 

 = (get (vec '(7 8 9)) 1) 
 8 

 Another option would be to use nth instead of get. 

  -Lee 



-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: why is this failing on a list

2014-05-04 Thread mynomoto
Roelof,

The whole point of something like 4clojure is for you to try to understand 
how things work and learn how to fix the errors that happen along the way. 
Open a repl and see what the error tells you. Also, you should have the 
clojure cheat sheet open to help you find what each function does. If 
everything fails, then you can come here, tell what you did, paste the 
error. If you do all that, you will have learned something. You are not 
helping yourself by asking here on the first problem you find.

Best,

Marcelo

On Sunday, May 4, 2014 11:42:07 AM UTC-3, Roelof Wobben wrote:

 Hello, 

 For 4clojure I have to find the second to last item.

 So I did this: 

 (fn secondlast [v] 
   (get v (-(count v)1)))

 Now it's only failing at this test :  (= (__ (list 1 2 3 4 5)) 4)

 Can anyone tell me where I did take the wrong way. 

 Roelof



-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: why is this failing on a list

2014-05-04 Thread Roelof Wobben
oke, 

Then I think I have to work with a if then : 

The second test is already a vector but the thirth not

(= (__ [a b c]) b)

(= (__ [[1 2] [3 4]]) [1 2])

I tried already the nth but I was also failing  on the first. I think 
because of count because you cannot know how many values you have.

(fn secondlast [v] 
  (nth v (-(count v)1)))


Roelof

Op zondag 4 mei 2014 16:49:45 UTC+2 schreef Lee:



 On May 4, 2014, at 10:42 AM, Roelof Wobben rwo...@hotmail.comjavascript: 
 wrote: 

  For 4clojure I have to find the second to last item. 
  
  So I did this: 
  
  (fn secondlast [v] 
(get v (-(count v)1))) 
  
  Now it's only failing at this test :  (= (__ (list 1 2 3 4 5)) 4) 
  
  Can anyone tell me where I did take the wrong way. 


 The get function with integer keys works for vectors but not for lists: 

 = (get [7 8 9] 1) 
 8 
 = (get '(7 8 9) 1) 
 nil 

 So one option would be to call vec on the list before calling get: 

 = (get (vec '(7 8 9)) 1) 
 8 

 Another option would be to use nth instead of get. 

  -Lee 



-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: why is this failing on a list

2014-05-04 Thread James Reeves
Remember that indexes work from zero. So if you have a collection of 3
elements:

(nth [a b c] 2)  =  c
(nth [a b c] 1)  =  b
(nth [a b c] 0)  =  a

I'd encourage you to open a REPL and try the solution you have to see what
you get if you get stuck. Often some experimentation will show you what
you're doing wrong.

- James


On 4 May 2014 15:58, Roelof Wobben rwob...@hotmail.com wrote:

 oke,

 Then I think I have to work with a if then :

 The second test is already a vector but the thirth not

 (= (__ [a b c]) b)

 (= (__ [[1 2] [3 4]]) [1 2])

 I tried already the nth but I was also failing  on the first. I think
 because of count because you cannot know how many values you have.

 (fn secondlast [v]
   (nth v (-(count v)1)))


 Roelof

 Op zondag 4 mei 2014 16:49:45 UTC+2 schreef Lee:



 On May 4, 2014, at 10:42 AM, Roelof Wobben rwo...@hotmail.com wrote:

  For 4clojure I have to find the second to last item.
 
  So I did this:
 
  (fn secondlast [v]
(get v (-(count v)1)))
 
  Now it's only failing at this test :  (= (__ (list 1 2 3 4 5)) 4)
 
  Can anyone tell me where I did take the wrong way.


 The get function with integer keys works for vectors but not for lists:

 = (get [7 8 9] 1)
 8
 = (get '(7 8 9) 1)
 nil

 So one option would be to call vec on the list before calling get:

 = (get (vec '(7 8 9)) 1)
 8

 Another option would be to use nth instead of get.

  -Lee

  --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with
 your first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en
 ---
 You received this message because you are subscribed to the Google Groups
 Clojure group.
 To unsubscribe from this group and stop receiving emails from it, send an
 email to clojure+unsubscr...@googlegroups.com.
 For more options, visit https://groups.google.com/d/optout.


-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.