小编act*_*.se的帖子

以编程方式解决"谁拥有斑马"?

编辑:这个谜题也被称为"爱因斯坦的谜语"

谁拥有斑马(你可以试试这里的网络版)是一款经典的一套谜题的一个例子,我敢打赌,大多数人对堆栈溢出可以用纸笔解决它.但程序化解决方案会是什么样子?

基于下面列出的线索......

  • 有五个房子.
  • 每栋房屋都有自己独特的颜色.
  • 所有房主都是不同国籍的.
  • 他们都有不同的宠物.
  • 他们都喝不同的饮料.
  • 他们都抽不同的香烟.
  • 英国人住在红房子里.
  • 瑞典人有一只狗.
  • 丹麦人喝茶.
  • 温室位于白宫的左侧.
  • 他们在温室里喝咖啡.
  • 抽烟Pall Mall的男人有鸟.
  • 他们在黄屋里吸烟登喜路.
  • 在中间的房子里,他们喝牛奶.
  • 挪威人居住在第一所房子里.
  • 吸烟的男人住在房子旁边的房子里和猫咪住在一起.
  • 在房子旁边的房子里,他们有一匹马,他们吸烟登喜路.
  • 抽烟师傅的男人喝啤酒.
  • 德国人抽烟王子.
  • 挪威人住在蓝屋旁边.
  • 他们在房子旁边的房子里喝水,他们吸烟混合.

谁拥有斑马?

language-agnostic logic constraint-programming zebra-puzzle

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

使用BOOST_FOREACH时如何正确地使Eclipse CDT自动缩进?

我在Eclipse 3.4.1(CDT 5.0.1)中编写了这个小小的C++示例:

#include <iostream>
#include <vector>
#include <boost/foreach.hpp>

int foo()
{
  std::vector<int> numbers;
  BOOST_FOREACH(int n, numbers)
  {
    std::cout << n << std::endl;
  }
  std::cout << numbers.size << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

然后我按Shift + Ctrl + F格式化我的代码,它变为:

#include <iostream>
#include <vector>
#include <boost/foreach.hpp>

int foo()
{
    std::vector<int> numbers;
    BOOST_FOREACH(int n, numbers)
{   std::cout << n << std::endl;
}
std::cout << numbers.size << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

这与BSD/Allman代码风格有关.其他样式显然改变了格式化代码的外观,但没有一个给出正确的缩进.

当我在更大的代码片段上使用格式化功能时,后续的函数或方法也会受到太少缩进的影响,这使得格式化帮助非常无益.

我有什么办法可以使缩进与BOOST_FOREACH一起正常工作吗?

c++ eclipse formatting boost indentation

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

以编程方式读取本地密码策略

是否有Windows API函数允许读取当前密码策略是什么?例如,最小长度,复杂性等.

如果没有阅读,有没有办法以编程方式验证策略的密码?

windows security winapi

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

C++字符串,可以为NULL

我习惯在我的C++应用程序中传递这样的字符串:

void foo(const std::string& input)
{
  std::cout << input.size() << std::endl;
}

void bar()
{
  foo("stackoverflow");
}
Run Code Online (Sandbox Code Playgroud)

现在我有一个我希望字符串为NULL的情况:

void baz()
{
  foo("stackoverflow");
  foo(NULL); // very bad with foo implementation above
}
Run Code Online (Sandbox Code Playgroud)

我可以foo改为:

void foo(const std::string* input)
{
  // TODO: support NULL input
  std::cout << input->size() << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

但是为了传递一个字符串文字或复制一个char*实现,foo我需要写这样的东西:

void bar()
{
  string input("hi"); // annoying temporary
  foo(&input);
  foo(NULL);  // will work as long as foo handles NULL properly
}
Run Code Online (Sandbox Code Playgroud)

我开始考虑继承std::string和添加null …

c++ string null

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

评估C++字符串中的表达式:"来自$ {host}的Hi $ {user}"

我正在寻找一种干净的C++方法来解析包含$ {}中包含的表达式的字符串,并从编程计算表达式构建结果字符串.

示例:如果我实现程序让"user"评估为"foo"等,"来自$ {host}的Hi $ {user}"将被评估为"Hi foo from bar".

我正在考虑的当前方法包括一个状态机,它一次从字符串中吃掉一个字符,并在达到'}'后评估表达式.任何提示或其他建议?

注意:boost ::非常欢迎!:-)

更新感谢前三个建议!不幸的是我让这个例子太简单了!我需要能够检查$ {}内的内容,所以这不是一个简单的搜索和替换.也许它会说$ {uppercase:foo}然后我必须使用"foo"作为hashmap中的一个键,然后将其转换为大写,但我在编写上面的原始问题时试图避免$ {}的内部细节...... :-)

c++ string parsing boost expression

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

将数组作为参数传递

我读了一本书,int f (int P[2][4])不能接受A[2][3],但B[3][4]很好.这是什么原因?特别是当我们使用指针创建动态分配时,这应该不是问题.谢谢

c++

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