diff talk/code/showalgo.m @ 66:916349600c4b

algorithm-visualisation code
author Jordi Gutiérrez Hermoso <jordigh@octave.org>
date Wed, 18 May 2016 17:03:43 -0400
parents
children 1aa38f4846e0
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/talk/code/showalgo.m
@@ -0,0 +1,99 @@
+H = load("H");
+L = load("L") + 1;
+R = load("R") + 1;
+P = load("P") + 1;
+Q = load("Q") + 1;
+Ptot = load("Ptotal");
+Qtot = load("Qtotal");
+remaining = load("remaining");
+mc = load("mc");
+jackpot = load("jackpot");
+Am = load("Am");
+Am(end+1) = mc;
+
+colidx = 1:columns(H);
+
+origH = repmat((H+1)/2, 1, 1, 3);
+
+for iter = 1:length(Am)
+  ## Reset the image
+  imgH = origH;
+  
+  ## Make greater-than red
+  red = imgH(:,:,1);
+  red(colidx < L(iter, :)') = 1;
+  imgH(:, :, 1) = red;
+
+  ## Make less-than blue
+  blue = imgH(:,:,3);
+  blue(colidx > R(iter, :)')  = 1;
+  imgH(:, :, 3) = blue;
+
+  imshow(imgH);
+  pause
+
+  ## Make the guess yellow
+  [i,j] = find(Am(iter) == H);
+  imgH(i,j,1) = imgH(i,j,2) = 1;
+  imgH(i,j,3) = 0;
+
+  imshow(imgH);
+  pause
+
+  if iter == length(Am)
+    break;
+  endif
+
+  ## Check the left side
+  imgLeft = imgH;
+  red = imgH(:, :, 1);
+  green = imgH(:, :, 2);
+  blue = imgH(:, :, 3);
+
+  idx = colidx > P(iter,:)';
+
+  ## Brighten blue
+  blue(idx) = 1;
+  
+  ## Dim red and green
+  red(idx) .*= 0.5;
+  green(idx) .*= 0.5;
+
+  imgLeft(:,:,2) = green;
+  imgLeft(:,:,3) = blue;
+
+  ## Make the guess yellow again
+  [i,j] = find(Am(iter) == H);
+  imgH(i,j,1) = imgH(i,j,2) = 1;
+  imgH(i,j,3) = 0;
+  
+  imshow(imgLeft);
+  pause
+
+  ## Check the right side
+  imgRight = imgH;
+  red = imgH(:, :, 1);
+  green = imgH(:, :, 2);
+  blue = imgH(:, :, 3);
+
+  idx = colidx < Q(iter,:)';
+
+  ## Brighten red
+  blue(idx) = 1;
+  
+  ## Dim blue and green
+  blue(idx) .*= 0.5;
+  green(idx) .*= 0.5;
+
+  imgRight(:,:,2) = green;
+  imgRight(:,:,3) = blue;
+
+  ## Make the guess yellow again
+  [i,j] = find(Am(iter) == H);
+  imgH(i,j,1) = imgH(i,j,2) = 1;
+  imgH(i,j,3) = 0;
+  
+  imshow(imgRight);
+  pause
+
+endfor