Advertisement
Fhernd

triangulo-pascal.cs

Feb 27th, 2018
1,512
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.41 KB | None | 0 0
  1. // Valores iniciales del triángulo de Pascal:
  2. List<Tuple<int, int, int>> trianguloPascal = new List<Tuple<int, int, int>>();
  3.  
  4. // Primera fila:
  5. // 1
  6. trianguloPascal.Add(new Tuple<int, int, int>(1, 1, 1));
  7. // Segunda fila:
  8. // 1
  9. //1 1
  10. trianguloPascal.Add(new Tuple<int, int, int>(2, 1, 1));
  11. trianguloPascal.Add(new Tuple<int, int, int>(2, 2, 1));
  12.  
  13. // Se generarán 12 filas:
  14. for(int i = 1; i <= 10; ++i)
  15. {
  16.     // Calcula la fila y columna actuales:
  17.     int filaActual = trianguloPascal.Last().Item1 + 1;
  18.     int columnaActual = trianguloPascal.Last().Item2 + 1;
  19.    
  20.     // Genera los valores de la siguiente fila:
  21.     for(int j = 1; j <= columnaActual; ++j)
  22.     {
  23.         // Comprueba se trata de la primera y última columna
  24.         // para agregar un 1:
  25.         if(j == 1 || j == columnaActual)
  26.         {
  27.             trianguloPascal.Add(new Tuple<int, int, int>(filaActual, j, 1));
  28.         }
  29.         else
  30.         {
  31.             // Cálculo del nuevo valor:
  32.             int nuevoValor = trianguloPascal.First(v => v.Item1 == (filaActual - 1) && v.Item2 == (j - 1)).Item3
  33.                 + trianguloPascal.First(v => v.Item1 == (filaActual - 1) && v.Item2 == j).Item3;
  34.            
  35.             trianguloPascal.Add(new Tuple<int, int, int>(filaActual, j, nuevoValor));
  36.         }
  37.     }
  38. }
  39.  
  40. // Muestra los valores del triángulo de Pascal:
  41. trianguloPascal.ToLookup(t => t.Item1, t => t.Item3.ToString())
  42.     .Select(t => t.Aggregate((x, y) => x + " " + y))
  43.     .Aggregate((u, v) => u + Environment.NewLine + v)
  44.     .Dump("Triángulo de Pascal");
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement