1
2
3
4
5
6
7
8
9
10
Node = Struct.new(*%i[x y size used avail use])

nodes = ARGF
  .read
  .scan(%r|/dev/grid/node-x(\d+)-y(\d+)\s+(\d+)T\s+(\d+)T\s+(\d+)T\s*(\d+)%|)
  .map {|match| Node.new(*match.map(&:to_i)) }

p nodes.permutation(2).count {|a,b|
  a.used != 0 && a.used <= b.avail
}