diff --git a/2024/CMakeLists.txt b/2024/CMakeLists.txt index ab415cf..861c76a 100644 --- a/2024/CMakeLists.txt +++ b/2024/CMakeLists.txt @@ -8,6 +8,11 @@ project( LANGUAGES CXX ) +# default to release build +if (NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE Release) +endif() + message(STATUS "CMake build configuration for ${PROJECT_NAME} (${CMAKE_BUILD_TYPE}) ${PROJECT_VERSION}") set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) diff --git a/2024/src/day7.cpp b/2024/src/day7.cpp index 3800590..aadf57a 100644 --- a/2024/src/day7.cpp +++ b/2024/src/day7.cpp @@ -21,21 +21,15 @@ Ops default_ops = { std::multiplies() }; -template -inline int numDigits(T number) -{ - int digits = 0; - if (number < 0) digits = 1; - while (number) { - number /= 10; - digits++; - } - return digits; -} - std::function concat = [](long long a, long long b) { - int num_digits = numDigits(b); - return a * std::pow(10, num_digits) + b; + long long number = b; + int digits = 0; + if (number < 0) digits = 1; + while (number) { + number /= 10; + digits++; + } + return a * std::pow(10, digits) + b; }; bool is_possible(long long target, long long acc, const std::vector& nums, size_t idx = 0, const Ops& ops = default_ops) { @@ -43,10 +37,8 @@ bool is_possible(long long target, long long acc, const std::vector& nums, return acc == target; } - long long first = nums[idx]; - for (auto op : ops) { - if (is_possible(target, op(acc, first), nums, idx + 1, ops)) { + if (is_possible(target, op(acc, nums[idx]), nums, idx + 1, ops)) { return true; } }