added new examples
This commit is contained in:
19
examples/euler/1.kurt
Normal file
19
examples/euler/1.kurt
Normal 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
21
examples/euler/2.kurt
Normal 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
16
examples/euler/3.kurt
Normal 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
32
examples/euler/4.kurt
Normal 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)
|
||||
eş
|
||||
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
31
examples/euler/5.kurt
Normal 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
|
||||
23
examples/rule110/rule110.c
Normal file
23
examples/rule110/rule110.c
Normal 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;
|
||||
}
|
||||
40
examples/rule110/rule110.kurt
Normal file
40
examples/rule110/rule110.kurt
Normal 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
|
||||
|
||||
@@ -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
|
||||
@@ -1,3 +0,0 @@
|
||||
kütüphane "std.lorth"
|
||||
|
||||
stdout "Merhaba Dünya!\n" write
|
||||
6
test/print.kurt
Normal file
6
test/print.kurt
Normal file
@@ -0,0 +1,6 @@
|
||||
;; test
|
||||
;; (format nil "Merhaba Dunya!~%")
|
||||
|
||||
kütüphane "std.kurt"
|
||||
|
||||
stdout "Merhaba Dunya!\n" write
|
||||
Reference in New Issue
Block a user