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.159 tracks/cfml/exercises/triangle/Solution.cfc
trackler-2.2.1.158 tracks/cfml/exercises/triangle/Solution.cfc
trackler-2.2.1.157 tracks/cfml/exercises/triangle/Solution.cfc
trackler-2.2.1.156 tracks/cfml/exercises/triangle/Solution.cfc
trackler-2.2.1.155 tracks/cfml/exercises/triangle/Solution.cfc
trackler-2.2.1.154 tracks/cfml/exercises/triangle/Solution.cfc
trackler-2.2.1.153 tracks/cfml/exercises/triangle/Solution.cfc
trackler-2.2.1.152 tracks/cfml/exercises/triangle/Solution.cfc
trackler-2.2.1.151 tracks/cfml/exercises/triangle/Solution.cfc
trackler-2.2.1.150 tracks/cfml/exercises/triangle/Solution.cfc
trackler-2.2.1.149 tracks/cfml/exercises/triangle/Solution.cfc
trackler-2.2.1.148 tracks/cfml/exercises/triangle/Solution.cfc
trackler-2.2.1.147 tracks/cfml/exercises/triangle/Solution.cfc
trackler-2.2.1.146 tracks/cfml/exercises/triangle/Solution.cfc
trackler-2.2.1.145 tracks/cfml/exercises/triangle/Solution.cfc
trackler-2.2.1.144 tracks/cfml/exercises/triangle/Solution.cfc
trackler-2.2.1.143 tracks/cfml/exercises/triangle/Solution.cfc
trackler-2.2.1.142 tracks/cfml/exercises/triangle/Solution.cfc
trackler-2.2.1.141 tracks/cfml/exercises/triangle/Solution.cfc
trackler-2.2.1.140 tracks/cfml/exercises/triangle/Solution.cfc