楼主: jaly50
跳转到指定楼层
上一主题 下一主题
收起左侧

Berkeley CS 61B Data Structures(in Java) Project1 加分+讨论帖

 
🔗
xiaosteven 2016-7-8 08:33:28 | 只看该作者
全局:
写了3天终于写完这次的project了,感觉对linkedlist和图片处理的应用有了更深的理解,感觉project还是很有用的
更多图片 小图 大图
组图打开中,请稍候......

评分

参与人数 1学分 +1 收起 理由
yingy4 + 1

查看全部评分

回复

使用道具 举报

🔗
Zjy_yahoo 2016-7-9 19:14:13 | 只看该作者
全局:
自己写的part ii iii的测试部分,如果能运行test.class的话效果会更好,那个里面的参数更大一些,而且情况也更多,自己写的话,只能写一小部分,添加了个main,用来测试RLE的功能:
  1.           System.out.println("Test part II : 3/5 params constructor and the toOcean method and the"
  2.                           + " nextRun() and restartRun() methods.\n");
  3.           int [] p1={Ocean.FISH,Ocean.SHARK,Ocean.EMPTY,Ocean.FISH,Ocean.SHARK};
  4.           int [] p2={3,5,4,4,4};
  5.           int starveTime=3;
  6.           
  7.           RunLengthEncoding rle3=new RunLengthEncoding(5,1,starveTime);
  8.           System.out.println("Three params version of RLE is : "
  9.                           + rle3);
  10.           rle3.restartRuns();
  11.           System.out.println("nextRun()'s output: \n");
  12.           TypeAndSize taz3=rle3.nextRun();
  13.           while(taz3!=null){
  14.                   System.out.println("Type: "+taz3.type+" Size: "+taz3.size+".\n");
  15.                   taz3=rle3.nextRun();
  16.           }
  17.           Ocean resultocean3=rle3.toOcean();
  18.           System.out.println("Ocean output: \n");
  19.           System.out.println(resultocean3);
  20.           
  21.           
  22.           RunLengthEncoding rle5=new RunLengthEncoding(5,4,starveTime,p1,p2);
  23.           //rle.check();
  24.           System.out.println("Five params version of RLE is : "+rle5);
  25.           
  26.           rle5.restartRuns();
  27.           System.out.println("nextRun()'s output: \n");
  28.           TypeAndSize taz5=rle5.nextRun();
  29.           while(taz5!=null){
  30.                   System.out.println("Type: "+taz5.type+" Size: "+taz5.size+".\n");
  31.                   taz5=rle5.nextRun();
  32.           }
  33.           
  34.           
  35.           Ocean resultocean5=rle5.toOcean();
  36.           System.out.println("Ocean output: \n");
  37.           System.out.println(resultocean5);

  38.           //Check hunger shark situations
  39.           System.out.println("Test part III : test the 1 param's version of constructor and the"
  40.                                   + " addShark method.\n");
  41.           
  42.           
  43.           Ocean sharkocean=new Ocean(5,4,3);
  44.           System.out.println("Original ocean: "+sharkocean);
  45.           for(int ii=0;ii<5;ii++){
  46.                   sharkocean.addShark(ii, 0, 0);
  47.                   sharkocean.addShark(ii, 1, 1);
  48.                   sharkocean.addShark(ii, 2, 2);
  49.                   sharkocean.addFish(ii, 3);;
  50.           }
  51.           System.out.println("Ocean after using addShark() and addFish(): "+sharkocean);
  52.           
  53.           RunLengthEncoding rles=new RunLengthEncoding(sharkocean);
  54.           //rles.check();
  55.           System.out.println("One param's version of RLE is : "+rles);
  56.           
  57.           Ocean resultoceanshark=rles.toOcean();
  58.           
  59.           System.out.println("Ocean that's been converted back: "+resultoceanshark);
  60.           
  61.           
复制代码
运行结果为:


评分

参与人数 1学分 +1 收起 理由
yingy4 + 1

查看全部评分

回复

使用道具 举报

🔗
Zjy_yahoo 2016-7-11 21:23:41 | 只看该作者
全局:
本帖最后由 Zjy_yahoo 于 2016-7-11 21:27 编辑

经过了昨天的努力,自己写了近600行的测试代码,对Part IV部分的两个函数的所有情况进行了测试,先把所有的情况列举如下:


