Distribuição de ouro
Um grupo de piratas tem uma distribuição de moedas de ouro, que pode ser representada como uma lista:
[3, 9, 4, 5, 5]
# O pirata 1 tem 3 moedas de ouro, o pirata 2 tem 9 moedas de ouro, etc.A diferença entre a quantidade de ouro de cada pirata e a do pirata mais rico é representada assim:
[6, 0, 5, 4, 4]
# Como 6 = 9 - 3, 0 = 9 - 9, 4 = 9 - 5, etc.Os piratas têm um forte senso de justiça, e um pirata matará os outros se considerar que sua parte é pequena demais. Cada pirata tem um limiar de desigualdade exclusivo: a diferença máxima que ele está disposto a tolerar antes de matar seus companheiros.
Usando a distribuição de ouro acima:
[5, 0, 5, 5, 5]
# Piratas mortos, pois 5 < 6.
# 5 é a distribuição de desigualdade do pirata 1 e 6 é a diferença de ouro dele.
[7, 0, 5, 5, 5]
# O pirata 1 está satisfeito, pois 7 > 6.
# Todos os outros piratas também estão satisfeitos.Dada uma distribuição de moedas e uma lista de limiares de desigualdade, crie uma função que retorne True se algum pirata for morto, ou False caso contrário.
Exemplos
pirates_killed([3, 5, 8, 3, 4], [10, 4, 2, 5, 5]) ➞ False
pirates_killed([3, 5, 8, 3, 4], [10, 4, 2, 5, 1]) ➞ True
pirates_killed([3, 3, 10], [7, 7, 0]) ➞ False
pirates_killed([3, 3, 10], [6, 6, 0]) ➞ TrueObservações
- Um pirata mata se a diferença entre sua parte de ouro e a do pirata mais rico for estritamente maior que seu limiar de desigualdade.
- As listas de distribuição de ouro e de desigualdade estão ordenadas da mesma forma. (e.g. O pirata 1 está no índice 0 de ambas as listas; o pirata 2 está no índice 1 de ambas as listas, etc.).