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.

307 lines
64 KiB
Plaintext

3 years ago
{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"id": "6975250a-539e-40bd-ac35-4204ff4e3181",
"metadata": {},
"outputs": [],
"source": [
"# program to counter letter occurances in a string, or a word\n",
"# methods modified from \n",
"# https://www.geeksforgeeks.org/python-program-to-find-occurrence-to-each-character-in-given-string/"
]
},
{
"cell_type": "markdown",
"id": "365acaac-fc9e-461c-83e4-9235af75bfac",
"metadata": {},
"source": [
"The Alphabet Game: a bpNichol Reader featured a \"Easter Pome\". Easter Pome grows from two words, \"pulpit\" and \"tulip\". <br>\n",
"pulpit<br>\n",
"p 2 <br>\n",
"u 1 <br>\n",
"l 1 <br>\n",
"i 1 <br>\n",
"t 1 <br>\n",
"\n",
"tulip<br>\n",
"p 1<br>\n",
"u 1<br>\n",
"l 1<br>\n",
"i 1<br>\n",
"t 1<br>\n"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "acee5120-ae82-4a9f-bbfb-14148e17d4ef",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"tulip is composed of these letters and occurances :\n",
" {'u': 1, 't': 1, 'i': 1, 'p': 1, 'l': 1}\n",
"pulpit is composed of these letters and occurances :\n",
" {'u': 1, 't': 1, 'i': 1, 'p': 2, 'l': 1}\n"
]
}
],
"source": [
"# 法一\n",
"def set_counter(inp_str):\n",
" # using set() + count() to get count\n",
" # of each element in string\n",
" out = {x : inp_str.count(x) for x in set(inp_str )}\n",
" # printing result\n",
" print (\"{} is composed of these letters and occurances :\\n \".format(inp_str)+ str(out))\n",
"\n",
"set_counter(\"tulip\")\n",
"set_counter(\"pulpit\")\n"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "0bf4971c-7490-4dbf-910e-0502d9593a17",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"tulip composed of these letters and occurances : \n",
"{'t': 1, 'u': 1, 'l': 1, 'i': 1, 'p': 1}\n",
"pulpit composed of these letters and occurances : \n",
"{'p': 2, 'u': 1, 'l': 1, 'i': 1, 't': 1}\n"
]
}
],
"source": [
"# 法二\n",
"# initializing string\n",
"def freq_dict(inp_str):\n",
" # frequency dictionary\n",
" freq = {}\n",
" \n",
" for ele in inp_str:\n",
" if ele in freq:\n",
" freq[ele] += 1\n",
" else:\n",
" freq[ele] = 1\n",
" # printing result\n",
" print (\"{} composed of these letters and occurances : \\n\".format(inp_str)+ str(freq))\n",
"\n",
"freq_dict(\"tulip\")\n",
"freq_dict(\"pulpit\")\n"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "a2ce38d4-9407-4e05-a82a-e38667c18367",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"tulip is composed of these letters and occurances :\n",
" Counter({'t': 1, 'u': 1, 'l': 1, 'i': 1, 'p': 1})\n",
"pulpit is composed of these letters and occurances :\n",
" Counter({'p': 2, 'u': 1, 'l': 1, 'i': 1, 't': 1})\n"
]
}
],
"source": [
"# 法三\n",
"from collections import Counter\n",
"\n",
"def collection_counter(inp_str):\n",
"\n",
" # using collections.Counter() to get\n",
" # count of each element in string\n",
" oup = Counter(inp_str)\n",
"\n",
" # printing result\n",
" print (\"{} is composed of these letters and occurances :\\n \".format(inp_str)+ str(oup))\n",
"\n",
"collection_counter(\"tulip\")\n",
"collection_counter(\"pulpit\")\n",
" \n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "9bf3deb3-467d-4056-8a1b-1df257508356",
"metadata": {},
"outputs": [],
"source": [
"# this program can take two input words can see if they are anagrams? \n",
"# isAnagram \n",
"# hester mofet \n",
"# are there anagrams in non-alphabetical word arrangements? yes, but in scalable units"
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "4f079374-28d7-4c44-935c-7d26fe9f4691",
"metadata": {},
"outputs": [],
"source": [
"# method to see if a pair of words are anagrams to each other\n",
"def set_counter(inp_str):\n",
" return {x : inp_str.count(x) for x in set(inp_str )}\n",
"\n",
"def areAnagrams(str1, str2):\n",
" out1 = {}\n",
" out2 = {}\n",
" #apply set counter method to each of the words and store the output \n",
" out1 = set_counter(str1)\n",
" out2 = set_counter(str2)\n",
" # compare output \n",
" if out1 == out2:\n",
" return True\n",
" else: \n",
" return False "
]
},
{
"cell_type": "code",
"execution_count": 36,
"id": "1f4fab84-aeec-4b6f-af67-a76d2af5e20c",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"~~~~~~~~~~~~~~~~~~~~movie still from The Silence of Lamb to for a pair of anagrams ~~~~~~~~~~~~\n"
]
},
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7f14448dbd00>"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Python program to read\n",
"# image using matplotlib\n",
"\n",
"# importing matplotlib modules\n",
"import matplotlib.image as mpimg\n",
"import matplotlib.pyplot as plt\n",
"\n",
"# Read Images\n",
"img = mpimg.imread('therestofme.jpg')\n",
"\n",
"# Output Images\n",
"print(\"~~~~~~~~~~~~~~~~~~~~movie still from The Silence of Lamb to for a pair of anagrams ~~~~~~~~~~~~\")\n",
"plt.imshow(img)"
]
},
{
"cell_type": "code",
"execution_count": 27,
"id": "3df449e7-93d0-499b-8ea5-84bdba8cd165",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"areAnagrams(\"hestermofet\",\"therestofme\")"
]
},
{
"cell_type": "code",
"execution_count": 28,
"id": "b517982e-ef53-4424-8a2c-5baf2cdccb1d",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"False"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"areAnagrams(\"hester mofet\",\"the rest of me\")"
]
},
{
"cell_type": "markdown",
"id": "7af1e993-ca08-41eb-924e-d66b44a3480d",
"metadata": {},
"source": [
"in this case the empty strings are also counted. "
]
},
{
"cell_type": "markdown",
"id": "8970375e-8108-41a8-87cc-e3983c1deb50",
"metadata": {},
"source": [
" "
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.7"
}
},
"nbformat": 4,
"nbformat_minor": 5
}