Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
114 changes: 86 additions & 28 deletions NOCList.playground/Contents.swift
Original file line number Diff line number Diff line change
Expand Up @@ -29,56 +29,114 @@ This message will self destruct in 5 seconds.
*/
//: ## Step 1
//: Create constants for each of the above agents and store all their information in a tuple.



let agent001 = (coverName: "Ethan Hunt", realName: "Tom Cruise", accessLevel: 8, compromised: false)
let agent002 = (coverName: "Jim Phelps", realName: "Jon Voight", accessLevel: 9, compromised: true)
let agent003 = (coverName: "Claire Phelps", realName: "Emmanuelle Beart", accessLevel: 5, compromised: false)
let agent004 = (coverName: "Eugene Kittridge", realName: "Henry Czerny", accessLevel: 10, compromised: true)
let agent005 = (coverName: "Franz Krieger", realName: "Jean Reno", accessLevel: 4, compromised: false)
let agent006 = (coverName: "Luther Stickell", realName: "Ving Rhames", accessLevel: 4, compromised: false)
let agent007 = (coverName: "Sarah Davies", realName: "Kristin Scott Thomas", accessLevel: 5, compromised: true)
let agent008 = (coverName: "Max RotGrab", realName: "Vanessa Redgrave", accessLevel: 4, compromised: false)
let agent009 = (coverName: "Hannah Williams", realName: "Ingeborga Dapkūnaitė", accessLevel: 5, compromised: true)
let agent010 = (coverName: "Jack Harmon", realName: "Emilio Estevez", accessLevel: 6, compromised: true)
let agent011 = (coverName: "Frank Barnes", realName: "Dale Dye", accessLevel: 9, compromised: false)
//: ## Step 2
//: Place the above constants inside an array. Declare this array as a constant as well.



var agentArray = [agent001, agent002, agent003, agent004, agent005, agent006, agent007, agent008, agent009, agent010, agent011]
//: ## Step 3
//: Create a function that calculates the total number of compromised agents. Inside the function, iterate over the array of agents to determine which ones are compromised. Return the total count.



func numberOfCompormisedAgents() -> Int
{
var compdAgents = 0
for agent in agentArray
{
if agent.compromised
{
compdAgents += 1
}
}

return compdAgents
}
//: ## Step 4
//: Call the above function to find the total number of compromised agents and then print a sentence that says "# agents have been compromised!" using string interpolation.



numberOfCompormisedAgents()
//: ## Step 5
//: Create a function called "findCleanAgents" that both prints the cover names of all uncompromised agents, as well as returns an array of agents that are uncompromised.

func findCleanAgents() -> [String]
{
var cleanAgents: [String] = []
for agent in agentArray
{
if agent.compromised == false
{
cleanAgents.append(agent.coverName)
// print(cleanAgents.count)
}
}
print(cleanAgents)
return cleanAgents
}


//: ## Step 6
//: Call the above function to find the total number of clean agents and print a message that says "# clean agents out of # total agents." Use the total number of agents in the array from step 2 as the second number in the string.



var cleanAgentCount = findCleanAgents()
print("\(cleanAgentCount.count) clean agents out of \(agentArray.count) total agents")
//: ## Step 7
//: Create a function called "findHighRisk" that prints out the real names and access levels of agents with level 8 or higher. If one of these agents is also currently compromised, add `**WARNING** **COMPROMISED**` to the end of the string that includes their name and access level.
//: - Example: `Jon Voight, level: 9 **WARNING** **COMPROMISED**`



func findHighRisk()
{
var badAgents = 0
for agent in agentArray
{
if agent.accessLevel >= 8 && agent.compromised
{
badAgents += 1
print("\(agent.realName), level: \(agent.accessLevel) **WARNING** **COMPROMISED**")
}
}
}
//: ## Step 8
//: Call the above function and check the output in the console to ensure it is functioning properly.



findHighRisk()
//: ## Step 9
//: Create a function that finds totals for low, mid, and high level agents. Low level agents are 4 or lower, mid are 5-7, and high level agents are 8 or above. Iterate over each agent and use a `switch` statement to determine their level group. At the end of the function, print a statement like the following: "# low level agents, # mid level agents, and # high level agents"


func allLevelsOfAgents()
{
var lowLevelAgents = 0
var midLevelAgents = 0
var highLevelAgents = 0

for agent in agentArray
{
switch agent.accessLevel {
case 1...4:
lowLevelAgents += 1
case 5...7:
midLevelAgents += 1
case 8...10:
highLevelAgents += 1
default:
print("There are no agents to show")
}
}
print("\(lowLevelAgents) low level agents, \(midLevelAgents) mid level agents, \(highLevelAgents) high level agents")
}

//: ## Step 10
//: Call the above function and check its output in the console.



allLevelsOfAgents()
//: ## Step 11 (Optional)
//: Create and call a function that prints the cover names and access levels of all agents, but the list should be sorted by access level, in ascending order.


func sortedAgentList()
{
let sortedAgents = agentArray.sorted(by: {$0.accessLevel < $1.accessLevel})
for agent in sortedAgents
{
print("\(agent.coverName), level: \(agent.accessLevel)")
}
}
sortedAgentList()
Binary file not shown.
Binary file not shown.