Skip to content

Instantly share code, notes, and snippets.

@mqu
Created March 28, 2013 20:15
Show Gist options
  • Save mqu/5266423 to your computer and use it in GitHub Desktop.
Save mqu/5266423 to your computer and use it in GitHub Desktop.
solution for codingame tutorial2 : http://www.codingame.com/cg/#!training
# http://www.codingame.com/ide/?target=clogin&s=1&id=719077d960bd6fa93faa2bf63cb0fff80ed64#!test:81047:true:%2523!list
=begin
Dans cet exercice, on vous demande d'écrire un programme capable d'analyser un relevé de températures pour trouver quelle température se rapproche le plus de zéro.
Exemple de températures. Ici, -1 est le plus proche de 0.
ENTRÉE :
Ligne 1 : le nombre N de températures à analyser
Ligne 2 : les N températures exprimées sous la forme de nombres entiers allant de -273 à 5526
SORTIE :
Affichez 0 (zéro) si aucune température n'est fournie.
Sinon, affichez la température la plus proche de 0 sachant que si deux entiers sont aussi proches de zéro, l'entier positif devra être considéré comme étant le plus proche de zéro (par exemple si les températures sont -5 et 5, affichez 5).
CONTRAINTES :
0 ≤ N < 10000
EXEMPLE :
Entrée
5
1 -2 -8 4 5
Sortie
1
Mémoire RAM disponible : 256Mo
Durée maximum d’exécution : 6 secondes
Le programme doit lire les entrées depuis l’entrée standard
Le programme doit écrire la réponse dans la sortie standard
Le programme doit fonctionner dans l’environnement de test fourni
=end
# read data from STDIN or from FILES passed as args
# and split as lines
lines=ARGF.read.split("\n")
count=lines[0].to_i
if count==0
puts 0
else
values=lines[1].split(' ').map{ |v| v=v.to_i}
abs=values.map{ |v| v=v.abs}
min=values[abs.each_with_index.min[1]]
puts values.select { |v| v.abs==min.abs }.max
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment