diff options
-rw-r--r-- | generator.cpp | 27 | ||||
-rw-r--r-- | generator.h | 5 | ||||
-rw-r--r-- | main.cpp | 62 |
3 files changed, 53 insertions, 41 deletions
diff --git a/generator.cpp b/generator.cpp index c4dd76f..6b6c1be 100644 --- a/generator.cpp +++ b/generator.cpp | |||
@@ -5,7 +5,7 @@ | |||
5 | #include <cctype> | 5 | #include <cctype> |
6 | #include <hkutil/string.h> | 6 | #include <hkutil/string.h> |
7 | 7 | ||
8 | verbly::filter Generator::MakeHintFilter(verbly::filter subfilter, Height height, Colour colour, FilterDirection filter_direction) | 8 | verbly::filter Generator::MakeHintFilter(verbly::filter subfilter, Height height, Colour colour, FilterDirection filter_direction) const |
9 | { | 9 | { |
10 | switch (colour) { | 10 | switch (colour) { |
11 | case kWhite: { | 11 | case kWhite: { |
@@ -304,7 +304,7 @@ bool Generator::GenerateSinglePanelImpl(std::string name, Height height, Colour | |||
304 | if (questions.size() < 1) return false; | 304 | if (questions.size() < 1) return false; |
305 | verbly::form question = questions.front();// questions.at(std::uniform_int_distribution<int>(0, questions.size())(rng_)); | 305 | verbly::form question = questions.front();// questions.at(std::uniform_int_distribution<int>(0, questions.size())(rng_)); |
306 | 306 | ||
307 | if (IsClueTrivial(height, colour, question, solution)) { | 307 | if (IsClueTrivial(height, colour, question, solution, options)) { |
308 | return false; | 308 | return false; |
309 | } | 309 | } |
310 | if (options.max_len_diff >= 0 && std::abs(static_cast<int>(question.getText().size() - solution.getText().size())) > options.max_len_diff) { | 310 | if (options.max_len_diff >= 0 && std::abs(static_cast<int>(question.getText().size() - solution.getText().size())) > options.max_len_diff) { |
@@ -357,7 +357,7 @@ bool Generator::GenerateDoublePanelImpl(std::string name1, std::string name2, He | |||
357 | 357 | ||
358 | //std::shuffle(questions.begin(), questions.end(), rng_); | 358 | //std::shuffle(questions.begin(), questions.end(), rng_); |
359 | 359 | ||
360 | if (IsClueTrivial(height, colour, questions[0], solution) || IsClueTrivial(height, colour, questions[1], solution)) { | 360 | if (IsClueTrivial(height, colour, questions[0], solution, options) || IsClueTrivial(height, colour, questions[1], solution, options)) { |
361 | return false; | 361 | return false; |
362 | } | 362 | } |
363 | if (options.max_len_diff >= 0) { | 363 | if (options.max_len_diff >= 0) { |
@@ -395,7 +395,8 @@ bool Generator::GenerateCohintedPanelsImpl(std::string name1, std::string name2, | |||
395 | 395 | ||
396 | //std::shuffle(questions.begin(), questions.end(), rng_); | 396 | //std::shuffle(questions.begin(), questions.end(), rng_); |
397 | 397 | ||
398 | if (IsClueTrivial(height, colour, question, solutions[0]) || IsClueTrivial(height, colour, question, solutions[1])) { | 398 | if (IsClueTrivial(height, colour, question, solutions[0], options) |
399 | || IsClueTrivial(height, colour, question, solutions[1], options)) { | ||
399 | return false; | 400 | return false; |
400 | } | 401 | } |
401 | if (options.max_len_diff >= 0) { | 402 | if (options.max_len_diff >= 0) { |
@@ -428,7 +429,7 @@ bool Generator::GeneratePairedPanelsImpl(std::string name1, std::string name2, H | |||
428 | if (questions.size() < 1) return false; | 429 | if (questions.size() < 1) return false; |
429 | verbly::form question = questions.front();// questions.at(std::uniform_int_distribution<int>(0, questions.size())(rng_)); | 430 | verbly::form question = questions.front();// questions.at(std::uniform_int_distribution<int>(0, questions.size())(rng_)); |
430 | 431 | ||
431 | if (IsClueTrivial(height, effectiveColour, question, solution)) { | 432 | if (IsClueTrivial(height, effectiveColour, question, solution, options)) { |
432 | return false; | 433 | return false; |
433 | } | 434 | } |
434 | 435 | ||
@@ -506,7 +507,7 @@ bool Generator::GeneratePanelStackImpl(std::string top_name, Colour top_colour, | |||
506 | if (questions.empty()) return false; | 507 | if (questions.empty()) return false; |
507 | top_hint = questions.front().getText(); | 508 | top_hint = questions.front().getText(); |
508 | 509 | ||
509 | if (IsClueTrivial(kTop, top_colour, questions.front(), solution)) { | 510 | if (IsClueTrivial(kTop, top_colour, questions.front(), solution, options)) { |
510 | return false; | 511 | return false; |
511 | } | 512 | } |
512 | } | 513 | } |
@@ -517,7 +518,7 @@ bool Generator::GeneratePanelStackImpl(std::string top_name, Colour top_colour, | |||
517 | if (questions.empty()) return false; | 518 | if (questions.empty()) return false; |
518 | middle_hint = questions.front().getText(); | 519 | middle_hint = questions.front().getText(); |
519 | 520 | ||
520 | if (IsClueTrivial(kMiddle, middle_colour, questions.front(), solution)) { | 521 | if (IsClueTrivial(kMiddle, middle_colour, questions.front(), solution, options)) { |
521 | return false; | 522 | return false; |
522 | } | 523 | } |
523 | } | 524 | } |
@@ -528,7 +529,7 @@ bool Generator::GeneratePanelStackImpl(std::string top_name, Colour top_colour, | |||
528 | if (questions.empty()) return false; | 529 | if (questions.empty()) return false; |
529 | bottom_hint = questions.front().getText(); | 530 | bottom_hint = questions.front().getText(); |
530 | 531 | ||
531 | if (IsClueTrivial(kBottom, bottom_colour, questions.front(), solution)) { | 532 | if (IsClueTrivial(kBottom, bottom_colour, questions.front(), solution, options)) { |
532 | return false; | 533 | return false; |
533 | } | 534 | } |
534 | } | 535 | } |
@@ -708,6 +709,7 @@ verbly::filter Generator::GetWordFilter(FilterDirection dir, GenerateOptions opt | |||
708 | wordFilter &= (verbly::form::complexity == 2); | 709 | wordFilter &= (verbly::form::complexity == 2); |
709 | } else { | 710 | } else { |
710 | wordFilter &= (verbly::form::complexity == 1); | 711 | wordFilter &= (verbly::form::complexity == 1); |
712 | wordFilter &= (verbly::form::frequency > 2000000); | ||
711 | } | 713 | } |
712 | } else { | 714 | } else { |
713 | wordFilter &= ((verbly::form::complexity > 1) || (verbly::form::frequency > 2000000)); | 715 | wordFilter &= ((verbly::form::complexity > 1) || (verbly::form::frequency > 2000000)); |
@@ -720,8 +722,15 @@ bool isDigitWrapper(unsigned char ch) { | |||
720 | return std::isdigit(ch); | 722 | return std::isdigit(ch); |
721 | } | 723 | } |
722 | 724 | ||
723 | bool Generator::IsClueTrivial(Height height, Colour colour, const verbly::form& clue, const verbly::form& solution) const | 725 | bool Generator::IsClueTrivial(Height height, Colour colour, const verbly::form& clue, const verbly::form& solution, GenerateOptions options) const |
724 | { | 726 | { |
727 | if (!options.allow_top_expansion && height == kTop) { | ||
728 | verbly::filter questionFilter = MakeHintFilter(solution, kMiddle, colour, kTowardQuestion) && clue; | ||
729 | if (!database_->forms(questionFilter).all().empty()) { | ||
730 | return true; | ||
731 | } | ||
732 | } | ||
733 | |||
725 | if (height == kTop && colour == kWhite) | 734 | if (height == kTop && colour == kWhite) |
726 | { | 735 | { |
727 | return !database_->forms((verbly::filter)clue && (verbly::word::synonyms %= solution)).all().empty(); | 736 | return !database_->forms((verbly::filter)clue && (verbly::word::synonyms %= solution)).all().empty(); |
diff --git a/generator.h b/generator.h index 1c7934e..7803004 100644 --- a/generator.h +++ b/generator.h | |||
@@ -56,6 +56,7 @@ struct GenerateOptions { | |||
56 | std::string copy_hidden; // supported by single mid white | 56 | std::string copy_hidden; // supported by single mid white |
57 | bool force_two_words = false; | 57 | bool force_two_words = false; |
58 | bool must_be_broad = false; // the solution must also be gettable by bottom white/red/blue. supported by single and double | 58 | bool must_be_broad = false; // the solution must also be gettable by bottom white/red/blue. supported by single and double |
59 | bool allow_top_expansion = false; // this disables the triviality check that top puzzles can't also apply to middle | ||
59 | }; | 60 | }; |
60 | 61 | ||
61 | class Wanderlust { | 62 | class Wanderlust { |
@@ -197,7 +198,7 @@ public: | |||
197 | 198 | ||
198 | private: | 199 | private: |
199 | 200 | ||
200 | verbly::filter MakeHintFilter(verbly::filter subfilter, Height height, Colour colour, FilterDirection filter_direction); | 201 | verbly::filter MakeHintFilter(verbly::filter subfilter, Height height, Colour colour, FilterDirection filter_direction) const; |
201 | 202 | ||
202 | bool GenerateSinglePanelImpl(std::string name, Height height, Colour colour, GenerateOptions options); | 203 | bool GenerateSinglePanelImpl(std::string name, Height height, Colour colour, GenerateOptions options); |
203 | 204 | ||
@@ -215,7 +216,7 @@ private: | |||
215 | 216 | ||
216 | verbly::filter GetWordFilter(FilterDirection direction, GenerateOptions options) const; | 217 | verbly::filter GetWordFilter(FilterDirection direction, GenerateOptions options) const; |
217 | 218 | ||
218 | bool IsClueTrivial(Height height, Colour colour, const verbly::form& clue, const verbly::form& solution) const; | 219 | bool IsClueTrivial(Height height, Colour colour, const verbly::form& clue, const verbly::form& solution, GenerateOptions options = {}) const; |
219 | 220 | ||
220 | unsigned int seed_; | 221 | unsigned int seed_; |
221 | std::mt19937 rng_; | 222 | std::mt19937 rng_; |
diff --git a/main.cpp b/main.cpp index 3b6e8e1..3d53cb0 100644 --- a/main.cpp +++ b/main.cpp | |||
@@ -174,6 +174,8 @@ public: | |||
174 | // The Observant | 174 | // The Observant |
175 | 175 | ||
176 | // Knight/Night | 176 | // Knight/Night |
177 | // there are some .allow_top_expansion = true panels that don't do anything yet | ||
178 | // and some paired top/middle stacks that aren't implemented bc honestly who caressss | ||
177 | gen_.GenerateSinglePanel("Panel_rat_tar", kMiddle, kBlack, {.palindrome = kRejectPalindrome}); | 179 | gen_.GenerateSinglePanel("Panel_rat_tar", kMiddle, kBlack, {.palindrome = kRejectPalindrome}); |
178 | gen_.GenerateSinglePanel("Panel_discover_recover", kMiddle, kPurple, {.max_len_diff = 1}); | 180 | gen_.GenerateSinglePanel("Panel_discover_recover", kMiddle, kPurple, {.max_len_diff = 1}); |
179 | gen_.GenerateSinglePanel("Panel_deadend_deadened", kTop, kWhite, {.multiword = true}); | 181 | gen_.GenerateSinglePanel("Panel_deadend_deadened", kTop, kWhite, {.multiword = true}); |
@@ -181,9 +183,9 @@ public: | |||
181 | gen_.GenerateSinglePanel("Panel_warner_corner", kTop, kPurple); | 183 | gen_.GenerateSinglePanel("Panel_warner_corner", kTop, kPurple); |
182 | gen_.GenerateSinglePanel("Panel_lies_lies", kMiddle, kWhite, {.obscure_hint = true, .max_answer_len = 20}); | 184 | gen_.GenerateSinglePanel("Panel_lies_lies", kMiddle, kWhite, {.obscure_hint = true, .max_answer_len = 20}); |
183 | gen_.GeneratePairedPanels("Panel_night_knight", "Panel_knight_night", kMiddle, kBlue); | 185 | gen_.GeneratePairedPanels("Panel_night_knight", "Panel_knight_night", kMiddle, kBlue); |
184 | gen_.GenerateSinglePanel("Panel_bee_be", kMiddle, kRed); | 186 | gen_.GenerateSinglePanel("Panel_bee_be", kMiddle, kRed, {.allow_top_expansion = true}); |
185 | gen_.GenerateSinglePanel("Panel_new_knew", kMiddle, kBlue, {.max_answer_len = 4}); | 187 | gen_.GenerateSinglePanel("Panel_new_knew", kMiddle, kBlue, {.max_answer_len = 4, .allow_top_expansion = true}); |
186 | gen_.GenerateSinglePanel("Panel_fore_for", kMiddle, kRed); | 188 | gen_.GenerateSinglePanel("Panel_fore_for", kMiddle, kRed, {.allow_top_expansion = true}); |
187 | gen_.GenerateCohintedPanels("Panel_trusted_trust", "Panel_trusted_rusted", kMiddle, kRed, {.save_for_later = true}); | 189 | gen_.GenerateCohintedPanels("Panel_trusted_trust", "Panel_trusted_rusted", kMiddle, kRed, {.save_for_later = true}); |
188 | gen_.GenerateCohintedPanels("Panel_rust_trust", "Panel_rust_crust", kMiddle, kBlue, {.max_answer_len = 5, .save_for_later = true}); | 190 | gen_.GenerateCohintedPanels("Panel_rust_trust", "Panel_rust_crust", kMiddle, kBlue, {.max_answer_len = 5, .save_for_later = true}); |
189 | gen_.GenerateSinglePanel("Panel_encrusted_rust", kMiddle, kRed, {.save_for_later = true}); | 191 | gen_.GenerateSinglePanel("Panel_encrusted_rust", kMiddle, kRed, {.save_for_later = true}); |
@@ -213,11 +215,11 @@ public: | |||
213 | gen_.GenerateSinglePanel("Panel_locked_knocked", kMiddle, kPurple, {.max_answer_len = 5, .reuse_solution = true, .unique_pool = "initiated", .max_len_diff = 1}); | 215 | gen_.GenerateSinglePanel("Panel_locked_knocked", kMiddle, kPurple, {.max_answer_len = 5, .reuse_solution = true, .unique_pool = "initiated", .max_len_diff = 1}); |
214 | gen_.GenerateSinglePanel("Panel_daughter_laughter", kMiddle, kPurple, {.reuse_solution = true, .unique_pool = "initiated", .max_len_diff = 1}); | 216 | gen_.GenerateSinglePanel("Panel_daughter_laughter", kMiddle, kPurple, {.reuse_solution = true, .unique_pool = "initiated", .max_len_diff = 1}); |
215 | gen_.GenerateDoublePanel("Panel_move_love", "Panel_stove_love", kMiddle, kPurple, {.reuse_solution = true, .unique_pool = "initiated", .max_len_diff = 1}); | 217 | gen_.GenerateDoublePanel("Panel_move_love", "Panel_stove_love", kMiddle, kPurple, {.reuse_solution = true, .unique_pool = "initiated", .max_len_diff = 1}); |
216 | gen_.GenerateSinglePanel("Panel_scope_type", kMiddle, kPurple, {.reuse_solution = true, .unique_pool = "initiated", .max_len_diff = 1}); | 218 | gen_.GenerateSinglePanel("Panel_scope_type", kMiddle, kPurple, {.reuse_solution = true, .unique_pool = "initiated", .max_len_diff = 1, .allow_top_expansion = true}); |
217 | gen_.GenerateSinglePanel("Panel_abyss_this", kMiddle, kPurple, {.reuse_solution = true, .unique_pool = "initiated", .max_len_diff = 1}); | 219 | gen_.GenerateSinglePanel("Panel_abyss_this", kMiddle, kPurple, {.reuse_solution = true, .unique_pool = "initiated", .max_len_diff = 1}); |
218 | gen_.GenerateDoublePanel("Panel_sweat_great", "Panel_beat_great", kMiddle, kPurple, {.reuse_solution = true, .unique_pool = "initiated", .max_len_diff = 1}); | 220 | gen_.GenerateDoublePanel("Panel_sweat_great", "Panel_beat_great", kMiddle, kPurple, {.reuse_solution = true, .unique_pool = "initiated", .max_len_diff = 1}); |
219 | gen_.GenerateSinglePanel("Panel_alumni_hi", kTop, kPurple, {.reuse_solution = true, .unique_pool = "initiated"}); | 221 | gen_.GenerateSinglePanel("Panel_alumni_hi", kTop, kPurple, {.reuse_solution = true, .unique_pool = "initiated", .allow_top_expansion = true}); |
220 | gen_.GenerateSinglePanel("Panel_wrath_path", kMiddle, kPurple, {.reuse_solution = true, .unique_pool = "initiated", .max_len_diff = 1}); | 222 | gen_.GenerateSinglePanel("Panel_wrath_path", kMiddle, kPurple, {.reuse_solution = true, .unique_pool = "initiated", .max_len_diff = 1, .allow_top_expansion = true}); |
221 | gen_.GenerateDoublePanel("Panel_knight_write", "Panel_byte_write", kTop, kPurple, {.reuse_solution = true, .unique_pool = "initiated", .max_len_diff = 2}); | 223 | gen_.GenerateDoublePanel("Panel_knight_write", "Panel_byte_write", kTop, kPurple, {.reuse_solution = true, .unique_pool = "initiated", .max_len_diff = 2}); |
222 | gen_.GenerateSinglePanel("Panel_maim_same", kTop, kPurple, {.reuse_solution = true, .unique_pool = "initiated", .max_len_diff = 0}); | 224 | gen_.GenerateSinglePanel("Panel_maim_same", kTop, kPurple, {.reuse_solution = true, .unique_pool = "initiated", .max_len_diff = 0}); |
223 | gen_.GenerateSinglePanel("Panel_bare_bear", kTop, kPurple, {.reuse_solution = true, .unique_pool = "initiated", .max_len_diff = 0}); | 225 | gen_.GenerateSinglePanel("Panel_bare_bear", kTop, kPurple, {.reuse_solution = true, .unique_pool = "initiated", .max_len_diff = 0}); |
@@ -304,24 +306,24 @@ public: | |||
304 | gen_.GenerateOneRoadManyTurns("Panel_order_onepathmanyturns", "Panel_eon_one", "Panel_path_road", "Panel_any_many", "Panel_send_use_turns"); | 306 | gen_.GenerateOneRoadManyTurns("Panel_order_onepathmanyturns", "Panel_eon_one", "Panel_path_road", "Panel_any_many", "Panel_send_use_turns"); |
305 | 307 | ||
306 | // Rhyme Rooms | 308 | // Rhyme Rooms |
307 | gen_.GeneratePanelStack("Panel_ascend_rhyme", kPurple, "", {}, "Panel_ascend_syn", kWhite, {.unique_pool = "rhyme"}); | 309 | gen_.GeneratePanelStack("Panel_ascend_rhyme", kPurple, "", {}, "Panel_ascend_syn", kWhite, {.unique_pool = "rhyme", .allow_top_expansion = true}); |
308 | gen_.GeneratePanelStack("Panel_double_rhyme", kPurple, "", {}, "Panel_double_syn", kWhite, {.unique_pool = "rhyme"}); | 310 | gen_.GeneratePanelStack("Panel_double_rhyme", kPurple, "", {}, "Panel_double_syn", kWhite, {.unique_pool = "rhyme", .allow_top_expansion = true}); |
309 | gen_.GeneratePanelStack("Panel_blocked_rhyme", kPurple, "", {}, "Panel_blocked_syn", kWhite, {.unique_pool = "rhyme"}); | 311 | gen_.GeneratePanelStack("Panel_blocked_rhyme", kPurple, "", {}, "Panel_blocked_syn", kWhite, {.unique_pool = "rhyme", .allow_top_expansion = true}); |
310 | gen_.GeneratePanelStack("Panel_rise_rhyme", kPurple, "", {}, "Panel_rise_syn", kWhite, {.unique_pool = "rhyme"}); | 312 | gen_.GeneratePanelStack("Panel_rise_rhyme", kPurple, "", {}, "Panel_rise_syn", kWhite, {.unique_pool = "rhyme", .allow_top_expansion = true}); |
311 | gen_.GeneratePanelStack("Panel_crystal_rhyme", kPurple, "", {}, "Panel_crystal_syn", kWhite, {.unique_pool = "rhyme"}); | 313 | gen_.GeneratePanelStack("Panel_crystal_rhyme", kPurple, "", {}, "Panel_crystal_syn", kWhite, {.unique_pool = "rhyme", .allow_top_expansion = true}); |
312 | gen_.GeneratePanelStack("Panel_creative_rhyme", kPurple, "", {}, "Panel_creative_syn", kWhite, {.unique_pool = "rhyme"}); | 314 | gen_.GeneratePanelStack("Panel_creative_rhyme", kPurple, "", {}, "Panel_creative_syn", kWhite, {.unique_pool = "rhyme", .allow_top_expansion = true}); |
313 | gen_.GeneratePanelStack("Panel_child_rhyme", kPurple, "", {}, "Panel_child_syn", kWhite, {.unique_pool = "rhyme"}); | 315 | gen_.GeneratePanelStack("Panel_child_rhyme", kPurple, "", {}, "Panel_child_syn", kWhite, {.unique_pool = "rhyme", .allow_top_expansion = true}); |
314 | gen_.GeneratePanelStack("Panel_hidden_rhyme", kPurple, "", {}, "Panel_hidden_syn", kWhite, {.unique_pool = "rhyme"}); | 316 | gen_.GeneratePanelStack("Panel_hidden_rhyme", kPurple, "", {}, "Panel_hidden_syn", kWhite, {.unique_pool = "rhyme", .allow_top_expansion = true}); |
315 | gen_.GeneratePanelStack("Panel_word_rhyme", kPurple, "", {}, "Panel_word_whole", kBlue, {.unique_pool = "rhyme"}); | 317 | gen_.GeneratePanelStack("Panel_word_rhyme", kPurple, "", {}, "Panel_word_whole", kBlue, {.unique_pool = "rhyme", .allow_top_expansion = true}); |
316 | gen_.GeneratePanelStack("Panel_silent_rhyme", kPurple, "", {}, "Panel_silent_syn", kWhite, {.unique_pool = "rhyme"}); | 318 | gen_.GeneratePanelStack("Panel_silent_rhyme", kPurple, "", {}, "Panel_silent_syn", kWhite, {.unique_pool = "rhyme", .allow_top_expansion = true}); |
317 | gen_.GeneratePanelStack("Panel_bones_rhyme", kPurple, "", {}, "Panel_bones_syn", kWhite, {.unique_pool = "rhyme"}); | 319 | gen_.GeneratePanelStack("Panel_bones_rhyme", kPurple, "", {}, "Panel_bones_syn", kWhite, {.unique_pool = "rhyme", .allow_top_expansion = true}); |
318 | gen_.GeneratePanelStack("Panel_sentence_rhyme", kPurple, "", {}, "Panel_sentence_whole", kBlue, {.unique_pool = "rhyme"}); | 320 | gen_.GeneratePanelStack("Panel_sentence_rhyme", kPurple, "", {}, "Panel_sentence_whole", kBlue, {.unique_pool = "rhyme", .allow_top_expansion = true}); |
319 | gen_.GeneratePanelStack("Panel_dream_rhyme", kPurple, "", {}, "Panel_dream_syn", kWhite, {.unique_pool = "rhyme"}); | 321 | gen_.GeneratePanelStack("Panel_dream_rhyme", kPurple, "", {}, "Panel_dream_syn", kWhite, {.unique_pool = "rhyme", .allow_top_expansion = true}); |
320 | gen_.GeneratePanelStack("Panel_mystery_rhyme", kPurple, "", {}, "Panel_mystery_syn", kWhite, {.unique_pool = "rhyme"}); | 322 | gen_.GeneratePanelStack("Panel_mystery_rhyme", kPurple, "", {}, "Panel_mystery_syn", kWhite, {.unique_pool = "rhyme", .allow_top_expansion = true}); |
321 | gen_.GeneratePanelStack("Panel_jump_rhyme", kPurple, "", {}, "Panel_jump_syn", kWhite, {.unique_pool = "rhyme"}); | 323 | gen_.GeneratePanelStack("Panel_jump_rhyme", kPurple, "", {}, "Panel_jump_syn", kWhite, {.unique_pool = "rhyme", .allow_top_expansion = true}); |
322 | gen_.GeneratePanelStack("Panel_fall_rhyme", kPurple, "", {}, "Panel_fall_syn", kWhite, {.unique_pool = "rhyme"}); | 324 | gen_.GeneratePanelStack("Panel_fall_rhyme", kPurple, "", {}, "Panel_fall_syn", kWhite, {.unique_pool = "rhyme", .allow_top_expansion = true}); |
323 | //gen_.GeneratePanelStack("Panel_return_rhyme", kPurple, "", {}, "Panel_return_ant", kBlack, {.unique_pool = "rhyme"}); | 325 | //gen_.GeneratePanelStack("Panel_return_rhyme", kPurple, "", {}, "Panel_return_ant", kBlack, {.unique_pool = "rhyme", .allow_top_expansion = true}); |
324 | //gen_.GeneratePanelStack("Panel_descend_rhyme", kPurple, "", {}, "Panel_descend_ant", kBlack, {.unique_pool = "rhyme"}); | 326 | //gen_.GeneratePanelStack("Panel_descend_rhyme", kPurple, "", {}, "Panel_descend_ant", kBlack, {.unique_pool = "rhyme", .allow_top_expansion = true}); |
325 | // ^ commenting those out for now because they take disproportionately long to generate currently | 327 | // ^ commenting those out for now because they take disproportionately long to generate currently |
326 | gen_.GenerateSinglePanel("Panel_leap_leap", kMiddle, kWhite, {.obscure_hint = true}); | 328 | gen_.GenerateSinglePanel("Panel_leap_leap", kMiddle, kWhite, {.obscure_hint = true}); |
327 | 329 | ||
@@ -405,11 +407,11 @@ public: | |||
405 | 407 | ||
406 | 408 | ||
407 | // The Colorful | 409 | // The Colorful |
408 | gen_.GenerateSinglePanel("Panel_begin_start", kBottom, kWhite, {.reuse_solution = true}); | 410 | gen_.GenerateSinglePanel("Panel_begin_start", kBottom, kWhite, {.reuse_solution = true, .unique_pool = "traveled"}); |
409 | gen_.GenerateSinglePanel("Panel_found_lost", kBottom, kBlack, {.reuse_solution = true}); | 411 | gen_.GenerateSinglePanel("Panel_found_lost", kBottom, kBlack, {.reuse_solution = true, .unique_pool = "agreeable"}); |
410 | gen_.GenerateSinglePanel("Panel_loaf_crust", kBottom, kRed, {.reuse_solution = true}); | 412 | gen_.GenerateSinglePanel("Panel_loaf_crust", kBottom, kRed, {.reuse_solution = true, .unique_pool = "bold"}); |
411 | //Panel_eggs_breakfast: cream? butter! | 413 | //Panel_eggs_breakfast: cream? butter! |
412 | gen_.GenerateSinglePanel("Panel_sun_sky", kBottom, kBlue, {.reuse_solution = true}); | 414 | gen_.GenerateSinglePanel("Panel_sun_sky", kBottom, kBlue, {.reuse_solution = true, .unique_pool = "undeterred"}); |
413 | //Panel_teacher_substitute: spoon? fork! | 415 | //Panel_teacher_substitute: spoon? fork! |
414 | //Panel_walnuts_orange: letters? numbers! | 416 | //Panel_walnuts_orange: letters? numbers! |
415 | //Panel_path_i: walls? green! | 417 | //Panel_path_i: walls? green! |
@@ -506,7 +508,7 @@ public: | |||
506 | gen_.GenerateSinglePanel("Panel_red_top_2", kTop, kRed); | 508 | gen_.GenerateSinglePanel("Panel_red_top_2", kTop, kRed); |
507 | gen_.GenerateSinglePanel("Panel_red_top_3", kTop, kRed); | 509 | gen_.GenerateSinglePanel("Panel_red_top_3", kTop, kRed); |
508 | gen_.GenerateSinglePanel("Panel_red_top_4", kTop, kRed); | 510 | gen_.GenerateSinglePanel("Panel_red_top_4", kTop, kRed); |
509 | //gen_.GeneratePanelStack("Panel_red_top_5", kRed, "Panel_red_mid_2", kRed, "", {}); // slow | 511 | //gen_.GeneratePanelStack("Panel_red_top_5", kRed, "Panel_red_mid_2", kRed, "", {}, .allow_top_expansion = true); // slow |
510 | gen_.GenerateSinglePanel("Panel_red_mid_1", kMiddle, kRed); | 512 | gen_.GenerateSinglePanel("Panel_red_mid_1", kMiddle, kRed); |
511 | gen_.GenerateSinglePanel("Panel_red_mid_3", kMiddle, kRed); | 513 | gen_.GenerateSinglePanel("Panel_red_mid_3", kMiddle, kRed); |
512 | gen_.GeneratePanelStack("", {}, "Panel_red_mid_4", kRed, "Panel_red_bot_4", kRed); | 514 | gen_.GeneratePanelStack("", {}, "Panel_red_mid_4", kRed, "Panel_red_bot_4", kRed); |
@@ -518,7 +520,7 @@ public: | |||
518 | 520 | ||
519 | // The Artistic | 521 | // The Artistic |
520 | gen_.GeneratePanelStack("Panel_blue_top_1", kBlue, "", {}, "Panel_red_bot_1", kRed); | 522 | gen_.GeneratePanelStack("Panel_blue_top_1", kBlue, "", {}, "Panel_red_bot_1", kRed); |
521 | gen_.GeneratePanelStack("", {}, "Panel_red_mid_2", kRed, "Panel_blue_bot_2", kBlue); | 523 | gen_.GeneratePanelStack("", {}, "Panel_red_mid_22", kRed, "Panel_blue_bot_2", kBlue); |
522 | gen_.GeneratePanelStack("", {}, "Panel_blue_mid_3", kBlue, "Panel_red_bot_3", kRed); | 524 | gen_.GeneratePanelStack("", {}, "Panel_blue_mid_3", kBlue, "Panel_red_bot_3", kRed); |
523 | gen_.GeneratePanelStack("Panel_red_top_4", kRed, "Panel_blue_mid_4", kBlue, "", {}); | 525 | gen_.GeneratePanelStack("Panel_red_top_4", kRed, "Panel_blue_mid_4", kBlue, "", {}); |
524 | gen_.GeneratePanelStack("Panel_yellow_top_5", kYellow, "", {}, "Panel_blue_bot_5", kBlue); | 526 | gen_.GeneratePanelStack("Panel_yellow_top_5", kYellow, "", {}, "Panel_blue_bot_5", kBlue); |