小编Nic*_*son的帖子

Code Golf:Fractran

挑战

编写一个充当Fractran解释器的程序.任何语言的字符数最短的翻译都是赢家.你的程序必须有两个输入:要执行的fractran程序和输入整数n.该程序可以是任何方便您的程序的形式 - 例如,2元组列表或平面列表.输出必须是单个整数,是执行结束时寄存器的值.

Fractran

Fractran是John Conway发明的一种微不足道的深奥语言.fractran程序由一系列正分数和一个初始状态n组成.解释器维护一个程序计数器,最初指向列表中的第一个部分.Fractran程序以下列方式执行:

  1. 检查当前状态的产品和当前在程序计数器下的分数是否为整数.如果是,则将当前状态乘以当前分数,并将程序计数器重置为列表的开头.
  2. 推进程序计数器.如果到达列表的末尾,则暂停,否则返回步骤1.

有关Fractran如何以及为何如此工作的详细信息,请参阅esolang条目以及关于良好数学/错误数学的此条目.

测试向量

节目: [(3,2)]
输入: 72(2 3 3 2)
输出: 243(3 5)

节目: [(3,2)]
输入: 1296(2 4 3 4)
输出: 6561(3 8)

节目: [(455,33),(11,13),(1,11),(3,7),(11,2),(1,3)]
输入: 72(2 3 3 2)
输出: 15625(5 6)

奖金测试矢量:

您的提交无需正确执行此最后一个程序即可成为可接受的答案.但是如果有的话会感到荣幸!

节目: [(455,33),(11,13),(1,11),(3,7 ),(11,2 ),(1,3)]
输入: 60466176(2 10 3 10)
输出: 7888609052210118054117285652827862296732064351090230047702789306640625(5 100)

提交和评分

程序严格按字符长度排列 - 最短是最好的.随意提交一个布局合理,文档化和代码的"缩小"版本,以便人们可以看到正在发生的事情.

语言'J'不可接受.这是因为在其中一个链接页面上已经有一个众所周知的J解决方案.如果你是J粉丝,抱歉!

然而,作为额外奖励,任何能够 fractran中提供工作分形翻译 …

code-golf esoteric-languages

49
推荐指数
10
解决办法
7378
查看次数

带或不带替换的加权随机选择

最近我需要从列表中加权随机选择元素,无论是否有替换.虽然有未知加权选择的众所周知和良好的算法,有些用于无替换的加权选择(例如修改算法),我找不到任何好的算法用于替换加权选择.我也想避免使用resevoir方法,因为我选择了列表中的一小部分,这个小部分足够小以容纳在内存中.

有没有人对这种情况下的最佳方法有任何建议?我有自己的解决方案,但我希望找到更高效,更简单或两者兼而有之的方法.

python random algorithm random-sample

47
推荐指数
3
解决办法
3万
查看次数

生成所有5张牌扑克牌

乍一看这个问题听起来很简单,但事实证明它看起来要复杂得多.这让我很难过.

有52c5 = 2,598,960种方法可以从52张牌中选择5张牌.然而,由于套装在扑克中是可以互换的,所以其中许多都是等同的 - 手2H 2C 3H 3S 4D相当于2D 2S 3D 3C 4H - 简单地换掉套装.根据维基百科,一旦你考虑到可能的套装重新着色,有134,459个不同的5张牌.

问题是,我们如何有效地生成所有这些可能的手?我不想生成所有的手,然后消除重复,因为我想将问题应用于更多的卡,以及评估快速螺旋失控的手的数量.我目前的尝试集中在生成深度优先,并跟踪当前生成的卡以确定哪些套装和等级对下一张卡有效,或者广度优先,生成所有可能的下一张卡,然后通过转换每个卡来删除重复通过重新着色来制作"规范"版本.这是我在Python中尝试广度优先的解决方案:

# A card is represented by an integer. The low 2 bits represent the suit, while
# the remainder represent the rank.
suits = 'CDHS'
ranks = '23456789TJQKA'

def make_canonical(hand):
  suit_map = [None] * 4
  next_suit = 0
  for i in range(len(hand)):
    suit = hand[i] & 3
    if suit_map[suit] is None:
      suit_map[suit] = next_suit
      next_suit += 1
    hand[i] = hand[i] & …
Run Code Online (Sandbox Code Playgroud)

python algorithm poker permutation combinatorics

38
推荐指数
1
解决办法
1万
查看次数

如何使用OpenCV检测和跟踪人员?

我有一个静止的相机,指向室内区域.人们将走过相机,距离它约5米.使用OpenCV,我想检测走过的人 - 我理想的回归是一组检测到的个体,带有边界矩形.

我看了几个内置示例:

  • 没有Python样本真正适用
  • ç斑点跟踪样品看起来很有希望,但不接受现场视频,这使得检测困难.它也是最复杂的样本,使得提取相关知识并将其转换为Python API存在问题.
  • ç "motempl"样本也看起来很有希望,因为它计算在随后的视频帧的一个剪影.据推测,我可以使用它来查找强连接组件并提取单个blob及其边界框 - 但我仍然试图找出一种方法来识别后续帧中发现的blob作为相同的blob.

是否有人能够提供指导或样本 - 最好是在Python中

python opencv motion-detection computer-vision

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

Mandelbrot Set渲染的平滑光谱

