Here are all my tools, use them as you will, and enjoy!
A nifty little tool to generate random passwords, useful in this age of cryptography.
I know that there are many other tools out there, but this is the only one I could really trust. And you can trust it too, because all my code is open-sourced :D You can view it here on GitHub, and here to see the literal code of the page from the website that hosts my backend. You would need to create a pythonanywhere account though.
Reverse the last two letters of words, and then have your browser try and say them :D
Do ya'lls really need an explanation?
My friend and I were chatting in gmail chat, when we had some typos. We then understood that you can make text painful to read&emdash;but understandable&emdash;if you swap the last two letters of each word. It was also funny to say out loud.
We both quickly whipped up a python solution, and I decided to add mines to my website. I also added a feature allowing the browser to read out the text in many different voices.
If the voices don't work with you, try switching to chrome.
Just a fun little happy number calculator.
You can read the Wikipedia page on happy numbers to find out what they are.
Just type a happy number and press enter to evaluate.
There are also some developer commands you can do. For example, clear() clears the falldowns that come after an item is placed. power = [#] changes the power used in the sum. By default, it is 2 (sum of the squares), but you can change the power.
You can also modify the nthPower variable (which is false by default), for example: nthPower = 'digit', meaning that the exponent depends on the digit, or nthPower = 'reversePlace', which is reverse digit.
You can also change the mode, which is what to do with the numbers. The default is add (add them together), but you can change it to mult/multiply and fact/factorial, by doing: mode = 'factorial'.
Also, anyone who's interested, try settings inverse = true and see what that does.
Happy numbers was fun trivia of the day in my Calculus course, so I whipped up a calculator and used it to come up with fun statistics about happy numbers. That's about it :P
A function grapher with some sweet tools.
You can trace the slope along the function, use newtons method to find zeros, draw the derivative, and more.
My function also holds its dot-connecting to a high level. Just try graphing the following function with google, desmos, and my grapher, to see which is the most accurate: abs(sin(x^10))/sin(x^10) + 2 (the dots aren't supposed to connect)
If the function is ever chopping, just change the increment (hit the settings icon).
This also animates much faster on Microsoft Edge for some reason.
Use 'Graph' to draw a function, and the other features are pretty self explanatory.
In 'Trace' mode, move your mouse along the graph to see the slope of the graph, and hit 'n' (on desktop), to see Newton's method in action for finding zeros.
Use the mouse wheel to zoom in or out, and redraw the function.
The settings has multiple commands. The show/hide lines command, which toggles whether or not to draw lines between points in the function (shows them by default). The domain and range commands that followup with a prompt asking you to set your custom domain/range. The animate/no animation command that toggles whether to animate the drawing of the function or not (on by default). The increment commands which chooses the level of detail for the function (smaller increment means more detail, but takes longer). And, the toggle axes command that toggles whether or not to draw the coordinate axes.
This program uses math.js for evaluating values of equations.
A fast prime factorizer (and detector) using a sieve.
Enter the size of your sieve, and generate it (sieves of sizes up to 100,000,000,000,000—or 200 trillion—can be generated nearly instantly). Any number can be factorized as long as they have a divisor <= the sieve size.
After you generate the sieve once, you can factorize as many numbers as you want.
I was always fascinated by prime number factorization, and a sieve is the most intuitive and fast way I can think of to factorize them. I had a java program that had a much much bigger sieve of its own and was ever-expanding, but that became boring after a while and was impractical to put on a website.
I use big.js for numbers too big to normally handle.
A graphical representation of Dijkstra's shortest path algorithm. The width of each connection means how often it is used.
Dijkstra's algorithm is used to connect the blue node to all other nodes.
Just hit 'n' to generate a new set of nodes. Not much to it.
If you have any questions or concerns, just shoot me an email.
Generate mazes using this online maze generation tool, and even see the maze generation process with an animation.
You can save the mazes as png files, and even adjust the resolution.
You can even change the style of the maze, with cool shapes and such.
Press ‘s’ for settings, or ‘n’ for generating a new maze.
The RDE button stands for 'remove dead ends'. This might allow multiple solutions, however.
Halfway through my first year programming in school, we were just introduced to GUI's (graphical user interfaces). One day in the library, I asked my friend for coding suggestions, and he suggested I make mazes.
That same day in the library, I whipped up a program, but it was terrible—the 'mazes' looked awful. I would just randomly fill in squares on a grid, checking if a solution existed.
When I got home, I looked up maze generation algorithms, stumbled upon depth-first search, and the next day I made a working maze. Originally this was made in Java, and I even made it so you can play against an AI, who would try running into you. The original code can be found here.
The next week I also added the animation there, and I thought it was sufficiently cool and informative to publish on Wikipedia, and to this day it can be found on Wikipedia's maze generation algorithm page. I also noticed that the recursive solution I used to solve the maze wasn't on Wikipedia, so I added that section along with a Java code sample in the maze solving algorithms page.
The mazes are generated using a depth-first maze generation algorithm. Styles are made by affecting the probability that maze segments will turn in specific directions in the generation.