Skip to content

Commit

Permalink
deploy: 346a3fe
Browse files Browse the repository at this point in the history
  • Loading branch information
tolstenko committed Oct 24, 2024
0 parents commit bbff9a2
Show file tree
Hide file tree
Showing 544 changed files with 63,827 additions and 0 deletions.
Empty file added .nojekyll
Empty file.
1 change: 1 addition & 0 deletions 404.html

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions CNAME
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
courses.tolstenko.net
7 changes: 7 additions & 0 deletions advanced/01-introduction/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
subdirlist(activity_dir ${CMAKE_CURRENT_SOURCE_DIR})

foreach(subdir ${activity_dir})
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${subdir}/CMakeLists.txt")
add_subdirectory(${subdir})
endif()
endforeach()
14 changes: 14 additions & 0 deletions advanced/01-introduction/actvities/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
file(GLOB adv_intro_src CONFIGURE_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp)

enable_testing()

add_executable(adv-01-intro ${adv_intro_src})
include(${doctest_SOURCE_DIR}/scripts/cmake/doctest.cmake)
target_include_directories(adv-01-intro PUBLIC ${DOCTEST_INCLUDE_DIR})
target_link_libraries(adv-01-intro doctest::doctest)
doctest_discover_tests(adv-01-intro)

if(ENABLE_TEST_COVERAGE)
target_compile_options(adv-01-intro PUBLIC -O0 -g -fprofile-arcs -ftest-coverage)
target_link_options(adv-01-intro PUBLIC -fprofile-arcs -ftest-coverage)
endif()
25 changes: 25 additions & 0 deletions advanced/01-introduction/actvities/main.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN
#include <doctest/doctest.h>
using namespace std;

// create a function that allocates memory on the heap and returns a raw pointer to it
char* allocateMemoryAndClear(int numBytes, char value) {
// implement this function
}

// create a function that deallocates memory on the heap
void deallocateMemory(char*& ptr) {
// implement this function
}


// DO NOT CHANGE THE CODE BELOW THIS LINE
TEST_CASE("allocateMemory") {
char* ptr = allocateMemoryAndClear(3, 'u');
CHECK(ptr != nullptr);
CHECK(ptr[0] == 'u');
CHECK(ptr[1] == 'u');
CHECK(ptr[2] == 'u');
deallocateMemory(ptr);
CHECK(ptr == nullptr);
}
74 changes: 74 additions & 0 deletions advanced/01-introduction/index.html

Large diffs are not rendered by default.

12 changes: 12 additions & 0 deletions advanced/01-introduction/setup/index.html

Large diffs are not rendered by default.

Binary file added advanced/02-oop/img.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added advanced/02-oop/img_1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added advanced/02-oop/img_2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
190 changes: 190 additions & 0 deletions advanced/02-oop/index.html

Large diffs are not rendered by default.

251 changes: 251 additions & 0 deletions advanced/03-pointers/index.html

Large diffs are not rendered by default.

Binary file added advanced/04-operators/img.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
164 changes: 164 additions & 0 deletions advanced/04-operators/index.html

Large diffs are not rendered by default.

7 changes: 7 additions & 0 deletions advanced/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
subdirlist(advcpp_chapters ${CMAKE_CURRENT_SOURCE_DIR})

foreach(subdir ${advcpp_chapters})
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${subdir}/CMakeLists.txt")
add_subdirectory(${subdir})
endif()
endforeach()
12 changes: 12 additions & 0 deletions advanced/index.html

Large diffs are not rendered by default.

12 changes: 12 additions & 0 deletions algorithms/01-introduction/index.html

Large diffs are not rendered by default.

Binary file added algorithms/02-analysis/img.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added algorithms/02-analysis/img_1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added algorithms/02-analysis/img_2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added algorithms/02-analysis/img_3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
58 changes: 58 additions & 0 deletions algorithms/02-analysis/index.html

Large diffs are not rendered by default.

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
107 changes: 107 additions & 0 deletions algorithms/03-dynamic-data/index.html

Large diffs are not rendered by default.

48 changes: 48 additions & 0 deletions algorithms/04-sorting/index.html

Large diffs are not rendered by default.

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added algorithms/05-divide-and-conquer/img.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added algorithms/05-divide-and-conquer/img_1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added algorithms/05-divide-and-conquer/img_2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added algorithms/05-divide-and-conquer/img_3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added algorithms/05-divide-and-conquer/img_4.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
233 changes: 233 additions & 0 deletions algorithms/05-divide-and-conquer/index.html

