Skip to content

Instantly share code, notes, and snippets.

@tonussi
Created July 9, 2025 16:32
Show Gist options
  • Save tonussi/5a0fecad9183d664285287d33f22a982 to your computer and use it in GitHub Desktop.
Save tonussi/5a0fecad9183d664285287d33f22a982 to your computer and use it in GitHub Desktop.
listinha
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
@tonussi
Copy link
Author

tonussi commented Jul 9, 2025

29
append 1
append 6
append 10
append 8
append 9
append 2
append 12
append 7
append 3
append 5
insert 8 66
insert 1 30
insert 6 75
insert 4 44
insert 9 67
insert 2 44
insert 9 21
insert 8 87
insert 1 75
insert 1 48
print
reverse
print
sort
print
append 2
append 5
remove 2
print

@tonussi
Copy link
Author

tonussi commented Jul 9, 2025

[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]

@tonussi
Copy link
Author

tonussi commented Jul 9, 2025

[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]

@tonussi
Copy link
Author

tonussi commented Jul 9, 2025

[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]

@tonussi
Copy link
Author

tonussi commented Jul 9, 2025

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