Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
32 changes: 21 additions & 11 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,43 +1,53 @@
dist: xenial
sudo: required

language: cpp

os:
- linux
- osx
# - windows

compiler:
- gcc
- clang

env:
- TARGET_CPU=amd64 BUILD_CONFIGURATION=Debug
# - TARGET_CPU=amd64 BUILD_CONFIGURATION=Debug
- TARGET_CPU=amd64 BUILD_CONFIGURATION=Release
- TARGET_CPU=x86 BUILD_CONFIGURATION=Debug
# - TARGET_CPU=x86 BUILD_CONFIGURATION=Debug
- TARGET_CPU=x86 BUILD_CONFIGURATION=Release

matrix:
exclude:
- os: osx
compiler: gcc

# - os: windows
# compiler: gcc

- os: osx
env: TARGET_CPU=x86 BUILD_CONFIGURATION=Debug
env: TARGET_CPU=amd64 BUILD_CONFIGURATION=Release

- os: osx
env: TARGET_CPU=x86 BUILD_CONFIGURATION=Release

linux: &linux
os: linux
sudo: required
language: python
python: "3.7"

install:
- sudo apt-get update -qq
- sudo apt-get install python3-pip -y
- sudo apt-get install python3-setuptools -y
- sudo python3 -m pip install --upgrade pip
- sudo python3 -m pip install conan
- conan user
- conan --version
- conan remote add bincrafters https://api.bintray.com/conan/bincrafters/public-conan

script:
- cmake --version
- mkdir build
- cd build
- conan install .. -s compiler.libcxx=libstdc++11 --build=missing
- cmake .. -DCMAKE_BUILD_TYPE=$BUILD_CONFIGURATION -DTARGET_CPU=$TARGET_CPU
- cmake --build .
- ctest -C Debug
- cmake --build . --config Release
# - ctest -C Debug
- ctest -C Release
59 changes: 11 additions & 48 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,61 +1,24 @@
project(algorithms)
cmake_minimum_required(VERSION 2.8.11)
cmake_minimum_required(VERSION 3.10)

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR})

set(CMAKE_CXX_STANDARD 11)

message(STATUS "cmake module path: ${CMAKE_MODULE_PATH}")

# download and unpack googletest at configure time
configure_file(CMakeLists.txt.in googletest-download/CMakeLists.txt)

execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .
RESULT_VARIABLE result
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/googletest-download)

if(result)
message(FATAL_ERROR "CMake step for googletest failed: ${result}")
endif()

execute_process(COMMAND ${CMAKE_COMMAND} --build .
RESULT_VARIABLE result
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/googletest-download )
if(result)
message(FATAL_ERROR "Build step for googletest failed: ${result}")
endif()
include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
conan_basic_setup(TARGETS)

set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
set_property(GLOBAL PROPERTY USE_FOLDERS ON)

add_subdirectory("${CMAKE_BINARY_DIR}/googletest-src" "${CMAKE_BINARY_DIR}/googletest-build")
message(STATUS "cmake module path: ${CMAKE_MODULE_PATH}")

if (CMAKE_VERSION VERSION_LESS 2.8.11)
include_directories("${gtest_SOURCE_DIR}/include")
endif()
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

enable_testing()

include(Sources)

add_library(algorithms_on_strings STATIC ${ALGORITHMS_ON_STRINGS_LIB_SRC})
target_include_directories(algorithms_on_strings
PUBLIC
algorithms_on_strings/longest_common_substring)

SET(GTEST_LIBS gtest gtest_main)
SET(STRING_ALGO_LIBS algorithms_on_strings)

add_library(sorting_algorithms STATIC ${SORTING_ALGORITHMS_LIB_SRC})
target_include_directories(sorting_algorithms
PUBLIC
sorting_algorithms/quick_sort)
set_property(TARGET sorting_algorithms PROPERTY LINKER_LANGUAGE CXX)

SET(SORTING_ALGO_LIBS sorting_algorithms)

add_executable(smoke-test-longest-substring tests/smoke-test-longest-substring.cpp)
target_link_libraries(smoke-test-longest-substring ${GTEST_LIBS} ${STRING_ALGO_LIBS} ${SORTING_ALGO_LIBS})
add_subdirectory(algorithms_on_strings)
add_subdirectory(sorting_algorithms)
add_subdirectory(tests)

add_test(NAME longest-substring-test COMMAND smoke-test-longest-substring)


15 changes: 0 additions & 15 deletions CMakeLists.txt.in

This file was deleted.

10 changes: 0 additions & 10 deletions Sources.cmake

This file was deleted.

14 changes: 14 additions & 0 deletions algorithms_on_strings/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
project(strings-lib)
cmake_minimum_required(VERSION 3.10)

set(ALGORITHMS_ON_STRINGS_LIB_SRC
longest_common_substring/LongestSubstring.h
longest_common_substring/LongestSubstring.cpp
)

add_library(${PROJECT_NAME} STATIC ${ALGORITHMS_ON_STRINGS_LIB_SRC})
target_include_directories(${PROJECT_NAME}
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/longest_common_substring>)

set_property(TARGET ${PROJECT_NAME} PROPERTY LINKER_LANGUAGE CXX)
Original file line number Diff line number Diff line change
@@ -1,12 +1,51 @@
#include "LongestSubstring.h"

