小编Tho*_*omi的帖子

用于计算时间表的算法给出限制

我正在考虑一个假设的问题,并从算法的角度寻找如何解决问题的指导.

问题:

考虑一所大学.您有以下对象:

  • 教学人员.每个工作人员都会教一篇或多篇论文.
  • 学生们.每个学生需要一篇或多篇论文.
  • 客房.客房容纳一定数量的学生,并包含某些类型的设备.
  • 文件.需要某种类型的设备,并且每周需要一定的时间.

考虑到有关入学的信息(即每篇论文中有多少学生注册,以及分配哪些人员来教授每篇论文),我如何计算遵守以下限制的时间表:

  1. 工作人员一次只能教一件事.
  2. 学生一次只能参加一篇论文.
  3. 客房只能容纳一定数量的学生.
  4. 需要某种类型设备的纸张只能放在提供该类设备的房间内.
  5. 营业时间为周一至周五,8-12和1-5.

讨论:

实际上,我并不太关心上面概述的情况 - 这是我很好奇的一般问题.乍一看在我看来,它似乎非常适合遗传算法,但这种算法的适应度函数将非常复杂.

尝试解决这种约束满足问题的好方法是什么?

我想可能没有办法完美地解决这个问题,因为学生们很可能会结合导致不可能出现的情况,特别是随着学生和论文数量的增加.

language-agnostic algorithm genetic-algorithm

6
推荐指数
1
解决办法
457
查看次数

python正则表达式匹配多行预处理器宏

接下来是我编写的正则表达式,用于匹配C/C++代码中的多行预处理器宏.我绝不是一名正则表达大师,所以我欢迎任何关于我如何能做得更好的建议.

这是正则表达式:

\s*#define(.*\\\n)+[\S]+(?!\\)
Run Code Online (Sandbox Code Playgroud)

它应该匹配所有这些:

#define foo(x) if(x) \
doSomething(x)
Run Code Online (Sandbox Code Playgroud)

但只有一部分(不应该匹配下一行代码:

#define foo(x) if(x) \
doSomething(x)
normalCode();
Run Code Online (Sandbox Code Playgroud)

并且也不应该匹配单行预处理器宏.

我很确定上面的正则表达式有效 - 但正如我所说,可能有更好的方法,我想有办法打破它.任何人都可以建议吗?

python regex

5
推荐指数
1
解决办法
1317
查看次数

如何编写一个使用图像magick将图像切割成碎片的bash脚本?

我有许多输入图像,包含多个较小的图像,所有这些图像都在一行中.所有包含的图像大小相同.因此,例如,图像input.png可以480x48包含10个48x48图像,所有图像都在一行中.

使用imagemagick convert工具(或defaul imagemagick套件提供的任何其他工具),我想编写一个bash脚本,它接受输入图像,要剪切的图像数量,然后将它们全部切割成单个图像.

我可以做的用户交互,但我无法进行convert实际切割.谁能提出建议?从阅读手册页,我认为这应该工作:

convert 'input.png[0x0+48+48]' output.png

但是我收到一个错误:

转换:没有在缓存tb_icons_l.png' @ magick/cache.c/OpenCache/3572. convert: No IDATs written into file 1.png'@ coders/png.c/PNGErrorHandler/1391中定义的像素 .

有任何想法吗?

linux bash imagemagick

5
推荐指数
2
解决办法
5043
查看次数

使用XP和Vista之间的winsock API差异进行UDP多播

似乎在Windows XP和Windows Vista之间设置UDP多播套接字所需的实现已经改变.特别:

  • 在Windows XP下,必须先调用,bind()然后才能引用任何特定于多播的套接字选项.

  • 但是,在windows vista下,处理多播套接字时不得调用bind().

如果两个点中的任何一个失败都会导致运行时出现套接字错误.

我是疯了,还是有其他人也看过这个?有没有比bind()调用的条件编译更好的解决方案?

c++ sockets windows winsock windows-vista

5
推荐指数
1
解决办法
5792
查看次数

解决three.js / webGL中的gl_PointSize限制

我正在使用three.js创建交互式数据可视化。该可视化涉及渲染68000个节点,其中每个不同的节点都有不同的大小和颜色。

最初,我尝试通过渲染网格来做到这一点,但是事实证明这非常昂贵。我目前的尝试是使用three.js粒子系统,每个点都是可视化中的一个节点。

我可以控制点的颜色*大小,但只能控制到某个点。在我的卡片上,滑点的最大大小似乎是63。当我放大可视化效果时,点变大-到一个点,然后保持在63像素。

我目前正在使用顶点和片段着色器:

顶点着色器:

attribute float size;
attribute vec3 ca;
varying vec3 vColor;

void main() {
    vColor = ca;
    vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );
    gl_PointSize = size * ( 300.0 / length( mvPosition.xyz ) );
    gl_Position = projectionMatrix * mvPosition;
}
Run Code Online (Sandbox Code Playgroud)

