diff --git a/Conf/lang.yaml b/Conf/lang.yaml
index 425ffc3d94..e060b0f2f5 100644
--- a/Conf/lang.yaml
+++ b/Conf/lang.yaml
@@ -86,6 +86,7 @@ B: .b
B4J: .b4j
B4X: .b4x
Babel: .pb
+BabyCobol: .cobol
BaCon: .bacon
Bait: .bait
Ballerina: .ballerina
@@ -124,6 +125,7 @@ Bracmat: .bracmat
Brainf***: .bf
Brat: .brat
Brlcad: .brlcad
+Bruijn: .bruijn
Burlesque: .blq
C++: .cpp
C: .c
@@ -342,6 +344,7 @@ HLA: .hla
HolyC: .holyc
Hoon: .hoon
Hope: .hope
+Hopper: .hopper
HPPPL: .hpppl
HQ9+: .hq9+
Huginn: .huginn
@@ -589,6 +592,7 @@ Oz: .oz
Palo Alto Tiny BASIC: .basic
Panda: .panda
Panoramic: .panoramic
+ParaCL: .paracl
Pare: .pare
PARI/GP: .parigp
Pascal: .pas
@@ -646,6 +650,7 @@ Processing: .processing
Processing Python mode: .processing-py
Processing.R: .processing-r
ProDOS: .dos
+Prog8: .prog8
Prolog: .pro
PROMAL: .promal
PSQL: .psql
@@ -696,6 +701,7 @@ RISC-V Assembly: .asm
RLaB: .rlab
RLSL: .rlsl
Robotic: .robotic
+Roc: .roc
Rockstar: .rockstar
RPG: .rpg
RPGIV: .rpgiv
@@ -831,6 +837,7 @@ TXR: .txr
Typed Racket: .rkt
TypeScript: .ts
UC++: .uc++
+Uiua: .uiua
Ultimate++: .ultimate++
Unicon: .unicon
Uniface: .uniface
diff --git a/Lang/6502-Assembly/N-queens-problem b/Lang/6502-Assembly/N-queens-problem
new file mode 120000
index 0000000000..6cb6d9c259
--- /dev/null
+++ b/Lang/6502-Assembly/N-queens-problem
@@ -0,0 +1 @@
+../../Task/N-queens-problem/6502-Assembly
\ No newline at end of file
diff --git a/Lang/ALGOL-68/Angle-difference-between-two-bearings b/Lang/ALGOL-68/Angle-difference-between-two-bearings
new file mode 120000
index 0000000000..78582e775d
--- /dev/null
+++ b/Lang/ALGOL-68/Angle-difference-between-two-bearings
@@ -0,0 +1 @@
+../../Task/Angle-difference-between-two-bearings/ALGOL-68
\ No newline at end of file
diff --git a/Lang/ALGOL-68/Angles-geometric-normalization-and-conversion b/Lang/ALGOL-68/Angles-geometric-normalization-and-conversion
new file mode 120000
index 0000000000..e25f8337e6
--- /dev/null
+++ b/Lang/ALGOL-68/Angles-geometric-normalization-and-conversion
@@ -0,0 +1 @@
+../../Task/Angles-geometric-normalization-and-conversion/ALGOL-68
\ No newline at end of file
diff --git a/Lang/ALGOL-68/Averages-Mean-time-of-day b/Lang/ALGOL-68/Averages-Mean-time-of-day
new file mode 120000
index 0000000000..e97106ed2d
--- /dev/null
+++ b/Lang/ALGOL-68/Averages-Mean-time-of-day
@@ -0,0 +1 @@
+../../Task/Averages-Mean-time-of-day/ALGOL-68
\ No newline at end of file
diff --git a/Lang/ALGOL-68/Cheryls-birthday b/Lang/ALGOL-68/Cheryls-birthday
new file mode 120000
index 0000000000..4a39e22573
--- /dev/null
+++ b/Lang/ALGOL-68/Cheryls-birthday
@@ -0,0 +1 @@
+../../Task/Cheryls-birthday/ALGOL-68
\ No newline at end of file
diff --git a/Lang/ALGOL-68/Chinese-remainder-theorem b/Lang/ALGOL-68/Chinese-remainder-theorem
new file mode 120000
index 0000000000..5c42550649
--- /dev/null
+++ b/Lang/ALGOL-68/Chinese-remainder-theorem
@@ -0,0 +1 @@
+../../Task/Chinese-remainder-theorem/ALGOL-68
\ No newline at end of file
diff --git a/Lang/ALGOL-68/Death-Star b/Lang/ALGOL-68/Death-Star
new file mode 120000
index 0000000000..71a96e0b37
--- /dev/null
+++ b/Lang/ALGOL-68/Death-Star
@@ -0,0 +1 @@
+../../Task/Death-Star/ALGOL-68
\ No newline at end of file
diff --git a/Lang/ALGOL-68/Eban-numbers b/Lang/ALGOL-68/Eban-numbers
new file mode 120000
index 0000000000..fa85ff0e58
--- /dev/null
+++ b/Lang/ALGOL-68/Eban-numbers
@@ -0,0 +1 @@
+../../Task/Eban-numbers/ALGOL-68
\ No newline at end of file
diff --git a/Lang/ALGOL-68/Floyd-Warshall-algorithm b/Lang/ALGOL-68/Floyd-Warshall-algorithm
new file mode 120000
index 0000000000..704f4ca44e
--- /dev/null
+++ b/Lang/ALGOL-68/Floyd-Warshall-algorithm
@@ -0,0 +1 @@
+../../Task/Floyd-Warshall-algorithm/ALGOL-68
\ No newline at end of file
diff --git a/Lang/ALGOL-68/Fortunate-numbers b/Lang/ALGOL-68/Fortunate-numbers
new file mode 120000
index 0000000000..c6ecf1ee17
--- /dev/null
+++ b/Lang/ALGOL-68/Fortunate-numbers
@@ -0,0 +1 @@
+../../Task/Fortunate-numbers/ALGOL-68
\ No newline at end of file
diff --git a/Lang/ALGOL-68/Long-primes b/Lang/ALGOL-68/Long-primes
new file mode 120000
index 0000000000..5932549f9d
--- /dev/null
+++ b/Lang/ALGOL-68/Long-primes
@@ -0,0 +1 @@
+../../Task/Long-primes/ALGOL-68
\ No newline at end of file
diff --git a/Lang/ALGOL-68/Magic-squares-of-singly-even-order b/Lang/ALGOL-68/Magic-squares-of-singly-even-order
new file mode 120000
index 0000000000..25b7aec11a
--- /dev/null
+++ b/Lang/ALGOL-68/Magic-squares-of-singly-even-order
@@ -0,0 +1 @@
+../../Task/Magic-squares-of-singly-even-order/ALGOL-68
\ No newline at end of file
diff --git a/Lang/ALGOL-68/Modified-random-distribution b/Lang/ALGOL-68/Modified-random-distribution
new file mode 120000
index 0000000000..1858012a62
--- /dev/null
+++ b/Lang/ALGOL-68/Modified-random-distribution
@@ -0,0 +1 @@
+../../Task/Modified-random-distribution/ALGOL-68
\ No newline at end of file
diff --git a/Lang/ALGOL-68/Number-reversal-game b/Lang/ALGOL-68/Number-reversal-game
new file mode 120000
index 0000000000..243202f9d2
--- /dev/null
+++ b/Lang/ALGOL-68/Number-reversal-game
@@ -0,0 +1 @@
+../../Task/Number-reversal-game/ALGOL-68
\ No newline at end of file
diff --git a/Lang/ALGOL-68/Pisano-period b/Lang/ALGOL-68/Pisano-period
new file mode 120000
index 0000000000..b012a168d9
--- /dev/null
+++ b/Lang/ALGOL-68/Pisano-period
@@ -0,0 +1 @@
+../../Task/Pisano-period/ALGOL-68
\ No newline at end of file
diff --git a/Lang/ALGOL-68/Pythagorean-triples b/Lang/ALGOL-68/Pythagorean-triples
new file mode 120000
index 0000000000..8c48c48b1b
--- /dev/null
+++ b/Lang/ALGOL-68/Pythagorean-triples
@@ -0,0 +1 @@
+../../Task/Pythagorean-triples/ALGOL-68
\ No newline at end of file
diff --git a/Lang/ALGOL-68/Range-consolidation b/Lang/ALGOL-68/Range-consolidation
new file mode 120000
index 0000000000..51b0e5d75e
--- /dev/null
+++ b/Lang/ALGOL-68/Range-consolidation
@@ -0,0 +1 @@
+../../Task/Range-consolidation/ALGOL-68
\ No newline at end of file
diff --git a/Lang/ALGOL-68/Ray-casting-algorithm b/Lang/ALGOL-68/Ray-casting-algorithm
new file mode 120000
index 0000000000..2c4b411219
--- /dev/null
+++ b/Lang/ALGOL-68/Ray-casting-algorithm
@@ -0,0 +1 @@
+../../Task/Ray-casting-algorithm/ALGOL-68
\ No newline at end of file
diff --git a/Lang/ALGOL-68/Sequence:-nth-number-with-exactly-n-divisors b/Lang/ALGOL-68/Sequence:-nth-number-with-exactly-n-divisors
new file mode 120000
index 0000000000..02fc9fe7df
--- /dev/null
+++ b/Lang/ALGOL-68/Sequence:-nth-number-with-exactly-n-divisors
@@ -0,0 +1 @@
+../../Task/Sequence:-nth-number-with-exactly-n-divisors/ALGOL-68
\ No newline at end of file
diff --git a/Lang/ALGOL-68/Sort-numbers-lexicographically b/Lang/ALGOL-68/Sort-numbers-lexicographically
new file mode 120000
index 0000000000..7da8e72755
--- /dev/null
+++ b/Lang/ALGOL-68/Sort-numbers-lexicographically
@@ -0,0 +1 @@
+../../Task/Sort-numbers-lexicographically/ALGOL-68
\ No newline at end of file
diff --git a/Lang/ALGOL-68/Sum-and-product-puzzle b/Lang/ALGOL-68/Sum-and-product-puzzle
new file mode 120000
index 0000000000..18865c2c45
--- /dev/null
+++ b/Lang/ALGOL-68/Sum-and-product-puzzle
@@ -0,0 +1 @@
+../../Task/Sum-and-product-puzzle/ALGOL-68
\ No newline at end of file
diff --git a/Lang/ALGOL-W/Angles-geometric-normalization-and-conversion b/Lang/ALGOL-W/Angles-geometric-normalization-and-conversion
new file mode 120000
index 0000000000..84598a2a10
--- /dev/null
+++ b/Lang/ALGOL-W/Angles-geometric-normalization-and-conversion
@@ -0,0 +1 @@
+../../Task/Angles-geometric-normalization-and-conversion/ALGOL-W
\ No newline at end of file
diff --git a/Lang/ALGOL-W/Sierpinski-square-curve b/Lang/ALGOL-W/Sierpinski-square-curve
new file mode 120000
index 0000000000..c787c64cbf
--- /dev/null
+++ b/Lang/ALGOL-W/Sierpinski-square-curve
@@ -0,0 +1 @@
+../../Task/Sierpinski-square-curve/ALGOL-W
\ No newline at end of file
diff --git a/Lang/ALGOL-W/Temperature-conversion b/Lang/ALGOL-W/Temperature-conversion
new file mode 120000
index 0000000000..fa3a68b9d1
--- /dev/null
+++ b/Lang/ALGOL-W/Temperature-conversion
@@ -0,0 +1 @@
+../../Task/Temperature-conversion/ALGOL-W
\ No newline at end of file
diff --git a/Lang/APL/The-Twelve-Days-of-Christmas b/Lang/APL/The-Twelve-Days-of-Christmas
new file mode 120000
index 0000000000..2bb4434d11
--- /dev/null
+++ b/Lang/APL/The-Twelve-Days-of-Christmas
@@ -0,0 +1 @@
+../../Task/The-Twelve-Days-of-Christmas/APL
\ No newline at end of file
diff --git a/Lang/AWK/Textonyms b/Lang/AWK/Textonyms
new file mode 120000
index 0000000000..0d5f8babd1
--- /dev/null
+++ b/Lang/AWK/Textonyms
@@ -0,0 +1 @@
+../../Task/Textonyms/AWK
\ No newline at end of file
diff --git a/Lang/Amazing-Hopper/Long-year b/Lang/Amazing-Hopper/Long-year
new file mode 120000
index 0000000000..67734f8564
--- /dev/null
+++ b/Lang/Amazing-Hopper/Long-year
@@ -0,0 +1 @@
+../../Task/Long-year/Amazing-Hopper
\ No newline at end of file
diff --git a/Lang/Amazing-Hopper/Sort-three-variables b/Lang/Amazing-Hopper/Sort-three-variables
new file mode 120000
index 0000000000..3adad4c634
--- /dev/null
+++ b/Lang/Amazing-Hopper/Sort-three-variables
@@ -0,0 +1 @@
+../../Task/Sort-three-variables/Amazing-Hopper
\ No newline at end of file
diff --git a/Lang/Amazing-Hopper/Split-a-character-string-based-on-change-of-character b/Lang/Amazing-Hopper/Split-a-character-string-based-on-change-of-character
new file mode 120000
index 0000000000..ac99345357
--- /dev/null
+++ b/Lang/Amazing-Hopper/Split-a-character-string-based-on-change-of-character
@@ -0,0 +1 @@
+../../Task/Split-a-character-string-based-on-change-of-character/Amazing-Hopper
\ No newline at end of file
diff --git a/Lang/AppleScript/Arithmetic-numbers b/Lang/AppleScript/Arithmetic-numbers
new file mode 120000
index 0000000000..3cefb4a617
--- /dev/null
+++ b/Lang/AppleScript/Arithmetic-numbers
@@ -0,0 +1 @@
+../../Task/Arithmetic-numbers/AppleScript
\ No newline at end of file
diff --git a/Lang/AppleScript/Textonyms b/Lang/AppleScript/Textonyms
new file mode 120000
index 0000000000..e51af23b62
--- /dev/null
+++ b/Lang/AppleScript/Textonyms
@@ -0,0 +1 @@
+../../Task/Textonyms/AppleScript
\ No newline at end of file
diff --git a/Lang/Applesoft-BASIC/Draw-a-pixel b/Lang/Applesoft-BASIC/Draw-a-pixel
new file mode 120000
index 0000000000..7ca9518328
--- /dev/null
+++ b/Lang/Applesoft-BASIC/Draw-a-pixel
@@ -0,0 +1 @@
+../../Task/Draw-a-pixel/Applesoft-BASIC
\ No newline at end of file
diff --git a/Lang/Applesoft-BASIC/N-queens-problem b/Lang/Applesoft-BASIC/N-queens-problem
new file mode 120000
index 0000000000..be2c30d0bc
--- /dev/null
+++ b/Lang/Applesoft-BASIC/N-queens-problem
@@ -0,0 +1 @@
+../../Task/N-queens-problem/Applesoft-BASIC
\ No newline at end of file
diff --git a/Lang/Applesoft-BASIC/Phrase-reversals b/Lang/Applesoft-BASIC/Phrase-reversals
new file mode 120000
index 0000000000..2fbcdc7099
--- /dev/null
+++ b/Lang/Applesoft-BASIC/Phrase-reversals
@@ -0,0 +1 @@
+../../Task/Phrase-reversals/Applesoft-BASIC
\ No newline at end of file
diff --git a/Lang/Applesoft-BASIC/Run-length-encoding b/Lang/Applesoft-BASIC/Run-length-encoding
new file mode 120000
index 0000000000..a4ba69544f
--- /dev/null
+++ b/Lang/Applesoft-BASIC/Run-length-encoding
@@ -0,0 +1 @@
+../../Task/Run-length-encoding/Applesoft-BASIC
\ No newline at end of file
diff --git a/Lang/BASIC/00-LANG.txt b/Lang/BASIC/00-LANG.txt
index 7299250982..571cd2dd21 100644
--- a/Lang/BASIC/00-LANG.txt
+++ b/Lang/BASIC/00-LANG.txt
@@ -24,6 +24,7 @@ BASIC became popular, with many different implementations for various computers.
**[[wp:PowerBASIC]]
**[[wp:PureBasic]]
**[[wp:Rocky Mountain BASIC]]
+**[[wp:Sinclair BASIC]]
**[[wp:SuperBASIC]]
**[[wp:True BASIC]]
{{language programming paradigm|Procedural}}
\ No newline at end of file
diff --git a/Lang/BASIC/Reverse-a-string b/Lang/BASIC/Reverse-a-string
deleted file mode 120000
index db5bd211b7..0000000000
--- a/Lang/BASIC/Reverse-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Reverse-a-string/BASIC
\ No newline at end of file
diff --git a/Lang/BASIC256/Sum-and-product-puzzle b/Lang/BASIC256/Sum-and-product-puzzle
new file mode 120000
index 0000000000..2b964ccfbc
--- /dev/null
+++ b/Lang/BASIC256/Sum-and-product-puzzle
@@ -0,0 +1 @@
+../../Task/Sum-and-product-puzzle/BASIC256
\ No newline at end of file
diff --git a/Lang/BASIC256/Validate-International-Securities-Identification-Number b/Lang/BASIC256/Validate-International-Securities-Identification-Number
new file mode 120000
index 0000000000..e6606941e4
--- /dev/null
+++ b/Lang/BASIC256/Validate-International-Securities-Identification-Number
@@ -0,0 +1 @@
+../../Task/Validate-International-Securities-Identification-Number/BASIC256
\ No newline at end of file
diff --git a/Lang/BBC-BASIC/Minimum-multiple-of-m-where-digital-sum-equals-m b/Lang/BBC-BASIC/Minimum-multiple-of-m-where-digital-sum-equals-m
new file mode 120000
index 0000000000..c061ef014a
--- /dev/null
+++ b/Lang/BBC-BASIC/Minimum-multiple-of-m-where-digital-sum-equals-m
@@ -0,0 +1 @@
+../../Task/Minimum-multiple-of-m-where-digital-sum-equals-m/BBC-BASIC
\ No newline at end of file
diff --git a/Lang/BBC-BASIC/Narcissistic-decimal-number b/Lang/BBC-BASIC/Narcissistic-decimal-number
new file mode 120000
index 0000000000..1a2b003e3a
--- /dev/null
+++ b/Lang/BBC-BASIC/Narcissistic-decimal-number
@@ -0,0 +1 @@
+../../Task/Narcissistic-decimal-number/BBC-BASIC
\ No newline at end of file
diff --git a/Lang/BCPL/Narcissistic-decimal-number b/Lang/BCPL/Narcissistic-decimal-number
new file mode 120000
index 0000000000..e0ff77fa71
--- /dev/null
+++ b/Lang/BCPL/Narcissistic-decimal-number
@@ -0,0 +1 @@
+../../Task/Narcissistic-decimal-number/BCPL
\ No newline at end of file
diff --git a/Lang/BQN/Sort-numbers-lexicographically b/Lang/BQN/Sort-numbers-lexicographically
new file mode 120000
index 0000000000..c09eafb48d
--- /dev/null
+++ b/Lang/BQN/Sort-numbers-lexicographically
@@ -0,0 +1 @@
+../../Task/Sort-numbers-lexicographically/BQN
\ No newline at end of file
diff --git a/Lang/BabyCobol/00-LANG.txt b/Lang/BabyCobol/00-LANG.txt
new file mode 100644
index 0000000000..b106508e3b
--- /dev/null
+++ b/Lang/BabyCobol/00-LANG.txt
@@ -0,0 +1,7 @@
+{{language|BabyCobol
+ | site = https://slebok.github.io/baby/
+ | gc = no
+ | parampass = both
+ | hopl = no
+}}
+'''BabyCobol''' is an experiment in language design: it is small enough to be quickly implementable (fully or partially) within any framework that can support its features, but complex enough to cover typical problems of legacy language processing. If you learn how to compile [[MiniJava]], you stand a good chance of implementing a reasonably good compiler for any contemporary programming language. If you show how your language extension works on [[Featherweight Java]], it has a good chance of being applicable to any reasonable modern object-oriented programming language. If you can handle BabyCobol with your tool and with your skills, you are ready to face the challenges of software modernisation, codebase migration and legacy language processing in general.
\ No newline at end of file
diff --git a/Lang/BabyCobol/00-META.yaml b/Lang/BabyCobol/00-META.yaml
new file mode 100644
index 0000000000..59c8f2fb7e
--- /dev/null
+++ b/Lang/BabyCobol/00-META.yaml
@@ -0,0 +1,2 @@
+---
+from: http://rosettacode.org/wiki/Category:BabyCobol
diff --git a/Lang/BabyCobol/100-doors b/Lang/BabyCobol/100-doors
new file mode 120000
index 0000000000..28c01ba1d4
--- /dev/null
+++ b/Lang/BabyCobol/100-doors
@@ -0,0 +1 @@
+../../Task/100-doors/BabyCobol
\ No newline at end of file
diff --git a/Lang/BabyCobol/99-bottles-of-beer b/Lang/BabyCobol/99-bottles-of-beer
new file mode 120000
index 0000000000..f2b7e0195f
--- /dev/null
+++ b/Lang/BabyCobol/99-bottles-of-beer
@@ -0,0 +1 @@
+../../Task/99-bottles-of-beer/BabyCobol
\ No newline at end of file
diff --git a/Lang/BabyCobol/A+B b/Lang/BabyCobol/A+B
new file mode 120000
index 0000000000..12cf42c07d
--- /dev/null
+++ b/Lang/BabyCobol/A+B
@@ -0,0 +1 @@
+../../Task/A+B/BabyCobol
\ No newline at end of file
diff --git a/Lang/BabyCobol/FizzBuzz b/Lang/BabyCobol/FizzBuzz
new file mode 120000
index 0000000000..f3080a2a06
--- /dev/null
+++ b/Lang/BabyCobol/FizzBuzz
@@ -0,0 +1 @@
+../../Task/FizzBuzz/BabyCobol
\ No newline at end of file
diff --git a/Lang/BabyCobol/Hello-world-Text b/Lang/BabyCobol/Hello-world-Text
new file mode 120000
index 0000000000..c4b041271b
--- /dev/null
+++ b/Lang/BabyCobol/Hello-world-Text
@@ -0,0 +1 @@
+../../Task/Hello-world-Text/BabyCobol
\ No newline at end of file
diff --git a/Lang/BabyCobol/User-input-Text b/Lang/BabyCobol/User-input-Text
new file mode 120000
index 0000000000..f1d99aff15
--- /dev/null
+++ b/Lang/BabyCobol/User-input-Text
@@ -0,0 +1 @@
+../../Task/User-input-Text/BabyCobol
\ No newline at end of file
diff --git a/Lang/Bait/00-LANG.txt b/Lang/Bait/00-LANG.txt
index 0900661567..18a243057f 100644
--- a/Lang/Bait/00-LANG.txt
+++ b/Lang/Bait/00-LANG.txt
@@ -1,11 +1,11 @@
{{
language|Bait
-|site=https://github.com/tiabeast/bait
+|site=https://github.com/bait-lang/bait
|strength=strong
|safety=safe
|checking=static
}}
-Bait is a work-in-progress simple, compiled, general purpose programming language for building reliable software.
+Bait is a simple programming language for building reliable software.
-Solutions to RosettaCode are maintained at https://github.com/tiabeast/rosetta-bait. Please propose solutions there.
\ No newline at end of file
+Solutions are maintained at https://github.com/bait-lang/rosetta-bait. Please propose changes there.
\ No newline at end of file
diff --git a/Lang/Bait/CRC-32 b/Lang/Bait/CRC-32
new file mode 120000
index 0000000000..f40324a53c
--- /dev/null
+++ b/Lang/Bait/CRC-32
@@ -0,0 +1 @@
+../../Task/CRC-32/Bait
\ No newline at end of file
diff --git a/Lang/Bait/Loops-Downward-for b/Lang/Bait/Loops-Downward-for
new file mode 120000
index 0000000000..128e8218f3
--- /dev/null
+++ b/Lang/Bait/Loops-Downward-for
@@ -0,0 +1 @@
+../../Task/Loops-Downward-for/Bait
\ No newline at end of file
diff --git a/Lang/Bait/Loops-For b/Lang/Bait/Loops-For
new file mode 120000
index 0000000000..79b044fb61
--- /dev/null
+++ b/Lang/Bait/Loops-For
@@ -0,0 +1 @@
+../../Task/Loops-For/Bait
\ No newline at end of file
diff --git a/Lang/Bait/Loops-For-with-a-specified-step b/Lang/Bait/Loops-For-with-a-specified-step
new file mode 120000
index 0000000000..941f926d61
--- /dev/null
+++ b/Lang/Bait/Loops-For-with-a-specified-step
@@ -0,0 +1 @@
+../../Task/Loops-For-with-a-specified-step/Bait
\ No newline at end of file
diff --git a/Lang/Bait/Loops-Foreach b/Lang/Bait/Loops-Foreach
new file mode 120000
index 0000000000..80ae525d6d
--- /dev/null
+++ b/Lang/Bait/Loops-Foreach
@@ -0,0 +1 @@
+../../Task/Loops-Foreach/Bait
\ No newline at end of file
diff --git a/Lang/Bait/Pascals-triangle b/Lang/Bait/Pascals-triangle
new file mode 120000
index 0000000000..564eec1e1a
--- /dev/null
+++ b/Lang/Bait/Pascals-triangle
@@ -0,0 +1 @@
+../../Task/Pascals-triangle/Bait
\ No newline at end of file
diff --git a/Lang/Befunge/Sorting-algorithms-Bubble-sort b/Lang/Befunge/Sorting-algorithms-Bubble-sort
new file mode 120000
index 0000000000..8c2d1f0a86
--- /dev/null
+++ b/Lang/Befunge/Sorting-algorithms-Bubble-sort
@@ -0,0 +1 @@
+../../Task/Sorting-algorithms-Bubble-sort/Befunge
\ No newline at end of file
diff --git a/Lang/Binary-Lambda-Calculus/00-LANG.txt b/Lang/Binary-Lambda-Calculus/00-LANG.txt
index b1d24e9edd..3f502204f1 100644
--- a/Lang/Binary-Lambda-Calculus/00-LANG.txt
+++ b/Lang/Binary-Lambda-Calculus/00-LANG.txt
@@ -6,5 +6,6 @@
{{language programming paradigm|functional}}
'''Binary Lambda Calculus''' is a minimal, pure, functional, esoteric language based on lambda calculus. [[provides::Capability:First class functions| ]]
==External links==
-* [[eso:Binary_lambda_calculus|Esoteric languages wiki page]]
-[[Category:Esoteric Languages]]
\ No newline at end of file
+* https://tromp.github.io/cl/cl.html
+* https://www.ioccc.org/2012/tromp/hint.html
+* https://gist.github.com/tromp/86b3184f852f65bfb814e3ab0987d861
\ No newline at end of file
diff --git a/Lang/Binary-Lambda-Calculus/Hello-world-Newbie b/Lang/Binary-Lambda-Calculus/Hello-world-Newbie
new file mode 120000
index 0000000000..290aaa1bd5
--- /dev/null
+++ b/Lang/Binary-Lambda-Calculus/Hello-world-Newbie
@@ -0,0 +1 @@
+../../Task/Hello-world-Newbie/Binary-Lambda-Calculus
\ No newline at end of file
diff --git a/Lang/Binary-Lambda-Calculus/Hello-world-Text b/Lang/Binary-Lambda-Calculus/Hello-world-Text
deleted file mode 120000
index b4dcf8b8a8..0000000000
--- a/Lang/Binary-Lambda-Calculus/Hello-world-Text
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Text/Binary-Lambda-Calculus
\ No newline at end of file
diff --git a/Lang/Binary-Lambda-Calculus/Quine b/Lang/Binary-Lambda-Calculus/Quine
deleted file mode 120000
index 2c1595a394..0000000000
--- a/Lang/Binary-Lambda-Calculus/Quine
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Quine/Binary-Lambda-Calculus
\ No newline at end of file
diff --git a/Lang/Binary-Lambda-Calculus/Shell-one-liner b/Lang/Binary-Lambda-Calculus/Shell-one-liner
new file mode 120000
index 0000000000..c3cce2be43
--- /dev/null
+++ b/Lang/Binary-Lambda-Calculus/Shell-one-liner
@@ -0,0 +1 @@
+../../Task/Shell-one-liner/Binary-Lambda-Calculus
\ No newline at end of file
diff --git a/Lang/Bruijn/00-LANG.txt b/Lang/Bruijn/00-LANG.txt
new file mode 100644
index 0000000000..c0c565d6e8
--- /dev/null
+++ b/Lang/Bruijn/00-LANG.txt
@@ -0,0 +1,10 @@
+{{language|bruijn
+ |exec=interpreted
+ |LCT=no
+ |site=https://bruijn.marvinborner.de}}{{language programming paradigm|functional}}
+
+Bruijn is a [[functional_programming|functional]] programming language based on pure [[wp:lambda_calculus|lambda calculus]]. It uses De Bruijn indices instead of named variables and square brackets for abstractions. Like pure lambda calculus, bruijn can be compiled to [https://tromp.github.io/cl/Binary_lambda_calculus.html Binary Lambda Calculus]. Unlike pure lambda calculus, you can define named substitution rules. Bruijn has a large standard library of such definitions.
+
+Bruijn does not have primitive functions or data types. Every function (including add, map, mul, etc.) is implemented in bruijn itself. Numbers, strings, or chars are syntactic sugar for data encoded as closed terms/abstractions.
+
+Documentation can be found at https://bruijn.marvinborner.de/wiki/.
\ No newline at end of file
diff --git a/Lang/Bruijn/00-META.yaml b/Lang/Bruijn/00-META.yaml
new file mode 100644
index 0000000000..1ddd70ba76
--- /dev/null
+++ b/Lang/Bruijn/00-META.yaml
@@ -0,0 +1,2 @@
+---
+from: http://rosettacode.org/wiki/Category:Bruijn
diff --git a/Lang/Bruijn/99-bottles-of-beer b/Lang/Bruijn/99-bottles-of-beer
new file mode 120000
index 0000000000..12eb60082e
--- /dev/null
+++ b/Lang/Bruijn/99-bottles-of-beer
@@ -0,0 +1 @@
+../../Task/99-bottles-of-beer/Bruijn
\ No newline at end of file
diff --git a/Lang/Bruijn/A+B b/Lang/Bruijn/A+B
new file mode 120000
index 0000000000..f6bd8616cf
--- /dev/null
+++ b/Lang/Bruijn/A+B
@@ -0,0 +1 @@
+../../Task/A+B/Bruijn
\ No newline at end of file
diff --git a/Lang/Bruijn/Ackermann-function b/Lang/Bruijn/Ackermann-function
new file mode 120000
index 0000000000..e9f8313783
--- /dev/null
+++ b/Lang/Bruijn/Ackermann-function
@@ -0,0 +1 @@
+../../Task/Ackermann-function/Bruijn
\ No newline at end of file
diff --git a/Lang/Bruijn/Balanced-ternary b/Lang/Bruijn/Balanced-ternary
new file mode 120000
index 0000000000..1c4c028d9c
--- /dev/null
+++ b/Lang/Bruijn/Balanced-ternary
@@ -0,0 +1 @@
+../../Task/Balanced-ternary/Bruijn
\ No newline at end of file
diff --git a/Lang/Bruijn/Binary-search b/Lang/Bruijn/Binary-search
new file mode 120000
index 0000000000..9cd581be5b
--- /dev/null
+++ b/Lang/Bruijn/Binary-search
@@ -0,0 +1 @@
+../../Task/Binary-search/Bruijn
\ No newline at end of file
diff --git a/Lang/Bruijn/Comments b/Lang/Bruijn/Comments
new file mode 120000
index 0000000000..e8f4b26296
--- /dev/null
+++ b/Lang/Bruijn/Comments
@@ -0,0 +1 @@
+../../Task/Comments/Bruijn
\ No newline at end of file
diff --git a/Lang/Bruijn/Empty-program b/Lang/Bruijn/Empty-program
new file mode 120000
index 0000000000..2f8df23d95
--- /dev/null
+++ b/Lang/Bruijn/Empty-program
@@ -0,0 +1 @@
+../../Task/Empty-program/Bruijn
\ No newline at end of file
diff --git a/Lang/Bruijn/Factorial b/Lang/Bruijn/Factorial
new file mode 120000
index 0000000000..52a5a29667
--- /dev/null
+++ b/Lang/Bruijn/Factorial
@@ -0,0 +1 @@
+../../Task/Factorial/Bruijn
\ No newline at end of file
diff --git a/Lang/Bruijn/Fibonacci-sequence b/Lang/Bruijn/Fibonacci-sequence
new file mode 120000
index 0000000000..0eac3a48a3
--- /dev/null
+++ b/Lang/Bruijn/Fibonacci-sequence
@@ -0,0 +1 @@
+../../Task/Fibonacci-sequence/Bruijn
\ No newline at end of file
diff --git a/Lang/Bruijn/FizzBuzz b/Lang/Bruijn/FizzBuzz
new file mode 120000
index 0000000000..c2194b65ee
--- /dev/null
+++ b/Lang/Bruijn/FizzBuzz
@@ -0,0 +1 @@
+../../Task/FizzBuzz/Bruijn
\ No newline at end of file
diff --git a/Lang/Bruijn/Function-composition b/Lang/Bruijn/Function-composition
new file mode 120000
index 0000000000..9f9efd944a
--- /dev/null
+++ b/Lang/Bruijn/Function-composition
@@ -0,0 +1 @@
+../../Task/Function-composition/Bruijn
\ No newline at end of file
diff --git a/Lang/Bruijn/Hailstone-sequence b/Lang/Bruijn/Hailstone-sequence
new file mode 120000
index 0000000000..6f6aabadc5
--- /dev/null
+++ b/Lang/Bruijn/Hailstone-sequence
@@ -0,0 +1 @@
+../../Task/Hailstone-sequence/Bruijn
\ No newline at end of file
diff --git a/Lang/Bruijn/Halt-and-catch-fire b/Lang/Bruijn/Halt-and-catch-fire
new file mode 120000
index 0000000000..ee57eeb8b4
--- /dev/null
+++ b/Lang/Bruijn/Halt-and-catch-fire
@@ -0,0 +1 @@
+../../Task/Halt-and-catch-fire/Bruijn
\ No newline at end of file
diff --git a/Lang/Bruijn/Hamming-numbers b/Lang/Bruijn/Hamming-numbers
new file mode 120000
index 0000000000..d835227d4a
--- /dev/null
+++ b/Lang/Bruijn/Hamming-numbers
@@ -0,0 +1 @@
+../../Task/Hamming-numbers/Bruijn
\ No newline at end of file
diff --git a/Lang/Bruijn/Hello-world-Text b/Lang/Bruijn/Hello-world-Text
new file mode 120000
index 0000000000..f5faaa0772
--- /dev/null
+++ b/Lang/Bruijn/Hello-world-Text
@@ -0,0 +1 @@
+../../Task/Hello-world-Text/Bruijn
\ No newline at end of file
diff --git a/Lang/Bruijn/Higher-order-functions b/Lang/Bruijn/Higher-order-functions
new file mode 120000
index 0000000000..490f30652f
--- /dev/null
+++ b/Lang/Bruijn/Higher-order-functions
@@ -0,0 +1 @@
+../../Task/Higher-order-functions/Bruijn
\ No newline at end of file
diff --git a/Lang/Bruijn/Levenshtein-distance b/Lang/Bruijn/Levenshtein-distance
new file mode 120000
index 0000000000..e4887437b4
--- /dev/null
+++ b/Lang/Bruijn/Levenshtein-distance
@@ -0,0 +1 @@
+../../Task/Levenshtein-distance/Bruijn
\ No newline at end of file
diff --git a/Lang/Bruijn/Loops-Infinite b/Lang/Bruijn/Loops-Infinite
new file mode 120000
index 0000000000..038234feba
--- /dev/null
+++ b/Lang/Bruijn/Loops-Infinite
@@ -0,0 +1 @@
+../../Task/Loops-Infinite/Bruijn
\ No newline at end of file
diff --git a/Lang/Bruijn/Palindrome-detection b/Lang/Bruijn/Palindrome-detection
new file mode 120000
index 0000000000..928ca8c645
--- /dev/null
+++ b/Lang/Bruijn/Palindrome-detection
@@ -0,0 +1 @@
+../../Task/Palindrome-detection/Bruijn
\ No newline at end of file
diff --git a/Lang/Bruijn/Sorting-algorithms-Quicksort b/Lang/Bruijn/Sorting-algorithms-Quicksort
new file mode 120000
index 0000000000..88bc24e9de
--- /dev/null
+++ b/Lang/Bruijn/Sorting-algorithms-Quicksort
@@ -0,0 +1 @@
+../../Task/Sorting-algorithms-Quicksort/Bruijn
\ No newline at end of file
diff --git a/Lang/Bruijn/Sum-and-product-of-an-array b/Lang/Bruijn/Sum-and-product-of-an-array
new file mode 120000
index 0000000000..c56dea86f1
--- /dev/null
+++ b/Lang/Bruijn/Sum-and-product-of-an-array
@@ -0,0 +1 @@
+../../Task/Sum-and-product-of-an-array/Bruijn
\ No newline at end of file
diff --git a/Lang/Bruijn/Ternary-logic b/Lang/Bruijn/Ternary-logic
new file mode 120000
index 0000000000..a4a336036c
--- /dev/null
+++ b/Lang/Bruijn/Ternary-logic
@@ -0,0 +1 @@
+../../Task/Ternary-logic/Bruijn
\ No newline at end of file
diff --git a/Lang/Bruijn/Test-a-function b/Lang/Bruijn/Test-a-function
new file mode 120000
index 0000000000..de62e05f97
--- /dev/null
+++ b/Lang/Bruijn/Test-a-function
@@ -0,0 +1 @@
+../../Task/Test-a-function/Bruijn
\ No newline at end of file
diff --git a/Lang/Bruijn/Y-combinator b/Lang/Bruijn/Y-combinator
new file mode 120000
index 0000000000..3614ec75d6
--- /dev/null
+++ b/Lang/Bruijn/Y-combinator
@@ -0,0 +1 @@
+../../Task/Y-combinator/Bruijn
\ No newline at end of file
diff --git a/Lang/C-sharp/Aliquot-sequence-classifications b/Lang/C-sharp/Aliquot-sequence-classifications
new file mode 120000
index 0000000000..2c0be649f4
--- /dev/null
+++ b/Lang/C-sharp/Aliquot-sequence-classifications
@@ -0,0 +1 @@
+../../Task/Aliquot-sequence-classifications/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Arithmetic-numbers b/Lang/C-sharp/Arithmetic-numbers
new file mode 120000
index 0000000000..7b33f4b583
--- /dev/null
+++ b/Lang/C-sharp/Arithmetic-numbers
@@ -0,0 +1 @@
+../../Task/Arithmetic-numbers/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/B-zier-curves-Intersections b/Lang/C-sharp/B-zier-curves-Intersections
new file mode 120000
index 0000000000..9583a4224f
--- /dev/null
+++ b/Lang/C-sharp/B-zier-curves-Intersections
@@ -0,0 +1 @@
+../../Task/B-zier-curves-Intersections/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Bifid-cipher b/Lang/C-sharp/Bifid-cipher
new file mode 120000
index 0000000000..53987e0c76
--- /dev/null
+++ b/Lang/C-sharp/Bifid-cipher
@@ -0,0 +1 @@
+../../Task/Bifid-cipher/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Blum-integer b/Lang/C-sharp/Blum-integer
new file mode 120000
index 0000000000..6e857dea48
--- /dev/null
+++ b/Lang/C-sharp/Blum-integer
@@ -0,0 +1 @@
+../../Task/Blum-integer/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Combinations-and-permutations b/Lang/C-sharp/Combinations-and-permutations
new file mode 120000
index 0000000000..c322432e6c
--- /dev/null
+++ b/Lang/C-sharp/Combinations-and-permutations
@@ -0,0 +1 @@
+../../Task/Combinations-and-permutations/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Cut-a-rectangle b/Lang/C-sharp/Cut-a-rectangle
new file mode 120000
index 0000000000..4cec3edeaa
--- /dev/null
+++ b/Lang/C-sharp/Cut-a-rectangle
@@ -0,0 +1 @@
+../../Task/Cut-a-rectangle/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Demings-funnel b/Lang/C-sharp/Demings-funnel
new file mode 120000
index 0000000000..283a7555df
--- /dev/null
+++ b/Lang/C-sharp/Demings-funnel
@@ -0,0 +1 @@
+../../Task/Demings-funnel/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Determinant-and-permanent b/Lang/C-sharp/Determinant-and-permanent
new file mode 120000
index 0000000000..fa8d657eeb
--- /dev/null
+++ b/Lang/C-sharp/Determinant-and-permanent
@@ -0,0 +1 @@
+../../Task/Determinant-and-permanent/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Dice-game-probabilities b/Lang/C-sharp/Dice-game-probabilities
new file mode 120000
index 0000000000..8f72eba47d
--- /dev/null
+++ b/Lang/C-sharp/Dice-game-probabilities
@@ -0,0 +1 @@
+../../Task/Dice-game-probabilities/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Disarium-numbers b/Lang/C-sharp/Disarium-numbers
new file mode 120000
index 0000000000..47381ac73c
--- /dev/null
+++ b/Lang/C-sharp/Disarium-numbers
@@ -0,0 +1 @@
+../../Task/Disarium-numbers/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Distribution-of-0-digits-in-factorial-series b/Lang/C-sharp/Distribution-of-0-digits-in-factorial-series
new file mode 120000
index 0000000000..a7d175e94a
--- /dev/null
+++ b/Lang/C-sharp/Distribution-of-0-digits-in-factorial-series
@@ -0,0 +1 @@
+../../Task/Distribution-of-0-digits-in-factorial-series/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Doomsday-rule b/Lang/C-sharp/Doomsday-rule
new file mode 120000
index 0000000000..f572c2a651
--- /dev/null
+++ b/Lang/C-sharp/Doomsday-rule
@@ -0,0 +1 @@
+../../Task/Doomsday-rule/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Erd-s-Nicolas-numbers b/Lang/C-sharp/Erd-s-Nicolas-numbers
new file mode 120000
index 0000000000..2a21b589d2
--- /dev/null
+++ b/Lang/C-sharp/Erd-s-Nicolas-numbers
@@ -0,0 +1 @@
+../../Task/Erd-s-Nicolas-numbers/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Fairshare-between-two-and-more b/Lang/C-sharp/Fairshare-between-two-and-more
new file mode 120000
index 0000000000..444efb1248
--- /dev/null
+++ b/Lang/C-sharp/Fairshare-between-two-and-more
@@ -0,0 +1 @@
+../../Task/Fairshare-between-two-and-more/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Fortunate-numbers b/Lang/C-sharp/Fortunate-numbers
new file mode 120000
index 0000000000..5f6e57871d
--- /dev/null
+++ b/Lang/C-sharp/Fortunate-numbers
@@ -0,0 +1 @@
+../../Task/Fortunate-numbers/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Fractran b/Lang/C-sharp/Fractran
new file mode 120000
index 0000000000..e1ba558448
--- /dev/null
+++ b/Lang/C-sharp/Fractran
@@ -0,0 +1 @@
+../../Task/Fractran/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Generate-Chess960-starting-position b/Lang/C-sharp/Generate-Chess960-starting-position
new file mode 120000
index 0000000000..a44601322a
--- /dev/null
+++ b/Lang/C-sharp/Generate-Chess960-starting-position
@@ -0,0 +1 @@
+../../Task/Generate-Chess960-starting-position/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Golden-ratio-Convergence b/Lang/C-sharp/Golden-ratio-Convergence
new file mode 120000
index 0000000000..ea91aeb897
--- /dev/null
+++ b/Lang/C-sharp/Golden-ratio-Convergence
@@ -0,0 +1 @@
+../../Task/Golden-ratio-Convergence/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Graph-colouring b/Lang/C-sharp/Graph-colouring
new file mode 120000
index 0000000000..9124611f31
--- /dev/null
+++ b/Lang/C-sharp/Graph-colouring
@@ -0,0 +1 @@
+../../Task/Graph-colouring/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Harmonic-series b/Lang/C-sharp/Harmonic-series
new file mode 120000
index 0000000000..621fdcd007
--- /dev/null
+++ b/Lang/C-sharp/Harmonic-series
@@ -0,0 +1 @@
+../../Task/Harmonic-series/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Hickerson-series-of-almost-integers b/Lang/C-sharp/Hickerson-series-of-almost-integers
new file mode 120000
index 0000000000..1409bf65fa
--- /dev/null
+++ b/Lang/C-sharp/Hickerson-series-of-almost-integers
@@ -0,0 +1 @@
+../../Task/Hickerson-series-of-almost-integers/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Jacobsthal-numbers b/Lang/C-sharp/Jacobsthal-numbers
new file mode 120000
index 0000000000..8d875d3e3c
--- /dev/null
+++ b/Lang/C-sharp/Jacobsthal-numbers
@@ -0,0 +1 @@
+../../Task/Jacobsthal-numbers/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Jaro-similarity b/Lang/C-sharp/Jaro-similarity
new file mode 120000
index 0000000000..76ee880028
--- /dev/null
+++ b/Lang/C-sharp/Jaro-similarity
@@ -0,0 +1 @@
+../../Task/Jaro-similarity/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Jordan-P-lya-numbers b/Lang/C-sharp/Jordan-P-lya-numbers
new file mode 120000
index 0000000000..bdd5391b84
--- /dev/null
+++ b/Lang/C-sharp/Jordan-P-lya-numbers
@@ -0,0 +1 @@
+../../Task/Jordan-P-lya-numbers/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Juggler-sequence b/Lang/C-sharp/Juggler-sequence
new file mode 120000
index 0000000000..7c2e1e5df3
--- /dev/null
+++ b/Lang/C-sharp/Juggler-sequence
@@ -0,0 +1 @@
+../../Task/Juggler-sequence/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Levenshtein-distance-Alignment b/Lang/C-sharp/Levenshtein-distance-Alignment
new file mode 120000
index 0000000000..4a86af53da
--- /dev/null
+++ b/Lang/C-sharp/Levenshtein-distance-Alignment
@@ -0,0 +1 @@
+../../Task/Levenshtein-distance-Alignment/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Magic-constant b/Lang/C-sharp/Magic-constant
new file mode 120000
index 0000000000..b74721e026
--- /dev/null
+++ b/Lang/C-sharp/Magic-constant
@@ -0,0 +1 @@
+../../Task/Magic-constant/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Magic-squares-of-singly-even-order b/Lang/C-sharp/Magic-squares-of-singly-even-order
new file mode 120000
index 0000000000..7c09d264d6
--- /dev/null
+++ b/Lang/C-sharp/Magic-squares-of-singly-even-order
@@ -0,0 +1 @@
+../../Task/Magic-squares-of-singly-even-order/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Main-step-of-GOST-28147-89 b/Lang/C-sharp/Main-step-of-GOST-28147-89
new file mode 120000
index 0000000000..0d0396ff34
--- /dev/null
+++ b/Lang/C-sharp/Main-step-of-GOST-28147-89
@@ -0,0 +1 @@
+../../Task/Main-step-of-GOST-28147-89/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Maze-solving b/Lang/C-sharp/Maze-solving
new file mode 120000
index 0000000000..9a643105b4
--- /dev/null
+++ b/Lang/C-sharp/Maze-solving
@@ -0,0 +1 @@
+../../Task/Maze-solving/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Metronome b/Lang/C-sharp/Metronome
new file mode 120000
index 0000000000..d943840c54
--- /dev/null
+++ b/Lang/C-sharp/Metronome
@@ -0,0 +1 @@
+../../Task/Metronome/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Mind-boggling-card-trick b/Lang/C-sharp/Mind-boggling-card-trick
new file mode 120000
index 0000000000..65b695076e
--- /dev/null
+++ b/Lang/C-sharp/Mind-boggling-card-trick
@@ -0,0 +1 @@
+../../Task/Mind-boggling-card-trick/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Minkowski-question-mark-function b/Lang/C-sharp/Minkowski-question-mark-function
new file mode 120000
index 0000000000..b16d1e756c
--- /dev/null
+++ b/Lang/C-sharp/Minkowski-question-mark-function
@@ -0,0 +1 @@
+../../Task/Minkowski-question-mark-function/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Next-highest-int-from-digits b/Lang/C-sharp/Next-highest-int-from-digits
new file mode 120000
index 0000000000..2462971188
--- /dev/null
+++ b/Lang/C-sharp/Next-highest-int-from-digits
@@ -0,0 +1 @@
+../../Task/Next-highest-int-from-digits/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Padovan-sequence b/Lang/C-sharp/Padovan-sequence
new file mode 120000
index 0000000000..a90cb74ae7
--- /dev/null
+++ b/Lang/C-sharp/Padovan-sequence
@@ -0,0 +1 @@
+../../Task/Padovan-sequence/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Pancake-numbers b/Lang/C-sharp/Pancake-numbers
new file mode 120000
index 0000000000..5088584c71
--- /dev/null
+++ b/Lang/C-sharp/Pancake-numbers
@@ -0,0 +1 @@
+../../Task/Pancake-numbers/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Parse-an-IP-Address b/Lang/C-sharp/Parse-an-IP-Address
new file mode 120000
index 0000000000..fe231a87e2
--- /dev/null
+++ b/Lang/C-sharp/Parse-an-IP-Address
@@ -0,0 +1 @@
+../../Task/Parse-an-IP-Address/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Prime-numbers-whose-neighboring-pairs-are-tetraprimes b/Lang/C-sharp/Prime-numbers-whose-neighboring-pairs-are-tetraprimes
new file mode 120000
index 0000000000..6222df483b
--- /dev/null
+++ b/Lang/C-sharp/Prime-numbers-whose-neighboring-pairs-are-tetraprimes
@@ -0,0 +1 @@
+../../Task/Prime-numbers-whose-neighboring-pairs-are-tetraprimes/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Pseudo-random-numbers-PCG32 b/Lang/C-sharp/Pseudo-random-numbers-PCG32
new file mode 120000
index 0000000000..c32a0bbbd9
--- /dev/null
+++ b/Lang/C-sharp/Pseudo-random-numbers-PCG32
@@ -0,0 +1 @@
+../../Task/Pseudo-random-numbers-PCG32/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Ray-casting-algorithm b/Lang/C-sharp/Ray-casting-algorithm
new file mode 120000
index 0000000000..67165907f8
--- /dev/null
+++ b/Lang/C-sharp/Ray-casting-algorithm
@@ -0,0 +1 @@
+../../Task/Ray-casting-algorithm/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Rep-string b/Lang/C-sharp/Rep-string
new file mode 120000
index 0000000000..0c89d0f939
--- /dev/null
+++ b/Lang/C-sharp/Rep-string
@@ -0,0 +1 @@
+../../Task/Rep-string/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Solve-the-no-connection-puzzle b/Lang/C-sharp/Solve-the-no-connection-puzzle
new file mode 120000
index 0000000000..f2a7bf3a0e
--- /dev/null
+++ b/Lang/C-sharp/Solve-the-no-connection-puzzle
@@ -0,0 +1 @@
+../../Task/Solve-the-no-connection-puzzle/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Spelling-of-ordinal-numbers b/Lang/C-sharp/Spelling-of-ordinal-numbers
new file mode 120000
index 0000000000..f9129a4b80
--- /dev/null
+++ b/Lang/C-sharp/Spelling-of-ordinal-numbers
@@ -0,0 +1 @@
+../../Task/Spelling-of-ordinal-numbers/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Suffixation-of-decimal-numbers b/Lang/C-sharp/Suffixation-of-decimal-numbers
new file mode 120000
index 0000000000..2db739988c
--- /dev/null
+++ b/Lang/C-sharp/Suffixation-of-decimal-numbers
@@ -0,0 +1 @@
+../../Task/Suffixation-of-decimal-numbers/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Sylvesters-sequence b/Lang/C-sharp/Sylvesters-sequence
new file mode 120000
index 0000000000..3899fa057e
--- /dev/null
+++ b/Lang/C-sharp/Sylvesters-sequence
@@ -0,0 +1 @@
+../../Task/Sylvesters-sequence/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Topswops b/Lang/C-sharp/Topswops
new file mode 120000
index 0000000000..3f10a6cb93
--- /dev/null
+++ b/Lang/C-sharp/Topswops
@@ -0,0 +1 @@
+../../Task/Topswops/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Total-circles-area b/Lang/C-sharp/Total-circles-area
new file mode 120000
index 0000000000..d1b9a6ffb2
--- /dev/null
+++ b/Lang/C-sharp/Total-circles-area
@@ -0,0 +1 @@
+../../Task/Total-circles-area/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Tropical-algebra-overloading b/Lang/C-sharp/Tropical-algebra-overloading
new file mode 120000
index 0000000000..1b61aaaf8d
--- /dev/null
+++ b/Lang/C-sharp/Tropical-algebra-overloading
@@ -0,0 +1 @@
+../../Task/Tropical-algebra-overloading/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Verify-distribution-uniformity-Chi-squared-test b/Lang/C-sharp/Verify-distribution-uniformity-Chi-squared-test
new file mode 120000
index 0000000000..5101b70787
--- /dev/null
+++ b/Lang/C-sharp/Verify-distribution-uniformity-Chi-squared-test
@@ -0,0 +1 @@
+../../Task/Verify-distribution-uniformity-Chi-squared-test/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Verify-distribution-uniformity-Naive b/Lang/C-sharp/Verify-distribution-uniformity-Naive
new file mode 120000
index 0000000000..c41f1e05f6
--- /dev/null
+++ b/Lang/C-sharp/Verify-distribution-uniformity-Naive
@@ -0,0 +1 @@
+../../Task/Verify-distribution-uniformity-Naive/C-sharp
\ No newline at end of file
diff --git a/Lang/COBOL/Priority-queue b/Lang/COBOL/Priority-queue
new file mode 120000
index 0000000000..23c7bff2c3
--- /dev/null
+++ b/Lang/COBOL/Priority-queue
@@ -0,0 +1 @@
+../../Task/Priority-queue/COBOL
\ No newline at end of file
diff --git a/Lang/Commodore-BASIC/Forest-fire b/Lang/Commodore-BASIC/Forest-fire
new file mode 120000
index 0000000000..c384f7d98f
--- /dev/null
+++ b/Lang/Commodore-BASIC/Forest-fire
@@ -0,0 +1 @@
+../../Task/Forest-fire/Commodore-BASIC
\ No newline at end of file
diff --git a/Lang/Commodore-BASIC/Reverse-a-string b/Lang/Commodore-BASIC/Reverse-a-string
new file mode 120000
index 0000000000..db83958808
--- /dev/null
+++ b/Lang/Commodore-BASIC/Reverse-a-string
@@ -0,0 +1 @@
+../../Task/Reverse-a-string/Commodore-BASIC
\ No newline at end of file
diff --git a/Lang/Commodore-BASIC/The-Twelve-Days-of-Christmas b/Lang/Commodore-BASIC/The-Twelve-Days-of-Christmas
new file mode 120000
index 0000000000..cd67a05c16
--- /dev/null
+++ b/Lang/Commodore-BASIC/The-Twelve-Days-of-Christmas
@@ -0,0 +1 @@
+../../Task/The-Twelve-Days-of-Christmas/Commodore-BASIC
\ No newline at end of file
diff --git a/Lang/Cowgol/Narcissistic-decimal-number b/Lang/Cowgol/Narcissistic-decimal-number
new file mode 120000
index 0000000000..3ff09189b6
--- /dev/null
+++ b/Lang/Cowgol/Narcissistic-decimal-number
@@ -0,0 +1 @@
+../../Task/Narcissistic-decimal-number/Cowgol
\ No newline at end of file
diff --git a/Lang/Crystal/Hello-world-Graphical b/Lang/Crystal/Hello-world-Graphical
new file mode 120000
index 0000000000..aa3ccec00c
--- /dev/null
+++ b/Lang/Crystal/Hello-world-Graphical
@@ -0,0 +1 @@
+../../Task/Hello-world-Graphical/Crystal
\ No newline at end of file
diff --git a/Lang/Dart/Burrows-Wheeler-transform b/Lang/Dart/Burrows-Wheeler-transform
new file mode 120000
index 0000000000..d3c9f31111
--- /dev/null
+++ b/Lang/Dart/Burrows-Wheeler-transform
@@ -0,0 +1 @@
+../../Task/Burrows-Wheeler-transform/Dart
\ No newline at end of file
diff --git a/Lang/Dart/Euler-method b/Lang/Dart/Euler-method
new file mode 120000
index 0000000000..6501c260ce
--- /dev/null
+++ b/Lang/Dart/Euler-method
@@ -0,0 +1 @@
+../../Task/Euler-method/Dart
\ No newline at end of file
diff --git a/Lang/Dart/Evolutionary-algorithm b/Lang/Dart/Evolutionary-algorithm
new file mode 120000
index 0000000000..37e72623f8
--- /dev/null
+++ b/Lang/Dart/Evolutionary-algorithm
@@ -0,0 +1 @@
+../../Task/Evolutionary-algorithm/Dart
\ No newline at end of file
diff --git a/Lang/Dart/Fibonacci-word b/Lang/Dart/Fibonacci-word
new file mode 120000
index 0000000000..5feb3092ca
--- /dev/null
+++ b/Lang/Dart/Fibonacci-word
@@ -0,0 +1 @@
+../../Task/Fibonacci-word/Dart
\ No newline at end of file
diff --git a/Lang/Dart/Jordan-P-lya-numbers b/Lang/Dart/Jordan-P-lya-numbers
new file mode 120000
index 0000000000..84c71f877c
--- /dev/null
+++ b/Lang/Dart/Jordan-P-lya-numbers
@@ -0,0 +1 @@
+../../Task/Jordan-P-lya-numbers/Dart
\ No newline at end of file
diff --git a/Lang/Dart/Permutations-by-swapping b/Lang/Dart/Permutations-by-swapping
new file mode 120000
index 0000000000..9009ddfa84
--- /dev/null
+++ b/Lang/Dart/Permutations-by-swapping
@@ -0,0 +1 @@
+../../Task/Permutations-by-swapping/Dart
\ No newline at end of file
diff --git a/Lang/Dart/Price-fraction b/Lang/Dart/Price-fraction
new file mode 120000
index 0000000000..b65d52f099
--- /dev/null
+++ b/Lang/Dart/Price-fraction
@@ -0,0 +1 @@
+../../Task/Price-fraction/Dart
\ No newline at end of file
diff --git a/Lang/Dart/Primality-by-Wilsons-theorem b/Lang/Dart/Primality-by-Wilsons-theorem
new file mode 120000
index 0000000000..6834b7d634
--- /dev/null
+++ b/Lang/Dart/Primality-by-Wilsons-theorem
@@ -0,0 +1 @@
+../../Task/Primality-by-Wilsons-theorem/Dart
\ No newline at end of file
diff --git a/Lang/Dart/Pseudo-random-numbers-PCG32 b/Lang/Dart/Pseudo-random-numbers-PCG32
new file mode 120000
index 0000000000..40ec498984
--- /dev/null
+++ b/Lang/Dart/Pseudo-random-numbers-PCG32
@@ -0,0 +1 @@
+../../Task/Pseudo-random-numbers-PCG32/Dart
\ No newline at end of file
diff --git a/Lang/Dart/Quaternion-type b/Lang/Dart/Quaternion-type
new file mode 120000
index 0000000000..fb391b98d0
--- /dev/null
+++ b/Lang/Dart/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/Dart
\ No newline at end of file
diff --git a/Lang/Dart/Rot-13 b/Lang/Dart/Rot-13
new file mode 120000
index 0000000000..6136f05da5
--- /dev/null
+++ b/Lang/Dart/Rot-13
@@ -0,0 +1 @@
+../../Task/Rot-13/Dart
\ No newline at end of file
diff --git a/Lang/Dart/Validate-International-Securities-Identification-Number b/Lang/Dart/Validate-International-Securities-Identification-Number
new file mode 120000
index 0000000000..72bbf1cc0f
--- /dev/null
+++ b/Lang/Dart/Validate-International-Securities-Identification-Number
@@ -0,0 +1 @@
+../../Task/Validate-International-Securities-Identification-Number/Dart
\ No newline at end of file
diff --git a/Lang/Dart/Zeckendorf-arithmetic b/Lang/Dart/Zeckendorf-arithmetic
new file mode 120000
index 0000000000..bfaf3b6837
--- /dev/null
+++ b/Lang/Dart/Zeckendorf-arithmetic
@@ -0,0 +1 @@
+../../Task/Zeckendorf-arithmetic/Dart
\ No newline at end of file
diff --git a/Lang/Dart/Zeckendorf-number-representation b/Lang/Dart/Zeckendorf-number-representation
new file mode 120000
index 0000000000..eb4adc0005
--- /dev/null
+++ b/Lang/Dart/Zeckendorf-number-representation
@@ -0,0 +1 @@
+../../Task/Zeckendorf-number-representation/Dart
\ No newline at end of file
diff --git a/Lang/Draco/Narcissistic-decimal-number b/Lang/Draco/Narcissistic-decimal-number
new file mode 120000
index 0000000000..e893d928d6
--- /dev/null
+++ b/Lang/Draco/Narcissistic-decimal-number
@@ -0,0 +1 @@
+../../Task/Narcissistic-decimal-number/Draco
\ No newline at end of file
diff --git a/Lang/EDSAC-order-code/Pythagorean-quadruples b/Lang/EDSAC-order-code/Pythagorean-quadruples
new file mode 120000
index 0000000000..43dfaa296f
--- /dev/null
+++ b/Lang/EDSAC-order-code/Pythagorean-quadruples
@@ -0,0 +1 @@
+../../Task/Pythagorean-quadruples/EDSAC-order-code
\ No newline at end of file
diff --git a/Lang/EasyLang/Achilles-numbers b/Lang/EasyLang/Achilles-numbers
new file mode 120000
index 0000000000..90c0643d0e
--- /dev/null
+++ b/Lang/EasyLang/Achilles-numbers
@@ -0,0 +1 @@
+../../Task/Achilles-numbers/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Arithmetic-derivative b/Lang/EasyLang/Arithmetic-derivative
new file mode 120000
index 0000000000..13a223ff6a
--- /dev/null
+++ b/Lang/EasyLang/Arithmetic-derivative
@@ -0,0 +1 @@
+../../Task/Arithmetic-derivative/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Box-the-compass b/Lang/EasyLang/Box-the-compass
new file mode 120000
index 0000000000..4fd6c85d9d
--- /dev/null
+++ b/Lang/EasyLang/Box-the-compass
@@ -0,0 +1 @@
+../../Task/Box-the-compass/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Canonicalize-CIDR b/Lang/EasyLang/Canonicalize-CIDR
new file mode 120000
index 0000000000..ef98b51c97
--- /dev/null
+++ b/Lang/EasyLang/Canonicalize-CIDR
@@ -0,0 +1 @@
+../../Task/Canonicalize-CIDR/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Cartesian-product-of-two-or-more-lists b/Lang/EasyLang/Cartesian-product-of-two-or-more-lists
new file mode 120000
index 0000000000..012d512db6
--- /dev/null
+++ b/Lang/EasyLang/Cartesian-product-of-two-or-more-lists
@@ -0,0 +1 @@
+../../Task/Cartesian-product-of-two-or-more-lists/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Create-a-two-dimensional-array-at-runtime b/Lang/EasyLang/Create-a-two-dimensional-array-at-runtime
new file mode 120000
index 0000000000..9ab5d02120
--- /dev/null
+++ b/Lang/EasyLang/Create-a-two-dimensional-array-at-runtime
@@ -0,0 +1 @@
+../../Task/Create-a-two-dimensional-array-at-runtime/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Cuban-primes b/Lang/EasyLang/Cuban-primes
new file mode 120000
index 0000000000..602fb8a030
--- /dev/null
+++ b/Lang/EasyLang/Cuban-primes
@@ -0,0 +1 @@
+../../Task/Cuban-primes/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Damm-algorithm b/Lang/EasyLang/Damm-algorithm
new file mode 120000
index 0000000000..d7f6db29b1
--- /dev/null
+++ b/Lang/EasyLang/Damm-algorithm
@@ -0,0 +1 @@
+../../Task/Damm-algorithm/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/De-Bruijn-sequences b/Lang/EasyLang/De-Bruijn-sequences
new file mode 120000
index 0000000000..faba25f06a
--- /dev/null
+++ b/Lang/EasyLang/De-Bruijn-sequences
@@ -0,0 +1 @@
+../../Task/De-Bruijn-sequences/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Deceptive-numbers b/Lang/EasyLang/Deceptive-numbers
new file mode 120000
index 0000000000..eae8f8459d
--- /dev/null
+++ b/Lang/EasyLang/Deceptive-numbers
@@ -0,0 +1 @@
+../../Task/Deceptive-numbers/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Demings-funnel b/Lang/EasyLang/Demings-funnel
new file mode 120000
index 0000000000..d19d38286f
--- /dev/null
+++ b/Lang/EasyLang/Demings-funnel
@@ -0,0 +1 @@
+../../Task/Demings-funnel/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Dijkstras-algorithm b/Lang/EasyLang/Dijkstras-algorithm
new file mode 120000
index 0000000000..de47a7cc8f
--- /dev/null
+++ b/Lang/EasyLang/Dijkstras-algorithm
@@ -0,0 +1 @@
+../../Task/Dijkstras-algorithm/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Dinesmans-multiple-dwelling-problem b/Lang/EasyLang/Dinesmans-multiple-dwelling-problem
new file mode 120000
index 0000000000..09fc1d4edc
--- /dev/null
+++ b/Lang/EasyLang/Dinesmans-multiple-dwelling-problem
@@ -0,0 +1 @@
+../../Task/Dinesmans-multiple-dwelling-problem/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Diversity-prediction-theorem b/Lang/EasyLang/Diversity-prediction-theorem
new file mode 120000
index 0000000000..794b1e0805
--- /dev/null
+++ b/Lang/EasyLang/Diversity-prediction-theorem
@@ -0,0 +1 @@
+../../Task/Diversity-prediction-theorem/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Duffinian-numbers b/Lang/EasyLang/Duffinian-numbers
new file mode 120000
index 0000000000..75befe0bb1
--- /dev/null
+++ b/Lang/EasyLang/Duffinian-numbers
@@ -0,0 +1 @@
+../../Task/Duffinian-numbers/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Equal-prime-and-composite-sums b/Lang/EasyLang/Equal-prime-and-composite-sums
new file mode 120000
index 0000000000..d416ab6d61
--- /dev/null
+++ b/Lang/EasyLang/Equal-prime-and-composite-sums
@@ -0,0 +1 @@
+../../Task/Equal-prime-and-composite-sums/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Equilibrium-index b/Lang/EasyLang/Equilibrium-index
new file mode 120000
index 0000000000..165c2ae56a
--- /dev/null
+++ b/Lang/EasyLang/Equilibrium-index
@@ -0,0 +1 @@
+../../Task/Equilibrium-index/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Eulers-constant-0.5772... b/Lang/EasyLang/Eulers-constant-0.5772...
new file mode 120000
index 0000000000..481b218714
--- /dev/null
+++ b/Lang/EasyLang/Eulers-constant-0.5772...
@@ -0,0 +1 @@
+../../Task/Eulers-constant-0.5772.../EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/FASTA-format b/Lang/EasyLang/FASTA-format
new file mode 120000
index 0000000000..ca29d4ff3f
--- /dev/null
+++ b/Lang/EasyLang/FASTA-format
@@ -0,0 +1 @@
+../../Task/FASTA-format/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Find-the-intersection-of-two-lines b/Lang/EasyLang/Find-the-intersection-of-two-lines
new file mode 120000
index 0000000000..cffadf31bc
--- /dev/null
+++ b/Lang/EasyLang/Find-the-intersection-of-two-lines
@@ -0,0 +1 @@
+../../Task/Find-the-intersection-of-two-lines/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Find-the-missing-permutation b/Lang/EasyLang/Find-the-missing-permutation
new file mode 120000
index 0000000000..062fcb8e1c
--- /dev/null
+++ b/Lang/EasyLang/Find-the-missing-permutation
@@ -0,0 +1 @@
+../../Task/Find-the-missing-permutation/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Gauss-Jordan-matrix-inversion b/Lang/EasyLang/Gauss-Jordan-matrix-inversion
new file mode 120000
index 0000000000..4edf8b08eb
--- /dev/null
+++ b/Lang/EasyLang/Gauss-Jordan-matrix-inversion
@@ -0,0 +1 @@
+../../Task/Gauss-Jordan-matrix-inversion/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Gaussian-elimination b/Lang/EasyLang/Gaussian-elimination
new file mode 120000
index 0000000000..3600b047b6
--- /dev/null
+++ b/Lang/EasyLang/Gaussian-elimination
@@ -0,0 +1 @@
+../../Task/Gaussian-elimination/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Happy-numbers b/Lang/EasyLang/Happy-numbers
new file mode 120000
index 0000000000..c4ab4d4ef3
--- /dev/null
+++ b/Lang/EasyLang/Happy-numbers
@@ -0,0 +1 @@
+../../Task/Happy-numbers/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Hofstadter-Conway-$10-000-sequence b/Lang/EasyLang/Hofstadter-Conway-$10-000-sequence
new file mode 120000
index 0000000000..13e3a43372
--- /dev/null
+++ b/Lang/EasyLang/Hofstadter-Conway-$10-000-sequence
@@ -0,0 +1 @@
+../../Task/Hofstadter-Conway-$10-000-sequence/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Kaprekar-numbers b/Lang/EasyLang/Kaprekar-numbers
new file mode 120000
index 0000000000..8b04bae44a
--- /dev/null
+++ b/Lang/EasyLang/Kaprekar-numbers
@@ -0,0 +1 @@
+../../Task/Kaprekar-numbers/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Least-common-multiple b/Lang/EasyLang/Least-common-multiple
new file mode 120000
index 0000000000..4e6553c21f
--- /dev/null
+++ b/Lang/EasyLang/Least-common-multiple
@@ -0,0 +1 @@
+../../Task/Least-common-multiple/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Linear-congruential-generator b/Lang/EasyLang/Linear-congruential-generator
new file mode 120000
index 0000000000..08ba24e5b7
--- /dev/null
+++ b/Lang/EasyLang/Linear-congruential-generator
@@ -0,0 +1 @@
+../../Task/Linear-congruential-generator/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Long-primes b/Lang/EasyLang/Long-primes
new file mode 120000
index 0000000000..7bcfe1337a
--- /dev/null
+++ b/Lang/EasyLang/Long-primes
@@ -0,0 +1 @@
+../../Task/Long-primes/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Long-year b/Lang/EasyLang/Long-year
new file mode 120000
index 0000000000..c98469be44
--- /dev/null
+++ b/Lang/EasyLang/Long-year
@@ -0,0 +1 @@
+../../Task/Long-year/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Longest-common-subsequence b/Lang/EasyLang/Longest-common-subsequence
new file mode 120000
index 0000000000..6cc703826c
--- /dev/null
+++ b/Lang/EasyLang/Longest-common-subsequence
@@ -0,0 +1 @@
+../../Task/Longest-common-subsequence/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Lucas-Lehmer-test b/Lang/EasyLang/Lucas-Lehmer-test
new file mode 120000
index 0000000000..37ce43bc05
--- /dev/null
+++ b/Lang/EasyLang/Lucas-Lehmer-test
@@ -0,0 +1 @@
+../../Task/Lucas-Lehmer-test/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Luhn-test-of-credit-card-numbers b/Lang/EasyLang/Luhn-test-of-credit-card-numbers
new file mode 120000
index 0000000000..6cdbead8c8
--- /dev/null
+++ b/Lang/EasyLang/Luhn-test-of-credit-card-numbers
@@ -0,0 +1 @@
+../../Task/Luhn-test-of-credit-card-numbers/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/MD5 b/Lang/EasyLang/MD5
new file mode 120000
index 0000000000..1974a8639d
--- /dev/null
+++ b/Lang/EasyLang/MD5
@@ -0,0 +1 @@
+../../Task/MD5/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Magic-8-ball b/Lang/EasyLang/Magic-8-ball
new file mode 120000
index 0000000000..27f204a23e
--- /dev/null
+++ b/Lang/EasyLang/Magic-8-ball
@@ -0,0 +1 @@
+../../Task/Magic-8-ball/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Magic-constant b/Lang/EasyLang/Magic-constant
new file mode 120000
index 0000000000..e7bddcf034
--- /dev/null
+++ b/Lang/EasyLang/Magic-constant
@@ -0,0 +1 @@
+../../Task/Magic-constant/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Magic-squares-of-odd-order b/Lang/EasyLang/Magic-squares-of-odd-order
new file mode 120000
index 0000000000..c1250ae803
--- /dev/null
+++ b/Lang/EasyLang/Magic-squares-of-odd-order
@@ -0,0 +1 @@
+../../Task/Magic-squares-of-odd-order/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Matrix-multiplication b/Lang/EasyLang/Matrix-multiplication
new file mode 120000
index 0000000000..210bca9988
--- /dev/null
+++ b/Lang/EasyLang/Matrix-multiplication
@@ -0,0 +1 @@
+../../Task/Matrix-multiplication/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Meissel-Mertens-constant b/Lang/EasyLang/Meissel-Mertens-constant
new file mode 120000
index 0000000000..2673a3a653
--- /dev/null
+++ b/Lang/EasyLang/Meissel-Mertens-constant
@@ -0,0 +1 @@
+../../Task/Meissel-Mertens-constant/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Mertens-function b/Lang/EasyLang/Mertens-function
new file mode 120000
index 0000000000..9535db88d7
--- /dev/null
+++ b/Lang/EasyLang/Mertens-function
@@ -0,0 +1 @@
+../../Task/Mertens-function/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Munchausen-numbers b/Lang/EasyLang/Munchausen-numbers
new file mode 120000
index 0000000000..82315ebcc3
--- /dev/null
+++ b/Lang/EasyLang/Munchausen-numbers
@@ -0,0 +1 @@
+../../Task/Munchausen-numbers/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Mutual-recursion b/Lang/EasyLang/Mutual-recursion
new file mode 120000
index 0000000000..9dbd653e23
--- /dev/null
+++ b/Lang/EasyLang/Mutual-recursion
@@ -0,0 +1 @@
+../../Task/Mutual-recursion/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Next-highest-int-from-digits b/Lang/EasyLang/Next-highest-int-from-digits
new file mode 120000
index 0000000000..b3f44119a8
--- /dev/null
+++ b/Lang/EasyLang/Next-highest-int-from-digits
@@ -0,0 +1 @@
+../../Task/Next-highest-int-from-digits/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Non-decimal-radices-Convert b/Lang/EasyLang/Non-decimal-radices-Convert
new file mode 120000
index 0000000000..e286a4396d
--- /dev/null
+++ b/Lang/EasyLang/Non-decimal-radices-Convert
@@ -0,0 +1 @@
+../../Task/Non-decimal-radices-Convert/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Odd-word-problem b/Lang/EasyLang/Odd-word-problem
new file mode 120000
index 0000000000..0886623884
--- /dev/null
+++ b/Lang/EasyLang/Odd-word-problem
@@ -0,0 +1 @@
+../../Task/Odd-word-problem/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Old-Russian-measure-of-length b/Lang/EasyLang/Old-Russian-measure-of-length
new file mode 120000
index 0000000000..f293c18a0a
--- /dev/null
+++ b/Lang/EasyLang/Old-Russian-measure-of-length
@@ -0,0 +1 @@
+../../Task/Old-Russian-measure-of-length/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Old-lady-swallowed-a-fly b/Lang/EasyLang/Old-lady-swallowed-a-fly
new file mode 120000
index 0000000000..f3a3472099
--- /dev/null
+++ b/Lang/EasyLang/Old-lady-swallowed-a-fly
@@ -0,0 +1 @@
+../../Task/Old-lady-swallowed-a-fly/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/One-of-n-lines-in-a-file b/Lang/EasyLang/One-of-n-lines-in-a-file
new file mode 120000
index 0000000000..683c0899da
--- /dev/null
+++ b/Lang/EasyLang/One-of-n-lines-in-a-file
@@ -0,0 +1 @@
+../../Task/One-of-n-lines-in-a-file/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/OpenWebNet-password b/Lang/EasyLang/OpenWebNet-password
new file mode 120000
index 0000000000..1cfc17e776
--- /dev/null
+++ b/Lang/EasyLang/OpenWebNet-password
@@ -0,0 +1 @@
+../../Task/OpenWebNet-password/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Order-two-numerical-lists b/Lang/EasyLang/Order-two-numerical-lists
new file mode 120000
index 0000000000..0574c3c6db
--- /dev/null
+++ b/Lang/EasyLang/Order-two-numerical-lists
@@ -0,0 +1 @@
+../../Task/Order-two-numerical-lists/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Ormiston-triples b/Lang/EasyLang/Ormiston-triples
new file mode 120000
index 0000000000..de3ff3dcf1
--- /dev/null
+++ b/Lang/EasyLang/Ormiston-triples
@@ -0,0 +1 @@
+../../Task/Ormiston-triples/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Padovan-sequence b/Lang/EasyLang/Padovan-sequence
new file mode 120000
index 0000000000..d568888890
--- /dev/null
+++ b/Lang/EasyLang/Padovan-sequence
@@ -0,0 +1 @@
+../../Task/Padovan-sequence/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Palindrome-dates b/Lang/EasyLang/Palindrome-dates
new file mode 120000
index 0000000000..a27c75b0d5
--- /dev/null
+++ b/Lang/EasyLang/Palindrome-dates
@@ -0,0 +1 @@
+../../Task/Palindrome-dates/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Pascals-triangle b/Lang/EasyLang/Pascals-triangle
new file mode 120000
index 0000000000..1c14b19dad
--- /dev/null
+++ b/Lang/EasyLang/Pascals-triangle
@@ -0,0 +1 @@
+../../Task/Pascals-triangle/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Perfect-totient-numbers b/Lang/EasyLang/Perfect-totient-numbers
new file mode 120000
index 0000000000..73baaf8d08
--- /dev/null
+++ b/Lang/EasyLang/Perfect-totient-numbers
@@ -0,0 +1 @@
+../../Task/Perfect-totient-numbers/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Permutations-by-swapping b/Lang/EasyLang/Permutations-by-swapping
new file mode 120000
index 0000000000..6fca752258
--- /dev/null
+++ b/Lang/EasyLang/Permutations-by-swapping
@@ -0,0 +1 @@
+../../Task/Permutations-by-swapping/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Pernicious-numbers b/Lang/EasyLang/Pernicious-numbers
new file mode 120000
index 0000000000..2adf8c61c2
--- /dev/null
+++ b/Lang/EasyLang/Pernicious-numbers
@@ -0,0 +1 @@
+../../Task/Pernicious-numbers/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Pisano-period b/Lang/EasyLang/Pisano-period
new file mode 120000
index 0000000000..03e71e0e0c
--- /dev/null
+++ b/Lang/EasyLang/Pisano-period
@@ -0,0 +1 @@
+../../Task/Pisano-period/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Playing-cards b/Lang/EasyLang/Playing-cards
new file mode 120000
index 0000000000..65c563fef4
--- /dev/null
+++ b/Lang/EasyLang/Playing-cards
@@ -0,0 +1 @@
+../../Task/Playing-cards/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Primality-by-Wilsons-theorem b/Lang/EasyLang/Primality-by-Wilsons-theorem
new file mode 120000
index 0000000000..f47bc08707
--- /dev/null
+++ b/Lang/EasyLang/Primality-by-Wilsons-theorem
@@ -0,0 +1 @@
+../../Task/Primality-by-Wilsons-theorem/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Prime-conspiracy b/Lang/EasyLang/Prime-conspiracy
new file mode 120000
index 0000000000..5276eb838d
--- /dev/null
+++ b/Lang/EasyLang/Prime-conspiracy
@@ -0,0 +1 @@
+../../Task/Prime-conspiracy/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Probabilistic-choice b/Lang/EasyLang/Probabilistic-choice
new file mode 120000
index 0000000000..f4c8e2ec2b
--- /dev/null
+++ b/Lang/EasyLang/Probabilistic-choice
@@ -0,0 +1 @@
+../../Task/Probabilistic-choice/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Problem-of-Apollonius b/Lang/EasyLang/Problem-of-Apollonius
new file mode 120000
index 0000000000..34ccacd36b
--- /dev/null
+++ b/Lang/EasyLang/Problem-of-Apollonius
@@ -0,0 +1 @@
+../../Task/Problem-of-Apollonius/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Proper-divisors b/Lang/EasyLang/Proper-divisors
new file mode 120000
index 0000000000..a6f15193a6
--- /dev/null
+++ b/Lang/EasyLang/Proper-divisors
@@ -0,0 +1 @@
+../../Task/Proper-divisors/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Pythagorean-triples b/Lang/EasyLang/Pythagorean-triples
new file mode 120000
index 0000000000..ae5979164c
--- /dev/null
+++ b/Lang/EasyLang/Pythagorean-triples
@@ -0,0 +1 @@
+../../Task/Pythagorean-triples/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Quaternion-type b/Lang/EasyLang/Quaternion-type
new file mode 120000
index 0000000000..fd590dabb6
--- /dev/null
+++ b/Lang/EasyLang/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Queue-Definition b/Lang/EasyLang/Queue-Definition
new file mode 120000
index 0000000000..60d84f451e
--- /dev/null
+++ b/Lang/EasyLang/Queue-Definition
@@ -0,0 +1 @@
+../../Task/Queue-Definition/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Queue-Usage b/Lang/EasyLang/Queue-Usage
new file mode 120000
index 0000000000..0a07f759a8
--- /dev/null
+++ b/Lang/EasyLang/Queue-Usage
@@ -0,0 +1 @@
+../../Task/Queue-Usage/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/RPG-attributes-generator b/Lang/EasyLang/RPG-attributes-generator
new file mode 120000
index 0000000000..1bb6325d13
--- /dev/null
+++ b/Lang/EasyLang/RPG-attributes-generator
@@ -0,0 +1 @@
+../../Task/RPG-attributes-generator/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Ramanujan-primes-twins b/Lang/EasyLang/Ramanujan-primes-twins
new file mode 120000
index 0000000000..5e0a528dbb
--- /dev/null
+++ b/Lang/EasyLang/Ramanujan-primes-twins
@@ -0,0 +1 @@
+../../Task/Ramanujan-primes-twins/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Range-extraction b/Lang/EasyLang/Range-extraction
new file mode 120000
index 0000000000..b10a21cd95
--- /dev/null
+++ b/Lang/EasyLang/Range-extraction
@@ -0,0 +1 @@
+../../Task/Range-extraction/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Rate-counter b/Lang/EasyLang/Rate-counter
new file mode 120000
index 0000000000..d4dfd5cedd
--- /dev/null
+++ b/Lang/EasyLang/Rate-counter
@@ -0,0 +1 @@
+../../Task/Rate-counter/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Reduced-row-echelon-form b/Lang/EasyLang/Reduced-row-echelon-form
new file mode 120000
index 0000000000..7ab5f9f24b
--- /dev/null
+++ b/Lang/EasyLang/Reduced-row-echelon-form
@@ -0,0 +1 @@
+../../Task/Reduced-row-echelon-form/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Rep-string b/Lang/EasyLang/Rep-string
new file mode 120000
index 0000000000..c011f2f49a
--- /dev/null
+++ b/Lang/EasyLang/Rep-string
@@ -0,0 +1 @@
+../../Task/Rep-string/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Reverse-words-in-a-string b/Lang/EasyLang/Reverse-words-in-a-string
new file mode 120000
index 0000000000..ab8b42f790
--- /dev/null
+++ b/Lang/EasyLang/Reverse-words-in-a-string
@@ -0,0 +1 @@
+../../Task/Reverse-words-in-a-string/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Roots-of-a-function b/Lang/EasyLang/Roots-of-a-function
new file mode 120000
index 0000000000..184fd0b60d
--- /dev/null
+++ b/Lang/EasyLang/Roots-of-a-function
@@ -0,0 +1 @@
+../../Task/Roots-of-a-function/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Roots-of-unity b/Lang/EasyLang/Roots-of-unity
new file mode 120000
index 0000000000..828ac953fa
--- /dev/null
+++ b/Lang/EasyLang/Roots-of-unity
@@ -0,0 +1 @@
+../../Task/Roots-of-unity/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Runge-Kutta-method b/Lang/EasyLang/Runge-Kutta-method
new file mode 120000
index 0000000000..404f8f7a22
--- /dev/null
+++ b/Lang/EasyLang/Runge-Kutta-method
@@ -0,0 +1 @@
+../../Task/Runge-Kutta-method/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Safe-primes-and-unsafe-primes b/Lang/EasyLang/Safe-primes-and-unsafe-primes
new file mode 120000
index 0000000000..1a2584a87e
--- /dev/null
+++ b/Lang/EasyLang/Safe-primes-and-unsafe-primes
@@ -0,0 +1 @@
+../../Task/Safe-primes-and-unsafe-primes/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Set-right-adjacent-bits b/Lang/EasyLang/Set-right-adjacent-bits
new file mode 120000
index 0000000000..ec9bf3c5a8
--- /dev/null
+++ b/Lang/EasyLang/Set-right-adjacent-bits
@@ -0,0 +1 @@
+../../Task/Set-right-adjacent-bits/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Sexy-primes b/Lang/EasyLang/Sexy-primes
new file mode 120000
index 0000000000..5323f1eac1
--- /dev/null
+++ b/Lang/EasyLang/Sexy-primes
@@ -0,0 +1 @@
+../../Task/Sexy-primes/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Shortest-common-supersequence b/Lang/EasyLang/Shortest-common-supersequence
new file mode 120000
index 0000000000..607dae8dd4
--- /dev/null
+++ b/Lang/EasyLang/Shortest-common-supersequence
@@ -0,0 +1 @@
+../../Task/Shortest-common-supersequence/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Sieve-of-Pritchard b/Lang/EasyLang/Sieve-of-Pritchard
new file mode 120000
index 0000000000..26c5587430
--- /dev/null
+++ b/Lang/EasyLang/Sieve-of-Pritchard
@@ -0,0 +1 @@
+../../Task/Sieve-of-Pritchard/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Sleeping-Beauty-problem b/Lang/EasyLang/Sleeping-Beauty-problem
new file mode 120000
index 0000000000..3221388f3b
--- /dev/null
+++ b/Lang/EasyLang/Sleeping-Beauty-problem
@@ -0,0 +1 @@
+../../Task/Sleeping-Beauty-problem/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Smarandache-prime-digital-sequence b/Lang/EasyLang/Smarandache-prime-digital-sequence
new file mode 120000
index 0000000000..5a92cc0ae9
--- /dev/null
+++ b/Lang/EasyLang/Smarandache-prime-digital-sequence
@@ -0,0 +1 @@
+../../Task/Smarandache-prime-digital-sequence/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Soloways-recurring-rainfall b/Lang/EasyLang/Soloways-recurring-rainfall
new file mode 120000
index 0000000000..9662259f25
--- /dev/null
+++ b/Lang/EasyLang/Soloways-recurring-rainfall
@@ -0,0 +1 @@
+../../Task/Soloways-recurring-rainfall/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Sorting-algorithms-Bogosort b/Lang/EasyLang/Sorting-algorithms-Bogosort
new file mode 120000
index 0000000000..b0d8dd10f8
--- /dev/null
+++ b/Lang/EasyLang/Sorting-algorithms-Bogosort
@@ -0,0 +1 @@
+../../Task/Sorting-algorithms-Bogosort/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Spinning-rod-animation-Text b/Lang/EasyLang/Spinning-rod-animation-Text
new file mode 120000
index 0000000000..8d7a484a76
--- /dev/null
+++ b/Lang/EasyLang/Spinning-rod-animation-Text
@@ -0,0 +1 @@
+../../Task/Spinning-rod-animation-Text/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Spiral-matrix b/Lang/EasyLang/Spiral-matrix
new file mode 120000
index 0000000000..6a306658a2
--- /dev/null
+++ b/Lang/EasyLang/Spiral-matrix
@@ -0,0 +1 @@
+../../Task/Spiral-matrix/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Square-but-not-cube b/Lang/EasyLang/Square-but-not-cube
new file mode 120000
index 0000000000..573451d99d
--- /dev/null
+++ b/Lang/EasyLang/Square-but-not-cube
@@ -0,0 +1 @@
+../../Task/Square-but-not-cube/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Stack b/Lang/EasyLang/Stack
new file mode 120000
index 0000000000..0038ea59db
--- /dev/null
+++ b/Lang/EasyLang/Stack
@@ -0,0 +1 @@
+../../Task/Stack/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Start-from-a-main-routine b/Lang/EasyLang/Start-from-a-main-routine
new file mode 120000
index 0000000000..6b5dd8c795
--- /dev/null
+++ b/Lang/EasyLang/Start-from-a-main-routine
@@ -0,0 +1 @@
+../../Task/Start-from-a-main-routine/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Stern-Brocot-sequence b/Lang/EasyLang/Stern-Brocot-sequence
new file mode 120000
index 0000000000..0fd407fbf1
--- /dev/null
+++ b/Lang/EasyLang/Stern-Brocot-sequence
@@ -0,0 +1 @@
+../../Task/Stern-Brocot-sequence/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Strong-and-weak-primes b/Lang/EasyLang/Strong-and-weak-primes
new file mode 120000
index 0000000000..7a0f4adcd7
--- /dev/null
+++ b/Lang/EasyLang/Strong-and-weak-primes
@@ -0,0 +1 @@
+../../Task/Strong-and-weak-primes/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Substitution-cipher b/Lang/EasyLang/Substitution-cipher
new file mode 120000
index 0000000000..08b863c199
--- /dev/null
+++ b/Lang/EasyLang/Substitution-cipher
@@ -0,0 +1 @@
+../../Task/Substitution-cipher/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Sudan-function b/Lang/EasyLang/Sudan-function
new file mode 120000
index 0000000000..00925b61cc
--- /dev/null
+++ b/Lang/EasyLang/Sudan-function
@@ -0,0 +1 @@
+../../Task/Sudan-function/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Sum-of-elements-below-main-diagonal-of-matrix b/Lang/EasyLang/Sum-of-elements-below-main-diagonal-of-matrix
new file mode 120000
index 0000000000..9d1f3d5072
--- /dev/null
+++ b/Lang/EasyLang/Sum-of-elements-below-main-diagonal-of-matrix
@@ -0,0 +1 @@
+../../Task/Sum-of-elements-below-main-diagonal-of-matrix/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Superellipse b/Lang/EasyLang/Superellipse
new file mode 120000
index 0000000000..cf8cdb08f6
--- /dev/null
+++ b/Lang/EasyLang/Superellipse
@@ -0,0 +1 @@
+../../Task/Superellipse/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Ternary-logic b/Lang/EasyLang/Ternary-logic
new file mode 120000
index 0000000000..fbbe98ec9f
--- /dev/null
+++ b/Lang/EasyLang/Ternary-logic
@@ -0,0 +1 @@
+../../Task/Ternary-logic/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Test-integerness b/Lang/EasyLang/Test-integerness
new file mode 120000
index 0000000000..e308fb8af8
--- /dev/null
+++ b/Lang/EasyLang/Test-integerness
@@ -0,0 +1 @@
+../../Task/Test-integerness/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/The-sieve-of-Sundaram b/Lang/EasyLang/The-sieve-of-Sundaram
new file mode 120000
index 0000000000..873d444bf6
--- /dev/null
+++ b/Lang/EasyLang/The-sieve-of-Sundaram
@@ -0,0 +1 @@
+../../Task/The-sieve-of-Sundaram/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Thue-Morse b/Lang/EasyLang/Thue-Morse
new file mode 120000
index 0000000000..9e3ae46e6c
--- /dev/null
+++ b/Lang/EasyLang/Thue-Morse
@@ -0,0 +1 @@
+../../Task/Thue-Morse/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Trabb-Pardo-Knuth-algorithm b/Lang/EasyLang/Trabb-Pardo-Knuth-algorithm
new file mode 120000
index 0000000000..ca1b958ae3
--- /dev/null
+++ b/Lang/EasyLang/Trabb-Pardo-Knuth-algorithm
@@ -0,0 +1 @@
+../../Task/Trabb-Pardo-Knuth-algorithm/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Trigonometric-functions b/Lang/EasyLang/Trigonometric-functions
new file mode 120000
index 0000000000..387caf6602
--- /dev/null
+++ b/Lang/EasyLang/Trigonometric-functions
@@ -0,0 +1 @@
+../../Task/Trigonometric-functions/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Truncatable-primes b/Lang/EasyLang/Truncatable-primes
new file mode 120000
index 0000000000..4dcfac21ce
--- /dev/null
+++ b/Lang/EasyLang/Truncatable-primes
@@ -0,0 +1 @@
+../../Task/Truncatable-primes/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Unbias-a-random-generator b/Lang/EasyLang/Unbias-a-random-generator
new file mode 120000
index 0000000000..964b26809c
--- /dev/null
+++ b/Lang/EasyLang/Unbias-a-random-generator
@@ -0,0 +1 @@
+../../Task/Unbias-a-random-generator/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Validate-International-Securities-Identification-Number b/Lang/EasyLang/Validate-International-Securities-Identification-Number
new file mode 120000
index 0000000000..125038f3d2
--- /dev/null
+++ b/Lang/EasyLang/Validate-International-Securities-Identification-Number
@@ -0,0 +1 @@
+../../Task/Validate-International-Securities-Identification-Number/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Vector b/Lang/EasyLang/Vector
new file mode 120000
index 0000000000..3185c7d539
--- /dev/null
+++ b/Lang/EasyLang/Vector
@@ -0,0 +1 @@
+../../Task/Vector/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Vector-products b/Lang/EasyLang/Vector-products
new file mode 120000
index 0000000000..dd2b30f534
--- /dev/null
+++ b/Lang/EasyLang/Vector-products
@@ -0,0 +1 @@
+../../Task/Vector-products/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Voronoi-diagram b/Lang/EasyLang/Voronoi-diagram
new file mode 120000
index 0000000000..d875657141
--- /dev/null
+++ b/Lang/EasyLang/Voronoi-diagram
@@ -0,0 +1 @@
+../../Task/Voronoi-diagram/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Wieferich-primes b/Lang/EasyLang/Wieferich-primes
new file mode 120000
index 0000000000..51f8158742
--- /dev/null
+++ b/Lang/EasyLang/Wieferich-primes
@@ -0,0 +1 @@
+../../Task/Wieferich-primes/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Wireworld b/Lang/EasyLang/Wireworld
new file mode 120000
index 0000000000..873d48f6a7
--- /dev/null
+++ b/Lang/EasyLang/Wireworld
@@ -0,0 +1 @@
+../../Task/Wireworld/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Yellowstone-sequence b/Lang/EasyLang/Yellowstone-sequence
new file mode 120000
index 0000000000..76abf29ac7
--- /dev/null
+++ b/Lang/EasyLang/Yellowstone-sequence
@@ -0,0 +1 @@
+../../Task/Yellowstone-sequence/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Yin-and-yang b/Lang/EasyLang/Yin-and-yang
new file mode 120000
index 0000000000..5eb9553382
--- /dev/null
+++ b/Lang/EasyLang/Yin-and-yang
@@ -0,0 +1 @@
+../../Task/Yin-and-yang/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Zumkeller-numbers b/Lang/EasyLang/Zumkeller-numbers
new file mode 120000
index 0000000000..194eacc320
--- /dev/null
+++ b/Lang/EasyLang/Zumkeller-numbers
@@ -0,0 +1 @@
+../../Task/Zumkeller-numbers/EasyLang
\ No newline at end of file
diff --git a/Lang/Ecstasy/N-queens-problem b/Lang/Ecstasy/N-queens-problem
new file mode 120000
index 0000000000..695c0416ee
--- /dev/null
+++ b/Lang/Ecstasy/N-queens-problem
@@ -0,0 +1 @@
+../../Task/N-queens-problem/Ecstasy
\ No newline at end of file
diff --git a/Lang/Elixir/Padovan-sequence b/Lang/Elixir/Padovan-sequence
new file mode 120000
index 0000000000..1b11fdfcb3
--- /dev/null
+++ b/Lang/Elixir/Padovan-sequence
@@ -0,0 +1 @@
+../../Task/Padovan-sequence/Elixir
\ No newline at end of file
diff --git a/Lang/Elixir/Shoelace-formula-for-polygonal-area b/Lang/Elixir/Shoelace-formula-for-polygonal-area
new file mode 120000
index 0000000000..f28f8d7f49
--- /dev/null
+++ b/Lang/Elixir/Shoelace-formula-for-polygonal-area
@@ -0,0 +1 @@
+../../Task/Shoelace-formula-for-polygonal-area/Elixir
\ No newline at end of file
diff --git a/Lang/Elm/Greatest-common-divisor b/Lang/Elm/Greatest-common-divisor
new file mode 120000
index 0000000000..b61057b86e
--- /dev/null
+++ b/Lang/Elm/Greatest-common-divisor
@@ -0,0 +1 @@
+../../Task/Greatest-common-divisor/Elm
\ No newline at end of file
diff --git a/Lang/Elm/Prime-decomposition b/Lang/Elm/Prime-decomposition
new file mode 120000
index 0000000000..a3a9b92e08
--- /dev/null
+++ b/Lang/Elm/Prime-decomposition
@@ -0,0 +1 @@
+../../Task/Prime-decomposition/Elm
\ No newline at end of file
diff --git a/Lang/Elm/Sum-of-a-series b/Lang/Elm/Sum-of-a-series
new file mode 120000
index 0000000000..b1ba524bb3
--- /dev/null
+++ b/Lang/Elm/Sum-of-a-series
@@ -0,0 +1 @@
+../../Task/Sum-of-a-series/Elm
\ No newline at end of file
diff --git a/Lang/Emacs-Lisp/Strip-a-set-of-characters-from-a-string b/Lang/Emacs-Lisp/Strip-a-set-of-characters-from-a-string
new file mode 120000
index 0000000000..901b18a4e0
--- /dev/null
+++ b/Lang/Emacs-Lisp/Strip-a-set-of-characters-from-a-string
@@ -0,0 +1 @@
+../../Task/Strip-a-set-of-characters-from-a-string/Emacs-Lisp
\ No newline at end of file
diff --git a/Lang/Erlang/Zeckendorf-number-representation b/Lang/Erlang/Zeckendorf-number-representation
new file mode 120000
index 0000000000..6a77e53f6b
--- /dev/null
+++ b/Lang/Erlang/Zeckendorf-number-representation
@@ -0,0 +1 @@
+../../Task/Zeckendorf-number-representation/Erlang
\ No newline at end of file
diff --git a/Lang/Excel/Entropy b/Lang/Excel/Entropy
new file mode 120000
index 0000000000..8d4e6441d6
--- /dev/null
+++ b/Lang/Excel/Entropy
@@ -0,0 +1 @@
+../../Task/Entropy/Excel
\ No newline at end of file
diff --git a/Lang/F-Sharp/Variadic-function b/Lang/F-Sharp/Variadic-function
new file mode 120000
index 0000000000..d32ee2a40f
--- /dev/null
+++ b/Lang/F-Sharp/Variadic-function
@@ -0,0 +1 @@
+../../Task/Variadic-function/F-Sharp
\ No newline at end of file
diff --git a/Lang/F-Sharp/Wireworld b/Lang/F-Sharp/Wireworld
new file mode 120000
index 0000000000..32d571d649
--- /dev/null
+++ b/Lang/F-Sharp/Wireworld
@@ -0,0 +1 @@
+../../Task/Wireworld/F-Sharp
\ No newline at end of file
diff --git a/Lang/Fish/The-Twelve-Days-of-Christmas b/Lang/Fish/The-Twelve-Days-of-Christmas
new file mode 120000
index 0000000000..b2ce6d5872
--- /dev/null
+++ b/Lang/Fish/The-Twelve-Days-of-Christmas
@@ -0,0 +1 @@
+../../Task/The-Twelve-Days-of-Christmas/Fish
\ No newline at end of file
diff --git a/Lang/Forth/21-game b/Lang/Forth/21-game
new file mode 120000
index 0000000000..1f62421370
--- /dev/null
+++ b/Lang/Forth/21-game
@@ -0,0 +1 @@
+../../Task/21-game/Forth
\ No newline at end of file
diff --git a/Lang/Forth/Calendar b/Lang/Forth/Calendar
new file mode 120000
index 0000000000..1dc0827699
--- /dev/null
+++ b/Lang/Forth/Calendar
@@ -0,0 +1 @@
+../../Task/Calendar/Forth
\ No newline at end of file
diff --git a/Lang/Forth/Calendar---for-REAL-programmers b/Lang/Forth/Calendar---for-REAL-programmers
new file mode 120000
index 0000000000..499105cf3a
--- /dev/null
+++ b/Lang/Forth/Calendar---for-REAL-programmers
@@ -0,0 +1 @@
+../../Task/Calendar---for-REAL-programmers/Forth
\ No newline at end of file
diff --git a/Lang/Forth/Determine-if-a-string-has-all-the-same-characters b/Lang/Forth/Determine-if-a-string-has-all-the-same-characters
new file mode 120000
index 0000000000..79fb92f191
--- /dev/null
+++ b/Lang/Forth/Determine-if-a-string-has-all-the-same-characters
@@ -0,0 +1 @@
+../../Task/Determine-if-a-string-has-all-the-same-characters/Forth
\ No newline at end of file
diff --git a/Lang/Forth/Dijkstras-algorithm b/Lang/Forth/Dijkstras-algorithm
new file mode 120000
index 0000000000..a69ebc3263
--- /dev/null
+++ b/Lang/Forth/Dijkstras-algorithm
@@ -0,0 +1 @@
+../../Task/Dijkstras-algorithm/Forth
\ No newline at end of file
diff --git a/Lang/Forth/Flipping-bits-game b/Lang/Forth/Flipping-bits-game
new file mode 120000
index 0000000000..2a3f084d3e
--- /dev/null
+++ b/Lang/Forth/Flipping-bits-game
@@ -0,0 +1 @@
+../../Task/Flipping-bits-game/Forth
\ No newline at end of file
diff --git a/Lang/Forth/Keyboard-input-Flush-the-keyboard-buffer b/Lang/Forth/Keyboard-input-Flush-the-keyboard-buffer
new file mode 120000
index 0000000000..d41fcd8680
--- /dev/null
+++ b/Lang/Forth/Keyboard-input-Flush-the-keyboard-buffer
@@ -0,0 +1 @@
+../../Task/Keyboard-input-Flush-the-keyboard-buffer/Forth
\ No newline at end of file
diff --git a/Lang/Forth/Undefined-values b/Lang/Forth/Undefined-values
new file mode 120000
index 0000000000..ddddc28113
--- /dev/null
+++ b/Lang/Forth/Undefined-values
@@ -0,0 +1 @@
+../../Task/Undefined-values/Forth
\ No newline at end of file
diff --git a/Lang/Forth/Vampire-number b/Lang/Forth/Vampire-number
new file mode 120000
index 0000000000..f6cacda517
--- /dev/null
+++ b/Lang/Forth/Vampire-number
@@ -0,0 +1 @@
+../../Task/Vampire-number/Forth
\ No newline at end of file
diff --git a/Lang/Forth/Variable-size-Set b/Lang/Forth/Variable-size-Set
new file mode 120000
index 0000000000..b63c53f866
--- /dev/null
+++ b/Lang/Forth/Variable-size-Set
@@ -0,0 +1 @@
+../../Task/Variable-size-Set/Forth
\ No newline at end of file
diff --git a/Lang/Forth/Write-entire-file b/Lang/Forth/Write-entire-file
new file mode 120000
index 0000000000..742c99d4f6
--- /dev/null
+++ b/Lang/Forth/Write-entire-file
@@ -0,0 +1 @@
+../../Task/Write-entire-file/Forth
\ No newline at end of file
diff --git a/Lang/Fortran/Cheryls-birthday b/Lang/Fortran/Cheryls-birthday
new file mode 120000
index 0000000000..5e5ed5ef71
--- /dev/null
+++ b/Lang/Fortran/Cheryls-birthday
@@ -0,0 +1 @@
+../../Task/Cheryls-birthday/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Chowla-numbers b/Lang/Fortran/Chowla-numbers
new file mode 120000
index 0000000000..7f0b9e01f2
--- /dev/null
+++ b/Lang/Fortran/Chowla-numbers
@@ -0,0 +1 @@
+../../Task/Chowla-numbers/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Distance-and-Bearing b/Lang/Fortran/Distance-and-Bearing
new file mode 120000
index 0000000000..7bc778a069
--- /dev/null
+++ b/Lang/Fortran/Distance-and-Bearing
@@ -0,0 +1 @@
+../../Task/Distance-and-Bearing/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Doomsday-rule b/Lang/Fortran/Doomsday-rule
new file mode 120000
index 0000000000..da3d111050
--- /dev/null
+++ b/Lang/Fortran/Doomsday-rule
@@ -0,0 +1 @@
+../../Task/Doomsday-rule/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Knapsack-problem-0-1 b/Lang/Fortran/Knapsack-problem-0-1
new file mode 120000
index 0000000000..e042c7b894
--- /dev/null
+++ b/Lang/Fortran/Knapsack-problem-0-1
@@ -0,0 +1 @@
+../../Task/Knapsack-problem-0-1/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Partition-an-integer-x-into-n-primes b/Lang/Fortran/Partition-an-integer-x-into-n-primes
new file mode 120000
index 0000000000..0df6e16951
--- /dev/null
+++ b/Lang/Fortran/Partition-an-integer-x-into-n-primes
@@ -0,0 +1 @@
+../../Task/Partition-an-integer-x-into-n-primes/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Sorting-algorithms-Quicksort b/Lang/Fortran/Sorting-algorithms-Quicksort
new file mode 120000
index 0000000000..8ce86e51d1
--- /dev/null
+++ b/Lang/Fortran/Sorting-algorithms-Quicksort
@@ -0,0 +1 @@
+../../Task/Sorting-algorithms-Quicksort/Fortran
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Bitmap-Read-a-PPM-file b/Lang/FreeBASIC/Bitmap-Read-a-PPM-file
new file mode 120000
index 0000000000..c8c701a33a
--- /dev/null
+++ b/Lang/FreeBASIC/Bitmap-Read-a-PPM-file
@@ -0,0 +1 @@
+../../Task/Bitmap-Read-a-PPM-file/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Cheryls-birthday b/Lang/FreeBASIC/Cheryls-birthday
new file mode 120000
index 0000000000..c637b5ee77
--- /dev/null
+++ b/Lang/FreeBASIC/Cheryls-birthday
@@ -0,0 +1 @@
+../../Task/Cheryls-birthday/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Church-numerals b/Lang/FreeBASIC/Church-numerals
new file mode 120000
index 0000000000..36b5d4ddfd
--- /dev/null
+++ b/Lang/FreeBASIC/Church-numerals
@@ -0,0 +1 @@
+../../Task/Church-numerals/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Composite-numbers-k-with-no-single-digit-factors-whose-factors-are-all-substrings-of-k b/Lang/FreeBASIC/Composite-numbers-k-with-no-single-digit-factors-whose-factors-are-all-substrings-of-k
new file mode 120000
index 0000000000..ed1aa87962
--- /dev/null
+++ b/Lang/FreeBASIC/Composite-numbers-k-with-no-single-digit-factors-whose-factors-are-all-substrings-of-k
@@ -0,0 +1 @@
+../../Task/Composite-numbers-k-with-no-single-digit-factors-whose-factors-are-all-substrings-of-k/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Cyclops-numbers b/Lang/FreeBASIC/Cyclops-numbers
new file mode 120000
index 0000000000..b977c5acd5
--- /dev/null
+++ b/Lang/FreeBASIC/Cyclops-numbers
@@ -0,0 +1 @@
+../../Task/Cyclops-numbers/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Deceptive-numbers b/Lang/FreeBASIC/Deceptive-numbers
new file mode 120000
index 0000000000..9ff51e1521
--- /dev/null
+++ b/Lang/FreeBASIC/Deceptive-numbers
@@ -0,0 +1 @@
+../../Task/Deceptive-numbers/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Earliest-difference-between-prime-gaps b/Lang/FreeBASIC/Earliest-difference-between-prime-gaps
new file mode 120000
index 0000000000..2facf16701
--- /dev/null
+++ b/Lang/FreeBASIC/Earliest-difference-between-prime-gaps
@@ -0,0 +1 @@
+../../Task/Earliest-difference-between-prime-gaps/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/First-class-functions-Use-numbers-analogously b/Lang/FreeBASIC/First-class-functions-Use-numbers-analogously
new file mode 120000
index 0000000000..7a5134ceca
--- /dev/null
+++ b/Lang/FreeBASIC/First-class-functions-Use-numbers-analogously
@@ -0,0 +1 @@
+../../Task/First-class-functions-Use-numbers-analogously/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/First-perfect-square-in-base-n-with-n-unique-digits b/Lang/FreeBASIC/First-perfect-square-in-base-n-with-n-unique-digits
new file mode 120000
index 0000000000..c5ae025a12
--- /dev/null
+++ b/Lang/FreeBASIC/First-perfect-square-in-base-n-with-n-unique-digits
@@ -0,0 +1 @@
+../../Task/First-perfect-square-in-base-n-with-n-unique-digits/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Legendre-prime-counting-function b/Lang/FreeBASIC/Legendre-prime-counting-function
new file mode 120000
index 0000000000..e68c3452dc
--- /dev/null
+++ b/Lang/FreeBASIC/Legendre-prime-counting-function
@@ -0,0 +1 @@
+../../Task/Legendre-prime-counting-function/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Mayan-numerals b/Lang/FreeBASIC/Mayan-numerals
new file mode 120000
index 0000000000..a931ce4cd8
--- /dev/null
+++ b/Lang/FreeBASIC/Mayan-numerals
@@ -0,0 +1 @@
+../../Task/Mayan-numerals/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Modular-arithmetic b/Lang/FreeBASIC/Modular-arithmetic
new file mode 120000
index 0000000000..deab2b4adc
--- /dev/null
+++ b/Lang/FreeBASIC/Modular-arithmetic
@@ -0,0 +1 @@
+../../Task/Modular-arithmetic/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Multi-base-primes b/Lang/FreeBASIC/Multi-base-primes
new file mode 120000
index 0000000000..a5bd10f299
--- /dev/null
+++ b/Lang/FreeBASIC/Multi-base-primes
@@ -0,0 +1 @@
+../../Task/Multi-base-primes/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Ormiston-triples b/Lang/FreeBASIC/Ormiston-triples
new file mode 120000
index 0000000000..d11a7380e3
--- /dev/null
+++ b/Lang/FreeBASIC/Ormiston-triples
@@ -0,0 +1 @@
+../../Task/Ormiston-triples/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Parallel-calculations b/Lang/FreeBASIC/Parallel-calculations
new file mode 120000
index 0000000000..84d9dd900f
--- /dev/null
+++ b/Lang/FreeBASIC/Parallel-calculations
@@ -0,0 +1 @@
+../../Task/Parallel-calculations/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Prime-triangle b/Lang/FreeBASIC/Prime-triangle
new file mode 120000
index 0000000000..3cbf1f6908
--- /dev/null
+++ b/Lang/FreeBASIC/Prime-triangle
@@ -0,0 +1 @@
+../../Task/Prime-triangle/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Ramanujan-primes-twins b/Lang/FreeBASIC/Ramanujan-primes-twins
new file mode 120000
index 0000000000..1ffd055b66
--- /dev/null
+++ b/Lang/FreeBASIC/Ramanujan-primes-twins
@@ -0,0 +1 @@
+../../Task/Ramanujan-primes-twins/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Rhonda-numbers b/Lang/FreeBASIC/Rhonda-numbers
new file mode 120000
index 0000000000..cd2acf4828
--- /dev/null
+++ b/Lang/FreeBASIC/Rhonda-numbers
@@ -0,0 +1 @@
+../../Task/Rhonda-numbers/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Safe-addition b/Lang/FreeBASIC/Safe-addition
new file mode 120000
index 0000000000..06b1afc7fe
--- /dev/null
+++ b/Lang/FreeBASIC/Safe-addition
@@ -0,0 +1 @@
+../../Task/Safe-addition/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Shortest-common-supersequence b/Lang/FreeBASIC/Shortest-common-supersequence
new file mode 120000
index 0000000000..fec5965970
--- /dev/null
+++ b/Lang/FreeBASIC/Shortest-common-supersequence
@@ -0,0 +1 @@
+../../Task/Shortest-common-supersequence/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Sphenic-numbers b/Lang/FreeBASIC/Sphenic-numbers
new file mode 120000
index 0000000000..ab7e3a8e2d
--- /dev/null
+++ b/Lang/FreeBASIC/Sphenic-numbers
@@ -0,0 +1 @@
+../../Task/Sphenic-numbers/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Sum-and-product-puzzle b/Lang/FreeBASIC/Sum-and-product-puzzle
new file mode 120000
index 0000000000..51d37d0fd1
--- /dev/null
+++ b/Lang/FreeBASIC/Sum-and-product-puzzle
@@ -0,0 +1 @@
+../../Task/Sum-and-product-puzzle/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Super-d-numbers b/Lang/FreeBASIC/Super-d-numbers
new file mode 120000
index 0000000000..194e6c4f2e
--- /dev/null
+++ b/Lang/FreeBASIC/Super-d-numbers
@@ -0,0 +1 @@
+../../Task/Super-d-numbers/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/The-sieve-of-Sundaram b/Lang/FreeBASIC/The-sieve-of-Sundaram
new file mode 120000
index 0000000000..04d6593f09
--- /dev/null
+++ b/Lang/FreeBASIC/The-sieve-of-Sundaram
@@ -0,0 +1 @@
+../../Task/The-sieve-of-Sundaram/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Two-bullet-roulette b/Lang/FreeBASIC/Two-bullet-roulette
new file mode 120000
index 0000000000..cb9fa727f7
--- /dev/null
+++ b/Lang/FreeBASIC/Two-bullet-roulette
@@ -0,0 +1 @@
+../../Task/Two-bullet-roulette/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/War-card-game b/Lang/FreeBASIC/War-card-game
new file mode 120000
index 0000000000..8c49d839ef
--- /dev/null
+++ b/Lang/FreeBASIC/War-card-game
@@ -0,0 +1 @@
+../../Task/War-card-game/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FutureBasic/Averages-Pythagorean-means b/Lang/FutureBasic/Averages-Pythagorean-means
new file mode 120000
index 0000000000..76e7204f24
--- /dev/null
+++ b/Lang/FutureBasic/Averages-Pythagorean-means
@@ -0,0 +1 @@
+../../Task/Averages-Pythagorean-means/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Bifid-cipher b/Lang/FutureBasic/Bifid-cipher
new file mode 120000
index 0000000000..e40a4d935a
--- /dev/null
+++ b/Lang/FutureBasic/Bifid-cipher
@@ -0,0 +1 @@
+../../Task/Bifid-cipher/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Conways-Game-of-Life b/Lang/FutureBasic/Conways-Game-of-Life
new file mode 120000
index 0000000000..cc723d5af1
--- /dev/null
+++ b/Lang/FutureBasic/Conways-Game-of-Life
@@ -0,0 +1 @@
+../../Task/Conways-Game-of-Life/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Run-length-encoding b/Lang/FutureBasic/Run-length-encoding
new file mode 120000
index 0000000000..e5f272bd61
--- /dev/null
+++ b/Lang/FutureBasic/Run-length-encoding
@@ -0,0 +1 @@
+../../Task/Run-length-encoding/FutureBasic
\ No newline at end of file
diff --git a/Lang/GDScript/Null-object b/Lang/GDScript/Null-object
new file mode 120000
index 0000000000..e2b2de9b21
--- /dev/null
+++ b/Lang/GDScript/Null-object
@@ -0,0 +1 @@
+../../Task/Null-object/GDScript
\ No newline at end of file
diff --git a/Lang/GDScript/Sorting-algorithms-Bubble-sort b/Lang/GDScript/Sorting-algorithms-Bubble-sort
new file mode 120000
index 0000000000..0c8ecc5b3e
--- /dev/null
+++ b/Lang/GDScript/Sorting-algorithms-Bubble-sort
@@ -0,0 +1 @@
+../../Task/Sorting-algorithms-Bubble-sort/GDScript
\ No newline at end of file
diff --git a/Lang/GDScript/Stack b/Lang/GDScript/Stack
new file mode 120000
index 0000000000..8e1def2ef0
--- /dev/null
+++ b/Lang/GDScript/Stack
@@ -0,0 +1 @@
+../../Task/Stack/GDScript
\ No newline at end of file
diff --git a/Lang/Gambas/Sum-and-product-puzzle b/Lang/Gambas/Sum-and-product-puzzle
new file mode 120000
index 0000000000..70ae337f46
--- /dev/null
+++ b/Lang/Gambas/Sum-and-product-puzzle
@@ -0,0 +1 @@
+../../Task/Sum-and-product-puzzle/Gambas
\ No newline at end of file
diff --git a/Lang/Haxe/Rot-13 b/Lang/Haxe/Rot-13
new file mode 120000
index 0000000000..fc9a0671f3
--- /dev/null
+++ b/Lang/Haxe/Rot-13
@@ -0,0 +1 @@
+../../Task/Rot-13/Haxe
\ No newline at end of file
diff --git a/Lang/Hopper/00-LANG.txt b/Lang/Hopper/00-LANG.txt
new file mode 100644
index 0000000000..60fcfd7a6c
--- /dev/null
+++ b/Lang/Hopper/00-LANG.txt
@@ -0,0 +1,58 @@
+{{language|Hopper
+|gc=yes
+|parampass=both
+|express=explicit
+|checking=static
+|safety=safe
+|strength=strong
+|hopl=no
+|site=https://www.hackster.io/michael-cartwright/projects
+}}
+
+'''Hopper''' is a Java-like programming language and development environment designed for microcontrollers. A curly-brace semi-colon syntax, with a bytecode compiler, and development toolchain for Hopper bytecode virtual machine runtime implementations.
+
+The runtimes are usually flashed onto the development board for power up start. The IDE can upload a boot up program, (along with a little file system). Development machine and device interactions is accomplished by USB serial connections. Hopper blurs the line between IDE programmer and target device. The serial monitor and client/server communications is written in Hopper, which can be executed in the IDE and/or the target device.
+
+The Hopper Interactive Development Environment (IDE) runs on Windows, with outputs targeting Hopper Runtimes for
+* 6502, an older 8bit microcontroller unit, (MCU).
+* RP2040, a newer 32bit dual core Cortex M0+ MCU with General Purpose Input Output (GPIO) pins and modern internal peripherals, designed by the Raspberry Pi Foundation, (RPi).
+** Pico
+** Pico W
+** Challenger RP2040 Wifi
+* more to come
+
+Github repository: https://github.com/sillycowvalley/Hopper
+
+All Hopper Runtimes support a Hopper Monitor shell that implements feedback IO and a command language, the elements of which are Hopper programs. The Hopper Runtime virtual machine can also be used directly from the Hopper IDE on desktop PC, with the bootstrap Windows VM written in C# and the rest is self-hosted in Hopper. For the RP2040 at least.
+
+The 6502 Runtime is bootstrapped from assembly language sources, for both first run hopper and firmware, then hosted in Hopper VM bytecode and the development toolchain.
+
+Hopper is written in Hopper, with '''.hexe''' bytecode files in the '''Bin/''' directory of the IDE setup.
+* Preprocess, Compile, Optimize, Codegen, DASM (Disassembler)
+* Translate (Hopper to C)
+
+In support of the system shell and '''.cmd''' scripting, there is also: (non exhaustive list)
+
+* show, shell, debug (more on this below), cd, cls, dir, del
+* see '''help''' for more
+
+=== Documentation ===
+The author has put early documentation efforts into a large set of YouTube videos, with the main page (and search) at:
+
+https://www.youtube.com/@biggertigger
+
+=== Development as of 2024 ===
+
+In development by Michael Cartwright, with working samples for MOS Technology 6502 and Raspberry Pi RP2040.
+There are various RunTime UF2's pre-built for quick starts. (UF2 is a hex file format for microcontroller firmware uploads):
+
+* Pico, Pico W (with Wifi networking implemented), Challenger RP2040 Wifi
+* as is, the Pico firmware will at least minimally work on a fair number of RPi RP2040 development boards
+* along with drivers (written in Hopper) for many MCU related display devices and module peripherals.
+
+=== Hopper Debugger ===
+The debugger is an important part of Hopper development.
+'''TODO'''
+
+=== Links: ===
+* [[Reports:Tasks_not_implemented_in_Hopper|Tasks not yet implemented]]
\ No newline at end of file
diff --git a/Lang/Hopper/00-META.yaml b/Lang/Hopper/00-META.yaml
new file mode 100644
index 0000000000..4850aa5735
--- /dev/null
+++ b/Lang/Hopper/00-META.yaml
@@ -0,0 +1,2 @@
+---
+from: http://rosettacode.org/wiki/Category:Hopper
diff --git a/Lang/Hopper/Hello-world-Text b/Lang/Hopper/Hello-world-Text
new file mode 120000
index 0000000000..2f126e55ad
--- /dev/null
+++ b/Lang/Hopper/Hello-world-Text
@@ -0,0 +1 @@
+../../Task/Hello-world-Text/Hopper
\ No newline at end of file
diff --git a/Lang/Janet/00-LANG.txt b/Lang/Janet/00-LANG.txt
index 7a05c0cca0..367ff871be 100644
--- a/Lang/Janet/00-LANG.txt
+++ b/Lang/Janet/00-LANG.txt
@@ -4,4 +4,24 @@ Janet is a C based, Clojure-like lisp for scripting and prototyping.
From the website [https://janet-lang.org https://janet-lang.org]
-Janet is a functional and imperative programming language. It runs on Windows, Linux, macOS, and should run on other systems with some porting. The entire language (core library, interpreter, compiler, assembler, PEG) is about 300-500 kB and should run on many constrained systems.
\ No newline at end of file
+Janet is a functional and imperative programming language. It runs on Windows, Linux, macOS, BSDs, and should run on other systems with some porting. The entire language (core library, interpreter, compiler, assembler, PEG) is less than 1MB. You can also add Janet scripting to an application by embedding a single C source file and a single header.
+
+===Features===
+ Minimal setup - one binary and you are good to go!
+ Builtin support for threads, networking, and an event loop
+ First class closures
+ Garbage collection
+ First class green threads (continuations)
+ Mutable and immutable arrays (array/tuple)
+ Mutable and immutable hashtables (table/struct)
+ Mutable and immutable strings (buffer/string)
+ Macros
+ Tail call optimization
+ Direct interop with C via abstract types and C functions
+ Dynamically load C libraries
+ Lexical scoping
+ REPL and interactive debugger
+ Parsing Expression Grammars built in to the core library
+ 500+ functions and macros in the core library
+ Export your projects to standalone executables with a companion build tool, jpm
+ Add to a project with just janet.c and janet.h
\ No newline at end of file
diff --git a/Lang/Janet/Digital-root b/Lang/Janet/Digital-root
new file mode 120000
index 0000000000..0234a87797
--- /dev/null
+++ b/Lang/Janet/Digital-root
@@ -0,0 +1 @@
+../../Task/Digital-root/Janet
\ No newline at end of file
diff --git a/Lang/Java/Simple-turtle-graphics b/Lang/Java/Simple-turtle-graphics
new file mode 120000
index 0000000000..3bc3f93a70
--- /dev/null
+++ b/Lang/Java/Simple-turtle-graphics
@@ -0,0 +1 @@
+../../Task/Simple-turtle-graphics/Java
\ No newline at end of file
diff --git a/Lang/JavaScript/00-LANG.txt b/Lang/JavaScript/00-LANG.txt
index 3906eaab39..a610363714 100644
--- a/Lang/JavaScript/00-LANG.txt
+++ b/Lang/JavaScript/00-LANG.txt
@@ -28,4 +28,7 @@ The inclusion of '''tail-call optimisation''' in the ES6 standard reflects incre
* [https://developer.apple.com/library/mac/releasenotes/InterapplicationCommunication/RN-JavaScriptForAutomation/Articles/Introduction.html OS X JavaScript for Applications] JavaScript as an OS X scripting language – supported by the Safari debugger
* [https://developer.mozilla.org/en-US/docs/Web/JavaScript/Shells Other JavaScript shells] List maintained by Mozilla
* [https://github.com/jashkenas/coffeescript/wiki/list-of-languages-that-compile-to-js List of languages that compile to JS] maintained on Github by Jeremy Ashenas – author of CoffeeScript, Underscore and Backbone
-* [http://shop.oreilly.com/product/0636920028857.do Functional JavaScript] – Michael Fogus, O'Reilly 2013
\ No newline at end of file
+* [http://shop.oreilly.com/product/0636920028857.do Functional JavaScript] – Michael Fogus, O'Reilly 2013
+
+==To do==
+[[Tasks not implemented in JavaScript]]
\ No newline at end of file
diff --git a/Lang/JavaScript/Eertree b/Lang/JavaScript/Eertree
new file mode 120000
index 0000000000..60ff5de55f
--- /dev/null
+++ b/Lang/JavaScript/Eertree
@@ -0,0 +1 @@
+../../Task/Eertree/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Modified-random-distribution b/Lang/JavaScript/Modified-random-distribution
new file mode 120000
index 0000000000..e8810a8ff3
--- /dev/null
+++ b/Lang/JavaScript/Modified-random-distribution
@@ -0,0 +1 @@
+../../Task/Modified-random-distribution/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Pisano-period b/Lang/JavaScript/Pisano-period
new file mode 120000
index 0000000000..1e168befa1
--- /dev/null
+++ b/Lang/JavaScript/Pisano-period
@@ -0,0 +1 @@
+../../Task/Pisano-period/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Primorial-numbers b/Lang/JavaScript/Primorial-numbers
new file mode 120000
index 0000000000..82a58b78e9
--- /dev/null
+++ b/Lang/JavaScript/Primorial-numbers
@@ -0,0 +1 @@
+../../Task/Primorial-numbers/JavaScript
\ No newline at end of file
diff --git a/Lang/Jq/00-LANG.txt b/Lang/Jq/00-LANG.txt
index 70c9eddfba..3eba7f05c0 100644
--- a/Lang/Jq/00-LANG.txt
+++ b/Lang/Jq/00-LANG.txt
@@ -1,13 +1,16 @@
{{language
|site=http://stedolan.github.io/jq}}
{{language programming paradigm|Functional}}
-[https://en.wikipedia.org/wiki/Jq_(programming_language) jq] is a [[functional programming]] language that is oriented towards processing text files or [[JSON]]. jq is also the name of [https://stedolan.github.io/jq a portable executable] that compiles and runs jq programs. A [[Go]] implementation, [https://github.com/itchyny/gojq gojq], is also available.
+[https://en.wikipedia.org/wiki/Jq_(programming_language) jq] is a [[functional programming]] language that is oriented towards processing text files or [[JSON]]. jq is also the name of [https://stedolan.github.io/jq a portable executable] that compiles and runs jq programs. A [[Go]] implementation, [https://github.com/itchyny/gojq gojq], is also available; and [https://github.com/01mf02/jaq jaq] implements a large subset of jq in [[Rust]].
jq was originally designed and developed by Stephen Dolan.
==jq Modules at rosettacode.org==
* [[:Category:Jq/assert.jq|assert.jq]] - module to support assertions
+* [[:Category:Jq/fibonacci.jq|fibonacci.jq]] - Fibonacci sequence and Fibonacci coding
* [[:Category:Jq/peg.jq|peg.jq]] - Parsing Expression Grammar foundations
+* [[:Category:Jq/polynomials.jq|polynomials.jq]] - polynomials as JSON arrays
+* [[:Category:Jq/RealSet.jq|RealSet.jq]] - Union of finite real intervals
==Todo==
[[Tasks_not_implemented_in_jq]]
diff --git a/Lang/Jq/Evolutionary-algorithm b/Lang/Jq/Evolutionary-algorithm
new file mode 120000
index 0000000000..3e237d59aa
--- /dev/null
+++ b/Lang/Jq/Evolutionary-algorithm
@@ -0,0 +1 @@
+../../Task/Evolutionary-algorithm/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Gray-code b/Lang/Jq/Gray-code
new file mode 120000
index 0000000000..3dca8836bd
--- /dev/null
+++ b/Lang/Jq/Gray-code
@@ -0,0 +1 @@
+../../Task/Gray-code/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Index-finite-lists-of-positive-integers b/Lang/Jq/Index-finite-lists-of-positive-integers
new file mode 120000
index 0000000000..da5139ae0d
--- /dev/null
+++ b/Lang/Jq/Index-finite-lists-of-positive-integers
@@ -0,0 +1 @@
+../../Task/Index-finite-lists-of-positive-integers/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Intersecting-number-wheels b/Lang/Jq/Intersecting-number-wheels
new file mode 120000
index 0000000000..4bb7092aa3
--- /dev/null
+++ b/Lang/Jq/Intersecting-number-wheels
@@ -0,0 +1 @@
+../../Task/Intersecting-number-wheels/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Parse-an-IP-Address b/Lang/Jq/Parse-an-IP-Address
new file mode 120000
index 0000000000..141e962822
--- /dev/null
+++ b/Lang/Jq/Parse-an-IP-Address
@@ -0,0 +1 @@
+../../Task/Parse-an-IP-Address/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Password-generator b/Lang/Jq/Password-generator
new file mode 120000
index 0000000000..ef3ce417dc
--- /dev/null
+++ b/Lang/Jq/Password-generator
@@ -0,0 +1 @@
+../../Task/Password-generator/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Pseudo-random-numbers-Splitmix64 b/Lang/Jq/Pseudo-random-numbers-Splitmix64
new file mode 120000
index 0000000000..99474567aa
--- /dev/null
+++ b/Lang/Jq/Pseudo-random-numbers-Splitmix64
@@ -0,0 +1 @@
+../../Task/Pseudo-random-numbers-Splitmix64/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Set-of-real-numbers b/Lang/Jq/Set-of-real-numbers
new file mode 120000
index 0000000000..4930cbfaeb
--- /dev/null
+++ b/Lang/Jq/Set-of-real-numbers
@@ -0,0 +1 @@
+../../Task/Set-of-real-numbers/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Start-from-a-main-routine b/Lang/Jq/Start-from-a-main-routine
new file mode 120000
index 0000000000..04bfaaf631
--- /dev/null
+++ b/Lang/Jq/Start-from-a-main-routine
@@ -0,0 +1 @@
+../../Task/Start-from-a-main-routine/Jq
\ No newline at end of file
diff --git a/Lang/K/Array-length b/Lang/K/Array-length
new file mode 120000
index 0000000000..713b43ae60
--- /dev/null
+++ b/Lang/K/Array-length
@@ -0,0 +1 @@
+../../Task/Array-length/K
\ No newline at end of file
diff --git a/Lang/K/Entropy b/Lang/K/Entropy
new file mode 120000
index 0000000000..ed297bc904
--- /dev/null
+++ b/Lang/K/Entropy
@@ -0,0 +1 @@
+../../Task/Entropy/K
\ No newline at end of file
diff --git a/Lang/K/Jewels-and-stones b/Lang/K/Jewels-and-stones
new file mode 120000
index 0000000000..e6b3ba2ffd
--- /dev/null
+++ b/Lang/K/Jewels-and-stones
@@ -0,0 +1 @@
+../../Task/Jewels-and-stones/K
\ No newline at end of file
diff --git a/Lang/K/Sort-numbers-lexicographically b/Lang/K/Sort-numbers-lexicographically
new file mode 120000
index 0000000000..11b8c47a3f
--- /dev/null
+++ b/Lang/K/Sort-numbers-lexicographically
@@ -0,0 +1 @@
+../../Task/Sort-numbers-lexicographically/K
\ No newline at end of file
diff --git a/Lang/K/Split-a-character-string-based-on-change-of-character b/Lang/K/Split-a-character-string-based-on-change-of-character
new file mode 120000
index 0000000000..719471c77a
--- /dev/null
+++ b/Lang/K/Split-a-character-string-based-on-change-of-character
@@ -0,0 +1 @@
+../../Task/Split-a-character-string-based-on-change-of-character/K
\ No newline at end of file
diff --git a/Lang/K/Strip-a-set-of-characters-from-a-string b/Lang/K/Strip-a-set-of-characters-from-a-string
new file mode 120000
index 0000000000..2c6359b506
--- /dev/null
+++ b/Lang/K/Strip-a-set-of-characters-from-a-string
@@ -0,0 +1 @@
+../../Task/Strip-a-set-of-characters-from-a-string/K
\ No newline at end of file
diff --git a/Lang/Koka/Leap-year b/Lang/Koka/Leap-year
new file mode 120000
index 0000000000..9589417f53
--- /dev/null
+++ b/Lang/Koka/Leap-year
@@ -0,0 +1 @@
+../../Task/Leap-year/Koka
\ No newline at end of file
diff --git a/Lang/Kotlin/Almkvist-Giullera-formula-for-pi b/Lang/Kotlin/Almkvist-Giullera-formula-for-pi
new file mode 120000
index 0000000000..e147780c53
--- /dev/null
+++ b/Lang/Kotlin/Almkvist-Giullera-formula-for-pi
@@ -0,0 +1 @@
+../../Task/Almkvist-Giullera-formula-for-pi/Kotlin
\ No newline at end of file
diff --git a/Lang/Kotlin/Biorhythms b/Lang/Kotlin/Biorhythms
new file mode 120000
index 0000000000..d93c9e81d0
--- /dev/null
+++ b/Lang/Kotlin/Biorhythms
@@ -0,0 +1 @@
+../../Task/Biorhythms/Kotlin
\ No newline at end of file
diff --git a/Lang/Kotlin/Camel-case-and-snake-case b/Lang/Kotlin/Camel-case-and-snake-case
new file mode 120000
index 0000000000..67b25b8962
--- /dev/null
+++ b/Lang/Kotlin/Camel-case-and-snake-case
@@ -0,0 +1 @@
+../../Task/Camel-case-and-snake-case/Kotlin
\ No newline at end of file
diff --git a/Lang/Kotlin/Jordan-P-lya-numbers b/Lang/Kotlin/Jordan-P-lya-numbers
new file mode 120000
index 0000000000..89b37f7823
--- /dev/null
+++ b/Lang/Kotlin/Jordan-P-lya-numbers
@@ -0,0 +1 @@
+../../Task/Jordan-P-lya-numbers/Kotlin
\ No newline at end of file
diff --git a/Lang/Kotlin/Minimal-steps-down-to-1 b/Lang/Kotlin/Minimal-steps-down-to-1
new file mode 120000
index 0000000000..65ab282625
--- /dev/null
+++ b/Lang/Kotlin/Minimal-steps-down-to-1
@@ -0,0 +1 @@
+../../Task/Minimal-steps-down-to-1/Kotlin
\ No newline at end of file
diff --git a/Lang/Kotlin/Padovan-sequence b/Lang/Kotlin/Padovan-sequence
new file mode 120000
index 0000000000..18631de1be
--- /dev/null
+++ b/Lang/Kotlin/Padovan-sequence
@@ -0,0 +1 @@
+../../Task/Padovan-sequence/Kotlin
\ No newline at end of file
diff --git a/Lang/Langur/Check-that-file-exists b/Lang/Langur/Check-that-file-exists
new file mode 120000
index 0000000000..d23d4fb2de
--- /dev/null
+++ b/Lang/Langur/Check-that-file-exists
@@ -0,0 +1 @@
+../../Task/Check-that-file-exists/Langur
\ No newline at end of file
diff --git a/Lang/Langur/Convert-seconds-to-compound-duration b/Lang/Langur/Convert-seconds-to-compound-duration
new file mode 120000
index 0000000000..542c4c4b83
--- /dev/null
+++ b/Lang/Langur/Convert-seconds-to-compound-duration
@@ -0,0 +1 @@
+../../Task/Convert-seconds-to-compound-duration/Langur
\ No newline at end of file
diff --git a/Lang/Langur/Sum-of-a-series b/Lang/Langur/Sum-of-a-series
new file mode 120000
index 0000000000..4e4882b880
--- /dev/null
+++ b/Lang/Langur/Sum-of-a-series
@@ -0,0 +1 @@
+../../Task/Sum-of-a-series/Langur
\ No newline at end of file
diff --git a/Lang/Lua/Combinations-and-permutations b/Lang/Lua/Combinations-and-permutations
new file mode 120000
index 0000000000..c0a533db08
--- /dev/null
+++ b/Lang/Lua/Combinations-and-permutations
@@ -0,0 +1 @@
+../../Task/Combinations-and-permutations/Lua
\ No newline at end of file
diff --git a/Lang/Lua/Handle-a-signal b/Lang/Lua/Handle-a-signal
new file mode 120000
index 0000000000..f16f994877
--- /dev/null
+++ b/Lang/Lua/Handle-a-signal
@@ -0,0 +1 @@
+../../Task/Handle-a-signal/Lua
\ No newline at end of file
diff --git a/Lang/Lua/Padovan-sequence b/Lang/Lua/Padovan-sequence
new file mode 120000
index 0000000000..242b563fd5
--- /dev/null
+++ b/Lang/Lua/Padovan-sequence
@@ -0,0 +1 @@
+../../Task/Padovan-sequence/Lua
\ No newline at end of file
diff --git a/Lang/Lua/Palindrome-dates b/Lang/Lua/Palindrome-dates
new file mode 120000
index 0000000000..c839a0552f
--- /dev/null
+++ b/Lang/Lua/Palindrome-dates
@@ -0,0 +1 @@
+../../Task/Palindrome-dates/Lua
\ No newline at end of file
diff --git a/Lang/Lua/Pisano-period b/Lang/Lua/Pisano-period
new file mode 120000
index 0000000000..4b34e1a22a
--- /dev/null
+++ b/Lang/Lua/Pisano-period
@@ -0,0 +1 @@
+../../Task/Pisano-period/Lua
\ No newline at end of file
diff --git a/Lang/MAD/Narcissistic-decimal-number b/Lang/MAD/Narcissistic-decimal-number
new file mode 120000
index 0000000000..e10c6cbbcd
--- /dev/null
+++ b/Lang/MAD/Narcissistic-decimal-number
@@ -0,0 +1 @@
+../../Task/Narcissistic-decimal-number/MAD
\ No newline at end of file
diff --git a/Lang/MAD/Primality-by-Wilsons-theorem b/Lang/MAD/Primality-by-Wilsons-theorem
new file mode 120000
index 0000000000..2fd2beea20
--- /dev/null
+++ b/Lang/MAD/Primality-by-Wilsons-theorem
@@ -0,0 +1 @@
+../../Task/Primality-by-Wilsons-theorem/MAD
\ No newline at end of file
diff --git a/Lang/MATLAB/Arithmetic-geometric-mean-Calculate-Pi b/Lang/MATLAB/Arithmetic-geometric-mean-Calculate-Pi
new file mode 120000
index 0000000000..455d4f72bb
--- /dev/null
+++ b/Lang/MATLAB/Arithmetic-geometric-mean-Calculate-Pi
@@ -0,0 +1 @@
+../../Task/Arithmetic-geometric-mean-Calculate-Pi/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/Babbage-problem b/Lang/MATLAB/Babbage-problem
new file mode 120000
index 0000000000..995ca19944
--- /dev/null
+++ b/Lang/MATLAB/Babbage-problem
@@ -0,0 +1 @@
+../../Task/Babbage-problem/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/Babylonian-spiral b/Lang/MATLAB/Babylonian-spiral
new file mode 120000
index 0000000000..ecf91872cf
--- /dev/null
+++ b/Lang/MATLAB/Babylonian-spiral
@@ -0,0 +1 @@
+../../Task/Babylonian-spiral/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/Benfords-law b/Lang/MATLAB/Benfords-law
new file mode 120000
index 0000000000..24ad64ca80
--- /dev/null
+++ b/Lang/MATLAB/Benfords-law
@@ -0,0 +1 @@
+../../Task/Benfords-law/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/Brazilian-numbers b/Lang/MATLAB/Brazilian-numbers
new file mode 120000
index 0000000000..31d88350b2
--- /dev/null
+++ b/Lang/MATLAB/Brazilian-numbers
@@ -0,0 +1 @@
+../../Task/Brazilian-numbers/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/Canonicalize-CIDR b/Lang/MATLAB/Canonicalize-CIDR
new file mode 120000
index 0000000000..eb15cedc52
--- /dev/null
+++ b/Lang/MATLAB/Canonicalize-CIDR
@@ -0,0 +1 @@
+../../Task/Canonicalize-CIDR/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/Damm-algorithm b/Lang/MATLAB/Damm-algorithm
new file mode 120000
index 0000000000..8c3c3b12e0
--- /dev/null
+++ b/Lang/MATLAB/Damm-algorithm
@@ -0,0 +1 @@
+../../Task/Damm-algorithm/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/Department-numbers b/Lang/MATLAB/Department-numbers
new file mode 120000
index 0000000000..a4bfc52d36
--- /dev/null
+++ b/Lang/MATLAB/Department-numbers
@@ -0,0 +1 @@
+../../Task/Department-numbers/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/EKG-sequence-convergence b/Lang/MATLAB/EKG-sequence-convergence
new file mode 120000
index 0000000000..d84b387d6c
--- /dev/null
+++ b/Lang/MATLAB/EKG-sequence-convergence
@@ -0,0 +1 @@
+../../Task/EKG-sequence-convergence/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/Euler-method b/Lang/MATLAB/Euler-method
new file mode 120000
index 0000000000..210be62097
--- /dev/null
+++ b/Lang/MATLAB/Euler-method
@@ -0,0 +1 @@
+../../Task/Euler-method/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/Farey-sequence b/Lang/MATLAB/Farey-sequence
new file mode 120000
index 0000000000..8248da8507
--- /dev/null
+++ b/Lang/MATLAB/Farey-sequence
@@ -0,0 +1 @@
+../../Task/Farey-sequence/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/Padovan-sequence b/Lang/MATLAB/Padovan-sequence
new file mode 120000
index 0000000000..3df1773261
--- /dev/null
+++ b/Lang/MATLAB/Padovan-sequence
@@ -0,0 +1 @@
+../../Task/Padovan-sequence/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/Pascal-matrix-generation b/Lang/MATLAB/Pascal-matrix-generation
new file mode 120000
index 0000000000..52b2a75e65
--- /dev/null
+++ b/Lang/MATLAB/Pascal-matrix-generation
@@ -0,0 +1 @@
+../../Task/Pascal-matrix-generation/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/Steffensens-method b/Lang/MATLAB/Steffensens-method
new file mode 120000
index 0000000000..ee8fd5a1aa
--- /dev/null
+++ b/Lang/MATLAB/Steffensens-method
@@ -0,0 +1 @@
+../../Task/Steffensens-method/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/Strassens-algorithm b/Lang/MATLAB/Strassens-algorithm
new file mode 120000
index 0000000000..74ee0ab355
--- /dev/null
+++ b/Lang/MATLAB/Strassens-algorithm
@@ -0,0 +1 @@
+../../Task/Strassens-algorithm/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/Sum-of-elements-below-main-diagonal-of-matrix b/Lang/MATLAB/Sum-of-elements-below-main-diagonal-of-matrix
new file mode 120000
index 0000000000..7c6a28e865
--- /dev/null
+++ b/Lang/MATLAB/Sum-of-elements-below-main-diagonal-of-matrix
@@ -0,0 +1 @@
+../../Task/Sum-of-elements-below-main-diagonal-of-matrix/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/Thue-Morse b/Lang/MATLAB/Thue-Morse
new file mode 120000
index 0000000000..c795b03216
--- /dev/null
+++ b/Lang/MATLAB/Thue-Morse
@@ -0,0 +1 @@
+../../Task/Thue-Morse/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/Trabb-Pardo-Knuth-algorithm b/Lang/MATLAB/Trabb-Pardo-Knuth-algorithm
new file mode 120000
index 0000000000..2c35ef2ed2
--- /dev/null
+++ b/Lang/MATLAB/Trabb-Pardo-Knuth-algorithm
@@ -0,0 +1 @@
+../../Task/Trabb-Pardo-Knuth-algorithm/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/Xiaolin-Wus-line-algorithm b/Lang/MATLAB/Xiaolin-Wus-line-algorithm
new file mode 120000
index 0000000000..455a774f2c
--- /dev/null
+++ b/Lang/MATLAB/Xiaolin-Wus-line-algorithm
@@ -0,0 +1 @@
+../../Task/Xiaolin-Wus-line-algorithm/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/Zeckendorf-number-representation b/Lang/MATLAB/Zeckendorf-number-representation
new file mode 120000
index 0000000000..29c82374e5
--- /dev/null
+++ b/Lang/MATLAB/Zeckendorf-number-representation
@@ -0,0 +1 @@
+../../Task/Zeckendorf-number-representation/MATLAB
\ No newline at end of file
diff --git a/Lang/Mathematica/Factorial-primes b/Lang/Mathematica/Factorial-primes
new file mode 120000
index 0000000000..1c87586f1f
--- /dev/null
+++ b/Lang/Mathematica/Factorial-primes
@@ -0,0 +1 @@
+../../Task/Factorial-primes/Mathematica
\ No newline at end of file
diff --git a/Lang/Mathematica/Giuga-numbers b/Lang/Mathematica/Giuga-numbers
new file mode 120000
index 0000000000..66ff38fc64
--- /dev/null
+++ b/Lang/Mathematica/Giuga-numbers
@@ -0,0 +1 @@
+../../Task/Giuga-numbers/Mathematica
\ No newline at end of file
diff --git a/Lang/Mathematica/Pisano-period b/Lang/Mathematica/Pisano-period
new file mode 120000
index 0000000000..e114173423
--- /dev/null
+++ b/Lang/Mathematica/Pisano-period
@@ -0,0 +1 @@
+../../Task/Pisano-period/Mathematica
\ No newline at end of file
diff --git a/Lang/Mathematica/Pseudo-random-numbers-PCG32 b/Lang/Mathematica/Pseudo-random-numbers-PCG32
new file mode 120000
index 0000000000..9d682a5443
--- /dev/null
+++ b/Lang/Mathematica/Pseudo-random-numbers-PCG32
@@ -0,0 +1 @@
+../../Task/Pseudo-random-numbers-PCG32/Mathematica
\ No newline at end of file
diff --git a/Lang/Mathematica/Ruth-Aaron-numbers b/Lang/Mathematica/Ruth-Aaron-numbers
new file mode 120000
index 0000000000..9753b08d5c
--- /dev/null
+++ b/Lang/Mathematica/Ruth-Aaron-numbers
@@ -0,0 +1 @@
+../../Task/Ruth-Aaron-numbers/Mathematica
\ No newline at end of file
diff --git a/Lang/MiniScript/00-LANG.txt b/Lang/MiniScript/00-LANG.txt
index f8f2143953..5ef9c2bb3f 100644
--- a/Lang/MiniScript/00-LANG.txt
+++ b/Lang/MiniScript/00-LANG.txt
@@ -2,4 +2,7 @@
MiniScript is a high-level scripting language designed originally for embedding in other software (especially games). The first implementation was in C#. In 2019, a C++ implementation was added, and both versions were open-sourced on [https://github.com/JoeStrout/miniscript GitHub].
-More information can be found at [https://miniscript.org/ miniscript.org].
\ No newline at end of file
+More information can be found at [https://miniscript.org/ miniscript.org].
+
+==Todo==
+* [[Tasks not implemented in MiniScript]]
\ No newline at end of file
diff --git a/Lang/MiniScript/CUSIP b/Lang/MiniScript/CUSIP
new file mode 120000
index 0000000000..23ab881a7b
--- /dev/null
+++ b/Lang/MiniScript/CUSIP
@@ -0,0 +1 @@
+../../Task/CUSIP/MiniScript
\ No newline at end of file
diff --git a/Lang/MiniScript/Character-codes b/Lang/MiniScript/Character-codes
new file mode 120000
index 0000000000..02f30676f2
--- /dev/null
+++ b/Lang/MiniScript/Character-codes
@@ -0,0 +1 @@
+../../Task/Character-codes/MiniScript
\ No newline at end of file
diff --git a/Lang/MiniScript/Comments b/Lang/MiniScript/Comments
new file mode 120000
index 0000000000..6c2e69e82f
--- /dev/null
+++ b/Lang/MiniScript/Comments
@@ -0,0 +1 @@
+../../Task/Comments/MiniScript
\ No newline at end of file
diff --git a/Lang/MiniScript/Currying b/Lang/MiniScript/Currying
new file mode 120000
index 0000000000..5bfc81e5a2
--- /dev/null
+++ b/Lang/MiniScript/Currying
@@ -0,0 +1 @@
+../../Task/Currying/MiniScript
\ No newline at end of file
diff --git a/Lang/MiniScript/Date-format b/Lang/MiniScript/Date-format
new file mode 120000
index 0000000000..691dbe1508
--- /dev/null
+++ b/Lang/MiniScript/Date-format
@@ -0,0 +1 @@
+../../Task/Date-format/MiniScript
\ No newline at end of file
diff --git a/Lang/MiniScript/Date-manipulation b/Lang/MiniScript/Date-manipulation
new file mode 120000
index 0000000000..53293214b7
--- /dev/null
+++ b/Lang/MiniScript/Date-manipulation
@@ -0,0 +1 @@
+../../Task/Date-manipulation/MiniScript
\ No newline at end of file
diff --git a/Lang/MiniScript/Day-of-the-week b/Lang/MiniScript/Day-of-the-week
new file mode 120000
index 0000000000..1b556db413
--- /dev/null
+++ b/Lang/MiniScript/Day-of-the-week
@@ -0,0 +1 @@
+../../Task/Day-of-the-week/MiniScript
\ No newline at end of file
diff --git a/Lang/MiniScript/Department-numbers b/Lang/MiniScript/Department-numbers
new file mode 120000
index 0000000000..6daa070f52
--- /dev/null
+++ b/Lang/MiniScript/Department-numbers
@@ -0,0 +1 @@
+../../Task/Department-numbers/MiniScript
\ No newline at end of file
diff --git a/Lang/MiniScript/Detect-division-by-zero b/Lang/MiniScript/Detect-division-by-zero
new file mode 120000
index 0000000000..29baa515c8
--- /dev/null
+++ b/Lang/MiniScript/Detect-division-by-zero
@@ -0,0 +1 @@
+../../Task/Detect-division-by-zero/MiniScript
\ No newline at end of file
diff --git a/Lang/MiniScript/Empty-string b/Lang/MiniScript/Empty-string
new file mode 120000
index 0000000000..bbda7e56b2
--- /dev/null
+++ b/Lang/MiniScript/Empty-string
@@ -0,0 +1 @@
+../../Task/Empty-string/MiniScript
\ No newline at end of file
diff --git a/Lang/MiniScript/Exponentiation-operator b/Lang/MiniScript/Exponentiation-operator
new file mode 120000
index 0000000000..25dcaee73f
--- /dev/null
+++ b/Lang/MiniScript/Exponentiation-operator
@@ -0,0 +1 @@
+../../Task/Exponentiation-operator/MiniScript
\ No newline at end of file
diff --git a/Lang/MiniScript/Extreme-floating-point-values b/Lang/MiniScript/Extreme-floating-point-values
new file mode 120000
index 0000000000..108b4683db
--- /dev/null
+++ b/Lang/MiniScript/Extreme-floating-point-values
@@ -0,0 +1 @@
+../../Task/Extreme-floating-point-values/MiniScript
\ No newline at end of file
diff --git a/Lang/Modula-2/Primality-by-Wilsons-theorem b/Lang/Modula-2/Primality-by-Wilsons-theorem
new file mode 120000
index 0000000000..4d1359d549
--- /dev/null
+++ b/Lang/Modula-2/Primality-by-Wilsons-theorem
@@ -0,0 +1 @@
+../../Task/Primality-by-Wilsons-theorem/Modula-2
\ No newline at end of file
diff --git a/Lang/Mojo/Hamming-numbers b/Lang/Mojo/Hamming-numbers
new file mode 120000
index 0000000000..a401baa2d8
--- /dev/null
+++ b/Lang/Mojo/Hamming-numbers
@@ -0,0 +1 @@
+../../Task/Hamming-numbers/Mojo
\ No newline at end of file
diff --git a/Lang/Mojo/Legendre-prime-counting-function b/Lang/Mojo/Legendre-prime-counting-function
new file mode 120000
index 0000000000..c7d7f4e32f
--- /dev/null
+++ b/Lang/Mojo/Legendre-prime-counting-function
@@ -0,0 +1 @@
+../../Task/Legendre-prime-counting-function/Mojo
\ No newline at end of file
diff --git a/Lang/Mojo/Sieve-of-Eratosthenes b/Lang/Mojo/Sieve-of-Eratosthenes
new file mode 120000
index 0000000000..c8eb3cd500
--- /dev/null
+++ b/Lang/Mojo/Sieve-of-Eratosthenes
@@ -0,0 +1 @@
+../../Task/Sieve-of-Eratosthenes/Mojo
\ No newline at end of file
diff --git a/Lang/Oberon/FASTA-format b/Lang/Oberon/FASTA-format
new file mode 120000
index 0000000000..cf4d667f1b
--- /dev/null
+++ b/Lang/Oberon/FASTA-format
@@ -0,0 +1 @@
+../../Task/FASTA-format/Oberon
\ No newline at end of file
diff --git a/Lang/Odin/Disarium-numbers b/Lang/Odin/Disarium-numbers
new file mode 120000
index 0000000000..994b840f85
--- /dev/null
+++ b/Lang/Odin/Disarium-numbers
@@ -0,0 +1 @@
+../../Task/Disarium-numbers/Odin
\ No newline at end of file
diff --git a/Lang/OoRexx/Ramer-Douglas-Peucker-line-simplification b/Lang/OoRexx/Ramer-Douglas-Peucker-line-simplification
new file mode 120000
index 0000000000..b97748aa44
--- /dev/null
+++ b/Lang/OoRexx/Ramer-Douglas-Peucker-line-simplification
@@ -0,0 +1 @@
+../../Task/Ramer-Douglas-Peucker-line-simplification/OoRexx
\ No newline at end of file
diff --git a/Lang/OoRexx/Temperature-conversion b/Lang/OoRexx/Temperature-conversion
new file mode 120000
index 0000000000..dc621ac534
--- /dev/null
+++ b/Lang/OoRexx/Temperature-conversion
@@ -0,0 +1 @@
+../../Task/Temperature-conversion/OoRexx
\ No newline at end of file
diff --git a/Lang/PARI-GP/Calkin-Wilf-sequence b/Lang/PARI-GP/Calkin-Wilf-sequence
new file mode 120000
index 0000000000..5260a08bc6
--- /dev/null
+++ b/Lang/PARI-GP/Calkin-Wilf-sequence
@@ -0,0 +1 @@
+../../Task/Calkin-Wilf-sequence/PARI-GP
\ No newline at end of file
diff --git a/Lang/PARI-GP/Chowla-numbers b/Lang/PARI-GP/Chowla-numbers
new file mode 120000
index 0000000000..2787fa8eac
--- /dev/null
+++ b/Lang/PARI-GP/Chowla-numbers
@@ -0,0 +1 @@
+../../Task/Chowla-numbers/PARI-GP
\ No newline at end of file
diff --git a/Lang/PARI-GP/Composite-numbers-k-with-no-single-digit-factors-whose-factors-are-all-substrings-of-k b/Lang/PARI-GP/Composite-numbers-k-with-no-single-digit-factors-whose-factors-are-all-substrings-of-k
new file mode 120000
index 0000000000..ce686eae22
--- /dev/null
+++ b/Lang/PARI-GP/Composite-numbers-k-with-no-single-digit-factors-whose-factors-are-all-substrings-of-k
@@ -0,0 +1 @@
+../../Task/Composite-numbers-k-with-no-single-digit-factors-whose-factors-are-all-substrings-of-k/PARI-GP
\ No newline at end of file
diff --git a/Lang/PARI-GP/Cuban-primes b/Lang/PARI-GP/Cuban-primes
new file mode 120000
index 0000000000..9fcb6d862c
--- /dev/null
+++ b/Lang/PARI-GP/Cuban-primes
@@ -0,0 +1 @@
+../../Task/Cuban-primes/PARI-GP
\ No newline at end of file
diff --git a/Lang/PARI-GP/Cullen-and-Woodall-numbers b/Lang/PARI-GP/Cullen-and-Woodall-numbers
new file mode 120000
index 0000000000..b88f4c7aa7
--- /dev/null
+++ b/Lang/PARI-GP/Cullen-and-Woodall-numbers
@@ -0,0 +1 @@
+../../Task/Cullen-and-Woodall-numbers/PARI-GP
\ No newline at end of file
diff --git a/Lang/PARI-GP/Curzon-numbers b/Lang/PARI-GP/Curzon-numbers
new file mode 120000
index 0000000000..f077d65bb8
--- /dev/null
+++ b/Lang/PARI-GP/Curzon-numbers
@@ -0,0 +1 @@
+../../Task/Curzon-numbers/PARI-GP
\ No newline at end of file
diff --git a/Lang/PARI-GP/Duffinian-numbers b/Lang/PARI-GP/Duffinian-numbers
new file mode 120000
index 0000000000..2058b3fcc8
--- /dev/null
+++ b/Lang/PARI-GP/Duffinian-numbers
@@ -0,0 +1 @@
+../../Task/Duffinian-numbers/PARI-GP
\ No newline at end of file
diff --git a/Lang/PARI-GP/Egyptian-division b/Lang/PARI-GP/Egyptian-division
new file mode 120000
index 0000000000..a72d5a169a
--- /dev/null
+++ b/Lang/PARI-GP/Egyptian-division
@@ -0,0 +1 @@
+../../Task/Egyptian-division/PARI-GP
\ No newline at end of file
diff --git a/Lang/PARI-GP/Fermat-numbers b/Lang/PARI-GP/Fermat-numbers
new file mode 120000
index 0000000000..79fb20086b
--- /dev/null
+++ b/Lang/PARI-GP/Fermat-numbers
@@ -0,0 +1 @@
+../../Task/Fermat-numbers/PARI-GP
\ No newline at end of file
diff --git a/Lang/PARI-GP/Giuga-numbers b/Lang/PARI-GP/Giuga-numbers
new file mode 120000
index 0000000000..0de2f922cb
--- /dev/null
+++ b/Lang/PARI-GP/Giuga-numbers
@@ -0,0 +1 @@
+../../Task/Giuga-numbers/PARI-GP
\ No newline at end of file
diff --git a/Lang/PARI-GP/Home-primes b/Lang/PARI-GP/Home-primes
new file mode 120000
index 0000000000..e40e4d05cb
--- /dev/null
+++ b/Lang/PARI-GP/Home-primes
@@ -0,0 +1 @@
+../../Task/Home-primes/PARI-GP
\ No newline at end of file
diff --git a/Lang/PARI-GP/Jacobsthal-numbers b/Lang/PARI-GP/Jacobsthal-numbers
new file mode 120000
index 0000000000..f9a4f5ef3a
--- /dev/null
+++ b/Lang/PARI-GP/Jacobsthal-numbers
@@ -0,0 +1 @@
+../../Task/Jacobsthal-numbers/PARI-GP
\ No newline at end of file
diff --git a/Lang/PARI-GP/M-bius-function b/Lang/PARI-GP/M-bius-function
new file mode 120000
index 0000000000..00d7d87a25
--- /dev/null
+++ b/Lang/PARI-GP/M-bius-function
@@ -0,0 +1 @@
+../../Task/M-bius-function/PARI-GP
\ No newline at end of file
diff --git a/Lang/PARI-GP/Pisano-period b/Lang/PARI-GP/Pisano-period
new file mode 120000
index 0000000000..983f75fe6c
--- /dev/null
+++ b/Lang/PARI-GP/Pisano-period
@@ -0,0 +1 @@
+../../Task/Pisano-period/PARI-GP
\ No newline at end of file
diff --git a/Lang/PARI-GP/Repunit-primes b/Lang/PARI-GP/Repunit-primes
new file mode 120000
index 0000000000..a51827e876
--- /dev/null
+++ b/Lang/PARI-GP/Repunit-primes
@@ -0,0 +1 @@
+../../Task/Repunit-primes/PARI-GP
\ No newline at end of file
diff --git a/Lang/PARI-GP/Rhonda-numbers b/Lang/PARI-GP/Rhonda-numbers
new file mode 120000
index 0000000000..d7d56fca21
--- /dev/null
+++ b/Lang/PARI-GP/Rhonda-numbers
@@ -0,0 +1 @@
+../../Task/Rhonda-numbers/PARI-GP
\ No newline at end of file
diff --git a/Lang/PARI-GP/Tau-number b/Lang/PARI-GP/Tau-number
new file mode 120000
index 0000000000..5b5ff3f6d3
--- /dev/null
+++ b/Lang/PARI-GP/Tau-number
@@ -0,0 +1 @@
+../../Task/Tau-number/PARI-GP
\ No newline at end of file
diff --git a/Lang/PARI-GP/Yellowstone-sequence b/Lang/PARI-GP/Yellowstone-sequence
new file mode 120000
index 0000000000..a7645262be
--- /dev/null
+++ b/Lang/PARI-GP/Yellowstone-sequence
@@ -0,0 +1 @@
+../../Task/Yellowstone-sequence/PARI-GP
\ No newline at end of file
diff --git a/Lang/PARI-GP/Zumkeller-numbers b/Lang/PARI-GP/Zumkeller-numbers
new file mode 120000
index 0000000000..8e9fc8c2bd
--- /dev/null
+++ b/Lang/PARI-GP/Zumkeller-numbers
@@ -0,0 +1 @@
+../../Task/Zumkeller-numbers/PARI-GP
\ No newline at end of file
diff --git a/Lang/PL-M/Minimum-multiple-of-m-where-digital-sum-equals-m b/Lang/PL-M/Minimum-multiple-of-m-where-digital-sum-equals-m
new file mode 120000
index 0000000000..ef707e8c5a
--- /dev/null
+++ b/Lang/PL-M/Minimum-multiple-of-m-where-digital-sum-equals-m
@@ -0,0 +1 @@
+../../Task/Minimum-multiple-of-m-where-digital-sum-equals-m/PL-M
\ No newline at end of file
diff --git a/Lang/PL-M/Narcissistic-decimal-number b/Lang/PL-M/Narcissistic-decimal-number
new file mode 120000
index 0000000000..5a762f85d9
--- /dev/null
+++ b/Lang/PL-M/Narcissistic-decimal-number
@@ -0,0 +1 @@
+../../Task/Narcissistic-decimal-number/PL-M
\ No newline at end of file
diff --git a/Lang/ParaCL/00-LANG.txt b/Lang/ParaCL/00-LANG.txt
new file mode 100644
index 0000000000..0711f454ed
--- /dev/null
+++ b/Lang/ParaCL/00-LANG.txt
@@ -0,0 +1 @@
+{{stub}}{{language|ParaCL}}
\ No newline at end of file
diff --git a/Lang/ParaCL/00-META.yaml b/Lang/ParaCL/00-META.yaml
new file mode 100644
index 0000000000..ff70e57502
--- /dev/null
+++ b/Lang/ParaCL/00-META.yaml
@@ -0,0 +1,2 @@
+---
+from: http://rosettacode.org/wiki/Category:ParaCL
diff --git a/Lang/ParaCL/Fibonacci-sequence b/Lang/ParaCL/Fibonacci-sequence
new file mode 120000
index 0000000000..89eadc9ef4
--- /dev/null
+++ b/Lang/ParaCL/Fibonacci-sequence
@@ -0,0 +1 @@
+../../Task/Fibonacci-sequence/ParaCL
\ No newline at end of file
diff --git a/Lang/Phix/00-LANG.txt b/Lang/Phix/00-LANG.txt
index 18c8f9c2a5..cbc88ce28e 100644
--- a/Lang/Phix/00-LANG.txt
+++ b/Lang/Phix/00-LANG.txt
@@ -14,12 +14,12 @@
Phix is a self-hosted hybrid interpreter/compiler, developed by Pete Lomax. It is very easy to use, and similar to
[https://rosettacode.org/wiki/Category:Euphoria Euphoria].
-On [https://rosettacode.org/w/index.php?title=Rosetta_Code%2FRank_languages_by_popularity%2FFull_list&type=revision&diff=282496&oldid=282495 26th December 2021, Phix became the first programming language on this site to have submissions for 100% of all tasks].
-(On 20th June 2022 [[Wren]] became the second, albeit with [https://www.rosettacode.org/wiki/Category:WrenGo 13]+[https://www.rosettacode.org/mw/index.php?title=Special%3ASearch&search=wren.h&go=Go 63] of those embedded that I, for one, have been unable to run.)
+On [https://rosettacode.org/wiki/Rosetta_Code/Rank_languages_by_popularity/Full_list?oldid=294533 26th December 2021, Phix became the first programming language on this site to have submissions for 100% of all tasks].
+(On 20th June 2022 [[Wren]] became the second, albeit with [https://www.rosettacode.org/wiki/Category:WrenGo 13]+[https://rosettacode.org/wiki/Special:Search?search=wren.h&wprov=acrw1_-1 66] of those embedded that I, for one, have been unable to run.)
[http://phix.x10.mx/download.php A simple 30MB download] contains a pre-compiled executable, all the sources, and'' '''everything''' ''needed to recompile them, in under 20 seconds. The download also contains a full-featured programmer's editor and about 1000 demo programs.
-You can also [https://replit.com/@PeteLomax1/PhixInterpreter#main.sh run Phix on replit here], and several manually transpiled and uploaded entries [https://rosettacode.org/wiki/Category:Phix/online here]
+You can also [https://replit.com/@PeteLomax1/PhixInterpreter#main.sh run Phix on replit here] (1.0.3 Lnx 64 bit), and several manually transpiled and uploaded entries [https://rosettacode.org/wiki/Category:Phix/online here]
Perhaps the most striking feature of Phix is that it has just five builtin data types:
@@ -39,7 +39,7 @@ Technically Phix does not have a garbage collector, instead it is reference coun
The fundamental goal of Phix is to make debugging easier, a whole subject area that does not seem to get the attention it deserves, despite several studies finding that most programmers actually spend between 70 and 90% of their time debugging. Most of us tend to think that getting just-written code to work is somehow not debugging, but that clipboard-toting researcher stood behind you would disagree.
-Since 1.0.0 you can also run (many/most) Phix programs in a browser, by using pwa/p2js (as included in the distro) to transpile the program to JavaScript (plus a bit of standard HTML and CSS). If you see "'''with javascript_semantics'''" it means the program has been tested and works fine, both on the (Windows/Linux) desktop/Phix and in a browser via pwa/p2js, and in fact unix_dict() has been added to avoid reading unixdict.txt. Conversely, "without js" being present on a rosettacode entry means that (for instance) it uses the local file system, and is therefore desktop/Phix only. It is worth pointing out that "with js" and deep_copy() have proved ''staggeringly'' effective and nowhere near as painful as first feared. In just a few months (1.0.0 was released in July 2021) I have tested, fixed where necessary, and marked as javascript compatible (Sorry, both links borken since move to WikiTide) ''[https://rosettacode.org/w/index.php?search=phixonline&title=Special%3ASearch&wprov=acrw1 over 1,200 rosettacode entries]'' for Phix, and only ''[https://rosettacode.org/w/index.php?search=notonline&title=Special%3ASearch&wprov=acrw1 one seventh]'' of that have as yet been marked incompatible, despite things like file i/o being prohibited within a web browser. The [https://rosettacode.org/wiki/Category:Phix/online Phix/online] subcategory currently lists 99 entries deemed interesting enough to bother (manually) uploading to the Phix website (ping me should any stop working), and the next goal is to get pwa/p2js itself runnning online, but obviously without using file i/o directly. Another long term goal is to get Phix running on ARM, and since that would be utterly pointless without a viable GUI, I am currently elbow deep in writing a new cross-platform GUI, as a stepping stone (for both ARM and p2js/online).
+Since 1.0.0 you can also run (many/most) Phix programs in a browser, by using pwa/p2js (as included in the distro) to transpile the program to JavaScript (plus a bit of standard HTML and CSS). If you see "'''with javascript_semantics'''" it means the program has been tested and works fine, both on the (Windows/Linux) desktop/Phix and in a browser via pwa/p2js, and in fact unix_dict() has been added to avoid reading unixdict.txt. Conversely, "without js" being present on a rosettacode entry means that (for instance) it uses the local file system, and is therefore desktop/Phix only. It is worth pointing out that "with js" and deep_copy() have proved ''staggeringly'' effective and nowhere near as painful as first feared. In just a few months (1.0.0 was released in July 2021) I have tested, fixed where necessary, and marked as javascript compatible ''[https://rosettacode.org/w/index.php?search=phixonline&title=Special%3ASearch&wprov=acrw1 over 1,200 rosettacode entries]'' for Phix, and only ''[https://rosettacode.org/w/index.php?search=notonline&title=Special%3ASearch&wprov=acrw1 one seventh]'' of that have as yet been marked incompatible, despite things like file i/o being prohibited within a web browser. The [https://rosettacode.org/wiki/Category:Phix/online Phix/online] subcategory currently lists 99 entries deemed interesting enough to bother (manually) uploading to the Phix website (ping me should any stop working), and the next goal is to get pwa/p2js itself runnning online, but obviously without using file i/o directly. Another long term goal is to get Phix running on ARM, and since that would be utterly pointless without a viable GUI, I am currently elbow deep in writing a new cross-platform GUI, as a stepping stone (for both ARM and p2js/online).
==See also==
* [http://phix.x10.mx Phix site]
diff --git a/Lang/PowerPC-Assembly/Greatest-common-divisor b/Lang/PowerPC-Assembly/Greatest-common-divisor
new file mode 120000
index 0000000000..630e6db921
--- /dev/null
+++ b/Lang/PowerPC-Assembly/Greatest-common-divisor
@@ -0,0 +1 @@
+../../Task/Greatest-common-divisor/PowerPC-Assembly
\ No newline at end of file
diff --git a/Lang/Prog8/00-LANG.txt b/Lang/Prog8/00-LANG.txt
new file mode 100644
index 0000000000..1d713f3af5
--- /dev/null
+++ b/Lang/Prog8/00-LANG.txt
@@ -0,0 +1,11 @@
+{{language
+|exec=compiled
+|tags=prog8
+}}
+'''Prog8''' is a modern compiled programming language targeting computers based on the MOS 6502 family of CPUs. The compiler and standard library have support for the Atari 8-bit family (6502), Commodore 64 (6510) and 128 (8502), and the Commander X-16 (65c02). It's a relatively low-level language in the same niche as C, but specifically designed for the 8-bit architecture of its target systems.
+
+==Links==
+* [https://prog8.readthedocs.io Documentation]
+* [https://github.com/irmen/prog8 Github source]
+
+{{language programming paradigm|Procedural}}
\ No newline at end of file
diff --git a/Lang/Prog8/00-META.yaml b/Lang/Prog8/00-META.yaml
new file mode 100644
index 0000000000..288f396ee5
--- /dev/null
+++ b/Lang/Prog8/00-META.yaml
@@ -0,0 +1,2 @@
+---
+from: http://rosettacode.org/wiki/Category:Prog8
diff --git a/Lang/Prog8/The-Twelve-Days-of-Christmas b/Lang/Prog8/The-Twelve-Days-of-Christmas
new file mode 120000
index 0000000000..358b85327a
--- /dev/null
+++ b/Lang/Prog8/The-Twelve-Days-of-Christmas
@@ -0,0 +1 @@
+../../Task/The-Twelve-Days-of-Christmas/Prog8
\ No newline at end of file
diff --git a/Lang/Prolog/Generate-Chess960-starting-position b/Lang/Prolog/Generate-Chess960-starting-position
new file mode 120000
index 0000000000..7c664672ab
--- /dev/null
+++ b/Lang/Prolog/Generate-Chess960-starting-position
@@ -0,0 +1 @@
+../../Task/Generate-Chess960-starting-position/Prolog
\ No newline at end of file
diff --git a/Lang/PureBasic/Sphenic-numbers b/Lang/PureBasic/Sphenic-numbers
new file mode 120000
index 0000000000..5ff07480cd
--- /dev/null
+++ b/Lang/PureBasic/Sphenic-numbers
@@ -0,0 +1 @@
+../../Task/Sphenic-numbers/PureBasic
\ No newline at end of file
diff --git a/Lang/Python/Equal-prime-and-composite-sums b/Lang/Python/Equal-prime-and-composite-sums
new file mode 120000
index 0000000000..85cb0d4944
--- /dev/null
+++ b/Lang/Python/Equal-prime-and-composite-sums
@@ -0,0 +1 @@
+../../Task/Equal-prime-and-composite-sums/Python
\ No newline at end of file
diff --git a/Lang/Python/Erd-s-Nicolas-numbers b/Lang/Python/Erd-s-Nicolas-numbers
new file mode 120000
index 0000000000..c04d09ae0e
--- /dev/null
+++ b/Lang/Python/Erd-s-Nicolas-numbers
@@ -0,0 +1 @@
+../../Task/Erd-s-Nicolas-numbers/Python
\ No newline at end of file
diff --git a/Lang/Python/Jordan-P-lya-numbers b/Lang/Python/Jordan-P-lya-numbers
new file mode 120000
index 0000000000..72646172bd
--- /dev/null
+++ b/Lang/Python/Jordan-P-lya-numbers
@@ -0,0 +1 @@
+../../Task/Jordan-P-lya-numbers/Python
\ No newline at end of file
diff --git a/Lang/Python/Pell-numbers b/Lang/Python/Pell-numbers
new file mode 120000
index 0000000000..445be304a8
--- /dev/null
+++ b/Lang/Python/Pell-numbers
@@ -0,0 +1 @@
+../../Task/Pell-numbers/Python
\ No newline at end of file
diff --git a/Lang/Python/Transliterate-English-text-using-the-Greek-alphabet b/Lang/Python/Transliterate-English-text-using-the-Greek-alphabet
new file mode 120000
index 0000000000..ca70885140
--- /dev/null
+++ b/Lang/Python/Transliterate-English-text-using-the-Greek-alphabet
@@ -0,0 +1 @@
+../../Task/Transliterate-English-text-using-the-Greek-alphabet/Python
\ No newline at end of file
diff --git a/Lang/QuickBASIC/Reverse-a-string b/Lang/QuickBASIC/Reverse-a-string
new file mode 120000
index 0000000000..69b812ff8f
--- /dev/null
+++ b/Lang/QuickBASIC/Reverse-a-string
@@ -0,0 +1 @@
+../../Task/Reverse-a-string/QuickBASIC
\ No newline at end of file
diff --git a/Lang/R/9-billion-names-of-God-the-integer b/Lang/R/9-billion-names-of-God-the-integer
new file mode 120000
index 0000000000..5514828236
--- /dev/null
+++ b/Lang/R/9-billion-names-of-God-the-integer
@@ -0,0 +1 @@
+../../Task/9-billion-names-of-God-the-integer/R
\ No newline at end of file
diff --git a/Lang/R/Padovan-sequence b/Lang/R/Padovan-sequence
new file mode 120000
index 0000000000..cd4a17c5b4
--- /dev/null
+++ b/Lang/R/Padovan-sequence
@@ -0,0 +1 @@
+../../Task/Padovan-sequence/R
\ No newline at end of file
diff --git a/Lang/RATFOR/Fibonacci-sequence b/Lang/RATFOR/Fibonacci-sequence
new file mode 120000
index 0000000000..5d5e412db3
--- /dev/null
+++ b/Lang/RATFOR/Fibonacci-sequence
@@ -0,0 +1 @@
+../../Task/Fibonacci-sequence/RATFOR
\ No newline at end of file
diff --git a/Lang/RPL/Averages-Arithmetic-mean b/Lang/RPL/Averages-Arithmetic-mean
deleted file mode 120000
index 44479b0504..0000000000
--- a/Lang/RPL/Averages-Arithmetic-mean
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Arithmetic-mean/RPL
\ No newline at end of file
diff --git a/Lang/Refal/100-doors b/Lang/Refal/100-doors
new file mode 120000
index 0000000000..b42ae17bb5
--- /dev/null
+++ b/Lang/Refal/100-doors
@@ -0,0 +1 @@
+../../Task/100-doors/Refal
\ No newline at end of file
diff --git a/Lang/Refal/99-bottles-of-beer b/Lang/Refal/99-bottles-of-beer
new file mode 120000
index 0000000000..2ee58c482a
--- /dev/null
+++ b/Lang/Refal/99-bottles-of-beer
@@ -0,0 +1 @@
+../../Task/99-bottles-of-beer/Refal
\ No newline at end of file
diff --git a/Lang/Refal/ABC-problem b/Lang/Refal/ABC-problem
new file mode 120000
index 0000000000..147e0c9c08
--- /dev/null
+++ b/Lang/Refal/ABC-problem
@@ -0,0 +1 @@
+../../Task/ABC-problem/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Ackermann-function b/Lang/Refal/Ackermann-function
new file mode 120000
index 0000000000..b15c3eabf7
--- /dev/null
+++ b/Lang/Refal/Ackermann-function
@@ -0,0 +1 @@
+../../Task/Ackermann-function/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Binary-digits b/Lang/Refal/Binary-digits
new file mode 120000
index 0000000000..671ac48fe5
--- /dev/null
+++ b/Lang/Refal/Binary-digits
@@ -0,0 +1 @@
+../../Task/Binary-digits/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Catamorphism b/Lang/Refal/Catamorphism
new file mode 120000
index 0000000000..dd93ebc37a
--- /dev/null
+++ b/Lang/Refal/Catamorphism
@@ -0,0 +1 @@
+../../Task/Catamorphism/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Comma-quibbling b/Lang/Refal/Comma-quibbling
new file mode 120000
index 0000000000..e0a180f35a
--- /dev/null
+++ b/Lang/Refal/Comma-quibbling
@@ -0,0 +1 @@
+../../Task/Comma-quibbling/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Count-in-factors b/Lang/Refal/Count-in-factors
new file mode 120000
index 0000000000..8f09f07e9c
--- /dev/null
+++ b/Lang/Refal/Count-in-factors
@@ -0,0 +1 @@
+../../Task/Count-in-factors/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Count-occurrences-of-a-substring b/Lang/Refal/Count-occurrences-of-a-substring
new file mode 120000
index 0000000000..3ee1567368
--- /dev/null
+++ b/Lang/Refal/Count-occurrences-of-a-substring
@@ -0,0 +1 @@
+../../Task/Count-occurrences-of-a-substring/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Determine-if-a-string-is-collapsible b/Lang/Refal/Determine-if-a-string-is-collapsible
new file mode 120000
index 0000000000..93d8d21f97
--- /dev/null
+++ b/Lang/Refal/Determine-if-a-string-is-collapsible
@@ -0,0 +1 @@
+../../Task/Determine-if-a-string-is-collapsible/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Execute-Brain- b/Lang/Refal/Execute-Brain-
new file mode 120000
index 0000000000..b2a669e873
--- /dev/null
+++ b/Lang/Refal/Execute-Brain-
@@ -0,0 +1 @@
+../../Task/Execute-Brain-/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Execute-a-Markov-algorithm b/Lang/Refal/Execute-a-Markov-algorithm
new file mode 120000
index 0000000000..1c5c0f5111
--- /dev/null
+++ b/Lang/Refal/Execute-a-Markov-algorithm
@@ -0,0 +1 @@
+../../Task/Execute-a-Markov-algorithm/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Factorial b/Lang/Refal/Factorial
new file mode 120000
index 0000000000..0fea43897c
--- /dev/null
+++ b/Lang/Refal/Factorial
@@ -0,0 +1 @@
+../../Task/Factorial/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Fibonacci-sequence b/Lang/Refal/Fibonacci-sequence
new file mode 120000
index 0000000000..ef7f1ccdd3
--- /dev/null
+++ b/Lang/Refal/Fibonacci-sequence
@@ -0,0 +1 @@
+../../Task/Fibonacci-sequence/Refal
\ No newline at end of file
diff --git a/Lang/Refal/FizzBuzz b/Lang/Refal/FizzBuzz
new file mode 120000
index 0000000000..dc9c8c4e2c
--- /dev/null
+++ b/Lang/Refal/FizzBuzz
@@ -0,0 +1 @@
+../../Task/FizzBuzz/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Greatest-common-divisor b/Lang/Refal/Greatest-common-divisor
new file mode 120000
index 0000000000..4c2254b5ab
--- /dev/null
+++ b/Lang/Refal/Greatest-common-divisor
@@ -0,0 +1 @@
+../../Task/Greatest-common-divisor/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Hailstone-sequence b/Lang/Refal/Hailstone-sequence
new file mode 120000
index 0000000000..3262ce3df7
--- /dev/null
+++ b/Lang/Refal/Hailstone-sequence
@@ -0,0 +1 @@
+../../Task/Hailstone-sequence/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Happy-numbers b/Lang/Refal/Happy-numbers
new file mode 120000
index 0000000000..16f1b20516
--- /dev/null
+++ b/Lang/Refal/Happy-numbers
@@ -0,0 +1 @@
+../../Task/Happy-numbers/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Harshad-or-Niven-series b/Lang/Refal/Harshad-or-Niven-series
new file mode 120000
index 0000000000..da848d997c
--- /dev/null
+++ b/Lang/Refal/Harshad-or-Niven-series
@@ -0,0 +1 @@
+../../Task/Harshad-or-Niven-series/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Hello-world-Text b/Lang/Refal/Hello-world-Text
new file mode 120000
index 0000000000..3c67e6fb12
--- /dev/null
+++ b/Lang/Refal/Hello-world-Text
@@ -0,0 +1 @@
+../../Task/Hello-world-Text/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Jewels-and-stones b/Lang/Refal/Jewels-and-stones
new file mode 120000
index 0000000000..d8c63e5bb3
--- /dev/null
+++ b/Lang/Refal/Jewels-and-stones
@@ -0,0 +1 @@
+../../Task/Jewels-and-stones/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Levenshtein-distance b/Lang/Refal/Levenshtein-distance
new file mode 120000
index 0000000000..dffc24ebd3
--- /dev/null
+++ b/Lang/Refal/Levenshtein-distance
@@ -0,0 +1 @@
+../../Task/Levenshtein-distance/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Longest-common-substring b/Lang/Refal/Longest-common-substring
new file mode 120000
index 0000000000..2c12f47190
--- /dev/null
+++ b/Lang/Refal/Longest-common-substring
@@ -0,0 +1 @@
+../../Task/Longest-common-substring/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Look-and-say-sequence b/Lang/Refal/Look-and-say-sequence
new file mode 120000
index 0000000000..31bd518515
--- /dev/null
+++ b/Lang/Refal/Look-and-say-sequence
@@ -0,0 +1 @@
+../../Task/Look-and-say-sequence/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Luhn-test-of-credit-card-numbers b/Lang/Refal/Luhn-test-of-credit-card-numbers
new file mode 120000
index 0000000000..4caee7398b
--- /dev/null
+++ b/Lang/Refal/Luhn-test-of-credit-card-numbers
@@ -0,0 +1 @@
+../../Task/Luhn-test-of-credit-card-numbers/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Minimum-multiple-of-m-where-digital-sum-equals-m b/Lang/Refal/Minimum-multiple-of-m-where-digital-sum-equals-m
new file mode 120000
index 0000000000..8eb3682d6d
--- /dev/null
+++ b/Lang/Refal/Minimum-multiple-of-m-where-digital-sum-equals-m
@@ -0,0 +1 @@
+../../Task/Minimum-multiple-of-m-where-digital-sum-equals-m/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Mutual-recursion b/Lang/Refal/Mutual-recursion
new file mode 120000
index 0000000000..6f6c869fc0
--- /dev/null
+++ b/Lang/Refal/Mutual-recursion
@@ -0,0 +1 @@
+../../Task/Mutual-recursion/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Phrase-reversals b/Lang/Refal/Phrase-reversals
new file mode 120000
index 0000000000..1ba657880f
--- /dev/null
+++ b/Lang/Refal/Phrase-reversals
@@ -0,0 +1 @@
+../../Task/Phrase-reversals/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Primality-by-Wilsons-theorem b/Lang/Refal/Primality-by-Wilsons-theorem
new file mode 120000
index 0000000000..c38ba6debb
--- /dev/null
+++ b/Lang/Refal/Primality-by-Wilsons-theorem
@@ -0,0 +1 @@
+../../Task/Primality-by-Wilsons-theorem/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Rep-string b/Lang/Refal/Rep-string
new file mode 120000
index 0000000000..07bd8a4a37
--- /dev/null
+++ b/Lang/Refal/Rep-string
@@ -0,0 +1 @@
+../../Task/Rep-string/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Reverse-a-string b/Lang/Refal/Reverse-a-string
new file mode 120000
index 0000000000..32d7c21312
--- /dev/null
+++ b/Lang/Refal/Reverse-a-string
@@ -0,0 +1 @@
+../../Task/Reverse-a-string/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Roman-numerals-Decode b/Lang/Refal/Roman-numerals-Decode
new file mode 120000
index 0000000000..a0cf44e107
--- /dev/null
+++ b/Lang/Refal/Roman-numerals-Decode
@@ -0,0 +1 @@
+../../Task/Roman-numerals-Decode/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Sieve-of-Eratosthenes b/Lang/Refal/Sieve-of-Eratosthenes
new file mode 120000
index 0000000000..c82f28137f
--- /dev/null
+++ b/Lang/Refal/Sieve-of-Eratosthenes
@@ -0,0 +1 @@
+../../Task/Sieve-of-Eratosthenes/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Sorting-algorithms-Insertion-sort b/Lang/Refal/Sorting-algorithms-Insertion-sort
new file mode 120000
index 0000000000..55abe9cc64
--- /dev/null
+++ b/Lang/Refal/Sorting-algorithms-Insertion-sort
@@ -0,0 +1 @@
+../../Task/Sorting-algorithms-Insertion-sort/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Sorting-algorithms-Merge-sort b/Lang/Refal/Sorting-algorithms-Merge-sort
new file mode 120000
index 0000000000..9375e30960
--- /dev/null
+++ b/Lang/Refal/Sorting-algorithms-Merge-sort
@@ -0,0 +1 @@
+../../Task/Sorting-algorithms-Merge-sort/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Sorting-algorithms-Quicksort b/Lang/Refal/Sorting-algorithms-Quicksort
new file mode 120000
index 0000000000..9251c355c6
--- /dev/null
+++ b/Lang/Refal/Sorting-algorithms-Quicksort
@@ -0,0 +1 @@
+../../Task/Sorting-algorithms-Quicksort/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Stern-Brocot-sequence b/Lang/Refal/Stern-Brocot-sequence
new file mode 120000
index 0000000000..0b56a77639
--- /dev/null
+++ b/Lang/Refal/Stern-Brocot-sequence
@@ -0,0 +1 @@
+../../Task/Stern-Brocot-sequence/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Sum-of-squares b/Lang/Refal/Sum-of-squares
new file mode 120000
index 0000000000..171c9074d7
--- /dev/null
+++ b/Lang/Refal/Sum-of-squares
@@ -0,0 +1 @@
+../../Task/Sum-of-squares/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Symmetric-difference b/Lang/Refal/Symmetric-difference
new file mode 120000
index 0000000000..e1a4a3e3a0
--- /dev/null
+++ b/Lang/Refal/Symmetric-difference
@@ -0,0 +1 @@
+../../Task/Symmetric-difference/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Thue-Morse b/Lang/Refal/Thue-Morse
new file mode 120000
index 0000000000..f4e3ddd3b0
--- /dev/null
+++ b/Lang/Refal/Thue-Morse
@@ -0,0 +1 @@
+../../Task/Thue-Morse/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Towers-of-Hanoi b/Lang/Refal/Towers-of-Hanoi
new file mode 120000
index 0000000000..8fe4b6b370
--- /dev/null
+++ b/Lang/Refal/Towers-of-Hanoi
@@ -0,0 +1 @@
+../../Task/Towers-of-Hanoi/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Tree-traversal b/Lang/Refal/Tree-traversal
new file mode 120000
index 0000000000..9d83db52d1
--- /dev/null
+++ b/Lang/Refal/Tree-traversal
@@ -0,0 +1 @@
+../../Task/Tree-traversal/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Van-Eck-sequence b/Lang/Refal/Van-Eck-sequence
new file mode 120000
index 0000000000..e8b3b8d52a
--- /dev/null
+++ b/Lang/Refal/Van-Eck-sequence
@@ -0,0 +1 @@
+../../Task/Van-Eck-sequence/Refal
\ No newline at end of file
diff --git a/Lang/Roc/00-LANG.txt b/Lang/Roc/00-LANG.txt
new file mode 100644
index 0000000000..ffdb69b5dd
--- /dev/null
+++ b/Lang/Roc/00-LANG.txt
@@ -0,0 +1,9 @@
+{{stub}}
+{{language|Roc|site=https://www.roc-lang.org|tags=roc}}
+{{Language programming paradigm|Functional}}
+
+Roc code is designed to build fast and run fast. It compiles to machine code or WebAssembly.
+
+Roc's syntax, semantics, and included toolset all prioritize user-friendliness.
+
+Roc has a small number of simple language primitives. It's a single-paradigm functional language.
\ No newline at end of file
diff --git a/Lang/Roc/00-META.yaml b/Lang/Roc/00-META.yaml
new file mode 100644
index 0000000000..53c6cdad21
--- /dev/null
+++ b/Lang/Roc/00-META.yaml
@@ -0,0 +1,2 @@
+---
+from: http://rosettacode.org/wiki/Category:Roc
diff --git a/Lang/Roc/Binary-digits b/Lang/Roc/Binary-digits
new file mode 120000
index 0000000000..da521e90f1
--- /dev/null
+++ b/Lang/Roc/Binary-digits
@@ -0,0 +1 @@
+../../Task/Binary-digits/Roc
\ No newline at end of file
diff --git a/Lang/Roc/Hello-world-Text b/Lang/Roc/Hello-world-Text
new file mode 120000
index 0000000000..40fe742e73
--- /dev/null
+++ b/Lang/Roc/Hello-world-Text
@@ -0,0 +1 @@
+../../Task/Hello-world-Text/Roc
\ No newline at end of file
diff --git a/Lang/Rust/Chowla-numbers b/Lang/Rust/Chowla-numbers
new file mode 120000
index 0000000000..73e1040f4e
--- /dev/null
+++ b/Lang/Rust/Chowla-numbers
@@ -0,0 +1 @@
+../../Task/Chowla-numbers/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Eertree b/Lang/Rust/Eertree
new file mode 120000
index 0000000000..80293e575c
--- /dev/null
+++ b/Lang/Rust/Eertree
@@ -0,0 +1 @@
+../../Task/Eertree/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Gamma-function b/Lang/Rust/Gamma-function
new file mode 120000
index 0000000000..f400cc415c
--- /dev/null
+++ b/Lang/Rust/Gamma-function
@@ -0,0 +1 @@
+../../Task/Gamma-function/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Introspection b/Lang/Rust/Introspection
new file mode 120000
index 0000000000..31d728e58c
--- /dev/null
+++ b/Lang/Rust/Introspection
@@ -0,0 +1 @@
+../../Task/Introspection/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Jordan-P-lya-numbers b/Lang/Rust/Jordan-P-lya-numbers
new file mode 120000
index 0000000000..498a0c552f
--- /dev/null
+++ b/Lang/Rust/Jordan-P-lya-numbers
@@ -0,0 +1 @@
+../../Task/Jordan-P-lya-numbers/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Pancake-numbers b/Lang/Rust/Pancake-numbers
new file mode 120000
index 0000000000..ef65209521
--- /dev/null
+++ b/Lang/Rust/Pancake-numbers
@@ -0,0 +1 @@
+../../Task/Pancake-numbers/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Pseudo-random-numbers-PCG32 b/Lang/Rust/Pseudo-random-numbers-PCG32
new file mode 120000
index 0000000000..ea0c68c73c
--- /dev/null
+++ b/Lang/Rust/Pseudo-random-numbers-PCG32
@@ -0,0 +1 @@
+../../Task/Pseudo-random-numbers-PCG32/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Pseudo-random-numbers-Xorshift-star b/Lang/Rust/Pseudo-random-numbers-Xorshift-star
new file mode 120000
index 0000000000..02667e7c55
--- /dev/null
+++ b/Lang/Rust/Pseudo-random-numbers-Xorshift-star
@@ -0,0 +1 @@
+../../Task/Pseudo-random-numbers-Xorshift-star/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Zeckendorf-arithmetic b/Lang/Rust/Zeckendorf-arithmetic
new file mode 120000
index 0000000000..fa9675f521
--- /dev/null
+++ b/Lang/Rust/Zeckendorf-arithmetic
@@ -0,0 +1 @@
+../../Task/Zeckendorf-arithmetic/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Zeckendorf-number-representation b/Lang/Rust/Zeckendorf-number-representation
new file mode 120000
index 0000000000..d6de4a899a
--- /dev/null
+++ b/Lang/Rust/Zeckendorf-number-representation
@@ -0,0 +1 @@
+../../Task/Zeckendorf-number-representation/Rust
\ No newline at end of file
diff --git a/Lang/S-BASIC/Bitwise-operations b/Lang/S-BASIC/Bitwise-operations
new file mode 120000
index 0000000000..08dd8f5cef
--- /dev/null
+++ b/Lang/S-BASIC/Bitwise-operations
@@ -0,0 +1 @@
+../../Task/Bitwise-operations/S-BASIC
\ No newline at end of file
diff --git a/Lang/S-BASIC/Strip-a-set-of-characters-from-a-string b/Lang/S-BASIC/Strip-a-set-of-characters-from-a-string
new file mode 120000
index 0000000000..3f36145b0a
--- /dev/null
+++ b/Lang/S-BASIC/Strip-a-set-of-characters-from-a-string
@@ -0,0 +1 @@
+../../Task/Strip-a-set-of-characters-from-a-string/S-BASIC
\ No newline at end of file
diff --git a/Lang/SETL/ABC-problem b/Lang/SETL/ABC-problem
new file mode 120000
index 0000000000..c18b2914bb
--- /dev/null
+++ b/Lang/SETL/ABC-problem
@@ -0,0 +1 @@
+../../Task/ABC-problem/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Narcissistic-decimal-number b/Lang/SETL/Narcissistic-decimal-number
new file mode 120000
index 0000000000..d2b692567b
--- /dev/null
+++ b/Lang/SETL/Narcissistic-decimal-number
@@ -0,0 +1 @@
+../../Task/Narcissistic-decimal-number/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Primality-by-Wilsons-theorem b/Lang/SETL/Primality-by-Wilsons-theorem
new file mode 120000
index 0000000000..0c948a95c3
--- /dev/null
+++ b/Lang/SETL/Primality-by-Wilsons-theorem
@@ -0,0 +1 @@
+../../Task/Primality-by-Wilsons-theorem/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Stern-Brocot-sequence b/Lang/SETL/Stern-Brocot-sequence
new file mode 120000
index 0000000000..ed3c987e48
--- /dev/null
+++ b/Lang/SETL/Stern-Brocot-sequence
@@ -0,0 +1 @@
+../../Task/Stern-Brocot-sequence/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Sum-of-a-series b/Lang/SETL/Sum-of-a-series
new file mode 120000
index 0000000000..7a9118efe1
--- /dev/null
+++ b/Lang/SETL/Sum-of-a-series
@@ -0,0 +1 @@
+../../Task/Sum-of-a-series/SETL
\ No newline at end of file
diff --git a/Lang/Sage/Amicable-pairs b/Lang/Sage/Amicable-pairs
new file mode 120000
index 0000000000..c06c543646
--- /dev/null
+++ b/Lang/Sage/Amicable-pairs
@@ -0,0 +1 @@
+../../Task/Amicable-pairs/Sage
\ No newline at end of file
diff --git a/Lang/Scala/Almkvist-Giullera-formula-for-pi b/Lang/Scala/Almkvist-Giullera-formula-for-pi
new file mode 120000
index 0000000000..4d4df47135
--- /dev/null
+++ b/Lang/Scala/Almkvist-Giullera-formula-for-pi
@@ -0,0 +1 @@
+../../Task/Almkvist-Giullera-formula-for-pi/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Arithmetic-derivative b/Lang/Scala/Arithmetic-derivative
new file mode 120000
index 0000000000..f28c4f2425
--- /dev/null
+++ b/Lang/Scala/Arithmetic-derivative
@@ -0,0 +1 @@
+../../Task/Arithmetic-derivative/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Arithmetic-numbers b/Lang/Scala/Arithmetic-numbers
new file mode 120000
index 0000000000..3d59c01a8c
--- /dev/null
+++ b/Lang/Scala/Arithmetic-numbers
@@ -0,0 +1 @@
+../../Task/Arithmetic-numbers/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Bin-given-limits b/Lang/Scala/Bin-given-limits
new file mode 120000
index 0000000000..9debe0aa7f
--- /dev/null
+++ b/Lang/Scala/Bin-given-limits
@@ -0,0 +1 @@
+../../Task/Bin-given-limits/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Biorhythms b/Lang/Scala/Biorhythms
new file mode 120000
index 0000000000..e60407361c
--- /dev/null
+++ b/Lang/Scala/Biorhythms
@@ -0,0 +1 @@
+../../Task/Biorhythms/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Blum-integer b/Lang/Scala/Blum-integer
new file mode 120000
index 0000000000..5a481a686a
--- /dev/null
+++ b/Lang/Scala/Blum-integer
@@ -0,0 +1 @@
+../../Task/Blum-integer/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Camel-case-and-snake-case b/Lang/Scala/Camel-case-and-snake-case
new file mode 120000
index 0000000000..ce7d2434b0
--- /dev/null
+++ b/Lang/Scala/Camel-case-and-snake-case
@@ -0,0 +1 @@
+../../Task/Camel-case-and-snake-case/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Canonicalize-CIDR b/Lang/Scala/Canonicalize-CIDR
new file mode 120000
index 0000000000..f594c73e4d
--- /dev/null
+++ b/Lang/Scala/Canonicalize-CIDR
@@ -0,0 +1 @@
+../../Task/Canonicalize-CIDR/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Church-numerals b/Lang/Scala/Church-numerals
new file mode 120000
index 0000000000..b2182324c0
--- /dev/null
+++ b/Lang/Scala/Church-numerals
@@ -0,0 +1 @@
+../../Task/Church-numerals/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Compare-length-of-two-strings b/Lang/Scala/Compare-length-of-two-strings
new file mode 120000
index 0000000000..dac82e206f
--- /dev/null
+++ b/Lang/Scala/Compare-length-of-two-strings
@@ -0,0 +1 @@
+../../Task/Compare-length-of-two-strings/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Cullen-and-Woodall-numbers b/Lang/Scala/Cullen-and-Woodall-numbers
new file mode 120000
index 0000000000..f8b8f7d073
--- /dev/null
+++ b/Lang/Scala/Cullen-and-Woodall-numbers
@@ -0,0 +1 @@
+../../Task/Cullen-and-Woodall-numbers/Scala
\ No newline at end of file
diff --git a/Lang/Scala/De-Bruijn-sequences b/Lang/Scala/De-Bruijn-sequences
new file mode 120000
index 0000000000..c833bc5131
--- /dev/null
+++ b/Lang/Scala/De-Bruijn-sequences
@@ -0,0 +1 @@
+../../Task/De-Bruijn-sequences/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Demings-funnel b/Lang/Scala/Demings-funnel
new file mode 120000
index 0000000000..64936fefc5
--- /dev/null
+++ b/Lang/Scala/Demings-funnel
@@ -0,0 +1 @@
+../../Task/Demings-funnel/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Doomsday-rule b/Lang/Scala/Doomsday-rule
new file mode 120000
index 0000000000..2d0de21fa5
--- /dev/null
+++ b/Lang/Scala/Doomsday-rule
@@ -0,0 +1 @@
+../../Task/Doomsday-rule/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Eulers-constant-0.5772... b/Lang/Scala/Eulers-constant-0.5772...
new file mode 120000
index 0000000000..0fe8049cca
--- /dev/null
+++ b/Lang/Scala/Eulers-constant-0.5772...
@@ -0,0 +1 @@
+../../Task/Eulers-constant-0.5772.../Scala
\ No newline at end of file
diff --git a/Lang/Scala/Floyd-Warshall-algorithm b/Lang/Scala/Floyd-Warshall-algorithm
new file mode 120000
index 0000000000..ef9de392a8
--- /dev/null
+++ b/Lang/Scala/Floyd-Warshall-algorithm
@@ -0,0 +1 @@
+../../Task/Floyd-Warshall-algorithm/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Gaussian-elimination b/Lang/Scala/Gaussian-elimination
new file mode 120000
index 0000000000..ececfb8068
--- /dev/null
+++ b/Lang/Scala/Gaussian-elimination
@@ -0,0 +1 @@
+../../Task/Gaussian-elimination/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Giuga-numbers b/Lang/Scala/Giuga-numbers
new file mode 120000
index 0000000000..69d4a1842f
--- /dev/null
+++ b/Lang/Scala/Giuga-numbers
@@ -0,0 +1 @@
+../../Task/Giuga-numbers/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Jordan-P-lya-numbers b/Lang/Scala/Jordan-P-lya-numbers
new file mode 120000
index 0000000000..ea8b9ff9a2
--- /dev/null
+++ b/Lang/Scala/Jordan-P-lya-numbers
@@ -0,0 +1 @@
+../../Task/Jordan-P-lya-numbers/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Padovan-sequence b/Lang/Scala/Padovan-sequence
new file mode 120000
index 0000000000..685b3e0f0a
--- /dev/null
+++ b/Lang/Scala/Padovan-sequence
@@ -0,0 +1 @@
+../../Task/Padovan-sequence/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Pancake-numbers b/Lang/Scala/Pancake-numbers
new file mode 120000
index 0000000000..65ed4c5503
--- /dev/null
+++ b/Lang/Scala/Pancake-numbers
@@ -0,0 +1 @@
+../../Task/Pancake-numbers/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Parsing-Shunting-yard-algorithm b/Lang/Scala/Parsing-Shunting-yard-algorithm
new file mode 120000
index 0000000000..84c22e4a24
--- /dev/null
+++ b/Lang/Scala/Parsing-Shunting-yard-algorithm
@@ -0,0 +1 @@
+../../Task/Parsing-Shunting-yard-algorithm/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Primality-by-Wilsons-theorem b/Lang/Scala/Primality-by-Wilsons-theorem
new file mode 120000
index 0000000000..ed0f8a0a73
--- /dev/null
+++ b/Lang/Scala/Primality-by-Wilsons-theorem
@@ -0,0 +1 @@
+../../Task/Primality-by-Wilsons-theorem/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Pseudo-random-numbers-PCG32 b/Lang/Scala/Pseudo-random-numbers-PCG32
new file mode 120000
index 0000000000..ebdb3ee5a4
--- /dev/null
+++ b/Lang/Scala/Pseudo-random-numbers-PCG32
@@ -0,0 +1 @@
+../../Task/Pseudo-random-numbers-PCG32/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Ramanujan-primes-twins b/Lang/Scala/Ramanujan-primes-twins
new file mode 120000
index 0000000000..9565fe8fd6
--- /dev/null
+++ b/Lang/Scala/Ramanujan-primes-twins
@@ -0,0 +1 @@
+../../Task/Ramanujan-primes-twins/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Ramer-Douglas-Peucker-line-simplification b/Lang/Scala/Ramer-Douglas-Peucker-line-simplification
new file mode 120000
index 0000000000..a357270663
--- /dev/null
+++ b/Lang/Scala/Ramer-Douglas-Peucker-line-simplification
@@ -0,0 +1 @@
+../../Task/Ramer-Douglas-Peucker-line-simplification/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Steffensens-method b/Lang/Scala/Steffensens-method
new file mode 120000
index 0000000000..8bb21e2851
--- /dev/null
+++ b/Lang/Scala/Steffensens-method
@@ -0,0 +1 @@
+../../Task/Steffensens-method/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Strassens-algorithm b/Lang/Scala/Strassens-algorithm
new file mode 120000
index 0000000000..075bfeb837
--- /dev/null
+++ b/Lang/Scala/Strassens-algorithm
@@ -0,0 +1 @@
+../../Task/Strassens-algorithm/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Sum-of-elements-below-main-diagonal-of-matrix b/Lang/Scala/Sum-of-elements-below-main-diagonal-of-matrix
new file mode 120000
index 0000000000..b5a437f612
--- /dev/null
+++ b/Lang/Scala/Sum-of-elements-below-main-diagonal-of-matrix
@@ -0,0 +1 @@
+../../Task/Sum-of-elements-below-main-diagonal-of-matrix/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Tau-function b/Lang/Scala/Tau-function
new file mode 120000
index 0000000000..15084d09c1
--- /dev/null
+++ b/Lang/Scala/Tau-function
@@ -0,0 +1 @@
+../../Task/Tau-function/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Yellowstone-sequence b/Lang/Scala/Yellowstone-sequence
new file mode 120000
index 0000000000..2a1f4217a6
--- /dev/null
+++ b/Lang/Scala/Yellowstone-sequence
@@ -0,0 +1 @@
+../../Task/Yellowstone-sequence/Scala
\ No newline at end of file
diff --git a/Lang/Smalltalk/FASTA-format b/Lang/Smalltalk/FASTA-format
new file mode 120000
index 0000000000..083740df9e
--- /dev/null
+++ b/Lang/Smalltalk/FASTA-format
@@ -0,0 +1 @@
+../../Task/FASTA-format/Smalltalk
\ No newline at end of file
diff --git a/Lang/Standard-ML/Evaluate-binomial-coefficients b/Lang/Standard-ML/Evaluate-binomial-coefficients
new file mode 120000
index 0000000000..c57e6c6558
--- /dev/null
+++ b/Lang/Standard-ML/Evaluate-binomial-coefficients
@@ -0,0 +1 @@
+../../Task/Evaluate-binomial-coefficients/Standard-ML
\ No newline at end of file
diff --git a/Lang/Standard-ML/Extreme-floating-point-values b/Lang/Standard-ML/Extreme-floating-point-values
new file mode 120000
index 0000000000..9f4669042a
--- /dev/null
+++ b/Lang/Standard-ML/Extreme-floating-point-values
@@ -0,0 +1 @@
+../../Task/Extreme-floating-point-values/Standard-ML
\ No newline at end of file
diff --git a/Lang/Swift/Abstract-type b/Lang/Swift/Abstract-type
new file mode 120000
index 0000000000..06a9f03e30
--- /dev/null
+++ b/Lang/Swift/Abstract-type
@@ -0,0 +1 @@
+../../Task/Abstract-type/Swift
\ No newline at end of file
diff --git a/Lang/Swift/Append-a-record-to-the-end-of-a-text-file b/Lang/Swift/Append-a-record-to-the-end-of-a-text-file
new file mode 120000
index 0000000000..fd0f9e7cef
--- /dev/null
+++ b/Lang/Swift/Append-a-record-to-the-end-of-a-text-file
@@ -0,0 +1 @@
+../../Task/Append-a-record-to-the-end-of-a-text-file/Swift
\ No newline at end of file
diff --git a/Lang/Swift/Averages-Median b/Lang/Swift/Averages-Median
new file mode 120000
index 0000000000..697fb8b0a6
--- /dev/null
+++ b/Lang/Swift/Averages-Median
@@ -0,0 +1 @@
+../../Task/Averages-Median/Swift
\ No newline at end of file
diff --git a/Lang/Swift/Averages-Pythagorean-means b/Lang/Swift/Averages-Pythagorean-means
new file mode 120000
index 0000000000..028a483c28
--- /dev/null
+++ b/Lang/Swift/Averages-Pythagorean-means
@@ -0,0 +1 @@
+../../Task/Averages-Pythagorean-means/Swift
\ No newline at end of file
diff --git a/Lang/Swift/Base64-decode-data b/Lang/Swift/Base64-decode-data
new file mode 120000
index 0000000000..6d50fcf1a1
--- /dev/null
+++ b/Lang/Swift/Base64-decode-data
@@ -0,0 +1 @@
+../../Task/Base64-decode-data/Swift
\ No newline at end of file
diff --git a/Lang/Swift/Box-the-compass b/Lang/Swift/Box-the-compass
new file mode 120000
index 0000000000..76167bcbd0
--- /dev/null
+++ b/Lang/Swift/Box-the-compass
@@ -0,0 +1 @@
+../../Task/Box-the-compass/Swift
\ No newline at end of file
diff --git a/Lang/Swift/Canonicalize-CIDR b/Lang/Swift/Canonicalize-CIDR
new file mode 120000
index 0000000000..a1566af70e
--- /dev/null
+++ b/Lang/Swift/Canonicalize-CIDR
@@ -0,0 +1 @@
+../../Task/Canonicalize-CIDR/Swift
\ No newline at end of file
diff --git a/Lang/Swift/Check-output-device-is-a-terminal b/Lang/Swift/Check-output-device-is-a-terminal
new file mode 120000
index 0000000000..cd3cd93d22
--- /dev/null
+++ b/Lang/Swift/Check-output-device-is-a-terminal
@@ -0,0 +1 @@
+../../Task/Check-output-device-is-a-terminal/Swift
\ No newline at end of file
diff --git a/Lang/Swift/Jordan-P-lya-numbers b/Lang/Swift/Jordan-P-lya-numbers
new file mode 120000
index 0000000000..df024964bb
--- /dev/null
+++ b/Lang/Swift/Jordan-P-lya-numbers
@@ -0,0 +1 @@
+../../Task/Jordan-P-lya-numbers/Swift
\ No newline at end of file
diff --git a/Lang/Swift/Soloways-recurring-rainfall b/Lang/Swift/Soloways-recurring-rainfall
new file mode 120000
index 0000000000..992f203897
--- /dev/null
+++ b/Lang/Swift/Soloways-recurring-rainfall
@@ -0,0 +1 @@
+../../Task/Soloways-recurring-rainfall/Swift
\ No newline at end of file
diff --git a/Lang/Swift/XML-Input b/Lang/Swift/XML-Input
new file mode 120000
index 0000000000..d7c748b445
--- /dev/null
+++ b/Lang/Swift/XML-Input
@@ -0,0 +1 @@
+../../Task/XML-Input/Swift
\ No newline at end of file
diff --git a/Lang/Tcl/Canonicalize-CIDR b/Lang/Tcl/Canonicalize-CIDR
new file mode 120000
index 0000000000..a6d154c647
--- /dev/null
+++ b/Lang/Tcl/Canonicalize-CIDR
@@ -0,0 +1 @@
+../../Task/Canonicalize-CIDR/Tcl
\ No newline at end of file
diff --git a/Lang/Tcl/Damm-algorithm b/Lang/Tcl/Damm-algorithm
new file mode 120000
index 0000000000..cbcece145d
--- /dev/null
+++ b/Lang/Tcl/Damm-algorithm
@@ -0,0 +1 @@
+../../Task/Damm-algorithm/Tcl
\ No newline at end of file
diff --git a/Lang/Tcl/Padovan-sequence b/Lang/Tcl/Padovan-sequence
new file mode 120000
index 0000000000..554876550e
--- /dev/null
+++ b/Lang/Tcl/Padovan-sequence
@@ -0,0 +1 @@
+../../Task/Padovan-sequence/Tcl
\ No newline at end of file
diff --git a/Lang/Tcl/Pseudo-random-numbers-PCG32 b/Lang/Tcl/Pseudo-random-numbers-PCG32
new file mode 120000
index 0000000000..32494389fe
--- /dev/null
+++ b/Lang/Tcl/Pseudo-random-numbers-PCG32
@@ -0,0 +1 @@
+../../Task/Pseudo-random-numbers-PCG32/Tcl
\ No newline at end of file
diff --git a/Lang/UNIX-Shell/Modified-random-distribution b/Lang/UNIX-Shell/Modified-random-distribution
new file mode 120000
index 0000000000..0682164dd7
--- /dev/null
+++ b/Lang/UNIX-Shell/Modified-random-distribution
@@ -0,0 +1 @@
+../../Task/Modified-random-distribution/UNIX-Shell
\ No newline at end of file
diff --git a/Lang/Uiua/00-LANG.txt b/Lang/Uiua/00-LANG.txt
new file mode 100644
index 0000000000..f1b5a27727
--- /dev/null
+++ b/Lang/Uiua/00-LANG.txt
@@ -0,0 +1 @@
+{{stub}}{{language|Uiua}}
\ No newline at end of file
diff --git a/Lang/Uiua/00-META.yaml b/Lang/Uiua/00-META.yaml
new file mode 100644
index 0000000000..beb4610974
--- /dev/null
+++ b/Lang/Uiua/00-META.yaml
@@ -0,0 +1,2 @@
+---
+from: http://rosettacode.org/wiki/Category:Uiua
diff --git a/Lang/Uiua/Euler-method b/Lang/Uiua/Euler-method
new file mode 120000
index 0000000000..7b2e3712d9
--- /dev/null
+++ b/Lang/Uiua/Euler-method
@@ -0,0 +1 @@
+../../Task/Euler-method/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Stack b/Lang/Uiua/Stack
new file mode 120000
index 0000000000..0f1554438f
--- /dev/null
+++ b/Lang/Uiua/Stack
@@ -0,0 +1 @@
+../../Task/Stack/Uiua
\ No newline at end of file
diff --git a/Lang/Uxntal/00-LANG.txt b/Lang/Uxntal/00-LANG.txt
index 362eb3d215..d0204e9b73 100644
--- a/Lang/Uxntal/00-LANG.txt
+++ b/Lang/Uxntal/00-LANG.txt
@@ -8,13 +8,13 @@ The Uxn VM relies on stacks for managing data and control flow. There are two st
For I/O, Uxn features two instructions DEO and DEI, which are used to access a separate block of 256 8-bit registers, split into 16 devices of 16 ports each. The Varvara specification defines a standard set of computing devices, including keyboard, mouse, and controller input, and video + audio outputs.
-The 256 opcodes are divided into 8 special instructions, and 31 regular instructions with 3 flags each. The special instructions, which do not accept flags are: BRK (break), JCI, JMI, JSI, (immediate jumps), LIT, LIT2, LITr, LIT2r (integer literals). The flags on the regular instructions are: 2 (short mode), r (use return stack), and k (keep operands). The main instructions include general stack operations, load and store operations, arithmetic operations, and jumps, as well as the two I/O instructions mentioned above.
+The 256 opcodes are divided into 8 special instructions, and 31 regular instructions with 3 flags each. The special instructions, which can't take additional flags are: BRK (break), JCI, JMI, JSI, (immediate jumps), LIT, LIT2, LITr, LIT2r (integer literals). The flags on the regular instructions are: 2 (short mode), r (use return stack), and k (keep operands). The main instructions include general stack operations, load and store operations, arithmetic operations, and jumps, as well as the two I/O instructions mentioned above.
== Syntax ==
-Instructions are written in uppercase, followed by any combination of the flags 2kr. Hex values are written with lowercase a-f.
+Instructions are written in uppercase, followed by any combination of the three flags 2kr. Hex values are written with lowercase a-f.
-Code can be placed at specific addresses with the | rune, which is especially important for assembling the reset vector at address 0x100 (|0100). Padding can be inserted with the $ rune.
+Code can be placed at specific addresses with the | rune, which is especially important for assembling the reset vector at address 0x100 (|0100) and for defining devices and zero-page variables. Padding can be inserted with the $ rune.
Labels are created with @ and &. The difference is that @ creates a label with the given name, while & creates a sub-label by prefixing the most recent @label and a slash.
diff --git a/Lang/Uxntal/99-bottles-of-beer b/Lang/Uxntal/99-bottles-of-beer
new file mode 120000
index 0000000000..89fe8eecd6
--- /dev/null
+++ b/Lang/Uxntal/99-bottles-of-beer
@@ -0,0 +1 @@
+../../Task/99-bottles-of-beer/Uxntal
\ No newline at end of file
diff --git a/Lang/Uxntal/Bitwise-operations b/Lang/Uxntal/Bitwise-operations
new file mode 120000
index 0000000000..41621bed6f
--- /dev/null
+++ b/Lang/Uxntal/Bitwise-operations
@@ -0,0 +1 @@
+../../Task/Bitwise-operations/Uxntal
\ No newline at end of file
diff --git a/Lang/Uxntal/Loops-Infinite b/Lang/Uxntal/Loops-Infinite
new file mode 120000
index 0000000000..d61da1ed4f
--- /dev/null
+++ b/Lang/Uxntal/Loops-Infinite
@@ -0,0 +1 @@
+../../Task/Loops-Infinite/Uxntal
\ No newline at end of file
diff --git a/Lang/Uxntal/Sierpinski-triangle b/Lang/Uxntal/Sierpinski-triangle
new file mode 120000
index 0000000000..0c0c7f90eb
--- /dev/null
+++ b/Lang/Uxntal/Sierpinski-triangle
@@ -0,0 +1 @@
+../../Task/Sierpinski-triangle/Uxntal
\ No newline at end of file
diff --git a/Lang/Uxntal/Towers-of-Hanoi b/Lang/Uxntal/Towers-of-Hanoi
new file mode 120000
index 0000000000..8aab4983ec
--- /dev/null
+++ b/Lang/Uxntal/Towers-of-Hanoi
@@ -0,0 +1 @@
+../../Task/Towers-of-Hanoi/Uxntal
\ No newline at end of file
diff --git a/Lang/Wren/00-LANG.txt b/Lang/Wren/00-LANG.txt
index bea562a4e3..1dbc2e611b 100644
--- a/Lang/Wren/00-LANG.txt
+++ b/Lang/Wren/00-LANG.txt
@@ -15,8 +15,6 @@ It is under development on [https://github.com/wren-lang/wren GitHub] and is ful
The CLI tool (Wren CLI) has its own repository and is the main focus of examples written for RC.
The latest version 0.4.0 is available as a pre-built standalone executable for 64-bit Linux, MacOS and Windows and can be downloaded from [https://github.com/wren-lang/wren-cli/releases here].
-Following the migration to Miraheze and then WikiTide, RC now uses Pygments (rather than GeSHi) for syntax highlighting and I have written a lexer for Wren which can now be specified instead of 'ecmascipt' which was used previously. The latter was only supported by virtue of a GeSHi mapping to the 'javascript' lexer but it appears that this mapping no longer works and so all tasks/modules will need to be updated to use the 'wren' lexer in due course.
-
As a language mainly designed for embedding, Wren's standard library is (of necessity) quite small and I have therefore decided to create some additional modules to assist with writing Rosetta Code tasks so the same code does not have to be written or copy/pasted time and time again thereby bloating a task's script code unnecessarily. The ones written so far are listed below:
{| class="wikitable"
@@ -71,7 +69,7 @@ As a language mainly designed for embedding, Wren's standard library is (of nece
To use a class or classes from a module (say ''fmt''), you need to import them into your script with Wren code such as the following. To use more than one class separate their names with commas:
-import "./fmt" for Conv, Fmt
+import "./fmt" for Conv, Fmt
These modules are subject to the same license as any other code submitted to Rosetta Code though contributors' user pages should be checked to see whether more permissive terms are available. If anyone wishes to add further modules, please do so using a similar model and append them to the list.
diff --git a/Lang/XPL0/24-game b/Lang/XPL0/24-game
new file mode 120000
index 0000000000..90030b857d
--- /dev/null
+++ b/Lang/XPL0/24-game
@@ -0,0 +1 @@
+../../Task/24-game/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Arithmetic-derivative b/Lang/XPL0/Arithmetic-derivative
new file mode 120000
index 0000000000..5115ecc5f7
--- /dev/null
+++ b/Lang/XPL0/Arithmetic-derivative
@@ -0,0 +1 @@
+../../Task/Arithmetic-derivative/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Get-system-command-output b/Lang/XPL0/Get-system-command-output
new file mode 120000
index 0000000000..260a4a7590
--- /dev/null
+++ b/Lang/XPL0/Get-system-command-output
@@ -0,0 +1 @@
+../../Task/Get-system-command-output/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Hash-from-two-arrays b/Lang/XPL0/Hash-from-two-arrays
new file mode 120000
index 0000000000..13d72870ed
--- /dev/null
+++ b/Lang/XPL0/Hash-from-two-arrays
@@ -0,0 +1 @@
+../../Task/Hash-from-two-arrays/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Hofstadter-Conway-$10-000-sequence b/Lang/XPL0/Hofstadter-Conway-$10-000-sequence
new file mode 120000
index 0000000000..c4c0f0e659
--- /dev/null
+++ b/Lang/XPL0/Hofstadter-Conway-$10-000-sequence
@@ -0,0 +1 @@
+../../Task/Hofstadter-Conway-$10-000-sequence/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Particle-fountain b/Lang/XPL0/Particle-fountain
new file mode 120000
index 0000000000..d512597b55
--- /dev/null
+++ b/Lang/XPL0/Particle-fountain
@@ -0,0 +1 @@
+../../Task/Particle-fountain/XPL0
\ No newline at end of file
diff --git a/Lang/YAMLScript/00-LANG.txt b/Lang/YAMLScript/00-LANG.txt
index 53857113ac..2b465e9da2 100644
--- a/Lang/YAMLScript/00-LANG.txt
+++ b/Lang/YAMLScript/00-LANG.txt
@@ -4,19 +4,33 @@
{{language programming paradigm|hosted}}
{{implementation|Lisp}}
-'''YAMLScript''' a hosted '''Lisp''' like '''Clojure''' (Java/JVM) and '''ClojureScript''' (JavaScript).
-Actually it is simply an alternate syntax reader for Clojure and Lingy.
-'''Lingy''' is a port of Clojure to various programming languages including Perl.
+'''YAMLScript''' is a new programming language that uses [https://yaml.org/ YAML] as its syntax. It is a complete, functional, general purpose language, but can also be easily embedded in YAML files to make them dynamic at load time. Most existing YAML files and all JSON files are already valid YAMLScript programs. YAMLScript has a compiler/interpreter CLI program called ys and is also available in several programming languages as a binding module to the libyamlscript.so shared library:
-YAMLScript offers all the power of Lisp but with a various syntax features that strive to make it more readable than encoding everything as nested s-expression forms.
+* [https://metacpan.org/pod/YAMLScript Perl]
+* [https://pypi.org/project/yamlscript/ Python]
+* [https://raku.land/zef:ingy/YAMLScript Raku]
+* [https://rubygems.org/gems/yamlscript Ruby]
+* [https://crates.io/crates/yamlscript Rust]
==Installing YAMLScript==
-Run this command to install the 'yamlscript' command line runner program.
+Run this command to install the ys command line YAMLScript runner/loader/compiler program.
- cpanm YAML
+ curl -s https://yamlscript.org/install | PREFIX=$HOME BIN=1 bash
-==See Also==
+That will install $HOME/bin/ys. If $HOME/bin is not in your PATH, run:
-* [https://metacpan.org/pod/YAMLScript YAMLScript Doc]
-* [https://metacpan.org/pod/Lingy Lingy Doc]
\ No newline at end of file
+ export PATH=$HOME/bin:$PATH
+
+Test the new installation:
+ $ ys --help
+ ys - The YAMLScript (YS) Command Line Tool
+
+ Usage: ys [options] [file]
+
+ Options:
+ -r, --run Compile and evaluate a YAMLScript file (default)
+ -l, --load Output the evaluated YAMLScript value
+ -e, --eval YSEXPR Evaluate a YAMLScript expression
+ ...
+See https://yamlscript.org for more information.
\ No newline at end of file
diff --git a/Lang/YAMLScript/Leap-year b/Lang/YAMLScript/Leap-year
new file mode 120000
index 0000000000..47e901f838
--- /dev/null
+++ b/Lang/YAMLScript/Leap-year
@@ -0,0 +1 @@
+../../Task/Leap-year/YAMLScript
\ No newline at end of file
diff --git a/Lang/Yabasic/Sphenic-numbers b/Lang/Yabasic/Sphenic-numbers
new file mode 120000
index 0000000000..ea34dc4862
--- /dev/null
+++ b/Lang/Yabasic/Sphenic-numbers
@@ -0,0 +1 @@
+../../Task/Sphenic-numbers/Yabasic
\ No newline at end of file
diff --git a/Lang/ZX-Spectrum-Basic/Zero-to-the-zero-power b/Lang/ZX-Spectrum-Basic/Zero-to-the-zero-power
new file mode 120000
index 0000000000..8f0b2baaa1
--- /dev/null
+++ b/Lang/ZX-Spectrum-Basic/Zero-to-the-zero-power
@@ -0,0 +1 @@
+../../Task/Zero-to-the-zero-power/ZX-Spectrum-Basic
\ No newline at end of file
diff --git a/Task/100-doors/BabyCobol/100-doors.cobol b/Task/100-doors/BabyCobol/100-doors.cobol
new file mode 100644
index 0000000000..feccf1cab2
--- /dev/null
+++ b/Task/100-doors/BabyCobol/100-doors.cobol
@@ -0,0 +1,29 @@
+ * NB: the implementation is rather vanilla
+ * besides using the idiomatic buffer overrun.
+ * LOOP is what PERFORM in COBOL is, with defaults.
+ * MOVE in this language acts like OVE CORRESPONDING,
+ * which is actually good here.
+ IDENTIFICATION DIVISION.
+ PROGRAM-ID. ONE HUNDRED DOORS.
+ DATA DIVISION.
+ 01 I PICTURE IS 9(3).
+ 01 J LIKE I.
+ 01 DOOR PICTURE IS 9 OCCURS 100 TIMES.
+ 01 STOP LIKE DOOR.
+ PROCEDURE DIVISION.
+ * Initialise the data
+ MOVE HIGH-VALUES TO STOP
+ MOVE SPACES TO DOOR.
+ * Do the main algorithm
+ LOOP VARYING I UNTIL DOOR(I) = 9
+ LOOP VARYING J FROM I TO 100 BY I
+ SUBTRACT DOOR (J) FROM 1 GIVING DOOR (J)
+ END
+ END.
+ * Print the results
+ LOOP VARYING I UNTIL DOOR(I) = 9
+ DISPLAY "Door" I "is" WITH NO ADVANCING
+ IF DOOR (I) = 1
+ THEN DISPLAY "open"
+ ELSE DISPLAY "closed".
+ END.
diff --git a/Task/100-doors/Elena/100-doors.elena b/Task/100-doors/Elena/100-doors.elena
index cbfc05a44f..6e1a619ede 100644
--- a/Task/100-doors/Elena/100-doors.elena
+++ b/Task/100-doors/Elena/100-doors.elena
@@ -4,15 +4,15 @@ import extensions;
public program()
{
var Doors := Array.allocate(100).populate::(n=>false);
- for(int i := 0, i < 100, i := i + 1)
+ for(int i := 0; i < 100; i++)
{
- for(int j := i, j < 100, j := j + i + 1)
+ for(int j := i; j < 100; j := j + i + 1)
{
Doors[j] := Doors[j].Inverted
}
};
- for(int i := 0, i < 100, i := i + 1)
+ for(int i := 0; i < 100; i++)
{
console.printLine("Door #",i + 1," :",Doors[i].iif("Open","Closed"))
};
diff --git a/Task/100-doors/Langur/100-doors-1.langur b/Task/100-doors/Langur/100-doors-1.langur
index 545cca3a47..2ec8f19359 100644
--- a/Task/100-doors/Langur/100-doors-1.langur
+++ b/Task/100-doors/Langur/100-doors-1.langur
@@ -1,4 +1,4 @@
-var .doors = arr 100, false
+var .doors = [false] x 100
for .i of .doors {
for .j = .i; .j <= len(.doors); .j += .i {
diff --git a/Task/100-doors/Refal/100-doors.refal b/Task/100-doors/Refal/100-doors.refal
new file mode 100644
index 0000000000..027ee823a1
--- /dev/null
+++ b/Task/100-doors/Refal/100-doors.refal
@@ -0,0 +1,38 @@
+$ENTRY Go {
+ = >>;
+};
+
+NDoors { = 100; };
+Doors { = Closed>; };
+
+Repeat {
+ 0 s.val = ;
+ s.N s.val = s.val s.val> ;
+};
+
+Toggle {
+ 1 Closed e.rest = Open e.rest;
+ 1 Open e.rest = Closed e.rest;
+ s.N s.door e.rest = s.door e.rest>;
+};
+
+Pass {
+ s.pass s.door e.doors, >: '+'
+ = e.doors;
+ s.pass s.door e.doors
+ = >;
+};
+
+Walk {
+ s.pass e.doors, >: '+'
+ = e.doors;
+ s.pass e.doors
+ = >;
+};
+
+Show {
+ s.N Open e.rest =
+ e.rest>;
+ s.N Closed e.rest = e.rest>;
+ s.N = ;
+};
diff --git a/Task/100-doors/Swift/100-doors-3.swift b/Task/100-doors/Swift/100-doors-3.swift
new file mode 100644
index 0000000000..05cf5c8d51
--- /dev/null
+++ b/Task/100-doors/Swift/100-doors-3.swift
@@ -0,0 +1 @@
+var arr: [Bool] = Array(1...100).map{ remquo(exp(log(Float($0))/2.0),1).0 == 0 }
diff --git a/Task/100-doors/YAMLScript/100-doors.ys b/Task/100-doors/YAMLScript/100-doors.ys
index 6a5a4400bd..d5248aee43 100644
--- a/Task/100-doors/YAMLScript/100-doors.ys
+++ b/Task/100-doors/YAMLScript/100-doors.ys
@@ -1,15 +1,16 @@
!yamlscript/v0
defn main():
- say:
- "Open doors after 100 passes:
- $(apply str interpose(\", \" open-doors()))"
+ say: |-
+ Open doors after 100 passes:
+ $(apply str interpose(', ' open-doors()))
defn open-doors():
- for: .[[d n] map(vector doors() iterate(inc 1)) :when d] n
+ for [[d n] map(vector doors() iterate(inc 1)) :when d]:
+ n
defn doors():
reduce:
- fn [doors idx]: assoc(doors idx true)
+ fn(doors idx): assoc(doors idx true)
into []: repeat(100 false)
- map \(dec (% * %)): (1 .. 10)
+ map \(dec (%1 * %1)): 1 .. 10
diff --git a/Task/100-prisoners/EasyLang/100-prisoners.easy b/Task/100-prisoners/EasyLang/100-prisoners.easy
index 3435445f04..6bdc815b68 100644
--- a/Task/100-prisoners/EasyLang/100-prisoners.easy
+++ b/Task/100-prisoners/EasyLang/100-prisoners.easy
@@ -4,7 +4,7 @@ for i = 1 to 100
.
subr shuffle_drawer
for i = len drawer[] downto 2
- r = random i
+ r = randint i
swap drawer[r] drawer[i]
.
.
@@ -13,7 +13,7 @@ subr play_random
for prisoner = 1 to 100
found = 0
for i = 1 to 50
- r = random (100 - i)
+ r = randint (100 - i)
card = drawer[sampler[r]]
swap sampler[r] sampler[100 - i - 1]
if card = prisoner
diff --git a/Task/15-puzzle-game/EasyLang/15-puzzle-game.easy b/Task/15-puzzle-game/EasyLang/15-puzzle-game.easy
index 56d3e27935..e10e23f2a7 100644
--- a/Task/15-puzzle-game/EasyLang/15-puzzle-game.easy
+++ b/Task/15-puzzle-game/EasyLang/15-puzzle-game.easy
@@ -44,7 +44,7 @@ proc init . .
.
# shuffle
for i = 15 downto 2
- r = random i
+ r = randint i
swap f[r] f[i]
.
# make it solvable
diff --git a/Task/15-puzzle-game/Ring/15-puzzle-game.ring b/Task/15-puzzle-game/Ring/15-puzzle-game-1.ring
similarity index 100%
rename from Task/15-puzzle-game/Ring/15-puzzle-game.ring
rename to Task/15-puzzle-game/Ring/15-puzzle-game-1.ring
diff --git a/Task/15-puzzle-game/Ring/15-puzzle-game-2.ring b/Task/15-puzzle-game/Ring/15-puzzle-game-2.ring
new file mode 100644
index 0000000000..7db11feee3
--- /dev/null
+++ b/Task/15-puzzle-game/Ring/15-puzzle-game-2.ring
@@ -0,0 +1,452 @@
+/*
+**
+** Game : CalmoSoft Fifteen Puzzle Game 3D
+** Date : 2017/09/01
+** Author : CalmoSoft , Mahmoud Fayed
+**
+*/
+
+# Load Libraries
+load "gamelib.ring" # RingAllegro Library
+load "opengl21lib.ring" # RingOpenGL Library
+
+butSize = 3
+texture = list(9)
+cube = list(9)
+rnd = list(9)
+rndok = 0
+
+for n=1 to 9
+ rnd[n] = 0
+next
+
+for n=1 to 9
+ while true
+ rndok = 0
+ ran = random(8) + 1
+ for nr=1 to 9
+ if rnd[nr] = ran
+ rndok = 1
+ ok
+ next
+ if rndok = 0
+ rnd[n] = ran
+ exit
+ ok
+ end
+next
+
+for n=1 to 9
+ if rnd[n] = 9
+ empty = n
+ ok
+next
+
+#==============================================================
+# To Support MacOS X
+ al_run_main()
+ func al_game_start # Called by al_run_main()
+ main() # Now we call our main function
+#==============================================================
+
+func main
+ new TicTacToe3D {
+ start()
+ }
+
+class TicTacToe3D from GameLogic
+
+ FPS = 60
+ TITLE = "CalmoSoft Fifteen Puzzle Game 3D"
+
+ oBackground = new GameBackground
+ oGameSound = new GameSound
+ oGameCube = new GameCube
+ oGameInterface = new GameInterface
+
+ func loadresources
+ oGameSound.loadresources()
+ oBackGround.loadresources()
+ oGameCube.loadresources()
+
+ func drawScene
+ oBackground.update()
+ oGameInterface.update(self)
+
+ func MouseClickEvent
+ oGameInterface.MouseClickEvent(self)
+
+class GameInterface
+
+ func Update oGame
+ prepare()
+ cubes(oGame)
+
+ func Prepare
+ w = 1024 h = 768
+ ratio = w / h
+ glViewport(0, 0, w, h)
+ glMatrixMode(GL_PROJECTION)
+ glLoadIdentity()
+ gluPerspective(-120,ratio,1,120)
+ glMatrixMode(GL_MODELVIEW)
+ glLoadIdentity()
+ glEnable(GL_TEXTURE_2D)
+ glShadeModel(GL_SMOOTH)
+ glClearColor(0.0, 0.0, 0.0, 0.5)
+ glClearDepth(1.0)
+ glEnable(GL_DEPTH_TEST)
+ glEnable(GL_CULL_FACE)
+ glDepthFunc(GL_LEQUAL)
+ glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST)
+
+ func Cubes oGame
+ oGame.oGameCube {
+ aGameMap = oGame.aGameMap
+ cube[1] = cube( 5 , -3 , -5 , texture[rnd[1]] )
+ cube[2] = cube( 0 , -3 , -5 , texture[rnd[2]] )
+ cube[3] = cube( -5 , -3 , -5 , texture[rnd[3]] )
+ cube[4] = cube( 5 , 1 , -5 , texture[rnd[4]] )
+ cube[5] = cube( 0 , 1 , -5 , texture[rnd[5]] )
+ cube[6] = cube( -5 , 1 , -5 , texture[rnd[6]] )
+ cube[7] = cube( 5 , 5 , -5 , texture[rnd[7]] )
+ cube[8] = cube( 0 , 5 , -5 , texture[rnd[8]] )
+ cube[9] = cube( -5 , 5 , -5 , texture[rnd[9]] )
+ rotate()
+ }
+
+ func MouseClickEvent oGame
+ oGame {
+ aBtn = Point2Button(Mouse_X,Mouse_Y)
+ move = 0
+ nRow = aBtn[1]
+ nCol = aBtn[2]
+ tile = (nRow-1)*3 + nCol
+ up = (empty = (tile - butSize))
+ down = (empty = (tile + butSize))
+ left = ((empty = (tile- 1)) and ((tile % butSize) != 1))
+ right = ((empty = (tile + 1)) and ((tile % butSize) != 0))
+ move = up or down or left or right
+ if move = 1
+ temp = rnd[empty]
+ rnd[empty] = rnd[tile]
+ rnd[tile] = temp
+ empty = tile
+ oGame.oGameCube {
+ aGameMap = oGame.aGameMap
+ cube[1] = cube( 5 , -3 , -5 , texture[rnd[1]] )
+ cube[2] = cube( 0 , -3 , -5 , texture[rnd[2]] )
+ cube[3] = cube( -5 , -3 , -5 , texture[rnd[3]] )
+ cube[4] = cube( 5 , 1 , -5 , texture[rnd[4]] )
+ cube[5] = cube( 0 , 1 , -5 , texture[rnd[5]] )
+ cube[6] = cube( -5 , 1 , -5 , texture[rnd[6]] )
+ cube[7] = cube( 5 , 5 , -5 , texture[rnd[7]] )
+ cube[8] = cube( 0 , 5 , -5 , texture[rnd[8]] )
+ cube[9] = cube( -5 , 5 , -5 , texture[rnd[9]] )
+ rotate()
+ }
+ ok
+ }
+
+Class GameLogic from GraphicsAppBase
+
+ aGameMap = [
+ [ :n , :n , :n ] ,
+ [ :n , :n , :n ] ,
+ [ :n , :n , :n ]
+ ]
+
+ aGameButtons = [ # x1,y1,x2,y2
+ [176,88,375,261], # [1,1]
+ [423,88,591,261], # [1,2]
+ [645,88,876,261], # [1,3]
+ [176,282,375,428], # [2,1]
+ [423,282,591,428], # [2,2]
+ [645,282,876,428], # [2,3]
+ [176,454,375,678], # [3,1]
+ [423,454,591,678], # [3,2]
+ [645,454,876,678] # [3,3]
+ ]
+
+ cActivePlayer = :x
+
+ func point2button x,y
+ nRow = 0
+ nCol = 0
+ for t = 1 to len(aGameButtons)
+ rect = aGameButtons[t]
+ if x >= rect[1] and x <= rect[3] and
+ y >= rect[2] and y <= rect[4]
+ switch t
+ on 1 nRow = 1 nCol = 1
+ on 2 nRow = 1 nCol = 2
+ on 3 nRow = 1 nCol = 3
+ on 4 nRow = 2 nCol = 1
+ on 5 nRow = 2 nCol = 2
+ on 6 nRow = 2 nCol = 3
+ on 7 nRow = 3 nCol = 1
+ on 8 nRow = 3 nCol = 2
+ on 9 nRow = 3 nCol = 3
+ off
+ exit
+ ok
+ next
+ return [nRow,nCol]
+
+class GameCube
+
+ bitmap bitmap2 bitmap3
+ textureX textureO textureN
+
+ xrot = 0.0
+ yrot = 0.0
+ zrot = 0.0
+
+ func loadresources
+ bitmp1 = al_load_bitmap("image/n1.jpg")
+ texture[1] = al_get_opengl_texture(bitmp1)
+ bitmp2 = al_load_bitmap("image/n2.jpg")
+ texture[2] = al_get_opengl_texture(bitmp2)
+ bitmp3 = al_load_bitmap("image/n3.jpg")
+ texture[3] = al_get_opengl_texture(bitmp3)
+ bitmp4 = al_load_bitmap("image/n4.jpg")
+ texture[4] = al_get_opengl_texture(bitmp4)
+ bitmp5 = al_load_bitmap("image/n5.jpg")
+ texture[5] = al_get_opengl_texture(bitmp5)
+ bitmp6 = al_load_bitmap("image/n6.jpg")
+ texture[6] = al_get_opengl_texture(bitmp6)
+ bitmp7 = al_load_bitmap("image/n7.jpg")
+ texture[7] = al_get_opengl_texture(bitmp7)
+ bitmp8 = al_load_bitmap("image/n8.jpg")
+ texture[8] = al_get_opengl_texture(bitmp8)
+ bitmp9 = al_load_bitmap("image/empty.png")
+ texture[9] = al_get_opengl_texture(bitmp9)
+
+ func cube(x,y,z,nTexture)
+ glLoadIdentity()
+ glTranslatef(x,y,z)
+ glRotatef(xrot,1.0,0.0,0.0)
+ glRotatef(yrot,0.0,1.0,0.0)
+ glRotatef(zrot,0.0,0.0,1.0)
+ setCubeTexture(nTexture)
+ drawCube()
+
+ func setCubeTexture cTexture
+ glBindTexture(GL_TEXTURE_2D, cTexture)
+
+ func Rotate
+ xrot += 0.3 * 5
+ yrot += 0.2 * 5
+ zrot += 0.4 * 5
+
+ func drawcube
+ glBegin(GL_QUADS)
+ // Front Face
+ glTexCoord2f(0.0, 0.0) glVertex3f(-1.0, -1.0, 1.0)
+ glTexCoord2f(1.0, 0.0) glVertex3f( 1.0, -1.0, 1.0)
+ glTexCoord2f(1.0, 1.0) glVertex3f( 1.0, 1.0, 1.0)
+ glTexCoord2f(0.0, 1.0) glVertex3f(-1.0, 1.0, 1.0)
+ // Back Face
+ glTexCoord2f(1.0, 0.0) glVertex3f(-1.0, -1.0, -1.0)
+ glTexCoord2f(1.0, 1.0) glVertex3f(-1.0, 1.0, -1.0)
+ glTexCoord2f(0.0, 1.0) glVertex3f( 1.0, 1.0, -1.0)
+ glTexCoord2f(0.0, 0.0) glVertex3f( 1.0, -1.0, -1.0)
+ // Top Face
+ glTexCoord2f(0.0, 1.0) glVertex3f(-1.0, 1.0, -1.0)
+ glTexCoord2f(0.0, 0.0) glVertex3f(-1.0, 1.0, 1.0)
+ glTexCoord2f(1.0, 0.0) glVertex3f( 1.0, 1.0, 1.0)
+ glTexCoord2f(1.0, 1.0) glVertex3f( 1.0, 1.0, -1.0)
+ // Bottom Face
+ glTexCoord2f(1.0, 1.0) glVertex3f(-1.0, -1.0, -1.0)
+ glTexCoord2f(0.0, 1.0) glVertex3f( 1.0, -1.0, -1.0)
+ glTexCoord2f(0.0, 0.0) glVertex3f( 1.0, -1.0, 1.0)
+ glTexCoord2f(1.0, 0.0) glVertex3f(-1.0, -1.0, 1.0)
+
+ // Right face
+ glTexCoord2f(1.0, 0.0) glVertex3f( 1.0, -1.0, -1.0)
+ glTexCoord2f(1.0, 1.0) glVertex3f( 1.0, 1.0, -1.0)
+ glTexCoord2f(0.0, 1.0) glVertex3f( 1.0, 1.0, 1.0)
+ glTexCoord2f(0.0, 0.0) glVertex3f( 1.0, -1.0, 1.0)
+
+ // Left Face
+ glTexCoord2f(0.0, 0.0) glVertex3f(-1.0, -1.0, -1.0)
+ glTexCoord2f(1.0, 0.0) glVertex3f(-1.0, -1.0, 1.0)
+ glTexCoord2f(1.0, 1.0) glVertex3f(-1.0, 1.0, 1.0)
+ glTexCoord2f(0.0, 1.0) glVertex3f(-1.0, 1.0, -1.0)
+ glEnd()
+
+
+class GameBackground
+
+ nBackX = 0
+ nBackY = 0
+ nBackDiffx = -1
+ nBackDiffy = -1
+ nBackMotion = 1
+ aBackMotionList = [
+ [ -1, -1 ] , # Down - Right
+ [ 0 , 1 ] , # Up
+ [ -1, -1 ] , # Down - Right
+ [ 0 , 1 ] , # Up
+ [ 1 , -1 ] , # Down - Left
+ [ 0 , 1 ] , # Up
+ [ 1 , -1 ] , # Down - Left
+ [ 0 , 1 ] # Up
+ ]
+
+ bitmap
+
+ func Update
+ draw()
+ motion()
+
+ func draw
+ al_draw_bitmap(bitmap,nBackX,nBackY,1)
+
+ func motion
+ nBackX += nBackDiffx
+ nBackY += nBackDiffy
+ if (nBackY = -350) or (nBackY = 0)
+ nBackMotion++
+ if nBackMotion > len(aBackMotionList)
+ nBackMotion = 1
+ ok
+ nBackDiffx = aBackMotionList[nBackMotion][1]
+ nBackDiffy = aBackMotionList[nBackMotion][2]
+ ok
+
+ func loadResources
+ bitmap = al_load_bitmap("image/back.jpg")
+
+class GameSound
+
+ sample sampleid
+
+ func loadresources
+ sample = al_load_sample( "sound/music1.wav" )
+ sampleid = al_new_allegro_sample_id()
+ al_play_sample(sample, 1.0, 0.0,1.0,ALLEGRO_PLAYMODE_LOOP,sampleid)
+
+class GraphicsAppBase
+
+ display event_queue ev timeout
+ timer
+ redraw = true
+ FPS = 60
+ SCREEN_W = 1024
+ SCREEN_H = 700
+ KEY_UP = 1
+ KEY_DOWN = 2
+ KEY_LEFT = 3
+ KEY_RIGHT = 4
+ Key = [false,false,false,false]
+ Mouse_X = 0
+ Mouse_Y = 0
+ TITLE = "Graphics Application"
+ PRINT_MOUSE_XY = False
+
+ func start
+ SetUp()
+ loadResources()
+ eventsLoop()
+ destroy()
+
+ func setup
+ al_init()
+ al_init_font_addon()
+ al_init_ttf_addon()
+ al_init_image_addon()
+ al_install_audio()
+ al_init_acodec_addon()
+ al_reserve_samples(1)
+ al_set_new_display_flags(ALLEGRO_OPENGL)
+ display = al_create_display(SCREEN_W,SCREEN_H)
+ al_set_window_title(display,TITLE)
+ al_clear_to_color(al_map_rgb(0,0,0))
+ event_queue = al_create_event_queue()
+ al_register_event_source(event_queue,
+ al_get_display_event_source(display))
+ ev = al_new_allegro_event()
+ timeout = al_new_allegro_timeout()
+ al_init_timeout(timeout, 0.06)
+ timer = al_create_timer(1.0 / FPS)
+ al_register_event_source(event_queue,
+ al_get_timer_event_source(timer))
+ al_start_timer(timer)
+ al_install_mouse()
+ al_register_event_source(event_queue,
+ al_get_mouse_event_source())
+ al_install_keyboard()
+ al_register_event_source(event_queue,
+ al_get_keyboard_event_source())
+
+ func eventsLoop
+ while true
+ al_wait_for_event_until(event_queue, ev, timeout)
+ switch al_get_allegro_event_type(ev)
+ on ALLEGRO_EVENT_DISPLAY_CLOSE
+ CloseEvent()
+ on ALLEGRO_EVENT_TIMER
+ redraw = true
+ on ALLEGRO_EVENT_MOUSE_AXES
+ mouse_x = al_get_allegro_event_mouse_x(ev)
+ mouse_y = al_get_allegro_event_mouse_y(ev)
+ if PRINT_MOUSE_XY
+ see "x = " + mouse_x + nl
+ see "y = " + mouse_y + nl
+ ok
+ on ALLEGRO_EVENT_MOUSE_ENTER_DISPLAY
+ mouse_x = al_get_allegro_event_mouse_x(ev)
+ mouse_y = al_get_allegro_event_mouse_y(ev)
+ on ALLEGRO_EVENT_MOUSE_BUTTON_UP
+ MouseClickEvent()
+ on ALLEGRO_EVENT_KEY_DOWN
+ switch al_get_allegro_event_keyboard_keycode(ev)
+ on ALLEGRO_KEY_UP
+ key[KEY_UP] = true
+ on ALLEGRO_KEY_DOWN
+ key[KEY_DOWN] = true
+ on ALLEGRO_KEY_LEFT
+ key[KEY_LEFT] = true
+ on ALLEGRO_KEY_RIGHT
+ key[KEY_RIGHT] = true
+ off
+ on ALLEGRO_EVENT_KEY_UP
+ switch al_get_allegro_event_keyboard_keycode(ev)
+ on ALLEGRO_KEY_UP
+ key[KEY_UP] = false
+ on ALLEGRO_KEY_DOWN
+ key[KEY_DOWN] = false
+ on ALLEGRO_KEY_LEFT
+ key[KEY_LEFT] = false
+ on ALLEGRO_KEY_RIGHT
+ key[KEY_RIGHT] = false
+ on ALLEGRO_KEY_ESCAPE
+ exit
+ off
+ off
+ if redraw and al_is_event_queue_empty(event_queue)
+ redraw = false
+ drawScene()
+ al_flip_display()
+ ok
+ callgc()
+ end
+
+ func destroy
+ al_destroy_timer(timer)
+ al_destroy_allegro_event(ev)
+ al_destroy_allegro_timeout(timeout)
+ al_destroy_event_queue(event_queue)
+ al_destroy_display(display)
+ al_exit()
+
+ func loadresources
+
+ func drawScene
+
+ func MouseClickEvent
+ exit # Exit from the Events Loop
+
+ func CloseEvent
+ exit # Exit from the Events Loop
diff --git a/Task/21-game/EasyLang/21-game.easy b/Task/21-game/EasyLang/21-game.easy
index bcbd765121..1ed700b063 100644
--- a/Task/21-game/EasyLang/21-game.easy
+++ b/Task/21-game/EasyLang/21-game.easy
@@ -17,7 +17,7 @@ repeat
else
sleep 1
if sum mod 4 = 1
- n = random 3
+ n = randint 3
else
n = 4 - (sum + 3) mod 4
.
diff --git a/Task/21-game/Forth/21-game.fth b/Task/21-game/Forth/21-game.fth
new file mode 100644
index 0000000000..3090fa4563
--- /dev/null
+++ b/Task/21-game/Forth/21-game.fth
@@ -0,0 +1,32 @@
+: READKEY
+ 1+ BEGIN
+ KEY DUP 27 = ABORT" Bye!"
+ 48 - 2DUP > OVER 0 > AND IF
+ DUP 48 + EMIT CR SWAP DROP EXIT
+ THEN DROP
+ REPEAT
+;
+: 21GAME CLS
+ 0 2 RND 1-
+ ." 21 is a two player game." CR
+ ." The game is played by choosing a number (1, 2 or 3) to be added to the running total. "
+ ." The game is won by the player whose chosen number causes the running total to reach exactly 21."
+ ." The running total starts at zero. One player will be the computer."
+ BEGIN
+ NOT
+ CR ." The sum is " OVER . CR
+ SWAP OVER IF
+ ." How many would you like add?"
+ ." (1-3) " 3 READKEY
+ ELSE
+ ." It is the computer's turn."
+ 4 OVER 1- 4 MOD -
+ DUP 4 = IF 3 RND 1+ MIN THEN
+ DUP CR ." Computer adds " . CR
+ THEN + SWAP
+ OVER 21 < NOT UNTIL
+ CR
+ IF ." Congratulations. You win."
+ ELSE ." Bad Luck. Computer wins."
+ THEN CR DROP
+;
diff --git a/Task/21-game/IS-BASIC/21-game.basic b/Task/21-game/IS-BASIC/21-game.basic
index d61a3efeb8..edb55d5d3c 100644
--- a/Task/21-game/IS-BASIC/21-game.basic
+++ b/Task/21-game/IS-BASIC/21-game.basic
@@ -1,25 +1,25 @@
100 PROGRAM "21Game.bas"
110 RANDOMIZE
120 LET SUM,ADD=0
-130 LET TURN=RND(2)
+130 LET TURN=RND(2)-1
140 CLEAR SCREEN
150 PRINT "21 is a two player game, the game is played by choosing a number (1, 2, or 3) to be added to the running total. The game is won by the player whose chosen number causes the running total to reach exactly 21."
160 PRINT "The running total starts at zero. One player will be the computer.":PRINT
170 DO
-180 LET TURN=1-TURN
+180 LET TURN=NOT TURN
190 SET #102:INK 3:PRINT "The sum is";SUM:SET #102:INK 1
-200 IF TURN=1 THEN
+200 IF TURN THEN
210 PRINT "It is your turn.":PRINT "How many would you like to add? (1-3): ";
220 LET ADD=READKEY
230 IF ADD>21-SUM THEN PRINT "You can only add";21-SUM
240 ELSE
-250 LET ADD=4-MOD((SUM-1),4)
-260 IF ADD=4 THEN LET ADD=MIN(RND(3)+1,SUM)
+250 LET ADD=4-MOD(SUM-1,4)
+260 IF ADD=4 THEN LET ADD=RND(3)+1
270 PRINT "It is the computer's turn.":PRINT "The computer adds";ADD
280 END IF
290 PRINT :LET SUM=SUM+ADD
300 LOOP WHILE SUM<21
-310 IF TURN=1 THEN
+310 IF TURN THEN
320 PRINT "Congratulations. You win."
330 ELSE
340 PRINT "Bad luck. The computer wins."
diff --git a/Task/24-game/XPL0/24-game.xpl0 b/Task/24-game/XPL0/24-game.xpl0
new file mode 100644
index 0000000000..f2a6bae263
--- /dev/null
+++ b/Task/24-game/XPL0/24-game.xpl0
@@ -0,0 +1,42 @@
+real Stack(10), A, B;
+int SP, I, Char, Digit, Digits(10);
+
+proc Push(X);
+real X;
+[Stack(SP):= X; SP:= SP+1];
+
+func real Pop;
+[SP:= SP-1; return Stack(SP)];
+
+[SP:= 0;
+for I:= 0 to 9 do Digits(I):= 0;
+Text(0, "Enter an RPN expression that equals 24 using all these digits:");
+for I:= 0 to 3 do
+ [Digit:= Ran(9)+1;
+ ChOut(0, ^ ); ChOut(0, Digit+^0);
+ Digits(Digit):= Digits(Digit)+1;
+ ];
+Text(0, "^m^j> ");
+loop [Char:= ChIn(1);
+ ChOut(0, Char);
+ if Char >= ^1 and Char <=^9 then
+ [Digit:= Char - ^0;
+ Push(float(Digit));
+ Digits(Digit):= Digits(Digit) - 1;
+ ]
+ else [if SP >= 2 then [A:= Pop; B:= Pop] else quit;
+ case Char of
+ ^+: Push(B+A);
+ ^-: Push(B-A);
+ ^*: Push(B*A);
+ ^/: Push(B/A)
+ other quit;
+ ];
+ ];
+CrLf(0);
+for I:= 0 to 9 do
+ if Digits(I) # 0 then
+ [Text(0, "Must use each of the given digits.^m^j"); exit];
+Text(0, if abs(Pop-24.0) < 0.001 then "Correct!" else "Wrong.");
+CrLf(0);
+]
diff --git a/Task/9-billion-names-of-God-the-integer/R/9-billion-names-of-god-the-integer.r b/Task/9-billion-names-of-God-the-integer/R/9-billion-names-of-god-the-integer.r
new file mode 100644
index 0000000000..70d49d803a
--- /dev/null
+++ b/Task/9-billion-names-of-God-the-integer/R/9-billion-names-of-god-the-integer.r
@@ -0,0 +1,10 @@
+library(partitions)
+library(stringi)
+
+get_row <- function(x) unname(table(parts(x)[1,]))
+
+center_string <- function(s,pad_len=80) stri_pad_both(s,(pad_len - length(s))," ")
+
+for (i in 1:25) cat(center_string(stri_c(get_row(i),collapse = " "),80),"\n")
+
+cat("The sum of G(25) is:", sum(get_row(25)),"\n")
diff --git a/Task/99-bottles-of-beer/BabyCobol/99-bottles-of-beer.cobol b/Task/99-bottles-of-beer/BabyCobol/99-bottles-of-beer.cobol
new file mode 100644
index 0000000000..08569d309c
--- /dev/null
+++ b/Task/99-bottles-of-beer/BabyCobol/99-bottles-of-beer.cobol
@@ -0,0 +1,38 @@
+ * Pointing out some interesting things:
+ * - BY 0 subclause of VARYING (illegal in some COBOL dialects)
+ * - PERFORM THROUGH with internal/external GO TOs
+ * - using non-reserved keywords (END, DATA)
+ * - ALTER (works the same way in COBOL)
+ * - fall-through from MANY-BOTTLES
+ * - the last NEXT SENTENCE does nothing (plays the role of EXIT)
+ IDENTIFICATION DIVISION.
+ PROGRAM-ID. 99 BOTTLES.
+ DATA DIVISION.
+ 01 DATA PICTURE IS 999.
+ PROCEDURE DIVISION.
+ LOOP VARYING DATA FROM 99 BY 0
+ PERFORM COUNT-BOTTLES THROUGH END
+ DISPLAY DATA "bottles of beer"
+ DISPLAY "Take one down, pass it around"
+ SUBTRACT 1 FROM DATA
+ IF DATA = 1
+ THEN ALTER COUNT-BOTTLES TO PROCEED TO SINGLE-BOTTLE
+ END
+ PERFORM COUNT-BOTTLES THROUGH END
+ DISPLAY ""
+ END.
+ NO-BOTTLES-LEFT.
+ DISPLAY "No bottles of beer on the wall"
+ DISPLAY ""
+ DISPLAY "Go to the store and buy some more"
+ DISPLAY "99 bottles of beer on the wall".
+ STOP.
+ COUNT-BOTTLES.
+ GO TO MANY-BOTTLES.
+ SINGLE-BOTTLE.
+ DISPLAY DATA "bottle of beer on the wall".
+ GO TO NO-BOTTLES-LEFT.
+ MANY-BOTTLES.
+ DISPLAY DATA "bottles of beer on the wall".
+ END.
+ NEXT SENTENCE.
diff --git a/Task/99-bottles-of-beer/Bruijn/99-bottles-of-beer.bruijn b/Task/99-bottles-of-beer/Bruijn/99-bottles-of-beer.bruijn
new file mode 100644
index 0000000000..afaffdd63f
--- /dev/null
+++ b/Task/99-bottles-of-beer/Bruijn/99-bottles-of-beer.bruijn
@@ -0,0 +1,11 @@
+:import std/Combinator .
+:import std/Number .
+:import std/String .
+
+main [y [[=?0 case-end case-rec]] (+99)]
+ case-rec n ++ t1 ++ n ++ t2 ++ t3 ++ n ++ t1 ++ "\n" ++ (1 --0)
+ n number→string 0
+ t1 " bottles of beer on the wall\n"
+ t2 " bottles of beer\n"
+ t3 "Take one down, pass it around\n"
+ case-end empty
diff --git a/Task/99-bottles-of-beer/Refal/99-bottles-of-beer.refal b/Task/99-bottles-of-beer/Refal/99-bottles-of-beer.refal
new file mode 100644
index 0000000000..2d53758e21
--- /dev/null
+++ b/Task/99-bottles-of-beer/Refal/99-bottles-of-beer.refal
@@ -0,0 +1,29 @@
+$ENTRY Go {
+ = >;
+};
+
+Verses {
+ '-'1 = ;
+ s.1 =
+ >;
+};
+
+Verse {
+ s.1 = ' of beer on the wall,\n'
+ ' of beer,\n'
+ '\n'
+ > ' of beer on the wall!\n\n';
+};
+
+Bottles {
+ '-'1 = '99 bottles';
+ 0 = 'No more bottles';
+ 1 = '1 bottle';
+ s.1 = s.1 'bottles';
+};
+
+ThirdLine {
+ 0 = 'Go to the store and buy some more,';
+ 1 = 'Take it down and pass it around,';
+ s.1 = 'Take one down and pass it around,';
+};
diff --git a/Task/99-bottles-of-beer/Uxntal/99-bottles-of-beer.uxnatl b/Task/99-bottles-of-beer/Uxntal/99-bottles-of-beer.uxnatl
new file mode 100644
index 0000000000..2d10b5487c
--- /dev/null
+++ b/Task/99-bottles-of-beer/Uxntal/99-bottles-of-beer.uxnatl
@@ -0,0 +1,63 @@
+( uxncli 99bottles.rom )
+
+|10 @Console &vector $2 &read $1 &pad $4 &type $1 &write $1 &error $1
+
+|0100 ( -> )
+ #63 &loop
+ DUP
+ [ LIT2 0a -Console/write ] DEO
+ #01 EQUk ?&done
+ POP #01 SUB
+ !&loop
+ &done BRK
+
+@ ( num -- )
+ DUP ;dict/wall
+ DUP [ LIT2 0a -Console/write ] DEO
+ ;dict/take
+ #01 SUB ;dict/wall !
+
+@ ( num -- )
+ DUP #00 EQU ?&zero
+ DUP #01 EQU ?&one
+ ;dict/bottle
+ [ LIT2 "s -Console/write ] DEO
+ !&end
+
+ &one ( num -- )
+ ;dict/bottle
+ !&end
+ &zero ( num -- )
+ POP ;dict/no-more
+ ;dict/bottle
+ [ LIT2 "s -Console/write ] DEO
+ ( >> )
+ &end
+ ;dict/of-beer
+ ( >> )
+
+@ ( str -- )
+ &loop
+ LDAk .Console/write DEO
+ INC2 LDAk ?&loop
+ POP2 JMP2r
+
+@ ( byte -- )
+ DUP #64 DIV /try
+ DUP #0a DIV /try
+ ( >> )
+
+@ ( num -- )
+ #0a DIVk MUL SUB
+ [ LIT "0 ] ADD .Console/write DEO
+ JMP2r
+
+ &try ( num -- )
+ DUP ?
+ POP JMP2r
+
+@dict &no-more "No 20 "more $1
+ &bottle 20 "bottle $1
+ &of-beer 20 "of 20 "beer 20 $1
+ &wall "on 20 "the 20 "wall 0a $1
+ &take "Take 20 "one 20 "down, 20 "pass 20 "it 20 "around 0a $1
diff --git a/Task/99-bottles-of-beer/YAMLScript/99-bottles-of-beer.ys b/Task/99-bottles-of-beer/YAMLScript/99-bottles-of-beer.ys
index 477c6f980a..4aa8dbc7b3 100644
--- a/Task/99-bottles-of-beer/YAMLScript/99-bottles-of-beer.ys
+++ b/Task/99-bottles-of-beer/YAMLScript/99-bottles-of-beer.ys
@@ -5,19 +5,18 @@
# usage:
# ys 99-bottles.ys []
-defn main(&[number]):
- each [n ((number || 99) .. 1)]:
- say:
- paragraph: n
+defn main(number=99):
+ each [n (number .. 1)]:
+ say: paragraph(n)
defn paragraph(num): |
- $(bottles num) of beer on the wall,
- $(bottles num) of beer.
+ $bottles(num) of beer on the wall,
+ $bottles(num) of beer.
Take one down, pass it around.
- $(bottles (num - 1)) of beer on the wall.
+ $bottles(num - 1) of beer on the wall.
defn bottles(n):
cond:
- (n == 0) "No more bottles"
- (n == 1) "1 bottle"
- :else str(n " bottles")
+ n == 0 : 'No more bottles'
+ n == 1 : '1 bottle'
+ => : "$n bottles"
diff --git a/Task/A+B/BabyCobol/a+b.cobol b/Task/A+B/BabyCobol/a+b.cobol
new file mode 100644
index 0000000000..aa35ab1873
--- /dev/null
+++ b/Task/A+B/BabyCobol/a+b.cobol
@@ -0,0 +1,11 @@
+ * NB: COBOL's ACCEPT does not work with multiple identifiers
+ IDENTIFICATION DIVISION.
+ PROGRAM-ID. PLUS.
+ DATA DIVISION.
+ 01 A PICTURE IS S9999.
+ 01 B LIKE A.
+ PROCEDURE DIVISION.
+ DISPLAY "Enter two numbers: " WITH NO ADVANCING.
+ ACCEPT A B.
+ ADD A TO B.
+ DISPLAY "A+B =" B.
diff --git a/Task/A+B/Bruijn/a+b.bruijn b/Task/A+B/Bruijn/a+b.bruijn
new file mode 100644
index 0000000000..e6be6608b7
--- /dev/null
+++ b/Task/A+B/Bruijn/a+b.bruijn
@@ -0,0 +1,6 @@
+:import std/Combinator .
+:import std/String .
+:import std/Number .
+:import std/Char C
+
+main (split-by (C.eq? ' ')) → &(add ⋔ string→number)
diff --git a/Task/A+B/EasyLang/a+b.easy b/Task/A+B/EasyLang/a+b.easy
index bec95e696d..b110fbde15 100644
--- a/Task/A+B/EasyLang/a+b.easy
+++ b/Task/A+B/EasyLang/a+b.easy
@@ -1,8 +1,8 @@
a$ = input
-i = 1
-while i < len a$ and substr a$ i 1 <> " "
- i += 1
+repeat
+ i += 1
+ until i > len a$ or substr a$ i 1 = " "
.
a = number substr a$ 1 i
-b = number substr a$ i -1
+b = number substr a$ i 99
print a + b
diff --git a/Task/ABC-problem/Refal/abc-problem.refal b/Task/ABC-problem/Refal/abc-problem.refal
new file mode 100644
index 0000000000..7e9c5f8af3
--- /dev/null
+++ b/Task/ABC-problem/Refal/abc-problem.refal
@@ -0,0 +1,35 @@
+$ENTRY Go {
+ = ) >;
+};
+
+Each {
+ s.F (e.Arg) = ;
+ s.F (e.Arg) t.I e.R = ;
+};
+
+Show {
+ (e.Word) e.Blocks = >;
+};
+
+Blocks {
+ = ('BO') ('XK') ('DQ') ('CP') ('NA')
+ ('GT') ('RE') ('TG') ('QD') ('FS')
+ ('JW') ('HU') ('VI') ('AN') ('OB')
+ ('ER') ('FS') ('LY') ('PC') ('ZM');
+};
+
+Words {
+ = ('A') ('BARK') ('BOOK') ('TREAT')
+ ('common') ('squad') ('CoNfUsE');
+};
+
+CanMakeWord {
+ (e.Word) e.Blocks = ) e.Blocks>;
+}
+
+CanMakeWord1 {
+ () e.Blocks = T;
+ (s.Ltr e.Word) e.Blocks1 (e.X s.Ltr e.Y) e.Blocks2
+ = ;
+ (e.Word) e.Blocks = F;
+};
diff --git a/Task/ABC-problem/SETL/abc-problem.setl b/Task/ABC-problem/SETL/abc-problem.setl
new file mode 100644
index 0000000000..1665c27216
--- /dev/null
+++ b/Task/ABC-problem/SETL/abc-problem.setl
@@ -0,0 +1,21 @@
+program ABC_problem;
+ blocks := ["BO","XK","DQ","CP","NA","GT","RE","TG","QD","FS",
+ "JW","HU","VI","AN","OB","ER","FS","LY","PC","ZM"];
+
+ words := ["A","BARK","BOOK","treat","common","Squad","CoNfUsE"];
+
+ loop for word in words do
+ print(rpad(word, 8), can_make_word(word, blocks));
+ end loop;
+
+ proc can_make_word(word, blocks);
+ loop for letter in word do
+ if exists block = blocks(i) | to_upper(letter) in block then
+ blocks(i) := "";
+ else
+ return false;
+ end if;
+ end loop;
+ return true;
+ end proc;
+end program;
diff --git a/Task/AKS-test-for-primes/Elena/aks-test-for-primes.elena b/Task/AKS-test-for-primes/Elena/aks-test-for-primes.elena
index 42169edf1f..d1ab382bf3 100644
--- a/Task/AKS-test-for-primes/Elena/aks-test-for-primes.elena
+++ b/Task/AKS-test-for-primes/Elena/aks-test-for-primes.elena
@@ -12,9 +12,9 @@ singleton AksTest
if ((n < 0) || (n > 63)) { AbortException.raise() }; // gracefully deal with range issue
c[i] := 1l;
- for (int i := 0, i < n, i += 1) {
+ for (int i := 0; i < n; i += 1) {
c[1 + i] := 1l;
- for (int j := i, j > 0, j -= 1) {
+ for (int j := i; j > 0; j -= 1) {
c[j] := c[j - 1] - c[j]
};
c[0] := c[0].Negative
@@ -52,7 +52,7 @@ singleton AksTest
public program()
{
- for (int n := 0, n < 10, n += 1) {
+ for (int n := 0; n < 10; n += 1) {
AksTest.coef(n);
console.print("(x-1)^",n," = ");
@@ -61,7 +61,7 @@ public program()
};
console.print("Primes:");
- for (int n := 1, n <= 63, n += 1) {
+ for (int n := 1; n <= 63; n += 1) {
if (AksTest.is_prime(n))
{
console.print(n," ")
diff --git a/Task/Abstract-type/Swift/abstract-type.swift b/Task/Abstract-type/Swift/abstract-type.swift
new file mode 100644
index 0000000000..8d13e16ebf
--- /dev/null
+++ b/Task/Abstract-type/Swift/abstract-type.swift
@@ -0,0 +1,33 @@
+protocol Pet {
+ var name: String { get set }
+ var favouriteToy: String { get set }
+
+ func feed() -> Bool
+
+ func stroke() -> Void
+
+}
+
+extension Pet {
+ // Default implementation must be in an extension, not in the declaration above
+
+ func stroke() {
+ print("default purr")
+ }
+}
+
+struct Dog: Pet {
+ var name: String
+ var favouriteToy: String
+
+ // Required implementation
+ func feed() -> Bool {
+ print("more please")
+ return false
+ }
+ // If this were not implemented, the default from the extension above
+ // would be called.
+ func stroke() {
+ print("roll over")
+ }
+}
diff --git a/Task/Abundant-deficient-and-perfect-number-classifications/Elena/abundant-deficient-and-perfect-number-classifications.elena b/Task/Abundant-deficient-and-perfect-number-classifications/Elena/abundant-deficient-and-perfect-number-classifications.elena
index f3cc8f8e2e..90f65ae3e7 100644
--- a/Task/Abundant-deficient-and-perfect-number-classifications/Elena/abundant-deficient-and-perfect-number-classifications.elena
+++ b/Task/Abundant-deficient-and-perfect-number-classifications/Elena/abundant-deficient-and-perfect-number-classifications.elena
@@ -7,15 +7,15 @@ classifyNumbers(int bound, ref int abundant, ref int deficient, ref int perfect)
int p := 0;
int[] sum := new int[](bound + 1);
- for(int divisor := 1, divisor <= bound / 2, divisor += 1)
+ for(int divisor := 1; divisor <= bound / 2; divisor += 1)
{
- for(int i := divisor + divisor, i <= bound, i += divisor)
+ for(int i := divisor + divisor; i <= bound; i += divisor)
{
sum[i] := sum[i] + divisor
}
};
- for(int i := 1, i <= bound, i += 1)
+ for(int i := 1; i <= bound; i += 1)
{
int t := sum[i];
diff --git a/Task/Abundant-deficient-and-perfect-number-classifications/JavaScript/abundant-deficient-and-perfect-number-classifications-5.js b/Task/Abundant-deficient-and-perfect-number-classifications/JavaScript/abundant-deficient-and-perfect-number-classifications-5.js
new file mode 100644
index 0000000000..e5e8da98b0
--- /dev/null
+++ b/Task/Abundant-deficient-and-perfect-number-classifications/JavaScript/abundant-deficient-and-perfect-number-classifications-5.js
@@ -0,0 +1,33 @@
+// classify the numbers 1 : 20 000 as abudant, deficient or perfect
+"use strict"
+let abundantCount = 0
+let deficientCount = 0
+let perfectCount = 0
+const maxNumber = 20000
+// construct a table of the proper divisor sums
+let pds = []
+pds[ 1 ] = 0
+for( let i = 2; i <= maxNumber; i ++ ){ pds[ i ] = 1 }
+for( let i = 2; i <= maxNumber; i ++ )
+{
+ for( let j = i + i; j <= maxNumber; j += i ){ pds[ j ] += i }
+}
+// classify the numbers
+for( let n = 1; n <= maxNumber; n ++ )
+{
+ if( pds[ n ] < n )
+ {
+ deficientCount ++
+ }
+ else if( pds[ n ] == n )
+ {
+ perfectCount ++
+ }
+ else // pds[ n ] > n
+ {
+ abundantCount ++
+ }
+}
+console.log( "abundant " + abundantCount.toString() )
+console.log( "deficient " + deficientCount.toString() )
+console.log( "perfect " + perfectCount.toString() )
diff --git a/Task/Achilles-numbers/EasyLang/achilles-numbers.easy b/Task/Achilles-numbers/EasyLang/achilles-numbers.easy
new file mode 100644
index 0000000000..ec0935dde9
--- /dev/null
+++ b/Task/Achilles-numbers/EasyLang/achilles-numbers.easy
@@ -0,0 +1,101 @@
+func gcd n d .
+ if d = 0
+ return n
+ .
+ return gcd d (n mod d)
+.
+func totient n .
+ for m = 1 to n
+ if gcd m n = 1
+ tot += 1
+ .
+ .
+ return tot
+.
+func isPowerful m .
+ n = m
+ f = 2
+ l = sqrt m
+ if m <= 1
+ return 0
+ .
+ while 1 = 1
+ q = n div f
+ if n mod f = 0
+ if m mod (f * f) <> 0
+ return 0
+ .
+ n = q
+ if f > n
+ return 1
+ .
+ else
+ f += 1
+ if f > l
+ if m mod (n * n) <> 0
+ return 0
+ .
+ return 1
+ .
+ .
+ .
+.
+func isAchilles n .
+ if isPowerful n = 0
+ return 0
+ .
+ m = 2
+ a = m * m
+ repeat
+ repeat
+ if a = n
+ return 0
+ .
+ a *= m
+ until a > n
+ .
+ m += 1
+ a = m * m
+ until a > n
+ .
+ return 1
+.
+print "First 50 Achilles numbers:"
+n = 1
+repeat
+ if isAchilles n = 1
+ write n & " "
+ num += 1
+ .
+ n += 1
+ until num >= 50
+.
+print ""
+print ""
+print "First 20 strong Achilles numbers:"
+num = 0
+n = 1
+repeat
+ if isAchilles n = 1 and isAchilles totient n = 1
+ write n & " "
+ num += 1
+ .
+ n += 1
+ until num >= 20
+.
+print ""
+print ""
+print "Number of Achilles numbers with 2 to 5 digits:"
+a = 10
+b = 100
+for i = 2 to 5
+ num = 0
+ for n = a to b - 1
+ if isAchilles n = 1
+ num += 1
+ .
+ .
+ write num & " "
+ a = b
+ b *= 10
+.
diff --git a/Task/Achilles-numbers/Java/achilles-numbers.java b/Task/Achilles-numbers/Java/achilles-numbers.java
index 5c4489b4a8..8feaddc1fe 100644
--- a/Task/Achilles-numbers/Java/achilles-numbers.java
+++ b/Task/Achilles-numbers/Java/achilles-numbers.java
@@ -1,78 +1,108 @@
import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
import java.util.List;
-import java.util.Set;
-import java.util.TreeSet;
-import java.util.stream.Collectors;
-import java.util.stream.IntStream;
+import java.util.Map;
-public final class AchlllesNumbers {
+public class AchillesNumbers {
- public static void main(String[] aArgs) {
- Set perfectPowers = perfectPowers(500_000);
- List achilles = achilles(1, 250_000, perfectPowers);
- List totients = totients(250_000);
+ private Map pps = new HashMap<>();
- System.out.println("First 50 Achilles numbers:");
- for ( int i = 0; i < 50; i++ ) {
- System.out.print(String.format("%4d%s", achilles.get(i), ( ( i + 1 ) % 10 == 0 ) ? "\n" : " "));
- }
- System.out.println();
-
- System.out.println("First 50 strong Achilles numbers:");
- for ( int i = 0, count = 0; count < 50; i++ ) {
- if ( achilles.contains(totients.get(achilles.get(i))) ) {
- System.out.print(String.format("%6d%s", achilles.get(i), ( ++count % 10 == 0 ) ? "\n" : " "));
- }
- }
- System.out.println();
-
- System.out.println("Number of Achilles numbers with:");
- for ( int i = 100; i < 1_000_000; i *= 10 ) {
- final int digits = String.valueOf(i).length() - 1;
- System.out.println(" " + digits + " digits: " + achilles(i / 10, i - 1, perfectPowers).size());
- }
- }
-
- private static List achilles(int aFrom, int aTo, Set aPerfectPowers) {
- Set result = new TreeSet();
- final int cubeRoot = (int) Math.cbrt(aTo / 4);
- final int squareRoot = (int) Math.sqrt(aTo / 8);
- for ( int b = 2; b <= cubeRoot; b++ ) {
- final int bCubed = b * b * b;
- for ( int a = 2; a <= squareRoot; a++ ) {
- int achilles = bCubed * a * a;
- if ( achilles >= aTo ) {
- break;
- }
- if ( achilles >= aFrom && ! aPerfectPowers.contains(achilles) ) {
- result.add(achilles);
- }
- }
- }
- return new ArrayList(result);
- }
-
- private static Set perfectPowers(int aN) {
- Set result = new TreeSet();
- for ( int i = 2, root = (int) Math.sqrt(aN); i <= root; i++ ) {
- for ( int perfect = i * i; perfect < aN; perfect *= i ) {
- result.add(perfect);
- }
- }
- return result;
- }
-
- private static List totients(int aN) {
- List result = IntStream.rangeClosed(0, aN).boxed().collect(Collectors.toList());;
- for ( int i = 2; i <= aN; i++ ) {
- if ( result.get(i) == i ) {
- result.set(i, i - 1);
- for ( int j = i * 2; j <= aN; j = j + i ) {
- result.set(j, ( result.get(j) / i ) * ( i - 1 ));
- }
- }
- }
- return result;
- }
+ public int totient(int n) {
+ int tot = n;
+ int i = 2;
+ while (i * i <= n) {
+ if (n % i == 0) {
+ while (n % i == 0) {
+ n /= i;
+ }
+ tot -= tot / i;
+ }
+ if (i == 2) {
+ i = 1;
+ }
+ i += 2;
+ }
+ if (n > 1) {
+ tot -= tot / n;
+ }
+ return tot;
+ }
+ public void getPerfectPowers(int maxExp) {
+ double upper = Math.pow(10, maxExp);
+ for (int i = 2; i <= Math.sqrt(upper); i++) {
+ double fi = i;
+ double p = fi;
+ while (true) {
+ p *= fi;
+ if (p >= upper) {
+ break;
+ }
+ pps.put((int) p, true);
+ }
+ }
+ }
+
+ public Map getAchilles(int minExp, int maxExp) {
+ double lower = Math.pow(10, minExp);
+ double upper = Math.pow(10, maxExp);
+ Map achilles = new HashMap<>();
+ for (int b = 1; b <= (int) Math.cbrt(upper); b++) {
+ int b3 = b * b * b;
+ for (int a = 1; a <= (int) Math.sqrt(upper); a++) {
+ int p = b3 * a * a;
+ if (p >= (int) upper) {
+ break;
+ }
+ if (p >= (int) lower) {
+ if (!pps.containsKey(p)) {
+ achilles.put(p, true);
+ }
+ }
+ }
+ }
+ return achilles;
+ }
+
+ public static void main(String[] args) {
+ AchillesNumbers an = new AchillesNumbers();
+
+ int maxDigits = 8;
+ an.getPerfectPowers(maxDigits);
+ Map achillesSet = an.getAchilles(1, 5);
+ List achilles = new ArrayList<>(achillesSet.keySet());
+ Collections.sort(achilles);
+
+ System.out.println("First 50 Achilles numbers:");
+ for (int i = 0; i < 50; i++) {
+ System.out.printf("%4d ", achilles.get(i));
+ if ((i + 1) % 10 == 0) {
+ System.out.println();
+ }
+ }
+
+ System.out.println("\nFirst 30 strong Achilles numbers:");
+ List strongAchilles = new ArrayList<>();
+ int count = 0;
+ for (int n = 0; count < 30; n++) {
+ int tot = an.totient(achilles.get(n));
+ if (achillesSet.containsKey(tot)) {
+ strongAchilles.add(achilles.get(n));
+ count++;
+ }
+ }
+ for (int i = 0; i < 30; i++) {
+ System.out.printf("%5d ", strongAchilles.get(i));
+ if ((i + 1) % 10 == 0) {
+ System.out.println();
+ }
+ }
+
+ System.out.println("\nNumber of Achilles numbers with:");
+ for (int d = 2; d <= maxDigits; d++) {
+ int ac = an.getAchilles(d - 1, d).size();
+ System.out.printf("%2d digits: %d\n", d, ac);
+ }
+ }
}
diff --git a/Task/Ackermann-function/Bruijn/ackermann-function.bruijn b/Task/Ackermann-function/Bruijn/ackermann-function.bruijn
new file mode 100644
index 0000000000..87c110fc1a
--- /dev/null
+++ b/Task/Ackermann-function/Bruijn/ackermann-function.bruijn
@@ -0,0 +1,15 @@
+:import std/Combinator .
+:import std/Number/Unary U
+:import std/Math .
+
+# unary ackermann
+ackermann-unary [0 [[U.inc 0 1 (+1u)]] U.inc]
+
+:test (ackermann-unary (+0u) (+0u)) ((+1u))
+:test (ackermann-unary (+3u) (+4u)) ((+125u))
+
+# ternary ackermann (lower space complexity)
+ackermann-ternary y [[[=?1 ++0 (=?0 (2 --1 (+1)) (2 --1 (2 1 --0)))]]]
+
+:test ((ackermann-ternary (+0) (+0)) =? (+1)) ([[1]])
+:test ((ackermann-ternary (+3) (+4)) =? (+125)) ([[1]])
diff --git a/Task/Ackermann-function/Elena/ackermann-function.elena b/Task/Ackermann-function/Elena/ackermann-function.elena
index 8c2541a05d..fc46c62750 100644
--- a/Task/Ackermann-function/Elena/ackermann-function.elena
+++ b/Task/Ackermann-function/Elena/ackermann-function.elena
@@ -18,9 +18,9 @@ ackermann(m,n)
public program()
{
- for(int i:=0, i <= 3, i += 1)
+ for(int i:=0; i <= 3; i += 1)
{
- for(int j := 0, j <= 5, j += 1)
+ for(int j := 0; j <= 5; j += 1)
{
console.printLine("A(",i,",",j,")=",ackermann(i,j))
}
diff --git a/Task/Ackermann-function/Refal/ackermann-function.refal b/Task/Ackermann-function/Refal/ackermann-function.refal
new file mode 100644
index 0000000000..211834abf3
--- /dev/null
+++ b/Task/Ackermann-function/Refal/ackermann-function.refal
@@ -0,0 +1,9 @@
+$ENTRY Go {
+ = >;
+};
+
+A {
+ 0 s.N = <+ s.N 1>;
+ s.M 0 = 1>;
+ s.M s.N = >>;
+};
diff --git a/Task/Additive-primes/Langur/additive-primes.langur b/Task/Additive-primes/Langur/additive-primes.langur
index 224b6845a7..302c1832d8 100644
--- a/Task/Additive-primes/Langur/additive-primes.langur
+++ b/Task/Additive-primes/Langur/additive-primes.langur
@@ -1,4 +1,5 @@
-val .isPrime = f .i == 2 or .i > 2 and not any f(.x) .i div .x, pseries 2 .. .i ^/ 2
+val .isPrime = f .i == 2 or .i > 2 and
+ not any f(.x) .i div .x, pseries 2 .. .i ^/ 2
val .sumDigits = f fold f{+}, s2n toString .i
diff --git a/Task/Aliquot-sequence-classifications/C-sharp/aliquot-sequence-classifications.cs b/Task/Aliquot-sequence-classifications/C-sharp/aliquot-sequence-classifications.cs
new file mode 100644
index 0000000000..5950ac0cce
--- /dev/null
+++ b/Task/Aliquot-sequence-classifications/C-sharp/aliquot-sequence-classifications.cs
@@ -0,0 +1,75 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+public class AliquotSequenceClassifications
+{
+ private static long ProperDivsSum(long n)
+ {
+ return Enumerable.Range(1, (int)(n / 2)).Where(i => n % i == 0).Sum(i => (long)i);
+ }
+
+ public static bool Aliquot(long n, int maxLen, long maxTerm)
+ {
+ List s = new List(maxLen) {n};
+ long newN = n;
+
+ while (s.Count <= maxLen && newN < maxTerm)
+ {
+ newN = ProperDivsSum(s.Last());
+
+ if (s.Contains(newN))
+ {
+ if (s[0] == newN)
+ {
+ switch (s.Count)
+ {
+ case 1:
+ return Report("Perfect", s);
+ case 2:
+ return Report("Amicable", s);
+ default:
+ return Report("Sociable of length " + s.Count, s);
+ }
+ }
+ else if (s.Last() == newN)
+ {
+ return Report("Aspiring", s);
+ }
+ else
+ {
+ return Report("Cyclic back to " + newN, s);
+ }
+ }
+ else
+ {
+ s.Add(newN);
+ if (newN == 0)
+ return Report("Terminating", s);
+ }
+ }
+
+ return Report("Non-terminating", s);
+ }
+
+ static bool Report(string msg, List result)
+ {
+ Console.WriteLine(msg + ": " + string.Join(", ", result));
+ return false;
+ }
+
+ public static void Main(string[] args)
+ {
+ long[] arr = {
+ 11, 12, 28, 496, 220, 1184, 12496, 1264460,
+ 790, 909, 562, 1064, 1488
+ };
+
+ Enumerable.Range(1, 10).ToList().ForEach(n => Aliquot(n, 16, 1L << 47));
+ Console.WriteLine();
+ foreach (var n in arr)
+ {
+ Aliquot(n, 16, 1L << 47);
+ }
+ }
+}
diff --git a/Task/Almkvist-Giullera-formula-for-pi/Kotlin/almkvist-giullera-formula-for-pi.kotlin b/Task/Almkvist-Giullera-formula-for-pi/Kotlin/almkvist-giullera-formula-for-pi.kotlin
new file mode 100644
index 0000000000..c20175ec0e
--- /dev/null
+++ b/Task/Almkvist-Giullera-formula-for-pi/Kotlin/almkvist-giullera-formula-for-pi.kotlin
@@ -0,0 +1,65 @@
+import java.math.BigDecimal
+import java.math.BigInteger
+import java.math.MathContext
+import java.math.RoundingMode
+
+object CodeKt{
+
+ @JvmStatic
+ fun main(args: Array) {
+ println("n Integer part")
+ println("================================================")
+ for (n in 0..9) {
+ println(String.format("%d%47s", n, almkvistGiullera(n).toString()))
+ }
+
+ val decimalPlaces = 70
+ val mathContext = MathContext(decimalPlaces + 1, RoundingMode.HALF_EVEN)
+ val epsilon = BigDecimal.ONE.divide(BigDecimal.TEN.pow(decimalPlaces))
+ var previous = BigDecimal.ONE
+ var sum = BigDecimal.ZERO
+ var pi = BigDecimal.ZERO
+ var n = 0
+
+ while (pi.subtract(previous).abs().compareTo(epsilon) >= 0) {
+ val nextTerm = BigDecimal(almkvistGiullera(n)).divide(BigDecimal.TEN.pow(6 * n + 3), mathContext)
+ sum = sum.add(nextTerm)
+ previous = pi
+ n += 1
+ pi = BigDecimal.ONE.divide(sum, mathContext).sqrt(mathContext)
+ }
+
+ println("\npi to $decimalPlaces decimal places:")
+ println(pi)
+ }
+
+ private fun almkvistGiullera(aN: Int): BigInteger {
+ val term1 = factorial(6 * aN) * BigInteger.valueOf(32)
+ val term2 = BigInteger.valueOf(532L * aN * aN + 126 * aN + 9)
+ val term3 = factorial(aN).pow(6) * BigInteger.valueOf(3)
+ return term1 * term2 / term3
+ }
+
+ private fun factorial(aNumber: Int): BigInteger {
+ var result = BigInteger.ONE
+ for (i in 2..aNumber) {
+ result *= BigInteger.valueOf(i.toLong())
+ }
+ return result
+ }
+
+ private fun BigDecimal.sqrt(context: MathContext): BigDecimal {
+ var x = BigDecimal(Math.sqrt(this.toDouble()), context)
+ if (this == BigDecimal.ZERO) return BigDecimal.ZERO
+ val two = BigDecimal.valueOf(2)
+ while (true) {
+ val y = this.divide(x, context)
+ x = x.add(y).divide(two, context)
+ val nextY = this.divide(x, context)
+ if (y == nextY || y == nextY.add(BigDecimal.ONE.divide(BigDecimal.TEN.pow(context.precision), context))) {
+ break
+ }
+ }
+ return x
+ }
+}
diff --git a/Task/Almkvist-Giullera-formula-for-pi/Scala/almkvist-giullera-formula-for-pi.scala b/Task/Almkvist-Giullera-formula-for-pi/Scala/almkvist-giullera-formula-for-pi.scala
new file mode 100644
index 0000000000..2e0e772b5e
--- /dev/null
+++ b/Task/Almkvist-Giullera-formula-for-pi/Scala/almkvist-giullera-formula-for-pi.scala
@@ -0,0 +1,44 @@
+import java.math.{BigDecimal, BigInteger, MathContext, RoundingMode}
+
+object AlmkvistGiulleraFormula extends App {
+ println("n Integer part")
+ println("================================================")
+ for (n <- 0 to 9) {
+ val term = almkvistGiullera(n).toString
+ println(f"$n%1d" + " " * (47 - term.length) + term)
+ }
+
+ val decimalPlaces = 70
+ val mathContext = new MathContext(decimalPlaces + 1, RoundingMode.HALF_EVEN)
+ val epsilon = BigDecimal.ONE.divide(BigDecimal.TEN.pow(decimalPlaces))
+ var previous = BigDecimal.ONE
+ var sum = BigDecimal.ZERO
+ var pi = BigDecimal.ZERO
+ var n = 0
+
+ while (pi.subtract(previous).abs.compareTo(epsilon) >= 0) {
+ val nextTerm = new BigDecimal(almkvistGiullera(n)).divide(BigDecimal.TEN.pow(6 * n + 3))
+ sum = sum.add(nextTerm)
+ previous = pi
+ n += 1
+ pi = BigDecimal.ONE.divide(sum, mathContext).sqrt(mathContext)
+ }
+
+ println("\npi to " + decimalPlaces + " decimal places:")
+ println(pi)
+
+ def almkvistGiullera(aN: Int): BigInteger = {
+ val term1 = factorial(6 * aN).multiply(BigInteger.valueOf(32))
+ val term2 = BigInteger.valueOf(532 * aN * aN + 126 * aN + 9)
+ val term3 = factorial(aN).pow(6).multiply(BigInteger.valueOf(3))
+ term1.multiply(term2).divide(term3)
+ }
+
+ def factorial(aNumber: Int): BigInteger = {
+ var result = BigInteger.ONE
+ for (i <- 2 to aNumber) {
+ result = result.multiply(BigInteger.valueOf(i))
+ }
+ result
+ }
+}
diff --git a/Task/Amb/Elena/amb.elena b/Task/Amb/Elena/amb.elena
index ba034b044f..158379a738 100644
--- a/Task/Amb/Elena/amb.elena
+++ b/Task/Amb/Elena/amb.elena
@@ -37,14 +37,14 @@ class AmbValueCollection
constructor new(params object[] args)
{
- _combinator := SequentialEnumerator.new(params args)
+ _combinator := SequentialEnumerator.load(params args)
}
seek(cond)
{
_combinator.reset();
- _combinator.seekEach:(v => dispatcher.eval(v,cond))
+ _combinator.seekEach::(v => dispatcher.eval(v,cond))
}
do(f)
@@ -81,12 +81,12 @@ public program()
new object[]{"frog", "elephant", "thing"},
new object[]{"walked", "treaded", "grows"},
new object[]{"slowly", "quickly"})
- .seek:(a,b,c,d => joinable(a,b) && joinable(b,c) && joinable(c,d) )
- .do:(a,b,c,d) { console.printLine(a," ",b," ",c," ",d) }
+ .seek::(a,b,c,d => joinable(a,b) && joinable(b,c) && joinable(c,d) )
+ .do::(a,b,c,d) { console.printLine(a," ",b," ",c," ",d) }
}
catch(Exception e)
{
- console.printLine:"AMB is angry"
+ console.printLine("AMB is angry")
};
console.readChar()
diff --git a/Task/Amicable-pairs/Elena/amicable-pairs-1.elena b/Task/Amicable-pairs/Elena/amicable-pairs-1.elena
index 31de5bfdf0..62814d6243 100644
--- a/Task/Amicable-pairs/Elena/amicable-pairs-1.elena
+++ b/Task/Amicable-pairs/Elena/amicable-pairs-1.elena
@@ -6,30 +6,30 @@ const int N = 20000;
extension op
{
ProperDivisors
- = Range.new(1,self / 2).filterBy:(n => self.mod:n == 0);
+ = Range.new(1,self / 2).filterBy::(n => self.mod(n) == 0);
get AmicablePairs()
{
var divsums := Range
.new(0, self + 1)
- .selectBy:(i => i.ProperDivisors.summarize(Integer.new()))
+ .selectBy::(i => i.ProperDivisors.summarize(Integer.new()))
.toArray();
^ 1.repeatTill(divsums.Length)
- .filterBy:(i)
+ .filterBy::(i)
{
var ii := i;
var sum := divsums[i];
^ (i < sum) && (sum < divsums.Length) && (divsums[sum] == i)
}
- .selectBy:(i => new { Item1 = i; Item2 = divsums[i]; })
+ .selectBy::(i => new { Item1 = i; Item2 = divsums[i]; })
}
}
public program()
{
- N.AmicablePairs.forEach:(pair)
+ N.AmicablePairs.forEach::(pair)
{
console.printLine(pair.Item1, " ", pair.Item2)
}
diff --git a/Task/Amicable-pairs/Elena/amicable-pairs-2.elena b/Task/Amicable-pairs/Elena/amicable-pairs-2.elena
index caa56ab832..8ac6072f0d 100644
--- a/Task/Amicable-pairs/Elena/amicable-pairs-2.elena
+++ b/Task/Amicable-pairs/Elena/amicable-pairs-2.elena
@@ -7,27 +7,27 @@ const int N = 20000;
extension op : IntNumber
{
Enumerator ProperDivisors
- = new Range(1,self / 2).filterBy:(int n => self.mod:n == 0);
+ = new Range(1,self / 2).filterBy::(int n => self.mod(n) == 0);
get AmicablePairs()
{
auto divsums := new List(
cast Enumerator(
- new Range(0, self).selectBy:(int i => i.ProperDivisors.summarize(0))));
+ new Range(0, self).selectBy::(int i => i.ProperDivisors.summarize(0))));
^ new Range(0, divsums.Length)
- .filterBy:(int i)
+ .filterBy::(int i)
{
auto sum := divsums[i];
^ (i < sum) && (sum < divsums.Length) && (divsums[sum] == i)
}
- .selectBy:(int i => new Tuple(i,divsums[i]));
+ .selectBy::(int i => new Tuple(i,divsums[i]));
}
}
public program()
{
- N.AmicablePairs.forEach:(var Tuple pair)
+ N.AmicablePairs.forEach::(var Tuple pair)
{
console.printLine(pair.Item1, " ", pair.Item2)
}
diff --git a/Task/Amicable-pairs/Elena/amicable-pairs-3.elena b/Task/Amicable-pairs/Elena/amicable-pairs-3.elena
index d2de787c53..ede0ca6ccd 100644
--- a/Task/Amicable-pairs/Elena/amicable-pairs-3.elena
+++ b/Task/Amicable-pairs/Elena/amicable-pairs-3.elena
@@ -7,7 +7,7 @@ const int Limit = 20000;
singleton ProperDivisors
{
Enumerator function(int number)
- = Range.new(1, number / 2).filterBy:(int n => number.mod:n == 0);
+ = Range.new(1, number / 2).filterBy::(int n => number.mod(n) == 0);
}
public sealed AmicablePairs
@@ -21,9 +21,9 @@ public sealed AmicablePairs
yieldable Tuple next()
{
- List divsums := Range.new(0, max + 1).selectBy:(int i => ProperDivisors(i).summarize(0));
+ List divsums := Range.new(0, max + 1).selectBy::(int i => ProperDivisors(i).summarize(0));
- for (int i := 1, i < divsums.Length, i += 1)
+ for (int i := 1; i < divsums.Length; i += 1)
{
int sum := divsums[i];
if(i < sum && sum <= divsums.Length && divsums[sum] == i) {
@@ -38,7 +38,7 @@ public sealed AmicablePairs
public program()
{
auto e := new AmicablePairs(Limit);
- for(auto pair := e.next(), pair != nil)
+ for(auto pair := e.next(); pair != nil)
{
console.printLine(pair.Item1, " ", pair.Item2)
}
diff --git a/Task/Amicable-pairs/S-BASIC/amicable-pairs.basic b/Task/Amicable-pairs/S-BASIC/amicable-pairs.basic
index b3610a384f..630fee64c0 100644
--- a/Task/Amicable-pairs/S-BASIC/amicable-pairs.basic
+++ b/Task/Amicable-pairs/S-BASIC/amicable-pairs.basic
@@ -2,34 +2,32 @@ $lines
$constant search_limit = 20000
-rem - return p mod q
-function mod(p, q = integer) = integer
-end = p - q * (p / q)
-
-rem - return sum of the proper divisors of n
-function sumf(n = integer) = integer
-var f1, f2, sum = integer
-sum = 1
-f1 = 2
-while (f1 * f1) <= n do
- begin
- if mod(n, f1) = 0 then
- begin
- sum = sum + f1
- f2 = n / f1
- if f2 > f1 then sum = sum + f2
- end
- f1 = f1 + 1
- end
-end = sum
-
-rem - main program begins here
var a, b, count = integer
+dim integer sumf(search_limit)
+
print "Searching up to"; search_limit; " for amicable pairs:"
+
+rem - set up the table of proper divisor sums
+
+for a = 1 to search_limit
+ sumf(a) = 1
+next a
+
+for a = 2 to search_limit
+ b = a + a
+ while (b > 0) and (b <= search_limit) do
+ begin
+ sumf(b) = sumf(b) + a
+ b = b + a
+ end
+next a
+
+rem - search for pairs using the table
+
count = 0
-for a = 2 to search_limit do
+for a = 2 to search_limit
b = sumf(a)
- if b > a then
+ if (b > a) and (b < search_limit) then
if a = sumf(b) then
begin
print using "##### #####"; a; b
diff --git a/Task/Amicable-pairs/Sage/amicable-pairs.sage b/Task/Amicable-pairs/Sage/amicable-pairs.sage
new file mode 100644
index 0000000000..655d8324e9
--- /dev/null
+++ b/Task/Amicable-pairs/Sage/amicable-pairs.sage
@@ -0,0 +1,10 @@
+# Define the sum of proper divisors function
+def sum_of_proper_divisors(n):
+ return sum(divisors(n)) - n
+
+# Iterate over the desired range
+for x in range(1, 20001):
+ y = sum_of_proper_divisors(x)
+ if y > x:
+ if x == sum_of_proper_divisors(y):
+ print(f"{x} {y}")
diff --git a/Task/Anagrams/Elena/anagrams.elena b/Task/Anagrams/Elena/anagrams.elena
index 9f2dd4d898..65bb59e28f 100644
--- a/Task/Anagrams/Elena/anagrams.elena
+++ b/Task/Anagrams/Elena/anagrams.elena
@@ -19,7 +19,7 @@ public program()
auto dictionary := new Map();
- File.assign("unixdict.txt").forEachLine:(word)
+ File.assign("unixdict.txt").forEachLine::(word)
{
var key := word.normalized();
var item := dictionary[key];
@@ -29,13 +29,13 @@ public program()
dictionary[key] := item
};
- item.append:word
+ item.append(word)
};
dictionary.Values
- .quickSort:(former,later => former.Item2.Length > later.Item2.Length )
- .top:20
- .forEach:(pair){ console.printLine(pair.Item2) };
+ .quickSort::(former,later => former.Item2.Length > later.Item2.Length )
+ .top(20)
+ .forEach::(pair){ console.printLine(pair.Item2) };
var end := now;
diff --git a/Task/Angle-difference-between-two-bearings/ALGOL-68/angle-difference-between-two-bearings.alg b/Task/Angle-difference-between-two-bearings/ALGOL-68/angle-difference-between-two-bearings.alg
new file mode 100644
index 0000000000..10787dbd52
--- /dev/null
+++ b/Task/Angle-difference-between-two-bearings/ALGOL-68/angle-difference-between-two-bearings.alg
@@ -0,0 +1,38 @@
+BEGIN # angle difference between 2 bearings - translated from the 11l sample #
+
+ PROC wrap = (REAL v, l1, l2 )REAL:
+ BEGIN
+ REAL result := v;
+ WHILE result < l1 DO result +:= 2 * l2 OD;
+ WHILE result > l2 DO result +:= 2 * l1 OD;
+ result
+ END # wrap # ;
+
+ PROC get_difference = ( REAL b1, b2 )REAL: wrap( b2 - b1, -180.0, 180.0 );
+
+ OP FMT = ( REAL v )STRING:
+ BEGIN
+ STRING result := fixed( ABS v, 0, 3 );
+ IF result[ LWB result ] = "." THEN "0" +=: result FI;
+ WHILE result[ UPB result ] = "0" DO result := result[ : UPB result - 1 ] OD;
+ IF result[ UPB result ] = "." THEN result := result[ : UPB result - 1 ] FI;
+ IF v < 0 THEN "-" ELSE " " FI + result
+ END # FMT # ;
+
+ print( ( FMT get_difference( 20.0, 45.0 ), newline ) );
+ print( ( FMT get_difference( -45.0, 45.0 ), newline ) );
+ print( ( FMT get_difference( -85.0, 90.0 ), newline ) );
+ print( ( FMT get_difference( -95.0, 90.0 ), newline ) );
+ print( ( FMT get_difference( -45.0, 125.0 ), newline ) );
+ print( ( FMT get_difference( -45.0, 145.0 ), newline ) );
+ print( ( FMT get_difference( -45.0, 125.0 ), newline ) );
+ print( ( FMT get_difference( -45.0, 145.0 ), newline ) );
+ print( ( FMT get_difference( 29.4803, -88.6381 ), newline ) );
+ print( ( FMT get_difference( -78.3251, -159.036 ), newline ) );
+ print( ( newline ) );
+ print( ( FMT get_difference( -70099.74233810938, 29840.67437876723 ), newline ) );
+ print( ( FMT get_difference( -165313.6666297357, 33693.9894517456 ), newline ) );
+ print( ( FMT get_difference( 1174.8380510598456, -154146.66490124757 ), newline ) );
+ print( ( FMT get_difference( 60175.77306795546, 42213.07192354373 ), newline ) )
+
+END
diff --git a/Task/Angles-geometric-normalization-and-conversion/ALGOL-68/angles-geometric-normalization-and-conversion.alg b/Task/Angles-geometric-normalization-and-conversion/ALGOL-68/angles-geometric-normalization-and-conversion.alg
new file mode 100644
index 0000000000..23e6245b75
--- /dev/null
+++ b/Task/Angles-geometric-normalization-and-conversion/ALGOL-68/angles-geometric-normalization-and-conversion.alg
@@ -0,0 +1,64 @@
+BEGIN # Angles (geometric), normalization and conversion - translated from the 11l sample #
+
+ []REAL values = ( -2, -1, 0, 1, 2, 6.2831853, 16, 57.2957795, 359, 399, 6399, 1000000 );
+
+ PROC norm = ( REAL x, y )REAL:
+ BEGIN
+ INT n = ENTIER ( ABS x / ABS y );
+ REAL r := x - ( n * y );
+ r
+ END # norm # ;
+
+ PROC normd = ( REAL x )REAL: norm( x, 360 );
+ PROC normg = ( REAL x )REAL: norm( x, 400 );
+ PROC normm = ( REAL x )REAL: norm( x, 6400 );
+ PROC normr = ( REAL x )REAL: norm( x, 2 * pi );
+
+ PROC d2g = ( REAL x )REAL: normd( x ) * 10 / 9;
+ PROC d2m = ( REAL x )REAL: normd( x ) * 160 / 9;
+ PROC d2r = ( REAL x )REAL: normd( x ) * pi / 180;
+
+ PROC g2d = ( REAL x )REAL: normg( x ) * 9 / 10;
+ PROC g2m = ( REAL x )REAL: normg( x ) * 16;
+ PROC g2r = ( REAL x )REAL: normg( x ) * pi / 200;
+
+ PROC m2d = ( REAL x )REAL: normm( x ) * 9 / 160;
+ PROC m2g = ( REAL x )REAL: normm( x ) / 16;
+ PROC m2r = ( REAL x )REAL: normm( x ) * pi / 3200;
+
+ PROC r2d = ( REAL x )REAL: normr( x ) * 180 / pi;
+ PROC r2g = ( REAL x )REAL: normr( x ) * 200 / pi;
+ PROC r2m = ( REAL x )REAL: normr( x ) * 3200 / pi;
+
+ STRING underline = "----------------------------------------------------------------------------------";
+ PROC f7d7 = ( REAL v )STRING: fixed( v, -15, 7 );
+
+ PROC print values = ( STRING heading, []PROC(REAL)REAL f )VOID:
+ BEGIN
+ print( ( heading, newline ) );
+ print( ( underline, newline ) );
+ FOR i FROM LWB values TO UPB values DO
+ REAL v = values[ i ];
+ print( ( f7d7( v ) ) );
+ FOR p FROM LWB f TO UPB f DO
+ print( ( " ", f7d7( f[ p ]( v ) ) ) )
+ OD;
+ print( ( newline ) )
+ OD;
+ print( ( newline ) )
+ END # print values # ;
+
+ print values( " Degrees Normalized Gradians Mils Radians"
+ , ( normd, d2g, d2m, d2r )
+ );
+ print values( " Gradians Normalized Degrees Mils Radians"
+ , ( normg, g2d, g2m, g2r )
+ );
+ print values( " Mils Normalized Degrees Gradians Radians"
+ , ( normm, m2d, m2g, m2r )
+ );
+ print values( " Radians Normalized Degrees Gradians Mils"
+ , ( normr, r2d, r2g, r2m )
+ )
+
+END
diff --git a/Task/Angles-geometric-normalization-and-conversion/ALGOL-W/angles-geometric-normalization-and-conversion.alg b/Task/Angles-geometric-normalization-and-conversion/ALGOL-W/angles-geometric-normalization-and-conversion.alg
new file mode 100644
index 0000000000..c26879adba
--- /dev/null
+++ b/Task/Angles-geometric-normalization-and-conversion/ALGOL-W/angles-geometric-normalization-and-conversion.alg
@@ -0,0 +1,71 @@
+begin % Angles (geometric), normalization and conversion %
+ % - translation of the Algol 68 translation of the 11l sample %
+
+ real procedure norm ( real value x, y ) ;
+ begin
+ integer n;
+ n := entier( abs x / abs y );
+ x - ( n * y )
+ end norm ;
+
+ real procedure normd ( real value x ) ; norm( x, 360 );
+ real procedure normg ( real value x ) ; norm( x, 400 );
+ real procedure normm ( real value x ) ; norm( x, 6400 );
+ real procedure normr ( real value x ) ; norm( x, 2 * pi );
+
+ real procedure d2g ( real value x ) ; normd( x ) * 10 / 9;
+ real procedure d2m ( real value x ) ; normd( x ) * 160 / 9;
+ real procedure d2r ( real value x ) ; normd( x ) * pi / 180;
+
+ real procedure g2d ( real value x ) ; normg( x ) * 9 / 10;
+ real procedure g2m ( real value x ) ; normg( x ) * 16;
+ real procedure g2r ( real value x ) ; normg( x ) * pi / 200;
+
+ real procedure m2d ( real value x ) ; normm( x ) * 9 / 160;
+ real procedure m2g ( real value x ) ; normm( x ) / 16;
+ real procedure m2r ( real value x ) ; normm( x ) * pi / 3200;
+
+ real procedure r2d ( real value x ) ; normr( x ) * 180 / pi;
+ real procedure r2g ( real value x ) ; normr( x ) * 200 / pi;
+ real procedure r2m ( real value x ) ; normr( x ) * 3200 / pi;
+
+ procedure writeonF7d7 ( real value v ) ; writeon( r_format := "A", r_w := 15, r_d := 7, s_w := 0, v );
+
+ procedure printValues ( string(82) value heading
+ ; real procedure f1, f2, f3, f4
+ ; real array values( * )
+ ; integer value numberOfValues
+ ) ;
+ begin
+ write( heading );
+ write( "----------------------------------------------------------------------------------" );
+ for i := 1 until numberOfValues do begin
+ real v;
+ v := values( i );
+ write();
+ writeonF7d7( v );
+ writeon( " " ); writeonF7d7( f1( v ) ); writeon( " " ); writeonF7d7( f2( v ) );
+ writeon( " " ); writeonF7d7( f3( v ) ); writeon( " " ); writeonF7d7( f4( v ) );
+ end for_i ;
+ write()
+ end printValues ;
+
+ real array values ( 1 :: 12 );
+ values( 1 ) := -2; values( 2 ) := -1; values( 3 ) := 0; values( 4 ) := 1; values( 5 ) := 2;
+ values( 6 ) := 6.2831853; values( 7 ) := 16; values( 8 ) := 57.2957795; values( 9 ) := 359;
+ values( 10 ) := 399; values( 11 ) := 6399; values( 12 ) := 1000000;
+
+ printValues( " Degrees Normalized Gradians Mils Radians"
+ , normd, d2g, d2m, d2r, values, 12
+ );
+ printValues( " Gradians Normalized Degrees Mils Radians"
+ , normg, g2d, g2m, g2r, values, 12
+ );
+ printValues( " Mils Normalized Degrees Gradians Radians"
+ , normm, m2d, m2g, m2r, values, 12
+ );
+ printValues( " Radians Normalized Degrees Gradians Mils"
+ , normr, r2d, r2g, r2m, values, 12
+ )
+
+end.
diff --git a/Task/Anonymous-recursion/Elena/anonymous-recursion.elena b/Task/Anonymous-recursion/Elena/anonymous-recursion.elena
index bb0d758e73..f8f6bcd578 100644
--- a/Task/Anonymous-recursion/Elena/anonymous-recursion.elena
+++ b/Task/Anonymous-recursion/Elena/anonymous-recursion.elena
@@ -2,36 +2,35 @@ import extensions;
fib(n)
{
- if (n < 0)
- { InvalidArgumentException.raise() };
+ if (n < 0)
+ { InvalidArgumentException.raise() };
- ^ (n)
- {
- if (n > 1)
- {
- ^ this self(n - 2) + (this self(n - 1))
- }
- else
- {
- ^ n
- }
- }(n)
+ ^ (n) {
+ if (n > 1)
+ {
+ ^ this self(n - 2) + (this self(n - 1))
+ }
+ else
+ {
+ ^ n
+ }
+ }(n)
}
public program()
{
- for (int i := -1, i <= 10, i += 1)
- {
- console.print("fib(",i,")=");
- try
- {
- console.printLine(fib(i))
- }
- catch(Exception e)
- {
- console.printLine:"invalid"
- }
- };
+ for (int i := -1; i <= 10; i += 1)
+ {
+ console.print("fib(",i,")=");
+ try
+ {
+ console.printLine(fib(i))
+ }
+ catch(Exception e)
+ {
+ console.printLine("invalid")
+ }
+ };
- console.readChar()
+ console.readChar()
}
diff --git a/Task/Append-a-record-to-the-end-of-a-text-file/Swift/append-a-record-to-the-end-of-a-text-file-1.swift b/Task/Append-a-record-to-the-end-of-a-text-file/Swift/append-a-record-to-the-end-of-a-text-file-1.swift
new file mode 100644
index 0000000000..cb306f4c37
--- /dev/null
+++ b/Task/Append-a-record-to-the-end-of-a-text-file/Swift/append-a-record-to-the-end-of-a-text-file-1.swift
@@ -0,0 +1,34 @@
+import Foundation
+
+func appendPasswd(
+ account: String,
+ passwd: String,
+ uid: Int,
+ gid: Int,
+ bio: String,
+ home: String,
+ shell: String
+) {
+ let str = [
+ account,
+ passwd,
+ String(uid),
+ String(gid),
+ bio,
+ home,
+ shell
+ ].joined(separator: ":").appending("\n")
+ guard let data = str.data(using: .utf8) else { return }
+ let url = URL(fileURLWithPath: "./passwd")
+ do {
+ if let fileHandle = try? FileHandle(forWritingTo: url) {
+ fileHandle.seekToEndOfFile()
+ fileHandle.write(data)
+ try? fileHandle.close()
+ } else {
+ try data.write(to: url)
+ }
+ } catch {
+ print(error)
+ }
+}
diff --git a/Task/Append-a-record-to-the-end-of-a-text-file/Swift/append-a-record-to-the-end-of-a-text-file-2.swift b/Task/Append-a-record-to-the-end-of-a-text-file/Swift/append-a-record-to-the-end-of-a-text-file-2.swift
new file mode 100644
index 0000000000..4995452ef9
--- /dev/null
+++ b/Task/Append-a-record-to-the-end-of-a-text-file/Swift/append-a-record-to-the-end-of-a-text-file-2.swift
@@ -0,0 +1,9 @@
+appendPasswd(
+ account: "jsmith",
+ passwd:"x",
+ uid: 1001,
+ gid: 1000,
+ bio: "Joe Smith,Room 1007,(234)555-8917,(234)555-0077,jsmith@rosettacode.org",
+ home: "/home/jsmith",
+ shell: "/bin/bash"
+)
diff --git a/Task/Apply-a-callback-to-an-array/Elena/apply-a-callback-to-an-array.elena b/Task/Apply-a-callback-to-an-array/Elena/apply-a-callback-to-an-array.elena
index 29c9d41f6f..fde9614ade 100644
--- a/Task/Apply-a-callback-to-an-array/Elena/apply-a-callback-to-an-array.elena
+++ b/Task/Apply-a-callback-to-an-array/Elena/apply-a-callback-to-an-array.elena
@@ -4,5 +4,5 @@ PrintSecondPower(n){ console.writeLine(n * n) }
public program()
{
- new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}.forEach:PrintSecondPower
+ new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}.forEach(PrintSecondPower)
}
diff --git a/Task/Arithmetic-Integer/Elena/arithmetic-integer.elena b/Task/Arithmetic-Integer/Elena/arithmetic-integer.elena
index 9d3316ff73..d0e5d67143 100644
--- a/Task/Arithmetic-Integer/Elena/arithmetic-integer.elena
+++ b/Task/Arithmetic-Integer/Elena/arithmetic-integer.elena
@@ -10,6 +10,6 @@ public program()
console.printLine(a," - ",b," = ",a - b);
console.printLine(a," * ",b," = ",a * b);
console.printLine(a," / ",b," = ",a / b); // truncates towards 0
- console.printLine(a," % ",b," = ",a.mod:b); // matches sign of first operand
+ console.printLine(a," % ",b," = ",a.mod(b)); // matches sign of first operand
console.printLine(a," ^ ",b," = ",a ^ b);
}
diff --git a/Task/Arithmetic-derivative/EasyLang/arithmetic-derivative.easy b/Task/Arithmetic-derivative/EasyLang/arithmetic-derivative.easy
new file mode 100644
index 0000000000..e7f21eef65
--- /dev/null
+++ b/Task/Arithmetic-derivative/EasyLang/arithmetic-derivative.easy
@@ -0,0 +1,20 @@
+func lagarias n .
+ if n < 0
+ return -lagarias -n
+ .
+ if n = 0 or n = 1
+ return 0
+ .
+ f = 2
+ while n mod f <> 0
+ f += 1
+ .
+ q = n / f
+ if q = 1
+ return 1
+ .
+ return q * lagarias f + f * lagarias q
+.
+for n = -99 to 100
+ write lagarias n & " "
+.
diff --git a/Task/Arithmetic-derivative/Scala/arithmetic-derivative.scala b/Task/Arithmetic-derivative/Scala/arithmetic-derivative.scala
new file mode 100644
index 0000000000..fe26ad5277
--- /dev/null
+++ b/Task/Arithmetic-derivative/Scala/arithmetic-derivative.scala
@@ -0,0 +1,37 @@
+import java.math.BigInteger
+
+object ArithmeticDerivative extends App {
+
+ println("Arithmetic derivatives for -99 to 100 inclusive:")
+ for {
+ n <- -99 to 100
+ column = n + 100
+ } print(f"${derivative(BigInteger.valueOf(n))}%4d${if (column % 10 == 0) "\n" else " "}")
+
+ println()
+
+ val seven = BigInteger.valueOf(7)
+ for (power <- 1 to 20) {
+ println(f"D(10^$power%d) / 7 = ${derivative(BigInteger.TEN.pow(power)).divide(seven)}")
+ }
+
+ def derivative(aNumber: BigInteger): BigInteger = {
+ if (aNumber.signum == -1) {
+ return derivative(aNumber.negate()).negate()
+ }
+ if (aNumber == BigInteger.ZERO || aNumber == BigInteger.ONE) {
+ return BigInteger.ZERO
+ }
+
+ var divisor = BigInteger.TWO
+ while (divisor.multiply(divisor).compareTo(aNumber) <= 0) {
+ if (aNumber.mod(divisor).signum == 0) {
+ val quotient = aNumber.divide(divisor)
+ return quotient.multiply(derivative(divisor)).add(divisor.multiply(derivative(quotient)))
+ }
+ divisor = divisor.add(BigInteger.ONE)
+ }
+ BigInteger.ONE
+ }
+
+}
diff --git a/Task/Arithmetic-derivative/XPL0/arithmetic-derivative.xpl0 b/Task/Arithmetic-derivative/XPL0/arithmetic-derivative.xpl0
new file mode 100644
index 0000000000..eb0cf8ac84
--- /dev/null
+++ b/Task/Arithmetic-derivative/XPL0/arithmetic-derivative.xpl0
@@ -0,0 +1,28 @@
+function integer Lagarias (N); \Lagarias arithmetic derivative
+integer N;
+integer F, Q;
+
+ function integer SmallPF (J, K); \Smallest prime factor
+ integer J, K;
+ return if rem(J/K) = 0 then K else SmallPF(J, K+1);
+
+begin
+if N < 0
+then return -Lagarias (-N)
+else if N = 0 or N = 1
+then return 0
+else begin
+ F := SmallPF (N, 2); Q := N / F;
+ return if Q = 1
+ then 1
+ else Q * Lagarias (F) + F * Lagarias (Q)
+ end;
+end \Lagarias\ ;
+
+integer N;
+begin
+ for N:= -99 to 100 do begin
+ IntOut(0, Lagarias(N) );
+ if rem(N/10) = 0 then CrLf(0) else ChOut(0, 9\tab\);
+ end;
+end
diff --git a/Task/Arithmetic-evaluation/Elena/arithmetic-evaluation.elena b/Task/Arithmetic-evaluation/Elena/arithmetic-evaluation.elena
index 5e072298d5..306c087e99 100644
--- a/Task/Arithmetic-evaluation/Elena/arithmetic-evaluation.elena
+++ b/Task/Arithmetic-evaluation/Elena/arithmetic-evaluation.elena
@@ -97,7 +97,7 @@ singleton operatorState
$40 { // (
^ weak self.newBracket().gotoStarting()
}
- : {
+ ! {
^ weak self.newToken().append(ch).gotoToken()
}
}
@@ -123,8 +123,8 @@ singleton tokenState
$47 { // /
^ weak self.newFraction().gotoOperator()
}
- : {
- ^ weak self.append:ch
+ ! {
+ ^ weak self.append(ch)
}
}
}
@@ -140,8 +140,8 @@ singleton startState
$45 { // -
^ weak self.newToken().append("0").newDifference().gotoOperator()
}
- : {
- ^ weak self.newToken().append:ch.gotoToken()
+ ! {
+ ^ weak self.newToken().append(ch).gotoToken()
}
}
}
@@ -207,7 +207,7 @@ class Scope
closeBracket()
{
if (_level < 10)
- { InvalidArgumentException.new:"Invalid expression".raise() };
+ { InvalidArgumentException.new("Invalid expression").raise() };
_level := _level - 10
}
@@ -216,17 +216,17 @@ class Scope
{
if(ch >= $48 && ch < $58)
{
- _token.append:ch
+ _token.append(ch)
}
else
{
- InvalidArgumentException.new:"Invalid expression".raise()
+ InvalidArgumentException.new("Invalid expression").raise()
}
}
append(string s)
{
- s.forEach:(ch){ self.append:ch }
+ s.forEach::(ch){ self.append(ch) }
}
gotoStarting()
@@ -316,7 +316,7 @@ class Parser
{
var scope := Scope.new(self);
- text.forEach:(ch){ scope.eval:ch };
+ text.forEach::(ch){ scope.eval(ch) };
^ scope.Number
}
@@ -331,11 +331,11 @@ public program()
{
try
{
- console.printLine("=",parser.run:text)
+ console.printLine("=",parser.run(text))
}
catch(Exception e)
{
- console.writeLine:"Invalid Expression"
+ console.writeLine("Invalid Expression")
};
text.clear()
diff --git a/Task/Arithmetic-geometric-mean-Calculate-Pi/MATLAB/arithmetic-geometric-mean-calculate-pi.m b/Task/Arithmetic-geometric-mean-Calculate-Pi/MATLAB/arithmetic-geometric-mean-calculate-pi.m
new file mode 100644
index 0000000000..e9e7ba2aa0
--- /dev/null
+++ b/Task/Arithmetic-geometric-mean-Calculate-Pi/MATLAB/arithmetic-geometric-mean-calculate-pi.m
@@ -0,0 +1,42 @@
+clear all;close all;clc;
+testMakePi();
+
+
+function [a, g] = agm1step(x, y)
+ a = (x + y) / 2;
+ g = sqrt(x * y);
+end
+
+function [a, g, s, k] = approxPiStep(x, y, z, n)
+ [a, g] = agm1step(x, y);
+ k = n + 1;
+ s = z + 2^(k + 1) * (a^2 - g^2);
+end
+
+function pi_approx = approxPi(a, g, s)
+ pi_approx = 4 * a^2 / (1 - s);
+end
+
+function testMakePi()
+ digits(512); % Set the precision for variable-precision arithmetic
+ a = vpa(1.0);
+ g = 1 / sqrt(vpa(2.0));
+ s = vpa(0.0);
+ k = 0;
+ oldPi = vpa(0.0);
+ % Define a small value as a threshold for convergence
+ convergence_threshold = vpa(10)^(-digits);
+
+ fprintf(' k Error Result\n');
+ for i = 1:100
+ [a, g, s, k] = approxPiStep(a, g, s, k);
+ estPi = approxPi(a, g, s);
+ if abs(estPi - oldPi) < convergence_threshold
+ break;
+ end
+ oldPi = estPi;
+ err = abs(vpa(pi) - estPi);
+ fprintf('%4d%10.1e', i, double(err));
+ fprintf('%70.60f\n', double(estPi));
+ end
+end
diff --git a/Task/Arithmetic-numbers/AppleScript/arithmetic-numbers-1.applescript b/Task/Arithmetic-numbers/AppleScript/arithmetic-numbers-1.applescript
new file mode 100644
index 0000000000..76b9ada148
--- /dev/null
+++ b/Task/Arithmetic-numbers/AppleScript/arithmetic-numbers-1.applescript
@@ -0,0 +1,64 @@
+on isArithmetic(n)
+ if (n < 4) then
+ if (n < 0) then return {arithmetic:false, composite:missing value}
+ return {arithmetic:(n mod 2 = 1), composite:false}
+ end if
+ set factorSum to 1 + n
+ set factorCount to 2
+ set sqrt to n ^ 0.5
+ set limit to sqrt div 1
+ if (limit = sqrt) then
+ set factorSum to factorSum + limit
+ set factorCount to 3
+ set limit to limit - 1
+ end if
+ repeat with i from 2 to limit
+ if (n mod i = 0) then
+ set factorSum to factorSum + i + n div i
+ set factorCount to factorCount + 2
+ end if
+ end repeat
+
+ return {arithmetic:(factorSum mod factorCount = 0), composite:(factorCount > 2)}
+end isArithmetic
+
+on task()
+ set output to {linefeed & "The first 100 arithmetic numbers are:"}
+ set {n, hitCount, compositeCount, pad} to {0, 0, 0, " "}
+ repeat 10 times
+ set row to {}
+ set targetCount to hitCount + 10
+ repeat until (hitCount = targetCount)
+ set n to n + 1
+ tell isArithmetic(n) to if (its arithmetic) then
+ set hitCount to hitCount + 1
+ if (its composite) then set compositeCount to compositeCount + 1
+ set row's end to text -4 thru -1 of (pad & n)
+ end if
+ end repeat
+ set output's end to join(row, "")
+ end repeat
+ repeat with targetCount in {1000, 10000, 100000, 1000000}
+ repeat while (hitCount < targetCount)
+ set n to n + 1
+ tell isArithmetic(n) to if (its arithmetic) then
+ set hitCount to hitCount + 1
+ if (its composite) then set compositeCount to compositeCount + 1
+ end if
+ end repeat
+ set output's end to (linefeed & "The " & targetCount & "th arithmetic number is " & n) & ¬
+ (linefeed & "(" & compositeCount & " composite numbers up to here)")
+ end repeat
+
+ return join(output, linefeed)
+end task
+
+on join(lst, delim)
+ set astid to AppleScript's text item delimiters
+ set AppleScript's text item delimiters to delim
+ set txt to lst as text
+ set AppleScript's text item delimiters to astid
+ return txt
+end join
+
+task()
diff --git a/Task/Arithmetic-numbers/AppleScript/arithmetic-numbers-2.applescript b/Task/Arithmetic-numbers/AppleScript/arithmetic-numbers-2.applescript
new file mode 100644
index 0000000000..58eb79803e
--- /dev/null
+++ b/Task/Arithmetic-numbers/AppleScript/arithmetic-numbers-2.applescript
@@ -0,0 +1,24 @@
+"
+The first 100 arithmetic numbers are:
+ 1 3 5 6 7 11 13 14 15 17
+ 19 20 21 22 23 27 29 30 31 33
+ 35 37 38 39 41 42 43 44 45 46
+ 47 49 51 53 54 55 56 57 59 60
+ 61 62 65 66 67 68 69 70 71 73
+ 77 78 79 83 85 86 87 89 91 92
+ 93 94 95 96 97 99 101 102 103 105
+ 107 109 110 111 113 114 115 116 118 119
+ 123 125 126 127 129 131 132 133 134 135
+ 137 138 139 140 141 142 143 145 147 149
+
+The 1000th arithmetic number is 1361
+(782 composite numbers up to here)
+
+The 10000th arithmetic number is 12953
+(8458 composite numbers up to here)
+
+The 100000th arithmetic number is 125587
+(88219 composite numbers up to here)
+
+The 1000000th arithmetic number is 1228663
+(905043 composite numbers up to here)"
diff --git a/Task/Arithmetic-numbers/C-sharp/arithmetic-numbers.cs b/Task/Arithmetic-numbers/C-sharp/arithmetic-numbers.cs
new file mode 100644
index 0000000000..62a285d4e1
--- /dev/null
+++ b/Task/Arithmetic-numbers/C-sharp/arithmetic-numbers.cs
@@ -0,0 +1,55 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+public class ArithmeticNumbers
+{
+ public static void Main(string[] args)
+ {
+ int arithmeticCount = 0;
+ int compositeCount = 0;
+ int n = 1;
+
+ while (arithmeticCount <= 1_000_000)
+ {
+ var factors = Factors(n);
+ int sum = factors.Sum();
+ if (sum % factors.Count == 0)
+ {
+ arithmeticCount++;
+ if (factors.Count > 2)
+ {
+ compositeCount++;
+ }
+ if (arithmeticCount <= 100)
+ {
+ Console.Write($"{n,3}{(arithmeticCount % 10 == 0 ? "\n" : " ")}");
+ }
+ if (new[] { 1_000, 10_000, 100_000, 1_000_000 }.Contains(arithmeticCount))
+ {
+ Console.WriteLine();
+ Console.WriteLine($"{arithmeticCount}th arithmetic number is {n}");
+ Console.WriteLine($"Number of composite arithmetic numbers <= {n}: {compositeCount}");
+ }
+ }
+ n++;
+ }
+ }
+
+ private static HashSet Factors(int number)
+ {
+ var result = new HashSet { 1, number };
+ int i = 2;
+ int j;
+ while ((j = number / i) >= i)
+ {
+ if (i * j == number)
+ {
+ result.Add(i);
+ result.Add(j);
+ }
+ i++;
+ }
+ return result;
+ }
+}
diff --git a/Task/Arithmetic-numbers/Scala/arithmetic-numbers.scala b/Task/Arithmetic-numbers/Scala/arithmetic-numbers.scala
new file mode 100644
index 0000000000..935ecafb6b
--- /dev/null
+++ b/Task/Arithmetic-numbers/Scala/arithmetic-numbers.scala
@@ -0,0 +1,27 @@
+object ArithmeticNumbers extends App {
+ var arithmeticCount = 0
+ var compositeCount = 0
+ var n = 1
+
+ while (arithmeticCount <= 1_000_000) {
+ val factors = findFactors(n)
+ val sum = factors.sum
+ if (sum % factors.size == 0) {
+ arithmeticCount += 1
+ if (factors.size > 2) compositeCount += 1
+ if (arithmeticCount <= 100) {
+ print(f"$n%3d" + (if (arithmeticCount % 10 == 0) "\n" else " "))
+ }
+ if (List(1_000, 10_000, 100_000, 1_000_000).contains(arithmeticCount)) {
+ println()
+ println(s"${arithmeticCount}th arithmetic number is $n")
+ println(s"Number of composite arithmetic numbers <= $n: $compositeCount")
+ }
+ }
+ n += 1
+ }
+
+ def findFactors(number: Int): Set[Int] = {
+ (1 to number).filter(number % _ == 0).toSet
+ }
+}
diff --git a/Task/Array-concatenation/Free-Pascal-Lazarus/array-concatenation-3.pas b/Task/Array-concatenation/Free-Pascal-Lazarus/array-concatenation-3.pas
new file mode 100644
index 0000000000..1f7026a11f
--- /dev/null
+++ b/Task/Array-concatenation/Free-Pascal-Lazarus/array-concatenation-3.pas
@@ -0,0 +1,21 @@
+Program arrayConcat;
+
+{$mode delphi}
+
+type
+ TDynArr = array of integer;
+
+var
+ i: integer;
+ arr1, arr2, arrSum : TDynArr;
+
+begin
+ arr1 := [1, 2, 3];
+ arr2 := [4, 5, 6];
+
+ arrSum := arr1 + arr2;
+
+ for i in arrSum do
+ write(i, ' ');
+ writeln;
+end.
diff --git a/Task/Array-length/K/array-length.k b/Task/Array-length/K/array-length.k
new file mode 100644
index 0000000000..03a2f69162
--- /dev/null
+++ b/Task/Array-length/K/array-length.k
@@ -0,0 +1 @@
+#("apple";"orange")
diff --git a/Task/Arrays/Elena/arrays-2.elena b/Task/Arrays/Elena/arrays-2.elena
index 04e4f5031f..e857d71772 100644
--- a/Task/Arrays/Elena/arrays-2.elena
+++ b/Task/Arrays/Elena/arrays-2.elena
@@ -1,4 +1,4 @@
- var array := system'Array.allocate:3;
+ var array := system'Array.allocate(3);
array[0] := 1;
array[1] := 2;
array[2] := 3;
diff --git a/Task/Arrays/Elena/arrays-4.elena b/Task/Arrays/Elena/arrays-4.elena
index 8e9883dd42..a47b18d5b5 100644
--- a/Task/Arrays/Elena/arrays-4.elena
+++ b/Task/Arrays/Elena/arrays-4.elena
@@ -1,6 +1,6 @@
var dynamicArray := new system'collections'ArrayList();
- dynamicArray.append:1;
- dynamicArray.append:2;
- dynamicArray.append:4;
+ dynamicArray.append(1);
+ dynamicArray.append(2);
+ dynamicArray.append(4);
dynamicArray[2] := 3;
diff --git a/Task/Associative-array-Iteration/Kotlin/associative-array-iteration.kotlin b/Task/Associative-array-Iteration/Kotlin/associative-array-iteration.kotlin
index 94173d64a3..7b58f2a325 100644
--- a/Task/Associative-array-Iteration/Kotlin/associative-array-iteration.kotlin
+++ b/Task/Associative-array-Iteration/Kotlin/associative-array-iteration.kotlin
@@ -1,8 +1,8 @@
-fun main(a: Array) {
+fun main() {
val map = mapOf("hello" to 1, "world" to 2, "!" to 3)
with(map) {
- entries.forEach { println("key = ${it.key}, value = ${it.value}") }
+ forEach { println("key = ${it.key}, value = ${it.value}") }
keys.forEach { println("key = $it") }
values.forEach { println("value = $it") }
}
diff --git a/Task/Averages-Arithmetic-mean/APL/averages-arithmetic-mean.apl b/Task/Averages-Arithmetic-mean/APL/averages-arithmetic-mean-1.apl
similarity index 100%
rename from Task/Averages-Arithmetic-mean/APL/averages-arithmetic-mean.apl
rename to Task/Averages-Arithmetic-mean/APL/averages-arithmetic-mean-1.apl
diff --git a/Task/Averages-Arithmetic-mean/APL/averages-arithmetic-mean-2.apl b/Task/Averages-Arithmetic-mean/APL/averages-arithmetic-mean-2.apl
new file mode 100644
index 0000000000..ba7d632d12
--- /dev/null
+++ b/Task/Averages-Arithmetic-mean/APL/averages-arithmetic-mean-2.apl
@@ -0,0 +1,3 @@
+ Avg←{(+⌿⍵)÷≢⍵}
+ Avg 1 2 3 4 5 6
+3.5
diff --git a/Task/Averages-Arithmetic-mean/APL/averages-arithmetic-mean-3.apl b/Task/Averages-Arithmetic-mean/APL/averages-arithmetic-mean-3.apl
new file mode 100644
index 0000000000..07c2a8b173
--- /dev/null
+++ b/Task/Averages-Arithmetic-mean/APL/averages-arithmetic-mean-3.apl
@@ -0,0 +1,3 @@
+ Avg← +⌿÷≢
+ Avg 1 2 3 4 5 6
+3.5
diff --git a/Task/Averages-Arithmetic-mean/RPL/averages-arithmetic-mean.rpl b/Task/Averages-Arithmetic-mean/RPL/averages-arithmetic-mean.rpl
deleted file mode 100644
index f47f99470a..0000000000
--- a/Task/Averages-Arithmetic-mean/RPL/averages-arithmetic-mean.rpl
+++ /dev/null
@@ -1,4 +0,0 @@
-1 2 3 5 7
-AMEAN
- << CLEAR DEPTH DUP 'N' STO →LIST ΣLIST N / >>
-3.6
diff --git a/Task/Averages-Mean-time-of-day/ALGOL-68/averages-mean-time-of-day.alg b/Task/Averages-Mean-time-of-day/ALGOL-68/averages-mean-time-of-day.alg
new file mode 100644
index 0000000000..82c7d87400
--- /dev/null
+++ b/Task/Averages-Mean-time-of-day/ALGOL-68/averages-mean-time-of-day.alg
@@ -0,0 +1,46 @@
+BEGIN # Mean time of day mapping time to angles #
+
+ # code from the Averages/Mean angle task - angles are in degrees #
+ PROC mean angle = ([]REAL angles)REAL:
+ (
+ INT size = UPB angles - LWB angles + 1;
+ REAL y part := 0, x part := 0;
+ FOR i FROM LWB angles TO UPB angles DO
+ x part +:= cos (angles[i] * pi / 180);
+ y part +:= sin (angles[i] * pi / 180)
+ OD;
+
+ arc tan2 (y part / size, x part / size) * 180 / pi
+ );
+ # end code from the Averages/Mean angle task #
+
+ MODE TIME = STRUCT( INT hh, mm, ss );
+
+ OP TOANGLE = ( TIME t )REAL: ( ( ( ( ( ss OF t / 60 ) + mm OF t ) / 60 ) + hh OF t ) * 360 ) / 24;
+ OP TOTIME = ( REAL a )TIME:
+ BEGIN
+ REAL t := ( a * 24 ) / 360;
+ WHILE t < 0 DO t +:= 24 OD;
+ WHILE t > 24 DO t -:= 24 OD;
+ INT hh = ENTIER t;
+ t -:= hh *:= 60;
+ INT mm = ENTIER t;
+ INT ss = ENTIER ( ( t - mm ) * 60 );
+ ( hh, mm, ss )
+ END # TOTIME # ;
+
+ PROC mean time = ( []TIME times )TIME:
+ BEGIN
+ [ LWB times : UPB times ]REAL angles;
+ FOR i FROM LWB times TO UPB times DO angles[ i ] := TOANGLE times[ i ] OD;
+ TOTIME mean angle( angles )
+ END # mean time # ;
+
+ OP SHOW = ( TIME t )VOID:
+ BEGIN
+ PROC d2 = ( INT n )STRING: IF n < 10 THEN "0" ELSE "" FI + whole( n, 0 );
+ print( ( d2( hh OF t ), ":", d2( mm OF t ), ":", d2( ss OF t ) ) )
+ END # show time # ;
+
+ SHOW mean time( ( ( 23,00,17 ), ( 23,40,20 ), ( 00,12,45 ), ( 00,17,19 ) ) )
+END
diff --git a/Task/Averages-Median/Elena/averages-median.elena b/Task/Averages-Median/Elena/averages-median.elena
index 12548a8e13..8dd0572594 100644
--- a/Task/Averages-Median/Elena/averages-median.elena
+++ b/Task/Averages-Median/Elena/averages-median.elena
@@ -16,7 +16,7 @@ extension op
else
{
var middleIndex := len / 2;
- if (len.mod:2 == 0)
+ if (len.mod(2) == 0)
{
^ (sorted[middleIndex - 1] + sorted[middleIndex]) / 2
}
diff --git a/Task/Averages-Median/Swift/averages-median-1.swift b/Task/Averages-Median/Swift/averages-median-1.swift
new file mode 100644
index 0000000000..bc352bebf2
--- /dev/null
+++ b/Task/Averages-Median/Swift/averages-median-1.swift
@@ -0,0 +1,47 @@
+ // Utility to aid easy type conversion
+extension Double {
+ init(withNum v: any Numeric) {
+ switch v {
+ case let ii as any BinaryInteger: self.init(ii)
+ case let ff as any BinaryFloatingPoint: self.init(ff)
+ default: self.init()
+ }
+ }
+}
+
+extension Array where Element: Numeric & Comparable {
+ // Helper func for random element in range
+ func randomElement(within: Range) -> Element {
+ return self[.random(in: within)]
+ }
+
+ mutating func median() -> Double? {
+ switch self.count {
+ case 0: return nil
+ case 1: return Double(withNum: self[0])
+ case 2: return self.reduce(0, {sum,this in sum + Double(withNum: this)/2.0})
+ default: break
+ }
+ let pTarget: Int = self.count / 2 + 1
+ let resultSetLen: Int = self.count.isMultiple(of: 2) ? 2 : 1
+ func divideAndConquer(bottom: Int, top: Int, goal: Int) -> Int {
+ var (lower,upper) = (bottom,top)
+ while true {
+ let splitVal = self.randomElement(within: lower.. splitVal})
+ switch partitionIndex {
+ case goal: return partitionIndex
+ case .. p > n);
+ countMap := countMap.Values.sort::(p,n => p > n);
var max := countMap.FirstMember;
^ countMap
- .filterBy:(kv => max.equal(kv.Value))
- .selectBy:(kv => kv.Key)
+ .filterBy::(kv => max.equal(kv.Value))
+ .selectBy::(kv => kv.Key)
.toArray()
}
}
public program()
{
- var array1 := new int[]{1, 1, 2, 4, 4};
- var array2 := new int[]{1, 3, 6, 6, 6, 6, 7, 7, 12, 12, 17};
- var array3 := new object[]{1, "blue", 2, 7.5r, 5, "green", "red", 5, 2, "blue", "white"};
+ var array1 := new int[]{1, 1, 2, 4, 4};
+ var array2 := new int[]{1, 3, 6, 6, 6, 6, 7, 7, 12, 12, 17};
+ var array3 := new object[]{1, "blue", 2, 7.5r, 5, "green", "red", 5, 2, "blue", "white"};
- console
- .printLine("mode of (",array1.asEnumerable(),") is (",array1.Mode,")")
- .printLine("mode of (",array2.asEnumerable(),") is (",array2.Mode,")")
- .printLine("mode of (",array3.asEnumerable(),") is (",array3.Mode,")")
- .readChar()
+ console
+ .printLine("mode of (",array1.asEnumerable(),") is (",array1.Mode,")")
+ .printLine("mode of (",array2.asEnumerable(),") is (",array2.Mode,")")
+ .printLine("mode of (",array3.asEnumerable(),") is (",array3.Mode,")")
+ .readChar()
}
diff --git a/Task/Averages-Pythagorean-means/FutureBasic/averages-pythagorean-means.basic b/Task/Averages-Pythagorean-means/FutureBasic/averages-pythagorean-means.basic
new file mode 100644
index 0000000000..8949b2b5c9
--- /dev/null
+++ b/Task/Averages-Pythagorean-means/FutureBasic/averages-pythagorean-means.basic
@@ -0,0 +1,14 @@
+Double ari = 1, geo = 0, har = 0
+Short i, n = 10
+
+for i = 1 to n
+ ari += i
+ geo *= i
+ har += 1 \ i
+next
+
+print "ari:", ari \ n
+print "geo:", geo^( 1 \ n )
+print "har:", n \ har
+
+handleevents
diff --git a/Task/Averages-Pythagorean-means/Swift/averages-pythagorean-means.swift b/Task/Averages-Pythagorean-means/Swift/averages-pythagorean-means.swift
new file mode 100644
index 0000000000..0c7cc0a752
--- /dev/null
+++ b/Task/Averages-Pythagorean-means/Swift/averages-pythagorean-means.swift
@@ -0,0 +1,33 @@
+ // Utility for easy creation of Double from any Numeric
+extension Double {
+ init(withNum v: any Numeric) {
+ switch v {
+ case let ii as any BinaryInteger: self.init(ii)
+ case let ff as any BinaryFloatingPoint: self.init(ff)
+ default: self.init()
+ }
+ }
+}
+ // Extension for numeric collections
+extension Collection where Element: Numeric {
+ var arithmeticMean: Double {
+ self.reduce(0.0, {$0 + Double(withNum: $1)})/Double(self.count)
+ }
+ var geometricMean: Double {
+ pow(self.reduce(1.0, {$0 * Double(withNum: $1)}), 1.0/Double(self.count))
+ }
+ var harmonicMean: Double {
+ Double(self.count) / self.reduce(0.0, {$0 + 1.0/Double(withNum:$1)})
+ }
+}
+//Usage:
+var c: [Int] = (1...10).map {$0}
+
+print(c.arithmeticMean)
+print(c.geometricMean)
+print(c.harmonicMean)
+
+// output:
+// 5.5
+// 4.528728688116765
+// 3.414171521474055
diff --git a/Task/Averages-Root-mean-square/Elena/averages-root-mean-square.elena b/Task/Averages-Root-mean-square/Elena/averages-root-mean-square.elena
index c39c562aed..66c1f5e9b3 100644
--- a/Task/Averages-Root-mean-square/Elena/averages-root-mean-square.elena
+++ b/Task/Averages-Root-mean-square/Elena/averages-root-mean-square.elena
@@ -5,7 +5,7 @@ import system'math;
extension op
{
get RootMeanSquare()
- = (self.selectBy:(x => x * x).summarize(Real.new()) / self.Length).sqrt();
+ = (self.selectBy::(x => x * x).summarize(Real.new()) / self.Length).sqrt();
}
public program()
diff --git a/Task/Averages-Simple-moving-average/Elena/averages-simple-moving-average.elena b/Task/Averages-Simple-moving-average/Elena/averages-simple-moving-average.elena
index c3776445db..c1663edc5a 100644
--- a/Task/Averages-Simple-moving-average/Elena/averages-simple-moving-average.elena
+++ b/Task/Averages-Simple-moving-average/Elena/averages-simple-moving-average.elena
@@ -20,10 +20,10 @@ class SMA
var count := theList.Length;
count =>
0 { ^0.0r }
- : {
+ ! {
if (count > thePeriod)
{
- theList.removeAt:0;
+ theList.removeAt(0);
count := thePeriod
};
@@ -35,19 +35,21 @@ class SMA
}
}
+// --- Program ---
+
public program()
{
- var SMA3 := SMA.new:3;
- var SMA5 := SMA.new:5;
+ var SMA3 := SMA.new(3);
+ var SMA5 := SMA.new(5);
- for (int i := 1, i <= 5, i += 1) {
- console.printPaddingRight(30, "sma3 + ", i, " = ", SMA3.append:i);
- console.printLine("sma5 + ", i, " = ", SMA5.append:i)
+ for (int i := 1; i <= 5; i += 1) {
+ console.printPaddingRight(30, "sma3 + ", i, " = ", SMA3.append(i));
+ console.printLine("sma5 + ", i, " = ", SMA5.append(i))
};
- for (int i := 5, i >= 1, i -= 1) {
- console.printPaddingRight(30, "sma3 + ", i, " = ", SMA3.append:i);
- console.printLine("sma5 + ", i, " = ", SMA5.append:i)
+ for (int i := 5; i >= 1; i -= 1) {
+ console.printPaddingRight(30, "sma3 + ", i, " = ", SMA3.append(i));
+ console.printLine("sma5 + ", i, " = ", SMA5.append(i))
};
console.readChar()
diff --git a/Task/B-zier-curves-Intersections/C-sharp/b-zier-curves-intersections.cs b/Task/B-zier-curves-Intersections/C-sharp/b-zier-curves-intersections.cs
new file mode 100644
index 0000000000..ab344ade1e
--- /dev/null
+++ b/Task/B-zier-curves-Intersections/C-sharp/b-zier-curves-intersections.cs
@@ -0,0 +1,180 @@
+using System;
+using System.Collections.Generic;
+
+public class BezierCurveIntersection
+{
+ public static void Main(string[] args)
+ {
+ QuadCurve vertical = new QuadCurve(new QuadSpline(-1.0, 0.0, 1.0), new QuadSpline(0.0, 10.0, 0.0));
+ // QuadCurve vertical represents the Bezier curve having control points (-1, 0), (0, 10) and (1, 0)
+ QuadCurve horizontal = new QuadCurve(new QuadSpline(2.0, -8.0, 2.0), new QuadSpline(1.0, 2.0, 3.0));
+ // QuadCurve horizontal represents the Bezier curve having control points (2, 1), (-8, 2) and (2, 3)
+
+ Console.WriteLine("The points of intersection are:");
+ List intersects = FindIntersects(vertical, horizontal);
+ foreach (Point intersect in intersects)
+ {
+ Console.WriteLine($"( {intersect.X,9:0.000000}, {intersect.Y,9:0.000000} )");
+ }
+ }
+
+ private static List FindIntersects(QuadCurve p, QuadCurve q)
+ {
+ List result = new List();
+ Stack stack = new Stack();
+ stack.Push(p);
+ stack.Push(q);
+
+ while (stack.Count > 0)
+ {
+ QuadCurve pp = stack.Pop();
+ QuadCurve qq = stack.Pop();
+ List