diff options
Diffstat (limited to 'factors/score.go')
| -rw-r--r-- | factors/score.go | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/factors/score.go b/factors/score.go index 707120d..b47aac4 100644 --- a/factors/score.go +++ b/factors/score.go @@ -26,3 +26,42 @@ func Score(n uint) float64 { } return float64(factorSum) / float64(n) } + +// BasicRank returns a rank describing how well a base handles the simplest +// fractions (1/2, 1/3, 1/4 and 1/5) +// also known as 2345 Rank +func BasicRank(n uint) string { + var firstRank, secondRank string + if n%2 == 0 { + if n%3 == 0 { + if n%4 == 0 { + firstRank = "A" + } else { + firstRank = "B" + } + } else { + if n%4 == 0 { + firstRank = "C" + } else { + firstRank = "D" + } + } + } else { + if n%3 == 0 { + firstRank = "E" + } else { + firstRank = "F" + } + } + + switch n % 5 { + case 0: + secondRank = "+" + case 1, 4: + secondRank = "~" + case 2, 3: + secondRank = "-" + } + + return firstRank + secondRank +} |
