Sha256: e2e4fb1e999760a8e49d18232ad166695034d103e759dbb803315f983a67aa32

Contents?: true

Size: 529 Bytes

Versions: 118

Compression:

Stored size: 529 Bytes

Contents

enum CollatzConjectureError: Error {
    case numberNotPositive
}

struct CollatzConjecture {

    static func steps(_ number: Int) throws -> Int? {
        guard number > 0 else {
            throw CollatzConjectureError.numberNotPositive
        }

        var number = number
        var steps = 0

        while number > 1 {
            steps += 1

            if number % 2 == 0 {
                number /= 2
            } else {
                number = number * 3 + 1
            }
        }

        return steps
    }
}

Version data entries

118 entries across 118 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/swift/exercises/collatz-conjecture/Sources/CollatzConjectureExample.swift
trackler-2.2.1.179 tracks/swift/exercises/collatz-conjecture/Sources/CollatzConjectureExample.swift
trackler-2.2.1.178 tracks/swift/exercises/collatz-conjecture/Sources/CollatzConjectureExample.swift
trackler-2.2.1.177 tracks/swift/exercises/collatz-conjecture/Sources/CollatzConjectureExample.swift
trackler-2.2.1.176 tracks/swift/exercises/collatz-conjecture/Sources/CollatzConjectureExample.swift
trackler-2.2.1.175 tracks/swift/exercises/collatz-conjecture/Sources/CollatzConjectureExample.swift
trackler-2.2.1.174 tracks/swift/exercises/collatz-conjecture/Sources/CollatzConjectureExample.swift
trackler-2.2.1.173 tracks/swift/exercises/collatz-conjecture/Sources/CollatzConjectureExample.swift
trackler-2.2.1.172 tracks/swift/exercises/collatz-conjecture/Sources/CollatzConjectureExample.swift
trackler-2.2.1.171 tracks/swift/exercises/collatz-conjecture/Sources/CollatzConjectureExample.swift
trackler-2.2.1.170 tracks/swift/exercises/collatz-conjecture/Sources/CollatzConjectureExample.swift
trackler-2.2.1.169 tracks/swift/exercises/collatz-conjecture/Sources/CollatzConjectureExample.swift
trackler-2.2.1.167 tracks/swift/exercises/collatz-conjecture/Sources/CollatzConjectureExample.swift
trackler-2.2.1.166 tracks/swift/exercises/collatz-conjecture/Sources/CollatzConjectureExample.swift
trackler-2.2.1.165 tracks/swift/exercises/collatz-conjecture/Sources/CollatzConjectureExample.swift
trackler-2.2.1.164 tracks/swift/exercises/collatz-conjecture/Sources/CollatzConjectureExample.swift
trackler-2.2.1.163 tracks/swift/exercises/collatz-conjecture/Sources/CollatzConjectureExample.swift
trackler-2.2.1.162 tracks/swift/exercises/collatz-conjecture/Sources/CollatzConjectureExample.swift
trackler-2.2.1.161 tracks/swift/exercises/collatz-conjecture/Sources/CollatzConjectureExample.swift
trackler-2.2.1.160 tracks/swift/exercises/collatz-conjecture/Sources/CollatzConjectureExample.swift