## DEV Community 👩‍💻👨‍💻 is a community of 966,155 amazing developers

We're a place where coders share, stay up-to-date and grow their careers.

dev.to staff

Posted on

# Daily Challenge #84 - Third Angle of a Triangle

You are given two angles of a triangle in degrees.

Write a function to return the third angle. Only positive integers will be tested.

Sample Tests:

thirdAngle(30, 60)
thirdAngle(60, 60)
thirdAngle(43, 78)
thirdAngle(10, 20)

This challenge comes from user5651159. Thank you to CodeWars, who has licensed redistribution of this challenge under the 2-Clause BSD License!

Want to propose a challenge idea for a future post? Email yo+challenge@dev.to with your suggestions!

## Top comments (15)

Kona Arctic • Edited on

ANSI C

#include <math.h>

double third_angle ( double first_angle , double second_angle ) {
first_angle = fmod( first_angle , 360.0 );  // Get absolute
second_angle = fmod( second_angle , 360.0 );

if ( first_angle + second_angle >= 180 )
return 0.0;  // That's not a triangle! OwO

return ( 180 - first_angle - second_angle );
}

int main ( int argc , char ** argv ) {
if (
( int ) third_angle( 30 , 60 ) == 90 &&
( int ) third_angle( 60 , 60 ) == 60 &&
( int ) third_angle( 43 , 78 ) == 59 &&
( int ) third_angle( 10 , 20 ) == 150 )
return 0;  // It works!

return 101;  // Or not
}

Run with ~\$ gcc -lm <file_name> && ./a.out

K.V.Harish • Edited on

My solution in js

const thirdAngle = (angle1, angle2) => (angle1 && angle2 && (angle3 = 180 - (angle1 + angle2)) > 0) ? angle3 : 'Invalid - Sum of all angles of a triangle should be 180 degrees';

Josh

What happens if I enter thirdAngle(0,0)?

K.V.Harish • Edited on

Good catch. Edited. But the challenge is to deal with positive integers so didn't take 0 into account as it is neither positive nor negative integer.

Josh

True enough. But why code purely for specs when coding for the edge and error cases takes just a few more minutes?

Peter

In Go!

func thirdAngle(a, b int) (int, error) {
if (a + b) >= 180 {
return 0, errors.New("Input angles sum is greater than or equal to 180 degress, this cannot be a triangle")
}
if a == 0 || b == 0 {
return 0, errors.New("Input angle cannot be zero, cannot be a triangle")
}
angle := 360 - a - b // sum of angles must be 360 degress
return angle, nil
}

Go Playground

Michael Baas • Edited on

# Solution in APL

(using Dyalog APL)

thirdAngle←{r←180-+/⍵ ⋄ (r<0)∨0∊⍵: 'This is not a triangle!' ⋄ r}

## Tests:

thirdAngle 30 60
90
thirdAngle 60 60
60
thirdAngle 43 78
59
thirdAngle 10 20
150

Try it online!

Josh

This oughta do it for Elixir.

defmodule Triangle do
def third_angle(a, b) when is_integer(a + b) # will not qualify if either isn't an integer
and a + b < 180
and a > 0
and b > 0 do
180 - a - b
end
end

willsmart

Keeping it simple in bash

function thirdAngle {
echo \$((180 - \$1 - \$2))
}

Running through the examples on the cmd:

> thirdAngle 30 60
90

> thirdAngle 60 60
60

> thirdAngle 43 78
59

> thirdAngle 10 20
150

willsmart

BTW the challenge on Kata only tests for valid triangles,

function otherAngle(a, b) {
return 180-(a+b);
}

was sufficient in JS

Amin

Elm

import List exposing (all, sum)
import Maybe exposing (andThen, map)

isAngle : Int -> Bool
isAngle angle =
angle > 0 && angle < 180

maybeAngles : List Int -> Maybe (List Int)
maybeAngles angles =
if all isAngle angles && sum angles < 180 then
Just angles

else
Nothing

third : Int -> Int -> Maybe Int
third first second =
maybeAngles [ first, second ]
|> map (sum >> (-) 180)

Test it online

Here.

function thirdAngle(a,b) {
return 180-a-b;
}

lormayna • Edited on

Josh • Edited on

What happens if I enter thirdAngle(0,0)?

lormayna

you are right, I just wrote it very fast and I did not think about this case.
TDD will help a lot in these situations.

## DEV has this feature:

Go to your customization settings to nudge your home feed to show content more relevant to your developer experience level. 🛠