From e93bcacfb8d75cff5dfb531fad6569d2b5457998 Mon Sep 17 00:00:00 2001 From: majvax Date: Wed, 1 Jan 2025 18:31:39 +0100 Subject: [PATCH 01/15] [C++] added snippet --- .../cpp/array-manipulation/filter-vector.md | 18 +++++++ .../array-manipulation/transform-vector.md | 19 +++++++ snippets/cpp/basics/hello-world.md | 8 +-- .../cpp/file-handling/find-files-recursive.md | 53 +++++++++++++++++++ snippets/cpp/file-handling/find-files.md | 53 +++++++++++++++++++ .../cpp/file-handling/list-directories.md | 32 +++++++++++ 6 files changed, 179 insertions(+), 4 deletions(-) create mode 100644 snippets/cpp/array-manipulation/filter-vector.md create mode 100644 snippets/cpp/array-manipulation/transform-vector.md create mode 100644 snippets/cpp/file-handling/find-files-recursive.md create mode 100644 snippets/cpp/file-handling/find-files.md create mode 100644 snippets/cpp/file-handling/list-directories.md diff --git a/snippets/cpp/array-manipulation/filter-vector.md b/snippets/cpp/array-manipulation/filter-vector.md new file mode 100644 index 00000000..3b2b6297 --- /dev/null +++ b/snippets/cpp/array-manipulation/filter-vector.md @@ -0,0 +1,18 @@ +--- +Title: Filter Vector +Description: Filters a vector using a predicate function. +Author: majvax +Tags: cpp,array,filter,utility +--- + +```cpp +#include +#include + +template +auto filter(const std::vector& vec, P&& predicate) { + return vec + | std::views::filter(std::forward

(predicate)) + | std::ranges::to>(); +} +``` diff --git a/snippets/cpp/array-manipulation/transform-vector.md b/snippets/cpp/array-manipulation/transform-vector.md new file mode 100644 index 00000000..996593ca --- /dev/null +++ b/snippets/cpp/array-manipulation/transform-vector.md @@ -0,0 +1,19 @@ +--- +Title: Transform Vector +Description: Transforms a vector using a function. +Author: majvax +Tags: cpp,array,transform,utility +--- + +```cpp +#include +#include + +template +auto transform(const std::vector& vec, F&& transformer) { + using U = std::invoke_result_t; + return vec + | std::views::transform(std::forward(transformer)) + | std::ranges::to>(); +} +``` diff --git a/snippets/cpp/basics/hello-world.md b/snippets/cpp/basics/hello-world.md index eadaa386..77397123 100644 --- a/snippets/cpp/basics/hello-world.md +++ b/snippets/cpp/basics/hello-world.md @@ -1,8 +1,8 @@ --- -title: Hello, World! -description: Prints Hello, World! to the terminal. -author: James-Beans -tags: cpp,printing,hello-world,utility +Title: Hello, World! +Description: Prints Hello, World! to the terminal. +Author: James-Beans +Tags: cpp,hello-world --- ```cpp diff --git a/snippets/cpp/file-handling/find-files-recursive.md b/snippets/cpp/file-handling/find-files-recursive.md new file mode 100644 index 00000000..4bc00ded --- /dev/null +++ b/snippets/cpp/file-handling/find-files-recursive.md @@ -0,0 +1,53 @@ +--- +Title: Find files +Description: Find all the files in a directory and subdirectories using a predicate function. +Author: majvax +Tags: cpp,array,filesystem,file_search,recursive_search +--- + +```cpp +#include +#include +#include + +template +std::vector find_files_recursive(const std::string& path, P&& predicate) { + std::vector files; + std::error_code ec; + + if (!std::filesystem::exists(path, ec) || ec) + return files; + if (!std::filesystem::is_directory(path, ec) || ec) + return files; + + auto it = std::filesystem::recursive_directory_iterator(path, ec); + if (ec) + return files; + + for (const auto& entry : it) + if (!std::filesystem::is_directory(entry) && predicate(entry.path())) + files.push_back(entry.path()); + + return files; +} + + +// usage: +// Find all files with size greater than 10MB +auto files = find_files_recursive("Path", [](const auto& p) { + return std::filesystem::file_size(p) > 10 * 1024 * 1024; +}); + +// Find all files with ".pdf" as extension +auto files = find_files_recursive("Path", [](const auto& p) { + return p.extension() == ".pdf"; +}); + +// Find all files writed after The New Year +auto jan_1_2025 = std::filesystem::file_time_type::clock::from_sys( + std::chrono::sys_days{std::chrono::year{2025}/std::chrono::month{1}/std::chrono::day{1}} +); +auto files = find_files_recursive("Path", [jan_1_2025](const auto& p) { + return std::filesystem::last_write_time(p) > jan_1_2025; +}), +``` diff --git a/snippets/cpp/file-handling/find-files.md b/snippets/cpp/file-handling/find-files.md new file mode 100644 index 00000000..7d26e920 --- /dev/null +++ b/snippets/cpp/file-handling/find-files.md @@ -0,0 +1,53 @@ +--- +Title: Find files +Description: Find all the files in a directory using a predicate function. +Author: majvax +Tags: cpp,array,filesystem,file_search +--- + +```cpp +#include +#include +#include + +template +std::vector find_files(const std::string& path, P&& predicate) { + std::vector files; + std::error_code ec; + + if (!std::filesystem::exists(path, ec) || ec) + return files; + if (!std::filesystem::is_directory(path, ec) || ec) + return files; + + auto it = std::filesystem::directory_iterator(path, ec); + if (ec) + return files; + + for (const auto& entry : it) + if (!std::filesystem::is_directory(entry) && predicate(entry.path())) + files.push_back(entry.path()); + + return files; +} + + +// usage: +// Find all files with size greater than 10MB +auto files = find_files("Path", [](const auto& p) { + return std::filesystem::file_size(p) > 10 * 1024 * 1024; +}); + +// Find all files with ".pdf" as extension +auto files = find_files("Path", [](const auto& p) { + return p.extension() == ".pdf"; +}); + +// Find all files writed after The New Year +auto jan_1_2025 = std::filesystem::file_time_type::clock::from_sys( + std::chrono::sys_days{std::chrono::year{2025}/std::chrono::month{1}/std::chrono::day{1}} +); +auto files = find_files("Path", [jan_1_2025](const auto& p) { + return std::filesystem::last_write_time(p) > jan_1_2025; +}), +``` diff --git a/snippets/cpp/file-handling/list-directories.md b/snippets/cpp/file-handling/list-directories.md new file mode 100644 index 00000000..0897a464 --- /dev/null +++ b/snippets/cpp/file-handling/list-directories.md @@ -0,0 +1,32 @@ +--- +Title: List Directories +Description: Lists all the directories in a path. +Author: majvax +Tags: cpp,array,filesystem,directories +--- + +```cpp +#include +#include +#include + +std::vector list_directories(const std::string& path) { + std::vector files; + std::error_code ec; + + if (!std::filesystem::exists(path, ec) || ec) + return files; + if (!std::filesystem::is_directory(path, ec) || ec) + return files; + + auto it = std::filesystem::directory_iterator(path, ec); + if (ec) + return files; + + for (const auto& entry : it) + if (std::filesystem::is_directory(entry)) + files.push_back(entry.path()); + + return files; +} +``` From aad3f798991587209b9f0aee506ef5d1d5e499a0 Mon Sep 17 00:00:00 2001 From: majvax Date: Wed, 1 Jan 2025 23:10:18 +0100 Subject: [PATCH 02/15] [C++] added 3 snippets for string. --- snippets/cpp/string-manipulation/filter.md | 18 ++++++++++++++++ .../cpp/string-manipulation/palindrome.md | 21 +++++++++++++++++++ snippets/cpp/string-manipulation/transform.md | 18 ++++++++++++++++ 3 files changed, 57 insertions(+) create mode 100644 snippets/cpp/string-manipulation/filter.md create mode 100644 snippets/cpp/string-manipulation/palindrome.md create mode 100644 snippets/cpp/string-manipulation/transform.md diff --git a/snippets/cpp/string-manipulation/filter.md b/snippets/cpp/string-manipulation/filter.md new file mode 100644 index 00000000..12e3bf0c --- /dev/null +++ b/snippets/cpp/string-manipulation/filter.md @@ -0,0 +1,18 @@ +--- +title: Filter +description: Filter a string with a predicate function +author: majvax +tags: cpp,string,utility,filtering +--- + +```cpp +#include +#include + +template +std::string filter(const std::string& str, P&& predicate) { + return str + | std::ranges::views::filter(std::forward

