我正在制作一个生成3D迷宫的程序,并且在创建算法时遇到了一些麻烦.为了便于互动,它将是一个矩形棱柱,有一个入口和一个出口.
问题是算法的实际编码:我认为最好的方法是调用一个类MazeBlock,它有六个布尔状态(向上,向下,向左,向右,向内,向外),表示迷宫的方向可以去下一个.使用MazeBlocks 的3D数组,我想填充迷宫,每次迭代填充检查块在左侧,右侧,上方,下方,前方和后方,以查看是否有任何开口到哪一侧附上.
我已经有一个可以制作边缘,将随机开放的槽放在迷宫内部.所有我遇到的麻烦都是实际内部,确保迷宫有一个入口,一个出口和一个解决方案来穿越它(我曾经在弹出书中解决了一个"困难"的3D迷宫,只需要在预定的几步之后方向.
正如我所说,我认为我对算法有基本的想法,但我不知道如何编码.有人可以为此提出一个Java算法来相对快速地完成任务吗?
解决方案不得使用外部库.
为什么我应该在内部应用程序中使用HTML5语义Web元素?语义元素似乎有利于搜索引擎检测哪些元素特定于导航,文章等.如果我在仅基于客户端的HTML应用程序中使用这些元素,我将获得什么?
我已经为客户端创建了一个搜索页面,但在这种情况下,实际的搜索页面位于一个iframe用户面前,该用户会看到一个装饰外壳iframe,它将其URL参数传递给它iframe,然后解释它们并执行搜索.这是我无法改变的.它还向我提出了一个独特的问题,即如果用户键入搜索页面的搜索栏以执行其他搜索,iframe将刷新,但shell页面不会.这意味着URL现在不再与当前搜索相关.如何在不离开此shell页面的情况下更改地址栏中的URL?这个系统的重点iframe在于刷新的时间比整个页面少,所以刷新整个页面会适得其反.
对于只想要代码片段的人来说,这是我对Ian解决方案的最终实现:
<?PHP
// ...
function buildTitleChanger($search) {
?>
window.top.history.pushState({search : "<?PHP echo str_replace("\"", "\\\"", $search); ?>"}, document.title, window.location.search);
window.top.document.title = document.title;<?PHP
}
// ...
?>
Run Code Online (Sandbox Code Playgroud)
这个内联PHP有点脏,但它在100%的时间都有效:3
我正在研究谷歌的网络字体是如何工作的,发现当一个人放置类似的东西时
@include url('https://fonts.googleapis.com/css?family=Archivo+Narrow:400,400italic,700,700italic');
Run Code Online (Sandbox Code Playgroud)
在样式表中,CSS 解释器会获取给定 URL 中的内容:
/* latin-ext */
@font-face {
font-family: 'Archivo Narrow';
font-style: normal;
font-weight: 400;
src: local('Archivo Narrow Regular'), local('ArchivoNarrow-Regular'), url(https://fonts.gstatic.com/s/archivonarrow/v5/DsLzC9scoPnrGiwYYMQXpj3sPXe5Q4a3bCZMR7ryN4o.woff2) format('woff2');
unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Archivo Narrow';
font-style: normal;
font-weight: 400;
src: local('Archivo Narrow Regular'), local('ArchivoNarrow-Regular'), url(https://fonts.gstatic.com/s/archivonarrow/v5/DsLzC9scoPnrGiwYYMQXpkU-p1xzoRgkupcXIqgYFBc.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000;
}
/* latin-ext */
@font-face {
font-family: 'Archivo Narrow';
font-style: normal;
font-weight: …Run Code Online (Sandbox Code Playgroud) 我经常发现自己喜欢在structs、enums 和protocols 的初始化器中如何编写类似self = someValue. 当我有一些预定义值或克隆现有值时,这非常有用。
然而,这个语法对 es 不起作用class。我也实在想不通为什么。
无法赋值:“self”是不可变的
如果关注的是双重初始化,Swift 编译器知道我是否、何时以及在何处调用指定super或self初始化器,因此它知道我是否已完成初始化该实例。如果担心的是我还没有调用指定的初始化程序,那么应该没问题,因为我只是让这个实例成为对另一个实例的引用(2 vars 1 指针)。如果担心的是并发访问可能导致self已经被初始化...那么这是无意义的,因为我们在初始化器中,而Swift 初始化器不易受此影响。
毕竟我发现我可以通过一次性协议来解决这个问题:
class MyClass {
let content: String
init(content: String) {
self.content = content
}
convenience init(from1 other: MyClass) {
self = other // Cannot assign to value: 'self' is immutable
}
}
protocol MyProto {}
extension MyClass: MyProto {}
extension MyProto {
init(from2 other: Self) { …Run Code Online (Sandbox Code Playgroud) initialization initializer pass-by-reference pass-by-value swift
我正在从 Swift 调用一些旧的 Objective-C 代码,它经常会抛出这个错误,即使看起来没有出错:
do {
try objCObject.someMethod()
}
catch {
print(error)
// Trying to handle the error here
}
Run Code Online (Sandbox Code Playgroud)
该方法的 Objective-C 签名如下所示:
- (BOOL) someMethodWithError: (NSError **) outError;
Run Code Online (Sandbox Code Playgroud)
在内部放置一个断点,catch我可以使用 LLDB 控制台看到这一点。
(lldb) po error
Foundation._GenericObjCError.nilError
(lldb) po error as NSError
Error Domain=Foundation._GenericObjCError Code=0 "(null)"
Run Code Online (Sandbox Code Playgroud)
这里发生了什么,我该如何处理?当我尝试在 Swift 中为此编写一个特殊案例时,我得到了这个:
/Path/To/My Code.swift:200:27: error: module 'Foundation' has no member named '_GenericObjCError'
catch Foundation._GenericObjCError.nilError {
^~~~~~~~~~ ~~~~~~~~~~~~~~~~~
Run Code Online (Sandbox Code Playgroud) 我最近安装了 macOS 10.15 Catalina 的开发者测试版,它默认使用 ZSH 而不是 BASH。
我已time作为二进制文件安装在 中/usr/bin/time,并使用它来计时我的一些脚本。然而,ZSH 将此作为内置命令。我的问题是我通常用time -p我喜欢的方式格式化其输出,但这在 ZSH 上似乎不可能。
根据man time:
Run Code Online (Sandbox Code Playgroud)-p The output is formatted as specified by IEEE Std 1003.2-1992 (``POSIX.2'').
这似乎不适用于 ZSH 的内置,并且 ZSH 似乎没有使用我安装的time二进制文件:
-p The output is formatted as specified by IEEE Std 1003.2-1992 (``POSIX.2'').
Run Code Online (Sandbox Code Playgroud)
is-mbp-bleggiero% which time
time: shell reserved word
is-mbp-bleggiero% time echo hello; echo $?
hello
0
is-mbp-bleggiero% time -p echo hello; echo $? …Run Code Online (Sandbox Code Playgroud) 我有一个简单的 WKWebView 应用程序,它在 macOS 上打开一个网站,在 AppKit 中使用 SwiftUI。但是,应用程序窗口没有标题 - 我说的是顶行(用红色 X 关闭它,等等。
我如何在那里设置标题?我试过查看 Main.Storyboard 但没有看到任何类似于“标题段”的内容。
我正在尝试用Java编写一个可以读取,编译和运行brainfuck源文件的程序(.bf).我已经让它与维基百科的Hello World示例一起工作得很好,但它打破了ROT13的例子(声称]它在实际匹配时达到了无与伦比的效果).
实际的解析器代码都写在一个.JAVA文件中,但它的核心(实际的brainfuck解析器和运行代码)在下面的方法中,doNow(char).以下是变量的含义:cells是要运行的字符数组(char[]); pointer是指向array(short)中的地址的Java变通方法; PC是程序计数器(int),并且loopStack是对应于[s(基本上是a short[])的地址堆栈.这些不是问题,因为它们在Hello World测试中工作得很好.采取输入的方法自动过滤掉多余的字符,我确认它可以从调试检查中完美地工作.
为什么这个解析器不运行ROT 13代码?
我的解析器,用Java编写
/** The array of data */
private byte[] cells = new byte[Short.MAX_VALUE];
/** The pointer that is manipulated by the user or program */
private short pointer = 0;
/** The program counter, to run compiled programs */
private int PC = 0;
/** …Run Code Online (Sandbox Code Playgroud) java ×3
swift ×2
3d ×1
algorithm ×1
appkit ×1
brainfuck ×1
compression ×1
creation ×1
css ×1
html ×1
html5 ×1
iframe ×1
initializer ×1
javascript ×1
jump-list ×1
macos ×1
maze ×1
objective-c ×1
parsing ×1
performance ×1
semantics ×1
swiftui ×1
timing ×1
windows-7 ×1
wkwebview ×1
xcode ×1
zsh ×1