我目前正在编写一个程序来生成真正巨大的(65536x65536像素及以上)Mandelbrot图像,我想设计一种能够正义的光谱和着色方案.在维基百科特色的Mandelbrot图像似乎是一个很好的例子,调色板尤其是如何保持在序列中的所有缩放级别变化.不过,我不确定它是在旋转调色板还是做其他一些技巧来实现这一点.

我熟悉mandelbrot集的平滑着色算法,所以我可以避免使用条带,但我仍然需要一种方法来为此算法的输出值指定颜色.

我正在生成的图像是金字塔形的(例如,一系列图像,每个图像的尺寸都是前一个图像的一半),所以我可以使用某种旋转调色板,只要调色板之间的变化即可缩放级别不是太明显.

algorithm colors fractals mandelbrot

30
推荐指数
4
解决办法
3万
查看次数

如何禁用Amazon EC2充电?

我目前尝试实施亚马逊ec2,我读了一年后他们收取你的费用.之前我使用谷歌应用引擎(使用java),你可以启用/禁用充电功能.我只想尝试免费的ec2实例,所以这是我的问题:

  • 亚马逊EC2会在一年后自动收取费用吗?
  • 如何禁用自动充电功能?

amazon-ec2 amazon-web-services

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

在Android中同时读取多个NFC标签

新的2.3.3 SDK包括改进的NFC支持,我想编写一个依赖于此的应用程序.最后,我希望能够从同时进入该字段的多个标签中读取数据,但Android似乎仅在第一个进入该字段的标签上触发 - 后续的被忽略.

通过阅读我正在使用的标签(Mifare Classic)的NFC规范(ISO/IEC 14443-3),我应该能够向标签发送'halt'命令,这将导致它停止响应,并允许我要阅读该字段中的下一个标记.Android不直接在任何子TagTechnology类上支持halt命令,所以我尝试直接使用它发送它transceive(new byte[] {0x50, 0x00}).这引发了一个IOException消息'收发失败'.

不可否认,我正在从主线程中完成所有这些,我理解这是一个坏主意,但我只想尽可能轻松地测试这个概念.

是否可以同时与现场的多个标签进行通信?我究竟做错了什么?

java android nfc android-sdk-2.3

18
推荐指数
1
解决办法
5871
查看次数

在Google App Engine上使用Python NLTK(2.0b5)

我一直试图让NLTK(自然语言工具包)在Google App Engine上运行.我遵循的步骤是:

  1. 下载安装程序并运行它(一个.dmg文件,因为我正在使用Mac).
  2. 将nltk文件夹复制到python site-packages目录之外,并将其作为子文件夹放在我的项目文件夹中.
  3. 在包含nltk子文件夹的文件夹中创建一个python模块并添加以下行: from nltk.tokenize import *

不幸的是,在启动之后我得到了这个错误(请注意,这个错误在NLTK内部深处引发,我看到它用于我的python系统安装,而不是GAE项目的子文件夹中的那个):

 <type 'exceptions.ImportError'>: No module named nltk
Traceback (most recent call last):
  File "/base/data/home/apps/xxxx/1.335654715894946084/main.py", line 13, in <module>
    from lingua import reducer
  File "/base/data/home/apps/xxxx/1.335654715894946084/lingua/reducer.py", line 11, in <module>
    from nltk.tokenizer import *
  File "/base/data/home/apps/xxxx/1.335654715894946084/lingua/nltk/__init__.py", line 73, in <module>
    from internals import config_java
  File "/base/data/home/apps/xxxx/1.335654715894946084/lingua/nltk/internals.py", line 19, in <module>
    from nltk import __file__
Run Code Online (Sandbox Code Playgroud)

注意:这是上传到GAE时错误在日志中的显示方式.如果我在本地运行它我得到相同的错误(除了它似乎来自我的NLTK的网站包实例...所以没有区别)."xxxx"表示项目名称.

总结如下:

  • 我甚至想做什么?NLTK甚至可以在App Engine上运行吗?
  • 我错过了什么吗?那就是:将"nltk"复制到GAE项目是不够的?

编辑:修复拼写错误并删除不必要的步骤

python google-app-engine nlp nltk

17
推荐指数
2
解决办法
5753
查看次数

有没有可用的解决方案为Google应用引擎提供xsrf/csrf支持?

现在,跨网站请求伪造在网上很常见.我在部署在Google App引擎上的我自己的网站上面对此问题.我通过检查访问日志来了解这一点.是否有可用于App引擎的XSRF/CSRF库或其他解决方案.并且,它将为我的网站添加多少负载?

python google-app-engine webapp2

17
推荐指数
3
解决办法
3199
查看次数

将3d网格分解为2d网络

假设您有一个3维对象,以某种常见文件格式表示为3d网格.你将如何设计一种算法将网格分解为一个或多个2d'网' - 也就是说,可以剪切和折叠以创建原始3d对象的二维表示.

除此之外,该算法还需要考虑:

  • 对任何给定对象进行多次可能的分解
  • 处理将网格装配到固定尺寸的画布(纸张).
  • 识别网中的两个面板何时重叠(因此无效).
  • 由于重叠或页面大小限制,如果网格无法表示为单个网格,则将网格分成多个网络.
  • 在适当的位置生成制表符,用于附加相邻的面.

明显的退化情况就是每面创建一个网,边缘有一半.这显然不是理想的:理想的情况是单个连续网.复杂形状的现实很可能在中间.

我意识到找到最佳网络(最少网络/最少页面)可能计算成本很高,但是找到"足够好"的网络的良好启发式就足够了.

algorithm 3d graphics mesh

16
推荐指数
2
解决办法
7527
查看次数