sapor 0.3.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (343) hide show
  1. checksums.yaml +7 -0
  2. data/Area Class Diagram.dia +0 -0
  3. data/Area Class Diagram.png +0 -0
  4. data/Class Diagram.dia +0 -0
  5. data/Class Diagram.png +0 -0
  6. data/Example-Catalonia.md +361 -0
  7. data/Example-Flanders.md +486 -0
  8. data/Example-Greece.md +25 -0
  9. data/Example-Oslo.md +678 -0
  10. data/Example-UnitedKingdom-Referendum.md +132 -0
  11. data/Examples.md +15 -0
  12. data/LICENSE +674 -0
  13. data/README.md +103 -0
  14. data/Rakefile +18 -0
  15. data/Technical Documentation.md +14 -0
  16. data/bin/create_installation_package.sh +49 -0
  17. data/bin/install.sh +45 -0
  18. data/bin/sapor.rb +24 -0
  19. data/bin/sapor.sh +106 -0
  20. data/data/hu/hungary-2014.txt +1680 -0
  21. data/data/hu/hungary_2014_screen_scraper.rb +48 -0
  22. data/data/hu/hungary_2014_to_psv.rb +80 -0
  23. data/data/hu/index-2014.txt +106 -0
  24. data/data/ie/2016-04-28_general-election-2016-candidate-details-csv_en.csv +552 -0
  25. data/data/ie/ireland_2016_to_psv.rb +138 -0
  26. data/data/no/2020-01-01_partifordeling_1_st_2017.csv +335 -0
  27. data/data/no/norway_2017_to_psv.rb +61 -0
  28. data/data/pl/2015-gl-lis-okr.csv +42 -0
  29. data/data/pl/poland_2015_to_psv.rb +79 -0
  30. data/data/pl/poland_2015_to_psv_with_ko_and_rsw.rb +94 -0
  31. data/data/pl/poland_2015_to_psv_with_ko_konf_kp_l_and_zp.rb +100 -0
  32. data/data/pl/poland_2015_to_psv_with_ko_sld_and_wi.rb +92 -0
  33. data/data/pl/poland_2015_to_psv_with_sld.rb +84 -0
  34. data/data/pl/poland_2015_to_psv_with_sld_and_wi.rb +85 -0
  35. data/data/uk/inject_ukip_2015_as_brexit_2019_in_2017.rb +54 -0
  36. data/data/uk/united_kingdom_2015.txt +651 -0
  37. data/data/uk/united_kingdom_2015_to_psv.rb +104 -0
  38. data/data/uk/united_kingdom_2017.txt +651 -0
  39. data/data/uk/united_kingdom_2017_to_psv.rb +104 -0
  40. data/data/uk/united_kingdom_2017_to_psv_with_brexit_and_chuk.rb +113 -0
  41. data/data/uk/united_kingdom_2017_to_psv_with_tig.rb +111 -0
  42. data/lib/sapor.rb +147 -0
  43. data/lib/sapor/binomials_cache.rb +45 -0
  44. data/lib/sapor/combinations_distribution.rb +222 -0
  45. data/lib/sapor/denominators.rb +67 -0
  46. data/lib/sapor/dichotomies.rb +138 -0
  47. data/lib/sapor/dichotomy.rb +164 -0
  48. data/lib/sapor/first_past_the_post.rb +82 -0
  49. data/lib/sapor/largest_remainder.rb +118 -0
  50. data/lib/sapor/log4r_logger.rb +49 -0
  51. data/lib/sapor/log_facade.rb +40 -0
  52. data/lib/sapor/many_past_the_post.rb +113 -0
  53. data/lib/sapor/multi_district_leveled_proportional.rb +64 -0
  54. data/lib/sapor/multi_district_proportional.rb +123 -0
  55. data/lib/sapor/multi_district_variable_threshold_proportional.rb +128 -0
  56. data/lib/sapor/number_formatter.rb +45 -0
  57. data/lib/sapor/options.rb +73 -0
  58. data/lib/sapor/poll.rb +282 -0
  59. data/lib/sapor/polychotomy.rb +200 -0
  60. data/lib/sapor/pseudorandom_multirange_enumerator.rb +87 -0
  61. data/lib/sapor/referendum_polychotomy.rb +165 -0
  62. data/lib/sapor/regional_data/area.rb +100 -0
  63. data/lib/sapor/regional_data/austria.rb +84 -0
  64. data/lib/sapor/regional_data/belgium-brussels-2014.psv +46 -0
  65. data/lib/sapor/regional_data/belgium-brussels-20190526.psv +33 -0
  66. data/lib/sapor/regional_data/belgium-flanders-2014.psv +80 -0
  67. data/lib/sapor/regional_data/belgium-flanders-20190526.psv +74 -0
  68. data/lib/sapor/regional_data/belgium-wallonia-2014.psv +114 -0
  69. data/lib/sapor/regional_data/belgium-wallonia-20190526.psv +93 -0
  70. data/lib/sapor/regional_data/belgium.rb +97 -0
  71. data/lib/sapor/regional_data/belgium_brussels.rb +62 -0
  72. data/lib/sapor/regional_data/belgium_flanders.rb +64 -0
  73. data/lib/sapor/regional_data/belgium_wallonia.rb +63 -0
  74. data/lib/sapor/regional_data/catalonia-2012-2015.psv +100 -0
  75. data/lib/sapor/regional_data/catalonia-2012.psv +87 -0
  76. data/lib/sapor/regional_data/catalonia-2015-jxcat.psv +68 -0
  77. data/lib/sapor/regional_data/catalonia-2015-no-jxsi.psv +68 -0
  78. data/lib/sapor/regional_data/catalonia-2015.psv +63 -0
  79. data/lib/sapor/regional_data/catalonia-20171221-with-vox.psv +67 -0
  80. data/lib/sapor/regional_data/catalonia-20171221.psv +61 -0
  81. data/lib/sapor/regional_data/catalonia.rb +124 -0
  82. data/lib/sapor/regional_data/denmark-20150618-with-e-and-p.psv +164 -0
  83. data/lib/sapor/regional_data/denmark-20150618-with-e.psv +153 -0
  84. data/lib/sapor/regional_data/denmark-20150618-with-p.psv +153 -0
  85. data/lib/sapor/regional_data/denmark-20150618.psv +142 -0
  86. data/lib/sapor/regional_data/denmark.rb +128 -0
  87. data/lib/sapor/regional_data/denmark_with_e.rb +128 -0
  88. data/lib/sapor/regional_data/denmark_with_e_and_p.rb +128 -0
  89. data/lib/sapor/regional_data/denmark_with_p.rb +128 -0
  90. data/lib/sapor/regional_data/estonia.rb +88 -0
  91. data/lib/sapor/regional_data/european-union-great-britain-20140522-brexit-chuk.psv +172 -0
  92. data/lib/sapor/regional_data/european-union-great-britain-20140522.psv +146 -0
  93. data/lib/sapor/regional_data/european-union-great-britain-20190523.psv +141 -0
  94. data/lib/sapor/regional_data/european-union-ireland-2014-ia-ri-sd.psv +64 -0
  95. data/lib/sapor/regional_data/european-union-ireland-2014-ia-sd.psv +60 -0
  96. data/lib/sapor/regional_data/european-union-ireland-2014-ia.psv +56 -0
  97. data/lib/sapor/regional_data/european-union-ireland-2014-sd.psv +56 -0
  98. data/lib/sapor/regional_data/european-union-ireland-2014.psv +50 -0
  99. data/lib/sapor/regional_data/european-union-ireland-20190524-ia.psv +58 -0
  100. data/lib/sapor/regional_data/european-union-ireland-20190524.psv +52 -0
  101. data/lib/sapor/regional_data/european_union_27_austria.rb +76 -0
  102. data/lib/sapor/regional_data/european_union_27_croatia.rb +83 -0
  103. data/lib/sapor/regional_data/european_union_27_denmark.rb +77 -0
  104. data/lib/sapor/regional_data/european_union_27_estonia.rb +74 -0
  105. data/lib/sapor/regional_data/european_union_27_finland.rb +74 -0
  106. data/lib/sapor/regional_data/european_union_27_france.rb +84 -0
  107. data/lib/sapor/regional_data/european_union_27_ireland.rb +96 -0
  108. data/lib/sapor/regional_data/european_union_27_ireland_with_ia.rb +97 -0
  109. data/lib/sapor/regional_data/european_union_27_italy.rb +84 -0
  110. data/lib/sapor/regional_data/european_union_27_netherlands.rb +81 -0
  111. data/lib/sapor/regional_data/european_union_27_poland.rb +84 -0
  112. data/lib/sapor/regional_data/european_union_27_romania.rb +78 -0
  113. data/lib/sapor/regional_data/european_union_27_slovakia.rb +80 -0
  114. data/lib/sapor/regional_data/european_union_27_spain.rb +82 -0
  115. data/lib/sapor/regional_data/european_union_27_sweden.rb +76 -0
  116. data/lib/sapor/regional_data/european_union_austria.rb +76 -0
  117. data/lib/sapor/regional_data/european_union_bulgaria.rb +82 -0
  118. data/lib/sapor/regional_data/european_union_croatia.rb +83 -0
  119. data/lib/sapor/regional_data/european_union_cyprus.rb +72 -0
  120. data/lib/sapor/regional_data/european_union_czech_republic.rb +82 -0
  121. data/lib/sapor/regional_data/european_union_denmark.rb +77 -0
  122. data/lib/sapor/regional_data/european_union_estonia.rb +74 -0
  123. data/lib/sapor/regional_data/european_union_finland.rb +74 -0
  124. data/lib/sapor/regional_data/european_union_flanders.rb +74 -0
  125. data/lib/sapor/regional_data/european_union_france.rb +84 -0
  126. data/lib/sapor/regional_data/european_union_french_community_of_belgium.rb +73 -0
  127. data/lib/sapor/regional_data/european_union_germany.rb +86 -0
  128. data/lib/sapor/regional_data/european_union_great_britain.rb +98 -0
  129. data/lib/sapor/regional_data/european_union_greece.rb +77 -0
  130. data/lib/sapor/regional_data/european_union_hungary.rb +76 -0
  131. data/lib/sapor/regional_data/european_union_ireland.rb +96 -0
  132. data/lib/sapor/regional_data/european_union_ireland_with_ia.rb +97 -0
  133. data/lib/sapor/regional_data/european_union_italy.rb +84 -0
  134. data/lib/sapor/regional_data/european_union_latvia.rb +81 -0
  135. data/lib/sapor/regional_data/european_union_lithuania.rb +80 -0
  136. data/lib/sapor/regional_data/european_union_luxembourg.rb +75 -0
  137. data/lib/sapor/regional_data/european_union_malta.rb +71 -0
  138. data/lib/sapor/regional_data/european_union_netherlands.rb +81 -0
  139. data/lib/sapor/regional_data/european_union_northern_ireland.rb +75 -0
  140. data/lib/sapor/regional_data/european_union_poland.rb +84 -0
  141. data/lib/sapor/regional_data/european_union_portugal.rb +75 -0
  142. data/lib/sapor/regional_data/european_union_romania.rb +78 -0
  143. data/lib/sapor/regional_data/european_union_slovakia.rb +81 -0
  144. data/lib/sapor/regional_data/european_union_slovenia.rb +85 -0
  145. data/lib/sapor/regional_data/european_union_spain.rb +82 -0
  146. data/lib/sapor/regional_data/european_union_sweden.rb +76 -0
  147. data/lib/sapor/regional_data/finland-20150419-with-sin.psv +224 -0
  148. data/lib/sapor/regional_data/finland-20150419.psv +212 -0
  149. data/lib/sapor/regional_data/finland.rb +107 -0
  150. data/lib/sapor/regional_data/finland_with_sin.rb +107 -0
  151. data/lib/sapor/regional_data/flanders-2014.psv +96 -0
  152. data/lib/sapor/regional_data/flanders-20190526.psv +87 -0
  153. data/lib/sapor/regional_data/flanders.rb +115 -0
  154. data/lib/sapor/regional_data/france.rb +38 -0
  155. data/lib/sapor/regional_data/greece.rb +92 -0
  156. data/lib/sapor/regional_data/hungary-2014.psv +2104 -0
  157. data/lib/sapor/regional_data/hungary.rb +116 -0
  158. data/lib/sapor/regional_data/iceland-20161029-midflokkurinn.psv +94 -0
  159. data/lib/sapor/regional_data/iceland-20161029.psv +88 -0
  160. data/lib/sapor/regional_data/iceland-20171028-with-j.psv +94 -0
  161. data/lib/sapor/regional_data/iceland-20171028.psv +85 -0
  162. data/lib/sapor/regional_data/iceland.rb +149 -0
  163. data/lib/sapor/regional_data/ireland-20160226-2020-candidates.psv +322 -0
  164. data/lib/sapor/regional_data/ireland-20160226-2020.psv +344 -0
  165. data/lib/sapor/regional_data/ireland-20160226.psv +348 -0
  166. data/lib/sapor/regional_data/ireland.rb +165 -0
  167. data/lib/sapor/regional_data/latvia-20141004-kpv-p-par.psv +109 -0
  168. data/lib/sapor/regional_data/latvia-20141004-kpv-par.psv +103 -0
  169. data/lib/sapor/regional_data/latvia-20141004-kpv.psv +97 -0
  170. data/lib/sapor/regional_data/latvia-20141004.psv +89 -0
  171. data/lib/sapor/regional_data/latvia-20181006.psv +104 -0
  172. data/lib/sapor/regional_data/latvia.rb +111 -0
  173. data/lib/sapor/regional_data/luxembourg-20131020.psv +60 -0
  174. data/lib/sapor/regional_data/luxembourg-20181014.psv +59 -0
  175. data/lib/sapor/regional_data/luxembourg.rb +88 -0
  176. data/lib/sapor/regional_data/netherlands.rb +108 -0
  177. data/lib/sapor/regional_data/norway-20170911.psv +331 -0
  178. data/lib/sapor/regional_data/norway.rb +130 -0
  179. data/lib/sapor/regional_data/norwegian_municipality.rb +68 -0
  180. data/lib/sapor/regional_data/poland-20151025-with-ko-and-l-without-n-po-r-and-zl.psv +321 -0
  181. data/lib/sapor/regional_data/poland-20151025-with-ko-konf-kp-l-and-zp-without-k-k15-n-pis-po-psl-r-and-zl.psv +280 -0
  182. data/lib/sapor/regional_data/poland-20151025-with-ko-sld-and-wi-without-n-po-and-zl.psv +403 -0
  183. data/lib/sapor/regional_data/poland-20151025-with-sld-and-wi-without-zl.psv +444 -0
  184. data/lib/sapor/regional_data/poland-20151025-with-sld-without-zl.psv +403 -0
  185. data/lib/sapor/regional_data/poland-20151025.psv +403 -0
  186. data/lib/sapor/regional_data/poland.rb +125 -0
  187. data/lib/sapor/regional_data/poland_with_ko_and_l_without_n_po_r_and_zl.rb +122 -0
  188. data/lib/sapor/regional_data/poland_with_ko_konf_kp_l_and_zp_without_k_k15_n_pis_po_psl_r_and_zl.rb +123 -0
  189. data/lib/sapor/regional_data/poland_with_ko_sld_and_wi_without_n_po_and_zl.rb +125 -0
  190. data/lib/sapor/regional_data/poland_with_sld_and_wi_without_zl.rb +126 -0
  191. data/lib/sapor/regional_data/poland_with_sld_without_zl.rb +126 -0
  192. data/lib/sapor/regional_data/portugal-20151004-with-a-and-ch-without-paf.psv +438 -0
  193. data/lib/sapor/regional_data/portugal-20151004-with-a-and-il-without-paf.psv +438 -0
  194. data/lib/sapor/regional_data/portugal-20151004-with-a-ch-and-il-without-paf.psv +461 -0
  195. data/lib/sapor/regional_data/portugal-20151004-with-a-without-paf.psv +415 -0
  196. data/lib/sapor/regional_data/portugal-20151004-with-ch-and-il-without-paf.psv +438 -0
  197. data/lib/sapor/regional_data/portugal-20151004-without-paf.psv +392 -0
  198. data/lib/sapor/regional_data/portugal-20151004.psv +370 -0
  199. data/lib/sapor/regional_data/portugal.rb +101 -0
  200. data/lib/sapor/regional_data/portugal_with_a_and_ch_without_paf.rb +92 -0
  201. data/lib/sapor/regional_data/portugal_with_a_and_il_without_paf.rb +92 -0
  202. data/lib/sapor/regional_data/portugal_with_a_ch_and_il_without_paf.rb +92 -0
  203. data/lib/sapor/regional_data/portugal_with_a_without_paf.rb +92 -0
  204. data/lib/sapor/regional_data/portugal_with_ch_and_il_without_paf.rb +92 -0
  205. data/lib/sapor/regional_data/portugal_without_paf.rb +92 -0
  206. data/lib/sapor/regional_data/slovakia.rb +81 -0
  207. data/lib/sapor/regional_data/slovenia.rb +114 -0
  208. data/lib/sapor/regional_data/spain-20160626.psv +619 -0
  209. data/lib/sapor/regional_data/spain.rb +136 -0
  210. data/lib/sapor/regional_data/sweden.rb +92 -0
  211. data/lib/sapor/regional_data/sweden_20140914.rb +89 -0
  212. data/lib/sapor/regional_data/united_kingdom-2015.psv +4358 -0
  213. data/lib/sapor/regional_data/united_kingdom-20170608-brexit-chuk.psv +5154 -0
  214. data/lib/sapor/regional_data/united_kingdom-20170608-brexit.psv +4521 -0
  215. data/lib/sapor/regional_data/united_kingdom-20170608-tig.psv +4529 -0
  216. data/lib/sapor/regional_data/united_kingdom-20170608.psv +3894 -0
  217. data/lib/sapor/regional_data/united_kingdom.rb +94 -0
  218. data/lib/sapor/regional_data/united_kingdom_with_brexit.rb +110 -0
  219. data/lib/sapor/regional_data/united_kingdom_with_brexit_and_chuk.rb +111 -0
  220. data/lib/sapor/regional_data/united_kingdom_with_tig.rb +111 -0
  221. data/lib/sapor/regional_data/utopia.rb +66 -0
  222. data/lib/sapor/regional_data/wallonia-2014.psv +101 -0
  223. data/lib/sapor/regional_data/wallonia-20190526.psv +88 -0
  224. data/lib/sapor/regional_data/wallonia.rb +112 -0
  225. data/lib/sapor/representatives_polychotomy.rb +338 -0
  226. data/lib/sapor/single_district_proportional.rb +75 -0
  227. data/sapor.gemspec +35 -0
  228. data/spec/integration/area_spec.rb +28 -0
  229. data/spec/integration/poll_spec.rb +112 -0
  230. data/spec/integration/sample.poll +8 -0
  231. data/spec/spec_helper.rb +31 -0
  232. data/spec/unit/area_spec.rb +115 -0
  233. data/spec/unit/austria_spec.rb +76 -0
  234. data/spec/unit/belgium_brussels_spec.rb +58 -0
  235. data/spec/unit/belgium_flanders_spec.rb +62 -0
  236. data/spec/unit/belgium_spec.rb +26 -0
  237. data/spec/unit/belgium_wallonia_spec.rb +65 -0
  238. data/spec/unit/binomials_cache_spec.rb +34 -0
  239. data/spec/unit/catalonia_spec.rb +61 -0
  240. data/spec/unit/catalonia_with_vox_spec.rb +62 -0
  241. data/spec/unit/combinations_distribution_spec.rb +241 -0
  242. data/spec/unit/denmark_spec.rb +56 -0
  243. data/spec/unit/denmark_with_e_and_p_spec.rb +58 -0
  244. data/spec/unit/denmark_with_e_spec.rb +57 -0
  245. data/spec/unit/denmark_with_p_spec.rb +57 -0
  246. data/spec/unit/denominators_spec.rb +40 -0
  247. data/spec/unit/dichotomies_spec.rb +154 -0
  248. data/spec/unit/dichotomy_spec.rb +320 -0
  249. data/spec/unit/estonia_spec.rb +65 -0
  250. data/spec/unit/european_union_27_austria_spec.rb +61 -0
  251. data/spec/unit/european_union_27_croatia_spec.rb +60 -0
  252. data/spec/unit/european_union_27_denmark_spec.rb +62 -0
  253. data/spec/unit/european_union_27_estonia_spec.rb +94 -0
  254. data/spec/unit/european_union_27_finland_spec.rb +75 -0
  255. data/spec/unit/european_union_27_france_spec.rb +73 -0
  256. data/spec/unit/european_union_27_ireland_spec.rb +72 -0
  257. data/spec/unit/european_union_27_ireland_with_ia_spec.rb +74 -0
  258. data/spec/unit/european_union_27_italy_spec.rb +69 -0
  259. data/spec/unit/european_union_27_netherlands_spec.rb +81 -0
  260. data/spec/unit/european_union_27_poland_spec.rb +69 -0
  261. data/spec/unit/european_union_27_romania_spec.rb +67 -0
  262. data/spec/unit/european_union_27_slovakia_spec.rb +111 -0
  263. data/spec/unit/european_union_27_spain_spec.rb +130 -0
  264. data/spec/unit/european_union_27_sweden_spec.rb +89 -0
  265. data/spec/unit/european_union_austria_spec.rb +61 -0
  266. data/spec/unit/european_union_bulgaria_spec.rb +97 -0
  267. data/spec/unit/european_union_croatia_spec.rb +59 -0
  268. data/spec/unit/european_union_cyprus_spec.rb +65 -0
  269. data/spec/unit/european_union_czech_republic_spec.rb +125 -0
  270. data/spec/unit/european_union_denmark_spec.rb +61 -0
  271. data/spec/unit/european_union_estonia_spec.rb +93 -0
  272. data/spec/unit/european_union_finland_spec.rb +75 -0
  273. data/spec/unit/european_union_flanders_spec.rb +56 -0
  274. data/spec/unit/european_union_france_spec.rb +73 -0
  275. data/spec/unit/european_union_french_community_of_belgium_spec.rb +61 -0
  276. data/spec/unit/european_union_germany_spec.rb +90 -0
  277. data/spec/unit/european_union_great_britain_spec.rb +87 -0
  278. data/spec/unit/european_union_greece_spec.rb +148 -0
  279. data/spec/unit/european_union_hungary_spec.rb +57 -0
  280. data/spec/unit/european_union_ireland_spec.rb +72 -0
  281. data/spec/unit/european_union_ireland_with_ia_spec.rb +74 -0
  282. data/spec/unit/european_union_italy_spec.rb +69 -0
  283. data/spec/unit/european_union_latvia_spec.rb +76 -0
  284. data/spec/unit/european_union_lithuania_spec.rb +68 -0
  285. data/spec/unit/european_union_luxembourg_spec.rb +63 -0
  286. data/spec/unit/european_union_malta_spec.rb +60 -0
  287. data/spec/unit/european_union_netherlands_spec.rb +81 -0
  288. data/spec/unit/european_union_northern_ireland_spec.rb +66 -0
  289. data/spec/unit/european_union_poland_spec.rb +69 -0
  290. data/spec/unit/european_union_portugal_spec.rb +77 -0
  291. data/spec/unit/european_union_romania_spec.rb +67 -0
  292. data/spec/unit/european_union_slovakia_spec.rb +111 -0
  293. data/spec/unit/european_union_slovenia_spec.rb +77 -0
  294. data/spec/unit/european_union_spain_spec.rb +129 -0
  295. data/spec/unit/european_union_sweden_spec.rb +89 -0
  296. data/spec/unit/finland_spec.rb +65 -0
  297. data/spec/unit/finland_with_sin_spec.rb +67 -0
  298. data/spec/unit/first_past_the_post_spec.rb +54 -0
  299. data/spec/unit/flanders_spec.rb +70 -0
  300. data/spec/unit/france_spec.rb +32 -0
  301. data/spec/unit/greece_spec.rb +118 -0
  302. data/spec/unit/hungary_spec.rb +132 -0
  303. data/spec/unit/iceland_spec.rb +57 -0
  304. data/spec/unit/iceland_with_j_spec.rb +58 -0
  305. data/spec/unit/ireland_2016_spec.rb +62 -0
  306. data/spec/unit/ireland_spec.rb +62 -0
  307. data/spec/unit/largest_remainder_spec.rb +79 -0
  308. data/spec/unit/latvia_spec.rb +62 -0
  309. data/spec/unit/luxembourg_spec.rb +55 -0
  310. data/spec/unit/multi_district_leveled_proportional_spec.rb +49 -0
  311. data/spec/unit/multi_district_proportional_spec.rb +81 -0
  312. data/spec/unit/netherlands_spec.rb +107 -0
  313. data/spec/unit/norway_spec.rb +69 -0
  314. data/spec/unit/norwegian_municipality_spec.rb +89 -0
  315. data/spec/unit/number_formatter_spec.rb +173 -0
  316. data/spec/unit/poland_spec.rb +62 -0
  317. data/spec/unit/poland_with_ko_and_l_without_n_po_r_and_zl_spec.rb +60 -0
  318. data/spec/unit/poland_with_ko_konf_kp_l_and_zp_without_k_k15_n_pis_po_psl_r_and_zl_spec.rb +59 -0
  319. data/spec/unit/poland_with_ko_sld_and_wi_without_n_po_and_zl_spec.rb +62 -0
  320. data/spec/unit/poland_with_sld_and_wi_without_zl_spec.rb +63 -0
  321. data/spec/unit/poland_with_sld_without_zl_spec.rb +62 -0
  322. data/spec/unit/poll_spec.rb +110 -0
  323. data/spec/unit/portugal_spec.rb +66 -0
  324. data/spec/unit/portugal_with_a_and_ch_without_paf_spec.rb +68 -0
  325. data/spec/unit/portugal_with_a_and_il_without_paf_spec.rb +68 -0
  326. data/spec/unit/portugal_with_a_ch_and_il_without_paf_spec.rb +69 -0
  327. data/spec/unit/portugal_with_a_without_paf_spec.rb +67 -0
  328. data/spec/unit/portugal_with_ch_and_il_without_paf_spec.rb +68 -0
  329. data/spec/unit/portugal_without_paf_spec.rb +66 -0
  330. data/spec/unit/pseudorandom_multirange_enumerator_spec.rb +82 -0
  331. data/spec/unit/referendum_polychotomy_spec.rb +289 -0
  332. data/spec/unit/representatives_polychotomy_spec.rb +332 -0
  333. data/spec/unit/slovakia_spec.rb +99 -0
  334. data/spec/unit/slovenia_spec.rb +80 -0
  335. data/spec/unit/spain_spec.rb +101 -0
  336. data/spec/unit/sweden_20140914_spec.rb +112 -0
  337. data/spec/unit/sweden_spec.rb +113 -0
  338. data/spec/unit/united_kingdom_spec.rb +65 -0
  339. data/spec/unit/united_kingdom_with_brexit_and_chuk_spec.rb +67 -0
  340. data/spec/unit/united_kingdom_with_brexit_spec.rb +66 -0
  341. data/spec/unit/united_kingdom_with_tig_spec.rb +66 -0
  342. data/spec/unit/wallonia_spec.rb +70 -0
  343. metadata +502 -0
@@ -0,0 +1,108 @@
1
+ #
2
+ # Statistical Analysis of Polling Results (SAPoR)
3
+ # Copyright (C) 2020 Filip van Laenen <f.a.vanlaenen@ieee.org>
4
+ #
5
+ # This file is part of SAPoR.
6
+ #
7
+ # SAPoR is free software: you can redistribute it and/or modify it under the
8
+ # terms of the GNU General Public License as published by the Free Software
9
+ # Foundation, either version 3 of the License, or (at your option) any later
10
+ # version.
11
+ #
12
+ # SAPoR is distributed in the hope that it will be useful, but WITHOUT ANY
13
+ # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
14
+ # A PARTICULAR PURPOSE. See the GNU General Public License for more details.
15
+ #
16
+ # You can find a copy of the GNU General Public License in /doc/gpl.txt
17
+ #
18
+
19
+ module Sapor
20
+ #
21
+ # The regional data for Netherlands.
22
+ #
23
+ class Netherlands < Area
24
+ include Singleton
25
+
26
+ def area_code
27
+ 'NL'
28
+ end
29
+
30
+ def coalitions
31
+ COALITIONS
32
+ end
33
+
34
+ def no_of_seats
35
+ NO_OF_SEATS
36
+ end
37
+
38
+ def population_size
39
+ POPULATION_SIZE
40
+ end
41
+
42
+ def seats(simulation)
43
+ electoral_system.project(simulation)
44
+ end
45
+
46
+ def threshold
47
+ THRESHOLD
48
+ end
49
+
50
+ private
51
+
52
+ CDA_PARTY = 'Christen-Democratisch Appèl'.freeze
53
+ CU_PARTY = 'ChristenUnie'.freeze
54
+ D66_PARTY = 'Democraten 66'.freeze
55
+ FIFTY_PARTY = '50Plus'.freeze
56
+ FVD_PARTY = 'Forum voor Democratie'.freeze
57
+ GL_PARTY = 'GroenLinks'.freeze
58
+ PVDA_PARTY = 'Partij van de Arbeid'.freeze
59
+ PVV_PARTY = 'Partij voor de Vrijheid'.freeze
60
+ SGP_PARTY = 'Staatkundig Gereformeerde Partij'.freeze
61
+ SP_PARTY = 'Socialistische Partij'.freeze
62
+ VVD_PARTY = 'Volkspartij voor Vrijheid en Democratie'.freeze
63
+
64
+ COALITIONS = [[CDA_PARTY, CU_PARTY, D66_PARTY, GL_PARTY, PVDA_PARTY],
65
+ [CDA_PARTY, CU_PARTY, D66_PARTY, GL_PARTY, PVDA_PARTY,
66
+ SP_PARTY],
67
+ [CDA_PARTY, CU_PARTY, D66_PARTY, GL_PARTY, VVD_PARTY],
68
+ [CDA_PARTY, CU_PARTY, D66_PARTY, PVDA_PARTY, VVD_PARTY],
69
+ [CDA_PARTY, CU_PARTY, D66_PARTY, VVD_PARTY],
70
+ [CDA_PARTY, CU_PARTY, PVDA_PARTY],
71
+ [CDA_PARTY, D66_PARTY],
72
+ [CDA_PARTY, D66_PARTY, PVDA_PARTY],
73
+ [CDA_PARTY, D66_PARTY, VVD_PARTY],
74
+ [CDA_PARTY, FIFTY_PARTY, FVD_PARTY, VVD_PARTY],
75
+ [CDA_PARTY, FIFTY_PARTY, FVD_PARTY, VVD_PARTY, SGP_PARTY],
76
+ [CDA_PARTY, FVD_PARTY, PVV_PARTY, SGP_PARTY, VVD_PARTY],
77
+ [CDA_PARTY, FVD_PARTY, PVV_PARTY, VVD_PARTY],
78
+ [CDA_PARTY, FVD_PARTY, SGP_PARTY, VVD_PARTY],
79
+ [CDA_PARTY, FVD_PARTY, VVD_PARTY],
80
+ [CDA_PARTY, PVDA_PARTY],
81
+ [CDA_PARTY, PVDA_PARTY, VVD_PARTY],
82
+ [CDA_PARTY, PVV_PARTY, VVD_PARTY],
83
+ [CDA_PARTY, VVD_PARTY],
84
+ [D66_PARTY, PVDA_PARTY, VVD_PARTY],
85
+ [PVDA_PARTY, VVD_PARTY]].freeze
86
+
87
+ NO_OF_SEATS = 150
88
+
89
+ # Voter turnout on 21 March 2017
90
+ # Source: Web page with the official results of the elections of 21 March
91
+ # 2017, downloaded on 10 August 2019,
92
+ # https://nl.wikipedia.org/wiki/Tweede_Kamerverkiezingen_2017
93
+ POPULATION_SIZE = 10_516_041
94
+
95
+ THRESHOLD = 1 / NO_OF_SEATS.to_f
96
+
97
+ def electoral_system
98
+ if @electoral_system.nil?
99
+ @electoral_system = SingleDistrictProportional.new(
100
+ NO_OF_SEATS,
101
+ DhondtDenominators,
102
+ THRESHOLD
103
+ )
104
+ end
105
+ @electoral_system
106
+ end
107
+ end
108
+ end
@@ -0,0 +1,331 @@
1
+ # Statistical Analysis of Polling Results (SAPoR)
2
+ # Copyright (C) 2020 Filip van Laenen <f.a.vanlaenen@ieee.org>
3
+ #
4
+ # This file is part of SAPoR.
5
+ #
6
+ # SAPoR is free software: you can redistribute it and/or modify it under the
7
+ # terms of the GNU General Public License as published by the Free Software
8
+ # Foundation, either version 3 of the License, or (at your option) any later
9
+ # version.
10
+ #
11
+ # SAPoR is distributed in the hope that it will be useful, but WITHOUT ANY
12
+ # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
13
+ # A PARTICULAR PURPOSE. See the GNU General Public License for more details.
14
+ #
15
+ # You can find a copy of the GNU General Public License in /doc/gpl.txt
16
+ #
17
+ Østfold | Arbeiderpartiet | 51545
18
+ Østfold | Sosialistisk Venstreparti | 7036
19
+ Østfold | Rødt | 3435
20
+ Østfold | Senterpartiet | 13943
21
+ Østfold | Kristelig Folkeparti | 6811
22
+ Østfold | Miljøpartiet De Grønne | 4192
23
+ Østfold | Venstre | 3878
24
+ Østfold | Høyre | 38264
25
+ Østfold | Fremskrittspartiet | 28181
26
+ Østfold | Alliansen | 211
27
+ Østfold | Demokratene i Norge | 190
28
+ Østfold | Helsepartiet | 806
29
+ Østfold | Partiet De Kristne | 518
30
+ Østfold | Kystpartiet | 98
31
+ Østfold | Liberalistene | 353
32
+ Østfold | Pensjonistpartiet | 1359
33
+ Akershus | Arbeiderpartiet | 88689
34
+ Akershus | Sosialistisk Venstreparti | 17859
35
+ Akershus | Rødt | 6542
36
+ Akershus | Senterpartiet | 20219
37
+ Akershus | Kristelig Folkeparti | 7839
38
+ Akershus | Miljøpartiet De Grønne | 12459
39
+ Akershus | Venstre | 21853
40
+ Akershus | Høyre | 104451
41
+ Akershus | Fremskrittspartiet | 50741
42
+ Akershus | Alliansen | 383
43
+ Akershus | Demokratene i Norge | 268
44
+ Akershus | Helsepartiet | 2052
45
+ Akershus | Partiet De Kristne | 420
46
+ Akershus | Kystpartiet | 136
47
+ Akershus | Liberalistene | 598
48
+ Akershus | Piratpartiet | 565
49
+ Akershus | Pensjonistpartiet | 1954
50
+ Oslo | Arbeiderpartiet | 104089
51
+ Oslo | Sosialistisk Venstreparti | 34052
52
+ Oslo | Rødt | 23083
53
+ Oslo | Senterpartiet | 7778
54
+ Oslo | Kristelig Folkeparti | 7843
55
+ Oslo | Miljøpartiet De Grønne | 21853
56
+ Oslo | Venstre | 30933
57
+ Oslo | Høyre | 97085
58
+ Oslo | Fremskrittspartiet | 35037
59
+ Oslo | Alliansen | 314
60
+ Oslo | Demokratene i Norge | 326
61
+ Oslo | Helsepartiet | 1184
62
+ Oslo | Partiet De Kristne | 343
63
+ Oslo | Liberalistene | 667
64
+ Oslo | Norges Kommunistiske Parti | 119
65
+ Oslo | Piratpartiet | 630
66
+ Oslo | Pensjonistpartiet | 1335
67
+ Oslo | Samfunnspartiet | 104
68
+ Oslo | Feministisk Initiativ | 326
69
+ Hedmark | Arbeiderpartiet | 40561
70
+ Hedmark | Sosialistisk Venstreparti | 6528
71
+ Hedmark | Rødt | 1443
72
+ Hedmark | Senterpartiet | 25296
73
+ Hedmark | Kristelig Folkeparti | 2051
74
+ Hedmark | Miljøpartiet De Grønne | 2215
75
+ Hedmark | Venstre | 2659
76
+ Hedmark | Høyre | 17454
77
+ Hedmark | Fremskrittspartiet | 13376
78
+ Hedmark | Alliansen | 120
79
+ Hedmark | Demokratene i Norge | 192
80
+ Hedmark | Helsepartiet | 356
81
+ Hedmark | Partiet De Kristne | 165
82
+ Hedmark | Kystpartiet | 45
83
+ Hedmark | Liberalistene | 165
84
+ Hedmark | Pensjonistpartiet | 1303
85
+ Hedmark | Norgespartiet | 151
86
+ Oppland | Arbeiderpartiet | 38056
87
+ Oppland | Sosialistisk Venstreparti | 5028
88
+ Oppland | Rødt | 1823
89
+ Oppland | Senterpartiet | 22990
90
+ Oppland | Kristelig Folkeparti | 2281
91
+ Oppland | Miljøpartiet De Grønne | 2550
92
+ Oppland | Venstre | 2776
93
+ Oppland | Høyre | 18163
94
+ Oppland | Fremskrittspartiet | 13285
95
+ Oppland | Alliansen | 138
96
+ Oppland | Demokratene i Norge | 132
97
+ Oppland | Helsepartiet | 455
98
+ Oppland | Partiet De Kristne | 184
99
+ Oppland | Kystpartiet | 40
100
+ Oppland | Liberalistene | 146
101
+ Oppland | Pensjonistpartiet | 453
102
+ Buskerud | Arbeiderpartiet | 43143
103
+ Buskerud | Sosialistisk Venstreparti | 7642
104
+ Buskerud | Rødt | 2260
105
+ Buskerud | Senterpartiet | 16446
106
+ Buskerud | Kristelig Folkeparti | 3995
107
+ Buskerud | Miljøpartiet De Grønne | 4112
108
+ Buskerud | Venstre | 5604
109
+ Buskerud | Høyre | 41011
110
+ Buskerud | Fremskrittspartiet | 26419
111
+ Buskerud | Alliansen | 221
112
+ Buskerud | Demokratene i Norge | 201
113
+ Buskerud | Helsepartiet | 855
114
+ Buskerud | Partiet De Kristne | 275
115
+ Buskerud | Kystpartiet | 91
116
+ Buskerud | Liberalistene | 318
117
+ Vestfold | Arbeiderpartiet | 39118
118
+ Vestfold | Sosialistisk Venstreparti | 6927
119
+ Vestfold | Rødt | 2602
120
+ Vestfold | Senterpartiet | 8777
121
+ Vestfold | Kristelig Folkeparti | 5159
122
+ Vestfold | Miljøpartiet De Grønne | 4107
123
+ Vestfold | Venstre | 5373
124
+ Vestfold | Høyre | 42179
125
+ Vestfold | Fremskrittspartiet | 23628
126
+ Vestfold | Alliansen | 186
127
+ Vestfold | Demokratene i Norge | 160
128
+ Vestfold | Helsepartiet | 672
129
+ Vestfold | Partiet De Kristne | 403
130
+ Vestfold | Kystpartiet | 111
131
+ Vestfold | Liberalistene | 309
132
+ Vestfold | Piratpartiet | 217
133
+ Telemark | Arbeiderpartiet | 30931
134
+ Telemark | Sosialistisk Venstreparti | 4800
135
+ Telemark | Rødt | 2041
136
+ Telemark | Senterpartiet | 12457
137
+ Telemark | Kristelig Folkeparti | 4825
138
+ Telemark | Miljøpartiet De Grønne | 2392
139
+ Telemark | Venstre | 2591
140
+ Telemark | Høyre | 19445
141
+ Telemark | Fremskrittspartiet | 16013
142
+ Telemark | Alliansen | 138
143
+ Telemark | Demokratene i Norge | 129
144
+ Telemark | Helsepartiet | 354
145
+ Telemark | Partiet De Kristne | 537
146
+ Telemark | Kystpartiet | 81
147
+ Telemark | Liberalistene | 133
148
+ Aust-Agder | Arbeiderpartiet | 16481
149
+ Aust-Agder | Sosialistisk Venstreparti | 2562
150
+ Aust-Agder | Rødt | 807
151
+ Aust-Agder | Senterpartiet | 5385
152
+ Aust-Agder | Kristelig Folkeparti | 6352
153
+ Aust-Agder | Miljøpartiet De Grønne | 1676
154
+ Aust-Agder | Venstre | 2121
155
+ Aust-Agder | Høyre | 16614
156
+ Aust-Agder | Fremskrittspartiet | 11195
157
+ Aust-Agder | Alliansen | 61
158
+ Aust-Agder | Demokratene i Norge | 102
159
+ Aust-Agder | Helsepartiet | 249
160
+ Aust-Agder | Partiet De Kristne | 470
161
+ Aust-Agder | Kystpartiet | 24
162
+ Aust-Agder | Liberalistene | 122
163
+ Aust-Agder | Piratpartiet | 102
164
+ Aust-Agder | Pensjonistpartiet | 453
165
+ Vest-Agder | Arbeiderpartiet | 21238
166
+ Vest-Agder | Sosialistisk Venstreparti | 4333
167
+ Vest-Agder | Rødt | 1376
168
+ Vest-Agder | Senterpartiet | 6542
169
+ Vest-Agder | Kristelig Folkeparti | 12747
170
+ Vest-Agder | Miljøpartiet De Grønne | 2911
171
+ Vest-Agder | Venstre | 3654
172
+ Vest-Agder | Høyre | 28146
173
+ Vest-Agder | Fremskrittspartiet | 17284
174
+ Vest-Agder | Alliansen | 99
175
+ Vest-Agder | Demokratene i Norge | 748
176
+ Vest-Agder | Helsepartiet | 226
177
+ Vest-Agder | Partiet De Kristne | 793
178
+ Vest-Agder | Kystpartiet | 66
179
+ Vest-Agder | Liberalistene | 211
180
+ Vest-Agder | Piratpartiet | 153
181
+ Vest-Agder | Pensjonistpartiet | 428
182
+ Rogaland | Arbeiderpartiet | 56340
183
+ Rogaland | Sosialistisk Venstreparti | 9895
184
+ Rogaland | Rødt | 2895
185
+ Rogaland | Senterpartiet | 18897
186
+ Rogaland | Kristelig Folkeparti | 21092
187
+ Rogaland | Miljøpartiet De Grønne | 6444
188
+ Rogaland | Venstre | 8851
189
+ Rogaland | Høyre | 72201
190
+ Rogaland | Fremskrittspartiet | 49451
191
+ Rogaland | Alliansen | 231
192
+ Rogaland | Demokratene i Norge | 240
193
+ Rogaland | Helsepartiet | 530
194
+ Rogaland | Partiet De Kristne | 1256
195
+ Rogaland | Kystpartiet | 248
196
+ Rogaland | Liberalistene | 644
197
+ Rogaland | Norges Kommunistiske Parti | 75
198
+ Rogaland | Piratpartiet | 444
199
+ Rogaland | Pensjonistpartiet | 1226
200
+ Rogaland | Verdipartiet | 148
201
+ Hordaland | Arbeiderpartiet | 68195
202
+ Hordaland | Sosialistisk Venstreparti | 20958
203
+ Hordaland | Rødt | 6402
204
+ Hordaland | Senterpartiet | 22594
205
+ Hordaland | Kristelig Folkeparti | 16513
206
+ Hordaland | Miljøpartiet De Grønne | 10476
207
+ Hordaland | Venstre | 13027
208
+ Hordaland | Høyre | 90733
209
+ Hordaland | Fremskrittspartiet | 45060
210
+ Hordaland | Alliansen | 309
211
+ Hordaland | Demokratene i Norge | 328
212
+ Hordaland | Helsepartiet | 745
213
+ Hordaland | Partiet De Kristne | 1357
214
+ Hordaland | Kystpartiet | 443
215
+ Hordaland | Liberalistene | 601
216
+ Hordaland | Piratpartiet | 486
217
+ Hordaland | Feministisk Initiativ | 370
218
+ Sogn og Fjordane | Arbeiderpartiet | 15258
219
+ Sogn og Fjordane | Sosialistisk Venstreparti | 2781
220
+ Sogn og Fjordane | Rødt | 790
221
+ Sogn og Fjordane | Senterpartiet | 18446
222
+ Sogn og Fjordane | Kristelig Folkeparti | 2683
223
+ Sogn og Fjordane | Miljøpartiet De Grønne | 1410
224
+ Sogn og Fjordane | Venstre | 2532
225
+ Sogn og Fjordane | Høyre | 11572
226
+ Sogn og Fjordane | Fremskrittspartiet | 6153
227
+ Sogn og Fjordane | Alliansen | 43
228
+ Sogn og Fjordane | Demokratene i Norge | 43
229
+ Sogn og Fjordane | Helsepartiet | 110
230
+ Sogn og Fjordane | Partiet De Kristne | 255
231
+ Sogn og Fjordane | Liberalistene | 56
232
+ Møre og Romsdal | Arbeiderpartiet | 31353
233
+ Møre og Romsdal | Sosialistisk Venstreparti | 5745
234
+ Møre og Romsdal | Rødt | 1809
235
+ Møre og Romsdal | Senterpartiet | 19046
236
+ Møre og Romsdal | Kristelig Folkeparti | 9017
237
+ Møre og Romsdal | Miljøpartiet De Grønne | 3167
238
+ Møre og Romsdal | Venstre | 5088
239
+ Møre og Romsdal | Høyre | 34708
240
+ Møre og Romsdal | Fremskrittspartiet | 32750
241
+ Møre og Romsdal | Alliansen | 181
242
+ Møre og Romsdal | Demokratene i Norge | 129
243
+ Møre og Romsdal | Partiet De Kristne | 741
244
+ Møre og Romsdal | Kystpartiet | 121
245
+ Møre og Romsdal | Liberalistene | 175
246
+ Møre og Romsdal | Pensjonistpartiet | 798
247
+ Møre og Romsdal | Nordmørslista | 2135
248
+ Sør-Trøndelag | Arbeiderpartiet | 59610
249
+ Sør-Trøndelag | Sosialistisk Venstreparti | 14008
250
+ Sør-Trøndelag | Rødt | 5344
251
+ Sør-Trøndelag | Senterpartiet | 19409
252
+ Sør-Trøndelag | Kristelig Folkeparti | 4974
253
+ Sør-Trøndelag | Miljøpartiet De Grønne | 7082
254
+ Sør-Trøndelag | Venstre | 7385
255
+ Sør-Trøndelag | Høyre | 37719
256
+ Sør-Trøndelag | Fremskrittspartiet | 21248
257
+ Sør-Trøndelag | Alliansen | 264
258
+ Sør-Trøndelag | Demokratene i Norge | 168
259
+ Sør-Trøndelag | Helsepartiet | 405
260
+ Sør-Trøndelag | Partiet De Kristne | 225
261
+ Sør-Trøndelag | Kystpartiet | 143
262
+ Sør-Trøndelag | Liberalistene | 368
263
+ Sør-Trøndelag | Piratpartiet | 361
264
+ Sør-Trøndelag | Pensjonistpartiet | 3083
265
+ Nord-Trøndelag | Arbeiderpartiet | 26822
266
+ Nord-Trøndelag | Sosialistisk Venstreparti | 3951
267
+ Nord-Trøndelag | Rødt | 1282
268
+ Nord-Trøndelag | Senterpartiet | 19155
269
+ Nord-Trøndelag | Kristelig Folkeparti | 2115
270
+ Nord-Trøndelag | Miljøpartiet De Grønne | 1386
271
+ Nord-Trøndelag | Venstre | 1758
272
+ Nord-Trøndelag | Høyre | 11568
273
+ Nord-Trøndelag | Fremskrittspartiet | 9014
274
+ Nord-Trøndelag | Alliansen | 91
275
+ Nord-Trøndelag | Demokratene i Norge | 98
276
+ Nord-Trøndelag | Helsepartiet | 295
277
+ Nord-Trøndelag | Partiet De Kristne | 169
278
+ Nord-Trøndelag | Kystpartiet | 61
279
+ Nord-Trøndelag | Liberalistene | 78
280
+ Nord-Trøndelag | Piratpartiet | 112
281
+ Nord-Trøndelag | Pensjonistpartiet | 463
282
+ Nordland | Arbeiderpartiet | 35196
283
+ Nordland | Sosialistisk Venstreparti | 9467
284
+ Nordland | Rødt | 3905
285
+ Nordland | Senterpartiet | 25207
286
+ Nordland | Kristelig Folkeparti | 3284
287
+ Nordland | Miljøpartiet De Grønne | 2932
288
+ Nordland | Venstre | 3509
289
+ Nordland | Høyre | 27273
290
+ Nordland | Fremskrittspartiet | 22248
291
+ Nordland | Alliansen | 127
292
+ Nordland | Demokratene i Norge | 186
293
+ Nordland | Helsepartiet | 615
294
+ Nordland | Partiet De Kristne | 288
295
+ Nordland | Kystpartiet | 420
296
+ Nordland | Liberalistene | 269
297
+ Nordland | Norges Kommunistiske Parti | 59
298
+ Nordland | Piratpartiet | 210
299
+ Troms Romsa | Arbeiderpartiet | 21882
300
+ Troms Romsa | Sosialistisk Venstreparti | 9213
301
+ Troms Romsa | Rødt | 2081
302
+ Troms Romsa | Senterpartiet | 13640
303
+ Troms Romsa | Kristelig Folkeparti | 2408
304
+ Troms Romsa | Miljøpartiet De Grønne | 2588
305
+ Troms Romsa | Venstre | 2674
306
+ Troms Romsa | Høyre | 18709
307
+ Troms Romsa | Fremskrittspartiet | 16604
308
+ Troms Romsa | Alliansen | 115
309
+ Troms Romsa | Demokratene i Norge | 119
310
+ Troms Romsa | Helsepartiet | 289
311
+ Troms Romsa | Partiet De Kristne | 160
312
+ Troms Romsa | Kystpartiet | 173
313
+ Troms Romsa | Liberalistene | 300
314
+ Troms Romsa | Norges Kommunistiske Parti | 56
315
+ Troms Romsa | Nordting | 59
316
+ Finnmark Finnmárku | Arbeiderpartiet | 12440
317
+ Finnmark Finnmárku | Sosialistisk Venstreparti | 3437
318
+ Finnmark Finnmárku | Rødt | 602
319
+ Finnmark Finnmárku | Senterpartiet | 5790
320
+ Finnmark Finnmárku | Kristelig Folkeparti | 808
321
+ Finnmark Finnmárku | Miljøpartiet De Grønne | 836
322
+ Finnmark Finnmárku | Venstre | 1644
323
+ Finnmark Finnmárku | Høyre | 5600
324
+ Finnmark Finnmárku | Fremskrittspartiet | 6994
325
+ Finnmark Finnmárku | Alliansen | 79
326
+ Finnmark Finnmárku | Demokratene i Norge | 71
327
+ Finnmark Finnmárku | Helsepartiet | 139
328
+ Finnmark Finnmárku | Partiet De Kristne | 141
329
+ Finnmark Finnmárku | Kystpartiet | 166
330
+ Finnmark Finnmárku | Liberalistene | 86
331
+ Finnmark Finnmárku | Piratpartiet | 76
@@ -0,0 +1,130 @@
1
+ #
2
+ # Statistical Analysis of Polling Results (SAPoR)
3
+ # Copyright (C) 2020 Filip van Laenen <f.a.vanlaenen@ieee.org>
4
+ #
5
+ # This file is part of SAPoR.
6
+ #
7
+ # SAPoR is free software: you can redistribute it and/or modify it under the
8
+ # terms of the GNU General Public License as published by the Free Software
9
+ # Foundation, either version 3 of the License, or (at your option) any later
10
+ # version.
11
+ #
12
+ # SAPoR is distributed in the hope that it will be useful, but WITHOUT ANY
13
+ # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
14
+ # A PARTICULAR PURPOSE. See the GNU General Public License for more details.
15
+ #
16
+ # You can find a copy of the GNU General Public License in /doc/gpl.txt
17
+ #
18
+
19
+ module Sapor
20
+ #
21
+ # The regional data for Norway.
22
+ #
23
+ class Norway < Area
24
+ include Singleton
25
+
26
+ def area_code
27
+ 'NO'
28
+ end
29
+
30
+ def coalitions
31
+ COALITIONS
32
+ end
33
+
34
+ def no_of_seats
35
+ NO_OF_SEATS
36
+ end
37
+
38
+ def overall_election_results_of_2017
39
+ if @overall_election_results_of_2017.nil?
40
+ @overall_election_results_of_2017 = \
41
+ summarize_election_results(election_results_of_2017)
42
+ end
43
+ @overall_election_results_of_2017
44
+ end
45
+
46
+ def population_size
47
+ # Source: Valgresultat.no, retrieved on 1 January 2020.
48
+ # URL: https://valgresultat.no/?type=st&year=2017
49
+ 2_926_836
50
+ end
51
+
52
+ def seats(simulation)
53
+ electoral_system.project(simulation)
54
+ end
55
+
56
+ def threshold
57
+ LEVELING_THRESHOLD
58
+ end
59
+
60
+ private
61
+
62
+ AP_PARTY = 'Arbeiderpartiet'.freeze
63
+ FRP_PARTY = 'Fremskrittspartiet'.freeze
64
+ H_PARTY = 'Høyre'.freeze
65
+ KRF_PARTY = 'Kristelig Folkeparti'.freeze
66
+ MDG_PARTY = 'Miljøpartiet De Grønne'.freeze
67
+ R_PARTY = 'Rødt'.freeze
68
+ SP_PARTY = 'Senterpartiet'.freeze
69
+ SV_PARTY = 'Sosialistisk Venstreparti'.freeze
70
+ V_PARTY = 'Venstre'.freeze
71
+
72
+ COALITIONS = [[AP_PARTY, KRF_PARTY, MDG_PARTY, SP_PARTY],
73
+ [AP_PARTY, KRF_PARTY, MDG_PARTY, SP_PARTY, SV_PARTY],
74
+ [AP_PARTY, KRF_PARTY, SP_PARTY],
75
+ [AP_PARTY, MDG_PARTY, R_PARTY, SP_PARTY, SV_PARTY],
76
+ [AP_PARTY, MDG_PARTY, SP_PARTY, SV_PARTY],
77
+ [AP_PARTY, R_PARTY, SP_PARTY, SV_PARTY],
78
+ [AP_PARTY, SP_PARTY, SV_PARTY],
79
+ [AP_PARTY, SP_PARTY],
80
+ [AP_PARTY, SV_PARTY],
81
+ [FRP_PARTY, H_PARTY],
82
+ [FRP_PARTY, H_PARTY, KRF_PARTY, MDG_PARTY, V_PARTY],
83
+ [FRP_PARTY, H_PARTY, KRF_PARTY, SP_PARTY, V_PARTY],
84
+ [FRP_PARTY, H_PARTY, KRF_PARTY, V_PARTY],
85
+ [FRP_PARTY, H_PARTY, V_PARTY],
86
+ [H_PARTY, KRF_PARTY, V_PARTY],
87
+ [KRF_PARTY, SP_PARTY, V_PARTY]].freeze
88
+
89
+ # Source: Valg i Norge, Valgkretser, Wikipedia, retrieved on 1 May 2015.
90
+ # URL: http://no.wikipedia.org/wiki/Valg_i_Norge#Valgkretser
91
+ DIRECT_SEAT_DISTRIBUTION = { 'Akershus' => 16, 'Aust-Agder' => 3,
92
+ 'Buskerud' => 8, 'Finnmark Finnmárku' => 4,
93
+ 'Hedmark' => 6, 'Hordaland' => 15,
94
+ 'Møre og Romsdal' => 8, 'Nord-Trøndelag' => 4,
95
+ 'Nordland' => 8, 'Oppland' => 6, 'Oslo' => 18,
96
+ 'Rogaland' => 13, 'Sogn og Fjordane' => 3,
97
+ 'Sør-Trøndelag' => 9, 'Telemark' => 5,
98
+ 'Troms Romsa' => 5, 'Vest-Agder' => 5,
99
+ 'Vestfold' => 6, 'Østfold' => 8 }.freeze
100
+
101
+ LEVELING_THRESHOLD = 0.04
102
+
103
+ # Source: Valg i Norge, Valgkretser, Wikipedia, retrieved on 16 April 2015.
104
+ # URL: http://no.wikipedia.org/wiki/Valg_i_Norge#Valgkretser
105
+ NO_OF_LEVELING_SEATS = 19
106
+
107
+ NO_OF_SEATS = NO_OF_LEVELING_SEATS + \
108
+ DIRECT_SEAT_DISTRIBUTION.values.inject(:+)
109
+
110
+ def election_results_of_2017
111
+ if @election_results_of_2017.nil?
112
+ @election_results_of_2017 = load_election_results(
113
+ 'norway-20170911.psv'
114
+ )
115
+ end
116
+ @election_results_of_2017
117
+ end
118
+
119
+ def electoral_system
120
+ if @electoral_system.nil?
121
+ @electoral_system = MultiDistrictLeveledProportional.new(
122
+ overall_election_results_of_2017, election_results_of_2017,
123
+ DIRECT_SEAT_DISTRIBUTION, NO_OF_LEVELING_SEATS, LEVELING_THRESHOLD,
124
+ SainteLague14Denominators
125
+ )
126
+ end
127
+ @electoral_system
128
+ end
129
+ end
130
+ end