rename statics/euler and sync b93 code with main repo
This commit is contained in:
20
www/statics/euler/Euler_Problem-079_explanation.md
Normal file
20
www/statics/euler/Euler_Problem-079_explanation.md
Normal file
@@ -0,0 +1,20 @@
|
||||
This is one of the problems i really enjoyed solving.
|
||||
|
||||
We make the assumption that our final pass code has no duplicate digits (If we hadn't found a solution we would need to change that part).
|
||||
This is a pretty good assumption because no attempt has a duplicate digit in it.
|
||||
|
||||
> *Side note:* This leaves us with a 8-digit code, because only 8 digits are used (`4` and `5` are missing).
|
||||
|
||||
First we generate a 10x10 grid where we remember the absolute ordering of the numbers from our attempts (eg `3` is before `8` or `9` is after `2`).
|
||||
If we inspect this data we can see that every field (for numbers in our pass code) is set, the fifty login attempts generate more than enough data for this.
|
||||
|
||||
> *Side note:* In fact there are only 33 **unique** login attempts
|
||||
|
||||
Then we can simply sort an array of the valid digits with this ordering. And - frankly - I find this is a really neat way of doing this.
|
||||
|
||||
Because we sort only eight numbers, sorting-performance is not a big factor.
|
||||
So I searched for the simplest (easiest to implement) sorting algorithm I could find.
|
||||
This was surprisingly not Bubble-sort, but [Gnome Sort](https://en.wikipedia.org/wiki/Gnome_sort) (accordingly to the author "the simplest sort algorithm").
|
||||
Which was pretty easy to implement in Befunge (and for 8 values is the runtime of O(n^2) not *that* bad).
|
||||
|
||||
A last thing: For a problem where I used an two-dimensional cache **and** that has input data I was surprised to fit everything in the Befunge-93 80x25 size restrictions.
|
||||
Reference in New Issue
Block a user