user3704869
user3704869

Reputation: 93

The Swift Programming Language Book Chapter Section on Control Flow Experiment 3

I am working through the first chapter of the book and can't figure out the experiment:

Add another variable to keep track of which kind of number was the largest, as well as what that largest number was.

This is the code from the book:

let interstingNumbers = [
"Prime": [2, 3, 5, 7, 11, 13, 17],
"Fibonacci": [1, 1, 2, 3, 5, 8],
"Square": [1, 4, 9, 16, 25, 36],
]
var largest = 0
for (kind, numbers) in interstingNumbers {
    for number in numbers {
        if number > largest {
            largest = number
        }
    }
}
largest

Upvotes: 9

Views: 1735

Answers (5)

kapKr21
kapKr21

Reputation: 29

let interestingNumbers = [ "Prime"     : [2,3,5,7,11,13],
                           "Fibonacci" : [1,1,2,3,5,8,13],
                           "Square"    : [1,4,9,16,25,36],
                         ]

var largest = 0
var largestKind = ""

for (kind, numbers) in interestingNumbers {
    for number in numbers {
        if number > largest {
            largest = number
            largestKind = kind
        }
    } 
}

print(largest, largestKind)

outputs : 36 Sqaure

Upvotes: 0

aalionline
aalionline

Reputation: 448

let interestingNumbers = [
      "Prime": [2, 3, 5, 7, 11, 13],
      "Fibonacci": [1, 1, 2, 3, 5, 8],
      "Square": [1, 4, 9, 16, 25],
]

 var largest = 0
 var largestNumbers = [
     "Prime":0,
     "Fibonacci":0,
     "Square":0,
]


for (kind, numbers) in interestingNumbers {

  for number in numbers {

    if number > largest {
        largest = number
    }

    if(number > largestNumbers[kind]!){
        largestNumbers[kind] = number;
    }
}
}

print(largest)
print(largestNumbers)


Result is:
25
["Fibonacci": 8, "Square": 25, "Prime": 13]

Upvotes: -1

bjkirton
bjkirton

Reputation: 11

The question asked to keep track of the value and type not to just display the type of the final answer. I think this gets closer:

let interestingNumbers = [
"Prime": [2, 3, 5, 7, 11, 13],
"Fibonacci": [1, 1, 2, 3, 5, 8],
"Square": [1, 4, 9, 16, 25],
]

var largest = 0
var largestType = [String]()
var largestValues = [Int]()
for (kind, numbers) in interestingNumbers {
    for number in numbers {
        if number > largest {
            largest = number
            largestValues.append(largest)
            largestType.append(kind)
        }
    }
}

print(largest)
print(largestType)
print(largestValues)

And now with tuples:

let interestingNumbers = [
"Prime": [2, 3, 5, 7, 11, 13],
"Fibonacci": [1, 1, 2, 3, 5, 8],
"Square": [1, 4, 9, 16, 25],
]

var largest = 0
var largestValues: [(type: String, value: Int)] = []
for (kind, numbers) in interestingNumbers {
    for number in numbers {
        if number > largest {
            largest = number
            largestValues.append(type: kind, value: number)
        }
    }
}

print(largest)
print(largestValues)

Upvotes: 1

trojanfoe
trojanfoe

Reputation: 122391

Like this:

let interstingNumbers = [
"Prime": [2, 3, 5, 7, 11, 13, 17],
"Fibonacci": [1, 1, 2, 3, 5, 8],
"Square": [1, 4, 9, 16, 25, 36],
]
var largest = 0
var largestKind = ""
for (kind, numbers) in interstingNumbers {
    for number in numbers {
        if number > largest {
            largest = number
            largestKind = kind
        }
    }
}
largest
largestKind

Upvotes: 11

Tommy
Tommy

Reputation: 100632

So basically you'd want to put kind somewhere at the same time as you put number into largest, e.g. into a variable called largestKind.

Upvotes: 1

Related Questions