int main() {
char str[30], str1[30], str2[30];
scanf("%s", str);
scanf("%s", str1);
void findLongestSubstring(const char a[], const char b[], char res[]) {
size_t i, j, k, len_a, len_b, substr_i, max_substr;
size_t** matrix;

findLongestSubstring(str, str1, str2);
printf("%s\n", str2);
for(i = 0; a[i] != '\0'; i++);
len_a = i;

return 0;
for(j = 0; b[j] != '\0'; j++);
len_b = j;

matrix = (size_t**)malloc((len_a + 1) * sizeof(size_t*));

for(i = 0; i < len_a; i++) {
matrix[i] = (size_t*)malloc((len_b + 1) * sizeof(size_t));
for(j = 0; j < len_b; j++) {
matrix[i][j] = 0;
}
}
printf("\n");

max_substr = 0;
substr_i = 0;

for(i = 0; i < len_a; i++) {
for(j = 0; j < len_b; j++) {
if(a[i] == b[j]) {
if((0 == i) || (0 == j))
matrix[i][j] = 1;
else
matrix[i][j] = matrix[i - 1][j - 1] + 1;
if(matrix[i][j] > max_substr) {
max_substr = matrix[i][j];
substr_i = i;
}
else if(matrix[i][j] == max_substr)
substr_i = i;
}
else
matrix[i][j] = 0;
}
}

k = 0;
for(i = (substr_i - max_substr + 1); i <= substr_i; i++) {
res[k] = a[i];
k++;
}
res[k] = '\0';
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,52 +2,4 @@
#include <stdio.h>
#include <stdlib.h>

void findLongestSubstring(const char a[], const char b[], char res[]) {
size_t i, j, k, len_a, len_b, substr_i, max_substr;
size_t** matrix;

for(i = 0; a[i] != '\0'; i++);
len_a = i;

for(j = 0; b[j] != '\0'; j++);
len_b = j;

matrix = (size_t**)malloc((len_a + 1) * sizeof(size_t*));

for(i = 0; i < len_a; i++) {
matrix[i] = (size_t*)malloc((len_b + 1) * sizeof(size_t));
for(j = 0; j < len_b; j++) {
matrix[i][j] = 0;
}
}
printf("\n");

max_substr = 0;
substr_i = 0;

for(i = 0; i < len_a; i++) {
for(j = 0; j < len_b; j++) {
if(a[i] == b[j]) {
if((0 == i) || (0 == j))
matrix[i][j] = 1;
else
matrix[i][j] = matrix[i - 1][j - 1] + 1;
if(matrix[i][j] > max_substr) {
max_substr = matrix[i][j];
substr_i = i;
}
else if(matrix[i][j] == max_substr)
substr_i = i;
}
else
matrix[i][j] = 0;
}
}

k = 0;
for(i = (substr_i - max_substr + 1); i <= substr_i; i++) {
res[k] = a[i];
k++;
}
res[k] = '\0';
}
void findLongestSubstring(const char a[], const char b[], char res[]);
14 changes: 14 additions & 0 deletions appveyor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,29 @@ platform:
- x64

environment:
PYTHON: "C:\\Python37-x64"
PYTHON_VERSION: "3.7.2"
PYTHON_ARCH: "64"

matrix:
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
CMAKE_GENERATOR: -G"Visual Studio 14 2015 Win64"
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
CMAKE_GENERATOR: -G"Visual Studio 15 2017 Win64"

install:
- echo "Downloading conan..."
- set PATH=%PATH%;%PYTHON%/Scripts/
- python -m pip install --upgrade pip
- pip3.exe install conan
- conan user
- conan --version
- conan remote add bincrafters https://api.bintray.com/conan/bincrafters/public-conan

build_script:
- mkdir build
- cd build
- conan install ..
- cmake %CMAKE_GENERATOR% ../
- cmake --build . --config Release
- ctest -C Release
8 changes: 8 additions & 0 deletions conanfile.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
[requires]
gtest/1.8.1@bincrafters/stable

[options]
gtest:shared=False

[generators]
cmake
16 changes: 16 additions & 0 deletions sorting_algorithms/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
project(sorting-algo-lib)
cmake_minimum_required(VERSION 3.10)

set(SORTING_ALGORITHMS_LIB_SRC
quick_sort/parallel_and_sequential_quick_sort.cpp
quick_sort/qsort_test.cpp
quick_sort/template_qsort.h
)

add_library(sorting_algorithms STATIC ${SORTING_ALGORITHMS_LIB_SRC})
target_include_directories(sorting_algorithms
PRIVATE
sorting_algorithms/quick_sort)
set_property(TARGET sorting_algorithms PROPERTY LINKER_LANGUAGE CXX)

SET(SORTING_ALGO_LIBS sorting_algorithms)
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ std::list<T> parallel_quick_sort(std::list<T> input) {
return result;
}

int main() {
int parallel_qsort_test() {
std::list<int> list1 = {4, 2, 1, 5, 8, 9, 7};
std::list<int> sorted1 = sequential_quick_sort(list1);
std::list<int> sorted2 = parallel_quick_sort(list1);
Expand Down
2 changes: 1 addition & 1 deletion sorting_algorithms/quick_sort/qsort_test.cpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#include "template_qsort.h"

int main() {
void qsort_test() {
std::array<uint32_t, 10> arr{ 14, 1, 5, 16, 2, 16, 2, 2, 14, 10 };
qsort_v1<arr.size()>(arr, 0, arr.size()-1);
}
23 changes: 23 additions & 0 deletions tests/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
project(strings-test)
cmake_minimum_required(VERSION 3.10)

add_executable(${PROJECT_NAME}
smoke-test-longest-substring.cpp
)

add_dependencies(${PROJECT_NAME} strings-lib)

message(STATUS "cmake current source dir: ${CMAKE_CURRENT_SOURCE_DIR}")

target_include_directories(${PROJECT_NAME}
PRIVATE
${CONAN_INCLUDE_DIRS_GTEST}
${CMAKE_CURRENT_SOURCE_DIR})

target_link_libraries(${PROJECT_NAME}
PRIVATE
strings-lib
CONAN_PKG::gtest)

add_test(NAME ${PROJECT_NAME} COMMAND ${PROJECT_NAME})

Loading