当我解决以下示例算法问题时,我很好奇理解字符串比较在python中如何工作的内部:
给定两个字符串,返回最长公共前缀的长度
我的直觉告诉我,最佳解决方案是在两个单词的开头用一个光标开始并向前迭代,直到前缀不再匹配.就像是
def charByChar(smaller, bigger):
assert len(smaller) <= len(bigger)
for p in range(len(smaller)):
if smaller[p] != bigger[p]:
return p
return len(smaller)
Run Code Online (Sandbox Code Playgroud)
为了简化代码,该函数假定第一个字符串的长度smaller
始终小于或等于第二个字符串的长度bigger
.
另一种方法是将两个字符串平分以创建两个前缀子字符串.如果前缀相等,我们知道公共前缀点至少与中点一样长.否则,公共前缀点至少不大于中点.然后我们可以递归以找到前缀长度.
阿卡二进制搜索.
def binarySearch(smaller, bigger):
assert len(smaller) <= len(bigger)
lo = 0
hi = len(smaller)
# binary search for prefix
while lo < hi:
# +1 for even lengths
mid = ((hi - lo + 1) // 2) + lo
if smaller[:mid] == bigger[:mid]:
# prefixes equal
lo = mid
else: …
Run Code Online (Sandbox Code Playgroud) 我已经玩过pybrain,了解如何使用自定义架构生成神经网络,并使用反向传播算法将它们训练到监督数据集.
但是我对优化算法以及任务,学习代理和环境的概念感到困惑.
例如:我如何实现神经网络,如(1)使用pybrain遗传算法(2)对XOR数据集进行分类?
(1) pybrain.tools.shortcuts.buildNetwork(2, 3, 1)
(2) pybrain.optimization.GA()
我试过查看Python的多个统计模块,但似乎找不到任何支持one-way ANOVA
post hoc测试.
我想验证一个字段是字符串还是字符串数组
这是一个最小的失败示例,它碰巧使用了 formik 但实际上我正在使用 yup 进行服务器端验证。
{
email: yup
.mixed()
.oneOf([yup.array().of(yup.string()), yup.string()])
.nullable()
}
Run Code Online (Sandbox Code Playgroud) 据我所知,当商店中的任何内容发生变化时,redux 都会通知所有订阅者到商店,无论是订阅深层嵌套的叶子还是订阅顶级状态。
在您遵循指导原则的应用程序中:
许多单独的组件应该连接到商店而不是仅仅几个...... [文档]
您最终可能会遇到很多听众和潜在的性能问题?
免责声明:我了解选择器函数只会在选择器函数的结果发生变化时导致重新渲染。我明白,仅仅因为监听器函数被评估,并不意味着订阅组件会重新渲染。我知道评估选择器函数比反应组件渲染相对便宜。
但是,我只是想确认这确实是 redux 的工作原理吗?
例如给出以下示例侦听器
const result = useSelector(state => state.a.b.c.d.e.f.g.h.i.j.k)
Run Code Online (Sandbox Code Playgroud)
如果我们沿其他路径更新其他值,则与上述侦听器无关,例如
const exampleReducer = (state) => {
return { ...state, asdf: 'asdf' }
}
Run Code Online (Sandbox Code Playgroud)
根据我的理解,所有监听器,包括上面的例子,都会被调用。
对于上下文,我的实际用例是我使用的是基于 redux 的https://easy-peasy.now.sh/。需要明确的是,我在生产中没有任何与绑定太多侦听器相关的当前性能问题。然而,每次我通过useStoreState
钩子附加一个侦听器时,我想知道是否应该最小化绑定另一个侦听器到商店。
另外,如果你好奇,受到这种想法的启发,我实现了一个状态树,它只通知相关的听众。
也许这是对状态库的过早优化......但如果是这样,为什么?是否假设使用 redux 的应用程序将具有简单快速的选择器并且应用程序瓶颈将在其他地方?
阻止我切换到cloud9的事情是缺乏对matplotlib的支持,因为绘制事物对我的工作非常重要.
我已经尝试安装matplotlib但是pygtk似乎有一些问题,即使它似乎已安装.是否有可能在线ide与我本地计算机上的gtk窗口进行交互?也许图表可以远程生成并保存到我的目录中?
如果有人成功管理这将是很好的可以告诉我如何?
我正在尝试在 sveltekit 中的两个页面之间进行转换,但这似乎不起作用,我该怎么做?
<!-- src/routes/asdf.svelte -->
<script>
import { crossfade } from 'svelte/transition'
const [send, receive] = crossfade({ })
</script>
<a href="/foo" in:receive={{ key: 'asdf' }} out:send={{ key: 'asdf' }}>Go to foo</a>
Run Code Online (Sandbox Code Playgroud)
<!-- src/routes/foo.svelte -->
<script>
import { crossfade } from 'svelte/transition'
const [send, receive] = crossfade({})
</script>
<a href="/asdf" in:receive={{ key: 'asdf' }} out:send={{ key: 'asdf' }} style="background: crimson">Go to asdf</a>
Run Code Online (Sandbox Code Playgroud) 我正在对用户的feed进行分页,并且想要模拟我正在使用的API的响应.API可以返回奇怪的结果,所以我想确保如果API返回我已经看过的项目,请停止分页.我第一次get_next_page
调用该方法时使用了minitest来存根,但是我希望在第二次和第三次使用不同的值调用它时将其存根.
我应该只使用rSpec吗?新手到红宝石......
这是片段
test "crawler does not paginate if no new items in next page" do
# 1: A, B
# 2: B, D => D
# 3: A => stop
crawler = CrawlJob.new
first_page = [
{"id"=> "item-A"},
{"id"=> "item-B"}
]
second_page = [
{"id"=> "item-B"},
{"id"=> "item-D"}
]
third_page = [{"id"=> "item-A"}]
# can only stub with same second page
# but I want to respond with third page
# the second time get_next_page is called …
Run Code Online (Sandbox Code Playgroud) 我有一个重复的数组.一种基于重复计数对阵列进行排序的有效算法,例如:
['d@me.com', 'z@gmail.com', 'e@me.com', 'b@me.com', 'c@me.com', 'z@gmail.com', 'z@gmail.com', 'b@me.com', 'e@me.com']
=>
['z@gmail.com', 'e@me.com', 'b@me.com', 'd@me.com', 'c@me.com']
Run Code Online (Sandbox Code Playgroud)
因为计数如下 [3, 2, 2, 1, 1]
我提出了:
const itemCounts = {}
const ordereditems = []
for (let i = 0; i < allitems.length; i++) {
let item = allitems[i];
itemCounts[item] = itemCounts[item] ? itemCounts[item] + 1 : 1
}
const tuples = []
for (let key in itemCounts) {
tuples.push([key, itemCounts[key]])
}
return tuples.sort((a, b) => a[1] < b[1]).map(x => x[0])
Run Code Online (Sandbox Code Playgroud)
这是关于?(3 N …
当专注于输入框时,按Enter即可提交表单。提交时,错误会导致将错误插入状态,从而导致重新呈现并创建一个新元素来显示错误。
{error && <div>{error}</div>}
Run Code Online (Sandbox Code Playgroud)
这样就重新渲染了不必要的整个组件。
确定(p)react应该能够检测到仅插入了新的错误元素,而其余DOM可以保持不变吗?
这样的结果是我失去了输入的焦点,而且重新安装了条形iframe。我该如何预防
export default class App extends Component {
state = { val: "Sample input", error: null };
onSubmit = e => {
e.preventDefault();
this.setState({ error: "Some error" });
};
render(props, { val, error }) {
return (
<div>
<h1>Example</h1>
<form onSubmit={this.onSubmit}>
{error && <div>{error}</div>}
<div class="list">
<input
value={val}
onChange={e => this.setState({ val: e.target.value })}
/>
<button type="submit">Submit</button>
</div>
</form>
</div>
);
}
}
Run Code Online (Sandbox Code Playgroud)
问题是反应如何调和孩子。
解决方案1通过将key
属性添加到条件组件中,我可以避免重新渲染整个组件并保持焦点。
{error …
Run Code Online (Sandbox Code Playgroud) javascript ×3
python ×3
reactjs ×2
algorithm ×1
cloud9-ide ×1
cpython ×1
easy-peasy ×1
formik ×1
interpreter ×1
ipython ×1
matplotlib ×1
minitest ×1
preact ×1
pybrain ×1
react-redux ×1
redux ×1
rspec ×1
ruby ×1
scipy ×1
sorting ×1
statistics ×1
statsmodels ×1
strncmp ×1
svelte ×1
sveltekit ×1
x86 ×1
yup ×1