Codesignal Solution: Computer Units to Byte
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 
Example
For capacity = 12
and unit = "KB"
, the output should be
`ComputerUnitsToByte(capacity, unit) = "12288".
12 * 1024 = 12288
, which is the answer.
Input/Output
 [time limit] 4000ms (php)

[input] integer capacity
Disk capacity.
Constraints:
1 ≤ capacity ≤ 100
. 
[input] string unit
Unit symbol, one of the following strings:
'KB'
,'MB'
,'G'
,'TB'
or'P'
. 
[output] string
The answer as a string. It is guaranteed to be smaller than
2^{51}
.
Solution
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.