Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
253 commits
Select commit Hold shift + click to select a range
27178b7
Merge pull request #6 from BNAndras/add-darts-exercise
BNAndras Jun 25, 2023
ee759bc
Initial implementation of resistor-color (#7)
BNAndras Jun 25, 2023
fc58ed6
Initial commit of the triangle exercise (#11)
BNAndras Jun 25, 2023
3fc8d20
Initial implementation of isogram exercise (#9)
BNAndras Jun 25, 2023
a18a9c8
Initial implementation of leap exercise (#10)
BNAndras Jun 25, 2023
a50d5ea
Initial implementation of add-resistor-color-duo exercise (#12)
BNAndras Jun 25, 2023
76e32fb
Merge pull request #2 from exercism-bot/🤖/org-wide-files/5365557879
BNAndras Jun 25, 2023
18967cd
Update config.json to avoid configlet lint warnings
BNAndras Jun 27, 2023
627a9d3
Merge pull request #15 from BNAndras/update-config.json
BNAndras Jun 27, 2023
c9e5c95
Add collatz conjecture exercise (#17)
BNAndras Jun 27, 2023
6dd6656
Initial implementation of protein translation exercise (#18)
BNAndras Jun 28, 2023
0f24571
Add ETL
meatball133 Jun 30, 2023
718d0c7
Add new line
meatball133 Jun 30, 2023
6d4b3cb
Remove jarr file
meatball133 Jun 30, 2023
01cd374
Update gitignore to ignore Pyret compilaton files.
BNAndras Jul 1, 2023
234e4a2
Merge pull request #26 from BNAndras/update-gitignore
BNAndras Jul 1, 2023
ddea106
Merge pull request #23 from meatball133/add-etl
BNAndras Jul 1, 2023
64905e0
Initial implementation of raindrops (#27)
BNAndras Jul 2, 2023
e6fdc00
Implement D&D Character exercise (#20)
BNAndras Jul 2, 2023
f65a550
Add space age exercise (#28)
BNAndras Jul 2, 2023
b5e6714
Initial track docs (#29)
BNAndras Jul 4, 2023
9ebe487
shared docs for exercises (#30)
BNAndras Jul 5, 2023
cada2a1
Add secret handshake (#31)
BNAndras Jul 5, 2023
8ebb58e
Add matrix exercise (#32)
BNAndras Jul 5, 2023
e2f098e
Add anagrams exercise (#33)
BNAndras Jul 5, 2023
cb9bb1b
add nucleotide-count exercise (#34)
BNAndras Jul 6, 2023
ea818d5
Add binary-search (#35)
meatball133 Jul 7, 2023
708d5ba
Initial implementation of grains exercise (#36)
BNAndras Jul 9, 2023
823fde6
Add bob exercise (#37)
BNAndras Jul 9, 2023
f2c6550
Add series exercise (#38)
BNAndras Jul 10, 2023
e7ab183
Update config.json
BNAndras Jul 10, 2023
6d77346
add difference of squares exercise (#39)
BNAndras Jul 10, 2023
2e827ab
Add atbash cipher exercise (#40)
BNAndras Jul 10, 2023
69a6ce5
Update platform tags in config.json
BNAndras Jul 12, 2023
be8a18b
Add two-fer exercise (#25)
BNAndras Jul 12, 2023
8490933
Update typo in config.json
BNAndras Jul 12, 2023
76cfe07
Testing CI (#43)
BNAndras Jul 20, 2023
aac1bee
Revert "Testing CI (#43)" (#44)
BNAndras Jul 20, 2023
117fd17
Add reverse string (#45)
BNAndras Jul 21, 2023
903cac3
Update docs (#46)
BNAndras Jul 21, 2023
22f401d
Minor idiomatic tweaks (#48)
BNAndras Jul 21, 2023
5edad7a
Swap example and stub for atbash cipher exercise (#49)
BNAndras Jul 22, 2023
65eb71a
add armstrong-numbers (#50)
BNAndras Jul 24, 2023
ae6e4ed
Update highlight.js keyword (#52)
BNAndras Jul 24, 2023
bc00a38
Reorder practice exercises (#53)
BNAndras Jul 24, 2023
0f632a7
Add acronym exercise (#55)
BNAndras Jul 25, 2023
0d66c3e
Update example.arr (#56)
BNAndras Jul 26, 2023
8b1b949
Update example.arr for two-fer (#57)
BNAndras Jul 26, 2023
3eef985
Initial implementation of bin/test for verifying exercises (#58)
BNAndras Jul 26, 2023
568f48c
Remove rounding requirement for space-age (#59)
BNAndras Jul 27, 2023
0852441
Implement CI for testing exercises (#60)
BNAndras Jul 30, 2023
996b1ef
Update test.yml (#61)
BNAndras Jul 31, 2023
f2ccc0b
Update documents (#62)
BNAndras Jul 31, 2023
accebeb
Update config.json
BNAndras Aug 1, 2023
9ad9f35
Update config.json
BNAndras Aug 1, 2023
9fcd046
Update config.json
iHiD Aug 1, 2023
9dc76b3
Update doc markdown for links (#63)
BNAndras Aug 1, 2023
1279c4b
Update typo and links (#64)
BNAndras Aug 1, 2023
7ddcb19
Add scrabble score (#65)
BNAndras Aug 1, 2023
0e901e1
Add resistor-color-trio (#66)
BNAndras Aug 2, 2023
96e6108
Add square-root exercise (#67)
BNAndras Aug 2, 2023
415e145
Add pangram exercise (#68)
BNAndras Aug 2, 2023
63e10ac
Add hamming (#69)
BNAndras Aug 2, 2023
7bb32d4
Add luhn exercise (#70)
BNAndras Aug 3, 2023
00ea2f4
Enable test runner (#71)
ErikSchierboom Aug 3, 2023
75bc26f
Change dict types for clarity (#72)
BNAndras Aug 4, 2023
453ae61
Use string dict (#76)
meatball133 Aug 6, 2023
dbde61c
Add perfect-numbers (#77)
BNAndras Aug 6, 2023
09957c9
Add roman numerals (#78)
BNAndras Aug 7, 2023
9bdbc72
Add foregones (#81)
BNAndras Aug 8, 2023
8cecff0
Add rna-transcription exercise (#82)
BNAndras Aug 8, 2023
ec099f7
Add phone-number exercise (#83)
BNAndras Aug 8, 2023
fec979e
Update RESOURCES.md
BNAndras Aug 11, 2023
8f644f4
Add word count (#84)
BNAndras Aug 15, 2023
663b48f
Add strain exercise (#85)
BNAndras Aug 15, 2023
1344821
Fix strain name typo (#86)
BNAndras Aug 15, 2023
5861c35
Add list ops (#89)
BNAndras Aug 21, 2023
a3af169
Avoid shadowing essentials2021 names in CPO (#90)
BNAndras Aug 21, 2023
b37141c
Bump pyret-npm version (#91)
BNAndras Aug 24, 2023
a958ab3
Explicitly set essentials2020 context (#92)
BNAndras Aug 24, 2023
616cfec
Bump actions/checkout from 3 to 4 (#95)
dependabot[bot] Sep 4, 2023
36bde39
Add queen-attack-exercise (#96)
BNAndras Sep 5, 2023
a6efe9e
Sync instructions (#97)
BNAndras Sep 5, 2023
f870249
Update README.md (#98)
BNAndras Sep 6, 2023
a17ab40
Add pending test support for acronym (#101)
BNAndras Sep 14, 2023
a5f554f
Clarify anagram testing comment (#103)
BNAndras Sep 17, 2023
eeccf03
Add bank-account exercise files (#102)
BNAndras Sep 17, 2023
7ef8ffe
Add pending test support for anagram (#104)
BNAndras Sep 17, 2023
8951254
Add pending test support for armstrong-numbers (#105)
BNAndras Sep 17, 2023
53717b0
Add proverb exercise (#106)
BNAndras Sep 17, 2023
631ef11
Add pending test support to atbash-cipher (#107)
BNAndras Sep 19, 2023
6d8556c
Add pending tests to binary search (#108)
BNAndras Sep 19, 2023
dead587
Add pending test support to bob (#109)
BNAndras Sep 19, 2023
f16ba3e
Add pending test support for collatz-conjecture (#110)
BNAndras Sep 19, 2023
0e9c1cb
Add pending tests to dart (#111)
BNAndras Sep 20, 2023
d2265fe
Update pending tests for difference-of-squares (#112)
BNAndras Sep 20, 2023
e5df4ab
Add pending test support to D&D character (#113)
BNAndras Sep 20, 2023
67972b6
Change dnd-character to use data declarations (#114)
BNAndras Sep 20, 2023
678e827
Update etl tests for pending support (#115)
BNAndras Sep 20, 2023
c98d442
Add pending tests to grains (#116)
BNAndras Sep 20, 2023
cb42567
Bump pyret-npm version (#117)
BNAndras Sep 20, 2023
97e6a65
Revert hello world alias (#118)
BNAndras Sep 20, 2023
a0088e6
Add high scores (#79)
BNAndras Sep 20, 2023
ef2c7a6
Bump pyret version (#119)
BNAndras Sep 20, 2023
3afd15e
Add pending test support to hamming (#120)
BNAndras Sep 20, 2023
0df8d03
Pending test for hello-world (#121)
BNAndras Sep 21, 2023
0233d93
Add pending test support to isogram (#122)
BNAndras Sep 21, 2023
3e48cc9
Add pending test support to CI (#123)
BNAndras Sep 21, 2023
3fe6b7d
Missing test documentation for isogram (#124)
BNAndras Sep 21, 2023
deaa6f2
Update pending tests for leap (#125)
BNAndras Sep 21, 2023
9f9004c
Add pending tests to list-ops (#126)
BNAndras Sep 23, 2023
561e34b
Add pending tests to luhn (#127)
BNAndras Sep 23, 2023
856e60f
Add pending tests to matrix (#128)
BNAndras Sep 23, 2023
3d52398
Add pending tests to nucleotide-count (#129)
BNAndras Sep 23, 2023
d6c199e
Add pending test support to pangram (#130)
BNAndras Sep 23, 2023
4b8c3f6
Add pending test support to perfect-numbers (#131)
BNAndras Sep 23, 2023
34e715d
Add pending test support to phone-number (#132)
BNAndras Sep 23, 2023
6d0409e
Add pending test support to protein-translation (#133)
BNAndras Sep 23, 2023
0a07037
Add pending test support to queen-attack (#134)
BNAndras Sep 23, 2023
91c7590
Add pending test support to raindrops (#135)
BNAndras Sep 24, 2023
c7485a0
Add pending test support to resistor-color (#136)
BNAndras Sep 24, 2023
dbab03c
Add pending test support to resistor-color-duo (#137)
BNAndras Sep 24, 2023
ca35891
Add pending test support to resistor-color-trio (#138)
BNAndras Sep 24, 2023
5bd0f34
Add pending test support to reverse-string (#139)
BNAndras Sep 24, 2023
70f86ac
Add pending test support to rna-transcription (#140)
BNAndras Sep 24, 2023
af6a463
Add pending test support to roman-numerals (#141)
BNAndras Sep 24, 2023
7693192
Update pending tests for scrabble-score (#142)
BNAndras Sep 24, 2023
035d265
Add pending test support for secret-handshake (#143)
BNAndras Sep 25, 2023
37f500b
Add pending test suppport for series (#144)
BNAndras Sep 25, 2023
73d43da
Add pending tests to square-root (#146)
BNAndras Sep 25, 2023
3070d5c
Add pending tests to space-age (#145)
BNAndras Sep 25, 2023
d412401
Add pending test support to strain (#147)
BNAndras Sep 25, 2023
ad9b507
Add pending test support for triangle (#148)
BNAndras Sep 25, 2023
6655a3f
Add pending test support to two-fer (#149)
BNAndras Sep 25, 2023
f53acfd
Add pending test support to word-count (#150)
BNAndras Sep 25, 2023
7b52dcd
One sentence per line (#152)
BNAndras Sep 28, 2023
a564956
Add simple-linked-list (#87)
BNAndras Sep 28, 2023
e7f900c
Update TESTS.md with pending test info (#151)
BNAndras Sep 28, 2023
b7d5aff
First pass at practices (#153)
BNAndras Oct 4, 2023
c7070f6
Update contributing section (#154)
BNAndras Oct 4, 2023
4e87e5e
Four spaces to two in SNIPPET.txt (#156)
BNAndras Oct 16, 2023
f4ac32a
Add introduction to booleans concept (#155)
BNAndras Oct 16, 2023
3494506
Add pop-count exercise (#157)
BNAndras Oct 17, 2023
e82fc0a
Remove unneeded line in example.arr
BNAndras Oct 19, 2023
c3eb154
format config.json files (#158)
BNAndras Oct 21, 2023
b14b53c
Bump actions/setup-node from 3 to 4 (#159)
dependabot[bot] Oct 24, 2023
629fc0a
Fix indentation in protein-translation tests (#160)
BNAndras Oct 30, 2023
09b457e
Add flatten-array (#51)
BNAndras Nov 1, 2023
0f468b8
Initial implementation of the clock exercise (#19)
BNAndras Nov 1, 2023
7314bb2
Update the metadata for the `pop-count` exercise (#161)
ErikSchierboom Nov 1, 2023
36e1846
Rework part of the track tests doc (#162)
IsaacG Nov 4, 2023
d037851
Format configs with configlet fmt (#163)
BNAndras Nov 4, 2023
2562178
Pin GitHub Actions runners to a specific version (#164)
ErikSchierboom Nov 9, 2023
da4d5bd
Pin GitHub Actions workflows to a specific version (#165)
ErikSchierboom Nov 14, 2023
d386fa3
Bump actions/setup-node from 4.0.0 to 4.0.1 (#166)
dependabot[bot] Dec 18, 2023
3ea8c83
debug.md: removes quotes from links (#167)
ErikSchierboom Dec 19, 2023
7a3071a
Fix argument order for list-ops (#171)
BNAndras Dec 23, 2023
d9d12fd
Simplify queen-attack stub (#172)
BNAndras Dec 23, 2023
b8742d2
Simplify simple-linked-list stub (#173)
BNAndras Dec 23, 2023
c41e510
Configlet sync docs and metadata (#174)
BNAndras Dec 23, 2023
aa51498
Update anagram tests (#175)
BNAndras Dec 23, 2023
39425d7
Update D&D character (#169)
glennj Dec 27, 2023
57d8c81
Add boolean chain approach (#178)
BNAndras Jan 16, 2024
15919fb
leap: sync (#179)
ErikSchierboom Jan 16, 2024
ecd5ef7
Add more leap approaches (#180)
BNAndras Jan 17, 2024
4af318a
Sync fetch-configlet.ps1 script (#181)
ErikSchierboom Jan 25, 2024
ab267af
🤖 Sync org-wide files to upstream repo (#182)
exercism-bot Jan 25, 2024
1edbdcf
🤖 Sync org-wide files to upstream repo (#183)
exercism-bot Feb 1, 2024
441636b
Rename the `pop-count` exercise to `eliuds-eggs`. (#184)
ErikSchierboom Feb 2, 2024
fd61aa3
Fix remaining pop-count references (#185)
BNAndras Feb 3, 2024
78d592f
Deprecate binary search (#186)
BNAndras Feb 6, 2024
63e1483
Bump actions/setup-node from 4.0.1 to 4.0.2 (#187)
dependabot[bot] Feb 7, 2024
2e34f20
Update track docs (#188)
BNAndras Feb 14, 2024
e9af13f
Update INSTALLATION.md (#189)
BNAndras Feb 14, 2024
cdd43f6
Forego parallel-letter-frequency (#190)
BNAndras Feb 25, 2024
b4b9655
Test name typo (#191)
BNAndras Feb 25, 2024
b56c370
🤖 Sync org-wide files to upstream repo (#192)
exercism-bot Mar 1, 2024
453be9f
Fix function names in test example (#193)
BNAndras Mar 4, 2024
f6a43e8
Bump actions/checkout from 4.1.1 to 4.1.2 (#194)
dependabot[bot] Mar 12, 2024
acfc12b
Sync docs and metadata (#195)
BNAndras Mar 13, 2024
29b01f8
Add circular buffer (#196)
BNAndras Mar 13, 2024
aec43b2
Add robot-simulator (#176)
BNAndras Mar 14, 2024
03bdafa
Launch track
BNAndras Mar 18, 2024
5f007c9
Merge pull request #198 from BNAndras/launch-track
iHiD Mar 18, 2024
b763c5b
Standardize difficulty and sort exercises (#199)
BNAndras Mar 20, 2024
25841f6
Add allergies (#201)
BNAndras Mar 21, 2024
07f8ef1
Fix CI breakage (#202)
BNAndras Mar 21, 2024
02c31c8
🤖 Sync org-wide files to upstream repo (#203)
exercism-bot Mar 27, 2024
ce18826
Sync with problem-specs (#204)
glennj Mar 30, 2024
b4fbfc1
add sieve exercise (#205)
glennj Mar 30, 2024
8511c16
Sync with recent probspec changes (#206)
glennj Apr 10, 2024
236e28e
Fix missing warnings about changing essentials2020 (#207)
BNAndras Apr 11, 2024
0dd132d
Revert exercise name (#208)
BNAndras Apr 11, 2024
caa9ca3
Fix appends not showing on site (#209)
BNAndras Apr 11, 2024
e0f64e6
Bump actions/checkout from 4.1.2 to 4.1.3 (#210)
dependabot[bot] Apr 22, 2024
f8b97d5
Bump actions/checkout from 4.1.3 to 4.1.4 (#211)
dependabot[bot] Apr 24, 2024
90579c0
Bump actions/checkout from 4.1.4 to 4.1.5 (#212)
dependabot[bot] May 7, 2024
47a3118
Bump actions/checkout from 4.1.5 to 4.1.6 (#213)
dependabot[bot] May 17, 2024
24076d6
Sync the `bank-account` exercise's docs with the latest data. (#214)
ErikSchierboom May 24, 2024
9d85a2c
Bump actions/checkout from 4.1.6 to 4.1.7 (#215)
dependabot[bot] Jun 13, 2024
d54a5f1
Update snippet (#216)
BNAndras Jul 1, 2024
0eb0016
Bump actions/setup-node from 4.0.2 to 4.0.3 (#218)
dependabot[bot] Jul 9, 2024
3a13c72
🤖 Sync org-wide files to upstream repo (#217)
exercism-bot Jul 10, 2024
ed56352
Sync the `resistor-color-trio` exercise's docs with the latest data. …
ErikSchierboom Jul 11, 2024
d48ce45
Sync the `resistor-color-duo` exercise's docs with the latest data. (…
ErikSchierboom Jul 11, 2024
94a0ee8
Sync the `resistor-color` exercise's docs with the latest data. (#219)
ErikSchierboom Jul 11, 2024
ea395b0
Sync docs (#222)
BNAndras Sep 4, 2024
6595092
Change the interval for dependabot updates to monthly (#223)
ErikSchierboom Sep 4, 2024
cf4f698
🤖 Sync org-wide files to upstream repo (#224)
exercism-bot Sep 5, 2024
dd3c469
Sync `protein-translation` tests (#225)
BNAndras Sep 20, 2024
e5efbac
Bump actions/setup-node from 4.0.3 to 4.0.4 (#226)
dependabot[bot] Oct 1, 2024
afa182b
Bump actions/checkout from 4.1.7 to 4.2.0 (#227)
dependabot[bot] Oct 1, 2024
fdda546
Set explicit upstream for check-no-important-files-changed (#228)
BNAndras Oct 17, 2024
83435b3
Test of no important changes (#230)
BNAndras Oct 17, 2024
c40ed39
Bump actions/setup-node from 4.0.4 to 4.1.0 (#232)
dependabot[bot] Nov 1, 2024
2f3556a
Bump actions/checkout from 4.2.0 to 4.2.2 (#233)
dependabot[bot] Nov 1, 2024
2c9472d
Sync docs (#234)
BNAndras Nov 7, 2024
b46bf4f
Add `anagram` append with instructions about the order of the return …
IsaacG Jan 15, 2025
9d71680
Bump actions/setup-node from 4.1.0 to 4.2.0 (#236)
dependabot[bot] Feb 1, 2025
e6397dd
Sync docs and metadata (#237)
BNAndras Mar 22, 2025
215c250
Bump actions/setup-node from 4.2.0 to 4.3.0 (#238)
dependabot[bot] Apr 1, 2025
cb9a231
Bump actions/setup-node from 4.3.0 to 4.4.0 (#239)
dependabot[bot] May 1, 2025
f8c49fb
Sync problem specs (#240)
BNAndras Jun 8, 2025
edee695
Update `bob` tests (#241)
BNAndras Jun 8, 2025
e546b81
Update no-important-files-changed.yml (#242)
BNAndras Jun 8, 2025
6410dfb
Create run-configlet-sync.yml (#243)
jagdish-15 Jun 30, 2025
6d2c447
🤖 Auto-sync docs, metadata, and filepaths (#244)
github-actions[bot] Jul 15, 2025
5c88d3c
ci uses ubuntu-24.04 (#245)
keiravillekode Jul 15, 2025
4bbc73d
🤖 Auto-sync docs, metadata, and filepaths (#246)
github-actions[bot] Aug 15, 2025
389a64f
Bump actions/setup-node from 4.4.0 to 5.0.0 (#247)
dependabot[bot] Oct 1, 2025
4d5cff8
Bump actions/checkout from 4.2.2 to 5.0.0 (#248)
dependabot[bot] Oct 1, 2025
aded6c3
🤖 Auto-sync docs, metadata, and filepaths (#249)
github-actions[bot] Oct 15, 2025
0257287
Add `line-up` (#250)
BNAndras Oct 15, 2025
29f5bb3
Update track docs (#251)
BNAndras Oct 26, 2025
fd82874
Bump actions/setup-node from 5.0.0 to 6.0.0 (#252)
dependabot[bot] Nov 1, 2025
c25e6c8
🤖 Auto-sync docs, metadata, and filepaths (#253)
github-actions[bot] Nov 15, 2025
9a3040d
Bump actions/setup-node from 6.0.0 to 6.1.0 (#255)
dependabot[bot] Jan 1, 2026
b043109
Bump actions/checkout from 5.0.0 to 6.0.1 (#254)
dependabot[bot] Jan 1, 2026
698bd5e
Bump actions/setup-node from 6.1.0 to 6.2.0 (#257)
dependabot[bot] Feb 1, 2026
0ae6d55
Bump actions/checkout from 6.0.1 to 6.0.2 (#256)
dependabot[bot] Feb 1, 2026
8a1dd22
🤖 Auto-sync docs, metadata, and filepaths (#258)
github-actions[bot] Feb 15, 2026
aa45823
Sync `perfect-numbers` tests (#260)
BNAndras Feb 15, 2026
3386260
Update use contexts
BNAndras Mar 26, 2026
f906105
Bump package.json
BNAndras Mar 26, 2026
53b6fd9
Remove note about skipped tests
BNAndras Mar 26, 2026
dd53ca2
Update more use contexts
BNAndras Mar 26, 2026
ea769af
Remove test harness. All tests will now run
BNAndras Mar 26, 2026
0aef51c
CI no longer needs to unskip tests
BNAndras Mar 26, 2026
006821e
Update docs
BNAndras Mar 26, 2026
699e36c
Fix syntax error
BNAndras Mar 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@ updates:
- package-ecosystem: 'github-actions'
directory: '/'
schedule:
interval: 'daily'
interval: 'monthly'
labels:
- 'x:size/small'
23 changes: 23 additions & 0 deletions .github/workflows/no-important-files-changed.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
name: No important files changed

on:
pull_request_target:
types: [opened]
branches: [main]
paths:
- "exercises/concept/**"
- "exercises/practice/**"
- "!exercises/*/*/.approaches/**"
- "!exercises/*/*/.articles/**"
- "!exercises/*/*/.docs/**"
- "!exercises/*/*/.meta/**"

permissions:
pull-requests: write

jobs:
check:
uses: exercism/github-actions/.github/workflows/check-no-important-files-changed.yml@main
with:
repository: ${{ github.event.pull_request.head.repo.owner.login }}/${{ github.event.pull_request.head.repo.name }}
ref: ${{ github.head_ref }}
16 changes: 16 additions & 0 deletions .github/workflows/ping-cross-track-maintainers-team.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
name: Ping cross-track maintainers team

on:
pull_request_target:
types:
- opened

permissions:
pull-requests: write

jobs:
ping:
if: github.repository_owner == 'exercism' # Stops this job from running on forks
uses: exercism/github-actions/.github/workflows/ping-cross-track-maintainers-team.yml@main
secrets:
github_membership_token: ${{ secrets.COMMUNITY_CONTRIBUTIONS_WORKFLOW_TOKEN }}
10 changes: 10 additions & 0 deletions .github/workflows/run-configlet-sync.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
name: Run Configlet Sync

on:
workflow_dispatch:
schedule:
- cron: '0 0 15 * *'

jobs:
call-gha-workflow:
uses: exercism/github-actions/.github/workflows/configlet-sync.yml@main
18 changes: 10 additions & 8 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
# Requires scripts:
# - bin/test

name: <track> / Test
name: Test Exercises

on:
push:
Expand All @@ -23,17 +23,19 @@ on:

jobs:
ci:
runs-on: <image-name>
runs-on: ubuntu-24.04

steps:
- name: Checkout repository
uses: actions/checkout@v3

- name: Use <setup tooling>
uses: <action to setup tooling>
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd

- name: Setup Node.js
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238
with:
node-version: 'node'

- name: Install project dependencies
run: <install dependencies>

run: npm ci
- name: Verify all exercises
run: bin/verify-exercises
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,6 @@
.DS_Store
bin/configlet
bin/configlet.exe
.pyret/
*.jarr
node_modules
2 changes: 1 addition & 1 deletion CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,4 +90,4 @@ This policy was initially adopted from the Front-end London Slack community and
A version history can be seen on [GitHub](https://github.com/exercism/website-copy/edit/main/pages/code_of_conduct.md).

_This policy is a "living" document, and subject to refinement and expansion in the future.
This policy applies to the Exercism website, the Exercism GitHub organization, any other Exercism-related communication channels (e.g. Slack, Twitter, email) and any other Exercism entity or event._
This policy applies to the Exercism website, the Exercism GitHub organization, any other Exercism-related communication channels (e.g. Discord, Forum, Twitter, email) and any other Exercism entity or event._
45 changes: 41 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,20 +1,57 @@
# Exercism Pyret Track

[![configlet](https://github.com/exercism/pyret/workflows/configlet/badge.svg)](https://github.com/exercism/pyret/actions?query=workflow%3Aconfiglet) [![tests](https://github.com/exercism/pyret/workflows/test/badge.svg)](https://github.com/exercism/pyret/actions?query=workflow%3Atest)
[![Configlet](https://github.com/exercism/pyret/actions/workflows/configlet.yml/badge.svg)](https://github.com/exercism/pyret/actions/workflows/configlet.yml) [![.github/workflows/test.yml](https://github.com/exercism/pyret/actions/workflows/test.yml/badge.svg)](https://github.com/exercism/pyret/actions/workflows/test.yml)

Exercism exercises in Pyret.

## Setup

If you're solving Exercism exercises offline, you'll need a recent copy of [pyret-npm](https://www.npmjs.com/package/pyret-npm) (0.0.27+).
Currently, pyret-npm works on Linux and MacOS platforms although Windows users can run it via the [WSL](https://learn.microsoft.com/en-us/windows/wsl/).
However, you can also use [Pyret's online IDE](https://code.pyret.org/).
In that case, you'll need to switch from the IDE's default `essentials2021` namespace to the older `starter2024` supported by pyret-npm.

## Support

For support with Pyret in Exercism, please visit [the Pyret subcategory](https://forum.exercism.org/c/programming/pyret/265) on the official [Exercism forum](https://forum.exercism.org).

## Coding Style

Please consult [the official Pyret style guide](https://pyret.org/docs/latest/Pyret_Style_Guide.html).

## Testing

To test the exercises, run `./bin/test`.
To test the exercises, run `./bin/verify-exercises` on a Linux or MacOS platform.
This command will iterate over all exercises and check to see if their exemplar/example implementation passes all the tests.

### Track linting
## Contributing Guide

Please see [Exercism's contributing guide](https://exercism.org/docs/building).

Here's the basic template for an `<slug>-test.arr`.
Each `check` block corresponds to a single test case, and its label is reported to the student.

```pyret

use context starter2024

include file("<slug>.arr")

check "foo returns 1":
foo() is 1
end

check "bar returns 2":
bar() is 2
end
```

## Track linting

[`configlet`](https://exercism.org/docs/building/configlet) is an Exercism-wide tool for working with tracks. You can download it by running:

```shell
$ ./bin/fetch-configlet
./bin/fetch-configlet
```

Run its [`lint` command](https://exercism.org/docs/building/configlet/lint) to verify if all exercises have all the necessary files and if config files are correct:
Expand Down
23 changes: 12 additions & 11 deletions bin/fetch-configlet
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,11 @@ get_download_url() {
local latest='https://api.github.com/repos/exercism/configlet/releases/latest'
local arch
case "$(uname -m)" in
x86_64) arch='x86-64' ;;
*686*) arch='i386' ;;
*386*) arch='i386' ;;
*) arch='x86-64' ;;
aarch64|arm64) arch='arm64' ;;
x86_64) arch='x86-64' ;;
*686*) arch='i386' ;;
*386*) arch='i386' ;;
*) arch='x86-64' ;;
esac
local suffix="${os}_${arch}.${ext}"
curl "${curlopts[@]}" --header 'Accept: application/vnd.github.v3+json' "${latest}" |
Expand All @@ -47,7 +48,7 @@ main() {
fi

local os
case "$(uname)" in
case "$(uname -s)" in
Darwin*) os='macos' ;;
Linux*) os='linux' ;;
Windows*) os='windows' ;;
Expand All @@ -58,8 +59,8 @@ main() {

local ext
case "${os}" in
windows*) ext='zip' ;;
*) ext='tar.gz' ;;
windows) ext='zip' ;;
*) ext='tar.gz' ;;
esac

echo "Fetching configlet..." >&2
Expand All @@ -69,16 +70,16 @@ main() {
curl "${curlopts[@]}" --output "${output_path}" "${download_url}"

case "${ext}" in
*zip) unzip "${output_path}" -d "${output_dir}" ;;
*) tar xzf "${output_path}" -C "${output_dir}" ;;
zip) unzip "${output_path}" -d "${output_dir}" ;;
*) tar xzf "${output_path}" -C "${output_dir}" ;;
esac

rm -f "${output_path}"

local executable_ext
case "${os}" in
windows*) executable_ext='.exe' ;;
*) executable_ext='' ;;
windows) executable_ext='.exe' ;;
*) executable_ext='' ;;
esac

local configlet_path="${output_dir}/configlet${executable_ext}"
Expand Down
35 changes: 23 additions & 12 deletions bin/fetch-configlet.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -12,20 +12,31 @@ $requestOpts = @{
RetryIntervalSec = 1
}

$arch = If ([Environment]::Is64BitOperatingSystem) { "x86-64" } Else { "i386" }
$fileName = "configlet_.+_windows_$arch.zip"

Function Get-DownloadUrl {
$arch = If ([Environment]::Is64BitOperatingSystem) { "x86-64" } Else { "i386" }
$latestUrl = "https://api.github.com/repos/exercism/configlet/releases/latest"
Invoke-RestMethod -Uri $latestUrl -PreserveAuthorizationOnRedirect @requestOpts
| Select-Object -ExpandProperty assets
| Where-Object { $_.browser_download_url -match $FileName }
| Select-Object -ExpandProperty browser_download_url
Invoke-RestMethod -Uri $latestUrl -PreserveAuthorizationOnRedirect @requestOpts `
| Select-Object -ExpandProperty assets `
| Where-Object { $_.name -match "^configlet_.+_windows_${arch}.zip$" } `
| Select-Object -ExpandProperty browser_download_url -First 1
}

$downloadUrl = Get-DownloadUrl
$outputDirectory = "bin"
$outputFile = Join-Path -Path $outputDirectory -ChildPath $fileName
Invoke-WebRequest -Uri $downloadUrl -OutFile $outputFile @requestOpts
Expand-Archive $outputFile -DestinationPath $outputDirectory -Force
Remove-Item -Path $outputFile
if (!(Test-Path -Path $outputDirectory)) {
Write-Output "Error: no ./bin directory found. This script should be ran from a repo root."
exit 1
}

Write-Output "Fetching configlet..."
$downloadUrl = Get-DownloadUrl
$outputFileName = "configlet.zip"
$outputPath = Join-Path -Path $outputDirectory -ChildPath $outputFileName
Invoke-WebRequest -Uri $downloadUrl -OutFile $outputPath @requestOpts

$configletPath = Join-Path -Path $outputDirectory -ChildPath "configlet.exe"
if (Test-Path -Path $configletPath) { Remove-Item -Path $configletPath }
[System.IO.Compression.ZipFile]::ExtractToDirectory($outputPath, $outputDirectory)
Remove-Item -Path $outputPath

$configletVersion = (Select-String -Pattern "/releases/download/(.+?)/" -InputObject $downloadUrl -AllMatches).Matches.Groups[1].Value
Write-Output "Downloaded configlet ${configletVersion} to ${configletPath}"
43 changes: 40 additions & 3 deletions bin/verify-exercises
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
# .meta/config.json file, or possibly inferred from the exercise's directory name.

# Example:
# ./bin/test
# ./bin/verify-exercises.sh

# Verify the Concept Exercises
for concept_exercise_dir in ./exercises/concept/*/; do
Expand All @@ -26,10 +26,47 @@ for concept_exercise_dir in ./exercises/concept/*/; do
fi
done


SUCCESS=0
# Verify the Practice Exercises
for practice_exercise_dir in ./exercises/practice/*/; do
if [[ $SUCCESS -eq 0 && -d $practice_exercise_dir ]]; then
exercise=$(basename "${practice_exercise_dir}")
echo "Checking $exercise exercise..."

practice_exercise_dir=${practice_exercise_dir%/}
if [ -f "$practice_exercise_dir/$exercise".arr ]; then
mv "$practice_exercise_dir/$exercise".arr "$practice_exercise_dir/$exercise".arr.bak
mv "$practice_exercise_dir/.meta/example.arr" "$practice_exercise_dir/$exercise".arr

test_file="$practice_exercise_dir/$exercise"-test.arr

redirect_file="$practice_exercise_dir/$exercise".out
npx pyret -q $test_file &> $redirect_file
test_output=$(cat $redirect_file)
rm $redirect_file
test_success=$(echo "${test_output}" | grep -c -E 'Looks shipshape')

if [[ $test_success -le 0 ]]; then
echo "FAILURE: $exercise"
SUCCESS=1
fi
fi
fi
done

for practice_exercise_dir in ./exercises/practice/*/; do
if [ -d $practice_exercise_dir ]; then
echo "Checking $(basename "${practice_exercise_dir}") exercise..."
# TODO: run command to verify that the example solution passes the tests
exercise=$(basename "${practice_exercise_dir}")
if [ -f "$practice_exercise_dir/$exercise".arr ]; then
mv "$practice_exercise_dir/$exercise".arr "$practice_exercise_dir"/.meta/example.arr
if [ -f "$practice_exercise_dir/$exercise".arr.bak ]; then
mv "$practice_exercise_dir/$exercise".arr.bak "$practice_exercise_dir/$exercise".arr
fi
fi
fi
done

if [ $SUCCESS -ne 0 ]; then
exit $SUCCESS
fi
7 changes: 7 additions & 0 deletions concepts/booleans/.meta/config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"blurb": "Pyret provides a Boolean primitive with two distinct values: 'true' and 'false'.",
"authors": [
"BNAndras"
],
"contributors": []
}
36 changes: 36 additions & 0 deletions concepts/booleans/about.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# Introduction

Pyret has two distinct Boolean primitives, `true` and `false`.
These two values represent whether a statement or condition is valid or not.

```pyret
"a" == "a" # true
"a" == "b" # false
```

Pyret provides the operators `and` and `or` that can combine Boolean values.

The and operator returns true if both sides are true and false for all other combinations.

```pyret
true and true # true
true and false # true
false and true # false
false and false # false
```

The or operator returns true if at least one side is true and false if both sides are false.

```pyret
true or true # true
true or false # true
false or true # true
false or false # false
```

`not()` is a built-in function that flips a true to false or a false to true.

```pyret
not(true) # false
not(false) # true
```
Loading