请教:用SAS 编个小程序,看看这个棋怎么玩
我们有个数据文件叫做chess_history,它有几千行的记录,只有两列,第一列是棋手名字(player),第二列是这个棋手一步一步的移动棋子的一个历史(move)。这个数据文件的前4行如下:
data chess_history;
input player $ 1-4 move $ 5-15;
datalines;
wang aa|cc|aa|bb
song bb|cc|dd|ff
fang mm|nn|bb|||
teng aa|mm||||||
;
proc print;run;
第一行数据告诉我们wang先移动棋子aa,后又移动棋子cc,后又移动棋子aa,最后移动棋子bb。最后一行数据告诉我们teng先移动aa,最后移动mm。
现请帮忙编个小程序,通过这个数据文件chess_history完成如下两个任务:
(1)列出这种棋有多少不同的棋子,(aa,bb,cc,mm,...)
(2)列出这个棋的游戏规则,先走哪个后走哪个,比如,aa先走,bb后走,再走cc,等等。(不求完全知道规则,尽量列出即可,目的为了多加了解这个棋的规则)。
抛砖引玉,我对第一个问题的一点思路(比如可以基于sas的substr函数来把move这列按照棋子拆成多列,然后基于proc transpose转置,合并,然后基于proc sort去除该列中的重复棋子名称。)
抛砖引玉,我对第二个问题的一点思路(比如可以基于sas的index函数来确定move这列中的棋子的一些基本位置)。
即使只能完成上面其中一个任务,哪怕只给提供sas程序的思路和一些程序片段,我也感激不尽,感谢解答。