mirror of
https://github.com/TheAlgorithms/Python.git
synced 2024-11-24 13:31:07 +00:00
commit
ee6e5a42cd
|
@ -13,8 +13,8 @@ def chunker(seq, size):
|
||||||
|
|
||||||
def prepare_input(dirty):
|
def prepare_input(dirty):
|
||||||
"""
|
"""
|
||||||
Prepare the plaintext by uppcasing it
|
Prepare the plaintext by up-casing it
|
||||||
and seperating repeated letters with X's
|
and separating repeated letters with X's
|
||||||
"""
|
"""
|
||||||
|
|
||||||
dirty = ''.join([c.upper() for c in dirty if c in string.ascii_letters])
|
dirty = ''.join([c.upper() for c in dirty if c in string.ascii_letters])
|
||||||
|
@ -38,7 +38,7 @@ def prepare_input(dirty):
|
||||||
|
|
||||||
def generate_table(key):
|
def generate_table(key):
|
||||||
|
|
||||||
# I and J are used interchangably to allow
|
# I and J are used interchangeably to allow
|
||||||
# us to use a 5x5 table (25 letters)
|
# us to use a 5x5 table (25 letters)
|
||||||
alphabet = "ABCDEFGHIKLMNOPQRSTUVWXYZ"
|
alphabet = "ABCDEFGHIKLMNOPQRSTUVWXYZ"
|
||||||
# we're using a list instead of a '2d' array because it makes the math
|
# we're using a list instead of a '2d' array because it makes the math
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
'''
|
"""
|
||||||
A AVL tree
|
An AVL tree
|
||||||
'''
|
"""
|
||||||
from __future__ import print_function
|
from __future__ import print_function
|
||||||
|
|
||||||
|
|
||||||
|
@ -101,10 +101,10 @@ class AVL:
|
||||||
if height_left > height_right:
|
if height_left > height_right:
|
||||||
left_child = n.left
|
left_child = n.left
|
||||||
if left_child is not None:
|
if left_child is not None:
|
||||||
h_right = (right_child.right.height
|
h_right = (left_child.right.height
|
||||||
if (right_child.right is not None) else 0)
|
if (left_child.right is not None) else 0)
|
||||||
h_left = (right_child.left.height
|
h_left = (left_child.left.height
|
||||||
if (right_child.left is not None) else 0)
|
if (left_child.left is not None) else 0)
|
||||||
if (h_left > h_right):
|
if (h_left > h_right):
|
||||||
self.rotate_left(n)
|
self.rotate_left(n)
|
||||||
break
|
break
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Arrays implimentation using python programming.
|
Arrays implementation using python programming.
|
||||||
|
|
|
@ -7,11 +7,11 @@ def printDist(dist, V):
|
||||||
print(i,"\t",int(dist[i]),end = "\t")
|
print(i,"\t",int(dist[i]),end = "\t")
|
||||||
else:
|
else:
|
||||||
print(i,"\t","INF",end="\t")
|
print(i,"\t","INF",end="\t")
|
||||||
print();
|
print()
|
||||||
|
|
||||||
def BellmanFord(graph, V, E, src):
|
def BellmanFord(graph, V, E, src):
|
||||||
mdist=[float('inf') for i in range(V)]
|
mdist=[float('inf') for i in range(V)]
|
||||||
mdist[src] = 0.0;
|
mdist[src] = 0.0
|
||||||
|
|
||||||
for i in range(V-1):
|
for i in range(V-1):
|
||||||
for j in range(V):
|
for j in range(V):
|
||||||
|
@ -35,13 +35,13 @@ def BellmanFord(graph, V, E, src):
|
||||||
|
|
||||||
|
|
||||||
#MAIN
|
#MAIN
|
||||||
V = int(input("Enter number of vertices: "));
|
V = int(input("Enter number of vertices: "))
|
||||||
E = int(input("Enter number of edges: "));
|
E = int(input("Enter number of edges: "))
|
||||||
|
|
||||||
graph = [dict() for j in range(E)]
|
graph = [dict() for j in range(E)]
|
||||||
|
|
||||||
for i in range(V):
|
for i in range(V):
|
||||||
graph[i][i] = 0.0;
|
graph[i][i] = 0.0
|
||||||
|
|
||||||
for i in range(E):
|
for i in range(E):
|
||||||
print("\nEdge ",i+1)
|
print("\nEdge ",i+1)
|
||||||
|
|
|
@ -7,7 +7,7 @@ def printDist(dist, V):
|
||||||
print(i,"\t",int(dist[i]),end = "\t")
|
print(i,"\t",int(dist[i]),end = "\t")
|
||||||
else:
|
else:
|
||||||
print(i,"\t","INF",end="\t")
|
print(i,"\t","INF",end="\t")
|
||||||
print();
|
print()
|
||||||
|
|
||||||
def minDist(mdist, vset, V):
|
def minDist(mdist, vset, V):
|
||||||
minVal = float('inf')
|
minVal = float('inf')
|
||||||
|
@ -25,7 +25,7 @@ def Dijkstra(graph, V, src):
|
||||||
|
|
||||||
for i in range(V-1):
|
for i in range(V-1):
|
||||||
u = minDist(mdist, vset, V)
|
u = minDist(mdist, vset, V)
|
||||||
vset[u] = True;
|
vset[u] = True
|
||||||
|
|
||||||
for v in range(V):
|
for v in range(V):
|
||||||
if (not vset[v]) and graph[u][v]!=float('inf') and mdist[u] + graph[u][v] < mdist[v]:
|
if (not vset[v]) and graph[u][v]!=float('inf') and mdist[u] + graph[u][v] < mdist[v]:
|
||||||
|
@ -38,20 +38,20 @@ def Dijkstra(graph, V, src):
|
||||||
|
|
||||||
|
|
||||||
#MAIN
|
#MAIN
|
||||||
V = int(input("Enter number of vertices: "));
|
V = int(input("Enter number of vertices: "))
|
||||||
E = int(input("Enter number of edges: "));
|
E = int(input("Enter number of edges: "))
|
||||||
|
|
||||||
graph = [[float('inf') for i in range(V)] for j in range(V)]
|
graph = [[float('inf') for i in range(V)] for j in range(V)]
|
||||||
|
|
||||||
for i in range(V):
|
for i in range(V):
|
||||||
graph[i][i] = 0.0;
|
graph[i][i] = 0.0
|
||||||
|
|
||||||
for i in range(E):
|
for i in range(E):
|
||||||
print("\nEdge ",i+1)
|
print("\nEdge ",i+1)
|
||||||
src = int(input("Enter source:"))
|
src = int(input("Enter source:"))
|
||||||
dst = int(input("Enter destination:"))
|
dst = int(input("Enter destination:"))
|
||||||
weight = float(input("Enter weight:"))
|
weight = float(input("Enter weight:"))
|
||||||
graph[src][dst] = weight;
|
graph[src][dst] = weight
|
||||||
|
|
||||||
gsrc = int(input("\nEnter shortest path source:"))
|
gsrc = int(input("\nEnter shortest path source:"))
|
||||||
Dijkstra(graph, V, gsrc)
|
Dijkstra(graph, V, gsrc)
|
||||||
|
|
|
@ -8,7 +8,7 @@ class Graph:
|
||||||
self.dp = [[math.inf for j in range(0,N)] for i in range(0,N)] # dp[i][j] stores minimum distance from i to j
|
self.dp = [[math.inf for j in range(0,N)] for i in range(0,N)] # dp[i][j] stores minimum distance from i to j
|
||||||
|
|
||||||
def addEdge(self, u, v, w):
|
def addEdge(self, u, v, w):
|
||||||
self.dp[u][v] = w;
|
self.dp[u][v] = w
|
||||||
|
|
||||||
def floyd_warshall(self):
|
def floyd_warshall(self):
|
||||||
for k in range(0,self.N):
|
for k in range(0,self.N):
|
||||||
|
|
Loading…
Reference in New Issue
Block a user