From caa7067aaf585f83215c8b54678440cdf8a008ac Mon Sep 17 00:00:00 2001 From: tovjemam Date: Fri, 8 Dec 2023 08:24:13 +0100 Subject: [PATCH] Add project files. --- aoc5.cpp | 170 ++++++++++++++++++++++++++++ aoc5.sln | 31 +++++ aoc5.vcxproj | 137 +++++++++++++++++++++++ aoc5.vcxproj.filters | 22 ++++ input | 261 +++++++++++++++++++++++++++++++++++++++++++ input2 | 33 ++++++ input_richaj | 226 +++++++++++++++++++++++++++++++++++++ 7 files changed, 880 insertions(+) create mode 100644 aoc5.cpp create mode 100644 aoc5.sln create mode 100644 aoc5.vcxproj create mode 100644 aoc5.vcxproj.filters create mode 100644 input create mode 100644 input2 create mode 100644 input_richaj diff --git a/aoc5.cpp b/aoc5.cpp new file mode 100644 index 0000000..ed94988 --- /dev/null +++ b/aoc5.cpp @@ -0,0 +1,170 @@ +// aoc5.cpp : This file contains the 'main' function. Program execution begins and ends there. +// + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +typedef uint32_t Numero; + +struct MapEntry { + Numero src_start; + Numero dest_start; + Numero size; +}; + +int main() { + std::vector maps[7]; + + std::vector tovjemam; + + + std::ifstream ifs("input_richaj"); + + std::string hovno; + std::string line; + std::getline(ifs, line); + std::istringstream iss(line); + + std::vector seeds; + + iss >> hovno; + + Numero seed; + while (iss >> seed) + seeds.push_back(seed); + + int map_idx = -1; + while (std::getline(ifs, line)) { + if (line == "") { + map_idx++; + std::getline(ifs, line); + continue; + } + + std::istringstream iss(line); + MapEntry ent; + iss >> ent.dest_start >> ent.src_start >> ent.size; + maps[map_idx].push_back(ent); + } + + auto start_time = std::chrono::system_clock::now(); + + int num_ranges = seeds.size() / 2; + + std::vector min_locs; + min_locs.resize(num_ranges); + std::atomic_int progress[32]; + + std::thread progress_thread([num_ranges, &progress]() { + + + while (true) { + bool finished = true; + + std::this_thread::sleep_for(std::chrono::milliseconds(500)); + + for (int i = 0; i < num_ranges; ++i) { + int p = progress[i].load(); + + if (p != 100) + finished = false; + + char pb[] = " "; + + for (int c = 0; c < p; ++c) + pb[c] = '#'; + + + printf("%6d%% [%s]\n", p, pb); + + } + printf("\n\n"); + + if (finished) + break; + + } + + + }); + + //progress_thread.detach(); + + omp_set_num_threads(8); + +//#pragma omp parallel for + for (int r = 0; r < num_ranges; r++) { + Numero min_loc = UINT32_MAX; + + Numero start = seeds[r * 2]; + Numero end = start + seeds[r * 2 + 1]; + + for (Numero seed = start; seed < end; ++seed) { + Numero find_what = seed; + + Numero skip = end - start; + + + for (int i = 0; i < 7; ++i) { + const auto& map = maps[i]; + for (const auto& range : map) { + if (range.src_start <= find_what && (range.src_start + range.size) > find_what) { + find_what = find_what - range.src_start + range.dest_start; + skip = std::min(skip, (range.src_start + range.size) - find_what); + + //printf("-> %lu\n", find_what); + break; + } + } + + } + + min_loc = std::min(min_loc, find_what); + if (seed % 1000000 == 0) + progress[r] = (float)(seed - start) / (float)(end - start) * 100.0f; + //printf("r %d/%d seed %llu (%.2f%%) min_loc %llu\n", r + 1, num_ranges, seed, (float)(seed - start) / (float)(end - start) * 100.0f, min_loc); + + seed += skip - 1; + } + + progress[r] = 100; + min_locs[r] = min_loc; + + + } + + auto end_time = std::chrono::system_clock::now(); + + progress_thread.join(); + + Numero min_loc = UINT32_MAX; + for (int i = 0; i < num_ranges; ++i) { + printf("vysledek range %d: %u\n", i, min_locs[i]); + min_loc = std::min(min_loc, min_locs[i]); + } + + printf("=======\nvysledek: %u\n", min_loc); + + auto time_total = end_time - start_time; + printf("time total: %lld s\n", std::chrono::duration_cast(time_total).count()); + + std::cout << "Hello World!\n"; +} + +// Run program: Ctrl + F5 or Debug > Start Without Debugging menu +// Debug program: F5 or Debug > Start Debugging menu + +// Tips for Getting Started: +// 1. Use the Solution Explorer window to add/manage files +// 2. Use the Team Explorer window to connect to source control +// 3. Use the Output window to see build output and other messages +// 4. Use the Error List window to view errors +// 5. Go to Project > Add New Item to create new code files, or Project > Add Existing Item to add existing code files to the project +// 6. In the future, to open this project again, go to File > Open > Project and select the .sln file diff --git a/aoc5.sln b/aoc5.sln new file mode 100644 index 0000000..aef5d41 --- /dev/null +++ b/aoc5.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.7.34031.279 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aoc5", "aoc5.vcxproj", "{A177EBBF-982F-4B3D-A5B3-764C830E9716}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {A177EBBF-982F-4B3D-A5B3-764C830E9716}.Debug|x64.ActiveCfg = Debug|x64 + {A177EBBF-982F-4B3D-A5B3-764C830E9716}.Debug|x64.Build.0 = Debug|x64 + {A177EBBF-982F-4B3D-A5B3-764C830E9716}.Debug|x86.ActiveCfg = Debug|Win32 + {A177EBBF-982F-4B3D-A5B3-764C830E9716}.Debug|x86.Build.0 = Debug|Win32 + {A177EBBF-982F-4B3D-A5B3-764C830E9716}.Release|x64.ActiveCfg = Release|x64 + {A177EBBF-982F-4B3D-A5B3-764C830E9716}.Release|x64.Build.0 = Release|x64 + {A177EBBF-982F-4B3D-A5B3-764C830E9716}.Release|x86.ActiveCfg = Release|Win32 + {A177EBBF-982F-4B3D-A5B3-764C830E9716}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {C5D6A57E-878C-4FC7-B31B-ECCA8CF4EEEC} + EndGlobalSection +EndGlobal diff --git a/aoc5.vcxproj b/aoc5.vcxproj new file mode 100644 index 0000000..3550508 --- /dev/null +++ b/aoc5.vcxproj @@ -0,0 +1,137 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {a177ebbf-982f-4b3d-a5b3-764c830e9716} + aoc5 + 10.0 + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + true + + + Console + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + true + + + Console + true + true + true + + + + + + + + + \ No newline at end of file diff --git a/aoc5.vcxproj.filters b/aoc5.vcxproj.filters new file mode 100644 index 0000000..5bdadbe --- /dev/null +++ b/aoc5.vcxproj.filters @@ -0,0 +1,22 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + \ No newline at end of file diff --git a/input b/input new file mode 100644 index 0000000..4dc6e81 --- /dev/null +++ b/input @@ -0,0 +1,261 @@ +seeds: 2906422699 6916147 3075226163 146720986 689152391 244427042 279234546 382175449 1105311711 2036236 3650753915 127044950 3994686181 93904335 1450749684 123906789 2044765513 620379445 1609835129 60050954 + +seed-to-soil map: +2642418175 2192252668 3835256 +2646253431 2276158914 101631202 +2640809144 3719389865 1609031 +2439110058 2377790116 121628096 +439727986 2712085714 392957193 +993018128 1316992003 327657967 +832685179 1875058987 50438969 +2796039666 0 1107546829 +182253984 3569317158 150072707 +2747884633 1826903954 48155033 +2268424297 3406848659 162468499 +0 1644649970 182253984 +1794130013 2499418212 105266207 +2560738154 2196087924 80070990 +1512587867 1925497956 72096972 +2094053960 3729216158 174370337 +1320676095 3105042907 191911772 +1899396220 1997594928 194657740 +2430892796 3720998896 8217262 +1584684839 1107546829 209445174 +332326691 2604684419 107401295 +883124148 3296954679 109893980 + +soil-to-fertilizer map: +1486714106 1238503832 507721065 +637816737 149749818 437782225 +1182620803 2675299784 39248251 +3597657865 3775149764 175910008 +3773567873 3962939269 152626038 +3000531163 3487988055 287161709 +1221869054 1043346723 160011771 +1417026163 2117544922 69687943 +3584687325 3000531163 12970540 +3938073408 3484898614 3089441 +4154999630 4115565307 65971879 +3941162849 3087497490 97611489 +427771233 2337712270 210045504 +2132339212 587532043 265793132 +4220971509 3013501703 73995787 +3926193911 3951059772 11879497 +3287692872 3271363394 97309928 +3385002800 3185108979 86254415 +277291828 2187232865 150479405 +1075598962 1746224897 107021841 +1994435171 2714548035 137904041 +2398132344 1853246738 264298184 +4038774338 3368673322 116225292 +0 2547757774 127542010 +127542010 0 149749818 +2662430528 853325175 190021548 +3471257215 4181537186 113430110 +1381880825 1203358494 35145338 + +fertilizer-to-water map: +1335715777 3551297863 15572557 +3058091197 394986221 12806050 +3214739636 1272556544 43474947 +2194583281 3796992984 5908188 +1795111705 3569682225 74131978 +2761913827 2554114847 40731321 +163407858 97246509 38153094 +201560952 135399603 99530224 +2940391010 2113359463 79167148 +1379193735 3838257748 62489021 +605586814 1626110823 487248640 +1210765693 2673739436 122138279 +2657443462 2449644482 104470365 +1332903972 3566870420 2811805 +1092835454 1468044840 52984152 +3612861396 610695664 247630343 +4056909324 407792271 18897075 +1351288334 3900746769 27905401 +2200491469 2958550754 43716751 +3070897247 426689346 143842389 +2563990948 2356191968 93452514 +3860491739 2192526611 17573017 +430342797 3077819515 14543393 +1441682756 3140553634 112714328 +1554397084 1521028992 105081831 +1659478915 858326007 135632790 +1195705829 4279907432 15059864 +4075806399 3372259011 179038852 +2490006393 570531735 40163929 +2244208220 2795877715 126807124 +3272482070 3939528106 340379326 +444886190 3092362908 48190726 +1145819606 3027933292 49886223 +2371015344 3253267962 118991049 +3878064756 3002267505 25665787 +1869243683 993958797 278597747 +3258214583 1316031491 14267487 +2802645148 1330298978 137745862 +2563752764 2673501252 238184 +3903730543 3643814203 153178781 +97246509 234929827 66161349 +2158717366 2922684839 35865915 +2147841430 3928652170 10875936 +3019558158 2594846168 38533039 +493076916 2210099628 112509898 +2530170322 2322609526 33582442 +394986221 3802901172 35356576 +4254845251 2633379207 40122045 + +water-to-light map: +52352735 734025495 196243881 +3196736017 3686620279 539418860 +4260073591 2346541810 34893705 +3824140629 2381435515 128703321 +460535344 312464861 85993982 +963896761 930269376 1539501 +2058204537 3345283958 241067289 +1428799796 3586351247 100269032 +3077002514 1717378211 119733503 +2792038862 1432414559 284963652 +0 683119049 18725350 +2738205765 2731593698 53833097 +248596616 6913757 211938728 +953587656 0 6913757 +3736154877 2818563473 87985752 +1988337486 2311649339 34892471 +668927450 398458843 284660206 +2023229957 3310309378 34974580 +18725350 951959788 13476474 +2631325954 2191463345 25160101 +1295231825 2967131323 133567971 +2491590802 2510138836 139735152 +546529326 701844399 32181096 +3952843950 2906549225 60582098 +1882790692 3100699294 48444656 +2354408068 1295231825 137182734 +4153221679 4226039139 68928157 +2299901593 3288939581 21369797 +2321271390 2785426795 33136678 +578710422 222247833 90217028 +4013426048 3149143950 139795631 +1529068828 1837741481 353721864 +1931235348 2216623446 57102138 +32201824 931808877 20150911 +2299271826 1837111714 629767 +960501413 218852485 3395348 +4222149836 2273725584 37923755 +2656486055 2649873988 81719710 + +light-to-temperature map: +2002559950 382000741 90685628 +285136495 3669200023 235300945 +1697895437 3029658057 91190914 +2333974289 2655904102 65571245 +283606237 1729595262 1530258 +3395579298 2846931786 182726271 +3908077331 4156397993 58163239 +1641412094 1383382121 13076534 +3171401086 1731125520 55619959 +2399545534 283606237 11466807 +2411012341 694053237 46713076 +555564215 2831795288 15136498 +570700713 1473120509 221347978 +520437440 1694468487 35126775 +1640428391 3411773949 983703 +2936877085 306865692 75135049 +3578305569 2167033125 54004942 +1076200859 2221038067 81247286 +3884751672 1148097778 23325659 +3632310511 746654088 139828329 +4189239539 3506297541 50289650 +1909020061 3412757652 93539889 +2709622442 740766313 5887775 +792048691 1911214447 163922279 +3999452535 4264264797 30702499 +3159608438 295073044 11792648 +1064487544 2588752680 11713315 +1172524157 902820295 245277483 +1789086351 1263448411 119933710 +2715510217 472686369 221366868 +2093245578 3147917902 240728711 +1417801640 2366125929 222626751 +3303682899 2075136726 91896399 +955970970 4214561232 49703565 +1157448145 2302285353 15076012 +3012012134 3388646613 23127336 +3966240570 1230236446 33211965 +4030155034 2317361365 48764564 +3227021045 1396458655 76661854 +3035139470 1786745479 124468968 +2457725417 3904500968 251897025 +1005674535 1171423437 58813009 +4078919598 2721475347 110319941 +1654488628 886482417 16337878 +3772138840 3556587191 112612832 +1670826506 3120848971 27068931 +4239529189 2600465995 55438107 + +temperature-to-humidity map: +2776202835 2235980179 978805 +79456303 770215397 125672111 +350944915 144658185 147068664 +239335677 1555124158 884128 +3153890512 3800437685 109571794 +240219805 0 95968287 +2078890110 4167578198 41164706 +3637428670 2781740910 54319513 +3511657938 2772352153 5987732 +2771529423 3277605929 4673412 +498013579 291726849 399032245 +3691748183 3910009479 257568719 +3548876568 3282279341 16553363 +3135162288 2217251955 18728224 +2161038070 2836060423 259888366 +3565429931 4208742904 71998739 +3952717927 3799896230 541455 +2777181640 2500118625 179031937 +3953259382 3395098982 156601616 +4109860998 3298832704 70018024 +2580082919 1819987413 191446504 +1398347285 895887508 382372949 +205128414 1556008286 34207263 +2956213577 2011433917 178948711 +3517645670 2679150562 4361571 +336188092 129901362 14756823 +1364414210 95968287 33933075 +1173909525 1590215549 190504685 +3263462306 3551700598 248195632 +2420926436 2495861681 4256944 +1819987413 2236958984 258902697 +2120054816 3095948789 26757601 +4179879022 2683512133 88840020 +3522007241 2190382628 26869327 +2146812417 4280741643 14225653 +0 690759094 79456303 +897045824 1278260457 276863701 +4268719042 3368850728 26248254 +2425183380 3122706390 154899539 +3949316902 2778339885 3401025 + +humidity-to-location map: +1568324830 3576584364 32633066 +300199016 474209742 262529847 +3559913667 3345416335 231168029 +1042084677 290085772 184123970 +0 27095618 110260307 +562728863 0 7921916 +1860347496 3086490828 96440514 +1956788010 3609217430 226060373 +262990154 1080572947 37208862 +2182848383 3062438579 9763931 +589824481 1443076400 49986334 +639810815 1329220256 113856144 +1600957896 1568324830 245101282 +2310901200 1813426112 1249012467 +3791081696 3835277803 341400607 +1846059178 3072202510 14288318 +4132482303 3182931342 162484993 +2192612314 4176678410 118288886 +965105406 736739589 76979271 +753666959 1117781809 211438447 +110260307 137355925 152729847 +1226208647 813718860 266854087 +570650779 7921916 19173702 diff --git a/input2 b/input2 new file mode 100644 index 0000000..bd902a4 --- /dev/null +++ b/input2 @@ -0,0 +1,33 @@ +seeds: 79 14 55 13 + +seed-to-soil map: +50 98 2 +52 50 48 + +soil-to-fertilizer map: +0 15 37 +37 52 2 +39 0 15 + +fertilizer-to-water map: +49 53 8 +0 11 42 +42 0 7 +57 7 4 + +water-to-light map: +88 18 7 +18 25 70 + +light-to-temperature map: +45 77 23 +81 45 19 +68 64 13 + +temperature-to-humidity map: +0 69 1 +1 0 69 + +humidity-to-location map: +60 56 37 +56 93 4 \ No newline at end of file diff --git a/input_richaj b/input_richaj new file mode 100644 index 0000000..46e126f --- /dev/null +++ b/input_richaj @@ -0,0 +1,226 @@ +seeds: 2149186375 163827995 1217693442 67424215 365381741 74637275 1627905362 77016740 22956580 60539394 586585112 391263016 2740196667 355728559 2326609724 132259842 2479354214 184627854 3683286274 337630529 + +seed-to-soil map: +3229936931 3770233758 236381937 +3646926122 3757559297 12674461 +938394995 626913497 352323383 +2516043511 0 51589736 +3224558845 3632370674 5378086 +3154383669 3733142176 3946275 +2567633247 1181073360 126906268 +0 1307979628 138466492 +286338057 1446446120 652056938 +3626455276 3737088451 20470846 +1290718378 2229802472 3472788 +2327189933 569558202 57355295 +3026168476 4006615695 128215193 +3158329944 3566141773 66228901 +3915379752 3026168476 379587544 +1627676565 2233275260 461264255 +2515844642 385075135 198869 +2088940820 385274004 184284198 +3819986336 3637748760 95393416 +2273225018 979236880 53964915 +3466318868 4134830888 160136408 +1294191166 51589736 333485399 +138466492 1033201795 147871565 +3659600583 3405756020 160385753 +2384545228 2098503058 131299414 + +soil-to-fertilizer map: +2991238558 2151391892 144378737 +1183223769 2295770629 113964757 +1297188526 1089334530 386627390 +1089334530 3060803751 93889239 +1683815916 3154692990 1140274306 +3135617295 2409735386 483920029 +4282117858 2138542454 12849438 +3619537324 1475961920 662580534 +2824090222 2893655415 167148336 + +fertilizer-to-water map: +1781174267 3172095614 252304554 +1777350394 205858418 3823873 +3481300219 2900371834 228938690 +629285174 3911240322 150964034 +4139459951 4244437788 50529508 +2729976567 269940901 128857098 +910342261 3129310524 42785090 +1576648209 1091396587 111088326 +1296874963 3585901272 233869698 +3710238909 168200356 37658062 +1687736535 4154823929 89613859 +953127351 4062204356 92619573 +552009002 158449435 9750921 +2719891798 1038135909 10084769 +3223980609 529688260 257319610 +2033478821 1532972418 624586061 +2858833665 2597021594 303350240 +4096284042 1048220678 43175909 +626349664 526752750 2935510 +794975913 3834497675 58843081 +3765796537 1202484913 330487505 +853818994 3424400168 56523267 +3747896971 3893340756 17899566 +1530744661 2157558479 19983260 +1045746924 787007870 251128039 +132529147 2177541739 419479855 +780249208 3819770970 14726705 +3163721999 209682291 60258610 +2658064882 463387740 61826916 +3162183905 525214656 1538094 +4189989459 3480923435 104977837 +1550727921 132529147 25920288 +561759923 398797999 64589741 + +water-to-light map: +3089483450 929490911 132962403 +2505150397 1675046001 88332095 +3674189474 3881789775 95079143 +487699292 2280047063 119590919 +2691722732 2904437110 186305619 +734683438 2471684433 263879127 +424005934 1311132479 63693358 +2066817488 1626942755 48103246 +4220411699 3381137532 52192686 +1272878735 2440662693 31021740 +2659005903 2399637982 32716829 +1141175611 3090742729 131703124 +1324856035 480042365 41880678 +4078508529 3341878136 23998484 +3392898998 4013676820 206668183 +1819185760 360597775 53921179 +1584721442 1933117275 234464318 +607290211 802097684 127393227 +2114920734 1374825837 252116918 +4272604385 3859426864 22362911 +2036056683 2873676305 30760805 +3056075412 768689646 33408038 +1375280832 8544119 209440610 +112465470 1062453314 248679165 +1303900475 521923043 20955560 +3341878136 3475705318 51020862 +3972027287 3537397184 64106142 +3811788516 3601503326 69230778 +361144635 542878603 62861299 +1366736713 0 8544119 +3769268617 3816906965 42519899 +1873106939 605739902 162949744 +2878028351 2432354811 8307882 +2886336233 1763378096 169739179 +4130652814 3365876620 15260912 +3599567181 4220345003 74622293 +0 2167581593 112465470 +4209740695 3526726180 10671004 +2367037652 2735563560 138112745 +3881019294 3976868918 8662101 +4036133429 3433330218 42375100 +4102507013 3985531019 28145801 +3889681395 3670734104 82345892 +2593482492 414518954 65523411 +4145913726 3753079996 63826969 +998562565 217984729 142613046 + +light-to-temperature map: +1941760763 1585007922 25353840 +4031153040 1610361762 71241272 +4225876754 972893749 69090542 +1426899362 2063678063 17216958 +852041331 3169727243 149223547 +2700225684 2869762423 88404546 +1641196592 702579563 136462841 +4102394312 1461525480 123482442 +1444116320 3910271612 16089747 +458934721 4276740328 18226968 +2302105532 3036223883 133503360 +2537110151 3618113777 89051179 +26320902 0 26087247 +2788630230 2763464440 106297983 +1303054891 656323277 45787557 +3803268902 1233641342 227884138 +1941402499 3971401567 358264 +1001264878 1681603034 301790013 +3611611851 1041984291 191657051 +3414223295 458934721 197388556 +477161689 839042404 133851345 +2469953812 3707164956 67156339 +2238153332 3971759831 63952200 +2435608892 3583768857 34344920 +1460206067 3926361359 45040208 +1777659433 702110834 468729 +1967114603 2057457401 6220662 +1348842448 2958166969 78056914 +1778128162 2080895021 163274337 +1505246275 3774321295 135950317 +1973335265 3318950790 264818067 +611013034 4035712031 241028297 +2894928213 2244169358 519295082 +2626161330 1983393047 74064354 +0 26087247 26320902 + +temperature-to-humidity map: +2565293924 3936499516 66436363 +3537039881 3587821379 320595386 +493156596 2133973986 271025354 +2631730287 2862507138 166475062 +3857635267 3531891893 55929486 +2014053518 0 390945822 +3340501666 4098429081 196538215 +3198273266 4002935879 95493202 +4210777967 3447702564 84189329 +4119758949 2771488120 91019018 +2826288100 3028982200 371985166 +764181950 971110280 681277242 +401253963 2042071353 91902633 +2798205349 3908416765 28082751 +3913564753 2565293924 206194196 +1445459192 390945822 284651564 +1730110756 1652387522 283942762 +0 1936330284 105741069 +105741069 675597386 295512894 +3293766468 3400967366 46735198 + +humidity-to-location map: +2165947883 243164825 185957029 +4117181009 1886348582 84328450 +1977790778 3003241907 52295181 +2621047317 2603926811 3541080 +20358599 0 34147766 +1910216465 2289280284 67574313 +1435321221 2953430520 49811387 +3565107101 532688453 509094142 +231708454 3055537088 20702669 +96040833 2127032834 135667621 +2351904912 1321002996 61162541 +3338550958 2262700455 26579829 +3365130787 429121854 81629660 +2723669224 4076568620 55137108 +1823192023 3076239757 48333179 +4074201243 2558055095 42979766 +2413067453 1970677032 156355802 +252411123 3815127871 123756213 +1871525202 1209106389 38691263 +0 34147766 20358599 +2616053742 510751514 4993575 +2599888132 4283810027 11157269 +379059286 3938884084 132676195 +569836988 3124572936 428164512 +376167336 2601034861 2891950 +3463703811 141761535 101403290 +1043722202 4131705728 152104299 +4201509459 3794875378 20252493 +2163402773 1539347871 2545110 +1686333106 1072247472 136858917 +998001500 96040833 45720702 +4221761952 1247797652 73205344 +2030085959 1781387701 104960881 +2569423255 1041782595 30464877 +2135046840 3552737448 28355933 +3446760447 515745089 16943364 +2778806332 2607467891 345962629 +1195826501 1541892981 239494720 +1485132608 2356854597 201200498 +2611045401 4071560279 5008341 +3124768961 3581093381 213781997 +511735481 1481246364 58101507 +2624588397 1382165537 99080827 \ No newline at end of file