(predicate)) + | std::ranges::to(); +} +``` diff --git a/snippets/cpp/string-manipulation/palindrome.md b/snippets/cpp/string-manipulation/palindrome.md new file mode 100644 index 00000000..f57e4764 --- /dev/null +++ b/snippets/cpp/string-manipulation/palindrome.md @@ -0,0 +1,21 @@ +--- +title: Palindrome +description: Check if a string is a palindrome or not. +author: majvax +tags: cpp,string,utility +--- + +```cpp +#include +#include +#include + +bool is_palindrome(const std::string& str) { + std::string sanitized_string = str + | std::ranges::views::filter([](char c){ return std::isalnum(c); }) + | std::ranges::views::transform([](char c){ return std::tolower(c); }) + | std::ranges::to(); + + return std::ranges::equal(sanitized_string, sanitized_string | std::views::reverse); +} +``` diff --git a/snippets/cpp/string-manipulation/transform.md b/snippets/cpp/string-manipulation/transform.md new file mode 100644 index 00000000..c64da2c7 --- /dev/null +++ b/snippets/cpp/string-manipulation/transform.md @@ -0,0 +1,18 @@ +--- +title: Transform +description: Transform a string with a function +author: majvax +tags: cpp,string,utility,transform +--- + +```cpp +#include +#include + +template +std::string transform(const std::string& str, F&& transformer) { + return str + | std::ranges::views::transform(std::forward(transformer)) + | std::ranges::to(); +} +``` From f472a2968440d7be3d2bcd09acddedaf92b5ff6e Mon Sep 17 00:00:00 2001 From: majvax Date: Thu, 2 Jan 2025 15:20:25 +0100 Subject: [PATCH 03/15] Added missing chrono header --- snippets/cpp/file-handling/find-files-recursive.md | 1 + snippets/cpp/file-handling/find-files.md | 1 + 2 files changed, 2 insertions(+) diff --git a/snippets/cpp/file-handling/find-files-recursive.md b/snippets/cpp/file-handling/find-files-recursive.md index 4bc00ded..1a8d574e 100644 --- a/snippets/cpp/file-handling/find-files-recursive.md +++ b/snippets/cpp/file-handling/find-files-recursive.md @@ -44,6 +44,7 @@ auto files = find_files_recursive("Path", [](const auto& p) { }); // Find all files writed after The New Year +#include auto jan_1_2025 = std::filesystem::file_time_type::clock::from_sys( std::chrono::sys_days{std::chrono::year{2025}/std::chrono::month{1}/std::chrono::day{1}} ); diff --git a/snippets/cpp/file-handling/find-files.md b/snippets/cpp/file-handling/find-files.md index 7d26e920..ee2b1ab8 100644 --- a/snippets/cpp/file-handling/find-files.md +++ b/snippets/cpp/file-handling/find-files.md @@ -44,6 +44,7 @@ auto files = find_files("Path", [](const auto& p) { }); // Find all files writed after The New Year +#include auto jan_1_2025 = std::filesystem::file_time_type::clock::from_sys( std::chrono::sys_days{std::chrono::year{2025}/std::chrono::month{1}/std::chrono::day{1}} ); From 31b43b520a67b910485802845f025df1b7bf1a57 Mon Sep 17 00:00:00 2001 From: majvax Date: Thu, 2 Jan 2025 21:32:25 +0100 Subject: [PATCH 04/15] fixed tags --- snippets/cpp/array-manipulation/filter-vector.md | 2 +- snippets/cpp/array-manipulation/transform-vector.md | 2 +- snippets/cpp/file-handling/find-files-recursive.md | 2 +- snippets/cpp/file-handling/find-files.md | 2 +- snippets/cpp/file-handling/list-directories.md | 2 +- snippets/cpp/string-manipulation/filter.md | 2 +- snippets/cpp/string-manipulation/palindrome.md | 2 +- snippets/cpp/string-manipulation/transform.md | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/snippets/cpp/array-manipulation/filter-vector.md b/snippets/cpp/array-manipulation/filter-vector.md index 3b2b6297..43ee886d 100644 --- a/snippets/cpp/array-manipulation/filter-vector.md +++ b/snippets/cpp/array-manipulation/filter-vector.md @@ -2,7 +2,7 @@ Title: Filter Vector Description: Filters a vector using a predicate function. Author: majvax -Tags: cpp,array,filter,utility +Tags: cpp,array,filter,utility,c++23 --- ```cpp diff --git a/snippets/cpp/array-manipulation/transform-vector.md b/snippets/cpp/array-manipulation/transform-vector.md index 996593ca..52962027 100644 --- a/snippets/cpp/array-manipulation/transform-vector.md +++ b/snippets/cpp/array-manipulation/transform-vector.md @@ -2,7 +2,7 @@ Title: Transform Vector Description: Transforms a vector using a function. Author: majvax -Tags: cpp,array,transform,utility +Tags: cpp,array,transform,utility,,c++23 --- ```cpp diff --git a/snippets/cpp/file-handling/find-files-recursive.md b/snippets/cpp/file-handling/find-files-recursive.md index 4bc00ded..f4f5a24d 100644 --- a/snippets/cpp/file-handling/find-files-recursive.md +++ b/snippets/cpp/file-handling/find-files-recursive.md @@ -2,7 +2,7 @@ Title: Find files Description: Find all the files in a directory and subdirectories using a predicate function. Author: majvax -Tags: cpp,array,filesystem,file_search,recursive_search +Tags: cpp,filesystem,file_search,c++17 --- ```cpp diff --git a/snippets/cpp/file-handling/find-files.md b/snippets/cpp/file-handling/find-files.md index 7d26e920..6fd0529c 100644 --- a/snippets/cpp/file-handling/find-files.md +++ b/snippets/cpp/file-handling/find-files.md @@ -2,7 +2,7 @@ Title: Find files Description: Find all the files in a directory using a predicate function. Author: majvax -Tags: cpp,array,filesystem,file_search +Tags: cpp,filesystem,file_search --- ```cpp diff --git a/snippets/cpp/file-handling/list-directories.md b/snippets/cpp/file-handling/list-directories.md index 0897a464..58cd992b 100644 --- a/snippets/cpp/file-handling/list-directories.md +++ b/snippets/cpp/file-handling/list-directories.md @@ -2,7 +2,7 @@ Title: List Directories Description: Lists all the directories in a path. Author: majvax -Tags: cpp,array,filesystem,directories +Tags: cpp,filesystem,directories,c++17 --- ```cpp diff --git a/snippets/cpp/string-manipulation/filter.md b/snippets/cpp/string-manipulation/filter.md index 12e3bf0c..fa857ae9 100644 --- a/snippets/cpp/string-manipulation/filter.md +++ b/snippets/cpp/string-manipulation/filter.md @@ -2,7 +2,7 @@ title: Filter description: Filter a string with a predicate function author: majvax -tags: cpp,string,utility,filtering +tags: cpp,string,utility,filtering,c++23 --- ```cpp diff --git a/snippets/cpp/string-manipulation/palindrome.md b/snippets/cpp/string-manipulation/palindrome.md index f57e4764..356ba62b 100644 --- a/snippets/cpp/string-manipulation/palindrome.md +++ b/snippets/cpp/string-manipulation/palindrome.md @@ -2,7 +2,7 @@ title: Palindrome description: Check if a string is a palindrome or not. author: majvax -tags: cpp,string,utility +tags: cpp,string,utility,c++23 --- ```cpp diff --git a/snippets/cpp/string-manipulation/transform.md b/snippets/cpp/string-manipulation/transform.md index c64da2c7..a3739ede 100644 --- a/snippets/cpp/string-manipulation/transform.md +++ b/snippets/cpp/string-manipulation/transform.md @@ -2,7 +2,7 @@ title: Transform description: Transform a string with a function author: majvax -tags: cpp,string,utility,transform +tags: cpp,string,utility,transform,c++23 --- ```cpp From 4638879f3ec9facbb33e4e825374aa9725b5152b Mon Sep 17 00:00:00 2001 From: majvax Date: Thu, 2 Jan 2025 21:38:48 +0100 Subject: [PATCH 05/15] fixed exemple needing std=c++20 --- snippets/cpp/file-handling/find-files-recursive.md | 1 + snippets/cpp/file-handling/find-files.md | 1 + 2 files changed, 2 insertions(+) diff --git a/snippets/cpp/file-handling/find-files-recursive.md b/snippets/cpp/file-handling/find-files-recursive.md index bb9ba194..7b1630a6 100644 --- a/snippets/cpp/file-handling/find-files-recursive.md +++ b/snippets/cpp/file-handling/find-files-recursive.md @@ -45,6 +45,7 @@ auto files = find_files_recursive("Path", [](const auto& p) { // Find all files writed after The New Year #include +// need std=c++20 auto jan_1_2025 = std::filesystem::file_time_type::clock::from_sys( std::chrono::sys_days{std::chrono::year{2025}/std::chrono::month{1}/std::chrono::day{1}} ); diff --git a/snippets/cpp/file-handling/find-files.md b/snippets/cpp/file-handling/find-files.md index bd0bbe9b..b00064d3 100644 --- a/snippets/cpp/file-handling/find-files.md +++ b/snippets/cpp/file-handling/find-files.md @@ -45,6 +45,7 @@ auto files = find_files("Path", [](const auto& p) { // Find all files writed after The New Year #include +// need std=c++20 auto jan_1_2025 = std::filesystem::file_time_type::clock::from_sys( std::chrono::sys_days{std::chrono::year{2025}/std::chrono::month{1}/std::chrono::day{1}} ); From 98ddffcf61f721ca493235729361d50e3b4cb59b Mon Sep 17 00:00:00 2001 From: majvax Date: Thu, 2 Jan 2025 22:17:54 +0100 Subject: [PATCH 06/15] Fixed Usage to accommodate to new guidelines --- snippets/cpp/array-manipulation/filter-vector.md | 7 +++++++ snippets/cpp/array-manipulation/transform-vector.md | 7 +++++++ snippets/cpp/file-handling/find-files-recursive.md | 4 +++- snippets/cpp/file-handling/find-files.md | 4 +++- snippets/cpp/file-handling/list-directories.md | 5 +++++ snippets/cpp/string-manipulation/filter.md | 7 +++++++ snippets/cpp/string-manipulation/palindrome.md | 5 +++++ snippets/cpp/string-manipulation/transform.md | 7 +++++++ 8 files changed, 44 insertions(+), 2 deletions(-) diff --git a/snippets/cpp/array-manipulation/filter-vector.md b/snippets/cpp/array-manipulation/filter-vector.md index 43ee886d..d6d05527 100644 --- a/snippets/cpp/array-manipulation/filter-vector.md +++ b/snippets/cpp/array-manipulation/filter-vector.md @@ -15,4 +15,11 @@ auto filter(const std::vector& vec, P&& predicate) { | std::views::filter(std::forward