1.只有Empty Cell(小写e表示所在位置)
a.[e]                仅一个元素
b.[eE]/[eEE]        两个或以上的第一个元素
c.[Ee]/[EEe]        ·······末···
d.[EeE] [EEeE]        三个或以上的中间元素
2.e处于的节点前面没有有效节点,而后面节点有效
a.[eS...]/[eF...]        仅一个元素
b.[eES...]/[eEES...]
  [eEF...]/[eEEF...]        两个或以上第一个元素
c.[EeS...]/[EEeS...]   ······末···且之后是S
  [EeF...]/[EEeF...]   ··············F
d.[EeES...]/[EeEF...]  三个或以上的中间元素
  [EEeEES...]/[EEEeEEF...]
3.e处于的节点后面没有有效节点,而前面节点有效
a.[...Se]/[...Fe]        仅一个元素
b.[...SeE]/[...SeEE]        两个或以上第一个元素且之前是S
  [...FeE]/[...FeEE]        ··············F
c.[...SEe]/[...SEEe]
  [...FEe]/[...FEEe]    两个或以上第末个元素
d.[...SEeE]/[...FEeE]   三个或以上的中间元素
  [...SEEeEE]/[...FEEeEEE]
4. e处于的节点前后都是有效节点,且非S即F
a.[...SeS...] [...SeF...] [...FeS...] [...FeF...]
   仅一个元素
b.[...SeEx...] [...SeEEx...] 两个以上第一个元素为e,之前是S
  [...FeEx...] [...FeEEx...] 两个以上第一个元素为e,之前是F
c.[...xEeS...] [...xEEeS...] 两个以上第末个元素为e,之后是S
  [...xEeF...] [...xEEeF...] 两个以上第末个元素为e,之后是F
d. 三个元素的中间元素
·所有情况的d都是一种情况,实际上。

以上为所有对AddFish的情况,而对AddShark而言,注意到加入的始终是hunger=0的shark,所以在每一种情况里面的S对应两种,一种是Shark hunger=0,另一种是Shark hunger>0,如此可遍历所有情况。

总体花了近2。5天,而1。5天都在做10%的part iv+test文件的编写,真的是。。。感觉这个project还是有收获的,嗯,编程思维要缜密,而且好的testing code很重要。
最后其实最坑的是,做完打算做P2,发现必须得弄class文件,所以今天我钻研了下如何运行class文件,在eclipse里,,,,所以就附一个结果图吧(这个是老师给的文件test.class的运行结果),13points~~。





评分

参与人数 1学分 +1 收起 理由
yingy4 + 1

查看全部评分

回复

使用道具 举报

全局:
历时许久终于把pj1做完。。。中间遇到各种问题,傻傻的width和height分不清。。。
更多图片 小图 大图
组图打开中,请稍候......

评分

参与人数 1学分 +1 收起 理由
yingy4 + 1

查看全部评分

回复

使用道具 举报

🔗
forests 2016-7-22 15:06:29 | 只看该作者
全局:
project 1
照片太大,传不上来。。。。
只能复制一下了。。。


➜  src javac -cp "jai_core.jar:jai_codec.jar" *.java
➜  src java -cp ".:jai_core.jar:jai_codec.jar" Sobel feathers.tiff 5 compare
Reading image file feathers.tiff
Blurring image file.
Writing blurred image file blur_feathers.tiff
Performing Sobel edge detection on image file.
Writing grayscale-edge image file edge_feathers.tiff
Writing run-length encoded grayscale-edge image file rle_feathers.tiff
Displaying input image, blurred image, and grayscale-edge image.
Close the image to quit.
➜  src java PixImage
Testing getWidth/getHeight on a 3x3 image.  Input image:
width: 3 height: 3
0 30 80
10 120 250
240 250 255

Good.
Testing blurring on a 3x3 image.
Good.
Good.
Good.
Testing edge detection on a 3x3 image.
Good.
Testing getWidth/getHeight on a 2x3 image.  Input image:
width: 2 height: 3
0 0
100 0
100 100

Good.
Testing blurring on a 2x3 image.
Good.
Testing edge detection on a 2x3 image.
Good.


➜  src java RunLengthEncoding
Testing one-parameter RunLengthEncoding constuctor on a 3x3 image.  Input image:
width: 3 height: 3
0 1 2
3 4 5
6 7 8

