Thistle Gardens | Modern Sheep Farm | Silkworm Farm |
Vitamins can have concentrations that range from 0-99, but the requirements are specified as A+B-C~N+, for example, without indicating the unrestrained vitamins. The vitamin levels shown on the Thistle Garden control widget appear to be real numbers that are truncated, not rounded, and those numerical vitamin levels are further evaluated and inventoried as only one of three states for each vitamin, - < 21, ~, 79 < +.
There are 3 possible states for each of 7 different vitamins, and therefore 3*7=21 distinct states for any particular thistle if we ignore combinations. For Modern Sheep Farms the required thistle must have ~ or + values for two specified vitamins. If we pretend that all of the vitamin states are equally probable, and it's actually pretty easy to force a couple of vitamins above 21, the odds that a thistle which has the first vitamin also has the second vitamin is 4/21 * 2/18 = 2%. If you have 50 varieties of thistle you'll probably have what you need to feed the sheep. Sheep are easy to feed.
Silkworms are more difficult. Four of the vitamins must have a particular state. As each of the seven vitamins can be in one of three different states, the number of possible thistle specifications for feeding the silkworms is somewhat less than 3^7=2187, because -~+ are exclusive states and only 4 of the 7 Vitamins are restrained. Your odds that a particular thistle will have everything that you need should be 4/21 * 3/18 * 2/15 * 1/12 = 0.035%. If you had a random assortment of thistles you'd need 2835 different varieties on hand, so it's not practical to warehouse thistles nor to list every possible recipe, especially so when environmental conditions may allow various recipes to reach a given target state. We will therefore emphasize:
As you can well imagine, the amount of sunlight is an important factor that influences which conversions are available, and also the rate of conversion in some cases. Controlling the amount of Sunlight isn't tricky, you just have to grow thistles at the appropriate time of day for what you want to accomplish.
The available sunshine is a tinkered sinusoidal, with an amplitude of 1.3, a cropped period of 26.6 hours, and some clamping. The available sunshine when the canopy is closed is always 1/3 of the available sunshine when the canopy is open.
It doesn't seem to matter exactly how you managed to catch the right amount of available sunshine. Opening the canopy at 6:00am or 6:00pm is the same 20% as closing the canopy at 7:20am or 4:40pm.
WARNING: These conversions were applicable during Tale 1 Thistles. The conversions have definitely changed for Tale 3; how much they've changed is a part of what we're testing.
The conversion relationships are what makes Thistle Cultivation an interesting puzzle. Some observations:
There are 20 known conversions, with some multiples for the same pairs, but only 80% of them are available on any given game day. The weather changes at midnight.
The puzzle then, is to solve a maze with several interesting wrinkles.
The solution is not to traverse the maze, but rather to obtain the desired quantity of vitamins at four different nodes.
We're using Hypersnap to record and print the data from each test.
The data tables indicate the Game Date (different days can provide different results), followed by Step, Ingredients, and Vitamins arranged exactly as they are presented on the screen.
The sort order for the significant states is in descending binary order from 11111 to 00000, with 1 for any value > 0 and 0 for 0. Dung and Urine are treated as available or not available, regardless of their actual values, but within each binary category of tests the other ingredients are further sorted in descending order by their actual values.
The descending sort order is
It's very important to recognize which vitamins are dynamic, and which vitamins are static. If you take a look at the associated spreadsheet, we're tracking the difference between the indicated state and the subsequent state. In other words, the Thistles.xls spreadsheet allows us to discern how each state should behave, regardless of how we got to that state, by using autofiltering to select states that may be due to the same conversion.
We'll use the convention of showing -nn (a negative value) to indicate that a particular value has stabilized, while nn (a positive value) indicates that the value will be different on the next step. Although the vitamin values are never actually negative, the convenient use of a negative for static values allows us to use basic auto-filtering tools to exclude the variables that are not effected by the current conversions (or are perhaps in equilibrium).
As each test starts with all ingredients at 50%, five steps are sufficient to zero out any undesired ingredients (but you'll very likely still have some stray vitamins). We'll therefore snapshot the initialization tests at step 6 and then move on to other tests rather than waiting for the predictable conversions to reach a maximum value.
Part of the initialization test regime will be to determine just how sensitive the various conversions are to Available Sunshine, and to define equivalent ranges. Take a close look at the test series for 0,99,99,99,S. We'll initially track Available Sunshine in the following ranges:
To reiterate, for this set of initialization tests Dung, Urine, H2O, and Oxygen will be either minimized or maximized, while Sunshine will be categorized as 0%, 1%-32%, 33%, 34%-98%, or 99%. We'll only worry about five different sunlight conditions unless test results suggest that other breakpoints are significant.
The initialization test set therefore has 2*2*2*2*2=32 + 2*2*2*2*3=48 = 80 differentiated states. If multiple values are shown for a particular state it's because the weather changed, and the date with the highest number of active conversions will be bolded.
Do please note that only the tests for Iteration 6 are initialization tests. Initialization tests should be entirely reproducible. At iteration 0, immediately clamp any ingredient value that shows as 99 and keep it at 99, while letting the rest of of the values drift down to 0. If you get different tests results, it's because different conversions were available on that day.
Where an iteration other than 6 is indicated, the ingredient data serves primarily as an index to the one or more vitamin conversions are of interest. It is likely that getting to the indicated state required multiple strategies or intermediate ingredient values, and without going back to the original recipe (Thank God for Hypersnap!) it's not likely that you would accidently get the exact same results.
If you take a look at the attached Thistles.xls spreadsheet, we're also tracking the rate of change for each of the vitamins. How much of each vitamin has accumulated is nice to know, and it's actually the ultimate objective, but for research purposes the critical datum is the Rate of Change, and thereby the discernment of the relevant conversion pairs and conditions.
GameDate | I | Nit | Pot | H2O | Oxy | Sun | Asc | Bio | Car | Fol | Nia | Pry | Thi | Ambient Conditions For This Conversion |
3 Peret III-19 | 6 | 99 | 99 | 99 | 99 | 33 | 19 | 0 | 19 | 0 | 0 | 0 | 0 | Car U O99 |
3 Peret II-26 | 6 | 99 | 99 | 99 | 99 | 5 | 0 | 15 | 19 | 0 | 0 | 0 | 0 | Car U O99 |
3 Peret III-28 | 6 | 99 | 99 | 99 | 99 | 0 | 0 | 15 | 19 | 0 | 39 | 0 | 0 | Car U O99 Nia H99 |
3 Peret III-19 | 6 | 99 | 99 | 99 | 0 | 99 | 0 | 0 | 0 | 0 | 8 | -3 | 0 | Nia H99 |
3 Peret III-19 | 6 | 99 | 99 | 99 | 0 | 33 | 19 | 0 | 0 | 0 | 0 | 0 | 0 | Nia H99 |
3 Peret II-26 | 6 | 99 | 99 | 99 | 0 | 2 | 0 | 12 | 0 | 0 | 0 | 0 | 0 | |
3 Peret III-28 | 6 | 99 | 99 | 99 | 0 | 0 | 0 | 15 | 0 | 0 | 33 | 0 | 0 | Nia H99 |
3 Peret III-19 | 6 | 99 | 99 | 0 | 99 | 99 | 0 | 26 | 0 | 0 | 0 | -6 | 0 | |
3 Peret III-19 | 6 | 99 | 99 | 0 | 99 | 33 | 0 | 9 | 19 | 0 | 0 | -3 | 0 | Car U O99 |
3 Peret II-26 | 6 | 99 | 99 | 0 | 99 | 0 | 0 | 24 | 19 | 0 | 0 | -3 | 0 | |
3 Peret III-19 | 6 | 99 | 99 | 0 | 0 | 99 | 0 | 0 | 0 | 0 | 0 | 13 | 0 | Pry H=00 |
3 Peret III-19 | 6 | 99 | 99 | 0 | 0 | 33 | 0 | 0 | 0 | 0 | 0 | 13 | 0 | Pry H=00 |
3 Peret IV-1 | 6 | 99 | 99 | 0 | 0 | 0 | 0 | 15 | 0 | 0 | 0 | 13 | 0 | Pry H=00 |
3 Peret III-19 | 6 | 99 | 0 | 99 | 99 | 99 | 0 | 23 | 0 | 0 | 0 | -3 | 0 | |
3 Peret III-19 | 6 | 99 | 0 | 99 | 99 | 33 | 19 | 0 | 0 | 0 | 0 | 0 | 0 | Asc H99S>32 |
3 Peret III-22 | 6 | 99 | 0 | 99 | 99 | 13 | 0 | -5 | -3 | 0 | 0 | 0 | 0 | |
3 Peret III-19 | 6 | 99 | 0 | 99 | 20 | 33 | 19 | 0 | -6 | 0 | 0 | 0 | 0 | Asc H99S>32 |
3 Peret II-26 | 6 | 99 | 0 | 99 | 89 | 0 | 0 | -5 | -3 | 0 | 0 | 0 | 0 | |
3 Peret III-19 | 6 | 99 | 0 | 99 | 0 | 99 | 0 | 0 | 0 | 0 | 8 | -3 | 0 | Nia H99 |
3 Peret III-22 | 6 | 99 | 0 | 99 | 0 | 42 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
3 Peret III-22 | 6 | 99 | 0 | 99 | 0 | 17 | 0 | -5 | 0 | 0 | 0 | 0 | 0 | |
3 Peret II-26 | 6 | 99 | 0 | 99 | 0 | 0 | 0 | -5 | 0 | 0 | 0 | 0 | 0 | |
3 Peret III-19 | 6 | 99 | 0 | 0 | 99 | 99 | 0 | 16 | 0 | 0 | 0 | -3 | 0 | |
3 Peret III-22 | 6 | 99 | 0 | 0 | 99 | 54 | 0 | -6 | 0 | 0 | 0 | 13 | 0 | Pry H=00 |
3 Peret III-19 | 6 | 99 | 0 | 0 | 99 | 33 | 0 | 9 | -6 | 0 | 0 | -3 | 0 | |
3 Peret III-22 | 6 | 99 | 0 | 0 | 99 | 19 | 0 | -5 | -3 | 0 | 0 | 13 | 0 | Pry H=00 |
3 Peret IV-1 | 6 | 99 | 0 | 0 | 99 | 0 | 0 | 14 | -3 | 0 | 0 | -3 | 0 | |
3 Peret III-19 | 6 | 99 | 0 | 0 | 0 | 99 | 0 | 0 | 0 | 0 | 0 | 13 | 0 | Pry H=00 |
3 Peret III-22 | 6 | 99 | 0 | 0 | 0 | 63 | 0 | 0 | 0 | 0 | 0 | 13 | 0 | Pry H=00 |
3 Peret III-19 | 6 | 99 | 0 | 0 | 0 | 33 | 0 | 0 | 0 | 0 | 0 | 13 | 0 | Pry H=00 |
3 Peret III-22 | 6 | 99 | 0 | 0 | 0 | 22 | 0 | 0 | 0 | 0 | 0 | 13 | 0 | Pry H=00 |
3 Peret IV-1 | 6 | 99 | 0 | 0 | 0 | 0 | 0 | -5 | 0 | 0 | 0 | 13 | 0 | Pry H=00 |
3 Peret II-23 | 6 | 0 | 99 | 99 | 99 | 96 | 0 | 0 | 0 | 0 | 20 | -8 | 0 | Nia H99 |
3 Peret III-22 | 6 | 0 | 99 | 99 | 99 | 68 | 0 | 0 | 19 | 0 | 0 | 0 | 0 | Car U O99 |
3 Peret IV-1 | 6 | 0 | 99 | 99 | 99 | 61 | -6 | 16 | 0 | 0 | 0 | -3 | 0 | |
3 Peret IV-1 | 6 | 0 | 99 | 99 | 99 | 55 | -6 | 16 | 0 | 0 | 0 | -3 | 0 | |
3 Peret IV-1 | 6 | 0 | 99 | 99 | 99 | 48 | -6 | 19 | 0 | 0 | 0 | 0 | 0 | |
3 Peret IV-1 | 6 | 0 | 99 | 99 | 99 | 42 | -6 | 0 | 19 | 0 | 0 | 0 | 0 | Car U O99 |
3 Peret II-23 | 6 | 0 | 99 | 99 | 99 | 33 | 0 | 0 | 19 | 0 | 0 | 0 | 0 | Car U O99 |
3 Peret IV-1 | 6 | 0 | 99 | 99 | 99 | 31 | -6 | 0 | 19 | 0 | 0 | 0 | 0 | Car U O99 |
3 Peret IV-1 | 6 | 0 | 99 | 99 | 99 | 25 | -6 | 0 | 19 | 0 | 0 | 0 | 0 | Car U O99 |
3 Peret III-22 | 6 | 0 | 99 | 99 | 99 | 23 | 0 | 0 | 19 | 0 | 0 | 0 | 0 | Car U O99 |
3 Peret IV-1 | 6 | 0 | 99 | 99 | 99 | 19 | 0 | 2 | 19 | 0 | -13 | 0 | 0 | Car U O99 |
3 Peret IV-1 | 6 | 0 | 99 | 99 | 99 | 19 | 0 | 15 | 19 | 0 | -13 | 0 | 0 | Car U O99 |
3 Peret IV-1 | 6 | 0 | 99 | 99 | 99 | 17 | 0 | 15 | 19 | 0 | -13 | 0 | 0 | Car U O99 |
3 Peret IV-1 | 6 | 0 | 99 | 99 | 99 | 15 | 0 | 15 | 19 | 0 | -13 | 0 | 0 | Car U O99 |
3 Peret IV-1 | 6 | 0 | 99 | 99 | 99 | 13 | 0 | 15 | 19 | 0 | -13 | 0 | 0 | Car U O99 |
3 Peret IV-1 | 6 | 0 | 99 | 99 | 99 | 12 | 0 | 15 | 19 | 0 | -13 | 0 | 0 | Car U O99 |
3 Peret IV-1 | 6 | 0 | 99 | 99 | 99 | 9 | 0 | 15 | 19 | 0 | -13 | 0 | 0 | Car U O99 |
3 Peret IV-1 | 6 | 0 | 99 | 99 | 99 | 7 | 0 | 15 | 19 | 0 | -13 | 0 | 0 | Car U O99 |
3 Peret IV-1 | 6 | 0 | 99 | 99 | 99 | 5 | 0 | 15 | 19 | 0 | -13 | 0 | 0 | Car U O99 |
3 Peret IV-1 | 6 | 0 | 99 | 99 | 99 | 3 | 0 | 15 | 19 | 0 | -13 | 0 | 0 | Car U O99 |
3 Peret IV-1 | 6 | 0 | 99 | 99 | 99 | 2 | 0 | 15 | 19 | 0 | -13 | 0 | 0 | Car U O99 |
3 Peret IV-1 | 6 | 0 | 99 | 99 | 99 | 1 | 0 | 15 | 19 | 0 | -13 | 0 | 0 | Car U O99 |
3 Peret IV-1 | 7 | 0 | 79 | 89 | 89 | 61 | -6 | -19 | 0 | 0 | 0 | -3 | 0 | |
3 Peret IV-1 | 6 | 0 | 99 | 99 | 99 | 0 | 0 | 15 | 19 | 0 | -13 | 0 | 0 | Car U O99 |
3 Peret II-26 | 6 | 0 | 99 | 99 | 99 | 0 | 0 | 15 | 19 | 0 | 0 | 0 | 0 | Car U O99 |
3 Peret II-23 | 6 | 0 | 99 | 99 | 0 | 99 | 0 | 0 | 0 | -2 | 10 | -5 | 0 | Nia H99 |
3 Peret III-22 | 6 | 0 | 99 | 99 | 0 | 73 | 25 | 0 | 0 | -2 | 0 | 0 | 0 | Asc H99S>32 |
3 Peret II-23 | 8 | 0 | 99 | 99 | 0 | 33 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
3 Peret III-22 | 8 | 0 | 99 | 99 | 0 | 25 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
3 Peret IV-1 | 6 | 0 | 99 | 99 | 0 | 0 | 0 | 15 | 0 | 0 | -13 | 0 | 0 | |
3 Peret II-26 | 6 | 0 | 99 | 99 | 0 | 0 | 0 | 15 | 0 | 0 | 0 | 0 | 0 | |
3 Peret III-22 | 6 | 0 | 99 | 0 | 99 | 99 | 0 | 0 | 19 | 0 | 0 | 33 | 0 | Car U O99 Pry H=00 |
3 Peret II-23 | 6 | 0 | 99 | 0 | 99 | 99 | 0 | 0 | 0 | 0 | 0 | 53 | 0 | Pry H=00 |
3 Peret II-23 | 6 | 0 | 99 | 0 | 99 | 33 | 0 | 0 | 19 | 0 | 0 | -3 | 0 | Car U O99 |
3 Peret III-22 | 6 | 0 | 99 | 0 | 99 | 32 | 0 | 0 | 19 | 0 | 0 | -3 | 0 | Car U O99 |
3 Peret IV-1 | 6 | 0 | 99 | 0 | 99 | 0 | 0 | 18 | 19 | 0 | 0 | 0 | 0 | Car U O99 |
3 Peret II-23 | 6 | 0 | 99 | 0 | 0 | 99 | 0 | 30 | 0 | -2 | 0 | -13 | 0 | Bio H=00 O=00 S>94 |
3 Peret III-22 | 6 | 0 | 99 | 0 | 0 | 95 | 0 | 60 | 0 | 60 | 0 | -3 | 30 | Fol O=00 S>84 Thi H=00 O=00 S>94 |
3 Peret II-23 | 6 | 0 | 99 | 0 | 0 | 33 | 0 | 0 | 0 | -2 | 0 | -3 | 0 | |
3 Peret III-22 | 6 | 0 | 99 | 0 | 0 | 31 | 0 | 0 | 0 | 0 | 0 | -3 | 0 | |
3 Peret IV-1 | 6 | 0 | 99 | 0 | 0 | 0 | 0 | 15 | 0 | 0 | 0 | -3 | 0 | |
3 Peret II-23 | 6 | 0 | 0 | 99 | 99 | 99 | 0 | 0 | 0 | 0 | -5 | 0 | 0 | |
3 Peret III-22 | 6 | 0 | 0 | 99 | 99 | 89 | 0 | 0 | -6 | 0 | -2 | 0 | 0 | |
3 Peret II-23 | 6 | 0 | 0 | 99 | 99 | 33 | 0 | 0 | -6 | 0 | 0 | 0 | 0 | |
3 Peret III-22 | 6 | 0 | 0 | 99 | 99 | 28 | 0 | 0 | -6 | 0 | 0 | 0 | 0 | |
3 Peret II-26 | 6 | 0 | 0 | 99 | 99 | 0 | 0 | -5 | -3 | 0 | 0 | 0 | 0 | |
3 Peret II-23 | 6 | 0 | 0 | 99 | 0 | 99 | 0 | 0 | 0 | 0 | -5 | 0 | 0 | |
3 Peret III-22 | 6 | 0 | 0 | 99 | 0 | 84 | 30 | 0 | 0 | 50 | 20 | 0 | -20 | Asc H99S>32 Fol O00S>84 Nia H99 |
3 Peret II-23 | 6 | 0 | 0 | 99 | 0 | 33 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
3 Peret III-22 | 6 | 0 | 0 | 99 | 0 | 27 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
3 Peret II-26 | 6 | 0 | 0 | 99 | 0 | 0 | 0 | -5 | 0 | 0 | 0 | 0 | 0 | |
3 Peret II-23 | 6 | 0 | 0 | 0 | 99 | 99 | 0 | 0 | 0 | 0 | 0 | -14 | 0 | |
3 Peret III-22 | 6 | 0 | 0 | 0 | 99 | 79 | 0 | 0 | -6 | 0 | 0 | -8 | 0 | |
3 Peret II-23 | 6 | 0 | 0 | 0 | 99 | 33 | 0 | 0 | -6 | 0 | 0 | -3 | 0 | |
3 Peret III-22 | 6 | 0 | 0 | 0 | 99 | 25 | 0 | 0 | -6 | 0 | 0 | -3 | 0 | |
3 Peret II-26 | 6 | 0 | 0 | 0 | 99 | 0 | 0 | -8 | -3 | 0 | 0 | 0 | 0 | |
3 Peret II-23 | 6 | 0 | 0 | 0 | 0 | 99 | 0 | 0 | 0 | 0 | 0 | -13 | 0 | |
3 Peret III-22 | 6 | 0 | 0 | 0 | 0 | 72 | 0 | -20 | 0 | 0 | 0 | -3 | 0 | |
3 Peret II-23 | 6 | 0 | 0 | 0 | 0 | 33 | 0 | 0 | 0 | 0 | 0 | -3 | 0 | |
3 Peret III-22 | 6 | 0 | 0 | 0 | 0 | 23 | 0 | 0 | 0 | 0 | 0 | -3 | 0 | |
3 Peret II-26 | 6 | 0 | 0 | 0 | 0 | 0 | 0 | -5 | 0 | 0 | 0 | -3 | 0 |
So ....
It's more fun anyway to chase how to force a particular vitamin to increase or decrease, and then watch for the shift points when things happen, and perhaps revisit the test later on with an alternate strategy. The data in the next table is taken from the same worksheet as the above data, and it's indexed the same way, but now we're showing the Rate of Change for each vitamin, and only including dynamic states or, in some cases, the adjacent states to show a boundary condition.
We've also added an artifical E = Environmental input, to account for self-starting conversions, thereby allowing H2O, Oxygen, and Sunshine to be treated as conditionals rather than also showing them as inputs.
You need to understand how we're using the following data, in order to understand the organization of the table. We're using the Excel Autofilter capability to isolate all conditions that can cause a particular Vitamin to increase or decrease, and then we're trying to discern the (one or more sets of) ambient conditions that are required for that particular conversion.
Some of the conversion are reversible, while other conversions create loops in the state diagram. This series of tests focuses on recipe driven changes. These testa general require an initial setup period to convert the directly controllable ingredients into vitamin levels that are sufficient to support a mid-recipe change in strategy, plus enough additional steps to delineate the behavior of any state loop.
The objective in this portion of the research is to isolate a set of 20 or so rules that are common to all states, and to plug those ambient requirement rules into the state diagram, thereby creating a state diagram for Tale 3.
Step | Nit | Pot | H2O | Oxy | Sun | Asc | Bio | Car | Fol | Nia | Pry | Thi | Comment |
Step | Nit | Pot | H2O | Oxy | Sun | Asc | Bio | Car | Fol | Nia | Pry | Thi | Comment |
Step | Nit | Pot | H2O | Oxy | Sun | Asc | Bio | Car | Fol | Nia | Pry | Thi | Comment |
Step | Nit | Pot | H2O | Oxy | Sun | Asc | Bio | Car | Fol | Nia | Pry | Thi | Comment |
Name | Creator | Date | Size | Description |
---|---|---|---|---|
Modern_Sheep_Farm.png | MarvL | April 27, 2007 7:37 am | 163775 | Modern Sheep Farm |
Silkworm_Farm.png | MarvL | April 27, 2007 7:38 am | 76633 | Silkworms |
Sunshine.png | MarvL | May 8, 2007 12:14 am | 34597 | Clamped during midday |
Thistle_Control.png | MarvL | April 27, 2007 9:06 am | 153588 | PopUp Controller |
Thistle_Garden.png | MarvL | April 27, 2007 7:39 am | 130045 | |
Thistles.jpg | MarvL | April 27, 2007 12:35 am | 147279 | State Diagram with H2O and Sun |
Thistles.xls | MarvL | May 11, 2007 6:29 am | 108032 | Revision 2007E09, which includes all of the binary categories |
Thistles_State_Diagram.jpg | MarvL | April 27, 2007 12:44 am | 140040 | Urine, H2O, and Sunshine |