[RUBY] Teilen Sie in beliebige Zahlen von der Breite und Länge von Nord, Süd, Ost und West

#Wie viele vertikale und horizontale Unterteilungen
DEVIDE_COUNT = 7 

#Medianwert des Arrays
cneter_index = (DEVIDE_COUNT / 2) + (DEVIDE_COUNT % 2)

#Ost, West, Süd und Nord
origin_n = 0
origin_s = 50
origin_w = 100
origin_e = 200

north_south_unit = (origin_s - origin_n).fdiv(DEVIDE_COUNT)
west_east_unit = (origin_e - origin_w).fdiv(DEVIDE_COUNT)

#Aufteilung von Nord nach Süd und von West nach Ost_Der Rang nimmt mit zunehmendem Abstand vom Zentrum zu
Mesh = Struct.new(:nl, :sl, :el, :wl, :distance_rank)
results = []
(1..DEVIDE_COUNT).each do |ns_count|
  (1..DEVIDE_COUNT).each do |ew_count|
    results << Mesh.new(
      origin_n + (north_south_unit * (ns_count -1)),
      origin_n + (north_south_unit * ns_count),
      origin_w + (west_east_unit * (ew_count -1)),
      origin_w + (west_east_unit * ew_count),
      (cneter_index  - ns_count).abs + (cneter_index - ew_count).abs
    )
  end
end

pp results.sort_by(&:distance_rank)

Recommended Posts

Teilen Sie in beliebige Zahlen von der Breite und Länge von Nord, Süd, Ost und West
Teilen Sie die Liste in beliebige Zahlen
ArrayList und die Rolle der Schnittstelle aus List
Java-Sprache aus der Sicht von Kotlin und C #