|
发表于 2024-2-26 10:30:41
|
显示全部楼层
翻了下我的代码
首先是因为任务太蛋疼用了伪中文编程
- const 未知 = 0
- const 男性 = 1
- const 女性 = 2
- const 无性 = 3
- const 高 = 1
- const 矮 = 2
- const 胖 = 1
- const 瘦 = 2
- const 青年 = 1
- const 中年 = 2
- const 老年 = 3
- const 中青年 = 4
- const 中老年 = 5
- const 深色 = 1
- const 浅色 = 2
- const 布衣 = 1
- const 夹袄 = 2
- const 丝绸衣服 = 3
- const 靴子 = 1
- const 布鞋 = 2
- const 凉鞋 = 3
- const 性别 = 0
- const 高矮 = 1
- const 胖瘦 = 2
- const 年纪 = 3
- const 衣色 = 4
- const 衣型 = 5
- const 鞋色 = 6
- const 鞋型 = 7
- const 不确定 = 0
- const 匹配 = 1
- const 不匹配 = 2
- const 不排除嫌疑 = 0
- const 排除嫌疑 = 1
- const 罪犯 = 2
复制代码
然后是关键回复定义,只放几条脱个敏
- let colors = {
- "": 浅色,
- "Green": 浅色,
- "Yellow": 浅色,
- "Cyan": 浅色,
- "White": 浅色,
- "Black": 深色,
- "Red": 深色,
- "Blue": 深色,
- "Magenta": 深色,
- }
- let body = {
- "高大魁梧": [男性, 高, 胖],
- "宛如一根竹竿": [男性, 高, 瘦],
- }
- let clues = {
- "你找错人了。": -99,
- "我啥消息也不了解啊。": false,
- "你已经问过了,我这里就了解那么多消息。": false,
- "当时我正路过这个商铺,看见一个男子在附近鬼鬼祟祟地不知道干嘛。": [性别, 男性],
- }
复制代码
匹配和年龄判断
- //用证词来匹配 嫌疑人/嫌疑人证词
- let matchperson = function (view, claim) {
- for (var i = 0; i < claim.length; i++) {
- if (claim[i] != 0 && view[i] != 0) {
- if (i == 年纪) {
- switch (view[i]) {
- case 青年:
- if (claim[i] != 中青年) {
- return (claim[i] == view[i]) ? 匹配 : 不匹配
- }
- break
- case 中年:
- if (claim[i] != 中青年 && claim[i] != 中老年) {
- return (claim[i] == view[i]) ? 匹配 : 不匹配
- }
- break
- case 老年:
- if (claim[i] != 中老年) {
- return (claim[i] == view[i]) ? 匹配 : 不匹配
- }
- break
- }
- } else {
- return (claim[i] == view[i]) ? 匹配 : 不匹配
- }
- }
- }
- return 不确定
- }
复制代码 设置判定标志位的代码
- let conclusion = function (person, value) {
- if (person.Suspicion == 不排除嫌疑) {
- if (value == 排除嫌疑) {
- person.Suspicion = 排除嫌疑
- Note("排除 " + person.ID + "@" + person.Location + "的嫌疑")
- } else {
- person.Suspicion = 罪犯
- Note("推定 " + person.ID + "@" + person.Location + "是罪犯")
- }
- }
- }
复制代码 核心逻辑
- let think = function () {
- let result = []
- for (var i = 0; i < App.Quest.Juewei.Data.Persons.length; i++) {
- Note("根据" + App.Quest.Juewei.Data.Persons[i].ID + "@" + App.Quest.Juewei.Data.Persons[i].Location + "消息 初步排除")
- if (matchperson(App.Quest.Juewei.Data.Persons[i].View, App.Quest.Juewei.Data.Persons[i].Claim) == 匹配) {
- conclusion(App.Quest.Juewei.Data.Persons[i], 排除嫌疑)
- }
- for (var k = 0; k < App.Quest.Juewei.Data.Persons.length; k++) {
- if (k != i) {
- if (matchperson(App.Quest.Juewei.Data.Persons[k].View, App.Quest.Juewei.Data.Persons[i].Claim) == 不匹配) {
- conclusion(App.Quest.Juewei.Data.Persons[k], 排除嫌疑)
- }
- }
- }
- }
- while (true) {
- let changed = false
- for (var i = 0; i < App.Quest.Juewei.Data.Persons.length; i++) {
- //验证第i个人的证词
- let matched = 0
- if (App.Quest.Juewei.Data.Persons[i].Suspicion == 罪犯) {
- changed = false
- break
- }
- for (var k = 0; k < App.Quest.Juewei.Data.Persons.length; k++) {
- if (k != i) {
- if (App.Quest.Juewei.Data.Persons[i].Suspicion == 排除嫌疑) {
- //用排除嫌疑的人的证词去验证别人的证词
- let result = matchperson(App.Quest.Juewei.Data.Persons[k].Claim, App.Quest.Juewei.Data.Persons[i].Claim)
- switch (result) {
- case 不匹配:
- Note("根据" + App.Quest.Juewei.Data.Persons[i].ID + "@" + App.Quest.Juewei.Data.Persons[i].Location + " 排除冲突证据")
- conclusion(App.Quest.Juewei.Data.Persons[k], 罪犯)
- changed = false
- break
- case 匹配:
- if (App.Quest.Juewei.Data.Persons[k].Suspicion == 不排除嫌疑) {
- Note("根据" + App.Quest.Juewei.Data.Persons[i].ID + "@" + App.Quest.Juewei.Data.Persons[i].Location + " 推断相似证据")
- conclusion(App.Quest.Juewei.Data.Persons[k], 排除嫌疑)
- changed = true
- }
- break
- }
- }
- if (App.Quest.Juewei.Data.Persons[i].Suspicion == 不排除嫌疑 && App.Quest.Juewei.Data.Persons[k].Suspicion == 不排除嫌疑) {
- //证据需要有嫌疑人匹配
- let result = matchperson(App.Quest.Juewei.Data.Persons[k].View, App.Quest.Juewei.Data.Persons[i].Claim)
- if (result == 匹配) {
- matched++
- }
- }
- }
- }
- if (App.Quest.Juewei.Data.Persons[i].Suspicion == 不排除嫌疑 && App.Quest.Juewei.Data.Persons[i].Claim.join("") != "00000000" && matched == 0) {
- //没有一个嫌疑人符合证词
- Note("根据" + App.Quest.Juewei.Data.Persons[i].ID + "@" + App.Quest.Juewei.Data.Persons[i].Location + " 推断伪证")
- conclusion(App.Quest.Juewei.Data.Persons[i], 罪犯)
- changed = false
- break
- }
- }
- if (changed == false) {
- break
- }
- }
- for (var i = 0; i < App.Quest.Juewei.Data.Persons.length; i++) {
- if (App.Quest.Juewei.Data.Persons[i].Suspicion == 不排除嫌疑) {
- Note(App.Quest.Juewei.Data.Persons[i].ID + "@" + App.Quest.Juewei.Data.Persons[i].Location + "有嫌疑")
- result.push(App.Quest.Juewei.Data.Persons[i])
- }
- if (App.Quest.Juewei.Data.Persons[i].Suspicion == 罪犯) {
- Note(App.Quest.Juewei.Data.Persons[i].ID + "@" + App.Quest.Juewei.Data.Persons[i].Location + "是罪犯")
- return [App.Quest.Juewei.Data.Persons[i]]
- }
- }
- if (result.length == 0) {
- result = App.Quest.Juewei.Data.Persons
- }
- let output = []
- while (output.length < 2 && result.length != 0) {
- output.push(result.splice(RandomInt(result.length), 1)[0])
- }
- return output
- }
复制代码
|
|