Module:USHRseats

-- Returns the number of seats in the US House of Representatives held by a given state in a given year (If no year is given, the current number of seats is returned) local p = {}

function p.main(frame) state = frame.args[1] if mw.ustring.len(state)>2 then state = frame:expandTemplate{ title = 'ISO 3166 code', args = {"US", state} } state = state:sub(4) end

year = tonumber(frame.args[2]) if year then census_number = (year - 1 - math.fmod(year-1,10))/10 - 178 end states = { AK = {'-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-', 1,  1,  1,  1,  1,  1,  1}, AL = {'-','-','-','-', 3,  5,  7,  7,  6,  8,  8,  9,  9, 10,  9,  9,  9,  8,  7,  7,  7,  7,  7,  7}, AR = {'-','-','-','-','-','-', 1,  2,  3,  4,  5,  6,  7,  7,  7,  7,  6,  4,  4,  4,  4,  4,  4,  4}, AZ = {'-','-','-','-','-','-','-','-','-','-','-','-','-', 1,  1,  2,  2,  3,  4,  5,  6,  8,  9,  9}, CA = {'-','-','-','-','-','-','-', 2,  3,  4,  6,  7,  8, 11, 20, 23, 30, 38, 43, 45, 52, 53, 53, 52}, CO = {'-','-','-','-','-','-','-','-','-','-', 1,  2,  3,  4,  4,  4,  4,  4,  5,  6,  6,  7,  7,  8}, CT = { 5,  7,  7,  7,  6,  6,  4,  4,  4,  4,  4,  4,  5,  5,  6,  6,  6,  6,  6,  6,  6,  5,  5,  5}, DE = { 1,  1,  1,  2,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1}, FL = {'-','-','-','-','-','-','-', 1,  1,  2,  2,  2,  3,  4,  5,  6,  8, 12, 15, 19, 23, 25, 27, 28}, GA = { 3,  2,  4,  6,  7,  9,  8,  8,  7,  9, 10, 11, 11, 12, 10, 10, 10, 10, 10, 10, 11, 13, 14, 14}, HI = {'-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-', 2,  2,  2,  2,  2,  2,  2}, IA = {'-','-','-','-','-','-','-', 2,  6,  9, 11, 11, 11, 11,  9,  8,  8,  7,  6,  6,  5,  5,  4,  4}, ID = {'-','-','-','-','-','-','-','-','-','-','-', 1,  1,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2}, IL = {'-','-','-','-', 1,  3,  7,  9, 14, 19, 20, 22, 25, 27, 27, 26, 25, 24, 24, 22, 20, 19, 18, 17}, IN = {'-','-','-','-', 3,  7, 10, 11, 11, 13, 13, 13, 13, 13, 12, 11, 11, 11, 11, 10, 10,  9,  9,  9}, KS = {'-','-','-','-','-','-','-','-', 1,  3,  7,  8,  8,  8,  7,  6,  6,  5,  5,  5,  4,  4,  4,  4}, KY = {'-','2', 6, 10, 12, 13, 10, 10,  9, 10, 11, 11, 11, 11,  9,  9,  8,  7,  7,  7,  6,  6,  6,  6}, LA = {'-','-','-', 1,  3,  3,  4,  4,  5,  6,  6,  6,  7,  8,  8,  8,  8,  8,  8,  8,  7,  7,  6,  6}, MA = { 8, 14, 17, 20, 13, 12, 10, 11, 10, 11, 12, 13, 14, 16, 15, 14, 14, 12, 12, 11, 10, 10,  9,  9}, MD = { 6,  8,  9,  9,  9,  8,  6,  6,  5,  6,  6,  6,  6,  6,  6,  6,  7,  8,  8,  8,  8,  8,  8,  8}, ME = {'-','-','-','-', 7,  8,  7,  6,  5,  5,  4,  4,  4,  4,  3,  3,  3,  2,  2,  2,  2,  2,  2,  2}, MI = {'-','-','-','-','-','-', 3,  4,  6,  9, 11, 12, 12, 13, 17, 17, 18, 19, 19, 18, 16, 15, 14, 13}, MN = {'-','-','-','-','-','-','-','-', 2,  3,  5,  7,  9, 10,  9,  9,  9,  8,  8,  8,  8,  8,  8,  8}, MO = {'-','-','-','-', 1,  2,  5,  7,  9, 13, 14, 15, 16, 16, 13, 13, 11, 10, 10,  9,  9,  9,  8,  8}, MS = {'-','-','-','-', 1,  2,  4,  5,  5,  6,  7,  7,  8,  8,  7,  7,  6,  5,  5,  5,  5,  4,  4,  4}, MT = {'-','-','-','-','-','-','-','-','-','-','-', 1,  1,  2,  2,  2,  2,  2,  2,  2,  1,  1,  1,  2}, NC = { 5, 10, 12, 13, 13, 13,  9,  8,  7,  8,  9,  9, 10, 10, 11, 12, 12, 11, 11, 11, 12, 13, 13, 14}, ND = {'-','-','-','-','-','-','-','-','-','-','-', 1,  2,  3,  2,  2,  2,  2,  1,  1,  1,  1,  1,  1}, NE = {'-','-','-','-','-','-','-','-','-', 1,  3,  6,  6,  6,  5,  4,  4,  3,  3,  3,  3,  3,  3,  3}, NH = { 3,  4,  5,  6,  6,  5,  4,  3,  3,  3,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2}, NJ = { 4,  5,  6,  6,  6,  6,  5,  5,  5,  7,  7,  8, 10, 12, 14, 14, 14, 15, 15, 14, 13, 13, 12, 12}, NM = {'-','-','-','-','-','-','-','-','-','-','-','-','-', 1,  1,  2,  2,  2,  2,  3,  3,  3,  3,  3}, NV = {'-','-','-','-','-','-','-','-','-', 1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  2,  2,  3,  4,  4}, NY = { 6, 10, 17, 27, 34, 40, 34, 33, 31, 33, 34, 34, 37, 43, 45, 45, 43, 41, 39, 34, 31, 29, 27, 26}, OH = {'-','-', 1,  6, 14, 19, 21, 21, 19, 20, 21, 21, 21, 22, 24, 23, 23, 24, 23, 21, 19, 18, 16, 15}, OK = {'-','-','-','-','-','-','-','-','-','-','-','-','-', 8,  9,  8,  6,  6,  6,  6,  6,  5,  5,  5}, OR = {'-','-','-','-','-','-','-','-', 1,  1,  1,  2,  2,  3,  3,  4,  4,  4,  4,  5,  5,  5,  5,  6}, PA = { 8, 13, 18, 23, 26, 28, 24, 25, 24, 27, 28, 30, 32, 36, 34, 33, 30, 27, 25, 23, 21, 19, 18, 17}, RI = { 1,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  3,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2}, SC = { 5,  6,  8,  9,  9,  9,  7,  6,  4,  5,  7,  7,  7,  7,  6,  6,  6,  6,  6,  6,  6,  6,  7,  7}, SD = {'-','-','-','-','-','-','-','-','-','-','-', 2,  2,  3,  2,  2,  2,  2,  2,  1,  1,  1,  1,  1}, TN = {'-','-', 3,  6,  9, 13, 11, 10,  8, 10, 10, 10, 10, 10,  9, 10,  9,  9,  8,  9,  9,  9,  9,  9}, TX = {'-','-','-','-','-','-','-', 2,  4,  6, 11, 13, 16, 18, 21, 21, 22, 23, 24, 27, 30, 32, 36, 38}, UT = {'-','-','-','-','-','-','-','-','-','-','-','-', 1,  2,  2,  2,  2,  2,  2,  3,  3,  3,  4,  4}, VA = { 10, 19, 22, 23, 22, 21, 15, 13, 11, 9, 10, 10, 10, 10,  9,  9, 10, 10, 10, 10, 11, 11, 11, 11}, VT = {'-', 2,  4,  6,  5,  5,  4,  3,  3,  3,  2,  2,  2,  2,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1}, WA = {'-','-','-','-','-','-','-','-','-','-','-', 2,  3,  5,  6,  6,  7,  7,  7,  8,  9,  9, 10, 10}, WI = {'-','-','-','-','-','-','-', 3,  6,  8,  9, 10, 11, 11, 10, 10, 10, 10,  9,  9,  9,  8,  8,  8}, WV = {'-','-','-','-','-','-','-','-','-', 3,  4,  4,  5,  6,  6,  6,  6,  5,  4,  4,  3,  3,  3,  2}, WY = {'-','-','-','-','-','-','-','-','-','-','-', 1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1}}

if state=='DC' then seats = 0 elseif not states[state] then seats = frame:expandTemplate{ title = 'error', args = {'Error: state not recognized'} } else if census_number then seats = states[state][census_number] if seats=='-' or not seats then seats = frame:expandTemplate{ title = 'error', args = {"Error: given year is prior to the first census of this state"} } end else seats = states[state][#states[state]] end end return seats end

return p