В уроке 9 рассмотрены операторы управления потоком.
Домашнее задание к уроку 9:
Домашнее задание к уроку 9:
/*
1. Создать строку произвольного текста, минимум 200 символов. Используя цикл и оператор свитч посчитать количество гласных, согласных, цифр и символов.
2. Создайте свитч который принимает возраст человека и выводит описание жизненного этапа
3. У вас есть имя отчество и фамилия студента (русские буквы). Имя начинается с А или О, то обращайтесь к студенту по имени, если же нет, то если у него отчество начинается на В или Д, то обращайтесь к нему по имени и отчеству, если же опять нет, то в случае если фамилия начинается с Е или З, то обращайтесь к нему только по фамилии. В противном случае обращайтесь к нему по полному имени.
4. Представьте что вы играете в морской бои и у вас осталось некоторое количество кораблей на поле 10Х10 (можно буквы и цифры, а можно только цифры). Вы должны создать свитч, который примет тюпл с координатой и выдаст один из вариантов: мимо, ранил, убил.
*/
/*
1
*/
print("N 1\n")
let text = "1. Swift makes it easy to create arrays in your code using an array literal: simply surround a comma-separated list of values with square brackets. Without any other information, Swift creates an array that includes the specified values, automatically inferring the array’s Element type. For example:"
var vowels = 0
var consonants = 0
var digits = 0
var otherSymbols = 0
for symbol in text {
let lowerCaseSymbol = String(symbol).lowercased()
switch lowerCaseSymbol {
case "a", "e", "i", "o", "u", "y":
vowels += 1
case "b", "c", "d", "f", "g", "h", "j", "k", "l", "m",
"n", "p", "q", "r", "s", "t", "v", "w", "x", "z":
consonants += 1
case "0", "1", "2", "3", "4", "5", "6", "7", "8", "9":
digits += 1
default:
otherSymbols += 1
}
}
print("""
Text:
\(text)
Total Symbols: \(text.count)
Vowels: \(vowels)
Consonants: \(consonants)
Digits: \(digits)
Other Symbols: \(otherSymbols)
""")
/*
2
*/
print("\nN 2\n")
let age = 35
let stage: String
switch age {
case 0:
stage = "newborn"
case 1...10:
stage = "baby"
case 11...18:
stage = "teenager"
case 19...30:
stage = "youth"
case 31...44:
stage = "median age"
case 45...55:
stage = "mature age"
case 56...70:
stage = "advanced age"
case 71...120:
stage = "old age"
default:
stage = "immortal"
}
print("Age: \(age). Stage: \(stage)")
/*
3
*/
print("\nN 3\n")
let (lastName, firstName, middleName) = ("Иванов", "Иван", "Владимирович")
let greeting: String
switch (lastName[lastName.startIndex], firstName[firstName.startIndex], middleName[middleName.startIndex]) {
case (_, let firstNameSymbol, _) where firstNameSymbol == "А" || firstNameSymbol == "О":
greeting = firstName
case (_, _, let middleNameSymbol) where middleNameSymbol == "В" || middleNameSymbol == "Д":
greeting = firstName + " " + middleName;
case (let lastNameSymbol, _, _) where lastNameSymbol == "Е" || lastNameSymbol == "З":
greeting = lastName;
default:
greeting = firstName + " " + middleName + " " + lastName;
}
print("Привет,", greeting)
/*
4
*/
print("\nN 4\n")
var shipsArray = [
// A B C D E F G H I J
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], // 1
[0, 1, 0, 3, 3, 3, 0, 0, 2, 0], // 2
[0, 0, 0, 0, 0, 0, 0, 0, 2, 0], // 3
[0, 0, 0, 0, 0, 0, 4, 0, 0, 0], // 4
[0, 0, 0, 0, 2, 0, 4, 0, 0, 0], // 5
[0, 0, 0, 0, 2, 0, 4, 0, 0, 0], // 6
[0, 0, 0, 0, 0, 0, 4, 0, 3, 0], // 7
[0, 0, 0, 0, 0, 0, 0, 0, 3, 0], // 8
[0, 1, 0, 0, 0, 0, 0, 0, 3, 0], // 9
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0] // 10
];
print("Start Ship Pozition:")
print(" A B C D E F G H I J")
print("--------------------------------")
for (n, array) in shipsArray.enumerated() {
print("\(array) | \(n+1)")
}
print("")
let maxX = 9
let maxY = 9
let lettersDictionary = ["A": 0, "B": 1, "C": 2, "D": 3, "E" : 4, "F": 5, "G": 6, "H": 7, "I": 8, "J": 9]
let shotsArray = ["A1", "B2", "D2", "E2", "F2", "I1", "I2", "I3", "G6", "G7"]
for shot in shotsArray {
var tempShot = shot
let letter = String(tempShot.remove(at: tempShot.startIndex))
var x:Int = lettersDictionary[letter] ?? 0
var y:Int = Int(tempShot) ?? 1
y = y - 1
y = y <= maxY || y >= 0 ? y : 0
x = x <= maxX || x >= 0 ? x : 0
let result: String
switch (x, y) {
case (let x, let y) where shipsArray[y][x] == 1:
result = "Kill"
shipsArray[y][x] = -1
case (let x, let y) where shipsArray[y][x] > 1:
result = "Hurt"
shipsArray[y][x] = -1
oX: for i in (0..<x).reversed() {
if shipsArray[y][i] == 0 {
break oX;
} else if shipsArray[y][i] != -1 {
shipsArray[y][i] -= 1;
}
}
x9: for i in (x + 1)...maxX {
if shipsArray[y][i] == 0 {
break x9;
} else if shipsArray[y][i] != -1 {
shipsArray[y][i] -= 1;
}
}
oY: for i in (0..<y).reversed() {
if shipsArray[i][x] == 0 {
break oY;
} else if shipsArray[i][x] != -1 {
shipsArray[i][x] -= 1;
}
}
y9: for i in (y + 1)...maxY {
if shipsArray[i][x] == 0 {
break y9;
} else if shipsArray[i][x] != -1 {
shipsArray[i][x] -= 1;
}
}
default:
result = "Fail"
}
print("Shot: \(shot). Result: \(result)")
}
print("\nFinish Ship Pozition:")
print(" A B C D E F G H I J")
print("--------------------------------")
for (n, array) in shipsArray.enumerated() {
print("\(array) | \(n+1)")
}
Console:
N 1
Text:
1. Swift makes it easy to create arrays in your code using an array literal: simply surround a comma-separated list of values with square brackets. Without any other information, Swift creates an array that includes the specified values, automatically inferring the array’s Element type. For example:
Total Symbols: 300
Vowels: 107
Consonants: 138
Digits: 1
Other Symbols: 54
N 2
Age: 35. Stage: median age
N 3
Привет, Иван Владимирович
N 4
Start Ship Pozition:
A B C D E F G H I J
--------------------------------
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0] | 1
[0, 1, 0, 3, 3, 3, 0, 0, 2, 0] | 2
[0, 0, 0, 0, 0, 0, 0, 0, 2, 0] | 3
[0, 0, 0, 0, 0, 0, 4, 0, 0, 0] | 4
[0, 0, 0, 0, 2, 0, 4, 0, 0, 0] | 5
[0, 0, 0, 0, 2, 0, 4, 0, 0, 0] | 6
[0, 0, 0, 0, 0, 0, 4, 0, 3, 0] | 7
[0, 0, 0, 0, 0, 0, 0, 0, 3, 0] | 8
[0, 1, 0, 0, 0, 0, 0, 0, 3, 0] | 9
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0] | 10
Shot: A1. Result: Fail
Shot: B2. Result: Kill
Shot: D2. Result: Hurt
Shot: E2. Result: Hurt
Shot: F2. Result: Kill
Shot: I1. Result: Fail
Shot: I2. Result: Hurt
Shot: I3. Result: Kill
Shot: G6. Result: Hurt
Shot: G7. Result: Hurt
Finish Ship Pozition:
A B C D E F G H I J
--------------------------------
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0] | 1
[0, -1, 0, -1, -1, -1, 0, 0, -1, 0] | 2
[0, 0, 0, 0, 0, 0, 0, 0, -1, 0] | 3
[0, 0, 0, 0, 0, 0, 2, 0, 0, 0] | 4
[0, 0, 0, 0, 2, 0, 2, 0, 0, 0] | 5
[0, 0, 0, 0, 2, 0, -1, 0, 0, 0] | 6
[0, 0, 0, 0, 0, 0, -1, 0, 3, 0] | 7
[0, 0, 0, 0, 0, 0, 0, 0, 3, 0] | 8
[0, 1, 0, 0, 0, 0, 0, 0, 3, 0] | 9
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0] | 10
Комментариев нет:
Отправить комментарий