This content originally appeared on DEV Community and was authored by Eduardo Carísio
I did a knowledge test where I received a link with 3 steps, unfortunately, I stayed stucked at second step.
The first step ask for to get te middle char of any word.
If the word has a even length, return 2 middle digits otherwise, the middle digit.
Solution
public static string GetMiddle(string s)
{
if(s.Length <= 2) return s;
var isEven = s.Length % 2 == 0;
// I remove 1 digit because de array is 0 index;
// I always round up for de odd words, even words the division is exact
// rounding up odd words, i dont need to handle with even/odd on the 1 subtraction
var middleDigit = (int)Math.Ceiling(s.Length * 1M / 2M) - 1;
return s.Substring(middleDigit, isEven ? 2 : 1);
}
At this point, everything is ok.
The second step asked to me for count the notes of an ATM dispenser just with notes of values: 100, 50 and 20.
Withdrawals
- $260
- $40
- $230
- $250
Outputs
- {2, 0, 3}
- {0, 0, 2}
- {1, 1, 4}
- {2, 1, 0}
Solution
public static int[] Withdraw(int amount)
{
var result = new int[] { 0,0,0 };
var note100Result = (int)Math.Floor(amount * 1M / 100M);
if(note100Result > 0)
{
var remainValue = amount - (note100Result * 100);
if(remainValue % 50 !=0)
if(remainValue % 20 !=0)
note100Result--;
result[0] = note100Result;
if(note100Result > 0)
amount -= note100Result * 100;
}
var note50Result = (int)Math.Floor(amount * 1M / 50M);
if(note50Result > 0)
{
var remainValue = amount - (note50Result * 50);
if(remainValue % 20 !=0)
note50Result--;
result[1] = note50Result;
if(note50Result > 0)
amount -= note50Result * 50;
}
var note20Result = (int)Math.Floor(amount * 1M / 20M);
if(note20Result > 0)
{
result[2] = note20Result;
}
return result;
}
The logic is: you just can proceed to another note if the remaining value is fully divisible for ANY ONE of the other notes, otherwise,
you need to subtract 1 note of the current note counter.
Of course, this can be done in other ways, with a loop and Linq as example, but I preferred to do like this to be more explainable.
As I didn't finish the second step, I even couldn't see the third step :(
As I said earlier, I stayed stucked at this step. I did this test after a long day of work, so my brain was not okay to do tasks like this.
My tip for this tests:
- Do this in a unstressed moment, after take a snap or a good sleep night (if you can choice this moments obviously)
This content originally appeared on DEV Community and was authored by Eduardo Carísio
Eduardo Carísio | Sciencx (2021-05-28T14:56:13+00:00) Knowledge test. Retrieved from https://www.scien.cx/2021/05/28/knowledge-test/
Please log in to upload a file.
There are no updates yet.
Click the Upload button above to add an update.