/* brasse2.c */

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include "hasard.h"

/* traite une lettre au hasard de mot. max est le nombre de lettres non traitées*/
void av (int max, char *mot);

void brasse (char *mot);

int main (int argc, char *argv[])
{
  srand(time(NULL));
  
  for (int i = 1 ; i < argc ; i++) {
    brasse (argv[i]);
    putchar (' ');
  }
  putchar ('\n');
  
  return 0;
}

void brasse (char *mot)
{
  int L = strlen (mot); /* nb de lettres restant à afficher */
 
  if (L <= 3) {
    printf ("%s", mot);
  }
  else {
    printf ("%c%c", mot[0], mot[1]);
    L += -2;  /* déja 2 char affichés */
    
    /* écrire les lettres entre mot[2] et mot[L] mélangées */
    
    while (L != 0) { 
      av (L, mot);
      L--; 
    }
    /* fin du while : L == 0 , toutes les lettres ont été affichées */
  }
}

void av (int max, char *mot)
{
  int cour;   /* parcourt la chaine mot */
  int H;      /* nombre de lettres (pas caractère) à parcourir */
  
  H = hasard(max);   /* 0 <= H < max */
  cour = 2;
  
  while (H != 0 || mot[cour] == '*') {

    if (mot[cour] != '*') {
      H--;
    }
    cour++;
  }
  putchar (mot[cour]);
  mot[cour] = '*';
}