Large diffs are not rendered by default.

Binary file added algorithms/06-hashtables/img.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added algorithms/06-hashtables/img_1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added algorithms/06-hashtables/img_2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added algorithms/06-hashtables/img_3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added algorithms/06-hashtables/img_4.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added algorithms/06-hashtables/img_5.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
419 changes: 419 additions & 0 deletions algorithms/06-hashtables/index.html

Large diffs are not rendered by default.

Binary file added algorithms/06-hashtables/kitten-cat.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
12 changes: 12 additions & 0 deletions algorithms/07-midterm/index.html

Large diffs are not rendered by default.

Binary file added algorithms/08-stack-and-queue/Queue.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added algorithms/08-stack-and-queue/img_1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
120 changes: 120 additions & 0 deletions algorithms/08-stack-and-queue/index.html

Large diffs are not rendered by default.

Binary file added algorithms/08-stack-and-queue/stack.gif
12 changes: 12 additions & 0 deletions algorithms/09-break/index.html

Large diffs are not rendered by default.

Binary file added algorithms/10-graphs/img.png
Binary file added algorithms/10-graphs/img_1.png
Binary file added algorithms/10-graphs/img_2.png
Binary file added algorithms/10-graphs/img_3.png
185 changes: 185 additions & 0 deletions algorithms/10-graphs/index.html

Large diffs are not rendered by default.

Binary file added algorithms/11-dijkstra/img.png
Binary file added algorithms/11-dijkstra/img_1.png
Binary file added algorithms/11-dijkstra/img_2.png
130 changes: 130 additions & 0 deletions algorithms/11-dijkstra/index.html

Large diffs are not rendered by default.

465 changes: 465 additions & 0 deletions algorithms/12-mst/index.html

Large diffs are not rendered by default.

Binary file added algorithms/13-bst/img.png
12 changes: 12 additions & 0 deletions algorithms/13-bst/index.html

Large diffs are not rendered by default.

12 changes: 12 additions & 0 deletions algorithms/14-heap/index.html

Large diffs are not rendered by default.

12 changes: 12 additions & 0 deletions algorithms/15-project/index.html

Large diffs are not rendered by default.

12 changes: 12 additions & 0 deletions algorithms/16-finals/index.html

Large diffs are not rendered by default.

12 changes: 12 additions & 0 deletions algorithms/index.html

Large diffs are not rendered by default.

12 changes: 12 additions & 0 deletions artificialintelligence/00-introduction/index.html

Large diffs are not rendered by default.

12 changes: 12 additions & 0 deletions artificialintelligence/01-pcg/WaveFunctionCollapse/index.html

Large diffs are not rendered by default.

48 changes: 48 additions & 0 deletions artificialintelligence/01-pcg/index.html

Large diffs are not rendered by default.

12 changes: 12 additions & 0 deletions artificialintelligence/02-sm/index.html

Large diffs are not rendered by default.

12 changes: 12 additions & 0 deletions artificialintelligence/03-boardgames/index.html

Large diffs are not rendered by default.

257 changes: 257 additions & 0 deletions artificialintelligence/04-spatialhashing/index.html

Large diffs are not rendered by default.

198 changes: 198 additions & 0 deletions artificialintelligence/05-kdtree/index.html

Large diffs are not rendered by default.

301 changes: 301 additions & 0 deletions artificialintelligence/06-pathfinding/index.html

Large diffs are not rendered by default.

12 changes: 12 additions & 0 deletions artificialintelligence/07-automatedtesting/index.html

Large diffs are not rendered by default.

12 changes: 12 additions & 0 deletions artificialintelligence/09-minmax/index.html

Large diffs are not rendered by default.

38 changes: 38 additions & 0 deletions artificialintelligence/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
function(add_custom_test TEST_NAME TEST_EXECUTABLE TEST_INPUT_LIST TEST_EXPECTED_OUTPUT_LIST)
list(LENGTH TEST_INPUT_LIST num_tests)

MATH(EXPR num_tests "${num_tests} - 1")
message(STATUS "Adding ${num_tests} tests for ${TEST_NAME}.")

