Premios Primitiva

De Ejercicios

Enunciado

Implementa un módulo para calcular cuántos premios nos han tocado en “La Primitiva”. Para ello el módulo recibirá como entradas un vector de 6 números enteros, que representa la combinación ganadora, y una matriz de enteros de 6 columnas, en el que cada fila representa las combinaciones que nosotros hemos jugado (una selección de 6 números entre el 1 y el 49). El módulo devolverá tres valores que indiquen cuántos premios de 6, de 5 y de 4 aciertos hemos obtenido. Se considera que una fila de la matriz tiene un “premio de N” cuando contenga N números de la combinación ganadora. Ejemplo: si la combinación ganadora es:

5  16  18  19  26  31

Y nuestras apuestas son 5:

Apuesta 1:  3  18  20  26  40  48  --> 2 aciertos
Apuesta 2:  5  16  18  26  30  31  --> 5 aciertos
Apuesta 3: 16  18  26  31  32  49  --> 4 aciertos
Apuesta 4:  5   7  16  17  18  26  --> 4 aciertos
Apuesta 5:  1   6  24  33  37  45  --> 0 aciertos

El módulo debe devolver que hemos obtenido 0 premios de 6 aciertos, 1 premio de 5 aciertos y 2 premios de 4 aciertos.

Soluciones

Programa en Matlab

function [premios6, premios5, premios4]=Primitiva(v,m)
%Parámetros de entrada:
%    v: vector de 6 números enteros, que representa la combinación ganadora de
%       la primitiva
%    m: matriz de enteros de 6 columnas, en el que cada fila representa las 
%        combinaciones que nosotros hemos jugado 
%       (una selección de 6 números entre el 1 y el 49).
%Parámetros de salida:
%  premios6, premios5, premios4: número de premios de 6, 5 y 4 aciertos
%     respectivamente
 
%se cuenta el número de aciertos en cada apuesta
[napuestas,~]=size(m);
totalpremios=zeros(1,6);
for x=1:napuestas
    aciertos=0;
    for y=1:6
        if (sum(v(y)==m(x,:))>0)
            aciertos=aciertos+1;
        end
    end
    if (aciertos>0)
       totalpremios(aciertos)=totalpremios(aciertos)+1;
    end
end
premios6=totalpremios(6);
premios5=totalpremios(5);
premios4=totalpremios(4);
Tipos de soluciones