added new examples

This commit is contained in:
2024-08-22 00:24:19 +03:00
parent 4367febcd7
commit 4c8409da35
10 changed files with 203 additions and 6 deletions

19
examples/euler/1.kurt Normal file
View File

@@ -0,0 +1,19 @@
;; test
;; (format nil "~a~%" 233168)
;; https://projecteuler.net/problem=1
;; 1000den küçük, 3 veya 5 in katı olan tüm sayıların toplamını bulun.
;; Örnek: 10 için 3 + 5 + 6 + 9 = 23
makro problem-girdi 1000 son
0 3 döngü eş problem-girdi < iken
eş 3 % 0 =
üst 5 % 0 =
| ise
eş rot + değiş
yap
1 +
yap düş
dump

21
examples/euler/2.kurt Normal file
View File

@@ -0,0 +1,21 @@
;; test
;; (format nil "~a~%" 4613732)
;; https://projecteuler.net/problem=2
;; Fibonacci serisi,
;; f(0) = 0, f(1) = 1 ve f(n) = f(n-1) + f(n-2)
;; şeklinde tanımlanmış bir dizidir.
;; 0 1 1 2 3 5 8 13 21 34 55 89... gibi
;; 4 milyondan küçük ve çift sayı olan ögelerin toplamını bulun.
kütüphane "std.kurt"
bel 0 store64
0 1 döngü eş 4000000 < iken
eş 2 % 0 = ise
eş bel load64 +
bel değiş store64
yap
değiş üst +
yap düş düş
bel load64 dump

16
examples/euler/3.kurt Normal file
View File

@@ -0,0 +1,16 @@
;; test
;; (format nil "~a~%" 6857)
;; https://projecteuler.net/problem=3
;; 13195 sayısının asal çarpanları 5, 7, 13 ve 29 dur.
;; 600851475143 sayısının en büyük asal çarpanını bulun.
kütüphane "std.kurt"
600851475143 2 döngü üst 1 > iken
2eş % 0 = ise
değiş üst / değiş
yoksa
1 +
yap
yap dump

32
examples/euler/4.kurt Normal file
View File

@@ -0,0 +1,32 @@
;; test
;; (format nil "~a~%" 906609)
;; palindrom sayılar ters çevrildiğinde kendine eşit olan sayılardır.
;; iki basamaklı iki sayının çarpımından oluşan en büyük palindrom
;; 9009 = 91 x 99 dur.
;; üç basamaklı iki sayının çarpımından oluşan en büyük palindromu bulun.
kütüphane "std.kurt"
makro palindrome? (a -- bool)
0 döngü üst 0 > iken
10 * üst 10 % + ;;eş dump
değiş 10 / değiş
yap değiş düş
=
son
bel 0 store64
100 döngü eş 1000 < iken
100 döngü eş 1000 < iken
2eş * eş palindrome? ise
eş bel load64 > ise
eş bel değiş store64
yap
yap düş
1 +
yap düş
1 +
yap düş
bel load64 dump

31
examples/euler/5.kurt Normal file
View File

@@ -0,0 +1,31 @@
;; test
;; (format nil "~a~%" 232792560)
;; 2520, 1den 10a kadar tüm sayılara tam bölünen en küçük sayıdır.
;; 1den 20ye kadar tüm sayılara tam* bölünebilen en küçük sayıyı bulun.
;; * kalansız bölünen
kütüphane "std.kurt"
makro N 20 son
makro cevap bel son
makro gcd (a b -- c)
döngü üst iken
üst % değiş
yap
değiş düş
son
makro lcd (a b -- c)
2eş * rot rot gcd /
son
cevap 1 store64
1 döngü eş N < iken
cevap
üst cevap load64 lcd
store64
1 +
yap
cevap load64 dump

View File

@@ -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;
}

View File

@@ -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

View File

@@ -1,8 +1,14 @@
;; Currently makro stack notation is ignored by the compiler.
makro stdout 1 son
makro sys-write 1 son
makro write (fd string -- )
değiş sys-write syscall-3 son
makro stdout 1 son
değiş sys-write syscall-3
son
makro sys-exit 60 son
makro çık (çıkış-kodu -- )
sys-exit syscall-1
son
makro / (a b -- (a / b)) divmod düş son
makro % (a b -- (a % b)) divmod değiş düş son
@@ -30,4 +36,10 @@ makro store64 (bel a -- )
2eş byte-max & yaz 8 >> değiş 1 + değiş
2eş byte-max & yaz 8 >> değiş 1 + değiş
2eş byte-max & yaz 8 >> düş düş
son
son
makro strlen (ptr -- len)
0 değiş döngü eş oku iken
1 + değiş 1 + değiş
yap düş
son

View File

@@ -1,3 +0,0 @@
kütüphane "std.lorth"
stdout "Merhaba Dünya!\n" write

6
test/print.kurt Normal file
View File

@@ -0,0 +1,6 @@
;; test
;; (format nil "Merhaba Dunya!~%")
kütüphane "std.kurt"
stdout "Merhaba Dunya!\n" write