rupython 1.2.11__py3-none-any.whl → 1.2.13__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- rupython/__/342/225/250/320/247/342/225/250/342/226/221/342/225/250/342/224/202/342/225/250/342/225/233/342/225/250/342/225/227/342/225/250/342/225/233/342/225/250/342/226/223/342/225/250/342/225/233/342/225/244/320/227/342/225/250/342/225/234/342/225/244/320/233/342/225/250/342/225/243_/342/225/250/342/225/221/342/225/250/342/225/233/342/225/250/342/224/244__.py +49 -4
- rupython/__/342/225/250/320/256/342/225/250/342/226/222/342/225/244/320/231/342/225/250/342/225/225/342/225/250/342/225/241_/342/225/244/320/224/342/225/244/320/223/342/225/250/342/225/234/342/225/250/342/225/221/342/225/244/320/226/342/225/250/342/225/225/342/225/250/342/225/225__.py +9 -0
- rupython//342/225/250/320/254/342/225/250/342/225/233/342/225/250/342/224/244/342/225/244/320/223/342/225/250/342/225/227/342/225/250/342/225/225//342/225/250/320/240/342/225/244/320/221/342/225/250/342/225/225/342/225/250/342/225/234/342/225/244/320/225/342/225/244/320/220.py +206 -0
- rupython//342/225/250/320/254/342/225/250/342/225/233/342/225/250/342/224/244/342/225/244/320/223/342/225/250/342/225/227/342/225/250/342/225/225//342/225/250/320/241/342/225/250/320/244.py +61 -76
- rupython//342/225/250/320/254/342/225/250/342/225/233/342/225/250/342/224/244/342/225/244/320/223/342/225/250/342/225/227/342/225/250/342/225/225//342/225/250/320/244/342/225/250/342/226/221/342/225/244/320/222/342/225/250/342/226/221/342/225/250/320/242/342/225/244/320/220/342/225/250/342/225/241/342/225/250/342/225/235/342/225/244/320/237.py +222 -209
- rupython//342/225/250/320/254/342/225/250/342/225/233/342/225/250/342/224/244/342/225/244/320/223/342/225/250/342/225/227/342/225/250/342/225/225//342/225/250/320/252/342/225/244/320/223/342/225/244/320/227/342/225/250/342/226/221.py +87 -0
- rupython//342/225/250/320/254/342/225/250/342/225/233/342/225/250/342/224/244/342/225/244/320/223/342/225/250/342/225/227/342/225/250/342/225/225//342/225/250/320/252/342/225/250/342/225/233/342/225/250/342/225/227/342/225/250/342/225/227/342/225/250/342/225/241/342/225/250/342/225/221/342/225/244/320/226/342/225/250/342/225/225/342/225/250/342/225/225.py +529 -396
- rupython//342/225/250/320/254/342/225/250/342/225/233/342/225/250/342/224/244/342/225/244/320/223/342/225/250/342/225/227/342/225/250/342/225/225//342/225/250/320/256/342/225/244/320/227/342/225/250/342/225/241/342/225/244/320/220/342/225/250/342/225/241/342/225/250/342/224/244/342/225/244/320/234.py +177 -0
- rupython//342/225/250/320/254/342/225/250/342/225/233/342/225/250/342/224/244/342/225/244/320/223/342/225/250/342/225/227/342/225/250/342/225/225//342/225/250/320/257/342/225/250/342/225/233/342/225/244/320/222/342/225/250/342/225/233/342/225/250/342/225/221/342/225/250/342/225/225.py +273 -0
- rupython//342/225/250/320/254/342/225/250/342/225/233/342/225/250/342/224/244/342/225/244/320/223/342/225/250/342/225/227/342/225/250/342/225/225//342/225/250/320/260/342/225/250/342/225/241/342/225/250/342/224/202/342/225/250/320/242/342/225/244/320/233/342/225/244/320/220.py +51 -51
- {rupython-1.2.11.dist-info → rupython-1.2.13.dist-info}/METADATA +4 -4
- rupython-1.2.13.dist-info/RECORD +19 -0
- rupython-1.2.11.dist-info/RECORD +0 -15
- {rupython-1.2.11.dist-info → rupython-1.2.13.dist-info}/LICENSE +0 -0
- {rupython-1.2.11.dist-info → rupython-1.2.13.dist-info}/WHEEL +0 -0
- {rupython-1.2.11.dist-info → rupython-1.2.13.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,87 @@
|
|
1
|
+
import heapq
|
2
|
+
from rupython import __Общие_функции__
|
3
|
+
|
4
|
+
# Словарь для перевода параметров
|
5
|
+
Словарь_параметров = {
|
6
|
+
'перебираемое': 'iterable',
|
7
|
+
'ключ': 'key',
|
8
|
+
'количество': 'n',
|
9
|
+
'элемент': 'item'
|
10
|
+
}
|
11
|
+
|
12
|
+
Словарь_склонений = {
|
13
|
+
'элемент': ['элемент', 'элемента', 'элементов']
|
14
|
+
}
|
15
|
+
|
16
|
+
def Склонение_после_числительного(число, слова):
|
17
|
+
return str(число) + ' ' + (
|
18
|
+
слова[2] if число % 100 >= 5 and число % 100 <= 20 else (
|
19
|
+
слова[0] if число % 10 == 1 else (
|
20
|
+
слова[1] if число % 10 >= 2 and число % 10 <= 4 else слова[2]
|
21
|
+
)
|
22
|
+
)
|
23
|
+
)
|
24
|
+
|
25
|
+
class Куча:
|
26
|
+
def __init__(экземпляр, перебираемое=None):
|
27
|
+
экземпляр._heap = list(перебираемое or [])
|
28
|
+
heapq.heapify(экземпляр._heap)
|
29
|
+
|
30
|
+
def Добавить(экземпляр, элемент):
|
31
|
+
heapq.heappush(экземпляр._heap, элемент)
|
32
|
+
|
33
|
+
def Извлечь(экземпляр):
|
34
|
+
if not экземпляр._heap:
|
35
|
+
raise IndexError("Куча пуста")
|
36
|
+
return heapq.heappop(экземпляр._heap)
|
37
|
+
|
38
|
+
def Добавить_и_извлечь(экземпляр, элемент):
|
39
|
+
return heapq.heappushpop(экземпляр._heap, элемент)
|
40
|
+
|
41
|
+
def Заменить(экземпляр, элемент):
|
42
|
+
if not экземпляр._heap:
|
43
|
+
raise IndexError("Куча пуста")
|
44
|
+
return heapq.heapreplace(экземпляр._heap, элемент)
|
45
|
+
|
46
|
+
def Наибольшие(экземпляр, количество, ключ=None):
|
47
|
+
kwargs = {'n': количество}
|
48
|
+
if ключ is not None:
|
49
|
+
kwargs['key'] = ключ
|
50
|
+
return heapq.nlargest(**kwargs, iterable=экземпляр._heap)
|
51
|
+
|
52
|
+
def Наименьшие(экземпляр, количество, ключ=None):
|
53
|
+
kwargs = {'n': количество}
|
54
|
+
if ключ is not None:
|
55
|
+
kwargs['key'] = ключ
|
56
|
+
return heapq.nsmallest(**kwargs, iterable=экземпляр._heap)
|
57
|
+
|
58
|
+
def Размер(экземпляр):
|
59
|
+
return len(экземпляр._heap)
|
60
|
+
|
61
|
+
def Пустая(экземпляр):
|
62
|
+
return len(экземпляр._heap) == 0
|
63
|
+
|
64
|
+
def Получить_список(экземпляр):
|
65
|
+
return list(экземпляр._heap)
|
66
|
+
|
67
|
+
def __len__(экземпляр):
|
68
|
+
return len(экземпляр._heap)
|
69
|
+
|
70
|
+
def __iter__(экземпляр):
|
71
|
+
return iter(экземпляр._heap)
|
72
|
+
|
73
|
+
def __contains__(экземпляр, элемент):
|
74
|
+
return элемент in экземпляр._heap
|
75
|
+
|
76
|
+
def __str__(экземпляр):
|
77
|
+
размер = экземпляр.Размер()
|
78
|
+
return f"Куча с {Склонение_после_числительного(размер, Словарь_склонений['элемент'])}: {экземпляр._heap}"
|
79
|
+
|
80
|
+
def Слить_кучи(*перебираемые, ключ=None):
|
81
|
+
kwargs = {}
|
82
|
+
if ключ is not None:
|
83
|
+
kwargs['key'] = ключ
|
84
|
+
return heapq.merge(*перебираемые, **kwargs)
|
85
|
+
|
86
|
+
def Создать_кучу(перебираемое):
|
87
|
+
return Куча(перебираемое)
|