# FizzBuzz Solution Dumping Ground

**URL:** <https://discourse.codinghorror.com/t/fizzbuzz-solution-dumping-ground/1752>\
**Category:** uncategorized\
**Created:** [April 12, 2014, 12:16am UTC](https://discourse.codinghorror.com/t/fizzbuzz-solution-dumping-ground/1752 "2014-04-12T00:16:39Z")\
**Posts on this page:** 1\
**Showing post:** 304

<div class="post-metadata">

**Author:** ![O\_Prime](https://discourse.codinghorror.com/user_avatar/discourse.codinghorror.com/o_prime/32/76553_2.png) [@O\_Prime](https://discourse.codinghorror.com/u/O_Prime)\
**Post date:** [March 15, 2020, 8:40pm UTC](https://discourse.codinghorror.com/t/fizzbuzz-solution-dumping-ground/1752/304 "2020-03-15T20:40:04Z")

</div>

In java, but in functional paradigm (don’t do this at work).

```java
public static void main(String[] args) {
	final String result = IntStream
			.rangeClosed(1, 100)
			.mapToObj(Scratch::fizzBuzz)
			.collect(Collectors.joining(", "));

	System.out.print(result);
}

static String fizzBuzz(int n) {
	return buzz(n)
			.andThen(fizz(n))
			.apply(Function.identity())
			.apply(String.valueOf(n));
}

static Function<Function<String, String>, Function<String, String>> buzz(int n) {
	return test(n, 5, "buzz");
}

static Function<Function<String, String>, Function<String, String>> fizz(int n) {
	return test(n, 3, "fizz");
}

static Function<Function<String, String>, Function<String, String>> test(int number, int divisor, String match) {
	return f -> d -> test(number, divisor, match, f, d);
}

static String test(int number, int divisor, String match, Function<String, String> next, String defaultValue) {
	return number % divisor == 0
			? match + next.apply("")
			: next.apply(defaultValue);
}

```

---

_[View the full topic](https://discourse.codinghorror.com/t/fizzbuzz-solution-dumping-ground/1752)._