(predicate)) | std::ranges::to>(); } + + + +// Usage: +std::vector vec = {1, 2, 3, 4, 5}; +std::vector filtered = filter(vec, [](int i){ return i % 2 == 0; }); +// filtered contains 2 and 4 ``` diff --git a/snippets/cpp/array-manipulation/transform-vector.md b/snippets/cpp/array-manipulation/transform-vector.md index 52962027..90575099 100644 --- a/snippets/cpp/array-manipulation/transform-vector.md +++ b/snippets/cpp/array-manipulation/transform-vector.md @@ -16,4 +16,11 @@ auto transform(const std::vector& vec, F&& transformer) { | std::views::transform(std::forward(transformer)) | std::ranges::to>(); } + + + +// Usage: +std::vector vec = {1, 2, 3, 4, 5}; +std::vector transformed = transform(vec, [](int i){ return i * 2; }); +// transformed containes 2, 4, 6, 8, 10 ``` diff --git a/snippets/cpp/file-handling/find-files-recursive.md b/snippets/cpp/file-handling/find-files-recursive.md index 7b1630a6..9c5fd6cb 100644 --- a/snippets/cpp/file-handling/find-files-recursive.md +++ b/snippets/cpp/file-handling/find-files-recursive.md @@ -32,7 +32,9 @@ std::vector find_files_recursive(const std::string& path, } -// usage: + +// Usage: + // Find all files with size greater than 10MB auto files = find_files_recursive("Path", [](const auto& p) { return std::filesystem::file_size(p) > 10 * 1024 * 1024; diff --git a/snippets/cpp/file-handling/find-files.md b/snippets/cpp/file-handling/find-files.md index b00064d3..bb09d2d7 100644 --- a/snippets/cpp/file-handling/find-files.md +++ b/snippets/cpp/file-handling/find-files.md @@ -32,7 +32,9 @@ std::vector find_files(const std::string& path, P&& predi } -// usage: + +// Usage: + // Find all files with size greater than 10MB auto files = find_files("Path", [](const auto& p) { return std::filesystem::file_size(p) > 10 * 1024 * 1024; diff --git a/snippets/cpp/file-handling/list-directories.md b/snippets/cpp/file-handling/list-directories.md index 58cd992b..36dad78b 100644 --- a/snippets/cpp/file-handling/list-directories.md +++ b/snippets/cpp/file-handling/list-directories.md @@ -29,4 +29,9 @@ std::vector list_directories(const std::string& path) { return files; } + + + +// Usage: +auto directories = list_directories("Path"); ``` diff --git a/snippets/cpp/string-manipulation/filter.md b/snippets/cpp/string-manipulation/filter.md index fa857ae9..4c90b7ce 100644 --- a/snippets/cpp/string-manipulation/filter.md +++ b/snippets/cpp/string-manipulation/filter.md @@ -15,4 +15,11 @@ std::string filter(const std::string& str, P&& predicate) { | std::ranges::views::filter(std::forward

