Skip to content
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

additon of integers using LL #2370

Open
wants to merge 10 commits into
base: master
from

Conversation

@csendranshi
Copy link

csendranshi commented Aug 29, 2020

Describe your change:

Adding two integers of same length using Linked lists
Example add 321 + 248 = 569
(1)->(2)->(3) + (8)->(4)->(2) = (5)->(6)->(9)

  • 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}.
@TravisBuddy
Copy link

TravisBuddy commented Aug 29, 2020

Hey @csendranshi,
Something went wrong with the build.

TravisCI finished with status errored, which means the build failed because of something unrelated to the tests, such as a problem with a dependency or the build process itself.

View build log

TravisBuddy Request Identifier: d4a6c320-ea0b-11ea-9476-dd4d5d152bb6
@cclauss
Copy link
Member

cclauss commented Aug 29, 2020

Cool! Our linter is a bit picky about code style. The easiest way to fix these issues is:

  • mv addNodes.py add_nodes.py
  • python3 -m pip install black
  • black add_nodes.py
@csendranshi
Copy link
Author

csendranshi commented Aug 29, 2020

Thanks for the guidance! I have executed the instructions.

self.head = None

# method to print the linked list
def printLL(self):

This comment has been minimized.

@cclauss

cclauss Aug 29, 2020

Member

It is more Pythonic to define a .__str__() method that returns a str then then we can do print(my_linked_list).


# node definition
class Node:
def __init__(self, data):

This comment has been minimized.

@cclauss

cclauss Aug 29, 2020

Member

Please add Python type hints for function parameters as discussed in CONTRIBUTING.md.

temp = temp.next

# method to push a new node onto the linked list
def push(self, newdata):

This comment has been minimized.

@cclauss

cclauss Aug 29, 2020

Member

Please add Python doctests for .push() and .add() as discussed in CONTRIBUTING.md.

csendranshi added 2 commits Sep 2, 2020
update
@TravisBuddy
Copy link

TravisBuddy commented Sep 2, 2020

Hey @csendranshi,
Something went wrong with the build.

TravisCI finished with status errored, which means the build failed because of something unrelated to the tests, such as a problem with a dependency or the build process itself.

View build log

TravisBuddy Request Identifier: 42c8ab60-ed2d-11ea-b6ba-27fe84eba218
@TravisBuddy
Copy link

TravisBuddy commented Sep 2, 2020

Hey @csendranshi,
Something went wrong with the build.

TravisCI finished with status errored, which means the build failed because of something unrelated to the tests, such as a problem with a dependency or the build process itself.

View build log

TravisBuddy Request Identifier: 90e85d40-ed2d-11ea-b6ba-27fe84eba218
"""
>>> llist.push(9)
>>> llist.push(9)
>>> llist.push(9)

This comment has been minimized.

@cclauss

cclauss Sep 2, 2020

Member

So this test shows that we can call LL.push() but it does not really prove that LL.push() did what we expected it to do. How can we have a test that proves that 9 is in the linked list twice?

csendranshi and others added 3 commits Sep 2, 2020
Co-authored-by: Christian Clauss <[email protected]>
Co-authored-by: Christian Clauss <[email protected]>
Co-authored-by: Christian Clauss <[email protected]>
@TravisBuddy
Copy link

TravisBuddy commented Sep 2, 2020

Hey @csendranshi,
Something went wrong with the build.

TravisCI finished with status errored, which means the build failed because of something unrelated to the tests, such as a problem with a dependency or the build process itself.

View build log

TravisBuddy Request Identifier: cd712530-ed37-11ea-b6ba-27fe84eba218


# linkedlist definition
class LL:

This comment has been minimized.

@cclauss

cclauss Sep 2, 2020

Member
Suggested change
class LL:
class LinkedList:
def __str__(self) -> str:
temp = self.head
while temp:
print(temp.data, end=" ")

This comment has been minimized.

@cclauss

cclauss Sep 2, 2020

Member

Line 23 promises that this function will return a str instead of printing the str.

This comment has been minimized.

@csendranshi

csendranshi Sep 2, 2020

Author

working on it, will change

csendranshi and others added 2 commits Sep 2, 2020
Co-authored-by: Christian Clauss <[email protected]>
Co-authored-by: Christian Clauss <[email protected]>
@TravisBuddy
Copy link

TravisBuddy commented Sep 2, 2020

Hey @csendranshi,
Something went wrong with the build.

TravisCI finished with status errored, which means the build failed because of something unrelated to the tests, such as a problem with a dependency or the build process itself.

View build log

TravisBuddy Request Identifier: c89a8720-ed48-11ea-b6ba-27fe84eba218
sums = (
temp1.data + temp2.data + carry[-1]
) # adding the latest element appended to the carry list
if sums >= 0 and sums <= 9:

This comment has been minimized.

@cclauss

cclauss Sep 2, 2020

Member
Suggested change
if sums >= 0 and sums <= 9:
if 0 <= sums <= 9:
@TravisBuddy
Copy link

TravisBuddy commented Sep 2, 2020

Travis tests have failed

Hey @csendranshi,
Please read the following log in order to understand the failure reason.
It'll be awesome if you fix what's wrong and commit the changes.

TravisBuddy Request Identifier: 0e85dce0-ed4d-11ea-b6ba-27fe84eba218
@spamegg1
Copy link
Contributor

spamegg1 commented Sep 9, 2020

@csendranshi Build log says

047 >>> llist = LL(9)
UNEXPECTED EXCEPTION: TypeError('init() takes 1 positional argument but 2 were given')

The constructor of LL as defined on lines 18-19:

def __init__(self):
    self.head = None

takes no parameters, but you supplied a parameter to it with LL(9).

Correct use would be like what you did on lines 80, 81, 82:

llist = LL()  # linkedlist 1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked issues

Successfully merging this pull request may close these issues.

None yet

5 participants
You can’t perform that action at this time.