Skip to content

Commit

Permalink
removing inlined function
Browse files Browse the repository at this point in the history
  • Loading branch information
K20shores committed Dec 8, 2024
1 parent e83116e commit 471bfee
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 17 deletions.
5 changes: 5 additions & 0 deletions 2024/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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})
Expand Down
26 changes: 9 additions & 17 deletions 2024/src/day7.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,32 +21,24 @@ Ops default_ops = {
std::multiplies<long long>()
};

template <class T>
inline int numDigits(T number)
{
int digits = 0;
if (number < 0) digits = 1;
while (number) {
number /= 10;
digits++;
}
return digits;
}

std::function<long long(long long, long long)> 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<int>& nums, size_t idx = 0, const Ops& ops = default_ops) {
if (idx == nums.size()) {
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;
}
}
Expand Down

0 comments on commit 471bfee

Please sign in to comment.