Polish add reverse solution.

This commit is contained in:
Donne Martin 2016-02-10 06:30:36 -05:00
parent b0a091f589
commit feb3ed3129

View File

@ -73,7 +73,7 @@
"* Recursive case:\n", "* Recursive case:\n",
" * Set `value` to `carry`\n", " * Set `value` to `carry`\n",
" * Add both nodes' `data` to `value`\n", " * Add both nodes' `data` to `value`\n",
" * Set the `new_carry` to 1 if `value >= 10, else 0`\n", " * Set the `carry` to 1 if `value >= 10, else 0`\n",
" * Set the `remainder` to `value % 10`\n", " * Set the `remainder` to `value % 10`\n",
" * Create a `node` with the `remainder`\n", " * Create a `node` with the `remainder`\n",
" * Set `node.next` to a recursive call on the `next` nodes, passing in the `carry`\n", " * Set `node.next` to a recursive call on the `next` nodes, passing in the `carry`\n",
@ -117,31 +117,29 @@
"source": [ "source": [
"class MyLinkedList(LinkedList):\n", "class MyLinkedList(LinkedList):\n",
"\n", "\n",
" def __add_reverse__(self, first_node, second_node, carry):\n", " def _add_reverse(self, first_node, second_node, carry):\n",
" if type(carry) != int and carry < 0:\n",
" raise ValueError('Invalid int argument: carry')\n",
"\n",
" # Base case\n", " # Base case\n",
" if first_node is None and second_node is None and carry == 0:\n", " if first_node is None and second_node is None and not carry:\n",
" return None\n", " return None\n",
"\n", "\n",
" # Recursive case\n", " # Recursive case\n",
" value = carry\n", " value = carry\n",
" value += first_node.data if first_node is not None else 0\n", " value += first_node.data if first_node is not None else 0\n",
" value += second_node.data if second_node is not None else 0\n", " value += second_node.data if second_node is not None else 0\n",
" new_carry = 1 if value >= 10 else 0\n", " carry = 1 if value >= 10 else 0\n",
" remainder = value % 10\n", " value %= 10\n",
" node = Node(remainder)\n", " node = Node(value)\n",
" node.next = self.__add_reverse__(\n", " node.next = self._add_reverse(\n",
" first_node.next if first_node is not None else None,\n", " first_node.next if first_node is not None else None,\n",
" second_node.next if first_node is not None else None,\n", " second_node.next if first_node is not None else None,\n",
" new_carry)\n", " carry)\n",
" return node\n", " return node\n",
"\n", "\n",
" def add_reverse(self, first_list, second_list):\n", " def add_reverse(self, first_list, second_list):\n",
" # See constraints\n",
" if first_list is None or second_list is None:\n", " if first_list is None or second_list is None:\n",
" return None\n", " return None\n",
" head = self.__add_reverse__(first_list.head, second_list.head, 0)\n", " head = self._add_reverse(first_list.head, second_list.head, 0)\n",
" return MyLinkedList(head)" " return MyLinkedList(head)"
] ]
}, },
@ -244,21 +242,21 @@
], ],
"metadata": { "metadata": {
"kernelspec": { "kernelspec": {
"display_name": "Python 2", "display_name": "Python 3",
"language": "python", "language": "python",
"name": "python2" "name": "python3"
}, },
"language_info": { "language_info": {
"codemirror_mode": { "codemirror_mode": {
"name": "ipython", "name": "ipython",
"version": 2 "version": 3
}, },
"file_extension": ".py", "file_extension": ".py",
"mimetype": "text/x-python", "mimetype": "text/x-python",
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython2", "pygments_lexer": "ipython3",
"version": "2.7.10" "version": "3.4.3"
} }
}, },
"nbformat": 4, "nbformat": 4,