Найдите букву (из массива) и массив, а затем используйте индекс, чтобы получить значение из другого массива. - PullRequest
0 голосов
/ 01 февраля 2020

Я пытаюсь вычислить слово с помощью функции cal c, приведенной ниже. Предположим, что showLetters = ["S", "W", "I", "F", "T"]

Итак, S = 1, W = 4, I = 1, F = 4, T = 1, и дайте мне wordScore 11 ....

Я использую массив alphaLetter, чтобы найти положение буквы в алфавит. Я использую индекс найденного письма, чтобы получить его значение из alphaScore.

 func calcButton() {
    var testWord = ""
    var wordScore = 0

    let alphaLetter = Array("A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z")
    let alphaScore = Array ("1,3,2,2,1,4,2,4,1,8,5,1,3,1,1,3,10,1,1,1,1,4,4,8,4,10")

    for k in (0...6)
    {
      testWord = testWord + showLetters[k]

      let letterFound = String(showLetters[k])
      *if let index = alphaLetter.firstIndex(of: letterFound) {*

    }


     }           

Я изо всех сил пытаюсь получить индекс

Я пытался присвоить letterFound в качестве строки найденного письма. и затем попытался использовать, если let index = alphaLetter.firstIndex (of: letterFound)

, но это вызывает ошибку. Невозможно преобразовать значение типа 'String' в ожидаемый тип аргумента 'String.Element' (он же символ) ')

Так что я немного застрял ...

Буду признателен за предложение или руководство

спасибо

1 Ответ

1 голос
/ 01 февраля 2020

alphaLetter и alphaScore являются строками. Результат создания массива из одной строки - [Character], включая запятые!.

Возможно, вы имеете в виду это (проверено на игровой площадке)

let showLetters = ["S","W","I","F","T"]

func calcButton() {
    var testWord = ""
    var wordScore = 0

    let alphaLetter = Array(["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"])
    let alphaScore = Array ([1,3,2,2,1,4,2,4,1,8,5,1,3,1,1,3,10,1,1,1,1,4,4,8,4,10])

    for k in 0..<showLetters.count 
    {
        testWord = testWord + showLetters[k]

        let letterFound = showLetters[k]
        if let index = alphaLetter.firstIndex(of: letterFound) {
            wordScore += alphaScore[index]
        }
    }
    print(wordScore)
}

calcButton()

Тем не менее его использование гораздо эффективнее словарь ["A" : 1, "B" : 3 ...]

func calcButton() {
    var testWord = ""
    var wordScore = 0

    let alphaDict =  ["P": 3, "U": 1, "B": 3, "M": 3, "A": 1, "C": 2, "V": 4, "L": 1, "Q": 10, "D": 2, "H": 4, "K": 5, "N": 1, "J": 8, "T": 1, "E": 1, "X": 8, "R": 1, "O": 1, "I": 1, "G": 2, "F": 4, "Y": 4, "Z": 10, "W": 4, "S": 1]

    for character in showLetters {
        if let value = alphaDict[character] {
            wordScore += value
        }
    }
    print(wordScore)
}
...