楼主: whymath
852 12

[技术讨论与投票] 最短代码挑战——字符排序 [推广有奖]

  • 1关注
  • 16粉丝

实习版主

副教授

12%

还不是VIP/贵宾

-

威望
0
论坛币
5649 个
通用积分
747.2815
学术水平
121 点
热心指数
140 点
信用等级
83 点
经验
21768 点
帖子
556
精华
2
在线时间
565 小时
注册时间
2018-5-31
最后登录
2024-4-22

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

最短代码挑战(Cold Golf)是一项历史悠久,充满趣味的计算机编程游戏。游戏的规则很简单:多人参与,通过计算机编程解决给定的问题,代码字数最少者获胜!


然而,想要获得胜利,并不容易!游戏首先要求写出解决问题的代码,多数情况下都可以轻松做到。关键在于第二关,往往因为多了两三个字符,就与冠军失之交臂。要缩减代码的字数,这非得对程序运行机制深入理解,对各种编程技巧谙熟于心才行。你会是这样的编程高手吗?


本次挑战题为:

请将字符串“4, 2, 6, 4, 1, 7, 5, 9, 2, 1, 6”中的各数字按照升序排列,并将结果“1, 1, 2, 2, 4, 4, 5, 6, 6, 7, 9”打印在日志窗口。为公平起见,字符串已经使用宏变量 d 定义:

%let d=4, 2, 6, 4, 1, 7, 5, 9, 2, 1, 6;

你将使用上述语句作为自己程序的开头,且上述语句不参与字符数计算。


你能给出的最短代码是怎样的?截止 2023-02-20T18:00,给出有效方案,且代码字符数最少的将获得100论坛币奖励

规则如下:

1.  禁止硬编码行为,但允许使用他人的代码为蓝本进行修改;

2. 如使用自定义宏、自定义函数等,则将宏、函数的定义语句的字数也计算在内;

3. 代码按字符进行计数,换行符不计入在内,字符数最少者胜;

4. 程序须可直接运行,正常终止,且日志不得出现错误与警告消息;

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:100论坛币 计算机编程 自定义函数 直接运行 cold

回帖推荐

freyabc 发表于4楼  查看完整内容

data;e=cat(""); do i=1to 9; do j=1to count("&d",cat(i)); e=catx(", ",e,i); end; end; put e; run;
SASUSER
沙发
乐天天12300 发表于 2023-2-13 18:11:58 |只看作者 |坛友微信交流群
data;
do i=1 to 9;
do j=1 to countc("&d",i);
put i;
end;
end;
run;
已有 1 人评分经验 收起 理由
whymath + 12 精彩帖子

总评分: 经验 + 12   查看全部评分

使用道具

藤椅
freyabc 发表于 2023-2-14 11:11:28 |只看作者 |坛友微信交流群
data;array b{99}$;
do i=1 to 99;
b(i)=scan("&d",i,", ");
end;
call sort(of b(*));
c=catx(", ",of b(*));
put c;
run;
已有 1 人评分论坛币 收起 理由
whymath + 40 精彩帖子

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

使用道具

板凳
freyabc 发表于 2023-2-14 22:56:02 |只看作者 |坛友微信交流群
data;e=cat("");
do i=1to 9;
do j=1to count("&d",cat(i));
e=catx(", ",e,i);
end;
end;
put e;
run;
已有 1 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
whymath + 60 + 60 + 5 + 5 + 5 精彩帖子

总评分: 经验 + 60  论坛币 + 60  学术水平 + 5  热心指数 + 5  信用等级 + 5   查看全部评分

使用道具

报纸
HXAI102230 在职认证  发表于 2023-2-15 09:46:14 |只看作者 |坛友微信交流群
data;
length c $999;
do i=0 to 9;
        n=countc("&d",cats(i));
        do j=1 to n;       
        c=catx(",",c,i);
        end;
end;
put c;
run;

使用道具

地板
HXAI102230 在职认证  发表于 2023-2-15 09:48:04 |只看作者 |坛友微信交流群
data;
do i=0 to 9;
do j=1 to countc("&d",cats(i));
c=cats(i,",");
put c @;
end;
end;
run;
已有 1 人评分经验 收起 理由
whymath + 12 精彩帖子

总评分: 经验 + 12   查看全部评分

使用道具

7
freyabc 发表于 2023-2-15 10:52:40 |只看作者 |坛友微信交流群
data;
do i=1to 9;
do j=1to count("&d.",cat(i));
put i+(-1)", " @;
end;
end;
run;

使用道具

8
whymath 发表于 2023-2-15 14:20:51 |只看作者 |坛友微信交流群
乐天天12300 发表于 2023-2-13 18:11
data;
do i=1 to 9;
do j=1 to countc("&d",i);
该程序未能输出题目要求的结果

使用道具

9
whymath 发表于 2023-2-15 14:21:38 |只看作者 |坛友微信交流群
HXAI102230 发表于 2023-2-15 09:48
data;
do i=0 to 9;
do j=1 to countc("&d",cats(i));
该程序相比题目要求的结果,末尾多出了一个逗号

使用道具

10
whymath 发表于 2023-2-15 14:32:56 |只看作者 |坛友微信交流群
freyabc 发表于 2023-2-15 10:52
data;
do i=1to 9;
do j=1to count("&d.",cat(i));
该程序的输出结果末尾多出了一个逗号

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-24 16:55