sapor 0.3.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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,68 @@
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
+
18
+ # Source: "Parliament of Catalonia election results, 27 September 2015". Central
19
+ # Electoral Commission. 6 November 2015. Retrieved on 21 October 2017.
20
+ # URL: http://www.juntaelectoralcentral.es/cs/jec/documentos/CATALU%C3%91A_2015_Resultados.pdf
21
+
22
+ # Adjustments:
23
+ # Catalunya Sí que es Pot + Recortes Cero–Els Verds → Catalunya en Comú
24
+ # Junts pel Sí → Partit Demòcrata Europeu Català + Esquerra Republicana de Catalunya–Catalunya Sí
25
+
26
+ Barcelona | Partit Demòcrata Europeu Català | 556,461
27
+ Barcelona | Esquerra Republicana de Catalunya–Catalunya Sí | 556,461
28
+ Barcelona | Ciutadans–Partido de la Ciudadanía | 581,032
29
+ Barcelona | Partit dels Socialistes de Catalunya (PSC-PSOE) | 421,487
30
+ Barcelona | Catalunya en Comú | 324,856
31
+ Barcelona | Partit Popular | 272,804
32
+ Barcelona | Candidatura d’Unitat Popular | 255,328
33
+ Barcelona | Unió Democràtica de Catalunya | 75,700
34
+ Barcelona | Partit Animalista contra el Maltractament Animal | 24,426
35
+
36
+ Girona | Partit Demòcrata Europeu Català | 108,167
37
+ Girona | Esquerra Republicana de Catalunya–Catalunya Sí | 108,167
38
+ Girona | Ciutadans–Partido de la Ciudadanía | 48,346
39
+ Girona | Partit dels Socialistes de Catalunya (PSC-PSOE) | 33,416
40
+ Girona | Candidatura d’Unitat Popular | 33,117
41
+ Girona | Partit Popular | 22,660
42
+ Girona | Catalunya en Comú | 19,158
43
+ Girona | Unió Democràtica de Catalunya | 8,295
44
+ Girona | Partit Animalista contra el Maltractament Animal | 1,823
45
+ Girona | Pirates de Catalunya–Per decidir-ho tot | 327
46
+ Girona | Guanyem Catalunya | 320
47
+
48
+ Lleida | Partit Demòcrata Europeu Català | 63,461
49
+ Lleida | Esquerra Republicana de Catalunya–Catalunya Sí | 63,461
50
+ Lleida | Ciutadans–Partido de la Ciudadanía | 26,612
51
+ Lleida | Partit dels Socialistes de Catalunya (PSC-PSOE) | 19,364
52
+ Lleida | Candidatura d’Unitat Popular | 18,736
53
+ Lleida | Partit Popular | 16,761
54
+ Lleida | Catalunya en Comú | 10,290
55
+ Lleida | Unió Democràtica de Catalunya | 8,178
56
+ Lleida | Partit Animalista contra el Maltractament Animal | 1,046
57
+ Lleida | Guanyem Catalunya | 221
58
+
59
+ Tarragona | Partit Demòcrata Europeu Català | 86,269
60
+ Tarragona | Esquerra Republicana de Catalunya–Catalunya Sí | 86,269
61
+ Tarragona | Ciutadans–Partido de la Ciudadanía | 80,374
62
+ Tarragona | Partit dels Socialistes de Catalunya (PSC-PSOE) | 49,016
63
+ Tarragona | Partit Popular | 36,968
64
+ Tarragona | Candidatura d’Unitat Popular | 30,613
65
+ Tarragona | Catalunya en Comú | 27,773
66
+ Tarragona | Unió Democràtica de Catalunya | 11,120
67
+ Tarragona | Partit Animalista contra el Maltractament Animal | 2,862
68
+ Tarragona | Guanyem Catalunya | 626
@@ -0,0 +1,63 @@
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
+
18
+ # Source: "Parliament of Catalonia election results, 27 September 2015". Central
19
+ # Electoral Commission. 6 November 2015. Retrieved on 21 October 2017.
20
+ # URL: http://www.juntaelectoralcentral.es/cs/jec/documentos/CATALU%C3%91A_2015_Resultados.pdf
21
+
22
+ # Adjustments:
23
+ # Catalunya Sí que es Pot + Recortes Cero–Els Verds → Catalunya en Comú
24
+
25
+ Barcelona | Junts pel Sí | 1,112,922
26
+ Barcelona | Ciutadans–Partido de la Ciudadanía | 581,032
27
+ Barcelona | Partit dels Socialistes de Catalunya (PSC-PSOE) | 421,487
28
+ Barcelona | Catalunya en Comú | 324,856
29
+ Barcelona | Partit Popular | 272,804
30
+ Barcelona | Candidatura d’Unitat Popular | 255,328
31
+ Barcelona | Unió Democràtica de Catalunya | 75,700
32
+ Barcelona | Partit Animalista contra el Maltractament Animal | 24,426
33
+
34
+ Girona | Junts pel Sí | 216,333
35
+ Girona | Ciutadans–Partido de la Ciudadanía | 48,346
36
+ Girona | Partit dels Socialistes de Catalunya (PSC-PSOE) | 33,416
37
+ Girona | Candidatura d’Unitat Popular | 33,117
38
+ Girona | Partit Popular | 22,660
39
+ Girona | Catalunya en Comú | 19,158
40
+ Girona | Unió Democràtica de Catalunya | 8,295
41
+ Girona | Partit Animalista contra el Maltractament Animal | 1,823
42
+ Girona | Pirates de Catalunya–Per decidir-ho tot | 327
43
+ Girona | Guanyem Catalunya | 320
44
+
45
+ Lleida | Junts pel Sí | 126,922
46
+ Lleida | Ciutadans–Partido de la Ciudadanía | 26,612
47
+ Lleida | Partit dels Socialistes de Catalunya (PSC-PSOE) | 19,364
48
+ Lleida | Candidatura d’Unitat Popular | 18,736
49
+ Lleida | Partit Popular | 16,761
50
+ Lleida | Catalunya en Comú | 10,290
51
+ Lleida | Unió Democràtica de Catalunya | 8,178
52
+ Lleida | Partit Animalista contra el Maltractament Animal | 1,046
53
+ Lleida | Guanyem Catalunya | 221
54
+
55
+ Tarragona | Junts pel Sí | 172,537
56
+ Tarragona | Ciutadans–Partido de la Ciudadanía | 80,374
57
+ Tarragona | Partit dels Socialistes de Catalunya (PSC-PSOE) | 49,016
58
+ Tarragona | Partit Popular | 36,968
59
+ Tarragona | Candidatura d’Unitat Popular | 30,613
60
+ Tarragona | Catalunya en Comú | 27,773
61
+ Tarragona | Unió Democràtica de Catalunya | 11,120
62
+ Tarragona | Partit Animalista contra el Maltractament Animal | 2,862
63
+ Tarragona | Guanyem Catalunya | 626
@@ -0,0 +1,67 @@
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
+
18
+ # Source: "Disposición 426 del BOE núm. 11 de 2018" Retrieved on 3 January 2020.
19
+ # URL: http://www.juntaelectoralcentral.es/cs/jec/documentos/CATALU%C3%91A_2017_Resultados.pdf
20
+
21
+ # Added Vox with the same distribution as Partit Popular.
22
+
23
+ Barcelona | Ciutadans–Partido de la Ciudadanía | 868,032
24
+ Barcelona | Junts pel Catalunya | 624,261
25
+ Barcelona | Esquerra Republicana–Catalunya Sí | 678,030
26
+ Barcelona | Partit dels Socialistes de Catalunya (PSC-PSOE) | 497,650
27
+ Barcelona | Catalunya en Comú–Podem | 276,810
28
+ Barcelona | Candidatura d’Unitat Popular | 143,711
29
+ Barcelona | Partit Popular | 142,934
30
+ Barcelona | Vox | 142,934
31
+ Barcelona | Partit Animalista contra el Maltractament Animal | 31,330
32
+ Barcelona | Recortes Cero–Grupo Verde | 8,621
33
+
34
+ Girona | Ciutadans–Partido de la Ciudadanía | 79,634
35
+ Girona | Junts pel Catalunya | 149,638
36
+ Girona | Esquerra Republicana–Catalunya Sí | 88,582
37
+ Girona | Partit dels Socialistes de Catalunya (PSC-PSOE) | 35,197
38
+ Girona | Catalunya en Comú–Podem | 16,482
39
+ Girona | Candidatura d’Unitat Popular | 21,708
40
+ Girona | Partit Popular | 11,646
41
+ Girona | Vox | 11,646
42
+ Girona | Partit Animalista contra el Maltractament Animal | 2,582
43
+ Girona | Recortes Cero–Grupo Verde | 560
44
+ Girona | Per un Món Més Just | 241
45
+
46
+ Lleida | Ciutadans–Partido de la Ciudadanía | 40,908
47
+ Lleida | Junts pel Catalunya | 78,303
48
+ Lleida | Esquerra Republicana–Catalunya Sí | 64,417
49
+ Lleida | Partit dels Socialistes de Catalunya (PSC-PSOE) | 21,795
50
+ Lleida | Catalunya en Comú–Podem | 9,415
51
+ Lleida | Candidatura d’Unitat Popular | 12,140
52
+ Lleida | Partit Popular | 10,902
53
+ Lleida | Vox | 10,902
54
+ Lleida | Partit Animalista contra el Maltractament Animal | 1,186
55
+ Lleida | Recortes Cero–Grupo Verde | 312
56
+ Lleida | Per un Món Més Just | 336
57
+
58
+ Tarragona | Ciutadans–Partido de la Ciudadanía | 120,825
59
+ Tarragona | Junts pel Catalunya | 96,031
60
+ Tarragona | Esquerra Republicana–Catalunya Sí | 104,832
61
+ Tarragona | Partit dels Socialistes de Catalunya (PSC-PSOE) | 52,017
62
+ Tarragona | Catalunya en Comú–Podem | 23,653
63
+ Tarragona | Candidatura d’Unitat Popular | 17,687
64
+ Tarragona | Partit Popular | 20,188
65
+ Tarragona | Vox | 20,188
66
+ Tarragona | Partit Animalista contra el Maltractament Animal | 3,645
67
+ Tarragona | Recortes Cero–Grupo Verde | 794
@@ -0,0 +1,61 @@
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
+
18
+ # Source: "Disposición 426 del BOE núm. 11 de 2018" Retrieved on 3 January 2020.
19
+ # URL: http://www.juntaelectoralcentral.es/cs/jec/documentos/CATALU%C3%91A_2017_Resultados.pdf
20
+
21
+ Barcelona | Ciutadans–Partido de la Ciudadanía | 868,032
22
+ Barcelona | Junts pel Catalunya | 624,261
23
+ Barcelona | Esquerra Republicana–Catalunya Sí | 678,030
24
+ Barcelona | Partit dels Socialistes de Catalunya (PSC-PSOE) | 497,650
25
+ Barcelona | Catalunya en Comú–Podem | 276,810
26
+ Barcelona | Candidatura d’Unitat Popular | 143,711
27
+ Barcelona | Partit Popular | 142,934
28
+ Barcelona | Partit Animalista contra el Maltractament Animal | 31,330
29
+ Barcelona | Recortes Cero–Grupo Verde | 8,621
30
+
31
+ Girona | Ciutadans–Partido de la Ciudadanía | 79,634
32
+ Girona | Junts pel Catalunya | 149,638
33
+ Girona | Esquerra Republicana–Catalunya Sí | 88,582
34
+ Girona | Partit dels Socialistes de Catalunya (PSC-PSOE) | 35,197
35
+ Girona | Catalunya en Comú–Podem | 16,482
36
+ Girona | Candidatura d’Unitat Popular | 21,708
37
+ Girona | Partit Popular | 11,646
38
+ Girona | Partit Animalista contra el Maltractament Animal | 2,582
39
+ Girona | Recortes Cero–Grupo Verde | 560
40
+ Girona | Per un Món Més Just | 241
41
+
42
+ Lleida | Ciutadans–Partido de la Ciudadanía | 40,908
43
+ Lleida | Junts pel Catalunya | 78,303
44
+ Lleida | Esquerra Republicana–Catalunya Sí | 64,417
45
+ Lleida | Partit dels Socialistes de Catalunya (PSC-PSOE) | 21,795
46
+ Lleida | Catalunya en Comú–Podem | 9,415
47
+ Lleida | Candidatura d’Unitat Popular | 12,140
48
+ Lleida | Partit Popular | 10,902
49
+ Lleida | Partit Animalista contra el Maltractament Animal | 1,186
50
+ Lleida | Recortes Cero–Grupo Verde | 312
51
+ Lleida | Per un Món Més Just | 336
52
+
53
+ Tarragona | Ciutadans–Partido de la Ciudadanía | 120,825
54
+ Tarragona | Junts pel Catalunya | 96,031
55
+ Tarragona | Esquerra Republicana–Catalunya Sí | 104,832
56
+ Tarragona | Partit dels Socialistes de Catalunya (PSC-PSOE) | 52,017
57
+ Tarragona | Catalunya en Comú–Podem | 23,653
58
+ Tarragona | Candidatura d’Unitat Popular | 17,687
59
+ Tarragona | Partit Popular | 20,188
60
+ Tarragona | Partit Animalista contra el Maltractament Animal | 3,645
61
+ Tarragona | Recortes Cero–Grupo Verde | 794
@@ -0,0 +1,124 @@
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 Catalonia.
22
+ #
23
+ class Catalonia < Area
24
+ include Singleton
25
+ def area_code
26
+ 'ES-CT'
27
+ end
28
+
29
+ def coalitions
30
+ COALITIONS
31
+ end
32
+
33
+ def no_of_seats
34
+ SEAT_DISTRIBUTION.values.inject(:+)
35
+ end
36
+
37
+ def overall_election_results_of_2017
38
+ if @overall_election_results_of_2017.nil?
39
+ @overall_election_results_of_2017 = \
40
+ summarize_election_results(election_results_of_2017)
41
+ end
42
+ @overall_election_results_of_2017
43
+ end
44
+
45
+ def population_size
46
+ # Voter turnout in 2017
47
+ # Source: "Disposición 426 del BOE núm. 11 de 2018" Retrieved on 3 January
48
+ # 2020.
49
+ # URL: http://www.juntaelectoralcentral.es/cs/jec/documentos/CATALU%C3%91A_2017_Resultados.pdf
50
+ 4_357_368
51
+ end
52
+
53
+ def seats(simulation)
54
+ electoral_system.project(simulation)
55
+ end
56
+
57
+ def threshold
58
+ THRESHOLD
59
+ end
60
+
61
+ private
62
+
63
+ CEC_PARTY = 'Catalunya en Comú–Podem'.freeze
64
+ CS_PARTY = 'Ciutadans–Partido de la Ciudadanía'.freeze
65
+ CUP_PARTY = 'Candidatura d’Unitat Popular'.freeze
66
+ ERC_PARTY = 'Esquerra Republicana–Catalunya Sí'.freeze
67
+ JXCAT_PARTY = 'Junts pel Catalunya'.freeze
68
+ PP_PARTY = 'Partit Popular'.freeze
69
+ PSC_PARTY = 'Partit dels Socialistes de Catalunya (PSC-PSOE)'.freeze
70
+ VOX_PARTY = 'Vox'.freeze
71
+
72
+ COALITIONS = [[CEC_PARTY, CS_PARTY, PSC_PARTY, PP_PARTY],
73
+ [CEC_PARTY, ERC_PARTY],
74
+ [CEC_PARTY, ERC_PARTY, JXCAT_PARTY],
75
+ [CEC_PARTY, ERC_PARTY, PSC_PARTY],
76
+ [CS_PARTY, PSC_PARTY, PP_PARTY],
77
+ [CS_PARTY, PSC_PARTY, PP_PARTY, VOX_PARTY],
78
+ [CUP_PARTY, ERC_PARTY, JXCAT_PARTY],
79
+ [ERC_PARTY, JXCAT_PARTY]].freeze
80
+
81
+ SEAT_DISTRIBUTION = { 'Barcelona' => 85, 'Girona' => 17, 'Lleida' => 15,
82
+ 'Tarragona' => 18 }.freeze
83
+
84
+ THRESHOLD = 0.03
85
+
86
+ def election_results_of_2017
87
+ if @election_results_of_2017.nil?
88
+ @election_results_of_2017 = load_election_results( \
89
+ 'catalonia-20171221.psv'
90
+ )
91
+ end
92
+ @election_results_of_2017
93
+ end
94
+
95
+ def electoral_system
96
+ if @electoral_system.nil?
97
+ @electoral_system = MultiDistrictProportional.new( \
98
+ overall_election_results_of_2017,
99
+ election_results_of_2017,
100
+ SEAT_DISTRIBUTION,
101
+ DhondtDenominators,
102
+ THRESHOLD
103
+ )
104
+ end
105
+ @electoral_system
106
+ end
107
+ end
108
+
109
+ # Extension of Catalonia with Vox
110
+ class CataloniaWithVox < Catalonia
111
+ def area_code
112
+ 'ES-CT∪{Vox}'
113
+ end
114
+
115
+ def election_results_of_2017
116
+ if @election_results_of_2017.nil?
117
+ @election_results_of_2017 = load_election_results(
118
+ 'catalonia-20171221-with-vox.psv'
119
+ )
120
+ end
121
+ @election_results_of_2017
122
+ end
123
+ end
124
+ end
@@ -0,0 +1,164 @@
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
+
18
+ # Source: "Resultater - Hele landet - Folketingsvalg torsdag 18. juni 2015 -
19
+ # Danmarks Statistik". Retrieved on 28 December 2018.
20
+ # URL: http://www.dst.dk/valg/Valg1487635/valgopg/valgopgHL.htm
21
+
22
+ # Extended with Nye Borgerlige equal to Det Konservative Folkeparti
23
+ # Extended with Klaus Riskær Pedersen equal to Venstre
24
+ # Extended with Stram Kurs equal to Nye Borgerlige
25
+
26
+ Københavns Storkreds | Socialdemokraterne | 96,753
27
+ Københavns Storkreds | Radikale Venstre | 40578
28
+ Københavns Storkreds | Det Konservative Folkeparti | 13471
29
+ Københavns Storkreds | Nye Borgerlige | 13471
30
+ Københavns Storkreds | Stram Kurs | 13471
31
+ Københavns Storkreds | Socialistisk Folkeparti | 28260
32
+ Københavns Storkreds | Liberal Alliance | 37935
33
+ Københavns Storkreds | Kristendemokraterne | 1599
34
+ Københavns Storkreds | Dansk Folkeparti | 49575
35
+ Københavns Storkreds | Venstre | 44721
36
+ Københavns Storkreds | Klaus Riskær Pedersen | 44721
37
+ Københavns Storkreds | Enhedslisten–De Rød-Grønne | 71140
38
+ Københavns Storkreds | Alternativet | 48475
39
+
40
+ Københavns Omegns Storkreds | Socialdemokraterne | 90361
41
+ Københavns Omegns Storkreds | Radikale Venstre | 16710
42
+ Københavns Omegns Storkreds | Det Konservative Folkeparti | 13840
43
+ Københavns Omegns Storkreds | Nye Borgerlige | 13840
44
+ Københavns Omegns Storkreds | Stram Kurs | 13840
45
+ Københavns Omegns Storkreds | Socialistisk Folkeparti | 14619
46
+ Københavns Omegns Storkreds | Liberal Alliance | 25982
47
+ Københavns Omegns Storkreds | Kristendemokraterne | 1365
48
+ Københavns Omegns Storkreds | Dansk Folkeparti | 62419
49
+ Københavns Omegns Storkreds | Venstre | 46092
50
+ Københavns Omegns Storkreds | Klaus Riskær Pedersen | 46092
51
+ Københavns Omegns Storkreds | Enhedslisten–De Rød-Grønne | 25364
52
+ Københavns Omegns Storkreds | Alternativet | 13575
53
+
54
+ Nordsjællands Storkreds | Socialdemokraterne | 64822
55
+ Nordsjællands Storkreds | Radikale Venstre | 17515
56
+ Nordsjællands Storkreds | Det Konservative Folkeparti | 15123
57
+ Nordsjællands Storkreds | Nye Borgerlige | 15123
58
+ Nordsjællands Storkreds | Stram Kurs | 15123
59
+ Nordsjællands Storkreds | Socialistisk Folkeparti | 11182
60
+ Nordsjællands Storkreds | Liberal Alliance | 32744
61
+ Nordsjællands Storkreds | Kristendemokraterne | 1680
62
+ Nordsjællands Storkreds | Dansk Folkeparti | 53980
63
+ Nordsjællands Storkreds | Venstre | 59155
64
+ Nordsjællands Storkreds | Klaus Riskær Pedersen | 59155
65
+ Nordsjællands Storkreds | Enhedslisten–De Rød-Grønne | 18171
66
+ Nordsjællands Storkreds | Alternativet | 12957
67
+
68
+ Bornholms Storkreds | Socialdemokraterne | 8683
69
+ Bornholms Storkreds | Radikale Venstre | 427
70
+ Bornholms Storkreds | Det Konservative Folkeparti | 441
71
+ Bornholms Storkreds | Nye Borgerlige | 441
72
+ Bornholms Storkreds | Stram Kurs | 441
73
+ Bornholms Storkreds | Socialistisk Folkeparti | 716
74
+ Bornholms Storkreds | Liberal Alliance | 1037
75
+ Bornholms Storkreds | Kristendemokraterne | 749
76
+ Bornholms Storkreds | Dansk Folkeparti | 5168
77
+ Bornholms Storkreds | Venstre | 5257
78
+ Bornholms Storkreds | Klaus Riskær Pedersen | 5257
79
+ Bornholms Storkreds | Enhedslisten–De Rød-Grønne | 2175
80
+ Bornholms Storkreds | Alternativet | 1299
81
+
82
+ Sjællands Storkreds | Socialdemokraterne | 146464
83
+ Sjællands Storkreds | Radikale Venstre | 16906
84
+ Sjællands Storkreds | Det Konservative Folkeparti | 15083
85
+ Sjællands Storkreds | Nye Borgerlige | 15083
86
+ Sjællands Storkreds | Stram Kurs | 15083
87
+ Sjællands Storkreds | Socialistisk Folkeparti | 20575
88
+ Sjællands Storkreds | Liberal Alliance | 32598
89
+ Sjællands Storkreds | Kristendemokraterne | 1996
90
+ Sjællands Storkreds | Dansk Folkeparti | 134195
91
+ Sjællands Storkreds | Venstre | 102818
92
+ Sjællands Storkreds | Klaus Riskær Pedersen | 102818
93
+ Sjællands Storkreds | Enhedslisten–De Rød-Grønne | 35374
94
+ Sjællands Storkreds | Alternativet | 18202
95
+
96
+ Fyns Storkreds | Socialdemokraterne | 90061
97
+ Fyns Storkreds | Radikale Venstre | 10513
98
+ Fyns Storkreds | Det Konservative Folkeparti | 10849
99
+ Fyns Storkreds | Nye Borgerlige | 10849
100
+ Fyns Storkreds | Stram Kurs | 10849
101
+ Fyns Storkreds | Socialistisk Folkeparti | 13790
102
+ Fyns Storkreds | Liberal Alliance | 20271
103
+ Fyns Storkreds | Kristendemokraterne | 1293
104
+ Fyns Storkreds | Dansk Folkeparti | 67913
105
+ Fyns Storkreds | Venstre | 56673
106
+ Fyns Storkreds | Klaus Riskær Pedersen | 56673
107
+ Fyns Storkreds | Enhedslisten–De Rød-Grønne | 26575
108
+ Fyns Storkreds | Alternativet | 14165
109
+
110
+ Sydjyllands Storkreds | Socialdemokraterne | 104391
111
+ Sydjyllands Storkreds | Radikale Venstre | 13962
112
+ Sydjyllands Storkreds | Det Konservative Folkeparti | 9625
113
+ Sydjyllands Storkreds | Nye Borgerlige | 9625
114
+ Sydjyllands Storkreds | Stram Kurs | 9625
115
+ Sydjyllands Storkreds | Socialistisk Folkeparti | 13508
116
+ Sydjyllands Storkreds | Liberal Alliance | 33277
117
+ Sydjyllands Storkreds | Kristendemokraterne | 4792
118
+ Sydjyllands Storkreds | Dansk Folkeparti | 126058
119
+ Sydjyllands Storkreds | Venstre | 104483
120
+ Sydjyllands Storkreds | Klaus Riskær Pedersen | 104483
121
+ Sydjyllands Storkreds | Enhedslisten–De Rød-Grønne | 22614
122
+ Sydjyllands Storkreds | Alternativet | 11551
123
+
124
+ Østjyllands Storkreds | Socialdemokraterne | 132320
125
+ Østjyllands Storkreds | Radikale Venstre | 23876
126
+ Østjyllands Storkreds | Det Konservative Folkeparti | 13490
127
+ Østjyllands Storkreds | Nye Borgerlige | 13490
128
+ Østjyllands Storkreds | Stram Kurs | 13490
129
+ Østjyllands Storkreds | Socialistisk Folkeparti | 21100
130
+ Østjyllands Storkreds | Liberal Alliance | 40101
131
+ Østjyllands Storkreds | Kristendemokraterne | 4627
132
+ Østjyllands Storkreds | Dansk Folkeparti | 91621
133
+ Østjyllands Storkreds | Venstre | 90528
134
+ Østjyllands Storkreds | Klaus Riskær Pedersen | 90528
135
+ Østjyllands Storkreds | Enhedslisten–De Rød-Grønne | 35960
136
+ Østjyllands Storkreds | Alternativet | 29587
137
+
138
+ Vestjyllands Storkreds | Socialdemokraterne | 80122
139
+ Vestjyllands Storkreds | Radikale Venstre | 9183
140
+ Vestjyllands Storkreds | Det Konservative Folkeparti | 15928
141
+ Vestjyllands Storkreds | Nye Borgerlige | 15928
142
+ Vestjyllands Storkreds | Stram Kurs | 15928
143
+ Vestjyllands Storkreds | Socialistisk Folkeparti | 11720
144
+ Vestjyllands Storkreds | Liberal Alliance | 19377
145
+ Vestjyllands Storkreds | Kristendemokraterne | 7646
146
+ Vestjyllands Storkreds | Dansk Folkeparti | 69657
147
+ Vestjyllands Storkreds | Venstre | 89537
148
+ Vestjyllands Storkreds | Klaus Riskær Pedersen | 89537
149
+ Vestjyllands Storkreds | Enhedslisten–De Rød-Grønne | 14531
150
+ Vestjyllands Storkreds | Alternativet | 8642
151
+
152
+ Nordjyllands Storkreds | Socialdemokraterne | 110963
153
+ Nordjyllands Storkreds | Radikale Venstre | 11339
154
+ Nordjyllands Storkreds | Det Konservative Folkeparti | 10153
155
+ Nordjyllands Storkreds | Nye Borgerlige | 10153
156
+ Nordjyllands Storkreds | Stram Kurs | 10153
157
+ Nordjyllands Storkreds | Socialistisk Folkeparti | 12108
158
+ Nordjyllands Storkreds | Liberal Alliance | 21807
159
+ Nordjyllands Storkreds | Kristendemokraterne | 3330
160
+ Nordjyllands Storkreds | Dansk Folkeparti | 81160
161
+ Nordjyllands Storkreds | Venstre | 85924
162
+ Nordjyllands Storkreds | Klaus Riskær Pedersen | 85924
163
+ Nordjyllands Storkreds | Enhedslisten–De Rød-Grønne | 22559
164
+ Nordjyllands Storkreds | Alternativet | 10335