Swift:
class LimUniqueResponder {
private var responses: [String] = []
private var urg: UniqueRandomGenerator
private let lim: Int
// Constructor
init(lim: Int) {
self.lim = lim
self.urg = UniqueRandomGenerator(range: 0)
}
// Method to get a response
func getAResponse() -> String {
if responses.isEmpty {
return ""
}
return responses[urg.getUniqueRandom()]
}
// Method to check if responses contain a string
func responsesContainsStr(_ item: String) -> Bool {
return responses.contains(item)
}
// Method to check if a string contains any response
func strContainsResponse(_ item: String) -> Bool {
for response in responses {
if response.isEmpty {
continue
}
if item.contains(response) {
return true
}
}
return false
}
// Method to add a response
func addResponse(_ s1: String) {
if responses.count > lim - 1 {
responses.removeFirst()
}
if !responses.contains(s1) {
responses.append(s1)
urg = UniqueRandomGenerator(range: responses.count)
}
}
func addResponses(_ replies: String...) {
for value in replies {
addResponse(value)
}
}
func getSavableStr() -> String {
return responses.joined(separator: "_")
}
func getLastItem() -> String {
if responses.isEmpty {
return ""
}
return responses.last!
}
}
Last edited: