I was fairly confused by the wording of the exercise. Mainly of the following sentence.
After an action, you may not arrive at a state where the starting bucket is empty and the other bucket is full.
My understanding of that sentence was that the it is referring to the starting bucket of the current action. However, the sentence is referring to the initial starting bucket. I only realized that after checking the community solutions.
After an action, you may not arrive at a state where the initial starting bucket is empty and the other bucket is full.
If you want to get wordier, you could elaborate that this is the one that is supplied as a parameter in the call to the measure function of the exercise but pointing out that the sentence is referring to a single state should make it clearer.
I am not a native speaker, so maybe this is obvious, but I was not clear that the starting bucket is determined by the parameter you get in the call to the program.
From reading the text my assumption was that the starting bucket was referring to the source bucket of the current action (empty bucket, fill bucket, or pour the content of one bucket into the other). So potentially the starting bucket could change with every action.
I’m not a native speaker either, but personally I find “starting bucket” easier to understand than “initial bucket”.
If “starting bucket” is unclear because it might refer to the starting bucket of the current action, then how about “initial starting bucket”?
I think “initial starting bucket” is clearer and should be consider.
However I do want to ask OP whether or not if they read the whole exercise, because there is a clear example later on explaining the situation quite well .
Another Example: Bucket one can hold 3 liters, and bucket two can hold up to 5 liters. You are told you must start with bucket one. So your first action is to fill bucket one. You choose to empty bucket one for your second action. For your third action, you may not fill bucket two, because this violates the third rule -- you may not end up in a state after any action where the starting bucket is empty and the other bucket is full.
I must admit I skipped the last sentence in the example. That clarifies it pretty much. My bad. However, if you want to put it into the description more prominently, I would go with “initial starting bucket”.
How about “very first bucket” instead of “initial starting bucket”? “Initial starting” feels a bit odd to me too. If it adds clarity, then I don’t mind it being odd, but maybe just rewording the sentence in general would help?