set(TEST_COMMANDS "")
foreach(index RANGE 0 ${num_tests})
list(GET TEST_INPUT_LIST ${index} TEST_INPUT)
list(GET TEST_EXPECTED_OUTPUT_LIST ${index} TEST_EXPECTED_OUTPUT)

list(APPEND TEST_COMMANDS
COMMAND ${CMAKE_COMMAND} -E echo "Running test: ${TEST_NAME}_${index}. Using input file: ${TEST_INPUT}"
COMMAND ${CMAKE_COMMAND} -E cat ${TEST_INPUT}
COMMAND ${CMAKE_COMMAND} -E echo "=================================="
COMMAND ${CMAKE_COMMAND} -E echo "Expected Output from ${TEST_NAME}_${index}:"
COMMAND ${CMAKE_COMMAND} -E cat ${TEST_EXPECTED_OUTPUT}
COMMAND ${CMAKE_COMMAND} -E echo "=================================="
COMMAND ${TEST_EXECUTABLE} < ${TEST_INPUT} > test_output_${index}.txt
COMMAND ${CMAKE_COMMAND} -E echo "Actual Output from ${TEST_NAME}_${index}:"
COMMAND ${CMAKE_COMMAND} -E cat test_output_${index}.txt
COMMAND ${CMAKE_COMMAND} -E echo "=================================="
COMMAND ${CMAKE_COMMAND} -E compare_files ${TEST_EXPECTED_OUTPUT} test_output_${index}.txt
COMMAND ${CMAKE_COMMAND} -E echo "Test ${TEST_NAME}_${index} passed."
)
endforeach()

add_custom_target(${TEST_NAME}
${TEST_COMMANDS}
DEPENDS ${TEST_EXECUTABLE}
)
endfunction()

add_subdirectory(assignments/flocking)
add_subdirectory(assignments/maze)
add_subdirectory(assignments/life)
add_subdirectory(assignments/rng)
add_subdirectory(assignments/catchthecat)
12 changes: 12 additions & 0 deletions artificialintelligence/animation/index.html

Large diffs are not rendered by default.

6 changes: 6 additions & 0 deletions artificialintelligence/assignments/catchthecat/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
add_executable(ai-catchthecat simulator.cpp)

file(GLOB TEST_INPUT_FILES ${CMAKE_CURRENT_SOURCE_DIR}/tests/*.in)
file(GLOB TEST_OUTPUT_FILES ${CMAKE_CURRENT_SOURCE_DIR}/tests/*.out)

add_custom_test(ai-catchthecat-test ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ai-catchthecat "${TEST_INPUT_FILES}" "${TEST_OUTPUT_FILES}")
10 changes: 10 additions & 0 deletions artificialintelligence/assignments/catchthecat/Cat.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#ifndef CAT_h
#define CAT_h
#include "IAgent.h"

struct Cat : public IAgent {
std::pair<int,int> move(const std::vector<bool>& world, std::pair<int,int> catPos, int sideSize ) override{
return {0,0}; // todo: change this
}
};
#endif
10 changes: 10 additions & 0 deletions artificialintelligence/assignments/catchthecat/Catcher.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#ifndef CATCHER_H
#define CATCHER_H
#include "IAgent.h"

struct Catcher : public IAgent {
std::pair<int,int> move(const std::vector<bool>& world, std::pair<int,int> catPos, int sideSize ) override{
return {0,0}; // todo: change this
}
};
#endif
21 changes: 21 additions & 0 deletions artificialintelligence/assignments/catchthecat/IAgent.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#ifndef IAgent_h
#define IAgent_h
#include <vector>
#include <utility>
#include <string>

// NO NOT CHANGE THIS FILE
struct IAgent {
public:
/**
* @brief the agent implementation. the center of the world is {0,0}, top left is {-sideSize/2, -sideSize/2} and the bottom right is {sideSize/2, sideSize/2}.
*
* @param world the world as a vector of booleans. true means there is a wall, false means there is no wall. The vector is the linearization of the matrix of the world.
* @param catPos the position of the cat in the world {x,y} relative to the center of the world.
* @param sideSize the side size of the world. it will be always a square that follows the sequence of 4*i+1: 5, 9, 13, 17, 21, 25, 29, 33, 37, 41, ...
*
* @return the position to move to {x,y}. relative to the center of the world.
*/
virtual std::pair<int,int> move(const std::vector<bool>& world, std::pair<int,int> catPos, int sideSize ) = 0;
};
#endif
59 changes: 59 additions & 0 deletions artificialintelligence/assignments/catchthecat/index.html

