Skip to main content

Links to favorite tutorials on algorithms

These are a collection of favorite tutorials I've read relating to algorithms. These mostly use pseudocode and are not specific to a particular language. Some may have examples in a particular language, but rest assured the main explanation of the algorithm is given in a way where no particular language is needed.

I've collected these here as a reference guide in case I ever need to come back to them. I hope they might be useful for someone else too.

Manacher's Algorithm - used for finding the longest palindromic string in a sequence.

Bitwise comparisons - this article is about Lisp operators, but don't let that stop you! The bitwise comparison section has one of the best and most concise explanations I've seen. If you don't understand bitwise comparisons (in any language), it will all become clear after you read the explanation, even if you don't know Lisp.

Faces of Fibonacci - An absolutely superb explanation of the "How Many Ways to do x?" question. Highly recommended.

"Output the answer modulo 10^9+7" - A great description of not just why, but how, to calculate your answers modulo 10^9+7 - something that is frequently required in programming contests for problems when you're dealing with very large numbers. The article includes a very important explanation of why division is much more difficult to handle, and how to handle it if you need to.

And more to come soon!

Popular posts from this blog

Why Solar Geoengineering is a Bad Idea: 3 reasons understandable to both the general and scientific communities

Solar geoengineering is the idea of limiting the amount of sunlight that reaches the earth, with the aim of limiting global warming. Here I will show 3 reasons why it's a really bad idea: 1. Photosynthesis requires sunlight, don't limit it - it's one of the few things pulling carbon dioxide out of the atmosphere Photosynthesis is one of the very few ways we have to remove carbon dioxide from the atmosphere. As an added bonus it's done automatically by plants, requiring no effort on our part. It requires light in order to work. To do it, plants take in sunlight, carbon dioxide and water, and they produce oxygen. These plants are literally removing carbon dioxide from our atmosphere, but they require light for it to work.  We should not do anything that could possibly limit the amount of photosynthesis occurring; limiting the amount of light hitting the planet is likely to decrease photosynthesis.  2. We should not be limiting the generation of solar power Solar electri...

How to center images horizontally using Grav

I've been playing around a bit with Grav. I was posing the question to myself: for the relatively simple use-cases I'm dealing with, could it possibly work for my purposes as an alternative to ProcessWire?  The problem I was initially dismayed to find that Grav uses Markdown as its editor, which does not offer native support for horizontal centering of anything (text or images). However, Grav offers some tweaks that help make it easier to do specific things you might commonly want to do. I tried writing a sample article, and I found that one of the hardest things to do was to center an image horizontally. And horizontal centering of images is something I would typically do in most of the articles I would write. So the lack of easy horizontal centering is a highly significant drawback IMHO (most people do want to center images in an article!) However, this issue is made up for by other things in Grav: the relative speed, ease and flexibility of custom theming and built-in suppor...

Creating callable variants of functions by currying in Ruby - code snippet showing how to avoid scope problems

While coding a project in Ruby, I was creating some variants of a function by currying. Initially, I simply created the curried variants as variables, but quickly ran into scope problems where I couldn't then call any of the variants from within other functions. This was because the scope of the variant was the same as the scope of a local variable of that name.  So I created a code snippet as a demo for myself of what I should have done instead, which is to define the curried variant as another function. This new function then has the same scope as any function I would create and not the (more limited) scope of a local variable. Of course, in certain situations defining it as a local variable is more desirable - for example if I was instead planning to use the variant as a variable that could be passed around. This is as opposed to using it solely as a callable function, which is what I ultimately desired. def myfun(stuff, num1, num2)   if stuff == true then   ...

About Me

My photo
Vera
I'm a wife and mother. I don't have any formal computer science qualifications, or any religious qualifications. I have a PhD in biochemistry. This photo is of me, but is confusing for AI.