arrays - 字典数组中的增量值

标签 arrays swift dictionary

我正在尝试计算在一组六个六面骰子中掷出特定数字的次数,以确定我是否拥有三个同种、四个同种等。

我可以提取每个掷骰子的面值并将其与 6 面骰子的面进行比较,但无法使“qtyRolled”键/值递增。

    func rollDice() {
    currentRoll.removeAll()

    for _ in currentDiceArray {
        let num: UInt32 = arc4random_uniform(UInt32(currentDieFaceArray.count))
        let currentDieData = currentDieFaceArray[Int(num)]
        let faceValue = currentDieData["faceValue"]
        currentRoll.append(faceValue as! Int)
    }
    print(currentRoll)
    getQtyOfDieFaces()
    //checkForScoringCombos()
}

func getQtyOfDieFaces() {
    for die in currentRoll {
        for dieData in currentDieFaceArray {
            var currentDieData = dieData
            let qtyRolled = currentDieData["qtyRolled"] as! Int
            let faceValue = currentDieData["faceValue"] as! Int
            print("faceValue: \(faceValue)")
            print("Die: \(die)")
            if faceValue == die {
                currentDieData["qtyRolled"] = qtyRolled + 1 as AnyObject
            }
        }
    }
    for currentDieData in currentDieFaceArray {
        print(currentDieData["qtyRolled"]!)
    }
}

这是我的数据结构

var currentDieFaceArray = [[String:AnyObject]]()
var currentDiceArray:[[String:AnyObject]] = [[:]]
var currentRoll: [Int] = []

最佳答案

我建议放弃字典,除非您真的需要它们,因为您实际上只是在处理结构/类的属性。我将假设您正在使用 currentDieFaceArray 方法,以便您可以将此通用方法用于其他维度的非线性骰子面(例如,您可以有一个面值为 [1, 4, 6, 8]).如果不是这种情况,我敢肯定,您可以使用一个简单的计数数组进一步简化。但这是您的方法的示例(可能还有其他可能的优化)。

class DieFaceDefn
{
  let faceValue : Int
  var countThisRoll : Int = 0

  init(faceValue: Int)
  {
    self.faceValue = faceValue
  }
}


var diceFaces: [DieFaceDefn] = []
let numberOfCurrentDice = 5

func setupDice()
{
    diceFaces.append(DieFaceDefn(faceValue: 1))
    diceFaces.append(DieFaceDefn(faceValue: 2))
    ...
}

var currentRoll: [Int] = []
func rollDice()
{
  currentRoll.removeAll()
  diceFaces.forEach { $0.countThisRoll = 0 }

  for _ in 0..<numberOfCurrentDice
  {
    let num: UInt32 = arc4random_uniform(UInt32(diceFaces.count))
    let currentDieData = diceFaces[Int(num)]
    let faceValue = currentDieData.faceValue
    currentRoll.append(faceValue)
    currentDieData.countThisRoll += 1
  }
  print(currentRoll)
  diceFaces.forEach { print("\($0.faceValue): \($0.countThisRoll)") }
}

关于arrays - 字典数组中的增量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54776494/

相关文章:

python - 摩尔斯电码到英语 python3

java - 如何将 boolean 值存储在数组中并用Java输出?

c# - C# 中的可变长度数组

java - 存储非常大的数组

ios - Swift 检测并设置 wkwebview 以尊重硬件静音开关

ios - 无法在 Swift 项目中调用 'getControlPointAtIndex'

javascript - 为什么 Map 构造函数不接受可迭代元组数组?

php不需要属性吗?

ios - 以编程方式访问 TVOS 的 Assets 文件夹中的文件/文件夹

python - 根据键将值附加到字典