neuralbroker commited on
Commit
4b12550
·
verified ·
1 Parent(s): 5ed8c75

Update clean backend-only project docs and eval

Browse files
Files changed (1) hide show
  1. scripts/build_full_dataset.py +125 -120
scripts/build_full_dataset.py CHANGED
@@ -6,8 +6,10 @@ Gathers training data from HuggingFace, generates coding problems, etc.
6
 
7
  import json
8
  from bisect import bisect_left
 
9
  from pathlib import Path
10
  from datetime import datetime
 
11
 
12
  OUTPUT_DIR = Path("datasets/raw")
13
  OUTPUT_FILE = OUTPUT_DIR / "blitzkode_full_training.json"
@@ -15,11 +17,11 @@ OUTPUT_FILE = OUTPUT_DIR / "blitzkode_full_training.json"
15
  def load_huggingface_datasets():
16
  """Try to load datasets from HuggingFace"""
17
  datasets = []
18
-
19
  try:
20
  from datasets import load_dataset
21
  print("[HF] Loading datasets...")
22
-
23
  # Try different datasets
24
  dataset_names = [
25
  "openai/gsm8k",
@@ -27,291 +29,294 @@ def load_huggingface_datasets():
27
  "meta-math/MathInstruct",
28
  "技术桃子/gsm8k-grade-school-math",
29
  ]
30
-
31
  for name in dataset_names:
32
  try:
33
  print(f" Trying {name}...")
34
- ds = load_dataset(name, split="train[:100]")
35
  print(f" Loaded {len(ds)} from {name}")
36
- for item in ds:
 
 
 
37
  datasets.append({
38
  "prompt": str(item.get("question", item.get("instruction", "")))[:500],
39
  "response": str(item.get("answer", item.get("response", item.get("output", ""))))[:1000]
40
  })
41
  except Exception as e:
42
  print(f" Failed: {e}")
43
-
44
  except ImportError:
45
  print("[HF] datasets library not available")
46
-
47
  return datasets
48
 
49
  def generate_comprehensive_problems():
50
  """Generate 500+ comprehensive coding problems"""
51
-
52
  problems = []
53
-
54
  # ==================== ARRAYS ====================
55
  array_problems = [
56
- {"prompt": "Two Sum: Given array nums and target, return indices of two numbers that add to target",
57
  "response": "```python\ndef two_sum(nums, target):\n seen = {}\n for i, n in enumerate(nums):\n if target - n in seen:\n return [seen[target-n], i]\n seen[n] = i\n return []\n```\nTime O(n), Space O(n)"},
58
-
59
  {"prompt": "Maximum Subarray: Find contiguous subarray with largest sum (Kadane's algorithm)",
60
  "response": "```python\ndef max_subarray(nums):\n max_sum = curr = nums[0]\n for n in nums[1:]:\n curr = max(n, curr + n)\n max_sum = max(max_sum, curr)\n return max_sum\n```\nTime O(n), Space O(1)"},
61
-
62
  {"prompt": "Product of Array Except Self: Return array where each element is product of all other elements",
63
  "response": "```python\ndef product_except_self(nums):\n n = len(nums)\n result = [1] * n\n prefix = 1\n for i in range(n):\n result[i] = prefix\n prefix *= nums[i]\n suffix = 1\n for i in range(n-1, -1, -1):\n result[i] *= suffix\n suffix *= nums[i]\n return result\n```\nTime O(n), Space O(1)"},
64
-
65
  {"prompt": "Merge Intervals: Merge all overlapping intervals",
66
  "response": "```python\ndef merge(intervals):\n intervals.sort(key=lambda x: x[0])\n merged = [intervals[0]]\n for start, end in intervals[1:]:\n if merged[-1][1] >= start:\n merged[-1][1] = max(merged[-1][1], end)\n else:\n merged.append([start, end])\n return merged\n```\nTime O(n log n), Space O(n)"},
67
-
68
  {"prompt": "Rotate Array: Rotate array to right by k steps",
69
  "response": "```python\ndef rotate(nums, k):\n k = k % len(nums)\n nums[:] = nums[-k:] + nums[:-k]\n```\nTime O(n), Space O(1)"},
70
-
71
  {"prompt": "Find Duplicate: Find the duplicate number in array where all elements are in [1,n]",
72
  "response": "```python\ndef find_duplicate(nums):\n slow = fast = nums[0]\n while True:\n slow = nums[slow]\n fast = nums[nums[fast]]\n if slow == fast:\n break\n slow = nums[0]\n while slow != fast:\n slow = nums[slow]\n fast = nums[fast]\n return slow\n```\nTime O(n), Space O(1) - Floyd's Tortoise"},
73
-
74
  {"prompt": "Container With Most Water: Find max water container between vertical lines",
75
  "response": "```python\ndef max_area(height):\n l, r, max_water = 0, len(height)-1, 0\n while l < r:\n water = min(height[l], height[r]) * (r - l)\n max_water = max(max_water, water)\n if height[l] < height[r]:\n l += 1\n else:\n r -= 1\n return max_water\n```\nTime O(n), Space O(1)"},
76
-
77
  {"prompt": "3Sum: Find all unique triplets that sum to zero",
78
  "response": "```python\ndef three_sum(nums):\n res = []\n nums.sort()\n for i in range(len(nums)-2):\n if i > 0 and nums[i] == nums[i-1]:\n continue\n l, r = i+1, len(nums)-1\n while l < r:\n s = nums[i]+nums[l]+nums[r]\n if s == 0:\n res.append([nums[i],nums[l],nums[r]])\n l += 1; r -= 1\n while l < r and nums[l] == nums[l-1]: l += 1\n elif s < 0: l += 1\n else: r -= 1\n return res\n```\nTime O(n^2), Space O(n)"},
79
-
80
  {"prompt": "Dutch National Flag: Sort 0s, 1s, 2s in-place",
81
  "response": "```python\ndef sort_colors(nums):\n l, r = 0, len(nums)-1\n i = 0\n while i <= r:\n if nums[i] == 0:\n nums[i], nums[l] = nums[l], nums[i]\n l += 1; i += 1\n elif nums[i] == 2:\n nums[i], nums[r] = nums[r], nums[i]\n r -= 1\n else:\n i += 1\n return nums\n```\nTime O(n), Space O(1)"},
82
-
83
  {"prompt": "Subarray Sum Equals K: Find number of continuous subarrays that sum to k",
84
  "response": "```python\ndef subarray_sum(nums, k):\n count = 0\n cumsum = 0\n seen = {0: 1}\n for n in nums:\n cumsum += n\n count += seen.get(cumsum - k, 0)\n seen[cumsum] = seen.get(cumsum, 0) + 1\n return count\n```\nTime O(n), Space O(n)"},
85
  ]
86
  problems.extend(array_problems)
87
-
88
  # ==================== STRINGS ====================
89
  string_problems = [
90
  {"prompt": "Valid Palindrome: Check if string is palindrome ignoring non-alphanumeric",
91
  "response": "```python\ndef is_palindrome(s):\n s = ''.join(c.lower() for c in s if c.isalnum())\n return s == s[::-1]\n```\nTime O(n), Space O(n)"},
92
-
93
  {"prompt": "Longest Substring Without Repeating: Find length of longest unique char substring",
94
  "response": "```python\ndef length_of_longest_substring(s):\n char_index = {}\n max_len = start = 0\n for i, c in enumerate(s):\n if c in char_index and char_index[c] >= start:\n start = char_index[c] + 1\n char_index[c] = i\n max_len = max(max_len, i - start + 1)\n return max_len\n```\nTime O(n), Space O(min(n, alphabet))"},
95
-
96
  {"prompt": "String to Integer (atoi): Convert string to 32-bit signed integer",
97
  "response": "```python\ndef my_atoi(s):\n s = s.strip()\n if not s: return 0\n sign = -1 if s[0] == '-' else 1\n if s[0] in '+-': s = s[1:]\n num = 0\n for c in s:\n if not c.isdigit(): break\n num = num * 10 + int(c)\n return max(-2**31, min(2**31-1, sign * num))\n```\nTime O(n), Space O(1)"},
98
-
99
  {"prompt": "Implement strStr: Return index of first occurrence of needle in haystack",
100
  "response": "```python\ndef str_str(haystack, needle):\n return haystack.find(needle)\n```\nOr KMP: Time O(n+m), Space O(m)"},
101
-
102
  {"prompt": "Longest Common Prefix: Find longest common prefix among strings",
103
  "response": "```python\ndef longest_common_prefix(strs):\n if not strs: return ''\n for i, c in enumerate(strs[0]):\n for s in strs[1:]:\n if i >= len(s) or s[i] != c:\n return strs[0][:i]\n return strs[0]\n```\nTime O(n*m), Space O(1)"},
104
-
105
  {"prompt": "Valid Parentheses: Check if parentheses are balanced",
106
  "response": "```python\ndef is_valid(s):\n stack = []\n paren = {')':'(', ']':'[', '}':'{'}\n for c in s:\n if c in paren:\n if not stack or stack.pop() != paren[c]:\n return False\n else:\n stack.append(c)\n return not stack\n```\nTime O(n), Space O(n)"},
107
-
108
  {"prompt": "Word Break: Check if string can be segmented into dictionary words",
109
  "response": "```python\ndef word_break(s, word_dict):\n dp = [False] * (len(s)+1)\n dp[0] = True\n for i in range(1, len(s)+1):\n for j in range(i):\n if dp[j] and s[j:i] in word_dict:\n dp[i] = True\n break\n return dp[len(s)]\n```\nTime O(n^2), Space O(n)"},
110
-
111
  {"prompt": "Count and Say: Generate nth term of count-and-say sequence",
112
  "response": "```python\ndef count_and_say(n):\n result = '1'\n for _ in range(n-1):\n new = ''\n i = 0\n while i < len(result):\n count = 1\n while i+1 < len(result) and result[i] == result[i+1]:\n count += 1; i += 1\n new += str(count) + result[i]\n i += 1\n result = new\n return result\n```\nTime O(n*2^n), Space O(2^n)"},
113
  ]
114
  problems.extend(string_problems)
115
-
116
  # ==================== LINKED LISTS ====================
117
  linked_problems = [
118
  {"prompt": "Reverse Linked List: Reverse singly linked list",
119
  "response": "```python\ndef reverse_list(head):\n prev = None\n while head:\n next_node = head.next\n head.next = prev\n prev = head\n head = next_node\n return prev\n```\nTime O(n), Space O(1)"},
120
-
121
  {"prompt": "Merge Two Sorted Lists: Merge two sorted linked lists",
122
  "response": "```python\ndef merge_two_lists(l1, l2):\n dummy = cur = ListNode()\n while l1 and l2:\n if l1.val < l2.val:\n cur.next = l1\n l1 = l1.next\n else:\n cur.next = l2\n l2 = l2.next\n cur = cur.next\n cur.next = l1 or l2\n return dummy.next\n```\nTime O(n+m), Space O(1)"},
123
-
124
  {"prompt": "Linked List Cycle: Detect if linked list has a cycle",
125
  "response": "```python\ndef has_cycle(head):\n slow = fast = head\n while fast and fast.next:\n slow = slow.next\n fast = fast.next.next\n if slow == fast:\n return True\n return False\n```\nTime O(n), Space O(1) - Floyd's cycle detection"},
126
-
127
  {"prompt": "Remove Nth Node From End: Remove nth node from end of list",
128
  "response": "```python\ndef remove_nth_from_end(head, n):\n dummy = ListNode(0, head)\n slow = fast = dummy\n for _ in range(n+1):\n fast = fast.next\n while fast:\n slow = slow.next\n fast = fast.next\n slow.next = slow.next.next\n return dummy.next\n```\nTime O(n), Space O(1)"},
129
-
130
  {"prompt": "Add Two Numbers: Add two numbers represented by linked lists",
131
  "response": "```python\ndef add_two_numbers(l1, l2):\n dummy = cur = ListNode()\n carry = 0\n while l1 or l2 or carry:\n s = (l1.val if l1 else 0) + (l2.val if l2 else 0) + carry\n carry = s // 10\n cur.next = ListNode(s % 10)\n cur = cur.next\n l1 = l1.next if l1 else None\n l2 = l2.next if l2 else None\n return dummy.next\n```\nTime O(max(m,n)), Space O(1)"},
132
  ]
133
  problems.extend(linked_problems)
134
-
135
  # ==================== TREES ====================
