-<div class="statement-body">
+<div class="statement-body">
<!-- GOAL -->
<div class="statement-section statement-goal">
<h2>
<span>Rules</span>
</h2>
<div class="statement-rules-content">
- In the classic version, you <em>have</em> to shoot at least one stone per turn. This isn't enforced yet.
+ You <em>have</em> to shoot at least <const>1</const> stone per
+ turn if you have any left.
</div>
</div>
+ <div class="statement-section statement-warning">
+ <h2>
+ <span class="icon icon-warning"> </span>
+ <span>Breaking Change</span>
+ </h2>
+ <p>
+ The <var>roadLength</var> game input variable used to be the
+ cardinal number of positions the troll could be in. That's the
+ way it was presented in the original game, but I leaned more
+ towards distances to make the I/O protocol easier on beginners.
+ So it's currently inconsistent.
+ </p>
+ <p>
+ This is going to change in the following days to be a distance
+ everywhere, more in line with the protocol's other measures.
+ Not to mention being somewhat more consistent with the variable
+ name. Thanks
+ <a href="https://www.codingame.com/profile/c4a50746f425cb125f77487aaf51350c7258821">
+ @Snef
+ </a>
+ for reminding me of this.
+ </p>
+ <p>
+ If you used this variable, I suggest you temporarily used one
+ of these workarounds so you don't get bit by the upcoming
+ change:
+ </p>
+ <table>
+ <tr><th>Former use</th><th>As a</th><th>Try this</th></tr>
+ <tr>
+ <td><pre>roadLength - 1</pre></td>
+ <td><pre>distance to opponent</pre></td>
+ <td><pre>roadLength & (~1)</pre></td>
+ </tr>
+ <tr>
+ <td><pre>roadLength</pre></td>
+ <td><pre>number of troll states</pre></td>
+ <td><pre>roadLength | 1</pre></td>
+ </tr>
+ <tr>
+ <td><pre>roadLength + 1</pre></td>
+ <td><pre>I have no idea</pre></td>
+ <td><pre>(roadLength + 1) & (-1)</pre></td>
+ </tr>
+ </table>
+ </div>
+ <div class="statement-section statement-warning">
+ <h2>
+ <span class="icon icon-warning"> </span>
+ <span>Rule Evolution</span>
+ </h2>
+ <div class="statement-warning-content">
+ The following ideas are still in flux, waiting for some
+ opinions. Please drop a word on the
+ <a href="https://www.codingame.com/contribute/view/507070b7925f661e2d2835c14f950b9d157e">
+ contribution's page
+ </a>
+ or
+ <a href="https://forum.codingame.com/t/troll-vs-castles-brainstorm/184827?u=jbm">
+ on the forum
+ </a>
+ <ul>
+ <li>
+ Is it even worth publishing? can the problem be totally solved?
+ </li>
+ <li>
+ More maps? (a map is a {road length} × {initial stone count} pair)
+ </li>
+ <li>
+ Leagues? I could conceive the referee being permissive
+ (allow 0 stones thrown) in the first one, and then strict.
+ </li>
+ <li>
+ Fog of war? (see only troll position, not enemy throw/stones left)
+ </li>
+ <li>
+ <strong>variable</strong> for of war? (seeing enemy stones
+ is a boolean decided randomly as part of the map?
+ </li>
+ <li>
+ alternative fog of war? (seeing enemy stones only when
+ troll is close to us?)
+ </li>
+ <li>
+ Praise for my artistic skillz
+ </li>
+ <li>
+ Other remarks?
+ </li>
+ </ul>
+ </div>
+ </div>
+ <div class="statement-victory-conditions">
+ <div class="icon victory"></div>
+ <div class="blk">
+ <div class="title">Victory Condition</div>
+ <div class="text">Your opponent loses.</div>
+ </div>
+ </div>
+ <div class="statement-lose-conditions">
+ <div class="icon lose"></div>
+ <div class="blk">
+ <div class="title">Defeat Condition</div>
+ <ul>
+ <li>The troll reaches your castle.</li>
+ <li>When no player has stones left, the troll is closer to your castle.</li>
+ </ul>
+ </div>
+ </div>
+ <div class="statement-section statement-protocol">
+ <h2>
+ <span class="icon icon-protocol"> </span>
+ <span>I/O Protocol</span>
+ </h2>
+ <div class="statement-protocol-content">
+ Just read the sample code. You can figure this out.
+ </div>
+ </div>
+ <div class="statement-section statement-expertrules">
+ <h2>
+ <span class="icon icon-expertrules"> </span>
+ <span>Maps</span>
+ </h2>
+ <div class="statement-expert-rules-content">
+ <p>
+ The following maps are currently available and randomly yet
+ extremely fairly (you wouldn't believe the effort that went
+ into this) chosen uniformly at random among the following:
+ </p>
+ <table>
+ <tr><th>Road length</th><th>Stones</th></tr>
+ <tr><td><const>7</const></td><td><const>15</const></td></tr>
+ <tr><td><const>7</const></td><td><const>30</const></td></tr>
+ <tr><td><const>15</const></td><td><const>30</const></td></tr>
+ <tr><td><const>15</const></td><td><const>50</const></td></tr>
+ </table>
+ <p>
+ As with anything in this <em>draft</em> statement, this
+ is <strong>subject to change without notice</strong>. Why do
+ you think they're provided in the game input?
+ </p>
+ </div>
+ </div>
+ <div class="statement-section statement-protocol">
+ <h2>
+ <span class="icon icon-protocol"> </span>
+ <span>Change Log</span>
+ </h2>
+ <ul>
+ <li>
+ Enforce the one-stone rule. (that also fixed the legacy
+ buh—sorry people! I put an easter egg in exchange)
+ </li>
+ <li>
+ Cutesy defeat animations.
+ </li>
+ <li>
+ Distinct castle sprites!
+ </li>
+ <li>
+ Terminate game when there are no more stones in sight.
+ </li>
+ <li>
+ More pretty. (SRLSLY)
+ </li>
+ <li>
+ No more void maps. (root cause: Java <const>%</const> on a
+ negative seed)
+ </li>
+ </ul>
+ </div>
+ <div class="statement-story-background">
+ <div class="statement-story"
+ style="position: relative; min-height: min-content">
+ <div class="story-text">
+ Based on an involuntary suggestion by
+ <span class="card" cg-codingamer-card-popup=""
+ userid="user.codingamer.userId">
+ <a class="pseudo"
+ href="/profile/dbfa96e0ac9b77a3db679628f27224ae8509333"
+ title="Zaap38">Zaap38</a>
+ </span>
+ on the #Fr channel. The original appears to be by
+ <a href="http://andre.lovichi.free.fr/teaching/ea/2015-2016/cours/troll/Trolls_et_chateaux.pdf">
+ Romain André-Lovichi
+ </a>.
+ </div>
+ </div>
+ </div>
</div>