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