Skip to content

Commit eb58d7e

Browse files
committed
chore: use CountTable for weight mode
1 parent 3ae52f3 commit eb58d7e

File tree

2 files changed

+11
-13
lines changed

2 files changed

+11
-13
lines changed

nimkov.nimble

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Package
22

3-
version = "1.2.1"
3+
version = "1.2.2"
44
author = "bit0r1n"
55
description = "Text generator, based on Markov Chains (Markov text generator)"
66
license = "MIT"

nimkov/generator.nim

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ type MarkovGenerator* = ref object
1212
of mgtSimple:
1313
seqModel: Table[string, seq[string]]
1414
of mgtWeighted:
15-
weightModel: Table[string, Table[string, int]]
15+
weightModel: Table[string, CountTable[string]]
1616

1717
proc filterString(str: string): string =
1818
var subResult = newSeq[string]()
@@ -54,11 +54,8 @@ proc add*(generator: MarkovGenerator, sample: string) =
5454
generator.seqModel[currentFrame].add(nextFrame)
5555
of mgtWeighted:
5656
if currentFrame notin generator.weightModel:
57-
generator.weightModel[currentFrame] = initTable[
58-
string, int]()
59-
if nextFrame notin generator.weightModel[currentFrame]:
60-
generator.weightModel[currentFrame][nextFrame] = 1
61-
else: generator.weightModel[currentFrame][nextFrame] += 1
57+
generator.weightModel[currentFrame] = initCountTable[string]()
58+
generator.weightModel[currentFrame].inc(nextFrame)
6259
proc add*(generator: MarkovGenerator, samples: seq[string]) =
6360
## Adds seqence of strings to samples.
6461
for sample in samples:
@@ -67,15 +64,16 @@ proc add*(generator: MarkovGenerator, samples: seq[string]) =
6764
proc samples*(generator: MarkovGenerator): seq[string] = generator.samples
6865
## Returns all samples of generator.
6966

70-
proc model*(generator: MarkovGenerator): Table[string, seq[string]] =
67+
proc model*(generator: MarkovGenerator): Table[string, CountTable[string]] =
7168
## Returns model of generator.
7269
case generator.kind
73-
of mgtSimple:
74-
result = generator.seqModel
7570
of mgtWeighted:
76-
result = initTable[string, seq[string]]()
77-
for key, value in generator.weightModel.pairs:
78-
result[key] = value.keys.toSeq
71+
result = generator.weightModel
72+
of mgtSimple:
73+
for key, value in generator.seqModel:
74+
result[key] = initCountTable[string]()
75+
for frame in value:
76+
result[key][frame] = 1 # always will be 1 since in simple model frames are unique
7977

8078
proc clear*(generator: MarkovGenerator) =
8179
## Clears generator.

0 commit comments

Comments
 (0)