Skip to content

Commit 08b1de3

Browse files
committed
Attempt update extract_snippets.py accepting spaces at beginning
1 parent f5cf5ec commit 08b1de3

File tree

2 files changed

+91
-91
lines changed

2 files changed

+91
-91
lines changed

src/data_structures/fenwick.md

Lines changed: 90 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -166,36 +166,36 @@ You can create a Fenwick tree initialized with zeros, or you can convert an exis
166166

167167
=== "C++"
168168
```{.cpp file=fenwick_sum}
169-
struct FenwickTree {
170-
vector<int> bit; // binary indexed tree
171-
int n;
172-
173-
FenwickTree(int n) {
174-
this->n = n;
175-
bit.assign(n, 0);
176-
}
177-
178-
FenwickTree(vector<int> const &a) : FenwickTree(a.size()) {
179-
for (size_t i = 0; i < a.size(); i++)
180-
add(i, a[i]);
181-
}
182-
183-
int sum(int r) {
184-
int ret = 0;
185-
for (; r >= 0; r = (r & (r + 1)) - 1)
186-
ret += bit[r];
187-
return ret;
188-
}
189-
190-
int sum(int l, int r) {
191-
return sum(r) - sum(l - 1);
192-
}
193-
194-
void add(int idx, int delta) {
195-
for (; idx < n; idx = idx | (idx + 1))
196-
bit[idx] += delta;
197-
}
198-
};
169+
struct FenwickTree {
170+
vector<int> bit; // binary indexed tree
171+
int n;
172+
173+
FenwickTree(int n) {
174+
this->n = n;
175+
bit.assign(n, 0);
176+
}
177+
178+
FenwickTree(vector<int> const &a) : FenwickTree(a.size()) {
179+
for (size_t i = 0; i < a.size(); i++)
180+
add(i, a[i]);
181+
}
182+
183+
int sum(int r) {
184+
int ret = 0;
185+
for (; r >= 0; r = (r & (r + 1)) - 1)
186+
ret += bit[r];
187+
return ret;
188+
}
189+
190+
int sum(int l, int r) {
191+
return sum(r) - sum(l - 1);
192+
}
193+
194+
void add(int idx, int delta) {
195+
for (; idx < n; idx = idx | (idx + 1))
196+
bit[idx] += delta;
197+
}
198+
};
199199
```
200200
=== "Python"
201201
```py
@@ -254,33 +254,33 @@ Both significant limitations are because the $min$ operation together with the s
254254

255255
=== "C++"
256256
```{.cpp file=fenwick_min}
257-
struct FenwickTreeMin {
258-
vector<int> bit;
259-
int n;
260-
const int INF = (int)1e9;
261-
262-
FenwickTreeMin(int n) {
263-
this->n = n;
264-
bit.assign(n, INF);
265-
}
266-
267-
FenwickTreeMin(vector<int> a) : FenwickTreeMin(a.size()) {
268-
for (size_t i = 0; i < a.size(); i++)
269-
update(i, a[i]);
270-
}
271-
272-
int getmin(int r) {
273-
int ret = INF;
274-
for (; r >= 0; r = (r & (r + 1)) - 1)
275-
ret = min(ret, bit[r]);
276-
return ret;
277-
}
278-
279-
void update(int idx, int val) {
280-
for (; idx < n; idx = idx | (idx + 1))
281-
bit[idx] = min(bit[idx], val);
282-
}
283-
};
257+
struct FenwickTreeMin {
258+
vector<int> bit;
259+
int n;
260+
const int INF = (int)1e9;
261+
262+
FenwickTreeMin(int n) {
263+
this->n = n;
264+
bit.assign(n, INF);
265+
}
266+
267+
FenwickTreeMin(vector<int> a) : FenwickTreeMin(a.size()) {
268+
for (size_t i = 0; i < a.size(); i++)
269+
update(i, a[i]);
270+
}
271+
272+
int getmin(int r) {
273+
int ret = INF;
274+
for (; r >= 0; r = (r & (r + 1)) - 1)
275+
ret = min(ret, bit[r]);
276+
return ret;
277+
}
278+
279+
void update(int idx, int val) {
280+
for (; idx < n; idx = idx | (idx + 1))
281+
bit[idx] = min(bit[idx], val);
282+
}
283+
};
284284
```
285285
=== "Python"
286286
```py
@@ -436,39 +436,39 @@ As you can see, the main benefit of this approach is that the binary operations
436436
The following implementation can be used like the other implementations, however it uses one-based indexing internally.
437437
438438
=== "C++"
439-
```{.cpp file=fenwick_sum_onebased}
440-
struct FenwickTreeOneBasedIndexing {
441-
vector<int> bit; // binary indexed tree
442-
int n;
443-
444-
FenwickTreeOneBasedIndexing(int n) {
445-
this->n = n + 1;
446-
bit.assign(n + 1, 0);
447-
}
448-
449-
FenwickTreeOneBasedIndexing(vector<int> a)
450-
: FenwickTreeOneBasedIndexing(a.size()) {
451-
for (size_t i = 0; i < a.size(); i++)
452-
add(i, a[i]);
453-
}
454-
455-
int sum(int idx) {
456-
int ret = 0;
457-
for (++idx; idx > 0; idx -= idx & -idx)
458-
ret += bit[idx];
459-
return ret;
460-
}
461-
462-
int sum(int l, int r) {
463-
return sum(r) - sum(l - 1);
464-
}
465-
466-
void add(int idx, int delta) {
467-
for (++idx; idx < n; idx += idx & -idx)
468-
bit[idx] += delta;
469-
}
470-
};
471-
```
439+
```{.cpp file=fenwick_sum_onebased}
440+
struct FenwickTreeOneBasedIndexing {
441+
vector<int> bit; // binary indexed tree
442+
int n;
443+
444+
FenwickTreeOneBasedIndexing(int n) {
445+
this->n = n + 1;
446+
bit.assign(n + 1, 0);
447+
}
448+
449+
FenwickTreeOneBasedIndexing(vector<int> a)
450+
: FenwickTreeOneBasedIndexing(a.size()) {
451+
for (size_t i = 0; i < a.size(); i++)
452+
add(i, a[i]);
453+
}
454+
455+
int sum(int idx) {
456+
int ret = 0;
457+
for (++idx; idx > 0; idx -= idx & -idx)
458+
ret += bit[idx];
459+
return ret;
460+
}
461+
462+
int sum(int l, int r) {
463+
return sum(r) - sum(l - 1);
464+
}
465+
466+
void add(int idx, int delta) {
467+
for (++idx; idx < n; idx += idx & -idx)
468+
bit[idx] += delta;
469+
}
470+
};
471+
```
472472
=== "Python"
473473
```py
474474
class FenwickTreeOneBasedIndexing:

test/extract_snippets.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ def extract_tests(filepath):
1212
filepath_short = os.path.basename(filepath)
1313
article_name = filepath_short.split('.')[0]
1414

15-
snippet_start = re.compile(r"^```\{.cpp\s+file=(\S+)\}$")
15+
snippet_start = re.compile(r"^\s*```\{.cpp\s+file=(\S+)\}$")
1616
snippet_end = re.compile(r"^```$")
1717

1818
with open(filepath) as f:

0 commit comments

Comments
 (0)