File tree Expand file tree Collapse file tree 1 file changed +56
-0
lines changed
solutions/python/sublist/6 Expand file tree Collapse file tree 1 file changed +56
-0
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
You can’t perform that action at this time.
0 commit comments