【问题标题】:How do I get every possible UInt8 array combination up to a certain array size? [closed]如何让每个可能的 UInt8 数组组合达到一定的数组大小? [关闭]
【发布时间】:2021-05-19 19:11:23
【问题描述】:

我试图在 Swift 中让每个可能的 UInt8 数组的数组大小达到 100。到目前为止,我有以下代码:

var arrays = [[UInt8]]()
for size in 1...100 {
    let arr = Array(repeating: 255, count: size) as [UInt8]
    arrays.append(arr)
}

到目前为止的代码只是创建了一个数组,其中填充了255 for 循环指定的次数。相反,我希望代码为每个数组大小创建一个数组,列出所有可能的组合。例如,当 size 为 1 时,数组应如下所示:

[0], [1], [2], [3], [4], so on until [255]

size 为 2 时,数组应如下所示:

[0,0], [0,1], [0,2], [0,3], [0,4], so on until [0,255]
[1,0], [1,1], [1,2], [1,3], [1,4], so on until [1,255]

这应该一直持续到 size 为 100。有什么方法可以使用 Swift 完成此操作?

提前致谢。

【问题讨论】:

  • as [UInt8]? 是什么意思?没有可选的
  • @vadian 那是个意外,现在已经更正了。它不应该是可选的,而是应该转换为 UInt8 数组而不是默认的 Int 数组。
  • 如果要生成[0], [1], [2], [3], [4]...,需要编写一些代码来生成[0], [1], [2], [3], [4]...。不要编写一些完全不同的代码,然后抱怨它没有做你想要的。您当前的代码几乎与您声明的目标完全无关。
  • 我建议分小块解决问题。弄清楚如何生成[0,1,2,3]。那么如何生成[[0], [1], [2], [3]]。那么如何生成[[0,0], [0,1], [0,2], [0,3]]。以此类推。
  • 除非这是一些家庭作业,否则我建议使用Swift Algorithms

标签: arrays swift uint8array


【解决方案1】:

这些问题现在可以通过Swift Algorithms 解决。

combinations(ofCount:)

import Algorithms

let combinations = (1...5).combinations(ofCount: 2)
combinations.forEach { combination in
    print(combination)
}

输出:

[1, 2]
[1, 3]
[1, 4]
[1, 5]
[2, 3]
[2, 4]
[2, 5]
[3, 4]
[3, 5]
[4, 5]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-30
    • 2015-12-09
    • 1970-01-01
    相关资源
    最近更新 更多