Skip to content

Instantly share code, notes, and snippets.

@arisada
Created August 2, 2023 21:56
Show Gist options
  • Save arisada/90e42c38bdf3455fee89f1c22b0b8cba to your computer and use it in GitHub Desktop.
Save arisada/90e42c38bdf3455fee89f1c22b0b8cba to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"id": "88066872",
"metadata": {},
"source": [
"Commençons par évaluer la force de chaque groupe comparé aux autres, et aussi en prenant en compte leur force. Avec 9 groupes (+ soi-même, 10), cela fait (10 * (10-1))/2 paires, ce qui fait 45, qui est assez élevé mais pas insurmontable. Pour chaque groupe vs groupe, j'assigne un score de 0 à 10 qui est l'avantage de A sur B, donc si A a 10/10 chances de battre B ou au contraire 0/10 de le battre."
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "4a9fdae0",
"metadata": {},
"outputs": [],
"source": [
"Légende = {\n",
"\t\"a\": \"aigles\",\n",
"\t\"c\": \"crocodiles\",\n",
"\t\"g\": \"grizzlis\",\n",
"\t\"l\": \"loups\",\n",
"\t\"Q\": \"chasseur+fusil\",\n",
"\t\"b\": \"bisons\",\n",
"\t\"r\": \"rats\",\n",
"\t\"G\": \"gorilles\",\n",
"\t\"L\": \"lions\",\n",
"\t\"m\": \"moi\"\n",
"}"
]
},
{
"cell_type": "markdown",
"id": "a639eace",
"metadata": {},
"source": [
"Leur nombre est:"
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "34e0b843",
"metadata": {},
"outputs": [],
"source": [
"nombres= {\n",
"\t\"a\": 50, \"c\": 10, \"g\":3, \"l\":15, \"Q\":1, \"b\":7, \"r\":10000, \"G\":5, \"L\":4, \"m\":1\n",
"}\n",
"animaux=\"acglQbrGLm\""
]
},
{
"cell_type": "markdown",
"id": "5b8e83de",
"metadata": {},
"source": [
"Il faut maintenant définir le score qui relie chaque animal avec ses ennemis potentiels. C'est totalement arbitraire, j'assume."
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "fe160d59",
"metadata": {},
"outputs": [],
"source": [
"forces = \\\n",
"\"\"\"\n",
" a c g l Q b r G L m\n",
"a x 1 2 7 0.1 1 9.5 6 3 0.1\n",
"c x x 7 8 0.1 2 9 5 4 0.1\n",
"g x x x 8 1 2 9 5 4 0.1\n",
"l x x x x 0.1 1 9 2 1 0.1 \n",
"Q x x x x x 9.8 9.9 9.8 9.9 2\n",
"b x x x x x x 9.9 6 7 0.1\n",
"r x x x x x x x 0.3 0.1 0.01\n",
"G x x x x x x x x 4 0.5\n",
"L x x x x x x x x x 0.1\n",
"m x x x x x x x x x x\n",
"\"\"\"\n"
]
},
{
"cell_type": "code",
"execution_count": 43,
"id": "373b52c5",
"metadata": {},
"outputs": [],
"source": [
"keys=forces.split(\"\\n\")[1]\n",
"keys=keys.replace(\" \", \" \").split(\" \")[1:]\n",
"keys\n",
"var=forces.split('\\n')[2:12]\n",
"var = [v.replace(\" \", \" \").split(\" \") for v in var]\n",
"versus = {}\n",
"for v in var:\n",
" p1 = v[0]\n",
" for p2, vs in zip(animaux, v[1:]):\n",
" versus[(p1, p2)] = vs\n",
"for p1 in animaux:\n",
" for p2 in animaux:\n",
" if p1 != p2 and versus[(p1, p2)] != 'x':\n",
" versus[(p1, p2)] = float(versus[(p1, p2)])\n",
" elif p1 != p2 and versus[(p1, p2)] == 'x':\n",
" versus[(p1, p2)] = 10 - float(versus[(p2, p1)])\n"
]
},
{
"cell_type": "markdown",
"id": "8b8bc3ff",
"metadata": {},
"source": [
"Nous avons maintenant un tableau exploitable des p1 vs p2. Maintenant, nous allons choisir 2 groups d'animaux parmi 9 (pour le 10 il n'y a pas le choix) et les faire se battre contre les autres groupes. Il y a 9 choose 2 solutions possibles soit 36. Définissons le score de lutte entre deux groupes d'animaux en multipliant le score du premier groupe par le nombre d'individus et en soustrayant le résultat pareil du deuxième groupe. "
]
},
{
"cell_type": "code",
"execution_count": 50,
"id": "6eb7bdad",
"metadata": {},
"outputs": [],
"source": [
"from math import log\n",
"def eval_lutte(p1, p2):\n",
" return versus[(p1, p2)]*nombres[p1] - versus[(p2, p1)]*nombres[p2]\n",
"scores = {}\n",
"for a1 in animaux[:-1]:\n",
" for a2 in animaux[:-1]:\n",
" if a1 != a2:\n",
" score = 0\n",
" for p2 in animaux[:-1]:\n",
" if p2 == a1 or p2 == a2:\n",
" continue\n",
" score += eval_lutte(a1, p2)\n",
" score += eval_lutte(a2, p2)\n",
" score += eval_lutte(\"m\", p2)\n",
" scores[(a1, a2)] = score"
]
},
{
"cell_type": "markdown",
"id": "513a6f21",
"metadata": {},
"source": [
"Il ne nous reste maintenant plus qu'à montrer les résultats classés par score"
]
},
{
"cell_type": "code",
"execution_count": 66,
"id": "8964c241",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"39426.900000\tbisons avec rats\n",
"39426.900000\trats avec bisons\n",
"39228.000000\tchasseur+fusil avec rats\n",
"39228.000000\trats avec chasseur+fusil\n",
"39051.800000\trats avec lions\n",
"39051.800000\tlions avec rats\n",
"36890.900000\trats avec gorilles\n",
"36890.900000\tgorilles avec rats\n",
"36364.400000\taigles avec rats\n",
"36364.400000\trats avec aigles\n",
"30397.400000\tcrocodiles avec rats\n",
"30397.400000\trats avec crocodiles\n",
"29965.600000\tgrizzlis avec rats\n",
"29965.600000\trats avec grizzlis\n",
"29859.400000\tloups avec rats\n",
"29859.400000\trats avec loups\n",
"-1710.010000\tchasseur+fusil avec bisons\n",
"-1710.010000\tbisons avec chasseur+fusil\n",
"-1886.210000\tbisons avec lions\n",
"-1886.210000\tlions avec bisons\n",
"-2085.110000\tchasseur+fusil avec lions\n",
"-2085.110000\tlions avec chasseur+fusil\n",
"-4047.110000\tbisons avec gorilles\n",
"-4047.110000\tgorilles avec bisons\n",
"-4246.010000\tchasseur+fusil avec gorilles\n",
"-4246.010000\tgorilles avec chasseur+fusil\n",
"-4422.210000\tgorilles avec lions\n",
"-4422.210000\tlions avec gorilles\n",
"-4573.610000\taigles avec bisons\n",
"-4573.610000\tbisons avec aigles\n",
"-4772.510000\taigles avec chasseur+fusil\n",
"-4772.510000\tchasseur+fusil avec aigles\n",
"-4948.710000\taigles avec lions\n",
"-4948.710000\tlions avec aigles\n",
"-7109.610000\taigles avec gorilles\n",
"-7109.610000\tgorilles avec aigles\n",
"-10540.610000\tcrocodiles avec bisons\n",
"-10540.610000\tbisons avec crocodiles\n",
"-10739.510000\tchasseur+fusil avec crocodiles\n",
"-10739.510000\tcrocodiles avec chasseur+fusil\n",
"-10915.710000\tcrocodiles avec lions\n",
"-10915.710000\tlions avec crocodiles\n",
"-10972.410000\tbisons avec grizzlis\n",
"-10972.410000\tgrizzlis avec bisons\n",
"-11078.610000\tloups avec bisons\n",
"-11078.610000\tbisons avec loups\n",
"-11171.310000\tgrizzlis avec chasseur+fusil\n",
"-11171.310000\tchasseur+fusil avec grizzlis\n",
"-11277.510000\tchasseur+fusil avec loups\n",
"-11277.510000\tloups avec chasseur+fusil\n",
"-11347.510000\tgrizzlis avec lions\n",
"-11347.510000\tlions avec grizzlis\n",
"-11453.710000\tloups avec lions\n",
"-11453.710000\tlions avec loups\n",
"-13076.610000\tcrocodiles avec gorilles\n",
"-13076.610000\tgorilles avec crocodiles\n",
"-13508.410000\tgrizzlis avec gorilles\n",
"-13508.410000\tgorilles avec grizzlis\n",
"-13603.110000\taigles avec crocodiles\n",
"-13603.110000\tcrocodiles avec aigles\n",
"-13614.610000\tloups avec gorilles\n",
"-13614.610000\tgorilles avec loups\n",
"-14034.910000\taigles avec grizzlis\n",
"-14034.910000\tgrizzlis avec aigles\n",
"-14141.110000\taigles avec loups\n",
"-14141.110000\tloups avec aigles\n",
"-20001.910000\tcrocodiles avec grizzlis\n",
"-20001.910000\tgrizzlis avec crocodiles\n",
"-20108.110000\tcrocodiles avec loups\n",
"-20108.110000\tloups avec crocodiles\n",
"-20539.910000\tgrizzlis avec loups\n",
"-20539.910000\tloups avec grizzlis\n"
]
}
],
"source": [
"s = list(scores.items())\n",
"s.sort(key=lambda x:-x[1])\n",
"for i, score in s:\n",
" print(\"%8f\\t%s avec %s\"%(score, Légende[i[0]], Légende[i[1]]))"
]
},
{
"cell_type": "markdown",
"id": "8f93d863",
"metadata": {},
"source": [
"Cette solution vous est fournie par Aris et un TDAH non suivi médicalement."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "313d57dd",
"metadata": {},
"outputs": [],
"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.8.10"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment