问题列表 - 第21741页

什么定义了C中的opaque类型,它们何时是必需的和/或有用的?

我已经看到了"不透明类型"的概念,但我真的没有找到一个简洁的答案,关于什么定义了C中的opaque类型,更重要的是它们允许我们用它们的存在解决的问题.谢谢

c types

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

Python多线程访问同一文件

我有两个线程,一个写入文件,另一个周期性地将文件移动到另一个位置.写入总是open在写入消息之前调用,并close在写入消息之后调用.搬家公司使用shutil.move来搬家.

我看到第一次移动完成后,编写器无法再写入文件,即第一次移动后文件的大小始终为0.难道我做错了什么?

python multithreading file

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

这个改进的二十一点游戏的最佳获胜策略是什么?

问题

是否有最好的价值,以便我赢得最大比例的游戏?如果是这样,它是什么?

编辑:是否存在可以针对给定限制计算的确切获胜概率,与对手无关?(自大学以来我没有完成概率和统计).我有兴趣将其视为将其与模拟结果进行对比的答案.

编辑:修复了我的算法中的错误,更新了结果表.

背景

我一直在玩一个改进的二十一点游戏,其中一些相当讨厌的规则调整来自标准规则.我将与标准二十一点规则不同的规则用于斜体,并为不熟悉的人提供二十一点规则.

修改过的二十一点规则

  1. 正好两个人类玩家(经销商无关紧要)
  2. 每位玩家面朝下发两张牌
    • 玩家_ever_都不知道对手牌的_any_值
    • 在_both_完成手牌之前,任何一方都不知道对手的牌值
  3. 目标是尽可能接近21分.成果:
    • 如果玩家的A&B得分相同,那么游戏就是平局
    • 如果玩家的A&B都得分超过21(一个半身像),那么游戏就是平局
    • 如果玩家A的得分<= 21并且玩家B已经被击败,则玩家A 获胜
    • 如果玩家A的得分高于玩家B,并且都没有被击败,则玩家A 获胜
    • 否则,玩家A输了(B赢了).
  4. 卡值得:
    • 卡2到10值相应的点数
    • 卡J,Q,K值10分
    • 卡牌王牌价值1或11分
  5. 每位玩家可以一次请求一张额外的牌,直到:
    • 玩家不再需要(留下)
    • 任何A计为1的玩家得分超过21(胸围)
    • 两个玩家都不知道对方在任何时候使用了多少张牌
  6. 一旦两名球员都停留或被击败,获胜者将根据上述规则3确定.
  7. 在每手牌之后整个牌组重新洗牌,所有52张牌再次进场

什么是一副牌?

一副牌由52张牌组成,以下13个值各有四张:

2,3,4,5,6,7,8,9,10,J,Q,K,A

卡的其他财产都不相关.

Ruby的表示形式是:

CARDS = ((2..11).to_a+[10]*3)*4
Run Code Online (Sandbox Code Playgroud)

算法

我一直在接近这个如下:

  • 如果我的分数是2到11,我总是想打,因为它不可能破灭
  • 对于12到21分中的每一个,我将模拟N手对抗对手
    • 对于这N个牌,得分将是我的"限制".一旦达到极限或更高,我会留下来.
    • 我的对手将遵循完全相同的策略
    • 我会模拟N个手的每个排列(12..21),(12..21)
  • 打印每个排列的赢利和亏损差异以及净赢利差异

这是在Ruby中实现的算法:

