254 shades of grey
Description:
Why would we want to stop to only 50 shades of grey? Let's see to how many we can go.
Write a function that takes a number n as a parameter and return an array containing n shades of grey in hexadecimal code (#aaaaaa
for example). The array should be sorted in ascending order starting with #010101
, #020202
, etc. (using lower case letters).
using System;
public static class shadesOfGrey(int n) {
// returns n shades of grey in an array
}
As a reminder, the grey color is composed by the same number of red, green and blue: #010101
, #aeaeae
, #555555
, etc. Also, #000000
and #ffffff
are not accepted values.
When n is negative, just return an empty array. If n is higher than 254, just return an array of 254 elements.
Have fun
using System;
using System.Collections.Generic;
using System.Linq; public class Kata
{
public static string[] ShadesOfGrey(int n)
{
// returns n shades of grey in an array
string[] array = null;
if (n <= )
{
array = new string[] { }; }
else
{
if (n > )
{
n = ;
}
List<string> list = new List<string>();
string str = string.Empty;
for (int i = ; i <= n; i++)
{
str = i.ToString("x2");
str = "#" + string.Join(string.Empty, Enumerable.Repeat(str, ));
list.Add(str);
}
array = list.ToArray();
}
return array;
}
}
其他人的写法
using System; public class Kata{
public static string[] ShadesOfGrey(int n){
string[] arr = null;
n = n <= ? : (n > ? : n);
if (n > )
{
arr = new string[n];
for (int i = ; i <= n; ++i)
{
arr[i-] = string.Format("#{0:x2}{1:x2}{2:x2}", i, i, i);
}
}
return arr;
}
}
下面这个还需要学习
Math.Min以及Math.Max的使用
以及Linq的使用,select之后可以直接转换为Array
using System;
using System.Linq; public static class Kata {
public static string[] ShadesOfGrey(int count) {
if (count < )
count = ; return Enumerable
.Range(, Math.Min(count, ))
.Select(x => string.Format("#{0:x2}{0:x2}{0:x2}", x))
.ToArray();
}
}