From 3e28ea4d9f9794ad6ff820a794b093186868bc15 Mon Sep 17 00:00:00 2001 From: Awen Lelu Date: Tue, 6 Jan 2026 14:11:06 +0100 Subject: [PATCH] added hunger and graph --- .formatter.exs | 4 - chatgpt.exs | 179 +- flake.nix | 2 + states.json | 83 +- states_final.json | 346 +++- states_live.json | 1 + zombie_final.png | Bin 0 -> 27996 bytes zombie_final.svg | 4208 +++++++++++++++++++++++++++++++++++++++++++++ 8 files changed, 4671 insertions(+), 152 deletions(-) delete mode 100644 .formatter.exs create mode 100644 states_live.json create mode 100644 zombie_final.png create mode 100644 zombie_final.svg diff --git a/.formatter.exs b/.formatter.exs deleted file mode 100644 index d2cda26..0000000 --- a/.formatter.exs +++ /dev/null @@ -1,4 +0,0 @@ -# Used by "mix format" -[ - inputs: ["{mix,.formatter}.exs", "{config,lib,test}/**/*.{ex,exs}"] -] diff --git a/chatgpt.exs b/chatgpt.exs index 0ea9ff0..40589a3 100644 --- a/chatgpt.exs +++ b/chatgpt.exs @@ -1,88 +1,163 @@ -# Installer Jason pour JSON si besoin Mix.install([ - {:jason, "~> 1.4"} + {:jason, "~> 1.4"}, + {:matplotex, "~> 0.4.71"} ]) defmodule ZombieApocalypse do + @moduledoc """ + Simulation zombie complète. + + - Chaque zombie a un niveau de faim. + - Faim augmente de 5 chaque heure. + - Si un zombie mange un humain, sa faim revient à 0 et l'humain devient un zombie. + - Certains zombies peuvent mourir. + - Sauvegarde JSON à chaque heure. + - Affichage dans le terminal avec pourcentages. + - Génération graphique final avec Matplotex. + """ + @state_file "states.json" - @final_file "states_final.json" + # ===================================== # Démarrage de la simulation - def start(humans \\ 10, zombies \\ 3, max_hours \\ 200) do - # Vider le fichier temporaire - File.write!(@state_file, "") + # ===================================== + def start(humans \\ 10, zombies \\ 3, max_hours \\ 100) do + File.write!(@state_file, "[]") + IO.puts("🧟 Lancement de la simulation...") - IO.puts("🧟 Lancement de la simulation Zombie Apocalypse !") + zombie_list = for _ <- 1..max(zombies, 0), do: 0 - # Ouvrir le fichier en continu pour append rapide - {:ok, file} = File.open(@state_file, [:write, :utf8]) + loop(0, humans, zombie_list, max_hours, humans, zombies) - # Boucle principale - loop(0, humans, zombies, max_hours, file) - - # Fermer le fichier - File.close(file) - - # Générer JSON final - finalize_json() + # Génération graphique + plot_final() + IO.puts("✅ Simulation terminée. JSON et graphique générés (zombie_final.png).") end + # ===================================== # Boucle principale - defp loop(hour, humans, zombies, max_hours, file) when hour < max_hours do + # ===================================== + defp loop(hour, humans, zombie_list, max_hours, initial_humans, initial_zombies) + when hour < max_hours do state = %{ hour: hour, humans: humans, - zombies: zombies, + zombies: length(zombie_list), timestamp: DateTime.utc_now() } - # Append rapide - IO.write(file, Jason.encode!(state) <> "\n") + append_state(state) - # Afficher seulement toutes les 10 heures - if rem(hour, 10) == 0 do - IO.puts("Heure #{hour} | Humains: #{humans} | Zombies: #{zombies}") - end + percent_humans = + if initial_humans > 0, do: humans / initial_humans * 100, else: 0 + + percent_zombies = + if initial_zombies > 0, do: length(zombie_list) / initial_zombies * 100, else: 0 + + IO.puts( + "Heure #{hour} : Humains = #{humans} (#{Float.round(percent_humans, 1)}%), " <> + "Zombies = #{length(zombie_list)} (#{Float.round(percent_zombies, 1)}%)" + ) cond do - humans <= 0 -> - IO.puts("💀 Tous les humains ont été infectés.") - - zombies <= 0 -> - IO.puts("🎉 Tous les zombies ont été éliminés.") + humans <= 0 or length(zombie_list) == 0 -> + {humans, zombie_list} true -> - {new_humans, new_zombies} = simulate_hour(humans, zombies) - loop(hour + 1, new_humans, new_zombies, max_hours, file) + {new_humans, new_zombies} = simulate_hour(humans, zombie_list) + loop(hour + 1, new_humans, new_zombies, max_hours, initial_humans, initial_zombies) end end - defp loop(_hour, _humans, _zombies, _max_hours, _file), do: :ok + defp loop(_, humans, zombie_list, _, _, _), do: {humans, zombie_list} - # Simulation d'une heure (calcul probabiliste) - defp simulate_hour(humans, zombies) do - attacks = zombies - # Humains infectés : chaque attaque a 40% de chance - humans_lost = Enum.count(1..attacks, fn _ -> :rand.uniform(100) <= 40 end) - # Zombies tués : chaque attaque a 15% de chance - zombies_lost = Enum.count(1..attacks, fn _ -> :rand.uniform(100) <= 15 end) + # ===================================== + # Simulation d'une heure + # ===================================== + defp simulate_hour(humans, zombie_list) do + new_zombie_list = Enum.map(zombie_list, &(&1 + 5)) - humans = max(humans - humans_lost, 0) - zombies = max(zombies - zombies_lost + humans_lost, 0) # infections - {humans, zombies} + {remaining_humans, zombies_after_hour} = + Enum.reduce(new_zombie_list, {humans, []}, fn hunger, {hum_left, acc} -> + if hum_left > 0 and :rand.uniform() <= 0.4 + hunger / 100 do + # zombie mange humain → nouveau zombie + {hum_left - 1, [0, 0 | acc]} + else + {hum_left, [hunger | acc]} + end + end) + + # Certains zombies peuvent mourir + killed = Enum.count(zombies_after_hour, fn _ -> :rand.uniform() <= 0.15 end) + final_zombies = Enum.drop(zombies_after_hour, killed) + + {remaining_humans, final_zombies} end - # Générer le JSON final complet - defp finalize_json do + # ===================================== + # Sauvegarde JSON + # ===================================== + defp append_state(state) do states = - File.stream!(@state_file) - |> Stream.map(&Jason.decode!/1) - |> Enum.to_list() + File.read!(@state_file) + |> Jason.decode!() - File.write!(@final_file, Jason.encode!(states, pretty: true)) - IO.puts("✅ JSON final créé : #{@final_file}") + File.write!(@state_file, Jason.encode!(states ++ [state], pretty: false)) + end + + # ===================================== + # Graphique final + # ===================================== + defp plot_final do + states = + File.read!(@state_file) + |> Jason.decode!() + + humans = Enum.map(states, & &1["humans"]) |> Enum.filter(&is_number/1) + zombies = Enum.map(states, & &1["zombies"]) |> Enum.filter(&is_number/1) + hours = Enum.map(states, & &1["hour"]) |> Enum.filter(&is_number/1) + + if length(hours) > 0 and length(humans) == length(hours) and length(zombies) == length(hours) do + infection_rate = + if length(humans) >= 2 do + humans + |> Enum.chunk_every(2, 1, :discard) + |> Enum.map(fn [prev, next] -> prev - next end) + else + [] + end + + inf_hours = Enum.drop(hours, 1) + + fig = Matplotex.plot(hours, humans, color: "blue", label: "Humains") + fig = Matplotex.plot(fig, hours, zombies, color: "red", label: "Zombies") + + if infection_rate != [] and length(inf_hours) == length(infection_rate) do + fig = + Matplotex.plot(fig, inf_hours, infection_rate, + color: "green", + label: "Vélocité Infection" + ) + end + + fig_opts = %{figsize: {8, 5}} + fig = Matplotex.figure(fig, fig_opts) + fig = Matplotex.set_title(fig, "Simulation Zombie Apocalypse") + fig = Matplotex.set_xlabel(fig, "Heure") + fig = Matplotex.set_ylabel(fig, "Population / Infection rate") + + svg = Matplotex.show(fig) + File.write!("zombie_final.svg", svg) + System.cmd("rsvg-convert", ["zombie_final.svg", "-o", "zombie_final.png"]) + + IO.puts("🖼️ Graphique généré : zombie_final.png") + else + IO.puts("⚠️ Données insuffisantes pour tracer le graphique.") + end end end -# Lancer la simulation -ZombieApocalypse.start(7000000000, 3, 200) +# ===================================== +# Lancement +# ===================================== +ZombieApocalypse.start(10_000_000, 3, 100) diff --git a/flake.nix b/flake.nix index 350b28e..736bf32 100644 --- a/flake.nix +++ b/flake.nix @@ -25,6 +25,8 @@ elixir erlang elixir-ls + + librsvg ]; shellHook = '' diff --git a/states.json b/states.json index d86e508..7662f14 100644 --- a/states.json +++ b/states.json @@ -1,82 +1 @@ -{"timestamp":"2026-01-06T11:29:46.889794Z","hour":0,"humans":7000000000,"zombies":3} -{"timestamp":"2026-01-06T11:29:46.901248Z","hour":1,"humans":7000000000,"zombies":3} -{"timestamp":"2026-01-06T11:29:46.901292Z","hour":2,"humans":7000000000,"zombies":2} -{"timestamp":"2026-01-06T11:29:46.901310Z","hour":3,"humans":6999999998,"zombies":4} -{"timestamp":"2026-01-06T11:29:46.901324Z","hour":4,"humans":6999999997,"zombies":5} -{"timestamp":"2026-01-06T11:29:46.901343Z","hour":5,"humans":6999999995,"zombies":7} -{"timestamp":"2026-01-06T11:29:46.901356Z","hour":6,"humans":6999999992,"zombies":9} -{"timestamp":"2026-01-06T11:29:46.901376Z","hour":7,"humans":6999999987,"zombies":13} -{"timestamp":"2026-01-06T11:29:46.901403Z","hour":8,"humans":6999999984,"zombies":15} -{"timestamp":"2026-01-06T11:29:46.901420Z","hour":9,"humans":6999999981,"zombies":16} -{"timestamp":"2026-01-06T11:29:46.901434Z","hour":10,"humans":6999999969,"zombies":24} -{"timestamp":"2026-01-06T11:29:46.901477Z","hour":11,"humans":6999999961,"zombies":31} -{"timestamp":"2026-01-06T11:29:46.901499Z","hour":12,"humans":6999999950,"zombies":36} -{"timestamp":"2026-01-06T11:29:46.901515Z","hour":13,"humans":6999999939,"zombies":43} -{"timestamp":"2026-01-06T11:29:46.901536Z","hour":14,"humans":6999999915,"zombies":61} -{"timestamp":"2026-01-06T11:29:46.901570Z","hour":15,"humans":6999999889,"zombies":80} -{"timestamp":"2026-01-06T11:29:46.901595Z","hour":16,"humans":6999999859,"zombies":95} -{"timestamp":"2026-01-06T11:29:46.901627Z","hour":17,"humans":6999999823,"zombies":112} -{"timestamp":"2026-01-06T11:29:46.901664Z","hour":18,"humans":6999999779,"zombies":138} -{"timestamp":"2026-01-06T11:29:46.901705Z","hour":19,"humans":6999999727,"zombies":168} -{"timestamp":"2026-01-06T11:29:46.901754Z","hour":20,"humans":6999999658,"zombies":212} -{"timestamp":"2026-01-06T11:29:46.901825Z","hour":21,"humans":6999999571,"zombies":260} -{"timestamp":"2026-01-06T11:29:46.901867Z","hour":22,"humans":6999999467,"zombies":327} -{"timestamp":"2026-01-06T11:29:46.901910Z","hour":23,"humans":6999999352,"zombies":391} -{"timestamp":"2026-01-06T11:29:46.901961Z","hour":24,"humans":6999999192,"zombies":497} -{"timestamp":"2026-01-06T11:29:46.902029Z","hour":25,"humans":6999998996,"zombies":619} -{"timestamp":"2026-01-06T11:29:46.902104Z","hour":26,"humans":6999998751,"zombies":777} -{"timestamp":"2026-01-06T11:29:46.902193Z","hour":27,"humans":6999998435,"zombies":973} -{"timestamp":"2026-01-06T11:29:46.902304Z","hour":28,"humans":6999998031,"zombies":1227} -{"timestamp":"2026-01-06T11:29:46.902441Z","hour":29,"humans":6999997529,"zombies":1553} -{"timestamp":"2026-01-06T11:29:46.902610Z","hour":30,"humans":6999996944,"zombies":1902} -{"timestamp":"2026-01-06T11:29:46.902834Z","hour":31,"humans":6999996184,"zombies":2376} -{"timestamp":"2026-01-06T11:29:46.903219Z","hour":32,"humans":6999995235,"zombies":3003} -{"timestamp":"2026-01-06T11:29:46.903663Z","hour":33,"humans":6999994085,"zombies":3718} -{"timestamp":"2026-01-06T11:29:46.904074Z","hour":34,"humans":6999992596,"zombies":4620} -{"timestamp":"2026-01-06T11:29:46.904587Z","hour":35,"humans":6999990784,"zombies":5719} -{"timestamp":"2026-01-06T11:29:46.905224Z","hour":36,"humans":6999988428,"zombies":7241} -{"timestamp":"2026-01-06T11:29:46.906018Z","hour":37,"humans":6999985488,"zombies":9119} -{"timestamp":"2026-01-06T11:29:46.906996Z","hour":38,"humans":6999981796,"zombies":11446} -{"timestamp":"2026-01-06T11:29:46.908244Z","hour":39,"humans":6999977121,"zombies":14319} -{"timestamp":"2026-01-06T11:29:46.910018Z","hour":40,"humans":6999971342,"zombies":17920} -{"timestamp":"2026-01-06T11:29:46.912171Z","hour":41,"humans":6999964088,"zombies":22450} -{"timestamp":"2026-01-06T11:29:46.914781Z","hour":42,"humans":6999955200,"zombies":27995} -{"timestamp":"2026-01-06T11:29:46.917810Z","hour":43,"humans":6999944041,"zombies":35046} -{"timestamp":"2026-01-06T11:29:46.921504Z","hour":44,"humans":6999930025,"zombies":43836} -{"timestamp":"2026-01-06T11:29:46.926716Z","hour":45,"humans":6999912528,"zombies":54693} -{"timestamp":"2026-01-06T11:29:46.932908Z","hour":46,"humans":6999890756,"zombies":68219} -{"timestamp":"2026-01-06T11:29:46.940147Z","hour":47,"humans":6999863569,"zombies":85278} -{"timestamp":"2026-01-06T11:29:46.949767Z","hour":48,"humans":6999829576,"zombies":106415} -{"timestamp":"2026-01-06T11:29:46.961107Z","hour":49,"humans":6999787106,"zombies":133008} -{"timestamp":"2026-01-06T11:29:46.975045Z","hour":50,"humans":6999733922,"zombies":166182} -{"timestamp":"2026-01-06T11:29:46.994705Z","hour":51,"humans":6999667271,"zombies":207833} -{"timestamp":"2026-01-06T11:29:47.017118Z","hour":52,"humans":6999583990,"zombies":259742} -{"timestamp":"2026-01-06T11:29:47.044484Z","hour":53,"humans":6999480643,"zombies":324071} -{"timestamp":"2026-01-06T11:29:47.078126Z","hour":54,"humans":6999351277,"zombies":404594} -{"timestamp":"2026-01-06T11:29:47.121004Z","hour":55,"humans":6999188952,"zombies":506411} -{"timestamp":"2026-01-06T11:29:47.173710Z","hour":56,"humans":6998986235,"zombies":633223} -{"timestamp":"2026-01-06T11:29:47.240462Z","hour":57,"humans":6998733592,"zombies":789969} -{"timestamp":"2026-01-06T11:29:47.325410Z","hour":58,"humans":6998418010,"zombies":986673} -{"timestamp":"2026-01-06T11:29:47.430391Z","hour":59,"humans":6998024162,"zombies":1232640} -{"timestamp":"2026-01-06T11:29:47.567925Z","hour":60,"humans":6997531014,"zombies":1541167} -{"timestamp":"2026-01-06T11:29:47.739372Z","hour":61,"humans":6996915048,"zombies":1925949} -{"timestamp":"2026-01-06T11:29:47.949584Z","hour":62,"humans":6996144532,"zombies":2407419} -{"timestamp":"2026-01-06T11:29:48.216272Z","hour":63,"humans":6995182394,"zombies":3007606} -{"timestamp":"2026-01-06T11:29:48.548760Z","hour":64,"humans":6993978917,"zombies":3760074} -{"timestamp":"2026-01-06T11:29:48.982127Z","hour":65,"humans":6992474175,"zombies":4700526} -{"timestamp":"2026-01-06T11:29:49.549035Z","hour":66,"humans":6990594503,"zombies":5874136} -{"timestamp":"2026-01-06T11:29:50.265775Z","hour":67,"humans":6988246428,"zombies":7340299} -{"timestamp":"2026-01-06T11:29:51.190449Z","hour":68,"humans":6985307033,"zombies":9179224} -{"timestamp":"2026-01-06T11:29:52.377333Z","hour":69,"humans":6981636351,"zombies":11471462} -{"timestamp":"2026-01-06T11:29:53.770680Z","hour":70,"humans":6977048363,"zombies":14337618} -{"timestamp":"2026-01-06T11:29:55.459667Z","hour":71,"humans":6971310897,"zombies":17922085} -{"timestamp":"2026-01-06T11:29:57.552975Z","hour":72,"humans":6964144087,"zombies":22402087} -{"timestamp":"2026-01-06T11:30:00.170113Z","hour":73,"humans":6955182481,"zombies":28001066} -{"timestamp":"2026-01-06T11:30:03.456462Z","hour":74,"humans":6943981810,"zombies":34999886} -{"timestamp":"2026-01-06T11:30:07.702079Z","hour":75,"humans":6929981054,"zombies":43752405} -{"timestamp":"2026-01-06T11:30:13.882518Z","hour":76,"humans":6912478647,"zombies":54689218} -{"timestamp":"2026-01-06T11:30:22.015179Z","hour":77,"humans":6890596914,"zombies":68366905} -{"timestamp":"2026-01-06T11:30:31.272590Z","hour":78,"humans":6863257782,"zombies":85453176} -{"timestamp":"2026-01-06T11:30:42.321339Z","hour":79,"humans":6829079144,"zombies":106814388} -{"timestamp":"2026-01-06T11:30:56.415154Z","hour":80,"humans":6786359866,"zombies":133517289} -{"timestamp":"2026-01-06T11:31:14.102785Z","hour":81,"humans":6732956038,"zombies":166893424} +[{"hour":0,"humans":10000000,"timestamp":"2026-01-06T13:03:12.229421Z","zombies":3},{"hour":1,"humans":10000000,"timestamp":"2026-01-06T13:03:12.244572Z","zombies":3},{"hour":2,"humans":10000000,"timestamp":"2026-01-06T13:03:12.244840Z","zombies":1},{"hour":3,"humans":10000000,"timestamp":"2026-01-06T13:03:12.244963Z","zombies":1},{"hour":4,"humans":9999999,"timestamp":"2026-01-06T13:03:12.245071Z","zombies":2},{"hour":5,"humans":9999998,"timestamp":"2026-01-06T13:03:12.245179Z","zombies":3},{"hour":6,"humans":9999998,"timestamp":"2026-01-06T13:03:12.245290Z","zombies":3},{"hour":7,"humans":9999996,"timestamp":"2026-01-06T13:03:12.245434Z","zombies":4},{"hour":8,"humans":9999996,"timestamp":"2026-01-06T13:03:12.245583Z","zombies":3},{"hour":9,"humans":9999995,"timestamp":"2026-01-06T13:03:12.245713Z","zombies":4},{"hour":10,"humans":9999992,"timestamp":"2026-01-06T13:03:12.245826Z","zombies":7},{"hour":11,"humans":9999989,"timestamp":"2026-01-06T13:03:12.245948Z","zombies":10},{"hour":12,"humans":9999983,"timestamp":"2026-01-06T13:03:12.246066Z","zombies":12},{"hour":13,"humans":9999977,"timestamp":"2026-01-06T13:03:12.246177Z","zombies":17},{"hour":14,"humans":9999966,"timestamp":"2026-01-06T13:03:12.246306Z","zombies":25},{"hour":15,"humans":9999951,"timestamp":"2026-01-06T13:03:12.246426Z","zombies":35},{"hour":16,"humans":9999932,"timestamp":"2026-01-06T13:03:12.246549Z","zombies":46},{"hour":17,"humans":9999912,"timestamp":"2026-01-06T13:03:12.246689Z","zombies":51},{"hour":18,"humans":9999881,"timestamp":"2026-01-06T13:03:12.246829Z","zombies":71},{"hour":19,"humans":9999847,"timestamp":"2026-01-06T13:03:12.247008Z","zombies":89},{"hour":20,"humans":9999807,"timestamp":"2026-01-06T13:03:12.247168Z","zombies":110},{"hour":21,"humans":9999759,"timestamp":"2026-01-06T13:03:12.247336Z","zombies":140},{"hour":22,"humans":9999695,"timestamp":"2026-01-06T13:03:12.247509Z","zombies":174},{"hour":23,"humans":9999603,"timestamp":"2026-01-06T13:03:12.247746Z","zombies":224},{"hour":24,"humans":9999500,"timestamp":"2026-01-06T13:03:12.247998Z","zombies":275},{"hour":25,"humans":9999373,"timestamp":"2026-01-06T13:03:12.248282Z","zombies":346},{"hour":26,"humans":9999204,"timestamp":"2026-01-06T13:03:12.248686Z","zombies":447},{"hour":27,"humans":9998986,"timestamp":"2026-01-06T13:03:12.249337Z","zombies":556},{"hour":28,"humans":9998738,"timestamp":"2026-01-06T13:03:12.250268Z","zombies":689},{"hour":29,"humans":9998382,"timestamp":"2026-01-06T13:03:12.251187Z","zombies":909},{"hour":30,"humans":9997950,"timestamp":"2026-01-06T13:03:12.251806Z","zombies":1137},{"hour":31,"humans":9997394,"timestamp":"2026-01-06T13:03:12.252289Z","zombies":1430},{"hour":32,"humans":9996700,"timestamp":"2026-01-06T13:03:12.252786Z","zombies":1801},{"hour":33,"humans":9995846,"timestamp":"2026-01-06T13:03:12.253580Z","zombies":2248},{"hour":34,"humans":9994775,"timestamp":"2026-01-06T13:03:12.255179Z","zombies":2778},{"hour":35,"humans":9993467,"timestamp":"2026-01-06T13:03:12.256293Z","zombies":3448},{"hour":36,"humans":9991821,"timestamp":"2026-01-06T13:03:12.257459Z","zombies":4334},{"hour":37,"humans":9989690,"timestamp":"2026-01-06T13:03:12.259207Z","zombies":5449},{"hour":38,"humans":9987191,"timestamp":"2026-01-06T13:03:12.260416Z","zombies":6714},{"hour":39,"humans":9984051,"timestamp":"2026-01-06T13:03:12.261889Z","zombies":8309},{"hour":40,"humans":9980071,"timestamp":"2026-01-06T13:03:12.263856Z","zombies":10439},{"hour":41,"humans":9975065,"timestamp":"2026-01-06T13:03:12.269086Z","zombies":13175},{"hour":42,"humans":9968863,"timestamp":"2026-01-06T13:03:12.272941Z","zombies":16538},{"hour":43,"humans":9960897,"timestamp":"2026-01-06T13:03:12.276752Z","zombies":20824},{"hour":44,"humans":9951088,"timestamp":"2026-01-06T13:03:12.281605Z","zombies":26094},{"hour":45,"humans":9938714,"timestamp":"2026-01-06T13:03:12.292027Z","zombies":32610},{"hour":46,"humans":9923306,"timestamp":"2026-01-06T13:03:12.301141Z","zombies":40897},{"hour":47,"humans":9903781,"timestamp":"2026-01-06T13:03:12.311698Z","zombies":51424},{"hour":48,"humans":9879237,"timestamp":"2026-01-06T13:03:12.328533Z","zombies":64449},{"hour":49,"humans":9848630,"timestamp":"2026-01-06T13:03:12.356184Z","zombies":80589},{"hour":50,"humans":9810361,"timestamp":"2026-01-06T13:03:12.377479Z","zombies":101022},{"hour":51,"humans":9762582,"timestamp":"2026-01-06T13:03:12.413216Z","zombies":126476},{"hour":52,"humans":9702606,"timestamp":"2026-01-06T13:03:12.458715Z","zombies":158629},{"hour":53,"humans":9627633,"timestamp":"2026-01-06T13:03:12.512304Z","zombies":198462},{"hour":54,"humans":9532986,"timestamp":"2026-01-06T13:03:12.578030Z","zombies":249148},{"hour":55,"humans":9414612,"timestamp":"2026-01-06T13:03:12.650610Z","zombies":312484},{"hour":56,"humans":9266177,"timestamp":"2026-01-06T13:03:12.757576Z","zombies":391826},{"hour":57,"humans":9079879,"timestamp":"2026-01-06T13:03:12.888450Z","zombies":491739},{"hour":58,"humans":8845616,"timestamp":"2026-01-06T13:03:13.063785Z","zombies":617112},{"hour":59,"humans":8551345,"timestamp":"2026-01-06T13:03:13.261404Z","zombies":774936},{"hour":60,"humans":8182867,"timestamp":"2026-01-06T13:03:13.574562Z","zombies":971588},{"hour":61,"humans":7720729,"timestamp":"2026-01-06T13:03:13.961153Z","zombies":1218493},{"hour":62,"humans":7142029,"timestamp":"2026-01-06T13:03:14.459197Z","zombies":1527709},{"hour":63,"humans":6415084,"timestamp":"2026-01-06T13:03:15.087293Z","zombies":1915509},{"hour":64,"humans":5504841,"timestamp":"2026-01-06T13:03:15.890527Z","zombies":2401179},{"hour":65,"humans":4362452,"timestamp":"2026-01-06T13:03:16.744407Z","zombies":3012039},{"hour":66,"humans":2929316,"timestamp":"2026-01-06T13:03:18.028834Z","zombies":3778002},{"hour":67,"humans":1132728,"timestamp":"2026-01-06T13:03:19.968161Z","zombies":4737336},{"timestamp":"2026-01-06T13:03:21.779691Z","hour":68,"humans":0,"zombies":4989869}] \ No newline at end of file diff --git a/states_final.json b/states_final.json index 6ca9963..86c61d4 100644 --- a/states_final.json +++ b/states_final.json @@ -1,38 +1,356 @@ [ { "hour": 0, - "humans": 10, - "timestamp": "2026-01-06T11:18:27.762962Z", + "humans": 5000000, + "timestamp": "2026-01-06T12:14:41.180887Z", "zombies": 3 }, { "hour": 1, - "humans": 10, - "timestamp": "2026-01-06T11:18:27.823728Z", + "humans": 5000000, + "timestamp": "2026-01-06T12:14:41.188896Z", "zombies": 3 }, { "hour": 2, - "humans": 8, - "timestamp": "2026-01-06T11:18:27.874694Z", + "humans": 4999998, + "timestamp": "2026-01-06T12:14:41.188929Z", "zombies": 5 }, { "hour": 3, - "humans": 6, - "timestamp": "2026-01-06T11:18:27.925686Z", + "humans": 4999996, + "timestamp": "2026-01-06T12:14:41.188949Z", "zombies": 7 }, { "hour": 4, - "humans": 3, - "timestamp": "2026-01-06T11:18:27.976690Z", - "zombies": 10 + "humans": 4999993, + "timestamp": "2026-01-06T12:14:41.188963Z", + "zombies": 9 }, { "hour": 5, - "humans": -3, - "timestamp": "2026-01-06T11:18:28.027762Z", - "zombies": 15 + "humans": 4999990, + "timestamp": "2026-01-06T12:14:41.188984Z", + "zombies": 11 + }, + { + "hour": 6, + "humans": 4999983, + "timestamp": "2026-01-06T12:14:41.189001Z", + "zombies": 17 + }, + { + "hour": 7, + "humans": 4999975, + "timestamp": "2026-01-06T12:14:41.189020Z", + "zombies": 23 + }, + { + "hour": 8, + "humans": 4999961, + "timestamp": "2026-01-06T12:14:41.189040Z", + "zombies": 32 + }, + { + "hour": 9, + "humans": 4999948, + "timestamp": "2026-01-06T12:14:41.189075Z", + "zombies": 37 + }, + { + "hour": 10, + "humans": 4999931, + "timestamp": "2026-01-06T12:14:41.189109Z", + "zombies": 45 + }, + { + "hour": 11, + "humans": 4999910, + "timestamp": "2026-01-06T12:14:41.189157Z", + "zombies": 60 + }, + { + "hour": 12, + "humans": 4999885, + "timestamp": "2026-01-06T12:14:41.189188Z", + "zombies": 67 + }, + { + "hour": 13, + "humans": 4999845, + "timestamp": "2026-01-06T12:14:41.189218Z", + "zombies": 92 + }, + { + "hour": 14, + "humans": 4999803, + "timestamp": "2026-01-06T12:14:41.189268Z", + "zombies": 116 + }, + { + "hour": 15, + "humans": 4999747, + "timestamp": "2026-01-06T12:14:41.189316Z", + "zombies": 149 + }, + { + "hour": 16, + "humans": 4999659, + "timestamp": "2026-01-06T12:14:41.189366Z", + "zombies": 202 + }, + { + "hour": 17, + "humans": 4999563, + "timestamp": "2026-01-06T12:14:41.189412Z", + "zombies": 249 + }, + { + "hour": 18, + "humans": 4999444, + "timestamp": "2026-01-06T12:14:41.189465Z", + "zombies": 324 + }, + { + "hour": 19, + "humans": 4999288, + "timestamp": "2026-01-06T12:14:41.189529Z", + "zombies": 413 + }, + { + "hour": 20, + "humans": 4999096, + "timestamp": "2026-01-06T12:14:41.189635Z", + "zombies": 512 + }, + { + "hour": 21, + "humans": 4998841, + "timestamp": "2026-01-06T12:14:41.189864Z", + "zombies": 636 + }, + { + "hour": 22, + "humans": 4998553, + "timestamp": "2026-01-06T12:14:41.189989Z", + "zombies": 772 + }, + { + "hour": 23, + "humans": 4998179, + "timestamp": "2026-01-06T12:14:41.190176Z", + "zombies": 981 + }, + { + "hour": 24, + "humans": 4997721, + "timestamp": "2026-01-06T12:14:41.190360Z", + "zombies": 1245 + }, + { + "hour": 25, + "humans": 4997118, + "timestamp": "2026-01-06T12:14:41.190594Z", + "zombies": 1568 + }, + { + "hour": 26, + "humans": 4996382, + "timestamp": "2026-01-06T12:14:41.190901Z", + "zombies": 1954 + }, + { + "hour": 27, + "humans": 4995446, + "timestamp": "2026-01-06T12:14:41.191312Z", + "zombies": 2425 + }, + { + "hour": 28, + "humans": 4994294, + "timestamp": "2026-01-06T12:14:41.191968Z", + "zombies": 3052 + }, + { + "hour": 29, + "humans": 4992830, + "timestamp": "2026-01-06T12:14:41.192710Z", + "zombies": 3834 + }, + { + "hour": 30, + "humans": 4990950, + "timestamp": "2026-01-06T12:14:41.194421Z", + "zombies": 4869 + }, + { + "hour": 31, + "humans": 4988664, + "timestamp": "2026-01-06T12:14:41.196273Z", + "zombies": 6024 + }, + { + "hour": 32, + "humans": 4985753, + "timestamp": "2026-01-06T12:14:41.197687Z", + "zombies": 7587 + }, + { + "hour": 33, + "humans": 4982215, + "timestamp": "2026-01-06T12:14:41.199289Z", + "zombies": 9390 + }, + { + "hour": 34, + "humans": 4977787, + "timestamp": "2026-01-06T12:14:41.201555Z", + "zombies": 11751 + }, + { + "hour": 35, + "humans": 4972174, + "timestamp": "2026-01-06T12:14:41.203873Z", + "zombies": 14819 + }, + { + "hour": 36, + "humans": 4965252, + "timestamp": "2026-01-06T12:14:41.207054Z", + "zombies": 18508 + }, + { + "hour": 37, + "humans": 4956468, + "timestamp": "2026-01-06T12:14:41.213896Z", + "zombies": 23339 + }, + { + "hour": 38, + "humans": 4945253, + "timestamp": "2026-01-06T12:14:41.219102Z", + "zombies": 29327 + }, + { + "hour": 39, + "humans": 4931259, + "timestamp": "2026-01-06T12:14:41.227398Z", + "zombies": 36780 + }, + { + "hour": 40, + "humans": 4913827, + "timestamp": "2026-01-06T12:14:41.236964Z", + "zombies": 46208 + }, + { + "hour": 41, + "humans": 4892019, + "timestamp": "2026-01-06T12:14:41.252259Z", + "zombies": 57797 + }, + { + "hour": 42, + "humans": 4864582, + "timestamp": "2026-01-06T12:14:41.265113Z", + "zombies": 72434 + }, + { + "hour": 43, + "humans": 4830165, + "timestamp": "2026-01-06T12:14:41.282722Z", + "zombies": 90838 + }, + { + "hour": 44, + "humans": 4786828, + "timestamp": "2026-01-06T12:14:41.305416Z", + "zombies": 114058 + }, + { + "hour": 45, + "humans": 4732682, + "timestamp": "2026-01-06T12:14:41.344774Z", + "zombies": 142846 + }, + { + "hour": 46, + "humans": 4665123, + "timestamp": "2026-01-06T12:14:41.382320Z", + "zombies": 178719 + }, + { + "hour": 47, + "humans": 4580281, + "timestamp": "2026-01-06T12:14:41.432100Z", + "zombies": 224117 + }, + { + "hour": 48, + "humans": 4473784, + "timestamp": "2026-01-06T12:14:41.499129Z", + "zombies": 281086 + }, + { + "hour": 49, + "humans": 4340194, + "timestamp": "2026-01-06T12:14:41.584992Z", + "zombies": 352257 + }, + { + "hour": 50, + "humans": 4173153, + "timestamp": "2026-01-06T12:14:41.690964Z", + "zombies": 441440 + }, + { + "hour": 51, + "humans": 3962221, + "timestamp": "2026-01-06T12:14:41.811665Z", + "zombies": 554491 + }, + { + "hour": 52, + "humans": 3698707, + "timestamp": "2026-01-06T12:14:41.964906Z", + "zombies": 695545 + }, + { + "hour": 53, + "humans": 3368228, + "timestamp": "2026-01-06T12:14:42.159879Z", + "zombies": 872160 + }, + { + "hour": 54, + "humans": 2953399, + "timestamp": "2026-01-06T12:14:42.424475Z", + "zombies": 1093196 + }, + { + "hour": 55, + "humans": 2432909, + "timestamp": "2026-01-06T12:14:42.785990Z", + "zombies": 1370897 + }, + { + "hour": 56, + "humans": 1780644, + "timestamp": "2026-01-06T12:14:43.164048Z", + "zombies": 1718976 + }, + { + "hour": 57, + "humans": 963391, + "timestamp": "2026-01-06T12:14:43.642602Z", + "zombies": 2156863 + }, + { + "hour": 58, + "humans": 0, + "timestamp": "2026-01-06T12:14:44.297738Z", + "zombies": 2652703 } ] \ No newline at end of file diff --git a/states_live.json b/states_live.json new file mode 100644 index 0000000..58b0823 --- /dev/null +++ b/states_live.json @@ -0,0 +1 @@ +[{"timestamp":"2026-01-06T12:28:29.675146Z","hour":0,"humans":10,"zombies":3}] \ No newline at end of file diff --git a/zombie_final.png b/zombie_final.png new file mode 100644 index 0000000000000000000000000000000000000000..d46e553a8a4e153db3ad14476d1c2b343a9b5e79 GIT binary patch literal 27996 zcmeAS@N?(olHy`uVBq!ia0y~yU}j)oV0^&A#=yWJ6vd^=z`($k|H*Y zfkA=6)5S5QV$Pep-&C2tZ z#q%_G|F(OctKd0Fg+laIiup93Lr^deOB*BSjC;<{WhTrQPKcU3Z?*d4eAC!k``JJD zeHWG7;8FL!TFG;B0+YhleYy?$Oz|h`<9I71XGCm1FLi+X!0H3Bwj$TH4tO81c+j`A zW*tAHK2tu^;%A?B?#j~mAeyk)FRz=~|9gPVX@>QT?-`Y?ZsuD)DxSyElk@23boOs7 zVGMHFk3N5EQ9NLMV9$ZGs>hW)Cz%`%V{#J?KlacXyH>`#LSVT(3xEAwX$P0kZ)sAsCr$+PhN>b^*6 zPbUAo&8s;b$|bn=u+CxjQ5EXBcZ9`ZQrh7Ko0unDxsc`}-hcb`spHJ??Em_|{rlw2 z;La2-e7A5_zrOOWU$QJZQ}Tb?8pwa}eX!VN`{d1y>YtuRiTw~O{QCRctj~J9HOm+5 z31h2~x?y?$f9V5zmsWem&&>9W+gOeefsl{sqJlrbLVPUEhbddzlwjptkOpN!adgKNlK9n5fT<`JGf@} zY$@VVjw-5iuMuk(y4!t^ObeZE6*$J%E*N*iiBkK`y7 za2Hs{N(XOb{}?xqb&W?&yx-a6m8QRUElqWr?y83;&ZvWP6H3te0*dEy5D9?CZ zICd4^ndAyF3-O9&&vqOdSC2R|6PUq?_ZZbkJ!F$ z&kEKDOZL2pdLZs{w4N>SXX}f7pUf9=U!L*j`P$Ax-cApLRr@B(SF;C7?(JCNu~ksi zvV$vwsm?p(&bjrKzWEpIBDSr*rmnSOx>%02P5<+AHuLrii2k?k)V{#r{q*A;=P!%x zXRpXmdl2rD`Z@l{^N&^&x9H51kIrS>F-Ic$qxggKKke2(yRE3TlG9?B+P1wN+TXtm zy#F2F@%f_h9;g z`5oWCGCr~nkp8~K=H2Gb^Hpqto$G#u)!mE!{QOsT-5F8S-&eLX+~KzIR9Uih--P$y zRTD1$dG6i8^>=A1VAXe8Uf&_+?0@sO?=#u%xa_HK?v(7Gw;y&Y zjrF^rN7h#Q7p10l9Lc;pt9ILo)Bh*f|MU4*(Z1`s)npH|)z9na{+N@k{rmRQ<8|Vm zla}cHGAVpo%oR9shTEA*#VQv?7p}5nToER8eqHrG?@ym@EqQRb^5*tW$BQpB1w2{( zvu^hFDQC49Ev7v3x~}l()f>~Fk5xbY)mwFY{jVDPd9FF3k{6>486#FF{66^e^V^tk zy9q0P+?`+_r*i-OpS<168YTFtuk3R=6b zi%hwG+^n;2t?F{&`#YCromzGBY$@yck2-JfE?wn$D~|Wu>avfw4DaWE-&GsNX6N=i z{A~HMzg~7{<}m2Elr;YeK5OXQdH(yBS;wzVYpv?PcyI4=spo}rj|BTZ>x%oFY*M~W z&2v_EALE3m+iQR3IwnXj+I{AnOZlXHA?B9XzvHe~ZG87}x69MtXLlKOtX@={UAXAb ze!jqo(q17l>EC~@zN`Og`GYxbd+v$8J~e-3^`CD!^FIG}`98t6Q!hBSH{I$(jH8X~ z`|4HN`CsG(b?DXqTg<{_665fwcB5__c*B- zbYGcz_H6d8SrWTHL@&B@qo+bj*X`<53w0BV;}e>SGS;*7Yww74-I8OnN&cc}TKKKw zO?zCon5iTg6#V_)xrlM?){muM_pT~SpMA%(#`#l3pZcU-+8yt Lb~dlj?j(EjLu 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 + + + + + + + + 0.0 + + + + + + + + + 9.71 + + + + + + + + + 19.43 + + + + + + + + + 29.14 + + + + + + + + + 38.86 + + + + + + + + + 48.57 + + + + + + + + + 58.29 + + + + + + + + + 68.0 + + + + + + + + + 0.0 + + + + + + + + + 2.5e6 + + + + + + + + + 5.0e6 + + + + + + + + + 7.5e6 + + + + + + + + + 1.0e7 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Heure + + + Population / Infection rate + + + Simulation Zombie Apocalypse + + + + + + + Humains + + + + + + + + Zombies + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file