#!/usr/bin/env ruby
class Array
  def shuffle
    sort_by { rand }
  end

  def shuffle!
    self.replace shuffle
  end

  def score
    sort.each_with_index.inject(0){|s,(c,i)|
      s+c > …
Run Code Online (Sandbox Code Playgroud)

ruby language-agnostic algorithm probability playing-cards

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

将UIWebView标题发送到UINavigationBar

嗨,我已经到处寻找,但没有任何帮助,我试图将UIWebView页面标题发送到UINavigationBar.

我也希望如果用户点击UINavigationBar显示后退按钮的链接,但如果在主页上隐藏后退按钮.

如果你可以帮助那将是非常好的

iphone title uinavigationbar uiwebview

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

代码"DECLDIR __declspec(dllexport)"真的有用吗?

#ifndef _DLL_TUTORIAL_H_
#define _DLL_TUTORIAL_H_
#include <iostream>

#if defined DLL_EXPORT
#define DECLDIR __declspec(dllexport)
#else
#define DECLDIR __declspec(dllimport)
#endif

extern "C"
{
   DECLDIR int Add( int a, int b );
   DECLDIR void Function( void );
}

#endif
Run Code Online (Sandbox Code Playgroud)

代码到底是DECLDIR __declspec(dllexport)做什么的?

c dll file

6
推荐指数
2
解决办法
3765
查看次数

支持自定义字段的C#ID3库

目前我正在使用TagLib Sharp,如@stackoverflow中的一篇帖子所述,用于读取mp3,flac,ogg和类似的多媒体文件中的id3-Tag ..现在我才意识到,id3v2(甚至v1)支持自定义标签但是我找不到在TagLib Sharp中读/写自定义标签的实现.有人知道支持自定义字段的库吗?

基督教

---更新20100422 ---

还在搜索..找到这个页面:

http://id3.org/Implementations

.net c# mp3 id3

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

Haskell错误:无法将预期类型"Integer"与推断类型"Int"匹配

我有一个haskell函数,它计算有限Ints列表的大小.我需要输出类型为Integer,因为该值实际上将大于Int的最大边界(如果输出类型是Int,则结果将是-1以确切)

size :: a -> Integer
size a =  (maxBound::Int) - (minBound::Int)
Run Code Online (Sandbox Code Playgroud)

我理解Ints(有界)和Integers(无界)之间的区别,但我想从Int创建一个Integer.我想知道是否有像fromInteger这样的函数,这将允许我将Int转换为Integer类型.

haskell types integer

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

在.Net中设置计划任务

我在StackOverflow上阅读了一些关于任务调度的帖子,但我不确定我是否正确.我正在编码(在VB.Net中)一个备份应用程序,我想将其添加为计划任务(事实上,我只是想让用户决定每天运行它,例如,3上午).

我已经阅读了建议使用Windows服务的帖子,但对于像定期运行任务这样简单的事情听起来有点太多了,不是吗?

你能告诉我如何在VB.Net中设置一个预定的任务吗?我试图让我的代码尽可能轻量级.

.net vb.net scheduling scheduled-tasks

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

学习算法和数据结构基础知识

你能推荐我一本书或(更好!)一个有许多难题的网站和关于数据结构的练习吗?

我已经回答了Euler项目的问题,但这些问题都是有趣的,但不常见的算法.我几乎没用过一棵简单的树.也许有一个网站有类似的练习:嘿,你需要计算一下:.... 用树做它.现在用拉链做吧.上传你的C(Haskell,Lisp,甚至是Pascal或Fortress go)解决方案.哦,你的解决方案太慢了!

当你尝试学习非常普通的基本事物时,自我教育是非常困难的.如何在不参加课程或其他任何事情的情况下帮助自己?

algorithm data-structures

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

在GCC风格的扩展内联asm中,是否可以输出"虚拟化"布尔值,例如进位标志?

如果我有以下C++代码来比较两个128位无符号整数,使用内联amd-64 asm:

struct uint128_t {
    uint64_t lo, hi;
};
inline bool operator< (const uint128_t &a, const uint128_t &b)
{
    uint64_t temp;
    bool result;
    __asm__(
        "cmpq %3, %2;"
        "sbbq %4, %1;"
        "setc %0;"
        : // outputs:
        /*0*/"=r,1,2"(result),
        /*1*/"=r,r,r"(temp)
        : // inputs:
        /*2*/"r,r,r"(a.lo),
        /*3*/"emr,emr,emr"(b.lo),
        /*4*/"emr,emr,emr"(b.hi),
        "1"(a.hi));
    return result;
}
Run Code Online (Sandbox Code Playgroud)

然后它将非常有效地内联,但有一个缺陷.返回值通过通用寄存器的"接口"完成,值为0或1.这会增加两个或三个不必要的额外指令,并减少比较操作,否则将完全优化.生成的代码看起来像这样:

    mov    r10, [r14]
    mov    r11, [r14+8]
    cmp    r10, [r15]
    sbb    r11, [r15+8]
    setc   al
    movzx  eax, al
    test   eax, eax
    jnz    is_lessthan
Run Code Online (Sandbox Code Playgroud)

如果我使用带有"bo"返回值的"sbb%0,%0"而不是带有"bool"返回值的"setc%0",那么还有两个额外的指令:

    mov    r10, [r14]
    mov    r11, [r14+8]
    cmp    r10, [r15] …
Run Code Online (Sandbox Code Playgroud)

assembly flags gcc boolean inline-assembly

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