Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
37
Task/Perfect-shuffle/Swift/perfect-shuffle.swift
Normal file
37
Task/Perfect-shuffle/Swift/perfect-shuffle.swift
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
func perfectShuffle<T>(_ arr: [T]) -> [T]? {
|
||||
guard arr.count & 1 == 0 else {
|
||||
return nil
|
||||
}
|
||||
|
||||
let half = arr.count / 2
|
||||
var res = [T]()
|
||||
|
||||
for i in 0..<half {
|
||||
res.append(arr[i])
|
||||
res.append(arr[i + half])
|
||||
}
|
||||
|
||||
return res
|
||||
}
|
||||
|
||||
let decks = [
|
||||
Array(1...8),
|
||||
Array(1...24),
|
||||
Array(1...52),
|
||||
Array(1...100),
|
||||
Array(1...1020),
|
||||
Array(1...1024),
|
||||
Array(1...10000)
|
||||
]
|
||||
|
||||
for deck in decks {
|
||||
var shuffled = deck
|
||||
var shuffles = 0
|
||||
|
||||
repeat {
|
||||
shuffled = perfectShuffle(shuffled)!
|
||||
shuffles += 1
|
||||
} while shuffled != deck
|
||||
|
||||
print("Deck of \(shuffled.count) took \(shuffles) shuffles to get back to original order")
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue