or just by submitting an issue <ahref="https://gitlab.fi.muni.cz/xfocko/kb/-/issues/new"target="_blank"rel="noopener noreferrer">here</a>.</p></div></div><p>For this bonus you can get 3 K₡ and another 0.5 K₡ for the bonus part of it.</p><p><ahref="/files/pb071/bonuses/04.tar.gz"target="_blank"rel="noopener noreferrer">Source</a></p><h2class="anchor anchorWithStickyNavbar_LWe7"id="introduction">Introduction<ahref="#introduction"class="hash-link"aria-label="Direct link to Introduction"title="Direct link to Introduction"></a></h2><p>In this task you are given a 2D map for a robot. The map contains multiple markers:</p><ul><li><code>^v<></code> - which denote the directions the robot will be facing when he steps into
the cell or starts on it.</li><li><code>K</code> - denotes the key.</li><li><code>T</code> - denotes the treasure.</li></ul><p>In case robot lands at the beginning on unknown field, e.g. <code>.</code> in the tests, he
faces the direction that is given through the parameter.</p><p>Your task is to write the <code>walk</code> function that returns end result of the walk.
Walk can end in multiple ways:</p><ul><li><code>FOUND_TREASURE</code> - when you find the treasure</li><li><code>FOUND_KEY</code> - when you find the key</li><li><code>OUT_OF_BOUNDS</code> - when the robot falls off the map</li><li><code>INFINITE_LOOP</code> - in case you will implement the bonus</li><li><code>NONE</code> - which is used right now as a default return in the skeleton, has no meaning
later on</li></ul><h2class="anchor anchorWithStickyNavbar_LWe7"id="hard-requirement">Hard requirement<ahref="#hard-requirement"class="hash-link"aria-label="Direct link to Hard requirement"title="Direct link to Hard requirement"></a></h2><p>There is only one hard requirement that tests cannot check.</p><p><strong>You are not allowed to use any indexing related to map or your current position</strong>
<strong>in your implementation.</strong></p><p>Reason for this requirement is for you to get used to working with pointers. And
for the implementation of this task it is much easier to use just the pointers.</p><h2class="anchor anchorWithStickyNavbar_LWe7"id="example-of-run">Example of run<ahref="#example-of-run"class="hash-link"aria-label="Direct link to Example of run"title="Direct link to Example of run"></a></h2><p>For a better understanding of your task, I will describe a simple walk with corresponding
function call.</p><divclass="language-c codeBlockContainer_Ckt0 theme-code-block"style="--prism-color:#000000;--prism-background-color:#ffffff"><divclass="codeBlockContent_biex"><pretabindex="0"class="prism-code language-c codeBlock_bY9V thin-scrollbar"><codeclass="codeBlockLines_e6Vv"><spanclass="token-line"style="color:#000000"><spanclass="token keyword"style="color:rgb(0, 0, 255)">const</span><spanclass="token plain"></span><spanclass="token keyword"style="color:rgb(0, 0, 255)">char</span><spanclass="token plain"></span><spanclass="token operator"style="color:rgb(0, 0, 0)">*</span><spanclass="token plain">map </span><spanclass="token operator"style="color:rgb(0, 0, 0)">=</span><spanclass="token plain"></span><spanclass="token punctuation"style="color:rgb(4, 81, 165)">(</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#000000"><spanclass="token plain"></span><spanclass="token string"style="color:rgb(163, 21, 21)">">.v"</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#000000"><spanclass="token plain"></span><spanclass="token string"style="color:rgb(163, 21, 21)">".K<"</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#000000"><spanclass="token plain"></span><spanclass="token string"style="color:rgb(163, 21, 21)">"..."</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#000000"><spanclass="token plain"></span><spanclass="token punctuation"style="color:rgb(4, 81, 165)">)</span><spanclass="token punctuation"style="color:rgb(4, 81, 165)">;</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#000000"><spanclass="token plain"style="display:inline-block"></span><br></span><spanclass="token-line"style="color:#000000"><spanclass="token plain"></span><spanclass="token function"style="color:rgb(0, 0, 255)">walk</span><spanclass="token punctuation"style="color:rgb(4, 81, 165)">(</span><spanclass="token plain">map</span><spanclass="token punctuation"style="color:rgb(4, 81, 165)">,</span><spanclass="token plain"></span><spanclass="token operator"style="color:rgb(0, 0, 0)">&</span><spanclass="token plain">map</span><spanclass="token punctuation"style="color:rgb(4, 81, 165)">[</span><spanclass="token number"style="color:rgb(9, 134, 88)">6</span><spanclass="token punctuation"style="color:rgb(4, 81, 165)">]</span><spanclass="token punctuation"style="color:rgb(4, 81, 165)">,</span><spanclass="token plain"></span><spanclass="token char"style="color:rgb(129, 31, 63)">'^'</span><spanclass="token punctuation"style="color:rgb(4, 81, 165)">,</span><spanclass="token plain"></span><spanclass="token number"style="color:rgb(9, 134, 88)">3</span><spanclass="token punctuation"style="color:rgb(4, 81, 165)">,</span><spanclass="token plain"></span><spanclass="token number"style="color:rgb(9, 134, 88)">3</span><spanclass="token punctuation"style="color:rgb(4, 81, 165)">)</span><spanclass="token punctuation"style="color:rgb(4, 81, 165)">;</span><br></span></code></pre><divclass="buttonGroup__atx"><buttontype="button"aria-label="Copy code to clipboard"title="Copy"class="clean-btn"><spanclass="copyButtonIcons_eSgA"aria-hidden="true"><svgviewBox="0 0 24 24"class="copyButtonIcon_y97N"><pathfill="currentColor"d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svgviewBox="0 0 24 24"class="copyButtonSuccessIcon_LjdS"><pathfill="currentColor"d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>For this call, you should return <code>FOUND_KEY</code>. Let us walk through the walk ;)</p><ol><li><p>Robot is placed at the bottom left corner, there is no direction specified, so
he follows the direction given by parameter (upwards, denoted as <code>N</code>(orth),
so that we can differentiate markers on the map with the robot when using printing
is stuck in the infinite loop. There are three tests for it. If you pass only the
easy and medium one, you can get 0.25 K₡ for doing your best and trying it out. :)</p><h2class="anchor anchorWithStickyNavbar_LWe7"id="easter-eggs">Easter eggs<ahref="#easter-eggs"class="hash-link"aria-label="Direct link to Easter eggs"title="Direct link to Easter eggs"></a></h2><ul><li><p>Statistics</p><table><thead><tr><th>Language</th><thalign="right">Files</th><thalign="right">Lines</th><thalign="right">Blanks</th><thalign="right">Comments</th><thalign="right">Code</th><thalign="right">Complexity</th></tr></thead><tbody><tr><td><em>C</em></td><tdalign="right">4</td><tdalign="right">458</td><tdalign="right">34</td><tdalign="right">58</td><tdalign="right">366</td><tdalign="right">33</td></tr><tr><td><code>test_maze.c</code></td><tdalign="right"></td><tdalign="right">225</td><tdalign="right">9</td><tdalign="right">0</td><tdalign="right">216</td><tdalign="right">4</td></tr><tr><td><code>sol.maze.c</code></td><tdalign="right"></td><tdalign="right">141</td><tdalign="right">15</td><tdalign="right">28</td><tdalign="right">98</td><tdalign="right">24</td></tr><tr><td><code>maze.c</code></td><tdalign="right"></td><tdalign="right">84</td><tdalign="right">8</td><tdalign="right">30</td><tdalign="right">46</td><tdalign="right">5</td></tr><tr><td><code>main.c</code></td><tdalign="right"></td><tdalign="right">8</td><tdalign="right">2</td><tdalign="right">0</td><tdalign="right">6</td><tdalign="right">0</td></tr><tr><td><em>C Header</em></td><tdalign="right">1</td><tdalign="right">33</td><tdalign="right">3</td><tdalign="right">19</td><tdalign="right">11</td><tdalign="right">0</td></tr><tr><td><code>maze.h</code></td><tdalign="right"></td><tdalign="right">33</td><tdalign="right">3</td><tdalign="right">19</td><tdalign="right">11</td><tdalign="right">0</td></tr><tr><td><em>CMake</em></td><tdalign="right">1</td><tdalign="right">25</td><tdalign="right">4</td><tdalign="right">6</td><tdalign="right">15</td><tdalign="right">2</td></tr><tr><td><code>CMakeLists.txt</code></td><tdalign="right"></td><tdalign="right">25</td><tdalign="right">4</td><tdalign="right">6</td><tdalign="right">15</td><tdalign="right">2</td></tr><tr><td><strong>Total</strong></td><tdalign="right">6</td><tdalign="right">516</td><tdalign="right">41</td><tdalign="right">83</td><tdalign="right">392</td><tdalign="right">35</td></tr></tbody></table></li><li><p>Majority of the line count in solution is caused by the formatting :)</p></li><li><p>Included headers can be interpreted as hints, same goes for the unimplemented
<code>static</code> functions which you can use, but <strong>are not required</strong>.</p></li><li><p>Given <code>CMakeLists.txt</code> will generate 2 binaries, <code>test_maze</code> and <code>maze</code>.</p><ul><li><code>test_maze</code> runs the tests you are given.</li><li><code>maze</code> runs the <code>main.c</code>, where you can debug, print mazes and whatever else
you want.</li></ul></li><li><p>I keep only one copy of <code>cut.h</code> in my repository, so you need to download it from
<ahref="https://gitlab.fi.muni.cz/pb071/cut/-/jobs/159010/artifacts/file/1header/cut.h"target="_blank"rel="noopener noreferrer">here</a> and place it into the directory where you have your source code.</p><ul><li>Or you can use the one you have from the latest homework, git will keep it
only once, so it doesn't take up more space.</li></ul></li><li><p>I would recommend cloning this repository and copying the <code>maze</code> directory to
your own repository, since there are multiple files and it may be easier for you.</p></li></ul><p>In case you have any questions, feel free to reach out to me.</p><h2class="anchor anchorWithStickyNavbar_LWe7"id="submitting">Submitting<ahref="#submitting"class="hash-link"aria-label="Direct link to Submitting"title="Direct link to Submitting"></a></h2><p>For submitting the bonus assignment you can follow the same procedure as for