File tree Expand file tree Collapse file tree 2 files changed +66
-12
lines changed
solutions/python/sublist/6 Expand file tree Collapse file tree 2 files changed +66
-12
lines changed Original file line number Diff line number Diff line change 1+ """
2+ This exercise stub and the test suite contain several enumerated constants.
3+
4+ Enumerated constants can be done with a NAME assigned to an arbitrary,
5+ but unique value. An integer is traditionally used because it’s memory
6+ efficient.
7+
8+ It is a common practice to export both constants and functions that work with
9+ those constants (ex. the constants in the os, subprocess and re modules).
10+
11+ You can learn more here: https://en.wikipedia.org/wiki/Enumerated_type
12+ """
13+
14+ # Possible sublist categories.
15+ # Change the values as you see fit.
16+ SUBLIST = 0
17+ SUPERLIST = 1
18+ EQUAL = 2
19+ UNEQUAL = 3
20+
21+
22+ def sublist(list_one: list, list_two: list) -> str:
23+ """
24+ Classify the relationship between two lists.
25+
26+ Determines whether ``list_one`` and ``list_two`` are equal, or whether one
27+ is a contiguous sublist of the other, and returns the appropriate constant.
28+
29+ :param list_one: First list to compare.
30+ :type list_one: list
31+ :param list_two: Second list to compare.
32+ :type list_two: list
33+ :returns: One of ``EQUAL``, ``SUBLIST``, ``SUPERLIST``, or ``UNEQUAL``.
34+ :rtype: str
35+ """
36+
37+ len1: int = len(list_one)
38+ len2: int = len(list_two)
39+
40+ if len1 == len2:
41+ if list_one == list_two:
42+ return EQUAL
43+ return UNEQUAL
44+
45+ l1: str = ",".join(str(i) for i in list_one)
46+ l2: str = ",".join(str(i) for i in list_two)
47+
48+ if len1 > len2:
49+ if l2 in l1:
50+ return SUPERLIST
51+
52+ if len2 > len1:
53+ if l1 in l2:
54+ return SUBLIST
55+
56+ return UNEQUAL
Original file line number Diff line number Diff line change 1313
1414# Possible sublist categories.
1515# Change the values as you see fit.
16- SUBLIST = "SUBLIST"
17- SUPERLIST = "SUPERLIST"
18- EQUAL = "EQUAL"
19- UNEQUAL = "UNEQUAL"
16+ SUBLIST = 0
17+ SUPERLIST = 1
18+ EQUAL = 2
19+ UNEQUAL = 3
2020
2121
22- def sublist(list_one: list, list_two: list) -> str :
22+ def sublist(list_one: list, list_two: list) -> int :
2323 """
2424 Classify the relationship between two lists.
2525
@@ -31,7 +31,7 @@ def sublist(list_one: list, list_two: list) -> str:
3131 :param list_two: Second list to compare.
3232 :type list_two: list
3333 :returns: One of ``EQUAL``, ``SUBLIST``, ``SUPERLIST``, or ``UNEQUAL``.
34- :rtype: str
34+ :rtype: int
3535 """
3636
3737 len1: int = len(list_one)
@@ -45,12 +45,10 @@ def sublist(list_one: list, list_two: list) -> str:
4545 l1: str = ",".join(str(i) for i in list_one)
4646 l2: str = ",".join(str(i) for i in list_two)
4747
48- if len1 > len2:
49- if l2 in l1:
50- return SUPERLIST
48+ if l2 in l1:
49+ return SUPERLIST
5150
52- if len2 > len1:
53- if l1 in l2:
54- return SUBLIST
51+ if l1 in l2:
52+ return SUBLIST
5553
5654 return UNEQUAL
You can’t perform that action at this time.
0 commit comments