136
  tree_problems = [
137
  {"prompt": "Binary Tree Inorder Traversal: Return inorder traversal of BST",
138
  "response": "```python\ndef inorder(root, res=[]):\n if root:\n inorder(root.left, res)\n res.append(root.val)\n inorder(root.right, res)\n return res\n```\nOr iterative: Time O(n), Space O(h)"},
139
-
140
  {"prompt": "Maximum Depth of Binary Tree: Find deepest node depth",
141
  "response": "```python\ndef max_depth(root):\n if not root: return 0\n return 1 + max(max_depth(root.left), max_depth(root.right))\n```\nTime O(n), Space O(h)"},
142
-
143
  {"prompt": "Validate Binary Search Tree: Check if tree is valid BST",
144
  "response": "```python\ndef is_valid_bst(root, float('-inf'), float('inf')):\n if not root: return True\n if root.val <= min_val or root.val >= max_val: return False\n return is_valid_bst(root.left, min_val, root.val) and \\\n is_valid_bst(root.right, root.val, max_val)\n```\nTime O(n), Space O(h)"},
145
-
146
  {"prompt": "Symmetric Tree: Check if tree is mirror of itself",
147
  "response": "```python\ndef is_symmetric(root):\n def helper(l, r):\n if not l or not r: return l == r\n return l.val == r.val and helper(l.left, r.right) and helper(l.right, r.left)\n return helper(root, root)\n```\nTime O(n), Space O(h)"},
148
-
149
  {"prompt": "Construct Binary Tree from Preorder and Inorder",
150
  "response": "```python\ndef build_tree(preorder, inorder):\n if not preorder: return None\n root = TreeNode(preorder[0])\n idx = inorder.index(preorder[0])\n root.left = build_tree(preorder[1:idx+1], inorder[:idx])\n root.right = build_tree(preorder[idx+1:], inorder[idx+1:])\n return root\n```\nTime O(n), Space O(n)"},
151
-
152
  {"prompt": "Lowest Common Ancestor of BST",
153
  "response": "```python\ndef lowest_common_ancestor(root, p, q):\n while root:\n if p.val < root.val and q.val < root.val:\n root = root.left\n elif p.val > root.val and q.val > root.val:\n root = root.right\n else:\n return root\n return None\n```\nTime O(h), Space O(1)"},
154
-
155
  {"prompt": "Binary Tree Level Order Traversal: BFS traversal",
156
  "response": "```python\nfrom collections import deque\ndef level_order(root):\n if not root: return []\n result, queue = [], deque([root])\n while queue:\n level = []\n for _ in range(len(queue)):\n node = queue.popleft()\n level.append(node.val)\n if node.left: queue.append(node.left)\n if node.right: queue.append(node.right)\n result.append(level)\n return result\n```\nTime O(n), Space O(w)"},
157
  ]
158
  problems.extend(tree_problems)
159
-
160
  # ==================== DYNAMIC PROGRAMMING ====================
161
  dp_problems = [
162
  {"prompt": "Climbing Stairs: Count ways to climb n stairs (1 or 2 steps)",
163
  "response": "```python\ndef climb_stairs(n):\n if n <= 2: return n\n dp = [0] * (n+1)\n dp[1], dp[2] = 1, 2\n for i in range(3, n+1):\n dp[i] = dp[i-1] + dp[i-2]\n return dp[n]\n```\nTime O(n), Space O(1) - can optimize to 2 vars"},
164
-
165
  {"prompt": "Coin Change: Minimum coins to make amount",
166
  "response": "```python\ndef coin_change(coins, amount):\n dp = [float('inf')] * (amount+1)\n dp[0] = 0\n for c in coins:\n for i in range(c, amount+1):\n dp[i] = min(dp[i], dp[i-c]+1)\n return dp[amount] if dp[amount] != float('inf') else -1\n```\nTime O(n*amount), Space O(amount)"},
167
-
168
  {"prompt": "Longest Increasing Subsequence: Find LIS length",
169
  "response": "```python\ndef length_of_lis(nums):\n tails = []\n for n in nums:\n i = bisect_left(tails, n)\n if i == len(tails): tails.append(n)\n else: tails[i] = n\n return len(tails)\n```\nTime O(n log n), Space O(n)"},
170
-
171
  {"prompt": "Word Break: Can string be segmented into dictionary words",
172
  "response": "```python\ndef word_break(s, word_dict):\n dp = [False] * (len(s)+1)\n dp[0] = True\n for i in range(1, len(s)+1):\n for j in range(i):\n if dp[j] and s[j:i] in word_dict:\n dp[i] = True\n break\n return dp[len(s)]\n```\nTime O(n^2), Space O(n)"},
173
-
174
  {"prompt": "House Robber: Max amount without robbing adjacent houses",
175
  "response": "```python\ndef rob(nums):\n prev = curr = 0\n for n in nums:\n prev, curr = curr, max(curr, prev + n)\n return curr\n```\nTime O(n), Space O(1)"},
176
-
177
  {"prompt": "Edit Distance: Minimum edits to transform word1 to word2",
178
  "response": "```python\ndef min_distance(word1, word2):\n m, n = len(word1), len(word2)\n dp = [[0]*(n+1) for _ in range(m+1)]\n for i in range(m+1): dp[i][0] = i\n for j in range(n+1): dp[0][j] = j\n for i in range(1, m+1):\n for j in range(1, n+1):\n if word1[i-1] == word2[j-1]:\n dp[i][j] = dp[i-1][j-1]\n else:\n dp[i][j] = 1 + min(dp[i-1][j], dp[i][j-1], dp[i-1][j-1])\n return dp[m][n]\n```\nTime O(m*n), Space O(m*n)"},
179
-
180
  {"prompt": "Longest Common Subsequence: Find LCS length",
181
  "response": "```python\ndef lcs(text1, text2):\n m, n = len(text1), len(text2)\n dp = [[0]*(n+1) for _ in range(m+1)]\n for i in range(1, m+1):\n for j in range(1, n+1):\n if text1[i-1] == text2[j-1]:\n dp[i][j] = dp[i-1][j-1] + 1\n else:\n dp[i][j] = max(dp[i-1][j], dp[i][j-1])\n return dp[m][n]\n```\nTime O(m*n), Space O(m*n)"},
182
-
183
  {"prompt": "Decode Ways: Count ways to decode string",
184
  "response": "```python\ndef num_decodings(s):\n if not s or s[0] == '0': return 0\n dp = [0] * (len(s)+1)\n dp[0] = dp[1] = 1\n for i in range(2, len(s)+1):\n if s[i-1] != '0': dp[i] += dp[i-1]\n if 10 <= int(s[i-2:i]) <= 26: dp[i] += dp[i-2]\n return dp[len(s)]\n```\nTime O(n), Space O(1)"},
185
  ]
186
  problems.extend(dp_problems)
187
-
188
  # ==================== GRAPHS ====================
189
  graph_problems = [
190
  {"prompt": "Number of Islands: Count islands in 2D grid",
191
  "response": "```python\ndef num_islands(grid):\n def dfs(i, j):\n grid[i][j] = '0'\n for di, dj in [(0,1),(0,-1),(1,0),(-1,0)]:\n ni, nj = i+di, j+dj\n if 0<=ni<m and 0<=nj<n and grid[ni][nj]=='1':\n dfs(ni, nj)\n count = 0\n m, n = len(grid), len(grid[0])\n for i in range(m):\n for j in range(n):\n if grid[i][j] == '1':\n dfs(i, j)\n count += 1\n return count\n```\nTime O(m*n), Space O(m*n)"},
192
-
193
  {"prompt": "Clone Graph: Deep copy undirected graph",
194
  "response": "```python\ndef clone_graph(node):\n if not node: return None\n visited = {}\n def dfs(n):\n if n in visited: return visited[n]\n visited[n] = Node(n.val, [])\n for neighbor in n.neighbors:\n visited[n].neighbors.append(dfs(neighbor))\n return visited[n]\n return dfs(node)\n```\nTime O(V+E), Space O(V)"},
195
-
196
  {"prompt": "Course Schedule: Check if can finish all courses",
197
  "response": "```python\ndef can_finish(numCourses, prerequisites):\n graph = [[] for _ in range(numCourses)]\n visited = [0] * numCourses\n for u, v in prerequisites:\n graph[v].append(u)\n def dfs(i):\n if visited[i] == 1: return False\n if visited[i] == 2: return True\n visited[i] = 1\n for nei in graph[i]:\n if not dfs(nei): return False\n visited[i] = 2\n return True\n return all(dfs(i) for i in range(numCourses))\n```\nTime O(V+E), Space O(V)"},
198
-
199
  {"prompt": "Pacific Atlantic Water Flow: Find cells that can flow to both oceans",
200
  "response": "```python\ndef pacific_atlantic(heights):\n if not heights: return []\n m, n = len(heights), len(heights[0])\n pacific = [[False]*n for _ in range(m)]\n atlantic = [[False]*n for _ in range(m)]\n def dfs(r, c, visited, prev):\n if r<0 or c<0 or r>=m or c>=n: return\n if visited[r][c] or heights[r][c] < prev: return\n visited[r][c] = True\n for dr, dc in [(0,1),(0,-1),(1,0),(-1,0)]:\n dfs(r+dr, c+dc, visited, heights[r][c])\n for i in range(m): dfs(i, 0, pacific, 0); dfs(i, n-1, atlantic, 0)\n for j in range(n): dfs(0, j, pacific, 0); dfs(m-1, j, atlantic, 0)\n return [[i,j] for i in range(m) for j in range(n) if pacific[i][j] and atlantic[i][j]]\n```\nTime O(m*n), Space O(m*n)"},
201
  ]
202
  problems.extend(graph_problems)
203
-
204
  # ==================== SORTING & SEARCHING ====================
205
  search_problems = [
206
  {"prompt": "Binary Search: Find target in sorted array",
207
  "response": "```python\ndef binary_search(arr, target):\n l, r = 0, len(arr)-1\n while l <= r:\n mid = (l + r) // 2\n if arr[mid] == target: return mid\n elif arr[mid] < target: l = mid + 1\n else: r = mid - 1\n return -1\n```\nTime O(log n), Space O(1)"},
208
-
209
  {"prompt": "Search in Rotated Array: Search in rotated sorted array",
210
  "response": "```python\ndef search(nums, target):\n l, r = 0, len(nums)-1\n while l <= r:\n mid = (l + r) // 2\n if nums[mid] == target: return mid\n if nums[l] <= nums[mid]:\n if nums[l] <= target < nums[mid]: r = mid - 1\n else: l = mid + 1\n else:\n if nums[mid] < target <= nums[r]: l = mid + 1\n else: r = mid - 1\n return -1\n```\nTime O(log n), Space O(1)"},
211
-
212
  {"prompt": "Merge Sorted Array: Merge two sorted arrays in-place",
213
  "response": "```python\ndef merge(nums1, m, nums2, n):\n i, j, k = m-1, n-1, m+n-1\n while i >= 0 and j >= 0:\n if nums1[i] > nums2[j]:\n nums1[k] = nums1[i]; i -= 1\n else:\n nums1[k] = nums2[j]; j -= 1\n k -= 1\n while j >= 0:\n nums1[k] = nums2[j]; j -= 1; k -= 1\n```\nTime O(m+n), Space O(1)"},
214
  ]
215
  problems.extend(search_problems)
216
-
217
  # ==================== RECURSION & BACKTRACKING ====================
218
  backtrack_problems = [
219
  {"prompt": "Generate all permutations of array",
220
  "response": "```python\ndef permute(nums):\n res = []\n def backtrack(path, used):\n if len(path) == len(nums):\n res.append(path[:])\n return\n for i, n in enumerate(nums):\n if i in used: continue\n path.append(n)\n used.add(i)\n backtrack(path, used)\n path.pop()\n used.remove(i)\n backtrack([], set())\n return res\n```\nTime O(n!*n), Space O(n)"},
221
-
222
  {"prompt": "Generate all subsets (Power Set)",
223
  "response": "```python\ndef subsets(nums):\n res = []\n def backtrack(i, path):\n res.append(path[:])\n for j in range(i, len(nums)):\n path.append(nums[j])\n backtrack(j+1, path)\n path.pop()\n backtrack(0, [])\n return res\n```\nTime O(n*2^n), Space O(n)"},
224
-
225
  {"prompt": "N-Queens: Place N queens on NxN board",
226
  "response": "```python\ndef solve_n_queens(n):\n res = []\n cols = set()\n pos_diag = set()\n neg_diag = set()\n board = [['.' for _ in range(n)] for _ in range(n)]\n def backtrack(row):\n if row == n:\n res.append([''.join(row) for row in board])\n return\n for col in range(n):\n if col in cols or row-col in pos_diag or row+col in neg_diag:\n continue\n board[row][col] = 'Q'\n cols.add(col); pos_diag.add(row-col); neg_diag.add(row+col)\n backtrack(row+1)\n board[row][col] = '.'\n cols.remove(col); pos_diag.remove(row-col); neg_diag.remove(row+col)\n backtrack(0)\n return res\n```\nTime O(N!), Space O(N)"},
227
-
228
  {"prompt": "Combination Sum: Find all combinations that sum to target",
229
  "response": "```python\ndef combination_sum(candidates, target):\n res = []\n candidates.sort()\n def backtrack(i, path, remain):\n if remain == 0: res.append(path[:])\n if remain < 0: return\n for j in range(i, len(candidates)):\n path.append(candidates[j])\n backtrack(j, path, remain-candidates[j])\n path.pop()\n backtrack(0, [], target)\n return res\n```\nTime O(2^n), Space O(n)"},
230
  ]