片段着色器:

uniform vec3 color;
uniform sampler2D texture;

varying vec3 vColor;

void main() {
    gl_FragColor = vec4( color * vColor, 1.0 );
    gl_FragColor = gl_FragColor * texture2D( texture, gl_PointCoord );
}
Run Code Online (Sandbox Code Playgroud)

这些几乎是从three.js示例之一复制而来的。

我对GLSL完全陌生,但是我正在寻找一种绘制大于63像素的点的方法。是否可以对大于特定大小的任何点绘制网格,但是可以使用gl_point?我可以使用其他解决方法来绘制大于63像素的点吗?

glsl webgl three.js

5
推荐指数
2
解决办法
3473
查看次数

如何告诉distutils子目录中的包?

我有一个setup.py正在处理的项目的文件,需要提供几个尚未在奶酪店中发布的第三方软件包.其中一个是来自这个git存储库的'spine'和'pyguts'模块:

https://github.com/terrysimons/spine-python

通常我可以通过在我的setup.py文件中指定以下项来从gitgub安装东西(为清楚起见,省略了几行):

#! /usr/bin/python
# Encoding: UTF-8

from setuptools import setup, find_packages


setup(
    # More stuff in here...
    dependency_links=[
            'https://github.com/bitcraft/PyTMX/archive/master.zip#egg=PyTMX',
        ],
    install_requires=[
        'PyTMX',
        ],
)
Run Code Online (Sandbox Code Playgroud)

但是,这只能起作用,因为PyTMXsetup.py在存储库的根目录中有它的文件.

如果我尝试为spinepyguts存储库做类似的事情,就像这样:

#! /usr/bin/python
# Encoding: UTF-8

from setuptools import setup, find_packages

__version__ = '0.0.1'



setup(
    dependency_links=[
            'https://github.com/bitcraft/PyTMX/archive/master.zip#egg=PyTMX',
            'https://github.com/terrysimons/spine-python/archive/master.zip#egg=spine',
        ],
    install_requires=[
        'PyTMX',
        'spine',
        ],
)
Run Code Online (Sandbox Code Playgroud)

然后distutils抱怨我跑python setup.py install:

Searching for spine
Best match: spine [unknown version]
Downloading https://github.com/terrysimons/spine-python/archive/master.zip#egg=spine
Processing master.zip
error: Couldn't find …
Run Code Online (Sandbox Code Playgroud)

python github distutils2

5
推荐指数
1
解决办法
278
查看次数

开源语法荧光笔工具?

我正在寻找一个开源,跨平台(至少Windows和Linux)命令行工具来获取一些代码(C++,但多种语言会很好),并吐出有效的代码的XHTML表示,语法高亮包括在内.

理想情况下,XHTML应该只使用不同的类包装代码<span><div>标签,这样我就可以提供CSS代码并更改颜色,但这是一个可选的附加功能.

有谁知道这样的申请?

open-source syntax-highlighting

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

从ProcessSerialNumber获取应用程序图标

我想获取在我的Mac上运行的所有前台应用程序的应用程序图标.我已经使用Process Manager API 迭代所有应用程序.我已经确定任何没有modeBackgroundOnly设置标志的进程processMode(从中检索GetProcessInformation())是一个"前台"应用程序,并显示在任务切换器窗口中.

我只需要一个API,它给我一个CImageRef(或类似的),它包含进程的应用程序图标.我可以自由使用碳或可可API.

c++ macos cocoa macos-carbon

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

这个指针做了什么?

char* p = "hello world";
Run Code Online (Sandbox Code Playgroud)

程序员通常将变量的地址分配给指针.但在上面的例子中,指针指向哪里?

以及世界上有什么

int x =42;
int* p= &x;
int ** r = &p;
Run Code Online (Sandbox Code Playgroud)

c

2
推荐指数
1
解决办法
1144
查看次数

使用Qt的QLabel类在呈现的HTML中更改制表位大小

我在QT QLabel中渲染了一些HTML.HTML看起来像这样:

<pre>foo\tbar</pre>
Run Code Online (Sandbox Code Playgroud)

(请注意,我已将"\ t"放在代码中有标签字符的位置).

这渲染很好,但制表符似乎呈现为八个空格,而我希望它被渲染为4.如何在不更改源HTML的情况下更改它

html c++ qt rendering

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