Testing getWidth/getHeight on a 3x3 encoding.
Good.
Testing toPixImage() on a 3x3 encoding.
Good.
Testing setPixel() on a 3x3 encoding.
Good.
Testing setPixel() on a 3x3 encoding.
Good.
Testing setPixel() on a 3x3 encoding.
Good.
Testing setPixel() on a 3x3 encoding.
Good.
Testing setPixel() on a 3x3 encoding.
Good.
Testing setPixel() on a 3x3 encoding.
Good.
Testing setPixel() on a 3x3 encoding.
Good.
Testing one-parameter RunLengthEncoding constuctor on another 3x3 image.  Input image:
width: 3 height: 3
2 2 3
3 4 4
5 5 6

Testing getWidth/getHeight on a 3x3 encoding.
Good.
Testing toPixImage() on a 3x3 encoding.
Good.
Testing setPixel() on a 3x3 encoding.
Good.
Testing setPixel() on a 3x3 encoding.
Good.
Testing one-parameter RunLengthEncoding constuctor on a 5x2 image.  Input image:
width: 5 height: 2
0 1 2 3 4
5 6 7 8 9

Testing getWidth/getHeight on a 5x2 encoding.
Good.
Testing toPixImage() on a 5x2 encoding.
Good.
Testing setPixel() on a 5x2 encoding.
Good.
Testing setPixel() on a 5x2 encoding.
Good.
Testing setPixel() on a 5x2 encoding.
Good.
Testing one-parameter RunLengthEncoding constuctor on a 3x2 image.  Input image:
width: 3 height: 2
0 1 2
3 4 5

Testing getWidth/getHeight on a 3x2 encoding.
Good.
Testing toPixImage() on a 3x2 encoding.
Good.
Testing setPixel() on a 3x2 encoding.
Good.
Testing setPixel() on a 3x2 encoding.
Good.
Testing setPixel() on a 3x2 encoding.
Good.

评分

参与人数 1学分 +1 收起 理由
yingy4 + 1

查看全部评分

回复

使用道具 举报

🔗
liuyijuner 2016-7-23 22:29:02 | 只看该作者
全局:
同上,width和height分不清浪费一堆时间。。




评分

参与人数 1学分 +1 收起 理由
yingy4 + 1

查看全部评分

回复

使用道具 举报

🔗
hubert 2016-7-26 18:26:03 | 只看该作者
全局:
d2vicky 发表于 2016-3-27 16:32
看了和楼主讨论reflection的部分,还是没明白,请教一下。以corner的pixel为例吧,就比如(0, 0)点,本来4 ...

(-1 -1)用 (1,1)吗???
回复

使用道具 举报

🔗
yingy4 2016-7-26 20:37:05 | 只看该作者
全局:
hubert 发表于 2016-7-26 18:26
(-1 -1)用 (1,1)吗???

是,而且这几个点的值其实都一样的
回复

使用道具 举报

🔗
hubert 2016-7-27 08:31:10 | 只看该作者
全局:
本帖最后由 hubert 于 2016-7-27 08:40 编辑
yingy4 发表于 2016-7-26 20:37
是,而且这几个点的值其实都一样的

“值都是一样” 什么意思啊 不是很明白。 谢谢啊
还是以上面的例子为例:

(-1 -1) 使用(1,1)的值
(-1,0) (0,-1)使用 (0,0)的值
(-1,1) 使用(0,1)的值
(1,-1)使用(1,0) 的值

如果我没有理解错你的意思,就是说 (1,1)(0,0),(0,1)(1,0)的值都是相同的。
进一步的说 (-1,-1)(-1,0)(0,-1)(1,-1)(-1,1)(-1,0)(1,1)(0,0)(0,1)(1,0)这九个点的值都是相同的。

为什么他们的值是一样的啊?

谢谢
回复

使用道具 举报

🔗
yingy4 2016-7-27 08:55:46 | 只看该作者
全局:
本帖最后由 yingy4 于 2016-7-27 11:05 编辑
hubert 发表于 2016-7-27 08:31
“值都是一样” 什么意思啊 不是很明白。 谢谢啊
还是以上面的例子为例:

抱歉上面说的不对,时间太久忘记了。。

-1,-1和0,0的值应该是一样的,理由是按照题目的意思,边界外的值用边界内的镜面反射过去补足,所以:
-1,-1=-1,0=0,0=0,-1=-1,-1
(1,1)(0,0),(0,1)(1,0)的值都是相同的。
这是不正确的,因为这些点的值都是已存在的,由原始图片获取的,需要补足是在边界外的、原本不存在的点。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

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