231
  problems.extend(backtrack_problems)
232
-
233
  # ==================== DESIGN ====================
234
  design_problems = [
235
  {"prompt": "Implement LRU Cache with O(1) get and put",
236
  "response": "```python\nfrom collections import OrderedDict\nclass LRUCache:\n def __init__(self, capacity):\n self.cache = OrderedDict()\n self.capacity = capacity\n def get(self, key):\n if key not in self.cache: return -1\n self.cache.move_to_end(key)\n return self.cache[key]\n def put(self, key, value):\n if key in self.cache: self.cache.move_to_end(key)\n self.cache[key] = value\n if len(self.cache) > self.capacity:\n self.cache.popitem(last=False)\n```\nTime O(1), Space O(capacity)"},
237
-
238
  {"prompt": "Implement Trie (Prefix Tree)",
239
  "response": "```python\nclass TrieNode:\n def __init__(self):\n self.children = {}\n self.is_end = False\nclass Trie:\n def __init__(self): self.root = TrieNode()\n def insert(self, word):\n node = self.root\n for c in word:\n if c not in node.children: node.children[c] = TrieNode()\n node = node.children[c]\n node.is_end = True\n def search(self, word):\n node = self.root\n for c in word:\n if c not in node.children: return False\n node = node.children[c]\n return node.is_end\n def startsWith(self, prefix):\n node = self.root\n for c in prefix:\n if c not in node.children: return False\n node = node.children[c]\n return True\n```\nTime O(m), Space O(m) per operation"},
240
-
241
  {"prompt": "Min Stack: Stack that supports min in O(1)",
242
  "response": "```python\nclass MinStack:\n def __init__(self):\n self.stack = []\n self.min_stack = []\n def push(self, val):\n self.stack.append(val)\n if not self.min_stack or val <= self.min_stack[-1]:\n self.min_stack.append(val)\n def pop(self):\n val = self.stack.pop()\n if val == self.min_stack[-1]: self.min_stack.pop()\n return val\n def top(self): return self.stack[-1]\n def getMin(self): return self.min_stack[-1]\n```\nTime O(1), Space O(n)"},
243
-
244
  {"prompt": "Implement Rate Limiter (Token Bucket)",
245
  "response": "```python\nimport time\nclass RateLimiter:\n def __init__(self, rate, capacity):\n self.rate = rate\n self.capacity = capacity\n self.tokens = capacity\n self.last_time = time.time()\n def allow(self):\n now = time.time()\n self.tokens = min(self.capacity, self.tokens + (now-self.last_time)*self.rate)\n self.last_time = now\n if self.tokens >= 1:\n self.tokens -= 1\n return True\n return False\n```\nTime O(1), Space O(1)"},
246
  ]
247
  problems.extend(design_problems)
248
-
249
  # ==================== JAVASCRIPT ====================
250
  js_problems = [
251
  {"prompt": "JavaScript: Debounce function",
252
  "response": "```javascript\nfunction debounce(func, wait) {\n let timeout;\n return function(...args) {\n clearTimeout(timeout);\n timeout = setTimeout(() => func.apply(this, args), wait);\n };\n}\n```"},
253
-
254
  {"prompt": "JavaScript: Throttle function",
255
  "response": "```javascript\nfunction throttle(func, limit) {\n let inThrottle;\n return function(...args) {\n if (!inThrottle) {\n func.apply(this, args);\n inThrottle = true;\n setTimeout(() => inThrottle = false, limit);\n }\n };\n}\n```"},
256
-
257
  {"prompt": "JavaScript: Deep clone object",
258
  "response": "```javascript\nfunction deepClone(obj, visited = new WeakMap()) {\n if (obj === null || typeof obj !== 'object') return obj;\n if (visited.has(obj)) return visited.get(obj);\n const clone = Array.isArray(obj) ? [] : {};\n visited.set(obj, clone);\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n clone[key] = deepClone(obj[key], visited);\n }\n }\n return clone;\n}\n```"},
259
-
260
  {"prompt": "JavaScript: Promise.all with timeout",
261
  "response": "```javascript\nfunction promiseAllWithTimeout(promises, timeout) {\n return Promise.all(\n promises.map(p =>\n Promise.race([\n p,\n new Promise((_, reject) => \n setTimeout(() => reject(new Error('Timeout')), timeout)\n )\n ])\n )\n );\n}\n```"},
262
-
263
  {"prompt": "JavaScript: Event Emitter implementation",
264
  "response": "```javascript\nclass EventEmitter {\n constructor() { this.events = {}; }\n on(event, fn) {\n if (!this.events[event]) this.events[event] = [];\n this.events[event].push(fn);\n }\n emit(event, ...args) {\n if (this.events[event]) \n this.events[event].forEach(fn => fn(...args));\n }\n off(event, fn) {\n if (this.events[event]) \n this.events[event] = this.events[event].filter(f => f !== fn);\n }\n}\n```"},
265
-
266
  {"prompt": "JavaScript: Currying function",
267
  "response": "```javascript\nfunction curry(fn) {\n return function curried(...args) {\n if (args.length >= fn.length) {\n return fn.apply(this, args);\n }\n return function(...args2) {\n return curried.apply(this, args.concat(args2));\n };\n };\n}\nconst add = curry((a, b, c) => a + b + c);\nadd(1)(2)(3); // 6\n```"},
268
  ]
269
  problems.extend(js_problems)
270
-
271
  # ==================== JAVA ====================
272
  java_problems = [
273
  {"prompt": "Java: Thread-safe Singleton (Double-checked locking)",
274
  "response": "```java\npublic class Singleton {\n private static volatile Singleton instance;\n private Singleton() {}\n public static Singleton getInstance() {\n if (instance == null) {\n synchronized (Singleton.class) {\n if (instance == null) {\n instance = new Singleton();\n }\n }\n }\n return instance;\n }\n}\n```"},
275
-
276
  {"prompt": "Java: Producer-Consumer with wait/notify",
277
  "response": "```java\npublic class ProducerConsumer {\n private Queue<Integer> buffer = new LinkedList<>();\n private int MAX_SIZE = 10;\n \n public synchronized void produce(int value) throws InterruptedException {\n while (buffer.size() >= MAX_SIZE) wait();\n buffer.add(value);\n notifyAll();\n }\n \n public synchronized int consume() throws InterruptedException {\n while (buffer.isEmpty()) wait();\n notifyAll();\n return buffer.poll();\n }\n}\n```"},
278
-
279
  {"prompt": "Java: Builder Pattern for User class",
280
  "response": "```java\npublic class User {\n private String name, email;\n private int age;\n \n private User(Builder b) {\n this.name = b.name; this.email = b.email; this.age = b.age;\n }\n \n public static class Builder {\n private String name, email;\n private int age = 0;\n public Builder name(String name) { this.name = name; return this; }\n public Builder email(String email) { this.email = email; return this; }\n public Builder age(int age) { this.age = age; return this; }\n public User build() { return new User(this); }\n }\n}\n// Usage: User u = new User.Builder().name(\"John\").age(25).build();\n```"},
281
-
282
  {"prompt": "Java: Generic Stack implementation",
283
  "response": "```java\npublic class Stack<T> {\n private Object[] arr;\n private int top = -1, capacity;\n \n public Stack(int capacity) {\n this.capacity = capacity;\n arr = new Object[capacity];\n }\n \n public void push(T item) {\n if (top == capacity - 1) throw new StackOverflowError();\n arr[++top] = item;\n }\n \n @SuppressWarnings(\"unchecked\")\n public T pop() {\n if (top == -1) throw new EmptyStackException();\n return (T) arr[top--];\n }\n \n public T peek() {\n if (top == -1) throw new EmptyStackException();\n return (T) arr[top];\n }\n}\n```"},
284
-
285
  {"prompt": "Java: Observer Pattern",
286
  "response": "```java\ninterface Observer { void update(String msg); }\nclass Subject {\n private List<Observer> observers = new ArrayList<>();\n public void attach(Observer o) { observers.add(o); }\n public void detach(Observer o) { observers.remove(o); }\n public void notifyAll(String msg) {\n observers.forEach(o -> o.update(msg));\n }\n}\n```"},
287
  ]
288
  problems.extend(java_problems)
289
-
290
  # ==================== ALGORITHMS & CONCEPTS ====================
291
  concept_problems = [
292
  {"prompt": "Explain Big O, Big Omega, Big Theta notation",
293
  "response": "Big O: Upper bound (worst case)\nBig Omega: Lower bound (best case)\nBig Theta: Tight bound (average)\n\nExamples:\n- O(1): Array access\n- O(log n): Binary search\n- O(n): Linear search\n- O(n log n): Merge sort\n- O(n^2): Bubble sort\n- O(2^n): Recursive Fibonacci\n- O(n!): Permutations"},
294
-
295
  {"prompt": "Explain and implement QuickSort",
296
  "response": "```python\ndef quicksort(arr):\n if len(arr) <= 1: return arr\n pivot = arr[len(arr)//2]\n left = [x for x in arr if x < pivot]\n middle = [x for x in arr if x == pivot]\n right = [x for x in arr if x > pivot]\n return quicksort(left) + middle + quicksort(right)\n```\nAverage: O(n log n), Worst: O(n^2)\nSpace: O(n)"},
297
-
298
  {"prompt": "Explain and implement MergeSort",
299
  "response": "```python\ndef mergesort(arr):\n if len(arr) <= 1: return arr\n mid = len(arr)//2\n left = mergesort(arr[:mid])\n right = mergesort(arr[mid:])\n return merge(left, right)\n\ndef merge(l, r):\n result = []\n while l and r:\n result.append(l.pop(0) if l[0] <= r[0] else r.pop(0))\n result.extend(l or r)\n return result\n```\nTime: O(n log n), Space: O(n)\nStable sort"},
300
-
301
  {"prompt": "Explain Hash Table collision resolution",
302
  "response": "1. Chaining: Store collisions in linked list\n - Time: O(1) avg, O(n) worst\n2. Open Addressing: Find next empty slot\n - Linear probing: h(k) + i\n - Quadratic probing: h(k) + i^2\n - Double hashing: h1(k) + i*h2(k)\n\nLoad factor = n/m should be < 0.7"},
303
-
304
  {"prompt": "Explain BFS vs DFS",
305
  "response": "BFS (Breadth-First Search):\n- Uses Queue\n- Level by level traversal\n- Finds shortest path in unweighted\n- More memory\n- Good for shortest path\n\nDFS (Depth-First Search):\n- Uses Stack (or recursion)\n- Goes deep first\n- Lower memory for deep graphs\n- Good for path finding, cycles"},
306
-
307
  {"prompt": "Explain Dijkstra's algorithm",
308
  "response": "```python\nimport heapq\ndef dijkstra(graph, start):\n dist = {v: float('inf') for v in graph}\n dist[start] = 0\n pq = [(0, start)]\n while pq:\n d, u = heapq.heappop(pq)\n if d > dist[u]: continue\n for v, w in graph.get(u, []):\n if dist[u] + w < dist[v]:\n dist[v] = dist[u] + w\n heapq.heappush(pq, (dist[v], v))\n return dist\n```\nTime: O((V+E) log V)\nSpace: O(V)\nGreedy, doesn't work with negative weights"},
309
-
310
  {"prompt": "Explain Union-Find (Disjoint Set)",
311
  "response": "```python\nclass UnionFind:\n def __init__(self, n):\n self.parent = list(range(n))\n self.rank = [0] * n\n \n def find(self, x):\n if self.parent[x] != x:\n self.parent[x] = self.find(self.parent[x])\n return self.parent[x]\n \n def union(self, x, y):\n px, py = self.find(x), self.find(y)\n if px == py: return\n if self.rank[px] < self.rank[py]: px, py = py, px\n self.parent[py] = px\n if self.rank[px] == self.rank[py]: self.rank[px] += 1\n```\nTime: O(alpha(n)) - almost constant"},
312
  ]
313
  problems.extend(concept_problems)
314
-
315
  print(f"Generated {len(problems)} comprehensive problems")
316
  return problems
317
 
@@ -319,123 +324,123 @@ def main():
319
  print("=" * 60)
