Les sismomètres de l'USGS viennent de détecter un séisme majeur! Les équipes d'intervention d'urgence ont besoin d'une estimation rapide du nombre de personnes touchées. Écrivez un programme pour calculer cette estimation.
Votre programme reçoit 2 entrées. Le premier concerne les détails du tremblement de terre lui-même. Le tremblement de terre a été modélisé comme un segment de ligne le long duquel la terre s'est rompue, ainsi que la distance critique de la faille à l'intérieur de laquelle des dommages pouvaient être attendus. La deuxième entrée est une liste de l'emplacement et de la population des villes de la région. Votre programme doit calculer le nombre de personnes vivant dans la zone affectée, c'est-à-dire la somme de la population de toutes les villes dans la distance critique du segment de faille.
Contribution
D'abord une ligne décrivant le tremblement de terre, contenant les coordonnées x, y des points de début et de fin du défaut, plus la distance critique. Le format est A_x A_y B_x B_y D
. Par exemple:
3.0 3.0 7.0 4.0 2.5
code le défaut s'étendant de (3.0,3.0) à (7.0,4.0) et une distance critique de 2,5.
Deuxièmement, une ligne par ville dans la zone, contenant les coordonnées x, y de la ville et de sa population. Par exemple:
1.0 1.0 2500
5.0 7.0 8000
3.0 4.0 7500
9.0 6.0 3000
4.0 2.0 1000
Production
Le nombre de personnes vivant dans la zone affectée. Pour l'exemple ci-dessus, seules les troisième et cinquième villes se trouvent dans la zone de danger, donc la sortie serait
8500
Le code le plus court gagne.
Exemple 2
0.0 0.0 10.0 0.0 5.0
5.0 4.0 10000
5.0 -4.0 1000
5.0 6.0 100
11.0 2.0 10
-4.0 4.0 1
génère
11010
8500.0
elle correcte pour l'exemple? Et pourrions-nous peut-être obtenir d'autres tests?Réponses:
Rubis,
171152155153 153Ceci est ma première soumission rubis et mon premier code-golf du tout. Mise en œuvre simple de la tâche. Veuillez me donner quelques conseils pour vous améliorer (il doit y avoir une façon plus courte de lire les flotteurs ...).
la source
map
eteval
, et en insérantt
. Et comme vous êtes déjà en train d'évaluer, vous pouvez utiliser des chaînes de format à la place de.to_f
, de sorte que le dernier bloc peut être raccourci enp eval$<.map{|l|"(x=%f-u;t=(x*a+b*y=%f-v)/(a**2+b**2);d*d<(x-t=t<0?0:t>1?1:t)**2+(y-t*b)**2?0:%d)"%l.split}*'+'
t
nouveau en sauve deux autres.undefined method > for nil:NilClass (NoMethodError)
Javascript (437)
Cela peut probablement être joué de manière significative, mais pas assez pour battre la solution Ruby.
Vous pouvez le voir en action ici .
la source
b-0
au lieu de(b*1)
1 caractère en supprimant le point-virgule de fin. Enfin, commencez parM=Math
et remplacez tous lesMath
s parM
, en sauvegardant 6 caractères. Utilisation de Prototype et.value
enregistre 2 caractères (la#
et une parenthèse).C # -
743715Non-golfé:
la source
quake.cs(1,254): error CS1525: Unexpected symbol ',', expecting 'from', 'group', 'join', 'let', 'orderby', 'select', or 'where'
). La version non golfée fonctionne très bien.c - 471 caractères
Il suppose que votre bibliothèque standard a
getline
.La méthode est un peu clarifiée dans le commentaire de la version non golfée:
la source
scala: 660 caractères:
non golfé:
la source