Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //HW07 Alex Tikhomirov
- import Foundation
- //1
- print("\n-------------#1-------------\n")
- enum Value {
- case digital(Int)
- case jack(String)
- case queen(String)
- case king(String)
- case ace(String)
- }
- enum Suits: String {
- case heart
- case spade
- case club
- case diamond
- }
- struct Card {
- var suit:Suits
- var value: Value
- func description() -> String {
- return "\(self.suit) \(self.value)"
- }
- }
- let cardArray: [Card]
- cardArray = [Card.init(suit: .diamond, value: .digital(6)), Card.init(suit: .diamond, value: .ace("ase")), Card.init(suit: .club, value: .king("king"))]
- for card in cardArray {
- print(card.description())
- }
- //2
- print("\n-------------#2-------------\n")
- class Player {
- enum Direction {
- case up
- case down
- case left
- case right
- }
- var name: String
- var position: (x: Int, y: Int)
- init(name: String,_ position:(x: Int, y: Int) = (x: 0, y: 0)) {
- self.name = name
- self.position = position
- return
- }
- func move(direction: Direction) {
- switch direction {
- case .up:
- self.position.y -= 1
- case .down:
- self.position.y += 1
- case .left:
- self.position.x -= 1
- case .right:
- self.position.x += 1
- }
- }
- func makeRandomMove() {
- var direction: Direction = .left
- let dir = arc4random_uniform(3)
- switch dir {
- case 0:
- direction = .up
- case 1:
- direction = .down
- case 2:
- direction = .left
- case 3:
- direction = .right
- default:
- break
- }
- self.move(direction: direction)
- }
- }
- let a = Player(name: "A")
- for _ in 0...5 {
- a.makeRandomMove()
- print(a.position)
- }
- //3
- print("\n-------------#3-------------\n")
- protocol Wallpost {
- func messageForSharing()
- }
- class Status: Wallpost {
- func messageForSharing() {
- //body function
- }
- }
- class Post: Wallpost {
- func messageForSharing() {
- //body function
- }
- }
- //4
- print("\n-------------#4-------------\n")
- protocol Vehicle {
- var speed: Int {get set}
- var capacity: Int {get set}
- var cost: Int {get set}
- func calculation(distance: Int, people: Int) -> (cost: Int, time: Int)
- }
- extension Vehicle {
- var cost: Int {return 10}
- }
- class Transfer {
- var speed: Int
- var capacity: Int
- var cost: Int
- init(speed: Int, capacity: Int, cost: Int) {
- self.speed = speed
- self.capacity = capacity
- self.cost = cost
- }
- func calculation(distance: Int, people: Int) -> (cost: Int, time: Int) {
- var time: Int = 0
- let tm = distance / speed //flight time
- time = people / capacity
- if people % capacity > 0 {
- time += 1
- }
- if time > 1 {
- time *= 2 //number of transportations with returns
- }
- time *= tm
- return (cost: people * self.cost, time: time)
- }
- }
- class Airplane: Transfer, Vehicle {
- }
- class Ship: Transfer, Vehicle {
- }
- class Helicopter: Transfer, Vehicle {
- }
- class Car: Transfer, Vehicle {
- }
- let airplane = Airplane(speed: 650, capacity: 150, cost: 10)
- let ship = Ship(speed: 30, capacity: 3000, cost: 5)
- let helicopter = Helicopter(speed: 300, capacity: 10, cost: 15)
- let car = Car(speed: 120, capacity: 4, cost: 0)
- let vehicle = [airplane, ship, helicopter, car]
- for veh in vehicle {
- print(veh.calculation(distance: 2000, people: 10))
- }
Add Comment
Please, Sign In to add comment