aboutsummaryrefslogtreecommitdiff
path: root/challenge-059/lubos-kolouch/python/ch-1.py
diff options
context:
space:
mode:
author冯昶 <fengchang@novel-supertv.com>2023-04-17 16:06:26 +0800
committer冯昶 <fengchang@novel-supertv.com>2023-04-17 16:06:26 +0800
commit64b7c608210e55b5564fe44df68d1eacf6d25969 (patch)
tree685237e70e0a1f8d26440eec4d831853acb2c1c3 /challenge-059/lubos-kolouch/python/ch-1.py
parente2c8b4bec3b682df8597f57ec627508a07582d31 (diff)
parent42228ce601fe37769faacc051f35f74b9566bb26 (diff)
downloadperlweeklychallenge-club-64b7c608210e55b5564fe44df68d1eacf6d25969.tar.gz
perlweeklychallenge-club-64b7c608210e55b5564fe44df68d1eacf6d25969.tar.bz2
perlweeklychallenge-club-64b7c608210e55b5564fe44df68d1eacf6d25969.zip
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'challenge-059/lubos-kolouch/python/ch-1.py')
-rw-r--r--challenge-059/lubos-kolouch/python/ch-1.py69
1 files changed, 69 insertions, 0 deletions
diff --git a/challenge-059/lubos-kolouch/python/ch-1.py b/challenge-059/lubos-kolouch/python/ch-1.py
new file mode 100644
index 0000000000..e463f94a8a
--- /dev/null
+++ b/challenge-059/lubos-kolouch/python/ch-1.py
@@ -0,0 +1,69 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+class LinkedList:
+ def __init__(self, value):
+ self.value = value
+ self.next = None
+
+ def append(self, value):
+ current = self
+ while current.next:
+ current = current.next
+ current.next = LinkedList(value)
+
+ def partition(self, k):
+ less_head = None
+ greater_head = None
+ less_tail = None
+ greater_tail = None
+
+ current = self
+ while current:
+ if current.value < k:
+ if less_tail:
+ less_tail.next = current
+ else:
+ less_head = current
+ less_tail = current
+ else:
+ if greater_tail:
+ greater_tail.next = current
+ else:
+ greater_head = current
+ greater_tail = current
+ current = current.next
+
+ if less_tail:
+ less_tail.next = greater_head
+ else:
+ less_head = greater_head
+
+ if greater_tail:
+ greater_tail.next = None
+
+ return less_head
+
+ def __str__(self):
+ current = self
+ result = []
+ while current:
+ result.append(str(current.value) + " → ")
+ current = current.next
+ result.append("END")
+ return "".join(result)
+
+
+if __name__ == "__main__":
+ linked_list = LinkedList(1)
+ linked_list.append(4)
+ linked_list.append(3)
+ linked_list.append(2)
+ linked_list.append(5)
+ linked_list.append(2)
+
+ print("Original list:", linked_list)
+ k_val = 3
+ partitioned_list = linked_list.partition(k_val)
+ print(f"Partitioned list with k={k_val}:", partitioned_list)
+