В 11 уроке рассматриваются замыкания.
Домашнее задание для 11 урока:
Домашнее задание для 11 урока:
/*
1. Написать функцию, которая ничего не возвращает и принимает только один клоужер, который ничего не принимает и ничего не возвращает . Функция должна просто посчитать от 1 до 10 в цикле и после этого вызвать клоужер. Добавьте println в каждый виток цикла и в клоужер и проследите за очередностью выполнения команд.
2. Используя метод массивов sorted, отсортируйте массив интов по возрастанию и убыванию. Пример показан в методичке.
3. Напишите функцию, которая принимает массив интов и клоужер и возвращает инт. Клоужер должен принимать 2 инта (один опшинал) и возвращать да или нет. В самой функции создайте опшинал переменную. Вы должны пройтись в цикле по массиву интов и сравнивать элементы с переменной используя клоужер. Если клоужер возвращает да, то вы записываете значение массива в переменную. в конце функции возвращайте переменную.
используя этот метод и этот клоужер найдите максимальный и минимальный элементы массива.
4. Создайте произвольную строку. Преобразуйте ее в массив букв. Используя метод массивов sorted отсортируйте строку так, чтобы вначале шли гласные в алфавитном порядке, потом согласные, потом цифры, а потом символы
5. Проделайте задание №3 но для нахождения минимальной и максимальной буквы из массива букв (соответственно скалярному значению)
*/
/*
1
*/
func testFunc(closures: () -> Void) {
print("Start testFunc")
for i in 0...10 {
print(i)
}
closures()
}
testFunc {
print("closures start")
}
/*
2
*/
print("\nN 2\n")
let startArray = [2, 1, 6, 2, 6,3,2,1,65,7,3,3]
print("Start array", startArray)
print("Ascending Array", startArray.sorted(by: <))
print("Descending Array", startArray.sorted(by: >))
/*
3
*/
print("\nN 3\n")
func testFunc3(array: [Int], closure: (Int, Int?) -> Bool ) -> Int? {
var optional: Int?
for number in array {
optional = closure(number, optional) ? number : optional
}
return optional
}
let resultMax = testFunc3(array: startArray) {$1 == nil ? true : $0 > $1!}
let resultMin = testFunc3(array: startArray) {$1 == nil ? true : $0 < $1!}
print("Start Array: ", startArray, ". Max:",resultMax ?? "No max value", ". Min:", resultMin ?? "No min value")
/*
4
*/
print("\nN 4\n")
let text = "a Adsfkj;lewjqoir324234kl;jasdF;ffkjF ;mnvzxc,n<MNLK Jal;dsfQEWRaFSLJ:342;l,.mmn,sdfa"
let vowelsSet = Set(["a", "e", "i", "o", "u", "y"])
let consonantsSet = Set(["b", "c", "d", "f", "g", "h", "j", "k", "l", "m",
"n", "p", "q", "r", "s", "t", "v", "w", "x", "z"]);
let digitsSet = Set(["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]);
func priorityCharacter(character: Character) -> Int{
let lowerLetter = String(character).lowercased()
switch lowerLetter {
case let letter where vowelsSet.contains(letter):
return 4
case let letter where consonantsSet.contains(letter):
return 3
case let letter where digitsSet.contains(letter):
return 2
case " ":
return 1
default:
return 0
}
}
let arraySort = text.sorted {
let letter1LowerCased = String($0).lowercased()
let letter2LowerCased = String($1).lowercased()
let priority1 = priorityCharacter(character: $0)
let priority2 = priorityCharacter(character: $1)
if priority1 == priority2 {
return letter1LowerCased == letter2LowerCased ? $0 < $1 : letter1LowerCased < letter2LowerCased
} else {
return priority1 > priority2
}
}
print(String(arraySort))
/*
5
*/
print("\nN 5\n")
let lettersArray: [Character] = ["e", "w", "c", "d", "a",]
func charCompare(array: [Character], closure: (Character, Character?) -> Bool ) -> Character? {
var optional: Character?
for char in array {
optional = closure(char, optional) ? char : optional
}
return optional
}
let resultMaxChar = charCompare(array: lettersArray) {$1 == nil ? true : $0 > $1!}
let resultMinChar = charCompare(array: lettersArray) {$1 == nil ? true : $0 < $1!}
print("Start Array: ", lettersArray, ". Max letter:",resultMaxChar ?? "No min value" , ". Min letter:", resultMinChar ?? "No min value")
Console:
Start testFunc
0
1
2
3
4
5
6
7
8
9
10
closures start
N 2
Start array [2, 1, 6, 2, 6, 3, 2, 1, 65, 7, 3, 3]
Ascending Array [1, 1, 2, 2, 2, 3, 3, 3, 6, 6, 7, 65]
Descending Array [65, 7, 6, 6, 3, 3, 3, 2, 2, 2, 1, 1]
N 3
Start Array: [2, 1, 6, 2, 6, 3, 2, 1, 65, 7, 3, 3] . Max: 65 . Min: 1
N 4
AaaaaaEeiocddddFFFfffffJJjjjjKkkkLLllllMmmmNnnnQqRrSssssvWwxz222333444 ,,,.:;;;;;;<
N 5
Start Array: ["e", "w", "c", "d", "a"] . Max letter: w . Min letter: a
Комментариев нет:
Отправить комментарий