楼主: ertyuj
1528 2

请教:用SAS 编个小程序,看看这个棋怎么玩 [推广有奖]

  • 0关注
  • 1粉丝

已卖:7份资源

硕士生

40%

还不是VIP/贵宾

-

威望
0
论坛币
254 个
通用积分
0.7615
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
-351 点
帖子
136
精华
0
在线时间
164 小时
注册时间
2007-2-7
最后登录
2022-3-17

楼主
ertyuj 发表于 2014-11-28 15:26:01 |AI写论文
50论坛币
请教:用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程序的思路和一些程序片段,我也感激不尽,感谢解答。


最佳答案

jl60156 查看完整内容

part one: %macro chess; data %do i=1 %to 4; chess&i %end;; set chess_history; %do i=1 %to 4; moveall=scan(move,&i,"|","m"); step=&i; output chess&i; %end; run; data chessall; set %do i=1 %to 4; chess&i %end;; run; proc sql; create table want1 as select distinct moveall as unique_chess from chessall having not missing(moveall); quit; %mend; %chess; part two ...
关键词:小程序 怎么玩 Transpose History Player player 程序 记录 历史
数据科学和机器学习博客:https://shorturl.at/jtHTW

沙发
jl60156 发表于 2014-11-28 15:26:02
part one:


%macro chess;
data %do i=1 %to 4; chess&i %end;;
        set chess_history;
        %do i=1 %to 4;
         moveall=scan(move,&i,"|","m"); step=&i; output chess&i;
         %end;
run;
data chessall;
        set %do i=1 %to 4; chess&i %end;;
run;

proc sql;
         create table want1 as
         select distinct moveall as unique_chess
         from chessall
        having not missing(moveall);
quit;
%mend;
%chess;

part two:

from above dataset chessall, you can find possible combinations from step 1 to step 4.


hope it helpful and get your reward.
已有 1 人评分论坛币 收起 理由
admin_kefu + 30 根据规定进行奖励

总评分: 论坛币 + 30   查看全部评分

藤椅
teqel 发表于 2014-11-28 22:24:02 来自手机
第二个不好做。两个棋子的组合还好,10步以上组合就太多了

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-9 10:55