Skip to content

Luhn algorithm #4487

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 7 commits into from
Jun 13, 2021
Merged

Luhn algorithm #4487

merged 7 commits into from
Jun 13, 2021

Conversation

QuantumNovice
Copy link
Contributor

@QuantumNovice QuantumNovice commented Jun 6, 2021

Perform Luhn validation on input string
Algorithm:
* Double every other digit starting from 2nd last digit.
* Subtract 9 if number is greater than 9.
* Sum the numbers
https://en.wikipedia.org/wiki/Luhn_algorithm

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 Python files are placed inside an existing directory.
  • All filenames are in all lowercase characters with no spaces or dashes.
  • All functions and variable names follow Python naming conventions.
  • All function parameters and return values are annotated with Python type hints.
  • All functions have doctests that pass the automated testing.
  • All new algorithms have a URL in its comments that points to Wikipedia or other similar explanation.
  • If this pull request resolves one or more open issues then the commit message contains Fixes: #{$ISSUE_NO}.

Perform Luhn validation on input string
    Algorithm:
    * Double every other digit starting from 2nd last digit.
    * Subtract 9 if number is greater than 9.
    * Sum the numbers
https://en.wikipedia.org/wiki/Luhn_algorithm
@ghost ghost added the awaiting reviews This PR is ready to be reviewed label Jun 6, 2021
@ghost ghost added the tests are failing Do not merge until tests pass label Jun 6, 2021
@QuantumNovice
Copy link
Contributor Author

mypy typing doesn't support mutable static types. I won't be changing that.
could we consider using --allow-redefinition flag?

@ghost ghost removed the tests are failing Do not merge until tests pass label Jun 8, 2021
Comment on lines +20 to +23
check_digit: int
_vector: List[str] = list(string)
__vector, check_digit = _vector[:-1], int(_vector[-1])
vector: List[int] = [*map(int, __vector)]
Copy link
Collaborator

Choose a reason for hiding this comment

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

We can remove the noise of extra variables with similar names here

tokens, check_digit = list(string), int(list(string)[-1])
vector: List[int] = list(map(int, tokens[:-1]))

A variable declaration costs memory, so use it judicially

Copy link
Contributor Author

@QuantumNovice QuantumNovice Jun 13, 2021

Choose a reason for hiding this comment

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

mypy static checks doesn't pass when "the noise" isn't there
:)

@onlinejudge95
Copy link
Collaborator

Nice contribution !!

@onlinejudge95 onlinejudge95 merged commit 95a4957 into TheAlgorithms:master Jun 13, 2021
@ghost ghost removed the awaiting reviews This PR is ready to be reviewed label Jun 13, 2021
@QuantumNovice QuantumNovice deleted the Luhn-Algorithm branch September 5, 2021 08:28
shermanhui pushed a commit to shermanhui/Python that referenced this pull request Oct 22, 2021
* Luhn algorithm

Perform Luhn validation on input string
    Algorithm:
    * Double every other digit starting from 2nd last digit.
    * Subtract 9 if number is greater than 9.
    * Sum the numbers
https://en.wikipedia.org/wiki/Luhn_algorithm

* Update DIRECTORY.md

* Update luhn.py

* Update luhn.py

* Update luhn.py

* Update luhn.py

* Update DIRECTORY.md
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.

2 participants