// 异常的打卡记录
func HW2023027() {
struct Record {
var staffId: Int
var time: Int
var distance: Int
var actualId: String
var registerId: String
func toString() -> String {
let temp = [String(self.staffId), String(self.time), String(self.distance), self.actualId, self.registerId]
return temp.joined(separator: ",")
}
}
var inputArr: [String] = []
// 测试用例
// inputArr = ["100000,10,1,ABCD,ABCD", "100000,50,10,ABCD,ABCD"]
// inputArr = ["100000,10,1,ABCD,ABCD", "100000,80,10,ABCE,ABCD"]
inputArr = ["100000,10,1,ABCD,ABCD", "100001,80,10,ABCE,ABCE"]
// 开始代码
// while let line = readLine() {
// inputArr.append(line)
// }
var arr: [Record] = []
for str in inputArr {
let tempArr = str.components(separatedBy: ",")
if tempArr.count == 5 {
let rec: Record = Record(staffId: Int(tempArr[0])!, time: Int(tempArr[1])!, distance: Int(tempArr[2])!, actualId: tempArr[3], registerId: tempArr[4])
arr.append(rec)
}
}
var resArr: [String] = []
for (i,rec1) in arr.enumerated() {
if rec1.actualId != rec1.registerId { // 判断是设备与注册设备是否一致
resArr.append(rec1.toString())
continue
}
for j in (i+1)..<arr.count {
let rec2 = arr[j]
if rec2.staffId != rec1.staffId {// 判断两工号是否一致
continue
}
let timeD = abs(rec1.time - rec2.time) // 两次打卡时间间隔
let distanceD = abs(rec1.distance - rec2.distance) // 两次打卡距离
if timeD<60 && distanceD>5 {
resArr.append(rec1.toString())
resArr.append(rec2.toString())
break
}
}
}
if resArr.count == 0 {
print("null")
}else {
print(resArr.joined(separator: ";"))
}
}