WJG (24/06/17) Given a list of integers which ones are closest to some target value?
#---------------
# determine which items from a list of integers are closest to a target value
#---------------
# Args:
# arrows
# target
# Returns:
# indices of values in the list which are closest to the target value
#
proc closest_hit { arrows target} {
set least $target
set res ""
for { set i 0 } { $i < [llength $arrows] } { incr i } {
set diff [expr abs($target - [lindex $arrows $i])]
if { $diff == $least } { lappend res $i }
if { $diff < $least} {
set least $diff
set res $i
}
}
return $res
}
puts >>>>[closest_hit "5 11 6 12 20 30 11" 10]