What you need to know to solve basic combinatorial generation problems you might encounter on coding interviews, with plenty of examples in Python.
-
-
6 Minimum Steps To Securing Your Online Identity And Data
Raising the bar for what is necessary to keep your accounts secure online.
Tags: -
From An Iterator of Iterators to Cantor's Paradise: A Deep Dive Into An Interview Question
A deep dive into flattening an iterator of iterators and a segue into set theory and some of its theorems based on the solutions to this problem, inspired by a coding interview question.
-
Generating All Balanced Parentheses: A Deep Dive Into An Interview Question
A deep dive into the generation of balanced parentheses, inspired by a coding interview question.
-
A Review of Basic Algorithms and Data Structures in Python - Part 1: Graph Algorithms
A quick review of basic graph algorithms and related data structures, with minimal implementations and unit tests provided in Python.
-
Fun With Python Coroutines: Generating Permutations
A very short post on having fun with coroutines to generate all permutations of a given list.
Tags: -
The Infinite In Haskell and Python
Exploring the use of coroutines and lazy evaluation to generate infinite structures in Haskell and Python.
Tags: -
9 Anti-Patterns Every Programmer Should Be Aware Of
A discussion of software design and programming anti-patterns to know for every programmer, with examples.
Tags: -
Understanding Recurrence Relations Using Automata, Python Code, And Javascript Visualizations
Recurrence relations are very often taught in first- or second-year computer science and discrete mathematics courses. This post takes a somewhat different and more visual approach to understanding linear recurrences and solving them by drawing the link between linear recurrences, automata, and matrices, using the problem of generating all domino-tilings of a board as the springboard. Code in Python and visualizations in JavaScript are used to demonstrate the ideas.
-
Understanding Asynchronous IO With Python's Asyncio And Node.js
An exploration of asynchronous IO, event loops, threads, and coroutines through code written for Node.js and Python 3.4.
Tags: -
Turing Recognizability of Turing Machines That Accept All Strings
A proof that the set of encodings of Turning machines that accept all strings is not Turing-recognizable.
-
Visualizing Philosophers And Scientists By The Words They Used With Python and d3.js
Creating a word-cloud based off of publicly available project Gutenberg books, with d3.js and Python.
-
It From Bit - A Brief Exploration Of Some Ideas and Results From The Theory of Computation
A presentation I gave to a group of physics graduate students, as an introduction to some ideas and results in theoretical computer science.
-
Understanding SAT by Implementing a Simple SAT Solver in Python
SAT is often described as the "mother of all NP-complete problems." This post goes over what SAT is and why it is considered to be so important. A simple SAT solver is implemented using Python in the process.
Tags: -
So How Do You Actually Calculate The Fibonacci Numbers?
You have seen it as an example a million times. But do you know how to do it efficiently?
Tags: -
Combinatorial Generation Using Coroutines With Examples in Python
Approaching combinatorial generation algorithms using coroutines, with examples in Python. Inspired by Knuth's work in his volume 4 of The Art of Computer Programming, as well as his "Deconstructing Coroutines" paper, co-written with Frank Ruskey.
-
30 Python Language Features and Tricks You May Not Know About
A list of Python tips and tricks. See how many of them you already know.
Tags: -
Multilinear Representation of Boolean Functions
Algorithm to compute the multilinear representation of a boolean function given its truth table.
Tags: -
Understanding Two-Step Verification With An Example Using Python and Google Authenticator
An introduction to two-step authentication, HOTP and TOTP algorithms, with an example in Python on Heroku using Flask and pyotp and the Google Authenticator app for client-side.
Tags: -
Line Intersecting Maximal Number of Circles (Circle "Stabbing" Problem)
Developing an algorithm to find a line that intersects a maximal number of circles, given a set of circles. Based on an ACM ICPC regional competition problem.
-
Finding the Tangent Line to Two Circles Demonstrated Using JSXGraph
An HTML5 applet demonstrating step by step how to find tangent lines to two circles, using the JSXGraph framework.
-
Thales Inscribed Angle Theorem Demonstrated Using JSXGraph
An HTML5 applet demonstrating the Thales inscribed angle theorem.
-
Expected Running Time of Two Randomized Sort Algorithms (ACM ICPC 2013 PACNW Regional)
Computing the expected running time of two randomized sort algorithms for a given input array. This problem appeared in ACM ICPC 2013 PACNW regional competition.
-
Pattern Matching in Fibonacci Words (ACM ICPC World Finals 2012)
A discussion of calculating the number of occurrences of a given pattern in Fibonacci words, with a Java solution. Problem from the 2012 ACM ICPC world finals.
-
Programmer's Guide to Setting Up a Mac OS X Machine
My list of items to do to set up a Mac OS X machine for coding and other power user tasks.
-
Fibonacci Primitive Roots of Primes (Project Euler)
A problem on finding primes with Fibonacci primitive roots, from Project Euler and my Python solution.
-
Common Substring Permutation
Short post on a simple problem on common subsequence permutations with a neat one-line Python solution.
Tags: -
Visualizing the Convex Hull Using Raphaël
Visualizing a simple incremental convex hull algorithm using HTML5, JavaScript and Raphaël, and what I learned from doing so.
-
Basics of Cryptography Part I: RSA Encryption and Decryption
An introduction to RSA cryptography, with accompanying Python code implementing the basic algorithms used. A quick review of the number theory and group theory involved is given as well.
-
Hundred Prisonors and a Room With a Light Switch
A hundred prisoners are given a challenge that might set them free. See if you can solve the puzzle involving a light switch and help them gain their freedom.
-
A Study of Python's More Advanced Features Part III: Classes and Metaclasses
A study of how Python handles classes and metaclasses.
Tags: -
Interview Question: All Possible Products of a List of Primes
Interview question to list all possible products of a list of primes, with two Python solutions and a short discussion of the problem.
-
Problem-Solving Lessons From George Pólya
What I learned from Newman's selections of Pólya's How to Solve It, the influential and beautifully written book on problem-solving techniques and heuristics.
Tags: -
Interview Question: Fair and Unfair Coins and Bayes' Theorem
Interview question to infer the probability of an fair and unfair coins after a certain number of coin tosses using Bayes' theorem.
-
A Study of Python's More Advanced Features Part II: Closures, Decorators and functools
A study of Python's function and class decorators. An appendix to explain Python's closures is given too. Plenty of examples.
Tags: -
A Study of Python's More Advanced Features Part I: Iterators, Generators, itertools
A study of Python's iterators, generators and the itertools package, with ample (mostly) mathematical examples.
Tags: -
Interview Question: Fairness from Unfairness and Randomness Extraction
Interview question to use an unfair coin to simulate a fair one. The question is the same as extracting randomness from an unfair Bernoulli process. A Python implementation is given.
-
Manbelbrot Meets HTML5 - A Little Fractal Geometry
Simple HTML5 and JavaScript code to generate the Mandelbrot fractal on a canvas element.
Tags: -
Interview Question: Grouping Words Into Anagrams
Simple Python solution to interview question to group words into anagrams.
-
A Christmas-Themed Experiment - HTML5 Canvas Snowflakes
Little experiment with HTML5 and Canvas to generate random fractal snowflake-like patterns.
Tags: