Sha256: ec497b99e8c5921dc2078d3963e2e80034b06da8f813c6ea6521434ffd7c96f6

Contents?: true

Size: 1.31 KB

Versions: 146

Compression:

Stored size: 1.31 KB

Contents

/**
* Here is an example solution for the Triangle exercise
*/
component {
	
	function equilateral( array sides ) {
		// Is triangle and all 3 sides the same
		return isTriangle( sides ) && countSides( sides ) == 1;
	}
	
	function isosceles( array sides ) {
		// Is triangle and at least two sides the same
		return isTriangle( sides ) && countSides( sides ) < 3;
	}
	
	function scalene( array sides ) {
		// Is triangle and all 3 sides different
		return isTriangle( sides ) && countSides( sides ) == 3;
	}
	
	private function countSides( array sides ) {
		var distinctSides = {};
				
		// Keep track of distinct sides
		sides.each( function( side ){
			distinctSides[ side ] = true;
		} );
		
		// Count 'em up
		return distinctSides.count();
	}
	
	private function isTriangle( array sides ) {
		// Any sides of 0 are invalid
		if( sides[ 1 ] == 0 || sides[ 2 ] == 0 || sides[ 3 ] == 0 ) {
			return false;
		}
		// sides 1 and 2 must be at least the size of side 3
		if( sides[ 1 ] + sides[ 2 ] < sides[ 3 ] ) {
			return false;
		}
		// sides 1 and 3 must be at least the size of side 2
		if( sides[ 1 ] + sides[ 3 ] < sides[ 2 ] ) {
			return false;
		}
		// sides 2 and 3 must be at least the size of side 1
		if( sides[ 2 ] + sides[ 3 ] < sides[ 1 ] ) {
			return false;
		}
		// If we made it here, it's a triangle!
		return true;
	}
}

Version data entries

146 entries across 145 versions & 1 rubygems

Version Path
trackler-2.2.1.139 tracks/cfml/exercises/triangle/Solution.cfc
trackler-2.2.1.138 tracks/cfml/exercises/triangle/Solution.cfc
trackler-2.2.1.137 tracks/cfml/exercises/triangle/Solution.cfc
trackler-2.2.1.136 tracks/cfml/exercises/triangle/Solution.cfc
trackler-2.2.1.135 tracks/cfml/exercises/triangle/Solution.cfc
trackler-2.2.1.134 tracks/cfml/exercises/triangle/Solution.cfc
trackler-2.2.1.133 tracks/cfml/exercises/triangle/Solution.cfc
trackler-2.2.1.132 tracks/cfml/exercises/triangle/Solution.cfc
trackler-2.2.1.131 tracks/cfml/exercises/triangle/Solution.cfc
trackler-2.2.1.130 tracks/cfml/exercises/triangle/Solution.cfc
trackler-2.2.1.129 tracks/cfml/exercises/triangle/Solution.cfc
trackler-2.2.1.128 tracks/cfml/exercises/triangle/Solution.cfc
trackler-2.2.1.127 tracks/cfml/exercises/triangle/Solution.cfc
trackler-2.2.1.126 tracks/cfml/exercises/triangle/Solution.cfc
trackler-2.2.1.125 tracks/cfml/exercises/triangle/Solution.cfc
trackler-2.2.1.124 tracks/cfml/exercises/triangle/Solution.cfc
trackler-2.2.1.123 tracks/cfml/exercises/triangle/Solution.cfc
trackler-2.2.1.122 tracks/cfml/exercises/triangle/Solution.cfc
trackler-2.2.1.121 tracks/cfml/exercises/triangle/Solution.cfc
trackler-2.2.1.120 tracks/cfml/exercises/triangle/Solution.cfc