Guest User

Dados-PT-1

a guest
Oct 9th, 2014
216
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?php
  2.  
  3. // dados dos generadores, calcular el resultado de todas las sumas posibles
  4.  
  5. function convolve ($a,$b) {
  6.     $c = array();
  7.    
  8.     foreach (array_keys($a) as $ka) {
  9.         foreach (array_keys($b) as $kb) {
  10.             $c[$ka] = $c[$kb] = $c[$ka+$kb] = 1;
  11.        
  12.         }
  13.     }
  14.        
  15.     return $c;
  16.  
  17. }
  18.  
  19. if ($argc != 3) die ("uso: $argv[0] N k\nN = número de dados, k = número de caras\n");
  20.    
  21. $N = intval($argv[1]);
  22. $k = intval($argv[2]);
  23.  
  24. if ($N < 1 || $k < 1) die ("menos lobos\n");
  25.  
  26. // 1 - calcular todos los valores que un dado único puede generar
  27. // son todos los valores del dado X todas las posibles potencias de 10
  28. // ie. k * N valores
  29.  
  30. $dice_gen = array(); // usado como hash
  31.  
  32. for ($exp = 0, $mul = 1; $exp != $N; $exp++, $mul *= 10) {
  33.     for ($die_face = 1; $die_face <= $k; $die_face++) {
  34.         $dice_gen[$die_face * $mul] = 1;
  35.     }
  36. }
  37.  
  38.  
  39. $result = $dice_gen; // primer dado
  40.  
  41. for ($die = 1; $die != $N; $die++) {
  42.     $result = convolve($result,$dice_gen);
  43. }
  44.  
  45. for ($n = 1; isset($result[$n]); $n++);
  46.  
  47. echo "$n\n";
RAW Paste Data