(predicate)) | std::ranges::to(); } + + + +// Usage: +std::string str = "Hello, World!"; +std::string filtered = filter(str, [](char c){ return std::isalpha(c); }); +std::cout << filtered << std::endl; // HelloWorld ``` diff --git a/snippets/cpp/string-manipulation/palindrome.md b/snippets/cpp/string-manipulation/palindrome.md index 356ba62b..90a5f487 100644 --- a/snippets/cpp/string-manipulation/palindrome.md +++ b/snippets/cpp/string-manipulation/palindrome.md @@ -18,4 +18,9 @@ bool is_palindrome(const std::string& str) { return std::ranges::equal(sanitized_string, sanitized_string | std::views::reverse); } + + + +// Usage: +bool pal = is_palindrome("A man, a plan, a canal, Panama"); // true ``` diff --git a/snippets/cpp/string-manipulation/transform.md b/snippets/cpp/string-manipulation/transform.md index a3739ede..d167c0ef 100644 --- a/snippets/cpp/string-manipulation/transform.md +++ b/snippets/cpp/string-manipulation/transform.md @@ -15,4 +15,11 @@ std::string transform(const std::string& str, F&& transformer) { | std::ranges::views::transform(std::forward(transformer)) | std::ranges::to(); } + + + +// Usage: +std::string str = "Hello, World!"; +std::string transformed = transform(str, [](char c){ return std::toupper(c); }); +std::cout << transformed << std::endl; // HELLO, WORLD! ``` From aebefdeb709bcf2cb4efea5062b266548d9fd0b1 Mon Sep 17 00:00:00 2001 From: majvax Date: Fri, 3 Jan 2025 10:29:13 +0100 Subject: [PATCH 07/15] Fixed all tags + type --- snippets/cpp/array-manipulation/filter-vector.md | 2 +- snippets/cpp/array-manipulation/transform-vector.md | 4 ++-- snippets/cpp/file-handling/find-files-recursive.md | 2 +- snippets/cpp/file-handling/find-files.md | 2 +- snippets/cpp/file-handling/list-directories.md | 2 +- snippets/cpp/string-manipulation/filter.md | 2 +- snippets/cpp/string-manipulation/palindrome.md | 2 +- snippets/cpp/string-manipulation/reverse-string.md | 2 +- snippets/cpp/string-manipulation/split-string.md | 2 +- snippets/cpp/string-manipulation/transform.md | 2 +- 10 files changed, 11 insertions(+), 11 deletions(-) diff --git a/snippets/cpp/array-manipulation/filter-vector.md b/snippets/cpp/array-manipulation/filter-vector.md index d6d05527..083f7899 100644 --- a/snippets/cpp/array-manipulation/filter-vector.md +++ b/snippets/cpp/array-manipulation/filter-vector.md @@ -2,7 +2,7 @@ Title: Filter Vector Description: Filters a vector using a predicate function. Author: majvax -Tags: cpp,array,filter,utility,c++23 +Tags: array,filter,c++23 --- ```cpp diff --git a/snippets/cpp/array-manipulation/transform-vector.md b/snippets/cpp/array-manipulation/transform-vector.md index 90575099..e01cbabe 100644 --- a/snippets/cpp/array-manipulation/transform-vector.md +++ b/snippets/cpp/array-manipulation/transform-vector.md @@ -2,7 +2,7 @@ Title: Transform Vector Description: Transforms a vector using a function. Author: majvax -Tags: cpp,array,transform,utility,,c++23 +Tags: array,transform,c++23 --- ```cpp @@ -22,5 +22,5 @@ auto transform(const std::vector& vec, F&& transformer) { // Usage: std::vector vec = {1, 2, 3, 4, 5}; std::vector transformed = transform(vec, [](int i){ return i * 2; }); -// transformed containes 2, 4, 6, 8, 10 +// transformed contains 2, 4, 6, 8, 10 ``` diff --git a/snippets/cpp/file-handling/find-files-recursive.md b/snippets/cpp/file-handling/find-files-recursive.md index 9c5fd6cb..0161faf5 100644 --- a/snippets/cpp/file-handling/find-files-recursive.md +++ b/snippets/cpp/file-handling/find-files-recursive.md @@ -2,7 +2,7 @@ Title: Find files Description: Find all the files in a directory and subdirectories using a predicate function. Author: majvax -Tags: cpp,filesystem,file_search,c++17 +Tags: filesystem,file_search,c++17 --- ```cpp diff --git a/snippets/cpp/file-handling/find-files.md b/snippets/cpp/file-handling/find-files.md index bb09d2d7..c0ff9331 100644 --- a/snippets/cpp/file-handling/find-files.md +++ b/snippets/cpp/file-handling/find-files.md @@ -2,7 +2,7 @@ Title: Find files Description: Find all the files in a directory using a predicate function. Author: majvax -Tags: cpp,filesystem,file_search +Tags: filesystem,file_search,c++17 --- ```cpp diff --git a/snippets/cpp/file-handling/list-directories.md b/snippets/cpp/file-handling/list-directories.md index 36dad78b..028bc095 100644 --- a/snippets/cpp/file-handling/list-directories.md +++ b/snippets/cpp/file-handling/list-directories.md @@ -2,7 +2,7 @@ Title: List Directories Description: Lists all the directories in a path. Author: majvax -Tags: cpp,filesystem,directories,c++17 +Tags: filesystem,directories,c++17 --- ```cpp diff --git a/snippets/cpp/string-manipulation/filter.md b/snippets/cpp/string-manipulation/filter.md index 4c90b7ce..b09b50f5 100644 --- a/snippets/cpp/string-manipulation/filter.md +++ b/snippets/cpp/string-manipulation/filter.md @@ -2,7 +2,7 @@ title: Filter description: Filter a string with a predicate function author: majvax -tags: cpp,string,utility,filtering,c++23 +tags: string,filtering,c++23 --- ```cpp diff --git a/snippets/cpp/string-manipulation/palindrome.md b/snippets/cpp/string-manipulation/palindrome.md index 90a5f487..b563e22c 100644 --- a/snippets/cpp/string-manipulation/palindrome.md +++ b/snippets/cpp/string-manipulation/palindrome.md @@ -2,7 +2,7 @@ title: Palindrome description: Check if a string is a palindrome or not. author: majvax -tags: cpp,string,utility,c++23 +tags: string,c++23 --- ```cpp diff --git a/snippets/cpp/string-manipulation/reverse-string.md b/snippets/cpp/string-manipulation/reverse-string.md index de209c88..5350da18 100644 --- a/snippets/cpp/string-manipulation/reverse-string.md +++ b/snippets/cpp/string-manipulation/reverse-string.md @@ -2,7 +2,7 @@ title: Reverse String description: Reverses the characters in a string. author: Vaibhav-kesarwani -tags: cpp,array,reverse,utility +tags: array,reverse,c++20 --- ```cpp diff --git a/snippets/cpp/string-manipulation/split-string.md b/snippets/cpp/string-manipulation/split-string.md index f903a2b2..339fcecd 100644 --- a/snippets/cpp/string-manipulation/split-string.md +++ b/snippets/cpp/string-manipulation/split-string.md @@ -2,7 +2,7 @@ title: Split String description: Splits a string by a delimiter author: saminjay -tags: cpp,string,split,utility +tags: string,split,c++23 --- ```cpp diff --git a/snippets/cpp/string-manipulation/transform.md b/snippets/cpp/string-manipulation/transform.md index d167c0ef..3d0ee01d 100644 --- a/snippets/cpp/string-manipulation/transform.md +++ b/snippets/cpp/string-manipulation/transform.md @@ -2,7 +2,7 @@ title: Transform description: Transform a string with a function author: majvax -tags: cpp,string,utility,transform,c++23 +tags: string,transform,c++23 --- ```cpp From d76dbfd630f7fae37573b683a1106007ddc01fcd Mon Sep 17 00:00:00 2001 From: majvax Date: Fri, 3 Jan 2025 10:34:55 +0100 Subject: [PATCH 08/15] Revert "Fixed all tags + type" This reverts commit aebefdeb709bcf2cb4efea5062b266548d9fd0b1. --- snippets/cpp/array-manipulation/filter-vector.md | 2 +- snippets/cpp/array-manipulation/transform-vector.md | 4 ++-- snippets/cpp/file-handling/find-files-recursive.md | 2 +- snippets/cpp/file-handling/find-files.md | 2 +- snippets/cpp/file-handling/list-directories.md | 2 +- snippets/cpp/string-manipulation/filter.md | 2 +- snippets/cpp/string-manipulation/palindrome.md | 2 +- snippets/cpp/string-manipulation/reverse-string.md | 2 +- snippets/cpp/string-manipulation/split-string.md | 2 +- snippets/cpp/string-manipulation/transform.md | 2 +- 10 files changed, 11 insertions(+), 11 deletions(-) diff --git a/snippets/cpp/array-manipulation/filter-vector.md b/snippets/cpp/array-manipulation/filter-vector.md index 083f7899..d6d05527 100644 --- a/snippets/cpp/array-manipulation/filter-vector.md +++ b/snippets/cpp/array-manipulation/filter-vector.md @@ -2,7 +2,7 @@ Title: Filter Vector Description: Filters a vector using a predicate function. Author: majvax -Tags: array,filter,c++23 +Tags: cpp,array,filter,utility,c++23 --- ```cpp diff --git a/snippets/cpp/array-manipulation/transform-vector.md b/snippets/cpp/array-manipulation/transform-vector.md index e01cbabe..90575099 100644 --- a/snippets/cpp/array-manipulation/transform-vector.md +++ b/snippets/cpp/array-manipulation/transform-vector.md @@ -2,7 +2,7 @@ Title: Transform Vector Description: Transforms a vector using a function. Author: majvax -Tags: array,transform,c++23 +Tags: cpp,array,transform,utility,,c++23 --- ```cpp @@ -22,5 +22,5 @@ auto transform(const std::vector& vec, F&& transformer) { // Usage: std::vector vec = {1, 2, 3, 4, 5}; std::vector transformed = transform(vec, [](int i){ return i * 2; }); -// transformed contains 2, 4, 6, 8, 10 +// transformed containes 2, 4, 6, 8, 10 ``` diff --git a/snippets/cpp/file-handling/find-files-recursive.md b/snippets/cpp/file-handling/find-files-recursive.md index 0161faf5..9c5fd6cb 100644 --- a/snippets/cpp/file-handling/find-files-recursive.md +++ b/snippets/cpp/file-handling/find-files-recursive.md @@ -2,7 +2,7 @@ Title: Find files Description: Find all the files in a directory and subdirectories using a predicate function. Author: majvax -Tags: filesystem,file_search,c++17 +Tags: cpp,filesystem,file_search,c++17 --- ```cpp diff --git a/snippets/cpp/file-handling/find-files.md b/snippets/cpp/file-handling/find-files.md index c0ff9331..bb09d2d7 100644 --- a/snippets/cpp/file-handling/find-files.md +++ b/snippets/cpp/file-handling/find-files.md @@ -2,7 +2,7 @@ Title: Find files Description: Find all the files in a directory using a predicate function. Author: majvax -Tags: filesystem,file_search,c++17 +Tags: cpp,filesystem,file_search --- ```cpp diff --git a/snippets/cpp/file-handling/list-directories.md b/snippets/cpp/file-handling/list-directories.md index 028bc095..36dad78b 100644 --- a/snippets/cpp/file-handling/list-directories.md +++ b/snippets/cpp/file-handling/list-directories.md @@ -2,7 +2,7 @@ Title: List Directories Description: Lists all the directories in a path. Author: majvax -Tags: filesystem,directories,c++17 +Tags: cpp,filesystem,directories,c++17 --- ```cpp diff --git a/snippets/cpp/string-manipulation/filter.md b/snippets/cpp/string-manipulation/filter.md index b09b50f5..4c90b7ce 100644 --- a/snippets/cpp/string-manipulation/filter.md +++ b/snippets/cpp/string-manipulation/filter.md @@ -2,7 +2,7 @@ title: Filter description: Filter a string with a predicate function author: majvax -tags: string,filtering,c++23 +tags: cpp,string,utility,filtering,c++23 --- ```cpp diff --git a/snippets/cpp/string-manipulation/palindrome.md b/snippets/cpp/string-manipulation/palindrome.md index b563e22c..90a5f487 100644 --- a/snippets/cpp/string-manipulation/palindrome.md +++ b/snippets/cpp/string-manipulation/palindrome.md @@ -2,7 +2,7 @@ title: Palindrome description: Check if a string is a palindrome or not. author: majvax -tags: string,c++23 +tags: cpp,string,utility,c++23 --- ```cpp diff --git a/snippets/cpp/string-manipulation/reverse-string.md b/snippets/cpp/string-manipulation/reverse-string.md index 5350da18..de209c88 100644 --- a/snippets/cpp/string-manipulation/reverse-string.md +++ b/snippets/cpp/string-manipulation/reverse-string.md @@ -2,7 +2,7 @@ title: Reverse String description: Reverses the characters in a string. author: Vaibhav-kesarwani -tags: array,reverse,c++20 +tags: cpp,array,reverse,utility --- ```cpp diff --git a/snippets/cpp/string-manipulation/split-string.md b/snippets/cpp/string-manipulation/split-string.md index 339fcecd..f903a2b2 100644 --- a/snippets/cpp/string-manipulation/split-string.md +++ b/snippets/cpp/string-manipulation/split-string.md @@ -2,7 +2,7 @@ title: Split String description: Splits a string by a delimiter author: saminjay -tags: string,split,c++23 +tags: cpp,string,split,utility --- ```cpp diff --git a/snippets/cpp/string-manipulation/transform.md b/snippets/cpp/string-manipulation/transform.md index 3d0ee01d..d167c0ef 100644 --- a/snippets/cpp/string-manipulation/transform.md +++ b/snippets/cpp/string-manipulation/transform.md @@ -2,7 +2,7 @@ title: Transform description: Transform a string with a function author: majvax -tags: string,transform,c++23 +tags: cpp,string,utility,transform,c++23 --- ```cpp From 9364abb82a12872bb4ad01d12bd1dc79dae0e7f7 Mon Sep 17 00:00:00 2001 From: majvax Date: Fri, 3 Jan 2025 10:39:25 +0100 Subject: [PATCH 09/15] Fixed type and all tags --- snippets/cpp/array-manipulation/filter-vector.md | 2 +- snippets/cpp/array-manipulation/transform-vector.md | 4 ++-- snippets/cpp/file-handling/find-files-recursive.md | 2 +- snippets/cpp/file-handling/find-files.md | 2 +- snippets/cpp/file-handling/list-directories.md | 2 +- snippets/cpp/string-manipulation/filter.md | 2 +- snippets/cpp/string-manipulation/palindrome.md | 2 +- snippets/cpp/string-manipulation/reverse-string.md | 2 +- snippets/cpp/string-manipulation/transform.md | 2 +- 9 files changed, 10 insertions(+), 10 deletions(-) diff --git a/snippets/cpp/array-manipulation/filter-vector.md b/snippets/cpp/array-manipulation/filter-vector.md index d6d05527..083f7899 100644 --- a/snippets/cpp/array-manipulation/filter-vector.md +++ b/snippets/cpp/array-manipulation/filter-vector.md @@ -2,7 +2,7 @@ Title: Filter Vector Description: Filters a vector using a predicate function. Author: majvax -Tags: cpp,array,filter,utility,c++23 +Tags: array,filter,c++23 --- ```cpp diff --git a/snippets/cpp/array-manipulation/transform-vector.md b/snippets/cpp/array-manipulation/transform-vector.md index 90575099..e01cbabe 100644 --- a/snippets/cpp/array-manipulation/transform-vector.md +++ b/snippets/cpp/array-manipulation/transform-vector.md @@ -2,7 +2,7 @@ Title: Transform Vector Description: Transforms a vector using a function. Author: majvax -Tags: cpp,array,transform,utility,,c++23 +Tags: array,transform,c++23 --- ```cpp @@ -22,5 +22,5 @@ auto transform(const std::vector& vec, F&& transformer) { // Usage: std::vector vec = {1, 2, 3, 4, 5}; std::vector transformed = transform(vec, [](int i){ return i * 2; }); -// transformed containes 2, 4, 6, 8, 10 +// transformed contains 2, 4, 6, 8, 10 ``` diff --git a/snippets/cpp/file-handling/find-files-recursive.md b/snippets/cpp/file-handling/find-files-recursive.md index 9c5fd6cb..0161faf5 100644 --- a/snippets/cpp/file-handling/find-files-recursive.md +++ b/snippets/cpp/file-handling/find-files-recursive.md @@ -2,7 +2,7 @@ Title: Find files Description: Find all the files in a directory and subdirectories using a predicate function. Author: majvax -Tags: cpp,filesystem,file_search,c++17 +Tags: filesystem,file_search,c++17 --- ```cpp diff --git a/snippets/cpp/file-handling/find-files.md b/snippets/cpp/file-handling/find-files.md index bb09d2d7..c0ff9331 100644 --- a/snippets/cpp/file-handling/find-files.md +++ b/snippets/cpp/file-handling/find-files.md @@ -2,7 +2,7 @@ Title: Find files Description: Find all the files in a directory using a predicate function. Author: majvax -Tags: cpp,filesystem,file_search +Tags: filesystem,file_search,c++17 --- ```cpp diff --git a/snippets/cpp/file-handling/list-directories.md b/snippets/cpp/file-handling/list-directories.md index 36dad78b..028bc095 100644 --- a/snippets/cpp/file-handling/list-directories.md +++ b/snippets/cpp/file-handling/list-directories.md @@ -2,7 +2,7 @@ Title: List Directories Description: Lists all the directories in a path. Author: majvax -Tags: cpp,filesystem,directories,c++17 +Tags: filesystem,directories,c++17 --- ```cpp diff --git a/snippets/cpp/string-manipulation/filter.md b/snippets/cpp/string-manipulation/filter.md index 4c90b7ce..b09b50f5 100644 --- a/snippets/cpp/string-manipulation/filter.md +++ b/snippets/cpp/string-manipulation/filter.md @@ -2,7 +2,7 @@ title: Filter description: Filter a string with a predicate function author: majvax -tags: cpp,string,utility,filtering,c++23 +tags: string,filtering,c++23 --- ```cpp diff --git a/snippets/cpp/string-manipulation/palindrome.md b/snippets/cpp/string-manipulation/palindrome.md index 90a5f487..b563e22c 100644 --- a/snippets/cpp/string-manipulation/palindrome.md +++ b/snippets/cpp/string-manipulation/palindrome.md @@ -2,7 +2,7 @@ title: Palindrome description: Check if a string is a palindrome or not. author: majvax -tags: cpp,string,utility,c++23 +tags: string,c++23 --- ```cpp diff --git a/snippets/cpp/string-manipulation/reverse-string.md b/snippets/cpp/string-manipulation/reverse-string.md index 615189b1..ed3c3995 100644 --- a/snippets/cpp/string-manipulation/reverse-string.md +++ b/snippets/cpp/string-manipulation/reverse-string.md @@ -2,7 +2,7 @@ title: Reverse String description: Reverses the characters in a string. author: Vaibhav-kesarwani -tags: array,reverse +tags: array,reverse,c++23 --- ```cpp diff --git a/snippets/cpp/string-manipulation/transform.md b/snippets/cpp/string-manipulation/transform.md index d167c0ef..3d0ee01d 100644 --- a/snippets/cpp/string-manipulation/transform.md +++ b/snippets/cpp/string-manipulation/transform.md @@ -2,7 +2,7 @@ title: Transform description: Transform a string with a function author: majvax -tags: cpp,string,utility,transform,c++23 +tags: string,transform,c++23 --- ```cpp From 3a9917664ac9fda4a7375a30539554ec7280c6db Mon Sep 17 00:00:00 2001 From: majvax Date: Fri, 3 Jan 2025 10:41:03 +0100 Subject: [PATCH 10/15] fixed gh check failing --- .../{find-files-recursive.md => find-files-recursively.md} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename snippets/cpp/file-handling/{find-files-recursive.md => find-files-recursively.md} (98%) diff --git a/snippets/cpp/file-handling/find-files-recursive.md b/snippets/cpp/file-handling/find-files-recursively.md similarity index 98% rename from snippets/cpp/file-handling/find-files-recursive.md rename to snippets/cpp/file-handling/find-files-recursively.md index 0161faf5..83d974e4 100644 --- a/snippets/cpp/file-handling/find-files-recursive.md +++ b/snippets/cpp/file-handling/find-files-recursively.md @@ -1,5 +1,5 @@ --- -Title: Find files +Title: Find files recursively Description: Find all the files in a directory and subdirectories using a predicate function. Author: majvax Tags: filesystem,file_search,c++17 From c0d6f0436ea7d8ce9954606ca4ac2f659a05e500 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Fri, 3 Jan 2025 09:40:23 +0000 Subject: [PATCH 11/15] Update consolidated snippets --- public/consolidated/cpp.json | 108 ++++++++++++++++++++++++++++++++++- 1 file changed, 107 insertions(+), 1 deletion(-) diff --git a/public/consolidated/cpp.json b/public/consolidated/cpp.json index e560e82d..088f9ef3 100644 --- a/public/consolidated/cpp.json +++ b/public/consolidated/cpp.json @@ -1,4 +1,33 @@ [ + { + "categoryName": "Array Manipulation", + "snippets": [ + { + "title": "Filter Vector", + "description": "Filters a vector using a predicate function.", + "author": "majvax", + "tags": [ + "array", + "filter", + "c++23" + ], + "contributors": [], + "code": "#include \n#include \n\ntemplate \nauto filter(const std::vector& vec, P&& predicate) {\n return vec\n | std::views::filter(std::forward

