小编fri*_*itz的帖子

秘密圣诞老人 - 生成"有效"排列

我的朋友们邀请我回家玩秘密圣诞老人的游戏,在那里我们应该抽出很多东西,并为小组中的朋友扮演'圣诞老人'的角色.

所以,我们写下所有的名字并随机选择一个名字.如果我们中的任何一个人最终选择了自己的名字,那么我们会重新洗牌并重新挑选名字(理由是一个人不能成为自己的圣诞老人).

我们有七个人在玩,所以我认为最后的"圣诞老人分配"是(1:7)对自身的排列,有一些限制.

我想邀请各种想法,关于我们如何使用Mathematica特定的或任何编程语言甚至算法来:

  • 列出/打印出所有"有效"的圣诞老人分配
  • 随着玩"秘密圣诞老人"的朋友数量增加,可扩展性

algorithm wolfram-mathematica permutation combinatorics

29
推荐指数
4
解决办法
2579
查看次数

Mathematica中的Riffling卡片

我的朋友向我提出这个问题; 感觉就像在这里分享一样.

鉴于一副牌,我们将它分成两组,并"交错"; 让我们将此操作称为"拆分连接".并在最终的套牌上重复相同的操作.

例如,{1,2,3,4}变为{1,2}&{3,4} (分裂),我们得到{1,3,2,4} (加入)

此外,如果我们有奇数卡,即{1,2,3},我们可以将其分为{1,2}{3}(大半号优先),导致{1,3,2} (即,n分为Ceil[n/2]&n-Ceil[n/2])

她问我的问题是:

为了让原来的甲板回来,需要多少这样的分裂连接?

这让我感到疑惑:

如果牌组有n张牌,那么在以下情况下所需的分割连接数是多少:

  • 甚么?
  • n很奇怪?
  • n是'2'的幂?[我发现我们需要log(n)(base 2)数量的拆分连接...]
  • (随意探索这样的不同场景.)

是否存在关联n和所需拆分连接数的简单模式/公式/概念?

我相信,在Mathematica中探索这是一件好事,特别是因为它提供了Riffle[]方法.

algorithm wolfram-mathematica

4
推荐指数
2
解决办法
480
查看次数

Heroku上的默认字符集(US-ASCII)导致问题

我们在heroku上部署了一个基于maven-jetty的Java应用程序.

当地人,当我这样做时:

System.out.println("Default Charset = "+ Charset.defaultCharset());
String s = "Resumé of Schrödinger";
System.out.println("s = "+ s);`
Run Code Online (Sandbox Code Playgroud)

我看到(如预期的那样):

Default Charset = UTF-8
s = Resumé of Schrödinger
Run Code Online (Sandbox Code Playgroud)

但是,当我将应用程序推送到heroku并检查日志时,我看到:

Default Charset = US-ASCII
s = Resum?? of Schr??dinger 
Run Code Online (Sandbox Code Playgroud)

实际上,由于我们必须解码具有UTF-8编码字符的Base-64编码文本,因此我面临更多问题.

我甚至试过以下没有用过:

SAXBuilder builder = new SAXBuilder();
InputStream iStream = new ByteArrayInputStream(xmlAsString.getBytes("UTF-8"));
Reader reader = new InputStreamReader(iStream, "UTF-8");
InputSource is = new InputSource(reader);
is.setEncoding("UTF-8");
Run Code Online (Sandbox Code Playgroud)

后来,org.apache.commons.codec.binary.Base64.decodeBase64(byte [])我做的时候甚至都在做stringObject.getBytes("UTF-8")

但是,我仍然无法看到像e-acute(é),umlaut(ö)等字符.

有没有办法在Heroku上解决这个问题?

pom.xml中的jdk版本是1.6

这是OpenJDK 1.7和Heroku下面的虚拟机的怪癖吗?

提前致谢.

java base64 heroku utf-8 character-encoding

3
推荐指数
1
解决办法
2453
查看次数