Fix off by one error in GenUniqueItems

main
Jerry Aldrich 5 years ago
parent edbae31636
commit ccffe00110
  1. 14
      internal/helpers/helpers.go

@ -18,20 +18,26 @@ func GenUniqueItems(total int, fn genFunc, seed int64) []string {
items := []string{} items := []string{}
// Generate initial items // Generate initial items
for i := 0; i <= total; i++ { for i := 0; i < total; i++ {
items = append(items, fn(roller.TableRoll())) items = append(items, fn(roller.TableRoll()))
} }
// Walk items and check if they match any other item. If they do then replace // Walk items and check if they match any other item. If they do then replace
// it with a fresh item. This doesn't guarantee unique items, but prevents // it with a fresh item. This doesn't guarantee unique items, but prevents
// Denial of Service attacks (a bit) // Denial of Service attacks (a bit) by only doing 5 passes.
for i, item := range items { passes := 5
for p := 0; p <= passes; p++ {
for i, _ := range items {
for x := 0; x < len(items); x++ { for x := 0; x < len(items); x++ {
if items[x] == item { if x == i {
break
}
if items[x] == items[i] {
items[i] = fn(roller.TableRoll()) items[i] = fn(roller.TableRoll())
break break
} }
} }
} }
}
return items return items
} }

Loading…
Cancel
Save