diff options
author | A404M <ahmadmahmoudiprogrammer@gmail.com> | 2025-05-16 01:20:33 +0330 |
---|---|---|
committer | A404M <ahmadmahmoudiprogrammer@gmail.com> | 2025-05-16 01:20:33 +0330 |
commit | 42eb5e5d3f10c3a9187dcf8edd7c023a3ea10dcd (patch) | |
tree | 78862ab27c3b1faf2d9ed5722bceb0264602bd1a /code | |
parent | 0b8d272292ca3f7fdb44efac65f012b484d962a2 (diff) |
fix access operator and some stuff to make break work
Diffstat (limited to 'code')
-rw-r--r-- | code/file.felan | 134 | ||||
-rw-r--r-- | code/main.felan | 73 |
2 files changed, 17 insertions, 190 deletions
diff --git a/code/file.felan b/code/file.felan index 715c8db..64661b5 100644 --- a/code/file.felan +++ b/code/file.felan @@ -1,133 +1,3 @@ -/* -@import("basic.felan"); - -print :: (value:[]u8)->void{ - i :u64 = 0; - while i < value.length { - putc value[i]; - i += @cast(1,u64); - } +foo :: () -> void { + putc 'a'; }; - -print :: (value:i64)->void{ - value := value; - str : [20]u8 = undefined; - i :u64= 19; - while { - str[i] = @cast(value % 10,u8) + '0'; - i -= @cast(1,u64); - value /= 10; - value != 0; - } {} - - j :u64= i+@cast(1,u64); - while j < @cast(20,u64) { - putc str[j]; - j += @cast(1,u64); - } -}; - -println :: (value:i64)->void{ - print(value); - putc '\n'; -}; - -println :: ()->void{ - putc '\n'; -}; - -main :: () -> void { - stones := 6; - player := 1; - while stones != 0 { - c := choose_ai(stones); - print("player: "); - print(player); - print(" ---------\n"); - println(stones); - println(c); - - if (stones == 2 || stones == 1) && stones == c { - print("player: "); - print(player); - print(" won\n"); - } - - stones -= c; - - player = (if (player == 1) 2 else 1); - } -}; - -choose_ai :: (stones_left:i64) -> i64 { - return (if (stones_left % 3 == 0) 1 else stones_left % 3); -}; -*/ -@import("basic.felan"); - -main :: () -> void { - stones := 6; - player := 1; - while stones > 0 { - r :res =minimax(stones,true); - stones -= r.move; - putc @cast(stones,u8) + '0'; - putc '\n'; - putc 'p'; - putc @cast(player,u8) + '0'; - putc '\n'; - player = (if player == 2 1 else 2); - } -}; - -res :: struct { - move : i64; - score : i64; -}; - -minimax :: (currentStones:i64, isMaximizing:bool) -> res { - if currentStones <= 0 { - r : res = undefined; - r.move = 0; - r.score = (if isMaximizing {-1;} else {1;}); - return r; - } - - found := false; - bestMove : res = undefined; - score := (if isMaximizing {-1000000;} else {1000000;}); - move := 1; - - while move <= 2 { - if currentStones - move >= 0 { - found = true; - result := minimax(currentStones - move, !isMaximizing); - if isMaximizing { - if result.score > score { - bestMove.move = move; - bestMove.score = result.score; - score = result.score; - } - }else{ - if result.score < score { - bestMove.move = move; - bestMove.score = result.score; - score = result.score; - } - } - } - move += 1; - } - - if !found { - r : res = undefined; - r.move = 0; - r.score = (if isMaximizing {-1;} else {1;}); - return r; - } - - return bestMove; -}; - - - diff --git a/code/main.felan b/code/main.felan index e2c056b..7f9b130 100644 --- a/code/main.felan +++ b/code/main.felan @@ -1,68 +1,25 @@ @import("basic.felan"); +file :: @import("file.felan"); -main :: () -> void { - stones := 6; - player := 1; - while stones > 0 { - r :res =minimax(stones,true); - stones -= r.move; - putc @cast(stones,u8) + '0'; - putc '\n'; - putc 'p'; - putc @cast(player,u8) + '0'; - putc '\n'; - player = (if player == 2 1 else 2); - } +foo :: () -> void { + putc 'b'; }; -res :: struct { - move : i64; - score : i64; +main :: () -> void { + file.foo(); +// foo(); }; -minimax :: (currentStones:i64, isMaximizing:bool) -> res { - if currentStones <= 0 { - r : res = undefined; - r.move = 0; - r.score = (if isMaximizing {-1;} else {1;}); - return r; - } - - found := false; - bestMove : res = undefined; - score := (if isMaximizing {-1000000;} else {1000000;}); - move := 1; - while move <= 2 { - if currentStones - move >= 0 { - found = true; - result : res = minimax(currentStones - move, !isMaximizing); - if isMaximizing { - if result.score > score { - bestMove.move = move; - bestMove.score = result.score; - score = result.score; - } - }else{ - if result.score < score { - bestMove.move = move; - bestMove.score = result.score; - score = result.score; - } - } - } - move += 1; - } +/* +@import("basic.felan"); - if !found { - r : res = undefined; - r.move = 0; - r.score = (if isMaximizing {-1;} else {1;}); - return r; +main :: () -> void { + i := 0; + while i < 10 { + putc @cast(i,u8)+'0'; + i += 1; +// break; } - - return bestMove; }; - - - +*/ |