Skip to content

chandra2117/Solve-Cryptarithmetic-Problem-a-CSP-Constraint-Satisfaction-Problem-using-Python

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 

Repository files navigation

Solve-Cryptarithmetic-Problem-a-CSP-Constraint-Satisfaction-Problem-using-Python

Name: CHANDRAPRIYADHARSHINI C

Register Number: 212223240019

Aim:

To solve Cryptarithmetic Problem,a CSP(Constraint Satisfaction Problem) using Python

Procedure:

Input and Output Input: This algorithm will take three words. B A S E B A L L

G A M E S Output: It will show which letter holds which number from 0 – 9. For this case it is like this.

      B A S E                         2 4 6 1
      B A L L                         2 4 5 5
     ---------                       ---------
    G A M E S                       0 4 9 1 6

Algorithm For this problem, we will define a node, which contains a letter and its corresponding values.

isValid(nodeList, count, word1, word2, word3)

Input − A list of nodes, the number of elements in the node list and three words.

Output − True if the sum of the value for word1 and word2 is same as word3 value.

Begin -> m := 1

for each letter i from right to left of word1, do -> ch := word1[i]

for all elements j in the nodeList, do

if nodeList[j].letter = ch, then

break

done

val1 := val1 + (m * nodeList[j].value)

m := m * 10

done

m := 1

for each letter i from right to left of word2, do

ch := word2[i]

for all elements j in the nodeList, do

if nodeList[j].letter = ch, then

break

done

val2 := val2 + (m * nodeList[j].value)

m := m * 10

done

m := 1

for each letter i from right to left of word3, do

ch := word3[i]

for all elements j in the nodeList, do

if nodeList[j].letter = ch, then

break

done

val3 := val3 + (m * nodeList[j].value)

m := m * 10

done

if val3 = (val1 + val2), then

return true

return false

End

PROGRAM:


from itertools import permutations

def solve_cryptarithmetic():
    for perm in permutations(range(10), 8):
        S, E, N, D, M, O, R, Y = perm

        # Check for leading zeros
        if S == 0 or M == 0:
            continue

        # Check the equation constraints
        SEND = 1000 * S + 100 * E + 10 * N + D
        MORE = 1000 * M + 100 * O + 10 * R + E
        MONEY = 10000 * M + 1000 * O + 100 * N + 10 * E + Y

        if SEND + MORE == MONEY:
            return SEND, MORE, MONEY

    return None

# Call the function
solution = solve_cryptarithmetic()

if solution:
    SEND, MORE, MONEY = solution
    print("Answer is :")
    print()
    print(f'SEND = {SEND}')
    print(f'MORE = {MORE}')
    print(f'MONEY = {MONEY}')
else:
    print("No solution found.")

Output:

image

Result:

Thus a Cryptarithmetic Problem was solved using Python successfully

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published