Category

software engineering

Coding Problem : Outputs the minimum amount of currency denominations

As you know I’ve been brushing up on my algorithm problem solving. I’ve decided to switch gears a bit and get back into C++ rather than Java. I found this problem by Serge Lansiquot from his Udemy course called Learn C++ Programming by Making Games. I highly recommend you pick up this series if you want a fun an easy way of understanding some fundamental computer science.

Write a program that takes a a floating point number and outputs the minimum amount of currency denominations needed to make up that number. Eg. If the user input 45.78 then the output would be:

4 ten dollar bills
1 five dollar bills
0 two dollar bills
0 one dollar bills
3 twenty five cent pieces
0 ten cent pieces
0 five cent pieces
3 one cent pieces

I’ll be updating this post with my solution via a short screencast in the next day or so. I’d love for you guys to post your solutions in the comments below. Please feel free to link me to a github gist or a screencast of your own or if you want to keep it simple and snap a screenshot and post that.

Problem Solving with code – Speeding Fine

We are going to start a series of posts on code problem solving. This will really help you guys that are self taught software developers. No matter how simple or complex we get with these problems it’s always good to take 10 to 20 mins and practice. All of these post will be using Java but feel free to post your solutions using whatever language you like. I would encourage you to take the extra time to write some unit tests so that you know if your code works or not.

Solve the problem on paper or a whiteboard using pseudocode first and post a picture of your solution in the comments below!

Here is an example of some really rough code on paper that I was writing to solve another problem.

The first problem we are going to talk about is speeding fine.

Below is the solution to the speeding fine problem. Post a link to an image of how you solved it or create your own gist for everyone to see.

How to create a bubble sort with Java and Haxe

There are tones of posts online that cover bubble sort. Lately I’ve been brushing up on my Java and also I like Haxe so here are two videos covering bubble sort in each of the two languages.

Java Bubble Sort Algorithm

 

import java.util.Arrays;

/**
 * Created by matthew.wallace on 2/10/17.
 */
public class Main {

    public static void main(String[] args) {

        int[] list = {4,6,2,90,245,3,21,356,42};

        System.out.println("before sort : " + Arrays.toString(list));
        int i,j,temp;

        for (i = 0; i < list.length - 1 ; i++) {
            for (j = 0; j < list.length - 1 - i ; j++) {

                if( list[j] > list[j + 1]) {
                    temp = list[j];
                    list[j] = list[j + 1];
                    list[j + 1] = temp;
                }
            }
        }

        System.out.println("after sort : " + Arrays.toString(list));
    }
}

 

Haxe Bubble Sort Algorithm

 

package ;
class Main {

    public function new() {

        var list:Array<Int> = [7,5,1,2,45,37,42,183,3];

        var temp:Int;

        trace("unsorted list : "+ list);

        for(i in 0...list.length - 1) {
            for(j in 0...list.length - 1 - i) {

                if ( list[j] > list[j + 1]) {
                    temp = list[j];
                    list[j] = list[j + 1];
                    list[j + 1] = temp;
                }
            }
        }

        trace("sorted list : "+ list);

    }

    public static function main() {
        new Main();
    }
}

How do you create a queue from stack algorithm

This will be the first in a series of posts on some common algorithms you can use to solve various problem. I find it super helpful to do one or two of these per day just to keep things fresh in your mind. These are especially helpful to know during coding interviews.

Queue from Stack Java Example.

 

Queue from Stack Haxe Example.

So what is a “Stack”. Well, it’s a container of objects to put it simply. These objects are put in using the last-in first-out out method. To explain this in layman terms lets imagine you have a box and you put in a nickel, a dime, a penny and a quarter in that order. You come back to the box a few seconds later and reach in one at a time to pull out the money that you put in. The order that you can expect the money would be in reverse because when removing from a stack you must remove from the top down. So the first item to leave the box would be the quarter, then the penny, then the dime, then the nickel.

Here is an example of creating and adding items to a Stack in Java.

import java.util.Stack;

public class Queue {
        private Stack<Integer> newStack;
        
     public Queue() {
	oldStack = new Stack<Integer>();
	newStack = new Stack<Integer>();
     }

     public boolean enqueue(int element) {
	  boolean rvalue = true;
		
	  try {
              newStack.push(new Integer(element));
	  } catch (Exception error) {
	       rvalue  = false;
	       System.out.println("There was an error adding the item to the Queue : " + error.getMessage());;
	  }
		
	  return rvalue;
       } 

}

Here is an example in Haxe of a Stack using a typed Array.

package ;
class Queue {

