Pascal's Triangle
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;
}