{"id":9499,"date":"2025-08-20T16:26:59","date_gmt":"2025-08-20T10:56:59","guid":{"rendered":"https:\/\/namastedev.com\/blog\/?p=9499"},"modified":"2025-10-13T15:22:28","modified_gmt":"2025-10-13T09:52:28","slug":"n-queens","status":"publish","type":"post","link":"https:\/\/namastedev.com\/blog\/n-queens\/","title":{"rendered":"N Queens"},"content":{"rendered":"\n<!-- N Queens_13-->\n<link\n    href=\"https:\/\/cdn.jsdelivr.net\/npm\/prismjs@1.29.0\/themes\/prism-tomorrow.min.css\"\n    rel=\"stylesheet\"\n\/>\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/prismjs@1.29.0\/prism.min.js\"><\/script>\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/prismjs@1.29.0\/plugins\/autoloader\/prism-autoloader.min.js\"><\/script>\n\n<style>\n.wp_blog_theme {\n  --primary: #E58C32;\n  --secondary: #030302;\n  --light-bg: #fef9f4;\n  --text-dark: #2d2d2d;\n  --tab-radius: 12px;\n  --shadow: 0 4px 12px rgba(0, 0, 0, 0.08);\n  --code-bg: #001f3f;\n  --code-text: #d4f1ff;\n}\n\n.wp_blog_container {\n  font-family: 'Segoe UI', sans-serif;\n  background: var(--light-bg);\n  margin: 0;\n  padding: 0;\n  color: var(--text-dark);\n}\n\n\/* Heading *\/\n.wp_blog_main-heading {\n  text-align: center;\n  font-size: 2.4rem;\n  color: var(--primary);\n  margin-top: 2.5rem;\n  font-weight: bold;\n}\n\n\/* Explanation Card *\/\n.wp_blog_explanation,\n.wp_blog_code-tabs-container {\n  max-width: 940px;\n  margin: 2rem auto;\n  padding: 2rem;\n  background: white;\n  border-radius: var(--tab-radius);\n  box-shadow: var(--shadow);\n}\n\n\/* Text and Visuals *\/\n.wp_blog_explanation h2 {\n  font-size: 1.4rem;\n  color: var(--primary);\n  margin-bottom: 0.5rem;\n}\n\n.wp_blog_explanation p,\n.wp_blog_explanation li {\n  font-size: 1.05rem;\n  line-height: 1.7;\n  margin: 0.5rem 0;\n}\n\n.wp_blog_explanation code {\n  background: #fef9f4;   \/* light bg instead of dark blue *\/\n  color: #E58C32;        \/* brand orange *\/\n  padding: 3px 6px;\n  border-radius: 4px;\n  font-family: 'Courier New', monospace;\n  font-weight: 600;      \/* optional, makes it pop *\/\n}\n\n.wp_blog_explanation img {\n  max-width: 100%;\n  border-radius: var(--tab-radius);\n  margin-top: 1rem;\n  box-shadow: 0 2px 12px rgba(0, 0, 0, 0.06);\n}\n\n\/* Tab Buttons *\/\n.wp_blog_code-tabs-header {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 0.5rem;\n  margin-bottom: 1rem;\n}\n\n.wp_blog_code-tab-button {\n  padding: 0.6rem 1.2rem;\n  border: 1px solid var(--primary);\n  background: white;\n  color: var(--primary);\n  border-radius: 50px;\n  font-weight: 600;\n  cursor: pointer;\n  transition: all 0.3s ease;\n}\n\n.wp_blog_code-tab-button:hover {\n  background: var(--secondary);\n}\n\n.wp_blog_code-tab-button.active {\n  background: var(--primary);\n  color: white;\n}\n\n\/* Code Content *\/\n.wp_blog_code-tab-content {\n  display: none;\n  background: var(--code-bg);\n  border-radius: var(--tab-radius);\n}\n\n.wp_blog_code-tab-content.active {\n  display: block;\n}\n\n.wp_blog_code-tab-content pre {\n  margin: 0;\n  padding: 1.5rem;\n  font-size: 1rem;\n  overflow-x: auto;\n  background: var(--code-bg);\n  border-radius: var(--tab-radius);\n  color: var(--code-text);\n}\n\n\/* Dark mode variables *\/\n.wp_blog_theme.dark-mode {\n  --light-bg: #121212;\n  --text-dark: #f5f5f5;\n  --shadow: 0 4px 12px rgba(255, 255, 255, 0.08);\n  --code-bg: #1e1e1e;\n  --code-text: #c5f0ff;\n}\n\n.wp_blog_theme.dark-mode .wp_blog_explanation {\n  background: #1e1e1e;\n}\n\n\/* Dark mode code highlight *\/\n.wp_blog_theme.dark-mode .wp_blog_explanation code {\n  background: #333;\n  color: #ffd27f;\n}\n\n.wp_blog_theme {\n  position: relative; \/* makes it the reference for absolute children *\/\n}\n\n.wp_blog_toggle-btn {\n  position: absolute;\n  top: 1rem;\n  right: 1rem;\n  z-index: 9999;\n  padding: 0.5rem 0.8rem;\n  border-radius: 10%;\n  background: var(--primary);\n  color: white;\n  font-weight: bold;\n  cursor: pointer;\n  border: none;\n  box-shadow: var(--shadow);\n  transition: background 0.3s, transform 0.2s;\n}\n\n.wp_blog_toggle-btn:hover {\n  background: #cc772e;\n}\n\n.wp_blog_theme.dark-mode .wp_blog_code-tabs-container {\n  background: #1e1e1e;\n}\n<\/style>\n\n<div class=\"wp_blog_container wp_blog_theme\">\n<button id=\"blogNotesThemeToggle\" class=\"wp_blog_toggle-btn\">\ud83c\udf19<\/button>\n<h1 class=\"wp_blog_main-heading\"><\/h1>\n\n<div class=\"wp_blog_explanation\">\n    <h2>Problem Statement:<\/h2>\n    <p>\n        The <strong>n-queens<\/strong> puzzle is the problem of placing <code>n<\/code> queens on an <code>n x n<\/code> chessboard such that no two queens attack each other.\n    <\/p>\n\n    <p>\n        Given an integer <code>n<\/code>, return all distinct solutions to the <i><strong>n-queens puzzle<\/strong><\/i>. You may return the answer in <strong>any order<\/strong>.\n    <\/p>\n\n    <p>\n        Each solution contains a distinct board configuration of the n-queens&#8217; placement, where <code>'Q'<\/code> and <code>'.'<\/code> both indicate a queen and an empty space, respectively.\n    <\/p>\n\n    <p><strong>Example 1:<\/strong><\/p>\n    <img decoding=\"async\" src=\"https:\/\/namastedev.com\/blog\/wp-content\/uploads\/2025\/08\/Screenshot-2025-08-20-at-3.16.26\u202fPM.png\" alt=\"\">\n    <p><strong>Input:<\/strong> n = 4<\/p>\n    <p><strong>Output:<\/strong><code> \n        [[\".Q..\",\"...Q\",\"Q...\",\"..Q.\"],[\"..Q.\",\"Q...\",\"...Q\",\".Q..\"]]\n<\/code><\/p>\n    <p><strong>Explanation:<\/strong> There exist two distinct solutions to the 4-queens puzzle as shown above.<\/p>\n\n    <p><strong>Example 2:<\/strong><\/p>\n    <p><strong>Input:<\/strong> n = 1<\/p>\n    <p><strong>Output:<\/strong><code> [[\"Q\"]]<\/code><\/p>\n\n    <h2>Constraints:<\/h2>\n    <ul>\n        <li><code>1 <= n <= 9<\/code><\/li>\n    <\/ul>\n\n    <h2>Approach:<\/h2>\n   <ul>\n    <li>Use <code>backtracking<\/code> <strong>row by row<\/strong> to try placing queens.<\/li>\n    <li>Keep <strong>three sets<\/strong> to track conflicts:\n        <ul>\n            <li><code>colSet<\/code> \u2192 columns with a queen.<\/li>\n            <li><code>digSet<\/code> \u2192 diagonals with slope \\ <code>(row - col)<\/code>.<\/li>\n            <li><code>antiDigSet<\/code> \u2192 diagonals with slope \/ <code>(row + col)<\/code>.<\/li>\n        <\/ul>\n    <\/li>\n    <li><strong>At each row<\/strong>:\n        <ul>\n            <li>Try every <code>column<\/code>.<\/li>\n            <li>If column or <code>diagonals<\/code> are already attacked, <code>skip<\/code>.<\/li>\n            <li>Otherwise, <strong>place a queen<\/strong>, mark sets, and recurse for the next row.<\/li>\n        <\/ul>\n    <\/li>\n    <li>If all <code>rows are filled<\/code>, convert board into string form and add to results.<\/li>\n    <li>After recursion, <code>remove the queen<\/code> (backtrack) and <code>unmark sets<\/code>.<\/li>\n   <\/ul> \n\n    <h2>Time Complexity:<\/h2>\n    <li><p><strong>Time Complexity = O(n!)<\/strong><\/p><\/li> \n    <h2>Space Complexity:<\/h2>\n    <li><p><strong>Space Complexity =  O(n<sup>2<\/sup>)<\/strong><\/p><\/li>\n\n<h2>Dry Run<\/h2>\n\n<div style=\"border-left: 4px solid var(--primary); padding: 1rem; border-radius: var(--tab-radius); margin: 1rem 0;\">\n\n  <p><strong>Input:<\/strong><\/p>\n  <pre>\nn = 4\n  <\/pre>\n\n  <p><strong>State Transitions:<\/strong><\/p>\n  <pre>\nInitialize:\n  result = []\n  board = [\n    [\".\",\".\",\".\",\".\"],\n    [\".\",\".\",\".\",\".\"],\n    [\".\",\".\",\".\",\".\"],\n    [\".\",\".\",\".\",\".\"]\n  ]\n\nCall backtrack(board, row=0, colSet={}, digSet={}, antiDigSet={})\n\nLevel 0: row = 0\n  col=0 \u2192 safe \u2192 place Q\n    board[0][0] = \"Q\"\n    colSet = {0}, digSet = {0}, antiDigSet = {0}\n    \u2192 recurse row=1\n\nLevel 1: row = 1\n  col=0 \u2192 colSet has 0 \u2192 skip\n  col=1 \u2192 digSet has (1-1=0) \u2192 skip\n  col=2 \u2192 safe \u2192 place Q\n    board[1][2] = \"Q\"\n    colSet = {0,2}, digSet = {0,-1}, antiDigSet = {0,3}\n    \u2192 recurse row=2\n\nLevel 2: row = 2\n  col=0 \u2192 colSet has 0 \u2192 skip\n  col=1 \u2192 safe \u2192 place Q\n    board[2][1] = \"Q\"\n    colSet = {0,1,2}, digSet = {0,-1,1}, antiDigSet = {0,3,3}\n    \u2192 recurse row=3\n\nLevel 3: row = 3\n  col=0 \u2192 colSet has 0 \u2192 skip\n  col=1 \u2192 colSet has 1 \u2192 skip\n  col=2 \u2192 colSet has 2 \u2192 skip\n  col=3 \u2192 digSet has (3-3=0) \u2192 skip\n  \u2192 no placement possible \u2192 backtrack\n\nRemove Q at (2,1)\n\nBacktracking row = 2\n  col=2 \u2192 colSet has 2 \u2192 skip\n  col=3 \u2192 safe \u2192 place Q\n    board[2][3] = \"Q\"\n    colSet = {0,2,3}, digSet = {0,-1,-1}, antiDigSet = {0,3,5}\n    \u2192 recurse row=3\n\nLevel 3: row = 3\n  col=0 \u2192 safe \u2192 place Q\n    board[3][0] = \"Q\"\n    colSet = {0,2,3}, digSet = {0,-1,-1,3}, antiDigSet = {0,3,5,3}\n\n  row == n \u2192 solution found!\n\nTransform(board):\n  [\".Q..\", \"...Q\", \"Q...\", \"..Q.\"]\n\n\u2192 push to result\n\nBacktracking continues to find 2nd solution\u2026\n\nEventually result =\n[\n  [\".Q..\",\"...Q\",\"Q...\",\"..Q.\"],\n  [\"..Q.\",\"Q...\",\"...Q\",\".Q..\"]\n]\n  <\/pre>\n\n  <p><strong>Final Output:<\/strong><\/p>\n  <pre>\n[\n  [\".Q..\",\"...Q\",\"Q...\",\"..Q.\"],\n  [\"..Q.\",\"Q...\",\"...Q\",\".Q..\"]\n]\n  <\/pre>\n\n  <p><strong>Explanation:<\/strong><\/p>\n  <p>\n    The algorithm uses <strong>backtracking with sets<\/strong> to track:\n    <ul>\n      <li><code>colSet<\/code>: columns already occupied<\/li>\n      <li><code>digSet<\/code>: diagonals (row - col)<\/li>\n      <li><code>antiDigSet<\/code>: anti-diagonals (row + col)<\/li>\n    <\/ul>\n    Steps:\n    <ol>\n      <li>Start from row 0 and try placing queens in safe positions.<\/li>\n      <li>If a placement is valid, recurse to the next row.<\/li>\n      <li>If no valid placement, backtrack by removing the last queen.<\/li>\n      <li>When row == n, transform the board into string format and store in result.<\/li>\n      <li>Finally, all valid 4-Queens solutions are collected.<\/li>\n    <\/ol>\n  <\/p>\n\n<\/div>\n\n<\/div>\n\n\n<div class=\"wp_blog_code-tabs-container\">\n    <div class=\"wp_blog_code-tabs-header\">\n        <button class=\"wp_blog_code-tab-button active\" data-lang=\"js\">JavaScript<\/button>\n        <button class=\"wp_blog_code-tab-button\" data-lang=\"py\">Python<\/button>\n        <button class=\"wp_blog_code-tab-button\" data-lang=\"java\">Java<\/button>\n        <button class=\"wp_blog_code-tab-button\" data-lang=\"cpp\">C++<\/button>\n        <button class=\"wp_blog_code-tab-button\" data-lang=\"c\">C<\/button>\n        <button class=\"wp_blog_code-tab-button\" data-lang=\"cs\">C#<\/button>\n    <\/div>\n\n    <div class=\"wp_blog_code-tab-content active\" data-lang=\"js\">\n<pre><code class=\"language-javascript\">\nvar solveNQueens = function(n) {\n    let result = [];\n    let board = Array.from({ length: n}, () => Array(n).fill(\".\"));\n    let backtrack = (board, row, colSet, digSet, antiDigSet) => {\n        if(row == n){\n            result.push(transform(board));\n        }\n         for (let col = 0; col < n; col++) {\n            if (colSet.has(col) ||\n                digSet.has(row - col) ||\n                antiDigSet.has(row + col)) {\n                continue;\n                }\n                board [row][col] = \"Q\";\n                colSet.add(col);\n                digSet.add(row - col);\n                antiDigSet.add(row + col);\n\n                backtrack(board, row + 1, colSet, digSet, antiDigSet);\n                board[row][col] = \".\";\n                colSet.delete(col);\n                digSet.delete(row - col);\n                antiDigSet.delete(row + col);\n            }\n        };\n        backtrack(board, 0, new Set(), new Set(), new Set());\n        return result;\n    };\n\nlet transform = (board) => {\n    let newBoard = [];\n    for(let i=0; i < board.length; i++){\n        newBoard.push(board[i].join(\"\"));\n    }\n    return newBoard;\n}\n<\/code><\/pre>\n<\/div>\n\n<div class=\"wp_blog_code-tab-content\" data-lang=\"py\">\n<pre><code class=\"language-python\">\ndef solveNQueens(n):\n    result = []\n    board = [[\".\"] * n for _ in range(n)]\n\n    def backtrack(row, colSet, digSet, antiDigSet):\n        if row == n:\n            result.append([\"\".join(r) for r in board])\n            return\n        for col in range(n):\n            if col in colSet or (row - col) in digSet or (row + col) in antiDigSet:\n                continue\n            board[row][col] = \"Q\"\n            colSet.add(col)\n            digSet.add(row - col)\n            antiDigSet.add(row + col)\n\n            backtrack(row + 1, colSet, digSet, antiDigSet)\n\n            board[row][col] = \".\"\n            colSet.remove(col)\n            digSet.remove(row - col)\n            antiDigSet.remove(row + col)\n    backtrack(0, set(), set(), set())\n    return result\n<\/code><\/pre>\n<\/div>\n\n<div class=\"wp_blog_code-tab-content\" data-lang=\"java\">\n<pre><code class=\"language-java\">\nimport java.util.*;\n\nclass Solution {\n    public List<List<String>> solveNQueens(int n) {\n        List<List<String>> result = new ArrayList<>();\n        char[][] board = new char[n][n];\n        for (char[] row : board)\n            Arrays.fill(row, '.');\n\n        backtrack(0, new HashSet<>(), new HashSet<>(), new HashSet<>(), board, result);\n        return result;\n    }\n    private void backtrack(int row, Set<Integer> cols, Set<Integer> diag1, Set<Integer> diag2, char[][] board, List<List<String>> result) {\n        int n = board.length;\n        if (row == n) {\n            List<String> newBoard = new ArrayList<>();\n            for (char[] r : board) newBoard.add(new String(r));\n            result.add(newBoard);\n            return;\n        }\n        for (int col = 0; col < n; col++) {\n            if (cols.contains(col) || diag1.contains(row - col) || diag2.contains(row + col)) continue;\n\n            board[row][col] = 'Q';\n            cols.add(col);\n            diag1.add(row - col);\n            diag2.add(row + col);\n            backtrack(row + 1, cols, diag1, diag2, board, result);\n            board[row][col] = '.';\n            cols.remove(col);\n            diag1.remove(row - col);\n            diag2.remove(row + col);\n        }\n    }\n}\n<\/code><\/pre>\n<\/div>\n\n<div class=\"wp_blog_code-tab-content\" data-lang=\"cpp\">\n<pre><code class=\"language-cpp\">\nclass Solution {\npublic:\n    vector<vector<string>> solveNQueens(int n) {\n        vector<vector<string>> result;\n        vector<string> board(n, string(n, '.'));\n        unordered_set<int> cols, diag1, diag2;\n\n        function<void(int)> backtrack = [&](int row) {\n            if (row == n) {\n                result.push_back(board);\n                return;\n            }\n            for (int col = 0; col < n; col++) {\n                if (cols.count(col) || diag1.count(row - col) || diag2.count(row + col)) continue;\n                board[row][col] = 'Q';\n                cols.insert(col);\n                diag1.insert(row - col);\n                diag2.insert(row + col);\n                backtrack(row + 1);\n                board[row][col] = '.';\n                cols.erase(col);\n                diag1.erase(row - col);\n                diag2.erase(row + col);\n            }\n        };\n        backtrack(0);\n        return result;\n    }\n};\n<\/code><\/pre>\n<\/div>\n\n<div class=\"wp_blog_code-tab-content\" data-lang=\"c\">\n<pre><code class=\"language-c\">\nint resultCount = 0;\nvoid printBoard(int n, char board[MAXN][MAXN]) {\n    printf(\"Solution %d:\\n\", ++resultCount);\n    for (int i = 0; i < n; i++) {\n        printf(\"%s\\n\", board[i]);\n    }\n    printf(\"\\n\");\n}\nvoid backtrack(int n, int row, int cols[], int diag1[], int diag2[], char board[MAXN][MAXN]) {\n    if (row == n) {\n        printBoard(n, board);\n        return;\n    }\n    for (int col = 0; col < n; col++) {\n        if (cols[col] || diag1[row - col + n - 1] || diag2[row + col]) continue;\n        board[row][col] = 'Q';\n        cols[col] = diag1[row - col + n - 1] = diag2[row + col] = 1;\n        backtrack(n, row + 1, cols, diag1, diag2, board);\n        board[row][col] = '.';\n        cols[col] = diag1[row - col + n - 1] = diag2[row + col] = 0;\n    }\n}\nvoid solveNQueens(int n) {\n    char board[MAXN][MAXN];\n    int cols[MAXN] = {0}, diag1[2*MAXN] = {0}, diag2[2*MAXN] = {0};\n\n    for (int i = 0; i < n; i++)\n        memset(board[i], '.', n), board[i][n] = '\\0';\n\n    backtrack(n, 0, cols, diag1, diag2, board);\n}\nint main() {\n    int n = 4;\n    solveNQueens(n);\n    return 0;\n}\n<\/code><\/pre>\n<\/div>\n\n<div class=\"wp_blog_code-tab-content\" data-lang=\"cs\">\n<pre><code class=\"language-csharp\">\nusing System;\nusing System.Collections.Generic;\npublic class Solution {\n    public IList<IList<string>> SolveNQueens(int n) {\n        var result = new List<IList<string>>();\n        var board = new char[n][];\n        for (int i = 0; i < n; i++)\n            board[i] = new string('.', n).ToCharArray();\n\n        Backtrack(0, new HashSet<int>(), new HashSet<int>(), new HashSet<int>(), board, result);\n        return result;\n    }\n\n    private void Backtrack(int row, HashSet<int> cols, HashSet<int> diag1, HashSet<int> diag2, char[][] board, IList<IList<string>> result) {\n        int n = board.Length;\n        if (row == n) {\n            var newBoard = new List<string>();\n            foreach (var r in board)\n                newBoard.Add(new string(r));\n            result.Add(newBoard);\n            return;\n        }\n        for (int col = 0; col < n; col++) {\n            if (cols.Contains(col) || diag1.Contains(row - col) || diag2.Contains(row + col)) continue;\n            board[row][col] = 'Q';\n            cols.Add(col);\n            diag1.Add(row - col);\n            diag2.Add(row + col);\n            Backtrack(row + 1, cols, diag1, diag2, board, result);\n            board[row][col] = '.';\n            cols.Remove(col);\n            diag1.Remove(row - col);\n            diag2.Remove(row + col);\n        }\n    }\n}\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n<script>\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n  const buttons = document.querySelectorAll(\".wp_blog_code-tab-button\");\n  const contents = document.querySelectorAll(\".wp_blog_code-tab-content\");\n\n  buttons.forEach((button) => {\n    button.addEventListener(\"click\", () => {\n      const lang = button.getAttribute(\"data-lang\");\n\n      buttons.forEach((btn) => btn.classList.remove(\"active\"));\n      contents.forEach((content) => content.classList.remove(\"active\"));\n\n      button.classList.add(\"active\");\n      document\n        .querySelector(`.wp_blog_code-tab-content[data-lang=\"${lang}\"]`)\n        .classList.add(\"active\");\n    });\n  });\n\n  const themeToggle = document.getElementById(\"blogNotesThemeToggle\");\n  const themeContainer = document.querySelector(\".wp_blog_theme\");\n\n  themeToggle.addEventListener(\"click\", () => {\n    themeContainer.classList.toggle(\"dark-mode\");\n    themeToggle.textContent =\n      themeContainer.classList.contains(\"dark-mode\") ? \"\u2600\ufe0f\" : \"\ud83c\udf19\";\n  });\n});\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>\ud83c\udf19 Problem Statement: The n-queens puzzle is the problem of placing n queens on an n x n chessboard such that no two queens attack each other. Given an integer n, return all distinct solutions to the n-queens puzzle. You may return the answer in any order. Each solution contains a distinct board configuration of<\/p>\n","protected":false},"author":108,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[322,260,176,175,211,811,810,174,172,173],"tags":[],"class_list":["post-9499","post","type-post","status-publish","format-standard","category-algorithms-and-data-structures","category-c-c-plus-plus","category-csharp","category-cplusplus","category-data-structures","category-data-structures-and-algorithms","category-dsa","category-java","category-javascript","category-python"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/posts\/9499","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/users\/108"}],"replies":[{"embeddable":true,"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/comments?post=9499"}],"version-history":[{"count":3,"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/posts\/9499\/revisions"}],"predecessor-version":[{"id":10252,"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/posts\/9499\/revisions\/10252"}],"wp:attachment":[{"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/media?parent=9499"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/categories?post=9499"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/tags?post=9499"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}