Archive

Posts Tagged ‘math’

Python: Kadane’s Algorithm


Learning : Python, Algorithm, Math
Subject: Implement the Kadane’s Algorithm

Definition: Kadane’s Algorithm is to search in a one Dimensional Array [integer positive and negative numbers] for a we will largest Sum of contiguous subarray.

[NOTE: To keep the code as simple as we can, We WILL NOT ADD any user input Varevecations. Assuming that our user will Enter the right inputs.]

Algorithm To find the largest subset sum, we apply coming step:
We will use two variables:
current_max: to hold the max sum of thesub-set
start_again: will be as a flag to re-set the current_max

Algorithm:
1. Start from Element in the array index = 1, save it as start_again. Set Current_max to Array Element in index = 0.

2. Do sumation of start_again with the next element index + 1.

3. If current_max < start_again then re-set current_manx = start_again

4. If start_again < 0 then re-set start_again = 0

5. Repeat from 2 to 4 until the end of the array.

6. If we reach end of the Array, then return the current_max

More from Kadane’s Algorithm:
The aim of Kadane’s Algorithm is to return the Maximum sum of sub-set. But in our code here we will return the following:
1. Maximum sum of largest subset
2. The start Index and the End Index of the subset.
3. printing out the subset.

We will have three options in our application, as following:
1. Kadane’s Algorithm – Fast Run.
2. Kadane’s Algorithm – Step By Step.
9. Exit.

As we are doing in our Algorithms coding, we will use a Main-Menu, and a Function to help the user to enter the Array.

Coding
We will start with def create_array(): and will return the Array that the user will enter. here is the code..

Ali radwani python project code Kadane Algorithm



Now, here is the code for the Main-Menu and the Main application body. In Main application body code, we will use the while True : loop and calling the main_menu() function then with if statement we will check on the user_selection

The Main-Menu
Ali radwani python project code Kadane Algorithm
Here is the Main Application body code..

Ali radwani python project code Kadane Algorithm



Last, we will write the Function to get the Kadane’s Sum in a Fast-Run, the details one will be a copy with mode print-out statement to show the steps .. [All code is in Download Page.]
As we mentioned, Our Kadane’s function will return three things, the Grates Sum of a sub-set, and to position of that sub-set as start index and end index. Here is the code ..

Ali radwani python project code Kadane Algorithm
Here is a Run-Time screen ..

Ali radwani python project code Kadane Algorithm



We done with another Algorithm, looking forwards to solve new one in coming days.

..:: Have Fun with Coding ::.. 🙂


To Download my Python code (.py) files Click-Here



ali radwani ahradwani.com python projects codeFollow me on Twitter..

By: Ali Radwani

Python: Sorting Algorithm.- 4-Selection


Learning : Python coding, Math, Algorithm,
Subject: Writing Selection Sorting Algorithm in Python

[NOTE: To keep the code as simple as we can, We WILL NOT ADD any user input Varevecations. Assuming that our user will Enter the right inputs.]

Sorting Algorithm is a way to sort a given list/Array of numbers, there are several sorting Algorithm as follow:
Type of Sorting Algorithm
1. Quick Sort. [Click to Read the Post.]
2. Bubble Sort. [Click to Read the Post.]
3. Merge Sort. [Click to Read the Post.]
4. Insertion Sort. [Click to Read the Post.]
5. Selection Sort. [Click to Read the Post.]
6. Heap Sort. [Click to Read the Post.]
7. Radix Sort. [Click to Read the Post.]
8. Bucket Sort. [Click to Read the Post.]

Here in this post we will write a function to take a given list and sort it then pass it back. We assume the user will enter a serial of numbers, that he want to sort, our function will sort it using Selection Sorting Algorithm and print out the original numbers and the sorted one.

Selection Sort Algorithm: In Selection Sort, we will apply coming Steps:
1. Select the Element (e) in Index i = 0.
2. Find the Smallest Element in the Array from Index i Until index = length of Array.
3. SWAP the Smallest number in the Array with the Element (e) in index i=0.
4. Select the Element (e) in index i = i+1.
5. Repeat the Algorithm from step 2, until i+1 > length of the Array.

