func (i Ingredient) genome(materials material.MaterialSlice) string { materialIndex := materials.Index(i.Material) gradeS := fmt.Sprintf("%d", i.Grade.Index()) amountS := fmt.Sprintf("%d", i.Quantity) numLength := strconv.FormatInt(int64(len(strconv.FormatInt(int64(len(materials)), 10))), 10) materialIndexS := fmt.Sprintf("%0"+numLength+"d", materialIndex) useIndex := 0 for k, use := range i.Material.Uses { if use == i.Use { useIndex = k break } } useIndexS := fmt.Sprintf("%02d", useIndex) return materialIndexS + gradeS + amountS + useIndexS }