Menu
Coddy logo textTech

אוסף פריטים ייחודיים

חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-GO של Coddy. שיעור 68 מתוך 68.

challenge icon

אתגר

קל

צרו מערכת להסרת כפילויות שמשתמשת בדפוס הקבוצה המקובל ב-Go כדי לסנן פריטים ייחודיים מתוך אוספים של מחרוזות. האתגר הזה יבחן את היכולת שלכם להשתמש באידיום map[string]struct{} כדי לעקוב אחר פריטים שכבר נראו ולבנות אוספים שמכילים רק איברים ייחודיים.

תקבלו שתי קלטים:

  • מחרוזת שמכילה פריטים המופרדים בפסיקים (למשל, "apple,banana,apple,orange,banana,grape,apple")
  • מחרוזת שמכילה פריטים נוספים למיזוג, שגם הם מופרדים בפסיקים (למשל, "kiwi,apple,mango,banana,kiwi")

המשימה שלכם היא:

  1. ליצור פונקציה בשם getUniqueItems שמקבלת פרוסה של מחרוזות ומחזירה פרוסה חדשה שמכילה רק מחרוזות ייחודיות
  2. בתוך הפונקציה הזאת, להשתמש באידיום map[string]struct{} כדי לעקוב אחר הפריטים שכבר נראו
  3. לעבור על פרוסת הקלט ולבצע עבור כל פריט:
    • לבדוק אם הפריט קיים בקבוצה שלכם באמצעות אידיום comma ok
    • אם הפריט עדיין לא נראה, להוסיף אותו גם לקבוצה וגם לפרוסת התוצאה
  4. לנתח את הקלט הראשון באמצעות פיצול לפי פסיקים כדי לקבל את רשימת הפריטים הראשונית
  5. לנתח את הקלט השני באמצעות פיצול לפי פסיקים כדי לקבל את הפריטים הנוספים
  6. להציג את כותרת המערכת: "=== UNIQUE ITEM COLLECTOR ==="
  7. להציג את הפריטים המקוריים: "Original items: [comma-separated list of all original items]"
  8. להציג את הפריטים הנוספים: "Additional items: [comma-separated list of all additional items]"
  9. להשתמש בפונקציה getUniqueItems שלכם כדי לקבל את הפריטים הייחודיים מהרשימה המקורית
  10. להציג את הפריטים המקוריים הייחודיים: "Unique original items: [comma-separated list of unique items from original list]"
  11. לשלב את שתי פרוסות הקלט לפרוסה אחת שמכילה את כל הפריטים
  12. להשתמש בפונקציה getUniqueItems שלכם כדי לקבל את הפריטים הייחודיים מהרשימה המשולבת
  13. להציג את הפריטים הייחודיים הסופיים: "Final unique items: [comma-separated list of all unique items]"
  14. להציג נתונים סטטיסטיים של האוסף:
    • "=== COLLECTION STATISTICS ==="
    • "Total original items: [count of original items]"
    • "Total additional items: [count of additional items]"
    • "Total combined items: [count of all items combined]"
    • "Unique items found: [count of unique items]"
    • "Duplicates removed: [total combined items minus unique items]"
  15. להציג את הודעת ההשלמה: "Unique item collection completed successfully"

השתמשו בחבילה strings כדי לפצל מחרוזות קלט ובחבילה fmt לצורך הפלט. בעת חיבור הפריטים לתצוגה, השתמשו ב-strings.Join עם פסיק כמפריד. האתגר הזה מדגים כיצד אידיום הקבוצה של Go פותר ביעילות את הבעיה הנפוצה של הסרת כפילויות מאוספים, דפוס שתשתמשו בו לעיתים קרובות ביישומים לעיבוד נתונים.

נסו בעצמכם

package main

import (
	"fmt"
	"strings"
)

func main() {
	// קראו את הקלט
	var input1 string
	var input2 string
	fmt.Scanln(&input1)
	fmt.Scanln(&input2)
	
	// פצלו את מחרוזות הקלט לפרוסות
	originalItems := strings.Split(input1, ",")
	additionalItems := strings.Split(input2, ",")
	
	// TODO: כתבו כאן את הקוד שלכם
	// 1. צרו את הפונקציה getUniqueItems שמשתמשת בתבנית map[string]struct{}
	// 2. עבדו את הפריטים המקוריים כדי לקבל פריטים ייחודיים
	// 3. שלבו את שתי הפרוסות וקבלו פריטים ייחודיים מהרשימה המשולבת
	// 4. חשבו נתונים סטטיסטיים
	
	// הציגו את כותרת המערכת
	fmt.Println("=== UNIQUE ITEM COLLECTOR ===")
	
	// הציגו את הפריטים המקוריים והנוספים
	fmt.Printf("Original items: %s\n", strings.Join(originalItems, ","))
	fmt.Printf("Additional items: %s\n", strings.Join(additionalItems, ","))
	
	// TODO: הציגו את הפריטים המקוריים הייחודיים, את הפריטים הייחודיים הסופיים ואת הנתונים הסטטיסטיים
	// השתמשו ב-fmt.Printf וב-strings.Join לעיצוב הפלט
}

כל השיעורים ביחידה לוגיקה וזרימת התוכנית

תרגלו בעצמכם: קומפיילר Go אונליין