Skip to content

Instantly share code, notes, and snippets.

@angelsystem
Created September 6, 2017 23:56
Show Gist options
  • Save angelsystem/8bfd32c6ed2d7a3426332e656c9460e7 to your computer and use it in GitHub Desktop.
Save angelsystem/8bfd32c6ed2d7a3426332e656c9460e7 to your computer and use it in GitHub Desktop.
class Participante
attr_accessor :nombre, :edad, :dni, :cinturon, :partidaGanada, :partidaEmpatada, :partidaPerdida, :puntajeTotal
def initialize args
args.each do |k,v|
instance_variable_set("@#{k}", v) unless v.nil?
end
@puntajeTotal = puntaje_total
end
def puntaje_total
(partidaGanada * 3) + (partidaEmpatada * 2)
end
end
class Torneo
attr_accessor :aParticipantes
def initialize
@aParticipantes = []
end
def agregarParticipantes(*participantes)
participantes.each { |participante| @aParticipantes << participante }
end
def getChamp
sortParticipants.first
end
def tablePosition
puts "Nombre - Puntaje Final \n"
puts "======================"
sortParticipants.each do |participante|
puts "#{participante.nombre} - #{participante.puntajeTotal} \n"
end
end
def updatePartidasGanadas(dni, partidasGanadas)
participant = search_by(dni)
if participant
participant.partidaGanada = partidasGanadas
participant.puntajeTotal = participant.puntaje_total
end
end
def searchByDNI(dni)
result = search_by(dni)
if result.nil?
puts "No encontrado"
else
puts "Nombre: #{result.nombre} - DNI: #{result.dni} - Puntaje Total: #{result.puntajeTotal}"
end
end
private
def search_by(dni)
aParticipantes.detect { |participant| dni == participant.dni }
end
def sortParticipants
sortParticipants ||= aParticipantes.sort_by { |participante| participante.puntajeTotal }.reverse
end
end
participante1 = Participante.new(nombre: "Moises", edad: 29, dni: '49213134', cinturon: "Negro", partidaGanada: 9, partidaEmpatada: 1, partidaPerdida: 0)
participante2 = Participante.new(nombre: "Jhonatan", edad: 27, dni: '15749420', cinturon: "Verde", partidaGanada: 2, partidaEmpatada: 6, partidaPerdida: 2)
participante3 = Participante.new(nombre: "Juan", edad: 23, dni: '65874152', cinturon: "Negro", partidaGanada: 4, partidaEmpatada: 4, partidaPerdida: 2)
participante4 = Participante.new(nombre: "Angel", edad: 29, dni: '44364038', cinturon: "Negro", partidaGanada: 60, partidaEmpatada: 0, partidaPerdida: 0)
torneo = Torneo.new
torneo.agregarParticipantes(participante4, participante1, participante2, participante3)
puts "=== Tabla de Posiciones ==="
torneo.tablePosition
puts "\n=== The champ is ==="
champ = torneo.getChamp
puts "★★★★ #{champ.nombre} ★★★"
puts "\n=== Result to search by dni 44364038 ===\n"
torneo.searchByDNI('44364038')
puts "\n=== Update Partidas ganadas ===\n"
torneo.updatePartidasGanadas('44364038', 12)
torneo.searchByDNI('44364038')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment