假设您有两个列表A = [a_1, a_2, ..., a_n]
和B = [b_1, b_2, ..., b_n]
整数.我们说A
是潜在的,可分割的B
,如果有一个置换B
,使得a_i
整除b_i
所有i
.那么问题是:是否有可能重新排序(即置换)B
以便a_i
可以被b_i
所有人整除i
?例如,如果你有
A = [6, 12, 8]
B = [3, 4, 6]
Run Code Online (Sandbox Code Playgroud)
那么答案是True
,因为B
可以重新排序是B = [3, 6, 4]
,然后我们就会有a_1 / b_1 = 2
,a_2 / b_2 = 2
和a_3 / b_3 = 2
,所有这一切都是整数,因此A
是潜在的,整除B …
我一直在使用 ScrollView 看到首选项键的一些奇怪行为。如果我把它放在onPreferenceChange
里面ScrollView
它不会被调用,但如果我把它放在外面它会!
我已经设置了一个宽度首选项键,如下所示:
struct WidthPreferenceKey: PreferenceKey {
typealias Value = CGFloat
static var defaultValue = CGFloat(0)
static func reduce(value: inout CGFloat, nextValue: () -> CGFloat) {
value = nextValue()
}
}
Run Code Online (Sandbox Code Playgroud)
以下简单视图不会打印:
struct ContentView: View {
var body: some View {
ScrollView {
Text("Hello")
.preference(key: WidthPreferenceKey.self, value: 20)
.onPreferenceChange(WidthPreferenceKey.self) {
print($0) // Not being called, we're in a scroll view.
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
但这有效:
struct ContentView: View {
var body: some View {
ScrollView …
Run Code Online (Sandbox Code Playgroud) 假设您有n
整数列表,其中每个列表仅包含from 1
到的整数n
.例如,对于n = 4
,我们可能有:
a_1 = [1, 2]
a_2 = [3]
a_3 = [4, 1, 1]
a_4 = [2, 3]
Run Code Online (Sandbox Code Playgroud)
现在我的问题是:我可以勾选这些列表之间1
和之间的所有整数,但是一旦我找到一个数字,我就不能再使用该列表来查找后续数字了吗?n
n
例如,在上面的示例中n = 4
,我可以选择1,from a_1
,from a_4
,3 from a_2
和4 for a_3
,因此我填充了从1到4的所有数字,但仅使用每个列表一次.
我无法找到范围(因此应该返回False
)的示例将是:
a_1 = [1, 2]
a_2 = [3, 3, 5]
a_3 = [4]
a_4 = [5]
a_5 = [3, 4, 5]
Run Code Online (Sandbox Code Playgroud)
原因是因为如果我从a_1中选择1,我就不能从任何列表中选择2.
这是我目前直截了当的方法.我制作列表的笛卡尔积,并检查是否有任何,排序,将是一个范围.
import itertools
def …
Run Code Online (Sandbox Code Playgroud) 我有一个视图,它在内部管理一个跟踪当前索引的 @State 变量。所以像:
struct ReusableView: View {
@State var index: Int = 0
var body: some View {
Text("The index is \(self.index)"
// A button that changes the index
}
}
Run Code Online (Sandbox Code Playgroud)
此视图将在整个应用程序中重复使用。有时父视图需要访问索引,所以我这样重构它:
struct ParentView: View {
@State var index: Int = 0
var body: some View {
ReusableView($index)
}
}
struct ReusableView: View {
@Binding var index: Int
var body: some View {
Text("The index is \(self.index)"
// A button that changes the index
}
}
Run Code Online (Sandbox Code Playgroud)
我不想强制父视图始终保持索引的状态。换句话说,我想选择性地允许父视图负责状态变量,但默认为可重用视图来维护状态,以防父视图不关心索引。 …