[FIX] Pre-existing algorithms do not fit the contribution guidelines
realstealthninja opened this issue · 13 comments
Detailed description
Times change
so does the development of algorithms and documentation
Some of the older algorithms existing in this repository do not fit the contribution guidelines.
A short list of examples:
Context
Educating new developers on coding standards is a major priority; As the industry today relies heavily on documentation;
If you were to ask any API developer/user on what the most important part of their development and use it will always be:
- Code quality
- documentation
having a fast and performant algorithm is good but whats the point if you cant understand how it works or even why it works.
I think it is in the best interest of us to document our algorithms.
As i consider all algorithms must be:
- beautiful
- understandable
- educational
Possible implementation
No response
Additional information
Others in the past have made major changes like this to this repository and i think its time for us to do the same. to keep the torch moving.
An homage to @kvedala for their part in trying to standardize this repository #805
Hi, I wanted to start contributing to this repository ,can you assign me this problem
No sorry no assigning in this repository just start making a pull request and we will review to help you.❤️
Note: assigning requires triage access
how can help so that this issue will be resolved
how can help so that this issue will be resolved
just find an algorithm that does not fit the contribution guidelines and start fixing it! we will close this issue once ALL the algorithms are fixed! 😄
Math Directory Checklist
Below is the list of algorithms to be checked within the maths repository. Footnotes provide details to potential changes
This is a guide. Please fully check any file you work on! You may find other changes are needed.
- aliquot_sum.cpp
- approximate_pi.cpp 1 2
- area.cpp 3 425 [IN PROGRESS]
- armstrong_number.cpp
- binary_exponent.cpp
- binomial_calculate.cpp
- check_amicable_pair.cpp
- check_factorial.cpp
- check_prime.cpp
- complex_numbers.cpp 3 42
- double_factorial.cpp 3 42
- eratosthenes.cpp 1 5 [IN PROGRESS] looks ok, has code in main
- eulers_totient_function.cpp 1 2 [IN PROGRESS]
- extended_euclid_algorithm.cpp 3 425
- factorial.cpp 3 425
- fast_power.cpp 3 425
- fibonacci.cpp 1 425
- fibonacci_fast.cpp 3 425
- fibonacci_large.cpp 3 425
- fibonacci_matrix_exponentiation.cpp 3 425 more white space then you could fit in a 747
- fibonacci_sum.cpp 1 42
- finding_number_of_digits_in_a_number.cpp 1 42
- gcd_iterative_euclidean.cpp 3 425
- gcd_of_n_numbers.cpp 3 425 fixed in #2766
- gcd_recursive_euclidean.cpp 3 425
- integral_approximation.cpp 3 425 change name to integral_approximation_Reimann.cpp ?
- integral_approximation2.cpp 3 425 change name to integral_approximation_Monte_Carlo.cpp ?
- inv_sqrt.cpp 1 425
- large_factorial.cpp 3 425
- large_number.h 3 42 this is quite a big bit of code to check, 5 may apply here
- largest_power.cpp 1 425
- lcm_sum.cpp 1 42 is there a more efficient version of this?
- least_common_multiple.cpp 1 425
- linear_recurrence_matrix.cpp 1 425
- magic_number.cpp 1 425
- miller_rabin.cpp 1 425
- modular_division.cpp 1 425
- modular_exponentiation.cpp 1 42
- modular_inverse_fermat_little_theorem.cpp 3 425
- modular_inverse_simple.cpp 1 425
- n_bonacci.cpp1 42 small comment restructure, potentially needs formatted
- n_choose_r.cpp 3 425 uses template, states only for uint64_t. test cases are strange?
- ncr_modulo_p.cpp 3 425
- number_of_positive_divisors.cpp 3 25
- perimeter.cpp 1 45
- power_for_huge_numbers.cpp 3 425
- power_of_two.cpp 1 425 this one has commented out user input test, maintainer should decide if it stays in
- prime_factorization.cpp 3 425
- prime_numbers.cpp 3 425
- primes_up_to_billion.cpp 3 425
- quadratic_equations_complex_numbers.cpp 1 425
- realtime_stats.cpp 3 425
- sieve_of_eratosthenes.cpp 3 425
- sqrt_double.cpp 3 425
- string_fibonacci.cpp 3 425 I don't understand why the ifdef is necessary
- sum_of_binomial_coefficient.cpp 1 42
- sum_of_digits.cpp 3 425
- vector_cross_product.cpp 1 425
- volume.cpp 3 425
Footnotes
-
This algorithm needs a small amount of changes ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 ↩11 ↩12 ↩13 ↩14 ↩15 ↩16 ↩17 ↩18 ↩19 ↩20 ↩21 ↩22
-
Doc rework ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 ↩11 ↩12 ↩13 ↩14 ↩15 ↩16 ↩17 ↩18 ↩19 ↩20 ↩21 ↩22 ↩23 ↩24 ↩25 ↩26 ↩27 ↩28 ↩29 ↩30 ↩31 ↩32 ↩33 ↩34 ↩35 ↩36 ↩37 ↩38 ↩39 ↩40 ↩41 ↩42 ↩43 ↩44 ↩45 ↩46 ↩47 ↩48 ↩49 ↩50
-
This algorithm needs a large amount of changes ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 ↩11 ↩12 ↩13 ↩14 ↩15 ↩16 ↩17 ↩18 ↩19 ↩20 ↩21 ↩22 ↩23 ↩24 ↩25 ↩26 ↩27 ↩28 ↩29 ↩30
-
Test rework ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 ↩11 ↩12 ↩13 ↩14 ↩15 ↩16 ↩17 ↩18 ↩19 ↩20 ↩21 ↩22 ↩23 ↩24 ↩25 ↩26 ↩27 ↩28 ↩29 ↩30 ↩31 ↩32 ↩33 ↩34 ↩35 ↩36 ↩37 ↩38 ↩39 ↩40 ↩41 ↩42 ↩43 ↩44 ↩45 ↩46 ↩47 ↩48
-
Code rework ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 ↩11 ↩12 ↩13 ↩14 ↩15 ↩16 ↩17 ↩18 ↩19 ↩20 ↩21 ↩22 ↩23 ↩24 ↩25 ↩26 ↩27 ↩28 ↩29 ↩30 ↩31 ↩32 ↩33 ↩34 ↩35 ↩36 ↩37 ↩38 ↩39 ↩40 ↩41 ↩42
In terms of making these changes/fixes to the style to fit the guidelines. How do you want PRs to work? My thinking was just 1 small PR based on changes to one module to minimize the changes which need reviewed.
In terms of making these changes/fixes to the style to fit the guidelines. How do you want PRs to work? My thinking was just 1 small PR based on changes to one module to minimize the changes which need reviewed.
one pr for one file
I'm starting to look at the area.cpp file here just so no one picks it up by accident 😁
Please assign me fast_power.cpp
Submitted a PR for sum_of_digits.cpp
It's my first PR so let me know if adjustments are needed.
I did forget my .vscode json was in there, I'll remember to exclude it from my commit next time!
let's get this finished
We still need more help on this!
Open a pr for any of the algorithms in the math directory and fix it by adding documentation and tests!
Please mention it here by referencing the pr with the # prefix
if anyone's interested in doing an algorithm in this list for hacktoberfest feel free to raise an issue of your preferred algorithm. Ill be happy to apply the label to it. ❤️ happy hacking!
please make sure to link both this and your new issue when creating the pr!
I don't think there is a more efficient version. I found some proofs of this algorithm here and here but I couldn't find anything better.
Also, this is in the wrong section of The Algorithms website here with other functions to calculate LCM of two numbers.
If there isn't a better approach, I will fix the doc & test issues.