
Rapidkode: сделай это правильно в первый раз
Rapidkode - это пакет Python, который обеспечивает быстрые, гибкие и выразительные структуры данных, алогоритмы, предназначенные для работы как с конкурентным программированием, так и с кодированием простым и интуитивно понятным. Он направлен на то, чтобы стать фундаментальным строительным блоком высокого уровня для конкурентного программирования в Python. С Rapidkode вы можете выполнять сложные алгоритмы за меньшее время, все алгоритмы оптимизированы на свои лучшие результаты, чтобы уменьшить сложность времени, чтобы вы выделяли в лидере. Больше нет времени, потратив на писать огромные патроны кода и отлаживая их позже, с Rapidkode, все происходит у вас под рукой с одной линией кода. Цель Rapidkode - помочь начинающим начать конкурирующую программирование, понять важность времени и пространства. Девиз изготовления Rapidkode - это «сделать это правильно с первого раза» вместо того, чтобы тратить 10 драгоценных минут на функции UTIL.
Установка:
или
Для проблем, отчеты об ошибках и взносы посетите разработку репо -> Нажмите здесь
Доступные функции:
Номерные функции:
| синтаксис | операция |
|---|
| numbers.gen_sparsenum_upto (x) | генерирует разреженное число до данного диапазона |
| numbers.get_sparsenum_after (n) | Возвращает скучный редкий номер для данного номера |
| numbers.checkprime (x) | Возвращает True, если номер является ярким |
| numbers.getPrimes.generate (x) | Возвращает первые x prime числа |
| numbers.getPrimes.upto (x) | Возвращает основные числа до дачи диапазона |
| numbers.getprimes.inrange (x, y) | Возвращает основные цифры в данном диапазоне |
| numbers.fib.getElement (x) | Возвращает x'th fibonacci номер |
| numbers.fib.generate (x) | Возвращает первые X Fibonacci номера |
Пример:
import rapidkode as rk
var = rk . numbers . gen_sparsenum_upto ( 100 )
print ( var )
var = rk . numbers . get_sparsenum_after ( 3289 )
print ( var )
var = rk . numbers . checkprime ( 8364 )
print ( var )
var = rk . numbers . getprimes . generate ( 100 )
print ( var )
var = rk . numbers . getprimes . inrange ( 100 , 500 )
print ( var )
var = rk . numbers . fib . getelement ( 58 )
print ( var )
var = rk . numbers . fib . generate ( 25 )
print ( var )
Выход:
[0, 1, 2, 4, 5, 8, 9, 10, 16, 17, 18, 20, 21, 32, 33, 34, 36, 37, 40, 41, 42, 64, 65, 66, 68, 69, 72, 73, 74, 80, 81, 82, 84, 85, 128]
4096
False
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541]
[101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499]
365435296162
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368]
Система номеров - Функции преобразования:
| Синтаксис | Операция |
|---|
| конвертировать (x, 'sys'). to ('new_sys') | Преобразует X из Sys в новые Sys |
| Пример: | |
| преобразовать (9845, «dec»). В ('bin') | Конвертирует 9845 из десятичного в бинар |
| преобразовать (3745, «окт»). | Конвертирует 3745 из восьми в шестнадцатеричную |
- Вы можете заменить
sys на ['bin', 'dec', 'oct', ’hex '] и new_sys с [' bin ',' dec ',' oct ',’ hex'], чтобы сделать конверсии номеров.
import rapidkode as rk
converted_num_1 = rk . convert ( 2013 , 'dec' ). to ( 'bin' )
print ( converted_num_1 )
converted_num_2 = rk . convert ( 11111011101 , 'bin' ). to ( 'hex' )
print ( converted_num_2 )
converted_num_3 = rk . convert ( '7dd' , 'hex' ). to ( 'dec' )
print ( converted_num_3 )
converted_num_4 = rk . convert ( 5634 , 'oct' ). to ( 'dec' )
print ( converted_num_4 )
converted_num_5 = rk . convert ( 2972 , 'hex' ). to ( 'oct' )
print ( converted_num_5 )
converted_num_6 = rk . convert ( 24562 , 'oct' ). to ( 'bin' )
print ( converted_num_6 )
Выход:
11111011101
7dd
2013
2972
24562
10100101110010
Поиск алгоритмов:
| Техника | Синтаксис | Операция | Временная сложность |
|---|
| Линейный поиск | linear.search (arr, x) | Возвращает позицию X в Arr | На) |
| Бинарный поиск | Binary.Search (Arr, x) | Возвращает позицию X в Arr | O (log n) |
| Прыгать поиск | jump.search (arr, x) | Возвращает позицию X в Arr | O (√ n) |
| Поиск интерполяции | interpolation.search (arr, x) | Возвращает позицию X в Arr | O (log2 (log2 n)) |
| Экспоненциальный поиск | exponiental.search (arr, x) | Возвращает позицию X в Arr | O (log2 i) |
| Тройной поиск | ternary.search (arr, x) | Возвращает позицию X в Arr | O (log3 n) |
Additonally вы можете использовать:
| Функция | Операция |
|---|
| .показывать() | печатает код в терминале |
| .информация() | Дает краткую информацию |
| .algo () | Отпечатает шаг -мудрый алгоритм |
Пример:
import rapidkode as rk
> >> rk . binary . show ()
> >> rk . binary . info ()
> >> rk . binary . algo ()
Выход:
def binarysearch ( arr , x ):
l = 0
r = len ( arr ) - 1
while l <= r :
mid = l + ( r - l ) // 2
if arr [ mid ] == x :
return mid
elif arr [ mid ] < x :
l = mid + 1
else :
r = mid - 1
return "element not found"
Binary search is the search technique that works efficiently on sorted lists
. Hence, to search an element into some list using the binary search technique, we must ensure that the list is sorted
. Binary search follows the divide and conquer approach in which the list is divided into two halves, and the item is compared with the middle element of the list
. If the match is found then, the location of the middle element is returned
. Otherwise, we search into either of the halves depending upon the result produced through the match
Algorithm
Step 1 - Read the search element from the user.
Step 2 - Find the middle element in the sorted list.
Step 3 - Compare the search element with the middle element in the sorted list.
Step 4 - If both are matched, then display "Given element is found!!!" and terminate the function.
Step 5 - If both are not matched, then check whether the search element is smaller or larger than the middle element.
Step 6 - If the search element is smaller than middle element, repeat steps 2, 3, 4 and 5 for the left sublist of the middle element.
Step 7 - If the search element is larger than middle element, repeat steps 2, 3, 4 and 5 for the right sublist of the middle element.
Step 8 - Repeat the same process until we find the search element in the list or until sublist contains only one element.
Step 9 - If that element also doesn't match with the search element, then display "Element is not found in the list!!!" and terminate the function.
Три функции .show() , .info() , .algo() могут использоваться для всех 6 методов поиска.
Алгоритмы сортировки:
| Техника | Синтаксис | Операция | Временная сложность |
|---|
| Выбор сортировки | Selection.sort (arr) | Сортирует и возвращает заданный массив | O (n^2) |
| Пузырьковые сортировки | bubble.sort (arr) | Сортирует и возвращает заданный массив | O (n^2) |
| Вставка сортировки | insertion.sort (arr) | Сортирует и возвращает заданный массив | O (n^2) |
| Слияние сортировки | merge.sort (arr) | Сортирует и возвращает заданный массив | O (n log (n)) |
| Куча сортировки | Heap.sort (Arr) | Сортирует и возвращает заданный массив | O (n log (n)) |
| Быстрый сортировка | Quick.sort (Start, End, Arr) | Сортирует и возвращает заданный массив | O (n^2) |
| Считайте сортировку | count.sort (arr) | Сортирует и возвращает заданный массив | O (n+k) |
| Radix Sort | radix.sort (arr) | Сортирует и возвращает заданный массив | O (NK) |
| Ведро сортировка | Bucket.sort (arr) | Сортирует и возвращает заданный массив | O (n + k) |
| Shell Sort | Shell.sort (Arr) | Сортирует и возвращает заданный массив | O (nlog n) |
| Сортировка расчески | Comb.Sort (Arr) | Сортирует и возвращает заданный массив | O (n log n) |
| Голубь сортировка | Pigeonhole.sort (arr) | Сортирует и возвращает заданный массив | O (n + n) |
| Цикл | Cycle.sort (arr) | Сортирует и возвращает заданный массив | O (N2) |
Additonally вы можете использовать:
| Функция | Операция |
|---|
| .показывать() | печатает код в терминале |
| .информация() | Дает краткую информацию |
| .algo () | Отпечатает шаг -мудрый алгоритм |
Пример:
import rapidkode as rk
> >> rk . count . show ()
> >> rk . count . info ()
> >> rk . count . algo ()
Выход:
def countsort ( arr ):
output = [ 0 for i in range ( len ( arr ))]
count = [ 0 for i in range ( 256 )]
array = [ 0 for _ in arr ]
for i in arr :
count [ i ] += 1
for i in range ( 256 ):
count [ i ] += count [ i - 1 ]
for i in range ( len ( arr )):
output [ count [ arr [ i ]] - 1 ] = arr [ i ]
count [ arr [ i ]] -= 1
for i in range ( len ( arr )):
array [ i ] = output [ i ]
return array Counting sort is a sorting algorithm that sorts the elements of an array by counting the number of occurrences of each unique element in the array
. The count is stored in an auxiliary array and the sorting is done by mapping the count as an index of the auxiliary array
. Counting sort is a sorting technique based on keys between a specific range
. It works by counting the number of objects having distinct key values (kind of hashing)
. Then doing some arithmetic to calculate the position of each object in the output sequence
Algorithm
step 1 - Find out the maximum element (let it be max) from the given array.
step 2 - Initialize an array of length max+1 with all elements 0.
This array is used for storing the count of the elements in the array.
step 3 - Store the count of each element at their respective index in count array
For example: if the count of element 3 is 2 then, 2 is stored in the 3rd position of count array.
If element "5" is not present in the array, then 0 is stored in 5th position.
step 4 - Store cumulative sum of the elements of the count array.
It helps in placing the elements into the correct index of the sorted array.
step 5 - Find the index of each element of the original array in the count array.
This gives the cumulative count. Place the element at the index calculated as shown in figure below.
step 6 - After placing each element at its correct position, decrease its count by one.
Три функции .show() , .info() , .algo() могут использоваться для всех 13 методов сортировки.
Функции графика:
| Синтаксис | Операция |
|---|
| .buildEdge (u, v) | Создать край графика |
| .buildmultiedge ([]) | Создает график с данным списком координат |
| .Bfs (x) | Выполните первый поиск в ширине |
| .Dfs (x) | Выполняет глубину первого поиска |
| .findap () | Возвращает точку артикуляции графика |
Пример:
import rapidkode as rk
# make graph object with graph() class
my_graph = rk . graph ()
# adding one edge at a time
my_graph . buildedge ( 0 , 1 )
my_graph . buildedge ( 0 , 2 )
my_graph . buildedge ( 1 , 2 )
my_graph . buildedge ( 2 , 0 )
my_graph . buildedge ( 2 , 3 )
my_graph . buildedge ( 3 , 3 )
import rapidkode as rk
# make graph object with graph() class
my_graph = rk . graph ()
# adding multiple edges at once
my_graph . buildmultiedge ([ 0 , 1 , 0 , 2 , 1 , 2 , 2 , 0 , 2 , 3 , 3 , 3 ])
import rapidkode as rk
# make graph object with graph() class
my_graph = rk . graph ()
my_graph . buildmultiedge ([ 0 , 1 , 0 , 2 , 1 , 2 , 2 , 0 , 2 , 3 , 3 , 3 ])
# performing BFS from edge 2
print ( my_graph . BFS ( 2 ))
# performing DFS from edge 2
print ( my_graph . DFS ( 2 ))
# finding the Articulation Point
print ( my_graph . findAP ())
Выход:
['-->', 2, '-->', 0, '-->', 3, '-->', 1]
['-->', 2, '-->', 0, '-->', 1, '-->', 3]
2
Функции шаблона:
В следующей функции используется алгоритм Rabin-KARP, который представляет собой алгоритм, используемый для поиска/сопоставления в тексте с использованием хэш-функции. В отличие от алгоритма соответствия наивного строки, он не проходит через каждого символа на начальной фазе, а скорее он фильтрует символы, которые не совпадают, а затем выполняет сравнение.
| Синтаксис | Операция |
|---|
| Pattern.ishere (a) .inn (b) | Возвращает true, если строка A присутствует в строке B |
| Pattern.whereis (a) .inn (b) | Возвращает позицию индекса строки A в строке B |
Пример:
import rapidkode as rk
a = 'sasi'
b = 'satyasasivatsal'
print ( rk . isthere ( a ). inn ( b ))
print ( rk . whereis ( a ). inn ( b ))
Выход:
Функции LinkedList:
| Операция | Синтаксис |
|---|
| .ins_beg (узел) | Вставляет новый узел в начале |
| .INS_END (Узел) | Встает новый узел в конце |
| .INS_AFTER (POS, NODE) | Встает новый узел после указанного узла |
| .INS_BEFOR (POS, Узел) | Вставка нового узла перед указанным узлом |
| .del_node (узел) | Удаляет указанный узел |
| .return_as_list () | Возвращает LinkedList в качестве списка Python |
Пример:
import rapidkode as rk
my_list = rk . linkedlist ()
my_list . head = rk . node ( 'a' )
s1 = rk . node ( 'b' )
s2 = rk . node ( 'c' )
s3 = rk . node ( 'd' )
s4 = rk . node ( 'e' )
s5 = rk . node ( 'f' )
s6 = rk . node ( 'g' )
my_list . head . next = s1
s1 . next = s2
s2 . next = s3
s3 . next = s4
s4 . next = s5
s5 . next = s6
print ( my_list )
Выход :
a -> b -> c -> d -> e -> f -> g -> None
Пример -2:
# insertion at beginning
my_list . ins_beg ( rk . node ( 'A' ))
# insertion at end
my_list . ins_end ( rk . node ( 'G' ))
# insertion at positiom
my_list . ins_after ( 'e' , rk . node ( 'E' ))
# insertion at position
my_list . ins_before ( 'c' , rk . node ( 'C' ))
# deletion of ndoe
my_list . del_node ( 'b' )
# returning as list
my_listt = my_list . return_as_list ()
print ( my_list )
print ( my_listt )
Выход :
A -> a -> C -> c -> d -> e -> E -> f -> g -> G -> None
['A', 'a', 'C', 'c', 'd', 'e', 'E', 'f', 'g', 'G', 'None']
Бит манипуляции фьюанс:
| Синтаксис | Операция |
|---|
| bits.toggle_bits (x) | Переключает установленные биты и не установленные биты |
| bits.convert_to_bin (x) | Преобразует заданное число в двоичный |
| bits.counsetbits (x) | Возвращает номера набора на номере декабря |
| bits.rotate_byleft (x, d) | Вращает биты слева от D Times |
| bits.rotate_byright (x, d) | Вращает биты слева от D Times |
| bits.countflips (x, y) | Возвращает номера Flips, чтобы сделать x как y |
Пример:
import rapidkode as rk
var = rk . bits . toggle_bits ( 873652 )
print ( var )
var = rk . bits . convert_to_bin ( 873652 )
print ( var )
var = rk . bits . countsetbits ( 873652 )
print ( var )
var = rk . bits . rotate_byleft ( 873652 , 4 )
print ( var )
var = rk . bits . rotate_byright ( 873652 , 4 )
print ( var )
var = rk . bits . countflips ( 8934756 , 873652 )
print ( var )
Выход:
960632
11010101010010110100
8474306
13978432
54603
7
Другие функции MISC:
| Синтаксис | Операция |
|---|
| .showsieves () | Отпечатает код сидов для поиска основного числа в терминале |
| getPrimeFactors.fornum (x) | Возвращает список основных факторов для данного числа |
| findgcdof (x, y) | Возвращает GCD заданных чисел |
| Findinginversions.forr (Arr) | Возвращает, насколько близко массив от отсортированного |
| catlan_numbers.getElement (x) | Возвращает номер X'th Catlan |
| catlan_numbers.gen (x) | Возвращает список первых x catlan_numbers |
Пример:
import rapidkode as rk
var = rk . getprimefactors . fornum ( 6754 )
print ( var )
var = rk . findgcdof ( 97345435 , 8764897 )
print ( var )
var = rk . findinversions . forr ([ 1 , 20 , 6 , 4 , 5 ])
print ( var )
var = rk . catlan_numbers . getelement ( 15 )
print ( var )
var = rk . catlan_numbers . gen ( 28 )
print ( var )
Выход:
[2, 11, 307.0]
1
5
9694845.0
[1.0, 1.0, 2.0, 5.0, 14.0, 42.0, 132.0, 429.0, 1430.0, 4862.0, 16796.0, 58786.0, 208012.0, 742900.0, 2674440.0, 9694845.0, 35357670.0, 129644790.0, 477638700.0, 1767263190.0, 6564120420.0, 24466267020.0, 91482563640.0, 343059613650.0, 1289904147324.0, 4861946401452.0, 18367353072152.0, 69533550916004.0]
Вклад в Rapidkode
- Все вклады, отчеты об ошибках, исправления ошибок, улучшения документации, усовершенствования и идеи приветствуются.
- Поднимите проблему, если вы найдете какую -либо проблему
- Если вам нравится вносить свой вклад, разобрать репо поднимает проблему перед тем, как сделать запрос на привлечение, это будет легко для управления
- Кредиты логотипа и заголовка -> М. Сри Харша❤
Счастливого быстрого кодинга !!