320
  print("BUILDING COMPREHENSIVE DATASET")
321
  print("=" * 60)
322
-
323
  OUTPUT_DIR.mkdir(parents=True, exist_ok=True)
324
-
325
  all_data = []
326
-
327
  # 1. Generate comprehensive problems
328
  print("\n[1/3] Generating algorithmic problems...")
329
  problems = generate_comprehensive_problems()
330
  all_data.extend(problems)
331
  print(f" Total: {len(all_data)}")
332
-
333
  # 2. Try HuggingFace datasets
334
  print("\n[2/3] Loading HuggingFace datasets...")
335
  hf_data = load_huggingface_datasets()
336
  all_data.extend(hf_data)
337
  print(f" Total: {len(all_data)}")
338
-
339
  # 3. Add more diverse problems
340
  print("\n[3/3] Adding additional problems...")
341
-
342
  additional = [
343
- {"prompt": "Python: Read file and count word frequencies",
344
  "response": "```python\nfrom collections import Counter\nwith open('file.txt') as f:\n words = f.read().split()\nprint(Counter(words).most_common(10))\n```"},
345
-
346
  {"prompt": "Python: Async HTTP request with aiohttp",
347
  "response": "```python\nimport aiohttp, asyncio\nasync def fetch(url):\n async with aiohttp.ClientSession() as session:\n async with session.get(url) as resp:\n return await resp.text()\nasyncio.run(fetch('https://example.com'))\n```"},
348
-
349
  {"prompt": "Python: Context manager for timing",
350
  "response": "```python\nimport time\nclass Timer:\n def __enter__(self): self.start = time.time()\n def __exit__(self, *args): print(time.time()-self.start)\nwith Timer():\n # code to time\n sum(range(1000000))\n```"},
351
-
352
  {"prompt": "Python: Decorator for retry logic",
353
  "response": "```python\nimport time, functools\ndef retry(max_attempts=3, delay=1):\n def decorator(func):\n @functools.wraps(func)\n def wrapper(*args, **kwargs):\n for _ in range(max_attempts):\n try: return func(*args, **kwargs)\n except Exception as e:\n if _ == max_attempts-1: raise\n time.sleep(delay)\n return wrapper\n return decorator\n\n@retry(max_attempts=3)\ndef call_api(): pass\n```"},
354
-
355
  {"prompt": "Python: Generate random password",
356
  "response": "```python\nimport string, random\ndef generate_password(length=16):\n chars = string.ascii_letters + string.digits + string.punctuation\n return ''.join(random.choice(chars) for _ in range(length))\n```"},
357
-
358
  {"prompt": "Python: Flask REST API endpoint",
359
  "response": "```python\nfrom flask import Flask, request, jsonify\napp = Flask(__name__)\n\n@app.route('/api/users/<int:user_id>', methods=['GET'])\ndef get_user(user_id):\n return jsonify({'id': user_id, 'name': 'John'})\n\n@app.route('/api/users', methods=['POST'])\ndef create_user():\n data = request.json\n return jsonify({'id': 1, **data}), 201\n```"},
360
-
361
  {"prompt": "Python: SQLAlchemy model definition",
362
  "response": "```python\nfrom sqlalchemy import Column, Integer, String, ForeignKey\nfrom sqlalchemy.orm import relationship, declarative_base\nBase = declarative_base()\n\nclass User(Base):\n __tablename__ = 'users'\n id = Column(Integer, primary_key=True)\n name = Column(String(100), nullable=False)\n email = Column(String(100), unique=True)\n posts = relationship('Post', back_populates='author')\n\nclass Post(Base):\n __tablename__ = 'posts'\n id = Column(Integer, primary_key=True)\n title = Column(String(200))\n user_id = Column(Integer, ForeignKey('users.id'))\n author = relationship('User', back_populates='posts')\n```"},
363
-
364
  {"prompt": "Python: pytest fixture example",
365
  "response": "```python\nimport pytest\n\n@pytest.fixture\ndef db_connection():\n conn = create_connection()\n yield conn\n conn.close()\n\ndef test_user_creation(db_connection):\n user = create_user(db_connection, 'John')\n assert user.id is not None\n```"},
366
-
367
  {"prompt": "Python: Logging configuration",
368
  "response": "```python\nimport logging\nlogging.basicConfig(\n level=logging.INFO,\n format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',\n handlers=[\n logging.FileHandler('app.log'),\n logging.StreamHandler()\n ]\n)\nlogger = logging.getLogger(__name__)\nlogger.info('Application started')\n```"},
369
-
370
  {"prompt": "Python: Thread pool executor",
371
  "response": "```python\nfrom concurrent.futures import ThreadPoolExecutor\n\ndef process_item(item):\n # do work\n return result\n\nwith ThreadPoolExecutor(max_workers=4) as executor:\n results = list(executor.map(process_item, items))\n```"},
372
-
373
  {"prompt": "Python: Unit test with unittest",
374
  "response": "```python\nimport unittest\n\nclass TestMath(unittest.TestCase):\n def test_add(self):\n self.assertEqual(1+1, 2)\n \n def test_divide(self):\n with self.assertRaises(ZeroDivisionError):\n 1/0\n\nif __name__ == '__main__':\n unittest.main()\n```"},
375
-
376
  {"prompt": "Python: Data class with validation",
377
  "response": "```python\nfrom dataclasses import dataclass, field\nfrom typing import List\n\n@dataclass\nclass User:\n name: str\n email: str\n age: int = 0\n tags: List[str] = field(default_factory=list)\n \n def __post_init__(self):\n if '@' not in self.email:\n raise ValueError('Invalid email')\n```"},
378
-
379
  {"prompt": "Python: FastAPI endpoint with Pydantic",
380
  "response": "```python\nfrom fastapi import FastAPI, HTTPException\nfrom pydantic import BaseModel, EmailStr\n\napp = FastAPI()\n\nclass UserCreate(BaseModel):\n name: str\n email: EmailStr\n age: int = None\n\n@app.post('/users', response_model=UserCreate)\ndef create_user(user: UserCreate):\n return user\n```"},
381
-
382
  {"prompt": "Python: Celery task definition",
383
  "response": "```python\nfrom celery import Celery\napp = Celery('tasks')\n\n@app.task\ndef process_data(data):\n # expensive computation\n result = heavy_computation(data)\n return result\n\n# Call asynchronously\nresult = process_data.delay(data)\nprint(result.get(timeout=10))\n```"},
384
-
385
  {"prompt": "Python: Generator for large file processing",
386
  "response": "```python\ndef process_large_file(filepath):\n with open(filepath) as f:\n for line in f:\n yield process_line(line)\n\nfor result in process_large_file('huge.txt'):\n save_to_db(result)\n```\nMemory efficient for large files"},
387
-
388
  {"prompt": "Python: Memoization decorator",
389
  "response": "```python\nfrom functools import lru_cache\n\n@lru_cache(maxsize=128)\ndef fib(n):\n if n < 2: return n\n return fib(n-1) + fib(n-2)\n\n# Or custom:\ndef memoize(func):\n cache = {}\n def wrapper(*args):\n if args not in cache:\n cache[args] = func(*args)\n return cache[args]\n return wrapper\n```"},
390
-
391
  {"prompt": "Python: Property-based testing with hypothesis",
392
  "response": "```python\nfrom hypothesis import given, strategies as st\n\n@given(st.lists(st.integers(min_value=1)))\ndef test_sorting(lst):\n result = sorted(lst)\n assert len(result) == len(lst)\n assert all(result[i] <= result[i+1] for i in range(len(result)-1))\n```"},
393
-
394
  {"prompt": "Python: NamedTuple for immutable data",
395
  "response": "```python\nfrom collections import namedtuple\n\nPoint = namedtuple('Point', ['x', 'y'])\np = Point(1, 2)\nprint(p.x, p.y) # 1 2\nprint(p._fields) # ('x', 'y')\n```"},
396
-
397
  {"prompt": "Python: Enum for constants",
398
  "response": "```python\nfrom enum import Enum, auto\n\nclass Status(Enum):\n PENDING = auto()\n PROCESSING = auto()\n COMPLETED = auto()\n FAILED = auto()\n\nprint(Status.PENDING.name) # PENDING\nprint(Status.PENDING.value) # 1\n```"},
399
-
400
  {"prompt": "Python: ABC abstract base class",
401
  "response": "```python\nfrom abc import ABC, abstractmethod\n\nclass Shape(ABC):\n @abstractmethod\n def area(self): pass\n \n def describe(self):\n return f'Area: {self.area()}'\n\nclass Circle(Shape):\n def __init__(self, r): self.r = r\n def area(self): return 3.14 * self.r ** 2\n```"},
402
-
403
  {"prompt": "Python: HTTP server with http.server",
404
  "response": "```python\nfrom http.server import HTTPServer, BaseHTTPRequestHandler\nimport json\n\nclass Handler(BaseHTTPRequestHandler):\n def do_GET(self):\n self.send_response(200)\n self.send_header('Content-Type', 'application/json')\n self.end_headers()\n self.wfile.write(json.dumps({'message': 'OK'}).encode())\n\nHTTPServer(('localhost', 8000), Handler).serve_forever()\n```"},
405
-
406
  {"prompt": "Python: SQLite connection and queries",
407
  "response": "```python\nimport sqlite3\n\nconn = sqlite3.connect('database.db')\ncursor = conn.cursor()\n\ncursor.execute('''CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)''')\ncursor.execute('INSERT INTO users (name) VALUES (?)', ('John',))\nconn.commit()\n\nfor row in cursor.execute('SELECT * FROM users'):\n print(row)\n\nconn.close()\n```"},
408
-
409
  {"prompt": "Python: XML parsing with ElementTree",
410
  "response": "```python\nimport xml.etree.ElementTree as ET\n\ntree = ET.parse('data.xml')\nroot = tree.getroot()\n\nfor child in root.findall('.//item'):\n print(child.get('id'), child.text)\n\n# Or create:\nroot = ET.Element('root')\nchild = ET.SubElement(root, 'item', id='1')\nchild.text = 'value'\nET.dump(root)\n```"},
411
-
412
  {"prompt": "Python: JSON handling",
413
  "response": "```python\nimport json\n\n# Load\nwith open('data.json') as f:\n data = json.load(f)\n\n# Parse string\nobj = json.loads('{\"key\": \"value\"}')\n\n# Save\nwith open('out.json', 'w') as f:\n json.dump(data, f, indent=2)\n\n# Custom encoder\nclass CustomEncoder(json.JSONEncoder):\n def default(self, obj):\n if isinstance(obj, datetime):\n return obj.isoformat()\n```"},
414
-
415
  {"prompt": "Python: dataclasses.asdict()",
416
  "response": "```python\nfrom dataclasses import dataclass, asdict\n\n@dataclass\nclass Config:\n host: str = 'localhost'\n port: int = 8080\n debug: bool = False\n\nconfig = Config()\ndict_config = asdict(config)\nprint(dict_config) # {'host': 'localhost', 'port': 8080, 'debug': False}\n```"},
417
-
418
  {"prompt": "Python: Enum with methods",
419
  "response": "```python\nfrom enum import Enum\n\nclass Color(Enum):\n RED = 1\n GREEN = 2\n BLUE = 3\n \n def is_primary(self):\n return self in (Color.RED, Color.GREEN, Color.BLUE)\n\nprint(Color.RED.is_primary()) # True\n```"},
420
-
421
  {"prompt": "Python: argparse CLI",
422
  "response": "```python\nimport argparse\n\nparser = argparse.ArgumentParser(description='My tool')\nparser.add_argument('-n', '--name', required=True, help='Your name')\nparser.add_argument('-v', '--verbose', action='store_true')\nparser.add_argument('-c', '--count', type=int, default=1)\n\nargs = parser.parse_args()\nprint(f'Hello {args.name}' * args.count)\n```\nRun: python script.py -n John -v -c 3"},
423
-
424
  {"prompt": "Python: Simple CLI with click",
425
  "response": "```python\nimport click\n\n@click.command()\n@click.option('--name', default='World', help='Name to greet')\n@click.argument('count', default=1, type=int)\ndef hello(name, count):\n for _ in range(count):\n click.echo(f'Hello {name}!')\n\nif __name__ == '__main__':\n hello()\n```\nRun: python script.py John --count 3"},
426
  ]
427
-
428
  all_data.extend(additional)
429
-
430
  print(f"\n[TOTAL] {len(all_data)} samples")
431
-
432
  # Save
433
  with open(OUTPUT_FILE, "w", encoding="utf-8") as f:
434
  json.dump(all_data, f, indent=2, ensure_ascii=False)
435
-
436
  print(f"\nSaved to: {OUTPUT_FILE}")
