近期论坛无法登录的解决方案


一亩三分地论坛

 找回密码
 获取更多干活,快来注册

一亩三分地官方iOS手机应用下载
查看: 2430|回复: 23
收起左侧

2016 9月 Algorithm,Part1 week3 作业帖

[复制链接] |试试Instant~ |关注本帖
minchen57 发表于 2016-9-7 10:08:17 | 显示全部楼层 |阅读模式

[Coursera]Algorithm,Part1 #3 - 2016-09-02@Princeton University

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?获取更多干活,快来注册

x
课程汇总 && 介绍:http://www.1point3acres.com/bbs/thread-200970-1-1.html

第三次作业,Collinear Points, 作业入口

向上的牛牛 发表于 2017-3-21 19:29:16 | 显示全部楼层
关注一亩三分地公众号:
Warald_一亩三分地
哎改了好多遍 immutable那里始终通过不了
clone()也用了 还是不行...
现就这样了吧 心好累...
1490095762(1).png

评分

1

查看全部评分

回复 支持 1 反对 0

使用道具 举报

nsc 发表于 2017-2-28 17:13:54 | 显示全部楼层
关注一亩三分地微博:
Warald
immutable的问题后来解决了。花了很长时间。跟各位分享下。
因为时间过去很久了,大致思路是,java程序的输入还是输出的array,一定要在程序内做个copy,不是仅仅copy reference,是把reference所指向的object也copy了。这样,当程序外面的array有变化的时候,不会影响程序内的数据,就是immutable的了!
这是一种所谓的best practice吧。
以上供参考

评分

1

查看全部评分

回复 支持 1 反对 0

使用道具 举报

zzdsg 发表于 2016-9-10 21:38:52 | 显示全部楼层
先后提交了九遍,看了网上的提示才得了满分。。。心累
无标题.png
回复 支持 反对

使用道具 举报

youngyang 发表于 2016-9-22 22:12:00 | 显示全部楼层
适当的使用Arrays.sort()非常有用!
捕获.PNG
回复 支持 反对

使用道具 举报

 楼主| minchen57 发表于 2016-9-24 05:45:07 | 显示全部楼层
交作业,

week3

week3



还是废了点时间的
回复 支持 反对

使用道具 举报

loveyomin 发表于 2016-9-25 21:01:46 | 显示全部楼层
请问,这个问题是啥问题?我程序里调用了point.toString()方法。。。
Test 8: Check for fragile dependence on return value of toString()
  *  filename = equidistant.txt
     -  student   solution has 1 non-null entries
     -  reference solution has 4 non-null entries
     -  3 missing entries in student solution, including: (30000, 0) -> (20000, 10000) -> (10000, 20000) -> (0, 30000)

  *  filename = input40.txt
     -  student   solution has 1 non-null entries
     -  reference solution has 4 non-null entries
     -  3 missing entries in student solution, including: (2000, 29000) -> (4000, 29000) -> (22000, 29000) -> (28000, 29000)

  *  filename = input48.txt
     -  student   solution has 1 non-null entries
     -  reference solution has 6 non-null entries
     -  5 missing entries in student solution, including: (1000, 26000) -> (9000, 26000) -> (11000, 26000) -> (18000, 26000)

==> FAILED
回复 支持 反对

使用道具 举报

Raymomd 发表于 2016-9-26 02:00:20 | 显示全部楼层
loveyomin 发表于 2016-9-25 21:01
请问,这个问题是啥问题?我程序里调用了point.toString()方法。。。
Test 8: Check for fragile dependen ...

就是没有找全所有的共线点
回复 支持 反对

使用道具 举报

Raymomd 发表于 2016-9-26 02:47:28 | 显示全部楼层
提交作业,没有满分的原因是改变了传入单数points,但是要用Arrays.sort 就会改变原点阵,除非重新建矩阵,但是这样多用了spacet Screen Shot 2016-09-25 at 13.45.23.png
回复 支持 反对

使用道具 举报

loveyomin 发表于 2016-9-26 19:51:48 | 显示全部楼层
Raymomd 发表于 2016-9-26 02:47
提交作业,没有满分的原因是改变了传入单数points,但是要用Arrays.sort 就会改变原点阵,除非重新建矩阵, ...

effective java 里面建议 不要改变传入的参数,所以测试里才会有测试参数。。。points.clone()新建矩阵就好。空间满足题设要求,memory测试也是可以过的。。
回复 支持 反对

使用道具 举报

loveyomin 发表于 2016-9-26 19:53:12 | 显示全部楼层
Raymomd 发表于 2016-9-26 02:00
就是没有找全所有的共线点

嗯,错误提示是这个,但关键是,,,本机跑出来的结果是对的,比如第一个,他说student solution 1 non-null entries,但实际上我debug的结果就是4个。。。
回复 支持 反对

使用道具 举报

Raymomd 发表于 2016-9-26 21:55:24 | 显示全部楼层
loveyomin 发表于 2016-9-26 19:53
嗯,错误提示是这个,但关键是,,,本机跑出来的结果是对的,比如第一个,他说student solution 1 non-n ...

咦,你有testcode吗,哪里可以找到啊,我一开始和你有一样的问题,但后来发现还是没考虑所有情况
回复 支持 反对

使用道具 举报

Raymomd 发表于 2016-9-26 21:57:08 | 显示全部楼层
loveyomin 发表于 2016-9-26 19:51
effective java 里面建议 不要改变传入的参数,所以测试里才会有测试参数。。。points.clone()新建矩阵就 ...

嗯,知道怎么改了,但是太懒了
回复 支持 反对

使用道具 举报

farewell 发表于 2016-9-28 13:15:22 | 显示全部楼层
做的好心烦,先这样交作业求学分
Collinear.png
回复 支持 反对

