UPGRADE YOUR SKILLS: Learn advanced Swift and SwiftUI on Hacking with Swift+! >>

Checkpoint 3 - Is my solution optimal ?

Forums > SwiftUI

Hello everyone !

This is the solution I devised for Checkpoint 3 and it works 🙂

It doesn't seem to be Paul's prefered solution, though.

Is my solution as good, or is Paul's solution more efficient, and why ?

Thank you !

for i in 1...100 {
    if i % 3 == 0 && i % 5 != 0 {
    print("Fizz")
    }else if i % 5 == 0 && i % 3 != 0{
        print("Buzz")
    }else if i % 3 == 0 && i % 5 == 0 {
        print("FizzBuzz")
    }else{
        print(i)
    }
}

2      

I'm also learning so I can't say that there is just one solution, what should be the best. I think that there are more then one option to resolve this checkpoint. And yours works. So that is good I guess. I did it a little diffent again. And that worked aswel

2      

Pierre wants to know if he gets credit:

Is my solution as good, or is Paul's solution more efficient, and why ?

Welcome to Checkpoint 3!

Your solution works, so as @Suzanne points out, That's Great!

Are there better solutions to this Challenge? Sure, but you've not learned all the tricks yet. You haven't explored other coding techniques, nor have you gained the experience to rethink solutions. This will come with practice.

I'll share a few observations, but please don't worry that you didn't code this as tightly as possible. You're still learning.

You wrote:

if i % 3 == 0 && i % 5 != 0 {  // Yikes! what's all this robot / maths syntax?!
    print("Fizz")
}

To me, this looks like you've coded in C++, or perhaps JAVA. This code reeks of math formulae. You almost need an advanced education in maths symbols to understand this. Indeed, there's a more Swifty way to code the same thing.

// This solution is more Swifty, easier to read...
if i.isMultiple(of: 3) {
    print("Fizz")  // only print if i can be divided evenly by 3
}

Also, if you put the test for FizzBuzz first (multiple of 3 AND a multiple of 5), convince yourself that the other two cases only have to determine if your number is a multiple of three, or of five.

So, with a couple of changes to your code, you can make it shorter (fewer comparisons) and easier to read.

Keep Coding!

3      

BUILD THE ULTIMATE PORTFOLIO APP Most Swift tutorials help you solve one specific problem, but in my Ultimate Portfolio App series I show you how to get all the best practices into a single app: architecture, testing, performance, accessibility, localization, project organization, and so much more, all while building a SwiftUI app that works on iOS, macOS and watchOS.

Get it on Hacking with Swift+

Sponsor Hacking with Swift and reach the world's largest Swift community!

Archived topic

This topic has been closed due to inactivity, so you can't reply. Please create a new topic if you need to.

All interactions here are governed by our code of conduct.

 
Unknown user

You are not logged in

Log in or create account
 

Link copied to your pasteboard.