From 2f138093e36591a1e8b0c3c9cdf73c2a6c444ce9 Mon Sep 17 00:00:00 2001 From: NikolajDanger Date: Wed, 1 Apr 2026 14:15:06 +0200 Subject: [PATCH] :goat: Examples --- examples/array_sum_max.cent | 15 +++++++++++++++ examples/bubble_sort.cent | 18 ++++++++++++++++++ examples/countdown.cent | 9 +++++++++ examples/factorial.cent | 12 ++++++++++++ examples/guessing.cent | 1 + examples/multiplication_table.cent | 10 ++++++++++ examples/rock_paper_scissors.cent | 17 +++++++++++++++++ examples/sieve.cent | 15 +++++++++++++++ 8 files changed, 97 insertions(+) create mode 100644 examples/array_sum_max.cent create mode 100644 examples/bubble_sort.cent create mode 100644 examples/countdown.cent create mode 100644 examples/factorial.cent create mode 100644 examples/multiplication_table.cent create mode 100644 examples/rock_paper_scissors.cent create mode 100644 examples/sieve.cent diff --git a/examples/array_sum_max.cent b/examples/array_sum_max.cent new file mode 100644 index 0000000..9364688 --- /dev/null +++ b/examples/array_sum_max.cent @@ -0,0 +1,15 @@ +// Calculates the sum and max of an array + +DESIGNA array VT [II,XVIII,XV,IX,XIV,XIV,I,VII,VIII,VI] +DESIGNA max VT NVLLVS +DESIGNA svm VT NVLLVS + +PER x IN array FACE { + DESIGNA svm VT svm + x + SI x PLVS max TVNC { + DESIGNA max VT x + } +} + +DICE("Sum:", svm) +DICE("Max:", max) \ No newline at end of file diff --git a/examples/bubble_sort.cent b/examples/bubble_sort.cent new file mode 100644 index 0000000..2f9d5a5 --- /dev/null +++ b/examples/bubble_sort.cent @@ -0,0 +1,18 @@ +// Bubble sort + +DESIGNA arr VT [V, III, VIII, I, IX, II, VII, IV, VI, X] +DESIGNA n VT LONGITVDO(arr) + +DONICVM i VT I VSQVE n FACE { + DONICVM k VT I VSQVE n - i + I FACE { + SI arr[k] PLVS arr[k + I] TVNC { + DESIGNA temp VT arr[k] + DESIGNA arr[k] VT arr[k + I] + DESIGNA arr[k + I] VT temp + } + } +} + +PER x IN arr FACE { + DICE(x) +} diff --git a/examples/countdown.cent b/examples/countdown.cent new file mode 100644 index 0000000..6cb6a45 --- /dev/null +++ b/examples/countdown.cent @@ -0,0 +1,9 @@ +// Counts down from 10 +DESIGNA conta VT X + +DVM conta MINVS I FACE { + DICE(conta) + DESIGNA conta VT conta - I +} + +DICE("Blast off!") diff --git a/examples/factorial.cent b/examples/factorial.cent new file mode 100644 index 0000000..276b8ef --- /dev/null +++ b/examples/factorial.cent @@ -0,0 +1,12 @@ +// Calculates the factorial of the given number +CVM MAGNVM + +DEFINI fact(n) VT { + SI n MINVS I TVNC { + REDI(I) + } ALVID { + REDI(n * INVOCA fact(n - I)) + } +} + +DICE(INVOCA fact(AVDI_NVMERVS())) \ No newline at end of file diff --git a/examples/guessing.cent b/examples/guessing.cent index ef4866b..6077350 100644 --- a/examples/guessing.cent +++ b/examples/guessing.cent @@ -1,3 +1,4 @@ +// A number guessing game CVM FORS DESIGNA correct VT FORTIS_NVMERVS(I,C) diff --git a/examples/multiplication_table.cent b/examples/multiplication_table.cent new file mode 100644 index 0000000..52a616c --- /dev/null +++ b/examples/multiplication_table.cent @@ -0,0 +1,10 @@ +// Prints an X×X multiplication table +DESIGNA n VT X + +DONICVM i VT I VSQVE n + I FACE { + DESIGNA line VT "" + DONICVM k VT I VSQVE n + I FACE { + DESIGNA line VT line : i * k : " " + } + DICE(line) +} diff --git a/examples/rock_paper_scissors.cent b/examples/rock_paper_scissors.cent new file mode 100644 index 0000000..ee490d7 --- /dev/null +++ b/examples/rock_paper_scissors.cent @@ -0,0 +1,17 @@ +// Rock, paper, scissors against the computer +CVM FORS + +DESIGNA choices VT ["PETRA", "CHARTA", "FORFEX"] +DESIGNA compvter VT FORTIS_ELECTIONIS(choices) +DICE("Choose: PETRA (rock), CHARTA (paper), or FORFEX (scissors)") +DESIGNA player VT AVDI() + +DICE("Computer chose:", compvter) + +SI player EST compvter TVNC { + DICE("Draw!") +} ALVID SI (player EST "PETRA" ET compvter EST "FORFEX") AVT (player EST "CHARTA" ET compvter EST "PETRA") AVT (player EST "FORFEX" ET compvter EST "CHARTA") TVNC { + DICE("You win!") +} ALVID { + DICE("Computer wins!") +} diff --git a/examples/sieve.cent b/examples/sieve.cent new file mode 100644 index 0000000..f7c40e0 --- /dev/null +++ b/examples/sieve.cent @@ -0,0 +1,15 @@ +// Finds all prime numbers up to L (50) + +DESIGNA n VT L + +DONICVM i VT II VSQVE n + I FACE { + DESIGNA is_prime VT VERITAS + DONICVM k VT II VSQVE i FACE { + SI (i / k) * k EST i TVNC { + DESIGNA is_prime VT FALSITAS + } + } + SI is_prime TVNC { + DICE(i) + } +}