summaryrefslogtreecommitdiff
path: root/examples/rule110
diff options
context:
space:
mode:
authormRnea <[email protected]>2024-08-22 00:24:19 +0300
committermRnea <[email protected]>2024-08-22 00:24:19 +0300
commit4c8409da359cf0da14214ccc939c10ac759f76a5 (patch)
treeb9af87c1a47a401503992b280b5253d00957ceb6 /examples/rule110
parent4367febcd70e9bb7538cd168917ec3c7d3b0a6f3 (diff)
added new examples
Diffstat (limited to 'examples/rule110')
-rw-r--r--examples/rule110/rule110.c23
-rw-r--r--examples/rule110/rule110.kurt40
2 files changed, 63 insertions, 0 deletions
diff --git a/examples/rule110/rule110.c b/examples/rule110/rule110.c
new file mode 100644
index 0000000..76f3b75
--- /dev/null
+++ b/examples/rule110/rule110.c
@@ -0,0 +1,23 @@
+#include <stdio.h>
+
+#define BOARD_CAP 100
+static int board[BOARD_CAP];
+
+int main()
+{
+ board[BOARD_CAP - 2] = 1;
+
+ for (size_t i = 0; i < BOARD_CAP - 2; ++i) {
+ for (size_t j = 0; j < BOARD_CAP; ++j) {
+ fputc(" *"[board[j]], stdout);
+ }
+ fputc('\n', stdout);
+
+ int pattern = (board[0] << 1) | board[1];
+ for (size_t j = 1; j < BOARD_CAP - 1; ++j) {
+ pattern = ((pattern << 1) & 7) | board[j + 1];
+ board[j] = (110 >> pattern) & 1;
+ }
+ }
+ return 0;
+}
diff --git a/examples/rule110/rule110.kurt b/examples/rule110/rule110.kurt
new file mode 100644
index 0000000..181ca2e
--- /dev/null
+++ b/examples/rule110/rule110.kurt
@@ -0,0 +1,40 @@
+makro boyut 100 son
+makro stdout 1 son
+makro sys-write 1 son
+makro print-buffer
+ stdout bel boyut + boyut 1 + sys-write syscall-3
+son
+
+;; initialize board
+0 döngü eş boyut < iken
+ eş bel + 0 yaz
+ 1 +
+yap düş
+boyut 2 - bel + 1 yaz
+
+;; iteration count
+0 döngü eş boyut 2 - < iken
+ ;; write board to buffer
+ 0 döngü eş boyut < iken
+ eş bel + oku 1 = ise
+ eş bel boyut + + '*' yaz ;; 42 = '*'
+ yoksa
+ eş bel boyut + + ' ' yaz ;; 32 = ' '
+ yap
+ 1 +
+ yap
+ bel boyut + + '\n' yaz ;; 10 '\n'
+ ;; write to screen
+ print-buffer
+
+ ;; pattern init
+ bel 0 + oku 1 << bel 1 + oku |
+ 1 döngü eş boyut 1 - < iken
+ eş bel 1 + + oku ;; (pattern i cell)
+ rot 1 << 7 & | ;; (i new-pattern)
+ üst bel + üst 110 değiş >> 1 & yaz
+ değiş 1 +
+ yap düş düş
+ 1 +
+yap
+