Heronian triangles: Difference between revisions
Content deleted Content added
m →{{header|REXX}}: localized a subroutine variable, changed whitespace in the program and output. |
→{{header|Ruby}}: corrects the definition of the Triangle ( Struct-> class ) and output. |
||
Line 767: | Line 767: | ||
=={{header|Ruby}}== |
=={{header|Ruby}}== |
||
<lang ruby>Triangle |
<lang ruby>class Triangle |
||
include Comparable |
|||
def self.valid?(a,b,c) # class method |
def self.valid?(a,b,c) # class method |
||
short, middle, long = [a, b, c].sort |
short, middle, long = [a, b, c].sort |
||
short + middle > long |
short + middle > long |
||
end |
end |
||
attr_reader :sides, :perimeter, :area |
|||
⚫ | |||
def initialize(a,b,c) |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
end |
end |
||
def perimeter |
|||
⚫ | |||
end |
|||
def semiperimeter |
|||
⚫ | |||
end |
|||
def area |
|||
s = semiperimeter |
|||
⚫ | |||
end |
|||
def heronian? |
def heronian? |
||
area == area.to_i |
area == area.to_i |
||
end |
end |
||
def <=>(other) |
def <=>(other) |
||
[area, perimeter, sides] <=> [other.area, other.perimeter, other.sides] |
[area, perimeter, sides] <=> [other.area, other.perimeter, other.sides] |
||
end |
end |
||
def to_s |
def to_s |
||
" |
"%-11s%6d%8.1f" % [sides.join('x'), perimeter, area] |
||
end |
end |
||
end |
end |
||
Line 819: | Line 809: | ||
puts "Primitive heronian triangles with sides upto #{max}: #{sorted.size}" |
puts "Primitive heronian triangles with sides upto #{max}: #{sorted.size}" |
||
puts "\nsides |
puts "\nsides perim. area" |
||
sorted.first(10). |
puts sorted.first(10).map(&:to_s) |
||
puts "\nTriangles with an area of: #{area}" |
puts "\nTriangles with an area of: #{area}" |
||
sorted. |
sorted.each{|tr| puts tr if tr.area == area}</lang> |
||
</lang> |
|||
{{out}} |
{{out}} |
||
<pre> |
<pre> |
||
Primitive heronian triangles with sides upto 200: 517 |
Primitive heronian triangles with sides upto 200: 517 |
||
sides |
sides perim. area |
||
3x4x5 |
3x4x5 12 6.0 |
||
5x5x6 |
5x5x6 16 12.0 |
||
5x5x8 |
5x5x8 18 12.0 |
||
4x13x15 |
4x13x15 32 24.0 |
||
5x12x13 |
5x12x13 30 30.0 |
||
9x10x17 |
9x10x17 36 36.0 |
||
3x25x26 |
3x25x26 54 36.0 |
||
7x15x20 |
7x15x20 42 42.0 |
||
10x13x13 |
10x13x13 36 60.0 |
||
8x15x17 |
8x15x17 40 60.0 |
||
Triangles with an area of: 210 |
Triangles with an area of: 210 |
||
17x25x28 |
17x25x28 70 210.0 |
||
20x21x29 |
20x21x29 70 210.0 |
||
12x35x37 |
12x35x37 84 210.0 |
||
17x28x39 |
17x28x39 84 210.0 |
||
7x65x68 |
7x65x68 140 210.0 |
||
3x148x149 |
3x148x149 300 210.0 |
||
</pre> |
</pre> |
||