code แบ่งคนเป็นสองกลุ่ม

posted on 19 Feb 2012 00:16 by plynoi in Tech directory Tech
พอดีช่วงนี้มีโจทย์ว่าต้องให้ทีมหัดประชุมทางไกลต่างประเทศ (Teleconference จะเรียกสั้นๆ ว่า TC หรือ tc) ผมซึ่งรับผิดชอบการจัดประชุมในทีมระหว่างเดือนกุมภาพันธ์ - มีนาคม ปีนี้ ต้องจัดคนในทีมเป็น 2 กลุ่ม อยู่คนละห้องกันแล้วประชุมกันผ่านโทรศัพท์เป็นภาษาอังกฤษให้รู้เรื่องกัน (คือปกติประชุมงานกันทุกอาทิตย์เป็นภาษาอังกฤษอยู่แล้ว) เลยเขียนโปรแกรมสุ่มชื่อเพื่อนขึ้นมาเล่นๆ ว่าใครจะอยู่ห้องไหน
import random

list_groupA=["staff A","staff B","staff C","staff D","staff E","staff F","staff G","Dummy"]
list_groupB=[]
for id in range(4):
  index=random.randrange(0,len(list_groupA))
  list_groupB.append(list_groupA[index])
  list_groupA.pop(index)
print(list_groupA)
print(list_groupB)
Code ทำเอาขำๆ ใช้เวลาเขียนประมาณ 20 นาทีเพราะลืมว่า range กับ random ใช้ยังไง กะตอนแรกทะลึ่งเขียนเป็น dictionary แต่เขียนไปครึ่งนึงแล้วใช้ list ง่ายๆ ดีกว่า ส่วนท่มจริงๆ มี 7 คนก็แบ่ง 4 - 4 นับ dummy อีกคนละกัน

เขียนไปเอาใช้งานจริงๆ คงเขียนด้วย JavaScript ลงหน้าเวบให้เข้ากันง่ายๆ น่อย

edit ตามความเห็นของ @lewcpe:
random.shuffle(list_groupA)
list_groupB=[list_groupA.pop() for i in range(int(len(list_groupA)/2))]


Update version JavaScript ด้วยความช่วยเหลือของน้อง @m3rlinez และ @neizod โดยแนะนำ Code แหล่มๆ อันนี้ให้ ^^
//code ใช้ jQuery นะครับ
var shuffle = function(a,b,c){for(b=a.length;b;c=0|b*Math.random(),a[c]=[a[--b],a[b]=a[c]][0]);}

$(document).ready(function(){
  $("#btnGenerate").click(function(){
    var pplArr=["staff A","staff B","staff C","staff D","staff E","staff F","staff G","Dummy"];
    shuffle(pplArr);
    $('#display1').html("First Room is "+pplArr.splice(0,4));
    $('#display2').html("Second Room is "+pplArr.toString());
  });
});

Comment

Comment:

Tweet