437
  print(f"File size: {OUTPUT_FILE.stat().st_size / 1024:.1f} KB")
438
-
439
  return len(all_data)
440
 
441
  if __name__ == "__main__":
 
6
 
7
  import json
8
  from bisect import bisect_left
9
+ from collections.abc import Mapping
10
  from pathlib import Path
11
  from datetime import datetime
12
+ from typing import Any, cast
13
 
14
  OUTPUT_DIR = Path("datasets/raw")
15
  OUTPUT_FILE = OUTPUT_DIR / "blitzkode_full_training.json"
 
17
  def load_huggingface_datasets():
18
  """Try to load datasets from HuggingFace"""
19
  datasets = []
20
+
21
  try:
22
  from datasets import load_dataset
23
  print("[HF] Loading datasets...")
24
+
25
  # Try different datasets
26
  dataset_names = [
27
  "openai/gsm8k",
 
29
  "meta-math/MathInstruct",
30
  "技术桃子/gsm8k-grade-school-math",
31
  ]
32
+
33
  for name in dataset_names:
34
  try:
35
  print(f" Trying {name}...")
36
+ ds = cast(Any, load_dataset(name, split="train[:100]"))
37
  print(f" Loaded {len(ds)} from {name}")
38
+ for raw_item in ds:
39
+ if not isinstance(raw_item, Mapping):
40
+ continue
41
+ item = cast(Mapping[str, Any], raw_item)
42
  datasets.append({
43
  "prompt": str(item.get("question", item.get("instruction", "")))[:500],
44
  "response": str(item.get("answer", item.get("response", item.get("output", ""))))[:1000]
45
  })
46
  except Exception as e:
47
  print(f" Failed: {e}")
48
+
49
  except ImportError:
50
  print("[HF] datasets library not available")
51
+
52
  return datasets
53
 
54
  def generate_comprehensive_problems():
55
  """Generate 500+ comprehensive coding problems"""
56
+
57
  problems = []
58
+
59
  # ==================== ARRAYS ====================
60
  array_problems = [
61
+ {"prompt": "Two Sum: Given array nums and target, return indices of two numbers that add to target",
62
  "response": "```python\ndef two_sum(nums, target):\n seen = {}\n for i, n in enumerate(nums):\n if target - n in seen:\n return [seen[target-n], i]\n seen[n] = i\n return []\n```\nTime O(n), Space O(n)"},
63
+
64
  {"prompt": "Maximum Subarray: Find contiguous subarray with largest sum (Kadane's algorithm)",
65
  "response": "```python\ndef max_subarray(nums):\n max_sum = curr = nums[0]\n for n in nums[1:]:\n curr = max(n, curr + n)\n max_sum = max(max_sum, curr)\n return max_sum\n```\nTime O(n), Space O(1)"},
66
+
67
  {"prompt": "Product of Array Except Self: Return array where each element is product of all other elements",
68
  "response": "```python\ndef product_except_self(nums):\n n = len(nums)\n result = [1] * n\n prefix = 1\n for i in range(n):\n result[i] = prefix\n prefix *= nums[i]\n suffix = 1\n for i in range(n-1, -1, -1):\n result[i] *= suffix\n suffix *= nums[i]\n return result\n```\nTime O(n), Space O(1)"},
69
+
70
  {"prompt": "Merge Intervals: Merge all overlapping intervals",
71
  "response": "```python\ndef merge(intervals):\n intervals.sort(key=lambda x: x[0])\n merged = [intervals[0]]\n for start, end in intervals[1:]:\n if merged[-1][1] >= start:\n merged[-1][1] = max(merged[-1][1], end)\n else:\n merged.append([start, end])\n return merged\n```\nTime O(n log n), Space O(n)"},
72
+
73
  {"prompt": "Rotate Array: Rotate array to right by k steps",
74
  "response": "```python\ndef rotate(nums, k):\n k = k % len(nums)\n nums[:] = nums[-k:] + nums[:-k]\n```\nTime O(n), Space O(1)"},
75
+
76
  {"prompt": "Find Duplicate: Find the duplicate number in array where all elements are in [1,n]",
77
  "response": "```python\ndef find_duplicate(nums):\n slow = fast = nums[0]\n while True:\n slow = nums[slow]\n fast = nums[nums[fast]]\n if slow == fast:\n break\n slow = nums[0]\n while slow != fast:\n slow = nums[slow]\n fast = nums[fast]\n return slow\n```\nTime O(n), Space O(1) - Floyd's Tortoise"},
78
+
79
  {"prompt": "Container With Most Water: Find max water container between vertical lines",
80
  "response": "```python\ndef max_area(height):\n l, r, max_water = 0, len(height)-1, 0\n while l < r:\n water = min(height[l], height[r]) * (r - l)\n max_water = max(max_water, water)\n if height[l] < height[r]:\n l += 1\n else:\n r -= 1\n return max_water\n```\nTime O(n), Space O(1)"},
81
+
82
  {"prompt": "3Sum: Find all unique triplets that sum to zero",
83
  "response": "```python\ndef three_sum(nums):\n res = []\n nums.sort()\n for i in range(len(nums)-2):\n if i > 0 and nums[i] == nums[i-1]:\n continue\n l, r = i+1, len(nums)-1\n while l < r:\n s = nums[i]+nums[l]+nums[r]\n if s == 0:\n res.append([nums[i],nums[l],nums[r]])\n l += 1; r -= 1\n while l < r and nums[l] == nums[l-1]: l += 1\n elif s < 0: l += 1\n else: r -= 1\n return res\n```\nTime O(n^2), Space O(n)"},
84
+
85
  {"prompt": "Dutch National Flag: Sort 0s, 1s, 2s in-place",
86
  "response": "```python\ndef sort_colors(nums):\n l, r = 0, len(nums)-1\n i = 0\n while i <= r:\n if nums[i] == 0:\n nums[i], nums[l] = nums[l], nums[i]\n l += 1; i += 1\n elif nums[i] == 2:\n nums[i], nums[r] = nums[r], nums[i]\n r -= 1\n else:\n i += 1\n return nums\n```\nTime O(n), Space O(1)"},
87
+
88
  {"prompt": "Subarray Sum Equals K: Find number of continuous subarrays that sum to k",
89
  "response": "```python\ndef subarray_sum(nums, k):\n count = 0\n cumsum = 0\n seen = {0: 1}\n for n in nums:\n cumsum += n\n count += seen.get(cumsum - k, 0)\n seen[cumsum] = seen.get(cumsum, 0) + 1\n return count\n```\nTime O(n), Space O(n)"},
90
  ]
91
  problems.extend(array_problems)
92
+
93
  # ==================== STRINGS ====================
94
  string_problems = [
95
  {"prompt": "Valid Palindrome: Check if string is palindrome ignoring non-alphanumeric",
96
  "response": "```python\ndef is_palindrome(s):\n s = ''.join(c.lower() for c in s if c.isalnum())\n return s == s[::-1]\n```\nTime O(n), Space O(n)"},
97
+
98
  {"prompt": "Longest Substring Without Repeating: Find length of longest unique char substring",
99
  "response": "```python\ndef length_of_longest_substring(s):\n char_index = {}\n max_len = start = 0\n for i, c in enumerate(s):\n if c in char_index and char_index[c] >= start:\n start = char_index[c] + 1\n char_index[c] = i\n max_len = max(max_len, i - start + 1)\n return max_len\n```\nTime O(n), Space O(min(n, alphabet))"},
100
+
101
  {"prompt": "String to Integer (atoi): Convert string to 32-bit signed integer",
102
  "response": "```python\ndef my_atoi(s):\n s = s.strip()\n if not s: return 0\n sign = -1 if s[0] == '-' else 1\n if s[0] in '+-': s = s[1:]\n num = 0\n for c in s:\n if not c.isdigit(): break\n num = num * 10 + int(c)\n return max(-2**31, min(2**31-1, sign * num))\n```\nTime O(n), Space O(1)"},
103
+
104
  {"prompt": "Implement strStr: Return index of first occurrence of needle in haystack",
105
  "response": "```python\ndef str_str(haystack, needle):\n return haystack.find(needle)\n```\nOr KMP: Time O(n+m), Space O(m)"},
106
+
107
  {"prompt": "Longest Common Prefix: Find longest common prefix among strings",
108
  "response": "```python\ndef longest_common_prefix(strs):\n if not strs: return ''\n for i, c in enumerate(strs[0]):\n for s in strs[1:]:\n if i >= len(s) or s[i] != c:\n return strs[0][:i]\n return strs[0]\n```\nTime O(n*m), Space O(1)"},
109
+
110
  {"prompt": "Valid Parentheses: Check if parentheses are balanced",
111
  "response": "```python\ndef is_valid(s):\n stack = []\n paren = {')':'(', ']':'[', '}':'{'}\n for c in s:\n if c in paren:\n if not stack or stack.pop() != paren[c]:\n return False\n else:\n stack.append(c)\n return not stack\n```\nTime O(n), Space O(n)"},
112
+
113
  {"prompt": "Word Break: Check if string can be segmented into dictionary words",
114
  "response": "```python\ndef word_break(s, word_dict):\n dp = [False] * (len(s)+1)\n dp[0] = True\n for i in range(1, len(s)+1):\n for j in range(i):\n if dp[j] and s[j:i] in word_dict:\n dp[i] = True\n break\n return dp[len(s)]\n```\nTime O(n^2), Space O(n)"},
115
+
116
  {"prompt": "Count and Say: Generate nth term of count-and-say sequence",
117
  "response": "```python\ndef count_and_say(n):\n result = '1'\n for _ in range(n-1):\n new = ''\n i = 0\n while i < len(result):\n count = 1\n while i+1 < len(result) and result[i] == result[i+1]:\n count += 1; i += 1\n new += str(count) + result[i]\n i += 1\n result = new\n return result\n```\nTime O(n*2^n), Space O(2^n)"},
118
  ]
119
  problems.extend(string_problems)
120
+
121
  # ==================== LINKED LISTS ====================
122
  linked_problems = [
123
  {"prompt": "Reverse Linked List: Reverse singly linked list",
124
  "response": "```python\ndef reverse_list(head):\n prev = None\n while head:\n next_node = head.next\n head.next = prev\n prev = head\n head = next_node\n return prev\n```\nTime O(n), Space O(1)"},
125
+
126
  {"prompt": "Merge Two Sorted Lists: Merge two sorted linked lists",
127
  "response": "```python\ndef merge_two_lists(l1, l2):\n dummy = cur = ListNode()\n while l1 and l2:\n if l1.val < l2.val:\n cur.next = l1\n l1 = l1.next\n else:\n cur.next = l2\n l2 = l2.next\n cur = cur.next\n cur.next = l1 or l2\n return dummy.next\n```\nTime O(n+m), Space O(1)"},
128
+
129
  {"prompt": "Linked List Cycle: Detect if linked list has a cycle",
130
  "response": "```python\ndef has_cycle(head):\n slow = fast = head\n while fast and fast.next:\n slow = slow.next\n fast = fast.next.next\n if slow == fast:\n return True\n return False\n```\nTime O(n), Space O(1) - Floyd's cycle detection"},
131
+
132
  {"prompt": "Remove Nth Node From End: Remove nth node from end of list",
133
  "response": "```python\ndef remove_nth_from_end(head, n):\n dummy = ListNode(0, head)\n slow = fast = dummy\n for _ in range(n+1):\n fast = fast.next\n while fast:\n slow = slow.next\n fast = fast.next\n slow.next = slow.next.next\n return dummy.next\n```\nTime O(n), Space O(1)"},
134
+
135
  {"prompt": "Add Two Numbers: Add two numbers represented by linked lists",
136
  "response": "```python\ndef add_two_numbers(l1, l2):\n dummy = cur = ListNode()\n carry = 0\n while l1 or l2 or carry:\n s = (l1.val if l1 else 0) + (l2.val if l2 else 0) + carry\n carry = s // 10\n cur.next = ListNode(s % 10)\n cur = cur.next\n l1 = l1.next if l1 else None\n l2 = l2.next if l2 else None\n return dummy.next\n```\nTime O(max(m,n)), Space O(1)"},
137
  ]
138
  problems.extend(linked_problems)
139
+
140
  # ==================== TREES ====================
