Document length/distance duality and impending doom
[troll.git] / config / statement_en.html
index 83c0e4e..0102747 100644 (file)
@@ -1,4 +1,4 @@
-<div class="statement-body"> 
+<div class="statement-body">
    <!-- GOAL --> 
    <div class="statement-section statement-goal"> 
      <h2> 
    <!-- GOAL --> 
    <div class="statement-section statement-goal"> 
      <h2> 
        <span>Rules</span> 
      </h2> 
      <div class="statement-rules-content">
        <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> 
    </div>
+   <div class="statement-section statement-warning">
+     <h2>
+       <span class="icon icon-warning">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</span>
+       <span>Change Log</span>
+     </h2>
+     <ul>
+       <li>
+         Enforce the one-stone rule.  (that also fixed the legacy
+         buh&mdash;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&eacute;-Lovichi
+         </a>.
+       </div>
+     </div>
+   </div>
 </div>
 </div>