#!/usr/bin/env ruby
#
# in response to Stackoverflow question: http://stackoverflow.com/questions/36750308/add-xml-fields-with-savon/36758434
#
data = [{:diaria_media=>"103.58908136482939632545931759",
:diaria_media_uh=>"251,91982978723404255319148936",
:diaria_media_uh_sem_grat=>"101.54572898799313893653516295",
:quantidade_adulto=>"2557",
:quantidade_crianca1=>"33",
:quantidade_crianca2=>"154",
:room_night=>"1143",
:segmento_id=>"11",
:segmento_id2=>"11",
:segmento_mercado=>"AGÊNCIA DE VIAGENS",
:segmento_mercado2=>"AGÊNCIA DE VIAGENS",
:uh=>"470",
:valor=>"265434.890000",
:valor_periodo=>"118402.320000"},
{:diaria_media=>"307.46792079207920792079207921",
:diaria_media_uh=>"437,38394366197183098591549296",
:diaria_media_uh_sem_grat=>"304.45352941176470588235294118",
:quantidade_adulto=>"250",
:quantidade_crianca1=>"19",
:quantidade_crianca2=>"56",
:room_night=>"101",
:segmento_id=>"14",
:segmento_id2=>"14",
:segmento_mercado=>"BALCÃO",
:segmento_mercado2=>"BALCÃO",
:uh=>"71",
:valor=>"31054.260000",
:valor_periodo=>"31054.260000"},
{:diaria_media=>"313.000000",
:diaria_media_uh=>"939,000000",
:diaria_media_uh_sem_grat=>"234.750000",
:quantidade_adulto=>"27",
:quantidade_crianca1=>"0",
:quantidade_crianca2=>"0",
:room_night=>"9",
:segmento_id=>"17",
:segmento_id2=>"17",
:segmento_mercado=>"CONVÊNIO",
:segmento_mercado2=>"CONVÊNIO",
:uh=>"3",
:valor=>"2817.000000",
:valor_periodo=>"2817.000000"},
{:diaria_media=>"0.0",
:diaria_media_uh=>"0,0",
:diaria_media_uh_sem_grat=>"0.0",
:quantidade_adulto=>"10",
:quantidade_crianca1=>"0",
:quantidade_crianca2=>"1",
:room_night=>"7",
:segmento_id=>"16",
:segmento_id2=>"16",
:segmento_mercado=>"CORPORATIVO ",
:segmento_mercado2=>"CORPORATIVO ",
:uh=>"7",
:valor=>"2458.580000",
:valor_periodo=>"0.0"},
{:diaria_media=>"4.4630434782608695652173913043",
:diaria_media_uh=>"9,524226804123711340206185567",
:diaria_media_uh_sem_grat=>"4.2378440366972477064220183486",
:quantidade_adulto=>"998",
:quantidade_crianca1=>"7",
:quantidade_crianca2=>"10",
:room_night=>"414",
:segmento_id=>"15",
:segmento_id2=>"15",
:segmento_mercado=>"INSTITUIÇÃO RELIGIOSA",
:segmento_mercado2=>"INSTITUIÇÃO RELIGIOSA",
:uh=>"194",
:valor=>"117389.030000",
:valor_periodo=>"1847.700000"},
{:diaria_media=>"150.89382627422828427853553482",
:diaria_media_uh=>"505,27668269230769230769230769",
:diaria_media_uh_sem_grat=>"145.86752255378209576682859126",
:quantidade_adulto=>"2949",
:quantidade_crianca1=>"108",
:quantidade_crianca2=>"385",
:room_night=>"1393",
:segmento_id=>"19",
:segmento_id2=>"19",
:segmento_mercado=>"OPERADORA",
:segmento_mercado2=>"OPERADORA",
:uh=>"416",
:valor=>"242248.380000",
:valor_periodo=>"210195.100000"},
{:diaria_media=>"221.11425992779783393501805054",
:diaria_media_uh=>"495,94048582995951417004048583",
:diaria_media_uh_sem_grat=>"217.19379432624113475177304965",
:quantidade_adulto=>"1587",
:quantidade_crianca1=>"138",
:quantidade_crianca2=>"268",
:room_night=>"554",
:segmento_id=>"10",
:segmento_id2=>"10",
:segmento_mercado=>"PARTICULAR",
:segmento_mercado2=>"PARTICULAR",
:uh=>"247",
:valor=>"168551.180000",
:valor_periodo=>"122497.300000"},
{:diaria_media=>"36.919200",
:diaria_media_uh=>"70,998461538461538461538461538",
:diaria_media_uh_sem_grat=>"24.288947368421052631578947368",
:quantidade_adulto=>"63",
:quantidade_crianca1=>"2",
:quantidade_crianca2=>"0",
:room_night=>"25",
:segmento_id=>"12",
:segmento_id2=>"12",
:segmento_mercado=>"PROPRIETARIO",
:segmento_mercado2=>"PROPRIETARIO",
:uh=>"13",
:valor=>"922.980000",
:valor_periodo=>"922.980000"},
{:diaria_media=>"31.967530864197530864197530864",
:diaria_media_uh=>"117,69863636363636363636363636",
:diaria_media_uh_sem_grat=>"1.3578238070267435762978500262",
:quantidade_adulto=>"162",
:quantidade_crianca1=>"4",
:quantidade_crianca2=>"12",
:room_night=>"81",
:segmento_id=>"13",
:segmento_id2=>"13",
:segmento_mercado=>"PROPRIETARIO / AUTORIZADO",
:segmento_mercado2=>"PROPRIETARIO / AUTORIZADO",
:uh=>"22",
:valor=>"2609.370000",
:valor_periodo=>"2589.370000"},
{:diaria_media=>"0",
:diaria_media_uh=>"0",
:diaria_media_uh_sem_grat=>"0",
:quantidade_adulto=>"0",
:quantidade_crianca1=>"0",
:quantidade_crianca2=>"0",
:room_night=>"0",
:segmento_id=>"0",
:segmento_id2=>"0",
:segmento_mercado=>"CONTA AVULSA",
:segmento_mercado2=>nil,
:uh=>"0",
:valor=>"0.000000",
:valor_periodo=>"0.000000"}];
sum = 0
data.each do |e|
sum += e[:room_night].to_i
end
print "Enumerator approach: #{sum}\n"
print "Functional approach: ", data.map{|e| e[:room_night].to_i}.reduce(:+)
Comments