141
  tree_problems = [
142
  {"prompt": "Binary Tree Inorder Traversal: Return inorder traversal of BST",
143
  "response": "```python\ndef inorder(root, res=[]):\n if root:\n inorder(root.left, res)\n res.append(root.val)\n inorder(root.right, res)\n return res\n```\nOr iterative: Time O(n), Space O(h)"},
144
+
145
  {"prompt": "Maximum Depth of Binary Tree: Find deepest node depth",
146
  "response": "```python\ndef max_depth(root):\n if not root: return 0\n return 1 + max(max_depth(root.left), max_depth(root.right))\n```\nTime O(n), Space O(h)"},
147
+
148
  {"prompt": "Validate Binary Search Tree: Check if tree is valid BST",
149
  "response": "```python\ndef is_valid_bst(root, float('-inf'), float('inf')):\n if not root: return True\n if root.val <= min_val or root.val >= max_val: return False\n return is_valid_bst(root.left, min_val, root.val) and \\\n is_valid_bst(root.right, root.val, max_val)\n```\nTime O(n), Space O(h)"},
150
+
151
  {"prompt": "Symmetric Tree: Check if tree is mirror of itself",
152
  "response": "```python\ndef is_symmetric(root):\n def helper(l, r):\n if not l or not r: return l == r\n return l.val == r.val and helper(l.left, r.right) and helper(l.right, r.left)\n return helper(root, root)\n```\nTime O(n), Space O(h)"},
153
+
154
  {"prompt": "Construct Binary Tree from Preorder and Inorder",
155
  "response": "```python\ndef build_tree(preorder, inorder):\n if not preorder: return None\n root = TreeNode(preorder[0])\n idx = inorder.index(preorder[0])\n root.left = build_tree(preorder[1:idx+1], inorder[:idx])\n root.right = build_tree(preorder[idx+1:], inorder[idx+1:])\n return root\n```\nTime O(n), Space O(n)"},
156
+
157
  {"prompt": "Lowest Common Ancestor of BST",
158
  "response": "```python\ndef lowest_common_ancestor(root, p, q):\n while root:\n if p.val < root.val and q.val < root.val:\n root = root.left\n elif p.val > root.val and q.val > root.val:\n root = root.right\n else:\n return root\n return None\n```\nTime O(h), Space O(1)"},
159
+
160
  {"prompt": "Binary Tree Level Order Traversal: BFS traversal",
161
  "response": "```python\nfrom collections import deque\ndef level_order(root):\n if not root: return []\n result, queue = [], deque([root])\n while queue:\n level = []\n for _ in range(len(queue)):\n node = queue.popleft()\n level.append(node.val)\n if node.left: queue.append(node.left)\n if node.right: queue.append(node.right)\n result.append(level)\n return result\n```\nTime O(n), Space O(w)"},
162
  ]
163
  problems.extend(tree_problems)
164
+
165
  # ==================== DYNAMIC PROGRAMMING ====================
166
  dp_problems = [
167
  {"prompt": "Climbing Stairs: Count ways to climb n stairs (1 or 2 steps)",
168
  "response": "```python\ndef climb_stairs(n):\n if n <= 2: return n\n dp = [0] * (n+1)\n dp[1], dp[2] = 1, 2\n for i in range(3, n+1):\n dp[i] = dp[i-1] + dp[i-2]\n return dp[n]\n```\nTime O(n), Space O(1) - can optimize to 2 vars"},
169
+
170
  {"prompt": "Coin Change: Minimum coins to make amount",
171
  "response": "```python\ndef coin_change(coins, amount):\n dp = [float('inf')] * (amount+1)\n dp[0] = 0\n for c in coins:\n for i in range(c, amount+1):\n dp[i] = min(dp[i], dp[i-c]+1)\n return dp[amount] if dp[amount] != float('inf') else -1\n```\nTime O(n*amount), Space O(amount)"},
172
+
173
  {"prompt": "Longest Increasing Subsequence: Find LIS length",
174
  "response": "```python\ndef length_of_lis(nums):\n tails = []\n for n in nums:\n i = bisect_left(tails, n)\n if i == len(tails): tails.append(n)\n else: tails[i] = n\n return len(tails)\n```\nTime O(n log n), Space O(n)"},
175
+
176
  {"prompt": "Word Break: Can string be segmented into dictionary words",
177
  "response": "```python\ndef word_break(s, word_dict):\n dp = [False] * (len(s)+1)\n dp[0] = True\n for i in range(1, len(s)+1):\n for j in range(i):\n if dp[j] and s[j:i] in word_dict:\n dp[i] = True\n break\n return dp[len(s)]\n```\nTime O(n^2), Space O(n)"},
178
+
179
  {"prompt": "House Robber: Max amount without robbing adjacent houses",
180
  "response": "```python\ndef rob(nums):\n prev = curr = 0\n for n in nums:\n prev, curr = curr, max(curr, prev + n)\n return curr\n```\nTime O(n), Space O(1)"},
181
+
182
  {"prompt": "Edit Distance: Minimum edits to transform word1 to word2",
183
  "response": "```python\ndef min_distance(word1, word2):\n m, n = len(word1), len(word2)\n dp = [[0]*(n+1) for _ in range(m+1)]\n for i in range(m+1): dp[i][0] = i\n for j in range(n+1): dp[0][j] = j\n for i in range(1, m+1):\n for j in range(1, n+1):\n if word1[i-1] == word2[j-1]:\n dp[i][j] = dp[i-1][j-1]\n else:\n dp[i][j] = 1 + min(dp[i-1][j], dp[i][j-1], dp[i-1][j-1])\n return dp[m][n]\n```\nTime O(m*n), Space O(m*n)"},
184
+
185
  {"prompt": "Longest Common Subsequence: Find LCS length",
186
  "response": "```python\ndef lcs(text1, text2):\n m, n = len(text1), len(text2)\n dp = [[0]*(n+1) for _ in range(m+1)]\n for i in range(1, m+1):\n for j in range(1, n+1):\n if text1[i-1] == text2[j-1]:\n dp[i][j] = dp[i-1][j-1] + 1\n else:\n dp[i][j] = max(dp[i-1][j], dp[i][j-1])\n return dp[m][n]\n```\nTime O(m*n), Space O(m*n)"},
187
+
188
  {"prompt": "Decode Ways: Count ways to decode string",
189
  "response": "```python\ndef num_decodings(s):\n if not s or s[0] == '0': return 0\n dp = [0] * (len(s)+1)\n dp[0] = dp[1] = 1\n for i in range(2, len(s)+1):\n if s[i-1] != '0': dp[i] += dp[i-1]\n if 10 <= int(s[i-2:i]) <= 26: dp[i] += dp[i-2]\n return dp[len(s)]\n```\nTime O(n), Space O(1)"},
190
  ]
191
  problems.extend(dp_problems)
192
+
193
  # ==================== GRAPHS ====================
194
  graph_problems = [
195
  {"prompt": "Number of Islands: Count islands in 2D grid",
196
  "response": "```python\ndef num_islands(grid):\n def dfs(i, j):\n grid[i][j] = '0'\n for di, dj in [(0,1),(0,-1),(1,0),(-1,0)]:\n ni, nj = i+di, j+dj\n if 0<=ni<m and 0<=nj<n and grid[ni][nj]=='1':\n dfs(ni, nj)\n count = 0\n m, n = len(grid), len(grid[0])\n for i in range(m):\n for j in range(n):\n if grid[i][j] == '1':\n dfs(i, j)\n count += 1\n return count\n```\nTime O(m*n), Space O(m*n)"},
197
+
198
  {"prompt": "Clone Graph: Deep copy undirected graph",
199
  "response": "```python\ndef clone_graph(node):\n if not node: return None\n visited = {}\n def dfs(n):\n if n in visited: return visited[n]\n visited[n] = Node(n.val, [])\n for neighbor in n.neighbors:\n visited[n].neighbors.append(dfs(neighbor))\n return visited[n]\n return dfs(node)\n```\nTime O(V+E), Space O(V)"},
200
+
201
  {"prompt": "Course Schedule: Check if can finish all courses",
202
  "response": "```python\ndef can_finish(numCourses, prerequisites):\n graph = [[] for _ in range(numCourses)]\n visited = [0] * numCourses\n for u, v in prerequisites:\n graph[v].append(u)\n def dfs(i):\n if visited[i] == 1: return False\n if visited[i] == 2: return True\n visited[i] = 1\n for nei in graph[i]:\n if not dfs(nei): return False\n visited[i] = 2\n return True\n return all(dfs(i) for i in range(numCourses))\n```\nTime O(V+E), Space O(V)"},
203
+
204
  {"prompt": "Pacific Atlantic Water Flow: Find cells that can flow to both oceans",
205
  "response": "```python\ndef pacific_atlantic(heights):\n if not heights: return []\n m, n = len(heights), len(heights[0])\n pacific = [[False]*n for _ in range(m)]\n atlantic = [[False]*n for _ in range(m)]\n def dfs(r, c, visited, prev):\n if r<0 or c<0 or r>=m or c>=n: return\n if visited[r][c] or heights[r][c] < prev: return\n visited[r][c] = True\n for dr, dc in [(0,1),(0,-1),(1,0),(-1,0)]:\n dfs(r+dr, c+dc, visited, heights[r][c])\n for i in range(m): dfs(i, 0, pacific, 0); dfs(i, n-1, atlantic, 0)\n for j in range(n): dfs(0, j, pacific, 0); dfs(m-1, j, atlantic, 0)\n return [[i,j] for i in range(m) for j in range(n) if pacific[i][j] and atlantic[i][j]]\n```\nTime O(m*n), Space O(m*n)"},
206
  ]
207
  problems.extend(graph_problems)
208
+
209
  # ==================== SORTING & SEARCHING ====================
210
  search_problems = [
211
  {"prompt": "Binary Search: Find target in sorted array",
212
  "response": "```python\ndef binary_search(arr, target):\n l, r = 0, len(arr)-1\n while l <= r:\n mid = (l + r) // 2\n if arr[mid] == target: return mid\n elif arr[mid] < target: l = mid + 1\n else: r = mid - 1\n return -1\n```\nTime O(log n), Space O(1)"},
213
+
214
  {"prompt": "Search in Rotated Array: Search in rotated sorted array",
215
  "response": "```python\ndef search(nums, target):\n l, r = 0, len(nums)-1\n while l <= r:\n mid = (l + r) // 2\n if nums[mid] == target: return mid\n if nums[l] <= nums[mid]:\n if nums[l] <= target < nums[mid]: r = mid - 1\n else: l = mid + 1\n else:\n if nums[mid] < target <= nums[r]: l = mid + 1\n else: r = mid - 1\n return -1\n```\nTime O(log n), Space O(1)"},
216
+
217
  {"prompt": "Merge Sorted Array: Merge two sorted arrays in-place",
218
  "response": "```python\ndef merge(nums1, m, nums2, n):\n i, j, k = m-1, n-1, m+n-1\n while i >= 0 and j >= 0:\n if nums1[i] > nums2[j]:\n nums1[k] = nums1[i]; i -= 1\n else:\n nums1[k] = nums2[j]; j -= 1\n k -= 1\n while j >= 0:\n nums1[k] = nums2[j]; j -= 1; k -= 1\n```\nTime O(m+n), Space O(1)"},
219
  ]
220
  problems.extend(search_problems)
221
+
222
  # ==================== RECURSION & BACKTRACKING ====================
223
  backtrack_problems = [
224
  {"prompt": "Generate all permutations of array",
225
  "response": "```python\ndef permute(nums):\n res = []\n def backtrack(path, used):\n if len(path) == len(nums):\n res.append(path[:])\n return\n for i, n in enumerate(nums):\n if i in used: continue\n path.append(n)\n used.add(i)\n backtrack(path, used)\n path.pop()\n used.remove(i)\n backtrack([], set())\n return res\n```\nTime O(n!*n), Space O(n)"},
226
+
227
  {"prompt": "Generate all subsets (Power Set)",
228
  "response": "```python\ndef subsets(nums):\n res = []\n def backtrack(i, path):\n res.append(path[:])\n for j in range(i, len(nums)):\n path.append(nums[j])\n backtrack(j+1, path)\n path.pop()\n backtrack(0, [])\n return res\n```\nTime O(n*2^n), Space O(n)"},
229
+
230
  {"prompt": "N-Queens: Place N queens on NxN board",
231
  "response": "```python\ndef solve_n_queens(n):\n res = []\n cols = set()\n pos_diag = set()\n neg_diag = set()\n board = [['.' for _ in range(n)] for _ in range(n)]\n def backtrack(row):\n if row == n:\n res.append([''.join(row) for row in board])\n return\n for col in range(n):\n if col in cols or row-col in pos_diag or row+col in neg_diag:\n continue\n board[row][col] = 'Q'\n cols.add(col); pos_diag.add(row-col); neg_diag.add(row+col)\n backtrack(row+1)\n board[row][col] = '.'\n cols.remove(col); pos_diag.remove(row-col); neg_diag.remove(row+col)\n backtrack(0)\n return res\n```\nTime O(N!), Space O(N)"},
232
+
233
  {"prompt": "Combination Sum: Find all combinations that sum to target",
234
  "response": "```python\ndef combination_sum(candidates, target):\n res = []\n candidates.sort()\n def backtrack(i, path, remain):\n if remain == 0: res.append(path[:])\n if remain < 0: return\n for j in range(i, len(candidates)):\n path.append(candidates[j])\n backtrack(j, path, remain-candidates[j])\n path.pop()\n backtrack(0, [], target)\n return res\n```\nTime O(2^n), Space O(n)"},
235
  ]