(predicate))\n | std::ranges::to>();\n}\n\n\n\n// Usage:\nstd::vector vec = {1, 2, 3, 4, 5};\nstd::vector filtered = filter(vec, [](int i){ return i % 2 == 0; });\n// filtered contains 2 and 4\n" + }, + { + "title": "Transform Vector", + "description": "Transforms a vector using a function.", + "author": "majvax", + "tags": [ + "array", + "transform", + "c++23" + ], + "contributors": [], + "code": "#include \n#include \n\ntemplate \nauto transform(const std::vector& vec, F&& transformer) {\n using U = std::invoke_result_t;\n return vec\n | std::views::transform(std::forward(transformer))\n | std::ranges::to>();\n}\n\n\n\n// Usage:\nstd::vector vec = {1, 2, 3, 4, 5};\nstd::vector transformed = transform(vec, [](int i){ return i * 2; });\n// transformed contains 2, 4, 6, 8, 10\n" + } + ] + }, { "categoryName": "Basics", "snippets": [ @@ -32,6 +61,47 @@ } ] }, + { + "categoryName": "File Handling", + "snippets": [ + { + "title": "Find files recursively", + "description": "Find all the files in a directory and subdirectories using a predicate function.", + "author": "majvax", + "tags": [ + "filesystem", + "file_search", + "c++17" + ], + "contributors": [], + "code": "#include \n#include \n#include \n\ntemplate \nstd::vector find_files_recursive(const std::string& path, P&& predicate) {\n std::vector files;\n std::error_code ec;\n\n if (!std::filesystem::exists(path, ec) || ec)\n return files;\n if (!std::filesystem::is_directory(path, ec) || ec)\n return files;\n\n auto it = std::filesystem::recursive_directory_iterator(path, ec);\n if (ec)\n return files;\n\n for (const auto& entry : it)\n if (!std::filesystem::is_directory(entry) && predicate(entry.path()))\n files.push_back(entry.path());\n\n return files;\n}\n\n\n\n// Usage:\n\n// Find all files with size greater than 10MB\nauto files = find_files_recursive(\"Path\", [](const auto& p) {\n return std::filesystem::file_size(p) > 10 * 1024 * 1024;\n});\n\n// Find all files with \".pdf\" as extension\nauto files = find_files_recursive(\"Path\", [](const auto& p) {\n return p.extension() == \".pdf\";\n});\n\n// Find all files writed after The New Year\n#include \n// need std=c++20\nauto jan_1_2025 = std::filesystem::file_time_type::clock::from_sys(\n std::chrono::sys_days{std::chrono::year{2025}/std::chrono::month{1}/std::chrono::day{1}}\n);\nauto files = find_files_recursive(\"Path\", [jan_1_2025](const auto& p) {\n return std::filesystem::last_write_time(p) > jan_1_2025;\n}),\n" + }, + { + "title": "Find files", + "description": "Find all the files in a directory using a predicate function.", + "author": "majvax", + "tags": [ + "filesystem", + "file_search", + "c++17" + ], + "contributors": [], + "code": "#include \n#include \n#include \n\ntemplate \nstd::vector find_files(const std::string& path, P&& predicate) {\n std::vector files;\n std::error_code ec;\n\n if (!std::filesystem::exists(path, ec) || ec)\n return files;\n if (!std::filesystem::is_directory(path, ec) || ec)\n return files;\n\n auto it = std::filesystem::directory_iterator(path, ec);\n if (ec)\n return files;\n\n for (const auto& entry : it)\n if (!std::filesystem::is_directory(entry) && predicate(entry.path()))\n files.push_back(entry.path());\n\n return files;\n}\n\n\n\n// Usage:\n\n// Find all files with size greater than 10MB\nauto files = find_files(\"Path\", [](const auto& p) {\n return std::filesystem::file_size(p) > 10 * 1024 * 1024;\n});\n\n// Find all files with \".pdf\" as extension\nauto files = find_files(\"Path\", [](const auto& p) {\n return p.extension() == \".pdf\";\n});\n\n// Find all files writed after The New Year\n#include \n// need std=c++20\nauto jan_1_2025 = std::filesystem::file_time_type::clock::from_sys(\n std::chrono::sys_days{std::chrono::year{2025}/std::chrono::month{1}/std::chrono::day{1}}\n);\nauto files = find_files(\"Path\", [jan_1_2025](const auto& p) {\n return std::filesystem::last_write_time(p) > jan_1_2025;\n}),\n" + }, + { + "title": "List Directories", + "description": "Lists all the directories in a path.", + "author": "majvax", + "tags": [ + "filesystem", + "directories", + "c++17" + ], + "contributors": [], + "code": "#include \n#include \n#include \n\nstd::vector list_directories(const std::string& path) {\n std::vector files;\n std::error_code ec;\n\n if (!std::filesystem::exists(path, ec) || ec)\n return files;\n if (!std::filesystem::is_directory(path, ec) || ec)\n return files;\n\n auto it = std::filesystem::directory_iterator(path, ec);\n if (ec)\n return files;\n\n for (const auto& entry : it)\n if (std::filesystem::is_directory(entry))\n files.push_back(entry.path());\n\n return files;\n}\n\n\n\n// Usage:\nauto directories = list_directories(\"Path\");\n" + } + ] + }, { "categoryName": "Math And Numbers", "snippets": [ @@ -51,13 +121,37 @@ { "categoryName": "String Manipulation", "snippets": [ + { + "title": "Filter", + "description": "Filter a string with a predicate function", + "author": "majvax", + "tags": [ + "string", + "filtering", + "c++23" + ], + "contributors": [], + "code": "#include \n#include \n\ntemplate \nstd::string filter(const std::string& str, P&& predicate) {\n return str\n | std::ranges::views::filter(std::forward

(predicate))\n | std::ranges::to();\n}\n\n\n\n// Usage:\nstd::string str = \"Hello, World!\";\nstd::string filtered = filter(str, [](char c){ return std::isalpha(c); });\nstd::cout << filtered << std::endl; // HelloWorld\n" + }, + { + "title": "Palindrome", + "description": "Check if a string is a palindrome or not.", + "author": "majvax", + "tags": [ + "string", + "c++23" + ], + "contributors": [], + "code": "#include \n#include \n#include \n\nbool is_palindrome(const std::string& str) {\n std::string sanitized_string = str\n | std::ranges::views::filter([](char c){ return std::isalnum(c); })\n | std::ranges::views::transform([](char c){ return std::tolower(c); })\n | std::ranges::to();\n \n return std::ranges::equal(sanitized_string, sanitized_string | std::views::reverse);\n}\n\n\n\n// Usage:\nbool pal = is_palindrome(\"A man, a plan, a canal, Panama\"); // true\n" + }, { "title": "Reverse String", "description": "Reverses the characters in a string.", "author": "Vaibhav-kesarwani", "tags": [ "array", - "reverse" + "reverse", + "c++23" ], "contributors": [], "code": "#include \n#include \n\nstd::string reverseString(const std::string& input) {\n std::string reversed = input;\n std::reverse(reversed.begin(), reversed.end());\n return reversed;\n}\n\nreverseString(\"quicksnip\"); // Returns: \"pinskciuq\"\n" @@ -72,6 +166,18 @@ ], "contributors": [], "code": "#include \n#include \n\nstd::vector split_string(std::string str, std::string delim) {\n std::vector splits;\n int i = 0, j;\n int inc = delim.length();\n while (j != std::string::npos) {\n j = str.find(delim, i);\n splits.push_back(str.substr(i, j - i));\n i = j + inc;\n }\n return splits;\n}\n\n// Usage:\nsplit_string(\"quick_-snip\", \"_-\"); // Returns: std::vector { \"quick\", \"snip\" }\n" + }, + { + "title": "Transform", + "description": "Transform a string with a function", + "author": "majvax", + "tags": [ + "string", + "transform", + "c++23" + ], + "contributors": [], + "code": "#include \n#include \n\ntemplate \nstd::string transform(const std::string& str, F&& transformer) {\n return str\n | std::ranges::views::transform(std::forward(transformer))\n | std::ranges::to();\n}\n\n\n\n// Usage:\nstd::string str = \"Hello, World!\";\nstd::string transformed = transform(str, [](char c){ return std::toupper(c); });\nstd::cout << transformed << std::endl; // HELLO, WORLD!\n" } ] } From fce087f8422febc4af16e33d39bb014e43b8b29d Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Fri, 3 Jan 2025 20:31:52 +0000 Subject: [PATCH 12/15] Update consolidated snippets --- public/consolidated/cpp.json | 17 +++++++++++++++++ public/consolidated/javascript.json | 18 ++++++------------ 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/public/consolidated/cpp.json b/public/consolidated/cpp.json index e560e82d..6427f04f 100644 --- a/public/consolidated/cpp.json +++ b/public/consolidated/cpp.json @@ -32,6 +32,23 @@ } ] }, + { + "categoryName": "Debuging", + "snippets": [ + { + "title": "Vector Print", + "description": "Overloads the << operator to print the contents of a vector just like in python.", + "author": "Mohamed-faaris", + "tags": [ + "printing", + "debuging", + "vector" + ], + "contributors": [], + "code": "#include \n#include \n\ntemplate \nstd::ostream& operator<<(std::ostream& os, const std::vector& vec) {\n os << \"[\"; \n for (size_t i = 0; i < vec.size(); ++i) {\n os << vec[i]; // Print each vector element\n if (i != vec.size() - 1) {\n os << \", \"; // Add separator\n }\n }\n os << \"]\"; \n return os; // Return the stream\n}\n\n// Usage:\nstd::vector numbers = {1, 2, 3, 4, 5};\nstd::cout << numbers << std::endl; // Outputs: [1, 2, 3, 4, 5]\n\n" + } + ] + }, { "categoryName": "Math And Numbers", "snippets": [ diff --git a/public/consolidated/javascript.json b/public/consolidated/javascript.json index 99588330..c7b78ff8 100644 --- a/public/consolidated/javascript.json +++ b/public/consolidated/javascript.json @@ -85,10 +85,8 @@ "description": "Converts RGB color values to hexadecimal color code.", "author": "jjcantu", "tags": [ - "javascript", "color", - "conversion", - "utility" + "conversion" ], "contributors": [], "code": "function rgbToHex(r, g, b) {\n const toHex = (n) => {\n const hex = n.toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n };\n \n return '#' + toHex(r) + toHex(g) + toHex(b);\n}\n\n// Usage:\nconsole.log(rgbToHex(255, 128, 0)); // Output: \"#ff8000\"\nconsole.log(rgbToHex(0, 255, 0)); // Output: \"#00ff00\"\n" @@ -407,10 +405,8 @@ "description": "Converts bytes into human-readable file size format.", "author": "jjcantu", "tags": [ - "javascript", "format", - "size", - "utility" + "size" ], "contributors": [], "code": "function formatFileSize(bytes) {\n if (bytes === 0) return '0 Bytes';\n \n const k = 1024;\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n \n return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];\n}\n\n// Usage:\nconsole.log(formatFileSize(1234)); // Output: \"1.21 KB\"\nconsole.log(formatFileSize(1234567)); // Output: \"1.18 MB\"\n" @@ -506,13 +502,11 @@ "description": "Creates a deep copy of an object or array without reference.", "author": "jjcantu", "tags": [ - "javascript", "object", - "clone", - "utility" + "clone" ], "contributors": [], - "code": "function deepClone(obj) {\n if (obj === null || typeof obj !== 'object') return obj;\n \n const clone = Array.isArray(obj) ? [] : {};\n \n for (let key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n clone[key] = deepClone(obj[key]);\n }\n }\n \n return clone;\n}\n\n// Usage:\nconst original = { a: 1, b: { c: 2 }, d: [1, 2, 3] };\nconst cloned = deepClone(original);\nconsole.log(cloned); // Output: { a: 1, b: { c: 2 }, d: [1, 2, 3] }\n" + "code": "function deepClone(obj) {\n if (obj === null || typeof obj !== 'object') return obj;\n \n const clone = Array.isArray(obj) ? [] : {};\n \n for (let key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n clone[key] = deepClone(obj[key]);\n }\n }\n \n return clone;\n}\n\n// Usage:\nconst original = { a: 1, b: { c: 2 }, d: [1, 2, 3] };\nconst cloned = deepClone(original);\nconsole.log(cloned); // Output: 'original' but cloned\n" }, { "title": "Filter Object", @@ -758,9 +752,9 @@ "description": "Generates a UUID (v4) string.", "author": "jjcantu", "tags": [ - "javascript", "uuid", - "utility" + "generate", + "string" ], "contributors": [], "code": "function generateUUID() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n const r = Math.random() * 16 | 0;\n const v = c === 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n}\n\n// Usage:\nconsole.log(generateUUID()); // Output: \"a1b2c3d4-e5f6-4g7h-8i9j-k0l1m2n3o4p5\"\n" From a959e9503bef55728a97282c68aefb0fa0f3681b Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Fri, 3 Jan 2025 20:32:02 +0000 Subject: [PATCH 13/15] Update consolidated snippets --- public/consolidated/cpp.json | 17 +++++++++++++++++ public/consolidated/javascript.json | 18 ++++++------------ 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/public/consolidated/cpp.json b/public/consolidated/cpp.json index 088f9ef3..ae19d751 100644 --- a/public/consolidated/cpp.json +++ b/public/consolidated/cpp.json @@ -61,6 +61,23 @@ } ] }, + { + "categoryName": "Debuging", + "snippets": [ + { + "title": "Vector Print", + "description": "Overloads the << operator to print the contents of a vector just like in python.", + "author": "Mohamed-faaris", + "tags": [ + "printing", + "debuging", + "vector" + ], + "contributors": [], + "code": "#include \n#include \n\ntemplate \nstd::ostream& operator<<(std::ostream& os, const std::vector& vec) {\n os << \"[\"; \n for (size_t i = 0; i < vec.size(); ++i) {\n os << vec[i]; // Print each vector element\n if (i != vec.size() - 1) {\n os << \", \"; // Add separator\n }\n }\n os << \"]\"; \n return os; // Return the stream\n}\n\n// Usage:\nstd::vector numbers = {1, 2, 3, 4, 5};\nstd::cout << numbers << std::endl; // Outputs: [1, 2, 3, 4, 5]\n\n" + } + ] + }, { "categoryName": "File Handling", "snippets": [ diff --git a/public/consolidated/javascript.json b/public/consolidated/javascript.json index 99588330..c7b78ff8 100644 --- a/public/consolidated/javascript.json +++ b/public/consolidated/javascript.json @@ -85,10 +85,8 @@ "description": "Converts RGB color values to hexadecimal color code.", "author": "jjcantu", "tags": [ - "javascript", "color", - "conversion", - "utility" + "conversion" ], "contributors": [], "code": "function rgbToHex(r, g, b) {\n const toHex = (n) => {\n const hex = n.toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n };\n \n return '#' + toHex(r) + toHex(g) + toHex(b);\n}\n\n// Usage:\nconsole.log(rgbToHex(255, 128, 0)); // Output: \"#ff8000\"\nconsole.log(rgbToHex(0, 255, 0)); // Output: \"#00ff00\"\n" @@ -407,10 +405,8 @@ "description": "Converts bytes into human-readable file size format.", "author": "jjcantu", "tags": [ - "javascript", "format", - "size", - "utility" + "size" ], "contributors": [], "code": "function formatFileSize(bytes) {\n if (bytes === 0) return '0 Bytes';\n \n const k = 1024;\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n \n return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];\n}\n\n// Usage:\nconsole.log(formatFileSize(1234)); // Output: \"1.21 KB\"\nconsole.log(formatFileSize(1234567)); // Output: \"1.18 MB\"\n" @@ -506,13 +502,11 @@ "description": "Creates a deep copy of an object or array without reference.", "author": "jjcantu", "tags": [ - "javascript", "object", - "clone", - "utility" + "clone" ], "contributors": [], - "code": "function deepClone(obj) {\n if (obj === null || typeof obj !== 'object') return obj;\n \n const clone = Array.isArray(obj) ? [] : {};\n \n for (let key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n clone[key] = deepClone(obj[key]);\n }\n }\n \n return clone;\n}\n\n// Usage:\nconst original = { a: 1, b: { c: 2 }, d: [1, 2, 3] };\nconst cloned = deepClone(original);\nconsole.log(cloned); // Output: { a: 1, b: { c: 2 }, d: [1, 2, 3] }\n" + "code": "function deepClone(obj) {\n if (obj === null || typeof obj !== 'object') return obj;\n \n const clone = Array.isArray(obj) ? [] : {};\n \n for (let key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n clone[key] = deepClone(obj[key]);\n }\n }\n \n return clone;\n}\n\n// Usage:\nconst original = { a: 1, b: { c: 2 }, d: [1, 2, 3] };\nconst cloned = deepClone(original);\nconsole.log(cloned); // Output: 'original' but cloned\n" }, { "title": "Filter Object", @@ -758,9 +752,9 @@ "description": "Generates a UUID (v4) string.", "author": "jjcantu", "tags": [ - "javascript", "uuid", - "utility" + "generate", + "string" ], "contributors": [], "code": "function generateUUID() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n const r = Math.random() * 16 | 0;\n const v = c === 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n}\n\n// Usage:\nconsole.log(generateUUID()); // Output: \"a1b2c3d4-e5f6-4g7h-8i9j-k0l1m2n3o4p5\"\n" From 112302e456d8b7d871d619d6b6ca5dd124675b0c Mon Sep 17 00:00:00 2001 From: majvax Date: Mon, 6 Jan 2025 22:11:55 +0100 Subject: [PATCH 14/15] Revert "Merge remote-tracking branch 'origin/main' into snippets-c++" This reverts commit 4708bd931837bef88af62d7d7414ed304a4317ab, reversing changes made to a959e9503bef55728a97282c68aefb0fa0f3681b. --- public/consolidated/cpp.json | 41 ++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/public/consolidated/cpp.json b/public/consolidated/cpp.json index f293d347..ae19d751 100644 --- a/public/consolidated/cpp.json +++ b/public/consolidated/cpp.json @@ -78,6 +78,47 @@ } ] }, + { + "categoryName": "File Handling", + "snippets": [ + { + "title": "Find files recursively", + "description": "Find all the files in a directory and subdirectories using a predicate function.", + "author": "majvax", + "tags": [ + "filesystem", + "file_search", + "c++17" + ], + "contributors": [], + "code": "#include \n#include \n#include \n\ntemplate \nstd::vector find_files_recursive(const std::string& path, P&& predicate) {\n std::vector files;\n std::error_code ec;\n\n if (!std::filesystem::exists(path, ec) || ec)\n return files;\n if (!std::filesystem::is_directory(path, ec) || ec)\n return files;\n\n auto it = std::filesystem::recursive_directory_iterator(path, ec);\n if (ec)\n return files;\n\n for (const auto& entry : it)\n if (!std::filesystem::is_directory(entry) && predicate(entry.path()))\n files.push_back(entry.path());\n\n return files;\n}\n\n\n\n// Usage:\n\n// Find all files with size greater than 10MB\nauto files = find_files_recursive(\"Path\", [](const auto& p) {\n return std::filesystem::file_size(p) > 10 * 1024 * 1024;\n});\n\n// Find all files with \".pdf\" as extension\nauto files = find_files_recursive(\"Path\", [](const auto& p) {\n return p.extension() == \".pdf\";\n});\n\n// Find all files writed after The New Year\n#include \n// need std=c++20\nauto jan_1_2025 = std::filesystem::file_time_type::clock::from_sys(\n std::chrono::sys_days{std::chrono::year{2025}/std::chrono::month{1}/std::chrono::day{1}}\n);\nauto files = find_files_recursive(\"Path\", [jan_1_2025](const auto& p) {\n return std::filesystem::last_write_time(p) > jan_1_2025;\n}),\n" + }, + { + "title": "Find files", + "description": "Find all the files in a directory using a predicate function.", + "author": "majvax", + "tags": [ + "filesystem", + "file_search", + "c++17" + ], + "contributors": [], + "code": "#include \n#include \n#include \n\ntemplate \nstd::vector find_files(const std::string& path, P&& predicate) {\n std::vector files;\n std::error_code ec;\n\n if (!std::filesystem::exists(path, ec) || ec)\n return files;\n if (!std::filesystem::is_directory(path, ec) || ec)\n return files;\n\n auto it = std::filesystem::directory_iterator(path, ec);\n if (ec)\n return files;\n\n for (const auto& entry : it)\n if (!std::filesystem::is_directory(entry) && predicate(entry.path()))\n files.push_back(entry.path());\n\n return files;\n}\n\n\n\n// Usage:\n\n// Find all files with size greater than 10MB\nauto files = find_files(\"Path\", [](const auto& p) {\n return std::filesystem::file_size(p) > 10 * 1024 * 1024;\n});\n\n// Find all files with \".pdf\" as extension\nauto files = find_files(\"Path\", [](const auto& p) {\n return p.extension() == \".pdf\";\n});\n\n// Find all files writed after The New Year\n#include \n// need std=c++20\nauto jan_1_2025 = std::filesystem::file_time_type::clock::from_sys(\n std::chrono::sys_days{std::chrono::year{2025}/std::chrono::month{1}/std::chrono::day{1}}\n);\nauto files = find_files(\"Path\", [jan_1_2025](const auto& p) {\n return std::filesystem::last_write_time(p) > jan_1_2025;\n}),\n" + }, + { + "title": "List Directories", + "description": "Lists all the directories in a path.", + "author": "majvax", + "tags": [ + "filesystem", + "directories", + "c++17" + ], + "contributors": [], + "code": "#include \n#include \n#include \n\nstd::vector list_directories(const std::string& path) {\n std::vector files;\n std::error_code ec;\n\n if (!std::filesystem::exists(path, ec) || ec)\n return files;\n if (!std::filesystem::is_directory(path, ec) || ec)\n return files;\n\n auto it = std::filesystem::directory_iterator(path, ec);\n if (ec)\n return files;\n\n for (const auto& entry : it)\n if (std::filesystem::is_directory(entry))\n files.push_back(entry.path());\n\n return files;\n}\n\n\n\n// Usage:\nauto directories = list_directories(\"Path\");\n" + } + ] + }, { "categoryName": "Math And Numbers", "snippets": [ From 812842f169fb230a52cdd5ebec0b1536d80858f0 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Mon, 6 Jan 2025 21:54:44 +0000 Subject: [PATCH 15/15] Update consolidated snippets --- public/consolidated/cpp.json | 70 +++++++++++++++++++++++++++++ public/consolidated/javascript.json | 2 +- 2 files changed, 71 insertions(+), 1 deletion(-) diff --git a/public/consolidated/cpp.json b/public/consolidated/cpp.json index fd5e1b09..a2ac2902 100644 --- a/public/consolidated/cpp.json +++ b/public/consolidated/cpp.json @@ -1,4 +1,33 @@ [ + { + "name": "Array Manipulation", + "snippets": [ + { + "title": "Filter Vector", + "description": "Filters a vector using a predicate function.", + "author": "majvax", + "tags": [ + "array", + "filter", + "c++23" + ], + "contributors": [], + "code": "#include \n#include \n\ntemplate \nauto filter(const std::vector& vec, P&& predicate) {\n return vec\n | std::views::filter(std::forward

