Weekly-Challenge-2022-Kotlin
Weekly-Challenge-2022-Kotlin copied to clipboard
Solucion reto 32 con C# .net 6
Solucion reto 32 con C# .net 6 - (cambio ordenamiento para obtener el mas alto)
No se me había ocurrido usar Skip. Por si quieres otra alternativa, tienes el operador de indexación ^ y todos los operadores de indexación de los arrays en C# [1..2] etc. para coger un grupo de elementos o lo que sea, ^ simplemente apunta al último y el ^2 apunta al penúltimo y así .
Aún que leí por ahí que ninguna de estas dos soluciones pasa un test de performance cuando se le inyectan miles de millones de datos por el uso del OrderBy de Linq y cosas por el estilo.
Perdón, es que no subo los retos, por eso comento por aquí :P, que no hay mucha gente que participe con C#
Gracias por aportar la solución, tengo que pensar más en skip jeje.
Por cierto, Ensure.That no es una librería (aún que la hay) simplemente lanza excepción si no se cumplen los requisitos.
Documentación: https://docs.microsoft.com/es-es/dotnet/csharp/language-reference/proposals/csharp-8.0/ranges
static void Main(string[] args)
{
IEnumerable<int> numbers = new List<int>() { 1,2,43,4,25,6,7,8,9,10,5,12,3 };
IEnumerable<int> nullList = null;
IEnumerable<int> intList = new int[] { 1,2,4};
IEnumerable<int> intList2 = new int[] { 1 };
Console.WriteLine(GetSecondMax(intList2));
}`
public static int GetSecondMax(IEnumerable<int> numbers)
{
Ensure.That(numbers).IsNotNull();
Ensure.That(numbers).ContainsMinElements<int>(2);
return numbers.OrderBy(x => x).ToArray()[^2];
}
Yo intentaré unirme a los retos en c#
var numbers = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 1231,1231, 312, 231, 213, 123, 1, 2 };
var secondMax = numbers.OrderByDescending(x => x).Distinct().Skip(1).FirstOrDefault();
Console.Write(secondMax );
Ésta sería mi solución
Muy, pero que muy buen apunte, ese Distinct marca la diferencia, no lo había pensado, mira que el problema es simple pero se le sacan las costuras fácil. Grax por compartir!
Buen aporte y el Ensure.That lo encuentro muy util la verdad no lo conocia! Mil gracias.
El distinct da la cara para el performance
Gracias por sus aportes!