Skip to content

feat: add determinant algorithm #1438

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 8 commits into from
Oct 11, 2023
Merged

Conversation

piyushk77
Copy link
Contributor

@piyushk77 piyushk77 commented Oct 4, 2023

Open in Gitpod know more

Describe your change:

  • Add an algorithm?
  • Fix a bug or typo in an existing algorithm?
  • Documentation change?

Checklist:

  • I have read CONTRIBUTING.md.
  • This pull request is all my own work -- I have not plagiarized.
  • I know that pull requests will not be merged if they fail the automated tests.
  • This PR only changes one algorithm file. To ease review, please open separate PRs for separate algorithms.
  • All new JavaScript files are placed inside an existing directory.
  • All filenames should use the UpperCamelCase (PascalCase) style. There should be no spaces in filenames.
    Example:UserProfile.js is allowed but userprofile.js,Userprofile.js,user-Profile.js,userProfile.js are not
  • All new algorithms have a URL in their comments that points to Wikipedia or another similar explanation.
  • If this pull request resolves one or more open issues then the commit message contains Fixes: #{$ISSUE_NO}.

Copy link
Contributor

@gaurovgiri gaurovgiri left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The code seems fine to me. However, there's an issue with the initialization of the result variable on line no. 69. It's initialized to null, and later, calculations are performed on it. This will result in NaN because you cannot perform mathematical operations on null. You should initialize it to 0.

let result = 0

@piyushk77
Copy link
Contributor Author

Hey @gaurovgiri , I have modified the code as requested.

@piyushk77 piyushk77 requested a review from gaurovgiri October 5, 2023 08:30
Copy link

@aayush105 aayush105 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The code looks fine to me. Good to go!

Copy link
Contributor

@gaurovgiri gaurovgiri left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Now its fine! Great work, keep it up!

appgurueu
appgurueu previously approved these changes Oct 8, 2023
Copy link
Collaborator

@appgurueu appgurueu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks fine. It should be noted that this uses the Laplace method, which is not optimal. The extreme O(n!) time complexity must be mentioned. (The optimal approach is to first apply Gaussian elimination (but being careful with swapping or scaling rows, which affects the determinant), then the determinant is just the product along the diagonal with the appropriate sign).

Copy link
Contributor Author

@piyushk77 piyushk77 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey @appgurueu I have modified the code as requested.

  • Made the note of the Laplace expansion and time complexity
  • Remove unnecessary else statements
  • Use throw and catch for errors
  • Use not (!) operator instead of (=== false) comparison

appgurueu
appgurueu previously approved these changes Oct 8, 2023
Copy link
Contributor Author

@piyushk77 piyushk77 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@appgurueu I have seperated the test cases.

appgurueu
appgurueu previously approved these changes Oct 9, 2023
@raklaptudirm raklaptudirm merged commit a24450a into TheAlgorithms:master Oct 11, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants