(koans) another problem (syntax error)

18 views
Skip to first unread message

roelof

unread,
Sep 21, 2012, 3:12:46 AM9/21/12
to rubyonra...@googlegroups.com
Hello,

I now trying to solve this one :

# Triangle Project Code.

# Triangle analyzes the lengths of the sides of a triangle
# (represented by a, b and c) and returns the type of triangle.
#
# It returns:
#   :equilateral  if all sides are equal
#   :isosceles    if exactly 2 sides are equal
#   :scalene      if no sides are equal
#
# The tests for this method can be found in
#   about_triangle_project.rb
# and
#   about_triangle_project_2.rb
#
def triangle(a, b, c)
  if ((a == b) and (b == c)) 
     return :equilateral
  if (((a == b) and (b != c)) or ((a != b) and (b == c)))
     return :isosceles
  if ((a !=b) and (b != c))
     return :scalene
end

But I see this error message :

/about_triangle_project.rb:4:in `require': ./triangle.rb:27: syntax error, unexpected $end, expecting kEND (SyntaxError)
    from ./about_triangle_project.rb:4
    from path_to_enlightenment.rb:18:in `require'
    from path_to_enlightenment.rb:18


Can anyone give me a tip what I have done wrong ?

Roelof


Jim Ruther Nill

unread,
Sep 21, 2012, 3:19:57 AM9/21/12
to rubyonra...@googlegroups.com
you're missing end(s).  if you switch the positions of if and return or if you put it in one line, it should solve the error

return :scalene if ((a !=b) and (b != c)) 
 


Roelof


--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To post to this group, send email to rubyonra...@googlegroups.com.
To unsubscribe from this group, send email to rubyonrails-ta...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msg/rubyonrails-talk/-/TG8qx9xODCYJ.
For more options, visit https://groups.google.com/groups/opt_out.
 
 



--
-------------------------------------------------------------
visit my blog at http://jimlabs.heroku.com

roelof

unread,
Sep 21, 2012, 10:00:36 AM9/21/12
to rubyonra...@googlegroups.com
Thanks,

That solved my problem.

Roelof

Op vrijdag 21 september 2012 09:12:46 UTC+2 schreef roelof het volgende:

Dave Aronson

unread,
Sep 21, 2012, 1:31:25 PM9/21/12
to rubyonra...@googlegroups.com
On Fri, Sep 21, 2012 at 3:12 AM, roelof <rwo...@hotmail.com> wrote:

> def triangle(a, b, c)
> if ((a == b) and (b == c))
> return :equilateral
> if (((a == b) and (b != c)) or ((a != b) and (b == c)))
> return :isosceles
> if ((a !=b) and (b != c))
> return :scalene
> end
>
> But I see this error message :
>
> /about_triangle_project.rb:4:in `require': ./triangle.rb:27: syntax error,
> unexpected $end, expecting kEND (SyntaxError)

Two option already given are to add some ends, or make them a series
of oneliners. But, you could also solve it by making all but the
first if, "elsif"s instead. Actually you can make the third one just
an else, since that's the only remaining option. You'll still need
one more end, though, to end the if-series.

Another way that springs to my twisted little mind, though, is to just
see how many unique lengths you have:

[:equilateral, :isosceles, :scalene][[a,b,c].uniq.length - 1]

Do NOT put something that "clever" in anything actually important, as
the lack of clarity isn't worth the conciseness. But it makes a neat
little mind-exercise. ;-)

-Dave

--
Dave Aronson, Available Secret-Cleared Ruby/Rails Freelancer (VA/DC/Remote);
see www.DaveAronson.com, www.Codosaur.us, and www.Dare2XL.com for more info.
Reply all
Reply to author
Forward
0 new messages