In our Application we will have three Functions, one to collect the Array numbers from the user. [This is the main function in all our sort applications] here is the code

ali radwani ahradwani.com python project code selection sorting algorithm


We are calling this Function within the Main Selection Sort Function.
Now we will write the Selection Sort Function .

 # Selection Sorting Function

def selection_sort(arr):    
    
    for i in range (0,len(arr)):
        e = arr[i]
        s_ind = i
        for j in range (i,len(arr)):
            if arr[j] < e :
                e = arr[j]
                s_ind = j
        
        arr[i], arr[s_ind] = arr[s_ind], arr[i]        
    
    return arr       



We will have a copy of same Function with some print-statement to show the iterations and elements in each steps. Here is the code ..

ali radwani ahradwani.com python project code selection sorting algorithm

Here is screen shot of only three iteration of the Algorithm run-time..

ali radwani ahradwani.com python project code selection sorting algorithm


We Done !! .. Another coding for Sorting Algorithms, New one will be published in coming days..

… Have fun with Coding … 🙂

To Download my Python code (.py) files Click-Here



ali radwani ahradwani.com python projects codeFollow me on Twitter..

By: Ali Radwani

Python: Sorting Algoritm – Bubble Sort

June 1, 2021 3 comments

Learning : Python, Math, Algorithm
Subject: Sorting Algoritm – Bubble Sort

[NOTE: To keep the code as simple as we can, We WILL NOT ADD any user input Varevecations. Assuming that our user will Enter the right inputs.]

Sorting Algorithm is a way to sort a given list of numbers, there are several sorting Algorithm as follow:
Type of Sorting Algorithm
Quick Sort. [Click to Read]
Bubble Sort.
Merge Sort. [Commeing Soon]
Insertion Sort. [Commeing Soon]
Selection Sort. [Commeing Soon]
Heap Sort. [Commeing Soon]
Radix Sort. [Commeing Soon]
Bucket Sort. [Commeing Soon]

Here in this post we will write a function to take a given list and sort it then pass it back. We assume the user will enter a serial of numbers, that he want to sort, our function will sort it and print out the original numbers and the sorted one.

Bubble Sort: Steps of Bubble Sorting Algorithm are:
1. We will select the First Number (Current number) in the list and Compare it with the next number in the list. (Compare list[0] and list[1])

2. If the Next Number in the list IS SMALLER than Current Number SWAP the Two, then compare the Current with the third number and so on.

2.2 If the Next Number in the list IS NOT SMALLER than Current Number, Then we LEFT the Current Number in it’s Position and will Set the Next number as the Current. And will start Comparing Again as Step 2 until the last number in the list.

3. When we reach the end of the list and we perform a SWAP, then we start again with First Element as STEP 1.

4. If we reach the end of the list Without any SWAP being made, then the list is ordered and the algorithm can stop.

Coding Starting with the Main Menu Function and a Function to ask the
User to enter the numbers in the list, here are those two Functions.

python code bubble sorting algorithm project by Ali Radwani doha qatar



And here is the Main code that will call the Menu and trigger the Functions based on the User selecting.

python code bubble sorting algorithm project by Ali Radwani doha qatar



Also we have the Function that will ask the user to Enter the Numbers for the List or Array to be sort.
All the code will be Available as a .py file in the Download Page [Click Here]

Now let’s see the code for Bubble Sorting Algorithm, we will have two version of the code, one for Fast-Run that takes the list and return it back as Sorted, and another one will be to show the Details Step By Step of applying the Algorithm. Both Functions are the same but the details one will have several print statements to show the steps, here I am posting the Fast-Run version.


Run Screen..




End of Bubble Sort Algorithm, hope you enjoy it.


.. Have Fun With Coding ..

To Download my Python code (.py) files Click-Here


Follow me on Twitter..

By: Ali Radwani

Python Project: Disarium Number

April 4, 2021 1 comment


Learning : Python to solve Mathematics Problems
Subject: Disarium Number

