Possible missing/additional approaches (noted as TODOs of future work)
See the lists for each category below. Exercises in "Merged Audits" have been reviewed, changed, and merged. Exercises in "Unaudited" have approaches that have not been audited yet.
Exercises in "Approaches In Progress" do not have finished/published approaches yet, while those in "Missing Approaches" do not have any known work on their approaches yet.
If you want to work on an exercise that is missing an approach, please check in with the maintainers to avoid conflicting with current track priorities or others who may be working on things.
The usage of "scrub the input" is a bit odd; I would have expected "clean the input" to be used. Here, "scrub" means "remove", but the cleaning for some approaches is not just removing characters.
There is inconsistency between single quotes and double quotes, when it should be consistent within the same exercise.
There are hyphens that should be em-dashes.
Some comments are right up against the #, which can hurt readability.
Lines 25, 26 and 31: The markdown links are not rendered because the link definitions are missing from the bottom of the file.
Line 54: "Generator" should not be capitalized here.
The generator expression approach has an unnecessary extra set of parentheses. (Lines 64 to 70.)
Line 134 and 141: Are all of the approaches really idiomatic? The re.sub() approach is called a "fun experiment" in its approach doc, it is many times slower than the others, and it can be hard to understand.
Line 149 is confusing with its two instances of "least performant". It should be rewritten to clarify that re.sub is the slowest by far.
Nothing is done with spaces or single quotes in the input at all.
Saying "scrub" or "remove" is kind of misleading, as the characters are replaced with spaces, not empty strings.
The paragraph after the list is confusing, as the returned string (versus returned list) is what the chained method is called on. It's especially misleading because <str>.replace() has actual string arguments, and it might make it sound like somehow those turn into lists.
The last line of the exercism/note: Is "As of this writing" a valid way to say "when this was written"? The phrase reads kind of strangely.
Line 11 and 16: return and re have an extra space between them.
Line 31 says "the phrase" where everywhere else it is referred to as to_abbreviate.
Line 50 is missing numbers in the "this will match ..." From the docs:
For Unicode (str) patterns:
Matches Unicode word characters; this includes all Unicode alphanumeric characters (as defined by str.isalnum()), as well as the underscore (_).
Matches [a-zA-Z0-9_] if the ASCII flag is used.
For 8-bit (bytes) patterns:
Matches characters considered alphanumeric in the ASCII character set; this is equivalent to [a-zA-Z0-9_]. If the LOCALE flag is used, matches characters considered alphanumeric in the current locale and the underscore.
Line 59: The space surrounded by backticks does not render properly.
Line 59: Both - should be _.
Line 59: The empty string should be surrounded by backticks for readability and clarity.
Line 5 says "seven idiomatic approaches" but then the list lays out eight different approaches.
Line 17 says a ninth will be added, but its description of it is basically the same as number 7 in the list.
Line 22: numpy is called numbpy.
Line 25 is strange, adding a word like "however" at the beginning or the end would fix that.
Line 27: "10x or more times" should be "10 (or more) times".
Line 29: "easiest read" should be "easiest to read".
The re.findall() approach always has "first letters" by it, but it is not clear that this means a different re.findall() approach than what is in the approach doc.
@BethanyG, I have a question: My solution seems to use an approach that doesn't have an approach doc. Is it worth adding a new approach doc for this? I'd probably need some guidance on how to update and use the benchmark application.
@BethanyG, I have a question: My solution seems to use an approach that doesn't have an approach doc. Is it worth adding a new approach doc for this? I'd probably need some guidance on how to update and use the benchmark application.
Sure! why not?. I say go for it, and I am happy to help you use/update the benchmarking! 😄
Line 24 seems to use ** for bold, but the website renders it as italics instead?
It saying "the space before" is very confusing, as there are actual spaces that were put in the syntax definition (probably for readability). It should either refer to the placeholders in a different way or the spaces in the syntax thing should be removed.
Line 26: Both "-->"s should be replaced with "to"s.
The paragraph on lines 24 to 30 is very long, and it jumps around to multiple different sub-topics, so it should be split up.
Line 33: The hyphen should be an em-dash.
Line 37: O(n + n) is not valid Big-O notation, it should be changed to O(n) or just removed entirely.
Lines 16, 17, and 19: 'output' should probably be output.
Line 17 vs 18: One has O(m + n) and the other has O(n + m), it should be consistent.
Line 22: There should be an "it" between "that" and "is".
Line 22: "O(n**2)" should be surrounded with backticks.
Line 65: There should be a space in between the = and ''.
Line 77: "tine" should be "time".
Lines 35 and 84: Since the + operator is actually used in this approach, it would be clearer if usages of "+" in the prose were replaced with "and" or "plus".
Line 6: The hyphen should probably be replaced with "to" or "or".
Line 14: There should probably be a space in between the , and codepoint.
Line 19: "O(1)" should be surrounded with backticks.
Line 24: "Range" should be "range()".
Line 24: "list.append()" should be surrounded with backticks.
Line 42: "range()" should be surrounded with backticks.
Line 42: "over 1/2" should probably be "Over Half".
Lines 48, 52, and 74: There is no space in between the # and the comment.
Line 58: The usage of "a median" is confusing here, maybe use "the midpoint" (or similar) instead?
Line 61 is a bit confusing, maybe "each force iteration over" should be "both iterate over".
Line 82: More variables missing backticks.
Line 104: There is an extra space in between "an" and "UnicodeDecodeError". Also, should this "an" be an "a"? It reads more naturally with an "a", but I'm not sure which is correct.
Title: The period should probably be removed, as it is a title/header, not a sentence.
The variant being in introduction.md (and not having a header of its own in built-in-reversed/content.md) is confusing, especially because it does not use str.join(), which is in the header for the approach in introduction.md.
@Yrahcaz7 - apologies. 😅 I was out today running errands and food shopping, so didn't get to this until now. Since I wrote this set of approaches, I sorta feel obligated to correct them. But if you really want to PR them, have at it. 😄 💙
@BethanyG, can I open a PR to fix these? (Or perhaps 2 separate ones due to the amount?)
Apologies for the delay in replying. Go for it. Maybe two groups: The straight-up typos, whitespace, and punctuation-related stuff. And a second one for rephrases and other more substantial edits? Many thanks for working on this!
Line 8: "many" is duplicated in "many many variations".
Line 16 is missing punctuation at the end.
Line 27 is missing a serial comma in "(3, 5 or 7)".
Line 28 is missing a space between 'Plong' and (7).
Line 38: "code" should be "the code" here.
Line 88: "f-string" should be "f-strings" here.
Line 91: A comma is unnecessary here.
Line 134: "tuple with join" should be "sequence with join".
Line 153: "factor -> sound mappings" would be clearer as "factor to sound mappings". It might also be helpful to provide the generator expression link again.
Line 154: "'results'" should be "results" here.
Line 205: This link should be to approach-itertools-compress, not itertools-compress.
Line 211 has unnecessary parentheses around number % factor.
Line 233: To clarify that this does not include the approach in the "Other Approaches" section, "All approaches" should be changed to "All 7 approaches".
Lines 235-239: This paragraph is rather large and would benefit from splitting.
Line 245: The comment has no space after the # and has an extra space before "Unless".
Line 262: n is usually used for big-O notation instead of m when there is only one factor.
Line 7 (line 97 in introduction.md, line 3 in loop-and-fstring/snippet.txt): Double quotes are used here, when single quotes are used in most other places.
Line 19 (line 108 in introduction.md): "sounds string" should be "the sounds string".
Line 20 (line 109 in introduction.md): "Sounds" should be "sounds".
Lines 5 and 27 (line 119 in introduction.md) use double quotes.
Lines 9 and 30 (line 123 in introduction.md, line 6 in sequence-with-join/snippet.txt) have unnecessary parentheses around the if clause.
Line 16 (131 in introduction.md): "Sounds" should be "sounds".
Line 19: There should be a comma after "like most approaches described here".
Line 21: A variation header would be apt here.
Line 22 is phrased awkwardly; perhaps it could be changed to "The above solution might not be very readable for those not used to reading generator expressions inside calls to other functions, so if that is the case, it can be re-written as:".
All columns past "14" can't be seen on the website (but they are still rendered in the HTML, so removing them may slightly decrease load time). Additionally, the website does not render any borders for the snippet's table, so it is hard to tell when one column ends and begins.
I am planning to audit the All Your Base approach documentation; should I prioritize updating the conversion logic explanation for multi-base edge cases before touching the formatting?
I can tackle the All Your Base audit, but do we need to implement consistent error handling for invalid input bases or negative digits across the approach documentation before I begin?
Regarding the Unaudited list, should I prioritize All Your Base to align with the existing style guide for functional decomposition, or is there a specific target for how to handle the base conversion logic in the approaches doc?
Activity
github-actions commented on May 21, 2026
BethanyG commented on May 21, 2026
That markdown table is ... terrifying. We might need to try something else. I will think on it. 😄
Yrahcaz7 commented on May 21, 2026
Just went and updated the entries for the approaches that I audited... Yeah, that table's terrifying.
Edit: Just went and normalized the formatting on the table as well. ADHD beats terror every time 😆.
Yrahcaz7 commented on May 23, 2026
Addressed in PR #4258:
Acronym Dig Deeper auditOverall:
introduction.md:
loop/content.md, list-comprehension/content.md, generator-expression/content.md, functools-reduce/content.md, and map-function/content.md:
map-function/content.md:
functools-reduce/content.md:
regex-join/content.md and regex-sub/content.md:
regex-join/content.md:
regex-sub/content.md:
The performance article:
@BethanyG, I have a question: My solution seems to use an approach that doesn't have an approach doc. Is it worth adding a new approach doc for this? I'd probably need some guidance on how to update and use the benchmark application.
BethanyG commented on May 23, 2026
Sure! why not?. I say go for it, and I am happy to help you use/update the benchmarking! 😄
Yrahcaz7 commented on May 29, 2026
Addressed in PR #4226:
Reverse String Dig Deeper audit (part 1 of 2)Overall:
introduction.md:
sequence-slicing/content.md:
iteration-and-concatenation/content.md:
backward-iteration-with-range/content.md:
Yrahcaz7 commented on May 29, 2026
Addressed in PR #4226:
Reverse String Dig Deeper audit (part 2 of 2)introduction.md:
list-and-join/content.md:
built-in-list-reverse/content.md:
built-in-reversed/content.md:
additional-approaches/content.md:
The performance article:
@BethanyG, Can I open a PR to fix these?
BethanyG commented on May 30, 2026
@Yrahcaz7 - apologies. 😅 I was out today running errands and food shopping, so didn't get to this until now. Since I wrote this set of approaches, I sorta feel obligated to correct them. But if you really want to PR them, have at it. 😄 💙
12 remaining items
BethanyG commented on Aug 17, 2026
@gjbbcjj The changes to the Acronym exercise were already PR'd.
BethanyG commented on Sep 10, 2026
@kyliekamesha26 - I'm sorry, but this issue is closed to contributions from anyone but Yrahcaz7, who was originally assigned to it.
Yrahcaz7 commented on Sep 14, 2026
Overall:
introduction.md:
if-else/content.md, if-else/snippet.txt, and introduction.md:
if-else/content.md:
table-lookup/content.md, table-lookup/snippet.txt, and introduction.md:
table-lookup/content.md:
loop-over-romans/snippet.txt:
loop-over-romans/content.md:
recurse-match/content.md, recurse-match/snippet.txt, and introduction.md:
recurse-match/content.md:
itertools-starmap/content.md and itertools-starmap/snippet.txt:
itertools-starmap/content.md:
config.json:
@BethanyG, can I open a PR to fix these? (Or perhaps 2 separate ones due to the amount?)
BethanyG commented on Sep 15, 2026
Hi @Yrahcaz7 👋🏽
Apologies for the delay in replying. Go for it. Maybe two groups: The straight-up typos, whitespace, and punctuation-related stuff. And a second one for rephrases and other more substantial edits? Many thanks for working on this!
jonahwhite115 commented on Sep 27, 2026
I can take a look at auditing Circular Buffer next, specifically ensuring we cover the trade-offs between using a
Yrahcaz7 commented on Oct 14, 2026
Overall:
introduction.md:
if-statements/content.md:
truthy-and-falsey-with-fstring/content.md:
loop-and-fstring/content.md:
sequence-with-join/content.md:
dict-and-join/content.md:
itertools-compress/content.md:
functools-reduce/content.md:
The performance article:
The performance article's snippet.md:
@BethanyG, can I open a PR for these? (There's quite a few audit items, but only a couple of them need prose rewording.)
BethanyG commented on Oct 14, 2026
Go for it! 😄
damianoecker26 commented on Oct 16, 2026
I am planning to audit the All Your Base approach documentation; should I prioritize updating the conversion logic explanation for multi-base edge cases before touching the formatting?
BethanyG commented on Oct 16, 2026
@damianoecker26, please see this comment.. Thanks.
edinakama commented on Oct 17, 2026
I can tackle the All Your Base audit, but do we need to implement consistent error handling for invalid input bases or negative digits across the approach documentation before I begin?
BethanyG commented on Oct 19, 2026
@edinakama - did you not see the comment above? Please respect that. Thanks,
brokendenim commented on Oct 20, 2026
Regarding the Unaudited list, should I prioritize All Your Base to align with the existing style guide for functional decomposition, or is there a specific target for how to handle the base conversion logic in the approaches doc?
BethanyG commented on Oct 20, 2026
@brokendenim - As I said to @edinakama -- please read this comment. Thanks.