Compare commits
No commits in common. "9df3b783fb033fc776150c55c6ddbf84fdc28748" and "d010de0fe5cac0c77fec89f5bb447a78d52c6db4" have entirely different histories.
9df3b783fb
...
d010de0fe5
@ -28,4 +28,3 @@ Repository for CDS-2020 Programming and Promt Engineering II
|
|||||||
|Building blocks|kata_building_blocks.py|test_building_blocks.py|[55b75fcf67e558d3750000a3](https://www.codewars.com/kata/55b75fcf67e558d3750000a3)|
|
|Building blocks|kata_building_blocks.py|test_building_blocks.py|[55b75fcf67e558d3750000a3](https://www.codewars.com/kata/55b75fcf67e558d3750000a3)|
|
||||||
|PaginationHelper|kata_pagination_helper.py|test_pagination_helper.py|[515bb423de843ea99400000a](https://www.codewars.com/kata/515bb423de843ea99400000a)|
|
|PaginationHelper|kata_pagination_helper.py|test_pagination_helper.py|[515bb423de843ea99400000a](https://www.codewars.com/kata/515bb423de843ea99400000a)|
|
||||||
|Who has the most money?|kata_who_the_most_money.py|test_who_the_most_money.py|[528d36d7cc451cd7e4000339](https://www.codewars.com/kata/528d36d7cc451cd7e4000339)|
|
|Who has the most money?|kata_who_the_most_money.py|test_who_the_most_money.py|[528d36d7cc451cd7e4000339](https://www.codewars.com/kata/528d36d7cc451cd7e4000339)|
|
||||||
|Next bigger number with the same digits|kata_next_bigger_number_same_digits.py|test_next_bigger_number_same_digits.py|[55983863da40caa2c900004e](https://www.codewars.com/kata/55983863da40caa2c900004e)|
|
|
||||||
|
|||||||
@ -1,34 +0,0 @@
|
|||||||
def next_bigger(n):
|
|
||||||
# get number as digits in list
|
|
||||||
digits = [int(x) for x in list(str(n))]
|
|
||||||
|
|
||||||
# find index of pivot. return -1 if there is no pivot, meaning number is alreadig biggest
|
|
||||||
pivot = -1
|
|
||||||
for i in range(1, len(digits)):
|
|
||||||
if digits[-i] > digits[-i - 1]:
|
|
||||||
pivot = -i - 1
|
|
||||||
break
|
|
||||||
|
|
||||||
if pivot == -1:
|
|
||||||
return -1
|
|
||||||
|
|
||||||
# find the smallest digit to the right that is bigger than the pivot
|
|
||||||
right = digits[pivot + 1 :]
|
|
||||||
swap = right.index(min([x for x in right if x > digits[pivot]]))
|
|
||||||
|
|
||||||
# swap pivot with found digit
|
|
||||||
digits[pivot], digits[len(digits) - len(right) + swap] = (
|
|
||||||
right[swap],
|
|
||||||
digits[pivot],
|
|
||||||
)
|
|
||||||
|
|
||||||
# sort right side of new swapped pivot and replace it at the end
|
|
||||||
right = digits[pivot + 1 :]
|
|
||||||
right.sort()
|
|
||||||
digits[pivot + 1 :] = right
|
|
||||||
|
|
||||||
# return number
|
|
||||||
return int("".join([str(x) for x in digits]))
|
|
||||||
|
|
||||||
|
|
||||||
print(next_bigger(5113455566888))
|
|
||||||
@ -1,15 +0,0 @@
|
|||||||
from src.codewars.kata_next_bigger_number_same_digits import next_bigger
|
|
||||||
|
|
||||||
|
|
||||||
def test_next_bigger():
|
|
||||||
assert next_bigger(12) == 21
|
|
||||||
assert next_bigger(21) == -1
|
|
||||||
assert next_bigger(513) == 531
|
|
||||||
assert next_bigger(2017) == 2071
|
|
||||||
assert next_bigger(414) == 441
|
|
||||||
assert next_bigger(144) == 414
|
|
||||||
assert next_bigger(1234567890) == 1234567908
|
|
||||||
assert next_bigger(59884848459853) == 59884848483559
|
|
||||||
assert next_bigger(7600201336) == 7600201363
|
|
||||||
assert next_bigger(5113455566888) == 5113455568688
|
|
||||||
assert next_bigger(4769560370633) == 4769560373036
|
|
||||||
Loading…
x
Reference in New Issue
Block a user