Skip to content

Instantly share code, notes, and snippets.

@xaviuzz
Created January 4, 2011 17:33
Show Gist options
  • Save xaviuzz/765078 to your computer and use it in GitHub Desktop.
Save xaviuzz/765078 to your computer and use it in GitHub Desktop.
def score(dice)
compute_singles(dice) + compute_triples(dice)
end
def compute_singles(diceRoll)
result = 0
diceRoll.each do |roll|
result+= single_value(roll)
end
result
end
SINGLE_VALUES = { 1 => 100 , 5 => 50}
def single_value(roll)
return SINGLE_VALUES[roll] if SINGLE_VALUES.keys.include?(roll)
0
end
def compute_triples(diceRoll)
result = 0
asString = diceRoll.sort.to_s
for points in (1..6) do
ocurrences=diceRoll.count(points)
if ( ocurrences>=3 )
result += calculate_triple_score(points)
end
end
result
end
TRIPLE_FACTOR = 100
SPECIAL_TRIPLE_SCORES = {1=>1000}
def calculate_triple_score(points)
tripleScore = ( points * TRIPLE_FACTOR )
if SPECIAL_TRIPLE_SCORES.keys.include?(points)
tripleScore = SPECIAL_TRIPLE_SCORES[points]
end
tripleScore - score_of_triple_as_singles(points)
end
def score_of_triple_as_singles(points)
single_value(points) * 3
end
@jneira
Copy link

jneira commented Jan 5, 2011

una duda que me asalta ... si tengo 2 o mas triples este codigo me los calculara? Parece como que para los tres primeros si que lo calcula pero los otros restantes se quedaran como simples. Es la primera vez que veo ruby un poco a fondo e igual me pierdo algo ....

@jneira
Copy link

jneira commented Jan 5, 2011

he hecho un fork aunque no se porque me ha salido con unos cuantos ((())) de mas :-P
Sin embargo me inclino a dividir la tirada desde un principio entre dados con menos de tres y luego todos los trios (aunque sean repetidos p.e. [1 1 1 1 1 1] = 2000 y no 1300) y calcular cada uno por su lado, siguiendo lo que hariamos si nosotros hicieramos el calculo.

@jjballano
Copy link

El ejercicio dice que viene 5 número nada más si no recuerdo mal. Yo lo hice para más triples, pero si el enunciado no te lo marca es tontería hacer código de más

@jneira
Copy link

jneira commented Jan 6, 2011

pues si, aunque si se hace generico y con menos codigo al mismo tiempo ... ;-)

le he dado una vuelta y le he quitado unas cuantas lineas mas, haciendolo para n triples de paso

@jneira
Copy link

jneira commented Jan 7, 2011

clojure 1 - ruby 0 :-P https://gist.github.com/766918

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment