dailycodebase

2 month data structures and algorithmic scripting challenge starting from 20th December 2018 - Coding is Fun! 💯💯 Do it everyday!! Also, Do give us a ⭐ if you liked the repository

View on GitHub

cover

Day 15 - Recursion Series Part C

Today’s Problem - Pascal’s Triangle

Question – Write a function that takes an integer n as input and prints first n lines of Pascal’s Triangle

Example

input: 5
output:
1  
1 1 
1 2 1 
1 3 3 1 
1 4 6 4 1 

ques

JavaScript Implementation

Solution

/**
 * @author MadhavBahl
 * @date 09/01/2018
 */

function findPascal (row, col) {
    if (col === 1 || col === row) {
        return 1;
    } else {
        return findPascal (row-1, col-1) + findPascal (row-1, col);
    }
}

function printPascal (num) {
    let currentRow;
    for (let i=1; i<=num; i++) {
        currentRow = '';
        for (let j=1; j<=i; j++) {
            currentRow += findPascal (i, j) + ' ';
        }
        console.log(currentRow);
    }    
}

console.log ('/* ===== Pascal\'s Triangle for n = 5\n');
printPascal (5);
console.log ('\n/* ===== Pascal\'s Triangle for n = 7\n');
printPascal (7);

C++ Implementation

Solution

/**
 * @author:divyakhetan
 * @date: 10/1/2019
 */


#include<bits/stdc++.h>
using namespace std;


int sum(int n){
	if(n < 10) return n;
	else return n % 10 + sum(n /10);
}
int main(){
	int n;
	cin >> n;
	cout << "The sum of digits is " << sum(n);
	return 0;
}

C++ Solution by @profgrammer

/*
  *@author: profgrammer
  *@date: 09-01-2019
*/

#include <bits/stdc++.h>
using namespace std;

int ncr(int n, int r){
  if(n < r || n < 0 || r < 0) return 0;
  if(n == r || r == 0) return 1;
  return ncr(n-1,r) + ncr(n-1, r-1);
}

int main() {
  int n;
  cin>>n;
  for(int i = 0;i <= n;i++){
    for(int j = 0;j <= i;j++) cout<<ncr(i,j)<<" ";
    cout<<endl;
  }
}

Python Implementation

[Solution] (./Python/pascal.py)

=begin
@author:aaditkamat
@date: 9/1/2019
=end

def fill_table(num)
  table = []

  (num).times do
    table.push([].fill(0, 0, num))
  end

  num.times do |i|
    table[i][0] = 1
  end

  i = 1
  until i >= num do
    j = 1
    until j >= num do
      table[i][j] = table[i - 1][j] + table[i - 1][j - 1]
      j += 1
    end
    i += 1
  end
  table
end

def print_table(table)
  i = 0

  until i >= table.length do
    j = 0
    until j >= table.length do
      if table[i][j] != 0
        print "#{table[i][j]} "
      end
      j += 1
    end
    print "\n"
    i += 1
  end
end

def main
  print "Enter a number:"
  num = gets.chomp!.to_i
  if num >= 1
    table = fill_table(num)
    print_table(table)
  else
    puts "Pascal triangle cannot have #{num} rows"
  end
end

main

Ruby Implementation

[Solution] (./Ruby/pascal.rb)

"""
@author:aaditkamat
@date: 9/1/2019
"""

def fill_table(num):
  table = []

  for i in range(num):
        table.append([0] * num)

  for i in range(num):
    table[i][0] = 1

  for i in range(1, num):
    for j in range(1, num):
      table[i][j] = table[i - 1][j] + table[i - 1][j - 1]

  return table

def print_table(table):
  str = ''
  for i in range(len(table)):
    for j in range(len(table)):
      if table[i][j] != 0:
        str += f'{table[i][j]} '
    str += '\n'
  print(str)

def main():
  print("Enter a number:")
  num = int(input())
  if num >= 1:
    table = fill_table(num)
    print_table(table)
  else:
    print(f'Pascal triangle cannot have {num} rows')

main()

Java Implementation

Solution

/**
 * @date 09/01/19
 * @author SPREEHA DUTTA
 */
import java.util.*;
public class PascalTriangle {
    public static int pascal(int r,int c)
    {
        if(r==c || c==0)
            return 1;
        else
            return pascal(r-1,c)+pascal(r-1,c-1);
    }
    public static void print(int n)
    {
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<=i;j++)
                System.out.print(pascal(i,j)+" ");
            System.out.println();
        }
    }
     public static void main(String []args)
     {
         Scanner sc=new Scanner(System.in);
         int n;
         n=sc.nextInt();
         print(n);
     }
}