summaryrefslogtreecommitdiff
path: root/autoschedule
diff options
context:
space:
mode:
authorMinteck <contact@minteck.org>2023-02-23 19:34:56 +0100
committerMinteck <contact@minteck.org>2023-02-23 19:34:56 +0100
commit3d1cd02f27518f1a04374c7c8320cd5d82ede6e9 (patch)
tree75be5fba4368472fb11c8015aee026b2b9a71888 /autoschedule
parent8cc1f13c17fa2fb5a4410542d39e650e02945634 (diff)
downloadpluralconnect-3d1cd02f27518f1a04374c7c8320cd5d82ede6e9.tar.gz
pluralconnect-3d1cd02f27518f1a04374c7c8320cd5d82ede6e9.tar.bz2
pluralconnect-3d1cd02f27518f1a04374c7c8320cd5d82ede6e9.zip
Updated 40 files, added 37 files, deleted 1103 files and renamed 3905 files (automated)
Diffstat (limited to 'autoschedule')
-rw-r--r--autoschedule/main.php287
-rw-r--r--autoschedule/ponies.php99
2 files changed, 0 insertions, 386 deletions
diff --git a/autoschedule/main.php b/autoschedule/main.php
deleted file mode 100644
index e3ae2bf..0000000
--- a/autoschedule/main.php
+++ /dev/null
@@ -1,287 +0,0 @@
-<?php
-
-$_SERVER['DOCUMENT_ROOT'] = "..";
-
-require_once "../includes/score.inc";
-require_once "../includes/bitset.inc";
-require_once "../includes/functions.inc";
-
-$days = [];
-$today_date = date('Y-m-d', time() + 86400);
-$today_weekday = (int)date('N', time() + 86400);
-$today = [];
-$weekend = $today_weekday > 5;
-
-require_once "./ponies.php"; global $ponies_raindrops; global $ponies_cloudburst;
-
-$candidates_cloudburst = [];
-$candidates_cloudburst_sorted = [
- "night" => [[], [], [], []],
- "morning" => [[], [], [], []],
- "afternoon" => [[], [], [], []],
- "evening" => [[], [], [], []]
-];
-$candidates_cloudburst_best = [];
-
-foreach ($ponies_cloudburst as $pony) {
- $dates = $pony["_dates"];
- echo($pony["name"] . ": " . $dates[0] . ", " . $dates[1] . "\n");
-
- $candidates_cloudburst[] = $pony["id"];
- if (isset($dates[0])) $candidates_cloudburst_sorted[$dates[1]][1][] = $pony["id"];
- if (isset($dates[1])) $candidates_cloudburst_sorted[$dates[0]][0][] = $pony["id"];
- if (isset($dates[2])) $candidates_cloudburst_sorted[$dates[2]][2][] = $pony["id"];
- if (isset($dates[3])) $candidates_cloudburst_sorted[$dates[3]][3][] = $pony["id"];
-}
-
-unset($candidates_cloudburst_sorted[""]);
-
-$candidates_cloudburst_sorted["night"] = [
- ...$candidates_cloudburst_sorted["night"][0],
- ...$candidates_cloudburst_sorted["night"][1],
- ...$candidates_cloudburst_sorted["night"][2],
- ...$candidates_cloudburst_sorted["night"][3]
-];
-$candidates_cloudburst_sorted["morning"] = [
- ...$candidates_cloudburst_sorted["morning"][0],
- ...$candidates_cloudburst_sorted["morning"][1],
- ...$candidates_cloudburst_sorted["morning"][2],
- ...$candidates_cloudburst_sorted["morning"][3]
-];
-$candidates_cloudburst_sorted["afternoon"] = [
- ...$candidates_cloudburst_sorted["afternoon"][0],
- ...$candidates_cloudburst_sorted["afternoon"][1],
- ...$candidates_cloudburst_sorted["afternoon"][2],
- ...$candidates_cloudburst_sorted["afternoon"][3]
-];
-$candidates_cloudburst_sorted["evening"] = [
- ...$candidates_cloudburst_sorted["evening"][0],
- ...$candidates_cloudburst_sorted["evening"][1],
- ...$candidates_cloudburst_sorted["evening"][2],
- ...$candidates_cloudburst_sorted["evening"][3]
-];
-
-$candidates_cloudburst_id = [];
-$candidates_cloudburst_id["night"] = 0;
-$candidates_cloudburst_id["morning"] = 0;
-$candidates_cloudburst_id["afternoon"] = 0;
-$candidates_cloudburst_id["evening"] = 0;
-
-$candidates_cloudburst_best["night"] = $candidates_cloudburst_sorted["night"][$candidates_cloudburst_id["night"]];
-$candidates_cloudburst_best["morning"] = $candidates_cloudburst_sorted["morning"][$candidates_cloudburst_id["morning"]];
-$candidates_cloudburst_best["afternoon"] = $candidates_cloudburst_sorted["afternoon"][$candidates_cloudburst_id["afternoon"]];
-$candidates_cloudburst_best["evening"] = $candidates_cloudburst_sorted["evening"][$candidates_cloudburst_id["evening"]];
-
-$candidates_raindrops = [];
-$candidates_raindrops_sorted = [
- "night" => [[], [], [], []],
- "morning" => [[], [], [], []],
- "afternoon" => [[], [], [], []],
- "evening" => [[], [], [], []]
-];
-$candidates_raindrops_best = [];
-
-foreach ($ponies_raindrops as $pony) {
- $dates = $pony["_dates"];
- echo($pony["name"] . ": " . implode(", ", $dates) . "\n");
-
- $add = false;
-
- if ($weekend && $pony["_metadata"]["shared_memory"] < 2) {
- $add = true;
- } else if ($weekend && $pony["_metadata"]["little"] === 2) {
- $add = true;
- } else if ($pony["_metadata"]["little"] !== 2 && !$pony["_metadata"]["shared_memory"] < 2) {
- $add = true;
- }
-
- if ($add) {
- $candidates_raindrops[] = $pony["id"];
- if (isset($dates[0])) $candidates_raindrops_sorted[$dates[0]][0][] = $pony["id"];
- if (isset($dates[1])) $candidates_raindrops_sorted[$dates[1]][1][] = $pony["id"];
- if (isset($dates[2])) $candidates_raindrops_sorted[$dates[2]][2][] = $pony["id"];
- if (isset($dates[3])) $candidates_raindrops_sorted[$dates[3]][3][] = $pony["id"];
- }
-}
-
-unset($candidates_raindrops_sorted[""]);
-
-$candidates_raindrops_sorted["night"] = [
- ...$candidates_raindrops_sorted["night"][0],
- ...$candidates_raindrops_sorted["night"][1],
- ...$candidates_raindrops_sorted["night"][2],
- ...$candidates_raindrops_sorted["night"][3]
-];
-$candidates_raindrops_sorted["morning"] = [
- ...$candidates_raindrops_sorted["morning"][0],
- ...$candidates_raindrops_sorted["morning"][1],
- ...$candidates_raindrops_sorted["morning"][2],
- ...$candidates_raindrops_sorted["morning"][3]
-];
-$candidates_raindrops_sorted["afternoon"] = [
- ...$candidates_raindrops_sorted["afternoon"][0],
- ...$candidates_raindrops_sorted["afternoon"][1],
- ...$candidates_raindrops_sorted["afternoon"][2],
- ...$candidates_raindrops_sorted["afternoon"][3]
-];
-$candidates_raindrops_sorted["evening"] = [
- ...$candidates_raindrops_sorted["evening"][0],
- ...$candidates_raindrops_sorted["evening"][1],
- ...$candidates_raindrops_sorted["evening"][2],
- ...$candidates_raindrops_sorted["evening"][3]
-];
-
-$candidates_raindrops_id = [];
-$candidates_raindrops_id["night"] = 0;
-$candidates_raindrops_id["morning"] = 0;
-$candidates_raindrops_id["afternoon"] = 0;
-$candidates_raindrops_id["evening"] = 0;
-
-$candidates_raindrops_best["night"] = $candidates_raindrops_sorted["night"][$candidates_raindrops_id["night"]];
-$candidates_raindrops_best["morning"] = $candidates_raindrops_sorted["morning"][$candidates_raindrops_id["morning"]];
-$candidates_raindrops_best["afternoon"] = $candidates_raindrops_sorted["afternoon"][$candidates_raindrops_id["afternoon"]];
-$candidates_raindrops_best["evening"] = $candidates_raindrops_sorted["evening"][$candidates_raindrops_id["evening"]];
-
-echo("--------------\n");
-
-var_dump($candidates_cloudburst_best);
-var_dump($candidates_raindrops_best);
-
-echo("--------------\n");
-
-$correct = false;
-$relationships = [];
-
-foreach (scoreOrderGlobal() as $pony) {
- $relationships[$pony["id"]] = [
- ...array_map(function ($i) {
- return explode("/", $i)[1];
- }, array_values(array_filter($pony["_metadata"]["marefriends"], function ($i) use ($pony) {
- return explode("/", $i)[0] !== $pony["_system"];
- }))),
- ...array_map(function ($i) {
- return explode("/", $i)[1];
- }, array_values(array_filter($pony["_metadata"]["sisters"], function ($i) use ($pony) {
- return explode("/", $i)[0] !== $pony["_system"];
- }))),
- ...array_map(function ($i) {
- return explode("/", $i)[1];
- }, array_values(array_filter($pony["_metadata"]["caretakers"], function ($i) use ($pony) {
- return explode("/", $i)[0] !== $pony["_system"];
- })))
- ];
-}
-
-$runs = 0;
-while (!$correct) {
- $ponies = [];
- $fixed = false;
-
- foreach (["morning", "afternoon", "evening", "night"] as $period) {
- if (in_array($candidates_raindrops_best[$period], $ponies)) {
- echo("Saw " . $candidates_raindrops_best[$period] . " (raindrops) more than once\n");
-
- if (count($candidates_raindrops_sorted[$period]) > $candidates_raindrops_id[$period]) {
- $candidates_raindrops_id[$period]++;
-
- if (isset($candidates_raindrops_sorted[$period][$candidates_raindrops_id[$period]])) {
- $candidates_raindrops_best[$period] = $candidates_raindrops_sorted[$period][$candidates_raindrops_id[$period]];
- echo(" Conflict resolved\n");
- $fixed = true;
- } else {
- echo(" Unable to resolve conflict\n");
- }
- } else {
- echo(" Unable to resolve conflict\n");
- }
- } else {
- $ponies[] = $candidates_raindrops_best[$period];
- }
-
- if (in_array($candidates_cloudburst_best[$period], $ponies)) {
- echo("Saw " . $candidates_cloudburst_best[$period] . " (cloudburst) more than once\n");
-
- if (count($candidates_cloudburst_sorted[$period]) > $candidates_cloudburst_id[$period]) {
- $candidates_cloudburst_id[$period]++;
-
- if (isset($candidates_cloudburst_sorted[$period][$candidates_cloudburst_id[$period]])) {
- $candidates_cloudburst_best[$period] = $candidates_cloudburst_sorted[$period][$candidates_cloudburst_id[$period]];
- echo(" Conflict resolved\n");
- $fixed = true;
- } else {
- echo(" Unable to resolve conflict\n");
- }
- } else {
- echo(" Unable to resolve conflict\n");
- }
- } else {
- $ponies[] = $candidates_cloudburst_best[$period];
- }
-
- $relations_cloudburst = $relationships[$candidates_cloudburst_best[$period]];
- $relations_raindrops = $relationships[$candidates_raindrops_best[$period]];
-
- if (!in_array($candidates_cloudburst_best[$period], $relations_raindrops)) {
- echo($candidates_cloudburst_best[$period] . " (cloudburst) is not in a relationship with " . $candidates_raindrops_best[$period] . " (raindrops)\n");
-
- $fixable = false;
- $fixRelation = null;
-
- foreach ($relationships[$candidates_cloudburst_best[$period]] as $relationship) {
- if (in_array($relationship, $candidates_raindrops_sorted[$period])) {
- $fixable = true;
- $fixRelation = $relationship;
- break;
- }
- }
-
- if (!$fixable) {
- echo(" Unable to resolve conflict\n");
- } else {
- $fixed = true;
- $candidates_raindrops_id[$period] = array_search($fixRelation, $candidates_raindrops_sorted[$period]);
- $candidates_raindrops_best[$period] = $fixRelation;
- echo(" Conflict resolved\n");
- }
- }
-
- if (!in_array($candidates_raindrops_best[$period], $relations_cloudburst)) {
- echo($candidates_raindrops_best[$period] . " (raindrops) is not in a relationship with " . $candidates_cloudburst_best[$period] . " (cloudburst)\n");
-
- $fixable = false;
- $fixRelation = null;
-
- foreach ($relationships[$candidates_raindrops_best[$period]] as $relationship) {
- if (in_array($relationship, $candidates_cloudburst_sorted[$period])) {
- $fixable = true;
- $fixRelation = $relationship;
- break;
- }
- }
-
- if (!$fixable) {
- echo(" Unable to resolve conflict\n");
- } else {
- $fixed = true;
- $candidates_cloudburst_id[$period] = array_search($fixRelation, $candidates_cloudburst_sorted[$period]);
- $candidates_cloudburst_best[$period] = $fixRelation;
- echo(" Conflict resolved\n");
- }
- }
- }
-
- if (!$fixed) $correct = true;
-
- if ($runs > 8) {
- $correct = true;
- }
-
- $runs++;
-}
-
-echo("--------------\n");
-
-echo("Morning: " . getSystemMember("ynmuc", $candidates_cloudburst_best["morning"])["display_name"] . " with " . getSystemMember("gdapd", $candidates_raindrops_best["morning"])["display_name"] . "\n");
-echo("Afternoon: " . getSystemMember("ynmuc", $candidates_cloudburst_best["afternoon"])["display_name"] . " with " . getSystemMember("gdapd", $candidates_raindrops_best["afternoon"])["display_name"] . "\n");
-echo("Evening: " . getSystemMember("ynmuc", $candidates_cloudburst_best["evening"])["display_name"] . " with " . getSystemMember("gdapd", $candidates_raindrops_best["evening"])["display_name"] . "\n");
-echo("Night: " . getSystemMember("ynmuc", $candidates_cloudburst_best["night"])["display_name"] . " with " . getSystemMember("gdapd", $candidates_raindrops_best["night"])["display_name"] . "\n"); \ No newline at end of file
diff --git a/autoschedule/ponies.php b/autoschedule/ponies.php
deleted file mode 100644
index d16e701..0000000
--- a/autoschedule/ponies.php
+++ /dev/null
@@ -1,99 +0,0 @@
-<?php
-
-global $ponies_raindrops;
-global $ponies_cloudburst;
-global $weekend;
-
-$travelling = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/travelling/travelling.json"), true);
-
-function ponies(string $system): array {
- global $travelling;
- global $weekend;
-
- return array_map(function ($i) use ($system, $weekend) {
- $switches = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$system/switches.json"), true);
- $memberData = $i;
-
- $i["_lastFronted"] = -1;
- $i["_datesRaw"] = array_values(array_map(function ($i) {
- return strtotime("1970-01-01T" . date("H:i:s", strtotime($i["timestamp"])) . ".000Z");
- }, array_filter($switches, function ($item) use ($memberData) {
- return in_array($memberData["id"], $item["members"]);
- })));
-
- $i["_datesValues"] = [
- "night" => 0,
- "morning" => 0,
- "afternoon" => 0,
- "evening" => 0
- ];
-
- foreach ($i["_datesRaw"] as $date) {
- if ($date < 16200 || $date >= 75600) $i["_datesValues"]["night"]++;
- if ($date >= 61200 && $date < 75600) $i["_datesValues"]["evening"]++;
- if ($date >= 39600 && $date < 61200) $i["_datesValues"]["afternoon"]++;
- if ($date >= 16200 && $date < 39600) $i["_datesValues"]["morning"]++;
- }
-
- if (($i["_metadata"]["little"] === 2 || $i["_metadata"]["shared_memory"] < 2) && !$weekend) {
- $i["_datesValues"]["morning"] = 0;
- $i["_datesValues"]["afternoon"] = 0;
- }
-
- $i["_dates"] = array_values(array_filter(array_keys($i["_datesValues"]), function ($j) use ($i) {
- return $i["_datesValues"][$j] > 0;
- }));
-
- uasort($i["_dates"], function ($a, $b) use ($i) {
- return $i["_datesValues"][$b] - $i["_datesValues"][$a];
- });
- $i["_dates"] = array_values($i["_dates"]);
-
- $id = $i["id"];
-
- $fronters = array_map(function ($item) {
- return $item["id"];
- }, json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$system/fronters.json"), true)["members"]);
-
- if (in_array($id, $fronters)) {
- $i["_lastFronted"] = time();
- } else {
- $thisMember = array_filter($switches, function ($item) use ($memberData) {
- return in_array($memberData["id"], $item["members"]);
- });
-
- $thisMember = array_values($thisMember);
- $frontingEnd = null;
-
- if (count($thisMember) > 0) {
- $thisIndex = array_search($thisMember[0], $switches);
-
- $frontingStart = $thisMember[0];
- $frontingEnd = $switches[$thisIndex - 1];
- }
-
- if ($frontingEnd !== null && isset($frontingStart)) {
- $i["_lastFronted"] = strtotime($frontingEnd["timestamp"]);
- }
- }
-
- return $i;
- }, array_values(array_filter(scoreOrderGlobal(), function ($i) use ($system, $travelling) {
- return $i["_system"] === $system && (!in_array($i["id"], array_keys($travelling)) || !$travelling[$i["id"]]["travelling"]) && !isset($i["_metadata"]["median"]) && $i["name"] !== "unknown" && $i["name"] !== "fusion";
- })));
-}
-
-$ponies_cloudburst = ponies("ynmuc");
-uasort($ponies_cloudburst, function ($a, $b) {
- return $b["_lastFronted"] - $a["_lastFronted"];
-});
-$ponies_cloudburst = array_filter($ponies_cloudburst, function ($i) { return $i["_lastFronted"] > 0; });
-
-$ponies_raindrops = ponies("gdapd");
-uasort($ponies_raindrops, function ($a, $b) {
- return $b["_lastFronted"] - $a["_lastFronted"];
-});
-$ponies_raindrops = array_filter($ponies_raindrops, function ($i) { return $i["_lastFronted"] > 0; });
-
-$ponies_cloudburst = array_reverse($ponies_cloudburst);
-$ponies_raindrops = array_reverse($ponies_raindrops); \ No newline at end of file