(predicate))\n | std::ranges::to>();\n}\n\n\n\n// Usage:\nstd::vector vec = {1, 2, 3, 4, 5};\nstd::vector filtered = filter(vec, [](int i){ return i % 2 == 0; });\n// filtered contains 2 and 4\n" + }, + { + "title": "Transform Vector", + "description": "Transforms a vector using a function.", + "author": "majvax", + "tags": [ + "array", + "transform", + "c++23" + ], + "contributors": [], + "code": "#include \n#include \n\ntemplate \nauto transform(const std::vector& vec, F&& transformer) {\n using U = std::invoke_result_t;\n return vec\n | std::views::transform(std::forward(transformer))\n | std::ranges::to>();\n}\n\n\n\n// Usage:\nstd::vector vec = {1, 2, 3, 4, 5};\nstd::vector transformed = transform(vec, [](int i){ return i * 2; });\n// transformed contains 2, 4, 6, 8, 10\n" + } + ] + }, { "name": "Basics", "snippets": [ @@ -66,6 +95,47 @@ } ] }, + { + "name": "File Handling", + "snippets": [ + { + "title": "Find files recursively", + "description": "Find all the files in a directory and subdirectories using a predicate function.", + "author": "majvax", + "tags": [ + "filesystem", + "file_search", + "c++17" + ], + "contributors": [], + "code": "#include \n#include \n#include \n\ntemplate \nstd::vector find_files_recursive(const std::string& path, P&& predicate) {\n std::vector files;\n std::error_code ec;\n\n if (!std::filesystem::exists(path, ec) || ec)\n return files;\n if (!std::filesystem::is_directory(path, ec) || ec)\n return files;\n\n auto it = std::filesystem::recursive_directory_iterator(path, ec);\n if (ec)\n return files;\n\n for (const auto& entry : it)\n if (!std::filesystem::is_directory(entry) && predicate(entry.path()))\n files.push_back(entry.path());\n\n return files;\n}\n\n\n\n// Usage:\n\n// Find all files with size greater than 10MB\nauto files = find_files_recursive(\"Path\", [](const auto& p) {\n return std::filesystem::file_size(p) > 10 * 1024 * 1024;\n});\n\n// Find all files with \".pdf\" as extension\nauto files = find_files_recursive(\"Path\", [](const auto& p) {\n return p.extension() == \".pdf\";\n});\n\n// Find all files writed after The New Year\n#include \n// need std=c++20\nauto jan_1_2025 = std::filesystem::file_time_type::clock::from_sys(\n std::chrono::sys_days{std::chrono::year{2025}/std::chrono::month{1}/std::chrono::day{1}}\n);\nauto files = find_files_recursive(\"Path\", [jan_1_2025](const auto& p) {\n return std::filesystem::last_write_time(p) > jan_1_2025;\n}),\n" + }, + { + "title": "Find files", + "description": "Find all the files in a directory using a predicate function.", + "author": "majvax", + "tags": [ + "filesystem", + "file_search", + "c++17" + ], + "contributors": [], + "code": "#include \n#include \n#include \n\ntemplate \nstd::vector find_files(const std::string& path, P&& predicate) {\n std::vector files;\n std::error_code ec;\n\n if (!std::filesystem::exists(path, ec) || ec)\n return files;\n if (!std::filesystem::is_directory(path, ec) || ec)\n return files;\n\n auto it = std::filesystem::directory_iterator(path, ec);\n if (ec)\n return files;\n\n for (const auto& entry : it)\n if (!std::filesystem::is_directory(entry) && predicate(entry.path()))\n files.push_back(entry.path());\n\n return files;\n}\n\n\n\n// Usage:\n\n// Find all files with size greater than 10MB\nauto files = find_files(\"Path\", [](const auto& p) {\n return std::filesystem::file_size(p) > 10 * 1024 * 1024;\n});\n\n// Find all files with \".pdf\" as extension\nauto files = find_files(\"Path\", [](const auto& p) {\n return p.extension() == \".pdf\";\n});\n\n// Find all files writed after The New Year\n#include \n// need std=c++20\nauto jan_1_2025 = std::filesystem::file_time_type::clock::from_sys(\n std::chrono::sys_days{std::chrono::year{2025}/std::chrono::month{1}/std::chrono::day{1}}\n);\nauto files = find_files(\"Path\", [jan_1_2025](const auto& p) {\n return std::filesystem::last_write_time(p) > jan_1_2025;\n}),\n" + }, + { + "title": "List Directories", + "description": "Lists all the directories in a path.", + "author": "majvax", + "tags": [ + "filesystem", + "directories", + "c++17" + ], + "contributors": [], + "code": "#include \n#include \n#include \n\nstd::vector list_directories(const std::string& path) {\n std::vector files;\n std::error_code ec;\n\n if (!std::filesystem::exists(path, ec) || ec)\n return files;\n if (!std::filesystem::is_directory(path, ec) || ec)\n return files;\n\n auto it = std::filesystem::directory_iterator(path, ec);\n if (ec)\n return files;\n\n for (const auto& entry : it)\n if (std::filesystem::is_directory(entry))\n files.push_back(entry.path());\n\n return files;\n}\n\n\n\n// Usage:\nauto directories = list_directories(\"Path\");\n" + } + ] + }, { "name": "Math And Numbers", "snippets": [ diff --git a/public/consolidated/javascript.json b/public/consolidated/javascript.json index 7087e0ec..fbaf9ffd 100644 --- a/public/consolidated/javascript.json +++ b/public/consolidated/javascript.json @@ -410,7 +410,7 @@ "algebra" ], "contributors": [], - "code": "function combinations(n, r) {\n function factorial(x) {\n if (x === 0 || x === 1) return 1;\n let result = 1;\n for (let i = 2; i <= x; i++) {\n result *= i;\n }\n return result;\n }\n return factorial(n) / (factorial(r) * factorial(n - r));\n}\n\n// Usage:\ncombinations(12,24); // Returns: 7.720248753351544e-16\ncombinations(1,22); // Returns: 8.896791392450574e-22\n" + "code": "function combinations(n, r) {\n if (n < 0 || r < 0 || n < r) {\n throw new Error('Invalid input: n and r must be non-negative and n must be greater than or equal to r.');\n }\n\n function factorial(x) {\n if (x === 0 || x === 1) return 1;\n let result = 1;\n for (let i = 2; i <= x; i++) {\n result *= i;\n }\n return result;\n }\n\n const numerator = factorial(n);\n const denominator = factorial(r) * factorial(n - r);\n return numerator / denominator;\n}\n\n// Usage:\ncombinations(24,22); // Returns: 276\ncombinations(5,3); // Returns: 10\n" }, { "title": "Cross Product", pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy