首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以特定方式对clojure中的字符串进行分区

以特定方式对clojure中的字符串进行分区
EN

Stack Overflow用户
提问于 2018-03-08 00:26:18
回答 2查看 187关注 0票数 0

我正在编写一个代码,它接受保龄球得分(以10帧为单位),并对其进行评估。例如,得分为248的XXXXX6/XX7/XX5或得分为27的62--43---2----X--就是字符串。

我的第一个想法是尝试拆分字符串,以便将每个帧分组在一起,并以此方式单独删除;62--43---2----X-- --> ((6 2) (--) (4 3) (--) (2 -)... (X) (--))

从那里,评估分数会更容易。但是我找不到使用partition或partition-by的方法。有人能帮上忙吗?

EN

回答 2

Stack Overflow用户

发布于 2018-03-08 02:40:31

您可能正在寻找的是re-seq,它会将一个字符串拆分成与正则表达式匹配的字符串序列。在您的情况下,尝试使用(re-seq #"X|\d\d|\d/|--|-\d|\d-" frames-str),它将匹配以下内容之一:

  • "X"
  • A数字对后跟slash
  • "--"
  • A "-“和数字(按任意顺序)的数字

对于您的示例:

代码语言:javascript
复制
"XXXXX6/XX7/XX5"    -> ("X" "X" "X" "X" "X" "6/" "X" "X" "7/" "X" "X")
"62--43---2----X--" -> ("62" "--" "43" "--" "-2" "--" "--" "X" "--")
票数 1
EN

Stack Overflow用户

发布于 2018-03-09 23:38:20

instaparse编写保龄球得分语法/解析器的借口如何?

代码语言:javascript
复制
(def bowl-score-parser
  (insta/parser
    "S = F F F F F F F F F 10TH
     F = OPEN | CLOSED
     OPEN = ROLL ROLL
     CLOSED = STRIKE | SPARE
     10TH = OPEN |
            SPARE (STRIKE | ROLL) |
            STRIKE (SPARE | ROLL ROLL) |
            STRIKE STRIKE (STRIKE | ROLL)
     STRIKE = 'X'
     SPARE = ROLL '/'
     ROLL = PINS | MISS
     PINS = #'[1-9]'
     MISS = '-'"))

这将解析保龄球得分的10帧,并对第10帧使用特殊规则。

前九帧中的每一帧都是OPEN (针脚保持不动)或CLOSED (所有针脚都是两个ROLL,这两个针脚要么是多个针脚,要么是未命中。CLOSED要么是STRIKE,要么是SPARE.

  • 10TH描述了第十帧的可能状态,这令人惊讶地感到困惑!我可能弄错了。

以下是测试用例的解析器输出:

代码语言:javascript
复制
(bowling-score-parser "XXXXX6/XX7/XX5")
=>
[:S
 [:F [:CLOSED [:STRIKE "X"]]]
 [:F [:CLOSED [:STRIKE "X"]]]
 [:F [:CLOSED [:STRIKE "X"]]]
 [:F [:CLOSED [:STRIKE "X"]]]
 [:F [:CLOSED [:STRIKE "X"]]]
 [:F [:CLOSED [:SPARE [:ROLL [:PINS "6"]] "/"]]]
 [:F [:CLOSED [:STRIKE "X"]]]
 [:F [:CLOSED [:STRIKE "X"]]]
 [:F [:CLOSED [:SPARE [:ROLL [:PINS "7"]] "/"]]]
 [:10TH [:STRIKE "X"] [:STRIKE "X"] [:ROLL [:PINS "5"]]]]

注意:这个解析器允许一个帧中的总管脚数无效,但您可以制定更具体的语法/解析器或在解析后处理这种情况。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49156769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档