dashboard.Grid
|> Seq.mapi ^-^ fun y sx ->
sx |> Seq.mapi ^-^ fun x s ->
if not <| s.IsEmpty && s.CellState.Color = color then
let psteps = s.CellState.motion( dashboard, new SPosition(x,y), color )
if psteps <> null then
if psteps.IsEmpty then
Some(psteps)
else
None
else None
else None
|> Seq.choose id
|> Seq.collect(fun x -> x)
|> Seq.collect(fun x -> x)
Run Code Online (Sandbox Code Playgroud)
所以,我只是觉得这个序列的最后一部分(2 个字符串)很奇怪。我可以用另一种方式打开序列吗?List.ofSeq() 在这里不起作用。
谢谢你。
我正在写一个快速的DB perf测试,并选择F#所以我可以得到更多练习.
我创建了一个measureSelectTimes具有签名的方法Guid list * Guid list -> IDbCommand -> TimeSpan * TimeSpan.
然后,我称之为:
let runTests () =
let sqlCeConn : IDbConnection = initSqlCe() :> IDbConnection
let sqlServerConn : IDbConnection = initSqlServer() :> IDbConnection
let dbsToTest = [ sqlCeConn; sqlServerConn ]
let cmds : seq<IDbCommand> = dbsToTest |> Seq.map initSchema
let ids : seq<Guid list * Guid list> = cmds |> Seq.map loadData
let input = Seq.zip ids cmds
let results = input |> Seq.map (fun …Run Code Online (Sandbox Code Playgroud) 鉴于let ra = ResizeArray<int> ():
Seq.forall (fun i ->
let q = i % 2
if 0 = q then ra.Add i
true ) <| seq { 1..10 }
Run Code Online (Sandbox Code Playgroud)
如果我这样做,ra.Count退货5.
Seq.forall (fun i ->
let q = i % 2
if 0 = q then ra.Add i
0 = q ) <| seq { 1..10 }
Run Code Online (Sandbox Code Playgroud)
如果我这样做,ra.Count退货0.
那么,除非lambda函数的每次迭代求值为true,否则实际上函数中没有任何代码被执行,或者什么?
这里发生了什么?
在R中,打印乘法表的最快方法(最短代码)是什么?函数seq rep和绑定函数有帮助,但我正在寻找最短的代码行来完成这项工作.
rbind("1\'s"=1:12, "2\'s"=seq(2,24,2), "3\'s"=seq(3,36,3),
"4\'s"=seq(4,48,4), "5\'s"=seq(5,60,5), "6\'s"=seq(6,72,6))
Run Code Online (Sandbox Code Playgroud)
打印1到6(横向).任何人都知道如何以更紧凑的方式执行此操作?
这是我的解决方案,但我不太喜欢它:
var seq1: Seq[String] = Seq("apple", "banana", "camel")
var seq2: Seq[(String, String)] = Seq( "green" -> "fruit", "yellow" -> "fruit", "brown" -> "animal" )
var iter = seq1.toIterator
seq2.map {s => (s._1, s._2, iter.next()) }
Run Code Online (Sandbox Code Playgroud) 我正在讨论seq在Bash脚本中使用for小型循环(例如,具有10次迭代的循环)。我说,例如,这样做更好
for i in {1..10}
do
echo "Welcome $i times"
done
Run Code Online (Sandbox Code Playgroud)
比使用seq
for i in $(seq 10)
do
echo "Welcome $i times"
done
Run Code Online (Sandbox Code Playgroud)
如此处所写:http : //www.cyberciti.biz/faq/bash-for-loop/
在我看来,对于短循环使用非内置命令是没有用的。例如性能如何?
我在F#中有一个序列:
let n = 2
let seq1 = {
yield "a"
yield "b"
yield "c"
}
Run Code Online (Sandbox Code Playgroud)
我想打印序列中的每个项目n次.我可以这样做:
let printx line t =
for i = 1 to t do
printfn "%s" line
seq1 |> Seq.iter (fun i -> printx i n)
Run Code Online (Sandbox Code Playgroud)
输出为:
a
a
b
b
c
c
我认为这不是最好的解决方案.如何复制序列中的项目?
以下命令应该打印第一行和最后一行seq 100,但它只打印第一行:
seq 100 | (head -n1 ; tail -n1)
1
Run Code Online (Sandbox Code Playgroud)
它适用于较大的序列,例如10,000:
seq 10000 | (head -n1 ; tail -n1)
1
10000
Run Code Online (Sandbox Code Playgroud)
我选择了@ John1024的答案,因为我的问题是为什么这不起作用,他提供了一个可接受的答案.
此外,应该是很明显我only..the现实的看法是,head不以这种方式工作......它很可能消耗更多的标准输入比我想,并留下任何的tail.
当然,在第一个问题中提示此问题的问题是尝试读取文件的第一行和最后一行.这是我基于GNU提出的解决方案sed:
sed -ne'1,9{p;b}' -e'10{x;s/$/--/;x;G;p;b}' -e':a;$p;N;21,$D;ba'
Run Code Online (Sandbox Code Playgroud)
或者更紧凑
sed -ne'1,9{p;b};10{x;s/$/--/;x;G;p;b};:a;$p;N;21,$D;ba'
Run Code Online (Sandbox Code Playgroud)
*注意在我的Mac上,使用MacPorts,GNU sed被调用为gsed.Apple的内置版本sed对于分号分隔表达式很挑剔,需要多个-e参数.这适用于Apple的sed:sed -ne'1,9{' -e'p;b' -e'}' -e'10{' -e'x;s/$/--/;x;G;p;b' -e'}' -e':a' -e'$p;N;21,$D;ba'*
seq 100 | gsed -ne'1,9{p;b}' -e'10{x;s/$/--/;x;G;p;b}' -e':a;$p;N;21,$D;ba'
1
2 …Run Code Online (Sandbox Code Playgroud) 我有一个接受String*参数的函数。我正在实现另一个函数,该函数需要Seq[String](或字符串数组)作为参数,但需要使用该参数调用先前的函数。有什么办法可以进行转换吗?
def foo (s: String*) = {
...
}
def callFoo (s: Seq[String]) = {
foo (s) // this throws an error
}
Run Code Online (Sandbox Code Playgroud)
foo函数可以称为foo("string1", "string2", "string3")。但是我只想调用callFoo(Seq[String])函数并从中获取结果foo()
我需要在最短的时间内创建一个数字序列,最好在微秒范围内。这个序列的总长度一般在20-10万个数字之间,但有时我需要创建一个200-30万个数字的序列。目前我已经在 R 中实现了我的代码(只是因为我对语言相当了解)。假设我的序列应该从 1 开始到 25 结束,增量为 0.0001,在 RI 中
s <- seq(1, 25, by = 0.0001)
Run Code Online (Sandbox Code Playgroud)
虽然速度非常快,但这需要几毫秒才能完成
> library(microbenchmark)
> microbenchmark(seq(1, 25, by = 0.0001))
Unit: milliseconds
expr min lq mean median uq max neval
seq(1, 25, by = 1e-04) 1.6098 2.14505 3.741858 2.2324 2.3554 83.8912 100
Run Code Online (Sandbox Code Playgroud)
这是我的问题:
1- 是否可以在 R 中更快地生成序列?理想情况下 < 0.5 毫秒?
2- 在某些时候,我需要用另一种(更快的)语言来实现代码,是否有任何语言能够在 100-200 微秒内生成这样的序列?