在Clojure中,我使用了一个名为iterate:
返回x,(fx),(f(fx))等的延迟序列.f必须没有副作用
Rust中有类似的东西吗?
例如,我有这个函数,我想传递给一个带有数字的函数,然后迭代一个流/范围/向量,直到找到Some(1):
fn coltz(n: u64) -> Option<u64> {
match n % 2 {
0 => Some(n / 2),
_ => Some(3 * n + 1)
}
}
Run Code Online (Sandbox Code Playgroud) 我似乎无法使用变量空格来解析我的日期.
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEE MMM d HH:mm:ss yyyy");
LocalDateTime dateTime = LocalDateTime.parse(date, formatter);
Run Code Online (Sandbox Code Playgroud)
这是我必须接受的格式
Sat Jul 2 08:52:13 2016
Sat Jul 12 08:52:13 2016
Run Code Online (Sandbox Code Playgroud)
如果我将格式化程序更改为下面的格式化程序,我可以让顶部通过,但它将以2位数字打破
EEE MMM d HH:mm:ss yyyy
Run Code Online (Sandbox Code Playgroud) 我需要在ENTRY的最后一个匹配到文件末尾之后抓取内容,我似乎无法做到.它可以是多行,数据可以包含文件末尾的任何字符,包括(,\n,).
我试过了:
tail -1 file # doesn’t work due to it not consistently being one line
grep "^(.*" # only grabs one line
pcregrep -M '\n(.*' file # I think a variation of this is the solution, but I’ve had no luck so far.
Run Code Online (Sandbox Code Playgroud)
文件增长如下:
TOP OF FILE
%
ENTRY
(S®s
?6ûí?‹ôTìßÅDPˆ¬k·Ù"=ÓxF)*†‰ú?ÃQ´¿J‘\˜©ŒG»‡?QÆ’<?sµ-ù±ñ?NäAOilWçk
N+P}V<ôÒ??µ?W*`Hß”;–GØ»14?åR"ºã
FD‘mÍõ?*ÊÎÉC)(S®s
?6ûí?‹ôTìßÅDPˆ¬k·Ù"=ÓxF)*†‰ú?ÃQ´¿J‘\˜©ŒG»‡?QÆ’<?sµ-ù±ñ?NäAOilWçk
N+P}V<ôÒ??µ?W*`Hß”;–GØ»14?åR"ºã
FD‘mÍõ?*ÊÎÉC)eq
{
DATA
}
ENTRY
(A® S\kÉ?ã1»Âb?¯Ú??ä?HZ@F?§•Ã*‹¡‹…ÿPkJòÑíòú?¶à?¨¢v|u«Ùbó–Ö¶¢?5?Ü@¨•?®@W´?‡*`H?”?–Só¬<?ìEçöf??Gg±:œe™??å)A® S\kÉ?ã1»Âb?¯Ú??ä?HZ@F?§•Ã*‹¡‹…ÿPkJòÑíòú?¶à?¨¢v|u«Ùbó–Ö¶¢?5?Ü@¨•?®@W´?‡*`H?”?–Só¬<?ìEçöf??Gg±:œe™??å)eq
{
DATA
}if
ENTRY
(ÌSYõ?9°\K¬???|”/í÷L
Ö?h/ÜÇi"û£?±€ÀNéÓ›bÏÿmâ[?4J’XPü´Z
oÜlø?…qìõ¢,ßü©cÓ{—˜e&ÚÀÓHÏÜ‚m(Œ??ˆQ?òêpoÉÄÂ(S‘E ? !ŸQ§ô6ÉH
Run Code Online (Sandbox Code Playgroud) 我已经移走了正在Visual Studio中运行并构建的并行程序。我正在使用c ++并在intel编译器上进行编译。我必须将项目移至Linux机器上并运行它。所以我做了下面的make文件。
parallel: main.o Node.o
icpc -o parallel main.o Node.o
main.o: main.cpp
icpc -c $(CONFIG) main.cpp
Node.o: Node.cpp
icpc -c $(CONFIG) Node.cpp
clean:
rm -f parallel *.o core core.*
CONFIG = -openmp
Run Code Online (Sandbox Code Playgroud)
但是得到这个输出。我无法弄清楚为什么它在Windows上无法正常工作。
main.cpp:(.text+0x4e): undefined reference to `__kmpc_begin'
main.cpp:(.text+0xa2): undefined reference to `__kmpc_global_thread_num'
main.cpp:(.text+0xb2): undefined reference to `__kmpc_ok_to_fork'
main.cpp:(.text+0xc9): undefined reference to `__kmpc_fork_call'
main.cpp:(.text+0xdb): undefined reference to `__kmpc_serialized_parallel'
main.cpp:(.text+0xfa): undefined reference to `__kmpc_end_serialized_parallel'
main.cpp:(.text+0x106): undefined reference to `__kmpc_ok_to_fork'
"" "" '"" """
Run Code Online (Sandbox Code Playgroud)
尽管我认为这不是我的项目,但没有必要。
http://bitbucket.org/pumphouse/disjoint-sets-serial-parallel
解析器按预期工作,直到我要解析h:始终是字符串中最后一位的数字,并且编译器给了我
^ expected &str, found struct `nom::types::CompleteStr`
Run Code Online (Sandbox Code Playgroud)
我认为这是因为解析器正在向前看。我该如何停止,或如何表示已完成?
#[macro_use]
extern crate nom;
use nom::digit;
use nom::types::CompleteStr;
use std::str::FromStr;
#[derive(Debug, PartialEq)]
pub struct Order {
pub l: u64,
pub w: u64,
pub h: u64,
}
named!(order_parser<CompleteStr, Order>,
do_parse!(
l: map_res!(digit, u64::from_str) >>
tag!("x") >>
w: map_res!(digit, u64::from_str) >>
tag!("x") >>
h: map_res!(digit, u64::from_str) >>
(Order {l: l, w: w, h: h })
)
);
pub fn wrap_order(order: &str) -> Result<(CompleteStr, Order), nom::Err<&str>> {
order_parser(order)
}
#[test]
fn test_order_parser() { …Run Code Online (Sandbox Code Playgroud)