commit f5e7baa1bdde00a025432c8c3bf8bbc26f7cb364 Author: Wong Ding Feng Date: Sat Mar 14 23:25:02 2026 +0800 Initial commit: Modular Clang C++ Nix environment and problem files diff --git a/Problems b/Problems new file mode 100644 index 0000000..eaca1aa Binary files /dev/null and b/Problems differ diff --git a/code/1415.the-k-th-lexicographical-string-of-all-happy-strings-of-length-n.cpp b/code/1415.the-k-th-lexicographical-string-of-all-happy-strings-of-length-n.cpp new file mode 100644 index 0000000..8988546 --- /dev/null +++ b/code/1415.the-k-th-lexicographical-string-of-all-happy-strings-of-length-n.cpp @@ -0,0 +1,5 @@ +class Solution { +public: + string getHappyString(int n, int k) { + } +}; diff --git a/code/1415.the-k-th-lexicographical-string-of-all-happy-strings-of-length-n.rs b/code/1415.the-k-th-lexicographical-string-of-all-happy-strings-of-length-n.rs new file mode 100644 index 0000000..cfe59ae --- /dev/null +++ b/code/1415.the-k-th-lexicographical-string-of-all-happy-strings-of-length-n.rs @@ -0,0 +1,5 @@ +impl Solution { + pub fn get_happy_string(n: i32, k: i32) -> String { + + } +} diff --git a/code/1415.the-k-th-lexicographical-string-of-all-happy-strings-of-length-n.tests.dat b/code/1415.the-k-th-lexicographical-string-of-all-happy-strings-of-length-n.tests.dat new file mode 100644 index 0000000..b642cbc --- /dev/null +++ b/code/1415.the-k-th-lexicographical-string-of-all-happy-strings-of-length-n.tests.dat @@ -0,0 +1,6 @@ +1 +3 +1 +4 +3 +9 \ No newline at end of file diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..9b54eed --- /dev/null +++ b/flake.nix @@ -0,0 +1,34 @@ +{ + description: "A modular Clang C++ development environment"; + + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + flake-utils.url = "github:numtide/flake-utils"; + treefmt-nix = { + url = "github:numtide/treefmt-nix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + }; + + outputs = { self, nixpkgs, flake-utils, treefmt-nix }: + flake-utils.lib.eachDefaultSystem (system: + let + pkgs = import nixpkgs { + inherit system; + config.allowUnfree = true; + }; + + # Configuration for LLVM/Clang version + # Change this to "16", "17", "18", or "19" to switch versions + llvmVersion = "18"; + + nixLib = import ./nix { + inherit pkgs treefmt-nix llvmVersion; + }; + in + { + devShells.default = nixLib.devShell; + formatter = nixLib.formatter; + } + ); +} diff --git a/leetcode.toml b/leetcode.toml new file mode 100644 index 0000000..53ad43b --- /dev/null +++ b/leetcode.toml @@ -0,0 +1,15 @@ +[code] +editor = "emacsclient" +test = true +lang = "cpp" + +[cookies] +csrf = "r8aszHnQmx8ihvyyf6IiinGc3oO84R8G" +session = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfYXV0aF91c2VyX2lkIjoiOTg4NzMzIiwiX2F1dGhfdXNlcl9iYWNrZW5kIjoiYWxsYXV0aC5hY2NvdW50LmF1dGhfYmFja2VuZHMuQXV0aGVudGljYXRpb25CYWNrZW5kIiwiX2F1dGhfdXNlcl9oYXNoIjoiZDAzNTJlZWYyYWU3Zjc5NDhmOGRhZjMyYWVmMzM2MzBkZWIxNTA2NjkwMzg4NjcwOTgyZjA0YmZiMTQ1NWVhZSIsInNlc3Npb25fdXVpZCI6ImFhMzZmNjNjIiwiaWQiOjk4ODczMywiZW1haWwiOiJkZndvbmc1NTY2QGdtYWlsLmNvbSIsInVzZXJuYW1lIjoiaWFtc2NydWIiLCJ1c2VyX3NsdWciOiJpYW1zY3J1YiIsImF2YXRhciI6Imh0dHBzOi8vYXNzZXRzLmxlZXRjb2RlLmNvbS91c2Vycy9hdmF0YXJzL2F2YXRhcl8xNjk2NzQ4MTM0LnBuZyIsInJlZnJlc2hlZF9hdCI6MTc3MzUwMDQ0MSwiaXAiOiIxODUuNS4xMzIuMjgiLCJpZGVudGl0eSI6IjdhODA0YzA1NmYyZDM2YzNjNDRiZTVmM2Q2NDhlMDk2IiwiZGV2aWNlX3dpdGhfaXAiOlsiNDIwN2QyYjQ4NjE0MDBiM2VkNjY3YzdlM2ZmNzkwMTMiLCIxODUuNS4xMzIuMjgiXSwiX3Nlc3Npb25fZXhwaXJ5IjoxMjA5NjAwfQ.fBFD0da7kfN9EcNCqpHtHBivJuepwQRS7AVwmH-LX4Q" +site = "leetcode.com" + +[storage] +cache = "Problems" +code = "code" +root = "~/.leetcode" +scripts = "scripts" diff --git a/nix/default.nix b/nix/default.nix new file mode 100644 index 0000000..00f91aa --- /dev/null +++ b/nix/default.nix @@ -0,0 +1,9 @@ +{ pkgs, treefmt-nix, llvmVersion }: +let + treefmt = import ./treefmt.nix { inherit pkgs treefmt-nix; }; + devShell = import ./devshells/default.nix { inherit pkgs llvmVersion; }; +in +{ + inherit devShell; + formatter = treefmt.config.build.wrapper; +} diff --git a/nix/devshells/default.nix b/nix/devshells/default.nix new file mode 100644 index 0000000..67a60b6 --- /dev/null +++ b/nix/devshells/default.nix @@ -0,0 +1,38 @@ +{ pkgs, llvmVersion }: +let + # Select the correct LLVM/Clang version + llvmPackages = pkgs."llvmPackages_${llvmVersion}"; +in +pkgs.mkShell { + name = "clang-cpp-shell"; + + # Native dependencies (e.g., compilers, build tools) + nativeBuildInputs = with pkgs; [ + # Compiler and core tools + llvmPackages.clang + llvmPackages.lld + llvmPackages.bintools + + # Language-specific tools + llvmPackages.clang-tools # Includes clang-format, clang-tidy + cmake + ninja + gdb + valgrind + nixpkgs-fmt + ]; + + # Runtime dependencies (e.g., shared libraries) + buildInputs = with pkgs; [ + # Common libraries (example) + libcxx + boost + ]; + + # Environment variables + shellHook = '' + export CC=clang + export CXX=clang++ + echo "Clang version: $(${llvmPackages.clang}/bin/clang --version | head -n 1)" + ''; +} diff --git a/nix/treefmt.nix b/nix/treefmt.nix new file mode 100644 index 0000000..054c1bf --- /dev/null +++ b/nix/treefmt.nix @@ -0,0 +1,16 @@ +{ pkgs, treefmt-nix }: +treefmt-nix.lib.evalModule pkgs { + projectRootFile = "flake.nix"; + + # Configure individual formatters + programs = { + # Nix formatter + nixpkgs-fmt.enable = true; + + # C++ formatter + clang-format.enable = true; + }; + + # Optional settings + settings.formatter.clang-format.includes = [ "*.cpp" "*.h" "*.hpp" "*.c" ]; +}