annotate talk/code/showalgo.m @ 74:305b7361a5bd default tip @

showalgo: save a snapshot instead of waiting for keyboard input
author Jordi Gutiérrez Hermoso <jordigh@octave.org>
date Sun, 29 May 2016 19:05:01 -0400
parents 7bcf3d503d33
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
71
7bcf3d503d33 shoalgo.m: give it a shebang and make it executable
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 70
diff changeset
1 #!/usr/bin/octave
7bcf3d503d33 shoalgo.m: give it a shebang and make it executable
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 70
diff changeset
2
66
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
3 H = load("H");
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
4 L = load("L") + 1;
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
5 R = load("R") + 1;
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
6 P = load("P") + 1;
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
7 Q = load("Q") + 1;
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
8 Ptot = load("Ptotal");
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
9 Qtot = load("Qtotal");
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
10 remaining = load("remaining");
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
11 mc = load("mc");
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
12 jackpot = load("jackpot");
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
13 Am = load("Am");
67
1aa38f4846e0 showalgo: show the rank
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 66
diff changeset
14 medc_idx = load("medc_idx");
66
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
15 Am(end+1) = mc;
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
16
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
17 colidx = 1:columns(H);
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
18
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
19 origH = repmat((H+1)/2, 1, 1, 3);
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
20
68
5510ac95a3d3 last minute fixes
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 67
diff changeset
21 graphics_toolkit fltk;
5510ac95a3d3 last minute fixes
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 67
diff changeset
22 figure
74
305b7361a5bd showalgo: save a snapshot instead of waiting for keyboard input
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 71
diff changeset
23
305b7361a5bd showalgo: save a snapshot instead of waiting for keyboard input
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 71
diff changeset
24
305b7361a5bd showalgo: save a snapshot instead of waiting for keyboard input
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 71
diff changeset
25 function snapshot()
305b7361a5bd showalgo: save a snapshot instead of waiting for keyboard input
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 71
diff changeset
26 persistent x = 1;
305b7361a5bd showalgo: save a snapshot instead of waiting for keyboard input
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 71
diff changeset
27 fname = sprintf("%02d.png", x);
305b7361a5bd showalgo: save a snapshot instead of waiting for keyboard input
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 71
diff changeset
28 print("-dpng", fname);
305b7361a5bd showalgo: save a snapshot instead of waiting for keyboard input
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 71
diff changeset
29 x++;
305b7361a5bd showalgo: save a snapshot instead of waiting for keyboard input
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 71
diff changeset
30 endfunction
68
5510ac95a3d3 last minute fixes
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 67
diff changeset
31
66
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
32 for iter = 1:length(Am)
69
456e3f722147 showalgo: fix handling of the jackpot casex
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 68
diff changeset
33 if iter > rows(L)
456e3f722147 showalgo: fix handling of the jackpot casex
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 68
diff changeset
34 break
456e3f722147 showalgo: fix handling of the jackpot casex
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 68
diff changeset
35 endif
456e3f722147 showalgo: fix handling of the jackpot casex
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 68
diff changeset
36
66
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
37 ## Reset the image
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
38 imgH = origH;
67
1aa38f4846e0 showalgo: show the rank
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 66
diff changeset
39
66
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
40 ## Make greater-than red
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
41 red = imgH(:,:,1);
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
42 red(colidx < L(iter, :)') = 1;
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
43 imgH(:, :, 1) = red;
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
44
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
45 ## Make less-than blue
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
46 blue = imgH(:,:,3);
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
47 blue(colidx > R(iter, :)') = 1;
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
48 imgH(:, :, 3) = blue;
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
49
67
1aa38f4846e0 showalgo: show the rank
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 66
diff changeset
50 printf("Remaining: %d\n", remaining(iter))
66
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
51 imshow(imgH);
74
305b7361a5bd showalgo: save a snapshot instead of waiting for keyboard input
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 71
diff changeset
52 snapshot;
66
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
53
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
54 ## Make the guess yellow
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
55 [i,j] = find(Am(iter) == H);
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
56 imgH(i,j,1) = imgH(i,j,2) = 1;
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
57 imgH(i,j,3) = 0;
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
58
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
59 imshow(imgH);
74
305b7361a5bd showalgo: save a snapshot instead of waiting for keyboard input
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 71
diff changeset
60 snapshot;
66
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
61
70
430f958f007c showalgo.m: restore hack for final iteration
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 69
diff changeset
62 if iter == length(Am)
430f958f007c showalgo.m: restore hack for final iteration
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 69
diff changeset
63 break
430f958f007c showalgo.m: restore hack for final iteration
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 69
diff changeset
64 endif
430f958f007c showalgo.m: restore hack for final iteration
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 69
diff changeset
65
66
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
66 ## Check the left side
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
67 imgLeft = imgH;
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
68 red = imgH(:, :, 1);
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
69 green = imgH(:, :, 2);
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
70 blue = imgH(:, :, 3);
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
71
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
72 idx = colidx > P(iter,:)';
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
73
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
74 ## Brighten blue
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
75 blue(idx) = 1;
67
1aa38f4846e0 showalgo: show the rank
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 66
diff changeset
76
66
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
77 ## Dim red and green
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
78 red(idx) .*= 0.5;
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
79 green(idx) .*= 0.5;
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
80
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
81 imgLeft(:,:,2) = green;
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
82 imgLeft(:,:,3) = blue;
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
83
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
84 ## Make the guess yellow again
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
85 [i,j] = find(Am(iter) == H);
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
86 imgH(i,j,1) = imgH(i,j,2) = 1;
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
87 imgH(i,j,3) = 0;
67
1aa38f4846e0 showalgo: show the rank
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 66
diff changeset
88
66
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
89 imshow(imgLeft);
74
305b7361a5bd showalgo: save a snapshot instead of waiting for keyboard input
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 71
diff changeset
90 snapshot;
66
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
91
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
92 ## Check the right side
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
93 imgRight = imgH;
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
94 red = imgH(:, :, 1);
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
95 green = imgH(:, :, 2);
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
96 blue = imgH(:, :, 3);
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
97
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
98 idx = colidx < Q(iter,:)';
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
99
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
100 ## Brighten red
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
101 blue(idx) = 1;
67
1aa38f4846e0 showalgo: show the rank
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 66
diff changeset
102
66
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
103 ## Dim blue and green
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
104 blue(idx) .*= 0.5;
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
105 green(idx) .*= 0.5;
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
106
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
107 imgRight(:,:,2) = green;
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
108 imgRight(:,:,3) = blue;
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
109
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
110 ## Make the guess yellow again
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
111 [i,j] = find(Am(iter) == H);
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
112 imgH(i,j,1) = imgH(i,j,2) = 1;
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
113 imgH(i,j,3) = 0;
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
114 imshow(imgRight);
74
305b7361a5bd showalgo: save a snapshot instead of waiting for keyboard input
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 71
diff changeset
115 snapshot;
66
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
116
68
5510ac95a3d3 last minute fixes
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 67
diff changeset
117 imshow(imgH);
5510ac95a3d3 last minute fixes
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 67
diff changeset
118 printf("rank is between %d and %d (target: %d)\n",
5510ac95a3d3 last minute fixes
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 67
diff changeset
119 Ptot(iter), Qtot(iter), medc_idx)
74
305b7361a5bd showalgo: save a snapshot instead of waiting for keyboard input
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 71
diff changeset
120 snapshot;
68
5510ac95a3d3 last minute fixes
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 67
diff changeset
121
66
916349600c4b algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
122 endfor
68
5510ac95a3d3 last minute fixes
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 67
diff changeset
123
5510ac95a3d3 last minute fixes
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 67
diff changeset
124 if (jackpot)
5510ac95a3d3 last minute fixes
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 67
diff changeset
125 printf("Jackpot!\n")
5510ac95a3d3 last minute fixes
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 67
diff changeset
126 endif
74
305b7361a5bd showalgo: save a snapshot instead of waiting for keyboard input
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 71
diff changeset
127 snapshot;