弄了很久连抄别人 Ruby 的 solver 都做不到… 看来我或许要被卡死了吧…… (咸鱼) 😭
之前想了一个可以用于扒谱的程序:
首先用键盘指定音高, backspace=remove last
Enter=replay
下个流程开始计时弹奏,a=add with duration, s=new tone, backspace=time -5s; filter 出
应该可以得到一个音符 (offset+duration+tone) 序列
之前想了一个可以用于扒谱的程序:
首先用键盘指定音高, backspace=remove last
Enter=replay
下个流程开始计时弹奏,a=add with duration, s=new tone, backspace=time -5s; filter 出
it >= newTime 的音符全删掉(要 first, last 还是 filter ,还有单调顺序居然都卡了我好久……)应该可以得到一个音符 (offset+duration+tone) 序列
#YouTube https://duckduckgo.com/?t=ffab&q=youtube-dl+sound+only&ia=qa&iax=qa
直接下载声音可以用
直接下载声音可以用
youtube-dl -F 选择格式,然后 -f 下载Forwarded from dnaugsuz
🤔 greedy 的意思就是“尽可能多地匹配”,和 lambda lifting 里那个 "lifting" 一样,一词多用。
这个… 我没有引用 regex 里的那个名词,它是另一个名词。
这个… 我没有引用 regex 里的那个名词,它是另一个名词。
Telegram
duangsuse::Echo
#PLT #Python #parsing 快看
http://news.sciencenet.cn/htmlnews/2020/1/434911.shtm
Lark - a modern parsing library for Python
PLY (Python Lex-Yacc)
https://en.wikipedia.org/wiki/Lambda_lifting
一句话总结:把不支持 (相对的)local function 化为 global function,可能需要把 free var…
http://news.sciencenet.cn/htmlnews/2020/1/434911.shtm
Lark - a modern parsing library for Python
PLY (Python Lex-Yacc)
https://en.wikipedia.org/wiki/Lambda_lifting
一句话总结:把不支持 (相对的)local function 化为 global function,可能需要把 free var…
Forwarded from dnaugsuz
之前也有说,ParserKt 的目标并不是取代 Regex 或者做 NLP 之类非常复杂的解析器(那几乎不能算单纯的解析器了,何况 Regex groups 对副作用利用比较强,对 PKT 而言用 AlsoDo 和 StatedFeed 可以做到,但不推荐)
ParserKt 的目标是为各种相对规范的编程语言提供模式匹配 read/show (back) 的能力,也提供类似代码高亮这种常见兼容用途
我不会试着让它包容万物,它只需要保持简单的核心就好,包括现在解析一些复杂语法的东西 (NumUnit 和自动 Number 运算的类型转换、Layout 缩排语法的解析)都是作为 parserkt-ext 另作打包的,就是为了尽可能降低学习开销
ParserKt 的目标是为各种相对规范的编程语言提供模式匹配 read/show (back) 的能力,也提供类似代码高亮这种常见兼容用途
我不会试着让它包容万物,它只需要保持简单的核心就好,包括现在解析一些复杂语法的东西 (NumUnit 和自动 Number 运算的类型转换、Layout 缩排语法的解析)都是作为 parserkt-ext 另作打包的,就是为了尽可能降低学习开销
Forwarded from dnaugsuz
不过,ParserKt 不能用来写命令行解析器,这个非常GG (主要是因为我开始觉得可以写,现在就有点郁闷)
Python 里用
一个参数大概就是
ParserKt 理论上可以用来做命令行解析器的核心(如果封一层来构造
Python 里用
import argparse 非常容易就可以定义一个解析器,我也写过命令行参数辅助解析一个参数大概就是
add_argument(prefix, metavar, nargs, type, default, action, help) 这几个参数,action 可以 store_true 来实现 flag 什么的(当然前提肯定是动态类型)ParserKt 理论上可以用来做命令行解析器的核心(如果封一层来构造
Contextual<String, Pattern<String, T>> 的话),但没法直接对应到 Pattern 对象,而且一旦有 nargs="+" 的情况,就十分不好处理为不可变数据了……Forwarded from dnaugsuz
其实这个
已经有 n 个就不必多解析了,比
while(true) 也可以重写为while (greedy || count < bounds.last) 的,早就该改改。已经有 n 个就不必多解析了,比
while(true) 要结构化一些Forwarded from dnaugsuz
不对,刚刚分析了一下控制流
区别在于第一次,前者至少执行一遍,相当
while (true) {
depend++
if (!p) break;
}
确有别于while (p) {
depend++
} 区别在于第一次,前者至少执行一遍,相当
do {
depend++
} while (p)Forwarded from dnaugsuz
这么说
bounds = 0..0 的情况其实我的程序不是最佳实践!没有利用循环操作的兼容性…… 也没有 require 过 paramForwarded from dnaugsuz
你说是
🤔我觉得没影响,你要拿 String 那你就拿 String。
(html!!) 还是 body?.string() ?🤔我觉得没影响,你要拿 String 那你就拿 String。
Forwarded from dnaugsuz
如果你要做,还有更好的方法吗……
要这么写就别担心太多
为什么 html 是 var 啊…… 你应该写
为什么你要写
要这么写就别担心太多
为什么 html 是 var 啊…… 你应该写
val html: String = client.get(LOGIN_API).body?.string() ?: throw Errors.NetError() 不是么…为什么你要写
html!! 啊,而且如果你只 parse(resp.string()) 的话调用 string() 也没问题啊