158 lines
4.2 KiB
Text
158 lines
4.2 KiB
Text
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "373ed1db",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Exercise: Match the tarot cards!\n",
|
|
"\n",
|
|
"Given 2 decks of tarot cards, `deck1` and `deck2`, find all the matching pairs. The output should be a set of tuples `(idx1, idx2)` for every matching pair in `deck1`, `deck2`.\n",
|
|
"\n",
|
|
"For example:\n",
|
|
"```\n",
|
|
"deck1 = ['C', 'B', 'A']\n",
|
|
"deck2 = ['A', 'C', 'B']\n",
|
|
"```\n",
|
|
"\n",
|
|
"should return (in no particular order):\n",
|
|
"\n",
|
|
"```\n",
|
|
"{(0, 1), (1, 2), (2, 0)}\n",
|
|
"```\n",
|
|
"\n",
|
|
"1. Write an algorithm to match the tarot cards\n",
|
|
"2. Compute the Big-O complexity of your algorithm\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"id": "cf05b9c4",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"-- Deck 1: --\n",
|
|
" ['The Empress', 'The Hermit', 'Death', 'Justice', 'The Magician', 'The Lovers', 'Wheel of Fortune', 'The Fool', 'The Tower', 'The Hierophant', 'The World', 'The Moon', 'Judgement', 'The Chariot', 'The Sun', 'The High Priestess', 'Strength', 'The Hanged Man', 'The Emperor', 'The Devil', 'Temperance', 'The Star']\n",
|
|
"-- Deck 2: --\n",
|
|
" ['Justice', 'Temperance', 'The Hanged Man', 'Strength', 'The Magician', 'The Tower', 'Wheel of Fortune', 'The Moon', 'The Lovers', 'The Fool', 'Judgement', 'The Star', 'Death', 'The Hierophant', 'The Empress', 'The High Priestess', 'The Hermit', 'The Sun', 'The Chariot', 'The Devil', 'The Emperor', 'The World']\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"import random\n",
|
|
"\n",
|
|
"# List of tarot card names (Major Arcana)\n",
|
|
"tarot_cards = [\n",
|
|
" \"The Fool\", \"The Magician\", \"The High Priestess\", \"The Empress\", \"The Emperor\",\n",
|
|
" \"The Hierophant\", \"The Lovers\", \"The Chariot\", \"Strength\", \"The Hermit\",\n",
|
|
" \"Wheel of Fortune\", \"Justice\", \"The Hanged Man\", \"Death\", \"Temperance\",\n",
|
|
" \"The Devil\", \"The Tower\", \"The Star\", \"The Moon\", \"The Sun\", \"Judgement\",\n",
|
|
" \"The World\"\n",
|
|
"]\n",
|
|
"\n",
|
|
"# Copy the list to create two separate decks\n",
|
|
"deck1 = tarot_cards.copy()\n",
|
|
"deck2 = tarot_cards.copy()\n",
|
|
"\n",
|
|
"# Shuffle both decks\n",
|
|
"random.shuffle(deck1)\n",
|
|
"random.shuffle(deck2)\n",
|
|
"\n",
|
|
"# Print the shuffled decks\n",
|
|
"print(\"-- Deck 1: --\\n\", deck1)\n",
|
|
"print(\"-- Deck 2: --\\n\", deck2)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 10,
|
|
"id": "48eb31e2",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"set1 = set(deck1)\n",
|
|
"\n",
|
|
"matching = []\n",
|
|
"\n",
|
|
"for indx, card in enumerate(deck2):\n",
|
|
" if card in set1:\n",
|
|
" matching.append((deck2.index(card), deck1.index(card)))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 11,
|
|
"id": "509dda71",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"[(0, 3),\n",
|
|
" (1, 20),\n",
|
|
" (2, 17),\n",
|
|
" (3, 16),\n",
|
|
" (4, 4),\n",
|
|
" (5, 8),\n",
|
|
" (6, 6),\n",
|
|
" (7, 11),\n",
|
|
" (8, 5),\n",
|
|
" (9, 7),\n",
|
|
" (10, 12),\n",
|
|
" (11, 21),\n",
|
|
" (12, 2),\n",
|
|
" (13, 9),\n",
|
|
" (14, 0),\n",
|
|
" (15, 15),\n",
|
|
" (16, 1),\n",
|
|
" (17, 14),\n",
|
|
" (18, 13),\n",
|
|
" (19, 19),\n",
|
|
" (20, 18),\n",
|
|
" (21, 10)]"
|
|
]
|
|
},
|
|
"execution_count": 11,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"matching"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "50d68467",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 3",
|
|
"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.13.6"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|