Deutsch English Français Italiano |
<652040ed$0$7527$426a74cc@news.free.fr> View for Bookmarking (what is this?) Look up another Usenet article |
X-Received: by 2002:a5d:4e4e:0:b0:321:13a4:425d with SMTP id r14-20020a5d4e4e000000b0032113a4425dmr62107wrt.7.1696612589361; Fri, 06 Oct 2023 10:16:29 -0700 (PDT) Path: ...!news-out.google.com!nntp.google.com!proxad.net!feeder1-2.proxad.net!cleanfeed1-a.proxad.net!nnrp6-1.free.fr!not-for-mail Subject: Re: TV Zap From: =?UTF-8?B?RnJhbsOnb2lzIEd1aWxsZXQ=?= <guillet.francois@wanadoo.fr> References: <651dbae6$0$7463$426a74cc@news.free.fr> <ay4iMMu4YMzBgOmGxRcBP0UGoRc@jntp> Newsgroups: fr.sci.maths X-Newsreader: MesNews/1.08.06.00 Date: Fri, 06 Oct 2023 19:16:29 +0200 MIME-Version: 1.0 X-Face: &W|6U/fRZhPQe.DoT9!N+FjhHe!St`rbs`!**{SIrH/$mU%*Fn![0tKa>3i2/VNC#)OS$je U5Y[[>{4Q-nf3p~%*~&=PX;icirfK\`3U9/6_2Rh%]kBJ=n"e|~+J!_Cehr=@qyLOx^(T[jC(Sqagk WU_Kp8lwP)i=Fjyf Lines: 68 Message-ID: <652040ed$0$7527$426a74cc@news.free.fr> Organization: Guest of ProXad - France NNTP-Posting-Date: 06 Oct 2023 19:16:29 CEST NNTP-Posting-Host: 90.105.147.124 X-Trace: 1696612589 news-2.free.fr 7527 90.105.147.124:62506 X-Complaints-To: abuse@proxad.net Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 8bit Bytes: 4205 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; }