Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
63
Task/Stem-and-leaf-plot/Nim/stem-and-leaf-plot.nim
Normal file
63
Task/Stem-and-leaf-plot/Nim/stem-and-leaf-plot.nim
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
import tables
|
||||
import math
|
||||
import strutils
|
||||
import algorithm
|
||||
|
||||
type
|
||||
StemLeafPlot = ref object
|
||||
leafDigits: int
|
||||
multiplier: int
|
||||
plot: TableRef[int, seq[int]]
|
||||
|
||||
proc `$`(s: seq[int]): string =
|
||||
result = ""
|
||||
for item in s:
|
||||
result &= $item & " "
|
||||
|
||||
proc `$`(self: StemLeafPlot): string =
|
||||
result = ""
|
||||
var keys: seq[int] = @[]
|
||||
for stem, _ in self.plot:
|
||||
keys.add(stem)
|
||||
for printedStem in keys.min..keys.max:
|
||||
result &= align($printedStem & " | ", ($keys.max).len + 4)
|
||||
if printedStem in keys:
|
||||
self.plot[printedStem].sort(system.cmp[int])
|
||||
result &= $self.plot[printedStem]
|
||||
result &= "\n"
|
||||
|
||||
proc parse(self: StemLeafPlot, value: int): tuple[stem, leaf: int] =
|
||||
(value div self.multiplier, abs(value mod self.multiplier))
|
||||
|
||||
proc init[T](self: StemLeafPlot, leafDigits: int, data: openArray[T]) =
|
||||
self.leafDigits = leafDigits
|
||||
self.multiplier = 10 ^ leafDigits
|
||||
self.plot = newTable[int, seq[int]]()
|
||||
for value in data:
|
||||
let (stem, leaf) = self.parse(value)
|
||||
if stem notin self.plot:
|
||||
self.plot[stem] = @[leaf]
|
||||
else:
|
||||
self.plot[stem].add(leaf)
|
||||
|
||||
var taskData = @[12, 127, 28, 42, 39, 113, 42, 18, 44, 118, 44, 37, 113, 124,
|
||||
37, 48, 127, 36, 29, 31, 125, 139, 131, 115, 105, 132, 104, 123,
|
||||
35, 113, 122, 42, 117, 119, 58, 109, 23, 105, 63, 27, 44, 105,
|
||||
99, 41, 128, 121, 116, 125, 32, 61, 37, 127, 29, 113, 121, 58,
|
||||
114, 126, 53, 114, 96, 25, 109, 7, 31, 141, 46, 13, 27, 43,
|
||||
117, 116, 27, 7, 68, 40, 31, 115, 124, 42, 128, 52, 71, 118,
|
||||
117, 38, 27, 106, 33, 117, 116, 111, 40, 119, 47, 105, 57, 122,
|
||||
109, 124, 115, 43, 120, 43, 27, 27, 18, 28, 48, 125, 107, 114,
|
||||
34, 133, 45, 120, 30, 127, 31, 116, 146]
|
||||
|
||||
var negativeData = @[-24, -12, -3, 4, 6, 6, 17, 25, 57]
|
||||
|
||||
echo "Using the Task's Test Data"
|
||||
var taskPlot = StemLeafPlot()
|
||||
taskPlot.init(1, taskData)
|
||||
echo taskPlot
|
||||
|
||||
echo "Test with Negative Stem"
|
||||
var negativePlot = StemLeafPlot()
|
||||
negativePlot.init(1, negativeData)
|
||||
echo negativePlot
|
||||
Loading…
Add table
Add a link
Reference in a new issue