diff options
author | Kelly Rauchenberger <fefferburbia@gmail.com> | 2016-05-10 09:53:14 -0400 |
---|---|---|
committer | Kelly Rauchenberger <fefferburbia@gmail.com> | 2016-05-10 09:53:14 -0400 |
commit | d5ef6583d90407113c610cf21563f12569c776a6 (patch) | |
tree | 7d007e0c22e68cec5ba7b698fb5d12b5a49b8ff2 /infinite.cpp | |
parent | ea898871dcaedad6430096480fcd44729d6eeac3 (diff) | |
download | infinite-d5ef6583d90407113c610cf21563f12569c776a6.tar.gz infinite-d5ef6583d90407113c610cf21563f12569c776a6.tar.bz2 infinite-d5ef6583d90407113c610cf21563f12569c776a6.zip |
Changed form generation to be piecewise like chemist
Diffstat (limited to 'infinite.cpp')
-rw-r--r-- | infinite.cpp | 44 |
1 files changed, 34 insertions, 10 deletions
diff --git a/infinite.cpp b/infinite.cpp index 22de917..f79d201 100644 --- a/infinite.cpp +++ b/infinite.cpp | |||
@@ -433,6 +433,8 @@ class fill_blanks { | |||
433 | int main(int argc, char** argv) | 433 | int main(int argc, char** argv) |
434 | { | 434 | { |
435 | srand(time(NULL)); | 435 | srand(time(NULL)); |
436 | rand(); rand(); rand(); rand(); | ||
437 | |||
436 | Magick::InitializeMagick(nullptr); | 438 | Magick::InitializeMagick(nullptr); |
437 | 439 | ||
438 | int delay = 60 * 60; | 440 | int delay = 60 * 60; |
@@ -450,15 +452,17 @@ int main(int argc, char** argv) | |||
450 | { | 452 | { |
451 | std::cout << "Generating text..." << std::endl; | 453 | std::cout << "Generating text..." << std::endl; |
452 | 454 | ||
453 | std::vector<std::string> forms; | 455 | std::map<std::string, std::vector<std::string>> groups; |
454 | std::ifstream datafile("forms.txt"); | 456 | std::ifstream datafile("forms.txt"); |
455 | if (!datafile.is_open()) | 457 | if (!datafile.is_open()) |
456 | { | 458 | { |
457 | std::cout << "Could not find forms.txt" << std::endl; | 459 | std::cout << "Could not find forms.txt" << std::endl; |
458 | return 1; | 460 | return 1; |
459 | } | 461 | } |
460 | 462 | ||
463 | bool newgroup = true; | ||
461 | std::string line; | 464 | std::string line; |
465 | std::string curgroup; | ||
462 | while (getline(datafile, line)) | 466 | while (getline(datafile, line)) |
463 | { | 467 | { |
464 | if (line.back() == '\r') | 468 | if (line.back() == '\r') |
@@ -466,13 +470,24 @@ int main(int argc, char** argv) | |||
466 | line.pop_back(); | 470 | line.pop_back(); |
467 | } | 471 | } |
468 | 472 | ||
469 | forms.push_back(line); | 473 | if (newgroup) |
474 | { | ||
475 | curgroup = line; | ||
476 | newgroup = false; | ||
477 | } else { | ||
478 | if (line.empty()) | ||
479 | { | ||
480 | newgroup = true; | ||
481 | } else { | ||
482 | groups[curgroup].push_back(line); | ||
483 | } | ||
484 | } | ||
470 | } | 485 | } |
471 | 486 | ||
472 | datafile.close(); | 487 | datafile.close(); |
473 | 488 | ||
474 | verbly::data database {"data.sqlite3"}; | 489 | verbly::data database {"data.sqlite3"}; |
475 | std::string action = forms[rand() % forms.size()]; | 490 | std::string action = "{FORM}"; |
476 | int tknloc; | 491 | int tknloc; |
477 | while ((tknloc = action.find("{")) != std::string::npos) | 492 | while ((tknloc = action.find("{")) != std::string::npos) |
478 | { | 493 | { |
@@ -487,12 +502,15 @@ int main(int argc, char** argv) | |||
487 | if (canontkn == "NOUN") | 502 | if (canontkn == "NOUN") |
488 | { | 503 | { |
489 | result = database.nouns().is_not_proper().random().limit(1).with_complexity(1).run().front().singular_form(); | 504 | result = database.nouns().is_not_proper().random().limit(1).with_complexity(1).run().front().singular_form(); |
490 | } else if (canontkn == "PLURAL_NOUN") | 505 | // } else if (canontkn == "PLURAL_NOUN") |
491 | { | 506 | // { |
492 | result = database.nouns().is_not_proper().requires_plural_form().random().limit(1).with_complexity(1).run().front().plural_form(); | 507 | // result = database.nouns().is_not_proper().requires_plural_form().random().limit(1).with_complexity(1).run().front().plural_form(); |
493 | } else if (canontkn == "ADJECTIVE") | 508 | // } else if (canontkn == "ADJECTIVE") |
509 | // { | ||
510 | // result = database.adjectives().with_complexity(1).random().limit(1).run().front().base_form(); | ||
511 | } else if (canontkn == "SUPERLATIVE") | ||
494 | { | 512 | { |
495 | result = database.adjectives().with_complexity(1).random().limit(1).run().front().base_form(); | 513 | result = database.adjectives().requires_superlative_form().random().limit(1).run().front().superlative_form(); |
496 | } else if (canontkn == "VERB") | 514 | } else if (canontkn == "VERB") |
497 | { | 515 | { |
498 | result = database.verbs().random().limit(1).run().front().infinitive_form(); | 516 | result = database.verbs().random().limit(1).run().front().infinitive_form(); |
@@ -520,7 +538,7 @@ int main(int argc, char** argv) | |||
520 | } else if (canontkn == "ADVERB") | 538 | } else if (canontkn == "ADVERB") |
521 | { | 539 | { |
522 | result = database.adverbs().with_complexity(1).random().limit(1).run().front().base_form(); | 540 | result = database.adverbs().with_complexity(1).random().limit(1).run().front().base_form(); |
523 | } else if (canontkn == "SENTENCE") | 541 | } else if (canontkn == "VERBLY_SENTENCE") |
524 | { | 542 | { |
525 | fill_blanks yeah {database}; | 543 | fill_blanks yeah {database}; |
526 | verbly::token action{ | 544 | verbly::token action{ |
@@ -532,6 +550,10 @@ int main(int argc, char** argv) | |||
532 | yeah.visit(action); | 550 | yeah.visit(action); |
533 | } | 551 | } |
534 | result = action.compile(); | 552 | result = action.compile(); |
553 | } else { | ||
554 | auto group = groups[canontkn]; | ||
555 | result = group[rand() % group.size()]; | ||
556 | std::cout << canontkn << ": " << group.size() << std::endl; | ||
535 | } | 557 | } |
536 | 558 | ||
537 | std::string finalresult; | 559 | std::string finalresult; |
@@ -555,6 +577,8 @@ int main(int argc, char** argv) | |||
555 | 577 | ||
556 | action.replace(tknloc, action.find("}")-tknloc+1, finalresult); | 578 | action.replace(tknloc, action.find("}")-tknloc+1, finalresult); |
557 | } | 579 | } |
580 | |||
581 | std::cout << action << std::endl; | ||
558 | 582 | ||
559 | double zoom = 2.0; | 583 | double zoom = 2.0; |
560 | double target_w = 1280; | 584 | double target_w = 1280; |