view 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 source

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