Skip to content

Instantly share code, notes, and snippets.

@luisgdelafuente
Last active August 11, 2023 19:46
Show Gist options
  • Save luisgdelafuente/74640818eb34dd04bfd1a27266423193 to your computer and use it in GitHub Desktop.
Save luisgdelafuente/74640818eb34dd04bfd1a27266423193 to your computer and use it in GitHub Desktop.
Untitled21.ipynb
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"provenance": [],
"authorship_tag": "ABX9TyP5hRpX8Y1Mrij7IO3IjPdV",
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"language_info": {
"name": "python"
},
"widgets": {
"application/vnd.jupyter.widget-state+json": {
"57e3a6bc147549dabc2e21a1146f0293": {
"model_module": "@jupyter-widgets/output",
"model_name": "OutputModel",
"model_module_version": "1.0.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/output",
"_model_module_version": "1.0.0",
"_model_name": "OutputModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/output",
"_view_module_version": "1.0.0",
"_view_name": "OutputView",
"layout": "IPY_MODEL_b4dad445f9b94aeda65b4ace82bf56bb",
"msg_id": "",
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": "<Figure size 600x600 with 1 Axes>",
"image/png": "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\n"
},
"metadata": {}
},
{
"output_type": "stream",
"name": "stdout",
"text": [
"Player X wins!\n"
]
}
]
}
},
"b4dad445f9b94aeda65b4ace82bf56bb": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
}
}
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/luisgdelafuente/74640818eb34dd04bfd1a27266423193/untitled21.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "code",
"source": [
"def run_games(n):\n",
" results = {\"X\": 0, \"O\": 0, \"Draw\": 0}\n",
"\n",
" # Create an output widget to display the game board once\n",
" out = widgets.Output()\n",
" display(out)\n",
"\n",
" for i in range(n):\n",
" print(f\"Playing game {i + 1}...\")\n",
" winner = interactive_play_game(out)\n",
" results[winner] += 1\n",
"\n",
" # Display summary\n",
" print(\"\\nSummary:\")\n",
" for key, value in results.items():\n",
" print(f\"{key}: {value} wins\")\n",
"\n",
"def interactive_play_game(out):\n",
" board = initialize_board()\n",
" players = ['X', 'O']\n",
" turn = 0\n",
" winner = None\n",
"\n",
" while not winner and not is_board_full(board):\n",
" with out:\n",
" clear_output(wait=True)\n",
" fig, ax = plt.subplots(figsize=(6, 6))\n",
" player = players[turn % 2]\n",
" ai_move(board, player)\n",
" draw_board(board, ax)\n",
" plt.show()\n",
"\n",
" if check_winner(board, player):\n",
" winner = player\n",
" turn += 1\n",
"\n",
" with out:\n",
" if winner:\n",
" print(f\"Player {winner} wins!\")\n",
" else:\n",
" print(\"It's a draw!\")\n",
" winner = \"Draw\"\n",
"\n",
" return winner\n",
"\n",
"# Example: Run the game 5 times\n",
"run_games(10)\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 809,
"referenced_widgets": [
"57e3a6bc147549dabc2e21a1146f0293",
"b4dad445f9b94aeda65b4ace82bf56bb"
]
},
"id": "jSm894XHCSsi",
"outputId": "e5ed1f47-f918-4b54-da55-e573869d6773"
},
"execution_count": 25,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"Output()"
],
"application/vnd.jupyter.widget-view+json": {
"version_major": 2,
"version_minor": 0,
"model_id": "57e3a6bc147549dabc2e21a1146f0293"
}
},
"metadata": {}
},
{
"output_type": "stream",
"name": "stdout",
"text": [
"Playing game 1...\n",
"Playing game 2...\n",
"Playing game 3...\n",
"Playing game 4...\n",
"Playing game 5...\n",
"Playing game 6...\n",
"Playing game 7...\n",
"Playing game 8...\n",
"Playing game 9...\n",
"Playing game 10...\n",
"\n",
"Summary:\n",
"X: 6 wins\n",
"O: 2 wins\n",
"Draw: 2 wins\n"
]
}
]
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment