Лидеры мира встретились и, наконец, признали, что лучший (и единственный) способ решения глобальных экономических проблем - подвести итоги того, сколько они должны друг другу, и просто расплатиться друг с другом огромными чеками. Они наняли вас (по иронии судьбы, с минимально возможной ставкой контракта), чтобы выработать наилучшие способы сделать это.
После долгих размышлений и прося кого-нибудь нарисовать простой пример, они придумали следующую спецификацию.
Каждая страна представлена своим кодом ISO 3166-1 alpha-2 : US
для США, AU
для Австралии, JP
для Японии, CN
для Китая и так далее ...
- Регистр составляется в виде серии записей о странах и сумм, причитающихся каждой стране.
- Вступление каждой страны начинается с идентификатора их домена, двоеточия, и того, сколько у них в избытке / дефиците (в миллиардах евро), после чего следует точка с запятой, затем список стран, разделенных запятыми, и сколько (в миллиардах Евро) они должны.
- Если страна ничего не должна другой стране, то после этой точки с запятой не указывается эта страна.
- Дефицит указывается в виде отрицательного числа, избыток указывается в виде положительного числа.
- Значения также могут быть плавающими.
- Регистр должен быть взят из STDIN. Конец главной книги обозначен переводом каретки в пустой строке. Счет должен быть доставлен в STDOUT.
Пример бухгалтерской книги:
Input:
AU:8;US:10,CN:15,JP:3
US:14;AU:12,CN:27,JP:14
CN:12;AU:8,US:17,JP:4
JP:10;AU:6,US:7,CN:10
Затем система определяет, сколько каждая страна должна и должна, и определяет их профицит / дефицит, например, для АС:
AU = 8 (текущий профицит) -10 (в США) -15 (в CN) -3 (в JP) +12 (из США) +8 (из CN) +6 (из JP) = 6
Когда все вычисления выполнены, подсчет должен быть показан:
Output:
AU:6
US:-5
CN:35
JP:8
Ваша задача - создать эту систему, способную принимать любое количество записей в регистре для любого количества стран и способную определять, сколько у каждой страны имеется дефицит / профицит, когда все выплачивается.
В конечном итоге вы можете использовать свой код для разрешения задолженности между следующими странами в приведенном ниже тестовом примере. Эти цифры были взяты из BBC News по состоянию на июнь 2011 года. ( Http://www.bbc.com/news/business-15748696 )
Для целей этого упражнения я использовал их соответствующий ВВП в качестве текущего положительного сальдо ... Пожалуйста, имейте в виду, что это строго упражнение в обеспечении качества кода ... здесь в этом вопросе не будет речи о глобальном экономическом разрешении ... Если вы хотите поговорить об экономике, я уверен, что есть еще один поддомен в SE, который занимается этим ...
US:10800;FR:440.2,ES:170.5,JP:835.2,DE:414.5,UK:834.5
FR:1800;IT:37.6,JP:79.8,DE:123.5,UK:227,US:202.1
ES:700;PT:19.7,IT:22.3,JP:20,DE:131.7,UK:74.9,US:49.6,FR:112
PT:200;IT:2.9,DE:26.6,UK:18.9,US:3.9,FR:19.1,ES:65.7
IT:1200;JP:32.8,DE:120,UK:54.7,US:34.8,FR:309,ES:29.5
IE:200;JP:15.4,DE:82,UK:104.5,US:39.8,FR:23.8
GR:200;DE:15.9,UK:9.4,US:6.2,FR:41.4,PT:7.5,IT:2.8
JP:4100;DE:42.5,UK:101.8,US:244.8,FR:107.7
DE:2400;UK:141.1,US:174.4,FR:205.8,IT:202.7,JP:108.3
UK:1700;US:578.6,FR:209.9,ES:316.6,IE:113.5,JP:122.7,DE:379.3
Теперь станьте экономическим спасителем мира!
Правила:
- Самый короткий код выигрывает ... в конце концов, это код-гольф
- Пожалуйста, предоставьте ваш вывод основного теста с вашим кодом ответа ...
JP:4100
?