algoritmos

jetzt mann

algoritmos

Postby worf » Mon Jun 13, 2011 12:14 am

Tópico para postar algoritmos bonitos, em qualquer linguagem de programação.

Image
reclame menos
bora fazendo 2017
User avatar
worf
9_9
9_9
 
Posts: 7276
Joined: Sat Mar 29, 2003 12:13 am
Location: silicone valley

Re: algoritmos

Postby worf » Mon Jun 13, 2011 12:21 am

Algoritmozinho bonito que fiz para cálculo de Pi, em C, usando Método de Monte-Carlo.

O método de monte carlo é uma classe de métodos probabilísticos para simulação de qualquer coisa.
Nesse caso, temos um quadrado com um círculo dentro. Dividimos esse quadrado em 4, e chutamos pontos dentro dele. Daí contamos o numero de pontos cujas coordenadas caem dentro do quarto de círculo (usando pitágoras).

Se você dividir o numero de pontos dentro pelo total de números chutados, e multiplicar por 4, você obtém uma estimativa de pi.
Só não levei em conta o erro, estava com preguiça.

Image
Code: Select all
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>

double monteCarloPi(int n);

int main (int argc, char* argv[]){
      printf("Metodo de Monte Carlo para calculo de pi \n");   
      
      int n;
      scanf("%d \n", &n);

      double pi = monteCarloPi(n);
      printf("pi = %f \n", pi);

      exit(EXIT_SUCCESS);
   }

double monteCarloPi(int n){
   if (n <= 0){
      printf("numero de iteracoes deve ser > 0! \n");
      return 0;
   }

   printf("metodo monte carlo para pi (n = %d)... \n", n);

   double nDentro = 0.0;   
   double x = 0.0;
   double y = 0.0;
   srand(time(NULL)) ;
   for (int i = 0; i < n; i++){
      x = ((double)rand() / (double)RAND_MAX);
      y = ((double)rand() / (double)RAND_MAX);      
      if( sqrt(x * x + y * y) <= 1) nDentro = nDentro + 1;
      }   

   return 4 * (nDentro / n);
}
reclame menos
bora fazendo 2017
User avatar
worf
9_9
9_9
 
Posts: 7276
Joined: Sat Mar 29, 2003 12:13 am
Location: silicone valley

Re: algoritmos

Postby guismo » Mon Jun 13, 2011 7:40 am

nao entendo porra disso, mas uso muito isso

gi, caustics, antialiasing, tudo

worf, faça um programa de render
fuck
User avatar
guismo
The Jew Hunter
The Jew Hunter
 
Posts: 8914
Joined: Mon Nov 04, 2002 10:56 pm

Re: algoritmos

Postby worf » Mon Jun 13, 2011 8:05 am

se fosse easy
vou achar algum algoritmo de render aqui.
reclame menos
bora fazendo 2017
User avatar
worf
9_9
9_9
 
Posts: 7276
Joined: Sat Mar 29, 2003 12:13 am
Location: silicone valley

Re: algoritmos

Postby guismo » Mon Jun 13, 2011 1:34 pm

eu sei que nao é, mas todos começaram de algum lugar

ou voce podia ajudar no small lux gpu
http://www.luxrender.net/wiki/SLG

slg rlz
fuck
User avatar
guismo
The Jew Hunter
The Jew Hunter
 
Posts: 8914
Joined: Mon Nov 04, 2002 10:56 pm

Re: algoritmos

Postby guismo » Mon Jun 13, 2011 5:37 pm

worf, voce tem opiniao sobre isso?

http://www.mitsuba-renderer.org/
digo por causa desse trecho, que voce falou que gosta de algoritmos
So far, its main use has been as a testbed for algorithm development in computer graphics


especialmente interessantes sao essas imagens
http://www.mitsuba-renderer.org/images/ ... flakes.png
http://www.mitsuba-renderer.org/devblog ... ser_p3.jpg
fuck
User avatar
guismo
The Jew Hunter
The Jew Hunter
 
Posts: 8914
Joined: Mon Nov 04, 2002 10:56 pm

Re: algoritmos

Postby kradfjj3 » Wed Jun 22, 2011 7:18 pm

Image
User avatar
kradfjj3
Kratástrofe
Kratástrofe
 
Posts: 3816
Joined: Fri Feb 08, 2008 10:12 pm
Location: Vc se importa?

Re: algoritmos

Postby worf » Fri Dec 14, 2012 11:03 pm

vish, nem lembrava desse tópico. Vou postar um legal que fiz dia desses.
reclame menos
bora fazendo 2017
User avatar
worf
9_9
9_9
 
Posts: 7276
Joined: Sat Mar 29, 2003 12:13 am
Location: silicone valley

Re: algoritmos

Postby worf » Fri Dec 14, 2012 11:10 pm

Soma os números pares da sequencia de fibonacci até dar 4 milhões.
Estou usando programação dinâmica (salvando os resultados já calculados e consultando quando precisa).

É solução pra esse problema aqui: http://projecteuler.net/problem=2

Code: Select all

#import <stdio.h>
#import <stdlib.h>
int fibonacci(int n);

int* cache;

int main(int argc, char *argv[]) {   
    printf("## fibo even sum ## \r\n");   
       
    //fib 34 = 5702887 > 4kk
    int n = 34;
    cache = (int*) calloc(n, sizeof (int));   

    int sum = 0;
    int fibo = 0;
    int count = 1;
    while(fibo < 4000000){           
          if(fibo % 2 == 0){
              sum += fibo;           
          }
          count++;
          fibo = fibonacci(count);
    }
   
    printf("sum of even-valued fibo numbers = %d \r\n", sum);
   
    free(cache);
    cache = NULL;
    system("pause");
    return 0;   
}

/*fibo com memoization*/
int fibonacci(int n) {
    cache[0] = 0;
    cache[1] = cache[2] = 1;
    if(n < 2){
         return 1;
    }   
    int i;
    for (i = 2 ; i < n ; i++){
        if(cache[i] == 0){
                    cache[i] = cache[i - 1] + cache[i - 2];
        }
    }
    return cache[n - 1] + cache[n - 2];
}
reclame menos
bora fazendo 2017
User avatar
worf
9_9
9_9
 
Posts: 7276
Joined: Sat Mar 29, 2003 12:13 am
Location: silicone valley


Return to teknoblug

Who is online

Users browsing this forum: No registered users and 5 guests

cron