Libraryless. Click here for Pure Java version (1059L/7K/24K).
1 | !752 |
2 | |
3 | sclass Vessel { |
4 | new L<S> data; |
5 | int index; |
6 | |
7 | *() {} |
8 | *(L<S> *data, int *index) {} |
9 | |
10 | void add(S s) { |
11 | data.add(simplify(s)); |
12 | } |
13 | |
14 | bool consume(S s) { |
15 | if (end()) ret false; |
16 | |
17 | s = simplify(s); |
18 | |
19 | /*if (same(next(), s)) { |
20 | ++index; |
21 | ret true; |
22 | } |
23 | ret false;*/ |
24 | |
25 | //++index; |
26 | |
27 | if (!same(next(), s)) { |
28 | --index; |
29 | ret false; |
30 | } |
31 | ret true; |
32 | } |
33 | |
34 | void restart() { |
35 | index = 0; |
36 | } |
37 | |
38 | // may be null if index after end |
39 | S next() { |
40 | ret end() ? null : get(data, index++); |
41 | } |
42 | |
43 | bool end() { |
44 | ret index >= l(data); |
45 | } |
46 | |
47 | public Vessel clone() { |
48 | ret new Vessel(cloneList(data), index); |
49 | } |
50 | } |
51 | |
52 | static S simplify(S s) { |
53 | ret s.trim().toUpperCase(); |
54 | } |
55 | |
56 | static bool same(S a, S b) { |
57 | ret eq(a, b); |
58 | } |
59 | |
60 | static new L<Vessel> vessels; |
61 | |
62 | p { |
63 | new Vessel v; |
64 | v.add("There is RAIN"); |
65 | v.add("I need a COAT"); |
66 | vessels.add(v); |
67 | } |
68 | |
69 | synchronized answer { |
70 | if (!tb()) null; |
71 | |
72 | for (Vessel v : vessels) { |
73 | if (v.consume(s)) { |
74 | S answer = v.next(); |
75 | v.restart(); |
76 | if (nempty(answer)) |
77 | ret answer; |
78 | } |
79 | } |
80 | } |
Began life as a copy of #1003040
download show line numbers debug dex old transpilations
Travelled to 13 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, cfunsshuasjs, gwrvuhgaqvyk, ishqpsrjomds, lpdgvwnxivlt, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tslmcundralx, tvejysmllsmz, vouqrxazstgt
No comments. add comment
Snippet ID: | #1003041 |
Snippet name: | Rain / Coat (Vessel) |
Eternal ID of this version: | #1003041/1 |
Text MD5: | 2b758d5e374a508cf6fdf14b73c47a37 |
Transpilation MD5: | dba08909d2457b46d152f8d179569031 |
Author: | stefan |
Category: | javax |
Type: | JavaX source code |
Public (visible to everyone): | Yes |
Archived (hidden from active list): | No |
Created/modified: | 2016-04-24 03:07:16 |
Source code size: | 1188 bytes / 80 lines |
Pitched / IR pitched: | No / No |
Views / Downloads: | 614 / 684 |
Referenced in: | [show references] |