Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/ruby
- $bottom = { "solid" => 1.0, "grass/farm" => 0.9375, "soul/8snow/chest" => 0.875, "endframe/chorus" => 0.8125, "enchant/7snow/" => 0.75, "6snow/sideendrod" => 0.625,
- "bed" => 0.5625, "slab/5snow/cake" => 0.5, "boat" => 0.5625, "4snow/daysensor" => 0.375, "3snow" => 0.25, "trapdoor" => 0.1875, "2snow/repeater" => 0.125,
- "lillypad" => 0.09375, "carpet" => 0.0625, "minecart" => 0.7}
- $top = { "solid" => 1.0, "toptrapdoor" => 0.1875 }
- $heights = {}
- for blocks in 2..4
- $bottom.each do |bot,bv|
- $top.each do |top,tv|
- h = blocks
- h -= bv
- h -= tv
- if !$heights.include?(h)
- $heights[h] = []
- end
- name = bot
- if blocks > 2
- name += ",#{blocks-2}air"
- end
- name += ",#{top}"
- $heights[h] << name
- end
- end
- end
- $dens = [16, 32, 10]
- $heights.sort_by(&:first).each do |k,v|
- best_num = nil
- best_den = nil
- best_dif = 1.0/0.0
- $dens.each do |den|
- num = (k * den).round.to_i
- k2 = num.to_f / den.to_f
- dif = (k - k2).abs
- if (dif < best_dif)
- best_dif = dif
- best_den = den
- best_num = num
- end
- end
- str = sprintf("%7.5f = %3d/%2d = %d+%2d/%2d: ", k, best_num, best_den, best_num / best_den, best_num % best_den, best_den)
- len = str.length
- print(str)
- # printf("%7.5f:", k*32)
- first = true
- v.each do |i|
- print (" "*len) if !first
- puts " #{i}"
- first = false
- end
- puts
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement