Pascal's Triangle

Medium Patterns
Print the first numRows rows of Pascal's triangle, where each value is the sum of the two above it.

Sample input

5

Sample output

1 1 1 1 2 1 1 3 3 1 1 4 6 4 1

Solution

num_rows = 5
row = [1]
for _ in range(num_rows):
    print(*row)
    row = [1] + [row[i] + row[i + 1] for i in range(len(row) - 1)] + [1]
const numRows = 5;
let row = [1];
for (let r = 0; r < numRows; r++) {
  console.log(row.join(" "));
  const next = [1];
  for (let i = 0; i < row.length - 1; i++) {
    next.push(row[i] + row[i + 1]);
  }
  next.push(1);
  row = next;
}
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        int numRows = 5;
        List<Integer> row = new ArrayList<>();
        row.add(1);
        for (int r = 0; r < numRows; r++) {
            System.out.println(row.stream().map(String::valueOf).collect(Collectors.joining(" ")));
            List<Integer> next = new ArrayList<>();
            next.add(1);
            for (int i = 0; i < row.size() - 1; i++) {
                next.add(row.get(i) + row.get(i + 1));
            }
            next.add(1);
            row = next;
        }
    }
}
fun main() {
    val numRows = 5
    var row = listOf(1)
    repeat(numRows) {
        println(row.joinToString(" "))
        val next = mutableListOf(1)
        for (i in 0 until row.size - 1) {
            next.add(row[i] + row[i + 1])
        }
        next.add(1)
        row = next
    }
}
let numRows = 5
var row = [1]
for _ in 0..<numRows {
    print(row.map(String.init).joined(separator: " "))
    var next = [1]
    for i in 0..<(row.count - 1) {
        next.append(row[i] + row[i + 1])
    }
    next.append(1)
    row = next
}
void main() {
  int numRows = 5;
  List<int> row = [1];
  for (var r = 0; r < numRows; r++) {
    print(row.join(' '));
    final next = <int>[1];
    for (var i = 0; i < row.length - 1; i++) {
      next.add(row[i] + row[i + 1]);
    }
    next.add(1);
    row = next;
  }
}
#include <iostream>
#include <vector>
using namespace std;

int main() {
    int numRows = 5;
    vector<int> row = {1};
    for (int r = 0; r < numRows; r++) {
        for (int i = 0; i < (int) row.size(); i++) {
            cout << row[i];
            if (i < (int) row.size() - 1) cout << " ";
        }
        cout << endl;
        vector<int> next = {1};
        for (int i = 0; i < (int) row.size() - 1; i++) {
            next.push_back(row[i] + row[i + 1]);
        }
        next.push_back(1);
        row = next;
    }
    return 0;
}
#include <stdio.h>

int main() {
    int numRows = 5;
    int row[20];
    int len = 1;
    row[0] = 1;
    for (int r = 0; r < numRows; r++) {
        for (int i = 0; i < len; i++) {
            printf("%d", row[i]);
            if (i < len - 1) printf(" ");
        }
        printf("\n");
        int next[20];
        next[0] = 1;
        for (int i = 0; i < len - 1; i++) {
            next[i + 1] = row[i] + row[i + 1];
        }
        next[len] = 1;
        for (int i = 0; i <= len; i++) row[i] = next[i];
        len++;
    }
    return 0;
}