背景:
我有一系列连续的,带时间戳的数据.数据序列中存在间隙,其中数据不连续.我想创建一种方法将序列分成序列序列,以便每个子序列包含连续数据(在间隙处分割输入序列).
约束:
方法签名
let groupContiguousDataPoints (timeBetweenContiguousDataPoints : TimeSpan) (dataPointsWithHoles : seq<DateTime * float>) : (seq<seq< DateTime * float >>)= ...
Run Code Online (Sandbox Code Playgroud)
从表面上看,问题看起来微不足道,但即使采用Seq.pairwise,IEnumerator <_>,序列理解和屈服声明,解决方案也让我望而却步.我确信这是因为我仍然缺乏组合F#-idioms的经验,或者可能是因为我还没有接触过一些语言结构.
// Test data
let numbers = {1.0..1000.0}
let baseTime = DateTime.Now
let contiguousTimeStamps = seq { for n in numbers ->baseTime.AddMinutes(n)}
let dataWithOccationalHoles = Seq.zip contiguousTimeStamps numbers |> Seq.filter (fun (dateTime, num) -> num % 77.0 <> 0.0) // Has a gap in the data every …
Run Code Online (Sandbox Code Playgroud) 我有一个类层次结构:
abstract DomainObject {
...
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator="SEQ")
@SequenceGenerator(name="SEQ",sequenceName="SEQ_DB_NAME")
@Column(name = "id", updatable = false, nullable = false)
private Long id;
...
}
BaseClass extends DomainObject {
...
// Fill in blank here where this class's @Id will use a unique sequence generator
// bonus points for any sort of automatic assignment of generator names that might
//prevent me from having to instrument all my domain objects uniquely
...
}
Run Code Online (Sandbox Code Playgroud)
笔记:
let aBunch = 1000 let offset = 0 let getIt offset = MyIEnumerable |> Seq.skip aBunch * offset |> Seq.take aBunch |> Seq.iter ( .. some processing ...)
使用不同的偏移量调用getIt()最终会给我一个"无效操作"异常,其中包含"输入序列元素不足"的附加信息
我尝试理解为什么,因为Seq.Skip和Seq.take都没有根据在线文档FSharp Collections生成异常
版本:(Visual Studio 2010)Beta 1
我的数据库中有一个新序列.
我需要向Web用户授予哪些权限才能使用序列?我尝试在序列上授予选择权,但网络用户似乎仍然无法看到它.
这是一种游戏,其中卡1-50被分发给两个玩家,每个玩家具有10个随机顺序的卡.目标是对所有卡片进行排序,并且首先执行该卡片的人是赢家.每次一个人都可以从卡座上取卡,他必须更换现有的卡.玩家不能交换他的牌.也就是说只有他可以用卡片从卡片上取代他的卡片.丢弃的卡片将以随机顺序返回卡片.现在我需要编写一个有效地执行此操作的程序.
我已经考虑过以下解决方案1)找到在给定的一组卡中按升序排列的所有子序列2)对于每个子序列,基于可以解决问题的方式的概率来计算权重.例如:如果我有一个子序列48,49,50在索引2,3,4完成问题的概率是这个子序列是0.所以权重乘以0.类似地,如果我在索引3,4,5处有序列18,20,30,则完成游戏的可能方式中没有可能的卡可选择用于6-10和17种可能的卡以选择前2个位置,3)从卡片组中的每张卡片,我将扫描列表并重新计算子卡片的重量以找到更合适的卡片.
好吧,这个解决方案可能有很多缺陷,但我想知道1)给定一个子序列,如何找到完成游戏的可能方式的可能性?2)找到所有子序列的最佳算法是什么?
我正在开展一个项目,我需要在R中输入一些"T得分"表.这些表用于将原始测试分数转换为标准值.它们通常遵循特定的模式,但不是简单的模式.例如,一种模式是:
34,36,39,42,44,47,50,52,55,58,60,63,66,68,
71,74,76,79,82,84,87,90,92,95,98,100,103,106
Run Code Online (Sandbox Code Playgroud)
我宁愿使用一个简单的函数来填充它们,而不是手工输入它们.我知道seq()函数可以创建一个简单的seqeuence,如:
R> seq(1,10,2)
[1] 1 3 5 7 9
Run Code Online (Sandbox Code Playgroud)
有没有办法根据特定模式创建更复杂的序列?例如,上述数据可以如下:
c(34,seq(36:106,c(3,3,2)) # The pattern goes 36,39,42,44,47,50,52 (+3,+3,+2)
Run Code Online (Sandbox Code Playgroud)
...但是,这会导致错误.我以为会有一个功能应该这样做,但我所有的Google-fu刚刚把我带回原来的seq().
我创建一个表和序列,以便替换我使用SQL Server 2012 Express的表中的标识,但是当我尝试将数据插入表时,我收到此错误
消息11719,级别15,状态1,行2
NEXT VALUE FOR函数不允许在检查约束,默认对象,计算列,视图,用户定义函数,用户定义聚合,用户定义表类型,子查询,公用表表达式或派生表.
T-SQL代码:
insert into Job_Update_Log(log_id, update_reason, jobid)
values((select next value for Job_Log_Update_SEQ),'grammer fixing',39);
Run Code Online (Sandbox Code Playgroud)
这是我的表:
create table Job_Update_Log
(
log_id int primary key ,
update_reason nvarchar(100) ,
update_date date default getdate(),
jobid bigint not null,
foreign key(jobid) references jobslist(jobid)
);
Run Code Online (Sandbox Code Playgroud)
这是我的顺序:
CREATE SEQUENCE [dbo].[Job_Log_Update_SEQ]
AS [int]
START WITH 1
INCREMENT BY 1
NO CACHE
GO
Run Code Online (Sandbox Code Playgroud) 给定BST,找到从root开始的所有节点序列,它们基本上会给出相同的二叉搜索树.
比如,给出一个bst
3
/ \
1 5
Run Code Online (Sandbox Code Playgroud)
答案应该是3,1,5和3,5,1.
另一个例子
5
/ \
4 7
/ / \
1 6 10
Run Code Online (Sandbox Code Playgroud)
产出将是
5,4,1,7,6,10
5,4,7,6,10,1
5,7,6,10,4,1
等等
然而,这里的不变量是父母的索引必须始终小于其子项.我很难实现它.
要填充具有某些值的序列,这就是我想出的:
(defn pad [n coll val]
(take n (concat coll (repeat val))))
(pad 10 [1 2 3] nil) ; (1 2 3 nil nil nil nil nil nil nil)
Run Code Online (Sandbox Code Playgroud)
我很好奇是否有一个较短的成语,已经这样做,也许更有效率.
我们有一个递增的序列,其中每个元素仅由偶数位组成(0,2,4,6,8).我们怎么样find the nth number in this sequence
是否有可能在O(1)时间内找到此序列中的第n个数字.
序列: 0, 2, 4, 6, 8, 20, 22, 24, 26, 28, 40, 42, 44, 46, 48, 60, 62, 64, 66, 68, 80, 82, 84, 86, 88, 200, 202 and so on.