<?php require_once (__DIR__ . '/../internals/website.php'); /** @var PageFrameOptions $FRAME_OPTIONS */ global $FRAME_OPTIONS; /** @var URLRoute $ROUTE */ global $ROUTE; /** @var Website $SITE */ global $SITE; global $FRAGMENT_PARAM; /** @var array $parameter */ $parameter = $FRAGMENT_PARAM; ?> <?php $post = $parameter['blogpost']; $problems = $SITE->modules->Euler()->listAll(); ?> <div class="boxedcontent blogcontent_euler base_markdown"> <div style="position: relative;"> <a href="https://github.com/Mikescher/Project-Euler_Befunge" style="position: absolute; top: 0; right: 0; border: 0;"> <img src="/data/images/blog/github_band.png" alt="Fork me on GitHub" data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png"> </a> </div> <div class="bc_header"> <?php echo $post['date']; ?> </div> <div class="bc_data"> <p><a href="https://projecteuler.net/problems"><img src="https://projecteuler.net/profile/Mikescher.png" /></a></p> <p> A lot of you probably know <a href="https://projecteuler.net/">Project Euler</a>.<br /> For those who don't here a short explanation: Project Euler is a collection of mathematical/programming problems. Most problems consist of finding a single number and are solved by writing a program in the programming language of your choice. </p> <p> Most people solve these by using normal languages like C, Java, Phyton, Haskell etc. But you can also go a step further and try solving it with a little bit more exotic languages. </p> <p> So here are my solutions written in <a href="http://esolangs.org/wiki/Befunge">Befunge</a> </p> <blockquote> <p> <strong>Note:</strong><br /> Similar to most Befunge content on this site I only used the Befunge-93 instruction-set but ignored the 80x25 size restriction.<br /> Still I tries to keep the programs in the Befunge-93 grid size, but that wasn't possible for all. So I guess some programs are <i>technically</i> Befunge-98. </p> <p> Also the original <a href="https://github.com/catseye/Befunge-93/blob/master/doc/Befunge-93.markdown">befunge-93 spec</a> didn't specify the word size of the stack or the grid<br /> So, while most programs run happily with 32bit integers some need an interpreter that supports 64bit integers for both stack and grid. </p> </blockquote> <p> I have a included javascript runner here, but for one I only enabled it for programs of reasonable sizes (a few soutions had source files in the megabyte range).<br/> And also it's not the fastest interpreter and some solution take quite a while to finish.<br/> I recommend using <a href="/programs/view/BefunUtils">BefunExec</a>. I specially made that interpreter for this project. It can run befunge code with around 6.5 MHz <i>(on my machine)</i> </p> <h1>My favorites:</h1> <ul> <li><a href="/blog/1/Project_Euler_with_Befunge/problem-101">Problem 101 - Optimum polynomial</a></li> <li><a href="/blog/1/Project_Euler_with_Befunge/problem-098">Problem 098 - Anagramic squares</a></li> <li><a href="/blog/1/Project_Euler_with_Befunge/problem-091">Problem 091 - Right triangles with integer coordinates</a></li> <li><a href="/blog/1/Project_Euler_with_Befunge/problem-079">Problem 079 - Passcode derivation</a></li> <li><a href="/blog/1/Project_Euler_with_Befunge/problem-059">Problem 059 - XOR decryption</a></li> <li><a href="/blog/1/Project_Euler_with_Befunge/problem-053">Problem 053 - Combinatoric selections</a></li> <li><a href="/blog/1/Project_Euler_with_Befunge/problem-043">Problem 043 - Sub-string divisibility</a></li> <li><a href="/blog/1/Project_Euler_with_Befunge/problem-017">Problem 017 - Number letter counts</a></li> <li><a href="/blog/1/Project_Euler_with_Befunge/problem-015">Problem 015 - Lattice paths</a></li> </ul> <h1>All solved problems</h1> <div class="mdtable_container"> <table id="PEB_tableProblems" class="stripedtable mdtable"> <thead> <tr> <th>Number</th> <th>Title</th> <th>Time</th> <th>Size</th> <th>Solution (hover to reveal)</th> </tr> </thead> <tbody> <?php foreach ($problems as $problem) { echo '<tr class="PEB_tablerowProblems">' . "\r\n"; echo '<td class="PEB_tablecellProblems PEB_TC_Number">'; echo '<a href="' . $problem['url'] . '">'; echo $problem['number']; echo '</a>'; echo '</td>' . "\r\n"; echo '<td class="PEB_tablecellProblems PEB_TC_Title">'; echo '<a href="' . $problem['url'] . '">'; echo htmlspecialchars($problem['title']); echo '</a>'; echo '</td>' . "\r\n"; echo '<td class="PEB_tablecellProblems PEB_TC_Rating">'; echo '<a href="' . $problem['url'] . '">'; echo '<div class="PEB_TC_Time PEB_TC_Timelevel_' . $problem['rating'] . '">'; echo formatMilliseconds($problem['time']) . "</div></td>\r\n"; echo '</div>'; echo '</a>'; echo '</td>' . "\r\n"; echo '<td class="PEB_tablecellProblems PEB_TC_Size">'; echo '<a href="' . $problem['url'] . '">'; echo $problem['width'] . 'x' . $problem['height']; echo '<div class="PEB_TC_Size_' . ($problem['is93'] ? '93' : '98') . '">'; echo ($problem['is93'] ? 'Bef-93' : 'Bef-93+'); echo '</div>'; echo '</a>'; echo '</td>' . "\r\n"; echo '<td class="PEB_tablecellProblems PEB_TC_Value">'; echo number_format($problem['value'], 0, null, ','); echo '</td>' . "\r\n"; echo "</tr>\r\n"; } ?> </tbody> </table> </div> </div> </div>