1[
2 {"type":"Keyword","value":"import"},
3 {"type":"Text","value":" "},
4 {"type":"LiteralStringSingle","value":"'dart:async'"},
5 {"type":"Punctuation","value":";"},
6 {"type":"Text","value":"\n"},
7 {"type":"Keyword","value":"import"},
8 {"type":"Text","value":" "},
9 {"type":"LiteralStringSingle","value":"'dart:html'"},
10 {"type":"Punctuation","value":";"},
11 {"type":"Text","value":"\n"},
12 {"type":"Keyword","value":"import"},
13 {"type":"Text","value":" "},
14 {"type":"LiteralStringSingle","value":"'dart:math'"},
15 {"type":"Text","value":" "},
16 {"type":"Keyword","value":"show"},
17 {"type":"Text","value":" "},
18 {"type":"Name","value":"Random"},
19 {"type":"Punctuation","value":";"},
20 {"type":"Text","value":"\n\n"},
21 {"type":"CommentSingle","value":"// We changed 5 lines of code to make this sample nicer on\n// the web (so that the execution waits for animation frame,\n// the number gets updated in the DOM, and the program ends\n// after 500 iterations).\n"},
22 {"type":"Text","value":"\n"},
23 {"type":"Name","value":"main"},
24 {"type":"Punctuation","value":"()"},
25 {"type":"Text","value":" "},
26 {"type":"KeywordDeclaration","value":"async"},
27 {"type":"Text","value":" "},
28 {"type":"Punctuation","value":"{"},
29 {"type":"Text","value":"\n "},
30 {"type":"Name","value":"print"},
31 {"type":"Punctuation","value":"("},
32 {"type":"LiteralStringSingle","value":"'Compute π using the Monte Carlo method.'"},
33 {"type":"Punctuation","value":");"},
34 {"type":"Text","value":"\n "},
35 {"type":"KeywordDeclaration","value":"var"},
36 {"type":"Text","value":" "},
37 {"type":"Name","value":"output"},
38 {"type":"Text","value":" "},
39 {"type":"Operator","value":"="},
40 {"type":"Text","value":" "},
41 {"type":"Name","value":"querySelector"},
42 {"type":"Punctuation","value":"("},
43 {"type":"LiteralStringDouble","value":"\"#output\""},
44 {"type":"Punctuation","value":");"},
45 {"type":"Text","value":"\n "},
46 {"type":"KeywordDeclaration","value":"await"},
47 {"type":"Text","value":" "},
48 {"type":"Keyword","value":"for"},
49 {"type":"Text","value":" "},
50 {"type":"Punctuation","value":"("},
51 {"type":"KeywordDeclaration","value":"var"},
52 {"type":"Text","value":" "},
53 {"type":"Name","value":"estimate"},
54 {"type":"Text","value":" "},
55 {"type":"Keyword","value":"in"},
56 {"type":"Text","value":" "},
57 {"type":"Name","value":"computePi"},
58 {"type":"Punctuation","value":"()."},
59 {"type":"Name","value":"take"},
60 {"type":"Punctuation","value":"("},
61 {"type":"LiteralNumber","value":"500"},
62 {"type":"Punctuation","value":"))"},
63 {"type":"Text","value":" "},
64 {"type":"Punctuation","value":"{"},
65 {"type":"Text","value":"\n "},
66 {"type":"Name","value":"print"},
67 {"type":"Punctuation","value":"("},
68 {"type":"LiteralStringSingle","value":"'π ≅ "},
69 {"type":"LiteralStringInterpol","value":"$"},
70 {"type":"Name","value":"estimate"},
71 {"type":"LiteralStringSingle","value":"'"},
72 {"type":"Punctuation","value":");"},
73 {"type":"Text","value":"\n "},
74 {"type":"Name","value":"output"},
75 {"type":"Punctuation","value":"."},
76 {"type":"Name","value":"text"},
77 {"type":"Text","value":" "},
78 {"type":"Operator","value":"="},
79 {"type":"Text","value":" "},
80 {"type":"Name","value":"estimate"},
81 {"type":"Punctuation","value":"."},
82 {"type":"Name","value":"toStringAsFixed"},
83 {"type":"Punctuation","value":"("},
84 {"type":"LiteralNumber","value":"5"},
85 {"type":"Punctuation","value":");"},
86 {"type":"Text","value":"\n "},
87 {"type":"KeywordDeclaration","value":"await"},
88 {"type":"Text","value":" "},
89 {"type":"Name","value":"window"},
90 {"type":"Punctuation","value":"."},
91 {"type":"Name","value":"animationFrame"},
92 {"type":"Punctuation","value":";"},
93 {"type":"Text","value":"\n "},
94 {"type":"Punctuation","value":"}"},
95 {"type":"Text","value":"\n"},
96 {"type":"Punctuation","value":"}"},
97 {"type":"Text","value":"\n\n"},
98 {"type":"CommentSingle","value":"/// Generates a stream of increasingly accurate estimates of π.\n"},
99 {"type":"Name","value":"Stream"},
100 {"type":"Operator","value":"\u003c"},
101 {"type":"KeywordType","value":"double"},
102 {"type":"Operator","value":"\u003e"},
103 {"type":"Text","value":" "},
104 {"type":"Name","value":"computePi"},
105 {"type":"Punctuation","value":"({"},
106 {"type":"KeywordType","value":"int"},
107 {"type":"Text","value":" "},
108 {"type":"NameLabel","value":"batch:"},
109 {"type":"Text","value":" "},
110 {"type":"LiteralNumber","value":"100000"},
111 {"type":"Punctuation","value":"})"},
112 {"type":"Text","value":" "},
113 {"type":"KeywordDeclaration","value":"async"},
114 {"type":"Operator","value":"*"},
115 {"type":"Text","value":" "},
116 {"type":"Punctuation","value":"{"},
117 {"type":"Text","value":"\n "},
118 {"type":"KeywordDeclaration","value":"var"},
119 {"type":"Text","value":" "},
120 {"type":"Name","value":"total"},
121 {"type":"Text","value":" "},
122 {"type":"Operator","value":"="},
123 {"type":"Text","value":" "},
124 {"type":"LiteralNumber","value":"0"},
125 {"type":"Punctuation","value":";"},
126 {"type":"Text","value":"\n "},
127 {"type":"KeywordDeclaration","value":"var"},
128 {"type":"Text","value":" "},
129 {"type":"Name","value":"count"},
130 {"type":"Text","value":" "},
131 {"type":"Operator","value":"="},
132 {"type":"Text","value":" "},
133 {"type":"LiteralNumber","value":"0"},
134 {"type":"Punctuation","value":";"},
135 {"type":"Text","value":"\n "},
136 {"type":"Keyword","value":"while"},
137 {"type":"Text","value":" "},
138 {"type":"Punctuation","value":"("},
139 {"type":"KeywordConstant","value":"true"},
140 {"type":"Punctuation","value":")"},
141 {"type":"Text","value":" "},
142 {"type":"Punctuation","value":"{"},
143 {"type":"Text","value":"\n "},
144 {"type":"KeywordDeclaration","value":"var"},
145 {"type":"Text","value":" "},
146 {"type":"Name","value":"points"},
147 {"type":"Text","value":" "},
148 {"type":"Operator","value":"="},
149 {"type":"Text","value":" "},
150 {"type":"Name","value":"generateRandom"},
151 {"type":"Punctuation","value":"()."},
152 {"type":"Name","value":"take"},
153 {"type":"Punctuation","value":"("},
154 {"type":"Name","value":"batch"},
155 {"type":"Punctuation","value":");"},
156 {"type":"Text","value":"\n "},
157 {"type":"KeywordDeclaration","value":"var"},
158 {"type":"Text","value":" "},
159 {"type":"Name","value":"inside"},
160 {"type":"Text","value":" "},
161 {"type":"Operator","value":"="},
162 {"type":"Text","value":" "},
163 {"type":"Name","value":"points"},
164 {"type":"Punctuation","value":"."},
165 {"type":"Name","value":"where"},
166 {"type":"Punctuation","value":"(("},
167 {"type":"Name","value":"p"},
168 {"type":"Punctuation","value":")"},
169 {"type":"Text","value":" "},
170 {"type":"Operator","value":"=\u003e"},
171 {"type":"Text","value":" "},
172 {"type":"Name","value":"p"},
173 {"type":"Punctuation","value":"."},
174 {"type":"Name","value":"isInsideUnitCircle"},
175 {"type":"Punctuation","value":");"},
176 {"type":"Text","value":"\n "},
177 {"type":"Name","value":"total"},
178 {"type":"Text","value":" "},
179 {"type":"Operator","value":"+="},
180 {"type":"Text","value":" "},
181 {"type":"Name","value":"batch"},
182 {"type":"Punctuation","value":";"},
183 {"type":"Text","value":"\n "},
184 {"type":"Name","value":"count"},
185 {"type":"Text","value":" "},
186 {"type":"Operator","value":"+="},
187 {"type":"Text","value":" "},
188 {"type":"Name","value":"inside"},
189 {"type":"Punctuation","value":"."},
190 {"type":"Name","value":"length"},
191 {"type":"Punctuation","value":";"},
192 {"type":"Text","value":"\n "},
193 {"type":"KeywordDeclaration","value":"var"},
194 {"type":"Text","value":" "},
195 {"type":"Name","value":"ratio"},
196 {"type":"Text","value":" "},
197 {"type":"Operator","value":"="},
198 {"type":"Text","value":" "},
199 {"type":"Name","value":"count"},
200 {"type":"Text","value":" "},
201 {"type":"Operator","value":"/"},
202 {"type":"Text","value":" "},
203 {"type":"Name","value":"total"},
204 {"type":"Punctuation","value":";"},
205 {"type":"Text","value":"\n "},
206 {"type":"CommentSingle","value":"// Area of a circle is A = π⋅r², therefore π = A/r².\n"},
207 {"type":"Text","value":" "},
208 {"type":"CommentSingle","value":"// So, when given random points with x ∈ \u003c0,1\u003e,\n"},
209 {"type":"Text","value":" "},
210 {"type":"CommentSingle","value":"// y ∈ \u003c0,1\u003e, the ratio of those inside a unit circle\n"},
211 {"type":"Text","value":" "},
212 {"type":"CommentSingle","value":"// should approach π / 4. Therefore, the value of π\n"},
213 {"type":"Text","value":" "},
214 {"type":"CommentSingle","value":"// should be:\n"},
215 {"type":"Text","value":" "},
216 {"type":"KeywordDeclaration","value":"yield"},
217 {"type":"Text","value":" "},
218 {"type":"Name","value":"ratio"},
219 {"type":"Text","value":" "},
220 {"type":"Operator","value":"*"},
221 {"type":"Text","value":" "},
222 {"type":"LiteralNumber","value":"4"},
223 {"type":"Punctuation","value":";"},
224 {"type":"Text","value":"\n "},
225 {"type":"Punctuation","value":"}"},
226 {"type":"Text","value":"\n"},
227 {"type":"Punctuation","value":"}"},
228 {"type":"Text","value":"\n\n"},
229 {"type":"Name","value":"Iterable"},
230 {"type":"Operator","value":"\u003c"},
231 {"type":"Name","value":"Point"},
232 {"type":"Operator","value":"\u003e"},
233 {"type":"Text","value":" "},
234 {"type":"Name","value":"generateRandom"},
235 {"type":"Punctuation","value":"(["},
236 {"type":"KeywordType","value":"int"},
237 {"type":"Text","value":" "},
238 {"type":"Name","value":"seed"},
239 {"type":"Punctuation","value":"])"},
240 {"type":"Text","value":" "},
241 {"type":"KeywordDeclaration","value":"sync"},
242 {"type":"Operator","value":"*"},
243 {"type":"Text","value":" "},
244 {"type":"Punctuation","value":"{"},
245 {"type":"Text","value":"\n "},
246 {"type":"KeywordDeclaration","value":"final"},
247 {"type":"Text","value":" "},
248 {"type":"Name","value":"random"},
249 {"type":"Text","value":" "},
250 {"type":"Operator","value":"="},
251 {"type":"Text","value":" "},
252 {"type":"Keyword","value":"new"},
253 {"type":"Text","value":" "},
254 {"type":"Name","value":"Random"},
255 {"type":"Punctuation","value":"("},
256 {"type":"Name","value":"seed"},
257 {"type":"Punctuation","value":");"},
258 {"type":"Text","value":"\n "},
259 {"type":"Keyword","value":"while"},
260 {"type":"Text","value":" "},
261 {"type":"Punctuation","value":"("},
262 {"type":"KeywordConstant","value":"true"},
263 {"type":"Punctuation","value":")"},
264 {"type":"Text","value":" "},
265 {"type":"Punctuation","value":"{"},
266 {"type":"Text","value":"\n "},
267 {"type":"KeywordDeclaration","value":"yield"},
268 {"type":"Text","value":" "},
269 {"type":"Keyword","value":"new"},
270 {"type":"Text","value":" "},
271 {"type":"Name","value":"Point"},
272 {"type":"Punctuation","value":"("},
273 {"type":"NameLabel","value":"x:"},
274 {"type":"Text","value":" "},
275 {"type":"Name","value":"random"},
276 {"type":"Punctuation","value":"."},
277 {"type":"Name","value":"nextDouble"},
278 {"type":"Punctuation","value":"(),"},
279 {"type":"Text","value":" "},
280 {"type":"NameLabel","value":"y:"},
281 {"type":"Text","value":" "},
282 {"type":"Name","value":"random"},
283 {"type":"Punctuation","value":"."},
284 {"type":"Name","value":"nextDouble"},
285 {"type":"Punctuation","value":"());"},
286 {"type":"Text","value":"\n "},
287 {"type":"Punctuation","value":"}"},
288 {"type":"Text","value":"\n"},
289 {"type":"Punctuation","value":"}"},
290 {"type":"Text","value":"\n\n"},
291 {"type":"KeywordDeclaration","value":"class"},
292 {"type":"Text","value":" "},
293 {"type":"NameClass","value":"Point"},
294 {"type":"Text","value":" "},
295 {"type":"Punctuation","value":"{"},
296 {"type":"Text","value":"\n "},
297 {"type":"KeywordDeclaration","value":"final"},
298 {"type":"Text","value":" "},
299 {"type":"KeywordType","value":"double"},
300 {"type":"Text","value":" "},
301 {"type":"Name","value":"x"},
302 {"type":"Punctuation","value":","},
303 {"type":"Text","value":" "},
304 {"type":"Name","value":"y"},
305 {"type":"Punctuation","value":";"},
306 {"type":"Text","value":"\n "},
307 {"type":"KeywordDeclaration","value":"const"},
308 {"type":"Text","value":" "},
309 {"type":"Name","value":"Point"},
310 {"type":"Punctuation","value":"({"},
311 {"type":"KeywordDeclaration","value":"required"},
312 {"type":"Text","value":" "},
313 {"type":"Keyword","value":"this"},
314 {"type":"Punctuation","value":"."},
315 {"type":"Name","value":"x"},
316 {"type":"Punctuation","value":","},
317 {"type":"Text","value":" "},
318 {"type":"KeywordDeclaration","value":"required"},
319 {"type":"Text","value":" "},
320 {"type":"Keyword","value":"this"},
321 {"type":"Punctuation","value":"."},
322 {"type":"Name","value":"y"},
323 {"type":"Punctuation","value":"});"},
324 {"type":"Text","value":"\n "},
325 {"type":"KeywordType","value":"bool"},
326 {"type":"Text","value":" "},
327 {"type":"KeywordDeclaration","value":"get"},
328 {"type":"Text","value":" "},
329 {"type":"Name","value":"isInsideUnitCircle"},
330 {"type":"Text","value":" "},
331 {"type":"Operator","value":"=\u003e"},
332 {"type":"Text","value":" "},
333 {"type":"Name","value":"x"},
334 {"type":"Text","value":" "},
335 {"type":"Operator","value":"*"},
336 {"type":"Text","value":" "},
337 {"type":"Name","value":"x"},
338 {"type":"Text","value":" "},
339 {"type":"Operator","value":"+"},
340 {"type":"Text","value":" "},
341 {"type":"Name","value":"y"},
342 {"type":"Text","value":" "},
343 {"type":"Operator","value":"*"},
344 {"type":"Text","value":" "},
345 {"type":"Name","value":"y"},
346 {"type":"Text","value":" "},
347 {"type":"Operator","value":"\u003c="},
348 {"type":"Text","value":" "},
349 {"type":"LiteralNumber","value":"1"},
350 {"type":"Punctuation","value":";"},
351 {"type":"Text","value":"\n"},
352 {"type":"Punctuation","value":"}"}
353]
View as plain text