威佐夫游戏

威佐夫游戏

http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1072

有2堆石子,A B两个人轮流拿,A先拿。每次可以从一堆中取任意个或从2堆中取相同数量的石子,但不可不取。拿到最后1颗石子的人获胜。
假设A B都非常聪明,拿石子的过程中不会出现失误。给出2堆石子的数量,问最后谁能赢得比赛。

例如:2堆石子分别为3颗和5颗。那么不论A怎样拿,B都有对应的方法拿到最后1颗。

Read more

《Java 8 函数式编程》笔记1

前记

在图书馆找有关 Java 的书时发现了这本动物出版社的书,大一时就听过 lambda,匿名函数之类的了(虽然两者不同),一直没机会接触前者,鉴于前段时间写的程序有好多匿名函数,很是冗余,本着好奇以及打算重构的心,就借来这本书打算学习一遍 lambda。本笔记按照章节顺序从第 2 章开始。

纸质书读起来很有滋味,建议买来或借来品味一番。

随书的资料在作者的 github 中可以下载到。

本笔记代码也全部放在 github 中,建议搭配代码食用~

Read more

《Java 8 函数式编程》笔记3

类库

默认方法

Collection 接口中新增了 stream 方法,如果继承它的子类没有实现 stream 方法,就使用它的 stream 方法,这样的方法叫默认方法。

Iterable 接口中也新增了一个默认方法:forEach,允许用户使用 lambda 表达式作为循环体。

JDKforEach 的实现方法:

Read more

《Java 8 函数式编程》笔记4

高级集合类和收集器

方法引用

标准语法:Classname::methodName

比如想得到艺术家的名字:

1
2
3
4
5
lambda:artist -> artist.getName()

方法引用:Artist::getName

Arrays.stream(artist).map(Artist::getName).forEach(System.out::println)

构造方法同样可以缩写:

1
2
3
lambda:(name, nationality) -> new Artist(name, nationality)

方法引用:Artist::new
Read more