Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- // dados dos generadores, calcular el resultado de todas las sumas posibles
- function convolve ($a,$b) {
- $c = array();
- foreach (array_keys($a) as $ka) {
- foreach (array_keys($b) as $kb) {
- $c[$ka] = $c[$kb] = $c[$ka+$kb] = 1;
- }
- }
- return $c;
- }
- if ($argc != 3) die ("uso: $argv[0] N k\nN = número de dados, k = número de caras\n");
- $N = intval($argv[1]);
- $k = intval($argv[2]);
- if ($N < 1 || $k < 1) die ("menos lobos\n");
- // 1 - calcular todos los valores que un dado único puede generar
- // son todos los valores del dado X todas las posibles potencias de 10
- // ie. k * N valores
- $dice_gen = array(); // usado como hash
- for ($exp = 0, $mul = 1; $exp != $N; $exp++, $mul *= 10) {
- for ($die_face = 1; $die_face <= $k; $die_face++) {
- $dice_gen[$die_face * $mul] = 1;
- }
- }
- $result = $dice_gen; // primer dado
- for ($die = 1; $die != $N; $die++) {
- $result = convolve($result,$dice_gen);
- }
- for ($n = 1; isset($result[$n]); $n++);
- echo "$n\n";
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement