## DEV Community is a community of 756,027 amazing developers

We're a place where coders share, stay up-to-date and grow their careers.

tommy-3

Posted on

# Learning Algorithms with JS, Python and Java 5: FizzBuzz

This is the fifth article of my attempts to follow Stephen Grider's Udemy course in three different languages.

When I wrote my last post a couple of days ago, I had only 5 followers, and now I have 35! I also received comments for the first time. I'm so happy I started this series, but now I feel kind of embarrassed to write about so famous a question at this timing.

There must be thousands of solutions, but here I just focus on showing two JS codes and trying to "translate" them into Python and Java as faithfully as possible.

--- Directions
Write a program that console logs the numbers
from 1 to n. But for multiples of three print
“fizz” instead of the number and for the multiples
of five print “buzz”. For numbers which are multiples
of both three and five print “fizzbuzz”.
--- Example
fizzBuzz(5);
1
2
fizz
4
buzz

## 1. Simple

JavaScript:

``````function fizzBuzz(n) {
for (let i = 1; i <= n; i++) {
if (i % 15 === 0) {
console.log('fizzbuzz');
} else if (i % 3 === 0) {
console.log('fizz');
} else if (i % 5 === 0) {
console.log('buzz');
} else {
console.log(i);
}
}
}
``````

Python:

``````def fizz_buzz(n):
for i in range(1, n+1):
if i % 15 == 0:
print('fizzbuzz')
elif i % 3 == 0:
print('fizz')
elif i % 5 == 0:
print('buzz')
else:
print(i)
``````

Java:

``````public static void fizzBuzz(int n) {
for (int i = 1; i <= n; i++) {
if (i % 15 == 0) {
System.out.println("fizzbuzz");
} else if (i % 3 == 0) {
System.out.println("fizz");
} else if (i % 5 == 0) {
System.out.println("buzz");
} else {
System.out.println(i);
}
}
}
``````

# 2. More Concise

JavaScript:

``````function fizzBuzz(n) {
for (let i = 1; i <= n; i++) {
console.log((i % 3 ? '' : 'fizz')
+ (i % 5 ? '' : 'buzz') || i);
}
}
``````

Python:

``````def fizz_buzz(n):
for i in range(1, n+1):
print(('' if i % 3 else 'fizz') +
('' if i % 5 else 'buzz') or i)
``````

Java:

``````public static void fizzBuzz(int n) {
for (int i = 1; i <= n; i++) {
String result = (i % 3 > 0 ? "" : "fizz")
+ (i % 5 > 0 ? "" : "buzz");
if (result.equals("")) {
result = String.valueOf(i);
}
System.out.println(result);
}
}
``````

I'm not really satisfied with the last Java code. I'd love to know if a more literal equivalent is possible. Thank you in advance for your comments!

## Discussion (3)

Joe DuVall

I figured I would take a stab at the Java one, but I couldn't get it to be much more concise. Although, it gave me an opportunity to use `IntStream` which I recently discovered for myself.

``````public static void fizzBuzz(final int i) {
IntStream.range(1, i + 1).forEachOrdered(n -> {
final boolean divByThree = (n % 3) == 0;
final boolean divByFive = (n % 5) == 0;
System.out.print(
(divByThree ? "fizz" : "") +
(divByFive ? "buzz" : "") +
(!divByThree && !divByFive ? n : "") +
System.lineSeparator()
);
});
}
``````

To me, it makes up for the lack of brevity by being more readable, but I recognize that this is more reflective of my style.

tommy-3

Thank you for your comment. I do like your style!

I'm not sure if it's any better, but we could also rewrite the print statement as:

``````System.out.println(divByThree || divByFive
? (divByThree ? "fizz" : "") + (divByFive ? "buzz" : "")
: n);
``````
Lars Gyrup Brink Nielsen

Check out my RxJS FizzBuzz implementation on StackBlitz:

stackblitz.com/edit/rxjs-fizzbuzz?...