Skip to content

Instantly share code, notes, and snippets.

@jmhummel
Last active May 22, 2020 22:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jmhummel/ca5a95959cbeaf0ee2224f6dbadcda5a to your computer and use it in GitHub Desktop.
Save jmhummel/ca5a95959cbeaf0ee2224f6dbadcda5a to your computer and use it in GitHub Desktop.
Riddle classic 2020-05-22
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"with open('2020-05-22-classic-statenames.txt') as f:\n",
" statenames = [line.lower().rstrip() for line in f]"
]
},
{
"cell_type": "code",
"execution_count": 2,
"outputs": [],
"source": [
"with open('2020-01-03-classic-wordlist.txt') as f:\n",
" wordlist = [line.rstrip() for line in f]"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "markdown",
"source": [
"## Create dictionaries mapping each word to its set of letters"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%% md\n"
}
}
},
{
"cell_type": "code",
"execution_count": 3,
"outputs": [],
"source": [
"state_chars = {s: set(s.replace(' ', '')) for s in statenames}\n",
"word_chars = {s: set(s) for s in wordlist}"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "markdown",
"source": [
"## Find all mackerels"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 4,
"outputs": [],
"source": [
"pairs = []\n",
"for w, w_chars in word_chars.items():\n",
" pair = None\n",
" for s, s_chars in state_chars.items():\n",
" if w_chars.isdisjoint(s_chars):\n",
" if pair is not None:\n",
" pair = None\n",
" break\n",
" pair = (w, s)\n",
" if pair is not None:\n",
" pairs.append(pair)"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "markdown",
"source": [
"## Find the longest mackerels"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%% md\n"
}
}
},
{
"cell_type": "code",
"execution_count": 12,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Longest length: 20\n",
"counterconditionings alabama\n",
"expressionlessnesses utah\n",
"hyperconsciousnesses alabama\n",
"hypersensitivenesses alabama\n",
"interconnectednesses alabama\n",
"microelectrophoretic kansas\n",
"nondestructivenesses alabama\n",
"overprotectivenesses alabama\n"
]
}
],
"source": [
"longest_length = 0\n",
"longest_words = []\n",
"for w, s in pairs:\n",
" if len(w) > longest_length:\n",
" longest_length = len(w)\n",
" longest_words = [(w, s)]\n",
" elif len(w) == longest_length:\n",
" longest_words.append((w, s))\n",
"\n",
"print('Longest length:', longest_length)\n",
"for w, s in longest_words:\n",
" print(w, s)"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "markdown",
"source": [
"## Map each state to its list of mackerels"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%% md\n"
}
}
},
{
"cell_type": "code",
"execution_count": 37,
"outputs": [],
"source": [
"state_mackerels = {}\n",
"for w, s in pairs:\n",
" if not s in state_mackerels:\n",
" state_mackerels[s] = [w]\n",
" else:\n",
" state_mackerels[s].append(w)"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "markdown",
"source": [
"## Sort the mapping by number of mackerels, from greatest to least"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%% md\n"
}
}
},
{
"cell_type": "code",
"execution_count": 40,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Most mackarels: ohio 7523\n"
]
}
],
"source": [
"sorted_mackarels = sorted(state_mackerels.items(), key=lambda t: len(t[1]), reverse=True)\n",
"print('Most mackarels:', sorted_mackarels[0][0], len(sorted_mackarels[0][1]))"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "markdown",
"source": [
"## The rest of the states with mackerels"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%% md\n"
}
}
},
{
"cell_type": "code",
"execution_count": 39,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"alabama 5181\n",
"utah 4300\n",
"mississippi 3339\n",
"hawaii 1175\n",
"kentucky 999\n",
"wyoming 928\n",
"alaska 865\n",
"tennessee 859\n",
"nevada 771\n",
"kansas 589\n",
"texas 424\n",
"montana 421\n",
"oregon 415\n",
"colorado 318\n",
"indiana 309\n",
"delaware 250\n",
"oklahoma 233\n",
"new jersey 220\n",
"iowa 112\n",
"new york 67\n",
"virginia 66\n",
"illinois 54\n",
"maryland 48\n",
"missouri 47\n",
"wisconsin 37\n",
"north dakota 31\n",
"vermont 18\n",
"new mexico 16\n",
"maine 8\n",
"connecticut 4\n",
"michigan 2\n"
]
}
],
"source": [
"for s, words in sorted_mackarels[1:]:\n",
" print(s, len(words))"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.6"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment