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

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