问题基本上是"如何为游戏生成一个好的网格'Boggle',包含大量单词",其中good被定义为包含5个或更多字母的大量单词.
Boggle是一款用骰子掷骰子的游戏,它们放在一个4x4的网格中.例:
H S A V
E N I S
K R G I
S O L A
Run Code Online (Sandbox Code Playgroud)
可以通过水平,垂直或对角连接字母来制作单词.在上面的好示例网格中,您可以根据所使用的词典制作单词"VANISHERS","VANISHER","KNAVISH","ALIGNERS","SAVINGS","SINKERS"以及大约271个其他单词,例如"AS" ,"我","空气","SIN","是"等......
作为这个网格的一个坏例子
O V W C
T K Z O
Y N J H
D E I E
Run Code Online (Sandbox Code Playgroud)
只有~44个单词,其中只有2个> 4个字母长."TYNED"和"HINKY".
有很多类似的问题,但AFAICT不是这个问题.这显然是对"与朋友争抢"游戏的引用.
第一个解决方案是随机挑选字母,这个问题是,如果你意外地挑选所有辅音,就不会有任何语言.添加一些随机元音不足以保证一组好的单词.你可能只得到1到4个字母单词,而一个好的算法会选择一组字母,其中> 200个单词,多个单词> 7个字母.
我对任何算法都持开放态度.显然,我可以将代码写入暴力解决方案,找到每个可能的网格,然后用最常用的网格对网格进行排序,但这个简单的解决方案需要永远运行.
我可以想象各种启发式方法,比如选择一个长单词(8-16个字母),将这些字母随机地放在网格中,但实际上仍然可以制作单词,然后填充左边的空格.我怀疑这还不足以保证一套好词虽然我还没有尝试过.
该解决方案可能需要预处理字典以了解单词的常见部分.例如,以"ing"或"ers"或"ght"或"tion"或"land"结尾的所有单词.或者以某种方式将它们组织成共享字母图.也许经常插入某些字母组合,以便插入"ing"或"ers".
想法?
我知道before,beforeEach,after和afterEach,但我怎么运行所有测试前,一些代码.
换句话说,我这样的文件
test
test1.js
test2.js
test3.js
Run Code Online (Sandbox Code Playgroud)
我用它来运行测试
mocha --recursive
Run Code Online (Sandbox Code Playgroud)
我不想before在每个测试文件中放入一个.在执行任何测试之前,我需要一个beforeAllTests或一个--init=setup.js可以执行一些JavaScript的东西.在这种特殊情况下,我必须在测试运行之前配置我的系统的日志记录模块
有没有办法调用一些在所有测试之前执行的init函数?
根据文档插件应该工作,如果他们是名为"eslint-plugin-"的npm模块
所以,我们制作了一个新项目
md foo
cd foo
npm init
... answer questions ..
npm install --save-dev eslint
npm install --save-dev eslint-plugin-require
echo "define(function(){});" > test.js
echo "{\"rules\":{\"require\": 2}}" > conf.json
node node_modules/eslint/bin/eslint.js -c conf.json --plugin eslint-plugin-require test.js
Run Code Online (Sandbox Code Playgroud)
产生
~/node_modules/eslint/lib/eslint.js:569
throw new Error("Definition for rule '" + key + "' was not
^
Error: Definition for rule 'require' was not found.
Run Code Online (Sandbox Code Playgroud)
将配置更改为
echo "{\"rules\":{\"eslint-plugin-require\": 2}}" > conf.json
Run Code Online (Sandbox Code Playgroud)
也不
echo "{\"rules\":{\"require-define\": 2}}" > conf.json
Run Code Online (Sandbox Code Playgroud)
也不
echo "{\"rules\":{\"require-require-define\": 2}}" > …Run Code Online (Sandbox Code Playgroud) 以下代码在Chrome中失败,Safari在Firefox中运行良好
"use strict";
document.body.style = "background-color: green;";Run Code Online (Sandbox Code Playgroud)
<p>background should be green</p>Run Code Online (Sandbox Code Playgroud)
删除"使用严格",它的工作原理.
这是Chrome和Safari中的错误还是Firefox中的错误?MDN表示设置style有效.
如果我创建一个带有2个子项和列流的flexbox,并将第二个子项设置为第二个子项,flex-grow 1则展开以填充flexbox.这有效
(ps:不想用safari支持来混淆这个例子,所以使用Chrome或Firefox)
* {
box-sizing: border-box;
}
html, body {
margin: 0;
width: 100%;
height: 100%;
color: white;
}
#outer {
display: flex;
flex-flow: column;
height: 100%;
}
#top {
background-color: red;
}
#bottom {
background-color: blue;
flex: 1 0 auto;
}Run Code Online (Sandbox Code Playgroud)
<div id="outer">
<div id="top">top</div>
<div id="bottom">bottom (blue)</div>
</div>
Run Code Online (Sandbox Code Playgroud)
但是,如果我然后将一个孩子#inside放在里面#bottom并将其高度设置为100%,即使Flexbox已拉伸,它也不会增加其高度以匹配#bottom.
添加了CSS
#inside {
background-color: green;
height: 100%;
}
Run Code Online (Sandbox Code Playgroud)
HTML
<div id="outer">
<div id="top">top</div>
<div id="bottom">
<div id="inside">inside</div> <!- added -> …Run Code Online (Sandbox Code Playgroud) 根据node.js文档,节点在32位版本上具有512meg限制,在64位版本上具有1.4gig限制.Chrome AFAICT的限制类似.(+/- 25%)
那么,为什么当代码永远不会使用超过424美分的内存时,这段代码会耗尽内存?
这是代码(代码是无意义的.这个问题不是代码在做什么,而是关于代码失败的原因).
var lookup = 'superCaliFragilisticExpialidosiousThispartdoesnotrealllymattersd';
function encode (num) {
return lookup[num];
}
function makeString(uint8) {
var output = '';
for (var i = 0, length = uint8.length; i < length; i += 3) {
var temp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]);
output += encode(temp >> 18 & 0x3F) + encode(temp >> 12 & 0x3F) + encode(temp >> 6 & 0x3F) + encode(temp & 0x3F);
} …Run Code Online (Sandbox Code Playgroud) 这个问题的标题可能有点含糊,但我不知道如何用一句话来表达。
基本上我遇到了这种情况:场景中有一个透视相机和一个网格。网格不以轴的原点为中心。
相机直接指向这个对象的中心,它的位置(我的意思是 Three.js 相机对象的“位置”属性)是相对于对象中心的位置,而不是原点;所以它在另一个坐标系中工作。
我的问题是:如何获得相机的位置,而不是相对于对象中心,而是相对于“全局”坐标系的原点?
澄清一下,情况是这样的。在此图像中,您可以看到位置远离坐标系原点的手部网格。相机直接指向手的中心(所以从相机的角度来看的原点是手的中心),如果我打印它的位置,它会给我这些值:x:-53.46980763626004;y:-2.7201492246619283;z:-9.814480359970839 而实际上我想要相对于坐标系原点的位置(因此在这种情况下,值会不同;例如,y 值将为正)。
更新: 我尝试了@leota 的建议,所以我以这种方式使用了 localToWorld 方法:
var camera = scene.getCamera();
var viewPos = camera.position;
var newView = new THREE.Vector3();
newView.copy(viewPos);
camera.localToWorld(newView);
Run Code Online (Sandbox Code Playgroud)
我用这个网格做了一个实验。正如你所看到的,这个网格也没有以原点为中心(你可以看到左下角的轴)。如果我打印相机位置的正常值(因此,相对于网格的中心),它会给我以下结果:x: 0; y:0;z: 15
如果现在我在上面的代码之后打印结果值,结果是:x: 0; y:0;z: 30
这是错误的,因为您可以看到图像中的相机位置的 x 和 y 值明显不同于 0(而 z = 30 可能是真的,据我所知)。
例如,如果我旋转相机,使其非常靠近原点,就像这样(在图像中相机就在原点后面,因此它在世界坐标中的位置应该为 x、y、z 的负值),坐标关于物体的中心是:
x:-4.674180744175711;y:-4.8370441591630255;z:-4.877951155147168
而在上面的代码之后,它们变成了:
x:3.6176076166961373;y:-4.98753160894295;z:-4.365141278155379
y 和 z 值甚至可能一目了然,但 x 的正值告诉我这是完全错误的,我不知道为什么。
我将继续寻找解决方案,但这可能是朝着正确方向迈出的一步。不过,任何更多的建议表示赞赏!
更新 2:
找到了解决办法。@leota 说的是正确的,这确实是您获得相机绝对坐标的方式。不过,就我而言,我终于发现项目代码中隐藏了一行代码,该代码根据某些规则(与项目相关)缩放所有内容。因此,我的解决方案是按原样获取相机位置,然后根据该规则将其缩小。
由于@leota 的答案确实是原始问题的解决方案,因此我接受它作为正确的答案
概括:
我正在尝试使用 React 制作博客,但似乎在设置和更新文本字段时遇到了障碍。我有来自数据库的博客文本和用户名,并希望在文本窗口中为给定用户设置博客文本。然后当用户键入时,我也想更新该文本。
试图:
如果我设置我的 textarea value={this.props.name}它将正确设置该值但不会更新。如果我将它设置为更新,{this.state.value}那么它开始时为空白,但会正确更新。我可以找到有关如何设置默认值或更新值的示例。我无法弄清楚如何做到这两点。先感谢您。
应用程序内的 ClickScreen React 组件调用
<ClickScreen
setClicks={this.setClicks}
setUsername={this.setUsername}
setBlog={this.setBlog}
onLogout={this.onLogout}
counter={this.state.counter}
blogtext={this.state.blogtext}
username={this.state.username}
/>
Run Code Online (Sandbox Code Playgroud)
在 ClickScreen 页面中的 BlogEntry React 组件调用:
<EditBlog name={this.props.blogtext} username={this.props.username} ></EditBlog>
Run Code Online (Sandbox Code Playgroud)
EditBlog 反应组件
// Allows a user to edit a blog entry.
var EditBlog = React.createClass({
displayName: 'Editor',
propTypes: {
name: React.PropTypes.string.isRequired
},
getInitialState: function() {
console.log("getInitialState value: " + this.props.name);
return {
value: this.props.name,
};
},
componentDidMount: function() {
this.setState({value: this.props.name});
},
handleChange: function(event) { …Run Code Online (Sandbox Code Playgroud) 有什么方法可以在 Mapbox GL 内画线?例如,我需要绘制一些连接我的标记的线(直线或曲线)。使用 Mapbox,我可以使用 Arc.js,但我不知道 Mapbox GL 是否已经存在一些解决方案。
我找到了 mapbox-gl-draw ( https://bl.ocks.org/danswick/083a0b48c2cc78c4a08d ) 但它似乎只是一个在地图中使用的工具......但我没有看到任何用于使用 javascript 绘制的 API。
我还发现了这个 Tesspathy ( http://gree.github.io/tesspathy/ ),也许一种解决方案是使用它在地图的上下文中绘制。
你怎么认为?什么是最好的方法?谢谢!
很久以前我学会了填充未使用/未初始化的内存,0xDEADBEEF以便在调试器或崩溃报告中,如果我看到这个值,我知道我正在看未初始化的内存.我从iOS使用的崩溃报告中看到了0xBBADBEEF.
人们使用了哪些其他创造性价值观?任何特定的价值观都有任何特定的好处吗?
变成单词的价值观最明显的好处是,至少在大多数人中,如果单词是用他们的语言,那么他们很容易突出,因为某些严格的数值不太可能突出.
但是,也许有其他理由选择数字?例如,奇数可能会使处理器(68000)崩溃,例如在某些内存访问时崩溃,因此最好选择0x0BADBEEF一下0xBADBEEF0.他们的任何其他值(可能是处理器特定的)是否具有用于未初始化内存的具体好处?