Home / ใบงานที่ 4 - Tuple & Set

ใบงานที่ 4 - Tuple & Set

You are not logged in.

If you are a current student, please Log In for full access to this page.

1) โจทย์ (8 คะแนน)

โรงเรียนวิทยาศาสตร์แห่งหนึ่งกำลังจะจัดงาน Science Fair ขึ้นในเดือนมกราคม 2565 ภายในงานนอกจากจะมีการนำเสนอโครงงานแล้ว ยังให้ผู้เข้าร่วมงานลงทะเบียนทำกิจกรรมต่าง ๆ ฝ่ายลงทะเบียนมีข้อมูลการลงทะเบียนแต่ละกิจกรรม ซึ่งเก็บเป็นเซตของรหัสผู้เข้าร่วมงานที่ลงทะเบียนทำกิจกรรมนั้น ๆ ตัวอย่างการเก็บข้อมูล เช่น

a = {'004', '003', '032', '097'} 

คือเซตของรหัสผู้เข้าร่วมงานที่ลงทะเบียนทำกิจกรรม A

b = {'003', '004'} 

คือเซตของรหัสผู้เข้าร่วมงานที่ลงทะเบียนทำกิจกรรม B

c = {'120', '097', '003'} 

คือเซตของรหัสผู้เข้าร่วมงานที่ลงทะเบียนทำกิจกรรม C

ฝ่ายลงทะเบียนต้องการทราบข้อมูล 2 อย่าง ได้แก่

  1. รหัสผู้เข้าร่วมงานที่ลงทะเบียนทำกิจกรรมอย่างน้อยหนึ่งกิจกรรม เช่น

    • ผู้เข้าร่วมงานที่ลงทะเบียนทำกิจกรรม A หรือ B อย่างน้อยหนึ่งกิจกรรม

      ซึ่งถ้าพิจารณาตามตัวอย่างด้านบน คำตอบคือ รหัส '003', '004', '032', '097'

  2. รหัสผู้เข้าร่วมงานที่ลงทะเบียนทำบางกิจกรรมเหมือนกัน เช่น

    • ผู้เข้าร่วมงานที่ลงทะเบียนทำกิจกรรม A และ B

      ซึ่งถ้าพิจารณาตามตัวอย่างด้านบน คำตอบคือ รหัส '003' และ '004'

    • ผู้เข้าร่วมงานที่ลงทะเบียนทำกิจกรรม A และ B และ C

      ซึ่งถ้าพิจารณาตามตัวอย่างด้านบน คำตอบคือ รหัส '003'

จงเขียนฟังก์ชัน sciAct ดังนี้

เป็นฟังก์ชันที่รับ arguments ที่เป็นข้อมูลประเภท set (เซตของรหัสผู้เข้าร่วมงานที่ลงทะเบียนทำกิจกรรมนั้น ๆ) กี่ตัวก็ได้ (สมมติว่ากิจกรรมมีไม่จำกัด) แล้วส่งค่ากลับเป็นลิสต์ของรหัสผู้เข้าร่วมงานที่ลงทะเบียนทำกิจกรรมอย่างน้อยหนึ่งกิจกรรม และลิสต์ของรหัสผู้เข้าร่วมงานที่ลงทะเบียนทำบางกิจกรรมเหมือนกัน ทั้งนี้ ข้อมูลภายในทั้งสองลิสต์ให้เรียงลำดับข้อมูลตามตัวอักษร A -> Z

ตัวอย่างการเรียกใช้ฟังก์ชัน sciAct

a = {'004', '003', '032', '097'}
b = {'003', '004'}
c = {'120', '097', '003'}
 
print(sciAct(a, b))
print(sciAct(c, a, b))

ซึ่งผลลัพธ์ที่ควรได้ คือ

(['003', '004', '032', '097'], ['003', '004'])
(['003', '004', '032', '097', '120'], ['003'])