In Mathematics there are some formulas or let say rules that generate a sequence of given a certen result, and accordingly we gave that number or that sequence a name, such as even numbers, odd numbers, prime numbers and so on.

Here in this post we will talk about the Disarium Number and will write a code to check if a given number Disarium or Not.
Defenition: A Number is a Disarium if the Sum of its digits powered with their respective position is equal to the original number. Example: If we have 25 as a Number we will say: if (2^1 + 5^2) = 25 then 25 is Disarium.
So: 2^1 = 2, 5^2 = 25, 2+25 = 27; 25 NOT Equal to 27 then 25 is NOT Disarium.

Let’s take n = 175:
1^1 = 1
7^2 = 49
5^3 = 125
(1 + 49 + 125) = 175 thats EQUAL to n so 175 is a Disarium Number.

In the bellow code, we will write a function to take a number from the user the check if it is a Disarium Number or not. In this function we will print out the calculation on the screen. Let’s start by writing the function

# is_disarium function.
def is_disarium(num) :
"""
Project Name: Disarium Number
By: Ali Radwani
Date: 2.4.2021
"""


the_sum = []
l = len(num)
for x in range (0,l):
print(num[x] , '^',x+1,'=', (int(num[x])**(x+1)))
the_sum.append((int(num[x])**(x+1)))

if int(num) == sum(the_sum) :
print ("\n The sum is {}, and the original Number is {} So {} is a Disarium Number.".format(sum(the_sum),num,num))
else:
print ('\n The sum is {}, and the original Number is {} So it is NOT Disarium.'.format(sum(the_sum),num))


num = input('\n Enter a Number to check if it is Disarium. > ')

# Call the function and pass the num.
is_disarium(num)
ali radwani python project learning sql codeing

To Download my Python code (.py) files Click-Here


Follow me on Twitter..


By: Ali Radwani

Python: Drawing Math Equations



Learning : Python and Math
Subject: Python Project to Draw a Math Equations

In the past week or so I saw a tweet from @matthen2 it was about drawing half circles on 99 points, the 99 points was distributed on a hidden circle, each line (or half circle) connecting x (a point on the circle) and it’s double, so point num 2 is connected to P num 4; (P3 to P6, P4 to P8, …) and so-on

This inspired me to write a Python app (code) to perform same action. Then I just upgrade the idea to draw any mathematical Equation. (Lets say simple mathematical Equations)

In our project, the user will enter the number of points and the starting circle radius, also I fond that we can do more by reducing the circle radius after each point, so i add this to the project.

Coding: We will write a function to collect the points in a list as [x,y], and returns the list. Then we pass each two points of (x1,y1) and (x2,y2) to another Function to draw a line between those points. In this version we will write the Equations as hard-code in our project.

So First Function will be the get_points() here the systems will ask the user to Enter some variables. We will collect the number of points P, the raidus of the circle circumference that points will be distributed On it’s, also we will ask the user if circle radius is fixed or decreased by a given factor.
Using mathematics we know that a circle has 360degree, so if we divide 360 over P we will have (if we can call it) the arc_angle. .. Here is the code for the function …

# Function to collect the x,y points

def get_points() :
  p = int(input('  Enter number of Points:  ')) # number of points.

  arc_angle = 360 / p
  circle_r = int(input('  Enter the Cricle Radius: ') )  
  fix_r = int(input('  Enter a number to reduce the Radius:'))
  
  #To return the x,y list of the points that we want to connect. 
  p_list = []
  t.goto(0,0)
  t.setheading(-90)
  
  for p in range (0,p+1) :

    t.goto(0,0)
    t.forward(circle_r)
    nx = t.xcor()
    ny = t.ycor()
  
     # If the user want to reduce the radius.
    circle_r = circle_r - fix_r
    p_list.append([nx,ny])
    t.right(-arc_angle)

  return p_list



By now, we have a list of points [x,y], and we will passing two points to another function def draw_line(x1, y1, x2, y2): to draw a line between the points. Very simple and easy Function …

# Function to draw a line

def draw_line(x1, y1, x2, y2):
  
  t.goto(x1,y1)
  t.pendown()
  t.goto(x2,y2)
  t.penup()


