Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Various small refactorings #39

Merged
merged 6 commits into from
Oct 26, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ ROOT := $(shell pwd)

BIN := bin

YS_VERSION := 0.1.79
YS_VERSION := 0.1.80

YS_LOCAL := .local
YS_LOCAL_PREFIX := $(YS_LOCAL)/v$(YS_VERSION)
Expand Down

This file was deleted.

1 change: 0 additions & 1 deletion exercises/practice/armstrong-numbers/.meta/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
"armstrong-numbers-test.ys",
"GNUmakefile",
"Makefile",
".yamlscript/exercise.mk",
".yamlscript/exercism-ys-installer"
],
"example": [
Expand Down

This file was deleted.

This file was deleted.

28 changes: 14 additions & 14 deletions exercises/practice/circular-buffer/.meta/circular-buffer-test.ys
Original file line number Diff line number Diff line change
Expand Up @@ -7,72 +7,72 @@ use: circular-buffer
test::
- name: Reading empty buffer should fail
code: run(1 [{"operation" "read", "should_succeed" false}])
want: true
want: {}
uuid: 28268ed4-4ff3-45f3-820e-895b44d53dfa

- name: Can read an item just written
code: run(1 [{"operation" "write", "item" 1, "should_succeed" true} {"operation" "read", "should_succeed" true, "expected" 1}])
want: true
want: {}
uuid: 2e6db04a-58a1-425d-ade8-ac30b5f318f3

- name: Each item may only be read once
code: run(1 [{"operation" "write", "item" 1, "should_succeed" true} {"operation" "read", "should_succeed" true, "expected" 1} {"operation" "read", "should_succeed" false}])
want: true
want: {}
uuid: 90741fe8-a448-45ce-be2b-de009a24c144

- name: Items are read in the order they are written
code: run(2 [{"operation" "write", "item" 1, "should_succeed" true} {"operation" "write", "item" 2, "should_succeed" true} {"operation" "read", "should_succeed" true, "expected" 1} {"operation" "read", "should_succeed" true, "expected" 2}])
want: true
want: {}
uuid: be0e62d5-da9c-47a8-b037-5db21827baa7

- name: Full buffer can't be written to
code: run(1 [{"operation" "write", "item" 1, "should_succeed" true} {"operation" "write", "item" 2, "should_succeed" false}])
want: true
want: {}
uuid: 2af22046-3e44-4235-bfe6-05ba60439d38

- name: A read frees up capacity for another write
code: run(1 [{"operation" "write", "item" 1, "should_succeed" true} {"operation" "read", "should_succeed" true, "expected" 1} {"operation" "write", "item" 2, "should_succeed" true} {"operation" "read", "should_succeed" true, "expected" 2}])
want: true
want: {}
uuid: 547d192c-bbf0-4369-b8fa-fc37e71f2393

- name: Read position is maintained even across multiple writes
code: run(3 [{"operation" "write", "item" 1, "should_succeed" true} {"operation" "write", "item" 2, "should_succeed" true} {"operation" "read", "should_succeed" true, "expected" 1} {"operation" "write", "item" 3, "should_succeed" true} {"operation" "read", "should_succeed" true, "expected" 2} {"operation" "read", "should_succeed" true, "expected" 3}])
want: true
want: {}
uuid: 04a56659-3a81-4113-816b-6ecb659b4471

- name: Items cleared out of buffer can't be read
code: run(1 [{"operation" "write", "item" 1, "should_succeed" true} {"operation" "clear"} {"operation" "read", "should_succeed" false}])
want: true
want: {}
uuid: 60c3a19a-81a7-43d7-bb0a-f07242b1111f

- name: Clear frees up capacity for another write
code: run(1 [{"operation" "write", "item" 1, "should_succeed" true} {"operation" "clear"} {"operation" "write", "item" 2, "should_succeed" true} {"operation" "read", "should_succeed" true, "expected" 2}])
want: true
want: {}
uuid: 45f3ae89-3470-49f3-b50e-362e4b330a59

- name: Clear does nothing on empty buffer
code: run(1 [{"operation" "clear"} {"operation" "write", "item" 1, "should_succeed" true} {"operation" "read", "should_succeed" true, "expected" 1}])
want: true
want: {}
uuid: e1ac5170-a026-4725-bfbe-0cf332eddecd

- name: Overwrite acts like write on non-full buffer
code: run(2 [{"operation" "write", "item" 1, "should_succeed" true} {"operation" "overwrite", "item" 2} {"operation" "read", "should_succeed" true, "expected" 1} {"operation" "read", "should_succeed" true, "expected" 2}])
want: true
want: {}
uuid: 9c2d4f26-3ec7-453f-a895-7e7ff8ae7b5b

- name: Overwrite replaces the oldest item on full buffer
code: run(2 [{"operation" "write", "item" 1, "should_succeed" true} {"operation" "write", "item" 2, "should_succeed" true} {"operation" "overwrite", "item" 3} {"operation" "read", "should_succeed" true, "expected" 2} {"operation" "read", "should_succeed" true, "expected" 3}])
want: true
want: {}
uuid: 880f916b-5039-475c-bd5c-83463c36a147

- name: Overwrite replaces the oldest item remaining in buffer following a read
code: run(3 [{"operation" "write", "item" 1, "should_succeed" true} {"operation" "write", "item" 2, "should_succeed" true} {"operation" "write", "item" 3, "should_succeed" true} {"operation" "read", "should_succeed" true, "expected" 1} {"operation" "write", "item" 4, "should_succeed" true} {"operation" "overwrite", "item" 5} {"operation" "read", "should_succeed" true, "expected" 3} {"operation" "read", "should_succeed" true, "expected" 4} {"operation" "read", "should_succeed" true, "expected" 5}])
want: true
want: {}
uuid: bfecab5b-aca1-4fab-a2b0-cd4af2b053c3

- name: Initial clear does not affect wrapping around
code: run(2 [{"operation" "clear"} {"operation" "write", "item" 1, "should_succeed" true} {"operation" "write", "item" 2, "should_succeed" true} {"operation" "overwrite", "item" 3} {"operation" "overwrite", "item" 4} {"operation" "read", "should_succeed" true, "expected" 3} {"operation" "read", "should_succeed" true, "expected" 4} {"operation" "read", "should_succeed" false}])
want: true
want: {}
uuid: 9cebe63a-c405-437b-8b62-e3fdc1ecec5a

done: 14
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ defn run(capacity operations):
-'write' : L(buffer pass item)
-'overwrite' : L(buffer pass item)
value("op-$op"): args*
=>: true
=>: -{}

defn op-clear(buffer):
M: :B V(buffer.B.# * [nil]) :P 0
Expand Down
1 change: 0 additions & 1 deletion exercises/practice/circular-buffer/.meta/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
"circular-buffer-test.ys",
"GNUmakefile",
"Makefile",
".yamlscript/exercise.mk",
".yamlscript/exercism-ys-installer"
],
"example": [
Expand Down
1 change: 0 additions & 1 deletion exercises/practice/circular-buffer/.yamlscript/exercise.mk

This file was deleted.

This file was deleted.

1 change: 0 additions & 1 deletion exercises/practice/collatz-conjecture/.meta/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
"collatz-conjecture-test.ys",
"GNUmakefile",
"Makefile",
".yamlscript/exercise.mk",
".yamlscript/exercism-ys-installer"
],
"example": [
Expand Down

This file was deleted.

1 change: 0 additions & 1 deletion exercises/practice/diamond/.meta/.yamlscript/exercise.mk

This file was deleted.

1 change: 0 additions & 1 deletion exercises/practice/diamond/.meta/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
"diamond-test.ys",
"GNUmakefile",
"Makefile",
".yamlscript/exercise.mk",
".yamlscript/exercism-ys-installer"
],
"example": [
Expand Down
1 change: 0 additions & 1 deletion exercises/practice/diamond/.yamlscript/exercise.mk

This file was deleted.

This file was deleted.

1 change: 0 additions & 1 deletion exercises/practice/eliuds-eggs/.meta/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
"eliuds-eggs-test.ys",
"GNUmakefile",
"Makefile",
".yamlscript/exercise.mk",
".yamlscript/exercism-ys-installer"
],
"example": [
Expand Down
1 change: 0 additions & 1 deletion exercises/practice/eliuds-eggs/.yamlscript/exercise.mk

This file was deleted.

This file was deleted.

1 change: 0 additions & 1 deletion exercises/practice/food-chain/.meta/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
"food-chain-test.ys",
"GNUmakefile",
"Makefile",
".yamlscript/exercise.mk",
".yamlscript/exercism-ys-installer"
],
"example": [
Expand Down
1 change: 0 additions & 1 deletion exercises/practice/food-chain/.yamlscript/exercise.mk

This file was deleted.

1 change: 0 additions & 1 deletion exercises/practice/grains/.meta/.yamlscript/exercise.mk

This file was deleted.

1 change: 0 additions & 1 deletion exercises/practice/grains/.meta/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
"grains-test.ys",
"GNUmakefile",
"Makefile",
".yamlscript/exercise.mk",
".yamlscript/exercism-ys-installer"
],
"example": [
Expand Down
1 change: 0 additions & 1 deletion exercises/practice/grains/.yamlscript/exercise.mk

This file was deleted.

1 change: 0 additions & 1 deletion exercises/practice/list-ops/.meta/.yamlscript/exercise.mk

This file was deleted.

1 change: 0 additions & 1 deletion exercises/practice/list-ops/.meta/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
"list-ops-test.ys",
"GNUmakefile",
"Makefile",
".yamlscript/exercise.mk",
".yamlscript/exercism-ys-installer"
],
"example": [
Expand Down
1 change: 0 additions & 1 deletion exercises/practice/list-ops/.yamlscript/exercise.mk

This file was deleted.

This file was deleted.

1 change: 0 additions & 1 deletion exercises/practice/pascals-triangle/.meta/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
"pascals-triangle-test.ys",
"GNUmakefile",
"Makefile",
".yamlscript/exercise.mk",
".yamlscript/exercism-ys-installer"
],
"example": [
Expand Down

This file was deleted.

12 changes: 5 additions & 7 deletions exercises/practice/perfect-numbers/.meta/perfect-numbers.ys
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,11 @@ defn classify(number):
when number <= 0:
die: 'Classification is only possible for positive integers.'

case compare(sum-of-divisors(number), number):
sum-of-divisors =:
sum:
for n range(1 quot(number 2).++) :when (number % n).!: n

case compare(sum-of-divisors, number):
0 :: perfect
1 :: abundant
-1 :: deficient

defn sum-of-divisors(number):
sum:
? for n range(1 quot(number 2).++)
:when (number % n).eq(0)
: n
1 change: 0 additions & 1 deletion exercises/practice/pig-latin/.meta/.yamlscript/exercise.mk

This file was deleted.

1 change: 0 additions & 1 deletion exercises/practice/pig-latin/.meta/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
"pig-latin-test.ys",
"GNUmakefile",
"Makefile",
".yamlscript/exercise.mk",
".yamlscript/exercism-ys-installer"
],
"example": [
Expand Down
1 change: 0 additions & 1 deletion exercises/practice/pig-latin/.yamlscript/exercise.mk

This file was deleted.

This file was deleted.

1 change: 0 additions & 1 deletion exercises/practice/resistor-color-duo/.meta/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
"resistor-color-duo-test.ys",
"GNUmakefile",
"Makefile",
".yamlscript/exercise.mk",
".yamlscript/exercism-ys-installer"
],
"example": [
Expand Down

This file was deleted.

This file was deleted.

1 change: 0 additions & 1 deletion exercises/practice/resistor-color/.meta/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
"resistor-color-test.ys",
"GNUmakefile",
"Makefile",
".yamlscript/exercise.mk",
".yamlscript/exercism-ys-installer"
],
"example": [
Expand Down
1 change: 0 additions & 1 deletion exercises/practice/resistor-color/.yamlscript/exercise.mk

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,5 +1,14 @@
#!/usr/bin/env ys-0


# Disallow ys::std/reverse
defn reverse(*):
die: "Using the builtin 'reverse' function is disallowed for this exercise."
intern \'ys::std \'reverse: reverse
intern \'clojure::core \'reverse: reverse
ns-unmap \'clojure::string: \'reverse


require ys::taptest: :all

use: reverse-string
Expand Down
5 changes: 1 addition & 4 deletions exercises/practice/reverse-string/.meta/reverse-string.ys
Original file line number Diff line number Diff line change
@@ -1,7 +1,4 @@
!yamlscript/v0

defn reverse(s):
loop s s, r '':
if s.?:
recur: rest(s) "$first(s)$r"
else: r
reduce \(%2 + %1) '': s
9 changes: 9 additions & 0 deletions exercises/practice/reverse-string/reverse-string-test.ys
Original file line number Diff line number Diff line change
@@ -1,5 +1,14 @@
#!/usr/bin/env ys-0


# Disallow ys::std/reverse
defn reverse(*):
die: "Using the builtin 'reverse' function is disallowed for this exercise."
intern \'ys::std \'reverse: reverse
intern \'clojure::core \'reverse: reverse
ns-unmap \'clojure::string: \'reverse


require ys::taptest: :all

use: reverse-string
Expand Down
1 change: 0 additions & 1 deletion exercises/practice/sieve/.meta/.yamlscript/exercise.mk

This file was deleted.

1 change: 0 additions & 1 deletion exercises/practice/sieve/.meta/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
"sieve-test.ys",
"GNUmakefile",
"Makefile",
".yamlscript/exercise.mk",
".yamlscript/exercism-ys-installer"
],
"example": [
Expand Down
1 change: 0 additions & 1 deletion exercises/practice/sieve/.yamlscript/exercise.mk

This file was deleted.

This file was deleted.

1 change: 0 additions & 1 deletion exercises/practice/spiral-matrix/.meta/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
"spiral-matrix-test.ys",
"GNUmakefile",
"Makefile",
".yamlscript/exercise.mk",
".yamlscript/exercism-ys-installer"
],
"example": [
Expand Down
1 change: 0 additions & 1 deletion exercises/practice/spiral-matrix/.yamlscript/exercise.mk

This file was deleted.

This file was deleted.

1 change: 0 additions & 1 deletion exercises/practice/square-root/.meta/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
"square-root-test.ys",
"GNUmakefile",
"Makefile",
".yamlscript/exercise.mk",
".yamlscript/exercism-ys-installer"
],
"example": [
Expand Down
1 change: 0 additions & 1 deletion exercises/practice/square-root/.yamlscript/exercise.mk

This file was deleted.

1 change: 0 additions & 1 deletion exercises/practice/strain/.meta/.yamlscript/exercise.mk

This file was deleted.

1 change: 0 additions & 1 deletion exercises/practice/strain/.meta/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
"strain-test.ys",
"GNUmakefile",
"Makefile",
".yamlscript/exercise.mk",
".yamlscript/exercism-ys-installer"
],
"example": [
Expand Down
1 change: 0 additions & 1 deletion exercises/practice/strain/.yamlscript/exercise.mk

This file was deleted.

This file was deleted.

1 change: 0 additions & 1 deletion exercises/practice/two-bucket/.meta/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
"two-bucket-test.ys",
"GNUmakefile",
"Makefile",
".yamlscript/exercise.mk",
".yamlscript/exercism-ys-installer"
],
"example": [
Expand Down
1 change: 0 additions & 1 deletion exercises/practice/two-bucket/.yamlscript/exercise.mk

This file was deleted.