Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Valores iniciales del triángulo de Pascal:
- List<Tuple<int, int, int>> trianguloPascal = new List<Tuple<int, int, int>>();
- // Primera fila:
- // 1
- trianguloPascal.Add(new Tuple<int, int, int>(1, 1, 1));
- // Segunda fila:
- // 1
- //1 1
- trianguloPascal.Add(new Tuple<int, int, int>(2, 1, 1));
- trianguloPascal.Add(new Tuple<int, int, int>(2, 2, 1));
- // Se generarán 12 filas:
- for(int i = 1; i <= 10; ++i)
- {
- // Calcula la fila y columna actuales:
- int filaActual = trianguloPascal.Last().Item1 + 1;
- int columnaActual = trianguloPascal.Last().Item2 + 1;
- // Genera los valores de la siguiente fila:
- for(int j = 1; j <= columnaActual; ++j)
- {
- // Comprueba se trata de la primera y última columna
- // para agregar un 1:
- if(j == 1 || j == columnaActual)
- {
- trianguloPascal.Add(new Tuple<int, int, int>(filaActual, j, 1));
- }
- else
- {
- // Cálculo del nuevo valor:
- int nuevoValor = trianguloPascal.First(v => v.Item1 == (filaActual - 1) && v.Item2 == (j - 1)).Item3
- + trianguloPascal.First(v => v.Item1 == (filaActual - 1) && v.Item2 == j).Item3;
- trianguloPascal.Add(new Tuple<int, int, int>(filaActual, j, nuevoValor));
- }
- }
- }
- // Muestra los valores del triángulo de Pascal:
- trianguloPascal.ToLookup(t => t.Item1, t => t.Item3.ToString())
- .Select(t => t.Aggregate((x, y) => x + " " + y))
- .Aggregate((u, v) => u + Environment.NewLine + v)
- .Dump("Triángulo de Pascal");
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement