Summer 2018, I worked at Microsoft on a HoloLens project
I'm Richard Hayes
A Computer Science student at the University of Ottawa. I was a Microsoft Garage Developer Intern summer 2018. In Summer 2017, I attended the Wolfram Summer School and completed a Mathematica project. I recently built and pubilshed a Unity game called Personal Space.
I compete in Google Code Jam and on Code Forces. Each week, I solve some leet code challenges with friends. I like learning about data structures, algorithims, and solving programing challenges.
Summer 2018, I worked at Microsoft on a HoloLens project
During the school year, I wrote a 2D space exploration game in Unity
I completed all 1497 exercises in the Khan Academy math curriculum
As a course project, I wrote a task management app using Android Studio
This problem is from Round 1A Google Code Jam 2019, I solved it by constructing a suffix tree
, which I then traversed using a post order traversal
in order to match strings into groups of two from longest to shortest suffix.
To solve this problem from the 2019 Google Code Jam Qualification Round, I recursively split bit strings and sent them to the server, in order to perform a binary search. I used the results of this binary search to determine the index of up to fifteen broken machines
out of a possible 1024 machines in 10 guesses or less.
In order to find the number of nonconnected islands. I implemented the union find
data structure in C. Union find is able to join groups and lookup the group an element belongs to in O(1)
. I also learnt about using calloc
in C to allocate a contiguous block of memory for use as an array.
Given the hex string in the white box
below. Construct a graph according to the following rules:
Find the sum of every unique shortest path
. Two shortest paths are unique
if one of the paths contains at least one node that the other does not. The shortest path between two nodes is a series of edges along which one could travel to get from one node to the other.
5d0d
has 3 unique nodes 5, d, and 0
. As we traverse the string from left to right, we find the following edges:
5d
with value 5 + d = 5 + 13 = 18
d0
with value d + 0 = 13 + 0 = 13
0d
which is the same as d0
, so we ignore itWe have 3 shortest paths to consider as follows:
0
to d
with a cost of 13
0
to 5
with a cost of 31
d
to 5
with a cost of 18
So, the answer to this example case is 13 + 31 + 18 = 62
Given the function below, find the largest integer n
such that query(n)
returns false
and query(n+1)
returns true
. The answer is an integer between 1
and 80000000000
(80 billion!)


Find the missing value (hint: read the title):
I make youtube videos about Unity, Git, Servers, and Algorithims.
Use arrow keys
to move. Collect the gold
before the other players. This is multiplayer game with anyone else on this site. Written with NodeJS
and Socket.io
. Player list and scores are shown below:
Spread
is a game about strategically selecting a starting point for a virus
. Left click
on the canvas to start the spread.
Reach out to me on Twitter or by email !