Now the tricky part, How to select the points?. To do this we assume we have an Equation (e1) and if we got any errors like (division by zero, or out of index) we will apply another Equation (e2), e1 and e2 will be hard-coded and each time we need to change it and run the application again to see the result. And to draw a line between the points based on e1 and e2 we will run a for loop …. Here is the code ..

# drawing the equations 

 

for d in range(len(p_list)-1) :
  
  e1 = d * 2
  e2 =  abs( len(p_list) - (d*2))

  try:
    draw_line(p_list[d][0], p_list[d][1],p_list[e1][0], p_list[e1][1])
  except:
    if e1 > len(p_list) :
      draw_line(p_list[d][0], p_list[d][1],p_list[e2][0], p_list[e2][1])


Here is some output




This is the end of this project, Do we need any upgrading in any part of it?



To Download my Python code (.py) files Click-Here




Follow me on Twitter..




By: Ali Radwani




Python : Triangle Parameters



Learning : Python to Draw a Triangle
Subject: To get the Parameters of a Triangle

A week ago I start helping a friend in a mathematics geometric to draw a Triangle from Two points that represent the The Hypotenuse of a Triangle, then I deside to write a python project to Draw a triangle based on two given points (x1,y1) and (x2,y2) and to print it’s parameter (other sides and angles). We will use the Trinket.io as a Python interrapter and will draw with turtle library.

Project Details: The system will ask the user to Enter the coordinates of Two points To draw a Right Angle Triangle. In our Triangle, we will call the (x1,y1) as Point A, and (x2,y2) as Point C. From our starting poins we can calculate the distance between point A and point (B), also the length of Hypotenuse and the angels in the Triangle.

So, What we have:

tri_opposite = abs( y2 – y1 )

tri_adjacent = abs( x2 – x1 )

From a mathimatics triangle formula we know that:

Opposite^2 + Adjacent^2 = Hypotenuse^2

where: x^2 = square(x)

So:

tri_hypo = tri_opposite**2 + tri_adjacent**2

tri_hypo = math.sqrt(tri_hypo)

tri_hypo is the distance between point A and Point C (the opposite
side of the right angle)

Now the Angels:
As we know that in a triangle the summation on all inside angles is 180deg, and in a Right Triangle we will have a one fixed 90 degree angle (ABC), so the first thing we will work on calculating the Opposite angle (BAC).

From a Triangle math:

tri_opposite = abs( y2 – y1)

tri_adjacent = abs(x2 -x1)

the_deg (BAC) = inverse tan for (tri_opposite / tri_adjacent)

# get the inverse of Tan

the_ang = math.degrees(math.atan(the_deg))

Now, lets do some coding ..

First thing we will import two libraries turtle and math, also we will do some setting for our turtle. … Here is the code ..

# Turtle setting


import turtle, math
# turtle_setting 
t = turtle.Turtle()
t.penup() 
t.shape("non")
#t.speed(9)
t.speed('fastes')
#t.visible = False

t.hideturtle()



Then we will write a code to draw a ‘Gray’ coordinates cross lines for our project. Here is the code for it ..



def the_cross() :
     # To draw the cross represents the coordinate.
    t.penup()
    t.pencolor('gray') 
    t.goto(-200,0)
    t.setheading(0)
    t.pendown()
    t.forward(400)
    t.penup()
    t.goto(0,200)
    t.setheading(90)
    t.pendown()
    t.forward(-400)
    t.penup()
    t.goto(2,0)
    t.pendown()
    t.circle(2)
    t.penup()
    t.goto(0,0)
    t.setheading(0)

# calling the function 
the_cross() 


Now we will write the main function code, First we will ask the user to enter the x,y for two points, then we will do our calculations to get other Triangle parameters and angles, finally we will draw the Triangle. .. Here is the code..



def draw_triangle(x1, y1, x2, y2) :

