Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1152 connectés 

  FORUM HardWare.fr
  Programmation
  Javascript/Node.js

  Plan de table aléatoire

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Plan de table aléatoire

n°2401471
lePureStyl​e
Posté le 26-11-2021 à 09:13:34  profilanswer
 

Bonjour
 
J'ai de solides notions en HTML/CSS/SASS (qui ne sont pas des langages de programmation), et quelques vagues et très légères notions en javaScript, d'où ma demande d'aide à ceux qui possèdent une logique algorithmique.
 
Ma problématique est la suivante :
 
J'ai 20 invités, donc 20 noms. J'ai 5 tables avec 4 invités par table.
 
Je souhaite de manière totalement aléatoire assigner mes 20 invités aux 5 tables.
 
J'ai vaguement l'idée qu'il va falloir un ou plusieurs array et des boucles, mais suis complètement perdu dans le process et le bon ordre des choses.
 
Si quelqu'un pouvait svp m'aider à faire cet algorithme :)


Message édité par lePureStyle le 26-11-2021 à 16:07:42
mood
Publicité
Posté le 26-11-2021 à 09:13:34  profilanswer
 

n°2401486
mechkurt
Posté le 26-11-2021 à 10:58:31  profilanswer
 

Y'a plusieurs façon de faire mais je dirait que la plus simple à comprendre c'est sans doute de prendre des morceaux d'un tableau au préalable mélangé.
Je te met du pseudo code et tu pourras te renseigner ou revenir vers nous si vraiment tu n'y arrives pas...
 

Code :
  1. function Shuffle(my_array) {
  2. //fonction qui doit se trouver assez facilement sur Internet
  3. //grosso modo tu dépiles un array 'au hasard' pour en remplir un autre que tu renvoie à la fin
  4. return my_shuffled_array;
  5. }
  6. var guest_names = ['luc', 'jean', ...];
  7. var shuffled_names = Shuffle(guest_names);
  8. do {
  9. //on tire 5 noms du tableau "mélangé" en les enlevants de celui-ci
  10. var tmp_names = shuffled_names.splice(0, 5);
  11. //on les envoies dans la console de debug, tu pourais les afficher dans un div ou autre...
  12. console.log(tmp_names);
  13. } while (shuffled_names.length > 0);//condition pour continuer la boucle, on le fait tant qu'on a des noms


---------------
D3
n°2401531
lePureStyl​e
Posté le 26-11-2021 à 16:20:08  profilanswer
 

Merci pour ton aide !  :jap:  
 
En me renseignant à partir de ton code j'ai pu trouver en farfouillant le net une solution à base de mélange de Fisher-Yates.
Donc grosso modo on a une fonction qui mélange le tableau, puis une seconde qui découpe en plusieurs parties.
Je ne sais pas si on peut optimiser le code en fusionnant les 2 fonctions en une seule...
 
voici ce que ça donne :  
 

Code :
  1. let guests = ['pierre', 'paul', 'jacques', 'michel', 'henri', 'louis', 'monique', 'céline', 'gérard', 'annick', 'rose', 'héloise', 'carmen' , 'jeff', 'sandrine', 'marie', 'ines', 'milton', 'david', 'chris'];
  2. function shuffle(array) {
  3.   let m = array.length, t, i;
  4.   // While there remain elements to shuffle…
  5.   while (m) {
  6.     // Pick a remaining element…
  7.     i = Math.floor(Math.random() * m--);
  8.     // And swap it with the current element.
  9.     t = array[m];
  10.     array[m] = array[i];
  11.     array[i] = t;
  12.   }
  13.  
  14.   return array;
  15. }
  16. function spliceIntoChunks(arr, chunkSize) {
  17.     const res = [];
  18.     while (arr.length > 0) {
  19.         const chunk = arr.splice(0, chunkSize);
  20.         res.push(chunk);
  21.     }
  22.     return res;
  23. }
  24. console.log(spliceIntoChunks(shuffle(guests), 5));


Message édité par lePureStyle le 26-11-2021 à 16:33:22
n°2401535
mechkurt
Posté le 26-11-2021 à 16:41:38  profilanswer
 

Optimiser, je ne penses pas vraiment, et je ne suis pas sur que ce soit bien nécessaire...
 
Tu peux compresser le code en supprimant les espaces et "anonymisant" tes fonctions, et/ou l’encapsuler dans une fonction anonyme pour l'isoler du reste du code de ta page mais ça me semble un peu overkill ! ^^
 
Est ce qu'il va y'avoir de l'interactivité, genre l'utilisateur rentre les noms et un nombre de table par exemple ?


---------------
D3
n°2401539
lePureStyl​e
Posté le 26-11-2021 à 17:12:16  profilanswer
 

mechkurt a écrit :

Optimiser, je ne penses pas vraiment, et je ne suis pas sur que ce soit bien nécessaire...
 
Tu peux compresser le code en supprimant les espaces et "anonymisant" tes fonctions, et/ou l’encapsuler dans une fonction anonyme pour l'isoler du reste du code de ta page mais ça me semble un peu overkill ! ^^
 
Est ce qu'il va y'avoir de l'interactivité, genre l'utilisateur rentre les noms et un nombre de table par exemple ?


 
Non aucune interactivité.
 
Je trouvais ça beaucoup plus sympa à faire en code (donc pratiquer un peu), qu'avec des petits bouts de papier dans un chapeau.  :)

n°2401540
mechkurt
Posté le 26-11-2021 à 17:36:39  profilanswer
 

Ok, tu as des sites qui compile en live le code pour faire joujou comme ca genre codepen.io ou jsfiddle...
 
Vu que tu fais du web (html et css) tu peux t'amuser a dessiner les tables dans un canevas ou en css et a les peupler de tes noms dynamique, ou bien te lancer un nouveau défi...
 
Bonne continuation !


---------------
D3

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Javascript/Node.js

  Plan de table aléatoire

 

Sujets relatifs
Plugin Wordpress > Easy Table of Contentsaffichage aléatoire bigcartel
Android java quelle application tourne au premier plan ?[MySQL] MAJ d'une table avec trigger et conditions
[MySQL] Table obèseSql Server Jointure entre table sur 2 BDD
[MySQL] - Ajouter un champ calculé à une tableactualiser une table à partir d'une autre
Fond arrière plan / page saisie mot de passeRegrouper plusieurs lignes d'une seule table avec un ID commun
Plus de sujets relatifs à : Plan de table aléatoire


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR