-
-
Save TheMuellenator/f290a658bfd19773dadacffc8000498e to your computer and use it in GitHub Desktop.
//Don't change this | |
var studentsAndScores = ["Amy": Int(readLine()!)!, "James": Int(readLine()!)!, "Helen": Int(readLine()!)!] | |
func highestScore(scores: [String: Int]) { | |
//Write your code here. | |
let a = studentsAndScores["Amy"]! | |
let b = studentsAndScores["James"]! | |
let c = studentsAndScores["Helen"]! | |
var temp = 0 | |
//If a is greater than b | |
if a > temp { | |
//And a is also greater than c | |
temp = a | |
} | |
if b > temp { | |
temp = b | |
} | |
if c > temp { | |
temp = c | |
} | |
print(temp) | |
} | |
//Don't change this | |
highestScore(scores: studentsAndScores) |
This worked perfectly for me, I don't understand, if you guys can explain, why I have to create a variable if I already can store the same inside of the function and get the result more clean and in a short way??
Well this is my solution, it passed successfully in Udemy when I checked solution. But in Replit I couldn't check because it is not printing the values. I hope that this is also correct, I understand the task, bud can someone confirm if it is correct way as well?
//Don't change this
var studentsAndScores = ["Amy": Int(readLine()!)!, "James": Int(readLine()!)!, "Helen": Int(readLine()!)!]
func highestScore(scores: [String: Int]) {
//Write your code here.
let Amy = studentsAndScores["Amy"]!
let James = studentsAndScores["James"]!
let Helen = studentsAndScores["Helen"]!
if Amy > James && Amy > Helen {
print(Amy)
} else if James > Amy && James > Helen {
print(James)
} else if Helen > James && Helen > Amy {
print(Helen)
}
}
I can't see a point of watching tutorials like this to find the solution by yourself on the Internet. I hoped that the challenges I encounter in this tutorial were going to match what has been presented before. This time I'm actually disappointed. I don't even understand the code starting with the var temp = 0. I think it would be quicker to find the solution as other people did on stack overflow.
I have managed to write the following code.
Shall also try using switch case.
var studentsAndScores = ["Amy": Int(readLine()!)!, "James": Int(readLine()!)!, "Helen": Int(readLine()!)!]
func highestScore(scores: [String: Int]) {
if
scores["Amy"]! > scores["James"]! && scores["Amy"]! > scores["Helen"]! {
print(scores["Amy"]!)
}
else if
scores["James"]! > scores["Helen"]! && scores["James"]! > scores["Amy"]! {
print(scores["James"]!)
}
else {
print(scores["Helen"]!)
}
}
highestScore(scores: studentsAndScores)
(Ignore indentation)
I run this code on Replit and it works fine. But when I run the same code on playgrounds, the program crashes with the error.
**Fatal error: Unexpectedly found nil while unwrapping an Optional value
Playground execution failed:
error: Execution was interrupted, reason: EXC_BREAKPOINT (code=1, subcode=0x18f6dd21c).
The process has been left at the point where it was interrupted, use "thread return -x" to return to the state before expression evaluation.**
Why I don't get this error on Replit but only on the playground? I am not sure what do I write in the if statement to prevent force unwrap the optional string. Can anyone help pleaae?
Tried this and it works -
var studentsAndScores = ["Amy": Int(readLine()!)!, "James": Int(readLine()!)!, "Helen": Int(readLine()!)!]
func highestScore(scores: [String: Int]) {
//Write your code here.
let maxScore = (scores.values.max())!
if maxScore > 0 {
print(maxScore)
}
}
Like the solution but tried avoiding forced unwrapping and it worked:
var studentsAndScores = ["Amy": Int(readLine()!)!, "James": Int(readLine()!)!, "Helen": Int(readLine()!)!]
func highestScore(scores: [String: Int]) {
//Write your code here.
let a = studentsAndScores["Amy"]
let b = studentsAndScores["James"]
let c = studentsAndScores["Helen"]
var temp = 0
if let a = a {
if a > temp { temp = a }
}
if let b = b {
if b > temp { temp = b }
}
if let c = c {
if c > temp { temp = c }
}
print(temp)
}
highestScore(scores: studentsAndScores)
//Don't change this
var studentsAndScores = ["Amy": 78, "James": 55, "Helen": 86]
func highestScore(scores: [String: Int]) {
//Write your code here.
let amyScore = scores ["Amy"]!
let jamesScore = scores ["James"]!
let helenScore = scores ["Helen"]!
var Ttemp = 0
if amyScore > Ttemp {
Ttemp = amyScore
}
if jamesScore > Ttemp{
Ttemp = jamesScore
}
if helenScore > Ttemp{
Ttemp = helenScore
}
print (Ttemp)
}
//the result is 86 not 99, the hellen score must be changed to 86, in order to solve the challenge
it didn't pass but my answer is the simplest?
var studentsAndScores = ["Amy": 88, "James": 55, "Helen": 99]
func highestScore() {
print("\(studentsAndScores.values.max()!)")
}
highestScore()
There is no need to create a variable called temp
var studentsAndScores = ["Amy": Int(readLine()!)!, "James": Int(readLine()!)!, "Helen": Int(readLine()!)!]
func highestScore(scores: [String: Int]) {
// Store the scores and force unwrap it
let a = studentsAndScores["Amy"]!
let b = studentsAndScores["James"]!
let c = studentsAndScores["Helen"]!
// Create a nested if statement
if a > b{
if a > c{
print(a)
}
}
if b > c{
if b > a{
print(b)
}
}
if c > a{
if c > b{
print(c)
}
}
}
Here's how I solved this exercise:
//Don't change this
var studentsAndScores = ["Amy": Int(readLine()!)!, "James": Int(readLine()!)!, "Helen": Int(readLine()!)!]
func highestScore(scores: [String: Int]) {
//Write your code here.
let a = studentsAndScores["Amy"]!
let b = studentsAndScores["James"]!
let c = studentsAndScores["Helen"]!
if a > b && a > c {
print(a)
} else if b > a && b > c {
print(b)
} else {
print(c)
}
}
// List of students with their scores
var studentsAndScores = ["Amy": 10, "James": 5, "Helen": 7]
// Function that takes a dictionary as a parameter to find and print the highest score among students
func highestScore(scores: [String: Int]) {
print(studentsAndScores.values.max()!)
}
// We call the function and pass studentsAndScores dictionary as an argument
highestScore(scores: studentsAndScores) // Output: 10
//Don't change this
// var studentsAndScores = ["Amy": Int(readLine()!)!, "James": Int(readLine()!)!, "Helen": Int(readLine()!)!]
func highestScore(scores: [String: Int]) {
print(scores.values.max()!)
}
//Try some different scores.
//Dont add the lines below to udemy!
highestScore(
scores: [
"Amy": 78,
"James": 65,
"Helen": 99
]
)