我有n个元素.为了举个例子,让我们说,7个元素,1234567.我知道有7个!=这些7个元素可能有5040个排列.
我想要一个包含两个函数的快速算法:
f(number)将0到5039之间的数字映射到唯一的排列,并且
f'(置换)将置换映射回其生成的数字.
我不关心数字和排列之间的对应关系,只要每个排列都有自己唯一的数字.
所以,举个例子,我可能会在哪里有功能
f(0) = '1234567'
f'('1234567') = 0
Run Code Online (Sandbox Code Playgroud)
想到的最快的算法是枚举所有排列并在两个方向上创建查找表,这样,一旦创建表,f(0)将是O(1)并且f('1234567')将是查找字符串.然而,这是内存饥饿,特别是当n变大时.
任何人都可以提出另一种算法,它可以快速工作,没有内存缺点吗?
我在一列中有一个包含十进制数的表.我希望以类似于文字处理器的"十进制选项卡"功能的方式对齐它们,以便所有点都位于垂直线上.
我目前有两种可能的解决方案,但我希望有更好的解决方案......
解决方案1:拆分HTML中的数字,例如
<td><div>1234</div><div class='dp'>.5</div></td>
Run Code Online (Sandbox Code Playgroud)
同
.dp { width: 3em; }
Run Code Online (Sandbox Code Playgroud)
(是的,这个解决方案不能完全正常工作.但是,这个概念是有效的.)
解决方案2:我发现了提及
<col align="char" char=".">
Run Code Online (Sandbox Code Playgroud)
根据参考页面,这是HTML4的一部分,但它在FF3.5,Safari 4或IE7中不起作用,这是我必须提供的浏览器.它还有一个问题,你不能将数字格式化为CSS(虽然,因为它影响整个列,我想这并不太令人惊讶).
那么,谁都有更好的主意?
在Unix中,可以创建匿名文件的句柄,例如,使用creat()创建并打开它,然后使用unlink()删除目录链接 - 留下带有inode和存储的文件但没有可能的方法重新打开它.这些文件通常用作临时文件(通常这是tmpfile()返回给你的).
我的问题:有没有办法将这样的文件重新附加到目录结构中?如果你能做到这一点意味着你可以实现文件写入,以便文件以原子方式和完全形成.这吸引了我强迫的整洁.;)
通过相关的系统调用函数,我期望找到一个名为flink()的link()版本(与chmod()/ fchmod()比较)但是,至少在Linux上这不存在.
奖励点告诉我如何创建匿名文件而不简单地在磁盘的目录结构中公开文件名.
我有一个ssh脚本,它使用本地密钥登录远程主机 - 没有什么太令人兴奋的了.密钥是passworded,我通常会将其添加到代理以避免提示.
有时我会在代理运行之前运行程序,它会等待解锁短语.在这种情况下,我希望命令完全失败,而不是以交互方式提示.
有人知道是否有这个选项?
我有一个Web应用程序,我想运行一些系统测试,为了做到这一点,我将需要移动系统时间.该应用程序一直使用DateTime.
有没有人对如何更改DateTime->现在报告的时间有任何建议?我想到的唯一事情是继承DateTime并搞乱所有'使用'线,但这看起来相当具有侵略性.
答案说明:
所有三个都可以正常工作,但Hook :: LexWrap是我选择的那个因为(a)我想移动时钟而不是摇晃它(这更像是时间::模拟和朋友的目的做); (b)我一直使用DateTime,如果我不小心使用它,我很高兴出现错误; (c)Hook :: LexWrap比符号表中的hack更优雅,因为它做同样的事情.(另外,它原来是我已经安装的某个模块的依赖项,所以我甚至不用CPAN它......)
我有两个程序通过共享内存段进行交互.使用段进行读取或写入时,它们会锁定.
如果他们中的任何一个在关键部分崩溃(通常会被杀 - 可能还有一些无法解决的东西),我希望他们释放锁,以便shmem不会被完全锁定.
其他问题指出了Windows,Java等方面的答案,但你如何在Unix(特别是Linux)中做到这一点?
(我没有附加到pthreads互斥函数; SysV信号量或其他任何东西都可以.)
为了防止特权数据的泄漏,Linux上的setcap可执行文件不会转储核心:
ijw@build$ cat > test.c
main() { abort(); }
ijw@build$ gcc test.c
test.c: In function ‘main’:
test.c:1: warning: incompatible implicit declaration of built-in function ‘abort’
ijw@build$ ./a.out
Aborted (core dumped)
ijw@build$ sudo setcap "cap_net_admin=+ep" a.out
ijw@build$ ./a.out
Aborted
Run Code Online (Sandbox Code Playgroud)
有没有办法在调试时启用它并且实际上想要查看核心文件?