
RapidKode: Lakukan dengan benar pertama kali
RapidKode adalah paket Python yang menyediakan struktur data yang cepat, fleksibel, dan ekspresif, alogoritma yang dirancang untuk membuat bekerja dengan pemrograman kompetitif dan pengkodean mudah dan intuitif. Ini bertujuan untuk menjadi blok bangunan tingkat tinggi yang mendasar untuk pemrograman kompetitif di Python. Dengan RapidKode Anda dapat melakukan algoritma yang kompleks dalam waktu yang lebih singkat, semua algoritma dioptimalkan ke yang terbaik untuk mengurangi kompleksitas waktu untuk membuat Anda menonjol di papan pemimpin. Tidak ada lagi waktu yang membuang -buang menulis kode besar dan men -debug mereka nanti, dengan RapidKode semuanya terjadi di ujung jari Anda hanya dengan satu baris kode. Tujuan RapidKode adalah untuk membantu pemula memulai dalam pemrograman kompetatif, memahami pentingnya ruang dan ruang. Moto membuat rapidkode adalah 'mendapatkannya dengan benar' alih -alih menghabiskan 10 menit berharga untuk fungsi util.
Instalasi:
atau
Untuk masalah, laporan dan kontribusi bug kunjungi repo pengembangan -> klik di sini
Fungsi yang tersedia:
Fungsi Nomor:
| sintaksis | operasi |
|---|
| number.gen_sparsenum_upto (x) | menghasilkan nomor jarang hingga kisaran yang diberikan |
| number.get_sparsenum_after (n) | Mengembalikan nomor jarang yang berhasil untuk nomor yang diberikan |
| number.checkprime (x) | Mengembalikan true jika angka adalah prima |
| number.getprimes.generate (x) | Mengembalikan bilangan prima x pertama |
| number.getprimes.upto (x) | Mengembalikan bilangan prima hingga rentang yang diberikan |
| number.getprimes.inrange (x, y) | Mengembalikan bilangan prima dalam kisaran yang diberikan |
| number.fib.getElement (x) | Mengembalikan nomor fibonacci ke -x |
| number.fib.generate (x) | Mengembalikan nomor x fibonacci pertama |
Contoh:
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 )
Keluaran:
[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]
Sistem Nomor - Fungsi Konversi:
| Sintaksis | Operasi |
|---|
| konversi (x, 'sys'). to ('new_sys') | Mengubah x dari sys ke sys baru |
| Contoh: | |
| Konversi (9845, 'dec'). to ('bin') | Mengubah 9845 dari desimal ke biner |
| Konversi (3745, 'Oct'). to ('hex') | Mengubah 3745 dari oktal ke heksadesimal |
- Anda dapat mengganti dengan
sys dengan ['bin', 'dec', 'oct', 'hex'] dan new_sys dengan ['bin', 'dec', 'oct', 'hex'], untuk membuat konversi angka.
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 )
Keluaran:
11111011101
7dd
2013
2972
24562
10100101110010
Algoritma pencarian:
| Teknik | Sintaksis | Operasi | Kompleksitas waktu |
|---|
| Pencarian linier | linear.search (arr, x) | Mengembalikan posisi x di arr | Pada) |
| Pencarian biner | Binary.search (arr, x) | Mengembalikan posisi x di arr | O (log n) |
| Lompat pencarian | Jump.Search (arr, x) | Mengembalikan posisi x di arr | O (√ n) |
| Pencarian Interpolasi | interpolation.search (arr, x) | Mengembalikan posisi x di arr | O (log2 (log2 n)) |
| Pencarian Eksponensial | Exponential.Search (arr, x) | Mengembalikan posisi x di arr | O (log2 i) |
| Pencarian Ternary | ternary.search (arr, x) | Mengembalikan posisi x di arr | O (log3 n) |
secara tambahanal Anda dapat menggunakan:
| Fungsi | Operasi |
|---|
| .menunjukkan() | mencetak kode di terminal |
| .info () | Memberikan info singkat |
| .Algo () | mencetak algoritma langkah bijak |
Contoh:
import rapidkode as rk
> >> rk . binary . show ()
> >> rk . binary . info ()
> >> rk . binary . algo ()
Keluaran:
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.
Tiga fungsi .show() , .info() , .algo() dapat digunakan untuk semua 6 teknik pencarian.
Algoritma penyortiran:
| Teknik | Sintaksis | Operasi | Kompleksitas waktu |
|---|
| Jenis seleksi | selection.sort (arr) | Mengurutkan dan mengembalikan array yang diberikan | O (n^2) |
| Sortir Gelembung | Bubble.sort (ARR) | Mengurutkan dan mengembalikan array yang diberikan | O (n^2) |
| Sort Penyisipan | insersion.sort (arr) | Mengurutkan dan mengembalikan array yang diberikan | O (n^2) |
| Gabungan | gabungan.sort (arr) | Mengurutkan dan mengembalikan array yang diberikan | O (n log (n)) |
| Sortir tumpukan | heap.sort (arr) | Mengurutkan dan mengembalikan array yang diberikan | O (n log (n)) |
| Sortir cepat | Quick.sort (Mulai, Akhir, ARR) | Mengurutkan dan mengembalikan array yang diberikan | O (n^2) |
| Hitung Sort | Count.sort (ARR) | Mengurutkan dan mengembalikan array yang diberikan | O (n+k) |
| Radix Sort | radix.sort (arr) | Mengurutkan dan mengembalikan array yang diberikan | O (nk) |
| Sortir ember | bucket.sort (arr) | Mengurutkan dan mengembalikan array yang diberikan | O (n + k) |
| Sortir shell | shell.sort (arr) | Mengurutkan dan mengembalikan array yang diberikan | O (nlog n) |
| Sortir sisir | Comb.Sort (ARR) | Mengurutkan dan mengembalikan array yang diberikan | O (n log n) |
| Sortir Pigeongole | Pigeonhole.sort (ARR) | Mengurutkan dan mengembalikan array yang diberikan | O (n + n) |
| Siklus | Cycle.sort (ARR) | Mengurutkan dan mengembalikan array yang diberikan | O (n2) |
secara tambahanal Anda dapat menggunakan:
| Fungsi | Operasi |
|---|
| .menunjukkan() | mencetak kode di terminal |
| .info () | Memberikan info singkat |
| .Algo () | mencetak algoritma langkah bijak |
Contoh:
import rapidkode as rk
> >> rk . count . show ()
> >> rk . count . info ()
> >> rk . count . algo ()
Keluaran:
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.
Tiga fungsi .show() , .info() , .algo() dapat digunakan untuk semua 13 teknik penyortiran.
Fungsi Grafik:
| Sintaksis | Operasi |
|---|
| .buildedge (u, v) | Buat tepi grafik |
| .buildmultiedge ([]) | Membuat grafik dengan daftar koord |
| .Bfs (x) | Lakukan pencarian pertama yang luas |
| .Dfs (x) | Melakukan pencarian pertama yang mendalam |
| .findap () | Mengembalikan titik artikulasi grafik |
Contoh:
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 ())
Keluaran:
['-->', 2, '-->', 0, '-->', 3, '-->', 1]
['-->', 2, '-->', 0, '-->', 1, '-->', 3]
2
Fungsi Pola:
Fungsi berikut menggunakan algoritma Rabin-karp yang merupakan algoritma yang digunakan untuk pencarian/pencocokan pola dalam teks menggunakan fungsi hash. Tidak seperti algoritma pencocokan string naif, itu tidak melakukan perjalanan melalui setiap karakter dalam fase awal daripada menyaring karakter yang tidak cocok dan kemudian melakukan perbandingan.
| Sintaksis | Operasi |
|---|
| pola.isThere (a) .inn (b) | Mengembalikan true jika string A hadir dalam string b |
| pola.whereis (a) .inn (b) | Mengembalikan posisi indeks string A dalam string b |
Contoh:
import rapidkode as rk
a = 'sasi'
b = 'satyasasivatsal'
print ( rk . isthere ( a ). inn ( b ))
print ( rk . whereis ( a ). inn ( b ))
Keluaran:
Fungsi LinkedList:
| Operasi | Sintaksis |
|---|
| .ins_beg (node) | Menyisipkan simpul baru di awal |
| .ins_end (node) | Menyisipkan simpul baru di akhir |
| .ins_after (pos, node) | Menyisipkan simpul baru setelah node yang ditentukan |
| .ins_before (pos, node) | Menyisipkan simpul baru sebelum node yang ditentukan |
| .del_node (node) | Menghapus simpul yang ditentukan |
| .return_as_list () | Mengembalikan LinkedList sebagai Python List |
Contoh:
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 )
Output:
a -> b -> c -> d -> e -> f -> g -> None
Contoh -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 )
Output:
A -> a -> C -> c -> d -> e -> E -> f -> g -> G -> None
['A', 'a', 'C', 'c', 'd', 'e', 'E', 'f', 'g', 'G', 'None']
Bit manipulasi fuctions:
| Sintaksis | Operasi |
|---|
| bits.toggle_bits (x) | Mengubah bit set dan bit yang tidak ditetapkan |
| bits.convert_to_bin (x) | Mengubah nomor yang diberikan menjadi biner |
| bit.counsetBits (x) | Mengembalikan bit set No.Of dalam nomor DEC |
| bits.rotate_byleft (x, d) | Memutar bit ke kiri pada waktu D |
| bits.rotate_byright (x, d) | Memutar bit ke kiri pada waktu D |
| bit.countflips (x, y) | Mengembalikan No.Of membalik untuk membuat x sebagai y |
Contoh:
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 )
Keluaran:
960632
11010101010010110100
8474306
13978432
54603
7
Fungsi Lain lainnya:
| Sintaksis | Operasi |
|---|
| .showsieves () | Mencetak kode sari untuk menemukan bilangan prima di terminal |
| getprimefactors.fornum (x) | Mengembalikan daftar faktor utama untuk nomor yang diberikan |
| findGcdof (x, y) | Mengembalikan GCD dari angka yang diberikan |
| findInversions.forr (arr) | Mengembalikan seberapa dekat array dengan disortir |
| catlan_numbers.getElement (x) | Mengembalikan nomor Catlan X. |
| catlan_numbers.gen (x) | Mengembalikan daftar x catlan_numbers pertama |
Contoh:
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 )
Keluaran:
[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]
Berkontribusi pada RapidKode
- Semua kontribusi, laporan bug, perbaikan bug, peningkatan dokumentasi, peningkatan, dan ide dipersilakan.
- Mengangkat masalah jika Anda menemukan masalah
- Jika Anda ingin berkontribusi, garpu repo angkat masalah sebelum membuat permintaan tarik, akan mudah untuk mengelola
- Kredit Logo dan Header -> M.Sri Harsha❤️
Selamat Koding Rapid !!