X86 GNU Assembly上的宏有什么问题?它表示符号S在链接期间未定义.
.macro S size=40
\size
.endm
Run Code Online (Sandbox Code Playgroud)
我正在使用它
mov %eax, S
Run Code Online (Sandbox Code Playgroud) 我需要评估行的总和:1/1 + 1/2 + 1/3 + ... + 1/n.考虑到在C++评估中并不完全准确,求和的顺序起着重要作用.1/n + 1 /(n-1)+ ... + 1/2 + 1/1表达式给出更准确的结果.所以我需要找出求和的顺序,它提供了最大的准确性.我甚至不知道从哪里开始.首选的实现语言是C++.对不起我的英文,如果有任何错误.
我需要开发一种算法,可以在某个层次结构中定位数据项位置.我有一个层次结构,对某些数据集的元素进行分类.层次结构是分类的 - 顶级元素是最通用的类,它匹配数据集的任何元素,更深层的元素包含与数据集的某个子集匹配的更具体的类.
例如,考虑游艇的层次结构.我们有顶级游艇.在下一个级别,我们有帆船游艇和机动游艇.帆船游艇有两个孩子 - 巡航游艇和赛艇游艇.巡洋舰可以由制造商进一步划分,例如Bavaria Yachts和Dufour Yachts.然后,每个类可以进一步除以船体类型,长度,风帆面积等.
这是数据集中的一个示例:
Drive Class Manufacturer Hull type Len Sails Area ... Model
Sailing Cruiser Bavaria Yachts Mono-hull 25ft 560sqft ... Bavaria 32
Sailing Cruiser Dufour Yachts Mono-hull 27ft 580sqft ... Dufour 32 Classic
Run Code Online (Sandbox Code Playgroud)
通过深度优先顺序搜索,我可以轻松地将每个样本映射到层次结构.
乍一看这是一个简单的搜索问题,但存在一些困难.
第一个难点:数据项不必包含所有元素.数据项通常缺少10%到50%的元素.许多这些元素并不是很重要,例如游艇Drive只能是Motor或Sail,所以它不会带来很多信息(只有1位).可以使用更重要的元素轻松推断这些元素,例如,如果我们知道游艇模型,我们可以推断出数据项的所有其他元素(或字段).
第二个难点:某些元素可能因不同数据项而异,即使它们对应于层次结构中的相同位置(相同的游艇模型).例如,帆船区域可能会有很大差异,因为船主以不同的方式修改游艇的装备或仅仅是圆形区域值.
正如我已经提到的,我需要从层次结构中的数据集中找到不同的数据项.每个数据项可以以不同的精度定位.精度是层次结构中搜索过程停止的深度.换句话说,我需要在层次结构中获取与每个数据项对应的路径,并且此路径可能不完整.例如,算法可以发现数据项对应于Juliet 23游艇,但生产年份仍然是未知的.
如果我可以为每个路径获得具有概率测量的多个路径,那将会很酷.例如,算法可以为不同的生产年份返回Juliet 23的 4条路径,每条路径的概率为25%.
此时我使用深度优先搜索和一些启发式方法解决了这个问题.它给出了很好的结果,但我认为可以获得更好的结果.也许你可以用更通用的方式来表达这个问题,这样我就可以搜索一些关于它的学术论文.
我有一个表格的正则表达式
def parse(self, format_string):
for m in re.finditer(
r"""(?: \$ \( ( [^)]+ ) \) ) # the field access specifier
| (
(?:
\n | . (?= \$ \( ) # any one single character before the '$('
)
| (?:
\n | . (?! \$ \( ) # any one single character, except the one before the '$('
)*
)""",
format_string,
re.VERBOSE):
...
Run Code Online (Sandbox Code Playgroud)
我想\$ \(用一些自定义简写"常量" 替换所有重复序列(),如下所示:
def parse(self, format_string):
re.<something>('\BEGIN = \$\(')
for m in re.finditer( …Run Code Online (Sandbox Code Playgroud) 我正在考虑重新实现我们的构建系统(目前基于GNU Make)CMake.
免责声明:这更像是一个理论和"最佳实践"问题.我不知道CMake深入.此外,如果问题更多,请随时将问题迁移给程序员.
据我所知,标准的工作流程CMake是
cmake .
make
Run Code Online (Sandbox Code Playgroud)
我怀疑可能存在CMake文件和Makefile 的去同步问题.
所以,在平时的开发过程中你应该运行make,以避免不必要的重建CMakeCache和Makefiles一般使这一过程更加简单.但是,如果你添加一个新的源文件CMakeLists并运行make它,它将使用旧的CMakeCache,Makefiles并且不会自动重新生成它们.我认为在大规模使用时可能会导致重大问题,因为如果某些东西没有按照它应该构建,你将不得不尝试执行make clean,然后,如果它没有帮助,你将需要删除CMakeCache并重新生成一切(手动!).
如果我对上述内容不对,请纠正我.
我想做
awesome-cmake
Run Code Online (Sandbox Code Playgroud)
并让它更新所有需要更新和构建项目的内容.
所以,问题是:有没有办法用CMake进行"原子构建",以便跟踪所有必需的信息并抽象出使用make?
我有以下代码:
import System.Environment
import System.Directory
import System.IO
import Data.List
dispatch :: [(String, [String] -> IO ())]
dispatch = [ ("add", add)
, ("view", view)
, ("remove", remove)
, ("bump", bump)
]
main = do
(command:args) <- getArgs
let result = lookup command dispatch
if result == Nothing then
errorExit
else do
let (Just action) = result
action args
errorExit :: IO ()
errorExit = do
putStrLn "Incorrect command"
add :: [String] -> IO ()
add [fileName, todoItem] = appendFile fileName …Run Code Online (Sandbox Code Playgroud) 我有以下来源
-- Quantity.hs
import System.Random
data Quantity = Quantity Integer deriving (Show)
instance Random Quantity where
randomR (Quantity lo, Quantity hi) g =
let rand = randomR (lo, hi) g
(r, g) = rand
in (Quantity r, g)
random g =
let rand = random g
(r, g) = rand
in (Quantity r, g)
Run Code Online (Sandbox Code Playgroud)
当我这样做的ghci Quantity.hs话
let g = mkStdGen 0
let (r, g1) = random g :: (Quantity, StdGen)
r
Run Code Online (Sandbox Code Playgroud)
最后一步的输出是
Quantity <no newline>
Run Code Online (Sandbox Code Playgroud)
并且计算显然是挂起,但CPU没有做任何事情(通过系统监视器确认).
同时
let …Run Code Online (Sandbox Code Playgroud) 我是Haskell的新手.我正在玩QuickCheck测试,尝试测试一个简单的功能calculateStrengthSingle(参见下面的测试人员来源)
# Fighter.hs
module Fighter
( Quantity(Quantity)
, Fighter(TeamPlayer, LoneWolf, Polymorph)
, Strength(Strength)
, calculateStrengthSingle)
where
import System.Random
data Strength = Strength Double
instance Eq Strength where
Strength s1 == Strength s2 =
s1 == s2
instance Ord Strength where
Strength s1 < Strength s2 =
s1 < s2
data Quantity = Quantity Int deriving (Show)
instance Random Quantity where
randomR (Quantity lo, Quantity hi) g =
let rand = randomR (lo, hi) g
(r, g1) = rand …Run Code Online (Sandbox Code Playgroud)