You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

64 KiB

In [ ]:
# program to counter letter occurances in a string, or a word
# methods modified from 
# https://www.geeksforgeeks.org/python-program-to-find-occurrence-to-each-character-in-given-string/

The Alphabet Game: a bpNichol Reader featured a "Easter Pome". Easter Pome grows from two words, "pulpit" and "tulip".
pulpit
p 2
u 1
l 1
i 1
t 1

tulip
p 1
u 1
l 1
i 1
t 1

In [16]:
# 法一
def set_counter(inp_str):
    # using set() + count() to get count
    # of each element in string
    out = {x : inp_str.count(x) for x in set(inp_str )}
    # printing result
    print ("{} is composed of these letters and occurances :\n  ".format(inp_str)+ str(out))

set_counter("tulip")
set_counter("pulpit")
tulip is composed of these letters and occurances :
  {'u': 1, 't': 1, 'i': 1, 'p': 1, 'l': 1}
pulpit is composed of these letters and occurances :
  {'u': 1, 't': 1, 'i': 1, 'p': 2, 'l': 1}
In [15]:
# 法二
# initializing string
def freq_dict(inp_str):
    # frequency dictionary
    freq = {}
    
    for ele in inp_str:
        if ele in freq:
            freq[ele] += 1
        else:
            freq[ele] = 1
    # printing result
    print ("{} composed of these letters and occurances : \n".format(inp_str)+ str(freq))

freq_dict("tulip")
freq_dict("pulpit")
tulip composed of these letters and occurances : 
{'t': 1, 'u': 1, 'l': 1, 'i': 1, 'p': 1}
pulpit composed of these letters and occurances : 
{'p': 2, 'u': 1, 'l': 1, 'i': 1, 't': 1}
In [17]:
# 法三
from collections import Counter

def collection_counter(inp_str):

    # using collections.Counter() to get
    # count of each element in string
    oup = Counter(inp_str)

    # printing result
    print ("{} is composed of these letters and occurances :\n ".format(inp_str)+ str(oup))

collection_counter("tulip")
collection_counter("pulpit")
    
tulip is composed of these letters and occurances :
 Counter({'t': 1, 'u': 1, 'l': 1, 'i': 1, 'p': 1})
pulpit is composed of these letters and occurances :
 Counter({'p': 2, 'u': 1, 'l': 1, 'i': 1, 't': 1})
In [ ]:
# this program can take two input words can see if they are anagrams? 
# isAnagram 
# hester mofet 
# are there anagrams in non-alphabetical word arrangements? yes, but in scalable units
In [26]:
# method to see if a pair of words are anagrams to each other
def set_counter(inp_str):
    return {x : inp_str.count(x) for x in set(inp_str )}

def areAnagrams(str1, str2):
    out1 = {}
    out2 = {}
    #apply set counter method to each of the words and store the output 
    out1 = set_counter(str1)
    out2 = set_counter(str2)
    # compare output 
    if out1 == out2:
        return True
    else: 
        return False 
In [36]:
# Python program to read
# image using matplotlib

# importing matplotlib modules
import matplotlib.image as mpimg
import matplotlib.pyplot as plt

# Read Images
img = mpimg.imread('therestofme.jpg')

# Output Images
print("~~~~~~~~~~~~~~~~~~~~movie still from The Silence of Lamb to for a pair of anagrams ~~~~~~~~~~~~")
plt.imshow(img)
~~~~~~~~~~~~~~~~~~~~movie still from The Silence of Lamb to for a pair of anagrams ~~~~~~~~~~~~
Out[36]:
<matplotlib.image.AxesImage at 0x7f14448dbd00>
In [27]:
areAnagrams("hestermofet","therestofme")
Out[27]:
True
In [28]:
areAnagrams("hester mofet","the rest of me")
Out[28]:
False

in this case the empty strings are also counted.