- プログラミングのお題スレ Part6©2ch.net
692 :デフォルトの名無しさん[sage]:2015/03/13(金) 15:35:01.56 ID:hdb/BW20 - >>674 javascript ( ES6 アロー関数使用 )
var i = 0, xs = "" var alt = (l, r) => () => { var i2 = i return l() || (i = i2, r()) } var many = p => () => { var i2 = i return (!p()) ? (i = i2, true) : many(p)() } var such = pred => () => (i < xs.length && pred(xs.charAt(i)) && (i++ , true)) var sym = s => () => (xs.indexOf(s, i) === i) && (i += s.length, true) var join = (l, r) => () => (l() && r()) var many1 = p => join(p, many(p)) var between = (open, close, p) => join(join(sym(open), p), sym(close)) var text = many1(such(c => c !== "<" && c !== ">" && c !== "/")) var b = between("<b>", "</b>", many(text)) var a = between("<a>", "</a>", many(alt(b, text))) var data = many1(alt(alt(a, b), text)) var check = src => (xs = src, i = 0, console.log(data() && i === src.length ? 1 : 0)) check("<a>ruby<b>php</b>python</a><a><b></b></a><a></a>") // 1 check("<a>ruby<b>php</b>python</a><a></b></a><a></a>") // 0 check("<a>ruby<b>php</b>python</a><a><b></a><a></a>") // 0 check("<a>ruby<b>php</b>python</a><a><b></b></a><a>") // 0 check("vvvc<a>ruby<b>php</b>python</a><a><b></b></a><a></a>") // 1
|
|