From 60e3d482e4fc9cfc059e091117c5b897e1cb7074 Mon Sep 17 00:00:00 2001 From: adjoly Date: Wed, 4 Jun 2025 14:05:48 +0200 Subject: [PATCH] =?UTF-8?q?=E3=80=8C=E2=9C=A8=E3=80=8D=20feat:=20finished?= =?UTF-8?q?=20ex02?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ex02/Makefile | 60 ++++++++++++++++++++ ex02/PmergeMe | Bin 0 -> 115704 bytes ex02/PmergeMe.cpp | 140 ++++++++++++++++++++++++++++++++++++++++++++++ ex02/PmergeMe.hpp | 36 ++++++++++++ ex02/RPN | Bin 0 -> 82160 bytes ex02/main.cpp | 34 +++++++++++ 6 files changed, 270 insertions(+) create mode 100644 ex02/Makefile create mode 100755 ex02/PmergeMe create mode 100644 ex02/PmergeMe.cpp create mode 100644 ex02/PmergeMe.hpp create mode 100755 ex02/RPN create mode 100644 ex02/main.cpp diff --git a/ex02/Makefile b/ex02/Makefile new file mode 100644 index 0000000..9aa28a1 --- /dev/null +++ b/ex02/Makefile @@ -0,0 +1,60 @@ +# **************************************************************************** # +# # +# ::: :::::::: # +# Makefile :+: :+: :+: # +# +:+ +:+ +:+ # +# By: adjoly +#+ +:+ +#+ # +# +#+#+#+#+#+ +#+ # +# Created: 2024/10/25 16:09:27 by adjoly #+# #+# # +# Updated: 2025/06/04 13:35:49 by adjoly ### ########.fr # +# # +# **************************************************************************** # + +SHELL = bash + +NAME = PmergeMe + +CC = clang++ + +OBJSDIR = obj/ + +SRCS = $(shell find . -name '*.cpp') + +OBJS = $(addprefix $(OBJSDIR), $(SRCS:.cpp=.o)) + +FLAGS = -Wall -Werror -Wextra -std=c++98 -MMD -MP + +RED = \033[0;31m +GREEN = \033[0;32m +YELLOW = \033[1;33m +PURPLE = \e[0;35m +NC = \033[0m +DELETE = \x1B[2K\r + +ifeq ($(VERBOSE),true) + FLAGS += -D VERBOSE +endif + +all: $(NAME) + +$(NAME): $(OBJS) + @$(CC) $(FLAGS) -I . $(OBJS) -o $(NAME) + @printf "$(YELLOW)「✨」($(NAME)) Program compiled\n" + +$(OBJSDIR)%.o: %.cpp + @mkdir -p $(@D) + @$(CC) $(FLAGS) -I . -c $< -o $@ + @printf "$(DELETE)$(GREEN)「🔨」($<) Object compiled\n" + +clean: + @rm -f $(OBJS) + @printf "$(DELETE)$(RED)「🗑️」($(OBJS)) Object deleted\n" + +fclean: clean + @rm -f $(NAME) + @rm -Rf $(OBJSDIR) + @printf "$(RED)「🗑️」($(NAME)) Program deleted\n" + +re: fclean all + +.PHONY: clean fclean all re diff --git a/ex02/PmergeMe b/ex02/PmergeMe new file mode 100755 index 0000000000000000000000000000000000000000..e6a6e6b9acc5011d0753dab9eba6354b054c4081 GIT binary patch literal 115704 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 +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/06/04 13:28:23 by adjoly #+# #+# */ +/* Updated: 2025/06/04 14:05:14 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include +#include +#include +#include +#include +#include + +std::vector parseInput(int argc, char **argv) { + std::set seen; + std::vector result; + + for (int i = 1; i < argc; ++i) { + std::istringstream iss(argv[i]); + int value; + if (!(iss >> value) || value < 0) { + throw std::runtime_error("Invalid input: " + std::string(argv[i])); + } + if (!seen.insert(value).second) { + throw std::runtime_error("Duplicate value: " + + std::string(argv[i])); + } + result.push_back(value); + } + return result; +} + +template void printContainer(const Container &container) { + for (auto it = range(container)) { + std::cout << *it << " "; + } + std::cout << std::endl; +} + +// Measure time and run sorting for vector and deque +void sortAndTime(std::vector &vec, std::deque &deq) { + auto vecStart = std::clock(); + _fordJohnsonSort(vec); + auto vecEnd = std::clock(); + + auto deqStart = std::clock(); + _fordJohnsonSort(deq); + auto deqEnd = std::clock(); + + std::cout << "After: "; + printContainer(vec); + + double vecDuration = 1000000.0 * (vecEnd - vecStart) / CLOCKS_PER_SEC; + double deqDuration = 1000000.0 * (deqEnd - deqStart) / CLOCKS_PER_SEC; + + std::cout << "Time to process a range of " << vec.size() + << " elements with std::vector : " << vecDuration << " us" + << std::endl; + + std::cout << "Time to process a range of " << deq.size() + << " elements with std::deque : " << deqDuration << " us" + << std::endl; +} + +std::vector _generateJacobsthalOrder(size_t n) { + std::vector sequence; + std::vector inserted(n, false); + + // Generate the sequence + size_t j0 = 0, j1 = 1; + while (j1 < n) { + sequence.push_back(j1); + inserted[j1] = true; + size_t next = j1 + 2 * j0; + j0 = j1; + j1 = next; + } + for (size_t i = 0; i < n; ++i) { + if (!inserted[i]) + sequence.push_back(i); + } + + return sequence; +} + +template void _fordJohnsonSort(Container &container) { + if (container.size() <= 1) + return; + + Container mainChain; + Container pendingElements; + + for (auto it = container.begin(); it != container.end();) { + int first = *it; + ++it; + + if (it != container.end()) { + int second = *it; + if (first > second) { + mainChain.push_back(first); + pendingElements.push_back(second); + } else { + mainChain.push_back(second); + pendingElements.push_back(first); + } + ++it; + } else { + mainChain.push_back(first); + } + } + + _fordJohnsonSort(mainChain); + + std::vector order = _generateJacobsthalOrder(pendingElements.size()); + for (size_t i = 0; i < order.size(); ++i) { + _binaryInsert(mainChain, pendingElements[order[i]]); + } + container = mainChain; +} + +template void _binaryInsert(Container &sorted, int value) { + typename Container::iterator itL = sorted.begin(); + typename Container::iterator itH = sorted.end(); + + while (itL < itH) { + typename Container::iterator itMid = itL + (itH - itL) / 2; + if (*itMid < value) + itL = itMid + 1; + else + itH = itMid; + } + + sorted.insert(itL, value); +} diff --git a/ex02/PmergeMe.hpp b/ex02/PmergeMe.hpp new file mode 100644 index 0000000..0c6ce77 --- /dev/null +++ b/ex02/PmergeMe.hpp @@ -0,0 +1,36 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* PmergeMe.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/06/04 13:27:20 by adjoly #+# #+# */ +/* Updated: 2025/06/04 13:45:07 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#pragma once + +#include +#include +#include +#include +#include + +#define auto __auto_type + +#define range(x) \ + x.begin(); \ + it != x.end(); \ + it++ + +std::vector parseInput(int argc, char **argv); + +template void printContainer(const Container &container); + +void sortAndTime(std::vector &vec, std::deque &deq); + +template void _fordJohnsonSort(Container &container); + +template void _binaryInsert(Container &sorted, int value); diff --git a/ex02/RPN b/ex02/RPN new file mode 100755 index 0000000000000000000000000000000000000000..687799094149df23135889f204f7cf02e8b3d564 GIT binary patch literal 82160 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℘ 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 literal 0 HcmV?d00001 diff --git a/ex02/main.cpp b/ex02/main.cpp new file mode 100644 index 0000000..bb867b1 --- /dev/null +++ b/ex02/main.cpp @@ -0,0 +1,34 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* main.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/06/04 13:26:50 by adjoly #+# #+# */ +/* Updated: 2025/06/04 13:44:29 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include + +int main(int argc, char **argv) { + if (argc < 2) { + std::cerr << "Error: No input provided" << std::endl; + return 1; + } + + try { + std::vector inputVector = parseInput(argc, argv); + std::deque inputDeque(inputVector.begin(), inputVector.end()); + + std::cout << "Before: "; + printContainer(inputVector); + + sortAndTime(inputVector, inputDeque); + + } catch (const std::exception &e) { + std::cerr << "Error: " << e.what() << std::endl; + return 1; + } +}