# draw the Triangle. 
    style = ('Courier', 20)   # font style.
    t.penup()
    t.goto(x1,y1)
    t.setheading(0)
    t.pendown()
    t.circle(1)  # To draw small circle on point A.
    t.write('A',font = style)  # To write A next to the point.
    t.forward((x2-x1))
    x3 = t.xcor() # here is the x for point B
    y3 = t.ycor() # here is the y for point B

    t.right(-90)
    t.forward((y2-y1))
    t.write('C',font = style)  # To write C next to the point.
    t.goto(x2,y2)
    t.setheading(0)
    t.pendown()
    t.circle(1)  # To draw small circle on point C.
    t.penup()
    t.goto(x3,y3)
    t.pendown()
    t.circle(1)  # To draw small circle on point B.
    t.penup()
    t.setpos(x3-15,y3-15)
    t.write('B',font = style)  # To write B next to the point.


    # To calculate the angle of BAC using Triangle Math Equations. 
    tri_opposite = abs( y2 - y1)
    tri_adjacent = abs(x2 -x1)
    the_deg = tri_opposite /  tri_adjacent

    # get the inverse ot Tan using Triangle Math Equations.  
    the_ang = math.degrees(math.atan(the_deg)) #atan(x) is the inverse of math Tan function.

    t.goto(x1,y1)

    # To correct the rotation angle based on it's coordinates.
    if (x1 > x3) and (y2 > y1) :
      rotation = the_ang - 180

    elif (x1  y1):
      rotation =  360 - the_ang

    elif (x1 > x3) and  (y2 < y1) :
      rotation =  180 - the_ang

    elif (x1 < x3) and  (y2 < y1) :
      rotation =   the_ang - 360

    #t.right(rotation)
    #t.pendown()
# From using Triangle Math Equations, we know that Hypotenuse^2 = Opposite^2 + adjacent^2.  
    
    tri_hypo = tri_opposite**2 + tri_adjacent**2
    tri_hypo = math.sqrt(tri_hypo)
    t.right(rotation)
    t.pendown()
    t.forward(tri_hypo)
    t.penup()

    print('\n  The Triangle Information:')
    print('  Point A= ({},{})'.format(x1,y1))
    print('  Point B= ({},{})'.format(x3,y3))
    print('  Point C= ({},{})'.format(x2,y2))
    print('  Adjacent',tri_adjacent)
    print('  Opposite',tri_opposite)
    print('  Hypotenuse',tri_hypo)
    print('  Angle: ABC = 90')
    print('  Angle: BAC = ',the_ang)
    print('  Angle: ACB = ',180 - the_ang - 90)


Finally, we need to call the function and pass the two point to it, to do this first we will ask the user to Enter the Two Points and we will make sure that the points are not the same.. Here is the code ..

# calling the draw_triangle function ..
 
print('\n   To draw the Triangle you need to Enter Two Points as X,Y for each one.')
x1 = int(input('   Enter x for First point: '))
y1 = int(input('   Enter y for First point: ')) 
x2 = int(input('   Enter x for Second point: '))
y2 = int(input('   Enter y for Second point: ')) 
 
if (x2==x1) or (y2==y1) : 
   print('  Your Points are not valid, (x1,x2) or (y1,y2) can't be equal ')
else :
   draw_triangle(x1, y1, x2, y2)




To Download my Python code (.py) files Click-Here




Follow me on Twitter..




By: Ali Radwani




Python: The Factors

April 22, 2019 Leave a comment



Python: Factors of the Number N


This is a short task to get the factors of a given number. The Definition of Factors of N is: The pairs of numbers you multiply to get the N number.

For instance, factors of 15 are 3 and 5, because 3×5 = 15. Some numbers have more than one factorization (more than one way of being factored). For instance, 12 can be factored as 1×12, 2×6, or 3×4


In this task we will write a Python code to ask the user for a number N then will get all the pairs number that if we multiply them will get that N number, we will store the pairs in a array ‘factors’.



The Code:



def factors_of_n(num):

a=1

factors=[]

while a <= num:

if num%a==0:

if (num/a,a) not in factors:

factors.append((a,int(num/a)))

a = a + 1

return factors
#Ask the user for a number
num=int(input(“Enter a number: “))
print(factors_of_n(num))





Follow me on Twitter..