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!
Top comments (3)
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.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.
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:
Check out my RxJS FizzBuzz implementation on StackBlitz:
stackblitz.com/edit/rxjs-fizzbuzz?...