Repository navigation
Open Pull Request File Map #15310
Description
Activity
@priya-sundaram-dev, in the
Files not present in the working directorysection above, can you please review thebit_manipulationpull requests and provide a list of ready-to-merge PRs?PR #13984 touches nearly every file in
bit_manipulation, so reviewing and mergingpriya-sundaram-dev commented
on Sep 13, 2026 ContributorMore actionsReviewed the
bit_manipulationPRs. All nine are CI-green, but the directory has heavy overlap — several PRs touch the same file, and #13984 touches almost the whole directory — so merge order is the real constraint. My read:Ready to merge (clean, single-file, standards-compliant)
- fix: validate binary_and inputs #15277 — best of the batch. Single file (
binary_and_operator.py), adds a properinttype check, fixes the error message (positive→non-negative), and adds passing doctests for the new failure modes. I'd merge this first.
Good, but pick-one / needs a direction call
- add bit_manipulation: add parity, next_power_of_two, rotate_bits codes #13157 — adds three new algorithms (
parity,next_power_of_two,rotate_bits). I checked: none duplicate existing files (is_power_of_two.py/find_previous_power_of_two.py/power_of_4.pyare distinct). Needs a full algorithm+doctest review since it's new code, but no blocker found — solid candidate after review. - Bit manipulation: add type hints, validation, doctests; simplify bitw… #13550 — 4 files; removes the explanatory docstrings from
is_even.py, which runs directly counter to Updated docs for bit manipluation #13984's doc-expansion. It's also multi-file. Needs a direction call before merge. - Feature/arun count set bits new approach #13483 vs add bit_manipulation: add parity, next_power_of_two, rotate_bits codes #13157 vs Updated docs for bit manipluation #13984 all touch
count_number_of_one_bits.py; Add is_even_using_shift_operator function #13484 vs Bit manipulation: add type hints, validation, doctests; simplify bitw… #13550 vs Updated docs for bit manipluation #13984 both touchis_even.py. Only one of each set can land without a rebase.
Not ready
- Counting 0s and 1s:Update binary_count_trailing_zeros.py #12033 — recommend close. It appends an unrelated
count_zeros_and_ones()with no type hints, no doctests, and a top-levelprint()that runs on import — fails CONTRIBUTING standards regardless of CI. - Fix incorrect handling of zero input in binary_count_trailing_zeros #14495 and fix: binary_count_trailing_zeros #14574 — both fix the genuine zero-input bug in
binary_count_trailing_zeros.py, but both are currently in merge conflict (mergeable_state: dirty) and overlap each other. Pick one, ask for a rebase.
The #13984 question
#13984 (docs across 13 files) has good content but violates the one-file-per-PR guideline and will conflict with every other PR here. Cleanest path: land the small single-file functional PRs first (start with #15277), then have #13984 rebase and mop up the docs last. Merging #13984 first would force a rebase on everything else.
- Suggested merge sequence: fix: validate binary_and inputs #15277 → review+merge add bit_manipulation: add parity, next_power_of_two, rotate_bits codes #13157 → decide is_even direction (Add is_even_using_shift_operator function #13484 or Bit manipulation: add type hints, validation, doctests; simplify bitw… #13550) → pick one trailing-zeros fix (Fix incorrect handling of zero input in binary_count_trailing_zeros #14495/fix: binary_count_trailing_zeros #14574, after rebase) → close Counting 0s and 1s:Update binary_count_trailing_zeros.py #12033 → Updated docs for bit manipluation #13984 rebases last.
Reacted by Christian ClaussReacted by Christian ClaussReacted by Christian ClaussReacted by Christian Clauss- fix: validate binary_and inputs #15277 — best of the batch. Single file (
@priya-sundaram-dev, in the Files not present in the working directory section above, can you please review the Physics pull requests and provide a list of ready-to-merge PRs?
priya-sundaram-dev commented
on Sep 13, 2026 ContributorMore actionsDone — here's my triage of the Physics PRs from the "Files not present in the working directory" section. For each I checked: CI status, whether it's a new file that doesn't collide with an existing
physics/*.py, and whether it meets our bar (doctests + type hints). Merge order suggested at the end.✅ Ready to merge (CI green, new file, doctests + type hints, no conflicts)
PR File Notes #13343 first_law_of_thermodynamics.pyStrongest of the batch — thorough docstring, 5 typed functions, extensive doctests #13341 magnetic_flux.py10 doctests, typed, validation #13342 faraday_lenz_law.py8 doctests, typed #14432 relativistic_kinetic_energy.pytyped + validation doctests #14623 snells_law.pytyped, doctests #14357 relativistic_velocity_summation.pytyped + ValueErrordoctests. Minor nit: header is#comments; converting to a module-level docstring would match house style, but not a blocker🔁 Duplicates — pick one, close the rest
Three PRs all create
physics/hookes_law.py: #13323, #13487, #14437.- Add Hooke's Law implementation to physics #14437 is the best — full param/return docstring, input validation with
ValueErrordoctests. Recommend merge Add Hooke's Law implementation to physics #14437 and close Added Hooke's Law #13323 and Hookes law #13487 as duplicates.
🔧 Needs changes before merge
- added collision detection between primitives like circle, rectangle e… #13002 (
collision_detection.py) — no doctests and no type hints; would need both to meet the contribution bar. - Add collisions #14787 (
Add collisions) — this isn't a clean new-file add: it touches 2 files (+224/-32, modifies existingphysics/potential_energy.py). Worth a closer standalone review rather than a quick merge.
⏳ Stale — CI hasn't run on the current head (needs a rebase/re-run before evaluating)
#9914 (
boyles_law), #11744 (bragg_angle), #11580 (fresnel_diffract), #12686 (light_aberration), #12335 (rotational_partition), #12333 (translation_partition), #12129 (de_broglie). And #11608 (diffraction) is still a draft.Suggested merge sequence: #13343 → #13341 → #13342 → #14432 → #14623 → #14357 → #14437 (then close #13323/#13487). These are all single-file, CI-green, non-conflicting adds, so order mostly just avoids surprises.
One caveat: I vetted structure/CI/dedup, not the physics of every formula — the ready-to-merge set all reference Wikipedia and have sane doctest values, but a quick sanity check on the constants wouldn't hurt.
- Add Hooke's Law implementation to physics #14437 is the best — full param/return docstring, input validation with
I performed the suggested merge sequence (including the module-level docstring). Thanks!
⏳ Stale — CI hasn't run on the current head (needs a rebase/re-run before evaluating)
#9914 (boyles_law), #11744 (bragg_angle), #11580 (fresnel_diffract), #12686 (light_aberration), #12335 (rotational_partition), #12333 (translation_partition), #12129 (de_broglie). And #11608 (diffraction) is still a draft.
I was able to resync all but #9914. Please re-review.
priya-sundaram-dev commented
on Sep 13, 2026 ContributorMore actionsRe-reviewed the resynced Physics PRs. CI status on current heads:
Ready to merge (CI green now):
- Create bragg_angle.py #11744 (bragg_angle) — green
- Add physics script for the light aberration calculation. #12686 (light_aberration) — green
- Create rotational_partition #12335 (rotational_partition) — green
- Create translation_partition #12333 (translation_partition) — green
- Create de_broglie #12129 (de_broglie) — green
They add distinct new files (plus the usual auto-regenerated
DIRECTORY.md), so no real collisions between them.Still red — needs one small fix:
- Add Algorithm for Fresnel Diffraction #11580 (fresnel_diffract) —
buildfails on a single doctest. Thefresnel_diffractdocstring has one example (around line 79) written asnp.isclose(...)expectingTrue, but under NumPy 2.x that reprs asnp.True_. The sibling examples at lines 74 and 126 already wrap it asbool(np.isclose(...))— line 79 just needs the samebool()wrapper. Once that's added it should go green.
Not re-review-able:
- feat: ✨ Implementation of Boyle's law #9914 (boyles_law) — still on the old head (couldn't be resynced), so CI hasn't run.
- finding different diffraction parameters #11608 (diffraction) — still a draft.
@priya-sundaram-dev, in the Files not present in the working directory section above, can you please review the machine_learning and then maths pull requests and provide a list of ready-to-merge PRs?
priya-sundaram-dev commented
on Sep 13, 2026 ContributorMore actionsReviewed the machine_learning and maths PRs from the Files not present in the working directory section (53 PRs). Triage is by current-head CI status + filename collisions from the map:
✅ CI green now, distinct new file — ready to merge:
#10466, #12875, #13026, #13055, #13085, #13402, #13426, #13527, #13528, #13529, #13535, #13588, #13603, #13623, #13631, #13637, #13648, #13815, #13990, #13991, #13993, #14001, #14065, #14099, #14229, #14554, #14633, #14634, #14652, #14665, #14724, #14733, #14740, #14812, #14858, #14895, #14997⚠️ Green but pick one (same target file):machine_learning/dbscan.py— Implementation of Density-based spatial clustering of applications with noise (DBSCAN) ML Algorithm #11671 (green, butmergeable=blockedpending an approval) vs Add DBSCAN clustering algorithm in machine_learning/ #14851 (green). Merge one, close/redirect the other.
🕓 Stale — CI hasn't run on current head (needs rebase/re-run before evaluating):
#10800, #11463, #11509, #12668, #12784, #13270, #13271, #13273 — plus theridge_regression.pycluster #12111 & #12246 (both stale; also collide with #14016).❌ Currently red:
#9610 (2 failing), #9619 (1 failing), #14016 (1 failing; ridge_regression.py collision).One content caveat: #12976 (k_means_plus_plus) is CI-green but I left an open COMMENTED review with real gaps — empty-cluster NaN centroids masked by a module-level
warnings.filterwarnings("ignore"), plus missing doctests/type hints. Worth resolving before merge even though CI passes.This is CI+collision triage, not a deep code review of each — happy to dig into any specific PR you want to prioritize.
@priya-sundaram-dev I have updated the following PRs, so please revisit them:
🕓 Stale — CI hasn't run on the current head (needs rebase/re-run before evaluating):
#10800, #11463, #11509, #12668, #12784, #13270, #13271, #13273 — plus the ridge_regression.py cluster #12111 & #12246 (both stale; also collide with #14016).
In the Files not present in the working directory section above, please review the pull requests in the following directories and provide a list of ready-to-merge PRs.
backtracking, bit_manipulation, blockchain, boolean_algebra, ciphers, conversionspriya-sundaram-dev commented
on Sep 14, 2026 ContributorMore actionsThanks @cclauss — ran the file-map PRs in those six directories through a mechanical triage (CI rollup +
mergeable_stateconflict check + collision cross-ref against the map above). Scope note: this verifies each PR is mechanically ready (green CI, no merge conflicts, blocked only on the required-review gate); it does not vouch for algorithmic novelty/duplication, which still needs a human pass. I spot-checked several diffs and flagged what I found.✅ Green CI + no conflicts (blocked only on required review)
- backtracking: fix(backtracking): Correct doctest in m_coloring_problem #13288
- bit_manipulation: feat: add count_bits algorithm with doctests #13938, Add divide two integers algorithm #13737, Add algorithm to find Two unique numbers using bit manipulation with docsets #13216, Add function to find upper and lower nibbles with doctests and type hints #13121, Added Implementation of Bit_Trie for finding max xor between two numbers in an array #13132, Add Sliding_Window_XOR working solution #13129, Add XOR-based swap algorithm for two numbers #13018
- blockchain: Add Merkle Tree construction and verification algorithm #13753, Add simple blockchain mining algorithm with PoW #13114, Add: blockchain/simple_proof_of_work.py #14237
- ciphers: Implement modified vigenere cipher for all printable ASCII #13452, feat: Add RC4 stream cipher implementation #14753, Add XTEA block cipher implementation #14414 — plus the skytale pair below
- conversions: Add binary to gray code conversion algorithm #13826, feat(conversions): Add Binary and Gray Code conversion algorithms #13634, Add endianness conversion algorithm #14041
⚠️ Ready but needs a small fix / decision first- Created bianry_to_excessthree.py #13831 (
conversions/bianry_to_excessthree.py) — filename typobianry→binary; ask for a rename before merge. - (ciphers): add scytale (skytale) transposition cipher with doctests #13100 vs Feat/ciphers columnar #13102 — both create
ciphers/skytale_cipher.py(they collide per the map). Feat/ciphers columnar #13102 also addscolumnar_transposition.py. Pick one for skytale; Feat/ciphers columnar #13102 can still land its columnar file.
🕓 Stale — CI hasn't run on current head (need rebase/re-run before evaluating)
- bit_manipulation: Binary Addition of two binary strings input to produce binary string output of any length #10370, feat: Introduce hamming code generator #11827, Adding multibit-manipulation algorithm implemented with bitwise operations #11418, Single Number Algo Added #12042, added program to update bit at given position. #9902
- blockchain: Proof of Work Algorithm for Blockchain #11699, Added Proof of Stake(PoS) #11945, New: Added proof of work(PoW) #11946
- ciphers: Added Base58 encoding/decoding in ciphers #12123, [Feature] Implemented DES Algorithm in ECB mode #11785
- conversions: Added base64 to binary conversion. #12209, Added binary to base64 conversion #12210, Create convert_base.py #11115, feat: implements a hex to rgb conversion function #11113, adding negative binary base conversion algorithms #11213, Add ounces to grams conversion. #14079
❌ Failing CI
- Create spiral_transposition.py #13421 (
ciphers/spiral_transposition.py) — red checks; needs author fix.
Happy to take the next batch of directories (
data_structures,dynamic_programming,graphs,maths,sorts,strings) the same way if that's useful.priya-sundaram-dev commented
on Sep 14, 2026 ContributorMore actionsRe-checked the PRs you updated (same mechanical pass —
mergeable_state+ current-head CI rollup). Unfortunately the base-branch update left most of them with merge conflicts, so they need an author rebase before they can be evaluated:🔀 Green CI but now conflicting (
dirty) — need a rebase first- The sum of outcomes for rolling an N-sided dice K times. #11463 (dice roll sum), Add ml algorithms #13270 (Add ml algorithms), Add cnn model #13273 (Add cnn model) — checks pass, but each now conflicts with
main.
❌ Still red after the update
- Add algorithm for approximating the nth root with Newton's Method #11509 —
rufffailing (+ conflicting) - Added kernel svm algorithm code file #12784 —
ruffandbuildfailing (+ conflicting) - Add ARIMA model #13271 (ARIMA) —
buildfailing (+ conflicting)
🕓 No checks on current head yet
- added multi armed bandit problem with three strategies to solve it #12668, Add: Ordinary Least Squares Regression Algorithm #10800 — CI hasn't reported on the latest head;
mergeable_statestill recomputing. Worth a re-run once GitHub settles.
ridge_regression.py cluster
- Add Ridge Regression to Machine Learning #12111 — conflicting, no checks on head.
- Add Ridge Regression to Machine Learning #12246 — conflicting,
rufffailing. - machine_learning: add RidgeRegression with tests and demo #14016 — this is the only one blocked only on review (
mergeable_state: blocked), but itsbuildcheck is failing, so it isn't mergeable as-is.
Net: nothing in this batch is merge-ready right now — the conflicts and the three ruff/build failures need author action first. Happy to re-run this the moment any of them get rebased. Scope caveat as before: this is mechanical readiness (CI + conflicts), not a vouch for algorithmic novelty.
- The sum of outcomes for rolling an N-sided dice K times. #11463 (dice roll sum), Add ml algorithms #13270 (Add ml algorithms), Add cnn model #13273 (Add cnn model) — checks pass, but each now conflicts with
@priya-sundaram-dev Can you look at the three contested files and pick the best PR to merge for each? We are running out of time before our October 1 Hacktoberfest deadline, so I will merge only one PR per file and close all the others. If you need any rebases done or tests rerun, please let me know.
- searches/binary_search.py (11 PRs): Remove inefficient validation checks in binary search functions #13836 Fixes #13840 - handle duplicate items correctly in binary search #13841 Fix binary search to return leftmost occurrence for duplicates #13891 fixed logical error in parameter "hi" the bisect functions of the bin… #13900 Fix: return the correct index when duplicates in binary_search #13901 Fix: Return first index for binary search with duplicate elements (#1… #13955 Clarify doctest usage in binary search docstring #14051 Improve binary search doc #14456 Fix binary search final #14523 Improve error message clarity in binary search functions #14622 added time complexity to binary_search.py docstring #14708
- machine_learning/linear_regression.py (4 PRs): Update linear_regression.py #11567 Contributes to #9943 by add tests in linear regression #11622 Added Exception Handling and type hinting #11802 Add regression visualization #14637
- machine_learning/loss_functions.py (4 PRs): Add connectionist temporal classification (CTC) loss algorithm #11240 Add the sparse categorical cross-entropy loss #11250 Add Gaussian negative log likelihood loss algorithm #11263 Adding RMSE - Root Mean Squared Error Loss function #13410
priya-sundaram-dev commented
on Sep 15, 2026 ContributorMore actions@cclauss Went through all three contested files — for each I ran the current-head CI rollup, checked
mergeable, and read the diffs againstCONTRIBUTING.mdand the file's existing conventions. My pick + reasoning per file, plus what to do with the rest:searches/binary_search.py→ merge #13891, close the restMost of these 11 are two ideas: "return the leftmost index for duplicates" (#13841, #13891, #13901, #13955), and doc/message-only tweaks (#14051, #14622, #14708, #14456).
- Fix binary search to return leftmost occurrence for duplicates #13891 (recommended) implements leftmost-for-duplicates the right way: O(log n) (
result = midpoint; right = midpoint - 1), updates the:return:docstrings, adds doctests, and applies it consistently to bothbinary_searchandbinary_search_by_recursion(clean recursive helper). Mergeable, CI green. - Fix: return the correct index when duplicates in binary_search #13901 — same core idea but only patches
binary_search(leaves the recursive/std_lib variants returning a different index for duplicates), and adds no doctests. Inconsistent. - Fixes #13840 - handle duplicate items correctly in binary search #13841 — finds leftmost with a linear back-scan (
while ... sorted_collection[midpoint-1] == item), i.e. O(log n + k) worst-case O(n); also does a messy rewrite of the recursion's sorted-check. Algorithmically weaker than Fix binary search to return leftmost occurrence for duplicates #13891. - Fix: Return first index for binary search with duplicate elements (#1… #13955 conflicting; Improve binary search doc #14456 is red (ruff) and a 215/-222 churn; Fix binary search final #14523 touches 2 files (off-convention); fixed logical error in parameter "hi" the bisect functions of the bin… #13900 is a different fix (negative-
hiindexing inbisect_left/right) with a typo'd comment and no doctest; Clarify doctest usage in binary search docstring #14051/Improve error message clarity in binary search functions #14622/added time complexity to binary_search.py docstring #14708 are doc/message-only.
One judgment call for you: #13891 changes search semantics (returns leftmost occurrence, presumably per #13840). If you'd rather not change the contract, the safe low-risk alternative is the doc-only #14708 (adds time-complexity to the docstring). But if #13840 is the driver, #13891 is the one to take.
machine_learning/loss_functions.py→ merge #11250, but don't hard-close #11240/#11263These don't actually collide semantically — they each append a new loss function; the conflict is purely textual (same file tail).
- Add the sparse categorical cross-entropy loss #11250 (recommended) —
sparse_categorical_cross_entropy, a standard, widely-used complement to the existingcategorical_cross_entropy. Clean, Wikipedia reference, doctests including the error path. - Worth inviting to rebase rather than closing: Add connectionist temporal classification (CTC) loss algorithm #11240 (
CTCloss) and Add Gaussian negative log likelihood loss algorithm #11263 (gaussian_negative_log_likelihood) are genuinely distinct, non-duplicate additions from the same author — closing them loses real content. If you merge Add the sparse categorical cross-entropy loss #11250 first, the other two just need a rebase to land in sequence. - Adding RMSE - Root Mean Squared Error Loss function #13410 (
root_mean_squared_error) is borderline: it's literallysqrt(mean_squared_error)which already exists at line 333, and it type-hints withnp.arrayinstead of the file'snp.ndarray. I'd rank it last.
Heads-up: the three 2024 PRs show no CI history (predate the current CI), so they'll each need a rebase + a CI rerun to confirm the doctests — the
>>>outputs look right on read, but I'd want them green before merge.machine_learning/linear_regression.py→ #14637 with two requested changesThis file was migrated from
requeststohttpxsince 2024, which decides most of it:- Update linear_regression.py #11567, Contributes to #9943 by add tests in linear regression #11622, Added Exception Handling and type hinting #11802 all predate that migration and still
import requests, so they'd need a substantial rebase. Added Exception Handling and type hinting #11802 additionally type-hints with the deprecatednp.matrixand reaches into a private numpy API (np.core._exception._ArrayMemoryError), and has a duplicated docstring block — I'd not take it as-is. - Add regression visualization #14637 is the only candidate built on the current
httpxmaster with green CI. But before merge it needs: (1) it changesrun_linear_regression's return fromthetato(theta, err)— a breaking change to the public function; please keep it backward-compatible or update the callers/__main__; and (2)plot_regression/plot_losshave no doctests and callplt.show()directly — fine as viz helpers, but they should be exercised from the__main__guard rather than left dead.
If you take my picks, the ones I'd love a CI rerun on are #11250 and #13891 (both should be green, but they're worth confirming before you merge). Happy to do the rebases on #13891/#11250/#14637 myself if that helps clear them faster before Oct 1.
- Fix binary search to return leftmost occurrence for duplicates #13891 (recommended) implements leftmost-for-duplicates the right way: O(log n) (
@priya-sundaram-dev If you have time, can you please review these so we can close this category?
4 PRs that also overlap with other files (need a review or rebase)
- Add Ridge Regression to Machine Learning #12246: also touches machine_learning/ridge_regression.py
- Feat/ciphers columnar #13102: also touches ciphers/skytale_cipher.py
- Euler project solution 60 #13475: also touches project_euler/problem_060/init.py, project_euler/problem_060/sol1.py
- machine_learning: add RidgeRegression with tests and demo #14016: also touches machine_learning/ridge_regression.py
Also, under the files not present in the working directory, the categories:
- electronics
- financeial
priya-sundaram-dev commented
on Sep 19, 2026 ContributorMore actions@cclauss Reviewed all four. Summary:
machine_learning/ridge_regression.py— contested (#12246 vs #14016):- Add Ridge Regression to Machine Learning #12246 (Harmanaya) — clean, self-contained, no third-party deps beyond numpy/pandas, doctests on every method, CI green. My pick to merge for this file.
- machine_learning: add RidgeRegression with tests and demo #14016 (Mahadev-05) — nicer design (dataclass, input validation, dedicated
machine_learning/tests/suite) but it won't import: line 35import httpx2and line 147httpx2.get(...)—httpx2isn't a package (typo forhttpx). Sincepytest --doctest-modulesimports every module, this file would fail the moment it's actually exercised. Not mergeable as-is. - Recommendation: merge Add Ridge Regression to Machine Learning #12246, close machine_learning: add RidgeRegression with tests and demo #14016. If Mahadev-05 fixes the
httpx2→httpxtypo, the tests-suite idea is worth a separate follow-up PR — but only one per file for now, and Add Ridge Regression to Machine Learning #12246 is ready today.
#13102 (columnar/skytale ciphers) — adds two brand-new files (
ciphers/columnar_transposition.py,ciphers/skytale_cipher.py), 16 doctests, no edits to existing working-dir files, CI green. Ready to merge.#13475 (Project Euler #60) — adds a new
project_euler/problem_060/package, 28 doctests insol1.py, CI green, self-contained. Ready to merge.- So: merge Add Ridge Regression to Machine Learning #12246, Feat/ciphers columnar #13102, Euler project solution 60 #13475; close machine_learning: add RidgeRegression with tests and demo #14016 (pending the httpx typo fix).
@priya-sundaram-dev Under the files not present in the working directory, in the open pull request map above, please review the PR in the sections.
- electronics
- financeial
- matrix
- neural_network
- physics
We only have about ten days before Hacktoberfest begins.
priya-sundaram-dev commented
on Sep 20, 2026 ContributorMore actions@cclauss Went through one representative open PR in each of the five sections you flagged. Verified the numeric doctests locally where relevant.
✅ Ready to merge (clean, type-hinted, doctested, correct):
matrix/matrix_operation.py— Added matrix permanent operation #13987 (matrix permanent). Correct Laplace-style expansion without sign alternation; base case and recursion are right. Both doctests reproduce (permanent([[1,2],[3,4]]) == 10,[[1.5,2.5],[3,4]] == 13.5). Only nit: thelist[list[int]]hint understates that it accepts floats too — cosmetic, not blocking.neural_network/activation_functions/softsign.py— feat: Add Softsign activation function #13133.x / (1 + |x|)is correct; thearray([-0.833…, -0.5, 0., 0.5, 0.833…])doctest reproduces exactly. Matches the style of the existing sigmoid/tanh modules in that folder. Ship it.financial/macaulay_duration.py— Feat macaulay duration #14506. Well done —from __future__ import annotations, full type hints, input-validation doctests, and a reference. I recomputed all three:6.83,4.43,5.62— all match. Good candidate to merge.
🛠 Needs one change before merge:
physics/collisions.py— Add collisions #14787. The physics is right (elastic_collisionsreturns2·v_com − v_initial, the correct 1-D elastic result). Two things I'd ask for first: (1)elastic_collisionsreturns a formatted string ('2.76 ; -3.54') — it should return a numerictuple[float, float]so callers can compute with it; formatting belongs inmain(), not the function. (2) The PR also rewrites the docstring of the existing, workingphysics/potential_energy.py. I'd split that out — a focused "add collisions" PR is far easier to merge and won't rot into conflicts. (Minor:type_collisioncompares floats with==, fine for exact doctest inputs but brittle for computed ones — a tolerance would be safer.)
❌ Fails repo standards as-is:
electronics/power_factor.py— power factor calculator #11727. The formulas are fine, but no type hints and no doctests on any of the four functions, so it won't pass CI/--doctest-modulesand there's nothing to verify against. It also overlaps with the other electronics PRs on your map (Added shunt capacitor power factor correction #9535 power_factor_correction). I'd ask the author to add type hints + a doctest per function (and dedupe against Added shunt capacitor power factor correction #9535) before it's mergeable.
- Net: Added matrix permanent operation #13987, feat: Add Softsign activation function #13133, and Feat macaulay duration #14506 look merge-ready to me; Add collisions #14787 needs a small API fix + scope trim; power factor calculator #11727 needs type hints/doctests. Happy to take another pass on any of these once updated, or dig into more of the map before Hacktoberfest.
@priya-sundaram-dev Nice. Merged or closed those PRs, except 9535 and 14787. I need a bit more review on the former, and I added your comments to the latter.
Please review the PR in the sections.
- electronics
- financeial
- matrix
- neural_network
- physics
@priya-sundaram-dev Can you please re-review these... I think I have updated them all. Are they real algorithms or just made-up puzzles?
Stale — CI hasn't run on the current head (need rebase/re-run before evaluating)
- bit_manipulation: Binary Addition of two binary strings input to produce binary string output of any length #10370, feat: Introduce hamming code generator #11827, Adding multibit-manipulation algorithm implemented with bitwise operations #11418, Single Number Algo Added #12042, added program to update bit at given position. #9902
- blockchain: Proof of Work Algorithm for Blockchain #11699, Added Proof of Stake(PoS) #11945, New: Added proof of work(PoW) #11946
- ciphers: Added Base58 encoding/decoding in ciphers #12123, [Feature] Implemented DES Algorithm in ECB mode #11785
- conversions: Added base64 to binary conversion. #12209, Added binary to base64 conversion #12210, Create convert_base.py #11115, feat: implements a hex to rgb conversion function #11113, adding negative binary base conversion algorithms #11213, Add ounces to grams conversion. #14079
priya-sundaram-dev commented
on Sep 20, 2026 ContributorMore actionsRe-reviewed the list. Grouping by recommendation, with a note on "real algorithm vs. duplicate/puzzle" since that was the key question. (CI status is as of now; several have gone green since the "stale" grouping.)
✅ Real algorithms, CI green, worth merging (after normal review):
- feat: Introduce hamming code generator #11827 hamming_code_generator — canonical error-correcting code, not yet in the repo. Legit.
- feat: implements a hex to rgb conversion function #11113 hex_to_rgb — genuine conversion; we have
rgb_hsv/rgb_cmykbut no hex→rgb. Small but real.
🟡 Real but needs a rebase/CI re-run before evaluating (checks haven't run on current head):
- Added Base58 encoding/decoding in ciphers #12123 base58 — real and useful (Bitcoin/IPFS alphabet); ciphers only has base16/32/64/85, so no overlap. Good candidate once CI runs.
- [Feature] Implemented DES Algorithm in ECB mode #11785 des_ecb — canonical DES; large (+558) so warrants a careful review, but a real algorithm.
- Proof of Work Algorithm for Blockchain #11699 pow_algorithm (blockchain) — real concept; needs CI + a check it isn't just a hashing loop.
- Added base64 to binary conversion. #12209 / Added binary to base64 conversion #12210 base64↔binary — real conversions but thin wrappers; fine if CI passes and doctests are added.
🔴 Duplicates / made-up-puzzle territory — recommend closing:
- Single Number Algo Added #12042 single_number — this is the XOR "find the unique element" trick and is an exact duplicate of the existing
bit_manipulation/find_unique_number.py(which is actually more robust: empty-list + type guards). Close as duplicate. - Add ounces to grams conversion. #14079 ounces_to_grams — already covered by
conversions/weight_conversion.py(itsKILOGRAM_CHARTincludesounce). Duplicate. - Create convert_base.py #11115 convert_base — overlaps
decimal_to_any.py/hexadecimal_to_decimal.py, and as written has no docstring, type hints, or doctests (12 lines, cryptic names). Would fail CONTRIBUTING even after CI. - added program to update bit at given position. #9902 update_bit and Adding multibit-manipulation algorithm implemented with bitwise operations #11418 multibit_manipulation — both overlap
single_bit_manipulation_operations.py. Adding multibit-manipulation algorithm implemented with bitwise operations #11418 is real and well-documented but library-ish (external readthedocs refs) and duplicative; added program to update bit at given position. #9902 is a trivial set-bit. I'd close both unless the author folds anything genuinely new into the existing file. - Binary Addition of two binary strings input to produce binary string output of any length #10370 binary_addition — real but marginal;
bitwise_addition_recursive.pyalready covers binary addition. Low value.
Net: the clear keepers are #11827 and #11113 now; #12123 and #11785 after CI re-runs. The rest I'd close as duplicates or out-of-scope puzzles. Happy to do a line-level review on any of the keepers you want to move forward.
@priya-sundaram-dev, please review.
Files touched by more than one open PR (possible merge conflicts)
Coordinate, rebase, or land these together to avoid conflicts. Which is best? The current file or one of the two PRs attempting to modify it?
divide_and_conquer/strassen_matrix_multiplication.py(2 PRs): optimize split_matrix function #12552 Docs/strassen docstring complexity #14095geometry/geometry.py(2 PRs): Add triangle in Geometry #12980 Fix ellipse perimeter calculation #13690graphics/bresenham_line_basic.py(2 PRs): Added Bresenham Line Algorithm basic version for first quadrant #13750 Bresenham line advanced algorithm which handles all octants #13751graphics/digital_differential_analyzer_line.py(2 PRs): Docs: Improve docstring for DDA algorithm #13906 fix(dda): fix docstring #enhancement 13905 #13909graphs/dijkstra_2.py(2 PRs): Add doctests to dijkstra_2.py #11823 Tests/doctests dijkstra 2 #13036hashes/chaos_machine.py(2 PRs): fix: inverted loop condition in chaos_machine.py prevents execution #14777 Remove unnecessary global declarations, inline inner function and fix main loop while condition inchaos_machine#14814hashes/crc32.py(2 PRs): feat: add CRC32 hash algorithm implementation #14035 Add CRC-32 checksum implementation #14415machine_learning/dimensionality_reduction.py(2 PRs): feat: add dimensionality reduction algorithms (PCA, LDA, LLE, MDS) #13118 Add t-SNE implementation and tests for dimensionality reduction #13337maths/number_of_digits.py(2 PRs): Fix incorrect doctest and improve log handling in num_digits functions #13850 Fix num_digits_fast for powers of ten #14742searches/exponential_search.py(2 PRs): Add exponential_search doctest for empty array edge case #13954 fix: handle not-found edges in exponential_search #14806sorts/topological_sort.py(2 PRs): Updated topological_sort.py #11290 Fix topological sort order #14609strings/suffix_automaton.py(2 PRs): add suffix automaton algo #11217 feat(strings): add suffix automaton implementation #13606
Open Pull Request File Map: 25 Sep 2026 at 04:58 UTC
scripts/pr_file_map.py87105960(excludingDIRECTORY.md)DIRECTORY.md:100files touched by more than one open PR (possible merge conflicts)None -- no open PRs overlap on the same file.
39existing filesboolean_algebra/README.md: Added Derived Gates and Modified basic gates along with explanation, symbols, examples and Truth Tables. #13807boolean_algebra/karnaugh_map_simplification.py: updated the kmap simplification algorithm to give the most simplified expression #14792divide_and_conquer/inversions.py: task: Add type hints to inversions.py #14262dynamic_programming/fibonacci.py: Implement __repr__ method for debugging #13640dynamic_programming/knapsack.py: Fix: Update Coin Change Dynamic Programming Algorithm Type Hints and Return Type #13395dynamic_programming/longest_common_subsequence.py: feat: add LCS string reconstruction using DP backtracking #14472dynamic_programming/trapped_water.py: Optimized Trapping Rainwater Solution to O(1) Space (Two-Pointer Approach) #13973graphs/kahns_algorithm_topo.py: Fix IndexError on sparse vertex ids in kahns_algorithm_topo #15088hashes/chaos_machine.py: fix: inverted loop condition in chaos_machine.py prevents execution #14777linear_programming/simplex.py: fix: raise ValueError when run_simplex exhausts maxiter #14669machine_learning/support_vector_machines.py: Update support_vector_machines.py to add the polynomial kernel #12748machine_learning/t_stochastic_neighbour_embedding.py: Enhancement: t-SNE Script Improvements #13522maths/abs.py: Refactor: unify abs usage and expand type hints to float #14142maths/addition_without_arithmetic.py: Clarify bitwise operations used in addition without arithmetic #14059maths/basic_maths.py: Adding new algorithms which are pretty necessary and improving the readability of algos! #13251maths/entropy.py: refactor: generalize entropy calculation and improve semantic clarity #14202maths/gcd_of_n_numbers.py: Improve prime factorization correctness and performance in GCD implementation #14190maths/greatest_common_divisor.py: Fix and improve module docstring for greatest common divisor #14239maths/kth_lexicographic_permutation.py: Fix kth lexicographic permutation #14197maths/lucas_series.py: Optimize Lucas Number Calculation with Matrix Exponentiation #13131maths/perfect_number.py: improved perfect number algorithm in maths module #14134maths/primelib.py: fix: add type hints to maths/primelib.py and fix integer division #14089maths/sieve_of_eratosthenes.py: Optimize speed and memory sieve_of_eratosthenes.py (skip evens) #13110maths/softmax.py: refactor: add type hints to maths/softmax.py #14153maths/triplet_sum.py: Added doctests for random dataset function #13360maths/two_pointer.py: Improve two_pointer documentation and readability #14539maths/volume.py: docs: improve vol_cuboid docstring with Wikipedia reference and math formula. #14409physics/hamiltonian.py: Add classical and quantum Hamiltonian functions (#13235) #13312physics/photoelectric_effect.py: Improve documentation and clarity of photoelectric effect explanation #14030physics/potential_energy.py: Add collisions #14787searches/exponential_search.py: fix: handle not-found edges in exponential_search #14806searches/sentinel_linear_search.py: feat: Add sentinel linear search algorithm #14581sorts/gnome_sort.py: Add module docstring gnome sort #14398sorts/recursive_quick_sort.py: feat(sorts): make recursive quick sort generic over comparable items #15414strings/check_anagrams.py: Improve docstring clarity for anagram check function #14058strings/knuth_morris_pratt.py: refactor(strings): Improve and correct KMP implementation #13694strings/rabin_karp.py: Add Rabin-Karp String Matching Algorithm (#13918) #13947strings/split.py: fix: raise ValueError for multi-character separator in split #14667tests/test_sorts.py: feat(sorts): make recursive quick sort generic over comparable items #1541456files not present in the working directorybit_manipulation/count_bits.py: feat: add count_bits algorithm with doctests #13938bit_manipulation/fin_two_unique_numbers.py: Add algorithm to find Two unique numbers using bit manipulation with docsets #13216bit_manipulation/find_upper_lower_nibble.py: Add function to find upper and lower nibbles with doctests and type hints #13121bit_manipulation/max_xor_bit_trie.py: Added Implementation of Bit_Trie for finding max xor between two numbers in an array #13132bit_manipulation/sliding_window_xor.py: Add Sliding_Window_XOR working solution #13129data_structures/disjoint_set/progressive_set_intersection.py: feat: add progressive_set_intersection to disjoint_set #14492data_structures/trie/segment_tree.py: Add Segment Tree implementation in Python #13327data_structures/z_score_normalization.py: Add Z-score normalization algorithm for data standardization #14527digital_image_processing/image_data/skeleton_lena.png: Added Skeletonizing and Pruning Operations - DIP #13141digital_image_processing/morphological_operations/pruning_operation.py: Added Skeletonizing and Pruning Operations - DIP #13141digital_image_processing/morphological_operations/skeletonization_operation.py: Added Skeletonizing and Pruning Operations - DIP #13141divide_and_conquer/README.md: Added a readme file for the divide and conquer directory #13519divide_and_conquer/fast_fourier_transform.py: Adding fast_fourier_transform.py #13738divide_and_conquer/karatsuba_multiplication.py: feat: add Karatsuba multiplication algorithm in divide_and_conquer folder modified #13300dynamic_programming/coin_change.py: Fix: Update Coin Change Dynamic Programming Algorithm Type Hints and Return Type #13395dynamic_programming/house_robber.py: New Algorithm added in dynamic_programming #13471dynamic_programming/job_scheduling.py: My first contrib #13361dynamic_programming/kadanes_algorithm.py: Add Kadane's algorithm for maximum subarray sum #14525dynamic_programming/moving_average.py: Add moving average algorithm for sliding window data analysis #14526dynamic_programming/weighted_job_scheduling.py: feat: Add Weighted Job Scheduling algorithm to dynamic programming #13378financial/relative_strength_index.py: Calculate Relative Strength Index (RSI) algorithm #13888financial/streaming_moving_average.py: Streaming moving average #11826genetic_algorithm/adjacency_representation.py: Add adjacency representation generator for closed Hamiltonian tours #13645genetic_algorithm/knapsack.py: New Genetic Algorithm solution for Knapsack problem #13234genetic_algorithm/ordinal_representation.py: Add ordinal representation generator for closed Hamiltonian tours #13647geometry/collision_detection.py: Add collision detection algorithm (#12569) #13969geometry/point_in_polygon.py: Add Point in Polygon algorithm using ray casting #15309geometry/point_to_plane_distance.py: Add point to plane distance using Hesse normal form #14360graphics/interactive_3d_renderer.py: Tk render 3D #13113graphs/blossom_algorithm.py: Add Blossom algorithm (Edmonds' algorithm) for maximum matching in general graphs #13023graphs/maximum_matching_tree.py: Add maximum matching in trees using dynamic programming #15376graphs/swim_in_rising_water.py: Add swim_in_rising_water algorithm to graphs directory #13249greedy_methods/gale_shapley_stable_matching.py: Gale shapley stable matching #14264greedy_methods/merge_intervals.py: feat: add merge intervals algorithm #14436hashes/fnv.py: Add FNV-1a hash algorithm implementation #14036hashes/fnv1a.py: Add FNV-1a hash algorithm implementation with 32-bit and 64-bit variants #13814hashes/sha3.py: added: sha-3(Keccak) implementation #14023hashes/xxhash.py: Add xxHash32 algorithm implementation #14037linear_algebra/determinant.py: New script demonstrates the implementation of the Sigmoid, tanh function, Matrix determinant and Matrix trace calculation. #13364linear_algebra/matrix_trace.py: New script demonstrates the implementation of the Sigmoid, tanh function, Matrix determinant and Matrix trace calculation. #13364machine_learning/adaboost.py: Add ml algorithms #13270machine_learning/arima.py: Add ARIMA model #13271machine_learning/cnn.py: Add cnn model #13273maths/baby_step_giant_step.py: Add baby-step giant-step discrete logarithm algorithm #14997matrix/strassen_matrix_multiply.py: Added the Strassen's Matrix Multiplication Algorithm #13482neural_network/activation_functions/sigmoid.py: New script demonstrates the implementation of the Sigmoid, tanh function, Matrix determinant and Matrix trace calculation. #13364neural_network/activation_functions/tanh.py: New script demonstrates the implementation of the Sigmoid, tanh function, Matrix determinant and Matrix trace calculation. #13364neural_network/recurrent_neural_network.py: Added the algorithm for RNN #13514other/pyramid_patterns.py: Add pattern printing (pyramid, inverted pyramid, diamond) [#13460] #13462physics/collisions.py: Add collisions #14787physics/diffraction.py: finding different diffraction parameters #11608searches/binary_search_recursion.py: Implement recursive binary search in Python #14056strings/longest_common_prefix.py: longest_common_prefix #13371strings/reverse_string.py: Add reverse_string algorithm with type checking and examples #13707strings/suffix_array.py: Add suffix array algorithm #15319strings/valid_anagram.py: feat: add valid anagram algorithm in Strings folder #1329710open PRs touchDIRECTORY.mdDIRECTORY.mdis auto-generated, so nearly every PR touches it. A merge conflict caused only by this file is cleared by choosing accept both in the GitHub UI -- no rebase needed.10PRs whose only overlap isDIRECTORY.md(safe to accept both)0PRs that also overlap on other files (need a review or rebase)None.