Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
5aadc1c
task1
VariPor Feb 14, 2023
c440ee9
task3
VariPor Feb 25, 2023
560a9ab
task2
VariPor Mar 4, 2023
f3fe944
additional test
VariPor Mar 4, 2023
7e5a3f2
template was added
VariPor Mar 4, 2023
11e0a50
minstack with constant time
VariPor Mar 7, 2023
5e5e133
Merge pull request #1 from VariPor/homework
VariPor Mar 11, 2023
20e7098
Merge branch 'LostPointer:main' into main
VariPor Mar 11, 2023
19da0c0
format changes
VariPor Mar 11, 2023
b0a9dbc
add task
VariPor Mar 11, 2023
ccdf496
Merge pull request #2 from VariPor/main
VariPor Mar 11, 2023
d40d1a2
sandbox
VariPor Mar 11, 2023
312cd85
Merge branch 'homework' of https://github.com/VariPor/algorithms_1st …
VariPor Mar 11, 2023
5c64c41
format_3
VariPor Mar 11, 2023
51fcd43
task4
VariPor Mar 18, 2023
197af9a
format
VariPor Mar 18, 2023
1b876fc
correction
VariPor Mar 25, 2023
ffc652e
task 5 and 6 doesn't finished
VariPor Apr 8, 2023
dbec1b5
format
VariPor Apr 8, 2023
50f698b
correction error
VariPor Apr 22, 2023
8a44013
without deleting and tests
VariPor Apr 22, 2023
95a7117
without tests
VariPor Apr 22, 2023
3f303cd
Merge branch 'LostPointer:main' into homework
VariPor Apr 29, 2023
53f4119
findsum
VariPor Apr 29, 2023
838f206
add rehash
VariPor May 8, 2023
9ccff5d
add rehash
VariPor May 8, 2023
bb75145
correction
VariPor Jun 17, 2023
69e5c74
correction
VariPor Jun 20, 2023
ee96cb0
without hash matrix
VariPor Jun 21, 2023
5f3f23b
merge
VariPor Jun 21, 2023
b42acaf
format
VariPor Jun 21, 2023
c85a4c0
format
VariPor Jun 21, 2023
740152a
format
VariPor Jun 21, 2023
3210825
Merge branch 'homework' into new_branch
VariPor Jun 21, 2023
a501849
format
VariPor Jun 21, 2023
c0d0537
Merge branch 'new_branch' of https://github.com/VariPor/algorithms_1s…
VariPor Jun 21, 2023
cf91b0e
format
VariPor Jun 21, 2023
0d25690
format
VariPor Jun 21, 2023
98645ac
correction
VariPor Jun 21, 2023
7a2e5ec
format
VariPor Jun 21, 2023
beb0f4d
Merge pull request #4 from VariPor/new_branch
VariPor Jun 21, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/clang-tidy-review.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:

- uses: ZedThree/clang-tidy-review@v0.10.1
with:
clang_tidy_checks: '-*,performance-*,bugprone-*,clang-analyzer-*,cppcoreguidelines-*,mpi-*,misc-*,-cppcoreguidelines-avoid-non-const-global-variables,-cppcoreguidelines-avoid-magic-numbers'
clang_tidy_checks: '-*,performance-*,bugprone-*,clang-analyzer-*,cppcoreguidelines-*,mpi-*,misc-*,-cppcoreguidelines-avoid-non-const-global-variables,-cppcoreguidelines-avoid-magic-numbers,-clang-diagnostic-error,-misc-no-recursion'
split_workflow: true

- uses: actions/upload-artifact@v3
Expand Down
File renamed without changes.
15 changes: 14 additions & 1 deletion additional_tasks/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,17 @@ cmake_minimum_required(VERSION 3.10)

project(additional_tasks)

add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/temperature)
file(GLOB_RECURSE tasks_dirs LIST_DIRECTORIES true ".")

MESSAGE("dirs: ${task_dirs}")

foreach(dir ${tasks_dirs})
IF(IS_DIRECTORY ${dir})
IF(NOT ${dir} MATCHES ".*src.*")
MESSAGE("additional task: ${dir}")
add_subdirectory(${dir})
ENDIF()
ELSE()
CONTINUE()
ENDIF()
endforeach()
5 changes: 3 additions & 2 deletions additional_tasks/find_sum_numbers/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
cmake_minimum_required(VERSION 3.10)