236
  problems.extend(backtrack_problems)
237
+
238
  # ==================== DESIGN ====================
239
  design_problems = [
240
  {"prompt": "Implement LRU Cache with O(1) get and put",
241
  "response": "```python\nfrom collections import OrderedDict\nclass LRUCache:\n def __init__(self, capacity):\n self.cache = OrderedDict()\n self.capacity = capacity\n def get(self, key):\n if key not in self.cache: return -1\n self.cache.move_to_end(key)\n return self.cache[key]\n def put(self, key, value):\n if key in self.cache: self.cache.move_to_end(key)\n self.cache[key] = value\n if len(self.cache) > self.capacity:\n self.cache.popitem(last=False)\n```\nTime O(1), Space O(capacity)"},
242
+
243
  {"prompt": "Implement Trie (Prefix Tree)",
244
  "response": "```python\nclass TrieNode:\n def __init__(self):\n self.children = {}\n self.is_end = False\nclass Trie:\n def __init__(self): self.root = TrieNode()\n def insert(self, word):\n node = self.root\n for c in word:\n if c not in node.children: node.children[c] = TrieNode()\n node = node.children[c]\n node.is_end = True\n def search(self, word):\n node = self.root\n for c in word:\n if c not in node.children: return False\n node = node.children[c]\n return node.is_end\n def startsWith(self, prefix):\n node = self.root\n for c in prefix:\n if c not in node.children: return False\n node = node.children[c]\n return True\n```\nTime O(m), Space O(m) per operation"},
245
+
246
  {"prompt": "Min Stack: Stack that supports min in O(1)",
247
  "response": "```python\nclass MinStack:\n def __init__(self):\n self.stack = []\n self.min_stack = []\n def push(self, val):\n self.stack.append(val)\n if not self.min_stack or val <= self.min_stack[-1]:\n self.min_stack.append(val)\n def pop(self):\n val = self.stack.pop()\n if val == self.min_stack[-1]: self.min_stack.pop()\n return val\n def top(self): return self.stack[-1]\n def getMin(self): return self.min_stack[-1]\n```\nTime O(1), Space O(n)"},
248
+
249
  {"prompt": "Implement Rate Limiter (Token Bucket)",
250
  "response": "```python\nimport time\nclass RateLimiter:\n def __init__(self, rate, capacity):\n self.rate = rate\n self.capacity = capacity\n self.tokens = capacity\n self.last_time = time.time()\n def allow(self):\n now = time.time()\n self.tokens = min(self.capacity, self.tokens + (now-self.last_time)*self.rate)\n self.last_time = now\n if self.tokens >= 1:\n self.tokens -= 1\n return True\n return False\n```\nTime O(1), Space O(1)"},
251
  ]
252
  problems.extend(design_problems)
253
+
254
  # ==================== JAVASCRIPT ====================
255
  js_problems = [
256
  {"prompt": "JavaScript: Debounce function",
257
  "response": "```javascript\nfunction debounce(func, wait) {\n let timeout;\n return function(...args) {\n clearTimeout(timeout);\n timeout = setTimeout(() => func.apply(this, args), wait);\n };\n}\n```"},
258
+
259
  {"prompt": "JavaScript: Throttle function",
260
  "response": "```javascript\nfunction throttle(func, limit) {\n let inThrottle;\n return function(...args) {\n if (!inThrottle) {\n func.apply(this, args);\n inThrottle = true;\n setTimeout(() => inThrottle = false, limit);\n }\n };\n}\n```"},
261
+
262
  {"prompt": "JavaScript: Deep clone object",
263
  "response": "```javascript\nfunction deepClone(obj, visited = new WeakMap()) {\n if (obj === null || typeof obj !== 'object') return obj;\n if (visited.has(obj)) return visited.get(obj);\n const clone = Array.isArray(obj) ? [] : {};\n visited.set(obj, clone);\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n clone[key] = deepClone(obj[key], visited);\n }\n }\n return clone;\n}\n```"},
264
+
265
  {"prompt": "JavaScript: Promise.all with timeout",
266
  "response": "```javascript\nfunction promiseAllWithTimeout(promises, timeout) {\n return Promise.all(\n promises.map(p =>\n Promise.race([\n p,\n new Promise((_, reject) => \n setTimeout(() => reject(new Error('Timeout')), timeout)\n )\n ])\n )\n );\n}\n```"},
267
+
268
  {"prompt": "JavaScript: Event Emitter implementation",
269
  "response": "```javascript\nclass EventEmitter {\n constructor() { this.events = {}; }\n on(event, fn) {\n if (!this.events[event]) this.events[event] = [];\n this.events[event].push(fn);\n }\n emit(event, ...args) {\n if (this.events[event]) \n this.events[event].forEach(fn => fn(...args));\n }\n off(event, fn) {\n if (this.events[event]) \n this.events[event] = this.events[event].filter(f => f !== fn);\n }\n}\n```"},
270
+
271
  {"prompt": "JavaScript: Currying function",
272
  "response": "```javascript\nfunction curry(fn) {\n return function curried(...args) {\n if (args.length >= fn.length) {\n return fn.apply(this, args);\n }\n return function(...args2) {\n return curried.apply(this, args.concat(args2));\n };\n };\n}\nconst add = curry((a, b, c) => a + b + c);\nadd(1)(2)(3); // 6\n```"},
273
  ]
274
  problems.extend(js_problems)
275
+
276
  # ==================== JAVA ====================
277
  java_problems = [
278
  {"prompt": "Java: Thread-safe Singleton (Double-checked locking)",
279
  "response": "```java\npublic class Singleton {\n private static volatile Singleton instance;\n private Singleton() {}\n public static Singleton getInstance() {\n if (instance == null) {\n synchronized (Singleton.class) {\n if (instance == null) {\n instance = new Singleton();\n }\n }\n }\n return instance;\n }\n}\n```"},
280
+
281
  {"prompt": "Java: Producer-Consumer with wait/notify",
282
  "response": "```java\npublic class ProducerConsumer {\n private Queue<Integer> buffer = new LinkedList<>();\n private int MAX_SIZE = 10;\n \n public synchronized void produce(int value) throws InterruptedException {\n while (buffer.size() >= MAX_SIZE) wait();\n buffer.add(value);\n notifyAll();\n }\n \n public synchronized int consume() throws InterruptedException {\n while (buffer.isEmpty()) wait();\n notifyAll();\n return buffer.poll();\n }\n}\n```"},
283
+
284
  {"prompt": "Java: Builder Pattern for User class",
285
  "response": "```java\npublic class User {\n private String name, email;\n private int age;\n \n private User(Builder b) {\n this.name = b.name; this.email = b.email; this.age = b.age;\n }\n \n public static class Builder {\n private String name, email;\n private int age = 0;\n public Builder name(String name) { this.name = name; return this; }\n public Builder email(String email) { this.email = email; return this; }\n public Builder age(int age) { this.age = age; return this; }\n public User build() { return new User(this); }\n }\n}\n// Usage: User u = new User.Builder().name(\"John\").age(25).build();\n```"},
286
+
287
  {"prompt": "Java: Generic Stack implementation",
288
  "response": "```java\npublic class Stack<T> {\n private Object[] arr;\n private int top = -1, capacity;\n \n public Stack(int capacity) {\n this.capacity = capacity;\n arr = new Object[capacity];\n }\n \n public void push(T item) {\n if (top == capacity - 1) throw new StackOverflowError();\n arr[++top] = item;\n }\n \n @SuppressWarnings(\"unchecked\")\n public T pop() {\n if (top == -1) throw new EmptyStackException();\n return (T) arr[top--];\n }\n \n public T peek() {\n if (top == -1) throw new EmptyStackException();\n return (T) arr[top];\n }\n}\n```"},
289
+
290
  {"prompt": "Java: Observer Pattern",
291
  "response": "```java\ninterface Observer { void update(String msg); }\nclass Subject {\n private List<Observer> observers = new ArrayList<>();\n public void attach(Observer o) { observers.add(o); }\n public void detach(Observer o) { observers.remove(o); }\n public void notifyAll(String msg) {\n observers.forEach(o -> o.update(msg));\n }\n}\n```"},
292
  ]
293
  problems.extend(java_problems)
294
+
295
  # ==================== ALGORITHMS & CONCEPTS ====================
296
  concept_problems = [
297
  {"prompt": "Explain Big O, Big Omega, Big Theta notation",
298
  "response": "Big O: Upper bound (worst case)\nBig Omega: Lower bound (best case)\nBig Theta: Tight bound (average)\n\nExamples:\n- O(1): Array access\n- O(log n): Binary search\n- O(n): Linear search\n- O(n log n): Merge sort\n- O(n^2): Bubble sort\n- O(2^n): Recursive Fibonacci\n- O(n!): Permutations"},
299
+
300
  {"prompt": "Explain and implement QuickSort",
301
  "response": "```python\ndef quicksort(arr):\n if len(arr) <= 1: return arr\n pivot = arr[len(arr)//2]\n left = [x for x in arr if x < pivot]\n middle = [x for x in arr if x == pivot]\n right = [x for x in arr if x > pivot]\n return quicksort(left) + middle + quicksort(right)\n```\nAverage: O(n log n), Worst: O(n^2)\nSpace: O(n)"},
302
+
303
  {"prompt": "Explain and implement MergeSort",
304
  "response": "```python\ndef mergesort(arr):\n if len(arr) <= 1: return arr\n mid = len(arr)//2\n left = mergesort(arr[:mid])\n right = mergesort(arr[mid:])\n return merge(left, right)\n\ndef merge(l, r):\n result = []\n while l and r:\n result.append(l.pop(0) if l[0] <= r[0] else r.pop(0))\n result.extend(l or r)\n return result\n```\nTime: O(n log n), Space: O(n)\nStable sort"},
305
+
306
  {"prompt": "Explain Hash Table collision resolution",
307
  "response": "1. Chaining: Store collisions in linked list\n - Time: O(1) avg, O(n) worst\n2. Open Addressing: Find next empty slot\n - Linear probing: h(k) + i\n - Quadratic probing: h(k) + i^2\n - Double hashing: h1(k) + i*h2(k)\n\nLoad factor = n/m should be < 0.7"},
308
+
309
  {"prompt": "Explain BFS vs DFS",
310
  "response": "BFS (Breadth-First Search):\n- Uses Queue\n- Level by level traversal\n- Finds shortest path in unweighted\n- More memory\n- Good for shortest path\n\nDFS (Depth-First Search):\n- Uses Stack (or recursion)\n- Goes deep first\n- Lower memory for deep graphs\n- Good for path finding, cycles"},
311
+
312
  {"prompt": "Explain Dijkstra's algorithm",
313
  "response": "```python\nimport heapq\ndef dijkstra(graph, start):\n dist = {v: float('inf') for v in graph}\n dist[start] = 0\n pq = [(0, start)]\n while pq:\n d, u = heapq.heappop(pq)\n if d > dist[u]: continue\n for v, w in graph.get(u, []):\n if dist[u] + w < dist[v]:\n dist[v] = dist[u] + w\n heapq.heappush(pq, (dist[v], v))\n return dist\n```\nTime: O((V+E) log V)\nSpace: O(V)\nGreedy, doesn't work with negative weights"},
314
+
315
  {"prompt": "Explain Union-Find (Disjoint Set)",
316
  "response": "```python\nclass UnionFind:\n def __init__(self, n):\n self.parent = list(range(n))\n self.rank = [0] * n\n \n def find(self, x):\n if self.parent[x] != x:\n self.parent[x] = self.find(self.parent[x])\n return self.parent[x]\n \n def union(self, x, y):\n px, py = self.find(x), self.find(y)\n if px == py: return\n if self.rank[px] < self.rank[py]: px, py = py, px\n self.parent[py] = px\n if self.rank[px] == self.rank[py]: self.rank[px] += 1\n```\nTime: O(alpha(n)) - almost constant"},
317
  ]
318
  problems.extend(concept_problems)
319
+
320
  print(f"Generated {len(problems)} comprehensive problems")
321
  return problems
322
 
 
324
  print("=" * 60)
325
  print("BUILDING COMPREHENSIVE DATASET")
326
  print("=" * 60)
327
+
328
  OUTPUT_DIR.mkdir(parents=True, exist_ok=True)
