puzzle contents
raw puzzle

Original Problem

Given the capacity of a hard drive and its measure unit, return its capacity in bytes.

Here are all possible measure units and their sizes:

Kilobyte (KB)1,024 bytes
Megabytes (MB)1,048,576 bytes
Gigabyte (G)1,073,741,824 bytes
Terabyte (TB)1,099,511,627,776 bytes
Petabyte (P)1,125,899,906,842,624 bytes


For capacity = 12 and unit = "KB", the output should be

`ComputerUnitsToByte(capacity, unit) = "12288".

12 * 1024 = 12288, which is the answer.



The solution is quite obvious that the capacity must be multiplied by a power with base 1024, based on the unit. So KB is \(1024^1\), MB is \(1024^2\) and so on. In order to have a solution which is as short as possible, we'll use some JavaScript trickery. As we can assume, that only the given units are passed as argument, we focus on the first character and search this character in a string:

ComputerUnitsToByte = (c, u) =>
   c * Math.pow(1024, 1 + "KMGTP".indexOf(u[0])) + ""

Since JavaScript doesn't have int64 support, a lot of other tricks don't work and as such I had the shortest solution with this snippet.