set(PROJECT_NAME find_number_sum)
project(${PROJECT_NAME})
get_filename_component(PROJECT_NAME ${CMAKE_CURRENT_LIST_DIR} NAME)
string(REPLACE " " "_" PROJECT_NAME ${PROJECT_NAME})
project(${PROJECT_NAME} C CXX)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
Expand Down
10 changes: 9 additions & 1 deletion additional_tasks/find_sum_numbers/src/test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,12 @@

#include "utils.hpp"

TEST(GetNumbersOfSum, Simple) {}
TEST(GetNumbersOfSum, Simple) {
ASSERT_EQ(GetNumbersOfSum(std::vector<int>{-10, -2, 0, 3, 6, 7, 11, 14}, 3),
(std::pair<int, int>(0, 3)));
ASSERT_ANY_THROW(GetNumbersOfSum(std::vector<int>{}, 3));
ASSERT_EQ(GetNumbersOfSum(std::vector<int>{0}, 3),
(std::pair<int, int>(0, 0)));
ASSERT_EQ(GetNumbersOfSum(std::vector<int>{1, 2, 4, 4, 7}, 9),
(std::pair<int, int>(2, 7)));
}
11 changes: 10 additions & 1 deletion additional_tasks/find_sum_numbers/src/utils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,14 @@
#include <algorithm>

std::pair<int, int> GetNumbersOfSum(const std::vector<int>& numbers, int sum) {
return {0, 0};
if (numbers.empty()) throw std::out_of_range("Empty list of numbers");
int i = 0;
int j = numbers.size() - 1;
while (i < j) {
if (numbers.at(i) + numbers.at(j) == sum)
return std::pair<int, int>(numbers.at(i), numbers.at(j));
if (numbers.at(i) + numbers.at(j) < sum) ++i;
if (numbers.at(i) + numbers.at(j) > sum) --j;
}
return std::pair<int, int>(0, 0);
}
1 change: 1 addition & 0 deletions additional_tasks/find_sum_numbers/src/utils.hpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#pragma once

#include <stdexcept>
#include <vector>

std::pair<int, int> GetNumbersOfSum(const std::vector<int>& numbers, int sum);
5 changes: 3 additions & 2 deletions additional_tasks/temperature/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
cmake_minimum_required(VERSION 3.10)

set(PROJECT_NAME days_before_warmup)
project(${PROJECT_NAME})
get_filename_component(PROJECT_NAME ${CMAKE_CURRENT_LIST_DIR} NAME)
string(REPLACE " " "_" PROJECT_NAME ${PROJECT_NAME})
project(${PROJECT_NAME} C CXX)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
Expand Down
42 changes: 40 additions & 2 deletions additional_tasks/temperature/src/utils.cpp
Original file line number Diff line number Diff line change
@@ -1,8 +1,46 @@
#include "utils.hpp"

#include <algorithm>
#include <stack>
#include <utility>

struct Day {
float temperature;
int index;
Day(float temperature, int index) : temperature{temperature}, index{index} {}
};

std::vector<int> CalculateDaysBeforWarmup(
const std::vector<float>& temerature) {
return {};
const std::vector<float>& temperature) {
const size_t size = temperature.size();
std::stack<Day> add_stack;
std::vector<int> res(size);

for (int i = size - 1; i > -1; --i) {
if (add_stack.empty()) {
add_stack.push(Day(temperature.at(i), i));
res[i] = 0;
continue;
}
if (temperature[i] < add_stack.top().temperature) {
res[i] = add_stack.top().index - i;
add_stack.push(Day(temperature.at(i), i));
continue;
}
if (temperature[i] >= add_stack.top().temperature) {
while (!add_stack.empty() &&
temperature[i] > add_stack.top().temperature) {
add_stack.pop();
}
if (add_stack.empty()) {
add_stack.push(Day(temperature.at(i), i));
res[i] = 0;
continue;
}
res[i] = add_stack.top().index - i;
add_stack.push(Day(temperature.at(i), i));
continue;
}
}
return res;
}
11 changes: 6 additions & 5 deletions sandbox/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
cmake_minimum_required(VERSION 3.10)

set(PROJECT_NAME sandbox)
project(${PROJECT_NAME})
get_filename_component(PROJECT_NAME ${CMAKE_CURRENT_LIST_DIR} NAME)
string(REPLACE " " "_" PROJECT_NAME ${PROJECT_NAME})
project(${PROJECT_NAME} C CXX)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
Expand All @@ -24,11 +25,11 @@ find_package(GTest REQUIRED)
include_directories(${GTEST_INCLUDE_DIRS})

# Link runTests with what we want to test and the GTest and pthread library
add_executable(sandbox_tests ${test_source_list})
add_executable(${PROJECT_NAME}_tests ${test_source_list})
target_link_libraries(
sandbox_tests
${PROJECT_NAME}_tests
GTest::gtest_main
)

