The rgb function is incomplete. Complete it so that passing in RGB decimal values will result in a hexadecimal representation being returned. Valid decimal values for RGB are 0 - 255. Any values that fall out of that range must be rounded to the closest valid value.
Note: Your answer should always be 6 characters long, the shorthand with 3 will not work here.
The following are examples of expected output values:
Rgb(255, 255, 255) # returns FFFFFF
Rgb(255, 255, 300) # returns FFFFFF
Rgb(0,0,0) # returns 000000
Rgb(148, 0, 211) # returns 9400D3
using System;
public class Kata
{
public static string Rgb(int r, int g, int b)
{
char[] SixChar = new char[6] { 'A', 'B', 'C', 'D', 'E', 'F' };
string[] _result = new string[3];
int CurrentNum;
int CurrentIndex = 0;
int[] rgb = new int[3] { r, g, b };
foreach (int element in rgb)
{
CurrentNum = element;
if (CurrentNum > 255)
{
_result[CurrentIndex] = "FF";
break;
}
if (CurrentNum != 0)
{
if (CurrentNum > 16)
{
while (CurrentNum != 0)
{
bool Using = false;
switch (CurrentNum % 16)
{
case 10:
_result[CurrentIndex] += SixChar[0];
break;
case 11:
_result[CurrentIndex] += SixChar[1];
break;
case 12:
_result[CurrentIndex] += SixChar[2];
break;
case 13:
_result[CurrentIndex] += SixChar[3];
break;
case 14:
_result[CurrentIndex] += SixChar[4];
break;
case 15:
_result[CurrentIndex] += SixChar[5];
break;
default:
_result[CurrentIndex] += CurrentNum % 16;
Using = true;
break;
}
if (Using)
{
switch (CurrentNum / 16)
{
case 10:
_result[CurrentIndex] += SixChar[0];
break;
case 11:
_result[CurrentIndex] += SixChar[1];
break;
case 12:
_result[CurrentIndex] += SixChar[2];
break;
case 13:
_result[CurrentIndex] += SixChar[3];
break;
case 14:
_result[CurrentIndex] += SixChar[4];
break;
case 15:
_result[CurrentIndex] += SixChar[5];
break;
default:
_result[CurrentIndex] += CurrentNum / 16;
break;
}
break;
}
CurrentNum /= 16;
}
}
}
else
{
_result[CurrentIndex] += "00";
}
CurrentIndex++;
}
char[] result1 = _result[0].ToCharArray();
char[] result2 = _result[1].ToCharArray();
char[] result3 = _result[2].ToCharArray();
Array.Reverse(result1);
Array.Reverse(result2);
Array.Reverse(result3);
return new string(result1) + new string(result2) + new string(result3);
}
}
public class Kata
{
public static string Rgb(int r, int g, int b)
=> $"{Normalize(r):X2}{Normalize(g):X2}{Normalize(b):X2}";
private static byte Normalize(int a)
=> (byte)(a < 0 ? 0 : a > 255 ? 255 : a);
}