-
Notifications
You must be signed in to change notification settings - Fork 0
/
Five-Square-Puzzle.htm
631 lines (530 loc) · 65.2 KB
/
Five-Square-Puzzle.htm
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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Five Square Puzzle</title>
<script
src="https://code.jquery.com/jquery-3.4.1.js"
integrity="sha256-WpOohJOqMqqyKL9FccASB9O0KwACQJpFTUBLTYOVvVU="
crossorigin="anonymous"></script>
<link data-vue-tag="ssr" rel="icon" type="image/png" sizes="96x96" href="data:image/png;base64,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JEACJEACISBAQQ9BJ9IFEiABEiABEqCgcwyQAAmQAAmQQAgIUNBD0Il0gQRIgARIgAQo6BwDJEACJEACJBACAhT0EHQiXSABEiABEiABCjrHAAmQAAmQAAmEgAAFPQSdSBdIgARIgARIgILOMUACJEACJEACISBAQQ9BJ9IFEiABEiABEqCgcwyQAAmQAAmQQAgIUNBD0Il0gQRIgARIgAQo6BwDJEACJEACJBACAhT0EHQiXSABEiABEiABCjrHAAmQAAmQAAmEgAAFPQSdSBdIgARIgARIgILOMUACJEACJEACISBAQQ9BJ9IFEiABEiABEqCgcwyQAAmQAAmQQAgIUNBD0Il0gQRIgARIgAQo6BwDJEACJEACJBACAhT0EHQiXSABEiABEiABCjrHAAmQAAmQAAmEgAAFPQSdSBdIgARIgARIgILOMUACJEACJEACISBAQQ9BJ9IFEiABEiABEqCgcwyQAAmQAAmQQAgIUNBD0Il0gQRIgARIgAQo6BwDJEACJEACJBACAhT0EHQiXSABEiABEiABCjrHAAmQAAmQAAmEgAAFPQSdSBdIgARIgARIgILOMUACJEACJEACISBAQQ9BJ9IFEiABEiABEqCgcwyQAAmQAAmQQAgIUNBD0Il0gQRIgARIgAQo6BwDJEACJEACJBACAhT0EHQiXSABEiABEiABCjrHAAmQAAmQAAmEgAAFPQSdSBdIgARIgARIgILOMUACJEACJEACISBAQQ9BJ9IFEiABEiABEqCgcwyQAAmQAAmQQAgIUNBD0Il0gQRIgARIgAQo6BwDJEACJEACJBACAhT0EHQiXSABEiABEiABCjrHAAmQAAmQAAmEgAAFPQSdSBdIgARIgARIgILOMUACJEACJEACISBAQQ9BJ9IFEiABEiABEqCgcwyQAAmQAAmQQAgI/H8TMKTU+UG10QAAAABJRU5ErkJggg==">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style type="text/css">
*{ box-sizing: border-box;
padding: 0px;
margin: 0px;
overflow: hidden;
}
body{
font-family: Arial, Helvetica, sans-serif;
}
p{
font-size: larger;
}
.main{
display: flex;
flex-direction: row;
}
.container {
padding-top: 20px;
display: flex;
flex-direction: row;
justify-content: center;
min-width: 800px;
height: 800px;
}
.sides{
width: 100%; height: 100vh;
display: flex;
flex-direction: column;
justify-content: center; align-items: center;
}
button{
padding: 10px;
font-size: larger;
}
</style>
</head>
<body>
<center>
<h1 style="margin-top: 10px;">Five Square Puzzle</h1>
<div class="main">
<div class="sides">
<h1>Objective:</h1>
<p>Moving <b>only 3 matches</b>, arrange the matches<br>to create exactly <b>4 equally sized squares.</b></p>
<br><br><br>
<h1>How to play:</h1>
<p>Click on a match to select it,<br> then click on an empty space to move it there.</p>
</div>
<div class="container" style="flex-direction: column;">
<canvas></canvas>
<h3 id="moved">Moved: 0</h3>
</div>
<div class="sides">
<h1>Click to reset</h1>
<button type="button" onclick="reset()">Reset</button>
</div>
</div>
</center>
<form id="myForm" style="display: none;">
<label>id</label>
<input id="id" name="id" />
<br/>
<label>batch</label>
<input id="batch" name="batch" />
<br/>
<label>time</label>
<input id="time" name="time" />
<br/>
</form>
</body>
<!-- Matchstick Puzzle -->
<script type="text/javascript">
var id;
var stage = 0; //before/after tasks?
var batch = 'c'; //boredom/mind-wandering/control
var start = Date.now();
var complete = false;
const canvas = document.querySelector('canvas');
const c = canvas.getContext('2d');
const match_no = 9; // 9x9 grid
canvas.width = 800;
canvas.height = 800;
const length = canvas.width / 10; //length of matchstick
const thickness = canvas.width / 100; //width of matchstick
c.fillStyle = "#fff";
c.fillRect(0, 0, canvas.width, canvas.height);
var moving;
var selected_match = [];
var moved = 0;
// colors
const tip_primary = "#000";
const tip_hover = "gray";
const tip_clicked = "#000";
const tip_vacant = "#d9d9d9"
const body_primary = "#b0834c";
const body_hover = "#cf9a5b";
const body_clicked = "#5e4629";
const body_vacant = "#d9d9d9";
const vacant_hover = "#b8b6b6";
class Matchstick {
constructor(position, orientation, isHere) { //orientation: 0 = horizontal, 1 = vertical.
this.position = position;
this.orientation = orientation;
this.isHere = isHere; //Whether or not the space is occupied by a match
this.hovered = false;
this.selected = false;
}
draw() {
if (this.isHere) {
if(this.selected){
c.fillStyle = tip_clicked;
}else if(this.hovered){
c.fillStyle = tip_hover;
}else{
c.fillStyle = tip_primary;
}
}else{
if(!this.hovered){
c.fillStyle = tip_vacant;
}else{
c.fillStyle = vacant_hover;
}
}
c.fillRect(this.position.x, this.position.y, thickness, thickness);
if(this.isHere){
if(this.selected){
c.fillStyle = body_clicked;
}else if(this.hovered){
c.fillStyle = body_hover;
}else{
c.fillStyle = body_primary;
}
}else{
if(!this.hovered){
c.fillStyle = tip_vacant;
}else{
c.fillStyle = vacant_hover;
}
}
if (this.orientation == 0) { //if horizontal
c.fillRect(this.position.x + thickness, this.position.y, length - thickness, thickness)
} else { //if vertical
c.fillRect(this.position.x, this.position.y + thickness, thickness, length - thickness)
}
}
}
function initRowHz(row_no, gridrow) { //gridrow describes which spaces are occupied
// Horizontal matchstick row
let matchsticks = [];
for (let i = 0; i < match_no; i++) {
matchsticks[i] = new Matchstick({
x: thickness + (length + thickness) * i,
y: (length + thickness) * row_no
}, 0, gridrow[i]); // 0 because horizontal
}
return matchsticks;
}
function initRowVert(row_no, gridrow) {
// Vertical matchstick row
let matchsticks = [];
for (let i = 0; i < match_no + 1; i++) {
matchsticks[i] = new Matchstick({
x: (length + thickness) * i,
y: thickness + (length + thickness) * row_no
}, 1, gridrow[i]); // 1 because vertical
}
return matchsticks;
}
//Grid describes the starting positions of matchsticks
const Grid = [
[0, 0, 0, 0, 0, 0, 0, 0, 0], //h
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], //v
[0, 0, 0, 0, 0, 0, 0, 0, 0], //h
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], //v
[0, 0, 0, 0, 0, 0, 0, 0, 0], //h
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], //v
[0, 0, 0, 0, 1, 0, 0, 0, 0], //h
[0, 0, 0, 0, 1, 1, 0, 0, 0, 0], //v
[0, 0, 0, 1, 1, 1, 0, 0, 0], //h
[0, 0, 0, 1, 1, 1, 1, 0, 0, 0], //v
[0, 0, 0, 1, 1, 1, 0, 0, 0], //h
[0, 0, 0, 0, 1, 1, 0, 0, 0, 0], //v
[0, 0, 0, 0, 1, 0, 0, 0, 0], //h
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], //v
[0, 0, 0, 0, 0, 0, 0, 0, 0], //h
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], //v
[0, 0, 0, 0, 0, 0, 0, 0, 0], //h
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], //v
[0, 0, 0, 0, 0, 0, 0, 0, 0], //h
]
//sols contains all possible solutions
const sols = [
[
[0, 0, 0, 0, 0, 0, 0, 0, 0], //h
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], //v
[0, 0, 0, 0, 0, 0, 0, 0, 0], //h
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], //v
[0, 0, 0, 0, 0, 0, 0, 0, 0], //h
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], //v
[0, 0, 0, 0, 1, 0, 0, 0, 0], //h
[0, 0, 0, 0, 1, 1, 0, 0, 0, 0], //v
[0, 0, 0, 1, 1, 0, 1, 0, 0], //h
[0, 0, 0, 1, 1, 0, 1, 1, 0, 0], //v
[0, 0, 0, 1, 1, 0, 1, 0, 0], //h
[0, 0, 0, 0, 1, 1, 0, 0, 0, 0], //v
[0, 0, 0, 0, 1, 0, 0, 0, 0], //h
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], //v
[0, 0, 0, 0, 0, 0, 0, 0, 0], //h
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], //v
[0, 0, 0, 0, 0, 0, 0, 0, 0], //h
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], //v
[0, 0, 0, 0, 0, 0, 0, 0, 0], //h
],
[
[0, 0, 0, 0, 0, 0, 0, 0, 0], //h
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], //v
[0, 0, 0, 0, 0, 0, 0, 0, 0], //h
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], //v
[0, 0, 0, 0, 0, 0, 0, 0, 0], //h
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], //v
[0, 0, 0, 0, 1, 0, 0, 0, 0], //h
[0, 0, 0, 0, 1, 1, 0, 0, 0, 0], //v
[0, 0, 1, 0, 1, 1, 0, 0, 0], //h
[0, 0, 1, 1, 0, 1, 1, 0, 0, 0], //v
[0, 0, 1, 0, 1, 1, 0, 0, 0], //h
[0, 0, 0, 0, 1, 1, 0, 0, 0, 0], //v
[0, 0, 0, 0, 1, 0, 0, 0, 0], //h
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], //v
[0, 0, 0, 0, 0, 0, 0, 0, 0], //h
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], //v
[0, 0, 0, 0, 0, 0, 0, 0, 0], //h
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], //v
[0, 0, 0, 0, 0, 0, 0, 0, 0], //h
],
[
[0, 0, 0, 0, 0, 0, 0, 0, 0], //h
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], //v
[0, 0, 0, 0, 0, 0, 0, 0, 0], //h
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], //v
[0, 0, 0, 0, 1, 0, 0, 0, 0], //h
[0, 0, 0, 0, 1, 1, 0, 0, 0, 0], //v
[0, 0, 0, 0, 1, 0, 0, 0, 0], //h
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], //v
[0, 0, 0, 1, 0, 1, 0, 0, 0], //h
[0, 0, 0, 1, 1, 1, 1, 0, 0, 0], //v
[0, 0, 0, 1, 1, 1, 0, 0, 0], //h
[0, 0, 0, 0, 1, 1, 0, 0, 0, 0], //v
[0, 0, 0, 0, 1, 0, 0, 0, 0], //h
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], //v
[0, 0, 0, 0, 0, 0, 0, 0, 0], //h
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], //v
[0, 0, 0, 0, 0, 0, 0, 0, 0], //h
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], //v
[0, 0, 0, 0, 0, 0, 0, 0, 0], //h
],
[
[0, 0, 0, 0, 0, 0, 0, 0, 0], //h
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], //v
[0, 0, 0, 0, 0, 0, 0, 0, 0], //h
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], //v
[0, 0, 0, 0, 0, 0, 0, 0, 0], //h
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], //v
[0, 0, 0, 0, 1, 0, 0, 0, 0], //h
[0, 0, 0, 0, 1, 1, 0, 0, 0, 0], //v
[0, 0, 0, 1, 1, 1, 0, 0, 0], //h
[0, 0, 0, 1, 1, 1, 1, 0, 0, 0], //v
[0, 0, 0, 1, 0, 1, 0, 0, 0], //h
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], //v
[0, 0, 0, 0, 1, 0, 0, 0, 0], //h
[0, 0, 0, 0, 1, 1, 0, 0, 0, 0], //v
[0, 0, 0, 0, 1, 0, 0, 0, 0], //h
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], //v
[0, 0, 0, 0, 0, 0, 0, 0, 0], //h
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], //v
[0, 0, 0, 0, 0, 0, 0, 0, 0], //h
]
]
//rows is the live array of matchsticks
rows = [];
function initRows() {
for (let i = 0; i < match_no + 1; i++) {
rows[i * 2] = initRowHz(i, Grid[i * 2]); //horizontal rows are even-numbered
if (i < match_no) { //only 9 vert. rows are needed
rows[1 + (i * 2)] = initRowVert(i, Grid[1 + (i * 2)]); //vertical rows are odd-numbered
}
}
}
function drawAll() {
rows.forEach(a => {
a.forEach(match => {
match.draw();
});
});
}
function getMousePos(canvas, evt) {
var rect = canvas.getBoundingClientRect(), // abs. size of element
scaleX = canvas.width / rect.width, // relationship bitmap vs. element for x
scaleY = canvas.height / rect.height; // relationship bitmap vs. element for y
return {
x: (evt.clientX - rect.left) * scaleX, // scale mouse coordinates after they have
y: (evt.clientY - rect.top) * scaleY // been adjusted to be relative to element
}
}
function clickDetector(e) {
var mousePos = getMousePos(canvas, e);
x = mousePos.x;
y = mousePos.y;
rows.forEach(a => {
a.forEach(match => {
if (match.orientation == 0) { //if match is horizontal
if (x >= match.position.x && x <= match.position.x + length) {
if (y >= match.position.y && y <= match.position.y + thickness) {
match.selected = true;
} else {
match.selected = false;
}
} else {
match.selected = false;
}
} else {
if (x >= match.position.x && x <= match.position.x + thickness) {
if (y >= match.position.y && y <= match.position.y + length) {
match.selected = true;
} else {
match.selected = false;
}
} else {
match.selected = false;
}
}
if(match.selected&&match.isHere){
moving = true;
selected_match[0] = rows.indexOf(a);
selected_match[1] = a.indexOf(match);
}
if(!match.isHere && match.selected){
match.selected = false;
if(moving){
if(moved<3){
rows[selected_match[0]][selected_match[1]].isHere = false;
match.isHere = true;
}else{
alert("You can only move 3! Click ok to reset.")
reset();
}
}
moving = false;
}
});
});
compareGrid();
compareSols();
}
function hoverDetector(e) {
var mousePos = getMousePos(canvas, e);
x = mousePos.x;
y = mousePos.y;
rows.forEach(a => {
a.forEach(match => {
if (match.orientation == 0) { //if match is horizontal
if (x >= match.position.x && x <= match.position.x + length) {
if (y >= match.position.y && y <= match.position.y + thickness) {
match.hovered = true;
} else {
match.hovered = false;
}
} else {
match.hovered = false;
}
} else {
if (x >= match.position.x && x <= match.position.x + thickness) {
if (y >= match.position.y && y <= match.position.y + length) {
match.hovered = true;
} else {
match.hovered = false;
}
} else {
match.hovered = false;
}
}
});
});
}
//checking if matchsticks have been moved from their original positions
function compareGrid(){
moved = 0;
for (let i = 0; i < rows.length; i++) {
row = rows[i];
original_row = Grid[i];
for (let j = 0; j < row.length; j++) {
const match = row[j];
const original = original_row[j];
if(match.isHere!=original){
moved++;
}
}
}
moved /= 2;
document.getElementById("moved").innerText = "Moved: "+(moved);
}
function compareSols(){
for (let sol = 0; sol < sols.length; sol++) {
let equality = 0;
let len = 0;
const solution = sols[sol];
for (let i = 0; i < rows.length; i++) {
row = rows[i];
sol_row = solution[i];
for (let j = 0; j < row.length; j++) {
const match = row[j];
const ans = sol_row[j];
len++;
if(match.isHere==ans){
equality++;
}
}
}
if(equality == 180){
complete = true;
setTimeout(() => {
solved();
}, 400);
}
}
}
function reset(){
initRows();
compareGrid();
}
function update(){
setTimeout(() => {
c.fillStyle = "#fff";
c.fillRect(0, 0, canvas.width, canvas.height);
drawAll();
document.getElementById("time").innerText = "Time: "+Math.round((Date.now()-start)/1000);
update();
}, 100);
}
function getArgs(){
const queryString = window.location.search;
const urlParams = new URLSearchParams(queryString);
if(urlParams.has('stage')){
stage = urlParams.get('stage');
}else{
stage = 0;
}
console.log(stage);
if(urlParams.has('batch')){
batch = urlParams.get('batch');
}else{
batch = 0;
}
if(urlParams.has('id')){
id = urlParams.get('id');
}else{
id = prompt("Please enter your ID:");
if(!id){
getArgs();
}
}
console.log(start);
start = Date.now();
console.log(start);
}
function solved(){
alert("Solved!");
document.getElementById("id").value = id;
document.getElementById("batch").value = batch;
document.getElementById("time").value = Math.round((Date.now()-start)/1000)+ 360*stage; //add 6 mins for stage 1
SubForm();
}
function SubForm (){
$.ajax({
url:"https://api.apispreadsheets.com/data/hl4EcLgDciA4Dbmx/",
type:"post",
data:$("#myForm").serializeArray(),
success: function(){
alert("Experiment complete. Please remain quietly seated until you receive further instructions from the researcher.")
link = "https://zubiyasiddiqui.github.io/Complete.htm"
window.location.replace(link);
},
error: function(){
console.log("There was an error :(")
}
});
}
getArgs();
canvas.addEventListener("click", clickDetector, false);
canvas.addEventListener('mousemove', hoverDetector, false);
initRows();
drawAll();
function redir(){
alert("You will now be taken to another task after which you will be returned to this puzzle. Press OK to continue.");
let link = "";
if(batch == 'm'){
link = "https://zubiyasiddiqui.github.io/Mind-Wandering.htm?id="+id;
}else if(batch == 'b'){
link = "https://zubiyasiddiqui.github.io/Vowel-Cancellation.htm?id="+id;
}else{
link = "https://zubiyasiddiqui.github.io/Reading-Task.htm?id="+id;
}
if(!complete){
window.location.replace(link);
}
}
if(stage == 0){
setTimeout(() => {
redir();
}, 360000); //6 minutes
} else if(stage == 1){
setTimeout(() => {
document.getElementById("id").value = id;
document.getElementById("batch").value = batch;
document.getElementById("time").value = "not solved";
SubForm();
}, 840000); //14 minutes =840s
}
update();
</script>
</html>