/
FormattedQuadraticFormula.ps1
68 lines (60 loc) · 1.01 KB
/
FormattedQuadraticFormula.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
param($a, $b, $c)
function ReduceSqrt($sqrtOf)
{
$factors = ./Factorize.ps1 $sqrtOf;
$accumulator = 1;
$lastFactor = $null;
$remaining = @();
$factors |% {
if($_ -eq $lastFactor)
{
$accumulator *= $lastFactor;
$lastFactor = $null;
}
else
{
if($lastFactor -ne $null)
{
$remaining += $lastFactor;
}
$lastFactor = $_;
}
}
if($lastFactor -ne $null)
{
$remaining += $lastFactor;
}
@{Whole = $accumulator; Remaining = $remaining;};
}
function BreakDownSqrt($sqrtOf)
{
$sqrt = [Math]::Sqrt($sqrtOf);
if($sqrt.GetType() -eq [int])
{
return "$sqrt";
}
else
{
$reduced = ReduceSqrt $sqrtOf;
$result = "";
if($reduced.Whole -ne 1)
{
$result += $reduced.Whole;
}
if($reduced.Remaining.Count -ge 0)
{
$reduced.Remaining |% {
$result += "rt($_)";
}
}
return $result;
}
}
function Quadratic($a, $b, $c)
{
$bSquaredMinus4AC = [Math]::Pow($b, 2)-(4*$a*$c);
"$(-$b)+-$(BreakDownSqrt $bSquaredMinus4AC)";
('-' * 20);
"`t$(2*$a)";
}
Quadratic $a $b $c;