├── .gitignore ├── src ├── main │ └── java │ │ └── katas │ │ ├── fizzbuzz │ │ ├── WordHandler.java │ │ ├── CommonNumberHandler.java │ │ ├── BuzzHandler.java │ │ ├── FizzHandler.java │ │ ├── WhizzHandler.java │ │ ├── FizzBuzzHandler.java │ │ └── FizzBuzzMaker.java │ │ └── primefactors │ │ └── PrimeFactors.java └── test │ └── java │ └── katas │ ├── fizzbuzz │ └── FizzBuzzTest.java │ └── primefactors │ └── PrimeFactorsTest.java └── pom.xml /.gitignore: -------------------------------------------------------------------------------- 1 | target 2 | .classpath 3 | .project 4 | .settings 5 | .springBeans 6 | .log 7 | logs 8 | .bak 9 | .DS_Store 10 | .idea 11 | *.iml 12 | tianji-job-webapp/logs/ 13 | .xlsx# 14 | -------------------------------------------------------------------------------- /src/main/java/katas/fizzbuzz/WordHandler.java: -------------------------------------------------------------------------------- 1 | package katas.fizzbuzz; 2 | 3 | /** 4 | * Created by shawncao on 9/21/15. 5 | */ 6 | public abstract class WordHandler { 7 | protected WordHandler successor; 8 | 9 | public WordHandler(WordHandler successor) { 10 | this.successor = successor; 11 | } 12 | 13 | public abstract String handle(int number); 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/katas/fizzbuzz/CommonNumberHandler.java: -------------------------------------------------------------------------------- 1 | package katas.fizzbuzz; 2 | 3 | /** 4 | * Created by shawncao on 9/21/15. 5 | */ 6 | public class CommonNumberHandler extends WordHandler { 7 | public CommonNumberHandler(WordHandler successor) { 8 | super(successor); 9 | } 10 | 11 | @Override 12 | public String handle(int number) { 13 | return Integer.valueOf(number).toString(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/katas/fizzbuzz/BuzzHandler.java: -------------------------------------------------------------------------------- 1 | package katas.fizzbuzz; 2 | 3 | /** 4 | * Created by shawncao on 9/21/15. 5 | */ 6 | public class BuzzHandler extends WordHandler { 7 | public BuzzHandler(WordHandler successor) { 8 | super(successor); 9 | } 10 | 11 | @Override 12 | public String handle(int number) { 13 | if (number % 5 == 0) { 14 | return "buzz"; 15 | } 16 | return successor.handle(number); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/katas/fizzbuzz/FizzHandler.java: -------------------------------------------------------------------------------- 1 | package katas.fizzbuzz; 2 | 3 | /** 4 | * Created by shawncao on 9/21/15. 5 | */ 6 | public class FizzHandler extends WordHandler { 7 | public FizzHandler(WordHandler successor) { 8 | super(successor); 9 | } 10 | 11 | @Override 12 | public String handle(int number) { 13 | if(number % 3 == 0) { 14 | return "fizz"; 15 | } 16 | return successor.handle(number); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/katas/fizzbuzz/WhizzHandler.java: -------------------------------------------------------------------------------- 1 | package katas.fizzbuzz; 2 | 3 | /** 4 | * Created by shawncao on 9/21/15. 5 | */ 6 | public class WhizzHandler extends WordHandler { 7 | public WhizzHandler(WordHandler successor) { 8 | super(successor); 9 | } 10 | 11 | @Override 12 | public String handle(int number) { 13 | if( number % 7 == 0){ 14 | return "whizz"; 15 | } 16 | 17 | return successor.handle(number); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/katas/fizzbuzz/FizzBuzzHandler.java: -------------------------------------------------------------------------------- 1 | package katas.fizzbuzz; 2 | 3 | /** 4 | * Created by shawncao on 9/21/15. 5 | */ 6 | public class FizzBuzzHandler extends WordHandler { 7 | public FizzBuzzHandler(WordHandler successor) { 8 | super(successor); 9 | } 10 | 11 | @Override 12 | public String handle(int number) { 13 | if(number % 15 == 0) { 14 | return "fizzBuzz"; 15 | } 16 | return successor.handle(number); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/katas/primefactors/PrimeFactors.java: -------------------------------------------------------------------------------- 1 | package katas.primefactors; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | 6 | /** 7 | * Created by shawncao on 9/22/15. 8 | */ 9 | public class PrimeFactors { 10 | 11 | 12 | public static List computePrimeFactor(int number) { 13 | List factors = new ArrayList(); 14 | for (int candidate = 2; number > 1; candidate++){ 15 | for ( ;number % candidate == 0; number /= candidate){ 16 | factors.add(candidate); 17 | } 18 | } 19 | return factors; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/katas/fizzbuzz/FizzBuzzMaker.java: -------------------------------------------------------------------------------- 1 | package katas.fizzbuzz; 2 | 3 | /** 4 | * Created by shawncao on 9/21/15. 5 | */ 6 | public class FizzBuzzMaker { 7 | 8 | public static String translate(int number) { 9 | WordHandler commonNumberHandler = new CommonNumberHandler(null); 10 | WordHandler buzzHandler = new BuzzHandler(commonNumberHandler); 11 | WordHandler fizzHandler = new FizzHandler(buzzHandler); 12 | WordHandler fizzBuzzHandler = new FizzBuzzHandler(fizzHandler); 13 | WordHandler whizzHandler = new WhizzHandler(fizzBuzzHandler); 14 | return whizzHandler.handle(number); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | katas.shawn 8 | katas 9 | 1.0-SNAPSHOT 10 | 11 | 12 | junit 13 | junit 14 | 4.11 15 | test 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /src/test/java/katas/fizzbuzz/FizzBuzzTest.java: -------------------------------------------------------------------------------- 1 | package katas.fizzbuzz; 2 | 3 | import org.junit.Test; 4 | import org.junit.runner.RunWith; 5 | import org.junit.runners.JUnit4; 6 | 7 | import static org.junit.Assert.assertEquals; 8 | 9 | /** 10 | * Created by shawncao on 9/21/15. 11 | */ 12 | @RunWith(JUnit4.class) 13 | public class FizzBuzzTest { 14 | 15 | @Test 16 | public void given_one_should_say_one(){ 17 | assertEquals("Failure - given one should say one", "1", FizzBuzzMaker.translate(1)); 18 | } 19 | 20 | @Test 21 | public void given_three_should_say_fizz(){ 22 | assertEquals("Failure - given three should say fizz", "fizz", FizzBuzzMaker.translate(3)); 23 | } 24 | 25 | 26 | @Test 27 | public void given_five_should_say_buzz(){ 28 | assertEquals("Failure - given five should say buzz", "buzz", FizzBuzzMaker.translate(5)); 29 | } 30 | 31 | @Test 32 | public void given_fifteen_should_say_fizzbuzz(){ 33 | assertEquals("Failure - given 15 should say fizzBuzz", "fizzBuzz", FizzBuzzMaker.translate(15)); 34 | } 35 | 36 | @Test 37 | public void given_seven_should_say_whizz(){ 38 | assertEquals("Failure - given 7 should say whizz", "whizz", FizzBuzzMaker.translate(7)); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/test/java/katas/primefactors/PrimeFactorsTest.java: -------------------------------------------------------------------------------- 1 | package katas.primefactors; 2 | 3 | import org.junit.Test; 4 | import org.junit.runner.RunWith; 5 | import org.junit.runners.JUnit4; 6 | 7 | import java.util.ArrayList; 8 | import java.util.Arrays; 9 | import java.util.Collections; 10 | import java.util.List; 11 | 12 | import static java.util.Arrays.asList; 13 | import static org.junit.Assert.assertEquals; 14 | 15 | /** 16 | * Created by shawncao on 9/22/15. 17 | */ 18 | @RunWith(JUnit4.class) 19 | public class PrimeFactorsTest { 20 | 21 | @Test 22 | public void one() throws Exception{ 23 | assertEquals(asList(),PrimeFactors.computePrimeFactor(1)); 24 | } 25 | 26 | @Test 27 | public void twoHasOnlyItselfAsPrimeFactor(){ 28 | assertEquals(asList(2),PrimeFactors.computePrimeFactor(2)); 29 | } 30 | 31 | @Test 32 | public void threeHasOnlyItselfAsPrimeFactor(){ 33 | assertEquals(asList(3),PrimeFactors.computePrimeFactor(3)); 34 | } 35 | 36 | @Test 37 | public void fourHasTwoTimesTwoPrimeFactor(){ 38 | assertEquals(asList(2,2),PrimeFactors.computePrimeFactor(4)); 39 | } 40 | 41 | @Test 42 | public void fiveHasOnlyItselfPrimeFactor(){ 43 | assertEquals(asList(5),PrimeFactors.computePrimeFactor(5)); 44 | } 45 | 46 | @Test 47 | public void sixHasOnlyTwoAndThreePrimeFactor(){ 48 | assertEquals(asList(2,3),PrimeFactors.computePrimeFactor(6)); 49 | } 50 | 51 | @Test 52 | public void eightHasThreeTimesTwoPrimeFactor(){ 53 | assertEquals(asList(2,2,2),PrimeFactors.computePrimeFactor(8)); 54 | } 55 | 56 | @Test 57 | public void nineHasTwoTimesThreePrimeFactor(){ 58 | assertEquals(asList(3,3),PrimeFactors.computePrimeFactor(9)); 59 | } 60 | 61 | @Test 62 | public void tenHasTwoAndFiveAsPrimeFactor(){ 63 | assertEquals(asList(2,5),PrimeFactors.computePrimeFactor(10)); 64 | } 65 | } 66 | --------------------------------------------------------------------------------