/** * @author jiutou * @updateTime 2022/12/02 * @tip 6-8 移车出库 * @description * 一.挑战模式 1.参数默认值: ①车库尺寸:6×5。 ②车子位置(如图) ③界面:给出游戏界面的直观图 2.参数范围: ①车库长固定为 6 ②车库宽自定义[1,5]【宽的大小对应车的数量】 ③车子位置自定义:以右图为例(2,3,1,2,4)【顺序为从上至下】 ④界面:直观图 【必胜策略:判断当前状态是否属于胜点集,如果是则随机操作,否则选择一种操作方式,使得操作后的状态属于胜点集。】 以下是将游戏的所有状态按胜负点分类的过程。 ①以 6×5 的 0,1 矩阵来刻画游戏状态,0 对应该位置没有棋子,1 对应有棋子,则游戏状态集 S 一共有 75=16807 个元素; ②全为 0 的矩阵是游戏的终点状态,也是游戏的最终胜点,W0; ③显然,只剩不多于 3 辆汽车且多处于最后一列位置时,游戏状态可直接转换为W0状态,把具有该属性的状态叫 L1; ④更新差集ΔS=S-L1-W0,继续对ΔS 中的每一个元素进行规则遍历,如果某个状态ai(i 有可能不唯一)实行任意一合法操作之后,所得到的状态都属于 L1,则该状态也属于必胜集,将其存入 W2; ⑤更新差集ΔS=ΔS-W2后,对ΔS 中的每一个元素进行规则遍历,即对ΔS 中每一个游戏状态逐一实行所有可能的操作,若某个状态 ai(i 可能不唯一)在实行规则遍历的过程中,存在某一种操作使得实行该操作后所得到的新状态 ai’属于 W2,则这个状态ai属于败点集,将这个状态存入 L3; ⑥重复④和⑤,直至ΔS 为空。 * */ import { GameAutoWay } from '../common/pojo'; export declare class GameData6_8 { typeSet?: number | undefined; desk: number[][]; player: number; constructor(player: number, desk?: number[][]); } export default class example6_8 { getRiddleByLev(level: number, config: any): GameData6_8; getRiddle(config: number): GameData6_8; checkRiddle(deskData: GameData6_8): number; checkDesk(deskData: GameData6_8): number; checkAction(deskData: GameData6_8, dataAction: number[][]): number; doAction(deskData: GameData6_8, dataAction: number[][]): [flagResult: number, dataResult: GameData6_8]; getActionAuto(deskData: GameData6_8): GameAutoWay; getActionAutoD1(deskData: GameData6_8): GameAutoWay; getActionAutoD2(deskData: GameData6_8): GameAutoWay; getActionAutoD3(deskData: GameData6_8): GameAutoWay; getActionAutoD4(deskData: GameData6_8): GameAutoWay; getActionAutoD5(deskData: GameData6_8): GameAutoWay; merge(n1: Set, n2: Set): Set; getDesk(n: number): Set; getAllDesk(n: number): void; getAllAction(desk: number[][]): number[][][]; deskToStr(desk: number[][]): string; writer(filename: string, lw: Map>): void; }