]> fbox.kageds.com Git - adventofcode.git/blob - day3/day3.erl
commit
[adventofcode.git] / day3 / day3.erl
1 %% to compile: erlc day3A.erl
2 %% to run: erl -noshell -s day3 solve
3 %%
4 -module(day3).
5
6 -export ([solve/0, solve/1, solve/2]).
7
8 solve() ->
9 solve(['1']),
10 solve(['2']),
11 init:stop().
12
13 solve(A) ->
14 solve(A, get_data()).
15
16 solve(['1'], D) ->
17 io:format("The solution to ~p puzzle1 is: ~p~n", [?MODULE, solve(1, D)]);
18 solve(1, D) ->
19 solution1(D);
20 solve(['2'], D) ->
21 io:format("The solution to ~p puzzle2 is: ~p~n", [?MODULE, solve(2, D)]);
22 solve(2, D) ->
23 solution2(D).
24
25 solution1(D) ->
26 Count_list = get_count_list(D),
27 Gamma = [ case Ones > Zeros of 'true' -> $1; 'false' -> $0 end || {Ones, Zeros} <- Count_list],
28 Epsilion = [ case Ones > Zeros of 'true' -> $0; 'false' -> $1 end || {Ones, Zeros} <- Count_list],
29 bl2int(Gamma) * bl2int(Epsilion).
30
31 solution2(D) ->
32 Most_common = fun(X,Y) -> X >= Y end,
33 Least_common = fun(X, Y) -> X < Y end,
34 get_rating(D, Most_common) * get_rating(D, Least_common).
35
36 get_rating(D, Fun) ->
37 get_rating(D, Fun, 1).
38
39 get_rating([D], _, _) ->
40 bl2int(D);
41 get_rating(D, Fun, Pos) ->
42 Count_list = get_count_list(D),
43 {Ones, Zeros} = lists:nth(Pos, Count_list),
44 New_list =
45 case Fun(Ones,Zeros) of
46 'true' -> filter_list(D, Pos, $1);
47 'false' -> filter_list(D, Pos, $0)
48 end,
49 get_rating(New_list, Fun, Pos + 1).
50
51 %%
52 %% Internal functions
53 %%
54 % Return a Filtered list where postion Pos is V
55 filter_list(L, Pos, V) ->
56 lists:filter(fun(X) -> lists:nth(Pos, X) == V end, L).
57
58 %% return a list [{Ones1,Zeros1},{Ones2,Zeros2}...] when OnesX is count of 1's in column X and ZerosX is count of zeros in column X
59 get_count_list([H|_] = D) ->
60 get_count_list(D, init_acc(length(H), [])).
61
62 get_count_list([], Acc) ->
63 Acc;
64 get_count_list([H|T], Acc) ->
65 get_count_list(T, lists:zipwith(fun(X, {Ones, Zeros}) ->
66 case X of $1 -> {Ones + 1, Zeros}; $0 -> {Ones, Zeros + 1} end
67 end, H, Acc)).
68
69 %% create a list of {0,0} tuples of length L, e.g. if L = 3 then return [{0,0},{0,0},{0,0}]
70 init_acc(0, Acc) ->
71 Acc;
72 init_acc(Len, Acc) ->
73 init_acc(Len - 1, Acc ++ [{0,0}]).
74
75 %% Convert binary list to integer, e.g. "1011" -> 11 dec
76 bl2int(CL) ->
77 io:format("convert ~p~n", [CL]),
78 bl2int(lists:reverse(CL), 0, 0).
79
80 bl2int([], Acc, _) ->
81 Acc;
82 bl2int([H|T], Acc, Mult) ->
83 bl2int(T, Acc + ((H - $0) * math:pow(2,Mult)), Mult + 1).
84
85 get_test_data() ->
86 [
87 "00100",
88 "11110",
89 "10110",
90 "10111",
91 "10101",
92 "01111",
93 "00111",
94 "11100",
95 "10000",
96 "11001",
97 "00010",
98 "01010"
99 ].
100
101 get_data() ->
102 [
103 "010100110111",
104 "101001010000",
105 "101011110010",
106 "100100011101",
107 "101000011000",
108 "110011011110",
109 "111010010100",
110 "001111100000",
111 "111101100001",
112 "100010101110",
113 "101101110101",
114 "010010101110",
115 "111001110100",
116 "000101111000",
117 "111101111100",
118 "000010001100",
119 "101010111101",
120 "001010011011",
121 "001101101101",
122 "000000110100",
123 "001100101011",
124 "110110110010",
125 "001110000011",
126 "011001111001",
127 "110100110011",
128 "011000110001",
129 "111100100010",
130 "101011000000",
131 "011101000111",
132 "011111000111",
133 "111011001110",
134 "011111010100",
135 "001110110001",
136 "010110110001",
137 "100111011011",
138 "100110100100",
139 "110010111000",
140 "101111001100",
141 "101111111001",
142 "000001000110",
143 "100010010110",
144 "110111100101",
145 "001001010101",
146 "001110001011",
147 "101111001011",
148 "111011110010",
149 "101001001100",
150 "101010100001",
151 "000000111101",
152 "100000000111",
153 "111010111101",
154 "000110110111",
155 "100100101111",
156 "110101100101",
157 "011010110010",
158 "110100001110",
159 "001011011010",
160 "010101010101",
161 "011110000100",
162 "010000000010",
163 "010111010111",
164 "011010011100",
165 "101101001011",
166 "000111100101",
167 "101111001000",
168 "000100010000",
169 "111000011111",
170 "100001010101",
171 "011101111110",
172 "001111011110",
173 "001100111111",
174 "000011000100",
175 "001011101010",
176 "001011010111",
177 "101001001110",
178 "010101011001",
179 "110101001011",
180 "011110011110",
181 "001000110010",
182 "011101110001",
183 "101110000000",
184 "000001100111",
185 "110111000011",
186 "001001111010",
187 "100100000000",
188 "000000011101",
189 "111110111011",
190 "101001111100",
191 "110110100010",
192 "101011011000",
193 "000111100010",
194 "011000110100",
195 "111100100100",
196 "010010100000",
197 "111101001011",
198 "111001000000",
199 "001001000001",
200 "010010100001",
201 "110110001100",
202 "001101100001",
203 "011110010110",
204 "100111011101",
205 "001001110110",
206 "001001100011",
207 "011001111010",
208 "110110010111",
209 "110100111010",
210 "111110011100",
211 "100000100111",
212 "010001101101",
213 "110100110101",
214 "101111101001",
215 "100110010000",
216 "100011001111",
217 "101111001010",
218 "001110111001",
219 "111101001101",
220 "001010111101",
221 "010010011010",
222 "100101101111",
223 "100000011110",
224 "011111010001",
225 "000010001101",
226 "010100101100",
227 "001010001100",
228 "100111011100",
229 "011110000000",
230 "100000011111",
231 "000010010100",
232 "000001001101",
233 "011111011111",
234 "100101001101",
235 "000100010110",
236 "011011111100",
237 "000111000011",
238 "010100101011",
239 "011000101111",
240 "001001100111",
241 "110111110100",
242 "111101111011",
243 "110011010101",
244 "100111111111",
245 "010100010000",
246 "001111110101",
247 "010011010001",
248 "101000111111",
249 "000001110100",
250 "010010010000",
251 "100010000101",
252 "110111100111",
253 "001011111101",
254 "101100101101",
255 "001010110100",
256 "000100110001",
257 "111101110110",
258 "111110101110",
259 "100011100110",
260 "011001001010",
261 "001000010111",
262 "010001110110",
263 "011110000010",
264 "101010101111",
265 "110100100100",
266 "010001100101",
267 "001011111110",
268 "100111100000",
269 "111101000010",
270 "101101011110",
271 "101100111100",
272 "001110011100",
273 "110110100101",
274 "000110111010",
275 "011001010111",
276 "010001000011",
277 "100010010111",
278 "000110110000",
279 "001000010101",
280 "010011010010",
281 "110000100010",
282 "010000101110",
283 "010110111000",
284 "011101001000",
285 "011110000111",
286 "100110100011",
287 "110011001001",
288 "001110000111",
289 "000001101110",
290 "001000100110",
291 "011101111000",
292 "101100000101",
293 "110001100000",
294 "101000100101",
295 "110101110101",
296 "111000101111",
297 "101000101001",
298 "101000100000",
299 "101011010110",
300 "000010111100",
301 "011101101000",
302 "000110101001",
303 "000110110110",
304 "100111001011",
305 "100010001101",
306 "101111000111",
307 "100100111000",
308 "100100111100",
309 "000000100010",
310 "100110000111",
311 "101110001100",
312 "110010010010",
313 "100110010011",
314 "100100000011",
315 "000001011111",
316 "110100100000",
317 "000000111100",
318 "110110010001",
319 "001101111110",
320 "010011010011",
321 "001000111110",
322 "100010010100",
323 "000111110101",
324 "111111101001",
325 "100110001110",
326 "101011011101",
327 "110100100010",
328 "010100001000",
329 "100111101001",
330 "010111010001",
331 "001110101000",
332 "100111101111",
333 "100010101011",
334 "101111100111",
335 "111001100110",
336 "111100110101",
337 "001101001111",
338 "111011011111",
339 "011011100110",
340 "101111011000",
341 "100110110001",
342 "100010011101",
343 "000111010101",
344 "101101011100",
345 "111010100100",
346 "001101000100",
347 "101111100101",
348 "010110001010",
349 "111101010000",
350 "100111110100",
351 "100000000011",
352 "010001111110",
353 "011010001110",
354 "110100010100",
355 "010100111100",
356 "011001101100",
357 "110101001001",
358 "000011100111",
359 "011000000000",
360 "110001000011",
361 "101011001101",
362 "001010110000",
363 "010000011010",
364 "101110101010",
365 "001010011111",
366 "011101000101",
367 "110011101010",
368 "101110001110",
369 "100111110000",
370 "100100010100",
371 "010011101000",
372 "100110000110",
373 "111100010011",
374 "011101101011",
375 "100110010100",
376 "011011100001",
377 "011111100110",
378 "111100101111",
379 "000111101001",
380 "100101011101",
381 "010101001110",
382 "110011110011",
383 "111011011100",
384 "101001101111",
385 "100001010111",
386 "110010111001",
387 "011011101011",
388 "111110001010",
389 "000010111110",
390 "011010000101",
391 "011011000111",
392 "110000000101",
393 "010110111011",
394 "010110110000",
395 "011000110110",
396 "100101001000",
397 "000111110001",
398 "011110000101",
399 "001000010000",
400 "011011000011",
401 "100101100011",
402 "010000100000",
403 "100010011000",
404 "001011100001",
405 "000110100010",
406 "011000111010",
407 "100011001011",
408 "101111111010",
409 "001100110101",
410 "101100111111",
411 "010011100111",
412 "001110110010",
413 "000100100110",
414 "010100010001",
415 "100100011011",
416 "110110100100",
417 "100011011001",
418 "110001000110",
419 "110110100000",
420 "101110001010",
421 "000100101010",
422 "000000100110",
423 "110110111110",
424 "011000111101",
425 "001101111000",
426 "110001100001",
427 "101011011100",
428 "101100001000",
429 "100000111011",
430 "011110010100",
431 "010000101111",
432 "100011100101",
433 "100111010100",
434 "000011010110",
435 "111010110011",
436 "010101000001",
437 "001101010100",
438 "010001010011",
439 "100011000101",
440 "011100011111",
441 "100101100010",
442 "011111011100",
443 "011010010000",
444 "011011011110",
445 "101000000100",
446 "110111111100",
447 "100111110011",
448 "110100010010",
449 "100100011111",
450 "000100001101",
451 "001101100010",
452 "000001010110",
453 "110110010010",
454 "001110000110",
455 "101100110101",
456 "111000110011",
457 "111110111111",
458 "001000111000",
459 "010101111010",
460 "010011101010",
461 "010010100100",
462 "000101001011",
463 "010011011010",
464 "100110111011",
465 "100011110111",
466 "111001001011",
467 "011000000111",
468 "000101101101",
469 "001000011100",
470 "110111111010",
471 "011010101001",
472 "110000010101",
473 "011001110010",
474 "001001001011",
475 "111010110110",
476 "101010000110",
477 "110111010011",
478 "101110011010",
479 "011111110101",
480 "010100110011",
481 "010000100111",
482 "010100001011",
483 "011111010110",
484 "110011111110",
485 "100100111101",
486 "000100111001",
487 "011011101111",
488 "111010001101",
489 "100000110101",
490 "110000000010",
491 "111110101011",
492 "011000010110",
493 "001011101100",
494 "010001110011",
495 "111010111010",
496 "100010011110",
497 "001100000011",
498 "000101110000",
499 "111011101111",
500 "111000000111",
501 "100101011100",
502 "010111000010",
503 "010010111010",
504 "001111111100",
505 "101001000000",
506 "000010111111",
507 "001110011000",
508 "111110011110",
509 "101101000110",
510 "101110100110",
511 "100011011100",
512 "101100000001",
513 "111001111011",
514 "101010101000",
515 "010111101110",
516 "000010100101",
517 "100010111000",
518 "101111000100",
519 "000010011101",
520 "011000111011",
521 "010110011011",
522 "010101100010",
523 "100101010111",
524 "011010101110",
525 "110011011011",
526 "110100101011",
527 "110110111100",
528 "000101110011",
529 "011001110101",
530 "111000100100",
531 "101010000001",
532 "110111100011",
533 "100001000110",
534 "001101011111",
535 "101010000101",
536 "011111111000",
537 "000111011110",
538 "100001111101",
539 "011010010010",
540 "101010011100",
541 "101110101100",
542 "000001010100",
543 "101010100110",
544 "001100101010",
545 "101110100100",
546 "100100111001",
547 "110010100111",
548 "000100001110",
549 "111001110101",
550 "110000101110",
551 "000010011000",
552 "010001110010",
553 "000100010011",
554 "011110100001",
555 "001010111010",
556 "010010111001",
557 "010001001011",
558 "101101001110",
559 "011001000110",
560 "110110011001",
561 "110111000000",
562 "011010111001",
563 "001000010001",
564 "010110011100",
565 "000111110010",
566 "101110000010",
567 "000101001100",
568 "110010111101",
569 "001101010000",
570 "010010011001",
571 "010000010111",
572 "011110011100",
573 "111000100011",
574 "110101011000",
575 "101100100010",
576 "111111100110",
577 "010011111110",
578 "111110000100",
579 "100010100100",
580 "101110111100",
581 "110000010010",
582 "011010000110",
583 "000101100101",
584 "001011001000",
585 "111000110001",
586 "000010001011",
587 "111000010000",
588 "100000101000",
589 "001101011101",
590 "101000101100",
591 "010100111010",
592 "101100000110",
593 "001111010011",
594 "011111110011",
595 "101000100010",
596 "111000001111",
597 "111000111010",
598 "001110000101",
599 "110001010011",
600 "011101011010",
601 "101001000101",
602 "111111001110",
603 "111110110101",
604 "110001110100",
605 "101101010101",
606 "000100011111",
607 "101100100110",
608 "000111011000",
609 "101010110001",
610 "000100110110",
611 "101101110111",
612 "100011101000",
613 "010011110101",
614 "110101111001",
615 "110001110011",
616 "000100111100",
617 "010011010110",
618 "101100000100",
619 "011011101000",
620 "101110000100",
621 "100100010110",
622 "111011100100",
623 "011010110000",
624 "100111011010",
625 "110100011010",
626 "101111111111",
627 "110110011100",
628 "110011100101",
629 "100001111100",
630 "111101100110",
631 "110010001010",
632 "010001001101",
633 "101110100001",
634 "111101001100",
635 "110101000100",
636 "011001110000",
637 "010110100011",
638 "111111000001",
639 "110010100000",
640 "101100110000",
641 "110000000000",
642 "001101110111",
643 "001100001000",
644 "001101101000",
645 "101100100011",
646 "001001011011",
647 "011011101110",
648 "010011111000",
649 "110100111000",
650 "011001101010",
651 "111011111010",
652 "100011111010",
653 "001011011110",
654 "111101100101",
655 "100011100100",
656 "101110101000",
657 "000111110110",
658 "100111010001",
659 "110000011100",
660 "111111111110",
661 "110100010101",
662 "101001110011",
663 "000010001110",
664 "000010001001",
665 "110000110000",
666 "001001000110",
667 "110111110000",
668 "010101010010",
669 "111101110001",
670 "110101101101",
671 "010111000111",
672 "111010110111",
673 "001011011011",
674 "001001100001",
675 "101000101110",
676 "101100110010",
677 "100100100100",
678 "011110111001",
679 "011100000110",
680 "100110110111",
681 "111010001110",
682 "110111111011",
683 "011010111000",
684 "011101100001",
685 "011110001111",
686 "110101011011",
687 "000000001111",
688 "101000001110",
689 "111010101110",
690 "001100001110",
691 "010111000101",
692 "111100111110",
693 "001110101110",
694 "011101111010",
695 "011100001111",
696 "000000000101",
697 "111111000100",
698 "000110010101",
699 "001101000010",
700 "111001111100",
701 "101100010100",
702 "001011001001",
703 "010110000010",
704 "010001101000",
705 "001111101111",
706 "011011011011",
707 "111110000001",
708 "100111011000",
709 "011000000110",
710 "100111101110",
711 "101100000000",
712 "101011000100",
713 "111000011101",
714 "100001101001",
715 "100001101000",
716 "011110001001",
717 "110110011011",
718 "011100010111",
719 "000100111000",
720 "000110000001",
721 "000111001100",
722 "000111111010",
723 "110110000001",
724 "000010011010",
725 "100000101001",
726 "101110001011",
727 "100010110101",
728 "110011010000",
729 "111101111111",
730 "100101011110",
731 "101110011111",
732 "111111011111",
733 "011010010110",
734 "010100101010",
735 "001010100001",
736 "000000110110",
737 "110000111101",
738 "010101101011",
739 "110100100001",
740 "011110001110",
741 "111001010011",
742 "001000001000",
743 "000011111110",
744 "111000100110",
745 "100100101000",
746 "011011000110",
747 "111001100011",
748 "111100101000",
749 "110001100010",
750 "011000000001",
751 "111101010010",
752 "001011000100",
753 "010100110110",
754 "000001111101",
755 "001010000011",
756 "010010100110",
757 "100000011101",
758 "101011010011",
759 "000111110000",
760 "101001001011",
761 "100000001000",
762 "010000111100",
763 "000100101011",
764 "011101010000",
765 "101101010010",
766 "100010011001",
767 "001101100101",
768 "101010010100",
769 "111011111001",
770 "101000010001",
771 "001111000000",
772 "011001000010",
773 "100101010110",
774 "000100001100",
775 "010000101000",
776 "110001111111",
777 "000101010111",
778 "110100101110",
779 "111100110001",
780 "101011000001",
781 "101100101110",
782 "110000101100",
783 "101100111110",
784 "111000010110",
785 "010110101110",
786 "001010100110",
787 "110011010010",
788 "111001100000",
789 "100100100001",
790 "000011011001",
791 "111011011110",
792 "011110000011",
793 "101000100001",
794 "101010010001",
795 "101001100001",
796 "100011001010",
797 "100000000110",
798 "010000100001",
799 "001011011001",
800 "110111010100",
801 "111001000111",
802 "111111110010",
803 "101010100101",
804 "100110001011",
805 "010110011001",
806 "110001111110",
807 "100100000111",
808 "110001110111",
809 "101110010101",
810 "010010111000",
811 "000000011001",
812 "101110000011",
813 "100001010000",
814 "001100001011",
815 "111111001100",
816 "111010010010",
817 "010011100001",
818 "100001111000",
819 "000010000110",
820 "010100011100",
821 "101111101010",
822 "100110010101",
823 "101001101001",
824 "100110101001",
825 "001001011100",
826 "001100011101",
827 "001100011001",
828 "000100100100",
829 "100011010100",
830 "000100001011",
831 "111101100011",
832 "011010001011",
833 "111000101101",
834 "101000010000",
835 "010110001111",
836 "111100010110",
837 "000111111101",
838 "100100111011",
839 "101011000010",
840 "011001100010",
841 "101111011100",
842 "101001110101",
843 "101111101100",
844 "110101001111",
845 "111101100000",
846 "101110011011",
847 "100101110000",
848 "001100111110",
849 "010010101010",
850 "001100100100",
851 "001010101100",
852 "001101100111",
853 "110010011100",
854 "010000001001",
855 "011011110001",
856 "100101110001",
857 "101111100100",
858 "110101101000",
859 "110000100000",
860 "101010011101",
861 "111000010011",
862 "100001010100",
863 "000101101010",
864 "101111001001",
865 "000110101101",
866 "101011010111",
867 "000001001100",
868 "100100111110",
869 "000010111011",
870 "000100000100",
871 "100100001110",
872 "011010000001",
873 "010101110011",
874 "111101101101",
875 "101110101111",
876 "100010100011",
877 "110001011101",
878 "110001011011",
879 "100011110011",
880 "111000011011",
881 "110101110010",
882 "000110010100",
883 "101000001010",
884 "011001011010",
885 "111000001101",
886 "101001101101",
887 "111001000001",
888 "000100000110",
889 "110000000110",
890 "010011001110",
891 "011101000001",
892 "010000101101",
893 "010011011001",
894 "010101001111",
895 "011110110001",
896 "100111110001",
897 "101111011101",
898 "111001000010",
899 "111111111000",
900 "001011101011",
901 "001010100111",
902 "111110111101",
903 "011111011101",
904 "000100111101",
905 "010010000101",
906 "001111101011",
907 "110010100100",
908 "110001011001",
909 "010111111000",
910 "100100101110",
911 "110111011101",
912 "100100000110",
913 "111111011011",
914 "101101111001",
915 "111011010001",
916 "000000011100",
917 "011011101001",
918 "100010111101",
919 "110111000110",
920 "001100110010",
921 "111100111100",
922 "111111000010",
923 "100111010111",
924 "100011001100",
925 "110101011100",
926 "001111001100",
927 "101010000010",
928 "110011010111",
929 "110011010001",
930 "001110110110",
931 "000011011100",
932 "001011001011",
933 "100000000001",
934 "110000100011",
935 "011011110011",
936 "100101100100",
937 "011100100011",
938 "100001110111",
939 "011101001001",
940 "011101100011",
941 "011001001101",
942 "011001000100",
943 "010111001111",
944 "100001001111",
945 "101001100000",
946 "110010001011",
947 "010101011100",
948 "011110110010",
949 "111010000110",
950 "000010100100",
951 "110111000111",
952 "001011010110",
953 "010001000100",
954 "110100010111",
955 "010101100110",
956 "010011101111",
957 "101000001000",
958 "011011001011",
959 "100001000001",
960 "101111110011",
961 "100110110011",
962 "100011100000",
963 "101101000010",
964 "000101011000",
965 "111101110010",
966 "110111010110",
967 "101110000110",
968 "110010110001",
969 "000001101111",
970 "110101101111",
971 "000010111010",
972 "100010010001",
973 "111010011001",
974 "011110011011",
975 "000110101010",
976 "010100001111",
977 "010111011000",
978 "000011110100",
979 "010001010101",
980 "110111011001",
981 "010001111001",
982 "111010111111",
983 "010010010001",
984 "010001100011",
985 "111110001001",
986 "101000010111",
987 "001101110101",
988 "111011000000",
989 "001100110100",
990 "000110001001",
991 "110111101001",
992 "010100110000",
993 "101110111110",
994 "100000000010",
995 "110011010011",
996 "010101100101",
997 "110100110001",
998 "100010100010",
999 "101111111000",
1000 "111111100100",
1001 "011100001101",
1002 "000000100001",
1003 "100110100110",
1004 "010100100011",
1005 "000000001000",
1006 "101010110100",
1007 "100010001111",
1008 "111000001011",
1009 "010101000111",
1010 "001111110001",
1011 "000000111011",
1012 "111111101100",
1013 "001110110000",
1014 "011110111011",
1015 "001110100011",
1016 "100110000010",
1017 "010110110011",
1018 "001001101110",
1019 "110011101110",
1020 "111001100010",
1021 "111100010000",
1022 "000001010111",
1023 "001110001100",
1024 "110000101000",
1025 "100101111010",
1026 "001011001110",
1027 "100111101100",
1028 "111001101100",
1029 "110111110010",
1030 "101000110100",
1031 "100011100011",
1032 "100000100101",
1033 "100001111011",
1034 "011110101001",
1035 "000111000100",
1036 "010111100001",
1037 "111111010001",
1038 "100100001100",
1039 "111111010111",
1040 "001101111101",
1041 "000110001101",
1042 "010110000001",
1043 "111011010110",
1044 "011110110110",
1045 "011111001001",
1046 "001101011010",
1047 "010101110101",
1048 "110001100100",
1049 "101101011101",
1050 "011011010110",
1051 "001011001101",
1052 "101110110101",
1053 "001101010010",
1054 "101010001101",
1055 "100111000000",
1056 "110110101100",
1057 "001011111000",
1058 "000100111011",
1059 "000111110111",
1060 "101000111100",
1061 "110000110011",
1062 "000001000011",
1063 "000111111110",
1064 "001010010010",
1065 "100000111001",
1066 "010101111100",
1067 "001100010100",
1068 "010101110111",
1069 "110101010010",
1070 "000001001111",
1071 "101101111100",
1072 "011110111101",
1073 "111001010001",
1074 "000100101101",
1075 "011100100100",
1076 "110101000111",
1077 "011111100011",
1078 "110001001101",
1079 "100001100111",
1080 "101101100111",
1081 "000100110000",
1082 "101001100010",
1083 "001101101111",
1084 "100011000100",
1085 "011100101111",
1086 "011001100100",
1087 "011010011110",
1088 "010011001010",
1089 "011110101000",
1090 "111101111010",
1091 "110001010100",
1092 "000110010001",
1093 "001111011011",
1094 "110000111011",
1095 "000001111001",
1096 "010011001100",
1097 "100110101011",
1098 "111011001011",
1099 "001100110011",
1100 "010010011101",
1101 "100011110000",
1102 "110011110111"
1103 ].
1104