24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1755  |  回复: 19

holmescn

金虫 (正式写手)


jjdg(金币+1): 感谢参与 2011-06-11 00:31:23
引用回帖:
Originally posted by fatpig8832 at 2011-06-10 17:32:00:
这个...不就是题目中的一百万吗...不过这不是编程而是死算,初中生甚至小学生都能搞出来...

8楼的做法应该和我的一样吧,虽然我没怎么看懂...

和你的算法是一样的。嘿嘿。
11楼2011-06-10 18:04:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

qinghuoly

木虫 (正式写手)

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
jjdg(金币+1): 感谢参与 2011-06-27 02:57:26
优雅如魔鬼的J语言登场:

参考http://www.jsoftware.com/jwiki/Essays/Permutations
CODE:
perm=: i.@! A. i.
n=:1e6-1
n{::perm 10

单行程序:
CODE:
(1e6-1){::(i.@!A.i.)10

得答案如下:
2 7 8 3 9 1 5 4 6 0

耗时2.07秒

[ Last edited by qinghuoly on 2011-6-27 at 00:14 ]
天地为帐,日月为灯,风雷为号角,云虹为旗令,山川为阵图,草木为兵卒。运阴阳五行为谋,策古今兴替为略。
12楼2011-06-27 00:08:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

holmescn

金虫 (正式写手)

引用回帖:
Originally posted by qinghuoly at 2011-06-27 00:08:17:
优雅如魔鬼的J语言登场:

参考http://www.jsoftware.com/jwiki/Essays/Permutations
CODE:
perm=: i.@! A. i.
n=:1e6-1
n{::perm 10

单行程序:
[code](1e6-1){:i.@!A.i. ...

这东西可读性很差啊,又不数学,又不自然语言,不觉得有什么美的。和Brain Fuck那个语言差不多。
13楼2011-06-27 09:30:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

huycwork

金虫 (著名写手)


小木虫(金币+0.5):给个红包,谢谢回帖
引用回帖:
Originally posted by qinghuoly at 2011-06-27 00:08:17:
优雅如魔鬼的J语言登场:

参考http://www.jsoftware.com/jwiki/Essays/Permutations
CODE:
perm=: i.@! A. i.
n=:1e6-1
n{::perm 10

单行程序:
[code](1e6-1){:i.@!A.i. ...

呃,这个真的能看懂吗?
漩涡的中心有一块空地,空空的。
14楼2011-06-27 13:51:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军


小木虫(金币+0.5):给个红包,谢谢回帖
内容已删除
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
15楼2011-06-27 13:55:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

huycwork

金虫 (著名写手)

内容已删除
漩涡的中心有一块空地,空空的。
16楼2011-06-27 16:32:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

qinghuoly

木虫 (正式写手)

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
微尘、梦想(金币+1): 鼓励交流! 2011-06-28 21:37:39
内容已删除
天地为帐,日月为灯,风雷为号角,云虹为旗令,山川为阵图,草木为兵卒。运阴阳五行为谋,策古今兴替为略。
17楼2011-06-27 23:05:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

qinghuoly

木虫 (正式写手)

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
xzhdty(金币+1): 谢谢 2011-06-28 00:11:19
引用回帖:
Originally posted by holmescn at 2011-06-27 09:30:55:
这东西可读性很差啊,又不数学,又不自然语言,不觉得有什么美的。和Brain Fuck那个语言差不多。

我解释一下程序:

perm=: i. @ ! A. i.
定义算子perm
按照语法展开perm n(n为任意正整数)为:
  (i. ! n) A. (i. n)
其中i. n 产生一个列表,0, 1, 2, ... n-1,共n项。
i. ! n 产生列表,0, 1, 2, ... n的阶乘-2, n的阶乘-1,共 n! 项。
A. 的用法为:x A. y 表示以x为索引建立列表y中元素的排列。

于是perm 10 即以字典序排列的0-9这十个数字全部排列。

x {:: y 表示提取y中的第x项。从第0项开始计数
所以(1e6-1){::perm 10 展开为
(1000000 - 1) {:: (i. ! 10) A. (i. 10)
天地为帐,日月为灯,风雷为号角,云虹为旗令,山川为阵图,草木为兵卒。运阴阳五行为谋,策古今兴替为略。
18楼2011-06-27 23:39:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

holmescn

金虫 (正式写手)

引用回帖:
Originally posted by qinghuoly at 2011-06-27 23:39:12:
我解释一下程序:

perm=: i. @ ! A. i.
定义算子perm
按照语法展开perm n(n为任意正整数)为:
  (i. ! n) A. (i. n)
其中i. n 产生一个列表,0, 1, 2, ... n-1,共n项。
i. ! n 产生列表,0, 1, 2,  ...

这个A.操作还是不理解,能不能给个例子啊?
19楼2011-06-28 16:28:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

qinghuoly

木虫 (正式写手)

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
微尘、梦想(金币+2): 鼓励交流! 2011-06-28 21:37:20
引用回帖:
Originally posted by holmescn at 2011-06-28 16:28:01:
这个A.操作还是不理解,能不能给个例子啊?

这个确实有点复杂。
先说J语言中算子的阶。以 * 为例:
CODE:
> 8*2
16

当*两侧为列表(或称向量)时,* 把两个列表中的对应项相乘而给出一个列表。如
CODE:
> 8 2 * 2 3
16 6

这是因为算子(或称动词)*的阶为0,即对列表中的项(原文为Atom)产生作用,且左右侧的阶相同。

而A. 算子 左侧的阶为0,右侧的阶为1。即右侧接受一个列表。
而k A. a(k为数字,a为一个列表)的意义是返回列表a中全部项的所有可能排列按字典序排序后的第k个排列。(从第0个开始计数)
k为列表时,就是产生一个列表,包含a的对应序数的排列。

举例:
CODE:
> 0 A. 0 3 2 1
0 1 2 3
> 0 A. 0 1 2 3
0 1 2 3
> 1 A. 0 1 2 3
0 1 3 2
> 2 A. 0 1 2 3
0 2 1 3
> 23 A. 0 1 2 3
3 2 1 0

天地为帐,日月为灯,风雷为号角,云虹为旗令,山川为阵图,草木为兵卒。运阴阳五行为谋,策古今兴替为略。
20楼2011-06-28 20:10:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 holmescn 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见