Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

Pascal's triangle

Name: Anonymous 2012-01-05 17:41

Motivated by the Hacker News challenge in http://news.ycombinator.com/item?id=3429466 I just made this.


#include <stdio.h>
#include <stdlib.h>

int64_t* next_pascal_row(int64_t* previous_row, int64_t previous_size)
{
  int64_t* retval = (int64_t*)malloc(sizeof(int64_t)*(previous_size+2));
  int64_t i;
  for (i=0;i<previous_size+1;i++) {
    if (i==0 || i == previous_size) {
      retval[i] = 1;
    } else {
      retval[i] = previous_row[i-1] + previous_row[i];
    }
  }
  return retval;
}

void print_row(int64_t* row, int64_t size)
{
  int64_t i;
  for(i = 0; i < size; i++) {
    printf("%lld ",row[i]);
  }
  printf("\n");
}

int main()
{
  int64_t* first_row = (int64_t*)malloc(sizeof(int64_t));
  int64_t* previous_row;
  int64_t* next_row;
  int64_t i,size;
  first_row[0] = 1;
  size = 1;
  print_row(first_row,size);
  previous_row = first_row;
  for(i = 0; i<30;i++) {
    next_row = next_pascal_row(previous_row,size);
    size++;
    print_row(next_row,size);
    free(previous_row);
    previous_row = next_row;
  }
  free(next_row);
}

Opinions? Yeah, int64_t is probably a GNU extension, I don't care as long as it works with gcc. U mad? Also, post you're own solutions. If you can't do the Pascal, you can just go ahead and apply to your're nearest McDonald's, because you ain't worth shit.

Name: Anonymous 2012-01-05 20:23

My try. Please don't laugh too much. ANSI C.


/*public domain*/
#include <stdio.h>
#define MAX 512

int main() {
    int i, j, row_to_print, pascal[MAX][MAX];
    scanf("%d", &row_to_print);
    if (row_to_print == 1) {
        printf("1");
        return 0;
    }

    pascal[0][0]=1;
    for (i=1; i<row_to_print; i++) {
        pascal[i][0]=1;
        pascal[i][i]=1;
    }
    for (i=2; i<row_to_print; i++)
        for (j=1; j<i; j++)
            pascal[i][j]=pascal[i-1][j]+pascal[i-1][j-1];
    for (j=0; j<row_to_print; j++)
        printf("%d ", pascal[row_to_print-1][j]);
    return 0;
}

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List