    var newStack:Array<Int> = [];

    public function new() {
    }

    public function enqueue(element:Int):Bool {

        var rvalue:Bool = true;


        try {
            newStack.push(element);
        } catch (error:Error) {
            rvalue = false;
            trace("Something went wrong with added an element to the Queue: " + error);
        }

        return rvalue;
    }

}

Next we talk about the concept of a “Queue”. The Queue is a container that uses the first-in first-out principle. In our example above when explaining what a stack does, in order to implement the same example regarding a queue you would have a box and you would place a nickel, a dime, a penny and a quarter into the box in that order and then when removing them you would expect the money to come out of the box in the order in which you placed it, so you would see a nickel come out of the box first followed by the dime, then the penny, then lastly the quarter.

Here is an example of using some Queue logic with a Java Stack.

import java.util.Stack;

public class Queue {
	
	private Stack<Integer> oldStack;
	private Stack<Integer> newStack;
	private int topElement = -1;
	public Queue() {
		oldStack = new Stack<Integer>();
		newStack = new Stack<Integer>();
	}
	
	public Integer dequeue() {
		topElement = -1;
		if(oldStack.empty()) {
			while(!newStack.empty()) {
				topElement = newStack.peek();
				oldStack.push(topElement);
				newStack.pop();
			}
		}
		
		if(!oldStack.empty()) {
			Integer i = oldStack.peek();
			topElement = i.intValue();
			oldStack.pop();
		}
		
		return topElement;
	}
}

Here is an example of creating Queue logic with a Haxe typed Array.

package ;
import haxe.io.Error;
class Queue {

    var oldStack:Array<Int> = [];
    var newStack:Array<Int> = [];
    var topElement:Int = -1;

    public function new() {
    }

    public function dequeue():Int {

        topElement = -1;

        if(oldStack.length <= 0) {
            while(newStack.length > 0) {
                topElement = newStack.pop();
                oldStack.push(topElement);
            }
        }

        if(oldStack.length > 0) {
            topElement = oldStack.pop();
        }

        return topElement;
    }
}

 

Daily Haxe

Join the #dailyhaxe discord channel!

discord  haxe-logo

Let’s show off what we are all up to in the Haxe community. Join the #dailyhaxe channel on Discord and I’ll pick the most interesting of what is going on and post it for you guys. It will be a great way to meet the community and start conversations about what people are working on or looking to do in the Haxe community.

Don’t just do something, stand there

The worst thing I ever did for my back was become a full time Software Engineer. It’s a constant battle because for that long is not good for you. The last few years I make sure and drink a lot of water and coffee so I’m forced to leave the desk to go to the rest room or fill up my cup to keep the justices flowing. Another thing that has really help is getting an adjustable desk and chair. This way I can stand for 20 – 30 mins and then take a break.

Here are 5 health benefits to having this setup as sited by Smithsonian.com

  • Reduced Risk of Obesity
  • Reduced Risk of Type 2 Diabetes and Other Metabolic Problems
  • Reduced Risk of Cardiovascular Disease
  • Reduced Risk of Cancer
  • Lower Long-Term Mortality Risk

Needless to day … get a standing desk. I also find that it helps me focus more on the task at hand.

Below I’ve shared the “electric” adjustable standing desk that I use every day, the chair that I use when I do sit and the computer monitor arms that I bought. They won’t break the bank and the quality is good enough that you can rely on them to work for you for a long time.

How do I learn algorithms and data structures?

Great Answer from:  Hounshell

Clubs feature for League of Legends

I was really excited to see this. This video from an article on Game Spot talks about the coming Clubs feature that I’ve been working on with my team at Riot. Here is the full article talking about a lot of cool things that are coming to League of Legends http://www.gamespot.com/articles/introducing-the-new-league-of-legends/1100-6434200/

About Matthew Wallace

The lowdown on Matthew Wallace:
I’ve been a  software engineer for more than a decade. The technologies and languages I specialize in are many. Problem solving is something I really enjoy.

Languages I work in: Swift, Objective-C, Actionscript, Java, Ruby, Python, C++, Javascript

Niche Technologies that I work in: Video streaming platforms using Wowza (Java), FMS, WebRTC. I also have done realtime alert and chat systems using the same technologies such as FMS, XMPP, and others.

I tend to work in three main areas. Desktop, Web, and Mobile application development.

What you will get out of this:
My website is meant to showcase things I’m working, things I’m learning or interested it and also if you are looking for a software engineer, you’ve come to the right place. Feel free to reach out. I’d love to hear about what you are working on and what need I can fill or problem I can help solve.