Last active
June 30, 2019 05:22
-
-
Save mpppk/960046e87cb0484c14f52aad531624b8 to your computer and use it in GitHub Desktop.
pokemon.ipynb
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"nbformat": 4, | |
"nbformat_minor": 0, | |
"metadata": { | |
"colab": { | |
"name": "pokemon.ipynb", | |
"version": "0.3.2", | |
"provenance": [], | |
"collapsed_sections": [], | |
"include_colab_link": true | |
}, | |
"kernelspec": { | |
"name": "python3", | |
"display_name": "Python 3" | |
} | |
}, | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "view-in-github", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"<a href=\"https://colab.research.google.com/gist/mpppk/960046e87cb0484c14f52aad531624b8/pokemon.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "OE0wW8tEx4h0", | |
"colab_type": "code", | |
"outputId": "479efe31-fcce-444c-f488-301ebb3bc2b9", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 34 | |
} | |
}, | |
"source": [ | |
"from google.colab import drive\n", | |
"drive.mount('/content/drive')" | |
], | |
"execution_count": 2, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"text": [ | |
"Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount(\"/content/drive\", force_remount=True).\n" | |
], | |
"name": "stdout" | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "8OmO2klAyPjP", | |
"colab_type": "code", | |
"outputId": "e9edab28-98b0-403c-9080-8d5eb3811202", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 34 | |
} | |
}, | |
"source": [ | |
"csvPath = 'drive/My Drive/Colab Notebooks/data/pokemon_list.csv'\n", | |
"!ls drive/'My Drive'/'Colab Notebooks'/data\n", | |
"\n", | |
"# ---- install font and delete cache ----\n", | |
"#!apt-get -y install fonts-ipafont-gothic\n", | |
"# import matplotlib\n", | |
"# import subprocess\n", | |
"# print(matplotlib.get_cachedir())\n", | |
"# !ls /root/.cache/matplotlib\n", | |
"# !rm /root/.cache/matplotlib/fontList.json\n", | |
"# !rm /root/.cache/matplotlib/fontlist-v300.json" | |
], | |
"execution_count": 3, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"text": [ | |
"pokemon_list.csv pokemon_list_medium.csv pokemon_list_small.csv\n" | |
], | |
"name": "stdout" | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "t5_Mdg-Oy_7m", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"import pandas as pd\n", | |
"def to_upper_katakana(series: pd.Series):\n", | |
" return series.str.replace(\n", | |
" 'ァ', 'ア'\n", | |
" ).str.replace(\n", | |
" 'ィ', 'イ'\n", | |
" ).str.replace(\n", | |
" 'ゥ', 'ウ'\n", | |
" ).str.replace(\n", | |
" 'ェ', 'エ'\n", | |
" ).str.replace(\n", | |
" 'ォ', 'オ'\n", | |
" ).str.replace(\n", | |
" 'ッ', 'ツ'\n", | |
" ).str.replace(\n", | |
" 'ャ', 'ヤ'\n", | |
" ).str.replace(\n", | |
" 'ュ', 'ユ'\n", | |
" ).str.replace(\n", | |
" 'ョ', 'ヨ'\n", | |
" )\n", | |
"\n", | |
"def remove_dakuten(series: pd.Series):\n", | |
" return series.str.replace(\n", | |
" 'ガ', 'カ'\n", | |
" ).str.replace(\n", | |
" 'ギ', 'キ'\n", | |
" ).str.replace(\n", | |
" 'グ', 'ク'\n", | |
" ).str.replace(\n", | |
" 'ゲ', 'ケ'\n", | |
" ).str.replace(\n", | |
" 'ゴ', 'コ'\n", | |
" ).str.replace(\n", | |
" 'ザ', 'サ'\n", | |
" ).str.replace(\n", | |
" 'ジ', 'シ'\n", | |
" ).str.replace(\n", | |
" 'ズ', 'ス'\n", | |
" ).str.replace(\n", | |
" 'ゼ', 'セ'\n", | |
" ).str.replace(\n", | |
" 'ゾ', 'ソ'\n", | |
" ).str.replace(\n", | |
" 'ダ', 'タ'\n", | |
" ).str.replace(\n", | |
" 'ヂ', 'チ' \n", | |
" ).str.replace(\n", | |
" 'ヅ', 'ツ'\n", | |
" ).str.replace(\n", | |
" 'デ', 'テ'\n", | |
" ).str.replace(\n", | |
" 'ド', 'ト'\n", | |
" ).str.replace(\n", | |
" 'バ|パ', 'ハ'\n", | |
" ).str.replace(\n", | |
" 'ビ|ピ', 'ヒ'\n", | |
" ).str.replace(\n", | |
" 'ブ|プ', 'フ'\n", | |
" ).str.replace(\n", | |
" 'ベ|ペ', 'ヘ'\n", | |
" ).str.replace(\n", | |
" 'ボ|ポ', 'ホ'\n", | |
" ).str.replace(\n", | |
" 'ヴ', 'ウ'\n", | |
" )\n" | |
], | |
"execution_count": 0, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "vSa42cm3K3R5", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"import pandas as pd\n", | |
"import collections\n", | |
"\n", | |
"def count_katakana(row: pd.Series):\n", | |
" s = [n for n in row.get('name')]\n", | |
" c = collections.Counter(s)\n", | |
" return pd.Series(c)\n", | |
"\n", | |
"df = pd.DataFrame()\n", | |
"df['name'] = pd.read_csv(\n", | |
" csvPath, header=None\n", | |
")[0].pipe( # n行1列のcsvを読み込む前提\n", | |
" to_upper_katakana\n", | |
").pipe(\n", | |
" remove_dakuten\n", | |
").str.replace('ー','')\n", | |
"\n", | |
"katakana_counts = df.apply(\n", | |
" count_katakana, axis=1\n", | |
").fillna(0).sum()" | |
], | |
"execution_count": 0, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "5TWYPysS0aRc", | |
"colab_type": "code", | |
"outputId": "cf2ce7b8-f693-4cb4-e0f3-393ea1d6cb82", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 319 | |
} | |
}, | |
"source": [ | |
"import matplotlib\n", | |
"\n", | |
"font = {'family' : 'IPAGothic'}\n", | |
"matplotlib.rc('font', **font)\n", | |
"katakana_counts.plot.bar()" | |
], | |
"execution_count": 6, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"<matplotlib.axes._subplots.AxesSubplot at 0x7fd9938df7b8>" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
}, | |
"execution_count": 6 | |
}, | |
{ | |
"output_type": "stream", | |
"text": [ | |
"/usr/local/lib/python3.6/dist-packages/matplotlib/font_manager.py:1241: UserWarning: findfont: Font family ['IPAGothic'] not found. Falling back to DejaVu Sans.\n", | |
" (prop.get_family(), self.defaultFamily[fontext]))\n" | |
], | |
"name": "stderr" | |
}, | |
{ | |
"output_type": "display_data", | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAD4CAYAAADiry33AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAADBZJREFUeJzt3V2oZedZB/D/0w9F/KAJcxxCkjpF\nohAvjGVIKwpGCpqkFxNBQou0Q4mMFwkoeOHEC+tNITcqFDUSaekUtDWipYEEawhC8aLaiZSYtIYO\ndUIyJJmplbRYaEl8vJg1Zqed87nPnr3OO78fbPbe71rP2s85cP7nPe9ae5/q7gAwrjetuwEAVkvQ\nAwxO0AMMTtADDE7QAwxO0AMMTtADDE7QAwxO0AMM7i3rbiBJDh061EeOHFl3GwAHypNPPvn17t7Y\nbr9ZBP2RI0dy+vTpdbcBcKBU1XM72c/SDcDgBD3A4AQ9wOAEPcDgBD3A4AQ9wOAEPcDgBD3A4AQ9\nwOBm8c5YADZ35OSjb3h+9oH37qrejB5gcIIeYHCCHmBwgh5gcIIeYHCCHmBwgh5gcIIeYHCCHmBw\ngh5gcNsGfVXdWFX/VFVfrqpnquq3p/Frq+rxqvrqdH/NNF5V9dGqOlNVT1XVO1f9RQCwuZ3M6F9N\n8rvdfXOSdye5t6puTnIyyRPdfVOSJ6bnSXJHkpum24kkD+571wDs2LZB390vdve/TY+/leQrSa5P\ncizJqWm3U0numh4fS/LJvugLSd5WVdfte+cA7Miu1uir6kiSn0vyL0kOd/eL06aXkhyeHl+f5PmF\nshemse891omqOl1Vpy9cuLDLtgHYqR0HfVX9SJK/S/I73f3NxW3d3Ul6Ny/c3Q9199HuPrqxsbGb\nUgB2YUdBX1VvzcWQ/6vu/vtp+OVLSzLT/flp/FySGxfKb5jGAFiDnVx1U0k+luQr3f3HC5seSXJ8\nenw8yWcXxj84XX3z7iSvLCzxAHCF7eQ/TP1Ckg8k+feq+tI09vtJHkjycFXdk+S5JHdP2x5LcmeS\nM0m+neRD+9oxALuybdB39z8nqU02v+cy+3eSe5fsC4B94p2xAIMT9ACDE/QAgxP0AIMT9ACDE/QA\ngxP0AIMT9ACDE/QAgxP0AIMT9ACDE/QAgxP0AIMT9ACDE/QAgxP0AIPbyX+YAmBy5OSj///47APv\n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\n7k9098YWx7qou/f9luTnk3xu4fn9Se7fRf3pvWw7iLVz7Mn3wtfje3Ewvxeb3Va1dPPFJDdV1Tuq\n6geSvC/JIyt6LQC2sJIPNevuV6vqviSfS/LmJB/v7mdW8VoAbG1ln17Z3Y8leWyP5Q/tcdtBrJ1j\nT+uqnWNPy9TOsad11c6xp3XVrrKny1rJyVgA5sNHIAAMTtADDG4W/2Gqqv5gm12OJjm9ybZfSvI/\nW2zfa+2qjnsQa+fY0zK1c+xpXbVz7GldtXPsabvaJDnf3X+xxfZ5rNFX1WO5eAlmbbLLs0l+apPt\nf5vku0l+Y59rV3Xcg1g7x56WqZ1jT+uqnWNP66qdY0/b1SbJqe6+a5NtSWYyo0/yWnd/c7ONVdWb\nba+q7yR5tbtf2c/aVR33INbOsSdfz/7UzrGnddXOsaftai9t32zbJXNZo1/mz4peon6r2lUd9yDW\nzrGnZWrn2NO6aufY07pq59jTTuu3NJcZ/Vur6sc22VZJ3rTF9h9K8t1Nti9Tu6rjHsTaOfbk69mf\n2jn25Hux89rKxTelbmkua/QfzsXfSputQR3NxY9VuNz2nZzI2Evtqo57EGvn2NMytXPsaV21c+xp\nXbVz7Gm72uTiydgHN9mWZCZBD8DqzGWNHoAVEfQAgxP0AIMT9ACDE/QAg/s/biPAfP4vev4AAAAA\nSUVORK5CYII=\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
} | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "RuM7JgJ0hL2u", | |
"colab_type": "code", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 799 | |
}, | |
"outputId": "98197711-9774-4578-d941-7eaecd2c4fa0" | |
}, | |
"source": [ | |
"katakana_counts.sort_values()" | |
], | |
"execution_count": 7, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"ヌ 10.0\n", | |
"ソ 16.0\n", | |
"セ 18.0\n", | |
"ヨ 24.0\n", | |
"ワ 27.0\n", | |
"ネ 28.0\n", | |
"ヘ 28.0\n", | |
"ミ 35.0\n", | |
"モ 35.0\n", | |
"メ 38.0\n", | |
"ノ 38.0\n", | |
"サ 39.0\n", | |
"エ 40.0\n", | |
"ナ 43.0\n", | |
"ム 44.0\n", | |
"レ 44.0\n", | |
"ユ 46.0\n", | |
"ウ 46.0\n", | |
"ケ 47.0\n", | |
"ニ 50.0\n", | |
"チ 54.0\n", | |
"ホ 59.0\n", | |
"ヤ 64.0\n", | |
"ヒ 65.0\n", | |
"オ 67.0\n", | |
"テ 68.0\n", | |
"ロ 77.0\n", | |
"ア 78.0\n", | |
"キ 89.0\n", | |
"タ 91.0\n", | |
"マ 103.0\n", | |
"リ 105.0\n", | |
"ハ 109.0\n", | |
"コ 113.0\n", | |
"カ 113.0\n", | |
"イ 118.0\n", | |
"ツ 120.0\n", | |
"フ 123.0\n", | |
"シ 128.0\n", | |
"ラ 133.0\n", | |
"ス 138.0\n", | |
"ク 140.0\n", | |
"ト 170.0\n", | |
"ル 177.0\n", | |
"ン 215.0\n", | |
"dtype: float64" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
}, | |
"execution_count": 7 | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "2XptJW0NYSr2", | |
"colab_type": "code", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 34 | |
}, | |
"outputId": "e7f9deba-00e8-4024-9214-72c2565219dc" | |
}, | |
"source": [ | |
"# その文字を含むポケモン名が少ない順で、互いに独立な文字を列挙\n", | |
"def list_independent_katakana(word_group: pd.DataFrame, katakana_counts: pd.Series):\n", | |
" checked_katakana = []\n", | |
" for k, freq in katakana_counts.sort_values().items():\n", | |
" is_independent = True\n", | |
" wk = word_group[k]\n", | |
" for ck in checked_katakana:\n", | |
" sub_df = wk[wk['name'].str.contains(ck)]\n", | |
" if len(sub_df) > 0:\n", | |
" is_independent = False\n", | |
" break\n", | |
" if is_independent:\n", | |
" checked_katakana.append(k)\n", | |
" return checked_katakana\n", | |
"\n", | |
"# ある文字を含むポケモンごとにまとめる\n", | |
"word_group = {k:df[df['name'].str.contains(k)] for k, _ in katakana_counts.items()}\n", | |
"independent_katakana = list_independent_katakana(word_group, katakana_counts)\n", | |
"independent_word_group = {k:word_group[k] for k in independent_katakana}\n", | |
"independent_katakana" | |
], | |
"execution_count": 8, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"['ヌ', 'ソ', 'セ', 'ワ', 'ヘ']" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
}, | |
"execution_count": 8 | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "6UpfJp7jjSgl", | |
"colab_type": "code", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 362 | |
}, | |
"outputId": "fa1fa732-78c1-4fc8-ec9d-99ce88bd9987" | |
}, | |
"source": [ | |
"# 上記のグループの全組み合わせの数\n", | |
"# 文字が重複するものは除く\n", | |
"from itertools import chain\n", | |
"from typing import List\n", | |
"\n", | |
"def combi(remain_words_list):\n", | |
" if len(remain_words_list) == 1:\n", | |
" return [[w] for w in remain_words_list[0].to_list()]\n", | |
" new_words_list = []\n", | |
" for w in remain_words_list[0].to_list():\n", | |
" new_combi = combi(remain_words_list[1:])\n", | |
" temp_words_list = [words + [w] for words in combi(remain_words_list[1:])]\n", | |
" new_words_list += [words for words in temp_words_list if not is_duplicate_katakana(words)]\n", | |
" return new_words_list\n", | |
"\n", | |
"def is_duplicate_katakana(words: List[str]) -> bool:\n", | |
" katakana_dict = count_katakana_list(words)\n", | |
" for count in katakana_dict.values():\n", | |
" if count > 1:\n", | |
" return False\n", | |
" return True\n", | |
"\n", | |
"def flatten(nest_list):\n", | |
" return list(chain.from_iterable(nest_list))\n", | |
" \n", | |
"def count_katakana_list(words: List[str]):\n", | |
" s = [[w for w in word] for word in words]\n", | |
" return collections.Counter(flatten(s))\n", | |
" \n", | |
"independent_words_list = [ws['name'] for ws in independent_word_group.values()]\n", | |
"combinations = combi(independent_words_list[])\n", | |
"len(combinations)" | |
], | |
"execution_count": 12, | |
"outputs": [ | |
{ | |
"output_type": "error", | |
"ename": "NameError", | |
"evalue": "ignored", | |
"traceback": [ | |
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", | |
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", | |
"\u001b[0;32m<ipython-input-12-20140b226ea6>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 27\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 28\u001b[0m \u001b[0mindependent_words_list\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mws\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'name'\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mws\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mindependent_word_group\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvalues\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 29\u001b[0;31m \u001b[0mcombinations\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcombi\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mindependent_words_list\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 30\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcombinations\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m<ipython-input-12-20140b226ea6>\u001b[0m in \u001b[0;36mcombi\u001b[0;34m(remain_words_list)\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0mnew_words_list\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mw\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mremain_words_list\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mto_list\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 9\u001b[0;31m \u001b[0mnew_combi\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcombi\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mremain_words_list\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 10\u001b[0m \u001b[0mnew_words_list\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mwords\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mwords\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mtemp_words_list\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mis_duplicate_katakana\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mwords\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mnew_words_list\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m<ipython-input-12-20140b226ea6>\u001b[0m in \u001b[0;36mcombi\u001b[0;34m(remain_words_list)\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0mnew_words_list\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mw\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mremain_words_list\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mto_list\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 9\u001b[0;31m \u001b[0mnew_combi\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcombi\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mremain_words_list\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 10\u001b[0m \u001b[0mnew_words_list\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mwords\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mwords\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mtemp_words_list\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mis_duplicate_katakana\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mwords\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mnew_words_list\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m<ipython-input-12-20140b226ea6>\u001b[0m in \u001b[0;36mcombi\u001b[0;34m(remain_words_list)\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mw\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mremain_words_list\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mto_list\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0mnew_combi\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcombi\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mremain_words_list\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 10\u001b[0;31m \u001b[0mnew_words_list\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mwords\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mwords\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mtemp_words_list\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mis_duplicate_katakana\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mwords\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 11\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mnew_words_list\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;31mNameError\u001b[0m: name 'temp_words_list' is not defined" | |
] | |
} | |
] | |
} | |
] | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment