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 <= 0) { array = new string[] { }; } else { if (n > 254) { n = 254; } List<string> list = new List<string>(); string str = string.Empty; for (int i = 1; i <= n; i++) { str = i.ToString("x2"); str = "#" + string.Join(string.Empty, Enumerable.Repeat(str, 3)); list.Add(str); } array = list.ToArray(); } return array; } }
其他人的写法
using System; public class Kata{ public static string[] ShadesOfGrey(int n){ string[] arr = null; n = n <= 0 ? 0 : (n > 254 ? 254 : n); if (n > 0) { arr = new string[n]; for (int i = 1; i <= n; ++i) { arr[i-1] = 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 < 0) count = 0; return Enumerable .Range(1, Math.Min(count, 254)) .Select(x => string.Format("#{0:x2}{0:x2}{0:x2}", x)) .ToArray(); } }