diff --git a/Lang/360-Assembly/FizzBuzz b/Lang/360-Assembly/FizzBuzz
new file mode 120000
index 0000000000..264736e4d3
--- /dev/null
+++ b/Lang/360-Assembly/FizzBuzz
@@ -0,0 +1 @@
+../../Task/FizzBuzz/360-Assembly
\ No newline at end of file
diff --git a/Lang/6800-Assembly/00DESCRIPTION b/Lang/6800-Assembly/00DESCRIPTION
index a9d3a95002..078dd10cc5 100644
--- a/Lang/6800-Assembly/00DESCRIPTION
+++ b/Lang/6800-Assembly/00DESCRIPTION
@@ -7,5 +7,4 @@ From a programmer's standpoint, the 6800 possessed two 8-bit accumulators (A and
The 6800 spawned many offshoots and offspring, like the MOS Technology 65xx family, the "upward-compatible" Motorola 6809, and numerous micro-controllers. 68xx-based systems were prevalent in the late 1970s and early 1980s, in household, business, and automotive applications. The 6800's popularity in home computers, however, was easily eclipsed by the 65xx family of microprocessors, largely due to the lower hardware cost and comparable performance of the 65xx family. The 8080 suffered a similar fate, at the hands of the Zilog Z-80 (due mostly to the Z-80's richer and more versatile instruction set).
-The Motorola 68000, designed in the late 1970s, was the popular and much more capable successor to the 6800, and although their assembly languages both share a similarity to the DEC PDP-11 (a model of elegance and orthogonality), they are all mutually incompatible.
-{{stub}}
\ No newline at end of file
+The Motorola 68000, designed in the late 1970s, was the popular and much more capable successor to the 6800, and although their assembly languages both share a similarity to the DEC PDP-11 (a model of elegance and orthogonality), they are all mutually incompatible.
\ No newline at end of file
diff --git a/Lang/80386-Assembly/00DESCRIPTION b/Lang/80386-Assembly/00DESCRIPTION
index 95309450b0..ef755eace2 100644
--- a/Lang/80386-Assembly/00DESCRIPTION
+++ b/Lang/80386-Assembly/00DESCRIPTION
@@ -1 +1,2 @@
-{{language}}{{assembler language}}{{stub}}
\ No newline at end of file
+{{language}}{{assembler language}}{{stub}}
+80386 assembly is assembly for the Intel 80386 the predecessor of the 80486 it is an early 16/32 bit Intel processor Wikipedia has a page on it [https://en.wikipedia.org/wiki/Intel_80386] on their is an example code
\ No newline at end of file
diff --git a/Lang/ABAP/Primality-by-trial-division b/Lang/ABAP/Primality-by-trial-division
new file mode 120000
index 0000000000..a9791ed175
--- /dev/null
+++ b/Lang/ABAP/Primality-by-trial-division
@@ -0,0 +1 @@
+../../Task/Primality-by-trial-division/ABAP
\ No newline at end of file
diff --git a/Lang/ALGOL-68/00DESCRIPTION b/Lang/ALGOL-68/00DESCRIPTION
index b250b649a7..663d797e6f 100644
--- a/Lang/ALGOL-68/00DESCRIPTION
+++ b/Lang/ALGOL-68/00DESCRIPTION
@@ -143,43 +143,26 @@ program. Example:
ALGOL 68 has a hierarchy of contexts which determine which kind of
coercions are available at a particular point in the program. These contexts are:
{|class="wikitable"
-! Context name !! Context location !! Coercions available in this context!! Coercion examples
+!rowspan=2| N
+a
+m
+e
+!rowspan=2| Context location
+!colspan=5| Coercions available in this context
+!rowspan=2| Coercion examples
|-
-!soft
-|| The LHS of assignments, as "~" in: ~ := ...
-|| deproceduring
-||
-* deproceduring of: PROC REAL random: e.g. random
+|bgcolor=eeeeee|Soft
+|bgcolor=dddddd|Meek
+|bgcolor=cccccc|Weak
+|bgcolor=bbbbbb|Firm
+|bgcolor=aaaaaa|Strong
|-
-!weak
-||
-* Primaries of slices, as in "~" in: ~[1:99]
-* Secondaries of selections, as "~" in: value OF ~
-|| all '''soft''' then weak dereferencing
-||
-REF BOOL to REF BOOL
-REF REF INT to REF INT
-REF REF REF REAL to REF REAL
-REF REF REF REF STRUCT to REF STRUCT
-|-
-!meek
-||
-* Trimscripts (yielding INT)
-* Enquiries: e.g. as "~" in the followingIF ~ THEN ... FI and FROM ~ BY ~ TO ~ WHILE ~ DO ... OD etc
-* Primaries of calls (e.g. sin in sin(x))
-|| all '''weak''' then dereferencing
-||
-REF REF BOOL to BOOL
-REF REF REF INT to INT
-|-
-!firm
-||
-*Operands of formulas as "~" in:OP: ~ * ~
-*Parameters of transput calls
-|| all '''meek''' then uniting
-|| e.g. UNION(INT,REAL) var := 1
-|-
-!strong
+!S
+t
+r
+o
+n
+g
||Right hand side of:
* Identity-declarations, as "~" in: REAL x = ~
* Initialisations, as "~" in: REAL x := ~
@@ -190,16 +173,68 @@ Also:
* Statements yielding VOID
* All parts (but one) of a balanced clause
* One side of an identity relation, as "~" in: ~ IS ~
-|| all '''firm''' then widening, rowing and voiding
-||Widening occures if there is no loss of precision. For example: An INT will be coerced to a REAL, and a REAL will be coerced to a LONG REAL. But not vice-versa. Examples:
+|bgcolor=EEEEEE rowspan=4 width="50px"| deproc- eduring
+|bgcolor=DDDDDD rowspan=3 width="50px"| all '''soft''' then weak deref- erencing
+|bgcolor=CCCCCC rowspan=2 width="50px"| all '''weak''' then deref- erencing
+|bgcolor=BBBBBB rowspan=1 width="50px"| all '''meek''' then uniting
+|bgcolor=AAAAAA width="50px"| all '''firm''' then widening, rowing and voiding
+|colspan=1 bgcolor=AAAAAA|
+Widening occurs if there is no loss of precision. For example: An INT will be coerced to a REAL, and a REAL will be coerced to a LONG REAL. But not vice-versa. Examples:
INT to LONG INT
INT to REAL
REAL to COMPL
BITS to []BOOL
BYTES to STRING
-A variable can also be coerced (rowed) to an array of length 1. For example:
+A variable can also be coerced (rowed) to an array of length 1.
+
+For example:
INT to [1]INT
REAL to [1]REAL etc
+|-
+!F
+i
+r
+m
+||
+*Operands of formulas as "~" in:OP: ~ * ~
+*Parameters of transput calls
+|colspan=3 bgcolor=BBBBBB| Example:
+UNION(INT,REAL) var := 1
+|-
+!M
+e
+e
+k
+||
+* Trimscripts (yielding INT)
+* Enquiries: e.g. as "~" in the following
+IF ~ THEN ... FI and
+FROM ~ BY ~ TO ~ WHILE ~ DO ... OD etc
+* Primaries of calls (e.g. sin in sin(x))
+|colspan=4 bgcolor=CCCCCC|Examples:
+REF REF BOOL to BOOL
+REF REF REF INT to INT
+|-
+!W
+e
+a
+k
+||
+* Primaries of slices, as in "~" in: ~[1:99]
+* Secondaries of selections, as "~" in: value OF ~
+|colspan=5 bgcolor=DDDDDD|Examples:
+REF BOOL to REF BOOL
+REF REF INT to REF INT
+REF REF REF REAL to REF REAL
+REF REF REF REF STRUCT to REF STRUCT
+|-
+!S
+o
+f
+t
+|| The LHS of assignments, as "~" in: ~ := ...
+|colspan=6 bgcolor=EEEEEE| Example:
+* deproceduring of: PROC REAL random: e.g. random
|}
For more details about Primaries and Secondaries refer to [[Operator_precedence#ALGOL_68|Operator precedence]].
diff --git a/Lang/ALGOL-68/Identity-matrix b/Lang/ALGOL-68/Identity-matrix
new file mode 120000
index 0000000000..e83c76933f
--- /dev/null
+++ b/Lang/ALGOL-68/Identity-matrix
@@ -0,0 +1 @@
+../../Task/Identity-matrix/ALGOL-68
\ No newline at end of file
diff --git a/Lang/ALGOL-68/Include-a-file b/Lang/ALGOL-68/Include-a-file
new file mode 120000
index 0000000000..5b0422e343
--- /dev/null
+++ b/Lang/ALGOL-68/Include-a-file
@@ -0,0 +1 @@
+../../Task/Include-a-file/ALGOL-68
\ No newline at end of file
diff --git a/Lang/ALGOL-68/Queue-Definition b/Lang/ALGOL-68/Queue-Definition
new file mode 120000
index 0000000000..b565d31c7f
--- /dev/null
+++ b/Lang/ALGOL-68/Queue-Definition
@@ -0,0 +1 @@
+../../Task/Queue-Definition/ALGOL-68
\ No newline at end of file
diff --git a/Lang/ALGOL-68/Queue-Usage b/Lang/ALGOL-68/Queue-Usage
new file mode 120000
index 0000000000..21fad2e3ff
--- /dev/null
+++ b/Lang/ALGOL-68/Queue-Usage
@@ -0,0 +1 @@
+../../Task/Queue-Usage/ALGOL-68
\ No newline at end of file
diff --git a/Lang/APL/Sorting-algorithms-Sleep-sort b/Lang/APL/Sorting-algorithms-Sleep-sort
new file mode 120000
index 0000000000..b9c859dd0a
--- /dev/null
+++ b/Lang/APL/Sorting-algorithms-Sleep-sort
@@ -0,0 +1 @@
+../../Task/Sorting-algorithms-Sleep-sort/APL
\ No newline at end of file
diff --git a/Lang/ARM-Assembly/A+B b/Lang/ARM-Assembly/A+B
new file mode 120000
index 0000000000..5e6cdefecf
--- /dev/null
+++ b/Lang/ARM-Assembly/A+B
@@ -0,0 +1 @@
+../../Task/A+B/ARM-Assembly
\ No newline at end of file
diff --git a/Lang/ARM-Assembly/Empty-program b/Lang/ARM-Assembly/Empty-program
new file mode 120000
index 0000000000..922a103b6f
--- /dev/null
+++ b/Lang/ARM-Assembly/Empty-program
@@ -0,0 +1 @@
+../../Task/Empty-program/ARM-Assembly
\ No newline at end of file
diff --git a/Lang/AWK/Arithmetic-geometric-mean b/Lang/AWK/Arithmetic-geometric-mean
new file mode 120000
index 0000000000..2223c9f9e7
--- /dev/null
+++ b/Lang/AWK/Arithmetic-geometric-mean
@@ -0,0 +1 @@
+../../Task/Arithmetic-geometric-mean/AWK
\ No newline at end of file
diff --git a/Lang/AWK/Array-concatenation b/Lang/AWK/Array-concatenation
new file mode 120000
index 0000000000..b6b4290754
--- /dev/null
+++ b/Lang/AWK/Array-concatenation
@@ -0,0 +1 @@
+../../Task/Array-concatenation/AWK
\ No newline at end of file
diff --git a/Lang/AWK/Averages-Mean-angle b/Lang/AWK/Averages-Mean-angle
new file mode 120000
index 0000000000..ff70a0df63
--- /dev/null
+++ b/Lang/AWK/Averages-Mean-angle
@@ -0,0 +1 @@
+../../Task/Averages-Mean-angle/AWK
\ No newline at end of file
diff --git a/Lang/AWK/Averages-Mean-time-of-day b/Lang/AWK/Averages-Mean-time-of-day
new file mode 120000
index 0000000000..a9931936d1
--- /dev/null
+++ b/Lang/AWK/Averages-Mean-time-of-day
@@ -0,0 +1 @@
+../../Task/Averages-Mean-time-of-day/AWK
\ No newline at end of file
diff --git a/Lang/AWK/Binary-strings b/Lang/AWK/Binary-strings
new file mode 120000
index 0000000000..fd7722e300
--- /dev/null
+++ b/Lang/AWK/Binary-strings
@@ -0,0 +1 @@
+../../Task/Binary-strings/AWK
\ No newline at end of file
diff --git a/Lang/AWK/Bitmap-Write-a-PPM-file b/Lang/AWK/Bitmap-Write-a-PPM-file
new file mode 120000
index 0000000000..7c6b4910a8
--- /dev/null
+++ b/Lang/AWK/Bitmap-Write-a-PPM-file
@@ -0,0 +1 @@
+../../Task/Bitmap-Write-a-PPM-file/AWK
\ No newline at end of file
diff --git a/Lang/AWK/Calendar b/Lang/AWK/Calendar
new file mode 120000
index 0000000000..7bcd8aadac
--- /dev/null
+++ b/Lang/AWK/Calendar
@@ -0,0 +1 @@
+../../Task/Calendar/AWK
\ No newline at end of file
diff --git a/Lang/AWK/Check-that-file-exists b/Lang/AWK/Check-that-file-exists
new file mode 120000
index 0000000000..f60d6bc930
--- /dev/null
+++ b/Lang/AWK/Check-that-file-exists
@@ -0,0 +1 @@
+../../Task/Check-that-file-exists/AWK
\ No newline at end of file
diff --git a/Lang/AWK/Count-in-factors b/Lang/AWK/Count-in-factors
new file mode 120000
index 0000000000..038b166a47
--- /dev/null
+++ b/Lang/AWK/Count-in-factors
@@ -0,0 +1 @@
+../../Task/Count-in-factors/AWK
\ No newline at end of file
diff --git a/Lang/AWK/Date-manipulation b/Lang/AWK/Date-manipulation
new file mode 120000
index 0000000000..6a3fa50be1
--- /dev/null
+++ b/Lang/AWK/Date-manipulation
@@ -0,0 +1 @@
+../../Task/Date-manipulation/AWK
\ No newline at end of file
diff --git a/Lang/AWK/Dot-product b/Lang/AWK/Dot-product
new file mode 120000
index 0000000000..07a372213a
--- /dev/null
+++ b/Lang/AWK/Dot-product
@@ -0,0 +1 @@
+../../Task/Dot-product/AWK
\ No newline at end of file
diff --git a/Lang/AWK/Entropy b/Lang/AWK/Entropy
new file mode 120000
index 0000000000..1107c6cb9d
--- /dev/null
+++ b/Lang/AWK/Entropy
@@ -0,0 +1 @@
+../../Task/Entropy/AWK
\ No newline at end of file
diff --git a/Lang/AWK/Factors-of-an-integer b/Lang/AWK/Factors-of-an-integer
new file mode 120000
index 0000000000..929ba98c3a
--- /dev/null
+++ b/Lang/AWK/Factors-of-an-integer
@@ -0,0 +1 @@
+../../Task/Factors-of-an-integer/AWK
\ No newline at end of file
diff --git a/Lang/AWK/Hamming-numbers b/Lang/AWK/Hamming-numbers
new file mode 120000
index 0000000000..a6ea541a76
--- /dev/null
+++ b/Lang/AWK/Hamming-numbers
@@ -0,0 +1 @@
+../../Task/Hamming-numbers/AWK
\ No newline at end of file
diff --git a/Lang/AWK/Harshad-or-Niven-series b/Lang/AWK/Harshad-or-Niven-series
new file mode 120000
index 0000000000..9847c49413
--- /dev/null
+++ b/Lang/AWK/Harshad-or-Niven-series
@@ -0,0 +1 @@
+../../Task/Harshad-or-Niven-series/AWK
\ No newline at end of file
diff --git a/Lang/AWK/Horizontal-sundial-calculations b/Lang/AWK/Horizontal-sundial-calculations
new file mode 120000
index 0000000000..848f9b32ea
--- /dev/null
+++ b/Lang/AWK/Horizontal-sundial-calculations
@@ -0,0 +1 @@
+../../Task/Horizontal-sundial-calculations/AWK
\ No newline at end of file
diff --git a/Lang/AWK/I-before-E-except-after-C b/Lang/AWK/I-before-E-except-after-C
new file mode 120000
index 0000000000..aa453583f8
--- /dev/null
+++ b/Lang/AWK/I-before-E-except-after-C
@@ -0,0 +1 @@
+../../Task/I-before-E-except-after-C/AWK
\ No newline at end of file
diff --git a/Lang/AWK/Kaprekar-numbers b/Lang/AWK/Kaprekar-numbers
new file mode 120000
index 0000000000..055cc7b642
--- /dev/null
+++ b/Lang/AWK/Kaprekar-numbers
@@ -0,0 +1 @@
+../../Task/Kaprekar-numbers/AWK
\ No newline at end of file
diff --git a/Lang/AWK/Last-Friday-of-each-month b/Lang/AWK/Last-Friday-of-each-month
new file mode 120000
index 0000000000..20aff95166
--- /dev/null
+++ b/Lang/AWK/Last-Friday-of-each-month
@@ -0,0 +1 @@
+../../Task/Last-Friday-of-each-month/AWK
\ No newline at end of file
diff --git a/Lang/AWK/Null-object b/Lang/AWK/Null-object
new file mode 120000
index 0000000000..52ef234a52
--- /dev/null
+++ b/Lang/AWK/Null-object
@@ -0,0 +1 @@
+../../Task/Null-object/AWK
\ No newline at end of file
diff --git a/Lang/AWK/One-of-n-lines-in-a-file b/Lang/AWK/One-of-n-lines-in-a-file
new file mode 120000
index 0000000000..e1e6a1fe52
--- /dev/null
+++ b/Lang/AWK/One-of-n-lines-in-a-file
@@ -0,0 +1 @@
+../../Task/One-of-n-lines-in-a-file/AWK
\ No newline at end of file
diff --git a/Lang/AWK/Range-expansion b/Lang/AWK/Range-expansion
new file mode 120000
index 0000000000..29c5c00e6a
--- /dev/null
+++ b/Lang/AWK/Range-expansion
@@ -0,0 +1 @@
+../../Task/Range-expansion/AWK
\ No newline at end of file
diff --git a/Lang/AWK/Short-circuit-evaluation b/Lang/AWK/Short-circuit-evaluation
new file mode 120000
index 0000000000..87157d0f0a
--- /dev/null
+++ b/Lang/AWK/Short-circuit-evaluation
@@ -0,0 +1 @@
+../../Task/Short-circuit-evaluation/AWK
\ No newline at end of file
diff --git a/Lang/AWK/Sort-stability b/Lang/AWK/Sort-stability
new file mode 120000
index 0000000000..621e3b07c3
--- /dev/null
+++ b/Lang/AWK/Sort-stability
@@ -0,0 +1 @@
+../../Task/Sort-stability/AWK
\ No newline at end of file
diff --git a/Lang/AWK/Standard-deviation b/Lang/AWK/Standard-deviation
new file mode 120000
index 0000000000..1588b4214c
--- /dev/null
+++ b/Lang/AWK/Standard-deviation
@@ -0,0 +1 @@
+../../Task/Standard-deviation/AWK
\ No newline at end of file
diff --git a/Lang/AWK/String-interpolation--included- b/Lang/AWK/String-interpolation--included-
new file mode 120000
index 0000000000..7ced343cd3
--- /dev/null
+++ b/Lang/AWK/String-interpolation--included-
@@ -0,0 +1 @@
+../../Task/String-interpolation--included-/AWK
\ No newline at end of file
diff --git a/Lang/AWK/Strip-control-codes-and-extended-characters-from-a-string b/Lang/AWK/Strip-control-codes-and-extended-characters-from-a-string
new file mode 120000
index 0000000000..d6d89a886f
--- /dev/null
+++ b/Lang/AWK/Strip-control-codes-and-extended-characters-from-a-string
@@ -0,0 +1 @@
+../../Task/Strip-control-codes-and-extended-characters-from-a-string/AWK
\ No newline at end of file
diff --git a/Lang/AWK/Symmetric-difference b/Lang/AWK/Symmetric-difference
new file mode 120000
index 0000000000..7cf4d91247
--- /dev/null
+++ b/Lang/AWK/Symmetric-difference
@@ -0,0 +1 @@
+../../Task/Symmetric-difference/AWK
\ No newline at end of file
diff --git a/Lang/AWK/Take-notes-on-the-command-line b/Lang/AWK/Take-notes-on-the-command-line
new file mode 120000
index 0000000000..faf60a23da
--- /dev/null
+++ b/Lang/AWK/Take-notes-on-the-command-line
@@ -0,0 +1 @@
+../../Task/Take-notes-on-the-command-line/AWK
\ No newline at end of file
diff --git a/Lang/Ada/Topswops b/Lang/Ada/Topswops
new file mode 120000
index 0000000000..b940246fbc
--- /dev/null
+++ b/Lang/Ada/Topswops
@@ -0,0 +1 @@
+../../Task/Topswops/Ada
\ No newline at end of file
diff --git a/Lang/Ada/Verify-distribution-uniformity-Chi-squared-test b/Lang/Ada/Verify-distribution-uniformity-Chi-squared-test
new file mode 120000
index 0000000000..5052bede26
--- /dev/null
+++ b/Lang/Ada/Verify-distribution-uniformity-Chi-squared-test
@@ -0,0 +1 @@
+../../Task/Verify-distribution-uniformity-Chi-squared-test/Ada
\ No newline at end of file
diff --git a/Lang/Ada/Zeckendorf-number-representation b/Lang/Ada/Zeckendorf-number-representation
new file mode 120000
index 0000000000..1cbd441207
--- /dev/null
+++ b/Lang/Ada/Zeckendorf-number-representation
@@ -0,0 +1 @@
+../../Task/Zeckendorf-number-representation/Ada
\ No newline at end of file
diff --git a/Lang/Aime/A+B b/Lang/Aime/A+B
new file mode 120000
index 0000000000..a1aad3c143
--- /dev/null
+++ b/Lang/Aime/A+B
@@ -0,0 +1 @@
+../../Task/A+B/Aime
\ No newline at end of file
diff --git a/Lang/Aime/Associative-array-Creation b/Lang/Aime/Associative-array-Creation
new file mode 120000
index 0000000000..c8e7dd2cd4
--- /dev/null
+++ b/Lang/Aime/Associative-array-Creation
@@ -0,0 +1 @@
+../../Task/Associative-array-Creation/Aime
\ No newline at end of file
diff --git a/Lang/Aime/Associative-array-Iteration b/Lang/Aime/Associative-array-Iteration
new file mode 120000
index 0000000000..c7a338d272
--- /dev/null
+++ b/Lang/Aime/Associative-array-Iteration
@@ -0,0 +1 @@
+../../Task/Associative-array-Iteration/Aime
\ No newline at end of file
diff --git a/Lang/Aime/Entropy b/Lang/Aime/Entropy
new file mode 120000
index 0000000000..d1878710ee
--- /dev/null
+++ b/Lang/Aime/Entropy
@@ -0,0 +1 @@
+../../Task/Entropy/Aime
\ No newline at end of file
diff --git a/Lang/Aime/Evolutionary-algorithm b/Lang/Aime/Evolutionary-algorithm
new file mode 120000
index 0000000000..01f297135b
--- /dev/null
+++ b/Lang/Aime/Evolutionary-algorithm
@@ -0,0 +1 @@
+../../Task/Evolutionary-algorithm/Aime
\ No newline at end of file
diff --git a/Lang/Aime/Exceptions b/Lang/Aime/Exceptions
new file mode 120000
index 0000000000..bf48311d3f
--- /dev/null
+++ b/Lang/Aime/Exceptions
@@ -0,0 +1 @@
+../../Task/Exceptions/Aime
\ No newline at end of file
diff --git a/Lang/Aime/Exceptions-Catch-an-exception-thrown-in-a-nested-call b/Lang/Aime/Exceptions-Catch-an-exception-thrown-in-a-nested-call
new file mode 120000
index 0000000000..69e3720f97
--- /dev/null
+++ b/Lang/Aime/Exceptions-Catch-an-exception-thrown-in-a-nested-call
@@ -0,0 +1 @@
+../../Task/Exceptions-Catch-an-exception-thrown-in-a-nested-call/Aime
\ No newline at end of file
diff --git a/Lang/Aime/Knuth-shuffle b/Lang/Aime/Knuth-shuffle
new file mode 120000
index 0000000000..5f26899886
--- /dev/null
+++ b/Lang/Aime/Knuth-shuffle
@@ -0,0 +1 @@
+../../Task/Knuth-shuffle/Aime
\ No newline at end of file
diff --git a/Lang/Aime/Loops-For-with-a-specified-step b/Lang/Aime/Loops-For-with-a-specified-step
new file mode 120000
index 0000000000..46bdb787e1
--- /dev/null
+++ b/Lang/Aime/Loops-For-with-a-specified-step
@@ -0,0 +1 @@
+../../Task/Loops-For-with-a-specified-step/Aime
\ No newline at end of file
diff --git a/Lang/Aime/Loops-While b/Lang/Aime/Loops-While
new file mode 120000
index 0000000000..7d3094624a
--- /dev/null
+++ b/Lang/Aime/Loops-While
@@ -0,0 +1 @@
+../../Task/Loops-While/Aime
\ No newline at end of file
diff --git a/Lang/Aime/Sleep b/Lang/Aime/Sleep
new file mode 120000
index 0000000000..6e052af08e
--- /dev/null
+++ b/Lang/Aime/Sleep
@@ -0,0 +1 @@
+../../Task/Sleep/Aime
\ No newline at end of file
diff --git a/Lang/Aime/Stair-climbing-puzzle b/Lang/Aime/Stair-climbing-puzzle
new file mode 120000
index 0000000000..d2c018d7c0
--- /dev/null
+++ b/Lang/Aime/Stair-climbing-puzzle
@@ -0,0 +1 @@
+../../Task/Stair-climbing-puzzle/Aime
\ No newline at end of file
diff --git a/Lang/Aime/Strip-a-set-of-characters-from-a-string b/Lang/Aime/Strip-a-set-of-characters-from-a-string
new file mode 120000
index 0000000000..031922ac50
--- /dev/null
+++ b/Lang/Aime/Strip-a-set-of-characters-from-a-string
@@ -0,0 +1 @@
+../../Task/Strip-a-set-of-characters-from-a-string/Aime
\ No newline at end of file
diff --git a/Lang/Aime/Substring b/Lang/Aime/Substring
new file mode 120000
index 0000000000..bb3d3bde66
--- /dev/null
+++ b/Lang/Aime/Substring
@@ -0,0 +1 @@
+../../Task/Substring/Aime
\ No newline at end of file
diff --git a/Lang/Aime/Sum-and-product-of-an-array b/Lang/Aime/Sum-and-product-of-an-array
new file mode 120000
index 0000000000..9ec05cd525
--- /dev/null
+++ b/Lang/Aime/Sum-and-product-of-an-array
@@ -0,0 +1 @@
+../../Task/Sum-and-product-of-an-array/Aime
\ No newline at end of file
diff --git a/Lang/Aime/Temperature-conversion b/Lang/Aime/Temperature-conversion
new file mode 120000
index 0000000000..77a8c2b525
--- /dev/null
+++ b/Lang/Aime/Temperature-conversion
@@ -0,0 +1 @@
+../../Task/Temperature-conversion/Aime
\ No newline at end of file
diff --git a/Lang/Aime/Text-processing-2 b/Lang/Aime/Text-processing-2
new file mode 120000
index 0000000000..29ecd3998e
--- /dev/null
+++ b/Lang/Aime/Text-processing-2
@@ -0,0 +1 @@
+../../Task/Text-processing-2/Aime
\ No newline at end of file
diff --git a/Lang/Aime/Top-rank-per-group b/Lang/Aime/Top-rank-per-group
new file mode 120000
index 0000000000..dd0920a60f
--- /dev/null
+++ b/Lang/Aime/Top-rank-per-group
@@ -0,0 +1 @@
+../../Task/Top-rank-per-group/Aime
\ No newline at end of file
diff --git a/Lang/Aime/Unbias-a-random-generator b/Lang/Aime/Unbias-a-random-generator
new file mode 120000
index 0000000000..f553fbdde7
--- /dev/null
+++ b/Lang/Aime/Unbias-a-random-generator
@@ -0,0 +1 @@
+../../Task/Unbias-a-random-generator/Aime
\ No newline at end of file
diff --git a/Lang/Aime/Variadic-function b/Lang/Aime/Variadic-function
new file mode 120000
index 0000000000..0bf560b39d
--- /dev/null
+++ b/Lang/Aime/Variadic-function
@@ -0,0 +1 @@
+../../Task/Variadic-function/Aime
\ No newline at end of file
diff --git a/Lang/AmigaE/Arrays b/Lang/AmigaE/Arrays
new file mode 120000
index 0000000000..9726313064
--- /dev/null
+++ b/Lang/AmigaE/Arrays
@@ -0,0 +1 @@
+../../Task/Arrays/AmigaE
\ No newline at end of file
diff --git a/Lang/AppleScript/Arrays b/Lang/AppleScript/Arrays
new file mode 120000
index 0000000000..150990ccd0
--- /dev/null
+++ b/Lang/AppleScript/Arrays
@@ -0,0 +1 @@
+../../Task/Arrays/AppleScript
\ No newline at end of file
diff --git a/Lang/Applesoft-BASIC/Averages-Median b/Lang/Applesoft-BASIC/Averages-Median
new file mode 120000
index 0000000000..cf5f69fd77
--- /dev/null
+++ b/Lang/Applesoft-BASIC/Averages-Median
@@ -0,0 +1 @@
+../../Task/Averages-Median/Applesoft-BASIC
\ No newline at end of file
diff --git a/Lang/Applesoft-BASIC/Boolean-values b/Lang/Applesoft-BASIC/Boolean-values
new file mode 120000
index 0000000000..0304509338
--- /dev/null
+++ b/Lang/Applesoft-BASIC/Boolean-values
@@ -0,0 +1 @@
+../../Task/Boolean-values/Applesoft-BASIC
\ No newline at end of file
diff --git a/Lang/Applesoft-BASIC/Check-that-file-exists b/Lang/Applesoft-BASIC/Check-that-file-exists
new file mode 120000
index 0000000000..0f374ded51
--- /dev/null
+++ b/Lang/Applesoft-BASIC/Check-that-file-exists
@@ -0,0 +1 @@
+../../Task/Check-that-file-exists/Applesoft-BASIC
\ No newline at end of file
diff --git a/Lang/Applesoft-BASIC/Execute-a-system-command b/Lang/Applesoft-BASIC/Execute-a-system-command
new file mode 120000
index 0000000000..c880437f4e
--- /dev/null
+++ b/Lang/Applesoft-BASIC/Execute-a-system-command
@@ -0,0 +1 @@
+../../Task/Execute-a-system-command/Applesoft-BASIC
\ No newline at end of file
diff --git a/Lang/Applesoft-BASIC/Factorial b/Lang/Applesoft-BASIC/Factorial
new file mode 120000
index 0000000000..b0b5d40436
--- /dev/null
+++ b/Lang/Applesoft-BASIC/Factorial
@@ -0,0 +1 @@
+../../Task/Factorial/Applesoft-BASIC
\ No newline at end of file
diff --git a/Lang/Applesoft-BASIC/Greatest-element-of-a-list b/Lang/Applesoft-BASIC/Greatest-element-of-a-list
new file mode 120000
index 0000000000..7e1555179b
--- /dev/null
+++ b/Lang/Applesoft-BASIC/Greatest-element-of-a-list
@@ -0,0 +1 @@
+../../Task/Greatest-element-of-a-list/Applesoft-BASIC
\ No newline at end of file
diff --git a/Lang/Applesoft-BASIC/Include-a-file b/Lang/Applesoft-BASIC/Include-a-file
new file mode 120000
index 0000000000..58819bac5e
--- /dev/null
+++ b/Lang/Applesoft-BASIC/Include-a-file
@@ -0,0 +1 @@
+../../Task/Include-a-file/Applesoft-BASIC
\ No newline at end of file
diff --git a/Lang/Applesoft-BASIC/Jump-anywhere b/Lang/Applesoft-BASIC/Jump-anywhere
new file mode 120000
index 0000000000..8b0e2c46be
--- /dev/null
+++ b/Lang/Applesoft-BASIC/Jump-anywhere
@@ -0,0 +1 @@
+../../Task/Jump-anywhere/Applesoft-BASIC
\ No newline at end of file
diff --git a/Lang/Applesoft-BASIC/Number-names b/Lang/Applesoft-BASIC/Number-names
new file mode 120000
index 0000000000..e4c97a55e3
--- /dev/null
+++ b/Lang/Applesoft-BASIC/Number-names
@@ -0,0 +1 @@
+../../Task/Number-names/Applesoft-BASIC
\ No newline at end of file
diff --git a/Lang/Applesoft-BASIC/One-of-n-lines-in-a-file b/Lang/Applesoft-BASIC/One-of-n-lines-in-a-file
new file mode 120000
index 0000000000..ccedb0a75c
--- /dev/null
+++ b/Lang/Applesoft-BASIC/One-of-n-lines-in-a-file
@@ -0,0 +1 @@
+../../Task/One-of-n-lines-in-a-file/Applesoft-BASIC
\ No newline at end of file
diff --git a/Lang/Applesoft-BASIC/Palindrome-detection b/Lang/Applesoft-BASIC/Palindrome-detection
new file mode 120000
index 0000000000..13d4b95ad5
--- /dev/null
+++ b/Lang/Applesoft-BASIC/Palindrome-detection
@@ -0,0 +1 @@
+../../Task/Palindrome-detection/Applesoft-BASIC
\ No newline at end of file
diff --git a/Lang/Applesoft-BASIC/Program-name b/Lang/Applesoft-BASIC/Program-name
new file mode 120000
index 0000000000..dacfed7157
--- /dev/null
+++ b/Lang/Applesoft-BASIC/Program-name
@@ -0,0 +1 @@
+../../Task/Program-name/Applesoft-BASIC
\ No newline at end of file
diff --git a/Lang/Applesoft-BASIC/Quine b/Lang/Applesoft-BASIC/Quine
new file mode 120000
index 0000000000..4b97f31ff9
--- /dev/null
+++ b/Lang/Applesoft-BASIC/Quine
@@ -0,0 +1 @@
+../../Task/Quine/Applesoft-BASIC
\ No newline at end of file
diff --git a/Lang/Applesoft-BASIC/Remove-duplicate-elements b/Lang/Applesoft-BASIC/Remove-duplicate-elements
new file mode 120000
index 0000000000..642e2bad19
--- /dev/null
+++ b/Lang/Applesoft-BASIC/Remove-duplicate-elements
@@ -0,0 +1 @@
+../../Task/Remove-duplicate-elements/Applesoft-BASIC
\ No newline at end of file
diff --git a/Lang/Applesoft-BASIC/Reverse-a-string b/Lang/Applesoft-BASIC/Reverse-a-string
new file mode 120000
index 0000000000..590a48a223
--- /dev/null
+++ b/Lang/Applesoft-BASIC/Reverse-a-string
@@ -0,0 +1 @@
+../../Task/Reverse-a-string/Applesoft-BASIC
\ No newline at end of file
diff --git a/Lang/Applesoft-BASIC/Sierpinski-carpet b/Lang/Applesoft-BASIC/Sierpinski-carpet
new file mode 120000
index 0000000000..8a1e23a181
--- /dev/null
+++ b/Lang/Applesoft-BASIC/Sierpinski-carpet
@@ -0,0 +1 @@
+../../Task/Sierpinski-carpet/Applesoft-BASIC
\ No newline at end of file
diff --git a/Lang/Applesoft-BASIC/String-length b/Lang/Applesoft-BASIC/String-length
new file mode 120000
index 0000000000..abf2a324dd
--- /dev/null
+++ b/Lang/Applesoft-BASIC/String-length
@@ -0,0 +1 @@
+../../Task/String-length/Applesoft-BASIC
\ No newline at end of file
diff --git a/Lang/Applesoft-BASIC/Yin-and-yang b/Lang/Applesoft-BASIC/Yin-and-yang
new file mode 120000
index 0000000000..906964db03
--- /dev/null
+++ b/Lang/Applesoft-BASIC/Yin-and-yang
@@ -0,0 +1 @@
+../../Task/Yin-and-yang/Applesoft-BASIC
\ No newline at end of file
diff --git a/Lang/Applesoft-BASIC/Zig-zag-matrix b/Lang/Applesoft-BASIC/Zig-zag-matrix
new file mode 120000
index 0000000000..053f1a72d6
--- /dev/null
+++ b/Lang/Applesoft-BASIC/Zig-zag-matrix
@@ -0,0 +1 @@
+../../Task/Zig-zag-matrix/Applesoft-BASIC
\ No newline at end of file
diff --git a/Lang/Asymptote/Comments b/Lang/Asymptote/Comments
new file mode 120000
index 0000000000..8a55495668
--- /dev/null
+++ b/Lang/Asymptote/Comments
@@ -0,0 +1 @@
+../../Task/Comments/Asymptote
\ No newline at end of file
diff --git a/Lang/Asymptote/Terminal-control-Ringing-the-terminal-bell b/Lang/Asymptote/Terminal-control-Ringing-the-terminal-bell
new file mode 120000
index 0000000000..1bea7bd9c2
--- /dev/null
+++ b/Lang/Asymptote/Terminal-control-Ringing-the-terminal-bell
@@ -0,0 +1 @@
+../../Task/Terminal-control-Ringing-the-terminal-bell/Asymptote
\ No newline at end of file
diff --git a/Lang/AutoIt/Ackermann-function b/Lang/AutoIt/Ackermann-function
new file mode 120000
index 0000000000..34a29d27b0
--- /dev/null
+++ b/Lang/AutoIt/Ackermann-function
@@ -0,0 +1 @@
+../../Task/Ackermann-function/AutoIt
\ No newline at end of file
diff --git a/Lang/BASIC/Bitmap-Bresenhams-line-algorithm b/Lang/BASIC/Bitmap-Bresenhams-line-algorithm
new file mode 120000
index 0000000000..4a1312551d
--- /dev/null
+++ b/Lang/BASIC/Bitmap-Bresenhams-line-algorithm
@@ -0,0 +1 @@
+../../Task/Bitmap-Bresenhams-line-algorithm/BASIC
\ No newline at end of file
diff --git a/Lang/BASIC/Comments b/Lang/BASIC/Comments
new file mode 120000
index 0000000000..365e3561c3
--- /dev/null
+++ b/Lang/BASIC/Comments
@@ -0,0 +1 @@
+../../Task/Comments/BASIC
\ No newline at end of file
diff --git a/Lang/BASIC/Logical-operations b/Lang/BASIC/Logical-operations
new file mode 120000
index 0000000000..b71bcb3ccc
--- /dev/null
+++ b/Lang/BASIC/Logical-operations
@@ -0,0 +1 @@
+../../Task/Logical-operations/BASIC
\ No newline at end of file
diff --git a/Lang/BASIC/Sum-digits-of-an-integer b/Lang/BASIC/Sum-digits-of-an-integer
new file mode 120000
index 0000000000..ba1fb78abc
--- /dev/null
+++ b/Lang/BASIC/Sum-digits-of-an-integer
@@ -0,0 +1 @@
+../../Task/Sum-digits-of-an-integer/BASIC
\ No newline at end of file
diff --git a/Lang/BASIC256/Temperature-conversion b/Lang/BASIC256/Temperature-conversion
new file mode 120000
index 0000000000..5aa522054a
--- /dev/null
+++ b/Lang/BASIC256/Temperature-conversion
@@ -0,0 +1 @@
+../../Task/Temperature-conversion/BASIC256
\ No newline at end of file
diff --git a/Lang/BBC-BASIC/Harshad-or-Niven-series b/Lang/BBC-BASIC/Harshad-or-Niven-series
new file mode 120000
index 0000000000..d55f68554a
--- /dev/null
+++ b/Lang/BBC-BASIC/Harshad-or-Niven-series
@@ -0,0 +1 @@
+../../Task/Harshad-or-Niven-series/BBC-BASIC
\ No newline at end of file
diff --git a/Lang/BBC-BASIC/Largest-int-from-concatenated-ints b/Lang/BBC-BASIC/Largest-int-from-concatenated-ints
new file mode 120000
index 0000000000..0124431da8
--- /dev/null
+++ b/Lang/BBC-BASIC/Largest-int-from-concatenated-ints
@@ -0,0 +1 @@
+../../Task/Largest-int-from-concatenated-ints/BBC-BASIC
\ No newline at end of file
diff --git a/Lang/Batch-File/Call-a-function b/Lang/Batch-File/Call-a-function
new file mode 120000
index 0000000000..63e28f81b0
--- /dev/null
+++ b/Lang/Batch-File/Call-a-function
@@ -0,0 +1 @@
+../../Task/Call-a-function/Batch-File
\ No newline at end of file
diff --git a/Lang/Batch-File/Empty-string b/Lang/Batch-File/Empty-string
new file mode 120000
index 0000000000..6ed730a55b
--- /dev/null
+++ b/Lang/Batch-File/Empty-string
@@ -0,0 +1 @@
+../../Task/Empty-string/Batch-File
\ No newline at end of file
diff --git a/Lang/Batch-File/Read-a-file-line-by-line b/Lang/Batch-File/Read-a-file-line-by-line
new file mode 120000
index 0000000000..d7ff6a4973
--- /dev/null
+++ b/Lang/Batch-File/Read-a-file-line-by-line
@@ -0,0 +1 @@
+../../Task/Read-a-file-line-by-line/Batch-File
\ No newline at end of file
diff --git a/Lang/Befunge/Guess-the-number b/Lang/Befunge/Guess-the-number
new file mode 120000
index 0000000000..f1680a9a8a
--- /dev/null
+++ b/Lang/Befunge/Guess-the-number
@@ -0,0 +1 @@
+../../Task/Guess-the-number/Befunge
\ No newline at end of file
diff --git a/Lang/Befunge/Run-length-encoding b/Lang/Befunge/Run-length-encoding
new file mode 120000
index 0000000000..8a6bfae48c
--- /dev/null
+++ b/Lang/Befunge/Run-length-encoding
@@ -0,0 +1 @@
+../../Task/Run-length-encoding/Befunge
\ No newline at end of file
diff --git a/Lang/BlitzMax/Number-names b/Lang/BlitzMax/Number-names
new file mode 120000
index 0000000000..fb856539b0
--- /dev/null
+++ b/Lang/BlitzMax/Number-names
@@ -0,0 +1 @@
+../../Task/Number-names/BlitzMax
\ No newline at end of file
diff --git a/Lang/Bracmat/Accumulator-factory b/Lang/Bracmat/Accumulator-factory
new file mode 120000
index 0000000000..a872e5d7b2
--- /dev/null
+++ b/Lang/Bracmat/Accumulator-factory
@@ -0,0 +1 @@
+../../Task/Accumulator-factory/Bracmat
\ No newline at end of file
diff --git a/Lang/Bracmat/Character-codes b/Lang/Bracmat/Character-codes
new file mode 120000
index 0000000000..ec2729c099
--- /dev/null
+++ b/Lang/Bracmat/Character-codes
@@ -0,0 +1 @@
+../../Task/Character-codes/Bracmat
\ No newline at end of file
diff --git a/Lang/Bracmat/Huffman-coding b/Lang/Bracmat/Huffman-coding
new file mode 120000
index 0000000000..61701f8afb
--- /dev/null
+++ b/Lang/Bracmat/Huffman-coding
@@ -0,0 +1 @@
+../../Task/Huffman-coding/Bracmat
\ No newline at end of file
diff --git a/Lang/Bracmat/Include-a-file b/Lang/Bracmat/Include-a-file
new file mode 120000
index 0000000000..27bf1322b8
--- /dev/null
+++ b/Lang/Bracmat/Include-a-file
@@ -0,0 +1 @@
+../../Task/Include-a-file/Bracmat
\ No newline at end of file
diff --git a/Lang/Bracmat/Largest-int-from-concatenated-ints b/Lang/Bracmat/Largest-int-from-concatenated-ints
new file mode 120000
index 0000000000..12c31531f1
--- /dev/null
+++ b/Lang/Bracmat/Largest-int-from-concatenated-ints
@@ -0,0 +1 @@
+../../Task/Largest-int-from-concatenated-ints/Bracmat
\ No newline at end of file
diff --git a/Lang/Bracmat/Real-constants-and-functions b/Lang/Bracmat/Real-constants-and-functions
new file mode 120000
index 0000000000..b7426d5a4c
--- /dev/null
+++ b/Lang/Bracmat/Real-constants-and-functions
@@ -0,0 +1 @@
+../../Task/Real-constants-and-functions/Bracmat
\ No newline at end of file
diff --git a/Lang/Bracmat/Temperature-conversion b/Lang/Bracmat/Temperature-conversion
new file mode 120000
index 0000000000..dcc80a2a39
--- /dev/null
+++ b/Lang/Bracmat/Temperature-conversion
@@ -0,0 +1 @@
+../../Task/Temperature-conversion/Bracmat
\ No newline at end of file
diff --git a/Lang/Bracmat/Terminal-control-Ringing-the-terminal-bell b/Lang/Bracmat/Terminal-control-Ringing-the-terminal-bell
new file mode 120000
index 0000000000..56b60d2c10
--- /dev/null
+++ b/Lang/Bracmat/Terminal-control-Ringing-the-terminal-bell
@@ -0,0 +1 @@
+../../Task/Terminal-control-Ringing-the-terminal-bell/Bracmat
\ No newline at end of file
diff --git a/Lang/Bracmat/Truncatable-primes b/Lang/Bracmat/Truncatable-primes
new file mode 120000
index 0000000000..ad2781c7bf
--- /dev/null
+++ b/Lang/Bracmat/Truncatable-primes
@@ -0,0 +1 @@
+../../Task/Truncatable-primes/Bracmat
\ No newline at end of file
diff --git a/Lang/Bracmat/Unicode-variable-names b/Lang/Bracmat/Unicode-variable-names
new file mode 120000
index 0000000000..2190144529
--- /dev/null
+++ b/Lang/Bracmat/Unicode-variable-names
@@ -0,0 +1 @@
+../../Task/Unicode-variable-names/Bracmat
\ No newline at end of file
diff --git a/Lang/Bracmat/Vampire-number b/Lang/Bracmat/Vampire-number
new file mode 120000
index 0000000000..440d464a18
--- /dev/null
+++ b/Lang/Bracmat/Vampire-number
@@ -0,0 +1 @@
+../../Task/Vampire-number/Bracmat
\ No newline at end of file
diff --git a/Lang/Bracmat/Word-wrap b/Lang/Bracmat/Word-wrap
new file mode 120000
index 0000000000..d433bf7221
--- /dev/null
+++ b/Lang/Bracmat/Word-wrap
@@ -0,0 +1 @@
+../../Task/Word-wrap/Bracmat
\ No newline at end of file
diff --git a/Lang/Bracmat/XML-Input b/Lang/Bracmat/XML-Input
new file mode 120000
index 0000000000..2508a7c298
--- /dev/null
+++ b/Lang/Bracmat/XML-Input
@@ -0,0 +1 @@
+../../Task/XML-Input/Bracmat
\ No newline at end of file
diff --git a/Lang/Bracmat/XML-Output b/Lang/Bracmat/XML-Output
new file mode 120000
index 0000000000..40fb75f9bf
--- /dev/null
+++ b/Lang/Bracmat/XML-Output
@@ -0,0 +1 @@
+../../Task/XML-Output/Bracmat
\ No newline at end of file
diff --git a/Lang/Brat/Greatest-element-of-a-list b/Lang/Brat/Greatest-element-of-a-list
new file mode 120000
index 0000000000..8ce898a123
--- /dev/null
+++ b/Lang/Brat/Greatest-element-of-a-list
@@ -0,0 +1 @@
+../../Task/Greatest-element-of-a-list/Brat
\ No newline at end of file
diff --git a/Lang/Brat/Regular-expressions b/Lang/Brat/Regular-expressions
new file mode 120000
index 0000000000..b1c0c7bdbe
--- /dev/null
+++ b/Lang/Brat/Regular-expressions
@@ -0,0 +1 @@
+../../Task/Regular-expressions/Brat
\ No newline at end of file
diff --git a/Lang/C++/CRC-32 b/Lang/C++/CRC-32
new file mode 120000
index 0000000000..8c6e490e99
--- /dev/null
+++ b/Lang/C++/CRC-32
@@ -0,0 +1 @@
+../../Task/CRC-32/C++
\ No newline at end of file
diff --git a/Lang/C++/Entropy b/Lang/C++/Entropy
new file mode 120000
index 0000000000..cb9e6af3fc
--- /dev/null
+++ b/Lang/C++/Entropy
@@ -0,0 +1 @@
+../../Task/Entropy/C++
\ No newline at end of file
diff --git a/Lang/C++/Identity-matrix b/Lang/C++/Identity-matrix
new file mode 120000
index 0000000000..22374109a2
--- /dev/null
+++ b/Lang/C++/Identity-matrix
@@ -0,0 +1 @@
+../../Task/Identity-matrix/C++
\ No newline at end of file
diff --git a/Lang/C++/Literals-String b/Lang/C++/Literals-String
new file mode 120000
index 0000000000..383f96ba62
--- /dev/null
+++ b/Lang/C++/Literals-String
@@ -0,0 +1 @@
+../../Task/Literals-String/C++
\ No newline at end of file
diff --git a/Lang/C++/Permutations-by-swapping b/Lang/C++/Permutations-by-swapping
new file mode 120000
index 0000000000..1af910a025
--- /dev/null
+++ b/Lang/C++/Permutations-by-swapping
@@ -0,0 +1 @@
+../../Task/Permutations-by-swapping/C++
\ No newline at end of file
diff --git a/Lang/C++/Pointers-and-references b/Lang/C++/Pointers-and-references
new file mode 120000
index 0000000000..6aca3c34db
--- /dev/null
+++ b/Lang/C++/Pointers-and-references
@@ -0,0 +1 @@
+../../Task/Pointers-and-references/C++
\ No newline at end of file
diff --git a/Lang/C++/Read-a-specific-line-from-a-file b/Lang/C++/Read-a-specific-line-from-a-file
new file mode 120000
index 0000000000..b5eb328cb0
--- /dev/null
+++ b/Lang/C++/Read-a-specific-line-from-a-file
@@ -0,0 +1 @@
+../../Task/Read-a-specific-line-from-a-file/C++
\ No newline at end of file
diff --git a/Lang/C++/Sorting-algorithms-Stooge-sort b/Lang/C++/Sorting-algorithms-Stooge-sort
new file mode 120000
index 0000000000..ecd2dd46ff
--- /dev/null
+++ b/Lang/C++/Sorting-algorithms-Stooge-sort
@@ -0,0 +1 @@
+../../Task/Sorting-algorithms-Stooge-sort/C++
\ No newline at end of file
diff --git a/Lang/C++/Tic-tac-toe b/Lang/C++/Tic-tac-toe
new file mode 120000
index 0000000000..2dc26a2544
--- /dev/null
+++ b/Lang/C++/Tic-tac-toe
@@ -0,0 +1 @@
+../../Task/Tic-tac-toe/C++
\ No newline at end of file
diff --git a/Lang/C++/Universal-Turing-machine b/Lang/C++/Universal-Turing-machine
new file mode 120000
index 0000000000..70dc42c533
--- /dev/null
+++ b/Lang/C++/Universal-Turing-machine
@@ -0,0 +1 @@
+../../Task/Universal-Turing-machine/C++
\ No newline at end of file
diff --git a/Lang/C++/Voronoi-diagram b/Lang/C++/Voronoi-diagram
new file mode 120000
index 0000000000..eb4c1a3f7e
--- /dev/null
+++ b/Lang/C++/Voronoi-diagram
@@ -0,0 +1 @@
+../../Task/Voronoi-diagram/C++
\ No newline at end of file
diff --git a/Lang/C++/Word-wrap b/Lang/C++/Word-wrap
new file mode 120000
index 0000000000..4ac66b9eed
--- /dev/null
+++ b/Lang/C++/Word-wrap
@@ -0,0 +1 @@
+../../Task/Word-wrap/C++
\ No newline at end of file
diff --git a/Lang/C++/Write-language-name-in-3D-ASCII b/Lang/C++/Write-language-name-in-3D-ASCII
new file mode 120000
index 0000000000..8e81c560e9
--- /dev/null
+++ b/Lang/C++/Write-language-name-in-3D-ASCII
@@ -0,0 +1 @@
+../../Task/Write-language-name-in-3D-ASCII/C++
\ No newline at end of file
diff --git a/Lang/C-sharp/Multifactorial b/Lang/C-sharp/Multifactorial
new file mode 120000
index 0000000000..dc6252968a
--- /dev/null
+++ b/Lang/C-sharp/Multifactorial
@@ -0,0 +1 @@
+../../Task/Multifactorial/C-sharp
\ No newline at end of file
diff --git a/Lang/C/Address-of-a-variable b/Lang/C/Address-of-a-variable
new file mode 120000
index 0000000000..86b2e5a3bc
--- /dev/null
+++ b/Lang/C/Address-of-a-variable
@@ -0,0 +1 @@
+../../Task/Address-of-a-variable/C
\ No newline at end of file
diff --git a/Lang/C/Pointers-and-references b/Lang/C/Pointers-and-references
new file mode 120000
index 0000000000..0e35e3ac83
--- /dev/null
+++ b/Lang/C/Pointers-and-references
@@ -0,0 +1 @@
+../../Task/Pointers-and-references/C
\ No newline at end of file
diff --git a/Lang/COBOL/00DESCRIPTION b/Lang/COBOL/00DESCRIPTION
index 3306d9f996..e33b522f75 100644
--- a/Lang/COBOL/00DESCRIPTION
+++ b/Lang/COBOL/00DESCRIPTION
@@ -1,7 +1,26 @@
-{{stub}}{{language|COBOL
+{{language|COBOL
+|exec=machine
|strength=strong
|checking=static
+|safety=strong
|gc=no
+|parampass=both
+|express=explicit
+|tags=cobol
|LCT=yes
|bnf=http://www.cs.vu.nl/~x/grammars/cobol/}}
-COmmon Business Oriented Language
\ No newline at end of file
+COBOL, an acronym for 'COmmon Business Oriented Language', is one of the oldest programming languages, being created in 1959. It was designed by a CODASYL (Conference on Data System Languages) committee with Grace Hopper. It is primarily used in business, finance and administration for companies and governments. It is primarily an imperative, structured language, with support for object-oriented programming added in 2002.
+
+===Versions===
+* '''COBOL 1965''' added some new features to the original specification.
+* '''ANS COBOL 1968''' is the first COBOL standard and was published by [[ANSI]]. It was created to improve compatibility between the different versions of the language.
+* '''COBOL 1974''' added a few more features to the language, including the ability to ACCEPT the date, day and time, and the file organization clause.
+* '''COBOL 1985''' added many new features to COBOL, notably including: scope terminators (END-IF, END-READ, etc.), the EVALUATE verb, the CONTINUE verb, inline PERFORM statements, the ability to pass arguments by content, and the deprecation of the infamous ALTER verb. This standard was followed by the intrinsic functions amendment and a clarifications amendment in 1989 and 1991, respectively.
+* '''COBOL 2002''' is the current version of COBOL and was published by [[ISO]] as ISO/IEC 1989. It included a host of new features, most notably including object-oriented programming. However, there were also other features, including: floating-point support, portable arithmetic results, pointers, calling conventions to other languages, function prototypes, [[XML]] facilities and support for execution within framework environments. This standard has suffered from poor vendor support, due to little commercial demand for the new features.John Billman & Huib Klink, 'Thoughts on the Future of COBOL Standardization', [http://www.cobolstandard.info/j4/files/08-0034.pdf]
+* '''COBOL 201X''' is the next version of the standard version of the standard and the final draft is expected to be published in 2014. It will likely include outstanding technical reports which include object finalization and a collection class library.
+
+===References===
+
+
+{{language programming paradigm|Imperative}}
+{{language programming paradigm|Object-oriented}}
\ No newline at end of file
diff --git a/Lang/COBOL/Abstract-type b/Lang/COBOL/Abstract-type
new file mode 120000
index 0000000000..548bddc32c
--- /dev/null
+++ b/Lang/COBOL/Abstract-type
@@ -0,0 +1 @@
+../../Task/Abstract-type/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Ackermann-function b/Lang/COBOL/Ackermann-function
new file mode 120000
index 0000000000..98fdc8fc5b
--- /dev/null
+++ b/Lang/COBOL/Ackermann-function
@@ -0,0 +1 @@
+../../Task/Ackermann-function/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Arithmetic-Integer b/Lang/COBOL/Arithmetic-Integer
new file mode 120000
index 0000000000..7fab9b8de6
--- /dev/null
+++ b/Lang/COBOL/Arithmetic-Integer
@@ -0,0 +1 @@
+../../Task/Arithmetic-Integer/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Arrays b/Lang/COBOL/Arrays
new file mode 120000
index 0000000000..e624ba9fba
--- /dev/null
+++ b/Lang/COBOL/Arrays
@@ -0,0 +1 @@
+../../Task/Arrays/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Averages-Arithmetic-mean b/Lang/COBOL/Averages-Arithmetic-mean
new file mode 120000
index 0000000000..e7abd1dde7
--- /dev/null
+++ b/Lang/COBOL/Averages-Arithmetic-mean
@@ -0,0 +1 @@
+../../Task/Averages-Arithmetic-mean/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Averages-Median b/Lang/COBOL/Averages-Median
new file mode 120000
index 0000000000..4f9f2f7174
--- /dev/null
+++ b/Lang/COBOL/Averages-Median
@@ -0,0 +1 @@
+../../Task/Averages-Median/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Balanced-brackets b/Lang/COBOL/Balanced-brackets
new file mode 120000
index 0000000000..a721c6020a
--- /dev/null
+++ b/Lang/COBOL/Balanced-brackets
@@ -0,0 +1 @@
+../../Task/Balanced-brackets/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Bitwise-operations b/Lang/COBOL/Bitwise-operations
new file mode 120000
index 0000000000..1d6e343b4a
--- /dev/null
+++ b/Lang/COBOL/Bitwise-operations
@@ -0,0 +1 @@
+../../Task/Bitwise-operations/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Boolean-values b/Lang/COBOL/Boolean-values
new file mode 120000
index 0000000000..38febab1ab
--- /dev/null
+++ b/Lang/COBOL/Boolean-values
@@ -0,0 +1 @@
+../../Task/Boolean-values/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Calendar b/Lang/COBOL/Calendar
new file mode 120000
index 0000000000..c67accc8b1
--- /dev/null
+++ b/Lang/COBOL/Calendar
@@ -0,0 +1 @@
+../../Task/Calendar/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Call-a-function b/Lang/COBOL/Call-a-function
new file mode 120000
index 0000000000..41805d5f77
--- /dev/null
+++ b/Lang/COBOL/Call-a-function
@@ -0,0 +1 @@
+../../Task/Call-a-function/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Classes b/Lang/COBOL/Classes
new file mode 120000
index 0000000000..661c7dd68e
--- /dev/null
+++ b/Lang/COBOL/Classes
@@ -0,0 +1 @@
+../../Task/Classes/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Colour-bars-Display b/Lang/COBOL/Colour-bars-Display
new file mode 120000
index 0000000000..ab36134af9
--- /dev/null
+++ b/Lang/COBOL/Colour-bars-Display
@@ -0,0 +1 @@
+../../Task/Colour-bars-Display/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Command-line-arguments b/Lang/COBOL/Command-line-arguments
new file mode 120000
index 0000000000..24b7f932ac
--- /dev/null
+++ b/Lang/COBOL/Command-line-arguments
@@ -0,0 +1 @@
+../../Task/Command-line-arguments/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Copy-a-string b/Lang/COBOL/Copy-a-string
new file mode 120000
index 0000000000..4382dbde1b
--- /dev/null
+++ b/Lang/COBOL/Copy-a-string
@@ -0,0 +1 @@
+../../Task/Copy-a-string/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Count-occurrences-of-a-substring b/Lang/COBOL/Count-occurrences-of-a-substring
new file mode 120000
index 0000000000..0bd29303d8
--- /dev/null
+++ b/Lang/COBOL/Count-occurrences-of-a-substring
@@ -0,0 +1 @@
+../../Task/Count-occurrences-of-a-substring/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Empty-string b/Lang/COBOL/Empty-string
new file mode 120000
index 0000000000..ec92b5d6ef
--- /dev/null
+++ b/Lang/COBOL/Empty-string
@@ -0,0 +1 @@
+../../Task/Empty-string/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Enforced-immutability b/Lang/COBOL/Enforced-immutability
new file mode 120000
index 0000000000..bcdd85c00d
--- /dev/null
+++ b/Lang/COBOL/Enforced-immutability
@@ -0,0 +1 @@
+../../Task/Enforced-immutability/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Environment-variables b/Lang/COBOL/Environment-variables
new file mode 120000
index 0000000000..c2b454c4ae
--- /dev/null
+++ b/Lang/COBOL/Environment-variables
@@ -0,0 +1 @@
+../../Task/Environment-variables/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Euler-method b/Lang/COBOL/Euler-method
new file mode 120000
index 0000000000..b10193b607
--- /dev/null
+++ b/Lang/COBOL/Euler-method
@@ -0,0 +1 @@
+../../Task/Euler-method/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Execute-HQ9+ b/Lang/COBOL/Execute-HQ9+
new file mode 120000
index 0000000000..5badc97d56
--- /dev/null
+++ b/Lang/COBOL/Execute-HQ9+
@@ -0,0 +1 @@
+../../Task/Execute-HQ9+/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Execute-a-system-command b/Lang/COBOL/Execute-a-system-command
new file mode 120000
index 0000000000..07db3048c5
--- /dev/null
+++ b/Lang/COBOL/Execute-a-system-command
@@ -0,0 +1 @@
+../../Task/Execute-a-system-command/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Factorial b/Lang/COBOL/Factorial
new file mode 120000
index 0000000000..2fe08176ec
--- /dev/null
+++ b/Lang/COBOL/Factorial
@@ -0,0 +1 @@
+../../Task/Factorial/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/File-IO b/Lang/COBOL/File-IO
new file mode 120000
index 0000000000..60c249abbc
--- /dev/null
+++ b/Lang/COBOL/File-IO
@@ -0,0 +1 @@
+../../Task/File-IO/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Flow-control-structures b/Lang/COBOL/Flow-control-structures
new file mode 120000
index 0000000000..b9de6214cf
--- /dev/null
+++ b/Lang/COBOL/Flow-control-structures
@@ -0,0 +1 @@
+../../Task/Flow-control-structures/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Forest-fire b/Lang/COBOL/Forest-fire
new file mode 120000
index 0000000000..fdf6ddb8af
--- /dev/null
+++ b/Lang/COBOL/Forest-fire
@@ -0,0 +1 @@
+../../Task/Forest-fire/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Function-prototype b/Lang/COBOL/Function-prototype
new file mode 120000
index 0000000000..47219d846f
--- /dev/null
+++ b/Lang/COBOL/Function-prototype
@@ -0,0 +1 @@
+../../Task/Function-prototype/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Greatest-element-of-a-list b/Lang/COBOL/Greatest-element-of-a-list
new file mode 120000
index 0000000000..e7709e3e2f
--- /dev/null
+++ b/Lang/COBOL/Greatest-element-of-a-list
@@ -0,0 +1 @@
+../../Task/Greatest-element-of-a-list/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Guess-the-number-With-feedback b/Lang/COBOL/Guess-the-number-With-feedback
new file mode 120000
index 0000000000..d3c72338a7
--- /dev/null
+++ b/Lang/COBOL/Guess-the-number-With-feedback
@@ -0,0 +1 @@
+../../Task/Guess-the-number-With-feedback/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Horizontal-sundial-calculations b/Lang/COBOL/Horizontal-sundial-calculations
new file mode 120000
index 0000000000..b5d2140d4a
--- /dev/null
+++ b/Lang/COBOL/Horizontal-sundial-calculations
@@ -0,0 +1 @@
+../../Task/Horizontal-sundial-calculations/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Include-a-file b/Lang/COBOL/Include-a-file
new file mode 120000
index 0000000000..31c883e992
--- /dev/null
+++ b/Lang/COBOL/Include-a-file
@@ -0,0 +1 @@
+../../Task/Include-a-file/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Increment-a-numerical-string b/Lang/COBOL/Increment-a-numerical-string
new file mode 120000
index 0000000000..3f7ba85041
--- /dev/null
+++ b/Lang/COBOL/Increment-a-numerical-string
@@ -0,0 +1 @@
+../../Task/Increment-a-numerical-string/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Inheritance-Multiple b/Lang/COBOL/Inheritance-Multiple
new file mode 120000
index 0000000000..616c640d0b
--- /dev/null
+++ b/Lang/COBOL/Inheritance-Multiple
@@ -0,0 +1 @@
+../../Task/Inheritance-Multiple/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Inheritance-Single b/Lang/COBOL/Inheritance-Single
new file mode 120000
index 0000000000..0f5835e42d
--- /dev/null
+++ b/Lang/COBOL/Inheritance-Single
@@ -0,0 +1 @@
+../../Task/Inheritance-Single/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Integer-comparison b/Lang/COBOL/Integer-comparison
new file mode 120000
index 0000000000..1a6a41b810
--- /dev/null
+++ b/Lang/COBOL/Integer-comparison
@@ -0,0 +1 @@
+../../Task/Integer-comparison/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Integer-sequence b/Lang/COBOL/Integer-sequence
new file mode 120000
index 0000000000..1d9cc7fc4e
--- /dev/null
+++ b/Lang/COBOL/Integer-sequence
@@ -0,0 +1 @@
+../../Task/Integer-sequence/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Knuth-shuffle b/Lang/COBOL/Knuth-shuffle
new file mode 120000
index 0000000000..a32c2f8ca3
--- /dev/null
+++ b/Lang/COBOL/Knuth-shuffle
@@ -0,0 +1 @@
+../../Task/Knuth-shuffle/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Langtons-ant b/Lang/COBOL/Langtons-ant
new file mode 120000
index 0000000000..808bf289d1
--- /dev/null
+++ b/Lang/COBOL/Langtons-ant
@@ -0,0 +1 @@
+../../Task/Langtons-ant/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Leap-year b/Lang/COBOL/Leap-year
new file mode 120000
index 0000000000..d8150c00e7
--- /dev/null
+++ b/Lang/COBOL/Leap-year
@@ -0,0 +1 @@
+../../Task/Leap-year/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Least-common-multiple b/Lang/COBOL/Least-common-multiple
new file mode 120000
index 0000000000..8ad1ea1b14
--- /dev/null
+++ b/Lang/COBOL/Least-common-multiple
@@ -0,0 +1 @@
+../../Task/Least-common-multiple/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Literals-String b/Lang/COBOL/Literals-String
new file mode 120000
index 0000000000..94f82f207d
--- /dev/null
+++ b/Lang/COBOL/Literals-String
@@ -0,0 +1 @@
+../../Task/Literals-String/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Logical-operations b/Lang/COBOL/Logical-operations
new file mode 120000
index 0000000000..4ab49a9300
--- /dev/null
+++ b/Lang/COBOL/Logical-operations
@@ -0,0 +1 @@
+../../Task/Logical-operations/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Loop-over-multiple-arrays-simultaneously b/Lang/COBOL/Loop-over-multiple-arrays-simultaneously
new file mode 120000
index 0000000000..0a9bb43f2a
--- /dev/null
+++ b/Lang/COBOL/Loop-over-multiple-arrays-simultaneously
@@ -0,0 +1 @@
+../../Task/Loop-over-multiple-arrays-simultaneously/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Loops-Continue b/Lang/COBOL/Loops-Continue
new file mode 120000
index 0000000000..e5661d7873
--- /dev/null
+++ b/Lang/COBOL/Loops-Continue
@@ -0,0 +1 @@
+../../Task/Loops-Continue/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Loops-Do-while b/Lang/COBOL/Loops-Do-while
new file mode 120000
index 0000000000..d989f6dc32
--- /dev/null
+++ b/Lang/COBOL/Loops-Do-while
@@ -0,0 +1 @@
+../../Task/Loops-Do-while/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Loops-For-with-a-specified-step b/Lang/COBOL/Loops-For-with-a-specified-step
new file mode 120000
index 0000000000..d4aa48d6a6
--- /dev/null
+++ b/Lang/COBOL/Loops-For-with-a-specified-step
@@ -0,0 +1 @@
+../../Task/Loops-For-with-a-specified-step/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Loops-Foreach b/Lang/COBOL/Loops-Foreach
new file mode 120000
index 0000000000..c1ec0be3d9
--- /dev/null
+++ b/Lang/COBOL/Loops-Foreach
@@ -0,0 +1 @@
+../../Task/Loops-Foreach/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Loops-Nested b/Lang/COBOL/Loops-Nested
new file mode 120000
index 0000000000..445c4c8084
--- /dev/null
+++ b/Lang/COBOL/Loops-Nested
@@ -0,0 +1 @@
+../../Task/Loops-Nested/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Loops-While b/Lang/COBOL/Loops-While
new file mode 120000
index 0000000000..312e9cc438
--- /dev/null
+++ b/Lang/COBOL/Loops-While
@@ -0,0 +1 @@
+../../Task/Loops-While/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Map-range b/Lang/COBOL/Map-range
new file mode 120000
index 0000000000..51c9e7a578
--- /dev/null
+++ b/Lang/COBOL/Map-range
@@ -0,0 +1 @@
+../../Task/Map-range/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Memory-allocation b/Lang/COBOL/Memory-allocation
new file mode 120000
index 0000000000..07fca45cd9
--- /dev/null
+++ b/Lang/COBOL/Memory-allocation
@@ -0,0 +1 @@
+../../Task/Memory-allocation/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Menu b/Lang/COBOL/Menu
new file mode 120000
index 0000000000..c92a29bab9
--- /dev/null
+++ b/Lang/COBOL/Menu
@@ -0,0 +1 @@
+../../Task/Menu/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Monty-Hall-problem b/Lang/COBOL/Monty-Hall-problem
new file mode 120000
index 0000000000..cef2dd89ce
--- /dev/null
+++ b/Lang/COBOL/Monty-Hall-problem
@@ -0,0 +1 @@
+../../Task/Monty-Hall-problem/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Perfect-numbers b/Lang/COBOL/Perfect-numbers
new file mode 120000
index 0000000000..a3d27a87f3
--- /dev/null
+++ b/Lang/COBOL/Perfect-numbers
@@ -0,0 +1 @@
+../../Task/Perfect-numbers/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Pointers-and-references b/Lang/COBOL/Pointers-and-references
new file mode 120000
index 0000000000..46497e3d6c
--- /dev/null
+++ b/Lang/COBOL/Pointers-and-references
@@ -0,0 +1 @@
+../../Task/Pointers-and-references/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Program-termination b/Lang/COBOL/Program-termination
new file mode 120000
index 0000000000..db55248ffa
--- /dev/null
+++ b/Lang/COBOL/Program-termination
@@ -0,0 +1 @@
+../../Task/Program-termination/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Range-extraction b/Lang/COBOL/Range-extraction
new file mode 120000
index 0000000000..de178f5020
--- /dev/null
+++ b/Lang/COBOL/Range-extraction
@@ -0,0 +1 @@
+../../Task/Range-extraction/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Read-a-file-line-by-line b/Lang/COBOL/Read-a-file-line-by-line
new file mode 120000
index 0000000000..fdf6a819bf
--- /dev/null
+++ b/Lang/COBOL/Read-a-file-line-by-line
@@ -0,0 +1 @@
+../../Task/Read-a-file-line-by-line/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Real-constants-and-functions b/Lang/COBOL/Real-constants-and-functions
new file mode 120000
index 0000000000..2e29b3c467
--- /dev/null
+++ b/Lang/COBOL/Real-constants-and-functions
@@ -0,0 +1 @@
+../../Task/Real-constants-and-functions/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Rot-13 b/Lang/COBOL/Rot-13
new file mode 120000
index 0000000000..fff37b7e88
--- /dev/null
+++ b/Lang/COBOL/Rot-13
@@ -0,0 +1 @@
+../../Task/Rot-13/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Search-a-list b/Lang/COBOL/Search-a-list
new file mode 120000
index 0000000000..d771485d4b
--- /dev/null
+++ b/Lang/COBOL/Search-a-list
@@ -0,0 +1 @@
+../../Task/Search-a-list/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Show-the-epoch b/Lang/COBOL/Show-the-epoch
new file mode 120000
index 0000000000..a5b06e6385
--- /dev/null
+++ b/Lang/COBOL/Show-the-epoch
@@ -0,0 +1 @@
+../../Task/Show-the-epoch/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Simple-database b/Lang/COBOL/Simple-database
new file mode 120000
index 0000000000..35eda1bd63
--- /dev/null
+++ b/Lang/COBOL/Simple-database
@@ -0,0 +1 @@
+../../Task/Simple-database/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Sort-an-integer-array b/Lang/COBOL/Sort-an-integer-array
new file mode 120000
index 0000000000..662b943206
--- /dev/null
+++ b/Lang/COBOL/Sort-an-integer-array
@@ -0,0 +1 @@
+../../Task/Sort-an-integer-array/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Sorting-algorithms-Quicksort b/Lang/COBOL/Sorting-algorithms-Quicksort
new file mode 120000
index 0000000000..1945e918b3
--- /dev/null
+++ b/Lang/COBOL/Sorting-algorithms-Quicksort
@@ -0,0 +1 @@
+../../Task/Sorting-algorithms-Quicksort/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/String-case b/Lang/COBOL/String-case
new file mode 120000
index 0000000000..23df448e9a
--- /dev/null
+++ b/Lang/COBOL/String-case
@@ -0,0 +1 @@
+../../Task/String-case/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/String-interpolation--included- b/Lang/COBOL/String-interpolation--included-
new file mode 120000
index 0000000000..138f51a78d
--- /dev/null
+++ b/Lang/COBOL/String-interpolation--included-
@@ -0,0 +1 @@
+../../Task/String-interpolation--included-/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Strip-a-set-of-characters-from-a-string b/Lang/COBOL/Strip-a-set-of-characters-from-a-string
new file mode 120000
index 0000000000..cd733888dd
--- /dev/null
+++ b/Lang/COBOL/Strip-a-set-of-characters-from-a-string
@@ -0,0 +1 @@
+../../Task/Strip-a-set-of-characters-from-a-string/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Sum-and-product-of-an-array b/Lang/COBOL/Sum-and-product-of-an-array
new file mode 120000
index 0000000000..238048bc40
--- /dev/null
+++ b/Lang/COBOL/Sum-and-product-of-an-array
@@ -0,0 +1 @@
+../../Task/Sum-and-product-of-an-array/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Sum-of-a-series b/Lang/COBOL/Sum-of-a-series
new file mode 120000
index 0000000000..0fd19378c3
--- /dev/null
+++ b/Lang/COBOL/Sum-of-a-series
@@ -0,0 +1 @@
+../../Task/Sum-of-a-series/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/System-time b/Lang/COBOL/System-time
new file mode 120000
index 0000000000..b04a6036c9
--- /dev/null
+++ b/Lang/COBOL/System-time
@@ -0,0 +1 @@
+../../Task/System-time/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Take-notes-on-the-command-line b/Lang/COBOL/Take-notes-on-the-command-line
new file mode 120000
index 0000000000..3116bab1fd
--- /dev/null
+++ b/Lang/COBOL/Take-notes-on-the-command-line
@@ -0,0 +1 @@
+../../Task/Take-notes-on-the-command-line/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Temperature-conversion b/Lang/COBOL/Temperature-conversion
new file mode 120000
index 0000000000..863dbe9d5b
--- /dev/null
+++ b/Lang/COBOL/Temperature-conversion
@@ -0,0 +1 @@
+../../Task/Temperature-conversion/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Terminal-control-Clear-the-screen b/Lang/COBOL/Terminal-control-Clear-the-screen
new file mode 120000
index 0000000000..dcbb35b561
--- /dev/null
+++ b/Lang/COBOL/Terminal-control-Clear-the-screen
@@ -0,0 +1 @@
+../../Task/Terminal-control-Clear-the-screen/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Terminal-control-Coloured-text b/Lang/COBOL/Terminal-control-Coloured-text
new file mode 120000
index 0000000000..318d18269b
--- /dev/null
+++ b/Lang/COBOL/Terminal-control-Coloured-text
@@ -0,0 +1 @@
+../../Task/Terminal-control-Coloured-text/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Terminal-control-Cursor-positioning b/Lang/COBOL/Terminal-control-Cursor-positioning
new file mode 120000
index 0000000000..365a40501c
--- /dev/null
+++ b/Lang/COBOL/Terminal-control-Cursor-positioning
@@ -0,0 +1 @@
+../../Task/Terminal-control-Cursor-positioning/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Terminal-control-Dimensions b/Lang/COBOL/Terminal-control-Dimensions
new file mode 120000
index 0000000000..2aaa512cca
--- /dev/null
+++ b/Lang/COBOL/Terminal-control-Dimensions
@@ -0,0 +1 @@
+../../Task/Terminal-control-Dimensions/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Terminal-control-Inverse-video b/Lang/COBOL/Terminal-control-Inverse-video
new file mode 120000
index 0000000000..f8e2a023e4
--- /dev/null
+++ b/Lang/COBOL/Terminal-control-Inverse-video
@@ -0,0 +1 @@
+../../Task/Terminal-control-Inverse-video/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Terminal-control-Ringing-the-terminal-bell b/Lang/COBOL/Terminal-control-Ringing-the-terminal-bell
new file mode 120000
index 0000000000..63a6cc0b49
--- /dev/null
+++ b/Lang/COBOL/Terminal-control-Ringing-the-terminal-bell
@@ -0,0 +1 @@
+../../Task/Terminal-control-Ringing-the-terminal-bell/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Text-processing-1 b/Lang/COBOL/Text-processing-1
new file mode 120000
index 0000000000..173aa5e911
--- /dev/null
+++ b/Lang/COBOL/Text-processing-1
@@ -0,0 +1 @@
+../../Task/Text-processing-1/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Text-processing-2 b/Lang/COBOL/Text-processing-2
new file mode 120000
index 0000000000..7683aabca9
--- /dev/null
+++ b/Lang/COBOL/Text-processing-2
@@ -0,0 +1 @@
+../../Task/Text-processing-2/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Text-processing-Max-licenses-in-use b/Lang/COBOL/Text-processing-Max-licenses-in-use
new file mode 120000
index 0000000000..e865497fb0
--- /dev/null
+++ b/Lang/COBOL/Text-processing-Max-licenses-in-use
@@ -0,0 +1 @@
+../../Task/Text-processing-Max-licenses-in-use/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Trigonometric-functions b/Lang/COBOL/Trigonometric-functions
new file mode 120000
index 0000000000..364a76ebce
--- /dev/null
+++ b/Lang/COBOL/Trigonometric-functions
@@ -0,0 +1 @@
+../../Task/Trigonometric-functions/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/User-input-Text b/Lang/COBOL/User-input-Text
new file mode 120000
index 0000000000..82e85c5d79
--- /dev/null
+++ b/Lang/COBOL/User-input-Text
@@ -0,0 +1 @@
+../../Task/User-input-Text/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Variables b/Lang/COBOL/Variables
new file mode 120000
index 0000000000..63793f74c3
--- /dev/null
+++ b/Lang/COBOL/Variables
@@ -0,0 +1 @@
+../../Task/Variables/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Write-language-name-in-3D-ASCII b/Lang/COBOL/Write-language-name-in-3D-ASCII
new file mode 120000
index 0000000000..888e6dfc79
--- /dev/null
+++ b/Lang/COBOL/Write-language-name-in-3D-ASCII
@@ -0,0 +1 @@
+../../Task/Write-language-name-in-3D-ASCII/COBOL
\ No newline at end of file
diff --git a/Lang/Cache-ObjectScript/XML-Input b/Lang/Cache-ObjectScript/XML-Input
new file mode 120000
index 0000000000..094ba9db6a
--- /dev/null
+++ b/Lang/Cache-ObjectScript/XML-Input
@@ -0,0 +1 @@
+../../Task/XML-Input/Cache-ObjectScript
\ No newline at end of file
diff --git a/Lang/Cache-ObjectScript/XML-XPath b/Lang/Cache-ObjectScript/XML-XPath
new file mode 120000
index 0000000000..4d745b665c
--- /dev/null
+++ b/Lang/Cache-ObjectScript/XML-XPath
@@ -0,0 +1 @@
+../../Task/XML-XPath/Cache-ObjectScript
\ No newline at end of file
diff --git a/Lang/Chapel/00DESCRIPTION b/Lang/Chapel/00DESCRIPTION
index 7a627fdeb4..87bf165e2b 100644
--- a/Lang/Chapel/00DESCRIPTION
+++ b/Lang/Chapel/00DESCRIPTION
@@ -1,6 +1,17 @@
-{{stub}}{{language|Chapel
+{{stub}}
+{{language|Chapel
+|exec=machine
|site=http://chapel.cray.com/
+|gc=no
+|parampass=both
+|safety=safe
+|strength=strong
+|express=both
+|checking=static
+|tags=chapel
+|LCT=yes
}}
+{{language programming paradigm|parallel}}
Chapel is an emerging parallel programming language whose design and development is being led by Cray Inc. Chapel is being developed as an open-source effort with contributions from academia, industry, and scientific computing centers. Chapel emerged from Cray's entry in the DARPA-led High Productivity Computing Systems program (HPCS).
diff --git a/Lang/Chapel/Ackermann-function b/Lang/Chapel/Ackermann-function
new file mode 120000
index 0000000000..67b37af00b
--- /dev/null
+++ b/Lang/Chapel/Ackermann-function
@@ -0,0 +1 @@
+../../Task/Ackermann-function/Chapel
\ No newline at end of file
diff --git a/Lang/Chapel/Associative-array-Creation b/Lang/Chapel/Associative-array-Creation
new file mode 120000
index 0000000000..a778281a86
--- /dev/null
+++ b/Lang/Chapel/Associative-array-Creation
@@ -0,0 +1 @@
+../../Task/Associative-array-Creation/Chapel
\ No newline at end of file
diff --git a/Lang/Chapel/Associative-array-Iteration b/Lang/Chapel/Associative-array-Iteration
new file mode 120000
index 0000000000..225a3e2dfe
--- /dev/null
+++ b/Lang/Chapel/Associative-array-Iteration
@@ -0,0 +1 @@
+../../Task/Associative-array-Iteration/Chapel
\ No newline at end of file
diff --git a/Lang/Chapel/Binary-search b/Lang/Chapel/Binary-search
new file mode 120000
index 0000000000..3a38ba071e
--- /dev/null
+++ b/Lang/Chapel/Binary-search
@@ -0,0 +1 @@
+../../Task/Binary-search/Chapel
\ No newline at end of file
diff --git a/Lang/Chapel/Comments b/Lang/Chapel/Comments
new file mode 120000
index 0000000000..179a25f90c
--- /dev/null
+++ b/Lang/Chapel/Comments
@@ -0,0 +1 @@
+../../Task/Comments/Chapel
\ No newline at end of file
diff --git a/Lang/Chapel/Continued-fraction b/Lang/Chapel/Continued-fraction
new file mode 120000
index 0000000000..f5363114ea
--- /dev/null
+++ b/Lang/Chapel/Continued-fraction
@@ -0,0 +1 @@
+../../Task/Continued-fraction/Chapel
\ No newline at end of file
diff --git a/Lang/Chapel/Factorial b/Lang/Chapel/Factorial
new file mode 120000
index 0000000000..ac1e6147b4
--- /dev/null
+++ b/Lang/Chapel/Factorial
@@ -0,0 +1 @@
+../../Task/Factorial/Chapel
\ No newline at end of file
diff --git a/Lang/Chapel/Factors-of-an-integer b/Lang/Chapel/Factors-of-an-integer
new file mode 120000
index 0000000000..65b88dab9a
--- /dev/null
+++ b/Lang/Chapel/Factors-of-an-integer
@@ -0,0 +1 @@
+../../Task/Factors-of-an-integer/Chapel
\ No newline at end of file
diff --git a/Lang/Chapel/Fibonacci-sequence b/Lang/Chapel/Fibonacci-sequence
new file mode 120000
index 0000000000..2d4a9e6e2e
--- /dev/null
+++ b/Lang/Chapel/Fibonacci-sequence
@@ -0,0 +1 @@
+../../Task/Fibonacci-sequence/Chapel
\ No newline at end of file
diff --git a/Lang/Chapel/FizzBuzz b/Lang/Chapel/FizzBuzz
new file mode 120000
index 0000000000..4c516d51bf
--- /dev/null
+++ b/Lang/Chapel/FizzBuzz
@@ -0,0 +1 @@
+../../Task/FizzBuzz/Chapel
\ No newline at end of file
diff --git a/Lang/Chapel/Generic-swap b/Lang/Chapel/Generic-swap
new file mode 120000
index 0000000000..e3389fae1c
--- /dev/null
+++ b/Lang/Chapel/Generic-swap
@@ -0,0 +1 @@
+../../Task/Generic-swap/Chapel
\ No newline at end of file
diff --git a/Lang/Chapel/Loop-over-multiple-arrays-simultaneously b/Lang/Chapel/Loop-over-multiple-arrays-simultaneously
new file mode 120000
index 0000000000..348d74a78c
--- /dev/null
+++ b/Lang/Chapel/Loop-over-multiple-arrays-simultaneously
@@ -0,0 +1 @@
+../../Task/Loop-over-multiple-arrays-simultaneously/Chapel
\ No newline at end of file
diff --git a/Lang/Chapel/Loops-Break b/Lang/Chapel/Loops-Break
new file mode 120000
index 0000000000..a733237c1a
--- /dev/null
+++ b/Lang/Chapel/Loops-Break
@@ -0,0 +1 @@
+../../Task/Loops-Break/Chapel
\ No newline at end of file
diff --git a/Lang/Chapel/Loops-Continue b/Lang/Chapel/Loops-Continue
new file mode 120000
index 0000000000..5b21c7adc7
--- /dev/null
+++ b/Lang/Chapel/Loops-Continue
@@ -0,0 +1 @@
+../../Task/Loops-Continue/Chapel
\ No newline at end of file
diff --git a/Lang/Chapel/Loops-Do-while b/Lang/Chapel/Loops-Do-while
new file mode 120000
index 0000000000..4689f47745
--- /dev/null
+++ b/Lang/Chapel/Loops-Do-while
@@ -0,0 +1 @@
+../../Task/Loops-Do-while/Chapel
\ No newline at end of file
diff --git a/Lang/Chapel/Loops-Downward-for b/Lang/Chapel/Loops-Downward-for
new file mode 120000
index 0000000000..49369d9ce3
--- /dev/null
+++ b/Lang/Chapel/Loops-Downward-for
@@ -0,0 +1 @@
+../../Task/Loops-Downward-for/Chapel
\ No newline at end of file
diff --git a/Lang/Chapel/Loops-For b/Lang/Chapel/Loops-For
new file mode 120000
index 0000000000..30038c973d
--- /dev/null
+++ b/Lang/Chapel/Loops-For
@@ -0,0 +1 @@
+../../Task/Loops-For/Chapel
\ No newline at end of file
diff --git a/Lang/Chapel/Loops-Foreach b/Lang/Chapel/Loops-Foreach
new file mode 120000
index 0000000000..836402a9e6
--- /dev/null
+++ b/Lang/Chapel/Loops-Foreach
@@ -0,0 +1 @@
+../../Task/Loops-Foreach/Chapel
\ No newline at end of file
diff --git a/Lang/Chapel/Loops-Infinite b/Lang/Chapel/Loops-Infinite
new file mode 120000
index 0000000000..b25f1180fe
--- /dev/null
+++ b/Lang/Chapel/Loops-Infinite
@@ -0,0 +1 @@
+../../Task/Loops-Infinite/Chapel
\ No newline at end of file
diff --git a/Lang/Chapel/Loops-N-plus-one-half b/Lang/Chapel/Loops-N-plus-one-half
new file mode 120000
index 0000000000..375e238346
--- /dev/null
+++ b/Lang/Chapel/Loops-N-plus-one-half
@@ -0,0 +1 @@
+../../Task/Loops-N-plus-one-half/Chapel
\ No newline at end of file
diff --git a/Lang/Chapel/Loops-Nested b/Lang/Chapel/Loops-Nested
new file mode 120000
index 0000000000..5bfb2611a6
--- /dev/null
+++ b/Lang/Chapel/Loops-Nested
@@ -0,0 +1 @@
+../../Task/Loops-Nested/Chapel
\ No newline at end of file
diff --git a/Lang/Chapel/Loops-While b/Lang/Chapel/Loops-While
new file mode 120000
index 0000000000..7bf4191d76
--- /dev/null
+++ b/Lang/Chapel/Loops-While
@@ -0,0 +1 @@
+../../Task/Loops-While/Chapel
\ No newline at end of file
diff --git a/Lang/Chapel/Matrix-exponentiation-operator b/Lang/Chapel/Matrix-exponentiation-operator
new file mode 120000
index 0000000000..602b95cfef
--- /dev/null
+++ b/Lang/Chapel/Matrix-exponentiation-operator
@@ -0,0 +1 @@
+../../Task/Matrix-exponentiation-operator/Chapel
\ No newline at end of file
diff --git a/Lang/Chapel/Matrix-multiplication b/Lang/Chapel/Matrix-multiplication
new file mode 120000
index 0000000000..59c3c1f76b
--- /dev/null
+++ b/Lang/Chapel/Matrix-multiplication
@@ -0,0 +1 @@
+../../Task/Matrix-multiplication/Chapel
\ No newline at end of file
diff --git a/Lang/Chapel/Null-object b/Lang/Chapel/Null-object
new file mode 120000
index 0000000000..9282164006
--- /dev/null
+++ b/Lang/Chapel/Null-object
@@ -0,0 +1 @@
+../../Task/Null-object/Chapel
\ No newline at end of file
diff --git a/Lang/Chapel/One-of-n-lines-in-a-file b/Lang/Chapel/One-of-n-lines-in-a-file
new file mode 120000
index 0000000000..089a223542
--- /dev/null
+++ b/Lang/Chapel/One-of-n-lines-in-a-file
@@ -0,0 +1 @@
+../../Task/One-of-n-lines-in-a-file/Chapel
\ No newline at end of file
diff --git a/Lang/Chapel/Primality-by-trial-division b/Lang/Chapel/Primality-by-trial-division
new file mode 120000
index 0000000000..75706ede29
--- /dev/null
+++ b/Lang/Chapel/Primality-by-trial-division
@@ -0,0 +1 @@
+../../Task/Primality-by-trial-division/Chapel
\ No newline at end of file
diff --git a/Lang/Chapel/Sieve-of-Eratosthenes b/Lang/Chapel/Sieve-of-Eratosthenes
new file mode 120000
index 0000000000..87422b9ac8
--- /dev/null
+++ b/Lang/Chapel/Sieve-of-Eratosthenes
@@ -0,0 +1 @@
+../../Task/Sieve-of-Eratosthenes/Chapel
\ No newline at end of file
diff --git a/Lang/Clean/Arrays b/Lang/Clean/Arrays
new file mode 120000
index 0000000000..3e0990edc5
--- /dev/null
+++ b/Lang/Clean/Arrays
@@ -0,0 +1 @@
+../../Task/Arrays/Clean
\ No newline at end of file
diff --git a/Lang/Clipper/00DESCRIPTION b/Lang/Clipper/00DESCRIPTION
index 96b8bf005c..c40cb0c927 100644
--- a/Lang/Clipper/00DESCRIPTION
+++ b/Lang/Clipper/00DESCRIPTION
@@ -1 +1,18 @@
-{{language}}{{Stub}}
\ No newline at end of file
+{{language
+|exec=bytecode
+|gc=yes
+|parampass=value,reference
+|strength=weak
+|checking=dynamic
+}}Clipper is a programming language, which belongs to ''xBase-family'' and a programming environment, which includes a compiler, run-time library, suitable fullscreen debugger and a set of utilities.
+It was originally created in 1985 by Nantucket Corporation as a compiler for dBaseIII , which was an interpretive system. For many years it was one of most popular systems for database, business, financial applications. It was bought by Computer Associates, who discontinued to develop and support it in 1997, the last version was 5.3b. Later, other programming environments for Clipper appeared - xBase++, Flagship, Clip, [[Harbour]], ...
+
+Clipper source files (*.prg files) are compiled to an executable, which includes the bytecode and a virtual machine, which executes this bytecode.
+
+[http://www.grafxsoft.com/clipper.htm GrafxSoft - current Clipper maintainer]
+
+[http://www.the-oasis.net/ The Oazis - one of oldest Clipper resources]
+
+[http://www.harbour-project.org/ Harbour - Clipper compatible open source system]
+
+[http://www.kresin.ru/en/clipper.html Kresin.ru - miscellanious Clipper & Harbour stuff]
\ No newline at end of file
diff --git a/Lang/Clipper/Arrays b/Lang/Clipper/Arrays
new file mode 120000
index 0000000000..a6b1d0849d
--- /dev/null
+++ b/Lang/Clipper/Arrays
@@ -0,0 +1 @@
+../../Task/Arrays/Clipper
\ No newline at end of file
diff --git a/Lang/Clipper/Conditional-structures b/Lang/Clipper/Conditional-structures
new file mode 120000
index 0000000000..aa5b053c91
--- /dev/null
+++ b/Lang/Clipper/Conditional-structures
@@ -0,0 +1 @@
+../../Task/Conditional-structures/Clipper
\ No newline at end of file
diff --git a/Lang/Clipper/Hello-world-Line-printer b/Lang/Clipper/Hello-world-Line-printer
new file mode 120000
index 0000000000..bdd8397314
--- /dev/null
+++ b/Lang/Clipper/Hello-world-Line-printer
@@ -0,0 +1 @@
+../../Task/Hello-world-Line-printer/Clipper
\ No newline at end of file
diff --git a/Lang/Clipper/Hello-world-Newline-omission b/Lang/Clipper/Hello-world-Newline-omission
new file mode 120000
index 0000000000..df45987bb3
--- /dev/null
+++ b/Lang/Clipper/Hello-world-Newline-omission
@@ -0,0 +1 @@
+../../Task/Hello-world-Newline-omission/Clipper
\ No newline at end of file
diff --git a/Lang/Clipper/Hello-world-Text b/Lang/Clipper/Hello-world-Text
new file mode 120000
index 0000000000..99c4bd8220
--- /dev/null
+++ b/Lang/Clipper/Hello-world-Text
@@ -0,0 +1 @@
+../../Task/Hello-world-Text/Clipper
\ No newline at end of file
diff --git a/Lang/Clipper/Rename-a-file b/Lang/Clipper/Rename-a-file
new file mode 120000
index 0000000000..d7d3cdc375
--- /dev/null
+++ b/Lang/Clipper/Rename-a-file
@@ -0,0 +1 @@
+../../Task/Rename-a-file/Clipper
\ No newline at end of file
diff --git a/Lang/Clipper/Repeat-a-string b/Lang/Clipper/Repeat-a-string
new file mode 120000
index 0000000000..6f434517b9
--- /dev/null
+++ b/Lang/Clipper/Repeat-a-string
@@ -0,0 +1 @@
+../../Task/Repeat-a-string/Clipper
\ No newline at end of file
diff --git a/Lang/Clipper/Return-multiple-values b/Lang/Clipper/Return-multiple-values
new file mode 120000
index 0000000000..d683bf1455
--- /dev/null
+++ b/Lang/Clipper/Return-multiple-values
@@ -0,0 +1 @@
+../../Task/Return-multiple-values/Clipper
\ No newline at end of file
diff --git a/Lang/Clipper/Reverse-a-string b/Lang/Clipper/Reverse-a-string
new file mode 120000
index 0000000000..0b2d1abb2d
--- /dev/null
+++ b/Lang/Clipper/Reverse-a-string
@@ -0,0 +1 @@
+../../Task/Reverse-a-string/Clipper
\ No newline at end of file
diff --git a/Lang/Clojure/Arithmetic-Complex b/Lang/Clojure/Arithmetic-Complex
new file mode 120000
index 0000000000..2a9970ceb4
--- /dev/null
+++ b/Lang/Clojure/Arithmetic-Complex
@@ -0,0 +1 @@
+../../Task/Arithmetic-Complex/Clojure
\ No newline at end of file
diff --git a/Lang/Clojure/CRC-32 b/Lang/Clojure/CRC-32
new file mode 120000
index 0000000000..201cc27548
--- /dev/null
+++ b/Lang/Clojure/CRC-32
@@ -0,0 +1 @@
+../../Task/CRC-32/Clojure
\ No newline at end of file
diff --git a/Lang/Clojure/Checkpoint-synchronization b/Lang/Clojure/Checkpoint-synchronization
new file mode 120000
index 0000000000..f98b8fb633
--- /dev/null
+++ b/Lang/Clojure/Checkpoint-synchronization
@@ -0,0 +1 @@
+../../Task/Checkpoint-synchronization/Clojure
\ No newline at end of file
diff --git a/Lang/Clojure/Count-occurrences-of-a-substring b/Lang/Clojure/Count-occurrences-of-a-substring
new file mode 120000
index 0000000000..496ac91a56
--- /dev/null
+++ b/Lang/Clojure/Count-occurrences-of-a-substring
@@ -0,0 +1 @@
+../../Task/Count-occurrences-of-a-substring/Clojure
\ No newline at end of file
diff --git a/Lang/Clojure/Entropy b/Lang/Clojure/Entropy
new file mode 120000
index 0000000000..805e176e1a
--- /dev/null
+++ b/Lang/Clojure/Entropy
@@ -0,0 +1 @@
+../../Task/Entropy/Clojure
\ No newline at end of file
diff --git a/Lang/Clojure/Generator-Exponential b/Lang/Clojure/Generator-Exponential
new file mode 120000
index 0000000000..4f56ea58ae
--- /dev/null
+++ b/Lang/Clojure/Generator-Exponential
@@ -0,0 +1 @@
+../../Task/Generator-Exponential/Clojure
\ No newline at end of file
diff --git a/Lang/Clojure/Hofstadter-Q-sequence b/Lang/Clojure/Hofstadter-Q-sequence
new file mode 120000
index 0000000000..a1cddc5836
--- /dev/null
+++ b/Lang/Clojure/Hofstadter-Q-sequence
@@ -0,0 +1 @@
+../../Task/Hofstadter-Q-sequence/Clojure
\ No newline at end of file
diff --git a/Lang/Clojure/Knuths-algorithm-S b/Lang/Clojure/Knuths-algorithm-S
new file mode 120000
index 0000000000..eaa56d7ddd
--- /dev/null
+++ b/Lang/Clojure/Knuths-algorithm-S
@@ -0,0 +1 @@
+../../Task/Knuths-algorithm-S/Clojure
\ No newline at end of file
diff --git a/Lang/Clojure/Middle-three-digits b/Lang/Clojure/Middle-three-digits
new file mode 120000
index 0000000000..8b8b9c83d9
--- /dev/null
+++ b/Lang/Clojure/Middle-three-digits
@@ -0,0 +1 @@
+../../Task/Middle-three-digits/Clojure
\ No newline at end of file
diff --git a/Lang/Clojure/One-of-n-lines-in-a-file b/Lang/Clojure/One-of-n-lines-in-a-file
new file mode 120000
index 0000000000..48a4b9eba4
--- /dev/null
+++ b/Lang/Clojure/One-of-n-lines-in-a-file
@@ -0,0 +1 @@
+../../Task/One-of-n-lines-in-a-file/Clojure
\ No newline at end of file
diff --git a/Lang/Clojure/Ordered-words b/Lang/Clojure/Ordered-words
new file mode 120000
index 0000000000..4a02eb20d0
--- /dev/null
+++ b/Lang/Clojure/Ordered-words
@@ -0,0 +1 @@
+../../Task/Ordered-words/Clojure
\ No newline at end of file
diff --git a/Lang/Clojure/Pythagorean-triples b/Lang/Clojure/Pythagorean-triples
new file mode 120000
index 0000000000..626af010ef
--- /dev/null
+++ b/Lang/Clojure/Pythagorean-triples
@@ -0,0 +1 @@
+../../Task/Pythagorean-triples/Clojure
\ No newline at end of file
diff --git a/Lang/Clojure/Remove-lines-from-a-file b/Lang/Clojure/Remove-lines-from-a-file
new file mode 120000
index 0000000000..3958424531
--- /dev/null
+++ b/Lang/Clojure/Remove-lines-from-a-file
@@ -0,0 +1 @@
+../../Task/Remove-lines-from-a-file/Clojure
\ No newline at end of file
diff --git a/Lang/Clojure/Same-Fringe b/Lang/Clojure/Same-Fringe
new file mode 120000
index 0000000000..c6f638ed91
--- /dev/null
+++ b/Lang/Clojure/Same-Fringe
@@ -0,0 +1 @@
+../../Task/Same-Fringe/Clojure
\ No newline at end of file
diff --git a/Lang/Clojure/Self-referential-sequence b/Lang/Clojure/Self-referential-sequence
new file mode 120000
index 0000000000..12891fd87f
--- /dev/null
+++ b/Lang/Clojure/Self-referential-sequence
@@ -0,0 +1 @@
+../../Task/Self-referential-sequence/Clojure
\ No newline at end of file
diff --git a/Lang/Clojure/Show-the-epoch b/Lang/Clojure/Show-the-epoch
new file mode 120000
index 0000000000..4d0f2a86da
--- /dev/null
+++ b/Lang/Clojure/Show-the-epoch
@@ -0,0 +1 @@
+../../Task/Show-the-epoch/Clojure
\ No newline at end of file
diff --git a/Lang/Clojure/Word-wrap b/Lang/Clojure/Word-wrap
new file mode 120000
index 0000000000..3d16b80ec3
--- /dev/null
+++ b/Lang/Clojure/Word-wrap
@@ -0,0 +1 @@
+../../Task/Word-wrap/Clojure
\ No newline at end of file
diff --git a/Lang/CoffeeScript/Call-a-function b/Lang/CoffeeScript/Call-a-function
new file mode 120000
index 0000000000..0fd3b91438
--- /dev/null
+++ b/Lang/CoffeeScript/Call-a-function
@@ -0,0 +1 @@
+../../Task/Call-a-function/CoffeeScript
\ No newline at end of file
diff --git a/Lang/CoffeeScript/Call-an-object-method b/Lang/CoffeeScript/Call-an-object-method
new file mode 120000
index 0000000000..04c1b168de
--- /dev/null
+++ b/Lang/CoffeeScript/Call-an-object-method
@@ -0,0 +1 @@
+../../Task/Call-an-object-method/CoffeeScript
\ No newline at end of file
diff --git a/Lang/CoffeeScript/Check-that-file-exists b/Lang/CoffeeScript/Check-that-file-exists
new file mode 120000
index 0000000000..043747b069
--- /dev/null
+++ b/Lang/CoffeeScript/Check-that-file-exists
@@ -0,0 +1 @@
+../../Task/Check-that-file-exists/CoffeeScript
\ No newline at end of file
diff --git a/Lang/CoffeeScript/Command-line-arguments b/Lang/CoffeeScript/Command-line-arguments
new file mode 120000
index 0000000000..d6c22b9970
--- /dev/null
+++ b/Lang/CoffeeScript/Command-line-arguments
@@ -0,0 +1 @@
+../../Task/Command-line-arguments/CoffeeScript
\ No newline at end of file
diff --git a/Lang/CoffeeScript/Execute-a-system-command b/Lang/CoffeeScript/Execute-a-system-command
new file mode 120000
index 0000000000..758d6c91f5
--- /dev/null
+++ b/Lang/CoffeeScript/Execute-a-system-command
@@ -0,0 +1 @@
+../../Task/Execute-a-system-command/CoffeeScript
\ No newline at end of file
diff --git a/Lang/CoffeeScript/Find-limit-of-recursion b/Lang/CoffeeScript/Find-limit-of-recursion
new file mode 120000
index 0000000000..1e0058944c
--- /dev/null
+++ b/Lang/CoffeeScript/Find-limit-of-recursion
@@ -0,0 +1 @@
+../../Task/Find-limit-of-recursion/CoffeeScript
\ No newline at end of file
diff --git a/Lang/CoffeeScript/Function-composition b/Lang/CoffeeScript/Function-composition
new file mode 120000
index 0000000000..57f3a2c4be
--- /dev/null
+++ b/Lang/CoffeeScript/Function-composition
@@ -0,0 +1 @@
+../../Task/Function-composition/CoffeeScript
\ No newline at end of file
diff --git a/Lang/CoffeeScript/Standard-deviation b/Lang/CoffeeScript/Standard-deviation
new file mode 120000
index 0000000000..a0512f9794
--- /dev/null
+++ b/Lang/CoffeeScript/Standard-deviation
@@ -0,0 +1 @@
+../../Task/Standard-deviation/CoffeeScript
\ No newline at end of file
diff --git a/Lang/CoffeeScript/Sum-of-squares b/Lang/CoffeeScript/Sum-of-squares
new file mode 120000
index 0000000000..3742c07698
--- /dev/null
+++ b/Lang/CoffeeScript/Sum-of-squares
@@ -0,0 +1 @@
+../../Task/Sum-of-squares/CoffeeScript
\ No newline at end of file
diff --git a/Lang/CoffeeScript/Y-combinator b/Lang/CoffeeScript/Y-combinator
new file mode 120000
index 0000000000..8936da87e4
--- /dev/null
+++ b/Lang/CoffeeScript/Y-combinator
@@ -0,0 +1 @@
+../../Task/Y-combinator/CoffeeScript
\ No newline at end of file
diff --git a/Lang/ColdFusion/00DESCRIPTION b/Lang/ColdFusion/00DESCRIPTION
index 7ed3c1cc66..f4f5afed03 100644
--- a/Lang/ColdFusion/00DESCRIPTION
+++ b/Lang/ColdFusion/00DESCRIPTION
@@ -2,6 +2,7 @@
|strength=weak
|express=implicit
|checking=dynamic
+|tags=cfm
|site=http://www.adobe.com/products/coldfusion
|LCT=yes}}'''ColdFusion''' is an application server and software development framework used for the development of computer software in general, and dynamic web sites in particular. In this regard, ColdFusion is a similar product to [[Microsoft]] [[ASP|ASP.NET]] or [[Java|Java Enterprise Edition]].
diff --git a/Lang/ColdFusion/Arrays b/Lang/ColdFusion/Arrays
new file mode 120000
index 0000000000..518879fcfd
--- /dev/null
+++ b/Lang/ColdFusion/Arrays
@@ -0,0 +1 @@
+../../Task/Arrays/ColdFusion
\ No newline at end of file
diff --git a/Lang/Common-Lisp/Color-of-a-screen-pixel b/Lang/Common-Lisp/Color-of-a-screen-pixel
new file mode 120000
index 0000000000..8a0abc59bd
--- /dev/null
+++ b/Lang/Common-Lisp/Color-of-a-screen-pixel
@@ -0,0 +1 @@
+../../Task/Color-of-a-screen-pixel/Common-Lisp
\ No newline at end of file
diff --git a/Lang/Common-Lisp/Colour-pinstripe-Display b/Lang/Common-Lisp/Colour-pinstripe-Display
new file mode 120000
index 0000000000..66e1337298
--- /dev/null
+++ b/Lang/Common-Lisp/Colour-pinstripe-Display
@@ -0,0 +1 @@
+../../Task/Colour-pinstripe-Display/Common-Lisp
\ No newline at end of file
diff --git a/Lang/Common-Lisp/Continued-fraction-Arithmetic-Construct-from-rational-number b/Lang/Common-Lisp/Continued-fraction-Arithmetic-Construct-from-rational-number
new file mode 120000
index 0000000000..12f986a159
--- /dev/null
+++ b/Lang/Common-Lisp/Continued-fraction-Arithmetic-Construct-from-rational-number
@@ -0,0 +1 @@
+../../Task/Continued-fraction-Arithmetic-Construct-from-rational-number/Common-Lisp
\ No newline at end of file
diff --git a/Lang/Common-Lisp/Equilibrium-index b/Lang/Common-Lisp/Equilibrium-index
new file mode 120000
index 0000000000..7b97084ca9
--- /dev/null
+++ b/Lang/Common-Lisp/Equilibrium-index
@@ -0,0 +1 @@
+../../Task/Equilibrium-index/Common-Lisp
\ No newline at end of file
diff --git a/Lang/Common-Lisp/Execute-a-Markov-algorithm b/Lang/Common-Lisp/Execute-a-Markov-algorithm
new file mode 120000
index 0000000000..9825044a45
--- /dev/null
+++ b/Lang/Common-Lisp/Execute-a-Markov-algorithm
@@ -0,0 +1 @@
+../../Task/Execute-a-Markov-algorithm/Common-Lisp
\ No newline at end of file
diff --git a/Lang/Common-Lisp/Floyds-triangle b/Lang/Common-Lisp/Floyds-triangle
new file mode 120000
index 0000000000..0c05de1de7
--- /dev/null
+++ b/Lang/Common-Lisp/Floyds-triangle
@@ -0,0 +1 @@
+../../Task/Floyds-triangle/Common-Lisp
\ No newline at end of file
diff --git a/Lang/Common-Lisp/Hello-world-Web-server b/Lang/Common-Lisp/Hello-world-Web-server
new file mode 120000
index 0000000000..5a5aa1d8db
--- /dev/null
+++ b/Lang/Common-Lisp/Hello-world-Web-server
@@ -0,0 +1 @@
+../../Task/Hello-world-Web-server/Common-Lisp
\ No newline at end of file
diff --git a/Lang/Common-Lisp/Image-noise b/Lang/Common-Lisp/Image-noise
new file mode 120000
index 0000000000..d831039ef5
--- /dev/null
+++ b/Lang/Common-Lisp/Image-noise
@@ -0,0 +1 @@
+../../Task/Image-noise/Common-Lisp
\ No newline at end of file
diff --git a/Lang/Common-Lisp/Last-letter-first-letter b/Lang/Common-Lisp/Last-letter-first-letter
new file mode 120000
index 0000000000..9e1853022c
--- /dev/null
+++ b/Lang/Common-Lisp/Last-letter-first-letter
@@ -0,0 +1 @@
+../../Task/Last-letter-first-letter/Common-Lisp
\ No newline at end of file
diff --git a/Lang/Common-Lisp/Middle-three-digits b/Lang/Common-Lisp/Middle-three-digits
new file mode 120000
index 0000000000..c1fff45b9f
--- /dev/null
+++ b/Lang/Common-Lisp/Middle-three-digits
@@ -0,0 +1 @@
+../../Task/Middle-three-digits/Common-Lisp
\ No newline at end of file
diff --git a/Lang/Common-Lisp/One-of-n-lines-in-a-file b/Lang/Common-Lisp/One-of-n-lines-in-a-file
new file mode 120000
index 0000000000..c66c587b1c
--- /dev/null
+++ b/Lang/Common-Lisp/One-of-n-lines-in-a-file
@@ -0,0 +1 @@
+../../Task/One-of-n-lines-in-a-file/Common-Lisp
\ No newline at end of file
diff --git a/Lang/Common-Lisp/Pig-the-dice-game-Player b/Lang/Common-Lisp/Pig-the-dice-game-Player
new file mode 120000
index 0000000000..2cf90a118d
--- /dev/null
+++ b/Lang/Common-Lisp/Pig-the-dice-game-Player
@@ -0,0 +1 @@
+../../Task/Pig-the-dice-game-Player/Common-Lisp
\ No newline at end of file
diff --git a/Lang/Common-Lisp/Self-describing-numbers b/Lang/Common-Lisp/Self-describing-numbers
new file mode 120000
index 0000000000..3ab6c93861
--- /dev/null
+++ b/Lang/Common-Lisp/Self-describing-numbers
@@ -0,0 +1 @@
+../../Task/Self-describing-numbers/Common-Lisp
\ No newline at end of file
diff --git a/Lang/Component-Pascal/100-doors b/Lang/Component-Pascal/100-doors
new file mode 120000
index 0000000000..76b023254e
--- /dev/null
+++ b/Lang/Component-Pascal/100-doors
@@ -0,0 +1 @@
+../../Task/100-doors/Component-Pascal
\ No newline at end of file
diff --git a/Lang/Component-Pascal/99-Bottles-of-Beer b/Lang/Component-Pascal/99-Bottles-of-Beer
new file mode 120000
index 0000000000..a28c34ddb9
--- /dev/null
+++ b/Lang/Component-Pascal/99-Bottles-of-Beer
@@ -0,0 +1 @@
+../../Task/99-Bottles-of-Beer/Component-Pascal
\ No newline at end of file
diff --git a/Lang/Component-Pascal/A+B b/Lang/Component-Pascal/A+B
new file mode 120000
index 0000000000..f5b0b2b425
--- /dev/null
+++ b/Lang/Component-Pascal/A+B
@@ -0,0 +1 @@
+../../Task/A+B/Component-Pascal
\ No newline at end of file
diff --git a/Lang/Component-Pascal/Abstract-type b/Lang/Component-Pascal/Abstract-type
new file mode 120000
index 0000000000..c8aefc89e3
--- /dev/null
+++ b/Lang/Component-Pascal/Abstract-type
@@ -0,0 +1 @@
+../../Task/Abstract-type/Component-Pascal
\ No newline at end of file
diff --git a/Lang/Component-Pascal/Ackermann-function b/Lang/Component-Pascal/Ackermann-function
new file mode 120000
index 0000000000..fd5049bb6b
--- /dev/null
+++ b/Lang/Component-Pascal/Ackermann-function
@@ -0,0 +1 @@
+../../Task/Ackermann-function/Component-Pascal
\ No newline at end of file
diff --git a/Lang/Component-Pascal/Address-of-a-variable b/Lang/Component-Pascal/Address-of-a-variable
new file mode 120000
index 0000000000..022c573520
--- /dev/null
+++ b/Lang/Component-Pascal/Address-of-a-variable
@@ -0,0 +1 @@
+../../Task/Address-of-a-variable/Component-Pascal
\ No newline at end of file
diff --git a/Lang/Component-Pascal/Anagrams b/Lang/Component-Pascal/Anagrams
new file mode 120000
index 0000000000..4496773424
--- /dev/null
+++ b/Lang/Component-Pascal/Anagrams
@@ -0,0 +1 @@
+../../Task/Anagrams/Component-Pascal
\ No newline at end of file
diff --git a/Lang/Component-Pascal/Apply-a-callback-to-an-array b/Lang/Component-Pascal/Apply-a-callback-to-an-array
new file mode 120000
index 0000000000..fb1a9e67d1
--- /dev/null
+++ b/Lang/Component-Pascal/Apply-a-callback-to-an-array
@@ -0,0 +1 @@
+../../Task/Apply-a-callback-to-an-array/Component-Pascal
\ No newline at end of file
diff --git a/Lang/Component-Pascal/Arithmetic-Complex b/Lang/Component-Pascal/Arithmetic-Complex
new file mode 120000
index 0000000000..c07634b80b
--- /dev/null
+++ b/Lang/Component-Pascal/Arithmetic-Complex
@@ -0,0 +1 @@
+../../Task/Arithmetic-Complex/Component-Pascal
\ No newline at end of file
diff --git a/Lang/Component-Pascal/Arithmetic-Integer b/Lang/Component-Pascal/Arithmetic-Integer
new file mode 120000
index 0000000000..a31f2c0bfc
--- /dev/null
+++ b/Lang/Component-Pascal/Arithmetic-Integer
@@ -0,0 +1 @@
+../../Task/Arithmetic-Integer/Component-Pascal
\ No newline at end of file
diff --git a/Lang/Component-Pascal/Array-concatenation b/Lang/Component-Pascal/Array-concatenation
new file mode 120000
index 0000000000..2f49c85be3
--- /dev/null
+++ b/Lang/Component-Pascal/Array-concatenation
@@ -0,0 +1 @@
+../../Task/Array-concatenation/Component-Pascal
\ No newline at end of file
diff --git a/Lang/Component-Pascal/Associative-array-Creation b/Lang/Component-Pascal/Associative-array-Creation
new file mode 120000
index 0000000000..4ebc646171
--- /dev/null
+++ b/Lang/Component-Pascal/Associative-array-Creation
@@ -0,0 +1 @@
+../../Task/Associative-array-Creation/Component-Pascal
\ No newline at end of file
diff --git a/Lang/Component-Pascal/Balanced-brackets b/Lang/Component-Pascal/Balanced-brackets
new file mode 120000
index 0000000000..b608946917
--- /dev/null
+++ b/Lang/Component-Pascal/Balanced-brackets
@@ -0,0 +1 @@
+../../Task/Balanced-brackets/Component-Pascal
\ No newline at end of file
diff --git a/Lang/Component-Pascal/Binary-digits b/Lang/Component-Pascal/Binary-digits
new file mode 120000
index 0000000000..8801f8277f
--- /dev/null
+++ b/Lang/Component-Pascal/Binary-digits
@@ -0,0 +1 @@
+../../Task/Binary-digits/Component-Pascal
\ No newline at end of file
diff --git a/Lang/Component-Pascal/Binary-strings b/Lang/Component-Pascal/Binary-strings
new file mode 120000
index 0000000000..60f60ed051
--- /dev/null
+++ b/Lang/Component-Pascal/Binary-strings
@@ -0,0 +1 @@
+../../Task/Binary-strings/Component-Pascal
\ No newline at end of file
diff --git a/Lang/Component-Pascal/Boolean-values b/Lang/Component-Pascal/Boolean-values
new file mode 120000
index 0000000000..2a81649c48
--- /dev/null
+++ b/Lang/Component-Pascal/Boolean-values
@@ -0,0 +1 @@
+../../Task/Boolean-values/Component-Pascal
\ No newline at end of file
diff --git a/Lang/Component-Pascal/CRC-32 b/Lang/Component-Pascal/CRC-32
new file mode 120000
index 0000000000..5e3997d7df
--- /dev/null
+++ b/Lang/Component-Pascal/CRC-32
@@ -0,0 +1 @@
+../../Task/CRC-32/Component-Pascal
\ No newline at end of file
diff --git a/Lang/Component-Pascal/Character-codes b/Lang/Component-Pascal/Character-codes
new file mode 120000
index 0000000000..592548598c
--- /dev/null
+++ b/Lang/Component-Pascal/Character-codes
@@ -0,0 +1 @@
+../../Task/Character-codes/Component-Pascal
\ No newline at end of file
diff --git a/Lang/Component-Pascal/Classes b/Lang/Component-Pascal/Classes
new file mode 120000
index 0000000000..7b2f11e665
--- /dev/null
+++ b/Lang/Component-Pascal/Classes
@@ -0,0 +1 @@
+../../Task/Classes/Component-Pascal
\ No newline at end of file
diff --git a/Lang/Component-Pascal/Comments b/Lang/Component-Pascal/Comments
new file mode 120000
index 0000000000..abf066f33a
--- /dev/null
+++ b/Lang/Component-Pascal/Comments
@@ -0,0 +1 @@
+../../Task/Comments/Component-Pascal
\ No newline at end of file
diff --git a/Lang/Component-Pascal/Copy-a-string b/Lang/Component-Pascal/Copy-a-string
new file mode 120000
index 0000000000..5f49be0699
--- /dev/null
+++ b/Lang/Component-Pascal/Copy-a-string
@@ -0,0 +1 @@
+../../Task/Copy-a-string/Component-Pascal
\ No newline at end of file
diff --git a/Lang/Component-Pascal/Count-in-octal b/Lang/Component-Pascal/Count-in-octal
new file mode 120000
index 0000000000..2487f35f9a
--- /dev/null
+++ b/Lang/Component-Pascal/Count-in-octal
@@ -0,0 +1 @@
+../../Task/Count-in-octal/Component-Pascal
\ No newline at end of file
diff --git a/Lang/Component-Pascal/Date-format b/Lang/Component-Pascal/Date-format
new file mode 120000
index 0000000000..20a8d1e6c5
--- /dev/null
+++ b/Lang/Component-Pascal/Date-format
@@ -0,0 +1 @@
+../../Task/Date-format/Component-Pascal
\ No newline at end of file
diff --git a/Lang/Component-Pascal/Empty-program b/Lang/Component-Pascal/Empty-program
new file mode 120000
index 0000000000..71f09d067a
--- /dev/null
+++ b/Lang/Component-Pascal/Empty-program
@@ -0,0 +1 @@
+../../Task/Empty-program/Component-Pascal
\ No newline at end of file
diff --git a/Lang/Component-Pascal/Empty-string b/Lang/Component-Pascal/Empty-string
new file mode 120000
index 0000000000..0887f7cafe
--- /dev/null
+++ b/Lang/Component-Pascal/Empty-string
@@ -0,0 +1 @@
+../../Task/Empty-string/Component-Pascal
\ No newline at end of file
diff --git a/Lang/Component-Pascal/Even-or-odd b/Lang/Component-Pascal/Even-or-odd
new file mode 120000
index 0000000000..92d92dd089
--- /dev/null
+++ b/Lang/Component-Pascal/Even-or-odd
@@ -0,0 +1 @@
+../../Task/Even-or-odd/Component-Pascal
\ No newline at end of file
diff --git a/Lang/Component-Pascal/Gray-code b/Lang/Component-Pascal/Gray-code
new file mode 120000
index 0000000000..03f5a3dbf1
--- /dev/null
+++ b/Lang/Component-Pascal/Gray-code
@@ -0,0 +1 @@
+../../Task/Gray-code/Component-Pascal
\ No newline at end of file
diff --git a/Lang/Component-Pascal/Greatest-common-divisor b/Lang/Component-Pascal/Greatest-common-divisor
new file mode 120000
index 0000000000..b40db2bccc
--- /dev/null
+++ b/Lang/Component-Pascal/Greatest-common-divisor
@@ -0,0 +1 @@
+../../Task/Greatest-common-divisor/Component-Pascal
\ No newline at end of file
diff --git a/Lang/Component-Pascal/Greatest-element-of-a-list b/Lang/Component-Pascal/Greatest-element-of-a-list
new file mode 120000
index 0000000000..aec551b5bb
--- /dev/null
+++ b/Lang/Component-Pascal/Greatest-element-of-a-list
@@ -0,0 +1 @@
+../../Task/Greatest-element-of-a-list/Component-Pascal
\ No newline at end of file
diff --git a/Lang/Component-Pascal/Identity-matrix b/Lang/Component-Pascal/Identity-matrix
new file mode 120000
index 0000000000..afda284413
--- /dev/null
+++ b/Lang/Component-Pascal/Identity-matrix
@@ -0,0 +1 @@
+../../Task/Identity-matrix/Component-Pascal
\ No newline at end of file
diff --git a/Lang/Component-Pascal/Increment-a-numerical-string b/Lang/Component-Pascal/Increment-a-numerical-string
new file mode 120000
index 0000000000..58accc6d11
--- /dev/null
+++ b/Lang/Component-Pascal/Increment-a-numerical-string
@@ -0,0 +1 @@
+../../Task/Increment-a-numerical-string/Component-Pascal
\ No newline at end of file
diff --git a/Lang/Component-Pascal/Infinity b/Lang/Component-Pascal/Infinity
new file mode 120000
index 0000000000..8ee6de2734
--- /dev/null
+++ b/Lang/Component-Pascal/Infinity
@@ -0,0 +1 @@
+../../Task/Infinity/Component-Pascal
\ No newline at end of file
diff --git a/Lang/Component-Pascal/Integer-sequence b/Lang/Component-Pascal/Integer-sequence
new file mode 120000
index 0000000000..e7b48ef8d5
--- /dev/null
+++ b/Lang/Component-Pascal/Integer-sequence
@@ -0,0 +1 @@
+../../Task/Integer-sequence/Component-Pascal
\ No newline at end of file
diff --git a/Lang/Component-Pascal/Leap-year b/Lang/Component-Pascal/Leap-year
new file mode 120000
index 0000000000..3fd0ad097d
--- /dev/null
+++ b/Lang/Component-Pascal/Leap-year
@@ -0,0 +1 @@
+../../Task/Leap-year/Component-Pascal
\ No newline at end of file
diff --git a/Lang/Component-Pascal/Letter-frequency b/Lang/Component-Pascal/Letter-frequency
new file mode 120000
index 0000000000..58ebf6d70c
--- /dev/null
+++ b/Lang/Component-Pascal/Letter-frequency
@@ -0,0 +1 @@
+../../Task/Letter-frequency/Component-Pascal
\ No newline at end of file
diff --git a/Lang/Component-Pascal/Palindrome-detection b/Lang/Component-Pascal/Palindrome-detection
new file mode 120000
index 0000000000..a5a4d4b5e8
--- /dev/null
+++ b/Lang/Component-Pascal/Palindrome-detection
@@ -0,0 +1 @@
+../../Task/Palindrome-detection/Component-Pascal
\ No newline at end of file
diff --git a/Lang/Component-Pascal/Pangram-checker b/Lang/Component-Pascal/Pangram-checker
new file mode 120000
index 0000000000..1b9e5d648e
--- /dev/null
+++ b/Lang/Component-Pascal/Pangram-checker
@@ -0,0 +1 @@
+../../Task/Pangram-checker/Component-Pascal
\ No newline at end of file
diff --git a/Lang/Component-Pascal/Priority-queue b/Lang/Component-Pascal/Priority-queue
new file mode 120000
index 0000000000..7ccba1c0e6
--- /dev/null
+++ b/Lang/Component-Pascal/Priority-queue
@@ -0,0 +1 @@
+../../Task/Priority-queue/Component-Pascal
\ No newline at end of file
diff --git a/Lang/Component-Pascal/Queue-Definition b/Lang/Component-Pascal/Queue-Definition
new file mode 120000
index 0000000000..d5032c10ee
--- /dev/null
+++ b/Lang/Component-Pascal/Queue-Definition
@@ -0,0 +1 @@
+../../Task/Queue-Definition/Component-Pascal
\ No newline at end of file
diff --git a/Lang/Component-Pascal/Queue-Usage b/Lang/Component-Pascal/Queue-Usage
new file mode 120000
index 0000000000..fb19faa69e
--- /dev/null
+++ b/Lang/Component-Pascal/Queue-Usage
@@ -0,0 +1 @@
+../../Task/Queue-Usage/Component-Pascal
\ No newline at end of file
diff --git a/Lang/Component-Pascal/Reverse-a-string b/Lang/Component-Pascal/Reverse-a-string
new file mode 120000
index 0000000000..489cbd6fca
--- /dev/null
+++ b/Lang/Component-Pascal/Reverse-a-string
@@ -0,0 +1 @@
+../../Task/Reverse-a-string/Component-Pascal
\ No newline at end of file
diff --git a/Lang/Component-Pascal/Stack b/Lang/Component-Pascal/Stack
new file mode 120000
index 0000000000..4a11e8cb9a
--- /dev/null
+++ b/Lang/Component-Pascal/Stack
@@ -0,0 +1 @@
+../../Task/Stack/Component-Pascal
\ No newline at end of file
diff --git a/Lang/Component-Pascal/Standard-deviation b/Lang/Component-Pascal/Standard-deviation
new file mode 120000
index 0000000000..d173a69ccb
--- /dev/null
+++ b/Lang/Component-Pascal/Standard-deviation
@@ -0,0 +1 @@
+../../Task/Standard-deviation/Component-Pascal
\ No newline at end of file
diff --git a/Lang/Component-Pascal/Start-from-a-main-routine b/Lang/Component-Pascal/Start-from-a-main-routine
new file mode 120000
index 0000000000..762c895af3
--- /dev/null
+++ b/Lang/Component-Pascal/Start-from-a-main-routine
@@ -0,0 +1 @@
+../../Task/Start-from-a-main-routine/Component-Pascal
\ No newline at end of file
diff --git a/Lang/Component-Pascal/String-case b/Lang/Component-Pascal/String-case
new file mode 120000
index 0000000000..633917cce9
--- /dev/null
+++ b/Lang/Component-Pascal/String-case
@@ -0,0 +1 @@
+../../Task/String-case/Component-Pascal
\ No newline at end of file
diff --git a/Lang/Component-Pascal/String-comparison b/Lang/Component-Pascal/String-comparison
new file mode 120000
index 0000000000..d19c9b4a91
--- /dev/null
+++ b/Lang/Component-Pascal/String-comparison
@@ -0,0 +1 @@
+../../Task/String-comparison/Component-Pascal
\ No newline at end of file
diff --git a/Lang/Component-Pascal/String-concatenation b/Lang/Component-Pascal/String-concatenation
new file mode 120000
index 0000000000..4b694f1df4
--- /dev/null
+++ b/Lang/Component-Pascal/String-concatenation
@@ -0,0 +1 @@
+../../Task/String-concatenation/Component-Pascal
\ No newline at end of file
diff --git a/Lang/Component-Pascal/Substring b/Lang/Component-Pascal/Substring
new file mode 120000
index 0000000000..857707f42d
--- /dev/null
+++ b/Lang/Component-Pascal/Substring
@@ -0,0 +1 @@
+../../Task/Substring/Component-Pascal
\ No newline at end of file
diff --git a/Lang/Coq/Loops-For b/Lang/Coq/Loops-For
new file mode 120000
index 0000000000..b1341b994c
--- /dev/null
+++ b/Lang/Coq/Loops-For
@@ -0,0 +1 @@
+../../Task/Loops-For/Coq
\ No newline at end of file
diff --git a/Lang/D/00DESCRIPTION b/Lang/D/00DESCRIPTION
index 67d713611f..e9941092f0 100644
--- a/Lang/D/00DESCRIPTION
+++ b/Lang/D/00DESCRIPTION
@@ -13,7 +13,7 @@
{{language programming paradigm|object-oriented}}
{{language programming paradigm|Functional}}
{{language programming paradigm|generic}}
-'''D''' is an [[object-oriented]], [[imperative programming|imperative]], multi-[[:Category:Programming Paradigms|paradigm]] system programming language by Walter Bright of Digital Mars. It originated as a re-engineering of [[C++]], but even though it is predominantly influenced by that language, it is not a variant of C++. D has redesigned some C++ features and has been influenced by concepts used in other programming languages, such as [[Python]], [[Java]], [[C sharp|C#]] and [[Eiffel]]. A stable version, 1.0, was released on January 2, 2007.
+'''D''' is an [[object-oriented]], [[imperative programming|imperative]], multi-[[:Category:Programming Paradigms|paradigm]] system programming language by Walter Bright of Digital Mars. It originated as a re-engineering of [[C++]], but even though it is predominantly influenced by that language, it is not a variant of C++. D has redesigned some C++ features and has been influenced by concepts used in other programming languages, such as [[Python]], [[Java]], [[C sharp|C#]] and [[Eiffel]].
==Citations==
* [[wp:D (programming language)|Wikipedia:D (programming language)]]
\ No newline at end of file
diff --git a/Lang/D/Terminal-control-Coloured-text b/Lang/D/Terminal-control-Coloured-text
new file mode 120000
index 0000000000..f253d06637
--- /dev/null
+++ b/Lang/D/Terminal-control-Coloured-text
@@ -0,0 +1 @@
+../../Task/Terminal-control-Coloured-text/D
\ No newline at end of file
diff --git a/Lang/D/Yahoo--search-interface b/Lang/D/Yahoo--search-interface
new file mode 120000
index 0000000000..f50dd84400
--- /dev/null
+++ b/Lang/D/Yahoo--search-interface
@@ -0,0 +1 @@
+../../Task/Yahoo--search-interface/D
\ No newline at end of file
diff --git a/Lang/DCL/00DESCRIPTION b/Lang/DCL/00DESCRIPTION
index 4d3d27c049..1a188356c3 100644
--- a/Lang/DCL/00DESCRIPTION
+++ b/Lang/DCL/00DESCRIPTION
@@ -1 +1,3 @@
-{{stub}}{{language}}
\ No newline at end of file
+DCL, the DIGITAL Command Language, is the standard command language adopted by most of the operating systems that were sold by the former Digital Equipment Corporation (which has since been acquired by Compaq which itself was acquired by Hewlett-Packard). It had its roots in the IAS, TOPS-20, and RT-11 operating systems and was implemented as a standard across most of Digital's operating systems, notably RSX-11, but took its most powerful form in the OpenVMS operating system.
+
+Written when the Fortran programming language was in heavy use, DCL is a scripting language supporting several datatypes, including strings, integers, bit arrays, arrays and booleans, but not floating point numbers. Access to OpenVMS system services (kernel API) is through lexical functions, which perform the same as their compiled language counterparts and allow scripts to get information on system state. DCL includes IF-THEN-ELSE, access to all the RMS file types including stream, indexed, and sequential, but unfortunately lacks a DO-WHILE or other looping construct, requiring users to make do with IF and GOTO-label statements instead.
\ No newline at end of file
diff --git a/Lang/DCL/100-doors b/Lang/DCL/100-doors
new file mode 120000
index 0000000000..a6ea07e6f3
--- /dev/null
+++ b/Lang/DCL/100-doors
@@ -0,0 +1 @@
+../../Task/100-doors/DCL
\ No newline at end of file
diff --git a/Lang/DWScript/00DESCRIPTION b/Lang/DWScript/00DESCRIPTION
index 60859f7de7..cf7cd67168 100644
--- a/Lang/DWScript/00DESCRIPTION
+++ b/Lang/DWScript/00DESCRIPTION
@@ -11,7 +11,7 @@
{{language programming paradigm|imperative}}
{{implementation|Object Pascal}}
-DWScript (DelphiWebScript) is a strongly-typed [[Object-oriented language|object-oriented]] scripting language based on the [[Delphi]] language, with extensions borrowed from other Object Pascal dialects.
+DWScript (DelphiWebScript) is a strongly-typed [[Object-oriented language|object-oriented]] scripting language based on the [[Delphi]] language, with extensions borrowed from other Object Pascal dialects. DWScript programming typically involves less code than classic Pascal due to the availability of type inference and inline declarations, though classic Object Pascal code is largely supported.
==See Also==
* [[wp:Object_Pascal|Wikipedia: Object Pascal]]
diff --git a/Lang/Dart/Arbitrary-precision-integers--included- b/Lang/Dart/Arbitrary-precision-integers--included-
new file mode 120000
index 0000000000..173f5be32b
--- /dev/null
+++ b/Lang/Dart/Arbitrary-precision-integers--included-
@@ -0,0 +1 @@
+../../Task/Arbitrary-precision-integers--included-/Dart
\ No newline at end of file
diff --git a/Lang/Deja-Vu/Accumulator-factory b/Lang/Deja-Vu/Accumulator-factory
new file mode 120000
index 0000000000..df3a28dd6d
--- /dev/null
+++ b/Lang/Deja-Vu/Accumulator-factory
@@ -0,0 +1 @@
+../../Task/Accumulator-factory/Deja-Vu
\ No newline at end of file
diff --git a/Lang/Deja-Vu/Arrays b/Lang/Deja-Vu/Arrays
new file mode 120000
index 0000000000..22cba70aaa
--- /dev/null
+++ b/Lang/Deja-Vu/Arrays
@@ -0,0 +1 @@
+../../Task/Arrays/Deja-Vu
\ No newline at end of file
diff --git a/Lang/Deja-Vu/Deepcopy b/Lang/Deja-Vu/Deepcopy
new file mode 120000
index 0000000000..0fe5fe3788
--- /dev/null
+++ b/Lang/Deja-Vu/Deepcopy
@@ -0,0 +1 @@
+../../Task/Deepcopy/Deja-Vu
\ No newline at end of file
diff --git a/Lang/Deja-Vu/Detect-division-by-zero b/Lang/Deja-Vu/Detect-division-by-zero
new file mode 120000
index 0000000000..e23a27d2f7
--- /dev/null
+++ b/Lang/Deja-Vu/Detect-division-by-zero
@@ -0,0 +1 @@
+../../Task/Detect-division-by-zero/Deja-Vu
\ No newline at end of file
diff --git a/Lang/Deja-Vu/Determine-if-a-string-is-numeric b/Lang/Deja-Vu/Determine-if-a-string-is-numeric
new file mode 120000
index 0000000000..3385f3dddc
--- /dev/null
+++ b/Lang/Deja-Vu/Determine-if-a-string-is-numeric
@@ -0,0 +1 @@
+../../Task/Determine-if-a-string-is-numeric/Deja-Vu
\ No newline at end of file
diff --git a/Lang/Deja-Vu/Empty-program b/Lang/Deja-Vu/Empty-program
new file mode 120000
index 0000000000..86385fc70e
--- /dev/null
+++ b/Lang/Deja-Vu/Empty-program
@@ -0,0 +1 @@
+../../Task/Empty-program/Deja-Vu
\ No newline at end of file
diff --git a/Lang/Deja-Vu/Empty-string b/Lang/Deja-Vu/Empty-string
new file mode 120000
index 0000000000..f89fa9febe
--- /dev/null
+++ b/Lang/Deja-Vu/Empty-string
@@ -0,0 +1 @@
+../../Task/Empty-string/Deja-Vu
\ No newline at end of file
diff --git a/Lang/Deja-Vu/Execute-a-Markov-algorithm b/Lang/Deja-Vu/Execute-a-Markov-algorithm
new file mode 120000
index 0000000000..50ff176932
--- /dev/null
+++ b/Lang/Deja-Vu/Execute-a-Markov-algorithm
@@ -0,0 +1 @@
+../../Task/Execute-a-Markov-algorithm/Deja-Vu
\ No newline at end of file
diff --git a/Lang/Deja-Vu/First-class-functions b/Lang/Deja-Vu/First-class-functions
new file mode 120000
index 0000000000..38485c5afd
--- /dev/null
+++ b/Lang/Deja-Vu/First-class-functions
@@ -0,0 +1 @@
+../../Task/First-class-functions/Deja-Vu
\ No newline at end of file
diff --git a/Lang/Deja-Vu/Flatten-a-list b/Lang/Deja-Vu/Flatten-a-list
new file mode 120000
index 0000000000..279d9448dd
--- /dev/null
+++ b/Lang/Deja-Vu/Flatten-a-list
@@ -0,0 +1 @@
+../../Task/Flatten-a-list/Deja-Vu
\ No newline at end of file
diff --git a/Lang/Deja-Vu/Function-composition b/Lang/Deja-Vu/Function-composition
new file mode 120000
index 0000000000..67285d3d82
--- /dev/null
+++ b/Lang/Deja-Vu/Function-composition
@@ -0,0 +1 @@
+../../Task/Function-composition/Deja-Vu
\ No newline at end of file
diff --git a/Lang/Deja-Vu/Generic-swap b/Lang/Deja-Vu/Generic-swap
new file mode 120000
index 0000000000..0f0257f3ba
--- /dev/null
+++ b/Lang/Deja-Vu/Generic-swap
@@ -0,0 +1 @@
+../../Task/Generic-swap/Deja-Vu
\ No newline at end of file
diff --git a/Lang/Deja-Vu/Hailstone-sequence b/Lang/Deja-Vu/Hailstone-sequence
new file mode 120000
index 0000000000..7d4243a102
--- /dev/null
+++ b/Lang/Deja-Vu/Hailstone-sequence
@@ -0,0 +1 @@
+../../Task/Hailstone-sequence/Deja-Vu
\ No newline at end of file
diff --git a/Lang/Deja-Vu/Include-a-file b/Lang/Deja-Vu/Include-a-file
new file mode 120000
index 0000000000..c41bcd67a8
--- /dev/null
+++ b/Lang/Deja-Vu/Include-a-file
@@ -0,0 +1 @@
+../../Task/Include-a-file/Deja-Vu
\ No newline at end of file
diff --git a/Lang/Deja-Vu/Mutual-recursion b/Lang/Deja-Vu/Mutual-recursion
new file mode 120000
index 0000000000..8a498b433e
--- /dev/null
+++ b/Lang/Deja-Vu/Mutual-recursion
@@ -0,0 +1 @@
+../../Task/Mutual-recursion/Deja-Vu
\ No newline at end of file
diff --git a/Lang/Deja-Vu/Respond-to-an-unknown-method-call b/Lang/Deja-Vu/Respond-to-an-unknown-method-call
new file mode 120000
index 0000000000..e35bdf54d8
--- /dev/null
+++ b/Lang/Deja-Vu/Respond-to-an-unknown-method-call
@@ -0,0 +1 @@
+../../Task/Respond-to-an-unknown-method-call/Deja-Vu
\ No newline at end of file
diff --git a/Lang/Deja-Vu/Return-multiple-values b/Lang/Deja-Vu/Return-multiple-values
new file mode 120000
index 0000000000..ca3b425458
--- /dev/null
+++ b/Lang/Deja-Vu/Return-multiple-values
@@ -0,0 +1 @@
+../../Task/Return-multiple-values/Deja-Vu
\ No newline at end of file
diff --git a/Lang/Deja-Vu/Symmetric-difference b/Lang/Deja-Vu/Symmetric-difference
new file mode 120000
index 0000000000..e41cff5190
--- /dev/null
+++ b/Lang/Deja-Vu/Symmetric-difference
@@ -0,0 +1 @@
+../../Task/Symmetric-difference/Deja-Vu
\ No newline at end of file
diff --git a/Lang/Deja-Vu/Y-combinator b/Lang/Deja-Vu/Y-combinator
new file mode 120000
index 0000000000..60f7e7387b
--- /dev/null
+++ b/Lang/Deja-Vu/Y-combinator
@@ -0,0 +1 @@
+../../Task/Y-combinator/Deja-Vu
\ No newline at end of file
diff --git a/Lang/Delphi/Pointers-and-references b/Lang/Delphi/Pointers-and-references
new file mode 120000
index 0000000000..27a82833af
--- /dev/null
+++ b/Lang/Delphi/Pointers-and-references
@@ -0,0 +1 @@
+../../Task/Pointers-and-references/Delphi
\ No newline at end of file
diff --git a/Lang/Dylan/Boolean-values b/Lang/Dylan/Boolean-values
new file mode 120000
index 0000000000..f8113d7b47
--- /dev/null
+++ b/Lang/Dylan/Boolean-values
@@ -0,0 +1 @@
+../../Task/Boolean-values/Dylan
\ No newline at end of file
diff --git a/Lang/Dylan/Comments b/Lang/Dylan/Comments
new file mode 120000
index 0000000000..6f84048e65
--- /dev/null
+++ b/Lang/Dylan/Comments
@@ -0,0 +1 @@
+../../Task/Comments/Dylan
\ No newline at end of file
diff --git a/Lang/Dylan/Literals-Integer b/Lang/Dylan/Literals-Integer
new file mode 120000
index 0000000000..172d5a64af
--- /dev/null
+++ b/Lang/Dylan/Literals-Integer
@@ -0,0 +1 @@
+../../Task/Literals-Integer/Dylan
\ No newline at end of file
diff --git a/Lang/Eiffel/99-Bottles-of-Beer b/Lang/Eiffel/99-Bottles-of-Beer
new file mode 120000
index 0000000000..e8effe3dfd
--- /dev/null
+++ b/Lang/Eiffel/99-Bottles-of-Beer
@@ -0,0 +1 @@
+../../Task/99-Bottles-of-Beer/Eiffel
\ No newline at end of file
diff --git a/Lang/Eiffel/Fibonacci-sequence b/Lang/Eiffel/Fibonacci-sequence
new file mode 120000
index 0000000000..818e3b5c46
--- /dev/null
+++ b/Lang/Eiffel/Fibonacci-sequence
@@ -0,0 +1 @@
+../../Task/Fibonacci-sequence/Eiffel
\ No newline at end of file
diff --git a/Lang/Eiffel/Greatest-common-divisor b/Lang/Eiffel/Greatest-common-divisor
new file mode 120000
index 0000000000..70a66d2946
--- /dev/null
+++ b/Lang/Eiffel/Greatest-common-divisor
@@ -0,0 +1 @@
+../../Task/Greatest-common-divisor/Eiffel
\ No newline at end of file
diff --git a/Lang/Eiffel/Greatest-element-of-a-list b/Lang/Eiffel/Greatest-element-of-a-list
new file mode 120000
index 0000000000..161f6b27bb
--- /dev/null
+++ b/Lang/Eiffel/Greatest-element-of-a-list
@@ -0,0 +1 @@
+../../Task/Greatest-element-of-a-list/Eiffel
\ No newline at end of file
diff --git a/Lang/Eiffel/Sorting-algorithms-Quicksort b/Lang/Eiffel/Sorting-algorithms-Quicksort
new file mode 120000
index 0000000000..fd3eb63a1e
--- /dev/null
+++ b/Lang/Eiffel/Sorting-algorithms-Quicksort
@@ -0,0 +1 @@
+../../Task/Sorting-algorithms-Quicksort/Eiffel
\ No newline at end of file
diff --git a/Lang/Eiffel/Stack b/Lang/Eiffel/Stack
new file mode 120000
index 0000000000..fb5259c57f
--- /dev/null
+++ b/Lang/Eiffel/Stack
@@ -0,0 +1 @@
+../../Task/Stack/Eiffel
\ No newline at end of file
diff --git a/Lang/Elena/Best-shuffle b/Lang/Elena/Best-shuffle
new file mode 120000
index 0000000000..3baf41ee21
--- /dev/null
+++ b/Lang/Elena/Best-shuffle
@@ -0,0 +1 @@
+../../Task/Best-shuffle/Elena
\ No newline at end of file
diff --git a/Lang/Elixir/100-doors b/Lang/Elixir/100-doors
new file mode 120000
index 0000000000..0bce13c2a4
--- /dev/null
+++ b/Lang/Elixir/100-doors
@@ -0,0 +1 @@
+../../Task/100-doors/Elixir
\ No newline at end of file
diff --git a/Lang/Elixir/99-Bottles-of-Beer b/Lang/Elixir/99-Bottles-of-Beer
new file mode 120000
index 0000000000..bc3add56d0
--- /dev/null
+++ b/Lang/Elixir/99-Bottles-of-Beer
@@ -0,0 +1 @@
+../../Task/99-Bottles-of-Beer/Elixir
\ No newline at end of file
diff --git a/Lang/Elixir/Bitmap b/Lang/Elixir/Bitmap
new file mode 120000
index 0000000000..2f8c654317
--- /dev/null
+++ b/Lang/Elixir/Bitmap
@@ -0,0 +1 @@
+../../Task/Bitmap/Elixir
\ No newline at end of file
diff --git a/Lang/Elixir/Hailstone-sequence b/Lang/Elixir/Hailstone-sequence
new file mode 120000
index 0000000000..be8a01b202
--- /dev/null
+++ b/Lang/Elixir/Hailstone-sequence
@@ -0,0 +1 @@
+../../Task/Hailstone-sequence/Elixir
\ No newline at end of file
diff --git a/Lang/Emacs-Lisp/Empty-string b/Lang/Emacs-Lisp/Empty-string
new file mode 120000
index 0000000000..f41bfb6aae
--- /dev/null
+++ b/Lang/Emacs-Lisp/Empty-string
@@ -0,0 +1 @@
+../../Task/Empty-string/Emacs-Lisp
\ No newline at end of file
diff --git a/Lang/Emacs-Lisp/File-size b/Lang/Emacs-Lisp/File-size
new file mode 120000
index 0000000000..6453d2e9ee
--- /dev/null
+++ b/Lang/Emacs-Lisp/File-size
@@ -0,0 +1 @@
+../../Task/File-size/Emacs-Lisp
\ No newline at end of file
diff --git a/Lang/Emacs-Lisp/Mouse-position b/Lang/Emacs-Lisp/Mouse-position
new file mode 120000
index 0000000000..6e860f1d9e
--- /dev/null
+++ b/Lang/Emacs-Lisp/Mouse-position
@@ -0,0 +1 @@
+../../Task/Mouse-position/Emacs-Lisp
\ No newline at end of file
diff --git a/Lang/Emacs-Lisp/Rename-a-file b/Lang/Emacs-Lisp/Rename-a-file
new file mode 120000
index 0000000000..0ceab009bc
--- /dev/null
+++ b/Lang/Emacs-Lisp/Rename-a-file
@@ -0,0 +1 @@
+../../Task/Rename-a-file/Emacs-Lisp
\ No newline at end of file
diff --git a/Lang/Emacs-Lisp/Repeat-a-string b/Lang/Emacs-Lisp/Repeat-a-string
new file mode 120000
index 0000000000..28cc41d5cc
--- /dev/null
+++ b/Lang/Emacs-Lisp/Repeat-a-string
@@ -0,0 +1 @@
+../../Task/Repeat-a-string/Emacs-Lisp
\ No newline at end of file
diff --git a/Lang/Emacs-Lisp/Sleep b/Lang/Emacs-Lisp/Sleep
new file mode 120000
index 0000000000..412aa2c744
--- /dev/null
+++ b/Lang/Emacs-Lisp/Sleep
@@ -0,0 +1 @@
+../../Task/Sleep/Emacs-Lisp
\ No newline at end of file
diff --git a/Lang/Emacs-Lisp/String-length b/Lang/Emacs-Lisp/String-length
new file mode 120000
index 0000000000..819cd76902
--- /dev/null
+++ b/Lang/Emacs-Lisp/String-length
@@ -0,0 +1 @@
+../../Task/String-length/Emacs-Lisp
\ No newline at end of file
diff --git a/Lang/Emacs-Lisp/Variadic-function b/Lang/Emacs-Lisp/Variadic-function
new file mode 120000
index 0000000000..383fb80b32
--- /dev/null
+++ b/Lang/Emacs-Lisp/Variadic-function
@@ -0,0 +1 @@
+../../Task/Variadic-function/Emacs-Lisp
\ No newline at end of file
diff --git a/Lang/Erlang/Best-shuffle b/Lang/Erlang/Best-shuffle
new file mode 120000
index 0000000000..a1b0da6cd5
--- /dev/null
+++ b/Lang/Erlang/Best-shuffle
@@ -0,0 +1 @@
+../../Task/Best-shuffle/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Bitmap b/Lang/Erlang/Bitmap
new file mode 120000
index 0000000000..c36f5593fd
--- /dev/null
+++ b/Lang/Erlang/Bitmap
@@ -0,0 +1 @@
+../../Task/Bitmap/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/CSV-to-HTML-translation b/Lang/Erlang/CSV-to-HTML-translation
new file mode 120000
index 0000000000..4be81b4ea5
--- /dev/null
+++ b/Lang/Erlang/CSV-to-HTML-translation
@@ -0,0 +1 @@
+../../Task/CSV-to-HTML-translation/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Call-a-function b/Lang/Erlang/Call-a-function
new file mode 120000
index 0000000000..a9a8cc9bb4
--- /dev/null
+++ b/Lang/Erlang/Call-a-function
@@ -0,0 +1 @@
+../../Task/Call-a-function/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Checkpoint-synchronization b/Lang/Erlang/Checkpoint-synchronization
new file mode 120000
index 0000000000..cc6ed75d80
--- /dev/null
+++ b/Lang/Erlang/Checkpoint-synchronization
@@ -0,0 +1 @@
+../../Task/Checkpoint-synchronization/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Compare-sorting-algorithms-performance b/Lang/Erlang/Compare-sorting-algorithms-performance
new file mode 120000
index 0000000000..77045c5a13
--- /dev/null
+++ b/Lang/Erlang/Compare-sorting-algorithms-performance
@@ -0,0 +1 @@
+../../Task/Compare-sorting-algorithms-performance/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Count-in-octal b/Lang/Erlang/Count-in-octal
new file mode 120000
index 0000000000..131198117f
--- /dev/null
+++ b/Lang/Erlang/Count-in-octal
@@ -0,0 +1 @@
+../../Task/Count-in-octal/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Create-a-two-dimensional-array-at-runtime b/Lang/Erlang/Create-a-two-dimensional-array-at-runtime
new file mode 120000
index 0000000000..cd63aee19c
--- /dev/null
+++ b/Lang/Erlang/Create-a-two-dimensional-array-at-runtime
@@ -0,0 +1 @@
+../../Task/Create-a-two-dimensional-array-at-runtime/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Create-an-HTML-table b/Lang/Erlang/Create-an-HTML-table
new file mode 120000
index 0000000000..70e9c4db57
--- /dev/null
+++ b/Lang/Erlang/Create-an-HTML-table
@@ -0,0 +1 @@
+../../Task/Create-an-HTML-table/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Doubly-linked-list-Definition b/Lang/Erlang/Doubly-linked-list-Definition
new file mode 120000
index 0000000000..4546813ade
--- /dev/null
+++ b/Lang/Erlang/Doubly-linked-list-Definition
@@ -0,0 +1 @@
+../../Task/Doubly-linked-list-Definition/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Doubly-linked-list-Element-definition b/Lang/Erlang/Doubly-linked-list-Element-definition
new file mode 120000
index 0000000000..f0ad042de0
--- /dev/null
+++ b/Lang/Erlang/Doubly-linked-list-Element-definition
@@ -0,0 +1 @@
+../../Task/Doubly-linked-list-Element-definition/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Dynamic-variable-names b/Lang/Erlang/Dynamic-variable-names
new file mode 120000
index 0000000000..e5b8c81243
--- /dev/null
+++ b/Lang/Erlang/Dynamic-variable-names
@@ -0,0 +1 @@
+../../Task/Dynamic-variable-names/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Entropy b/Lang/Erlang/Entropy
new file mode 120000
index 0000000000..16343cca19
--- /dev/null
+++ b/Lang/Erlang/Entropy
@@ -0,0 +1 @@
+../../Task/Entropy/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Environment-variables b/Lang/Erlang/Environment-variables
new file mode 120000
index 0000000000..a082878b74
--- /dev/null
+++ b/Lang/Erlang/Environment-variables
@@ -0,0 +1 @@
+../../Task/Environment-variables/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Exceptions b/Lang/Erlang/Exceptions
new file mode 120000
index 0000000000..0c6f63007b
--- /dev/null
+++ b/Lang/Erlang/Exceptions
@@ -0,0 +1 @@
+../../Task/Exceptions/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Exceptions-Catch-an-exception-thrown-in-a-nested-call b/Lang/Erlang/Exceptions-Catch-an-exception-thrown-in-a-nested-call
new file mode 120000
index 0000000000..fea90c631e
--- /dev/null
+++ b/Lang/Erlang/Exceptions-Catch-an-exception-thrown-in-a-nested-call
@@ -0,0 +1 @@
+../../Task/Exceptions-Catch-an-exception-thrown-in-a-nested-call/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Fibonacci-n-step-number-sequences b/Lang/Erlang/Fibonacci-n-step-number-sequences
new file mode 120000
index 0000000000..311e4683e0
--- /dev/null
+++ b/Lang/Erlang/Fibonacci-n-step-number-sequences
@@ -0,0 +1 @@
+../../Task/Fibonacci-n-step-number-sequences/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Find-common-directory-path b/Lang/Erlang/Find-common-directory-path
new file mode 120000
index 0000000000..53be94a06b
--- /dev/null
+++ b/Lang/Erlang/Find-common-directory-path
@@ -0,0 +1 @@
+../../Task/Find-common-directory-path/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Find-the-missing-permutation b/Lang/Erlang/Find-the-missing-permutation
new file mode 120000
index 0000000000..c56e511412
--- /dev/null
+++ b/Lang/Erlang/Find-the-missing-permutation
@@ -0,0 +1 @@
+../../Task/Find-the-missing-permutation/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/First-class-environments b/Lang/Erlang/First-class-environments
new file mode 120000
index 0000000000..b244683ccd
--- /dev/null
+++ b/Lang/Erlang/First-class-environments
@@ -0,0 +1 @@
+../../Task/First-class-environments/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/First-class-functions b/Lang/Erlang/First-class-functions
new file mode 120000
index 0000000000..7fe20b7148
--- /dev/null
+++ b/Lang/Erlang/First-class-functions
@@ -0,0 +1 @@
+../../Task/First-class-functions/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/First-class-functions-Use-numbers-analogously b/Lang/Erlang/First-class-functions-Use-numbers-analogously
new file mode 120000
index 0000000000..a504376ad6
--- /dev/null
+++ b/Lang/Erlang/First-class-functions-Use-numbers-analogously
@@ -0,0 +1 @@
+../../Task/First-class-functions-Use-numbers-analogously/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Forest-fire b/Lang/Erlang/Forest-fire
new file mode 120000
index 0000000000..295246de37
--- /dev/null
+++ b/Lang/Erlang/Forest-fire
@@ -0,0 +1 @@
+../../Task/Forest-fire/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Four-bit-adder b/Lang/Erlang/Four-bit-adder
new file mode 120000
index 0000000000..7c5fce5519
--- /dev/null
+++ b/Lang/Erlang/Four-bit-adder
@@ -0,0 +1 @@
+../../Task/Four-bit-adder/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Generator-Exponential b/Lang/Erlang/Generator-Exponential
new file mode 120000
index 0000000000..60f3e57028
--- /dev/null
+++ b/Lang/Erlang/Generator-Exponential
@@ -0,0 +1 @@
+../../Task/Generator-Exponential/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Globally-replace-text-in-several-files b/Lang/Erlang/Globally-replace-text-in-several-files
new file mode 120000
index 0000000000..cac173cb08
--- /dev/null
+++ b/Lang/Erlang/Globally-replace-text-in-several-files
@@ -0,0 +1 @@
+../../Task/Globally-replace-text-in-several-files/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Grayscale-image b/Lang/Erlang/Grayscale-image
new file mode 120000
index 0000000000..a19989695d
--- /dev/null
+++ b/Lang/Erlang/Grayscale-image
@@ -0,0 +1 @@
+../../Task/Grayscale-image/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Harshad-or-Niven-series b/Lang/Erlang/Harshad-or-Niven-series
new file mode 120000
index 0000000000..e26aa53905
--- /dev/null
+++ b/Lang/Erlang/Harshad-or-Niven-series
@@ -0,0 +1 @@
+../../Task/Harshad-or-Niven-series/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Hash-from-two-arrays b/Lang/Erlang/Hash-from-two-arrays
new file mode 120000
index 0000000000..7166cfb956
--- /dev/null
+++ b/Lang/Erlang/Hash-from-two-arrays
@@ -0,0 +1 @@
+../../Task/Hash-from-two-arrays/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Hofstadter-Conway-$10,000-sequence b/Lang/Erlang/Hofstadter-Conway-$10,000-sequence
new file mode 120000
index 0000000000..7d16dd83c7
--- /dev/null
+++ b/Lang/Erlang/Hofstadter-Conway-$10,000-sequence
@@ -0,0 +1 @@
+../../Task/Hofstadter-Conway-$10,000-sequence/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Huffman-coding b/Lang/Erlang/Huffman-coding
new file mode 120000
index 0000000000..fd7db2ab00
--- /dev/null
+++ b/Lang/Erlang/Huffman-coding
@@ -0,0 +1 @@
+../../Task/Huffman-coding/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Introspection b/Lang/Erlang/Introspection
new file mode 120000
index 0000000000..402ac2ff8a
--- /dev/null
+++ b/Lang/Erlang/Introspection
@@ -0,0 +1 @@
+../../Task/Introspection/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Inverted-index b/Lang/Erlang/Inverted-index
new file mode 120000
index 0000000000..24808754a3
--- /dev/null
+++ b/Lang/Erlang/Inverted-index
@@ -0,0 +1 @@
+../../Task/Inverted-index/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/JSON b/Lang/Erlang/JSON
new file mode 120000
index 0000000000..0f9b9d1133
--- /dev/null
+++ b/Lang/Erlang/JSON
@@ -0,0 +1 @@
+../../Task/JSON/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Jensens-Device b/Lang/Erlang/Jensens-Device
new file mode 120000
index 0000000000..331dd4c429
--- /dev/null
+++ b/Lang/Erlang/Jensens-Device
@@ -0,0 +1 @@
+../../Task/Jensens-Device/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Josephus-problem b/Lang/Erlang/Josephus-problem
new file mode 120000
index 0000000000..0dd7df72ee
--- /dev/null
+++ b/Lang/Erlang/Josephus-problem
@@ -0,0 +1 @@
+../../Task/Josephus-problem/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Knuth-shuffle b/Lang/Erlang/Knuth-shuffle
new file mode 120000
index 0000000000..db37c1f05a
--- /dev/null
+++ b/Lang/Erlang/Knuth-shuffle
@@ -0,0 +1 @@
+../../Task/Knuth-shuffle/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Langtons-ant b/Lang/Erlang/Langtons-ant
new file mode 120000
index 0000000000..fa2d4e6f81
--- /dev/null
+++ b/Lang/Erlang/Langtons-ant
@@ -0,0 +1 @@
+../../Task/Langtons-ant/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Largest-int-from-concatenated-ints b/Lang/Erlang/Largest-int-from-concatenated-ints
new file mode 120000
index 0000000000..c8c7ca615e
--- /dev/null
+++ b/Lang/Erlang/Largest-int-from-concatenated-ints
@@ -0,0 +1 @@
+../../Task/Largest-int-from-concatenated-ints/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Last-Friday-of-each-month b/Lang/Erlang/Last-Friday-of-each-month
new file mode 120000
index 0000000000..c79b796a11
--- /dev/null
+++ b/Lang/Erlang/Last-Friday-of-each-month
@@ -0,0 +1 @@
+../../Task/Last-Friday-of-each-month/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Last-letter-first-letter b/Lang/Erlang/Last-letter-first-letter
new file mode 120000
index 0000000000..41fe905853
--- /dev/null
+++ b/Lang/Erlang/Last-letter-first-letter
@@ -0,0 +1 @@
+../../Task/Last-letter-first-letter/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Letter-frequency b/Lang/Erlang/Letter-frequency
new file mode 120000
index 0000000000..e00ce27f79
--- /dev/null
+++ b/Lang/Erlang/Letter-frequency
@@ -0,0 +1 @@
+../../Task/Letter-frequency/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Loops-Nested b/Lang/Erlang/Loops-Nested
new file mode 120000
index 0000000000..718d7303dd
--- /dev/null
+++ b/Lang/Erlang/Loops-Nested
@@ -0,0 +1 @@
+../../Task/Loops-Nested/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Luhn-test-of-credit-card-numbers b/Lang/Erlang/Luhn-test-of-credit-card-numbers
new file mode 120000
index 0000000000..2db6f62048
--- /dev/null
+++ b/Lang/Erlang/Luhn-test-of-credit-card-numbers
@@ -0,0 +1 @@
+../../Task/Luhn-test-of-credit-card-numbers/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Maze-generation b/Lang/Erlang/Maze-generation
new file mode 120000
index 0000000000..9a79fa11ac
--- /dev/null
+++ b/Lang/Erlang/Maze-generation
@@ -0,0 +1 @@
+../../Task/Maze-generation/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Maze-solving b/Lang/Erlang/Maze-solving
new file mode 120000
index 0000000000..99358f9ced
--- /dev/null
+++ b/Lang/Erlang/Maze-solving
@@ -0,0 +1 @@
+../../Task/Maze-solving/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Monty-Hall-problem b/Lang/Erlang/Monty-Hall-problem
new file mode 120000
index 0000000000..92fe72cc57
--- /dev/null
+++ b/Lang/Erlang/Monty-Hall-problem
@@ -0,0 +1 @@
+../../Task/Monty-Hall-problem/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Multiplication-tables b/Lang/Erlang/Multiplication-tables
new file mode 120000
index 0000000000..ad0ef86fed
--- /dev/null
+++ b/Lang/Erlang/Multiplication-tables
@@ -0,0 +1 @@
+../../Task/Multiplication-tables/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Mutex b/Lang/Erlang/Mutex
new file mode 120000
index 0000000000..0ca8d2bcf3
--- /dev/null
+++ b/Lang/Erlang/Mutex
@@ -0,0 +1 @@
+../../Task/Mutex/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Named-parameters b/Lang/Erlang/Named-parameters
new file mode 120000
index 0000000000..d6ba049bcf
--- /dev/null
+++ b/Lang/Erlang/Named-parameters
@@ -0,0 +1 @@
+../../Task/Named-parameters/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Non-continuous-subsequences b/Lang/Erlang/Non-continuous-subsequences
new file mode 120000
index 0000000000..199b00bdc2
--- /dev/null
+++ b/Lang/Erlang/Non-continuous-subsequences
@@ -0,0 +1 @@
+../../Task/Non-continuous-subsequences/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Number-reversal-game b/Lang/Erlang/Number-reversal-game
new file mode 120000
index 0000000000..44f09a429a
--- /dev/null
+++ b/Lang/Erlang/Number-reversal-game
@@ -0,0 +1 @@
+../../Task/Number-reversal-game/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Object-serialization b/Lang/Erlang/Object-serialization
new file mode 120000
index 0000000000..ec23ac392a
--- /dev/null
+++ b/Lang/Erlang/Object-serialization
@@ -0,0 +1 @@
+../../Task/Object-serialization/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/One-of-n-lines-in-a-file b/Lang/Erlang/One-of-n-lines-in-a-file
new file mode 120000
index 0000000000..581e4f085c
--- /dev/null
+++ b/Lang/Erlang/One-of-n-lines-in-a-file
@@ -0,0 +1 @@
+../../Task/One-of-n-lines-in-a-file/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Optional-parameters b/Lang/Erlang/Optional-parameters
new file mode 120000
index 0000000000..d610cb5b44
--- /dev/null
+++ b/Lang/Erlang/Optional-parameters
@@ -0,0 +1 @@
+../../Task/Optional-parameters/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Ordered-words b/Lang/Erlang/Ordered-words
new file mode 120000
index 0000000000..09a6e57438
--- /dev/null
+++ b/Lang/Erlang/Ordered-words
@@ -0,0 +1 @@
+../../Task/Ordered-words/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Priority-queue b/Lang/Erlang/Priority-queue
new file mode 120000
index 0000000000..20d4d10d6c
--- /dev/null
+++ b/Lang/Erlang/Priority-queue
@@ -0,0 +1 @@
+../../Task/Priority-queue/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Range-expansion b/Lang/Erlang/Range-expansion
new file mode 120000
index 0000000000..be45f46aa1
--- /dev/null
+++ b/Lang/Erlang/Range-expansion
@@ -0,0 +1 @@
+../../Task/Range-expansion/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Range-extraction b/Lang/Erlang/Range-extraction
new file mode 120000
index 0000000000..bb73011f03
--- /dev/null
+++ b/Lang/Erlang/Range-extraction
@@ -0,0 +1 @@
+../../Task/Range-extraction/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Read-a-configuration-file b/Lang/Erlang/Read-a-configuration-file
new file mode 120000
index 0000000000..4ee4de5fc1
--- /dev/null
+++ b/Lang/Erlang/Read-a-configuration-file
@@ -0,0 +1 @@
+../../Task/Read-a-configuration-file/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Remove-lines-from-a-file b/Lang/Erlang/Remove-lines-from-a-file
new file mode 120000
index 0000000000..402f46c6e5
--- /dev/null
+++ b/Lang/Erlang/Remove-lines-from-a-file
@@ -0,0 +1 @@
+../../Task/Remove-lines-from-a-file/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Rendezvous b/Lang/Erlang/Rendezvous
new file mode 120000
index 0000000000..f7cac25d04
--- /dev/null
+++ b/Lang/Erlang/Rendezvous
@@ -0,0 +1 @@
+../../Task/Rendezvous/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Roman-numerals-Decode b/Lang/Erlang/Roman-numerals-Decode
new file mode 120000
index 0000000000..134100e017
--- /dev/null
+++ b/Lang/Erlang/Roman-numerals-Decode
@@ -0,0 +1 @@
+../../Task/Roman-numerals-Decode/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Rosetta-Code-Find-unimplemented-tasks b/Lang/Erlang/Rosetta-Code-Find-unimplemented-tasks
new file mode 120000
index 0000000000..d80226c73e
--- /dev/null
+++ b/Lang/Erlang/Rosetta-Code-Find-unimplemented-tasks
@@ -0,0 +1 @@
+../../Task/Rosetta-Code-Find-unimplemented-tasks/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Rosetta-Code-Fix-code-tags b/Lang/Erlang/Rosetta-Code-Fix-code-tags
new file mode 120000
index 0000000000..249da695f1
--- /dev/null
+++ b/Lang/Erlang/Rosetta-Code-Fix-code-tags
@@ -0,0 +1 @@
+../../Task/Rosetta-Code-Fix-code-tags/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Scope-Function-names-and-labels b/Lang/Erlang/Scope-Function-names-and-labels
new file mode 120000
index 0000000000..a2873ad46c
--- /dev/null
+++ b/Lang/Erlang/Scope-Function-names-and-labels
@@ -0,0 +1 @@
+../../Task/Scope-Function-names-and-labels/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Scope-modifiers b/Lang/Erlang/Scope-modifiers
new file mode 120000
index 0000000000..f1aaea40cc
--- /dev/null
+++ b/Lang/Erlang/Scope-modifiers
@@ -0,0 +1 @@
+../../Task/Scope-modifiers/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Seven-sided-dice-from-five-sided-dice b/Lang/Erlang/Seven-sided-dice-from-five-sided-dice
new file mode 120000
index 0000000000..5b661cf2f8
--- /dev/null
+++ b/Lang/Erlang/Seven-sided-dice-from-five-sided-dice
@@ -0,0 +1 @@
+../../Task/Seven-sided-dice-from-five-sided-dice/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Short-circuit-evaluation b/Lang/Erlang/Short-circuit-evaluation
new file mode 120000
index 0000000000..a9f06f2667
--- /dev/null
+++ b/Lang/Erlang/Short-circuit-evaluation
@@ -0,0 +1 @@
+../../Task/Short-circuit-evaluation/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Simple-database b/Lang/Erlang/Simple-database
new file mode 120000
index 0000000000..b8131bbea5
--- /dev/null
+++ b/Lang/Erlang/Simple-database
@@ -0,0 +1 @@
+../../Task/Simple-database/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Singly-linked-list-Element-definition b/Lang/Erlang/Singly-linked-list-Element-definition
new file mode 120000
index 0000000000..7ad9e62cae
--- /dev/null
+++ b/Lang/Erlang/Singly-linked-list-Element-definition
@@ -0,0 +1 @@
+../../Task/Singly-linked-list-Element-definition/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Singly-linked-list-Element-insertion b/Lang/Erlang/Singly-linked-list-Element-insertion
new file mode 120000
index 0000000000..8099ca0340
--- /dev/null
+++ b/Lang/Erlang/Singly-linked-list-Element-insertion
@@ -0,0 +1 @@
+../../Task/Singly-linked-list-Element-insertion/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Sort-disjoint-sublist b/Lang/Erlang/Sort-disjoint-sublist
new file mode 120000
index 0000000000..fe135595fe
--- /dev/null
+++ b/Lang/Erlang/Sort-disjoint-sublist
@@ -0,0 +1 @@
+../../Task/Sort-disjoint-sublist/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Sort-using-a-custom-comparator b/Lang/Erlang/Sort-using-a-custom-comparator
new file mode 120000
index 0000000000..1d54608f8a
--- /dev/null
+++ b/Lang/Erlang/Sort-using-a-custom-comparator
@@ -0,0 +1 @@
+../../Task/Sort-using-a-custom-comparator/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Sorting-algorithms-Bead-sort b/Lang/Erlang/Sorting-algorithms-Bead-sort
new file mode 120000
index 0000000000..e4630ba9f6
--- /dev/null
+++ b/Lang/Erlang/Sorting-algorithms-Bead-sort
@@ -0,0 +1 @@
+../../Task/Sorting-algorithms-Bead-sort/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Sorting-algorithms-Sleep-sort b/Lang/Erlang/Sorting-algorithms-Sleep-sort
new file mode 120000
index 0000000000..9cdca763fb
--- /dev/null
+++ b/Lang/Erlang/Sorting-algorithms-Sleep-sort
@@ -0,0 +1 @@
+../../Task/Sorting-algorithms-Sleep-sort/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Stack-traces b/Lang/Erlang/Stack-traces
new file mode 120000
index 0000000000..dc7f29f668
--- /dev/null
+++ b/Lang/Erlang/Stack-traces
@@ -0,0 +1 @@
+../../Task/Stack-traces/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Symmetric-difference b/Lang/Erlang/Symmetric-difference
new file mode 120000
index 0000000000..49b56863eb
--- /dev/null
+++ b/Lang/Erlang/Symmetric-difference
@@ -0,0 +1 @@
+../../Task/Symmetric-difference/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Take-notes-on-the-command-line b/Lang/Erlang/Take-notes-on-the-command-line
new file mode 120000
index 0000000000..db8027ac5b
--- /dev/null
+++ b/Lang/Erlang/Take-notes-on-the-command-line
@@ -0,0 +1 @@
+../../Task/Take-notes-on-the-command-line/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Test-a-function b/Lang/Erlang/Test-a-function
new file mode 120000
index 0000000000..dd3487653a
--- /dev/null
+++ b/Lang/Erlang/Test-a-function
@@ -0,0 +1 @@
+../../Task/Test-a-function/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Text-processing-1 b/Lang/Erlang/Text-processing-1
new file mode 120000
index 0000000000..e8f4ff3e24
--- /dev/null
+++ b/Lang/Erlang/Text-processing-1
@@ -0,0 +1 @@
+../../Task/Text-processing-1/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Text-processing-2 b/Lang/Erlang/Text-processing-2
new file mode 120000
index 0000000000..37cc98102b
--- /dev/null
+++ b/Lang/Erlang/Text-processing-2
@@ -0,0 +1 @@
+../../Task/Text-processing-2/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Text-processing-Max-licenses-in-use b/Lang/Erlang/Text-processing-Max-licenses-in-use
new file mode 120000
index 0000000000..77bf79b883
--- /dev/null
+++ b/Lang/Erlang/Text-processing-Max-licenses-in-use
@@ -0,0 +1 @@
+../../Task/Text-processing-Max-licenses-in-use/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Top-rank-per-group b/Lang/Erlang/Top-rank-per-group
new file mode 120000
index 0000000000..4633c7e47e
--- /dev/null
+++ b/Lang/Erlang/Top-rank-per-group
@@ -0,0 +1 @@
+../../Task/Top-rank-per-group/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Truncate-a-file b/Lang/Erlang/Truncate-a-file
new file mode 120000
index 0000000000..490407a011
--- /dev/null
+++ b/Lang/Erlang/Truncate-a-file
@@ -0,0 +1 @@
+../../Task/Truncate-a-file/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Van-der-Corput-sequence b/Lang/Erlang/Van-der-Corput-sequence
new file mode 120000
index 0000000000..d58c0182b3
--- /dev/null
+++ b/Lang/Erlang/Van-der-Corput-sequence
@@ -0,0 +1 @@
+../../Task/Van-der-Corput-sequence/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Variables b/Lang/Erlang/Variables
new file mode 120000
index 0000000000..4e9002e6ee
--- /dev/null
+++ b/Lang/Erlang/Variables
@@ -0,0 +1 @@
+../../Task/Variables/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Variadic-function b/Lang/Erlang/Variadic-function
new file mode 120000
index 0000000000..7228434806
--- /dev/null
+++ b/Lang/Erlang/Variadic-function
@@ -0,0 +1 @@
+../../Task/Variadic-function/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Verify-distribution-uniformity-Naive b/Lang/Erlang/Verify-distribution-uniformity-Naive
new file mode 120000
index 0000000000..8eeb0bbb0b
--- /dev/null
+++ b/Lang/Erlang/Verify-distribution-uniformity-Naive
@@ -0,0 +1 @@
+../../Task/Verify-distribution-uniformity-Naive/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Word-wrap b/Lang/Erlang/Word-wrap
new file mode 120000
index 0000000000..e04e99b660
--- /dev/null
+++ b/Lang/Erlang/Word-wrap
@@ -0,0 +1 @@
+../../Task/Word-wrap/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Write-float-arrays-to-a-text-file b/Lang/Erlang/Write-float-arrays-to-a-text-file
new file mode 120000
index 0000000000..1f7eb4502f
--- /dev/null
+++ b/Lang/Erlang/Write-float-arrays-to-a-text-file
@@ -0,0 +1 @@
+../../Task/Write-float-arrays-to-a-text-file/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Write-language-name-in-3D-ASCII b/Lang/Erlang/Write-language-name-in-3D-ASCII
new file mode 120000
index 0000000000..29ba652d29
--- /dev/null
+++ b/Lang/Erlang/Write-language-name-in-3D-ASCII
@@ -0,0 +1 @@
+../../Task/Write-language-name-in-3D-ASCII/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/XML-XPath b/Lang/Erlang/XML-XPath
new file mode 120000
index 0000000000..d280334869
--- /dev/null
+++ b/Lang/Erlang/XML-XPath
@@ -0,0 +1 @@
+../../Task/XML-XPath/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Zebra-puzzle b/Lang/Erlang/Zebra-puzzle
new file mode 120000
index 0000000000..fa00b08d32
--- /dev/null
+++ b/Lang/Erlang/Zebra-puzzle
@@ -0,0 +1 @@
+../../Task/Zebra-puzzle/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Zig-zag-matrix b/Lang/Erlang/Zig-zag-matrix
new file mode 120000
index 0000000000..70027ee5ab
--- /dev/null
+++ b/Lang/Erlang/Zig-zag-matrix
@@ -0,0 +1 @@
+../../Task/Zig-zag-matrix/Erlang
\ No newline at end of file
diff --git a/Lang/Excel/A+B b/Lang/Excel/A+B
new file mode 120000
index 0000000000..00e299dd5a
--- /dev/null
+++ b/Lang/Excel/A+B
@@ -0,0 +1 @@
+../../Task/A+B/Excel
\ No newline at end of file
diff --git a/Lang/Excel/Arithmetic-Complex b/Lang/Excel/Arithmetic-Complex
new file mode 120000
index 0000000000..f5dc46d117
--- /dev/null
+++ b/Lang/Excel/Arithmetic-Complex
@@ -0,0 +1 @@
+../../Task/Arithmetic-Complex/Excel
\ No newline at end of file
diff --git a/Lang/Excel/Averages-Arithmetic-mean b/Lang/Excel/Averages-Arithmetic-mean
new file mode 120000
index 0000000000..c84dfe1442
--- /dev/null
+++ b/Lang/Excel/Averages-Arithmetic-mean
@@ -0,0 +1 @@
+../../Task/Averages-Arithmetic-mean/Excel
\ No newline at end of file
diff --git a/Lang/Excel/Averages-Median b/Lang/Excel/Averages-Median
new file mode 120000
index 0000000000..6954936e63
--- /dev/null
+++ b/Lang/Excel/Averages-Median
@@ -0,0 +1 @@
+../../Task/Averages-Median/Excel
\ No newline at end of file
diff --git a/Lang/Excel/Boolean-values b/Lang/Excel/Boolean-values
new file mode 120000
index 0000000000..7868a433bd
--- /dev/null
+++ b/Lang/Excel/Boolean-values
@@ -0,0 +1 @@
+../../Task/Boolean-values/Excel
\ No newline at end of file
diff --git a/Lang/Excel/Leap-year b/Lang/Excel/Leap-year
new file mode 120000
index 0000000000..170a73fee9
--- /dev/null
+++ b/Lang/Excel/Leap-year
@@ -0,0 +1 @@
+../../Task/Leap-year/Excel
\ No newline at end of file
diff --git a/Lang/Excel/Least-common-multiple b/Lang/Excel/Least-common-multiple
new file mode 120000
index 0000000000..6aac9ece07
--- /dev/null
+++ b/Lang/Excel/Least-common-multiple
@@ -0,0 +1 @@
+../../Task/Least-common-multiple/Excel
\ No newline at end of file
diff --git a/Lang/Excel/Roman-numerals-Encode b/Lang/Excel/Roman-numerals-Encode
new file mode 120000
index 0000000000..5474f89d1d
--- /dev/null
+++ b/Lang/Excel/Roman-numerals-Encode
@@ -0,0 +1 @@
+../../Task/Roman-numerals-Encode/Excel
\ No newline at end of file
diff --git a/Lang/Excel/String-case b/Lang/Excel/String-case
new file mode 120000
index 0000000000..69f6908742
--- /dev/null
+++ b/Lang/Excel/String-case
@@ -0,0 +1 @@
+../../Task/String-case/Excel
\ No newline at end of file
diff --git a/Lang/Excel/String-concatenation b/Lang/Excel/String-concatenation
new file mode 120000
index 0000000000..2d52cf1fba
--- /dev/null
+++ b/Lang/Excel/String-concatenation
@@ -0,0 +1 @@
+../../Task/String-concatenation/Excel
\ No newline at end of file
diff --git a/Lang/Excel/Sum-of-squares b/Lang/Excel/Sum-of-squares
new file mode 120000
index 0000000000..12d17d0ad2
--- /dev/null
+++ b/Lang/Excel/Sum-of-squares
@@ -0,0 +1 @@
+../../Task/Sum-of-squares/Excel
\ No newline at end of file
diff --git a/Lang/Excel/System-time b/Lang/Excel/System-time
new file mode 120000
index 0000000000..5f524f159f
--- /dev/null
+++ b/Lang/Excel/System-time
@@ -0,0 +1 @@
+../../Task/System-time/Excel
\ No newline at end of file
diff --git a/Lang/FALSE/Happy-numbers b/Lang/FALSE/Happy-numbers
new file mode 120000
index 0000000000..176a5dd923
--- /dev/null
+++ b/Lang/FALSE/Happy-numbers
@@ -0,0 +1 @@
+../../Task/Happy-numbers/FALSE
\ No newline at end of file
diff --git a/Lang/FALSE/Reverse-a-string b/Lang/FALSE/Reverse-a-string
new file mode 120000
index 0000000000..5741c22c89
--- /dev/null
+++ b/Lang/FALSE/Reverse-a-string
@@ -0,0 +1 @@
+../../Task/Reverse-a-string/FALSE
\ No newline at end of file
diff --git a/Lang/FALSE/Sum-and-product-of-an-array b/Lang/FALSE/Sum-and-product-of-an-array
new file mode 120000
index 0000000000..e283a01957
--- /dev/null
+++ b/Lang/FALSE/Sum-and-product-of-an-array
@@ -0,0 +1 @@
+../../Task/Sum-and-product-of-an-array/FALSE
\ No newline at end of file
diff --git a/Lang/FBSL/Loops-Downward-for b/Lang/FBSL/Loops-Downward-for
new file mode 120000
index 0000000000..49fa312fba
--- /dev/null
+++ b/Lang/FBSL/Loops-Downward-for
@@ -0,0 +1 @@
+../../Task/Loops-Downward-for/FBSL
\ No newline at end of file
diff --git a/Lang/FBSL/Middle-three-digits b/Lang/FBSL/Middle-three-digits
new file mode 120000
index 0000000000..fd841f1f79
--- /dev/null
+++ b/Lang/FBSL/Middle-three-digits
@@ -0,0 +1 @@
+../../Task/Middle-three-digits/FBSL
\ No newline at end of file
diff --git a/Lang/FBSL/Sleep b/Lang/FBSL/Sleep
new file mode 120000
index 0000000000..8d7c0b3e75
--- /dev/null
+++ b/Lang/FBSL/Sleep
@@ -0,0 +1 @@
+../../Task/Sleep/FBSL
\ No newline at end of file
diff --git a/Lang/Factor/Count-occurrences-of-a-substring b/Lang/Factor/Count-occurrences-of-a-substring
new file mode 120000
index 0000000000..7e4e07dd45
--- /dev/null
+++ b/Lang/Factor/Count-occurrences-of-a-substring
@@ -0,0 +1 @@
+../../Task/Count-occurrences-of-a-substring/Factor
\ No newline at end of file
diff --git a/Lang/Factor/Guess-the-number b/Lang/Factor/Guess-the-number
new file mode 120000
index 0000000000..ce0a17bbc6
--- /dev/null
+++ b/Lang/Factor/Guess-the-number
@@ -0,0 +1 @@
+../../Task/Guess-the-number/Factor
\ No newline at end of file
diff --git a/Lang/Factor/Letter-frequency b/Lang/Factor/Letter-frequency
new file mode 120000
index 0000000000..04e4e6db15
--- /dev/null
+++ b/Lang/Factor/Letter-frequency
@@ -0,0 +1 @@
+../../Task/Letter-frequency/Factor
\ No newline at end of file
diff --git a/Lang/Factor/Metronome b/Lang/Factor/Metronome
new file mode 120000
index 0000000000..b54fd2576e
--- /dev/null
+++ b/Lang/Factor/Metronome
@@ -0,0 +1 @@
+../../Task/Metronome/Factor
\ No newline at end of file
diff --git a/Lang/Factor/Number-names b/Lang/Factor/Number-names
new file mode 120000
index 0000000000..3a4ea7f52c
--- /dev/null
+++ b/Lang/Factor/Number-names
@@ -0,0 +1 @@
+../../Task/Number-names/Factor
\ No newline at end of file
diff --git a/Lang/Factor/Rosetta-Code-Count-examples b/Lang/Factor/Rosetta-Code-Count-examples
new file mode 120000
index 0000000000..bbe79fc0c9
--- /dev/null
+++ b/Lang/Factor/Rosetta-Code-Count-examples
@@ -0,0 +1 @@
+../../Task/Rosetta-Code-Count-examples/Factor
\ No newline at end of file
diff --git a/Lang/Forth/Four-bit-adder b/Lang/Forth/Four-bit-adder
new file mode 120000
index 0000000000..0e74034c8d
--- /dev/null
+++ b/Lang/Forth/Four-bit-adder
@@ -0,0 +1 @@
+../../Task/Four-bit-adder/Forth
\ No newline at end of file
diff --git a/Lang/Forth/Range-expansion b/Lang/Forth/Range-expansion
new file mode 120000
index 0000000000..f0c4447dc4
--- /dev/null
+++ b/Lang/Forth/Range-expansion
@@ -0,0 +1 @@
+../../Task/Range-expansion/Forth
\ No newline at end of file
diff --git a/Lang/Fortran/Averages-Mean-angle b/Lang/Fortran/Averages-Mean-angle
new file mode 120000
index 0000000000..313d6f6924
--- /dev/null
+++ b/Lang/Fortran/Averages-Mean-angle
@@ -0,0 +1 @@
+../../Task/Averages-Mean-angle/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Count-in-factors b/Lang/Fortran/Count-in-factors
new file mode 120000
index 0000000000..ae12e1b121
--- /dev/null
+++ b/Lang/Fortran/Count-in-factors
@@ -0,0 +1 @@
+../../Task/Count-in-factors/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Dutch-national-flag-problem b/Lang/Fortran/Dutch-national-flag-problem
new file mode 120000
index 0000000000..7b7e46901a
--- /dev/null
+++ b/Lang/Fortran/Dutch-national-flag-problem
@@ -0,0 +1 @@
+../../Task/Dutch-national-flag-problem/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Even-or-odd b/Lang/Fortran/Even-or-odd
new file mode 120000
index 0000000000..4c3b6286aa
--- /dev/null
+++ b/Lang/Fortran/Even-or-odd
@@ -0,0 +1 @@
+../../Task/Even-or-odd/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Flatten-a-list b/Lang/Fortran/Flatten-a-list
new file mode 120000
index 0000000000..807c5e7c28
--- /dev/null
+++ b/Lang/Fortran/Flatten-a-list
@@ -0,0 +1 @@
+../../Task/Flatten-a-list/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Huffman-coding b/Lang/Fortran/Huffman-coding
new file mode 120000
index 0000000000..0f613ea5c0
--- /dev/null
+++ b/Lang/Fortran/Huffman-coding
@@ -0,0 +1 @@
+../../Task/Huffman-coding/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/List-comprehensions b/Lang/Fortran/List-comprehensions
new file mode 120000
index 0000000000..625db9672c
--- /dev/null
+++ b/Lang/Fortran/List-comprehensions
@@ -0,0 +1 @@
+../../Task/List-comprehensions/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Menu b/Lang/Fortran/Menu
new file mode 120000
index 0000000000..ee7928101b
--- /dev/null
+++ b/Lang/Fortran/Menu
@@ -0,0 +1 @@
+../../Task/Menu/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Middle-three-digits b/Lang/Fortran/Middle-three-digits
new file mode 120000
index 0000000000..bac7e05026
--- /dev/null
+++ b/Lang/Fortran/Middle-three-digits
@@ -0,0 +1 @@
+../../Task/Middle-three-digits/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Numerical-integration-Gauss-Legendre-Quadrature b/Lang/Fortran/Numerical-integration-Gauss-Legendre-Quadrature
new file mode 120000
index 0000000000..b669c8f2a9
--- /dev/null
+++ b/Lang/Fortran/Numerical-integration-Gauss-Legendre-Quadrature
@@ -0,0 +1 @@
+../../Task/Numerical-integration-Gauss-Legendre-Quadrature/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Priority-queue b/Lang/Fortran/Priority-queue
new file mode 120000
index 0000000000..b162b7aee9
--- /dev/null
+++ b/Lang/Fortran/Priority-queue
@@ -0,0 +1 @@
+../../Task/Priority-queue/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Program-name b/Lang/Fortran/Program-name
new file mode 120000
index 0000000000..e9627c3f91
--- /dev/null
+++ b/Lang/Fortran/Program-name
@@ -0,0 +1 @@
+../../Task/Program-name/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Read-a-configuration-file b/Lang/Fortran/Read-a-configuration-file
new file mode 120000
index 0000000000..7330d0ef59
--- /dev/null
+++ b/Lang/Fortran/Read-a-configuration-file
@@ -0,0 +1 @@
+../../Task/Read-a-configuration-file/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Rock-paper-scissors b/Lang/Fortran/Rock-paper-scissors
new file mode 120000
index 0000000000..c4f7d4b419
--- /dev/null
+++ b/Lang/Fortran/Rock-paper-scissors
@@ -0,0 +1 @@
+../../Task/Rock-paper-scissors/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Shell-one-liner b/Lang/Fortran/Shell-one-liner
new file mode 120000
index 0000000000..3d0a5e7f20
--- /dev/null
+++ b/Lang/Fortran/Shell-one-liner
@@ -0,0 +1 @@
+../../Task/Shell-one-liner/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Sum-digits-of-an-integer b/Lang/Fortran/Sum-digits-of-an-integer
new file mode 120000
index 0000000000..a88cb56027
--- /dev/null
+++ b/Lang/Fortran/Sum-digits-of-an-integer
@@ -0,0 +1 @@
+../../Task/Sum-digits-of-an-integer/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Topswops b/Lang/Fortran/Topswops
new file mode 120000
index 0000000000..16e2933400
--- /dev/null
+++ b/Lang/Fortran/Topswops
@@ -0,0 +1 @@
+../../Task/Topswops/Fortran
\ No newline at end of file
diff --git a/Lang/GAP/Trigonometric-functions b/Lang/GAP/Trigonometric-functions
new file mode 120000
index 0000000000..9d00cf179a
--- /dev/null
+++ b/Lang/GAP/Trigonometric-functions
@@ -0,0 +1 @@
+../../Task/Trigonometric-functions/GAP
\ No newline at end of file
diff --git a/Lang/GML/Greatest-common-divisor b/Lang/GML/Greatest-common-divisor
new file mode 120000
index 0000000000..0333ff827e
--- /dev/null
+++ b/Lang/GML/Greatest-common-divisor
@@ -0,0 +1 @@
+../../Task/Greatest-common-divisor/GML
\ No newline at end of file
diff --git a/Lang/GML/Hello-world-Newline-omission b/Lang/GML/Hello-world-Newline-omission
new file mode 120000
index 0000000000..c992ec4ce0
--- /dev/null
+++ b/Lang/GML/Hello-world-Newline-omission
@@ -0,0 +1 @@
+../../Task/Hello-world-Newline-omission/GML
\ No newline at end of file
diff --git a/Lang/Gnuplot/Include-a-file b/Lang/Gnuplot/Include-a-file
new file mode 120000
index 0000000000..01fd0f915c
--- /dev/null
+++ b/Lang/Gnuplot/Include-a-file
@@ -0,0 +1 @@
+../../Task/Include-a-file/Gnuplot
\ No newline at end of file
diff --git a/Lang/Gnuplot/String-length b/Lang/Gnuplot/String-length
new file mode 120000
index 0000000000..c8d341342e
--- /dev/null
+++ b/Lang/Gnuplot/String-length
@@ -0,0 +1 @@
+../../Task/String-length/Gnuplot
\ No newline at end of file
diff --git a/Lang/Go/Average-loop-length b/Lang/Go/Average-loop-length
new file mode 120000
index 0000000000..a2817173af
--- /dev/null
+++ b/Lang/Go/Average-loop-length
@@ -0,0 +1 @@
+../../Task/Average-loop-length/Go
\ No newline at end of file
diff --git a/Lang/Go/Bitcoin-address-validation b/Lang/Go/Bitcoin-address-validation
new file mode 120000
index 0000000000..c77c2e9a67
--- /dev/null
+++ b/Lang/Go/Bitcoin-address-validation
@@ -0,0 +1 @@
+../../Task/Bitcoin-address-validation/Go
\ No newline at end of file
diff --git a/Lang/Go/Color-quantization b/Lang/Go/Color-quantization
new file mode 120000
index 0000000000..9b0f7d4cfd
--- /dev/null
+++ b/Lang/Go/Color-quantization
@@ -0,0 +1 @@
+../../Task/Color-quantization/Go
\ No newline at end of file
diff --git a/Lang/Go/Entropy b/Lang/Go/Entropy
new file mode 120000
index 0000000000..09e14d12c5
--- /dev/null
+++ b/Lang/Go/Entropy
@@ -0,0 +1 @@
+../../Task/Entropy/Go
\ No newline at end of file
diff --git a/Lang/Go/Function-prototype b/Lang/Go/Function-prototype
new file mode 120000
index 0000000000..5f8733a6aa
--- /dev/null
+++ b/Lang/Go/Function-prototype
@@ -0,0 +1 @@
+../../Task/Function-prototype/Go
\ No newline at end of file
diff --git a/Lang/Go/Harshad-or-Niven-series b/Lang/Go/Harshad-or-Niven-series
new file mode 120000
index 0000000000..498a8dc9aa
--- /dev/null
+++ b/Lang/Go/Harshad-or-Niven-series
@@ -0,0 +1 @@
+../../Task/Harshad-or-Niven-series/Go
\ No newline at end of file
diff --git a/Lang/Go/I-before-E-except-after-C b/Lang/Go/I-before-E-except-after-C
new file mode 120000
index 0000000000..792054984b
--- /dev/null
+++ b/Lang/Go/I-before-E-except-after-C
@@ -0,0 +1 @@
+../../Task/I-before-E-except-after-C/Go
\ No newline at end of file
diff --git a/Lang/Go/Largest-int-from-concatenated-ints b/Lang/Go/Largest-int-from-concatenated-ints
new file mode 120000
index 0000000000..5bbdf9521c
--- /dev/null
+++ b/Lang/Go/Largest-int-from-concatenated-ints
@@ -0,0 +1 @@
+../../Task/Largest-int-from-concatenated-ints/Go
\ No newline at end of file
diff --git a/Lang/Go/Middle-three-digits b/Lang/Go/Middle-three-digits
new file mode 120000
index 0000000000..59583c8099
--- /dev/null
+++ b/Lang/Go/Middle-three-digits
@@ -0,0 +1 @@
+../../Task/Middle-three-digits/Go
\ No newline at end of file
diff --git a/Lang/Go/OpenGL b/Lang/Go/OpenGL
new file mode 120000
index 0000000000..8a0b01c7db
--- /dev/null
+++ b/Lang/Go/OpenGL
@@ -0,0 +1 @@
+../../Task/OpenGL/Go
\ No newline at end of file
diff --git a/Lang/Go/String-comparison b/Lang/Go/String-comparison
new file mode 120000
index 0000000000..3a48d6c372
--- /dev/null
+++ b/Lang/Go/String-comparison
@@ -0,0 +1 @@
+../../Task/String-comparison/Go
\ No newline at end of file
diff --git a/Lang/Go/Temperature-conversion b/Lang/Go/Temperature-conversion
new file mode 120000
index 0000000000..69708b5a68
--- /dev/null
+++ b/Lang/Go/Temperature-conversion
@@ -0,0 +1 @@
+../../Task/Temperature-conversion/Go
\ No newline at end of file
diff --git a/Lang/Gosu/Man-or-boy-test b/Lang/Gosu/Man-or-boy-test
new file mode 120000
index 0000000000..d0a268eea8
--- /dev/null
+++ b/Lang/Gosu/Man-or-boy-test
@@ -0,0 +1 @@
+../../Task/Man-or-boy-test/Gosu
\ No newline at end of file
diff --git a/Lang/Groovy/Averages-Mean-angle b/Lang/Groovy/Averages-Mean-angle
new file mode 120000
index 0000000000..20d5eb9199
--- /dev/null
+++ b/Lang/Groovy/Averages-Mean-angle
@@ -0,0 +1 @@
+../../Task/Averages-Mean-angle/Groovy
\ No newline at end of file
diff --git a/Lang/Groovy/Execute-Brain---- b/Lang/Groovy/Execute-Brain----
new file mode 120000
index 0000000000..68022baff9
--- /dev/null
+++ b/Lang/Groovy/Execute-Brain----
@@ -0,0 +1 @@
+../../Task/Execute-Brain----/Groovy
\ No newline at end of file
diff --git a/Lang/Groovy/Largest-int-from-concatenated-ints b/Lang/Groovy/Largest-int-from-concatenated-ints
new file mode 120000
index 0000000000..d48a48aaf1
--- /dev/null
+++ b/Lang/Groovy/Largest-int-from-concatenated-ints
@@ -0,0 +1 @@
+../../Task/Largest-int-from-concatenated-ints/Groovy
\ No newline at end of file
diff --git a/Lang/Groovy/Middle-three-digits b/Lang/Groovy/Middle-three-digits
new file mode 120000
index 0000000000..0ce448f4f8
--- /dev/null
+++ b/Lang/Groovy/Middle-three-digits
@@ -0,0 +1 @@
+../../Task/Middle-three-digits/Groovy
\ No newline at end of file
diff --git a/Lang/Groovy/Strip-control-codes-and-extended-characters-from-a-string b/Lang/Groovy/Strip-control-codes-and-extended-characters-from-a-string
new file mode 120000
index 0000000000..c2d8318ffd
--- /dev/null
+++ b/Lang/Groovy/Strip-control-codes-and-extended-characters-from-a-string
@@ -0,0 +1 @@
+../../Task/Strip-control-codes-and-extended-characters-from-a-string/Groovy
\ No newline at end of file
diff --git a/Lang/Groovy/Take-notes-on-the-command-line b/Lang/Groovy/Take-notes-on-the-command-line
new file mode 120000
index 0000000000..f6af794d3c
--- /dev/null
+++ b/Lang/Groovy/Take-notes-on-the-command-line
@@ -0,0 +1 @@
+../../Task/Take-notes-on-the-command-line/Groovy
\ No newline at end of file
diff --git a/Lang/Haskell/Call-a-function b/Lang/Haskell/Call-a-function
new file mode 120000
index 0000000000..163c24dd9c
--- /dev/null
+++ b/Lang/Haskell/Call-a-function
@@ -0,0 +1 @@
+../../Task/Call-a-function/Haskell
\ No newline at end of file
diff --git a/Lang/Haskell/Chat-server b/Lang/Haskell/Chat-server
new file mode 120000
index 0000000000..6b2da7bc87
--- /dev/null
+++ b/Lang/Haskell/Chat-server
@@ -0,0 +1 @@
+../../Task/Chat-server/Haskell
\ No newline at end of file
diff --git a/Lang/Haskell/Keyboard-input-Keypress-check b/Lang/Haskell/Keyboard-input-Keypress-check
new file mode 120000
index 0000000000..4eace63c4c
--- /dev/null
+++ b/Lang/Haskell/Keyboard-input-Keypress-check
@@ -0,0 +1 @@
+../../Task/Keyboard-input-Keypress-check/Haskell
\ No newline at end of file
diff --git a/Lang/Haskell/Parallel-calculations b/Lang/Haskell/Parallel-calculations
new file mode 120000
index 0000000000..8596b094e0
--- /dev/null
+++ b/Lang/Haskell/Parallel-calculations
@@ -0,0 +1 @@
+../../Task/Parallel-calculations/Haskell
\ No newline at end of file
diff --git a/Lang/Haskell/Terminal-control-Unicode-output b/Lang/Haskell/Terminal-control-Unicode-output
new file mode 120000
index 0000000000..fed742bb36
--- /dev/null
+++ b/Lang/Haskell/Terminal-control-Unicode-output
@@ -0,0 +1 @@
+../../Task/Terminal-control-Unicode-output/Haskell
\ No newline at end of file
diff --git a/Lang/Haskell/Universal-Turing-machine b/Lang/Haskell/Universal-Turing-machine
new file mode 120000
index 0000000000..55c4a98fcd
--- /dev/null
+++ b/Lang/Haskell/Universal-Turing-machine
@@ -0,0 +1 @@
+../../Task/Universal-Turing-machine/Haskell
\ No newline at end of file
diff --git a/Lang/Haskell/Variable-length-quantity b/Lang/Haskell/Variable-length-quantity
new file mode 120000
index 0000000000..9125e4c077
--- /dev/null
+++ b/Lang/Haskell/Variable-length-quantity
@@ -0,0 +1 @@
+../../Task/Variable-length-quantity/Haskell
\ No newline at end of file
diff --git a/Lang/Haskell/Zebra-puzzle b/Lang/Haskell/Zebra-puzzle
new file mode 120000
index 0000000000..fc583db3ff
--- /dev/null
+++ b/Lang/Haskell/Zebra-puzzle
@@ -0,0 +1 @@
+../../Task/Zebra-puzzle/Haskell
\ No newline at end of file
diff --git a/Lang/HyperTalk/Increment-a-numerical-string b/Lang/HyperTalk/Increment-a-numerical-string
new file mode 120000
index 0000000000..5480d34825
--- /dev/null
+++ b/Lang/HyperTalk/Increment-a-numerical-string
@@ -0,0 +1 @@
+../../Task/Increment-a-numerical-string/HyperTalk
\ No newline at end of file
diff --git a/Lang/IDL/Check-that-file-exists b/Lang/IDL/Check-that-file-exists
new file mode 120000
index 0000000000..b59908e960
--- /dev/null
+++ b/Lang/IDL/Check-that-file-exists
@@ -0,0 +1 @@
+../../Task/Check-that-file-exists/IDL
\ No newline at end of file
diff --git a/Lang/IDL/Dot-product b/Lang/IDL/Dot-product
new file mode 120000
index 0000000000..ad5f375c2a
--- /dev/null
+++ b/Lang/IDL/Dot-product
@@ -0,0 +1 @@
+../../Task/Dot-product/IDL
\ No newline at end of file
diff --git a/Lang/Icon/Arithmetic-geometric-mean b/Lang/Icon/Arithmetic-geometric-mean
new file mode 120000
index 0000000000..fc98198a96
--- /dev/null
+++ b/Lang/Icon/Arithmetic-geometric-mean
@@ -0,0 +1 @@
+../../Task/Arithmetic-geometric-mean/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Averages-Mean-angle b/Lang/Icon/Averages-Mean-angle
new file mode 120000
index 0000000000..83d06d8b9d
--- /dev/null
+++ b/Lang/Icon/Averages-Mean-angle
@@ -0,0 +1 @@
+../../Task/Averages-Mean-angle/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Averages-Mean-time-of-day b/Lang/Icon/Averages-Mean-time-of-day
new file mode 120000
index 0000000000..d964c34bc4
--- /dev/null
+++ b/Lang/Icon/Averages-Mean-time-of-day
@@ -0,0 +1 @@
+../../Task/Averages-Mean-time-of-day/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Determine-if-only-one-instance-is-running b/Lang/Icon/Determine-if-only-one-instance-is-running
new file mode 120000
index 0000000000..9984667bde
--- /dev/null
+++ b/Lang/Icon/Determine-if-only-one-instance-is-running
@@ -0,0 +1 @@
+../../Task/Determine-if-only-one-instance-is-running/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Digital-root b/Lang/Icon/Digital-root
new file mode 120000
index 0000000000..51e8c50ae9
--- /dev/null
+++ b/Lang/Icon/Digital-root
@@ -0,0 +1 @@
+../../Task/Digital-root/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Dutch-national-flag-problem b/Lang/Icon/Dutch-national-flag-problem
new file mode 120000
index 0000000000..99238c7da5
--- /dev/null
+++ b/Lang/Icon/Dutch-national-flag-problem
@@ -0,0 +1 @@
+../../Task/Dutch-national-flag-problem/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Entropy b/Lang/Icon/Entropy
new file mode 120000
index 0000000000..4c2a48f0f7
--- /dev/null
+++ b/Lang/Icon/Entropy
@@ -0,0 +1 @@
+../../Task/Entropy/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Floyds-triangle b/Lang/Icon/Floyds-triangle
new file mode 120000
index 0000000000..c0adfe5a31
--- /dev/null
+++ b/Lang/Icon/Floyds-triangle
@@ -0,0 +1 @@
+../../Task/Floyds-triangle/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Gray-code b/Lang/Icon/Gray-code
new file mode 120000
index 0000000000..88aad3e335
--- /dev/null
+++ b/Lang/Icon/Gray-code
@@ -0,0 +1 @@
+../../Task/Gray-code/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Harshad-or-Niven-series b/Lang/Icon/Harshad-or-Niven-series
new file mode 120000
index 0000000000..c65b4b9169
--- /dev/null
+++ b/Lang/Icon/Harshad-or-Niven-series
@@ -0,0 +1 @@
+../../Task/Harshad-or-Niven-series/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Identity-matrix b/Lang/Icon/Identity-matrix
new file mode 120000
index 0000000000..71d4127e7d
--- /dev/null
+++ b/Lang/Icon/Identity-matrix
@@ -0,0 +1 @@
+../../Task/Identity-matrix/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Josephus-problem b/Lang/Icon/Josephus-problem
new file mode 120000
index 0000000000..a4aa631698
--- /dev/null
+++ b/Lang/Icon/Josephus-problem
@@ -0,0 +1 @@
+../../Task/Josephus-problem/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Largest-int-from-concatenated-ints b/Lang/Icon/Largest-int-from-concatenated-ints
new file mode 120000
index 0000000000..c7a8a7fc6e
--- /dev/null
+++ b/Lang/Icon/Largest-int-from-concatenated-ints
@@ -0,0 +1 @@
+../../Task/Largest-int-from-concatenated-ints/Icon
\ No newline at end of file
diff --git a/Lang/Icon/List-comprehensions b/Lang/Icon/List-comprehensions
new file mode 120000
index 0000000000..d9f53d52ab
--- /dev/null
+++ b/Lang/Icon/List-comprehensions
@@ -0,0 +1 @@
+../../Task/List-comprehensions/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Memory-allocation b/Lang/Icon/Memory-allocation
new file mode 120000
index 0000000000..2d0d50ea6b
--- /dev/null
+++ b/Lang/Icon/Memory-allocation
@@ -0,0 +1 @@
+../../Task/Memory-allocation/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Middle-three-digits b/Lang/Icon/Middle-three-digits
new file mode 120000
index 0000000000..520a4e01e2
--- /dev/null
+++ b/Lang/Icon/Middle-three-digits
@@ -0,0 +1 @@
+../../Task/Middle-three-digits/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Numeric-error-propagation b/Lang/Icon/Numeric-error-propagation
new file mode 120000
index 0000000000..41b539f791
--- /dev/null
+++ b/Lang/Icon/Numeric-error-propagation
@@ -0,0 +1 @@
+../../Task/Numeric-error-propagation/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Polymorphic-copy b/Lang/Icon/Polymorphic-copy
new file mode 120000
index 0000000000..a3069cad49
--- /dev/null
+++ b/Lang/Icon/Polymorphic-copy
@@ -0,0 +1 @@
+../../Task/Polymorphic-copy/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Rosetta-Code-Find-unimplemented-tasks b/Lang/Icon/Rosetta-Code-Find-unimplemented-tasks
new file mode 120000
index 0000000000..1e7b892393
--- /dev/null
+++ b/Lang/Icon/Rosetta-Code-Find-unimplemented-tasks
@@ -0,0 +1 @@
+../../Task/Rosetta-Code-Find-unimplemented-tasks/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Rosetta-Code-Rank-languages-by-popularity b/Lang/Icon/Rosetta-Code-Rank-languages-by-popularity
new file mode 120000
index 0000000000..442c3df12c
--- /dev/null
+++ b/Lang/Icon/Rosetta-Code-Rank-languages-by-popularity
@@ -0,0 +1 @@
+../../Task/Rosetta-Code-Rank-languages-by-popularity/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Same-Fringe b/Lang/Icon/Same-Fringe
new file mode 120000
index 0000000000..cd7f22373b
--- /dev/null
+++ b/Lang/Icon/Same-Fringe
@@ -0,0 +1 @@
+../../Task/Same-Fringe/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Semordnilap b/Lang/Icon/Semordnilap
new file mode 120000
index 0000000000..5676aee273
--- /dev/null
+++ b/Lang/Icon/Semordnilap
@@ -0,0 +1 @@
+../../Task/Semordnilap/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Shell-one-liner b/Lang/Icon/Shell-one-liner
new file mode 120000
index 0000000000..172d7e6576
--- /dev/null
+++ b/Lang/Icon/Shell-one-liner
@@ -0,0 +1 @@
+../../Task/Shell-one-liner/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Sorting-algorithms-Sleep-sort b/Lang/Icon/Sorting-algorithms-Sleep-sort
new file mode 120000
index 0000000000..654114626c
--- /dev/null
+++ b/Lang/Icon/Sorting-algorithms-Sleep-sort
@@ -0,0 +1 @@
+../../Task/Sorting-algorithms-Sleep-sort/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Sum-digits-of-an-integer b/Lang/Icon/Sum-digits-of-an-integer
new file mode 120000
index 0000000000..7acafa4f6c
--- /dev/null
+++ b/Lang/Icon/Sum-digits-of-an-integer
@@ -0,0 +1 @@
+../../Task/Sum-digits-of-an-integer/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Temperature-conversion b/Lang/Icon/Temperature-conversion
new file mode 120000
index 0000000000..e957c57248
--- /dev/null
+++ b/Lang/Icon/Temperature-conversion
@@ -0,0 +1 @@
+../../Task/Temperature-conversion/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Text-processing-2 b/Lang/Icon/Text-processing-2
new file mode 120000
index 0000000000..b8edc6e596
--- /dev/null
+++ b/Lang/Icon/Text-processing-2
@@ -0,0 +1 @@
+../../Task/Text-processing-2/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Trabb-Pardo-Knuth-algorithm b/Lang/Icon/Trabb-Pardo-Knuth-algorithm
new file mode 120000
index 0000000000..6af9fba581
--- /dev/null
+++ b/Lang/Icon/Trabb-Pardo-Knuth-algorithm
@@ -0,0 +1 @@
+../../Task/Trabb-Pardo-Knuth-algorithm/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Universal-Turing-machine b/Lang/Icon/Universal-Turing-machine
new file mode 120000
index 0000000000..7d00b94cd5
--- /dev/null
+++ b/Lang/Icon/Universal-Turing-machine
@@ -0,0 +1 @@
+../../Task/Universal-Turing-machine/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Vampire-number b/Lang/Icon/Vampire-number
new file mode 120000
index 0000000000..7e5bb5f7dc
--- /dev/null
+++ b/Lang/Icon/Vampire-number
@@ -0,0 +1 @@
+../../Task/Vampire-number/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Word-wrap b/Lang/Icon/Word-wrap
new file mode 120000
index 0000000000..a39486c95d
--- /dev/null
+++ b/Lang/Icon/Word-wrap
@@ -0,0 +1 @@
+../../Task/Word-wrap/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Write-float-arrays-to-a-text-file b/Lang/Icon/Write-float-arrays-to-a-text-file
new file mode 120000
index 0000000000..2981839b66
--- /dev/null
+++ b/Lang/Icon/Write-float-arrays-to-a-text-file
@@ -0,0 +1 @@
+../../Task/Write-float-arrays-to-a-text-file/Icon
\ No newline at end of file
diff --git a/Lang/J/Hello-world-Newline-omission b/Lang/J/Hello-world-Newline-omission
new file mode 120000
index 0000000000..8b4254325c
--- /dev/null
+++ b/Lang/J/Hello-world-Newline-omission
@@ -0,0 +1 @@
+../../Task/Hello-world-Newline-omission/J
\ No newline at end of file
diff --git a/Lang/J/Universal-Turing-machine b/Lang/J/Universal-Turing-machine
new file mode 120000
index 0000000000..e2dae5a59c
--- /dev/null
+++ b/Lang/J/Universal-Turing-machine
@@ -0,0 +1 @@
+../../Task/Universal-Turing-machine/J
\ No newline at end of file
diff --git a/Lang/J/Vampire-number b/Lang/J/Vampire-number
new file mode 120000
index 0000000000..da320acd8b
--- /dev/null
+++ b/Lang/J/Vampire-number
@@ -0,0 +1 @@
+../../Task/Vampire-number/J
\ No newline at end of file
diff --git a/Lang/Java/Align-columns b/Lang/Java/Align-columns
new file mode 120000
index 0000000000..95d732d34e
--- /dev/null
+++ b/Lang/Java/Align-columns
@@ -0,0 +1 @@
+../../Task/Align-columns/Java
\ No newline at end of file
diff --git a/Lang/Java/Balanced-ternary b/Lang/Java/Balanced-ternary
new file mode 120000
index 0000000000..c027074b15
--- /dev/null
+++ b/Lang/Java/Balanced-ternary
@@ -0,0 +1 @@
+../../Task/Balanced-ternary/Java
\ No newline at end of file
diff --git a/Lang/Java/Call-a-function b/Lang/Java/Call-a-function
new file mode 120000
index 0000000000..455df06c4e
--- /dev/null
+++ b/Lang/Java/Call-a-function
@@ -0,0 +1 @@
+../../Task/Call-a-function/Java
\ No newline at end of file
diff --git a/Lang/Java/Fork b/Lang/Java/Fork
new file mode 120000
index 0000000000..114adbc539
--- /dev/null
+++ b/Lang/Java/Fork
@@ -0,0 +1 @@
+../../Task/Fork/Java
\ No newline at end of file
diff --git a/Lang/Java/Minesweeper-game b/Lang/Java/Minesweeper-game
new file mode 120000
index 0000000000..0df7c7e959
--- /dev/null
+++ b/Lang/Java/Minesweeper-game
@@ -0,0 +1 @@
+../../Task/Minesweeper-game/Java
\ No newline at end of file
diff --git a/Lang/Java/Numeric-error-propagation b/Lang/Java/Numeric-error-propagation
new file mode 120000
index 0000000000..0e95facf48
--- /dev/null
+++ b/Lang/Java/Numeric-error-propagation
@@ -0,0 +1 @@
+../../Task/Numeric-error-propagation/Java
\ No newline at end of file
diff --git a/Lang/Java/Rosetta-Code-Fix-code-tags b/Lang/Java/Rosetta-Code-Fix-code-tags
new file mode 120000
index 0000000000..42e08f2326
--- /dev/null
+++ b/Lang/Java/Rosetta-Code-Fix-code-tags
@@ -0,0 +1 @@
+../../Task/Rosetta-Code-Fix-code-tags/Java
\ No newline at end of file
diff --git a/Lang/Java/Word-wrap b/Lang/Java/Word-wrap
new file mode 120000
index 0000000000..1ebe56cfb4
--- /dev/null
+++ b/Lang/Java/Word-wrap
@@ -0,0 +1 @@
+../../Task/Word-wrap/Java
\ No newline at end of file
diff --git a/Lang/Java/Write-language-name-in-3D-ASCII b/Lang/Java/Write-language-name-in-3D-ASCII
new file mode 120000
index 0000000000..92064e67aa
--- /dev/null
+++ b/Lang/Java/Write-language-name-in-3D-ASCII
@@ -0,0 +1 @@
+../../Task/Write-language-name-in-3D-ASCII/Java
\ No newline at end of file
diff --git a/Lang/JavaScript/Arithmetic-geometric-mean b/Lang/JavaScript/Arithmetic-geometric-mean
new file mode 120000
index 0000000000..e60185582c
--- /dev/null
+++ b/Lang/JavaScript/Arithmetic-geometric-mean
@@ -0,0 +1 @@
+../../Task/Arithmetic-geometric-mean/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Binary-strings b/Lang/JavaScript/Binary-strings
new file mode 120000
index 0000000000..e1be0f981a
--- /dev/null
+++ b/Lang/JavaScript/Binary-strings
@@ -0,0 +1 @@
+../../Task/Binary-strings/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Bitmap b/Lang/JavaScript/Bitmap
new file mode 120000
index 0000000000..b54dbbed7f
--- /dev/null
+++ b/Lang/JavaScript/Bitmap
@@ -0,0 +1 @@
+../../Task/Bitmap/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Function-prototype b/Lang/JavaScript/Function-prototype
new file mode 120000
index 0000000000..3ac3ccb12e
--- /dev/null
+++ b/Lang/JavaScript/Function-prototype
@@ -0,0 +1 @@
+../../Task/Function-prototype/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/HTTP b/Lang/JavaScript/HTTP
new file mode 120000
index 0000000000..6f04b78439
--- /dev/null
+++ b/Lang/JavaScript/HTTP
@@ -0,0 +1 @@
+../../Task/HTTP/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/HTTPS b/Lang/JavaScript/HTTPS
new file mode 120000
index 0000000000..8a4ec3c147
--- /dev/null
+++ b/Lang/JavaScript/HTTPS
@@ -0,0 +1 @@
+../../Task/HTTPS/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Josephus-problem b/Lang/JavaScript/Josephus-problem
new file mode 120000
index 0000000000..8011009256
--- /dev/null
+++ b/Lang/JavaScript/Josephus-problem
@@ -0,0 +1 @@
+../../Task/Josephus-problem/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Read-a-configuration-file b/Lang/JavaScript/Read-a-configuration-file
new file mode 120000
index 0000000000..2775bb0dd6
--- /dev/null
+++ b/Lang/JavaScript/Read-a-configuration-file
@@ -0,0 +1 @@
+../../Task/Read-a-configuration-file/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Yin-and-yang b/Lang/JavaScript/Yin-and-yang
new file mode 120000
index 0000000000..5ddc43beec
--- /dev/null
+++ b/Lang/JavaScript/Yin-and-yang
@@ -0,0 +1 @@
+../../Task/Yin-and-yang/JavaScript
\ No newline at end of file
diff --git a/Lang/Julia/Anagrams b/Lang/Julia/Anagrams
new file mode 120000
index 0000000000..d802d90b8c
--- /dev/null
+++ b/Lang/Julia/Anagrams
@@ -0,0 +1 @@
+../../Task/Anagrams/Julia
\ No newline at end of file
diff --git a/Lang/Julia/Balanced-brackets b/Lang/Julia/Balanced-brackets
new file mode 120000
index 0000000000..d1df950c30
--- /dev/null
+++ b/Lang/Julia/Balanced-brackets
@@ -0,0 +1 @@
+../../Task/Balanced-brackets/Julia
\ No newline at end of file
diff --git a/Lang/Julia/Filter b/Lang/Julia/Filter
new file mode 120000
index 0000000000..414a45ccdf
--- /dev/null
+++ b/Lang/Julia/Filter
@@ -0,0 +1 @@
+../../Task/Filter/Julia
\ No newline at end of file
diff --git a/Lang/Julia/Guess-the-number b/Lang/Julia/Guess-the-number
new file mode 120000
index 0000000000..f4a48c8df9
--- /dev/null
+++ b/Lang/Julia/Guess-the-number
@@ -0,0 +1 @@
+../../Task/Guess-the-number/Julia
\ No newline at end of file
diff --git a/Lang/Julia/Guess-the-number-With-feedback b/Lang/Julia/Guess-the-number-With-feedback
new file mode 120000
index 0000000000..93dd5dac01
--- /dev/null
+++ b/Lang/Julia/Guess-the-number-With-feedback
@@ -0,0 +1 @@
+../../Task/Guess-the-number-With-feedback/Julia
\ No newline at end of file
diff --git a/Lang/Julia/HTTP b/Lang/Julia/HTTP
new file mode 120000
index 0000000000..18f13ddf7d
--- /dev/null
+++ b/Lang/Julia/HTTP
@@ -0,0 +1 @@
+../../Task/HTTP/Julia
\ No newline at end of file
diff --git a/Lang/Julia/Increment-a-numerical-string b/Lang/Julia/Increment-a-numerical-string
new file mode 120000
index 0000000000..ca0fa55519
--- /dev/null
+++ b/Lang/Julia/Increment-a-numerical-string
@@ -0,0 +1 @@
+../../Task/Increment-a-numerical-string/Julia
\ No newline at end of file
diff --git a/Lang/Julia/Input-loop b/Lang/Julia/Input-loop
new file mode 120000
index 0000000000..780e98a189
--- /dev/null
+++ b/Lang/Julia/Input-loop
@@ -0,0 +1 @@
+../../Task/Input-loop/Julia
\ No newline at end of file
diff --git a/Lang/Julia/Loop-over-multiple-arrays-simultaneously b/Lang/Julia/Loop-over-multiple-arrays-simultaneously
new file mode 120000
index 0000000000..0263c49936
--- /dev/null
+++ b/Lang/Julia/Loop-over-multiple-arrays-simultaneously
@@ -0,0 +1 @@
+../../Task/Loop-over-multiple-arrays-simultaneously/Julia
\ No newline at end of file
diff --git a/Lang/Julia/Matrix-exponentiation-operator b/Lang/Julia/Matrix-exponentiation-operator
new file mode 120000
index 0000000000..425afbf6c2
--- /dev/null
+++ b/Lang/Julia/Matrix-exponentiation-operator
@@ -0,0 +1 @@
+../../Task/Matrix-exponentiation-operator/Julia
\ No newline at end of file
diff --git a/Lang/Julia/Matrix-multiplication b/Lang/Julia/Matrix-multiplication
new file mode 120000
index 0000000000..60e9ffedbb
--- /dev/null
+++ b/Lang/Julia/Matrix-multiplication
@@ -0,0 +1 @@
+../../Task/Matrix-multiplication/Julia
\ No newline at end of file
diff --git a/Lang/Julia/Matrix-transposition b/Lang/Julia/Matrix-transposition
new file mode 120000
index 0000000000..c598853dc1
--- /dev/null
+++ b/Lang/Julia/Matrix-transposition
@@ -0,0 +1 @@
+../../Task/Matrix-transposition/Julia
\ No newline at end of file
diff --git a/Lang/Julia/Maze-generation b/Lang/Julia/Maze-generation
new file mode 120000
index 0000000000..a0cf25e803
--- /dev/null
+++ b/Lang/Julia/Maze-generation
@@ -0,0 +1 @@
+../../Task/Maze-generation/Julia
\ No newline at end of file
diff --git a/Lang/Julia/Named-parameters b/Lang/Julia/Named-parameters
new file mode 120000
index 0000000000..ecb0720ab1
--- /dev/null
+++ b/Lang/Julia/Named-parameters
@@ -0,0 +1 @@
+../../Task/Named-parameters/Julia
\ No newline at end of file
diff --git a/Lang/Julia/Palindrome-detection b/Lang/Julia/Palindrome-detection
new file mode 120000
index 0000000000..f93f92e8e7
--- /dev/null
+++ b/Lang/Julia/Palindrome-detection
@@ -0,0 +1 @@
+../../Task/Palindrome-detection/Julia
\ No newline at end of file
diff --git a/Lang/Julia/Range-expansion b/Lang/Julia/Range-expansion
new file mode 120000
index 0000000000..5bbacfd1f6
--- /dev/null
+++ b/Lang/Julia/Range-expansion
@@ -0,0 +1 @@
+../../Task/Range-expansion/Julia
\ No newline at end of file
diff --git a/Lang/Julia/Read-a-specific-line-from-a-file b/Lang/Julia/Read-a-specific-line-from-a-file
new file mode 120000
index 0000000000..5490fb06fc
--- /dev/null
+++ b/Lang/Julia/Read-a-specific-line-from-a-file
@@ -0,0 +1 @@
+../../Task/Read-a-specific-line-from-a-file/Julia
\ No newline at end of file
diff --git a/Lang/Julia/Reduced-row-echelon-form b/Lang/Julia/Reduced-row-echelon-form
new file mode 120000
index 0000000000..f1579dab3a
--- /dev/null
+++ b/Lang/Julia/Reduced-row-echelon-form
@@ -0,0 +1 @@
+../../Task/Reduced-row-echelon-form/Julia
\ No newline at end of file
diff --git a/Lang/Julia/Rot-13 b/Lang/Julia/Rot-13
new file mode 120000
index 0000000000..972a50fe03
--- /dev/null
+++ b/Lang/Julia/Rot-13
@@ -0,0 +1 @@
+../../Task/Rot-13/Julia
\ No newline at end of file
diff --git a/Lang/Julia/Sequence-of-non-squares b/Lang/Julia/Sequence-of-non-squares
new file mode 120000
index 0000000000..22d0580dfa
--- /dev/null
+++ b/Lang/Julia/Sequence-of-non-squares
@@ -0,0 +1 @@
+../../Task/Sequence-of-non-squares/Julia
\ No newline at end of file
diff --git a/Lang/Julia/Sierpinski-triangle b/Lang/Julia/Sierpinski-triangle
new file mode 120000
index 0000000000..b76776f0de
--- /dev/null
+++ b/Lang/Julia/Sierpinski-triangle
@@ -0,0 +1 @@
+../../Task/Sierpinski-triangle/Julia
\ No newline at end of file
diff --git a/Lang/Julia/Unicode-strings b/Lang/Julia/Unicode-strings
new file mode 120000
index 0000000000..87bdf2ca18
--- /dev/null
+++ b/Lang/Julia/Unicode-strings
@@ -0,0 +1 @@
+../../Task/Unicode-strings/Julia
\ No newline at end of file
diff --git a/Lang/Julia/Unicode-variable-names b/Lang/Julia/Unicode-variable-names
new file mode 120000
index 0000000000..e6168d8043
--- /dev/null
+++ b/Lang/Julia/Unicode-variable-names
@@ -0,0 +1 @@
+../../Task/Unicode-variable-names/Julia
\ No newline at end of file
diff --git a/Lang/LOLCODE/Ethiopian-multiplication b/Lang/LOLCODE/Ethiopian-multiplication
new file mode 120000
index 0000000000..0667a729ad
--- /dev/null
+++ b/Lang/LOLCODE/Ethiopian-multiplication
@@ -0,0 +1 @@
+../../Task/Ethiopian-multiplication/LOLCODE
\ No newline at end of file
diff --git a/Lang/LOLCODE/Happy-numbers b/Lang/LOLCODE/Happy-numbers
new file mode 120000
index 0000000000..f2d04918d3
--- /dev/null
+++ b/Lang/LOLCODE/Happy-numbers
@@ -0,0 +1 @@
+../../Task/Happy-numbers/LOLCODE
\ No newline at end of file
diff --git a/Lang/Lhogho/00DESCRIPTION b/Lang/Lhogho/00DESCRIPTION
index 1c5184a044..d86ad6af6b 100644
--- a/Lang/Lhogho/00DESCRIPTION
+++ b/Lang/Lhogho/00DESCRIPTION
@@ -1,4 +1,5 @@
{{language|Lhogho
+|site=http://lhogho.sourceforge.net/
|strength=strong
|safety=safe
|express=implicit
diff --git a/Lang/Lhogho/99-Bottles-of-Beer b/Lang/Lhogho/99-Bottles-of-Beer
new file mode 120000
index 0000000000..85b7bbd3ad
--- /dev/null
+++ b/Lang/Lhogho/99-Bottles-of-Beer
@@ -0,0 +1 @@
+../../Task/99-Bottles-of-Beer/Lhogho
\ No newline at end of file
diff --git a/Lang/Lhogho/Loops-Downward-for b/Lang/Lhogho/Loops-Downward-for
new file mode 120000
index 0000000000..7e5ce0d411
--- /dev/null
+++ b/Lang/Lhogho/Loops-Downward-for
@@ -0,0 +1 @@
+../../Task/Loops-Downward-for/Lhogho
\ No newline at end of file
diff --git a/Lang/Lhogho/Loops-N-plus-one-half b/Lang/Lhogho/Loops-N-plus-one-half
new file mode 120000
index 0000000000..54aacbe15d
--- /dev/null
+++ b/Lang/Lhogho/Loops-N-plus-one-half
@@ -0,0 +1 @@
+../../Task/Loops-N-plus-one-half/Lhogho
\ No newline at end of file
diff --git a/Lang/Lhogho/Sleep b/Lang/Lhogho/Sleep
new file mode 120000
index 0000000000..4a816b9121
--- /dev/null
+++ b/Lang/Lhogho/Sleep
@@ -0,0 +1 @@
+../../Task/Sleep/Lhogho
\ No newline at end of file
diff --git a/Lang/Lisp/99-Bottles-of-Beer b/Lang/Lisp/99-Bottles-of-Beer
new file mode 120000
index 0000000000..e8c8282a9e
--- /dev/null
+++ b/Lang/Lisp/99-Bottles-of-Beer
@@ -0,0 +1 @@
+../../Task/99-Bottles-of-Beer/Lisp
\ No newline at end of file
diff --git a/Lang/Locomotive-Basic/Terminal-control-Coloured-text b/Lang/Locomotive-Basic/Terminal-control-Coloured-text
new file mode 120000
index 0000000000..50d6d1e820
--- /dev/null
+++ b/Lang/Locomotive-Basic/Terminal-control-Coloured-text
@@ -0,0 +1 @@
+../../Task/Terminal-control-Coloured-text/Locomotive-Basic
\ No newline at end of file
diff --git a/Lang/Locomotive-Basic/Write-language-name-in-3D-ASCII b/Lang/Locomotive-Basic/Write-language-name-in-3D-ASCII
new file mode 120000
index 0000000000..58732a90ca
--- /dev/null
+++ b/Lang/Locomotive-Basic/Write-language-name-in-3D-ASCII
@@ -0,0 +1 @@
+../../Task/Write-language-name-in-3D-ASCII/Locomotive-Basic
\ No newline at end of file
diff --git a/Lang/Logtalk/00DESCRIPTION b/Lang/Logtalk/00DESCRIPTION
index 4b8c11cd09..aa1e1e2a8a 100644
--- a/Lang/Logtalk/00DESCRIPTION
+++ b/Lang/Logtalk/00DESCRIPTION
@@ -2,8 +2,7 @@
|site=http://logtalk.org/
}}
-Logtalk is an object-oriented logic programming language that extends the [[Prolog]] language with a feature set suitable for programming in the large. As a multi-paradigm language, it includes support for encapsulation and data hiding, separation of concerns and enhanced code reuse, both prototypes and classes, protocols (interfaces), component-based programming through category-based composition, event-driven programming, and high-level multi-threading programming.
-Logtalk uses standard Prolog syntax with the addition of a few operators and directives.
+Logtalk is an object-oriented logic programming language that extends and leverages the [[Prolog]] language with a feature set suitable for programming in the large. As a multi-paradigm language, it includes support for encapsulation and data hiding, separation of concerns and enhanced code reuse, both prototypes and classes, protocols (interfaces), component-based programming through category-based composition, event-driven programming, and high-level multi-threading programming. Logtalk uses standard Prolog syntax with the addition of a few operators and directives.
==See Also==
*[[wp:Logtalk|Wikipedia: Logtalk]]
\ No newline at end of file
diff --git a/Lang/Logtalk/Add-a-variable-to-a-class-instance-at-runtime b/Lang/Logtalk/Add-a-variable-to-a-class-instance-at-runtime
new file mode 120000
index 0000000000..90b3e8d2cd
--- /dev/null
+++ b/Lang/Logtalk/Add-a-variable-to-a-class-instance-at-runtime
@@ -0,0 +1 @@
+../../Task/Add-a-variable-to-a-class-instance-at-runtime/Logtalk
\ No newline at end of file
diff --git a/Lang/Logtalk/Atomic-updates b/Lang/Logtalk/Atomic-updates
new file mode 120000
index 0000000000..3cd07cdad6
--- /dev/null
+++ b/Lang/Logtalk/Atomic-updates
@@ -0,0 +1 @@
+../../Task/Atomic-updates/Logtalk
\ No newline at end of file
diff --git a/Lang/Logtalk/Averages-Arithmetic-mean b/Lang/Logtalk/Averages-Arithmetic-mean
new file mode 120000
index 0000000000..e3851b7253
--- /dev/null
+++ b/Lang/Logtalk/Averages-Arithmetic-mean
@@ -0,0 +1 @@
+../../Task/Averages-Arithmetic-mean/Logtalk
\ No newline at end of file
diff --git a/Lang/Logtalk/Break-OO-privacy b/Lang/Logtalk/Break-OO-privacy
new file mode 120000
index 0000000000..c53f100562
--- /dev/null
+++ b/Lang/Logtalk/Break-OO-privacy
@@ -0,0 +1 @@
+../../Task/Break-OO-privacy/Logtalk
\ No newline at end of file
diff --git a/Lang/Logtalk/Checkpoint-synchronization b/Lang/Logtalk/Checkpoint-synchronization
new file mode 120000
index 0000000000..1153410198
--- /dev/null
+++ b/Lang/Logtalk/Checkpoint-synchronization
@@ -0,0 +1 @@
+../../Task/Checkpoint-synchronization/Logtalk
\ No newline at end of file
diff --git a/Lang/Logtalk/Count-occurrences-of-a-substring b/Lang/Logtalk/Count-occurrences-of-a-substring
new file mode 120000
index 0000000000..0109fb5e3b
--- /dev/null
+++ b/Lang/Logtalk/Count-occurrences-of-a-substring
@@ -0,0 +1 @@
+../../Task/Count-occurrences-of-a-substring/Logtalk
\ No newline at end of file
diff --git a/Lang/Logtalk/Documentation b/Lang/Logtalk/Documentation
new file mode 120000
index 0000000000..9efa0b22e1
--- /dev/null
+++ b/Lang/Logtalk/Documentation
@@ -0,0 +1 @@
+../../Task/Documentation/Logtalk
\ No newline at end of file
diff --git a/Lang/Logtalk/Dynamic-variable-names b/Lang/Logtalk/Dynamic-variable-names
new file mode 120000
index 0000000000..cc8c48787d
--- /dev/null
+++ b/Lang/Logtalk/Dynamic-variable-names
@@ -0,0 +1 @@
+../../Task/Dynamic-variable-names/Logtalk
\ No newline at end of file
diff --git a/Lang/Logtalk/Enforced-immutability b/Lang/Logtalk/Enforced-immutability
new file mode 120000
index 0000000000..fcec484e6a
--- /dev/null
+++ b/Lang/Logtalk/Enforced-immutability
@@ -0,0 +1 @@
+../../Task/Enforced-immutability/Logtalk
\ No newline at end of file
diff --git a/Lang/Logtalk/Even-or-odd b/Lang/Logtalk/Even-or-odd
new file mode 120000
index 0000000000..51b5cecf3b
--- /dev/null
+++ b/Lang/Logtalk/Even-or-odd
@@ -0,0 +1 @@
+../../Task/Even-or-odd/Logtalk
\ No newline at end of file
diff --git a/Lang/Logtalk/Exceptions b/Lang/Logtalk/Exceptions
new file mode 120000
index 0000000000..9d900a6ebb
--- /dev/null
+++ b/Lang/Logtalk/Exceptions
@@ -0,0 +1 @@
+../../Task/Exceptions/Logtalk
\ No newline at end of file
diff --git a/Lang/Logtalk/Hello-world-Newline-omission b/Lang/Logtalk/Hello-world-Newline-omission
new file mode 120000
index 0000000000..0ff38c1c4c
--- /dev/null
+++ b/Lang/Logtalk/Hello-world-Newline-omission
@@ -0,0 +1 @@
+../../Task/Hello-world-Newline-omission/Logtalk
\ No newline at end of file
diff --git a/Lang/Logtalk/Hello-world-Standard-error b/Lang/Logtalk/Hello-world-Standard-error
new file mode 120000
index 0000000000..0e00001433
--- /dev/null
+++ b/Lang/Logtalk/Hello-world-Standard-error
@@ -0,0 +1 @@
+../../Task/Hello-world-Standard-error/Logtalk
\ No newline at end of file
diff --git a/Lang/Logtalk/Introspection b/Lang/Logtalk/Introspection
new file mode 120000
index 0000000000..1ab8eff4a9
--- /dev/null
+++ b/Lang/Logtalk/Introspection
@@ -0,0 +1 @@
+../../Task/Introspection/Logtalk
\ No newline at end of file
diff --git a/Lang/Logtalk/Literals-Integer b/Lang/Logtalk/Literals-Integer
new file mode 120000
index 0000000000..af9cc6de24
--- /dev/null
+++ b/Lang/Logtalk/Literals-Integer
@@ -0,0 +1 @@
+../../Task/Literals-Integer/Logtalk
\ No newline at end of file
diff --git a/Lang/Logtalk/Metered-concurrency b/Lang/Logtalk/Metered-concurrency
new file mode 120000
index 0000000000..8d21f6e221
--- /dev/null
+++ b/Lang/Logtalk/Metered-concurrency
@@ -0,0 +1 @@
+../../Task/Metered-concurrency/Logtalk
\ No newline at end of file
diff --git a/Lang/Logtalk/Multiple-distinct-objects b/Lang/Logtalk/Multiple-distinct-objects
new file mode 120000
index 0000000000..c633f1dc3b
--- /dev/null
+++ b/Lang/Logtalk/Multiple-distinct-objects
@@ -0,0 +1 @@
+../../Task/Multiple-distinct-objects/Logtalk
\ No newline at end of file
diff --git a/Lang/Logtalk/Mutex b/Lang/Logtalk/Mutex
new file mode 120000
index 0000000000..47f82f6def
--- /dev/null
+++ b/Lang/Logtalk/Mutex
@@ -0,0 +1 @@
+../../Task/Mutex/Logtalk
\ No newline at end of file
diff --git a/Lang/Logtalk/Partial-function-application b/Lang/Logtalk/Partial-function-application
new file mode 120000
index 0000000000..6f9e1197e1
--- /dev/null
+++ b/Lang/Logtalk/Partial-function-application
@@ -0,0 +1 @@
+../../Task/Partial-function-application/Logtalk
\ No newline at end of file
diff --git a/Lang/Logtalk/Real-constants-and-functions b/Lang/Logtalk/Real-constants-and-functions
new file mode 120000
index 0000000000..f5c5f307cb
--- /dev/null
+++ b/Lang/Logtalk/Real-constants-and-functions
@@ -0,0 +1 @@
+../../Task/Real-constants-and-functions/Logtalk
\ No newline at end of file
diff --git a/Lang/Logtalk/Respond-to-an-unknown-method-call b/Lang/Logtalk/Respond-to-an-unknown-method-call
new file mode 120000
index 0000000000..123ace2d5f
--- /dev/null
+++ b/Lang/Logtalk/Respond-to-an-unknown-method-call
@@ -0,0 +1 @@
+../../Task/Respond-to-an-unknown-method-call/Logtalk
\ No newline at end of file
diff --git a/Lang/Logtalk/Scope-modifiers b/Lang/Logtalk/Scope-modifiers
new file mode 120000
index 0000000000..2d89df9d4a
--- /dev/null
+++ b/Lang/Logtalk/Scope-modifiers
@@ -0,0 +1 @@
+../../Task/Scope-modifiers/Logtalk
\ No newline at end of file
diff --git a/Lang/Logtalk/Send-an-unknown-method-call b/Lang/Logtalk/Send-an-unknown-method-call
new file mode 120000
index 0000000000..1e35f5ff01
--- /dev/null
+++ b/Lang/Logtalk/Send-an-unknown-method-call
@@ -0,0 +1 @@
+../../Task/Send-an-unknown-method-call/Logtalk
\ No newline at end of file
diff --git a/Lang/Logtalk/Singly-linked-list-Traversal b/Lang/Logtalk/Singly-linked-list-Traversal
new file mode 120000
index 0000000000..eb538a8bf5
--- /dev/null
+++ b/Lang/Logtalk/Singly-linked-list-Traversal
@@ -0,0 +1 @@
+../../Task/Singly-linked-list-Traversal/Logtalk
\ No newline at end of file
diff --git a/Lang/Logtalk/Sleep b/Lang/Logtalk/Sleep
new file mode 120000
index 0000000000..3dacea0077
--- /dev/null
+++ b/Lang/Logtalk/Sleep
@@ -0,0 +1 @@
+../../Task/Sleep/Logtalk
\ No newline at end of file
diff --git a/Lang/Logtalk/Stack b/Lang/Logtalk/Stack
new file mode 120000
index 0000000000..ce731c2035
--- /dev/null
+++ b/Lang/Logtalk/Stack
@@ -0,0 +1 @@
+../../Task/Stack/Logtalk
\ No newline at end of file
diff --git a/Lang/Logtalk/Start-from-a-main-routine b/Lang/Logtalk/Start-from-a-main-routine
new file mode 120000
index 0000000000..2e4af9ba7e
--- /dev/null
+++ b/Lang/Logtalk/Start-from-a-main-routine
@@ -0,0 +1 @@
+../../Task/Start-from-a-main-routine/Logtalk
\ No newline at end of file
diff --git a/Lang/Logtalk/Strip-whitespace-from-a-string-Top-and-tail b/Lang/Logtalk/Strip-whitespace-from-a-string-Top-and-tail
new file mode 120000
index 0000000000..0552a212a6
--- /dev/null
+++ b/Lang/Logtalk/Strip-whitespace-from-a-string-Top-and-tail
@@ -0,0 +1 @@
+../../Task/Strip-whitespace-from-a-string-Top-and-tail/Logtalk
\ No newline at end of file
diff --git a/Lang/Logtalk/Substring b/Lang/Logtalk/Substring
new file mode 120000
index 0000000000..fb1fe8d1a6
--- /dev/null
+++ b/Lang/Logtalk/Substring
@@ -0,0 +1 @@
+../../Task/Substring/Logtalk
\ No newline at end of file
diff --git a/Lang/Logtalk/Substring-Top-and-tail b/Lang/Logtalk/Substring-Top-and-tail
new file mode 120000
index 0000000000..0a152985a8
--- /dev/null
+++ b/Lang/Logtalk/Substring-Top-and-tail
@@ -0,0 +1 @@
+../../Task/Substring-Top-and-tail/Logtalk
\ No newline at end of file
diff --git a/Lang/Logtalk/Synchronous-concurrency b/Lang/Logtalk/Synchronous-concurrency
new file mode 120000
index 0000000000..2ecd204b39
--- /dev/null
+++ b/Lang/Logtalk/Synchronous-concurrency
@@ -0,0 +1 @@
+../../Task/Synchronous-concurrency/Logtalk
\ No newline at end of file
diff --git a/Lang/Logtalk/Tokenize-a-string b/Lang/Logtalk/Tokenize-a-string
new file mode 120000
index 0000000000..5ae47a23eb
--- /dev/null
+++ b/Lang/Logtalk/Tokenize-a-string
@@ -0,0 +1 @@
+../../Task/Tokenize-a-string/Logtalk
\ No newline at end of file
diff --git a/Lang/Logtalk/Tree-traversal b/Lang/Logtalk/Tree-traversal
new file mode 120000
index 0000000000..71cb63bc73
--- /dev/null
+++ b/Lang/Logtalk/Tree-traversal
@@ -0,0 +1 @@
+../../Task/Tree-traversal/Logtalk
\ No newline at end of file
diff --git a/Lang/Logtalk/Trigonometric-functions b/Lang/Logtalk/Trigonometric-functions
new file mode 120000
index 0000000000..1363cb82f7
--- /dev/null
+++ b/Lang/Logtalk/Trigonometric-functions
@@ -0,0 +1 @@
+../../Task/Trigonometric-functions/Logtalk
\ No newline at end of file
diff --git a/Lang/Logtalk/User-input-Text b/Lang/Logtalk/User-input-Text
new file mode 120000
index 0000000000..b14c565874
--- /dev/null
+++ b/Lang/Logtalk/User-input-Text
@@ -0,0 +1 @@
+../../Task/User-input-Text/Logtalk
\ No newline at end of file
diff --git a/Lang/Logtalk/Zebra-puzzle b/Lang/Logtalk/Zebra-puzzle
new file mode 120000
index 0000000000..1ab228a3fa
--- /dev/null
+++ b/Lang/Logtalk/Zebra-puzzle
@@ -0,0 +1 @@
+../../Task/Zebra-puzzle/Logtalk
\ No newline at end of file
diff --git a/Lang/Lua/Execute-a-Markov-algorithm b/Lang/Lua/Execute-a-Markov-algorithm
new file mode 120000
index 0000000000..ba54ee0c04
--- /dev/null
+++ b/Lang/Lua/Execute-a-Markov-algorithm
@@ -0,0 +1 @@
+../../Task/Execute-a-Markov-algorithm/Lua
\ No newline at end of file
diff --git a/Lang/Lua/Guess-the-number-With-feedback--player- b/Lang/Lua/Guess-the-number-With-feedback--player-
new file mode 120000
index 0000000000..bc3e4df3b1
--- /dev/null
+++ b/Lang/Lua/Guess-the-number-With-feedback--player-
@@ -0,0 +1 @@
+../../Task/Guess-the-number-With-feedback--player-/Lua
\ No newline at end of file
diff --git a/Lang/Lua/Semordnilap b/Lang/Lua/Semordnilap
new file mode 120000
index 0000000000..e75ad0dab5
--- /dev/null
+++ b/Lang/Lua/Semordnilap
@@ -0,0 +1 @@
+../../Task/Semordnilap/Lua
\ No newline at end of file
diff --git a/Lang/M4/00DESCRIPTION b/Lang/M4/00DESCRIPTION
index 0606c24af4..29c327c91f 100644
--- a/Lang/M4/00DESCRIPTION
+++ b/Lang/M4/00DESCRIPTION
@@ -1,7 +1,29 @@
-{{language|exec=interpreted}}
-‘m4’ is a macro processor, in the sense that it copies its input to the output, expanding macros as it goes. Macros are either builtin or user-defined, and can take any number of arguments. Besides just doing macro expansion, ‘m4’ has builtin functions for including named files, running shell commands, doing integer arithmetic, manipulating text in various ways, performing recursion, etc.... ‘m4’ can be used either as a front-end to a compiler, or as a macro processor in its own right.
+{{language
+|exec=interpreted
+|safety=safe
+|untyped=yes
+|tag=m4
+}}
+'''m4''' reads text input, expands macros in the text, and prints the result. It can be used as a front-end to a compiler or assembler, or for general purpose expanding etc.
-(Excerpt from the GNU info page of m4)
+Various builtin macros can do integer arithmetic, run shell commands, access files, divert output to temporary buffers for re-ordering, etc. define creates new macros.
+
+define(`foo', `blah blah: $1')
+foo(123)
+=>
+blah blah: 123
+
+Control flow is limited to ifelse, but it's easy to construct loops by recursion. GNU m4 includes examples of macros implementing various general-purpose loops.
+
+Quoting data values against premature or unwanted expansion can be a little tricky. The default quote characters are ` and '. If they would occur in text too often then changequote() can set something else. Autoconf changes to [ and ] since ` and ' occur often in its [[Bourne Shell]] output.
+
+When a macro expands, its value (with $1 etc parameters substituted) is re-read as input. This is how macro definitions can contain further macros to expand.
+
+define(`foo', `bar(`$1',x,`$2')')
+
+Various m4 implementations, including BSD, have a fixed limit on the amount "push-back" text to be re-read. GNU m4 has no limit except available memory. A limit restricts the size of macro values and the data they might operate on. Cutting data into pieces can keep expansions to a reasonable size.
+
+The simple text re-reading means that macro calls are "properly tail recursive". If an expansion ends with another macro call then that call can re-expand recursively or by co-routining endlessly. But a tail call must be the very last thing, no newline or other fixed text after. See [[Factorial#M4|Factorial]] for an example of such recursion.
One implementation of this Unix macro processor m4 is the GNU m4
diff --git a/Lang/M4/Dragon-curve b/Lang/M4/Dragon-curve
new file mode 120000
index 0000000000..37ad131490
--- /dev/null
+++ b/Lang/M4/Dragon-curve
@@ -0,0 +1 @@
+../../Task/Dragon-curve/M4
\ No newline at end of file
diff --git a/Lang/MATLAB/Arithmetic-geometric-mean b/Lang/MATLAB/Arithmetic-geometric-mean
new file mode 120000
index 0000000000..671b4441f3
--- /dev/null
+++ b/Lang/MATLAB/Arithmetic-geometric-mean
@@ -0,0 +1 @@
+../../Task/Arithmetic-geometric-mean/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/Averages-Mean-angle b/Lang/MATLAB/Averages-Mean-angle
new file mode 120000
index 0000000000..2d9d87bae0
--- /dev/null
+++ b/Lang/MATLAB/Averages-Mean-angle
@@ -0,0 +1 @@
+../../Task/Averages-Mean-angle/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/Averages-Mean-time-of-day b/Lang/MATLAB/Averages-Mean-time-of-day
new file mode 120000
index 0000000000..59c955fb59
--- /dev/null
+++ b/Lang/MATLAB/Averages-Mean-time-of-day
@@ -0,0 +1 @@
+../../Task/Averages-Mean-time-of-day/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/Binary-strings b/Lang/MATLAB/Binary-strings
new file mode 120000
index 0000000000..d99c559ccb
--- /dev/null
+++ b/Lang/MATLAB/Binary-strings
@@ -0,0 +1 @@
+../../Task/Binary-strings/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/Bitmap-Write-a-PPM-file b/Lang/MATLAB/Bitmap-Write-a-PPM-file
new file mode 120000
index 0000000000..16feaadb13
--- /dev/null
+++ b/Lang/MATLAB/Bitmap-Write-a-PPM-file
@@ -0,0 +1 @@
+../../Task/Bitmap-Write-a-PPM-file/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/Compound-data-type b/Lang/MATLAB/Compound-data-type
new file mode 120000
index 0000000000..800782e519
--- /dev/null
+++ b/Lang/MATLAB/Compound-data-type
@@ -0,0 +1 @@
+../../Task/Compound-data-type/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/Entropy b/Lang/MATLAB/Entropy
new file mode 120000
index 0000000000..15d9603589
--- /dev/null
+++ b/Lang/MATLAB/Entropy
@@ -0,0 +1 @@
+../../Task/Entropy/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/Five-weekends b/Lang/MATLAB/Five-weekends
new file mode 120000
index 0000000000..b04019a574
--- /dev/null
+++ b/Lang/MATLAB/Five-weekends
@@ -0,0 +1 @@
+../../Task/Five-weekends/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/Flow-control-structures b/Lang/MATLAB/Flow-control-structures
new file mode 120000
index 0000000000..95fa8afa0b
--- /dev/null
+++ b/Lang/MATLAB/Flow-control-structures
@@ -0,0 +1 @@
+../../Task/Flow-control-structures/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/Floyds-triangle b/Lang/MATLAB/Floyds-triangle
new file mode 120000
index 0000000000..b2c829661c
--- /dev/null
+++ b/Lang/MATLAB/Floyds-triangle
@@ -0,0 +1 @@
+../../Task/Floyds-triangle/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/Forest-fire b/Lang/MATLAB/Forest-fire
new file mode 120000
index 0000000000..13358c25f6
--- /dev/null
+++ b/Lang/MATLAB/Forest-fire
@@ -0,0 +1 @@
+../../Task/Forest-fire/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/Greatest-subsequential-sum b/Lang/MATLAB/Greatest-subsequential-sum
new file mode 120000
index 0000000000..c790f86629
--- /dev/null
+++ b/Lang/MATLAB/Greatest-subsequential-sum
@@ -0,0 +1 @@
+../../Task/Greatest-subsequential-sum/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/Guess-the-number-With-feedback b/Lang/MATLAB/Guess-the-number-With-feedback
new file mode 120000
index 0000000000..6486b7498f
--- /dev/null
+++ b/Lang/MATLAB/Guess-the-number-With-feedback
@@ -0,0 +1 @@
+../../Task/Guess-the-number-With-feedback/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/HTTPS b/Lang/MATLAB/HTTPS
new file mode 120000
index 0000000000..36380239b6
--- /dev/null
+++ b/Lang/MATLAB/HTTPS
@@ -0,0 +1 @@
+../../Task/HTTPS/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/Harshad-or-Niven-series b/Lang/MATLAB/Harshad-or-Niven-series
new file mode 120000
index 0000000000..1dbb166aa2
--- /dev/null
+++ b/Lang/MATLAB/Harshad-or-Niven-series
@@ -0,0 +1 @@
+../../Task/Harshad-or-Niven-series/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/Hello-world-Newline-omission b/Lang/MATLAB/Hello-world-Newline-omission
new file mode 120000
index 0000000000..d1a8006187
--- /dev/null
+++ b/Lang/MATLAB/Hello-world-Newline-omission
@@ -0,0 +1 @@
+../../Task/Hello-world-Newline-omission/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/Higher-order-functions b/Lang/MATLAB/Higher-order-functions
new file mode 120000
index 0000000000..b564a231df
--- /dev/null
+++ b/Lang/MATLAB/Higher-order-functions
@@ -0,0 +1 @@
+../../Task/Higher-order-functions/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/I-before-E-except-after-C b/Lang/MATLAB/I-before-E-except-after-C
new file mode 120000
index 0000000000..e4a9371bca
--- /dev/null
+++ b/Lang/MATLAB/I-before-E-except-after-C
@@ -0,0 +1 @@
+../../Task/I-before-E-except-after-C/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/Identity-matrix b/Lang/MATLAB/Identity-matrix
new file mode 120000
index 0000000000..9827069ac9
--- /dev/null
+++ b/Lang/MATLAB/Identity-matrix
@@ -0,0 +1 @@
+../../Task/Identity-matrix/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/Langtons-ant b/Lang/MATLAB/Langtons-ant
new file mode 120000
index 0000000000..4fc977e5ae
--- /dev/null
+++ b/Lang/MATLAB/Langtons-ant
@@ -0,0 +1 @@
+../../Task/Langtons-ant/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/Letter-frequency b/Lang/MATLAB/Letter-frequency
new file mode 120000
index 0000000000..cef37af54c
--- /dev/null
+++ b/Lang/MATLAB/Letter-frequency
@@ -0,0 +1 @@
+../../Task/Letter-frequency/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/Literals-Integer b/Lang/MATLAB/Literals-Integer
new file mode 120000
index 0000000000..743db9a191
--- /dev/null
+++ b/Lang/MATLAB/Literals-Integer
@@ -0,0 +1 @@
+../../Task/Literals-Integer/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/Middle-three-digits b/Lang/MATLAB/Middle-three-digits
new file mode 120000
index 0000000000..867476a1a9
--- /dev/null
+++ b/Lang/MATLAB/Middle-three-digits
@@ -0,0 +1 @@
+../../Task/Middle-three-digits/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/Non-decimal-radices-Input b/Lang/MATLAB/Non-decimal-radices-Input
new file mode 120000
index 0000000000..ce0814bc3e
--- /dev/null
+++ b/Lang/MATLAB/Non-decimal-radices-Input
@@ -0,0 +1 @@
+../../Task/Non-decimal-radices-Input/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/Non-decimal-radices-Output b/Lang/MATLAB/Non-decimal-radices-Output
new file mode 120000
index 0000000000..0a9d648fc6
--- /dev/null
+++ b/Lang/MATLAB/Non-decimal-radices-Output
@@ -0,0 +1 @@
+../../Task/Non-decimal-radices-Output/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/Null-object b/Lang/MATLAB/Null-object
new file mode 120000
index 0000000000..b025d1565b
--- /dev/null
+++ b/Lang/MATLAB/Null-object
@@ -0,0 +1 @@
+../../Task/Null-object/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/One-dimensional-cellular-automata b/Lang/MATLAB/One-dimensional-cellular-automata
new file mode 120000
index 0000000000..27cbf2e849
--- /dev/null
+++ b/Lang/MATLAB/One-dimensional-cellular-automata
@@ -0,0 +1 @@
+../../Task/One-dimensional-cellular-automata/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/One-of-n-lines-in-a-file b/Lang/MATLAB/One-of-n-lines-in-a-file
new file mode 120000
index 0000000000..c0daf0a8eb
--- /dev/null
+++ b/Lang/MATLAB/One-of-n-lines-in-a-file
@@ -0,0 +1 @@
+../../Task/One-of-n-lines-in-a-file/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/Permutations b/Lang/MATLAB/Permutations
new file mode 120000
index 0000000000..1ece9f7e23
--- /dev/null
+++ b/Lang/MATLAB/Permutations
@@ -0,0 +1 @@
+../../Task/Permutations/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/Range-expansion b/Lang/MATLAB/Range-expansion
new file mode 120000
index 0000000000..f8199bbdc2
--- /dev/null
+++ b/Lang/MATLAB/Range-expansion
@@ -0,0 +1 @@
+../../Task/Range-expansion/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/Range-extraction b/Lang/MATLAB/Range-extraction
new file mode 120000
index 0000000000..8565c8c79e
--- /dev/null
+++ b/Lang/MATLAB/Range-extraction
@@ -0,0 +1 @@
+../../Task/Range-extraction/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/Real-constants-and-functions b/Lang/MATLAB/Real-constants-and-functions
new file mode 120000
index 0000000000..72e9fc447b
--- /dev/null
+++ b/Lang/MATLAB/Real-constants-and-functions
@@ -0,0 +1 @@
+../../Task/Real-constants-and-functions/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/Truncate-a-file b/Lang/MATLAB/Truncate-a-file
new file mode 120000
index 0000000000..4471b524c9
--- /dev/null
+++ b/Lang/MATLAB/Truncate-a-file
@@ -0,0 +1 @@
+../../Task/Truncate-a-file/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/URL-encoding b/Lang/MATLAB/URL-encoding
new file mode 120000
index 0000000000..6b830877f1
--- /dev/null
+++ b/Lang/MATLAB/URL-encoding
@@ -0,0 +1 @@
+../../Task/URL-encoding/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/Walk-a-directory-Recursively b/Lang/MATLAB/Walk-a-directory-Recursively
new file mode 120000
index 0000000000..f470dc8507
--- /dev/null
+++ b/Lang/MATLAB/Walk-a-directory-Recursively
@@ -0,0 +1 @@
+../../Task/Walk-a-directory-Recursively/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/Web-scraping b/Lang/MATLAB/Web-scraping
new file mode 120000
index 0000000000..650ed0fdc1
--- /dev/null
+++ b/Lang/MATLAB/Web-scraping
@@ -0,0 +1 @@
+../../Task/Web-scraping/MATLAB
\ No newline at end of file
diff --git a/Lang/Maple/Hailstone-sequence b/Lang/Maple/Hailstone-sequence
new file mode 120000
index 0000000000..52d9aac505
--- /dev/null
+++ b/Lang/Maple/Hailstone-sequence
@@ -0,0 +1 @@
+../../Task/Hailstone-sequence/Maple
\ No newline at end of file
diff --git a/Lang/Maple/Long-multiplication b/Lang/Maple/Long-multiplication
new file mode 120000
index 0000000000..46bd359057
--- /dev/null
+++ b/Lang/Maple/Long-multiplication
@@ -0,0 +1 @@
+../../Task/Long-multiplication/Maple
\ No newline at end of file
diff --git a/Lang/Mathematica/I-before-E-except-after-C b/Lang/Mathematica/I-before-E-except-after-C
new file mode 120000
index 0000000000..65b392b3ba
--- /dev/null
+++ b/Lang/Mathematica/I-before-E-except-after-C
@@ -0,0 +1 @@
+../../Task/I-before-E-except-after-C/Mathematica
\ No newline at end of file
diff --git a/Lang/Maxima/A+B b/Lang/Maxima/A+B
new file mode 120000
index 0000000000..9d3a13ad9f
--- /dev/null
+++ b/Lang/Maxima/A+B
@@ -0,0 +1 @@
+../../Task/A+B/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Associative-array-Iteration b/Lang/Maxima/Associative-array-Iteration
new file mode 120000
index 0000000000..2d84a515e9
--- /dev/null
+++ b/Lang/Maxima/Associative-array-Iteration
@@ -0,0 +1 @@
+../../Task/Associative-array-Iteration/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/CSV-to-HTML-translation b/Lang/Maxima/CSV-to-HTML-translation
new file mode 120000
index 0000000000..561776e392
--- /dev/null
+++ b/Lang/Maxima/CSV-to-HTML-translation
@@ -0,0 +1 @@
+../../Task/CSV-to-HTML-translation/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Constrained-random-points-on-a-circle b/Lang/Maxima/Constrained-random-points-on-a-circle
new file mode 120000
index 0000000000..61d8025f00
--- /dev/null
+++ b/Lang/Maxima/Constrained-random-points-on-a-circle
@@ -0,0 +1 @@
+../../Task/Constrained-random-points-on-a-circle/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Create-a-two-dimensional-array-at-runtime b/Lang/Maxima/Create-a-two-dimensional-array-at-runtime
new file mode 120000
index 0000000000..4bc7a88d04
--- /dev/null
+++ b/Lang/Maxima/Create-a-two-dimensional-array-at-runtime
@@ -0,0 +1 @@
+../../Task/Create-a-two-dimensional-array-at-runtime/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Euler-method b/Lang/Maxima/Euler-method
new file mode 120000
index 0000000000..d76d2ce911
--- /dev/null
+++ b/Lang/Maxima/Euler-method
@@ -0,0 +1 @@
+../../Task/Euler-method/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Function-definition b/Lang/Maxima/Function-definition
new file mode 120000
index 0000000000..6513d39a51
--- /dev/null
+++ b/Lang/Maxima/Function-definition
@@ -0,0 +1 @@
+../../Task/Function-definition/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Monte-Carlo-methods b/Lang/Maxima/Monte-Carlo-methods
new file mode 120000
index 0000000000..0835e853ae
--- /dev/null
+++ b/Lang/Maxima/Monte-Carlo-methods
@@ -0,0 +1 @@
+../../Task/Monte-Carlo-methods/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Multiplication-tables b/Lang/Maxima/Multiplication-tables
new file mode 120000
index 0000000000..5c380ca55a
--- /dev/null
+++ b/Lang/Maxima/Multiplication-tables
@@ -0,0 +1 @@
+../../Task/Multiplication-tables/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Number-names b/Lang/Maxima/Number-names
new file mode 120000
index 0000000000..f33e720cbe
--- /dev/null
+++ b/Lang/Maxima/Number-names
@@ -0,0 +1 @@
+../../Task/Number-names/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/String-case b/Lang/Maxima/String-case
new file mode 120000
index 0000000000..17ff7b9e30
--- /dev/null
+++ b/Lang/Maxima/String-case
@@ -0,0 +1 @@
+../../Task/String-case/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Tokenize-a-string b/Lang/Maxima/Tokenize-a-string
new file mode 120000
index 0000000000..4a9049c2c0
--- /dev/null
+++ b/Lang/Maxima/Tokenize-a-string
@@ -0,0 +1 @@
+../../Task/Tokenize-a-string/Maxima
\ No newline at end of file
diff --git a/Lang/Mercury/Function-definition b/Lang/Mercury/Function-definition
new file mode 120000
index 0000000000..62aa9372d7
--- /dev/null
+++ b/Lang/Mercury/Function-definition
@@ -0,0 +1 @@
+../../Task/Function-definition/Mercury
\ No newline at end of file
diff --git a/Lang/Mercury/Gray-code b/Lang/Mercury/Gray-code
new file mode 120000
index 0000000000..130e9e2add
--- /dev/null
+++ b/Lang/Mercury/Gray-code
@@ -0,0 +1 @@
+../../Task/Gray-code/Mercury
\ No newline at end of file
diff --git a/Lang/Mercury/Stack b/Lang/Mercury/Stack
new file mode 120000
index 0000000000..4a7ed912b4
--- /dev/null
+++ b/Lang/Mercury/Stack
@@ -0,0 +1 @@
+../../Task/Stack/Mercury
\ No newline at end of file
diff --git a/Lang/MySQL/Greatest-common-divisor b/Lang/MySQL/Greatest-common-divisor
new file mode 120000
index 0000000000..5228afb9bd
--- /dev/null
+++ b/Lang/MySQL/Greatest-common-divisor
@@ -0,0 +1 @@
+../../Task/Greatest-common-divisor/MySQL
\ No newline at end of file
diff --git a/Lang/MySQL/Hello-world-Text b/Lang/MySQL/Hello-world-Text
new file mode 120000
index 0000000000..991873249b
--- /dev/null
+++ b/Lang/MySQL/Hello-world-Text
@@ -0,0 +1 @@
+../../Task/Hello-world-Text/MySQL
\ No newline at end of file
diff --git a/Lang/MySQL/Mandelbrot-set b/Lang/MySQL/Mandelbrot-set
new file mode 120000
index 0000000000..221f012652
--- /dev/null
+++ b/Lang/MySQL/Mandelbrot-set
@@ -0,0 +1 @@
+../../Task/Mandelbrot-set/MySQL
\ No newline at end of file
diff --git a/Lang/Nemerle/Abstract-type b/Lang/Nemerle/Abstract-type
new file mode 120000
index 0000000000..4b29fc450d
--- /dev/null
+++ b/Lang/Nemerle/Abstract-type
@@ -0,0 +1 @@
+../../Task/Abstract-type/Nemerle
\ No newline at end of file
diff --git a/Lang/Nemerle/Accumulator-factory b/Lang/Nemerle/Accumulator-factory
new file mode 120000
index 0000000000..260234a3f0
--- /dev/null
+++ b/Lang/Nemerle/Accumulator-factory
@@ -0,0 +1 @@
+../../Task/Accumulator-factory/Nemerle
\ No newline at end of file
diff --git a/Lang/Nemerle/Apply-a-callback-to-an-array b/Lang/Nemerle/Apply-a-callback-to-an-array
new file mode 120000
index 0000000000..7429c381d7
--- /dev/null
+++ b/Lang/Nemerle/Apply-a-callback-to-an-array
@@ -0,0 +1 @@
+../../Task/Apply-a-callback-to-an-array/Nemerle
\ No newline at end of file
diff --git a/Lang/Nemerle/Arbitrary-precision-integers--included- b/Lang/Nemerle/Arbitrary-precision-integers--included-
new file mode 120000
index 0000000000..5221ba65e7
--- /dev/null
+++ b/Lang/Nemerle/Arbitrary-precision-integers--included-
@@ -0,0 +1 @@
+../../Task/Arbitrary-precision-integers--included-/Nemerle
\ No newline at end of file
diff --git a/Lang/Nemerle/Arithmetic-Complex b/Lang/Nemerle/Arithmetic-Complex
new file mode 120000
index 0000000000..292d556b4f
--- /dev/null
+++ b/Lang/Nemerle/Arithmetic-Complex
@@ -0,0 +1 @@
+../../Task/Arithmetic-Complex/Nemerle
\ No newline at end of file
diff --git a/Lang/Nemerle/Assertions b/Lang/Nemerle/Assertions
new file mode 120000
index 0000000000..bc45deb164
--- /dev/null
+++ b/Lang/Nemerle/Assertions
@@ -0,0 +1 @@
+../../Task/Assertions/Nemerle
\ No newline at end of file
diff --git a/Lang/Nemerle/Call-a-function b/Lang/Nemerle/Call-a-function
new file mode 120000
index 0000000000..98a7dee100
--- /dev/null
+++ b/Lang/Nemerle/Call-a-function
@@ -0,0 +1 @@
+../../Task/Call-a-function/Nemerle
\ No newline at end of file
diff --git a/Lang/Nemerle/Call-an-object-method b/Lang/Nemerle/Call-an-object-method
new file mode 120000
index 0000000000..7f676681f5
--- /dev/null
+++ b/Lang/Nemerle/Call-an-object-method
@@ -0,0 +1 @@
+../../Task/Call-an-object-method/Nemerle
\ No newline at end of file
diff --git a/Lang/Nemerle/Check-that-file-exists b/Lang/Nemerle/Check-that-file-exists
new file mode 120000
index 0000000000..d31ababc46
--- /dev/null
+++ b/Lang/Nemerle/Check-that-file-exists
@@ -0,0 +1 @@
+../../Task/Check-that-file-exists/Nemerle
\ No newline at end of file
diff --git a/Lang/Nemerle/Classes b/Lang/Nemerle/Classes
new file mode 120000
index 0000000000..0322eaa2dc
--- /dev/null
+++ b/Lang/Nemerle/Classes
@@ -0,0 +1 @@
+../../Task/Classes/Nemerle
\ No newline at end of file
diff --git a/Lang/Nemerle/Command-line-arguments b/Lang/Nemerle/Command-line-arguments
new file mode 120000
index 0000000000..5b898a3c51
--- /dev/null
+++ b/Lang/Nemerle/Command-line-arguments
@@ -0,0 +1 @@
+../../Task/Command-line-arguments/Nemerle
\ No newline at end of file
diff --git a/Lang/Nemerle/Constrained-genericity b/Lang/Nemerle/Constrained-genericity
new file mode 120000
index 0000000000..d98691708f
--- /dev/null
+++ b/Lang/Nemerle/Constrained-genericity
@@ -0,0 +1 @@
+../../Task/Constrained-genericity/Nemerle
\ No newline at end of file
diff --git a/Lang/Nemerle/Count-occurrences-of-a-substring b/Lang/Nemerle/Count-occurrences-of-a-substring
new file mode 120000
index 0000000000..ec62a25607
--- /dev/null
+++ b/Lang/Nemerle/Count-occurrences-of-a-substring
@@ -0,0 +1 @@
+../../Task/Count-occurrences-of-a-substring/Nemerle
\ No newline at end of file
diff --git a/Lang/Nemerle/Create-a-file b/Lang/Nemerle/Create-a-file
new file mode 120000
index 0000000000..e4413d5b6e
--- /dev/null
+++ b/Lang/Nemerle/Create-a-file
@@ -0,0 +1 @@
+../../Task/Create-a-file/Nemerle
\ No newline at end of file
diff --git a/Lang/Nemerle/Delete-a-file b/Lang/Nemerle/Delete-a-file
new file mode 120000
index 0000000000..d1e44cda59
--- /dev/null
+++ b/Lang/Nemerle/Delete-a-file
@@ -0,0 +1 @@
+../../Task/Delete-a-file/Nemerle
\ No newline at end of file
diff --git a/Lang/Nemerle/Empty-directory b/Lang/Nemerle/Empty-directory
new file mode 120000
index 0000000000..4e0bc5627e
--- /dev/null
+++ b/Lang/Nemerle/Empty-directory
@@ -0,0 +1 @@
+../../Task/Empty-directory/Nemerle
\ No newline at end of file
diff --git a/Lang/Nemerle/Enumerations b/Lang/Nemerle/Enumerations
new file mode 120000
index 0000000000..aad722083f
--- /dev/null
+++ b/Lang/Nemerle/Enumerations
@@ -0,0 +1 @@
+../../Task/Enumerations/Nemerle
\ No newline at end of file
diff --git a/Lang/Nemerle/Exceptions b/Lang/Nemerle/Exceptions
new file mode 120000
index 0000000000..db69963d59
--- /dev/null
+++ b/Lang/Nemerle/Exceptions
@@ -0,0 +1 @@
+../../Task/Exceptions/Nemerle
\ No newline at end of file
diff --git a/Lang/Nemerle/Exceptions-Catch-an-exception-thrown-in-a-nested-call b/Lang/Nemerle/Exceptions-Catch-an-exception-thrown-in-a-nested-call
new file mode 120000
index 0000000000..b8d0c34211
--- /dev/null
+++ b/Lang/Nemerle/Exceptions-Catch-an-exception-thrown-in-a-nested-call
@@ -0,0 +1 @@
+../../Task/Exceptions-Catch-an-exception-thrown-in-a-nested-call/Nemerle
\ No newline at end of file
diff --git a/Lang/Nemerle/Exponentiation-operator b/Lang/Nemerle/Exponentiation-operator
new file mode 120000
index 0000000000..857fef9d27
--- /dev/null
+++ b/Lang/Nemerle/Exponentiation-operator
@@ -0,0 +1 @@
+../../Task/Exponentiation-operator/Nemerle
\ No newline at end of file
diff --git a/Lang/Nemerle/Function-definition b/Lang/Nemerle/Function-definition
new file mode 120000
index 0000000000..879a959a03
--- /dev/null
+++ b/Lang/Nemerle/Function-definition
@@ -0,0 +1 @@
+../../Task/Function-definition/Nemerle
\ No newline at end of file
diff --git a/Lang/Nemerle/Greatest-element-of-a-list b/Lang/Nemerle/Greatest-element-of-a-list
new file mode 120000
index 0000000000..dce4ed3765
--- /dev/null
+++ b/Lang/Nemerle/Greatest-element-of-a-list
@@ -0,0 +1 @@
+../../Task/Greatest-element-of-a-list/Nemerle
\ No newline at end of file
diff --git a/Lang/Nemerle/HTTP b/Lang/Nemerle/HTTP
new file mode 120000
index 0000000000..c723070a48
--- /dev/null
+++ b/Lang/Nemerle/HTTP
@@ -0,0 +1 @@
+../../Task/HTTP/Nemerle
\ No newline at end of file
diff --git a/Lang/Nemerle/HTTPS b/Lang/Nemerle/HTTPS
new file mode 120000
index 0000000000..ec984ec369
--- /dev/null
+++ b/Lang/Nemerle/HTTPS
@@ -0,0 +1 @@
+../../Task/HTTPS/Nemerle
\ No newline at end of file
diff --git a/Lang/Nemerle/Hello-world-Standard-error b/Lang/Nemerle/Hello-world-Standard-error
new file mode 120000
index 0000000000..defdb9aeef
--- /dev/null
+++ b/Lang/Nemerle/Hello-world-Standard-error
@@ -0,0 +1 @@
+../../Task/Hello-world-Standard-error/Nemerle
\ No newline at end of file
diff --git a/Lang/Nemerle/Include-a-file b/Lang/Nemerle/Include-a-file
new file mode 120000
index 0000000000..e9d03802e8
--- /dev/null
+++ b/Lang/Nemerle/Include-a-file
@@ -0,0 +1 @@
+../../Task/Include-a-file/Nemerle
\ No newline at end of file
diff --git a/Lang/Nemerle/Inheritance-Multiple b/Lang/Nemerle/Inheritance-Multiple
new file mode 120000
index 0000000000..6e0b3d533c
--- /dev/null
+++ b/Lang/Nemerle/Inheritance-Multiple
@@ -0,0 +1 @@
+../../Task/Inheritance-Multiple/Nemerle
\ No newline at end of file
diff --git a/Lang/Nemerle/Inheritance-Single b/Lang/Nemerle/Inheritance-Single
new file mode 120000
index 0000000000..cd02e6a1d0
--- /dev/null
+++ b/Lang/Nemerle/Inheritance-Single
@@ -0,0 +1 @@
+../../Task/Inheritance-Single/Nemerle
\ No newline at end of file
diff --git a/Lang/Nemerle/Leap-year b/Lang/Nemerle/Leap-year
new file mode 120000
index 0000000000..9b6f871dbc
--- /dev/null
+++ b/Lang/Nemerle/Leap-year
@@ -0,0 +1 @@
+../../Task/Leap-year/Nemerle
\ No newline at end of file
diff --git a/Lang/Nemerle/Literals-Integer b/Lang/Nemerle/Literals-Integer
new file mode 120000
index 0000000000..73605a3294
--- /dev/null
+++ b/Lang/Nemerle/Literals-Integer
@@ -0,0 +1 @@
+../../Task/Literals-Integer/Nemerle
\ No newline at end of file
diff --git a/Lang/Nemerle/Literals-String b/Lang/Nemerle/Literals-String
new file mode 120000
index 0000000000..3f682d4989
--- /dev/null
+++ b/Lang/Nemerle/Literals-String
@@ -0,0 +1 @@
+../../Task/Literals-String/Nemerle
\ No newline at end of file
diff --git a/Lang/Nemerle/Program-name b/Lang/Nemerle/Program-name
new file mode 120000
index 0000000000..d4b0429eb9
--- /dev/null
+++ b/Lang/Nemerle/Program-name
@@ -0,0 +1 @@
+../../Task/Program-name/Nemerle
\ No newline at end of file
diff --git a/Lang/Nemerle/Program-termination b/Lang/Nemerle/Program-termination
new file mode 120000
index 0000000000..f62e3d5bfe
--- /dev/null
+++ b/Lang/Nemerle/Program-termination
@@ -0,0 +1 @@
+../../Task/Program-termination/Nemerle
\ No newline at end of file
diff --git a/Lang/Nemerle/Queue-Usage b/Lang/Nemerle/Queue-Usage
new file mode 120000
index 0000000000..a809563a0d
--- /dev/null
+++ b/Lang/Nemerle/Queue-Usage
@@ -0,0 +1 @@
+../../Task/Queue-Usage/Nemerle
\ No newline at end of file
diff --git a/Lang/Nemerle/Repeat-a-string b/Lang/Nemerle/Repeat-a-string
new file mode 120000
index 0000000000..d16eccffda
--- /dev/null
+++ b/Lang/Nemerle/Repeat-a-string
@@ -0,0 +1 @@
+../../Task/Repeat-a-string/Nemerle
\ No newline at end of file
diff --git a/Lang/Nemerle/Return-multiple-values b/Lang/Nemerle/Return-multiple-values
new file mode 120000
index 0000000000..03d3dbb46e
--- /dev/null
+++ b/Lang/Nemerle/Return-multiple-values
@@ -0,0 +1 @@
+../../Task/Return-multiple-values/Nemerle
\ No newline at end of file
diff --git a/Lang/Nemerle/Set b/Lang/Nemerle/Set
new file mode 120000
index 0000000000..40763fd568
--- /dev/null
+++ b/Lang/Nemerle/Set
@@ -0,0 +1 @@
+../../Task/Set/Nemerle
\ No newline at end of file
diff --git a/Lang/Nemerle/Sleep b/Lang/Nemerle/Sleep
new file mode 120000
index 0000000000..1a638e108e
--- /dev/null
+++ b/Lang/Nemerle/Sleep
@@ -0,0 +1 @@
+../../Task/Sleep/Nemerle
\ No newline at end of file
diff --git a/Lang/Nemerle/Sort-an-integer-array b/Lang/Nemerle/Sort-an-integer-array
new file mode 120000
index 0000000000..c6181b5952
--- /dev/null
+++ b/Lang/Nemerle/Sort-an-integer-array
@@ -0,0 +1 @@
+../../Task/Sort-an-integer-array/Nemerle
\ No newline at end of file
diff --git a/Lang/Nemerle/Sort-using-a-custom-comparator b/Lang/Nemerle/Sort-using-a-custom-comparator
new file mode 120000
index 0000000000..f9c1a35dbc
--- /dev/null
+++ b/Lang/Nemerle/Sort-using-a-custom-comparator
@@ -0,0 +1 @@
+../../Task/Sort-using-a-custom-comparator/Nemerle
\ No newline at end of file
diff --git a/Lang/Nemerle/Sorting-algorithms-Merge-sort b/Lang/Nemerle/Sorting-algorithms-Merge-sort
new file mode 120000
index 0000000000..b2d357131c
--- /dev/null
+++ b/Lang/Nemerle/Sorting-algorithms-Merge-sort
@@ -0,0 +1 @@
+../../Task/Sorting-algorithms-Merge-sort/Nemerle
\ No newline at end of file
diff --git a/Lang/Nemerle/Stack b/Lang/Nemerle/Stack
new file mode 120000
index 0000000000..8771edd6e1
--- /dev/null
+++ b/Lang/Nemerle/Stack
@@ -0,0 +1 @@
+../../Task/Stack/Nemerle
\ No newline at end of file
diff --git a/Lang/Nemerle/System-time b/Lang/Nemerle/System-time
new file mode 120000
index 0000000000..4358261e7d
--- /dev/null
+++ b/Lang/Nemerle/System-time
@@ -0,0 +1 @@
+../../Task/System-time/Nemerle
\ No newline at end of file
diff --git a/Lang/Nemerle/Terminal-control-Clear-the-screen b/Lang/Nemerle/Terminal-control-Clear-the-screen
new file mode 120000
index 0000000000..289296980b
--- /dev/null
+++ b/Lang/Nemerle/Terminal-control-Clear-the-screen
@@ -0,0 +1 @@
+../../Task/Terminal-control-Clear-the-screen/Nemerle
\ No newline at end of file
diff --git a/Lang/Nemerle/Terminal-control-Hiding-the-cursor b/Lang/Nemerle/Terminal-control-Hiding-the-cursor
new file mode 120000
index 0000000000..440ddec683
--- /dev/null
+++ b/Lang/Nemerle/Terminal-control-Hiding-the-cursor
@@ -0,0 +1 @@
+../../Task/Terminal-control-Hiding-the-cursor/Nemerle
\ No newline at end of file
diff --git a/Lang/Nemerle/Terminal-control-Ringing-the-terminal-bell b/Lang/Nemerle/Terminal-control-Ringing-the-terminal-bell
new file mode 120000
index 0000000000..4202fee20f
--- /dev/null
+++ b/Lang/Nemerle/Terminal-control-Ringing-the-terminal-bell
@@ -0,0 +1 @@
+../../Task/Terminal-control-Ringing-the-terminal-bell/Nemerle
\ No newline at end of file
diff --git a/Lang/Nemerle/Terminal-control-Unicode-output b/Lang/Nemerle/Terminal-control-Unicode-output
new file mode 120000
index 0000000000..d7e0620d32
--- /dev/null
+++ b/Lang/Nemerle/Terminal-control-Unicode-output
@@ -0,0 +1 @@
+../../Task/Terminal-control-Unicode-output/Nemerle
\ No newline at end of file
diff --git a/Lang/Nemerle/Unicode-variable-names b/Lang/Nemerle/Unicode-variable-names
new file mode 120000
index 0000000000..83c5d835dd
--- /dev/null
+++ b/Lang/Nemerle/Unicode-variable-names
@@ -0,0 +1 @@
+../../Task/Unicode-variable-names/Nemerle
\ No newline at end of file
diff --git a/Lang/Nemerle/Variadic-function b/Lang/Nemerle/Variadic-function
new file mode 120000
index 0000000000..4e200aa1ca
--- /dev/null
+++ b/Lang/Nemerle/Variadic-function
@@ -0,0 +1 @@
+../../Task/Variadic-function/Nemerle
\ No newline at end of file
diff --git a/Lang/Nemerle/Walk-a-directory-Non-recursively b/Lang/Nemerle/Walk-a-directory-Non-recursively
new file mode 120000
index 0000000000..62eb78273c
--- /dev/null
+++ b/Lang/Nemerle/Walk-a-directory-Non-recursively
@@ -0,0 +1 @@
+../../Task/Walk-a-directory-Non-recursively/Nemerle
\ No newline at end of file
diff --git a/Lang/NetRexx/Anagrams b/Lang/NetRexx/Anagrams
new file mode 120000
index 0000000000..3f35bce385
--- /dev/null
+++ b/Lang/NetRexx/Anagrams
@@ -0,0 +1 @@
+../../Task/Anagrams/NetRexx
\ No newline at end of file
diff --git a/Lang/NetRexx/Check-that-file-exists b/Lang/NetRexx/Check-that-file-exists
new file mode 120000
index 0000000000..38901cc48b
--- /dev/null
+++ b/Lang/NetRexx/Check-that-file-exists
@@ -0,0 +1 @@
+../../Task/Check-that-file-exists/NetRexx
\ No newline at end of file
diff --git a/Lang/NetRexx/Delete-a-file b/Lang/NetRexx/Delete-a-file
new file mode 120000
index 0000000000..91706e8c6c
--- /dev/null
+++ b/Lang/NetRexx/Delete-a-file
@@ -0,0 +1 @@
+../../Task/Delete-a-file/NetRexx
\ No newline at end of file
diff --git a/Lang/NetRexx/Equilibrium-index b/Lang/NetRexx/Equilibrium-index
new file mode 120000
index 0000000000..57a2c23baf
--- /dev/null
+++ b/Lang/NetRexx/Equilibrium-index
@@ -0,0 +1 @@
+../../Task/Equilibrium-index/NetRexx
\ No newline at end of file
diff --git a/Lang/NetRexx/Execute-a-system-command b/Lang/NetRexx/Execute-a-system-command
new file mode 120000
index 0000000000..bc76aa0be3
--- /dev/null
+++ b/Lang/NetRexx/Execute-a-system-command
@@ -0,0 +1 @@
+../../Task/Execute-a-system-command/NetRexx
\ No newline at end of file
diff --git a/Lang/NetRexx/File-size b/Lang/NetRexx/File-size
new file mode 120000
index 0000000000..307ffd3fa7
--- /dev/null
+++ b/Lang/NetRexx/File-size
@@ -0,0 +1 @@
+../../Task/File-size/NetRexx
\ No newline at end of file
diff --git a/Lang/NetRexx/Fork b/Lang/NetRexx/Fork
new file mode 120000
index 0000000000..84a42d8e0d
--- /dev/null
+++ b/Lang/NetRexx/Fork
@@ -0,0 +1 @@
+../../Task/Fork/NetRexx
\ No newline at end of file
diff --git a/Lang/NetRexx/Generic-swap b/Lang/NetRexx/Generic-swap
new file mode 120000
index 0000000000..eeace96e14
--- /dev/null
+++ b/Lang/NetRexx/Generic-swap
@@ -0,0 +1 @@
+../../Task/Generic-swap/NetRexx
\ No newline at end of file
diff --git a/Lang/NetRexx/Guess-the-number-With-feedback b/Lang/NetRexx/Guess-the-number-With-feedback
new file mode 120000
index 0000000000..b00bb9649f
--- /dev/null
+++ b/Lang/NetRexx/Guess-the-number-With-feedback
@@ -0,0 +1 @@
+../../Task/Guess-the-number-With-feedback/NetRexx
\ No newline at end of file
diff --git a/Lang/NetRexx/Identity-matrix b/Lang/NetRexx/Identity-matrix
new file mode 120000
index 0000000000..2525ca1bd4
--- /dev/null
+++ b/Lang/NetRexx/Identity-matrix
@@ -0,0 +1 @@
+../../Task/Identity-matrix/NetRexx
\ No newline at end of file
diff --git a/Lang/NetRexx/Inheritance-Multiple b/Lang/NetRexx/Inheritance-Multiple
new file mode 120000
index 0000000000..3e29ad6ada
--- /dev/null
+++ b/Lang/NetRexx/Inheritance-Multiple
@@ -0,0 +1 @@
+../../Task/Inheritance-Multiple/NetRexx
\ No newline at end of file
diff --git a/Lang/NetRexx/Inheritance-Single b/Lang/NetRexx/Inheritance-Single
new file mode 120000
index 0000000000..83db509e7e
--- /dev/null
+++ b/Lang/NetRexx/Inheritance-Single
@@ -0,0 +1 @@
+../../Task/Inheritance-Single/NetRexx
\ No newline at end of file
diff --git a/Lang/NetRexx/Introspection b/Lang/NetRexx/Introspection
new file mode 120000
index 0000000000..f0818bce7d
--- /dev/null
+++ b/Lang/NetRexx/Introspection
@@ -0,0 +1 @@
+../../Task/Introspection/NetRexx
\ No newline at end of file
diff --git a/Lang/NetRexx/Largest-int-from-concatenated-ints b/Lang/NetRexx/Largest-int-from-concatenated-ints
new file mode 120000
index 0000000000..7e2d614378
--- /dev/null
+++ b/Lang/NetRexx/Largest-int-from-concatenated-ints
@@ -0,0 +1 @@
+../../Task/Largest-int-from-concatenated-ints/NetRexx
\ No newline at end of file
diff --git a/Lang/NetRexx/Last-Friday-of-each-month b/Lang/NetRexx/Last-Friday-of-each-month
new file mode 120000
index 0000000000..06c1a3d0bd
--- /dev/null
+++ b/Lang/NetRexx/Last-Friday-of-each-month
@@ -0,0 +1 @@
+../../Task/Last-Friday-of-each-month/NetRexx
\ No newline at end of file
diff --git a/Lang/NetRexx/Long-multiplication b/Lang/NetRexx/Long-multiplication
new file mode 120000
index 0000000000..f54fa43302
--- /dev/null
+++ b/Lang/NetRexx/Long-multiplication
@@ -0,0 +1 @@
+../../Task/Long-multiplication/NetRexx
\ No newline at end of file
diff --git a/Lang/NetRexx/Monty-Hall-problem b/Lang/NetRexx/Monty-Hall-problem
new file mode 120000
index 0000000000..fed0cb7e95
--- /dev/null
+++ b/Lang/NetRexx/Monty-Hall-problem
@@ -0,0 +1 @@
+../../Task/Monty-Hall-problem/NetRexx
\ No newline at end of file
diff --git a/Lang/NetRexx/Pascals-triangle b/Lang/NetRexx/Pascals-triangle
new file mode 120000
index 0000000000..265d19a241
--- /dev/null
+++ b/Lang/NetRexx/Pascals-triangle
@@ -0,0 +1 @@
+../../Task/Pascals-triangle/NetRexx
\ No newline at end of file
diff --git a/Lang/NetRexx/Price-fraction b/Lang/NetRexx/Price-fraction
new file mode 120000
index 0000000000..ad0a92d60f
--- /dev/null
+++ b/Lang/NetRexx/Price-fraction
@@ -0,0 +1 @@
+../../Task/Price-fraction/NetRexx
\ No newline at end of file
diff --git a/Lang/NetRexx/Rename-a-file b/Lang/NetRexx/Rename-a-file
new file mode 120000
index 0000000000..2f7ac1a566
--- /dev/null
+++ b/Lang/NetRexx/Rename-a-file
@@ -0,0 +1 @@
+../../Task/Rename-a-file/NetRexx
\ No newline at end of file
diff --git a/Lang/NetRexx/Secure-temporary-file b/Lang/NetRexx/Secure-temporary-file
new file mode 120000
index 0000000000..01aa6ca7d0
--- /dev/null
+++ b/Lang/NetRexx/Secure-temporary-file
@@ -0,0 +1 @@
+../../Task/Secure-temporary-file/NetRexx
\ No newline at end of file
diff --git a/Lang/NetRexx/Sierpinski-carpet b/Lang/NetRexx/Sierpinski-carpet
new file mode 120000
index 0000000000..3509488a4d
--- /dev/null
+++ b/Lang/NetRexx/Sierpinski-carpet
@@ -0,0 +1 @@
+../../Task/Sierpinski-carpet/NetRexx
\ No newline at end of file
diff --git a/Lang/NetRexx/Sierpinski-triangle b/Lang/NetRexx/Sierpinski-triangle
new file mode 120000
index 0000000000..00ed55b3ec
--- /dev/null
+++ b/Lang/NetRexx/Sierpinski-triangle
@@ -0,0 +1 @@
+../../Task/Sierpinski-triangle/NetRexx
\ No newline at end of file
diff --git a/Lang/NetRexx/Sort-disjoint-sublist b/Lang/NetRexx/Sort-disjoint-sublist
new file mode 120000
index 0000000000..3a3350faed
--- /dev/null
+++ b/Lang/NetRexx/Sort-disjoint-sublist
@@ -0,0 +1 @@
+../../Task/Sort-disjoint-sublist/NetRexx
\ No newline at end of file
diff --git a/Lang/NetRexx/Stack b/Lang/NetRexx/Stack
new file mode 120000
index 0000000000..e2ce3fa7ac
--- /dev/null
+++ b/Lang/NetRexx/Stack
@@ -0,0 +1 @@
+../../Task/Stack/NetRexx
\ No newline at end of file
diff --git a/Lang/NetRexx/Substring-Top-and-tail b/Lang/NetRexx/Substring-Top-and-tail
new file mode 120000
index 0000000000..6f2e4319c3
--- /dev/null
+++ b/Lang/NetRexx/Substring-Top-and-tail
@@ -0,0 +1 @@
+../../Task/Substring-Top-and-tail/NetRexx
\ No newline at end of file
diff --git a/Lang/NetRexx/Temperature-conversion b/Lang/NetRexx/Temperature-conversion
new file mode 120000
index 0000000000..c4f2c468fc
--- /dev/null
+++ b/Lang/NetRexx/Temperature-conversion
@@ -0,0 +1 @@
+../../Task/Temperature-conversion/NetRexx
\ No newline at end of file
diff --git a/Lang/NetRexx/Walk-a-directory-Non-recursively b/Lang/NetRexx/Walk-a-directory-Non-recursively
new file mode 120000
index 0000000000..a916fbde42
--- /dev/null
+++ b/Lang/NetRexx/Walk-a-directory-Non-recursively
@@ -0,0 +1 @@
+../../Task/Walk-a-directory-Non-recursively/NetRexx
\ No newline at end of file
diff --git a/Lang/NetRexx/Word-wrap b/Lang/NetRexx/Word-wrap
new file mode 120000
index 0000000000..b8d693e6b3
--- /dev/null
+++ b/Lang/NetRexx/Word-wrap
@@ -0,0 +1 @@
+../../Task/Word-wrap/NetRexx
\ No newline at end of file
diff --git a/Lang/Nimrod/Fork b/Lang/Nimrod/Fork
new file mode 120000
index 0000000000..20ce113a50
--- /dev/null
+++ b/Lang/Nimrod/Fork
@@ -0,0 +1 @@
+../../Task/Fork/Nimrod
\ No newline at end of file
diff --git a/Lang/Nimrod/GUI-Maximum-window-dimensions b/Lang/Nimrod/GUI-Maximum-window-dimensions
new file mode 120000
index 0000000000..a92c706e9e
--- /dev/null
+++ b/Lang/Nimrod/GUI-Maximum-window-dimensions
@@ -0,0 +1 @@
+../../Task/GUI-Maximum-window-dimensions/Nimrod
\ No newline at end of file
diff --git a/Lang/Nimrod/GUI-component-interaction b/Lang/Nimrod/GUI-component-interaction
new file mode 120000
index 0000000000..28ebd48db7
--- /dev/null
+++ b/Lang/Nimrod/GUI-component-interaction
@@ -0,0 +1 @@
+../../Task/GUI-component-interaction/Nimrod
\ No newline at end of file
diff --git a/Lang/Nimrod/GUI-enabling-disabling-of-controls b/Lang/Nimrod/GUI-enabling-disabling-of-controls
new file mode 120000
index 0000000000..97065feb78
--- /dev/null
+++ b/Lang/Nimrod/GUI-enabling-disabling-of-controls
@@ -0,0 +1 @@
+../../Task/GUI-enabling-disabling-of-controls/Nimrod
\ No newline at end of file
diff --git a/Lang/Nimrod/Greatest-common-divisor b/Lang/Nimrod/Greatest-common-divisor
new file mode 120000
index 0000000000..eae079a612
--- /dev/null
+++ b/Lang/Nimrod/Greatest-common-divisor
@@ -0,0 +1 @@
+../../Task/Greatest-common-divisor/Nimrod
\ No newline at end of file
diff --git a/Lang/Nimrod/Greatest-element-of-a-list b/Lang/Nimrod/Greatest-element-of-a-list
new file mode 120000
index 0000000000..2637ddf4ef
--- /dev/null
+++ b/Lang/Nimrod/Greatest-element-of-a-list
@@ -0,0 +1 @@
+../../Task/Greatest-element-of-a-list/Nimrod
\ No newline at end of file
diff --git a/Lang/Nimrod/Loops-Downward-for b/Lang/Nimrod/Loops-Downward-for
new file mode 120000
index 0000000000..3de09308a4
--- /dev/null
+++ b/Lang/Nimrod/Loops-Downward-for
@@ -0,0 +1 @@
+../../Task/Loops-Downward-for/Nimrod
\ No newline at end of file
diff --git a/Lang/Nimrod/Loops-For-with-a-specified-step b/Lang/Nimrod/Loops-For-with-a-specified-step
new file mode 120000
index 0000000000..6c1de334d7
--- /dev/null
+++ b/Lang/Nimrod/Loops-For-with-a-specified-step
@@ -0,0 +1 @@
+../../Task/Loops-For-with-a-specified-step/Nimrod
\ No newline at end of file
diff --git a/Lang/Nimrod/Loops-Nested b/Lang/Nimrod/Loops-Nested
new file mode 120000
index 0000000000..c1983d776d
--- /dev/null
+++ b/Lang/Nimrod/Loops-Nested
@@ -0,0 +1 @@
+../../Task/Loops-Nested/Nimrod
\ No newline at end of file
diff --git a/Lang/Nimrod/Pascals-triangle-Puzzle b/Lang/Nimrod/Pascals-triangle-Puzzle
new file mode 120000
index 0000000000..322268d569
--- /dev/null
+++ b/Lang/Nimrod/Pascals-triangle-Puzzle
@@ -0,0 +1 @@
+../../Task/Pascals-triangle-Puzzle/Nimrod
\ No newline at end of file
diff --git a/Lang/Nimrod/Price-fraction b/Lang/Nimrod/Price-fraction
new file mode 120000
index 0000000000..3554aba03b
--- /dev/null
+++ b/Lang/Nimrod/Price-fraction
@@ -0,0 +1 @@
+../../Task/Price-fraction/Nimrod
\ No newline at end of file
diff --git a/Lang/Nimrod/Prime-decomposition b/Lang/Nimrod/Prime-decomposition
new file mode 120000
index 0000000000..a9610bcf46
--- /dev/null
+++ b/Lang/Nimrod/Prime-decomposition
@@ -0,0 +1 @@
+../../Task/Prime-decomposition/Nimrod
\ No newline at end of file
diff --git a/Lang/Nimrod/Probabilistic-choice b/Lang/Nimrod/Probabilistic-choice
new file mode 120000
index 0000000000..9cfae6f545
--- /dev/null
+++ b/Lang/Nimrod/Probabilistic-choice
@@ -0,0 +1 @@
+../../Task/Probabilistic-choice/Nimrod
\ No newline at end of file
diff --git a/Lang/Nimrod/Queue-Definition b/Lang/Nimrod/Queue-Definition
new file mode 120000
index 0000000000..518190987a
--- /dev/null
+++ b/Lang/Nimrod/Queue-Definition
@@ -0,0 +1 @@
+../../Task/Queue-Definition/Nimrod
\ No newline at end of file
diff --git a/Lang/Nimrod/Queue-Usage b/Lang/Nimrod/Queue-Usage
new file mode 120000
index 0000000000..cc94319545
--- /dev/null
+++ b/Lang/Nimrod/Queue-Usage
@@ -0,0 +1 @@
+../../Task/Queue-Usage/Nimrod
\ No newline at end of file
diff --git a/Lang/Nimrod/Random-numbers b/Lang/Nimrod/Random-numbers
new file mode 120000
index 0000000000..06065934af
--- /dev/null
+++ b/Lang/Nimrod/Random-numbers
@@ -0,0 +1 @@
+../../Task/Random-numbers/Nimrod
\ No newline at end of file
diff --git a/Lang/Nimrod/Sieve-of-Eratosthenes b/Lang/Nimrod/Sieve-of-Eratosthenes
new file mode 120000
index 0000000000..1297795e4f
--- /dev/null
+++ b/Lang/Nimrod/Sieve-of-Eratosthenes
@@ -0,0 +1 @@
+../../Task/Sieve-of-Eratosthenes/Nimrod
\ No newline at end of file
diff --git a/Lang/Nimrod/Solve-a-Hidato-puzzle b/Lang/Nimrod/Solve-a-Hidato-puzzle
new file mode 120000
index 0000000000..d61aa04fa9
--- /dev/null
+++ b/Lang/Nimrod/Solve-a-Hidato-puzzle
@@ -0,0 +1 @@
+../../Task/Solve-a-Hidato-puzzle/Nimrod
\ No newline at end of file
diff --git a/Lang/Nimrod/Sort-an-integer-array b/Lang/Nimrod/Sort-an-integer-array
new file mode 120000
index 0000000000..42bb935745
--- /dev/null
+++ b/Lang/Nimrod/Sort-an-integer-array
@@ -0,0 +1 @@
+../../Task/Sort-an-integer-array/Nimrod
\ No newline at end of file
diff --git a/Lang/Nimrod/String-case b/Lang/Nimrod/String-case
new file mode 120000
index 0000000000..fece91f339
--- /dev/null
+++ b/Lang/Nimrod/String-case
@@ -0,0 +1 @@
+../../Task/String-case/Nimrod
\ No newline at end of file
diff --git a/Lang/Nimrod/String-comparison b/Lang/Nimrod/String-comparison
new file mode 120000
index 0000000000..4c24a06e67
--- /dev/null
+++ b/Lang/Nimrod/String-comparison
@@ -0,0 +1 @@
+../../Task/String-comparison/Nimrod
\ No newline at end of file
diff --git a/Lang/Nimrod/String-interpolation--included- b/Lang/Nimrod/String-interpolation--included-
new file mode 120000
index 0000000000..b743264085
--- /dev/null
+++ b/Lang/Nimrod/String-interpolation--included-
@@ -0,0 +1 @@
+../../Task/String-interpolation--included-/Nimrod
\ No newline at end of file
diff --git a/Lang/Nimrod/String-length b/Lang/Nimrod/String-length
new file mode 120000
index 0000000000..0f5b919049
--- /dev/null
+++ b/Lang/Nimrod/String-length
@@ -0,0 +1 @@
+../../Task/String-length/Nimrod
\ No newline at end of file
diff --git a/Lang/Nimrod/Strip-a-set-of-characters-from-a-string b/Lang/Nimrod/Strip-a-set-of-characters-from-a-string
new file mode 120000
index 0000000000..9d96b47c83
--- /dev/null
+++ b/Lang/Nimrod/Strip-a-set-of-characters-from-a-string
@@ -0,0 +1 @@
+../../Task/Strip-a-set-of-characters-from-a-string/Nimrod
\ No newline at end of file
diff --git a/Lang/Nimrod/Substring-Top-and-tail b/Lang/Nimrod/Substring-Top-and-tail
new file mode 120000
index 0000000000..d68fc8afd3
--- /dev/null
+++ b/Lang/Nimrod/Substring-Top-and-tail
@@ -0,0 +1 @@
+../../Task/Substring-Top-and-tail/Nimrod
\ No newline at end of file
diff --git a/Lang/Nimrod/System-time b/Lang/Nimrod/System-time
new file mode 120000
index 0000000000..0728bd97dd
--- /dev/null
+++ b/Lang/Nimrod/System-time
@@ -0,0 +1 @@
+../../Task/System-time/Nimrod
\ No newline at end of file
diff --git a/Lang/Nimrod/Window-creation b/Lang/Nimrod/Window-creation
new file mode 120000
index 0000000000..e14412a69c
--- /dev/null
+++ b/Lang/Nimrod/Window-creation
@@ -0,0 +1 @@
+../../Task/Window-creation/Nimrod
\ No newline at end of file
diff --git a/Lang/Nimrod/Window-management b/Lang/Nimrod/Window-management
new file mode 120000
index 0000000000..6489526dad
--- /dev/null
+++ b/Lang/Nimrod/Window-management
@@ -0,0 +1 @@
+../../Task/Window-management/Nimrod
\ No newline at end of file
diff --git a/Lang/Nimrod/Write-float-arrays-to-a-text-file b/Lang/Nimrod/Write-float-arrays-to-a-text-file
new file mode 120000
index 0000000000..5abd0f821c
--- /dev/null
+++ b/Lang/Nimrod/Write-float-arrays-to-a-text-file
@@ -0,0 +1 @@
+../../Task/Write-float-arrays-to-a-text-file/Nimrod
\ No newline at end of file
diff --git a/Lang/OCaml/Euler-method b/Lang/OCaml/Euler-method
new file mode 120000
index 0000000000..f41b211f5a
--- /dev/null
+++ b/Lang/OCaml/Euler-method
@@ -0,0 +1 @@
+../../Task/Euler-method/OCaml
\ No newline at end of file
diff --git a/Lang/OCaml/Execute-a-Markov-algorithm b/Lang/OCaml/Execute-a-Markov-algorithm
new file mode 120000
index 0000000000..51144b5d83
--- /dev/null
+++ b/Lang/OCaml/Execute-a-Markov-algorithm
@@ -0,0 +1 @@
+../../Task/Execute-a-Markov-algorithm/OCaml
\ No newline at end of file
diff --git a/Lang/OCaml/Haversine-formula b/Lang/OCaml/Haversine-formula
new file mode 120000
index 0000000000..2e49855fd7
--- /dev/null
+++ b/Lang/OCaml/Haversine-formula
@@ -0,0 +1 @@
+../../Task/Haversine-formula/OCaml
\ No newline at end of file
diff --git a/Lang/OCaml/Parsing-RPN-calculator-algorithm b/Lang/OCaml/Parsing-RPN-calculator-algorithm
new file mode 120000
index 0000000000..3d33539b60
--- /dev/null
+++ b/Lang/OCaml/Parsing-RPN-calculator-algorithm
@@ -0,0 +1 @@
+../../Task/Parsing-RPN-calculator-algorithm/OCaml
\ No newline at end of file
diff --git a/Lang/Oberon-2/Arithmetic-Complex b/Lang/Oberon-2/Arithmetic-Complex
new file mode 120000
index 0000000000..20cdfb3f2e
--- /dev/null
+++ b/Lang/Oberon-2/Arithmetic-Complex
@@ -0,0 +1 @@
+../../Task/Arithmetic-Complex/Oberon-2
\ No newline at end of file
diff --git a/Lang/Oberon-2/Arithmetic-Integer b/Lang/Oberon-2/Arithmetic-Integer
new file mode 120000
index 0000000000..5ae8619d3c
--- /dev/null
+++ b/Lang/Oberon-2/Arithmetic-Integer
@@ -0,0 +1 @@
+../../Task/Arithmetic-Integer/Oberon-2
\ No newline at end of file
diff --git a/Lang/Objeck/Anagrams b/Lang/Objeck/Anagrams
new file mode 120000
index 0000000000..f234ad969e
--- /dev/null
+++ b/Lang/Objeck/Anagrams
@@ -0,0 +1 @@
+../../Task/Anagrams/Objeck
\ No newline at end of file
diff --git a/Lang/Objeck/Create-an-HTML-table b/Lang/Objeck/Create-an-HTML-table
new file mode 120000
index 0000000000..65e8ffbf5f
--- /dev/null
+++ b/Lang/Objeck/Create-an-HTML-table
@@ -0,0 +1 @@
+../../Task/Create-an-HTML-table/Objeck
\ No newline at end of file
diff --git a/Lang/Objeck/Exponentiation-operator b/Lang/Objeck/Exponentiation-operator
new file mode 120000
index 0000000000..638d12a447
--- /dev/null
+++ b/Lang/Objeck/Exponentiation-operator
@@ -0,0 +1 @@
+../../Task/Exponentiation-operator/Objeck
\ No newline at end of file
diff --git a/Lang/Objeck/Horizontal-sundial-calculations b/Lang/Objeck/Horizontal-sundial-calculations
new file mode 120000
index 0000000000..e278fbd43d
--- /dev/null
+++ b/Lang/Objeck/Horizontal-sundial-calculations
@@ -0,0 +1 @@
+../../Task/Horizontal-sundial-calculations/Objeck
\ No newline at end of file
diff --git a/Lang/Objeck/LZW-compression b/Lang/Objeck/LZW-compression
new file mode 120000
index 0000000000..da1a0fee6b
--- /dev/null
+++ b/Lang/Objeck/LZW-compression
@@ -0,0 +1 @@
+../../Task/LZW-compression/Objeck
\ No newline at end of file
diff --git a/Lang/Objeck/Run-length-encoding b/Lang/Objeck/Run-length-encoding
new file mode 120000
index 0000000000..ad444bd5dc
--- /dev/null
+++ b/Lang/Objeck/Run-length-encoding
@@ -0,0 +1 @@
+../../Task/Run-length-encoding/Objeck
\ No newline at end of file
diff --git a/Lang/Objeck/Unicode-variable-names b/Lang/Objeck/Unicode-variable-names
new file mode 120000
index 0000000000..909e825965
--- /dev/null
+++ b/Lang/Objeck/Unicode-variable-names
@@ -0,0 +1 @@
+../../Task/Unicode-variable-names/Objeck
\ No newline at end of file
diff --git a/Lang/Octave/Guess-the-number-With-feedback b/Lang/Octave/Guess-the-number-With-feedback
new file mode 120000
index 0000000000..051598b6bc
--- /dev/null
+++ b/Lang/Octave/Guess-the-number-With-feedback
@@ -0,0 +1 @@
+../../Task/Guess-the-number-With-feedback/Octave
\ No newline at end of file
diff --git a/Lang/Octave/Shell-one-liner b/Lang/Octave/Shell-one-liner
new file mode 120000
index 0000000000..e2bf76c9bf
--- /dev/null
+++ b/Lang/Octave/Shell-one-liner
@@ -0,0 +1 @@
+../../Task/Shell-one-liner/Octave
\ No newline at end of file
diff --git a/Lang/OoRexx/Increment-a-numerical-string b/Lang/OoRexx/Increment-a-numerical-string
new file mode 120000
index 0000000000..fed8647533
--- /dev/null
+++ b/Lang/OoRexx/Increment-a-numerical-string
@@ -0,0 +1 @@
+../../Task/Increment-a-numerical-string/OoRexx
\ No newline at end of file
diff --git a/Lang/OpenEdge-Progress/Function-definition b/Lang/OpenEdge-Progress/Function-definition
new file mode 120000
index 0000000000..5e935bf2c4
--- /dev/null
+++ b/Lang/OpenEdge-Progress/Function-definition
@@ -0,0 +1 @@
+../../Task/Function-definition/OpenEdge-Progress
\ No newline at end of file
diff --git a/Lang/PARI-GP/00DESCRIPTION b/Lang/PARI-GP/00DESCRIPTION
index c5f2aa155e..bf445db178 100644
--- a/Lang/PARI-GP/00DESCRIPTION
+++ b/Lang/PARI-GP/00DESCRIPTION
@@ -22,12 +22,14 @@ PARI was written by Henri Cohen and others at Université Bordeaux I and is now
== Using PARI/GP ==
PARI/GP can be downloaded at its official website's [http://pari.math.u-bordeaux.fr/download.html download page].
-For Windows users there are precompiled binaries in four versions: full-featured binaries (slightly old) in both a stable and a development version, a more recent stable version without plotting and line-completion, and a similarly bare-bones build of the latest bleeding-edge version.
+For Windows users precompiled binaries are available: full-featured stable and development versions, plus a nightly build with the very latest changes.
Mac users may find it convenient to download the version from [http://pdb.finkproject.org/pdb/package.php/pari-gp Fink].
Linux users can install PARI/GP with their favorite package manager (RPM, dpkg, apt, etc.) or build it from source. [http://math.crg4.com/software.html#pari Instructions] are available for compiling.
+[https://code.google.com/p/paridroid/ paridroid] is a port to Android tablets and phones. While an iPhone/iPad version has not been developed, [https://itunes.apple.com/us/app/sage-math/id496492945?mt=8 sage-math] includes PARI and GP commands can be involved with the wrapper function pari.
+
== Coding with PARI ==
The most common way to use PARI is through the gp calculator, using its own scripting language, GP. But there are other interfaces to PARI beside gp:
* [http://math.univ-lille1.fr/~ramare/ServeurPerso/GP-PARI/ PariEmacs]
diff --git a/Lang/PARI-GP/Modular-inverse b/Lang/PARI-GP/Modular-inverse
new file mode 120000
index 0000000000..86a735c62e
--- /dev/null
+++ b/Lang/PARI-GP/Modular-inverse
@@ -0,0 +1 @@
+../../Task/Modular-inverse/PARI-GP
\ No newline at end of file
diff --git a/Lang/PARI-GP/Non-continuous-subsequences b/Lang/PARI-GP/Non-continuous-subsequences
new file mode 120000
index 0000000000..120fa56c8b
--- /dev/null
+++ b/Lang/PARI-GP/Non-continuous-subsequences
@@ -0,0 +1 @@
+../../Task/Non-continuous-subsequences/PARI-GP
\ No newline at end of file
diff --git a/Lang/PARI-GP/Numeric-error-propagation b/Lang/PARI-GP/Numeric-error-propagation
new file mode 120000
index 0000000000..2a1e5faf47
--- /dev/null
+++ b/Lang/PARI-GP/Numeric-error-propagation
@@ -0,0 +1 @@
+../../Task/Numeric-error-propagation/PARI-GP
\ No newline at end of file
diff --git a/Lang/PARI-GP/Runtime-evaluation b/Lang/PARI-GP/Runtime-evaluation
new file mode 120000
index 0000000000..f5a5b9e063
--- /dev/null
+++ b/Lang/PARI-GP/Runtime-evaluation
@@ -0,0 +1 @@
+../../Task/Runtime-evaluation/PARI-GP
\ No newline at end of file
diff --git a/Lang/PARI-GP/Set-puzzle b/Lang/PARI-GP/Set-puzzle
new file mode 120000
index 0000000000..bffe757462
--- /dev/null
+++ b/Lang/PARI-GP/Set-puzzle
@@ -0,0 +1 @@
+../../Task/Set-puzzle/PARI-GP
\ No newline at end of file
diff --git a/Lang/PARI-GP/Vampire-number b/Lang/PARI-GP/Vampire-number
new file mode 120000
index 0000000000..fca137b9a0
--- /dev/null
+++ b/Lang/PARI-GP/Vampire-number
@@ -0,0 +1 @@
+../../Task/Vampire-number/PARI-GP
\ No newline at end of file
diff --git a/Lang/PARI-GP/Variadic-function b/Lang/PARI-GP/Variadic-function
new file mode 120000
index 0000000000..a74bd54474
--- /dev/null
+++ b/Lang/PARI-GP/Variadic-function
@@ -0,0 +1 @@
+../../Task/Variadic-function/PARI-GP
\ No newline at end of file
diff --git a/Lang/PDP-11-Assembly/Execute-a-system-command b/Lang/PDP-11-Assembly/Execute-a-system-command
new file mode 120000
index 0000000000..503b6d8ece
--- /dev/null
+++ b/Lang/PDP-11-Assembly/Execute-a-system-command
@@ -0,0 +1 @@
+../../Task/Execute-a-system-command/PDP-11-Assembly
\ No newline at end of file
diff --git a/Lang/PHP/Averages-Mean-angle b/Lang/PHP/Averages-Mean-angle
new file mode 120000
index 0000000000..fe2a23c28e
--- /dev/null
+++ b/Lang/PHP/Averages-Mean-angle
@@ -0,0 +1 @@
+../../Task/Averages-Mean-angle/PHP
\ No newline at end of file
diff --git a/Lang/PHP/CSV-to-HTML-translation b/Lang/PHP/CSV-to-HTML-translation
new file mode 120000
index 0000000000..0269899813
--- /dev/null
+++ b/Lang/PHP/CSV-to-HTML-translation
@@ -0,0 +1 @@
+../../Task/CSV-to-HTML-translation/PHP
\ No newline at end of file
diff --git a/Lang/PHP/Evolutionary-algorithm b/Lang/PHP/Evolutionary-algorithm
new file mode 120000
index 0000000000..c873cfbb4a
--- /dev/null
+++ b/Lang/PHP/Evolutionary-algorithm
@@ -0,0 +1 @@
+../../Task/Evolutionary-algorithm/PHP
\ No newline at end of file
diff --git a/Lang/PHP/Floyds-triangle b/Lang/PHP/Floyds-triangle
new file mode 120000
index 0000000000..7ac6898e24
--- /dev/null
+++ b/Lang/PHP/Floyds-triangle
@@ -0,0 +1 @@
+../../Task/Floyds-triangle/PHP
\ No newline at end of file
diff --git a/Lang/PHP/Gray-code b/Lang/PHP/Gray-code
new file mode 120000
index 0000000000..6832dff75c
--- /dev/null
+++ b/Lang/PHP/Gray-code
@@ -0,0 +1 @@
+../../Task/Gray-code/PHP
\ No newline at end of file
diff --git a/Lang/PHP/MD4 b/Lang/PHP/MD4
new file mode 120000
index 0000000000..524e8f9854
--- /dev/null
+++ b/Lang/PHP/MD4
@@ -0,0 +1 @@
+../../Task/MD4/PHP
\ No newline at end of file
diff --git a/Lang/PL-I/00DESCRIPTION b/Lang/PL-I/00DESCRIPTION
index 56ce676f29..fcaf6c6859 100644
--- a/Lang/PL-I/00DESCRIPTION
+++ b/Lang/PL-I/00DESCRIPTION
@@ -1,4 +1,6 @@
-{{stub}}{{language|PL/I}}
+{{stub}}
+{{language|PL/I
+|tags=pli}}
PL/I is a general purpose programming language suitable for commercial, scientific, non-scientific, and system programming.
diff --git a/Lang/PL-I/CRC-32 b/Lang/PL-I/CRC-32
new file mode 120000
index 0000000000..f4f08917e3
--- /dev/null
+++ b/Lang/PL-I/CRC-32
@@ -0,0 +1 @@
+../../Task/CRC-32/PL-I
\ No newline at end of file
diff --git a/Lang/PL-I/Check-that-file-exists b/Lang/PL-I/Check-that-file-exists
new file mode 120000
index 0000000000..b274d786fb
--- /dev/null
+++ b/Lang/PL-I/Check-that-file-exists
@@ -0,0 +1 @@
+../../Task/Check-that-file-exists/PL-I
\ No newline at end of file
diff --git a/Lang/PL-I/Generator-Exponential b/Lang/PL-I/Generator-Exponential
new file mode 120000
index 0000000000..43ae764f2b
--- /dev/null
+++ b/Lang/PL-I/Generator-Exponential
@@ -0,0 +1 @@
+../../Task/Generator-Exponential/PL-I
\ No newline at end of file
diff --git a/Lang/PL-I/Greatest-subsequential-sum b/Lang/PL-I/Greatest-subsequential-sum
new file mode 120000
index 0000000000..faf526f517
--- /dev/null
+++ b/Lang/PL-I/Greatest-subsequential-sum
@@ -0,0 +1 @@
+../../Task/Greatest-subsequential-sum/PL-I
\ No newline at end of file
diff --git a/Lang/PL-I/Harshad-or-Niven-series b/Lang/PL-I/Harshad-or-Niven-series
new file mode 120000
index 0000000000..c2e30b7486
--- /dev/null
+++ b/Lang/PL-I/Harshad-or-Niven-series
@@ -0,0 +1 @@
+../../Task/Harshad-or-Niven-series/PL-I
\ No newline at end of file
diff --git a/Lang/PL-I/Josephus-problem b/Lang/PL-I/Josephus-problem
new file mode 120000
index 0000000000..aa165d8ddc
--- /dev/null
+++ b/Lang/PL-I/Josephus-problem
@@ -0,0 +1 @@
+../../Task/Josephus-problem/PL-I
\ No newline at end of file
diff --git a/Lang/PL-I/Largest-int-from-concatenated-ints b/Lang/PL-I/Largest-int-from-concatenated-ints
new file mode 120000
index 0000000000..8b23384160
--- /dev/null
+++ b/Lang/PL-I/Largest-int-from-concatenated-ints
@@ -0,0 +1 @@
+../../Task/Largest-int-from-concatenated-ints/PL-I
\ No newline at end of file
diff --git a/Lang/PL-I/Least-common-multiple b/Lang/PL-I/Least-common-multiple
new file mode 120000
index 0000000000..135119da62
--- /dev/null
+++ b/Lang/PL-I/Least-common-multiple
@@ -0,0 +1 @@
+../../Task/Least-common-multiple/PL-I
\ No newline at end of file
diff --git a/Lang/PL-I/Maze-generation b/Lang/PL-I/Maze-generation
new file mode 120000
index 0000000000..2866cf8a03
--- /dev/null
+++ b/Lang/PL-I/Maze-generation
@@ -0,0 +1 @@
+../../Task/Maze-generation/PL-I
\ No newline at end of file
diff --git a/Lang/PL-I/Monty-Hall-problem b/Lang/PL-I/Monty-Hall-problem
new file mode 120000
index 0000000000..b14916d200
--- /dev/null
+++ b/Lang/PL-I/Monty-Hall-problem
@@ -0,0 +1 @@
+../../Task/Monty-Hall-problem/PL-I
\ No newline at end of file
diff --git a/Lang/PL-I/Quaternion-type b/Lang/PL-I/Quaternion-type
new file mode 120000
index 0000000000..b86d406fec
--- /dev/null
+++ b/Lang/PL-I/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/PL-I
\ No newline at end of file
diff --git a/Lang/PL-I/Scope-Function-names-and-labels b/Lang/PL-I/Scope-Function-names-and-labels
new file mode 120000
index 0000000000..601e3bac14
--- /dev/null
+++ b/Lang/PL-I/Scope-Function-names-and-labels
@@ -0,0 +1 @@
+../../Task/Scope-Function-names-and-labels/PL-I
\ No newline at end of file
diff --git a/Lang/PL-I/Sierpinski-carpet b/Lang/PL-I/Sierpinski-carpet
new file mode 120000
index 0000000000..3635ff5833
--- /dev/null
+++ b/Lang/PL-I/Sierpinski-carpet
@@ -0,0 +1 @@
+../../Task/Sierpinski-carpet/PL-I
\ No newline at end of file
diff --git a/Lang/PL-I/Singly-linked-list-Traversal b/Lang/PL-I/Singly-linked-list-Traversal
new file mode 120000
index 0000000000..f2c469524f
--- /dev/null
+++ b/Lang/PL-I/Singly-linked-list-Traversal
@@ -0,0 +1 @@
+../../Task/Singly-linked-list-Traversal/PL-I
\ No newline at end of file
diff --git a/Lang/PL-I/Sorting-algorithms-Heapsort b/Lang/PL-I/Sorting-algorithms-Heapsort
new file mode 120000
index 0000000000..df0f11a56e
--- /dev/null
+++ b/Lang/PL-I/Sorting-algorithms-Heapsort
@@ -0,0 +1 @@
+../../Task/Sorting-algorithms-Heapsort/PL-I
\ No newline at end of file
diff --git a/Lang/PL-I/String-interpolation--included- b/Lang/PL-I/String-interpolation--included-
new file mode 120000
index 0000000000..a92e16f70f
--- /dev/null
+++ b/Lang/PL-I/String-interpolation--included-
@@ -0,0 +1 @@
+../../Task/String-interpolation--included-/PL-I
\ No newline at end of file
diff --git a/Lang/PL-I/Symmetric-difference b/Lang/PL-I/Symmetric-difference
new file mode 120000
index 0000000000..694780c3c6
--- /dev/null
+++ b/Lang/PL-I/Symmetric-difference
@@ -0,0 +1 @@
+../../Task/Symmetric-difference/PL-I
\ No newline at end of file
diff --git a/Lang/PL-I/Temperature-conversion b/Lang/PL-I/Temperature-conversion
new file mode 120000
index 0000000000..dc65fd7ea8
--- /dev/null
+++ b/Lang/PL-I/Temperature-conversion
@@ -0,0 +1 @@
+../../Task/Temperature-conversion/PL-I
\ No newline at end of file
diff --git a/Lang/PL-I/Word-wrap b/Lang/PL-I/Word-wrap
new file mode 120000
index 0000000000..746446135a
--- /dev/null
+++ b/Lang/PL-I/Word-wrap
@@ -0,0 +1 @@
+../../Task/Word-wrap/PL-I
\ No newline at end of file
diff --git a/Lang/Pascal/Euler-method b/Lang/Pascal/Euler-method
new file mode 120000
index 0000000000..fb28b14716
--- /dev/null
+++ b/Lang/Pascal/Euler-method
@@ -0,0 +1 @@
+../../Task/Euler-method/Pascal
\ No newline at end of file
diff --git a/Lang/Pascal/Morse-code b/Lang/Pascal/Morse-code
new file mode 120000
index 0000000000..aec1df430c
--- /dev/null
+++ b/Lang/Pascal/Morse-code
@@ -0,0 +1 @@
+../../Task/Morse-code/Pascal
\ No newline at end of file
diff --git a/Lang/Pascal/String-case b/Lang/Pascal/String-case
new file mode 120000
index 0000000000..a9654f29c6
--- /dev/null
+++ b/Lang/Pascal/String-case
@@ -0,0 +1 @@
+../../Task/String-case/Pascal
\ No newline at end of file
diff --git a/Lang/Pascal/Take-notes-on-the-command-line b/Lang/Pascal/Take-notes-on-the-command-line
new file mode 120000
index 0000000000..917876e73c
--- /dev/null
+++ b/Lang/Pascal/Take-notes-on-the-command-line
@@ -0,0 +1 @@
+../../Task/Take-notes-on-the-command-line/Pascal
\ No newline at end of file
diff --git a/Lang/Pascal/Vigen-re-cipher b/Lang/Pascal/Vigen-re-cipher
new file mode 120000
index 0000000000..9ae66a8ba5
--- /dev/null
+++ b/Lang/Pascal/Vigen-re-cipher
@@ -0,0 +1 @@
+../../Task/Vigen-re-cipher/Pascal
\ No newline at end of file
diff --git a/Lang/Perl-6/Continued-fraction-Arithmetic-G-matrix-NG,-Contined-Fraction-N- b/Lang/Perl-6/Continued-fraction-Arithmetic-G-matrix-NG,-Contined-Fraction-N-
new file mode 120000
index 0000000000..0adffd655c
--- /dev/null
+++ b/Lang/Perl-6/Continued-fraction-Arithmetic-G-matrix-NG,-Contined-Fraction-N-
@@ -0,0 +1 @@
+../../Task/Continued-fraction-Arithmetic-G-matrix-NG,-Contined-Fraction-N-/Perl-6
\ No newline at end of file
diff --git a/Lang/Perl-6/Continued-fraction-Arithmetic-G-matrix-NG,-Contined-Fraction-N1,-Contined-Fraction-N2- b/Lang/Perl-6/Continued-fraction-Arithmetic-G-matrix-NG,-Contined-Fraction-N1,-Contined-Fraction-N2-
new file mode 120000
index 0000000000..3b86aa98ca
--- /dev/null
+++ b/Lang/Perl-6/Continued-fraction-Arithmetic-G-matrix-NG,-Contined-Fraction-N1,-Contined-Fraction-N2-
@@ -0,0 +1 @@
+../../Task/Continued-fraction-Arithmetic-G-matrix-NG,-Contined-Fraction-N1,-Contined-Fraction-N2-/Perl-6
\ No newline at end of file
diff --git a/Lang/Perl-6/Execute-a-Markov-algorithm b/Lang/Perl-6/Execute-a-Markov-algorithm
new file mode 120000
index 0000000000..bcde6ae4c6
--- /dev/null
+++ b/Lang/Perl-6/Execute-a-Markov-algorithm
@@ -0,0 +1 @@
+../../Task/Execute-a-Markov-algorithm/Perl-6
\ No newline at end of file
diff --git a/Lang/Perl-6/Variable-size-Get b/Lang/Perl-6/Variable-size-Get
new file mode 120000
index 0000000000..f0dc37dcef
--- /dev/null
+++ b/Lang/Perl-6/Variable-size-Get
@@ -0,0 +1 @@
+../../Task/Variable-size-Get/Perl-6
\ No newline at end of file
diff --git a/Lang/Perl/Count-the-coins b/Lang/Perl/Count-the-coins
new file mode 120000
index 0000000000..4b82407e64
--- /dev/null
+++ b/Lang/Perl/Count-the-coins
@@ -0,0 +1 @@
+../../Task/Count-the-coins/Perl
\ No newline at end of file
diff --git a/Lang/Perl/Dining-philosophers b/Lang/Perl/Dining-philosophers
new file mode 120000
index 0000000000..c0917c0014
--- /dev/null
+++ b/Lang/Perl/Dining-philosophers
@@ -0,0 +1 @@
+../../Task/Dining-philosophers/Perl
\ No newline at end of file
diff --git a/Lang/Perl/Dutch-national-flag-problem b/Lang/Perl/Dutch-national-flag-problem
new file mode 120000
index 0000000000..e6374704ef
--- /dev/null
+++ b/Lang/Perl/Dutch-national-flag-problem
@@ -0,0 +1 @@
+../../Task/Dutch-national-flag-problem/Perl
\ No newline at end of file
diff --git a/Lang/Perl/Execute-HQ9+ b/Lang/Perl/Execute-HQ9+
new file mode 120000
index 0000000000..2bfb646254
--- /dev/null
+++ b/Lang/Perl/Execute-HQ9+
@@ -0,0 +1 @@
+../../Task/Execute-HQ9+/Perl
\ No newline at end of file
diff --git a/Lang/Perl/Fast-Fourier-transform b/Lang/Perl/Fast-Fourier-transform
new file mode 120000
index 0000000000..a355dd143f
--- /dev/null
+++ b/Lang/Perl/Fast-Fourier-transform
@@ -0,0 +1 @@
+../../Task/Fast-Fourier-transform/Perl
\ No newline at end of file
diff --git a/Lang/Perl/First-class-environments b/Lang/Perl/First-class-environments
new file mode 120000
index 0000000000..39eb66340d
--- /dev/null
+++ b/Lang/Perl/First-class-environments
@@ -0,0 +1 @@
+../../Task/First-class-environments/Perl
\ No newline at end of file
diff --git a/Lang/Perl/Formal-power-series b/Lang/Perl/Formal-power-series
new file mode 120000
index 0000000000..9afe85f19c
--- /dev/null
+++ b/Lang/Perl/Formal-power-series
@@ -0,0 +1 @@
+../../Task/Formal-power-series/Perl
\ No newline at end of file
diff --git a/Lang/Perl/Honeycombs b/Lang/Perl/Honeycombs
new file mode 120000
index 0000000000..d4a2896076
--- /dev/null
+++ b/Lang/Perl/Honeycombs
@@ -0,0 +1 @@
+../../Task/Honeycombs/Perl
\ No newline at end of file
diff --git a/Lang/Perl/I-before-E-except-after-C b/Lang/Perl/I-before-E-except-after-C
new file mode 120000
index 0000000000..de796c2c3f
--- /dev/null
+++ b/Lang/Perl/I-before-E-except-after-C
@@ -0,0 +1 @@
+../../Task/I-before-E-except-after-C/Perl
\ No newline at end of file
diff --git a/Lang/Perl/Maze-solving b/Lang/Perl/Maze-solving
new file mode 120000
index 0000000000..d04b150048
--- /dev/null
+++ b/Lang/Perl/Maze-solving
@@ -0,0 +1 @@
+../../Task/Maze-solving/Perl
\ No newline at end of file
diff --git a/Lang/Perl/Minesweeper-game b/Lang/Perl/Minesweeper-game
new file mode 120000
index 0000000000..597c14c24d
--- /dev/null
+++ b/Lang/Perl/Minesweeper-game
@@ -0,0 +1 @@
+../../Task/Minesweeper-game/Perl
\ No newline at end of file
diff --git a/Lang/Perl/One-of-n-lines-in-a-file b/Lang/Perl/One-of-n-lines-in-a-file
new file mode 120000
index 0000000000..3f70a9ec2c
--- /dev/null
+++ b/Lang/Perl/One-of-n-lines-in-a-file
@@ -0,0 +1 @@
+../../Task/One-of-n-lines-in-a-file/Perl
\ No newline at end of file
diff --git a/Lang/Perl/Same-Fringe b/Lang/Perl/Same-Fringe
new file mode 120000
index 0000000000..56cc28ea6f
--- /dev/null
+++ b/Lang/Perl/Same-Fringe
@@ -0,0 +1 @@
+../../Task/Same-Fringe/Perl
\ No newline at end of file
diff --git a/Lang/Perl/Sorting-algorithms-Radix-sort b/Lang/Perl/Sorting-algorithms-Radix-sort
new file mode 120000
index 0000000000..39fcf04943
--- /dev/null
+++ b/Lang/Perl/Sorting-algorithms-Radix-sort
@@ -0,0 +1 @@
+../../Task/Sorting-algorithms-Radix-sort/Perl
\ No newline at end of file
diff --git a/Lang/Perl/Truncatable-primes b/Lang/Perl/Truncatable-primes
new file mode 120000
index 0000000000..dba79a07b3
--- /dev/null
+++ b/Lang/Perl/Truncatable-primes
@@ -0,0 +1 @@
+../../Task/Truncatable-primes/Perl
\ No newline at end of file
diff --git a/Lang/Perl/Vampire-number b/Lang/Perl/Vampire-number
new file mode 120000
index 0000000000..3f20b7a4a0
--- /dev/null
+++ b/Lang/Perl/Vampire-number
@@ -0,0 +1 @@
+../../Task/Vampire-number/Perl
\ No newline at end of file
diff --git a/Lang/Perl/Van-der-Corput-sequence b/Lang/Perl/Van-der-Corput-sequence
new file mode 120000
index 0000000000..ebf23844a6
--- /dev/null
+++ b/Lang/Perl/Van-der-Corput-sequence
@@ -0,0 +1 @@
+../../Task/Van-der-Corput-sequence/Perl
\ No newline at end of file
diff --git a/Lang/Perl/Visualize-a-tree b/Lang/Perl/Visualize-a-tree
new file mode 120000
index 0000000000..863d8431e8
--- /dev/null
+++ b/Lang/Perl/Visualize-a-tree
@@ -0,0 +1 @@
+../../Task/Visualize-a-tree/Perl
\ No newline at end of file
diff --git a/Lang/PicoLisp/Visualize-a-tree b/Lang/PicoLisp/Visualize-a-tree
new file mode 120000
index 0000000000..a6d8ba6297
--- /dev/null
+++ b/Lang/PicoLisp/Visualize-a-tree
@@ -0,0 +1 @@
+../../Task/Visualize-a-tree/PicoLisp
\ No newline at end of file
diff --git a/Lang/PostScript/00DESCRIPTION b/Lang/PostScript/00DESCRIPTION
index 94b8f89f9c..96287d2476 100644
--- a/Lang/PostScript/00DESCRIPTION
+++ b/Lang/PostScript/00DESCRIPTION
@@ -6,8 +6,9 @@
Although now almost displaced by the '''Portable Document Format''' (PDF), also developed by Adobe, PostScript's USP lies in it's being a '''Turing complete''' language with support for the basic data types and fundamental structures and concepts of Computer Science. Many interpreters and viewers of PostScript are available, some even for free. Although primarily a language suited for 2D graphics, PostScript is complete as a language and able to hadle normal computation tasks.
==See Also==
-*[http://logand.com/sw/wps/index.html WPS - PostScript interpreter written in JavaScript]
-*[http://code.google.com/p/postcanvas/ postcanvas - Open-source PostScript interpreter written in JavaScript]
+*[http://logand.com/sw/wps/index.html WPS - PostScript interpreter written in JavaScript.]
+*[http://code.google.com/p/postcanvas/ postcanvas - Open-source PostScript interpreter written in JavaScript.]
*[http://pages.cs.wisc.edu/~ghost/ Ghostscript opensource postscript interpreter with a lot of extensions. ]
+*[http://code.google.com/p/xpost/downloads/detail?name=monterey86.pdf Owen Densmore, Object-Oriented Programming in NeWS, describes the use of dictionaries for implementing single- and multiple-inheritance.]
{{Language programming paradigm|Concatenative}}
\ No newline at end of file
diff --git a/Lang/PostScript/99-Bottles-of-Beer b/Lang/PostScript/99-Bottles-of-Beer
new file mode 120000
index 0000000000..c7411a527f
--- /dev/null
+++ b/Lang/PostScript/99-Bottles-of-Beer
@@ -0,0 +1 @@
+../../Task/99-Bottles-of-Beer/PostScript
\ No newline at end of file
diff --git a/Lang/PowerBASIC/Introspection b/Lang/PowerBASIC/Introspection
new file mode 120000
index 0000000000..04c426cd42
--- /dev/null
+++ b/Lang/PowerBASIC/Introspection
@@ -0,0 +1 @@
+../../Task/Introspection/PowerBASIC
\ No newline at end of file
diff --git a/Lang/PowerShell/Number-reversal-game b/Lang/PowerShell/Number-reversal-game
new file mode 120000
index 0000000000..9e7462b757
--- /dev/null
+++ b/Lang/PowerShell/Number-reversal-game
@@ -0,0 +1 @@
+../../Task/Number-reversal-game/PowerShell
\ No newline at end of file
diff --git a/Lang/PowerShell/Palindrome-detection b/Lang/PowerShell/Palindrome-detection
new file mode 120000
index 0000000000..c1dd0988a7
--- /dev/null
+++ b/Lang/PowerShell/Palindrome-detection
@@ -0,0 +1 @@
+../../Task/Palindrome-detection/PowerShell
\ No newline at end of file
diff --git a/Lang/PowerShell/String-interpolation--included- b/Lang/PowerShell/String-interpolation--included-
new file mode 120000
index 0000000000..5f0d15399b
--- /dev/null
+++ b/Lang/PowerShell/String-interpolation--included-
@@ -0,0 +1 @@
+../../Task/String-interpolation--included-/PowerShell
\ No newline at end of file
diff --git a/Lang/Processing/Draw-a-sphere b/Lang/Processing/Draw-a-sphere
new file mode 120000
index 0000000000..846115f0c8
--- /dev/null
+++ b/Lang/Processing/Draw-a-sphere
@@ -0,0 +1 @@
+../../Task/Draw-a-sphere/Processing
\ No newline at end of file
diff --git a/Lang/Prolog/Function-definition b/Lang/Prolog/Function-definition
new file mode 120000
index 0000000000..302e5e7d8e
--- /dev/null
+++ b/Lang/Prolog/Function-definition
@@ -0,0 +1 @@
+../../Task/Function-definition/Prolog
\ No newline at end of file
diff --git a/Lang/Prolog/Gray-code b/Lang/Prolog/Gray-code
new file mode 120000
index 0000000000..9a16b5b114
--- /dev/null
+++ b/Lang/Prolog/Gray-code
@@ -0,0 +1 @@
+../../Task/Gray-code/Prolog
\ No newline at end of file
diff --git a/Lang/Prolog/Sorting-algorithms-Selection-sort b/Lang/Prolog/Sorting-algorithms-Selection-sort
new file mode 120000
index 0000000000..a8d2cf4c22
--- /dev/null
+++ b/Lang/Prolog/Sorting-algorithms-Selection-sort
@@ -0,0 +1 @@
+../../Task/Sorting-algorithms-Selection-sort/Prolog
\ No newline at end of file
diff --git a/Lang/Protium/Loops-Downward-for b/Lang/Protium/Loops-Downward-for
new file mode 120000
index 0000000000..0495237e33
--- /dev/null
+++ b/Lang/Protium/Loops-Downward-for
@@ -0,0 +1 @@
+../../Task/Loops-Downward-for/Protium
\ No newline at end of file
diff --git a/Lang/Python/00DESCRIPTION b/Lang/Python/00DESCRIPTION
index 8f8dcbf7f7..4f95e5a706 100644
--- a/Lang/Python/00DESCRIPTION
+++ b/Lang/Python/00DESCRIPTION
@@ -5,7 +5,7 @@
|safety=safe
|express=implicit
|checking=dynamic
-|parampass=value
+|parampass=object reference
|gc=yes
|LCT=yes
|bnf=http://docs.python.org/py3k/reference/grammar.html}}{{language programming paradigm|Dynamic}}{{language programming paradigm|Object-oriented}}{{codepad}}From the official [http://www.python.org Python] website: "Python is a programming language that lets you work more quickly and integrate your systems more effectively. You can learn to use Python and see almost immediate gains in productivity and lower maintenance costs."
diff --git a/Lang/Python/Continued-fraction-Arithmetic-G-matrix-NG,-Contined-Fraction-N- b/Lang/Python/Continued-fraction-Arithmetic-G-matrix-NG,-Contined-Fraction-N-
new file mode 120000
index 0000000000..802aec48e0
--- /dev/null
+++ b/Lang/Python/Continued-fraction-Arithmetic-G-matrix-NG,-Contined-Fraction-N-
@@ -0,0 +1 @@
+../../Task/Continued-fraction-Arithmetic-G-matrix-NG,-Contined-Fraction-N-/Python
\ No newline at end of file
diff --git a/Lang/Python/Create-a-file-on-magnetic-tape b/Lang/Python/Create-a-file-on-magnetic-tape
new file mode 120000
index 0000000000..56566e8ce9
--- /dev/null
+++ b/Lang/Python/Create-a-file-on-magnetic-tape
@@ -0,0 +1 @@
+../../Task/Create-a-file-on-magnetic-tape/Python
\ No newline at end of file
diff --git a/Lang/Python/Find-largest-left-truncatable-prime-in-a-given-base b/Lang/Python/Find-largest-left-truncatable-prime-in-a-given-base
new file mode 120000
index 0000000000..b967151198
--- /dev/null
+++ b/Lang/Python/Find-largest-left-truncatable-prime-in-a-given-base
@@ -0,0 +1 @@
+../../Task/Find-largest-left-truncatable-prime-in-a-given-base/Python
\ No newline at end of file
diff --git a/Lang/Python/HTTPS-Client-authenticated b/Lang/Python/HTTPS-Client-authenticated
new file mode 120000
index 0000000000..084023f182
--- /dev/null
+++ b/Lang/Python/HTTPS-Client-authenticated
@@ -0,0 +1 @@
+../../Task/HTTPS-Client-authenticated/Python
\ No newline at end of file
diff --git a/Lang/Python/Simulate-input-Mouse b/Lang/Python/Simulate-input-Mouse
new file mode 120000
index 0000000000..c280b67e28
--- /dev/null
+++ b/Lang/Python/Simulate-input-Mouse
@@ -0,0 +1 @@
+../../Task/Simulate-input-Mouse/Python
\ No newline at end of file
diff --git a/Lang/Python/Terminal-control-Cursor-movement b/Lang/Python/Terminal-control-Cursor-movement
new file mode 120000
index 0000000000..8c15fc2a5e
--- /dev/null
+++ b/Lang/Python/Terminal-control-Cursor-movement
@@ -0,0 +1 @@
+../../Task/Terminal-control-Cursor-movement/Python
\ No newline at end of file
diff --git a/Lang/R/00DESCRIPTION b/Lang/R/00DESCRIPTION
index 471e1915ca..757a495cca 100644
--- a/Lang/R/00DESCRIPTION
+++ b/Lang/R/00DESCRIPTION
@@ -1,5 +1,6 @@
{{language|R
|site=http://www.r-project.org/
+|tags=rsplus
|express=implicit}}
R is a language and environment for statistical computing and graphics. It is a GNU project which is similar to the S language and environment which was developed at Bell Laboratories (formerly AT&T, now Lucent Technologies) by John Chambers and colleagues. R can be considered as a different implementation of S. There are some important differences, but much code written for S runs unaltered under R.http://www.r-project.org/about.html
diff --git a/Lang/R/Count-occurrences-of-a-substring b/Lang/R/Count-occurrences-of-a-substring
new file mode 120000
index 0000000000..96ba0c1d93
--- /dev/null
+++ b/Lang/R/Count-occurrences-of-a-substring
@@ -0,0 +1 @@
+../../Task/Count-occurrences-of-a-substring/R
\ No newline at end of file
diff --git a/Lang/R/Five-weekends b/Lang/R/Five-weekends
new file mode 120000
index 0000000000..36889b35d4
--- /dev/null
+++ b/Lang/R/Five-weekends
@@ -0,0 +1 @@
+../../Task/Five-weekends/R
\ No newline at end of file
diff --git a/Lang/R/Generator-Exponential b/Lang/R/Generator-Exponential
new file mode 120000
index 0000000000..5de5fe6fae
--- /dev/null
+++ b/Lang/R/Generator-Exponential
@@ -0,0 +1 @@
+../../Task/Generator-Exponential/R
\ No newline at end of file
diff --git a/Lang/R/I-before-E-except-after-C b/Lang/R/I-before-E-except-after-C
new file mode 120000
index 0000000000..7ad36ff605
--- /dev/null
+++ b/Lang/R/I-before-E-except-after-C
@@ -0,0 +1 @@
+../../Task/I-before-E-except-after-C/R
\ No newline at end of file
diff --git a/Lang/R/Knapsack-problem-0-1 b/Lang/R/Knapsack-problem-0-1
new file mode 120000
index 0000000000..23e11a50ea
--- /dev/null
+++ b/Lang/R/Knapsack-problem-0-1
@@ -0,0 +1 @@
+../../Task/Knapsack-problem-0-1/R
\ No newline at end of file
diff --git a/Lang/R/Last-Friday-of-each-month b/Lang/R/Last-Friday-of-each-month
new file mode 120000
index 0000000000..ed43cf65dd
--- /dev/null
+++ b/Lang/R/Last-Friday-of-each-month
@@ -0,0 +1 @@
+../../Task/Last-Friday-of-each-month/R
\ No newline at end of file
diff --git a/Lang/R/Least-common-multiple b/Lang/R/Least-common-multiple
new file mode 120000
index 0000000000..52738ff89f
--- /dev/null
+++ b/Lang/R/Least-common-multiple
@@ -0,0 +1 @@
+../../Task/Least-common-multiple/R
\ No newline at end of file
diff --git a/Lang/R/Range-extraction b/Lang/R/Range-extraction
new file mode 120000
index 0000000000..683752e822
--- /dev/null
+++ b/Lang/R/Range-extraction
@@ -0,0 +1 @@
+../../Task/Range-extraction/R
\ No newline at end of file
diff --git a/Lang/R/Sort-using-a-custom-comparator b/Lang/R/Sort-using-a-custom-comparator
new file mode 120000
index 0000000000..96e31b0884
--- /dev/null
+++ b/Lang/R/Sort-using-a-custom-comparator
@@ -0,0 +1 @@
+../../Task/Sort-using-a-custom-comparator/R
\ No newline at end of file
diff --git a/Lang/R/Unbias-a-random-generator b/Lang/R/Unbias-a-random-generator
new file mode 120000
index 0000000000..2f23900df6
--- /dev/null
+++ b/Lang/R/Unbias-a-random-generator
@@ -0,0 +1 @@
+../../Task/Unbias-a-random-generator/R
\ No newline at end of file
diff --git a/Lang/REALbasic/00DESCRIPTION b/Lang/REALbasic/00DESCRIPTION
index cde2d45284..066ad7cabc 100644
--- a/Lang/REALbasic/00DESCRIPTION
+++ b/Lang/REALbasic/00DESCRIPTION
@@ -3,7 +3,9 @@
|safety=safe}}
{{implementation|BASIC}}{{IDE}}{{Compiler}}
{{language programming paradigm|Object-oriented}}
-'''REALbasic''' (or '''RB''') is a [[BASIC]] compiler for [[Windows]], [[Mac OS]], and [[Linux]], made by [http://www.realsoftware.com/ REAL Software, Inc.] It has its own [[IDE]], and projects are saved to a proprietary binary format. Unlike most BASICs, REALbasic is heavily object-oriented.
+'''REALbasic''' (or '''RB''') is a [[BASIC]] compiler for [[Windows]], [[Mac OS]], and [[Linux]], made by [http://www.xojo.com/ Xojo, Inc.] It has its own [[IDE]], and projects are saved to a proprietary binary format. Unlike most BASICs, REALbasic is heavily object-oriented.
+
+As of June 2013, the language, IDE, and company have been re-branded as "Xojo".
REALbasic is not compatible with other BASICs, for the most part; examples from other BASICs usually have to be completely rewritten to work in RB.
diff --git a/Lang/REALbasic/Echo-server b/Lang/REALbasic/Echo-server
new file mode 120000
index 0000000000..9d25a0c4b5
--- /dev/null
+++ b/Lang/REALbasic/Echo-server
@@ -0,0 +1 @@
+../../Task/Echo-server/REALbasic
\ No newline at end of file
diff --git a/Lang/REALbasic/Sorting-algorithms-Bubble-sort b/Lang/REALbasic/Sorting-algorithms-Bubble-sort
new file mode 120000
index 0000000000..1f322b696b
--- /dev/null
+++ b/Lang/REALbasic/Sorting-algorithms-Bubble-sort
@@ -0,0 +1 @@
+../../Task/Sorting-algorithms-Bubble-sort/REALbasic
\ No newline at end of file
diff --git a/Lang/REXX/Check-that-file-exists b/Lang/REXX/Check-that-file-exists
new file mode 120000
index 0000000000..8d98140a0d
--- /dev/null
+++ b/Lang/REXX/Check-that-file-exists
@@ -0,0 +1 @@
+../../Task/Check-that-file-exists/REXX
\ No newline at end of file
diff --git a/Lang/REXX/Monty-Hall-problem b/Lang/REXX/Monty-Hall-problem
new file mode 120000
index 0000000000..a95989ea6b
--- /dev/null
+++ b/Lang/REXX/Monty-Hall-problem
@@ -0,0 +1 @@
+../../Task/Monty-Hall-problem/REXX
\ No newline at end of file
diff --git a/Lang/REXX/One-dimensional-cellular-automata b/Lang/REXX/One-dimensional-cellular-automata
new file mode 120000
index 0000000000..c622ecea27
--- /dev/null
+++ b/Lang/REXX/One-dimensional-cellular-automata
@@ -0,0 +1 @@
+../../Task/One-dimensional-cellular-automata/REXX
\ No newline at end of file
diff --git a/Lang/REXX/Singly-linked-list-Traversal b/Lang/REXX/Singly-linked-list-Traversal
new file mode 120000
index 0000000000..a360a04365
--- /dev/null
+++ b/Lang/REXX/Singly-linked-list-Traversal
@@ -0,0 +1 @@
+../../Task/Singly-linked-list-Traversal/REXX
\ No newline at end of file
diff --git a/Lang/REXX/Sort-using-a-custom-comparator b/Lang/REXX/Sort-using-a-custom-comparator
new file mode 120000
index 0000000000..ef31acea13
--- /dev/null
+++ b/Lang/REXX/Sort-using-a-custom-comparator
@@ -0,0 +1 @@
+../../Task/Sort-using-a-custom-comparator/REXX
\ No newline at end of file
diff --git a/Lang/REXX/Strip-block-comments b/Lang/REXX/Strip-block-comments
new file mode 120000
index 0000000000..afc1da1516
--- /dev/null
+++ b/Lang/REXX/Strip-block-comments
@@ -0,0 +1 @@
+../../Task/Strip-block-comments/REXX
\ No newline at end of file
diff --git a/Lang/REXX/Terminal-control-Clear-the-screen b/Lang/REXX/Terminal-control-Clear-the-screen
new file mode 120000
index 0000000000..8edb8c2959
--- /dev/null
+++ b/Lang/REXX/Terminal-control-Clear-the-screen
@@ -0,0 +1 @@
+../../Task/Terminal-control-Clear-the-screen/REXX
\ No newline at end of file
diff --git a/Lang/Racket/Atomic-updates b/Lang/Racket/Atomic-updates
new file mode 120000
index 0000000000..89910fc174
--- /dev/null
+++ b/Lang/Racket/Atomic-updates
@@ -0,0 +1 @@
+../../Task/Atomic-updates/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Balanced-ternary b/Lang/Racket/Balanced-ternary
new file mode 120000
index 0000000000..44853b0ee2
--- /dev/null
+++ b/Lang/Racket/Balanced-ternary
@@ -0,0 +1 @@
+../../Task/Balanced-ternary/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Bitmap-PPM-conversion-through-a-pipe b/Lang/Racket/Bitmap-PPM-conversion-through-a-pipe
new file mode 120000
index 0000000000..9798eff3d6
--- /dev/null
+++ b/Lang/Racket/Bitmap-PPM-conversion-through-a-pipe
@@ -0,0 +1 @@
+../../Task/Bitmap-PPM-conversion-through-a-pipe/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Bitmap-Read-an-image-through-a-pipe b/Lang/Racket/Bitmap-Read-an-image-through-a-pipe
new file mode 120000
index 0000000000..80ec356e73
--- /dev/null
+++ b/Lang/Racket/Bitmap-Read-an-image-through-a-pipe
@@ -0,0 +1 @@
+../../Task/Bitmap-Read-an-image-through-a-pipe/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Bitmap-Write-a-PPM-file b/Lang/Racket/Bitmap-Write-a-PPM-file
new file mode 120000
index 0000000000..fc9358a22d
--- /dev/null
+++ b/Lang/Racket/Bitmap-Write-a-PPM-file
@@ -0,0 +1 @@
+../../Task/Bitmap-Write-a-PPM-file/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Brownian-tree b/Lang/Racket/Brownian-tree
new file mode 120000
index 0000000000..03501f3493
--- /dev/null
+++ b/Lang/Racket/Brownian-tree
@@ -0,0 +1 @@
+../../Task/Brownian-tree/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Bulls-and-cows-Player b/Lang/Racket/Bulls-and-cows-Player
new file mode 120000
index 0000000000..31f1589663
--- /dev/null
+++ b/Lang/Racket/Bulls-and-cows-Player
@@ -0,0 +1 @@
+../../Task/Bulls-and-cows-Player/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Continued-fraction-Arithmetic-Construct-from-rational-number b/Lang/Racket/Continued-fraction-Arithmetic-Construct-from-rational-number
new file mode 120000
index 0000000000..d8e22abd72
--- /dev/null
+++ b/Lang/Racket/Continued-fraction-Arithmetic-Construct-from-rational-number
@@ -0,0 +1 @@
+../../Task/Continued-fraction-Arithmetic-Construct-from-rational-number/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Continued-fraction-Arithmetic-G-matrix-NG,-Contined-Fraction-N- b/Lang/Racket/Continued-fraction-Arithmetic-G-matrix-NG,-Contined-Fraction-N-
new file mode 120000
index 0000000000..fd1cb7d938
--- /dev/null
+++ b/Lang/Racket/Continued-fraction-Arithmetic-G-matrix-NG,-Contined-Fraction-N-
@@ -0,0 +1 @@
+../../Task/Continued-fraction-Arithmetic-G-matrix-NG,-Contined-Fraction-N-/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Deconvolution-1D b/Lang/Racket/Deconvolution-1D
new file mode 120000
index 0000000000..0316083955
--- /dev/null
+++ b/Lang/Racket/Deconvolution-1D
@@ -0,0 +1 @@
+../../Task/Deconvolution-1D/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Discordian-date b/Lang/Racket/Discordian-date
new file mode 120000
index 0000000000..3258ec0f86
--- /dev/null
+++ b/Lang/Racket/Discordian-date
@@ -0,0 +1 @@
+../../Task/Discordian-date/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Element-wise-operations b/Lang/Racket/Element-wise-operations
new file mode 120000
index 0000000000..fa94c4ffe3
--- /dev/null
+++ b/Lang/Racket/Element-wise-operations
@@ -0,0 +1 @@
+../../Task/Element-wise-operations/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Events b/Lang/Racket/Events
new file mode 120000
index 0000000000..7f8aad253b
--- /dev/null
+++ b/Lang/Racket/Events
@@ -0,0 +1 @@
+../../Task/Events/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Galton-box-animation b/Lang/Racket/Galton-box-animation
new file mode 120000
index 0000000000..e5d38dee9b
--- /dev/null
+++ b/Lang/Racket/Galton-box-animation
@@ -0,0 +1 @@
+../../Task/Galton-box-animation/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Hofstadter-Conway-$10,000-sequence b/Lang/Racket/Hofstadter-Conway-$10,000-sequence
new file mode 120000
index 0000000000..91c92d52c7
--- /dev/null
+++ b/Lang/Racket/Hofstadter-Conway-$10,000-sequence
@@ -0,0 +1 @@
+../../Task/Hofstadter-Conway-$10,000-sequence/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Hofstadter-Figure-Figure-sequences b/Lang/Racket/Hofstadter-Figure-Figure-sequences
new file mode 120000
index 0000000000..65884f8ed7
--- /dev/null
+++ b/Lang/Racket/Hofstadter-Figure-Figure-sequences
@@ -0,0 +1 @@
+../../Task/Hofstadter-Figure-Figure-sequences/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Image-convolution b/Lang/Racket/Image-convolution
new file mode 120000
index 0000000000..0a3ea2413d
--- /dev/null
+++ b/Lang/Racket/Image-convolution
@@ -0,0 +1 @@
+../../Task/Image-convolution/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Image-noise b/Lang/Racket/Image-noise
new file mode 120000
index 0000000000..b486a52ca4
--- /dev/null
+++ b/Lang/Racket/Image-noise
@@ -0,0 +1 @@
+../../Task/Image-noise/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Knapsack-problem-Unbounded b/Lang/Racket/Knapsack-problem-Unbounded
new file mode 120000
index 0000000000..ad4ad8507a
--- /dev/null
+++ b/Lang/Racket/Knapsack-problem-Unbounded
@@ -0,0 +1 @@
+../../Task/Knapsack-problem-Unbounded/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Main-step-of-GOST-28147-89 b/Lang/Racket/Main-step-of-GOST-28147-89
new file mode 120000
index 0000000000..3f7918323f
--- /dev/null
+++ b/Lang/Racket/Main-step-of-GOST-28147-89
@@ -0,0 +1 @@
+../../Task/Main-step-of-GOST-28147-89/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Median-filter b/Lang/Racket/Median-filter
new file mode 120000
index 0000000000..00fc35c5a1
--- /dev/null
+++ b/Lang/Racket/Median-filter
@@ -0,0 +1 @@
+../../Task/Median-filter/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Nautical-bell b/Lang/Racket/Nautical-bell
new file mode 120000
index 0000000000..953d8a4ab7
--- /dev/null
+++ b/Lang/Racket/Nautical-bell
@@ -0,0 +1 @@
+../../Task/Nautical-bell/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Numeric-error-propagation b/Lang/Racket/Numeric-error-propagation
new file mode 120000
index 0000000000..8621b910f5
--- /dev/null
+++ b/Lang/Racket/Numeric-error-propagation
@@ -0,0 +1 @@
+../../Task/Numeric-error-propagation/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Parametrized-SQL-statement b/Lang/Racket/Parametrized-SQL-statement
new file mode 120000
index 0000000000..200108d909
--- /dev/null
+++ b/Lang/Racket/Parametrized-SQL-statement
@@ -0,0 +1 @@
+../../Task/Parametrized-SQL-statement/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Parsing-Shunting-yard-algorithm b/Lang/Racket/Parsing-Shunting-yard-algorithm
new file mode 120000
index 0000000000..7569523d97
--- /dev/null
+++ b/Lang/Racket/Parsing-Shunting-yard-algorithm
@@ -0,0 +1 @@
+../../Task/Parsing-Shunting-yard-algorithm/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Pascals-triangle-Puzzle b/Lang/Racket/Pascals-triangle-Puzzle
new file mode 120000
index 0000000000..e545e050a7
--- /dev/null
+++ b/Lang/Racket/Pascals-triangle-Puzzle
@@ -0,0 +1 @@
+../../Task/Pascals-triangle-Puzzle/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Permutation-test b/Lang/Racket/Permutation-test
new file mode 120000
index 0000000000..b865655434
--- /dev/null
+++ b/Lang/Racket/Permutation-test
@@ -0,0 +1 @@
+../../Task/Permutation-test/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Play-recorded-sounds b/Lang/Racket/Play-recorded-sounds
new file mode 120000
index 0000000000..5e25c298cf
--- /dev/null
+++ b/Lang/Racket/Play-recorded-sounds
@@ -0,0 +1 @@
+../../Task/Play-recorded-sounds/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Polymorphism b/Lang/Racket/Polymorphism
new file mode 120000
index 0000000000..5e443f17fa
--- /dev/null
+++ b/Lang/Racket/Polymorphism
@@ -0,0 +1 @@
+../../Task/Polymorphism/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Polynomial-long-division b/Lang/Racket/Polynomial-long-division
new file mode 120000
index 0000000000..757bcd01bb
--- /dev/null
+++ b/Lang/Racket/Polynomial-long-division
@@ -0,0 +1 @@
+../../Task/Polynomial-long-division/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Simple-database b/Lang/Racket/Simple-database
new file mode 120000
index 0000000000..0bcad30e19
--- /dev/null
+++ b/Lang/Racket/Simple-database
@@ -0,0 +1 @@
+../../Task/Simple-database/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Sokoban b/Lang/Racket/Sokoban
new file mode 120000
index 0000000000..1d7cbc6766
--- /dev/null
+++ b/Lang/Racket/Sokoban
@@ -0,0 +1 @@
+../../Task/Sokoban/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Solve-a-Hidato-puzzle b/Lang/Racket/Solve-a-Hidato-puzzle
new file mode 120000
index 0000000000..de80656cea
--- /dev/null
+++ b/Lang/Racket/Solve-a-Hidato-puzzle
@@ -0,0 +1 @@
+../../Task/Solve-a-Hidato-puzzle/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Sutherland-Hodgman-polygon-clipping b/Lang/Racket/Sutherland-Hodgman-polygon-clipping
new file mode 120000
index 0000000000..8b5c9e852c
--- /dev/null
+++ b/Lang/Racket/Sutherland-Hodgman-polygon-clipping
@@ -0,0 +1 @@
+../../Task/Sutherland-Hodgman-polygon-clipping/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Thieles-interpolation-formula b/Lang/Racket/Thieles-interpolation-formula
new file mode 120000
index 0000000000..f20f6b0c81
--- /dev/null
+++ b/Lang/Racket/Thieles-interpolation-formula
@@ -0,0 +1 @@
+../../Task/Thieles-interpolation-formula/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Tic-tac-toe b/Lang/Racket/Tic-tac-toe
new file mode 120000
index 0000000000..6deb516d19
--- /dev/null
+++ b/Lang/Racket/Tic-tac-toe
@@ -0,0 +1 @@
+../../Task/Tic-tac-toe/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Top-rank-per-group b/Lang/Racket/Top-rank-per-group
new file mode 120000
index 0000000000..3adc266252
--- /dev/null
+++ b/Lang/Racket/Top-rank-per-group
@@ -0,0 +1 @@
+../../Task/Top-rank-per-group/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Topic-variable b/Lang/Racket/Topic-variable
new file mode 120000
index 0000000000..0d11cdb1a8
--- /dev/null
+++ b/Lang/Racket/Topic-variable
@@ -0,0 +1 @@
+../../Task/Topic-variable/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Topological-sort b/Lang/Racket/Topological-sort
new file mode 120000
index 0000000000..64ee428687
--- /dev/null
+++ b/Lang/Racket/Topological-sort
@@ -0,0 +1 @@
+../../Task/Topological-sort/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Topswops b/Lang/Racket/Topswops
new file mode 120000
index 0000000000..532a44aab1
--- /dev/null
+++ b/Lang/Racket/Topswops
@@ -0,0 +1 @@
+../../Task/Topswops/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Trabb-Pardo-Knuth-algorithm b/Lang/Racket/Trabb-Pardo-Knuth-algorithm
new file mode 120000
index 0000000000..5b5d3555da
--- /dev/null
+++ b/Lang/Racket/Trabb-Pardo-Knuth-algorithm
@@ -0,0 +1 @@
+../../Task/Trabb-Pardo-Knuth-algorithm/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Tree-traversal b/Lang/Racket/Tree-traversal
new file mode 120000
index 0000000000..38972b8d35
--- /dev/null
+++ b/Lang/Racket/Tree-traversal
@@ -0,0 +1 @@
+../../Task/Tree-traversal/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Trigonometric-functions b/Lang/Racket/Trigonometric-functions
new file mode 120000
index 0000000000..5ef7fb2dc1
--- /dev/null
+++ b/Lang/Racket/Trigonometric-functions
@@ -0,0 +1 @@
+../../Task/Trigonometric-functions/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Truncatable-primes b/Lang/Racket/Truncatable-primes
new file mode 120000
index 0000000000..69c486e924
--- /dev/null
+++ b/Lang/Racket/Truncatable-primes
@@ -0,0 +1 @@
+../../Task/Truncatable-primes/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Truncate-a-file b/Lang/Racket/Truncate-a-file
new file mode 120000
index 0000000000..73a4d9007b
--- /dev/null
+++ b/Lang/Racket/Truncate-a-file
@@ -0,0 +1 @@
+../../Task/Truncate-a-file/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Twelve-statements b/Lang/Racket/Twelve-statements
new file mode 120000
index 0000000000..fd6dc5df56
--- /dev/null
+++ b/Lang/Racket/Twelve-statements
@@ -0,0 +1 @@
+../../Task/Twelve-statements/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Unbias-a-random-generator b/Lang/Racket/Unbias-a-random-generator
new file mode 120000
index 0000000000..36a69a52d1
--- /dev/null
+++ b/Lang/Racket/Unbias-a-random-generator
@@ -0,0 +1 @@
+../../Task/Unbias-a-random-generator/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Undefined-values b/Lang/Racket/Undefined-values
new file mode 120000
index 0000000000..0d270eb21e
--- /dev/null
+++ b/Lang/Racket/Undefined-values
@@ -0,0 +1 @@
+../../Task/Undefined-values/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Unicode-strings b/Lang/Racket/Unicode-strings
new file mode 120000
index 0000000000..cd92506692
--- /dev/null
+++ b/Lang/Racket/Unicode-strings
@@ -0,0 +1 @@
+../../Task/Unicode-strings/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Universal-Turing-machine b/Lang/Racket/Universal-Turing-machine
new file mode 120000
index 0000000000..209b9242e9
--- /dev/null
+++ b/Lang/Racket/Universal-Turing-machine
@@ -0,0 +1 @@
+../../Task/Universal-Turing-machine/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Update-a-configuration-file b/Lang/Racket/Update-a-configuration-file
new file mode 120000
index 0000000000..68335d2180
--- /dev/null
+++ b/Lang/Racket/Update-a-configuration-file
@@ -0,0 +1 @@
+../../Task/Update-a-configuration-file/Racket
\ No newline at end of file
diff --git a/Lang/Racket/User-input-Graphical b/Lang/Racket/User-input-Graphical
new file mode 120000
index 0000000000..d34b653d76
--- /dev/null
+++ b/Lang/Racket/User-input-Graphical
@@ -0,0 +1 @@
+../../Task/User-input-Graphical/Racket
\ No newline at end of file
diff --git a/Lang/Racket/User-input-Text b/Lang/Racket/User-input-Text
new file mode 120000
index 0000000000..1431b5daa7
--- /dev/null
+++ b/Lang/Racket/User-input-Text
@@ -0,0 +1 @@
+../../Task/User-input-Text/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Van-der-Corput-sequence b/Lang/Racket/Van-der-Corput-sequence
new file mode 120000
index 0000000000..8666f2573c
--- /dev/null
+++ b/Lang/Racket/Van-der-Corput-sequence
@@ -0,0 +1 @@
+../../Task/Van-der-Corput-sequence/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Variable-length-quantity b/Lang/Racket/Variable-length-quantity
new file mode 120000
index 0000000000..cd090178f4
--- /dev/null
+++ b/Lang/Racket/Variable-length-quantity
@@ -0,0 +1 @@
+../../Task/Variable-length-quantity/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Variable-size-Get b/Lang/Racket/Variable-size-Get
new file mode 120000
index 0000000000..e2549f1357
--- /dev/null
+++ b/Lang/Racket/Variable-size-Get
@@ -0,0 +1 @@
+../../Task/Variable-size-Get/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Variables b/Lang/Racket/Variables
new file mode 120000
index 0000000000..fbb5ab5e46
--- /dev/null
+++ b/Lang/Racket/Variables
@@ -0,0 +1 @@
+../../Task/Variables/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Variadic-function b/Lang/Racket/Variadic-function
new file mode 120000
index 0000000000..7c94092234
--- /dev/null
+++ b/Lang/Racket/Variadic-function
@@ -0,0 +1 @@
+../../Task/Variadic-function/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Vector-products b/Lang/Racket/Vector-products
new file mode 120000
index 0000000000..1a42855b4f
--- /dev/null
+++ b/Lang/Racket/Vector-products
@@ -0,0 +1 @@
+../../Task/Vector-products/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Verify-distribution-uniformity-Chi-squared-test b/Lang/Racket/Verify-distribution-uniformity-Chi-squared-test
new file mode 120000
index 0000000000..3f5771dbd4
--- /dev/null
+++ b/Lang/Racket/Verify-distribution-uniformity-Chi-squared-test
@@ -0,0 +1 @@
+../../Task/Verify-distribution-uniformity-Chi-squared-test/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Verify-distribution-uniformity-Naive b/Lang/Racket/Verify-distribution-uniformity-Naive
new file mode 120000
index 0000000000..150ff99702
--- /dev/null
+++ b/Lang/Racket/Verify-distribution-uniformity-Naive
@@ -0,0 +1 @@
+../../Task/Verify-distribution-uniformity-Naive/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Vigen-re-cipher b/Lang/Racket/Vigen-re-cipher
new file mode 120000
index 0000000000..7eef7c9ebb
--- /dev/null
+++ b/Lang/Racket/Vigen-re-cipher
@@ -0,0 +1 @@
+../../Task/Vigen-re-cipher/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Vigen-re-cipher-Cryptanalysis b/Lang/Racket/Vigen-re-cipher-Cryptanalysis
new file mode 120000
index 0000000000..449a604ff7
--- /dev/null
+++ b/Lang/Racket/Vigen-re-cipher-Cryptanalysis
@@ -0,0 +1 @@
+../../Task/Vigen-re-cipher-Cryptanalysis/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Visualize-a-tree b/Lang/Racket/Visualize-a-tree
new file mode 120000
index 0000000000..fb4036f8de
--- /dev/null
+++ b/Lang/Racket/Visualize-a-tree
@@ -0,0 +1 @@
+../../Task/Visualize-a-tree/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Voronoi-diagram b/Lang/Racket/Voronoi-diagram
new file mode 120000
index 0000000000..4172b9de09
--- /dev/null
+++ b/Lang/Racket/Voronoi-diagram
@@ -0,0 +1 @@
+../../Task/Voronoi-diagram/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Walk-a-directory-Non-recursively b/Lang/Racket/Walk-a-directory-Non-recursively
new file mode 120000
index 0000000000..b9573d69c7
--- /dev/null
+++ b/Lang/Racket/Walk-a-directory-Non-recursively
@@ -0,0 +1 @@
+../../Task/Walk-a-directory-Non-recursively/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Walk-a-directory-Recursively b/Lang/Racket/Walk-a-directory-Recursively
new file mode 120000
index 0000000000..4ccea0a260
--- /dev/null
+++ b/Lang/Racket/Walk-a-directory-Recursively
@@ -0,0 +1 @@
+../../Task/Walk-a-directory-Recursively/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Web-scraping b/Lang/Racket/Web-scraping
new file mode 120000
index 0000000000..f0bc8db83f
--- /dev/null
+++ b/Lang/Racket/Web-scraping
@@ -0,0 +1 @@
+../../Task/Web-scraping/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Window-creation-X11 b/Lang/Racket/Window-creation-X11
new file mode 120000
index 0000000000..e9e7a87381
--- /dev/null
+++ b/Lang/Racket/Window-creation-X11
@@ -0,0 +1 @@
+../../Task/Window-creation-X11/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Window-management b/Lang/Racket/Window-management
new file mode 120000
index 0000000000..c62d36c64f
--- /dev/null
+++ b/Lang/Racket/Window-management
@@ -0,0 +1 @@
+../../Task/Window-management/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Wireworld b/Lang/Racket/Wireworld
new file mode 120000
index 0000000000..cfe4a7c27b
--- /dev/null
+++ b/Lang/Racket/Wireworld
@@ -0,0 +1 @@
+../../Task/Wireworld/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Word-wrap b/Lang/Racket/Word-wrap
new file mode 120000
index 0000000000..12312fd0ef
--- /dev/null
+++ b/Lang/Racket/Word-wrap
@@ -0,0 +1 @@
+../../Task/Word-wrap/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Write-float-arrays-to-a-text-file b/Lang/Racket/Write-float-arrays-to-a-text-file
new file mode 120000
index 0000000000..2d2d653570
--- /dev/null
+++ b/Lang/Racket/Write-float-arrays-to-a-text-file
@@ -0,0 +1 @@
+../../Task/Write-float-arrays-to-a-text-file/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Write-language-name-in-3D-ASCII b/Lang/Racket/Write-language-name-in-3D-ASCII
new file mode 120000
index 0000000000..3f5e72a4da
--- /dev/null
+++ b/Lang/Racket/Write-language-name-in-3D-ASCII
@@ -0,0 +1 @@
+../../Task/Write-language-name-in-3D-ASCII/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Write-to-Windows-event-log b/Lang/Racket/Write-to-Windows-event-log
new file mode 120000
index 0000000000..3394c55f49
--- /dev/null
+++ b/Lang/Racket/Write-to-Windows-event-log
@@ -0,0 +1 @@
+../../Task/Write-to-Windows-event-log/Racket
\ No newline at end of file
diff --git a/Lang/Racket/XML-DOM-serialization b/Lang/Racket/XML-DOM-serialization
new file mode 120000
index 0000000000..c32cd6a542
--- /dev/null
+++ b/Lang/Racket/XML-DOM-serialization
@@ -0,0 +1 @@
+../../Task/XML-DOM-serialization/Racket
\ No newline at end of file
diff --git a/Lang/Racket/XML-XPath b/Lang/Racket/XML-XPath
new file mode 120000
index 0000000000..ffb3a5c8d5
--- /dev/null
+++ b/Lang/Racket/XML-XPath
@@ -0,0 +1 @@
+../../Task/XML-XPath/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Xiaolin-Wus-line-algorithm b/Lang/Racket/Xiaolin-Wus-line-algorithm
new file mode 120000
index 0000000000..f373e79dc3
--- /dev/null
+++ b/Lang/Racket/Xiaolin-Wus-line-algorithm
@@ -0,0 +1 @@
+../../Task/Xiaolin-Wus-line-algorithm/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Y-combinator b/Lang/Racket/Y-combinator
new file mode 120000
index 0000000000..f04f4cecb7
--- /dev/null
+++ b/Lang/Racket/Y-combinator
@@ -0,0 +1 @@
+../../Task/Y-combinator/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Yahoo--search-interface b/Lang/Racket/Yahoo--search-interface
new file mode 120000
index 0000000000..ad3cf6bb88
--- /dev/null
+++ b/Lang/Racket/Yahoo--search-interface
@@ -0,0 +1 @@
+../../Task/Yahoo--search-interface/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Zeckendorf-arithmetic b/Lang/Racket/Zeckendorf-arithmetic
new file mode 120000
index 0000000000..a186fcc5b1
--- /dev/null
+++ b/Lang/Racket/Zeckendorf-arithmetic
@@ -0,0 +1 @@
+../../Task/Zeckendorf-arithmetic/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Zeckendorf-number-representation b/Lang/Racket/Zeckendorf-number-representation
new file mode 120000
index 0000000000..e2ba6621b6
--- /dev/null
+++ b/Lang/Racket/Zeckendorf-number-representation
@@ -0,0 +1 @@
+../../Task/Zeckendorf-number-representation/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Zig-zag-matrix b/Lang/Racket/Zig-zag-matrix
new file mode 120000
index 0000000000..bc3e3972a3
--- /dev/null
+++ b/Lang/Racket/Zig-zag-matrix
@@ -0,0 +1 @@
+../../Task/Zig-zag-matrix/Racket
\ No newline at end of file
diff --git a/Lang/Raven/Time-a-function b/Lang/Raven/Time-a-function
new file mode 120000
index 0000000000..2b6532dbeb
--- /dev/null
+++ b/Lang/Raven/Time-a-function
@@ -0,0 +1 @@
+../../Task/Time-a-function/Raven
\ No newline at end of file
diff --git a/Lang/Raven/Towers-of-Hanoi b/Lang/Raven/Towers-of-Hanoi
new file mode 120000
index 0000000000..268e566ff3
--- /dev/null
+++ b/Lang/Raven/Towers-of-Hanoi
@@ -0,0 +1 @@
+../../Task/Towers-of-Hanoi/Raven
\ No newline at end of file
diff --git a/Lang/Raven/Write-float-arrays-to-a-text-file b/Lang/Raven/Write-float-arrays-to-a-text-file
new file mode 120000
index 0000000000..4ceb75dac2
--- /dev/null
+++ b/Lang/Raven/Write-float-arrays-to-a-text-file
@@ -0,0 +1 @@
+../../Task/Write-float-arrays-to-a-text-file/Raven
\ No newline at end of file
diff --git a/Lang/Raven/Write-language-name-in-3D-ASCII b/Lang/Raven/Write-language-name-in-3D-ASCII
new file mode 120000
index 0000000000..b8cc9dcde9
--- /dev/null
+++ b/Lang/Raven/Write-language-name-in-3D-ASCII
@@ -0,0 +1 @@
+../../Task/Write-language-name-in-3D-ASCII/Raven
\ No newline at end of file
diff --git a/Lang/Revolution/00DESCRIPTION b/Lang/Revolution/00DESCRIPTION
index 8679eb5b56..d1fc1d7581 100644
--- a/Lang/Revolution/00DESCRIPTION
+++ b/Lang/Revolution/00DESCRIPTION
@@ -1,14 +1 @@
-{{language|Revolution
-|exec=bytecode
-|gc=yes
-|site= http://www.runrev.com
-|LCT=yes}}{{language programming paradigm|Dynamic}}
-{{language programming paradigm|Object-oriented}}
-{{language programming paradigm|Imperative}}
-Revolution is an interpreted language created by [http://www.runrev.com Runtime Revolution]
-
-It is descended from HyperCard/HyperTalk, but extends that heritage by:
-*Running on OS X, Mac Classic, Windows, Unix, and in modern web browsers
-*Having a full interface toolkit with native widgets on all platforms
-*Incorporating modern language features like regex, associative arrays, support for internet protocols, etc.
-*Last but not least, supporting color natively (HyperCard die-hards are now breathing a sigh of relief)
\ No newline at end of file
+#REDIRECT [[:Category:LiveCode]]
\ No newline at end of file
diff --git a/Lang/Ruby/Digital-root b/Lang/Ruby/Digital-root
new file mode 120000
index 0000000000..ad129ad4df
--- /dev/null
+++ b/Lang/Ruby/Digital-root
@@ -0,0 +1 @@
+../../Task/Digital-root/Ruby
\ No newline at end of file
diff --git a/Lang/Ruby/Matrix-arithmetic b/Lang/Ruby/Matrix-arithmetic
new file mode 120000
index 0000000000..f338d00fa1
--- /dev/null
+++ b/Lang/Ruby/Matrix-arithmetic
@@ -0,0 +1 @@
+../../Task/Matrix-arithmetic/Ruby
\ No newline at end of file
diff --git a/Lang/Ruby/Ordered-Partitions b/Lang/Ruby/Ordered-Partitions
new file mode 120000
index 0000000000..b1f7bf9bce
--- /dev/null
+++ b/Lang/Ruby/Ordered-Partitions
@@ -0,0 +1 @@
+../../Task/Ordered-Partitions/Ruby
\ No newline at end of file
diff --git a/Lang/Ruby/Set-puzzle b/Lang/Ruby/Set-puzzle
new file mode 120000
index 0000000000..eb671e2c9b
--- /dev/null
+++ b/Lang/Ruby/Set-puzzle
@@ -0,0 +1 @@
+../../Task/Set-puzzle/Ruby
\ No newline at end of file
diff --git a/Lang/Ruby/String-comparison b/Lang/Ruby/String-comparison
new file mode 120000
index 0000000000..50aa6d2d44
--- /dev/null
+++ b/Lang/Ruby/String-comparison
@@ -0,0 +1 @@
+../../Task/String-comparison/Ruby
\ No newline at end of file
diff --git a/Lang/Ruby/Topswops b/Lang/Ruby/Topswops
new file mode 120000
index 0000000000..4979b33716
--- /dev/null
+++ b/Lang/Ruby/Topswops
@@ -0,0 +1 @@
+../../Task/Topswops/Ruby
\ No newline at end of file
diff --git a/Lang/Ruby/Unbias-a-random-generator b/Lang/Ruby/Unbias-a-random-generator
new file mode 120000
index 0000000000..ef130a31db
--- /dev/null
+++ b/Lang/Ruby/Unbias-a-random-generator
@@ -0,0 +1 @@
+../../Task/Unbias-a-random-generator/Ruby
\ No newline at end of file
diff --git a/Lang/Run-BASIC/Dutch-national-flag-problem b/Lang/Run-BASIC/Dutch-national-flag-problem
new file mode 120000
index 0000000000..df92754577
--- /dev/null
+++ b/Lang/Run-BASIC/Dutch-national-flag-problem
@@ -0,0 +1 @@
+../../Task/Dutch-national-flag-problem/Run-BASIC
\ No newline at end of file
diff --git a/Lang/Run-BASIC/Factors-of-an-integer b/Lang/Run-BASIC/Factors-of-an-integer
new file mode 120000
index 0000000000..258cace42f
--- /dev/null
+++ b/Lang/Run-BASIC/Factors-of-an-integer
@@ -0,0 +1 @@
+../../Task/Factors-of-an-integer/Run-BASIC
\ No newline at end of file
diff --git a/Lang/Run-BASIC/Hofstadter-Q-sequence b/Lang/Run-BASIC/Hofstadter-Q-sequence
new file mode 120000
index 0000000000..54f9146f82
--- /dev/null
+++ b/Lang/Run-BASIC/Hofstadter-Q-sequence
@@ -0,0 +1 @@
+../../Task/Hofstadter-Q-sequence/Run-BASIC
\ No newline at end of file
diff --git a/Lang/Run-BASIC/Loops-For b/Lang/Run-BASIC/Loops-For
new file mode 120000
index 0000000000..c7f7e0840a
--- /dev/null
+++ b/Lang/Run-BASIC/Loops-For
@@ -0,0 +1 @@
+../../Task/Loops-For/Run-BASIC
\ No newline at end of file
diff --git a/Lang/Run-BASIC/Loops-N-plus-one-half b/Lang/Run-BASIC/Loops-N-plus-one-half
new file mode 120000
index 0000000000..f23bffb7ee
--- /dev/null
+++ b/Lang/Run-BASIC/Loops-N-plus-one-half
@@ -0,0 +1 @@
+../../Task/Loops-N-plus-one-half/Run-BASIC
\ No newline at end of file
diff --git a/Lang/Run-BASIC/Parametrized-SQL-statement b/Lang/Run-BASIC/Parametrized-SQL-statement
new file mode 120000
index 0000000000..adfdf677ad
--- /dev/null
+++ b/Lang/Run-BASIC/Parametrized-SQL-statement
@@ -0,0 +1 @@
+../../Task/Parametrized-SQL-statement/Run-BASIC
\ No newline at end of file
diff --git a/Lang/Run-BASIC/Symmetric-difference b/Lang/Run-BASIC/Symmetric-difference
new file mode 120000
index 0000000000..9d4b3dcf28
--- /dev/null
+++ b/Lang/Run-BASIC/Symmetric-difference
@@ -0,0 +1 @@
+../../Task/Symmetric-difference/Run-BASIC
\ No newline at end of file
diff --git a/Lang/Rust/Deal-cards-for-FreeCell b/Lang/Rust/Deal-cards-for-FreeCell
new file mode 120000
index 0000000000..d3cb405b9c
--- /dev/null
+++ b/Lang/Rust/Deal-cards-for-FreeCell
@@ -0,0 +1 @@
+../../Task/Deal-cards-for-FreeCell/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Dining-philosophers b/Lang/Rust/Dining-philosophers
new file mode 120000
index 0000000000..615b731018
--- /dev/null
+++ b/Lang/Rust/Dining-philosophers
@@ -0,0 +1 @@
+../../Task/Dining-philosophers/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Increment-a-numerical-string b/Lang/Rust/Increment-a-numerical-string
new file mode 120000
index 0000000000..5be4e0542e
--- /dev/null
+++ b/Lang/Rust/Increment-a-numerical-string
@@ -0,0 +1 @@
+../../Task/Increment-a-numerical-string/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Levenshtein-distance b/Lang/Rust/Levenshtein-distance
new file mode 120000
index 0000000000..095c7bbb7f
--- /dev/null
+++ b/Lang/Rust/Levenshtein-distance
@@ -0,0 +1 @@
+../../Task/Levenshtein-distance/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Mouse-position b/Lang/Rust/Mouse-position
new file mode 120000
index 0000000000..6bb190957f
--- /dev/null
+++ b/Lang/Rust/Mouse-position
@@ -0,0 +1 @@
+../../Task/Mouse-position/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Reverse-a-string b/Lang/Rust/Reverse-a-string
new file mode 120000
index 0000000000..5e95b2e626
--- /dev/null
+++ b/Lang/Rust/Reverse-a-string
@@ -0,0 +1 @@
+../../Task/Reverse-a-string/Rust
\ No newline at end of file
diff --git a/Lang/Rust/String-concatenation b/Lang/Rust/String-concatenation
new file mode 120000
index 0000000000..c3090d652c
--- /dev/null
+++ b/Lang/Rust/String-concatenation
@@ -0,0 +1 @@
+../../Task/String-concatenation/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Strip-whitespace-from-a-string-Top-and-tail b/Lang/Rust/Strip-whitespace-from-a-string-Top-and-tail
new file mode 120000
index 0000000000..12ceb1c2b6
--- /dev/null
+++ b/Lang/Rust/Strip-whitespace-from-a-string-Top-and-tail
@@ -0,0 +1 @@
+../../Task/Strip-whitespace-from-a-string-Top-and-tail/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Unicode-variable-names b/Lang/Rust/Unicode-variable-names
new file mode 120000
index 0000000000..14761eb6e3
--- /dev/null
+++ b/Lang/Rust/Unicode-variable-names
@@ -0,0 +1 @@
+../../Task/Unicode-variable-names/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Y-combinator b/Lang/Rust/Y-combinator
new file mode 120000
index 0000000000..add2b4398b
--- /dev/null
+++ b/Lang/Rust/Y-combinator
@@ -0,0 +1 @@
+../../Task/Y-combinator/Rust
\ No newline at end of file
diff --git a/Lang/SAS/Palindrome-detection b/Lang/SAS/Palindrome-detection
new file mode 120000
index 0000000000..6514b89291
--- /dev/null
+++ b/Lang/SAS/Palindrome-detection
@@ -0,0 +1 @@
+../../Task/Palindrome-detection/SAS
\ No newline at end of file
diff --git a/Lang/SAS/Random-numbers b/Lang/SAS/Random-numbers
new file mode 120000
index 0000000000..f204fe1612
--- /dev/null
+++ b/Lang/SAS/Random-numbers
@@ -0,0 +1 @@
+../../Task/Random-numbers/SAS
\ No newline at end of file
diff --git a/Lang/SAS/Strip-a-set-of-characters-from-a-string b/Lang/SAS/Strip-a-set-of-characters-from-a-string
new file mode 120000
index 0000000000..7b7457e1b9
--- /dev/null
+++ b/Lang/SAS/Strip-a-set-of-characters-from-a-string
@@ -0,0 +1 @@
+../../Task/Strip-a-set-of-characters-from-a-string/SAS
\ No newline at end of file
diff --git a/Lang/SQL/Palindrome-detection b/Lang/SQL/Palindrome-detection
new file mode 120000
index 0000000000..49047bbdaa
--- /dev/null
+++ b/Lang/SQL/Palindrome-detection
@@ -0,0 +1 @@
+../../Task/Palindrome-detection/SQL
\ No newline at end of file
diff --git a/Lang/Scala/00DESCRIPTION b/Lang/Scala/00DESCRIPTION
index e26d614ed1..1718b44813 100644
--- a/Lang/Scala/00DESCRIPTION
+++ b/Lang/Scala/00DESCRIPTION
@@ -4,9 +4,13 @@
|checking=static
|gc=yes
|site=http://scala-lang.org
-|tags=scala
+|tags=Scala
|LCT=yes
|bnf=http://www.scala-lang.org/docu/files/ScalaReference.pdf}}
{{language programming paradigm|functional}}
{{language programming paradigm|object-oriented}}
-{{language programming paradigm|generic}}Scala is a hybrid [[functional programming|Functional]]/[[object-oriented|OO]] language developed by Martin Odersky and his team at [http://lamp.epfl.ch/ LAMP]. Scala compiles to [[runs on vm::Java Virtual Machine|JVM]] [[bytecode]], and can interoperate with [[Java]] code.
\ No newline at end of file
+{{language programming paradigm|generic}}Scala is a hybrid [[functional programming|Functional]]/[[object-oriented|OO]] language developed by Martin Odersky and his team at [http://lamp.epfl.ch/ LAMP]. Scala compiles to [[runs on vm::Java Virtual Machine|JVM]] [[bytecode]], and can inter-operate with [[Java]] code. Running as a .Net [[Common Language Runtime]] application is also supported.
+
+The language is most focused on the results of the program, therefor the [http://en.wikipedia.org/wiki/Considered_harmful considered harmful] technical computer oriented concepts like threads, semaphore, pointers, goto- and break statements to struggle with are not there. For parallel processing (that very simple can archived) these concept are present but not visible to the programmer.
+
+The problem with rosetta.org is that lot of tasks addresses the technical "features" of goto's, break, continue, side effects, pointers, type-casting, weak-typing and so on are deliberate not Scala's cup of tea.
\ No newline at end of file
diff --git a/Lang/Scala/CRC-32 b/Lang/Scala/CRC-32
new file mode 120000
index 0000000000..8df38fe529
--- /dev/null
+++ b/Lang/Scala/CRC-32
@@ -0,0 +1 @@
+../../Task/CRC-32/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Check-that-file-exists b/Lang/Scala/Check-that-file-exists
new file mode 120000
index 0000000000..2f4bc338f8
--- /dev/null
+++ b/Lang/Scala/Check-that-file-exists
@@ -0,0 +1 @@
+../../Task/Check-that-file-exists/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Constrained-random-points-on-a-circle b/Lang/Scala/Constrained-random-points-on-a-circle
new file mode 120000
index 0000000000..a4d20d881d
--- /dev/null
+++ b/Lang/Scala/Constrained-random-points-on-a-circle
@@ -0,0 +1 @@
+../../Task/Constrained-random-points-on-a-circle/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Count-in-factors b/Lang/Scala/Count-in-factors
new file mode 120000
index 0000000000..5a861f1e6c
--- /dev/null
+++ b/Lang/Scala/Count-in-factors
@@ -0,0 +1 @@
+../../Task/Count-in-factors/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Executable-library b/Lang/Scala/Executable-library
new file mode 120000
index 0000000000..e2d0fadb95
--- /dev/null
+++ b/Lang/Scala/Executable-library
@@ -0,0 +1 @@
+../../Task/Executable-library/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Extreme-floating-point-values b/Lang/Scala/Extreme-floating-point-values
new file mode 120000
index 0000000000..2853b46c7d
--- /dev/null
+++ b/Lang/Scala/Extreme-floating-point-values
@@ -0,0 +1 @@
+../../Task/Extreme-floating-point-values/Scala
\ No newline at end of file
diff --git a/Lang/Scala/HTTPS b/Lang/Scala/HTTPS
new file mode 120000
index 0000000000..9771c733b9
--- /dev/null
+++ b/Lang/Scala/HTTPS
@@ -0,0 +1 @@
+../../Task/HTTPS/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Hello-world-Line-printer b/Lang/Scala/Hello-world-Line-printer
new file mode 120000
index 0000000000..ae1884547f
--- /dev/null
+++ b/Lang/Scala/Hello-world-Line-printer
@@ -0,0 +1 @@
+../../Task/Hello-world-Line-printer/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Hello-world-Newline-omission b/Lang/Scala/Hello-world-Newline-omission
new file mode 120000
index 0000000000..c7e1a7f495
--- /dev/null
+++ b/Lang/Scala/Hello-world-Newline-omission
@@ -0,0 +1 @@
+../../Task/Hello-world-Newline-omission/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Hello-world-Web-server b/Lang/Scala/Hello-world-Web-server
new file mode 120000
index 0000000000..91c6e665f6
--- /dev/null
+++ b/Lang/Scala/Hello-world-Web-server
@@ -0,0 +1 @@
+../../Task/Hello-world-Web-server/Scala
\ No newline at end of file
diff --git a/Lang/Scala/LZW-compression b/Lang/Scala/LZW-compression
new file mode 120000
index 0000000000..51c8d4f2aa
--- /dev/null
+++ b/Lang/Scala/LZW-compression
@@ -0,0 +1 @@
+../../Task/LZW-compression/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Literals-Floating-point b/Lang/Scala/Literals-Floating-point
new file mode 120000
index 0000000000..130c176401
--- /dev/null
+++ b/Lang/Scala/Literals-Floating-point
@@ -0,0 +1 @@
+../../Task/Literals-Floating-point/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Mouse-position b/Lang/Scala/Mouse-position
new file mode 120000
index 0000000000..72ea393799
--- /dev/null
+++ b/Lang/Scala/Mouse-position
@@ -0,0 +1 @@
+../../Task/Mouse-position/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Playing-cards b/Lang/Scala/Playing-cards
new file mode 120000
index 0000000000..2b2a950ca9
--- /dev/null
+++ b/Lang/Scala/Playing-cards
@@ -0,0 +1 @@
+../../Task/Playing-cards/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Send-email b/Lang/Scala/Send-email
new file mode 120000
index 0000000000..163a49791a
--- /dev/null
+++ b/Lang/Scala/Send-email
@@ -0,0 +1 @@
+../../Task/Send-email/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Simulate-input-Keyboard b/Lang/Scala/Simulate-input-Keyboard
new file mode 120000
index 0000000000..67f7c25f44
--- /dev/null
+++ b/Lang/Scala/Simulate-input-Keyboard
@@ -0,0 +1 @@
+../../Task/Simulate-input-Keyboard/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Sort-an-array-of-composite-structures b/Lang/Scala/Sort-an-array-of-composite-structures
new file mode 120000
index 0000000000..6da98233a0
--- /dev/null
+++ b/Lang/Scala/Sort-an-array-of-composite-structures
@@ -0,0 +1 @@
+../../Task/Sort-an-array-of-composite-structures/Scala
\ No newline at end of file
diff --git a/Lang/Scala/String-length b/Lang/Scala/String-length
new file mode 120000
index 0000000000..d9a3736788
--- /dev/null
+++ b/Lang/Scala/String-length
@@ -0,0 +1 @@
+../../Task/String-length/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Take-notes-on-the-command-line b/Lang/Scala/Take-notes-on-the-command-line
new file mode 120000
index 0000000000..35f5d91e09
--- /dev/null
+++ b/Lang/Scala/Take-notes-on-the-command-line
@@ -0,0 +1 @@
+../../Task/Take-notes-on-the-command-line/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Unbias-a-random-generator b/Lang/Scala/Unbias-a-random-generator
new file mode 120000
index 0000000000..9f98379b6b
--- /dev/null
+++ b/Lang/Scala/Unbias-a-random-generator
@@ -0,0 +1 @@
+../../Task/Unbias-a-random-generator/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Unicode-strings b/Lang/Scala/Unicode-strings
new file mode 120000
index 0000000000..0755eb1926
--- /dev/null
+++ b/Lang/Scala/Unicode-strings
@@ -0,0 +1 @@
+../../Task/Unicode-strings/Scala
\ No newline at end of file
diff --git a/Lang/Scala/User-input-Graphical b/Lang/Scala/User-input-Graphical
new file mode 120000
index 0000000000..bfede5d2b4
--- /dev/null
+++ b/Lang/Scala/User-input-Graphical
@@ -0,0 +1 @@
+../../Task/User-input-Graphical/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Vampire-number b/Lang/Scala/Vampire-number
new file mode 120000
index 0000000000..e6089a00ea
--- /dev/null
+++ b/Lang/Scala/Vampire-number
@@ -0,0 +1 @@
+../../Task/Vampire-number/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Yin-and-yang b/Lang/Scala/Yin-and-yang
new file mode 120000
index 0000000000..838a5f4ae7
--- /dev/null
+++ b/Lang/Scala/Yin-and-yang
@@ -0,0 +1 @@
+../../Task/Yin-and-yang/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Zeckendorf-arithmetic b/Lang/Scala/Zeckendorf-arithmetic
new file mode 120000
index 0000000000..515d31b4d4
--- /dev/null
+++ b/Lang/Scala/Zeckendorf-arithmetic
@@ -0,0 +1 @@
+../../Task/Zeckendorf-arithmetic/Scala
\ No newline at end of file
diff --git a/Lang/Seed7/Carmichael-3-strong-pseudoprimes b/Lang/Seed7/Carmichael-3-strong-pseudoprimes
new file mode 120000
index 0000000000..0888d9907c
--- /dev/null
+++ b/Lang/Seed7/Carmichael-3-strong-pseudoprimes
@@ -0,0 +1 @@
+../../Task/Carmichael-3-strong-pseudoprimes/Seed7
\ No newline at end of file
diff --git a/Lang/Seed7/Walk-a-directory-Recursively b/Lang/Seed7/Walk-a-directory-Recursively
new file mode 120000
index 0000000000..f1de6d7d96
--- /dev/null
+++ b/Lang/Seed7/Walk-a-directory-Recursively
@@ -0,0 +1 @@
+../../Task/Walk-a-directory-Recursively/Seed7
\ No newline at end of file
diff --git a/Lang/Seed7/Word-wrap b/Lang/Seed7/Word-wrap
new file mode 120000
index 0000000000..2e88622454
--- /dev/null
+++ b/Lang/Seed7/Word-wrap
@@ -0,0 +1 @@
+../../Task/Word-wrap/Seed7
\ No newline at end of file
diff --git a/Lang/Standard-ML/Guess-the-number-With-feedback--player- b/Lang/Standard-ML/Guess-the-number-With-feedback--player-
new file mode 120000
index 0000000000..972c45a8c4
--- /dev/null
+++ b/Lang/Standard-ML/Guess-the-number-With-feedback--player-
@@ -0,0 +1 @@
+../../Task/Guess-the-number-With-feedback--player-/Standard-ML
\ No newline at end of file
diff --git a/Lang/Standard-ML/Palindrome-detection b/Lang/Standard-ML/Palindrome-detection
new file mode 120000
index 0000000000..6b8476e1ce
--- /dev/null
+++ b/Lang/Standard-ML/Palindrome-detection
@@ -0,0 +1 @@
+../../Task/Palindrome-detection/Standard-ML
\ No newline at end of file
diff --git a/Lang/Standard-ML/Sort-disjoint-sublist b/Lang/Standard-ML/Sort-disjoint-sublist
new file mode 120000
index 0000000000..7fb575da7c
--- /dev/null
+++ b/Lang/Standard-ML/Sort-disjoint-sublist
@@ -0,0 +1 @@
+../../Task/Sort-disjoint-sublist/Standard-ML
\ No newline at end of file
diff --git a/Lang/Tcl/Zeckendorf-arithmetic b/Lang/Tcl/Zeckendorf-arithmetic
new file mode 120000
index 0000000000..c063ae0fb2
--- /dev/null
+++ b/Lang/Tcl/Zeckendorf-arithmetic
@@ -0,0 +1 @@
+../../Task/Zeckendorf-arithmetic/Tcl
\ No newline at end of file
diff --git a/Lang/TorqueScript/Random-numbers b/Lang/TorqueScript/Random-numbers
new file mode 120000
index 0000000000..3bfc7e445a
--- /dev/null
+++ b/Lang/TorqueScript/Random-numbers
@@ -0,0 +1 @@
+../../Task/Random-numbers/TorqueScript
\ No newline at end of file
diff --git a/Lang/UNIX-Shell/Factors-of-an-integer b/Lang/UNIX-Shell/Factors-of-an-integer
new file mode 120000
index 0000000000..4453c7fbbc
--- /dev/null
+++ b/Lang/UNIX-Shell/Factors-of-an-integer
@@ -0,0 +1 @@
+../../Task/Factors-of-an-integer/UNIX-Shell
\ No newline at end of file
diff --git a/Lang/UNIX-Shell/Long-multiplication b/Lang/UNIX-Shell/Long-multiplication
new file mode 120000
index 0000000000..1576a0fa75
--- /dev/null
+++ b/Lang/UNIX-Shell/Long-multiplication
@@ -0,0 +1 @@
+../../Task/Long-multiplication/UNIX-Shell
\ No newline at end of file
diff --git a/Lang/UNIX-Shell/Test-a-function b/Lang/UNIX-Shell/Test-a-function
new file mode 120000
index 0000000000..cf62e68a36
--- /dev/null
+++ b/Lang/UNIX-Shell/Test-a-function
@@ -0,0 +1 @@
+../../Task/Test-a-function/UNIX-Shell
\ No newline at end of file
diff --git a/Lang/VBA/Introspection b/Lang/VBA/Introspection
new file mode 120000
index 0000000000..85068a35a5
--- /dev/null
+++ b/Lang/VBA/Introspection
@@ -0,0 +1 @@
+../../Task/Introspection/VBA
\ No newline at end of file
diff --git a/Lang/Vala/99-Bottles-of-Beer b/Lang/Vala/99-Bottles-of-Beer
new file mode 120000
index 0000000000..63799d0617
--- /dev/null
+++ b/Lang/Vala/99-Bottles-of-Beer
@@ -0,0 +1 @@
+../../Task/99-Bottles-of-Beer/Vala
\ No newline at end of file
diff --git a/Lang/Vala/Classes b/Lang/Vala/Classes
new file mode 120000
index 0000000000..bd2fbe24ea
--- /dev/null
+++ b/Lang/Vala/Classes
@@ -0,0 +1 @@
+../../Task/Classes/Vala
\ No newline at end of file
diff --git a/Lang/Vala/Leap-year b/Lang/Vala/Leap-year
new file mode 120000
index 0000000000..24d03174ca
--- /dev/null
+++ b/Lang/Vala/Leap-year
@@ -0,0 +1 @@
+../../Task/Leap-year/Vala
\ No newline at end of file
diff --git a/Lang/Vala/Singleton b/Lang/Vala/Singleton
new file mode 120000
index 0000000000..9a200611e1
--- /dev/null
+++ b/Lang/Vala/Singleton
@@ -0,0 +1 @@
+../../Task/Singleton/Vala
\ No newline at end of file
diff --git a/Lang/Vedit-macro-language/Animation b/Lang/Vedit-macro-language/Animation
new file mode 120000
index 0000000000..f54a728e54
--- /dev/null
+++ b/Lang/Vedit-macro-language/Animation
@@ -0,0 +1 @@
+../../Task/Animation/Vedit-macro-language
\ No newline at end of file
diff --git a/Lang/Vedit-macro-language/Forest-fire b/Lang/Vedit-macro-language/Forest-fire
new file mode 120000
index 0000000000..b2eb7dd18c
--- /dev/null
+++ b/Lang/Vedit-macro-language/Forest-fire
@@ -0,0 +1 @@
+../../Task/Forest-fire/Vedit-macro-language
\ No newline at end of file
diff --git a/Lang/Vedit-macro-language/Mandelbrot-set b/Lang/Vedit-macro-language/Mandelbrot-set
new file mode 120000
index 0000000000..1740c694ce
--- /dev/null
+++ b/Lang/Vedit-macro-language/Mandelbrot-set
@@ -0,0 +1 @@
+../../Task/Mandelbrot-set/Vedit-macro-language
\ No newline at end of file
diff --git a/Lang/Visual-Basic/Evolutionary-algorithm b/Lang/Visual-Basic/Evolutionary-algorithm
new file mode 120000
index 0000000000..6b7019dbdc
--- /dev/null
+++ b/Lang/Visual-Basic/Evolutionary-algorithm
@@ -0,0 +1 @@
+../../Task/Evolutionary-algorithm/Visual-Basic
\ No newline at end of file
diff --git a/Lang/Visual-Basic/Sum-digits-of-an-integer b/Lang/Visual-Basic/Sum-digits-of-an-integer
new file mode 120000
index 0000000000..b1d42f207a
--- /dev/null
+++ b/Lang/Visual-Basic/Sum-digits-of-an-integer
@@ -0,0 +1 @@
+../../Task/Sum-digits-of-an-integer/Visual-Basic
\ No newline at end of file
diff --git a/Lang/XPL0/Horizontal-sundial-calculations b/Lang/XPL0/Horizontal-sundial-calculations
new file mode 120000
index 0000000000..974afa6b52
--- /dev/null
+++ b/Lang/XPL0/Horizontal-sundial-calculations
@@ -0,0 +1 @@
+../../Task/Horizontal-sundial-calculations/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/K-means++-clustering b/Lang/XPL0/K-means++-clustering
new file mode 120000
index 0000000000..ff3986430f
--- /dev/null
+++ b/Lang/XPL0/K-means++-clustering
@@ -0,0 +1 @@
+../../Task/K-means++-clustering/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Perfect-numbers b/Lang/XPL0/Perfect-numbers
new file mode 120000
index 0000000000..5f4ab7786e
--- /dev/null
+++ b/Lang/XPL0/Perfect-numbers
@@ -0,0 +1 @@
+../../Task/Perfect-numbers/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Voronoi-diagram b/Lang/XPL0/Voronoi-diagram
new file mode 120000
index 0000000000..56ed823680
--- /dev/null
+++ b/Lang/XPL0/Voronoi-diagram
@@ -0,0 +1 @@
+../../Task/Voronoi-diagram/XPL0
\ No newline at end of file
diff --git a/Task/100-doors/COBOL/100-doors.cobol b/Task/100-doors/COBOL/100-doors.cobol
index 3045ecac3f..58095e4ed3 100644
--- a/Task/100-doors/COBOL/100-doors.cobol
+++ b/Task/100-doors/COBOL/100-doors.cobol
@@ -3,29 +3,30 @@
DATA DIVISION.
WORKING-STORAGE SECTION.
- 01 Current PIC 9(3) VALUE ZEROES.
- 01 StepSize PIC 9(3) VALUE ZEROES.
+ 01 Current PIC 9(3).
+ 01 StepSize PIC 9(3).
01 DoorTable.
02 Doors PIC 9(1) OCCURS 100 TIMES.
+ 88 ClosedDoor VALUE ZERO.
01 Idx PIC 9(3).
PROCEDURE DIVISION.
Begin.
- MOVE 1 TO StepSize
- PERFORM 100 TIMES
- MOVE StepSize TO Current
- PERFORM UNTIL Current > 100
- SUBTRACT Doors(Current) FROM 1 GIVING Doors(Current)
- ADD StepSize TO Current GIVING Current
+ PERFORM VARYING StepSize FROM 1 BY 1 UNTIL StepSize > 100
+ PERFORM VARYING Current FROM StepSize BY StepSize
+ UNTIL Current > 100
+ SUBTRACT Doors (Current) FROM 1 GIVING Doors (Current)
END-PERFORM
- ADD 1 TO StepSize GIVING StepSize
END-PERFORM
+
PERFORM VARYING Idx FROM 1 BY 1
UNTIL Idx > 100
- IF Doors(Idx) = 0
+ IF ClosedDoor (Idx)
DISPLAY Idx " is closed."
ELSE
DISPLAY Idx " is open."
END-IF
END-PERFORM
- STOP RUN.
+
+ STOP RUN
+ .
diff --git a/Task/100-doors/Component-Pascal/100-doors.component b/Task/100-doors/Component-Pascal/100-doors.component
new file mode 100644
index 0000000000..d0c2a89707
--- /dev/null
+++ b/Task/100-doors/Component-Pascal/100-doors.component
@@ -0,0 +1,26 @@
+MODULE Doors100;
+IMPORT StdLog;
+
+PROCEDURE Do*;
+VAR
+ i,j: INTEGER;
+ closed: ARRAY 101 OF BOOLEAN;
+BEGIN
+ (* initilization of close to true *)
+ FOR i := 0 TO LEN(closed) - 1 DO closed[i] := TRUE END;
+ (* process *)
+ FOR i := 1 TO LEN(closed) DO;
+ j := 1;
+ WHILE j < LEN(closed) DO
+ IF j MOD i = 0 THEN closed[j] := ~closed[j] END;INC(j)
+ END
+ END;
+ (* print results *)
+ i := 1;
+ WHILE i < LEN(closed) DO
+ IF (i - 1) MOD 10 = 0 THEN StdLog.Ln END;
+ IF closed[i] THEN StdLog.String("C ") ELSE StdLog.String("O ") END;
+ INC(i)
+ END;
+END Do;
+END Doors100.
diff --git a/Task/100-doors/D/100-doors-1.d b/Task/100-doors/D/100-doors-1.d
new file mode 100644
index 0000000000..65e8f69802
--- /dev/null
+++ b/Task/100-doors/D/100-doors-1.d
@@ -0,0 +1,31 @@
+import std.stdio, std.algorithm, std.range;
+
+enum DoorState : bool { closed, open }
+alias Doors = DoorState[];
+
+Doors flipUnoptimized(Doors doors) pure nothrow {
+ doors[] = DoorState.closed;
+
+ foreach (immutable i; 0 .. doors.length)
+ for (int j = i; j < doors.length; j += i + 1)
+ if (doors[j] == DoorState.open)
+ doors[j] = DoorState.closed;
+ else
+ doors[j] = DoorState.open;
+ return doors;
+}
+
+Doors flipOptimized(Doors doors) pure nothrow {
+ doors[] = DoorState.closed;
+ for (int i = 1; i ^^ 2 <= doors.length; i++)
+ doors[i ^^ 2 - 1] = DoorState.open;
+ return doors;
+}
+
+void main() {
+ auto doors = new Doors(100);
+
+ foreach (const open; [doors.dup.flipUnoptimized,
+ doors.dup.flipOptimized])
+ iota(1, open.length + 1).filter!(i => open[i - 1]).writeln;
+}
diff --git a/Task/100-doors/D/100-doors-2.d b/Task/100-doors/D/100-doors-2.d
new file mode 100644
index 0000000000..2b83a17084
--- /dev/null
+++ b/Task/100-doors/D/100-doors-2.d
@@ -0,0 +1,23 @@
+import std.stdio;
+
+void printAllDoors(bool[] doors)
+{
+ // Prints the state of all the doors
+ foreach(i, door; doors)
+ {
+ writeln("#: ", i + 1, (door) ? " open" : " closed");
+ }
+}
+void main()
+{
+ bool[100] doors = false; //Create 100 closed doors
+ for(int a = 0; a < 100; ++a) {
+ writefln("Pass #%s; visiting every %s door.", a + 1, a + 1); // Optional
+ for(int i = a; i < 100; i += (a + 1)) {
+ writefln("Visited door %s", i + 1); //Optional
+ doors[i] = !doors[i];
+ }
+ writeln(); // Optional
+ }
+ printAllDoors(doors); // Prints the state of each door
+}
diff --git a/Task/100-doors/DCL/100-doors.dcl b/Task/100-doors/DCL/100-doors.dcl
new file mode 100644
index 0000000000..3174f3bfb2
--- /dev/null
+++ b/Task/100-doors/DCL/100-doors.dcl
@@ -0,0 +1,16 @@
+$! doors.com
+$! Excecute by running @doors at prompt.
+$ square = 1
+$ incr = 3
+$ count2 = 0
+$ d = 1
+$ LOOP2:
+$ count2 = count2 + 1
+$ IF (d .NE. square)
+$ THEN WRITE SYS$OUTPUT "door ''d' is closed"
+$ ELSE WRITE SYS$OUTPUT "door ''d' is open"
+$ square = incr + square
+$ incr = incr + 2
+$ ENDIF
+$ d = d + 1
+$ IF (count2 .LT. 100) THEN GOTO LOOP2
diff --git a/Task/100-doors/Elixir/100-doors.elixir b/Task/100-doors/Elixir/100-doors.elixir
new file mode 100644
index 0000000000..1af3eb510f
--- /dev/null
+++ b/Task/100-doors/Elixir/100-doors.elixir
@@ -0,0 +1,26 @@
+defmodule HundredDoors do
+
+ def doors() do
+ Enum.to_list(Stream.take(Stream.cycle([false]), 100))
+ end
+
+ def toggle(doors, n) do
+ Enum.take(doors, n) ++ [not Enum.at(doors,n)] ++ Enum.drop(doors,n+1)
+ end
+
+ def toggle_every(doors, n) do
+ Enum.reduce( Enum.take_every((n-1)..99, n), doors, fn(n, acc) -> toggle(acc, n) end )
+ end
+
+end
+
+# unoptimized
+final_state = Enum.reduce(1..100, HundredDoors.doors, fn(n, acc) -> HundredDoors.toggle_every(acc, n) end)
+
+# optimized
+final_state = Enum.reduce(1..10, HundredDoors.doors, fn(n, acc) -> HundredDoors.toggle(acc, n*n-1) end)
+
+open_doors = Enum.map(Enum.filter( Enum.with_index(final_state), fn({door,_}) -> door end ),
+ fn({_,index}) -> index+1 end)
+
+IO.puts "All doors are closed except these: #{inspect open_doors}"
diff --git a/Task/100-doors/Erlang/100-doors-1.erl b/Task/100-doors/Erlang/100-doors-1.erl
new file mode 100644
index 0000000000..5fec4b90b0
--- /dev/null
+++ b/Task/100-doors/Erlang/100-doors-1.erl
@@ -0,0 +1,16 @@
+-module(hundoors).
+
+-export([go/0]).
+
+toggle(closed) -> open;
+toggle(open) -> closed.
+
+go() -> go([closed || _ <- lists:seq(1, 100)],[], 1, 1).
+go([], L, N, _I) when N =:= 101 -> lists:reverse(L);
+go([], L, N, _I) -> go(lists:reverse(L), [], N + 1, 1);
+go([H|T], L, N, I) ->
+ H2 = case I rem N of
+ 0 -> toggle(H);
+ _ -> H
+ end,
+ go(T, [H2|L], N, I + 1).
diff --git a/Task/100-doors/Erlang/100-doors-2.erl b/Task/100-doors/Erlang/100-doors-2.erl
new file mode 100644
index 0000000000..3815a08743
--- /dev/null
+++ b/Task/100-doors/Erlang/100-doors-2.erl
@@ -0,0 +1,5 @@
+doors() ->
+ F = fun(X) -> Root = math:pow(X,0.5), Root == trunc(Root) end,
+ Out = fun(X, true) -> io:format("Door ~p: open~n",[X]);
+ (X, false)-> io:format("Door ~p: close~n",[X]) end,
+ [Out(X,F(X)) || X <- lists:seq(1,100)].
diff --git a/Task/100-doors/JavaScript/100-doors-1.js b/Task/100-doors/JavaScript/100-doors-1.js
index f8a3ff0ce2..5402daccdc 100644
--- a/Task/100-doors/JavaScript/100-doors-1.js
+++ b/Task/100-doors/JavaScript/100-doors-1.js
@@ -1,4 +1,4 @@
-var doors = [], n = 100, i, j;
+(function(){var doors = [], n = 100, i, j;
for (i = 1; i <= n; i++) {
for (j = i; j <= n; j += i) {
@@ -8,4 +8,4 @@ for (i = 1; i <= n; i++) {
for (i = 1 ; i <= n ; i++) {
if (doors[i]) console.log("Door " + i + " is open");
-}
+}}())
diff --git a/Task/100-doors/Mathematica/100-doors-1.math b/Task/100-doors/Mathematica/100-doors-1.math
index d703d385c1..1ecc6434db 100644
--- a/Task/100-doors/Mathematica/100-doors-1.math
+++ b/Task/100-doors/Mathematica/100-doors-1.math
@@ -1,3 +1,4 @@
-f[n_] = "Closed";
-Do[Do[If[f[n] == "Closed", f[n] = "Open", f[n] = "Closed"], {n, k, 100, k}], {k, 1, 100}];
-Table[f[n], {n, 1, 100}]
+n=100;
+tmp=ConstantArray[-1,n];
+Do[tmp[[i;;;;i]]*=-1;,{i,n}];
+Do[Print["door ",i," is ",If[tmp[[i]]==-1,"closed","open"]],{i,1,Length[tmp]}]
diff --git a/Task/100-doors/Mathematica/100-doors-2.math b/Task/100-doors/Mathematica/100-doors-2.math
index b867d8da88..d703d385c1 100644
--- a/Task/100-doors/Mathematica/100-doors-2.math
+++ b/Task/100-doors/Mathematica/100-doors-2.math
@@ -1 +1,3 @@
-Do[Print["door ",i," is ",If[IntegerQ[Sqrt[i]],"open","closed"]],{i,100}]
+f[n_] = "Closed";
+Do[Do[If[f[n] == "Closed", f[n] = "Open", f[n] = "Closed"], {n, k, 100, k}], {k, 1, 100}];
+Table[f[n], {n, 1, 100}]
diff --git a/Task/100-doors/Mathematica/100-doors-3.math b/Task/100-doors/Mathematica/100-doors-3.math
index 272215487f..b867d8da88 100644
--- a/Task/100-doors/Mathematica/100-doors-3.math
+++ b/Task/100-doors/Mathematica/100-doors-3.math
@@ -1,3 +1 @@
-n=100;
-a=Range[1,Sqrt[n]]^2
-Do[Print["door ",i," is ",If[MemberQ[a,i],"open","closed"]],{i,100}]
+Do[Print["door ",i," is ",If[IntegerQ[Sqrt[i]],"open","closed"]],{i,100}]
diff --git a/Task/100-doors/Mathematica/100-doors-4.math b/Task/100-doors/Mathematica/100-doors-4.math
index 5c83a1f2b3..272215487f 100644
--- a/Task/100-doors/Mathematica/100-doors-4.math
+++ b/Task/100-doors/Mathematica/100-doors-4.math
@@ -1,12 +1,3 @@
-n=100
-nn=1
-a=0
-For[i=1,i<=n,i++,
- If[i==nn,
- Print["door ",i," is open"];
- a++;
- nn+=2a+1;
- ,
- Print["door ",i," is closed"];
- ];
-]
+n=100;
+a=Range[1,Sqrt[n]]^2
+Do[Print["door ",i," is ",If[MemberQ[a,i],"open","closed"]],{i,100}]
diff --git a/Task/100-doors/Mathematica/100-doors-5.math b/Task/100-doors/Mathematica/100-doors-5.math
index 8dab41125d..5c83a1f2b3 100644
--- a/Task/100-doors/Mathematica/100-doors-5.math
+++ b/Task/100-doors/Mathematica/100-doors-5.math
@@ -1 +1,12 @@
-Pick[Range[100], Xor@@@Array[Divisible[#1,#2]&, {100,100}]]
+n=100
+nn=1
+a=0
+For[i=1,i<=n,i++,
+ If[i==nn,
+ Print["door ",i," is open"];
+ a++;
+ nn+=2a+1;
+ ,
+ Print["door ",i," is closed"];
+ ];
+]
diff --git a/Task/100-doors/Mathematica/100-doors-6.math b/Task/100-doors/Mathematica/100-doors-6.math
index 11e842986e..8dab41125d 100644
--- a/Task/100-doors/Mathematica/100-doors-6.math
+++ b/Task/100-doors/Mathematica/100-doors-6.math
@@ -1 +1 @@
-Range[Sqrt[100]]^2
+Pick[Range[100], Xor@@@Array[Divisible[#1,#2]&, {100,100}]]
diff --git a/Task/100-doors/Mathematica/100-doors-7.math b/Task/100-doors/Mathematica/100-doors-7.math
new file mode 100644
index 0000000000..11e842986e
--- /dev/null
+++ b/Task/100-doors/Mathematica/100-doors-7.math
@@ -0,0 +1 @@
+Range[Sqrt[100]]^2
diff --git a/Task/100-doors/PowerShell/100-doors-2.psh b/Task/100-doors/PowerShell/100-doors-2.psh
index acc1a5f397..896a25e1fb 100644
--- a/Task/100-doors/PowerShell/100-doors-2.psh
+++ b/Task/100-doors/PowerShell/100-doors-2.psh
@@ -1,2 +1,37 @@
-$doors = 1..100 | ForEach-Object {0}
-1..100 | ForEach-Object { $a=$_;1..100 | Where-Object { -not ( $_ % $a ) } | ForEach-Object { $doors[$_-1] = $doors[$_-1] -bxor 1 }; if ( $doors[$a-1] ) { "door opened" } else { "door closed" } }
+function Get-DoorState($NumberOfDoors)
+{
+ begin
+ {
+ $Doors = @()
+ $Multiple = 1
+ }
+
+ process
+ {
+ for ($i = 1; $i -le $NumberOfDoors; $i++)
+ {
+ $Door = [pscustomobject]@{
+ Name = $i
+ Open = $false
+ }
+
+ $Doors += $Door
+ }
+
+ While ($Multiple -le $NumberOfDoors)
+ {
+ Foreach ($Door in $Doors)
+ {
+ if ($Door.name % $Multiple -eq 0)
+ {
+ If ($Door.open -eq $False){$Door.open = $True}
+ Else {$Door.open = $False}
+ }
+ }
+
+ $Multiple++
+ }
+ }
+
+ end {$Doors}
+}
diff --git a/Task/100-doors/PowerShell/100-doors-3.psh b/Task/100-doors/PowerShell/100-doors-3.psh
index c7903f1a70..acc1a5f397 100644
--- a/Task/100-doors/PowerShell/100-doors-3.psh
+++ b/Task/100-doors/PowerShell/100-doors-3.psh
@@ -1,3 +1,2 @@
$doors = 1..100 | ForEach-Object {0}
-$visited = 1..100
-1..100 | ForEach-Object { $a=$_;$visited[0..([math]::floor(100/$a)-1)] | Where-Object { -not ( $_ % $a ) } | ForEach-Object { $doors[$_-1] = $doors[$_-1] -bxor 1;$visited[$_/$a-1]+=($_/$a) }; if ( $doors[$a-1] ) { "door opened" } else { "door closed" } }
+1..100 | ForEach-Object { $a=$_;1..100 | Where-Object { -not ( $_ % $a ) } | ForEach-Object { $doors[$_-1] = $doors[$_-1] -bxor 1 }; if ( $doors[$a-1] ) { "door opened" } else { "door closed" } }
diff --git a/Task/100-doors/PowerShell/100-doors-4.psh b/Task/100-doors/PowerShell/100-doors-4.psh
index 9012ac03a5..c7903f1a70 100644
--- a/Task/100-doors/PowerShell/100-doors-4.psh
+++ b/Task/100-doors/PowerShell/100-doors-4.psh
@@ -1,3 +1,3 @@
-1..100|foreach-object {$pipe += "toggle $_ |"} -begin {$pipe=""}
-filter toggle($pass) {$_.door = $_.door -xor !($_.index % $pass);$_}
-invoke-expression "1..100| foreach-object {@{index=`$_;door=`$false}} | $pipe out-host"
+$doors = 1..100 | ForEach-Object {0}
+$visited = 1..100
+1..100 | ForEach-Object { $a=$_;$visited[0..([math]::floor(100/$a)-1)] | Where-Object { -not ( $_ % $a ) } | ForEach-Object { $doors[$_-1] = $doors[$_-1] -bxor 1;$visited[$_/$a-1]+=($_/$a) }; if ( $doors[$a-1] ) { "door opened" } else { "door closed" } }
diff --git a/Task/100-doors/PowerShell/100-doors-5.psh b/Task/100-doors/PowerShell/100-doors-5.psh
new file mode 100644
index 0000000000..9012ac03a5
--- /dev/null
+++ b/Task/100-doors/PowerShell/100-doors-5.psh
@@ -0,0 +1,3 @@
+1..100|foreach-object {$pipe += "toggle $_ |"} -begin {$pipe=""}
+filter toggle($pass) {$_.door = $_.door -xor !($_.index % $pass);$_}
+invoke-expression "1..100| foreach-object {@{index=`$_;door=`$false}} | $pipe out-host"
diff --git a/Task/100-doors/Ruby/100-doors-1.rb b/Task/100-doors/Ruby/100-doors-1.rb
index 6fcbbe9834..6bd684abd4 100644
--- a/Task/100-doors/Ruby/100-doors-1.rb
+++ b/Task/100-doors/Ruby/100-doors-1.rb
@@ -1,31 +1,40 @@
class Door
attr_reader :state
+
def initialize
- @state=:closed
+ @state = :closed
end
- def close; @state=:closed; end
- def open; @state=:open; end
+ def close
+ @state = :closed
+ end
- def closed?; @state==:closed; end
- def open?; @state==:open; end
+ def open
+ @state = :open
+ end
+
+ def closed?
+ @state == :closed
+ end
+
+ def open?
+ @state == :open
+ end
def toggle
- if closed?
- open
- else
- close
- end
+ if closed? then open else close end
end
- def to_s; @state.to_s; end
+ def to_s
+ @state.to_s
+ end
end
-doors=Array.new(100){Door.new}
+doors = Array.new(100) { Door.new }
1.upto(100) do |multiplier|
doors.each_with_index do |door, i|
- door.toggle if (i+1)%multiplier==0
+ door.toggle if (i + 1) % multiplier == 0
end
end
-doors.each_with_index{|door, i| puts "Door #{i+1} is #{door}."}
+doors.each_with_index { |door, i| puts "Door #{i+1} is #{door}." }
diff --git a/Task/100-doors/Ruby/100-doors-2.rb b/Task/100-doors/Ruby/100-doors-2.rb
index 800a2cc796..c52299bd0b 100644
--- a/Task/100-doors/Ruby/100-doors-2.rb
+++ b/Task/100-doors/Ruby/100-doors-2.rb
@@ -7,12 +7,12 @@ end
def Closed.toggle
Open
end
-doors = [Closed] * (n+1)
+doors = [Closed] * (n + 1)
for mul in 1..n
- for x in 1..n/mul
- doors[mul*x] = doors[mul*x].toggle
+ for x in 1..n / mul
+ doors[mul * x] = doors[mul * x].toggle
end
end
doors.each_with_index { |b, i|
- puts "Door #{i} is #{b}" if i>0
+ puts "Door #{i} is #{b}" if i > 0
}
diff --git a/Task/100-doors/Ruby/100-doors-4.rb b/Task/100-doors/Ruby/100-doors-4.rb
index 484a772dd3..8c1fff4de4 100644
--- a/Task/100-doors/Ruby/100-doors-4.rb
+++ b/Task/100-doors/Ruby/100-doors-4.rb
@@ -1,7 +1,7 @@
doors = [false] * 100
100.times do |i|
- (i ... doors.length).step(i+1) do |j|
+ (i ... doors.length).step(i + 1) do |j|
doors[j] = !doors[j]
end
end
-puts doors.map.with_index{|d,i| "Door #{i+1} is #{d ? 'open' : 'closed'}."}
+puts doors.map.with_index{|d, i| "Door #{i+1} is #{d ? 'open' : 'closed'}."}
diff --git a/Task/100-doors/Rust/100-doors-1.rust b/Task/100-doors/Rust/100-doors-1.rust
index 714291be07..68683bbd4e 100644
--- a/Task/100-doors/Rust/100-doors-1.rust
+++ b/Task/100-doors/Rust/100-doors-1.rust
@@ -1,15 +1,17 @@
+// rust 0.8
+
fn main() {
let mut door_open = [false, ..100];
- for uint::range(1, 101) |pass| {
- for uint::range(1, 101) |door| {
+ for pass in std::iter::range_inclusive(1, 100) {
+ for door in std::iter::range_inclusive(1, 100) {
if door % pass == 0 {
- door_open[door - 1] = !door_open[door - 1]
+ door_open[door - 1] = !door_open[door - 1];
}
- };
+ }
}
- for door_open.eachi |i, state| {
- io::println(fmt!("Door %u is %s.", i + 1,
- if *state { "open" } else { "closed" }));
+ for (i, state) in door_open.iter().enumerate() {
+ println!("Door {} is {}.", i + 1,
+ if *state {"open"} else {"closed"});
}
}
diff --git a/Task/100-doors/Rust/100-doors-2.rust b/Task/100-doors/Rust/100-doors-2.rust
index 78364b66ff..032c9a25aa 100644
--- a/Task/100-doors/Rust/100-doors-2.rust
+++ b/Task/100-doors/Rust/100-doors-2.rust
@@ -1,7 +1,9 @@
+// rust 0.8
+
fn main() {
- for int::range(1,101) |i| {
- let x = float::pow(i as f64, 0.5);
- let state = if x == float::round(x) {"open"} else {"closed"};
- io::println(fmt!("Door %i is %s", i, state));
+ for i in std::iter::range_inclusive(1,100) {
+ let x = (i as f64).pow(&0.5);
+ let state = if x == x.round() {"open"} else {"closed"};
+ println!("Door {} is {}", i, state);
}
}
diff --git a/Task/100-doors/ZED/100-doors.zed b/Task/100-doors/ZED/100-doors.zed
index ffbb6d5b31..1304aceb45 100644
--- a/Task/100-doors/ZED/100-doors.zed
+++ b/Task/100-doors/ZED/100-doors.zed
@@ -1,47 +1,47 @@
(100doors)
-comment
+comment: returns the first 100 doors after making 100 passes
(always)
(pr) (first) 100 (passes) 1 (doors)
(doors)
-comment
+comment: start with an infinite list of closed doors
(always)
(c) "'closed" (doors)
(passes) count doors
-comment
+comment: count is greater than 100 -> make 100 passes
(>) count 100
doors
(passes) count doors
-comment
+comment: count is not greater than 100 -> make 100 passes
(always)
(passes) (add1) count
(pass) count doors
-(pass) n doors
-comment
+(pass) count doors
+comment: takes a count and a list of doors -> makes a pass over the doors
(always)
-(pass1) n n doors
+(ZEDpass) count count doors
-(pass1) n m doors
-comment
-(=) m 1
+(ZEDpass) count1 count2 doors
+comment: count2 is one -> completes a pass over the doors
+(=) count2 1
(c) (toggle) (1) doors
- (pass) n (!) doors
+ (pass) count1 (!) doors
-(pass1) n m doors
-comment
-(>) m 1
+(ZEDpass) count1 count2 doors
+comment: count2 is greater than one -> completes a pass over the doors
+(>) count2 1
(c) (1) doors
- (pass1) n (sub1) m (!) doors
+ (ZEDpass) count1 (sub1) count2 (!) doors
(toggle) door
-comment
+comment: door is closed -> toggles it
(=) door "'closed"
"'open"
(toggle) door
-comment
+comment: door is open -> toggles it
(=) door "'open"
"'closed"
diff --git a/Task/24-game-Solve/Ruby/24-game-solve.rb b/Task/24-game-Solve/Ruby/24-game-solve.rb
index cc39bfa3c2..c6016c35ad 100644
--- a/Task/24-game-Solve/Ruby/24-game-solve.rb
+++ b/Task/24-game-Solve/Ruby/24-game-solve.rb
@@ -1,5 +1,3 @@
-require 'rational'
-
class TwentyFourGamePlayer
EXPRESSIONS = [
'((%d %s %d) %s %d) %s %d',
@@ -7,35 +5,28 @@ class TwentyFourGamePlayer
'(%d %s %d) %s (%d %s %d)',
'%d %s ((%d %s %d) %s %d)',
'%d %s (%d %s (%d %s %d))',
- ]
- OPERATORS = [:+, :-, :*, :/]
+ ].map{|expr| [expr, expr.gsub('%d', 'Rational(%d,1)')]}
- @@objective = Rational(24,1)
+ OPERATORS = [:+, :-, :*, :/].repeated_permutation(3)
- def initialize(digits)
- @digits = digits
- @solutions = []
- solve
- end
+ OBJECTIVE = Rational(24,1)
- attr_reader :digits, :solutions
-
- def solve
+ def self.solve(digits)
+ solutions = []
digits.permutation.to_a.uniq.each do |a,b,c,d|
- OPERATORS.each do |op1|
- OPERATORS.each do |op2|
- OPERATORS.each do |op3|
- EXPRESSIONS.each do |expr|
- # evaluate using rational arithmetic
- test = expr.gsub('%d', 'Rational(%d,1)') % [a, op1, b, op2, c, op3, d]
- value = eval(test) rescue -1 # catch division by zero
- if value == @@objective
- @solutions << expr % [a, op1, b, op2, c, op3, d]
+ OPERATORS.each do |op1,op2,op3|
+ EXPRESSIONS.each do |expr,expr_rat|
+ # evaluate using rational arithmetic
+ test = expr_rat % [a, op1, b, op2, c, op3, d]
+ value = eval(test) rescue -1 # catch division by zero
+ if value == OBJECTIVE
+ solutions << expr % [a, op1, b, op2, c, op3, d]
+ end
end
- end;end;end;end
+ end
end
+ solutions
end
-
end
# validate user input
@@ -48,10 +39,10 @@ digits = ARGV.map do |arg|
end
digits.size == 4 or raise "error: need 4 digits, only have #{digits.size}"
-player = TwentyFourGamePlayer.new(digits)
-if player.solutions.empty?
+solutions = TwentyFourGamePlayer.solve(digits)
+if solutions.empty?
puts "no solutions"
else
- puts "found #{player.solutions.size} solutions, including #{player.solutions.first}"
- puts player.solutions.sort.join("\n")
+ puts "found #{solutions.size} solutions, including #{solutions.first}"
+ puts solutions.sort
end
diff --git a/Task/24-game/Julia/24-game.julia b/Task/24-game/Julia/24-game.julia
index c779179e8d..8176012812 100644
--- a/Task/24-game/Julia/24-game.julia
+++ b/Task/24-game/Julia/24-game.julia
@@ -23,7 +23,14 @@ function twentyfour()
print("The 24 Game\nYou will be given any four digits in the range 1 to 9, which may have repetitions.\n
Using just the +, -, *, and / operators show how to make an answer of 24.\n
Use parentheses, (), to ensure proper order of evaulation.\n
- Enter 'n' for a new set of digits, and 'q' to quit. Good luck!\n
+ Enter 'n' fDouble>()
+
+ while( scanner.hasNext() ) {
+ if( scanner.hasNextInt() ) {
+ var n = scanner.nextInt()
+
+ // Make sure they're allowed to use n
+ if( n or a new set of digits, and 'q' to quit. Good luck!\n
Here's your first 4 digits\n$(answer[1]) $(answer[2]) $(answer[3]) $(answer[4])\n
>")
while true
diff --git a/Task/24-game/PowerShell/24-game.psh b/Task/24-game/PowerShell/24-game.psh
index 3f0793a90f..eb31215f4a 100644
--- a/Task/24-game/PowerShell/24-game.psh
+++ b/Task/24-game/PowerShell/24-game.psh
@@ -7,17 +7,17 @@ Function isNumeric ($x)
Return $isNum
}
-$NumberOne = Random -Maximum 10 -Minimum 1
-$NumberTwo = Random -Maximum 10 -Minimum 1
-$NumberThree = Random -Maximum 10 -Minimum 1
-$NumberFour = Random -Maximum 10 -Minimum 1
$NumberArray = @()
-$NumberArray += $NumberOne
-$NumberArray += $NumberTwo
-$NumberArray += $NumberThree
-$NumberArray += $NumberFour
+While( $NumberArray.Count -lt 4 ){
+ $NumberArray += Random -Minimum 1 -Maximum 10
+}
-Write-Host "Welcome to the 24 game!`n`nHere are your numbers: $NumberOne,$NumberTwo,$NumberThree and $NumberFour.`nUse division, multiplication, subtraction and addition to get 24 as a result with these 4 numbers.`n"
+Write-Host @"
+Welcome to the 24 game!
+
+Here are your numbers: $($NumberArray -join ",").
+Use division, multiplication, subtraction and addition to get 24 as a result with these 4 numbers.
+"@
Do
{
@@ -26,50 +26,14 @@ $EndResult = $null
$TempChar = $null
$TempChar2 = $null
$Count = $null
+
+$AllowableCharacters = $NumberArray + "+-*/()".ToCharArray()
$Result = Read-Host
Foreach($Char in $Result.ToCharArray())
{
- Switch($Char)
- {
- $NumberOne
- {
- }
- $NumberTwo
- {
- }
- $NumberThree
- {
- }
- $NumberFour
- {
- }
- "+"
- {
- }
- "-"
- {
- }
- "*"
- {
- }
- "/"
- {
- }
- "("
- {
- }
- ")"
- {
- }
- " "
- {
- }
- Default
- {
- $Wrong = 1
- }
- }
+ If( $AllowableCharacters -notcontains $Char ){ $Wrong = 1 }
}
+
If($Wrong -eq 1)
{
Write-Warning "Wrong input! Please use only the given numbers."
diff --git a/Task/24-game/Ruby/24-game.rb b/Task/24-game/Ruby/24-game.rb
index 552e4448b5..4372355ad9 100644
--- a/Task/24-game/Ruby/24-game.rb
+++ b/Task/24-game/Ruby/24-game.rb
@@ -1,7 +1,7 @@
require "rational"
def play
- digits = Array.new(4) {1+rand(9)}
+ digits = Array.new(4){rand(1..9)}
loop do
guess = get_guess(digits)
result = evaluate(guess)
@@ -17,13 +17,13 @@ end
def get_guess(digits)
loop do
- print "\nEnter your guess using #{digits.inspect}: "
- guess = $stdin.gets.chomp
+ print "\nEnter your guess using #{digits}: "
+ guess = gets.chomp
# ensure input is safe to eval
invalid_chars = guess.scan(%r{[^\d\s()+*/-]})
unless invalid_chars.empty?
- puts "invalid characters in input: #{invalid_chars.inspect}"
+ puts "invalid characters in input: #{invalid_chars}"
next
end
diff --git a/Task/99-Bottles-of-Beer/6502-Assembly/99-bottles-of-beer.6502 b/Task/99-Bottles-of-Beer/6502-Assembly/99-bottles-of-beer.6502
index 2c45e183fd..671af377de 100644
--- a/Task/99-Bottles-of-Beer/6502-Assembly/99-bottles-of-beer.6502
+++ b/Task/99-Bottles-of-Beer/6502-Assembly/99-bottles-of-beer.6502
@@ -18,10 +18,10 @@
; APPLE II, +, E, C: $FDED, $80 ;
; COMMODORE 64: $FFD2, $00 ;
;-------------------------------------;
-ECHO = $FFEF EMIT A REG AS ASCII
-ORMASK = $80 ($00 FOR + ASCII)
+ECHO = $FFEF ;EMIT A REG AS ASCII
+ORMASK = $80 ;($00 FOR + ASCII)
;
-MAXBEER = 99 INITIAL BEER COUNT
+MAXBEER = 99 ;INITIAL BEER COUNT
;-------------------------------------;
; X REG. IS THE BOTTLE COUNTER. ;
; Y REG. IS THE STRING INDEX POINTER, ;
@@ -34,19 +34,19 @@ MAXBEER = 99 INITIAL BEER COUNT
; EMIT COMPLETE CORRECT SONG ADJUSTED ;
; FOR UPPER-CASE 40-COLUMN DISPLAY. ;
;-------------------------------------;
- LDX #MAXBEER X=MAXBEER
- BNE PRSONG SING THE SONG & RTS
+ LDX #MAXBEER ;X=MAXBEER
+ BNE PRSONG ;SING THE SONG & RTS
;-------------------------------------;
; EMIT WHOLE SONG UP TO LAST SENTENCE.;
;-------------------------------------;
BEERME:
- LDY #TAKE1-TXT ? "TAKE ... AROUND,"
- JSR PRBOB ? X;" BOT ... WALL."
-PRSONG: ; ?
- LDY #CR-TXT ? X;" BOT ... WALL,"
- JSR PRBOB ? X;" BOT ... BEER."
- DEX X=X-1
- BPL BEERME IF X>=0 THEN BEERME
+ LDY #TAKE1-TXT ;? "TAKE ... AROUND,"
+ JSR PRBOB ;? X;" BOT ... WALL."
+PRSONG: ; ;?
+ LDY #CR-TXT ;? X;" BOT ... WALL,"
+ JSR PRBOB ;? X;" BOT ... BEER."
+ DEX ;X=X-1
+ BPL BEERME ;IF X>=0 THEN BEERME
;-------------------------------------;
; EMIT LAST SENTENCE AND FALL THROUGH.;
;-------------------------------------;
@@ -58,58 +58,58 @@ PRSONG: ; ?
;-------------------------------------;
PRBOB:
TYA
- PHA SAVE THE PRE$ PTR
- JSR PUTS ? PRE$;
- TXA IF X=0 THEN
- BEQ PRBOTT ? "NO MORE";
- LDY #"0"-1 ELSE
- SEC (
+ PHA ;SAVE THE PRE$ PTR
+ JSR PUTS ;? PRE$;
+ TXA ;IF X=0 THEN
+ BEQ PRBOTT ; ? "NO MORE";
+ LDY #"0"-1 ;ELSE
+ SEC ;(
DIV10:
- SBC #10 Y=INT(X/10)
+ SBC #10 ; Y=INT(X/10)
INY
BCS DIV10
ADC #10+'0'
CPY #"0"
BEQ ONEDIG
- PHA IF Y>0 THEN
+ PHA ; IF Y>0 THEN
TYA ? Y;
JSR PUTCH
- PLA ? X MOD 10;
+ PLA ; ? X MOD 10;
ONEDIG:
- LDY #BOTTL-TXT )
+ LDY #BOTTL-TXT ;)
PRBOTT:
- JSR PUTCH ? " BOTTLE";
+ JSR PUTCH ;? " BOTTLE";
CPX #1
BNE PLURAL
- INY IF X<>1 THEN ? "S";
+ INY ;IF X<>1 THEN ? "S";
PLURAL:
- JSR PUTS ? " OF BEER";
- PLA RECALL THE PRE$ PTR
+ JSR PUTS ;? " OF BEER";
+ PLA ;RECALL THE PRE$ PTR
CMP #COMCR-TXT
BEQ PRDOT
- PHA IF APPROPRIATE THEN
- JSR PUTS ? " ON THE WALL";
+ PHA ;IF APPROPRIATE THEN
+ JSR PUTS ; ? " ON THE WALL";
PLA
- LDY #COMCR-TXT IF APPROPRIATE THEN
- CMP #CR-TXT ? ",":
- BEQ PRBOB ? X;" ... BEER";
+ LDY #COMCR-TXT ;IF APPROPRIATE THEN
+ CMP #CR-TXT ; ? ",":
+ BEQ PRBOB ; ? X;" ... BEER";
PRDOT:
- LDY #DOTCR-TXT ? "."
+ LDY #DOTCR-TXT ;? "."
;-------------------------------------;
; EMIT A HI-BIT-SET TERMINATED STRING ;
; @ OFFSET Y AND EXIT WITH Y @ THE ;
; BEGINNING OF THE NEXT STRING. ;
;-------------------------------------;
PUTS:
- LDA TXT,Y GRAB A STRING CHAR
- INY ADVANCE STRING PTR
+ LDA TXT,Y ;GRAB A STRING CHAR
+ INY ;ADVANCE STRING PTR
PUTCH:
PHA
ORA #ORMASK
- AND #ORMASK+127 FORMAT CHAR FOR ECHO
- JSR ECHO SHOOT IT TO CONSOLE
+ AND #ORMASK+127 ;FORMAT CHAR FOR ECHO
+ JSR ECHO ;SHOOT IT TO CONSOLE
PLA
- BPL PUTS LOOP IF APPROPRIATE
+ BPL PUTS ;LOOP IF APPROPRIATE
RTS
;-------------------------------------;
; OPTIMIZED SONG LYRIC STRINGS. ;
diff --git a/Task/99-Bottles-of-Beer/6800-Assembly/99-bottles-of-beer.6800 b/Task/99-Bottles-of-Beer/6800-Assembly/99-bottles-of-beer.6800
index 350410f0cf..3eb5df26b2 100644
--- a/Task/99-Bottles-of-Beer/6800-Assembly/99-bottles-of-beer.6800
+++ b/Task/99-Bottles-of-Beer/6800-Assembly/99-bottles-of-beer.6800
@@ -37,90 +37,90 @@
; reg a handles everything else (with a little help ;
; from the system stack) ;
;-----------------------------------------------------;
-outeee = $e1d1 ROM: console putchar routine
-stbeer = 99 Must be in the range [0..99]
+outeee = $e1d1 ;ROM: console putchar routine
+stbeer = 99 ;Must be in the range [0..99]
.or $0f00
;=====================================================;
; Initialize, sing the song, and exit ;
;-----------------------------------------------------;
-main ldab #stbeer Beer count = stbeer
- bsr prsong Sing the entire song
- swi Return to the monitor.
+main ldab #stbeer ;Beer count = stbeer
+ bsr prsong ;Sing the entire song
+ swi ;Return to the monitor.
;=====================================================;
; Emit the entire song up to the last sentence ;
;-----------------------------------------------------;
-beerme bsr prbob2 Emit second sentence of verse
-prsong ldx #nline Blank line between verses
- ldaa #'N' First sentence type = 'N'
- bsr prbob Emit 1st sentence of verse
- decb Beer count -= 1
- bpl beerme If beer count >= 0 then beerme
+beerme bsr prbob2 ;Emit second sentence of verse
+prsong ldx #nline ;Blank line between verses
+ ldaa #'N' ;First sentence type = 'N'
+ bsr prbob ;Emit 1st sentence of verse
+ decb ;Beer count -= 1
+ bpl beerme ;If beer count >= 0 then beerme
;=====================================================;
; Set up the last sentence and fall through to prbob2 ;
;-----------------------------------------------------;
- ldab #stbeer Beer count = stbeer
- ldx #store x$ = "Go to the store ..."
+ ldab #stbeer ;Beer count = stbeer
+ ldx #store ;x$ = "Go to the store ..."
;=====================================================;
; Emit a properly punctuated bottle-of-beer sentence, ;
; using beer counter in reg b, pre-string pointer ;
; in reg x, and the sentence type in reg a ('N' = ;
; sentence 1, 'o' = sentence 1.5, 'n' = sentence 2) ;
;-----------------------------------------------------;
-prbob2 ldaa #'n' Second sentence type = 'n'
-prbob psha Stack sentence type for later
- bsr puts Emit pre-string
- pula Check sentence type and use
- psha it to prepare the upper- or
- anda #'n' lower-case of "no more"
- ldx #omore x$ = "o more bottle"
- tstb If beer count = 0 then
- beq prbott skip over the i-to-a
- ldx #bottl x$ = " bottle"
+prbob2 ldaa #'n' ;Second sentence type = 'n'
+prbob psha ;Stack sentence type for later
+ bsr puts ;Emit pre-string
+ pula ;Check sentence type and use
+ psha ; it to prepare the upper- or
+ anda #'n' ; lower-case of "no more"
+ ldx #omore ;x$ = "o more bottle"
+ tstb ;If beer count = 0 then
+ beq prbott ; skip over the i-to-a
+ ldx #bottl ;x$ = " bottle"
;=====================================================;
; I-to-A (inline): convert int in b to ascii and emit ;
; with leading zero suppression (0 <= # <= 99)! ;
;-----------------------------------------------------;
- pshb Stack beer count
- ldaa #-1 (divten trashes it)
-divten subb #10 b = ones digit - 10
- inca a = tens digit
- bcc divten If a = 0 then
- beq onedig suppress leading zero
- adda #"0" else translate tens digit to
- bsr putch shifted ascii and emit
-onedig addb #'0'+10 Translate ones digit to ascii
- tba and leave it in a for putch
- pulb Restore beer count
+ pshb ;Stack beer count
+ ldaa #-1 ; (divten trashes it)
+divten subb #10 ;b = ones digit - 10
+ inca ;a = tens digit
+ bcc divten ;If a = 0 then
+ beq onedig ; suppress leading zero
+ adda #"0" ;else translate tens digit to
+ bsr putch ; shifted ascii and emit
+onedig addb #'0'+10 ;Translate ones digit to ascii
+ tba ; and leave it in a for putch
+ pulb ;Restore beer count
;-----------------------------------------------------;
-prbott bsr putch Emit a;x$;
- cmpb #1 If beer count = 1
- bne plural then
- inx skip over the "s"
-plural bsr puts Emit " ... beer";
- pula Restore sentence type
- cmpa #'o' If type <> 'o'
- beq putdot then
- psha emit " on the wall";
- bsr puts if type = 'N' then loop
- pula back to finish the
- adda #33 first sentence with
- bpl prbob type = 'o', x$ = ", "
-putdot ldx #dotnl x$ = ".\n"
+prbott bsr putch ;Emit a;x$;
+ cmpb #1 ;If beer count = 1
+ bne plural ;then
+ inx ; skip over the "s"
+plural bsr puts ;Emit " ... beer";
+ pula ;Restore sentence type
+ cmpa #'o' ;If type <> 'o'
+ beq putdot ;then
+ psha ; emit " on the wall";
+ bsr puts ; if type = 'N' then loop
+ pula ; back to finish the
+ adda #33 ; first sentence with
+ bpl prbob ; type = 'o', x$ = ", "
+putdot ldx #dotnl ;x$ = ".\n"
;=====================================================;
; Emit string @ x and leave x @ start of next string ;
;-----------------------------------------------------;
-puts ldaa 0,x a = raw character removed
- inx from the beginning of x$
+puts ldaa 0,x ;a = raw character removed
+ inx ; from the beginning of x$
;=====================================================;
; Emit a as ascii and loop into x$ if hi-bit is clear ;
;-----------------------------------------------------;
-putch psha Stack raw char
- anda #$7f Mask off the hi-bit
- jsr outeee Emit a as 7-bit ascii
- pula Restore raw char
- tsta If hi-bit is clear then
- bpl puts loop back into x$
- rts All 8 'bsr's use this 'rts'!
+putch psha ;Stack raw char
+ anda #$7f ;Mask off the hi-bit
+ jsr outeee ;Emit a as 7-bit ascii
+ pula ;Restore raw char
+ tsta ;If hi-bit is clear then
+ bpl puts ; loop back into x$
+ rts ;All 8 'bsr's use this 'rts'!
;=====================================================;
; Optimized song lyric strings, carefully arranged to ;
; allow the prbob subroutine to take full advantage ;
diff --git a/Task/99-Bottles-of-Beer/AutoIt/99-bottles-of-beer-1.autoit b/Task/99-Bottles-of-Beer/AutoIt/99-bottles-of-beer-1.autoit
new file mode 100644
index 0000000000..2d8243ba91
--- /dev/null
+++ b/Task/99-Bottles-of-Beer/AutoIt/99-bottles-of-beer-1.autoit
@@ -0,0 +1,21 @@
+local $bottleNo=99
+local $lyrics=" "
+
+While $bottleNo<>0
+ If $bottleNo=1 Then
+ $lyrics&=$bottleNo & " bottles of beer on the wall" & @CRLF
+ $lyrics&=$bottleNo & " bottles of beer" & @CRLF
+ $lyrics&="Take one down, pass it around" & @CRLF
+ Else
+ $lyrics&=$bottleNo & " bottles of beer on the wall" & @CRLF
+ $lyrics&=$bottleNo & " bottles of beer" & @CRLF
+ $lyrics&="Take one down, pass it around" & @CRLF
+ EndIf
+ If $bottleNo=1 Then
+ $lyrics&=$bottleNo-1 & " bottle of beer" & @CRLF
+ Else
+ $lyrics&=$bottleNo-1 & " bottles of beer" & @CRLF
+ EndIf
+ $bottleNo-=1
+WEnd
+MsgBox(1,"99",$lyrics)
diff --git a/Task/99-Bottles-of-Beer/AutoIt/99-bottles-of-beer-2.autoit b/Task/99-Bottles-of-Beer/AutoIt/99-bottles-of-beer-2.autoit
new file mode 100644
index 0000000000..cab0ffcb62
--- /dev/null
+++ b/Task/99-Bottles-of-Beer/AutoIt/99-bottles-of-beer-2.autoit
@@ -0,0 +1,15 @@
+$bottles = 99
+$lyrics1 = " bottles of beer on the wall. "
+$lyrics2 = " bottles of beer. Take one down and pass it around. "
+
+ For $i = $bottles To 1 Step -1
+ If $i = 1 Then
+ $lyrics1 = " bottle of beer on the wall. "
+ $lyrics2 = " bottle of beer. Take one down and pass it around. "
+ $lyrics3 = " Go to the store and get some more! No bottles of beer on the wall!"
+ ConsoleWrite($bottles & $lyrics1 & $bottles & $lyrics2 & $lyrics3 & @CRLF)
+ Else
+ ConsoleWrite($bottles & $lyrics1 & $bottles & $lyrics2 & $bottles - 1 & $lyrics1 & @CRLF)
+ $bottles -= 1
+ EndIf
+ Next
diff --git a/Task/99-Bottles-of-Beer/COBOL/99-bottles-of-beer-1.cobol b/Task/99-Bottles-of-Beer/COBOL/99-bottles-of-beer-1.cobol
index 3da47d3761..6dd44ed15c 100644
--- a/Task/99-Bottles-of-Beer/COBOL/99-bottles-of-beer-1.cobol
+++ b/Task/99-Bottles-of-Beer/COBOL/99-bottles-of-beer-1.cobol
@@ -47,75 +47,57 @@ working-storage section.
05 filler pic x(9) value "Eighteen".
05 filler pic x(9) value "Nineteen".
05 filler pic x(9) value spaces.
-
+
01 digit-array redefines digit-words.
05 adigits occurs 20 times pic x(9).
-
+
01 number-name pic x(15).
-01 stringified pic x(30).
-01 outline pic x(50).
-01 other-numbers.
- 03 n pic 999.
- 03 r pic 999.
-
procedure division.
100-main section.
100-setup.
perform varying counter from 99 by -1 until no-bottles-left
- move spaces to outline
perform 100-show-number
- string stringified delimited by "|", space, "of beer on the wall" into outline end-string
- display outline end-display
- move spaces to outline
- string stringified delimited by "|", space, "of beer" into outline end-string
- display outline end-display
- move spaces to outline
- move "Take" to outline
+ display " of beer on the wall"
+ perform 100-show-number
+ display " of beer"
+ display "Take " with no advancing
if one-bottle-left
- string outline delimited by space, space, "it" delimited by size, space, "|" into outline end-string
+ display "it " with no advancing
else
- string outline delimited by space, space, "one" delimited by size, space, "|" into outline end-string
+ display "one " with no advancing
end-if
- string outline delimited by "|", "down and pass it round" delimited by size into outline end-string
- display outline end-display
- move spaces to outline
- subtract 1 from counter giving counter end-subtract
+ display "down and pass it round"
+ subtract 1 from counter giving counter
perform 100-show-number
- string stringified delimited by "|", space, "of beer on the wall" into outline end-string
- display outline end-display
- add 1 to counter giving counter end-add
- display space end-display
+ display " of beer on the wall"
+ add 1 to counter giving counter
+ display space
end-perform.
display "No more bottles of beer on the wall"
display "No more bottles of beer"
display "Go to the store and buy some more"
- display "Ninety-Nine bottles of beer on the wall"
+ display "Ninety Nine bottles of beer on the wall"
stop run.
-
+
100-show-number.
if no-bottles-left
- move "No more|" to stringified
+ display "No more" with no advancing
else
if counter < 20
- string function trim( adigits( counter ) ), "|" into stringified
+ display function trim( adigits( counter ) ) with no advancing
else
if counter < 100
move spaces to number-name
- string atens( tens ) delimited by space, space delimited by size, adigits( digits ) delimited by space into number-name end-string
- move function trim( number-name) to stringified
- divide counter by 10 giving n remainder r end-divide
- if r not = zero
- inspect stringified replacing first space by "-"
- end-if
- inspect stringified replacing first space by "|"
+ string atens( tens ) delimited by space, space delimited by size, adigits( digits ) delimited by space into number-name
+ display function trim( number-name) with no advancing
end-if
end-if
end-if.
if one-bottle-left
- string stringified delimited by "|", space, "bottle|" delimited by size into stringified end-string
+ display " bottle" with no advancing
else
- string stringified delimited by "|", space, "bottles|" delimited by size into stringified end-string
+ display " bottles" with no advancing
end-if.
100-end.
diff --git a/Task/99-Bottles-of-Beer/COBOL/99-bottles-of-beer-2.cobol b/Task/99-Bottles-of-Beer/COBOL/99-bottles-of-beer-2.cobol
index 6dd44ed15c..3da47d3761 100644
--- a/Task/99-Bottles-of-Beer/COBOL/99-bottles-of-beer-2.cobol
+++ b/Task/99-Bottles-of-Beer/COBOL/99-bottles-of-beer-2.cobol
@@ -47,57 +47,75 @@ working-storage section.
05 filler pic x(9) value "Eighteen".
05 filler pic x(9) value "Nineteen".
05 filler pic x(9) value spaces.
-
+
01 digit-array redefines digit-words.
05 adigits occurs 20 times pic x(9).
-
+
01 number-name pic x(15).
+01 stringified pic x(30).
+01 outline pic x(50).
+01 other-numbers.
+ 03 n pic 999.
+ 03 r pic 999.
+
procedure division.
100-main section.
100-setup.
perform varying counter from 99 by -1 until no-bottles-left
+ move spaces to outline
perform 100-show-number
- display " of beer on the wall"
- perform 100-show-number
- display " of beer"
- display "Take " with no advancing
+ string stringified delimited by "|", space, "of beer on the wall" into outline end-string
+ display outline end-display
+ move spaces to outline
+ string stringified delimited by "|", space, "of beer" into outline end-string
+ display outline end-display
+ move spaces to outline
+ move "Take" to outline
if one-bottle-left
- display "it " with no advancing
+ string outline delimited by space, space, "it" delimited by size, space, "|" into outline end-string
else
- display "one " with no advancing
+ string outline delimited by space, space, "one" delimited by size, space, "|" into outline end-string
end-if
- display "down and pass it round"
- subtract 1 from counter giving counter
+ string outline delimited by "|", "down and pass it round" delimited by size into outline end-string
+ display outline end-display
+ move spaces to outline
+ subtract 1 from counter giving counter end-subtract
perform 100-show-number
- display " of beer on the wall"
- add 1 to counter giving counter
- display space
+ string stringified delimited by "|", space, "of beer on the wall" into outline end-string
+ display outline end-display
+ add 1 to counter giving counter end-add
+ display space end-display
end-perform.
display "No more bottles of beer on the wall"
display "No more bottles of beer"
display "Go to the store and buy some more"
- display "Ninety Nine bottles of beer on the wall"
+ display "Ninety-Nine bottles of beer on the wall"
stop run.
-
+
100-show-number.
if no-bottles-left
- display "No more" with no advancing
+ move "No more|" to stringified
else
if counter < 20
- display function trim( adigits( counter ) ) with no advancing
+ string function trim( adigits( counter ) ), "|" into stringified
else
if counter < 100
move spaces to number-name
- string atens( tens ) delimited by space, space delimited by size, adigits( digits ) delimited by space into number-name
- display function trim( number-name) with no advancing
+ string atens( tens ) delimited by space, space delimited by size, adigits( digits ) delimited by space into number-name end-string
+ move function trim( number-name) to stringified
+ divide counter by 10 giving n remainder r end-divide
+ if r not = zero
+ inspect stringified replacing first space by "-"
+ end-if
+ inspect stringified replacing first space by "|"
end-if
end-if
end-if.
if one-bottle-left
- display " bottle" with no advancing
+ string stringified delimited by "|", space, "bottle|" delimited by size into stringified end-string
else
- display " bottles" with no advancing
+ string stringified delimited by "|", space, "bottles|" delimited by size into stringified end-string
end-if.
100-end.
diff --git a/Task/99-Bottles-of-Beer/Chapel/99-bottles-of-beer.chapel b/Task/99-Bottles-of-Beer/Chapel/99-bottles-of-beer.chapel
index 235950df37..b6e07cf851 100644
--- a/Task/99-Bottles-of-Beer/Chapel/99-bottles-of-beer.chapel
+++ b/Task/99-Bottles-of-Beer/Chapel/99-bottles-of-beer.chapel
@@ -4,7 +4,7 @@
* by Brad Chamberlain and Steve Deitz
* 07/13/2006 in Knoxville airport while waiting for flight home from
* HPLS workshop
- * compiles and runs with chpl compiler version 0.3.3211
+ * compiles and runs with chpl compiler version 1.7.0
* for more information, contact: chapel_info@cray.com
*
*
@@ -23,7 +23,7 @@ config const numBottles = 99;
const numVerses = numBottles+1;
// a domain to describe the space of lyrics
-var LyricsSpace: domain(1) = [1..numVerses];
+var LyricsSpace: domain(1) = {1..numVerses};
// array of lyrics
var Lyrics: [LyricsSpace] string;
@@ -39,7 +39,7 @@ writeln(Lyrics);
// HELPER FUNCTIONS:
-fun computeLyric(verseNum) {
+proc computeLyric(verseNum) {
var bottleNum = numBottles - (verseNum - 1);
var nextBottle = (bottleNum + numVerses - 1)%numVerses;
return "\n" // disguise space used to separate elements in array I/O
@@ -50,7 +50,7 @@ fun computeLyric(verseNum) {
}
-fun describeBottles(bottleNum, startOfVerse:bool = false) {
+proc describeBottles(bottleNum, startOfVerse:bool = false) {
// NOTE: bool should not be necessary here (^^^^); working around bug
var bottleDescription = if (bottleNum) then bottleNum:string
else (if startOfVerse then "N"
@@ -62,7 +62,7 @@ fun describeBottles(bottleNum, startOfVerse:bool = false) {
}
-fun computeAction(bottleNum) {
+proc computeAction(bottleNum) {
return if (bottleNum == 0) then "Go to the store and buy some more, "
else "Take one down and pass it around, ";
}
diff --git a/Task/99-Bottles-of-Beer/Clojure/99-bottles-of-beer.clj b/Task/99-Bottles-of-Beer/Clojure/99-bottles-of-beer.clj
index 15d05694a8..ce14d9cf09 100644
--- a/Task/99-Bottles-of-Beer/Clojure/99-bottles-of-beer.clj
+++ b/Task/99-Bottles-of-Beer/Clojure/99-bottles-of-beer.clj
@@ -12,3 +12,5 @@ Take one down, pass it around,
[start]
(doseq [n (range start 0 -1)]
(verse n)))
+
+(sing 99)
diff --git a/Task/99-Bottles-of-Beer/Component-Pascal/99-bottles-of-beer.component b/Task/99-Bottles-of-Beer/Component-Pascal/99-bottles-of-beer.component
new file mode 100644
index 0000000000..61f6910bc2
--- /dev/null
+++ b/Task/99-Bottles-of-Beer/Component-Pascal/99-bottles-of-beer.component
@@ -0,0 +1,22 @@
+MODULE BottlesOfBeer;
+IMPORT StdLog;
+CONST bottles = 99;
+
+PROCEDURE Part(i: INTEGER);
+BEGIN
+ StdLog.Int(i);StdLog.String(" bottles of beer on the wall");StdLog.Ln;
+ StdLog.Int(i);StdLog.String(" bottles of beer");StdLog.Ln;
+ StdLog.String("Take one down, pass it around");StdLog.Ln;
+ StdLog.Int(i - 1);StdLog.String(" bottles of beer on the wall.");StdLog.Ln;
+ StdLog.Ln
+END Part;
+
+PROCEDURE Sing*;
+VAR
+ i: INTEGER;
+BEGIN
+ FOR i := bottles TO 1 BY -1 DO
+ Part(i)
+ END
+END Sing;
+END BottlesOfBeer.
diff --git a/Task/99-Bottles-of-Beer/Eiffel/99-bottles-of-beer.e b/Task/99-Bottles-of-Beer/Eiffel/99-bottles-of-beer.e
new file mode 100644
index 0000000000..56d0b28234
--- /dev/null
+++ b/Task/99-Bottles-of-Beer/Eiffel/99-bottles-of-beer.e
@@ -0,0 +1,40 @@
+class
+ APPLICATION
+
+create
+ make
+
+feature {NONE} -- Initialization
+
+ make
+ local
+ bottles: INTEGER
+ do
+ from
+ bottles := 99
+ invariant
+ bottles <= 99 and bottles >= 1
+ until
+ bottles = 1
+ loop
+ print (bottles)
+ print (" bottles of beer on the wall,%N")
+ print (bottles)
+ print (" bottles of beer.%N")
+ print ("Take one down, pass it around,%N")
+ bottles := bottles - 1
+ if bottles > 1 then
+ print (bottles)
+ print (" bottles of beer on the wall.%N%N")
+ end
+ variant
+ bottles
+ end
+ print ("1 bottle of beer on the wall.%N%N");
+ print ("No more bottles of beer on the wall,%N");
+ print ("no more bottles of beer.%N");
+ print ("Go to the store and buy some more,%N");
+ print ("99 bottles of beer on the wall.%N");
+ end
+
+end
diff --git a/Task/99-Bottles-of-Beer/Elixir/99-bottles-of-beer.elixir b/Task/99-Bottles-of-Beer/Elixir/99-bottles-of-beer.elixir
new file mode 100644
index 0000000000..cb0897f7ac
--- /dev/null
+++ b/Task/99-Bottles-of-Beer/Elixir/99-bottles-of-beer.elixir
@@ -0,0 +1,16 @@
+defmodule Bottles do
+ def run do
+ Enum.each 99..1, fn idx ->
+ IO.puts "#{idx} bottle#{plural(idx)} of beer on the wall"
+ IO.puts "#{idx} bottle#{plural(idx)} of beer"
+ IO.puts "Take one down, pass it around"
+ IO.puts "#{idx - 1} bottle#{plural(idx-1)} of beer on the wall"
+ IO.puts ""
+ end
+ end
+
+ def plural(1), do: ""
+ def plural(num), do: "s"
+end
+
+Bottles.run
diff --git a/Task/99-Bottles-of-Beer/IDL/99-bottles-of-beer-1.idl b/Task/99-Bottles-of-Beer/IDL/99-bottles-of-beer-1.idl
index ce51766995..8508178dba 100644
--- a/Task/99-Bottles-of-Beer/IDL/99-bottles-of-beer-1.idl
+++ b/Task/99-Bottles-of-Beer/IDL/99-bottles-of-beer-1.idl
@@ -6,5 +6,3 @@ for i=1,99 do begin
99-i, " bottles of beer on the wall."
endfor
End
-
-}
diff --git a/Task/99-Bottles-of-Beer/JavaScript/99-bottles-of-beer-5.js b/Task/99-Bottles-of-Beer/JavaScript/99-bottles-of-beer-5.js
new file mode 100644
index 0000000000..00c4e101b0
--- /dev/null
+++ b/Task/99-Bottles-of-Beer/JavaScript/99-bottles-of-beer-5.js
@@ -0,0 +1,12 @@
+(function(){var beer = 99,string='';
+while (beer > 0)
+{
+ string+=beer+"bottles of beer on the wall\n"+ //inline line appending shouldn't be as expensive.
+ beer +
+ "bottles of beer\nTake one down, pass it around\n"+
+ (--beer)+
+ " bottles of beer on the wall\n" ;
+
+}
+console.log(string);
+})()
diff --git a/Task/99-Bottles-of-Beer/Lhogho/99-bottles-of-beer.lhogho b/Task/99-Bottles-of-Beer/Lhogho/99-bottles-of-beer.lhogho
new file mode 100644
index 0000000000..2ae05b1acd
--- /dev/null
+++ b/Task/99-Bottles-of-Beer/Lhogho/99-bottles-of-beer.lhogho
@@ -0,0 +1,33 @@
+to bottle :i
+ if :i = 0 [output "|No more bottles of beer|]
+ if :i = 1 [output "|One bottle of beer|]
+ output word :i "| bottles of beer|
+end
+
+to it_one :n
+ if :n = 1 [output "it][output "one]
+end
+
+to verse :i
+ (print bottle :i "| on the wall,|)
+ (print word bottle :i ".)
+ (print "Take it_one :i "|down, pass it round|)
+ (print bottle :i - 1 "| on the wall.|)
+ print
+end
+
+to sing :i
+ if :i = 0
+ [
+ print "|No more bottles of beer on the wall,
+No more bottles of beer.
+Go to the store and buy some more.
+99 bottles of beer on the wall.|
+ stop
+ ]
+ verse :i
+ sing :i - 1
+end
+
+;Using it:
+sing 99
diff --git a/Task/99-Bottles-of-Beer/Lisp/99-bottles-of-beer.l b/Task/99-Bottles-of-Beer/Lisp/99-bottles-of-beer.l
new file mode 100644
index 0000000000..79ae8ef054
--- /dev/null
+++ b/Task/99-Bottles-of-Beer/Lisp/99-bottles-of-beer.l
@@ -0,0 +1,19 @@
+(defun beer-verse (count)
+ "Recurses the verses"
+ (format t "~A bottle~A of beer on the wall~%"
+ count
+ (if (/= count 1) "s" ""))
+ (format t "~A bottle~A of beer~%"
+ count
+ (if (/= count 1) "s" ""))
+ (format t "Take one down, pass it round~%")
+ (format t "~A bottle~A of beer on the wall~%~%"
+ (if (= count 1)
+ "No"
+ (- count 1))
+ (if (/= count 2)
+ "s"
+ ""))
+ (if (> count 1)
+ (beer-verse (- count 1))))
+(beer-verse 99)
diff --git a/Task/99-Bottles-of-Beer/PostScript/99-bottles-of-beer.ps b/Task/99-Bottles-of-Beer/PostScript/99-bottles-of-beer.ps
new file mode 100644
index 0000000000..e6f1729f6c
--- /dev/null
+++ b/Task/99-Bottles-of-Beer/PostScript/99-bottles-of-beer.ps
@@ -0,0 +1,37 @@
+%!PS
+/Helvetica findfont 9 scalefont setfont
+
+/printBeer {
+ dup
+ 20 string cvs show
+ ( bottle) show
+ 1 ne
+ { (s) show } if
+ ( of beer) show
+} def
+
+/printVerse {
+ dup
+ dup
+ dup
+ 7 mul
+ 50 add
+ /yPos exch def
+ 15 yPos moveto
+ printBeer
+ ( on the wall, ) show
+ printBeer
+ (. ) show
+ (Take one down, pass it around, ) show
+ 1 sub
+ printBeer
+ ( on the wall. ) show
+} def
+
+/song {
+ 100 -1 1 { printVerse } for
+} def
+
+song
+showpage
+%%EOF
diff --git a/Task/99-Bottles-of-Beer/SQL/99-bottles-of-beer-1.sql b/Task/99-Bottles-of-Beer/SQL/99-bottles-of-beer-1.sql
new file mode 100644
index 0000000000..f191022cf4
--- /dev/null
+++ b/Task/99-Bottles-of-Beer/SQL/99-bottles-of-beer-1.sql
@@ -0,0 +1,29 @@
+DELIMITER $$
+DROP PROCEDURE IF EXISTS bottles_$$
+CREATE pROCEDURE `bottles_`(inout bottle_count int, inout song text)
+BEGIN
+declare bottles_text varchar(30);
+
+
+IF bottle_count > 0 THEN
+
+
+ if bottle_count != 1 then
+ set bottles_text := ' bottles of beer ';
+ else set bottles_text = ' bottle of beer ';
+ end if;
+
+ SELECT concat(song, bottle_count, bottles_text, ' \n') INTO song;
+ SELECT concat(song, bottle_count, bottles_text, 'on the wall\n') INTO song;
+ SELECT concat(song, 'Take one down, pass it around\n') into song;
+ SELECT concat(song, bottle_count -1 , bottles_text, 'on the wall\n\n') INTO song;
+ set bottle_count := bottle_count -1;
+ CALL bottles_( bottle_count, song);
+ END IF;
+END$$
+
+set @bottles=99;
+set max_sp_recursion_depth=@bottles;
+set @song='';
+call bottles_( @bottles, @song);
+select @song;
diff --git a/Task/99-Bottles-of-Beer/SQL/99-bottles-of-beer-2.sql b/Task/99-Bottles-of-Beer/SQL/99-bottles-of-beer-2.sql
new file mode 100644
index 0000000000..393ec50ba2
--- /dev/null
+++ b/Task/99-Bottles-of-Beer/SQL/99-bottles-of-beer-2.sql
@@ -0,0 +1,46 @@
+CREATE PROCEDURE bottles
+ @bottle_count int,
+ @song varchar(MAX)
+
+AS
+BEGIN
+
+declare @bottles_text VARCHAR(MAX);
+
+
+IF @bottle_count > 0
+ BEGIN
+ IF @bottle_count != 1
+ BEGIN
+ SET @bottles_text = ' bottles of beer ';
+ END
+ ELSE
+ BEGIN
+ SET @bottles_text = ' bottle of beer ';
+ END
+
+
+
+ SET @song = @song + CAST(@bottle_count AS VARCHAR) + @bottles_text + '\n';
+
+ SET @song = @song + CAST(@bottle_count AS VARCHAR) + @bottles_text + 'on the wall\n'
+ SET @song = @song + 'Take one down, pass it around\n'
+ SET @song = @song + CAST((@bottle_count - 1) AS VARCHAR) + @bottles_text + 'on the wall\n'
+
+
+ SET @bottle_count = (@bottle_count - 1);
+
+
+
+
+ EXEC bottles @bottle_count, @song
+
+END
+ELSE
+ select @song AS 'RESULT'
+END
+
+/*****
+AND IN ORDER TO CALL PROCEDURE:
+****/
+EXECUTE bottles 31, '';
diff --git a/Task/99-Bottles-of-Beer/Vala/99-bottles-of-beer.vala b/Task/99-Bottles-of-Beer/Vala/99-bottles-of-beer.vala
new file mode 100644
index 0000000000..ddecd855d9
--- /dev/null
+++ b/Task/99-Bottles-of-Beer/Vala/99-bottles-of-beer.vala
@@ -0,0 +1,19 @@
+void main() {
+ uint bottles = 99;
+ do {
+ print("%u bottles of beer on the wall.\n", bottles);
+ print("%u bottles of beer!\n", bottles);
+ print("Take one down, pass it around!\n");
+ --bottles;
+ if (bottles == 0) {
+ print("No bottles");
+ }
+ else if (bottles == 1) {
+ print("1 bottle");
+ }
+ else {
+ print("%u bottles", bottles);
+ }
+ print(" of beer on the wall!\n\n");
+ } while (bottles != 0);
+}
diff --git a/Task/A+B/00DESCRIPTION b/Task/A+B/00DESCRIPTION
index 704ca6dc95..0bcc826b67 100644
--- a/Task/A+B/00DESCRIPTION
+++ b/Task/A+B/00DESCRIPTION
@@ -1,4 +1,4 @@
-'''A+B''' - in programming contests, classic problem, which is given so contestants can gain familiarity with online judging system being used.
+'''A+B''' - in programming contests, classic problem, which is given so contestants can gain familiarity with the online judging system being used.
'''Problem statement'''
Given 2 integer numbers, A and B. One needs to find their sum.
diff --git a/Task/A+B/ARM-Assembly/a+b-1.arm b/Task/A+B/ARM-Assembly/a+b-1.arm
new file mode 100644
index 0000000000..e36fc885d4
--- /dev/null
+++ b/Task/A+B/ARM-Assembly/a+b-1.arm
@@ -0,0 +1,2 @@
+as -o ab.o ab.S
+ld -o a.out ab.o
diff --git a/Task/A+B/ARM-Assembly/a+b-2.arm b/Task/A+B/ARM-Assembly/a+b-2.arm
new file mode 100644
index 0000000000..336c349126
--- /dev/null
+++ b/Task/A+B/ARM-Assembly/a+b-2.arm
@@ -0,0 +1,513 @@
+.data
+ .align 2
+ .code 32
+
+.section .rodata
+ .align 2
+ .code 32
+
+overflow_msg: .ascii "Invalid number. Overflow.\n"
+overflow_msglen = . - overflow_msg
+bad_input_msg: .ascii "Invalid input. NaN.\n"
+bad_input_msglen = . - bad_input_msg
+range_err_msg: .ascii "Value out of range.\n"
+range_err_msglen = . - range_err_msg
+io_error_msg: .ascii "I/O error.\n"
+io_error_msglen = . - range_err_msg
+
+sys_exit = 1
+sys_read = 3
+sys_write = 4
+max_rd_buf = 14
+lf = 10
+m10_9 = 0x3b9aca00
+maxval = 1000
+minval = -1000
+
+.text
+
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@ void main()
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+ .align 2
+ .code 32
+ .type _start STT_FUNC
+ .global _start
+_start:
+ stmfd sp!, {r4,r5,lr}
+
+.read_lhs:
+ ldr r0, =max_rd_buf
+ bl readint
+ mov r4, r0
+ bl printint
+ mov r0, r4
+ bl range_check
+
+.read_rhs:
+ ldr r0, =max_rd_buf
+ bl readint
+ mov r5, r0
+ bl printint
+ mov r0, r5
+ bl range_check
+
+.sum_and_print:
+ adds r0, r4, r5
+ bvs overflow
+ bl printint
+
+.main_exit:
+ mov r0, #0
+ bl exit
+ ldmfd sp!, {r4,r5,pc}
+
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@ Read from stdin until we encounter a non-digit, or we have read bytes2rd digits.
+@@ Ignore leading spaces.
+@@ Return value to the caller converted to a signed int.
+@@ We read positive values, but if we read a leading '-' sign, we convert the
+@@ return value to two's complement.
+@@ The argument is max number of bytes to read from stdin.
+@@ int readint(int bytes2rd)
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+ .align 2
+ .code 32
+ .type readint STT_FUNC
+ .global readint
+readint:
+ stmfd sp!, {r4,r5,r6,r7,lr}
+ @@@@@@@@@@@@@@@
+ @@ r0 : #0 for stdin arg to read.
+ @@ r1 : ptr to current pos in local buffer.
+ @@ r2 : #1 to read one byte at a time.
+ @@ r3,r7 : tmp.
+ @@ r4 : number of bytes read.
+ @@ r5 : value of current byte.
+ @@ r6 : 0 while we are reading leading spaces.
+ @@@@@@@@@@@@@@@
+ sub sp, sp, r0
+ mov r1, sp
+ mov r3, #0
+ push {r3} @ sp,#4: local var @isnegative. return in r1. Default value is 0/false. Positive number.
+ push {r0} @ sp,#0: local var @maxbytes. const.
+ mov r2, #1
+ mov r4, #0
+
+ mov r6, #0
+ b .rd
+@ we get here if r6 is 0.
+@ if space, goto .rd.
+@ else set r6 to 1 and goto .noleading.
+.leadchk:
+ mov r0, r5
+ bl isspace
+ cmp r0, #1
+ beq .rd
+
+.sign_chk:
+ mov r0, r5
+ push {r1}
+ bl issign
+ cmp r0, #1
+ streq r0, [sp,#8] @ sp,#4 + 4 for the pushed r1.
+ movhi r1, #0
+ strhi r1, [sp,#8] @ sp,#4 + 4 for the pushed r1.
+ pop {r1}
+ bhs .rd
+
+ mov r6, #1
+ b .noleading
+
+.rd:
+ mov r0, #0
+ bl read
+ cmp r0, #1
+ bne .sum_digits_eof @ eof
+ mov r5, #0
+ ldrb r5, [r1]
+ cmp r6, #0
+ beq .leadchk
+
+.noleading:
+ mov r0, r5
+ bl isdigit
+ cmp r0, #1
+ bne .sum_digits_nan @ r5 is non-digit
+
+ add r4, r4, #1
+ add r1, r1, #1
+ @ max chars to read is received in arg[0], stored in local var at sp.
+ @ Only 10 can be valid, so the default of 12 leaves space for separator.
+ ldr r3, [sp]
+ cmp r4, r3
+ beq .sum_digits_maxrd @ max bytes read.
+ b .rd
+
+
+ @@@@@@@@@@@@@@@
+ @ We have read r4 (0..arg[0](default 12)) digits when we get here. Go through them
+ @ and add/mul them together to calculate a number.
+ @ We multiply and add the digits in reverse order to simplify the multiplication.
+ @@@@@@@@@@@@@@@
+ @ r0: return value.
+ @ r1: local variable for read buffer.
+ @ r2: tmp for conversion.
+ @ r3,r6,r7: tmp
+ @ r4: number of chars we have read.
+ @ r5: multiplier 1,10,100.
+ @@@@@@@@@@@@@@@
+.sum_digits_nan:
+ mov r0, r5
+ bl isspace
+ cmp r0, #1
+ bne bad_input
+.sum_digits_maxrd:
+.sum_digits_eof:
+ mov r0, #0
+ mov r5, #1
+.count:
+ cmp r4, #0
+ beq .readint_ret
+ sub r4, r4, #1
+ sub r1, #1
+ ldrb r2, [r1]
+ sub r2, r2, #48
+ mov r3, r2
+
+ @ multiply r3 (char value of digit) with r5 (multiplier).
+ @ possible overflow.
+ @ MI means negative.
+ @ smulls multiples two signed 32 bit vals and returns a 64 bit result.
+ @ If we get anything in r7, the value has overflowed.
+ @ having r2[31] set is overflow too.
+ smulls r2, r7, r3, r5
+ cmp r7, #0
+ bne overflow
+ cmp r2, #0
+ bmi overflow
+
+ @@ possible overflow.
+ adds r0, r0, r2
+ bvs overflow
+ bmi overflow
+
+ @@ end of array check.
+ @@ check is needed here too, for large numbers, since 10 billion is not a valid 32 bit val.
+ cmp r4, #0
+ beq .readint_ret
+
+ @@ multiple multiplier by 10.
+ @@ possible overflow.
+ @@ too many digits is input. happens if input is more than 10 digits.
+ mov r3, #10
+ mov r6, r5
+ smulls r5, r7, r3, r6
+ cmp r7, #0
+ bne overflow
+ cmp r5, #0
+ bmi overflow
+ b .count
+
+.readint_ret:
+ ldr r1, [sp,#4] @ read isnegative value.
+ cmp r1, #0
+ rsbne r0, r0, #0
+ pop {r2}
+ add sp, sp, #4
+ add sp, sp, r2
+ ldmfd sp!, {r4,r5,r6,r7,pc}
+
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@ int isdigit(int)
+@@ #48..#57 ascii range for '0'..'9'.
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+ .align 2
+ .code 32
+ .type isdigit STT_FUNC
+ .global isdigit
+isdigit:
+ stmfd sp!, {r1,lr}
+ cmp r0, #48
+ blo .o_range
+ cmp r0, #57
+ bhi .o_range
+ mov r0, #1
+ ldmfd sp!, {r1,pc}
+.o_range:
+ mov r0, #0
+ ldmfd sp!, {r1,pc}
+
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@ int isspace(int)
+@@ ascii space = 32, tab = 9, newline 10, cr = 13.
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+ .align 2
+ .code 32
+ .type isspace STT_FUNC
+ .global isspace
+isspace:
+ stmfd sp!, {lr}
+ cmp r0, #32
+ cmpne r0, #9
+ cmpne r0, #10
+ cmpne r0, #13
+ beq .is_space
+ mov r0, #0
+ ldmfd sp!, {pc}
+.is_space:
+ mov r0, #1
+ ldmfd sp!, {pc}
+
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@ Return value is 1 for '-' 2 for '+'.
+@@ int isspace(int)
+@@ '+' = 43 and '-' = 45.
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+ .align 2
+ .code 32
+ .type issign STT_FUNC
+ .global issign
+issign:
+ stmfd sp!, {lr}
+ cmp r0, #43
+ beq .plus_sign
+ cmp r0, #45
+ beq .minus_sign
+ mov r0, #0
+ ldmfd sp!, {pc}
+.plus_sign:
+ mov r0, #2
+ ldmfd sp!, {pc}
+.minus_sign:
+ mov r0, #1
+ ldmfd sp!, {pc}
+
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@ ARGS:
+@@ r0 : in out arg (current int value)
+@@ r1 : in out arg (ptr to current pos in buffer)
+@@ r2 : in arg (const increment. 1000_000_000, 100_000_000, 10_000_000, 1000_000, 100_000, 10_000, 1000, 100, 10, 1.)
+@@
+@@ r4 : tmp local. Outer scope must init to #10 and count down to #0.
+@@ Special case is INTMAX. Must init to 5 if r4 >= 1000_000_000 (0x3b9aca00 = m10_9).
+@@ r5: tmp
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+ .align 2
+ .code 32
+ .type get_digit STT_FUNC
+ .global get_digit
+get_digit:
+ stmfd sp!, {r2,r4,r5,lr}
+ ldr r5, =m10_9
+ cmp r2, r5
+ movlo r4, #10
+ movhs r4, #5
+.get_digit_loop:
+ sub r4, #1
+ mul r5, r4, r2
+ cmp r0, r5
+ blo .get_digit_loop
+ sub r0, r5
+ add r4, r4, #48
+ strb r4, [r1], #1
+ ldmfd sp!, {r2,r4,r5,pc}
+
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@ A quick way to divide (numbers evenly divisible by 10) by 10.
+@@ Most ARM cpus don't have a divide instruction,
+@@ so this will always work.
+@@ A generic div function is long and not needed here.
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+ .align 2
+.div_r2_10:
+ stmfd sp!, {r0,r1,r3,lr}
+ mov r0, #1
+ mov r1, #10
+.find_x:
+ mul r3, r0, r1;
+ cmp r3, r2
+ movlo r0, r3
+ blo .find_x
+ mov r2, r0
+ ldmfd sp!, {r0,r1,r3,pc}
+
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+ .align 2
+.print_neg_sign:
+ stmfd sp!, {r0,r1,r2,lr}
+ @ 45 = '-'
+ mov r1, #45
+ push {r1}
+ mov r2, #1
+ @ r1 is ptr to our local variable (holding '-').
+ mov r1, sp
+ mov r0, #1
+ bl write
+ cmp r0, #0
+ blne io_error
+ pop {r1}
+ ldmfd sp!, {r0,r1,r2,pc}
+
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@ void printint(int val)
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+ .align 2
+ .code 32
+ .type printint STT_FUNC
+ .global printint
+printint:
+ stmfd sp!, {r4,r5,r6,lr}
+ mov r1, #1
+ ands r1, r1, r0, LSR #31
+ rsbne r0, r0, #0
+ blne .print_neg_sign
+ sub sp, sp, #20
+ mov r1, sp
+ mov r3, sp
+
+ ldr r2, =m10_9
+.getc_loop:
+ bl get_digit
+ cmp r2, #1
+ beq .exit_getc_loop
+ bl .div_r2_10
+ b .getc_loop
+.exit_getc_loop:
+ ldr r0, =lf
+ strb r0, [r1], #1
+
+ sub r2, r1, r3
+ mov r1, r3
+ mov r0, #1
+ bl write
+ cmp r0, #0
+ blne io_error
+ add sp, sp, #20
+ ldmfd sp!, {r4,r5,r6,pc}
+
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+ .align 2
+range_check:
+ stmfd sp!, {r4,r5,lr}
+ ldr r4, =minval
+ ldr r5, =maxval
+ cmp r4, #0
+ cmpeq r5, #0
+ beq .skip_range_check
+ cmp r0, r4
+ bllt range_err
+ cmp r0, r5
+ blgt range_err
+.skip_range_check:
+ ldmfd sp!, {r4,r5,pc}
+
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@ void range_err()
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+ .align 2
+range_err:
+ stmfd sp!, {lr}
+ ldr r2, =range_err_msglen
+ ldr r1, =range_err_msg
+ mov r0, #2
+ bl write
+ mov r0, #-1
+ bl exit
+ ldmfd sp!, {pc}
+
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@ void overflow()
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+ .align 2
+overflow:
+ stmfd sp!, {lr}
+ ldr r2, =overflow_msglen
+ ldr r1, =overflow_msg
+ mov r0, #2
+ bl write
+ mov r0, #-1
+ bl exit
+ ldmfd sp!, { pc}
+
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@ void bad_input()
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+ .align 2
+bad_input:
+ stmfd sp!, {lr}
+ ldr r2, =bad_input_msglen
+ ldr r1, =bad_input_msg
+ mov r0, #2
+ bl write
+ mov r0, #-1
+ bl exit
+ ldmfd sp!, {pc}
+
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@ void io_error()
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+ .align 2
+io_error:
+ stmfd sp!, {lr}
+ ldr r2, =io_error_msglen
+ ldr r1, =io_error_msg
+ mov r0, #2
+ bl write
+ mov r0, #-1
+ bl exit
+ ldmfd sp!, {pc}
+
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@ void exit(int)
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+ .align 2
+ .code 32
+ .type _start STT_FUNC
+ .global exit
+exit:
+ stmfd sp!, {r7, lr}
+ ldr r7, =sys_exit
+ svc #0
+ ldmfd sp!, {r7, pc}
+
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@ int write(int fd,char*buf,int len)
+@ Return 0 if we successfully write all bytes. Otherwise return the error code.
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+ .align 2
+ .code 32
+ .type _start STT_FUNC
+ .global write
+write:
+ stmfd sp!, {r4,r7, lr}
+ mov r4, r2
+.wr_loop:
+ ldr r7, =sys_write
+ svc #0
+ @ If r0 is negative, it is more than r4 with LO (unsigned <).
+ cmp r0, r4
+ sublo r4, r0
+ blo .wr_loop
+ moveq r0, #0
+ ldmfd sp!, {r4,r7, pc}
+
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@ int read(int fd,char*buf,int len)
+@ Return number of bytes successfully read. Ignore errors.
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+ .align 2
+ .code 32
+ .type _start STT_FUNC
+ .global read
+read:
+ stmfd sp!, {r7, lr}
+ ldr r7, =sys_read
+ svc #0
+ cmp r0, #0
+ movlt r0, #0
+ ldmfd sp!, {r7, pc}
diff --git a/Task/A+B/Aime/a+b.aime b/Task/A+B/Aime/a+b.aime
new file mode 100644
index 0000000000..71b98988e9
--- /dev/null
+++ b/Task/A+B/Aime/a+b.aime
@@ -0,0 +1,7 @@
+file f;
+list l;
+
+f_affix(f, "/dev/stdin");
+f_list(f, l, 0);
+o_integer(atoi(l_q_text(l, 0)) + atoi(l_q_text(l, 1)));
+o_newline();
diff --git a/Task/A+B/Brainf---/a+b.bf b/Task/A+B/Brainf---/a+b.bf
index e8aa29a60e..89541f8146 100644
--- a/Task/A+B/Brainf---/a+b.bf
+++ b/Task/A+B/Brainf---/a+b.bf
@@ -1,6 +1,24 @@
-, Read first number
->,, Eat separator and read second number
-[<+>-] Add ASCII values
-,++ Use newline to get a 12
-[<---->-] Subtract 48 to get back to ASCII
-<. and print
+INPUT AND SUMMATION
+TODO if first symbol is a minus sign print Qgo awayQ
++> initialize sum to one
+++[ loop for each input ie twice
+ [>>,----------[----------------------[-<+>]]<] eat digits until space or newline
+ <[<]>>>
+ >[< until no next digit
+ ---------------- subtract ascii zero minus what we subtracted above
+ [->++++++++++<] add ten timess that to the next digit
+ <[->+<]<[->+<]>> shift sum and loop counter
+ >>
+ ]
+ <---------------- subtract as above from last digit as well
+ [-<<+>>] add to sum
+ <-
+]
+<- subtract original one from sum
+
+OUTPUT
+[ while a number divided by ten is bigger than zero
+ [->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->--------->+<<[->>>+<<<]]]]]]]]]]>>>[-<<<+>>>]<<<] divide by ten
+ >++++++++++++++++++++++++++++++++++++++++++++++++> convert remainder to ascii digit
+]
+<[.<<] print ascii digits
diff --git a/Task/A+B/CoffeeScript/a+b-1.coffee b/Task/A+B/CoffeeScript/a+b-1.coffee
new file mode 100644
index 0000000000..6a5ab62a7c
--- /dev/null
+++ b/Task/A+B/CoffeeScript/a+b-1.coffee
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
diff --git a/Task/A+B/CoffeeScript/a+b-2.coffee b/Task/A+B/CoffeeScript/a+b-2.coffee
new file mode 100644
index 0000000000..887e8fe83f
--- /dev/null
+++ b/Task/A+B/CoffeeScript/a+b-2.coffee
@@ -0,0 +1,30 @@
+{ stdin } = process
+sum = ( a, b ) -> a + b
+
+display = ( messages... ) -> console.log messages...
+
+parse = ( input ) ->
+ parseInt x for x in ( x.trim() for x in input.split ' ' ) when x?.length
+
+check = ( numbers... ) ->
+ return no for x in numbers when isNaN x
+ return no for x in numbers when not ( -1000 < x < 1000 )
+ yes
+
+prompt = ->
+ display 'Please enter two integers between -1000 and 1000, separated by a space:'
+ stdin.once 'data', ( data ) ->
+ [ a, b ] = parse data
+ if check a, b
+ display "#{ a } + #{ b } = #{ sum a, b }"
+ else
+ display "Invalid input: #{ a }, #{ b }"
+ do prompt
+ return
+
+# Resume input and set the incoming encoding.
+stdin.resume()
+stdin.setEncoding 'utf8'
+
+# Start the main loop.
+do prompt
diff --git a/Task/A+B/Component-Pascal/a+b.component b/Task/A+B/Component-Pascal/a+b.component
new file mode 100644
index 0000000000..549f364678
--- /dev/null
+++ b/Task/A+B/Component-Pascal/a+b.component
@@ -0,0 +1,29 @@
+MODULE AB;
+IMPORT StdLog, DevCommanders,TextMappers;
+
+PROCEDURE DoAB(x,y: INTEGER);
+BEGIN
+ StdLog.Int(x);StdLog.Int(y);StdLog.Int(x + y);StdLog.Ln;
+END DoAB;
+
+PROCEDURE Go*;
+VAR
+ params: DevCommanders.Par;
+ s: TextMappers.Scanner;
+ p : ARRAY 2 OF INTEGER;
+ current: INTEGER;
+BEGIN
+ current := 0;
+ params := DevCommanders.par;
+ s.ConnectTo(params.text);
+ s.SetPos(params.beg);
+ s.Scan;
+ WHILE(~s.rider.eot) DO
+ IF (s.type = TextMappers.int) THEN
+ p[current] := s.int; INC(current);
+ END;
+ s.Scan;
+ END;
+ IF current = 2 THEN DoAB(p[0],p[1]) END;
+END Go;
+END AB.
diff --git a/Task/A+B/Elena/a+b.elena b/Task/A+B/Elena/a+b.elena
index ee8fac7a79..9a01ed9805 100644
--- a/Task/A+B/Elena/a+b.elena
+++ b/Task/A+B/Elena/a+b.elena
@@ -1,11 +1,10 @@
-#define std'basic'*.
-#define ext'io'*.
+#define system.
+#define extensions'io.
-#symbol Console =>
+#symbol program =
[
- #var anOutput := __wrap(ELineInput, 'program'input).
- #var A := anOutput >> Integer.
- #var B := anOutput >> Integer.
+ #var A := consoleEx >> Integer new.
+ #var B := consoleEx >> Integer new.
- 'program'output << A + B.
+ consoleEx << A + B.
].
diff --git a/Task/A+B/Excel/a+b-1.excel b/Task/A+B/Excel/a+b-1.excel
new file mode 100644
index 0000000000..2426217b86
--- /dev/null
+++ b/Task/A+B/Excel/a+b-1.excel
@@ -0,0 +1 @@
+=A1+B1
diff --git a/Task/A+B/Excel/a+b-2.excel b/Task/A+B/Excel/a+b-2.excel
new file mode 100644
index 0000000000..d43017edcc
--- /dev/null
+++ b/Task/A+B/Excel/a+b-2.excel
@@ -0,0 +1 @@
+1 2 3
diff --git a/Task/A+B/Julia/a+b-1.julia b/Task/A+B/Julia/a+b-1.julia
index b0066208b5..a6513cfc2e 100644
--- a/Task/A+B/Julia/a+b-1.julia
+++ b/Task/A+B/Julia/a+b-1.julia
@@ -1,6 +1,6 @@
-macro add(a,b)
- return a + b
+#A+B
+function AB()
+ input = sum(map(int,split(readline(STDIN)," ")))
+ println(input)
end
-
-julia> @add 1 2
-3
+AB()
diff --git a/Task/A+B/Julia/a+b-2.julia b/Task/A+B/Julia/a+b-2.julia
index 9ccc30098d..bb1d50e25f 100644
--- a/Task/A+B/Julia/a+b-2.julia
+++ b/Task/A+B/Julia/a+b-2.julia
@@ -1,6 +1,3 @@
-#aplusb.jl contents
-x = sum(ARGS)
-print(x)
-#run at command prompt
-$ julia aplusb.jl 1 2
-$ 3
+julia> int(readuntil(STDIN, ' ')) + int(readuntil(STDIN, '\n'))
+1 2
+3
diff --git a/Task/A+B/Maxima/a+b.maxima b/Task/A+B/Maxima/a+b.maxima
new file mode 100644
index 0000000000..384447ce5b
--- /dev/null
+++ b/Task/A+B/Maxima/a+b.maxima
@@ -0,0 +1,6 @@
+in_stream: openr("/dev/stdin");
+unless (line: readline(in_stream), line=false) do (
+ q: map('parse_string, split(line, " ")),
+ print(q[1]+q[2])
+ );
+close(in_stream);
diff --git a/Task/A+B/ZED/a+b.zed b/Task/A+B/ZED/a+b.zed
index de54df4381..51a65c1711 100644
--- a/Task/A+B/ZED/a+b.zed
+++ b/Task/A+B/ZED/a+b.zed
@@ -1,5 +1,5 @@
(A+B)
-comment
+comment: returns the sum of two values taken from standard input
(always)
(+) (read) (default-input-port)
(read) (default-input-port)
diff --git a/Task/Abstract-type/COBOL/abstract-type.cobol b/Task/Abstract-type/COBOL/abstract-type.cobol
new file mode 100644
index 0000000000..51da04507e
--- /dev/null
+++ b/Task/Abstract-type/COBOL/abstract-type.cobol
@@ -0,0 +1,58 @@
+ INTERFACE-ID. Shape.
+
+ PROCEDURE DIVISION.
+
+ METHOD-ID. perimeter.
+ DATA DIVISION.
+ LINKAGE SECTION.
+ 01 ret USAGE FLOAT-LONG.
+ PROCEDURE DIVISION RETURNING ret.
+ END METHOD perimeter.
+
+ METHOD-ID. shape-area.
+ DATA DIVISION.
+ LINKAGE SECTION.
+ 01 ret USAGE FLOAT-LONG.
+ PROCEDURE DIVISION RETURNING ret.
+ END METHOD shape-area.
+
+ END INTERFACE Shape.
+
+
+ CLASS-ID. Rectangle.
+
+ ENVIRONMENT DIVISION.
+ CONFIGURATION SECTION.
+ REPOSITORY.
+ INTERFACE Shape.
+
+ OBJECT IMPLEMENTS Shape.
+ DATA DIVISION.
+ WORKING-STORAGE SECTION.
+ 01 width USAGE FLOAT-LONG PROPERTY.
+ 01 height USAGE FLOAT-LONG PROPERTY.
+
+ PROCEDURE DIVISION.
+
+ METHOD-ID. perimeter.
+ DATA DIVISION.
+ LINKAGE SECTION.
+ 01 ret USAGE FLOAT-LONG.
+ PROCEDURE DIVISION RETURNING ret.
+ COMPUTE ret = width * 2.0 + height * 2.0
+ GOBACK
+ .
+ END METHOD perimeter.
+
+ METHOD-ID. shape-area.
+ DATA DIVISION.
+ LINKAGE SECTION.
+ 01 ret USAGE FLOAT-LONG.
+ PROCEDURE DIVISION RETURNING ret.
+ COMPUTE ret = width * height
+ GOBACK
+ .
+ END METHOD shape-area.
+ END OBJECT.
+
+ END CLASS Rectangle.
diff --git a/Task/Abstract-type/Component-Pascal/abstract-type-1.component b/Task/Abstract-type/Component-Pascal/abstract-type-1.component
new file mode 100644
index 0000000000..4ea0e0fcd8
--- /dev/null
+++ b/Task/Abstract-type/Component-Pascal/abstract-type-1.component
@@ -0,0 +1,11 @@
+(* Abstract type *)
+Object = POINTER TO ABSTRACT RECORD END;
+
+(* Integer inherits Object *)
+Integer = POINTER TO RECORD (Object)
+ i: INTEGER
+END;
+(* Point inherits Object *)
+Point = POINTER TO RECORD (Object)
+ x,y: REAL
+END;
diff --git a/Task/Abstract-type/Component-Pascal/abstract-type-2.component b/Task/Abstract-type/Component-Pascal/abstract-type-2.component
new file mode 100644
index 0000000000..0f9c7038f7
--- /dev/null
+++ b/Task/Abstract-type/Component-Pascal/abstract-type-2.component
@@ -0,0 +1,15 @@
+(* Abstract method of Object *)
+PROCEDURE (dn: Object) Show*, NEW, ABSTRACT;
+
+(* Implementation of the abstract method Show() in class Integer *)
+PROCEDURE (i: Integer) Show*;
+BEGIN
+ StdLog.String("Integer(");StdLog.Int(i.i);StdLog.String(");");StdLog.Ln
+END Show;
+
+(* Implementation of the abstract method Show() in class Point *)
+PROCEDURE (p: Point) Show*;
+BEGIN
+ StdLog.String("Point(");StdLog.Real(p.x);StdLog.Char(',');
+ StdLog.Real(p.y);StdLog.String(");");StdLog.Ln
+END Show;
diff --git a/Task/Abstract-type/Nemerle/abstract-type.nemerle b/Task/Abstract-type/Nemerle/abstract-type.nemerle
new file mode 100644
index 0000000000..c825633e08
--- /dev/null
+++ b/Task/Abstract-type/Nemerle/abstract-type.nemerle
@@ -0,0 +1,38 @@
+using System.Console;
+
+namespace RosettaCode
+{
+ abstract class Fruit
+ {
+ abstract public Eat() : void;
+ abstract public Peel() : void;
+
+ virtual public Cut() : void // an abstract class con contain a mixture of abstract and implemented methods
+ { // the virtual keyword allows the method to be overridden by derivative classes
+ WriteLine("Being cut.");
+ }
+ }
+
+ interface IJuiceable
+ {
+ Juice() : void; // interfaces contain only the signatures of methods
+ }
+
+ class Orange : Fruit, IJuiceable
+ {
+ public override Eat() : void // implementations of abstract methods need to be marked override
+ {
+ WriteLine("Being eaten.");
+ }
+
+ public override Peel() : void
+ {
+ WriteLine("Being peeled.");
+ }
+
+ public Juice() : void
+ {
+ WriteLine("Being juiced.");
+ }
+ }
+}
diff --git a/Task/Accumulator-factory/Bracmat/accumulator-factory.bracmat b/Task/Accumulator-factory/Bracmat/accumulator-factory.bracmat
new file mode 100644
index 0000000000..772f0055a9
--- /dev/null
+++ b/Task/Accumulator-factory/Bracmat/accumulator-factory.bracmat
@@ -0,0 +1,15 @@
+( ( accumulator
+ =
+ .
+ ' ( add sum object
+ . (object=add=$arg+!arg)
+ & !(object.add):?sum
+ & '($($sum)+!arg):(=?(object.add))
+ & !sum
+ )
+ )
+& accumulator$1:(=?x)
+& x$5
+& accumulator$3
+& out$(x$23/10)
+)
diff --git a/Task/Accumulator-factory/Deja-Vu/accumulator-factory.djv b/Task/Accumulator-factory/Deja-Vu/accumulator-factory.djv
new file mode 100644
index 0000000000..4b14ca2ca3
--- /dev/null
+++ b/Task/Accumulator-factory/Deja-Vu/accumulator-factory.djv
@@ -0,0 +1,9 @@
+accum n:
+ labda i:
+ set :n + n i
+ n
+
+local :x accum 1
+drop x 5
+drop accum 3
+print x 2.3
diff --git a/Task/Accumulator-factory/Elena/accumulator-factory.elena b/Task/Accumulator-factory/Elena/accumulator-factory.elena
index 926d7ad59d..aea8c402e8 100644
--- a/Task/Accumulator-factory/Elena/accumulator-factory.elena
+++ b/Task/Accumulator-factory/Elena/accumulator-factory.elena
@@ -1,17 +1,19 @@
-#define std'dictionary'*.
-#define std'basic'*.
-#define sys'dynamics'*.
+#define system.
+#define system'dynamic.
-#symbol NewAccumulator : aValue =
- #join (Variable::aValue) { eval : aValue [ $self content'set:($self + aValue). ] }.
+#symbol Function =
+ &&:x [ self append:x ].
+
+#symbol Accumulator = &&:anInitialValue
+ [ Wrap(Function, Variable new:anInitialValue) ].
#symbol Program =
[
- #var x := NewAccumulator::1.
+ #var x := Accumulator:1.
- x::5.
+ x:5.
- NewAccumulator::3.
+ #var y := Accumulator:3.
- 'program'Output << x::2.3r.
+ console write:(x:2.3r).
].
diff --git a/Task/Accumulator-factory/Nemerle/accumulator-factory.nemerle b/Task/Accumulator-factory/Nemerle/accumulator-factory.nemerle
new file mode 100644
index 0000000000..2127a0ada1
--- /dev/null
+++ b/Task/Accumulator-factory/Nemerle/accumulator-factory.nemerle
@@ -0,0 +1,22 @@
+def Foo(n) {
+ mutable value : object = n;
+ fun (i : object) {
+ match(i) {
+ |x is int => match(value) {
+ |y is int => value = x + y;
+ |y is double => value = x + y;
+ }
+ |x is double => match(value) {
+ |y is int => value = x + (y :> double);
+ |y is double => value = x + y;
+ }
+ }
+ value
+ }
+}
+
+def x = Foo(1);
+def y = Foo(2.2);
+x(5);
+System.Console.WriteLine(x(2.3));
+System.Console.WriteLine(y(3));
diff --git a/Task/Ackermann-function/AutoIt/ackermann-function-1.autoit b/Task/Ackermann-function/AutoIt/ackermann-function-1.autoit
new file mode 100644
index 0000000000..6fec759786
--- /dev/null
+++ b/Task/Ackermann-function/AutoIt/ackermann-function-1.autoit
@@ -0,0 +1,11 @@
+Func Ackermann($m, $n)
+ If ($m = 0) Then
+ Return $n+1
+ Else
+ If ($n = 0) Then
+ Return Ackermann($m-1, 1)
+ Else
+ return Ackermann($m-1, Ackermann($m, $n-1))
+ EndIf
+ EndIf
+EndFunc
diff --git a/Task/Ackermann-function/AutoIt/ackermann-function-2.autoit b/Task/Ackermann-function/AutoIt/ackermann-function-2.autoit
new file mode 100644
index 0000000000..f45c87f759
--- /dev/null
+++ b/Task/Ackermann-function/AutoIt/ackermann-function-2.autoit
@@ -0,0 +1,18 @@
+Global $ackermann[2047][2047] ; Set the size to whatever you want
+Func Ackermann($m, $n)
+ If ($ackermann[$m][$n] <> 0) Then
+ Return $ackermann[$m][$n]
+ Else
+ If ($m = 0) Then
+ $return = $n + 1
+ Else
+ If ($n = 0) Then
+ $return = Ackermann($m - 1, 1)
+ Else
+ $return = Ackermann($m - 1, Ackermann($m, $n - 1))
+ EndIf
+ EndIf
+ $ackermann[$m][$n] = $return
+ Return $return
+ EndIf
+EndFunc ;==>Ackermann
diff --git a/Task/Ackermann-function/COBOL/ackermann-function.cobol b/Task/Ackermann-function/COBOL/ackermann-function.cobol
new file mode 100644
index 0000000000..8fafd91540
--- /dev/null
+++ b/Task/Ackermann-function/COBOL/ackermann-function.cobol
@@ -0,0 +1,32 @@
+ IDENTIFICATION DIVISION.
+ PROGRAM-ID. Ackermann.
+
+ DATA DIVISION.
+ LINKAGE SECTION.
+ 01 M USAGE UNSIGNED-LONG.
+ 01 N USAGE UNSIGNED-LONG.
+
+ 01 Return-Val USAGE UNSIGNED-LONG.
+
+ PROCEDURE DIVISION USING M N Return-Val.
+ EVALUATE M ALSO N
+ WHEN 0 ALSO ANY
+ ADD 1 TO N GIVING Return-Val
+
+ WHEN NOT 0 ALSO 0
+ SUBTRACT 1 FROM M
+ CALL "Ackermann" USING BY CONTENT M BY CONTENT 1
+ BY REFERENCE Return-Val
+
+ WHEN NOT 0 ALSO NOT 0
+ SUBTRACT 1 FROM N
+ CALL "Ackermann" USING BY CONTENT M BY CONTENT N
+ BY REFERENCE Return-Val
+
+ SUBTRACT 1 FROM M
+ CALL "Ackermann" USING BY CONTENT M
+ BY CONTENT Return-Val BY REFERENCE Return-Val
+ END-EVALUATE
+
+ GOBACK
+ .
diff --git a/Task/Ackermann-function/Chapel/ackermann-function.chapel b/Task/Ackermann-function/Chapel/ackermann-function.chapel
new file mode 100644
index 0000000000..20b6590fc7
--- /dev/null
+++ b/Task/Ackermann-function/Chapel/ackermann-function.chapel
@@ -0,0 +1,8 @@
+proc A(m:int, n:int):int {
+ if m == 0 then
+ return n + 1;
+ else if n == 0 then
+ return A(m - 1, 1);
+ else
+ return A(m - 1, A(m, n - 1));
+}
diff --git a/Task/Ackermann-function/Component-Pascal/ackermann-function.component b/Task/Ackermann-function/Component-Pascal/ackermann-function.component
new file mode 100644
index 0000000000..76c6406f70
--- /dev/null
+++ b/Task/Ackermann-function/Component-Pascal/ackermann-function.component
@@ -0,0 +1,29 @@
+MODULE NpctAckerman;
+
+IMPORT StdLog;
+
+VAR
+ m,n: INTEGER;
+
+PROCEDURE Ackerman (x,y: INTEGER):INTEGER;
+
+BEGIN
+ IF x = 0 THEN RETURN y + 1
+ ELSIF y = 0 THEN RETURN Ackerman (x - 1 , 1)
+ ELSE
+ RETURN Ackerman (x - 1 , Ackerman (x , y - 1))
+ END
+END Ackerman;
+
+PROCEDURE Do*;
+BEGIN
+ FOR m := 0 TO 3 DO
+ FOR n := 0 TO 6 DO
+ StdLog.Int (Ackerman (m, n));StdLog.Char (' ')
+ END;
+ StdLog.Ln
+ END;
+ StdLog.Ln
+END Do;
+
+END NpctAckerman.
diff --git a/Task/Ackermann-function/D/ackermann-function-2.d b/Task/Ackermann-function/D/ackermann-function-2.d
index 533dbf8a70..dc7cfc6485 100644
--- a/Task/Ackermann-function/D/ackermann-function-2.d
+++ b/Task/Ackermann-function/D/ackermann-function-2.d
@@ -19,7 +19,7 @@ in {
assert(m >= 0 && n >= 0);
} out(result) {
//assert(result >= 0);
- assert(cast()result >= 0);
+ //assert(cast()result >= 0);
} body {
/*pure nothrow*/ static BigInt ack(in int m, /*in*/ BigInt n) {
switch (m) {
diff --git a/Task/Ackermann-function/Elena/ackermann-function.elena b/Task/Ackermann-function/Elena/ackermann-function.elena
index 58f6528cbb..fcbfed7a10 100644
--- a/Task/Ackermann-function/Elena/ackermann-function.elena
+++ b/Task/Ackermann-function/Elena/ackermann-function.elena
@@ -1,33 +1,30 @@
-#define std'dictionary'*.
-#define std'patterns'*.
-
-#subject m, n.
+#define system.
// --- Ackermann function ---
-#symbol Ackermann &m:anM &n:anN =
+#symbol ackermann = &&:m:n
[
- #if anM
- ifequal:0 [ ^ anN + 1. ]
- | greater:0 ?
- [
- #if anN
- ifequal:0 [ ^ Ackermann &&m:(anM - 1) &n:1. ]
- | greater:0 ? [ ^ Ackermann &&m:(anM - 1) &n:(Ackermann &&m:anM &n:(anN - 1)). ].
- ].
-
- control fail.
+ m =>
+ 0 ? [ n + 1 ]
+ > 0 ? [
+ n => 0 ? [ $self:(m - 1):1 ]
+ > 0 ? [ $self:(m - 1):($self:m:(n-1)) ]
+ ]
].
-#symbol Program =
+#symbol program =
[
- loop &&from:0 &to:3 run: anM =
+ #var n := ackermann:3:5.
+
+ control from:0 &to:3 &do: &&:i
[
- loop &&from:0 &to:5 run: anN =
+ control from:0 &to:5 &do: &&:j
[
- 'program'output << "A(" << anM << "," << anN << ")=" << (Ackermann &&m:anM &n:anN) << "%n".
+ console << "A(" << i << "," << j << ")=" << (ackermann:i:j).
+
+ console writeLine.
].
].
- 'program'Input get.
+ console readChar.
].
diff --git a/Task/Ackermann-function/Java/ackermann-function-1.java b/Task/Ackermann-function/Java/ackermann-function-1.java
new file mode 100644
index 0000000000..55feb01b0a
--- /dev/null
+++ b/Task/Ackermann-function/Java/ackermann-function-1.java
@@ -0,0 +1,8 @@
+import java.math.BigInteger;
+
+public static BigInteger ack(BigInteger m, BigInteger n) {
+ return m.equals(BigInteger.ZERO)
+ ? n.add(BigInteger.ONE)
+ : ack(m.subtract(BigInteger.ONE),
+ n.equals(BigInteger.ZERO) ? BigInteger.ONE : ack(m, n.subtract(BigInteger.ONE)));
+}
diff --git a/Task/Ackermann-function/Java/ackermann-function-2.java b/Task/Ackermann-function/Java/ackermann-function-2.java
new file mode 100644
index 0000000000..437dff09df
--- /dev/null
+++ b/Task/Ackermann-function/Java/ackermann-function-2.java
@@ -0,0 +1,9 @@
+@FunctionalInterface
+public interface FunctionalField> {
+ public Object untypedField(FIELD field);
+
+ @SuppressWarnings("unchecked")
+ public default VALUE field(FIELD field) {
+ return (VALUE) untypedField(field);
+ }
+}
diff --git a/Task/Ackermann-function/Java/ackermann-function-3.java b/Task/Ackermann-function/Java/ackermann-function-3.java
new file mode 100644
index 0000000000..49849b9547
--- /dev/null
+++ b/Task/Ackermann-function/Java/ackermann-function-3.java
@@ -0,0 +1,46 @@
+import java.util.function.BiFunction;
+import java.util.function.Function;
+import java.util.function.Predicate;
+import java.util.function.UnaryOperator;
+import java.util.stream.Stream;
+
+public interface TailRecursive {
+ public static Function new_(Function toIntermediary, UnaryOperator unaryOperator, Predicate predicate, Function toOutput) {
+ return input ->
+ $.new_(
+ Stream.iterate(
+ toIntermediary.apply(input),
+ unaryOperator
+ ),
+ predicate,
+ toOutput
+ )
+ ;
+ }
+
+ public static BiFunction new_(BiFunction toIntermediary, UnaryOperator unaryOperator, Predicate predicate, Function toOutput) {
+ return (input1, input2) ->
+ $.new_(
+ Stream.iterate(
+ toIntermediary.apply(input1, input2),
+ unaryOperator
+ ),
+ predicate,
+ toOutput
+ )
+ ;
+ }
+
+ public enum $ {
+ $$;
+
+ private static OUTPUT new_(Stream stream, Predicate predicate, Function function) {
+ return stream
+ .filter(predicate)
+ .map(function)
+ .findAny()
+ .orElseThrow(RuntimeException::new)
+ ;
+ }
+ }
+}
diff --git a/Task/Ackermann-function/Java/ackermann-function-4.java b/Task/Ackermann-function/Java/ackermann-function-4.java
new file mode 100644
index 0000000000..3bb8513ad6
--- /dev/null
+++ b/Task/Ackermann-function/Java/ackermann-function-4.java
@@ -0,0 +1,145 @@
+import java.math.BigInteger;
+import java.util.Stack;
+import java.util.function.BinaryOperator;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+public interface Ackermann {
+ public static Ackermann new_(BigInteger number1, BigInteger number2, Stack stack, boolean flag) {
+ return $.new_(number1, number2, stack, flag);
+ }
+ public static void main(String... arguments) {
+ $.main(arguments);
+ }
+ public BigInteger number1();
+ public BigInteger number2();
+
+ public Stack stack();
+
+ public boolean flag();
+
+ public enum $ {
+ $$;
+
+ private static final BigInteger ZERO = BigInteger.ZERO;
+ private static final BigInteger ONE = BigInteger.ONE;
+ private static final BigInteger TWO = BigInteger.valueOf(2);
+ private static final BigInteger THREE = BigInteger.valueOf(3);
+ private static final BigInteger FOUR = BigInteger.valueOf(4);
+
+ private static Ackermann new_(BigInteger number1, BigInteger number2, Stack stack, boolean flag) {
+ return (FunctionalAckermann) field -> {
+ switch (field) {
+ case number1: return number1;
+ case number2: return number2;
+ case stack: return stack;
+ case flag: return flag;
+ default: throw new UnsupportedOperationException(
+ field instanceof Field
+ ? "Field checker has not been updated properly."
+ : "Field is not of the correct type."
+ );
+ }
+ };
+ }
+
+ private static final BinaryOperator ACKERMANN =
+ TailRecursive.new_(
+ (BigInteger number1, BigInteger number2) ->
+ new_(
+ number1,
+ number2,
+ Stream.of(number1).collect(
+ Collectors.toCollection(Stack::new)
+ ),
+ false
+ )
+ ,
+ ackermann -> {
+ BigInteger number1 = ackermann.number1();
+ BigInteger number2 = ackermann.number2();
+ Stack stack = ackermann.stack();
+ if (!stack.empty() && !ackermann.flag()) {
+ number1 = stack.pop();
+ }
+ switch (number1.intValue()) {
+ case 0:
+ return new_(
+ number1,
+ number2.add(ONE),
+ stack,
+ false
+ );
+ case 1:
+ return new_(
+ number1,
+ number2.add(TWO),
+ stack,
+ false
+ );
+ case 2:
+ return new_(
+ number1,
+ number2.multiply(TWO).add(THREE),
+ stack,
+ false
+ );
+ default:
+ if (ZERO.equals(number2)) {
+ return new_(
+ number1.subtract(ONE),
+ ONE,
+ stack,
+ true
+ );
+ } else {
+ stack.push(number1.subtract(ONE));
+ return new_(
+ number1,
+ number2.subtract(ONE),
+ stack,
+ true
+ );
+ }
+ }
+ },
+ ackermann -> ackermann.stack().empty(),
+ Ackermann::number2
+ )::apply
+ ;
+
+ private static void main(String... arguments) {
+ System.out.println(ACKERMANN.apply(FOUR, TWO));
+ }
+
+ private enum Field {
+ number1,
+ number2,
+ stack,
+ flag
+ }
+
+ @FunctionalInterface
+ private interface FunctionalAckermann extends FunctionalField, Ackermann {
+ @Override
+ public default BigInteger number1() {
+ return field(Field.number1);
+ }
+
+ @Override
+ public default BigInteger number2() {
+ return field(Field.number2);
+ }
+
+ @Override
+ public default Stack stack() {
+ return field(Field.stack);
+ }
+
+ @Override
+ public default boolean flag() {
+ return field(Field.flag);
+ }
+ }
+ }
+}
diff --git a/Task/Ackermann-function/Ruby/ackermann-function-2.rb b/Task/Ackermann-function/Ruby/ackermann-function-2.rb
index 15994be3e6..d1af4b66ce 100644
--- a/Task/Ackermann-function/Ruby/ackermann-function-2.rb
+++ b/Task/Ackermann-function/Ruby/ackermann-function-2.rb
@@ -1,4 +1,3 @@
(0..3).each do |m|
- (0..6).each { |n| print ack(m, n), ' ' }
- puts
+ puts (0..6).map { |n| ack(m, n) }.join(' ')
end
diff --git a/Task/Ackermann-function/ZED/ackermann-function.zed b/Task/Ackermann-function/ZED/ackermann-function.zed
index 45e2cc586f..98337d2325 100644
--- a/Task/Ackermann-function/ZED/ackermann-function.zed
+++ b/Task/Ackermann-function/ZED/ackermann-function.zed
@@ -1,14 +1,14 @@
-(ackermann) m n
-0 3
-(zero?) m
-(add1) n
+(ackermann) integer1 integer2
+comment: takes two integers -> returns the result
+(zero?) integer1
+(add1) integer2
-(ackermann) m n
-2 0
-(and) (positive?) m (zero?) n
-(ackermann) (sub1) m 1
+(ackermann) integer1 integer2
+comment: takes two integers -> returns the result
+(and) (positive?) integer1 (zero?) integer2
+(ackermann) (sub1) integer1 1
-(ackermann) m n
-2 3
-(and) (positive?) m (positive?) n
-(ackermann) (sub1) m (ackermann) m (sub1) n
+(ackermann) integer1 integer2
+comment: takes two integers -> returns the result
+(and) (positive?) integer1 (positive?) integer2
+(ackermann) (sub1) integer1 (ackermann) integer1 (sub1) integer2
diff --git a/Task/Add-a-variable-to-a-class-instance-at-runtime/Elena/add-a-variable-to-a-class-instance-at-runtime.elena b/Task/Add-a-variable-to-a-class-instance-at-runtime/Elena/add-a-variable-to-a-class-instance-at-runtime.elena
index d1d5e0369b..942d66e752 100644
--- a/Task/Add-a-variable-to-a-class-instance-at-runtime/Elena/add-a-variable-to-a-class-instance-at-runtime.elena
+++ b/Task/Add-a-variable-to-a-class-instance-at-runtime/Elena/add-a-variable-to-a-class-instance-at-runtime.elena
@@ -1,27 +1,35 @@
-#subject foo.
+#define system.
-#class FieldContainer
+#class Extender
{
- #field theValue.
+ #field theObject.
+ #field theField.
- #method foo'set : anObject
+ #constructor new : anObject
[
- theValue := anObject.
+ theObject := anObject.
]
- #method foo'get = theValue.
+ #method foo = theField.
+
+ #method set &foo : aValue
+ [
+ theField := aValue.
+ ]
+
+ #method => theObject.
}
-#symbol Program =
+#symbol program =
[
#var anObject := 234.
// adding a field
- anObject := anObject &= FieldContainer.
+ anObject := Extender new:anObject.
- anObject foo'set:"bar".
+ anObject set &foo:"bar".
- 'program'Output << anObject << ".foo=" << anObject foo.
+ console << anObject << ".foo=" << anObject foo.
- 'program'input get.
+ console readChar.
].
diff --git a/Task/Add-a-variable-to-a-class-instance-at-runtime/Logtalk/add-a-variable-to-a-class-instance-at-runtime-1.logtalk b/Task/Add-a-variable-to-a-class-instance-at-runtime/Logtalk/add-a-variable-to-a-class-instance-at-runtime-1.logtalk
new file mode 100644
index 0000000000..b55c5410a0
--- /dev/null
+++ b/Task/Add-a-variable-to-a-class-instance-at-runtime/Logtalk/add-a-variable-to-a-class-instance-at-runtime-1.logtalk
@@ -0,0 +1,18 @@
+% we start by defining an empty object
+:- object(foo).
+
+ % ensure that complementing categories are allowed
+ :- set_logtalk_flag(complements, allow).
+
+:- end_object.
+
+% define a complementing category, adding a new predicate
+:- category(bar,
+ complements(foo)).
+
+ :- public(bar/1).
+ bar(1).
+ bar(2).
+ bar(3).
+
+:- end_category.
diff --git a/Task/Add-a-variable-to-a-class-instance-at-runtime/Logtalk/add-a-variable-to-a-class-instance-at-runtime-2.logtalk b/Task/Add-a-variable-to-a-class-instance-at-runtime/Logtalk/add-a-variable-to-a-class-instance-at-runtime-2.logtalk
new file mode 100644
index 0000000000..dd9efa5ab4
--- /dev/null
+++ b/Task/Add-a-variable-to-a-class-instance-at-runtime/Logtalk/add-a-variable-to-a-class-instance-at-runtime-2.logtalk
@@ -0,0 +1,5 @@
+| ?- foo::bar(X).
+X = 1 ;
+X = 2 ;
+X = 3
+true
diff --git a/Task/Address-of-a-variable/C/address-of-a-variable-1.c b/Task/Address-of-a-variable/C/address-of-a-variable-1.c
new file mode 100644
index 0000000000..a0c913771b
--- /dev/null
+++ b/Task/Address-of-a-variable/C/address-of-a-variable-1.c
@@ -0,0 +1,2 @@
+int i;
+void* address_of_i = &i;
diff --git a/Task/Address-of-a-variable/C/address-of-a-variable-2.c b/Task/Address-of-a-variable/C/address-of-a-variable-2.c
new file mode 100644
index 0000000000..4c2a20746a
--- /dev/null
+++ b/Task/Address-of-a-variable/C/address-of-a-variable-2.c
@@ -0,0 +1 @@
+int& i = *(int*)0xA100;
diff --git a/Task/Address-of-a-variable/C/address-of-a-variable-3.c b/Task/Address-of-a-variable/C/address-of-a-variable-3.c
new file mode 100644
index 0000000000..6a8a95e6b3
--- /dev/null
+++ b/Task/Address-of-a-variable/C/address-of-a-variable-3.c
@@ -0,0 +1,5 @@
+static union
+{
+ int i;
+ int j;
+};
diff --git a/Task/Address-of-a-variable/C/address-of-a-variable-4.c b/Task/Address-of-a-variable/C/address-of-a-variable-4.c
new file mode 100644
index 0000000000..64d05b682b
--- /dev/null
+++ b/Task/Address-of-a-variable/C/address-of-a-variable-4.c
@@ -0,0 +1,2 @@
+int i;
+int& j = i;
diff --git a/Task/Address-of-a-variable/Component-Pascal/address-of-a-variable.component b/Task/Address-of-a-variable/Component-Pascal/address-of-a-variable.component
new file mode 100644
index 0000000000..6c971742dc
--- /dev/null
+++ b/Task/Address-of-a-variable/Component-Pascal/address-of-a-variable.component
@@ -0,0 +1,14 @@
+MODULE AddressVar;
+IMPORT SYSTEM,StdLog;
+
+VAR
+ x: INTEGER;
+
+PROCEDURE Do*;
+BEGIN
+ StdLog.String("ADR(x):> ");StdLog.IntForm(SYSTEM.ADR(x),StdLog.hexadecimal,8,'0',TRUE);StdLog.Ln
+END Do;
+
+BEGIN
+ x := 10;
+END AddressVar.
diff --git a/Task/Align-columns/D/align-columns.d b/Task/Align-columns/D/align-columns.d
index 51f6103d21..cc582a57c6 100644
--- a/Task/Align-columns/D/align-columns.d
+++ b/Task/Align-columns/D/align-columns.d
@@ -1,4 +1,4 @@
-import std.stdio, std.string, std.algorithm, std.range;
+import std.stdio, std.string, std.algorithm, std.range, std.typetuple;
void main() {
auto data =
@@ -11,13 +11,12 @@ justified,$right$justified,$or$center$justified$within$its$column."
.splitLines.map!q{ a.chomp("$").split("$") };
int[int] maxWidths;
- foreach (line; data)
+ foreach (const line; data)
foreach (i, word; line)
maxWidths[i] = max(maxWidths.get(i, 0), word.length);
- foreach (just; [&leftJustify!string, ¢er!string,
- &rightJustify!string])
- foreach (line; data)
- writefln("%-(%s %)", iota(line.length)
+ foreach (const just; TypeTuple!(leftJustify, center, rightJustify))
+ foreach (const line; data)
+ writefln("%-(%s %)", line.length.iota
.map!(i => just(line[i], maxWidths[i], ' ')));
}
diff --git a/Task/Align-columns/Java/align-columns.java b/Task/Align-columns/Java/align-columns.java
new file mode 100644
index 0000000000..9d3368ee38
--- /dev/null
+++ b/Task/Align-columns/Java/align-columns.java
@@ -0,0 +1,144 @@
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * Aligns fields into columns, separated by "|"
+ */
+public class ColumnAligner {
+ private List words = new ArrayList<>();
+ private int columns = 0;
+ private List columnWidths = new ArrayList<>();
+
+ /**
+ * Initialize columns aligner from lines in a single string
+ *
+ * @param s
+ * lines in a single string. Empty string does form a column.
+ */
+ public ColumnAligner(String s) {
+ String[] lines = s.split("\\n");
+ for (String line : lines) {
+ processInputLine(line);
+ }
+ }
+
+ /**
+ * Initialize columns aligner from lines in a list of strings
+ *
+ * @param lines
+ * lines in a single string. Empty string does form a column.
+ */
+ public ColumnAligner(List lines) {
+ for (String line : lines) {
+ processInputLine(line);
+ }
+ }
+
+ private void processInputLine(String line) {
+ String[] lineWords = line.split("\\$");
+ words.add(lineWords);
+ columns = Math.max(columns, lineWords.length);
+ for (int i = 0; i < lineWords.length; i++) {
+ String word = lineWords[i];
+ if (i >= columnWidths.size()) {
+ columnWidths.add(word.length());
+ } else {
+ columnWidths.set(i, Math.max(columnWidths.get(i), word.length()));
+ }
+ }
+ }
+
+ interface AlignFunction {
+ String align(String s, int length);
+ }
+
+ /**
+ * Left-align all columns
+ *
+ * @return Lines, terminated by "\n" of columns, separated by "|"
+ */
+ public String alignLeft() {
+ return align(new AlignFunction() {
+ @Override
+ public String align(String s, int length) {
+ return StringUtils.rightPad(s, length);
+ }
+ });
+ }
+
+ /**
+ * Right-align all columns
+ *
+ * @return Lines, terminated by "\n" of columns, separated by "|"
+ */
+ public String alignRight() {
+ return align(new AlignFunction() {
+ @Override
+ public String align(String s, int length) {
+ return StringUtils.leftPad(s, length);
+ }
+ });
+ }
+
+ /**
+ * Center-align all columns
+ *
+ * @return Lines, terminated by "\n" of columns, separated by "|"
+ */
+ public String alignCenter() {
+ return align(new AlignFunction() {
+ @Override
+ public String align(String s, int length) {
+ return StringUtils.center(s, length);
+ }
+ });
+ }
+
+ private String align(AlignFunction a) {
+ StringBuilder result = new StringBuilder();
+ for (String[] lineWords : words) {
+ for (int i = 0; i < lineWords.length; i++) {
+ String word = lineWords[i];
+ if (i == 0) {
+ result.append("|");
+ }
+ result.append(a.align(word, columnWidths.get(i)) + "|");
+ }
+ result.append("\n");
+ }
+ return result.toString();
+ }
+
+ public static void main(String args[]) throws IOException {
+ if (args.length < 1) {
+ System.out.println("Usage: ColumnAligner file [left|right|center]");
+ return;
+ }
+ String filePath = args[0];
+ String alignment = "left";
+ if (args.length >= 2) {
+ alignment = args[1];
+ }
+ ColumnAligner ca = new ColumnAligner(Files.readAllLines(Paths.get(filePath), StandardCharsets.UTF_8));
+ switch (alignment) {
+ case "left":
+ System.out.print(ca.alignLeft());
+ break;
+ case "right":
+ System.out.print(ca.alignRight());
+ break;
+ case "center":
+ System.out.print(ca.alignCenter());
+ break;
+ default:
+ System.err.println(String.format("Error! Unknown alignment: '%s'", alignment));
+ break;
+ }
+ }
+}
diff --git a/Task/Anagrams-Deranged-anagrams/D/anagrams-deranged-anagrams-2.d b/Task/Anagrams-Deranged-anagrams/D/anagrams-deranged-anagrams-2.d
index 074dda58ff..94d49b1f3c 100644
--- a/Task/Anagrams-Deranged-anagrams/D/anagrams-deranged-anagrams-2.d
+++ b/Task/Anagrams-Deranged-anagrams/D/anagrams-deranged-anagrams-2.d
@@ -1,18 +1,19 @@
-import std.stdio, std.file, std.algorithm, std.string,
- std.typecons, std.range, std.functional;
+import std.stdio, std.file, std.algorithm, std.string, std.range,
+ std.functional, std.exception;
-auto findDeranged(in string[] words) pure /*nothrow*/ {
+string[2][] findDeranged(string[] words) pure /*nothrow*/ {
//return words.pairwise.filter!(ww=> ww[].zip.all!q{a[0] != a[1]});
- Tuple!(string, string)[] result;
- foreach (immutable i, const w1; words)
- foreach (const w2; words[i + 1 .. $])
+ typeof(return) result;
+ foreach (immutable i, w1; words)
+ foreach (w2; words[i + 1 .. $])
if (zip(w1, w2).all!q{ a[0] != a[1] })
- result ~= tuple(w1, w2);
+ result ~= [w1, w2];
return result;
}
void main() {
Appender!(string[])[30] wClasses;
+ //foreach (word; "unixdict.txt".readText.splitter)
foreach (word; std.algorithm.splitter("unixdict.txt".readText))
wClasses[$ - word.length] ~= word;
@@ -20,9 +21,9 @@ void main() {
foreach (words; wClasses[].map!q{ a.data }.filter!(not!empty)) {
string[][const ubyte[]] anags; // Assume ASCII input.
foreach (w; words)
- anags[w.dup.representation.sort().release.idup] ~= w;
- auto pairs = anags.byValue.map!findDeranged.join;
+ anags[w.dup.representation.sort().release.assumeUnique]~= w;
+ auto pairs = anags.byValue.map!findDeranged.joiner;
if (!pairs.empty)
- return writefln(" %s, %s", pairs.front[]);
+ return writefln(" %-(%s %)", pairs.front);
}
}
diff --git a/Task/Anagrams-Deranged-anagrams/Erlang/anagrams-deranged-anagrams.erl b/Task/Anagrams-Deranged-anagrams/Erlang/anagrams-deranged-anagrams.erl
index d97774d0d6..f9a19eab0c 100644
--- a/Task/Anagrams-Deranged-anagrams/Erlang/anagrams-deranged-anagrams.erl
+++ b/Task/Anagrams-Deranged-anagrams/Erlang/anagrams-deranged-anagrams.erl
@@ -1,14 +1,18 @@
--module( deranged_anagrams ).
--export( [task/0] ).
+-module( anagrams_deranged ).
+-export( [task/0, words_from_url/1] ).
task() ->
- httpc_start(),
- Words = words( "http://www.puzzlers.org/pub/wordlists/unixdict.txt" ),
+ find_unimplemented_tasks:init_http(),
+ Words = words_from_url( "http://www.puzzlers.org/pub/wordlists/unixdict.txt" ),
Anagram_dict = anagrams:fetch( Words, dict:new() ),
Deranged_anagrams = deranged_anagrams( Anagram_dict ),
{_Length, Longest_anagrams} = dict:fold( fun keep_longest/3, {0, []}, Deranged_anagrams ),
Longest_anagrams.
+words_from_url( URL ) ->
+ {ok, {{_HTTP, 200, "OK"}, _Headers, Body}} = httpc:request( URL ),
+ string:tokens( Body, "\n" ).
+
deranged_anagrams( Dict ) ->
@@ -18,10 +22,6 @@ deranged_anagrams( Dict ) ->
deranged_words( _Key, [H | T] ) ->
[{H, X} || X <- T, is_deranged_word(H, X)].
-httpc_start() ->
- inets:start(),
- inets:start( httpc, [] ).
-
keep_longest( _Key, [{One, _} | _]=New, {Length, Acc} ) ->
keep_longest_new( erlang:length(One), Length, New, Acc ).
@@ -39,7 +39,3 @@ is_deranged_word( Word1, Word2 ) ->
lists:all( fun is_deranged_char/1, lists:zip(Word1, Word2) ).
is_deranged_char( {One, Two} ) -> One =/= Two.
-
-words( URL ) ->
- {ok, {{_HTTP, 200, "OK"}, _Headers, Body}} = httpc:request( URL ),
- string:tokens( Body, "\n" ).
diff --git a/Task/Anagrams-Deranged-anagrams/Ruby/anagrams-deranged-anagrams.rb b/Task/Anagrams-Deranged-anagrams/Ruby/anagrams-deranged-anagrams.rb
index 5fbaef1e49..d256ecc19d 100644
--- a/Task/Anagrams-Deranged-anagrams/Ruby/anagrams-deranged-anagrams.rb
+++ b/Task/Anagrams-Deranged-anagrams/Ruby/anagrams-deranged-anagrams.rb
@@ -1,46 +1,27 @@
require 'open-uri'
-anagram = nil
-open('http://www.puzzlers.org/pub/wordlists/unixdict.txt') do |f|
- anagram = f.read.split.group_by {|s| s.each_char.sort}
+anagram = open('http://www.puzzlers.org/pub/wordlists/unixdict.txt') do |f|
+ f.read.split.group_by {|s| s.each_char.sort}
end
def deranged?(a, b)
a.chars.zip(b.chars).all? {|char_a, char_b| char_a != char_b}
end
-def remove_non_derangements(val)
- list = val.dup
- for i in 0 ... list.length
- j = i + 1
- while j < list.length
- if deranged?(list[i], list[j])
- j += 1
- else
- list.delete_at(j)
- end
+def find_derangements(list)
+ for i in 0 ... list.size-1
+ for j in i ... list.size
+ return list[i], list[j] if deranged?(list[i], list[j])
end
end
- list
+ nil
end
-max_word_length = anagram.each_value .
- select {|list| list.length > 1} .
- map {|list| list[0].length} .
- max
+anagram = anagram.select{|k,list| list.size>1}.sort_by{|k,list| -k.size}
-derangements = []
-
-until derangements.length > 1
- puts "looking for deranged anagrams with word length #{max_word_length}"
-
- anagram.each_value .
- select {|list| list.length > 1 and list[0].length == max_word_length} .
- each do |list|
- derangements = remove_non_derangements(list)
- break if derangements.length > 1
- end
-
- max_word_length -= 1
+anagram.each do |k,list|
+ derangements = find_derangements(list)
+ if derangements
+ puts "derangement with longest word size: #{derangements}"
+ break
+ end
end
-
-puts "derangement with longest word length: #{derangements}"
diff --git a/Task/Anagrams/Component-Pascal/anagrams-1.component b/Task/Anagrams/Component-Pascal/anagrams-1.component
new file mode 100644
index 0000000000..1f5d1185a9
--- /dev/null
+++ b/Task/Anagrams/Component-Pascal/anagrams-1.component
@@ -0,0 +1,175 @@
+MODULE BbtAnagrams;
+IMPORT StdLog,Files,Strings,Args;
+CONST
+ MAXPOOLSZ = 1024;
+
+TYPE
+ Node = POINTER TO LIMITED RECORD;
+ count: INTEGER;
+ word: Args.String;
+ desc: Node;
+ next: Node;
+ END;
+
+ Pool = POINTER TO LIMITED RECORD
+ capacity,max: INTEGER;
+ words: POINTER TO ARRAY OF Node;
+ END;
+
+ PROCEDURE NewNode(word: ARRAY OF CHAR): Node;
+ VAR
+ n: Node;
+ BEGIN
+ NEW(n);n.count := 0;n.word := word$;
+ n.desc := NIL;n.next := NIL;
+ RETURN n
+ END NewNode;
+
+ PROCEDURE Index(s: ARRAY OF CHAR;cap: INTEGER): INTEGER;
+ VAR
+ i,sum: INTEGER;
+ BEGIN
+ sum := 0;
+ FOR i := 0 TO LEN(s$) DO
+ INC(sum,ORD(s[i]))
+ END;
+ RETURN sum MOD cap
+ END Index;
+
+ PROCEDURE ISort(VAR s: ARRAY OF CHAR);
+ VAR
+ i, j: INTEGER;
+ t: CHAR;
+ BEGIN
+ FOR i := 0 TO LEN(s$) - 1 DO
+ j := i;
+ t := s[j];
+ WHILE (j > 0) & (s[j -1] > t) DO
+ s[j] := s[j - 1];
+ DEC(j)
+ END;
+ s[j] := t
+ END
+ END ISort;
+
+ PROCEDURE SameLetters(x,y: ARRAY OF CHAR): BOOLEAN;
+ BEGIN
+ ISort(x);ISort(y);
+ RETURN x = y
+ END SameLetters;
+
+ PROCEDURE NewPoolWith(cap: INTEGER): Pool;
+ VAR
+ i: INTEGER;
+ p: Pool;
+ BEGIN
+ NEW(p);
+ p.capacity := cap;
+ p.max := 0;
+ NEW(p.words,cap);
+ i := 0;
+ WHILE i < p.capacity DO
+ p.words[i] := NIL;
+ INC(i);
+ END;
+ RETURN p
+ END NewPoolWith;
+
+ PROCEDURE NewPool(): Pool;
+ BEGIN
+ RETURN NewPoolWith(MAXPOOLSZ);
+ END NewPool;
+
+ PROCEDURE (p: Pool) Add(w: ARRAY OF CHAR), NEW;
+ VAR
+ idx: INTEGER;
+ iter,n: Node;
+ BEGIN
+ idx := Index(w,p.capacity);
+ iter := p.words[idx];
+ n := NewNode(w);
+ WHILE(iter # NIL) DO
+ IF SameLetters(w,iter.word) THEN
+ INC(iter.count);
+ IF iter.count > p.max THEN p.max := iter.count END;
+ n.desc := iter.desc;
+ iter.desc := n;
+ RETURN
+ END;
+ iter := iter.next
+ END;
+ ASSERT(iter = NIL);
+ n.next := p.words[idx];p.words[idx] := n
+ END Add;
+
+ PROCEDURE ShowAnagrams(l: Node);
+ VAR
+ iter: Node;
+ BEGIN
+ iter := l;
+ WHILE iter # NIL DO
+ StdLog.String(iter.word);StdLog.String(" ");
+ iter := iter.desc
+ END;
+ StdLog.Ln
+ END ShowAnagrams;
+
+ PROCEDURE (p: Pool) ShowMax(),NEW;
+ VAR
+ i: INTEGER;
+ iter: Node;
+ BEGIN
+ FOR i := 0 TO LEN(p.words) - 1 DO
+ IF p.words[i] # NIL THEN
+ iter := p.words^[i];
+ WHILE iter # NIL DO
+ IF iter.count = p.max THEN
+ ShowAnagrams(iter);
+ END;
+ iter := iter.next
+ END
+ END
+ END
+ END ShowMax;
+
+ PROCEDURE GetLine(rd: Files.Reader; OUT str: ARRAY OF CHAR);
+ VAR
+ i: INTEGER;
+ b: BYTE;
+ BEGIN
+ rd.ReadByte(b);i := 0;
+ WHILE (~rd.eof) & (i < LEN(str)) DO
+ IF (b = ORD(0DX)) OR (b = ORD(0AX)) THEN str[i] := 0X; RETURN END;
+ str[i] := CHR(b);
+ rd.ReadByte(b);INC(i)
+ END;
+ str[LEN(str) - 1] := 0X
+ END GetLine;
+
+ PROCEDURE DoProcess*;
+ VAR
+ params : Args.Params;
+ loc: Files.Locator;
+ fd: Files.File;
+ rd: Files.Reader;
+ line: ARRAY 81 OF CHAR;
+ p: Pool;
+ BEGIN
+ Args.Get(params);
+ IF params.argc = 1 THEN
+ loc := Files.dir.This("Bbt");
+ fd := Files.dir.Old(loc,params.args[0]$,FALSE);
+ StdLog.String("Processing: " + params.args[0]);StdLog.Ln;StdLog.Ln;
+ rd := fd.NewReader(NIL);
+ p := NewPool();
+ REPEAT
+ GetLine(rd,line);
+ p.Add(line);
+ UNTIL rd.eof;
+ p.ShowMax()
+ ELSE
+ StdLog.String("Error: Missing file to process");StdLog.Ln
+ END;
+ END DoProcess;
+
+END BbtAnagrams.
diff --git a/Task/Anagrams/Component-Pascal/anagrams-2.component b/Task/Anagrams/Component-Pascal/anagrams-2.component
new file mode 100644
index 0000000000..077815ca61
--- /dev/null
+++ b/Task/Anagrams/Component-Pascal/anagrams-2.component
@@ -0,0 +1,9 @@
+import std.stdio, std.algorithm, std.range, std.string, std.exception;
+
+void main() {
+ string[][const ubyte[]] an;
+ foreach (w; "unixdict.txt".File.byLine(KeepTerminator.no))
+ an[w.dup.representation.sort().release.assumeUnique] ~= w.idup;
+ immutable m = an.byValue.map!q{ a.length }.reduce!max;
+ writefln("%(%s\n%)", an.byValue.filter!(ws => ws.length == m));
+}
diff --git a/Task/Anagrams/Component-Pascal/anagrams-3.component b/Task/Anagrams/Component-Pascal/anagrams-3.component
new file mode 100644
index 0000000000..debb8682eb
--- /dev/null
+++ b/Task/Anagrams/Component-Pascal/anagrams-3.component
@@ -0,0 +1,14 @@
+import std.stdio, std.algorithm, std.file, std.string;
+
+void main() {
+ auto keys = cast(char[])"unixdict.txt".read;
+ immutable vals = keys.idup;
+ string[][string] anags;
+ foreach (w; keys.splitter) {
+ immutable k = cast(string)w.representation.sort().release;
+ anags[k] ~= vals[k.ptr-keys.ptr .. k.ptr-keys.ptr + k.length];
+ }
+ //immutable m = anags.byValue.max!q{ a.length };
+ immutable m = anags.byValue.map!q{ a.length }.reduce!max;
+ writefln("%(%s\n%)", anags.byValue.filter!(ws => ws.length == m));
+}
diff --git a/Task/Anagrams/Elena/anagrams.elena b/Task/Anagrams/Elena/anagrams.elena
index 8424282c57..b27b918e4d 100644
--- a/Task/Anagrams/Elena/anagrams.elena
+++ b/Task/Anagrams/Elena/anagrams.elena
@@ -1,47 +1,35 @@
-#define std'dictionary'*.
-#define std'basic'*.
-#define std'patterns'*.
-#define std'routines'*.
-#define std'collections'*.
-#define ext'patterns'*.
-#define sys'dates'*.
-#define io'* = sys'io'*.
+#define system.
+#define system'collections.
+#define extensions'text.
+#define extensions'text.
-#symbol Str2CharList : aLiteral
- = Summing &&var:List &prop:ecloneprop start:Scan::aLiteral.
+// --- Normalized ---
-#symbol Normalized : aLiteral
- = WideStrValue::(Summing::String start:
- Scan::(Str2CharList::aLiteral~esort run: aPair = (aPair former < aPair later))).
-
-#symbol Program =
+#symbol Normalized = &&:aLiteral
[
- #var aStart := Now.
+ ^ Summing new:(String new) foreach:(arrayControl sort:(stringControl toArray:aLiteral)) Literal.
+].
- #var aDictionary := Dictionary.
+// --- Program ---
- ReaderScan &&io'path:"unixdict.txt" &:io'AReadOnlyTextFile run: aWord =
+#symbol program =
+[
+ #var aDictionary := Dictionary new.
+
+ textFileControl forEachLine:"unixdict.txt" &do: &&:aWord
[
- #var aKey := Normalized::aWord.
- #var anItem := nil.
- #if anItem := aDictionary @ aKey
- | [
- anItem := List.
- aDictionary append &dictionary_key:aKey &content:anItem.
+ #var aKey := Normalized eval:aWord.
+ #var anItem := aDictionary @ aKey.
+ nil == anItem ?
+ [
+ anItem := List new.
+ aDictionary setAt:aKey:anItem.
].
- anItem += WideStrValue::aWord.
+ anItem += aWord.
].
- aDictionary~esort run: aPair = (aPair former count > aPair later count).
+ listControl sort:aDictionary &with: &&:aFormer:aLater [ aFormer Value Count > aLater Value Count ].
- Scan &&enumerable:aDictionary &length:20 &:EListSubRange run: aList =
- [
- 'program'output << aList << "%n".
- ].
-
- #var anEnd := Now.
-
- #var aDiff := anEnd - aStart.
- 'program'output << "%nTime elapsed in msec:" << aDiff milliseconds.
+ listControl foreach:aDictionary &top:20 &do: &&:aPair [ console writeLine:(ListPresenter new:(aPair Value)) ].
].
diff --git a/Task/Anagrams/Java/anagrams-1.java b/Task/Anagrams/Java/anagrams-1.java
new file mode 100644
index 0000000000..603b714186
--- /dev/null
+++ b/Task/Anagrams/Java/anagrams-1.java
@@ -0,0 +1,30 @@
+import java.net.*;
+import java.io.*;
+import java.util.*;
+
+public class WordsOfEqChars {
+ public static void main(String[] args) throws IOException {
+ URL url = new URL("http://www.puzzlers.org/pub/wordlists/unixdict.txt");
+ InputStreamReader isr = new InputStreamReader(url.openStream());
+ BufferedReader reader = new BufferedReader(isr);
+
+ Map> anagrams = new HashMap>();
+ String word;
+ int count = 0;
+ while ((word = reader.readLine()) != null) {
+ char[] chars = word.toCharArray();
+ Arrays.sort(chars);
+ String key = new String(chars);
+ if (!anagrams.containsKey(key))
+ anagrams.put(key, new ArrayList());
+ anagrams.get(key).add(word);
+ count = Math.max(count, anagrams.get(key).size());
+ }
+
+ reader.close();
+
+ for (Collection ana : anagrams.values())
+ if (ana.size() >= count)
+ System.out.println(ana);
+ }
+}
diff --git a/Task/Anagrams/Java/anagrams-2.java b/Task/Anagrams/Java/anagrams-2.java
new file mode 100644
index 0000000000..0dd4bcf144
--- /dev/null
+++ b/Task/Anagrams/Java/anagrams-2.java
@@ -0,0 +1,53 @@
+import java.net.*;
+import java.io.*;
+import java.util.*;
+import java.util.concurrent.*;
+import java.util.function.*;
+
+public interface Anagram {
+ public static Supplier