-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.php
More file actions
115 lines (105 loc) · 3.58 KB
/
index.php
File metadata and controls
115 lines (105 loc) · 3.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
<?php
require_once "checkmaker.php";
require_once "plaid.php";
session_start();
$generation_num = 5;
$population_num = 10;
$mutation_probability = 0.1;
$evaluations = [];
$evaluation_sum = 0;
$generation_count = isset($_GET["gc"]) ? $_GET["gc"] + 1 : 1;
$plaid_list = [];
for ($i = 0; $i < 10; $i++) {
$eva = isset($_GET["plaid$i"]) ? $_GET["plaid$i"] : 0;
array_push($evaluations, $eva);
$evaluation_sum += $eva;
}
if ($evaluation_sum == 0 && $generation_count != 1) {
echo "<div>評価を選択してください</div>";
exit();
}
if ($generation_count == 1) {
$is_first = [];
for ($i = 1; $i <= $generation_num; $i++) {
$is_first[$i] = true;
}
$cm = new Checkmaker($population_num, $mutation_probability);
$cm->init_population();
$is_first[$generation_count] = false;
$_SESSION["is_first"] = $is_first;
$_SESSION["cm"] = serialize($cm);
} elseif ($generation_count > $generation_num) {
$cm = unserialize($_SESSION["cm"]);
$cm->set_evaluations($evaluations);
$result_individual = $cm->get_best_individual();
$plaid_id = $result_individual->get_plaid_id();
$bg_col = $result_individual->get_color(1);
$col1 = $result_individual->get_color(2);
$col2 = $result_individual->get_color(3);
$col3 = $result_individual->get_color(4);
$result_plaid = new Plaid($plaid_id, $bg_col, $col1, $col2, $col3);
} else {
$is_first = $_SESSION["is_first"];
$cm = unserialize($_SESSION["cm"]);
if ($is_first[$generation_count] == true) {
$cm->set_evaluations($evaluations);
$cm->generate_next();
$is_first[$generation_count] = false;
}
var_dump($is_first);
$_SESSION["is_first"] = $is_first;
$_SESSION["cm"] = serialize($cm);
}
// echo "<pre>";
// $cm->print_population();
// echo "</pre>";
foreach ($cm->population as $individual) {
$plaid_id = $individual->get_plaid_id();
$bg_col = $individual->get_color(1);
$col1 = $individual->get_color(2);
$col2 = $individual->get_color(3);
$col3 = $individual->get_color(4);
array_push($plaid_list, new Plaid($plaid_id, $bg_col, $col1, $col2, $col3));
}
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>チェックメーカー(PHP版)</title>
</head>
<body>
<h1>チェックメーカー(PHP版)</h1>
<?php if ($generation_count != $generation_num + 1): ?>
<p>第<?=$generation_count?>世代:残り<?=($generation_num + 1) - $generation_count?></p>
<form method="GET" action="./index.php">
<?php foreach ($plaid_list as $index => $plaid): ?>
<?php if ($index == 5): ?>
<br>
<?php endif;?>
<div style="display:inline-block;">
<img src="data:image/png;base64,<?=base64_encode($plaid->get_plaid_image()->getImageBlob())?>">
<div>
<?php for ($i = 1; $i <= 5; $i++): ?>
<label style="display:inline-block;">
<input type="radio" value=<?=$i?> name="plaid<?=$index?>" />
<?=$i?>
</label>
<?php endfor;?>
</div>
</div>
<?php endforeach;?>
<br>
<input type="hidden" value="<?=$generation_count?>" name="gc" />
<button type="submit">次へ</button>
</form>
<?php else: ?>
<p>あなたにおすすめのチェック柄です</p>
<img src="data:image/png;base64,<?=base64_encode($result_plaid->get_plaid_image()->getImageBlob())?>">
<br>
<a href="./index.php">もう一度</a>
<?php endif;?>
</body>
</html>