Created
July 9, 2025 16:32
-
-
Save tonussi/5a0fecad9183d664285287d33f22a982 to your computer and use it in GitHub Desktop.
listinha
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| class Listinha(): | |
| elements = list() | |
| def insert(self, pos, newEl): | |
| if pos < 0: | |
| return | |
| if pos > len(self.elements): | |
| return | |
| first = pos | |
| second = pos + 1 | |
| if pos == 0: | |
| first = pos - 1 | |
| second = pos | |
| if pos == 0: | |
| first = second = 0 | |
| if pos > 0 and pos < len(self.elements): | |
| first = second = pos | |
| self.elements = self.elements[:first] + [newEl] + self.elements[second:len(self.elements)] | |
| def pprint(self): | |
| # print('pprint') | |
| print(self.elements) | |
| def remove(self, occur): | |
| # print('remove', pos) | |
| first_occur_index = None | |
| for i in range(len(self.elements)): | |
| if self.elements[i] == occur: | |
| first_occur_index = i | |
| if first_occur_index is not None: | |
| if first_occur_index + 1 < len(self.elements): | |
| self.elements = self.elements[:first_occur_index] + self.elements[first_occur_index+1:len(self.elements)] | |
| def append(self, newEl): | |
| # print('append', newEl) | |
| self.elements = self.elements + [newEl] | |
| def sort(self): | |
| # print('sort') | |
| self.elements = sorted(self.elements) | |
| def pop(self): | |
| # print('pop') | |
| self.elements = self.elements[:len(self.elements) - 1] | |
| def reverse(self): | |
| # print('reverse') | |
| self.elements = sorted(self.elements, reverse=True) | |
| def choices(self): | |
| return { | |
| "insert": self.insert, | |
| "pprint": self.pprint, | |
| "remove": self.remove, | |
| "append": self.append, | |
| "sort": self.sort, | |
| "pop": self.pop, | |
| "reverse": self.reverse | |
| } | |
| if __name__ == '__main__': | |
| N = int(input()) | |
| i = 0 | |
| splitted = None | |
| listinha = Listinha() | |
| while (i < 12): | |
| command_i = input() | |
| if command_i is None: | |
| break | |
| splitted = command_i.split(' ') | |
| if len(splitted) == 3: | |
| command, v1, v2 = splitted | |
| listinha.choices()[command](int(v1), int(v2)) | |
| if len(splitted) == 2: | |
| command, v1 = splitted | |
| listinha.choices()[command](int(v1)) | |
| if len(splitted) == 1: | |
| command = splitted | |
| # print('c', command[0]) | |
| if command[0] == 'print': | |
| listinha.choices()['p' + command[0]]() | |
| else: | |
| listinha.choices()[command[0]]() | |
| i+=1 |
Author
Author
[1, 48, 75, 30, 44, 6, 10, 44, 8, 9, 87, 75, 21, 2, 67, 12, 7, 66, 3, 5]
[5, 3, 66, 7, 12, 67, 2, 21, 75, 87, 9, 8, 44, 10, 6, 44, 30, 75, 48, 1]
[1, 2, 3, 5, 6, 7, 8, 9, 10, 12, 21, 30, 44, 44, 48, 66, 67, 75, 75, 87]
[1, 2, 3, 5, 6, 7, 8, 9, 10, 12, 21, 30, 44, 44, 48, 66, 67, 75, 75, 87, 5]
Author
class Listinha():
elements = list()
def insert(self, pos, newEl):
if pos < 0:
return
if pos > len(self.elements):
return
first = pos
second = pos + 1
if pos == 0:
first = pos - 1
second = pos
if pos == 0:
first = second = 0
if pos > 0 and pos < len(self.elements):
first = second = pos
self.elements = self.elements[:first] + [newEl] + self.elements[second:len(self.elements)]
def pprint(self):
# print('pprint')
print(self.elements)
def remove(self, occur):
# print('remove', pos)
first_occur_index = None
for i in range(len(self.elements)):
if self.elements[i] == occur:
first_occur_index = i
break
if first_occur_index is not None:
if first_occur_index + 1 < len(self.elements):
self.elements = self.elements[:first_occur_index] + self.elements[first_occur_index+1:len(self.elements)]
def append(self, newEl):
# print('append', newEl)
self.elements = self.elements + [newEl]
def sort(self):
# print('sort')
self.elements = sorted(self.elements)
def pop(self):
# print('pop')
self.elements = self.elements[:len(self.elements) - 1]
def reverse(self):
# print('reverse')
reverse_elements = []
for e in range(len(self.elements) - 1, -1, -1):
reverse_elements.append(self.elements[e])
self.elements = reverse_elements
def choices(self):
return {
"insert": self.insert,
"pprint": self.pprint,
"remove": self.remove,
"append": self.append,
"sort": self.sort,
"pop": self.pop,
"reverse": self.reverse
}
if __name__ == '__main__':
N = int(input())
i = 0
splitted = None
listinha = Listinha()
while (i < N):
command_i = input()
if command_i is None:
break
splitted = command_i.split(' ')
if len(splitted) == 3:
command, v1, v2 = splitted
listinha.choices()[command](int(v1), int(v2))
if len(splitted) == 2:
command, v1 = splitted
listinha.choices()[command](int(v1))
if len(splitted) == 1:
command = splitted
# print('c', command[0])
if command[0] == 'print':
listinha.choices()['p' + command[0]]()
else:
listinha.choices()[command[0]]()
i+=1
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
[1, 48, 75, 30, 44, 6, 10, 44, 8, 9, 87, 75, 21, 2, 67, 12, 7, 66, 3, 5]
[5, 3, 66, 7, 12, 67, 2, 21, 75, 87, 9, 8, 44, 10, 6, 44, 30, 75, 48, 1]
[1, 2, 3, 5, 6, 7, 8, 9, 10, 12, 21, 30, 44, 44, 48, 66, 67, 75, 75, 87]
[1, 3, 5, 6, 7, 8, 9, 10, 12, 21, 30, 44, 44, 48, 66, 67, 75, 75, 87, 2, 5]