Large diffs are not rendered by default.

67 changes: 67 additions & 0 deletions artificialintelligence/assignments/catchthecat/simulator.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
// DO NOT SUBMIT THIS FILE
// IMPROVE THIS SIMULATOR FOR YOUR OWN USE
// this code is not well tested, use as entry point for your own simulator
#include <iostream>
#include <vector>
#include "Cat.h"
#include "Catcher.h"

void print(const std::vector<bool>& state, int sideSize, std::pair<int,int> catPos, const std::string& turn){
std::cout << turn << " " << sideSize << " " << catPos.first << " " << catPos.second << std::endl;
catPos.first += sideSize/2;
catPos.second += sideSize/2;
auto catPosIndex = catPos.second * sideSize + catPos.first;
for(int y=0; y<sideSize; y++) {
if (y % 2 == 1) std::cout << ' ';
for (int x = 0; x < sideSize; x++) {
if(y * sideSize + x == catPosIndex) {
std::cout << 'C';
} else
std::cout << (state[y * sideSize + x] ? '#' : '.');
if (x < sideSize - 1) std::cout << ' ';
}
std::cout << std::endl;
}
}

std::vector<bool> readBoard(int sideSize) {
std::vector<bool> board;
board.reserve(sideSize*sideSize);
for(int i=0; i<sideSize*sideSize; i++) {
char c;
std::cin >> c;
switch (c) {
case '#':
board.push_back(true);
break;
case '.':
case 'C':
board.push_back(false);
break;
default:
i--;
break;
}
}
return board;
}

int main() {
std::string turn;
int sideSize;
int catX, catY;
std::vector<bool> blocked;
std::cin >> turn >> sideSize >> catX >> catY;
blocked = readBoard(sideSize);
// while(not win){ simulate; } // todo: create your own logic to test and simulate, check for win conditions etc.
if(turn == "CAT"){
Cat cat;
auto catMove = cat.move(blocked, {catX, catY}, sideSize);
print(blocked, sideSize, {catMove.first, catMove.second}, "CATCHER");
} else if (turn == "CATCHER") {
Catcher catcher;
auto catcherMove = catcher.move(blocked, {catX, catY}, sideSize);
blocked[(catcherMove.second + sideSize/2) * sideSize + catcherMove.first+sideSize/2] = true;
print(blocked, sideSize, {catX, catY}, "CATCHER");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
CAT 5 0 0
. . . . .
. # # . .
. # C . .
. # # . .
. . . . .
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
CATCHER 5 1 0
. . . . .
. # # . .
. # . C .
. # # . .
. . . . .
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
CAT 5 0 0
. . . . .
. # # . .
. # C # .
. # . . .
. . . . .
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
CATCHER 5 0 1
. . . . .
. # # . .
. # . # .
. # C . .
. . . . .
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
CAT 5 0 0
. . . . .
. # # . .
. # C # .
. . # . .
. . . . .
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
CATCHER 5 -1 1
. . . . .
. # # . .
. # . # .
. C # . .
. . . . .
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
CAT 5 0 0
. . . . .
. # # . .
. . C # .
. # # . .
. . . . .
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
CATCHER 5 -1 0
. . . . .
. # # . .
. C . # .
. # # . .
. . . . .
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
CAT 5 0 0
. . . . .
. # # . .
. . C # .
. # # . .
. . . . .
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
CATCHER 5 -1 0
. . . . .
. # # . .
. C . # .
. # # . .
. . . . .
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
CAT 5 0 0
. . . . .
. . # . .
. # C # .
. # # . .
. . . . .
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
CATCHER 5 -1 -1
. . . . .
. C # . .
. # . # .
. # # . .
. . . . .
7 changes: 7 additions & 0 deletions artificialintelligence/assignments/flocking/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
add_executable(ai-flocking flocking.cpp)

file(GLOB TEST_INPUT_FILES ${CMAKE_CURRENT_SOURCE_DIR}/tests/*.in)
file(GLOB TEST_OUTPUT_FILES ${CMAKE_CURRENT_SOURCE_DIR}/tests/*.out)

add_custom_test(ai-flocking-test ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/flocking "${TEST_INPUT_FILES}" "${TEST_OUTPUT_FILES}")

Loading

0 comments on commit bbff9a2

Please sign in to comment.