T*******x 发帖数: 8565 | 1 【 以下文字转载自 Programming 讨论区 】
发信人: starbase (四海为家), 信区: Programming
标 题: 怎么重新整和date ranges
发信站: BBS 未名空间站 (Sun Aug 9 15:59:22 2020, 美东)
need to consolidate date ranges, each data range has a confirmed date, for
example
dates a
example 1:
range [a,d) with X and [b,c) with Y will become [a,b) with X, [b,c) with Y,
[c,d) with X
another example:
[a,c) with X and [b,d) with Y will become [a,b) with X and [b,d) with Y
how to consolidate the lists of date ranges ? Thanks. |
T*******x 发帖数: 8565 | 2 这个问题是编程版面上一个人出的问题。应该是一个工作中用到的实际问题。放在编程
版面快一个星期,无人问津。编程版现在有个毛病,言必称“业界”,你编个程刷个代
码反而low了。
这个问题我感觉是一个数据整理,SQL方面的问题,编程应该也能解决,但是并不容易。
【在 T*******x 的大作中提到】 : 【 以下文字转载自 Programming 讨论区 】 : 发信人: starbase (四海为家), 信区: Programming : 标 题: 怎么重新整和date ranges : 发信站: BBS 未名空间站 (Sun Aug 9 15:59:22 2020, 美东) : need to consolidate date ranges, each data range has a confirmed date, for : example : dates a: example 1: : range [a,d) with X and [b,c) with Y will become [a,b) with X, [b,c) with Y, : [c,d) with X
|
s*****l 发帖数: 7106 | 3 你应该转jobhunting
这是典型的面试题
程序版都不是找工作的
当然没人care |
T*******x 发帖数: 8565 | 4 面试题这么难?看起来像是实际工作中的问题。我就遇到过consolidate date range的
问题,不是很容易。
【在 s*****l 的大作中提到】 : 你应该转jobhunting : 这是典型的面试题 : 程序版都不是找工作的 : 当然没人care
|
f****i 发帖数: 1 | 5 为啥无人问津?
因为题目写得狗屁不通,语无伦次读都读不下去,谁他妈吃饱了撑的找这抽?
傻逼满大街都是,你一聪明人,帮了一个傻逼顿时冒出100个新傻逼出来,你帮得过来
吗?
易。
【在 T*******x 的大作中提到】 : 这个问题是编程版面上一个人出的问题。应该是一个工作中用到的实际问题。放在编程 : 版面快一个星期,无人问津。编程版现在有个毛病,言必称“业界”,你编个程刷个代 : 码反而low了。 : 这个问题我感觉是一个数据整理,SQL方面的问题,编程应该也能解决,但是并不容易。 : :
|
p*******8 发帖数: 1 | 6 循环,按confirmed date归类,然后merge intervals? |
p*******8 发帖数: 1 | 7 哦我好像理解错了... 不过他确实没说清楚,有歧义 |
T*******x 发帖数: 8565 | 8 背景的确介绍的不是很清楚,真有点像实际工作中的问题,问题本身就是问题。
【在 f****i 的大作中提到】 : 为啥无人问津? : 因为题目写得狗屁不通,语无伦次读都读不下去,谁他妈吃饱了撑的找这抽? : 傻逼满大街都是,你一聪明人,帮了一个傻逼顿时冒出100个新傻逼出来,你帮得过来 : 吗? : : 易。
|
f****i 发帖数: 1 | 9 连话都说不利落的傻逼,还是躲远点好,就像鲁迅说的,你治得了傻逼的肉体,你治得
了傻逼的傻脑吗?
你不是野鼠,你不能,实际上连野鼠也不能,野鼠最后不也被傻逼搞死了么?
所以洗洗睡吧
【在 T*******x 的大作中提到】 : 背景的确介绍的不是很清楚,真有点像实际工作中的问题,问题本身就是问题。
|
T*******x 发帖数: 8565 | 10 理论上你这么说是对的,但是工作中不是这么回事。email飞来飞去就是这么点事,你
也不能撂脸子不干啊。说实话这个比工作中碰到的问题还是清楚的。另外你不会编程说
这么多有啥用啊?
【在 f****i 的大作中提到】 : 连话都说不利落的傻逼,还是躲远点好,就像鲁迅说的,你治得了傻逼的肉体,你治得 : 了傻逼的傻脑吗? : 你不是野鼠,你不能,实际上连野鼠也不能,野鼠最后不也被傻逼搞死了么? : 所以洗洗睡吧
|
|
|
T*******x 发帖数: 8565 | 11 confirmed date我觉得没错。这个数据中的三个字段都是date。按照confirmed date来
整合区间,相当于给每个区间盖一个邮戳。 |
T*******x 发帖数: 8565 | |
T*******x 发帖数: 8565 | |
x******h 发帖数: 13678 | |
T*******x 发帖数: 8565 | 15 我看明白了。我给你解释一下吧。
比如一个数据列表:
begin_date,end_date,confirmed_date
row1: 2020-01-20,2020-05-20,confirmed by 2020-04-01
row2: 2020-03-20,2020-04-20,confirmed by 2020-04-20
以confirmed_date为主要关注点,大的具有优先级,把begin_date和end_date区间重新
分段,结果要求如下:
row1: 2020-01-20,2020-03-20,confirmed by 2020-04-01
row2: 2020-03-20,2020-04-20,confirmed by 2020-04-20
row3: 2020-04-20,2020-05-20,confirmed by 2020-04-01
【在 x******h 的大作中提到】 : 我都没看明白题,难受
|
f****i 发帖数: 1 | 16 所以,这帮连话都说不利落的傻逼,还是早死早超生为好
【在 x******h 的大作中提到】 : 我都没看明白题,难受
|
T*******x 发帖数: 8565 | 17 气大伤身。
【在 f****i 的大作中提到】 : 所以,这帮连话都说不利落的傻逼,还是早死早超生为好
|
T*******x 发帖数: 8565 | 18 这个问题的描述不能覆盖所有corner case,好像编程问题很多都这样。我再想想怎么
能把它描述清楚,变成一个有明确目的和检验的问题。
【在 T*******x 的大作中提到】 : 我看明白了。我给你解释一下吧。 : 比如一个数据列表: : begin_date,end_date,confirmed_date : row1: 2020-01-20,2020-05-20,confirmed by 2020-04-01 : row2: 2020-03-20,2020-04-20,confirmed by 2020-04-20 : 以confirmed_date为主要关注点,大的具有优先级,把begin_date和end_date区间重新 : 分段,结果要求如下: : row1: 2020-01-20,2020-03-20,confirmed by 2020-04-01 : row2: 2020-03-20,2020-04-20,confirmed by 2020-04-20 : row3: 2020-04-20,2020-05-20,confirmed by 2020-04-01
|
T*******x 发帖数: 8565 | 19 这个问题可以这样描述:
给定一个date range的集合,(date range就是date区间,两个区间相等当且仅当首尾
分别相等)。range可以交叉。每一个date range有一个confirmed date,这个
confirmed date同时也给range里每一个时间点赋了一个confirmed date。因此这个
date range集合里所有的时间点都至少有一个confirmed date。
现在要求编程序重新划分date range,并给每个date range赋一个confirmed date使得
1,和原date range集合所覆盖的时间点相同。
2,新date range互不交叠。
3,一个区间中某时间点所赋的confirmed date,是该点在原划分下confirmed date的
最大值。
4,新划分的range数最小。
【在 T*******x 的大作中提到】 : 这个问题的描述不能覆盖所有corner case,好像编程问题很多都这样。我再想想怎么 : 能把它描述清楚,变成一个有明确目的和检验的问题。
|
T*******x 发帖数: 8565 | 20 实际工作中的问题就是这样,问题描述清楚了,算法也基本上出来了。
【在 T*******x 的大作中提到】 : 这个问题可以这样描述: : 给定一个date range的集合,(date range就是date区间,两个区间相等当且仅当首尾 : 分别相等)。range可以交叉。每一个date range有一个confirmed date,这个 : confirmed date同时也给range里每一个时间点赋了一个confirmed date。因此这个 : date range集合里所有的时间点都至少有一个confirmed date。 : 现在要求编程序重新划分date range,并给每个date range赋一个confirmed date使得 : 1,和原date range集合所覆盖的时间点相同。 : 2,新date range互不交叠。 : 3,一个区间中某时间点所赋的confirmed date,是该点在原划分下confirmed date的 : 最大值。
|
|
|
T*******x 发帖数: 8565 | 21 这个问题可以分这么几步。
1,把date range集合中range端点的集合排序。
2,然后给每一个端点赋值,赋值同时考虑了以这个端点为起点的最小区间是否包含在
原date range中,如果不包含在原date range中,就赋一个特殊值比如0,这是一个
corner case,不考虑到通不过测试。实际上指考虑这个端点在不在原date range中就
可以。因为区间是半开半闭的,一个端点不包含在原date range中,就说明这是一个区
间的尾点,以它为起始的下一个最小区间整个不在原date range中。
3,然后赋常规值,是每个端点原赋值中的最大值。
4,然后还要去掉冗余端点,连续的两个端点如果有相同的赋值,就去掉第二个点。
四步的算法,也不容易了。
【在 T*******x 的大作中提到】 : 实际工作中的问题就是这样,问题描述清楚了,算法也基本上出来了。
|
f****i 发帖数: 1 | 22 所以,干这活的,全是一些低智商的低端人口,连他妈的最起码的话都说不利落,更别
提沟通了
所以你开头还在叫唤为啥这题没人愿意做,现在明白了吧?连如何恰当地提问都做不到
了,说话语无伦次颠三倒四,你说还有谁会有兴趣做?
【在 T*******x 的大作中提到】 : 实际工作中的问题就是这样,问题描述清楚了,算法也基本上出来了。
|
T*******x 发帖数: 8565 | 23 尼玛这是公司,不是学校里。
【在 f****i 的大作中提到】 : 所以,干这活的,全是一些低智商的低端人口,连他妈的最起码的话都说不利落,更别 : 提沟通了 : 所以你开头还在叫唤为啥这题没人愿意做,现在明白了吧?连如何恰当地提问都做不到 : 了,说话语无伦次颠三倒四,你说还有谁会有兴趣做?
|