我的朋友们邀请我回家玩秘密圣诞老人的游戏,在那里我们应该抽出很多东西,并为小组中的朋友扮演'圣诞老人'的角色.
所以,我们写下所有的名字并随机选择一个名字.如果我们中的任何一个人最终选择了自己的名字,那么我们会重新洗牌并重新挑选名字(理由是一个人不能成为自己的圣诞老人).
我们有七个人在玩,所以我认为最后的"圣诞老人分配"是(1:7)对自身的排列,有一些限制.
我想邀请各种想法,关于我们如何使用Mathematica特定的或任何编程语言甚至算法来:
我的朋友向我提出这个问题; 感觉就像在这里分享一样.
鉴于一副牌,我们将它分成两组,并"交错"; 让我们将此操作称为"拆分连接".并在最终的套牌上重复相同的操作.
例如,{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和所需拆分连接数的简单模式/公式/概念?
我相信,在Mathematica中探索这是一件好事,特别是因为它提供了Riffle[]方法.
我们在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下面的虚拟机的怪癖吗?
提前致谢.