diff --git a/Lang/8080-Assembly/Square-but-not-cube b/Lang/8080-Assembly/Square-but-not-cube
new file mode 120000
index 0000000000..e8de867485
--- /dev/null
+++ b/Lang/8080-Assembly/Square-but-not-cube
@@ -0,0 +1 @@
+../../Task/Square-but-not-cube/8080-Assembly
\ No newline at end of file
diff --git a/Lang/AArch64-Assembly/Pi b/Lang/AArch64-Assembly/Pi
new file mode 120000
index 0000000000..34be149f2d
--- /dev/null
+++ b/Lang/AArch64-Assembly/Pi
@@ -0,0 +1 @@
+../../Task/Pi/AArch64-Assembly
\ No newline at end of file
diff --git a/Lang/ABC/Look-and-say-sequence b/Lang/ABC/Look-and-say-sequence
new file mode 120000
index 0000000000..68b9661932
--- /dev/null
+++ b/Lang/ABC/Look-and-say-sequence
@@ -0,0 +1 @@
+../../Task/Look-and-say-sequence/ABC
\ No newline at end of file
diff --git a/Lang/ABC/Population-count b/Lang/ABC/Population-count
new file mode 120000
index 0000000000..6bd44c7e1e
--- /dev/null
+++ b/Lang/ABC/Population-count
@@ -0,0 +1 @@
+../../Task/Population-count/ABC
\ No newline at end of file
diff --git a/Lang/ABC/Square-but-not-cube b/Lang/ABC/Square-but-not-cube
new file mode 120000
index 0000000000..23a046e711
--- /dev/null
+++ b/Lang/ABC/Square-but-not-cube
@@ -0,0 +1 @@
+../../Task/Square-but-not-cube/ABC
\ No newline at end of file
diff --git a/Lang/ALGOL-68/00-LANG.txt b/Lang/ALGOL-68/00-LANG.txt
index c77464279f..4aa1cbcf81 100644
--- a/Lang/ALGOL-68/00-LANG.txt
+++ b/Lang/ALGOL-68/00-LANG.txt
@@ -67,7 +67,7 @@ A syntax chart is available [http://www.softwarepreservation.org/projects/ALGOL/
*Oct. 1968: Penultimate Draft Report on the Algorithmic Language ALGOL 68 - Chapters 1-9 - Edited by: A. van Wijngaarden, B.J. Mailloux, J.E.L. Peck and C.H.A. Koster.
*Dec. 1968: Report on the Algorithmic Language ALGOL 68 - Offprint from Numerische Mathematik, 14, 79-218 (1969); Springer-Verlag. - Edited by: A. van Wijngaarden, B.J. Mailloux, J.E.L. Peck and C.H.A. Koster.
*Sep 1973: Revised Report on the Algorithmic Language Algol 68 - Springer-Verlag 1976 - Edited by: A. van Wijngaarden, B.J. Mailloux, J.E.L. Peck, C.H.A. Koster, M. Sintzoff, C.H. Lindsey, L.G.L.T. Meertens and R.G. Fisker.
-==Coding style of samples==
+==Coding style of samples, alphabets and stropping==
Click "Expand" for more details.
@@ -96,23 +96,30 @@ not too much else is required. Examples:
END
FINISH
|}
+
'''Alphabets'''
+
+Notionally, Algol 68 source is written in two alphabets. The reserved words, mode indicants (type names) and operators that are non-symbolic (.e.g. '''and''', '''or''', ...) are generally referred to as "bold words" and usually shown in a bold font in literature. Words that are identifiers (used for "variable" names, procedure names, structure member names, ...) are in a separate, non-bold font.
+The [https://www.softwarepreservation.org/projects/ALGOL/manual/a68s.txt/view Manual for CMU ALGOL 68S (on softwarepreservation.org)] refers to the non-bold words as being in timid face.
'''Examples of different program representations'''
At the time when ALGOL 68 was defined some predominant computers had
24 or 36 bit words, with 6 bit character sets. Hence it was desirable that
-ALGOL 68 should be able to run on machines with only uppercase.
+ALGOL 68 should be able to run on machines with only uppercase.
+As multiple fonts were generally unavailable, a method of identifying the bold words was required.
The official spec provided for different representations of the same
-program. Quote stropping (enclosing the bold words in single quotes)
+program.
+Quote stropping (enclosing the bold words in single quotes)
and Point stropping (preceeding the bold words with a dot)
-were used. A variant of Point stropping called RES stropping was also defined.
-In RES stropping some language-defined bold words are not preceded by a dot.
+were used.
+A variant of Point stropping called RES stropping was also defined.
+In RES stropping some language-defined bold words are not preceded by a dot.
A pragmatic comment may have been required to indicate which
-stropping convention was to be used, as in some of the examples below.
+stropping convention was to be used, as in some of the examples below.
Upper stropping (representing the bold words by upper case and
-non-bold words in lower case) was introduced by Algol 68R. Upper stropping
-is used by Algol 68RS and is one of the options for Algol 68G.
-Rutgers ALGOL 68 uses quote stropping. Most of the samples
-on Rosetta Code use Upper stropping.
+non-bold words in lower case) was introduced by Algol 68R.
+Upper stropping is used by Algol 68RS and is one of the options for Algol 68G.
+Rutgers ALGOL 68 uses quote stropping.
+Most of the samples on Rosetta Code use Upper stropping.
Examples (pragmatic comments to set the stropping regime not shown):
{|border="1" style="border-collapse: collapse; border: 2px double grey;" align="left"
|| Algol68 as typically published
@@ -281,5 +288,9 @@ For more details about Primaries and Secondaries refer to [[Operator_precedence#
[https://rosettacode.org/wiki/Category:ALGOL_68-rows Row (array) related]
[https://rosettacode.org/wiki/Category:ALGOL_68-l-system L-System related]
+== Tools ==
+[[Syntax_highlighting_using_Mediawiki_formatting#ALGOL 68|Format an upper-stropped Algol 68 source with Mediawiki markup]]
+[[Compiler/Simple_file_inclusion_pre_processor#ALGOL 68|Implement ''read'' and ''include'' pragmatic-comments for compilers that don't support file inclusion]]
+
{{language programming paradigm|Concurrent}}
{{language programming paradigm|Imperative}}
\ No newline at end of file
diff --git a/Lang/ALGOL-68/Draw-a-cuboid b/Lang/ALGOL-68/Draw-a-cuboid
new file mode 120000
index 0000000000..3102af7fc7
--- /dev/null
+++ b/Lang/ALGOL-68/Draw-a-cuboid
@@ -0,0 +1 @@
+../../Task/Draw-a-cuboid/ALGOL-68
\ No newline at end of file
diff --git a/Lang/ALGOL-68/Perlin-noise b/Lang/ALGOL-68/Perlin-noise
new file mode 120000
index 0000000000..8bd6981103
--- /dev/null
+++ b/Lang/ALGOL-68/Perlin-noise
@@ -0,0 +1 @@
+../../Task/Perlin-noise/ALGOL-68
\ No newline at end of file
diff --git a/Lang/ALGOL-68/Sleeping-Beauty-problem b/Lang/ALGOL-68/Sleeping-Beauty-problem
new file mode 120000
index 0000000000..b5873d4f8d
--- /dev/null
+++ b/Lang/ALGOL-68/Sleeping-Beauty-problem
@@ -0,0 +1 @@
+../../Task/Sleeping-Beauty-problem/ALGOL-68
\ No newline at end of file
diff --git a/Lang/ALGOL-68/Sorting-Algorithms-Circle-Sort b/Lang/ALGOL-68/Sorting-Algorithms-Circle-Sort
new file mode 120000
index 0000000000..de6d7c8e6a
--- /dev/null
+++ b/Lang/ALGOL-68/Sorting-Algorithms-Circle-Sort
@@ -0,0 +1 @@
+../../Task/Sorting-Algorithms-Circle-Sort/ALGOL-68
\ No newline at end of file
diff --git a/Lang/ALGOL-W/Eulers-constant-0.5772... b/Lang/ALGOL-W/Eulers-constant-0.5772...
new file mode 120000
index 0000000000..809de9e1fd
--- /dev/null
+++ b/Lang/ALGOL-W/Eulers-constant-0.5772...
@@ -0,0 +1 @@
+../../Task/Eulers-constant-0.5772.../ALGOL-W
\ No newline at end of file
diff --git a/Lang/ALGOL-W/Find-the-intersection-of-two-lines b/Lang/ALGOL-W/Find-the-intersection-of-two-lines
new file mode 120000
index 0000000000..0514984ef6
--- /dev/null
+++ b/Lang/ALGOL-W/Find-the-intersection-of-two-lines
@@ -0,0 +1 @@
+../../Task/Find-the-intersection-of-two-lines/ALGOL-W
\ No newline at end of file
diff --git a/Lang/ALGOL-W/Pseudo-random-numbers-Middle-square-method b/Lang/ALGOL-W/Pseudo-random-numbers-Middle-square-method
new file mode 120000
index 0000000000..e6f0e36a5b
--- /dev/null
+++ b/Lang/ALGOL-W/Pseudo-random-numbers-Middle-square-method
@@ -0,0 +1 @@
+../../Task/Pseudo-random-numbers-Middle-square-method/ALGOL-W
\ No newline at end of file
diff --git a/Lang/ANSI-BASIC/Damm-algorithm b/Lang/ANSI-BASIC/Damm-algorithm
new file mode 120000
index 0000000000..e4b39fdaa1
--- /dev/null
+++ b/Lang/ANSI-BASIC/Damm-algorithm
@@ -0,0 +1 @@
+../../Task/Damm-algorithm/ANSI-BASIC
\ No newline at end of file
diff --git a/Lang/ANSI-BASIC/Formatted-numeric-output b/Lang/ANSI-BASIC/Formatted-numeric-output
new file mode 120000
index 0000000000..e876b7e939
--- /dev/null
+++ b/Lang/ANSI-BASIC/Formatted-numeric-output
@@ -0,0 +1 @@
+../../Task/Formatted-numeric-output/ANSI-BASIC
\ No newline at end of file
diff --git a/Lang/ANSI-BASIC/Function-definition b/Lang/ANSI-BASIC/Function-definition
new file mode 120000
index 0000000000..c45352eba7
--- /dev/null
+++ b/Lang/ANSI-BASIC/Function-definition
@@ -0,0 +1 @@
+../../Task/Function-definition/ANSI-BASIC
\ No newline at end of file
diff --git a/Lang/ANSI-BASIC/Monty-Hall-problem b/Lang/ANSI-BASIC/Monty-Hall-problem
new file mode 120000
index 0000000000..8f9a29cbcc
--- /dev/null
+++ b/Lang/ANSI-BASIC/Monty-Hall-problem
@@ -0,0 +1 @@
+../../Task/Monty-Hall-problem/ANSI-BASIC
\ No newline at end of file
diff --git a/Lang/ANSI-BASIC/Random-numbers b/Lang/ANSI-BASIC/Random-numbers
new file mode 120000
index 0000000000..1de5221db0
--- /dev/null
+++ b/Lang/ANSI-BASIC/Random-numbers
@@ -0,0 +1 @@
+../../Task/Random-numbers/ANSI-BASIC
\ No newline at end of file
diff --git a/Lang/ANSI-BASIC/Real-constants-and-functions b/Lang/ANSI-BASIC/Real-constants-and-functions
new file mode 120000
index 0000000000..02cced5726
--- /dev/null
+++ b/Lang/ANSI-BASIC/Real-constants-and-functions
@@ -0,0 +1 @@
+../../Task/Real-constants-and-functions/ANSI-BASIC
\ No newline at end of file
diff --git a/Lang/ANSI-BASIC/Sorting-algorithms-Quicksort b/Lang/ANSI-BASIC/Sorting-algorithms-Quicksort
new file mode 120000
index 0000000000..acf4c89afe
--- /dev/null
+++ b/Lang/ANSI-BASIC/Sorting-algorithms-Quicksort
@@ -0,0 +1 @@
+../../Task/Sorting-algorithms-Quicksort/ANSI-BASIC
\ No newline at end of file
diff --git a/Lang/APL/Display-a-linear-combination b/Lang/APL/Display-a-linear-combination
new file mode 120000
index 0000000000..0e1867473a
--- /dev/null
+++ b/Lang/APL/Display-a-linear-combination
@@ -0,0 +1 @@
+../../Task/Display-a-linear-combination/APL
\ No newline at end of file
diff --git a/Lang/APL/Pisano-period b/Lang/APL/Pisano-period
new file mode 120000
index 0000000000..d81ff37307
--- /dev/null
+++ b/Lang/APL/Pisano-period
@@ -0,0 +1 @@
+../../Task/Pisano-period/APL
\ No newline at end of file
diff --git a/Lang/APL/Word-ladder b/Lang/APL/Word-ladder
new file mode 120000
index 0000000000..6de9f38d51
--- /dev/null
+++ b/Lang/APL/Word-ladder
@@ -0,0 +1 @@
+../../Task/Word-ladder/APL
\ No newline at end of file
diff --git a/Lang/ARM-Assembly/Pi b/Lang/ARM-Assembly/Pi
new file mode 120000
index 0000000000..97b44cbcc1
--- /dev/null
+++ b/Lang/ARM-Assembly/Pi
@@ -0,0 +1 @@
+../../Task/Pi/ARM-Assembly
\ No newline at end of file
diff --git a/Lang/Ada/00-LANG.txt b/Lang/Ada/00-LANG.txt
index 85a16e96c0..f17f9738ab 100644
--- a/Lang/Ada/00-LANG.txt
+++ b/Lang/Ada/00-LANG.txt
@@ -17,4 +17,6 @@ The language is named after [[wp:Ada_Lovelace|Augusta Ada King, Countess of Love
{{Language programming paradigm|Distributed}}
{{Language programming paradigm|Generic}}
{{Language programming paradigm|Imperative}}
-{{Language programming paradigm|Object-oriented}}
\ No newline at end of file
+{{Language programming paradigm|Object-oriented}}
+==Todo==
+* [[Tasks not implemented in Ada]]
\ No newline at end of file
diff --git a/Lang/Ada/Abelian-sandpile-model b/Lang/Ada/Abelian-sandpile-model
new file mode 120000
index 0000000000..adfb5aa625
--- /dev/null
+++ b/Lang/Ada/Abelian-sandpile-model
@@ -0,0 +1 @@
+../../Task/Abelian-sandpile-model/Ada
\ No newline at end of file
diff --git a/Lang/Ada/Achilles-numbers b/Lang/Ada/Achilles-numbers
new file mode 120000
index 0000000000..8a02102d36
--- /dev/null
+++ b/Lang/Ada/Achilles-numbers
@@ -0,0 +1 @@
+../../Task/Achilles-numbers/Ada
\ No newline at end of file
diff --git a/Lang/Ada/Arithmetic-geometric-mean-Calculate-Pi b/Lang/Ada/Arithmetic-geometric-mean-Calculate-Pi
new file mode 120000
index 0000000000..14bdbe4c3d
--- /dev/null
+++ b/Lang/Ada/Arithmetic-geometric-mean-Calculate-Pi
@@ -0,0 +1 @@
+../../Task/Arithmetic-geometric-mean-Calculate-Pi/Ada
\ No newline at end of file
diff --git a/Lang/Ada/Ascending-primes b/Lang/Ada/Ascending-primes
new file mode 120000
index 0000000000..cee2b86585
--- /dev/null
+++ b/Lang/Ada/Ascending-primes
@@ -0,0 +1 @@
+../../Task/Ascending-primes/Ada
\ No newline at end of file
diff --git a/Lang/Ada/Brace-expansion b/Lang/Ada/Brace-expansion
new file mode 120000
index 0000000000..b881365fa7
--- /dev/null
+++ b/Lang/Ada/Brace-expansion
@@ -0,0 +1 @@
+../../Task/Brace-expansion/Ada
\ No newline at end of file
diff --git a/Lang/Ada/Color-wheel b/Lang/Ada/Color-wheel
new file mode 120000
index 0000000000..3d78384078
--- /dev/null
+++ b/Lang/Ada/Color-wheel
@@ -0,0 +1 @@
+../../Task/Color-wheel/Ada
\ No newline at end of file
diff --git a/Lang/Ada/Combinations-and-permutations b/Lang/Ada/Combinations-and-permutations
new file mode 120000
index 0000000000..3f163f203e
--- /dev/null
+++ b/Lang/Ada/Combinations-and-permutations
@@ -0,0 +1 @@
+../../Task/Combinations-and-permutations/Ada
\ No newline at end of file
diff --git a/Lang/Ada/Eulers-constant-0.5772... b/Lang/Ada/Eulers-constant-0.5772...
new file mode 120000
index 0000000000..b0e75cb33e
--- /dev/null
+++ b/Lang/Ada/Eulers-constant-0.5772...
@@ -0,0 +1 @@
+../../Task/Eulers-constant-0.5772.../Ada
\ No newline at end of file
diff --git a/Lang/Ada/FTP b/Lang/Ada/FTP
new file mode 120000
index 0000000000..1d406ce7cd
--- /dev/null
+++ b/Lang/Ada/FTP
@@ -0,0 +1 @@
+../../Task/FTP/Ada
\ No newline at end of file
diff --git a/Lang/Ada/Hex-words b/Lang/Ada/Hex-words
new file mode 120000
index 0000000000..da49cf2b4d
--- /dev/null
+++ b/Lang/Ada/Hex-words
@@ -0,0 +1 @@
+../../Task/Hex-words/Ada
\ No newline at end of file
diff --git a/Lang/Ada/Idiomatically-determine-all-the-characters-that-can-be-used-for-symbols b/Lang/Ada/Idiomatically-determine-all-the-characters-that-can-be-used-for-symbols
new file mode 120000
index 0000000000..29e378f3f1
--- /dev/null
+++ b/Lang/Ada/Idiomatically-determine-all-the-characters-that-can-be-used-for-symbols
@@ -0,0 +1 @@
+../../Task/Idiomatically-determine-all-the-characters-that-can-be-used-for-symbols/Ada
\ No newline at end of file
diff --git a/Lang/Ada/Largest-number-divisible-by-its-digits b/Lang/Ada/Largest-number-divisible-by-its-digits
new file mode 120000
index 0000000000..d61b3cb8be
--- /dev/null
+++ b/Lang/Ada/Largest-number-divisible-by-its-digits
@@ -0,0 +1 @@
+../../Task/Largest-number-divisible-by-its-digits/Ada
\ No newline at end of file
diff --git a/Lang/Ada/Magic-constant b/Lang/Ada/Magic-constant
new file mode 120000
index 0000000000..bd59423b8e
--- /dev/null
+++ b/Lang/Ada/Magic-constant
@@ -0,0 +1 @@
+../../Task/Magic-constant/Ada
\ No newline at end of file
diff --git a/Lang/Ada/Mind-boggling-card-trick b/Lang/Ada/Mind-boggling-card-trick
new file mode 120000
index 0000000000..11ae4366fc
--- /dev/null
+++ b/Lang/Ada/Mind-boggling-card-trick
@@ -0,0 +1 @@
+../../Task/Mind-boggling-card-trick/Ada
\ No newline at end of file
diff --git a/Lang/Ada/Musical-scale b/Lang/Ada/Musical-scale
new file mode 120000
index 0000000000..a792f4144a
--- /dev/null
+++ b/Lang/Ada/Musical-scale
@@ -0,0 +1 @@
+../../Task/Musical-scale/Ada
\ No newline at end of file
diff --git a/Lang/Ada/Next-highest-int-from-digits b/Lang/Ada/Next-highest-int-from-digits
new file mode 120000
index 0000000000..e996a777e6
--- /dev/null
+++ b/Lang/Ada/Next-highest-int-from-digits
@@ -0,0 +1 @@
+../../Task/Next-highest-int-from-digits/Ada
\ No newline at end of file
diff --git a/Lang/Ada/Penneys-game b/Lang/Ada/Penneys-game
new file mode 120000
index 0000000000..00a5e1d496
--- /dev/null
+++ b/Lang/Ada/Penneys-game
@@ -0,0 +1 @@
+../../Task/Penneys-game/Ada
\ No newline at end of file
diff --git a/Lang/Ada/Permutations-by-swapping b/Lang/Ada/Permutations-by-swapping
new file mode 120000
index 0000000000..9140cf7f43
--- /dev/null
+++ b/Lang/Ada/Permutations-by-swapping
@@ -0,0 +1 @@
+../../Task/Permutations-by-swapping/Ada
\ No newline at end of file
diff --git a/Lang/Ada/Play-recorded-sounds b/Lang/Ada/Play-recorded-sounds
new file mode 120000
index 0000000000..2365ca211b
--- /dev/null
+++ b/Lang/Ada/Play-recorded-sounds
@@ -0,0 +1 @@
+../../Task/Play-recorded-sounds/Ada
\ No newline at end of file
diff --git a/Lang/Ada/Poker-hand-analyser b/Lang/Ada/Poker-hand-analyser
new file mode 120000
index 0000000000..fc5a66b995
--- /dev/null
+++ b/Lang/Ada/Poker-hand-analyser
@@ -0,0 +1 @@
+../../Task/Poker-hand-analyser/Ada
\ No newline at end of file
diff --git a/Lang/Ada/Record-sound b/Lang/Ada/Record-sound
new file mode 120000
index 0000000000..af45b7783f
--- /dev/null
+++ b/Lang/Ada/Record-sound
@@ -0,0 +1 @@
+../../Task/Record-sound/Ada
\ No newline at end of file
diff --git a/Lang/Ada/Selectively-replace-multiple-instances-of-a-character-within-a-string b/Lang/Ada/Selectively-replace-multiple-instances-of-a-character-within-a-string
new file mode 120000
index 0000000000..5077dd9033
--- /dev/null
+++ b/Lang/Ada/Selectively-replace-multiple-instances-of-a-character-within-a-string
@@ -0,0 +1 @@
+../../Task/Selectively-replace-multiple-instances-of-a-character-within-a-string/Ada
\ No newline at end of file
diff --git a/Lang/Ada/Sierpinski-square-curve b/Lang/Ada/Sierpinski-square-curve
new file mode 120000
index 0000000000..32cee5f712
--- /dev/null
+++ b/Lang/Ada/Sierpinski-square-curve
@@ -0,0 +1 @@
+../../Task/Sierpinski-square-curve/Ada
\ No newline at end of file
diff --git a/Lang/Ada/Sorting-algorithms-Permutation-sort b/Lang/Ada/Sorting-algorithms-Permutation-sort
new file mode 120000
index 0000000000..0f333c5ec8
--- /dev/null
+++ b/Lang/Ada/Sorting-algorithms-Permutation-sort
@@ -0,0 +1 @@
+../../Task/Sorting-algorithms-Permutation-sort/Ada
\ No newline at end of file
diff --git a/Lang/Ada/UPC b/Lang/Ada/UPC
new file mode 120000
index 0000000000..374da7b0aa
--- /dev/null
+++ b/Lang/Ada/UPC
@@ -0,0 +1 @@
+../../Task/UPC/Ada
\ No newline at end of file
diff --git a/Lang/Ada/War-card-game b/Lang/Ada/War-card-game
new file mode 120000
index 0000000000..dd4f92afee
--- /dev/null
+++ b/Lang/Ada/War-card-game
@@ -0,0 +1 @@
+../../Task/War-card-game/Ada
\ No newline at end of file
diff --git a/Lang/Ada/Weird-numbers b/Lang/Ada/Weird-numbers
new file mode 120000
index 0000000000..98491ade1a
--- /dev/null
+++ b/Lang/Ada/Weird-numbers
@@ -0,0 +1 @@
+../../Task/Weird-numbers/Ada
\ No newline at end of file
diff --git a/Lang/Ada/Word-ladder b/Lang/Ada/Word-ladder
new file mode 120000
index 0000000000..495c24dbcd
--- /dev/null
+++ b/Lang/Ada/Word-ladder
@@ -0,0 +1 @@
+../../Task/Word-ladder/Ada
\ No newline at end of file
diff --git a/Lang/Ada/Word-search b/Lang/Ada/Word-search
new file mode 120000
index 0000000000..32f00f4762
--- /dev/null
+++ b/Lang/Ada/Word-search
@@ -0,0 +1 @@
+../../Task/Word-search/Ada
\ No newline at end of file
diff --git a/Lang/Ada/Word-wheel b/Lang/Ada/Word-wheel
new file mode 120000
index 0000000000..47f67698e0
--- /dev/null
+++ b/Lang/Ada/Word-wheel
@@ -0,0 +1 @@
+../../Task/Word-wheel/Ada
\ No newline at end of file
diff --git a/Lang/AmigaBASIC/00-LANG.txt b/Lang/AmigaBASIC/00-LANG.txt
index 94b3e71ee7..c2e6f48854 100644
--- a/Lang/AmigaBASIC/00-LANG.txt
+++ b/Lang/AmigaBASIC/00-LANG.txt
@@ -11,5 +11,7 @@ Execution speed however was not a particular strength of AmigaBASIC. Some 8-bit
AmigaBASIC was superseded by [[wp:ARexx|ARexx]], a REXX-style scripting language, from AmigaOS version 2.0 onwards. The 1.x AmigaBASIC binary also works on AmigaOS 2, but not on AmigaOS 3.
+Microsoft [[QuickBASIC]] (1985) and QBasic (1991) look very similar to AmigaBASIC, so their syntax highlighting rules mostly also work for AmigaBASIC code.
+
==See Also==
*[https://archive.org/search.php?query=amiga%20basic Scanned AmigaBASIC books at archive.org]
\ No newline at end of file
diff --git a/Lang/Applesoft-BASIC/Display-a-linear-combination b/Lang/Applesoft-BASIC/Display-a-linear-combination
new file mode 120000
index 0000000000..d72f6d3a78
--- /dev/null
+++ b/Lang/Applesoft-BASIC/Display-a-linear-combination
@@ -0,0 +1 @@
+../../Task/Display-a-linear-combination/Applesoft-BASIC
\ No newline at end of file
diff --git a/Lang/Applesoft-BASIC/Repeat b/Lang/Applesoft-BASIC/Repeat
new file mode 120000
index 0000000000..eb0c08d923
--- /dev/null
+++ b/Lang/Applesoft-BASIC/Repeat
@@ -0,0 +1 @@
+../../Task/Repeat/Applesoft-BASIC
\ No newline at end of file
diff --git a/Lang/Asymptote/Jensens-Device b/Lang/Asymptote/Jensens-Device
new file mode 120000
index 0000000000..621c474cd7
--- /dev/null
+++ b/Lang/Asymptote/Jensens-Device
@@ -0,0 +1 @@
+../../Task/Jensens-Device/Asymptote
\ No newline at end of file
diff --git a/Lang/Asymptote/Towers-of-Hanoi b/Lang/Asymptote/Towers-of-Hanoi
new file mode 120000
index 0000000000..62a6e4d923
--- /dev/null
+++ b/Lang/Asymptote/Towers-of-Hanoi
@@ -0,0 +1 @@
+../../Task/Towers-of-Hanoi/Asymptote
\ No newline at end of file
diff --git a/Lang/AutoHotKey-V2/00-LANG.txt b/Lang/AutoHotKey-V2/00-LANG.txt
deleted file mode 100644
index a333f928af..0000000000
--- a/Lang/AutoHotKey-V2/00-LANG.txt
+++ /dev/null
@@ -1 +0,0 @@
-{{stub}}{{language|AutoHotKey V2}}
\ No newline at end of file
diff --git a/Lang/AutoHotKey-V2/00-META.yaml b/Lang/AutoHotKey-V2/00-META.yaml
deleted file mode 100644
index 316ebe0ccb..0000000000
--- a/Lang/AutoHotKey-V2/00-META.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-from: http://rosettacode.org/wiki/Category:AutoHotKey_V2
diff --git a/Lang/AutoHotKey-V2/Hello-world-Graphical b/Lang/AutoHotKey-V2/Hello-world-Graphical
deleted file mode 120000
index 89783bc714..0000000000
--- a/Lang/AutoHotKey-V2/Hello-world-Graphical
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Graphical/AutoHotKey-V2
\ No newline at end of file
diff --git a/Lang/Autohotkey-V2/00-LANG.txt b/Lang/Autohotkey-V2/00-LANG.txt
new file mode 100644
index 0000000000..b3e33b65ab
--- /dev/null
+++ b/Lang/Autohotkey-V2/00-LANG.txt
@@ -0,0 +1,16 @@
+{{stub}}AutoHotkey V2 is an [[open source]] programming language for Microsoft [[Windows]].
+
+AutoHotkey v2 is a major update to the AutoHotkey language, which includes numerous new features and improvements.
+
+== Citations ==
+
+* [https://www.autohotkey.com/docs/v2/ Documentation]
+* [http://autohotkey.com/download Downloads]
+* [http://autohotkey.com/docs/scripts/ Script Showcase]
+* [http://autohotkey.com/boards/ New Community forum]
+* [http://www.autohotkey.com/forum/ Archived Community forum]
+* [http://ahkscript.org/foundation AutoHotkey Foundation LLC]
+* [[wp:AutoHotkey|AutoHotkey on Wikipedia]]
+* #ahk on [http://webchat.freenode.net/?channels=%23ahk Freenode Web interface]
+* [[:Category:AutoHotkey_Originated]]
+{{language|Ayrch}}
\ No newline at end of file
diff --git a/Lang/Autohotkey-V2/00-META.yaml b/Lang/Autohotkey-V2/00-META.yaml
new file mode 100644
index 0000000000..651d1bc21b
--- /dev/null
+++ b/Lang/Autohotkey-V2/00-META.yaml
@@ -0,0 +1,2 @@
+---
+from: http://rosettacode.org/wiki/Category:Autohotkey_V2
diff --git a/Lang/Autohotkey-V2/Hello-world-Graphical b/Lang/Autohotkey-V2/Hello-world-Graphical
new file mode 120000
index 0000000000..0375a8eeb7
--- /dev/null
+++ b/Lang/Autohotkey-V2/Hello-world-Graphical
@@ -0,0 +1 @@
+../../Task/Hello-world-Graphical/Autohotkey-V2
\ No newline at end of file
diff --git a/Lang/BASIC/00-LANG.txt b/Lang/BASIC/00-LANG.txt
index 8f4f969193..745f847ac8 100644
--- a/Lang/BASIC/00-LANG.txt
+++ b/Lang/BASIC/00-LANG.txt
@@ -12,11 +12,25 @@ BASIC became popular, with many different implementations for various computers.
==Links==
*[[wp:BASIC|Wikipedia:BASIC]]
+**[[wp:ASIC]]
+**[[wp:Atari BASIC]]
**[[wp:BASIC-PLUS]]
+**[[wp:Basic-256]]
+**[[wp:Batari BASIC]]
+**[[wp:BBC BASIC]]
**[[wp:Benton Harbor BASIC]]
+**[[wp:Beta BASIC]]
**[[wp:CBASIC]]
**[[wp:Chipmunk Basic]]
+**[[wp:DarkBASIC]]
**[[wp:Dartmouth BASIC]]
+**[[wp:FreeBASIC]]
+**[[wp:FutureBASIC]]
+**[[wp:GFA BASIC]]
+**[[wp:GLBasic]]
+**[[wp:Integer BASIC]]
+**[[wp:Liberty BASIC]]
+**[[wp:Locomotive BASIC]]
**[[wp:Microsoft BASIC]]
***[[wp:Altair BASIC]]
***[[wp:Amiga BASIC]]
@@ -24,13 +38,29 @@ BASIC became popular, with many different implementations for various computers.
***[[wp:Atari Microsoft BASIC]]
***[[wp:Commodore BASIC]]
***[[wp:IBM BASIC]]
-***[[wp:TRS-80 Level II BASIC ]]
+***[[wp:MS BASIC for Macintosh]]
+***[[wp:MSX BASIC]]
+***[[wp:Small Basic]]
+***[[wp:QBasic]]
+***[[wp:QuickBASIC]]
+***[[wp:TRS-80 Level II BASIC]]
+***[[wp:Visual Basic]]
**[[wp:PowerBASIC]]
**[[wp:PureBasic]]
+**[[wp:QB64]]
+**[[wp:Quite BASIC]]
+**[[wp:RapidQ]]
+**[[wp:Realbasic]]
**[[wp:Rocky Mountain BASIC]]
+**[[wp:Run BASIC]]
**[[wp:S-BASIC]]
+**[[wp:ScriptBasic]]
**[[wp:Sinclair BASIC]]
+**[[wp:SmileBASIC]]
**[[wp:SuperBASIC]]
**[[wp:TI BASIC (TI 99/4A)]]
+**[[wp:Tiny BASIC]]
**[[wp:True BASIC]]
+**[[wp:UBASIC]]
+**[[wp:Yabasic]]
{{language programming paradigm|Procedural}}
\ No newline at end of file
diff --git a/Lang/BASIC/Damm-algorithm b/Lang/BASIC/Damm-algorithm
deleted file mode 120000
index 41ee6d1c36..0000000000
--- a/Lang/BASIC/Damm-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Damm-algorithm/BASIC
\ No newline at end of file
diff --git a/Lang/BASIC/Function-definition b/Lang/BASIC/Function-definition
deleted file mode 120000
index a052c63292..0000000000
--- a/Lang/BASIC/Function-definition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Function-definition/BASIC
\ No newline at end of file
diff --git a/Lang/BASIC/Gray-code b/Lang/BASIC/Gray-code
deleted file mode 120000
index f0bc6f352f..0000000000
--- a/Lang/BASIC/Gray-code
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Gray-code/BASIC
\ No newline at end of file
diff --git a/Lang/BASIC/Monty-Hall-problem b/Lang/BASIC/Monty-Hall-problem
deleted file mode 120000
index ba5a5a279d..0000000000
--- a/Lang/BASIC/Monty-Hall-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Monty-Hall-problem/BASIC
\ No newline at end of file
diff --git a/Lang/BASIC/Ordered-words b/Lang/BASIC/Ordered-words
new file mode 120000
index 0000000000..dd2f98d4e6
--- /dev/null
+++ b/Lang/BASIC/Ordered-words
@@ -0,0 +1 @@
+../../Task/Ordered-words/BASIC
\ No newline at end of file
diff --git a/Lang/BASIC/Sorting-algorithms-Quicksort b/Lang/BASIC/Sorting-algorithms-Quicksort
deleted file mode 120000
index f7976ecb9f..0000000000
--- a/Lang/BASIC/Sorting-algorithms-Quicksort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Quicksort/BASIC
\ No newline at end of file
diff --git a/Lang/BASIC256/Kronecker-product b/Lang/BASIC256/Kronecker-product
new file mode 120000
index 0000000000..dd258524fe
--- /dev/null
+++ b/Lang/BASIC256/Kronecker-product
@@ -0,0 +1 @@
+../../Task/Kronecker-product/BASIC256
\ No newline at end of file
diff --git a/Lang/BASIC256/Multiple-regression b/Lang/BASIC256/Multiple-regression
new file mode 120000
index 0000000000..4d8b79e98b
--- /dev/null
+++ b/Lang/BASIC256/Multiple-regression
@@ -0,0 +1 @@
+../../Task/Multiple-regression/BASIC256
\ No newline at end of file
diff --git a/Lang/BASIC256/Nested-templated-data b/Lang/BASIC256/Nested-templated-data
new file mode 120000
index 0000000000..f5ddb43f39
--- /dev/null
+++ b/Lang/BASIC256/Nested-templated-data
@@ -0,0 +1 @@
+../../Task/Nested-templated-data/BASIC256
\ No newline at end of file
diff --git a/Lang/BASIC256/Ramer-Douglas-Peucker-line-simplification b/Lang/BASIC256/Ramer-Douglas-Peucker-line-simplification
new file mode 120000
index 0000000000..9a890661d4
--- /dev/null
+++ b/Lang/BASIC256/Ramer-Douglas-Peucker-line-simplification
@@ -0,0 +1 @@
+../../Task/Ramer-Douglas-Peucker-line-simplification/BASIC256
\ No newline at end of file
diff --git a/Lang/BASIC256/Sexy-primes b/Lang/BASIC256/Sexy-primes
new file mode 120000
index 0000000000..86fc0a12b9
--- /dev/null
+++ b/Lang/BASIC256/Sexy-primes
@@ -0,0 +1 @@
+../../Task/Sexy-primes/BASIC256
\ No newline at end of file
diff --git a/Lang/Bruijn/Harmonic-series b/Lang/Bruijn/Harmonic-series
new file mode 120000
index 0000000000..b39ae4ae88
--- /dev/null
+++ b/Lang/Bruijn/Harmonic-series
@@ -0,0 +1 @@
+../../Task/Harmonic-series/Bruijn
\ No newline at end of file
diff --git a/Lang/Bruijn/Towers-of-Hanoi b/Lang/Bruijn/Towers-of-Hanoi
new file mode 120000
index 0000000000..96dafe6af8
--- /dev/null
+++ b/Lang/Bruijn/Towers-of-Hanoi
@@ -0,0 +1 @@
+../../Task/Towers-of-Hanoi/Bruijn
\ No newline at end of file
diff --git a/Lang/C++/Add-a-variable-to-a-class-instance-at-runtime b/Lang/C++/Add-a-variable-to-a-class-instance-at-runtime
new file mode 120000
index 0000000000..61888079c6
--- /dev/null
+++ b/Lang/C++/Add-a-variable-to-a-class-instance-at-runtime
@@ -0,0 +1 @@
+../../Task/Add-a-variable-to-a-class-instance-at-runtime/C++
\ No newline at end of file
diff --git a/Lang/C++/Bitcoin-address-validation b/Lang/C++/Bitcoin-address-validation
new file mode 120000
index 0000000000..fdb6fa9bf8
--- /dev/null
+++ b/Lang/C++/Bitcoin-address-validation
@@ -0,0 +1 @@
+../../Task/Bitcoin-address-validation/C++
\ No newline at end of file
diff --git a/Lang/C++/Bitcoin-public-point-to-address b/Lang/C++/Bitcoin-public-point-to-address
new file mode 120000
index 0000000000..1229c8b30f
--- /dev/null
+++ b/Lang/C++/Bitcoin-public-point-to-address
@@ -0,0 +1 @@
+../../Task/Bitcoin-public-point-to-address/C++
\ No newline at end of file
diff --git a/Lang/C++/Catmull-Clark-subdivision-surface b/Lang/C++/Catmull-Clark-subdivision-surface
new file mode 120000
index 0000000000..dbaa0ac83b
--- /dev/null
+++ b/Lang/C++/Catmull-Clark-subdivision-surface
@@ -0,0 +1 @@
+../../Task/Catmull-Clark-subdivision-surface/C++
\ No newline at end of file
diff --git a/Lang/C++/Compiler-virtual-machine-interpreter b/Lang/C++/Compiler-virtual-machine-interpreter
new file mode 120000
index 0000000000..94f3cd637b
--- /dev/null
+++ b/Lang/C++/Compiler-virtual-machine-interpreter
@@ -0,0 +1 @@
+../../Task/Compiler-virtual-machine-interpreter/C++
\ No newline at end of file
diff --git a/Lang/C++/Factorial-base-numbers-indexing-permutations-of-a-collection b/Lang/C++/Factorial-base-numbers-indexing-permutations-of-a-collection
new file mode 120000
index 0000000000..9b984d5ea4
--- /dev/null
+++ b/Lang/C++/Factorial-base-numbers-indexing-permutations-of-a-collection
@@ -0,0 +1 @@
+../../Task/Factorial-base-numbers-indexing-permutations-of-a-collection/C++
\ No newline at end of file
diff --git a/Lang/C++/Im-a-software-engineer-get-me-out-of-here b/Lang/C++/Im-a-software-engineer-get-me-out-of-here
new file mode 120000
index 0000000000..7c9de1375f
--- /dev/null
+++ b/Lang/C++/Im-a-software-engineer-get-me-out-of-here
@@ -0,0 +1 @@
+../../Task/Im-a-software-engineer-get-me-out-of-here/C++
\ No newline at end of file
diff --git a/Lang/C++/P-Adic-square-roots b/Lang/C++/P-Adic-square-roots
new file mode 120000
index 0000000000..a25d0f7d5c
--- /dev/null
+++ b/Lang/C++/P-Adic-square-roots
@@ -0,0 +1 @@
+../../Task/P-Adic-square-roots/C++
\ No newline at end of file
diff --git a/Lang/C++/Simple-database b/Lang/C++/Simple-database
new file mode 120000
index 0000000000..60394bf013
--- /dev/null
+++ b/Lang/C++/Simple-database
@@ -0,0 +1 @@
+../../Task/Simple-database/C++
\ No newline at end of file
diff --git a/Lang/C++/Sort-an-outline-at-every-level b/Lang/C++/Sort-an-outline-at-every-level
new file mode 120000
index 0000000000..5467a50bff
--- /dev/null
+++ b/Lang/C++/Sort-an-outline-at-every-level
@@ -0,0 +1 @@
+../../Task/Sort-an-outline-at-every-level/C++
\ No newline at end of file
diff --git a/Lang/C-sharp/Additive-primes b/Lang/C-sharp/Additive-primes
new file mode 120000
index 0000000000..d958846baf
--- /dev/null
+++ b/Lang/C-sharp/Additive-primes
@@ -0,0 +1 @@
+../../Task/Additive-primes/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Cyclops-numbers b/Lang/C-sharp/Cyclops-numbers
new file mode 120000
index 0000000000..c4380e8ccd
--- /dev/null
+++ b/Lang/C-sharp/Cyclops-numbers
@@ -0,0 +1 @@
+../../Task/Cyclops-numbers/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Summarize-primes b/Lang/C-sharp/Summarize-primes
new file mode 120000
index 0000000000..de1b22714d
--- /dev/null
+++ b/Lang/C-sharp/Summarize-primes
@@ -0,0 +1 @@
+../../Task/Summarize-primes/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Tau-function b/Lang/C-sharp/Tau-function
new file mode 120000
index 0000000000..aa9069413d
--- /dev/null
+++ b/Lang/C-sharp/Tau-function
@@ -0,0 +1 @@
+../../Task/Tau-function/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Tau-number b/Lang/C-sharp/Tau-number
new file mode 120000
index 0000000000..0980d5ce28
--- /dev/null
+++ b/Lang/C-sharp/Tau-number
@@ -0,0 +1 @@
+../../Task/Tau-number/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Tree-from-nesting-levels b/Lang/C-sharp/Tree-from-nesting-levels
new file mode 120000
index 0000000000..e46b1553ea
--- /dev/null
+++ b/Lang/C-sharp/Tree-from-nesting-levels
@@ -0,0 +1 @@
+../../Task/Tree-from-nesting-levels/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Ultra-useful-primes b/Lang/C-sharp/Ultra-useful-primes
new file mode 120000
index 0000000000..2258e0373a
--- /dev/null
+++ b/Lang/C-sharp/Ultra-useful-primes
@@ -0,0 +1 @@
+../../Task/Ultra-useful-primes/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Variable-declaration-reset b/Lang/C-sharp/Variable-declaration-reset
new file mode 120000
index 0000000000..ec0809da88
--- /dev/null
+++ b/Lang/C-sharp/Variable-declaration-reset
@@ -0,0 +1 @@
+../../Task/Variable-declaration-reset/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Yellowstone-sequence b/Lang/C-sharp/Yellowstone-sequence
new file mode 120000
index 0000000000..793ce587ba
--- /dev/null
+++ b/Lang/C-sharp/Yellowstone-sequence
@@ -0,0 +1 @@
+../../Task/Yellowstone-sequence/C-sharp
\ No newline at end of file
diff --git a/Lang/C/Hunt-the-Wumpus b/Lang/C/Hunt-the-Wumpus
new file mode 120000
index 0000000000..e7186ced48
--- /dev/null
+++ b/Lang/C/Hunt-the-Wumpus
@@ -0,0 +1 @@
+../../Task/Hunt-the-Wumpus/C
\ No newline at end of file
diff --git a/Lang/C/Pig-the-dice-game-Player b/Lang/C/Pig-the-dice-game-Player
new file mode 120000
index 0000000000..28ecb509a8
--- /dev/null
+++ b/Lang/C/Pig-the-dice-game-Player
@@ -0,0 +1 @@
+../../Task/Pig-the-dice-game-Player/C
\ No newline at end of file
diff --git a/Lang/COBOL/Nim-game b/Lang/COBOL/Nim-game
new file mode 120000
index 0000000000..9a7c582b48
--- /dev/null
+++ b/Lang/COBOL/Nim-game
@@ -0,0 +1 @@
+../../Task/Nim-game/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Parametric-polymorphism b/Lang/COBOL/Parametric-polymorphism
new file mode 120000
index 0000000000..44f214df50
--- /dev/null
+++ b/Lang/COBOL/Parametric-polymorphism
@@ -0,0 +1 @@
+../../Task/Parametric-polymorphism/COBOL
\ No newline at end of file
diff --git a/Lang/Chapel/Function-definition b/Lang/Chapel/Function-definition
new file mode 120000
index 0000000000..589b4afa2c
--- /dev/null
+++ b/Lang/Chapel/Function-definition
@@ -0,0 +1 @@
+../../Task/Function-definition/Chapel
\ No newline at end of file
diff --git a/Lang/Chapel/Maze-generation b/Lang/Chapel/Maze-generation
new file mode 120000
index 0000000000..b4c55cfddb
--- /dev/null
+++ b/Lang/Chapel/Maze-generation
@@ -0,0 +1 @@
+../../Task/Maze-generation/Chapel
\ No newline at end of file
diff --git a/Lang/Chapel/Repeat b/Lang/Chapel/Repeat
new file mode 120000
index 0000000000..3c555a4885
--- /dev/null
+++ b/Lang/Chapel/Repeat
@@ -0,0 +1 @@
+../../Task/Repeat/Chapel
\ No newline at end of file
diff --git a/Lang/Chipmunk-Basic/Display-a-linear-combination b/Lang/Chipmunk-Basic/Display-a-linear-combination
new file mode 120000
index 0000000000..76f3965566
--- /dev/null
+++ b/Lang/Chipmunk-Basic/Display-a-linear-combination
@@ -0,0 +1 @@
+../../Task/Display-a-linear-combination/Chipmunk-Basic
\ No newline at end of file
diff --git a/Lang/Chipmunk-Basic/Fibonacci-n-step-number-sequences b/Lang/Chipmunk-Basic/Fibonacci-n-step-number-sequences
new file mode 120000
index 0000000000..24e6f1fb75
--- /dev/null
+++ b/Lang/Chipmunk-Basic/Fibonacci-n-step-number-sequences
@@ -0,0 +1 @@
+../../Task/Fibonacci-n-step-number-sequences/Chipmunk-Basic
\ No newline at end of file
diff --git a/Lang/Chipmunk-Basic/Jensens-Device b/Lang/Chipmunk-Basic/Jensens-Device
new file mode 120000
index 0000000000..927dca2f6f
--- /dev/null
+++ b/Lang/Chipmunk-Basic/Jensens-Device
@@ -0,0 +1 @@
+../../Task/Jensens-Device/Chipmunk-Basic
\ No newline at end of file
diff --git a/Lang/Chipmunk-Basic/Multiple-regression b/Lang/Chipmunk-Basic/Multiple-regression
new file mode 120000
index 0000000000..82844a944e
--- /dev/null
+++ b/Lang/Chipmunk-Basic/Multiple-regression
@@ -0,0 +1 @@
+../../Task/Multiple-regression/Chipmunk-Basic
\ No newline at end of file
diff --git a/Lang/Chipmunk-Basic/Nested-templated-data b/Lang/Chipmunk-Basic/Nested-templated-data
new file mode 120000
index 0000000000..a7e95ed6f1
--- /dev/null
+++ b/Lang/Chipmunk-Basic/Nested-templated-data
@@ -0,0 +1 @@
+../../Task/Nested-templated-data/Chipmunk-Basic
\ No newline at end of file
diff --git a/Lang/Chipmunk-Basic/Price-fraction b/Lang/Chipmunk-Basic/Price-fraction
new file mode 120000
index 0000000000..895d56d4cf
--- /dev/null
+++ b/Lang/Chipmunk-Basic/Price-fraction
@@ -0,0 +1 @@
+../../Task/Price-fraction/Chipmunk-Basic
\ No newline at end of file
diff --git a/Lang/Chipmunk-Basic/Proper-divisors b/Lang/Chipmunk-Basic/Proper-divisors
new file mode 120000
index 0000000000..e83b2b6ef0
--- /dev/null
+++ b/Lang/Chipmunk-Basic/Proper-divisors
@@ -0,0 +1 @@
+../../Task/Proper-divisors/Chipmunk-Basic
\ No newline at end of file
diff --git a/Lang/Chipmunk-Basic/Rate-counter b/Lang/Chipmunk-Basic/Rate-counter
new file mode 120000
index 0000000000..214d671194
--- /dev/null
+++ b/Lang/Chipmunk-Basic/Rate-counter
@@ -0,0 +1 @@
+../../Task/Rate-counter/Chipmunk-Basic
\ No newline at end of file
diff --git a/Lang/Chipmunk-Basic/Vector b/Lang/Chipmunk-Basic/Vector
new file mode 120000
index 0000000000..68aa51b11b
--- /dev/null
+++ b/Lang/Chipmunk-Basic/Vector
@@ -0,0 +1 @@
+../../Task/Vector/Chipmunk-Basic
\ No newline at end of file
diff --git a/Lang/Commodore-BASIC/N-queens-problem b/Lang/Commodore-BASIC/N-queens-problem
new file mode 120000
index 0000000000..d5a4ff5b7a
--- /dev/null
+++ b/Lang/Commodore-BASIC/N-queens-problem
@@ -0,0 +1 @@
+../../Task/N-queens-problem/Commodore-BASIC
\ No newline at end of file
diff --git a/Lang/Common-Lisp/Blum-integer b/Lang/Common-Lisp/Blum-integer
new file mode 120000
index 0000000000..854dbaeee7
--- /dev/null
+++ b/Lang/Common-Lisp/Blum-integer
@@ -0,0 +1 @@
+../../Task/Blum-integer/Common-Lisp
\ No newline at end of file
diff --git a/Lang/Common-Lisp/Factorial-primes b/Lang/Common-Lisp/Factorial-primes
new file mode 120000
index 0000000000..cc0d935af1
--- /dev/null
+++ b/Lang/Common-Lisp/Factorial-primes
@@ -0,0 +1 @@
+../../Task/Factorial-primes/Common-Lisp
\ No newline at end of file
diff --git a/Lang/Cowgol/Display-a-linear-combination b/Lang/Cowgol/Display-a-linear-combination
new file mode 120000
index 0000000000..7e169cd6fe
--- /dev/null
+++ b/Lang/Cowgol/Display-a-linear-combination
@@ -0,0 +1 @@
+../../Task/Display-a-linear-combination/Cowgol
\ No newline at end of file
diff --git a/Lang/Dart/15-puzzle-solver b/Lang/Dart/15-puzzle-solver
new file mode 120000
index 0000000000..9e8e216a39
--- /dev/null
+++ b/Lang/Dart/15-puzzle-solver
@@ -0,0 +1 @@
+../../Task/15-puzzle-solver/Dart
\ No newline at end of file
diff --git a/Lang/Dart/Jensens-Device b/Lang/Dart/Jensens-Device
new file mode 120000
index 0000000000..973fbf791f
--- /dev/null
+++ b/Lang/Dart/Jensens-Device
@@ -0,0 +1 @@
+../../Task/Jensens-Device/Dart
\ No newline at end of file
diff --git a/Lang/Dart/Solve-a-Numbrix-puzzle b/Lang/Dart/Solve-a-Numbrix-puzzle
new file mode 120000
index 0000000000..38339de00c
--- /dev/null
+++ b/Lang/Dart/Solve-a-Numbrix-puzzle
@@ -0,0 +1 @@
+../../Task/Solve-a-Numbrix-puzzle/Dart
\ No newline at end of file
diff --git a/Lang/Draco/Display-a-linear-combination b/Lang/Draco/Display-a-linear-combination
new file mode 120000
index 0000000000..bbaeb41c31
--- /dev/null
+++ b/Lang/Draco/Display-a-linear-combination
@@ -0,0 +1 @@
+../../Task/Display-a-linear-combination/Draco
\ No newline at end of file
diff --git a/Lang/EMal/Babbage-problem b/Lang/EMal/Babbage-problem
new file mode 120000
index 0000000000..8a7db13311
--- /dev/null
+++ b/Lang/EMal/Babbage-problem
@@ -0,0 +1 @@
+../../Task/Babbage-problem/EMal
\ No newline at end of file
diff --git a/Lang/EMal/Bifid-cipher b/Lang/EMal/Bifid-cipher
new file mode 120000
index 0000000000..1dbee9fec8
--- /dev/null
+++ b/Lang/EMal/Bifid-cipher
@@ -0,0 +1 @@
+../../Task/Bifid-cipher/EMal
\ No newline at end of file
diff --git a/Lang/EMal/Mutual-recursion b/Lang/EMal/Mutual-recursion
new file mode 120000
index 0000000000..cb3ebc8ca5
--- /dev/null
+++ b/Lang/EMal/Mutual-recursion
@@ -0,0 +1 @@
+../../Task/Mutual-recursion/EMal
\ No newline at end of file
diff --git a/Lang/EMal/Sorting-algorithms-Bogosort b/Lang/EMal/Sorting-algorithms-Bogosort
new file mode 120000
index 0000000000..8dc8cc02d3
--- /dev/null
+++ b/Lang/EMal/Sorting-algorithms-Bogosort
@@ -0,0 +1 @@
+../../Task/Sorting-algorithms-Bogosort/EMal
\ No newline at end of file
diff --git a/Lang/EMal/Tree-traversal b/Lang/EMal/Tree-traversal
new file mode 120000
index 0000000000..b693d069a6
--- /dev/null
+++ b/Lang/EMal/Tree-traversal
@@ -0,0 +1 @@
+../../Task/Tree-traversal/EMal
\ No newline at end of file
diff --git a/Lang/EMal/User-input-Text b/Lang/EMal/User-input-Text
new file mode 120000
index 0000000000..3c00cf11ba
--- /dev/null
+++ b/Lang/EMal/User-input-Text
@@ -0,0 +1 @@
+../../Task/User-input-Text/EMal
\ No newline at end of file
diff --git a/Lang/EasyLang/00-LANG.txt b/Lang/EasyLang/00-LANG.txt
index aa156f93c8..ba3b92e229 100644
--- a/Lang/EasyLang/00-LANG.txt
+++ b/Lang/EasyLang/00-LANG.txt
@@ -1,19 +1,19 @@
{{language
|exec=interpreted
-|site=https://easylang.dev/
+|site=https://easylang.online/
|parampass=value, reference
|safety=safe
|express=explicit
|checking=static
|tags=learning, web canvas}}
-[https://easylang.dev/ide/ '''Browser IDE''']
+[https://easylang.online/ide/ '''Browser IDE''']
''Easylang'' is a (beginners) programming language with built-in commands for graphics output. The statically typed language has a reduced syntax and semantics. Variables do not have to be declared, the data type is encoded in the variable name - as was usual in the earlier home computer BASIC. The data types are strings and numbers (floating point), arrays of strings and numbers, and arrays of arrays. Arrays are 1-based and can grow. Programs compiled into an AST tree run in the browser or in the browser IDE.
[https://easylang.dev/ide/ A browser IDE] with different tutorials, one for beginners, makes programming and learning to program as easy as possible.
-The finished programs can be easily integrated into a [https://easylang.dev/apps/ website].
+The finished programs can be easily integrated into a [https://easylang.online/apps/ website].
==Todo==
[[Tasks not implemented in EasyLang]]
\ No newline at end of file
diff --git a/Lang/EasyLang/Abelian-sandpile-model b/Lang/EasyLang/Abelian-sandpile-model
new file mode 120000
index 0000000000..c97f3c3aa6
--- /dev/null
+++ b/Lang/EasyLang/Abelian-sandpile-model
@@ -0,0 +1 @@
+../../Task/Abelian-sandpile-model/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Abelian-sandpile-model-Identity b/Lang/EasyLang/Abelian-sandpile-model-Identity
new file mode 120000
index 0000000000..c44f8cb53d
--- /dev/null
+++ b/Lang/EasyLang/Abelian-sandpile-model-Identity
@@ -0,0 +1 @@
+../../Task/Abelian-sandpile-model-Identity/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Approximate-equality b/Lang/EasyLang/Approximate-equality
new file mode 120000
index 0000000000..916cbf0873
--- /dev/null
+++ b/Lang/EasyLang/Approximate-equality
@@ -0,0 +1 @@
+../../Task/Approximate-equality/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Arithmetic-Complex b/Lang/EasyLang/Arithmetic-Complex
new file mode 120000
index 0000000000..547a37cd78
--- /dev/null
+++ b/Lang/EasyLang/Arithmetic-Complex
@@ -0,0 +1 @@
+../../Task/Arithmetic-Complex/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Greatest-subsequential-sum b/Lang/EasyLang/Greatest-subsequential-sum
new file mode 120000
index 0000000000..679d3c6deb
--- /dev/null
+++ b/Lang/EasyLang/Greatest-subsequential-sum
@@ -0,0 +1 @@
+../../Task/Greatest-subsequential-sum/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Guess-the-number-With-feedback-player- b/Lang/EasyLang/Guess-the-number-With-feedback-player-
new file mode 120000
index 0000000000..56ad8fd02a
--- /dev/null
+++ b/Lang/EasyLang/Guess-the-number-With-feedback-player-
@@ -0,0 +1 @@
+../../Task/Guess-the-number-With-feedback-player-/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Halt-and-catch-fire b/Lang/EasyLang/Halt-and-catch-fire
new file mode 120000
index 0000000000..fe61f64c40
--- /dev/null
+++ b/Lang/EasyLang/Halt-and-catch-fire
@@ -0,0 +1 @@
+../../Task/Halt-and-catch-fire/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Hamming-numbers b/Lang/EasyLang/Hamming-numbers
new file mode 120000
index 0000000000..6f52ef2c78
--- /dev/null
+++ b/Lang/EasyLang/Hamming-numbers
@@ -0,0 +1 @@
+../../Task/Hamming-numbers/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Hofstadter-Figure-Figure-sequences b/Lang/EasyLang/Hofstadter-Figure-Figure-sequences
new file mode 120000
index 0000000000..d5a34b275d
--- /dev/null
+++ b/Lang/EasyLang/Hofstadter-Figure-Figure-sequences
@@ -0,0 +1 @@
+../../Task/Hofstadter-Figure-Figure-sequences/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/IBAN b/Lang/EasyLang/IBAN
new file mode 120000
index 0000000000..961014b963
--- /dev/null
+++ b/Lang/EasyLang/IBAN
@@ -0,0 +1 @@
+../../Task/IBAN/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Iterated-digits-squaring b/Lang/EasyLang/Iterated-digits-squaring
new file mode 120000
index 0000000000..193be9fcba
--- /dev/null
+++ b/Lang/EasyLang/Iterated-digits-squaring
@@ -0,0 +1 @@
+../../Task/Iterated-digits-squaring/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/JortSort b/Lang/EasyLang/JortSort
new file mode 120000
index 0000000000..69c9d425de
--- /dev/null
+++ b/Lang/EasyLang/JortSort
@@ -0,0 +1 @@
+../../Task/JortSort/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Kronecker-product b/Lang/EasyLang/Kronecker-product
new file mode 120000
index 0000000000..1246c0ce28
--- /dev/null
+++ b/Lang/EasyLang/Kronecker-product
@@ -0,0 +1 @@
+../../Task/Kronecker-product/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Kronecker-product-based-fractals b/Lang/EasyLang/Kronecker-product-based-fractals
new file mode 120000
index 0000000000..563af0ba71
--- /dev/null
+++ b/Lang/EasyLang/Kronecker-product-based-fractals
@@ -0,0 +1 @@
+../../Task/Kronecker-product-based-fractals/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Largest-int-from-concatenated-ints b/Lang/EasyLang/Largest-int-from-concatenated-ints
new file mode 120000
index 0000000000..10e1335e8a
--- /dev/null
+++ b/Lang/EasyLang/Largest-int-from-concatenated-ints
@@ -0,0 +1 @@
+../../Task/Largest-int-from-concatenated-ints/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Last-letter-first-letter b/Lang/EasyLang/Last-letter-first-letter
new file mode 120000
index 0000000000..0b195a1260
--- /dev/null
+++ b/Lang/EasyLang/Last-letter-first-letter
@@ -0,0 +1 @@
+../../Task/Last-letter-first-letter/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Longest-increasing-subsequence b/Lang/EasyLang/Longest-increasing-subsequence
new file mode 120000
index 0000000000..eabf95f750
--- /dev/null
+++ b/Lang/EasyLang/Longest-increasing-subsequence
@@ -0,0 +1 @@
+../../Task/Longest-increasing-subsequence/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Ludic-numbers b/Lang/EasyLang/Ludic-numbers
new file mode 120000
index 0000000000..1d6fc2e015
--- /dev/null
+++ b/Lang/EasyLang/Ludic-numbers
@@ -0,0 +1 @@
+../../Task/Ludic-numbers/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Map-range b/Lang/EasyLang/Map-range
new file mode 120000
index 0000000000..7f2fe886c3
--- /dev/null
+++ b/Lang/EasyLang/Map-range
@@ -0,0 +1 @@
+../../Task/Map-range/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Move-to-front-algorithm b/Lang/EasyLang/Move-to-front-algorithm
new file mode 120000
index 0000000000..8c3f8fe7f9
--- /dev/null
+++ b/Lang/EasyLang/Move-to-front-algorithm
@@ -0,0 +1 @@
+../../Task/Move-to-front-algorithm/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Multisplit b/Lang/EasyLang/Multisplit
new file mode 120000
index 0000000000..3f480eaeea
--- /dev/null
+++ b/Lang/EasyLang/Multisplit
@@ -0,0 +1 @@
+../../Task/Multisplit/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Negative-base-numbers b/Lang/EasyLang/Negative-base-numbers
new file mode 120000
index 0000000000..750b2fa4de
--- /dev/null
+++ b/Lang/EasyLang/Negative-base-numbers
@@ -0,0 +1 @@
+../../Task/Negative-base-numbers/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Non-continuous-subsequences b/Lang/EasyLang/Non-continuous-subsequences
new file mode 120000
index 0000000000..1ddebfbef7
--- /dev/null
+++ b/Lang/EasyLang/Non-continuous-subsequences
@@ -0,0 +1 @@
+../../Task/Non-continuous-subsequences/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Non-decimal-radices-Input b/Lang/EasyLang/Non-decimal-radices-Input
new file mode 120000
index 0000000000..15845b7041
--- /dev/null
+++ b/Lang/EasyLang/Non-decimal-radices-Input
@@ -0,0 +1 @@
+../../Task/Non-decimal-radices-Input/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Number-reversal-game b/Lang/EasyLang/Number-reversal-game
new file mode 120000
index 0000000000..a55399f2e0
--- /dev/null
+++ b/Lang/EasyLang/Number-reversal-game
@@ -0,0 +1 @@
+../../Task/Number-reversal-game/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Partition-an-integer-x-into-n-primes b/Lang/EasyLang/Partition-an-integer-x-into-n-primes
new file mode 120000
index 0000000000..21cc93eeed
--- /dev/null
+++ b/Lang/EasyLang/Partition-an-integer-x-into-n-primes
@@ -0,0 +1 @@
+../../Task/Partition-an-integer-x-into-n-primes/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Pascal-matrix-generation b/Lang/EasyLang/Pascal-matrix-generation
new file mode 120000
index 0000000000..2a45a12baf
--- /dev/null
+++ b/Lang/EasyLang/Pascal-matrix-generation
@@ -0,0 +1 @@
+../../Task/Pascal-matrix-generation/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Pathological-floating-point-problems b/Lang/EasyLang/Pathological-floating-point-problems
new file mode 120000
index 0000000000..feb17cf372
--- /dev/null
+++ b/Lang/EasyLang/Pathological-floating-point-problems
@@ -0,0 +1 @@
+../../Task/Pathological-floating-point-problems/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Peripheral-drift-illusion b/Lang/EasyLang/Peripheral-drift-illusion
new file mode 120000
index 0000000000..6922becd71
--- /dev/null
+++ b/Lang/EasyLang/Peripheral-drift-illusion
@@ -0,0 +1 @@
+../../Task/Peripheral-drift-illusion/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Permutations-Rank-of-a-permutation b/Lang/EasyLang/Permutations-Rank-of-a-permutation
new file mode 120000
index 0000000000..0512aed3af
--- /dev/null
+++ b/Lang/EasyLang/Permutations-Rank-of-a-permutation
@@ -0,0 +1 @@
+../../Task/Permutations-Rank-of-a-permutation/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Phrase-reversals b/Lang/EasyLang/Phrase-reversals
new file mode 120000
index 0000000000..3631697399
--- /dev/null
+++ b/Lang/EasyLang/Phrase-reversals
@@ -0,0 +1 @@
+../../Task/Phrase-reversals/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Pierpont-primes b/Lang/EasyLang/Pierpont-primes
new file mode 120000
index 0000000000..6e3e44c04c
--- /dev/null
+++ b/Lang/EasyLang/Pierpont-primes
@@ -0,0 +1 @@
+../../Task/Pierpont-primes/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Pinstripe-Display b/Lang/EasyLang/Pinstripe-Display
new file mode 120000
index 0000000000..db25917458
--- /dev/null
+++ b/Lang/EasyLang/Pinstripe-Display
@@ -0,0 +1 @@
+../../Task/Pinstripe-Display/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Plasma-effect b/Lang/EasyLang/Plasma-effect
new file mode 120000
index 0000000000..5f845f7e61
--- /dev/null
+++ b/Lang/EasyLang/Plasma-effect
@@ -0,0 +1 @@
+../../Task/Plasma-effect/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Pythagorean-quadruples b/Lang/EasyLang/Pythagorean-quadruples
new file mode 120000
index 0000000000..63bc250851
--- /dev/null
+++ b/Lang/EasyLang/Pythagorean-quadruples
@@ -0,0 +1 @@
+../../Task/Pythagorean-quadruples/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Range-expansion b/Lang/EasyLang/Range-expansion
new file mode 120000
index 0000000000..b1e04fdc47
--- /dev/null
+++ b/Lang/EasyLang/Range-expansion
@@ -0,0 +1 @@
+../../Task/Range-expansion/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Rock-paper-scissors b/Lang/EasyLang/Rock-paper-scissors
new file mode 120000
index 0000000000..f5bc56ac98
--- /dev/null
+++ b/Lang/EasyLang/Rock-paper-scissors
@@ -0,0 +1 @@
+../../Task/Rock-paper-scissors/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Ruth-Aaron-numbers b/Lang/EasyLang/Ruth-Aaron-numbers
new file mode 120000
index 0000000000..8c50b35963
--- /dev/null
+++ b/Lang/EasyLang/Ruth-Aaron-numbers
@@ -0,0 +1 @@
+../../Task/Ruth-Aaron-numbers/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Sailors-coconuts-and-a-monkey-problem b/Lang/EasyLang/Sailors-coconuts-and-a-monkey-problem
new file mode 120000
index 0000000000..13c2416787
--- /dev/null
+++ b/Lang/EasyLang/Sailors-coconuts-and-a-monkey-problem
@@ -0,0 +1 @@
+../../Task/Sailors-coconuts-and-a-monkey-problem/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Scope-Function-names-and-labels b/Lang/EasyLang/Scope-Function-names-and-labels
new file mode 120000
index 0000000000..159b6679bd
--- /dev/null
+++ b/Lang/EasyLang/Scope-Function-names-and-labels
@@ -0,0 +1 @@
+../../Task/Scope-Function-names-and-labels/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Selectively-replace-multiple-instances-of-a-character-within-a-string b/Lang/EasyLang/Selectively-replace-multiple-instances-of-a-character-within-a-string
new file mode 120000
index 0000000000..c9738f521a
--- /dev/null
+++ b/Lang/EasyLang/Selectively-replace-multiple-instances-of-a-character-within-a-string
@@ -0,0 +1 @@
+../../Task/Selectively-replace-multiple-instances-of-a-character-within-a-string/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Self-numbers b/Lang/EasyLang/Self-numbers
new file mode 120000
index 0000000000..219b2abf44
--- /dev/null
+++ b/Lang/EasyLang/Self-numbers
@@ -0,0 +1 @@
+../../Task/Self-numbers/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Show-the-epoch b/Lang/EasyLang/Show-the-epoch
new file mode 120000
index 0000000000..67a6b1a9c5
--- /dev/null
+++ b/Lang/EasyLang/Show-the-epoch
@@ -0,0 +1 @@
+../../Task/Show-the-epoch/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Sierpinski-triangle b/Lang/EasyLang/Sierpinski-triangle
new file mode 120000
index 0000000000..36520550cb
--- /dev/null
+++ b/Lang/EasyLang/Sierpinski-triangle
@@ -0,0 +1 @@
+../../Task/Sierpinski-triangle/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Sort-a-list-of-object-identifiers b/Lang/EasyLang/Sort-a-list-of-object-identifiers
new file mode 120000
index 0000000000..6767e4212b
--- /dev/null
+++ b/Lang/EasyLang/Sort-a-list-of-object-identifiers
@@ -0,0 +1 @@
+../../Task/Sort-a-list-of-object-identifiers/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Sort-an-integer-array b/Lang/EasyLang/Sort-an-integer-array
new file mode 120000
index 0000000000..b6e22e35fd
--- /dev/null
+++ b/Lang/EasyLang/Sort-an-integer-array
@@ -0,0 +1 @@
+../../Task/Sort-an-integer-array/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Sort-numbers-lexicographically b/Lang/EasyLang/Sort-numbers-lexicographically
new file mode 120000
index 0000000000..096e63b030
--- /dev/null
+++ b/Lang/EasyLang/Sort-numbers-lexicographically
@@ -0,0 +1 @@
+../../Task/Sort-numbers-lexicographically/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Sorting-Algorithms-Circle-Sort b/Lang/EasyLang/Sorting-Algorithms-Circle-Sort
new file mode 120000
index 0000000000..575205820f
--- /dev/null
+++ b/Lang/EasyLang/Sorting-Algorithms-Circle-Sort
@@ -0,0 +1 @@
+../../Task/Sorting-Algorithms-Circle-Sort/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Sorting-algorithms-Cocktail-sort b/Lang/EasyLang/Sorting-algorithms-Cocktail-sort
new file mode 120000
index 0000000000..6ea90a8bea
--- /dev/null
+++ b/Lang/EasyLang/Sorting-algorithms-Cocktail-sort
@@ -0,0 +1 @@
+../../Task/Sorting-algorithms-Cocktail-sort/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Sorting-algorithms-Comb-sort b/Lang/EasyLang/Sorting-algorithms-Comb-sort
new file mode 120000
index 0000000000..105d051508
--- /dev/null
+++ b/Lang/EasyLang/Sorting-algorithms-Comb-sort
@@ -0,0 +1 @@
+../../Task/Sorting-algorithms-Comb-sort/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Sorting-algorithms-Pancake-sort b/Lang/EasyLang/Sorting-algorithms-Pancake-sort
new file mode 120000
index 0000000000..7f8da5bd54
--- /dev/null
+++ b/Lang/EasyLang/Sorting-algorithms-Pancake-sort
@@ -0,0 +1 @@
+../../Task/Sorting-algorithms-Pancake-sort/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Sorting-algorithms-Permutation-sort b/Lang/EasyLang/Sorting-algorithms-Permutation-sort
new file mode 120000
index 0000000000..858ffd0315
--- /dev/null
+++ b/Lang/EasyLang/Sorting-algorithms-Permutation-sort
@@ -0,0 +1 @@
+../../Task/Sorting-algorithms-Permutation-sort/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Sorting-algorithms-Shell-sort b/Lang/EasyLang/Sorting-algorithms-Shell-sort
new file mode 120000
index 0000000000..f5b30c5803
--- /dev/null
+++ b/Lang/EasyLang/Sorting-algorithms-Shell-sort
@@ -0,0 +1 @@
+../../Task/Sorting-algorithms-Shell-sort/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Sorting-algorithms-Strand-sort b/Lang/EasyLang/Sorting-algorithms-Strand-sort
new file mode 120000
index 0000000000..005353ca66
--- /dev/null
+++ b/Lang/EasyLang/Sorting-algorithms-Strand-sort
@@ -0,0 +1 @@
+../../Task/Sorting-algorithms-Strand-sort/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Stair-climbing-puzzle b/Lang/EasyLang/Stair-climbing-puzzle
new file mode 120000
index 0000000000..e0c07f706d
--- /dev/null
+++ b/Lang/EasyLang/Stair-climbing-puzzle
@@ -0,0 +1 @@
+../../Task/Stair-climbing-puzzle/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Stem-and-leaf-plot b/Lang/EasyLang/Stem-and-leaf-plot
new file mode 120000
index 0000000000..cf4dace06c
--- /dev/null
+++ b/Lang/EasyLang/Stem-and-leaf-plot
@@ -0,0 +1 @@
+../../Task/Stem-and-leaf-plot/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Taxicab-numbers b/Lang/EasyLang/Taxicab-numbers
new file mode 120000
index 0000000000..7035ad16c4
--- /dev/null
+++ b/Lang/EasyLang/Taxicab-numbers
@@ -0,0 +1 @@
+../../Task/Taxicab-numbers/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Tokenize-a-string-with-escaping b/Lang/EasyLang/Tokenize-a-string-with-escaping
new file mode 120000
index 0000000000..1059b903ad
--- /dev/null
+++ b/Lang/EasyLang/Tokenize-a-string-with-escaping
@@ -0,0 +1 @@
+../../Task/Tokenize-a-string-with-escaping/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Top-rank-per-group b/Lang/EasyLang/Top-rank-per-group
new file mode 120000
index 0000000000..861db59645
--- /dev/null
+++ b/Lang/EasyLang/Top-rank-per-group
@@ -0,0 +1 @@
+../../Task/Top-rank-per-group/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Verify-distribution-uniformity-Naive b/Lang/EasyLang/Verify-distribution-uniformity-Naive
new file mode 120000
index 0000000000..bc6d548e1b
--- /dev/null
+++ b/Lang/EasyLang/Verify-distribution-uniformity-Naive
@@ -0,0 +1 @@
+../../Task/Verify-distribution-uniformity-Naive/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Zig-zag-matrix b/Lang/EasyLang/Zig-zag-matrix
new file mode 120000
index 0000000000..59c91477d5
--- /dev/null
+++ b/Lang/EasyLang/Zig-zag-matrix
@@ -0,0 +1 @@
+../../Task/Zig-zag-matrix/EasyLang
\ No newline at end of file
diff --git a/Lang/Ecstasy/00-LANG.txt b/Lang/Ecstasy/00-LANG.txt
index 7358e7f1ea..9c977a310d 100644
--- a/Lang/Ecstasy/00-LANG.txt
+++ b/Lang/Ecstasy/00-LANG.txt
@@ -25,4 +25,7 @@ The primary benefits of Ecstasy are:
* A security model designed for the serverless cloud, using lightweight software containers and dependency injection (IOC/DI)
* A reified generic type system with support for unions, intersection, and difference types, first-class tuples and functions, type inference, and type-safe mixins
* Built-in concurrency support, with first-class support for object immutability, and the elimination of shared-mutable data
-* All of the modern capabilities that developers have grown to depend on, such as: [[garbage collection|Automatic memory management]], an integrated module system, first-class lambdas and functions, partial binding and currying, cross-platform portability, and an open source development model
\ No newline at end of file
+* All of the modern capabilities that developers have grown to depend on, such as: [[garbage collection|Automatic memory management]], an integrated module system, first-class lambdas and functions, partial binding and currying, cross-platform portability, and an open source development model
+
+==TODO==
+* [[Tasks not implemented in Ecstasy]]
\ No newline at end of file
diff --git a/Lang/Ecstasy/100-prisoners b/Lang/Ecstasy/100-prisoners
new file mode 120000
index 0000000000..e9fb2d2f70
--- /dev/null
+++ b/Lang/Ecstasy/100-prisoners
@@ -0,0 +1 @@
+../../Task/100-prisoners/Ecstasy
\ No newline at end of file
diff --git a/Lang/Ecstasy/Assertions b/Lang/Ecstasy/Assertions
new file mode 120000
index 0000000000..0802d10c0c
--- /dev/null
+++ b/Lang/Ecstasy/Assertions
@@ -0,0 +1 @@
+../../Task/Assertions/Ecstasy
\ No newline at end of file
diff --git a/Lang/Ecstasy/Pointers-and-references b/Lang/Ecstasy/Pointers-and-references
new file mode 120000
index 0000000000..9b85919b2d
--- /dev/null
+++ b/Lang/Ecstasy/Pointers-and-references
@@ -0,0 +1 @@
+../../Task/Pointers-and-references/Ecstasy
\ No newline at end of file
diff --git a/Lang/Ecstasy/Program-name b/Lang/Ecstasy/Program-name
new file mode 120000
index 0000000000..6411623f47
--- /dev/null
+++ b/Lang/Ecstasy/Program-name
@@ -0,0 +1 @@
+../../Task/Program-name/Ecstasy
\ No newline at end of file
diff --git a/Lang/Ecstasy/Reflection-List-methods b/Lang/Ecstasy/Reflection-List-methods
new file mode 120000
index 0000000000..f4010fce77
--- /dev/null
+++ b/Lang/Ecstasy/Reflection-List-methods
@@ -0,0 +1 @@
+../../Task/Reflection-List-methods/Ecstasy
\ No newline at end of file
diff --git a/Lang/Ecstasy/Reflection-List-properties b/Lang/Ecstasy/Reflection-List-properties
new file mode 120000
index 0000000000..40ec86fd95
--- /dev/null
+++ b/Lang/Ecstasy/Reflection-List-properties
@@ -0,0 +1 @@
+../../Task/Reflection-List-properties/Ecstasy
\ No newline at end of file
diff --git a/Lang/Ecstasy/Search-a-list b/Lang/Ecstasy/Search-a-list
new file mode 120000
index 0000000000..f6044e825c
--- /dev/null
+++ b/Lang/Ecstasy/Search-a-list
@@ -0,0 +1 @@
+../../Task/Search-a-list/Ecstasy
\ No newline at end of file
diff --git a/Lang/Ecstasy/Send-an-unknown-method-call b/Lang/Ecstasy/Send-an-unknown-method-call
new file mode 120000
index 0000000000..5d1a4cbed5
--- /dev/null
+++ b/Lang/Ecstasy/Send-an-unknown-method-call
@@ -0,0 +1 @@
+../../Task/Send-an-unknown-method-call/Ecstasy
\ No newline at end of file
diff --git a/Lang/Ecstasy/Singleton b/Lang/Ecstasy/Singleton
new file mode 120000
index 0000000000..8c9a0eb1b2
--- /dev/null
+++ b/Lang/Ecstasy/Singleton
@@ -0,0 +1 @@
+../../Task/Singleton/Ecstasy
\ No newline at end of file
diff --git a/Lang/Ecstasy/String-case b/Lang/Ecstasy/String-case
new file mode 120000
index 0000000000..75c8cc65c2
--- /dev/null
+++ b/Lang/Ecstasy/String-case
@@ -0,0 +1 @@
+../../Task/String-case/Ecstasy
\ No newline at end of file
diff --git a/Lang/Ecstasy/String-comparison b/Lang/Ecstasy/String-comparison
new file mode 120000
index 0000000000..2a690e7c01
--- /dev/null
+++ b/Lang/Ecstasy/String-comparison
@@ -0,0 +1 @@
+../../Task/String-comparison/Ecstasy
\ No newline at end of file
diff --git a/Lang/Ecstasy/String-concatenation b/Lang/Ecstasy/String-concatenation
new file mode 120000
index 0000000000..a8fc37bb41
--- /dev/null
+++ b/Lang/Ecstasy/String-concatenation
@@ -0,0 +1 @@
+../../Task/String-concatenation/Ecstasy
\ No newline at end of file
diff --git a/Lang/Ecstasy/String-length b/Lang/Ecstasy/String-length
new file mode 120000
index 0000000000..e3f6d6a12a
--- /dev/null
+++ b/Lang/Ecstasy/String-length
@@ -0,0 +1 @@
+../../Task/String-length/Ecstasy
\ No newline at end of file
diff --git a/Lang/Ecstasy/Substring b/Lang/Ecstasy/Substring
new file mode 120000
index 0000000000..59160f9d22
--- /dev/null
+++ b/Lang/Ecstasy/Substring
@@ -0,0 +1 @@
+../../Task/Substring/Ecstasy
\ No newline at end of file
diff --git a/Lang/Ecstasy/Substring-Top-and-tail b/Lang/Ecstasy/Substring-Top-and-tail
new file mode 120000
index 0000000000..cf035aa347
--- /dev/null
+++ b/Lang/Ecstasy/Substring-Top-and-tail
@@ -0,0 +1 @@
+../../Task/Substring-Top-and-tail/Ecstasy
\ No newline at end of file
diff --git a/Lang/Ecstasy/System-time b/Lang/Ecstasy/System-time
new file mode 120000
index 0000000000..4b0a593cce
--- /dev/null
+++ b/Lang/Ecstasy/System-time
@@ -0,0 +1 @@
+../../Task/System-time/Ecstasy
\ No newline at end of file
diff --git a/Lang/Elixir/Parallel-brute-force b/Lang/Elixir/Parallel-brute-force
new file mode 120000
index 0000000000..154ccc9bb9
--- /dev/null
+++ b/Lang/Elixir/Parallel-brute-force
@@ -0,0 +1 @@
+../../Task/Parallel-brute-force/Elixir
\ No newline at end of file
diff --git a/Lang/Elm/Caesar-cipher b/Lang/Elm/Caesar-cipher
new file mode 120000
index 0000000000..e2f4604523
--- /dev/null
+++ b/Lang/Elm/Caesar-cipher
@@ -0,0 +1 @@
+../../Task/Caesar-cipher/Elm
\ No newline at end of file
diff --git a/Lang/Emacs-Lisp/Abbreviations-automatic b/Lang/Emacs-Lisp/Abbreviations-automatic
new file mode 120000
index 0000000000..917fbde092
--- /dev/null
+++ b/Lang/Emacs-Lisp/Abbreviations-automatic
@@ -0,0 +1 @@
+../../Task/Abbreviations-automatic/Emacs-Lisp
\ No newline at end of file
diff --git a/Lang/Emacs-Lisp/Anagrams b/Lang/Emacs-Lisp/Anagrams
new file mode 120000
index 0000000000..0bf987f884
--- /dev/null
+++ b/Lang/Emacs-Lisp/Anagrams
@@ -0,0 +1 @@
+../../Task/Anagrams/Emacs-Lisp
\ No newline at end of file
diff --git a/Lang/Emacs-Lisp/Compare-length-of-two-strings b/Lang/Emacs-Lisp/Compare-length-of-two-strings
new file mode 120000
index 0000000000..2aa87a97f8
--- /dev/null
+++ b/Lang/Emacs-Lisp/Compare-length-of-two-strings
@@ -0,0 +1 @@
+../../Task/Compare-length-of-two-strings/Emacs-Lisp
\ No newline at end of file
diff --git a/Lang/Emacs-Lisp/Date-manipulation b/Lang/Emacs-Lisp/Date-manipulation
new file mode 120000
index 0000000000..d88e6a9576
--- /dev/null
+++ b/Lang/Emacs-Lisp/Date-manipulation
@@ -0,0 +1 @@
+../../Task/Date-manipulation/Emacs-Lisp
\ No newline at end of file
diff --git a/Lang/Emacs-Lisp/Determine-if-a-string-is-numeric b/Lang/Emacs-Lisp/Determine-if-a-string-is-numeric
new file mode 120000
index 0000000000..2314291eaa
--- /dev/null
+++ b/Lang/Emacs-Lisp/Determine-if-a-string-is-numeric
@@ -0,0 +1 @@
+../../Task/Determine-if-a-string-is-numeric/Emacs-Lisp
\ No newline at end of file
diff --git a/Lang/Emacs-Lisp/Determine-sentence-type b/Lang/Emacs-Lisp/Determine-sentence-type
new file mode 120000
index 0000000000..633b068253
--- /dev/null
+++ b/Lang/Emacs-Lisp/Determine-sentence-type
@@ -0,0 +1 @@
+../../Task/Determine-sentence-type/Emacs-Lisp
\ No newline at end of file
diff --git a/Lang/Emacs-Lisp/Ordered-words b/Lang/Emacs-Lisp/Ordered-words
new file mode 120000
index 0000000000..444b596fcd
--- /dev/null
+++ b/Lang/Emacs-Lisp/Ordered-words
@@ -0,0 +1 @@
+../../Task/Ordered-words/Emacs-Lisp
\ No newline at end of file
diff --git a/Lang/Emacs-Lisp/Snake b/Lang/Emacs-Lisp/Snake
new file mode 120000
index 0000000000..b334d7a373
--- /dev/null
+++ b/Lang/Emacs-Lisp/Snake
@@ -0,0 +1 @@
+../../Task/Snake/Emacs-Lisp
\ No newline at end of file
diff --git a/Lang/Emacs-Lisp/Substitution-cipher b/Lang/Emacs-Lisp/Substitution-cipher
new file mode 120000
index 0000000000..93f7ee4d63
--- /dev/null
+++ b/Lang/Emacs-Lisp/Substitution-cipher
@@ -0,0 +1 @@
+../../Task/Substitution-cipher/Emacs-Lisp
\ No newline at end of file
diff --git a/Lang/Fortran/Sleeping-Beauty-problem b/Lang/Fortran/Sleeping-Beauty-problem
new file mode 120000
index 0000000000..35b7547112
--- /dev/null
+++ b/Lang/Fortran/Sleeping-Beauty-problem
@@ -0,0 +1 @@
+../../Task/Sleeping-Beauty-problem/Fortran
\ No newline at end of file
diff --git a/Lang/Free-Pascal-Lazarus/Bin-given-limits b/Lang/Free-Pascal-Lazarus/Bin-given-limits
new file mode 120000
index 0000000000..090d25165e
--- /dev/null
+++ b/Lang/Free-Pascal-Lazarus/Bin-given-limits
@@ -0,0 +1 @@
+../../Task/Bin-given-limits/Free-Pascal-Lazarus
\ No newline at end of file
diff --git a/Lang/Free-Pascal-Lazarus/Closures-Value-capture b/Lang/Free-Pascal-Lazarus/Closures-Value-capture
new file mode 120000
index 0000000000..4b2493493f
--- /dev/null
+++ b/Lang/Free-Pascal-Lazarus/Closures-Value-capture
@@ -0,0 +1 @@
+../../Task/Closures-Value-capture/Free-Pascal-Lazarus
\ No newline at end of file
diff --git a/Lang/Free-Pascal-Lazarus/Parallel-calculations b/Lang/Free-Pascal-Lazarus/Parallel-calculations
new file mode 120000
index 0000000000..191ed1dae7
--- /dev/null
+++ b/Lang/Free-Pascal-Lazarus/Parallel-calculations
@@ -0,0 +1 @@
+../../Task/Parallel-calculations/Free-Pascal-Lazarus
\ No newline at end of file
diff --git a/Lang/FreeBASIC/B-zier-curves-Intersections b/Lang/FreeBASIC/B-zier-curves-Intersections
new file mode 120000
index 0000000000..e1718d7dc9
--- /dev/null
+++ b/Lang/FreeBASIC/B-zier-curves-Intersections
@@ -0,0 +1 @@
+../../Task/B-zier-curves-Intersections/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Constrained-genericity b/Lang/FreeBASIC/Constrained-genericity
new file mode 120000
index 0000000000..1fc68e6907
--- /dev/null
+++ b/Lang/FreeBASIC/Constrained-genericity
@@ -0,0 +1 @@
+../../Task/Constrained-genericity/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Execute-Computer-Zero b/Lang/FreeBASIC/Execute-Computer-Zero
new file mode 120000
index 0000000000..018dffe9b4
--- /dev/null
+++ b/Lang/FreeBASIC/Execute-Computer-Zero
@@ -0,0 +1 @@
+../../Task/Execute-Computer-Zero/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Execute-SNUSP b/Lang/FreeBASIC/Execute-SNUSP
new file mode 120000
index 0000000000..7b179aedb8
--- /dev/null
+++ b/Lang/FreeBASIC/Execute-SNUSP
@@ -0,0 +1 @@
+../../Task/Execute-SNUSP/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Execute-a-Markov-algorithm b/Lang/FreeBASIC/Execute-a-Markov-algorithm
new file mode 120000
index 0000000000..7f61263c19
--- /dev/null
+++ b/Lang/FreeBASIC/Execute-a-Markov-algorithm
@@ -0,0 +1 @@
+../../Task/Execute-a-Markov-algorithm/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Imaginary-base-numbers b/Lang/FreeBASIC/Imaginary-base-numbers
new file mode 120000
index 0000000000..00ee9d8fe6
--- /dev/null
+++ b/Lang/FreeBASIC/Imaginary-base-numbers
@@ -0,0 +1 @@
+../../Task/Imaginary-base-numbers/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Nested-templated-data b/Lang/FreeBASIC/Nested-templated-data
new file mode 120000
index 0000000000..064256a2d8
--- /dev/null
+++ b/Lang/FreeBASIC/Nested-templated-data
@@ -0,0 +1 @@
+../../Task/Nested-templated-data/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Padovan-sequence b/Lang/FreeBASIC/Padovan-sequence
new file mode 120000
index 0000000000..efb5ea56df
--- /dev/null
+++ b/Lang/FreeBASIC/Padovan-sequence
@@ -0,0 +1 @@
+../../Task/Padovan-sequence/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Pseudo-random-numbers-PCG32 b/Lang/FreeBASIC/Pseudo-random-numbers-PCG32
new file mode 120000
index 0000000000..8a007fed91
--- /dev/null
+++ b/Lang/FreeBASIC/Pseudo-random-numbers-PCG32
@@ -0,0 +1 @@
+../../Task/Pseudo-random-numbers-PCG32/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Pseudo-random-numbers-Splitmix64 b/Lang/FreeBASIC/Pseudo-random-numbers-Splitmix64
new file mode 120000
index 0000000000..233c73713f
--- /dev/null
+++ b/Lang/FreeBASIC/Pseudo-random-numbers-Splitmix64
@@ -0,0 +1 @@
+../../Task/Pseudo-random-numbers-Splitmix64/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Pseudo-random-numbers-Xorshift-star b/Lang/FreeBASIC/Pseudo-random-numbers-Xorshift-star
new file mode 120000
index 0000000000..a40446f6c8
--- /dev/null
+++ b/Lang/FreeBASIC/Pseudo-random-numbers-Xorshift-star
@@ -0,0 +1 @@
+../../Task/Pseudo-random-numbers-Xorshift-star/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Runtime-evaluation-In-an-environment b/Lang/FreeBASIC/Runtime-evaluation-In-an-environment
new file mode 120000
index 0000000000..80c5a69b35
--- /dev/null
+++ b/Lang/FreeBASIC/Runtime-evaluation-In-an-environment
@@ -0,0 +1 @@
+../../Task/Runtime-evaluation-In-an-environment/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Solve-the-no-connection-puzzle b/Lang/FreeBASIC/Solve-the-no-connection-puzzle
new file mode 120000
index 0000000000..b14a0d6097
--- /dev/null
+++ b/Lang/FreeBASIC/Solve-the-no-connection-puzzle
@@ -0,0 +1 @@
+../../Task/Solve-the-no-connection-puzzle/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Write-to-Windows-event-log b/Lang/FreeBASIC/Write-to-Windows-event-log
new file mode 120000
index 0000000000..8993ae4828
--- /dev/null
+++ b/Lang/FreeBASIC/Write-to-Windows-event-log
@@ -0,0 +1 @@
+../../Task/Write-to-Windows-event-log/FreeBASIC
\ No newline at end of file
diff --git a/Lang/Frink/24-game b/Lang/Frink/24-game
new file mode 120000
index 0000000000..843d6f51e2
--- /dev/null
+++ b/Lang/Frink/24-game
@@ -0,0 +1 @@
+../../Task/24-game/Frink
\ No newline at end of file
diff --git a/Lang/FutureBasic/24-game b/Lang/FutureBasic/24-game
new file mode 120000
index 0000000000..f1ea3d0684
--- /dev/null
+++ b/Lang/FutureBasic/24-game
@@ -0,0 +1 @@
+../../Task/24-game/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/ASCII-art-diagram-converter b/Lang/FutureBasic/ASCII-art-diagram-converter
new file mode 120000
index 0000000000..cb5711ff54
--- /dev/null
+++ b/Lang/FutureBasic/ASCII-art-diagram-converter
@@ -0,0 +1 @@
+../../Task/ASCII-art-diagram-converter/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Arbitrary-precision-integers-included- b/Lang/FutureBasic/Arbitrary-precision-integers-included-
new file mode 120000
index 0000000000..ca9deb04e2
--- /dev/null
+++ b/Lang/FutureBasic/Arbitrary-precision-integers-included-
@@ -0,0 +1 @@
+../../Task/Arbitrary-precision-integers-included-/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Biorhythms b/Lang/FutureBasic/Biorhythms
new file mode 120000
index 0000000000..db55b5c43b
--- /dev/null
+++ b/Lang/FutureBasic/Biorhythms
@@ -0,0 +1 @@
+../../Task/Biorhythms/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Brilliant-numbers b/Lang/FutureBasic/Brilliant-numbers
new file mode 120000
index 0000000000..0ee49e027a
--- /dev/null
+++ b/Lang/FutureBasic/Brilliant-numbers
@@ -0,0 +1 @@
+../../Task/Brilliant-numbers/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Check-output-device-is-a-terminal b/Lang/FutureBasic/Check-output-device-is-a-terminal
new file mode 120000
index 0000000000..e2e8c9c4eb
--- /dev/null
+++ b/Lang/FutureBasic/Check-output-device-is-a-terminal
@@ -0,0 +1 @@
+../../Task/Check-output-device-is-a-terminal/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Combinations b/Lang/FutureBasic/Combinations
new file mode 120000
index 0000000000..d7395ea4d1
--- /dev/null
+++ b/Lang/FutureBasic/Combinations
@@ -0,0 +1 @@
+../../Task/Combinations/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Copy-stdin-to-stdout b/Lang/FutureBasic/Copy-stdin-to-stdout
new file mode 120000
index 0000000000..9a5df43082
--- /dev/null
+++ b/Lang/FutureBasic/Copy-stdin-to-stdout
@@ -0,0 +1 @@
+../../Task/Copy-stdin-to-stdout/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Determine-sentence-type b/Lang/FutureBasic/Determine-sentence-type
new file mode 120000
index 0000000000..fce2322962
--- /dev/null
+++ b/Lang/FutureBasic/Determine-sentence-type
@@ -0,0 +1 @@
+../../Task/Determine-sentence-type/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Floyds-triangle b/Lang/FutureBasic/Floyds-triangle
new file mode 120000
index 0000000000..134b2be232
--- /dev/null
+++ b/Lang/FutureBasic/Floyds-triangle
@@ -0,0 +1 @@
+../../Task/Floyds-triangle/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Function-prototype b/Lang/FutureBasic/Function-prototype
new file mode 120000
index 0000000000..00a31e111b
--- /dev/null
+++ b/Lang/FutureBasic/Function-prototype
@@ -0,0 +1 @@
+../../Task/Function-prototype/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Go-Fish b/Lang/FutureBasic/Go-Fish
new file mode 120000
index 0000000000..cc2210d25a
--- /dev/null
+++ b/Lang/FutureBasic/Go-Fish
@@ -0,0 +1 @@
+../../Task/Go-Fish/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Honeycombs b/Lang/FutureBasic/Honeycombs
new file mode 120000
index 0000000000..306c30d982
--- /dev/null
+++ b/Lang/FutureBasic/Honeycombs
@@ -0,0 +1 @@
+../../Task/Honeycombs/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Monty-Hall-problem b/Lang/FutureBasic/Monty-Hall-problem
new file mode 120000
index 0000000000..0d9da7e7cc
--- /dev/null
+++ b/Lang/FutureBasic/Monty-Hall-problem
@@ -0,0 +1 @@
+../../Task/Monty-Hall-problem/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Record-sound b/Lang/FutureBasic/Record-sound
new file mode 120000
index 0000000000..7ce89c688d
--- /dev/null
+++ b/Lang/FutureBasic/Record-sound
@@ -0,0 +1 @@
+../../Task/Record-sound/FutureBasic
\ No newline at end of file
diff --git a/Lang/GW-BASIC/Damm-algorithm b/Lang/GW-BASIC/Damm-algorithm
new file mode 120000
index 0000000000..b0cc19e6df
--- /dev/null
+++ b/Lang/GW-BASIC/Damm-algorithm
@@ -0,0 +1 @@
+../../Task/Damm-algorithm/GW-BASIC
\ No newline at end of file
diff --git a/Lang/GW-BASIC/Display-a-linear-combination b/Lang/GW-BASIC/Display-a-linear-combination
new file mode 120000
index 0000000000..8162367d7b
--- /dev/null
+++ b/Lang/GW-BASIC/Display-a-linear-combination
@@ -0,0 +1 @@
+../../Task/Display-a-linear-combination/GW-BASIC
\ No newline at end of file
diff --git a/Lang/GW-BASIC/Gray-code b/Lang/GW-BASIC/Gray-code
new file mode 120000
index 0000000000..a45f2031ed
--- /dev/null
+++ b/Lang/GW-BASIC/Gray-code
@@ -0,0 +1 @@
+../../Task/Gray-code/GW-BASIC
\ No newline at end of file
diff --git a/Lang/GW-BASIC/Jensens-Device b/Lang/GW-BASIC/Jensens-Device
new file mode 120000
index 0000000000..0236b00319
--- /dev/null
+++ b/Lang/GW-BASIC/Jensens-Device
@@ -0,0 +1 @@
+../../Task/Jensens-Device/GW-BASIC
\ No newline at end of file
diff --git a/Lang/GW-BASIC/Nested-templated-data b/Lang/GW-BASIC/Nested-templated-data
new file mode 120000
index 0000000000..bb39849801
--- /dev/null
+++ b/Lang/GW-BASIC/Nested-templated-data
@@ -0,0 +1 @@
+../../Task/Nested-templated-data/GW-BASIC
\ No newline at end of file
diff --git a/Lang/GW-BASIC/Primality-by-trial-division b/Lang/GW-BASIC/Primality-by-trial-division
new file mode 120000
index 0000000000..2b782a101b
--- /dev/null
+++ b/Lang/GW-BASIC/Primality-by-trial-division
@@ -0,0 +1 @@
+../../Task/Primality-by-trial-division/GW-BASIC
\ No newline at end of file
diff --git a/Lang/GW-BASIC/Vector b/Lang/GW-BASIC/Vector
new file mode 120000
index 0000000000..6d1d7a6796
--- /dev/null
+++ b/Lang/GW-BASIC/Vector
@@ -0,0 +1 @@
+../../Task/Vector/GW-BASIC
\ No newline at end of file
diff --git a/Lang/Gambas/Jensens-Device b/Lang/Gambas/Jensens-Device
new file mode 120000
index 0000000000..cf682dd548
--- /dev/null
+++ b/Lang/Gambas/Jensens-Device
@@ -0,0 +1 @@
+../../Task/Jensens-Device/Gambas
\ No newline at end of file
diff --git a/Lang/Gambas/M-bius-function b/Lang/Gambas/M-bius-function
new file mode 120000
index 0000000000..4846367944
--- /dev/null
+++ b/Lang/Gambas/M-bius-function
@@ -0,0 +1 @@
+../../Task/M-bius-function/Gambas
\ No newline at end of file
diff --git a/Lang/Gambas/Proper-divisors b/Lang/Gambas/Proper-divisors
new file mode 120000
index 0000000000..c95a4aae71
--- /dev/null
+++ b/Lang/Gambas/Proper-divisors
@@ -0,0 +1 @@
+../../Task/Proper-divisors/Gambas
\ No newline at end of file
diff --git a/Lang/Go/Factorial-primes b/Lang/Go/Factorial-primes
new file mode 120000
index 0000000000..5b25426fd0
--- /dev/null
+++ b/Lang/Go/Factorial-primes
@@ -0,0 +1 @@
+../../Task/Factorial-primes/Go
\ No newline at end of file
diff --git a/Lang/Java/Arena-storage-pool b/Lang/Java/Arena-storage-pool
new file mode 120000
index 0000000000..11592b83c1
--- /dev/null
+++ b/Lang/Java/Arena-storage-pool
@@ -0,0 +1 @@
+../../Task/Arena-storage-pool/Java
\ No newline at end of file
diff --git a/Lang/Java/Bitcoin-public-point-to-address b/Lang/Java/Bitcoin-public-point-to-address
new file mode 120000
index 0000000000..cbdcab404f
--- /dev/null
+++ b/Lang/Java/Bitcoin-public-point-to-address
@@ -0,0 +1 @@
+../../Task/Bitcoin-public-point-to-address/Java
\ No newline at end of file
diff --git a/Lang/Java/Catmull-Clark-subdivision-surface b/Lang/Java/Catmull-Clark-subdivision-surface
new file mode 120000
index 0000000000..cc0173bf86
--- /dev/null
+++ b/Lang/Java/Catmull-Clark-subdivision-surface
@@ -0,0 +1 @@
+../../Task/Catmull-Clark-subdivision-surface/Java
\ No newline at end of file
diff --git a/Lang/Java/Compiler-virtual-machine-interpreter b/Lang/Java/Compiler-virtual-machine-interpreter
new file mode 120000
index 0000000000..8a6c333099
--- /dev/null
+++ b/Lang/Java/Compiler-virtual-machine-interpreter
@@ -0,0 +1 @@
+../../Task/Compiler-virtual-machine-interpreter/Java
\ No newline at end of file
diff --git a/Lang/Java/Im-a-software-engineer-get-me-out-of-here b/Lang/Java/Im-a-software-engineer-get-me-out-of-here
new file mode 120000
index 0000000000..5e4c7fd308
--- /dev/null
+++ b/Lang/Java/Im-a-software-engineer-get-me-out-of-here
@@ -0,0 +1 @@
+../../Task/Im-a-software-engineer-get-me-out-of-here/Java
\ No newline at end of file
diff --git a/Lang/Java/P-Adic-square-roots b/Lang/Java/P-Adic-square-roots
new file mode 120000
index 0000000000..768922bdbb
--- /dev/null
+++ b/Lang/Java/P-Adic-square-roots
@@ -0,0 +1 @@
+../../Task/P-Adic-square-roots/Java
\ No newline at end of file
diff --git a/Lang/Java/Topic-variable b/Lang/Java/Topic-variable
new file mode 120000
index 0000000000..25c03be6d5
--- /dev/null
+++ b/Lang/Java/Topic-variable
@@ -0,0 +1 @@
+../../Task/Topic-variable/Java
\ No newline at end of file
diff --git a/Lang/Jq/00-LANG.txt b/Lang/Jq/00-LANG.txt
index 3eba7f05c0..a2d6626be7 100644
--- a/Lang/Jq/00-LANG.txt
+++ b/Lang/Jq/00-LANG.txt
@@ -7,9 +7,14 @@ 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/bitwise.jq|bitwise.jq]] - bit streams, bit arrays, and integers
* [[: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/rational.jq|rational.jq]] - rational numbers
+
+* [[:Category:Jq/Date.jq|Date.jq]] - Gregorian calendar from the year 1
+* [[:Category:Jq/MRG32k3a.jq|MRG32k3a.jq]] - MRG32k3a Combined Recursive Pseudo-Random Number Generator
* [[:Category:Jq/RealSet.jq|RealSet.jq]] - Union of finite real intervals
==Todo==
diff --git a/Lang/Jq/2048 b/Lang/Jq/2048
new file mode 120000
index 0000000000..e78d154a28
--- /dev/null
+++ b/Lang/Jq/2048
@@ -0,0 +1 @@
+../../Task/2048/Jq
\ No newline at end of file
diff --git a/Lang/Jq/24-game b/Lang/Jq/24-game
new file mode 120000
index 0000000000..1db8a29eb4
--- /dev/null
+++ b/Lang/Jq/24-game
@@ -0,0 +1 @@
+../../Task/24-game/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Averages-Simple-moving-average b/Lang/Jq/Averages-Simple-moving-average
new file mode 120000
index 0000000000..7c27d5bee2
--- /dev/null
+++ b/Lang/Jq/Averages-Simple-moving-average
@@ -0,0 +1 @@
+../../Task/Averages-Simple-moving-average/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Bitwise-operations b/Lang/Jq/Bitwise-operations
new file mode 120000
index 0000000000..eff5a2f904
--- /dev/null
+++ b/Lang/Jq/Bitwise-operations
@@ -0,0 +1 @@
+../../Task/Bitwise-operations/Jq
\ No newline at end of file
diff --git a/Lang/Jq/CRC-32 b/Lang/Jq/CRC-32
new file mode 120000
index 0000000000..800ab8f0ad
--- /dev/null
+++ b/Lang/Jq/CRC-32
@@ -0,0 +1 @@
+../../Task/CRC-32/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Continued-fraction-Arithmetic-Construct-from-rational-number b/Lang/Jq/Continued-fraction-Arithmetic-Construct-from-rational-number
new file mode 120000
index 0000000000..90c56c3b3a
--- /dev/null
+++ b/Lang/Jq/Continued-fraction-Arithmetic-Construct-from-rational-number
@@ -0,0 +1 @@
+../../Task/Continued-fraction-Arithmetic-Construct-from-rational-number/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Deconvolution-1D b/Lang/Jq/Deconvolution-1D
new file mode 120000
index 0000000000..4f872c1005
--- /dev/null
+++ b/Lang/Jq/Deconvolution-1D
@@ -0,0 +1 @@
+../../Task/Deconvolution-1D/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Display-an-outline-as-a-nested-table b/Lang/Jq/Display-an-outline-as-a-nested-table
new file mode 120000
index 0000000000..37137659b6
--- /dev/null
+++ b/Lang/Jq/Display-an-outline-as-a-nested-table
@@ -0,0 +1 @@
+../../Task/Display-an-outline-as-a-nested-table/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Draw-a-cuboid b/Lang/Jq/Draw-a-cuboid
new file mode 120000
index 0000000000..2af657c230
--- /dev/null
+++ b/Lang/Jq/Draw-a-cuboid
@@ -0,0 +1 @@
+../../Task/Draw-a-cuboid/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Entropy-Narcissist b/Lang/Jq/Entropy-Narcissist
new file mode 120000
index 0000000000..f142d7e681
--- /dev/null
+++ b/Lang/Jq/Entropy-Narcissist
@@ -0,0 +1 @@
+../../Task/Entropy-Narcissist/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Factors-of-a-Mersenne-number b/Lang/Jq/Factors-of-a-Mersenne-number
new file mode 120000
index 0000000000..e34af6567d
--- /dev/null
+++ b/Lang/Jq/Factors-of-a-Mersenne-number
@@ -0,0 +1 @@
+../../Task/Factors-of-a-Mersenne-number/Jq
\ No newline at end of file
diff --git a/Lang/Jq/File-size-distribution b/Lang/Jq/File-size-distribution
new file mode 120000
index 0000000000..d42e94402e
--- /dev/null
+++ b/Lang/Jq/File-size-distribution
@@ -0,0 +1 @@
+../../Task/File-size-distribution/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Find-Chess960-starting-position-identifier b/Lang/Jq/Find-Chess960-starting-position-identifier
new file mode 120000
index 0000000000..ea292cff65
--- /dev/null
+++ b/Lang/Jq/Find-Chess960-starting-position-identifier
@@ -0,0 +1 @@
+../../Task/Find-Chess960-starting-position-identifier/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Find-duplicate-files b/Lang/Jq/Find-duplicate-files
new file mode 120000
index 0000000000..289f08d02f
--- /dev/null
+++ b/Lang/Jq/Find-duplicate-files
@@ -0,0 +1 @@
+../../Task/Find-duplicate-files/Jq
\ No newline at end of file
diff --git a/Lang/Jq/French-Republican-calendar b/Lang/Jq/French-Republican-calendar
new file mode 120000
index 0000000000..d495d14d71
--- /dev/null
+++ b/Lang/Jq/French-Republican-calendar
@@ -0,0 +1 @@
+../../Task/French-Republican-calendar/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Generate-random-chess-position b/Lang/Jq/Generate-random-chess-position
new file mode 120000
index 0000000000..a6ff2b1df0
--- /dev/null
+++ b/Lang/Jq/Generate-random-chess-position
@@ -0,0 +1 @@
+../../Task/Generate-random-chess-position/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Giuga-numbers b/Lang/Jq/Giuga-numbers
new file mode 120000
index 0000000000..b5850902a3
--- /dev/null
+++ b/Lang/Jq/Giuga-numbers
@@ -0,0 +1 @@
+../../Task/Giuga-numbers/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Graph-colouring b/Lang/Jq/Graph-colouring
new file mode 120000
index 0000000000..07b418f3a3
--- /dev/null
+++ b/Lang/Jq/Graph-colouring
@@ -0,0 +1 @@
+../../Task/Graph-colouring/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Introspection b/Lang/Jq/Introspection
new file mode 120000
index 0000000000..cdb6f22cc1
--- /dev/null
+++ b/Lang/Jq/Introspection
@@ -0,0 +1 @@
+../../Task/Introspection/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Knights-tour b/Lang/Jq/Knights-tour
new file mode 120000
index 0000000000..ca47275558
--- /dev/null
+++ b/Lang/Jq/Knights-tour
@@ -0,0 +1 @@
+../../Task/Knights-tour/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Levenshtein-distance-Alignment b/Lang/Jq/Levenshtein-distance-Alignment
new file mode 120000
index 0000000000..b331da38ff
--- /dev/null
+++ b/Lang/Jq/Levenshtein-distance-Alignment
@@ -0,0 +1 @@
+../../Task/Levenshtein-distance-Alignment/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Mayan-calendar b/Lang/Jq/Mayan-calendar
new file mode 120000
index 0000000000..aa0964c1d8
--- /dev/null
+++ b/Lang/Jq/Mayan-calendar
@@ -0,0 +1 @@
+../../Task/Mayan-calendar/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Mind-boggling-card-trick b/Lang/Jq/Mind-boggling-card-trick
new file mode 120000
index 0000000000..11a1e6dd3d
--- /dev/null
+++ b/Lang/Jq/Mind-boggling-card-trick
@@ -0,0 +1 @@
+../../Task/Mind-boggling-card-trick/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Minimal-steps-down-to-1 b/Lang/Jq/Minimal-steps-down-to-1
new file mode 120000
index 0000000000..d05488db25
--- /dev/null
+++ b/Lang/Jq/Minimal-steps-down-to-1
@@ -0,0 +1 @@
+../../Task/Minimal-steps-down-to-1/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Modified-random-distribution b/Lang/Jq/Modified-random-distribution
new file mode 120000
index 0000000000..5585f4b8dd
--- /dev/null
+++ b/Lang/Jq/Modified-random-distribution
@@ -0,0 +1 @@
+../../Task/Modified-random-distribution/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Multiplicative-order b/Lang/Jq/Multiplicative-order
new file mode 120000
index 0000000000..72c4d667a9
--- /dev/null
+++ b/Lang/Jq/Multiplicative-order
@@ -0,0 +1 @@
+../../Task/Multiplicative-order/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Nonoblock b/Lang/Jq/Nonoblock
new file mode 120000
index 0000000000..f2323057e5
--- /dev/null
+++ b/Lang/Jq/Nonoblock
@@ -0,0 +1 @@
+../../Task/Nonoblock/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Nonogram-solver b/Lang/Jq/Nonogram-solver
new file mode 120000
index 0000000000..2ae5949d16
--- /dev/null
+++ b/Lang/Jq/Nonogram-solver
@@ -0,0 +1 @@
+../../Task/Nonogram-solver/Jq
\ No newline at end of file
diff --git a/Lang/Jq/P-value-correction b/Lang/Jq/P-value-correction
new file mode 120000
index 0000000000..4685fd057d
--- /dev/null
+++ b/Lang/Jq/P-value-correction
@@ -0,0 +1 @@
+../../Task/P-value-correction/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Palindromic-gapful-numbers b/Lang/Jq/Palindromic-gapful-numbers
new file mode 120000
index 0000000000..3f1d4b0a65
--- /dev/null
+++ b/Lang/Jq/Palindromic-gapful-numbers
@@ -0,0 +1 @@
+../../Task/Palindromic-gapful-numbers/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Peaceful-chess-queen-armies b/Lang/Jq/Peaceful-chess-queen-armies
new file mode 120000
index 0000000000..7c675a3306
--- /dev/null
+++ b/Lang/Jq/Peaceful-chess-queen-armies
@@ -0,0 +1 @@
+../../Task/Peaceful-chess-queen-armies/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Pentomino-tiling b/Lang/Jq/Pentomino-tiling
new file mode 120000
index 0000000000..cce133df04
--- /dev/null
+++ b/Lang/Jq/Pentomino-tiling
@@ -0,0 +1 @@
+../../Task/Pentomino-tiling/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Perlin-noise b/Lang/Jq/Perlin-noise
new file mode 120000
index 0000000000..eb52c317a2
--- /dev/null
+++ b/Lang/Jq/Perlin-noise
@@ -0,0 +1 @@
+../../Task/Perlin-noise/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Pisano-period b/Lang/Jq/Pisano-period
new file mode 120000
index 0000000000..223468a26a
--- /dev/null
+++ b/Lang/Jq/Pisano-period
@@ -0,0 +1 @@
+../../Task/Pisano-period/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Poker-hand-analyser b/Lang/Jq/Poker-hand-analyser
new file mode 120000
index 0000000000..fd9738ce61
--- /dev/null
+++ b/Lang/Jq/Poker-hand-analyser
@@ -0,0 +1 @@
+../../Task/Poker-hand-analyser/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Polynomial-regression b/Lang/Jq/Polynomial-regression
new file mode 120000
index 0000000000..56985e2ba4
--- /dev/null
+++ b/Lang/Jq/Polynomial-regression
@@ -0,0 +1 @@
+../../Task/Polynomial-regression/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Pseudo-random-numbers-Combined-recursive-generator-MRG32k3a b/Lang/Jq/Pseudo-random-numbers-Combined-recursive-generator-MRG32k3a
new file mode 120000
index 0000000000..8a1fa69d52
--- /dev/null
+++ b/Lang/Jq/Pseudo-random-numbers-Combined-recursive-generator-MRG32k3a
@@ -0,0 +1 @@
+../../Task/Pseudo-random-numbers-Combined-recursive-generator-MRG32k3a/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Pseudo-random-numbers-PCG32 b/Lang/Jq/Pseudo-random-numbers-PCG32
new file mode 120000
index 0000000000..c80dea5d5d
--- /dev/null
+++ b/Lang/Jq/Pseudo-random-numbers-PCG32
@@ -0,0 +1 @@
+../../Task/Pseudo-random-numbers-PCG32/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Pseudo-random-numbers-Xorshift-star b/Lang/Jq/Pseudo-random-numbers-Xorshift-star
new file mode 120000
index 0000000000..54ff010417
--- /dev/null
+++ b/Lang/Jq/Pseudo-random-numbers-Xorshift-star
@@ -0,0 +1 @@
+../../Task/Pseudo-random-numbers-Xorshift-star/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Ramer-Douglas-Peucker-line-simplification b/Lang/Jq/Ramer-Douglas-Peucker-line-simplification
new file mode 120000
index 0000000000..2692c011c6
--- /dev/null
+++ b/Lang/Jq/Ramer-Douglas-Peucker-line-simplification
@@ -0,0 +1 @@
+../../Task/Ramer-Douglas-Peucker-line-simplification/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Random-sentence-from-book b/Lang/Jq/Random-sentence-from-book
new file mode 120000
index 0000000000..677f7ffdcc
--- /dev/null
+++ b/Lang/Jq/Random-sentence-from-book
@@ -0,0 +1 @@
+../../Task/Random-sentence-from-book/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Rosetta-Code-Rank-languages-by-number-of-users b/Lang/Jq/Rosetta-Code-Rank-languages-by-number-of-users
new file mode 120000
index 0000000000..41c301e751
--- /dev/null
+++ b/Lang/Jq/Rosetta-Code-Rank-languages-by-number-of-users
@@ -0,0 +1 @@
+../../Task/Rosetta-Code-Rank-languages-by-number-of-users/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Set-puzzle b/Lang/Jq/Set-puzzle
new file mode 120000
index 0000000000..4d4860ff33
--- /dev/null
+++ b/Lang/Jq/Set-puzzle
@@ -0,0 +1 @@
+../../Task/Set-puzzle/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Set-right-adjacent-bits b/Lang/Jq/Set-right-adjacent-bits
new file mode 120000
index 0000000000..74d85af7c9
--- /dev/null
+++ b/Lang/Jq/Set-right-adjacent-bits
@@ -0,0 +1 @@
+../../Task/Set-right-adjacent-bits/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Sierpinski-pentagon b/Lang/Jq/Sierpinski-pentagon
new file mode 120000
index 0000000000..25b52521df
--- /dev/null
+++ b/Lang/Jq/Sierpinski-pentagon
@@ -0,0 +1 @@
+../../Task/Sierpinski-pentagon/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Sleeping-Beauty-problem b/Lang/Jq/Sleeping-Beauty-problem
new file mode 120000
index 0000000000..56204d6c76
--- /dev/null
+++ b/Lang/Jq/Sleeping-Beauty-problem
@@ -0,0 +1 @@
+../../Task/Sleeping-Beauty-problem/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Solve-a-Hidato-puzzle b/Lang/Jq/Solve-a-Hidato-puzzle
new file mode 120000
index 0000000000..e3f6b38721
--- /dev/null
+++ b/Lang/Jq/Solve-a-Hidato-puzzle
@@ -0,0 +1 @@
+../../Task/Solve-a-Hidato-puzzle/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Solve-a-Holy-Knights-tour b/Lang/Jq/Solve-a-Holy-Knights-tour
new file mode 120000
index 0000000000..d69331eff1
--- /dev/null
+++ b/Lang/Jq/Solve-a-Holy-Knights-tour
@@ -0,0 +1 @@
+../../Task/Solve-a-Holy-Knights-tour/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Solve-a-Numbrix-puzzle b/Lang/Jq/Solve-a-Numbrix-puzzle
new file mode 120000
index 0000000000..29721632e1
--- /dev/null
+++ b/Lang/Jq/Solve-a-Numbrix-puzzle
@@ -0,0 +1 @@
+../../Task/Solve-a-Numbrix-puzzle/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Sort-an-outline-at-every-level b/Lang/Jq/Sort-an-outline-at-every-level
new file mode 120000
index 0000000000..bce371340d
--- /dev/null
+++ b/Lang/Jq/Sort-an-outline-at-every-level
@@ -0,0 +1 @@
+../../Task/Sort-an-outline-at-every-level/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Thieles-interpolation-formula b/Lang/Jq/Thieles-interpolation-formula
new file mode 120000
index 0000000000..25d4327e8c
--- /dev/null
+++ b/Lang/Jq/Thieles-interpolation-formula
@@ -0,0 +1 @@
+../../Task/Thieles-interpolation-formula/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Tic-tac-toe b/Lang/Jq/Tic-tac-toe
new file mode 120000
index 0000000000..29e18a13ef
--- /dev/null
+++ b/Lang/Jq/Tic-tac-toe
@@ -0,0 +1 @@
+../../Task/Tic-tac-toe/Jq
\ No newline at end of file
diff --git a/Lang/Jq/War-card-game b/Lang/Jq/War-card-game
new file mode 120000
index 0000000000..428c4a1307
--- /dev/null
+++ b/Lang/Jq/War-card-game
@@ -0,0 +1 @@
+../../Task/War-card-game/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Wordiff b/Lang/Jq/Wordiff
new file mode 120000
index 0000000000..61aa15852c
--- /dev/null
+++ b/Lang/Jq/Wordiff
@@ -0,0 +1 @@
+../../Task/Wordiff/Jq
\ No newline at end of file
diff --git a/Lang/K/Find-common-directory-path b/Lang/K/Find-common-directory-path
new file mode 120000
index 0000000000..21e1ffcdd3
--- /dev/null
+++ b/Lang/K/Find-common-directory-path
@@ -0,0 +1 @@
+../../Task/Find-common-directory-path/K
\ No newline at end of file
diff --git a/Lang/K/Monty-Hall-problem b/Lang/K/Monty-Hall-problem
new file mode 120000
index 0000000000..8fb0f9e98b
--- /dev/null
+++ b/Lang/K/Monty-Hall-problem
@@ -0,0 +1 @@
+../../Task/Monty-Hall-problem/K
\ No newline at end of file
diff --git a/Lang/Kotlin/00-LANG.txt b/Lang/Kotlin/00-LANG.txt
index 5f33d4bd2a..95d9b59867 100644
--- a/Lang/Kotlin/00-LANG.txt
+++ b/Lang/Kotlin/00-LANG.txt
@@ -4,7 +4,7 @@
|site=http://kotlinlang.org
|hopl=no
}}
-Kotlin is a statically-typed programming language that runs on the [[JVM]] and can also be compiled to JavaScript. It is being developed by JetBrains with assistance from open source contributors and is intended for industrial use.
+Kotlin is a statically-typed programming language that runs on the [[runs on vm::Java Virtual Machine]] (JVM) and can also be compiled to JavaScript. It is being developed by JetBrains with assistance from open source contributors and is intended for industrial use.
In addition, a separate team at JetBrains is developing a version of Kotlin which compiles (via LLVM) directly to machine code for various platforms. The first Technology Preview for this version was rolled out in April 2017.
diff --git a/Lang/Kotlin/Compare-length-of-two-strings b/Lang/Kotlin/Compare-length-of-two-strings
new file mode 120000
index 0000000000..a8c0b8d6cf
--- /dev/null
+++ b/Lang/Kotlin/Compare-length-of-two-strings
@@ -0,0 +1 @@
+../../Task/Compare-length-of-two-strings/Kotlin
\ No newline at end of file
diff --git a/Lang/Kotlin/Factorial-primes b/Lang/Kotlin/Factorial-primes
new file mode 120000
index 0000000000..36b19250f9
--- /dev/null
+++ b/Lang/Kotlin/Factorial-primes
@@ -0,0 +1 @@
+../../Task/Factorial-primes/Kotlin
\ No newline at end of file
diff --git a/Lang/Langur/00-LANG.txt b/Lang/Langur/00-LANG.txt
index c2da20439a..0c64770672 100644
--- a/Lang/Langur/00-LANG.txt
+++ b/Lang/Langur/00-LANG.txt
@@ -3,9 +3,9 @@
|hopl=no
}}
-Langur is an open-source imperative/functional programming language. The name langur begins with a lowercase letter when it does not start a sentence.
+Langur is an open-source programming language that natively uses decimal floating point, and deals with extremely large and small numbers. Its principles of design are accuracy in calculation and a concise, expressive syntax. The name langur begins with a lowercase letter when it does not start a sentence.
-Langur code can be run with script files or with its REPL. The recommended file name extension is .langur.
+Langur code can be run from executable files, or you can use the REPL. The recommended file name extension is .langur.
Langur uses a hash mark for single line comments. Therefore, script files may begin with a shebang to tell a Linux shell where to find the interpreter.
diff --git a/Lang/Langur/Babbage-problem b/Lang/Langur/Babbage-problem
new file mode 120000
index 0000000000..662297217a
--- /dev/null
+++ b/Lang/Langur/Babbage-problem
@@ -0,0 +1 @@
+../../Task/Babbage-problem/Langur
\ No newline at end of file
diff --git a/Lang/Langur/I-before-E-except-after-C b/Lang/Langur/I-before-E-except-after-C
new file mode 120000
index 0000000000..a4c67c55c7
--- /dev/null
+++ b/Lang/Langur/I-before-E-except-after-C
@@ -0,0 +1 @@
+../../Task/I-before-E-except-after-C/Langur
\ No newline at end of file
diff --git a/Lang/Langur/Safe-addition b/Lang/Langur/Safe-addition
new file mode 120000
index 0000000000..9cd478ca7f
--- /dev/null
+++ b/Lang/Langur/Safe-addition
@@ -0,0 +1 @@
+../../Task/Safe-addition/Langur
\ No newline at end of file
diff --git a/Lang/Langur/String-interpolation-included- b/Lang/Langur/String-interpolation-included-
new file mode 120000
index 0000000000..e0b5bfaf9c
--- /dev/null
+++ b/Lang/Langur/String-interpolation-included-
@@ -0,0 +1 @@
+../../Task/String-interpolation-included-/Langur
\ No newline at end of file
diff --git a/Lang/Liberty-BASIC/Poker-hand-analyser b/Lang/Liberty-BASIC/Poker-hand-analyser
new file mode 120000
index 0000000000..3ed8c3b507
--- /dev/null
+++ b/Lang/Liberty-BASIC/Poker-hand-analyser
@@ -0,0 +1 @@
+../../Task/Poker-hand-analyser/Liberty-BASIC
\ No newline at end of file
diff --git a/Lang/Lilypond/00-LANG.txt b/Lang/Lilypond/00-LANG.txt
index 5c24c70c93..9afe2b1bd9 100644
--- a/Lang/Lilypond/00-LANG.txt
+++ b/Lang/Lilypond/00-LANG.txt
@@ -1,9 +1 @@
-{{stub}}
-{{language|lilypond
-|site=http://www.lilypond.org/
-|hopl=no
-}}
-
-The lilypond language is used by the lilypond score production software for describing the layout of musical score sheets.
-
-[[Category:Musical Notation]]
\ No newline at end of file
+#REDIRECT [[:Category:LilyPond]]
\ No newline at end of file
diff --git a/Lang/Locomotive-Basic/00-LANG.txt b/Lang/Locomotive-Basic/00-LANG.txt
index 04db5b5ea8..5045a1b047 100644
--- a/Lang/Locomotive-Basic/00-LANG.txt
+++ b/Lang/Locomotive-Basic/00-LANG.txt
@@ -7,9 +7,9 @@
'''Locomotive BASIC''' is a variant of BASIC that is built into the ROM of the [[wp:Amstrad CPC|Amstrad CPC]] series of home computers introduced in 1984. In the 1980s, the CPC was a popular, slightly more expensive alternative to the Commodore C64/C128. It was not just suited for games but also office work because of its high resolution display and [[wp:CP/M|CP/M]] support.
-The easiest way to use Locomotive BASIC today is [https://benchmarko.github.io/CPCBasic/cpcbasic.html CPCBasic], a very fast implementation in JavaScript which also allows easy pasting of code from Rosetta Code. Note that programs will run much faster in CPCBasic than on a real CPC. To slow down a program, add an extra delay loop to the main loop, e.g.:for delay=1 to 5:frame:nextwhich will pause for five frames or 0.1 seconds.
+The easiest way to use Locomotive BASIC today is [https://benchmarko.github.io/CPCBasic/cpcbasic.html CPCBasic], a very fast implementation in JavaScript which also allows easy pasting of code from Rosetta Code. Note that programs will run much faster in CPCBasic than on a real CPC. To slow down a program, add an extra delay loop to the main loop, e.g. for delay=1 to 5:frame:nextwhich will pause for five frames or 0.1 seconds.
-[https://www.retrovm.com/ CPCBox] is another option for the web browser, a whole-machine JavaScript CPC emulator mainly for games which has good compatibility but which lacks copy and paste support.
+[https://retroshowcase.gr/cpcbox-master/ CPCBox] is another option for the web browser, a whole-machine JavaScript CPC emulator mainly for games which has good compatibility but which lacks copy and paste support.
Locomotive BASIC can also be used via native CPC emulators such as [http://www.winape.net/ WinAPE] (Windows) or [http://sourceforge.net/projects/javacpc/ JavaCPC] (Windows/macOS/Linux). All these CPC emulators are also perfectly legal because Amstrad has given their permission for distributing CPC ROM images with emulators.
@@ -19,14 +19,14 @@ Either use the CPCBasic browser-based Locomotive Basic emulator (https://benchma
In CPCBasic, enter your program, e.g.
-10 print "Hello World!"
+10 print "Hello World!"
into the "CPC Basic" text box at the top and then press the Run button below it. Output goes to the blue CPC screen below. You can also interact with the CPC screen directly if you first click on it with the mouse. The Reset button stops a running program and returns you to the Ready prompt.
In a native emulator, just type
-10 print "Hello World!"
-run
+10 print "Hello World!"
+run
to run your first Locomotive BASIC program.
@@ -56,7 +56,7 @@ As on many other 8-bit machines of the era, BASIC programs are often extended wi
Memory on the CPC 464 and 664 is subdivided into four 16 kB blocks (0 to 3), with block 3 at &c000 normally reserved for the screen. The CPC 6128 features a second 64 kB bank (blocks 4 to 7) which can be accessed from BASIC with [[wp:Bank switching|bank switching]] in block 1 (&4000 and &7fff), e.g.
-out &7fff,&x11000100
+out &7fff,&x11000100
would make block 4 accessible in the address space of block 1.http://k1.dyndns.org/Vintage/Schneider%20CPC/Das%20Schneider%20CPC%20Systembuch/z87.htm This way, the entire 128 kB of memory can be used by BASIC. Alternatively, RSX commands for bank switching and copying between banks are included on the system discs and discussed in chapter 8 of the CPC user manual.http://www.cpcwiki.eu/index.php/User_Manual Even on the 64 kB models, it is possible to do [[wp:Multiple buffering|double buffering]] in BASIC by reserving another RAM block for the screen, drawing into the hidden screen, and then setting the CRTC screen address to the currently hidden screen with the BASIC [[wp:I/o port|port I/O]] command OUT.
diff --git a/Lang/Locomotive-Basic/Abelian-sandpile-model b/Lang/Locomotive-Basic/Abelian-sandpile-model
new file mode 120000
index 0000000000..e00a530896
--- /dev/null
+++ b/Lang/Locomotive-Basic/Abelian-sandpile-model
@@ -0,0 +1 @@
+../../Task/Abelian-sandpile-model/Locomotive-Basic
\ No newline at end of file
diff --git a/Lang/Locomotive-Basic/Draw-a-cuboid b/Lang/Locomotive-Basic/Draw-a-cuboid
new file mode 120000
index 0000000000..cbfb396b7f
--- /dev/null
+++ b/Lang/Locomotive-Basic/Draw-a-cuboid
@@ -0,0 +1 @@
+../../Task/Draw-a-cuboid/Locomotive-Basic
\ No newline at end of file
diff --git a/Lang/MACRO-11/Square-but-not-cube b/Lang/MACRO-11/Square-but-not-cube
new file mode 120000
index 0000000000..7130b2c620
--- /dev/null
+++ b/Lang/MACRO-11/Square-but-not-cube
@@ -0,0 +1 @@
+../../Task/Square-but-not-cube/MACRO-11
\ No newline at end of file
diff --git a/Lang/Mia/Loops-While b/Lang/Mia/Loops-While
new file mode 120000
index 0000000000..acad4e8591
--- /dev/null
+++ b/Lang/Mia/Loops-While
@@ -0,0 +1 @@
+../../Task/Loops-While/Mia
\ No newline at end of file
diff --git a/Lang/Minimal-BASIC/Jensens-Device b/Lang/Minimal-BASIC/Jensens-Device
new file mode 120000
index 0000000000..f729ff931e
--- /dev/null
+++ b/Lang/Minimal-BASIC/Jensens-Device
@@ -0,0 +1 @@
+../../Task/Jensens-Device/Minimal-BASIC
\ No newline at end of file
diff --git a/Lang/Minimal-BASIC/Monty-Hall-problem b/Lang/Minimal-BASIC/Monty-Hall-problem
new file mode 120000
index 0000000000..e997b4d558
--- /dev/null
+++ b/Lang/Minimal-BASIC/Monty-Hall-problem
@@ -0,0 +1 @@
+../../Task/Monty-Hall-problem/Minimal-BASIC
\ No newline at end of file
diff --git a/Lang/Modula-2/Gray-code b/Lang/Modula-2/Gray-code
new file mode 120000
index 0000000000..8cb45ff695
--- /dev/null
+++ b/Lang/Modula-2/Gray-code
@@ -0,0 +1 @@
+../../Task/Gray-code/Modula-2
\ No newline at end of file
diff --git a/Lang/Modula-2/Monty-Hall-problem b/Lang/Modula-2/Monty-Hall-problem
new file mode 120000
index 0000000000..9ad6c8767a
--- /dev/null
+++ b/Lang/Modula-2/Monty-Hall-problem
@@ -0,0 +1 @@
+../../Task/Monty-Hall-problem/Modula-2
\ No newline at end of file
diff --git a/Lang/Modula-3/Additive-primes b/Lang/Modula-3/Additive-primes
new file mode 120000
index 0000000000..b81b571c35
--- /dev/null
+++ b/Lang/Modula-3/Additive-primes
@@ -0,0 +1 @@
+../../Task/Additive-primes/Modula-3
\ No newline at end of file
diff --git a/Lang/Nascom-BASIC/Damm-algorithm b/Lang/Nascom-BASIC/Damm-algorithm
new file mode 120000
index 0000000000..5a6439a18c
--- /dev/null
+++ b/Lang/Nascom-BASIC/Damm-algorithm
@@ -0,0 +1 @@
+../../Task/Damm-algorithm/Nascom-BASIC
\ No newline at end of file
diff --git a/Lang/Oberon/100-doors b/Lang/Oberon/100-doors
deleted file mode 120000
index 9d190b3c16..0000000000
--- a/Lang/Oberon/100-doors
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/100-doors/Oberon
\ No newline at end of file
diff --git a/Lang/Odin/Quine b/Lang/Odin/Quine
new file mode 120000
index 0000000000..53e4cf3687
--- /dev/null
+++ b/Lang/Odin/Quine
@@ -0,0 +1 @@
+../../Task/Quine/Odin
\ No newline at end of file
diff --git a/Lang/PHP/Water-collected-between-towers b/Lang/PHP/Water-collected-between-towers
new file mode 120000
index 0000000000..524c5ae99b
--- /dev/null
+++ b/Lang/PHP/Water-collected-between-towers
@@ -0,0 +1 @@
+../../Task/Water-collected-between-towers/PHP
\ No newline at end of file
diff --git a/Lang/PL-M/Draw-a-cuboid b/Lang/PL-M/Draw-a-cuboid
new file mode 120000
index 0000000000..c6084a0c66
--- /dev/null
+++ b/Lang/PL-M/Draw-a-cuboid
@@ -0,0 +1 @@
+../../Task/Draw-a-cuboid/PL-M
\ No newline at end of file
diff --git a/Lang/PL-M/Nested-function b/Lang/PL-M/Nested-function
new file mode 120000
index 0000000000..2fbc4399dd
--- /dev/null
+++ b/Lang/PL-M/Nested-function
@@ -0,0 +1 @@
+../../Task/Nested-function/PL-M
\ No newline at end of file
diff --git a/Lang/POV-Ray/Bitmap b/Lang/POV-Ray/Bitmap
new file mode 120000
index 0000000000..90fece7e75
--- /dev/null
+++ b/Lang/POV-Ray/Bitmap
@@ -0,0 +1 @@
+../../Task/Bitmap/POV-Ray
\ No newline at end of file
diff --git a/Lang/POV-Ray/Maze-generation b/Lang/POV-Ray/Maze-generation
new file mode 120000
index 0000000000..724f710098
--- /dev/null
+++ b/Lang/POV-Ray/Maze-generation
@@ -0,0 +1 @@
+../../Task/Maze-generation/POV-Ray
\ No newline at end of file
diff --git a/Lang/Pascal/Count-the-coins b/Lang/Pascal/Count-the-coins
new file mode 120000
index 0000000000..8d7999b667
--- /dev/null
+++ b/Lang/Pascal/Count-the-coins
@@ -0,0 +1 @@
+../../Task/Count-the-coins/Pascal
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/00-LANG.txt b/Lang/PascalABC.NET/00-LANG.txt
index d9efe4d43e..48e9f6ce41 100644
--- a/Lang/PascalABC.NET/00-LANG.txt
+++ b/Lang/PascalABC.NET/00-LANG.txt
@@ -16,4 +16,4 @@ begin
end.
-{{unimpl_Page|PacalABC.NET}}
\ No newline at end of file
+{{unimpl_Page|PascalABC.NET}}
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/15-puzzle-game b/Lang/PascalABC.NET/15-puzzle-game
new file mode 120000
index 0000000000..caf890e56b
--- /dev/null
+++ b/Lang/PascalABC.NET/15-puzzle-game
@@ -0,0 +1 @@
+../../Task/15-puzzle-game/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/99-bottles-of-beer b/Lang/PascalABC.NET/99-bottles-of-beer
new file mode 120000
index 0000000000..bc29442ab5
--- /dev/null
+++ b/Lang/PascalABC.NET/99-bottles-of-beer
@@ -0,0 +1 @@
+../../Task/99-bottles-of-beer/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/A+B b/Lang/PascalABC.NET/A+B
new file mode 120000
index 0000000000..7a5a9db498
--- /dev/null
+++ b/Lang/PascalABC.NET/A+B
@@ -0,0 +1 @@
+../../Task/A+B/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Abstract-type b/Lang/PascalABC.NET/Abstract-type
new file mode 120000
index 0000000000..305270825e
--- /dev/null
+++ b/Lang/PascalABC.NET/Abstract-type
@@ -0,0 +1 @@
+../../Task/Abstract-type/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Accumulator-factory b/Lang/PascalABC.NET/Accumulator-factory
new file mode 120000
index 0000000000..dd94a031d6
--- /dev/null
+++ b/Lang/PascalABC.NET/Accumulator-factory
@@ -0,0 +1 @@
+../../Task/Accumulator-factory/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Ackermann-function b/Lang/PascalABC.NET/Ackermann-function
new file mode 120000
index 0000000000..c2fa2dd278
--- /dev/null
+++ b/Lang/PascalABC.NET/Ackermann-function
@@ -0,0 +1 @@
+../../Task/Ackermann-function/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Add-a-variable-to-a-class-instance-at-runtime b/Lang/PascalABC.NET/Add-a-variable-to-a-class-instance-at-runtime
new file mode 120000
index 0000000000..ec0970f459
--- /dev/null
+++ b/Lang/PascalABC.NET/Add-a-variable-to-a-class-instance-at-runtime
@@ -0,0 +1 @@
+../../Task/Add-a-variable-to-a-class-instance-at-runtime/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Address-of-a-variable b/Lang/PascalABC.NET/Address-of-a-variable
new file mode 120000
index 0000000000..8477592c7b
--- /dev/null
+++ b/Lang/PascalABC.NET/Address-of-a-variable
@@ -0,0 +1 @@
+../../Task/Address-of-a-variable/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Anagrams b/Lang/PascalABC.NET/Anagrams
new file mode 120000
index 0000000000..2bec53abb4
--- /dev/null
+++ b/Lang/PascalABC.NET/Anagrams
@@ -0,0 +1 @@
+../../Task/Anagrams/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Anonymous-recursion b/Lang/PascalABC.NET/Anonymous-recursion
new file mode 120000
index 0000000000..7a2a34d4d5
--- /dev/null
+++ b/Lang/PascalABC.NET/Anonymous-recursion
@@ -0,0 +1 @@
+../../Task/Anonymous-recursion/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Apply-a-callback-to-an-array b/Lang/PascalABC.NET/Apply-a-callback-to-an-array
new file mode 120000
index 0000000000..88f34b5a9e
--- /dev/null
+++ b/Lang/PascalABC.NET/Apply-a-callback-to-an-array
@@ -0,0 +1 @@
+../../Task/Apply-a-callback-to-an-array/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Arithmetic-Complex b/Lang/PascalABC.NET/Arithmetic-Complex
new file mode 120000
index 0000000000..bccd03a873
--- /dev/null
+++ b/Lang/PascalABC.NET/Arithmetic-Complex
@@ -0,0 +1 @@
+../../Task/Arithmetic-Complex/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Arithmetic-Integer b/Lang/PascalABC.NET/Arithmetic-Integer
new file mode 120000
index 0000000000..30d5138cbd
--- /dev/null
+++ b/Lang/PascalABC.NET/Arithmetic-Integer
@@ -0,0 +1 @@
+../../Task/Arithmetic-Integer/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Array-concatenation b/Lang/PascalABC.NET/Array-concatenation
new file mode 120000
index 0000000000..bfe26798bc
--- /dev/null
+++ b/Lang/PascalABC.NET/Array-concatenation
@@ -0,0 +1 @@
+../../Task/Array-concatenation/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Arrays b/Lang/PascalABC.NET/Arrays
new file mode 120000
index 0000000000..62dfb07030
--- /dev/null
+++ b/Lang/PascalABC.NET/Arrays
@@ -0,0 +1 @@
+../../Task/Arrays/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Assertions b/Lang/PascalABC.NET/Assertions
new file mode 120000
index 0000000000..bdc3ed57c2
--- /dev/null
+++ b/Lang/PascalABC.NET/Assertions
@@ -0,0 +1 @@
+../../Task/Assertions/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Associative-array-Creation b/Lang/PascalABC.NET/Associative-array-Creation
new file mode 120000
index 0000000000..fc1bef5cdb
--- /dev/null
+++ b/Lang/PascalABC.NET/Associative-array-Creation
@@ -0,0 +1 @@
+../../Task/Associative-array-Creation/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Associative-array-Iteration b/Lang/PascalABC.NET/Associative-array-Iteration
new file mode 120000
index 0000000000..2f1ab21d84
--- /dev/null
+++ b/Lang/PascalABC.NET/Associative-array-Iteration
@@ -0,0 +1 @@
+../../Task/Associative-array-Iteration/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Balanced-brackets b/Lang/PascalABC.NET/Balanced-brackets
new file mode 120000
index 0000000000..4b5678c4d8
--- /dev/null
+++ b/Lang/PascalABC.NET/Balanced-brackets
@@ -0,0 +1 @@
+../../Task/Balanced-brackets/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Binary-digits b/Lang/PascalABC.NET/Binary-digits
new file mode 120000
index 0000000000..e0597a5dc1
--- /dev/null
+++ b/Lang/PascalABC.NET/Binary-digits
@@ -0,0 +1 @@
+../../Task/Binary-digits/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Binary-search b/Lang/PascalABC.NET/Binary-search
new file mode 120000
index 0000000000..aa5ba91c87
--- /dev/null
+++ b/Lang/PascalABC.NET/Binary-search
@@ -0,0 +1 @@
+../../Task/Binary-search/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Bitwise-operations b/Lang/PascalABC.NET/Bitwise-operations
new file mode 120000
index 0000000000..acc6123f1c
--- /dev/null
+++ b/Lang/PascalABC.NET/Bitwise-operations
@@ -0,0 +1 @@
+../../Task/Bitwise-operations/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Break-OO-privacy b/Lang/PascalABC.NET/Break-OO-privacy
new file mode 120000
index 0000000000..29ee336925
--- /dev/null
+++ b/Lang/PascalABC.NET/Break-OO-privacy
@@ -0,0 +1 @@
+../../Task/Break-OO-privacy/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/CSV-data-manipulation b/Lang/PascalABC.NET/CSV-data-manipulation
new file mode 120000
index 0000000000..ab9f191d41
--- /dev/null
+++ b/Lang/PascalABC.NET/CSV-data-manipulation
@@ -0,0 +1 @@
+../../Task/CSV-data-manipulation/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Calculating-the-value-of-e b/Lang/PascalABC.NET/Calculating-the-value-of-e
new file mode 120000
index 0000000000..c544f3c00f
--- /dev/null
+++ b/Lang/PascalABC.NET/Calculating-the-value-of-e
@@ -0,0 +1 @@
+../../Task/Calculating-the-value-of-e/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Call-an-object-method b/Lang/PascalABC.NET/Call-an-object-method
new file mode 120000
index 0000000000..0c1cf230d7
--- /dev/null
+++ b/Lang/PascalABC.NET/Call-an-object-method
@@ -0,0 +1 @@
+../../Task/Call-an-object-method/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Character-codes b/Lang/PascalABC.NET/Character-codes
new file mode 120000
index 0000000000..1888f78c06
--- /dev/null
+++ b/Lang/PascalABC.NET/Character-codes
@@ -0,0 +1 @@
+../../Task/Character-codes/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Classes b/Lang/PascalABC.NET/Classes
new file mode 120000
index 0000000000..08756ef03a
--- /dev/null
+++ b/Lang/PascalABC.NET/Classes
@@ -0,0 +1 @@
+../../Task/Classes/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Closest-pair-problem b/Lang/PascalABC.NET/Closest-pair-problem
new file mode 120000
index 0000000000..4b7bc32806
--- /dev/null
+++ b/Lang/PascalABC.NET/Closest-pair-problem
@@ -0,0 +1 @@
+../../Task/Closest-pair-problem/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Collections b/Lang/PascalABC.NET/Collections
new file mode 120000
index 0000000000..c3fa3dc417
--- /dev/null
+++ b/Lang/PascalABC.NET/Collections
@@ -0,0 +1 @@
+../../Task/Collections/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Command-line-arguments b/Lang/PascalABC.NET/Command-line-arguments
new file mode 120000
index 0000000000..f229191025
--- /dev/null
+++ b/Lang/PascalABC.NET/Command-line-arguments
@@ -0,0 +1 @@
+../../Task/Command-line-arguments/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Comments b/Lang/PascalABC.NET/Comments
new file mode 120000
index 0000000000..5e528e6991
--- /dev/null
+++ b/Lang/PascalABC.NET/Comments
@@ -0,0 +1 @@
+../../Task/Comments/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Compare-a-list-of-strings b/Lang/PascalABC.NET/Compare-a-list-of-strings
new file mode 120000
index 0000000000..b8b040023f
--- /dev/null
+++ b/Lang/PascalABC.NET/Compare-a-list-of-strings
@@ -0,0 +1 @@
+../../Task/Compare-a-list-of-strings/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Compare-length-of-two-strings b/Lang/PascalABC.NET/Compare-length-of-two-strings
new file mode 120000
index 0000000000..92be62a3df
--- /dev/null
+++ b/Lang/PascalABC.NET/Compare-length-of-two-strings
@@ -0,0 +1 @@
+../../Task/Compare-length-of-two-strings/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Compound-data-type b/Lang/PascalABC.NET/Compound-data-type
new file mode 120000
index 0000000000..89ad664595
--- /dev/null
+++ b/Lang/PascalABC.NET/Compound-data-type
@@ -0,0 +1 @@
+../../Task/Compound-data-type/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Concurrent-computing b/Lang/PascalABC.NET/Concurrent-computing
new file mode 120000
index 0000000000..ced9fcccc5
--- /dev/null
+++ b/Lang/PascalABC.NET/Concurrent-computing
@@ -0,0 +1 @@
+../../Task/Concurrent-computing/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Conditional-structures b/Lang/PascalABC.NET/Conditional-structures
new file mode 120000
index 0000000000..6186fdd1f8
--- /dev/null
+++ b/Lang/PascalABC.NET/Conditional-structures
@@ -0,0 +1 @@
+../../Task/Conditional-structures/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Constrained-genericity b/Lang/PascalABC.NET/Constrained-genericity
new file mode 120000
index 0000000000..4d89cf348d
--- /dev/null
+++ b/Lang/PascalABC.NET/Constrained-genericity
@@ -0,0 +1 @@
+../../Task/Constrained-genericity/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Copy-a-string b/Lang/PascalABC.NET/Copy-a-string
new file mode 120000
index 0000000000..d102da9b43
--- /dev/null
+++ b/Lang/PascalABC.NET/Copy-a-string
@@ -0,0 +1 @@
+../../Task/Copy-a-string/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Copy-stdin-to-stdout b/Lang/PascalABC.NET/Copy-stdin-to-stdout
new file mode 120000
index 0000000000..08f7b00296
--- /dev/null
+++ b/Lang/PascalABC.NET/Copy-stdin-to-stdout
@@ -0,0 +1 @@
+../../Task/Copy-stdin-to-stdout/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Count-in-factors b/Lang/PascalABC.NET/Count-in-factors
new file mode 120000
index 0000000000..42811aa9aa
--- /dev/null
+++ b/Lang/PascalABC.NET/Count-in-factors
@@ -0,0 +1 @@
+../../Task/Count-in-factors/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Count-in-octal b/Lang/PascalABC.NET/Count-in-octal
new file mode 120000
index 0000000000..8965e8c25f
--- /dev/null
+++ b/Lang/PascalABC.NET/Count-in-octal
@@ -0,0 +1 @@
+../../Task/Count-in-octal/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Count-occurrences-of-a-substring b/Lang/PascalABC.NET/Count-occurrences-of-a-substring
new file mode 120000
index 0000000000..d67adab506
--- /dev/null
+++ b/Lang/PascalABC.NET/Count-occurrences-of-a-substring
@@ -0,0 +1 @@
+../../Task/Count-occurrences-of-a-substring/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Create-a-two-dimensional-array-at-runtime b/Lang/PascalABC.NET/Create-a-two-dimensional-array-at-runtime
new file mode 120000
index 0000000000..2c7befc65f
--- /dev/null
+++ b/Lang/PascalABC.NET/Create-a-two-dimensional-array-at-runtime
@@ -0,0 +1 @@
+../../Task/Create-a-two-dimensional-array-at-runtime/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Create-an-object-at-a-given-address b/Lang/PascalABC.NET/Create-an-object-at-a-given-address
new file mode 120000
index 0000000000..aa2e5f2ab2
--- /dev/null
+++ b/Lang/PascalABC.NET/Create-an-object-at-a-given-address
@@ -0,0 +1 @@
+../../Task/Create-an-object-at-a-given-address/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Date-format b/Lang/PascalABC.NET/Date-format
new file mode 120000
index 0000000000..176b256586
--- /dev/null
+++ b/Lang/PascalABC.NET/Date-format
@@ -0,0 +1 @@
+../../Task/Date-format/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Day-of-the-week b/Lang/PascalABC.NET/Day-of-the-week
new file mode 120000
index 0000000000..3300b037b4
--- /dev/null
+++ b/Lang/PascalABC.NET/Day-of-the-week
@@ -0,0 +1 @@
+../../Task/Day-of-the-week/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Define-a-primitive-data-type b/Lang/PascalABC.NET/Define-a-primitive-data-type
new file mode 120000
index 0000000000..684571f697
--- /dev/null
+++ b/Lang/PascalABC.NET/Define-a-primitive-data-type
@@ -0,0 +1 @@
+../../Task/Define-a-primitive-data-type/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Determine-if-a-string-is-numeric b/Lang/PascalABC.NET/Determine-if-a-string-is-numeric
new file mode 120000
index 0000000000..3ddeb93c61
--- /dev/null
+++ b/Lang/PascalABC.NET/Determine-if-a-string-is-numeric
@@ -0,0 +1 @@
+../../Task/Determine-if-a-string-is-numeric/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Determine-sentence-type b/Lang/PascalABC.NET/Determine-sentence-type
new file mode 120000
index 0000000000..dc0284a0e0
--- /dev/null
+++ b/Lang/PascalABC.NET/Determine-sentence-type
@@ -0,0 +1 @@
+../../Task/Determine-sentence-type/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Doubly-linked-list-Definition b/Lang/PascalABC.NET/Doubly-linked-list-Definition
new file mode 120000
index 0000000000..f2561705cf
--- /dev/null
+++ b/Lang/PascalABC.NET/Doubly-linked-list-Definition
@@ -0,0 +1 @@
+../../Task/Doubly-linked-list-Definition/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Doubly-linked-list-Element-definition b/Lang/PascalABC.NET/Doubly-linked-list-Element-definition
new file mode 120000
index 0000000000..50c9d03e8c
--- /dev/null
+++ b/Lang/PascalABC.NET/Doubly-linked-list-Element-definition
@@ -0,0 +1 @@
+../../Task/Doubly-linked-list-Element-definition/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Doubly-linked-list-Element-insertion b/Lang/PascalABC.NET/Doubly-linked-list-Element-insertion
new file mode 120000
index 0000000000..28af162224
--- /dev/null
+++ b/Lang/PascalABC.NET/Doubly-linked-list-Element-insertion
@@ -0,0 +1 @@
+../../Task/Doubly-linked-list-Element-insertion/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Doubly-linked-list-Traversal b/Lang/PascalABC.NET/Doubly-linked-list-Traversal
new file mode 120000
index 0000000000..9cc3d51b16
--- /dev/null
+++ b/Lang/PascalABC.NET/Doubly-linked-list-Traversal
@@ -0,0 +1 @@
+../../Task/Doubly-linked-list-Traversal/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Dragon-curve b/Lang/PascalABC.NET/Dragon-curve
new file mode 120000
index 0000000000..1a8a6239bd
--- /dev/null
+++ b/Lang/PascalABC.NET/Dragon-curve
@@ -0,0 +1 @@
+../../Task/Dragon-curve/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Draw-a-pixel b/Lang/PascalABC.NET/Draw-a-pixel
new file mode 120000
index 0000000000..cdcb7e2918
--- /dev/null
+++ b/Lang/PascalABC.NET/Draw-a-pixel
@@ -0,0 +1 @@
+../../Task/Draw-a-pixel/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Draw-a-rotating-cube b/Lang/PascalABC.NET/Draw-a-rotating-cube
new file mode 120000
index 0000000000..9092790488
--- /dev/null
+++ b/Lang/PascalABC.NET/Draw-a-rotating-cube
@@ -0,0 +1 @@
+../../Task/Draw-a-rotating-cube/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Empty-program b/Lang/PascalABC.NET/Empty-program
new file mode 120000
index 0000000000..9a2aa557cd
--- /dev/null
+++ b/Lang/PascalABC.NET/Empty-program
@@ -0,0 +1 @@
+../../Task/Empty-program/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Enumerations b/Lang/PascalABC.NET/Enumerations
new file mode 120000
index 0000000000..3fbeab7aac
--- /dev/null
+++ b/Lang/PascalABC.NET/Enumerations
@@ -0,0 +1 @@
+../../Task/Enumerations/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Even-or-odd b/Lang/PascalABC.NET/Even-or-odd
new file mode 120000
index 0000000000..4191597943
--- /dev/null
+++ b/Lang/PascalABC.NET/Even-or-odd
@@ -0,0 +1 @@
+../../Task/Even-or-odd/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Exceptions b/Lang/PascalABC.NET/Exceptions
new file mode 120000
index 0000000000..b4b7999bea
--- /dev/null
+++ b/Lang/PascalABC.NET/Exceptions
@@ -0,0 +1 @@
+../../Task/Exceptions/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Extreme-floating-point-values b/Lang/PascalABC.NET/Extreme-floating-point-values
new file mode 120000
index 0000000000..438be3c964
--- /dev/null
+++ b/Lang/PascalABC.NET/Extreme-floating-point-values
@@ -0,0 +1 @@
+../../Task/Extreme-floating-point-values/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Factorial b/Lang/PascalABC.NET/Factorial
new file mode 120000
index 0000000000..64716300fa
--- /dev/null
+++ b/Lang/PascalABC.NET/Factorial
@@ -0,0 +1 @@
+../../Task/Factorial/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Factors-of-an-integer b/Lang/PascalABC.NET/Factors-of-an-integer
new file mode 120000
index 0000000000..b2f675ad56
--- /dev/null
+++ b/Lang/PascalABC.NET/Factors-of-an-integer
@@ -0,0 +1 @@
+../../Task/Factors-of-an-integer/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/File-input-output b/Lang/PascalABC.NET/File-input-output
new file mode 120000
index 0000000000..aa29aa165d
--- /dev/null
+++ b/Lang/PascalABC.NET/File-input-output
@@ -0,0 +1 @@
+../../Task/File-input-output/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/File-size b/Lang/PascalABC.NET/File-size
new file mode 120000
index 0000000000..cb4f56c334
--- /dev/null
+++ b/Lang/PascalABC.NET/File-size
@@ -0,0 +1 @@
+../../Task/File-size/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Filter b/Lang/PascalABC.NET/Filter
new file mode 120000
index 0000000000..b6b1f56f68
--- /dev/null
+++ b/Lang/PascalABC.NET/Filter
@@ -0,0 +1 @@
+../../Task/Filter/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Find-common-directory-path b/Lang/PascalABC.NET/Find-common-directory-path
new file mode 120000
index 0000000000..48495d80e3
--- /dev/null
+++ b/Lang/PascalABC.NET/Find-common-directory-path
@@ -0,0 +1 @@
+../../Task/Find-common-directory-path/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Find-limit-of-recursion b/Lang/PascalABC.NET/Find-limit-of-recursion
new file mode 120000
index 0000000000..8e738ede74
--- /dev/null
+++ b/Lang/PascalABC.NET/Find-limit-of-recursion
@@ -0,0 +1 @@
+../../Task/Find-limit-of-recursion/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/First-class-functions b/Lang/PascalABC.NET/First-class-functions
new file mode 120000
index 0000000000..d4c191f6d3
--- /dev/null
+++ b/Lang/PascalABC.NET/First-class-functions
@@ -0,0 +1 @@
+../../Task/First-class-functions/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/FizzBuzz b/Lang/PascalABC.NET/FizzBuzz
new file mode 120000
index 0000000000..9af47ffeb0
--- /dev/null
+++ b/Lang/PascalABC.NET/FizzBuzz
@@ -0,0 +1 @@
+../../Task/FizzBuzz/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Flatten-a-list b/Lang/PascalABC.NET/Flatten-a-list
new file mode 120000
index 0000000000..951e9e626d
--- /dev/null
+++ b/Lang/PascalABC.NET/Flatten-a-list
@@ -0,0 +1 @@
+../../Task/Flatten-a-list/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Floyds-triangle b/Lang/PascalABC.NET/Floyds-triangle
new file mode 120000
index 0000000000..741db9a754
--- /dev/null
+++ b/Lang/PascalABC.NET/Floyds-triangle
@@ -0,0 +1 @@
+../../Task/Floyds-triangle/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Formatted-numeric-output b/Lang/PascalABC.NET/Formatted-numeric-output
new file mode 120000
index 0000000000..d5385037bc
--- /dev/null
+++ b/Lang/PascalABC.NET/Formatted-numeric-output
@@ -0,0 +1 @@
+../../Task/Formatted-numeric-output/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Function-definition b/Lang/PascalABC.NET/Function-definition
new file mode 120000
index 0000000000..cc1ff414b4
--- /dev/null
+++ b/Lang/PascalABC.NET/Function-definition
@@ -0,0 +1 @@
+../../Task/Function-definition/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/General-FizzBuzz b/Lang/PascalABC.NET/General-FizzBuzz
new file mode 120000
index 0000000000..655ae97e52
--- /dev/null
+++ b/Lang/PascalABC.NET/General-FizzBuzz
@@ -0,0 +1 @@
+../../Task/General-FizzBuzz/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Generate-lower-case-ASCII-alphabet b/Lang/PascalABC.NET/Generate-lower-case-ASCII-alphabet
new file mode 120000
index 0000000000..8ef0c3c6f0
--- /dev/null
+++ b/Lang/PascalABC.NET/Generate-lower-case-ASCII-alphabet
@@ -0,0 +1 @@
+../../Task/Generate-lower-case-ASCII-alphabet/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Generic-swap b/Lang/PascalABC.NET/Generic-swap
new file mode 120000
index 0000000000..35fd1c3542
--- /dev/null
+++ b/Lang/PascalABC.NET/Generic-swap
@@ -0,0 +1 @@
+../../Task/Generic-swap/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Greatest-common-divisor b/Lang/PascalABC.NET/Greatest-common-divisor
new file mode 120000
index 0000000000..27dc1c21f9
--- /dev/null
+++ b/Lang/PascalABC.NET/Greatest-common-divisor
@@ -0,0 +1 @@
+../../Task/Greatest-common-divisor/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Guess-the-number b/Lang/PascalABC.NET/Guess-the-number
new file mode 120000
index 0000000000..7fff26f7e2
--- /dev/null
+++ b/Lang/PascalABC.NET/Guess-the-number
@@ -0,0 +1 @@
+../../Task/Guess-the-number/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Hash-from-two-arrays b/Lang/PascalABC.NET/Hash-from-two-arrays
new file mode 120000
index 0000000000..06b09f8bf9
--- /dev/null
+++ b/Lang/PascalABC.NET/Hash-from-two-arrays
@@ -0,0 +1 @@
+../../Task/Hash-from-two-arrays/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Hello-world-Line-printer b/Lang/PascalABC.NET/Hello-world-Line-printer
new file mode 120000
index 0000000000..87d7f6b37c
--- /dev/null
+++ b/Lang/PascalABC.NET/Hello-world-Line-printer
@@ -0,0 +1 @@
+../../Task/Hello-world-Line-printer/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Hello-world-Newline-omission b/Lang/PascalABC.NET/Hello-world-Newline-omission
new file mode 120000
index 0000000000..2c094828d8
--- /dev/null
+++ b/Lang/PascalABC.NET/Hello-world-Newline-omission
@@ -0,0 +1 @@
+../../Task/Hello-world-Newline-omission/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Hello-world-Standard-error b/Lang/PascalABC.NET/Hello-world-Standard-error
new file mode 120000
index 0000000000..4b2452f23e
--- /dev/null
+++ b/Lang/PascalABC.NET/Hello-world-Standard-error
@@ -0,0 +1 @@
+../../Task/Hello-world-Standard-error/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Identity-matrix b/Lang/PascalABC.NET/Identity-matrix
new file mode 120000
index 0000000000..e498197ea6
--- /dev/null
+++ b/Lang/PascalABC.NET/Identity-matrix
@@ -0,0 +1 @@
+../../Task/Identity-matrix/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Include-a-file b/Lang/PascalABC.NET/Include-a-file
new file mode 120000
index 0000000000..5762928418
--- /dev/null
+++ b/Lang/PascalABC.NET/Include-a-file
@@ -0,0 +1 @@
+../../Task/Include-a-file/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Infinity b/Lang/PascalABC.NET/Infinity
new file mode 120000
index 0000000000..e5b6807ad7
--- /dev/null
+++ b/Lang/PascalABC.NET/Infinity
@@ -0,0 +1 @@
+../../Task/Infinity/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Inheritance-Multiple b/Lang/PascalABC.NET/Inheritance-Multiple
new file mode 120000
index 0000000000..f3f065b097
--- /dev/null
+++ b/Lang/PascalABC.NET/Inheritance-Multiple
@@ -0,0 +1 @@
+../../Task/Inheritance-Multiple/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Inheritance-Single b/Lang/PascalABC.NET/Inheritance-Single
new file mode 120000
index 0000000000..2843b9d512
--- /dev/null
+++ b/Lang/PascalABC.NET/Inheritance-Single
@@ -0,0 +1 @@
+../../Task/Inheritance-Single/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Input-loop b/Lang/PascalABC.NET/Input-loop
new file mode 120000
index 0000000000..8086164ab5
--- /dev/null
+++ b/Lang/PascalABC.NET/Input-loop
@@ -0,0 +1 @@
+../../Task/Input-loop/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Integer-comparison b/Lang/PascalABC.NET/Integer-comparison
new file mode 120000
index 0000000000..b60ac826c4
--- /dev/null
+++ b/Lang/PascalABC.NET/Integer-comparison
@@ -0,0 +1 @@
+../../Task/Integer-comparison/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/JSON b/Lang/PascalABC.NET/JSON
new file mode 120000
index 0000000000..e24e87ebee
--- /dev/null
+++ b/Lang/PascalABC.NET/JSON
@@ -0,0 +1 @@
+../../Task/JSON/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Jump-anywhere b/Lang/PascalABC.NET/Jump-anywhere
new file mode 120000
index 0000000000..cb395144b9
--- /dev/null
+++ b/Lang/PascalABC.NET/Jump-anywhere
@@ -0,0 +1 @@
+../../Task/Jump-anywhere/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Knuth-shuffle b/Lang/PascalABC.NET/Knuth-shuffle
new file mode 120000
index 0000000000..a80c329b34
--- /dev/null
+++ b/Lang/PascalABC.NET/Knuth-shuffle
@@ -0,0 +1 @@
+../../Task/Knuth-shuffle/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Least-common-multiple b/Lang/PascalABC.NET/Least-common-multiple
new file mode 120000
index 0000000000..446b96ac48
--- /dev/null
+++ b/Lang/PascalABC.NET/Least-common-multiple
@@ -0,0 +1 @@
+../../Task/Least-common-multiple/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/List-comprehensions b/Lang/PascalABC.NET/List-comprehensions
new file mode 120000
index 0000000000..e9fa93e9e6
--- /dev/null
+++ b/Lang/PascalABC.NET/List-comprehensions
@@ -0,0 +1 @@
+../../Task/List-comprehensions/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Literals-Floating-point b/Lang/PascalABC.NET/Literals-Floating-point
new file mode 120000
index 0000000000..e11300a194
--- /dev/null
+++ b/Lang/PascalABC.NET/Literals-Floating-point
@@ -0,0 +1 @@
+../../Task/Literals-Floating-point/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Literals-String b/Lang/PascalABC.NET/Literals-String
new file mode 120000
index 0000000000..2f02c8af92
--- /dev/null
+++ b/Lang/PascalABC.NET/Literals-String
@@ -0,0 +1 @@
+../../Task/Literals-String/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Longest-common-subsequence b/Lang/PascalABC.NET/Longest-common-subsequence
new file mode 120000
index 0000000000..1dfbd5ef9d
--- /dev/null
+++ b/Lang/PascalABC.NET/Longest-common-subsequence
@@ -0,0 +1 @@
+../../Task/Longest-common-subsequence/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Loop-over-multiple-arrays-simultaneously b/Lang/PascalABC.NET/Loop-over-multiple-arrays-simultaneously
new file mode 120000
index 0000000000..52655fded4
--- /dev/null
+++ b/Lang/PascalABC.NET/Loop-over-multiple-arrays-simultaneously
@@ -0,0 +1 @@
+../../Task/Loop-over-multiple-arrays-simultaneously/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Loops-Break b/Lang/PascalABC.NET/Loops-Break
new file mode 120000
index 0000000000..75f285786e
--- /dev/null
+++ b/Lang/PascalABC.NET/Loops-Break
@@ -0,0 +1 @@
+../../Task/Loops-Break/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Loops-Continue b/Lang/PascalABC.NET/Loops-Continue
new file mode 120000
index 0000000000..75da2856ce
--- /dev/null
+++ b/Lang/PascalABC.NET/Loops-Continue
@@ -0,0 +1 @@
+../../Task/Loops-Continue/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Loops-Do-while b/Lang/PascalABC.NET/Loops-Do-while
new file mode 120000
index 0000000000..a15c938618
--- /dev/null
+++ b/Lang/PascalABC.NET/Loops-Do-while
@@ -0,0 +1 @@
+../../Task/Loops-Do-while/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Loops-Downward-for b/Lang/PascalABC.NET/Loops-Downward-for
new file mode 120000
index 0000000000..c2c6306f3a
--- /dev/null
+++ b/Lang/PascalABC.NET/Loops-Downward-for
@@ -0,0 +1 @@
+../../Task/Loops-Downward-for/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Loops-For b/Lang/PascalABC.NET/Loops-For
new file mode 120000
index 0000000000..bf236f094e
--- /dev/null
+++ b/Lang/PascalABC.NET/Loops-For
@@ -0,0 +1 @@
+../../Task/Loops-For/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Loops-For-with-a-specified-step b/Lang/PascalABC.NET/Loops-For-with-a-specified-step
new file mode 120000
index 0000000000..5244453d5c
--- /dev/null
+++ b/Lang/PascalABC.NET/Loops-For-with-a-specified-step
@@ -0,0 +1 @@
+../../Task/Loops-For-with-a-specified-step/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Loops-Foreach b/Lang/PascalABC.NET/Loops-Foreach
new file mode 120000
index 0000000000..68b06931af
--- /dev/null
+++ b/Lang/PascalABC.NET/Loops-Foreach
@@ -0,0 +1 @@
+../../Task/Loops-Foreach/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Loops-Increment-loop-index-within-loop-body b/Lang/PascalABC.NET/Loops-Increment-loop-index-within-loop-body
new file mode 120000
index 0000000000..f5d20bce59
--- /dev/null
+++ b/Lang/PascalABC.NET/Loops-Increment-loop-index-within-loop-body
@@ -0,0 +1 @@
+../../Task/Loops-Increment-loop-index-within-loop-body/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Loops-N-plus-one-half b/Lang/PascalABC.NET/Loops-N-plus-one-half
new file mode 120000
index 0000000000..95fe8496ec
--- /dev/null
+++ b/Lang/PascalABC.NET/Loops-N-plus-one-half
@@ -0,0 +1 @@
+../../Task/Loops-N-plus-one-half/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Loops-Nested b/Lang/PascalABC.NET/Loops-Nested
new file mode 120000
index 0000000000..d1a88ee15f
--- /dev/null
+++ b/Lang/PascalABC.NET/Loops-Nested
@@ -0,0 +1 @@
+../../Task/Loops-Nested/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Loops-While b/Lang/PascalABC.NET/Loops-While
new file mode 120000
index 0000000000..19d817b9f2
--- /dev/null
+++ b/Lang/PascalABC.NET/Loops-While
@@ -0,0 +1 @@
+../../Task/Loops-While/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Loops-With-multiple-ranges b/Lang/PascalABC.NET/Loops-With-multiple-ranges
new file mode 120000
index 0000000000..1b3c0e8a85
--- /dev/null
+++ b/Lang/PascalABC.NET/Loops-With-multiple-ranges
@@ -0,0 +1 @@
+../../Task/Loops-With-multiple-ranges/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Loops-Wrong-ranges b/Lang/PascalABC.NET/Loops-Wrong-ranges
new file mode 120000
index 0000000000..cd717ae408
--- /dev/null
+++ b/Lang/PascalABC.NET/Loops-Wrong-ranges
@@ -0,0 +1 @@
+../../Task/Loops-Wrong-ranges/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Man-or-boy-test b/Lang/PascalABC.NET/Man-or-boy-test
new file mode 120000
index 0000000000..f9b9ccb7a0
--- /dev/null
+++ b/Lang/PascalABC.NET/Man-or-boy-test
@@ -0,0 +1 @@
+../../Task/Man-or-boy-test/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Memory-allocation b/Lang/PascalABC.NET/Memory-allocation
new file mode 120000
index 0000000000..b7e94af0dd
--- /dev/null
+++ b/Lang/PascalABC.NET/Memory-allocation
@@ -0,0 +1 @@
+../../Task/Memory-allocation/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Mouse-position b/Lang/PascalABC.NET/Mouse-position
new file mode 120000
index 0000000000..207ee7b935
--- /dev/null
+++ b/Lang/PascalABC.NET/Mouse-position
@@ -0,0 +1 @@
+../../Task/Mouse-position/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Nested-function b/Lang/PascalABC.NET/Nested-function
new file mode 120000
index 0000000000..406d1380f0
--- /dev/null
+++ b/Lang/PascalABC.NET/Nested-function
@@ -0,0 +1 @@
+../../Task/Nested-function/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Nth b/Lang/PascalABC.NET/Nth
new file mode 120000
index 0000000000..2151e00c8d
--- /dev/null
+++ b/Lang/PascalABC.NET/Nth
@@ -0,0 +1 @@
+../../Task/Nth/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Null-object b/Lang/PascalABC.NET/Null-object
new file mode 120000
index 0000000000..39b6da0acb
--- /dev/null
+++ b/Lang/PascalABC.NET/Null-object
@@ -0,0 +1 @@
+../../Task/Null-object/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Object-serialization b/Lang/PascalABC.NET/Object-serialization
new file mode 120000
index 0000000000..07426b45b7
--- /dev/null
+++ b/Lang/PascalABC.NET/Object-serialization
@@ -0,0 +1 @@
+../../Task/Object-serialization/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Palindrome-detection b/Lang/PascalABC.NET/Palindrome-detection
new file mode 120000
index 0000000000..cc92721e9f
--- /dev/null
+++ b/Lang/PascalABC.NET/Palindrome-detection
@@ -0,0 +1 @@
+../../Task/Palindrome-detection/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Parametric-polymorphism b/Lang/PascalABC.NET/Parametric-polymorphism
new file mode 120000
index 0000000000..7c242be133
--- /dev/null
+++ b/Lang/PascalABC.NET/Parametric-polymorphism
@@ -0,0 +1 @@
+../../Task/Parametric-polymorphism/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Pick-random-element b/Lang/PascalABC.NET/Pick-random-element
new file mode 120000
index 0000000000..9dd6351bad
--- /dev/null
+++ b/Lang/PascalABC.NET/Pick-random-element
@@ -0,0 +1 @@
+../../Task/Pick-random-element/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Pointers-and-references b/Lang/PascalABC.NET/Pointers-and-references
new file mode 120000
index 0000000000..6985ca1666
--- /dev/null
+++ b/Lang/PascalABC.NET/Pointers-and-references
@@ -0,0 +1 @@
+../../Task/Pointers-and-references/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Polymorphic-copy b/Lang/PascalABC.NET/Polymorphic-copy
new file mode 120000
index 0000000000..7ed8b814ad
--- /dev/null
+++ b/Lang/PascalABC.NET/Polymorphic-copy
@@ -0,0 +1 @@
+../../Task/Polymorphic-copy/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Polymorphism b/Lang/PascalABC.NET/Polymorphism
new file mode 120000
index 0000000000..4996bdacfd
--- /dev/null
+++ b/Lang/PascalABC.NET/Polymorphism
@@ -0,0 +1 @@
+../../Task/Polymorphism/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Power-set b/Lang/PascalABC.NET/Power-set
new file mode 120000
index 0000000000..042d839f30
--- /dev/null
+++ b/Lang/PascalABC.NET/Power-set
@@ -0,0 +1 @@
+../../Task/Power-set/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Primality-by-trial-division b/Lang/PascalABC.NET/Primality-by-trial-division
new file mode 120000
index 0000000000..62ca027b6e
--- /dev/null
+++ b/Lang/PascalABC.NET/Primality-by-trial-division
@@ -0,0 +1 @@
+../../Task/Primality-by-trial-division/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Prime-decomposition b/Lang/PascalABC.NET/Prime-decomposition
new file mode 120000
index 0000000000..ea96188341
--- /dev/null
+++ b/Lang/PascalABC.NET/Prime-decomposition
@@ -0,0 +1 @@
+../../Task/Prime-decomposition/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Program-name b/Lang/PascalABC.NET/Program-name
new file mode 120000
index 0000000000..6bdce5a90a
--- /dev/null
+++ b/Lang/PascalABC.NET/Program-name
@@ -0,0 +1 @@
+../../Task/Program-name/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Program-termination b/Lang/PascalABC.NET/Program-termination
new file mode 120000
index 0000000000..63645717ea
--- /dev/null
+++ b/Lang/PascalABC.NET/Program-termination
@@ -0,0 +1 @@
+../../Task/Program-termination/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Queue-Definition b/Lang/PascalABC.NET/Queue-Definition
new file mode 120000
index 0000000000..efb10e6df2
--- /dev/null
+++ b/Lang/PascalABC.NET/Queue-Definition
@@ -0,0 +1 @@
+../../Task/Queue-Definition/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Queue-Usage b/Lang/PascalABC.NET/Queue-Usage
new file mode 120000
index 0000000000..eab42cf449
--- /dev/null
+++ b/Lang/PascalABC.NET/Queue-Usage
@@ -0,0 +1 @@
+../../Task/Queue-Usage/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Quine b/Lang/PascalABC.NET/Quine
new file mode 120000
index 0000000000..98ce8f9f2f
--- /dev/null
+++ b/Lang/PascalABC.NET/Quine
@@ -0,0 +1 @@
+../../Task/Quine/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Quoting-constructs b/Lang/PascalABC.NET/Quoting-constructs
new file mode 120000
index 0000000000..971db935d4
--- /dev/null
+++ b/Lang/PascalABC.NET/Quoting-constructs
@@ -0,0 +1 @@
+../../Task/Quoting-constructs/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Radical-of-an-integer b/Lang/PascalABC.NET/Radical-of-an-integer
new file mode 120000
index 0000000000..430a252ecf
--- /dev/null
+++ b/Lang/PascalABC.NET/Radical-of-an-integer
@@ -0,0 +1 @@
+../../Task/Radical-of-an-integer/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Read-a-file-character-by-character-UTF8 b/Lang/PascalABC.NET/Read-a-file-character-by-character-UTF8
new file mode 120000
index 0000000000..a425a12499
--- /dev/null
+++ b/Lang/PascalABC.NET/Read-a-file-character-by-character-UTF8
@@ -0,0 +1 @@
+../../Task/Read-a-file-character-by-character-UTF8/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Read-a-file-line-by-line b/Lang/PascalABC.NET/Read-a-file-line-by-line
new file mode 120000
index 0000000000..bd96f90ae1
--- /dev/null
+++ b/Lang/PascalABC.NET/Read-a-file-line-by-line
@@ -0,0 +1 @@
+../../Task/Read-a-file-line-by-line/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Read-a-specific-line-from-a-file b/Lang/PascalABC.NET/Read-a-specific-line-from-a-file
new file mode 120000
index 0000000000..28703147aa
--- /dev/null
+++ b/Lang/PascalABC.NET/Read-a-specific-line-from-a-file
@@ -0,0 +1 @@
+../../Task/Read-a-specific-line-from-a-file/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Read-entire-file b/Lang/PascalABC.NET/Read-entire-file
new file mode 120000
index 0000000000..20a95b9d77
--- /dev/null
+++ b/Lang/PascalABC.NET/Read-entire-file
@@ -0,0 +1 @@
+../../Task/Read-entire-file/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Real-constants-and-functions b/Lang/PascalABC.NET/Real-constants-and-functions
new file mode 120000
index 0000000000..a6e7dce16d
--- /dev/null
+++ b/Lang/PascalABC.NET/Real-constants-and-functions
@@ -0,0 +1 @@
+../../Task/Real-constants-and-functions/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Reflection-List-methods b/Lang/PascalABC.NET/Reflection-List-methods
new file mode 120000
index 0000000000..7e40bca2fa
--- /dev/null
+++ b/Lang/PascalABC.NET/Reflection-List-methods
@@ -0,0 +1 @@
+../../Task/Reflection-List-methods/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Reflection-List-properties b/Lang/PascalABC.NET/Reflection-List-properties
new file mode 120000
index 0000000000..ed60f425f0
--- /dev/null
+++ b/Lang/PascalABC.NET/Reflection-List-properties
@@ -0,0 +1 @@
+../../Task/Reflection-List-properties/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Regular-expressions b/Lang/PascalABC.NET/Regular-expressions
new file mode 120000
index 0000000000..a3ccbe1574
--- /dev/null
+++ b/Lang/PascalABC.NET/Regular-expressions
@@ -0,0 +1 @@
+../../Task/Regular-expressions/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Remove-duplicate-elements b/Lang/PascalABC.NET/Remove-duplicate-elements
new file mode 120000
index 0000000000..6f37a5852e
--- /dev/null
+++ b/Lang/PascalABC.NET/Remove-duplicate-elements
@@ -0,0 +1 @@
+../../Task/Remove-duplicate-elements/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Remove-lines-from-a-file b/Lang/PascalABC.NET/Remove-lines-from-a-file
new file mode 120000
index 0000000000..6e76bee372
--- /dev/null
+++ b/Lang/PascalABC.NET/Remove-lines-from-a-file
@@ -0,0 +1 @@
+../../Task/Remove-lines-from-a-file/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Rename-a-file b/Lang/PascalABC.NET/Rename-a-file
new file mode 120000
index 0000000000..e7599165d6
--- /dev/null
+++ b/Lang/PascalABC.NET/Rename-a-file
@@ -0,0 +1 @@
+../../Task/Rename-a-file/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Repeat b/Lang/PascalABC.NET/Repeat
new file mode 120000
index 0000000000..e16283f972
--- /dev/null
+++ b/Lang/PascalABC.NET/Repeat
@@ -0,0 +1 @@
+../../Task/Repeat/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Repeat-a-string b/Lang/PascalABC.NET/Repeat-a-string
new file mode 120000
index 0000000000..c21e0bfde3
--- /dev/null
+++ b/Lang/PascalABC.NET/Repeat-a-string
@@ -0,0 +1 @@
+../../Task/Repeat-a-string/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Return-multiple-values b/Lang/PascalABC.NET/Return-multiple-values
new file mode 120000
index 0000000000..5178c8dd1d
--- /dev/null
+++ b/Lang/PascalABC.NET/Return-multiple-values
@@ -0,0 +1 @@
+../../Task/Return-multiple-values/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Reverse-a-string b/Lang/PascalABC.NET/Reverse-a-string
new file mode 120000
index 0000000000..8e67838296
--- /dev/null
+++ b/Lang/PascalABC.NET/Reverse-a-string
@@ -0,0 +1 @@
+../../Task/Reverse-a-string/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Reverse-words-in-a-string b/Lang/PascalABC.NET/Reverse-words-in-a-string
new file mode 120000
index 0000000000..aa82b64f3b
--- /dev/null
+++ b/Lang/PascalABC.NET/Reverse-words-in-a-string
@@ -0,0 +1 @@
+../../Task/Reverse-words-in-a-string/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Roman-numerals-Decode b/Lang/PascalABC.NET/Roman-numerals-Decode
new file mode 120000
index 0000000000..990d667ad0
--- /dev/null
+++ b/Lang/PascalABC.NET/Roman-numerals-Decode
@@ -0,0 +1 @@
+../../Task/Roman-numerals-Decode/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Roman-numerals-Encode b/Lang/PascalABC.NET/Roman-numerals-Encode
new file mode 120000
index 0000000000..c8f15e15fa
--- /dev/null
+++ b/Lang/PascalABC.NET/Roman-numerals-Encode
@@ -0,0 +1 @@
+../../Task/Roman-numerals-Encode/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Rosetta-Code-Rank-languages-by-popularity b/Lang/PascalABC.NET/Rosetta-Code-Rank-languages-by-popularity
new file mode 120000
index 0000000000..55aa7d4f0c
--- /dev/null
+++ b/Lang/PascalABC.NET/Rosetta-Code-Rank-languages-by-popularity
@@ -0,0 +1 @@
+../../Task/Rosetta-Code-Rank-languages-by-popularity/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Rot-13 b/Lang/PascalABC.NET/Rot-13
new file mode 120000
index 0000000000..f7c9e778c9
--- /dev/null
+++ b/Lang/PascalABC.NET/Rot-13
@@ -0,0 +1 @@
+../../Task/Rot-13/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Scope-modifiers b/Lang/PascalABC.NET/Scope-modifiers
new file mode 120000
index 0000000000..eb11f44070
--- /dev/null
+++ b/Lang/PascalABC.NET/Scope-modifiers
@@ -0,0 +1 @@
+../../Task/Scope-modifiers/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Send-an-unknown-method-call b/Lang/PascalABC.NET/Send-an-unknown-method-call
new file mode 120000
index 0000000000..2e049c05b3
--- /dev/null
+++ b/Lang/PascalABC.NET/Send-an-unknown-method-call
@@ -0,0 +1 @@
+../../Task/Send-an-unknown-method-call/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Sequence-of-primes-by-trial-division b/Lang/PascalABC.NET/Sequence-of-primes-by-trial-division
new file mode 120000
index 0000000000..4182c218d4
--- /dev/null
+++ b/Lang/PascalABC.NET/Sequence-of-primes-by-trial-division
@@ -0,0 +1 @@
+../../Task/Sequence-of-primes-by-trial-division/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Sieve-of-Eratosthenes b/Lang/PascalABC.NET/Sieve-of-Eratosthenes
new file mode 120000
index 0000000000..c9a2623742
--- /dev/null
+++ b/Lang/PascalABC.NET/Sieve-of-Eratosthenes
@@ -0,0 +1 @@
+../../Task/Sieve-of-Eratosthenes/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Simple-windowed-application b/Lang/PascalABC.NET/Simple-windowed-application
new file mode 120000
index 0000000000..a619cd32f7
--- /dev/null
+++ b/Lang/PascalABC.NET/Simple-windowed-application
@@ -0,0 +1 @@
+../../Task/Simple-windowed-application/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Singly-linked-list-Element-definition b/Lang/PascalABC.NET/Singly-linked-list-Element-definition
new file mode 120000
index 0000000000..71d3f5d628
--- /dev/null
+++ b/Lang/PascalABC.NET/Singly-linked-list-Element-definition
@@ -0,0 +1 @@
+../../Task/Singly-linked-list-Element-definition/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Singly-linked-list-Element-insertion b/Lang/PascalABC.NET/Singly-linked-list-Element-insertion
new file mode 120000
index 0000000000..f60548d528
--- /dev/null
+++ b/Lang/PascalABC.NET/Singly-linked-list-Element-insertion
@@ -0,0 +1 @@
+../../Task/Singly-linked-list-Element-insertion/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Sleep b/Lang/PascalABC.NET/Sleep
new file mode 120000
index 0000000000..d8f830cd4f
--- /dev/null
+++ b/Lang/PascalABC.NET/Sleep
@@ -0,0 +1 @@
+../../Task/Sleep/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Sort-an-array-of-composite-structures b/Lang/PascalABC.NET/Sort-an-array-of-composite-structures
new file mode 120000
index 0000000000..e0459e8577
--- /dev/null
+++ b/Lang/PascalABC.NET/Sort-an-array-of-composite-structures
@@ -0,0 +1 @@
+../../Task/Sort-an-array-of-composite-structures/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Sort-an-integer-array b/Lang/PascalABC.NET/Sort-an-integer-array
new file mode 120000
index 0000000000..e2137f1191
--- /dev/null
+++ b/Lang/PascalABC.NET/Sort-an-integer-array
@@ -0,0 +1 @@
+../../Task/Sort-an-integer-array/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Sort-three-variables b/Lang/PascalABC.NET/Sort-three-variables
new file mode 120000
index 0000000000..2143247222
--- /dev/null
+++ b/Lang/PascalABC.NET/Sort-three-variables
@@ -0,0 +1 @@
+../../Task/Sort-three-variables/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Sort-using-a-custom-comparator b/Lang/PascalABC.NET/Sort-using-a-custom-comparator
new file mode 120000
index 0000000000..a2ade4323b
--- /dev/null
+++ b/Lang/PascalABC.NET/Sort-using-a-custom-comparator
@@ -0,0 +1 @@
+../../Task/Sort-using-a-custom-comparator/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Sorting-algorithms-Quicksort b/Lang/PascalABC.NET/Sorting-algorithms-Quicksort
new file mode 120000
index 0000000000..d84582d974
--- /dev/null
+++ b/Lang/PascalABC.NET/Sorting-algorithms-Quicksort
@@ -0,0 +1 @@
+../../Task/Sorting-algorithms-Quicksort/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Special-variables b/Lang/PascalABC.NET/Special-variables
new file mode 120000
index 0000000000..00db4953ba
--- /dev/null
+++ b/Lang/PascalABC.NET/Special-variables
@@ -0,0 +1 @@
+../../Task/Special-variables/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Stack b/Lang/PascalABC.NET/Stack
new file mode 120000
index 0000000000..71f695fe1b
--- /dev/null
+++ b/Lang/PascalABC.NET/Stack
@@ -0,0 +1 @@
+../../Task/Stack/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Stack-traces b/Lang/PascalABC.NET/Stack-traces
new file mode 120000
index 0000000000..b6976dc3e0
--- /dev/null
+++ b/Lang/PascalABC.NET/Stack-traces
@@ -0,0 +1 @@
+../../Task/Stack-traces/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/String-append b/Lang/PascalABC.NET/String-append
new file mode 120000
index 0000000000..78fd361243
--- /dev/null
+++ b/Lang/PascalABC.NET/String-append
@@ -0,0 +1 @@
+../../Task/String-append/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/String-case b/Lang/PascalABC.NET/String-case
new file mode 120000
index 0000000000..980e55192e
--- /dev/null
+++ b/Lang/PascalABC.NET/String-case
@@ -0,0 +1 @@
+../../Task/String-case/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/String-concatenation b/Lang/PascalABC.NET/String-concatenation
new file mode 120000
index 0000000000..d7b52bf492
--- /dev/null
+++ b/Lang/PascalABC.NET/String-concatenation
@@ -0,0 +1 @@
+../../Task/String-concatenation/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/String-interpolation-included- b/Lang/PascalABC.NET/String-interpolation-included-
new file mode 120000
index 0000000000..6a1179d384
--- /dev/null
+++ b/Lang/PascalABC.NET/String-interpolation-included-
@@ -0,0 +1 @@
+../../Task/String-interpolation-included-/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/String-length b/Lang/PascalABC.NET/String-length
new file mode 120000
index 0000000000..1bc629e3ec
--- /dev/null
+++ b/Lang/PascalABC.NET/String-length
@@ -0,0 +1 @@
+../../Task/String-length/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/String-matching b/Lang/PascalABC.NET/String-matching
new file mode 120000
index 0000000000..f031375ab5
--- /dev/null
+++ b/Lang/PascalABC.NET/String-matching
@@ -0,0 +1 @@
+../../Task/String-matching/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/String-prepend b/Lang/PascalABC.NET/String-prepend
new file mode 120000
index 0000000000..205b3e4638
--- /dev/null
+++ b/Lang/PascalABC.NET/String-prepend
@@ -0,0 +1 @@
+../../Task/String-prepend/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Strip-a-set-of-characters-from-a-string b/Lang/PascalABC.NET/Strip-a-set-of-characters-from-a-string
new file mode 120000
index 0000000000..5548033cde
--- /dev/null
+++ b/Lang/PascalABC.NET/Strip-a-set-of-characters-from-a-string
@@ -0,0 +1 @@
+../../Task/Strip-a-set-of-characters-from-a-string/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Strip-block-comments b/Lang/PascalABC.NET/Strip-block-comments
new file mode 120000
index 0000000000..7a95085577
--- /dev/null
+++ b/Lang/PascalABC.NET/Strip-block-comments
@@ -0,0 +1 @@
+../../Task/Strip-block-comments/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Strip-comments-from-a-string b/Lang/PascalABC.NET/Strip-comments-from-a-string
new file mode 120000
index 0000000000..c415553cce
--- /dev/null
+++ b/Lang/PascalABC.NET/Strip-comments-from-a-string
@@ -0,0 +1 @@
+../../Task/Strip-comments-from-a-string/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Strip-control-codes-and-extended-characters-from-a-string b/Lang/PascalABC.NET/Strip-control-codes-and-extended-characters-from-a-string
new file mode 120000
index 0000000000..3175c3c416
--- /dev/null
+++ b/Lang/PascalABC.NET/Strip-control-codes-and-extended-characters-from-a-string
@@ -0,0 +1 @@
+../../Task/Strip-control-codes-and-extended-characters-from-a-string/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Strip-whitespace-from-a-string-Top-and-tail b/Lang/PascalABC.NET/Strip-whitespace-from-a-string-Top-and-tail
new file mode 120000
index 0000000000..075fc6a71b
--- /dev/null
+++ b/Lang/PascalABC.NET/Strip-whitespace-from-a-string-Top-and-tail
@@ -0,0 +1 @@
+../../Task/Strip-whitespace-from-a-string-Top-and-tail/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Substitution-cipher b/Lang/PascalABC.NET/Substitution-cipher
new file mode 120000
index 0000000000..5c9f1bb54c
--- /dev/null
+++ b/Lang/PascalABC.NET/Substitution-cipher
@@ -0,0 +1 @@
+../../Task/Substitution-cipher/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Substring b/Lang/PascalABC.NET/Substring
new file mode 120000
index 0000000000..f2a607112d
--- /dev/null
+++ b/Lang/PascalABC.NET/Substring
@@ -0,0 +1 @@
+../../Task/Substring/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Substring-Top-and-tail b/Lang/PascalABC.NET/Substring-Top-and-tail
new file mode 120000
index 0000000000..b64b9c4948
--- /dev/null
+++ b/Lang/PascalABC.NET/Substring-Top-and-tail
@@ -0,0 +1 @@
+../../Task/Substring-Top-and-tail/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Sudan-function b/Lang/PascalABC.NET/Sudan-function
new file mode 120000
index 0000000000..2a6cccd8a5
--- /dev/null
+++ b/Lang/PascalABC.NET/Sudan-function
@@ -0,0 +1 @@
+../../Task/Sudan-function/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Sum-and-product-of-an-array b/Lang/PascalABC.NET/Sum-and-product-of-an-array
new file mode 120000
index 0000000000..5bf49387d6
--- /dev/null
+++ b/Lang/PascalABC.NET/Sum-and-product-of-an-array
@@ -0,0 +1 @@
+../../Task/Sum-and-product-of-an-array/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Sum-digits-of-an-integer b/Lang/PascalABC.NET/Sum-digits-of-an-integer
new file mode 120000
index 0000000000..84d553224a
--- /dev/null
+++ b/Lang/PascalABC.NET/Sum-digits-of-an-integer
@@ -0,0 +1 @@
+../../Task/Sum-digits-of-an-integer/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Sum-multiples-of-3-and-5 b/Lang/PascalABC.NET/Sum-multiples-of-3-and-5
new file mode 120000
index 0000000000..3792b87fe0
--- /dev/null
+++ b/Lang/PascalABC.NET/Sum-multiples-of-3-and-5
@@ -0,0 +1 @@
+../../Task/Sum-multiples-of-3-and-5/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Sum-of-a-series b/Lang/PascalABC.NET/Sum-of-a-series
new file mode 120000
index 0000000000..1c91b8532b
--- /dev/null
+++ b/Lang/PascalABC.NET/Sum-of-a-series
@@ -0,0 +1 @@
+../../Task/Sum-of-a-series/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Sum-of-elements-below-main-diagonal-of-matrix b/Lang/PascalABC.NET/Sum-of-elements-below-main-diagonal-of-matrix
new file mode 120000
index 0000000000..055fd11a3e
--- /dev/null
+++ b/Lang/PascalABC.NET/Sum-of-elements-below-main-diagonal-of-matrix
@@ -0,0 +1 @@
+../../Task/Sum-of-elements-below-main-diagonal-of-matrix/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Sum-of-squares b/Lang/PascalABC.NET/Sum-of-squares
new file mode 120000
index 0000000000..0d6573d1ec
--- /dev/null
+++ b/Lang/PascalABC.NET/Sum-of-squares
@@ -0,0 +1 @@
+../../Task/Sum-of-squares/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Symmetric-difference b/Lang/PascalABC.NET/Symmetric-difference
new file mode 120000
index 0000000000..6a0af3805f
--- /dev/null
+++ b/Lang/PascalABC.NET/Symmetric-difference
@@ -0,0 +1 @@
+../../Task/Symmetric-difference/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/System-time b/Lang/PascalABC.NET/System-time
new file mode 120000
index 0000000000..b4cf3d92cb
--- /dev/null
+++ b/Lang/PascalABC.NET/System-time
@@ -0,0 +1 @@
+../../Task/System-time/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Take-notes-on-the-command-line b/Lang/PascalABC.NET/Take-notes-on-the-command-line
new file mode 120000
index 0000000000..ce2c9c51c4
--- /dev/null
+++ b/Lang/PascalABC.NET/Take-notes-on-the-command-line
@@ -0,0 +1 @@
+../../Task/Take-notes-on-the-command-line/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Tau-function b/Lang/PascalABC.NET/Tau-function
new file mode 120000
index 0000000000..fcb633b959
--- /dev/null
+++ b/Lang/PascalABC.NET/Tau-function
@@ -0,0 +1 @@
+../../Task/Tau-function/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Tau-number b/Lang/PascalABC.NET/Tau-number
new file mode 120000
index 0000000000..4be8374dc0
--- /dev/null
+++ b/Lang/PascalABC.NET/Tau-number
@@ -0,0 +1 @@
+../../Task/Tau-number/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Temperature-conversion b/Lang/PascalABC.NET/Temperature-conversion
new file mode 120000
index 0000000000..607c5a8aa1
--- /dev/null
+++ b/Lang/PascalABC.NET/Temperature-conversion
@@ -0,0 +1 @@
+../../Task/Temperature-conversion/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Terminal-control-Clear-the-screen b/Lang/PascalABC.NET/Terminal-control-Clear-the-screen
new file mode 120000
index 0000000000..ba3f668e83
--- /dev/null
+++ b/Lang/PascalABC.NET/Terminal-control-Clear-the-screen
@@ -0,0 +1 @@
+../../Task/Terminal-control-Clear-the-screen/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Terminal-control-Coloured-text b/Lang/PascalABC.NET/Terminal-control-Coloured-text
new file mode 120000
index 0000000000..26edde266f
--- /dev/null
+++ b/Lang/PascalABC.NET/Terminal-control-Coloured-text
@@ -0,0 +1 @@
+../../Task/Terminal-control-Coloured-text/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Terminal-control-Cursor-movement b/Lang/PascalABC.NET/Terminal-control-Cursor-movement
new file mode 120000
index 0000000000..75b038bfd2
--- /dev/null
+++ b/Lang/PascalABC.NET/Terminal-control-Cursor-movement
@@ -0,0 +1 @@
+../../Task/Terminal-control-Cursor-movement/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Terminal-control-Cursor-positioning b/Lang/PascalABC.NET/Terminal-control-Cursor-positioning
new file mode 120000
index 0000000000..440e989070
--- /dev/null
+++ b/Lang/PascalABC.NET/Terminal-control-Cursor-positioning
@@ -0,0 +1 @@
+../../Task/Terminal-control-Cursor-positioning/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Terminal-control-Dimensions b/Lang/PascalABC.NET/Terminal-control-Dimensions
new file mode 120000
index 0000000000..294b1506e4
--- /dev/null
+++ b/Lang/PascalABC.NET/Terminal-control-Dimensions
@@ -0,0 +1 @@
+../../Task/Terminal-control-Dimensions/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Terminal-control-Display-an-extended-character b/Lang/PascalABC.NET/Terminal-control-Display-an-extended-character
new file mode 120000
index 0000000000..51ff55a04f
--- /dev/null
+++ b/Lang/PascalABC.NET/Terminal-control-Display-an-extended-character
@@ -0,0 +1 @@
+../../Task/Terminal-control-Display-an-extended-character/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Terminal-control-Hiding-the-cursor b/Lang/PascalABC.NET/Terminal-control-Hiding-the-cursor
new file mode 120000
index 0000000000..0f79ee5b6d
--- /dev/null
+++ b/Lang/PascalABC.NET/Terminal-control-Hiding-the-cursor
@@ -0,0 +1 @@
+../../Task/Terminal-control-Hiding-the-cursor/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Terminal-control-Ringing-the-terminal-bell b/Lang/PascalABC.NET/Terminal-control-Ringing-the-terminal-bell
new file mode 120000
index 0000000000..dbea7c8c1b
--- /dev/null
+++ b/Lang/PascalABC.NET/Terminal-control-Ringing-the-terminal-bell
@@ -0,0 +1 @@
+../../Task/Terminal-control-Ringing-the-terminal-bell/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Test-a-function b/Lang/PascalABC.NET/Test-a-function
new file mode 120000
index 0000000000..561aaeccdd
--- /dev/null
+++ b/Lang/PascalABC.NET/Test-a-function
@@ -0,0 +1 @@
+../../Task/Test-a-function/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Time-a-function b/Lang/PascalABC.NET/Time-a-function
new file mode 120000
index 0000000000..2c161d3642
--- /dev/null
+++ b/Lang/PascalABC.NET/Time-a-function
@@ -0,0 +1 @@
+../../Task/Time-a-function/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Tokenize-a-string b/Lang/PascalABC.NET/Tokenize-a-string
new file mode 120000
index 0000000000..790ef58cc8
--- /dev/null
+++ b/Lang/PascalABC.NET/Tokenize-a-string
@@ -0,0 +1 @@
+../../Task/Tokenize-a-string/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Top-rank-per-group b/Lang/PascalABC.NET/Top-rank-per-group
new file mode 120000
index 0000000000..09da721479
--- /dev/null
+++ b/Lang/PascalABC.NET/Top-rank-per-group
@@ -0,0 +1 @@
+../../Task/Top-rank-per-group/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Towers-of-Hanoi b/Lang/PascalABC.NET/Towers-of-Hanoi
new file mode 120000
index 0000000000..2c8ecfee74
--- /dev/null
+++ b/Lang/PascalABC.NET/Towers-of-Hanoi
@@ -0,0 +1 @@
+../../Task/Towers-of-Hanoi/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Trabb-Pardo-Knuth-algorithm b/Lang/PascalABC.NET/Trabb-Pardo-Knuth-algorithm
new file mode 120000
index 0000000000..c211c9d9e3
--- /dev/null
+++ b/Lang/PascalABC.NET/Trabb-Pardo-Knuth-algorithm
@@ -0,0 +1 @@
+../../Task/Trabb-Pardo-Knuth-algorithm/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Transliterate-English-text-using-the-Greek-alphabet b/Lang/PascalABC.NET/Transliterate-English-text-using-the-Greek-alphabet
new file mode 120000
index 0000000000..d24a02b5a0
--- /dev/null
+++ b/Lang/PascalABC.NET/Transliterate-English-text-using-the-Greek-alphabet
@@ -0,0 +1 @@
+../../Task/Transliterate-English-text-using-the-Greek-alphabet/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Tree-datastructures b/Lang/PascalABC.NET/Tree-datastructures
new file mode 120000
index 0000000000..2b711cc827
--- /dev/null
+++ b/Lang/PascalABC.NET/Tree-datastructures
@@ -0,0 +1 @@
+../../Task/Tree-datastructures/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Tree-traversal b/Lang/PascalABC.NET/Tree-traversal
new file mode 120000
index 0000000000..7b8540d436
--- /dev/null
+++ b/Lang/PascalABC.NET/Tree-traversal
@@ -0,0 +1 @@
+../../Task/Tree-traversal/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Trigonometric-functions b/Lang/PascalABC.NET/Trigonometric-functions
new file mode 120000
index 0000000000..90b97e3cc1
--- /dev/null
+++ b/Lang/PascalABC.NET/Trigonometric-functions
@@ -0,0 +1 @@
+../../Task/Trigonometric-functions/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Truncate-a-file b/Lang/PascalABC.NET/Truncate-a-file
new file mode 120000
index 0000000000..e41951adf8
--- /dev/null
+++ b/Lang/PascalABC.NET/Truncate-a-file
@@ -0,0 +1 @@
+../../Task/Truncate-a-file/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Twos-complement b/Lang/PascalABC.NET/Twos-complement
new file mode 120000
index 0000000000..b0daea87d5
--- /dev/null
+++ b/Lang/PascalABC.NET/Twos-complement
@@ -0,0 +1 @@
+../../Task/Twos-complement/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/URL-decoding b/Lang/PascalABC.NET/URL-decoding
new file mode 120000
index 0000000000..bb79d3d611
--- /dev/null
+++ b/Lang/PascalABC.NET/URL-decoding
@@ -0,0 +1 @@
+../../Task/URL-decoding/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/URL-encoding b/Lang/PascalABC.NET/URL-encoding
new file mode 120000
index 0000000000..4e193b1e1d
--- /dev/null
+++ b/Lang/PascalABC.NET/URL-encoding
@@ -0,0 +1 @@
+../../Task/URL-encoding/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Undefined-values b/Lang/PascalABC.NET/Undefined-values
new file mode 120000
index 0000000000..799f03aa4e
--- /dev/null
+++ b/Lang/PascalABC.NET/Undefined-values
@@ -0,0 +1 @@
+../../Task/Undefined-values/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Unicode-strings b/Lang/PascalABC.NET/Unicode-strings
new file mode 120000
index 0000000000..1596fd402d
--- /dev/null
+++ b/Lang/PascalABC.NET/Unicode-strings
@@ -0,0 +1 @@
+../../Task/Unicode-strings/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Unicode-variable-names b/Lang/PascalABC.NET/Unicode-variable-names
new file mode 120000
index 0000000000..356bcbe63e
--- /dev/null
+++ b/Lang/PascalABC.NET/Unicode-variable-names
@@ -0,0 +1 @@
+../../Task/Unicode-variable-names/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/User-input-Text b/Lang/PascalABC.NET/User-input-Text
new file mode 120000
index 0000000000..c49d403c30
--- /dev/null
+++ b/Lang/PascalABC.NET/User-input-Text
@@ -0,0 +1 @@
+../../Task/User-input-Text/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Variables b/Lang/PascalABC.NET/Variables
new file mode 120000
index 0000000000..fb0f3cb656
--- /dev/null
+++ b/Lang/PascalABC.NET/Variables
@@ -0,0 +1 @@
+../../Task/Variables/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Variadic-function b/Lang/PascalABC.NET/Variadic-function
new file mode 120000
index 0000000000..c1bc454958
--- /dev/null
+++ b/Lang/PascalABC.NET/Variadic-function
@@ -0,0 +1 @@
+../../Task/Variadic-function/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Vector b/Lang/PascalABC.NET/Vector
new file mode 120000
index 0000000000..d45a06a593
--- /dev/null
+++ b/Lang/PascalABC.NET/Vector
@@ -0,0 +1 @@
+../../Task/Vector/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Vector-products b/Lang/PascalABC.NET/Vector-products
new file mode 120000
index 0000000000..8bc6e1a1f1
--- /dev/null
+++ b/Lang/PascalABC.NET/Vector-products
@@ -0,0 +1 @@
+../../Task/Vector-products/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Walk-a-directory-Non-recursively b/Lang/PascalABC.NET/Walk-a-directory-Non-recursively
new file mode 120000
index 0000000000..117d045320
--- /dev/null
+++ b/Lang/PascalABC.NET/Walk-a-directory-Non-recursively
@@ -0,0 +1 @@
+../../Task/Walk-a-directory-Non-recursively/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Walk-a-directory-Recursively b/Lang/PascalABC.NET/Walk-a-directory-Recursively
new file mode 120000
index 0000000000..6fba185f99
--- /dev/null
+++ b/Lang/PascalABC.NET/Walk-a-directory-Recursively
@@ -0,0 +1 @@
+../../Task/Walk-a-directory-Recursively/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Window-creation b/Lang/PascalABC.NET/Window-creation
new file mode 120000
index 0000000000..c656ea2a7f
--- /dev/null
+++ b/Lang/PascalABC.NET/Window-creation
@@ -0,0 +1 @@
+../../Task/Window-creation/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Word-frequency b/Lang/PascalABC.NET/Word-frequency
new file mode 120000
index 0000000000..eed444f9fc
--- /dev/null
+++ b/Lang/PascalABC.NET/Word-frequency
@@ -0,0 +1 @@
+../../Task/Word-frequency/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Word-wrap b/Lang/PascalABC.NET/Word-wrap
new file mode 120000
index 0000000000..b2cbb831f8
--- /dev/null
+++ b/Lang/PascalABC.NET/Word-wrap
@@ -0,0 +1 @@
+../../Task/Word-wrap/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Write-entire-file b/Lang/PascalABC.NET/Write-entire-file
new file mode 120000
index 0000000000..fb24fa3029
--- /dev/null
+++ b/Lang/PascalABC.NET/Write-entire-file
@@ -0,0 +1 @@
+../../Task/Write-entire-file/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Write-to-Windows-event-log b/Lang/PascalABC.NET/Write-to-Windows-event-log
new file mode 120000
index 0000000000..556c794eaf
--- /dev/null
+++ b/Lang/PascalABC.NET/Write-to-Windows-event-log
@@ -0,0 +1 @@
+../../Task/Write-to-Windows-event-log/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/XML-DOM-serialization b/Lang/PascalABC.NET/XML-DOM-serialization
new file mode 120000
index 0000000000..ac8822f809
--- /dev/null
+++ b/Lang/PascalABC.NET/XML-DOM-serialization
@@ -0,0 +1 @@
+../../Task/XML-DOM-serialization/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/XML-Input b/Lang/PascalABC.NET/XML-Input
new file mode 120000
index 0000000000..6c693b433f
--- /dev/null
+++ b/Lang/PascalABC.NET/XML-Input
@@ -0,0 +1 @@
+../../Task/XML-Input/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/XML-Output b/Lang/PascalABC.NET/XML-Output
new file mode 120000
index 0000000000..c33649037e
--- /dev/null
+++ b/Lang/PascalABC.NET/XML-Output
@@ -0,0 +1 @@
+../../Task/XML-Output/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Zero-to-the-zero-power b/Lang/PascalABC.NET/Zero-to-the-zero-power
new file mode 120000
index 0000000000..315543b2a3
--- /dev/null
+++ b/Lang/PascalABC.NET/Zero-to-the-zero-power
@@ -0,0 +1 @@
+../../Task/Zero-to-the-zero-power/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/Perl/Search-in-paragraphs-text b/Lang/Perl/Search-in-paragraphs-text
new file mode 120000
index 0000000000..3327049060
--- /dev/null
+++ b/Lang/Perl/Search-in-paragraphs-text
@@ -0,0 +1 @@
+../../Task/Search-in-paragraphs-text/Perl
\ No newline at end of file
diff --git a/Lang/Prog8/Quine b/Lang/Prog8/Quine
new file mode 120000
index 0000000000..d19dfe3196
--- /dev/null
+++ b/Lang/Prog8/Quine
@@ -0,0 +1 @@
+../../Task/Quine/Prog8
\ No newline at end of file
diff --git a/Lang/PureBasic/M-bius-function b/Lang/PureBasic/M-bius-function
new file mode 120000
index 0000000000..86603635cf
--- /dev/null
+++ b/Lang/PureBasic/M-bius-function
@@ -0,0 +1 @@
+../../Task/M-bius-function/PureBasic
\ No newline at end of file
diff --git a/Lang/Python/Rhonda-numbers b/Lang/Python/Rhonda-numbers
new file mode 120000
index 0000000000..26cc73526d
--- /dev/null
+++ b/Lang/Python/Rhonda-numbers
@@ -0,0 +1 @@
+../../Task/Rhonda-numbers/Python
\ No newline at end of file
diff --git a/Lang/QB64/Fibonacci-n-step-number-sequences b/Lang/QB64/Fibonacci-n-step-number-sequences
new file mode 120000
index 0000000000..dbe9d19cad
--- /dev/null
+++ b/Lang/QB64/Fibonacci-n-step-number-sequences
@@ -0,0 +1 @@
+../../Task/Fibonacci-n-step-number-sequences/QB64
\ No newline at end of file
diff --git a/Lang/QB64/Multiple-regression b/Lang/QB64/Multiple-regression
new file mode 120000
index 0000000000..f5a655fb07
--- /dev/null
+++ b/Lang/QB64/Multiple-regression
@@ -0,0 +1 @@
+../../Task/Multiple-regression/QB64
\ No newline at end of file
diff --git a/Lang/QB64/Price-fraction b/Lang/QB64/Price-fraction
new file mode 120000
index 0000000000..b2a7164220
--- /dev/null
+++ b/Lang/QB64/Price-fraction
@@ -0,0 +1 @@
+../../Task/Price-fraction/QB64
\ No newline at end of file
diff --git a/Lang/QBasic/Display-a-linear-combination b/Lang/QBasic/Display-a-linear-combination
new file mode 120000
index 0000000000..e9d158c960
--- /dev/null
+++ b/Lang/QBasic/Display-a-linear-combination
@@ -0,0 +1 @@
+../../Task/Display-a-linear-combination/QBasic
\ No newline at end of file
diff --git a/Lang/QBasic/Fibonacci-n-step-number-sequences b/Lang/QBasic/Fibonacci-n-step-number-sequences
new file mode 120000
index 0000000000..77136c7137
--- /dev/null
+++ b/Lang/QBasic/Fibonacci-n-step-number-sequences
@@ -0,0 +1 @@
+../../Task/Fibonacci-n-step-number-sequences/QBasic
\ No newline at end of file
diff --git a/Lang/QBasic/Jensens-Device b/Lang/QBasic/Jensens-Device
new file mode 120000
index 0000000000..199e4d7809
--- /dev/null
+++ b/Lang/QBasic/Jensens-Device
@@ -0,0 +1 @@
+../../Task/Jensens-Device/QBasic
\ No newline at end of file
diff --git a/Lang/QBasic/Nested-templated-data b/Lang/QBasic/Nested-templated-data
new file mode 120000
index 0000000000..ddf5a87c1b
--- /dev/null
+++ b/Lang/QBasic/Nested-templated-data
@@ -0,0 +1 @@
+../../Task/Nested-templated-data/QBasic
\ No newline at end of file
diff --git a/Lang/QBasic/Ramer-Douglas-Peucker-line-simplification b/Lang/QBasic/Ramer-Douglas-Peucker-line-simplification
new file mode 120000
index 0000000000..574b7acaf0
--- /dev/null
+++ b/Lang/QBasic/Ramer-Douglas-Peucker-line-simplification
@@ -0,0 +1 @@
+../../Task/Ramer-Douglas-Peucker-line-simplification/QBasic
\ No newline at end of file
diff --git a/Lang/QBasic/Vector b/Lang/QBasic/Vector
new file mode 120000
index 0000000000..7bbf551f69
--- /dev/null
+++ b/Lang/QBasic/Vector
@@ -0,0 +1 @@
+../../Task/Vector/QBasic
\ No newline at end of file
diff --git a/Lang/Quackery/00-LANG.txt b/Lang/Quackery/00-LANG.txt
index 498188387d..e36ac3a936 100644
--- a/Lang/Quackery/00-LANG.txt
+++ b/Lang/Quackery/00-LANG.txt
@@ -19,7 +19,7 @@ To compile this definition of quackery, build takes a
The words is, [, and ] are builders; they can be found in the builders dictionary, which extends the functionality of build beyond building a flat nest for do to evaluate. is takes the item that do most recently added to its output nest, and adds it to the names dictionary, along with the string that follows it, "quackery" as its name. The syntax of Quackery is; words and numbers are sequences of printable characters, separated by spaces and carriage returns unless a builder treats the text that follows it otherwise. The builder builds is equivalent to is for adding new words and behaviours to the builders dictionary.
-Evaluation of a nest proceeds from left to right unless a control flow operator redirects it. done causes doto stop evaluating a nest and return to the nest that pointed to it immediately, rather than at the end of the nest. again restarts the evaluation of that nest, non-recursively. The word recurse does it recursively. if and iff conditionally (depending on the item on the top of the Quackery stack) skip over the next one and two items in the nest respectively. else skips over one item, unconditionally. As with the other provided control flow operators, these words are nests, not operators, that make use of the "meta-control flow" operators, which grant the behaviours described above to words that use them. (They modify items on the return stack, rather than acting on the Quackery engine's various pointers registers directly, so their changes are enacted upon exiting the nest that called them.)
+Evaluation of a nest proceeds from left to right unless a control flow operator redirects it. done causes doto stop evaluating a nest and return to the nest that pointed to it immediately, rather than at the end of the nest. again restarts the evaluation of that nest, non-recursively. The word recurse does it recursively. if and iff conditionally (depending on the item on the top of the Quackery stack) skip over the next one and two items in the nest respectively. else skips over one item, unconditionally. As with the other provided control flow operators, these words are nests, not operators, that make use of the "meta-control flow" operators, which grant the behaviours described above to words that use them. (They modify items on the return stack, rather than acting on the Quackery engine's various registers directly, so their changes are enacted upon exiting the nest that called them.)
There are no variables in Quackery. Instead, there are stack management words to rearrange the uppermost items on the Quackery stack as required, and nameable ancillary stacks that fulfil the roles of variables.
diff --git a/Lang/Quackery/Dinesmans-multiple-dwelling-problem b/Lang/Quackery/Dinesmans-multiple-dwelling-problem
new file mode 120000
index 0000000000..2061e87b20
--- /dev/null
+++ b/Lang/Quackery/Dinesmans-multiple-dwelling-problem
@@ -0,0 +1 @@
+../../Task/Dinesmans-multiple-dwelling-problem/Quackery
\ No newline at end of file
diff --git a/Lang/Quackery/Distribution-of-0-digits-in-factorial-series b/Lang/Quackery/Distribution-of-0-digits-in-factorial-series
new file mode 120000
index 0000000000..8627f3195b
--- /dev/null
+++ b/Lang/Quackery/Distribution-of-0-digits-in-factorial-series
@@ -0,0 +1 @@
+../../Task/Distribution-of-0-digits-in-factorial-series/Quackery
\ No newline at end of file
diff --git a/Lang/Quackery/Dutch-national-flag-problem b/Lang/Quackery/Dutch-national-flag-problem
new file mode 120000
index 0000000000..133393cf2e
--- /dev/null
+++ b/Lang/Quackery/Dutch-national-flag-problem
@@ -0,0 +1 @@
+../../Task/Dutch-national-flag-problem/Quackery
\ No newline at end of file
diff --git a/Lang/Quackery/Flipping-bits-game b/Lang/Quackery/Flipping-bits-game
new file mode 120000
index 0000000000..fd3aa38458
--- /dev/null
+++ b/Lang/Quackery/Flipping-bits-game
@@ -0,0 +1 @@
+../../Task/Flipping-bits-game/Quackery
\ No newline at end of file
diff --git a/Lang/Quackery/Minimum-multiple-of-m-where-digital-sum-equals-m b/Lang/Quackery/Minimum-multiple-of-m-where-digital-sum-equals-m
new file mode 120000
index 0000000000..ddb9ece049
--- /dev/null
+++ b/Lang/Quackery/Minimum-multiple-of-m-where-digital-sum-equals-m
@@ -0,0 +1 @@
+../../Task/Minimum-multiple-of-m-where-digital-sum-equals-m/Quackery
\ No newline at end of file
diff --git a/Lang/Quackery/Password-generator b/Lang/Quackery/Password-generator
new file mode 120000
index 0000000000..8d0efee13f
--- /dev/null
+++ b/Lang/Quackery/Password-generator
@@ -0,0 +1 @@
+../../Task/Password-generator/Quackery
\ No newline at end of file
diff --git a/Lang/Quackery/Solve-the-no-connection-puzzle b/Lang/Quackery/Solve-the-no-connection-puzzle
new file mode 120000
index 0000000000..d37f201a93
--- /dev/null
+++ b/Lang/Quackery/Solve-the-no-connection-puzzle
@@ -0,0 +1 @@
+../../Task/Solve-the-no-connection-puzzle/Quackery
\ No newline at end of file
diff --git a/Lang/QuickBASIC/Function-definition b/Lang/QuickBASIC/Function-definition
new file mode 120000
index 0000000000..0251617973
--- /dev/null
+++ b/Lang/QuickBASIC/Function-definition
@@ -0,0 +1 @@
+../../Task/Function-definition/QuickBASIC
\ No newline at end of file
diff --git a/Lang/QuickBASIC/Monty-Hall-problem b/Lang/QuickBASIC/Monty-Hall-problem
new file mode 120000
index 0000000000..5a322fee75
--- /dev/null
+++ b/Lang/QuickBASIC/Monty-Hall-problem
@@ -0,0 +1 @@
+../../Task/Monty-Hall-problem/QuickBASIC
\ No newline at end of file
diff --git a/Lang/QuickBASIC/Random-numbers b/Lang/QuickBASIC/Random-numbers
new file mode 120000
index 0000000000..8332f543fa
--- /dev/null
+++ b/Lang/QuickBASIC/Random-numbers
@@ -0,0 +1 @@
+../../Task/Random-numbers/QuickBASIC
\ No newline at end of file
diff --git a/Lang/QuickBASIC/Sorting-algorithms-Quicksort b/Lang/QuickBASIC/Sorting-algorithms-Quicksort
new file mode 120000
index 0000000000..573bd236b2
--- /dev/null
+++ b/Lang/QuickBASIC/Sorting-algorithms-Quicksort
@@ -0,0 +1 @@
+../../Task/Sorting-algorithms-Quicksort/QuickBASIC
\ No newline at end of file
diff --git a/Lang/R/Arithmetic-derivative b/Lang/R/Arithmetic-derivative
new file mode 120000
index 0000000000..b37750c7e7
--- /dev/null
+++ b/Lang/R/Arithmetic-derivative
@@ -0,0 +1 @@
+../../Task/Arithmetic-derivative/R
\ No newline at end of file
diff --git a/Lang/R/Compare-length-of-two-strings b/Lang/R/Compare-length-of-two-strings
new file mode 120000
index 0000000000..834feb9f20
--- /dev/null
+++ b/Lang/R/Compare-length-of-two-strings
@@ -0,0 +1 @@
+../../Task/Compare-length-of-two-strings/R
\ No newline at end of file
diff --git a/Lang/R/Conjugate-transpose b/Lang/R/Conjugate-transpose
new file mode 120000
index 0000000000..573e26fb04
--- /dev/null
+++ b/Lang/R/Conjugate-transpose
@@ -0,0 +1 @@
+../../Task/Conjugate-transpose/R
\ No newline at end of file
diff --git a/Lang/R/Golden-ratio-Convergence b/Lang/R/Golden-ratio-Convergence
new file mode 120000
index 0000000000..c3444860a4
--- /dev/null
+++ b/Lang/R/Golden-ratio-Convergence
@@ -0,0 +1 @@
+../../Task/Golden-ratio-Convergence/R
\ No newline at end of file
diff --git a/Lang/REXX/00-LANG.txt b/Lang/REXX/00-LANG.txt
index 26a483d9aa..e8f90b2e8c 100644
--- a/Lang/REXX/00-LANG.txt
+++ b/Lang/REXX/00-LANG.txt
@@ -36,7 +36,7 @@ The '''REXX''' language was influenced by the computer programming languages: &n
* '''[[CRX REXX]]''' (Compact REXX) is a classic REXX first written by Dr. Brian Marks.
-* '''[[CTC REXX]]''' is a classic REXX that is bundled with PC/SPF and written by Command Technology Corporation, a license is required to use this product. This version of REXX can only be used under PC/SPF and it's panels. PC/SPF resembles the IBM program product SPF (which has other names and versions).
+* '''[[CTC REXX]]''' is a classic REXX that is bundled with PC/SPF and written by Command Technology Corporation, a license is required to use this product. This version of REXX can only be used under PC/SPF and it's panels. PC/SPF resembles the IBM program product SPF (which has other names and versions). The last version was published in 1996. CTC doesn't exist anymore.
* '''[[KEXX]]''' is a subset of REXX that is bundled with KEDIT and written by Keven J. Kearney of Mansfield Software Group, Inc., a license is required to use this product. KEXX only executes under the KEDIT licensed product. KEDIT is an XEDIT clone (an editor from IBM for VM/CMS program products).
@@ -75,7 +75,7 @@ The '''REXX''' language was influenced by the computer programming languages: &n
* '''[[Regina REXX]]''' is an implementation first created by Anders Christensen (in 1992) and is now maintained by others, notably Mark Hessling. Regina REXX runs on more different platforms than any other REXX, too many to name here. It can be downloaded freely.
-* '''[[Reginald REXX]]''' is a REXX developed by Jeff Glatt. It can be downloaded freely.
+* '''[[Reginald REXX]]''' is a REXX developed by Jeff Glatt. It can be downloaded freely. According to Rexxinfo.org, Reginald is out of maintenance.
* '''[[REXX/imc]]''' a classic REXX developed by Ian M. Collier (imc) for Linux/Unix.
@@ -84,10 +84,10 @@ The '''REXX''' language was influenced by the computer programming languages: &n
* '''REXX/Personal''' is another name for '''Personal REXX''' (see above).
-* '''[[ROO oo-REXX]]''' an object-oriented REXX developed by Keith Watts of Kilowatt Software, Inc. It can be downloaded freely. '''ROO''' is also known as '''ROO!'''.
+* '''[[ROO oo-REXX]]''' an object-oriented REXX developed by Keith Watts of Kilowatt Software, Inc. It can be downloaded freely. '''ROO''' is also known as '''ROO!'''. According to Rexxinfo.org, Roo! is out of maintenance.
-* '''[[R4 REXX]]''' a classic REXX developed by Keith Watts of Kilowatt Software, Inc. It was also known as '''Portable REXX'''. It can be downloaded freely.
+* '''[[R4 REXX]]''' a classic REXX developed by Keith Watts of Kilowatt Software, Inc. It was also known as '''Portable REXX'''. It can be downloaded freely. According to Rexxinfo.org, R4 is out of maintenance.
* '''[[T/REXX, a REXX compiler for CMS]]''' is an implementation of classic REXX written by Leigh Lundin and Mark Woodruff (according to Wikipedia).
diff --git a/Lang/REXX/Eulers-constant-0.5772... b/Lang/REXX/Eulers-constant-0.5772...
new file mode 120000
index 0000000000..4dd79a59f3
--- /dev/null
+++ b/Lang/REXX/Eulers-constant-0.5772...
@@ -0,0 +1 @@
+../../Task/Eulers-constant-0.5772.../REXX
\ No newline at end of file
diff --git a/Lang/Red/00-LANG.txt b/Lang/Red/00-LANG.txt
index 1cb6089084..bde0f4b81e 100644
--- a/Lang/Red/00-LANG.txt
+++ b/Lang/Red/00-LANG.txt
@@ -8,6 +8,9 @@ Like Rebol, Red has a low memory footprint, is garbage collected, and has a [htt
Red embeds several DSLs, among which Red/System (C semantics meet Red syntax), dedicated to low-level and system programming. It is also used as an intermediate language (IL) when Red is compiled. The Red executable is able to build Red/System files directly (`*.reds`) as well as Red files (`*.red`), and Red/System code may be embedded freely in Red code.
+==Todo==
+[https://rosettacode.org/wiki/Tasks_not_implemented_in_Red Tasks not implemented in Red]
+
==Useful links==
* [http://www.red-lang.org Red Language Website]
* [https://twitter.com/red_lang @red_lang] on Twitter.
diff --git a/Lang/Refal/Copy-stdin-to-stdout b/Lang/Refal/Copy-stdin-to-stdout
new file mode 120000
index 0000000000..974e13964c
--- /dev/null
+++ b/Lang/Refal/Copy-stdin-to-stdout
@@ -0,0 +1 @@
+../../Task/Copy-stdin-to-stdout/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Damm-algorithm b/Lang/Refal/Damm-algorithm
new file mode 120000
index 0000000000..9b99056b8a
--- /dev/null
+++ b/Lang/Refal/Damm-algorithm
@@ -0,0 +1 @@
+../../Task/Damm-algorithm/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Determine-sentence-type b/Lang/Refal/Determine-sentence-type
new file mode 120000
index 0000000000..13809ebd86
--- /dev/null
+++ b/Lang/Refal/Determine-sentence-type
@@ -0,0 +1 @@
+../../Task/Determine-sentence-type/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Disarium-numbers b/Lang/Refal/Disarium-numbers
new file mode 120000
index 0000000000..7389ead892
--- /dev/null
+++ b/Lang/Refal/Disarium-numbers
@@ -0,0 +1 @@
+../../Task/Disarium-numbers/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Discordian-date b/Lang/Refal/Discordian-date
new file mode 120000
index 0000000000..e18bd824ca
--- /dev/null
+++ b/Lang/Refal/Discordian-date
@@ -0,0 +1 @@
+../../Task/Discordian-date/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Factors-of-an-integer b/Lang/Refal/Factors-of-an-integer
new file mode 120000
index 0000000000..b8b431c369
--- /dev/null
+++ b/Lang/Refal/Factors-of-an-integer
@@ -0,0 +1 @@
+../../Task/Factors-of-an-integer/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Flatten-a-list b/Lang/Refal/Flatten-a-list
new file mode 120000
index 0000000000..b2445ac726
--- /dev/null
+++ b/Lang/Refal/Flatten-a-list
@@ -0,0 +1 @@
+../../Task/Flatten-a-list/Refal
\ No newline at end of file
diff --git a/Lang/Refal/General-FizzBuzz b/Lang/Refal/General-FizzBuzz
new file mode 120000
index 0000000000..019727fd06
--- /dev/null
+++ b/Lang/Refal/General-FizzBuzz
@@ -0,0 +1 @@
+../../Task/General-FizzBuzz/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Letter-frequency b/Lang/Refal/Letter-frequency
new file mode 120000
index 0000000000..e9c48e99dd
--- /dev/null
+++ b/Lang/Refal/Letter-frequency
@@ -0,0 +1 @@
+../../Task/Letter-frequency/Refal
\ No newline at end of file
diff --git a/Lang/Refal/McNuggets-problem b/Lang/Refal/McNuggets-problem
new file mode 120000
index 0000000000..90628a4989
--- /dev/null
+++ b/Lang/Refal/McNuggets-problem
@@ -0,0 +1 @@
+../../Task/McNuggets-problem/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Nested-templated-data b/Lang/Refal/Nested-templated-data
new file mode 120000
index 0000000000..ceaf039a10
--- /dev/null
+++ b/Lang/Refal/Nested-templated-data
@@ -0,0 +1 @@
+../../Task/Nested-templated-data/Refal
\ No newline at end of file
diff --git a/Lang/Refal/One-dimensional-cellular-automata b/Lang/Refal/One-dimensional-cellular-automata
new file mode 120000
index 0000000000..89b9ba280e
--- /dev/null
+++ b/Lang/Refal/One-dimensional-cellular-automata
@@ -0,0 +1 @@
+../../Task/One-dimensional-cellular-automata/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Palindrome-detection b/Lang/Refal/Palindrome-detection
new file mode 120000
index 0000000000..87f1ace89c
--- /dev/null
+++ b/Lang/Refal/Palindrome-detection
@@ -0,0 +1 @@
+../../Task/Palindrome-detection/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Population-count b/Lang/Refal/Population-count
new file mode 120000
index 0000000000..3cdd939b69
--- /dev/null
+++ b/Lang/Refal/Population-count
@@ -0,0 +1 @@
+../../Task/Population-count/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Repeat b/Lang/Refal/Repeat
new file mode 120000
index 0000000000..1cdb36e096
--- /dev/null
+++ b/Lang/Refal/Repeat
@@ -0,0 +1 @@
+../../Task/Repeat/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Split-a-character-string-based-on-change-of-character b/Lang/Refal/Split-a-character-string-based-on-change-of-character
new file mode 120000
index 0000000000..8a3aec8866
--- /dev/null
+++ b/Lang/Refal/Split-a-character-string-based-on-change-of-character
@@ -0,0 +1 @@
+../../Task/Split-a-character-string-based-on-change-of-character/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Square-but-not-cube b/Lang/Refal/Square-but-not-cube
new file mode 120000
index 0000000000..a50417a708
--- /dev/null
+++ b/Lang/Refal/Square-but-not-cube
@@ -0,0 +1 @@
+../../Task/Square-but-not-cube/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Word-ladder b/Lang/Refal/Word-ladder
new file mode 120000
index 0000000000..b43f6deb31
--- /dev/null
+++ b/Lang/Refal/Word-ladder
@@ -0,0 +1 @@
+../../Task/Word-ladder/Refal
\ No newline at end of file
diff --git a/Lang/Rockstar/00-LANG.txt b/Lang/Rockstar/00-LANG.txt
index 9dc3cbc2f7..c22e2c3636 100644
--- a/Lang/Rockstar/00-LANG.txt
+++ b/Lang/Rockstar/00-LANG.txt
@@ -1,4 +1,8 @@
-{{stub}}{{language|Rockstar}}
+{{stub}}
+{{language|Rockstar
+|site=https://codewithrockstar.com/
+|hopl=no
+}}
Rockstar was created by a rockin' dude named Dylan Beattie.
diff --git a/Lang/Run-BASIC/Nested-templated-data b/Lang/Run-BASIC/Nested-templated-data
new file mode 120000
index 0000000000..e2c607e939
--- /dev/null
+++ b/Lang/Run-BASIC/Nested-templated-data
@@ -0,0 +1 @@
+../../Task/Nested-templated-data/Run-BASIC
\ No newline at end of file
diff --git a/Lang/S-BASIC/Copy-a-string b/Lang/S-BASIC/Copy-a-string
new file mode 120000
index 0000000000..cf54fdae2e
--- /dev/null
+++ b/Lang/S-BASIC/Copy-a-string
@@ -0,0 +1 @@
+../../Task/Copy-a-string/S-BASIC
\ No newline at end of file
diff --git a/Lang/S-BASIC/Factorial b/Lang/S-BASIC/Factorial
new file mode 120000
index 0000000000..3c6e9121ba
--- /dev/null
+++ b/Lang/S-BASIC/Factorial
@@ -0,0 +1 @@
+../../Task/Factorial/S-BASIC
\ No newline at end of file
diff --git a/Lang/S-BASIC/Loops-Break b/Lang/S-BASIC/Loops-Break
new file mode 120000
index 0000000000..4109f93543
--- /dev/null
+++ b/Lang/S-BASIC/Loops-Break
@@ -0,0 +1 @@
+../../Task/Loops-Break/S-BASIC
\ No newline at end of file
diff --git a/Lang/SETL/Brilliant-numbers b/Lang/SETL/Brilliant-numbers
new file mode 120000
index 0000000000..8c8cbe8558
--- /dev/null
+++ b/Lang/SETL/Brilliant-numbers
@@ -0,0 +1 @@
+../../Task/Brilliant-numbers/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Damm-algorithm b/Lang/SETL/Damm-algorithm
new file mode 120000
index 0000000000..8e8b8d193a
--- /dev/null
+++ b/Lang/SETL/Damm-algorithm
@@ -0,0 +1 @@
+../../Task/Damm-algorithm/SETL
\ No newline at end of file
diff --git a/Lang/SETL/General-FizzBuzz b/Lang/SETL/General-FizzBuzz
new file mode 120000
index 0000000000..c26977365f
--- /dev/null
+++ b/Lang/SETL/General-FizzBuzz
@@ -0,0 +1 @@
+../../Task/General-FizzBuzz/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Levenshtein-distance b/Lang/SETL/Levenshtein-distance
new file mode 120000
index 0000000000..5a234fcd60
--- /dev/null
+++ b/Lang/SETL/Levenshtein-distance
@@ -0,0 +1 @@
+../../Task/Levenshtein-distance/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Luhn-test-of-credit-card-numbers b/Lang/SETL/Luhn-test-of-credit-card-numbers
new file mode 120000
index 0000000000..d5c47a10ed
--- /dev/null
+++ b/Lang/SETL/Luhn-test-of-credit-card-numbers
@@ -0,0 +1 @@
+../../Task/Luhn-test-of-credit-card-numbers/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Monty-Hall-problem b/Lang/SETL/Monty-Hall-problem
new file mode 120000
index 0000000000..0740052c5e
--- /dev/null
+++ b/Lang/SETL/Monty-Hall-problem
@@ -0,0 +1 @@
+../../Task/Monty-Hall-problem/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Nested-templated-data b/Lang/SETL/Nested-templated-data
new file mode 120000
index 0000000000..58fd3f508a
--- /dev/null
+++ b/Lang/SETL/Nested-templated-data
@@ -0,0 +1 @@
+../../Task/Nested-templated-data/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Ordered-words b/Lang/SETL/Ordered-words
new file mode 120000
index 0000000000..efd35b209e
--- /dev/null
+++ b/Lang/SETL/Ordered-words
@@ -0,0 +1 @@
+../../Task/Ordered-words/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Pisano-period b/Lang/SETL/Pisano-period
new file mode 120000
index 0000000000..735d169166
--- /dev/null
+++ b/Lang/SETL/Pisano-period
@@ -0,0 +1 @@
+../../Task/Pisano-period/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Show-ASCII-table b/Lang/SETL/Show-ASCII-table
new file mode 120000
index 0000000000..5c4e8348ce
--- /dev/null
+++ b/Lang/SETL/Show-ASCII-table
@@ -0,0 +1 @@
+../../Task/Show-ASCII-table/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Split-a-character-string-based-on-change-of-character b/Lang/SETL/Split-a-character-string-based-on-change-of-character
new file mode 120000
index 0000000000..ff9aa0b4dd
--- /dev/null
+++ b/Lang/SETL/Split-a-character-string-based-on-change-of-character
@@ -0,0 +1 @@
+../../Task/Split-a-character-string-based-on-change-of-character/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Word-ladder b/Lang/SETL/Word-ladder
new file mode 120000
index 0000000000..c8dccafa85
--- /dev/null
+++ b/Lang/SETL/Word-ladder
@@ -0,0 +1 @@
+../../Task/Word-ladder/SETL
\ No newline at end of file
diff --git a/Lang/Sed/00-LANG.txt b/Lang/Sed/00-LANG.txt
index 23390cea6c..5d2641e2db 100644
--- a/Lang/Sed/00-LANG.txt
+++ b/Lang/Sed/00-LANG.txt
@@ -6,5 +6,7 @@ a non interactive tool for text manipulation and filtering.
One implementation is [[GNU Sed]]
+See [[Tasks not implemented in sed]]
+
[[Category:Editor]]
[[Category:Utility]]
\ No newline at end of file
diff --git a/Lang/Sidef/Increasing-gaps-between-consecutive-Niven-numbers b/Lang/Sidef/Increasing-gaps-between-consecutive-Niven-numbers
new file mode 120000
index 0000000000..b80a20c4f5
--- /dev/null
+++ b/Lang/Sidef/Increasing-gaps-between-consecutive-Niven-numbers
@@ -0,0 +1 @@
+../../Task/Increasing-gaps-between-consecutive-Niven-numbers/Sidef
\ No newline at end of file
diff --git a/Lang/Sidef/Jaro-Winkler-distance b/Lang/Sidef/Jaro-Winkler-distance
new file mode 120000
index 0000000000..48f92f7ccd
--- /dev/null
+++ b/Lang/Sidef/Jaro-Winkler-distance
@@ -0,0 +1 @@
+../../Task/Jaro-Winkler-distance/Sidef
\ No newline at end of file
diff --git a/Lang/Sidef/Prime-numbers-whose-neighboring-pairs-are-tetraprimes b/Lang/Sidef/Prime-numbers-whose-neighboring-pairs-are-tetraprimes
new file mode 120000
index 0000000000..1f840ef9e4
--- /dev/null
+++ b/Lang/Sidef/Prime-numbers-whose-neighboring-pairs-are-tetraprimes
@@ -0,0 +1 @@
+../../Task/Prime-numbers-whose-neighboring-pairs-are-tetraprimes/Sidef
\ No newline at end of file
diff --git a/Lang/Sidef/Smarandache-Wellin-primes b/Lang/Sidef/Smarandache-Wellin-primes
new file mode 120000
index 0000000000..056e5bc295
--- /dev/null
+++ b/Lang/Sidef/Smarandache-Wellin-primes
@@ -0,0 +1 @@
+../../Task/Smarandache-Wellin-primes/Sidef
\ No newline at end of file
diff --git a/Lang/Sidef/Wagstaff-primes b/Lang/Sidef/Wagstaff-primes
new file mode 120000
index 0000000000..d0053cfbed
--- /dev/null
+++ b/Lang/Sidef/Wagstaff-primes
@@ -0,0 +1 @@
+../../Task/Wagstaff-primes/Sidef
\ No newline at end of file
diff --git a/Lang/Standard-ML/Call-a-foreign-language-function b/Lang/Standard-ML/Call-a-foreign-language-function
new file mode 120000
index 0000000000..1f398efa97
--- /dev/null
+++ b/Lang/Standard-ML/Call-a-foreign-language-function
@@ -0,0 +1 @@
+../../Task/Call-a-foreign-language-function/Standard-ML
\ No newline at end of file
diff --git a/Lang/Standard-ML/Pi b/Lang/Standard-ML/Pi
new file mode 120000
index 0000000000..f806ddbcae
--- /dev/null
+++ b/Lang/Standard-ML/Pi
@@ -0,0 +1 @@
+../../Task/Pi/Standard-ML
\ No newline at end of file
diff --git a/Lang/SuperCollider/00-LANG.txt b/Lang/SuperCollider/00-LANG.txt
index f804a4a144..d6b538fcd2 100644
--- a/Lang/SuperCollider/00-LANG.txt
+++ b/Lang/SuperCollider/00-LANG.txt
@@ -9,4 +9,130 @@ The programming language was originally devised by James McCartney and has been
[https://github.com/supercollider/supercollider SuperCollider at GitHub]
-[http://supercollider.github.io/ SuperCollider Homepage]
\ No newline at end of file
+[http://supercollider.github.io/ SuperCollider Homepage]
+
+
+
+Some additional notes on SuperCollider 2024-06-21
+
+From the SuperCollider GitHub website: https://supercollider.github.io/ :
+Quote:
+A PLATFORM FOR AUDIO SYNTHESIS AND ALGORITHMIC COMPOSITION,
+ USED BY MUSICIANS, ARTISTS AND RESEARCHERS WORKING WITH SOUND.
+
+FREE AND OPEN SOURCE SOFTWARE FOR WINDOWS, MACOS AND LINUX.
+
+SuperCollider features three major components:
+scsynth – A real-time audio server
+sclang – An interpreted programming language
+scide – An editor for sclang with an integrated help system
+End-Quote.
+
+Some people try to squeeze a musical composition into 140 characters: (but just for the challenge):
+Don't judge SuperCollider or the language by these examples, they are just for fun.
+
+f={|t|Pbind(\note,Pseq([-1,1,6,8,9,1,-1,8,6,1,9,8]+5,319),\dur,t)};Ptpar([0,f.(1/6),12,f.(0.1672)],1).play
+
+Listen to the results here: https://supercollider.github.io/assets/audio/sc-140/06_batuhanbozkurt_celesteh.mp3
+You can see/hear more at: https://supercollider.github.io/sc-140.html
+
+
+As of today (2024-06-21) the current version of SuperCollider for all supported platforms is: 3.13.0
+
+While SClang (SuperCollider language) and its companion components are designed for the creation of sounds and music, the language is a full featured programming language.
+
+The language is OO, to the extent that everything is an object, even numbers.
+In this snippet: 123 + 456 the 123 is an object, + is a method on the class of that object, and 456 is a parameter to that method.
+Even though + is a method the syntax of the addition is what you would typically expect.
+
+The print function in SClang is a method called postln, which first appears in the root of the class tree: Object.
+
+Some examples, showing two possible call formats:
+
+postln("Hello World"); // prints: Hello World
+"Hello World".postln; // prints: Hello World
+postln(1001); // prints: 1001
+1001.postln; // prints: 1001
+postln(123 + 456); // prints: 579
+(123 + 456).postln; // prints: 579
+
+
+The method postln, adds a new-line after printing the text, if you don't want the new-line, use: post.
+
+
+SuperCollider from the command line (not used much)
+
+SuperCollider scripts are stored in files with an extension of .scd.
+These are typically referred to as supercollider documents, hence .scd.
+
+99.99% of the time, you will execute code from within the IDE (scide).
+
+It is possible but not typical, to run a script from the command line, for example:
+ > sclang.exe ABC_problem.scd
+This will output the expected results.
+See code at: https://rosettacode.org/wiki/ABC_problem#SuperCollider
+However, before executing your code, sclang will compile its class library, and you will see all of the messages about the compilation, before you see the output from your code.
+
+Also, once your code is finished, you will be stuck as sclang is still waiting for more input from a file, not the keyboard. The second problem can be solved by adding exit(0); to the end of your script (.scd file);
+
+SuperCollider comes packaged with QT, and has classes that represent GUI objects, for example:
+ > sclang.exe Barnsley_fern.scd
+Will open a window and draw the Barnsley Fern.
+See code at: https://rosettacode.org/wiki/Barnsley_fern#SuperCollider
+You will have to use Ctrl-c to kill the sclang process, you cannot add exit(0) to you script as the exit would happen before the GUI was fully created.
+
+It is theoretically possible to create a thread within your script which waits until all work is done and then for it to execute exit(0); but you are just giving yourself extra work.
+
+You can also run sclang without giving it a file, then it will accept input from the keyboard.
+ > sclang.exe
+You will get this prompt sc3> now you can type in ONE LINE OF CODE.
+For example, the following line of code has three statements, the end result is printing the sum of the two numbers:
+sc3> var v1=123; var v2=456; postf("v1+v2=%\n", v1+v2);
+v1+v2=579
+-> v1+v2=579
+
+The line with the arrow: -> v1+v2=579, is sclang printing the value of the last expression executed
+
+Summary: You can start sclang from the command line and type in some code, or you could give sclang a script to run, both will work, but it is much more productive to use scide.
+Using sclang from the command line is like playing your guitar with winter gloves on, you could do it, but why make life difficult?
+
+If you have composed (written code for) a long piece of music, and now you want to execute the code from the command line, yes, you can do it, but it isn't going to sound any different than it would if you execute the code from within scide.
+Also, scide offers the ability to 'live code', i.e. execute some code to make some music, and change the code as the music is playing, so the music evolves as you change the code.
+
+
+SuperCollider from the IDE
+Start scide, or 'open' a SuperCollider Document (*.scd), if scide is 'associated' with that file type.
+See: https://doc.sccode.org/Guides/SCIde.html
+After you start scide, it starts sclang, which compiles the SuperCollider classes.
+Now you can start coding.
+
+How to execute code (borrowed from the page at the URL above)
+
+To evaluate code, use one of the following keyboard commands:
+Ctrl+Return
+Most used, "smart" code evaluation:
+Normally, the current line will be evaluated (where the cursor is).
+If the cursor is within a region, the entire region will be evaluated. See below for explanation of regions.
+If some code is selected, the selection will be evaluated.
+
+Shift+Return
+
+Evaluates either the current line, or the selection (if any). Use this to evaluate a single line within a region without the need to select it.
+Regions make it quick and easy to evaluate larger portions of code. A region is surrounded by parentheses; to be interpreted as a region, the parenthesis must each be the only character on a line.
+
+(
+Pbind(
+ \degree, Pseries(0, 1, 8),
+ \dur, 0.25
+).play;
+)
+
+If the cursor is anywhere between the outermost parentheses, pressing Ctrl+Return will automatically evaluate the entire contents within the parentheses, starting with Pbind and ending with play;.
+
+To quickly evaluate a portion of code, you can also double-click on any bracket (round, squared, or curly), which will select everything between this and the other matching bracket, so you can quickly evaluate it.
+
+To stop any running code, use the Ctrl+. shortcut (Ctrl+Period).
+This will stop all the code scheduled on the clocks, as well as all the sound processes on the audio server.
+
+
+... more coming soon ...
\ No newline at end of file
diff --git a/Lang/SuperCollider/Semordnilap b/Lang/SuperCollider/Semordnilap
deleted file mode 120000
index ace051dba8..0000000000
--- a/Lang/SuperCollider/Semordnilap
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Semordnilap/SuperCollider
\ No newline at end of file
diff --git a/Lang/Swift/Compare-length-of-two-strings b/Lang/Swift/Compare-length-of-two-strings
new file mode 120000
index 0000000000..d53f307b7e
--- /dev/null
+++ b/Lang/Swift/Compare-length-of-two-strings
@@ -0,0 +1 @@
+../../Task/Compare-length-of-two-strings/Swift
\ No newline at end of file
diff --git a/Lang/Swift/Pseudo-random-numbers-Splitmix64 b/Lang/Swift/Pseudo-random-numbers-Splitmix64
new file mode 120000
index 0000000000..7f3d66c35a
--- /dev/null
+++ b/Lang/Swift/Pseudo-random-numbers-Splitmix64
@@ -0,0 +1 @@
+../../Task/Pseudo-random-numbers-Splitmix64/Swift
\ No newline at end of file
diff --git a/Lang/Transd/Compare-length-of-two-strings b/Lang/Transd/Compare-length-of-two-strings
deleted file mode 120000
index 28f3956c3e..0000000000
--- a/Lang/Transd/Compare-length-of-two-strings
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compare-length-of-two-strings/Transd
\ No newline at end of file
diff --git a/Lang/True-BASIC/100-prisoners b/Lang/True-BASIC/100-prisoners
new file mode 120000
index 0000000000..b793e357f7
--- /dev/null
+++ b/Lang/True-BASIC/100-prisoners
@@ -0,0 +1 @@
+../../Task/100-prisoners/True-BASIC
\ No newline at end of file
diff --git a/Lang/True-BASIC/Multiple-regression b/Lang/True-BASIC/Multiple-regression
new file mode 120000
index 0000000000..ca0e5c404e
--- /dev/null
+++ b/Lang/True-BASIC/Multiple-regression
@@ -0,0 +1 @@
+../../Task/Multiple-regression/True-BASIC
\ No newline at end of file
diff --git a/Lang/True-BASIC/Vector b/Lang/True-BASIC/Vector
new file mode 120000
index 0000000000..4da227d0fe
--- /dev/null
+++ b/Lang/True-BASIC/Vector
@@ -0,0 +1 @@
+../../Task/Vector/True-BASIC
\ No newline at end of file
diff --git a/Lang/TypeScript/Deal-cards-for-FreeCell b/Lang/TypeScript/Deal-cards-for-FreeCell
new file mode 120000
index 0000000000..04eefe17ef
--- /dev/null
+++ b/Lang/TypeScript/Deal-cards-for-FreeCell
@@ -0,0 +1 @@
+../../Task/Deal-cards-for-FreeCell/TypeScript
\ No newline at end of file
diff --git a/Lang/UNIX-Shell/Pi b/Lang/UNIX-Shell/Pi
new file mode 120000
index 0000000000..854a52d02a
--- /dev/null
+++ b/Lang/UNIX-Shell/Pi
@@ -0,0 +1 @@
+../../Task/Pi/UNIX-Shell
\ No newline at end of file
diff --git a/Lang/UNIX-Shell/Trabb-Pardo-Knuth-algorithm b/Lang/UNIX-Shell/Trabb-Pardo-Knuth-algorithm
new file mode 120000
index 0000000000..d9c18fe35b
--- /dev/null
+++ b/Lang/UNIX-Shell/Trabb-Pardo-Knuth-algorithm
@@ -0,0 +1 @@
+../../Task/Trabb-Pardo-Knuth-algorithm/UNIX-Shell
\ No newline at end of file
diff --git a/Lang/Uiua/00-LANG.txt b/Lang/Uiua/00-LANG.txt
index 2a4f3f689f..820e780454 100644
--- a/Lang/Uiua/00-LANG.txt
+++ b/Lang/Uiua/00-LANG.txt
@@ -1,6 +1,13 @@
{{language
-|site=https://www.uiua.org/}}
-{{language programming paradigm|functional}}
+|exec=bytecode
+|site=https://www.uiua.org/
+|checking=dynamic
+|gc=yes
+|express=implicit
+|LCT=yes}}
+{{language programming paradigm|array}}
+{{language programming paradigm|functional|array}}
+
Uiua (''wee-wuh'') is a general purpose, stack-based, array-oriented programming language with a focus on simplicity, beauty, and tacit code.
Uiua has a simple, context-free, LL(3) grammar. Code runs from right to left, top to bottom, with only one precedence rule. As operators are to the left of their operands, Uiua code reads a little bit like a Lisp, but with fewer parentheses.
@@ -11,4 +18,7 @@ Uiua's one and only composite data type, the array, is based on those of APL, J,
Unlike other array languages, Uiua does not have monadic and dyadic versions of each glyph. Every glyph does only one thing, so you don't need to parse an entire expression to know which version it is.
-Find out more, and run code in your browser at https://www.uiua.org
\ No newline at end of file
+Find out more, and run code in your browser at https://www.uiua.org
+
+==Todo==
+[https://rosettacode.org/wiki/Tasks_not_implemented_in_Uiua Tasks not implemented in Uiua]
\ No newline at end of file
diff --git a/Lang/Uiua/15-puzzle-solver b/Lang/Uiua/15-puzzle-solver
new file mode 120000
index 0000000000..d2c4541287
--- /dev/null
+++ b/Lang/Uiua/15-puzzle-solver
@@ -0,0 +1 @@
+../../Task/15-puzzle-solver/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/ADFGVX-cipher b/Lang/Uiua/ADFGVX-cipher
new file mode 120000
index 0000000000..3b808ce65e
--- /dev/null
+++ b/Lang/Uiua/ADFGVX-cipher
@@ -0,0 +1 @@
+../../Task/ADFGVX-cipher/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/ASCII-art-diagram-converter b/Lang/Uiua/ASCII-art-diagram-converter
new file mode 120000
index 0000000000..7868ebc205
--- /dev/null
+++ b/Lang/Uiua/ASCII-art-diagram-converter
@@ -0,0 +1 @@
+../../Task/ASCII-art-diagram-converter/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Abbreviations-automatic b/Lang/Uiua/Abbreviations-automatic
new file mode 120000
index 0000000000..4ed38ebb71
--- /dev/null
+++ b/Lang/Uiua/Abbreviations-automatic
@@ -0,0 +1 @@
+../../Task/Abbreviations-automatic/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Abelian-sandpile-model b/Lang/Uiua/Abelian-sandpile-model
new file mode 120000
index 0000000000..511d6d21ce
--- /dev/null
+++ b/Lang/Uiua/Abelian-sandpile-model
@@ -0,0 +1 @@
+../../Task/Abelian-sandpile-model/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Align-columns b/Lang/Uiua/Align-columns
new file mode 120000
index 0000000000..90d8156011
--- /dev/null
+++ b/Lang/Uiua/Align-columns
@@ -0,0 +1 @@
+../../Task/Align-columns/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Anti-primes b/Lang/Uiua/Anti-primes
new file mode 120000
index 0000000000..caaf04d665
--- /dev/null
+++ b/Lang/Uiua/Anti-primes
@@ -0,0 +1 @@
+../../Task/Anti-primes/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Arithmetic-geometric-mean b/Lang/Uiua/Arithmetic-geometric-mean
new file mode 120000
index 0000000000..6adeb66a11
--- /dev/null
+++ b/Lang/Uiua/Arithmetic-geometric-mean
@@ -0,0 +1 @@
+../../Task/Arithmetic-geometric-mean/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Array-concatenation b/Lang/Uiua/Array-concatenation
new file mode 120000
index 0000000000..48fabf1a40
--- /dev/null
+++ b/Lang/Uiua/Array-concatenation
@@ -0,0 +1 @@
+../../Task/Array-concatenation/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Array-length b/Lang/Uiua/Array-length
new file mode 120000
index 0000000000..7c3be21b34
--- /dev/null
+++ b/Lang/Uiua/Array-length
@@ -0,0 +1 @@
+../../Task/Array-length/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Ascending-primes b/Lang/Uiua/Ascending-primes
new file mode 120000
index 0000000000..83b9f7be7a
--- /dev/null
+++ b/Lang/Uiua/Ascending-primes
@@ -0,0 +1 @@
+../../Task/Ascending-primes/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Averages-Mean-time-of-day b/Lang/Uiua/Averages-Mean-time-of-day
new file mode 120000
index 0000000000..970582690e
--- /dev/null
+++ b/Lang/Uiua/Averages-Mean-time-of-day
@@ -0,0 +1 @@
+../../Task/Averages-Mean-time-of-day/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Barnsley-fern b/Lang/Uiua/Barnsley-fern
new file mode 120000
index 0000000000..39f57d2d79
--- /dev/null
+++ b/Lang/Uiua/Barnsley-fern
@@ -0,0 +1 @@
+../../Task/Barnsley-fern/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Benfords-law b/Lang/Uiua/Benfords-law
new file mode 120000
index 0000000000..c9f7d29ef6
--- /dev/null
+++ b/Lang/Uiua/Benfords-law
@@ -0,0 +1 @@
+../../Task/Benfords-law/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Bifid-cipher b/Lang/Uiua/Bifid-cipher
new file mode 120000
index 0000000000..7118fdadf7
--- /dev/null
+++ b/Lang/Uiua/Bifid-cipher
@@ -0,0 +1 @@
+../../Task/Bifid-cipher/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Binary-digits b/Lang/Uiua/Binary-digits
new file mode 120000
index 0000000000..126c2d6665
--- /dev/null
+++ b/Lang/Uiua/Binary-digits
@@ -0,0 +1 @@
+../../Task/Binary-digits/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Bulls-and-cows-Player b/Lang/Uiua/Bulls-and-cows-Player
new file mode 120000
index 0000000000..b45c91dd88
--- /dev/null
+++ b/Lang/Uiua/Bulls-and-cows-Player
@@ -0,0 +1 @@
+../../Task/Bulls-and-cows-Player/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/CSV-data-manipulation b/Lang/Uiua/CSV-data-manipulation
new file mode 120000
index 0000000000..78747e6f49
--- /dev/null
+++ b/Lang/Uiua/CSV-data-manipulation
@@ -0,0 +1 @@
+../../Task/CSV-data-manipulation/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Calkin-Wilf-sequence b/Lang/Uiua/Calkin-Wilf-sequence
new file mode 120000
index 0000000000..23330ada15
--- /dev/null
+++ b/Lang/Uiua/Calkin-Wilf-sequence
@@ -0,0 +1 @@
+../../Task/Calkin-Wilf-sequence/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Cartesian-product-of-two-or-more-lists b/Lang/Uiua/Cartesian-product-of-two-or-more-lists
new file mode 120000
index 0000000000..bff2250b36
--- /dev/null
+++ b/Lang/Uiua/Cartesian-product-of-two-or-more-lists
@@ -0,0 +1 @@
+../../Task/Cartesian-product-of-two-or-more-lists/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Combinations b/Lang/Uiua/Combinations
new file mode 120000
index 0000000000..1300366dbb
--- /dev/null
+++ b/Lang/Uiua/Combinations
@@ -0,0 +1 @@
+../../Task/Combinations/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Convert-seconds-to-compound-duration b/Lang/Uiua/Convert-seconds-to-compound-duration
new file mode 120000
index 0000000000..7c892696f2
--- /dev/null
+++ b/Lang/Uiua/Convert-seconds-to-compound-duration
@@ -0,0 +1 @@
+../../Task/Convert-seconds-to-compound-duration/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Conways-Game-of-Life b/Lang/Uiua/Conways-Game-of-Life
new file mode 120000
index 0000000000..577dcf20b1
--- /dev/null
+++ b/Lang/Uiua/Conways-Game-of-Life
@@ -0,0 +1 @@
+../../Task/Conways-Game-of-Life/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Determine-if-a-string-is-collapsible b/Lang/Uiua/Determine-if-a-string-is-collapsible
new file mode 120000
index 0000000000..9891000cca
--- /dev/null
+++ b/Lang/Uiua/Determine-if-a-string-is-collapsible
@@ -0,0 +1 @@
+../../Task/Determine-if-a-string-is-collapsible/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Dutch-national-flag-problem b/Lang/Uiua/Dutch-national-flag-problem
new file mode 120000
index 0000000000..198949a01a
--- /dev/null
+++ b/Lang/Uiua/Dutch-national-flag-problem
@@ -0,0 +1 @@
+../../Task/Dutch-national-flag-problem/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Factorial b/Lang/Uiua/Factorial
new file mode 120000
index 0000000000..5664c30904
--- /dev/null
+++ b/Lang/Uiua/Factorial
@@ -0,0 +1 @@
+../../Task/Factorial/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Factors-of-an-integer b/Lang/Uiua/Factors-of-an-integer
new file mode 120000
index 0000000000..c83bd4a95a
--- /dev/null
+++ b/Lang/Uiua/Factors-of-an-integer
@@ -0,0 +1 @@
+../../Task/Factors-of-an-integer/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Find-the-missing-permutation b/Lang/Uiua/Find-the-missing-permutation
new file mode 120000
index 0000000000..e1361833f3
--- /dev/null
+++ b/Lang/Uiua/Find-the-missing-permutation
@@ -0,0 +1 @@
+../../Task/Find-the-missing-permutation/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Flatten-a-list b/Lang/Uiua/Flatten-a-list
new file mode 120000
index 0000000000..8d22eb4f6e
--- /dev/null
+++ b/Lang/Uiua/Flatten-a-list
@@ -0,0 +1 @@
+../../Task/Flatten-a-list/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Flipping-bits-game b/Lang/Uiua/Flipping-bits-game
new file mode 120000
index 0000000000..4647df0617
--- /dev/null
+++ b/Lang/Uiua/Flipping-bits-game
@@ -0,0 +1 @@
+../../Task/Flipping-bits-game/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Forest-fire b/Lang/Uiua/Forest-fire
new file mode 120000
index 0000000000..1c1ded9f8f
--- /dev/null
+++ b/Lang/Uiua/Forest-fire
@@ -0,0 +1 @@
+../../Task/Forest-fire/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Greatest-common-divisor b/Lang/Uiua/Greatest-common-divisor
new file mode 120000
index 0000000000..ed42b8017f
--- /dev/null
+++ b/Lang/Uiua/Greatest-common-divisor
@@ -0,0 +1 @@
+../../Task/Greatest-common-divisor/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Identity-matrix b/Lang/Uiua/Identity-matrix
new file mode 120000
index 0000000000..73bc76c89c
--- /dev/null
+++ b/Lang/Uiua/Identity-matrix
@@ -0,0 +1 @@
+../../Task/Identity-matrix/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Increment-a-numerical-string b/Lang/Uiua/Increment-a-numerical-string
new file mode 120000
index 0000000000..5102531751
--- /dev/null
+++ b/Lang/Uiua/Increment-a-numerical-string
@@ -0,0 +1 @@
+../../Task/Increment-a-numerical-string/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Integer-sequence b/Lang/Uiua/Integer-sequence
new file mode 120000
index 0000000000..71a2ec5539
--- /dev/null
+++ b/Lang/Uiua/Integer-sequence
@@ -0,0 +1 @@
+../../Task/Integer-sequence/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Langtons-ant b/Lang/Uiua/Langtons-ant
new file mode 120000
index 0000000000..ea25fbedff
--- /dev/null
+++ b/Lang/Uiua/Langtons-ant
@@ -0,0 +1 @@
+../../Task/Langtons-ant/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Largest-int-from-concatenated-ints b/Lang/Uiua/Largest-int-from-concatenated-ints
new file mode 120000
index 0000000000..1440573f32
--- /dev/null
+++ b/Lang/Uiua/Largest-int-from-concatenated-ints
@@ -0,0 +1 @@
+../../Task/Largest-int-from-concatenated-ints/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Least-common-multiple b/Lang/Uiua/Least-common-multiple
new file mode 120000
index 0000000000..83973eef06
--- /dev/null
+++ b/Lang/Uiua/Least-common-multiple
@@ -0,0 +1 @@
+../../Task/Least-common-multiple/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Levenshtein-distance b/Lang/Uiua/Levenshtein-distance
new file mode 120000
index 0000000000..2d4dd26520
--- /dev/null
+++ b/Lang/Uiua/Levenshtein-distance
@@ -0,0 +1 @@
+../../Task/Levenshtein-distance/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/List-comprehensions b/Lang/Uiua/List-comprehensions
new file mode 120000
index 0000000000..bf7b708e56
--- /dev/null
+++ b/Lang/Uiua/List-comprehensions
@@ -0,0 +1 @@
+../../Task/List-comprehensions/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Look-and-say-sequence b/Lang/Uiua/Look-and-say-sequence
new file mode 120000
index 0000000000..f3d748e2f9
--- /dev/null
+++ b/Lang/Uiua/Look-and-say-sequence
@@ -0,0 +1 @@
+../../Task/Look-and-say-sequence/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Loop-over-multiple-arrays-simultaneously b/Lang/Uiua/Loop-over-multiple-arrays-simultaneously
new file mode 120000
index 0000000000..59937c5207
--- /dev/null
+++ b/Lang/Uiua/Loop-over-multiple-arrays-simultaneously
@@ -0,0 +1 @@
+../../Task/Loop-over-multiple-arrays-simultaneously/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Luhn-test-of-credit-card-numbers b/Lang/Uiua/Luhn-test-of-credit-card-numbers
new file mode 120000
index 0000000000..6eae093c92
--- /dev/null
+++ b/Lang/Uiua/Luhn-test-of-credit-card-numbers
@@ -0,0 +1 @@
+../../Task/Luhn-test-of-credit-card-numbers/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Mandelbrot-set b/Lang/Uiua/Mandelbrot-set
new file mode 120000
index 0000000000..da1b6d50fa
--- /dev/null
+++ b/Lang/Uiua/Mandelbrot-set
@@ -0,0 +1 @@
+../../Task/Mandelbrot-set/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Matrix-multiplication b/Lang/Uiua/Matrix-multiplication
new file mode 120000
index 0000000000..8ecd583efc
--- /dev/null
+++ b/Lang/Uiua/Matrix-multiplication
@@ -0,0 +1 @@
+../../Task/Matrix-multiplication/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Maze-solving b/Lang/Uiua/Maze-solving
new file mode 120000
index 0000000000..02af57731f
--- /dev/null
+++ b/Lang/Uiua/Maze-solving
@@ -0,0 +1 @@
+../../Task/Maze-solving/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/McNuggets-problem b/Lang/Uiua/McNuggets-problem
new file mode 120000
index 0000000000..93b54a1053
--- /dev/null
+++ b/Lang/Uiua/McNuggets-problem
@@ -0,0 +1 @@
+../../Task/McNuggets-problem/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Middle-three-digits b/Lang/Uiua/Middle-three-digits
new file mode 120000
index 0000000000..5c8f171c17
--- /dev/null
+++ b/Lang/Uiua/Middle-three-digits
@@ -0,0 +1 @@
+../../Task/Middle-three-digits/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Motzkin-numbers b/Lang/Uiua/Motzkin-numbers
new file mode 120000
index 0000000000..bef04d5aa9
--- /dev/null
+++ b/Lang/Uiua/Motzkin-numbers
@@ -0,0 +1 @@
+../../Task/Motzkin-numbers/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/N-queens-problem b/Lang/Uiua/N-queens-problem
new file mode 120000
index 0000000000..d8b56e5e2a
--- /dev/null
+++ b/Lang/Uiua/N-queens-problem
@@ -0,0 +1 @@
+../../Task/N-queens-problem/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Numbers-which-are-not-the-sum-of-distinct-squares b/Lang/Uiua/Numbers-which-are-not-the-sum-of-distinct-squares
new file mode 120000
index 0000000000..fd1772b308
--- /dev/null
+++ b/Lang/Uiua/Numbers-which-are-not-the-sum-of-distinct-squares
@@ -0,0 +1 @@
+../../Task/Numbers-which-are-not-the-sum-of-distinct-squares/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/One-dimensional-cellular-automata b/Lang/Uiua/One-dimensional-cellular-automata
new file mode 120000
index 0000000000..5df7e9b84a
--- /dev/null
+++ b/Lang/Uiua/One-dimensional-cellular-automata
@@ -0,0 +1 @@
+../../Task/One-dimensional-cellular-automata/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Ordered-words b/Lang/Uiua/Ordered-words
new file mode 120000
index 0000000000..7046edd964
--- /dev/null
+++ b/Lang/Uiua/Ordered-words
@@ -0,0 +1 @@
+../../Task/Ordered-words/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Permutations b/Lang/Uiua/Permutations
new file mode 120000
index 0000000000..850f4f7144
--- /dev/null
+++ b/Lang/Uiua/Permutations
@@ -0,0 +1 @@
+../../Task/Permutations/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Pick-random-element b/Lang/Uiua/Pick-random-element
new file mode 120000
index 0000000000..e85c1a21e1
--- /dev/null
+++ b/Lang/Uiua/Pick-random-element
@@ -0,0 +1 @@
+../../Task/Pick-random-element/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/RPG-attributes-generator b/Lang/Uiua/RPG-attributes-generator
new file mode 120000
index 0000000000..96e8262b6d
--- /dev/null
+++ b/Lang/Uiua/RPG-attributes-generator
@@ -0,0 +1 @@
+../../Task/RPG-attributes-generator/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Random-numbers b/Lang/Uiua/Random-numbers
new file mode 120000
index 0000000000..bc115ba91a
--- /dev/null
+++ b/Lang/Uiua/Random-numbers
@@ -0,0 +1 @@
+../../Task/Random-numbers/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Run-length-encoding b/Lang/Uiua/Run-length-encoding
new file mode 120000
index 0000000000..b6eee5ca86
--- /dev/null
+++ b/Lang/Uiua/Run-length-encoding
@@ -0,0 +1 @@
+../../Task/Run-length-encoding/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Smith-numbers b/Lang/Uiua/Smith-numbers
new file mode 120000
index 0000000000..3e4afb53bf
--- /dev/null
+++ b/Lang/Uiua/Smith-numbers
@@ -0,0 +1 @@
+../../Task/Smith-numbers/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Solve-a-Hidato-puzzle b/Lang/Uiua/Solve-a-Hidato-puzzle
new file mode 120000
index 0000000000..961a795fe0
--- /dev/null
+++ b/Lang/Uiua/Solve-a-Hidato-puzzle
@@ -0,0 +1 @@
+../../Task/Solve-a-Hidato-puzzle/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Solve-a-Numbrix-puzzle b/Lang/Uiua/Solve-a-Numbrix-puzzle
new file mode 120000
index 0000000000..d5e755e9d5
--- /dev/null
+++ b/Lang/Uiua/Solve-a-Numbrix-puzzle
@@ -0,0 +1 @@
+../../Task/Solve-a-Numbrix-puzzle/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Sort-disjoint-sublist b/Lang/Uiua/Sort-disjoint-sublist
new file mode 120000
index 0000000000..247b8fbb37
--- /dev/null
+++ b/Lang/Uiua/Sort-disjoint-sublist
@@ -0,0 +1 @@
+../../Task/Sort-disjoint-sublist/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Split-a-character-string-based-on-change-of-character b/Lang/Uiua/Split-a-character-string-based-on-change-of-character
new file mode 120000
index 0000000000..61d4dd8555
--- /dev/null
+++ b/Lang/Uiua/Split-a-character-string-based-on-change-of-character
@@ -0,0 +1 @@
+../../Task/Split-a-character-string-based-on-change-of-character/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Square-free-integers b/Lang/Uiua/Square-free-integers
new file mode 120000
index 0000000000..7a649e9779
--- /dev/null
+++ b/Lang/Uiua/Square-free-integers
@@ -0,0 +1 @@
+../../Task/Square-free-integers/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Stem-and-leaf-plot b/Lang/Uiua/Stem-and-leaf-plot
new file mode 120000
index 0000000000..cfafe7201a
--- /dev/null
+++ b/Lang/Uiua/Stem-and-leaf-plot
@@ -0,0 +1 @@
+../../Task/Stem-and-leaf-plot/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/String-case b/Lang/Uiua/String-case
new file mode 120000
index 0000000000..4362c13413
--- /dev/null
+++ b/Lang/Uiua/String-case
@@ -0,0 +1 @@
+../../Task/String-case/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/String-concatenation b/Lang/Uiua/String-concatenation
new file mode 120000
index 0000000000..cd5c2325bd
--- /dev/null
+++ b/Lang/Uiua/String-concatenation
@@ -0,0 +1 @@
+../../Task/String-concatenation/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/String-interpolation-included- b/Lang/Uiua/String-interpolation-included-
new file mode 120000
index 0000000000..e880f170b4
--- /dev/null
+++ b/Lang/Uiua/String-interpolation-included-
@@ -0,0 +1 @@
+../../Task/String-interpolation-included-/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/String-matching b/Lang/Uiua/String-matching
new file mode 120000
index 0000000000..d45ce27782
--- /dev/null
+++ b/Lang/Uiua/String-matching
@@ -0,0 +1 @@
+../../Task/String-matching/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Strip-a-set-of-characters-from-a-string b/Lang/Uiua/Strip-a-set-of-characters-from-a-string
new file mode 120000
index 0000000000..951d176969
--- /dev/null
+++ b/Lang/Uiua/Strip-a-set-of-characters-from-a-string
@@ -0,0 +1 @@
+../../Task/Strip-a-set-of-characters-from-a-string/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Sudoku b/Lang/Uiua/Sudoku
new file mode 120000
index 0000000000..be7e18a94a
--- /dev/null
+++ b/Lang/Uiua/Sudoku
@@ -0,0 +1 @@
+../../Task/Sudoku/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Sum-multiples-of-3-and-5 b/Lang/Uiua/Sum-multiples-of-3-and-5
new file mode 120000
index 0000000000..1949126562
--- /dev/null
+++ b/Lang/Uiua/Sum-multiples-of-3-and-5
@@ -0,0 +1 @@
+../../Task/Sum-multiples-of-3-and-5/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Summarize-primes b/Lang/Uiua/Summarize-primes
new file mode 120000
index 0000000000..4ad940883d
--- /dev/null
+++ b/Lang/Uiua/Summarize-primes
@@ -0,0 +1 @@
+../../Task/Summarize-primes/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Test-a-function b/Lang/Uiua/Test-a-function
new file mode 120000
index 0000000000..4e61b05504
--- /dev/null
+++ b/Lang/Uiua/Test-a-function
@@ -0,0 +1 @@
+../../Task/Test-a-function/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Truncatable-primes b/Lang/Uiua/Truncatable-primes
new file mode 120000
index 0000000000..b02bf04462
--- /dev/null
+++ b/Lang/Uiua/Truncatable-primes
@@ -0,0 +1 @@
+../../Task/Truncatable-primes/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Validate-International-Securities-Identification-Number b/Lang/Uiua/Validate-International-Securities-Identification-Number
new file mode 120000
index 0000000000..6d28391590
--- /dev/null
+++ b/Lang/Uiua/Validate-International-Securities-Identification-Number
@@ -0,0 +1 @@
+../../Task/Validate-International-Securities-Identification-Number/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Water-collected-between-towers b/Lang/Uiua/Water-collected-between-towers
new file mode 120000
index 0000000000..cfd5fa722a
--- /dev/null
+++ b/Lang/Uiua/Water-collected-between-towers
@@ -0,0 +1 @@
+../../Task/Water-collected-between-towers/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Yellowstone-sequence b/Lang/Uiua/Yellowstone-sequence
new file mode 120000
index 0000000000..0bae4da70f
--- /dev/null
+++ b/Lang/Uiua/Yellowstone-sequence
@@ -0,0 +1 @@
+../../Task/Yellowstone-sequence/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Zebra-puzzle b/Lang/Uiua/Zebra-puzzle
new file mode 120000
index 0000000000..cd343323b4
--- /dev/null
+++ b/Lang/Uiua/Zebra-puzzle
@@ -0,0 +1 @@
+../../Task/Zebra-puzzle/Uiua
\ No newline at end of file
diff --git a/Lang/Uxntal/Quine b/Lang/Uxntal/Quine
new file mode 120000
index 0000000000..9f3a4ca4d4
--- /dev/null
+++ b/Lang/Uxntal/Quine
@@ -0,0 +1 @@
+../../Task/Quine/Uxntal
\ No newline at end of file
diff --git a/Lang/Uxntal/Weird-numbers b/Lang/Uxntal/Weird-numbers
new file mode 120000
index 0000000000..1bddac81d2
--- /dev/null
+++ b/Lang/Uxntal/Weird-numbers
@@ -0,0 +1 @@
+../../Task/Weird-numbers/Uxntal
\ No newline at end of file
diff --git a/Lang/Vim-Script/Hello-world-Graphical b/Lang/Vim-Script/Hello-world-Graphical
new file mode 120000
index 0000000000..799696cc16
--- /dev/null
+++ b/Lang/Vim-Script/Hello-world-Graphical
@@ -0,0 +1 @@
+../../Task/Hello-world-Graphical/Vim-Script
\ No newline at end of file
diff --git a/Lang/Vim-Script/Here-document b/Lang/Vim-Script/Here-document
new file mode 120000
index 0000000000..4f2967d090
--- /dev/null
+++ b/Lang/Vim-Script/Here-document
@@ -0,0 +1 @@
+../../Task/Here-document/Vim-Script
\ No newline at end of file
diff --git a/Lang/Vim-Script/Loop-over-multiple-arrays-simultaneously b/Lang/Vim-Script/Loop-over-multiple-arrays-simultaneously
new file mode 120000
index 0000000000..3e8729e53b
--- /dev/null
+++ b/Lang/Vim-Script/Loop-over-multiple-arrays-simultaneously
@@ -0,0 +1 @@
+../../Task/Loop-over-multiple-arrays-simultaneously/Vim-Script
\ No newline at end of file
diff --git a/Lang/Vim-Script/Loops-For b/Lang/Vim-Script/Loops-For
new file mode 120000
index 0000000000..427dcdb8bf
--- /dev/null
+++ b/Lang/Vim-Script/Loops-For
@@ -0,0 +1 @@
+../../Task/Loops-For/Vim-Script
\ No newline at end of file
diff --git a/Lang/Vim-Script/XML-Input b/Lang/Vim-Script/XML-Input
new file mode 120000
index 0000000000..57be30dc70
--- /dev/null
+++ b/Lang/Vim-Script/XML-Input
@@ -0,0 +1 @@
+../../Task/XML-Input/Vim-Script
\ No newline at end of file
diff --git a/Lang/Wren/00-LANG.txt b/Lang/Wren/00-LANG.txt
index 1dbc2e611b..ea9fd010ee 100644
--- a/Lang/Wren/00-LANG.txt
+++ b/Lang/Wren/00-LANG.txt
@@ -15,7 +15,7 @@ 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].
-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:
+As a language mainly designed for embedding, Wren's standard library is (of necessity) quite small and I ([[User:PureFox|PureFox]]) 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"
! No. !! Module name !! !! No. !! Module name
diff --git a/Lang/XBasic/Euler-method b/Lang/XBasic/Euler-method
new file mode 120000
index 0000000000..546ca521e8
--- /dev/null
+++ b/Lang/XBasic/Euler-method
@@ -0,0 +1 @@
+../../Task/Euler-method/XBasic
\ No newline at end of file
diff --git a/Lang/XBasic/M-bius-function b/Lang/XBasic/M-bius-function
new file mode 120000
index 0000000000..09886c7873
--- /dev/null
+++ b/Lang/XBasic/M-bius-function
@@ -0,0 +1 @@
+../../Task/M-bius-function/XBasic
\ No newline at end of file
diff --git a/Lang/XBasic/Nim-game b/Lang/XBasic/Nim-game
new file mode 120000
index 0000000000..49a494ab0c
--- /dev/null
+++ b/Lang/XBasic/Nim-game
@@ -0,0 +1 @@
+../../Task/Nim-game/XBasic
\ No newline at end of file
diff --git a/Lang/XBasic/Sorting-algorithms-Quicksort b/Lang/XBasic/Sorting-algorithms-Quicksort
new file mode 120000
index 0000000000..baefc61c90
--- /dev/null
+++ b/Lang/XBasic/Sorting-algorithms-Quicksort
@@ -0,0 +1 @@
+../../Task/Sorting-algorithms-Quicksort/XBasic
\ No newline at end of file
diff --git a/Lang/XPL0/Draw-a-clock b/Lang/XPL0/Draw-a-clock
new file mode 120000
index 0000000000..7d1040eda3
--- /dev/null
+++ b/Lang/XPL0/Draw-a-clock
@@ -0,0 +1 @@
+../../Task/Draw-a-clock/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Poker-hand-analyser b/Lang/XPL0/Poker-hand-analyser
new file mode 120000
index 0000000000..5fc0329088
--- /dev/null
+++ b/Lang/XPL0/Poker-hand-analyser
@@ -0,0 +1 @@
+../../Task/Poker-hand-analyser/XPL0
\ No newline at end of file
diff --git a/Lang/YAMLScript/00-LANG.txt b/Lang/YAMLScript/00-LANG.txt
index 1ead096361..eae1577f6a 100644
--- a/Lang/YAMLScript/00-LANG.txt
+++ b/Lang/YAMLScript/00-LANG.txt
@@ -7,6 +7,7 @@
'''[https://yamlscript.org 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 [https://github.com/yaml/yamlscript/releases ys] and is also available in several programming languages as a binding module to the [https://github.com/yaml/yamlscript/releases libyamlscript.so] shared library:
* [https://clojars.org/org.yamlscript/clj-yamlscript Clojure]
+* [https://github.com/yaml/yamlscript-go Go]
* [https://clojars.org/org.yamlscript/yamlscript Java]
* [https://www.npmjs.com/package/@yaml/yamlscript NodeJS]
* [https://metacpan.org/pod/YAMLScript Perl]
@@ -19,7 +20,7 @@
Run this command to install the ys command line YAMLScript runner/loader/compiler program.
- curl -sSL yamlscript.org/install | bash
+ curl -s https://yamlscript.org/install | bash
That will install $HOME/.local/bin/ys. If $HOME/.local/bin is not in your PATH, run:
diff --git a/Lang/Yabasic/Display-a-linear-combination b/Lang/Yabasic/Display-a-linear-combination
new file mode 120000
index 0000000000..3089327b6e
--- /dev/null
+++ b/Lang/Yabasic/Display-a-linear-combination
@@ -0,0 +1 @@
+../../Task/Display-a-linear-combination/Yabasic
\ No newline at end of file
diff --git a/Lang/Yabasic/Kronecker-product b/Lang/Yabasic/Kronecker-product
new file mode 120000
index 0000000000..64e2f55421
--- /dev/null
+++ b/Lang/Yabasic/Kronecker-product
@@ -0,0 +1 @@
+../../Task/Kronecker-product/Yabasic
\ No newline at end of file
diff --git a/Lang/Yabasic/Multiple-regression b/Lang/Yabasic/Multiple-regression
new file mode 120000
index 0000000000..047c89f1aa
--- /dev/null
+++ b/Lang/Yabasic/Multiple-regression
@@ -0,0 +1 @@
+../../Task/Multiple-regression/Yabasic
\ No newline at end of file
diff --git a/Lang/Yabasic/Nested-templated-data b/Lang/Yabasic/Nested-templated-data
new file mode 120000
index 0000000000..026a122d79
--- /dev/null
+++ b/Lang/Yabasic/Nested-templated-data
@@ -0,0 +1 @@
+../../Task/Nested-templated-data/Yabasic
\ No newline at end of file
diff --git a/Lang/Yabasic/Sexy-primes b/Lang/Yabasic/Sexy-primes
new file mode 120000
index 0000000000..a3fa026246
--- /dev/null
+++ b/Lang/Yabasic/Sexy-primes
@@ -0,0 +1 @@
+../../Task/Sexy-primes/Yabasic
\ No newline at end of file
diff --git a/Lang/Yabasic/Sorting-algorithms-Counting-sort b/Lang/Yabasic/Sorting-algorithms-Counting-sort
new file mode 120000
index 0000000000..c5fee45d6b
--- /dev/null
+++ b/Lang/Yabasic/Sorting-algorithms-Counting-sort
@@ -0,0 +1 @@
+../../Task/Sorting-algorithms-Counting-sort/Yabasic
\ No newline at end of file
diff --git a/Lang/Yabasic/Sorting-algorithms-Stooge-sort b/Lang/Yabasic/Sorting-algorithms-Stooge-sort
new file mode 120000
index 0000000000..920cab2b30
--- /dev/null
+++ b/Lang/Yabasic/Sorting-algorithms-Stooge-sort
@@ -0,0 +1 @@
+../../Task/Sorting-algorithms-Stooge-sort/Yabasic
\ No newline at end of file
diff --git a/Lang/Zig/15-puzzle-game b/Lang/Zig/15-puzzle-game
new file mode 120000
index 0000000000..67842297fa
--- /dev/null
+++ b/Lang/Zig/15-puzzle-game
@@ -0,0 +1 @@
+../../Task/15-puzzle-game/Zig
\ No newline at end of file
diff --git a/Lang/Zig/9-billion-names-of-God-the-integer b/Lang/Zig/9-billion-names-of-God-the-integer
new file mode 120000
index 0000000000..891e6336a6
--- /dev/null
+++ b/Lang/Zig/9-billion-names-of-God-the-integer
@@ -0,0 +1 @@
+../../Task/9-billion-names-of-God-the-integer/Zig
\ No newline at end of file
diff --git a/Lang/Zig/A+B b/Lang/Zig/A+B
new file mode 120000
index 0000000000..99c5298cb2
--- /dev/null
+++ b/Lang/Zig/A+B
@@ -0,0 +1 @@
+../../Task/A+B/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Determine-if-a-string-is-numeric b/Lang/Zig/Determine-if-a-string-is-numeric
new file mode 120000
index 0000000000..1317ba1b29
--- /dev/null
+++ b/Lang/Zig/Determine-if-a-string-is-numeric
@@ -0,0 +1 @@
+../../Task/Determine-if-a-string-is-numeric/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Egyptian-division b/Lang/Zig/Egyptian-division
new file mode 120000
index 0000000000..fbc8453acb
--- /dev/null
+++ b/Lang/Zig/Egyptian-division
@@ -0,0 +1 @@
+../../Task/Egyptian-division/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Integer-sequence b/Lang/Zig/Integer-sequence
new file mode 120000
index 0000000000..43f4f97f8b
--- /dev/null
+++ b/Lang/Zig/Integer-sequence
@@ -0,0 +1 @@
+../../Task/Integer-sequence/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Monty-Hall-problem b/Lang/Zig/Monty-Hall-problem
new file mode 120000
index 0000000000..5c32ef8986
--- /dev/null
+++ b/Lang/Zig/Monty-Hall-problem
@@ -0,0 +1 @@
+../../Task/Monty-Hall-problem/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Solve-the-no-connection-puzzle b/Lang/Zig/Solve-the-no-connection-puzzle
new file mode 120000
index 0000000000..4b3367c677
--- /dev/null
+++ b/Lang/Zig/Solve-the-no-connection-puzzle
@@ -0,0 +1 @@
+../../Task/Solve-the-no-connection-puzzle/Zig
\ No newline at end of file
diff --git a/Task/100-doors/APL/100-doors-2.apl b/Task/100-doors/APL/100-doors-2.apl
index ba6d739dae..bff8982b24 100644
--- a/Task/100-doors/APL/100-doors-2.apl
+++ b/Task/100-doors/APL/100-doors-2.apl
@@ -1,3 +1 @@
-⍝⍝ Also works with GNU APL after introduction of
-⍝⍝ the ⍸ function with SVN r1368, Dec 03 2020
-⍸≠⌿0=(⍳100)∘.|⍳100
+≠⌿0=(⍳100)∘.|⍳100
diff --git a/Task/100-doors/APL/100-doors-3.apl b/Task/100-doors/APL/100-doors-3.apl
new file mode 100644
index 0000000000..5fcad5e104
--- /dev/null
+++ b/Task/100-doors/APL/100-doors-3.apl
@@ -0,0 +1 @@
+⍸≠⌿0=(⍳100)∘.|⍳100
diff --git a/Task/100-doors/Langur/100-doors-1.langur b/Task/100-doors/Langur/100-doors-1.langur
index 48e130366a..caac5fccf7 100644
--- a/Task/100-doors/Langur/100-doors-1.langur
+++ b/Task/100-doors/Langur/100-doors-1.langur
@@ -1,9 +1,9 @@
-var .doors = [false] * 100
+var doors = [false] * 100
-for .i of .doors {
- for .j = .i; .j <= len(.doors); .j += .i {
- .doors[.j] = not .doors[.j]
+for i of doors {
+ for j = i; j <= len(doors); j += i {
+ doors[j] = not doors[j]
}
}
-writeln for[=[]] .i of .doors { if(.doors[.i]: _for ~= [.i]) }
+writeln for[=[]] i of doors { if doors[i]: _for = more(_for, i) }
diff --git a/Task/100-doors/Langur/100-doors-2.langur b/Task/100-doors/Langur/100-doors-2.langur
index f120dd60c3..f0f96dadfb 100644
--- a/Task/100-doors/Langur/100-doors-2.langur
+++ b/Task/100-doors/Langur/100-doors-2.langur
@@ -1 +1 @@
-writeln foldfrom(fn(.a, .b, .c) if(.b: .a~[.c]; .a), [], .doors, series 1..len .doors)
+writeln foldfrom(fn a, b, c: if(b: a~[c]; a), [], doors, series(1..len(doors)))
diff --git a/Task/100-doors/Langur/100-doors-3.langur b/Task/100-doors/Langur/100-doors-3.langur
index d1c575957b..67108b6065 100644
--- a/Task/100-doors/Langur/100-doors-3.langur
+++ b/Task/100-doors/Langur/100-doors-3.langur
@@ -1 +1 @@
-writeln map fn{^2}, 1..10
+writeln map(fn{^2}, 1..10)
diff --git a/Task/100-doors/Oberon/100-doors.oberon b/Task/100-doors/Oberon/100-doors.oberon
deleted file mode 100644
index ddec2b2de8..0000000000
--- a/Task/100-doors/Oberon/100-doors.oberon
+++ /dev/null
@@ -1,27 +0,0 @@
-MODULE Doors;
- IMPORT Out;
-
- PROCEDURE Do*; (* In Oberon an asterisk after an identifier is an export mark *)
- CONST N = 100; len = N + 1;
- VAR i, j: INTEGER;
- closed: ARRAY len OF BOOLEAN; (* Arrays in Oberon always start with index 0; closed[0] is not used *)
- BEGIN
- FOR i := 1 TO N DO closed[i] := TRUE END;
- FOR i := 1 TO N DO
- j := 1;
- WHILE j < len DO
- IF j MOD i = 0 THEN closed[j] := ~closed[j] END; INC(j) (* ~ = NOT *)
- END
- END;
- (* Print a state diagram of all doors *)
- FOR i := 1 TO N DO
- IF (i - 1) MOD 10 = 0 THEN Out.Ln END;
- IF closed[i] THEN Out.String("- ") ELSE Out.String("+ ") END
- END; Out.Ln;
- (* Print the numbers of the open doors *)
- FOR i := 1 TO N DO
- IF ~closed[i] THEN Out.Int(i, 0); Out.Char(" ") END
- END; Out.Ln
- END Do;
-
-END Doors.
diff --git a/Task/100-doors/V-(Vlang)/100-doors-2.v b/Task/100-doors/V-(Vlang)/100-doors-2.v
index 6ec392d9a6..35ff929ac5 100644
--- a/Task/100-doors/V-(Vlang)/100-doors-2.v
+++ b/Task/100-doors/V-(Vlang)/100-doors-2.v
@@ -11,11 +11,10 @@ fn main(){
doors[current - 1] = true
increment++
door_nbr += 2 * increment + 1
- }
+ print('O')
+ } else {
+ print('=')
+ }
}
- doors.map( fn( it bool) bool { // graphically represent opened doors
- print( if it {( 'O')} else {('=')} )
- return it
- })
println('')
}
diff --git a/Task/100-doors/V-(Vlang)/100-doors-3.v b/Task/100-doors/V-(Vlang)/100-doors-3.v
new file mode 100644
index 0000000000..bce04b6c59
--- /dev/null
+++ b/Task/100-doors/V-(Vlang)/100-doors-3.v
@@ -0,0 +1,5 @@
+fn main() {
+ for i in 1..11 {
+ print ( " Door ${i*i} is open.\n" )
+ }
+}
diff --git a/Task/100-prisoners/Ecstasy/100-prisoners.ecstasy b/Task/100-prisoners/Ecstasy/100-prisoners.ecstasy
new file mode 100644
index 0000000000..9f66539ddd
--- /dev/null
+++ b/Task/100-prisoners/Ecstasy/100-prisoners.ecstasy
@@ -0,0 +1,49 @@
+module OneHundredPrisoners {
+ @Inject Console console;
+
+ void run() {
+ console.print($"# of executions: {attempts}");
+ console.print($"Optimal play success rate: {simulate(tryOpt)}%");
+ console.print($" Random play success rate: {simulate(tryRnd)}%");
+ }
+
+ Int attempts = 10000;
+
+ Dec simulate(function Boolean(Int[]) allFoundNumber) {
+ Int[] drawers = new Int[100](i->i);
+ Int pardoned = 0;
+ for (Int i : 1..attempts) {
+ if (allFoundNumber(drawers.shuffled())) {
+ ++pardoned;
+ }
+ }
+ return (pardoned * 1000000 / attempts).toDec() / 10000;
+ }
+
+ Boolean tryRnd(Int[] drawers) {
+ Inmates: for (Int inmate : 0..<100) {
+ Int[] choices = drawers.shuffled();
+ for (Int attempt : 0..<50) {
+ if (drawers[choices[attempt]] == inmate) {
+ continue Inmates;
+ }
+ }
+ return False;
+ }
+ return True;
+ }
+
+ Boolean tryOpt(Int[] drawers) {
+ Inmates: for (Int inmate : 0..<100) {
+ Int choice = inmate;
+ for (Int attempt : 0..<50) {
+ if (drawers[choice] == inmate) {
+ continue Inmates;
+ }
+ choice = drawers[choice];
+ }
+ return False;
+ }
+ return True;
+ }
+}
diff --git a/Task/100-prisoners/True-BASIC/100-prisoners.basic b/Task/100-prisoners/True-BASIC/100-prisoners.basic
new file mode 100644
index 0000000000..eacc0cac4a
--- /dev/null
+++ b/Task/100-prisoners/True-BASIC/100-prisoners.basic
@@ -0,0 +1,40 @@
+FUNCTION trials(prisoners, iterations, optimal)
+ DIM drawers(100)
+ FOR i = 1 TO prisoners
+ LET drawers(i) = i
+ NEXT i
+ FOR i = 1 TO iterations
+ FOR k = 1 TO prisoners
+ LET x = RND+1
+ LET p = drawers(x)
+ LET drawers(x) = drawers(k)
+ LET drawers(k) = p
+ NEXT k
+ FOR prisoner = 1 TO prisoners
+ LET found = false
+ IF optimal<>0 THEN LET drawer = prisoner ELSE LET drawer = RND+1
+ FOR j = 1 TO prisoners/2
+ LET drawer = drawers(drawer)
+ IF drawer = prisoner THEN
+ LET found = true
+ EXIT FOR
+ END IF
+ IF (NOT optimal<>0) THEN LET drawer = RND+1
+ NEXT j
+ IF (NOT found<>0) THEN EXIT FOR
+ NEXT prisoner
+ LET pardoned = pardoned+found
+ NEXT i
+ LET trials = (100*pardoned/iterations)
+END FUNCTION
+
+LET false = 0
+LET true = 1
+LET iterations = 10000
+PRINT "Simulation count: "; iterations
+FOR prisoners = 10 TO 100 STEP 90
+ LET randon = trials(prisoners,iterations,false)
+ LET optimal = trials(prisoners,iterations,true)
+ PRINT "Prisoners: "; prisoners; ", random: "; randon; ", optimal: "; optimal
+NEXT prisoners
+END
diff --git a/Task/15-puzzle-game/PascalABC.NET/15-puzzle-game.pas b/Task/15-puzzle-game/PascalABC.NET/15-puzzle-game.pas
new file mode 100644
index 0000000000..2d5275fb8f
--- /dev/null
+++ b/Task/15-puzzle-game/PascalABC.NET/15-puzzle-game.pas
@@ -0,0 +1,178 @@
+// Игра в 15 PABCWork.NET\Samples\Games\15.pas
+uses GraphABC,ABCObjects,ABCButtons;
+
+const
+/// размер поля
+ n = 4;
+/// размер фишки
+ sz = 100;
+/// зазор между фишками
+ zz = 10;
+/// отступ от левого и правого краев
+ x0 = 20;
+/// отступ от верхнего и нижнего краев
+ y0 = 20;
+
+var
+ p: array [1..n,1..n] of SquareABC;
+ digits: array [1..n*n-1] of integer;
+
+ MeshButton: ButtonABC;
+ StatusRect: RectangleABC;
+
+ EmptyCellX,EmptyCellY: integer;
+ MovesCount: integer;
+ EndOfGame: boolean; // True если все фишки стоят на своих местах
+
+// Поменять местами две фишки
+procedure Swap(var p,p1: SquareABC);
+begin
+ PABCSystem.Swap(p,p1);
+ var i := p.Left;
+ p.Left := p1.Left;
+ p1.Left := i;
+ i := p.Top;
+ p.Top := p1.Top;
+ p1.Top := i;
+end;
+
+// Определить, являются ли клетки соседями
+function Neighbours(x1,y1,x2,y2: integer): boolean;
+begin
+ Result := (Abs(x1-x2)=1) and (y1=y2) or (Abs(y1-y2)=1) and (x1=x2)
+end;
+
+// Заполнить вспомогательный массив цифр
+procedure FillDigitsArr;
+begin
+ for var i:=1 to n*n-1 do
+ digits[i] := i;
+end;
+
+// Перемешать вспомогательный массив цифр. Количество обменов должно быть четным
+procedure MixDigitsArr;
+var x: integer;
+begin
+ for var i:=1 to n*n-1 do
+ begin
+ repeat
+ x := Random(15)+1;
+ until x<>i;
+ Swap(digits[i],digits[x]);
+ end;
+ if n mod 2=0 then
+ Swap(digits[1],digits[2]); // количество обменов должно быть четным
+end;
+
+// Заполнить двумерный массив фишек. Вместо пустой ячейки - белая фишка с числом 0
+procedure Fill15ByDigitsArr;
+begin
+ Swap(p[EmptyCellY,EmptyCellX],p[n,n]); // Переместить пустую фишку в правый нижний угол
+ EmptyCellX := n;
+ EmptyCellY := n;
+ var i := 1;
+ for var y:=1 to n do
+ for var x:=1 to n do
+ begin
+ if x*y=n*n then exit;
+ p[y,x].Number := digits[i];
+ i += 1;
+ end;
+end;
+
+// Перемешать массив фишек
+procedure Mix15;
+begin
+ MixDigitsArr;
+ Fill15ByDigitsArr;
+ MovesCount := 0;
+ EndOfGame := False;
+ StatusRect.Text := 'Количество ходов: '+IntToStr(MovesCount);
+ StatusRect.Color := RGB(200,200,255);
+end;
+
+// Создать массив фишек
+procedure Create15;
+begin
+ EmptyCellX := n;
+ EmptyCellY := n;
+ for var x:=1 to n do
+ for var y:=1 to n do
+ begin
+ p[y,x] := new SquareABC(x0+(x-1)*(sz+zz),y0+(y-1)*(sz+zz),sz,clMoneyGreen);
+ p[y,x].BorderColor := clGreen;
+ p[y,x].BorderWidth := 2;
+ p[y,x].TextScale := 0.7;
+ end;
+ p[EmptyCellY,EmptyCellX].Color := clWhite;
+ p[EmptyCellY,EmptyCellX].BorderColor := clWhite;
+ FillDigitsArr;
+ MixDigitsArr;
+ Fill15ByDigitsArr;
+end;
+
+// Проверить, все ли фишки стоят на своих местах
+function IsSolution: boolean;
+begin
+ Result:=True;
+ var i:=1;
+ for var y:=1 to n do
+ for var x:=1 to n do
+ begin
+ if p[y,x].Number<>i then
+ begin
+ Result:=False;
+ break;
+ end;
+ i += 1;
+ if i=n*n then i:=0;
+ end;
+end;
+
+procedure MouseDown(x,y,mb: integer);
+begin
+ if EndOfGame then // Если все фишки на своих местах, то не реагировать на мышь и ждать нажатия кнопки "Перемешать"
+ exit;
+ if ObjectUnderPoint(x,y)=nil then // Eсли мы щелкнули не на объекте, то не реагировать на мышь
+ exit;
+ var fx := (x-x0) div (sz+zz) + 1; // Вычислить координаты на доске для ячейки, на которой мы щелкнули мышью
+ var fy := (y-y0) div (sz+zz) + 1;
+ if (fx>n) or (fy>n) then
+ exit;
+ if Neighbours(fx,fy,EmptyCellX,EmptyCellY) then // Если ячейка соседствует с пустой, то поменять их местами
+ begin
+ Swap(p[EmptyCellY,EmptyCellX],p[fy,fx]);
+ EmptyCellX := fx;
+ EmptyCellY := fy;
+ Inc(MovesCount);
+ StatusRect.Text := 'Количество ходов: ' + MovesCount;
+ if IsSolution then
+ begin
+ StatusRect.Text := 'Победа! Сделано ходов: ' + MovesCount;
+ StatusRect.Color := RGB(255,200,200);
+ EndOfGame := True;
+ end
+ end;
+end;
+
+begin
+ SetSmoothingOff;
+ Window.Title := 'Игра в 15';
+ Window.IsFixedSize := True;
+ SetWindowSize(2*x0+(sz+zz)*n-zz,2*y0+(sz+zz)*n-zz+90);
+
+ EndOfGame := False;
+ Create15;
+
+ MeshButton := ButtonABC.Create((WindowWidth-200) div 2,2*y0+(sz+zz)*n-zz,200,'Перемешать',clLightGray);
+ MeshButton.OnClick := Mix15;
+ StatusRect := new RectangleABC(0,WindowHeight-40,WindowWidth,40,RGB(200,200,255));
+ StatusRect.TextVisible := True;
+ StatusRect.Text := 'Количество ходов: '+IntToStr(MovesCount);
+ StatusRect.BorderWidth := 2;
+ StatusRect.BorderColor := RGB(80,80,255);
+
+ MovesCount := 0;
+
+ OnMouseDown := MouseDown;
+end.
diff --git a/Task/15-puzzle-game/Zig/15-puzzle-game.zig b/Task/15-puzzle-game/Zig/15-puzzle-game.zig
new file mode 100644
index 0000000000..11d3ca114f
--- /dev/null
+++ b/Task/15-puzzle-game/Zig/15-puzzle-game.zig
@@ -0,0 +1,91 @@
+const std = @import("std");
+const stdout = std.io.getStdOut().writer();
+
+const tokens = [16][]const u8{ " 1", " 2", " 3", " 4", " 5", " 6", " 7", " 8", " 9", "10", "11", "12", "13", "14", "15", " " };
+
+const empty_token = 15;
+var empty: u8 = empty_token;
+var cells: [16]u8 = undefined;
+var invalid: bool = false;
+
+const Move = enum { no, up, down, left, right };
+
+fn showBoard() !void {
+ try stdout.writeAll("\n");
+
+ var solved = true;
+ var i: u8 = 0;
+ while (i < 16) : (i += 1) {
+ try stdout.print(" {s} ", .{tokens[cells[i]]});
+ if ((i + 1) % 4 == 0) try stdout.writeAll("\n");
+ if (i != cells[i]) solved = false;
+ }
+
+ try stdout.writeAll("\n");
+
+ if (solved) {
+ try stdout.writeAll("\n\n** You did it! **\n\n");
+ std.posix.exit(0);
+ }
+}
+
+fn updateToken(move: Move) !void {
+ const newEmpty = switch (move) {
+ Move.up => if (empty / 4 < 3) empty + 4 else empty,
+ Move.down => if (empty / 4 > 0) empty - 4 else empty,
+ Move.left => if (empty % 4 < 3) empty + 1 else empty,
+ Move.right => if (empty % 4 > 0) empty - 1 else empty,
+ else => empty,
+ };
+
+ if (empty == newEmpty) {
+ invalid = true;
+ } else {
+ invalid = false;
+ cells[empty] = cells[newEmpty];
+ cells[newEmpty] = empty_token;
+ empty = newEmpty;
+ }
+}
+
+fn waitForMove() !Move {
+ const reader = std.io.getStdIn().reader();
+ if (invalid) try stdout.writeAll("(invalid) ");
+ try stdout.writeAll("enter u/d/l/r or q: ");
+ const input = try reader.readBytesNoEof(2);
+ switch (std.ascii.toLower(input[0])) {
+ 'q' => std.posix.exit(0),
+ 'u' => return Move.up,
+ 'd' => return Move.down,
+ 'l' => return Move.left,
+ 'r' => return Move.right,
+ else => return Move.no,
+ }
+}
+
+fn shuffle(moves: u8) !void {
+ var random = std.rand.DefaultPrng.init(@intCast(std.time.microTimestamp()));
+ const rand = random.random();
+ var n: u8 = 0;
+ while (n < moves) {
+ const move: Move = rand.enumValue(Move);
+ try updateToken(move);
+ if (!invalid) n += 1;
+ }
+ invalid = false;
+}
+
+pub fn main() !void {
+ var n: u8 = 0;
+ while (n < 16) : (n += 1) {
+ cells[n] = n;
+ }
+
+ try shuffle(50);
+ try showBoard();
+
+ while (true) {
+ try updateToken(try waitForMove());
+ try showBoard();
+ }
+}
diff --git a/Task/15-puzzle-solver/Dart/15-puzzle-solver.dart b/Task/15-puzzle-solver/Dart/15-puzzle-solver.dart
new file mode 100644
index 0000000000..27546c8101
--- /dev/null
+++ b/Task/15-puzzle-solver/Dart/15-puzzle-solver.dart
@@ -0,0 +1,78 @@
+import 'package:collection/collection.dart';
+
+typedef OffsetFunction = int Function(int a, int b);
+Function eq = const ListEquality().equals;
+
+/// Solve Random 15 Puzzles
+class FifteenSolver {
+ static const target = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0];
+ static const trN = [3, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3];
+ static const tcN = [3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2];
+ var pos0 = List.filled(100, 0);
+ var moves = List.filled(100, 0);
+ var dirs = List.filled(100, '');
+ int step = 0, best = 0;
+ var board = List.generate(100, (int i) => List.filled(16, 0));
+
+ bool isFinished() {
+ if (moves[step] < best) return nextMove();
+ if (eq(board[step], target)) {
+ print("Solution found in $step moves :${dirs.join('')}");
+ return true;
+ }
+ return (moves[step] == best) ? nextMove() : false;
+ }
+
+ var passNumber = 0;
+
+ /// Try all valid moves from here, but don't retrace your steps.
+ /// Return true if a solution is found.
+ bool nextMove() {
+ // if (passNumber++ ~/ 100000 == 0) print("${dirs.join('')}");
+ return (dirs[step] != 'u' && pos0[step] ~/ 4 < 3 && down()) ||
+ (dirs[step] != 'd' && pos0[step] ~/ 4 > 0 && up()) ||
+ (dirs[step] != 'l' && pos0[step] % 4 < 3 && right()) ||
+ (dirs[step] != 'r' && pos0[step] % 4 > 0 && left()) ||
+ false;
+ }
+
+ bool move(int offset, String dir, List rcArray, OffsetFunction rcFunc) {
+ final int ix = pos0[step] + offset;
+ final n = board[step][ix];
+ pos0[step + 1] = pos0[step] + offset;
+ board[step + 1] = board[step].toList()
+ ..[pos0[step]] = n
+ ..[ix] = 0;
+ dirs[step + 1] = dir;
+ moves[step + 1] = moves[step] + rcFunc(rcArray[n], pos0[step]);
+ step++;
+ if (isFinished()) return true;
+ step--;
+ return false;
+ }
+
+ bool right() => move(1, 'r', tcN, (a, b) => (a <= b % 4 ? 0 : 1));
+ bool left() => move(-1, 'l', tcN, (a, b) => (a >= b % 4 ? 0 : 1));
+ bool down() => move(4, 'd', trN, (a, b) => (a <= b ~/ 4 ? 0 : 1));
+ bool up() => move(-4, 'u', trN, (a, b) => (a >= b ~/ 4 ? 0 : 1));
+
+ void solve(List initBoard) {
+ pos0[0] = initBoard.indexOf(0);
+ board[0] = initBoard;
+ while (!isFinished()) best++;
+ }
+}
+
+void main(List args) {
+ print("running");
+ // test values
+ // final start = [5, 1, 2, 3, 6, 10, 7, 4, 13, 9, 11, 8, 14, 0, 15, 12];
+ // final start = [9, 1, 2, 4, 13, 6, 5, 7, 3, 11, 14, 15, 10, 0, 8, 12];
+ // final start = [10, 3, 1, 4, 13, 5, 8, 7, 9, 6, 0, 11, 14, 15, 12, 2];
+ // required solution
+ final start = [15, 14, 1, 6, 9, 11, 4, 12, 0, 10, 7, 3, 13, 8, 5, 2];
+ // Extra credit
+ // final start = [0, 12, 9, 13, 15, 11, 10, 14, 3, 7, 2, 5, 4, 8, 6, 1];
+ print(start);
+ FifteenSolver().solve(start);
+}
diff --git a/Task/15-puzzle-solver/Uiua/15-puzzle-solver.uiua b/Task/15-puzzle-solver/Uiua/15-puzzle-solver.uiua
new file mode 100644
index 0000000000..b557fe56b6
--- /dev/null
+++ b/Task/15-puzzle-solver/Uiua/15-puzzle-solver.uiua
@@ -0,0 +1,47 @@
+# Solve a 15 puzzle https://rosettacode.org/wiki/15_puzzle_solver#Uiua
+# Experimental!
+T ← ↯4_4 ↻1⇡16
+# Return shuffled copy of the input.
+Shuffle ← ⊏⊸(⍏[⍥⚂]⧻)
+# Positions of the numbers (not 0)
+Pos ← ≡(⊢⊚⌕)↘1⇡16¤
+
+# Applying a very gentle weighting to certain cells massively
+# speeds up the algorithm
+Weights ← [[2 1 1 2] [2 1 1 2] [2 1 1 2] [2 1 1 1]]
+Distance ← /+×⊡:Weights:≡/+⌵-⊙.∩Pos
+Heuristic ← Distance T
+
+# Four possible neighbours
+Nfour ← [[1 0] [¯1 0] [0 1] [0 ¯1]]
+# Actual neighbours at a point.
+ValidN ← ≡(⊂)⊙¤:⟜(▽⊸(≥0≡/↧)▽⊸(<4≡/↥)+Nfour)¤
+# Precalculate them.
+ValidNs ← ⊞(□ ValidN⊟)⇡4 ⇡4
+
+# Get the valid (from to) moves from this cell.
+Moves ← °□⊡:ValidNs⊢⊚⌕0
+# Swap the values at the indexes [0 1] [a b 2 3] -> [b a 2 3]
+Swap ← ⍜(⊡|∘◌) ⊃(⇌⊙∘|⊡)
+# List the possible next positions for a position
+Next ← ⊙◌≡(Swap ⊙.)⊙¤⊸Moves
+Solve ← (
+ &p"Running..."&p.
+ ⍜nowastar(Next|Heuristic|≍T)
+ &p$"_ seconds"
+ # Track the movement of the 0 between adjacent steps.
+ ≡(/-)◫2◇≡(⊢⊚⌕0)⇌⊢
+ # Map each to a direction string and join.
+ /⊂⇌≡⍣("d" °¯1_0|"u" °1_0|"r" °0_¯1|"l" °0_1|∘)
+)
+
+# Uncomment one of the following lines to try random grids
+# ⍥(Swap⊡⊸(⌊×⚂⧻)⊸Moves)90 T
+# [[2 14 6 4] [5 1 3 8] [9 10 7 11] [13 0 15 12]] # Simple 40 shuffles
+# [[5 1 2 3] [6 10 7 4] [13 9 11 8] [14 0 15 12]] # Simple 12 steps
+# [[9 1 2 4] [13 6 5 7] [3 11 14 15] [10 0 8 12]] # 34 steps
+# [[10 3 1 4] [13 5 8 7] [9 6 0 11] [14 15 12 2]] # 38 steps (a few seconds)
+[[15 14 1 6] [9 11 4 12] [0 10 7 3] [13 8 5 2]] # Main Challenge
+# [[0 12 9 13] [15 11 10 14] [3 7 2 5] [4 8 6 1]] # Extra Credit
+
+Solve
diff --git a/Task/2048/Jq/2048.jq b/Task/2048/Jq/2048.jq
new file mode 100644
index 0000000000..367500faf2
--- /dev/null
+++ b/Task/2048/Jq/2048.jq
@@ -0,0 +1,127 @@
+include "MRG32k3a" {search: "."}; # see comment above
+
+### Generic functions
+
+def lpad($len): tostring | ($len - length) as $l | (" " * $l) + .;
+
+# Create an m x n matrix with initial values specified by .
+def matrix($m; $n):
+ if $m == 0 then []
+ else . as $init
+ | if $m == 1 then [range(0;$n) | $init]
+ elif $m > 0 then
+ matrix(1; $n) as $row
+ | [range(0; $m) | $row ]
+ else error("matrix\($m);\($n)) invalid")
+ end
+ end;
+
+
+### The 2048 Game
+# Left-squish the input array in accordance with the game requirements for a single row
+def squish:
+ def squish($n):
+ def s:
+ if length == 0 then [range(0;$n)|null]
+ elif .[0] == null then .[1:] | s
+ elif length == 1 then . + [range(0; $n - 1)|null]
+ elif .[0] == .[1] then [.[0] + .[1]] + (.[2:]|squish($n-1))
+ else .[0:1] + (.[1:]|squish($n-1))
+ end;
+ s;
+ squish(length);
+
+# Input: a matrix of rows
+def squish_left:
+ [.[] | squish];
+
+def squish_right:
+ [.[] | reverse | squish | reverse];
+
+def squish_up:
+ transpose
+ | [.[] | squish]
+ | transpose;
+
+def squish_down:
+ transpose
+ | [.[] | reverse | squish | reverse]
+ | transpose;
+
+# Gather the [i,j] co-ordinates of all the null values in the input matrix
+def gather:
+ if length == 0 then error end
+ | (.[0] | length) as $cols
+ | [range(0;length) as $i
+ | range(0; $cols) as $j
+ | select(.[$i][$j] == null) | [$i,$j]]
+ | if length == 0 then error end ;
+
+# Input: {matrix}
+# Add a random 2 or 4 if possible, else error
+# Output: includes .prng for the PRN generator
+def add_random:
+ (.matrix | gather) as $gather
+ | ($gather | length) as $n
+ | if $n == 0 then error end
+ | if .prng == null then .prng = seed(now | tostring | sub("^.*[.]";"") | tonumber) end
+ | .prng |= nextFloat
+ | $gather[.prng.nextFloat * $n | trunc] as [$i,$j]
+ | .prng |= nextFloat
+ | (if (.prng.nextFloat) < 0.1 then 4 else 2 end) as $exmachina
+ | .matrix[$i][$j] = $exmachina ;
+
+def prompt: "[ijkl] or [wasd] or q to quit or n to restart:";
+
+def direction:
+ {"i": "up", "j": "left", "k": "down", "l": "right",
+ "w": "up", "a": "left", "s": "down", "d": "right",
+ "q": "quit",
+ "n": "restart"
+ };
+
+# Recognize $goal as the goal
+def play($goal):
+
+ # Pretty print
+ def pp:
+ .matrix[] | map(. // "." | lpad(4)) | join(" ");
+
+ def won:
+ any(.matrix[][]; . == $goal);
+
+ def lost:
+ .matrix
+ | (squish_left == .) and (squish_right == .) and
+ (squish_up == .) and (squish_down == .);
+
+ def round:
+ pp,
+ if lost then "Sorry! Better luck next time.", play($goal)
+ else prompt,
+ ( (try input catch halt) as $in
+ | .matrix as $matrix # for checking if a move is legal
+ | .emit = null
+ | direction[$in | ascii_downcase] as $direction
+ | if $direction == "up" then .matrix |= squish_up
+ elif $direction == "down" then .matrix |= squish_down
+ elif $direction == "left" then .matrix |= squish_left
+ elif $direction == "right" then .matrix |= squish_right
+ elif $direction == "quit" then .emit = "bye"
+ elif $direction == "restart" then .emit = "restart"
+ else .emit = "unknown direction \($direction) ... please try again."
+ end
+ | if .emit == "bye" then .emit, halt
+ elif .emit == "restart" then "Restarting...", play($goal)
+ elif .emit != null then .emit, round
+ elif .matrix == $matrix then "Disallowed direction! Please try again.", round
+ elif won then pp, "Congratulations!", play($goal)
+ else add_random | round
+ end)
+ end;
+
+ { matrix: (null | matrix(4;4))}
+ | .matrix[2] = [null,2,2,2]
+ | round;
+
+play(2048)
diff --git a/Task/2048/Wren/2048.wren b/Task/2048/Wren/2048.wren
index ddff0c113d..b92bc4948d 100644
--- a/Task/2048/Wren/2048.wren
+++ b/Task/2048/Wren/2048.wren
@@ -20,13 +20,6 @@ class G2048 {
for (j in 0..3) _board[i][j] = Tile.new(0, false)
}
_rand = Random.new()
- initializeBoard()
- }
-
- initializeBoard() {
- for (y in 0..3) {
- for (x in 0..3) _board[x][y] = Tile.new(0, false)
- }
}
loop() {
diff --git a/Task/24-game/Frink/24-game.frink b/Task/24-game/Frink/24-game.frink
new file mode 100644
index 0000000000..a7a123bc86
--- /dev/null
+++ b/Task/24-game/Frink/24-game.frink
@@ -0,0 +1,15 @@
+ops = ["+", "-", "*", "/"]
+
+chosen = new array[[4], {|x| random[1,9]}]
+println[chosen]
+
+for d = chosen.lexicographicPermute[]
+ multifor o = [ops, ops, ops]
+ {
+ str = "((" + d@0 + o@0 + d@1 + ")" + o@1 + d@2 + ")" + o@2 + d@3
+ if eval[str] == 24
+ println[str]
+ str = "(" + d@0 + o@0 + d@1 + ")" + o@1 + "(" + d@2 + + o@2 + d@3 + ")"
+ if eval[str] == 24
+ println[str]
+ }
diff --git a/Task/24-game/FutureBasic/24-game.basic b/Task/24-game/FutureBasic/24-game.basic
new file mode 100644
index 0000000000..68da1c6faa
--- /dev/null
+++ b/Task/24-game/FutureBasic/24-game.basic
@@ -0,0 +1,310 @@
+include resources "24 Game Icon.icns"
+
+#build CompilerOptions @"-Wno-unused-variable"
+
+_mEdit = 2
+editmenu _mEdit
+
+begin globals
+long gPosition
+end globals
+
+void local fn EraseErrorText
+
+ CGRect r
+ r = fn CGRectMake(10, 200, 400, 15)
+ rect fill r,fn ColorBlack
+
+end fn
+
+local fn ArcRandom( a as long, b as long ) as long
+ long i
+ cln i = (arc4random()%(b-a+1))+a;
+end fn = fn floor(i)
+
+local fn GetRandomNumbers as CFStringRef
+
+ // 96 number groups
+
+ CFArrayRef combos = @[¬
+
+ // The first 32 are easy
+ @"1 2 3 4", @"2 4 6 8", @"1 2 4 8", @"1 3 4 6", @"1 2 6 8",
+ @"2 3 4 8", @"1 3 6 9", @"1 2 7 8", @"2 3 6 8", @"1 4 6 8",
+ @"2 2 3 9", @"3 4 6 6", @"2 3 3 8", @"1 5 6 6", @"2 4 4 6",
+ @"1 3 8 8", @"2 2 6 9", @"3 3 6 9", @"1 2 5 9", @"2 4 5 5",
+ @"1 3 5 9", @"2 2 4 9", @"1 2 3 6", @"1 2 2 9", @"1 2 3 9",
+ @"1 2 4 6", @"1 2 4 4", @"1 2 2 6", @"1 3 3 6", @"1 1 4 6",
+ @"1 1 2 8", @"1 1 3 8",
+ // The middle 32 are medium
+ @"1 5 5 9", @"4 4 6 9", @"2 3 7 9",@"3 5 8 8", @"1 6 6 8",
+ @"3 3 5 6", @"1 4 5 8", @"3 3 6 7",@"2 5 5 8", @"4 4 7 9",
+ @"1 5 6 9", @"3 3 8 9", @"2 6 6 7",@"4 5 7 8", @"2 2 5 9",
+ @"2 4 6 7", @"1 5 6 8", @"3 4 7 7",@"2 5 6 6", @"3 4 5 9",
+ @"1 6 7 9", @"2 3 7 8", @"1 4 6 9",@"2 3 5 9", @"3 4 4 8",
+ @"2 5 8 9", @"1 4 8 9", @"3 3 4 9",@"2 6 7 9", @"1 3 5 7",
+ @"1 3 6 6", @"2 2 5 7",
+ // The last 32 are hard
+ @"1 5 7 9",@"3 4 7 9", @"2 5 7 8", @"3 4 8 9", @"3 4 5 8",
+ @"2 6 6 9",@"4 4 5 7", @"2 4 6 9", @"1 4 7 7", @"2 3 8 9",
+ @"2 3 4 7",@"3 3 4 8", @"1 3 7 9", @"2 4 5 9", @"1 3 6 8",
+ @"2 4 4 9",@"1 5 8 9", @"3 3 5 9", @"2 6 8 9", @"1 4 4 7",
+ @"2 3 6 7",@"1 3 5 8", @"2 4 7 8", @"1 3 4 7", @"2 3 5 6",
+ @"1 4 5 6",@"3 3 5 7", @"2 2 3 6", @"3 3 7 7", @"3 3 7 9",
+ @"4 4 8 9",@"2 4 8 9"]
+
+ long i = fn ArcRandom( 0, len(combos) - 1 )
+ gPosition = i
+
+end fn = combos[i]
+
+
+local fn EvaluateMath( equation as CFStringRef ) as CFStringRef
+ equation = fn StringByReplacingOccurrencesOfString( lcase(equation), @"x", @"*" )
+
+ CFStringRef result = NULL
+ RegularExpressionRef regex = fn RegularExpressionWithPattern( @"[0-9.]+", NSRegularExpressionCaseInsensitive, NULL )
+ CFArrayRef matches = fn RegularExpressionMatches( regex, equation, 0, fn CFRangeMake( 0, len(equation) ) )
+ NSInteger intConversions = 0
+ TextCheckingResultRef match
+ CFRange originalRange
+ CFRange adjustedRange
+ CFStringRef value
+
+ for match in matches
+ originalRange = fn TextCheckingResultRange( match )
+ adjustedRange = fn CFRangeMake( ( originalRange.location + ( intConversions * len( @".0") ) ), originalRange.length )
+ value = fn StringSubstringWithRange( equation, adjustedRange )
+ if fn StringContainsString( value, @"." )
+ continue
+ else
+ equation = fn StringByReplacingCharactersInRange( equation, adjustedRange, fn StringWithFormat( @"%@.0", value ) )
+ intConversions++
+ end if
+ next
+ ExceptionRef e
+ try
+ ExpressionRef expression = fn ExpressionWithFormat( equation )
+ CFNumberRef number = fn ExpressionValueWithObject( expression, NULL, NULL )
+ result = fn StringWithFormat( @"%.3f", dblval( number ) )
+ end try
+
+ catch (e)
+ result = fn StringWithFormat( @"%@", e ) : exit fn
+ end catch
+ // Test if result is an integer and, if so, return result as an integer
+ if( fn StringDoubleValue( result ) == fn floorf( fn StringDoubleValue( result ) ) )
+ result = fn ArrayFirstObject( fn StringComponentsSeparatedByString( result, @"." ) )
+ end if
+end fn = result
+
+
+local fn QuitOrPlayAlert(GameResult as CFStringRef)
+ alert -2,,GameResult,@"You won!",@"Quit;Play Again"
+ AlertButtonSetKeyEquivalent( 2, 2, @"\e" )
+ short result
+ result = alert 2
+ if ( result != NSAlertSecondButtonReturn ) then appterminate
+end fn
+
+
+local fn BuildWindow
+ CGRect r = fn CGRectMake( 0, 0, 580, 250)
+ window 1, @"24 Game", r
+ windowcenter(1)
+ WindowSetBackgroundColor(1,fn ColorBlack)
+
+end fn
+
+///////// Start //////////
+
+fn BuildWindow
+
+
+short d(4), i
+CFStringRef CheckForDuplicates(97)
+for i = 1 to 96
+ CheckForDuplicates(i) = @""
+next i
+
+short DuplicatesCounter
+DuplicatesCounter = 0
+
+
+"Main"
+
+cls
+text ,,fn colorWhite
+
+print
+print %(10,15),"Given four numbers and using just the +, -, *, and / operators; and the"
+print %(10,30),"possible use of parenthesis (), enter an expression that equates to 24."
+print %(10,45),"You must use all your numbers and only those numbers."
+print %(10,60),"Examples: 9618 Solution 9 + 6 + 1 + 8 or 3173 Solution (3 * 7) - (1 - 4)"
+print
+print %(10,85),"Enter Q to quit or S to skip to the next number."
+
+"GetFourNumbers"
+
+CFArrayRef randomNumbers : randomNumbers= fn StringComponentsSeparatedByString( fn GetRandomNumbers, @" " )
+CFStringRef RandomNumberblock : RandomNumberblock = @""
+CFStringRef RandomNumberblockAdd : RandomNumberblockAdd = @""
+
+for i = 0 to 3
+ // create a string from the 4 numbers
+ RandomNumberblockAdd = randomNumbers[i]
+ RandomNumberblock = fn StringByAppendingString(RandomNumberblock,RandomNumberblockAdd)
+ RandomNumberblock = fn StringByAppendingString(RandomNumberblock,@" ")
+next i
+
+
+if DuplicatesCounter = > 96
+ // reset counter when last number is retrieved and start from the first number block
+ DuplicatesCounter = 0
+ for i = 1 to 96
+ CheckForDuplicates(i) = @""
+ next i
+end if
+
+for i = 1 to 96
+ // check the current numbers with the numbers already used
+ if fn StringIsEqual(RandomNumberblock,CheckForDuplicates(i))
+ RandomNumberblock = fn StringWithString(CheckForDuplicates(DuplicatesCounter))
+ goto "GetFourNumbers"
+ end if
+next i
+
+DuplicatesCounter ++
+CheckForDuplicates(DuplicatesCounter) = fn StringWithString(RandomNumberblock)
+
+d(1) = fn StringIntegerValue( randomNumbers[0] )
+d(2) = fn StringIntegerValue( randomNumbers[1] )
+d(3) = fn StringIntegerValue( randomNumbers[2] )
+d(4) = fn StringIntegerValue( randomNumbers[3] )
+
+short dots = 0
+
+//d(1) = 9:d(2) = 6:d(3) = 1:d(4) = 8 // Uncomment to test with 9618 numbers. Solution 9 + 6 + 1 + 8
+//d(1) = 6:d(2) = 5:d(3) = 3:d(4) = 8 // Uncomment to test with 6538 numbers. Solution 6 / ( 5 - 3 ) * 8
+//d(1) = 3:d(2) = 1:d(3) = 7:d(4) = 3 // Uncomment to test with 3773 numbers. Solution ((3 * 1) * 7) + 3
+//d(1) = 4:d(2) = 2:d(3) = 7:d(4) = 1 // Uncomment to test with 4271 numbers. Solution (4 * ( 7 - 2 + 1 )
+// NOTE: When using these test numbers, also uncomment dots = 0 below here to prevent misleading dot displays
+
+
+if gPosition <= 32 then dots = 1
+if gPosition > 32 and gPosition < 65 then dots = 2
+if gPosition > 64 then dots = 3
+
+//dots = 0 uncomment when testing the numbers above to prevent misleading dot displays
+
+print
+text ,,fn colorGreen
+print %(15,110),"These are your numbers, difficulty level ";
+// @"\U000026AA" is white unicode dot - Easy difficulty (One-Dot)
+// @"\U0001F534" is red unicode dot - Medium difficulty (Two-Dots)
+// @"\U0001F7E1" is yellow unicode dot - Hard difficulty (Three-Dots)
+
+if dots = 1 then print @"\U000026AA Easy"
+if dots = 2 then print @"\U0001F534 \U0001F534 Medium"
+if dots = 3 then print @"\U0001F7E1 \U0001F7E1 \U0001F7E1 Hard"
+
+print %(55,125)
+text ,18,fn colorGreen
+for i = 1 to 4
+ print d(i); " ";
+next
+
+print
+
+text ,12,fn colorWhite
+printf @"\n\n\n"
+
+CFStringRef expr
+bool TryAgain : TryAgain = _false
+CFStringRef MessageText
+CFStringRef UserInput = NULL
+
+"InputExpression"
+
+if TryAgain
+ MessageText = fn StringWithFormat( @"Enter math expression: [ '%@' was incorrect ]", expr )
+ UserInput = input %(10, 190), MessageText, @"123456789+-*/()qs", YES,, 0
+else
+ UserInput = input %(10, 190), @"Enter math expression:", @"123456789+-*/()qs", YES,, 0
+end if
+
+if ( UserInput == NULL ) then "InputExpression"
+expr = UserInput
+if expr = @"" then "InputExpression"
+if fn StringIsEqual(ucase(expr) , @"Q") then appterminate
+if fn StringIsEqual(ucase(expr) , @"S") then "Main"
+
+
+//check expr for validity
+
+short j
+bool GotAllNumbers : GotAllNumbers = _false
+short ThisNumberPosition : ThisNumberPosition = 0
+short GotaNumber : GotaNumber = 0
+short TotalNumbers : TotalNumbers = 0
+
+short ExtraNumbers:ExtraNumbers = 0
+
+for i = 1 to len$(fn stringpascalstring(expr))
+ if asc(mid$(fn stringpascalstring(expr),i,1)) > 48 && asc(mid$(fn stringpascalstring(expr),i,1)) < 58
+ ExtraNumbers ++
+ end if
+next i
+
+if ExtraNumbers > 4
+ fn EraseErrorText
+ text ,,fn colorRed
+ TryAgain = _true
+ print %(10,200);"Error! Extra numbers not allowed": goto "InputExpression"
+ text ,,fn colorWhite
+end if
+
+
+for i = 1 to 4
+ GotaNumber = 0
+ for j = 0 to len(expr) -1
+ ThisNumberPosition = instr( j, expr, right(str( d(i)),1 ))
+ ThisNumberPosition ++
+ if ThisNumberPosition then GotaNumber = _true
+ next j
+ if GotaNumber then TotalNumbers ++
+next i
+
+if TotalNumbers => 4 then GotAllNumbers = _true
+
+if GotAllNumbers = _false
+ fn EraseErrorText
+ text ,,fn colorRed
+ TryAgain = _true
+ print %(10,200);"ERROR! Must use all your numbers and only those numbers." : goto "InputExpression"
+ text ,,fn colorWhite
+end if
+
+fn EraseErrorText
+
+
+if fn EvaluateMath( expr ) = _false
+ text ,,fn colorRed
+ TryAgain = _true
+ Print %(10,200);"Error! Incorrect math sequence."
+ goto "InputExpression"
+ text ,,fn colorWhite
+end if
+
+CFStringRef GameResult
+if fn StringIntegerValue( fn EvaluateMath( expr ) ) == 24 then GameResult = @"Correct" else GameResult = @"Incorrect"
+
+if GameResult = @"Incorrect"
+ TryAgain = _true
+ goto "InputExpression"
+end if
+
+fn QuitOrPlayAlert(GameResult)
+goto "Main"
+
+handleevents
diff --git a/Task/24-game/Jq/24-game.jq b/Task/24-game/Jq/24-game.jq
new file mode 100644
index 0000000000..09ce6dfc30
--- /dev/null
+++ b/Task/24-game/Jq/24-game.jq
@@ -0,0 +1,90 @@
+### The MRG32k3a combined recursive PRNG - see above
+import "MRG32k3a" as MRG {search: "."};
+
+### Generic utilities
+def sum(stream): reduce stream as $x (0; .+$x);
+
+# like while/2 but emit the final term rather than the first one
+def whilst(cond; update):
+ def _whilst:
+ if cond then update | (., _whilst) else empty end;
+ _whilst;
+
+### Reverse Polish Notation
+# An array of the allowed operators
+def operators: "+-*/" | split("");
+
+# If $a and $b are numbers and $c an operator, then "$a $b $c" is evaluated as an RPN expression.
+# Output: {emit, result} with .emit == null if there is a valid result.
+def applyOperator($a; $b; $c):
+ if ([$a,$b] | map(type) | unique) == ["number"]
+ then
+ if $c == "+" then {result: ($a + $b)}
+ elif $c == "-" then {result: ($a - $b)}
+ elif $c == "*" then {result: ($a * $b)}
+ elif ($c == "/") then {result: ($b / $a)}
+ else {emit: "unrecognized operator: \($c)"}
+ end
+ else {emit: "invalid number"}
+ end;
+
+# Input: an array representing an RPN expression.
+# Output: {emit, result} as per applyOperator/3
+# Example: [1,2,3,"+","+"] | evaluate #=> 6
+def evaluate:
+ if length == 1
+ then if .[0]|type == "number" then {result: .[0]}
+ else {emit: "invalid RPN expression"}
+ end
+ elif length < 3 then {emit: "invalid RPN expression: \(. | join(" "))"}
+ else . as $in
+ | (first( range(0; length) as $i | select(any( operators[]; . == $in[$i]) ) | $i) // null) as $ix
+ | if $ix == null then {emit: "invalid RPN expression"}
+ else applyOperator(.[$ix-2]; .[$ix-1]; .[$ix]) as $result
+ | if $result.result then .[:$ix-2] + [$result.result] + .[$ix+1:] | evaluate
+ else $result
+ end
+ end
+ end;
+
+### The "24 Game"
+
+# . is the putative RPN string to be checked.
+# $four is the string of the four expected digits, in order.
+# Output: {emit, result} with .emit set to "Correct!" if .result == 24
+def check($four):
+ if (gsub("[^1-9]";"") | explode | sort | implode) != $four
+ then {emit: "You must use each of the four digits \($four | split("") | join(" ")) exactly once:"}
+ else . as $in
+ | {s: [], emit: null}
+ | [$in | split("")[] | select(. != " ")
+ | . as $in | explode[0] | if . >= 48 and . <= 57 then . - 48 else $in end]
+ | evaluate
+ | if .result
+ then if .result|round == 24 then .emit = "Correct!"
+ else .emit = "Value \(.result) is not 24."
+ end
+ else .emit += "\nTry again, or enter . to start again, or q to quit."
+ end
+ end ;
+
+def run:
+ # Populate .digits with four non-negative digits selected at random, with replacement:
+ {digits: (9 | MRG::prn(4) | map(. + 1))}
+ | (.digits | sort | join("")) as $four
+ | "At the prompt, enter an RPN string (e.g. 64*1+1-), or . for a new set of four digits, or q to quit.",
+ "Make 24 using these digits, once each, in any order: \(.digits):",
+ ( whilst( .stop | not;
+ .emit = null
+ | . as $state
+ | try input catch halt
+ | if IN( "q", "quit") then halt
+ elif . == "." then $state | .stop = true
+ else check($four)
+ | if .result then .stop = true end
+ end )
+ | select(.emit).emit ),
+ # rerun
+ run;
+
+run
diff --git a/Task/4-rings-or-4-squares-puzzle/V-(Vlang)/4-rings-or-4-squares-puzzle.v b/Task/4-rings-or-4-squares-puzzle/V-(Vlang)/4-rings-or-4-squares-puzzle-1.v
similarity index 100%
rename from Task/4-rings-or-4-squares-puzzle/V-(Vlang)/4-rings-or-4-squares-puzzle.v
rename to Task/4-rings-or-4-squares-puzzle/V-(Vlang)/4-rings-or-4-squares-puzzle-1.v
diff --git a/Task/4-rings-or-4-squares-puzzle/V-(Vlang)/4-rings-or-4-squares-puzzle-2.v b/Task/4-rings-or-4-squares-puzzle/V-(Vlang)/4-rings-or-4-squares-puzzle-2.v
new file mode 100644
index 0000000000..f44447a8e6
--- /dev/null
+++ b/Task/4-rings-or-4-squares-puzzle/V-(Vlang)/4-rings-or-4-squares-puzzle-2.v
@@ -0,0 +1,38 @@
+import math.bits
+
+fn main ( ) {
+ mut n := 0
+ mut t := []u8{len:7}
+
+ n = solve ( 0, mut t, 1, 7, true )
+ println ( "$n unique solutions in 1 to 7" )
+ n = solve ( 0, mut t, 3, 9, true )
+ println("$n unique solutions in 3 to 9")
+ n = solve ( 0, mut t, 0, 9, false )
+ println("$n non-unique solutions in 0 to 9")
+}
+
+fn solve ( lvl u8, mut t []u8, low u8, high u8,unique bool ) int {
+ if lvl==7 {
+ return int(suma(t) && (!unique || isunique( t )))
+ }
+ mut cnt:=0
+ for v := low; v <= high; v++ {
+ t[lvl] = v
+ cnt += solve ( lvl + 1, mut t, low, high, unique )
+ }
+ return cnt
+}
+
+@[inline]
+fn isunique ( t []u8 ) bool {
+ return bits.ones_count_32(u32(1)<4} {d}\n", .{ num, r.getLast() });
+ }
+}
diff --git a/Task/9-billion-names-of-God-the-integer/Zig/9-billion-names-of-god-the-integer-2.zig b/Task/9-billion-names-of-God-the-integer/Zig/9-billion-names-of-god-the-integer-2.zig
new file mode 100644
index 0000000000..3b8f04f057
--- /dev/null
+++ b/Task/9-billion-names-of-God-the-integer/Zig/9-billion-names-of-god-the-integer-2.zig
@@ -0,0 +1,35 @@
+const std = @import("std");
+const print = std.debug.print;
+const bigint = std.math.big.int.Managed;
+const eql = std.mem.eql;
+const Array = std.ArrayList;
+const Array1 = Array(bigint);
+var gpa = std.heap.GeneralPurposeAllocator(.{}){};
+const allocator = gpa.allocator();
+
+fn calc ( n:usize, p:*Array1) !void {
+ for ( 1..n+1 ) |k| {
+ var d:i64 = @intCast(n);
+ d -= @intCast(k*(3*k - 1)/2);
+ inline for ( 0..2 ) |_| {
+ if ( d < 0 ) return;
+ if (k&1>0) try p.items[n].add ( &p.items[n], &p.items[@intCast(d)] )
+ else try p.items[n].sub ( &p.items[n], &p.items[@intCast(d)] );
+ d -= @intCast(k);
+ }
+ }
+}
+
+fn main() !void {
+ const s = [_]usize{ 23, 123, 1234, 12345, 123456 };
+ var p = Array1.init ( allocator );
+ try p.append ( try bigint.initSet ( allocator, 1 ) );
+ var i:usize=1;
+ for ( s )|m|{
+ while (i<=m):(i+=1){
+ try p.append( try bigint.init(allocator) );
+ try calc( i, &p );
+ }
+ print("P({d}) = {d}\n", .{m,p.items[m]} );
+ }
+}
diff --git a/Task/99-bottles-of-beer/8th/99-bottles-of-beer-1.8th b/Task/99-bottles-of-beer/8th/99-bottles-of-beer-1.8th
new file mode 100644
index 0000000000..f07c88a955
--- /dev/null
+++ b/Task/99-bottles-of-beer/8th/99-bottles-of-beer-1.8th
@@ -0,0 +1,26 @@
+\ 99 bottles of beer on the wall:
+[
+ "no more bottles" ,
+ "one bottle" ,
+ ( dup . " bottles" )
+] var, bottles
+
+: .bottles
+ dup 2 n:min bottles @ caseof ;
+
+: .beer
+ .bottles . " of beer" . ;
+
+: .wall
+ .beer " on the wall" . ;
+
+: .take
+ " Take one down and pass it around" . ;
+
+: beers
+ .wall ", " . .beer '; putc cr
+ n:1- 0 max .take ", " .
+ .wall '. putc cr drop ;
+
+' beers 1 99 loop-
+bye
diff --git a/Task/99-bottles-of-beer/8th/99-bottles-of-beer-2.8th b/Task/99-bottles-of-beer/8th/99-bottles-of-beer-2.8th
new file mode 100644
index 0000000000..f736dda979
--- /dev/null
+++ b/Task/99-bottles-of-beer/8th/99-bottles-of-beer-2.8th
@@ -0,0 +1,12 @@
+[
+ ( "Just one more bottle of beer on the wall, one bottle of beer.\n" . ) ,
+ ( I dup "%d bottles of beer on the wall, %d bottles of beer.\n" s:strfmt . )
+] constant lyrics
+
+: app:main
+ (
+ dup lyrics [2,99] rot ' n:cmp a:pigeon w:exec
+ n:1- "Take one down, pass it around, %d bottles of beer on the wall.\n\n" s:strfmt .
+ ) 1 99 loop-
+
+ "No more bottles of beer on the wall, no more bottles of beer.\n" . ;
diff --git a/Task/99-bottles-of-beer/8th/99-bottles-of-beer.8th b/Task/99-bottles-of-beer/8th/99-bottles-of-beer.8th
deleted file mode 100644
index fa816e4a36..0000000000
--- a/Task/99-bottles-of-beer/8th/99-bottles-of-beer.8th
+++ /dev/null
@@ -1,20 +0,0 @@
-\ 99 bottles of beer on the wall:
-: allout "no more bottles" ;
-: just-one "1 bottle" ;
-: yeah! dup . " bottles" ;
-
-[
- ' allout ,
- ' just-one ,
- ' yeah! ,
-] var, bottles
-
-: .bottles dup 2 n:min bottles @ swap caseof ;
-: .beer .bottles . " of beer" . ;
-: .wall .beer " on the wall" . ;
-: .take " Take one down and pass it around" . ;
-: beers .wall ", " . .beer '; putc cr
- n:1- 0 max .take ", " .
- .wall '. putc cr drop ;
-
-' beers 1 99 loop- bye
diff --git a/Task/99-bottles-of-beer/Oxygene/99-bottles-of-beer.oxy b/Task/99-bottles-of-beer/Oxygene/99-bottles-of-beer-1.oxy
similarity index 100%
rename from Task/99-bottles-of-beer/Oxygene/99-bottles-of-beer.oxy
rename to Task/99-bottles-of-beer/Oxygene/99-bottles-of-beer-1.oxy
diff --git a/Task/99-bottles-of-beer/Oxygene/99-bottles-of-beer-2.oxy b/Task/99-bottles-of-beer/Oxygene/99-bottles-of-beer-2.oxy
new file mode 100644
index 0000000000..5fc3a8fccb
--- /dev/null
+++ b/Task/99-bottles-of-beer/Oxygene/99-bottles-of-beer-2.oxy
@@ -0,0 +1,21 @@
+namespace _99_beers;
+
+method bottles(number: Integer): String;
+begin
+if (number = 1) then
+ Result := "bottle"
+ else
+ Result := "bottles";
+end;
+
+begin
+ for n: Integer := 99 downto 1 do
+ begin
+ writeLn($"{n} {bottles(n)} of beer on the wall,");
+ writeLn($"{n} {bottles(n)} of beer,");
+ writeLn($"Take one down, and pass it around,");
+ writeLn($"{n-1} {bottles(n-1)} of beer on the wall.");
+ writeLn();
+ end;
+ readLn;
+end.
diff --git a/Task/99-bottles-of-beer/PascalABC.NET/99-bottles-of-beer-1.pas b/Task/99-bottles-of-beer/PascalABC.NET/99-bottles-of-beer-1.pas
new file mode 100644
index 0000000000..f455395d06
--- /dev/null
+++ b/Task/99-bottles-of-beer/PascalABC.NET/99-bottles-of-beer-1.pas
@@ -0,0 +1,10 @@
+begin
+ for var i:=99 to 1 step -1 do
+ begin
+ Println(i,'bottles of beer on the wall');
+ Println(i,'bottles of beer');
+ Println('Take one down, pass it around');
+ Println(i-1,'bottles of beer on the wall');
+ Println
+ end;
+end.
diff --git a/Task/99-bottles-of-beer/PascalABC.NET/99-bottles-of-beer-2.pas b/Task/99-bottles-of-beer/PascalABC.NET/99-bottles-of-beer-2.pas
new file mode 100644
index 0000000000..3ce09c9fc9
--- /dev/null
+++ b/Task/99-bottles-of-beer/PascalABC.NET/99-bottles-of-beer-2.pas
@@ -0,0 +1,10 @@
+begin
+ for var i:=99 to 1 step -1 do
+ begin
+ writeLn($'{i} bottles of beer on the wall');
+ writeLn($'{i} bottles of beer');
+ writeLn($'Take one down, pass it around');
+ writeLn($'{i-1}bottles of beer on the wall');
+ writeLn
+ end;
+end.
diff --git a/Task/A+B/PascalABC.NET/a+b.pas b/Task/A+B/PascalABC.NET/a+b.pas
new file mode 100644
index 0000000000..ac390aa674
--- /dev/null
+++ b/Task/A+B/PascalABC.NET/a+b.pas
@@ -0,0 +1,3 @@
+##
+var (a,b) := ReadInteger2;
+Writeln(a + b);
diff --git a/Task/A+B/Zig/a+b.zig b/Task/A+B/Zig/a+b.zig
new file mode 100644
index 0000000000..fc0d17b9f6
--- /dev/null
+++ b/Task/A+B/Zig/a+b.zig
@@ -0,0 +1,25 @@
+const std = @import("std");
+const stdout = std.io.getStdOut().writer();
+
+const Input = enum { a, b };
+
+pub fn main() !void {
+ var buf: [1024]u8 = undefined;
+ const reader = std.io.getStdIn().reader();
+ const input = try reader.readUntilDelimiter(&buf, '\n');
+ const values = std.mem.trim(u8, input, "\x20");
+
+ var count: usize = 0;
+ var split: usize = 0;
+ for (values, 0..) |c, i| {
+ if (!std.ascii.isDigit(c)) {
+ count += 1;
+ if (count == 1) split = i;
+ }
+ }
+
+ const a = try std.fmt.parseInt(u64, values[0..split], 10);
+ const b = try std.fmt.parseInt(u64, values[split + count ..], 10);
+
+ try stdout.print("{d}\n", .{a + b});
+}
diff --git a/Task/ADFGVX-cipher/Uiua/adfgvx-cipher.uiua b/Task/ADFGVX-cipher/Uiua/adfgvx-cipher.uiua
new file mode 100644
index 0000000000..d163a20723
--- /dev/null
+++ b/Task/ADFGVX-cipher/Uiua/adfgvx-cipher.uiua
@@ -0,0 +1,11 @@
+A ← ↯∞_2⊞⊟."ADFGVX"
+P ← ⊏⍏[⍥⚂]⧻."ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
+K ← "PACKHORSE"
+Sw ← ⊜□≠" ".
+Polybius ← setinv(/⊂⊡≡(⊚⌕):⊙:¤P A|⊏:P≡(⊢⊚⌕)⊙¤∩≡□↯∞_2:A)
+SortByK ← setinv(⊏⍏⟜(⍉⬚" "↯⊟∞⧻)K|▽≠" "./⊂⍉⊏⍏⍏K)
+Str ← setinv(/$"_ _"Sw/⊂≡(⊂:" ")|≡(⊢°□◇⬚" "↯⊟∞)/↥≡◇⧻.Sw)
+Pt ← "ATTACKAT1200AM"
+&p $"Key = _\nPolybius:\n_\nPlaintext = _"K↯⊟.√⧻.P Pt
+&p$"Crypttext = _". Str SortByK Polybius Pt
+&p$"Plaintext = _" °Polybius °SortByK °Str
diff --git a/Task/ASCII-art-diagram-converter/FutureBasic/ascii-art-diagram-converter.basic b/Task/ASCII-art-diagram-converter/FutureBasic/ascii-art-diagram-converter.basic
new file mode 100644
index 0000000000..53358adc2d
--- /dev/null
+++ b/Task/ASCII-art-diagram-converter/FutureBasic/ascii-art-diagram-converter.basic
@@ -0,0 +1,93 @@
+// RosettaCode Editing ASCII Art Diagram Converter
+
+include "NSLog.incl"
+
+local fn HexToBinary( hexString as CFStringRef ) as CFStringRef
+ NSUInteger i
+ CFMutableStringRef binaryString = fn MutableStringNew
+ CFDictionaryRef hexToBinaryMap = @{
+ @"0": @"0000", @"1": @"0001", @"2": @"0010", @"3": @"0011",
+ @"4": @"0100", @"5": @"0101", @"6": @"0110", @"7": @"0111",
+ @"8": @"1000", @"9": @"1001", @"A": @"1010", @"B": @"1011",
+ @"C": @"1100", @"D": @"1101", @"E": @"1110", @"F": @"1111"}
+
+ for i = 0 to len(hexString) - 1
+ CFStringRef hexDigit = ucase( fn StringSubstringWithRange( hexString, fn CFRangeMake( i, 1 ) ) )
+ CFStringRef binaryDigit = ucase( hexToBinaryMap[hexDigit] )
+ if ( binaryDigit )
+ MutableStringAppendString( binaryString, binaryDigit )
+ end if
+ next
+end fn = binaryString
+
+local fn ParseASCIIArt
+ CFStringRef header = @"¬
+ +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+\n¬
+ | ID |\n¬
+ +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+\n¬
+ |QR| Opcode |AA|TC|RD|RA| Z | RCODE |\n¬
+ +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+\n¬
+ | QDCOUNT |\n¬
+ +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+\n¬
+ | ANCOUNT |\n¬
+ +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+\n¬
+ | NSCOUNT |\n¬
+ +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+\n¬
+ | ARCOUNT |\n¬
+ +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+"
+
+ NSInteger i = 0, tempBits
+ CFMutableArrayRef table = fn MutableArrayNew
+ RegularExpressionRef regex = fn RegularExpressionWithPattern( @"\\| *\\w+ *", 0, NULL )
+ CFArrayRef matches = fn RegularExpressionMatches( regex, header, 0, fn CFRangeMake( 0, len(header) ) )
+ TextCheckingResultRef match
+ CFDictionaryRef dict
+ CFStringRef tempName, binaryStr
+ CFRange tempRange
+
+ for match in matches
+ CFRange range = fn TextCheckingResultRange( match )
+ CFCharacterSetRef charSet = fn CharacterSetWithCharactersInString( @"| " )
+ CFStringRef name = fn StringByTrimmingCharactersInSet( fn StringSubstringWithRange( header, range ), charSet )
+ NSInteger bits = range.length / 3
+ ValueRef rangeVal = fn ValueWithRange( fn CFRangeMake( i, bits ) )
+ CFDictionaryRef item = @{@"name":name, @"bits":fn NumberWithInteger( bits ), @"range":rangeVal}
+ MutableArrayAddObject( table, item )
+ i += bits
+ next
+
+ NSLog( @"\nRFC 1035 message diagram header:\n%@\n", header )
+
+ CFStringRef hexStr = @"78477bbf5496e12e1bf169a4"
+ CFStringRef binStr = fn HexToBinary( @"78477bbf5496e12e1bf169a4" )
+
+ NSLog( @" Decoded:" )
+ NSLog( @" Name Bits Start End" )
+ NSLog( @" ======= ==== ===== ===" )
+
+ for dict in table
+ tempName = dict[@"name"]
+ tempBits = fn NumberIntegerValue( dict[@"bits"] )
+ tempRange = fn ValueRange( dict[@"range"] )
+ NSLog( @"%8s %5ld %6ld %4ld", fn StringUTF8String( tempName ), tempBits, tempRange.location, tempRange.location + tempRange.length - 1 )
+ next
+
+ NSLog( @"\n Test string in hex:\n %@\n", hexStr )
+ NSLog( @" Test string in binary:\n %@\n", binStr )
+
+ NSLog( @" Unpacked:" )
+ NSLog( @" Name Size Bit Pattern" )
+ NSLog( @" ======= ==== ================" )
+
+ for dict in table
+ tempName = dict[@"name"]
+ tempBits = fn NumberIntegerValue( dict[@"bits"] )
+ tempRange = fn ValueRange( dict[@"range"] )
+ binaryStr = fn StringSubstringWithRange( binStr, fn CFRangeMake( tempRange.location, tempBits ) )
+ NSLog( @"%8s %5ld %-7s", fn StringUTF8String( tempName ), tempBits, fn StringUTF8String( binaryStr ) )
+ next
+end fn
+
+fn ParseASCIIArt
+
+HandleEvents
diff --git a/Task/ASCII-art-diagram-converter/Uiua/ascii-art-diagram-converter.uiua b/Task/ASCII-art-diagram-converter/Uiua/ascii-art-diagram-converter.uiua
new file mode 100644
index 0000000000..ab69945cb9
--- /dev/null
+++ b/Task/ASCII-art-diagram-converter/Uiua/ascii-art-diagram-converter.uiua
@@ -0,0 +1,26 @@
+HtoB ← /⊂⋯⊗:"0123456789abcdef"
+Fields ← (
+ ⊜□≠@|./⊂▽⊸≡(¬∊@+)⊜∘≠@\n.
+ ⊃(≡(÷3+1◇⧻)|≡(□(◇▽⊸⍚≥@A)))
+)
+T ← $ +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ $ | ID |
+ $ +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ $ |QR| Opcode |AA|TC|RD|RA| Z | RCODE |
+ $ +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ $ | QDCOUNT |
+ $ +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ $ | ANCOUNT |
+ $ +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ $ | NSCOUNT |
+ $ +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ $ | ARCOUNT |
+ $ +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+
+◫2⊂0\+Fields T # Get field starts and ends.
+HtoB "78477bbf5496e12e1bf169a4"
+⍚⊏⊙¤≡(□↘⊙⇡°⊟), # Split the bits.
+≡⊂:≡⊂:⊙(≡(⊂:⊟⊙(-1)°⊟⟜/-)) # Arrange the table.
+&p$"Field\tBits\tStart\tEnd\tValue"
+&p$"-----\t----\t-----\t---\t-----"
+≡(&p$"_\t_\t_\t_\t_"⊃(⊡0|⊡1|⊡2|⊡3|⊡4))
diff --git a/Task/Abbreviations-automatic/Emacs-Lisp/abbreviations-automatic.l b/Task/Abbreviations-automatic/Emacs-Lisp/abbreviations-automatic.l
new file mode 100644
index 0000000000..8877dc684b
--- /dev/null
+++ b/Task/Abbreviations-automatic/Emacs-Lisp/abbreviations-automatic.l
@@ -0,0 +1,36 @@
+(defun abbreviate-list (list-of-days abbreviation-length)
+ "Take each element of LIST-OF-DAYS and abbreviate to ABBREVIATION-LENGTH."
+ (let ((abbrev-list)
+ (abbrev-element))
+ (dolist (one-element list-of-days) ; loop through each day of week
+;; if the day of week is at least as long as the abbreviation
+ (if (>= (length one-element) abbreviation-length) ; if day >= abbreviation length
+ (setq abbrev-element (substring one-element 0 abbreviation-length)) ; abbreviate the day of the week
+ (setq abbrev-element one-element)) ; otherwise don't abbreviate
+ (push abbrev-element abbrev-list)) ; put the abbreviated/non-abbreviated day on our list
+ abbrev-list)) ; return the list of abbreviated days
+
+(defun cycle-days (list-of-days)
+ "Find shortest unique abbreviation in LIST-OF-DAYS list."
+ (let ((abbrev-list)
+ (abbrev-length 1)
+ (current-abbrev)
+ (looking-for-shortest-list t))
+ (if (= (length list-of-days) 0) ; if list-of-days is empty (i.e., blank line)
+ (setq looking-for-shortest-list nil)) ; then don't look for the shortest unique abbreviations
+ (while looking-for-shortest-list ; as long as we are looking for the shortest unique abbreviations
+ (setq abbrev-list (abbreviate-list list-of-days abbrev-length)) ; get a list of abbreviated day names
+ (if (= (length list-of-days) (length (seq-uniq abbrev-list))) ; if abbreviated list has no duplicates
+ (progn
+ (message (format "%d %s" abbrev-length list-of-days)) ; then in echo buffer show length and days
+ (setq looking-for-shortest-list nil)) ; also, then don't look for the shortest unique abbreviations
+ (setq abbrev-length (+ abbrev-length 1)))))) ; else increase the length of the abbreviation; loop to while
+
+(defun days-of-week ()
+ "Find minimum abbreviation length of days of week."
+ (let ((current-line-list))
+ (find-file "Days_of_week.txt") ; open file or switch to buffer
+ (beginning-of-buffer) ; go to the top of the buffer
+ (dolist (current-line (split-string (buffer-string) "\n")) ; go line by line through buffer
+ (setq current-line-list (split-string current-line " ")) ; change each line into list of days of week
+ (cycle-days current-line-list))))
diff --git a/Task/Abbreviations-automatic/Uiua/abbreviations-automatic.uiua b/Task/Abbreviations-automatic/Uiua/abbreviations-automatic.uiua
new file mode 100644
index 0000000000..983c4fa405
--- /dev/null
+++ b/Task/Abbreviations-automatic/Uiua/abbreviations-automatic.uiua
@@ -0,0 +1,17 @@
+# Experimental!
+# Find shortest distinct abbreviation length per line
+
+Lines ← {"Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
+ "sing_kei_yaht sing_kei_yat sing_kei_yee sing_kei_saam sing_kei_sie sing_kei_ng sing_kei_luk"
+ ""
+ "Diu_prima Diu_sequima Diu_tritima Diu_quartima Diu_quintima Diu_sextima Diu_sabbata"
+ "sunnudagur mánadagur tÿsdaguy mikudagur hósdagur friggjadagur leygardagur"
+ "Yek_Sham'beh Do_Sham'beh Seh_Sham'beh Cha'har_Sham'beh Panj_Sham'beh Jom'eh Sham'beh"}
+
+# Return 1+max_common_prefix
+AbbrevLen ← +1/↥◹(/↥↘1)⊞(/+\↧⬚@ =∩°□).
+Split ← ⊜□⊸(≠@ )
+RemoveEmpty ← ▽⊸(≡(≠0◇⧻))
+Line ← ⊂⊂:": " °⋕:⊸(/(⊂⊂) " "≡(⬚@ ↙:°□)⊙¤)⟜AbbrevLen ◇Split
+≡⍚Line RemoveEmpty Lines
+≡&p
diff --git a/Task/Abelian-sandpile-model-Identity/EasyLang/abelian-sandpile-model-identity.easy b/Task/Abelian-sandpile-model-Identity/EasyLang/abelian-sandpile-model-identity.easy
new file mode 100644
index 0000000000..3e0c4d008f
--- /dev/null
+++ b/Task/Abelian-sandpile-model-Identity/EasyLang/abelian-sandpile-model-identity.easy
@@ -0,0 +1,60 @@
+proc out s[] . .
+ for r = 0 to 2
+ for c to 3
+ write s[c + 3 * r] & " "
+ .
+ print ""
+ .
+ print ""
+.
+proc stab . m[] .
+ n = sqrt len m[]
+ repeat
+ stable = 1
+ for p to len m[]
+ if m[p] >= 4
+ stable = 0
+ m[p] -= 4
+ if p > n
+ m[p - n] += 1
+ .
+ if p mod n <> 0
+ m[p + 1] += 1
+ .
+ if p <= len m[] - n
+ m[p + n] += 1
+ .
+ if p mod n <> 1
+ m[p - 1] += 1
+ .
+ .
+ .
+ until stable = 1
+ .
+.
+func[] add s1[] s2[] .
+ for i to len s1[]
+ r[] &= s1[i] + s2[i]
+ .
+ stab r[]
+ return r[]
+.
+print "avalanche:"
+s4[] = [ 4 3 3 3 1 2 0 2 3 ]
+stab s4[]
+out s4[]
+#
+s1[] = [ 1 2 0 2 1 1 0 1 3 ]
+s2[] = [ 2 1 3 1 0 1 0 1 0 ]
+if add s1[] s2[] = add s2[] s1[]
+ print "s1 + s2 = s2 + s1"
+.
+#
+s3[] = [ 3 3 3 3 3 3 3 3 3 ]
+s3_id[] = [ 2 1 2 1 0 1 2 1 2 ]
+if add s3[] s3_id[] = s3[]
+ print "s3 + s3_id = s3"
+.
+if add s3_id[] s3_id[] = s3_id[]
+ print "s3_id + s3_id = s3_id"
+.
diff --git a/Task/Abelian-sandpile-model/Ada/abelian-sandpile-model.ada b/Task/Abelian-sandpile-model/Ada/abelian-sandpile-model.ada
new file mode 100644
index 0000000000..10aa915326
--- /dev/null
+++ b/Task/Abelian-sandpile-model/Ada/abelian-sandpile-model.ada
@@ -0,0 +1,67 @@
+pragma Ada_2022;
+with Ada.Command_Line; use Ada.Command_Line;
+with Ada.Text_IO; use Ada.Text_IO;
+procedure Abelian_Sandpile is
+ type Grid_2D is array (Positive range <>, Positive range <>) of Natural;
+
+ procedure Write_PPM (Grid : Grid_2D; Filename : String) is
+ PPM_File : File_Type;
+ begin
+ Create (PPM_File, Out_File, Filename);
+ Put_Line (PPM_File, "P3");
+ Put_Line (PPM_File, Grid'Length (1)'Image & Grid'Length (2)'Image);
+ Put_Line (PPM_File, "7");
+ for Y in 1 .. Grid'Length (2) loop
+ for X in 1 .. Grid'Length (1) loop
+ case Grid (X, Y) is
+ when 0 => Put_Line (PPM_File, "0 0 0"); -- black
+ when 1 => Put_Line (PPM_File, "0 7 0"); -- green
+ when 2 => Put_Line (PPM_File, "7 0 7"); -- lilac
+ when 3 => Put_Line (PPM_File, "7 7 0"); -- yellow
+ when others => Put_Line (PPM_File, "0 0 7"); -- blue, shouldn't happen
+ end case;
+ end loop;
+ end loop;
+ Close (PPM_File);
+ end Write_PPM;
+begin
+ if Argument_Count /= 2 then
+ Put_Line ("Error: Must specify ");
+ else
+ declare
+ Initial_Height : constant Positive := Positive'Value (Argument (1));
+ Grid_Size : constant Positive := Positive'Value (Argument (2));
+ Sandpile : Grid_2D (1 .. Grid_Size, 1 .. Grid_Size) := [others => [others => 0]];
+ More_To_Do : Boolean := True;
+ Overspill : Natural;
+ begin
+ Sandpile (Grid_Size / 2, Grid_Size / 2) := Initial_Height;
+ while More_To_Do loop
+ More_To_Do := False;
+ for X in 1 .. Grid_Size loop
+ for Y in 1 .. Grid_Size loop
+ if Sandpile (X, Y) >= 4 then
+ Overspill := Sandpile (X, Y) / 4;
+ Sandpile (X, Y) := @ mod 4;
+ More_To_Do := True;
+ if X > 1 then
+ Sandpile (X - 1, Y) := @ + Overspill;
+ end if;
+ if Y > 1 then
+ Sandpile (X, Y - 1) := @ + Overspill;
+ end if;
+ if X < Grid_Size then
+ Sandpile (X + 1, Y) := @ + Overspill;
+ end if;
+ if Y < Grid_Size then
+ Sandpile (X, Y + 1) := @ + Overspill;
+ end if;
+ end if;
+ end loop;
+ end loop;
+ end loop;
+ if Grid_Size < 16 then Put_Line (Sandpile'Image); end if;
+ Write_PPM (Sandpile, "sandpile.ppm");
+ end;
+ end if;
+end Abelian_Sandpile;
diff --git a/Task/Abelian-sandpile-model/EasyLang/abelian-sandpile-model.easy b/Task/Abelian-sandpile-model/EasyLang/abelian-sandpile-model.easy
new file mode 100644
index 0000000000..c77b7a2530
--- /dev/null
+++ b/Task/Abelian-sandpile-model/EasyLang/abelian-sandpile-model.easy
@@ -0,0 +1,35 @@
+n = 77
+len m[] n * n
+m[n * n div 2 + 1] = 10000
+#
+proc show . .
+ sc = 100 / n
+ for r range0 n
+ for c range0 n
+ move c * sc r * sc
+ p = r * n + c + 1
+ color 222 * m[p]
+ rect sc sc
+ .
+ .
+ sleep 0
+.
+proc run . .
+ repeat
+ mp[] = m[]
+ stable = 1
+ for p to len mp[]
+ if mp[p] >= 4
+ stable = 0
+ m[p] -= 4
+ m[p - n] += 1
+ m[p + 1] += 1
+ m[p + n] += 1
+ m[p - 1] += 1
+ .
+ .
+ show
+ until stable = 1
+ .
+.
+run
diff --git a/Task/Abelian-sandpile-model/Locomotive-Basic/abelian-sandpile-model.basic b/Task/Abelian-sandpile-model/Locomotive-Basic/abelian-sandpile-model.basic
new file mode 100644
index 0000000000..6406a507ab
--- /dev/null
+++ b/Task/Abelian-sandpile-model/Locomotive-Basic/abelian-sandpile-model.basic
@@ -0,0 +1,27 @@
+10 mode 1:defint a-z
+20 height=15000:size=100
+30 ink 0,0:ink 1,18:ink 2,8:ink 3,24
+40 dim grid(size+1,size+1)
+50 grid(size/2,size/2)=height
+60 moretodo=1
+70 while moretodo
+80 moretodo=0
+90 for x=1 to size
+100 for y=1 to size
+110 if grid(x,y)<4 then 190
+120 overspill=int(grid(x,y)/4)
+130 grid(x,y)=grid(x,y) mod 4
+140 moretodo=1
+150 if x>1 then grid(x-1,y)=grid(x-1,y)+overspill
+160 if y>1 then grid(x,y-1)=grid(x,y-1)+overspill
+170 if x= 4 -- slightly faster
+⟜Scale&p⍜now⍥Abelian₄ 100G 0
+⟜Scale&p⍜now⍥Abelian₄ 900⊙,
+Scale⍥Abelian₄∞⊙, # Run to completion
diff --git a/Task/Abstract-type/11l/abstract-type.11l b/Task/Abstract-type/11l/abstract-type.11l
index ed88d4b041..2374f37287 100644
--- a/Task/Abstract-type/11l/abstract-type.11l
+++ b/Task/Abstract-type/11l/abstract-type.11l
@@ -1,6 +1,6 @@
T AbstractQueue
- F.virtual.abstract enqueue(Int item) -> N
+ F.virtual.abstract enqueue(Int item) -> Void
T PrintQueue(AbstractQueue)
- F.virtual.assign enqueue(Int item) -> N
+ F.virtual.assign enqueue(Int item) -> Void
print(item)
diff --git a/Task/Abstract-type/PascalABC.NET/abstract-type-1.pas b/Task/Abstract-type/PascalABC.NET/abstract-type-1.pas
new file mode 100644
index 0000000000..4ea14e8f5f
--- /dev/null
+++ b/Task/Abstract-type/PascalABC.NET/abstract-type-1.pas
@@ -0,0 +1,20 @@
+type
+ MyAbstract = abstract class
+ public
+ procedure Proc1; abstract;
+ procedure Proc2;
+ begin
+ end;
+ end;
+ MyClass = class(MyAbstract)
+ public
+ procedure Proc1; override;
+ begin
+ end;
+ end;
+
+
+begin
+ var a := new MyClass;
+ a.Proc1;
+end.
diff --git a/Task/Abstract-type/PascalABC.NET/abstract-type-2.pas b/Task/Abstract-type/PascalABC.NET/abstract-type-2.pas
new file mode 100644
index 0000000000..aaa3e079db
--- /dev/null
+++ b/Task/Abstract-type/PascalABC.NET/abstract-type-2.pas
@@ -0,0 +1,22 @@
+type
+ IMyInterface = interface
+ procedure Proc1;
+ procedure Proc2;
+ end;
+ MyClass = class(IMyInterface)
+ public
+ procedure Proc1;
+ begin
+ Print(1);
+ end;
+ procedure Proc2;
+ begin
+ Print(2);
+ end;
+ end;
+
+begin
+ var a: IMyInterface := new MyClass;
+ a.Proc1;
+ a.Proc2;
+end.
diff --git a/Task/Accumulator-factory/PascalABC.NET/accumulator-factory.pas b/Task/Accumulator-factory/PascalABC.NET/accumulator-factory.pas
new file mode 100644
index 0000000000..86c0cbcc7d
--- /dev/null
+++ b/Task/Accumulator-factory/PascalABC.NET/accumulator-factory.pas
@@ -0,0 +1,12 @@
+function foo(n: real): real -> real :=
+ i -> begin
+ n += i;
+ Result := n;
+ end;
+
+begin
+ var x := foo(1);
+ x(5);
+ foo(3);
+ print(x(2.3));
+end.
diff --git a/Task/Achilles-numbers/Ada/achilles-numbers.ada b/Task/Achilles-numbers/Ada/achilles-numbers.ada
new file mode 100644
index 0000000000..054f448da3
--- /dev/null
+++ b/Task/Achilles-numbers/Ada/achilles-numbers.ada
@@ -0,0 +1,205 @@
+pragma Ada_2022;
+
+with Ada.Text_IO;
+with Ada.Numerics; use Ada.Numerics;
+with Ada.Numerics.Long_Elementary_Functions;
+use Ada.Numerics.Long_Elementary_Functions;
+with Ada.Strings; use Ada.Strings;
+with Ada.Strings.Fixed; use Ada.Strings.Fixed;
+with Prime_Numbers;
+
+procedure Achilles_Numbers is
+
+ package Long_Integer_Prime_Numbers is new Prime_Numbers
+ (Integer, 0, 1, 2);
+ use Long_Integer_Prime_Numbers;
+
+ -- A powerful number N is such that for every primer factor P of it
+ -- P^2 also divides N
+ -- Is_Powerful function decomposes the given number N in its prime factors
+ -- and then it checks if each factor squared is a divisor of N
+ function Is_Powerful (Number : Natural) return Boolean is
+ List : constant Number_List := Decompose (Integer (Number));
+ begin
+ for Index in List'Range loop
+ declare
+ N : constant Long_Long_Integer := Long_Long_Integer (Number);
+ F : constant Long_Long_Integer := Long_Long_Integer (List (Index));
+ begin
+ if N mod (F * F) /= 0 then
+ return False;
+ end if;
+ end;
+ end loop;
+
+ return True;
+ end Is_Powerful;
+
+ -- The Is_Power function checks if a given number N can be written
+ -- as a power of two integers that are > 1
+ -- It makes use of the mathematical expression N = A^B
+ -- taking Log(N) = Log (A^B) equals to B = Log (N) / Log (A)
+ -- where the solutions are when B is an integer > 1
+ function Is_Power (N : Integer) return Boolean is
+
+ function Is_Almost_Equal (A : Long_Float;
+ B : Long_Float) return Boolean is
+ Epsilon : constant := 0.000_000_000_000_001;
+ begin
+ if abs (A - B) < Epsilon then
+ return True;
+ else
+ return False;
+ end if;
+ end Is_Almost_Equal;
+
+ A : Integer := 2;
+ B : Long_Float;
+ Log_Of_N : constant Long_Float := Log (Long_Float (N), 2.0);
+ begin
+ if N = 1 then
+ return True;
+ end if;
+
+ while True loop
+ B := Log_Of_N / Log (Long_Float (A), 2.0);
+
+ if Is_Almost_Equal (B, Long_Float (Integer (B)))
+ and then Integer (B) > 1
+ then
+ return True;
+ end if;
+
+ exit when A * A > N;
+ A := @ + 1;
+ end loop;
+
+ return False;
+
+ end Is_Power;
+
+ -- An Achilles number is a powerful number that can't be expressed
+ -- as a power
+ function Is_Achilles (N : Integer) return Boolean is
+ begin
+ if Is_Powerful (N) then
+ if Is_Power (N) = False then
+ return True;
+ end if;
+ end if;
+
+ return False;
+ end Is_Achilles;
+
+ -- Calculates the Euler totient of a number
+ function Totient (N : Integer) return Integer is
+ Tot : Integer := N;
+ I : Integer;
+ N2 : Integer := N;
+ begin
+ I := 2;
+ while I * I <= N2 loop
+ if N2 mod I = 0 then
+ while N2 mod I = 0 loop
+ N2 := N2 / I;
+ end loop;
+ Tot := Tot - Tot / I;
+ end if;
+
+ if I = 2 then
+ I := 1;
+ end if;
+ I := I + 2;
+ end loop;
+
+ if N2 > 1 then
+ Tot := Tot - Tot / N2;
+ end if;
+
+ return Tot;
+ end Totient;
+
+ -- A Strong Achilles number is an Achilles number whose Euler Totient
+ -- is also an Achilles number
+ function Is_Strong_Achilles (N : Integer) return Boolean is
+ begin
+ if Is_Achilles (N) then
+ if Is_Achilles (Totient (N)) then
+ return True;
+ end if;
+ end if;
+
+ return False;
+ end Is_Strong_Achilles;
+
+ -- Counts the digits in a number by taking the string from
+ -- its 'Image attribute, trimming it and counting the characters
+ function Count_Digits (N : Integer) return Natural is
+ Integer_Str : constant String := Trim (N'Image, Both);
+ begin
+ return Integer_Str'Length;
+ end Count_Digits;
+
+begin
+ -- Find the first 50 Achilles numbers
+ declare
+ N : Integer := 1;
+ Count : Integer := 1;
+ begin
+ Ada.Text_IO.Put_Line ("First 50 Achilles numbers:");
+
+ while Count <= 50 loop
+
+ if Is_Achilles (N) then
+ Count := @ + 1;
+ Ada.Text_IO.Put (N'Image & " ");
+ end if;
+
+ N := @ + 1;
+ end loop;
+
+ Ada.Text_IO.New_Line;
+ end;
+
+ -- Find the first 20 Strong Achilles numbers
+ declare
+ N : Integer := 1;
+ Count : Integer := 1;
+ begin
+ Ada.Text_IO.Put_Line ("First 20 Strong Achilles numbers:");
+
+ while Count <= 20 loop
+
+ if Is_Strong_Achilles (N) then
+ Count := @ + 1;
+ Ada.Text_IO.Put (N'Image & " ");
+ end if;
+
+ N := @ + 1;
+ end loop;
+
+ Ada.Text_IO.New_Line;
+ end;
+
+ -- Count numbers with digits
+ declare
+ Counts : array (2 .. 6) of Natural := [others => 0];
+ N : Integer := 1;
+ begin
+ Ada.Text_IO.Put_Line ("Number of Achilles numbers with:");
+
+ while Count_Digits (N) <= Counts'Last loop
+
+ -- Ada.Text_IO.Put_Line ("Testing: " & N'Image);
+
+ if Is_Achilles (N) then
+ Counts (Count_Digits (N)) := @ + 1;
+ end if;
+ N := @ + 1;
+ end loop;
+
+ for I in Counts'Range loop
+ Ada.Text_IO.Put_Line (I'Image & " digits: " & Counts (I)'Image);
+ end loop;
+ end;
+end Achilles_Numbers;
diff --git a/Task/Ackermann-function/PascalABC.NET/ackermann-function.pas b/Task/Ackermann-function/PascalABC.NET/ackermann-function.pas
new file mode 100644
index 0000000000..1343534204
--- /dev/null
+++ b/Task/Ackermann-function/PascalABC.NET/ackermann-function.pas
@@ -0,0 +1,16 @@
+function Ackermann(m,n: integer): integer;
+begin
+ if (m < 0) or (n < 0) then
+ raise new System.ArgumentOutOfRangeException();
+ if m = 0 then
+ Result := n + 1
+ else if n = 0 then
+ Result := Ackermann(m - 1, 1)
+ else Result := Ackermann(m - 1, Ackermann(m, n - 1))
+end;
+
+begin
+ for var m := 0 to 3 do
+ for var n := 0 to 4 do
+ Println($'Ackermann({m}, {n}) = {Ackermann(m,n)}');
+end.
diff --git a/Task/Add-a-variable-to-a-class-instance-at-runtime/C++/add-a-variable-to-a-class-instance-at-runtime.cpp b/Task/Add-a-variable-to-a-class-instance-at-runtime/C++/add-a-variable-to-a-class-instance-at-runtime.cpp
new file mode 100644
index 0000000000..1f83768ae0
--- /dev/null
+++ b/Task/Add-a-variable-to-a-class-instance-at-runtime/C++/add-a-variable-to-a-class-instance-at-runtime.cpp
@@ -0,0 +1,34 @@
+#include
+#include
+#include