-
Notifications
You must be signed in to change notification settings - Fork 0
/
day9-2.p
70 lines (62 loc) · 17.1 KB
/
day9-2.p
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
/*
--- Part Two ---
Now, you're ready to remove the garbage.
To prove you've removed it, you need to count all of the characters within the garbage. The leading and trailing < and > don't count, nor do any canceled characters or the ! doing the canceling.
<>, 0 characters.
<random characters>, 17 characters.
<<<<>, 3 characters.
<{!>}>, 2 characters.
<!!>, 0 characters.
<!!!>>, 0 characters.
<{o"i!a,<{i<a>, 10 characters.
How many non-canceled characters are within the garbage in your puzzle input?
*/
DEFINE VARIABLE cInput AS CHARACTER NO-UNDO.
/* cInput = "~{~{<a!>},~{<a!>},~{<a!>},~{<ab>}}". */
/* cInput = "~{~{~{~{~{},~{<>,<!!u'!!!>,,}!>~"!!!!!>},<>}}}}}". */
cInput = "~{~{~{~{~{},~{<>,<!!u'!!!>,,}!>~"!!!!!>},<>}}},~{~{~{~{~{~{~{<!>,<~"}!i~"!>},<a!!,<!>},<~{oo<~{!!~"!>!a>},<~"!!''!>},<!!!>!,ie!>,!!!>>}},~{~{}},~{~{~{<!>},<~{e!>,>,<!!e~{,o}o~"!>!>,<~"~"~{uu~{!!'a>},<}a!!!!>},~{~{<,,ua~"o!>!>,<!!a,>}},~{~{}}}},~{~{},~{<!a~{}<!>,<!>,<!!u>},~{~{},<i,ai'}!>},<!!!!!}e''!!!!~{>}},~{~{~{<!>!!,i!>},<u!!!>o~",<!!~{a!!u'e!>},<,!>},<>},<>},~{~{<!>},<!>}}!!!>a!!u!!'!>,<aa!!,e>},~{<!o!>},<}'u!!ii!>!!!>!!!>~{<}!!!>!!<i!!}!!!>>}}}},~{~{~{~{~{<i!~"!!!!!>!}!!!>!>,<a~"!>},<,!!!!i~{>},<<!!!><!!!>'!!!>},<e!>e,!<~{!>,<!a>},~{<!a'i!>,<!'!!!>!>},<<i~">,<~{o!uu!>},<~{>},~{~{~{~{<ii!>~"~{!>},<>},<o!>},<e!>!!!,>}},~{~{}},~{<!u!>},<<u!!a!>ae,'u!!a!!uu<>,~{}}}},~{~{~{~{<!>},<iu!>},<~"o!>},<<!!~">},~{~{<e}!ioueoo!!!}<~"}!>'!!~">}}},~{~{~{~{~{<!!,,uuei!>~"e>,<i!<!>!>o,!>!!!>!!!>'>},~{~{}},~{~{~{<>},~{<,,>}}}},~{<e!,!,u!!!u!>},<u~"i<!!}ii!ao>,~{<uo>,~{<>}}}}},~{},~{~{~{<,!u}o!>,<io!!!>a~{!!a,!>},<!>},<!!!>o!!!>o>}}}},~{~{<i!euo!!a!>,<<<,}!!!>!'~{>}}},~{~{~{<!>o!>!!i}!!!>u!!!>!!<!!!!~"e},>}},~{~{~{<}<!!~"a!>},<!>},<!!}<!<>},~{~{<~"!>},<!!!>!>,u!!!>!!!>!>},<i}'~{a!!,!!,e>}}},~{}},~{~{~{~{~{<e}ai<!a<>,~{~{<~"!>>},~{<!!~"!!!,!!!!!>,<!!!!<!>e!!!>u!!!>!iu}>}}},~{}},~{~{<~",!!!>a!!}!'a!!!>!!o!><!!u''!>},<>},~{~{<!>,<<!>i!>,<!>},<a!!!>~{~"<>}}},~{~{<e!a<,},>},~{~{~{~{<<>}},~{},~{~{},~{<!!!!!>'!!>,<o<<,!!!>},<u!!!>!!!o!~{>},~{~{~{<oiu}eae~"!u!!!>!!!!>},~{~{<'o!>,<}u!!~"!>>}}},~{~{},~{~{<<o>,~{<!>!>,!!i!!oi!>,a!>~"!>},<,>}},~{<o!>,<!e}>}}},~{~{~{~{<!~{u~{~{!!a>},<!!!>!!~{u!!>},~{~{},<!!o~",~{ui~"eea'i!!!!e>}},<}!!!>auo!>!!!>},<!~{!a'u,!!o>}}}},~{},~{<!>!!!!<e!!!>,>,~{~{<!>,iia!!!>!>,<!!!>!!,!>,}u<!a>}}}}}},~{}}}},~{~{},~{~{<!>,<e!>,<!>!}!>~"!>},<!!!>'!!o!!'>}},~{~{~{~{},<!>,<!>,<i~"a,!!o!!a!>~"!!i~{u>},~{~{~{~{<i'i~{u!!!!!>!>,<!!!>io!!!>!>,<aiu!,}>}},~{<!!!!,!~{!!,<!!!>,~"u!i',o!~">,~{<'~"i!>,<e}!!!>!!!>,i}~"e!!!!,!!!>ia'~">}}}},~{~{<!!!>a!!!>~"a,oi!!'!!!>!>},<i>}}},~{~{},~{<,,,}~"!iu!>,<!~{o!!u!>},<!eoi>}},~{~{~{<ai'~"i'!!!>a}~"!!e<!!!!oia~{o<>},<!i!>'}!>,<a!>,<!>!!!!!}!}}!>~"io!>,<>},<!!!>e<}o~"~">}},~{}}}},~{~{~{~{~{<a!>},<!><u!>!i!!>},~{<~"~">}},~{~{<e!u}!<!!!!!>},<!>},<!!!>!>},<<o!e>}},~{<e!}u!!<<!!i,>}},~{~{<!>},<'aa!!>,~{<>}},~{~{},<~"!>!!!>!!ou!!!!!>>},~{<!!a!!!!!!i!>},<~"!>!,!<!!!>u,!>ai~"!>},<'!!>,~{~{~{<u!!!!'~"o~"!~{>},~{}}}}},~{~{~{},~{<!>,<<!>,<}'!!~{'~{!a,>}}}},~{~{<<i>},~{~{},~{}},~{<!>,<!!!e!!<!aa>,<a'<>}},~{~{~{<!!'>},~{<o}'!!!>,!>i~{e>,<<!u}<<<!!!!,<>}},~{~{},~{<!!oo!!!!!>!!!>!>},<!>~{i!<!!~"!>,<}io!>},<!!!>>,<~"~"~"oe~">}},~{}}},~{~{~{~{}},~{~{<'>},<,~{ua>}},~{~{<!>},<!!o!!o!>,<!>},<,!a<!>},<ee}~"!!!>},<!>},<o!~{<>,~{}}},~{~{<!!>,<'!~{>},~{<'!>,<!!!>!>,<}~{o!!!>iu!>},<'}!!i!!!>>,~{<!!'!>,<>}},~{~{~{},~{}},~{~{<~",!i>,<!!o}u<>}},~{~{~{~{~{<!>},<eo!!~"e~{ii!<~{!>!!!>,<>}},<!!!>},<!!<!!!>>}}}}}}},~{~{~{~{~{~{~{}}},~{},~{<~{!'>,<!!!>}e>}},~{<e}>,<!!!eoo!e'<!!e!!!!!>!!}o~{o!!,'eia>}},~{~{~{<!>,<ee>}},~{<!!!!!>e!>!!!>},<>,~{~{<u!!!>}o<>}}},~{~{<<<<!>,<'<o'~{!!!><!>},<,!u>},~{~{},~{<}>}},~{~{<~{!!~"~",>}}}}},~{~{~{~{~{}},~{<a!!!>~{!!ao~"!><~{u!~{!!!>e!>,<!!!>},<!!!!}e>},~{~{<!!u~"eu}'ei<!!!!}ue'!>,<<!!!>!!>},<i!>},<<o!>!>,<!!!>},<!>>}},~{~{~{~{~{<!!!>~"!!!!!!!!>},<!!!>'!!!!~{!>,<!>i!>},<!>,<!>aeo!>,<>}},~{<~{,~{o!><~{o!><!>e'''!!u!!i,!,>}},~{<!>,<!>},<!!!!}!>,<!>>}},~{~{~{<!>},<!o~{,!!ao!!u!!!>},<>}},~{~{<~"}!>,<<!!!>!i!>},<i!>i>},~{}},~{~{~{~{<~"e!!!>!>,<i!>,<o~"'!>},<!>,<~{!!!>},<}!!,'!<!>},<>}},~{~{<e!>ai!>},<~"'ia!!!>o!>,<>}},~{<!!i!>,<u~">}},~{~{<>},<a!<a!!!>!,~",<,eu>}}}},~{~{~{<<<!,~"o<,'!'o!>},<!>>},~{<!!,<'oi!o!>},<ae<a~"!>~{a!>},<!!~{}>,<!!oouo~{!!>}},~{<}!!!>io!eoa'o~"!!o!!i,u<~{>}},~{~{~{<}!>,<auiu'i}>}},~{<!!!>~{i!!i!>!!!>!ue~"i!!e>,~{}}}},~{~{~{~{~{},~{<'~{>}},<ee!!!>!>o!>,<a!a!~{a>},~{~{<!!!>},<>},~{<,!>!>},<!!~"!!!>},<!aa!!!>,<!!<u~">,<!>!<u'e!!!>!!!>u!!!>,<!!!>e}<}i<!!!>>}},~{~{~{~{<~{u~{!!}ai'!>},<!!>}},~{~{<<~"e}!!!>'!>,<~{,!!!!!>~"<!>,<!>},<!!<>}}}}},~{~{~{<!!i!!}!>u!uo'u!!a!>~{!>,<>}}}},~{~{~{~{~{<u!!<,!!!>e}!!!!!!i!>>},<!!!>~{o>}}},~{~{~{<'!!!>'oe,!~"!!uo'<!>i!!!>},<!'i~"i~">,~{~{<,>}}},~{~{<>},<!!!>~{!!!!!!!>}iuo!!a}e!>,<i!>},<u>}},~{~{~{~{}}},~{<oa~"~"o!!!!!>,<<!>,<''!>,<}!!~"i~{<>,<}a<!>,<<~{i,i!>,<u!>>},~{~{~{<~{!iie<!>!!!!>},~{<!o'!,~"'a'}o~{uo!~"~"a<!!!>!!!>!e>,~{<!!!>!!!>o<,!>},<!>},<a>}}}}},~{~{~{~{~{~{<<!>},<!>,<a<o>}}}}},~{~{~{~{~{<!!!>~{e!>,<!>},<!~{!~"o!!~{>},<!>,<!!>},~{}},~{<~{'!!!><ee}!!!!!!>,<}e>}},~{}},~{~{~{<!>},<!!!>,!>!>},<<!>,<!!}e!!!>},<>},~{~{<<!o!>,<!>!>},<o!>,<!!oia!'!>!!~"!uo>},<!>~{o!!!>!o!!}!>},<!>},<<o!!i!!!>~"!>!>},<!i}>}},~{~{<},~"u}}!!!>,<iu!!'>},<>},~{~{},<!!>}}},~{~{<!>,<!>!!!>},<!!ae>,<<!}~"e!>,<!ea~"!!}!!ea!>~{>},~{~{~{}},~{~{<'!>},<~{e!!!>!>},<!!!!!>ui'!!!!!>},<u'!>,<!o!!!>u<>}},~{~{<!>},<a!!!>~{>},~{<!!io>}}},~{<!>,<i}!>!>},<}}u!>},<e,e>}}}}},~{~{~{~{~{<!!!!!>},<uu!>e<!!!o>},~{<!!~{a!>,'!>},<,!>!!a>}},~{~{},<!ii~"}!e!>,<e!>},<'!>ei!>,<~{!!~"!>!>,<'<>},~{<o!!,a}eu'>,~{<e!i~{io!!!>!>,<}!>},<!}!!!>!>>}}},~{~{~{~{<~"!>,<'o!>},<}~"!}!!!eu<u>}},~{<!!!>!i~"<eu~"'<!>},<!>,<<!>>}}},~{~{~{~{<!'a<,}!>!>,<!>,<i!>>},<!>u!!!>}~{a<~",o'eu'!>!!!>u!!!!i>},~{<<!>},<!>'a!!!><!>,<~{!>},<!!!!i<a~"e>},~{~{~{<~{u},!>}!!<!!!''!<!>,<o!>~{>},<u!!!>,<<~"!>,<''!>},<>}}},~{~{<o!!!!!>},<>,<!>!!u>},~{<a}!>},<u!!!!<!>!!!>~"~"!>i>,<!>},<!>},<!>},<~{!!<!>},<}~"!!o~{a>},~{~{<'i!!!>u}a!<!>},<o,!!!>'i!>!!'>}}}}},~{~{~{~{<!>>}},~{~{~{~{~{<!>},<i!>},<!>,<ai,!!!i!!!!~{!>,<~{u'!>}>}}},~{~{},<e}uo!>,<}>},~{~{<!!o!!!>!!a!!!>!!i!!!u<~"!>,<i~"!!!!!!!>,<!!!>!!u>,~{~{<!>,<iae!>,<,!>},<au<!u!>},<u!!!>'>}}},~{~{~{~{<oe!>!>},<'!!!!~"!!!><a!,<~{i!!u!!~{u>},<i}!>~"!>},<'o>},~{<}'~"!>},<''!!!>!>~"ia~{!!!>!!<u>}},~{~{~{<!!!!!!~"'!>},<o!!!>},<>}},~{<'!!!>i!>},<!!!>!>!>},<a~"!'>}},~{<!!}}u>}},~{~{<!i,!!!>,<!!!>}!!!!,uo!>},<!>},<!!!>!!!>'<!!}!!i>}}}}}},~{~{~{<a!>},<!!!~"o,u!>},<}!>},<e,>}},~{<>},~{~{<,!>},<~"}!>},<!!!!~{}!!!>},<i!!,!!!>,<!!'<!>a},>},~{~{~{<a!!!>},e!!!!a!i!!'!!!>,<,~",!!!>}!!!>u!!!>e>}}}}}},~{~{~{~{~{<!!,i!'!>u>,~{<i!!!!!e!>},<~">}},<,ai!!!>!oi>},~{~{<'oe!!~"a,~{!>},<}ea!>!!o!!!>o>},~{}},~{<'u~"}~{>,<'o!a!!<i<e!>,!!!>~{>}}},~{~{~{<e!!!>~{!!!>!>,<~{!!!!!>~",!!'>},~{~{<!>!!!>!>,<e!>},<<oa!ei!!i!!!>!!!>},<!!u!!~{!!!>}!>,<!>>}},~{~{~{<}~{<!!!>oea!!''!>,<>}}}},~{<}!!!>,<'!>,<a!>!,!!!>o~"!i>}},~{~{~{},~{<}!>,<~{<ai~">,~{}}}}},~{~{~{~{~{~{<aiu!!!>>}},~{~{~{}},<!!!>~"!>},<!!!>},<<}!>!!!>a!!~{i<!>},<>}}}},~{~{~{<~{},'!>,<}!<}>},<a!!~"!!<~"<a>},~{~{}},~{<!!~"'!>},<!>,<!!!>}!>,<<!!!>!><!~{<e!!a!!}>}},~{~{~{~{~{}}},~{~{<o!!},~"!!!,!!!u!>},<i!!!!!!!>}ou>}}},~{~{},~{<<!>,<'!>!!!>~"!!}o<i!>!!~{a!>,<'>},~{~{<!!!!!ei!>,<!>,!>!>,<!>,ao!!<!!!!!!!!~"o!!u<i>},~{}}},~{~{~{~{<a!!<,!!euie!!!!!>,<a!>},<!!!>e!>},<i'e>},~{~{<!'iu<e}}}!>,<u!>},<~"!!!>!>,<!!e<<>},<!>,<!!~"!!~"!>},<e!>e!!e'a>}},~{}}}},~{~{~{}}}},~{~{~{~{~{~{<!>,<~{<~{''>}}}},~{~{~{<u!!uo!>,<i'o'>}}}},~{~{~{~{<ue>},<!!!>!,!i!>},<!>,<!>},<'!>!>},<!>,<!>,<e!>},<!!!>e!>},<<>},~{~{~{~{}},~{<}a!>},<ei<!>,<iu!>!>a~{!><!!o>,~{}}},~{}},~{~{}}}}}}},~{~{~{~{~{~{}},<!>,<o'}e!>'''!>,<!!~"~">},~{~{},~{<!!!>!>,!>,<'~{u!>,<o~{<o!>u!>'>}}},~{~{<!>},<!>},<,ooo!!!>!>,<'!i!>!!!!!>~{!>>}}},~{~{<!>eo'}~"!>},<,!>,<~"!>},<!>,<!>a!>,<o!>,<~">,~{}},~{~{<!!!o!!a!!!>!!~{!!a<~{!>!!!>!>}~{>,<!!a~"!!!!!>>},<i!!!>e~{<o<e,'!!u>}},~{~{~{<!>!>eo!a~"ii~{i<'!!!!!>!>,<~"!>,<e!,>,<!!<!>!!!!!>},<u,<e!>},<!>,<>},~{<>}},~{<!!oo,u!>,<u!>},<e<~"a!!!>~">,~{<}i~{a'>}}}},~{~{~{~{<~"oi>,~{~{<~{~{i!>!!!>!!!i!>'aai!>,<>}}}}},~{~{~{~{~{~{<e'!>,<!!!>,!!!>,<a!!}!>},<!>},<~"!>,<!>>,<,u}!!!>>},~{~{~{<!!!>>},~{<<!>},<ie!!~{iui!>,<,!!!>!!!>>}},~{<,}~"}!>},<!!~"~{~{!!!!,a!>},<!>~"ou~"'>,<}!o!!!>!i!!oo!>,<!!<,~"!aa,!u!!a!!>}},~{<o~{!!o~{u!!!><!'}u~{>}}},~{<!>,<!>!!~{!!!>ooo!>!>>}},~{<~"!!!><!>},<!!!e!!!!a~{<>,<!!!>e!>!!!>},<!!!>},<~"!!!>!><!!!>~{!!!>!>>}},~{~{~{~{<~"!!~"!!u!>},<~"aa,<!!!!!>>}},~{<a,,~"!a!~{,a!>,!>,<>,<iio~"a'>}},~{~{~{~{<!e!>,<e!o!>},<!>,<~"!!e!!!>,<!a!>},<,>},~{<!>},<~{i!!o!>},<'a!>},<>}}},~{~{<o!>},<!e!!!>!>u'>},<!!,!<!!~{o!!!>}!>},<,!!ee}~"u<!!>},~{~{<!!!>!,ioe''u,~",!>,<>}}},~{~{~{~{<!>,<!!!>!>,<,!!!!io!>!>,<o<!>},<,i!!!>>},~{<!>,<<e<~"~{~{}o~{u!>},<a>}},~{}},~{~{<!,eu!!!>}!!u!i!!},e!!!!u!!<i}>},<}!!<,~{,i!>,<~{e<}'!>},<a!>},<!>,<}~"~">}}},~{~{<<,>,<!}e!!!>ie~"u<i!!'euo!!~{!>,<>},~{~{<~"o!}!!}}o!}!!!>au!!,>}}},~{~{~{<~"!>},<!>},<io!>,<~"e!,!>,<!!!>!!!i!!~"!>}>,<!!!>!!!!a!!ao!>a,~"i!>,<>},~{~{<!!!>,<!>,<~{i>},<a}~{i!>!>,<!!!e,!>},<!!!>o,>},~{~{~{~{<,!!!>~"!!a~"'!}i<>}},~{<o'},'ioe!>,<!>'!o!>,<<i>,<e,'!!!>!>,<!!,!>!!,}io'>}},~{~{<i!!!>aaua<'}~"!!i!~{>}},~{~{<o~"!>,<,!!a}'!!}!!!>},<'ea!!ua!>}>},~{}}}},~{~{~{},<,~"~{u!>},<!>>},~{~{~{},~{}},<o~{}!ioe!>,<~"!>!>},<~"e!!!>>},~{~{~{<!~{!>!>},<i}a>},<!>},<<!>,<~"~"e~">}}},~{~{<o>,~{}}}}},~{~{~{~{~{<!>},<!!!!!>!!!>'!>!!u~"!!'}!!!e!>},<!,>}},~{},~{~{<}e!>!!!!!!!>,!!!>!!!>a~">}}}},~{~{~{~{<!!!u!!~"~{'}o,<~">,~{}}},~{~{}},~{~{~{~{<!<!>},<oo,,ie!>,<a~{>},~{<}u!!~{~{<o,o,'!~{!!~"~{,}a}!>},<>}},~{~{<o!ia!,>},~{}},~{<<}!!a~"~{!,>}},~{~{~{~{<~{~{~"!>},<aoau!,~">},<'!!!>a~"ou!>,<,!>!>!!}~{,>},~{~{<,!!!>},<u!!'!!!>!>!!!>!!!>~{!!u!!!>!>,<!>,<u!>,<!>,<,}>},~{<!,!!!>ue!~{~{~{!!,!>,<}>}}},~{~{~{<,!>},<o!><!!!>}!>,<!>},<i!!>,~{~{~{},~{}},~{<!>!u!>},<!u!>,<!!!>>}}},~{~{~{}},~{~{<'!>},<~"!!!>!!!>u~"!o!>,<~"!!!>eaa>,<io>}}},~{~{<!>!!~"}~{!!i~{!!!>>,~{}},~{~{<!!!>~"'o!!!>i!>,<!u,a'!!}!ue>},<!!!>o!~"!o'!>},<u!!'~{ou<!>},<,!!}>}}},~{~{},~{~{<!'!>},<<!>},<<<'e}u>},~{<}!!!>!u,~{~"~"!>},<e!e>,~{~{~{<~{i!',!!'>,~{<!!'>,<!>,<!!!!!>ei!>,<!>,<,!>,<>}},~{<>}},~{~{<!'!>!!!>}<'!!e!>!!oa,!>>}}}}}}},~{~{~{~{<}!>,<'!>!>},<~"!!~"<o~{}}>},~{<~{i}>}},~{~{~{~{<!>},<!!i!!<!!'~{!!!!!>},<>}}},~{~{<i!>u!>o'<!>,<!!u!!!i,~{!!o<>,<!><ue}}'ao>},~{<i!,'!>>,~{<a!>},<!>},<!!!ae!>},<!>~{!>,<i!>!>,<,!>>,<!!!<>}}}}},~{~{<!!!>u!!!>e!!'!e'>,~{}},~{<i!!!>a'!!!!ae>,<eu~"!i~"!>,<!!}!!>},~{~{<ui<!>!e'>},~{~{<!!u~"!!>}}}},~{~{~{<!!ui!!!>~"!<!!!>,~{<!!!>},<<!!!>>,~{}},<!>,<a!!e!!i~{!>!!!>'!!!><!!!>,<<'a>},~{~{<>}}},~{~{<<aa!!'e!!!!!!ei~"!~{a>,<!<~"e~"uo~"~{!>u~"'au!!!!!>},<'>},~{~{~{<o,ae!!!>a!>,}!!~{'o,!>},<!>,<ie>}}},~{}}}},~{~{<e},e!>,<!!'!!!!ia'a>},~{~{<u!>,<~{<!!i!!!>},<!>},<>,~{<e!!!<}~{u!'!>,<,!>,<>}}},~{<aa!!u!!!>!>},<~"'>,<<'o<!}i~{!ou!>},<!>,<}!>},<>}}},~{~{~{~{~{~{~{~{~{<!!!>ee,<e!!u!>!e!!'>},<u!e!!!!!!!!o,a!!e!>>},~{<u!!~">}}},~{<>}},~{~{<~{!>,<!>,<uu>,~{<!>},<!!!>!>},<!>,<!!!o!><!!!>!>,<>}},~{<'!!ee~{!!,!!!>}>,<<!o~"}>},~{~{~{},<auo!!!>>},~{~{~{<~"!!e>}},<!!!>io!>},<}!>},<!!'!>e!!!>'',!>au,i>}}},~{~{},~{<!!~"!>},<>,<!!!>o!,e<,<'>},~{~{<~{!!ie!o<}!>},<!>},<~"!>!>!!o!>},<>},<!!!i!!u!!}<!!~"!>},<<,!!u}!>},<u!>,<!!e<o>}}},~{<e>,~{}}},~{<!~"!!~{'u>,~{}}},~{<u'e>,<'~{~"!>},<u}~{~"!u!!!!'}!!!>},<>}}},~{~{~{~{<!>},<!>o,,o!!!!<!>},<~"i!>!>!>,<'>,~{}},~{~{},<!!!!~"}!!!>!!!>!!!!<o<!>},<!>},<>}},~{~{~{~{<!>},<!i!,!!!!~{!!~"~"}!!a<e<>,~{<!!!>u>}},~{<~{,~{i'!i!!!>o~{!!i!>,<},!!!>},<!>},<<!!,!!!>>,<!><!u~{i!!!!o>}}},~{<!!!>'!>,<u!>},<>,~{<a~"o!!i!>!!,}'!><'~{~{i'!!!><~">}},~{<!!}a}!>!!a!><i,>,~{}}},~{~{~{<!a!!<!!!!!!!>,,!!!!!>!>},<a'>,<o!!!>~"'~{!>,<~"~{!!!!i'}!!~{}>}},~{},~{<!!}~{<<i~"!!u>,~{~{<<!!!><ia!!!!}!}u!<}~"u!>,<!!!>!!!>>},<!>},<!eu!>,<!>},<>}}},~{}},~{~{~{},~{}},~{~{<,u!!'!!o~{!e!>oa<o!>,<!!<'!!'>,<~{!>!!ae>},~{~{~{<!>!>,<!>!!~"!!!>>}},~{<a!>!~{~{a~{!!!>!!!!!!<~"!>,<>},~{~{},~{~{~{<<!!!>>},~{~{<,u!>},<e!!!!!>!!!!!!!>},<oo!,>}}},~{~{<a!!!>~"!>,<!>},<i!>,<!!!>!>},<!>},<<!ao~{!!~"!!o!!,!!!!!><>},<i<ui,!>,<a>},~{~{<aa'i!>,<!!,'!!!>!~">},~{<>}}},~{~{~{<i!>},<~{<oo'!!a<!!!>e!>o!i,!!}~">,~{<>}},~{<!>~{!!e>}},~{}}}}},~{~{~{~{~{~{<!!!>a>},~{~{<u'e>}}},~{~{<}!!!>'u!}<~{!!!>},<}!>},<}>}},~{<'~"!!!!!!e~{~{'ie>}},~{~{~{~{~{<!!!>!}o!>e>}}}},<e}io~{~{,~{e<!>,<,>}},~{<~{'i!>},<o'>,<a!!!~{}~{e!!!>~"!<,!!>}},~{~{<!o!!<!!!>e!>i!~{,!!~{a!>,<>}},~{~{~{<u!!o!>},<!>!!<i!!!>~">}},~{<~{!ie!>},<,!>!!!>!!!>a'u!>,<!!u,>}}},~{~{~{~{<!!!>}~{~{~{!!!>~{oi!!eae<!!!>>}},~{<,!a!!'au!>,<!>,<!>},<!uo!>},<,,aeii'>,~{~{},<!!ee!>},<!>},<o'>}},~{<e!!a~"~{ee,>}},~{~{~{~{<iaeu!!!>!!!>},<!a!>,<!~"~"u!>,<'}!!<>},~{<u!!!!!!a,>}},~{~{<!!eoo'>},~{<'!!!>~{!>},<e!!!>!!!>!>},<!!a~{>}},~{~{<au<!!!!a>}}},~{<,i!>>}}}}}},~{~{~{~{<!!!!!~{<!>},<!!!>au!>!>},<!>},<u>},<o'!!!>!!!>!>},<!>!!!>',,'u!o,!!i!!!!!>},<>}},~{~{<i~"ao,i!!!!a!!!>}!!!>,>,~{<}>}},~{~{<!!'o!~{<'!>,<}o!!u!>},<,>},~{<!'}>}},~{~{},~{~{<!'!>!!~"a~">}}}},~{~{~{<!>!!~{!'!}!>},<>}},~{<~{!a!!!!!>!>},<!!'!!u>,~{<a~"!!~{>}},~{}}},~{~{~{~{<ua'e!>uo'!!!>~"~{!>},<<>,<~{o!>},<iao!!!!>},~{},~{~{~{~{<,!>!!!!io!>},<!>!>},<~{!<!!!>a!!!>!>},<iu>},~{<,!!!>~",}'o!>},<e~{!>!!oeie!!ui~">}},<'!!!!!!!>!>},<~",u>},~{~{<e!!!>!!!>,<'e!!,}e!!a!>},<!!!!!,~{!>,<~{>},~{<!i!!!>!!,!>}!>,<!!!!!>!!e!!!!!~"!>i'ea~{e>}},~{~{~{<a~"'!!a}<e!>'~"e!!!>>,<!!u!!i<>}},~{~{~{~{~{~{},~{}},~{<!>},<ua~{!!!>!!>}},~{<ao,!!!><!!eaao!!,!>e>,~{}},~{<!>,<,!!~"~"!>!>u,!>},<!!eoa!~">,<a,u~{!!~{,>}}},~{~{<!>},<!u!>},<i>},~{<ee~{>}}}}}},~{~{~{~{~{},<i~"!>,<uou>},~{}},~{<~{>,~{~{<!''!!~"!>,<!!!!!!}u!a!'}>}}}},~{~{~{~{<!!,ia!!!!!>},<!>},<'~{>},~{<>,~{}}}}},~{}},~{~{~{~{<~"<!!!>},<!'!>e,u!>!!!>!!<~{u'!>},<!!!>~{>}},<,!!u!!!>!!!>},<~"!!''u<a<<!>,<~"'!!!>>},~{},~{<i~{!>!!!!~{o,e!!,}!!~{!!!!!>},<!!}!!!!!<,!!}~{>}},~{~{~{~{~{},~{~{<i~{!!~{~{a,!!o<!~",!>},<u!!>,<!>,<!>},<}!!}!!!>~"a~"!>},<e<'!!>},~{~{<!!oo!!!>!>},<!!!>!>},<!!'!>},<,!!'~{!a'!!oa~"!>},<e>}}}}},~{~{~{<!!!>~{>,~{}},~{~{~{<}!!o!!!>},<,auueu,'ie>}},<!>!!<o!!uu<!>,<!>!!!>i!>},<o}a>}},~{~{~{~{<!>!o~"a!!i!>},<,'~{a>,<!i}!!!!!>~{>},~{}},~{~{},<>},~{~{~{<!!!>,<!!!>},<ia~"~{uu>,~{~{<e~"e!>,<!!}u,>}}},~{<,!!,!>o,a!>},<!>e'~{e!!!~"!>},<<a>,~{~{<!!<!>},<'~">},~{<!!i}~{!!u!,!!}!}!~{~"!!!>a>}}},~{~{},~{~{<'!}!!!}~{<!>,<<!>'!!>}}}},~{~{~{~{~{~{},~{<!>,<!!}!>},<'eoo~{ue!>,<~"<!>},<>}}},~{<!!!!~"~{>}},<>},~{~{<~{!!~{o!>},<u~"!!!>,<,<<<<!o!i!>,<>},~{~{}}},~{<>}},~{~{<,i}!!}~{eu!~"o!,>}}}},~{~{<'',!>,<'>},~{<~"io!!!>o<ae!!!!!>!!}e>,~{<!!!>},<>}}},~{<}u!>,<~"!>,<!!!>>,~{<,u,!<}!~"!~{!>},<!>,<>}}},~{}},~{~{<!>},<!!!>~{ee!!!>},<<,!!}!!!>u!!}~{a>},~{}},~{~{~{~{<~{~{!>},<>},~{<u<!!o<,a!!!>>}},~{<a!o!!i}>}}}}}},~{~{~{~{},<a>},~{~{<!>!!i!!o>,~{}}}},~{~{~{}}}}}},~{~{~{},~{~{<!!!!!>ui,i!!>,~{~{<}oi!!~{e!>,<~{!>},<!!!>!>,<uu!,'!u~">}}},<!'!>!}ou!>!~"!>,<!>~"a!>,<'!!!<!!!>a>},~{~{<!!~{!!!!!!uae,}io!!!><,!!!>'o~">},~{<!!i!>,<~{e'~{}i<i,}!!'!!ao,'u>}}}}},~{~{~{~{},~{<>,~{}}},~{<!'!!~{e~"<!!i!!!>!!!>},<>},~{~{<e<o!}'~"!!!!!>}!!,i}o>,~{~{<!>},<ieie~"!>,<o!!!>!>}a!!!>>}}}}},~{~{<<!!!!!!!><!'o!!!>!!!>!>'a~"oo!>>},~{<>,<<!!oou}!!<<!i!!!!!!~"!!!>!,!!!>~"!>~"!>},<}>},~{<!>},<!!<<~{!<>}}},~{~{~{<,}a~{!><!~{!>},<'>,<!!}!>,<!>},<o}!!uaa!>~{o!!!>,<!!~"<!>>},~{~{<o>}}},~{~{~{~{},~{}},~{~{~{~{<!~"!>e~{>}},~{~{},<>}},<!>,<!~"<o!!!!!>!!!>i>}},~{~{~{~{<!>e<a!!!!},iui}i!>!!!>>}},~{~{<!!!>},<!!!>!!!!!>~{!!!,<}a!>!e,!!!>!!!!o!!!>!>,<>},~{<o!>},<!>,<!>},<!!~{!!~{<u!!!>},<}e!!!>},<>,~{<<>}},~{<e~"!!eae}!}~">}},~{~{<,<!!~"!!a!!o>},<!!!!!>>}},~{~{~{<!>},<!>},<!>~{u,e,>},<>},<>}}},~{~{~{<!!~{!~"!>},<o!>>}}},~{~{<>,<,!!!>>},~{<!!u!!!i!!!>aooi>,~{<!'~{o!~{~"!!!>!!!>,<u!!!!!>!ea!>},<!'!>>}}}}},~{~{~{~{~{<>},~{<!!~"~"!~{>}},~{~{~{<}!!<au'e!!uo!!!o!'}!!!!!<ui}o!>,<>},<'!!o~{,!!,i~{~"!!u<!>,<!i!!!>!>,<!>!i>}}},~{~{<,!!!>'!!!>,<<!<!!','!>},<!>},<!>},<>,~{<!}<!!~"~">}},~{~{~{<!!ae!>!!!>!>},<!>},<~{!!!!!>!!'~{i<!>,<!>,<a'!>>},<!>!>},<!!!>,<~"!>},<'a!!a!!ou!!!>,<}>}},~{~{~{~{~{~{~{<a>},~{<~"!>ooe!>},<}!e!!,<i,!!!>a!o!>i>,~{}}},~{~{<aou>}}},~{~{<<!aii'}<>},~{<,u!!!>!!!>,<u>}}},~{~{<!>},<a>,~{}}},~{}},~{~{<ieao!>},<~{e,i!!!>}!>,<}i>},<!!!>,<!!!>,o>}}}},~{}}}}}".
DEFINE VARIABLE iChar AS INTEGER NO-UNDO.
DEFINE VARIABLE cChar AS CHARACTER NO-UNDO.
DEFINE VARIABLE iGroup AS INTEGER NO-UNDO.
DEFINE VARIABLE iGarbage AS INTEGER NO-UNDO.
DEFINE VARIABLE iScore AS INTEGER NO-UNDO.
DEFINE VARIABLE iNbGarbage AS INTEGER NO-UNDO.
DO iChar = 1 TO LENGTH(cInput):
cChar = SUBSTRING(cInput,iChar,1).
CASE cChar:
WHEN "!" THEN iChar = iChar + 1. /* skip next */
WHEN "~{" THEN
IF iGarbage = 0 THEN ASSIGN
iGroup = iGroup + 1
iScore = iScore + iGroup.
ELSE
iNbGarbage = iNbGarbage + 1.
WHEN "}" THEN
IF iGarbage = 0 THEN
iGroup = iGroup - 1.
ELSE
iNbGarbage = iNbGarbage + 1.
WHEN "<" THEN
IF iGarbage = 0 THEN
iGarbage = iGarbage + 1.
ELSE
iNbGarbage = iNbGarbage + 1.
WHEN ">" THEN
iGarbage = iGarbage - 1.
WHEN "," THEN
IF iGarbage > 0 THEN
iNbGarbage = iNbGarbage + 1.
OTHERWISE IF iGarbage = 0 THEN
MESSAGE "illegal character:" cChar
VIEW-AS ALERT-BOX INFO BUTTONS OK.
ELSE
iNbGarbage = iNbGarbage + 1.
END CASE.
/*MESSAGE cinput SKIP ichar SKIP cchar SKIP
"GROUP:" igroup SKIP
"garb:" igarbage SKIP
"nbgarb:" iNbGarbage
VIEW-AS ALERT-BOX INFO BUTTONS OK.*/
END.
MESSAGE iScore SKIP iNbGarbage SKIP iGroup iGarbage
VIEW-AS ALERT-BOX INFO BUTTONS OK.