summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/assimilate.c')
-rw-r--r--src/core/assimilate.c26
1 files changed, 18 insertions, 8 deletions
diff --git a/src/core/assimilate.c b/src/core/assimilate.c
index 49efe23..7f03e1b 100644
--- a/src/core/assimilate.c
+++ b/src/core/assimilate.c
@@ -21,7 +21,16 @@ static int add_sequence
struct ZoO_knowledge_link * link;
ZoO_index * new_p;
- if (ZoO_knowledge_get_link(links_count, links, (sequence + offset), &link_index) < 0)
+ if
+ (
+ ZoO_knowledge_get_link
+ (
+ links_count,
+ links,
+ (sequence + offset),
+ &link_index
+ ) < 0
+ )
{
return -1;
}
@@ -153,21 +162,22 @@ static int init_sequence
{
ZoO_index i;
- sequence[0] = ZoO_WORD_START_OF_LINE;
+ /* We are going to link this sequence to ZoO_WORD_START_OF_LINE */
+ sequence[ZoO_MARKOV_ORDER] = ZoO_WORD_START_OF_LINE;
- for (i = 0; i < ZoO_MARKOV_ORDER; ++i)
+ for (i = 1; i <= ZoO_MARKOV_ORDER; ++i)
{
sequence[ZoO_MARKOV_ORDER - i] = ZoO_WORD_START_OF_LINE;
- if (i < string->words_count)
+ if (i <= string->words_count)
{
if
(
ZoO_knowledge_learn
(
k,
- string->words[i],
- (sequence + (ZoO_MARKOV_ORDER + i + 1))
+ string->words[i - 1],
+ (sequence + (ZoO_MARKOV_ORDER + i))
) < 0
)
{
@@ -176,7 +186,7 @@ static int init_sequence
}
else
{
- sequence[ZoO_MARKOV_ORDER + i + 1] = ZoO_WORD_END_OF_LINE;
+ sequence[ZoO_MARKOV_ORDER + i] = ZoO_WORD_END_OF_LINE;
}
}
@@ -220,7 +230,7 @@ int ZoO_knowledge_assimilate
next_word = 0;
new_word = ZoO_MARKOV_ORDER;
- while (next_word <= string->words_count)
+ while (next_word <= (string->words_count + ZoO_MARKOV_ORDER))
{
if (new_word < string->words_count)
{