Deal cards for FreeCell: Difference between revisions

Line 3,138:
=={{header|Swift}}==
Swift 4.2. Largely based on the Objective-C example.
<lang Swift>structenum MicrosoftLinearCongruentialGeneratorSuit : String, CustomStringConvertible, CaseIterable {
case clubs = "C", diamonds = "D", hearts = "H", spades = "S"
var seed : Int
mutating func next() -> Int {
self.seed = (self.seed * 214013 + 2531011) % (Int(Int32.max)+1)
return self.seed >> 16
}
}
enum Suit : String, CustomStringConvertible, CaseIterable {
case clubs = "C"
case diamonds = "D"
case hearts = "H"
case spades = "S"
var description: String {
return self.rawValue
Line 3,155 ⟶ 3,145:
}
enum Rank : Int, CustomStringConvertible, CaseIterable {
case ace=1, two, three, four, five, six, seven
case twoeight, nine, ten, jack, queen, king
case three
case four
case five
case six
case seven
case eight
case nine
case ten
case jack
case queen
case king
var description: String {
let d : [Rank:String] = [.ace:"A", .king:"K", .queen:"Q", .jack:"J", .ten:"T"]
Line 3,174 ⟶ 3,153:
}
struct Card : CustomStringConvertible {
let rank : Rank, suit : Suit
let suit : Suit
var description : String {
return String(describing:self.rank) + String(describing:self.suit)
Line 3,191 ⟶ 3,169:
for i in (0..<52).reversed() {
self.cards.append(Card(sequence:i))
}
struct MicrosoftLinearCongruentialGenerator {
var seed : Int
mutating func next() -> Int {
self.seed = (self.seed * 214013 + 2531011) % (Int(Int32.max)+1)
return self.seed >> 16
}
}
var r = MicrosoftLinearCongruentialGenerator(seed: seed)
Anonymous user