Re: TV Zap

Liste des GroupesRevenir à fs maths 
Sujet : Re: TV Zap
De : guillet.francois (at) *nospam* wanadoo.fr (François Guillet)
Groupes : fr.sci.maths
Date : 06. Oct 2023, 19:16:29
Autres entêtes
Organisation : Guest of ProXad - France
Message-ID : <652040ed$0$7527$426a74cc@news.free.fr>
References : 1 2
User-Agent : MesNews/1.08.06.00
pehache a présenté l'énoncé suivant :
Le 04/10/2023 à 21:20, François Guillet a écrit :
Pour une appli de "zapping" au hasard parmi N chaînes TV, l'utilisateur cliquera un bouton pour avancer et un autre pour reculer dans une séquence aléatoire qui fournira le N° de la chaîne à jouer.
 Ce numéro aléatoire des chaînes suivantes et précédentes devra être calculés à partir du N° de chaîne actuellement lue.
S'il regarde par exemple la 23, la suivante pourra être la 5 et la précédente la 47, mais toujours ces deux mêmes à partir de la 23. Il me semble que VLC fait ça.
 Bien sûr on pourra générer au départ des séquences différentes à partir d'un nombre S mais ensuite la séquence est déterminée.
Pour des raisons d'implémentation je ne veux pas à voir à mémoriser une séquence aléatoire, c'est toujours par calcul qu'on avancera ou reculera dans la séquence.
 Si C est le numéro de la chaîne lue, il me faut donc deux fonctions liées Favant et Farrière tel que A+ = Fav(S,C) et A- = Far(S,C), où A+ et A- sont les numéros des chaînes aléatoires suivantes et précédentes.
 Et on devra avoir C = Far(S,A+) = Fav(S,A-) puisque la séquence est "figée" et utilisée de façon bi-directionnelle.
 Contrainte supplémentaire, le tour de la séquence devra se faire sur toutes les chaînes et sans doublon. Quelles fonctions les plus simples possibles pourrait-on utiliser ?
>
Si pgcd(N,S) = 1, alors
Fav(S,C) = modulo(C-1+S,N)+1
Fav(S,C) = modulo(C-1-S,N)+1
répond aux critères
>
Une fois S fixé la série n'a en réalité rien d'aléatoire, mais certains choix de S donnent des séries ont qui l'air (même si seulement l'air) aléatoires.
N = 12
S = 1 :    1    2    3    4    5    6    7    8    9   10   11   12
S = 3 :    1    4    7   10    1    4    7   10    1    4    7   10
S = 5 :    1    6   11    4    9    2    7   12    5   10    3    8
S = 7 :    1    8    3   10    5   12    7    2    9    4   11    6
S = 11:    1   12   11   10    9    8    7    6    5    4    3    2
Ca marche parfaitement et c'est simplissime. Le seul souci a été de me retrouver avec des valeurs négatives là où on a -S dans la formule. Prendre la valeur absolue ne résolvait rien.
J'ai donc ajouté n*S pour être sûr d'avoir du positif, et bien sûr comme c'est un multiple de n le modulo ne change pas.
Cerise sur le gâteau, avec S=1, on zappe dans l'ordre des chaînes.
Résultat en JS. "type" et le type d'avancement qu'on souhaite.
g et d pour droite et gauche : on zappe en aléatoire comme prévu.
h et b pour haut et bas : on zappe par +1 / -1 dans la liste.
switch (type) {
   case 'h' :
      S=1;
case 'g':
this.C = 1 + (this.C -1 -S + n*S) % n ;
break;
case 'b' :
S=1;
case 'd' :
this.C = 1 + (this.C -1 + S) % n ;
break;
}

Date Sujet#  Auteur
4 Oct 23 * TV Zap20François Guillet
4 Oct 23 +* Re: TV Zap11robby
5 Oct 23 i+- Re: TV Zap1pehache
5 Oct 23 i+- Re: TV Zap1François Guillet
7 Oct 23 i`* Re: TV Zap8Samuel Devulder
8 Oct 23 i `* Re: TV Zap7robby
9 Oct 23 i  +* Re: TV Zap5Samuel Devulder
10 Oct 23 i  i`* Re: TV Zap4robby
10 Oct 23 i  i `* Re: TV Zap3Samuel Devulder
15 Oct 23 i  i  `* Re: TV Zap2pehache
15 Oct 23 i  i   `- Re: TV Zap1Samuel Devulder
15 Oct 23 i  `- Re: TV Zap1pehache
4 Oct 23 +- Re: TV Zap1"Benoît L."
4 Oct 23 `* Re: TV Zap7pehache
5 Oct 23  +* Re: TV Zap2pehache
5 Oct 23  i`- Re: TV Zap1François Guillet
6 Oct 23  +- Re: TV Zap1robby
6 Oct 23  `* Re: TV Zap3François Guillet
15 Oct 23   `* Re: TV Zap2pehache
16 Oct 23    `- Re: TV Zap1robby

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal