I found a challenge called “The Bomberman Game” on HackerRank and I found it pretty interesting.
It boils down to something like this:
The Bomberman Game
- Bombs will explode in 3 seconds
- When a bomb explodes it clears its tile and 1 tile up, down, left, right
- Bombs that are about to go off explode at the same time
- There are no chain reactions
- If a bomb explodes next to another that is not about to go off then the nearby bomb is just cleared
- Bomberman plants some bombs (you’re given an input with the map)
- A second passes
- A second passes. Bomberman plants bombs on all empty slots
- A second passes
- Repeat 3 and 4 until N seconds passes
R = number of rows
C = number of cols
S = number of seconds
O = bomb
. = empty
R C S
Return the map after N seconds have passed.
The first thing I though was to solve it with a generator (well, there was no real need to use it, but since it is about a game I thought it would be fun to be able to access any state of the game).
For the latest version always check brunolm/Docs/blob/master/code/js-ts/style.md.
The style and guides used here is how I code. Different people/companies might use different styles.
knex is a npm module that works with:
await are keywords commonly used on C#. They allow you to perform async operations without the callback hell.
The “callback hell” happens when you perform multiple async operations. For each operation you need to send a callback, a function that will execute when the operation completes.
“Clean Code” is the name of a book that talks about how you should write your code to make it clean, to make it easy to understand, to be easily changed.
- How do I install?
- Does it work on Linux/Mac?
- Does my editor support it?
- Do I have to learn a whole new language? Like CoffeeScript, Dart…?
- Any big companies using it?
- Does it support React?
- Have you ever coded a real project with it?
- Yes and I actually kept it compatible with the architecture of other (js) projects in my company. One of the projects is scaling.
- How many bugs did you prevent?
- Over 9000… A lot and very recently I found a bug in production in a very big project that would never happen if it was coded in TypeScript.
- Do you still use babel?
- Not if I get to choose which version of node I will be using. For some old versions some polyfills are really good… TypeScript does not add polyfills, it does not change your code more than enough to support a few ES features. You can check it out for yourself on TypeScript playground, the playground targets ES3, so if you use arrow functions or async/await TypeScript will “alter” your code.
AssertSharp is a .NET like Assert class that you can use on your unit tests.
npm install assertsharp --save-dev