使用道具 举报

nsc 发表于 2016-10-24 10:31:12 | 显示全部楼层
还有些bug没解决。先提交下作业吧
Untitled.png
回复 支持 反对

使用道具 举报

nsc 发表于 2016-11-17 17:12:09 | 显示全部楼层
程序里还有两个错误一直没解决。满分的同学能否给点提示?谢谢!

BruteCollinearPoints.java和FastCollinearPoints.java里各一个错误,类型相同。

Test 10: Check that data type is immutable by testing whether each method
        returns the same value, regardless of any intervening operations
  *  input8.txt
     -  failed after 12 operations involving BruteCollinearPoints
     -  first and last call to segments() returned different arrays
     -  sequence of operations was:
          BruteCollinearPoints collinear = new BruteCollinearPoints(points);
          collinear.numberOfSegments() -> 2
          collinear.numberOfSegments() -> 2
          mutate points[] array that was passed to constructor
          mutate points[] array that was passed to constructor
          collinear.numberOfSegments() -> 2
          mutate points[] array that was passed to constructor
          collinear.segments()
          mutate array returned by last call to segments()
          collinear.numberOfSegments() -> 2
          collinear.numberOfSegments() -> 2
          collinear.segments()
     -  failed on trial 1 of 100

  *  equidistant.txt
     -  failed after 9 operations involving BruteCollinearPoints
     -  first and last call to segments() returned different arrays
     -  sequence of operations was:
          BruteCollinearPoints collinear = new BruteCollinearPoints(points);
          mutate points[] array that was passed to constructor
          collinear.segments()
          collinear.numberOfSegments() -> 4
          mutate points[] array that was passed to constructor
          mutate array returned by last call to segments()
          collinear.numberOfSegments() -> 4
          mutate points[] array that was passed to constructor
          collinear.segments()
     -  failed on trial 1 of 100

==> FAILED

Test 13: Check that data type is immutable by testing whether each method
         returns the same value, regardless of any intervening operations
  *  input8.txt
     -  failed after 10 operations involving FastCollinearPoints
     -  first and last call to segments() returned different arrays
     -  sequence of operations was:
          FastCollinearPoints collinear = new FastCollinearPoints(points);
          collinear.numberOfSegments() -> 2
          collinear.segments()
          mutate points[] array that was passed to constructor
          collinear.segments()
          mutate array returned by last call to segments()
          mutate points[] array that was passed to constructor
          mutate points[] array that was passed to constructor
          collinear.numberOfSegments() -> 2
          collinear.segments()
     -  failed on trial 1 of 100

  *  equidistant.txt
     -  failed after 11 operations involving FastCollinearPoints
     -  first and last call to segments() returned different arrays
     -  sequence of operations was:
          FastCollinearPoints collinear = new FastCollinearPoints(points);
          collinear.numberOfSegments() -> 4
          collinear.numberOfSegments() -> 4
          collinear.segments()
          mutate points[] array that was passed to constructor
          collinear.segments()
          collinear.numberOfSegments() -> 4
          collinear.numberOfSegments() -> 4
          collinear.numberOfSegments() -> 4
          mutate array returned by last call to segments()
          collinear.segments()
     -  failed on trial 1 of 100

==> FAILED



补充内容 (2017-2-28 20:15):
immutable的问题后来解决了。补发下了思路。请帖子内找。
回复 支持 反对

使用道具 举报

wudilaoshu 发表于 2016-12-19 16:14:02 | 显示全部楼层
本帖最后由 wudilaoshu 于 2016-12-19 17:18 编辑

Test 2a-2g: Find collinear points among the N points on an N-by-1 grid

                                                      slopeTo()
             N    time     slopeTo()   compare()  + 2*compare()        compareTo()
-----------------------------------------------------------------------------------------------
=> passed    64   0.00        4032        4493          13018                15379         
=> passed   128   0.00       16256       17379          51014                67274         
=> passed   256   0.01       65280       67998         201276               297280         
=> passed   512   0.05      261632      268025         797682              1299407         
=> passed  1024   0.13     1047552     1062013        3171578              5688702         
=> FAILED  2048   0.47     4192256     4225115       12642486             24742743   (1.1x)
=> FAILED  4096   1.54    16773120    16847494       50468108            107245800   (1.3x)
==> 5/7 tests passed
卡了好几天了,求大神指点一下。我是用一个listArray存储在遍历过程中斜率相同的点,如果size大于3,那么然后加上参考点就是collinear。在去除多余计算的线时,对listArray排序,如果参考点和一个端点不等那么就是重复计算的,不进行存储。感觉算法上没有什么问题,不知道怎么最后就timing test failed了。
回复 支持 反对

使用道具 举报

codergoose 发表于 2017-1-10 09:17:58 | 显示全部楼层
wudilaoshu 发表于 2016-12-19 16:14
Test 2a-2g: Find collinear points among the N points on an N-by-1 grid

                           ...

求教下fast的思路
回复 支持 反对

使用道具 举报

regvan 发表于 2017-1-12 19:53:49 | 显示全部楼层
我也遇到 immutable 的问题  不知道是什么原因
回复 支持 反对

使用道具 举报

xujr 发表于 2017-1-19 03:24:19 | 显示全部楼层
同immutable问题... 是指我的结果会根据输入点顺序变化而变吗?可我的输出是按端点大小排好的不会变啊
回复 支持 反对

使用道具 举报

johnkv 发表于 2017-2-28 17:01:41 | 显示全部楼层
同问immuatable的问题怎么解决?
回复 支持 反对

使用道具 举报

本版积分规则

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明

custom counter

GMT+8, 2017-6-29 11:09

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表