329
+
330
  all_data = []
331
+
332
  # 1. Generate comprehensive problems
333
  print("\n[1/3] Generating algorithmic problems...")
334
  problems = generate_comprehensive_problems()
335
  all_data.extend(problems)
336
  print(f" Total: {len(all_data)}")
337
+
338
  # 2. Try HuggingFace datasets
339
  print("\n[2/3] Loading HuggingFace datasets...")
340
  hf_data = load_huggingface_datasets()
341
  all_data.extend(hf_data)
342
  print(f" Total: {len(all_data)}")
343
+
344
  # 3. Add more diverse problems
345
  print("\n[3/3] Adding additional problems...")
346
+
347
  additional = [
348
+ {"prompt": "Python: Read file and count word frequencies",
349
  "response": "```python\nfrom collections import Counter\nwith open('file.txt') as f:\n words = f.read().split()\nprint(Counter(words).most_common(10))\n```"},
350
+
351
  {"prompt": "Python: Async HTTP request with aiohttp",
352
  "response": "```python\nimport aiohttp, asyncio\nasync def fetch(url):\n async with aiohttp.ClientSession() as session:\n async with session.get(url) as resp:\n return await resp.text()\nasyncio.run(fetch('https://example.com'))\n```"},
353
+
354
  {"prompt": "Python: Context manager for timing",
355
  "response": "```python\nimport time\nclass Timer:\n def __enter__(self): self.start = time.time()\n def __exit__(self, *args): print(time.time()-self.start)\nwith Timer():\n # code to time\n sum(range(1000000))\n```"},
356
+
357
  {"prompt": "Python: Decorator for retry logic",
358
  "response": "```python\nimport time, functools\ndef retry(max_attempts=3, delay=1):\n def decorator(func):\n @functools.wraps(func)\n def wrapper(*args, **kwargs):\n for _ in range(max_attempts):\n try: return func(*args, **kwargs)\n except Exception as e:\n if _ == max_attempts-1: raise\n time.sleep(delay)\n return wrapper\n return decorator\n\n@retry(max_attempts=3)\ndef call_api(): pass\n```"},
359
+
360
  {"prompt": "Python: Generate random password",
361
  "response": "```python\nimport string, random\ndef generate_password(length=16):\n chars = string.ascii_letters + string.digits + string.punctuation\n return ''.join(random.choice(chars) for _ in range(length))\n```"},
362
+
363
  {"prompt": "Python: Flask REST API endpoint",
364
  "response": "```python\nfrom flask import Flask, request, jsonify\napp = Flask(__name__)\n\n@app.route('/api/users/<int:user_id>', methods=['GET'])\ndef get_user(user_id):\n return jsonify({'id': user_id, 'name': 'John'})\n\n@app.route('/api/users', methods=['POST'])\ndef create_user():\n data = request.json\n return jsonify({'id': 1, **data}), 201\n```"},
365
+
366
  {"prompt": "Python: SQLAlchemy model definition",
367
  "response": "```python\nfrom sqlalchemy import Column, Integer, String, ForeignKey\nfrom sqlalchemy.orm import relationship, declarative_base\nBase = declarative_base()\n\nclass User(Base):\n __tablename__ = 'users'\n id = Column(Integer, primary_key=True)\n name = Column(String(100), nullable=False)\n email = Column(String(100), unique=True)\n posts = relationship('Post', back_populates='author')\n\nclass Post(Base):\n __tablename__ = 'posts'\n id = Column(Integer, primary_key=True)\n title = Column(String(200))\n user_id = Column(Integer, ForeignKey('users.id'))\n author = relationship('User', back_populates='posts')\n```"},
368
+
369
  {"prompt": "Python: pytest fixture example",
370
  "response": "```python\nimport pytest\n\n@pytest.fixture\ndef db_connection():\n conn = create_connection()\n yield conn\n conn.close()\n\ndef test_user_creation(db_connection):\n user = create_user(db_connection, 'John')\n assert user.id is not None\n```"},
371
+
372
  {"prompt": "Python: Logging configuration",
373
  "response": "```python\nimport logging\nlogging.basicConfig(\n level=logging.INFO,\n format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',\n handlers=[\n logging.FileHandler('app.log'),\n logging.StreamHandler()\n ]\n)\nlogger = logging.getLogger(__name__)\nlogger.info('Application started')\n```"},
374
+
375
  {"prompt": "Python: Thread pool executor",
376
  "response": "```python\nfrom concurrent.futures import ThreadPoolExecutor\n\ndef process_item(item):\n # do work\n return result\n\nwith ThreadPoolExecutor(max_workers=4) as executor:\n results = list(executor.map(process_item, items))\n```"},
377
+
378
  {"prompt": "Python: Unit test with unittest",
379
  "response": "```python\nimport unittest\n\nclass TestMath(unittest.TestCase):\n def test_add(self):\n self.assertEqual(1+1, 2)\n \n def test_divide(self):\n with self.assertRaises(ZeroDivisionError):\n 1/0\n\nif __name__ == '__main__':\n unittest.main()\n```"},
380
+
381
  {"prompt": "Python: Data class with validation",
382
  "response": "```python\nfrom dataclasses import dataclass, field\nfrom typing import List\n\n@dataclass\nclass User:\n name: str\n email: str\n age: int = 0\n tags: List[str] = field(default_factory=list)\n \n def __post_init__(self):\n if '@' not in self.email:\n raise ValueError('Invalid email')\n```"},
383
+
384
  {"prompt": "Python: FastAPI endpoint with Pydantic",
385
  "response": "```python\nfrom fastapi import FastAPI, HTTPException\nfrom pydantic import BaseModel, EmailStr\n\napp = FastAPI()\n\nclass UserCreate(BaseModel):\n name: str\n email: EmailStr\n age: int = None\n\n@app.post('/users', response_model=UserCreate)\ndef create_user(user: UserCreate):\n return user\n```"},
386
+
387
  {"prompt": "Python: Celery task definition",
388
  "response": "```python\nfrom celery import Celery\napp = Celery('tasks')\n\n@app.task\ndef process_data(data):\n # expensive computation\n result = heavy_computation(data)\n return result\n\n# Call asynchronously\nresult = process_data.delay(data)\nprint(result.get(timeout=10))\n```"},
389
+
390
  {"prompt": "Python: Generator for large file processing",
391
  "response": "```python\ndef process_large_file(filepath):\n with open(filepath) as f:\n for line in f:\n yield process_line(line)\n\nfor result in process_large_file('huge.txt'):\n save_to_db(result)\n```\nMemory efficient for large files"},
392
+
393
  {"prompt": "Python: Memoization decorator",
394
  "response": "```python\nfrom functools import lru_cache\n\n@lru_cache(maxsize=128)\ndef fib(n):\n if n < 2: return n\n return fib(n-1) + fib(n-2)\n\n# Or custom:\ndef memoize(func):\n cache = {}\n def wrapper(*args):\n if args not in cache:\n cache[args] = func(*args)\n return cache[args]\n return wrapper\n```"},
395
+
396
  {"prompt": "Python: Property-based testing with hypothesis",
397
  "response": "```python\nfrom hypothesis import given, strategies as st\n\n@given(st.lists(st.integers(min_value=1)))\ndef test_sorting(lst):\n result = sorted(lst)\n assert len(result) == len(lst)\n assert all(result[i] <= result[i+1] for i in range(len(result)-1))\n```"},
398
+
399
  {"prompt": "Python: NamedTuple for immutable data",
400
  "response": "```python\nfrom collections import namedtuple\n\nPoint = namedtuple('Point', ['x', 'y'])\np = Point(1, 2)\nprint(p.x, p.y) # 1 2\nprint(p._fields) # ('x', 'y')\n```"},
401
+
402
  {"prompt": "Python: Enum for constants",
403
  "response": "```python\nfrom enum import Enum, auto\n\nclass Status(Enum):\n PENDING = auto()\n PROCESSING = auto()\n COMPLETED = auto()\n FAILED = auto()\n\nprint(Status.PENDING.name) # PENDING\nprint(Status.PENDING.value) # 1\n```"},
404
+
405
  {"prompt": "Python: ABC abstract base class",
406
  "response": "```python\nfrom abc import ABC, abstractmethod\n\nclass Shape(ABC):\n @abstractmethod\n def area(self): pass\n \n def describe(self):\n return f'Area: {self.area()}'\n\nclass Circle(Shape):\n def __init__(self, r): self.r = r\n def area(self): return 3.14 * self.r ** 2\n```"},
407
+
408
  {"prompt": "Python: HTTP server with http.server",
409
  "response": "```python\nfrom http.server import HTTPServer, BaseHTTPRequestHandler\nimport json\n\nclass Handler(BaseHTTPRequestHandler):\n def do_GET(self):\n self.send_response(200)\n self.send_header('Content-Type', 'application/json')\n self.end_headers()\n self.wfile.write(json.dumps({'message': 'OK'}).encode())\n\nHTTPServer(('localhost', 8000), Handler).serve_forever()\n```"},
410
+
411
  {"prompt": "Python: SQLite connection and queries",
412
  "response": "```python\nimport sqlite3\n\nconn = sqlite3.connect('database.db')\ncursor = conn.cursor()\n\ncursor.execute('''CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)''')\ncursor.execute('INSERT INTO users (name) VALUES (?)', ('John',))\nconn.commit()\n\nfor row in cursor.execute('SELECT * FROM users'):\n print(row)\n\nconn.close()\n```"},
413
+
414
  {"prompt": "Python: XML parsing with ElementTree",
415
  "response": "```python\nimport xml.etree.ElementTree as ET\n\ntree = ET.parse('data.xml')\nroot = tree.getroot()\n\nfor child in root.findall('.//item'):\n print(child.get('id'), child.text)\n\n# Or create:\nroot = ET.Element('root')\nchild = ET.SubElement(root, 'item', id='1')\nchild.text = 'value'\nET.dump(root)\n```"},
416
+
417
  {"prompt": "Python: JSON handling",
418
  "response": "```python\nimport json\n\n# Load\nwith open('data.json') as f:\n data = json.load(f)\n\n# Parse string\nobj = json.loads('{\"key\": \"value\"}')\n\n# Save\nwith open('out.json', 'w') as f:\n json.dump(data, f, indent=2)\n\n# Custom encoder\nclass CustomEncoder(json.JSONEncoder):\n def default(self, obj):\n if isinstance(obj, datetime):\n return obj.isoformat()\n```"},
419
+
420
  {"prompt": "Python: dataclasses.asdict()",
421
  "response": "```python\nfrom dataclasses import dataclass, asdict\n\n@dataclass\nclass Config:\n host: str = 'localhost'\n port: int = 8080\n debug: bool = False\n\nconfig = Config()\ndict_config = asdict(config)\nprint(dict_config) # {'host': 'localhost', 'port': 8080, 'debug': False}\n```"},
422
+
423
  {"prompt": "Python: Enum with methods",
424
  "response": "```python\nfrom enum import Enum\n\nclass Color(Enum):\n RED = 1\n GREEN = 2\n BLUE = 3\n \n def is_primary(self):\n return self in (Color.RED, Color.GREEN, Color.BLUE)\n\nprint(Color.RED.is_primary()) # True\n```"},
425
+
426
  {"prompt": "Python: argparse CLI",
427
  "response": "```python\nimport argparse\n\nparser = argparse.ArgumentParser(description='My tool')\nparser.add_argument('-n', '--name', required=True, help='Your name')\nparser.add_argument('-v', '--verbose', action='store_true')\nparser.add_argument('-c', '--count', type=int, default=1)\n\nargs = parser.parse_args()\nprint(f'Hello {args.name}' * args.count)\n```\nRun: python script.py -n John -v -c 3"},
428
+
429
  {"prompt": "Python: Simple CLI with click",
430
  "response": "```python\nimport click\n\n@click.command()\n@click.option('--name', default='World', help='Name to greet')\n@click.argument('count', default=1, type=int)\ndef hello(name, count):\n for _ in range(count):\n click.echo(f'Hello {name}!')\n\nif __name__ == '__main__':\n hello()\n```\nRun: python script.py John --count 3"},
431
  ]
432
+
433
  all_data.extend(additional)
434
+
435
  print(f"\n[TOTAL] {len(all_data)} samples")
436
+
437
  # Save
438
  with open(OUTPUT_FILE, "w", encoding="utf-8") as f:
439
  json.dump(all_data, f, indent=2, ensure_ascii=False)
440
+
441
  print(f"\nSaved to: {OUTPUT_FILE}")
442
  print(f"File size: {OUTPUT_FILE.stat().st_size / 1024:.1f} KB")
443
+
444
  return len(all_data)
445
 
446
  if __name__ == "__main__":