include(GoogleTest)
gtest_discover_tests(sandbox_tests)
gtest_discover_tests(${PROJECT_NAME}_tests)
20 changes: 19 additions & 1 deletion sandbox/src/main.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,22 @@
#include <math.h>

#include <iostream>
#include <vector>

int main() { return 0; }
int divCount(int n) {
for (int j = 2; j <= n / 5 + 1; ++j) {
if (n % static_cast<int>(pow(5, j)) != 0) return j - 1;
}
return n / 5;
}

int main() {
int n;
std::cin >> n;
int res = 0;
for (int i = 5; i <= n; i += 5) {
res += divCount(i);
}
std::cout << res;
return 0;
}
5 changes: 3 additions & 2 deletions task_01/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
cmake_minimum_required(VERSION 3.10)

set(PROJECT_NAME task_01)
project(${PROJECT_NAME})
get_filename_component(PROJECT_NAME ${CMAKE_CURRENT_LIST_DIR} NAME)
string(REPLACE " " "_" PROJECT_NAME ${PROJECT_NAME})
project(${PROJECT_NAME} C CXX)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
Expand Down
27 changes: 22 additions & 5 deletions task_01/src/stack.cpp
Original file line number Diff line number Diff line change
@@ -1,21 +1,38 @@
#include "stack.hpp"

#include <algorithm>
#include <stdexcept>

void Stack::Push(int value) { data_.push(value); }
void Stack::Push(int value) { data_.push_back(value); }

int Stack::Pop() {
auto result = data_.top();
data_.pop();
if (data_.empty()) throw std::out_of_range{"Empty stack"};
auto result = data_.back();
data_.pop_back();
return result;
}

void MinStack::Push(int value) { data_.push_back(value); }
bool Stack::IsEmpty() { return data_.empty(); }

void MinStack::Push(int value) {
if (minimums_.IsEmpty()) {
minimums_.Push(value);
} else if (value <= data_.back()) {
minimums_.Push(value);
}
data_.push_back(value);
}

int MinStack::Pop() {
if (data_.empty()) throw std::out_of_range{"Empty stack"};
auto result = data_.back();
data_.pop_back();
if (result == minimums_.GetLast()) {
minimums_.Pop();
}
return result;
}

int MinStack::GetMin() { return *std::min_element(data_.begin(), data_.end()); }
int Stack::GetLast() { return data_.back(); }

int MinStack::GetMin() { return minimums_.GetLast(); }
20 changes: 11 additions & 9 deletions task_01/src/stack.hpp
Original file line number Diff line number Diff line change
@@ -1,23 +1,25 @@
#pragma once

#include <stack>
#include <vector>

class Stack {
public:
void Push(int value);
int Pop();
virtual void Push(int value);
virtual int Pop();
bool IsEmpty();

private:
std::stack<int> data_;
int GetLast();

protected:
std::vector<int> data_;
};

class MinStack {
class MinStack : Stack {
public:
void Push(int value);
int Pop();
void Push(int value) override;
int Pop() override;
int GetMin();

private:
std::vector<int> data_;
Stack minimums_;
};
13 changes: 13 additions & 0 deletions task_01/src/test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,4 +39,17 @@ TEST(MinStackTest, Simple) {
ASSERT_EQ(stack.GetMin(), 1);
ASSERT_EQ(stack.Pop(), 3); // Stack [1]
ASSERT_EQ(stack.Pop(), 1); // Stack []
}

TEST(StackTest, Additional) {
Stack stack;
stack.Push(9); // Stack [9]
stack.Push(-3); // Stack [9, -3]
stack.Push(2); // Stack [9, 3, 2]
ASSERT_EQ(stack.GetLast(), 2); // Stack [9, 3, 2]
stack.Push(5);
stack.Push(4);
stack.Push(4);
stack.Pop();
ASSERT_EQ(stack.GetLast(), 4);
}
5 changes: 3 additions & 2 deletions task_02/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
cmake_minimum_required(VERSION 3.10)

set(PROJECT_NAME task_02)
project(${PROJECT_NAME})
get_filename_component(PROJECT_NAME ${CMAKE_CURRENT_LIST_DIR} NAME)
string(REPLACE " " "_" PROJECT_NAME ${PROJECT_NAME})
project(${PROJECT_NAME} C CXX)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
Expand Down
15 changes: 0 additions & 15 deletions task_02/src/heap.cpp

This file was deleted.

Loading