-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathlife_utf.b
93 lines (92 loc) · 5.79 KB
/
life_utf.b
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#!/usr/bin/bf
++++++++++[->+++++++++>+>+++++++>+++++++++++>++++++++++++>++++++++++>++++>+++<<<<<<<<]
>>>---.>+.-.>-.>---.<++.>>-.<<<+++++.>>>>++.<<<<<++++.>>>.<<------.>>++++.>>.<<<<++.>>+.>>.<<<<<+++++.>>>+++.---.-.<<<<.
>-------.>-.++++++.>>.<<--.>>>>.<++++++++++.+++++.>.<<<<<+++.---.<<--.[>]<.<<<<----.>----.<-.>>---.+++.<---.+.>>++++.>.
# вывели приветствие Conway's Game of Life\nEnter 16 HEX numbers:
[[-]<]>>>>>>>>>>>++++[-<++++>>++++<]>[-<++++++++>]<<[>>
# получаем 16 и 128 и начинаем цикл
>>++++++[<++++++++>-]>>>+<<<,
# получаем 48 и вводим символ
<[>[-<]>]>>[-<<]<[->+>>>+<<<<]>[-<+>]<
# вычитаем из символа 48 до нуля и доублируем результат
<[-]<++++[->++++<]>>>>>[-]+<<<
# записываем 16 и один
<[>[-<]>]>>[-<<]<
# вычитаем 16 до нуля из первой копии
<[-]+>>>>[-]<<<
# удаляем все лишнее
[>>>>[-]<<<<[->+>>>+<<<<]>[-<+>]<
# если была введена буква то удаляем копию и заново дублируем
>>>+<<<<+++++[>[-<]>]>>[-<<]<
# вычитаем 6 до нуля
<[-]+>[>>>>[-]<<<<<->[-]]<[>>>>>+++++++++<<<<<-]>]
# если результат больше 0 то обнуляем копию иначе прибавим 9 к копии
<[+++++++++>>>>>[-<+<<<+>>>>]<[->+<]+<<<
# если была введена цифра то записываем 10 восстанавливаем цифру и ставим 1
<[>[-<]>]>>[-<<]<
# вычитаем 10 до нуля
[>>>>[-]<<<<[-]]<[-]]
# если результат больше 0 то обнуляем копию
<<[->>>+<<<]>>>>>>[-]<<
# удаляем все лишенее
++++[-<[-<+>>>>>>>>>>>+<<<<<<<<<<]<[->+<]>>[>+>+<<-]>>[-<<+>>]
# устанавливаем на 4 двоичных числа потом дублируем
+<[>[>>++<<-]>>[<<+>>-]<<<-]
# возводим в степень
>->[->+>>>+<<<<]>[-<+>]>>+<<<
# дублируем исходное число и устанавливаем 1
<[>[-<]>]>>[-<<]<<[-]+>
# вычитаем степень до нуля и ставим 1 для условия
[<->->>>->[-]>+++<<<<<[->>>>+<<<<]] # 1=3
# нужный бит установлен значит сохраним результат вычитания и выведем символ
<[->>>>>>++<<<<<<] # 0=2
# бит не установлен значит выведем другой символ
>>>>>[<<<<+>>>>-]>[->>+<<]>[->[->+<]<[->+<]+>]<[-<]<<[-]<<<<<<<-->]
# сдвигаем результат вычитания на место
<[-<<<+>>>]<<<<-]
# заканчиваем цикл
# массив располагается с $1B по $99 с промежутками в 1 ячейку для второго массива ячейки перед ним ничего нет
# начнем вывод массива
<<<<<<<<<<,[[-]
>>>>>>>>>>
>>>>>>>>>>>>>>>++++++++>>[
# запросили символ и перешли к массиву и получили 8
<<-<+>[<->[->+<]<<+>>>-------[[+<->]<<<<+>>>>]<[+>-<]>+++++++<]<[-<<[-]+>>>>++++++++<<]>>[-<+>]<<<
# проверили не находится ли ячейка на левой или правой границе и установили флаги причем ближе к элементу флаг предыдущей записи
[>>>>>>[--[-<+<<+>>>]<++>]<[->+<]>>>>>>>>>>>>>>>>>
# plus 1
[--[-<+<<+>>>]<++>]<[->+<]<<<<<<<<<<<<<<<<<<<<<
# plus 9
<<<<<<<<<<<<<<<<<[--[->>>>>>>>>>>>>+>+<<<<<<<<<<<<<<]>>>>>>>>>>>>>++<<<<<<<<<<<<<]>>>>>>>>>>>>>[-<<<<<<<<<<<<<+>>>>>>>>>>>>>]>>>>-]<
# minus 7
# проверяем элементы справа
[<<<<[--[->+>+<<]>++<]>[-<+>]<<<<<<<<<<<<<<<<<
# minus 1
[--[->>>>>>>>>>>>>>>>>+>+<<<<<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>>>++<<<<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>]>>>
# minus 9
>>>>>>>>>>>>>>>>>>>[--[-<+>>+<]<++>]<[->+<]<<<<<<<<<<<<<<<<<<-]
# plus 7
# проверяем элементы слева
<<<<<<<<<<<<<<<<<<[--[->>>>>>>>>>>>>>>+>+<<<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>++<<<<<<<<<<<<<<<]>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>]
# minus 8
>[->>>>>>+<<<<<<]>>>>>>>>>>>>>>>>>>>>>>>[--[-<+>>+<]>++<]>[-<+>]<<[-<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>]<<<<<<<<<<<<<<<
# plus 8
# проверили элементы снизу и сверху и собрали количество живых соседей
[-<<<<<<<+>>>>>>>]<[-<<<<<<<+>>>>>>>]<[->>+<<]>>>>]<<[-]<<<
# сдвинули массив на 6 к началу и перешли к концу массива
+++++[-<+++++++++<+++++++>>]++++++++
# получили символы для вывода и 8
<<<<[>+<--[>>.>>>>>++>>>+<<<<<<<<<<<--[-[[-]>-<]>[->>>>>>>+<<<<<<<]>-<<]>>[-<->>>>>>>+<<<<<<]<]
# проверяем была ли ячейка живой выводим символ и смотрим не надо ли умертвить
>[>>.>>>>++<<<<<<<<---[[-]>>-<<]>>[->>>>>>+<<<<<<]]>---.+++[[-<<+>>]>]
# если ячейка была мертвой то выводим нужный символ и смотрим не надо ли оживить
>>>>>[-<<+>>]<<<<<<<+<-[>-<[->>+<<]]>[->++++++++++.--<]>[-<<+>>]<<<<<<]
в нужных местах начинаем новую строку
>>[[-]>]
# убираем лишнее и заканчиваем вывод массива 17
>>>+>>[[-]<<-<<<<<<<<<<<<<<<<<<<<<<<<<<+>++++++++++.,----------[[-]<++++++++++[->++++++>+++++++++++>+++++++++>+<<<<]>.>.>++.>-.>>]>>]<<
# если еще есть живые клетки то запрашиваем символ и если нажат не ентер то выходим
[+++++++++[-<+++<+++++++<++++++++++<+++++++++++>>>>]<++<-.<<.>.>>.<<<+.>++.>>.<+++++++.<+++.---.-.[-]++++++++++.<<
# End of Life
]<]
# 1234567890ABCDEF