首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >它是一个随机矩阵吗?

它是一个随机矩阵吗?
EN

Code Golf用户
提问于 2016-11-18 09:17:25
回答 7查看 2.8K关注 0票数 24

随机矩阵是马尔可夫链上下文中使用的概率矩阵。

右随机矩阵是每一行和到1的矩阵。

左随机矩阵是一种矩阵,每一列之和为1

双随机矩阵是一种矩阵,其中每一行和每列之和为1

在这个挑战中,我们将用整数表示百分比的概率。在这种情况下,行或列必须与100和而不是1相加。

您的目标是编写一个程序或函数,给定一个整数平方矩阵作为输入,输出四个值中的一个,表示该矩阵要么是右随机的,要么是左随机的,或者是双随机的,或者是没有的。

输入

您可以在输入时使用对您的语言来说自然的矩阵的任何适当表示。例如,一个列表列表,一个逗号分隔值的字符串,其中行由换行分隔,等等。

输入矩阵总是平方的,并且只包含非负整数.输入矩阵至少总是1×1

您可以使用STDIN作为函数参数或任何类似的方法传递输入。

输出

你必须选择四种不同的输出,它们对应于右随机、左随机、双随机或没有。无论传递什么输入,这些输出都必须是常量。您的程序可能不会为同一情况返回不同的输出,例如,说任何负数都不对应于其中任何一个都是无效的。

简而言之,在输出和四种可能的情况之间必须有1比1的对应关系.这四个输出的一些例子将是{1, 2, 3, 4}{[1,0], [0,1], [1,1], [0,0]},甚至是{right, left, doubly, none}

请在您的回答中指出您的程序使用的四个输出。

如果矩阵是双随机的,则必须返回双随机的输出,而不是左右随机的输出。

您可以将输出输出打印到STDOUT,从函数返回输出,或任何类似的输出。

测试用例

代码语言:javascript
复制
[100]               => Doubly stochastic

[42]                => None of those

[100  0  ]          => Doubly stochastic
[0    100]

[4   8   15]
[16  23  42]        => Left stochastic
[80  69  43]

[99  1 ]            => Right stochastic
[2   98]

[1   2   3   4 ]
[5   6   7   8 ]    => None of those
[9   10  11  12]
[13  14  15  16]

评分

这是密码-高尔夫,所以以字节为单位的最短答案获胜。

EN

回答 7

Code Golf用户

发布于 2016-11-18 09:58:06

R,55字节

代码语言:javascript
复制
function(m)c(all(colSums(m)==100),all(rowSums(m)==100))

假定m为R-矩阵的未命名函数.

输出:

  • [1] TRUE FALSE:左随机
  • [1] FALSE TRUE:右随机
  • [1] TRUE TRUE:加倍
  • [1] FALSE FALSE:无
票数 11
EN

Code Golf用户

发布于 2016-11-18 18:23:41

Mathematica 29字节

代码语言:javascript
复制
{}⋃Tr/@#=={100}&/@{#,#}&

替换=U+F3C7=转座子字符。这个代码片段将正确地粘贴到Mathematica中。

与输出(左真相,对真})相同的真实性约定

票数 6
EN

Code Golf用户

发布于 2016-11-18 09:48:21

马蒂尔,12字节

代码语言:javascript
复制
sG!sv!100=XA

输出为两个零/一值。首先表示矩阵是否是左随机的,第二个表示矩阵是右随机的.

在网上试试!验证所有测试用例

代码语言:javascript
复制
s      % Implicitly input N×N matrix. Sum of each column. Gives a 1×N vector
G!     % Push input transposed
s      % Sum of each column. Gives a 1×N vector
v      % Concatenate vertically. Gives a 2×N matrix
!      % Transpose. N×2
100=   % Does each entry equal 100?
XA     % True for columns that contain only "true". Gives 1×2 vector. Implicitly display
票数 5
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/100277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档