diff --git a/.gitignore b/.gitignore
index 80f7631497..26ab3c8d09 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,9 +1,3 @@
-/*.ys
/Cache/
/Meta/
/rosettacode.log
-/entry
-/pick
-/random-clojure-task
-/.clj-kondo/
-/.lsp/
diff --git a/Conf/lang.yaml b/Conf/lang.yaml
index 72c972e3d8..298e845387 100644
--- a/Conf/lang.yaml
+++ b/Conf/lang.yaml
@@ -4,7 +4,6 @@
360 Assembly: '.360'
4D: .4d
4DOS Batch: .4dos
-4ME: .4me
6502 Assembly: '.6502'
68000 Assembly: '.68000'
6800 Assembly: '.6800'
@@ -23,19 +22,17 @@ Acornsoft Lisp: .lisp
Action!: .action
ActionScript: .as
Acurity Architect: .acurity
-Ada: .adb
-Adina: .adina
-Agda2: .agda2
+Ada: .ada
Agda: .agda
+Agda2: .agda2
Agena: .agena
AHDL: .ahdl
-AIDED NATURAL LANGUAGE: .aided
Aikido: .aikido
Aime: .aime
Algae: .algae
+ALGOL: .alg
ALGOL 60: .alg
ALGOL 68: .alg
-ALGOL: .alg
ALGOL-M: .alg
ALGOL W: .alg
Alice ML: .alice
@@ -53,7 +50,6 @@ Anyways: .anyways
Apex: .apex
APL: .apl
App Inventor: .app
-Apple: .apple
AppleScript: .applescript
Applesoft BASIC: .basic
Application Master: .app
@@ -63,8 +59,6 @@ Arbre: .arbre
Arc: .arc
Arendelle: .arendelle
Argile: .argile
-Aria: .aria
-ArkScript: .ark
ARM Assembly: .arm
ArnoldC: .arnoldc
Arturo: .arturo
@@ -74,7 +68,7 @@ ASP: .asp
AspectC++: .acpp
AspectJ: .aspectj
ASP.Net: .asp
-Assembly: .asm
+Assembly: .as
AssemblyScript: .asmscript
Astro: .astro
Asymptote: .asymptote
@@ -83,14 +77,15 @@ ATS: .ats
AutoHotkey: .ahk
Autohotkey V2: .ahk
AutoHotKey V2: .ahk
-AutoIt: .au3
-AutoLISP: .lsp
+AutoIt: .autoit
+AutoLISP: .l
Avail: .avail
AWK: .awk
Axe: .axe
Axiom: .axiom
Axum: .axum
Ayrch: .ayrch
+B: .b
B4J: .b4j
B4X: .b4x
Babel: .pb
@@ -99,13 +94,12 @@ BaCon: .bacon
Bait: .bait
Ballerina: .ballerina
Bas: .bas
+BASIC: .basic
Basic09: .basic
BASIC256: .basic
-BASIC: .basic
Batari Basic: .basic
Batch File: .bat
Battlestar: .battlestar
-B: .b
BBC BASIC: .basic
Bc: .bc
BCPL: .bcpl
@@ -113,7 +107,6 @@ Beads: .beads
Beef: .beef
Beeswax: .beeswax
Befunge: .bf
-Berkeley Logo: .logo
Beta: .beta
Biferno: .biferno
Binary Lambda Calculus: .blc
@@ -137,26 +130,23 @@ Brat: .brat
Brlcad: .brlcad
Bruijn: .bruijn
Burlesque: .blq
+C++: .cpp
+C: .c
C0H: .c0h
C1R: .c1r
C2: .c2
C3: .c3
CafeOBJ: .cafeobj
-Calc: .calc
-Calcscript: .calc
Caml: .caml
Casio BASIC: .basic
Cat: .cat
CB80: .cb80
-CBASIC: .basic
-C: .c
C++/CLI: .cpp
-C++: .cpp
Cduce: .cduce
Cecil: .cecil
Ceylon: .ceylon
CFEngine: .cfengine
-Chapel: .chpl
+Chapel: .chapel
Chef: .chef
Cherrycake: .cherrycake
Chipmunk Basic: .basic
@@ -165,7 +155,6 @@ ChucK: .chuck
Cilk++: .cilk++
Cilk: .cilk
Cind: .cind
-CJam: .cjam
Clarion: .clarion
Clay: .clay
Clean: .clean
@@ -176,7 +165,7 @@ CLIPS: .clips
Clojure: .clj
CLU: .clu
CMake: .cmake
-COBOL: .cob
+COBOL: .cobol
Cobra: .cobra
Coco: .coco
Coconut: .coconut
@@ -189,19 +178,19 @@ Common Lisp: .lisp
Component Pascal: .pas
Computer/zero Assembly: .0asm
ContextFree: .cf
-Convex: .convex
Coq: .coq
Corescript: .core
Cowgol: .cowgol
Crack: .crack
Craft Basic: .basic
Creative Basic: .basic
-Crystal: .cr
+Curto: .curto
+Crystal: .crystal
C sharp: .cs
C Shell: .csh
Cubescript: .cube
Curry: .curry
-Curto: .curto
+D: .d
Dafny: .dafny
Dao: .dao
Dart: .dart
@@ -210,9 +199,8 @@ DataWeave: .dw
DBL: .dbl
Dc: .dc
DCL: .dcl
-D: .d
DDNC: .ddnc
-Delphi: .pas
+Delphi: .delphi
Deluge: .deluge
DeviousYarn: .dy
DIBOL-11: .dibol-11
@@ -224,23 +212,20 @@ DMS: .dms
Dodo0: .dodo0
Draco: .draco
Dragon: .dragon
-Dragonstone: .dragonstone
DreamBerd: .dreamberd
Dt: .dt
-DuckDB: .duckdb
DUP: .dup
DWScript: .dw
Dyalect: .dyalect
Dylan: .dylan
Dylan.NET: .dylan
+E: .e
EasyLang: .easy
EC: .ec
EchoLisp: .l
ECL: .ecl
Ecstasy: .ecstasy
-Ed: .ed
EDSAC order code: .edsac
-E: .e
Eero: .eero
Efene: .efene
Egel: .egel
@@ -253,10 +238,10 @@ Elan: .elan
ElastiC: .elastic
Elena: .elena
Elisa: .elisa
-Elixir: .ex
+Elixir: .elixir
ELLA: .ella
Elm: .elm
-Emacs Lisp: .el
+Emacs Lisp: .l
EMal: .emal
Emojicode: .emojicode
Enguage: .enguage
@@ -267,29 +252,28 @@ ERRE: .erre
Es: .es
ESQL: .esql
Euler: .euler
-Euphoria: .eu
+Euphoria: .euphoria
Evaldraw: .evaldraw
Excel: .excel
Explore: .explore
Extended BrainF***: .ebf
-Extended Color BASIC: .basic
Ezhil: .ezhil
+F: .f
Factor: .factor
Falcon: .falcon
'FALSE': .false
-Fancy: .fancy
Fan: .fan
+Fancy: .fancy
Fantom: .fantom
FAUST: .faust
FBSL: .fbsl
-FeatureC++: .cpp
Fe: .fe
+FeatureC++: .cpp
Felix: .felix
Fennel: .fennel
Ferite: .ferite
Fermat: .fermat
Fexl: .fexl
-F: .f
Fhidwfe: .fhidwfe
Fish: .fish
FLORA-2: .flora2
@@ -310,7 +294,6 @@ Frink: .frink
FRISC Assembly: .frisc
F Sharp: .fs
FTCBASIC: .basic
-FuncSug: .funcsug
FunL: .funl
Furor: .furor
FurryScript: .furryscript
@@ -340,10 +323,9 @@ GlovePIE: .glovepie
GLSL: .glsl
GML: .gml
Gnuplot: .gnuplot
-Goaldi: .goaldi
-Goboscript: .gobo
Go!: .go
Go: .go
+Goaldi: .goaldi
Golfscript: .golf
Golo: .golo
Goo: .goo
@@ -360,7 +342,7 @@ Halon: .halon
Harbour: .harbour
Hare: .hare
Haskell: .hs
-Haxe: .hx
+Haxe: .haxe
Heron: .heron
Hexiscript: .hexi
HicEst: .hicest
@@ -374,11 +356,10 @@ HQ9+: .hq9+
Huginn: .huginn
Hy: .hy
HyperTalk: .ht
+I: .i
Icon: .icon
IDL: .idl
Idris: .idris
-I: .i
-Imp77: .imp77
Inform 6: '.inf'
Inform 7: '.inf'
Informix 4GL: .4gl
@@ -393,19 +374,18 @@ Iptscrae: .iptscrae
Isabelle: .isabelle
IS-BASIC: .basic
IWBASIC: .basic
+J: .j
Jabaco: .jabaco
Jack: .jack
Jacquard Loom: .jacquard
-Jactl: .jactl
Jakt: .jakt
JAMES II/Rule-based Cellular Automata: .james
Janet: .janet
-JavaFX Script: .javafx
Java: .java
+JavaFX Script: .javafx
JavaScript: .js
JCL: .jcl
Jinja: .jinja
-J: .j
JoCaml: .jocaml
JOVIAL: .jovial
Joy: .joy
@@ -414,34 +394,31 @@ JScript.NET: .jscript
JSE: .jse
Jsish: .jsish
JudoScript: .judo
-Julia: .jl
+Julia: .julia
+K: .k
Kabap: .kabap
Kamailio Script: .kamailio
-Kantalo: .kantalo
KAP: .kap
Kaya: .kaya
Keg: .keg
KeyList Databasing: .keylist
Kite: .kite
Kitten: .kitten
-K: .k
KL1: .kl1
Klingphix: .klingphix
Klong: .klong
Koka: .koka
-Komodo: .komodo
KonsolScript: .konsol
-Kotlin: .kts
+Kotlin: .kotlin
KQL: .kql
Ksh: .ksh
+L++: .l++
LabVIEW: .labview
-Labyrinth: .labyrinth
Lambda Prolog: .pro
Lambdatalk: .lambdatalk
-Lang5: .lang5
Lang: .lang
+Lang5: .lang5
Langur: .langur
-Lapyst: .lapyst
Lasso: .lasso
LAST: .last
LaTeX: .tex
@@ -467,7 +444,6 @@ Little: .little
Little Man Computer: .lmc
LiveCode: .livecode
LiveScript: .live
-L++: .l++
LLP: .llp
LLVM: .llvm
Lobster: .lobster
@@ -480,8 +456,8 @@ Lolli: .lolli
Lotus 123 Macro Scripting: .lotus123
LotusScript: .lotus
Lout: .lout
-LSE64: .lse64
LSE: .lse
+LSE64: .lse64
LSL: .lsl
LSTS: .lsts
Lua: .lua
@@ -502,8 +478,6 @@ Malbolge: .malbolge
MANOOL: .manool
Maple: .maple
MAPPER: .mapper
-MariaDB: .sql
-Mastermind: .mastermind
Mathcad: .mathcad
MathCortex: .mathcortex
Mathematica: .math
@@ -523,21 +497,20 @@ Metapost: .metapost
MGS: .mgs
Mia: .mia
Microsoft Small Basic: .basic
+Min: .min
MINIL: .minil
Minimal BASIC: .basic
MiniScript: .mini
MiniZinc: .minizinc
-Min: .min
MIPS Assembly: .mips
Mirah: .mirah
Miranda: .miranda
MIRC Scripting Language: .mirc
Mirelle: .mirelle
+ML: .ml
ML/I: .mli
MLite: .mlite
-ML: .ml
MMIX: .mmix
-Mn: .mn
Modula-2: .mod2
Modula-3: .mod3
Mojo: .mojo
@@ -547,8 +520,6 @@ Monkey: .monkey
Monte: .monte
MontiLang: .monti
MOO: .moo
-MoonBit: .moonbit
-MoonRock: .moonrock
MoonScript: .moon
Morfa: .morfa
Mosaic: .mosaic
@@ -587,7 +558,6 @@ Nit: .nit
Niue: .niue
Nix: .nix
NLP++: .nlp++
-Nom: .num
NOWUT: .nowut
NQP: .nqp
NS-HUBASIC: .basic
@@ -596,27 +566,24 @@ N/t/roff: .ntroff
Nu: .nu
Nutt: .nutt
Nyquist: .nyquist
-OASYS Assembler: .oasys
OASYS: .oasys
-Oberon-07: .oberon
+OASYS Assembler: .oasys
Oberon: .oberon
Objeck: .objeck
ObjectIcon: .oi
Objective-C: .m
-Object Pascal Implementations: .pas
Object Pascal: .pas
-OCaml: .ml
+OCaml: .ocaml
Occam: .occam
Octave: .octave
Odin: .odin
Oforth: .fth
Ol: .ol
Omega: .omega
-OmniMark: .xom
Onyx: .onyx
Onyx (wasm): .onyx
-OOCalc: .oocalc
OOC: .ooc
+OOCalc: .oocalc
OoRexx: .rexx
Opa: .opa
OpenC++: .openc++
@@ -635,9 +602,8 @@ Panoramic: .panoramic
ParaCL: .paracl
Pare: .pare
PARI/GP: .parigp
-PascalABC.NET: .pas
Pascal: .pas
-Pascal-P: .pas
+PascalABC.NET: .pas
PASM: .pasm
PDP-11 Assembly: .pdp11
Pebble: .pebble
@@ -646,16 +612,15 @@ Pentium Assembly: .pentium
PeopleCode: .peoplecode
PepsiScript: .pepsi
Peri: .peri
+Perl: .pl
Perl5i: .p5i
Perl 6: .pl6
-Perl: .pl
Peylang: .peylang
-Phixmonti: .phixmonti
Phix: .phix
+Phixmonti: .phixmonti
PHL: .phl
PHP: .php
Picat: .picat
-Pico-8: .pico8
PicoLisp: .l
Pict: .pict
Piet: .piet
@@ -668,13 +633,12 @@ Plain English: .plain
PlainTeX: .tex
Plan: .plan
PL/B: .plb
-PL/I-80: .pli
PL/I: .pli
+PL/I-80: .pli
PL/M: .plm
PL/pgSQL: .sql
PL/SQL: .sql
PLUS: .plus
-Pluto: .pluto
PLZ/SYS: .plz
Pointless: .pointless
Polyglot: .polyglot
@@ -687,58 +651,56 @@ POV-Ray: .povray
PowerBASIC: .basic
Powerbuilder: .powerbuilder
PowerPC Assembly: .ppc
-PowerShell: .ps1
+PowerShell: .psh
PPL: .ppl
Processing: .processing
Processing Python mode: .processing-py
Processing.R: .processing-r
ProDOS: .dos
Prog8: .prog8
-ProgressBASIC: .basic
Prolog: .pro
PROMAL: .promal
PSQL: .psql
+Pure: .pure
PureBasic: .basic
Pure Data: .puredata
-Pure: .pure
Purity: .purity
-Pyret: .arr
+Pyret: .pyret
Python: .py
+Q: .q
QB64: .qb64
QBasic: .basic
Qi: .qi
.QL: .ql
QL SuperBASIC: .basic
Qore: .qore
-Q: .q
Quackery: .quackery
QuakeC: .c
QuickBASIC: .basic
Quill: .quill
Quite BASIC: .basic
Quorum: .quorum
+R: .r
+Ra: .ra
Racket: .rkt
Raku: .raku
RapidQ: .rapidq
Rapira: .rapira
-Ra: .ra
Rascal: .rascal
RASEL: .rasel
RATFOR: .ratfor
Raven: .raven
REALbasic: .basic
-Reason: .re
-Rebol: .rebol
+Reason: .reason
REBOL: .rebol
Red: .red
Reduce: .reduce
Refal: .refal
Relation: .relation
-ReScript: .res
+ReScript: .re
Retro: .retro
Revolution: .rev
REXX: .rexx
-Rhombus: .rhombus
Rhope: .rhope
Rhovas: .rhovas
Ring: .ring
@@ -746,31 +708,28 @@ RISC-V Assembly: .asm
RLaB: .rlab
RLSL: .rlsl
Robotic: .robotic
-Rockstar: .rockstar
-Rocq: .rocq
Roc: .roc
-RPGIV: .rpgiv
+Rockstar: .rockstar
RPG: .rpg
-RPL/2: .rpl2
+RPGIV: .rpgiv
RPL: .rpl
-R: .r
+RPL/2: .rpl2
RTL/2: .rtl2
RTSL: .rtsl
Rubylog: .rubylog
Ruby: .rb
Run BASIC: .basic
-Rust: .rs
-Rye: .rye
+Rust: .rust
+S++: .s++
Sage: .sage
Salmon: .salmon
-SapbotVM: .sapbot
-SASL: .sasl
SAS: .sas
+SASL: .sasl
Sass/SCSS: .sass
Sather: .sa
S-BASIC: .basic
Scala: .scala
-Scheme: .scm
+Scheme: .ss
Scilab: .scilab
Scratch: .scratch
ScratchScript: .scratch
@@ -782,15 +741,14 @@ Seed7: .seed7
Self: .self
SenseTalk: .sensetalk
SequenceL: .sequencel
+SETL: .setl
Setl4: .setl4
Set lang: .set
-SETL: .setl
Shale: .shale
SheerPower 4GL: .4gl
Shen: .shen
Shiny: .shiny
Sidef: .sidef
-SIL: .sil
SimpleCode: .simplecode
SimpleLang: .simple
SIMPOL: .simpol
@@ -807,8 +765,8 @@ Smalltalk: .st
Smart BASIC: .basic
SMEQL: .smeql
SmileBASIC: .basic
-SNOBOL4: .sno
Snobol: .sno
+SNOBOL4: .sno
SNUSP: .snusp
Soar: .soar
Soda: .soda
@@ -816,15 +774,14 @@ SoneKing Assembly: .soneking
SPAD: .spad
SPARC Assembly: .sparc
SparForte: .sparforte
-Sparkling: .sparkling
SPARK: .spark
+Sparkling: .sparkling
Spin: .spin
SPL: .spl
SPSS: .spss
-SQL PL: .sql
SQL: .sql
+SQL PL: .sql
Squirrel: .nut
-S++: .s++
SSEM: .ssem
Standard ML: .ml
Star: .star
@@ -845,23 +802,22 @@ SystemVerilog: .v
TailDot: .taildot
Tailspin: .tailspin
TAL: .tal
-TAV: .tav
Tbas: .tbas
Tcl: .tcl
TechBASIC: .basic
Teco: .teco
TeLa: .tela
Tern: .tern
-Terraform: .terraform
Terra: .terra
+Terraform: .terraform
TestML: .tml
Thistle: .thistle
Thyrd: .thyrd
+TI BASIC: .basic
TI-57: .ti57
TI-83 BASIC: .basic
TI-83 Hex Assembly: .asm
TI-89 BASIC: .basic
-TI BASIC: .basic
Tiny BASIC: .basic
Tiny Craft Basic: .basic
TIS-100: .tis100
@@ -894,30 +850,31 @@ Uiua: .uiua
Ultimate++: .ultimate++
Unicon: .unicon
Uniface: .uniface
-Unison: .u
+Unison: .unison
UnixPipes: .up
UNIX Shell: .sh
Unlambda: .unlambda
-Ursalang: .ursa
-Ursala: .ursala
Ursa: .ursa
+Ursala: .ursala
+Ursalang: .ursa
UScript: .u
UserRPL: .rpl
UTFool: .utfool
Uxntal: .uxnatl
+V: .v
Vala: .vala
Vale: .vale
VAX Assembly: .vax
VB6: .vb6
VBA: .vba
-VBScript: .vbs
+VBScript: .vb
Vedit macro language: .vedit
Verbexx: .verbexx
Verilog: .v
-VHDL: .vhd
+VHDL: .vhdl
Vim Script: .vim
-Visual Basic .NET: .vb
Visual Basic: .vb
+Visual Basic .NET: .vb
Visual FoxPro: .fvp
Visual Objects: .vobj
Visual Prolog: .pro
@@ -926,10 +883,7 @@ Vorpal: .vorpal
Vox: .vox
VRML: .vrml
VTL-2: .vtl-2
-V: .v
V (Vlang): .v
-Vyxal: .vyxal
-Waduzitdo: .waduzitdo
Wart: .wart
WDTE: .wdte
WebAssembly: .wasm
@@ -951,32 +905,31 @@ XBase: .xbase
XBasic: .basic
XBS: .xbs
XEec: .xeec
-XLISP: .l
XL: .xl
+XLISP: .l
Xojo: .xojo
XPath 2.0: .xpath
XPL0: .xpl0
XProc: .xproc
XProfan: .xprofan
XQuery: .xquery
-X-script: .x
+XS: .xs
+XSLT: .xslt
XSLT 1.0: .xslt
XSLT 2.0: .xslt
-XSLT: .xslt
-XS: .xs
XTalk: .xtalk
XUL: .xul
+Ya: .ya
Yabasic: .basic
Yacas: .yacas
YAMLScript: .ys
-Ya: .ya
Yorick: .yorick
Z80 Assembly: .z80
ZED: .zed
Zig: .zig
Zkl: .zkl
-Zoea Visual: .zoea
Zoea: .zoea
+Zoea Visual: .zoea
Zonnon: .zonnon
Zoomscript: .zoom
ZPL: .zpl
diff --git a/Lang/11l/Bioinformatics-base-count b/Lang/11l/Bioinformatics-base-count
new file mode 120000
index 0000000000..d8c9e2572d
--- /dev/null
+++ b/Lang/11l/Bioinformatics-base-count
@@ -0,0 +1 @@
+../../Task/Bioinformatics-base-count/11l
\ No newline at end of file
diff --git a/Lang/11l/Meissel-Mertens-constant b/Lang/11l/Meissel-Mertens-constant
new file mode 120000
index 0000000000..908ef16ca2
--- /dev/null
+++ b/Lang/11l/Meissel-Mertens-constant
@@ -0,0 +1 @@
+../../Task/Meissel-Mertens-constant/11l
\ No newline at end of file
diff --git a/Lang/11l/Miller-Rabin-primality-test b/Lang/11l/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..cec9772a16
--- /dev/null
+++ b/Lang/11l/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/11l
\ No newline at end of file
diff --git a/Lang/11l/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors b/Lang/11l/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
similarity index 100%
rename from Lang/11l/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors
rename to Lang/11l/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
diff --git a/Lang/11l/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/11l/Sequence-smallest-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/11l/Sequence:-smallest-number-with-exactly-n-divisors
rename to Lang/11l/Sequence-smallest-number-with-exactly-n-divisors
diff --git a/Lang/11l/Sorting-Algorithms-Circle-Sort b/Lang/11l/Sorting-Algorithms-Circle-Sort
new file mode 120000
index 0000000000..38059f4dea
--- /dev/null
+++ b/Lang/11l/Sorting-Algorithms-Circle-Sort
@@ -0,0 +1 @@
+../../Task/Sorting-Algorithms-Circle-Sort/11l
\ No newline at end of file
diff --git a/Lang/4D/00-LANG.txt b/Lang/4D/00-LANG.txt
index 8c8b507919..d591e6be7f 100644
--- a/Lang/4D/00-LANG.txt
+++ b/Lang/4D/00-LANG.txt
@@ -1,6 +1,3 @@
-{{stub}}
-{{language|4D
-|site=https://us.4d.com/
-}}{{IDE}}'''4D''' (or '''4th Dimension''') is a database management system and [[:Category:Integrated Development Environments|integrated development environment]] authored by Laurent Ribardière in 1984.
+{{stub}}{{language|4D}}{{IDE}}'''4D''' (or '''4th Dimension''') is a database management system and [[:Category:Integrated Development Environments|integrated development environment]] authored by Laurent Ribardière in 1984.
==Citations==
*[[wp:4th_Dimension_%28Software%29|Wikipedia:4th Dimension (Software)]]
\ No newline at end of file
diff --git a/Lang/4ME/00-LANG.txt b/Lang/4ME/00-LANG.txt
deleted file mode 100644
index d297ba9483..0000000000
--- a/Lang/4ME/00-LANG.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-{{language|4ME
-|site=https://thevitebsk.github.io/4ME.by/}}
-4ME is a programing language created by [[User:Gaham]] implemented in 04.07.2024 MSK
-==See Also==
-* [https://esolangs.org/wiki/4ME 4ME in Esolangs.org]
-* [https://github.com/Thevitebsk/4me/ Github repo]
-[[Category:Programming paradigm/Concatenative]]
\ No newline at end of file
diff --git a/Lang/4ME/00-META.yaml b/Lang/4ME/00-META.yaml
deleted file mode 100644
index f0031de2c3..0000000000
--- a/Lang/4ME/00-META.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-from: http://rosettacode.org/wiki/Category:4ME
diff --git a/Lang/6502-Assembly/00-LANG.txt b/Lang/6502-Assembly/00-LANG.txt
index 1273acfa02..a7fa28ad34 100644
--- a/Lang/6502-Assembly/00-LANG.txt
+++ b/Lang/6502-Assembly/00-LANG.txt
@@ -131,29 +131,6 @@ This flag is set if the BRK command was executed. The BRK basically
* Set with: BRK
* Cleared with: RTI
* There are no branches associated with this command.
-
-This flag is used only for differentiating a BRK from an hardware IRQ
-
===Decimal===
diff --git a/Lang/68000-Assembly/00-LANG.txt b/Lang/68000-Assembly/00-LANG.txt
index 245cbaaea5..cfd37d0eae 100644
--- a/Lang/68000-Assembly/00-LANG.txt
+++ b/Lang/68000-Assembly/00-LANG.txt
@@ -3,36 +3,31 @@
{{language}}
68000 assembly is the assembly language used for the Motorola 68000, or commonly known as the 68K. It should not be confused with the 6800 (which predates it). The Motorola 68000 is a big-endian processor with full 32-bit capabilities (despite most systems that use it being considered 16-bit.) It was used in many computers such as the Amiga or the Canon Cat, as well as game consoles such as the Sega Genesis and Neo Geo.
+
==Architecture Overview==
===Big-Endian===
The 68000, unlike most processors of its era, is big-endian. This means that bytes are stored from left to right. The example below illustrates this concept:
-
;hexdump of $100000:
;$100000 = $12
;$100001 = $34
;$100002 = $56
-;$100003 = $78
-
+;$100003 = $78
-;hexdump of $100000 ++;$100003 = $12 -The main difference is that if you wanted to access this value as a byte or word it would be at a different address, whereas with a little endian architecture it is at the same address. +This difference isn't usually relevant in the majority of situations, so don't concern yourself too much. It's much more important when doing [[6502 Assembly]] where registers are smaller than the address space. ===Notation Conventions=== How you write the source code depends on your assembler and the syntax it uses. This page is written using Motorola syntax but there is also Milo syntax which has different conventions. -How you go about defining numbers or text in your code varies wildly between assemblers. +How you go about defining numbers or text in your code varies wildly between assemblers. I'm using VASM and these are the rules I have to follow, but your assembler may be different. * A number with a # in front represents a constant, literal value. For example, the 3 in;hexdump of $100000 ;$100000 = $78 ;$100001 = $56 ;$100002 = $34 -;$100003 = $12 -
MOVE.B #3,D0 represents the number 3.
@@ -50,88 +45,72 @@ How you go about defining numbers or text in your code varies wildly between ass
* The operand before the comma is the "source", and the operand after is the "destination." For example, MOVE.L D3,D2 takes the value in D3 and stores it into D2, not the other way around. This is the opposite of x86 and ARM, which have the source on the right and the destination on the left.
-Data blocks, on the other hand, begin with DC.B, DC.W, or DC.L and each represents a constant numeric value. You do NOT prefix these with # to signify them as constants (doing so will cause an error on most assemblers). However, you can use the $ or % modifiers to denote hexadecimal or binary.
+
+Data blocks, on the other hand, begin with DC.B, DC.W, or DC.L and each represents a constant numeric value. Strangely, you do NOT prefix these with # to signify them as constants (doing so will cause an error on most assemblers). However, you can use the $ or % modifiers to denote hexadecimal or binary.
Keep in mind that there is no requirement to use hexadecimal, decimal, or binary in your source code. It all gets converted to binary anyway. However, it is recommended to use the notation that is appropriate for how your data is meant to be interpreted, for readability purposes.
===Data Registers===
There are eight 32-bit data registers on the 68000, numbered D0-D7. As the name implies, these are designed to hold data. Much like in [[ARM Assembly]], each one is identical in terms of which commands it can use. A command that can be used for D0 can be used for any other D-register.
-.B, 2 for .W, 4 for .L).
-MOVE.B it doesn't matter.
====Effective Address====
A calculated offset can be saved to an address register with the LEA command, which stands for "Load Effective Address." [[x86 Assembly]] also has this command, and it serves the same purpose. The syntax for it can be a bit misleading depending on your assembler.
-LEA cannot dereference an address.
If you don't want to store the effective address in an address register, you can use PEA (push effective address) to put it onto the stack instead.
-SP but it is also address register A7. This register is handled differently than the other address registers when pushing bytes onto the stack. A byte value pushed onto the stack will be padded to the right. The stack needs to pad byte-length data so that it can stay word-aligned at all times. Otherwise the CPU would crash as soon as you tried to use the stack for anything other than a byte!
@@ -145,48 +124,48 @@ The 68000 can work with 8-bit, 16-bit, or 32-bit values. Some commands only work
If you don't specify a length with your command, it usually defaults to word length, but ultimately it depends on the command you are using. (Some commands cannot be used at word length.)
Bytes and words moved into a register are always stored on the right-hand side. For example:
-CCR. The 68000 has no built-in commands like CLC for clearing/setting individual flags. Rather, you can alter them directly with MOVE,AND,OR, and EOR. Unfortunately, this means you'll have to remember which bits represent which flags. Or, if your assembler supports macros, you can define a macro that handles this for you.
The flags update automatically after most operations, and take into consideration the operand sizes when doing so. Check out this example:
-ADD.B, D0 now contains $1200, and the extend, carry, and zero flags are all set. Had we done ADD.W, we would get $1300 in D0 with none of those flags set. The flags are based on what the actual instruction "sees", not the entire register at all times.
* X: The eXtend flag is bit 4 of the CCR, and is similar to the carry flag. It gets set and cleared often for the same reasons and is used with the ADDX, SUBX, NEGX, ROXL, and ROXR commands. Why the 68000 has both this and the carry flag, I still don't know.
+
* N: The negative flag is bit 3 of the CCR, and is set when the last operation resulted in a "negative" value. What constitutes a negative value depends on the size of the last operation - for .B instructions, $80-$FF. For .W instructions, $8000-$FFFF, and for .L instructions, $80000000-$FFFFFFFF.
+
* Z: The zero flag is bit 2 of the CCR and works like you would expect - it's set whenever an operation results in zero. Unlike x86 Assembly, this also includes moving 0 directly into a register, clearing a register or memory with CLR, etc.
+
* V: The overflow flag is bit 1 of the CCR. It is set whenever a math operation results in a value crossing the $7F-$80 boundary. (Wraparound from 00 to FF doesn't count as overflow, but it does set the carry flag.)
+
* C: The carry flag is bit 0 of the CCR. It is set when a math operation results in a carry or borrow. Rolling over from FF to 00, or a 1 getting "pushed out" via a bit shift or rotate, set the carry flag. When using CMP, the carry flag determines the unsigned magnitude comparison. Carry set is less than, carry clear is greater than or equal.
+
+
In truth, the flags are a 16-bit register, of which the CCR is just the "low half". The SR (status register) is the full 16-bit register.
There are a few additional flags in the upper half, which are used by the operating system. You can read these but for the most part you won't need to write to them.
@@ -210,15 +189,13 @@ The 68000 supports 7 different interrupts, often called IRQs or Interrupt Reques
==Alignment==
The 68000 can only read or write words and longs at even addresses. Doing so at an odd address will result in the CPU crashing. (Note that reading byte data will not cause a crash regardless of whether it's located at an odd or even address.) This isn't usually a problem, but it can be if the programmer is not careful with the way their data is organized. Consider the following example:
-EVEN directive can be placed after a series of bytes. If the byte count is odd, EVEN will pad the data with an extra byte. If it's already even, the EVEN command is ignored. This saves you the trouble of having to count a long series of bytes without worrying about wasting space.
-ADDA.L #1,A0 and ADDA.L #1,A1 would have worked also, instead of the dummy read. The 68000 gives the programmer a lot of different ways to do a task.
diff --git a/Lang/68000-Assembly/Musical-scale b/Lang/68000-Assembly/Musical-scale
deleted file mode 120000
index 0a23b13b4e..0000000000
--- a/Lang/68000-Assembly/Musical-scale
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Musical-scale/68000-Assembly
\ No newline at end of file
diff --git a/Lang/8080-Assembly/Align-columns b/Lang/8080-Assembly/Align-columns
deleted file mode 120000
index d9134cb487..0000000000
--- a/Lang/8080-Assembly/Align-columns
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Align-columns/8080-Assembly
\ No newline at end of file
diff --git a/Lang/8080-Assembly/Display-a-linear-combination b/Lang/8080-Assembly/Display-a-linear-combination
deleted file mode 120000
index 5e499be357..0000000000
--- a/Lang/8080-Assembly/Display-a-linear-combination
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Display-a-linear-combination/8080-Assembly
\ No newline at end of file
diff --git a/Lang/8080-Assembly/Integer-comparison b/Lang/8080-Assembly/Integer-comparison
deleted file mode 120000
index e48c1e8ea4..0000000000
--- a/Lang/8080-Assembly/Integer-comparison
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Integer-comparison/8080-Assembly
\ No newline at end of file
diff --git a/Lang/8080-Assembly/Loops-Infinite b/Lang/8080-Assembly/Loops-Infinite
deleted file mode 120000
index f6336ebca0..0000000000
--- a/Lang/8080-Assembly/Loops-Infinite
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Infinite/8080-Assembly
\ No newline at end of file
diff --git a/Lang/8080-Assembly/Ordered-words b/Lang/8080-Assembly/Ordered-words
deleted file mode 120000
index eee238f68d..0000000000
--- a/Lang/8080-Assembly/Ordered-words
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ordered-words/8080-Assembly
\ No newline at end of file
diff --git a/Lang/8080-Assembly/Run-length-encoding b/Lang/8080-Assembly/Run-length-encoding
deleted file mode 120000
index bc3ed9076c..0000000000
--- a/Lang/8080-Assembly/Run-length-encoding
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Run-length-encoding/8080-Assembly
\ No newline at end of file
diff --git a/Lang/8080-Assembly/Sieve-of-Eratosthenes b/Lang/8080-Assembly/Sieve-of-Eratosthenes
deleted file mode 120000
index ddc8441b98..0000000000
--- a/Lang/8080-Assembly/Sieve-of-Eratosthenes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sieve-of-Eratosthenes/8080-Assembly
\ No newline at end of file
diff --git a/Lang/8080-Assembly/Square-but-not-cube b/Lang/8080-Assembly/Square-but-not-cube
deleted file mode 120000
index e8de867485..0000000000
--- a/Lang/8080-Assembly/Square-but-not-cube
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Square-but-not-cube/8080-Assembly
\ No newline at end of file
diff --git a/Lang/8080-Assembly/Twos-complement b/Lang/8080-Assembly/Twos-complement
deleted file mode 120000
index 86928fcdc9..0000000000
--- a/Lang/8080-Assembly/Twos-complement
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Twos-complement/8080-Assembly
\ No newline at end of file
diff --git a/Lang/8080-Assembly/Zeckendorf-number-representation b/Lang/8080-Assembly/Zeckendorf-number-representation
deleted file mode 120000
index b0569b898c..0000000000
--- a/Lang/8080-Assembly/Zeckendorf-number-representation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Zeckendorf-number-representation/8080-Assembly
\ No newline at end of file
diff --git a/Lang/8086-Assembly/00-LANG.txt b/Lang/8086-Assembly/00-LANG.txt
index 9120d12d87..7cf10761fa 100644
--- a/Lang/8086-Assembly/00-LANG.txt
+++ b/Lang/8086-Assembly/00-LANG.txt
@@ -4,13 +4,13 @@
===Segmented Memory===
The 8086 uses a segmented memory model, similar to the Super Nintendo Entertainment System. Unlike banked memory models used in the Commodore 64 and late NES games, segment addresses are held in segment registers. These segment registers are 16 bit and get left-shifted by 4 and added to the pointer register of interest to determine the memory address to look up. The 8086 has four in total, but only the DS and ES registers can be used by the programmer. (The other two work with the stack pointer and instruction pointer, and are loaded for you.) On the 8086, you can only load segment registers with the value in a data register, or with the POP command. So first you must load a segment into a data register, THEN into a segment register.
-.data and .code, but in order to properly read from/write to these sections you'll need to load their memory locations into ''segment registers.''
@@ -18,17 +18,17 @@ It's important to remember the subtle distinction between a ''segment'' and a ''
There are four data registers: AX, BX, CX, and DX. While most commands can use any of them, some only work with particular data registers. System calls in particular are very specific about which registers can be used for what. On [[MS-DOS]], the AX register is used for selecting the desired interrupt to use with the INT command.
Each data register is 16-bit, but has two eight bit halves ending in H or L, e.g. AH, AL. Instructions can be executed using the whole register or just half of it.
-?X is the same as moving it into ?L, and moving 0 into ?H. (? represents the data register of your choice. They are all the same in this regard.)
-INC AX, then AX would have been incremented to 0x100. Since we only incremented AL, only AL was incremented in this case, and AH '''still equals 0x00!'''
Generally speaking, the 8086's registers serve the following purposes:
@@ -42,24 +42,24 @@ When writing to or reading from consecutive sections of memory, it is helpful to
The syntax for offsetting an index register will vary depending on your assembler. Many assemblers will often accept multiple different ways of writing it, and it comes down to personal preference.
-DS into ES, or vice-versa:
-RET instruction would not properly return to where it came from. As long as you pop at the end the same number of registers you pushed at the start, the stack is "balanced" and your return instruction will return correctly. This is because RET is actually POP IP (IP being the instruction pointer, which you can think of as what "line" of code the CPU is on.) The CPU assumes the top of the stack is the correct place to return to, but has no way of actually verifying it. If the function you just wrote causes the CPU to crash or jump to a completely different part of the code, there's a good chance you might have forgotten to balance the stack properly.
@@ -107,40 +107,40 @@ One other caveat to mention: On early IBM PCs and compatibles, the 8087 was not
===Looping Constructs===
The 8086 has a lot more of these than most CPUs. The most obvious one is LOOP, which will subtract 1 from CX, then jump back to a specified label if CX is nonzero after the subtraction. If CX becomes zero after subtracting 1, then no jump will occur and the instruction pointer simply moves to the next instruction.
-CX inside the loop. It's easy to make a mistake like this if you're in a hurry:
-CX decrements to 0x0FFF with the LOOP instruction but the mov cx,1000h was mistakenly placed ''inside'' the loop, resetting the loop counter back to 0x1000, which means no progress is really being made. The correct way to do this is to set the starting loop counter '''outside''' the loop, like so:
-CX during a loop, like if you want to do bit shifts with a shift amount other than 1, for example. There's a simple fix - use the stack to stash and retrieve the loop counter.
-PUSH CX and POP CX, you can temporarily use CX for something else, as long as you restore it before the LOOP instruction.
You can use other registers as loop counters as well, but not with the LOOP instruction - it's hardcoded to only work with CX. But you can do this:
-REP. REP can be combined with certain instructions to repeat that instruction until CX equals zero. However, unlike LOOP, which can be used to repeat a block of instructions, REP can only repeat one. It doesn't work on all instructions, only the "string" instructions which operate on a block of memory. Typically these include MOVSB, LODSB, STOSB, CMPSB, and SCASB (each has a variant that ends in W instead of B, for 16-bit data.) There are also REPZ and REPNZ, which stand for "Repeat if Zero" and "Repeat if Nonzero" respectively. These two only work properly with CMPSB and SCASB, as MOVSB, LODSB, STOSB do not affect the flags. (The CPU doesn't detect whether CX equals zero using the flags, as the flags never reflect this equality to zero like you would expect.)
diff --git a/Lang/8th/Angle-difference-between-two-bearings b/Lang/8th/Angle-difference-between-two-bearings
deleted file mode 120000
index 9cc882831f..0000000000
--- a/Lang/8th/Angle-difference-between-two-bearings
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Angle-difference-between-two-bearings/8th
\ No newline at end of file
diff --git a/Lang/8th/Environment-variables b/Lang/8th/Environment-variables
deleted file mode 120000
index f15e7e1793..0000000000
--- a/Lang/8th/Environment-variables
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Environment-variables/8th
\ No newline at end of file
diff --git a/Lang/8th/Factorial b/Lang/8th/Factorial
deleted file mode 120000
index dde7e52e98..0000000000
--- a/Lang/8th/Factorial
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factorial/8th
\ No newline at end of file
diff --git a/Lang/AArch64-Assembly/Bifid-cipher b/Lang/AArch64-Assembly/Bifid-cipher
deleted file mode 120000
index 57b7c95a81..0000000000
--- a/Lang/AArch64-Assembly/Bifid-cipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bifid-cipher/AArch64-Assembly
\ No newline at end of file
diff --git a/Lang/AArch64-Assembly/Binary-strings b/Lang/AArch64-Assembly/Binary-strings
deleted file mode 120000
index 09d5581057..0000000000
--- a/Lang/AArch64-Assembly/Binary-strings
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Binary-strings/AArch64-Assembly
\ No newline at end of file
diff --git a/Lang/AArch64-Assembly/Bioinformatics-base-count b/Lang/AArch64-Assembly/Bioinformatics-base-count
new file mode 120000
index 0000000000..77532b44f2
--- /dev/null
+++ b/Lang/AArch64-Assembly/Bioinformatics-base-count
@@ -0,0 +1 @@
+../../Task/Bioinformatics-base-count/AArch64-Assembly
\ No newline at end of file
diff --git a/Lang/AArch64-Assembly/Calculating-the-value-of-e b/Lang/AArch64-Assembly/Calculating-the-value-of-e
deleted file mode 120000
index 6be0e9e4dd..0000000000
--- a/Lang/AArch64-Assembly/Calculating-the-value-of-e
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Calculating-the-value-of-e/AArch64-Assembly
\ No newline at end of file
diff --git a/Lang/AArch64-Assembly/Comma-quibbling b/Lang/AArch64-Assembly/Comma-quibbling
deleted file mode 120000
index 09eae1e29d..0000000000
--- a/Lang/AArch64-Assembly/Comma-quibbling
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Comma-quibbling/AArch64-Assembly
\ No newline at end of file
diff --git a/Lang/AArch64-Assembly/Compound-data-type b/Lang/AArch64-Assembly/Compound-data-type
deleted file mode 120000
index 5e69c433e8..0000000000
--- a/Lang/AArch64-Assembly/Compound-data-type
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compound-data-type/AArch64-Assembly
\ No newline at end of file
diff --git a/Lang/AArch64-Assembly/Conways-Game-of-Life b/Lang/AArch64-Assembly/Conways-Game-of-Life
deleted file mode 120000
index 048d5e56cd..0000000000
--- a/Lang/AArch64-Assembly/Conways-Game-of-Life
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Conways-Game-of-Life/AArch64-Assembly
\ No newline at end of file
diff --git a/Lang/AArch64-Assembly/Create-an-HTML-table b/Lang/AArch64-Assembly/Create-an-HTML-table
deleted file mode 120000
index 53d9451773..0000000000
--- a/Lang/AArch64-Assembly/Create-an-HTML-table
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Create-an-HTML-table/AArch64-Assembly
\ No newline at end of file
diff --git a/Lang/AArch64-Assembly/Determine-sentence-type b/Lang/AArch64-Assembly/Determine-sentence-type
deleted file mode 120000
index 9e5de0c792..0000000000
--- a/Lang/AArch64-Assembly/Determine-sentence-type
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-sentence-type/AArch64-Assembly
\ No newline at end of file
diff --git a/Lang/AArch64-Assembly/Environment-variables b/Lang/AArch64-Assembly/Environment-variables
deleted file mode 120000
index bf37f1b011..0000000000
--- a/Lang/AArch64-Assembly/Environment-variables
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Environment-variables/AArch64-Assembly
\ No newline at end of file
diff --git a/Lang/AArch64-Assembly/Fibonacci-n-step-number-sequences b/Lang/AArch64-Assembly/Fibonacci-n-step-number-sequences
deleted file mode 120000
index 27c6d5155d..0000000000
--- a/Lang/AArch64-Assembly/Fibonacci-n-step-number-sequences
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fibonacci-n-step-number-sequences/AArch64-Assembly
\ No newline at end of file
diff --git a/Lang/AArch64-Assembly/Fibonacci-sequence b/Lang/AArch64-Assembly/Fibonacci-sequence
deleted file mode 120000
index 1b2a811917..0000000000
--- a/Lang/AArch64-Assembly/Fibonacci-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fibonacci-sequence/AArch64-Assembly
\ No newline at end of file
diff --git a/Lang/AArch64-Assembly/Halt-and-catch-fire b/Lang/AArch64-Assembly/Halt-and-catch-fire
deleted file mode 120000
index fcd91d9797..0000000000
--- a/Lang/AArch64-Assembly/Halt-and-catch-fire
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Halt-and-catch-fire/AArch64-Assembly
\ No newline at end of file
diff --git a/Lang/AArch64-Assembly/Hash-from-two-arrays b/Lang/AArch64-Assembly/Hash-from-two-arrays
deleted file mode 120000
index 8f4af92c06..0000000000
--- a/Lang/AArch64-Assembly/Hash-from-two-arrays
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hash-from-two-arrays/AArch64-Assembly
\ No newline at end of file
diff --git a/Lang/AArch64-Assembly/Hofstadter-Q-sequence b/Lang/AArch64-Assembly/Hofstadter-Q-sequence
deleted file mode 120000
index 249eb0836e..0000000000
--- a/Lang/AArch64-Assembly/Hofstadter-Q-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hofstadter-Q-sequence/AArch64-Assembly
\ No newline at end of file
diff --git a/Lang/AArch64-Assembly/Keyboard-input-Obtain-a-Y-or-N-response b/Lang/AArch64-Assembly/Keyboard-input-Obtain-a-Y-or-N-response
deleted file mode 120000
index ea8bafc85e..0000000000
--- a/Lang/AArch64-Assembly/Keyboard-input-Obtain-a-Y-or-N-response
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Keyboard-input-Obtain-a-Y-or-N-response/AArch64-Assembly
\ No newline at end of file
diff --git a/Lang/AArch64-Assembly/Leonardo-numbers b/Lang/AArch64-Assembly/Leonardo-numbers
deleted file mode 120000
index c954cc6b34..0000000000
--- a/Lang/AArch64-Assembly/Leonardo-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Leonardo-numbers/AArch64-Assembly
\ No newline at end of file
diff --git a/Lang/AArch64-Assembly/Logical-operations b/Lang/AArch64-Assembly/Logical-operations
deleted file mode 120000
index c765c862aa..0000000000
--- a/Lang/AArch64-Assembly/Logical-operations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Logical-operations/AArch64-Assembly
\ No newline at end of file
diff --git a/Lang/AArch64-Assembly/Machine-code b/Lang/AArch64-Assembly/Machine-code
deleted file mode 120000
index 0510df24d2..0000000000
--- a/Lang/AArch64-Assembly/Machine-code
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Machine-code/AArch64-Assembly
\ No newline at end of file
diff --git a/Lang/AArch64-Assembly/Magic-8-ball b/Lang/AArch64-Assembly/Magic-8-ball
deleted file mode 120000
index 1c232e0832..0000000000
--- a/Lang/AArch64-Assembly/Magic-8-ball
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Magic-8-ball/AArch64-Assembly
\ No newline at end of file
diff --git a/Lang/AArch64-Assembly/Mandelbrot-set b/Lang/AArch64-Assembly/Mandelbrot-set
deleted file mode 120000
index 8e4411d4d0..0000000000
--- a/Lang/AArch64-Assembly/Mandelbrot-set
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Mandelbrot-set/AArch64-Assembly
\ No newline at end of file
diff --git a/Lang/AArch64-Assembly/Menu b/Lang/AArch64-Assembly/Menu
deleted file mode 120000
index 5b0688a2c5..0000000000
--- a/Lang/AArch64-Assembly/Menu
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Menu/AArch64-Assembly
\ No newline at end of file
diff --git a/Lang/AArch64-Assembly/Miller-Rabin-primality-test b/Lang/AArch64-Assembly/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..f452839a71
--- /dev/null
+++ b/Lang/AArch64-Assembly/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/AArch64-Assembly
\ No newline at end of file
diff --git a/Lang/AArch64-Assembly/Phrase-reversals b/Lang/AArch64-Assembly/Phrase-reversals
deleted file mode 120000
index 65751e913c..0000000000
--- a/Lang/AArch64-Assembly/Phrase-reversals
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Phrase-reversals/AArch64-Assembly
\ No newline at end of file
diff --git a/Lang/AArch64-Assembly/Pi b/Lang/AArch64-Assembly/Pi
deleted file mode 120000
index 34be149f2d..0000000000
--- a/Lang/AArch64-Assembly/Pi
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pi/AArch64-Assembly
\ No newline at end of file
diff --git a/Lang/AArch64-Assembly/Read-a-configuration-file b/Lang/AArch64-Assembly/Read-a-configuration-file
deleted file mode 120000
index 869fc1989f..0000000000
--- a/Lang/AArch64-Assembly/Read-a-configuration-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Read-a-configuration-file/AArch64-Assembly
\ No newline at end of file
diff --git a/Lang/AArch64-Assembly/Repeat-a-string b/Lang/AArch64-Assembly/Repeat-a-string
deleted file mode 120000
index c83eefd8df..0000000000
--- a/Lang/AArch64-Assembly/Repeat-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Repeat-a-string/AArch64-Assembly
\ No newline at end of file
diff --git a/Lang/AArch64-Assembly/Reverse-words-in-a-string b/Lang/AArch64-Assembly/Reverse-words-in-a-string
deleted file mode 120000
index 2f40f86595..0000000000
--- a/Lang/AArch64-Assembly/Reverse-words-in-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Reverse-words-in-a-string/AArch64-Assembly
\ No newline at end of file
diff --git a/Lang/AArch64-Assembly/Sorting-Algorithms-Circle-Sort b/Lang/AArch64-Assembly/Sorting-Algorithms-Circle-Sort
new file mode 120000
index 0000000000..6922a69550
--- /dev/null
+++ b/Lang/AArch64-Assembly/Sorting-Algorithms-Circle-Sort
@@ -0,0 +1 @@
+../../Task/Sorting-Algorithms-Circle-Sort/AArch64-Assembly
\ No newline at end of file
diff --git a/Lang/AArch64-Assembly/Strip-block-comments b/Lang/AArch64-Assembly/Strip-block-comments
deleted file mode 120000
index 4a2741cf35..0000000000
--- a/Lang/AArch64-Assembly/Strip-block-comments
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strip-block-comments/AArch64-Assembly
\ No newline at end of file
diff --git a/Lang/AArch64-Assembly/Strip-comments-from-a-string b/Lang/AArch64-Assembly/Strip-comments-from-a-string
deleted file mode 120000
index 1e7fb59c48..0000000000
--- a/Lang/AArch64-Assembly/Strip-comments-from-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strip-comments-from-a-string/AArch64-Assembly
\ No newline at end of file
diff --git a/Lang/AArch64-Assembly/Strip-whitespace-from-a-string-Top-and-tail b/Lang/AArch64-Assembly/Strip-whitespace-from-a-string-Top-and-tail
deleted file mode 120000
index 115198d3ea..0000000000
--- a/Lang/AArch64-Assembly/Strip-whitespace-from-a-string-Top-and-tail
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strip-whitespace-from-a-string-Top-and-tail/AArch64-Assembly
\ No newline at end of file
diff --git a/Lang/AArch64-Assembly/Twos-complement b/Lang/AArch64-Assembly/Twos-complement
deleted file mode 120000
index 92454eff57..0000000000
--- a/Lang/AArch64-Assembly/Twos-complement
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Twos-complement/AArch64-Assembly
\ No newline at end of file
diff --git a/Lang/AArch64-Assembly/Update-a-configuration-file b/Lang/AArch64-Assembly/Update-a-configuration-file
deleted file mode 120000
index c28afd01b6..0000000000
--- a/Lang/AArch64-Assembly/Update-a-configuration-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Update-a-configuration-file/AArch64-Assembly
\ No newline at end of file
diff --git a/Lang/AArch64-Assembly/Vigen-re-cipher b/Lang/AArch64-Assembly/Vigen-re-cipher
deleted file mode 120000
index 02254d1d9a..0000000000
--- a/Lang/AArch64-Assembly/Vigen-re-cipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Vigen-re-cipher/AArch64-Assembly
\ No newline at end of file
diff --git a/Lang/AArch64-Assembly/Vigen-re-cipher-Cryptanalysis b/Lang/AArch64-Assembly/Vigen-re-cipher-Cryptanalysis
deleted file mode 120000
index cc7f7e2227..0000000000
--- a/Lang/AArch64-Assembly/Vigen-re-cipher-Cryptanalysis
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Vigen-re-cipher-Cryptanalysis/AArch64-Assembly
\ No newline at end of file
diff --git a/Lang/AArch64-Assembly/Visualize-a-tree b/Lang/AArch64-Assembly/Visualize-a-tree
deleted file mode 120000
index a3e4c5223f..0000000000
--- a/Lang/AArch64-Assembly/Visualize-a-tree
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Visualize-a-tree/AArch64-Assembly
\ No newline at end of file
diff --git a/Lang/ABAP/00-LANG.txt b/Lang/ABAP/00-LANG.txt
index 819bd4cbc5..446b44c265 100644
--- a/Lang/ABAP/00-LANG.txt
+++ b/Lang/ABAP/00-LANG.txt
@@ -1,14 +1,2 @@
-{{stub}}{{language
-|site=http://www.sdn.sap.com/irj/sdn/abap
-|safety=safe
-|strength=strong
-|compat=nominative
-|checking=static
-|tags=abap}}
-ABAP (Advanced Business Application Programming) is a programming language developed by the german software vendor SAP. It is mainly used to build high performance business applications.
-
-==Citation==
-*[https://en.wikipedia.org/wiki/ABAP]
-
-[[Category:Programming paradigm/Object-oriented]]
-[[Category:Programming paradigm/Imperative]]
\ No newline at end of file
+{{stub}}{{language|site=http://www.sdn.sap.com/irj/sdn/abap}}
+ABAP (Advanced Business Application Programming) is a programming language developed by the german software vendor SAP. It is mainly used to build high performance business applications.
\ No newline at end of file
diff --git a/Lang/ABC/Arithmetic-derivative b/Lang/ABC/Arithmetic-derivative
deleted file mode 120000
index 4225078056..0000000000
--- a/Lang/ABC/Arithmetic-derivative
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-derivative/ABC
\ No newline at end of file
diff --git a/Lang/ABC/Look-and-say-sequence b/Lang/ABC/Look-and-say-sequence
deleted file mode 120000
index 68b9661932..0000000000
--- a/Lang/ABC/Look-and-say-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Look-and-say-sequence/ABC
\ No newline at end of file
diff --git a/Lang/ABC/Population-count b/Lang/ABC/Population-count
deleted file mode 120000
index 6bd44c7e1e..0000000000
--- a/Lang/ABC/Population-count
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Population-count/ABC
\ No newline at end of file
diff --git a/Lang/ABC/Square-but-not-cube b/Lang/ABC/Square-but-not-cube
deleted file mode 120000
index 23a046e711..0000000000
--- a/Lang/ABC/Square-but-not-cube
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Square-but-not-cube/ABC
\ No newline at end of file
diff --git a/Lang/ABC/Zeckendorf-number-representation b/Lang/ABC/Zeckendorf-number-representation
deleted file mode 120000
index 8384d29a12..0000000000
--- a/Lang/ABC/Zeckendorf-number-representation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Zeckendorf-number-representation/ABC
\ No newline at end of file
diff --git a/Lang/AIDED-NATURAL-LANGUAGE/00-LANG.txt b/Lang/AIDED-NATURAL-LANGUAGE/00-LANG.txt
deleted file mode 100644
index c25a056976..0000000000
--- a/Lang/AIDED-NATURAL-LANGUAGE/00-LANG.txt
+++ /dev/null
@@ -1 +0,0 @@
-{{stub}}{{language|Ayrch}}
\ No newline at end of file
diff --git a/Lang/AIDED-NATURAL-LANGUAGE/00-META.yaml b/Lang/AIDED-NATURAL-LANGUAGE/00-META.yaml
deleted file mode 100644
index 8395003e03..0000000000
--- a/Lang/AIDED-NATURAL-LANGUAGE/00-META.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-from: http://rosettacode.org/wiki/Category:AIDED_NATURAL_LANGUAGE
diff --git a/Lang/ALGOL-60/00-LANG.txt b/Lang/ALGOL-60/00-LANG.txt
index 2f04de0a7d..725689b57a 100644
--- a/Lang/ALGOL-60/00-LANG.txt
+++ b/Lang/ALGOL-60/00-LANG.txt
@@ -16,9 +16,4 @@ gcc hello.c -lalgol -lm -o hello
*[[wp:ALGOL 60|ALGOL 60 on Wikipedia]]
*[[ALGOL 68]]
*[[ALGOL W]]
-*[[Simula]]
-
-==External links==
-* [http://algol60.org algol60.org]
-* [https://softwarepreservation.computerhistory.org/ALGOL/ History of ALGOL] Includes links to documentation (e.g. reports)
-* [https://www.masswerk.at/algol60/report.htm Revised Report on the Algorithmic Language Algol 60] (HTML)
\ No newline at end of file
+*[[Simula]]
\ No newline at end of file
diff --git a/Lang/ALGOL-60/Additive-primes b/Lang/ALGOL-60/Additive-primes
deleted file mode 120000
index 360a570784..0000000000
--- a/Lang/ALGOL-60/Additive-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Additive-primes/ALGOL-60
\ No newline at end of file
diff --git a/Lang/ALGOL-60/Anti-primes b/Lang/ALGOL-60/Anti-primes
deleted file mode 120000
index 6d19745d0e..0000000000
--- a/Lang/ALGOL-60/Anti-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Anti-primes/ALGOL-60
\ No newline at end of file
diff --git a/Lang/ALGOL-60/Even-or-odd b/Lang/ALGOL-60/Even-or-odd
deleted file mode 120000
index 13baeccf6c..0000000000
--- a/Lang/ALGOL-60/Even-or-odd
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Even-or-odd/ALGOL-60
\ No newline at end of file
diff --git a/Lang/ALGOL-60/Factorial b/Lang/ALGOL-60/Factorial
new file mode 120000
index 0000000000..67b243e1d0
--- /dev/null
+++ b/Lang/ALGOL-60/Factorial
@@ -0,0 +1 @@
+../../Task/Factorial/ALGOL-60
\ No newline at end of file
diff --git a/Lang/ALGOL-60/Harmonic-series b/Lang/ALGOL-60/Harmonic-series
deleted file mode 120000
index a1eefb4086..0000000000
--- a/Lang/ALGOL-60/Harmonic-series
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Harmonic-series/ALGOL-60
\ No newline at end of file
diff --git a/Lang/ALGOL-60/Horners-rule-for-polynomial-evaluation b/Lang/ALGOL-60/Horners-rule-for-polynomial-evaluation
deleted file mode 120000
index 2a520e0e7c..0000000000
--- a/Lang/ALGOL-60/Horners-rule-for-polynomial-evaluation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Horners-rule-for-polynomial-evaluation/ALGOL-60
\ No newline at end of file
diff --git a/Lang/ALGOL-60/Integer-comparison b/Lang/ALGOL-60/Integer-comparison
deleted file mode 120000
index 54a6736fa3..0000000000
--- a/Lang/ALGOL-60/Integer-comparison
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Integer-comparison/ALGOL-60
\ No newline at end of file
diff --git a/Lang/ALGOL-60/Largest-proper-divisor-of-n b/Lang/ALGOL-60/Largest-proper-divisor-of-n
deleted file mode 120000
index bd5f1adbca..0000000000
--- a/Lang/ALGOL-60/Largest-proper-divisor-of-n
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Largest-proper-divisor-of-n/ALGOL-60
\ No newline at end of file
diff --git a/Lang/ALGOL-60/Loops-Increment-loop-index-within-loop-body b/Lang/ALGOL-60/Loops-Increment-loop-index-within-loop-body
deleted file mode 120000
index b6ef8c8c0c..0000000000
--- a/Lang/ALGOL-60/Loops-Increment-loop-index-within-loop-body
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Increment-loop-index-within-loop-body/ALGOL-60
\ No newline at end of file
diff --git a/Lang/ALGOL-60/Nth-root b/Lang/ALGOL-60/Nth-root
deleted file mode 120000
index 3032f52453..0000000000
--- a/Lang/ALGOL-60/Nth-root
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nth-root/ALGOL-60
\ No newline at end of file
diff --git a/Lang/ALGOL-60/Prime-decomposition b/Lang/ALGOL-60/Prime-decomposition
deleted file mode 120000
index cd5f625ac0..0000000000
--- a/Lang/ALGOL-60/Prime-decomposition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Prime-decomposition/ALGOL-60
\ No newline at end of file
diff --git a/Lang/ALGOL-60/Proper-divisors b/Lang/ALGOL-60/Proper-divisors
deleted file mode 120000
index 7bb12e66dd..0000000000
--- a/Lang/ALGOL-60/Proper-divisors
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Proper-divisors/ALGOL-60
\ No newline at end of file
diff --git a/Lang/ALGOL-60/Semiprime b/Lang/ALGOL-60/Semiprime
deleted file mode 120000
index 0981557b93..0000000000
--- a/Lang/ALGOL-60/Semiprime
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Semiprime/ALGOL-60
\ No newline at end of file
diff --git a/Lang/ALGOL-60/Sequence-of-primes-by-trial-division b/Lang/ALGOL-60/Sequence-of-primes-by-trial-division
deleted file mode 120000
index b95a2ebdcc..0000000000
--- a/Lang/ALGOL-60/Sequence-of-primes-by-trial-division
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sequence-of-primes-by-trial-division/ALGOL-60
\ No newline at end of file
diff --git a/Lang/ALGOL-60/Square-free-integers b/Lang/ALGOL-60/Square-free-integers
deleted file mode 120000
index caff91a536..0000000000
--- a/Lang/ALGOL-60/Square-free-integers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Square-free-integers/ALGOL-60
\ No newline at end of file
diff --git a/Lang/ALGOL-60/Sum-of-a-series b/Lang/ALGOL-60/Sum-of-a-series
deleted file mode 120000
index 48b6d3380c..0000000000
--- a/Lang/ALGOL-60/Sum-of-a-series
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sum-of-a-series/ALGOL-60
\ No newline at end of file
diff --git a/Lang/ALGOL-60/Tau-function b/Lang/ALGOL-60/Tau-function
deleted file mode 120000
index 5e48edf00f..0000000000
--- a/Lang/ALGOL-60/Tau-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tau-function/ALGOL-60
\ No newline at end of file
diff --git a/Lang/ALGOL-60/Tau-number b/Lang/ALGOL-60/Tau-number
deleted file mode 120000
index a054d3d6bb..0000000000
--- a/Lang/ALGOL-60/Tau-number
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tau-number/ALGOL-60
\ No newline at end of file
diff --git a/Lang/ALGOL-68/00-LANG.txt b/Lang/ALGOL-68/00-LANG.txt
index 0415892136..c77464279f 100644
--- a/Lang/ALGOL-68/00-LANG.txt
+++ b/Lang/ALGOL-68/00-LANG.txt
@@ -41,7 +41,7 @@ A syntax chart is available [http://www.softwarepreservation.org/projects/ALGOL/
* [http://www.linkedin.com/groups/Algol68-2333923 Algol68 group at linkedin] - includes various famous compiler composers.
main:( and a matching ) at the end. These are not actually required in the language, but are included so as to highlight the main routine.
+
+On some compilers, it may be necessary to include appropriate "job cards"
+or preludes in order for the programs to compile successfully. Hopefully
+not too much else is required. Examples:
+{|border="1" style="border-collapse: collapse; border: 5px double grey;" align="center"
+|| Brief Algol68
+|| Algol68 as in rosettacode
+|| Actual ELLA Algol 68RS code
+|-
+||
+ print(("Hello, world!",new line))
+||
+ main:(
+ print(("Hello, world!",new line))
+ )
+||
+ PROGRAM helloworld CONTEXT VOID
+ USE standard
+ BEGIN
+ print(("Hello, world!", new line))
+ END
+ FINISH
+|}
+0x04000000 go? It's actually been compressed and fit within those 4 bytes you saw earlier. The ARM is very good at decompressing it, since it's been shrunk to an 8-bit number that can be rotated by an even number of bits. Unfortunately, this compression method is a double-edged sword - some 32-bit numbers can't be compressed this way, and thus many instructions can't work with them!
@@ -18,73 +18,72 @@ Registers are much more flexible than immediate operands. Unlike immediate opera
Getting an address in a register can be achieved with the MOV command, but there are limitations to that which will be explained in detail later. It's more reliable to use ADR which loads a nearby address into a register. This address has to be within a certain distance from the current program counter or it can't be loaded, so it's not a reliable way to load from the heap on many machines. It's mostly intended for loading from nearby read-only data, such as text strings or stored immediates (more on that later). When you type ADR R0,LABEL, the assembler will convert this to MOV R0,PC,#N, where N is the difference between the current program counter value and the label you specified.
LDR can be used in a similar fashion to ADR but there is a subtle distinction between the two. Assume that the section below is assembled starting at memory address 0x04000000:
-ADR only gives you the memory location of a value in memory, where LDR loads ''from'' that memory location.
+
===Data Addressing using LDR and STR===
Unlike its "cousin," the Motorola 68000 (which isn't really related but has a somewhat similar design), the ARM cannot directly write immediate values to memory. Those values must be contained in registers first. Unlike the 68000, the ARM has no "address registers." Rather, enclosing a register name in square brackets turns its value into a reference to a memory location. You'll need to load that memory location's numeric "value" as a constant first. Then you can read from it with LDR and write to it with STR. Not only can you read from a given address, you can also adjust how you read from it, and what you do before or after the read.
-BEGIN { ... } block.
-* ''List users who have /bin/ksh as a shell.''POKE 13312,7 will turn the border color to white. BASIC programs start at 0x3901.[https://www.vdsteenoven.com/aquarius/malloc.html]
-
-BASIC can set and unset 80x72-resolution pixels on the Aquarius with the PSET and PRESET commands (each text character consists of 2x3 pixels). This program for instance draws an ellipsis:
-CLEAR 200 will reserve 200 bytes for strings. You can check with PRINT FRE("a") how much unused string space is still available.
-
-Emulators of the Mattel Aquarius include MAME and [https://aquarius.je/aqualite/ AquaLite].
-
-==See Also==
-* [[wp:Mattel Aquarius|Mattel Aquarius]] at Wikipedia
-* [https://archive.org/search?query=mattel+aquarius Aquarius manuals at the Internet Archive]
\ No newline at end of file
+{{Implementation|BASIC}}'''Aquarius BASIC''' refers to the more or less stripped-down releases of Microsoft BASIC for the Mattel/Radofin Aquarius. The built-in ROM BASIC was seriously restricted since the system only included 4K of RAM and 8K of ROM by default. Minus the RAM used for video and system management, only about 1.7K or RAM were usable by default; the optionally available Extended Microsoft BASIC that came on ROM cartridge was somewhat more generous, and RAM expansion cartridges were available.
\ No newline at end of file
diff --git a/Lang/Aquarius-BASIC/Archimedean-spiral b/Lang/Aquarius-BASIC/Archimedean-spiral
deleted file mode 120000
index a52a300e36..0000000000
--- a/Lang/Aquarius-BASIC/Archimedean-spiral
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Archimedean-spiral/Aquarius-BASIC
\ No newline at end of file
diff --git a/Lang/Aquarius-BASIC/Colour-bars-Display b/Lang/Aquarius-BASIC/Colour-bars-Display
deleted file mode 120000
index 5113e0e205..0000000000
--- a/Lang/Aquarius-BASIC/Colour-bars-Display
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Colour-bars-Display/Aquarius-BASIC
\ No newline at end of file
diff --git a/Lang/Aquarius-BASIC/Mandelbrot-set b/Lang/Aquarius-BASIC/Mandelbrot-set
deleted file mode 120000
index e078ca10a9..0000000000
--- a/Lang/Aquarius-BASIC/Mandelbrot-set
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Mandelbrot-set/Aquarius-BASIC
\ No newline at end of file
diff --git a/Lang/Aquarius-BASIC/Matrix-digital-rain b/Lang/Aquarius-BASIC/Matrix-digital-rain
deleted file mode 120000
index 227ab761a1..0000000000
--- a/Lang/Aquarius-BASIC/Matrix-digital-rain
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Matrix-digital-rain/Aquarius-BASIC
\ No newline at end of file
diff --git a/Lang/Aquarius-BASIC/Musical-scale b/Lang/Aquarius-BASIC/Musical-scale
deleted file mode 120000
index 16fb0326f5..0000000000
--- a/Lang/Aquarius-BASIC/Musical-scale
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Musical-scale/Aquarius-BASIC
\ No newline at end of file
diff --git a/Lang/Aquarius-BASIC/Terminal-control-Display-an-extended-character b/Lang/Aquarius-BASIC/Terminal-control-Display-an-extended-character
deleted file mode 120000
index 908e3614b8..0000000000
--- a/Lang/Aquarius-BASIC/Terminal-control-Display-an-extended-character
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Terminal-control-Display-an-extended-character/Aquarius-BASIC
\ No newline at end of file
diff --git a/Lang/Aria/00-LANG.txt b/Lang/Aria/00-LANG.txt
deleted file mode 100644
index f3d1668eba..0000000000
--- a/Lang/Aria/00-LANG.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-{{language
-|exec=interpreted
-|site=https://egranata.github.io/aria/
-}}
-
-Aria is a modern, dynamic scripting language. It is meant to be a “sweet spot” language, easy to pick-up and enjoyable to use.
-
-It provides a familiar C-style syntax, with a feature set inspired by well-beloved languages such as Python and Rust. It comes with little ceremony and a focus on getting stuff done.
-
-Aria programs are written as .aria files and passed to the Aria virtual machine, which compiles them down to bytecode and executes them.
-
-The Aria interpreter is written in Rust, 2024 edition.
-
-==Todo==
-[[Tasks_not_implemented_in_Aria]]
\ No newline at end of file
diff --git a/Lang/Aria/00-META.yaml b/Lang/Aria/00-META.yaml
deleted file mode 100644
index 35ebadd91a..0000000000
--- a/Lang/Aria/00-META.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-from: http://rosettacode.org/wiki/Category:Aria
diff --git a/Lang/Aria/99-bottles-of-beer b/Lang/Aria/99-bottles-of-beer
deleted file mode 120000
index c2f486227d..0000000000
--- a/Lang/Aria/99-bottles-of-beer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/99-bottles-of-beer/Aria
\ No newline at end of file
diff --git a/Lang/Aria/Hello-world-Text b/Lang/Aria/Hello-world-Text
deleted file mode 120000
index bb8e1db7a7..0000000000
--- a/Lang/Aria/Hello-world-Text
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Text/Aria
\ No newline at end of file
diff --git a/Lang/ArkScript/00-LANG.txt b/Lang/ArkScript/00-LANG.txt
deleted file mode 100644
index 11fc16bd5b..0000000000
--- a/Lang/ArkScript/00-LANG.txt
+++ /dev/null
@@ -1,43 +0,0 @@
-{{language|ArkScript
-|exec=bytecode
-|site=https://arkscript-lang.dev
-|gc=no
-|parampass=value
-|strength=strong
-|checking=dynamic
-|tags=arkscript}}
-ArkScript is a small, fast, functional and scripting language for C++ projects, inspired by [[Lua]], [[Lisp]], and [[Python]].
-
-The language has been designed to be concise, with only 9 keywords, and two rules to parse it:
-# the first node after an opening paren ( is a "function", the following nodes are arguments
-# the only exception to the previous rule is when defining the argument list of a function
-
-atari800 -basic. Some important keys in Atari800 are F1=Settings, F5=Reset, F7=Break, F9=Quit, F10=Screenshot; see [https://github.com/atari800/atari800/blob/master/DOC/USAGE DOC/USAGE] for more. Lowercase characters in strings can be entered by first pressing Caps Lock in Atari800.
-
-In Atari800, folders on the host computer can be mounted in ''Emulator Configuration ⇨ Host Device Settings'', so then you can e.g. use LOAD "H1:MYPROG.BAS" to load a program from local disk. By default, folders are mounted read-only.
-
-BASIC programs in tokenized form are loaded and saved with LOAD and SAVE; in ASCII/ATASCII format you load them with ENTER and save them with LIST, e.g. LIST “H1:PROGRAM.LST”.
-
-After 9 minutes of inactivity, a screen saver (called attract mode by Atari) will activate and cycle colors. This can be stopped by an occasional POKE 77,0 to reset the timer.
-
-Like in Palo Alto Tiny BASIC, commands can be abbreviated by their first (unique) letters and a period, e.g. L. for LIST or GR. for GRAPHICS.
-
-==See Also==
-*[https://en.wikipedia.org/wiki/Atari_BASIC Atari BASIC] in Wikipedia
\ No newline at end of file
+See Wikipedia: https://en.wikipedia.org/wiki/Atari_BASIC
\ No newline at end of file
diff --git a/Lang/Atari-BASIC/Archimedean-spiral b/Lang/Atari-BASIC/Archimedean-spiral
deleted file mode 120000
index 3e75563330..0000000000
--- a/Lang/Atari-BASIC/Archimedean-spiral
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Archimedean-spiral/Atari-BASIC
\ No newline at end of file
diff --git a/Lang/Atari-BASIC/Chaos-game b/Lang/Atari-BASIC/Chaos-game
deleted file mode 120000
index f88e0f8ada..0000000000
--- a/Lang/Atari-BASIC/Chaos-game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Chaos-game/Atari-BASIC
\ No newline at end of file
diff --git a/Lang/Atari-BASIC/Color-of-a-screen-pixel b/Lang/Atari-BASIC/Color-of-a-screen-pixel
deleted file mode 120000
index b097621245..0000000000
--- a/Lang/Atari-BASIC/Color-of-a-screen-pixel
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Color-of-a-screen-pixel/Atari-BASIC
\ No newline at end of file
diff --git a/Lang/Atari-BASIC/Colour-bars-Display b/Lang/Atari-BASIC/Colour-bars-Display
deleted file mode 120000
index 03db8dce96..0000000000
--- a/Lang/Atari-BASIC/Colour-bars-Display
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Colour-bars-Display/Atari-BASIC
\ No newline at end of file
diff --git a/Lang/Atari-BASIC/Draw-a-clock b/Lang/Atari-BASIC/Draw-a-clock
deleted file mode 120000
index f8dd467da4..0000000000
--- a/Lang/Atari-BASIC/Draw-a-clock
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Draw-a-clock/Atari-BASIC
\ No newline at end of file
diff --git a/Lang/Atari-BASIC/Mandelbrot-set b/Lang/Atari-BASIC/Mandelbrot-set
deleted file mode 120000
index 45e66ccff0..0000000000
--- a/Lang/Atari-BASIC/Mandelbrot-set
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Mandelbrot-set/Atari-BASIC
\ No newline at end of file
diff --git a/Lang/Atari-BASIC/Musical-scale b/Lang/Atari-BASIC/Musical-scale
deleted file mode 120000
index b870e25059..0000000000
--- a/Lang/Atari-BASIC/Musical-scale
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Musical-scale/Atari-BASIC
\ No newline at end of file
diff --git a/Lang/Atari-BASIC/Pi b/Lang/Atari-BASIC/Pi
deleted file mode 120000
index b081cc7024..0000000000
--- a/Lang/Atari-BASIC/Pi
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pi/Atari-BASIC
\ No newline at end of file
diff --git a/Lang/Atari-BASIC/Random-number-generator-device- b/Lang/Atari-BASIC/Random-number-generator-device-
deleted file mode 120000
index bc35b665ee..0000000000
--- a/Lang/Atari-BASIC/Random-number-generator-device-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Random-number-generator-device-/Atari-BASIC
\ No newline at end of file
diff --git a/Lang/Atari-BASIC/Reverse-a-string b/Lang/Atari-BASIC/Reverse-a-string
deleted file mode 120000
index c2ff7e214b..0000000000
--- a/Lang/Atari-BASIC/Reverse-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Reverse-a-string/Atari-BASIC
\ No newline at end of file
diff --git a/Lang/Atari-BASIC/System-time b/Lang/Atari-BASIC/System-time
deleted file mode 120000
index c4df1e6a39..0000000000
--- a/Lang/Atari-BASIC/System-time
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/System-time/Atari-BASIC
\ No newline at end of file
diff --git a/Lang/Atari-BASIC/Terminal-control-Hiding-the-cursor b/Lang/Atari-BASIC/Terminal-control-Hiding-the-cursor
deleted file mode 120000
index 78972a34b6..0000000000
--- a/Lang/Atari-BASIC/Terminal-control-Hiding-the-cursor
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Terminal-control-Hiding-the-cursor/Atari-BASIC
\ No newline at end of file
diff --git a/Lang/Atari-BASIC/Terminal-control-Inverse-video b/Lang/Atari-BASIC/Terminal-control-Inverse-video
deleted file mode 120000
index 8c57f75946..0000000000
--- a/Lang/Atari-BASIC/Terminal-control-Inverse-video
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Terminal-control-Inverse-video/Atari-BASIC
\ No newline at end of file
diff --git a/Lang/Atari-BASIC/Terminal-control-Positional-read b/Lang/Atari-BASIC/Terminal-control-Positional-read
deleted file mode 120000
index a0575b2278..0000000000
--- a/Lang/Atari-BASIC/Terminal-control-Positional-read
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Terminal-control-Positional-read/Atari-BASIC
\ No newline at end of file
diff --git a/Lang/Atari-BASIC/Terminal-control-Ringing-the-terminal-bell b/Lang/Atari-BASIC/Terminal-control-Ringing-the-terminal-bell
deleted file mode 120000
index 3666cabb9e..0000000000
--- a/Lang/Atari-BASIC/Terminal-control-Ringing-the-terminal-bell
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Terminal-control-Ringing-the-terminal-bell/Atari-BASIC
\ No newline at end of file
diff --git a/Lang/AutoHotkey/Miller-Rabin-primality-test b/Lang/AutoHotkey/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..518dd6b131
--- /dev/null
+++ b/Lang/AutoHotkey/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/AutoHotkey
\ No newline at end of file
diff --git a/Lang/AutoHotkey/Quaternion-type b/Lang/AutoHotkey/Quaternion-type
new file mode 120000
index 0000000000..00a1a5a068
--- /dev/null
+++ b/Lang/AutoHotkey/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/AutoHotkey
\ No newline at end of file
diff --git a/Lang/AutoHotkey/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors b/Lang/AutoHotkey/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
similarity index 100%
rename from Lang/AutoHotkey/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors
rename to Lang/AutoHotkey/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
diff --git a/Lang/AutoHotkey/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/AutoHotkey/Sequence-smallest-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/AutoHotkey/Sequence:-smallest-number-with-exactly-n-divisors
rename to Lang/AutoHotkey/Sequence-smallest-number-with-exactly-n-divisors
diff --git a/Lang/AutoHotkey/Sorting-Algorithms-Circle-Sort b/Lang/AutoHotkey/Sorting-Algorithms-Circle-Sort
new file mode 120000
index 0000000000..975740b1fa
--- /dev/null
+++ b/Lang/AutoHotkey/Sorting-Algorithms-Circle-Sort
@@ -0,0 +1 @@
+../../Task/Sorting-Algorithms-Circle-Sort/AutoHotkey
\ No newline at end of file
diff --git a/Lang/AutoLISP/100-doors b/Lang/AutoLISP/100-doors
deleted file mode 120000
index 4d97a8a5d6..0000000000
--- a/Lang/AutoLISP/100-doors
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/100-doors/AutoLISP
\ No newline at end of file
diff --git a/Lang/AutoLISP/Babbage-problem b/Lang/AutoLISP/Babbage-problem
deleted file mode 120000
index 0ae3941c82..0000000000
--- a/Lang/AutoLISP/Babbage-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Babbage-problem/AutoLISP
\ No newline at end of file
diff --git a/Lang/AutoLISP/Balanced-brackets b/Lang/AutoLISP/Balanced-brackets
deleted file mode 120000
index b752cfc1d6..0000000000
--- a/Lang/AutoLISP/Balanced-brackets
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Balanced-brackets/AutoLISP
\ No newline at end of file
diff --git a/Lang/AutoLISP/Entropy b/Lang/AutoLISP/Entropy
deleted file mode 120000
index bc1dec235f..0000000000
--- a/Lang/AutoLISP/Entropy
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Entropy/AutoLISP
\ No newline at end of file
diff --git a/Lang/AutoLISP/Entropy-Narcissist b/Lang/AutoLISP/Entropy-Narcissist
deleted file mode 120000
index 0a143c87ce..0000000000
--- a/Lang/AutoLISP/Entropy-Narcissist
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Entropy-Narcissist/AutoLISP
\ No newline at end of file
diff --git a/Lang/AutoLISP/Environment-variables b/Lang/AutoLISP/Environment-variables
deleted file mode 120000
index cc9ceec1ff..0000000000
--- a/Lang/AutoLISP/Environment-variables
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Environment-variables/AutoLISP
\ No newline at end of file
diff --git a/Lang/AutoLISP/Largest-proper-divisor-of-n b/Lang/AutoLISP/Largest-proper-divisor-of-n
deleted file mode 120000
index 48c08fae1a..0000000000
--- a/Lang/AutoLISP/Largest-proper-divisor-of-n
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Largest-proper-divisor-of-n/AutoLISP
\ No newline at end of file
diff --git a/Lang/AutoLISP/The-Twelve-Days-of-Christmas b/Lang/AutoLISP/The-Twelve-Days-of-Christmas
deleted file mode 120000
index 3dd7563b0d..0000000000
--- a/Lang/AutoLISP/The-Twelve-Days-of-Christmas
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/The-Twelve-Days-of-Christmas/AutoLISP
\ No newline at end of file
diff --git a/Lang/Axiom/Quaternion-type b/Lang/Axiom/Quaternion-type
new file mode 120000
index 0000000000..483576377a
--- /dev/null
+++ b/Lang/Axiom/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/Axiom
\ No newline at end of file
diff --git a/Lang/BASIC/00-LANG.txt b/Lang/BASIC/00-LANG.txt
index ddee550d0d..8f4f969193 100644
--- a/Lang/BASIC/00-LANG.txt
+++ b/Lang/BASIC/00-LANG.txt
@@ -12,56 +12,25 @@ BASIC became popular, with many different implementations for various computers.
==Links==
*[[wp:BASIC|Wikipedia:BASIC]]
-**[[wp:ASIC]]
-**[[wp:Atari BASIC]]
**[[wp:BASIC-PLUS]]
-**[[wp:Basic-256]]
-**[[wp:Batari BASIC]]
-**[[wp:BBC BASIC]]
**[[wp:Benton Harbor BASIC]]
-**[[wp:Beta BASIC]]
**[[wp:CBASIC]]
**[[wp:Chipmunk Basic]]
-**[[wp:DarkBASIC]]
**[[wp:Dartmouth BASIC]]
-**[[wp:FreeBASIC]]
-**[[wp:FutureBASIC]]
-**[[wp:GFA BASIC]]
-**[[wp:GLBasic]]
-**[[wp:Integer BASIC]]
-**[[wp:Liberty BASIC]]
-**[[wp:Locomotive BASIC]]
**[[wp:Microsoft BASIC]]
***[[wp:Altair BASIC]]
***[[wp:Amiga BASIC]]
***[[wp:Applesoft BASIC]]
***[[wp:Atari Microsoft BASIC]]
***[[wp:Commodore BASIC]]
-***[[wp:Extended Color BASIC]]
***[[wp:IBM BASIC]]
-***[[wp:MS BASIC for Macintosh]]
-***[[wp:MSX BASIC]]
-***[[wp:Small Basic]]
-***[[wp:QBasic]]
-***[[wp:QuickBASIC]]
-***[[wp:TRS-80 Level II BASIC]]
-***[[wp:Visual Basic]]
+***[[wp:TRS-80 Level II BASIC ]]
**[[wp:PowerBASIC]]
**[[wp:PureBasic]]
-**[[wp:QB64]]
-**[[wp:Quite BASIC]]
-**[[wp:RapidQ]]
-**[[wp:Realbasic]]
**[[wp:Rocky Mountain BASIC]]
-**[[wp:Run BASIC]]
**[[wp:S-BASIC]]
-**[[wp:ScriptBasic]]
**[[wp:Sinclair BASIC]]
-**[[wp:SmileBASIC]]
**[[wp:SuperBASIC]]
**[[wp:TI BASIC (TI 99/4A)]]
-**[[wp:Tiny BASIC]]
**[[wp:True BASIC]]
-**[[wp:UBASIC]]
-**[[wp:Yabasic]]
{{language programming paradigm|Procedural}}
\ No newline at end of file
diff --git a/Lang/BASIC/Abundant-deficient-and-perfect-number-classifications b/Lang/BASIC/Abundant-deficient-and-perfect-number-classifications
new file mode 120000
index 0000000000..732a066bdf
--- /dev/null
+++ b/Lang/BASIC/Abundant-deficient-and-perfect-number-classifications
@@ -0,0 +1 @@
+../../Task/Abundant-deficient-and-perfect-number-classifications/BASIC
\ No newline at end of file
diff --git a/Lang/BASIC/Arithmetic-derivative b/Lang/BASIC/Arithmetic-derivative
deleted file mode 120000
index 25cf9a8b6a..0000000000
--- a/Lang/BASIC/Arithmetic-derivative
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-derivative/BASIC
\ No newline at end of file
diff --git a/Lang/BASIC/Damm-algorithm b/Lang/BASIC/Damm-algorithm
new file mode 120000
index 0000000000..41ee6d1c36
--- /dev/null
+++ b/Lang/BASIC/Damm-algorithm
@@ -0,0 +1 @@
+../../Task/Damm-algorithm/BASIC
\ No newline at end of file
diff --git a/Lang/BASIC/Determine-if-a-string-is-collapsible b/Lang/BASIC/Determine-if-a-string-is-collapsible
new file mode 120000
index 0000000000..87084a2029
--- /dev/null
+++ b/Lang/BASIC/Determine-if-a-string-is-collapsible
@@ -0,0 +1 @@
+../../Task/Determine-if-a-string-is-collapsible/BASIC
\ No newline at end of file
diff --git a/Lang/BASIC/Ethiopian-multiplication b/Lang/BASIC/Ethiopian-multiplication
new file mode 120000
index 0000000000..94be458bb2
--- /dev/null
+++ b/Lang/BASIC/Ethiopian-multiplication
@@ -0,0 +1 @@
+../../Task/Ethiopian-multiplication/BASIC
\ No newline at end of file
diff --git a/Lang/BASIC/Function-definition b/Lang/BASIC/Function-definition
new file mode 120000
index 0000000000..a052c63292
--- /dev/null
+++ b/Lang/BASIC/Function-definition
@@ -0,0 +1 @@
+../../Task/Function-definition/BASIC
\ No newline at end of file
diff --git a/Lang/BASIC/Gray-code b/Lang/BASIC/Gray-code
new file mode 120000
index 0000000000..f0bc6f352f
--- /dev/null
+++ b/Lang/BASIC/Gray-code
@@ -0,0 +1 @@
+../../Task/Gray-code/BASIC
\ No newline at end of file
diff --git a/Lang/BASIC/Mayan-numerals b/Lang/BASIC/Mayan-numerals
new file mode 120000
index 0000000000..ae24d05061
--- /dev/null
+++ b/Lang/BASIC/Mayan-numerals
@@ -0,0 +1 @@
+../../Task/Mayan-numerals/BASIC
\ No newline at end of file
diff --git a/Lang/BASIC/Monty-Hall-problem b/Lang/BASIC/Monty-Hall-problem
new file mode 120000
index 0000000000..ba5a5a279d
--- /dev/null
+++ b/Lang/BASIC/Monty-Hall-problem
@@ -0,0 +1 @@
+../../Task/Monty-Hall-problem/BASIC
\ No newline at end of file
diff --git a/Lang/BASIC/Move-to-front-algorithm b/Lang/BASIC/Move-to-front-algorithm
deleted file mode 120000
index a9f8d4df7e..0000000000
--- a/Lang/BASIC/Move-to-front-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Move-to-front-algorithm/BASIC
\ No newline at end of file
diff --git a/Lang/BASIC/Ordered-words b/Lang/BASIC/Ordered-words
deleted file mode 120000
index dd2f98d4e6..0000000000
--- a/Lang/BASIC/Ordered-words
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ordered-words/BASIC
\ No newline at end of file
diff --git a/Lang/BASIC/Partition-an-integer-x-into-n-primes b/Lang/BASIC/Partition-an-integer-x-into-n-primes
deleted file mode 120000
index 8db316776d..0000000000
--- a/Lang/BASIC/Partition-an-integer-x-into-n-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Partition-an-integer-x-into-n-primes/BASIC
\ No newline at end of file
diff --git a/Lang/BASIC/Rot-13 b/Lang/BASIC/Rot-13
new file mode 120000
index 0000000000..37a240fe69
--- /dev/null
+++ b/Lang/BASIC/Rot-13
@@ -0,0 +1 @@
+../../Task/Rot-13/BASIC
\ No newline at end of file
diff --git a/Lang/BASIC/Sorting-algorithms-Quicksort b/Lang/BASIC/Sorting-algorithms-Quicksort
new file mode 120000
index 0000000000..f7976ecb9f
--- /dev/null
+++ b/Lang/BASIC/Sorting-algorithms-Quicksort
@@ -0,0 +1 @@
+../../Task/Sorting-algorithms-Quicksort/BASIC
\ No newline at end of file
diff --git a/Lang/BASIC/Temperature-conversion b/Lang/BASIC/Temperature-conversion
new file mode 120000
index 0000000000..21182b0539
--- /dev/null
+++ b/Lang/BASIC/Temperature-conversion
@@ -0,0 +1 @@
+../../Task/Temperature-conversion/BASIC
\ No newline at end of file
diff --git a/Lang/BASIC256/Associative-array-Merging b/Lang/BASIC256/Associative-array-Merging
deleted file mode 120000
index 20bef5368f..0000000000
--- a/Lang/BASIC256/Associative-array-Merging
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Associative-array-Merging/BASIC256
\ No newline at end of file
diff --git a/Lang/BASIC256/Determine-if-a-string-has-all-the-same-characters b/Lang/BASIC256/Determine-if-a-string-has-all-the-same-characters
deleted file mode 120000
index 0fc88a3804..0000000000
--- a/Lang/BASIC256/Determine-if-a-string-has-all-the-same-characters
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-has-all-the-same-characters/BASIC256
\ No newline at end of file
diff --git a/Lang/BASIC256/Determine-sentence-type b/Lang/BASIC256/Determine-sentence-type
deleted file mode 120000
index 6be21d3753..0000000000
--- a/Lang/BASIC256/Determine-sentence-type
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-sentence-type/BASIC256
\ No newline at end of file
diff --git a/Lang/BASIC256/Eban-numbers b/Lang/BASIC256/Eban-numbers
deleted file mode 120000
index cc54b44b18..0000000000
--- a/Lang/BASIC256/Eban-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Eban-numbers/BASIC256
\ No newline at end of file
diff --git a/Lang/BASIC256/Empty-program b/Lang/BASIC256/Empty-program
new file mode 120000
index 0000000000..163b273495
--- /dev/null
+++ b/Lang/BASIC256/Empty-program
@@ -0,0 +1 @@
+../../Task/Empty-program/BASIC256
\ No newline at end of file
diff --git a/Lang/BASIC256/Evaluate-binomial-coefficients b/Lang/BASIC256/Evaluate-binomial-coefficients
deleted file mode 120000
index 415fd5e54e..0000000000
--- a/Lang/BASIC256/Evaluate-binomial-coefficients
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Evaluate-binomial-coefficients/BASIC256
\ No newline at end of file
diff --git a/Lang/BASIC256/Kronecker-product b/Lang/BASIC256/Kronecker-product
deleted file mode 120000
index dd258524fe..0000000000
--- a/Lang/BASIC256/Kronecker-product
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Kronecker-product/BASIC256
\ No newline at end of file
diff --git a/Lang/BASIC256/Meissel-Mertens-constant b/Lang/BASIC256/Meissel-Mertens-constant
new file mode 120000
index 0000000000..6ff8d02267
--- /dev/null
+++ b/Lang/BASIC256/Meissel-Mertens-constant
@@ -0,0 +1 @@
+../../Task/Meissel-Mertens-constant/BASIC256
\ No newline at end of file
diff --git a/Lang/BASIC256/Multiple-regression b/Lang/BASIC256/Multiple-regression
deleted file mode 120000
index 4d8b79e98b..0000000000
--- a/Lang/BASIC256/Multiple-regression
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Multiple-regression/BASIC256
\ No newline at end of file
diff --git a/Lang/BASIC256/Nested-templated-data b/Lang/BASIC256/Nested-templated-data
deleted file mode 120000
index f5ddb43f39..0000000000
--- a/Lang/BASIC256/Nested-templated-data
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nested-templated-data/BASIC256
\ No newline at end of file
diff --git a/Lang/BASIC256/Phrase-reversals b/Lang/BASIC256/Phrase-reversals
deleted file mode 120000
index 7bce29f023..0000000000
--- a/Lang/BASIC256/Phrase-reversals
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Phrase-reversals/BASIC256
\ No newline at end of file
diff --git a/Lang/BASIC256/Pythagorean-triples b/Lang/BASIC256/Pythagorean-triples
deleted file mode 120000
index 0ded5bc54d..0000000000
--- a/Lang/BASIC256/Pythagorean-triples
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pythagorean-triples/BASIC256
\ No newline at end of file
diff --git a/Lang/BASIC256/Quaternion-type b/Lang/BASIC256/Quaternion-type
new file mode 120000
index 0000000000..ecfff3f315
--- /dev/null
+++ b/Lang/BASIC256/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/BASIC256
\ No newline at end of file
diff --git a/Lang/BASIC256/Ramer-Douglas-Peucker-line-simplification b/Lang/BASIC256/Ramer-Douglas-Peucker-line-simplification
deleted file mode 120000
index 9a890661d4..0000000000
--- a/Lang/BASIC256/Ramer-Douglas-Peucker-line-simplification
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ramer-Douglas-Peucker-line-simplification/BASIC256
\ No newline at end of file
diff --git a/Lang/BASIC256/Sailors-coconuts-and-a-monkey-problem b/Lang/BASIC256/Sailors-coconuts-and-a-monkey-problem
deleted file mode 120000
index 3cfdfb5740..0000000000
--- a/Lang/BASIC256/Sailors-coconuts-and-a-monkey-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sailors-coconuts-and-a-monkey-problem/BASIC256
\ No newline at end of file
diff --git a/Lang/BASIC256/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors b/Lang/BASIC256/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
similarity index 100%
rename from Lang/BASIC256/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors
rename to Lang/BASIC256/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
diff --git a/Lang/BASIC256/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/BASIC256/Sequence-smallest-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/BASIC256/Sequence:-smallest-number-with-exactly-n-divisors
rename to Lang/BASIC256/Sequence-smallest-number-with-exactly-n-divisors
diff --git a/Lang/BASIC256/Sexy-primes b/Lang/BASIC256/Sexy-primes
deleted file mode 120000
index 86fc0a12b9..0000000000
--- a/Lang/BASIC256/Sexy-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sexy-primes/BASIC256
\ No newline at end of file
diff --git a/Lang/BASIC256/Sort-disjoint-sublist b/Lang/BASIC256/Sort-disjoint-sublist
deleted file mode 120000
index 4422d7b840..0000000000
--- a/Lang/BASIC256/Sort-disjoint-sublist
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-disjoint-sublist/BASIC256
\ No newline at end of file
diff --git a/Lang/BASIC256/Twos-complement b/Lang/BASIC256/Twos-complement
deleted file mode 120000
index 8b3d33db0a..0000000000
--- a/Lang/BASIC256/Twos-complement
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Twos-complement/BASIC256
\ No newline at end of file
diff --git a/Lang/BBC-BASIC/Arbitrary-precision-integers-included- b/Lang/BBC-BASIC/Arbitrary-precision-integers-included-
deleted file mode 120000
index ca18adffdc..0000000000
--- a/Lang/BBC-BASIC/Arbitrary-precision-integers-included-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arbitrary-precision-integers-included-/BBC-BASIC
\ No newline at end of file
diff --git a/Lang/BBC-BASIC/Bioinformatics-base-count b/Lang/BBC-BASIC/Bioinformatics-base-count
new file mode 120000
index 0000000000..109612c5db
--- /dev/null
+++ b/Lang/BBC-BASIC/Bioinformatics-base-count
@@ -0,0 +1 @@
+../../Task/Bioinformatics-base-count/BBC-BASIC
\ No newline at end of file
diff --git a/Lang/BBC-BASIC/Multi-dimensional-array b/Lang/BBC-BASIC/Multi-dimensional-array
deleted file mode 120000
index 4bc7c4a17c..0000000000
--- a/Lang/BBC-BASIC/Multi-dimensional-array
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Multi-dimensional-array/BBC-BASIC
\ No newline at end of file
diff --git a/Lang/BBC-BASIC/Quaternion-type b/Lang/BBC-BASIC/Quaternion-type
new file mode 120000
index 0000000000..018816057d
--- /dev/null
+++ b/Lang/BBC-BASIC/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/BBC-BASIC
\ No newline at end of file
diff --git a/Lang/BCPL/Move-to-front-algorithm b/Lang/BCPL/Move-to-front-algorithm
deleted file mode 120000
index 27c5309df1..0000000000
--- a/Lang/BCPL/Move-to-front-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Move-to-front-algorithm/BCPL
\ No newline at end of file
diff --git a/Lang/BCPL/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/BCPL/Sequence-smallest-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/BCPL/Sequence:-smallest-number-with-exactly-n-divisors
rename to Lang/BCPL/Sequence-smallest-number-with-exactly-n-divisors
diff --git a/Lang/BCPL/Zeckendorf-number-representation b/Lang/BCPL/Zeckendorf-number-representation
deleted file mode 120000
index 6723808a9f..0000000000
--- a/Lang/BCPL/Zeckendorf-number-representation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Zeckendorf-number-representation/BCPL
\ No newline at end of file
diff --git a/Lang/BQN/Abundant-odd-numbers b/Lang/BQN/Abundant-odd-numbers
deleted file mode 120000
index fdb56e6ed6..0000000000
--- a/Lang/BQN/Abundant-odd-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abundant-odd-numbers/BQN
\ No newline at end of file
diff --git a/Lang/BQN/Base64-decode-data b/Lang/BQN/Base64-decode-data
deleted file mode 120000
index 2272b7f2a1..0000000000
--- a/Lang/BQN/Base64-decode-data
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Base64-decode-data/BQN
\ No newline at end of file
diff --git a/Lang/BQN/Bell-numbers b/Lang/BQN/Bell-numbers
deleted file mode 120000
index 2c520a34e3..0000000000
--- a/Lang/BQN/Bell-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bell-numbers/BQN
\ No newline at end of file
diff --git a/Lang/BQN/CUSIP b/Lang/BQN/CUSIP
deleted file mode 120000
index b7ca66ab5f..0000000000
--- a/Lang/BQN/CUSIP
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/CUSIP/BQN
\ No newline at end of file
diff --git a/Lang/BQN/Call-an-object-method b/Lang/BQN/Call-an-object-method
deleted file mode 120000
index eb9e8d9920..0000000000
--- a/Lang/BQN/Call-an-object-method
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Call-an-object-method/BQN
\ No newline at end of file
diff --git a/Lang/BQN/Cartesian-product-of-two-or-more-lists b/Lang/BQN/Cartesian-product-of-two-or-more-lists
deleted file mode 120000
index 9eca0c70e0..0000000000
--- a/Lang/BQN/Cartesian-product-of-two-or-more-lists
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cartesian-product-of-two-or-more-lists/BQN
\ No newline at end of file
diff --git a/Lang/BQN/Determine-if-a-string-is-squeezable b/Lang/BQN/Determine-if-a-string-is-squeezable
deleted file mode 120000
index 604c0583b1..0000000000
--- a/Lang/BQN/Determine-if-a-string-is-squeezable
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-is-squeezable/BQN
\ No newline at end of file
diff --git a/Lang/BQN/Dutch-national-flag-problem b/Lang/BQN/Dutch-national-flag-problem
deleted file mode 120000
index c24e10da06..0000000000
--- a/Lang/BQN/Dutch-national-flag-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dutch-national-flag-problem/BQN
\ No newline at end of file
diff --git a/Lang/BQN/Find-common-directory-path b/Lang/BQN/Find-common-directory-path
deleted file mode 120000
index d4456eaa79..0000000000
--- a/Lang/BQN/Find-common-directory-path
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Find-common-directory-path/BQN
\ No newline at end of file
diff --git a/Lang/BQN/Globally-replace-text-in-several-files b/Lang/BQN/Globally-replace-text-in-several-files
deleted file mode 120000
index b13db5355b..0000000000
--- a/Lang/BQN/Globally-replace-text-in-several-files
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Globally-replace-text-in-several-files/BQN
\ No newline at end of file
diff --git a/Lang/BQN/Harmonic-series b/Lang/BQN/Harmonic-series
deleted file mode 120000
index 6efb347667..0000000000
--- a/Lang/BQN/Harmonic-series
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Harmonic-series/BQN
\ No newline at end of file
diff --git a/Lang/BQN/I-before-E-except-after-C b/Lang/BQN/I-before-E-except-after-C
deleted file mode 120000
index 5fd82fbd92..0000000000
--- a/Lang/BQN/I-before-E-except-after-C
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/I-before-E-except-after-C/BQN
\ No newline at end of file
diff --git a/Lang/BQN/IBAN b/Lang/BQN/IBAN
deleted file mode 120000
index 501e54d38b..0000000000
--- a/Lang/BQN/IBAN
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/IBAN/BQN
\ No newline at end of file
diff --git a/Lang/BQN/ISBN13-check-digit b/Lang/BQN/ISBN13-check-digit
deleted file mode 120000
index 70feb3a0c6..0000000000
--- a/Lang/BQN/ISBN13-check-digit
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/ISBN13-check-digit/BQN
\ No newline at end of file
diff --git a/Lang/BQN/Miller-Rabin-primality-test b/Lang/BQN/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..88fd3a622d
--- /dev/null
+++ b/Lang/BQN/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/BQN
\ No newline at end of file
diff --git a/Lang/BQN/Phrase-reversals b/Lang/BQN/Phrase-reversals
deleted file mode 120000
index a35381900f..0000000000
--- a/Lang/BQN/Phrase-reversals
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Phrase-reversals/BQN
\ No newline at end of file
diff --git a/Lang/BQN/Self-describing-numbers b/Lang/BQN/Self-describing-numbers
deleted file mode 120000
index 394307e5cb..0000000000
--- a/Lang/BQN/Self-describing-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Self-describing-numbers/BQN
\ No newline at end of file
diff --git a/Lang/BQN/Sort-disjoint-sublist b/Lang/BQN/Sort-disjoint-sublist
deleted file mode 120000
index b6e62b246c..0000000000
--- a/Lang/BQN/Sort-disjoint-sublist
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-disjoint-sublist/BQN
\ No newline at end of file
diff --git a/Lang/BQN/Tau-number b/Lang/BQN/Tau-number
deleted file mode 120000
index 0d0f120696..0000000000
--- a/Lang/BQN/Tau-number
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tau-number/BQN
\ No newline at end of file
diff --git a/Lang/BQN/Water-collected-between-towers b/Lang/BQN/Water-collected-between-towers
deleted file mode 120000
index 905f66c364..0000000000
--- a/Lang/BQN/Water-collected-between-towers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Water-collected-between-towers/BQN
\ No newline at end of file
diff --git a/Lang/BaCon/Copy-a-string b/Lang/BaCon/Copy-a-string
new file mode 120000
index 0000000000..a2df7bcd98
--- /dev/null
+++ b/Lang/BaCon/Copy-a-string
@@ -0,0 +1 @@
+../../Task/Copy-a-string/BaCon
\ No newline at end of file
diff --git a/Lang/Bait/Array-length b/Lang/Bait/Array-length
deleted file mode 120000
index 986225a090..0000000000
--- a/Lang/Bait/Array-length
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Array-length/Bait
\ No newline at end of file
diff --git a/Lang/Bait/Empty-string b/Lang/Bait/Empty-string
deleted file mode 120000
index b1bbee2da3..0000000000
--- a/Lang/Bait/Empty-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Empty-string/Bait
\ No newline at end of file
diff --git a/Lang/Bait/Loops-Continue b/Lang/Bait/Loops-Continue
deleted file mode 120000
index 6e3768fbb1..0000000000
--- a/Lang/Bait/Loops-Continue
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Continue/Bait
\ No newline at end of file
diff --git a/Lang/Ballerina/00-LANG.txt b/Lang/Ballerina/00-LANG.txt
index 211ba0fe40..af215acfd5 100644
--- a/Lang/Ballerina/00-LANG.txt
+++ b/Lang/Ballerina/00-LANG.txt
@@ -1,20 +1 @@
-{{language|Ballerina
-|exec=bytecode
-|strength=strong
-|safety=safe
-|express=explicit
-|checking=static
-|gc=yes
-|hopl=no
-|site=https://ballerina.io
-}}
-'''[https://en.wikipedia.org/wiki/Ballerina_(programming_language) Ballerina]''' is an open source general-purpose programming language designed and supported by [https://wso2.com/ WSO2] for cloud-era application programmers.
-
-It is under development on [https://github.com/ballerina-platform/ballerina-lang GitHub] and is fully documented [https://ballerina.io here].
-
-Ballerina was first publicly announced in 2017 and version 1.0 was released on September 10, 2019. However, a major overhaul took place in 2022 when [https://blog.ballerina.io/posts/2022-02-01-announcing-ballerina-2201.0.0-swan-lake/ Ballerina 2201.0.0 (Swan Lake)] was released.
-
-The current version (2201.12.3) has distributions available for Windows, Linux and macOS and can be downloaded [https://ballerina.io/downloads/ here].
-
-== See Also ==
-* [https://ballerina.io/learn/by-example/ Ballerina by Example]
\ No newline at end of file
+{{stub}}{{language|Ballerina}}
\ No newline at end of file
diff --git a/Lang/Ballerina/100-doors b/Lang/Ballerina/100-doors
deleted file mode 120000
index 833a0fc189..0000000000
--- a/Lang/Ballerina/100-doors
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/100-doors/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/99-bottles-of-beer b/Lang/Ballerina/99-bottles-of-beer
deleted file mode 120000
index b3bd8e29e3..0000000000
--- a/Lang/Ballerina/99-bottles-of-beer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/99-bottles-of-beer/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/A+B b/Lang/Ballerina/A+B
deleted file mode 120000
index e9aab74a73..0000000000
--- a/Lang/Ballerina/A+B
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/A+B/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/ABC-problem b/Lang/Ballerina/ABC-problem
deleted file mode 120000
index 49ca7ac9ad..0000000000
--- a/Lang/Ballerina/ABC-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/ABC-problem/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/AKS-test-for-primes b/Lang/Ballerina/AKS-test-for-primes
deleted file mode 120000
index 9b19f08d80..0000000000
--- a/Lang/Ballerina/AKS-test-for-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/AKS-test-for-primes/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Abundant-deficient-and-perfect-number-classifications b/Lang/Ballerina/Abundant-deficient-and-perfect-number-classifications
deleted file mode 120000
index b5353658a4..0000000000
--- a/Lang/Ballerina/Abundant-deficient-and-perfect-number-classifications
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abundant-deficient-and-perfect-number-classifications/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Abundant-odd-numbers b/Lang/Ballerina/Abundant-odd-numbers
deleted file mode 120000
index 0b3a97c4a1..0000000000
--- a/Lang/Ballerina/Abundant-odd-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abundant-odd-numbers/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Accumulator-factory b/Lang/Ballerina/Accumulator-factory
deleted file mode 120000
index 837dbbe6a0..0000000000
--- a/Lang/Ballerina/Accumulator-factory
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Accumulator-factory/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Achilles-numbers b/Lang/Ballerina/Achilles-numbers
deleted file mode 120000
index 3336ab1c37..0000000000
--- a/Lang/Ballerina/Achilles-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Achilles-numbers/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Ackermann-function b/Lang/Ballerina/Ackermann-function
deleted file mode 120000
index b9748d884d..0000000000
--- a/Lang/Ballerina/Ackermann-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ackermann-function/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Add-a-variable-to-a-class-instance-at-runtime b/Lang/Ballerina/Add-a-variable-to-a-class-instance-at-runtime
deleted file mode 120000
index 12efd91bd6..0000000000
--- a/Lang/Ballerina/Add-a-variable-to-a-class-instance-at-runtime
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Add-a-variable-to-a-class-instance-at-runtime/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Additive-primes b/Lang/Ballerina/Additive-primes
deleted file mode 120000
index a504210ea7..0000000000
--- a/Lang/Ballerina/Additive-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Additive-primes/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Address-of-a-variable b/Lang/Ballerina/Address-of-a-variable
deleted file mode 120000
index 6428e75ce3..0000000000
--- a/Lang/Ballerina/Address-of-a-variable
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Address-of-a-variable/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Almost-prime b/Lang/Ballerina/Almost-prime
deleted file mode 120000
index 33d501af1e..0000000000
--- a/Lang/Ballerina/Almost-prime
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Almost-prime/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Amb b/Lang/Ballerina/Amb
deleted file mode 120000
index 7acc58d7c4..0000000000
--- a/Lang/Ballerina/Amb
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Amb/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Angle-difference-between-two-bearings b/Lang/Ballerina/Angle-difference-between-two-bearings
deleted file mode 120000
index 04ff00d986..0000000000
--- a/Lang/Ballerina/Angle-difference-between-two-bearings
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Angle-difference-between-two-bearings/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Anti-primes b/Lang/Ballerina/Anti-primes
deleted file mode 120000
index 9911fc0bcb..0000000000
--- a/Lang/Ballerina/Anti-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Anti-primes/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Apply-a-callback-to-an-array b/Lang/Ballerina/Apply-a-callback-to-an-array
deleted file mode 120000
index 9911480671..0000000000
--- a/Lang/Ballerina/Apply-a-callback-to-an-array
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Apply-a-callback-to-an-array/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Approximate-equality b/Lang/Ballerina/Approximate-equality
deleted file mode 120000
index 0ea6692d0d..0000000000
--- a/Lang/Ballerina/Approximate-equality
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Approximate-equality/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Arithmetic-Complex b/Lang/Ballerina/Arithmetic-Complex
deleted file mode 120000
index f87fd15204..0000000000
--- a/Lang/Ballerina/Arithmetic-Complex
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-Complex/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Arithmetic-Integer b/Lang/Ballerina/Arithmetic-Integer
deleted file mode 120000
index a4c8cf5206..0000000000
--- a/Lang/Ballerina/Arithmetic-Integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-Integer/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Arithmetic-Rational b/Lang/Ballerina/Arithmetic-Rational
deleted file mode 120000
index 422af5f88b..0000000000
--- a/Lang/Ballerina/Arithmetic-Rational
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-Rational/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Arithmetic-numbers b/Lang/Ballerina/Arithmetic-numbers
deleted file mode 120000
index 38541780a0..0000000000
--- a/Lang/Ballerina/Arithmetic-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-numbers/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Array-concatenation b/Lang/Ballerina/Array-concatenation
deleted file mode 120000
index 41c2603b74..0000000000
--- a/Lang/Ballerina/Array-concatenation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Array-concatenation/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Array-length b/Lang/Ballerina/Array-length
deleted file mode 120000
index 25020148f9..0000000000
--- a/Lang/Ballerina/Array-length
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Array-length/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Arrays b/Lang/Ballerina/Arrays
deleted file mode 120000
index ec5c5a266e..0000000000
--- a/Lang/Ballerina/Arrays
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arrays/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Ascending-primes b/Lang/Ballerina/Ascending-primes
deleted file mode 120000
index 51444ceb96..0000000000
--- a/Lang/Ballerina/Ascending-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ascending-primes/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Associative-array-Creation b/Lang/Ballerina/Associative-array-Creation
deleted file mode 120000
index 2639b285f3..0000000000
--- a/Lang/Ballerina/Associative-array-Creation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Associative-array-Creation/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Associative-array-Iteration b/Lang/Ballerina/Associative-array-Iteration
deleted file mode 120000
index d3e31d2374..0000000000
--- a/Lang/Ballerina/Associative-array-Iteration
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Associative-array-Iteration/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Associative-array-Merging b/Lang/Ballerina/Associative-array-Merging
deleted file mode 120000
index cd38137d75..0000000000
--- a/Lang/Ballerina/Associative-array-Merging
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Associative-array-Merging/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Averages-Arithmetic-mean b/Lang/Ballerina/Averages-Arithmetic-mean
deleted file mode 120000
index 039d1f0de8..0000000000
--- a/Lang/Ballerina/Averages-Arithmetic-mean
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Arithmetic-mean/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Averages-Mean-angle b/Lang/Ballerina/Averages-Mean-angle
deleted file mode 120000
index adf77693ce..0000000000
--- a/Lang/Ballerina/Averages-Mean-angle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Mean-angle/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Averages-Mean-time-of-day b/Lang/Ballerina/Averages-Mean-time-of-day
deleted file mode 120000
index c969ed84e4..0000000000
--- a/Lang/Ballerina/Averages-Mean-time-of-day
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Mean-time-of-day/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Averages-Median b/Lang/Ballerina/Averages-Median
deleted file mode 120000
index 5bbd39cecb..0000000000
--- a/Lang/Ballerina/Averages-Median
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Median/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Averages-Mode b/Lang/Ballerina/Averages-Mode
deleted file mode 120000
index 72d0e02dae..0000000000
--- a/Lang/Ballerina/Averages-Mode
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Mode/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Averages-Pythagorean-means b/Lang/Ballerina/Averages-Pythagorean-means
deleted file mode 120000
index fd607a9ee8..0000000000
--- a/Lang/Ballerina/Averages-Pythagorean-means
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Pythagorean-means/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Averages-Root-mean-square b/Lang/Ballerina/Averages-Root-mean-square
deleted file mode 120000
index 48056410d9..0000000000
--- a/Lang/Ballerina/Averages-Root-mean-square
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Root-mean-square/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Averages-Simple-moving-average b/Lang/Ballerina/Averages-Simple-moving-average
deleted file mode 120000
index 7e2849cced..0000000000
--- a/Lang/Ballerina/Averages-Simple-moving-average
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Simple-moving-average/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Balanced-brackets b/Lang/Ballerina/Balanced-brackets
deleted file mode 120000
index 3d78b77dd3..0000000000
--- a/Lang/Ballerina/Balanced-brackets
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Balanced-brackets/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Binary-digits b/Lang/Ballerina/Binary-digits
deleted file mode 120000
index 47999ed558..0000000000
--- a/Lang/Ballerina/Binary-digits
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Binary-digits/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Boolean-values b/Lang/Ballerina/Boolean-values
deleted file mode 120000
index c01657f16a..0000000000
--- a/Lang/Ballerina/Boolean-values
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Boolean-values/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Caesar-cipher b/Lang/Ballerina/Caesar-cipher
deleted file mode 120000
index 8e1a6603e9..0000000000
--- a/Lang/Ballerina/Caesar-cipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Caesar-cipher/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Calculating-the-value-of-e b/Lang/Ballerina/Calculating-the-value-of-e
deleted file mode 120000
index af3085b824..0000000000
--- a/Lang/Ballerina/Calculating-the-value-of-e
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Calculating-the-value-of-e/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Case-sensitivity-of-identifiers b/Lang/Ballerina/Case-sensitivity-of-identifiers
deleted file mode 120000
index 42725d41da..0000000000
--- a/Lang/Ballerina/Case-sensitivity-of-identifiers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Case-sensitivity-of-identifiers/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Character-codes b/Lang/Ballerina/Character-codes
deleted file mode 120000
index 6abede048f..0000000000
--- a/Lang/Ballerina/Character-codes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Character-codes/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Classes b/Lang/Ballerina/Classes
deleted file mode 120000
index 0c8bd2434d..0000000000
--- a/Lang/Ballerina/Classes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Classes/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Commatizing-numbers b/Lang/Ballerina/Commatizing-numbers
deleted file mode 120000
index a644eda1b6..0000000000
--- a/Lang/Ballerina/Commatizing-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Commatizing-numbers/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Comments b/Lang/Ballerina/Comments
deleted file mode 120000
index 6b5d53ddee..0000000000
--- a/Lang/Ballerina/Comments
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Comments/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Copy-a-string b/Lang/Ballerina/Copy-a-string
deleted file mode 120000
index ce5773b181..0000000000
--- a/Lang/Ballerina/Copy-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Copy-a-string/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Count-in-octal b/Lang/Ballerina/Count-in-octal
deleted file mode 120000
index 7e70a67830..0000000000
--- a/Lang/Ballerina/Count-in-octal
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Count-in-octal/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Currency b/Lang/Ballerina/Currency
deleted file mode 120000
index 2b278dfa20..0000000000
--- a/Lang/Ballerina/Currency
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Currency/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Currying b/Lang/Ballerina/Currying
deleted file mode 120000
index 7e465c7834..0000000000
--- a/Lang/Ballerina/Currying
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Currying/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Dot-product b/Lang/Ballerina/Dot-product
deleted file mode 120000
index 327f9d0969..0000000000
--- a/Lang/Ballerina/Dot-product
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dot-product/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Dynamic-variable-names b/Lang/Ballerina/Dynamic-variable-names
deleted file mode 120000
index 5c549728ae..0000000000
--- a/Lang/Ballerina/Dynamic-variable-names
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dynamic-variable-names/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Empty-string b/Lang/Ballerina/Empty-string
deleted file mode 120000
index a86a0ffc9d..0000000000
--- a/Lang/Ballerina/Empty-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Empty-string/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Even-or-odd b/Lang/Ballerina/Even-or-odd
deleted file mode 120000
index 2d8b1b90ab..0000000000
--- a/Lang/Ballerina/Even-or-odd
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Even-or-odd/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Extreme-floating-point-values b/Lang/Ballerina/Extreme-floating-point-values
deleted file mode 120000
index 7f91d37268..0000000000
--- a/Lang/Ballerina/Extreme-floating-point-values
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Extreme-floating-point-values/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Factors-of-an-integer b/Lang/Ballerina/Factors-of-an-integer
deleted file mode 120000
index ac634eef84..0000000000
--- a/Lang/Ballerina/Factors-of-an-integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factors-of-an-integer/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Farey-sequence b/Lang/Ballerina/Farey-sequence
deleted file mode 120000
index d542459c5f..0000000000
--- a/Lang/Ballerina/Farey-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Farey-sequence/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Fibonacci-sequence b/Lang/Ballerina/Fibonacci-sequence
deleted file mode 120000
index 96031e7d01..0000000000
--- a/Lang/Ballerina/Fibonacci-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fibonacci-sequence/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Filter b/Lang/Ballerina/Filter
deleted file mode 120000
index b57b5e74be..0000000000
--- a/Lang/Ballerina/Filter
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Filter/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Find-limit-of-recursion b/Lang/Ballerina/Find-limit-of-recursion
deleted file mode 120000
index 0c9c45aca0..0000000000
--- a/Lang/Ballerina/Find-limit-of-recursion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Find-limit-of-recursion/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Fivenum b/Lang/Ballerina/Fivenum
deleted file mode 120000
index 0df90aeb78..0000000000
--- a/Lang/Ballerina/Fivenum
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fivenum/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/FizzBuzz b/Lang/Ballerina/FizzBuzz
deleted file mode 120000
index e7f3aa8019..0000000000
--- a/Lang/Ballerina/FizzBuzz
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/FizzBuzz/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Floyds-triangle b/Lang/Ballerina/Floyds-triangle
deleted file mode 120000
index 524ef8d9d5..0000000000
--- a/Lang/Ballerina/Floyds-triangle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Floyds-triangle/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Four-bit-adder b/Lang/Ballerina/Four-bit-adder
deleted file mode 120000
index da1ccb0292..0000000000
--- a/Lang/Ballerina/Four-bit-adder
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Four-bit-adder/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Function-definition b/Lang/Ballerina/Function-definition
deleted file mode 120000
index aad5e07c0c..0000000000
--- a/Lang/Ballerina/Function-definition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Function-definition/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Gapful-numbers b/Lang/Ballerina/Gapful-numbers
deleted file mode 120000
index 16bb3670f6..0000000000
--- a/Lang/Ballerina/Gapful-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Gapful-numbers/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Greatest-common-divisor b/Lang/Ballerina/Greatest-common-divisor
deleted file mode 120000
index 0f657f13a6..0000000000
--- a/Lang/Ballerina/Greatest-common-divisor
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Greatest-common-divisor/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Greatest-element-of-a-list b/Lang/Ballerina/Greatest-element-of-a-list
deleted file mode 120000
index 579d0c3022..0000000000
--- a/Lang/Ballerina/Greatest-element-of-a-list
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Greatest-element-of-a-list/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Greatest-subsequential-sum b/Lang/Ballerina/Greatest-subsequential-sum
deleted file mode 120000
index edc1a686d7..0000000000
--- a/Lang/Ballerina/Greatest-subsequential-sum
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Greatest-subsequential-sum/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Hailstone-sequence b/Lang/Ballerina/Hailstone-sequence
deleted file mode 120000
index 41dfb14066..0000000000
--- a/Lang/Ballerina/Hailstone-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hailstone-sequence/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Hello-world-Graphical b/Lang/Ballerina/Hello-world-Graphical
deleted file mode 120000
index 4e2e7e9224..0000000000
--- a/Lang/Ballerina/Hello-world-Graphical
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Graphical/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Hello-world-Newbie b/Lang/Ballerina/Hello-world-Newbie
deleted file mode 120000
index b59c1b36e9..0000000000
--- a/Lang/Ballerina/Hello-world-Newbie
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Newbie/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Hello-world-Newline-omission b/Lang/Ballerina/Hello-world-Newline-omission
deleted file mode 120000
index 1016c5553e..0000000000
--- a/Lang/Ballerina/Hello-world-Newline-omission
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Newline-omission/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Hello-world-Standard-error b/Lang/Ballerina/Hello-world-Standard-error
deleted file mode 120000
index c4921dce1f..0000000000
--- a/Lang/Ballerina/Hello-world-Standard-error
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Standard-error/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Increment-a-numerical-string b/Lang/Ballerina/Increment-a-numerical-string
deleted file mode 120000
index 712faa77bf..0000000000
--- a/Lang/Ballerina/Increment-a-numerical-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Increment-a-numerical-string/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Integer-comparison b/Lang/Ballerina/Integer-comparison
deleted file mode 120000
index 8563637dab..0000000000
--- a/Lang/Ballerina/Integer-comparison
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Integer-comparison/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Integer-sequence b/Lang/Ballerina/Integer-sequence
deleted file mode 120000
index 06b95f33f5..0000000000
--- a/Lang/Ballerina/Integer-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Integer-sequence/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Levenshtein-distance b/Lang/Ballerina/Levenshtein-distance
deleted file mode 120000
index 4824e03354..0000000000
--- a/Lang/Ballerina/Levenshtein-distance
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Levenshtein-distance/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Logical-operations b/Lang/Ballerina/Logical-operations
deleted file mode 120000
index 06b4043fcb..0000000000
--- a/Lang/Ballerina/Logical-operations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Logical-operations/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Loop-over-multiple-arrays-simultaneously b/Lang/Ballerina/Loop-over-multiple-arrays-simultaneously
deleted file mode 120000
index 9b68d094d5..0000000000
--- a/Lang/Ballerina/Loop-over-multiple-arrays-simultaneously
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loop-over-multiple-arrays-simultaneously/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Loops-Break b/Lang/Ballerina/Loops-Break
deleted file mode 120000
index 6ab612b087..0000000000
--- a/Lang/Ballerina/Loops-Break
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Break/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Loops-Continue b/Lang/Ballerina/Loops-Continue
deleted file mode 120000
index 175be123b9..0000000000
--- a/Lang/Ballerina/Loops-Continue
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Continue/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Loops-Do-while b/Lang/Ballerina/Loops-Do-while
deleted file mode 120000
index b90c6b3171..0000000000
--- a/Lang/Ballerina/Loops-Do-while
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Do-while/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Loops-Downward-for b/Lang/Ballerina/Loops-Downward-for
deleted file mode 120000
index e977389f54..0000000000
--- a/Lang/Ballerina/Loops-Downward-for
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Downward-for/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Loops-For b/Lang/Ballerina/Loops-For
deleted file mode 120000
index 8ad2b8fd0c..0000000000
--- a/Lang/Ballerina/Loops-For
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-For/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Loops-For-with-a-specified-step b/Lang/Ballerina/Loops-For-with-a-specified-step
deleted file mode 120000
index cc892dc7f2..0000000000
--- a/Lang/Ballerina/Loops-For-with-a-specified-step
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-For-with-a-specified-step/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Loops-Foreach b/Lang/Ballerina/Loops-Foreach
deleted file mode 120000
index f819fadabe..0000000000
--- a/Lang/Ballerina/Loops-Foreach
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Foreach/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Loops-Increment-loop-index-within-loop-body b/Lang/Ballerina/Loops-Increment-loop-index-within-loop-body
deleted file mode 120000
index 1c9b81a58a..0000000000
--- a/Lang/Ballerina/Loops-Increment-loop-index-within-loop-body
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Increment-loop-index-within-loop-body/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Loops-Infinite b/Lang/Ballerina/Loops-Infinite
deleted file mode 120000
index 312369ce48..0000000000
--- a/Lang/Ballerina/Loops-Infinite
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Infinite/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Loops-N-plus-one-half b/Lang/Ballerina/Loops-N-plus-one-half
deleted file mode 120000
index 220ecbad7f..0000000000
--- a/Lang/Ballerina/Loops-N-plus-one-half
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-N-plus-one-half/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Loops-Nested b/Lang/Ballerina/Loops-Nested
deleted file mode 120000
index f32c9a3c17..0000000000
--- a/Lang/Ballerina/Loops-Nested
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Nested/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Loops-With-multiple-ranges b/Lang/Ballerina/Loops-With-multiple-ranges
deleted file mode 120000
index 2fad29a9f9..0000000000
--- a/Lang/Ballerina/Loops-With-multiple-ranges
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-With-multiple-ranges/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Loops-Wrong-ranges b/Lang/Ballerina/Loops-Wrong-ranges
deleted file mode 120000
index 6c8ada2aa7..0000000000
--- a/Lang/Ballerina/Loops-Wrong-ranges
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Wrong-ranges/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Palindrome-detection b/Lang/Ballerina/Palindrome-detection
deleted file mode 120000
index 981d11f5cd..0000000000
--- a/Lang/Ballerina/Palindrome-detection
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Palindrome-detection/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Repeat-a-string b/Lang/Ballerina/Repeat-a-string
deleted file mode 120000
index 83134ceac0..0000000000
--- a/Lang/Ballerina/Repeat-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Repeat-a-string/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Reverse-a-string b/Lang/Ballerina/Reverse-a-string
deleted file mode 120000
index f4e8e73220..0000000000
--- a/Lang/Ballerina/Reverse-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Reverse-a-string/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Rot-13 b/Lang/Ballerina/Rot-13
deleted file mode 120000
index d33ecacc03..0000000000
--- a/Lang/Ballerina/Rot-13
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Rot-13/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Sieve-of-Eratosthenes b/Lang/Ballerina/Sieve-of-Eratosthenes
deleted file mode 120000
index 4cae2a9d5e..0000000000
--- a/Lang/Ballerina/Sieve-of-Eratosthenes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sieve-of-Eratosthenes/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Stack b/Lang/Ballerina/Stack
deleted file mode 120000
index e073045735..0000000000
--- a/Lang/Ballerina/Stack
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Stack/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Statistics-Basic b/Lang/Ballerina/Statistics-Basic
deleted file mode 120000
index 7ef892b782..0000000000
--- a/Lang/Ballerina/Statistics-Basic
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Statistics-Basic/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/String-case b/Lang/Ballerina/String-case
deleted file mode 120000
index 091d633ac8..0000000000
--- a/Lang/Ballerina/String-case
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-case/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/String-concatenation b/Lang/Ballerina/String-concatenation
deleted file mode 120000
index a5a366085e..0000000000
--- a/Lang/Ballerina/String-concatenation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-concatenation/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/String-length b/Lang/Ballerina/String-length
deleted file mode 120000
index 0cdb126aa0..0000000000
--- a/Lang/Ballerina/String-length
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-length/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Sum-and-product-of-an-array b/Lang/Ballerina/Sum-and-product-of-an-array
deleted file mode 120000
index a5ba732cde..0000000000
--- a/Lang/Ballerina/Sum-and-product-of-an-array
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sum-and-product-of-an-array/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Sum-of-a-series b/Lang/Ballerina/Sum-of-a-series
deleted file mode 120000
index 27da1c4b06..0000000000
--- a/Lang/Ballerina/Sum-of-a-series
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sum-of-a-series/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Sum-of-squares b/Lang/Ballerina/Sum-of-squares
deleted file mode 120000
index 9f1e366796..0000000000
--- a/Lang/Ballerina/Sum-of-squares
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sum-of-squares/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Tokenize-a-string b/Lang/Ballerina/Tokenize-a-string
deleted file mode 120000
index d9a64c3a3e..0000000000
--- a/Lang/Ballerina/Tokenize-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tokenize-a-string/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Towers-of-Hanoi b/Lang/Ballerina/Towers-of-Hanoi
deleted file mode 120000
index 81bf7985bd..0000000000
--- a/Lang/Ballerina/Towers-of-Hanoi
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Towers-of-Hanoi/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Truncatable-primes b/Lang/Ballerina/Truncatable-primes
deleted file mode 120000
index 044dcb5d58..0000000000
--- a/Lang/Ballerina/Truncatable-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Truncatable-primes/Ballerina
\ No newline at end of file
diff --git a/Lang/Ballerina/Unicode-variable-names b/Lang/Ballerina/Unicode-variable-names
deleted file mode 120000
index 7f61255815..0000000000
--- a/Lang/Ballerina/Unicode-variable-names
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Unicode-variable-names/Ballerina
\ No newline at end of file
diff --git a/Lang/Basic09/00-LANG.txt b/Lang/Basic09/00-LANG.txt
index fa600ca16b..16853881ce 100644
--- a/Lang/Basic09/00-LANG.txt
+++ b/Lang/Basic09/00-LANG.txt
@@ -1,3 +1 @@
-{{language|Basic09}}
-{{implementation|BASIC}}
-Basic09 is a dialect of BASIC created by Microware Systems Corporation in 1978 for use on the OS-9 operating system designed for the Motorola 6809 microporcessor. There is a version for OS-9/68000, "Microware BASIC", identical save that the INTEGER type is a four-byte signed integer instead of two-byte and REAL is IEEE 754 double precision rather than the five-byte format in the original version.
\ No newline at end of file
+{{language|Basic09}}Basic09 is a dialect of BASIC created by Microware Systems Corporation in 1978 for use on the OS-9 operating system designed for the Motorola 6809 microporcessor. There is a version for OS-9/68000, "Microware BASIC", identical save that the INTEGER type is a four-byte signed integer instead of two-byte and REAL is IEEE 754 double precision rather than the five-byte format in the original version.
\ No newline at end of file
diff --git a/Lang/Batch-File/00-LANG.txt b/Lang/Batch-File/00-LANG.txt
index 06b0c85598..1bcc82760d 100644
--- a/Lang/Batch-File/00-LANG.txt
+++ b/Lang/Batch-File/00-LANG.txt
@@ -1,3 +1,3 @@
-{{language|Batch File}}'''Batch file''', sometimes just called Batch, is the common name for the scripting language for [[Microsoft]] command line shells, such as COMMAND.COM (in [[MS-DOS]]), and CMD.EXE (in Windows). They typically have either the .BAT or .CMD extension. Due to the association of batch files with MS-DOS in the public consciousness, sometimes this language is called the MS-DOS programming language even when used on modern versions of Windows, though this usage of the term is not technically correct.
+{{language|Batch File}}'''Batch files''' are the scripting languages for [[Microsoft]] command line shells, such as [[MS-DOS]], COMMAND.EXE, and CMD.EXE. They typically have either the .BAT or .CMD extension.
The "batch files" written in the Batch File language are not to be confused with the "bash scripts" written in the [[bash | bash programming language]] for the [[UNIX Shell]].
\ No newline at end of file
diff --git a/Lang/Batch-File/Base64-decode-data b/Lang/Batch-File/Base64-decode-data
deleted file mode 120000
index ec2f53b5db..0000000000
--- a/Lang/Batch-File/Base64-decode-data
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Base64-decode-data/Batch-File
\ No newline at end of file
diff --git a/Lang/Batch-File/Call-a-foreign-language-function b/Lang/Batch-File/Call-a-foreign-language-function
deleted file mode 120000
index 82bd97e4ca..0000000000
--- a/Lang/Batch-File/Call-a-foreign-language-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Call-a-foreign-language-function/Batch-File
\ No newline at end of file
diff --git a/Lang/Batch-File/Check-input-device-is-a-terminal b/Lang/Batch-File/Check-input-device-is-a-terminal
deleted file mode 120000
index e3cbbd272b..0000000000
--- a/Lang/Batch-File/Check-input-device-is-a-terminal
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Check-input-device-is-a-terminal/Batch-File
\ No newline at end of file
diff --git a/Lang/Batch-File/Check-output-device-is-a-terminal b/Lang/Batch-File/Check-output-device-is-a-terminal
deleted file mode 120000
index 3d54ec8254..0000000000
--- a/Lang/Batch-File/Check-output-device-is-a-terminal
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Check-output-device-is-a-terminal/Batch-File
\ No newline at end of file
diff --git a/Lang/Batch-File/Chinese-zodiac b/Lang/Batch-File/Chinese-zodiac
deleted file mode 120000
index c2c7ae27f9..0000000000
--- a/Lang/Batch-File/Chinese-zodiac
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Chinese-zodiac/Batch-File
\ No newline at end of file
diff --git a/Lang/Batch-File/Copy-stdin-to-stdout b/Lang/Batch-File/Copy-stdin-to-stdout
deleted file mode 120000
index ec25d70662..0000000000
--- a/Lang/Batch-File/Copy-stdin-to-stdout
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Copy-stdin-to-stdout/Batch-File
\ No newline at end of file
diff --git a/Lang/Batch-File/Exponentiation-operator b/Lang/Batch-File/Exponentiation-operator
deleted file mode 120000
index 93dda3ab18..0000000000
--- a/Lang/Batch-File/Exponentiation-operator
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Exponentiation-operator/Batch-File
\ No newline at end of file
diff --git a/Lang/Batch-File/Flatten-a-list b/Lang/Batch-File/Flatten-a-list
deleted file mode 120000
index bdac6d0d38..0000000000
--- a/Lang/Batch-File/Flatten-a-list
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Flatten-a-list/Batch-File
\ No newline at end of file
diff --git a/Lang/Batch-File/Handle-a-signal b/Lang/Batch-File/Handle-a-signal
deleted file mode 120000
index 5dfc7c6a7d..0000000000
--- a/Lang/Batch-File/Handle-a-signal
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Handle-a-signal/Batch-File
\ No newline at end of file
diff --git a/Lang/Batch-File/Hello-world-Web-server b/Lang/Batch-File/Hello-world-Web-server
deleted file mode 120000
index ef5c7e0f66..0000000000
--- a/Lang/Batch-File/Hello-world-Web-server
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Web-server/Batch-File
\ No newline at end of file
diff --git a/Lang/Batch-File/Input-loop b/Lang/Batch-File/Input-loop
new file mode 120000
index 0000000000..a2a4a9b473
--- /dev/null
+++ b/Lang/Batch-File/Input-loop
@@ -0,0 +1 @@
+../../Task/Input-loop/Batch-File
\ No newline at end of file
diff --git a/Lang/Batch-File/Keyboard-input-Keypress-check b/Lang/Batch-File/Keyboard-input-Keypress-check
deleted file mode 120000
index 5711a16a1c..0000000000
--- a/Lang/Batch-File/Keyboard-input-Keypress-check
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Keyboard-input-Keypress-check/Batch-File
\ No newline at end of file
diff --git a/Lang/Batch-File/Long-year b/Lang/Batch-File/Long-year
deleted file mode 120000
index 2a90ddff12..0000000000
--- a/Lang/Batch-File/Long-year
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Long-year/Batch-File
\ No newline at end of file
diff --git a/Lang/Batch-File/Make-directory-path b/Lang/Batch-File/Make-directory-path
deleted file mode 120000
index 057c573752..0000000000
--- a/Lang/Batch-File/Make-directory-path
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Make-directory-path/Batch-File
\ No newline at end of file
diff --git a/Lang/Batch-File/Primality-by-trial-division b/Lang/Batch-File/Primality-by-trial-division
deleted file mode 120000
index 5a253da7c4..0000000000
--- a/Lang/Batch-File/Primality-by-trial-division
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Primality-by-trial-division/Batch-File
\ No newline at end of file
diff --git a/Lang/Batch-File/Read-a-configuration-file b/Lang/Batch-File/Read-a-configuration-file
deleted file mode 120000
index 163a19758c..0000000000
--- a/Lang/Batch-File/Read-a-configuration-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Read-a-configuration-file/Batch-File
\ No newline at end of file
diff --git a/Lang/Batch-File/Read-entire-file b/Lang/Batch-File/Read-entire-file
deleted file mode 120000
index a4d22dbb49..0000000000
--- a/Lang/Batch-File/Read-entire-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Read-entire-file/Batch-File
\ No newline at end of file
diff --git a/Lang/Batch-File/SHA-1 b/Lang/Batch-File/SHA-1
deleted file mode 120000
index 7b80d0565c..0000000000
--- a/Lang/Batch-File/SHA-1
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/SHA-1/Batch-File
\ No newline at end of file
diff --git a/Lang/Batch-File/SHA-256 b/Lang/Batch-File/SHA-256
deleted file mode 120000
index 88132ba441..0000000000
--- a/Lang/Batch-File/SHA-256
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/SHA-256/Batch-File
\ No newline at end of file
diff --git a/Lang/Batch-File/Simple-windowed-application b/Lang/Batch-File/Simple-windowed-application
deleted file mode 120000
index 98ffbccd11..0000000000
--- a/Lang/Batch-File/Simple-windowed-application
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Simple-windowed-application/Batch-File
\ No newline at end of file
diff --git a/Lang/Batch-File/Sort-an-integer-array b/Lang/Batch-File/Sort-an-integer-array
deleted file mode 120000
index 9e7fd40b38..0000000000
--- a/Lang/Batch-File/Sort-an-integer-array
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-an-integer-array/Batch-File
\ No newline at end of file
diff --git a/Lang/Batch-File/Strip-a-set-of-characters-from-a-string b/Lang/Batch-File/Strip-a-set-of-characters-from-a-string
deleted file mode 120000
index bb3a4f27fc..0000000000
--- a/Lang/Batch-File/Strip-a-set-of-characters-from-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strip-a-set-of-characters-from-a-string/Batch-File
\ No newline at end of file
diff --git a/Lang/Batch-File/Temperature-conversion b/Lang/Batch-File/Temperature-conversion
deleted file mode 120000
index a928fb35a8..0000000000
--- a/Lang/Batch-File/Temperature-conversion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Temperature-conversion/Batch-File
\ No newline at end of file
diff --git a/Lang/Batch-File/Terminal-control-Hiding-the-cursor b/Lang/Batch-File/Terminal-control-Hiding-the-cursor
deleted file mode 120000
index 55e8dcde29..0000000000
--- a/Lang/Batch-File/Terminal-control-Hiding-the-cursor
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Terminal-control-Hiding-the-cursor/Batch-File
\ No newline at end of file
diff --git a/Lang/Batch-File/Terminal-control-Preserve-screen b/Lang/Batch-File/Terminal-control-Preserve-screen
deleted file mode 120000
index 8bc69bb473..0000000000
--- a/Lang/Batch-File/Terminal-control-Preserve-screen
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Terminal-control-Preserve-screen/Batch-File
\ No newline at end of file
diff --git a/Lang/Batch-File/Terminal-control-Unicode-output b/Lang/Batch-File/Terminal-control-Unicode-output
deleted file mode 120000
index d9cf45a55e..0000000000
--- a/Lang/Batch-File/Terminal-control-Unicode-output
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Terminal-control-Unicode-output/Batch-File
\ No newline at end of file
diff --git a/Lang/Batch-File/Truncate-a-file b/Lang/Batch-File/Truncate-a-file
deleted file mode 120000
index 18bcf16da0..0000000000
--- a/Lang/Batch-File/Truncate-a-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Truncate-a-file/Batch-File
\ No newline at end of file
diff --git a/Lang/Batch-File/URL-decoding b/Lang/Batch-File/URL-decoding
deleted file mode 120000
index 4081a1f375..0000000000
--- a/Lang/Batch-File/URL-decoding
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/URL-decoding/Batch-File
\ No newline at end of file
diff --git a/Lang/Batch-File/URL-encoding b/Lang/Batch-File/URL-encoding
deleted file mode 120000
index 5609bac01d..0000000000
--- a/Lang/Batch-File/URL-encoding
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/URL-encoding/Batch-File
\ No newline at end of file
diff --git a/Lang/Batch-File/Unicode-variable-names b/Lang/Batch-File/Unicode-variable-names
deleted file mode 120000
index 04bbb2a08c..0000000000
--- a/Lang/Batch-File/Unicode-variable-names
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Unicode-variable-names/Batch-File
\ No newline at end of file
diff --git a/Lang/Batch-File/Unix-ls b/Lang/Batch-File/Unix-ls
deleted file mode 120000
index d789240aba..0000000000
--- a/Lang/Batch-File/Unix-ls
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Unix-ls/Batch-File
\ No newline at end of file
diff --git a/Lang/Batch-File/Window-creation b/Lang/Batch-File/Window-creation
deleted file mode 120000
index 733ac1868e..0000000000
--- a/Lang/Batch-File/Window-creation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Window-creation/Batch-File
\ No newline at end of file
diff --git a/Lang/Batch-File/Write-entire-file b/Lang/Batch-File/Write-entire-file
deleted file mode 120000
index ace14aef52..0000000000
--- a/Lang/Batch-File/Write-entire-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Write-entire-file/Batch-File
\ No newline at end of file
diff --git a/Lang/Bc/Anti-primes b/Lang/Bc/Anti-primes
deleted file mode 120000
index 3d900bc4e9..0000000000
--- a/Lang/Bc/Anti-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Anti-primes/Bc
\ No newline at end of file
diff --git a/Lang/Bc/Arithmetic-derivative b/Lang/Bc/Arithmetic-derivative
deleted file mode 120000
index 3ff888839e..0000000000
--- a/Lang/Bc/Arithmetic-derivative
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-derivative/Bc
\ No newline at end of file
diff --git a/Lang/Bc/Department-numbers b/Lang/Bc/Department-numbers
deleted file mode 120000
index 0e2c9bd91f..0000000000
--- a/Lang/Bc/Department-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Department-numbers/Bc
\ No newline at end of file
diff --git a/Lang/Bc/Fairshare-between-two-and-more b/Lang/Bc/Fairshare-between-two-and-more
deleted file mode 120000
index f5c1a3523e..0000000000
--- a/Lang/Bc/Fairshare-between-two-and-more
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fairshare-between-two-and-more/Bc
\ No newline at end of file
diff --git a/Lang/Bc/Miller-Rabin-primality-test b/Lang/Bc/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..1ae2fd8406
--- /dev/null
+++ b/Lang/Bc/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/Bc
\ No newline at end of file
diff --git a/Lang/Bc/Sieve-of-Eratosthenes b/Lang/Bc/Sieve-of-Eratosthenes
deleted file mode 120000
index de34a684a4..0000000000
--- a/Lang/Bc/Sieve-of-Eratosthenes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sieve-of-Eratosthenes/Bc
\ No newline at end of file
diff --git a/Lang/Bc/Variables b/Lang/Bc/Variables
deleted file mode 120000
index 03f47bea63..0000000000
--- a/Lang/Bc/Variables
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Variables/Bc
\ No newline at end of file
diff --git a/Lang/Beeswax/00-LANG.txt b/Lang/Beeswax/00-LANG.txt
index c131bf7731..bea56d7b6b 100644
--- a/Lang/Beeswax/00-LANG.txt
+++ b/Lang/Beeswax/00-LANG.txt
@@ -25,7 +25,7 @@ All data in the local and global stacks are unsigned 64-bit integers, output as
== More information ==
-* [http://esolangs.org/wiki/beeswax Esoteric languages wiki entry]
+* [[eso:Beeswax|Esoteric languages wiki entry]]
== Reference implementation, example programs and complete language specification ==
diff --git a/Lang/Berkeley-Logo/00-LANG.txt b/Lang/Berkeley-Logo/00-LANG.txt
deleted file mode 100644
index 06b91b5045..0000000000
--- a/Lang/Berkeley-Logo/00-LANG.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-{{language|Berkeley Logo}}
-{{language programming paradigm|Procedural}}
-{{implementation|Logo}}
-'''Berkeley Logo''' (or '''UCBLogo''') is a portable implementation of the Logo language, maintained by Brian Harvey. He has also written a series of university textbooks using this language, ''Computer Science Logo Style''.
-
-==External links==
-* [http://www.cs.berkeley.edu/~bh/logo.html Home page]
-* [https://github.com/jrincayc/ucblogo-code further UCBLogo development]
\ No newline at end of file
diff --git a/Lang/Berkeley-Logo/00-META.yaml b/Lang/Berkeley-Logo/00-META.yaml
deleted file mode 100644
index 9eabccce73..0000000000
--- a/Lang/Berkeley-Logo/00-META.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-from: http://rosettacode.org/wiki/Category:Berkeley_Logo
diff --git a/Lang/Berkeley-Logo/Abundant-deficient-and-perfect-number-classifications b/Lang/Berkeley-Logo/Abundant-deficient-and-perfect-number-classifications
deleted file mode 120000
index 04fb2b777b..0000000000
--- a/Lang/Berkeley-Logo/Abundant-deficient-and-perfect-number-classifications
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abundant-deficient-and-perfect-number-classifications/Berkeley-Logo
\ No newline at end of file
diff --git a/Lang/Berkeley-Logo/Associative-array-Creation b/Lang/Berkeley-Logo/Associative-array-Creation
deleted file mode 120000
index 4d2050642e..0000000000
--- a/Lang/Berkeley-Logo/Associative-array-Creation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Associative-array-Creation/Berkeley-Logo
\ No newline at end of file
diff --git a/Lang/Berkeley-Logo/Babbage-problem b/Lang/Berkeley-Logo/Babbage-problem
deleted file mode 120000
index aa1e4e41aa..0000000000
--- a/Lang/Berkeley-Logo/Babbage-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Babbage-problem/Berkeley-Logo
\ No newline at end of file
diff --git a/Lang/Berkeley-Logo/Bell-numbers b/Lang/Berkeley-Logo/Bell-numbers
deleted file mode 120000
index 77a9bcb26c..0000000000
--- a/Lang/Berkeley-Logo/Bell-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bell-numbers/Berkeley-Logo
\ No newline at end of file
diff --git a/Lang/Berkeley-Logo/Formatted-numeric-output b/Lang/Berkeley-Logo/Formatted-numeric-output
deleted file mode 120000
index 85a340c7e0..0000000000
--- a/Lang/Berkeley-Logo/Formatted-numeric-output
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Formatted-numeric-output/Berkeley-Logo
\ No newline at end of file
diff --git a/Lang/Binary-Lambda-Calculus/00-LANG.txt b/Lang/Binary-Lambda-Calculus/00-LANG.txt
index 694f9a9437..3f502204f1 100644
--- a/Lang/Binary-Lambda-Calculus/00-LANG.txt
+++ b/Lang/Binary-Lambda-Calculus/00-LANG.txt
@@ -5,16 +5,7 @@
}}
{{language programming paradigm|functional}}
'''Binary Lambda Calculus''' is a minimal, pure, functional, esoteric language based on lambda calculus. [[provides::Capability:First class functions| ]]
-
==External links==
* https://tromp.github.io/cl/cl.html
* https://www.ioccc.org/2012/tromp/hint.html
-* https://gist.github.com/tromp/86b3184f852f65bfb814e3ab0987d861
-
-Some implementations of BLC:
-* [https://www.ioccc.org/2012/tromp/hint.html original tromp's implementation] for IOCCC, in pure ANSI C
-* [https://github.com/tromp/AIT tromp's AIT], a project utilizing BLC for Information Theory research. Also includes a Haskell->BLC compiler and several other implementations
-* [https://codeberg.org/aartaka/cl-blc aartaka's cl-blc], implementing BLC in Lisp
-
-==To do==
-[[Tasks not implemented in Binary Lambda Calculus]]
\ No newline at end of file
+* https://gist.github.com/tromp/86b3184f852f65bfb814e3ab0987d861
\ No newline at end of file
diff --git a/Lang/Binary-Lambda-Calculus/A+B b/Lang/Binary-Lambda-Calculus/A+B
deleted file mode 120000
index 1a7c10c298..0000000000
--- a/Lang/Binary-Lambda-Calculus/A+B
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/A+B/Binary-Lambda-Calculus
\ No newline at end of file
diff --git a/Lang/Binary-Lambda-Calculus/Binary-digits b/Lang/Binary-Lambda-Calculus/Binary-digits
deleted file mode 120000
index f74ad898bd..0000000000
--- a/Lang/Binary-Lambda-Calculus/Binary-digits
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Binary-digits/Binary-Lambda-Calculus
\ No newline at end of file
diff --git a/Lang/Binary-Lambda-Calculus/Church-numerals b/Lang/Binary-Lambda-Calculus/Church-numerals
deleted file mode 120000
index 45f7ab14bd..0000000000
--- a/Lang/Binary-Lambda-Calculus/Church-numerals
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Church-numerals/Binary-Lambda-Calculus
\ No newline at end of file
diff --git a/Lang/Binary-Lambda-Calculus/Ethiopian-multiplication b/Lang/Binary-Lambda-Calculus/Ethiopian-multiplication
deleted file mode 120000
index 45465fad0c..0000000000
--- a/Lang/Binary-Lambda-Calculus/Ethiopian-multiplication
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ethiopian-multiplication/Binary-Lambda-Calculus
\ No newline at end of file
diff --git a/Lang/Binary-Lambda-Calculus/Hailstone-sequence b/Lang/Binary-Lambda-Calculus/Hailstone-sequence
deleted file mode 120000
index 8bb334bdb3..0000000000
--- a/Lang/Binary-Lambda-Calculus/Hailstone-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hailstone-sequence/Binary-Lambda-Calculus
\ No newline at end of file
diff --git a/Lang/Binary-Lambda-Calculus/Sorting-algorithms-Merge-sort b/Lang/Binary-Lambda-Calculus/Sorting-algorithms-Merge-sort
deleted file mode 120000
index 6a9a8bf4e0..0000000000
--- a/Lang/Binary-Lambda-Calculus/Sorting-algorithms-Merge-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Merge-sort/Binary-Lambda-Calculus
\ No newline at end of file
diff --git a/Lang/Blade/00-LANG.txt b/Lang/Blade/00-LANG.txt
index 71d6c9cdba..f18c210bc3 100644
--- a/Lang/Blade/00-LANG.txt
+++ b/Lang/Blade/00-LANG.txt
@@ -6,13 +6,25 @@
|parampass=value
|LCT=yes}}{{language programming paradigm|Object-oriented}}{{language programming paradigm|functional}}
-'''Blade''' is a modern general-purpose programming language focused on enterprise Web, IoT, and secure application development. '''Blade''' offers a comprehensive set of tools and libraries out of the box leading to reduced reliance on third-party packages.
+'''Blade''' is a simple, fast, clean and dynamic language that allows you to develop complex applications quickly. Blade emphasises algorithm over syntax and for this reason, it has a very small but powerful syntax set with a very natural feel.
-'''Blade''' comes equipped with an integrated package management system, simplifying the management of both internal and external dependencies and a self-hostable repository server making it ideal for private organisational and personal use. Its intuitive syntax and gentle learning curve ensure an accessible experience for developers of all skill levels. Leveraging the best features from JavaScript, Python, Ruby, and Dart, '''Blade''' provides a familiar and robust ecosystem that enables developers to harness the strengths of these languages effortlessly.
+If you’ve ever had experience with a compiled language (e.g. [[C]]/[[C++]], [[Java]], etc), then one thing you’ll quickly notice (at least I did) was how much the whole process of write-compile-run-debug can be tedious and get in the way of creative programming and sometimes you even forget that mind-blowing algorithm you were going to write and take over the world in the whole process of compiling.
-While '''Blade''' focuses on Web and IoT, it is also great for general software development.
+Sometimes, you just want to automate a few tasks, for example, I have a simple program to always remind me to get away from my laptop and eat something (you know how it is) and yet another one to suggest food for me. Do you find yourself needing this often? Do you know why you haven’t written it? Get out of your head, you are writing a compiled language! Compiling takes longer than the time it will take you to convince yourself that you need to eat.
+
+At other times, you have written this amazing program and you want users to be able to control it using a simple scripting language. I know… I know… there are many interpreted languages out there that will do the job just fine. Well… you still have one problem. Your users aren’t going to remember all the crazy going on in many of them (Yes [[Lua]]! I’m staring at you. What you gonna do about it?)
+
+Other times, we kind of find a very good solution to our problem in languages like [[Python]] (I must confess, even '''Blade''' did learn a lot of things from it), but the structure of such languages usually creates a new overhead in writing complex programs. It’s really difficult keeping a tab of indentations in such languages especially when you are not in a GUI IDE environment. I tried to work [[Python]] in nano, but man… it wasn’t easy.
+
+If you are feeling me, then Blade is just right for you.
+
+Blade is a simple language that has tried very much to learn from the mistake and successes of its predecessors.
+
+Blade is interpreted and simple like [[Python]] but with a more generic [[C]]-like syntax and a ridiculously simple Object-orientation similar to [[Dart]] and the granularity of [[JavaScript]] while still maintaining a very minimal syntax and keywords when compared to all of them.
+
+'''Blade is designed to be a memorizable language and the entire “language” can be learned in one sitting. However, Blade is as complete and powerful as any language can be and can be applied in the field of web, mobile, desktop, scientific, academic and research engineering to mention a few.'''
==Links==
-* [https://bladelang.org https://bladelang.org]
+* [https://bladelang.com https://bladelang.com]
* [https://github.com/blade-lang/blade https://github.com/blade-lang/blade]
-* [https://bladelang.org/quick-learn.html Quick Language Introduction]
\ No newline at end of file
+* [https://bladelang.com/quick-learn.html Quick Language Introduction]
\ No newline at end of file
diff --git a/Lang/BlooP/00-LANG.txt b/Lang/BlooP/00-LANG.txt
index d0fc3b449f..61490d18ec 100644
--- a/Lang/BlooP/00-LANG.txt
+++ b/Lang/BlooP/00-LANG.txt
@@ -20,7 +20,7 @@ The best way to explain BlooP is really just to look at some examples, so here a
Find the factorial of N:
-
diff --git a/Lang/BootBASIC/Empty-program b/Lang/BootBASIC/Empty-program
new file mode 120000
index 0000000000..5aaffbd057
--- /dev/null
+++ b/Lang/BootBASIC/Empty-program
@@ -0,0 +1 @@
+../../Task/Empty-program/BootBASIC
\ No newline at end of file
diff --git a/Lang/Bracmat/Miller-Rabin-primality-test b/Lang/Bracmat/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..7c953943cd
--- /dev/null
+++ b/Lang/Bracmat/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/Bracmat
\ No newline at end of file
diff --git a/Lang/Brainf---/00-LANG.txt b/Lang/Brainf---/00-LANG.txt
index d9ca931bf4..7b702b4d45 100644
--- a/Lang/Brainf---/00-LANG.txt
+++ b/Lang/Brainf---/00-LANG.txt
@@ -63,10 +63,10 @@ BUT due to vehement opposition to the name [http://esolangs.org/wiki/Cupid vario
==See also==
* [[Rosetta Code:Brainf***]] ( why some people call it BF :)
* [[RCBF]] - BF interpreters as a Rosetta Code task
-* [https://esolangs.org/wiki/brainfuck_algorithms brainf*** algorithms]
+
==Citations==
-* [https://esolangs.org/wiki/Brainfuck Esoteric languages wiki entry]
+* [[eso:Brainfuck|Esoteric languages wiki entry]]
*[[wp:Brainfuck|Wikipedia entry on Brainf***]]
* [http://dmoz.org/Computers/Programming/Languages/Brainfuck/ DMOZ Brainf*** category]
* [http://www.iwriteiam.nl/Ha_BF.html Brainf*** tutorial]
diff --git a/Lang/Brainf---/Loops-While b/Lang/Brainf---/Loops-While
deleted file mode 120000
index 057717ea5a..0000000000
--- a/Lang/Brainf---/Loops-While
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-While/Brainf---
\ No newline at end of file
diff --git a/Lang/Bruijn/Harmonic-series b/Lang/Bruijn/Harmonic-series
deleted file mode 120000
index b39ae4ae88..0000000000
--- a/Lang/Bruijn/Harmonic-series
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Harmonic-series/Bruijn
\ No newline at end of file
diff --git a/Lang/Bruijn/Towers-of-Hanoi b/Lang/Bruijn/Towers-of-Hanoi
deleted file mode 120000
index 96dafe6af8..0000000000
--- a/Lang/Bruijn/Towers-of-Hanoi
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Towers-of-Hanoi/Bruijn
\ No newline at end of file
diff --git a/Lang/C++/Add-a-variable-to-a-class-instance-at-runtime b/Lang/C++/Add-a-variable-to-a-class-instance-at-runtime
deleted file mode 120000
index 61888079c6..0000000000
--- a/Lang/C++/Add-a-variable-to-a-class-instance-at-runtime
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Add-a-variable-to-a-class-instance-at-runtime/C++
\ No newline at end of file
diff --git a/Lang/C++/Bioinformatics-base-count b/Lang/C++/Bioinformatics-base-count
new file mode 120000
index 0000000000..e0584bb6b7
--- /dev/null
+++ b/Lang/C++/Bioinformatics-base-count
@@ -0,0 +1 @@
+../../Task/Bioinformatics-base-count/C++
\ No newline at end of file
diff --git a/Lang/C++/Bitcoin-address-validation b/Lang/C++/Bitcoin-address-validation
deleted file mode 120000
index fdb6fa9bf8..0000000000
--- a/Lang/C++/Bitcoin-address-validation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bitcoin-address-validation/C++
\ No newline at end of file
diff --git a/Lang/C++/Bitcoin-public-point-to-address b/Lang/C++/Bitcoin-public-point-to-address
deleted file mode 120000
index 1229c8b30f..0000000000
--- a/Lang/C++/Bitcoin-public-point-to-address
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bitcoin-public-point-to-address/C++
\ No newline at end of file
diff --git a/Lang/C++/Bitwise-IO b/Lang/C++/Bitwise-IO
deleted file mode 120000
index 0612736bad..0000000000
--- a/Lang/C++/Bitwise-IO
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bitwise-IO/C++
\ No newline at end of file
diff --git a/Lang/C++/Catmull-Clark-subdivision-surface b/Lang/C++/Catmull-Clark-subdivision-surface
deleted file mode 120000
index dbaa0ac83b..0000000000
--- a/Lang/C++/Catmull-Clark-subdivision-surface
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Catmull-Clark-subdivision-surface/C++
\ No newline at end of file
diff --git a/Lang/C++/Commatizing-numbers b/Lang/C++/Commatizing-numbers
deleted file mode 120000
index 96b27f445d..0000000000
--- a/Lang/C++/Commatizing-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Commatizing-numbers/C++
\ No newline at end of file
diff --git a/Lang/C++/Compare-sorting-algorithms-performance b/Lang/C++/Compare-sorting-algorithms-performance
deleted file mode 120000
index 8616fdb726..0000000000
--- a/Lang/C++/Compare-sorting-algorithms-performance
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compare-sorting-algorithms-performance/C++
\ No newline at end of file
diff --git a/Lang/C++/Compiler-virtual-machine-interpreter b/Lang/C++/Compiler-virtual-machine-interpreter
deleted file mode 120000
index 94f3cd637b..0000000000
--- a/Lang/C++/Compiler-virtual-machine-interpreter
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compiler-virtual-machine-interpreter/C++
\ No newline at end of file
diff --git a/Lang/C++/Currency b/Lang/C++/Currency
deleted file mode 120000
index ae0e8d6190..0000000000
--- a/Lang/C++/Currency
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Currency/C++
\ No newline at end of file
diff --git a/Lang/C++/Deconvolution-2D+ b/Lang/C++/Deconvolution-2D+
deleted file mode 120000
index dba078e8e0..0000000000
--- a/Lang/C++/Deconvolution-2D+
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Deconvolution-2D+/C++
\ No newline at end of file
diff --git a/Lang/C++/Documentation b/Lang/C++/Documentation
deleted file mode 120000
index dd69dde201..0000000000
--- a/Lang/C++/Documentation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Documentation/C++
\ No newline at end of file
diff --git a/Lang/C++/Dominoes b/Lang/C++/Dominoes
deleted file mode 120000
index 5c79b6947b..0000000000
--- a/Lang/C++/Dominoes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dominoes/C++
\ No newline at end of file
diff --git a/Lang/C++/Euclid-Mullin-sequence b/Lang/C++/Euclid-Mullin-sequence
deleted file mode 120000
index f743f51e54..0000000000
--- a/Lang/C++/Euclid-Mullin-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Euclid-Mullin-sequence/C++
\ No newline at end of file
diff --git a/Lang/C++/Extend-your-language b/Lang/C++/Extend-your-language
deleted file mode 120000
index da1eb035c9..0000000000
--- a/Lang/C++/Extend-your-language
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Extend-your-language/C++
\ No newline at end of file
diff --git a/Lang/C++/Extreme-floating-point-values b/Lang/C++/Extreme-floating-point-values
deleted file mode 120000
index 36dd74b460..0000000000
--- a/Lang/C++/Extreme-floating-point-values
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Extreme-floating-point-values/C++
\ No newline at end of file
diff --git a/Lang/C++/Factorial-base-numbers-indexing-permutations-of-a-collection b/Lang/C++/Factorial-base-numbers-indexing-permutations-of-a-collection
deleted file mode 120000
index 9b984d5ea4..0000000000
--- a/Lang/C++/Factorial-base-numbers-indexing-permutations-of-a-collection
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factorial-base-numbers-indexing-permutations-of-a-collection/C++
\ No newline at end of file
diff --git a/Lang/C++/First-class-environments b/Lang/C++/First-class-environments
deleted file mode 120000
index 652816150b..0000000000
--- a/Lang/C++/First-class-environments
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/First-class-environments/C++
\ No newline at end of file
diff --git a/Lang/C++/French-Republican-calendar b/Lang/C++/French-Republican-calendar
deleted file mode 120000
index b361af00f6..0000000000
--- a/Lang/C++/French-Republican-calendar
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/French-Republican-calendar/C++
\ No newline at end of file
diff --git a/Lang/C++/Functional-coverage-tree b/Lang/C++/Functional-coverage-tree
deleted file mode 120000
index 06e1a4bfaf..0000000000
--- a/Lang/C++/Functional-coverage-tree
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Functional-coverage-tree/C++
\ No newline at end of file
diff --git a/Lang/C++/Im-a-software-engineer-get-me-out-of-here b/Lang/C++/Im-a-software-engineer-get-me-out-of-here
deleted file mode 120000
index 7c9de1375f..0000000000
--- a/Lang/C++/Im-a-software-engineer-get-me-out-of-here
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Im-a-software-engineer-get-me-out-of-here/C++
\ No newline at end of file
diff --git a/Lang/C++/MD5-Implementation b/Lang/C++/MD5-Implementation
deleted file mode 120000
index b31aca0e67..0000000000
--- a/Lang/C++/MD5-Implementation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/MD5-Implementation/C++
\ No newline at end of file
diff --git a/Lang/C++/Meissel-Mertens-constant b/Lang/C++/Meissel-Mertens-constant
new file mode 120000
index 0000000000..3242c970c7
--- /dev/null
+++ b/Lang/C++/Meissel-Mertens-constant
@@ -0,0 +1 @@
+../../Task/Meissel-Mertens-constant/C++
\ No newline at end of file
diff --git a/Lang/C++/Miller-Rabin-primality-test b/Lang/C++/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..615ee001e8
--- /dev/null
+++ b/Lang/C++/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/C++
\ No newline at end of file
diff --git a/Lang/C++/Natural-sorting b/Lang/C++/Natural-sorting
deleted file mode 120000
index 221a15ac6d..0000000000
--- a/Lang/C++/Natural-sorting
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Natural-sorting/C++
\ No newline at end of file
diff --git a/Lang/C++/Non-transitive-dice b/Lang/C++/Non-transitive-dice
deleted file mode 120000
index 2c6300fda7..0000000000
--- a/Lang/C++/Non-transitive-dice
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Non-transitive-dice/C++
\ No newline at end of file
diff --git a/Lang/C++/P-Adic-square-roots b/Lang/C++/P-Adic-square-roots
deleted file mode 120000
index a25d0f7d5c..0000000000
--- a/Lang/C++/P-Adic-square-roots
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/P-Adic-square-roots/C++
\ No newline at end of file
diff --git a/Lang/C++/Quaternion-type b/Lang/C++/Quaternion-type
new file mode 120000
index 0000000000..053fd1142a
--- /dev/null
+++ b/Lang/C++/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/C++
\ No newline at end of file
diff --git a/Lang/C++/Rendezvous b/Lang/C++/Rendezvous
deleted file mode 120000
index b1c8af4bea..0000000000
--- a/Lang/C++/Rendezvous
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Rendezvous/C++
\ No newline at end of file
diff --git a/Lang/C++/Sequence:-nth-number-with-exactly-n-divisors b/Lang/C++/Sequence-nth-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/C++/Sequence:-nth-number-with-exactly-n-divisors
rename to Lang/C++/Sequence-nth-number-with-exactly-n-divisors
diff --git a/Lang/C++/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors b/Lang/C++/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
similarity index 100%
rename from Lang/C++/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors
rename to Lang/C++/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
diff --git a/Lang/C++/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/C++/Sequence-smallest-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/C++/Sequence:-smallest-number-with-exactly-n-divisors
rename to Lang/C++/Sequence-smallest-number-with-exactly-n-divisors
diff --git a/Lang/C++/Simple-database b/Lang/C++/Simple-database
deleted file mode 120000
index 60394bf013..0000000000
--- a/Lang/C++/Simple-database
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Simple-database/C++
\ No newline at end of file
diff --git a/Lang/C++/Sort-an-outline-at-every-level b/Lang/C++/Sort-an-outline-at-every-level
deleted file mode 120000
index 5467a50bff..0000000000
--- a/Lang/C++/Sort-an-outline-at-every-level
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-an-outline-at-every-level/C++
\ No newline at end of file
diff --git a/Lang/C++/Sorting-Algorithms-Circle-Sort b/Lang/C++/Sorting-Algorithms-Circle-Sort
new file mode 120000
index 0000000000..91c7b06653
--- /dev/null
+++ b/Lang/C++/Sorting-Algorithms-Circle-Sort
@@ -0,0 +1 @@
+../../Task/Sorting-Algorithms-Circle-Sort/C++
\ No newline at end of file
diff --git a/Lang/C++/Strassens-algorithm b/Lang/C++/Strassens-algorithm
deleted file mode 120000
index 1423f44a39..0000000000
--- a/Lang/C++/Strassens-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strassens-algorithm/C++
\ No newline at end of file
diff --git a/Lang/C++/URL-parser b/Lang/C++/URL-parser
deleted file mode 120000
index c94d78f772..0000000000
--- a/Lang/C++/URL-parser
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/URL-parser/C++
\ No newline at end of file
diff --git a/Lang/C++/UTF-8-encode-and-decode b/Lang/C++/UTF-8-encode-and-decode
deleted file mode 120000
index a3942ee81c..0000000000
--- a/Lang/C++/UTF-8-encode-and-decode
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/UTF-8-encode-and-decode/C++
\ No newline at end of file
diff --git a/Lang/C++/Ukkonen-s-suffix-tree-construction b/Lang/C++/Ukkonen-s-suffix-tree-construction
deleted file mode 120000
index 3dffa49793..0000000000
--- a/Lang/C++/Ukkonen-s-suffix-tree-construction
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ukkonen-s-suffix-tree-construction/C++
\ No newline at end of file
diff --git a/Lang/C++/Update-a-configuration-file b/Lang/C++/Update-a-configuration-file
deleted file mode 120000
index dd78746576..0000000000
--- a/Lang/C++/Update-a-configuration-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Update-a-configuration-file/C++
\ No newline at end of file
diff --git a/Lang/C-sharp/00-LANG.txt b/Lang/C-sharp/00-LANG.txt
index 2ffb00e180..17083312b1 100644
--- a/Lang/C-sharp/00-LANG.txt
+++ b/Lang/C-sharp/00-LANG.txt
@@ -17,10 +17,6 @@
==Citations==
*[[wp:C_Sharp_(programming_language)|Wikipedia:C#]]
-== External links ==
-=== Online editors and compilers ===
-*[https://www.onlinegdb.com/ GDB Online Compiler] (Select C#)
-
{{language programming paradigm|Imperative}}
{{language programming paradigm|Object-oriented}}
{{language programming paradigm|Generic}}
diff --git a/Lang/C-sharp/ADFGVX-cipher b/Lang/C-sharp/ADFGVX-cipher
deleted file mode 120000
index 1bd5856497..0000000000
--- a/Lang/C-sharp/ADFGVX-cipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/ADFGVX-cipher/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/ASCII-art-diagram-converter b/Lang/C-sharp/ASCII-art-diagram-converter
deleted file mode 120000
index a3c0a49ccd..0000000000
--- a/Lang/C-sharp/ASCII-art-diagram-converter
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/ASCII-art-diagram-converter/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Additive-primes b/Lang/C-sharp/Additive-primes
deleted file mode 120000
index d958846baf..0000000000
--- a/Lang/C-sharp/Additive-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Additive-primes/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Arithmetic-derivative b/Lang/C-sharp/Arithmetic-derivative
deleted file mode 120000
index 99fc50446f..0000000000
--- a/Lang/C-sharp/Arithmetic-derivative
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-derivative/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Boyer-Moore-string-search b/Lang/C-sharp/Boyer-Moore-string-search
deleted file mode 120000
index 6d8ebe0502..0000000000
--- a/Lang/C-sharp/Boyer-Moore-string-search
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Boyer-Moore-string-search/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Calkin-Wilf-sequence b/Lang/C-sharp/Calkin-Wilf-sequence
deleted file mode 120000
index 75d6e98750..0000000000
--- a/Lang/C-sharp/Calkin-Wilf-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Calkin-Wilf-sequence/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Camel-case-and-snake-case b/Lang/C-sharp/Camel-case-and-snake-case
deleted file mode 120000
index 0b673ec8ed..0000000000
--- a/Lang/C-sharp/Camel-case-and-snake-case
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Camel-case-and-snake-case/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Cistercian-numerals b/Lang/C-sharp/Cistercian-numerals
deleted file mode 120000
index d482ff0533..0000000000
--- a/Lang/C-sharp/Cistercian-numerals
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cistercian-numerals/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Colorful-numbers b/Lang/C-sharp/Colorful-numbers
deleted file mode 120000
index b35a72c815..0000000000
--- a/Lang/C-sharp/Colorful-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Colorful-numbers/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Continued-fraction-Arithmetic-G-matrix-ng-continued-fraction-n- b/Lang/C-sharp/Continued-fraction-Arithmetic-G-matrix-ng-continued-fraction-n-
deleted file mode 120000
index 2adfbd6635..0000000000
--- a/Lang/C-sharp/Continued-fraction-Arithmetic-G-matrix-ng-continued-fraction-n-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Continued-fraction-Arithmetic-G-matrix-ng-continued-fraction-n-/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Cyclops-numbers b/Lang/C-sharp/Cyclops-numbers
deleted file mode 120000
index c4380e8ccd..0000000000
--- a/Lang/C-sharp/Cyclops-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cyclops-numbers/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Elliptic-Curve-Digital-Signature-Algorithm b/Lang/C-sharp/Elliptic-Curve-Digital-Signature-Algorithm
deleted file mode 120000
index 82412a8f32..0000000000
--- a/Lang/C-sharp/Elliptic-Curve-Digital-Signature-Algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Elliptic-Curve-Digital-Signature-Algorithm/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Execute-a-Markov-algorithm b/Lang/C-sharp/Execute-a-Markov-algorithm
deleted file mode 120000
index fac2e3f425..0000000000
--- a/Lang/C-sharp/Execute-a-Markov-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Execute-a-Markov-algorithm/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Extensible-prime-generator b/Lang/C-sharp/Extensible-prime-generator
deleted file mode 120000
index 1e4636d3bb..0000000000
--- a/Lang/C-sharp/Extensible-prime-generator
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Extensible-prime-generator/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/File-extension-is-in-extensions-list b/Lang/C-sharp/File-extension-is-in-extensions-list
deleted file mode 120000
index caec470709..0000000000
--- a/Lang/C-sharp/File-extension-is-in-extensions-list
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/File-extension-is-in-extensions-list/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Find-if-a-point-is-within-a-triangle b/Lang/C-sharp/Find-if-a-point-is-within-a-triangle
deleted file mode 120000
index 0c9dec87d9..0000000000
--- a/Lang/C-sharp/Find-if-a-point-is-within-a-triangle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Find-if-a-point-is-within-a-triangle/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Gotchas b/Lang/C-sharp/Gotchas
deleted file mode 120000
index c20938cf21..0000000000
--- a/Lang/C-sharp/Gotchas
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Gotchas/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Index-finite-lists-of-positive-integers b/Lang/C-sharp/Index-finite-lists-of-positive-integers
deleted file mode 120000
index 692e611ddc..0000000000
--- a/Lang/C-sharp/Index-finite-lists-of-positive-integers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Index-finite-lists-of-positive-integers/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/K-d-tree b/Lang/C-sharp/K-d-tree
deleted file mode 120000
index 9ea6355b83..0000000000
--- a/Lang/C-sharp/K-d-tree
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/K-d-tree/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Longest-string-challenge b/Lang/C-sharp/Longest-string-challenge
deleted file mode 120000
index bd57b65702..0000000000
--- a/Lang/C-sharp/Longest-string-challenge
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Longest-string-challenge/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/M-bius-function b/Lang/C-sharp/M-bius-function
deleted file mode 120000
index 56f84fb14c..0000000000
--- a/Lang/C-sharp/M-bius-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/M-bius-function/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Miller-Rabin-primality-test b/Lang/C-sharp/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..4d27fefcbd
--- /dev/null
+++ b/Lang/C-sharp/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/P-Adic-numbers-basic b/Lang/C-sharp/P-Adic-numbers-basic
deleted file mode 120000
index 564565afb6..0000000000
--- a/Lang/C-sharp/P-Adic-numbers-basic
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/P-Adic-numbers-basic/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Periodic-table b/Lang/C-sharp/Periodic-table
deleted file mode 120000
index 97d676b17d..0000000000
--- a/Lang/C-sharp/Periodic-table
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Periodic-table/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Quaternion-type b/Lang/C-sharp/Quaternion-type
new file mode 120000
index 0000000000..53c4bd6185
--- /dev/null
+++ b/Lang/C-sharp/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Reflection-Get-source b/Lang/C-sharp/Reflection-Get-source
deleted file mode 120000
index a8b2f45e4c..0000000000
--- a/Lang/C-sharp/Reflection-Get-source
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Reflection-Get-source/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/C-sharp/Sequence:-smallest-number-with-exactly-n-divisors
deleted file mode 120000
index 71508d1c44..0000000000
--- a/Lang/C-sharp/Sequence:-smallest-number-with-exactly-n-divisors
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sequence:-smallest-number-with-exactly-n-divisors/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Sorting-Algorithms-Circle-Sort b/Lang/C-sharp/Sorting-Algorithms-Circle-Sort
new file mode 120000
index 0000000000..6f1414c420
--- /dev/null
+++ b/Lang/C-sharp/Sorting-Algorithms-Circle-Sort
@@ -0,0 +1 @@
+../../Task/Sorting-Algorithms-Circle-Sort/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Square-free-integers b/Lang/C-sharp/Square-free-integers
deleted file mode 120000
index 6cabcf20b3..0000000000
--- a/Lang/C-sharp/Square-free-integers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Square-free-integers/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Strassens-algorithm b/Lang/C-sharp/Strassens-algorithm
deleted file mode 120000
index 45fd91dfa9..0000000000
--- a/Lang/C-sharp/Strassens-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strassens-algorithm/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Summarize-primes b/Lang/C-sharp/Summarize-primes
deleted file mode 120000
index de1b22714d..0000000000
--- a/Lang/C-sharp/Summarize-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Summarize-primes/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Tau-function b/Lang/C-sharp/Tau-function
deleted file mode 120000
index aa9069413d..0000000000
--- a/Lang/C-sharp/Tau-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tau-function/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Tau-number b/Lang/C-sharp/Tau-number
deleted file mode 120000
index 0980d5ce28..0000000000
--- a/Lang/C-sharp/Tau-number
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tau-number/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Tree-from-nesting-levels b/Lang/C-sharp/Tree-from-nesting-levels
deleted file mode 120000
index e46b1553ea..0000000000
--- a/Lang/C-sharp/Tree-from-nesting-levels
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tree-from-nesting-levels/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Ultra-useful-primes b/Lang/C-sharp/Ultra-useful-primes
deleted file mode 120000
index 2258e0373a..0000000000
--- a/Lang/C-sharp/Ultra-useful-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ultra-useful-primes/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Variable-declaration-reset b/Lang/C-sharp/Variable-declaration-reset
deleted file mode 120000
index ec0809da88..0000000000
--- a/Lang/C-sharp/Variable-declaration-reset
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Variable-declaration-reset/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Vogels-approximation-method b/Lang/C-sharp/Vogels-approximation-method
deleted file mode 120000
index bb638d067a..0000000000
--- a/Lang/C-sharp/Vogels-approximation-method
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Vogels-approximation-method/C-sharp
\ No newline at end of file
diff --git a/Lang/C-sharp/Yellowstone-sequence b/Lang/C-sharp/Yellowstone-sequence
deleted file mode 120000
index 793ce587ba..0000000000
--- a/Lang/C-sharp/Yellowstone-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Yellowstone-sequence/C-sharp
\ No newline at end of file
diff --git a/Lang/C/Achilles-numbers b/Lang/C/Achilles-numbers
deleted file mode 120000
index 5c3326676b..0000000000
--- a/Lang/C/Achilles-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Achilles-numbers/C
\ No newline at end of file
diff --git a/Lang/C/Bioinformatics-base-count b/Lang/C/Bioinformatics-base-count
new file mode 120000
index 0000000000..4819495149
--- /dev/null
+++ b/Lang/C/Bioinformatics-base-count
@@ -0,0 +1 @@
+../../Task/Bioinformatics-base-count/C
\ No newline at end of file
diff --git a/Lang/C/Color-wheel b/Lang/C/Color-wheel
deleted file mode 120000
index 9d6561adcd..0000000000
--- a/Lang/C/Color-wheel
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Color-wheel/C
\ No newline at end of file
diff --git a/Lang/C/Distance-and-Bearing b/Lang/C/Distance-and-Bearing
deleted file mode 120000
index 4496c69ac6..0000000000
--- a/Lang/C/Distance-and-Bearing
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Distance-and-Bearing/C
\ No newline at end of file
diff --git a/Lang/C/Dynamic-variable-names b/Lang/C/Dynamic-variable-names
deleted file mode 120000
index 278fe3b232..0000000000
--- a/Lang/C/Dynamic-variable-names
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dynamic-variable-names/C
\ No newline at end of file
diff --git a/Lang/C/Execute-Computer-Zero b/Lang/C/Execute-Computer-Zero
deleted file mode 120000
index c10597c078..0000000000
--- a/Lang/C/Execute-Computer-Zero
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Execute-Computer-Zero/C
\ No newline at end of file
diff --git a/Lang/C/Harmonic-series b/Lang/C/Harmonic-series
deleted file mode 120000
index dfebedc2c8..0000000000
--- a/Lang/C/Harmonic-series
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Harmonic-series/C
\ No newline at end of file
diff --git a/Lang/C/History-variables b/Lang/C/History-variables
deleted file mode 120000
index 3a73616359..0000000000
--- a/Lang/C/History-variables
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/History-variables/C
\ No newline at end of file
diff --git a/Lang/C/Hunt-the-Wumpus b/Lang/C/Hunt-the-Wumpus
deleted file mode 120000
index e7186ced48..0000000000
--- a/Lang/C/Hunt-the-Wumpus
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hunt-the-Wumpus/C
\ No newline at end of file
diff --git a/Lang/C/Magic-constant b/Lang/C/Magic-constant
deleted file mode 120000
index 3d29fd6624..0000000000
--- a/Lang/C/Magic-constant
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Magic-constant/C
\ No newline at end of file
diff --git a/Lang/C/Miller-Rabin-primality-test b/Lang/C/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..b9ab762a9c
--- /dev/null
+++ b/Lang/C/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/C
\ No newline at end of file
diff --git a/Lang/C/Nested-templated-data b/Lang/C/Nested-templated-data
deleted file mode 120000
index ef78f3cb0c..0000000000
--- a/Lang/C/Nested-templated-data
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nested-templated-data/C
\ No newline at end of file
diff --git a/Lang/C/One-time-pad b/Lang/C/One-time-pad
deleted file mode 120000
index e0845d9058..0000000000
--- a/Lang/C/One-time-pad
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/One-time-pad/C
\ No newline at end of file
diff --git a/Lang/C/Pig-the-dice-game-Player b/Lang/C/Pig-the-dice-game-Player
deleted file mode 120000
index 28ecb509a8..0000000000
--- a/Lang/C/Pig-the-dice-game-Player
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pig-the-dice-game-Player/C
\ No newline at end of file
diff --git a/Lang/C/Quaternion-type b/Lang/C/Quaternion-type
new file mode 120000
index 0000000000..25d9910755
--- /dev/null
+++ b/Lang/C/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/C
\ No newline at end of file
diff --git a/Lang/C/Sequence:-nth-number-with-exactly-n-divisors b/Lang/C/Sequence-nth-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/C/Sequence:-nth-number-with-exactly-n-divisors
rename to Lang/C/Sequence-nth-number-with-exactly-n-divisors
diff --git a/Lang/C/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors b/Lang/C/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
similarity index 100%
rename from Lang/C/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors
rename to Lang/C/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
diff --git a/Lang/C/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/C/Sequence-smallest-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/C/Sequence:-smallest-number-with-exactly-n-divisors
rename to Lang/C/Sequence-smallest-number-with-exactly-n-divisors
diff --git a/Lang/C/Sleeping-Beauty-problem b/Lang/C/Sleeping-Beauty-problem
deleted file mode 120000
index 193e808670..0000000000
--- a/Lang/C/Sleeping-Beauty-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sleeping-Beauty-problem/C
\ No newline at end of file
diff --git a/Lang/C/Sorting-Algorithms-Circle-Sort b/Lang/C/Sorting-Algorithms-Circle-Sort
new file mode 120000
index 0000000000..335574f406
--- /dev/null
+++ b/Lang/C/Sorting-Algorithms-Circle-Sort
@@ -0,0 +1 @@
+../../Task/Sorting-Algorithms-Circle-Sort/C
\ No newline at end of file
diff --git a/Lang/C3/Binary-digits b/Lang/C3/Binary-digits
deleted file mode 120000
index 34a04afae2..0000000000
--- a/Lang/C3/Binary-digits
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Binary-digits/C3
\ No newline at end of file
diff --git a/Lang/C3/Bulls-and-cows b/Lang/C3/Bulls-and-cows
deleted file mode 120000
index b5099b13d9..0000000000
--- a/Lang/C3/Bulls-and-cows
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bulls-and-cows/C3
\ No newline at end of file
diff --git a/Lang/CB80/00-LANG.txt b/Lang/CB80/00-LANG.txt
index 86de52ef42..96b8bf005c 100644
--- a/Lang/CB80/00-LANG.txt
+++ b/Lang/CB80/00-LANG.txt
@@ -1,2 +1 @@
-{{language}}{{Stub}}
-CB80 is not a separate language or dialect but rather a companion compiler for the [[CBASIC]] dialect of BASIC for 8-bit CP/M systems. The CBASIC compiler compiles source code into an intermediate form, which is stored on disk with the file extension INT. The compiled code is executed by invoking a run-time interpreter (CRUN.COM) from the command line. CB80, by contrast, compiles the source into a relocatable machine code file having an REL extension, which is then linked with necessary run-time library routines using the supplied linker (either LINK.COM or LK80.COM), to create a stand-alone executable file with the extension COM, which can be run simply by typing its name on the CP/M command-line. All of the posted CBASIC examples on Rosetta Code as of 9/14/2024 will compile and run without change under CB80. One subtle difference which could affect some programs lies in the behavior of the FOR .. NEXT statement. When run under CBASIC the body of the statement will always be executed at least once even if the index variable exceeds the value of the stop expression. If compiled using CB80, however, the loop will not be executed under those circumstances.
\ No newline at end of file
+{{language}}{{Stub}}
\ No newline at end of file
diff --git a/Lang/CBASIC/00-LANG.txt b/Lang/CBASIC/00-LANG.txt
deleted file mode 100644
index f0ff8ea32b..0000000000
--- a/Lang/CBASIC/00-LANG.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-{{stub}} {{language|CBASIC}}
-CBASIC was the commercial outgrowth of the BASIC-E compiler
-written by Gordon Eubanks as his Master's thesis while a
-student at the Naval Postgraduate School. CBASIC -- which
-was marketed for both 8 and 16 bit CP/M systems -- differed from
-many of the BASIC dialects of the day in two major respects:
-(1) line numbers were not required unless the statement was
-the target of a GOTO or GOSUB statement (and were in any event
-treated simply as labels) and (2) real (floating point) variables
-were implemented as 14-digit binary coded decimal (BCD), which,
-particularly in business and accounting applications, avoided round-off
-errors which purely binary floating point computations were prone
-to. Integer and string variables (which required % and $ suffixes,
-respectively) were also provided, as well as multi-dimensional arrays.
-Identifiers could be of any length, although only the first 31
-characters were significant. CBASIC supported multiline user-defined
-functions with parameters passed by value but did not support recursion.
-CBASIC was implemented as a compiler-interpreter: the source code was
-compiled into an intermediate form, which could then be executed by
-invoking a run-time interpreter. A companion compiler, [[CB80]], was
-offered that compiled to machine code.
\ No newline at end of file
diff --git a/Lang/CBASIC/00-META.yaml b/Lang/CBASIC/00-META.yaml
deleted file mode 100644
index ad24e74664..0000000000
--- a/Lang/CBASIC/00-META.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-from: http://rosettacode.org/wiki/Category:CBASIC
diff --git a/Lang/CBASIC/100-doors b/Lang/CBASIC/100-doors
deleted file mode 120000
index e01a233041..0000000000
--- a/Lang/CBASIC/100-doors
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/100-doors/CBASIC
\ No newline at end of file
diff --git a/Lang/CBASIC/Amicable-pairs b/Lang/CBASIC/Amicable-pairs
deleted file mode 120000
index 6386efc2a5..0000000000
--- a/Lang/CBASIC/Amicable-pairs
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Amicable-pairs/CBASIC
\ No newline at end of file
diff --git a/Lang/CBASIC/Binary-digits b/Lang/CBASIC/Binary-digits
deleted file mode 120000
index d0de913861..0000000000
--- a/Lang/CBASIC/Binary-digits
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Binary-digits/CBASIC
\ No newline at end of file
diff --git a/Lang/CBASIC/Factorial b/Lang/CBASIC/Factorial
deleted file mode 120000
index 97dfd0b137..0000000000
--- a/Lang/CBASIC/Factorial
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factorial/CBASIC
\ No newline at end of file
diff --git a/Lang/CBASIC/Fibonacci-sequence b/Lang/CBASIC/Fibonacci-sequence
deleted file mode 120000
index eb9f8cf7a1..0000000000
--- a/Lang/CBASIC/Fibonacci-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fibonacci-sequence/CBASIC
\ No newline at end of file
diff --git a/Lang/CBASIC/Harmonic-series b/Lang/CBASIC/Harmonic-series
deleted file mode 120000
index aa1eac83fa..0000000000
--- a/Lang/CBASIC/Harmonic-series
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Harmonic-series/CBASIC
\ No newline at end of file
diff --git a/Lang/CBASIC/Perfect-numbers b/Lang/CBASIC/Perfect-numbers
deleted file mode 120000
index 3f847760d8..0000000000
--- a/Lang/CBASIC/Perfect-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Perfect-numbers/CBASIC
\ No newline at end of file
diff --git a/Lang/CBASIC/Rot-13 b/Lang/CBASIC/Rot-13
deleted file mode 120000
index bbda100cd2..0000000000
--- a/Lang/CBASIC/Rot-13
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Rot-13/CBASIC
\ No newline at end of file
diff --git a/Lang/CBASIC/Sieve-of-Eratosthenes b/Lang/CBASIC/Sieve-of-Eratosthenes
deleted file mode 120000
index ecdf66656a..0000000000
--- a/Lang/CBASIC/Sieve-of-Eratosthenes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sieve-of-Eratosthenes/CBASIC
\ No newline at end of file
diff --git a/Lang/CJam/00-LANG.txt b/Lang/CJam/00-LANG.txt
deleted file mode 100644
index 9d6f8331dc..0000000000
--- a/Lang/CJam/00-LANG.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-{{language|site=https://sourceforge.net/p/cjam/wiki/Home/}}
-
-[https://sourceforge.net/projects/cjam/ sf repo]
-
-From the [https://sourceforge.net/p/cjam/wiki/Home/ wiki]:
-
-:In order to run a CJam program, [https://sourceforge.net/projects/cjam/files/ download] the latest jar file, e.g. cjam-0.6.5.jar, and run this command:
-:java -jar cjam-0.6.5.jar file.cjam
\ No newline at end of file
diff --git a/Lang/CJam/00-META.yaml b/Lang/CJam/00-META.yaml
deleted file mode 100644
index 49b8d01361..0000000000
--- a/Lang/CJam/00-META.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-from: http://rosettacode.org/wiki/Category:CJam
diff --git a/Lang/CLU/Arithmetic-derivative b/Lang/CLU/Arithmetic-derivative
deleted file mode 120000
index f0f81c6bc1..0000000000
--- a/Lang/CLU/Arithmetic-derivative
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-derivative/CLU
\ No newline at end of file
diff --git a/Lang/CLU/Move-to-front-algorithm b/Lang/CLU/Move-to-front-algorithm
deleted file mode 120000
index bbdfe9bcdb..0000000000
--- a/Lang/CLU/Move-to-front-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Move-to-front-algorithm/CLU
\ No newline at end of file
diff --git a/Lang/CLU/Quaternion-type b/Lang/CLU/Quaternion-type
new file mode 120000
index 0000000000..abdefd8765
--- /dev/null
+++ b/Lang/CLU/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/CLU
\ No newline at end of file
diff --git a/Lang/CLU/Super-d-numbers b/Lang/CLU/Super-d-numbers
deleted file mode 120000
index a271a5f6dc..0000000000
--- a/Lang/CLU/Super-d-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Super-d-numbers/CLU
\ No newline at end of file
diff --git a/Lang/COBOL/ABC-problem b/Lang/COBOL/ABC-problem
deleted file mode 120000
index ca521ee81d..0000000000
--- a/Lang/COBOL/ABC-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/ABC-problem/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/AVL-tree b/Lang/COBOL/AVL-tree
deleted file mode 120000
index d8a20640c6..0000000000
--- a/Lang/COBOL/AVL-tree
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/AVL-tree/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Abundant-odd-numbers b/Lang/COBOL/Abundant-odd-numbers
deleted file mode 120000
index 7268a8a6ca..0000000000
--- a/Lang/COBOL/Abundant-odd-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abundant-odd-numbers/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Achilles-numbers b/Lang/COBOL/Achilles-numbers
deleted file mode 120000
index 4a3a715de1..0000000000
--- a/Lang/COBOL/Achilles-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Achilles-numbers/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Arithmetic-numbers b/Lang/COBOL/Arithmetic-numbers
deleted file mode 120000
index cf8f3a0323..0000000000
--- a/Lang/COBOL/Arithmetic-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-numbers/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Calkin-Wilf-sequence b/Lang/COBOL/Calkin-Wilf-sequence
deleted file mode 120000
index f3e314890f..0000000000
--- a/Lang/COBOL/Calkin-Wilf-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Calkin-Wilf-sequence/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Colorful-numbers b/Lang/COBOL/Colorful-numbers
deleted file mode 120000
index 6d5c4f9dff..0000000000
--- a/Lang/COBOL/Colorful-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Colorful-numbers/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Cullen-and-Woodall-numbers b/Lang/COBOL/Cullen-and-Woodall-numbers
deleted file mode 120000
index b212ad96a5..0000000000
--- a/Lang/COBOL/Cullen-and-Woodall-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cullen-and-Woodall-numbers/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Damm-algorithm b/Lang/COBOL/Damm-algorithm
deleted file mode 120000
index e4f3bf1f71..0000000000
--- a/Lang/COBOL/Damm-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Damm-algorithm/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/De-Bruijn-sequences b/Lang/COBOL/De-Bruijn-sequences
deleted file mode 120000
index 67e8dee974..0000000000
--- a/Lang/COBOL/De-Bruijn-sequences
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/De-Bruijn-sequences/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Dijkstras-algorithm b/Lang/COBOL/Dijkstras-algorithm
deleted file mode 120000
index 19c743357a..0000000000
--- a/Lang/COBOL/Dijkstras-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dijkstras-algorithm/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Farey-sequence b/Lang/COBOL/Farey-sequence
deleted file mode 120000
index b402aede64..0000000000
--- a/Lang/COBOL/Farey-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Farey-sequence/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Floyd-Warshall-algorithm b/Lang/COBOL/Floyd-Warshall-algorithm
deleted file mode 120000
index de49182ec8..0000000000
--- a/Lang/COBOL/Floyd-Warshall-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Floyd-Warshall-algorithm/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Fusc-sequence b/Lang/COBOL/Fusc-sequence
deleted file mode 120000
index e8b4b1330c..0000000000
--- a/Lang/COBOL/Fusc-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fusc-sequence/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/K-d-tree b/Lang/COBOL/K-d-tree
deleted file mode 120000
index af9595a130..0000000000
--- a/Lang/COBOL/K-d-tree
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/K-d-tree/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Knuths-algorithm-S b/Lang/COBOL/Knuths-algorithm-S
deleted file mode 120000
index 119841f920..0000000000
--- a/Lang/COBOL/Knuths-algorithm-S
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Knuths-algorithm-S/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Leonardo-numbers b/Lang/COBOL/Leonardo-numbers
deleted file mode 120000
index 65bc7509a4..0000000000
--- a/Lang/COBOL/Leonardo-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Leonardo-numbers/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Move-to-front-algorithm b/Lang/COBOL/Move-to-front-algorithm
deleted file mode 120000
index f9458888cc..0000000000
--- a/Lang/COBOL/Move-to-front-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Move-to-front-algorithm/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Nim-game b/Lang/COBOL/Nim-game
deleted file mode 120000
index 9a7c582b48..0000000000
--- a/Lang/COBOL/Nim-game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nim-game/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Pancake-numbers b/Lang/COBOL/Pancake-numbers
deleted file mode 120000
index 22e5574a28..0000000000
--- a/Lang/COBOL/Pancake-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pancake-numbers/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Parametric-polymorphism b/Lang/COBOL/Parametric-polymorphism
deleted file mode 120000
index 44f214df50..0000000000
--- a/Lang/COBOL/Parametric-polymorphism
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Parametric-polymorphism/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Soloways-recurring-rainfall b/Lang/COBOL/Soloways-recurring-rainfall
deleted file mode 120000
index 883bf3b2e0..0000000000
--- a/Lang/COBOL/Soloways-recurring-rainfall
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Soloways-recurring-rainfall/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Strassens-algorithm b/Lang/COBOL/Strassens-algorithm
deleted file mode 120000
index 488f64d9e2..0000000000
--- a/Lang/COBOL/Strassens-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strassens-algorithm/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/The-Name-Game b/Lang/COBOL/The-Name-Game
deleted file mode 120000
index 35866ecb72..0000000000
--- a/Lang/COBOL/The-Name-Game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/The-Name-Game/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Twos-complement b/Lang/COBOL/Twos-complement
deleted file mode 120000
index 776801b9e2..0000000000
--- a/Lang/COBOL/Twos-complement
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Twos-complement/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Vigen-re-cipher b/Lang/COBOL/Vigen-re-cipher
deleted file mode 120000
index 93e3f53bcb..0000000000
--- a/Lang/COBOL/Vigen-re-cipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Vigen-re-cipher/COBOL
\ No newline at end of file
diff --git a/Lang/COBOL/Zeckendorf-number-representation b/Lang/COBOL/Zeckendorf-number-representation
deleted file mode 120000
index d3c11d47da..0000000000
--- a/Lang/COBOL/Zeckendorf-number-representation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Zeckendorf-number-representation/COBOL
\ No newline at end of file
diff --git a/Lang/Calc/00-LANG.txt b/Lang/Calc/00-LANG.txt
deleted file mode 100644
index 9066fe1741..0000000000
--- a/Lang/Calc/00-LANG.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-{{language|Calc
-|untyped=yes}}
-{{language programming paradigm|stack-based}}
-{{language programming paradigm|imperative}}
-
-Calc is a stack-based RPN calculator inside [[Emacs]]. Calc is part of GNU Emacs 22, or a package for XEmacs.
-
-Calc presents itself as an interactive calculator. Instructions can also be stored as macros, including control flow instructions (if-then-else, for loop, etc.), which makes Calc fully programmable. Calc also provides a library available in Emacs Lisp programs.
-
-Calc has more numeric types than plain Emacs Lisp. Calc has big integers, big floating-point numbers, rational numbers, complex numbers, and more. (For contrast, plain Emacs Lisp can only handle integers and floating-point numbers of limited precision.) Emacs Lisp with Calc can solve tasks requiring these types of numbers.
\ No newline at end of file
diff --git a/Lang/Calc/00-META.yaml b/Lang/Calc/00-META.yaml
deleted file mode 100644
index 85b0e2ef53..0000000000
--- a/Lang/Calc/00-META.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-from: http://rosettacode.org/wiki/Category:Calc
diff --git a/Lang/Calc/Averages-Arithmetic-mean b/Lang/Calc/Averages-Arithmetic-mean
deleted file mode 120000
index 8ad84c8dbd..0000000000
--- a/Lang/Calc/Averages-Arithmetic-mean
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Arithmetic-mean/Calc
\ No newline at end of file
diff --git a/Lang/Calc/Modular-exponentiation b/Lang/Calc/Modular-exponentiation
deleted file mode 120000
index b72a4448d5..0000000000
--- a/Lang/Calc/Modular-exponentiation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Modular-exponentiation/Calc
\ No newline at end of file
diff --git a/Lang/Calcscript/00-LANG.txt b/Lang/Calcscript/00-LANG.txt
deleted file mode 100644
index d2db819bbe..0000000000
--- a/Lang/Calcscript/00-LANG.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-{{language
-|site=https://gitee.com/jfiewo/calc/
-}}
-Calcscript is a small lisp-like language.
-* It has 3 datatypes: Int, Same, and Invalid.
-* The usual 4 arithmetic operations are supported.
-
-See [https://gitee.com/jfiewo/calc/ the respository] for details.
-{{language programming paradigm|Logic Programming}}
-{{language programming paradigm|Functional}}
\ No newline at end of file
diff --git a/Lang/Calcscript/00-META.yaml b/Lang/Calcscript/00-META.yaml
deleted file mode 100644
index cee9fc468f..0000000000
--- a/Lang/Calcscript/00-META.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-from: http://rosettacode.org/wiki/Category:Calcscript
diff --git a/Lang/Chapel/Function-definition b/Lang/Chapel/Function-definition
deleted file mode 120000
index 589b4afa2c..0000000000
--- a/Lang/Chapel/Function-definition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Function-definition/Chapel
\ No newline at end of file
diff --git a/Lang/Chapel/Maze-generation b/Lang/Chapel/Maze-generation
deleted file mode 120000
index b4c55cfddb..0000000000
--- a/Lang/Chapel/Maze-generation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Maze-generation/Chapel
\ No newline at end of file
diff --git a/Lang/Chapel/Repeat b/Lang/Chapel/Repeat
deleted file mode 120000
index 3c555a4885..0000000000
--- a/Lang/Chapel/Repeat
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Repeat/Chapel
\ No newline at end of file
diff --git a/Lang/Chipmunk-Basic/ASCII-art-diagram-converter b/Lang/Chipmunk-Basic/ASCII-art-diagram-converter
deleted file mode 120000
index a034d74b58..0000000000
--- a/Lang/Chipmunk-Basic/ASCII-art-diagram-converter
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/ASCII-art-diagram-converter/Chipmunk-Basic
\ No newline at end of file
diff --git a/Lang/Chipmunk-Basic/Associative-array-Merging b/Lang/Chipmunk-Basic/Associative-array-Merging
deleted file mode 120000
index dd87e8e06c..0000000000
--- a/Lang/Chipmunk-Basic/Associative-array-Merging
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Associative-array-Merging/Chipmunk-Basic
\ No newline at end of file
diff --git a/Lang/Chipmunk-Basic/Determine-sentence-type b/Lang/Chipmunk-Basic/Determine-sentence-type
deleted file mode 120000
index 6851894430..0000000000
--- a/Lang/Chipmunk-Basic/Determine-sentence-type
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-sentence-type/Chipmunk-Basic
\ No newline at end of file
diff --git a/Lang/Chipmunk-Basic/Display-a-linear-combination b/Lang/Chipmunk-Basic/Display-a-linear-combination
deleted file mode 120000
index 76f3965566..0000000000
--- a/Lang/Chipmunk-Basic/Display-a-linear-combination
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Display-a-linear-combination/Chipmunk-Basic
\ No newline at end of file
diff --git a/Lang/Chipmunk-Basic/Diversity-prediction-theorem b/Lang/Chipmunk-Basic/Diversity-prediction-theorem
deleted file mode 120000
index 094da6a44e..0000000000
--- a/Lang/Chipmunk-Basic/Diversity-prediction-theorem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Diversity-prediction-theorem/Chipmunk-Basic
\ No newline at end of file
diff --git a/Lang/Chipmunk-Basic/Eban-numbers b/Lang/Chipmunk-Basic/Eban-numbers
deleted file mode 120000
index 109253525e..0000000000
--- a/Lang/Chipmunk-Basic/Eban-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Eban-numbers/Chipmunk-Basic
\ No newline at end of file
diff --git a/Lang/Chipmunk-Basic/Evaluate-binomial-coefficients b/Lang/Chipmunk-Basic/Evaluate-binomial-coefficients
deleted file mode 120000
index b45aed06e2..0000000000
--- a/Lang/Chipmunk-Basic/Evaluate-binomial-coefficients
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Evaluate-binomial-coefficients/Chipmunk-Basic
\ No newline at end of file
diff --git a/Lang/Chipmunk-Basic/Fibonacci-n-step-number-sequences b/Lang/Chipmunk-Basic/Fibonacci-n-step-number-sequences
deleted file mode 120000
index 24e6f1fb75..0000000000
--- a/Lang/Chipmunk-Basic/Fibonacci-n-step-number-sequences
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fibonacci-n-step-number-sequences/Chipmunk-Basic
\ No newline at end of file
diff --git a/Lang/Chipmunk-Basic/Generate-Chess960-starting-position b/Lang/Chipmunk-Basic/Generate-Chess960-starting-position
deleted file mode 120000
index daceb0cf8f..0000000000
--- a/Lang/Chipmunk-Basic/Generate-Chess960-starting-position
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Generate-Chess960-starting-position/Chipmunk-Basic
\ No newline at end of file
diff --git a/Lang/Chipmunk-Basic/Generate-lower-case-ASCII-alphabet b/Lang/Chipmunk-Basic/Generate-lower-case-ASCII-alphabet
deleted file mode 120000
index 22e12f5ab0..0000000000
--- a/Lang/Chipmunk-Basic/Generate-lower-case-ASCII-alphabet
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Generate-lower-case-ASCII-alphabet/Chipmunk-Basic
\ No newline at end of file
diff --git a/Lang/Chipmunk-Basic/Jensens-Device b/Lang/Chipmunk-Basic/Jensens-Device
deleted file mode 120000
index 927dca2f6f..0000000000
--- a/Lang/Chipmunk-Basic/Jensens-Device
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jensens-Device/Chipmunk-Basic
\ No newline at end of file
diff --git a/Lang/Chipmunk-Basic/Leonardo-numbers b/Lang/Chipmunk-Basic/Leonardo-numbers
deleted file mode 120000
index 65f7e68a9b..0000000000
--- a/Lang/Chipmunk-Basic/Leonardo-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Leonardo-numbers/Chipmunk-Basic
\ No newline at end of file
diff --git a/Lang/Chipmunk-Basic/Map-range b/Lang/Chipmunk-Basic/Map-range
deleted file mode 120000
index 3aa5f00ecb..0000000000
--- a/Lang/Chipmunk-Basic/Map-range
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Map-range/Chipmunk-Basic
\ No newline at end of file
diff --git a/Lang/Chipmunk-Basic/Multiple-regression b/Lang/Chipmunk-Basic/Multiple-regression
deleted file mode 120000
index 82844a944e..0000000000
--- a/Lang/Chipmunk-Basic/Multiple-regression
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Multiple-regression/Chipmunk-Basic
\ No newline at end of file
diff --git a/Lang/Chipmunk-Basic/Nested-templated-data b/Lang/Chipmunk-Basic/Nested-templated-data
deleted file mode 120000
index a7e95ed6f1..0000000000
--- a/Lang/Chipmunk-Basic/Nested-templated-data
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nested-templated-data/Chipmunk-Basic
\ No newline at end of file
diff --git a/Lang/Chipmunk-Basic/Pascals-triangle b/Lang/Chipmunk-Basic/Pascals-triangle
deleted file mode 120000
index aa62c07130..0000000000
--- a/Lang/Chipmunk-Basic/Pascals-triangle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pascals-triangle/Chipmunk-Basic
\ No newline at end of file
diff --git a/Lang/Chipmunk-Basic/Perfect-numbers b/Lang/Chipmunk-Basic/Perfect-numbers
deleted file mode 120000
index 4bd1876580..0000000000
--- a/Lang/Chipmunk-Basic/Perfect-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Perfect-numbers/Chipmunk-Basic
\ No newline at end of file
diff --git a/Lang/Chipmunk-Basic/Phrase-reversals b/Lang/Chipmunk-Basic/Phrase-reversals
deleted file mode 120000
index 3d4b70a430..0000000000
--- a/Lang/Chipmunk-Basic/Phrase-reversals
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Phrase-reversals/Chipmunk-Basic
\ No newline at end of file
diff --git a/Lang/Chipmunk-Basic/Price-fraction b/Lang/Chipmunk-Basic/Price-fraction
deleted file mode 120000
index 895d56d4cf..0000000000
--- a/Lang/Chipmunk-Basic/Price-fraction
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Price-fraction/Chipmunk-Basic
\ No newline at end of file
diff --git a/Lang/Chipmunk-Basic/Proper-divisors b/Lang/Chipmunk-Basic/Proper-divisors
deleted file mode 120000
index e83b2b6ef0..0000000000
--- a/Lang/Chipmunk-Basic/Proper-divisors
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Proper-divisors/Chipmunk-Basic
\ No newline at end of file
diff --git a/Lang/Chipmunk-Basic/Rate-counter b/Lang/Chipmunk-Basic/Rate-counter
deleted file mode 120000
index 214d671194..0000000000
--- a/Lang/Chipmunk-Basic/Rate-counter
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Rate-counter/Chipmunk-Basic
\ No newline at end of file
diff --git a/Lang/Chipmunk-Basic/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/Chipmunk-Basic/Sequence-smallest-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/Chipmunk-Basic/Sequence:-smallest-number-with-exactly-n-divisors
rename to Lang/Chipmunk-Basic/Sequence-smallest-number-with-exactly-n-divisors
diff --git a/Lang/Chipmunk-Basic/Shell-one-liner b/Lang/Chipmunk-Basic/Shell-one-liner
deleted file mode 120000
index a90b838683..0000000000
--- a/Lang/Chipmunk-Basic/Shell-one-liner
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Shell-one-liner/Chipmunk-Basic
\ No newline at end of file
diff --git a/Lang/Chipmunk-Basic/Split-a-character-string-based-on-change-of-character b/Lang/Chipmunk-Basic/Split-a-character-string-based-on-change-of-character
deleted file mode 120000
index ae1d1da2a7..0000000000
--- a/Lang/Chipmunk-Basic/Split-a-character-string-based-on-change-of-character
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Split-a-character-string-based-on-change-of-character/Chipmunk-Basic
\ No newline at end of file
diff --git a/Lang/Chipmunk-Basic/Sudan-function b/Lang/Chipmunk-Basic/Sudan-function
deleted file mode 120000
index 8b26708ee8..0000000000
--- a/Lang/Chipmunk-Basic/Sudan-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sudan-function/Chipmunk-Basic
\ No newline at end of file
diff --git a/Lang/Chipmunk-Basic/Sum-of-a-series b/Lang/Chipmunk-Basic/Sum-of-a-series
deleted file mode 120000
index f9bdcf9a6b..0000000000
--- a/Lang/Chipmunk-Basic/Sum-of-a-series
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sum-of-a-series/Chipmunk-Basic
\ No newline at end of file
diff --git a/Lang/Chipmunk-Basic/The-Name-Game b/Lang/Chipmunk-Basic/The-Name-Game
deleted file mode 120000
index 5655525e11..0000000000
--- a/Lang/Chipmunk-Basic/The-Name-Game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/The-Name-Game/Chipmunk-Basic
\ No newline at end of file
diff --git a/Lang/Chipmunk-Basic/Twos-complement b/Lang/Chipmunk-Basic/Twos-complement
deleted file mode 120000
index 4eb5b36880..0000000000
--- a/Lang/Chipmunk-Basic/Twos-complement
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Twos-complement/Chipmunk-Basic
\ No newline at end of file
diff --git a/Lang/Chipmunk-Basic/Vector b/Lang/Chipmunk-Basic/Vector
deleted file mode 120000
index 68aa51b11b..0000000000
--- a/Lang/Chipmunk-Basic/Vector
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Vector/Chipmunk-Basic
\ No newline at end of file
diff --git a/Lang/Clojure/Miller-Rabin-primality-test b/Lang/Clojure/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..67b048eb10
--- /dev/null
+++ b/Lang/Clojure/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/Clojure
\ No newline at end of file
diff --git a/Lang/CoffeeScript/Empty-program b/Lang/CoffeeScript/Empty-program
new file mode 120000
index 0000000000..c325b31ffa
--- /dev/null
+++ b/Lang/CoffeeScript/Empty-program
@@ -0,0 +1 @@
+../../Task/Empty-program/CoffeeScript
\ No newline at end of file
diff --git a/Lang/CoffeeScript/Sorting-Algorithms-Circle-Sort b/Lang/CoffeeScript/Sorting-Algorithms-Circle-Sort
new file mode 120000
index 0000000000..e4d7481d88
--- /dev/null
+++ b/Lang/CoffeeScript/Sorting-Algorithms-Circle-Sort
@@ -0,0 +1 @@
+../../Task/Sorting-Algorithms-Circle-Sort/CoffeeScript
\ No newline at end of file
diff --git a/Lang/Comal/Fairshare-between-two-and-more b/Lang/Comal/Fairshare-between-two-and-more
deleted file mode 120000
index 4497e4f55d..0000000000
--- a/Lang/Comal/Fairshare-between-two-and-more
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fairshare-between-two-and-more/Comal
\ No newline at end of file
diff --git a/Lang/Comal/Zeckendorf-number-representation b/Lang/Comal/Zeckendorf-number-representation
deleted file mode 120000
index 55d16429d3..0000000000
--- a/Lang/Comal/Zeckendorf-number-representation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Zeckendorf-number-representation/Comal
\ No newline at end of file
diff --git a/Lang/Commodore-BASIC/Miller-Rabin-primality-test b/Lang/Commodore-BASIC/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..7354bc510f
--- /dev/null
+++ b/Lang/Commodore-BASIC/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/Commodore-BASIC
\ No newline at end of file
diff --git a/Lang/Commodore-BASIC/N-queens-problem b/Lang/Commodore-BASIC/N-queens-problem
deleted file mode 120000
index d5a4ff5b7a..0000000000
--- a/Lang/Commodore-BASIC/N-queens-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/N-queens-problem/Commodore-BASIC
\ No newline at end of file
diff --git a/Lang/Commodore-BASIC/Random-number-generator-device- b/Lang/Commodore-BASIC/Random-number-generator-device-
deleted file mode 120000
index f23b1d0d42..0000000000
--- a/Lang/Commodore-BASIC/Random-number-generator-device-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Random-number-generator-device-/Commodore-BASIC
\ No newline at end of file
diff --git a/Lang/Common-Lisp/Blum-integer b/Lang/Common-Lisp/Blum-integer
deleted file mode 120000
index 854dbaeee7..0000000000
--- a/Lang/Common-Lisp/Blum-integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Blum-integer/Common-Lisp
\ No newline at end of file
diff --git a/Lang/Common-Lisp/Factorial-primes b/Lang/Common-Lisp/Factorial-primes
deleted file mode 120000
index cc0d935af1..0000000000
--- a/Lang/Common-Lisp/Factorial-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factorial-primes/Common-Lisp
\ No newline at end of file
diff --git a/Lang/Common-Lisp/Miller-Rabin-primality-test b/Lang/Common-Lisp/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..4f8dbe695d
--- /dev/null
+++ b/Lang/Common-Lisp/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/Common-Lisp
\ No newline at end of file
diff --git a/Lang/Common-Lisp/Multi-dimensional-array b/Lang/Common-Lisp/Multi-dimensional-array
deleted file mode 120000
index 37f7ef0979..0000000000
--- a/Lang/Common-Lisp/Multi-dimensional-array
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Multi-dimensional-array/Common-Lisp
\ No newline at end of file
diff --git a/Lang/Common-Lisp/Quaternion-type b/Lang/Common-Lisp/Quaternion-type
new file mode 120000
index 0000000000..dd7bafa7e8
--- /dev/null
+++ b/Lang/Common-Lisp/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/Common-Lisp
\ No newline at end of file
diff --git a/Lang/Common-Lisp/Substitution-cipher b/Lang/Common-Lisp/Substitution-cipher
deleted file mode 120000
index 332d90e9f0..0000000000
--- a/Lang/Common-Lisp/Substitution-cipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Substitution-cipher/Common-Lisp
\ No newline at end of file
diff --git a/Lang/Common-Lisp/Wieferich-primes b/Lang/Common-Lisp/Wieferich-primes
deleted file mode 120000
index 91ad6e3ba2..0000000000
--- a/Lang/Common-Lisp/Wieferich-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Wieferich-primes/Common-Lisp
\ No newline at end of file
diff --git a/Lang/Component-Pascal/00-LANG.txt b/Lang/Component-Pascal/00-LANG.txt
index 7056dd922c..a83cc2b2e7 100644
--- a/Lang/Component-Pascal/00-LANG.txt
+++ b/Lang/Component-Pascal/00-LANG.txt
@@ -1,11 +1,4 @@
{{language|Component Pascal}}'''Component Pascal''' is a programming language in the tradition of Oberon and [[Oberon-2]], the last language Niklaus Wirth designed before he retired in 1999. It bears the name of the [[Pascal]] programming language but is incompatible with it. Instead, it is a minor variant and refinement of Oberon-2, designed and supported by a small ETH Zürich spin-off company called Oberon microsystems. Their [[IDE]] is called BlackBox Component Builder. At the time the first version was released (1994) it presented a novel approach to graphical user interface ([[GUI]]) construction based on editable forms, where fields and command buttons are linked to exported variables and executable procedures. This approach bears some similarity to the code-behind way used in [[Microsoft]]'s [[.NET]] 3.0 to access code in XAML.
==Citations==
-* [http://en.wikipedia.org/wiki/Component_Pascal Wikipedia:Component Pascal]
-
-===See also===
-* [[Oberon-07]]
-* [[Oberon-2]]
-* [[Zonnon]]
-* [[Modula-2]]
-* [[Modula-3]]
\ No newline at end of file
+* [http://en.wikipedia.org/wiki/Component_Pascal Wikipedia:Component Pascal]
\ 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/Computer-zero-Assembly/00-LANG.txt b/Lang/Computer-zero-Assembly/00-LANG.txt
index 779b92356f..e6ea975211 100644
--- a/Lang/Computer-zero-Assembly/00-LANG.txt
+++ b/Lang/Computer-zero-Assembly/00-LANG.txt
@@ -19,10 +19,10 @@ There are only 32 bytes of memory, and this includes your program code, leaving
==Self-Modifying Code==
With such little RAM available, the biggest tool we have at our disposal for programming is self-modifying code. The CPU makes no distinction between data and instructions, and as such we can store values into memory before that memory is executed, in order to change what the computer will do. Here's an example:
-LDA 4
+LDA 4
STA 2
ADD 3
STP
-SUB 3
+SUB 3
The above snippet of code never actually ADDs anything, since that instruction gets overwritten by SUB 3. And what is SUB 3 subtracting? It's subtracting the value of STP, which can be encoded as any number between 0xE0 and 0xFF. Specifically, the encoding of SUB 3 (i.e. 0b10000011) is decreased by some value between 0xE0 and 0xFF, and since all arithmetic on this CPU is modulo 256 (as is standard for nearly all 8-bit CPUs), there will be roll-over across the FF-00 boundary. Without a hardware carry flag, however, it's difficult to track this overflow.
\ No newline at end of file
diff --git a/Lang/Convex/00-LANG.txt b/Lang/Convex/00-LANG.txt
deleted file mode 100644
index 6676f23dde..0000000000
--- a/Lang/Convex/00-LANG.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-Convex is a stack-based golfing esolang based on Golfscript and CJam.
-
-{{language|site=https://github.com/ZekNikZ/Convex}}
-
-{{try|Convex|[https://tio.run/#convex Try Convex on tio.run].}}
-{{language_programming_paradigm|Concatenative}}
\ No newline at end of file
diff --git a/Lang/Convex/00-META.yaml b/Lang/Convex/00-META.yaml
deleted file mode 100644
index b10fffa83e..0000000000
--- a/Lang/Convex/00-META.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-from: http://rosettacode.org/wiki/Category:Convex
diff --git a/Lang/Coq/00-LANG.txt b/Lang/Coq/00-LANG.txt
index dac9774672..3a03214cba 100644
--- a/Lang/Coq/00-LANG.txt
+++ b/Lang/Coq/00-LANG.txt
@@ -1 +1,9 @@
-#REDIRECT [[:Category:Rocq]]
\ No newline at end of file
+{{language|Coq
+|site=http://coq.inria.fr
+}}
+In computer science, Coq is a proof assistant application. It allows the expression of mathematical assertions, mechanically checks proofs of these assertions, helps to find formal proofs, and extracts a certified program from the constructive proof of its formal specification. Coq works within the theory of the calculus of inductive constructions, a derivative of the calculus of constructions. Coq is not an automated [[wp:Theorem_prover|theorem prover]] but includes automatic theorem proving tactics and various decision procedures.
+
+==Citations==
+* [[wp:Coq|Coq]]
+
+[[Category:Mathematical programming languages]]
\ No newline at end of file
diff --git a/Lang/Coq/100-doors b/Lang/Coq/100-doors
new file mode 120000
index 0000000000..fd39f903ef
--- /dev/null
+++ b/Lang/Coq/100-doors
@@ -0,0 +1 @@
+../../Task/100-doors/Coq
\ No newline at end of file
diff --git a/Lang/Coq/Ackermann-function b/Lang/Coq/Ackermann-function
new file mode 120000
index 0000000000..03a0752c76
--- /dev/null
+++ b/Lang/Coq/Ackermann-function
@@ -0,0 +1 @@
+../../Task/Ackermann-function/Coq
\ No newline at end of file
diff --git a/Lang/Coq/Extend-your-language b/Lang/Coq/Extend-your-language
new file mode 120000
index 0000000000..2e717c1027
--- /dev/null
+++ b/Lang/Coq/Extend-your-language
@@ -0,0 +1 @@
+../../Task/Extend-your-language/Coq
\ No newline at end of file
diff --git a/Lang/Coq/Factorial b/Lang/Coq/Factorial
new file mode 120000
index 0000000000..3d35ebeb5f
--- /dev/null
+++ b/Lang/Coq/Factorial
@@ -0,0 +1 @@
+../../Task/Factorial/Coq
\ No newline at end of file
diff --git a/Lang/Coq/Fibonacci-sequence b/Lang/Coq/Fibonacci-sequence
new file mode 120000
index 0000000000..fc6d7d958a
--- /dev/null
+++ b/Lang/Coq/Fibonacci-sequence
@@ -0,0 +1 @@
+../../Task/Fibonacci-sequence/Coq
\ No newline at end of file
diff --git a/Lang/Coq/FizzBuzz b/Lang/Coq/FizzBuzz
new file mode 120000
index 0000000000..966d79dca5
--- /dev/null
+++ b/Lang/Coq/FizzBuzz
@@ -0,0 +1 @@
+../../Task/FizzBuzz/Coq
\ No newline at end of file
diff --git a/Lang/Coq/Hello-world-Newbie b/Lang/Coq/Hello-world-Newbie
new file mode 120000
index 0000000000..53590d7473
--- /dev/null
+++ b/Lang/Coq/Hello-world-Newbie
@@ -0,0 +1 @@
+../../Task/Hello-world-Newbie/Coq
\ No newline at end of file
diff --git a/Lang/Coq/Hello-world-Text b/Lang/Coq/Hello-world-Text
new file mode 120000
index 0000000000..194b2d17df
--- /dev/null
+++ b/Lang/Coq/Hello-world-Text
@@ -0,0 +1 @@
+../../Task/Hello-world-Text/Coq
\ 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/Coq/Tree-traversal b/Lang/Coq/Tree-traversal
new file mode 120000
index 0000000000..e38e9a0bdd
--- /dev/null
+++ b/Lang/Coq/Tree-traversal
@@ -0,0 +1 @@
+../../Task/Tree-traversal/Coq
\ No newline at end of file
diff --git a/Lang/Coq/Variadic-function b/Lang/Coq/Variadic-function
new file mode 120000
index 0000000000..391626fb92
--- /dev/null
+++ b/Lang/Coq/Variadic-function
@@ -0,0 +1 @@
+../../Task/Variadic-function/Coq
\ No newline at end of file
diff --git a/Lang/Cowgol/Align-columns b/Lang/Cowgol/Align-columns
deleted file mode 120000
index 2931644d20..0000000000
--- a/Lang/Cowgol/Align-columns
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Align-columns/Cowgol
\ No newline at end of file
diff --git a/Lang/Cowgol/Arithmetic-derivative b/Lang/Cowgol/Arithmetic-derivative
deleted file mode 120000
index 5d9cc4afd2..0000000000
--- a/Lang/Cowgol/Arithmetic-derivative
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-derivative/Cowgol
\ No newline at end of file
diff --git a/Lang/Cowgol/Compound-data-type b/Lang/Cowgol/Compound-data-type
deleted file mode 120000
index f242ef8856..0000000000
--- a/Lang/Cowgol/Compound-data-type
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compound-data-type/Cowgol
\ No newline at end of file
diff --git a/Lang/Cowgol/Display-a-linear-combination b/Lang/Cowgol/Display-a-linear-combination
deleted file mode 120000
index 7e169cd6fe..0000000000
--- a/Lang/Cowgol/Display-a-linear-combination
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Display-a-linear-combination/Cowgol
\ No newline at end of file
diff --git a/Lang/Cowgol/Move-to-front-algorithm b/Lang/Cowgol/Move-to-front-algorithm
deleted file mode 120000
index 137327f2ab..0000000000
--- a/Lang/Cowgol/Move-to-front-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Move-to-front-algorithm/Cowgol
\ No newline at end of file
diff --git a/Lang/Cowgol/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/Cowgol/Sequence-smallest-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/Cowgol/Sequence:-smallest-number-with-exactly-n-divisors
rename to Lang/Cowgol/Sequence-smallest-number-with-exactly-n-divisors
diff --git a/Lang/Cowgol/UTF-8-encode-and-decode b/Lang/Cowgol/UTF-8-encode-and-decode
deleted file mode 120000
index 93ae70053a..0000000000
--- a/Lang/Cowgol/UTF-8-encode-and-decode
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/UTF-8-encode-and-decode/Cowgol
\ No newline at end of file
diff --git a/Lang/Crystal/00-LANG.txt b/Lang/Crystal/00-LANG.txt
index 2d48345f43..b671a267bf 100644
--- a/Lang/Crystal/00-LANG.txt
+++ b/Lang/Crystal/00-LANG.txt
@@ -6,8 +6,7 @@
|strength=strong
|checking=static
|compat=duck
-|site=http://crystal-lang.org
-|hopl=no, HOPL only has an older "Crystal" language from 1986}}
+|site=http://crystal-lang.org}}
Crystal is a programming language with the following goals:
* Have the same syntax as Ruby, or at least as similar as possible.
* Never have to specify the type of a variable or method argument.
@@ -15,7 +14,4 @@ Crystal is a programming language with the following goals:
* Have compile-time evaluation and generation of code, to avoid boilerplate code.
* Compile to efficient native code.
-You can ask for help on LiberaChat in the [ircs://irc.libera.chat:6697#crystal-lang #crystal-lang] channel ([https://web.libera.chat/#crystal-lang web]).
-
-==Tasks not implemented in Crystal==
-[[Tasks not implemented in Crystal]]
\ No newline at end of file
+You can ask for help on Freenode in the #crystal-lang channel.
\ No newline at end of file
diff --git a/Lang/Crystal/ABC-problem b/Lang/Crystal/ABC-problem
deleted file mode 120000
index 4ebb385d2c..0000000000
--- a/Lang/Crystal/ABC-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/ABC-problem/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/ADFGVX-cipher b/Lang/Crystal/ADFGVX-cipher
deleted file mode 120000
index 20d511e75f..0000000000
--- a/Lang/Crystal/ADFGVX-cipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/ADFGVX-cipher/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/ASCII-art-diagram-converter b/Lang/Crystal/ASCII-art-diagram-converter
deleted file mode 120000
index 0f1238b276..0000000000
--- a/Lang/Crystal/ASCII-art-diagram-converter
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/ASCII-art-diagram-converter/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Abbreviations-automatic b/Lang/Crystal/Abbreviations-automatic
deleted file mode 120000
index 356658ce4c..0000000000
--- a/Lang/Crystal/Abbreviations-automatic
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abbreviations-automatic/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Abbreviations-easy b/Lang/Crystal/Abbreviations-easy
deleted file mode 120000
index b3a87e7119..0000000000
--- a/Lang/Crystal/Abbreviations-easy
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abbreviations-easy/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Abelian-sandpile-model b/Lang/Crystal/Abelian-sandpile-model
deleted file mode 120000
index 8c440adf10..0000000000
--- a/Lang/Crystal/Abelian-sandpile-model
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abelian-sandpile-model/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Abelian-sandpile-model-Identity b/Lang/Crystal/Abelian-sandpile-model-Identity
deleted file mode 120000
index ad1df3a714..0000000000
--- a/Lang/Crystal/Abelian-sandpile-model-Identity
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abelian-sandpile-model-Identity/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Abundant-deficient-and-perfect-number-classifications b/Lang/Crystal/Abundant-deficient-and-perfect-number-classifications
deleted file mode 120000
index 7cba469c21..0000000000
--- a/Lang/Crystal/Abundant-deficient-and-perfect-number-classifications
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abundant-deficient-and-perfect-number-classifications/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Abundant-odd-numbers b/Lang/Crystal/Abundant-odd-numbers
deleted file mode 120000
index 3676d5a336..0000000000
--- a/Lang/Crystal/Abundant-odd-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abundant-odd-numbers/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Achilles-numbers b/Lang/Crystal/Achilles-numbers
deleted file mode 120000
index baac6a0487..0000000000
--- a/Lang/Crystal/Achilles-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Achilles-numbers/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Add-a-variable-to-a-class-instance-at-runtime b/Lang/Crystal/Add-a-variable-to-a-class-instance-at-runtime
deleted file mode 120000
index 7c0d033962..0000000000
--- a/Lang/Crystal/Add-a-variable-to-a-class-instance-at-runtime
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Add-a-variable-to-a-class-instance-at-runtime/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Address-of-a-variable b/Lang/Crystal/Address-of-a-variable
deleted file mode 120000
index 55aa429a76..0000000000
--- a/Lang/Crystal/Address-of-a-variable
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Address-of-a-variable/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Align-columns b/Lang/Crystal/Align-columns
deleted file mode 120000
index 2ab766781e..0000000000
--- a/Lang/Crystal/Align-columns
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Align-columns/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Aliquot-sequence-classifications b/Lang/Crystal/Aliquot-sequence-classifications
deleted file mode 120000
index 7453e5fb67..0000000000
--- a/Lang/Crystal/Aliquot-sequence-classifications
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Aliquot-sequence-classifications/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Almost-prime b/Lang/Crystal/Almost-prime
deleted file mode 120000
index 782486465b..0000000000
--- a/Lang/Crystal/Almost-prime
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Almost-prime/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Amb b/Lang/Crystal/Amb
deleted file mode 120000
index 31a9ff96ef..0000000000
--- a/Lang/Crystal/Amb
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Amb/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Anagrams-Deranged-anagrams b/Lang/Crystal/Anagrams-Deranged-anagrams
deleted file mode 120000
index 01826ee4a9..0000000000
--- a/Lang/Crystal/Anagrams-Deranged-anagrams
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Anagrams-Deranged-anagrams/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Angle-difference-between-two-bearings b/Lang/Crystal/Angle-difference-between-two-bearings
deleted file mode 120000
index 80eb3d6093..0000000000
--- a/Lang/Crystal/Angle-difference-between-two-bearings
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Angle-difference-between-two-bearings/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Angles-geometric-normalization-and-conversion b/Lang/Crystal/Angles-geometric-normalization-and-conversion
deleted file mode 120000
index a07d6f6045..0000000000
--- a/Lang/Crystal/Angles-geometric-normalization-and-conversion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Angles-geometric-normalization-and-conversion/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Anonymous-recursion b/Lang/Crystal/Anonymous-recursion
deleted file mode 120000
index 8266f214bc..0000000000
--- a/Lang/Crystal/Anonymous-recursion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Anonymous-recursion/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Append-a-record-to-the-end-of-a-text-file b/Lang/Crystal/Append-a-record-to-the-end-of-a-text-file
deleted file mode 120000
index 2a2afc8f9c..0000000000
--- a/Lang/Crystal/Append-a-record-to-the-end-of-a-text-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Append-a-record-to-the-end-of-a-text-file/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Apply-a-digital-filter-direct-form-II-transposed- b/Lang/Crystal/Apply-a-digital-filter-direct-form-II-transposed-
deleted file mode 120000
index 4772cfa6a5..0000000000
--- a/Lang/Crystal/Apply-a-digital-filter-direct-form-II-transposed-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Apply-a-digital-filter-direct-form-II-transposed-/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Approximate-equality b/Lang/Crystal/Approximate-equality
deleted file mode 120000
index f45d53cb9c..0000000000
--- a/Lang/Crystal/Approximate-equality
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Approximate-equality/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Archimedean-spiral b/Lang/Crystal/Archimedean-spiral
deleted file mode 120000
index 38cdafc563..0000000000
--- a/Lang/Crystal/Archimedean-spiral
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Archimedean-spiral/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Arithmetic-Complex b/Lang/Crystal/Arithmetic-Complex
deleted file mode 120000
index db70676449..0000000000
--- a/Lang/Crystal/Arithmetic-Complex
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-Complex/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Arithmetic-Rational b/Lang/Crystal/Arithmetic-Rational
deleted file mode 120000
index 9934cb69b5..0000000000
--- a/Lang/Crystal/Arithmetic-Rational
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-Rational/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Arithmetic-derivative b/Lang/Crystal/Arithmetic-derivative
deleted file mode 120000
index afe551091f..0000000000
--- a/Lang/Crystal/Arithmetic-derivative
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-derivative/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Arithmetic-evaluation b/Lang/Crystal/Arithmetic-evaluation
deleted file mode 120000
index cefbf4e2d9..0000000000
--- a/Lang/Crystal/Arithmetic-evaluation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-evaluation/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Arithmetic-geometric-mean b/Lang/Crystal/Arithmetic-geometric-mean
deleted file mode 120000
index c8754aa805..0000000000
--- a/Lang/Crystal/Arithmetic-geometric-mean
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-geometric-mean/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Arithmetic-geometric-mean-Calculate-Pi b/Lang/Crystal/Arithmetic-geometric-mean-Calculate-Pi
deleted file mode 120000
index b641674514..0000000000
--- a/Lang/Crystal/Arithmetic-geometric-mean-Calculate-Pi
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-geometric-mean-Calculate-Pi/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Arithmetic-numbers b/Lang/Crystal/Arithmetic-numbers
deleted file mode 120000
index a07126fc36..0000000000
--- a/Lang/Crystal/Arithmetic-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-numbers/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Ascending-primes b/Lang/Crystal/Ascending-primes
deleted file mode 120000
index 159e1b5bed..0000000000
--- a/Lang/Crystal/Ascending-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ascending-primes/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Atomic-updates b/Lang/Crystal/Atomic-updates
deleted file mode 120000
index 332b197fee..0000000000
--- a/Lang/Crystal/Atomic-updates
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Atomic-updates/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Attractive-numbers b/Lang/Crystal/Attractive-numbers
deleted file mode 120000
index 04e80138ee..0000000000
--- a/Lang/Crystal/Attractive-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Attractive-numbers/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Average-loop-length b/Lang/Crystal/Average-loop-length
deleted file mode 120000
index 06beee4e14..0000000000
--- a/Lang/Crystal/Average-loop-length
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Average-loop-length/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Averages-Mean-angle b/Lang/Crystal/Averages-Mean-angle
deleted file mode 120000
index 8e548785b0..0000000000
--- a/Lang/Crystal/Averages-Mean-angle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Mean-angle/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Averages-Mean-time-of-day b/Lang/Crystal/Averages-Mean-time-of-day
deleted file mode 120000
index 4952b673eb..0000000000
--- a/Lang/Crystal/Averages-Mean-time-of-day
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Mean-time-of-day/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Averages-Mode b/Lang/Crystal/Averages-Mode
deleted file mode 120000
index bb15fa305b..0000000000
--- a/Lang/Crystal/Averages-Mode
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Mode/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Averages-Pythagorean-means b/Lang/Crystal/Averages-Pythagorean-means
deleted file mode 120000
index a97d5df819..0000000000
--- a/Lang/Crystal/Averages-Pythagorean-means
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Pythagorean-means/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Babbage-problem b/Lang/Crystal/Babbage-problem
deleted file mode 120000
index 7e1cc42ea8..0000000000
--- a/Lang/Crystal/Babbage-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Babbage-problem/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Babylonian-spiral b/Lang/Crystal/Babylonian-spiral
deleted file mode 120000
index 7478d85b07..0000000000
--- a/Lang/Crystal/Babylonian-spiral
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Babylonian-spiral/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Bell-numbers b/Lang/Crystal/Bell-numbers
deleted file mode 120000
index 3f05e224a6..0000000000
--- a/Lang/Crystal/Bell-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bell-numbers/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Bifid-cipher b/Lang/Crystal/Bifid-cipher
deleted file mode 120000
index 6b07c1520e..0000000000
--- a/Lang/Crystal/Bifid-cipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bifid-cipher/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Bin-given-limits b/Lang/Crystal/Bin-given-limits
deleted file mode 120000
index 40a049c833..0000000000
--- a/Lang/Crystal/Bin-given-limits
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bin-given-limits/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Bioinformatics-Global-alignment b/Lang/Crystal/Bioinformatics-Global-alignment
deleted file mode 120000
index b8310a94b2..0000000000
--- a/Lang/Crystal/Bioinformatics-Global-alignment
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bioinformatics-Global-alignment/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Biorhythms b/Lang/Crystal/Biorhythms
deleted file mode 120000
index adde97b4c1..0000000000
--- a/Lang/Crystal/Biorhythms
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Biorhythms/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Bitmap-Bresenhams-line-algorithm b/Lang/Crystal/Bitmap-Bresenhams-line-algorithm
deleted file mode 120000
index 680f0b15d0..0000000000
--- a/Lang/Crystal/Bitmap-Bresenhams-line-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bitmap-Bresenhams-line-algorithm/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Bitmap-Flood-fill b/Lang/Crystal/Bitmap-Flood-fill
deleted file mode 120000
index 82f2b7e4ae..0000000000
--- a/Lang/Crystal/Bitmap-Flood-fill
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bitmap-Flood-fill/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Bitmap-Midpoint-circle-algorithm b/Lang/Crystal/Bitmap-Midpoint-circle-algorithm
deleted file mode 120000
index fd45ea7903..0000000000
--- a/Lang/Crystal/Bitmap-Midpoint-circle-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bitmap-Midpoint-circle-algorithm/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Bitmap-Read-a-PPM-file b/Lang/Crystal/Bitmap-Read-a-PPM-file
deleted file mode 120000
index 72567511a0..0000000000
--- a/Lang/Crystal/Bitmap-Read-a-PPM-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bitmap-Read-a-PPM-file/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Bitmap-Write-a-PPM-file b/Lang/Crystal/Bitmap-Write-a-PPM-file
deleted file mode 120000
index 86ca9711aa..0000000000
--- a/Lang/Crystal/Bitmap-Write-a-PPM-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bitmap-Write-a-PPM-file/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Bitwise-operations b/Lang/Crystal/Bitwise-operations
deleted file mode 120000
index 1a5350f2cc..0000000000
--- a/Lang/Crystal/Bitwise-operations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bitwise-operations/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/CUSIP b/Lang/Crystal/CUSIP
deleted file mode 120000
index b88441138f..0000000000
--- a/Lang/Crystal/CUSIP
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/CUSIP/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Camel-case-and-snake-case b/Lang/Crystal/Camel-case-and-snake-case
deleted file mode 120000
index 04ca76eb1a..0000000000
--- a/Lang/Crystal/Camel-case-and-snake-case
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Camel-case-and-snake-case/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Catamorphism b/Lang/Crystal/Catamorphism
deleted file mode 120000
index 59ec253ef2..0000000000
--- a/Lang/Crystal/Catamorphism
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Catamorphism/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Chaocipher b/Lang/Crystal/Chaocipher
deleted file mode 120000
index b200ad768f..0000000000
--- a/Lang/Crystal/Chaocipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Chaocipher/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Character-codes b/Lang/Crystal/Character-codes
deleted file mode 120000
index bd4879b77c..0000000000
--- a/Lang/Crystal/Character-codes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Character-codes/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Cistercian-numerals b/Lang/Crystal/Cistercian-numerals
deleted file mode 120000
index b439a8a963..0000000000
--- a/Lang/Crystal/Cistercian-numerals
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cistercian-numerals/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Closures-Value-capture b/Lang/Crystal/Closures-Value-capture
deleted file mode 120000
index f3038be393..0000000000
--- a/Lang/Crystal/Closures-Value-capture
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Closures-Value-capture/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Color-wheel b/Lang/Crystal/Color-wheel
deleted file mode 120000
index b0d2a4f84a..0000000000
--- a/Lang/Crystal/Color-wheel
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Color-wheel/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Colour-bars-Display b/Lang/Crystal/Colour-bars-Display
deleted file mode 120000
index 0ec7f62738..0000000000
--- a/Lang/Crystal/Colour-bars-Display
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Colour-bars-Display/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Comma-quibbling b/Lang/Crystal/Comma-quibbling
deleted file mode 120000
index 3151a9c58f..0000000000
--- a/Lang/Crystal/Comma-quibbling
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Comma-quibbling/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Compare-a-list-of-strings b/Lang/Crystal/Compare-a-list-of-strings
deleted file mode 120000
index f978784371..0000000000
--- a/Lang/Crystal/Compare-a-list-of-strings
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compare-a-list-of-strings/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Compile-time-calculation b/Lang/Crystal/Compile-time-calculation
deleted file mode 120000
index 306dfbb009..0000000000
--- a/Lang/Crystal/Compile-time-calculation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compile-time-calculation/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Consecutive-primes-with-ascending-or-descending-differences b/Lang/Crystal/Consecutive-primes-with-ascending-or-descending-differences
deleted file mode 120000
index 697e7e52cd..0000000000
--- a/Lang/Crystal/Consecutive-primes-with-ascending-or-descending-differences
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Consecutive-primes-with-ascending-or-descending-differences/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Convert-seconds-to-compound-duration b/Lang/Crystal/Convert-seconds-to-compound-duration
deleted file mode 120000
index 313254bee3..0000000000
--- a/Lang/Crystal/Convert-seconds-to-compound-duration
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Convert-seconds-to-compound-duration/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Count-occurrences-of-a-substring b/Lang/Crystal/Count-occurrences-of-a-substring
deleted file mode 120000
index f235e95129..0000000000
--- a/Lang/Crystal/Count-occurrences-of-a-substring
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Count-occurrences-of-a-substring/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Cullen-and-Woodall-numbers b/Lang/Crystal/Cullen-and-Woodall-numbers
deleted file mode 120000
index 62ef13cd07..0000000000
--- a/Lang/Crystal/Cullen-and-Woodall-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cullen-and-Woodall-numbers/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Currency b/Lang/Crystal/Currency
deleted file mode 120000
index 275fd9dcb2..0000000000
--- a/Lang/Crystal/Currency
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Currency/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Day-of-the-week b/Lang/Crystal/Day-of-the-week
deleted file mode 120000
index 0f98ad94ee..0000000000
--- a/Lang/Crystal/Day-of-the-week
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Day-of-the-week/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Department-numbers b/Lang/Crystal/Department-numbers
deleted file mode 120000
index 1e36b398e9..0000000000
--- a/Lang/Crystal/Department-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Department-numbers/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Detect-division-by-zero b/Lang/Crystal/Detect-division-by-zero
deleted file mode 120000
index d23bedf4f0..0000000000
--- a/Lang/Crystal/Detect-division-by-zero
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Detect-division-by-zero/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Determine-if-a-string-has-all-the-same-characters b/Lang/Crystal/Determine-if-a-string-has-all-the-same-characters
deleted file mode 120000
index a0bef4d19a..0000000000
--- a/Lang/Crystal/Determine-if-a-string-has-all-the-same-characters
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-has-all-the-same-characters/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Determine-if-a-string-is-collapsible b/Lang/Crystal/Determine-if-a-string-is-collapsible
deleted file mode 120000
index 7e2d57c2cb..0000000000
--- a/Lang/Crystal/Determine-if-a-string-is-collapsible
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-is-collapsible/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Determine-if-a-string-is-numeric b/Lang/Crystal/Determine-if-a-string-is-numeric
deleted file mode 120000
index 907fa1cc6f..0000000000
--- a/Lang/Crystal/Determine-if-a-string-is-numeric
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-is-numeric/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Determine-sentence-type b/Lang/Crystal/Determine-sentence-type
deleted file mode 120000
index 95914c2896..0000000000
--- a/Lang/Crystal/Determine-sentence-type
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-sentence-type/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Digital-root-Multiplicative-digital-root b/Lang/Crystal/Digital-root-Multiplicative-digital-root
deleted file mode 120000
index 92366c8b32..0000000000
--- a/Lang/Crystal/Digital-root-Multiplicative-digital-root
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Digital-root-Multiplicative-digital-root/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Dijkstras-algorithm b/Lang/Crystal/Dijkstras-algorithm
deleted file mode 120000
index 829bbaa132..0000000000
--- a/Lang/Crystal/Dijkstras-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dijkstras-algorithm/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Diversity-prediction-theorem b/Lang/Crystal/Diversity-prediction-theorem
deleted file mode 120000
index bfb6463f86..0000000000
--- a/Lang/Crystal/Diversity-prediction-theorem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Diversity-prediction-theorem/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Dutch-national-flag-problem b/Lang/Crystal/Dutch-national-flag-problem
deleted file mode 120000
index a920e0b89a..0000000000
--- a/Lang/Crystal/Dutch-national-flag-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dutch-national-flag-problem/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Egyptian-division b/Lang/Crystal/Egyptian-division
deleted file mode 120000
index 6766caec22..0000000000
--- a/Lang/Crystal/Egyptian-division
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Egyptian-division/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Elementary-cellular-automaton b/Lang/Crystal/Elementary-cellular-automaton
deleted file mode 120000
index a397b94a1b..0000000000
--- a/Lang/Crystal/Elementary-cellular-automaton
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Elementary-cellular-automaton/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Elementary-cellular-automaton-Random-number-generator b/Lang/Crystal/Elementary-cellular-automaton-Random-number-generator
deleted file mode 120000
index 6d743a5fc8..0000000000
--- a/Lang/Crystal/Elementary-cellular-automaton-Random-number-generator
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Elementary-cellular-automaton-Random-number-generator/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Emirp-primes b/Lang/Crystal/Emirp-primes
deleted file mode 120000
index 6a762271db..0000000000
--- a/Lang/Crystal/Emirp-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Emirp-primes/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Empty-program b/Lang/Crystal/Empty-program
new file mode 120000
index 0000000000..78e7f559d2
--- /dev/null
+++ b/Lang/Crystal/Empty-program
@@ -0,0 +1 @@
+../../Task/Empty-program/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Enumerations b/Lang/Crystal/Enumerations
deleted file mode 120000
index 81276f7ab4..0000000000
--- a/Lang/Crystal/Enumerations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Enumerations/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Environment-variables b/Lang/Crystal/Environment-variables
deleted file mode 120000
index 17cbcdefee..0000000000
--- a/Lang/Crystal/Environment-variables
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Environment-variables/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Equilibrium-index b/Lang/Crystal/Equilibrium-index
deleted file mode 120000
index 1125331aa6..0000000000
--- a/Lang/Crystal/Equilibrium-index
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Equilibrium-index/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Ethiopian-multiplication b/Lang/Crystal/Ethiopian-multiplication
deleted file mode 120000
index e534df962f..0000000000
--- a/Lang/Crystal/Ethiopian-multiplication
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ethiopian-multiplication/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Evolutionary-algorithm b/Lang/Crystal/Evolutionary-algorithm
deleted file mode 120000
index a0bcba6242..0000000000
--- a/Lang/Crystal/Evolutionary-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Evolutionary-algorithm/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Execute-Brain- b/Lang/Crystal/Execute-Brain-
deleted file mode 120000
index 4ffee47edd..0000000000
--- a/Lang/Crystal/Execute-Brain-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Execute-Brain-/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Exponentiation-order b/Lang/Crystal/Exponentiation-order
deleted file mode 120000
index e7f6547257..0000000000
--- a/Lang/Crystal/Exponentiation-order
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Exponentiation-order/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Exponentiation-with-infix-operators-in-or-operating-on-the-base b/Lang/Crystal/Exponentiation-with-infix-operators-in-or-operating-on-the-base
deleted file mode 120000
index bea2082efb..0000000000
--- a/Lang/Crystal/Exponentiation-with-infix-operators-in-or-operating-on-the-base
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Exponentiation-with-infix-operators-in-or-operating-on-the-base/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Extensible-prime-generator b/Lang/Crystal/Extensible-prime-generator
deleted file mode 120000
index f7e46afa3d..0000000000
--- a/Lang/Crystal/Extensible-prime-generator
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Extensible-prime-generator/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/File-extension-is-in-extensions-list b/Lang/Crystal/File-extension-is-in-extensions-list
deleted file mode 120000
index d3f5d5ad97..0000000000
--- a/Lang/Crystal/File-extension-is-in-extensions-list
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/File-extension-is-in-extensions-list/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/File-modification-time b/Lang/Crystal/File-modification-time
deleted file mode 120000
index b3a7e1065d..0000000000
--- a/Lang/Crystal/File-modification-time
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/File-modification-time/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/File-size b/Lang/Crystal/File-size
deleted file mode 120000
index f7ccd8930e..0000000000
--- a/Lang/Crystal/File-size
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/File-size/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Filter b/Lang/Crystal/Filter
deleted file mode 120000
index 13d5962733..0000000000
--- a/Lang/Crystal/Filter
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Filter/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Find-if-a-point-is-within-a-triangle b/Lang/Crystal/Find-if-a-point-is-within-a-triangle
deleted file mode 120000
index a3ff575d32..0000000000
--- a/Lang/Crystal/Find-if-a-point-is-within-a-triangle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Find-if-a-point-is-within-a-triangle/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Find-the-last-Sunday-of-each-month b/Lang/Crystal/Find-the-last-Sunday-of-each-month
deleted file mode 120000
index b7448c15e3..0000000000
--- a/Lang/Crystal/Find-the-last-Sunday-of-each-month
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Find-the-last-Sunday-of-each-month/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/First-class-functions b/Lang/Crystal/First-class-functions
deleted file mode 120000
index 41628a5683..0000000000
--- a/Lang/Crystal/First-class-functions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/First-class-functions/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Five-weekends b/Lang/Crystal/Five-weekends
deleted file mode 120000
index aee26e19f7..0000000000
--- a/Lang/Crystal/Five-weekends
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Five-weekends/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Four-is-magic b/Lang/Crystal/Four-is-magic
deleted file mode 120000
index e56a866dc3..0000000000
--- a/Lang/Crystal/Four-is-magic
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Four-is-magic/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Function-definition b/Lang/Crystal/Function-definition
deleted file mode 120000
index 1fac36efe3..0000000000
--- a/Lang/Crystal/Function-definition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Function-definition/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Generate-lower-case-ASCII-alphabet b/Lang/Crystal/Generate-lower-case-ASCII-alphabet
deleted file mode 120000
index 8b481efdf1..0000000000
--- a/Lang/Crystal/Generate-lower-case-ASCII-alphabet
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Generate-lower-case-ASCII-alphabet/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Generator-Exponential b/Lang/Crystal/Generator-Exponential
deleted file mode 120000
index d9c996b99e..0000000000
--- a/Lang/Crystal/Generator-Exponential
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Generator-Exponential/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Get-system-command-output b/Lang/Crystal/Get-system-command-output
deleted file mode 120000
index 75fcf73ed6..0000000000
--- a/Lang/Crystal/Get-system-command-output
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Get-system-command-output/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Greatest-common-divisor b/Lang/Crystal/Greatest-common-divisor
deleted file mode 120000
index cac765e22c..0000000000
--- a/Lang/Crystal/Greatest-common-divisor
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Greatest-common-divisor/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Hello-world-Newline-omission b/Lang/Crystal/Hello-world-Newline-omission
deleted file mode 120000
index cf00f3e8a9..0000000000
--- a/Lang/Crystal/Hello-world-Newline-omission
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Newline-omission/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Hello-world-Standard-error b/Lang/Crystal/Hello-world-Standard-error
deleted file mode 120000
index 560e23c97c..0000000000
--- a/Lang/Crystal/Hello-world-Standard-error
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Standard-error/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Hex-words b/Lang/Crystal/Hex-words
deleted file mode 120000
index 1390f8d3e3..0000000000
--- a/Lang/Crystal/Hex-words
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hex-words/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Hofstadter-Q-sequence b/Lang/Crystal/Hofstadter-Q-sequence
deleted file mode 120000
index a856d63c6d..0000000000
--- a/Lang/Crystal/Hofstadter-Q-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hofstadter-Q-sequence/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/ISBN13-check-digit b/Lang/Crystal/ISBN13-check-digit
deleted file mode 120000
index eedbc71ec1..0000000000
--- a/Lang/Crystal/ISBN13-check-digit
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/ISBN13-check-digit/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Idiomatically-determine-all-the-lowercase-and-uppercase-letters b/Lang/Crystal/Idiomatically-determine-all-the-lowercase-and-uppercase-letters
deleted file mode 120000
index 9e0f4e23b4..0000000000
--- a/Lang/Crystal/Idiomatically-determine-all-the-lowercase-and-uppercase-letters
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Idiomatically-determine-all-the-lowercase-and-uppercase-letters/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Increment-a-numerical-string b/Lang/Crystal/Increment-a-numerical-string
deleted file mode 120000
index aeae95c765..0000000000
--- a/Lang/Crystal/Increment-a-numerical-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Increment-a-numerical-string/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Input-loop b/Lang/Crystal/Input-loop
deleted file mode 120000
index 27bc4f9208..0000000000
--- a/Lang/Crystal/Input-loop
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Input-loop/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Integer-comparison b/Lang/Crystal/Integer-comparison
deleted file mode 120000
index 1d8d9443a7..0000000000
--- a/Lang/Crystal/Integer-comparison
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Integer-comparison/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Integer-overflow b/Lang/Crystal/Integer-overflow
deleted file mode 120000
index 868816b94b..0000000000
--- a/Lang/Crystal/Integer-overflow
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Integer-overflow/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Interactive-programming-repl- b/Lang/Crystal/Interactive-programming-repl-
deleted file mode 120000
index 348f845b57..0000000000
--- a/Lang/Crystal/Interactive-programming-repl-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Interactive-programming-repl-/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Inverted-syntax b/Lang/Crystal/Inverted-syntax
deleted file mode 120000
index 33eb9c0c4b..0000000000
--- a/Lang/Crystal/Inverted-syntax
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Inverted-syntax/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Isograms-and-heterograms b/Lang/Crystal/Isograms-and-heterograms
deleted file mode 120000
index 46dc26699c..0000000000
--- a/Lang/Crystal/Isograms-and-heterograms
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Isograms-and-heterograms/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Isqrt-integer-square-root-of-X b/Lang/Crystal/Isqrt-integer-square-root-of-X
deleted file mode 120000
index d671dd4e29..0000000000
--- a/Lang/Crystal/Isqrt-integer-square-root-of-X
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Isqrt-integer-square-root-of-X/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Jacobsthal-numbers b/Lang/Crystal/Jacobsthal-numbers
deleted file mode 120000
index da4fc1eede..0000000000
--- a/Lang/Crystal/Jacobsthal-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jacobsthal-numbers/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Kernighans-large-earthquake-problem b/Lang/Crystal/Kernighans-large-earthquake-problem
deleted file mode 120000
index d6f60d2a2c..0000000000
--- a/Lang/Crystal/Kernighans-large-earthquake-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Kernighans-large-earthquake-problem/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Knuths-algorithm-S b/Lang/Crystal/Knuths-algorithm-S
deleted file mode 120000
index fbde0f33c9..0000000000
--- a/Lang/Crystal/Knuths-algorithm-S
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Knuths-algorithm-S/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Langtons-ant b/Lang/Crystal/Langtons-ant
deleted file mode 120000
index accd634e59..0000000000
--- a/Lang/Crystal/Langtons-ant
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Langtons-ant/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Last-Friday-of-each-month b/Lang/Crystal/Last-Friday-of-each-month
deleted file mode 120000
index 5dd6eb4e30..0000000000
--- a/Lang/Crystal/Last-Friday-of-each-month
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Last-Friday-of-each-month/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Least-common-multiple b/Lang/Crystal/Least-common-multiple
deleted file mode 120000
index ab85fbea40..0000000000
--- a/Lang/Crystal/Least-common-multiple
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Least-common-multiple/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Letter-frequency b/Lang/Crystal/Letter-frequency
deleted file mode 120000
index 9aed428d1c..0000000000
--- a/Lang/Crystal/Letter-frequency
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Letter-frequency/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Logical-operations b/Lang/Crystal/Logical-operations
deleted file mode 120000
index efa5e278dd..0000000000
--- a/Lang/Crystal/Logical-operations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Logical-operations/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Logistic-curve-fitting-in-epidemiology b/Lang/Crystal/Logistic-curve-fitting-in-epidemiology
deleted file mode 120000
index c8d098d82a..0000000000
--- a/Lang/Crystal/Logistic-curve-fitting-in-epidemiology
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Logistic-curve-fitting-in-epidemiology/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Long-year b/Lang/Crystal/Long-year
deleted file mode 120000
index 2a978e84d7..0000000000
--- a/Lang/Crystal/Long-year
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Long-year/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Longest-string-challenge b/Lang/Crystal/Longest-string-challenge
deleted file mode 120000
index 8a9ac3dfd0..0000000000
--- a/Lang/Crystal/Longest-string-challenge
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Longest-string-challenge/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Loops-Do-while b/Lang/Crystal/Loops-Do-while
deleted file mode 120000
index 16d73545fb..0000000000
--- a/Lang/Crystal/Loops-Do-while
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Do-while/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Loops-Foreach b/Lang/Crystal/Loops-Foreach
deleted file mode 120000
index c20a1c8c2c..0000000000
--- a/Lang/Crystal/Loops-Foreach
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Foreach/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Loops-N-plus-one-half b/Lang/Crystal/Loops-N-plus-one-half
deleted file mode 120000
index baee612204..0000000000
--- a/Lang/Crystal/Loops-N-plus-one-half
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-N-plus-one-half/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Loops-With-multiple-ranges b/Lang/Crystal/Loops-With-multiple-ranges
deleted file mode 120000
index a0c34f1c73..0000000000
--- a/Lang/Crystal/Loops-With-multiple-ranges
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-With-multiple-ranges/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Loops-Wrong-ranges b/Lang/Crystal/Loops-Wrong-ranges
deleted file mode 120000
index 402c2c3d6b..0000000000
--- a/Lang/Crystal/Loops-Wrong-ranges
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Wrong-ranges/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Magic-8-ball b/Lang/Crystal/Magic-8-ball
deleted file mode 120000
index 7694de9dbd..0000000000
--- a/Lang/Crystal/Magic-8-ball
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Magic-8-ball/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Magnanimous-numbers b/Lang/Crystal/Magnanimous-numbers
deleted file mode 120000
index f025f31b2f..0000000000
--- a/Lang/Crystal/Magnanimous-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Magnanimous-numbers/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Map-range b/Lang/Crystal/Map-range
deleted file mode 120000
index 2ce80c8e32..0000000000
--- a/Lang/Crystal/Map-range
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Map-range/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Middle-three-digits b/Lang/Crystal/Middle-three-digits
deleted file mode 120000
index c195484a68..0000000000
--- a/Lang/Crystal/Middle-three-digits
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Middle-three-digits/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Miller-Rabin-primality-test b/Lang/Crystal/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..3714050251
--- /dev/null
+++ b/Lang/Crystal/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Move-to-front-algorithm b/Lang/Crystal/Move-to-front-algorithm
deleted file mode 120000
index 1fc15ab4a7..0000000000
--- a/Lang/Crystal/Move-to-front-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Move-to-front-algorithm/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Narcissistic-decimal-number b/Lang/Crystal/Narcissistic-decimal-number
deleted file mode 120000
index 7713050610..0000000000
--- a/Lang/Crystal/Narcissistic-decimal-number
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Narcissistic-decimal-number/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Nested-function b/Lang/Crystal/Nested-function
deleted file mode 120000
index 4453485348..0000000000
--- a/Lang/Crystal/Nested-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nested-function/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Non-decimal-radices-Convert b/Lang/Crystal/Non-decimal-radices-Convert
deleted file mode 120000
index 342df0f845..0000000000
--- a/Lang/Crystal/Non-decimal-radices-Convert
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Non-decimal-radices-Convert/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Number-names b/Lang/Crystal/Number-names
deleted file mode 120000
index 65ddc62215..0000000000
--- a/Lang/Crystal/Number-names
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Number-names/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Numbers-with-equal-rises-and-falls b/Lang/Crystal/Numbers-with-equal-rises-and-falls
deleted file mode 120000
index 6aa2426e57..0000000000
--- a/Lang/Crystal/Numbers-with-equal-rises-and-falls
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Numbers-with-equal-rises-and-falls/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/One-dimensional-cellular-automata b/Lang/Crystal/One-dimensional-cellular-automata
deleted file mode 120000
index e519134b4d..0000000000
--- a/Lang/Crystal/One-dimensional-cellular-automata
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/One-dimensional-cellular-automata/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Order-by-pair-comparisons b/Lang/Crystal/Order-by-pair-comparisons
deleted file mode 120000
index 7f819e26a0..0000000000
--- a/Lang/Crystal/Order-by-pair-comparisons
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Order-by-pair-comparisons/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Order-two-numerical-lists b/Lang/Crystal/Order-two-numerical-lists
deleted file mode 120000
index 44bdc040e5..0000000000
--- a/Lang/Crystal/Order-two-numerical-lists
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Order-two-numerical-lists/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Ordered-words b/Lang/Crystal/Ordered-words
deleted file mode 120000
index 52c1bed5c6..0000000000
--- a/Lang/Crystal/Ordered-words
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ordered-words/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Palindrome-dates b/Lang/Crystal/Palindrome-dates
deleted file mode 120000
index e9d9714cac..0000000000
--- a/Lang/Crystal/Palindrome-dates
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Palindrome-dates/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Parallel-brute-force b/Lang/Crystal/Parallel-brute-force
deleted file mode 120000
index 496ce76b45..0000000000
--- a/Lang/Crystal/Parallel-brute-force
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Parallel-brute-force/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Parse-an-IP-Address b/Lang/Crystal/Parse-an-IP-Address
deleted file mode 120000
index 940d156ab2..0000000000
--- a/Lang/Crystal/Parse-an-IP-Address
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Parse-an-IP-Address/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Parsing-RPN-calculator-algorithm b/Lang/Crystal/Parsing-RPN-calculator-algorithm
deleted file mode 120000
index 79e0e2ae7e..0000000000
--- a/Lang/Crystal/Parsing-RPN-calculator-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Parsing-RPN-calculator-algorithm/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Parsing-RPN-to-infix-conversion b/Lang/Crystal/Parsing-RPN-to-infix-conversion
deleted file mode 120000
index e19adc6368..0000000000
--- a/Lang/Crystal/Parsing-RPN-to-infix-conversion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Parsing-RPN-to-infix-conversion/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Parsing-Shunting-yard-algorithm b/Lang/Crystal/Parsing-Shunting-yard-algorithm
deleted file mode 120000
index a18ff957d5..0000000000
--- a/Lang/Crystal/Parsing-Shunting-yard-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Parsing-Shunting-yard-algorithm/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Partial-function-application b/Lang/Crystal/Partial-function-application
deleted file mode 120000
index 06b96bb5bb..0000000000
--- a/Lang/Crystal/Partial-function-application
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Partial-function-application/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Perfect-numbers b/Lang/Crystal/Perfect-numbers
deleted file mode 120000
index 708a2045e2..0000000000
--- a/Lang/Crystal/Perfect-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Perfect-numbers/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Phrase-reversals b/Lang/Crystal/Phrase-reversals
deleted file mode 120000
index 7a12cc6718..0000000000
--- a/Lang/Crystal/Phrase-reversals
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Phrase-reversals/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Power-set b/Lang/Crystal/Power-set
deleted file mode 120000
index 0fd70fd5b9..0000000000
--- a/Lang/Crystal/Power-set
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Power-set/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Priority-queue b/Lang/Crystal/Priority-queue
deleted file mode 120000
index 4f7dddb139..0000000000
--- a/Lang/Crystal/Priority-queue
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Priority-queue/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Program-name b/Lang/Crystal/Program-name
deleted file mode 120000
index 0398fe1a1e..0000000000
--- a/Lang/Crystal/Program-name
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Program-name/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Quaternion-type b/Lang/Crystal/Quaternion-type
new file mode 120000
index 0000000000..5a28c33333
--- /dev/null
+++ b/Lang/Crystal/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Random-sentence-from-book b/Lang/Crystal/Random-sentence-from-book
deleted file mode 120000
index 916a4913b6..0000000000
--- a/Lang/Crystal/Random-sentence-from-book
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Random-sentence-from-book/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Range-extraction b/Lang/Crystal/Range-extraction
deleted file mode 120000
index 984878874c..0000000000
--- a/Lang/Crystal/Range-extraction
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Range-extraction/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Regular-expressions b/Lang/Crystal/Regular-expressions
deleted file mode 120000
index 1e1b324d69..0000000000
--- a/Lang/Crystal/Regular-expressions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Regular-expressions/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Repeat b/Lang/Crystal/Repeat
deleted file mode 120000
index cbbc5973da..0000000000
--- a/Lang/Crystal/Repeat
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Repeat/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Return-multiple-values b/Lang/Crystal/Return-multiple-values
deleted file mode 120000
index df0883e4b0..0000000000
--- a/Lang/Crystal/Return-multiple-values
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Return-multiple-values/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Reverse-words-in-a-string b/Lang/Crystal/Reverse-words-in-a-string
deleted file mode 120000
index 44576bae9a..0000000000
--- a/Lang/Crystal/Reverse-words-in-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Reverse-words-in-a-string/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Rosetta-Code-Rank-languages-by-popularity b/Lang/Crystal/Rosetta-Code-Rank-languages-by-popularity
deleted file mode 120000
index 69fe9e65d5..0000000000
--- a/Lang/Crystal/Rosetta-Code-Rank-languages-by-popularity
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Rosetta-Code-Rank-languages-by-popularity/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Rot-13 b/Lang/Crystal/Rot-13
deleted file mode 120000
index 430011bd06..0000000000
--- a/Lang/Crystal/Rot-13
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Rot-13/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Run-length-encoding b/Lang/Crystal/Run-length-encoding
deleted file mode 120000
index 1a2b6b241a..0000000000
--- a/Lang/Crystal/Run-length-encoding
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Run-length-encoding/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Search-a-list b/Lang/Crystal/Search-a-list
deleted file mode 120000
index 975cbb3120..0000000000
--- a/Lang/Crystal/Search-a-list
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Search-a-list/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Sequence-of-non-squares b/Lang/Crystal/Sequence-of-non-squares
deleted file mode 120000
index 4854c5c8ce..0000000000
--- a/Lang/Crystal/Sequence-of-non-squares
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sequence-of-non-squares/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Set b/Lang/Crystal/Set
deleted file mode 120000
index 09e0457880..0000000000
--- a/Lang/Crystal/Set
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Set/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Short-circuit-evaluation b/Lang/Crystal/Short-circuit-evaluation
deleted file mode 120000
index 42f8d1e06a..0000000000
--- a/Lang/Crystal/Short-circuit-evaluation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Short-circuit-evaluation/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Simple-database b/Lang/Crystal/Simple-database
deleted file mode 120000
index 91a24ce202..0000000000
--- a/Lang/Crystal/Simple-database
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Simple-database/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Singly-linked-list-Element-definition b/Lang/Crystal/Singly-linked-list-Element-definition
deleted file mode 120000
index 1c9a4e215c..0000000000
--- a/Lang/Crystal/Singly-linked-list-Element-definition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Singly-linked-list-Element-definition/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Singly-linked-list-Element-insertion b/Lang/Crystal/Singly-linked-list-Element-insertion
deleted file mode 120000
index e0de17b549..0000000000
--- a/Lang/Crystal/Singly-linked-list-Element-insertion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Singly-linked-list-Element-insertion/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Singly-linked-list-Traversal b/Lang/Crystal/Singly-linked-list-Traversal
deleted file mode 120000
index e89e5d42db..0000000000
--- a/Lang/Crystal/Singly-linked-list-Traversal
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Singly-linked-list-Traversal/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Sleep b/Lang/Crystal/Sleep
deleted file mode 120000
index 1648e77b82..0000000000
--- a/Lang/Crystal/Sleep
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sleep/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Sleeping-Beauty-problem b/Lang/Crystal/Sleeping-Beauty-problem
deleted file mode 120000
index 50b43e53b7..0000000000
--- a/Lang/Crystal/Sleeping-Beauty-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sleeping-Beauty-problem/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Soloways-recurring-rainfall b/Lang/Crystal/Soloways-recurring-rainfall
deleted file mode 120000
index 017187c230..0000000000
--- a/Lang/Crystal/Soloways-recurring-rainfall
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Soloways-recurring-rainfall/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Sort-a-list-of-object-identifiers b/Lang/Crystal/Sort-a-list-of-object-identifiers
deleted file mode 120000
index 2b599d3df1..0000000000
--- a/Lang/Crystal/Sort-a-list-of-object-identifiers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-a-list-of-object-identifiers/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Sort-an-array-of-composite-structures b/Lang/Crystal/Sort-an-array-of-composite-structures
deleted file mode 120000
index 5ea781aef9..0000000000
--- a/Lang/Crystal/Sort-an-array-of-composite-structures
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-an-array-of-composite-structures/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Sort-disjoint-sublist b/Lang/Crystal/Sort-disjoint-sublist
deleted file mode 120000
index a252445ff4..0000000000
--- a/Lang/Crystal/Sort-disjoint-sublist
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-disjoint-sublist/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Sort-numbers-lexicographically b/Lang/Crystal/Sort-numbers-lexicographically
deleted file mode 120000
index 884dc88521..0000000000
--- a/Lang/Crystal/Sort-numbers-lexicographically
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-numbers-lexicographically/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Sort-three-variables b/Lang/Crystal/Sort-three-variables
deleted file mode 120000
index e206daaf02..0000000000
--- a/Lang/Crystal/Sort-three-variables
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-three-variables/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Sort-using-a-custom-comparator b/Lang/Crystal/Sort-using-a-custom-comparator
deleted file mode 120000
index 0614ceb188..0000000000
--- a/Lang/Crystal/Sort-using-a-custom-comparator
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-using-a-custom-comparator/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Sorting-algorithms-Bubble-sort b/Lang/Crystal/Sorting-algorithms-Bubble-sort
deleted file mode 120000
index 88a150acfe..0000000000
--- a/Lang/Crystal/Sorting-algorithms-Bubble-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Bubble-sort/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Sorting-algorithms-Stooge-sort b/Lang/Crystal/Sorting-algorithms-Stooge-sort
deleted file mode 120000
index 9882d0a5e5..0000000000
--- a/Lang/Crystal/Sorting-algorithms-Stooge-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Stooge-sort/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Sparkline-in-unicode b/Lang/Crystal/Sparkline-in-unicode
deleted file mode 120000
index 986b27240a..0000000000
--- a/Lang/Crystal/Sparkline-in-unicode
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sparkline-in-unicode/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Spelling-of-ordinal-numbers b/Lang/Crystal/Spelling-of-ordinal-numbers
deleted file mode 120000
index 68e66511d0..0000000000
--- a/Lang/Crystal/Spelling-of-ordinal-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Spelling-of-ordinal-numbers/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Split-a-character-string-based-on-change-of-character b/Lang/Crystal/Split-a-character-string-based-on-change-of-character
deleted file mode 120000
index 874feaced9..0000000000
--- a/Lang/Crystal/Split-a-character-string-based-on-change-of-character
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Split-a-character-string-based-on-change-of-character/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Stack-traces b/Lang/Crystal/Stack-traces
deleted file mode 120000
index 9cc8cddb52..0000000000
--- a/Lang/Crystal/Stack-traces
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Stack-traces/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Stem-and-leaf-plot b/Lang/Crystal/Stem-and-leaf-plot
deleted file mode 120000
index 4fac378f12..0000000000
--- a/Lang/Crystal/Stem-and-leaf-plot
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Stem-and-leaf-plot/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Stirling-numbers-of-the-first-kind b/Lang/Crystal/Stirling-numbers-of-the-first-kind
deleted file mode 120000
index 8a52252a36..0000000000
--- a/Lang/Crystal/Stirling-numbers-of-the-first-kind
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Stirling-numbers-of-the-first-kind/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Straddling-checkerboard b/Lang/Crystal/Straddling-checkerboard
deleted file mode 120000
index 1550d42cee..0000000000
--- a/Lang/Crystal/Straddling-checkerboard
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Straddling-checkerboard/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/String-append b/Lang/Crystal/String-append
deleted file mode 120000
index 4f16bddd70..0000000000
--- a/Lang/Crystal/String-append
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-append/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/String-concatenation b/Lang/Crystal/String-concatenation
deleted file mode 120000
index 1237b70607..0000000000
--- a/Lang/Crystal/String-concatenation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-concatenation/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/String-interpolation-included- b/Lang/Crystal/String-interpolation-included-
deleted file mode 120000
index 05bff0aabd..0000000000
--- a/Lang/Crystal/String-interpolation-included-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-interpolation-included-/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/String-matching b/Lang/Crystal/String-matching
deleted file mode 120000
index 439dd1fa36..0000000000
--- a/Lang/Crystal/String-matching
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-matching/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/String-prepend b/Lang/Crystal/String-prepend
deleted file mode 120000
index 2c5c171e4c..0000000000
--- a/Lang/Crystal/String-prepend
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-prepend/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Strip-a-set-of-characters-from-a-string b/Lang/Crystal/Strip-a-set-of-characters-from-a-string
deleted file mode 120000
index 7c09aa4ce1..0000000000
--- a/Lang/Crystal/Strip-a-set-of-characters-from-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strip-a-set-of-characters-from-a-string/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Strip-block-comments b/Lang/Crystal/Strip-block-comments
deleted file mode 120000
index 2a4303ed27..0000000000
--- a/Lang/Crystal/Strip-block-comments
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strip-block-comments/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Strip-comments-from-a-string b/Lang/Crystal/Strip-comments-from-a-string
deleted file mode 120000
index bf4a72832d..0000000000
--- a/Lang/Crystal/Strip-comments-from-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strip-comments-from-a-string/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Strip-control-codes-and-extended-characters-from-a-string b/Lang/Crystal/Strip-control-codes-and-extended-characters-from-a-string
deleted file mode 120000
index 2831009e2a..0000000000
--- a/Lang/Crystal/Strip-control-codes-and-extended-characters-from-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strip-control-codes-and-extended-characters-from-a-string/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Substring-Top-and-tail b/Lang/Crystal/Substring-Top-and-tail
deleted file mode 120000
index d3af8a2b7f..0000000000
--- a/Lang/Crystal/Substring-Top-and-tail
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Substring-Top-and-tail/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Sudan-function b/Lang/Crystal/Sudan-function
deleted file mode 120000
index a75bf5defc..0000000000
--- a/Lang/Crystal/Sudan-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sudan-function/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Sum-to-100 b/Lang/Crystal/Sum-to-100
deleted file mode 120000
index 02859f9ab7..0000000000
--- a/Lang/Crystal/Sum-to-100
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sum-to-100/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Summarize-and-say-sequence b/Lang/Crystal/Summarize-and-say-sequence
deleted file mode 120000
index ac69b16598..0000000000
--- a/Lang/Crystal/Summarize-and-say-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Summarize-and-say-sequence/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Sylvesters-sequence b/Lang/Crystal/Sylvesters-sequence
deleted file mode 120000
index cd026cc33a..0000000000
--- a/Lang/Crystal/Sylvesters-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sylvesters-sequence/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Symmetric-difference b/Lang/Crystal/Symmetric-difference
deleted file mode 120000
index 566657d82c..0000000000
--- a/Lang/Crystal/Symmetric-difference
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Symmetric-difference/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Take-notes-on-the-command-line b/Lang/Crystal/Take-notes-on-the-command-line
deleted file mode 120000
index e978486e4d..0000000000
--- a/Lang/Crystal/Take-notes-on-the-command-line
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Take-notes-on-the-command-line/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Temperature-conversion b/Lang/Crystal/Temperature-conversion
deleted file mode 120000
index d97258c24c..0000000000
--- a/Lang/Crystal/Temperature-conversion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Temperature-conversion/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Ternary-logic b/Lang/Crystal/Ternary-logic
deleted file mode 120000
index adfcdc28dd..0000000000
--- a/Lang/Crystal/Ternary-logic
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ternary-logic/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Textonyms b/Lang/Crystal/Textonyms
deleted file mode 120000
index e9c8a3c5ec..0000000000
--- a/Lang/Crystal/Textonyms
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Textonyms/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Towers-of-Hanoi b/Lang/Crystal/Towers-of-Hanoi
deleted file mode 120000
index 49ee652bdd..0000000000
--- a/Lang/Crystal/Towers-of-Hanoi
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Towers-of-Hanoi/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Transliterate-English-text-using-the-Greek-alphabet b/Lang/Crystal/Transliterate-English-text-using-the-Greek-alphabet
deleted file mode 120000
index cb70d2aa14..0000000000
--- a/Lang/Crystal/Transliterate-English-text-using-the-Greek-alphabet
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Transliterate-English-text-using-the-Greek-alphabet/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Truncate-a-file b/Lang/Crystal/Truncate-a-file
deleted file mode 120000
index a75ef5468d..0000000000
--- a/Lang/Crystal/Truncate-a-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Truncate-a-file/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Truth-table b/Lang/Crystal/Truth-table
deleted file mode 120000
index 7f3aa2a526..0000000000
--- a/Lang/Crystal/Truth-table
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Truth-table/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Twos-complement b/Lang/Crystal/Twos-complement
deleted file mode 120000
index 2272e1c36b..0000000000
--- a/Lang/Crystal/Twos-complement
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Twos-complement/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/UPC b/Lang/Crystal/UPC
deleted file mode 120000
index b4d8d405f7..0000000000
--- a/Lang/Crystal/UPC
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/UPC/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/UTF-8-encode-and-decode b/Lang/Crystal/UTF-8-encode-and-decode
deleted file mode 120000
index acebf418fa..0000000000
--- a/Lang/Crystal/UTF-8-encode-and-decode
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/UTF-8-encode-and-decode/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Van-der-Corput-sequence b/Lang/Crystal/Van-der-Corput-sequence
deleted file mode 120000
index c9bba5d9e9..0000000000
--- a/Lang/Crystal/Van-der-Corput-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Van-der-Corput-sequence/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Variable-length-quantity b/Lang/Crystal/Variable-length-quantity
deleted file mode 120000
index 4664ff0cf8..0000000000
--- a/Lang/Crystal/Variable-length-quantity
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Variable-length-quantity/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Vector b/Lang/Crystal/Vector
deleted file mode 120000
index eff97fd6f9..0000000000
--- a/Lang/Crystal/Vector
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Vector/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Wagstaff-primes b/Lang/Crystal/Wagstaff-primes
deleted file mode 120000
index ce243d1192..0000000000
--- a/Lang/Crystal/Wagstaff-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Wagstaff-primes/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Wordiff b/Lang/Crystal/Wordiff
deleted file mode 120000
index fcf6f8935c..0000000000
--- a/Lang/Crystal/Wordiff
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Wordiff/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Write-entire-file b/Lang/Crystal/Write-entire-file
deleted file mode 120000
index f56680457a..0000000000
--- a/Lang/Crystal/Write-entire-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Write-entire-file/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Write-language-name-in-3D-ASCII b/Lang/Crystal/Write-language-name-in-3D-ASCII
deleted file mode 120000
index 668585ccef..0000000000
--- a/Lang/Crystal/Write-language-name-in-3D-ASCII
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Write-language-name-in-3D-ASCII/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/XML-Input b/Lang/Crystal/XML-Input
deleted file mode 120000
index 186294c638..0000000000
--- a/Lang/Crystal/XML-Input
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/XML-Input/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/XML-XPath b/Lang/Crystal/XML-XPath
deleted file mode 120000
index cc58f19135..0000000000
--- a/Lang/Crystal/XML-XPath
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/XML-XPath/Crystal
\ No newline at end of file
diff --git a/Lang/Crystal/Yellowstone-sequence b/Lang/Crystal/Yellowstone-sequence
deleted file mode 120000
index e0ffb2052b..0000000000
--- a/Lang/Crystal/Yellowstone-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Yellowstone-sequence/Crystal
\ No newline at end of file
diff --git a/Lang/D/Find-Chess960-starting-position-identifier b/Lang/D/Find-Chess960-starting-position-identifier
deleted file mode 120000
index 79e07139b9..0000000000
--- a/Lang/D/Find-Chess960-starting-position-identifier
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Find-Chess960-starting-position-identifier/D
\ No newline at end of file
diff --git a/Lang/D/Miller-Rabin-primality-test b/Lang/D/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..407bdbfce4
--- /dev/null
+++ b/Lang/D/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/D
\ No newline at end of file
diff --git a/Lang/D/Quaternion-type b/Lang/D/Quaternion-type
new file mode 120000
index 0000000000..4703070a3f
--- /dev/null
+++ b/Lang/D/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/D
\ No newline at end of file
diff --git a/Lang/D/Sequence:-nth-number-with-exactly-n-divisors b/Lang/D/Sequence-nth-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/D/Sequence:-nth-number-with-exactly-n-divisors
rename to Lang/D/Sequence-nth-number-with-exactly-n-divisors
diff --git a/Lang/D/Sorting-Algorithms-Circle-Sort b/Lang/D/Sorting-Algorithms-Circle-Sort
new file mode 120000
index 0000000000..950d2a1c8c
--- /dev/null
+++ b/Lang/D/Sorting-Algorithms-Circle-Sort
@@ -0,0 +1 @@
+../../Task/Sorting-Algorithms-Circle-Sort/D
\ No newline at end of file
diff --git a/Lang/Dart/15-puzzle-solver b/Lang/Dart/15-puzzle-solver
deleted file mode 120000
index 9e8e216a39..0000000000
--- a/Lang/Dart/15-puzzle-solver
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/15-puzzle-solver/Dart
\ No newline at end of file
diff --git a/Lang/Dart/24-game-Solve b/Lang/Dart/24-game-Solve
deleted file mode 120000
index ae64875d6c..0000000000
--- a/Lang/Dart/24-game-Solve
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/24-game-Solve/Dart
\ No newline at end of file
diff --git a/Lang/Dart/AVL-tree b/Lang/Dart/AVL-tree
deleted file mode 120000
index 00bc5f9c2f..0000000000
--- a/Lang/Dart/AVL-tree
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/AVL-tree/Dart
\ No newline at end of file
diff --git a/Lang/Dart/Benfords-law b/Lang/Dart/Benfords-law
deleted file mode 120000
index bccac375ec..0000000000
--- a/Lang/Dart/Benfords-law
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Benfords-law/Dart
\ No newline at end of file
diff --git a/Lang/Dart/Boyer-Moore-string-search b/Lang/Dart/Boyer-Moore-string-search
deleted file mode 120000
index 8b8a6a6060..0000000000
--- a/Lang/Dart/Boyer-Moore-string-search
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Boyer-Moore-string-search/Dart
\ No newline at end of file
diff --git a/Lang/Dart/Break-OO-privacy b/Lang/Dart/Break-OO-privacy
deleted file mode 120000
index e07e79a6ca..0000000000
--- a/Lang/Dart/Break-OO-privacy
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Break-OO-privacy/Dart
\ No newline at end of file
diff --git a/Lang/Dart/Character-codes b/Lang/Dart/Character-codes
deleted file mode 120000
index eee070c4f5..0000000000
--- a/Lang/Dart/Character-codes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Character-codes/Dart
\ No newline at end of file
diff --git a/Lang/Dart/Continued-fraction b/Lang/Dart/Continued-fraction
deleted file mode 120000
index ea5b665958..0000000000
--- a/Lang/Dart/Continued-fraction
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Continued-fraction/Dart
\ No newline at end of file
diff --git a/Lang/Dart/Continued-fraction-Arithmetic-G-matrix-ng-continued-fraction-n- b/Lang/Dart/Continued-fraction-Arithmetic-G-matrix-ng-continued-fraction-n-
deleted file mode 120000
index eb55960eb5..0000000000
--- a/Lang/Dart/Continued-fraction-Arithmetic-G-matrix-ng-continued-fraction-n-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Continued-fraction-Arithmetic-G-matrix-ng-continued-fraction-n-/Dart
\ No newline at end of file
diff --git a/Lang/Dart/Cullen-and-Woodall-numbers b/Lang/Dart/Cullen-and-Woodall-numbers
deleted file mode 120000
index 573f34cd4f..0000000000
--- a/Lang/Dart/Cullen-and-Woodall-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cullen-and-Woodall-numbers/Dart
\ No newline at end of file
diff --git a/Lang/Dart/Day-of-the-week b/Lang/Dart/Day-of-the-week
deleted file mode 120000
index 15dd0e18f6..0000000000
--- a/Lang/Dart/Day-of-the-week
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Day-of-the-week/Dart
\ No newline at end of file
diff --git a/Lang/Dart/De-Bruijn-sequences b/Lang/Dart/De-Bruijn-sequences
deleted file mode 120000
index f7a9a5e2e1..0000000000
--- a/Lang/Dart/De-Bruijn-sequences
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/De-Bruijn-sequences/Dart
\ No newline at end of file
diff --git a/Lang/Dart/Determine-sentence-type b/Lang/Dart/Determine-sentence-type
deleted file mode 120000
index cbfbfb1793..0000000000
--- a/Lang/Dart/Determine-sentence-type
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-sentence-type/Dart
\ No newline at end of file
diff --git a/Lang/Dart/Dijkstras-algorithm b/Lang/Dart/Dijkstras-algorithm
deleted file mode 120000
index fc7b73a06b..0000000000
--- a/Lang/Dart/Dijkstras-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dijkstras-algorithm/Dart
\ No newline at end of file
diff --git a/Lang/Dart/Diversity-prediction-theorem b/Lang/Dart/Diversity-prediction-theorem
deleted file mode 120000
index 525bb8c4cf..0000000000
--- a/Lang/Dart/Diversity-prediction-theorem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Diversity-prediction-theorem/Dart
\ No newline at end of file
diff --git a/Lang/Dart/Floyd-Warshall-algorithm b/Lang/Dart/Floyd-Warshall-algorithm
deleted file mode 120000
index 34dc98809b..0000000000
--- a/Lang/Dart/Floyd-Warshall-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Floyd-Warshall-algorithm/Dart
\ No newline at end of file
diff --git a/Lang/Dart/Generate-lower-case-ASCII-alphabet b/Lang/Dart/Generate-lower-case-ASCII-alphabet
deleted file mode 120000
index 947014123e..0000000000
--- a/Lang/Dart/Generate-lower-case-ASCII-alphabet
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Generate-lower-case-ASCII-alphabet/Dart
\ No newline at end of file
diff --git a/Lang/Dart/Iterated-digits-squaring b/Lang/Dart/Iterated-digits-squaring
deleted file mode 120000
index 87955b71c0..0000000000
--- a/Lang/Dart/Iterated-digits-squaring
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Iterated-digits-squaring/Dart
\ No newline at end of file
diff --git a/Lang/Dart/Jensens-Device b/Lang/Dart/Jensens-Device
deleted file mode 120000
index 973fbf791f..0000000000
--- a/Lang/Dart/Jensens-Device
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jensens-Device/Dart
\ No newline at end of file
diff --git a/Lang/Dart/Jewels-and-stones b/Lang/Dart/Jewels-and-stones
deleted file mode 120000
index 8673bcd41d..0000000000
--- a/Lang/Dart/Jewels-and-stones
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jewels-and-stones/Dart
\ No newline at end of file
diff --git a/Lang/Dart/K-d-tree b/Lang/Dart/K-d-tree
deleted file mode 120000
index 4b4a8013e5..0000000000
--- a/Lang/Dart/K-d-tree
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/K-d-tree/Dart
\ No newline at end of file
diff --git a/Lang/Dart/Leonardo-numbers b/Lang/Dart/Leonardo-numbers
deleted file mode 120000
index 93d2f002c1..0000000000
--- a/Lang/Dart/Leonardo-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Leonardo-numbers/Dart
\ No newline at end of file
diff --git a/Lang/Dart/Map-range b/Lang/Dart/Map-range
deleted file mode 120000
index 5ed6b07ca1..0000000000
--- a/Lang/Dart/Map-range
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Map-range/Dart
\ No newline at end of file
diff --git a/Lang/Dart/Meissel-Mertens-constant b/Lang/Dart/Meissel-Mertens-constant
new file mode 120000
index 0000000000..bac3ec4c99
--- /dev/null
+++ b/Lang/Dart/Meissel-Mertens-constant
@@ -0,0 +1 @@
+../../Task/Meissel-Mertens-constant/Dart
\ No newline at end of file
diff --git a/Lang/Dart/Modular-exponentiation b/Lang/Dart/Modular-exponentiation
deleted file mode 120000
index afe2138c27..0000000000
--- a/Lang/Dart/Modular-exponentiation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Modular-exponentiation/Dart
\ No newline at end of file
diff --git a/Lang/Dart/Ormiston-triples b/Lang/Dart/Ormiston-triples
deleted file mode 120000
index ddb933956b..0000000000
--- a/Lang/Dart/Ormiston-triples
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ormiston-triples/Dart
\ No newline at end of file
diff --git a/Lang/Dart/Pancake-numbers b/Lang/Dart/Pancake-numbers
deleted file mode 120000
index 78b8078b97..0000000000
--- a/Lang/Dart/Pancake-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pancake-numbers/Dart
\ No newline at end of file
diff --git a/Lang/Dart/Parse-an-IP-Address b/Lang/Dart/Parse-an-IP-Address
deleted file mode 120000
index bbe41020cb..0000000000
--- a/Lang/Dart/Parse-an-IP-Address
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Parse-an-IP-Address/Dart
\ No newline at end of file
diff --git a/Lang/Dart/Parsing-Shunting-yard-algorithm b/Lang/Dart/Parsing-Shunting-yard-algorithm
deleted file mode 120000
index 764230d0e5..0000000000
--- a/Lang/Dart/Parsing-Shunting-yard-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Parsing-Shunting-yard-algorithm/Dart
\ No newline at end of file
diff --git a/Lang/Dart/Partition-an-integer-x-into-n-primes b/Lang/Dart/Partition-an-integer-x-into-n-primes
deleted file mode 120000
index 4b67e26b1a..0000000000
--- a/Lang/Dart/Partition-an-integer-x-into-n-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Partition-an-integer-x-into-n-primes/Dart
\ No newline at end of file
diff --git a/Lang/Dart/Partition-function-P b/Lang/Dart/Partition-function-P
deleted file mode 120000
index 9146b4b231..0000000000
--- a/Lang/Dart/Partition-function-P
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Partition-function-P/Dart
\ No newline at end of file
diff --git a/Lang/Dart/Penneys-game b/Lang/Dart/Penneys-game
deleted file mode 120000
index f054d83b87..0000000000
--- a/Lang/Dart/Penneys-game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Penneys-game/Dart
\ No newline at end of file
diff --git a/Lang/Dart/Quaternion-type b/Lang/Dart/Quaternion-type
new file mode 120000
index 0000000000..fb391b98d0
--- /dev/null
+++ b/Lang/Dart/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/Dart
\ No newline at end of file
diff --git a/Lang/Dart/Random-Latin-squares b/Lang/Dart/Random-Latin-squares
deleted file mode 120000
index 226cba5197..0000000000
--- a/Lang/Dart/Random-Latin-squares
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Random-Latin-squares/Dart
\ No newline at end of file
diff --git a/Lang/Dart/Random-sentence-from-book b/Lang/Dart/Random-sentence-from-book
deleted file mode 120000
index 2b4a3a67d4..0000000000
--- a/Lang/Dart/Random-sentence-from-book
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Random-sentence-from-book/Dart
\ No newline at end of file
diff --git a/Lang/Dart/Repeat b/Lang/Dart/Repeat
deleted file mode 120000
index f9635c7eb9..0000000000
--- a/Lang/Dart/Repeat
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Repeat/Dart
\ No newline at end of file
diff --git a/Lang/Dart/Solve-a-Numbrix-puzzle b/Lang/Dart/Solve-a-Numbrix-puzzle
deleted file mode 120000
index 38339de00c..0000000000
--- a/Lang/Dart/Solve-a-Numbrix-puzzle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Solve-a-Numbrix-puzzle/Dart
\ No newline at end of file
diff --git a/Lang/Dart/Sorting-algorithms-Gnome-sort b/Lang/Dart/Sorting-algorithms-Gnome-sort
deleted file mode 120000
index 0f0280ed89..0000000000
--- a/Lang/Dart/Sorting-algorithms-Gnome-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Gnome-sort/Dart
\ No newline at end of file
diff --git a/Lang/Dart/Split-a-character-string-based-on-change-of-character b/Lang/Dart/Split-a-character-string-based-on-change-of-character
deleted file mode 120000
index 06c92b1b7c..0000000000
--- a/Lang/Dart/Split-a-character-string-based-on-change-of-character
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Split-a-character-string-based-on-change-of-character/Dart
\ No newline at end of file
diff --git a/Lang/Dart/Strassens-algorithm b/Lang/Dart/Strassens-algorithm
deleted file mode 120000
index db4cbbbc5d..0000000000
--- a/Lang/Dart/Strassens-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strassens-algorithm/Dart
\ No newline at end of file
diff --git a/Lang/Dart/The-Name-Game b/Lang/Dart/The-Name-Game
deleted file mode 120000
index 41a16ad1a3..0000000000
--- a/Lang/Dart/The-Name-Game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/The-Name-Game/Dart
\ No newline at end of file
diff --git a/Lang/Dart/Tonelli-Shanks-algorithm b/Lang/Dart/Tonelli-Shanks-algorithm
deleted file mode 120000
index 72acd046bd..0000000000
--- a/Lang/Dart/Tonelli-Shanks-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tonelli-Shanks-algorithm/Dart
\ No newline at end of file
diff --git a/Lang/Dart/Topological-sort b/Lang/Dart/Topological-sort
deleted file mode 120000
index 7361beca1d..0000000000
--- a/Lang/Dart/Topological-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Topological-sort/Dart
\ No newline at end of file
diff --git a/Lang/Dart/Word-search b/Lang/Dart/Word-search
deleted file mode 120000
index c9693c2a8f..0000000000
--- a/Lang/Dart/Word-search
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Word-search/Dart
\ No newline at end of file
diff --git a/Lang/Dc/Man-or-boy-test b/Lang/Dc/Man-or-boy-test
deleted file mode 120000
index 3b3beb62b4..0000000000
--- a/Lang/Dc/Man-or-boy-test
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Man-or-boy-test/Dc
\ No newline at end of file
diff --git a/Lang/Delphi/Bioinformatics-base-count b/Lang/Delphi/Bioinformatics-base-count
new file mode 120000
index 0000000000..8964650820
--- /dev/null
+++ b/Lang/Delphi/Bioinformatics-base-count
@@ -0,0 +1 @@
+../../Task/Bioinformatics-base-count/Delphi
\ No newline at end of file
diff --git a/Lang/Delphi/Generate-Chess960-starting-position b/Lang/Delphi/Generate-Chess960-starting-position
deleted file mode 120000
index 2c3a66190d..0000000000
--- a/Lang/Delphi/Generate-Chess960-starting-position
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Generate-Chess960-starting-position/Delphi
\ No newline at end of file
diff --git a/Lang/Delphi/Meissel-Mertens-constant b/Lang/Delphi/Meissel-Mertens-constant
new file mode 120000
index 0000000000..2b1c7d3804
--- /dev/null
+++ b/Lang/Delphi/Meissel-Mertens-constant
@@ -0,0 +1 @@
+../../Task/Meissel-Mertens-constant/Delphi
\ No newline at end of file
diff --git a/Lang/Delphi/Quaternion-type b/Lang/Delphi/Quaternion-type
new file mode 120000
index 0000000000..fe804d3654
--- /dev/null
+++ b/Lang/Delphi/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/Delphi
\ No newline at end of file
diff --git a/Lang/Delphi/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors b/Lang/Delphi/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
similarity index 100%
rename from Lang/Delphi/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors
rename to Lang/Delphi/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
diff --git a/Lang/Delphi/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/Delphi/Sequence-smallest-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/Delphi/Sequence:-smallest-number-with-exactly-n-divisors
rename to Lang/Delphi/Sequence-smallest-number-with-exactly-n-divisors
diff --git a/Lang/Delphi/Sorting-Algorithms-Circle-Sort b/Lang/Delphi/Sorting-Algorithms-Circle-Sort
new file mode 120000
index 0000000000..d4a4f938c0
--- /dev/null
+++ b/Lang/Delphi/Sorting-Algorithms-Circle-Sort
@@ -0,0 +1 @@
+../../Task/Sorting-Algorithms-Circle-Sort/Delphi
\ No newline at end of file
diff --git a/Lang/Draco/Align-columns b/Lang/Draco/Align-columns
deleted file mode 120000
index 00c426b153..0000000000
--- a/Lang/Draco/Align-columns
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Align-columns/Draco
\ No newline at end of file
diff --git a/Lang/Draco/Anti-primes b/Lang/Draco/Anti-primes
deleted file mode 120000
index e9ba464537..0000000000
--- a/Lang/Draco/Anti-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Anti-primes/Draco
\ No newline at end of file
diff --git a/Lang/Draco/Arithmetic-derivative b/Lang/Draco/Arithmetic-derivative
deleted file mode 120000
index b83ffadf85..0000000000
--- a/Lang/Draco/Arithmetic-derivative
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-derivative/Draco
\ No newline at end of file
diff --git a/Lang/Draco/Compound-data-type b/Lang/Draco/Compound-data-type
deleted file mode 120000
index 4fcd536f99..0000000000
--- a/Lang/Draco/Compound-data-type
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compound-data-type/Draco
\ No newline at end of file
diff --git a/Lang/Draco/Cullen-and-Woodall-numbers b/Lang/Draco/Cullen-and-Woodall-numbers
deleted file mode 120000
index 4559430dd4..0000000000
--- a/Lang/Draco/Cullen-and-Woodall-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cullen-and-Woodall-numbers/Draco
\ No newline at end of file
diff --git a/Lang/Draco/Display-a-linear-combination b/Lang/Draco/Display-a-linear-combination
deleted file mode 120000
index bbaeb41c31..0000000000
--- a/Lang/Draco/Display-a-linear-combination
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Display-a-linear-combination/Draco
\ No newline at end of file
diff --git a/Lang/Draco/Doomsday-rule b/Lang/Draco/Doomsday-rule
deleted file mode 120000
index 50f248643e..0000000000
--- a/Lang/Draco/Doomsday-rule
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Doomsday-rule/Draco
\ No newline at end of file
diff --git a/Lang/Draco/Horners-rule-for-polynomial-evaluation b/Lang/Draco/Horners-rule-for-polynomial-evaluation
deleted file mode 120000
index 3be037b7e6..0000000000
--- a/Lang/Draco/Horners-rule-for-polynomial-evaluation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Horners-rule-for-polynomial-evaluation/Draco
\ No newline at end of file
diff --git a/Lang/Draco/Roman-numerals-Encode b/Lang/Draco/Roman-numerals-Encode
deleted file mode 120000
index 11eed87fb8..0000000000
--- a/Lang/Draco/Roman-numerals-Encode
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Roman-numerals-Encode/Draco
\ No newline at end of file
diff --git a/Lang/Draco/Tokenize-a-string b/Lang/Draco/Tokenize-a-string
deleted file mode 120000
index b60ddd21df..0000000000
--- a/Lang/Draco/Tokenize-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tokenize-a-string/Draco
\ No newline at end of file
diff --git a/Lang/Draco/Zeckendorf-number-representation b/Lang/Draco/Zeckendorf-number-representation
deleted file mode 120000
index 5142294607..0000000000
--- a/Lang/Draco/Zeckendorf-number-representation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Zeckendorf-number-representation/Draco
\ No newline at end of file
diff --git a/Lang/Dragonstone/00-LANG.txt b/Lang/Dragonstone/00-LANG.txt
deleted file mode 100644
index 910f7b9a21..0000000000
--- a/Lang/Dragonstone/00-LANG.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-{{language
-|exec=both
-|gc=optional
-|parampass=both
-|express=both
-|strength=strong
-|checking=both
-|site=http://dragonstone-lang.org}}
-'''Dragonstone''' is a general purpose, high-level, object-oriented programming language. It is both an interpreted and compiled language, it's inspired by Ruby and Crystal but designed for programmer happiness, productivity, and choice.
\ No newline at end of file
diff --git a/Lang/Dragonstone/00-META.yaml b/Lang/Dragonstone/00-META.yaml
deleted file mode 100644
index 33832d2528..0000000000
--- a/Lang/Dragonstone/00-META.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-from: http://rosettacode.org/wiki/Category:Dragonstone
diff --git a/Lang/Dragonstone/Comments b/Lang/Dragonstone/Comments
deleted file mode 120000
index 49a5841988..0000000000
--- a/Lang/Dragonstone/Comments
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Comments/Dragonstone
\ No newline at end of file
diff --git a/Lang/Dragonstone/Hello-world-Newline-omission b/Lang/Dragonstone/Hello-world-Newline-omission
deleted file mode 120000
index a67c99cc88..0000000000
--- a/Lang/Dragonstone/Hello-world-Newline-omission
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Newline-omission/Dragonstone
\ No newline at end of file
diff --git a/Lang/Dragonstone/Hello-world-Text b/Lang/Dragonstone/Hello-world-Text
deleted file mode 120000
index 7f601f87ad..0000000000
--- a/Lang/Dragonstone/Hello-world-Text
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Text/Dragonstone
\ No newline at end of file
diff --git a/Lang/Dragonstone/Loops-While b/Lang/Dragonstone/Loops-While
deleted file mode 120000
index c8a2239e27..0000000000
--- a/Lang/Dragonstone/Loops-While
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-While/Dragonstone
\ No newline at end of file
diff --git a/Lang/DuckDB/00-LANG.txt b/Lang/DuckDB/00-LANG.txt
deleted file mode 100644
index 2609130966..0000000000
--- a/Lang/DuckDB/00-LANG.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-[[DuckDB]] is an open-source, fast in-process analytical database management system based on a feature-rich SQL dialect complemented with deep integrations into client APIs.
-
-[[Category:Programming Languages]]
-[[Category:SQL]]
\ No newline at end of file
diff --git a/Lang/DuckDB/00-META.yaml b/Lang/DuckDB/00-META.yaml
deleted file mode 100644
index c9eafe7cf5..0000000000
--- a/Lang/DuckDB/00-META.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-from: http://rosettacode.org/wiki/Category:DuckDB
diff --git a/Lang/DuckDB/100-doors b/Lang/DuckDB/100-doors
deleted file mode 120000
index a0ee1f337e..0000000000
--- a/Lang/DuckDB/100-doors
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/100-doors/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/99-bottles-of-beer b/Lang/DuckDB/99-bottles-of-beer
deleted file mode 120000
index c5f15cd273..0000000000
--- a/Lang/DuckDB/99-bottles-of-beer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/99-bottles-of-beer/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/A+B b/Lang/DuckDB/A+B
deleted file mode 120000
index ae6220876f..0000000000
--- a/Lang/DuckDB/A+B
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/A+B/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/ABC-problem b/Lang/DuckDB/ABC-problem
deleted file mode 120000
index 36e60dd0cd..0000000000
--- a/Lang/DuckDB/ABC-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/ABC-problem/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Anagrams b/Lang/DuckDB/Anagrams
deleted file mode 120000
index e80c01b2e3..0000000000
--- a/Lang/DuckDB/Anagrams
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Anagrams/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Anonymous-recursion b/Lang/DuckDB/Anonymous-recursion
deleted file mode 120000
index e4448d2542..0000000000
--- a/Lang/DuckDB/Anonymous-recursion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Anonymous-recursion/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Arithmetic-Complex b/Lang/DuckDB/Arithmetic-Complex
deleted file mode 120000
index 7e149e59dc..0000000000
--- a/Lang/DuckDB/Arithmetic-Complex
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-Complex/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Arithmetic-Integer b/Lang/DuckDB/Arithmetic-Integer
deleted file mode 120000
index 5bc3696b71..0000000000
--- a/Lang/DuckDB/Arithmetic-Integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-Integer/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Arithmetic-geometric-mean b/Lang/DuckDB/Arithmetic-geometric-mean
deleted file mode 120000
index 2519d0a8f8..0000000000
--- a/Lang/DuckDB/Arithmetic-geometric-mean
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-geometric-mean/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Arithmetic-numbers b/Lang/DuckDB/Arithmetic-numbers
deleted file mode 120000
index a5e7e075b9..0000000000
--- a/Lang/DuckDB/Arithmetic-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-numbers/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Array-concatenation b/Lang/DuckDB/Array-concatenation
deleted file mode 120000
index 7ef5be0b5a..0000000000
--- a/Lang/DuckDB/Array-concatenation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Array-concatenation/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Array-length b/Lang/DuckDB/Array-length
deleted file mode 120000
index ebd59786ea..0000000000
--- a/Lang/DuckDB/Array-length
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Array-length/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Arrays b/Lang/DuckDB/Arrays
deleted file mode 120000
index 85190ece0f..0000000000
--- a/Lang/DuckDB/Arrays
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arrays/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Associative-array-Creation b/Lang/DuckDB/Associative-array-Creation
deleted file mode 120000
index ea2505f34f..0000000000
--- a/Lang/DuckDB/Associative-array-Creation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Associative-array-Creation/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Associative-array-Iteration b/Lang/DuckDB/Associative-array-Iteration
deleted file mode 120000
index c8269906e9..0000000000
--- a/Lang/DuckDB/Associative-array-Iteration
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Associative-array-Iteration/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Associative-array-Merging b/Lang/DuckDB/Associative-array-Merging
deleted file mode 120000
index 4e70d9ab01..0000000000
--- a/Lang/DuckDB/Associative-array-Merging
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Associative-array-Merging/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Averages-Arithmetic-mean b/Lang/DuckDB/Averages-Arithmetic-mean
deleted file mode 120000
index 7ef12ec4b6..0000000000
--- a/Lang/DuckDB/Averages-Arithmetic-mean
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Arithmetic-mean/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Averages-Mean-angle b/Lang/DuckDB/Averages-Mean-angle
deleted file mode 120000
index 5b1aa18e5e..0000000000
--- a/Lang/DuckDB/Averages-Mean-angle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Mean-angle/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Averages-Mean-time-of-day b/Lang/DuckDB/Averages-Mean-time-of-day
deleted file mode 120000
index 7971faf640..0000000000
--- a/Lang/DuckDB/Averages-Mean-time-of-day
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Mean-time-of-day/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Averages-Mode b/Lang/DuckDB/Averages-Mode
deleted file mode 120000
index 0ba388e74d..0000000000
--- a/Lang/DuckDB/Averages-Mode
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Mode/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Averages-Pythagorean-means b/Lang/DuckDB/Averages-Pythagorean-means
deleted file mode 120000
index 1a5cb3068d..0000000000
--- a/Lang/DuckDB/Averages-Pythagorean-means
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Pythagorean-means/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Babbage-problem b/Lang/DuckDB/Babbage-problem
deleted file mode 120000
index 7cee7b9a76..0000000000
--- a/Lang/DuckDB/Babbage-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Babbage-problem/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Benfords-law b/Lang/DuckDB/Benfords-law
deleted file mode 120000
index 9302673cc0..0000000000
--- a/Lang/DuckDB/Benfords-law
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Benfords-law/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Bin-given-limits b/Lang/DuckDB/Bin-given-limits
deleted file mode 120000
index ba754d6a93..0000000000
--- a/Lang/DuckDB/Bin-given-limits
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bin-given-limits/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Binary-digits b/Lang/DuckDB/Binary-digits
deleted file mode 120000
index c4e4b4a580..0000000000
--- a/Lang/DuckDB/Binary-digits
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Binary-digits/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Bitwise-IO b/Lang/DuckDB/Bitwise-IO
deleted file mode 120000
index d00e607776..0000000000
--- a/Lang/DuckDB/Bitwise-IO
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bitwise-IO/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Bitwise-operations b/Lang/DuckDB/Bitwise-operations
deleted file mode 120000
index a0841908e6..0000000000
--- a/Lang/DuckDB/Bitwise-operations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bitwise-operations/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/CSV-data-manipulation b/Lang/DuckDB/CSV-data-manipulation
deleted file mode 120000
index 799ed97795..0000000000
--- a/Lang/DuckDB/CSV-data-manipulation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/CSV-data-manipulation/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Call-a-function b/Lang/DuckDB/Call-a-function
deleted file mode 120000
index bf87fb6ba8..0000000000
--- a/Lang/DuckDB/Call-a-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Call-a-function/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Cartesian-product-of-two-or-more-lists b/Lang/DuckDB/Cartesian-product-of-two-or-more-lists
deleted file mode 120000
index f0873100b0..0000000000
--- a/Lang/DuckDB/Cartesian-product-of-two-or-more-lists
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cartesian-product-of-two-or-more-lists/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Case-sensitivity-of-identifiers b/Lang/DuckDB/Case-sensitivity-of-identifiers
deleted file mode 120000
index 2a0900e2e4..0000000000
--- a/Lang/DuckDB/Case-sensitivity-of-identifiers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Case-sensitivity-of-identifiers/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Catalan-numbers b/Lang/DuckDB/Catalan-numbers
deleted file mode 120000
index 5591f12e62..0000000000
--- a/Lang/DuckDB/Catalan-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Catalan-numbers/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Catalan-numbers-Pascals-triangle b/Lang/DuckDB/Catalan-numbers-Pascals-triangle
deleted file mode 120000
index 690dec4614..0000000000
--- a/Lang/DuckDB/Catalan-numbers-Pascals-triangle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Catalan-numbers-Pascals-triangle/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Check-that-file-exists b/Lang/DuckDB/Check-that-file-exists
deleted file mode 120000
index 7a35121080..0000000000
--- a/Lang/DuckDB/Check-that-file-exists
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Check-that-file-exists/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Collections b/Lang/DuckDB/Collections
deleted file mode 120000
index 4bd2b4f60a..0000000000
--- a/Lang/DuckDB/Collections
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Collections/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Combinations b/Lang/DuckDB/Combinations
deleted file mode 120000
index 61cb39c1bb..0000000000
--- a/Lang/DuckDB/Combinations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Combinations/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Combinations-with-repetitions b/Lang/DuckDB/Combinations-with-repetitions
deleted file mode 120000
index 3781b1dd53..0000000000
--- a/Lang/DuckDB/Combinations-with-repetitions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Combinations-with-repetitions/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Compare-a-list-of-strings b/Lang/DuckDB/Compare-a-list-of-strings
deleted file mode 120000
index dcf4a9dc8d..0000000000
--- a/Lang/DuckDB/Compare-a-list-of-strings
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compare-a-list-of-strings/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Compare-length-of-two-strings b/Lang/DuckDB/Compare-length-of-two-strings
deleted file mode 120000
index b29bfdb369..0000000000
--- a/Lang/DuckDB/Compare-length-of-two-strings
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compare-length-of-two-strings/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Compound-data-type b/Lang/DuckDB/Compound-data-type
deleted file mode 120000
index dc469b307b..0000000000
--- a/Lang/DuckDB/Compound-data-type
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compound-data-type/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Conditional-structures b/Lang/DuckDB/Conditional-structures
deleted file mode 120000
index 19bf4a5caa..0000000000
--- a/Lang/DuckDB/Conditional-structures
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Conditional-structures/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Convert-seconds-to-compound-duration b/Lang/DuckDB/Convert-seconds-to-compound-duration
deleted file mode 120000
index 44055a0c42..0000000000
--- a/Lang/DuckDB/Convert-seconds-to-compound-duration
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Convert-seconds-to-compound-duration/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Copy-a-string b/Lang/DuckDB/Copy-a-string
deleted file mode 120000
index d5f908f98d..0000000000
--- a/Lang/DuckDB/Copy-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Copy-a-string/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Count-occurrences-of-a-substring b/Lang/DuckDB/Count-occurrences-of-a-substring
deleted file mode 120000
index 82775de6e5..0000000000
--- a/Lang/DuckDB/Count-occurrences-of-a-substring
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Count-occurrences-of-a-substring/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Create-a-two-dimensional-array-at-runtime b/Lang/DuckDB/Create-a-two-dimensional-array-at-runtime
deleted file mode 120000
index 14657f9c21..0000000000
--- a/Lang/DuckDB/Create-a-two-dimensional-array-at-runtime
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Create-a-two-dimensional-array-at-runtime/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Cumulative-standard-deviation b/Lang/DuckDB/Cumulative-standard-deviation
deleted file mode 120000
index f323d6c56e..0000000000
--- a/Lang/DuckDB/Cumulative-standard-deviation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cumulative-standard-deviation/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Currency b/Lang/DuckDB/Currency
deleted file mode 120000
index 092e5fcb13..0000000000
--- a/Lang/DuckDB/Currency
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Currency/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Day-of-the-week b/Lang/DuckDB/Day-of-the-week
deleted file mode 120000
index 467c28db17..0000000000
--- a/Lang/DuckDB/Day-of-the-week
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Day-of-the-week/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Define-a-primitive-data-type b/Lang/DuckDB/Define-a-primitive-data-type
deleted file mode 120000
index f086397ed2..0000000000
--- a/Lang/DuckDB/Define-a-primitive-data-type
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Define-a-primitive-data-type/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Detect-division-by-zero b/Lang/DuckDB/Detect-division-by-zero
deleted file mode 120000
index 92508ad1dd..0000000000
--- a/Lang/DuckDB/Detect-division-by-zero
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Detect-division-by-zero/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Determinant-and-permanent b/Lang/DuckDB/Determinant-and-permanent
deleted file mode 120000
index 6bccec7e87..0000000000
--- a/Lang/DuckDB/Determinant-and-permanent
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determinant-and-permanent/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Determine-if-a-string-has-all-the-same-characters b/Lang/DuckDB/Determine-if-a-string-has-all-the-same-characters
deleted file mode 120000
index 3a9bd20a7a..0000000000
--- a/Lang/DuckDB/Determine-if-a-string-has-all-the-same-characters
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-has-all-the-same-characters/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Determine-if-a-string-has-all-unique-characters b/Lang/DuckDB/Determine-if-a-string-has-all-unique-characters
deleted file mode 120000
index 64885aacf1..0000000000
--- a/Lang/DuckDB/Determine-if-a-string-has-all-unique-characters
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-has-all-unique-characters/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Determine-if-a-string-is-collapsible b/Lang/DuckDB/Determine-if-a-string-is-collapsible
deleted file mode 120000
index 0bb2727b9c..0000000000
--- a/Lang/DuckDB/Determine-if-a-string-is-collapsible
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-is-collapsible/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Determine-if-a-string-is-numeric b/Lang/DuckDB/Determine-if-a-string-is-numeric
deleted file mode 120000
index ead16cd478..0000000000
--- a/Lang/DuckDB/Determine-if-a-string-is-numeric
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-is-numeric/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Determine-if-a-string-is-squeezable b/Lang/DuckDB/Determine-if-a-string-is-squeezable
deleted file mode 120000
index 57414557b7..0000000000
--- a/Lang/DuckDB/Determine-if-a-string-is-squeezable
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-is-squeezable/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Determine-sentence-type b/Lang/DuckDB/Determine-sentence-type
deleted file mode 120000
index 50fb0aaf1b..0000000000
--- a/Lang/DuckDB/Determine-sentence-type
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-sentence-type/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Digital-root b/Lang/DuckDB/Digital-root
deleted file mode 120000
index 736b8ccc4f..0000000000
--- a/Lang/DuckDB/Digital-root
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Digital-root/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Diversity-prediction-theorem b/Lang/DuckDB/Diversity-prediction-theorem
deleted file mode 120000
index 2c04d6784a..0000000000
--- a/Lang/DuckDB/Diversity-prediction-theorem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Diversity-prediction-theorem/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Documentation b/Lang/DuckDB/Documentation
deleted file mode 120000
index f9f6aaf2ce..0000000000
--- a/Lang/DuckDB/Documentation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Documentation/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Dot-product b/Lang/DuckDB/Dot-product
deleted file mode 120000
index b17f0214ea..0000000000
--- a/Lang/DuckDB/Dot-product
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dot-product/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Dynamic-variable-names b/Lang/DuckDB/Dynamic-variable-names
deleted file mode 120000
index c534bbc61d..0000000000
--- a/Lang/DuckDB/Dynamic-variable-names
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dynamic-variable-names/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Element-wise-operations b/Lang/DuckDB/Element-wise-operations
deleted file mode 120000
index 7d7754f7f7..0000000000
--- a/Lang/DuckDB/Element-wise-operations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Element-wise-operations/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Empty-string b/Lang/DuckDB/Empty-string
deleted file mode 120000
index 67b471da95..0000000000
--- a/Lang/DuckDB/Empty-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Empty-string/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Entropy b/Lang/DuckDB/Entropy
deleted file mode 120000
index 9c2bc0a9a7..0000000000
--- a/Lang/DuckDB/Entropy
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Entropy/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Enumerations b/Lang/DuckDB/Enumerations
deleted file mode 120000
index 0605dce25b..0000000000
--- a/Lang/DuckDB/Enumerations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Enumerations/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Equilibrium-index b/Lang/DuckDB/Equilibrium-index
deleted file mode 120000
index 40fbbe81bb..0000000000
--- a/Lang/DuckDB/Equilibrium-index
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Equilibrium-index/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Euler-method b/Lang/DuckDB/Euler-method
deleted file mode 120000
index 61aa9557d0..0000000000
--- a/Lang/DuckDB/Euler-method
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Euler-method/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Eulers-constant-0.5772... b/Lang/DuckDB/Eulers-constant-0.5772...
deleted file mode 120000
index c954937ec2..0000000000
--- a/Lang/DuckDB/Eulers-constant-0.5772...
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Eulers-constant-0.5772.../DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Eulers-identity b/Lang/DuckDB/Eulers-identity
deleted file mode 120000
index 58919d8390..0000000000
--- a/Lang/DuckDB/Eulers-identity
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Eulers-identity/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Evaluate-binomial-coefficients b/Lang/DuckDB/Evaluate-binomial-coefficients
deleted file mode 120000
index 69d838bb98..0000000000
--- a/Lang/DuckDB/Evaluate-binomial-coefficients
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Evaluate-binomial-coefficients/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Even-or-odd b/Lang/DuckDB/Even-or-odd
deleted file mode 120000
index e428a57303..0000000000
--- a/Lang/DuckDB/Even-or-odd
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Even-or-odd/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Exponentiation-order b/Lang/DuckDB/Exponentiation-order
deleted file mode 120000
index 56438a22ee..0000000000
--- a/Lang/DuckDB/Exponentiation-order
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Exponentiation-order/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Extreme-floating-point-values b/Lang/DuckDB/Extreme-floating-point-values
deleted file mode 120000
index 617a7e99de..0000000000
--- a/Lang/DuckDB/Extreme-floating-point-values
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Extreme-floating-point-values/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Factorial b/Lang/DuckDB/Factorial
deleted file mode 120000
index 24543aba0b..0000000000
--- a/Lang/DuckDB/Factorial
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factorial/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Factors-of-an-integer b/Lang/DuckDB/Factors-of-an-integer
deleted file mode 120000
index 70e5ed8d56..0000000000
--- a/Lang/DuckDB/Factors-of-an-integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factors-of-an-integer/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Fairshare-between-two-and-more b/Lang/DuckDB/Fairshare-between-two-and-more
deleted file mode 120000
index 0c62807925..0000000000
--- a/Lang/DuckDB/Fairshare-between-two-and-more
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fairshare-between-two-and-more/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Feigenbaum-constant-calculation b/Lang/DuckDB/Feigenbaum-constant-calculation
deleted file mode 120000
index 6f57f3044b..0000000000
--- a/Lang/DuckDB/Feigenbaum-constant-calculation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Feigenbaum-constant-calculation/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Fibonacci-sequence b/Lang/DuckDB/Fibonacci-sequence
deleted file mode 120000
index 0411dbf9f3..0000000000
--- a/Lang/DuckDB/Fibonacci-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fibonacci-sequence/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/File-input-output b/Lang/DuckDB/File-input-output
deleted file mode 120000
index 0bb640b9cd..0000000000
--- a/Lang/DuckDB/File-input-output
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/File-input-output/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Filter b/Lang/DuckDB/Filter
deleted file mode 120000
index bec860336f..0000000000
--- a/Lang/DuckDB/Filter
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Filter/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Find-limit-of-recursion b/Lang/DuckDB/Find-limit-of-recursion
deleted file mode 120000
index e7eff55309..0000000000
--- a/Lang/DuckDB/Find-limit-of-recursion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Find-limit-of-recursion/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Find-the-last-Sunday-of-each-month b/Lang/DuckDB/Find-the-last-Sunday-of-each-month
deleted file mode 120000
index 39172062a9..0000000000
--- a/Lang/DuckDB/Find-the-last-Sunday-of-each-month
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Find-the-last-Sunday-of-each-month/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Five-weekends b/Lang/DuckDB/Five-weekends
deleted file mode 120000
index 4d8ed3ebe3..0000000000
--- a/Lang/DuckDB/Five-weekends
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Five-weekends/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Fixed-length-records b/Lang/DuckDB/Fixed-length-records
deleted file mode 120000
index 0b8d72de87..0000000000
--- a/Lang/DuckDB/Fixed-length-records
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fixed-length-records/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Flatten-a-list b/Lang/DuckDB/Flatten-a-list
deleted file mode 120000
index 5bd1c5b0d8..0000000000
--- a/Lang/DuckDB/Flatten-a-list
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Flatten-a-list/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Formatted-numeric-output b/Lang/DuckDB/Formatted-numeric-output
deleted file mode 120000
index 789e647161..0000000000
--- a/Lang/DuckDB/Formatted-numeric-output
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Formatted-numeric-output/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Forward-difference b/Lang/DuckDB/Forward-difference
deleted file mode 120000
index 6a0d935f36..0000000000
--- a/Lang/DuckDB/Forward-difference
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Forward-difference/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Function-definition b/Lang/DuckDB/Function-definition
deleted file mode 120000
index b39d093883..0000000000
--- a/Lang/DuckDB/Function-definition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Function-definition/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Gamma-function b/Lang/DuckDB/Gamma-function
deleted file mode 120000
index 6fcec68436..0000000000
--- a/Lang/DuckDB/Gamma-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Gamma-function/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Gapful-numbers b/Lang/DuckDB/Gapful-numbers
deleted file mode 120000
index 875c3e4310..0000000000
--- a/Lang/DuckDB/Gapful-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Gapful-numbers/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Generate-lower-case-ASCII-alphabet b/Lang/DuckDB/Generate-lower-case-ASCII-alphabet
deleted file mode 120000
index 51094f97da..0000000000
--- a/Lang/DuckDB/Generate-lower-case-ASCII-alphabet
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Generate-lower-case-ASCII-alphabet/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Generic-swap b/Lang/DuckDB/Generic-swap
deleted file mode 120000
index b384241f1f..0000000000
--- a/Lang/DuckDB/Generic-swap
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Generic-swap/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Golden-ratio-Convergence b/Lang/DuckDB/Golden-ratio-Convergence
deleted file mode 120000
index 0ca8f2458f..0000000000
--- a/Lang/DuckDB/Golden-ratio-Convergence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Golden-ratio-Convergence/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Gotchas b/Lang/DuckDB/Gotchas
deleted file mode 120000
index 16cceb3ff0..0000000000
--- a/Lang/DuckDB/Gotchas
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Gotchas/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Greatest-common-divisor b/Lang/DuckDB/Greatest-common-divisor
deleted file mode 120000
index 6fb062c771..0000000000
--- a/Lang/DuckDB/Greatest-common-divisor
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Greatest-common-divisor/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Greatest-element-of-a-list b/Lang/DuckDB/Greatest-element-of-a-list
deleted file mode 120000
index 5a2c7a66c9..0000000000
--- a/Lang/DuckDB/Greatest-element-of-a-list
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Greatest-element-of-a-list/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Greatest-subsequential-sum b/Lang/DuckDB/Greatest-subsequential-sum
deleted file mode 120000
index dd3661e978..0000000000
--- a/Lang/DuckDB/Greatest-subsequential-sum
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Greatest-subsequential-sum/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/HTTP b/Lang/DuckDB/HTTP
deleted file mode 120000
index f77a3116ff..0000000000
--- a/Lang/DuckDB/HTTP
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/HTTP/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/HTTPS b/Lang/DuckDB/HTTPS
deleted file mode 120000
index 694faecb0f..0000000000
--- a/Lang/DuckDB/HTTPS
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/HTTPS/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/HTTPS-Authenticated b/Lang/DuckDB/HTTPS-Authenticated
deleted file mode 120000
index c1b123b3b8..0000000000
--- a/Lang/DuckDB/HTTPS-Authenticated
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/HTTPS-Authenticated/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Hailstone-sequence b/Lang/DuckDB/Hailstone-sequence
deleted file mode 120000
index 8cb9cd3c4d..0000000000
--- a/Lang/DuckDB/Hailstone-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hailstone-sequence/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Harmonic-series b/Lang/DuckDB/Harmonic-series
deleted file mode 120000
index d5b23dfe32..0000000000
--- a/Lang/DuckDB/Harmonic-series
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Harmonic-series/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Hash-from-two-arrays b/Lang/DuckDB/Hash-from-two-arrays
deleted file mode 120000
index 4fd3efc241..0000000000
--- a/Lang/DuckDB/Hash-from-two-arrays
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hash-from-two-arrays/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Hash-join b/Lang/DuckDB/Hash-join
deleted file mode 120000
index d89e18cc75..0000000000
--- a/Lang/DuckDB/Hash-join
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hash-join/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Haversine-formula b/Lang/DuckDB/Haversine-formula
deleted file mode 120000
index 102a047e33..0000000000
--- a/Lang/DuckDB/Haversine-formula
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Haversine-formula/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Hello-world-Text b/Lang/DuckDB/Hello-world-Text
deleted file mode 120000
index 1af484f405..0000000000
--- a/Lang/DuckDB/Hello-world-Text
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Text/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Here-document b/Lang/DuckDB/Here-document
deleted file mode 120000
index f233028f5b..0000000000
--- a/Lang/DuckDB/Here-document
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Here-document/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/ISBN13-check-digit b/Lang/DuckDB/ISBN13-check-digit
deleted file mode 120000
index ad247e79cf..0000000000
--- a/Lang/DuckDB/ISBN13-check-digit
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/ISBN13-check-digit/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Identity-matrix b/Lang/DuckDB/Identity-matrix
deleted file mode 120000
index d8402f7ae8..0000000000
--- a/Lang/DuckDB/Identity-matrix
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Identity-matrix/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Idiomatically-determine-all-the-characters-that-can-be-used-for-symbols b/Lang/DuckDB/Idiomatically-determine-all-the-characters-that-can-be-used-for-symbols
deleted file mode 120000
index 90e880a4b1..0000000000
--- a/Lang/DuckDB/Idiomatically-determine-all-the-characters-that-can-be-used-for-symbols
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Idiomatically-determine-all-the-characters-that-can-be-used-for-symbols/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Idiomatically-determine-all-the-lowercase-and-uppercase-letters b/Lang/DuckDB/Idiomatically-determine-all-the-lowercase-and-uppercase-letters
deleted file mode 120000
index 3722271469..0000000000
--- a/Lang/DuckDB/Idiomatically-determine-all-the-lowercase-and-uppercase-letters
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Idiomatically-determine-all-the-lowercase-and-uppercase-letters/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Increment-a-numerical-string b/Lang/DuckDB/Increment-a-numerical-string
deleted file mode 120000
index a9f84c0e8c..0000000000
--- a/Lang/DuckDB/Increment-a-numerical-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Increment-a-numerical-string/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Infinity b/Lang/DuckDB/Infinity
deleted file mode 120000
index ed12f74690..0000000000
--- a/Lang/DuckDB/Infinity
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Infinity/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Integer-comparison b/Lang/DuckDB/Integer-comparison
deleted file mode 120000
index c6cacfcd06..0000000000
--- a/Lang/DuckDB/Integer-comparison
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Integer-comparison/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Introspection b/Lang/DuckDB/Introspection
deleted file mode 120000
index c3bb6d896d..0000000000
--- a/Lang/DuckDB/Introspection
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Introspection/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Inverted-index b/Lang/DuckDB/Inverted-index
deleted file mode 120000
index 81053e0c15..0000000000
--- a/Lang/DuckDB/Inverted-index
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Inverted-index/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Inverted-syntax b/Lang/DuckDB/Inverted-syntax
deleted file mode 120000
index cadc81e3b6..0000000000
--- a/Lang/DuckDB/Inverted-syntax
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Inverted-syntax/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/JSON b/Lang/DuckDB/JSON
deleted file mode 120000
index e4757a4b09..0000000000
--- a/Lang/DuckDB/JSON
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/JSON/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Jaro-similarity b/Lang/DuckDB/Jaro-similarity
deleted file mode 120000
index 39c64b8488..0000000000
--- a/Lang/DuckDB/Jaro-similarity
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jaro-similarity/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Knuth-shuffle b/Lang/DuckDB/Knuth-shuffle
deleted file mode 120000
index 7d43c57cbe..0000000000
--- a/Lang/DuckDB/Knuth-shuffle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Knuth-shuffle/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Largest-int-from-concatenated-ints b/Lang/DuckDB/Largest-int-from-concatenated-ints
deleted file mode 120000
index 8e73a50292..0000000000
--- a/Lang/DuckDB/Largest-int-from-concatenated-ints
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Largest-int-from-concatenated-ints/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Last-Friday-of-each-month b/Lang/DuckDB/Last-Friday-of-each-month
deleted file mode 120000
index 1236ebdc14..0000000000
--- a/Lang/DuckDB/Last-Friday-of-each-month
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Last-Friday-of-each-month/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Leap-year b/Lang/DuckDB/Leap-year
deleted file mode 120000
index 5816394f02..0000000000
--- a/Lang/DuckDB/Leap-year
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Leap-year/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Left-factorials b/Lang/DuckDB/Left-factorials
deleted file mode 120000
index 6877bf1f73..0000000000
--- a/Lang/DuckDB/Left-factorials
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Left-factorials/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Leonardo-numbers b/Lang/DuckDB/Leonardo-numbers
deleted file mode 120000
index 206ddcfce9..0000000000
--- a/Lang/DuckDB/Leonardo-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Leonardo-numbers/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Letter-frequency b/Lang/DuckDB/Letter-frequency
deleted file mode 120000
index 29228c3e0b..0000000000
--- a/Lang/DuckDB/Letter-frequency
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Letter-frequency/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Levenshtein-distance b/Lang/DuckDB/Levenshtein-distance
deleted file mode 120000
index d0954b60f2..0000000000
--- a/Lang/DuckDB/Levenshtein-distance
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Levenshtein-distance/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/List-comprehensions b/Lang/DuckDB/List-comprehensions
deleted file mode 120000
index 72558c43a1..0000000000
--- a/Lang/DuckDB/List-comprehensions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/List-comprehensions/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Literals-Integer b/Lang/DuckDB/Literals-Integer
deleted file mode 120000
index 39629959b4..0000000000
--- a/Lang/DuckDB/Literals-Integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Literals-Integer/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Logical-operations b/Lang/DuckDB/Logical-operations
deleted file mode 120000
index 14d59b0f70..0000000000
--- a/Lang/DuckDB/Logical-operations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Logical-operations/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Longest-increasing-subsequence b/Lang/DuckDB/Longest-increasing-subsequence
deleted file mode 120000
index 35a8443499..0000000000
--- a/Lang/DuckDB/Longest-increasing-subsequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Longest-increasing-subsequence/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Loops-Break b/Lang/DuckDB/Loops-Break
deleted file mode 120000
index 40b7904e3f..0000000000
--- a/Lang/DuckDB/Loops-Break
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Break/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Loops-Do-while b/Lang/DuckDB/Loops-Do-while
deleted file mode 120000
index 257f84d6ba..0000000000
--- a/Lang/DuckDB/Loops-Do-while
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Do-while/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Loops-Downward-for b/Lang/DuckDB/Loops-Downward-for
deleted file mode 120000
index 5516907335..0000000000
--- a/Lang/DuckDB/Loops-Downward-for
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Downward-for/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Loops-For b/Lang/DuckDB/Loops-For
deleted file mode 120000
index 56dde9a604..0000000000
--- a/Lang/DuckDB/Loops-For
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-For/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Loops-For-with-a-specified-step b/Lang/DuckDB/Loops-For-with-a-specified-step
deleted file mode 120000
index f7e2b536d7..0000000000
--- a/Lang/DuckDB/Loops-For-with-a-specified-step
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-For-with-a-specified-step/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Loops-Increment-loop-index-within-loop-body b/Lang/DuckDB/Loops-Increment-loop-index-within-loop-body
deleted file mode 120000
index d530992462..0000000000
--- a/Lang/DuckDB/Loops-Increment-loop-index-within-loop-body
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Increment-loop-index-within-loop-body/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Loops-N-plus-one-half b/Lang/DuckDB/Loops-N-plus-one-half
deleted file mode 120000
index f9812bda7e..0000000000
--- a/Lang/DuckDB/Loops-N-plus-one-half
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-N-plus-one-half/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Loops-Nested b/Lang/DuckDB/Loops-Nested
deleted file mode 120000
index 8b4afa46b5..0000000000
--- a/Lang/DuckDB/Loops-Nested
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Nested/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Loops-While b/Lang/DuckDB/Loops-While
deleted file mode 120000
index 60343480f3..0000000000
--- a/Lang/DuckDB/Loops-While
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-While/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Loops-With-multiple-ranges b/Lang/DuckDB/Loops-With-multiple-ranges
deleted file mode 120000
index 540b734a24..0000000000
--- a/Lang/DuckDB/Loops-With-multiple-ranges
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-With-multiple-ranges/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Luhn-test-of-credit-card-numbers b/Lang/DuckDB/Luhn-test-of-credit-card-numbers
deleted file mode 120000
index 397557411e..0000000000
--- a/Lang/DuckDB/Luhn-test-of-credit-card-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Luhn-test-of-credit-card-numbers/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/MD5 b/Lang/DuckDB/MD5
deleted file mode 120000
index ab453e87da..0000000000
--- a/Lang/DuckDB/MD5
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/MD5/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Map-range b/Lang/DuckDB/Map-range
deleted file mode 120000
index 6cd697a04b..0000000000
--- a/Lang/DuckDB/Map-range
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Map-range/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Matrix-multiplication b/Lang/DuckDB/Matrix-multiplication
deleted file mode 120000
index 2110896869..0000000000
--- a/Lang/DuckDB/Matrix-multiplication
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Matrix-multiplication/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Matrix-transposition b/Lang/DuckDB/Matrix-transposition
deleted file mode 120000
index 7e416217b2..0000000000
--- a/Lang/DuckDB/Matrix-transposition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Matrix-transposition/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Merge-and-aggregate-datasets b/Lang/DuckDB/Merge-and-aggregate-datasets
deleted file mode 120000
index e9d467735b..0000000000
--- a/Lang/DuckDB/Merge-and-aggregate-datasets
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Merge-and-aggregate-datasets/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Metallic-ratios b/Lang/DuckDB/Metallic-ratios
deleted file mode 120000
index 56fa981641..0000000000
--- a/Lang/DuckDB/Metallic-ratios
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Metallic-ratios/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Middle-three-digits b/Lang/DuckDB/Middle-three-digits
deleted file mode 120000
index 9c32c60a1c..0000000000
--- a/Lang/DuckDB/Middle-three-digits
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Middle-three-digits/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Monte-Carlo-methods b/Lang/DuckDB/Monte-Carlo-methods
deleted file mode 120000
index f27be4f0e8..0000000000
--- a/Lang/DuckDB/Monte-Carlo-methods
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Monte-Carlo-methods/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Nested-function b/Lang/DuckDB/Nested-function
deleted file mode 120000
index 6ccb0c0029..0000000000
--- a/Lang/DuckDB/Nested-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nested-function/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Nth b/Lang/DuckDB/Nth
deleted file mode 120000
index 6d1fd0295b..0000000000
--- a/Lang/DuckDB/Nth
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nth/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Nth-root b/Lang/DuckDB/Nth-root
deleted file mode 120000
index bdfee4887c..0000000000
--- a/Lang/DuckDB/Nth-root
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nth-root/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/One-of-n-lines-in-a-file b/Lang/DuckDB/One-of-n-lines-in-a-file
deleted file mode 120000
index 84adf8bb46..0000000000
--- a/Lang/DuckDB/One-of-n-lines-in-a-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/One-of-n-lines-in-a-file/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Order-two-numerical-lists b/Lang/DuckDB/Order-two-numerical-lists
deleted file mode 120000
index fcd259b6c0..0000000000
--- a/Lang/DuckDB/Order-two-numerical-lists
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Order-two-numerical-lists/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Ordered-words b/Lang/DuckDB/Ordered-words
deleted file mode 120000
index 57d12d9c27..0000000000
--- a/Lang/DuckDB/Ordered-words
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ordered-words/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Palindrome-detection b/Lang/DuckDB/Palindrome-detection
deleted file mode 120000
index a318cb02ae..0000000000
--- a/Lang/DuckDB/Palindrome-detection
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Palindrome-detection/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Parameterized-SQL-statement b/Lang/DuckDB/Parameterized-SQL-statement
deleted file mode 120000
index dded36b01b..0000000000
--- a/Lang/DuckDB/Parameterized-SQL-statement
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Parameterized-SQL-statement/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Pascals-triangle b/Lang/DuckDB/Pascals-triangle
deleted file mode 120000
index e38a99fc2d..0000000000
--- a/Lang/DuckDB/Pascals-triangle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pascals-triangle/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Permutations b/Lang/DuckDB/Permutations
deleted file mode 120000
index fa1198c6a6..0000000000
--- a/Lang/DuckDB/Permutations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Permutations/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Permutations-Derangements b/Lang/DuckDB/Permutations-Derangements
deleted file mode 120000
index b4140ee27e..0000000000
--- a/Lang/DuckDB/Permutations-Derangements
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Permutations-Derangements/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Pick-random-element b/Lang/DuckDB/Pick-random-element
deleted file mode 120000
index 4eec54c36e..0000000000
--- a/Lang/DuckDB/Pick-random-element
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pick-random-element/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Primality-by-trial-division b/Lang/DuckDB/Primality-by-trial-division
deleted file mode 120000
index 8e9e10eb1a..0000000000
--- a/Lang/DuckDB/Primality-by-trial-division
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Primality-by-trial-division/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Prime-decomposition b/Lang/DuckDB/Prime-decomposition
deleted file mode 120000
index dbb3b57727..0000000000
--- a/Lang/DuckDB/Prime-decomposition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Prime-decomposition/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Probabilistic-choice b/Lang/DuckDB/Probabilistic-choice
deleted file mode 120000
index caa9cf57ce..0000000000
--- a/Lang/DuckDB/Probabilistic-choice
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Probabilistic-choice/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Proper-divisors b/Lang/DuckDB/Proper-divisors
deleted file mode 120000
index a8b8cf32ca..0000000000
--- a/Lang/DuckDB/Proper-divisors
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Proper-divisors/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Pseudo-random-numbers-Middle-square-method b/Lang/DuckDB/Pseudo-random-numbers-Middle-square-method
deleted file mode 120000
index 3424580b60..0000000000
--- a/Lang/DuckDB/Pseudo-random-numbers-Middle-square-method
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pseudo-random-numbers-Middle-square-method/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Random-numbers b/Lang/DuckDB/Random-numbers
deleted file mode 120000
index 4e7ae21251..0000000000
--- a/Lang/DuckDB/Random-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Random-numbers/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Range-expansion b/Lang/DuckDB/Range-expansion
deleted file mode 120000
index 73f7852f3e..0000000000
--- a/Lang/DuckDB/Range-expansion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Range-expansion/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Range-extraction b/Lang/DuckDB/Range-extraction
deleted file mode 120000
index 70b9fee7f2..0000000000
--- a/Lang/DuckDB/Range-extraction
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Range-extraction/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Read-a-file-line-by-line b/Lang/DuckDB/Read-a-file-line-by-line
deleted file mode 120000
index 5698cabe3f..0000000000
--- a/Lang/DuckDB/Read-a-file-line-by-line
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Read-a-file-line-by-line/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Reflection-List-methods b/Lang/DuckDB/Reflection-List-methods
deleted file mode 120000
index e87f71ad29..0000000000
--- a/Lang/DuckDB/Reflection-List-methods
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Reflection-List-methods/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Reflection-List-properties b/Lang/DuckDB/Reflection-List-properties
deleted file mode 120000
index 61160f5035..0000000000
--- a/Lang/DuckDB/Reflection-List-properties
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Reflection-List-properties/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Remove-duplicate-elements b/Lang/DuckDB/Remove-duplicate-elements
deleted file mode 120000
index e38927d88b..0000000000
--- a/Lang/DuckDB/Remove-duplicate-elements
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Remove-duplicate-elements/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Rep-string b/Lang/DuckDB/Rep-string
deleted file mode 120000
index ce2543465d..0000000000
--- a/Lang/DuckDB/Rep-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Rep-string/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Repeat-a-string b/Lang/DuckDB/Repeat-a-string
deleted file mode 120000
index 126fb8a5a7..0000000000
--- a/Lang/DuckDB/Repeat-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Repeat-a-string/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Return-multiple-values b/Lang/DuckDB/Return-multiple-values
deleted file mode 120000
index 44885d997f..0000000000
--- a/Lang/DuckDB/Return-multiple-values
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Return-multiple-values/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Reverse-a-string b/Lang/DuckDB/Reverse-a-string
deleted file mode 120000
index 9c2fcefbbf..0000000000
--- a/Lang/DuckDB/Reverse-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Reverse-a-string/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Roots-of-unity b/Lang/DuckDB/Roots-of-unity
deleted file mode 120000
index fbae972a1d..0000000000
--- a/Lang/DuckDB/Roots-of-unity
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Roots-of-unity/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Run-length-encoding b/Lang/DuckDB/Run-length-encoding
deleted file mode 120000
index 798b72b50c..0000000000
--- a/Lang/DuckDB/Run-length-encoding
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Run-length-encoding/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Search-a-list-of-records b/Lang/DuckDB/Search-a-list-of-records
deleted file mode 120000
index 8875d845bf..0000000000
--- a/Lang/DuckDB/Search-a-list-of-records
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Search-a-list-of-records/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Set b/Lang/DuckDB/Set
deleted file mode 120000
index 7e25aac634..0000000000
--- a/Lang/DuckDB/Set
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Set/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Set-consolidation b/Lang/DuckDB/Set-consolidation
deleted file mode 120000
index 46e9513ebb..0000000000
--- a/Lang/DuckDB/Set-consolidation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Set-consolidation/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Show-the-epoch b/Lang/DuckDB/Show-the-epoch
deleted file mode 120000
index 6cd68764f9..0000000000
--- a/Lang/DuckDB/Show-the-epoch
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Show-the-epoch/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Sieve-of-Eratosthenes b/Lang/DuckDB/Sieve-of-Eratosthenes
deleted file mode 120000
index ee6aa1fbd3..0000000000
--- a/Lang/DuckDB/Sieve-of-Eratosthenes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sieve-of-Eratosthenes/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Sort-an-array-of-composite-structures b/Lang/DuckDB/Sort-an-array-of-composite-structures
deleted file mode 120000
index 35612aed66..0000000000
--- a/Lang/DuckDB/Sort-an-array-of-composite-structures
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-an-array-of-composite-structures/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Sort-numbers-lexicographically b/Lang/DuckDB/Sort-numbers-lexicographically
deleted file mode 120000
index 390860d685..0000000000
--- a/Lang/DuckDB/Sort-numbers-lexicographically
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-numbers-lexicographically/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Statistics-Basic b/Lang/DuckDB/Statistics-Basic
deleted file mode 120000
index c3caa99be7..0000000000
--- a/Lang/DuckDB/Statistics-Basic
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Statistics-Basic/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/String-append b/Lang/DuckDB/String-append
deleted file mode 120000
index cc8ce5011e..0000000000
--- a/Lang/DuckDB/String-append
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-append/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/String-case b/Lang/DuckDB/String-case
deleted file mode 120000
index ab3478758f..0000000000
--- a/Lang/DuckDB/String-case
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-case/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/String-comparison b/Lang/DuckDB/String-comparison
deleted file mode 120000
index b7a7339e14..0000000000
--- a/Lang/DuckDB/String-comparison
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-comparison/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/String-interpolation-included- b/Lang/DuckDB/String-interpolation-included-
deleted file mode 120000
index 807f8abec4..0000000000
--- a/Lang/DuckDB/String-interpolation-included-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-interpolation-included-/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/String-length b/Lang/DuckDB/String-length
deleted file mode 120000
index f49078b058..0000000000
--- a/Lang/DuckDB/String-length
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-length/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/String-matching b/Lang/DuckDB/String-matching
deleted file mode 120000
index e3f7fa5300..0000000000
--- a/Lang/DuckDB/String-matching
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-matching/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/String-prepend b/Lang/DuckDB/String-prepend
deleted file mode 120000
index ea6f95610c..0000000000
--- a/Lang/DuckDB/String-prepend
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-prepend/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Strip-a-set-of-characters-from-a-string b/Lang/DuckDB/Strip-a-set-of-characters-from-a-string
deleted file mode 120000
index 77ce9f900d..0000000000
--- a/Lang/DuckDB/Strip-a-set-of-characters-from-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strip-a-set-of-characters-from-a-string/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Strip-comments-from-a-string b/Lang/DuckDB/Strip-comments-from-a-string
deleted file mode 120000
index f58b2c006d..0000000000
--- a/Lang/DuckDB/Strip-comments-from-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strip-comments-from-a-string/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Strip-control-codes-and-extended-characters-from-a-string b/Lang/DuckDB/Strip-control-codes-and-extended-characters-from-a-string
deleted file mode 120000
index e3de3aa487..0000000000
--- a/Lang/DuckDB/Strip-control-codes-and-extended-characters-from-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strip-control-codes-and-extended-characters-from-a-string/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Strip-whitespace-from-a-string-Top-and-tail b/Lang/DuckDB/Strip-whitespace-from-a-string-Top-and-tail
deleted file mode 120000
index 93405e661f..0000000000
--- a/Lang/DuckDB/Strip-whitespace-from-a-string-Top-and-tail
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strip-whitespace-from-a-string-Top-and-tail/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Substring b/Lang/DuckDB/Substring
deleted file mode 120000
index fe9daf5b9c..0000000000
--- a/Lang/DuckDB/Substring
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Substring/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Sudoku b/Lang/DuckDB/Sudoku
deleted file mode 120000
index efc19532bb..0000000000
--- a/Lang/DuckDB/Sudoku
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sudoku/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Sum-and-product-of-an-array b/Lang/DuckDB/Sum-and-product-of-an-array
deleted file mode 120000
index 9db07cfe55..0000000000
--- a/Lang/DuckDB/Sum-and-product-of-an-array
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sum-and-product-of-an-array/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Sum-digits-of-an-integer b/Lang/DuckDB/Sum-digits-of-an-integer
deleted file mode 120000
index 2b4e9e5805..0000000000
--- a/Lang/DuckDB/Sum-digits-of-an-integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sum-digits-of-an-integer/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Sum-multiples-of-3-and-5 b/Lang/DuckDB/Sum-multiples-of-3-and-5
deleted file mode 120000
index 06a19cefb7..0000000000
--- a/Lang/DuckDB/Sum-multiples-of-3-and-5
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sum-multiples-of-3-and-5/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Sum-of-a-series b/Lang/DuckDB/Sum-of-a-series
deleted file mode 120000
index db0f6f79c5..0000000000
--- a/Lang/DuckDB/Sum-of-a-series
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sum-of-a-series/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Sum-of-squares b/Lang/DuckDB/Sum-of-squares
deleted file mode 120000
index fe3d9a8a52..0000000000
--- a/Lang/DuckDB/Sum-of-squares
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sum-of-squares/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Symmetric-difference b/Lang/DuckDB/Symmetric-difference
deleted file mode 120000
index f254423d5f..0000000000
--- a/Lang/DuckDB/Symmetric-difference
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Symmetric-difference/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Table-creation-Postal-addresses b/Lang/DuckDB/Table-creation-Postal-addresses
deleted file mode 120000
index 174f03f886..0000000000
--- a/Lang/DuckDB/Table-creation-Postal-addresses
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Table-creation-Postal-addresses/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Test-integerness b/Lang/DuckDB/Test-integerness
deleted file mode 120000
index 0e9573c924..0000000000
--- a/Lang/DuckDB/Test-integerness
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Test-integerness/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Text-processing-2 b/Lang/DuckDB/Text-processing-2
deleted file mode 120000
index b3c883d2ec..0000000000
--- a/Lang/DuckDB/Text-processing-2
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Text-processing-2/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Thue-Morse b/Lang/DuckDB/Thue-Morse
deleted file mode 120000
index e14a41e488..0000000000
--- a/Lang/DuckDB/Thue-Morse
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Thue-Morse/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Time-a-function b/Lang/DuckDB/Time-a-function
deleted file mode 120000
index d82a288f55..0000000000
--- a/Lang/DuckDB/Time-a-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Time-a-function/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Tokenize-a-string b/Lang/DuckDB/Tokenize-a-string
deleted file mode 120000
index ee6d07a4b5..0000000000
--- a/Lang/DuckDB/Tokenize-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tokenize-a-string/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Top-rank-per-group b/Lang/DuckDB/Top-rank-per-group
deleted file mode 120000
index ada50a852c..0000000000
--- a/Lang/DuckDB/Top-rank-per-group
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Top-rank-per-group/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Trigonometric-functions b/Lang/DuckDB/Trigonometric-functions
deleted file mode 120000
index 58530b66ee..0000000000
--- a/Lang/DuckDB/Trigonometric-functions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Trigonometric-functions/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/URL-decoding b/Lang/DuckDB/URL-decoding
deleted file mode 120000
index c717460642..0000000000
--- a/Lang/DuckDB/URL-decoding
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/URL-decoding/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/UTF-8-encode-and-decode b/Lang/DuckDB/UTF-8-encode-and-decode
deleted file mode 120000
index 792323a78c..0000000000
--- a/Lang/DuckDB/UTF-8-encode-and-decode
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/UTF-8-encode-and-decode/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Unix-ls b/Lang/DuckDB/Unix-ls
deleted file mode 120000
index 85287a21f6..0000000000
--- a/Lang/DuckDB/Unix-ls
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Unix-ls/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Variable-size-Get b/Lang/DuckDB/Variable-size-Get
deleted file mode 120000
index 3cff7c631a..0000000000
--- a/Lang/DuckDB/Variable-size-Get
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Variable-size-Get/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Variable-size-Set b/Lang/DuckDB/Variable-size-Set
deleted file mode 120000
index ee4a003cfa..0000000000
--- a/Lang/DuckDB/Variable-size-Set
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Variable-size-Set/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Vector-products b/Lang/DuckDB/Vector-products
deleted file mode 120000
index 3347aa5bba..0000000000
--- a/Lang/DuckDB/Vector-products
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Vector-products/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Zero-to-the-zero-power b/Lang/DuckDB/Zero-to-the-zero-power
deleted file mode 120000
index 7c7bac0f0b..0000000000
--- a/Lang/DuckDB/Zero-to-the-zero-power
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Zero-to-the-zero-power/DuckDB
\ No newline at end of file
diff --git a/Lang/DuckDB/Zig-zag-matrix b/Lang/DuckDB/Zig-zag-matrix
deleted file mode 120000
index dee409f57f..0000000000
--- a/Lang/DuckDB/Zig-zag-matrix
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Zig-zag-matrix/DuckDB
\ No newline at end of file
diff --git a/Lang/Dyalect/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors b/Lang/Dyalect/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
similarity index 100%
rename from Lang/Dyalect/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors
rename to Lang/Dyalect/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
diff --git a/Lang/E/Miller-Rabin-primality-test b/Lang/E/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..f586feb18b
--- /dev/null
+++ b/Lang/E/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/E
\ No newline at end of file
diff --git a/Lang/E/Quaternion-type b/Lang/E/Quaternion-type
new file mode 120000
index 0000000000..ecc55ca8a4
--- /dev/null
+++ b/Lang/E/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/E
\ No newline at end of file
diff --git a/Lang/EDSAC-order-code/Haversine-formula b/Lang/EDSAC-order-code/Haversine-formula
deleted file mode 120000
index 0cab079f84..0000000000
--- a/Lang/EDSAC-order-code/Haversine-formula
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Haversine-formula/EDSAC-order-code
\ No newline at end of file
diff --git a/Lang/EDSAC-order-code/Numerical-integration-Gauss-Legendre-Quadrature b/Lang/EDSAC-order-code/Numerical-integration-Gauss-Legendre-Quadrature
deleted file mode 120000
index f518a6e1fc..0000000000
--- a/Lang/EDSAC-order-code/Numerical-integration-Gauss-Legendre-Quadrature
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Numerical-integration-Gauss-Legendre-Quadrature/EDSAC-order-code
\ No newline at end of file
diff --git a/Lang/EDSAC-order-code/Shoelace-formula-for-polygonal-area b/Lang/EDSAC-order-code/Shoelace-formula-for-polygonal-area
deleted file mode 120000
index fb3446e1bf..0000000000
--- a/Lang/EDSAC-order-code/Shoelace-formula-for-polygonal-area
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Shoelace-formula-for-polygonal-area/EDSAC-order-code
\ No newline at end of file
diff --git a/Lang/EDSAC-order-code/Water-collected-between-towers b/Lang/EDSAC-order-code/Water-collected-between-towers
deleted file mode 120000
index 7c9456760f..0000000000
--- a/Lang/EDSAC-order-code/Water-collected-between-towers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Water-collected-between-towers/EDSAC-order-code
\ No newline at end of file
diff --git a/Lang/EMal/00-LANG.txt b/Lang/EMal/00-LANG.txt
index 3af52fab5c..9ecf11d932 100644
--- a/Lang/EMal/00-LANG.txt
+++ b/Lang/EMal/00-LANG.txt
@@ -6,23 +6,21 @@
|site=https://emal-lang.sourceforge.io
|tags=emal
|gc=yes}}
-EMal is a prototyping programming language that supports English and Italian syntax.
+EMal is a prototyping programming language that supports english and italian syntax.
-EMal wants to be expressive and readable. It supports closures, classes, records; it's influenced by Java, Perl, Javascript.
+EMal wants to be expressive and easy to read.
-The programming environment consists of an interpreter that directly navigates the AST produced by the parser.
-
-This is an example that, inside the same script, calculates F10 = 55 in English and in Italian:
+This is an example that, inside the same script, calculates F10 = 55 in english and in italian:
type FibonacciInEnglish
-fun fibonacci ← int by int n
+fun fibonacci = int by int n
if n < 2 do return n
else do return fibonacci(n - 1) + fibonacci(n - 2)
end
end
writeLine(fibonacci(10))
tipo FibonacciInItaliano
-funzione fibonacci ← intero da intero n
+funzione fibonacci = intero da intero n
se n < 2
ritorna n
altrimenti
diff --git a/Lang/EMal/ABC-problem b/Lang/EMal/ABC-problem
deleted file mode 120000
index 4b49dc2baf..0000000000
--- a/Lang/EMal/ABC-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/ABC-problem/EMal
\ No newline at end of file
diff --git a/Lang/EMal/Babbage-problem b/Lang/EMal/Babbage-problem
deleted file mode 120000
index 8a7db13311..0000000000
--- a/Lang/EMal/Babbage-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Babbage-problem/EMal
\ No newline at end of file
diff --git a/Lang/EMal/Bifid-cipher b/Lang/EMal/Bifid-cipher
deleted file mode 120000
index 1dbee9fec8..0000000000
--- a/Lang/EMal/Bifid-cipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bifid-cipher/EMal
\ No newline at end of file
diff --git a/Lang/EMal/Delegates b/Lang/EMal/Delegates
deleted file mode 120000
index 5293d68109..0000000000
--- a/Lang/EMal/Delegates
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Delegates/EMal
\ No newline at end of file
diff --git a/Lang/EMal/Determine-if-a-string-is-squeezable b/Lang/EMal/Determine-if-a-string-is-squeezable
deleted file mode 120000
index 27c56fc092..0000000000
--- a/Lang/EMal/Determine-if-a-string-is-squeezable
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-is-squeezable/EMal
\ No newline at end of file
diff --git a/Lang/EMal/Dynamic-variable-names b/Lang/EMal/Dynamic-variable-names
deleted file mode 120000
index 28a70b20a1..0000000000
--- a/Lang/EMal/Dynamic-variable-names
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dynamic-variable-names/EMal
\ No newline at end of file
diff --git a/Lang/EMal/Gamma-function b/Lang/EMal/Gamma-function
deleted file mode 120000
index f928139952..0000000000
--- a/Lang/EMal/Gamma-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Gamma-function/EMal
\ No newline at end of file
diff --git a/Lang/EMal/Greatest-common-divisor b/Lang/EMal/Greatest-common-divisor
deleted file mode 120000
index 5a6de213e1..0000000000
--- a/Lang/EMal/Greatest-common-divisor
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Greatest-common-divisor/EMal
\ No newline at end of file
diff --git a/Lang/EMal/Guess-the-number b/Lang/EMal/Guess-the-number
deleted file mode 120000
index fc6e3366e6..0000000000
--- a/Lang/EMal/Guess-the-number
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Guess-the-number/EMal
\ No newline at end of file
diff --git a/Lang/EMal/Halt-and-catch-fire b/Lang/EMal/Halt-and-catch-fire
deleted file mode 120000
index 63015fddfa..0000000000
--- a/Lang/EMal/Halt-and-catch-fire
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Halt-and-catch-fire/EMal
\ No newline at end of file
diff --git a/Lang/EMal/Mutual-recursion b/Lang/EMal/Mutual-recursion
deleted file mode 120000
index cb3ebc8ca5..0000000000
--- a/Lang/EMal/Mutual-recursion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Mutual-recursion/EMal
\ No newline at end of file
diff --git a/Lang/EMal/Nth-root b/Lang/EMal/Nth-root
deleted file mode 120000
index 58e1f9e30f..0000000000
--- a/Lang/EMal/Nth-root
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nth-root/EMal
\ No newline at end of file
diff --git a/Lang/EMal/Sorting-algorithms-Bogosort b/Lang/EMal/Sorting-algorithms-Bogosort
deleted file mode 120000
index 8dc8cc02d3..0000000000
--- a/Lang/EMal/Sorting-algorithms-Bogosort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Bogosort/EMal
\ No newline at end of file
diff --git a/Lang/EMal/Sorting-algorithms-Bubble-sort b/Lang/EMal/Sorting-algorithms-Bubble-sort
deleted file mode 120000
index 53f744e6e9..0000000000
--- a/Lang/EMal/Sorting-algorithms-Bubble-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Bubble-sort/EMal
\ No newline at end of file
diff --git a/Lang/EMal/Sorting-algorithms-Stooge-sort b/Lang/EMal/Sorting-algorithms-Stooge-sort
deleted file mode 120000
index 05296c2a09..0000000000
--- a/Lang/EMal/Sorting-algorithms-Stooge-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Stooge-sort/EMal
\ No newline at end of file
diff --git a/Lang/EMal/String-comparison b/Lang/EMal/String-comparison
deleted file mode 120000
index 02b430a538..0000000000
--- a/Lang/EMal/String-comparison
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-comparison/EMal
\ No newline at end of file
diff --git a/Lang/EMal/Sudan-function b/Lang/EMal/Sudan-function
deleted file mode 120000
index ea87f1432e..0000000000
--- a/Lang/EMal/Sudan-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sudan-function/EMal
\ No newline at end of file
diff --git a/Lang/EMal/Ternary-logic b/Lang/EMal/Ternary-logic
deleted file mode 120000
index 837bedfab5..0000000000
--- a/Lang/EMal/Ternary-logic
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ternary-logic/EMal
\ No newline at end of file
diff --git a/Lang/EMal/Tree-traversal b/Lang/EMal/Tree-traversal
deleted file mode 120000
index b693d069a6..0000000000
--- a/Lang/EMal/Tree-traversal
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tree-traversal/EMal
\ No newline at end of file
diff --git a/Lang/EMal/User-input-Text b/Lang/EMal/User-input-Text
deleted file mode 120000
index 3c00cf11ba..0000000000
--- a/Lang/EMal/User-input-Text
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/User-input-Text/EMal
\ No newline at end of file
diff --git a/Lang/EMal/Van-Eck-sequence b/Lang/EMal/Van-Eck-sequence
deleted file mode 120000
index 45280862ec..0000000000
--- a/Lang/EMal/Van-Eck-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Van-Eck-sequence/EMal
\ No newline at end of file
diff --git a/Lang/ERRE/Leonardo-numbers b/Lang/ERRE/Leonardo-numbers
deleted file mode 120000
index 3e0d0050d1..0000000000
--- a/Lang/ERRE/Leonardo-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Leonardo-numbers/ERRE
\ No newline at end of file
diff --git a/Lang/ERRE/Quaternion-type b/Lang/ERRE/Quaternion-type
new file mode 120000
index 0000000000..fcc1edb64e
--- /dev/null
+++ b/Lang/ERRE/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/ERRE
\ No newline at end of file
diff --git a/Lang/EasyLang/00-LANG.txt b/Lang/EasyLang/00-LANG.txt
index e09a925b83..aa156f93c8 100644
--- a/Lang/EasyLang/00-LANG.txt
+++ b/Lang/EasyLang/00-LANG.txt
@@ -1,19 +1,19 @@
{{language
|exec=interpreted
-|site=https://easylang.online/
+|site=https://easylang.dev/
|parampass=value, reference
|safety=safe
|express=explicit
|checking=static
|tags=learning, web canvas}}
-[https://easylang.online/ide/ '''Browser IDE''']
+[https://easylang.dev/ide/ '''Browser IDE''']
''Easylang'' is a (beginners) programming language with built-in commands for graphics output. The statically typed language has a reduced syntax and semantics. Variables do not have to be declared, the data type is encoded in the variable name - as was usual in the earlier home computer BASIC. The data types are strings and numbers (floating point), arrays of strings and numbers, and arrays of arrays. Arrays are 1-based and can grow. Programs compiled into an AST tree run in the browser or in the browser IDE.
-[https://easylang.online/ide/ A browser IDE] with different tutorials, one for beginners, makes programming and learning to program as easy as possible.
+[https://easylang.dev/ide/ A browser IDE] with different tutorials, one for beginners, makes programming and learning to program as easy as possible.
-The finished programs can be easily integrated into a [https://easylang.online/apps/ website].
+The finished programs can be easily integrated into a [https://easylang.dev/apps/ website].
==Todo==
[[Tasks not implemented in EasyLang]]
\ No newline at end of file
diff --git a/Lang/EasyLang/2048 b/Lang/EasyLang/2048
deleted file mode 120000
index 4a69b16207..0000000000
--- a/Lang/EasyLang/2048
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/2048/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/24-game b/Lang/EasyLang/24-game
deleted file mode 120000
index 85da2301e7..0000000000
--- a/Lang/EasyLang/24-game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/24-game/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/9-billion-names-of-God-the-integer b/Lang/EasyLang/9-billion-names-of-God-the-integer
deleted file mode 120000
index eab904ccaa..0000000000
--- a/Lang/EasyLang/9-billion-names-of-God-the-integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/9-billion-names-of-God-the-integer/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/AKS-test-for-primes b/Lang/EasyLang/AKS-test-for-primes
deleted file mode 120000
index fb3fd809a4..0000000000
--- a/Lang/EasyLang/AKS-test-for-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/AKS-test-for-primes/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Abbreviations-automatic b/Lang/EasyLang/Abbreviations-automatic
deleted file mode 120000
index 10b2251691..0000000000
--- a/Lang/EasyLang/Abbreviations-automatic
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abbreviations-automatic/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Abbreviations-easy b/Lang/EasyLang/Abbreviations-easy
deleted file mode 120000
index 9f43877f2b..0000000000
--- a/Lang/EasyLang/Abbreviations-easy
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abbreviations-easy/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Abbreviations-simple b/Lang/EasyLang/Abbreviations-simple
deleted file mode 120000
index 53295111be..0000000000
--- a/Lang/EasyLang/Abbreviations-simple
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abbreviations-simple/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Abelian-sandpile-model b/Lang/EasyLang/Abelian-sandpile-model
deleted file mode 120000
index c97f3c3aa6..0000000000
--- a/Lang/EasyLang/Abelian-sandpile-model
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abelian-sandpile-model/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Abelian-sandpile-model-Identity b/Lang/EasyLang/Abelian-sandpile-model-Identity
deleted file mode 120000
index c44f8cb53d..0000000000
--- a/Lang/EasyLang/Abelian-sandpile-model-Identity
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abelian-sandpile-model-Identity/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Amb b/Lang/EasyLang/Amb
deleted file mode 120000
index cee73196db..0000000000
--- a/Lang/EasyLang/Amb
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Amb/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Anagrams b/Lang/EasyLang/Anagrams
deleted file mode 120000
index 1a48ded8aa..0000000000
--- a/Lang/EasyLang/Anagrams
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Anagrams/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Anagrams-Deranged-anagrams b/Lang/EasyLang/Anagrams-Deranged-anagrams
deleted file mode 120000
index b7af47405b..0000000000
--- a/Lang/EasyLang/Anagrams-Deranged-anagrams
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Anagrams-Deranged-anagrams/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Approximate-equality b/Lang/EasyLang/Approximate-equality
deleted file mode 120000
index 916cbf0873..0000000000
--- a/Lang/EasyLang/Approximate-equality
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Approximate-equality/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Arithmetic-Complex b/Lang/EasyLang/Arithmetic-Complex
deleted file mode 120000
index 547a37cd78..0000000000
--- a/Lang/EasyLang/Arithmetic-Complex
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-Complex/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Associative-array-Merging b/Lang/EasyLang/Associative-array-Merging
deleted file mode 120000
index efe48db36d..0000000000
--- a/Lang/EasyLang/Associative-array-Merging
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Associative-array-Merging/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Babylonian-spiral b/Lang/EasyLang/Babylonian-spiral
deleted file mode 120000
index a141d2cd6b..0000000000
--- a/Lang/EasyLang/Babylonian-spiral
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Babylonian-spiral/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Bioinformatics-Sequence-mutation b/Lang/EasyLang/Bioinformatics-Sequence-mutation
deleted file mode 120000
index 6d30bfa11e..0000000000
--- a/Lang/EasyLang/Bioinformatics-Sequence-mutation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bioinformatics-Sequence-mutation/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Bioinformatics-base-count b/Lang/EasyLang/Bioinformatics-base-count
new file mode 120000
index 0000000000..3bc65db849
--- /dev/null
+++ b/Lang/EasyLang/Bioinformatics-base-count
@@ -0,0 +1 @@
+../../Task/Bioinformatics-base-count/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Bitmap-B-zier-curves-Quadratic b/Lang/EasyLang/Bitmap-B-zier-curves-Quadratic
deleted file mode 120000
index 569a661356..0000000000
--- a/Lang/EasyLang/Bitmap-B-zier-curves-Quadratic
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bitmap-B-zier-curves-Quadratic/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Bitmap-Midpoint-circle-algorithm b/Lang/EasyLang/Bitmap-Midpoint-circle-algorithm
deleted file mode 120000
index 9b995802ee..0000000000
--- a/Lang/EasyLang/Bitmap-Midpoint-circle-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bitmap-Midpoint-circle-algorithm/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Boyer-Moore-string-search b/Lang/EasyLang/Boyer-Moore-string-search
deleted file mode 120000
index 189112146a..0000000000
--- a/Lang/EasyLang/Boyer-Moore-string-search
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Boyer-Moore-string-search/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Brace-expansion b/Lang/EasyLang/Brace-expansion
deleted file mode 120000
index fadaa7c96a..0000000000
--- a/Lang/EasyLang/Brace-expansion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Brace-expansion/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Bulls-and-cows-Player b/Lang/EasyLang/Bulls-and-cows-Player
deleted file mode 120000
index 9e4aef5378..0000000000
--- a/Lang/EasyLang/Bulls-and-cows-Player
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bulls-and-cows-Player/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Burrows-Wheeler-transform b/Lang/EasyLang/Burrows-Wheeler-transform
deleted file mode 120000
index d3dcf6a651..0000000000
--- a/Lang/EasyLang/Burrows-Wheeler-transform
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Burrows-Wheeler-transform/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/CRC-32 b/Lang/EasyLang/CRC-32
deleted file mode 120000
index 75d250a063..0000000000
--- a/Lang/EasyLang/CRC-32
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/CRC-32/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Cheryls-birthday b/Lang/EasyLang/Cheryls-birthday
deleted file mode 120000
index da4092e3ea..0000000000
--- a/Lang/EasyLang/Cheryls-birthday
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cheryls-birthday/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Cholesky-decomposition b/Lang/EasyLang/Cholesky-decomposition
deleted file mode 120000
index 3d9b8e35d4..0000000000
--- a/Lang/EasyLang/Cholesky-decomposition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cholesky-decomposition/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Convert-decimal-number-to-rational b/Lang/EasyLang/Convert-decimal-number-to-rational
deleted file mode 120000
index d8af3c05f9..0000000000
--- a/Lang/EasyLang/Convert-decimal-number-to-rational
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Convert-decimal-number-to-rational/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Currency b/Lang/EasyLang/Currency
deleted file mode 120000
index a42c848ea8..0000000000
--- a/Lang/EasyLang/Currency
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Currency/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Date-format b/Lang/EasyLang/Date-format
deleted file mode 120000
index 443f76ed6a..0000000000
--- a/Lang/EasyLang/Date-format
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Date-format/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Death-Star b/Lang/EasyLang/Death-Star
deleted file mode 120000
index 71ec2dde3d..0000000000
--- a/Lang/EasyLang/Death-Star
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Death-Star/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Deconvolution-1D b/Lang/EasyLang/Deconvolution-1D
deleted file mode 120000
index 7dba9ab208..0000000000
--- a/Lang/EasyLang/Deconvolution-1D
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Deconvolution-1D/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Deepcopy b/Lang/EasyLang/Deepcopy
deleted file mode 120000
index 4137c6d590..0000000000
--- a/Lang/EasyLang/Deepcopy
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Deepcopy/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Determinant-and-permanent b/Lang/EasyLang/Determinant-and-permanent
deleted file mode 120000
index 09ae422506..0000000000
--- a/Lang/EasyLang/Determinant-and-permanent
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determinant-and-permanent/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Distribution-of-0-digits-in-factorial-series b/Lang/EasyLang/Distribution-of-0-digits-in-factorial-series
deleted file mode 120000
index 10532131de..0000000000
--- a/Lang/EasyLang/Distribution-of-0-digits-in-factorial-series
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Distribution-of-0-digits-in-factorial-series/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Draw-a-sphere b/Lang/EasyLang/Draw-a-sphere
deleted file mode 120000
index 4a92493ec5..0000000000
--- a/Lang/EasyLang/Draw-a-sphere
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Draw-a-sphere/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/EKG-sequence-convergence b/Lang/EasyLang/EKG-sequence-convergence
deleted file mode 120000
index a5d661cade..0000000000
--- a/Lang/EasyLang/EKG-sequence-convergence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/EKG-sequence-convergence/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Earliest-difference-between-prime-gaps b/Lang/EasyLang/Earliest-difference-between-prime-gaps
deleted file mode 120000
index e8abb13bc1..0000000000
--- a/Lang/EasyLang/Earliest-difference-between-prime-gaps
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Earliest-difference-between-prime-gaps/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Element-wise-operations b/Lang/EasyLang/Element-wise-operations
deleted file mode 120000
index 79d10fbb82..0000000000
--- a/Lang/EasyLang/Element-wise-operations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Element-wise-operations/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Elementary-cellular-automaton-Infinite-length b/Lang/EasyLang/Elementary-cellular-automaton-Infinite-length
deleted file mode 120000
index 440a0e3168..0000000000
--- a/Lang/EasyLang/Elementary-cellular-automaton-Infinite-length
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Elementary-cellular-automaton-Infinite-length/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Erd-s-Selfridge-categorization-of-primes b/Lang/EasyLang/Erd-s-Selfridge-categorization-of-primes
deleted file mode 120000
index a64dc7d4f0..0000000000
--- a/Lang/EasyLang/Erd-s-Selfridge-categorization-of-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Erd-s-Selfridge-categorization-of-primes/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Eulers-identity b/Lang/EasyLang/Eulers-identity
deleted file mode 120000
index 6753a604ea..0000000000
--- a/Lang/EasyLang/Eulers-identity
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Eulers-identity/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Factorions b/Lang/EasyLang/Factorions
deleted file mode 120000
index 52bf4a578c..0000000000
--- a/Lang/EasyLang/Factorions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factorions/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Fast-Fourier-transform b/Lang/EasyLang/Fast-Fourier-transform
deleted file mode 120000
index 6486d41d10..0000000000
--- a/Lang/EasyLang/Fast-Fourier-transform
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fast-Fourier-transform/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Faulhabers-formula b/Lang/EasyLang/Faulhabers-formula
deleted file mode 120000
index a0587d4c22..0000000000
--- a/Lang/EasyLang/Faulhabers-formula
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Faulhabers-formula/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Faulhabers-triangle b/Lang/EasyLang/Faulhabers-triangle
deleted file mode 120000
index 0ced82832c..0000000000
--- a/Lang/EasyLang/Faulhabers-triangle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Faulhabers-triangle/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Fermat-numbers b/Lang/EasyLang/Fermat-numbers
deleted file mode 120000
index 0bf9bf359c..0000000000
--- a/Lang/EasyLang/Fermat-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fermat-numbers/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Fibonacci-word-fractal b/Lang/EasyLang/Fibonacci-word-fractal
deleted file mode 120000
index d075c27d88..0000000000
--- a/Lang/EasyLang/Fibonacci-word-fractal
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fibonacci-word-fractal/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Find-Chess960-starting-position-identifier b/Lang/EasyLang/Find-Chess960-starting-position-identifier
deleted file mode 120000
index 74db5136c0..0000000000
--- a/Lang/EasyLang/Find-Chess960-starting-position-identifier
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Find-Chess960-starting-position-identifier/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Find-if-a-point-is-within-a-triangle b/Lang/EasyLang/Find-if-a-point-is-within-a-triangle
deleted file mode 120000
index cd1bb80075..0000000000
--- a/Lang/EasyLang/Find-if-a-point-is-within-a-triangle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Find-if-a-point-is-within-a-triangle/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Floyd-Warshall-algorithm b/Lang/EasyLang/Floyd-Warshall-algorithm
deleted file mode 120000
index 3210a33bb1..0000000000
--- a/Lang/EasyLang/Floyd-Warshall-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Floyd-Warshall-algorithm/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Fortunate-numbers b/Lang/EasyLang/Fortunate-numbers
deleted file mode 120000
index 2c6e02874b..0000000000
--- a/Lang/EasyLang/Fortunate-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fortunate-numbers/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Forward-difference b/Lang/EasyLang/Forward-difference
deleted file mode 120000
index 12de7eedb0..0000000000
--- a/Lang/EasyLang/Forward-difference
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Forward-difference/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Fraction-reduction b/Lang/EasyLang/Fraction-reduction
deleted file mode 120000
index 61af524020..0000000000
--- a/Lang/EasyLang/Fraction-reduction
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fraction-reduction/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Fractran b/Lang/EasyLang/Fractran
deleted file mode 120000
index 431453ab79..0000000000
--- a/Lang/EasyLang/Fractran
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fractran/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/French-Republican-calendar b/Lang/EasyLang/French-Republican-calendar
deleted file mode 120000
index 63cacd897e..0000000000
--- a/Lang/EasyLang/French-Republican-calendar
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/French-Republican-calendar/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Function-prototype b/Lang/EasyLang/Function-prototype
deleted file mode 120000
index d56b3a5da3..0000000000
--- a/Lang/EasyLang/Function-prototype
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Function-prototype/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Greatest-subsequential-sum b/Lang/EasyLang/Greatest-subsequential-sum
deleted file mode 120000
index 679d3c6deb..0000000000
--- a/Lang/EasyLang/Greatest-subsequential-sum
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Greatest-subsequential-sum/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Guess-the-number-With-feedback-player- b/Lang/EasyLang/Guess-the-number-With-feedback-player-
deleted file mode 120000
index 56ad8fd02a..0000000000
--- a/Lang/EasyLang/Guess-the-number-With-feedback-player-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Guess-the-number-With-feedback-player-/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Halt-and-catch-fire b/Lang/EasyLang/Halt-and-catch-fire
deleted file mode 120000
index fe61f64c40..0000000000
--- a/Lang/EasyLang/Halt-and-catch-fire
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Halt-and-catch-fire/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Hamming-numbers b/Lang/EasyLang/Hamming-numbers
deleted file mode 120000
index 6f52ef2c78..0000000000
--- a/Lang/EasyLang/Hamming-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hamming-numbers/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Hash-from-two-arrays b/Lang/EasyLang/Hash-from-two-arrays
deleted file mode 120000
index 0d148a2df3..0000000000
--- a/Lang/EasyLang/Hash-from-two-arrays
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hash-from-two-arrays/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Heronian-triangles b/Lang/EasyLang/Heronian-triangles
deleted file mode 120000
index 8656dc59f0..0000000000
--- a/Lang/EasyLang/Heronian-triangles
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Heronian-triangles/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Hex-words b/Lang/EasyLang/Hex-words
deleted file mode 120000
index 0d39e2eee9..0000000000
--- a/Lang/EasyLang/Hex-words
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hex-words/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Hofstadter-Figure-Figure-sequences b/Lang/EasyLang/Hofstadter-Figure-Figure-sequences
deleted file mode 120000
index d5a34b275d..0000000000
--- a/Lang/EasyLang/Hofstadter-Figure-Figure-sequences
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hofstadter-Figure-Figure-sequences/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Honeycombs b/Lang/EasyLang/Honeycombs
deleted file mode 120000
index 5885102888..0000000000
--- a/Lang/EasyLang/Honeycombs
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Honeycombs/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Hunt-the-Wumpus b/Lang/EasyLang/Hunt-the-Wumpus
deleted file mode 120000
index 8a2489577d..0000000000
--- a/Lang/EasyLang/Hunt-the-Wumpus
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hunt-the-Wumpus/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/IBAN b/Lang/EasyLang/IBAN
deleted file mode 120000
index 961014b963..0000000000
--- a/Lang/EasyLang/IBAN
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/IBAN/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Idiomatically-determine-all-the-characters-that-can-be-used-for-symbols b/Lang/EasyLang/Idiomatically-determine-all-the-characters-that-can-be-used-for-symbols
deleted file mode 120000
index ff1573925b..0000000000
--- a/Lang/EasyLang/Idiomatically-determine-all-the-characters-that-can-be-used-for-symbols
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Idiomatically-determine-all-the-characters-that-can-be-used-for-symbols/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Im-a-software-engineer-get-me-out-of-here b/Lang/EasyLang/Im-a-software-engineer-get-me-out-of-here
deleted file mode 120000
index 70ace224d9..0000000000
--- a/Lang/EasyLang/Im-a-software-engineer-get-me-out-of-here
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Im-a-software-engineer-get-me-out-of-here/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Isograms-and-heterograms b/Lang/EasyLang/Isograms-and-heterograms
deleted file mode 120000
index 44f53b57ff..0000000000
--- a/Lang/EasyLang/Isograms-and-heterograms
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Isograms-and-heterograms/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Iterated-digits-squaring b/Lang/EasyLang/Iterated-digits-squaring
deleted file mode 120000
index 193be9fcba..0000000000
--- a/Lang/EasyLang/Iterated-digits-squaring
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Iterated-digits-squaring/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Jacobi-symbol b/Lang/EasyLang/Jacobi-symbol
deleted file mode 120000
index fec464ee0d..0000000000
--- a/Lang/EasyLang/Jacobi-symbol
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jacobi-symbol/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Jacobsthal-numbers b/Lang/EasyLang/Jacobsthal-numbers
deleted file mode 120000
index 9469db92c2..0000000000
--- a/Lang/EasyLang/Jacobsthal-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jacobsthal-numbers/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Jaro-Winkler-distance b/Lang/EasyLang/Jaro-Winkler-distance
deleted file mode 120000
index 727f74b880..0000000000
--- a/Lang/EasyLang/Jaro-Winkler-distance
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jaro-Winkler-distance/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Jaro-similarity b/Lang/EasyLang/Jaro-similarity
deleted file mode 120000
index d630573e8e..0000000000
--- a/Lang/EasyLang/Jaro-similarity
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jaro-similarity/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/JortSort b/Lang/EasyLang/JortSort
deleted file mode 120000
index 69c9d425de..0000000000
--- a/Lang/EasyLang/JortSort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/JortSort/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Juggler-sequence b/Lang/EasyLang/Juggler-sequence
deleted file mode 120000
index a501986168..0000000000
--- a/Lang/EasyLang/Juggler-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Juggler-sequence/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/K-means++-clustering b/Lang/EasyLang/K-means++-clustering
deleted file mode 120000
index 9c59e662f6..0000000000
--- a/Lang/EasyLang/K-means++-clustering
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/K-means++-clustering/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Kernighans-large-earthquake-problem b/Lang/EasyLang/Kernighans-large-earthquake-problem
deleted file mode 120000
index 3ab1e4458e..0000000000
--- a/Lang/EasyLang/Kernighans-large-earthquake-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Kernighans-large-earthquake-problem/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Keyboard-input-Keypress-check b/Lang/EasyLang/Keyboard-input-Keypress-check
deleted file mode 120000
index 749a963892..0000000000
--- a/Lang/EasyLang/Keyboard-input-Keypress-check
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Keyboard-input-Keypress-check/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Keyboard-input-Obtain-a-Y-or-N-response b/Lang/EasyLang/Keyboard-input-Obtain-a-Y-or-N-response
deleted file mode 120000
index afc72ecd9d..0000000000
--- a/Lang/EasyLang/Keyboard-input-Obtain-a-Y-or-N-response
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Keyboard-input-Obtain-a-Y-or-N-response/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Knapsack-problem-Bounded b/Lang/EasyLang/Knapsack-problem-Bounded
deleted file mode 120000
index d0f7a40df2..0000000000
--- a/Lang/EasyLang/Knapsack-problem-Bounded
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Knapsack-problem-Bounded/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Knapsack-problem-Continuous b/Lang/EasyLang/Knapsack-problem-Continuous
deleted file mode 120000
index a54e4a1363..0000000000
--- a/Lang/EasyLang/Knapsack-problem-Continuous
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Knapsack-problem-Continuous/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Knapsack-problem-Unbounded b/Lang/EasyLang/Knapsack-problem-Unbounded
deleted file mode 120000
index feaf22d24e..0000000000
--- a/Lang/EasyLang/Knapsack-problem-Unbounded
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Knapsack-problem-Unbounded/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Knights-tour b/Lang/EasyLang/Knights-tour
deleted file mode 120000
index c3c72273c2..0000000000
--- a/Lang/EasyLang/Knights-tour
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Knights-tour/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Kolakoski-sequence b/Lang/EasyLang/Kolakoski-sequence
deleted file mode 120000
index 0d808caea4..0000000000
--- a/Lang/EasyLang/Kolakoski-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Kolakoski-sequence/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Kosaraju b/Lang/EasyLang/Kosaraju
deleted file mode 120000
index 84b9e66a67..0000000000
--- a/Lang/EasyLang/Kosaraju
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Kosaraju/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Kronecker-product b/Lang/EasyLang/Kronecker-product
deleted file mode 120000
index 1246c0ce28..0000000000
--- a/Lang/EasyLang/Kronecker-product
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Kronecker-product/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Kronecker-product-based-fractals b/Lang/EasyLang/Kronecker-product-based-fractals
deleted file mode 120000
index 563af0ba71..0000000000
--- a/Lang/EasyLang/Kronecker-product-based-fractals
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Kronecker-product-based-fractals/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/LU-decomposition b/Lang/EasyLang/LU-decomposition
deleted file mode 120000
index b8f8a0d85a..0000000000
--- a/Lang/EasyLang/LU-decomposition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/LU-decomposition/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Largest-int-from-concatenated-ints b/Lang/EasyLang/Largest-int-from-concatenated-ints
deleted file mode 120000
index 10e1335e8a..0000000000
--- a/Lang/EasyLang/Largest-int-from-concatenated-ints
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Largest-int-from-concatenated-ints/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Last-letter-first-letter b/Lang/EasyLang/Last-letter-first-letter
deleted file mode 120000
index 0b195a1260..0000000000
--- a/Lang/EasyLang/Last-letter-first-letter
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Last-letter-first-letter/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Law-of-cosines---triples b/Lang/EasyLang/Law-of-cosines---triples
deleted file mode 120000
index c863a3f9c0..0000000000
--- a/Lang/EasyLang/Law-of-cosines---triples
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Law-of-cosines---triples/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Left-factorials b/Lang/EasyLang/Left-factorials
deleted file mode 120000
index 99571138e4..0000000000
--- a/Lang/EasyLang/Left-factorials
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Left-factorials/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Legendre-prime-counting-function b/Lang/EasyLang/Legendre-prime-counting-function
deleted file mode 120000
index 4b5478a288..0000000000
--- a/Lang/EasyLang/Legendre-prime-counting-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Legendre-prime-counting-function/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/List-rooted-trees b/Lang/EasyLang/List-rooted-trees
deleted file mode 120000
index 14cdfaa5a6..0000000000
--- a/Lang/EasyLang/List-rooted-trees
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/List-rooted-trees/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Logistic-curve-fitting-in-epidemiology b/Lang/EasyLang/Logistic-curve-fitting-in-epidemiology
deleted file mode 120000
index 265f7cdf24..0000000000
--- a/Lang/EasyLang/Logistic-curve-fitting-in-epidemiology
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Logistic-curve-fitting-in-epidemiology/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Long-literals-with-continuations b/Lang/EasyLang/Long-literals-with-continuations
deleted file mode 120000
index ffe5aa4238..0000000000
--- a/Lang/EasyLang/Long-literals-with-continuations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Long-literals-with-continuations/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Longest-increasing-subsequence b/Lang/EasyLang/Longest-increasing-subsequence
deleted file mode 120000
index eabf95f750..0000000000
--- a/Lang/EasyLang/Longest-increasing-subsequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Longest-increasing-subsequence/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Loops-Wrong-ranges b/Lang/EasyLang/Loops-Wrong-ranges
deleted file mode 120000
index d803a36357..0000000000
--- a/Lang/EasyLang/Loops-Wrong-ranges
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Wrong-ranges/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Ludic-numbers b/Lang/EasyLang/Ludic-numbers
deleted file mode 120000
index 1d6fc2e015..0000000000
--- a/Lang/EasyLang/Ludic-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ludic-numbers/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Lychrel-numbers b/Lang/EasyLang/Lychrel-numbers
deleted file mode 120000
index a66932caaa..0000000000
--- a/Lang/EasyLang/Lychrel-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Lychrel-numbers/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/MD4 b/Lang/EasyLang/MD4
deleted file mode 120000
index 607e4d2f65..0000000000
--- a/Lang/EasyLang/MD4
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/MD4/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Mad-Libs b/Lang/EasyLang/Mad-Libs
deleted file mode 120000
index 80e4f5b2e7..0000000000
--- a/Lang/EasyLang/Mad-Libs
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Mad-Libs/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Magic-squares-of-doubly-even-order b/Lang/EasyLang/Magic-squares-of-doubly-even-order
deleted file mode 120000
index b5f41f3cca..0000000000
--- a/Lang/EasyLang/Magic-squares-of-doubly-even-order
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Magic-squares-of-doubly-even-order/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Magic-squares-of-singly-even-order b/Lang/EasyLang/Magic-squares-of-singly-even-order
deleted file mode 120000
index bffad4e9d9..0000000000
--- a/Lang/EasyLang/Magic-squares-of-singly-even-order
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Magic-squares-of-singly-even-order/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Map-range b/Lang/EasyLang/Map-range
deleted file mode 120000
index 7f2fe886c3..0000000000
--- a/Lang/EasyLang/Map-range
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Map-range/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Matrix-chain-multiplication b/Lang/EasyLang/Matrix-chain-multiplication
deleted file mode 120000
index 49b2582836..0000000000
--- a/Lang/EasyLang/Matrix-chain-multiplication
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Matrix-chain-multiplication/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Matrix-exponentiation-operator b/Lang/EasyLang/Matrix-exponentiation-operator
deleted file mode 120000
index ffeb77ddad..0000000000
--- a/Lang/EasyLang/Matrix-exponentiation-operator
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Matrix-exponentiation-operator/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Mayan-numerals b/Lang/EasyLang/Mayan-numerals
deleted file mode 120000
index 101692428a..0000000000
--- a/Lang/EasyLang/Mayan-numerals
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Mayan-numerals/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Meissel-Mertens-constant b/Lang/EasyLang/Meissel-Mertens-constant
new file mode 120000
index 0000000000..2673a3a653
--- /dev/null
+++ b/Lang/EasyLang/Meissel-Mertens-constant
@@ -0,0 +1 @@
+../../Task/Meissel-Mertens-constant/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Merge-and-aggregate-datasets b/Lang/EasyLang/Merge-and-aggregate-datasets
deleted file mode 120000
index 4240a68719..0000000000
--- a/Lang/EasyLang/Merge-and-aggregate-datasets
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Merge-and-aggregate-datasets/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Mian-Chowla-sequence b/Lang/EasyLang/Mian-Chowla-sequence
deleted file mode 120000
index 314aaad4b1..0000000000
--- a/Lang/EasyLang/Mian-Chowla-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Mian-Chowla-sequence/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Minkowski-question-mark-function b/Lang/EasyLang/Minkowski-question-mark-function
deleted file mode 120000
index e4df814cca..0000000000
--- a/Lang/EasyLang/Minkowski-question-mark-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Minkowski-question-mark-function/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Modified-random-distribution b/Lang/EasyLang/Modified-random-distribution
deleted file mode 120000
index 127bc0bcb6..0000000000
--- a/Lang/EasyLang/Modified-random-distribution
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Modified-random-distribution/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Modular-exponentiation b/Lang/EasyLang/Modular-exponentiation
deleted file mode 120000
index 7257cc430f..0000000000
--- a/Lang/EasyLang/Modular-exponentiation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Modular-exponentiation/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Move-to-front-algorithm b/Lang/EasyLang/Move-to-front-algorithm
deleted file mode 120000
index 8c3f8fe7f9..0000000000
--- a/Lang/EasyLang/Move-to-front-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Move-to-front-algorithm/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Multi-base-primes b/Lang/EasyLang/Multi-base-primes
deleted file mode 120000
index 0b06b01c9e..0000000000
--- a/Lang/EasyLang/Multi-base-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Multi-base-primes/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Multisplit b/Lang/EasyLang/Multisplit
deleted file mode 120000
index 3f480eaeea..0000000000
--- a/Lang/EasyLang/Multisplit
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Multisplit/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Negative-base-numbers b/Lang/EasyLang/Negative-base-numbers
deleted file mode 120000
index 750b2fa4de..0000000000
--- a/Lang/EasyLang/Negative-base-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Negative-base-numbers/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Nested-function b/Lang/EasyLang/Nested-function
deleted file mode 120000
index 3d6f80739f..0000000000
--- a/Lang/EasyLang/Nested-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nested-function/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Non-continuous-subsequences b/Lang/EasyLang/Non-continuous-subsequences
deleted file mode 120000
index 1ddebfbef7..0000000000
--- a/Lang/EasyLang/Non-continuous-subsequences
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Non-continuous-subsequences/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Non-decimal-radices-Input b/Lang/EasyLang/Non-decimal-radices-Input
deleted file mode 120000
index 15845b7041..0000000000
--- a/Lang/EasyLang/Non-decimal-radices-Input
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Non-decimal-radices-Input/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Nonoblock b/Lang/EasyLang/Nonoblock
deleted file mode 120000
index e2c27bd166..0000000000
--- a/Lang/EasyLang/Nonoblock
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nonoblock/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Number-reversal-game b/Lang/EasyLang/Number-reversal-game
deleted file mode 120000
index a55399f2e0..0000000000
--- a/Lang/EasyLang/Number-reversal-game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Number-reversal-game/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Order-by-pair-comparisons b/Lang/EasyLang/Order-by-pair-comparisons
deleted file mode 120000
index 78fc8f28e3..0000000000
--- a/Lang/EasyLang/Order-by-pair-comparisons
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Order-by-pair-comparisons/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Order-disjoint-list-items b/Lang/EasyLang/Order-disjoint-list-items
deleted file mode 120000
index bd0f2b89f9..0000000000
--- a/Lang/EasyLang/Order-disjoint-list-items
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Order-disjoint-list-items/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Ordered-words b/Lang/EasyLang/Ordered-words
deleted file mode 120000
index 284c4e7df2..0000000000
--- a/Lang/EasyLang/Ordered-words
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ordered-words/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Paraffins b/Lang/EasyLang/Paraffins
deleted file mode 120000
index 954e9b549e..0000000000
--- a/Lang/EasyLang/Paraffins
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Paraffins/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Parsing-RPN-calculator-algorithm b/Lang/EasyLang/Parsing-RPN-calculator-algorithm
deleted file mode 120000
index 4c308dc876..0000000000
--- a/Lang/EasyLang/Parsing-RPN-calculator-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Parsing-RPN-calculator-algorithm/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Partition-an-integer-x-into-n-primes b/Lang/EasyLang/Partition-an-integer-x-into-n-primes
deleted file mode 120000
index 21cc93eeed..0000000000
--- a/Lang/EasyLang/Partition-an-integer-x-into-n-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Partition-an-integer-x-into-n-primes/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Partition-function-P b/Lang/EasyLang/Partition-function-P
deleted file mode 120000
index 07b0e608d7..0000000000
--- a/Lang/EasyLang/Partition-function-P
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Partition-function-P/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Pascal-matrix-generation b/Lang/EasyLang/Pascal-matrix-generation
deleted file mode 120000
index 2a45a12baf..0000000000
--- a/Lang/EasyLang/Pascal-matrix-generation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pascal-matrix-generation/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Pascals-triangle-Puzzle b/Lang/EasyLang/Pascals-triangle-Puzzle
deleted file mode 120000
index bb3b35817e..0000000000
--- a/Lang/EasyLang/Pascals-triangle-Puzzle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pascals-triangle-Puzzle/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Password-generator b/Lang/EasyLang/Password-generator
deleted file mode 120000
index 004d74f550..0000000000
--- a/Lang/EasyLang/Password-generator
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Password-generator/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Pathological-floating-point-problems b/Lang/EasyLang/Pathological-floating-point-problems
deleted file mode 120000
index feb17cf372..0000000000
--- a/Lang/EasyLang/Pathological-floating-point-problems
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pathological-floating-point-problems/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Penneys-game b/Lang/EasyLang/Penneys-game
deleted file mode 120000
index 8a534b3c6f..0000000000
--- a/Lang/EasyLang/Penneys-game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Penneys-game/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Percolation-Mean-cluster-density b/Lang/EasyLang/Percolation-Mean-cluster-density
deleted file mode 120000
index 5231594fc4..0000000000
--- a/Lang/EasyLang/Percolation-Mean-cluster-density
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Percolation-Mean-cluster-density/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Percolation-Site-percolation b/Lang/EasyLang/Percolation-Site-percolation
deleted file mode 120000
index 50ffe015c4..0000000000
--- a/Lang/EasyLang/Percolation-Site-percolation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Percolation-Site-percolation/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Peripheral-drift-illusion b/Lang/EasyLang/Peripheral-drift-illusion
deleted file mode 120000
index 6922becd71..0000000000
--- a/Lang/EasyLang/Peripheral-drift-illusion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Peripheral-drift-illusion/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Permutation-test b/Lang/EasyLang/Permutation-test
deleted file mode 120000
index d3b1950f7a..0000000000
--- a/Lang/EasyLang/Permutation-test
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Permutation-test/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Permutations-Rank-of-a-permutation b/Lang/EasyLang/Permutations-Rank-of-a-permutation
deleted file mode 120000
index 0512aed3af..0000000000
--- a/Lang/EasyLang/Permutations-Rank-of-a-permutation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Permutations-Rank-of-a-permutation/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Phrase-reversals b/Lang/EasyLang/Phrase-reversals
deleted file mode 120000
index 3631697399..0000000000
--- a/Lang/EasyLang/Phrase-reversals
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Phrase-reversals/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Pierpont-primes b/Lang/EasyLang/Pierpont-primes
deleted file mode 120000
index 6e3e44c04c..0000000000
--- a/Lang/EasyLang/Pierpont-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pierpont-primes/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Pinstripe-Display b/Lang/EasyLang/Pinstripe-Display
deleted file mode 120000
index db25917458..0000000000
--- a/Lang/EasyLang/Pinstripe-Display
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pinstripe-Display/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Plasma-effect b/Lang/EasyLang/Plasma-effect
deleted file mode 120000
index 5f845f7e61..0000000000
--- a/Lang/EasyLang/Plasma-effect
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Plasma-effect/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Playfair-cipher b/Lang/EasyLang/Playfair-cipher
deleted file mode 120000
index 3d1568669f..0000000000
--- a/Lang/EasyLang/Playfair-cipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Playfair-cipher/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Poker-hand-analyser b/Lang/EasyLang/Poker-hand-analyser
deleted file mode 120000
index 0d36d9a0f9..0000000000
--- a/Lang/EasyLang/Poker-hand-analyser
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Poker-hand-analyser/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Polynomial-long-division b/Lang/EasyLang/Polynomial-long-division
deleted file mode 120000
index b22845819d..0000000000
--- a/Lang/EasyLang/Polynomial-long-division
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Polynomial-long-division/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Prime-numbers-whose-neighboring-pairs-are-tetraprimes b/Lang/EasyLang/Prime-numbers-whose-neighboring-pairs-are-tetraprimes
deleted file mode 120000
index deadbe682f..0000000000
--- a/Lang/EasyLang/Prime-numbers-whose-neighboring-pairs-are-tetraprimes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Prime-numbers-whose-neighboring-pairs-are-tetraprimes/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Prime-triangle b/Lang/EasyLang/Prime-triangle
deleted file mode 120000
index 1d703d33b5..0000000000
--- a/Lang/EasyLang/Prime-triangle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Prime-triangle/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Primes---allocate-descendants-to-their-ancestors b/Lang/EasyLang/Primes---allocate-descendants-to-their-ancestors
deleted file mode 120000
index c5cfa0147b..0000000000
--- a/Lang/EasyLang/Primes---allocate-descendants-to-their-ancestors
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Primes---allocate-descendants-to-their-ancestors/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Primorial-numbers b/Lang/EasyLang/Primorial-numbers
deleted file mode 120000
index d0a4900284..0000000000
--- a/Lang/EasyLang/Primorial-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Primorial-numbers/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Pseudo-random-numbers-Combined-recursive-generator-MRG32k3a b/Lang/EasyLang/Pseudo-random-numbers-Combined-recursive-generator-MRG32k3a
deleted file mode 120000
index 4f4d220e94..0000000000
--- a/Lang/EasyLang/Pseudo-random-numbers-Combined-recursive-generator-MRG32k3a
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pseudo-random-numbers-Combined-recursive-generator-MRG32k3a/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Pythagorean-quadruples b/Lang/EasyLang/Pythagorean-quadruples
deleted file mode 120000
index 63bc250851..0000000000
--- a/Lang/EasyLang/Pythagorean-quadruples
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pythagorean-quadruples/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Quaternion-type b/Lang/EasyLang/Quaternion-type
new file mode 120000
index 0000000000..fd590dabb6
--- /dev/null
+++ b/Lang/EasyLang/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Quoting-constructs b/Lang/EasyLang/Quoting-constructs
deleted file mode 120000
index 4d929963d4..0000000000
--- a/Lang/EasyLang/Quoting-constructs
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Quoting-constructs/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/RIPEMD-160 b/Lang/EasyLang/RIPEMD-160
deleted file mode 120000
index c7b5193d17..0000000000
--- a/Lang/EasyLang/RIPEMD-160
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/RIPEMD-160/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/RSA-code b/Lang/EasyLang/RSA-code
deleted file mode 120000
index ab0c3fd0ae..0000000000
--- a/Lang/EasyLang/RSA-code
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/RSA-code/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Range-consolidation b/Lang/EasyLang/Range-consolidation
deleted file mode 120000
index 2af9d87ce4..0000000000
--- a/Lang/EasyLang/Range-consolidation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Range-consolidation/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Range-expansion b/Lang/EasyLang/Range-expansion
deleted file mode 120000
index b1e04fdc47..0000000000
--- a/Lang/EasyLang/Range-expansion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Range-expansion/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Ranking-methods b/Lang/EasyLang/Ranking-methods
deleted file mode 120000
index 7f1b7f2c09..0000000000
--- a/Lang/EasyLang/Ranking-methods
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ranking-methods/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Read-a-specific-line-from-a-file b/Lang/EasyLang/Read-a-specific-line-from-a-file
deleted file mode 120000
index d7d3ddb462..0000000000
--- a/Lang/EasyLang/Read-a-specific-line-from-a-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Read-a-specific-line-from-a-file/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Resistor-mesh b/Lang/EasyLang/Resistor-mesh
deleted file mode 120000
index 7e1b48a0ca..0000000000
--- a/Lang/EasyLang/Resistor-mesh
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Resistor-mesh/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Rhonda-numbers b/Lang/EasyLang/Rhonda-numbers
deleted file mode 120000
index 5ec2f03aee..0000000000
--- a/Lang/EasyLang/Rhonda-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Rhonda-numbers/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Rock-paper-scissors b/Lang/EasyLang/Rock-paper-scissors
deleted file mode 120000
index f5bc56ac98..0000000000
--- a/Lang/EasyLang/Rock-paper-scissors
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Rock-paper-scissors/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Ruth-Aaron-numbers b/Lang/EasyLang/Ruth-Aaron-numbers
deleted file mode 120000
index 8c50b35963..0000000000
--- a/Lang/EasyLang/Ruth-Aaron-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ruth-Aaron-numbers/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/SHA-1 b/Lang/EasyLang/SHA-1
deleted file mode 120000
index 85ee6bdeff..0000000000
--- a/Lang/EasyLang/SHA-1
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/SHA-1/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/SHA-256 b/Lang/EasyLang/SHA-256
deleted file mode 120000
index 90c60df38f..0000000000
--- a/Lang/EasyLang/SHA-256
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/SHA-256/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Sailors-coconuts-and-a-monkey-problem b/Lang/EasyLang/Sailors-coconuts-and-a-monkey-problem
deleted file mode 120000
index 13c2416787..0000000000
--- a/Lang/EasyLang/Sailors-coconuts-and-a-monkey-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sailors-coconuts-and-a-monkey-problem/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Scope-Function-names-and-labels b/Lang/EasyLang/Scope-Function-names-and-labels
deleted file mode 120000
index 159b6679bd..0000000000
--- a/Lang/EasyLang/Scope-Function-names-and-labels
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Scope-Function-names-and-labels/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Selectively-replace-multiple-instances-of-a-character-within-a-string b/Lang/EasyLang/Selectively-replace-multiple-instances-of-a-character-within-a-string
deleted file mode 120000
index c9738f521a..0000000000
--- a/Lang/EasyLang/Selectively-replace-multiple-instances-of-a-character-within-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Selectively-replace-multiple-instances-of-a-character-within-a-string/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Self-numbers b/Lang/EasyLang/Self-numbers
deleted file mode 120000
index 219b2abf44..0000000000
--- a/Lang/EasyLang/Self-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Self-numbers/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Semordnilap b/Lang/EasyLang/Semordnilap
deleted file mode 120000
index 54e7d67bd7..0000000000
--- a/Lang/EasyLang/Semordnilap
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Semordnilap/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors b/Lang/EasyLang/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
similarity index 100%
rename from Lang/EasyLang/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors
rename to Lang/EasyLang/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
diff --git a/Lang/EasyLang/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/EasyLang/Sequence-smallest-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/EasyLang/Sequence:-smallest-number-with-exactly-n-divisors
rename to Lang/EasyLang/Sequence-smallest-number-with-exactly-n-divisors
diff --git a/Lang/EasyLang/Show-the-epoch b/Lang/EasyLang/Show-the-epoch
deleted file mode 120000
index 67a6b1a9c5..0000000000
--- a/Lang/EasyLang/Show-the-epoch
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Show-the-epoch/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Sierpinski-triangle b/Lang/EasyLang/Sierpinski-triangle
deleted file mode 120000
index 36520550cb..0000000000
--- a/Lang/EasyLang/Sierpinski-triangle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sierpinski-triangle/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Solve-a-Hidato-puzzle b/Lang/EasyLang/Solve-a-Hidato-puzzle
deleted file mode 120000
index 91cd1509fe..0000000000
--- a/Lang/EasyLang/Solve-a-Hidato-puzzle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Solve-a-Hidato-puzzle/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Solve-a-Holy-Knights-tour b/Lang/EasyLang/Solve-a-Holy-Knights-tour
deleted file mode 120000
index 0807789002..0000000000
--- a/Lang/EasyLang/Solve-a-Holy-Knights-tour
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Solve-a-Holy-Knights-tour/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Solve-a-Hopido-puzzle b/Lang/EasyLang/Solve-a-Hopido-puzzle
deleted file mode 120000
index f1ae260677..0000000000
--- a/Lang/EasyLang/Solve-a-Hopido-puzzle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Solve-a-Hopido-puzzle/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Solve-a-Numbrix-puzzle b/Lang/EasyLang/Solve-a-Numbrix-puzzle
deleted file mode 120000
index 9dc56df255..0000000000
--- a/Lang/EasyLang/Solve-a-Numbrix-puzzle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Solve-a-Numbrix-puzzle/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Solve-the-no-connection-puzzle b/Lang/EasyLang/Solve-the-no-connection-puzzle
deleted file mode 120000
index 759be373e6..0000000000
--- a/Lang/EasyLang/Solve-the-no-connection-puzzle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Solve-the-no-connection-puzzle/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Sort-a-list-of-object-identifiers b/Lang/EasyLang/Sort-a-list-of-object-identifiers
deleted file mode 120000
index 6767e4212b..0000000000
--- a/Lang/EasyLang/Sort-a-list-of-object-identifiers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-a-list-of-object-identifiers/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Sort-an-integer-array b/Lang/EasyLang/Sort-an-integer-array
deleted file mode 120000
index b6e22e35fd..0000000000
--- a/Lang/EasyLang/Sort-an-integer-array
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-an-integer-array/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Sort-an-outline-at-every-level b/Lang/EasyLang/Sort-an-outline-at-every-level
deleted file mode 120000
index aa549fd59a..0000000000
--- a/Lang/EasyLang/Sort-an-outline-at-every-level
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-an-outline-at-every-level/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Sort-numbers-lexicographically b/Lang/EasyLang/Sort-numbers-lexicographically
deleted file mode 120000
index 096e63b030..0000000000
--- a/Lang/EasyLang/Sort-numbers-lexicographically
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-numbers-lexicographically/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Sorting-algorithms-Bead-sort b/Lang/EasyLang/Sorting-algorithms-Bead-sort
deleted file mode 120000
index a450a04067..0000000000
--- a/Lang/EasyLang/Sorting-algorithms-Bead-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Bead-sort/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Sorting-algorithms-Cocktail-sort b/Lang/EasyLang/Sorting-algorithms-Cocktail-sort
deleted file mode 120000
index 6ea90a8bea..0000000000
--- a/Lang/EasyLang/Sorting-algorithms-Cocktail-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Cocktail-sort/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Sorting-algorithms-Cocktail-sort-with-shifting-bounds b/Lang/EasyLang/Sorting-algorithms-Cocktail-sort-with-shifting-bounds
deleted file mode 120000
index 885e9fc6f4..0000000000
--- a/Lang/EasyLang/Sorting-algorithms-Cocktail-sort-with-shifting-bounds
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Cocktail-sort-with-shifting-bounds/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Sorting-algorithms-Comb-sort b/Lang/EasyLang/Sorting-algorithms-Comb-sort
deleted file mode 120000
index 105d051508..0000000000
--- a/Lang/EasyLang/Sorting-algorithms-Comb-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Comb-sort/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Sorting-algorithms-Pancake-sort b/Lang/EasyLang/Sorting-algorithms-Pancake-sort
deleted file mode 120000
index 7f8da5bd54..0000000000
--- a/Lang/EasyLang/Sorting-algorithms-Pancake-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Pancake-sort/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Sorting-algorithms-Patience-sort b/Lang/EasyLang/Sorting-algorithms-Patience-sort
deleted file mode 120000
index 6123828d8e..0000000000
--- a/Lang/EasyLang/Sorting-algorithms-Patience-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Patience-sort/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Sorting-algorithms-Permutation-sort b/Lang/EasyLang/Sorting-algorithms-Permutation-sort
deleted file mode 120000
index 858ffd0315..0000000000
--- a/Lang/EasyLang/Sorting-algorithms-Permutation-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Permutation-sort/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Sorting-algorithms-Shell-sort b/Lang/EasyLang/Sorting-algorithms-Shell-sort
deleted file mode 120000
index f5b30c5803..0000000000
--- a/Lang/EasyLang/Sorting-algorithms-Shell-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Shell-sort/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Sorting-algorithms-Strand-sort b/Lang/EasyLang/Sorting-algorithms-Strand-sort
deleted file mode 120000
index 005353ca66..0000000000
--- a/Lang/EasyLang/Sorting-algorithms-Strand-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Strand-sort/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Sparkline-in-unicode b/Lang/EasyLang/Sparkline-in-unicode
deleted file mode 120000
index 7ec2356a98..0000000000
--- a/Lang/EasyLang/Sparkline-in-unicode
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sparkline-in-unicode/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Spelling-of-ordinal-numbers b/Lang/EasyLang/Spelling-of-ordinal-numbers
deleted file mode 120000
index 657348f1ae..0000000000
--- a/Lang/EasyLang/Spelling-of-ordinal-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Spelling-of-ordinal-numbers/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Sphenic-numbers b/Lang/EasyLang/Sphenic-numbers
deleted file mode 120000
index 376288b88d..0000000000
--- a/Lang/EasyLang/Sphenic-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sphenic-numbers/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Square-free-integers b/Lang/EasyLang/Square-free-integers
deleted file mode 120000
index 07046cee4c..0000000000
--- a/Lang/EasyLang/Square-free-integers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Square-free-integers/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Stable-marriage-problem b/Lang/EasyLang/Stable-marriage-problem
deleted file mode 120000
index 5a03ad65b0..0000000000
--- a/Lang/EasyLang/Stable-marriage-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Stable-marriage-problem/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Stair-climbing-puzzle b/Lang/EasyLang/Stair-climbing-puzzle
deleted file mode 120000
index e0c07f706d..0000000000
--- a/Lang/EasyLang/Stair-climbing-puzzle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Stair-climbing-puzzle/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Statistics-Normal-distribution b/Lang/EasyLang/Statistics-Normal-distribution
deleted file mode 120000
index cfeed445c6..0000000000
--- a/Lang/EasyLang/Statistics-Normal-distribution
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Statistics-Normal-distribution/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Stem-and-leaf-plot b/Lang/EasyLang/Stem-and-leaf-plot
deleted file mode 120000
index cf4dace06c..0000000000
--- a/Lang/EasyLang/Stem-and-leaf-plot
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Stem-and-leaf-plot/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Straddling-checkerboard b/Lang/EasyLang/Straddling-checkerboard
deleted file mode 120000
index df23fad6e0..0000000000
--- a/Lang/EasyLang/Straddling-checkerboard
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Straddling-checkerboard/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Suffixation-of-decimal-numbers b/Lang/EasyLang/Suffixation-of-decimal-numbers
deleted file mode 120000
index 2c99b570e5..0000000000
--- a/Lang/EasyLang/Suffixation-of-decimal-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Suffixation-of-decimal-numbers/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Sum-and-product-puzzle b/Lang/EasyLang/Sum-and-product-puzzle
deleted file mode 120000
index 8dd4cbcafb..0000000000
--- a/Lang/EasyLang/Sum-and-product-puzzle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sum-and-product-puzzle/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Super-d-numbers b/Lang/EasyLang/Super-d-numbers
deleted file mode 120000
index c760610b85..0000000000
--- a/Lang/EasyLang/Super-d-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Super-d-numbers/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Superpermutation-minimisation b/Lang/EasyLang/Superpermutation-minimisation
deleted file mode 120000
index 6607fe41d8..0000000000
--- a/Lang/EasyLang/Superpermutation-minimisation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Superpermutation-minimisation/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Sutherland-Hodgman-polygon-clipping b/Lang/EasyLang/Sutherland-Hodgman-polygon-clipping
deleted file mode 120000
index 948deb6c32..0000000000
--- a/Lang/EasyLang/Sutherland-Hodgman-polygon-clipping
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sutherland-Hodgman-polygon-clipping/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Taxicab-numbers b/Lang/EasyLang/Taxicab-numbers
deleted file mode 120000
index 7035ad16c4..0000000000
--- a/Lang/EasyLang/Taxicab-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Taxicab-numbers/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Teacup-rim-text b/Lang/EasyLang/Teacup-rim-text
deleted file mode 120000
index 6602971306..0000000000
--- a/Lang/EasyLang/Teacup-rim-text
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Teacup-rim-text/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Tokenize-a-string-with-escaping b/Lang/EasyLang/Tokenize-a-string-with-escaping
deleted file mode 120000
index 1059b903ad..0000000000
--- a/Lang/EasyLang/Tokenize-a-string-with-escaping
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tokenize-a-string-with-escaping/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Top-rank-per-group b/Lang/EasyLang/Top-rank-per-group
deleted file mode 120000
index 861db59645..0000000000
--- a/Lang/EasyLang/Top-rank-per-group
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Top-rank-per-group/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Topological-sort b/Lang/EasyLang/Topological-sort
deleted file mode 120000
index 8100dde197..0000000000
--- a/Lang/EasyLang/Topological-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Topological-sort/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Topswops b/Lang/EasyLang/Topswops
deleted file mode 120000
index 2080f48b84..0000000000
--- a/Lang/EasyLang/Topswops
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Topswops/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Truth-table b/Lang/EasyLang/Truth-table
deleted file mode 120000
index 73d0946392..0000000000
--- a/Lang/EasyLang/Truth-table
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Truth-table/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/UPC b/Lang/EasyLang/UPC
deleted file mode 120000
index 2bb2969064..0000000000
--- a/Lang/EasyLang/UPC
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/UPC/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/URL-decoding b/Lang/EasyLang/URL-decoding
deleted file mode 120000
index a070edc78b..0000000000
--- a/Lang/EasyLang/URL-decoding
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/URL-decoding/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/URL-encoding b/Lang/EasyLang/URL-encoding
deleted file mode 120000
index c0b065b1e5..0000000000
--- a/Lang/EasyLang/URL-encoding
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/URL-encoding/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/UTF-8-encode-and-decode b/Lang/EasyLang/UTF-8-encode-and-decode
deleted file mode 120000
index c4de9115dc..0000000000
--- a/Lang/EasyLang/UTF-8-encode-and-decode
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/UTF-8-encode-and-decode/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Unicode-strings b/Lang/EasyLang/Unicode-strings
deleted file mode 120000
index c52bd4da5c..0000000000
--- a/Lang/EasyLang/Unicode-strings
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Unicode-strings/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Universal-Turing-machine b/Lang/EasyLang/Universal-Turing-machine
deleted file mode 120000
index c6c36c7e83..0000000000
--- a/Lang/EasyLang/Universal-Turing-machine
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Universal-Turing-machine/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Unprimeable-numbers b/Lang/EasyLang/Unprimeable-numbers
deleted file mode 120000
index ae808307c7..0000000000
--- a/Lang/EasyLang/Unprimeable-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Unprimeable-numbers/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Verhoeff-algorithm b/Lang/EasyLang/Verhoeff-algorithm
deleted file mode 120000
index 31c375b7e9..0000000000
--- a/Lang/EasyLang/Verhoeff-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Verhoeff-algorithm/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Verify-distribution-uniformity-Naive b/Lang/EasyLang/Verify-distribution-uniformity-Naive
deleted file mode 120000
index bc6d548e1b..0000000000
--- a/Lang/EasyLang/Verify-distribution-uniformity-Naive
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Verify-distribution-uniformity-Naive/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Vigen-re-cipher-Cryptanalysis b/Lang/EasyLang/Vigen-re-cipher-Cryptanalysis
deleted file mode 120000
index 019adf3986..0000000000
--- a/Lang/EasyLang/Vigen-re-cipher-Cryptanalysis
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Vigen-re-cipher-Cryptanalysis/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Vogels-approximation-method b/Lang/EasyLang/Vogels-approximation-method
deleted file mode 120000
index 576b7c1373..0000000000
--- a/Lang/EasyLang/Vogels-approximation-method
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Vogels-approximation-method/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/War-card-game b/Lang/EasyLang/War-card-game
deleted file mode 120000
index 4889819208..0000000000
--- a/Lang/EasyLang/War-card-game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/War-card-game/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Wasteful-equidigital-and-frugal-numbers b/Lang/EasyLang/Wasteful-equidigital-and-frugal-numbers
deleted file mode 120000
index 2c61d301f5..0000000000
--- a/Lang/EasyLang/Wasteful-equidigital-and-frugal-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Wasteful-equidigital-and-frugal-numbers/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Weird-numbers b/Lang/EasyLang/Weird-numbers
deleted file mode 120000
index 503b16eabc..0000000000
--- a/Lang/EasyLang/Weird-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Weird-numbers/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Word-ladder b/Lang/EasyLang/Word-ladder
deleted file mode 120000
index c40a883a5f..0000000000
--- a/Lang/EasyLang/Word-ladder
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Word-ladder/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Word-wheel b/Lang/EasyLang/Word-wheel
deleted file mode 120000
index cc8df0aac8..0000000000
--- a/Lang/EasyLang/Word-wheel
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Word-wheel/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/World-Cup-group-stage b/Lang/EasyLang/World-Cup-group-stage
deleted file mode 120000
index 903f2de54b..0000000000
--- a/Lang/EasyLang/World-Cup-group-stage
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/World-Cup-group-stage/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Xiaolin-Wus-line-algorithm b/Lang/EasyLang/Xiaolin-Wus-line-algorithm
deleted file mode 120000
index ece28f1e59..0000000000
--- a/Lang/EasyLang/Xiaolin-Wus-line-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Xiaolin-Wus-line-algorithm/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Zhang-Suen-thinning-algorithm b/Lang/EasyLang/Zhang-Suen-thinning-algorithm
deleted file mode 120000
index 06bef59d73..0000000000
--- a/Lang/EasyLang/Zhang-Suen-thinning-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Zhang-Suen-thinning-algorithm/EasyLang
\ No newline at end of file
diff --git a/Lang/EasyLang/Zig-zag-matrix b/Lang/EasyLang/Zig-zag-matrix
deleted file mode 120000
index 59c91477d5..0000000000
--- a/Lang/EasyLang/Zig-zag-matrix
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Zig-zag-matrix/EasyLang
\ No newline at end of file
diff --git a/Lang/EchoLisp/Miller-Rabin-primality-test b/Lang/EchoLisp/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..a1456f561f
--- /dev/null
+++ b/Lang/EchoLisp/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/EchoLisp
\ No newline at end of file
diff --git a/Lang/Ecstasy/00-LANG.txt b/Lang/Ecstasy/00-LANG.txt
index 9c977a310d..7358e7f1ea 100644
--- a/Lang/Ecstasy/00-LANG.txt
+++ b/Lang/Ecstasy/00-LANG.txt
@@ -25,7 +25,4 @@ The primary benefits of Ecstasy are:
* A security model designed for the serverless cloud, using lightweight software containers and dependency injection (IOC/DI)
* A reified generic type system with support for unions, intersection, and difference types, first-class tuples and functions, type inference, and type-safe mixins
* Built-in concurrency support, with first-class support for object immutability, and the elimination of shared-mutable data
-* All of the modern capabilities that developers have grown to depend on, such as: [[garbage collection|Automatic memory management]], an integrated module system, first-class lambdas and functions, partial binding and currying, cross-platform portability, and an open source development model
-
-==TODO==
-* [[Tasks not implemented in Ecstasy]]
\ No newline at end of file
+* All of the modern capabilities that developers have grown to depend on, such as: [[garbage collection|Automatic memory management]], an integrated module system, first-class lambdas and functions, partial binding and currying, cross-platform portability, and an open source development model
\ No newline at end of file
diff --git a/Lang/Ecstasy/100-prisoners b/Lang/Ecstasy/100-prisoners
deleted file mode 120000
index e9fb2d2f70..0000000000
--- a/Lang/Ecstasy/100-prisoners
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/100-prisoners/Ecstasy
\ No newline at end of file
diff --git a/Lang/Ecstasy/Assertions b/Lang/Ecstasy/Assertions
deleted file mode 120000
index 0802d10c0c..0000000000
--- a/Lang/Ecstasy/Assertions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Assertions/Ecstasy
\ No newline at end of file
diff --git a/Lang/Ecstasy/Pointers-and-references b/Lang/Ecstasy/Pointers-and-references
deleted file mode 120000
index 9b85919b2d..0000000000
--- a/Lang/Ecstasy/Pointers-and-references
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pointers-and-references/Ecstasy
\ No newline at end of file
diff --git a/Lang/Ecstasy/Program-name b/Lang/Ecstasy/Program-name
deleted file mode 120000
index 6411623f47..0000000000
--- a/Lang/Ecstasy/Program-name
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Program-name/Ecstasy
\ No newline at end of file
diff --git a/Lang/Ecstasy/Reflection-List-methods b/Lang/Ecstasy/Reflection-List-methods
deleted file mode 120000
index f4010fce77..0000000000
--- a/Lang/Ecstasy/Reflection-List-methods
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Reflection-List-methods/Ecstasy
\ No newline at end of file
diff --git a/Lang/Ecstasy/Reflection-List-properties b/Lang/Ecstasy/Reflection-List-properties
deleted file mode 120000
index 40ec86fd95..0000000000
--- a/Lang/Ecstasy/Reflection-List-properties
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Reflection-List-properties/Ecstasy
\ No newline at end of file
diff --git a/Lang/Ecstasy/Search-a-list b/Lang/Ecstasy/Search-a-list
deleted file mode 120000
index f6044e825c..0000000000
--- a/Lang/Ecstasy/Search-a-list
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Search-a-list/Ecstasy
\ No newline at end of file
diff --git a/Lang/Ecstasy/Send-an-unknown-method-call b/Lang/Ecstasy/Send-an-unknown-method-call
deleted file mode 120000
index 5d1a4cbed5..0000000000
--- a/Lang/Ecstasy/Send-an-unknown-method-call
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Send-an-unknown-method-call/Ecstasy
\ No newline at end of file
diff --git a/Lang/Ecstasy/Singleton b/Lang/Ecstasy/Singleton
deleted file mode 120000
index 8c9a0eb1b2..0000000000
--- a/Lang/Ecstasy/Singleton
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Singleton/Ecstasy
\ No newline at end of file
diff --git a/Lang/Ecstasy/String-case b/Lang/Ecstasy/String-case
deleted file mode 120000
index 75c8cc65c2..0000000000
--- a/Lang/Ecstasy/String-case
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-case/Ecstasy
\ No newline at end of file
diff --git a/Lang/Ecstasy/String-comparison b/Lang/Ecstasy/String-comparison
deleted file mode 120000
index 2a690e7c01..0000000000
--- a/Lang/Ecstasy/String-comparison
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-comparison/Ecstasy
\ No newline at end of file
diff --git a/Lang/Ecstasy/String-concatenation b/Lang/Ecstasy/String-concatenation
deleted file mode 120000
index a8fc37bb41..0000000000
--- a/Lang/Ecstasy/String-concatenation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-concatenation/Ecstasy
\ No newline at end of file
diff --git a/Lang/Ecstasy/String-length b/Lang/Ecstasy/String-length
deleted file mode 120000
index e3f6d6a12a..0000000000
--- a/Lang/Ecstasy/String-length
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-length/Ecstasy
\ No newline at end of file
diff --git a/Lang/Ecstasy/Substring b/Lang/Ecstasy/Substring
deleted file mode 120000
index 59160f9d22..0000000000
--- a/Lang/Ecstasy/Substring
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Substring/Ecstasy
\ No newline at end of file
diff --git a/Lang/Ecstasy/Substring-Top-and-tail b/Lang/Ecstasy/Substring-Top-and-tail
deleted file mode 120000
index cf035aa347..0000000000
--- a/Lang/Ecstasy/Substring-Top-and-tail
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Substring-Top-and-tail/Ecstasy
\ No newline at end of file
diff --git a/Lang/Ecstasy/System-time b/Lang/Ecstasy/System-time
deleted file mode 120000
index 4b0a593cce..0000000000
--- a/Lang/Ecstasy/System-time
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/System-time/Ecstasy
\ No newline at end of file
diff --git a/Lang/Ed/00-LANG.txt b/Lang/Ed/00-LANG.txt
deleted file mode 100644
index 0ffa56bf3c..0000000000
--- a/Lang/Ed/00-LANG.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-{{stub}}
-{{language|Ed}}
-This is the command language used by [[wp:ed_(software)]],
-the line oriented text editor, not to be confused with [[Sed]], the stream editor.
-
-Implementations are [[GNU Ed]], [[Plan 9 Ed]], BSD ed, and original UNIX ed.
-Ed is also a precursor to a whole family of other text editors and command languages.
-Including [[Sed]], ex, vi, vim, sam, and others.
-
-Ed scripts are usually ran as (on the example of [[GNU Ed]])
-
-cat script.ed | ed -lEGs file.in
-
-
-Or, more portably, with Basic Regular Expressions on BSD, Mac, and [[GNU Ed]].
-
-cat script.ed | ed -s file.in
-
-
-There's a convention of starting every ed script with capital H on a line of its own, to toggle more verbose error messages on. And optionally end the script with capital Q to force-quit without saving the changes to file.
-
-A good reference for Ed is it's info page, which can be found online [https://linux.die.net/man/1/ed here].
-
-Also see [[Tasks not implemented in Ed]]
-
-[[Category:Editor]]
-[[Category:Utility]]
\ No newline at end of file
diff --git a/Lang/Ed/00-META.yaml b/Lang/Ed/00-META.yaml
deleted file mode 100644
index 8c668497f3..0000000000
--- a/Lang/Ed/00-META.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-from: http://rosettacode.org/wiki/Category:Ed
diff --git a/Lang/Ed/A+B b/Lang/Ed/A+B
deleted file mode 120000
index 00ee271a45..0000000000
--- a/Lang/Ed/A+B
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/A+B/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Address-of-a-variable b/Lang/Ed/Address-of-a-variable
deleted file mode 120000
index b7216d9c2d..0000000000
--- a/Lang/Ed/Address-of-a-variable
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Address-of-a-variable/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Append-a-record-to-the-end-of-a-text-file b/Lang/Ed/Append-a-record-to-the-end-of-a-text-file
deleted file mode 120000
index c20f4ffb66..0000000000
--- a/Lang/Ed/Append-a-record-to-the-end-of-a-text-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Append-a-record-to-the-end-of-a-text-file/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Balanced-brackets b/Lang/Ed/Balanced-brackets
deleted file mode 120000
index 12f98da078..0000000000
--- a/Lang/Ed/Balanced-brackets
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Balanced-brackets/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Base64-decode-data b/Lang/Ed/Base64-decode-data
deleted file mode 120000
index d08c0a29a4..0000000000
--- a/Lang/Ed/Base64-decode-data
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Base64-decode-data/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Binary-digits b/Lang/Ed/Binary-digits
deleted file mode 120000
index 3593438a83..0000000000
--- a/Lang/Ed/Binary-digits
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Binary-digits/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Brace-expansion b/Lang/Ed/Brace-expansion
deleted file mode 120000
index 57b88b6984..0000000000
--- a/Lang/Ed/Brace-expansion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Brace-expansion/Ed
\ No newline at end of file
diff --git a/Lang/Ed/CSV-to-HTML-translation b/Lang/Ed/CSV-to-HTML-translation
deleted file mode 120000
index 982d76328a..0000000000
--- a/Lang/Ed/CSV-to-HTML-translation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/CSV-to-HTML-translation/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Camel-case-and-snake-case b/Lang/Ed/Camel-case-and-snake-case
deleted file mode 120000
index 34e48e10ce..0000000000
--- a/Lang/Ed/Camel-case-and-snake-case
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Camel-case-and-snake-case/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Check-input-device-is-a-terminal b/Lang/Ed/Check-input-device-is-a-terminal
deleted file mode 120000
index aaa70cb2b9..0000000000
--- a/Lang/Ed/Check-input-device-is-a-terminal
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Check-input-device-is-a-terminal/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Check-output-device-is-a-terminal b/Lang/Ed/Check-output-device-is-a-terminal
deleted file mode 120000
index 7304043875..0000000000
--- a/Lang/Ed/Check-output-device-is-a-terminal
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Check-output-device-is-a-terminal/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Chinese-zodiac b/Lang/Ed/Chinese-zodiac
deleted file mode 120000
index 3a56ea0052..0000000000
--- a/Lang/Ed/Chinese-zodiac
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Chinese-zodiac/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Cistercian-numerals b/Lang/Ed/Cistercian-numerals
deleted file mode 120000
index f8c9ddde28..0000000000
--- a/Lang/Ed/Cistercian-numerals
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cistercian-numerals/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Comma-quibbling b/Lang/Ed/Comma-quibbling
deleted file mode 120000
index d9dc3b3989..0000000000
--- a/Lang/Ed/Comma-quibbling
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Comma-quibbling/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Comments b/Lang/Ed/Comments
deleted file mode 120000
index 08d536496b..0000000000
--- a/Lang/Ed/Comments
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Comments/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Conditional-structures b/Lang/Ed/Conditional-structures
deleted file mode 120000
index 46db5ede62..0000000000
--- a/Lang/Ed/Conditional-structures
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Conditional-structures/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Copy-a-string b/Lang/Ed/Copy-a-string
deleted file mode 120000
index 55ec74ae6a..0000000000
--- a/Lang/Ed/Copy-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Copy-a-string/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Count-occurrences-of-a-substring b/Lang/Ed/Count-occurrences-of-a-substring
deleted file mode 120000
index 1c698d3069..0000000000
--- a/Lang/Ed/Count-occurrences-of-a-substring
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Count-occurrences-of-a-substring/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Create-a-file b/Lang/Ed/Create-a-file
deleted file mode 120000
index 11ca37c1ec..0000000000
--- a/Lang/Ed/Create-a-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Create-a-file/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Date-format b/Lang/Ed/Date-format
deleted file mode 120000
index 972dcea98a..0000000000
--- a/Lang/Ed/Date-format
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Date-format/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Delete-a-file b/Lang/Ed/Delete-a-file
deleted file mode 120000
index f208022c59..0000000000
--- a/Lang/Ed/Delete-a-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Delete-a-file/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Determine-if-a-string-has-all-the-same-characters b/Lang/Ed/Determine-if-a-string-has-all-the-same-characters
deleted file mode 120000
index 448ed7ccc8..0000000000
--- a/Lang/Ed/Determine-if-a-string-has-all-the-same-characters
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-has-all-the-same-characters/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Determine-if-a-string-has-all-unique-characters b/Lang/Ed/Determine-if-a-string-has-all-unique-characters
deleted file mode 120000
index 3ce9aedae3..0000000000
--- a/Lang/Ed/Determine-if-a-string-has-all-unique-characters
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-has-all-unique-characters/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Determine-if-a-string-is-collapsible b/Lang/Ed/Determine-if-a-string-is-collapsible
deleted file mode 120000
index 8b2921d3eb..0000000000
--- a/Lang/Ed/Determine-if-a-string-is-collapsible
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-is-collapsible/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Determine-if-a-string-is-numeric b/Lang/Ed/Determine-if-a-string-is-numeric
deleted file mode 120000
index 05c951f131..0000000000
--- a/Lang/Ed/Determine-if-a-string-is-numeric
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-is-numeric/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Empty-string b/Lang/Ed/Empty-string
deleted file mode 120000
index d609b5a73a..0000000000
--- a/Lang/Ed/Empty-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Empty-string/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Ethiopian-multiplication b/Lang/Ed/Ethiopian-multiplication
deleted file mode 120000
index a218310c2e..0000000000
--- a/Lang/Ed/Ethiopian-multiplication
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ethiopian-multiplication/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Even-or-odd b/Lang/Ed/Even-or-odd
deleted file mode 120000
index 216cea134c..0000000000
--- a/Lang/Ed/Even-or-odd
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Even-or-odd/Ed
\ No newline at end of file
diff --git a/Lang/Ed/File-input-output b/Lang/Ed/File-input-output
deleted file mode 120000
index ab2356c090..0000000000
--- a/Lang/Ed/File-input-output
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/File-input-output/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Filter b/Lang/Ed/Filter
deleted file mode 120000
index 0e10013135..0000000000
--- a/Lang/Ed/Filter
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Filter/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Find-common-directory-path b/Lang/Ed/Find-common-directory-path
deleted file mode 120000
index 31b50e9c25..0000000000
--- a/Lang/Ed/Find-common-directory-path
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Find-common-directory-path/Ed
\ No newline at end of file
diff --git a/Lang/Ed/FizzBuzz b/Lang/Ed/FizzBuzz
deleted file mode 120000
index 5f01963d2b..0000000000
--- a/Lang/Ed/FizzBuzz
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/FizzBuzz/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Hello-world-Text b/Lang/Ed/Hello-world-Text
deleted file mode 120000
index 09329e9578..0000000000
--- a/Lang/Ed/Hello-world-Text
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Text/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Here-document b/Lang/Ed/Here-document
deleted file mode 120000
index 1aca222a29..0000000000
--- a/Lang/Ed/Here-document
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Here-document/Ed
\ No newline at end of file
diff --git a/Lang/Ed/I-before-E-except-after-C b/Lang/Ed/I-before-E-except-after-C
deleted file mode 120000
index 017b410bd0..0000000000
--- a/Lang/Ed/I-before-E-except-after-C
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/I-before-E-except-after-C/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Increment-a-numerical-string b/Lang/Ed/Increment-a-numerical-string
deleted file mode 120000
index e55a87b09f..0000000000
--- a/Lang/Ed/Increment-a-numerical-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Increment-a-numerical-string/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Jewels-and-stones b/Lang/Ed/Jewels-and-stones
deleted file mode 120000
index aa6e0865ea..0000000000
--- a/Lang/Ed/Jewels-and-stones
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jewels-and-stones/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Longest-common-subsequence b/Lang/Ed/Longest-common-subsequence
deleted file mode 120000
index d0e8efbf1e..0000000000
--- a/Lang/Ed/Longest-common-subsequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Longest-common-subsequence/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Loops-For b/Lang/Ed/Loops-For
deleted file mode 120000
index 3de59c57c2..0000000000
--- a/Lang/Ed/Loops-For
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-For/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Loops-Foreach b/Lang/Ed/Loops-Foreach
deleted file mode 120000
index c06f3655df..0000000000
--- a/Lang/Ed/Loops-Foreach
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Foreach/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Morse-code b/Lang/Ed/Morse-code
deleted file mode 120000
index e5384e5776..0000000000
--- a/Lang/Ed/Morse-code
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Morse-code/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Nth b/Lang/Ed/Nth
deleted file mode 120000
index d2f15b3c88..0000000000
--- a/Lang/Ed/Nth
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nth/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Palindrome-detection b/Lang/Ed/Palindrome-detection
deleted file mode 120000
index 1bec256a92..0000000000
--- a/Lang/Ed/Palindrome-detection
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Palindrome-detection/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Phrase-reversals b/Lang/Ed/Phrase-reversals
deleted file mode 120000
index 0ee3f41dfa..0000000000
--- a/Lang/Ed/Phrase-reversals
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Phrase-reversals/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Quine b/Lang/Ed/Quine
deleted file mode 120000
index 3690e73126..0000000000
--- a/Lang/Ed/Quine
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Quine/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Random-number-generator-device- b/Lang/Ed/Random-number-generator-device-
deleted file mode 120000
index ebfa530984..0000000000
--- a/Lang/Ed/Random-number-generator-device-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Random-number-generator-device-/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Read-a-specific-line-from-a-file b/Lang/Ed/Read-a-specific-line-from-a-file
deleted file mode 120000
index 68b3526a94..0000000000
--- a/Lang/Ed/Read-a-specific-line-from-a-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Read-a-specific-line-from-a-file/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Regular-expressions b/Lang/Ed/Regular-expressions
deleted file mode 120000
index 03fa790d32..0000000000
--- a/Lang/Ed/Regular-expressions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Regular-expressions/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Rep-string b/Lang/Ed/Rep-string
deleted file mode 120000
index 1cabc7547c..0000000000
--- a/Lang/Ed/Rep-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Rep-string/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Repeat-a-string b/Lang/Ed/Repeat-a-string
deleted file mode 120000
index 88553bc853..0000000000
--- a/Lang/Ed/Repeat-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Repeat-a-string/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Reverse-a-string b/Lang/Ed/Reverse-a-string
deleted file mode 120000
index 6104b59dd9..0000000000
--- a/Lang/Ed/Reverse-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Reverse-a-string/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Reverse-words-in-a-string b/Lang/Ed/Reverse-words-in-a-string
deleted file mode 120000
index d59e80e1fb..0000000000
--- a/Lang/Ed/Reverse-words-in-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Reverse-words-in-a-string/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Roman-numerals-Decode b/Lang/Ed/Roman-numerals-Decode
deleted file mode 120000
index 81a8608ea4..0000000000
--- a/Lang/Ed/Roman-numerals-Decode
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Roman-numerals-Decode/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Roman-numerals-Encode b/Lang/Ed/Roman-numerals-Encode
deleted file mode 120000
index 686206e904..0000000000
--- a/Lang/Ed/Roman-numerals-Encode
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Roman-numerals-Encode/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Rot-13 b/Lang/Ed/Rot-13
deleted file mode 120000
index 731a496ae9..0000000000
--- a/Lang/Ed/Rot-13
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Rot-13/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Run-length-encoding b/Lang/Ed/Run-length-encoding
deleted file mode 120000
index 69e6b1b531..0000000000
--- a/Lang/Ed/Run-length-encoding
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Run-length-encoding/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Selectively-replace-multiple-instances-of-a-character-within-a-string b/Lang/Ed/Selectively-replace-multiple-instances-of-a-character-within-a-string
deleted file mode 120000
index e414614b56..0000000000
--- a/Lang/Ed/Selectively-replace-multiple-instances-of-a-character-within-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Selectively-replace-multiple-instances-of-a-character-within-a-string/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Semordnilap b/Lang/Ed/Semordnilap
deleted file mode 120000
index daf7a5ecb1..0000000000
--- a/Lang/Ed/Semordnilap
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Semordnilap/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Sort-an-integer-array b/Lang/Ed/Sort-an-integer-array
deleted file mode 120000
index b1a2a66ffa..0000000000
--- a/Lang/Ed/Sort-an-integer-array
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-an-integer-array/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Split-a-character-string-based-on-change-of-character b/Lang/Ed/Split-a-character-string-based-on-change-of-character
deleted file mode 120000
index 0033ba43dd..0000000000
--- a/Lang/Ed/Split-a-character-string-based-on-change-of-character
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Split-a-character-string-based-on-change-of-character/Ed
\ No newline at end of file
diff --git a/Lang/Ed/String-case b/Lang/Ed/String-case
deleted file mode 120000
index daab926f48..0000000000
--- a/Lang/Ed/String-case
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-case/Ed
\ No newline at end of file
diff --git a/Lang/Ed/String-comparison b/Lang/Ed/String-comparison
deleted file mode 120000
index d24860c04c..0000000000
--- a/Lang/Ed/String-comparison
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-comparison/Ed
\ No newline at end of file
diff --git a/Lang/Ed/String-concatenation b/Lang/Ed/String-concatenation
deleted file mode 120000
index f24bfde76e..0000000000
--- a/Lang/Ed/String-concatenation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-concatenation/Ed
\ No newline at end of file
diff --git a/Lang/Ed/String-interpolation-included- b/Lang/Ed/String-interpolation-included-
deleted file mode 120000
index 6b90881c7e..0000000000
--- a/Lang/Ed/String-interpolation-included-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-interpolation-included-/Ed
\ No newline at end of file
diff --git a/Lang/Ed/String-length b/Lang/Ed/String-length
deleted file mode 120000
index de41c29ef2..0000000000
--- a/Lang/Ed/String-length
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-length/Ed
\ No newline at end of file
diff --git a/Lang/Ed/String-matching b/Lang/Ed/String-matching
deleted file mode 120000
index 2895138190..0000000000
--- a/Lang/Ed/String-matching
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-matching/Ed
\ No newline at end of file
diff --git a/Lang/Ed/String-prepend b/Lang/Ed/String-prepend
deleted file mode 120000
index ce1d9a46f5..0000000000
--- a/Lang/Ed/String-prepend
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-prepend/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Strip-a-set-of-characters-from-a-string b/Lang/Ed/Strip-a-set-of-characters-from-a-string
deleted file mode 120000
index 6a57ca5210..0000000000
--- a/Lang/Ed/Strip-a-set-of-characters-from-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strip-a-set-of-characters-from-a-string/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Strip-block-comments b/Lang/Ed/Strip-block-comments
deleted file mode 120000
index 913cdfb609..0000000000
--- a/Lang/Ed/Strip-block-comments
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strip-block-comments/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Strip-comments-from-a-string b/Lang/Ed/Strip-comments-from-a-string
deleted file mode 120000
index f7c3c178f3..0000000000
--- a/Lang/Ed/Strip-comments-from-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strip-comments-from-a-string/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Strip-control-codes-and-extended-characters-from-a-string b/Lang/Ed/Strip-control-codes-and-extended-characters-from-a-string
deleted file mode 120000
index 8cffb60723..0000000000
--- a/Lang/Ed/Strip-control-codes-and-extended-characters-from-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strip-control-codes-and-extended-characters-from-a-string/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Strip-whitespace-from-a-string-Top-and-tail b/Lang/Ed/Strip-whitespace-from-a-string-Top-and-tail
deleted file mode 120000
index 87421d1e38..0000000000
--- a/Lang/Ed/Strip-whitespace-from-a-string-Top-and-tail
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strip-whitespace-from-a-string-Top-and-tail/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Substring b/Lang/Ed/Substring
deleted file mode 120000
index 373a20b8f4..0000000000
--- a/Lang/Ed/Substring
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Substring/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Substring-Top-and-tail b/Lang/Ed/Substring-Top-and-tail
deleted file mode 120000
index bff998aeb0..0000000000
--- a/Lang/Ed/Substring-Top-and-tail
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Substring-Top-and-tail/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Tokenize-a-string b/Lang/Ed/Tokenize-a-string
deleted file mode 120000
index d8f4499b3c..0000000000
--- a/Lang/Ed/Tokenize-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tokenize-a-string/Ed
\ No newline at end of file
diff --git a/Lang/Ed/Word-wrap b/Lang/Ed/Word-wrap
deleted file mode 120000
index b86e0349c6..0000000000
--- a/Lang/Ed/Word-wrap
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Word-wrap/Ed
\ No newline at end of file
diff --git a/Lang/Eero/Quaternion-type b/Lang/Eero/Quaternion-type
new file mode 120000
index 0000000000..91a82e433f
--- /dev/null
+++ b/Lang/Eero/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/Eero
\ No newline at end of file
diff --git a/Lang/Eiffel/Loops-For b/Lang/Eiffel/Loops-For
deleted file mode 120000
index 30f93ee824..0000000000
--- a/Lang/Eiffel/Loops-For
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-For/Eiffel
\ No newline at end of file
diff --git a/Lang/Eiffel/Loops-Infinite b/Lang/Eiffel/Loops-Infinite
deleted file mode 120000
index 1016f5af23..0000000000
--- a/Lang/Eiffel/Loops-Infinite
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Infinite/Eiffel
\ No newline at end of file
diff --git a/Lang/Elena/00-LANG.txt b/Lang/Elena/00-LANG.txt
index c3a21bf2d4..671257e3ee 100644
--- a/Lang/Elena/00-LANG.txt
+++ b/Lang/Elena/00-LANG.txt
@@ -1,5 +1,5 @@
{{language|Elena
-|site=https://elena-lang.github.io/
+|site=http://elenalang.sourceforge.net
|exec=bytecode
|strength=strong
|safety=safe
diff --git a/Lang/Elena/Comma-quibbling b/Lang/Elena/Comma-quibbling
deleted file mode 120000
index f92aff5654..0000000000
--- a/Lang/Elena/Comma-quibbling
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Comma-quibbling/Elena
\ No newline at end of file
diff --git a/Lang/Elena/Concurrent-computing b/Lang/Elena/Concurrent-computing
deleted file mode 120000
index d22278e519..0000000000
--- a/Lang/Elena/Concurrent-computing
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Concurrent-computing/Elena
\ No newline at end of file
diff --git a/Lang/Elena/HTTP b/Lang/Elena/HTTP
deleted file mode 120000
index c94b6f99cd..0000000000
--- a/Lang/Elena/HTTP
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/HTTP/Elena
\ No newline at end of file
diff --git a/Lang/Elena/HTTPS b/Lang/Elena/HTTPS
deleted file mode 120000
index 879dfcb045..0000000000
--- a/Lang/Elena/HTTPS
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/HTTPS/Elena
\ No newline at end of file
diff --git a/Lang/Elena/Quaternion-type b/Lang/Elena/Quaternion-type
new file mode 120000
index 0000000000..1637f784c6
--- /dev/null
+++ b/Lang/Elena/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/Elena
\ No newline at end of file
diff --git a/Lang/Elixir/Determinant-and-permanent b/Lang/Elixir/Determinant-and-permanent
deleted file mode 120000
index 91e99770a2..0000000000
--- a/Lang/Elixir/Determinant-and-permanent
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determinant-and-permanent/Elixir
\ No newline at end of file
diff --git a/Lang/Elixir/Empty-program b/Lang/Elixir/Empty-program
new file mode 120000
index 0000000000..e1c7956a55
--- /dev/null
+++ b/Lang/Elixir/Empty-program
@@ -0,0 +1 @@
+../../Task/Empty-program/Elixir
\ No newline at end of file
diff --git a/Lang/Elixir/K-d-tree b/Lang/Elixir/K-d-tree
deleted file mode 120000
index 4a7008abc8..0000000000
--- a/Lang/Elixir/K-d-tree
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/K-d-tree/Elixir
\ No newline at end of file
diff --git a/Lang/Elixir/Miller-Rabin-primality-test b/Lang/Elixir/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..911bb7e6dd
--- /dev/null
+++ b/Lang/Elixir/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/Elixir
\ No newline at end of file
diff --git a/Lang/Elixir/Parallel-brute-force b/Lang/Elixir/Parallel-brute-force
deleted file mode 120000
index 154ccc9bb9..0000000000
--- a/Lang/Elixir/Parallel-brute-force
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Parallel-brute-force/Elixir
\ No newline at end of file
diff --git a/Lang/Elixir/Parse-an-IP-Address b/Lang/Elixir/Parse-an-IP-Address
deleted file mode 120000
index bad8e9a86e..0000000000
--- a/Lang/Elixir/Parse-an-IP-Address
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Parse-an-IP-Address/Elixir
\ No newline at end of file
diff --git a/Lang/Elixir/Sorting-Algorithms-Circle-Sort b/Lang/Elixir/Sorting-Algorithms-Circle-Sort
new file mode 120000
index 0000000000..97335bafb5
--- /dev/null
+++ b/Lang/Elixir/Sorting-Algorithms-Circle-Sort
@@ -0,0 +1 @@
+../../Task/Sorting-Algorithms-Circle-Sort/Elixir
\ No newline at end of file
diff --git a/Lang/Elixir/Strassens-algorithm b/Lang/Elixir/Strassens-algorithm
deleted file mode 120000
index b73f87ff60..0000000000
--- a/Lang/Elixir/Strassens-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strassens-algorithm/Elixir
\ No newline at end of file
diff --git a/Lang/Elm/Caesar-cipher b/Lang/Elm/Caesar-cipher
deleted file mode 120000
index e2f4604523..0000000000
--- a/Lang/Elm/Caesar-cipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Caesar-cipher/Elm
\ No newline at end of file
diff --git a/Lang/Emacs-Lisp/Abbreviations-automatic b/Lang/Emacs-Lisp/Abbreviations-automatic
deleted file mode 120000
index 917fbde092..0000000000
--- a/Lang/Emacs-Lisp/Abbreviations-automatic
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abbreviations-automatic/Emacs-Lisp
\ No newline at end of file
diff --git a/Lang/Emacs-Lisp/Align-columns b/Lang/Emacs-Lisp/Align-columns
deleted file mode 120000
index 9be61160c6..0000000000
--- a/Lang/Emacs-Lisp/Align-columns
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Align-columns/Emacs-Lisp
\ No newline at end of file
diff --git a/Lang/Emacs-Lisp/Anagrams b/Lang/Emacs-Lisp/Anagrams
deleted file mode 120000
index 0bf987f884..0000000000
--- a/Lang/Emacs-Lisp/Anagrams
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Anagrams/Emacs-Lisp
\ No newline at end of file
diff --git a/Lang/Emacs-Lisp/Bulls-and-cows b/Lang/Emacs-Lisp/Bulls-and-cows
deleted file mode 120000
index b0602ecaf2..0000000000
--- a/Lang/Emacs-Lisp/Bulls-and-cows
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bulls-and-cows/Emacs-Lisp
\ No newline at end of file
diff --git a/Lang/Emacs-Lisp/Color-wheel b/Lang/Emacs-Lisp/Color-wheel
deleted file mode 120000
index 90b9cec116..0000000000
--- a/Lang/Emacs-Lisp/Color-wheel
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Color-wheel/Emacs-Lisp
\ No newline at end of file
diff --git a/Lang/Emacs-Lisp/Compare-length-of-two-strings b/Lang/Emacs-Lisp/Compare-length-of-two-strings
deleted file mode 120000
index 2aa87a97f8..0000000000
--- a/Lang/Emacs-Lisp/Compare-length-of-two-strings
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compare-length-of-two-strings/Emacs-Lisp
\ No newline at end of file
diff --git a/Lang/Emacs-Lisp/Date-manipulation b/Lang/Emacs-Lisp/Date-manipulation
deleted file mode 120000
index d88e6a9576..0000000000
--- a/Lang/Emacs-Lisp/Date-manipulation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Date-manipulation/Emacs-Lisp
\ No newline at end of file
diff --git a/Lang/Emacs-Lisp/Determine-if-a-string-is-numeric b/Lang/Emacs-Lisp/Determine-if-a-string-is-numeric
deleted file mode 120000
index 2314291eaa..0000000000
--- a/Lang/Emacs-Lisp/Determine-if-a-string-is-numeric
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-is-numeric/Emacs-Lisp
\ No newline at end of file
diff --git a/Lang/Emacs-Lisp/Determine-sentence-type b/Lang/Emacs-Lisp/Determine-sentence-type
deleted file mode 120000
index 633b068253..0000000000
--- a/Lang/Emacs-Lisp/Determine-sentence-type
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-sentence-type/Emacs-Lisp
\ No newline at end of file
diff --git a/Lang/Emacs-Lisp/Find-palindromic-numbers-in-both-binary-and-ternary-bases b/Lang/Emacs-Lisp/Find-palindromic-numbers-in-both-binary-and-ternary-bases
deleted file mode 120000
index d1e4e53b61..0000000000
--- a/Lang/Emacs-Lisp/Find-palindromic-numbers-in-both-binary-and-ternary-bases
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Find-palindromic-numbers-in-both-binary-and-ternary-bases/Emacs-Lisp
\ No newline at end of file
diff --git a/Lang/Emacs-Lisp/Generate-random-chess-position b/Lang/Emacs-Lisp/Generate-random-chess-position
deleted file mode 120000
index 7ef4f0bf90..0000000000
--- a/Lang/Emacs-Lisp/Generate-random-chess-position
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Generate-random-chess-position/Emacs-Lisp
\ No newline at end of file
diff --git a/Lang/Emacs-Lisp/Keyboard-input-Flush-the-keyboard-buffer b/Lang/Emacs-Lisp/Keyboard-input-Flush-the-keyboard-buffer
deleted file mode 120000
index db888b4ffd..0000000000
--- a/Lang/Emacs-Lisp/Keyboard-input-Flush-the-keyboard-buffer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Keyboard-input-Flush-the-keyboard-buffer/Emacs-Lisp
\ No newline at end of file
diff --git a/Lang/Emacs-Lisp/Keyboard-input-Keypress-check b/Lang/Emacs-Lisp/Keyboard-input-Keypress-check
deleted file mode 120000
index 1bf55a234e..0000000000
--- a/Lang/Emacs-Lisp/Keyboard-input-Keypress-check
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Keyboard-input-Keypress-check/Emacs-Lisp
\ No newline at end of file
diff --git a/Lang/Emacs-Lisp/Keyboard-input-Obtain-a-Y-or-N-response b/Lang/Emacs-Lisp/Keyboard-input-Obtain-a-Y-or-N-response
deleted file mode 120000
index d6205cc54b..0000000000
--- a/Lang/Emacs-Lisp/Keyboard-input-Obtain-a-Y-or-N-response
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Keyboard-input-Obtain-a-Y-or-N-response/Emacs-Lisp
\ No newline at end of file
diff --git a/Lang/Emacs-Lisp/Ordered-words b/Lang/Emacs-Lisp/Ordered-words
deleted file mode 120000
index 444b596fcd..0000000000
--- a/Lang/Emacs-Lisp/Ordered-words
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ordered-words/Emacs-Lisp
\ No newline at end of file
diff --git a/Lang/Emacs-Lisp/Search-a-list b/Lang/Emacs-Lisp/Search-a-list
deleted file mode 120000
index 6aef3bcdb0..0000000000
--- a/Lang/Emacs-Lisp/Search-a-list
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Search-a-list/Emacs-Lisp
\ No newline at end of file
diff --git a/Lang/Emacs-Lisp/Snake b/Lang/Emacs-Lisp/Snake
deleted file mode 120000
index b334d7a373..0000000000
--- a/Lang/Emacs-Lisp/Snake
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Snake/Emacs-Lisp
\ No newline at end of file
diff --git a/Lang/Emacs-Lisp/Soundex b/Lang/Emacs-Lisp/Soundex
deleted file mode 120000
index d8aeb9b48e..0000000000
--- a/Lang/Emacs-Lisp/Soundex
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Soundex/Emacs-Lisp
\ No newline at end of file
diff --git a/Lang/Emacs-Lisp/Split-a-character-string-based-on-change-of-character b/Lang/Emacs-Lisp/Split-a-character-string-based-on-change-of-character
deleted file mode 120000
index 7bff70bc55..0000000000
--- a/Lang/Emacs-Lisp/Split-a-character-string-based-on-change-of-character
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Split-a-character-string-based-on-change-of-character/Emacs-Lisp
\ No newline at end of file
diff --git a/Lang/Emacs-Lisp/Strip-comments-from-a-string b/Lang/Emacs-Lisp/Strip-comments-from-a-string
deleted file mode 120000
index e8fcd5a3c3..0000000000
--- a/Lang/Emacs-Lisp/Strip-comments-from-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strip-comments-from-a-string/Emacs-Lisp
\ No newline at end of file
diff --git a/Lang/Emacs-Lisp/Substitution-cipher b/Lang/Emacs-Lisp/Substitution-cipher
deleted file mode 120000
index 93f7ee4d63..0000000000
--- a/Lang/Emacs-Lisp/Substitution-cipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Substitution-cipher/Emacs-Lisp
\ No newline at end of file
diff --git a/Lang/Emacs-Lisp/Word-frequency b/Lang/Emacs-Lisp/Word-frequency
deleted file mode 120000
index 74fd09e7f4..0000000000
--- a/Lang/Emacs-Lisp/Word-frequency
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Word-frequency/Emacs-Lisp
\ No newline at end of file
diff --git a/Lang/Erlang/Cheryls-birthday b/Lang/Erlang/Cheryls-birthday
deleted file mode 120000
index 2e3c0e28bc..0000000000
--- a/Lang/Erlang/Cheryls-birthday
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cheryls-birthday/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Determinant-and-permanent b/Lang/Erlang/Determinant-and-permanent
deleted file mode 120000
index 1dcba08234..0000000000
--- a/Lang/Erlang/Determinant-and-permanent
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determinant-and-permanent/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Floyd-Warshall-algorithm b/Lang/Erlang/Floyd-Warshall-algorithm
deleted file mode 120000
index ac856e6ffa..0000000000
--- a/Lang/Erlang/Floyd-Warshall-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Floyd-Warshall-algorithm/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Long-multiplication b/Lang/Erlang/Long-multiplication
deleted file mode 120000
index 12ca47c665..0000000000
--- a/Lang/Erlang/Long-multiplication
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Long-multiplication/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Miller-Rabin-primality-test b/Lang/Erlang/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..5bdd377694
--- /dev/null
+++ b/Lang/Erlang/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Parse-an-IP-Address b/Lang/Erlang/Parse-an-IP-Address
deleted file mode 120000
index 3e48d0f0b1..0000000000
--- a/Lang/Erlang/Parse-an-IP-Address
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Parse-an-IP-Address/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Stem-and-leaf-plot b/Lang/Erlang/Stem-and-leaf-plot
deleted file mode 120000
index 1763f740f3..0000000000
--- a/Lang/Erlang/Stem-and-leaf-plot
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Stem-and-leaf-plot/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Strassens-algorithm b/Lang/Erlang/Strassens-algorithm
deleted file mode 120000
index 62150c659e..0000000000
--- a/Lang/Erlang/Strassens-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strassens-algorithm/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Super-d-numbers b/Lang/Erlang/Super-d-numbers
deleted file mode 120000
index de46d8ba65..0000000000
--- a/Lang/Erlang/Super-d-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Super-d-numbers/Erlang
\ No newline at end of file
diff --git a/Lang/Erlang/Tonelli-Shanks-algorithm b/Lang/Erlang/Tonelli-Shanks-algorithm
deleted file mode 120000
index 5c601a781e..0000000000
--- a/Lang/Erlang/Tonelli-Shanks-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tonelli-Shanks-algorithm/Erlang
\ No newline at end of file
diff --git a/Lang/Euphoria/00-LANG.txt b/Lang/Euphoria/00-LANG.txt
index 9dc38ade08..702dca9e88 100644
--- a/Lang/Euphoria/00-LANG.txt
+++ b/Lang/Euphoria/00-LANG.txt
@@ -18,7 +18,4 @@ Euphoria is a powerful yet simple programming language, developed by Robert Crai
==See also==
* [[wp:Euphoria (programming language)|Euphoria on Wikipedia]]
* [http://rapideuphoria.com/ RapidEuphoria site]
-* [http://openeuphoria.org/ openEuphoria site]
-
-==Todo==
-[https://rosettacode.org/wiki/Tasks_not_implemented_in_Euphoria Tasks not implemented in Euphoria]
\ No newline at end of file
+* [http://openeuphoria.org/ openEuphoria site]
\ No newline at end of file
diff --git a/Lang/Euphoria/Calculating-the-value-of-e b/Lang/Euphoria/Calculating-the-value-of-e
deleted file mode 120000
index ae2255b209..0000000000
--- a/Lang/Euphoria/Calculating-the-value-of-e
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Calculating-the-value-of-e/Euphoria
\ No newline at end of file
diff --git a/Lang/Euphoria/Combinations b/Lang/Euphoria/Combinations
deleted file mode 120000
index 10b7f0283e..0000000000
--- a/Lang/Euphoria/Combinations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Combinations/Euphoria
\ No newline at end of file
diff --git a/Lang/Euphoria/Convert-seconds-to-compound-duration b/Lang/Euphoria/Convert-seconds-to-compound-duration
deleted file mode 120000
index 91ba9055cf..0000000000
--- a/Lang/Euphoria/Convert-seconds-to-compound-duration
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Convert-seconds-to-compound-duration/Euphoria
\ No newline at end of file
diff --git a/Lang/Euphoria/Empty-program b/Lang/Euphoria/Empty-program
new file mode 120000
index 0000000000..241cd5711b
--- /dev/null
+++ b/Lang/Euphoria/Empty-program
@@ -0,0 +1 @@
+../../Task/Empty-program/Euphoria
\ No newline at end of file
diff --git a/Lang/Euphoria/File-size-distribution b/Lang/Euphoria/File-size-distribution
deleted file mode 120000
index a10a0eb48b..0000000000
--- a/Lang/Euphoria/File-size-distribution
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/File-size-distribution/Euphoria
\ No newline at end of file
diff --git a/Lang/Euphoria/Nth b/Lang/Euphoria/Nth
deleted file mode 120000
index 6f87edee5c..0000000000
--- a/Lang/Euphoria/Nth
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nth/Euphoria
\ No newline at end of file
diff --git a/Lang/Euphoria/Quaternion-type b/Lang/Euphoria/Quaternion-type
new file mode 120000
index 0000000000..aedb6b51e1
--- /dev/null
+++ b/Lang/Euphoria/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/Euphoria
\ No newline at end of file
diff --git a/Lang/Euphoria/Repeat b/Lang/Euphoria/Repeat
deleted file mode 120000
index 750ad0f53c..0000000000
--- a/Lang/Euphoria/Repeat
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Repeat/Euphoria
\ No newline at end of file
diff --git a/Lang/Excel/Arrays b/Lang/Excel/Arrays
deleted file mode 120000
index bad8c856a9..0000000000
--- a/Lang/Excel/Arrays
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arrays/Excel
\ No newline at end of file
diff --git a/Lang/Excel/Cholesky-decomposition b/Lang/Excel/Cholesky-decomposition
deleted file mode 120000
index 2db67f4a20..0000000000
--- a/Lang/Excel/Cholesky-decomposition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cholesky-decomposition/Excel
\ No newline at end of file
diff --git a/Lang/Excel/Conditional-structures b/Lang/Excel/Conditional-structures
deleted file mode 120000
index f4ffdbd4b9..0000000000
--- a/Lang/Excel/Conditional-structures
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Conditional-structures/Excel
\ No newline at end of file
diff --git a/Lang/Excel/FizzBuzz b/Lang/Excel/FizzBuzz
deleted file mode 120000
index 15df08a856..0000000000
--- a/Lang/Excel/FizzBuzz
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/FizzBuzz/Excel
\ No newline at end of file
diff --git a/Lang/Excel/Function-definition b/Lang/Excel/Function-definition
deleted file mode 120000
index e6ecf64bef..0000000000
--- a/Lang/Excel/Function-definition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Function-definition/Excel
\ No newline at end of file
diff --git a/Lang/Excel/Jacobi-symbol b/Lang/Excel/Jacobi-symbol
deleted file mode 120000
index 85f7061c07..0000000000
--- a/Lang/Excel/Jacobi-symbol
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jacobi-symbol/Excel
\ No newline at end of file
diff --git a/Lang/Excel/Loops-For b/Lang/Excel/Loops-For
deleted file mode 120000
index 876b47b179..0000000000
--- a/Lang/Excel/Loops-For
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-For/Excel
\ No newline at end of file
diff --git a/Lang/Excel/Repeat-a-string b/Lang/Excel/Repeat-a-string
deleted file mode 120000
index 2c684073cb..0000000000
--- a/Lang/Excel/Repeat-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Repeat-a-string/Excel
\ No newline at end of file
diff --git a/Lang/Excel/Reverse-a-string b/Lang/Excel/Reverse-a-string
deleted file mode 120000
index 2a3cf97cfe..0000000000
--- a/Lang/Excel/Reverse-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Reverse-a-string/Excel
\ No newline at end of file
diff --git a/Lang/Excel/Tokenize-a-string b/Lang/Excel/Tokenize-a-string
deleted file mode 120000
index 9d5af3b4b4..0000000000
--- a/Lang/Excel/Tokenize-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tokenize-a-string/Excel
\ No newline at end of file
diff --git a/Lang/Extended-Color-BASIC/00-LANG.txt b/Lang/Extended-Color-BASIC/00-LANG.txt
deleted file mode 100644
index 17efd36e93..0000000000
--- a/Lang/Extended-Color-BASIC/00-LANG.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-{{language|Extended Color BASIC}}
-
-Microsoft Extended Color BASIC the BASIC interpreter for the Tandy Color Computer and the Dragon Data Motorola 6809 processor based machines.
-
-==See Also==
-* [[wp:Extended Color BASIC|Wikipedia: Extended Color BASIC]]
-* [[Tasks not Implemented in Extended Color BASIC]]
\ No newline at end of file
diff --git a/Lang/Extended-Color-BASIC/00-META.yaml b/Lang/Extended-Color-BASIC/00-META.yaml
deleted file mode 100644
index 57e9e4028d..0000000000
--- a/Lang/Extended-Color-BASIC/00-META.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-from: http://rosettacode.org/wiki/Category:Extended_Color_BASIC
diff --git a/Lang/Extended-Color-BASIC/Arrays b/Lang/Extended-Color-BASIC/Arrays
deleted file mode 120000
index 2ca9fdf8eb..0000000000
--- a/Lang/Extended-Color-BASIC/Arrays
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arrays/Extended-Color-BASIC
\ No newline at end of file
diff --git a/Lang/Extended-Color-BASIC/Copy-a-string b/Lang/Extended-Color-BASIC/Copy-a-string
deleted file mode 120000
index 7a931a182a..0000000000
--- a/Lang/Extended-Color-BASIC/Copy-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Copy-a-string/Extended-Color-BASIC
\ No newline at end of file
diff --git a/Lang/Extended-Color-BASIC/Hello-world-Text b/Lang/Extended-Color-BASIC/Hello-world-Text
deleted file mode 120000
index b5cfbf6b90..0000000000
--- a/Lang/Extended-Color-BASIC/Hello-world-Text
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Text/Extended-Color-BASIC
\ No newline at end of file
diff --git a/Lang/Extended-Color-BASIC/Loops-For b/Lang/Extended-Color-BASIC/Loops-For
deleted file mode 120000
index 8719420a7c..0000000000
--- a/Lang/Extended-Color-BASIC/Loops-For
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-For/Extended-Color-BASIC
\ No newline at end of file
diff --git a/Lang/Extended-Color-BASIC/Quine b/Lang/Extended-Color-BASIC/Quine
deleted file mode 120000
index fb6135d264..0000000000
--- a/Lang/Extended-Color-BASIC/Quine
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Quine/Extended-Color-BASIC
\ No newline at end of file
diff --git a/Lang/Extended-Color-BASIC/User-input-Text b/Lang/Extended-Color-BASIC/User-input-Text
deleted file mode 120000
index 545233f9b1..0000000000
--- a/Lang/Extended-Color-BASIC/User-input-Text
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/User-input-Text/Extended-Color-BASIC
\ No newline at end of file
diff --git a/Lang/F-Sharp/00-LANG.txt b/Lang/F-Sharp/00-LANG.txt
index db0c37eee0..ba98a5db01 100644
--- a/Lang/F-Sharp/00-LANG.txt
+++ b/Lang/F-Sharp/00-LANG.txt
@@ -9,9 +9,8 @@ It is based on the [[Caml]] language, and resembles it in syntax.
F# is included as an 'official' .NET language in [[Visual Studio]] 2010 and later.
-==Links==
+==External Links==
* [http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/default.aspx F# Website at Microsoft]
* [http://blogs.msdn.com/dsyme/ Don Syme's F# Weblog]
-* [[Tasks_not_implemented_in_F_Sharp]]
[[Category:Caml Implementations]]
\ No newline at end of file
diff --git a/Lang/F-Sharp/Bifid-cipher b/Lang/F-Sharp/Bifid-cipher
deleted file mode 120000
index 4ac927ed58..0000000000
--- a/Lang/F-Sharp/Bifid-cipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bifid-cipher/F-Sharp
\ No newline at end of file
diff --git a/Lang/F-Sharp/Call-an-object-method b/Lang/F-Sharp/Call-an-object-method
deleted file mode 120000
index 69c90b1041..0000000000
--- a/Lang/F-Sharp/Call-an-object-method
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Call-an-object-method/F-Sharp
\ No newline at end of file
diff --git a/Lang/F-Sharp/Define-a-primitive-data-type b/Lang/F-Sharp/Define-a-primitive-data-type
deleted file mode 120000
index ef08834748..0000000000
--- a/Lang/F-Sharp/Define-a-primitive-data-type
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Define-a-primitive-data-type/F-Sharp
\ No newline at end of file
diff --git a/Lang/F-Sharp/Dice-game-probabilities b/Lang/F-Sharp/Dice-game-probabilities
deleted file mode 120000
index 70c873d7d5..0000000000
--- a/Lang/F-Sharp/Dice-game-probabilities
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dice-game-probabilities/F-Sharp
\ No newline at end of file
diff --git a/Lang/F-Sharp/I-before-E-except-after-C b/Lang/F-Sharp/I-before-E-except-after-C
deleted file mode 120000
index 67d12030f9..0000000000
--- a/Lang/F-Sharp/I-before-E-except-after-C
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/I-before-E-except-after-C/F-Sharp
\ No newline at end of file
diff --git a/Lang/F-Sharp/Long-literals-with-continuations b/Lang/F-Sharp/Long-literals-with-continuations
deleted file mode 120000
index 25a8149ce8..0000000000
--- a/Lang/F-Sharp/Long-literals-with-continuations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Long-literals-with-continuations/F-Sharp
\ No newline at end of file
diff --git a/Lang/F-Sharp/Long-multiplication b/Lang/F-Sharp/Long-multiplication
new file mode 120000
index 0000000000..a8ece45d37
--- /dev/null
+++ b/Lang/F-Sharp/Long-multiplication
@@ -0,0 +1 @@
+../../Task/Long-multiplication/F-Sharp
\ No newline at end of file
diff --git a/Lang/F-Sharp/Long-year b/Lang/F-Sharp/Long-year
deleted file mode 120000
index 94b40682e9..0000000000
--- a/Lang/F-Sharp/Long-year
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Long-year/F-Sharp
\ No newline at end of file
diff --git a/Lang/F-Sharp/Mad-Libs b/Lang/F-Sharp/Mad-Libs
deleted file mode 120000
index 69a30ced53..0000000000
--- a/Lang/F-Sharp/Mad-Libs
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Mad-Libs/F-Sharp
\ No newline at end of file
diff --git a/Lang/F-Sharp/Miller-Rabin-primality-test b/Lang/F-Sharp/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..4b1a1d67d8
--- /dev/null
+++ b/Lang/F-Sharp/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/F-Sharp
\ No newline at end of file
diff --git a/Lang/F-Sharp/Multi-dimensional-array b/Lang/F-Sharp/Multi-dimensional-array
deleted file mode 120000
index 0d6b1aaed5..0000000000
--- a/Lang/F-Sharp/Multi-dimensional-array
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Multi-dimensional-array/F-Sharp
\ No newline at end of file
diff --git a/Lang/F-Sharp/Multiplicative-order b/Lang/F-Sharp/Multiplicative-order
deleted file mode 120000
index b2064cc3e0..0000000000
--- a/Lang/F-Sharp/Multiplicative-order
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Multiplicative-order/F-Sharp
\ No newline at end of file
diff --git a/Lang/F-Sharp/Old-lady-swallowed-a-fly b/Lang/F-Sharp/Old-lady-swallowed-a-fly
deleted file mode 120000
index 066ed3c32b..0000000000
--- a/Lang/F-Sharp/Old-lady-swallowed-a-fly
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Old-lady-swallowed-a-fly/F-Sharp
\ No newline at end of file
diff --git a/Lang/F-Sharp/Probabilistic-choice b/Lang/F-Sharp/Probabilistic-choice
deleted file mode 120000
index b7d2692fe4..0000000000
--- a/Lang/F-Sharp/Probabilistic-choice
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Probabilistic-choice/F-Sharp
\ No newline at end of file
diff --git a/Lang/F-Sharp/Quaternion-type b/Lang/F-Sharp/Quaternion-type
new file mode 120000
index 0000000000..2de1d9f870
--- /dev/null
+++ b/Lang/F-Sharp/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/F-Sharp
\ No newline at end of file
diff --git a/Lang/F-Sharp/Same-fringe b/Lang/F-Sharp/Same-fringe
deleted file mode 120000
index 04d84b3c5a..0000000000
--- a/Lang/F-Sharp/Same-fringe
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Same-fringe/F-Sharp
\ No newline at end of file
diff --git a/Lang/F-Sharp/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors b/Lang/F-Sharp/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
similarity index 100%
rename from Lang/F-Sharp/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors
rename to Lang/F-Sharp/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
diff --git a/Lang/F-Sharp/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/F-Sharp/Sequence-smallest-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/F-Sharp/Sequence:-smallest-number-with-exactly-n-divisors
rename to Lang/F-Sharp/Sequence-smallest-number-with-exactly-n-divisors
diff --git a/Lang/F-Sharp/Sockets b/Lang/F-Sharp/Sockets
deleted file mode 120000
index 13e34e4285..0000000000
--- a/Lang/F-Sharp/Sockets
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sockets/F-Sharp
\ No newline at end of file
diff --git a/Lang/F-Sharp/Sort-a-list-of-object-identifiers b/Lang/F-Sharp/Sort-a-list-of-object-identifiers
deleted file mode 120000
index 396fa34539..0000000000
--- a/Lang/F-Sharp/Sort-a-list-of-object-identifiers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-a-list-of-object-identifiers/F-Sharp
\ No newline at end of file
diff --git a/Lang/F-Sharp/Sort-numbers-lexicographically b/Lang/F-Sharp/Sort-numbers-lexicographically
deleted file mode 120000
index bcc33d5bb2..0000000000
--- a/Lang/F-Sharp/Sort-numbers-lexicographically
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-numbers-lexicographically/F-Sharp
\ No newline at end of file
diff --git a/Lang/F-Sharp/Variable-length-quantity b/Lang/F-Sharp/Variable-length-quantity
deleted file mode 120000
index 2c43b02869..0000000000
--- a/Lang/F-Sharp/Variable-length-quantity
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Variable-length-quantity/F-Sharp
\ No newline at end of file
diff --git a/Lang/FALSE/Empty-program b/Lang/FALSE/Empty-program
new file mode 120000
index 0000000000..35445789cd
--- /dev/null
+++ b/Lang/FALSE/Empty-program
@@ -0,0 +1 @@
+../../Task/Empty-program/FALSE
\ No newline at end of file
diff --git a/Lang/FALSE/Zeckendorf-number-representation b/Lang/FALSE/Zeckendorf-number-representation
deleted file mode 120000
index fdef231a56..0000000000
--- a/Lang/FALSE/Zeckendorf-number-representation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Zeckendorf-number-representation/FALSE
\ No newline at end of file
diff --git a/Lang/FOCAL/Combinations b/Lang/FOCAL/Combinations
deleted file mode 120000
index 882a5e580d..0000000000
--- a/Lang/FOCAL/Combinations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Combinations/FOCAL
\ No newline at end of file
diff --git a/Lang/FOCAL/Hunt-the-Wumpus b/Lang/FOCAL/Hunt-the-Wumpus
deleted file mode 120000
index 098e817517..0000000000
--- a/Lang/FOCAL/Hunt-the-Wumpus
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hunt-the-Wumpus/FOCAL
\ No newline at end of file
diff --git a/Lang/FOCAL/Sierpinski-carpet b/Lang/FOCAL/Sierpinski-carpet
deleted file mode 120000
index 986467c5d7..0000000000
--- a/Lang/FOCAL/Sierpinski-carpet
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sierpinski-carpet/FOCAL
\ No newline at end of file
diff --git a/Lang/FOCAL/Zeckendorf-number-representation b/Lang/FOCAL/Zeckendorf-number-representation
deleted file mode 120000
index d0cbc5b4d2..0000000000
--- a/Lang/FOCAL/Zeckendorf-number-representation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Zeckendorf-number-representation/FOCAL
\ No newline at end of file
diff --git a/Lang/Factor/Best-shuffle b/Lang/Factor/Best-shuffle
deleted file mode 120000
index a10c8f5d14..0000000000
--- a/Lang/Factor/Best-shuffle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Best-shuffle/Factor
\ No newline at end of file
diff --git a/Lang/Factor/Bioinformatics-base-count b/Lang/Factor/Bioinformatics-base-count
new file mode 120000
index 0000000000..cf4a54a26f
--- /dev/null
+++ b/Lang/Factor/Bioinformatics-base-count
@@ -0,0 +1 @@
+../../Task/Bioinformatics-base-count/Factor
\ No newline at end of file
diff --git a/Lang/Factor/Brownian-tree b/Lang/Factor/Brownian-tree
deleted file mode 120000
index a93650256d..0000000000
--- a/Lang/Factor/Brownian-tree
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Brownian-tree/Factor
\ No newline at end of file
diff --git a/Lang/Factor/Quaternion-type b/Lang/Factor/Quaternion-type
new file mode 120000
index 0000000000..47f0548ea8
--- /dev/null
+++ b/Lang/Factor/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/Factor
\ No newline at end of file
diff --git a/Lang/Factor/Sequence:-nth-number-with-exactly-n-divisors b/Lang/Factor/Sequence-nth-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/Factor/Sequence:-nth-number-with-exactly-n-divisors
rename to Lang/Factor/Sequence-nth-number-with-exactly-n-divisors
diff --git a/Lang/Factor/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors b/Lang/Factor/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
similarity index 100%
rename from Lang/Factor/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors
rename to Lang/Factor/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
diff --git a/Lang/Factor/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/Factor/Sequence-smallest-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/Factor/Sequence:-smallest-number-with-exactly-n-divisors
rename to Lang/Factor/Sequence-smallest-number-with-exactly-n-divisors
diff --git a/Lang/Factor/Tic-tac-toe b/Lang/Factor/Tic-tac-toe
deleted file mode 120000
index 183c5fb3e0..0000000000
--- a/Lang/Factor/Tic-tac-toe
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tic-tac-toe/Factor
\ No newline at end of file
diff --git a/Lang/Fennel/00-LANG.txt b/Lang/Fennel/00-LANG.txt
index a3b3fb9075..d4313c004b 100644
--- a/Lang/Fennel/00-LANG.txt
+++ b/Lang/Fennel/00-LANG.txt
@@ -10,9 +10,4 @@ According to Fennel website: Fennel is a programming language that brings togeth
Anywhere you can run Lua code, you can run Fennel code.
-See more examples at: [https://fennel-lang.org/ Fennel Website]
-
-A useful learning tool is antifennel at [https://git.sr.ht/~technomancy/antifennel https://git.sr.ht/~technomancy/antifennel] that can convert Lua programs to Fennel.
-NB, some Lua features are not supported, particularly , and goto and any new features in Lua 5.5.
-
-As well as [[Lua]] 5.x VMs, Fennel programs can also be run with [[Pluto]], though warnings will probably be generated when Pluto parses the generated Lua.
\ No newline at end of file
+See more examples at: [https://fennel-lang.org/ Fennel Website]
\ No newline at end of file
diff --git a/Lang/Fennel/100-doors b/Lang/Fennel/100-doors
deleted file mode 120000
index 445ef6d734..0000000000
--- a/Lang/Fennel/100-doors
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/100-doors/Fennel
\ No newline at end of file
diff --git a/Lang/Fennel/Abundant-deficient-and-perfect-number-classifications b/Lang/Fennel/Abundant-deficient-and-perfect-number-classifications
deleted file mode 120000
index fbb88cf56d..0000000000
--- a/Lang/Fennel/Abundant-deficient-and-perfect-number-classifications
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abundant-deficient-and-perfect-number-classifications/Fennel
\ No newline at end of file
diff --git a/Lang/Fennel/Almost-prime b/Lang/Fennel/Almost-prime
deleted file mode 120000
index ff96ace4e0..0000000000
--- a/Lang/Fennel/Almost-prime
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Almost-prime/Fennel
\ No newline at end of file
diff --git a/Lang/Fennel/Ascending-primes b/Lang/Fennel/Ascending-primes
deleted file mode 120000
index 809d348a6f..0000000000
--- a/Lang/Fennel/Ascending-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ascending-primes/Fennel
\ No newline at end of file
diff --git a/Lang/Fennel/Associative-array-Iteration b/Lang/Fennel/Associative-array-Iteration
deleted file mode 120000
index 35dee61a57..0000000000
--- a/Lang/Fennel/Associative-array-Iteration
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Associative-array-Iteration/Fennel
\ No newline at end of file
diff --git a/Lang/Fennel/Chowla-numbers b/Lang/Fennel/Chowla-numbers
deleted file mode 120000
index ceac262e93..0000000000
--- a/Lang/Fennel/Chowla-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Chowla-numbers/Fennel
\ No newline at end of file
diff --git a/Lang/Fennel/Descending-primes b/Lang/Fennel/Descending-primes
deleted file mode 120000
index 0de026f662..0000000000
--- a/Lang/Fennel/Descending-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Descending-primes/Fennel
\ No newline at end of file
diff --git a/Lang/Fennel/Dot-product b/Lang/Fennel/Dot-product
deleted file mode 120000
index ef8e13865c..0000000000
--- a/Lang/Fennel/Dot-product
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dot-product/Fennel
\ No newline at end of file
diff --git a/Lang/Fennel/Equal-prime-and-composite-sums b/Lang/Fennel/Equal-prime-and-composite-sums
deleted file mode 120000
index fd46523293..0000000000
--- a/Lang/Fennel/Equal-prime-and-composite-sums
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Equal-prime-and-composite-sums/Fennel
\ No newline at end of file
diff --git a/Lang/Fennel/Euclid-Mullin-sequence b/Lang/Fennel/Euclid-Mullin-sequence
deleted file mode 120000
index 3b36037b43..0000000000
--- a/Lang/Fennel/Euclid-Mullin-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Euclid-Mullin-sequence/Fennel
\ No newline at end of file
diff --git a/Lang/Fennel/Execute-Brain- b/Lang/Fennel/Execute-Brain-
deleted file mode 120000
index c651f55913..0000000000
--- a/Lang/Fennel/Execute-Brain-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Execute-Brain-/Fennel
\ No newline at end of file
diff --git a/Lang/Fennel/Factorial b/Lang/Fennel/Factorial
deleted file mode 120000
index ad3ab162af..0000000000
--- a/Lang/Fennel/Factorial
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factorial/Fennel
\ No newline at end of file
diff --git a/Lang/Fennel/Factorial-primes b/Lang/Fennel/Factorial-primes
deleted file mode 120000
index f7ae7a4fab..0000000000
--- a/Lang/Fennel/Factorial-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factorial-primes/Fennel
\ No newline at end of file
diff --git a/Lang/Fennel/Goldbachs-comet b/Lang/Fennel/Goldbachs-comet
deleted file mode 120000
index 38a9767c12..0000000000
--- a/Lang/Fennel/Goldbachs-comet
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Goldbachs-comet/Fennel
\ No newline at end of file
diff --git a/Lang/Fennel/Haversine-formula b/Lang/Fennel/Haversine-formula
deleted file mode 120000
index 855dbd8be0..0000000000
--- a/Lang/Fennel/Haversine-formula
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Haversine-formula/Fennel
\ No newline at end of file
diff --git a/Lang/Fennel/Horners-rule-for-polynomial-evaluation b/Lang/Fennel/Horners-rule-for-polynomial-evaluation
deleted file mode 120000
index 74fe37f151..0000000000
--- a/Lang/Fennel/Horners-rule-for-polynomial-evaluation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Horners-rule-for-polynomial-evaluation/Fennel
\ No newline at end of file
diff --git a/Lang/Fennel/Jacobsthal-numbers b/Lang/Fennel/Jacobsthal-numbers
deleted file mode 120000
index fcf69f6156..0000000000
--- a/Lang/Fennel/Jacobsthal-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jacobsthal-numbers/Fennel
\ No newline at end of file
diff --git a/Lang/Fennel/Jordan-P-lya-numbers b/Lang/Fennel/Jordan-P-lya-numbers
deleted file mode 120000
index b4c757f403..0000000000
--- a/Lang/Fennel/Jordan-P-lya-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jordan-P-lya-numbers/Fennel
\ No newline at end of file
diff --git a/Lang/Fennel/Juggler-sequence b/Lang/Fennel/Juggler-sequence
deleted file mode 120000
index 09d9faa2d8..0000000000
--- a/Lang/Fennel/Juggler-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Juggler-sequence/Fennel
\ No newline at end of file
diff --git a/Lang/Fennel/Legendre-prime-counting-function b/Lang/Fennel/Legendre-prime-counting-function
deleted file mode 120000
index da570fb296..0000000000
--- a/Lang/Fennel/Legendre-prime-counting-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Legendre-prime-counting-function/Fennel
\ No newline at end of file
diff --git a/Lang/Fennel/Magic-8-ball b/Lang/Fennel/Magic-8-ball
deleted file mode 120000
index aa85a0a813..0000000000
--- a/Lang/Fennel/Magic-8-ball
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Magic-8-ball/Fennel
\ No newline at end of file
diff --git a/Lang/Fennel/McNuggets-problem b/Lang/Fennel/McNuggets-problem
deleted file mode 120000
index 6947e9ca17..0000000000
--- a/Lang/Fennel/McNuggets-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/McNuggets-problem/Fennel
\ No newline at end of file
diff --git a/Lang/Fennel/Numbers-with-equal-rises-and-falls b/Lang/Fennel/Numbers-with-equal-rises-and-falls
deleted file mode 120000
index 5b24fbe9c6..0000000000
--- a/Lang/Fennel/Numbers-with-equal-rises-and-falls
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Numbers-with-equal-rises-and-falls/Fennel
\ No newline at end of file
diff --git a/Lang/Fennel/Ordered-words b/Lang/Fennel/Ordered-words
deleted file mode 120000
index e6920afb80..0000000000
--- a/Lang/Fennel/Ordered-words
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ordered-words/Fennel
\ No newline at end of file
diff --git a/Lang/Fennel/Program-name b/Lang/Fennel/Program-name
deleted file mode 120000
index c12837ea94..0000000000
--- a/Lang/Fennel/Program-name
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Program-name/Fennel
\ No newline at end of file
diff --git a/Lang/Fennel/Quoting-constructs b/Lang/Fennel/Quoting-constructs
deleted file mode 120000
index 69544d5ca6..0000000000
--- a/Lang/Fennel/Quoting-constructs
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Quoting-constructs/Fennel
\ No newline at end of file
diff --git a/Lang/Fennel/Sleeping-Beauty-problem b/Lang/Fennel/Sleeping-Beauty-problem
deleted file mode 120000
index 35404c74a3..0000000000
--- a/Lang/Fennel/Sleeping-Beauty-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sleeping-Beauty-problem/Fennel
\ No newline at end of file
diff --git a/Lang/Fennel/Square-but-not-cube b/Lang/Fennel/Square-but-not-cube
deleted file mode 120000
index 55c96cb4bd..0000000000
--- a/Lang/Fennel/Square-but-not-cube
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Square-but-not-cube/Fennel
\ No newline at end of file
diff --git a/Lang/Fennel/Sum-of-elements-below-main-diagonal-of-matrix b/Lang/Fennel/Sum-of-elements-below-main-diagonal-of-matrix
deleted file mode 120000
index e6054255ef..0000000000
--- a/Lang/Fennel/Sum-of-elements-below-main-diagonal-of-matrix
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sum-of-elements-below-main-diagonal-of-matrix/Fennel
\ No newline at end of file
diff --git a/Lang/Fennel/Tau-function b/Lang/Fennel/Tau-function
deleted file mode 120000
index 97342018ad..0000000000
--- a/Lang/Fennel/Tau-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tau-function/Fennel
\ No newline at end of file
diff --git a/Lang/Fennel/Tau-number b/Lang/Fennel/Tau-number
deleted file mode 120000
index b25562b44c..0000000000
--- a/Lang/Fennel/Tau-number
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tau-number/Fennel
\ No newline at end of file
diff --git a/Lang/Fennel/Thue-Morse b/Lang/Fennel/Thue-Morse
deleted file mode 120000
index 03b98b380a..0000000000
--- a/Lang/Fennel/Thue-Morse
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Thue-Morse/Fennel
\ No newline at end of file
diff --git a/Lang/Fennel/Time-a-function b/Lang/Fennel/Time-a-function
deleted file mode 120000
index e57c2d9bfb..0000000000
--- a/Lang/Fennel/Time-a-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Time-a-function/Fennel
\ No newline at end of file
diff --git a/Lang/Fennel/Wilson-primes-of-order-n b/Lang/Fennel/Wilson-primes-of-order-n
deleted file mode 120000
index 3a829de574..0000000000
--- a/Lang/Fennel/Wilson-primes-of-order-n
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Wilson-primes-of-order-n/Fennel
\ No newline at end of file
diff --git a/Lang/Fennel/Yellowstone-sequence b/Lang/Fennel/Yellowstone-sequence
deleted file mode 120000
index e160b50754..0000000000
--- a/Lang/Fennel/Yellowstone-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Yellowstone-sequence/Fennel
\ No newline at end of file
diff --git a/Lang/Fish/00-LANG.txt b/Lang/Fish/00-LANG.txt
index 3479165e5a..ae84e9d381 100644
--- a/Lang/Fish/00-LANG.txt
+++ b/Lang/Fish/00-LANG.txt
@@ -1,3 +1,4 @@
-{{language}}Fish (properly spelled "><>") is a Funge-like esoteric language, consisting of the traditional Funge one-character commands arranged in a two-dimensional code space. A complete specification with a list of implementations can be found at [[eso:Fish|esolangs]].
+{{language}}Fish is an Funge-like esoteric language, consisting of the traditional Funge one-character commands.
+A complete specification with a list of implementations can be found at [[eso:Fish|esolangs]].
[[Category:Esoteric_Languages]]
\ No newline at end of file
diff --git a/Lang/Forth/Almost-prime b/Lang/Forth/Almost-prime
deleted file mode 120000
index bbe907fa90..0000000000
--- a/Lang/Forth/Almost-prime
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Almost-prime/Forth
\ No newline at end of file
diff --git a/Lang/Forth/Bell-numbers b/Lang/Forth/Bell-numbers
deleted file mode 120000
index d0f973798a..0000000000
--- a/Lang/Forth/Bell-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bell-numbers/Forth
\ No newline at end of file
diff --git a/Lang/Forth/Bioinformatics-base-count b/Lang/Forth/Bioinformatics-base-count
new file mode 120000
index 0000000000..b72b7872d9
--- /dev/null
+++ b/Lang/Forth/Bioinformatics-base-count
@@ -0,0 +1 @@
+../../Task/Bioinformatics-base-count/Forth
\ No newline at end of file
diff --git a/Lang/Forth/Chaocipher b/Lang/Forth/Chaocipher
deleted file mode 120000
index 4e26356ed4..0000000000
--- a/Lang/Forth/Chaocipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Chaocipher/Forth
\ No newline at end of file
diff --git a/Lang/Forth/Deceptive-numbers b/Lang/Forth/Deceptive-numbers
deleted file mode 120000
index 68978661e4..0000000000
--- a/Lang/Forth/Deceptive-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Deceptive-numbers/Forth
\ No newline at end of file
diff --git a/Lang/Forth/Duffinian-numbers b/Lang/Forth/Duffinian-numbers
deleted file mode 120000
index 9a7e28500f..0000000000
--- a/Lang/Forth/Duffinian-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Duffinian-numbers/Forth
\ No newline at end of file
diff --git a/Lang/Forth/Fibonacci-word b/Lang/Forth/Fibonacci-word
deleted file mode 120000
index b5b4488597..0000000000
--- a/Lang/Forth/Fibonacci-word
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fibonacci-word/Forth
\ No newline at end of file
diff --git a/Lang/Forth/GUI-component-interaction b/Lang/Forth/GUI-component-interaction
deleted file mode 120000
index 6ac944b586..0000000000
--- a/Lang/Forth/GUI-component-interaction
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/GUI-component-interaction/Forth
\ No newline at end of file
diff --git a/Lang/Forth/Hunt-the-Wumpus b/Lang/Forth/Hunt-the-Wumpus
deleted file mode 120000
index 3a835dfd4d..0000000000
--- a/Lang/Forth/Hunt-the-Wumpus
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hunt-the-Wumpus/Forth
\ No newline at end of file
diff --git a/Lang/Forth/Lah-numbers b/Lang/Forth/Lah-numbers
deleted file mode 120000
index 63faba81d9..0000000000
--- a/Lang/Forth/Lah-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Lah-numbers/Forth
\ No newline at end of file
diff --git a/Lang/Forth/Leonardo-numbers b/Lang/Forth/Leonardo-numbers
deleted file mode 120000
index 5742a06693..0000000000
--- a/Lang/Forth/Leonardo-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Leonardo-numbers/Forth
\ No newline at end of file
diff --git a/Lang/Forth/M-bius-function b/Lang/Forth/M-bius-function
deleted file mode 120000
index 02d70b9302..0000000000
--- a/Lang/Forth/M-bius-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/M-bius-function/Forth
\ No newline at end of file
diff --git a/Lang/Forth/Miller-Rabin-primality-test b/Lang/Forth/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..6d752b6553
--- /dev/null
+++ b/Lang/Forth/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/Forth
\ No newline at end of file
diff --git a/Lang/Forth/Particle-fountain b/Lang/Forth/Particle-fountain
deleted file mode 120000
index 3ac0d2e0d6..0000000000
--- a/Lang/Forth/Particle-fountain
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Particle-fountain/Forth
\ No newline at end of file
diff --git a/Lang/Forth/Pseudo-random-numbers-PCG32 b/Lang/Forth/Pseudo-random-numbers-PCG32
deleted file mode 120000
index df0bc45550..0000000000
--- a/Lang/Forth/Pseudo-random-numbers-PCG32
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pseudo-random-numbers-PCG32/Forth
\ No newline at end of file
diff --git a/Lang/Forth/Quaternion-type b/Lang/Forth/Quaternion-type
new file mode 120000
index 0000000000..bed4c03ac8
--- /dev/null
+++ b/Lang/Forth/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/Forth
\ No newline at end of file
diff --git a/Lang/Forth/Sorting-Algorithms-Circle-Sort b/Lang/Forth/Sorting-Algorithms-Circle-Sort
new file mode 120000
index 0000000000..0f0dc80920
--- /dev/null
+++ b/Lang/Forth/Sorting-Algorithms-Circle-Sort
@@ -0,0 +1 @@
+../../Task/Sorting-Algorithms-Circle-Sort/Forth
\ No newline at end of file
diff --git a/Lang/Forth/Sorting-algorithms-Pancake-sort b/Lang/Forth/Sorting-algorithms-Pancake-sort
deleted file mode 120000
index 84e38b0321..0000000000
--- a/Lang/Forth/Sorting-algorithms-Pancake-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Pancake-sort/Forth
\ No newline at end of file
diff --git a/Lang/Forth/Stirling-numbers-of-the-first-kind b/Lang/Forth/Stirling-numbers-of-the-first-kind
deleted file mode 120000
index f35ec2aaf5..0000000000
--- a/Lang/Forth/Stirling-numbers-of-the-first-kind
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Stirling-numbers-of-the-first-kind/Forth
\ No newline at end of file
diff --git a/Lang/Forth/Stirling-numbers-of-the-second-kind b/Lang/Forth/Stirling-numbers-of-the-second-kind
deleted file mode 120000
index a86eb5dfc1..0000000000
--- a/Lang/Forth/Stirling-numbers-of-the-second-kind
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Stirling-numbers-of-the-second-kind/Forth
\ No newline at end of file
diff --git a/Lang/Forth/Twin-primes b/Lang/Forth/Twin-primes
deleted file mode 120000
index 7812aac04a..0000000000
--- a/Lang/Forth/Twin-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Twin-primes/Forth
\ No newline at end of file
diff --git a/Lang/Fortran/ADFGVX-cipher b/Lang/Fortran/ADFGVX-cipher
deleted file mode 120000
index dc1d16bc9a..0000000000
--- a/Lang/Fortran/ADFGVX-cipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/ADFGVX-cipher/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Abbreviations-automatic b/Lang/Fortran/Abbreviations-automatic
deleted file mode 120000
index b006a0de84..0000000000
--- a/Lang/Fortran/Abbreviations-automatic
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abbreviations-automatic/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Abbreviations-easy b/Lang/Fortran/Abbreviations-easy
deleted file mode 120000
index ad33bd3687..0000000000
--- a/Lang/Fortran/Abbreviations-easy
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abbreviations-easy/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Abbreviations-simple b/Lang/Fortran/Abbreviations-simple
deleted file mode 120000
index 9ddfe0b240..0000000000
--- a/Lang/Fortran/Abbreviations-simple
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abbreviations-simple/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Abelian-sandpile-model-Identity b/Lang/Fortran/Abelian-sandpile-model-Identity
deleted file mode 120000
index f022469180..0000000000
--- a/Lang/Fortran/Abelian-sandpile-model-Identity
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abelian-sandpile-model-Identity/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Additive-primes b/Lang/Fortran/Additive-primes
deleted file mode 120000
index ea531b1d68..0000000000
--- a/Lang/Fortran/Additive-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Additive-primes/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Apply-a-digital-filter-direct-form-II-transposed- b/Lang/Fortran/Apply-a-digital-filter-direct-form-II-transposed-
deleted file mode 120000
index dd0e66389d..0000000000
--- a/Lang/Fortran/Apply-a-digital-filter-direct-form-II-transposed-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Apply-a-digital-filter-direct-form-II-transposed-/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Arithmetic-derivative b/Lang/Fortran/Arithmetic-derivative
deleted file mode 120000
index afa7044404..0000000000
--- a/Lang/Fortran/Arithmetic-derivative
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-derivative/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Arithmetic-numbers b/Lang/Fortran/Arithmetic-numbers
deleted file mode 120000
index 19ae0a75dc..0000000000
--- a/Lang/Fortran/Arithmetic-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-numbers/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Associative-array-Merging b/Lang/Fortran/Associative-array-Merging
deleted file mode 120000
index 862cee9b2b..0000000000
--- a/Lang/Fortran/Associative-array-Merging
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Associative-array-Merging/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/B-zier-curves-Intersections b/Lang/Fortran/B-zier-curves-Intersections
deleted file mode 120000
index 59ae9a9e9a..0000000000
--- a/Lang/Fortran/B-zier-curves-Intersections
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/B-zier-curves-Intersections/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Best-shuffle b/Lang/Fortran/Best-shuffle
deleted file mode 120000
index 735756bb7c..0000000000
--- a/Lang/Fortran/Best-shuffle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Best-shuffle/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Bifid-cipher b/Lang/Fortran/Bifid-cipher
deleted file mode 120000
index 65b6def5fd..0000000000
--- a/Lang/Fortran/Bifid-cipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bifid-cipher/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Bin-given-limits b/Lang/Fortran/Bin-given-limits
deleted file mode 120000
index d5ad60904d..0000000000
--- a/Lang/Fortran/Bin-given-limits
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bin-given-limits/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Bioinformatics-Sequence-mutation b/Lang/Fortran/Bioinformatics-Sequence-mutation
deleted file mode 120000
index 9bcd7a681c..0000000000
--- a/Lang/Fortran/Bioinformatics-Sequence-mutation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bioinformatics-Sequence-mutation/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Blum-integer b/Lang/Fortran/Blum-integer
deleted file mode 120000
index 814d829eed..0000000000
--- a/Lang/Fortran/Blum-integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Blum-integer/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Brilliant-numbers b/Lang/Fortran/Brilliant-numbers
deleted file mode 120000
index 6c927981ae..0000000000
--- a/Lang/Fortran/Brilliant-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Brilliant-numbers/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Burrows-Wheeler-transform b/Lang/Fortran/Burrows-Wheeler-transform
deleted file mode 120000
index e312b27f94..0000000000
--- a/Lang/Fortran/Burrows-Wheeler-transform
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Burrows-Wheeler-transform/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Calkin-Wilf-sequence b/Lang/Fortran/Calkin-Wilf-sequence
deleted file mode 120000
index daedbbc7bc..0000000000
--- a/Lang/Fortran/Calkin-Wilf-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Calkin-Wilf-sequence/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Camel-case-and-snake-case b/Lang/Fortran/Camel-case-and-snake-case
deleted file mode 120000
index 8c737ed655..0000000000
--- a/Lang/Fortran/Camel-case-and-snake-case
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Camel-case-and-snake-case/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Casting-out-nines b/Lang/Fortran/Casting-out-nines
deleted file mode 120000
index 7062811203..0000000000
--- a/Lang/Fortran/Casting-out-nines
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Casting-out-nines/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Catalan-numbers-Pascals-triangle b/Lang/Fortran/Catalan-numbers-Pascals-triangle
deleted file mode 120000
index e33b331d86..0000000000
--- a/Lang/Fortran/Catalan-numbers-Pascals-triangle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Catalan-numbers-Pascals-triangle/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Chaocipher b/Lang/Fortran/Chaocipher
deleted file mode 120000
index 1db3092120..0000000000
--- a/Lang/Fortran/Chaocipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Chaocipher/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Check-input-device-is-a-terminal b/Lang/Fortran/Check-input-device-is-a-terminal
deleted file mode 120000
index a97eabf9a0..0000000000
--- a/Lang/Fortran/Check-input-device-is-a-terminal
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Check-input-device-is-a-terminal/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Check-output-device-is-a-terminal b/Lang/Fortran/Check-output-device-is-a-terminal
deleted file mode 120000
index 47a93202b8..0000000000
--- a/Lang/Fortran/Check-output-device-is-a-terminal
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Check-output-device-is-a-terminal/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Chinese-zodiac b/Lang/Fortran/Chinese-zodiac
deleted file mode 120000
index 87ed14e5e7..0000000000
--- a/Lang/Fortran/Chinese-zodiac
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Chinese-zodiac/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Commatizing-numbers b/Lang/Fortran/Commatizing-numbers
deleted file mode 120000
index b30a0bb3a4..0000000000
--- a/Lang/Fortran/Commatizing-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Commatizing-numbers/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Consecutive-primes-with-ascending-or-descending-differences b/Lang/Fortran/Consecutive-primes-with-ascending-or-descending-differences
deleted file mode 120000
index 1347a887b7..0000000000
--- a/Lang/Fortran/Consecutive-primes-with-ascending-or-descending-differences
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Consecutive-primes-with-ascending-or-descending-differences/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Copy-stdin-to-stdout b/Lang/Fortran/Copy-stdin-to-stdout
deleted file mode 120000
index 47cac281c7..0000000000
--- a/Lang/Fortran/Copy-stdin-to-stdout
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Copy-stdin-to-stdout/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Count-the-coins b/Lang/Fortran/Count-the-coins
deleted file mode 120000
index 974abe5d75..0000000000
--- a/Lang/Fortran/Count-the-coins
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Count-the-coins/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Cuban-primes b/Lang/Fortran/Cuban-primes
deleted file mode 120000
index 87850fcead..0000000000
--- a/Lang/Fortran/Cuban-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cuban-primes/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Cullen-and-Woodall-numbers b/Lang/Fortran/Cullen-and-Woodall-numbers
deleted file mode 120000
index ca6a11cd97..0000000000
--- a/Lang/Fortran/Cullen-and-Woodall-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cullen-and-Woodall-numbers/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Currency b/Lang/Fortran/Currency
deleted file mode 120000
index 2f7b0a58da..0000000000
--- a/Lang/Fortran/Currency
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Currency/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Curzon-numbers b/Lang/Fortran/Curzon-numbers
deleted file mode 120000
index b7d16c2b28..0000000000
--- a/Lang/Fortran/Curzon-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Curzon-numbers/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Cyclops-numbers b/Lang/Fortran/Cyclops-numbers
deleted file mode 120000
index 8c606709ad..0000000000
--- a/Lang/Fortran/Cyclops-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cyclops-numbers/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Cyclotomic-polynomial b/Lang/Fortran/Cyclotomic-polynomial
deleted file mode 120000
index 0c2fd63e5e..0000000000
--- a/Lang/Fortran/Cyclotomic-polynomial
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cyclotomic-polynomial/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Demings-funnel b/Lang/Fortran/Demings-funnel
deleted file mode 120000
index 0a1ca7ab40..0000000000
--- a/Lang/Fortran/Demings-funnel
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Demings-funnel/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Determine-if-a-string-is-collapsible b/Lang/Fortran/Determine-if-a-string-is-collapsible
deleted file mode 120000
index f496b06786..0000000000
--- a/Lang/Fortran/Determine-if-a-string-is-collapsible
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-is-collapsible/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Determine-if-two-triangles-overlap b/Lang/Fortran/Determine-if-two-triangles-overlap
deleted file mode 120000
index 902cd39054..0000000000
--- a/Lang/Fortran/Determine-if-two-triangles-overlap
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-two-triangles-overlap/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Dice-game-probabilities b/Lang/Fortran/Dice-game-probabilities
deleted file mode 120000
index 1215daca7a..0000000000
--- a/Lang/Fortran/Dice-game-probabilities
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dice-game-probabilities/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Dinesmans-multiple-dwelling-problem b/Lang/Fortran/Dinesmans-multiple-dwelling-problem
deleted file mode 120000
index 4ab5caf233..0000000000
--- a/Lang/Fortran/Dinesmans-multiple-dwelling-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dinesmans-multiple-dwelling-problem/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Dining-philosophers b/Lang/Fortran/Dining-philosophers
deleted file mode 120000
index 8822e00fdf..0000000000
--- a/Lang/Fortran/Dining-philosophers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dining-philosophers/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Disarium-numbers b/Lang/Fortran/Disarium-numbers
deleted file mode 120000
index 4713bf931d..0000000000
--- a/Lang/Fortran/Disarium-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Disarium-numbers/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Display-a-linear-combination b/Lang/Fortran/Display-a-linear-combination
deleted file mode 120000
index 4a9784f58d..0000000000
--- a/Lang/Fortran/Display-a-linear-combination
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Display-a-linear-combination/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Diversity-prediction-theorem b/Lang/Fortran/Diversity-prediction-theorem
deleted file mode 120000
index c6eafa5019..0000000000
--- a/Lang/Fortran/Diversity-prediction-theorem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Diversity-prediction-theorem/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/EKG-sequence-convergence b/Lang/Fortran/EKG-sequence-convergence
deleted file mode 120000
index 3ba5c0a162..0000000000
--- a/Lang/Fortran/EKG-sequence-convergence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/EKG-sequence-convergence/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Eban-numbers b/Lang/Fortran/Eban-numbers
deleted file mode 120000
index 0d435c16c7..0000000000
--- a/Lang/Fortran/Eban-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Eban-numbers/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Egyptian-division b/Lang/Fortran/Egyptian-division
deleted file mode 120000
index bb7a134139..0000000000
--- a/Lang/Fortran/Egyptian-division
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Egyptian-division/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Entropy-Narcissist b/Lang/Fortran/Entropy-Narcissist
deleted file mode 120000
index 9050980c1c..0000000000
--- a/Lang/Fortran/Entropy-Narcissist
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Entropy-Narcissist/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Eulers-constant-0.5772... b/Lang/Fortran/Eulers-constant-0.5772...
deleted file mode 120000
index e2642e24fb..0000000000
--- a/Lang/Fortran/Eulers-constant-0.5772...
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Eulers-constant-0.5772.../Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Exponentiation-with-infix-operators-in-or-operating-on-the-base b/Lang/Fortran/Exponentiation-with-infix-operators-in-or-operating-on-the-base
deleted file mode 120000
index 813fe58706..0000000000
--- a/Lang/Fortran/Exponentiation-with-infix-operators-in-or-operating-on-the-base
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Exponentiation-with-infix-operators-in-or-operating-on-the-base/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/FASTA-format b/Lang/Fortran/FASTA-format
deleted file mode 120000
index b5442ba0f5..0000000000
--- a/Lang/Fortran/FASTA-format
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/FASTA-format/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Factorions b/Lang/Fortran/Factorions
deleted file mode 120000
index 2a48b53fa3..0000000000
--- a/Lang/Fortran/Factorions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factorions/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Farey-sequence b/Lang/Fortran/Farey-sequence
deleted file mode 120000
index d7c19f96de..0000000000
--- a/Lang/Fortran/Farey-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Farey-sequence/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Fibonacci-word b/Lang/Fortran/Fibonacci-word
deleted file mode 120000
index e92e6e10a6..0000000000
--- a/Lang/Fortran/Fibonacci-word
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fibonacci-word/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Find-Chess960-starting-position-identifier b/Lang/Fortran/Find-Chess960-starting-position-identifier
deleted file mode 120000
index 9300b24a96..0000000000
--- a/Lang/Fortran/Find-Chess960-starting-position-identifier
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Find-Chess960-starting-position-identifier/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Find-common-directory-path b/Lang/Fortran/Find-common-directory-path
deleted file mode 120000
index 87683f2dbe..0000000000
--- a/Lang/Fortran/Find-common-directory-path
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Find-common-directory-path/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Find-the-intersection-of-a-line-with-a-plane b/Lang/Fortran/Find-the-intersection-of-a-line-with-a-plane
deleted file mode 120000
index b07ee0b0a7..0000000000
--- a/Lang/Fortran/Find-the-intersection-of-a-line-with-a-plane
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Find-the-intersection-of-a-line-with-a-plane/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/First-perfect-square-in-base-n-with-n-unique-digits b/Lang/Fortran/First-perfect-square-in-base-n-with-n-unique-digits
deleted file mode 120000
index 6f8a8ab270..0000000000
--- a/Lang/Fortran/First-perfect-square-in-base-n-with-n-unique-digits
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/First-perfect-square-in-base-n-with-n-unique-digits/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Fivenum b/Lang/Fortran/Fivenum
deleted file mode 120000
index a8fe9953dc..0000000000
--- a/Lang/Fortran/Fivenum
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fivenum/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Fixed-length-records b/Lang/Fortran/Fixed-length-records
deleted file mode 120000
index aa68735e7e..0000000000
--- a/Lang/Fortran/Fixed-length-records
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fixed-length-records/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Fraction-reduction b/Lang/Fortran/Fraction-reduction
deleted file mode 120000
index f7daa9279c..0000000000
--- a/Lang/Fortran/Fraction-reduction
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fraction-reduction/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/French-Republican-calendar b/Lang/Fortran/French-Republican-calendar
deleted file mode 120000
index 765942db3d..0000000000
--- a/Lang/Fortran/French-Republican-calendar
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/French-Republican-calendar/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Fusc-sequence b/Lang/Fortran/Fusc-sequence
deleted file mode 120000
index c5e3005573..0000000000
--- a/Lang/Fortran/Fusc-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fusc-sequence/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Gapful-numbers b/Lang/Fortran/Gapful-numbers
deleted file mode 120000
index 7500b01654..0000000000
--- a/Lang/Fortran/Gapful-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Gapful-numbers/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Giuga-numbers b/Lang/Fortran/Giuga-numbers
deleted file mode 120000
index 9f15a4c7e2..0000000000
--- a/Lang/Fortran/Giuga-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Giuga-numbers/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Greedy-algorithm-for-Egyptian-fractions b/Lang/Fortran/Greedy-algorithm-for-Egyptian-fractions
deleted file mode 120000
index 053e501120..0000000000
--- a/Lang/Fortran/Greedy-algorithm-for-Egyptian-fractions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Greedy-algorithm-for-Egyptian-fractions/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/HTTP b/Lang/Fortran/HTTP
deleted file mode 120000
index 24f0692116..0000000000
--- a/Lang/Fortran/HTTP
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/HTTP/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Harmonic-series b/Lang/Fortran/Harmonic-series
deleted file mode 120000
index 6a6cd246a2..0000000000
--- a/Lang/Fortran/Harmonic-series
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Harmonic-series/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Hex-words b/Lang/Fortran/Hex-words
deleted file mode 120000
index 2b9a4573e8..0000000000
--- a/Lang/Fortran/Hex-words
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hex-words/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Hofstadter-Figure-Figure-sequences b/Lang/Fortran/Hofstadter-Figure-Figure-sequences
deleted file mode 120000
index 46497cf751..0000000000
--- a/Lang/Fortran/Hofstadter-Figure-Figure-sequences
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hofstadter-Figure-Figure-sequences/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Humble-numbers b/Lang/Fortran/Humble-numbers
deleted file mode 120000
index 5aff41aed9..0000000000
--- a/Lang/Fortran/Humble-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Humble-numbers/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Intersecting-number-wheels b/Lang/Fortran/Intersecting-number-wheels
deleted file mode 120000
index f87ba36725..0000000000
--- a/Lang/Fortran/Intersecting-number-wheels
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Intersecting-number-wheels/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Isograms-and-heterograms b/Lang/Fortran/Isograms-and-heterograms
deleted file mode 120000
index cc9bb4e50b..0000000000
--- a/Lang/Fortran/Isograms-and-heterograms
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Isograms-and-heterograms/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Iterated-digits-squaring b/Lang/Fortran/Iterated-digits-squaring
deleted file mode 120000
index b72dc14257..0000000000
--- a/Lang/Fortran/Iterated-digits-squaring
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Iterated-digits-squaring/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Jewels-and-stones b/Lang/Fortran/Jewels-and-stones
deleted file mode 120000
index 5375572de2..0000000000
--- a/Lang/Fortran/Jewels-and-stones
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jewels-and-stones/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/K-d-tree b/Lang/Fortran/K-d-tree
deleted file mode 120000
index 3b7491c540..0000000000
--- a/Lang/Fortran/K-d-tree
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/K-d-tree/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Kernighans-large-earthquake-problem b/Lang/Fortran/Kernighans-large-earthquake-problem
deleted file mode 120000
index ae20f8ddbd..0000000000
--- a/Lang/Fortran/Kernighans-large-earthquake-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Kernighans-large-earthquake-problem/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Knapsack-problem-Bounded b/Lang/Fortran/Knapsack-problem-Bounded
deleted file mode 120000
index 9f9870702b..0000000000
--- a/Lang/Fortran/Knapsack-problem-Bounded
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Knapsack-problem-Bounded/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Knuths-algorithm-S b/Lang/Fortran/Knuths-algorithm-S
deleted file mode 120000
index fe5b21ade9..0000000000
--- a/Lang/Fortran/Knuths-algorithm-S
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Knuths-algorithm-S/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Knuths-power-tree b/Lang/Fortran/Knuths-power-tree
deleted file mode 120000
index 163172c51f..0000000000
--- a/Lang/Fortran/Knuths-power-tree
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Knuths-power-tree/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Largest-number-divisible-by-its-digits b/Lang/Fortran/Largest-number-divisible-by-its-digits
deleted file mode 120000
index cd7d8d0694..0000000000
--- a/Lang/Fortran/Largest-number-divisible-by-its-digits
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Largest-number-divisible-by-its-digits/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Logistic-curve-fitting-in-epidemiology b/Lang/Fortran/Logistic-curve-fitting-in-epidemiology
deleted file mode 120000
index c968939bbf..0000000000
--- a/Lang/Fortran/Logistic-curve-fitting-in-epidemiology
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Logistic-curve-fitting-in-epidemiology/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Long-literals-with-continuations b/Lang/Fortran/Long-literals-with-continuations
deleted file mode 120000
index 7af1186694..0000000000
--- a/Lang/Fortran/Long-literals-with-continuations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Long-literals-with-continuations/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Longest-increasing-subsequence b/Lang/Fortran/Longest-increasing-subsequence
deleted file mode 120000
index 4d7a715c23..0000000000
--- a/Lang/Fortran/Longest-increasing-subsequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Longest-increasing-subsequence/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Loops-Wrong-ranges b/Lang/Fortran/Loops-Wrong-ranges
deleted file mode 120000
index ecb218786f..0000000000
--- a/Lang/Fortran/Loops-Wrong-ranges
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Wrong-ranges/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Lucky-and-even-lucky-numbers b/Lang/Fortran/Lucky-and-even-lucky-numbers
deleted file mode 120000
index 5ac4d084fd..0000000000
--- a/Lang/Fortran/Lucky-and-even-lucky-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Lucky-and-even-lucky-numbers/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Magic-constant b/Lang/Fortran/Magic-constant
deleted file mode 120000
index 011d77bc86..0000000000
--- a/Lang/Fortran/Magic-constant
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Magic-constant/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/McNuggets-problem b/Lang/Fortran/McNuggets-problem
deleted file mode 120000
index 6e4b8bc9dd..0000000000
--- a/Lang/Fortran/McNuggets-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/McNuggets-problem/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Metallic-ratios b/Lang/Fortran/Metallic-ratios
deleted file mode 120000
index 21133a8990..0000000000
--- a/Lang/Fortran/Metallic-ratios
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Metallic-ratios/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Miller-Rabin-primality-test b/Lang/Fortran/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..6d501f45e9
--- /dev/null
+++ b/Lang/Fortran/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Mind-boggling-card-trick b/Lang/Fortran/Mind-boggling-card-trick
deleted file mode 120000
index bda2aaf5f0..0000000000
--- a/Lang/Fortran/Mind-boggling-card-trick
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Mind-boggling-card-trick/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Minimum-multiple-of-m-where-digital-sum-equals-m b/Lang/Fortran/Minimum-multiple-of-m-where-digital-sum-equals-m
deleted file mode 120000
index 0e425fef14..0000000000
--- a/Lang/Fortran/Minimum-multiple-of-m-where-digital-sum-equals-m
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Minimum-multiple-of-m-where-digital-sum-equals-m/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Minimum-positive-multiple-in-base-10-using-only-0-and-1 b/Lang/Fortran/Minimum-positive-multiple-in-base-10-using-only-0-and-1
deleted file mode 120000
index 2524fb63f9..0000000000
--- a/Lang/Fortran/Minimum-positive-multiple-in-base-10-using-only-0-and-1
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Minimum-positive-multiple-in-base-10-using-only-0-and-1/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Modified-random-distribution b/Lang/Fortran/Modified-random-distribution
deleted file mode 120000
index b886daca51..0000000000
--- a/Lang/Fortran/Modified-random-distribution
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Modified-random-distribution/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Move-to-front-algorithm b/Lang/Fortran/Move-to-front-algorithm
deleted file mode 120000
index aaea4a888b..0000000000
--- a/Lang/Fortran/Move-to-front-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Move-to-front-algorithm/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Multisplit b/Lang/Fortran/Multisplit
deleted file mode 120000
index f032908bb4..0000000000
--- a/Lang/Fortran/Multisplit
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Multisplit/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Numbers-which-are-the-cube-roots-of-the-product-of-their-proper-divisors b/Lang/Fortran/Numbers-which-are-the-cube-roots-of-the-product-of-their-proper-divisors
deleted file mode 120000
index 2f7237b820..0000000000
--- a/Lang/Fortran/Numbers-which-are-the-cube-roots-of-the-product-of-their-proper-divisors
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Numbers-which-are-the-cube-roots-of-the-product-of-their-proper-divisors/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Ormiston-triples b/Lang/Fortran/Ormiston-triples
deleted file mode 120000
index a2f8794905..0000000000
--- a/Lang/Fortran/Ormiston-triples
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ormiston-triples/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Palindrome-dates b/Lang/Fortran/Palindrome-dates
deleted file mode 120000
index 0f7da68189..0000000000
--- a/Lang/Fortran/Palindrome-dates
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Palindrome-dates/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Parallel-brute-force b/Lang/Fortran/Parallel-brute-force
deleted file mode 120000
index 85bd9c5ced..0000000000
--- a/Lang/Fortran/Parallel-brute-force
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Parallel-brute-force/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Parse-an-IP-Address b/Lang/Fortran/Parse-an-IP-Address
deleted file mode 120000
index 33994c1cc1..0000000000
--- a/Lang/Fortran/Parse-an-IP-Address
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Parse-an-IP-Address/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Pascals-triangle-Puzzle b/Lang/Fortran/Pascals-triangle-Puzzle
deleted file mode 120000
index 5cea267339..0000000000
--- a/Lang/Fortran/Pascals-triangle-Puzzle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pascals-triangle-Puzzle/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Password-generator b/Lang/Fortran/Password-generator
deleted file mode 120000
index 5ff2015452..0000000000
--- a/Lang/Fortran/Password-generator
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Password-generator/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Pells-equation b/Lang/Fortran/Pells-equation
deleted file mode 120000
index 5929e39745..0000000000
--- a/Lang/Fortran/Pells-equation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pells-equation/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Playfair-cipher b/Lang/Fortran/Playfair-cipher
deleted file mode 120000
index 7f02f8e934..0000000000
--- a/Lang/Fortran/Playfair-cipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Playfair-cipher/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Primality-by-Wilsons-theorem b/Lang/Fortran/Primality-by-Wilsons-theorem
deleted file mode 120000
index 228dd95d2d..0000000000
--- a/Lang/Fortran/Primality-by-Wilsons-theorem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Primality-by-Wilsons-theorem/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Pseudo-random-numbers-Splitmix64 b/Lang/Fortran/Pseudo-random-numbers-Splitmix64
deleted file mode 120000
index 39aac5cdd2..0000000000
--- a/Lang/Fortran/Pseudo-random-numbers-Splitmix64
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pseudo-random-numbers-Splitmix64/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Quaternion-type b/Lang/Fortran/Quaternion-type
new file mode 120000
index 0000000000..a1829748df
--- /dev/null
+++ b/Lang/Fortran/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Ramanujan-primes-twins b/Lang/Fortran/Ramanujan-primes-twins
deleted file mode 120000
index bdb1a22484..0000000000
--- a/Lang/Fortran/Ramanujan-primes-twins
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ramanujan-primes-twins/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Ramanujans-constant b/Lang/Fortran/Ramanujans-constant
deleted file mode 120000
index 8de4420011..0000000000
--- a/Lang/Fortran/Ramanujans-constant
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ramanujans-constant/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Ramer-Douglas-Peucker-line-simplification b/Lang/Fortran/Ramer-Douglas-Peucker-line-simplification
deleted file mode 120000
index a601cbd90f..0000000000
--- a/Lang/Fortran/Ramer-Douglas-Peucker-line-simplification
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ramer-Douglas-Peucker-line-simplification/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Ranking-methods b/Lang/Fortran/Ranking-methods
deleted file mode 120000
index a369cc6fab..0000000000
--- a/Lang/Fortran/Ranking-methods
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ranking-methods/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Read-a-file-character-by-character-UTF8 b/Lang/Fortran/Read-a-file-character-by-character-UTF8
deleted file mode 120000
index 4e9ecfa6e0..0000000000
--- a/Lang/Fortran/Read-a-file-character-by-character-UTF8
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Read-a-file-character-by-character-UTF8/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Resistor-mesh b/Lang/Fortran/Resistor-mesh
deleted file mode 120000
index 4c45bf818f..0000000000
--- a/Lang/Fortran/Resistor-mesh
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Resistor-mesh/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Sailors-coconuts-and-a-monkey-problem b/Lang/Fortran/Sailors-coconuts-and-a-monkey-problem
deleted file mode 120000
index e105172665..0000000000
--- a/Lang/Fortran/Sailors-coconuts-and-a-monkey-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sailors-coconuts-and-a-monkey-problem/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Sieve-of-Pritchard b/Lang/Fortran/Sieve-of-Pritchard
deleted file mode 120000
index a74974dd66..0000000000
--- a/Lang/Fortran/Sieve-of-Pritchard
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sieve-of-Pritchard/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Sleeping-Beauty-problem b/Lang/Fortran/Sleeping-Beauty-problem
deleted file mode 120000
index 35b7547112..0000000000
--- a/Lang/Fortran/Sleeping-Beauty-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sleeping-Beauty-problem/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Solve-a-Hopido-puzzle b/Lang/Fortran/Solve-a-Hopido-puzzle
deleted file mode 120000
index 4726977710..0000000000
--- a/Lang/Fortran/Solve-a-Hopido-puzzle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Solve-a-Hopido-puzzle/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Sorting-Algorithms-Circle-Sort b/Lang/Fortran/Sorting-Algorithms-Circle-Sort
new file mode 120000
index 0000000000..62558aaa6e
--- /dev/null
+++ b/Lang/Fortran/Sorting-Algorithms-Circle-Sort
@@ -0,0 +1 @@
+../../Task/Sorting-Algorithms-Circle-Sort/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Sorting-algorithms-Cocktail-sort-with-shifting-bounds b/Lang/Fortran/Sorting-algorithms-Cocktail-sort-with-shifting-bounds
deleted file mode 120000
index cbe69052c4..0000000000
--- a/Lang/Fortran/Sorting-algorithms-Cocktail-sort-with-shifting-bounds
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Cocktail-sort-with-shifting-bounds/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Square-but-not-cube b/Lang/Fortran/Square-but-not-cube
deleted file mode 120000
index 13809f6e51..0000000000
--- a/Lang/Fortran/Square-but-not-cube
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Square-but-not-cube/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Stable-marriage-problem b/Lang/Fortran/Stable-marriage-problem
deleted file mode 120000
index b61f49608c..0000000000
--- a/Lang/Fortran/Stable-marriage-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Stable-marriage-problem/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Strassens-algorithm b/Lang/Fortran/Strassens-algorithm
deleted file mode 120000
index f73f6498f4..0000000000
--- a/Lang/Fortran/Strassens-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strassens-algorithm/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Strip-whitespace-from-a-string-Top-and-tail b/Lang/Fortran/Strip-whitespace-from-a-string-Top-and-tail
deleted file mode 120000
index e6e0c4696a..0000000000
--- a/Lang/Fortran/Strip-whitespace-from-a-string-Top-and-tail
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strip-whitespace-from-a-string-Top-and-tail/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Sum-of-elements-below-main-diagonal-of-matrix b/Lang/Fortran/Sum-of-elements-below-main-diagonal-of-matrix
deleted file mode 120000
index a739c37e8e..0000000000
--- a/Lang/Fortran/Sum-of-elements-below-main-diagonal-of-matrix
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sum-of-elements-below-main-diagonal-of-matrix/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Synchronous-concurrency b/Lang/Fortran/Synchronous-concurrency
deleted file mode 120000
index f0f128cdfd..0000000000
--- a/Lang/Fortran/Synchronous-concurrency
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Synchronous-concurrency/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Tarjan b/Lang/Fortran/Tarjan
deleted file mode 120000
index 22149d08b7..0000000000
--- a/Lang/Fortran/Tarjan
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tarjan/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Thieles-interpolation-formula b/Lang/Fortran/Thieles-interpolation-formula
deleted file mode 120000
index f8f82960bc..0000000000
--- a/Lang/Fortran/Thieles-interpolation-formula
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Thieles-interpolation-formula/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Total-circles-area b/Lang/Fortran/Total-circles-area
deleted file mode 120000
index 7ea452c217..0000000000
--- a/Lang/Fortran/Total-circles-area
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Total-circles-area/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Totient-function b/Lang/Fortran/Totient-function
deleted file mode 120000
index 2559e22f69..0000000000
--- a/Lang/Fortran/Totient-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Totient-function/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Tree-datastructures b/Lang/Fortran/Tree-datastructures
deleted file mode 120000
index 0155519b78..0000000000
--- a/Lang/Fortran/Tree-datastructures
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tree-datastructures/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Twelve-statements b/Lang/Fortran/Twelve-statements
deleted file mode 120000
index dfaa2166b8..0000000000
--- a/Lang/Fortran/Twelve-statements
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Twelve-statements/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Two-bullet-roulette b/Lang/Fortran/Two-bullet-roulette
deleted file mode 120000
index 67f7fb2512..0000000000
--- a/Lang/Fortran/Two-bullet-roulette
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Two-bullet-roulette/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Twos-complement b/Lang/Fortran/Twos-complement
deleted file mode 120000
index b8e6672d37..0000000000
--- a/Lang/Fortran/Twos-complement
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Twos-complement/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Ukkonen-s-suffix-tree-construction b/Lang/Fortran/Ukkonen-s-suffix-tree-construction
deleted file mode 120000
index 183d59f5c8..0000000000
--- a/Lang/Fortran/Ukkonen-s-suffix-tree-construction
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ukkonen-s-suffix-tree-construction/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Unprimeable-numbers b/Lang/Fortran/Unprimeable-numbers
deleted file mode 120000
index 9835babcf5..0000000000
--- a/Lang/Fortran/Unprimeable-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Unprimeable-numbers/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Vampire-number b/Lang/Fortran/Vampire-number
deleted file mode 120000
index fda3c25555..0000000000
--- a/Lang/Fortran/Vampire-number
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Vampire-number/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Verhoeff-algorithm b/Lang/Fortran/Verhoeff-algorithm
deleted file mode 120000
index da50f29648..0000000000
--- a/Lang/Fortran/Verhoeff-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Verhoeff-algorithm/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Vigen-re-cipher-Cryptanalysis b/Lang/Fortran/Vigen-re-cipher-Cryptanalysis
deleted file mode 120000
index 1fbd3a2ec4..0000000000
--- a/Lang/Fortran/Vigen-re-cipher-Cryptanalysis
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Vigen-re-cipher-Cryptanalysis/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Vogels-approximation-method b/Lang/Fortran/Vogels-approximation-method
deleted file mode 120000
index 3098233175..0000000000
--- a/Lang/Fortran/Vogels-approximation-method
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Vogels-approximation-method/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Word-search b/Lang/Fortran/Word-search
deleted file mode 120000
index 1675b7de44..0000000000
--- a/Lang/Fortran/Word-search
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Word-search/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Yellowstone-sequence b/Lang/Fortran/Yellowstone-sequence
deleted file mode 120000
index ba08bc09f7..0000000000
--- a/Lang/Fortran/Yellowstone-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Yellowstone-sequence/Fortran
\ No newline at end of file
diff --git a/Lang/Fortran/Zebra-puzzle b/Lang/Fortran/Zebra-puzzle
deleted file mode 120000
index 93816a6fc6..0000000000
--- a/Lang/Fortran/Zebra-puzzle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Zebra-puzzle/Fortran
\ No newline at end of file
diff --git a/Lang/Free-Pascal-Lazarus/ADFGVX-cipher b/Lang/Free-Pascal-Lazarus/ADFGVX-cipher
deleted file mode 120000
index b14ee34ace..0000000000
--- a/Lang/Free-Pascal-Lazarus/ADFGVX-cipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/ADFGVX-cipher/Free-Pascal-Lazarus
\ No newline at end of file
diff --git a/Lang/Free-Pascal-Lazarus/Abstract-type b/Lang/Free-Pascal-Lazarus/Abstract-type
deleted file mode 120000
index 89db3c6334..0000000000
--- a/Lang/Free-Pascal-Lazarus/Abstract-type
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abstract-type/Free-Pascal-Lazarus
\ No newline at end of file
diff --git a/Lang/Free-Pascal-Lazarus/Abundant-odd-numbers b/Lang/Free-Pascal-Lazarus/Abundant-odd-numbers
deleted file mode 120000
index 04dfaa00e1..0000000000
--- a/Lang/Free-Pascal-Lazarus/Abundant-odd-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abundant-odd-numbers/Free-Pascal-Lazarus
\ No newline at end of file
diff --git a/Lang/Free-Pascal-Lazarus/Bell-numbers b/Lang/Free-Pascal-Lazarus/Bell-numbers
deleted file mode 120000
index 889cd61708..0000000000
--- a/Lang/Free-Pascal-Lazarus/Bell-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bell-numbers/Free-Pascal-Lazarus
\ No newline at end of file
diff --git a/Lang/Free-Pascal-Lazarus/Bin-given-limits b/Lang/Free-Pascal-Lazarus/Bin-given-limits
deleted file mode 120000
index 090d25165e..0000000000
--- a/Lang/Free-Pascal-Lazarus/Bin-given-limits
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bin-given-limits/Free-Pascal-Lazarus
\ No newline at end of file
diff --git a/Lang/Free-Pascal-Lazarus/Binary-strings b/Lang/Free-Pascal-Lazarus/Binary-strings
deleted file mode 120000
index f6ed90f24b..0000000000
--- a/Lang/Free-Pascal-Lazarus/Binary-strings
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Binary-strings/Free-Pascal-Lazarus
\ No newline at end of file
diff --git a/Lang/Free-Pascal-Lazarus/Boyer-Moore-string-search b/Lang/Free-Pascal-Lazarus/Boyer-Moore-string-search
deleted file mode 120000
index 9902c3a3ea..0000000000
--- a/Lang/Free-Pascal-Lazarus/Boyer-Moore-string-search
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Boyer-Moore-string-search/Free-Pascal-Lazarus
\ No newline at end of file
diff --git a/Lang/Free-Pascal-Lazarus/Brazilian-numbers b/Lang/Free-Pascal-Lazarus/Brazilian-numbers
deleted file mode 120000
index 2f21964a49..0000000000
--- a/Lang/Free-Pascal-Lazarus/Brazilian-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Brazilian-numbers/Free-Pascal-Lazarus
\ No newline at end of file
diff --git a/Lang/Free-Pascal-Lazarus/Brilliant-numbers b/Lang/Free-Pascal-Lazarus/Brilliant-numbers
deleted file mode 120000
index 07a95dbd77..0000000000
--- a/Lang/Free-Pascal-Lazarus/Brilliant-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Brilliant-numbers/Free-Pascal-Lazarus
\ No newline at end of file
diff --git a/Lang/Free-Pascal-Lazarus/Cistercian-numerals b/Lang/Free-Pascal-Lazarus/Cistercian-numerals
deleted file mode 120000
index e09b44b1be..0000000000
--- a/Lang/Free-Pascal-Lazarus/Cistercian-numerals
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cistercian-numerals/Free-Pascal-Lazarus
\ No newline at end of file
diff --git a/Lang/Free-Pascal-Lazarus/Closures-Value-capture b/Lang/Free-Pascal-Lazarus/Closures-Value-capture
deleted file mode 120000
index 4b2493493f..0000000000
--- a/Lang/Free-Pascal-Lazarus/Closures-Value-capture
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Closures-Value-capture/Free-Pascal-Lazarus
\ No newline at end of file
diff --git a/Lang/Free-Pascal-Lazarus/DNS-query b/Lang/Free-Pascal-Lazarus/DNS-query
deleted file mode 120000
index f7c79b4afe..0000000000
--- a/Lang/Free-Pascal-Lazarus/DNS-query
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/DNS-query/Free-Pascal-Lazarus
\ No newline at end of file
diff --git a/Lang/Free-Pascal-Lazarus/Duffinian-numbers b/Lang/Free-Pascal-Lazarus/Duffinian-numbers
deleted file mode 120000
index d54184ff4d..0000000000
--- a/Lang/Free-Pascal-Lazarus/Duffinian-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Duffinian-numbers/Free-Pascal-Lazarus
\ No newline at end of file
diff --git a/Lang/Free-Pascal-Lazarus/Dutch-national-flag-problem b/Lang/Free-Pascal-Lazarus/Dutch-national-flag-problem
deleted file mode 120000
index da47f4535f..0000000000
--- a/Lang/Free-Pascal-Lazarus/Dutch-national-flag-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dutch-national-flag-problem/Free-Pascal-Lazarus
\ No newline at end of file
diff --git a/Lang/Free-Pascal-Lazarus/Ethiopian-multiplication b/Lang/Free-Pascal-Lazarus/Ethiopian-multiplication
deleted file mode 120000
index 845adfef13..0000000000
--- a/Lang/Free-Pascal-Lazarus/Ethiopian-multiplication
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ethiopian-multiplication/Free-Pascal-Lazarus
\ No newline at end of file
diff --git a/Lang/Free-Pascal-Lazarus/Fractal-tree b/Lang/Free-Pascal-Lazarus/Fractal-tree
deleted file mode 120000
index c2081a0860..0000000000
--- a/Lang/Free-Pascal-Lazarus/Fractal-tree
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fractal-tree/Free-Pascal-Lazarus
\ No newline at end of file
diff --git a/Lang/Free-Pascal-Lazarus/Gamma-function b/Lang/Free-Pascal-Lazarus/Gamma-function
deleted file mode 120000
index 9c45231564..0000000000
--- a/Lang/Free-Pascal-Lazarus/Gamma-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Gamma-function/Free-Pascal-Lazarus
\ No newline at end of file
diff --git a/Lang/Free-Pascal-Lazarus/Hickerson-series-of-almost-integers b/Lang/Free-Pascal-Lazarus/Hickerson-series-of-almost-integers
deleted file mode 120000
index e8c446d1f2..0000000000
--- a/Lang/Free-Pascal-Lazarus/Hickerson-series-of-almost-integers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hickerson-series-of-almost-integers/Free-Pascal-Lazarus
\ No newline at end of file
diff --git a/Lang/Free-Pascal-Lazarus/Kaprekar-numbers b/Lang/Free-Pascal-Lazarus/Kaprekar-numbers
deleted file mode 120000
index 7aca236c6b..0000000000
--- a/Lang/Free-Pascal-Lazarus/Kaprekar-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Kaprekar-numbers/Free-Pascal-Lazarus
\ No newline at end of file
diff --git a/Lang/Free-Pascal-Lazarus/Largest-number-divisible-by-its-digits b/Lang/Free-Pascal-Lazarus/Largest-number-divisible-by-its-digits
deleted file mode 120000
index 702d65adc8..0000000000
--- a/Lang/Free-Pascal-Lazarus/Largest-number-divisible-by-its-digits
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Largest-number-divisible-by-its-digits/Free-Pascal-Lazarus
\ No newline at end of file
diff --git a/Lang/Free-Pascal-Lazarus/Leap-year b/Lang/Free-Pascal-Lazarus/Leap-year
deleted file mode 120000
index 1dc9648945..0000000000
--- a/Lang/Free-Pascal-Lazarus/Leap-year
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Leap-year/Free-Pascal-Lazarus
\ No newline at end of file
diff --git a/Lang/Free-Pascal-Lazarus/Leonardo-numbers b/Lang/Free-Pascal-Lazarus/Leonardo-numbers
deleted file mode 120000
index 5fc9b6dc54..0000000000
--- a/Lang/Free-Pascal-Lazarus/Leonardo-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Leonardo-numbers/Free-Pascal-Lazarus
\ No newline at end of file
diff --git a/Lang/Free-Pascal-Lazarus/Levenshtein-distance b/Lang/Free-Pascal-Lazarus/Levenshtein-distance
deleted file mode 120000
index eebdca8158..0000000000
--- a/Lang/Free-Pascal-Lazarus/Levenshtein-distance
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Levenshtein-distance/Free-Pascal-Lazarus
\ No newline at end of file
diff --git a/Lang/Free-Pascal-Lazarus/Map-range b/Lang/Free-Pascal-Lazarus/Map-range
deleted file mode 120000
index 65b07f3cc6..0000000000
--- a/Lang/Free-Pascal-Lazarus/Map-range
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Map-range/Free-Pascal-Lazarus
\ No newline at end of file
diff --git a/Lang/Free-Pascal-Lazarus/Numbers-with-equal-rises-and-falls b/Lang/Free-Pascal-Lazarus/Numbers-with-equal-rises-and-falls
deleted file mode 120000
index d3988596ad..0000000000
--- a/Lang/Free-Pascal-Lazarus/Numbers-with-equal-rises-and-falls
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Numbers-with-equal-rises-and-falls/Free-Pascal-Lazarus
\ No newline at end of file
diff --git a/Lang/Free-Pascal-Lazarus/Ordered-words b/Lang/Free-Pascal-Lazarus/Ordered-words
deleted file mode 120000
index ec364f330e..0000000000
--- a/Lang/Free-Pascal-Lazarus/Ordered-words
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ordered-words/Free-Pascal-Lazarus
\ No newline at end of file
diff --git a/Lang/Free-Pascal-Lazarus/Pancake-numbers b/Lang/Free-Pascal-Lazarus/Pancake-numbers
deleted file mode 120000
index e82c81624b..0000000000
--- a/Lang/Free-Pascal-Lazarus/Pancake-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pancake-numbers/Free-Pascal-Lazarus
\ No newline at end of file
diff --git a/Lang/Free-Pascal-Lazarus/Parallel-brute-force b/Lang/Free-Pascal-Lazarus/Parallel-brute-force
deleted file mode 120000
index cdb4d87e7a..0000000000
--- a/Lang/Free-Pascal-Lazarus/Parallel-brute-force
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Parallel-brute-force/Free-Pascal-Lazarus
\ No newline at end of file
diff --git a/Lang/Free-Pascal-Lazarus/Parallel-calculations b/Lang/Free-Pascal-Lazarus/Parallel-calculations
deleted file mode 120000
index 191ed1dae7..0000000000
--- a/Lang/Free-Pascal-Lazarus/Parallel-calculations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Parallel-calculations/Free-Pascal-Lazarus
\ No newline at end of file
diff --git a/Lang/Free-Pascal-Lazarus/Prime-decomposition b/Lang/Free-Pascal-Lazarus/Prime-decomposition
deleted file mode 120000
index 358a72f6ea..0000000000
--- a/Lang/Free-Pascal-Lazarus/Prime-decomposition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Prime-decomposition/Free-Pascal-Lazarus
\ No newline at end of file
diff --git a/Lang/Free-Pascal-Lazarus/Probabilistic-choice b/Lang/Free-Pascal-Lazarus/Probabilistic-choice
deleted file mode 120000
index 0f85f5937f..0000000000
--- a/Lang/Free-Pascal-Lazarus/Probabilistic-choice
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Probabilistic-choice/Free-Pascal-Lazarus
\ No newline at end of file
diff --git a/Lang/Free-Pascal-Lazarus/Sorting-algorithms-Shell-sort b/Lang/Free-Pascal-Lazarus/Sorting-algorithms-Shell-sort
deleted file mode 120000
index e5c8120991..0000000000
--- a/Lang/Free-Pascal-Lazarus/Sorting-algorithms-Shell-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Shell-sort/Free-Pascal-Lazarus
\ No newline at end of file
diff --git a/Lang/Free-Pascal-Lazarus/Square-free-integers b/Lang/Free-Pascal-Lazarus/Square-free-integers
deleted file mode 120000
index 88fe83b6b1..0000000000
--- a/Lang/Free-Pascal-Lazarus/Square-free-integers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Square-free-integers/Free-Pascal-Lazarus
\ No newline at end of file
diff --git a/Lang/FreeBASIC/15-puzzle-solver b/Lang/FreeBASIC/15-puzzle-solver
deleted file mode 120000
index aac40387ff..0000000000
--- a/Lang/FreeBASIC/15-puzzle-solver
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/15-puzzle-solver/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/24-game-Solve b/Lang/FreeBASIC/24-game-Solve
deleted file mode 120000
index 68ad0335d9..0000000000
--- a/Lang/FreeBASIC/24-game-Solve
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/24-game-Solve/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/ADFGVX-cipher b/Lang/FreeBASIC/ADFGVX-cipher
deleted file mode 120000
index 43433b4959..0000000000
--- a/Lang/FreeBASIC/ADFGVX-cipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/ADFGVX-cipher/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/ASCII-art-diagram-converter b/Lang/FreeBASIC/ASCII-art-diagram-converter
deleted file mode 120000
index f349074235..0000000000
--- a/Lang/FreeBASIC/ASCII-art-diagram-converter
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/ASCII-art-diagram-converter/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/AVL-tree b/Lang/FreeBASIC/AVL-tree
deleted file mode 120000
index 7500f1c637..0000000000
--- a/Lang/FreeBASIC/AVL-tree
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/AVL-tree/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Abbreviations-simple b/Lang/FreeBASIC/Abbreviations-simple
deleted file mode 120000
index de9c8f171b..0000000000
--- a/Lang/FreeBASIC/Abbreviations-simple
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abbreviations-simple/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Abelian-sandpile-model-Identity b/Lang/FreeBASIC/Abelian-sandpile-model-Identity
deleted file mode 120000
index e9077c65f8..0000000000
--- a/Lang/FreeBASIC/Abelian-sandpile-model-Identity
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abelian-sandpile-model-Identity/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Algebraic-data-types b/Lang/FreeBASIC/Algebraic-data-types
deleted file mode 120000
index f2fce8f3dc..0000000000
--- a/Lang/FreeBASIC/Algebraic-data-types
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Algebraic-data-types/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Almkvist-Giullera-formula-for-pi b/Lang/FreeBASIC/Almkvist-Giullera-formula-for-pi
deleted file mode 120000
index 37082cc7bb..0000000000
--- a/Lang/FreeBASIC/Almkvist-Giullera-formula-for-pi
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Almkvist-Giullera-formula-for-pi/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Arithmetic-Rational b/Lang/FreeBASIC/Arithmetic-Rational
deleted file mode 120000
index 3182d3a125..0000000000
--- a/Lang/FreeBASIC/Arithmetic-Rational
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-Rational/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Arithmetic-derivative b/Lang/FreeBASIC/Arithmetic-derivative
deleted file mode 120000
index 2a22a10780..0000000000
--- a/Lang/FreeBASIC/Arithmetic-derivative
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-derivative/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Associative-array-Merging b/Lang/FreeBASIC/Associative-array-Merging
deleted file mode 120000
index 77edeb4249..0000000000
--- a/Lang/FreeBASIC/Associative-array-Merging
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Associative-array-Merging/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/B-zier-curves-Intersections b/Lang/FreeBASIC/B-zier-curves-Intersections
deleted file mode 120000
index e1718d7dc9..0000000000
--- a/Lang/FreeBASIC/B-zier-curves-Intersections
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/B-zier-curves-Intersections/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Babylonian-spiral b/Lang/FreeBASIC/Babylonian-spiral
deleted file mode 120000
index e141e5d456..0000000000
--- a/Lang/FreeBASIC/Babylonian-spiral
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Babylonian-spiral/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Bifid-cipher b/Lang/FreeBASIC/Bifid-cipher
deleted file mode 120000
index 6fc87c7ae7..0000000000
--- a/Lang/FreeBASIC/Bifid-cipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bifid-cipher/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Bioinformatics-Global-alignment b/Lang/FreeBASIC/Bioinformatics-Global-alignment
deleted file mode 120000
index 93fb335c5b..0000000000
--- a/Lang/FreeBASIC/Bioinformatics-Global-alignment
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bioinformatics-Global-alignment/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Bioinformatics-base-count b/Lang/FreeBASIC/Bioinformatics-base-count
new file mode 120000
index 0000000000..89403f2018
--- /dev/null
+++ b/Lang/FreeBASIC/Bioinformatics-base-count
@@ -0,0 +1 @@
+../../Task/Bioinformatics-base-count/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Bitcoin-public-point-to-address b/Lang/FreeBASIC/Bitcoin-public-point-to-address
deleted file mode 120000
index 6ff9b61a5b..0000000000
--- a/Lang/FreeBASIC/Bitcoin-public-point-to-address
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bitcoin-public-point-to-address/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Bitmap-Histogram b/Lang/FreeBASIC/Bitmap-Histogram
deleted file mode 120000
index dc9da15219..0000000000
--- a/Lang/FreeBASIC/Bitmap-Histogram
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bitmap-Histogram/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Bitmap-PPM-conversion-through-a-pipe b/Lang/FreeBASIC/Bitmap-PPM-conversion-through-a-pipe
deleted file mode 120000
index 9082778f9e..0000000000
--- a/Lang/FreeBASIC/Bitmap-PPM-conversion-through-a-pipe
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bitmap-PPM-conversion-through-a-pipe/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Bitmap-Read-an-image-through-a-pipe b/Lang/FreeBASIC/Bitmap-Read-an-image-through-a-pipe
deleted file mode 120000
index 17dd1b6040..0000000000
--- a/Lang/FreeBASIC/Bitmap-Read-an-image-through-a-pipe
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bitmap-Read-an-image-through-a-pipe/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Bitmap-Write-a-PPM-file b/Lang/FreeBASIC/Bitmap-Write-a-PPM-file
deleted file mode 120000
index 91057d85e5..0000000000
--- a/Lang/FreeBASIC/Bitmap-Write-a-PPM-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bitmap-Write-a-PPM-file/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Brace-expansion b/Lang/FreeBASIC/Brace-expansion
deleted file mode 120000
index b08a413ab2..0000000000
--- a/Lang/FreeBASIC/Brace-expansion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Brace-expansion/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Bulls-and-cows-Player b/Lang/FreeBASIC/Bulls-and-cows-Player
deleted file mode 120000
index 3f30549ded..0000000000
--- a/Lang/FreeBASIC/Bulls-and-cows-Player
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bulls-and-cows-Player/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Calkin-Wilf-sequence b/Lang/FreeBASIC/Calkin-Wilf-sequence
new file mode 120000
index 0000000000..0cfeafa7e2
--- /dev/null
+++ b/Lang/FreeBASIC/Calkin-Wilf-sequence
@@ -0,0 +1 @@
+../../Task/Calkin-Wilf-sequence/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Canny-edge-detector b/Lang/FreeBASIC/Canny-edge-detector
deleted file mode 120000
index 17dd124847..0000000000
--- a/Lang/FreeBASIC/Canny-edge-detector
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Canny-edge-detector/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Catmull-Clark-subdivision-surface b/Lang/FreeBASIC/Catmull-Clark-subdivision-surface
deleted file mode 120000
index aa2f6e5ed9..0000000000
--- a/Lang/FreeBASIC/Catmull-Clark-subdivision-surface
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Catmull-Clark-subdivision-surface/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Chat-server b/Lang/FreeBASIC/Chat-server
deleted file mode 120000
index 59f06de348..0000000000
--- a/Lang/FreeBASIC/Chat-server
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Chat-server/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Cistercian-numerals b/Lang/FreeBASIC/Cistercian-numerals
deleted file mode 120000
index ceb56b6604..0000000000
--- a/Lang/FreeBASIC/Cistercian-numerals
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cistercian-numerals/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Color-quantization b/Lang/FreeBASIC/Color-quantization
deleted file mode 120000
index ddc5eaabb7..0000000000
--- a/Lang/FreeBASIC/Color-quantization
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Color-quantization/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Colorful-numbers b/Lang/FreeBASIC/Colorful-numbers
deleted file mode 120000
index dcf0a876c1..0000000000
--- a/Lang/FreeBASIC/Colorful-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Colorful-numbers/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Compiler-AST-interpreter b/Lang/FreeBASIC/Compiler-AST-interpreter
deleted file mode 120000
index ea89d91369..0000000000
--- a/Lang/FreeBASIC/Compiler-AST-interpreter
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compiler-AST-interpreter/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Compiler-code-generator b/Lang/FreeBASIC/Compiler-code-generator
deleted file mode 120000
index 836b1482c2..0000000000
--- a/Lang/FreeBASIC/Compiler-code-generator
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compiler-code-generator/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Compiler-syntax-analyzer b/Lang/FreeBASIC/Compiler-syntax-analyzer
deleted file mode 120000
index a7d7204b01..0000000000
--- a/Lang/FreeBASIC/Compiler-syntax-analyzer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compiler-syntax-analyzer/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Compiler-virtual-machine-interpreter b/Lang/FreeBASIC/Compiler-virtual-machine-interpreter
deleted file mode 120000
index 18e70488f2..0000000000
--- a/Lang/FreeBASIC/Compiler-virtual-machine-interpreter
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compiler-virtual-machine-interpreter/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Constrained-genericity b/Lang/FreeBASIC/Constrained-genericity
deleted file mode 120000
index 1fc68e6907..0000000000
--- a/Lang/FreeBASIC/Constrained-genericity
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Constrained-genericity/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Continued-fraction-Arithmetic-G-matrix-ng-continued-fraction-n- b/Lang/FreeBASIC/Continued-fraction-Arithmetic-G-matrix-ng-continued-fraction-n-
deleted file mode 120000
index e2defb3109..0000000000
--- a/Lang/FreeBASIC/Continued-fraction-Arithmetic-G-matrix-ng-continued-fraction-n-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Continued-fraction-Arithmetic-G-matrix-ng-continued-fraction-n-/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Cut-a-rectangle b/Lang/FreeBASIC/Cut-a-rectangle
deleted file mode 120000
index 16e664db93..0000000000
--- a/Lang/FreeBASIC/Cut-a-rectangle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cut-a-rectangle/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Cyclotomic-polynomial b/Lang/FreeBASIC/Cyclotomic-polynomial
deleted file mode 120000
index 82e1fdeb03..0000000000
--- a/Lang/FreeBASIC/Cyclotomic-polynomial
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cyclotomic-polynomial/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/De-Bruijn-sequences b/Lang/FreeBASIC/De-Bruijn-sequences
deleted file mode 120000
index 2f6e2651ca..0000000000
--- a/Lang/FreeBASIC/De-Bruijn-sequences
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/De-Bruijn-sequences/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Death-Star b/Lang/FreeBASIC/Death-Star
deleted file mode 120000
index b45f2416c8..0000000000
--- a/Lang/FreeBASIC/Death-Star
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Death-Star/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Deconvolution-2D+ b/Lang/FreeBASIC/Deconvolution-2D+
deleted file mode 120000
index 2a10e72230..0000000000
--- a/Lang/FreeBASIC/Deconvolution-2D+
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Deconvolution-2D+/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Dijkstras-algorithm b/Lang/FreeBASIC/Dijkstras-algorithm
deleted file mode 120000
index 4465c347e7..0000000000
--- a/Lang/FreeBASIC/Dijkstras-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dijkstras-algorithm/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Dining-philosophers b/Lang/FreeBASIC/Dining-philosophers
deleted file mode 120000
index 5d616c69b5..0000000000
--- a/Lang/FreeBASIC/Dining-philosophers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dining-philosophers/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Display-an-outline-as-a-nested-table b/Lang/FreeBASIC/Display-an-outline-as-a-nested-table
deleted file mode 120000
index e1fe23aa03..0000000000
--- a/Lang/FreeBASIC/Display-an-outline-as-a-nested-table
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Display-an-outline-as-a-nested-table/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Distance-and-Bearing b/Lang/FreeBASIC/Distance-and-Bearing
deleted file mode 120000
index 14b1500a35..0000000000
--- a/Lang/FreeBASIC/Distance-and-Bearing
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Distance-and-Bearing/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Distributed-programming b/Lang/FreeBASIC/Distributed-programming
deleted file mode 120000
index 3c9ea14752..0000000000
--- a/Lang/FreeBASIC/Distributed-programming
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Distributed-programming/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Distribution-of-0-digits-in-factorial-series b/Lang/FreeBASIC/Distribution-of-0-digits-in-factorial-series
deleted file mode 120000
index caef600e25..0000000000
--- a/Lang/FreeBASIC/Distribution-of-0-digits-in-factorial-series
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Distribution-of-0-digits-in-factorial-series/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Dominoes b/Lang/FreeBASIC/Dominoes
deleted file mode 120000
index 46d9dcf5f4..0000000000
--- a/Lang/FreeBASIC/Dominoes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dominoes/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Echo-server b/Lang/FreeBASIC/Echo-server
deleted file mode 120000
index af11371400..0000000000
--- a/Lang/FreeBASIC/Echo-server
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Echo-server/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Elementary-cellular-automaton-Infinite-length b/Lang/FreeBASIC/Elementary-cellular-automaton-Infinite-length
deleted file mode 120000
index ab22fce8e1..0000000000
--- a/Lang/FreeBASIC/Elementary-cellular-automaton-Infinite-length
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Elementary-cellular-automaton-Infinite-length/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Elliptic-curve-arithmetic b/Lang/FreeBASIC/Elliptic-curve-arithmetic
deleted file mode 120000
index ab0b3f0aed..0000000000
--- a/Lang/FreeBASIC/Elliptic-curve-arithmetic
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Elliptic-curve-arithmetic/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Executable-library b/Lang/FreeBASIC/Executable-library
deleted file mode 120000
index ece6e47b6f..0000000000
--- a/Lang/FreeBASIC/Executable-library
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Executable-library/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Execute-Computer-Zero b/Lang/FreeBASIC/Execute-Computer-Zero
deleted file mode 120000
index 018dffe9b4..0000000000
--- a/Lang/FreeBASIC/Execute-Computer-Zero
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Execute-Computer-Zero/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Execute-SNUSP b/Lang/FreeBASIC/Execute-SNUSP
deleted file mode 120000
index 7b179aedb8..0000000000
--- a/Lang/FreeBASIC/Execute-SNUSP
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Execute-SNUSP/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Execute-a-Markov-algorithm b/Lang/FreeBASIC/Execute-a-Markov-algorithm
deleted file mode 120000
index 7f61263c19..0000000000
--- a/Lang/FreeBASIC/Execute-a-Markov-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Execute-a-Markov-algorithm/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Faces-from-a-mesh b/Lang/FreeBASIC/Faces-from-a-mesh
deleted file mode 120000
index 33d860451f..0000000000
--- a/Lang/FreeBASIC/Faces-from-a-mesh
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Faces-from-a-mesh/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Factorial-base-numbers-indexing-permutations-of-a-collection b/Lang/FreeBASIC/Factorial-base-numbers-indexing-permutations-of-a-collection
deleted file mode 120000
index 1f2b24105a..0000000000
--- a/Lang/FreeBASIC/Factorial-base-numbers-indexing-permutations-of-a-collection
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factorial-base-numbers-indexing-permutations-of-a-collection/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Fermat-numbers b/Lang/FreeBASIC/Fermat-numbers
deleted file mode 120000
index b6ff867057..0000000000
--- a/Lang/FreeBASIC/Fermat-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fermat-numbers/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/File-size-distribution b/Lang/FreeBASIC/File-size-distribution
deleted file mode 120000
index fa04d214bc..0000000000
--- a/Lang/FreeBASIC/File-size-distribution
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/File-size-distribution/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Find-duplicate-files b/Lang/FreeBASIC/Find-duplicate-files
deleted file mode 120000
index f2becdf037..0000000000
--- a/Lang/FreeBASIC/Find-duplicate-files
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Find-duplicate-files/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Find-largest-left-truncatable-prime-in-a-given-base b/Lang/FreeBASIC/Find-largest-left-truncatable-prime-in-a-given-base
deleted file mode 120000
index 90493830d8..0000000000
--- a/Lang/FreeBASIC/Find-largest-left-truncatable-prime-in-a-given-base
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Find-largest-left-truncatable-prime-in-a-given-base/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Four-is-the-number-of-letters-in-the-... b/Lang/FreeBASIC/Four-is-the-number-of-letters-in-the-...
deleted file mode 120000
index 7c1f37136c..0000000000
--- a/Lang/FreeBASIC/Four-is-the-number-of-letters-in-the-...
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Four-is-the-number-of-letters-in-the-.../FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Fraction-reduction b/Lang/FreeBASIC/Fraction-reduction
deleted file mode 120000
index fe901cf96d..0000000000
--- a/Lang/FreeBASIC/Fraction-reduction
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fraction-reduction/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Functional-coverage-tree b/Lang/FreeBASIC/Functional-coverage-tree
deleted file mode 120000
index 03b730b6d0..0000000000
--- a/Lang/FreeBASIC/Functional-coverage-tree
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Functional-coverage-tree/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Galton-box-animation b/Lang/FreeBASIC/Galton-box-animation
deleted file mode 120000
index d8550e96b6..0000000000
--- a/Lang/FreeBASIC/Galton-box-animation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Galton-box-animation/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Gotchas b/Lang/FreeBASIC/Gotchas
deleted file mode 120000
index 152b1da45f..0000000000
--- a/Lang/FreeBASIC/Gotchas
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Gotchas/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Graph-colouring b/Lang/FreeBASIC/Graph-colouring
deleted file mode 120000
index 2b6f6e444d..0000000000
--- a/Lang/FreeBASIC/Graph-colouring
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Graph-colouring/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/HTTPS b/Lang/FreeBASIC/HTTPS
deleted file mode 120000
index ffa1e6ee82..0000000000
--- a/Lang/FreeBASIC/HTTPS
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/HTTPS/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/HTTPS-Authenticated b/Lang/FreeBASIC/HTTPS-Authenticated
deleted file mode 120000
index 3da86c1cef..0000000000
--- a/Lang/FreeBASIC/HTTPS-Authenticated
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/HTTPS-Authenticated/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/HTTPS-Client-authenticated b/Lang/FreeBASIC/HTTPS-Client-authenticated
deleted file mode 120000
index 8c2cbfcd86..0000000000
--- a/Lang/FreeBASIC/HTTPS-Client-authenticated
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/HTTPS-Client-authenticated/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Hello-world-Web-server b/Lang/FreeBASIC/Hello-world-Web-server
deleted file mode 120000
index 25d52ccee6..0000000000
--- a/Lang/FreeBASIC/Hello-world-Web-server
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Web-server/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Hex-words b/Lang/FreeBASIC/Hex-words
deleted file mode 120000
index fa25607a2e..0000000000
--- a/Lang/FreeBASIC/Hex-words
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hex-words/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/History-variables b/Lang/FreeBASIC/History-variables
deleted file mode 120000
index 68f4bcd858..0000000000
--- a/Lang/FreeBASIC/History-variables
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/History-variables/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Honeycombs b/Lang/FreeBASIC/Honeycombs
deleted file mode 120000
index 12b1cd0046..0000000000
--- a/Lang/FreeBASIC/Honeycombs
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Honeycombs/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Hough-transform b/Lang/FreeBASIC/Hough-transform
deleted file mode 120000
index b825046529..0000000000
--- a/Lang/FreeBASIC/Hough-transform
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hough-transform/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Im-a-software-engineer-get-me-out-of-here b/Lang/FreeBASIC/Im-a-software-engineer-get-me-out-of-here
deleted file mode 120000
index 2169aad43b..0000000000
--- a/Lang/FreeBASIC/Im-a-software-engineer-get-me-out-of-here
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Im-a-software-engineer-get-me-out-of-here/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Image-convolution b/Lang/FreeBASIC/Image-convolution
deleted file mode 120000
index 5f1451fadd..0000000000
--- a/Lang/FreeBASIC/Image-convolution
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Image-convolution/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Imaginary-base-numbers b/Lang/FreeBASIC/Imaginary-base-numbers
deleted file mode 120000
index 00ee9d8fe6..0000000000
--- a/Lang/FreeBASIC/Imaginary-base-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Imaginary-base-numbers/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Intersecting-number-wheels b/Lang/FreeBASIC/Intersecting-number-wheels
deleted file mode 120000
index 42313ae624..0000000000
--- a/Lang/FreeBASIC/Intersecting-number-wheels
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Intersecting-number-wheels/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Inverted-index b/Lang/FreeBASIC/Inverted-index
deleted file mode 120000
index affc1bf23c..0000000000
--- a/Lang/FreeBASIC/Inverted-index
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Inverted-index/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Isograms-and-heterograms b/Lang/FreeBASIC/Isograms-and-heterograms
deleted file mode 120000
index c142330285..0000000000
--- a/Lang/FreeBASIC/Isograms-and-heterograms
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Isograms-and-heterograms/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Jaro-Winkler-distance b/Lang/FreeBASIC/Jaro-Winkler-distance
deleted file mode 120000
index 567e61dfba..0000000000
--- a/Lang/FreeBASIC/Jaro-Winkler-distance
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jaro-Winkler-distance/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Juggler-sequence b/Lang/FreeBASIC/Juggler-sequence
deleted file mode 120000
index 5aaf9a794f..0000000000
--- a/Lang/FreeBASIC/Juggler-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Juggler-sequence/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/K-d-tree b/Lang/FreeBASIC/K-d-tree
deleted file mode 120000
index f6319abaa1..0000000000
--- a/Lang/FreeBASIC/K-d-tree
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/K-d-tree/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Knuths-algorithm-S b/Lang/FreeBASIC/Knuths-algorithm-S
deleted file mode 120000
index 720a4a3a7e..0000000000
--- a/Lang/FreeBASIC/Knuths-algorithm-S
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Knuths-algorithm-S/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Knuths-power-tree b/Lang/FreeBASIC/Knuths-power-tree
deleted file mode 120000
index b6075609dd..0000000000
--- a/Lang/FreeBASIC/Knuths-power-tree
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Knuths-power-tree/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Kolakoski-sequence b/Lang/FreeBASIC/Kolakoski-sequence
deleted file mode 120000
index fce085b91c..0000000000
--- a/Lang/FreeBASIC/Kolakoski-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Kolakoski-sequence/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Kosaraju b/Lang/FreeBASIC/Kosaraju
deleted file mode 120000
index b8d8396338..0000000000
--- a/Lang/FreeBASIC/Kosaraju
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Kosaraju/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/LU-decomposition b/Lang/FreeBASIC/LU-decomposition
deleted file mode 120000
index a239ac6c87..0000000000
--- a/Lang/FreeBASIC/LU-decomposition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/LU-decomposition/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Last-letter-first-letter b/Lang/FreeBASIC/Last-letter-first-letter
deleted file mode 120000
index 436ebfb8b9..0000000000
--- a/Lang/FreeBASIC/Last-letter-first-letter
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Last-letter-first-letter/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Latin-Squares-in-reduced-form b/Lang/FreeBASIC/Latin-Squares-in-reduced-form
deleted file mode 120000
index db9e5d8a88..0000000000
--- a/Lang/FreeBASIC/Latin-Squares-in-reduced-form
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Latin-Squares-in-reduced-form/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/List-rooted-trees b/Lang/FreeBASIC/List-rooted-trees
deleted file mode 120000
index d641d1dcf0..0000000000
--- a/Lang/FreeBASIC/List-rooted-trees
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/List-rooted-trees/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Lucky-and-even-lucky-numbers b/Lang/FreeBASIC/Lucky-and-even-lucky-numbers
deleted file mode 120000
index ab68b27195..0000000000
--- a/Lang/FreeBASIC/Lucky-and-even-lucky-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Lucky-and-even-lucky-numbers/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Mayan-calendar b/Lang/FreeBASIC/Mayan-calendar
deleted file mode 120000
index 4de11e93f6..0000000000
--- a/Lang/FreeBASIC/Mayan-calendar
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Mayan-calendar/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Maze-solving b/Lang/FreeBASIC/Maze-solving
deleted file mode 120000
index 2140d087ef..0000000000
--- a/Lang/FreeBASIC/Maze-solving
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Maze-solving/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Median-filter b/Lang/FreeBASIC/Median-filter
deleted file mode 120000
index a0d5eec8a2..0000000000
--- a/Lang/FreeBASIC/Median-filter
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Median-filter/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Meissel-Mertens-constant b/Lang/FreeBASIC/Meissel-Mertens-constant
new file mode 120000
index 0000000000..f9f037c2ea
--- /dev/null
+++ b/Lang/FreeBASIC/Meissel-Mertens-constant
@@ -0,0 +1 @@
+../../Task/Meissel-Mertens-constant/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Metallic-ratios b/Lang/FreeBASIC/Metallic-ratios
deleted file mode 120000
index 46551c0b17..0000000000
--- a/Lang/FreeBASIC/Metallic-ratios
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Metallic-ratios/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Miller-Rabin-primality-test b/Lang/FreeBASIC/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..31ca057e36
--- /dev/null
+++ b/Lang/FreeBASIC/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Multiplicative-order b/Lang/FreeBASIC/Multiplicative-order
deleted file mode 120000
index 1ba98d9611..0000000000
--- a/Lang/FreeBASIC/Multiplicative-order
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Multiplicative-order/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/N-smooth-numbers b/Lang/FreeBASIC/N-smooth-numbers
deleted file mode 120000
index 7dad0a8519..0000000000
--- a/Lang/FreeBASIC/N-smooth-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/N-smooth-numbers/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Natural-sorting b/Lang/FreeBASIC/Natural-sorting
deleted file mode 120000
index 00267c2e93..0000000000
--- a/Lang/FreeBASIC/Natural-sorting
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Natural-sorting/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Nested-templated-data b/Lang/FreeBASIC/Nested-templated-data
deleted file mode 120000
index 064256a2d8..0000000000
--- a/Lang/FreeBASIC/Nested-templated-data
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nested-templated-data/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Non-transitive-dice b/Lang/FreeBASIC/Non-transitive-dice
deleted file mode 120000
index a320f65fd4..0000000000
--- a/Lang/FreeBASIC/Non-transitive-dice
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Non-transitive-dice/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Nonoblock b/Lang/FreeBASIC/Nonoblock
deleted file mode 120000
index 18e71abc62..0000000000
--- a/Lang/FreeBASIC/Nonoblock
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nonoblock/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Numerical-and-alphabetical-suffixes b/Lang/FreeBASIC/Numerical-and-alphabetical-suffixes
deleted file mode 120000
index f6a2f778c0..0000000000
--- a/Lang/FreeBASIC/Numerical-and-alphabetical-suffixes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Numerical-and-alphabetical-suffixes/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/OLE-automation b/Lang/FreeBASIC/OLE-automation
deleted file mode 120000
index eb6c2ccae6..0000000000
--- a/Lang/FreeBASIC/OLE-automation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/OLE-automation/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Order-disjoint-list-items b/Lang/FreeBASIC/Order-disjoint-list-items
deleted file mode 120000
index d5dc6c71fd..0000000000
--- a/Lang/FreeBASIC/Order-disjoint-list-items
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Order-disjoint-list-items/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/P-value-correction b/Lang/FreeBASIC/P-value-correction
deleted file mode 120000
index a2f7c2e1e2..0000000000
--- a/Lang/FreeBASIC/P-value-correction
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/P-value-correction/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Padovan-sequence b/Lang/FreeBASIC/Padovan-sequence
deleted file mode 120000
index efb5ea56df..0000000000
--- a/Lang/FreeBASIC/Padovan-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Padovan-sequence/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Parse-an-IP-Address b/Lang/FreeBASIC/Parse-an-IP-Address
deleted file mode 120000
index 4b51728d74..0000000000
--- a/Lang/FreeBASIC/Parse-an-IP-Address
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Parse-an-IP-Address/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Parsing-RPN-to-infix-conversion b/Lang/FreeBASIC/Parsing-RPN-to-infix-conversion
deleted file mode 120000
index d524880dde..0000000000
--- a/Lang/FreeBASIC/Parsing-RPN-to-infix-conversion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Parsing-RPN-to-infix-conversion/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Parsing-Shunting-yard-algorithm b/Lang/FreeBASIC/Parsing-Shunting-yard-algorithm
deleted file mode 120000
index c598b75c18..0000000000
--- a/Lang/FreeBASIC/Parsing-Shunting-yard-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Parsing-Shunting-yard-algorithm/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Particle-fountain b/Lang/FreeBASIC/Particle-fountain
deleted file mode 120000
index e93e8b964f..0000000000
--- a/Lang/FreeBASIC/Particle-fountain
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Particle-fountain/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Partition-an-integer-x-into-n-primes b/Lang/FreeBASIC/Partition-an-integer-x-into-n-primes
deleted file mode 120000
index 1e3ac14a3f..0000000000
--- a/Lang/FreeBASIC/Partition-an-integer-x-into-n-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Partition-an-integer-x-into-n-primes/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Pentagram b/Lang/FreeBASIC/Pentagram
deleted file mode 120000
index 60996db876..0000000000
--- a/Lang/FreeBASIC/Pentagram
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pentagram/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Pentomino-tiling b/Lang/FreeBASIC/Pentomino-tiling
deleted file mode 120000
index 684a3829b3..0000000000
--- a/Lang/FreeBASIC/Pentomino-tiling
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pentomino-tiling/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Percentage-difference-between-images b/Lang/FreeBASIC/Percentage-difference-between-images
deleted file mode 120000
index 4b5a28d9b2..0000000000
--- a/Lang/FreeBASIC/Percentage-difference-between-images
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Percentage-difference-between-images/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Percolation-Bond-percolation b/Lang/FreeBASIC/Percolation-Bond-percolation
deleted file mode 120000
index 15d6381502..0000000000
--- a/Lang/FreeBASIC/Percolation-Bond-percolation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Percolation-Bond-percolation/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Percolation-Mean-cluster-density b/Lang/FreeBASIC/Percolation-Mean-cluster-density
deleted file mode 120000
index 6d9dff89ca..0000000000
--- a/Lang/FreeBASIC/Percolation-Mean-cluster-density
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Percolation-Mean-cluster-density/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Peripheral-drift-illusion b/Lang/FreeBASIC/Peripheral-drift-illusion
deleted file mode 120000
index 8fbf1d3fb4..0000000000
--- a/Lang/FreeBASIC/Peripheral-drift-illusion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Peripheral-drift-illusion/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Pig-the-dice-game-Player b/Lang/FreeBASIC/Pig-the-dice-game-Player
deleted file mode 120000
index 5766e4e5d7..0000000000
--- a/Lang/FreeBASIC/Pig-the-dice-game-Player
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pig-the-dice-game-Player/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Pinstripe-Printer b/Lang/FreeBASIC/Pinstripe-Printer
deleted file mode 120000
index be78fdd396..0000000000
--- a/Lang/FreeBASIC/Pinstripe-Printer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pinstripe-Printer/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Pisano-period b/Lang/FreeBASIC/Pisano-period
deleted file mode 120000
index 33961710c0..0000000000
--- a/Lang/FreeBASIC/Pisano-period
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pisano-period/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Play-recorded-sounds b/Lang/FreeBASIC/Play-recorded-sounds
deleted file mode 120000
index a80641ee64..0000000000
--- a/Lang/FreeBASIC/Play-recorded-sounds
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Play-recorded-sounds/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Primes---allocate-descendants-to-their-ancestors b/Lang/FreeBASIC/Primes---allocate-descendants-to-their-ancestors
deleted file mode 120000
index 49848d0592..0000000000
--- a/Lang/FreeBASIC/Primes---allocate-descendants-to-their-ancestors
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Primes---allocate-descendants-to-their-ancestors/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Pseudo-random-numbers-Combined-recursive-generator-MRG32k3a b/Lang/FreeBASIC/Pseudo-random-numbers-Combined-recursive-generator-MRG32k3a
deleted file mode 120000
index a870f104af..0000000000
--- a/Lang/FreeBASIC/Pseudo-random-numbers-Combined-recursive-generator-MRG32k3a
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pseudo-random-numbers-Combined-recursive-generator-MRG32k3a/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Pseudo-random-numbers-PCG32 b/Lang/FreeBASIC/Pseudo-random-numbers-PCG32
deleted file mode 120000
index 8a007fed91..0000000000
--- a/Lang/FreeBASIC/Pseudo-random-numbers-PCG32
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pseudo-random-numbers-PCG32/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Pseudo-random-numbers-Splitmix64 b/Lang/FreeBASIC/Pseudo-random-numbers-Splitmix64
deleted file mode 120000
index 233c73713f..0000000000
--- a/Lang/FreeBASIC/Pseudo-random-numbers-Splitmix64
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pseudo-random-numbers-Splitmix64/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Pseudo-random-numbers-Xorshift-star b/Lang/FreeBASIC/Pseudo-random-numbers-Xorshift-star
deleted file mode 120000
index a40446f6c8..0000000000
--- a/Lang/FreeBASIC/Pseudo-random-numbers-Xorshift-star
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pseudo-random-numbers-Xorshift-star/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/QR-decomposition b/Lang/FreeBASIC/QR-decomposition
deleted file mode 120000
index b4e25e341a..0000000000
--- a/Lang/FreeBASIC/QR-decomposition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/QR-decomposition/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Quaternion-type b/Lang/FreeBASIC/Quaternion-type
new file mode 120000
index 0000000000..f82c3a440e
--- /dev/null
+++ b/Lang/FreeBASIC/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Random-sentence-from-book b/Lang/FreeBASIC/Random-sentence-from-book
deleted file mode 120000
index 9834480618..0000000000
--- a/Lang/FreeBASIC/Random-sentence-from-book
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Random-sentence-from-book/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Reflection-List-methods b/Lang/FreeBASIC/Reflection-List-methods
deleted file mode 120000
index c065c312ec..0000000000
--- a/Lang/FreeBASIC/Reflection-List-methods
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Reflection-List-methods/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Reflection-List-properties b/Lang/FreeBASIC/Reflection-List-properties
deleted file mode 120000
index 0fd1a0e61e..0000000000
--- a/Lang/FreeBASIC/Reflection-List-properties
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Reflection-List-properties/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Rendezvous b/Lang/FreeBASIC/Rendezvous
deleted file mode 120000
index 1f852cdb53..0000000000
--- a/Lang/FreeBASIC/Rendezvous
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Rendezvous/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Repunit-primes b/Lang/FreeBASIC/Repunit-primes
deleted file mode 120000
index f9270140df..0000000000
--- a/Lang/FreeBASIC/Repunit-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Repunit-primes/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Rosetta-Code-Count-examples b/Lang/FreeBASIC/Rosetta-Code-Count-examples
deleted file mode 120000
index c38f53ad75..0000000000
--- a/Lang/FreeBASIC/Rosetta-Code-Count-examples
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Rosetta-Code-Count-examples/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Rosetta-Code-Find-bare-lang-tags b/Lang/FreeBASIC/Rosetta-Code-Find-bare-lang-tags
deleted file mode 120000
index c9a2ddc646..0000000000
--- a/Lang/FreeBASIC/Rosetta-Code-Find-bare-lang-tags
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Rosetta-Code-Find-bare-lang-tags/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Rosetta-Code-Find-unimplemented-tasks b/Lang/FreeBASIC/Rosetta-Code-Find-unimplemented-tasks
deleted file mode 120000
index 3f89d2cb42..0000000000
--- a/Lang/FreeBASIC/Rosetta-Code-Find-unimplemented-tasks
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Rosetta-Code-Find-unimplemented-tasks/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Rosetta-Code-Fix-code-tags b/Lang/FreeBASIC/Rosetta-Code-Fix-code-tags
deleted file mode 120000
index 53b438e29f..0000000000
--- a/Lang/FreeBASIC/Rosetta-Code-Fix-code-tags
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Rosetta-Code-Fix-code-tags/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Rosetta-Code-Rank-languages-by-popularity b/Lang/FreeBASIC/Rosetta-Code-Rank-languages-by-popularity
deleted file mode 120000
index 71d538269e..0000000000
--- a/Lang/FreeBASIC/Rosetta-Code-Rank-languages-by-popularity
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Rosetta-Code-Rank-languages-by-popularity/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Runtime-evaluation-In-an-environment b/Lang/FreeBASIC/Runtime-evaluation-In-an-environment
deleted file mode 120000
index 80c5a69b35..0000000000
--- a/Lang/FreeBASIC/Runtime-evaluation-In-an-environment
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Runtime-evaluation-In-an-environment/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/S-expressions b/Lang/FreeBASIC/S-expressions
deleted file mode 120000
index 9a014b780a..0000000000
--- a/Lang/FreeBASIC/S-expressions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/S-expressions/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/SOAP b/Lang/FreeBASIC/SOAP
deleted file mode 120000
index 927bc2295a..0000000000
--- a/Lang/FreeBASIC/SOAP
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/SOAP/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/SQL-based-authentication b/Lang/FreeBASIC/SQL-based-authentication
deleted file mode 120000
index 19b09b4fc4..0000000000
--- a/Lang/FreeBASIC/SQL-based-authentication
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/SQL-based-authentication/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Same-fringe b/Lang/FreeBASIC/Same-fringe
deleted file mode 120000
index 756cf55a7d..0000000000
--- a/Lang/FreeBASIC/Same-fringe
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Same-fringe/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Search-in-paragraphs-text b/Lang/FreeBASIC/Search-in-paragraphs-text
deleted file mode 120000
index bb0ecc2e40..0000000000
--- a/Lang/FreeBASIC/Search-in-paragraphs-text
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Search-in-paragraphs-text/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Sequence:-nth-number-with-exactly-n-divisors b/Lang/FreeBASIC/Sequence-nth-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/FreeBASIC/Sequence:-nth-number-with-exactly-n-divisors
rename to Lang/FreeBASIC/Sequence-nth-number-with-exactly-n-divisors
diff --git a/Lang/FreeBASIC/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors b/Lang/FreeBASIC/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
similarity index 100%
rename from Lang/FreeBASIC/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors
rename to Lang/FreeBASIC/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
diff --git a/Lang/FreeBASIC/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/FreeBASIC/Sequence-smallest-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/FreeBASIC/Sequence:-smallest-number-with-exactly-n-divisors
rename to Lang/FreeBASIC/Sequence-smallest-number-with-exactly-n-divisors
diff --git a/Lang/FreeBASIC/Set-puzzle b/Lang/FreeBASIC/Set-puzzle
deleted file mode 120000
index bdebb4443c..0000000000
--- a/Lang/FreeBASIC/Set-puzzle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Set-puzzle/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Simple-database b/Lang/FreeBASIC/Simple-database
deleted file mode 120000
index 8d38b56c2d..0000000000
--- a/Lang/FreeBASIC/Simple-database
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Simple-database/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Simulate-input-Keyboard b/Lang/FreeBASIC/Simulate-input-Keyboard
deleted file mode 120000
index 504f3b18d3..0000000000
--- a/Lang/FreeBASIC/Simulate-input-Keyboard
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Simulate-input-Keyboard/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Singular-value-decomposition b/Lang/FreeBASIC/Singular-value-decomposition
deleted file mode 120000
index efbf29e97a..0000000000
--- a/Lang/FreeBASIC/Singular-value-decomposition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Singular-value-decomposition/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Sisyphus-sequence b/Lang/FreeBASIC/Sisyphus-sequence
deleted file mode 120000
index 10074b9571..0000000000
--- a/Lang/FreeBASIC/Sisyphus-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sisyphus-sequence/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Sokoban b/Lang/FreeBASIC/Sokoban
deleted file mode 120000
index 4305dae36d..0000000000
--- a/Lang/FreeBASIC/Sokoban
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sokoban/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Solve-a-Hidato-puzzle b/Lang/FreeBASIC/Solve-a-Hidato-puzzle
deleted file mode 120000
index ad49dd7d72..0000000000
--- a/Lang/FreeBASIC/Solve-a-Hidato-puzzle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Solve-a-Hidato-puzzle/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Solve-a-Holy-Knights-tour b/Lang/FreeBASIC/Solve-a-Holy-Knights-tour
deleted file mode 120000
index f7260b5f2d..0000000000
--- a/Lang/FreeBASIC/Solve-a-Holy-Knights-tour
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Solve-a-Holy-Knights-tour/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Solve-a-Hopido-puzzle b/Lang/FreeBASIC/Solve-a-Hopido-puzzle
deleted file mode 120000
index 3af9403ab8..0000000000
--- a/Lang/FreeBASIC/Solve-a-Hopido-puzzle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Solve-a-Hopido-puzzle/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Solve-a-Numbrix-puzzle b/Lang/FreeBASIC/Solve-a-Numbrix-puzzle
deleted file mode 120000
index 9212eac2bb..0000000000
--- a/Lang/FreeBASIC/Solve-a-Numbrix-puzzle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Solve-a-Numbrix-puzzle/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Solve-the-no-connection-puzzle b/Lang/FreeBASIC/Solve-the-no-connection-puzzle
deleted file mode 120000
index b14a0d6097..0000000000
--- a/Lang/FreeBASIC/Solve-the-no-connection-puzzle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Solve-the-no-connection-puzzle/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Sort-a-list-of-object-identifiers b/Lang/FreeBASIC/Sort-a-list-of-object-identifiers
deleted file mode 120000
index 2c5a5fbb3b..0000000000
--- a/Lang/FreeBASIC/Sort-a-list-of-object-identifiers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-a-list-of-object-identifiers/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Sort-an-outline-at-every-level b/Lang/FreeBASIC/Sort-an-outline-at-every-level
deleted file mode 120000
index ae4c555049..0000000000
--- a/Lang/FreeBASIC/Sort-an-outline-at-every-level
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-an-outline-at-every-level/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Sorting-Algorithms-Circle-Sort b/Lang/FreeBASIC/Sorting-Algorithms-Circle-Sort
new file mode 120000
index 0000000000..ea5bf17e30
--- /dev/null
+++ b/Lang/FreeBASIC/Sorting-Algorithms-Circle-Sort
@@ -0,0 +1 @@
+../../Task/Sorting-Algorithms-Circle-Sort/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Sorting-algorithms-Patience-sort b/Lang/FreeBASIC/Sorting-algorithms-Patience-sort
deleted file mode 120000
index 1fc80c416d..0000000000
--- a/Lang/FreeBASIC/Sorting-algorithms-Patience-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Patience-sort/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Sorting-algorithms-Radix-sort b/Lang/FreeBASIC/Sorting-algorithms-Radix-sort
deleted file mode 120000
index bddec7031b..0000000000
--- a/Lang/FreeBASIC/Sorting-algorithms-Radix-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Radix-sort/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Sorting-algorithms-Strand-sort b/Lang/FreeBASIC/Sorting-algorithms-Strand-sort
deleted file mode 120000
index 5305f3c6f7..0000000000
--- a/Lang/FreeBASIC/Sorting-algorithms-Strand-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Strand-sort/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Stable-marriage-problem b/Lang/FreeBASIC/Stable-marriage-problem
deleted file mode 120000
index e54d2883a7..0000000000
--- a/Lang/FreeBASIC/Stable-marriage-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Stable-marriage-problem/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/State-name-puzzle b/Lang/FreeBASIC/State-name-puzzle
deleted file mode 120000
index 31d5af215a..0000000000
--- a/Lang/FreeBASIC/State-name-puzzle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/State-name-puzzle/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Strassens-algorithm b/Lang/FreeBASIC/Strassens-algorithm
deleted file mode 120000
index a5c6e9ef78..0000000000
--- a/Lang/FreeBASIC/Strassens-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strassens-algorithm/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Summarize-and-say-sequence b/Lang/FreeBASIC/Summarize-and-say-sequence
deleted file mode 120000
index c59e649aca..0000000000
--- a/Lang/FreeBASIC/Summarize-and-say-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Summarize-and-say-sequence/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Synchronous-concurrency b/Lang/FreeBASIC/Synchronous-concurrency
deleted file mode 120000
index 787a5aebfc..0000000000
--- a/Lang/FreeBASIC/Synchronous-concurrency
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Synchronous-concurrency/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Tarjan b/Lang/FreeBASIC/Tarjan
deleted file mode 120000
index 2088963b57..0000000000
--- a/Lang/FreeBASIC/Tarjan
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tarjan/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Teacup-rim-text b/Lang/FreeBASIC/Teacup-rim-text
deleted file mode 120000
index e0ebee7a7f..0000000000
--- a/Lang/FreeBASIC/Teacup-rim-text
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Teacup-rim-text/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Text-processing-1 b/Lang/FreeBASIC/Text-processing-1
deleted file mode 120000
index 1e52cc9a2a..0000000000
--- a/Lang/FreeBASIC/Text-processing-1
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Text-processing-1/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Text-processing-2 b/Lang/FreeBASIC/Text-processing-2
deleted file mode 120000
index 03a524d892..0000000000
--- a/Lang/FreeBASIC/Text-processing-2
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Text-processing-2/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Textonyms b/Lang/FreeBASIC/Textonyms
deleted file mode 120000
index 1d60439533..0000000000
--- a/Lang/FreeBASIC/Textonyms
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Textonyms/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Topological-sort b/Lang/FreeBASIC/Topological-sort
deleted file mode 120000
index c6cd407c9f..0000000000
--- a/Lang/FreeBASIC/Topological-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Topological-sort/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Transliterate-English-text-using-the-Greek-alphabet b/Lang/FreeBASIC/Transliterate-English-text-using-the-Greek-alphabet
deleted file mode 120000
index a3142e6912..0000000000
--- a/Lang/FreeBASIC/Transliterate-English-text-using-the-Greek-alphabet
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Transliterate-English-text-using-the-Greek-alphabet/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Tree-datastructures b/Lang/FreeBASIC/Tree-datastructures
deleted file mode 120000
index 9ca72e7eb6..0000000000
--- a/Lang/FreeBASIC/Tree-datastructures
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tree-datastructures/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Truth-table b/Lang/FreeBASIC/Truth-table
deleted file mode 120000
index 228be906c6..0000000000
--- a/Lang/FreeBASIC/Truth-table
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Truth-table/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/UPC b/Lang/FreeBASIC/UPC
deleted file mode 120000
index ddcf027e49..0000000000
--- a/Lang/FreeBASIC/UPC
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/UPC/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/URL-parser b/Lang/FreeBASIC/URL-parser
deleted file mode 120000
index 870d1a309b..0000000000
--- a/Lang/FreeBASIC/URL-parser
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/URL-parser/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Ukkonen-s-suffix-tree-construction b/Lang/FreeBASIC/Ukkonen-s-suffix-tree-construction
deleted file mode 120000
index 6686d05c91..0000000000
--- a/Lang/FreeBASIC/Ukkonen-s-suffix-tree-construction
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ukkonen-s-suffix-tree-construction/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Universal-Turing-machine b/Lang/FreeBASIC/Universal-Turing-machine
deleted file mode 120000
index a29b2e6201..0000000000
--- a/Lang/FreeBASIC/Universal-Turing-machine
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Universal-Turing-machine/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Use-another-language-to-call-a-function b/Lang/FreeBASIC/Use-another-language-to-call-a-function
deleted file mode 120000
index 5d195ad8f5..0000000000
--- a/Lang/FreeBASIC/Use-another-language-to-call-a-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Use-another-language-to-call-a-function/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/User-input-Graphical b/Lang/FreeBASIC/User-input-Graphical
deleted file mode 120000
index 8c4f2f8158..0000000000
--- a/Lang/FreeBASIC/User-input-Graphical
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/User-input-Graphical/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Verify-distribution-uniformity-Chi-squared-test b/Lang/FreeBASIC/Verify-distribution-uniformity-Chi-squared-test
deleted file mode 120000
index 8088ed160e..0000000000
--- a/Lang/FreeBASIC/Verify-distribution-uniformity-Chi-squared-test
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Verify-distribution-uniformity-Chi-squared-test/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Vigen-re-cipher-Cryptanalysis b/Lang/FreeBASIC/Vigen-re-cipher-Cryptanalysis
deleted file mode 120000
index a802341d36..0000000000
--- a/Lang/FreeBASIC/Vigen-re-cipher-Cryptanalysis
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Vigen-re-cipher-Cryptanalysis/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Vogels-approximation-method b/Lang/FreeBASIC/Vogels-approximation-method
deleted file mode 120000
index e685ba3d8d..0000000000
--- a/Lang/FreeBASIC/Vogels-approximation-method
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Vogels-approximation-method/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Wasteful-equidigital-and-frugal-numbers b/Lang/FreeBASIC/Wasteful-equidigital-and-frugal-numbers
deleted file mode 120000
index 7889ec2570..0000000000
--- a/Lang/FreeBASIC/Wasteful-equidigital-and-frugal-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Wasteful-equidigital-and-frugal-numbers/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Web-scraping b/Lang/FreeBASIC/Web-scraping
deleted file mode 120000
index ef3ee370f4..0000000000
--- a/Lang/FreeBASIC/Web-scraping
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Web-scraping/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Window-management b/Lang/FreeBASIC/Window-management
deleted file mode 120000
index f998cbb6ef..0000000000
--- a/Lang/FreeBASIC/Window-management
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Window-management/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Word-ladder b/Lang/FreeBASIC/Word-ladder
deleted file mode 120000
index 1390108efe..0000000000
--- a/Lang/FreeBASIC/Word-ladder
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Word-ladder/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/World-Cup-group-stage b/Lang/FreeBASIC/World-Cup-group-stage
deleted file mode 120000
index 10c687e006..0000000000
--- a/Lang/FreeBASIC/World-Cup-group-stage
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/World-Cup-group-stage/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Write-to-Windows-event-log b/Lang/FreeBASIC/Write-to-Windows-event-log
deleted file mode 120000
index 8993ae4828..0000000000
--- a/Lang/FreeBASIC/Write-to-Windows-event-log
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Write-to-Windows-event-log/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Yahoo-search-interface b/Lang/FreeBASIC/Yahoo-search-interface
deleted file mode 120000
index f92d06f36d..0000000000
--- a/Lang/FreeBASIC/Yahoo-search-interface
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Yahoo-search-interface/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Zebra-puzzle b/Lang/FreeBASIC/Zebra-puzzle
deleted file mode 120000
index aa6204ae2d..0000000000
--- a/Lang/FreeBASIC/Zebra-puzzle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Zebra-puzzle/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Zeckendorf-arithmetic b/Lang/FreeBASIC/Zeckendorf-arithmetic
deleted file mode 120000
index 5830437272..0000000000
--- a/Lang/FreeBASIC/Zeckendorf-arithmetic
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Zeckendorf-arithmetic/FreeBASIC
\ No newline at end of file
diff --git a/Lang/FreeBASIC/Zumkeller-numbers b/Lang/FreeBASIC/Zumkeller-numbers
deleted file mode 120000
index 6994043985..0000000000
--- a/Lang/FreeBASIC/Zumkeller-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Zumkeller-numbers/FreeBASIC
\ No newline at end of file
diff --git a/Lang/Frink/24-game b/Lang/Frink/24-game
deleted file mode 120000
index 843d6f51e2..0000000000
--- a/Lang/Frink/24-game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/24-game/Frink
\ No newline at end of file
diff --git a/Lang/Frink/Averages-Root-mean-square b/Lang/Frink/Averages-Root-mean-square
deleted file mode 120000
index 5ccaff432e..0000000000
--- a/Lang/Frink/Averages-Root-mean-square
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Root-mean-square/Frink
\ No newline at end of file
diff --git a/Lang/Frink/Blum-integer b/Lang/Frink/Blum-integer
deleted file mode 120000
index 51dea63ee5..0000000000
--- a/Lang/Frink/Blum-integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Blum-integer/Frink
\ No newline at end of file
diff --git a/Lang/Frink/Combinations b/Lang/Frink/Combinations
deleted file mode 120000
index ca07ce8ac3..0000000000
--- a/Lang/Frink/Combinations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Combinations/Frink
\ No newline at end of file
diff --git a/Lang/Frink/Disarium-numbers b/Lang/Frink/Disarium-numbers
deleted file mode 120000
index 30da6e89d2..0000000000
--- a/Lang/Frink/Disarium-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Disarium-numbers/Frink
\ No newline at end of file
diff --git a/Lang/Frink/Entropy b/Lang/Frink/Entropy
deleted file mode 120000
index 686a6c7be3..0000000000
--- a/Lang/Frink/Entropy
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Entropy/Frink
\ No newline at end of file
diff --git a/Lang/Frink/Factorial-primes b/Lang/Frink/Factorial-primes
deleted file mode 120000
index 704a6876ac..0000000000
--- a/Lang/Frink/Factorial-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factorial-primes/Frink
\ No newline at end of file
diff --git a/Lang/Frink/Find-palindromic-numbers-in-both-binary-and-ternary-bases b/Lang/Frink/Find-palindromic-numbers-in-both-binary-and-ternary-bases
deleted file mode 120000
index 8a6a61669b..0000000000
--- a/Lang/Frink/Find-palindromic-numbers-in-both-binary-and-ternary-bases
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Find-palindromic-numbers-in-both-binary-and-ternary-bases/Frink
\ No newline at end of file
diff --git a/Lang/Frink/Floyds-triangle b/Lang/Frink/Floyds-triangle
deleted file mode 120000
index 993ee6e3c2..0000000000
--- a/Lang/Frink/Floyds-triangle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Floyds-triangle/Frink
\ No newline at end of file
diff --git a/Lang/Frink/Happy-numbers b/Lang/Frink/Happy-numbers
deleted file mode 120000
index e83b081fcc..0000000000
--- a/Lang/Frink/Happy-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Happy-numbers/Frink
\ No newline at end of file
diff --git a/Lang/Frink/Knapsack-problem-0-1 b/Lang/Frink/Knapsack-problem-0-1
deleted file mode 120000
index ae292bd7e7..0000000000
--- a/Lang/Frink/Knapsack-problem-0-1
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Knapsack-problem-0-1/Frink
\ No newline at end of file
diff --git a/Lang/Frink/Knapsack-problem-Bounded b/Lang/Frink/Knapsack-problem-Bounded
deleted file mode 120000
index 52649c831e..0000000000
--- a/Lang/Frink/Knapsack-problem-Bounded
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Knapsack-problem-Bounded/Frink
\ No newline at end of file
diff --git a/Lang/Frink/Order-two-numerical-lists b/Lang/Frink/Order-two-numerical-lists
deleted file mode 120000
index 7daa415aeb..0000000000
--- a/Lang/Frink/Order-two-numerical-lists
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Order-two-numerical-lists/Frink
\ No newline at end of file
diff --git a/Lang/Frink/Palindrome-dates b/Lang/Frink/Palindrome-dates
deleted file mode 120000
index 9b0bf86617..0000000000
--- a/Lang/Frink/Palindrome-dates
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Palindrome-dates/Frink
\ No newline at end of file
diff --git a/Lang/Frink/Search-a-list b/Lang/Frink/Search-a-list
deleted file mode 120000
index 71db52cc8c..0000000000
--- a/Lang/Frink/Search-a-list
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Search-a-list/Frink
\ No newline at end of file
diff --git a/Lang/Frink/Smith-numbers b/Lang/Frink/Smith-numbers
deleted file mode 120000
index 368b2f0d50..0000000000
--- a/Lang/Frink/Smith-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Smith-numbers/Frink
\ No newline at end of file
diff --git a/Lang/Frink/Square-free-integers b/Lang/Frink/Square-free-integers
deleted file mode 120000
index 23755894dd..0000000000
--- a/Lang/Frink/Square-free-integers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Square-free-integers/Frink
\ No newline at end of file
diff --git a/Lang/Frink/String-matching b/Lang/Frink/String-matching
deleted file mode 120000
index f56424a6a3..0000000000
--- a/Lang/Frink/String-matching
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-matching/Frink
\ No newline at end of file
diff --git a/Lang/FunL/Miller-Rabin-primality-test b/Lang/FunL/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..592d9059fa
--- /dev/null
+++ b/Lang/FunL/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/FunL
\ No newline at end of file
diff --git a/Lang/FuncSug/00-LANG.txt b/Lang/FuncSug/00-LANG.txt
deleted file mode 100644
index 9239e3a1ef..0000000000
--- a/Lang/FuncSug/00-LANG.txt
+++ /dev/null
@@ -1 +0,0 @@
-{{stub}}{{language|FuncSug}}
\ No newline at end of file
diff --git a/Lang/FuncSug/00-META.yaml b/Lang/FuncSug/00-META.yaml
deleted file mode 100644
index 0613d9bea7..0000000000
--- a/Lang/FuncSug/00-META.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-from: http://rosettacode.org/wiki/Category:FuncSug
diff --git a/Lang/FuncSug/15-puzzle-game b/Lang/FuncSug/15-puzzle-game
deleted file mode 120000
index 76eb121586..0000000000
--- a/Lang/FuncSug/15-puzzle-game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/15-puzzle-game/FuncSug
\ No newline at end of file
diff --git a/Lang/FuncSug/GUI-component-interaction b/Lang/FuncSug/GUI-component-interaction
deleted file mode 120000
index 744e9aac1b..0000000000
--- a/Lang/FuncSug/GUI-component-interaction
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/GUI-component-interaction/FuncSug
\ No newline at end of file
diff --git a/Lang/FuncSug/GUI-enabling-disabling-of-controls b/Lang/FuncSug/GUI-enabling-disabling-of-controls
deleted file mode 120000
index 049595483a..0000000000
--- a/Lang/FuncSug/GUI-enabling-disabling-of-controls
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/GUI-enabling-disabling-of-controls/FuncSug
\ No newline at end of file
diff --git a/Lang/FuncSug/Hello-world-Text b/Lang/FuncSug/Hello-world-Text
deleted file mode 120000
index f188530df7..0000000000
--- a/Lang/FuncSug/Hello-world-Text
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Text/FuncSug
\ No newline at end of file
diff --git a/Lang/FuncSug/Play-recorded-sounds b/Lang/FuncSug/Play-recorded-sounds
deleted file mode 120000
index 9418947577..0000000000
--- a/Lang/FuncSug/Play-recorded-sounds
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Play-recorded-sounds/FuncSug
\ No newline at end of file
diff --git a/Lang/FuncSug/Simple-windowed-application b/Lang/FuncSug/Simple-windowed-application
deleted file mode 120000
index 8eec686bff..0000000000
--- a/Lang/FuncSug/Simple-windowed-application
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Simple-windowed-application/FuncSug
\ No newline at end of file
diff --git a/Lang/FuncSug/Simulate-input-Mouse b/Lang/FuncSug/Simulate-input-Mouse
deleted file mode 120000
index 186d49bf08..0000000000
--- a/Lang/FuncSug/Simulate-input-Mouse
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Simulate-input-Mouse/FuncSug
\ No newline at end of file
diff --git a/Lang/FuncSug/User-input-Graphical b/Lang/FuncSug/User-input-Graphical
deleted file mode 120000
index b685a2412e..0000000000
--- a/Lang/FuncSug/User-input-Graphical
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/User-input-Graphical/FuncSug
\ No newline at end of file
diff --git a/Lang/FutureBasic/00-LANG.txt b/Lang/FutureBasic/00-LANG.txt
index 36f5f0b065..d3dbdba2ec 100644
--- a/Lang/FutureBasic/00-LANG.txt
+++ b/Lang/FutureBasic/00-LANG.txt
@@ -12,11 +12,7 @@
[[File:FutureBasicIcon.png|64px|top]]
-FutureBasic — commonly called FB by its users — is a robust freeware Macintosh IDE.
-
-It began life as Zbasic, a commercial variant of [[BASIC]] for the early Macintoshes, but has grown far beyond that into a mature IDE compatible with the latest macOSes. Through its FBtoC translator, it can be used to compile C and Objective-C [[object-oriented]] code. It uses the industry-standard clang compiler included with an Xcode installation.
-
-FB is excellent as a educational tool, for fast prototyping and for commercial application development. In addition to its native language, it can incorporate C and Objective-C (Cocoa) for those who prefer programmatic code without the overhead of Xcode. It is compatible with Xcode nib and xib files used for building GUIs. Among its enthusiasts are commercial developers, engineers, professors, doctors, musicians, writers and a host of amateurs who program with FB for the sheer joy of it.
+FutureBasic began life as Zbasic, a commercial variant of [[BASIC]] for the early Macintoshes, but has grown far beyond that into a mature freeware IDE that, through its FBtoC translator, can be used to compile C and Objective-C [[object-oriented]] code using the clang compiler included with an Xcode installation. It is excellent as a educational tool and for fast prototyping -- especially in Objective-C (Cocoa) by those who prefer programmatic code without the overhead of Xcode. Among its enthusiasts are commercial developers, engineers, professors, doctors, musicians, writers and a host of amateurs who program with FB for the sheer joy of it.
== FutureBasic Home Page & Download ==
@@ -68,11 +64,11 @@ In 1995 Staz Software, led by Chris Stasny based in Diamondhead, Miss., acquired
When Apple transitioned the Mac from 68k to PowerPC, the FB editor was rewritten by Stasny and was coupled with an adaptation of the compiler by Andy Gariepy. The result of their efforts, a dramatically enhanced IDE called FB^3 (FB-cubed) was released in September 1999.
-Major update releases introduced a full-featured Appearance Compliant runtime written by the late New Zealander Robert Purves renowned for his brilliant programming. Once completely carbonized to run natively on the Mac OS X, the FutureBASIC Integrated Development Environment (FB IDE) was called FB4 and released in July 2004.
+Major update releases introduced a full-featured Appearance Compliant runtime written by the late New Zealander Robert Purves renown for his brilliant programming. Once completely carbonized to run natively on the Mac OS X, the FutureBASIC Integrated Development Environment (FB IDE) was called FB4 and released in July 2004.
In August 2005, Staz Software was devastated by Hurricane Katrina just at the time Apple was transitioning from Motorola PPC microprocessors to Intel chips. FB development slowed almost to a standstill. On January 1, 2008, Staz Software announced that FB would henceforth be freeware and FB4 with FBtoC 1.0 was made available.
-Since that time, an independent team of volunteer developers initially led by Purves continued to improve FBtoC, which took code produced by the FB Editor and translated it to C for processing by gcc which was eventually transitioned to the more robust clang.
+Since that time, an independent team of volunteer developers initially lead by Purves continued to improve FBtoC, which took code produced by the FB Editor and translated it to C for processing by gcc which was eventually transitioned to the more robust clang.
On Sunday, June 3, 2012, members of the FB List Serve were notified that Robert Purves had died after a long bout with cancer. The news came as a surprise to many FB developers who were unaware of Purves' illness. While coping with cancer, he continued as an active member of the FB community, improving FB, answering questions, solving problems, and posting exquisitely terse code often salted with pithy remarks from his wonderfully dry humor. He never mentioned his health problems and never complained. A tribute to Purves can be found at the bottom of the FB Home Page
diff --git a/Lang/FutureBasic/15-puzzle-solver b/Lang/FutureBasic/15-puzzle-solver
deleted file mode 120000
index db2f936a7e..0000000000
--- a/Lang/FutureBasic/15-puzzle-solver
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/15-puzzle-solver/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/24-game b/Lang/FutureBasic/24-game
deleted file mode 120000
index f1ea3d0684..0000000000
--- a/Lang/FutureBasic/24-game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/24-game/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/9-billion-names-of-God-the-integer b/Lang/FutureBasic/9-billion-names-of-God-the-integer
deleted file mode 120000
index 2c2322b6ea..0000000000
--- a/Lang/FutureBasic/9-billion-names-of-God-the-integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/9-billion-names-of-God-the-integer/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/ADFGVX-cipher b/Lang/FutureBasic/ADFGVX-cipher
deleted file mode 120000
index e5f0c8a31e..0000000000
--- a/Lang/FutureBasic/ADFGVX-cipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/ADFGVX-cipher/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/AKS-test-for-primes b/Lang/FutureBasic/AKS-test-for-primes
deleted file mode 120000
index d7fcaa6502..0000000000
--- a/Lang/FutureBasic/AKS-test-for-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/AKS-test-for-primes/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/ASCII-art-diagram-converter b/Lang/FutureBasic/ASCII-art-diagram-converter
deleted file mode 120000
index cb5711ff54..0000000000
--- a/Lang/FutureBasic/ASCII-art-diagram-converter
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/ASCII-art-diagram-converter/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Achilles-numbers b/Lang/FutureBasic/Achilles-numbers
deleted file mode 120000
index a912859c01..0000000000
--- a/Lang/FutureBasic/Achilles-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Achilles-numbers/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Aliquot-sequence-classifications b/Lang/FutureBasic/Aliquot-sequence-classifications
deleted file mode 120000
index d24c82afdc..0000000000
--- a/Lang/FutureBasic/Aliquot-sequence-classifications
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Aliquot-sequence-classifications/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Almkvist-Giullera-formula-for-pi b/Lang/FutureBasic/Almkvist-Giullera-formula-for-pi
deleted file mode 120000
index 0079b2eae5..0000000000
--- a/Lang/FutureBasic/Almkvist-Giullera-formula-for-pi
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Almkvist-Giullera-formula-for-pi/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Amb b/Lang/FutureBasic/Amb
deleted file mode 120000
index 399b8a70d5..0000000000
--- a/Lang/FutureBasic/Amb
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Amb/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Angles-geometric-normalization-and-conversion b/Lang/FutureBasic/Angles-geometric-normalization-and-conversion
deleted file mode 120000
index 63c4e835a4..0000000000
--- a/Lang/FutureBasic/Angles-geometric-normalization-and-conversion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Angles-geometric-normalization-and-conversion/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Anonymous-recursion b/Lang/FutureBasic/Anonymous-recursion
deleted file mode 120000
index d52f4bbda0..0000000000
--- a/Lang/FutureBasic/Anonymous-recursion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Anonymous-recursion/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Arbitrary-precision-integers-included- b/Lang/FutureBasic/Arbitrary-precision-integers-included-
deleted file mode 120000
index ca9deb04e2..0000000000
--- a/Lang/FutureBasic/Arbitrary-precision-integers-included-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arbitrary-precision-integers-included-/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Arithmetic-Complex b/Lang/FutureBasic/Arithmetic-Complex
deleted file mode 120000
index eab72eafe1..0000000000
--- a/Lang/FutureBasic/Arithmetic-Complex
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-Complex/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Arithmetic-Rational b/Lang/FutureBasic/Arithmetic-Rational
deleted file mode 120000
index 4ba3750b0f..0000000000
--- a/Lang/FutureBasic/Arithmetic-Rational
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-Rational/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Arithmetic-derivative b/Lang/FutureBasic/Arithmetic-derivative
deleted file mode 120000
index 4b54c16b3d..0000000000
--- a/Lang/FutureBasic/Arithmetic-derivative
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-derivative/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Arithmetic-geometric-mean b/Lang/FutureBasic/Arithmetic-geometric-mean
deleted file mode 120000
index 2894f4733f..0000000000
--- a/Lang/FutureBasic/Arithmetic-geometric-mean
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-geometric-mean/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Assertions b/Lang/FutureBasic/Assertions
deleted file mode 120000
index 6270ababb4..0000000000
--- a/Lang/FutureBasic/Assertions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Assertions/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Averages-Mean-angle b/Lang/FutureBasic/Averages-Mean-angle
deleted file mode 120000
index 45c7d861f6..0000000000
--- a/Lang/FutureBasic/Averages-Mean-angle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Mean-angle/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Averages-Mean-time-of-day b/Lang/FutureBasic/Averages-Mean-time-of-day
deleted file mode 120000
index 0caef5a9a0..0000000000
--- a/Lang/FutureBasic/Averages-Mean-time-of-day
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Mean-time-of-day/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Averages-Root-mean-square b/Lang/FutureBasic/Averages-Root-mean-square
deleted file mode 120000
index f04b81a3b0..0000000000
--- a/Lang/FutureBasic/Averages-Root-mean-square
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Root-mean-square/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Barnsley-fern b/Lang/FutureBasic/Barnsley-fern
deleted file mode 120000
index a6da4c722a..0000000000
--- a/Lang/FutureBasic/Barnsley-fern
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Barnsley-fern/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Bernoulli-numbers b/Lang/FutureBasic/Bernoulli-numbers
deleted file mode 120000
index 3ed522958e..0000000000
--- a/Lang/FutureBasic/Bernoulli-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bernoulli-numbers/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Bin-given-limits b/Lang/FutureBasic/Bin-given-limits
deleted file mode 120000
index 6397588001..0000000000
--- a/Lang/FutureBasic/Bin-given-limits
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bin-given-limits/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Binary-search b/Lang/FutureBasic/Binary-search
deleted file mode 120000
index 55e96bcbd8..0000000000
--- a/Lang/FutureBasic/Binary-search
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Binary-search/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Bioinformatics-base-count b/Lang/FutureBasic/Bioinformatics-base-count
new file mode 120000
index 0000000000..8f826b0063
--- /dev/null
+++ b/Lang/FutureBasic/Bioinformatics-base-count
@@ -0,0 +1 @@
+../../Task/Bioinformatics-base-count/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Biorhythms b/Lang/FutureBasic/Biorhythms
deleted file mode 120000
index db55b5c43b..0000000000
--- a/Lang/FutureBasic/Biorhythms
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Biorhythms/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Bitmap b/Lang/FutureBasic/Bitmap
deleted file mode 120000
index 5e3f607822..0000000000
--- a/Lang/FutureBasic/Bitmap
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bitmap/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Bitmap-B-zier-curves-Cubic b/Lang/FutureBasic/Bitmap-B-zier-curves-Cubic
deleted file mode 120000
index 743bf83068..0000000000
--- a/Lang/FutureBasic/Bitmap-B-zier-curves-Cubic
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bitmap-B-zier-curves-Cubic/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Blum-integer b/Lang/FutureBasic/Blum-integer
deleted file mode 120000
index 0ccbf69775..0000000000
--- a/Lang/FutureBasic/Blum-integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Blum-integer/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Box-the-compass b/Lang/FutureBasic/Box-the-compass
deleted file mode 120000
index 7b89a8413c..0000000000
--- a/Lang/FutureBasic/Box-the-compass
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Box-the-compass/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Boyer-Moore-string-search b/Lang/FutureBasic/Boyer-Moore-string-search
deleted file mode 120000
index 574c899ddd..0000000000
--- a/Lang/FutureBasic/Boyer-Moore-string-search
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Boyer-Moore-string-search/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Brazilian-numbers b/Lang/FutureBasic/Brazilian-numbers
deleted file mode 120000
index ea4e519da9..0000000000
--- a/Lang/FutureBasic/Brazilian-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Brazilian-numbers/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Brilliant-numbers b/Lang/FutureBasic/Brilliant-numbers
deleted file mode 120000
index 0ee49e027a..0000000000
--- a/Lang/FutureBasic/Brilliant-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Brilliant-numbers/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Brownian-tree b/Lang/FutureBasic/Brownian-tree
deleted file mode 120000
index 26e06861c7..0000000000
--- a/Lang/FutureBasic/Brownian-tree
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Brownian-tree/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/CRC-32 b/Lang/FutureBasic/CRC-32
deleted file mode 120000
index 8330772d04..0000000000
--- a/Lang/FutureBasic/CRC-32
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/CRC-32/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Caesar-cipher b/Lang/FutureBasic/Caesar-cipher
deleted file mode 120000
index c0196256fa..0000000000
--- a/Lang/FutureBasic/Caesar-cipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Caesar-cipher/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Canonicalize-CIDR b/Lang/FutureBasic/Canonicalize-CIDR
deleted file mode 120000
index 77fabb43fd..0000000000
--- a/Lang/FutureBasic/Canonicalize-CIDR
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Canonicalize-CIDR/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Carmichael-3-strong-pseudoprimes b/Lang/FutureBasic/Carmichael-3-strong-pseudoprimes
deleted file mode 120000
index 17664f9781..0000000000
--- a/Lang/FutureBasic/Carmichael-3-strong-pseudoprimes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Carmichael-3-strong-pseudoprimes/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Catalan-numbers-Pascals-triangle b/Lang/FutureBasic/Catalan-numbers-Pascals-triangle
deleted file mode 120000
index 48a5bd3f8b..0000000000
--- a/Lang/FutureBasic/Catalan-numbers-Pascals-triangle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Catalan-numbers-Pascals-triangle/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Catamorphism b/Lang/FutureBasic/Catamorphism
deleted file mode 120000
index 25e6699616..0000000000
--- a/Lang/FutureBasic/Catamorphism
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Catamorphism/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Check-output-device-is-a-terminal b/Lang/FutureBasic/Check-output-device-is-a-terminal
deleted file mode 120000
index e2e8c9c4eb..0000000000
--- a/Lang/FutureBasic/Check-output-device-is-a-terminal
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Check-output-device-is-a-terminal/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Chinese-remainder-theorem b/Lang/FutureBasic/Chinese-remainder-theorem
deleted file mode 120000
index 2cdd3a4f64..0000000000
--- a/Lang/FutureBasic/Chinese-remainder-theorem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Chinese-remainder-theorem/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Chinese-zodiac b/Lang/FutureBasic/Chinese-zodiac
deleted file mode 120000
index df6e098031..0000000000
--- a/Lang/FutureBasic/Chinese-zodiac
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Chinese-zodiac/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Colorful-numbers b/Lang/FutureBasic/Colorful-numbers
deleted file mode 120000
index f9f2dd43bc..0000000000
--- a/Lang/FutureBasic/Colorful-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Colorful-numbers/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Combinations b/Lang/FutureBasic/Combinations
deleted file mode 120000
index d7395ea4d1..0000000000
--- a/Lang/FutureBasic/Combinations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Combinations/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Command-line-arguments b/Lang/FutureBasic/Command-line-arguments
deleted file mode 120000
index 2926af8716..0000000000
--- a/Lang/FutureBasic/Command-line-arguments
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Command-line-arguments/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Compile-time-calculation b/Lang/FutureBasic/Compile-time-calculation
deleted file mode 120000
index ef10ff644e..0000000000
--- a/Lang/FutureBasic/Compile-time-calculation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compile-time-calculation/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Composite-numbers-k-with-no-single-digit-factors-whose-factors-are-all-substrings-of-k b/Lang/FutureBasic/Composite-numbers-k-with-no-single-digit-factors-whose-factors-are-all-substrings-of-k
deleted file mode 120000
index 2fbac26654..0000000000
--- a/Lang/FutureBasic/Composite-numbers-k-with-no-single-digit-factors-whose-factors-are-all-substrings-of-k
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Composite-numbers-k-with-no-single-digit-factors-whose-factors-are-all-substrings-of-k/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Consecutive-primes-with-ascending-or-descending-differences b/Lang/FutureBasic/Consecutive-primes-with-ascending-or-descending-differences
deleted file mode 120000
index ca47092ad1..0000000000
--- a/Lang/FutureBasic/Consecutive-primes-with-ascending-or-descending-differences
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Consecutive-primes-with-ascending-or-descending-differences/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Constrained-random-points-on-a-circle b/Lang/FutureBasic/Constrained-random-points-on-a-circle
deleted file mode 120000
index db1c784250..0000000000
--- a/Lang/FutureBasic/Constrained-random-points-on-a-circle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Constrained-random-points-on-a-circle/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Continued-fraction-Arithmetic-Construct-from-rational-number b/Lang/FutureBasic/Continued-fraction-Arithmetic-Construct-from-rational-number
deleted file mode 120000
index fa25a1c542..0000000000
--- a/Lang/FutureBasic/Continued-fraction-Arithmetic-Construct-from-rational-number
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Continued-fraction-Arithmetic-Construct-from-rational-number/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Copy-stdin-to-stdout b/Lang/FutureBasic/Copy-stdin-to-stdout
deleted file mode 120000
index 9a5df43082..0000000000
--- a/Lang/FutureBasic/Copy-stdin-to-stdout
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Copy-stdin-to-stdout/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Cuban-primes b/Lang/FutureBasic/Cuban-primes
deleted file mode 120000
index 3b2980081c..0000000000
--- a/Lang/FutureBasic/Cuban-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cuban-primes/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Cumulative-standard-deviation b/Lang/FutureBasic/Cumulative-standard-deviation
deleted file mode 120000
index e51653c2b1..0000000000
--- a/Lang/FutureBasic/Cumulative-standard-deviation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cumulative-standard-deviation/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Curzon-numbers b/Lang/FutureBasic/Curzon-numbers
deleted file mode 120000
index bcd7e577f6..0000000000
--- a/Lang/FutureBasic/Curzon-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Curzon-numbers/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Damm-algorithm b/Lang/FutureBasic/Damm-algorithm
deleted file mode 120000
index 1a53ae4466..0000000000
--- a/Lang/FutureBasic/Damm-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Damm-algorithm/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Deal-cards-for-FreeCell b/Lang/FutureBasic/Deal-cards-for-FreeCell
deleted file mode 120000
index b84bfb771c..0000000000
--- a/Lang/FutureBasic/Deal-cards-for-FreeCell
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Deal-cards-for-FreeCell/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Death-Star b/Lang/FutureBasic/Death-Star
deleted file mode 120000
index 6a87d38224..0000000000
--- a/Lang/FutureBasic/Death-Star
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Death-Star/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Deceptive-numbers b/Lang/FutureBasic/Deceptive-numbers
deleted file mode 120000
index 82f50bcc9e..0000000000
--- a/Lang/FutureBasic/Deceptive-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Deceptive-numbers/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Demings-funnel b/Lang/FutureBasic/Demings-funnel
deleted file mode 120000
index a0b916f84d..0000000000
--- a/Lang/FutureBasic/Demings-funnel
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Demings-funnel/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Determine-if-a-string-has-all-the-same-characters b/Lang/FutureBasic/Determine-if-a-string-has-all-the-same-characters
deleted file mode 120000
index 94f004e3ea..0000000000
--- a/Lang/FutureBasic/Determine-if-a-string-has-all-the-same-characters
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-has-all-the-same-characters/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Determine-if-a-string-is-squeezable b/Lang/FutureBasic/Determine-if-a-string-is-squeezable
deleted file mode 120000
index 3b259327b7..0000000000
--- a/Lang/FutureBasic/Determine-if-a-string-is-squeezable
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-is-squeezable/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Determine-if-only-one-instance-is-running b/Lang/FutureBasic/Determine-if-only-one-instance-is-running
deleted file mode 120000
index e3fa96a5b5..0000000000
--- a/Lang/FutureBasic/Determine-if-only-one-instance-is-running
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-only-one-instance-is-running/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Determine-if-two-triangles-overlap b/Lang/FutureBasic/Determine-if-two-triangles-overlap
deleted file mode 120000
index 40f32b74b7..0000000000
--- a/Lang/FutureBasic/Determine-if-two-triangles-overlap
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-two-triangles-overlap/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Determine-sentence-type b/Lang/FutureBasic/Determine-sentence-type
deleted file mode 120000
index fce2322962..0000000000
--- a/Lang/FutureBasic/Determine-sentence-type
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-sentence-type/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Digital-root b/Lang/FutureBasic/Digital-root
deleted file mode 120000
index 63da54faf1..0000000000
--- a/Lang/FutureBasic/Digital-root
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Digital-root/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Dinesmans-multiple-dwelling-problem b/Lang/FutureBasic/Dinesmans-multiple-dwelling-problem
deleted file mode 120000
index cdb0294902..0000000000
--- a/Lang/FutureBasic/Dinesmans-multiple-dwelling-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dinesmans-multiple-dwelling-problem/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Distribution-of-0-digits-in-factorial-series b/Lang/FutureBasic/Distribution-of-0-digits-in-factorial-series
deleted file mode 120000
index 2e525770b5..0000000000
--- a/Lang/FutureBasic/Distribution-of-0-digits-in-factorial-series
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Distribution-of-0-digits-in-factorial-series/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Diversity-prediction-theorem b/Lang/FutureBasic/Diversity-prediction-theorem
deleted file mode 120000
index 75ad65e089..0000000000
--- a/Lang/FutureBasic/Diversity-prediction-theorem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Diversity-prediction-theorem/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Doubly-linked-list-Definition b/Lang/FutureBasic/Doubly-linked-list-Definition
deleted file mode 120000
index dbb3fa0478..0000000000
--- a/Lang/FutureBasic/Doubly-linked-list-Definition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Doubly-linked-list-Definition/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Dutch-national-flag-problem b/Lang/FutureBasic/Dutch-national-flag-problem
deleted file mode 120000
index a769d7e0d9..0000000000
--- a/Lang/FutureBasic/Dutch-national-flag-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dutch-national-flag-problem/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Eban-numbers b/Lang/FutureBasic/Eban-numbers
deleted file mode 120000
index 2ae3f59434..0000000000
--- a/Lang/FutureBasic/Eban-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Eban-numbers/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Echo-server b/Lang/FutureBasic/Echo-server
deleted file mode 120000
index 25d59262e7..0000000000
--- a/Lang/FutureBasic/Echo-server
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Echo-server/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Eertree b/Lang/FutureBasic/Eertree
deleted file mode 120000
index f3374493cf..0000000000
--- a/Lang/FutureBasic/Eertree
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Eertree/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Egyptian-division b/Lang/FutureBasic/Egyptian-division
deleted file mode 120000
index 5961af2842..0000000000
--- a/Lang/FutureBasic/Egyptian-division
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Egyptian-division/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Entropy b/Lang/FutureBasic/Entropy
deleted file mode 120000
index 6336540906..0000000000
--- a/Lang/FutureBasic/Entropy
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Entropy/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Equilibrium-index b/Lang/FutureBasic/Equilibrium-index
deleted file mode 120000
index 92d577887f..0000000000
--- a/Lang/FutureBasic/Equilibrium-index
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Equilibrium-index/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Euclid-Mullin-sequence b/Lang/FutureBasic/Euclid-Mullin-sequence
deleted file mode 120000
index 20745da07c..0000000000
--- a/Lang/FutureBasic/Euclid-Mullin-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Euclid-Mullin-sequence/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Euler-method b/Lang/FutureBasic/Euler-method
deleted file mode 120000
index 89a7e85a03..0000000000
--- a/Lang/FutureBasic/Euler-method
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Euler-method/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Evaluate-binomial-coefficients b/Lang/FutureBasic/Evaluate-binomial-coefficients
deleted file mode 120000
index 59e49028f9..0000000000
--- a/Lang/FutureBasic/Evaluate-binomial-coefficients
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Evaluate-binomial-coefficients/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Evolutionary-algorithm b/Lang/FutureBasic/Evolutionary-algorithm
deleted file mode 120000
index 6ad9576429..0000000000
--- a/Lang/FutureBasic/Evolutionary-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Evolutionary-algorithm/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Exceptions b/Lang/FutureBasic/Exceptions
deleted file mode 120000
index 0e25a15f85..0000000000
--- a/Lang/FutureBasic/Exceptions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Exceptions/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Exceptions-Catch-an-exception-thrown-in-a-nested-call b/Lang/FutureBasic/Exceptions-Catch-an-exception-thrown-in-a-nested-call
deleted file mode 120000
index fd7f3bd9e7..0000000000
--- a/Lang/FutureBasic/Exceptions-Catch-an-exception-thrown-in-a-nested-call
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Exceptions-Catch-an-exception-thrown-in-a-nested-call/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/FASTA-format b/Lang/FutureBasic/FASTA-format
deleted file mode 120000
index 739187f0ef..0000000000
--- a/Lang/FutureBasic/FASTA-format
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/FASTA-format/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Factors-of-a-Mersenne-number b/Lang/FutureBasic/Factors-of-a-Mersenne-number
deleted file mode 120000
index c65e3bfb3a..0000000000
--- a/Lang/FutureBasic/Factors-of-a-Mersenne-number
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factors-of-a-Mersenne-number/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Fermat-numbers b/Lang/FutureBasic/Fermat-numbers
deleted file mode 120000
index 2c5c3120a2..0000000000
--- a/Lang/FutureBasic/Fermat-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fermat-numbers/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Fibonacci-n-step-number-sequences b/Lang/FutureBasic/Fibonacci-n-step-number-sequences
deleted file mode 120000
index 4131a2e05b..0000000000
--- a/Lang/FutureBasic/Fibonacci-n-step-number-sequences
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fibonacci-n-step-number-sequences/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Fibonacci-word b/Lang/FutureBasic/Fibonacci-word
deleted file mode 120000
index c773eeed44..0000000000
--- a/Lang/FutureBasic/Fibonacci-word
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fibonacci-word/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Find-limit-of-recursion b/Lang/FutureBasic/Find-limit-of-recursion
deleted file mode 120000
index cbc1e3a568..0000000000
--- a/Lang/FutureBasic/Find-limit-of-recursion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Find-limit-of-recursion/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Find-the-missing-permutation b/Lang/FutureBasic/Find-the-missing-permutation
deleted file mode 120000
index 83f97c5dbb..0000000000
--- a/Lang/FutureBasic/Find-the-missing-permutation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Find-the-missing-permutation/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Five-weekends b/Lang/FutureBasic/Five-weekends
deleted file mode 120000
index d11a92b953..0000000000
--- a/Lang/FutureBasic/Five-weekends
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Five-weekends/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Flipping-bits-game b/Lang/FutureBasic/Flipping-bits-game
deleted file mode 120000
index 439479c614..0000000000
--- a/Lang/FutureBasic/Flipping-bits-game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Flipping-bits-game/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Flow-control-structures b/Lang/FutureBasic/Flow-control-structures
deleted file mode 120000
index 47305c16bf..0000000000
--- a/Lang/FutureBasic/Flow-control-structures
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Flow-control-structures/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Floyds-triangle b/Lang/FutureBasic/Floyds-triangle
deleted file mode 120000
index 134b2be232..0000000000
--- a/Lang/FutureBasic/Floyds-triangle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Floyds-triangle/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Forest-fire b/Lang/FutureBasic/Forest-fire
deleted file mode 120000
index 5ed21f66e0..0000000000
--- a/Lang/FutureBasic/Forest-fire
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Forest-fire/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Forward-difference b/Lang/FutureBasic/Forward-difference
deleted file mode 120000
index 8669b1c1f5..0000000000
--- a/Lang/FutureBasic/Forward-difference
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Forward-difference/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Function-composition b/Lang/FutureBasic/Function-composition
deleted file mode 120000
index 363444c694..0000000000
--- a/Lang/FutureBasic/Function-composition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Function-composition/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Function-prototype b/Lang/FutureBasic/Function-prototype
deleted file mode 120000
index 00a31e111b..0000000000
--- a/Lang/FutureBasic/Function-prototype
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Function-prototype/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Fusc-sequence b/Lang/FutureBasic/Fusc-sequence
deleted file mode 120000
index 603bccf327..0000000000
--- a/Lang/FutureBasic/Fusc-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fusc-sequence/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Gamma-function b/Lang/FutureBasic/Gamma-function
deleted file mode 120000
index fbf1cf8878..0000000000
--- a/Lang/FutureBasic/Gamma-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Gamma-function/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Gaussian-elimination b/Lang/FutureBasic/Gaussian-elimination
deleted file mode 120000
index f8adccdee8..0000000000
--- a/Lang/FutureBasic/Gaussian-elimination
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Gaussian-elimination/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Go-Fish b/Lang/FutureBasic/Go-Fish
deleted file mode 120000
index cc2210d25a..0000000000
--- a/Lang/FutureBasic/Go-Fish
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Go-Fish/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Golden-ratio-Convergence b/Lang/FutureBasic/Golden-ratio-Convergence
deleted file mode 120000
index 2807889e38..0000000000
--- a/Lang/FutureBasic/Golden-ratio-Convergence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Golden-ratio-Convergence/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Gray-code b/Lang/FutureBasic/Gray-code
deleted file mode 120000
index 5eafcaba04..0000000000
--- a/Lang/FutureBasic/Gray-code
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Gray-code/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Greatest-subsequential-sum b/Lang/FutureBasic/Greatest-subsequential-sum
deleted file mode 120000
index cf9f89b8cf..0000000000
--- a/Lang/FutureBasic/Greatest-subsequential-sum
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Greatest-subsequential-sum/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Greedy-algorithm-for-Egyptian-fractions b/Lang/FutureBasic/Greedy-algorithm-for-Egyptian-fractions
deleted file mode 120000
index 65dad8fc47..0000000000
--- a/Lang/FutureBasic/Greedy-algorithm-for-Egyptian-fractions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Greedy-algorithm-for-Egyptian-fractions/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Guess-the-number-With-feedback-player- b/Lang/FutureBasic/Guess-the-number-With-feedback-player-
deleted file mode 120000
index 0ee5d26b61..0000000000
--- a/Lang/FutureBasic/Guess-the-number-With-feedback-player-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Guess-the-number-With-feedback-player-/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/HTTPS-Authenticated b/Lang/FutureBasic/HTTPS-Authenticated
deleted file mode 120000
index 9edb1d8326..0000000000
--- a/Lang/FutureBasic/HTTPS-Authenticated
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/HTTPS-Authenticated/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Halt-and-catch-fire b/Lang/FutureBasic/Halt-and-catch-fire
deleted file mode 120000
index d78c73210e..0000000000
--- a/Lang/FutureBasic/Halt-and-catch-fire
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Halt-and-catch-fire/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Hamming-numbers b/Lang/FutureBasic/Hamming-numbers
deleted file mode 120000
index 69b0f1ea7d..0000000000
--- a/Lang/FutureBasic/Hamming-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hamming-numbers/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Hello-world-Standard-error b/Lang/FutureBasic/Hello-world-Standard-error
deleted file mode 120000
index 326ae936a9..0000000000
--- a/Lang/FutureBasic/Hello-world-Standard-error
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Standard-error/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Here-document b/Lang/FutureBasic/Here-document
deleted file mode 120000
index 44b4edadd8..0000000000
--- a/Lang/FutureBasic/Here-document
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Here-document/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Hickerson-series-of-almost-integers b/Lang/FutureBasic/Hickerson-series-of-almost-integers
deleted file mode 120000
index 22531fa967..0000000000
--- a/Lang/FutureBasic/Hickerson-series-of-almost-integers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hickerson-series-of-almost-integers/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Hofstadter-Q-sequence b/Lang/FutureBasic/Hofstadter-Q-sequence
deleted file mode 120000
index bb38370ecf..0000000000
--- a/Lang/FutureBasic/Hofstadter-Q-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hofstadter-Q-sequence/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Home-primes b/Lang/FutureBasic/Home-primes
deleted file mode 120000
index 4744c5ec64..0000000000
--- a/Lang/FutureBasic/Home-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Home-primes/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Honeycombs b/Lang/FutureBasic/Honeycombs
deleted file mode 120000
index 306c30d982..0000000000
--- a/Lang/FutureBasic/Honeycombs
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Honeycombs/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Host-introspection b/Lang/FutureBasic/Host-introspection
deleted file mode 120000
index c342a7333a..0000000000
--- a/Lang/FutureBasic/Host-introspection
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Host-introspection/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Hunt-the-Wumpus b/Lang/FutureBasic/Hunt-the-Wumpus
deleted file mode 120000
index 6ac2d19ea6..0000000000
--- a/Lang/FutureBasic/Hunt-the-Wumpus
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hunt-the-Wumpus/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/ISBN13-check-digit b/Lang/FutureBasic/ISBN13-check-digit
deleted file mode 120000
index ad5e4cffb4..0000000000
--- a/Lang/FutureBasic/ISBN13-check-digit
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/ISBN13-check-digit/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Integer-overflow b/Lang/FutureBasic/Integer-overflow
deleted file mode 120000
index 37f3cd9e93..0000000000
--- a/Lang/FutureBasic/Integer-overflow
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Integer-overflow/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/JortSort b/Lang/FutureBasic/JortSort
deleted file mode 120000
index a21b94121b..0000000000
--- a/Lang/FutureBasic/JortSort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/JortSort/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Josephus-problem b/Lang/FutureBasic/Josephus-problem
deleted file mode 120000
index d84fa33d5d..0000000000
--- a/Lang/FutureBasic/Josephus-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Josephus-problem/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Juggler-sequence b/Lang/FutureBasic/Juggler-sequence
deleted file mode 120000
index f39646025c..0000000000
--- a/Lang/FutureBasic/Juggler-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Juggler-sequence/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Keyboard-input-Flush-the-keyboard-buffer b/Lang/FutureBasic/Keyboard-input-Flush-the-keyboard-buffer
deleted file mode 120000
index 958993035a..0000000000
--- a/Lang/FutureBasic/Keyboard-input-Flush-the-keyboard-buffer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Keyboard-input-Flush-the-keyboard-buffer/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Largest-number-divisible-by-its-digits b/Lang/FutureBasic/Largest-number-divisible-by-its-digits
deleted file mode 120000
index 3dcba1705b..0000000000
--- a/Lang/FutureBasic/Largest-number-divisible-by-its-digits
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Largest-number-divisible-by-its-digits/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Last-Friday-of-each-month b/Lang/FutureBasic/Last-Friday-of-each-month
deleted file mode 120000
index a3476e0672..0000000000
--- a/Lang/FutureBasic/Last-Friday-of-each-month
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Last-Friday-of-each-month/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Last-letter-first-letter b/Lang/FutureBasic/Last-letter-first-letter
deleted file mode 120000
index 82ed39c3f0..0000000000
--- a/Lang/FutureBasic/Last-letter-first-letter
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Last-letter-first-letter/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Least-common-multiple b/Lang/FutureBasic/Least-common-multiple
deleted file mode 120000
index 23b8dbfe57..0000000000
--- a/Lang/FutureBasic/Least-common-multiple
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Least-common-multiple/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Left-factorials b/Lang/FutureBasic/Left-factorials
deleted file mode 120000
index b771fa0031..0000000000
--- a/Lang/FutureBasic/Left-factorials
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Left-factorials/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Long-literals-with-continuations b/Lang/FutureBasic/Long-literals-with-continuations
deleted file mode 120000
index 09dff817df..0000000000
--- a/Lang/FutureBasic/Long-literals-with-continuations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Long-literals-with-continuations/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Long-multiplication b/Lang/FutureBasic/Long-multiplication
deleted file mode 120000
index cc3dd93634..0000000000
--- a/Lang/FutureBasic/Long-multiplication
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Long-multiplication/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Long-year b/Lang/FutureBasic/Long-year
deleted file mode 120000
index ae89f1d742..0000000000
--- a/Lang/FutureBasic/Long-year
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Long-year/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Loops-Increment-loop-index-within-loop-body b/Lang/FutureBasic/Loops-Increment-loop-index-within-loop-body
deleted file mode 120000
index ff81b810cd..0000000000
--- a/Lang/FutureBasic/Loops-Increment-loop-index-within-loop-body
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Increment-loop-index-within-loop-body/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Lucas-Lehmer-test b/Lang/FutureBasic/Lucas-Lehmer-test
deleted file mode 120000
index 0d48052ee1..0000000000
--- a/Lang/FutureBasic/Lucas-Lehmer-test
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Lucas-Lehmer-test/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/MAC-vendor-lookup b/Lang/FutureBasic/MAC-vendor-lookup
deleted file mode 120000
index 63a0a7c0b7..0000000000
--- a/Lang/FutureBasic/MAC-vendor-lookup
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/MAC-vendor-lookup/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Magic-constant b/Lang/FutureBasic/Magic-constant
deleted file mode 120000
index 1b88b55f67..0000000000
--- a/Lang/FutureBasic/Magic-constant
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Magic-constant/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Man-or-boy-test b/Lang/FutureBasic/Man-or-boy-test
deleted file mode 120000
index ffaf61719d..0000000000
--- a/Lang/FutureBasic/Man-or-boy-test
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Man-or-boy-test/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Mastermind b/Lang/FutureBasic/Mastermind
deleted file mode 120000
index e02911b738..0000000000
--- a/Lang/FutureBasic/Mastermind
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Mastermind/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Matrix-digital-rain b/Lang/FutureBasic/Matrix-digital-rain
deleted file mode 120000
index 26c9356719..0000000000
--- a/Lang/FutureBasic/Matrix-digital-rain
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Matrix-digital-rain/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Mayan-calendar b/Lang/FutureBasic/Mayan-calendar
deleted file mode 120000
index 7b5f78ca25..0000000000
--- a/Lang/FutureBasic/Mayan-calendar
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Mayan-calendar/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Mayan-numerals b/Lang/FutureBasic/Mayan-numerals
deleted file mode 120000
index cbc6204e00..0000000000
--- a/Lang/FutureBasic/Mayan-numerals
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Mayan-numerals/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Minesweeper-game b/Lang/FutureBasic/Minesweeper-game
deleted file mode 120000
index fdc515bbc6..0000000000
--- a/Lang/FutureBasic/Minesweeper-game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Minesweeper-game/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Minimum-multiple-of-m-where-digital-sum-equals-m b/Lang/FutureBasic/Minimum-multiple-of-m-where-digital-sum-equals-m
deleted file mode 120000
index 088e4f56af..0000000000
--- a/Lang/FutureBasic/Minimum-multiple-of-m-where-digital-sum-equals-m
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Minimum-multiple-of-m-where-digital-sum-equals-m/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Modular-inverse b/Lang/FutureBasic/Modular-inverse
deleted file mode 120000
index 89556b3bbe..0000000000
--- a/Lang/FutureBasic/Modular-inverse
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Modular-inverse/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Monte-Carlo-methods b/Lang/FutureBasic/Monte-Carlo-methods
deleted file mode 120000
index 729102269f..0000000000
--- a/Lang/FutureBasic/Monte-Carlo-methods
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Monte-Carlo-methods/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Monty-Hall-problem b/Lang/FutureBasic/Monty-Hall-problem
deleted file mode 120000
index 0d9da7e7cc..0000000000
--- a/Lang/FutureBasic/Monty-Hall-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Monty-Hall-problem/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Multi-dimensional-array b/Lang/FutureBasic/Multi-dimensional-array
deleted file mode 120000
index 89411e3bf7..0000000000
--- a/Lang/FutureBasic/Multi-dimensional-array
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Multi-dimensional-array/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Munching-squares b/Lang/FutureBasic/Munching-squares
deleted file mode 120000
index 3fb288f688..0000000000
--- a/Lang/FutureBasic/Munching-squares
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Munching-squares/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Mutex b/Lang/FutureBasic/Mutex
deleted file mode 120000
index 027130dc63..0000000000
--- a/Lang/FutureBasic/Mutex
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Mutex/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/N-queens-problem b/Lang/FutureBasic/N-queens-problem
deleted file mode 120000
index 68d9aebc8f..0000000000
--- a/Lang/FutureBasic/N-queens-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/N-queens-problem/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Named-parameters b/Lang/FutureBasic/Named-parameters
deleted file mode 120000
index 77a79a818c..0000000000
--- a/Lang/FutureBasic/Named-parameters
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Named-parameters/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Nim-game b/Lang/FutureBasic/Nim-game
deleted file mode 120000
index edc10ed0c5..0000000000
--- a/Lang/FutureBasic/Nim-game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nim-game/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Nth b/Lang/FutureBasic/Nth
deleted file mode 120000
index 10c058fbd2..0000000000
--- a/Lang/FutureBasic/Nth
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nth/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Own-digits-power-sum b/Lang/FutureBasic/Own-digits-power-sum
deleted file mode 120000
index 5cd998b558..0000000000
--- a/Lang/FutureBasic/Own-digits-power-sum
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Own-digits-power-sum/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Palindrome-dates b/Lang/FutureBasic/Palindrome-dates
deleted file mode 120000
index 2b72c0230b..0000000000
--- a/Lang/FutureBasic/Palindrome-dates
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Palindrome-dates/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Pascals-triangle b/Lang/FutureBasic/Pascals-triangle
deleted file mode 120000
index 31e8218285..0000000000
--- a/Lang/FutureBasic/Pascals-triangle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pascals-triangle/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Pascals-triangle-Puzzle b/Lang/FutureBasic/Pascals-triangle-Puzzle
deleted file mode 120000
index 142f796d16..0000000000
--- a/Lang/FutureBasic/Pascals-triangle-Puzzle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pascals-triangle-Puzzle/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Pentagram b/Lang/FutureBasic/Pentagram
deleted file mode 120000
index 036f2d484a..0000000000
--- a/Lang/FutureBasic/Pentagram
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pentagram/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Perfect-shuffle b/Lang/FutureBasic/Perfect-shuffle
deleted file mode 120000
index 6d2e5e3668..0000000000
--- a/Lang/FutureBasic/Perfect-shuffle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Perfect-shuffle/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Pinstripe-Display b/Lang/FutureBasic/Pinstripe-Display
deleted file mode 120000
index da5d8bc2b0..0000000000
--- a/Lang/FutureBasic/Pinstripe-Display
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pinstripe-Display/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Playing-cards b/Lang/FutureBasic/Playing-cards
deleted file mode 120000
index 965405f346..0000000000
--- a/Lang/FutureBasic/Playing-cards
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Playing-cards/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Poker-hand-analyser b/Lang/FutureBasic/Poker-hand-analyser
deleted file mode 120000
index 35dd2acb93..0000000000
--- a/Lang/FutureBasic/Poker-hand-analyser
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Poker-hand-analyser/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Prime-conspiracy b/Lang/FutureBasic/Prime-conspiracy
deleted file mode 120000
index 73d0f046b0..0000000000
--- a/Lang/FutureBasic/Prime-conspiracy
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Prime-conspiracy/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Prime-decomposition b/Lang/FutureBasic/Prime-decomposition
deleted file mode 120000
index 16553faec7..0000000000
--- a/Lang/FutureBasic/Prime-decomposition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Prime-decomposition/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Pythagorean-triples b/Lang/FutureBasic/Pythagorean-triples
deleted file mode 120000
index f0267047e8..0000000000
--- a/Lang/FutureBasic/Pythagorean-triples
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pythagorean-triples/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Radical-of-an-integer b/Lang/FutureBasic/Radical-of-an-integer
deleted file mode 120000
index 6713bbf881..0000000000
--- a/Lang/FutureBasic/Radical-of-an-integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Radical-of-an-integer/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Range-expansion b/Lang/FutureBasic/Range-expansion
deleted file mode 120000
index 9b92918178..0000000000
--- a/Lang/FutureBasic/Range-expansion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Range-expansion/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Range-extraction b/Lang/FutureBasic/Range-extraction
deleted file mode 120000
index 9a5f1d0533..0000000000
--- a/Lang/FutureBasic/Range-extraction
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Range-extraction/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Read-a-file-character-by-character-UTF8 b/Lang/FutureBasic/Read-a-file-character-by-character-UTF8
deleted file mode 120000
index beadc18b56..0000000000
--- a/Lang/FutureBasic/Read-a-file-character-by-character-UTF8
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Read-a-file-character-by-character-UTF8/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Read-a-file-line-by-line b/Lang/FutureBasic/Read-a-file-line-by-line
deleted file mode 120000
index 43ff8334a4..0000000000
--- a/Lang/FutureBasic/Read-a-file-line-by-line
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Read-a-file-line-by-line/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Record-sound b/Lang/FutureBasic/Record-sound
deleted file mode 120000
index 7ce89c688d..0000000000
--- a/Lang/FutureBasic/Record-sound
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Record-sound/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Regular-expressions b/Lang/FutureBasic/Regular-expressions
deleted file mode 120000
index cd49461444..0000000000
--- a/Lang/FutureBasic/Regular-expressions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Regular-expressions/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Rep-string b/Lang/FutureBasic/Rep-string
deleted file mode 120000
index 99b81bb2f4..0000000000
--- a/Lang/FutureBasic/Rep-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Rep-string/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Repunit-primes b/Lang/FutureBasic/Repunit-primes
deleted file mode 120000
index 366d1fc05e..0000000000
--- a/Lang/FutureBasic/Repunit-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Repunit-primes/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Resistor-mesh b/Lang/FutureBasic/Resistor-mesh
deleted file mode 120000
index 318a1a0f13..0000000000
--- a/Lang/FutureBasic/Resistor-mesh
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Resistor-mesh/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/SEDOLs b/Lang/FutureBasic/SEDOLs
deleted file mode 120000
index 87a0048d3a..0000000000
--- a/Lang/FutureBasic/SEDOLs
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/SEDOLs/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/SHA-256 b/Lang/FutureBasic/SHA-256
deleted file mode 120000
index 0d14776e97..0000000000
--- a/Lang/FutureBasic/SHA-256
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/SHA-256/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Search-a-list-of-records b/Lang/FutureBasic/Search-a-list-of-records
deleted file mode 120000
index 3fefc25b7b..0000000000
--- a/Lang/FutureBasic/Search-a-list-of-records
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Search-a-list-of-records/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Semiprime b/Lang/FutureBasic/Semiprime
deleted file mode 120000
index 71cf62e6e6..0000000000
--- a/Lang/FutureBasic/Semiprime
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Semiprime/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Semordnilap b/Lang/FutureBasic/Semordnilap
deleted file mode 120000
index 23f6715ad0..0000000000
--- a/Lang/FutureBasic/Semordnilap
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Semordnilap/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Sequence-of-primorial-primes b/Lang/FutureBasic/Sequence-of-primorial-primes
deleted file mode 120000
index 9447c777cb..0000000000
--- a/Lang/FutureBasic/Sequence-of-primorial-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sequence-of-primorial-primes/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Sierpinski-arrowhead-curve b/Lang/FutureBasic/Sierpinski-arrowhead-curve
deleted file mode 120000
index d52f730a0b..0000000000
--- a/Lang/FutureBasic/Sierpinski-arrowhead-curve
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sierpinski-arrowhead-curve/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Sierpinski-carpet b/Lang/FutureBasic/Sierpinski-carpet
deleted file mode 120000
index c79bb878a8..0000000000
--- a/Lang/FutureBasic/Sierpinski-carpet
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sierpinski-carpet/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Sierpinski-pentagon b/Lang/FutureBasic/Sierpinski-pentagon
deleted file mode 120000
index 1e105b6fb4..0000000000
--- a/Lang/FutureBasic/Sierpinski-pentagon
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sierpinski-pentagon/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Sierpinski-square-curve b/Lang/FutureBasic/Sierpinski-square-curve
deleted file mode 120000
index 2938f1fa47..0000000000
--- a/Lang/FutureBasic/Sierpinski-square-curve
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sierpinski-square-curve/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Sierpinski-triangle b/Lang/FutureBasic/Sierpinski-triangle
deleted file mode 120000
index 300049c10c..0000000000
--- a/Lang/FutureBasic/Sierpinski-triangle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sierpinski-triangle/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Sleep b/Lang/FutureBasic/Sleep
deleted file mode 120000
index 8ce099ff7d..0000000000
--- a/Lang/FutureBasic/Sleep
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sleep/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Smallest-number-k-such-that-k+2^m-is-composite-for-all-m-less-than-k b/Lang/FutureBasic/Smallest-number-k-such-that-k+2^m-is-composite-for-all-m-less-than-k
deleted file mode 120000
index 8cc89de701..0000000000
--- a/Lang/FutureBasic/Smallest-number-k-such-that-k+2^m-is-composite-for-all-m-less-than-k
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Smallest-number-k-such-that-k+2^m-is-composite-for-all-m-less-than-k/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Smarandache-Wellin-primes b/Lang/FutureBasic/Smarandache-Wellin-primes
deleted file mode 120000
index 7564a9b0b8..0000000000
--- a/Lang/FutureBasic/Smarandache-Wellin-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Smarandache-Wellin-primes/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Smarandache-prime-digital-sequence b/Lang/FutureBasic/Smarandache-prime-digital-sequence
deleted file mode 120000
index 879ea05348..0000000000
--- a/Lang/FutureBasic/Smarandache-prime-digital-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Smarandache-prime-digital-sequence/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Sort-an-array-of-composite-structures b/Lang/FutureBasic/Sort-an-array-of-composite-structures
deleted file mode 120000
index ffd97b8a5e..0000000000
--- a/Lang/FutureBasic/Sort-an-array-of-composite-structures
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-an-array-of-composite-structures/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Sort-disjoint-sublist b/Lang/FutureBasic/Sort-disjoint-sublist
deleted file mode 120000
index 030bf0bfd7..0000000000
--- a/Lang/FutureBasic/Sort-disjoint-sublist
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-disjoint-sublist/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Sort-numbers-lexicographically b/Lang/FutureBasic/Sort-numbers-lexicographically
deleted file mode 120000
index b8d6f91892..0000000000
--- a/Lang/FutureBasic/Sort-numbers-lexicographically
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-numbers-lexicographically/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Sort-three-variables b/Lang/FutureBasic/Sort-three-variables
deleted file mode 120000
index 48424426c7..0000000000
--- a/Lang/FutureBasic/Sort-three-variables
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-three-variables/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Sorting-algorithms-Insertion-sort b/Lang/FutureBasic/Sorting-algorithms-Insertion-sort
deleted file mode 120000
index d1f91f0286..0000000000
--- a/Lang/FutureBasic/Sorting-algorithms-Insertion-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Insertion-sort/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Sorting-algorithms-Sleep-sort b/Lang/FutureBasic/Sorting-algorithms-Sleep-sort
deleted file mode 120000
index b94b39a51d..0000000000
--- a/Lang/FutureBasic/Sorting-algorithms-Sleep-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Sleep-sort/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Spinning-rod-animation-Text b/Lang/FutureBasic/Spinning-rod-animation-Text
deleted file mode 120000
index a0c68e7478..0000000000
--- a/Lang/FutureBasic/Spinning-rod-animation-Text
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Spinning-rod-animation-Text/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Spiral-matrix b/Lang/FutureBasic/Spiral-matrix
deleted file mode 120000
index 4d24174200..0000000000
--- a/Lang/FutureBasic/Spiral-matrix
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Spiral-matrix/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Square-but-not-cube b/Lang/FutureBasic/Square-but-not-cube
deleted file mode 120000
index a8c6d02eba..0000000000
--- a/Lang/FutureBasic/Square-but-not-cube
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Square-but-not-cube/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Square-free-integers b/Lang/FutureBasic/Square-free-integers
deleted file mode 120000
index d3a0459f3e..0000000000
--- a/Lang/FutureBasic/Square-free-integers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Square-free-integers/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Stack b/Lang/FutureBasic/Stack
deleted file mode 120000
index 638a183bbc..0000000000
--- a/Lang/FutureBasic/Stack
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Stack/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Stack-traces b/Lang/FutureBasic/Stack-traces
deleted file mode 120000
index 589e50b2fa..0000000000
--- a/Lang/FutureBasic/Stack-traces
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Stack-traces/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Start-from-a-main-routine b/Lang/FutureBasic/Start-from-a-main-routine
deleted file mode 120000
index c3215fed19..0000000000
--- a/Lang/FutureBasic/Start-from-a-main-routine
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Start-from-a-main-routine/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/String-length b/Lang/FutureBasic/String-length
deleted file mode 120000
index 6df040b0bc..0000000000
--- a/Lang/FutureBasic/String-length
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-length/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Strip-block-comments b/Lang/FutureBasic/Strip-block-comments
deleted file mode 120000
index 1f0c4fb53d..0000000000
--- a/Lang/FutureBasic/Strip-block-comments
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strip-block-comments/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Strip-control-codes-and-extended-characters-from-a-string b/Lang/FutureBasic/Strip-control-codes-and-extended-characters-from-a-string
deleted file mode 120000
index ae3840dae2..0000000000
--- a/Lang/FutureBasic/Strip-control-codes-and-extended-characters-from-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strip-control-codes-and-extended-characters-from-a-string/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Sudan-function b/Lang/FutureBasic/Sudan-function
deleted file mode 120000
index 1f582a9d0d..0000000000
--- a/Lang/FutureBasic/Sudan-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sudan-function/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Sum-digits-of-an-integer b/Lang/FutureBasic/Sum-digits-of-an-integer
deleted file mode 120000
index cf8ab32c2c..0000000000
--- a/Lang/FutureBasic/Sum-digits-of-an-integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sum-digits-of-an-integer/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Sum-of-a-series b/Lang/FutureBasic/Sum-of-a-series
deleted file mode 120000
index 44687bc461..0000000000
--- a/Lang/FutureBasic/Sum-of-a-series
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sum-of-a-series/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Sum-of-squares b/Lang/FutureBasic/Sum-of-squares
deleted file mode 120000
index 3bded3f286..0000000000
--- a/Lang/FutureBasic/Sum-of-squares
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sum-of-squares/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Sum-to-100 b/Lang/FutureBasic/Sum-to-100
deleted file mode 120000
index 5cdb7cf4a8..0000000000
--- a/Lang/FutureBasic/Sum-to-100
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sum-to-100/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Super-d-numbers b/Lang/FutureBasic/Super-d-numbers
deleted file mode 120000
index 77af2a994a..0000000000
--- a/Lang/FutureBasic/Super-d-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Super-d-numbers/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Sylvesters-sequence b/Lang/FutureBasic/Sylvesters-sequence
deleted file mode 120000
index 1e1ae008f1..0000000000
--- a/Lang/FutureBasic/Sylvesters-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sylvesters-sequence/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Tau-function b/Lang/FutureBasic/Tau-function
deleted file mode 120000
index 4d9cc08c3d..0000000000
--- a/Lang/FutureBasic/Tau-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tau-function/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Tau-number b/Lang/FutureBasic/Tau-number
deleted file mode 120000
index 363cfbc636..0000000000
--- a/Lang/FutureBasic/Tau-number
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tau-number/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Temperature-conversion b/Lang/FutureBasic/Temperature-conversion
deleted file mode 120000
index b60c2baf77..0000000000
--- a/Lang/FutureBasic/Temperature-conversion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Temperature-conversion/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Terminal-control-Clear-the-screen b/Lang/FutureBasic/Terminal-control-Clear-the-screen
deleted file mode 120000
index 878687a038..0000000000
--- a/Lang/FutureBasic/Terminal-control-Clear-the-screen
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Terminal-control-Clear-the-screen/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Terminal-control-Coloured-text b/Lang/FutureBasic/Terminal-control-Coloured-text
deleted file mode 120000
index 6858a62734..0000000000
--- a/Lang/FutureBasic/Terminal-control-Coloured-text
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Terminal-control-Coloured-text/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Terminal-control-Cursor-movement b/Lang/FutureBasic/Terminal-control-Cursor-movement
deleted file mode 120000
index 050e1439d6..0000000000
--- a/Lang/FutureBasic/Terminal-control-Cursor-movement
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Terminal-control-Cursor-movement/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Terminal-control-Cursor-positioning b/Lang/FutureBasic/Terminal-control-Cursor-positioning
deleted file mode 120000
index 22f710aaf6..0000000000
--- a/Lang/FutureBasic/Terminal-control-Cursor-positioning
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Terminal-control-Cursor-positioning/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Terminal-control-Hiding-the-cursor b/Lang/FutureBasic/Terminal-control-Hiding-the-cursor
deleted file mode 120000
index 22bc1dda83..0000000000
--- a/Lang/FutureBasic/Terminal-control-Hiding-the-cursor
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Terminal-control-Hiding-the-cursor/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Terminal-control-Ringing-the-terminal-bell b/Lang/FutureBasic/Terminal-control-Ringing-the-terminal-bell
deleted file mode 120000
index 6f8d6c609a..0000000000
--- a/Lang/FutureBasic/Terminal-control-Ringing-the-terminal-bell
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Terminal-control-Ringing-the-terminal-bell/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Terminal-control-Unicode-output b/Lang/FutureBasic/Terminal-control-Unicode-output
deleted file mode 120000
index 712dfa9fa9..0000000000
--- a/Lang/FutureBasic/Terminal-control-Unicode-output
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Terminal-control-Unicode-output/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/The-Name-Game b/Lang/FutureBasic/The-Name-Game
deleted file mode 120000
index 2e6c9ef1a6..0000000000
--- a/Lang/FutureBasic/The-Name-Game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/The-Name-Game/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/The-sieve-of-Sundaram b/Lang/FutureBasic/The-sieve-of-Sundaram
deleted file mode 120000
index 439633bf42..0000000000
--- a/Lang/FutureBasic/The-sieve-of-Sundaram
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/The-sieve-of-Sundaram/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Tic-tac-toe b/Lang/FutureBasic/Tic-tac-toe
deleted file mode 120000
index e0c70b24fe..0000000000
--- a/Lang/FutureBasic/Tic-tac-toe
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tic-tac-toe/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Time-a-function b/Lang/FutureBasic/Time-a-function
deleted file mode 120000
index 819601365f..0000000000
--- a/Lang/FutureBasic/Time-a-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Time-a-function/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Transliterate-English-text-using-the-Greek-alphabet b/Lang/FutureBasic/Transliterate-English-text-using-the-Greek-alphabet
deleted file mode 120000
index f300e3db8a..0000000000
--- a/Lang/FutureBasic/Transliterate-English-text-using-the-Greek-alphabet
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Transliterate-English-text-using-the-Greek-alphabet/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Truncate-a-file b/Lang/FutureBasic/Truncate-a-file
deleted file mode 120000
index 29710d148d..0000000000
--- a/Lang/FutureBasic/Truncate-a-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Truncate-a-file/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Twin-primes b/Lang/FutureBasic/Twin-primes
deleted file mode 120000
index 172e832801..0000000000
--- a/Lang/FutureBasic/Twin-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Twin-primes/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/URL-decoding b/Lang/FutureBasic/URL-decoding
deleted file mode 120000
index 001e7a5dfa..0000000000
--- a/Lang/FutureBasic/URL-decoding
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/URL-decoding/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/URL-parser b/Lang/FutureBasic/URL-parser
deleted file mode 120000
index 46cddba12b..0000000000
--- a/Lang/FutureBasic/URL-parser
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/URL-parser/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Ultra-useful-primes b/Lang/FutureBasic/Ultra-useful-primes
deleted file mode 120000
index eff79aec0f..0000000000
--- a/Lang/FutureBasic/Ultra-useful-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ultra-useful-primes/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Unicode-strings b/Lang/FutureBasic/Unicode-strings
deleted file mode 120000
index dd71b73f3c..0000000000
--- a/Lang/FutureBasic/Unicode-strings
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Unicode-strings/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Use-another-language-to-call-a-function b/Lang/FutureBasic/Use-another-language-to-call-a-function
deleted file mode 120000
index 704ff5c0c8..0000000000
--- a/Lang/FutureBasic/Use-another-language-to-call-a-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Use-another-language-to-call-a-function/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/User-input-Text b/Lang/FutureBasic/User-input-Text
deleted file mode 120000
index 3d0e3bd7f1..0000000000
--- a/Lang/FutureBasic/User-input-Text
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/User-input-Text/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Validate-International-Securities-Identification-Number b/Lang/FutureBasic/Validate-International-Securities-Identification-Number
deleted file mode 120000
index 81f74f067a..0000000000
--- a/Lang/FutureBasic/Validate-International-Securities-Identification-Number
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Validate-International-Securities-Identification-Number/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Wagstaff-primes b/Lang/FutureBasic/Wagstaff-primes
deleted file mode 120000
index 455c60b96b..0000000000
--- a/Lang/FutureBasic/Wagstaff-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Wagstaff-primes/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Wieferich-primes b/Lang/FutureBasic/Wieferich-primes
deleted file mode 120000
index 1c38642d13..0000000000
--- a/Lang/FutureBasic/Wieferich-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Wieferich-primes/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Wilson-primes-of-order-n b/Lang/FutureBasic/Wilson-primes-of-order-n
deleted file mode 120000
index 027bdd5d80..0000000000
--- a/Lang/FutureBasic/Wilson-primes-of-order-n
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Wilson-primes-of-order-n/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Word-wrap b/Lang/FutureBasic/Word-wrap
deleted file mode 120000
index d1cd565464..0000000000
--- a/Lang/FutureBasic/Word-wrap
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Word-wrap/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/XML-Output b/Lang/FutureBasic/XML-Output
deleted file mode 120000
index 7889975674..0000000000
--- a/Lang/FutureBasic/XML-Output
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/XML-Output/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Yahoo-search-interface b/Lang/FutureBasic/Yahoo-search-interface
deleted file mode 120000
index 9f29c6ac04..0000000000
--- a/Lang/FutureBasic/Yahoo-search-interface
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Yahoo-search-interface/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Yellowstone-sequence b/Lang/FutureBasic/Yellowstone-sequence
deleted file mode 120000
index 8a816499f6..0000000000
--- a/Lang/FutureBasic/Yellowstone-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Yellowstone-sequence/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Zebra-puzzle b/Lang/FutureBasic/Zebra-puzzle
deleted file mode 120000
index 68d36dbfcd..0000000000
--- a/Lang/FutureBasic/Zebra-puzzle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Zebra-puzzle/FutureBasic
\ No newline at end of file
diff --git a/Lang/FutureBasic/Zeckendorf-number-representation b/Lang/FutureBasic/Zeckendorf-number-representation
deleted file mode 120000
index c805683421..0000000000
--- a/Lang/FutureBasic/Zeckendorf-number-representation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Zeckendorf-number-representation/FutureBasic
\ No newline at end of file
diff --git a/Lang/GAP/Character-codes b/Lang/GAP/Character-codes
deleted file mode 120000
index ff4a3d2754..0000000000
--- a/Lang/GAP/Character-codes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Character-codes/GAP
\ No newline at end of file
diff --git a/Lang/GAP/Quaternion-type b/Lang/GAP/Quaternion-type
new file mode 120000
index 0000000000..67ec7fa115
--- /dev/null
+++ b/Lang/GAP/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/GAP
\ No newline at end of file
diff --git a/Lang/GDScript/Playing-cards b/Lang/GDScript/Playing-cards
deleted file mode 120000
index 11180c642f..0000000000
--- a/Lang/GDScript/Playing-cards
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Playing-cards/GDScript
\ No newline at end of file
diff --git a/Lang/GW-BASIC/Abundant-deficient-and-perfect-number-classifications b/Lang/GW-BASIC/Abundant-deficient-and-perfect-number-classifications
deleted file mode 120000
index 4709185f8a..0000000000
--- a/Lang/GW-BASIC/Abundant-deficient-and-perfect-number-classifications
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abundant-deficient-and-perfect-number-classifications/GW-BASIC
\ No newline at end of file
diff --git a/Lang/GW-BASIC/Associative-array-Merging b/Lang/GW-BASIC/Associative-array-Merging
deleted file mode 120000
index bd171c9e89..0000000000
--- a/Lang/GW-BASIC/Associative-array-Merging
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Associative-array-Merging/GW-BASIC
\ No newline at end of file
diff --git a/Lang/GW-BASIC/Case-sensitivity-of-identifiers b/Lang/GW-BASIC/Case-sensitivity-of-identifiers
new file mode 120000
index 0000000000..605ddebd53
--- /dev/null
+++ b/Lang/GW-BASIC/Case-sensitivity-of-identifiers
@@ -0,0 +1 @@
+../../Task/Case-sensitivity-of-identifiers/GW-BASIC
\ No newline at end of file
diff --git a/Lang/GW-BASIC/Colour-pinstripe-Display b/Lang/GW-BASIC/Colour-pinstripe-Display
deleted file mode 120000
index 383619acfb..0000000000
--- a/Lang/GW-BASIC/Colour-pinstripe-Display
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Colour-pinstripe-Display/GW-BASIC
\ No newline at end of file
diff --git a/Lang/GW-BASIC/Damm-algorithm b/Lang/GW-BASIC/Damm-algorithm
deleted file mode 120000
index b0cc19e6df..0000000000
--- a/Lang/GW-BASIC/Damm-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Damm-algorithm/GW-BASIC
\ No newline at end of file
diff --git a/Lang/GW-BASIC/Determine-if-a-string-is-collapsible b/Lang/GW-BASIC/Determine-if-a-string-is-collapsible
deleted file mode 120000
index 2b997d0c38..0000000000
--- a/Lang/GW-BASIC/Determine-if-a-string-is-collapsible
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-is-collapsible/GW-BASIC
\ No newline at end of file
diff --git a/Lang/GW-BASIC/Determine-sentence-type b/Lang/GW-BASIC/Determine-sentence-type
deleted file mode 120000
index 0a4310dab2..0000000000
--- a/Lang/GW-BASIC/Determine-sentence-type
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-sentence-type/GW-BASIC
\ No newline at end of file
diff --git a/Lang/GW-BASIC/Display-a-linear-combination b/Lang/GW-BASIC/Display-a-linear-combination
deleted file mode 120000
index 8162367d7b..0000000000
--- a/Lang/GW-BASIC/Display-a-linear-combination
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Display-a-linear-combination/GW-BASIC
\ No newline at end of file
diff --git a/Lang/GW-BASIC/Dutch-national-flag-problem b/Lang/GW-BASIC/Dutch-national-flag-problem
deleted file mode 120000
index 96431612bd..0000000000
--- a/Lang/GW-BASIC/Dutch-national-flag-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dutch-national-flag-problem/GW-BASIC
\ No newline at end of file
diff --git a/Lang/GW-BASIC/Gray-code b/Lang/GW-BASIC/Gray-code
deleted file mode 120000
index a45f2031ed..0000000000
--- a/Lang/GW-BASIC/Gray-code
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Gray-code/GW-BASIC
\ No newline at end of file
diff --git a/Lang/GW-BASIC/Jensens-Device b/Lang/GW-BASIC/Jensens-Device
deleted file mode 120000
index 0236b00319..0000000000
--- a/Lang/GW-BASIC/Jensens-Device
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jensens-Device/GW-BASIC
\ No newline at end of file
diff --git a/Lang/GW-BASIC/Langtons-ant b/Lang/GW-BASIC/Langtons-ant
deleted file mode 120000
index 4d565760ef..0000000000
--- a/Lang/GW-BASIC/Langtons-ant
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Langtons-ant/GW-BASIC
\ No newline at end of file
diff --git a/Lang/GW-BASIC/Leonardo-numbers b/Lang/GW-BASIC/Leonardo-numbers
deleted file mode 120000
index f7945f7063..0000000000
--- a/Lang/GW-BASIC/Leonardo-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Leonardo-numbers/GW-BASIC
\ No newline at end of file
diff --git a/Lang/GW-BASIC/Levenshtein-distance b/Lang/GW-BASIC/Levenshtein-distance
deleted file mode 120000
index 4605e15436..0000000000
--- a/Lang/GW-BASIC/Levenshtein-distance
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Levenshtein-distance/GW-BASIC
\ No newline at end of file
diff --git a/Lang/GW-BASIC/Luhn-test-of-credit-card-numbers b/Lang/GW-BASIC/Luhn-test-of-credit-card-numbers
deleted file mode 120000
index 3e46368b55..0000000000
--- a/Lang/GW-BASIC/Luhn-test-of-credit-card-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Luhn-test-of-credit-card-numbers/GW-BASIC
\ No newline at end of file
diff --git a/Lang/GW-BASIC/Magic-constant b/Lang/GW-BASIC/Magic-constant
deleted file mode 120000
index 4dbe3ee401..0000000000
--- a/Lang/GW-BASIC/Magic-constant
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Magic-constant/GW-BASIC
\ No newline at end of file
diff --git a/Lang/GW-BASIC/Map-range b/Lang/GW-BASIC/Map-range
deleted file mode 120000
index 487538bdd0..0000000000
--- a/Lang/GW-BASIC/Map-range
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Map-range/GW-BASIC
\ No newline at end of file
diff --git a/Lang/GW-BASIC/Mayan-numerals b/Lang/GW-BASIC/Mayan-numerals
deleted file mode 120000
index 5c6a4bdb6a..0000000000
--- a/Lang/GW-BASIC/Mayan-numerals
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Mayan-numerals/GW-BASIC
\ No newline at end of file
diff --git a/Lang/GW-BASIC/Nested-templated-data b/Lang/GW-BASIC/Nested-templated-data
deleted file mode 120000
index bb39849801..0000000000
--- a/Lang/GW-BASIC/Nested-templated-data
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nested-templated-data/GW-BASIC
\ No newline at end of file
diff --git a/Lang/GW-BASIC/Nth-root b/Lang/GW-BASIC/Nth-root
deleted file mode 120000
index 44da5f255f..0000000000
--- a/Lang/GW-BASIC/Nth-root
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nth-root/GW-BASIC
\ No newline at end of file
diff --git a/Lang/GW-BASIC/Old-Russian-measure-of-length b/Lang/GW-BASIC/Old-Russian-measure-of-length
deleted file mode 120000
index 6121a6a7b1..0000000000
--- a/Lang/GW-BASIC/Old-Russian-measure-of-length
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Old-Russian-measure-of-length/GW-BASIC
\ No newline at end of file
diff --git a/Lang/GW-BASIC/Phrase-reversals b/Lang/GW-BASIC/Phrase-reversals
deleted file mode 120000
index f735fa85b8..0000000000
--- a/Lang/GW-BASIC/Phrase-reversals
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Phrase-reversals/GW-BASIC
\ No newline at end of file
diff --git a/Lang/GW-BASIC/Pinstripe-Display b/Lang/GW-BASIC/Pinstripe-Display
deleted file mode 120000
index 282b987dfa..0000000000
--- a/Lang/GW-BASIC/Pinstripe-Display
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pinstripe-Display/GW-BASIC
\ No newline at end of file
diff --git a/Lang/GW-BASIC/Primality-by-trial-division b/Lang/GW-BASIC/Primality-by-trial-division
deleted file mode 120000
index 2b782a101b..0000000000
--- a/Lang/GW-BASIC/Primality-by-trial-division
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Primality-by-trial-division/GW-BASIC
\ No newline at end of file
diff --git a/Lang/GW-BASIC/Sort-an-integer-array b/Lang/GW-BASIC/Sort-an-integer-array
deleted file mode 120000
index 47749b90fd..0000000000
--- a/Lang/GW-BASIC/Sort-an-integer-array
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-an-integer-array/GW-BASIC
\ No newline at end of file
diff --git a/Lang/GW-BASIC/Split-a-character-string-based-on-change-of-character b/Lang/GW-BASIC/Split-a-character-string-based-on-change-of-character
deleted file mode 120000
index 55c414402a..0000000000
--- a/Lang/GW-BASIC/Split-a-character-string-based-on-change-of-character
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Split-a-character-string-based-on-change-of-character/GW-BASIC
\ No newline at end of file
diff --git a/Lang/GW-BASIC/Sum-of-a-series b/Lang/GW-BASIC/Sum-of-a-series
deleted file mode 120000
index 0eb15c49ab..0000000000
--- a/Lang/GW-BASIC/Sum-of-a-series
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sum-of-a-series/GW-BASIC
\ No newline at end of file
diff --git a/Lang/GW-BASIC/Twos-complement b/Lang/GW-BASIC/Twos-complement
deleted file mode 120000
index 6a1e61b45b..0000000000
--- a/Lang/GW-BASIC/Twos-complement
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Twos-complement/GW-BASIC
\ No newline at end of file
diff --git a/Lang/GW-BASIC/Vector b/Lang/GW-BASIC/Vector
deleted file mode 120000
index 6d1d7a6796..0000000000
--- a/Lang/GW-BASIC/Vector
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Vector/GW-BASIC
\ No newline at end of file
diff --git a/Lang/Gambas/Determine-if-a-string-has-all-the-same-characters b/Lang/Gambas/Determine-if-a-string-has-all-the-same-characters
deleted file mode 120000
index 448e7d07b5..0000000000
--- a/Lang/Gambas/Determine-if-a-string-has-all-the-same-characters
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-has-all-the-same-characters/Gambas
\ No newline at end of file
diff --git a/Lang/Gambas/Determine-sentence-type b/Lang/Gambas/Determine-sentence-type
deleted file mode 120000
index 2d6d98f0ec..0000000000
--- a/Lang/Gambas/Determine-sentence-type
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-sentence-type/Gambas
\ No newline at end of file
diff --git a/Lang/Gambas/Diversity-prediction-theorem b/Lang/Gambas/Diversity-prediction-theorem
deleted file mode 120000
index f0154a9ba0..0000000000
--- a/Lang/Gambas/Diversity-prediction-theorem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Diversity-prediction-theorem/Gambas
\ No newline at end of file
diff --git a/Lang/Gambas/Eban-numbers b/Lang/Gambas/Eban-numbers
deleted file mode 120000
index 238b6dbb7b..0000000000
--- a/Lang/Gambas/Eban-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Eban-numbers/Gambas
\ No newline at end of file
diff --git a/Lang/Gambas/Evaluate-binomial-coefficients b/Lang/Gambas/Evaluate-binomial-coefficients
deleted file mode 120000
index d84c9e286a..0000000000
--- a/Lang/Gambas/Evaluate-binomial-coefficients
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Evaluate-binomial-coefficients/Gambas
\ No newline at end of file
diff --git a/Lang/Gambas/Generate-Chess960-starting-position b/Lang/Gambas/Generate-Chess960-starting-position
deleted file mode 120000
index 3ee17430bf..0000000000
--- a/Lang/Gambas/Generate-Chess960-starting-position
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Generate-Chess960-starting-position/Gambas
\ No newline at end of file
diff --git a/Lang/Gambas/Hofstadter-Q-sequence b/Lang/Gambas/Hofstadter-Q-sequence
deleted file mode 120000
index 6288d88da4..0000000000
--- a/Lang/Gambas/Hofstadter-Q-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hofstadter-Q-sequence/Gambas
\ No newline at end of file
diff --git a/Lang/Gambas/Jensens-Device b/Lang/Gambas/Jensens-Device
deleted file mode 120000
index cf682dd548..0000000000
--- a/Lang/Gambas/Jensens-Device
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jensens-Device/Gambas
\ No newline at end of file
diff --git a/Lang/Gambas/Jewels-and-stones b/Lang/Gambas/Jewels-and-stones
deleted file mode 120000
index b13ca1d825..0000000000
--- a/Lang/Gambas/Jewels-and-stones
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jewels-and-stones/Gambas
\ No newline at end of file
diff --git a/Lang/Gambas/Leonardo-numbers b/Lang/Gambas/Leonardo-numbers
deleted file mode 120000
index 92f225b368..0000000000
--- a/Lang/Gambas/Leonardo-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Leonardo-numbers/Gambas
\ No newline at end of file
diff --git a/Lang/Gambas/M-bius-function b/Lang/Gambas/M-bius-function
deleted file mode 120000
index 4846367944..0000000000
--- a/Lang/Gambas/M-bius-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/M-bius-function/Gambas
\ No newline at end of file
diff --git a/Lang/Gambas/Magic-constant b/Lang/Gambas/Magic-constant
deleted file mode 120000
index 3e63290c94..0000000000
--- a/Lang/Gambas/Magic-constant
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Magic-constant/Gambas
\ No newline at end of file
diff --git a/Lang/Gambas/Map-range b/Lang/Gambas/Map-range
deleted file mode 120000
index 47ffb049ec..0000000000
--- a/Lang/Gambas/Map-range
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Map-range/Gambas
\ No newline at end of file
diff --git a/Lang/Gambas/Proper-divisors b/Lang/Gambas/Proper-divisors
deleted file mode 120000
index c95a4aae71..0000000000
--- a/Lang/Gambas/Proper-divisors
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Proper-divisors/Gambas
\ No newline at end of file
diff --git a/Lang/Gambas/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors b/Lang/Gambas/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
similarity index 100%
rename from Lang/Gambas/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors
rename to Lang/Gambas/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
diff --git a/Lang/Gambas/Sort-disjoint-sublist b/Lang/Gambas/Sort-disjoint-sublist
deleted file mode 120000
index d77e8ada49..0000000000
--- a/Lang/Gambas/Sort-disjoint-sublist
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-disjoint-sublist/Gambas
\ No newline at end of file
diff --git a/Lang/Gambas/The-Name-Game b/Lang/Gambas/The-Name-Game
deleted file mode 120000
index 03cc006601..0000000000
--- a/Lang/Gambas/The-Name-Game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/The-Name-Game/Gambas
\ No newline at end of file
diff --git a/Lang/Gambas/Twos-complement b/Lang/Gambas/Twos-complement
deleted file mode 120000
index 4ed9e66d7c..0000000000
--- a/Lang/Gambas/Twos-complement
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Twos-complement/Gambas
\ No newline at end of file
diff --git a/Lang/Gleam/00-LANG.txt b/Lang/Gleam/00-LANG.txt
index 6a2642caa9..1105755c96 100644
--- a/Lang/Gleam/00-LANG.txt
+++ b/Lang/Gleam/00-LANG.txt
@@ -1,5 +1,2 @@
{{stub}}{{language|Gleam|hopl=no|site=https://gleam.run/}}
-Gleam is a type-safe functional programming language that runs on the [[Erlang]] virtual machine.
-
-== Todo ==
-[https://rosettacode.org/wiki/Tasks_not_implemented_in_Gleam Tasks not implemented in Gleam]
\ No newline at end of file
+Gleam is a type-safe functional programming language that runs on the [[Erlang]] virtual machine.
\ No newline at end of file
diff --git a/Lang/Gleam/Abstract-type b/Lang/Gleam/Abstract-type
deleted file mode 120000
index e0dafb7309..0000000000
--- a/Lang/Gleam/Abstract-type
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abstract-type/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Ackermann-function b/Lang/Gleam/Ackermann-function
deleted file mode 120000
index 6d193a9b28..0000000000
--- a/Lang/Gleam/Ackermann-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ackermann-function/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Apply-a-callback-to-an-array b/Lang/Gleam/Apply-a-callback-to-an-array
deleted file mode 120000
index 45d13702b0..0000000000
--- a/Lang/Gleam/Apply-a-callback-to-an-array
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Apply-a-callback-to-an-array/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Arithmetic-Integer b/Lang/Gleam/Arithmetic-Integer
deleted file mode 120000
index cf77808968..0000000000
--- a/Lang/Gleam/Arithmetic-Integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-Integer/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Array-concatenation b/Lang/Gleam/Array-concatenation
deleted file mode 120000
index a1a9260979..0000000000
--- a/Lang/Gleam/Array-concatenation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Array-concatenation/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Array-length b/Lang/Gleam/Array-length
deleted file mode 120000
index ab180dc3f2..0000000000
--- a/Lang/Gleam/Array-length
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Array-length/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Assertions b/Lang/Gleam/Assertions
deleted file mode 120000
index aca06893a5..0000000000
--- a/Lang/Gleam/Assertions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Assertions/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Associative-array-Creation b/Lang/Gleam/Associative-array-Creation
deleted file mode 120000
index 954ca71884..0000000000
--- a/Lang/Gleam/Associative-array-Creation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Associative-array-Creation/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Binary-digits b/Lang/Gleam/Binary-digits
deleted file mode 120000
index a13df512cd..0000000000
--- a/Lang/Gleam/Binary-digits
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Binary-digits/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Catamorphism b/Lang/Gleam/Catamorphism
deleted file mode 120000
index a390f8e444..0000000000
--- a/Lang/Gleam/Catamorphism
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Catamorphism/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Comments b/Lang/Gleam/Comments
deleted file mode 120000
index e7d9705951..0000000000
--- a/Lang/Gleam/Comments
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Comments/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Compare-a-list-of-strings b/Lang/Gleam/Compare-a-list-of-strings
deleted file mode 120000
index 1669281682..0000000000
--- a/Lang/Gleam/Compare-a-list-of-strings
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compare-a-list-of-strings/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Compound-data-type b/Lang/Gleam/Compound-data-type
deleted file mode 120000
index 7cff564dfe..0000000000
--- a/Lang/Gleam/Compound-data-type
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compound-data-type/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Conditional-structures b/Lang/Gleam/Conditional-structures
deleted file mode 120000
index c889229abf..0000000000
--- a/Lang/Gleam/Conditional-structures
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Conditional-structures/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Copy-a-string b/Lang/Gleam/Copy-a-string
deleted file mode 120000
index 8cf2c44a17..0000000000
--- a/Lang/Gleam/Copy-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Copy-a-string/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Count-in-octal b/Lang/Gleam/Count-in-octal
deleted file mode 120000
index 15c2c2e9c2..0000000000
--- a/Lang/Gleam/Count-in-octal
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Count-in-octal/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Date-format b/Lang/Gleam/Date-format
deleted file mode 120000
index 328512d62f..0000000000
--- a/Lang/Gleam/Date-format
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Date-format/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Delete-a-file b/Lang/Gleam/Delete-a-file
deleted file mode 120000
index 85116e4edd..0000000000
--- a/Lang/Gleam/Delete-a-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Delete-a-file/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Detect-division-by-zero b/Lang/Gleam/Detect-division-by-zero
deleted file mode 120000
index 9eea7618bf..0000000000
--- a/Lang/Gleam/Detect-division-by-zero
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Detect-division-by-zero/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Determine-if-a-string-is-numeric b/Lang/Gleam/Determine-if-a-string-is-numeric
deleted file mode 120000
index a9d9a1d6a1..0000000000
--- a/Lang/Gleam/Determine-if-a-string-is-numeric
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-is-numeric/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Dice-game-probabilities b/Lang/Gleam/Dice-game-probabilities
deleted file mode 120000
index 1cf64df0ec..0000000000
--- a/Lang/Gleam/Dice-game-probabilities
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dice-game-probabilities/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Digital-root b/Lang/Gleam/Digital-root
deleted file mode 120000
index f4b00d8cfb..0000000000
--- a/Lang/Gleam/Digital-root
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Digital-root/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Dot-product b/Lang/Gleam/Dot-product
deleted file mode 120000
index cf4ac49af6..0000000000
--- a/Lang/Gleam/Dot-product
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dot-product/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Empty-directory b/Lang/Gleam/Empty-directory
deleted file mode 120000
index 1ce790d8fd..0000000000
--- a/Lang/Gleam/Empty-directory
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Empty-directory/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Empty-string b/Lang/Gleam/Empty-string
deleted file mode 120000
index 5b7f7b9014..0000000000
--- a/Lang/Gleam/Empty-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Empty-string/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Ethiopian-multiplication b/Lang/Gleam/Ethiopian-multiplication
deleted file mode 120000
index f93edec2ee..0000000000
--- a/Lang/Gleam/Ethiopian-multiplication
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ethiopian-multiplication/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Even-or-odd b/Lang/Gleam/Even-or-odd
deleted file mode 120000
index e725b0e8c1..0000000000
--- a/Lang/Gleam/Even-or-odd
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Even-or-odd/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Factorial b/Lang/Gleam/Factorial
deleted file mode 120000
index a5b5b846f8..0000000000
--- a/Lang/Gleam/Factorial
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factorial/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Fibonacci-sequence b/Lang/Gleam/Fibonacci-sequence
deleted file mode 120000
index 1d18c4a46d..0000000000
--- a/Lang/Gleam/Fibonacci-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fibonacci-sequence/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Filter b/Lang/Gleam/Filter
deleted file mode 120000
index 556438c396..0000000000
--- a/Lang/Gleam/Filter
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Filter/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Function-definition b/Lang/Gleam/Function-definition
deleted file mode 120000
index ba4dddd180..0000000000
--- a/Lang/Gleam/Function-definition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Function-definition/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Generic-swap b/Lang/Gleam/Generic-swap
deleted file mode 120000
index 21212ee1ef..0000000000
--- a/Lang/Gleam/Generic-swap
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Generic-swap/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Greatest-common-divisor b/Lang/Gleam/Greatest-common-divisor
deleted file mode 120000
index 9040d6ace0..0000000000
--- a/Lang/Gleam/Greatest-common-divisor
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Greatest-common-divisor/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Greatest-element-of-a-list b/Lang/Gleam/Greatest-element-of-a-list
deleted file mode 120000
index 0479d1d5ea..0000000000
--- a/Lang/Gleam/Greatest-element-of-a-list
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Greatest-element-of-a-list/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Increment-a-numerical-string b/Lang/Gleam/Increment-a-numerical-string
deleted file mode 120000
index 7bddbff85b..0000000000
--- a/Lang/Gleam/Increment-a-numerical-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Increment-a-numerical-string/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Integer-sequence b/Lang/Gleam/Integer-sequence
deleted file mode 120000
index d2b7a0c5c2..0000000000
--- a/Lang/Gleam/Integer-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Integer-sequence/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Jewels-and-stones b/Lang/Gleam/Jewels-and-stones
deleted file mode 120000
index 2eb704c9d0..0000000000
--- a/Lang/Gleam/Jewels-and-stones
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jewels-and-stones/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Kernighans-large-earthquake-problem b/Lang/Gleam/Kernighans-large-earthquake-problem
deleted file mode 120000
index 06b9c08a6c..0000000000
--- a/Lang/Gleam/Kernighans-large-earthquake-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Kernighans-large-earthquake-problem/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Look-and-say-sequence b/Lang/Gleam/Look-and-say-sequence
deleted file mode 120000
index dafdaa21e3..0000000000
--- a/Lang/Gleam/Look-and-say-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Look-and-say-sequence/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Luhn-test-of-credit-card-numbers b/Lang/Gleam/Luhn-test-of-credit-card-numbers
deleted file mode 120000
index 784acc9d8d..0000000000
--- a/Lang/Gleam/Luhn-test-of-credit-card-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Luhn-test-of-credit-card-numbers/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Multiplication-tables b/Lang/Gleam/Multiplication-tables
deleted file mode 120000
index 4745c27425..0000000000
--- a/Lang/Gleam/Multiplication-tables
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Multiplication-tables/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Nth b/Lang/Gleam/Nth
deleted file mode 120000
index 9607d54630..0000000000
--- a/Lang/Gleam/Nth
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nth/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Order-by-pair-comparisons b/Lang/Gleam/Order-by-pair-comparisons
deleted file mode 120000
index fc683495ba..0000000000
--- a/Lang/Gleam/Order-by-pair-comparisons
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Order-by-pair-comparisons/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Primality-by-Wilsons-theorem b/Lang/Gleam/Primality-by-Wilsons-theorem
deleted file mode 120000
index 96d456e3fb..0000000000
--- a/Lang/Gleam/Primality-by-Wilsons-theorem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Primality-by-Wilsons-theorem/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/RPG-attributes-generator b/Lang/Gleam/RPG-attributes-generator
deleted file mode 120000
index 800e60ff4c..0000000000
--- a/Lang/Gleam/RPG-attributes-generator
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/RPG-attributes-generator/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Repeat b/Lang/Gleam/Repeat
deleted file mode 120000
index fab6759fe5..0000000000
--- a/Lang/Gleam/Repeat
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Repeat/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Repeat-a-string b/Lang/Gleam/Repeat-a-string
deleted file mode 120000
index 587cd9830b..0000000000
--- a/Lang/Gleam/Repeat-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Repeat-a-string/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Set b/Lang/Gleam/Set
deleted file mode 120000
index c138abd777..0000000000
--- a/Lang/Gleam/Set
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Set/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Sort-an-integer-array b/Lang/Gleam/Sort-an-integer-array
deleted file mode 120000
index 39c8723c40..0000000000
--- a/Lang/Gleam/Sort-an-integer-array
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-an-integer-array/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Sorting-algorithms-Quicksort b/Lang/Gleam/Sorting-algorithms-Quicksort
deleted file mode 120000
index f1e07b6052..0000000000
--- a/Lang/Gleam/Sorting-algorithms-Quicksort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Quicksort/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Stack b/Lang/Gleam/Stack
deleted file mode 120000
index 174c4b56e2..0000000000
--- a/Lang/Gleam/Stack
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Stack/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/String-append b/Lang/Gleam/String-append
deleted file mode 120000
index 8450c82d83..0000000000
--- a/Lang/Gleam/String-append
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-append/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/String-length b/Lang/Gleam/String-length
deleted file mode 120000
index f57922e1a7..0000000000
--- a/Lang/Gleam/String-length
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-length/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/String-prepend b/Lang/Gleam/String-prepend
deleted file mode 120000
index a7f4b33fae..0000000000
--- a/Lang/Gleam/String-prepend
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-prepend/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Sum-and-product-of-an-array b/Lang/Gleam/Sum-and-product-of-an-array
deleted file mode 120000
index 15ce85c799..0000000000
--- a/Lang/Gleam/Sum-and-product-of-an-array
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sum-and-product-of-an-array/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Sum-digits-of-an-integer b/Lang/Gleam/Sum-digits-of-an-integer
deleted file mode 120000
index cfe6f1a5d3..0000000000
--- a/Lang/Gleam/Sum-digits-of-an-integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sum-digits-of-an-integer/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Sum-multiples-of-3-and-5 b/Lang/Gleam/Sum-multiples-of-3-and-5
deleted file mode 120000
index 3e5a3657a3..0000000000
--- a/Lang/Gleam/Sum-multiples-of-3-and-5
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sum-multiples-of-3-and-5/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Sum-of-squares b/Lang/Gleam/Sum-of-squares
deleted file mode 120000
index 34f0e02665..0000000000
--- a/Lang/Gleam/Sum-of-squares
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sum-of-squares/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Symmetric-difference b/Lang/Gleam/Symmetric-difference
deleted file mode 120000
index 51ff7c4a32..0000000000
--- a/Lang/Gleam/Symmetric-difference
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Symmetric-difference/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Temperature-conversion b/Lang/Gleam/Temperature-conversion
deleted file mode 120000
index 2d1d9f16a7..0000000000
--- a/Lang/Gleam/Temperature-conversion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Temperature-conversion/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Tree-traversal b/Lang/Gleam/Tree-traversal
deleted file mode 120000
index b8d43d9b74..0000000000
--- a/Lang/Gleam/Tree-traversal
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tree-traversal/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Variables b/Lang/Gleam/Variables
deleted file mode 120000
index b43723c7ff..0000000000
--- a/Lang/Gleam/Variables
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Variables/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Vector-products b/Lang/Gleam/Vector-products
deleted file mode 120000
index e08e49670f..0000000000
--- a/Lang/Gleam/Vector-products
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Vector-products/Gleam
\ No newline at end of file
diff --git a/Lang/Gleam/Water-collected-between-towers b/Lang/Gleam/Water-collected-between-towers
deleted file mode 120000
index 787299f258..0000000000
--- a/Lang/Gleam/Water-collected-between-towers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Water-collected-between-towers/Gleam
\ No newline at end of file
diff --git a/Lang/Go/Bifid-cipher b/Lang/Go/Bifid-cipher
deleted file mode 120000
index 329ffb397d..0000000000
--- a/Lang/Go/Bifid-cipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bifid-cipher/Go
\ No newline at end of file
diff --git a/Lang/Go/Bioinformatics-base-count b/Lang/Go/Bioinformatics-base-count
new file mode 120000
index 0000000000..485b68c3c6
--- /dev/null
+++ b/Lang/Go/Bioinformatics-base-count
@@ -0,0 +1 @@
+../../Task/Bioinformatics-base-count/Go
\ No newline at end of file
diff --git a/Lang/Go/Boyer-Moore-string-search b/Lang/Go/Boyer-Moore-string-search
deleted file mode 120000
index 0b971fdf3b..0000000000
--- a/Lang/Go/Boyer-Moore-string-search
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Boyer-Moore-string-search/Go
\ No newline at end of file
diff --git a/Lang/Go/Camel-case-and-snake-case b/Lang/Go/Camel-case-and-snake-case
deleted file mode 120000
index 580007cb79..0000000000
--- a/Lang/Go/Camel-case-and-snake-case
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Camel-case-and-snake-case/Go
\ No newline at end of file
diff --git a/Lang/Go/Distance-and-Bearing b/Lang/Go/Distance-and-Bearing
deleted file mode 120000
index 566b8d5b53..0000000000
--- a/Lang/Go/Distance-and-Bearing
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Distance-and-Bearing/Go
\ No newline at end of file
diff --git a/Lang/Go/Factorial-primes b/Lang/Go/Factorial-primes
deleted file mode 120000
index 5b25426fd0..0000000000
--- a/Lang/Go/Factorial-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factorial-primes/Go
\ No newline at end of file
diff --git a/Lang/Go/Goldbachs-comet b/Lang/Go/Goldbachs-comet
deleted file mode 120000
index e80a90c082..0000000000
--- a/Lang/Go/Goldbachs-comet
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Goldbachs-comet/Go
\ No newline at end of file
diff --git a/Lang/Go/Meissel-Mertens-constant b/Lang/Go/Meissel-Mertens-constant
new file mode 120000
index 0000000000..8c13ff2d6b
--- /dev/null
+++ b/Lang/Go/Meissel-Mertens-constant
@@ -0,0 +1 @@
+../../Task/Meissel-Mertens-constant/Go
\ No newline at end of file
diff --git a/Lang/Go/Miller-Rabin-primality-test b/Lang/Go/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..c9da74462b
--- /dev/null
+++ b/Lang/Go/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/Go
\ No newline at end of file
diff --git a/Lang/Go/P-Adic-square-roots b/Lang/Go/P-Adic-square-roots
deleted file mode 120000
index 064157bec0..0000000000
--- a/Lang/Go/P-Adic-square-roots
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/P-Adic-square-roots/Go
\ No newline at end of file
diff --git a/Lang/Go/Quaternion-type b/Lang/Go/Quaternion-type
new file mode 120000
index 0000000000..e62c595975
--- /dev/null
+++ b/Lang/Go/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/Go
\ No newline at end of file
diff --git a/Lang/Go/Sequence:-nth-number-with-exactly-n-divisors b/Lang/Go/Sequence-nth-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/Go/Sequence:-nth-number-with-exactly-n-divisors
rename to Lang/Go/Sequence-nth-number-with-exactly-n-divisors
diff --git a/Lang/Go/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors b/Lang/Go/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
similarity index 100%
rename from Lang/Go/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors
rename to Lang/Go/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
diff --git a/Lang/Go/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/Go/Sequence-smallest-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/Go/Sequence:-smallest-number-with-exactly-n-divisors
rename to Lang/Go/Sequence-smallest-number-with-exactly-n-divisors
diff --git a/Lang/Go/Simple-turtle-graphics b/Lang/Go/Simple-turtle-graphics
deleted file mode 120000
index 81f4233716..0000000000
--- a/Lang/Go/Simple-turtle-graphics
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Simple-turtle-graphics/Go
\ No newline at end of file
diff --git a/Lang/Go/Sorting-Algorithms-Circle-Sort b/Lang/Go/Sorting-Algorithms-Circle-Sort
new file mode 120000
index 0000000000..1288f4ddcf
--- /dev/null
+++ b/Lang/Go/Sorting-Algorithms-Circle-Sort
@@ -0,0 +1 @@
+../../Task/Sorting-Algorithms-Circle-Sort/Go
\ No newline at end of file
diff --git a/Lang/Go/Terminal-control-Unicode-output b/Lang/Go/Terminal-control-Unicode-output
new file mode 120000
index 0000000000..7532989408
--- /dev/null
+++ b/Lang/Go/Terminal-control-Unicode-output
@@ -0,0 +1 @@
+../../Task/Terminal-control-Unicode-output/Go
\ No newline at end of file
diff --git a/Lang/Goboscript/00-LANG.txt b/Lang/Goboscript/00-LANG.txt
deleted file mode 100644
index fbf55e819e..0000000000
--- a/Lang/Goboscript/00-LANG.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-{{stub}}{{language
-|tags=compiled, transpiled, Scratch
-| site=https://aspizu.github.io/goboscript/
-|parampass=value
-|goboscript}}
-
-From [https://github.com/aspizu/goboscript/ the goboscript repo]:
-
-goboscript is a text-based programming language that compiles to Scratch. Write Scratch projects in text, and compile it into a .sb3 file -- which can be opened in the Scratch editor, TurboWarp or be uploaded to the Scratch website.
-
-===Package managers===
-Despite being a relatively new programming language, goboscript has multiple package managers.
-
-* [https://github.com/aspizu/backpack backpack] - The official goboscript package manager
-* [https://github.com/inflated-goboscript/inflator inflator] - A more powerful package manager inspired by Python's pip
\ No newline at end of file
diff --git a/Lang/Goboscript/00-META.yaml b/Lang/Goboscript/00-META.yaml
deleted file mode 100644
index 48464a36ad..0000000000
--- a/Lang/Goboscript/00-META.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-from: http://rosettacode.org/wiki/Category:Goboscript
diff --git a/Lang/Goboscript/100-doors b/Lang/Goboscript/100-doors
deleted file mode 120000
index 293aa8a0f0..0000000000
--- a/Lang/Goboscript/100-doors
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/100-doors/Goboscript
\ No newline at end of file
diff --git a/Lang/Goboscript/99-bottles-of-beer b/Lang/Goboscript/99-bottles-of-beer
deleted file mode 120000
index 5a60ef7f8c..0000000000
--- a/Lang/Goboscript/99-bottles-of-beer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/99-bottles-of-beer/Goboscript
\ No newline at end of file
diff --git a/Lang/Goboscript/Arithmetic-Complex b/Lang/Goboscript/Arithmetic-Complex
deleted file mode 120000
index ed35177c3c..0000000000
--- a/Lang/Goboscript/Arithmetic-Complex
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-Complex/Goboscript
\ No newline at end of file
diff --git a/Lang/Golfscript/00-LANG.txt b/Lang/Golfscript/00-LANG.txt
index ce1ed4276d..67be1df4fd 100644
--- a/Lang/Golfscript/00-LANG.txt
+++ b/Lang/Golfscript/00-LANG.txt
@@ -1,10 +1,5 @@
{{language|GolfScript
|site=http://www.golfscript.com/golfscript/index.html
}}
-{{try|Golfscript|[https://tio.run/#golfscript Try Golfscript on tio.run].}}
{{language programming paradigm|Concatenative}}
-GolfScript is a stack oriented esoteric programming language aimed at solving problems (holes) in as few keystrokes as possible. It also aims to be simple and easy to write.
-
-== External links ==
-* [https://golfscript.com/golfscript/ Official website]
-* [https://codegolf.stackexchange.com/questions/5264/tips-for-golfing-in-golfscript Tips for golfing in Golfscript]
\ No newline at end of file
+GolfScript is a stack oriented esoteric programming language aimed at solving problems (holes) in as few keystrokes as possible. It also aims to be simple and easy to write.
\ No newline at end of file
diff --git a/Lang/Golfscript/Primality-by-trial-division b/Lang/Golfscript/Primality-by-trial-division
deleted file mode 120000
index 42e31431cb..0000000000
--- a/Lang/Golfscript/Primality-by-trial-division
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Primality-by-trial-division/Golfscript
\ No newline at end of file
diff --git a/Lang/Groovy/Empty-program b/Lang/Groovy/Empty-program
new file mode 120000
index 0000000000..8d1c7a42ae
--- /dev/null
+++ b/Lang/Groovy/Empty-program
@@ -0,0 +1 @@
+../../Task/Empty-program/Groovy
\ No newline at end of file
diff --git a/Lang/Guile/2048 b/Lang/Guile/2048
deleted file mode 120000
index 69532585e1..0000000000
--- a/Lang/Guile/2048
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/2048/Guile
\ No newline at end of file
diff --git a/Lang/Guile/A+B b/Lang/Guile/A+B
deleted file mode 120000
index ea7ff34909..0000000000
--- a/Lang/Guile/A+B
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/A+B/Guile
\ No newline at end of file
diff --git a/Lang/Guile/MD5-Implementation b/Lang/Guile/MD5-Implementation
deleted file mode 120000
index c467572ebf..0000000000
--- a/Lang/Guile/MD5-Implementation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/MD5-Implementation/Guile
\ No newline at end of file
diff --git a/Lang/Guish/00-LANG.txt b/Lang/Guish/00-LANG.txt
index e15298f7c3..593da31c91 100644
--- a/Lang/Guish/00-LANG.txt
+++ b/Lang/Guish/00-LANG.txt
@@ -1016,7 +1016,7 @@ Any element that's not a page has a particular text alignment that can be change
-Francesco Palumbo
+Francesco Palumbo <phranz@subfc.net>
= THANKS =
diff --git a/Lang/HPPPL/A+B b/Lang/HPPPL/A+B
deleted file mode 120000
index dd8d8fff42..0000000000
--- a/Lang/HPPPL/A+B
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/A+B/HPPPL
\ No newline at end of file
diff --git a/Lang/HPPPL/Ackermann-function b/Lang/HPPPL/Ackermann-function
deleted file mode 120000
index ff1ef99b52..0000000000
--- a/Lang/HPPPL/Ackermann-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ackermann-function/HPPPL
\ No newline at end of file
diff --git a/Lang/HPPPL/Babbage-problem b/Lang/HPPPL/Babbage-problem
deleted file mode 120000
index 441aa0d4f6..0000000000
--- a/Lang/HPPPL/Babbage-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Babbage-problem/HPPPL
\ No newline at end of file
diff --git a/Lang/HPPPL/Jacobsthal-numbers b/Lang/HPPPL/Jacobsthal-numbers
deleted file mode 120000
index 5f5706ea3b..0000000000
--- a/Lang/HPPPL/Jacobsthal-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jacobsthal-numbers/HPPPL
\ No newline at end of file
diff --git a/Lang/HPPPL/Jaro-similarity b/Lang/HPPPL/Jaro-similarity
deleted file mode 120000
index 022c80a0a8..0000000000
--- a/Lang/HPPPL/Jaro-similarity
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jaro-similarity/HPPPL
\ No newline at end of file
diff --git a/Lang/HPPPL/Numbers-with-equal-rises-and-falls b/Lang/HPPPL/Numbers-with-equal-rises-and-falls
deleted file mode 120000
index 7d6ca5c6b5..0000000000
--- a/Lang/HPPPL/Numbers-with-equal-rises-and-falls
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Numbers-with-equal-rises-and-falls/HPPPL
\ No newline at end of file
diff --git a/Lang/HPPPL/Primality-by-trial-division b/Lang/HPPPL/Primality-by-trial-division
deleted file mode 120000
index 2127fa3655..0000000000
--- a/Lang/HPPPL/Primality-by-trial-division
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Primality-by-trial-division/HPPPL
\ No newline at end of file
diff --git a/Lang/HPPPL/Tau-number b/Lang/HPPPL/Tau-number
deleted file mode 120000
index 1180967c35..0000000000
--- a/Lang/HPPPL/Tau-number
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tau-number/HPPPL
\ No newline at end of file
diff --git a/Lang/Hare/Execute-Brain- b/Lang/Hare/Execute-Brain-
deleted file mode 120000
index dc8caabad0..0000000000
--- a/Lang/Hare/Execute-Brain-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Execute-Brain-/Hare
\ No newline at end of file
diff --git a/Lang/Haskell/00-LANG.txt b/Lang/Haskell/00-LANG.txt
index 9b79cdd879..fe49ebce44 100644
--- a/Lang/Haskell/00-LANG.txt
+++ b/Lang/Haskell/00-LANG.txt
@@ -20,5 +20,5 @@ Linspire GNU/[[Linux]] chose Haskell for system tools development.
==Citations==
* [[wp:Haskell_%28programming_language%29|Wikipedia:Haskell (programming language)]]
-==Unimplemented Tasks==
-* [[Tasks_not_implemented_in_Haskell|Haskell Unimplemented]]
\ No newline at end of file
+==Todo==
+[[Reports:Tasks_not_implemented_in_Haskell]]
\ No newline at end of file
diff --git a/Lang/Haskell/Arithmetic-numbers b/Lang/Haskell/Arithmetic-numbers
deleted file mode 120000
index ca4dc61dcb..0000000000
--- a/Lang/Haskell/Arithmetic-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-numbers/Haskell
\ No newline at end of file
diff --git a/Lang/Haskell/Ascending-primes b/Lang/Haskell/Ascending-primes
deleted file mode 120000
index 443d61be19..0000000000
--- a/Lang/Haskell/Ascending-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ascending-primes/Haskell
\ No newline at end of file
diff --git a/Lang/Haskell/Bifid-cipher b/Lang/Haskell/Bifid-cipher
deleted file mode 120000
index e9402d0afc..0000000000
--- a/Lang/Haskell/Bifid-cipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bifid-cipher/Haskell
\ No newline at end of file
diff --git a/Lang/Haskell/Bioinformatics-Global-alignment b/Lang/Haskell/Bioinformatics-Global-alignment
deleted file mode 120000
index adcd5f4ce2..0000000000
--- a/Lang/Haskell/Bioinformatics-Global-alignment
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bioinformatics-Global-alignment/Haskell
\ No newline at end of file
diff --git a/Lang/Haskell/Bioinformatics-base-count b/Lang/Haskell/Bioinformatics-base-count
new file mode 120000
index 0000000000..cf913dcdcd
--- /dev/null
+++ b/Lang/Haskell/Bioinformatics-base-count
@@ -0,0 +1 @@
+../../Task/Bioinformatics-base-count/Haskell
\ No newline at end of file
diff --git a/Lang/Haskell/Cistercian-numerals b/Lang/Haskell/Cistercian-numerals
deleted file mode 120000
index 2a13541c88..0000000000
--- a/Lang/Haskell/Cistercian-numerals
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cistercian-numerals/Haskell
\ No newline at end of file
diff --git a/Lang/Haskell/Deceptive-numbers b/Lang/Haskell/Deceptive-numbers
deleted file mode 120000
index 6fa6eb6011..0000000000
--- a/Lang/Haskell/Deceptive-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Deceptive-numbers/Haskell
\ No newline at end of file
diff --git a/Lang/Haskell/Descending-primes b/Lang/Haskell/Descending-primes
deleted file mode 120000
index 58817d1239..0000000000
--- a/Lang/Haskell/Descending-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Descending-primes/Haskell
\ No newline at end of file
diff --git a/Lang/Haskell/Duffinian-numbers b/Lang/Haskell/Duffinian-numbers
deleted file mode 120000
index 282d30bb6b..0000000000
--- a/Lang/Haskell/Duffinian-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Duffinian-numbers/Haskell
\ No newline at end of file
diff --git a/Lang/Haskell/Factorial-primes b/Lang/Haskell/Factorial-primes
deleted file mode 120000
index 004f7e5f7d..0000000000
--- a/Lang/Haskell/Factorial-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factorial-primes/Haskell
\ No newline at end of file
diff --git a/Lang/Haskell/Jordan-P-lya-numbers b/Lang/Haskell/Jordan-P-lya-numbers
deleted file mode 120000
index 0e7225789a..0000000000
--- a/Lang/Haskell/Jordan-P-lya-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jordan-P-lya-numbers/Haskell
\ No newline at end of file
diff --git a/Lang/Haskell/Miller-Rabin-primality-test b/Lang/Haskell/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..c41f1ba06c
--- /dev/null
+++ b/Lang/Haskell/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/Haskell
\ No newline at end of file
diff --git a/Lang/Haskell/Mouse-position b/Lang/Haskell/Mouse-position
deleted file mode 120000
index 842d59376f..0000000000
--- a/Lang/Haskell/Mouse-position
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Mouse-position/Haskell
\ No newline at end of file
diff --git a/Lang/Haskell/Pathological-floating-point-problems b/Lang/Haskell/Pathological-floating-point-problems
deleted file mode 120000
index f17bacf62a..0000000000
--- a/Lang/Haskell/Pathological-floating-point-problems
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pathological-floating-point-problems/Haskell
\ No newline at end of file
diff --git a/Lang/Haskell/Quaternion-type b/Lang/Haskell/Quaternion-type
new file mode 120000
index 0000000000..14aca84bfa
--- /dev/null
+++ b/Lang/Haskell/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/Haskell
\ No newline at end of file
diff --git a/Lang/Haskell/Sequence:-nth-number-with-exactly-n-divisors b/Lang/Haskell/Sequence-nth-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/Haskell/Sequence:-nth-number-with-exactly-n-divisors
rename to Lang/Haskell/Sequence-nth-number-with-exactly-n-divisors
diff --git a/Lang/Haskell/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors b/Lang/Haskell/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
similarity index 100%
rename from Lang/Haskell/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors
rename to Lang/Haskell/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
diff --git a/Lang/Haskell/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/Haskell/Sequence-smallest-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/Haskell/Sequence:-smallest-number-with-exactly-n-divisors
rename to Lang/Haskell/Sequence-smallest-number-with-exactly-n-divisors
diff --git a/Lang/Haskell/Sorting-Algorithms-Circle-Sort b/Lang/Haskell/Sorting-Algorithms-Circle-Sort
new file mode 120000
index 0000000000..7f6f1559db
--- /dev/null
+++ b/Lang/Haskell/Sorting-Algorithms-Circle-Sort
@@ -0,0 +1 @@
+../../Task/Sorting-Algorithms-Circle-Sort/Haskell
\ No newline at end of file
diff --git a/Lang/Haskell/Strassens-algorithm b/Lang/Haskell/Strassens-algorithm
deleted file mode 120000
index f39dbbfd50..0000000000
--- a/Lang/Haskell/Strassens-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strassens-algorithm/Haskell
\ No newline at end of file
diff --git a/Lang/Haxe/Abstract-type b/Lang/Haxe/Abstract-type
deleted file mode 120000
index 6ff9aba1f6..0000000000
--- a/Lang/Haxe/Abstract-type
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abstract-type/Haxe
\ No newline at end of file
diff --git a/Lang/Haxe/Apply-a-callback-to-an-array b/Lang/Haxe/Apply-a-callback-to-an-array
deleted file mode 120000
index 6fdb21da75..0000000000
--- a/Lang/Haxe/Apply-a-callback-to-an-array
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Apply-a-callback-to-an-array/Haxe
\ No newline at end of file
diff --git a/Lang/Haxe/Arrays b/Lang/Haxe/Arrays
deleted file mode 120000
index bd303e4884..0000000000
--- a/Lang/Haxe/Arrays
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arrays/Haxe
\ No newline at end of file
diff --git a/Lang/Haxe/Associative-array-Creation b/Lang/Haxe/Associative-array-Creation
deleted file mode 120000
index 38347f6de6..0000000000
--- a/Lang/Haxe/Associative-array-Creation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Associative-array-Creation/Haxe
\ No newline at end of file
diff --git a/Lang/Haxe/Associative-array-Iteration b/Lang/Haxe/Associative-array-Iteration
deleted file mode 120000
index aa7c7951b8..0000000000
--- a/Lang/Haxe/Associative-array-Iteration
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Associative-array-Iteration/Haxe
\ No newline at end of file
diff --git a/Lang/Haxe/Binary-digits b/Lang/Haxe/Binary-digits
deleted file mode 120000
index 9bf8952c0d..0000000000
--- a/Lang/Haxe/Binary-digits
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Binary-digits/Haxe
\ No newline at end of file
diff --git a/Lang/Haxe/Boolean-values b/Lang/Haxe/Boolean-values
deleted file mode 120000
index b5ef0e7d8b..0000000000
--- a/Lang/Haxe/Boolean-values
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Boolean-values/Haxe
\ No newline at end of file
diff --git a/Lang/Haxe/Call-an-object-method b/Lang/Haxe/Call-an-object-method
deleted file mode 120000
index 953d02b76c..0000000000
--- a/Lang/Haxe/Call-an-object-method
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Call-an-object-method/Haxe
\ No newline at end of file
diff --git a/Lang/Haxe/Character-codes b/Lang/Haxe/Character-codes
deleted file mode 120000
index 92ab060a1a..0000000000
--- a/Lang/Haxe/Character-codes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Character-codes/Haxe
\ No newline at end of file
diff --git a/Lang/Haxe/Classes b/Lang/Haxe/Classes
deleted file mode 120000
index 5c922938d4..0000000000
--- a/Lang/Haxe/Classes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Classes/Haxe
\ No newline at end of file
diff --git a/Lang/IDL/00-LANG.txt b/Lang/IDL/00-LANG.txt
index fed6398ad2..ef4aad38d6 100644
--- a/Lang/IDL/00-LANG.txt
+++ b/Lang/IDL/00-LANG.txt
@@ -1,4 +1,4 @@
{{stub}}{{language|IDL}}
IDL (Interactive Data Language) is an [[array]] programming language designed by David Stern.
[[wp:IDL_%28programming_language%29|Wikipedia article]]
-(free implementation: GDL - GNU Data Language https://github.com/gnudatalanguage/gdl)
\ No newline at end of file
+(free implementation: GDL - GNU Data Language http://gnudatalanguage.sourceforge.net)
\ No newline at end of file
diff --git a/Lang/IS-BASIC/Determine-if-a-string-has-all-the-same-characters b/Lang/IS-BASIC/Determine-if-a-string-has-all-the-same-characters
deleted file mode 120000
index 3a0ac72c5c..0000000000
--- a/Lang/IS-BASIC/Determine-if-a-string-has-all-the-same-characters
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-has-all-the-same-characters/IS-BASIC
\ No newline at end of file
diff --git a/Lang/Icon/00-LANG.txt b/Lang/Icon/00-LANG.txt
index 16054a3927..6d6b15bfc2 100644
--- a/Lang/Icon/00-LANG.txt
+++ b/Lang/Icon/00-LANG.txt
@@ -39,7 +39,5 @@ Several extensions of Icon were developed to improve functionality. Many of the
* [[Icon%2BUnicon/Intro|An introduction to Icon and Unicon for Rosetta Code]]
* [[:Category:Icon/Omit|Unimplementable tasks]]
* [[:Category:Icon_examples_needing_attention|Tasks requiring attention]]
-* [[:Category:Icon_Programming_Library|The Icon Programming Library]]
-
-==Todo==
-* [[Tasks not implemented in Icon]]
\ No newline at end of file
+* [[Reports:Tasks_not_implemented_in_Icon|Tasks not yet implemented]]
+* [[:Category:Icon_Programming_Library|The Icon Programming Library]]
\ No newline at end of file
diff --git a/Lang/Icon/100-prisoners b/Lang/Icon/100-prisoners
deleted file mode 120000
index 9bc15827ac..0000000000
--- a/Lang/Icon/100-prisoners
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/100-prisoners/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Additive-primes b/Lang/Icon/Additive-primes
deleted file mode 120000
index f7253ea73d..0000000000
--- a/Lang/Icon/Additive-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Additive-primes/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Amicable-pairs b/Lang/Icon/Amicable-pairs
deleted file mode 120000
index 13242a82ae..0000000000
--- a/Lang/Icon/Amicable-pairs
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Amicable-pairs/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Anti-primes b/Lang/Icon/Anti-primes
deleted file mode 120000
index 63243658da..0000000000
--- a/Lang/Icon/Anti-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Anti-primes/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Ascending-primes b/Lang/Icon/Ascending-primes
deleted file mode 120000
index e30e0fc896..0000000000
--- a/Lang/Icon/Ascending-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ascending-primes/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Attractive-numbers b/Lang/Icon/Attractive-numbers
deleted file mode 120000
index 743b113011..0000000000
--- a/Lang/Icon/Attractive-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Attractive-numbers/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Babbage-problem b/Lang/Icon/Babbage-problem
deleted file mode 120000
index 735fcc5c8a..0000000000
--- a/Lang/Icon/Babbage-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Babbage-problem/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Bin-given-limits b/Lang/Icon/Bin-given-limits
deleted file mode 120000
index 39a04e7b2e..0000000000
--- a/Lang/Icon/Bin-given-limits
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bin-given-limits/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Brilliant-numbers b/Lang/Icon/Brilliant-numbers
deleted file mode 120000
index 1a8f34ef87..0000000000
--- a/Lang/Icon/Brilliant-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Brilliant-numbers/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Colorful-numbers b/Lang/Icon/Colorful-numbers
deleted file mode 120000
index d1f1a0b56b..0000000000
--- a/Lang/Icon/Colorful-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Colorful-numbers/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Compare-length-of-two-strings b/Lang/Icon/Compare-length-of-two-strings
deleted file mode 120000
index beabf2e98e..0000000000
--- a/Lang/Icon/Compare-length-of-two-strings
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compare-length-of-two-strings/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Copy-stdin-to-stdout b/Lang/Icon/Copy-stdin-to-stdout
deleted file mode 120000
index 7a52714a89..0000000000
--- a/Lang/Icon/Copy-stdin-to-stdout
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Copy-stdin-to-stdout/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Curzon-numbers b/Lang/Icon/Curzon-numbers
deleted file mode 120000
index 4ee931a90d..0000000000
--- a/Lang/Icon/Curzon-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Curzon-numbers/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Damm-algorithm b/Lang/Icon/Damm-algorithm
deleted file mode 120000
index 67c033a005..0000000000
--- a/Lang/Icon/Damm-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Damm-algorithm/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Department-numbers b/Lang/Icon/Department-numbers
deleted file mode 120000
index ce0a0885c3..0000000000
--- a/Lang/Icon/Department-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Department-numbers/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Descending-primes b/Lang/Icon/Descending-primes
deleted file mode 120000
index c0f125d9e3..0000000000
--- a/Lang/Icon/Descending-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Descending-primes/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Determine-if-a-string-is-collapsible b/Lang/Icon/Determine-if-a-string-is-collapsible
deleted file mode 120000
index d589db9f61..0000000000
--- a/Lang/Icon/Determine-if-a-string-is-collapsible
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-is-collapsible/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Determine-if-a-string-is-squeezable b/Lang/Icon/Determine-if-a-string-is-squeezable
deleted file mode 120000
index 46209569af..0000000000
--- a/Lang/Icon/Determine-if-a-string-is-squeezable
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-is-squeezable/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Disarium-numbers b/Lang/Icon/Disarium-numbers
deleted file mode 120000
index 12c9e05e7d..0000000000
--- a/Lang/Icon/Disarium-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Disarium-numbers/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Duffinian-numbers b/Lang/Icon/Duffinian-numbers
deleted file mode 120000
index 5897c057e3..0000000000
--- a/Lang/Icon/Duffinian-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Duffinian-numbers/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Exponentiation-order b/Lang/Icon/Exponentiation-order
deleted file mode 120000
index c87e5174b5..0000000000
--- a/Lang/Icon/Exponentiation-order
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Exponentiation-order/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Exponentiation-with-infix-operators-in-or-operating-on-the-base b/Lang/Icon/Exponentiation-with-infix-operators-in-or-operating-on-the-base
deleted file mode 120000
index 08ed217100..0000000000
--- a/Lang/Icon/Exponentiation-with-infix-operators-in-or-operating-on-the-base
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Exponentiation-with-infix-operators-in-or-operating-on-the-base/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Gapful-numbers b/Lang/Icon/Gapful-numbers
deleted file mode 120000
index fc3d78f9a2..0000000000
--- a/Lang/Icon/Gapful-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Gapful-numbers/Icon
\ No newline at end of file
diff --git a/Lang/Icon/General-FizzBuzz b/Lang/Icon/General-FizzBuzz
deleted file mode 120000
index ea33dc312a..0000000000
--- a/Lang/Icon/General-FizzBuzz
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/General-FizzBuzz/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Halt-and-catch-fire b/Lang/Icon/Halt-and-catch-fire
deleted file mode 120000
index cc36db873b..0000000000
--- a/Lang/Icon/Halt-and-catch-fire
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Halt-and-catch-fire/Icon
\ No newline at end of file
diff --git a/Lang/Icon/History-variables b/Lang/Icon/History-variables
deleted file mode 120000
index 3757ea49f2..0000000000
--- a/Lang/Icon/History-variables
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/History-variables/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Humble-numbers b/Lang/Icon/Humble-numbers
deleted file mode 120000
index 4ff6385336..0000000000
--- a/Lang/Icon/Humble-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Humble-numbers/Icon
\ No newline at end of file
diff --git a/Lang/Icon/JSON b/Lang/Icon/JSON
deleted file mode 120000
index cac5544cb8..0000000000
--- a/Lang/Icon/JSON
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/JSON/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Jewels-and-stones b/Lang/Icon/Jewels-and-stones
deleted file mode 120000
index 5dee8d7cee..0000000000
--- a/Lang/Icon/Jewels-and-stones
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jewels-and-stones/Icon
\ No newline at end of file
diff --git a/Lang/Icon/JortSort b/Lang/Icon/JortSort
deleted file mode 120000
index f9d0bbf2dd..0000000000
--- a/Lang/Icon/JortSort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/JortSort/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Kernighans-large-earthquake-problem b/Lang/Icon/Kernighans-large-earthquake-problem
deleted file mode 120000
index c766366430..0000000000
--- a/Lang/Icon/Kernighans-large-earthquake-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Kernighans-large-earthquake-problem/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Largest-number-divisible-by-its-digits b/Lang/Icon/Largest-number-divisible-by-its-digits
deleted file mode 120000
index 13b83b49d7..0000000000
--- a/Lang/Icon/Largest-number-divisible-by-its-digits
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Largest-number-divisible-by-its-digits/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Largest-proper-divisor-of-n b/Lang/Icon/Largest-proper-divisor-of-n
deleted file mode 120000
index 31002a6508..0000000000
--- a/Lang/Icon/Largest-proper-divisor-of-n
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Largest-proper-divisor-of-n/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Longest-common-substring b/Lang/Icon/Longest-common-substring
deleted file mode 120000
index 911a5f7a03..0000000000
--- a/Lang/Icon/Longest-common-substring
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Longest-common-substring/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Loops-Increment-loop-index-within-loop-body b/Lang/Icon/Loops-Increment-loop-index-within-loop-body
deleted file mode 120000
index 19c94ce3da..0000000000
--- a/Lang/Icon/Loops-Increment-loop-index-within-loop-body
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Increment-loop-index-within-loop-body/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Loops-Wrong-ranges b/Lang/Icon/Loops-Wrong-ranges
deleted file mode 120000
index 0317af2079..0000000000
--- a/Lang/Icon/Loops-Wrong-ranges
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Wrong-ranges/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Lychrel-numbers b/Lang/Icon/Lychrel-numbers
deleted file mode 120000
index 17b9194dd0..0000000000
--- a/Lang/Icon/Lychrel-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Lychrel-numbers/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Matrix-exponentiation-operator b/Lang/Icon/Matrix-exponentiation-operator
deleted file mode 120000
index 7d0b44e7a5..0000000000
--- a/Lang/Icon/Matrix-exponentiation-operator
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Matrix-exponentiation-operator/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Mian-Chowla-sequence b/Lang/Icon/Mian-Chowla-sequence
deleted file mode 120000
index c2755bd935..0000000000
--- a/Lang/Icon/Mian-Chowla-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Mian-Chowla-sequence/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Miller-Rabin-primality-test b/Lang/Icon/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..0a9d526a8b
--- /dev/null
+++ b/Lang/Icon/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Minimum-multiple-of-m-where-digital-sum-equals-m b/Lang/Icon/Minimum-multiple-of-m-where-digital-sum-equals-m
deleted file mode 120000
index e9ef6d5260..0000000000
--- a/Lang/Icon/Minimum-multiple-of-m-where-digital-sum-equals-m
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Minimum-multiple-of-m-where-digital-sum-equals-m/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Palindromic-gapful-numbers b/Lang/Icon/Palindromic-gapful-numbers
deleted file mode 120000
index 0baaac39e3..0000000000
--- a/Lang/Icon/Palindromic-gapful-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Palindromic-gapful-numbers/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Perfect-shuffle b/Lang/Icon/Perfect-shuffle
deleted file mode 120000
index 6f3471d6c3..0000000000
--- a/Lang/Icon/Perfect-shuffle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Perfect-shuffle/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Repeat b/Lang/Icon/Repeat
deleted file mode 120000
index c83ed88406..0000000000
--- a/Lang/Icon/Repeat
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Repeat/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Search-a-list-of-records b/Lang/Icon/Search-a-list-of-records
deleted file mode 120000
index b796eca599..0000000000
--- a/Lang/Icon/Search-a-list-of-records
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Search-a-list-of-records/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Sort-numbers-lexicographically b/Lang/Icon/Sort-numbers-lexicographically
deleted file mode 120000
index 7c99f7d928..0000000000
--- a/Lang/Icon/Sort-numbers-lexicographically
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-numbers-lexicographically/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Tau-function b/Lang/Icon/Tau-function
deleted file mode 120000
index a9852ae0fc..0000000000
--- a/Lang/Icon/Tau-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tau-function/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Tau-number b/Lang/Icon/Tau-number
deleted file mode 120000
index 16be5aedc6..0000000000
--- a/Lang/Icon/Tau-number
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tau-number/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Thue-Morse b/Lang/Icon/Thue-Morse
deleted file mode 120000
index bfa031f039..0000000000
--- a/Lang/Icon/Thue-Morse
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Thue-Morse/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Tokenize-a-string-with-escaping b/Lang/Icon/Tokenize-a-string-with-escaping
deleted file mode 120000
index 6a5856de9c..0000000000
--- a/Lang/Icon/Tokenize-a-string-with-escaping
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tokenize-a-string-with-escaping/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Tree-from-nesting-levels b/Lang/Icon/Tree-from-nesting-levels
deleted file mode 120000
index 670d6ecf62..0000000000
--- a/Lang/Icon/Tree-from-nesting-levels
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tree-from-nesting-levels/Icon
\ No newline at end of file
diff --git a/Lang/Icon/UTF-8-encode-and-decode b/Lang/Icon/UTF-8-encode-and-decode
deleted file mode 120000
index 354f23e4f3..0000000000
--- a/Lang/Icon/UTF-8-encode-and-decode
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/UTF-8-encode-and-decode/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Unix-ls b/Lang/Icon/Unix-ls
deleted file mode 120000
index a60d089d88..0000000000
--- a/Lang/Icon/Unix-ls
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Unix-ls/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Word-frequency b/Lang/Icon/Word-frequency
deleted file mode 120000
index 24fef71b7b..0000000000
--- a/Lang/Icon/Word-frequency
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Word-frequency/Icon
\ No newline at end of file
diff --git a/Lang/Icon/Write-entire-file b/Lang/Icon/Write-entire-file
deleted file mode 120000
index a982401a37..0000000000
--- a/Lang/Icon/Write-entire-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Write-entire-file/Icon
\ No newline at end of file
diff --git a/Lang/Idris/Comments b/Lang/Idris/Comments
deleted file mode 120000
index ffaead275c..0000000000
--- a/Lang/Idris/Comments
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Comments/Idris
\ No newline at end of file
diff --git a/Lang/Idris/Palindrome-detection b/Lang/Idris/Palindrome-detection
deleted file mode 120000
index 58af724843..0000000000
--- a/Lang/Idris/Palindrome-detection
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Palindrome-detection/Idris
\ No newline at end of file
diff --git a/Lang/Idris/Quaternion-type b/Lang/Idris/Quaternion-type
new file mode 120000
index 0000000000..6489466168
--- /dev/null
+++ b/Lang/Idris/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/Idris
\ No newline at end of file
diff --git a/Lang/Imp77/00-LANG.txt b/Lang/Imp77/00-LANG.txt
deleted file mode 100644
index 85ea555671..0000000000
--- a/Lang/Imp77/00-LANG.txt
+++ /dev/null
@@ -1,37 +0,0 @@
-{{language
-|exec=machine
-|gc=no
-|parampass=value or by address
-|checking=static
-|tags=imp77
-}}{{language programming paradigm|Imperative}}
-'''Imp77''' is a general-purpose, [[procedural programming|procedural]], [[imperative programming|imperative]] computer programming language developed around 1977 by the Computer Science Department at Edinburgh University. The original Imp was an incremental development of its predecessor, [[derived from::AtlasAutocode]], via Imp9 .
-
-==Versions==
-* '''Atlas Autocode''' was originally created by Tony Brooker as his response to the 1958 IAL proposal which was the prototype for Algol60. It was very similar to Algol 60 but without some of the problematic areas such as 'call-by-name'.
-* '''Imp(AA)''' was the first Imp compiler (running on the KDF9) to use the name Imp, but it was almost identical to Atlas Autocode apart from having removed a few unused language features such as %complex variables and minor syntax that was dependent on the use of the Flexowriter and the KDF9 character set, which happened when the compiler was modified to use the 7-bit ISO character set.
-* '''Imp9''' was the final release of Imp on the ICL System 4/75. By this point Imp had acquired records and strings.
-* '''Impi''' was an interactive version of the Imp language based on the Imp9 specification, which compiled a statement at a time or a procedure at a time to executable code in memory. Although the Impi name meant "Imp Interpreter" it was not an interpreter in the sense of interpreting an intermediate code, but was rather a true dynamic and interactive compiler.
-* '''Iopt''' was the Imp9 compiler modernised and ported to the ICL 29XX range. This was the most fully-featured version of Imp until Imp77 was created.
-* '''Skimp''' was a cut-down version of the language, at about the same level of complexity as Atlas Autocode, used for teaching compiler-writing to third-year computer science students at Edinburgh University. It was also used as a bootstrapping compiler when porting imp to new systems.
-* '''Imp15''' was an implementation of Imp for the PDP9 and PDP15 systems, which ran in 8K words (words being 18 bits).
-* '''Imp11''' was a version of Imp, bootstrapped through Skimp but implementing most of the language, written to support the PDP11 processors used at Edinburgh for the communications network.
-* '''Imp77''' was a full implementation of Imp supporting all language features, written by Peter Robertson of the Department of Computer Science in support of his PhD thesis on the subject of portable intermediate codes. Imp77 was adopted as the primary compiler of the Department of Computer Science at Edinburgh and made available on many architectures. Most Imp submissions to Rosetta Code will be in Imp77 because it is the only version of Imp remaining with a native compiler available (x86) although there are a few other architectures still usable under emulation. The current Imp77 compiler is a hobbyist revival and is to some extent still under development, lacking the extensive library support and runtime diagnostics that were present in Edinburgh University implementations.
-* '''Imp80''' was an attempt to merge Iopt and Imp77 into a common subset language, as the versions of Imp used by the Edinburgh Regional Computing Center and the Department of Computer Science had diverged sufficiently by 1980, that much code was not compatible between the two versions. The standardisation process that Imp80 started was never completed as Edinburgh abandoned the use of Imp in the 1980's, under political pressure to switch to using languages with a broader code base.
-
-==Overview==
-
-Imp is structurally very similar to Algol 60 except that instead of Algol's "name" parameters which implement a somewhat broken call-by-substitution mechanism, Imp uses call-by-reference, passing the address of a variable instead, and implicitly de-referencing such variables within a procedure, without requiring explicit syntax to access them as would be done in C for example.
-
-==Stropping==
-
-Imp uses keywords rather than reserved words, and in principle keywords in an Imp program are written with underlining. However this was seldom done in practise (in fact the last implementation to support underlining was back when the language was still called Atlas Autocode) and the convention used was that alphabetic sequences introduced by a '%' character were to be considered as being underlined, with the underlining terminating on the first non-alphabetic character. Imp compilers applied a 'line reconstruction' phase to their input, converting underlined letters into an internal representation distinct from regular letters, whilst removing all spaces (but not line endings) from the input other than within quoted strings and characters.
-
-It is however quite acceptable to show listings of Imp programs with underlined (or bold) keywords in place of %-stropped keywords.
-==Citation==
-
-==Todo==
-* [[Tasks not implemented in Imp77]]
-
-
-{{language programming paradigm|Imperative}}
\ No newline at end of file
diff --git a/Lang/Imp77/00-META.yaml b/Lang/Imp77/00-META.yaml
deleted file mode 100644
index 382e836f84..0000000000
--- a/Lang/Imp77/00-META.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-from: http://rosettacode.org/wiki/Category:Imp77
diff --git a/Lang/Imp77/Towers-of-Hanoi b/Lang/Imp77/Towers-of-Hanoi
deleted file mode 120000
index 9cf1e23a14..0000000000
--- a/Lang/Imp77/Towers-of-Hanoi
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Towers-of-Hanoi/Imp77
\ No newline at end of file
diff --git a/Lang/Imp77/Trabb-Pardo-Knuth-algorithm b/Lang/Imp77/Trabb-Pardo-Knuth-algorithm
deleted file mode 120000
index 974a19fbc9..0000000000
--- a/Lang/Imp77/Trabb-Pardo-Knuth-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Trabb-Pardo-Knuth-algorithm/Imp77
\ No newline at end of file
diff --git a/Lang/Insitux/00-LANG.txt b/Lang/Insitux/00-LANG.txt
index b852a0706e..ffe7dc9e9e 100644
--- a/Lang/Insitux/00-LANG.txt
+++ b/Lang/Insitux/00-LANG.txt
@@ -3,8 +3,10 @@
|hopl=no
|tags=insitux}}
-Insitux (pronounced /ɪnˈsɪtjuːɪks/) is a dynamically-typed functional scripting language inspired by Clojure, originally commissioned in July 2021 for safe and extensible in-game scripting in a popular Roblox game. It now targets Node.js/Bun and client-side web.
+Insitux (pronounced /ɪnˈsɪtjuːɪks/) is a dynamically-typed functional scripting language inspired by Clojure, originally commissioned in July 2021 for safe and extensible in-game scripting in a popular Roblox game. It has retained compatibility with Roblox by using two sets of "poly-fills" between [https://roblox-ts.com/ roblox-ts] and Node.js / web, meaning it can target Roblox, Node.js, and web with two slightly varying codebases.
-Despite its origins it is a capable language, with development focusing on the language itself, its Node.js ecosystem, and to a lesser extent its web ecosystem. This primarily involves adding to the already 200+ built-in operations, which tend to cause existing Insitux programs to shrink in size over time; and improving language performance since dropping Roblox compatibility in 2024.
+Despite its origins it is a capable language, with development focusing on the language itself, its Node.js ecosystem, and to a lesser extent its web ecosystem. This primarily involves adding to the already 200+ built-in operations, which tend to cause existing Insitux programs to shrink in size over time.
+
+Insitux currently does not have a performance focus, and due to its syntactic flexibility, and its engine being transpiled into both JavaScript and [https://luau-lang.org/ Luau], it is difficult to optimise. Eventually Roblox support will be dropped / forked, pivoting mainline Insitux into AOT and JIT JavaScript transpilation.
{{language programming paradigm|functional}}
\ No newline at end of file
diff --git a/Lang/Isabelle/Bernoulli-numbers b/Lang/Isabelle/Bernoulli-numbers
deleted file mode 120000
index 73728f3564..0000000000
--- a/Lang/Isabelle/Bernoulli-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bernoulli-numbers/Isabelle
\ No newline at end of file
diff --git a/Lang/Isabelle/Catalan-numbers b/Lang/Isabelle/Catalan-numbers
deleted file mode 120000
index b2ce7b3a40..0000000000
--- a/Lang/Isabelle/Catalan-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Catalan-numbers/Isabelle
\ No newline at end of file
diff --git a/Lang/J/00-LANG.txt b/Lang/J/00-LANG.txt
index 5ca185b4f1..c3a67e79d5 100644
--- a/Lang/J/00-LANG.txt
+++ b/Lang/J/00-LANG.txt
@@ -117,7 +117,6 @@ Discussion of the goals of the J community on RC and general guidelines for pres
*[[User:Lambertdw|David Lambert]]:[[Special:Contributions/Lambertdw|contributions]]
*[[User:JimTheriot|JimTheriot]]: [[Special:Contributions/JimTheriot|contributions]]
*[[User:DevonMcC|Devon McCormick]]: [[Special:Contributions/DevonMcC|contributions]]
-*[[User:Cchando|Cameron Chandoke]]: [[Special:Contributions/Cchando|contributions]], [[j:User:Cameron_Chandoke|J wiki]]
== Try me ==
diff --git a/Lang/J/Bioinformatics-base-count b/Lang/J/Bioinformatics-base-count
new file mode 120000
index 0000000000..78c6127b60
--- /dev/null
+++ b/Lang/J/Bioinformatics-base-count
@@ -0,0 +1 @@
+../../Task/Bioinformatics-base-count/J
\ No newline at end of file
diff --git a/Lang/J/Meissel-Mertens-constant b/Lang/J/Meissel-Mertens-constant
new file mode 120000
index 0000000000..04eb0042a3
--- /dev/null
+++ b/Lang/J/Meissel-Mertens-constant
@@ -0,0 +1 @@
+../../Task/Meissel-Mertens-constant/J
\ No newline at end of file
diff --git a/Lang/J/Quaternion-type b/Lang/J/Quaternion-type
new file mode 120000
index 0000000000..0868577467
--- /dev/null
+++ b/Lang/J/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/J
\ No newline at end of file
diff --git a/Lang/J/Sequence:-nth-number-with-exactly-n-divisors b/Lang/J/Sequence-nth-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/J/Sequence:-nth-number-with-exactly-n-divisors
rename to Lang/J/Sequence-nth-number-with-exactly-n-divisors
diff --git a/Lang/J/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors b/Lang/J/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
similarity index 100%
rename from Lang/J/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors
rename to Lang/J/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
diff --git a/Lang/J/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/J/Sequence-smallest-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/J/Sequence:-smallest-number-with-exactly-n-divisors
rename to Lang/J/Sequence-smallest-number-with-exactly-n-divisors
diff --git a/Lang/J/Sorting-Algorithms-Circle-Sort b/Lang/J/Sorting-Algorithms-Circle-Sort
new file mode 120000
index 0000000000..c9563959dd
--- /dev/null
+++ b/Lang/J/Sorting-Algorithms-Circle-Sort
@@ -0,0 +1 @@
+../../Task/Sorting-Algorithms-Circle-Sort/J
\ No newline at end of file
diff --git a/Lang/Jactl/00-LANG.txt b/Lang/Jactl/00-LANG.txt
deleted file mode 100644
index 108b3303c1..0000000000
--- a/Lang/Jactl/00-LANG.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-{{stub}}{{language|Jactl}}
-
-Jactl is an open source scripting language that compiles to JVM byte-code.
-It can be run stand-alone or embedded in Java applications.
-
-Documentation site: https://jactl.io
-
-Github repository: https://github.com/jaccomoc/jactl
\ No newline at end of file
diff --git a/Lang/Jactl/00-META.yaml b/Lang/Jactl/00-META.yaml
deleted file mode 100644
index c4f2a6e6a8..0000000000
--- a/Lang/Jactl/00-META.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-from: http://rosettacode.org/wiki/Category:Jactl
diff --git a/Lang/Jactl/Apply-a-callback-to-an-array b/Lang/Jactl/Apply-a-callback-to-an-array
deleted file mode 120000
index 0b25c16ea6..0000000000
--- a/Lang/Jactl/Apply-a-callback-to-an-array
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Apply-a-callback-to-an-array/Jactl
\ No newline at end of file
diff --git a/Lang/Jactl/Associative-array-Creation b/Lang/Jactl/Associative-array-Creation
deleted file mode 120000
index df471994d0..0000000000
--- a/Lang/Jactl/Associative-array-Creation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Associative-array-Creation/Jactl
\ No newline at end of file
diff --git a/Lang/Jactl/Associative-array-Iteration b/Lang/Jactl/Associative-array-Iteration
deleted file mode 120000
index c89bf33985..0000000000
--- a/Lang/Jactl/Associative-array-Iteration
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Associative-array-Iteration/Jactl
\ No newline at end of file
diff --git a/Lang/Jactl/Closures-Value-capture b/Lang/Jactl/Closures-Value-capture
deleted file mode 120000
index 838f9ae309..0000000000
--- a/Lang/Jactl/Closures-Value-capture
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Closures-Value-capture/Jactl
\ No newline at end of file
diff --git a/Lang/Jactl/Colorful-numbers b/Lang/Jactl/Colorful-numbers
deleted file mode 120000
index a03bdecce3..0000000000
--- a/Lang/Jactl/Colorful-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Colorful-numbers/Jactl
\ No newline at end of file
diff --git a/Lang/Jactl/Fibonacci-sequence b/Lang/Jactl/Fibonacci-sequence
deleted file mode 120000
index 6763bcee23..0000000000
--- a/Lang/Jactl/Fibonacci-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fibonacci-sequence/Jactl
\ No newline at end of file
diff --git a/Lang/Jactl/FizzBuzz b/Lang/Jactl/FizzBuzz
deleted file mode 120000
index fd8d004ee0..0000000000
--- a/Lang/Jactl/FizzBuzz
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/FizzBuzz/Jactl
\ No newline at end of file
diff --git a/Lang/Jactl/Hello-world-Newline-omission b/Lang/Jactl/Hello-world-Newline-omission
deleted file mode 120000
index d612b43ea9..0000000000
--- a/Lang/Jactl/Hello-world-Newline-omission
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Newline-omission/Jactl
\ No newline at end of file
diff --git a/Lang/Jactl/Hello-world-Text b/Lang/Jactl/Hello-world-Text
deleted file mode 120000
index fba754494d..0000000000
--- a/Lang/Jactl/Hello-world-Text
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Text/Jactl
\ No newline at end of file
diff --git a/Lang/Jactl/Loop-over-multiple-arrays-simultaneously b/Lang/Jactl/Loop-over-multiple-arrays-simultaneously
deleted file mode 120000
index 208e0c484c..0000000000
--- a/Lang/Jactl/Loop-over-multiple-arrays-simultaneously
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loop-over-multiple-arrays-simultaneously/Jactl
\ No newline at end of file
diff --git a/Lang/Jactl/Loops-Break b/Lang/Jactl/Loops-Break
deleted file mode 120000
index e1f4382462..0000000000
--- a/Lang/Jactl/Loops-Break
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Break/Jactl
\ No newline at end of file
diff --git a/Lang/Jactl/Loops-Continue b/Lang/Jactl/Loops-Continue
deleted file mode 120000
index d7062f586e..0000000000
--- a/Lang/Jactl/Loops-Continue
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Continue/Jactl
\ No newline at end of file
diff --git a/Lang/Jactl/Loops-Do-while b/Lang/Jactl/Loops-Do-while
deleted file mode 120000
index 70f4e6642c..0000000000
--- a/Lang/Jactl/Loops-Do-while
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Do-while/Jactl
\ No newline at end of file
diff --git a/Lang/Jactl/Loops-Downward-for b/Lang/Jactl/Loops-Downward-for
deleted file mode 120000
index e955b7c7cb..0000000000
--- a/Lang/Jactl/Loops-Downward-for
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Downward-for/Jactl
\ No newline at end of file
diff --git a/Lang/Jactl/Loops-For b/Lang/Jactl/Loops-For
deleted file mode 120000
index 69ac8efd8b..0000000000
--- a/Lang/Jactl/Loops-For
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-For/Jactl
\ No newline at end of file
diff --git a/Lang/Jactl/Loops-For-with-a-specified-step b/Lang/Jactl/Loops-For-with-a-specified-step
deleted file mode 120000
index cc4794f4cd..0000000000
--- a/Lang/Jactl/Loops-For-with-a-specified-step
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-For-with-a-specified-step/Jactl
\ No newline at end of file
diff --git a/Lang/Jactl/Loops-Foreach b/Lang/Jactl/Loops-Foreach
deleted file mode 120000
index 5acefa1624..0000000000
--- a/Lang/Jactl/Loops-Foreach
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Foreach/Jactl
\ No newline at end of file
diff --git a/Lang/Jactl/Loops-Increment-loop-index-within-loop-body b/Lang/Jactl/Loops-Increment-loop-index-within-loop-body
deleted file mode 120000
index db9efe2bf3..0000000000
--- a/Lang/Jactl/Loops-Increment-loop-index-within-loop-body
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Increment-loop-index-within-loop-body/Jactl
\ No newline at end of file
diff --git a/Lang/Jactl/Loops-Infinite b/Lang/Jactl/Loops-Infinite
deleted file mode 120000
index 7f2c46419c..0000000000
--- a/Lang/Jactl/Loops-Infinite
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Infinite/Jactl
\ No newline at end of file
diff --git a/Lang/Jactl/Loops-N-plus-one-half b/Lang/Jactl/Loops-N-plus-one-half
deleted file mode 120000
index 03de5e2ce5..0000000000
--- a/Lang/Jactl/Loops-N-plus-one-half
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-N-plus-one-half/Jactl
\ No newline at end of file
diff --git a/Lang/Jactl/Loops-Nested b/Lang/Jactl/Loops-Nested
deleted file mode 120000
index 4ee2958398..0000000000
--- a/Lang/Jactl/Loops-Nested
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Nested/Jactl
\ No newline at end of file
diff --git a/Lang/Jactl/Loops-While b/Lang/Jactl/Loops-While
deleted file mode 120000
index 306a1e9dea..0000000000
--- a/Lang/Jactl/Loops-While
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-While/Jactl
\ No newline at end of file
diff --git a/Lang/Jactl/Selectively-replace-multiple-instances-of-a-character-within-a-string b/Lang/Jactl/Selectively-replace-multiple-instances-of-a-character-within-a-string
deleted file mode 120000
index 5c89cea762..0000000000
--- a/Lang/Jactl/Selectively-replace-multiple-instances-of-a-character-within-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Selectively-replace-multiple-instances-of-a-character-within-a-string/Jactl
\ No newline at end of file
diff --git a/Lang/Jactl/Sorting-algorithms-Merge-sort b/Lang/Jactl/Sorting-algorithms-Merge-sort
deleted file mode 120000
index f5d29cd0bd..0000000000
--- a/Lang/Jactl/Sorting-algorithms-Merge-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Merge-sort/Jactl
\ No newline at end of file
diff --git a/Lang/Jactl/Sorting-algorithms-Quicksort b/Lang/Jactl/Sorting-algorithms-Quicksort
deleted file mode 120000
index 6ebc4a30df..0000000000
--- a/Lang/Jactl/Sorting-algorithms-Quicksort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Quicksort/Jactl
\ No newline at end of file
diff --git a/Lang/Jactl/String-interpolation-included- b/Lang/Jactl/String-interpolation-included-
deleted file mode 120000
index 4aeb71ddbe..0000000000
--- a/Lang/Jactl/String-interpolation-included-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-interpolation-included-/Jactl
\ No newline at end of file
diff --git a/Lang/Janet/Check-input-device-is-a-terminal b/Lang/Janet/Check-input-device-is-a-terminal
deleted file mode 120000
index 2a4f62bb71..0000000000
--- a/Lang/Janet/Check-input-device-is-a-terminal
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Check-input-device-is-a-terminal/Janet
\ No newline at end of file
diff --git a/Lang/Janet/Check-output-device-is-a-terminal b/Lang/Janet/Check-output-device-is-a-terminal
deleted file mode 120000
index 8405e395e2..0000000000
--- a/Lang/Janet/Check-output-device-is-a-terminal
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Check-output-device-is-a-terminal/Janet
\ No newline at end of file
diff --git a/Lang/Janet/Comments b/Lang/Janet/Comments
deleted file mode 120000
index b5297d4f4d..0000000000
--- a/Lang/Janet/Comments
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Comments/Janet
\ No newline at end of file
diff --git a/Lang/Janet/Determine-if-a-string-has-all-the-same-characters b/Lang/Janet/Determine-if-a-string-has-all-the-same-characters
deleted file mode 120000
index 361efcff47..0000000000
--- a/Lang/Janet/Determine-if-a-string-has-all-the-same-characters
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-has-all-the-same-characters/Janet
\ No newline at end of file
diff --git a/Lang/Janet/Environment-variables b/Lang/Janet/Environment-variables
deleted file mode 120000
index 7f09b690ca..0000000000
--- a/Lang/Janet/Environment-variables
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Environment-variables/Janet
\ No newline at end of file
diff --git a/Lang/Janet/Loops-Infinite b/Lang/Janet/Loops-Infinite
deleted file mode 120000
index 6c4ed476ed..0000000000
--- a/Lang/Janet/Loops-Infinite
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Infinite/Janet
\ No newline at end of file
diff --git a/Lang/Janet/Nested-function b/Lang/Janet/Nested-function
deleted file mode 120000
index cc57c8a9fa..0000000000
--- a/Lang/Janet/Nested-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nested-function/Janet
\ No newline at end of file
diff --git a/Lang/Janet/Partial-function-application b/Lang/Janet/Partial-function-application
deleted file mode 120000
index 2936ce5923..0000000000
--- a/Lang/Janet/Partial-function-application
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Partial-function-application/Janet
\ No newline at end of file
diff --git a/Lang/Janet/Short-circuit-evaluation b/Lang/Janet/Short-circuit-evaluation
deleted file mode 120000
index c41f99f9ac..0000000000
--- a/Lang/Janet/Short-circuit-evaluation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Short-circuit-evaluation/Janet
\ No newline at end of file
diff --git a/Lang/Janet/Sum-and-product-of-an-array b/Lang/Janet/Sum-and-product-of-an-array
deleted file mode 120000
index 798628772b..0000000000
--- a/Lang/Janet/Sum-and-product-of-an-array
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sum-and-product-of-an-array/Janet
\ No newline at end of file
diff --git a/Lang/Java/00-LANG.txt b/Lang/Java/00-LANG.txt
index 9df12a7429..72a980a538 100644
--- a/Lang/Java/00-LANG.txt
+++ b/Lang/Java/00-LANG.txt
@@ -41,4 +41,4 @@ Useful Java links:
* [http://openjdk.java.net OpenJDK]
==Todo==
-[https://rosettacode.org/wiki/Tasks_not_implemented_in_Java Tasks not implemented in Java]
\ No newline at end of file
+[[Reports:Tasks_not_implemented_in_Java]]
\ No newline at end of file
diff --git a/Lang/Java/Arena-storage-pool b/Lang/Java/Arena-storage-pool
deleted file mode 120000
index 11592b83c1..0000000000
--- a/Lang/Java/Arena-storage-pool
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arena-storage-pool/Java
\ No newline at end of file
diff --git a/Lang/Java/Bioinformatics-base-count b/Lang/Java/Bioinformatics-base-count
new file mode 120000
index 0000000000..a3d5761560
--- /dev/null
+++ b/Lang/Java/Bioinformatics-base-count
@@ -0,0 +1 @@
+../../Task/Bioinformatics-base-count/Java
\ No newline at end of file
diff --git a/Lang/Java/Bitcoin-public-point-to-address b/Lang/Java/Bitcoin-public-point-to-address
deleted file mode 120000
index cbdcab404f..0000000000
--- a/Lang/Java/Bitcoin-public-point-to-address
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bitcoin-public-point-to-address/Java
\ No newline at end of file
diff --git a/Lang/Java/Bitwise-IO b/Lang/Java/Bitwise-IO
deleted file mode 120000
index 91887eddd0..0000000000
--- a/Lang/Java/Bitwise-IO
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bitwise-IO/Java
\ No newline at end of file
diff --git a/Lang/Java/Catmull-Clark-subdivision-surface b/Lang/Java/Catmull-Clark-subdivision-surface
deleted file mode 120000
index cc0173bf86..0000000000
--- a/Lang/Java/Catmull-Clark-subdivision-surface
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Catmull-Clark-subdivision-surface/Java
\ No newline at end of file
diff --git a/Lang/Java/Check-output-device-is-a-terminal b/Lang/Java/Check-output-device-is-a-terminal
deleted file mode 120000
index f5afcf5e18..0000000000
--- a/Lang/Java/Check-output-device-is-a-terminal
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Check-output-device-is-a-terminal/Java
\ No newline at end of file
diff --git a/Lang/Java/Compare-sorting-algorithms-performance b/Lang/Java/Compare-sorting-algorithms-performance
deleted file mode 120000
index 1c312e8af3..0000000000
--- a/Lang/Java/Compare-sorting-algorithms-performance
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compare-sorting-algorithms-performance/Java
\ No newline at end of file
diff --git a/Lang/Java/Compiler-virtual-machine-interpreter b/Lang/Java/Compiler-virtual-machine-interpreter
deleted file mode 120000
index 8a6c333099..0000000000
--- a/Lang/Java/Compiler-virtual-machine-interpreter
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compiler-virtual-machine-interpreter/Java
\ No newline at end of file
diff --git a/Lang/Java/Cyclops-numbers b/Lang/Java/Cyclops-numbers
deleted file mode 120000
index 2d9674ea30..0000000000
--- a/Lang/Java/Cyclops-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cyclops-numbers/Java
\ No newline at end of file
diff --git a/Lang/Java/Deconvolution-2D+ b/Lang/Java/Deconvolution-2D+
deleted file mode 120000
index a4641fed07..0000000000
--- a/Lang/Java/Deconvolution-2D+
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Deconvolution-2D+/Java
\ No newline at end of file
diff --git a/Lang/Java/Dominoes b/Lang/Java/Dominoes
deleted file mode 120000
index f00d194617..0000000000
--- a/Lang/Java/Dominoes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dominoes/Java
\ No newline at end of file
diff --git a/Lang/Java/Events b/Lang/Java/Events
deleted file mode 120000
index c4d1c5d403..0000000000
--- a/Lang/Java/Events
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Events/Java
\ No newline at end of file
diff --git a/Lang/Java/Fixed-length-records b/Lang/Java/Fixed-length-records
deleted file mode 120000
index 8506be253e..0000000000
--- a/Lang/Java/Fixed-length-records
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fixed-length-records/Java
\ No newline at end of file
diff --git a/Lang/Java/French-Republican-calendar b/Lang/Java/French-Republican-calendar
deleted file mode 120000
index 2451cb085a..0000000000
--- a/Lang/Java/French-Republican-calendar
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/French-Republican-calendar/Java
\ No newline at end of file
diff --git a/Lang/Java/Im-a-software-engineer-get-me-out-of-here b/Lang/Java/Im-a-software-engineer-get-me-out-of-here
deleted file mode 120000
index 5e4c7fd308..0000000000
--- a/Lang/Java/Im-a-software-engineer-get-me-out-of-here
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Im-a-software-engineer-get-me-out-of-here/Java
\ No newline at end of file
diff --git a/Lang/Java/Matrix-exponentiation-operator b/Lang/Java/Matrix-exponentiation-operator
deleted file mode 120000
index e07ce3d287..0000000000
--- a/Lang/Java/Matrix-exponentiation-operator
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Matrix-exponentiation-operator/Java
\ No newline at end of file
diff --git a/Lang/Java/Meissel-Mertens-constant b/Lang/Java/Meissel-Mertens-constant
new file mode 120000
index 0000000000..f7dce3ca3d
--- /dev/null
+++ b/Lang/Java/Meissel-Mertens-constant
@@ -0,0 +1 @@
+../../Task/Meissel-Mertens-constant/Java
\ No newline at end of file
diff --git a/Lang/Java/Miller-Rabin-primality-test b/Lang/Java/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..5708188da1
--- /dev/null
+++ b/Lang/Java/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/Java
\ No newline at end of file
diff --git a/Lang/Java/Natural-sorting b/Lang/Java/Natural-sorting
deleted file mode 120000
index 9f37ed8709..0000000000
--- a/Lang/Java/Natural-sorting
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Natural-sorting/Java
\ No newline at end of file
diff --git a/Lang/Java/Nested-templated-data b/Lang/Java/Nested-templated-data
deleted file mode 120000
index ffed37deff..0000000000
--- a/Lang/Java/Nested-templated-data
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nested-templated-data/Java
\ No newline at end of file
diff --git a/Lang/Java/Numerical-and-alphabetical-suffixes b/Lang/Java/Numerical-and-alphabetical-suffixes
deleted file mode 120000
index b77e52fdf7..0000000000
--- a/Lang/Java/Numerical-and-alphabetical-suffixes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Numerical-and-alphabetical-suffixes/Java
\ No newline at end of file
diff --git a/Lang/Java/P-Adic-square-roots b/Lang/Java/P-Adic-square-roots
deleted file mode 120000
index 768922bdbb..0000000000
--- a/Lang/Java/P-Adic-square-roots
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/P-Adic-square-roots/Java
\ No newline at end of file
diff --git a/Lang/Java/Quaternion-type b/Lang/Java/Quaternion-type
new file mode 120000
index 0000000000..3cf154640d
--- /dev/null
+++ b/Lang/Java/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/Java
\ No newline at end of file
diff --git a/Lang/Java/Rendezvous b/Lang/Java/Rendezvous
deleted file mode 120000
index b182a3392e..0000000000
--- a/Lang/Java/Rendezvous
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Rendezvous/Java
\ No newline at end of file
diff --git a/Lang/Java/Sequence:-nth-number-with-exactly-n-divisors b/Lang/Java/Sequence-nth-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/Java/Sequence:-nth-number-with-exactly-n-divisors
rename to Lang/Java/Sequence-nth-number-with-exactly-n-divisors
diff --git a/Lang/Java/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors b/Lang/Java/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
similarity index 100%
rename from Lang/Java/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors
rename to Lang/Java/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
diff --git a/Lang/Java/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/Java/Sequence-smallest-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/Java/Sequence:-smallest-number-with-exactly-n-divisors
rename to Lang/Java/Sequence-smallest-number-with-exactly-n-divisors
diff --git a/Lang/Java/Sorting-Algorithms-Circle-Sort b/Lang/Java/Sorting-Algorithms-Circle-Sort
new file mode 120000
index 0000000000..2c7141e7c3
--- /dev/null
+++ b/Lang/Java/Sorting-Algorithms-Circle-Sort
@@ -0,0 +1 @@
+../../Task/Sorting-Algorithms-Circle-Sort/Java
\ No newline at end of file
diff --git a/Lang/Java/Strassens-algorithm b/Lang/Java/Strassens-algorithm
deleted file mode 120000
index 1c8b3f279b..0000000000
--- a/Lang/Java/Strassens-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strassens-algorithm/Java
\ No newline at end of file
diff --git a/Lang/Java/Suffixation-of-decimal-numbers b/Lang/Java/Suffixation-of-decimal-numbers
deleted file mode 120000
index a2b82d2da9..0000000000
--- a/Lang/Java/Suffixation-of-decimal-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Suffixation-of-decimal-numbers/Java
\ No newline at end of file
diff --git a/Lang/Java/Sylvesters-sequence b/Lang/Java/Sylvesters-sequence
deleted file mode 120000
index 6dfb05d095..0000000000
--- a/Lang/Java/Sylvesters-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sylvesters-sequence/Java
\ No newline at end of file
diff --git a/Lang/Java/Topic-variable b/Lang/Java/Topic-variable
deleted file mode 120000
index 25c03be6d5..0000000000
--- a/Lang/Java/Topic-variable
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Topic-variable/Java
\ No newline at end of file
diff --git a/Lang/Java/Untouchable-numbers b/Lang/Java/Untouchable-numbers
deleted file mode 120000
index 4fdd94665a..0000000000
--- a/Lang/Java/Untouchable-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Untouchable-numbers/Java
\ No newline at end of file
diff --git a/Lang/JavaScript/15-puzzle-solver b/Lang/JavaScript/15-puzzle-solver
deleted file mode 120000
index 34b980cd29..0000000000
--- a/Lang/JavaScript/15-puzzle-solver
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/15-puzzle-solver/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/ADFGVX-cipher b/Lang/JavaScript/ADFGVX-cipher
deleted file mode 120000
index eeef4038b2..0000000000
--- a/Lang/JavaScript/ADFGVX-cipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/ADFGVX-cipher/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Achilles-numbers b/Lang/JavaScript/Achilles-numbers
deleted file mode 120000
index 0c343baad5..0000000000
--- a/Lang/JavaScript/Achilles-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Achilles-numbers/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Aliquot-sequence-classifications b/Lang/JavaScript/Aliquot-sequence-classifications
deleted file mode 120000
index 5043f9bf29..0000000000
--- a/Lang/JavaScript/Aliquot-sequence-classifications
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Aliquot-sequence-classifications/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Arithmetic-geometric-mean-Calculate-Pi b/Lang/JavaScript/Arithmetic-geometric-mean-Calculate-Pi
deleted file mode 120000
index 28dcd16b9c..0000000000
--- a/Lang/JavaScript/Arithmetic-geometric-mean-Calculate-Pi
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-geometric-mean-Calculate-Pi/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Arithmetic-numbers b/Lang/JavaScript/Arithmetic-numbers
deleted file mode 120000
index ca8b16d782..0000000000
--- a/Lang/JavaScript/Arithmetic-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-numbers/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Average-loop-length b/Lang/JavaScript/Average-loop-length
deleted file mode 120000
index c1bd894dc5..0000000000
--- a/Lang/JavaScript/Average-loop-length
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Average-loop-length/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/B-zier-curves-Intersections b/Lang/JavaScript/B-zier-curves-Intersections
deleted file mode 120000
index e14b622f07..0000000000
--- a/Lang/JavaScript/B-zier-curves-Intersections
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/B-zier-curves-Intersections/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Babylonian-spiral b/Lang/JavaScript/Babylonian-spiral
deleted file mode 120000
index c1ab7a098f..0000000000
--- a/Lang/JavaScript/Babylonian-spiral
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Babylonian-spiral/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Balanced-ternary b/Lang/JavaScript/Balanced-ternary
deleted file mode 120000
index c71298b653..0000000000
--- a/Lang/JavaScript/Balanced-ternary
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Balanced-ternary/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Bell-numbers b/Lang/JavaScript/Bell-numbers
deleted file mode 120000
index d4be94731e..0000000000
--- a/Lang/JavaScript/Bell-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bell-numbers/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Bernoulli-numbers b/Lang/JavaScript/Bernoulli-numbers
deleted file mode 120000
index 96368f729e..0000000000
--- a/Lang/JavaScript/Bernoulli-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bernoulli-numbers/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Bifid-cipher b/Lang/JavaScript/Bifid-cipher
deleted file mode 120000
index 837e122e66..0000000000
--- a/Lang/JavaScript/Bifid-cipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bifid-cipher/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Bioinformatics-base-count b/Lang/JavaScript/Bioinformatics-base-count
new file mode 120000
index 0000000000..033fba4ffa
--- /dev/null
+++ b/Lang/JavaScript/Bioinformatics-base-count
@@ -0,0 +1 @@
+../../Task/Bioinformatics-base-count/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Bitcoin-address-validation b/Lang/JavaScript/Bitcoin-address-validation
deleted file mode 120000
index d09d433cd8..0000000000
--- a/Lang/JavaScript/Bitcoin-address-validation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bitcoin-address-validation/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Bitcoin-public-point-to-address b/Lang/JavaScript/Bitcoin-public-point-to-address
deleted file mode 120000
index c3f037151b..0000000000
--- a/Lang/JavaScript/Bitcoin-public-point-to-address
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bitcoin-public-point-to-address/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Boyer-Moore-string-search b/Lang/JavaScript/Boyer-Moore-string-search
deleted file mode 120000
index b25016942d..0000000000
--- a/Lang/JavaScript/Boyer-Moore-string-search
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Boyer-Moore-string-search/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Brazilian-numbers b/Lang/JavaScript/Brazilian-numbers
deleted file mode 120000
index a5d5cf431a..0000000000
--- a/Lang/JavaScript/Brazilian-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Brazilian-numbers/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Break-OO-privacy b/Lang/JavaScript/Break-OO-privacy
deleted file mode 120000
index 085d7969ff..0000000000
--- a/Lang/JavaScript/Break-OO-privacy
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Break-OO-privacy/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Brilliant-numbers b/Lang/JavaScript/Brilliant-numbers
deleted file mode 120000
index 447591badd..0000000000
--- a/Lang/JavaScript/Brilliant-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Brilliant-numbers/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Burrows-Wheeler-transform b/Lang/JavaScript/Burrows-Wheeler-transform
deleted file mode 120000
index 79a79f877d..0000000000
--- a/Lang/JavaScript/Burrows-Wheeler-transform
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Burrows-Wheeler-transform/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Calkin-Wilf-sequence b/Lang/JavaScript/Calkin-Wilf-sequence
deleted file mode 120000
index 3eaf3f5375..0000000000
--- a/Lang/JavaScript/Calkin-Wilf-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Calkin-Wilf-sequence/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Camel-case-and-snake-case b/Lang/JavaScript/Camel-case-and-snake-case
deleted file mode 120000
index 0e52d396b8..0000000000
--- a/Lang/JavaScript/Camel-case-and-snake-case
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Camel-case-and-snake-case/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Carmichael-3-strong-pseudoprimes b/Lang/JavaScript/Carmichael-3-strong-pseudoprimes
deleted file mode 120000
index a3d0ffd992..0000000000
--- a/Lang/JavaScript/Carmichael-3-strong-pseudoprimes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Carmichael-3-strong-pseudoprimes/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Catmull-Clark-subdivision-surface b/Lang/JavaScript/Catmull-Clark-subdivision-surface
deleted file mode 120000
index 40bf4ef0fc..0000000000
--- a/Lang/JavaScript/Catmull-Clark-subdivision-surface
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Catmull-Clark-subdivision-surface/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Check-output-device-is-a-terminal b/Lang/JavaScript/Check-output-device-is-a-terminal
deleted file mode 120000
index 0efca1a6ff..0000000000
--- a/Lang/JavaScript/Check-output-device-is-a-terminal
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Check-output-device-is-a-terminal/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Checkpoint-synchronization b/Lang/JavaScript/Checkpoint-synchronization
deleted file mode 120000
index cf18aef6aa..0000000000
--- a/Lang/JavaScript/Checkpoint-synchronization
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Checkpoint-synchronization/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Chernicks-Carmichael-numbers b/Lang/JavaScript/Chernicks-Carmichael-numbers
deleted file mode 120000
index 45e47ff0f0..0000000000
--- a/Lang/JavaScript/Chernicks-Carmichael-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Chernicks-Carmichael-numbers/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Chowla-numbers b/Lang/JavaScript/Chowla-numbers
deleted file mode 120000
index 44b573de9f..0000000000
--- a/Lang/JavaScript/Chowla-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Chowla-numbers/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Circular-primes b/Lang/JavaScript/Circular-primes
deleted file mode 120000
index ce0d83b0b4..0000000000
--- a/Lang/JavaScript/Circular-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Circular-primes/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Colorful-numbers b/Lang/JavaScript/Colorful-numbers
deleted file mode 120000
index 861658de92..0000000000
--- a/Lang/JavaScript/Colorful-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Colorful-numbers/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Commatizing-numbers b/Lang/JavaScript/Commatizing-numbers
deleted file mode 120000
index dac4a7f279..0000000000
--- a/Lang/JavaScript/Commatizing-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Commatizing-numbers/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Compiler-code-generator b/Lang/JavaScript/Compiler-code-generator
deleted file mode 120000
index 7b6f8e25b0..0000000000
--- a/Lang/JavaScript/Compiler-code-generator
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compiler-code-generator/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Composite-numbers-k-with-no-single-digit-factors-whose-factors-are-all-substrings-of-k b/Lang/JavaScript/Composite-numbers-k-with-no-single-digit-factors-whose-factors-are-all-substrings-of-k
deleted file mode 120000
index 2b7b501bb6..0000000000
--- a/Lang/JavaScript/Composite-numbers-k-with-no-single-digit-factors-whose-factors-are-all-substrings-of-k
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Composite-numbers-k-with-no-single-digit-factors-whose-factors-are-all-substrings-of-k/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Continued-fraction b/Lang/JavaScript/Continued-fraction
deleted file mode 120000
index 73bc586c57..0000000000
--- a/Lang/JavaScript/Continued-fraction
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Continued-fraction/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Continued-fraction-Arithmetic-Construct-from-rational-number b/Lang/JavaScript/Continued-fraction-Arithmetic-Construct-from-rational-number
deleted file mode 120000
index b87cd7b6a5..0000000000
--- a/Lang/JavaScript/Continued-fraction-Arithmetic-Construct-from-rational-number
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Continued-fraction-Arithmetic-Construct-from-rational-number/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Continued-fraction-Arithmetic-G-matrix-ng-continued-fraction-n- b/Lang/JavaScript/Continued-fraction-Arithmetic-G-matrix-ng-continued-fraction-n-
deleted file mode 120000
index 95862446c9..0000000000
--- a/Lang/JavaScript/Continued-fraction-Arithmetic-G-matrix-ng-continued-fraction-n-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Continued-fraction-Arithmetic-G-matrix-ng-continued-fraction-n-/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Create-a-file-on-magnetic-tape b/Lang/JavaScript/Create-a-file-on-magnetic-tape
deleted file mode 120000
index 0f15206dcf..0000000000
--- a/Lang/JavaScript/Create-a-file-on-magnetic-tape
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Create-a-file-on-magnetic-tape/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Cuban-primes b/Lang/JavaScript/Cuban-primes
deleted file mode 120000
index 4659a4500f..0000000000
--- a/Lang/JavaScript/Cuban-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cuban-primes/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Cullen-and-Woodall-numbers b/Lang/JavaScript/Cullen-and-Woodall-numbers
deleted file mode 120000
index 7d700fedb9..0000000000
--- a/Lang/JavaScript/Cullen-and-Woodall-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cullen-and-Woodall-numbers/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Curzon-numbers b/Lang/JavaScript/Curzon-numbers
deleted file mode 120000
index 5d5da06bda..0000000000
--- a/Lang/JavaScript/Curzon-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Curzon-numbers/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Cyclops-numbers b/Lang/JavaScript/Cyclops-numbers
deleted file mode 120000
index 6c3c7fc0d0..0000000000
--- a/Lang/JavaScript/Cyclops-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cyclops-numbers/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Cyclotomic-polynomial b/Lang/JavaScript/Cyclotomic-polynomial
deleted file mode 120000
index 1407b6559c..0000000000
--- a/Lang/JavaScript/Cyclotomic-polynomial
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cyclotomic-polynomial/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/De-Bruijn-sequences b/Lang/JavaScript/De-Bruijn-sequences
deleted file mode 120000
index d753d9f9d0..0000000000
--- a/Lang/JavaScript/De-Bruijn-sequences
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/De-Bruijn-sequences/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Deconvolution-1D b/Lang/JavaScript/Deconvolution-1D
deleted file mode 120000
index 719c208ec2..0000000000
--- a/Lang/JavaScript/Deconvolution-1D
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Deconvolution-1D/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Deconvolution-2D+ b/Lang/JavaScript/Deconvolution-2D+
deleted file mode 120000
index 61f93d9cd6..0000000000
--- a/Lang/JavaScript/Deconvolution-2D+
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Deconvolution-2D+/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Demings-funnel b/Lang/JavaScript/Demings-funnel
deleted file mode 120000
index 6225280d4a..0000000000
--- a/Lang/JavaScript/Demings-funnel
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Demings-funnel/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Digital-root-Multiplicative-digital-root b/Lang/JavaScript/Digital-root-Multiplicative-digital-root
deleted file mode 120000
index 6bac52bd37..0000000000
--- a/Lang/JavaScript/Digital-root-Multiplicative-digital-root
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Digital-root-Multiplicative-digital-root/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Display-a-linear-combination b/Lang/JavaScript/Display-a-linear-combination
deleted file mode 120000
index 4b7084cb84..0000000000
--- a/Lang/JavaScript/Display-a-linear-combination
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Display-a-linear-combination/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Distribution-of-0-digits-in-factorial-series b/Lang/JavaScript/Distribution-of-0-digits-in-factorial-series
deleted file mode 120000
index 3fd7f0feb5..0000000000
--- a/Lang/JavaScript/Distribution-of-0-digits-in-factorial-series
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Distribution-of-0-digits-in-factorial-series/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Dominoes b/Lang/JavaScript/Dominoes
deleted file mode 120000
index 240a06d327..0000000000
--- a/Lang/JavaScript/Dominoes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dominoes/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Doomsday-rule b/Lang/JavaScript/Doomsday-rule
deleted file mode 120000
index 53e067c157..0000000000
--- a/Lang/JavaScript/Doomsday-rule
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Doomsday-rule/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Duffinian-numbers b/Lang/JavaScript/Duffinian-numbers
deleted file mode 120000
index 852d875370..0000000000
--- a/Lang/JavaScript/Duffinian-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Duffinian-numbers/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/EKG-sequence-convergence b/Lang/JavaScript/EKG-sequence-convergence
deleted file mode 120000
index 2eef93ef6c..0000000000
--- a/Lang/JavaScript/EKG-sequence-convergence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/EKG-sequence-convergence/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Eban-numbers b/Lang/JavaScript/Eban-numbers
deleted file mode 120000
index 584fb39bde..0000000000
--- a/Lang/JavaScript/Eban-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Eban-numbers/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Element-wise-operations b/Lang/JavaScript/Element-wise-operations
deleted file mode 120000
index 179f9154f4..0000000000
--- a/Lang/JavaScript/Element-wise-operations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Element-wise-operations/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Elliptic-Curve-Digital-Signature-Algorithm b/Lang/JavaScript/Elliptic-Curve-Digital-Signature-Algorithm
deleted file mode 120000
index b9a9906259..0000000000
--- a/Lang/JavaScript/Elliptic-Curve-Digital-Signature-Algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Elliptic-Curve-Digital-Signature-Algorithm/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Elliptic-curve-arithmetic b/Lang/JavaScript/Elliptic-curve-arithmetic
deleted file mode 120000
index 41de6c075f..0000000000
--- a/Lang/JavaScript/Elliptic-curve-arithmetic
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Elliptic-curve-arithmetic/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Erd-s-Nicolas-numbers b/Lang/JavaScript/Erd-s-Nicolas-numbers
deleted file mode 120000
index 2d8924574b..0000000000
--- a/Lang/JavaScript/Erd-s-Nicolas-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Erd-s-Nicolas-numbers/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Erd-s-Selfridge-categorization-of-primes b/Lang/JavaScript/Erd-s-Selfridge-categorization-of-primes
deleted file mode 120000
index 376367be26..0000000000
--- a/Lang/JavaScript/Erd-s-Selfridge-categorization-of-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Erd-s-Selfridge-categorization-of-primes/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Euclid-Mullin-sequence b/Lang/JavaScript/Euclid-Mullin-sequence
deleted file mode 120000
index f2430affeb..0000000000
--- a/Lang/JavaScript/Euclid-Mullin-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Euclid-Mullin-sequence/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Eulers-constant-0.5772... b/Lang/JavaScript/Eulers-constant-0.5772...
deleted file mode 120000
index 3aac1cafba..0000000000
--- a/Lang/JavaScript/Eulers-constant-0.5772...
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Eulers-constant-0.5772.../JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Exponentiation-order b/Lang/JavaScript/Exponentiation-order
deleted file mode 120000
index a3de1259b9..0000000000
--- a/Lang/JavaScript/Exponentiation-order
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Exponentiation-order/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Exponentiation-with-infix-operators-in-or-operating-on-the-base b/Lang/JavaScript/Exponentiation-with-infix-operators-in-or-operating-on-the-base
deleted file mode 120000
index d16e5defb5..0000000000
--- a/Lang/JavaScript/Exponentiation-with-infix-operators-in-or-operating-on-the-base
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Exponentiation-with-infix-operators-in-or-operating-on-the-base/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Factorial-base-numbers-indexing-permutations-of-a-collection b/Lang/JavaScript/Factorial-base-numbers-indexing-permutations-of-a-collection
deleted file mode 120000
index 7b4e06b0ab..0000000000
--- a/Lang/JavaScript/Factorial-base-numbers-indexing-permutations-of-a-collection
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factorial-base-numbers-indexing-permutations-of-a-collection/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Factorions b/Lang/JavaScript/Factorions
deleted file mode 120000
index d7c8ae41c4..0000000000
--- a/Lang/JavaScript/Factorions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factorions/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Farey-sequence b/Lang/JavaScript/Farey-sequence
deleted file mode 120000
index e324d68d34..0000000000
--- a/Lang/JavaScript/Farey-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Farey-sequence/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Faulhabers-formula b/Lang/JavaScript/Faulhabers-formula
deleted file mode 120000
index 547452171f..0000000000
--- a/Lang/JavaScript/Faulhabers-formula
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Faulhabers-formula/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Fermat-numbers b/Lang/JavaScript/Fermat-numbers
deleted file mode 120000
index 14c8b8d697..0000000000
--- a/Lang/JavaScript/Fermat-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fermat-numbers/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Fraction-reduction b/Lang/JavaScript/Fraction-reduction
deleted file mode 120000
index f3f2ab2629..0000000000
--- a/Lang/JavaScript/Fraction-reduction
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fraction-reduction/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/French-Republican-calendar b/Lang/JavaScript/French-Republican-calendar
deleted file mode 120000
index b3233aa527..0000000000
--- a/Lang/JavaScript/French-Republican-calendar
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/French-Republican-calendar/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Gauss-Jordan-matrix-inversion b/Lang/JavaScript/Gauss-Jordan-matrix-inversion
deleted file mode 120000
index 77acac5de4..0000000000
--- a/Lang/JavaScript/Gauss-Jordan-matrix-inversion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Gauss-Jordan-matrix-inversion/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Giuga-numbers b/Lang/JavaScript/Giuga-numbers
deleted file mode 120000
index 757d93b792..0000000000
--- a/Lang/JavaScript/Giuga-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Giuga-numbers/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Graph-colouring b/Lang/JavaScript/Graph-colouring
deleted file mode 120000
index 8c22e6e014..0000000000
--- a/Lang/JavaScript/Graph-colouring
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Graph-colouring/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Greedy-algorithm-for-Egyptian-fractions b/Lang/JavaScript/Greedy-algorithm-for-Egyptian-fractions
deleted file mode 120000
index 4b7a0299ee..0000000000
--- a/Lang/JavaScript/Greedy-algorithm-for-Egyptian-fractions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Greedy-algorithm-for-Egyptian-fractions/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Halt-and-catch-fire b/Lang/JavaScript/Halt-and-catch-fire
deleted file mode 120000
index 34a6fcf7d2..0000000000
--- a/Lang/JavaScript/Halt-and-catch-fire
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Halt-and-catch-fire/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Home-primes b/Lang/JavaScript/Home-primes
deleted file mode 120000
index 903d43b23e..0000000000
--- a/Lang/JavaScript/Home-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Home-primes/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Horizontal-sundial-calculations b/Lang/JavaScript/Horizontal-sundial-calculations
deleted file mode 120000
index 854f95761b..0000000000
--- a/Lang/JavaScript/Horizontal-sundial-calculations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Horizontal-sundial-calculations/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/ISBN13-check-digit b/Lang/JavaScript/ISBN13-check-digit
deleted file mode 120000
index a76c26065c..0000000000
--- a/Lang/JavaScript/ISBN13-check-digit
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/ISBN13-check-digit/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Isqrt-integer-square-root-of-X b/Lang/JavaScript/Isqrt-integer-square-root-of-X
deleted file mode 120000
index 7c262657f5..0000000000
--- a/Lang/JavaScript/Isqrt-integer-square-root-of-X
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Isqrt-integer-square-root-of-X/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Jacobi-symbol b/Lang/JavaScript/Jacobi-symbol
deleted file mode 120000
index 7ca750b7ca..0000000000
--- a/Lang/JavaScript/Jacobi-symbol
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jacobi-symbol/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Jaro-Winkler-distance b/Lang/JavaScript/Jaro-Winkler-distance
deleted file mode 120000
index 48d79ffb3b..0000000000
--- a/Lang/JavaScript/Jaro-Winkler-distance
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jaro-Winkler-distance/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Jaro-similarity b/Lang/JavaScript/Jaro-similarity
deleted file mode 120000
index 72e11e0e2b..0000000000
--- a/Lang/JavaScript/Jaro-similarity
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jaro-similarity/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Jordan-P-lya-numbers b/Lang/JavaScript/Jordan-P-lya-numbers
deleted file mode 120000
index 1c850674c3..0000000000
--- a/Lang/JavaScript/Jordan-P-lya-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jordan-P-lya-numbers/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/K-d-tree b/Lang/JavaScript/K-d-tree
deleted file mode 120000
index f551f8aa55..0000000000
--- a/Lang/JavaScript/K-d-tree
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/K-d-tree/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Knuths-algorithm-S b/Lang/JavaScript/Knuths-algorithm-S
deleted file mode 120000
index 78ce9e9420..0000000000
--- a/Lang/JavaScript/Knuths-algorithm-S
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Knuths-algorithm-S/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Knuths-power-tree b/Lang/JavaScript/Knuths-power-tree
deleted file mode 120000
index 65f212b8ef..0000000000
--- a/Lang/JavaScript/Knuths-power-tree
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Knuths-power-tree/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Kolakoski-sequence b/Lang/JavaScript/Kolakoski-sequence
deleted file mode 120000
index eac78035ff..0000000000
--- a/Lang/JavaScript/Kolakoski-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Kolakoski-sequence/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Kosaraju b/Lang/JavaScript/Kosaraju
deleted file mode 120000
index 679452fdc1..0000000000
--- a/Lang/JavaScript/Kosaraju
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Kosaraju/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Largest-number-divisible-by-its-digits b/Lang/JavaScript/Largest-number-divisible-by-its-digits
deleted file mode 120000
index 04fdf583a0..0000000000
--- a/Lang/JavaScript/Largest-number-divisible-by-its-digits
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Largest-number-divisible-by-its-digits/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Largest-proper-divisor-of-n b/Lang/JavaScript/Largest-proper-divisor-of-n
deleted file mode 120000
index 3f1ca809f7..0000000000
--- a/Lang/JavaScript/Largest-proper-divisor-of-n
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Largest-proper-divisor-of-n/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Levenshtein-distance-Alignment b/Lang/JavaScript/Levenshtein-distance-Alignment
deleted file mode 120000
index fabac4db0b..0000000000
--- a/Lang/JavaScript/Levenshtein-distance-Alignment
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Levenshtein-distance-Alignment/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Linear-congruential-generator b/Lang/JavaScript/Linear-congruential-generator
deleted file mode 120000
index 9664d4ce1d..0000000000
--- a/Lang/JavaScript/Linear-congruential-generator
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Linear-congruential-generator/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Literals-Floating-point b/Lang/JavaScript/Literals-Floating-point
deleted file mode 120000
index d4ebfbadf6..0000000000
--- a/Lang/JavaScript/Literals-Floating-point
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Literals-Floating-point/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Long-literals-with-continuations b/Lang/JavaScript/Long-literals-with-continuations
deleted file mode 120000
index 51b7c2433b..0000000000
--- a/Lang/JavaScript/Long-literals-with-continuations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Long-literals-with-continuations/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Loops-With-multiple-ranges b/Lang/JavaScript/Loops-With-multiple-ranges
deleted file mode 120000
index 0fe86f1b4e..0000000000
--- a/Lang/JavaScript/Loops-With-multiple-ranges
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-With-multiple-ranges/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Loops-Wrong-ranges b/Lang/JavaScript/Loops-Wrong-ranges
deleted file mode 120000
index 285ca2bf4f..0000000000
--- a/Lang/JavaScript/Loops-Wrong-ranges
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Wrong-ranges/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Lychrel-numbers b/Lang/JavaScript/Lychrel-numbers
deleted file mode 120000
index ddc0a3b2ae..0000000000
--- a/Lang/JavaScript/Lychrel-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Lychrel-numbers/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/M-bius-function b/Lang/JavaScript/M-bius-function
deleted file mode 120000
index 8b88e437b9..0000000000
--- a/Lang/JavaScript/M-bius-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/M-bius-function/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/MD5 b/Lang/JavaScript/MD5
deleted file mode 120000
index 764b1e5dd2..0000000000
--- a/Lang/JavaScript/MD5
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/MD5/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/MD5-Implementation b/Lang/JavaScript/MD5-Implementation
deleted file mode 120000
index 96da37623c..0000000000
--- a/Lang/JavaScript/MD5-Implementation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/MD5-Implementation/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Magic-constant b/Lang/JavaScript/Magic-constant
deleted file mode 120000
index 93ac503011..0000000000
--- a/Lang/JavaScript/Magic-constant
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Magic-constant/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Memory-layout-of-a-data-structure b/Lang/JavaScript/Memory-layout-of-a-data-structure
deleted file mode 120000
index 40a22a351b..0000000000
--- a/Lang/JavaScript/Memory-layout-of-a-data-structure
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Memory-layout-of-a-data-structure/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Merge-and-aggregate-datasets b/Lang/JavaScript/Merge-and-aggregate-datasets
deleted file mode 120000
index d1ec3fd3c7..0000000000
--- a/Lang/JavaScript/Merge-and-aggregate-datasets
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Merge-and-aggregate-datasets/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Miller-Rabin-primality-test b/Lang/JavaScript/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..41f625032e
--- /dev/null
+++ b/Lang/JavaScript/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Motzkin-numbers b/Lang/JavaScript/Motzkin-numbers
deleted file mode 120000
index f887ca66ad..0000000000
--- a/Lang/JavaScript/Motzkin-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Motzkin-numbers/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Numeric-error-propagation b/Lang/JavaScript/Numeric-error-propagation
deleted file mode 120000
index 4c3115218f..0000000000
--- a/Lang/JavaScript/Numeric-error-propagation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Numeric-error-propagation/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Numerical-integration b/Lang/JavaScript/Numerical-integration
deleted file mode 120000
index b80325338d..0000000000
--- a/Lang/JavaScript/Numerical-integration
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Numerical-integration/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Old-lady-swallowed-a-fly b/Lang/JavaScript/Old-lady-swallowed-a-fly
deleted file mode 120000
index a49e302025..0000000000
--- a/Lang/JavaScript/Old-lady-swallowed-a-fly
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Old-lady-swallowed-a-fly/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Own-digits-power-sum b/Lang/JavaScript/Own-digits-power-sum
deleted file mode 120000
index af2067363a..0000000000
--- a/Lang/JavaScript/Own-digits-power-sum
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Own-digits-power-sum/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/P-Adic-numbers-basic b/Lang/JavaScript/P-Adic-numbers-basic
deleted file mode 120000
index 8430626fe6..0000000000
--- a/Lang/JavaScript/P-Adic-numbers-basic
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/P-Adic-numbers-basic/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/P-Adic-square-roots b/Lang/JavaScript/P-Adic-square-roots
deleted file mode 120000
index dc1614d80a..0000000000
--- a/Lang/JavaScript/P-Adic-square-roots
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/P-Adic-square-roots/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/P-value-correction b/Lang/JavaScript/P-value-correction
deleted file mode 120000
index 0bb6d9d877..0000000000
--- a/Lang/JavaScript/P-value-correction
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/P-value-correction/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Palindromic-gapful-numbers b/Lang/JavaScript/Palindromic-gapful-numbers
deleted file mode 120000
index 3ea405216b..0000000000
--- a/Lang/JavaScript/Palindromic-gapful-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Palindromic-gapful-numbers/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Pancake-numbers b/Lang/JavaScript/Pancake-numbers
deleted file mode 120000
index 6f2eb315df..0000000000
--- a/Lang/JavaScript/Pancake-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pancake-numbers/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Paraffins b/Lang/JavaScript/Paraffins
deleted file mode 120000
index 583d8a86f5..0000000000
--- a/Lang/JavaScript/Paraffins
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Paraffins/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Parse-an-IP-Address b/Lang/JavaScript/Parse-an-IP-Address
deleted file mode 120000
index 5981d2ba9f..0000000000
--- a/Lang/JavaScript/Parse-an-IP-Address
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Parse-an-IP-Address/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Pascals-triangle-Puzzle b/Lang/JavaScript/Pascals-triangle-Puzzle
deleted file mode 120000
index 2acf8cdb4d..0000000000
--- a/Lang/JavaScript/Pascals-triangle-Puzzle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pascals-triangle-Puzzle/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Percolation-Bond-percolation b/Lang/JavaScript/Percolation-Bond-percolation
deleted file mode 120000
index b784faa7b0..0000000000
--- a/Lang/JavaScript/Percolation-Bond-percolation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Percolation-Bond-percolation/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Percolation-Mean-cluster-density b/Lang/JavaScript/Percolation-Mean-cluster-density
deleted file mode 120000
index 8cad881ab4..0000000000
--- a/Lang/JavaScript/Percolation-Mean-cluster-density
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Percolation-Mean-cluster-density/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Percolation-Mean-run-density b/Lang/JavaScript/Percolation-Mean-run-density
deleted file mode 120000
index 6c804e3579..0000000000
--- a/Lang/JavaScript/Percolation-Mean-run-density
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Percolation-Mean-run-density/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Percolation-Site-percolation b/Lang/JavaScript/Percolation-Site-percolation
deleted file mode 120000
index 3d8672383d..0000000000
--- a/Lang/JavaScript/Percolation-Site-percolation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Percolation-Site-percolation/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Periodic-table b/Lang/JavaScript/Periodic-table
deleted file mode 120000
index 3252400859..0000000000
--- a/Lang/JavaScript/Periodic-table
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Periodic-table/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Perlin-noise b/Lang/JavaScript/Perlin-noise
deleted file mode 120000
index d4cfceb70d..0000000000
--- a/Lang/JavaScript/Perlin-noise
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Perlin-noise/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Playfair-cipher b/Lang/JavaScript/Playfair-cipher
deleted file mode 120000
index e94d50f327..0000000000
--- a/Lang/JavaScript/Playfair-cipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Playfair-cipher/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Priority-queue b/Lang/JavaScript/Priority-queue
deleted file mode 120000
index 01d2cd2765..0000000000
--- a/Lang/JavaScript/Priority-queue
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Priority-queue/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Pseudo-random-numbers-Middle-square-method b/Lang/JavaScript/Pseudo-random-numbers-Middle-square-method
deleted file mode 120000
index 670dfa6542..0000000000
--- a/Lang/JavaScript/Pseudo-random-numbers-Middle-square-method
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pseudo-random-numbers-Middle-square-method/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Pseudo-random-numbers-PCG32 b/Lang/JavaScript/Pseudo-random-numbers-PCG32
deleted file mode 120000
index 689b737182..0000000000
--- a/Lang/JavaScript/Pseudo-random-numbers-PCG32
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pseudo-random-numbers-PCG32/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Pseudo-random-numbers-Splitmix64 b/Lang/JavaScript/Pseudo-random-numbers-Splitmix64
deleted file mode 120000
index e21d263f6d..0000000000
--- a/Lang/JavaScript/Pseudo-random-numbers-Splitmix64
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pseudo-random-numbers-Splitmix64/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Pseudo-random-numbers-Xorshift-star b/Lang/JavaScript/Pseudo-random-numbers-Xorshift-star
deleted file mode 120000
index 40211cc2a7..0000000000
--- a/Lang/JavaScript/Pseudo-random-numbers-Xorshift-star
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pseudo-random-numbers-Xorshift-star/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/QR-decomposition b/Lang/JavaScript/QR-decomposition
deleted file mode 120000
index 0913aa7d30..0000000000
--- a/Lang/JavaScript/QR-decomposition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/QR-decomposition/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Quaternion-type b/Lang/JavaScript/Quaternion-type
new file mode 120000
index 0000000000..e2a6535526
--- /dev/null
+++ b/Lang/JavaScript/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/RIPEMD-160 b/Lang/JavaScript/RIPEMD-160
deleted file mode 120000
index aa85f54790..0000000000
--- a/Lang/JavaScript/RIPEMD-160
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/RIPEMD-160/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Repeat b/Lang/JavaScript/Repeat
deleted file mode 120000
index e8bb71f4ce..0000000000
--- a/Lang/JavaScript/Repeat
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Repeat/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/SHA-1 b/Lang/JavaScript/SHA-1
deleted file mode 120000
index 2773e9c63c..0000000000
--- a/Lang/JavaScript/SHA-1
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/SHA-1/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/SHA-256-Merkle-tree b/Lang/JavaScript/SHA-256-Merkle-tree
deleted file mode 120000
index 0c2b665899..0000000000
--- a/Lang/JavaScript/SHA-256-Merkle-tree
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/SHA-256-Merkle-tree/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/JavaScript/Sequence-smallest-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/JavaScript/Sequence:-smallest-number-with-exactly-n-divisors
rename to Lang/JavaScript/Sequence-smallest-number-with-exactly-n-divisors
diff --git a/Lang/JavaScript/Set-puzzle b/Lang/JavaScript/Set-puzzle
deleted file mode 120000
index 22b0bad552..0000000000
--- a/Lang/JavaScript/Set-puzzle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Set-puzzle/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Shortest-common-supersequence b/Lang/JavaScript/Shortest-common-supersequence
deleted file mode 120000
index 4e107e522e..0000000000
--- a/Lang/JavaScript/Shortest-common-supersequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Shortest-common-supersequence/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Sisyphus-sequence b/Lang/JavaScript/Sisyphus-sequence
deleted file mode 120000
index 67b00353f0..0000000000
--- a/Lang/JavaScript/Sisyphus-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sisyphus-sequence/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Smarandache-prime-digital-sequence b/Lang/JavaScript/Smarandache-prime-digital-sequence
deleted file mode 120000
index 14cb702228..0000000000
--- a/Lang/JavaScript/Smarandache-prime-digital-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Smarandache-prime-digital-sequence/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Sokoban b/Lang/JavaScript/Sokoban
deleted file mode 120000
index 3ab86467bd..0000000000
--- a/Lang/JavaScript/Sokoban
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sokoban/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Solve-a-Hidato-puzzle b/Lang/JavaScript/Solve-a-Hidato-puzzle
deleted file mode 120000
index 3e3c25cd7c..0000000000
--- a/Lang/JavaScript/Solve-a-Hidato-puzzle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Solve-a-Hidato-puzzle/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Solve-a-Hopido-puzzle b/Lang/JavaScript/Solve-a-Hopido-puzzle
deleted file mode 120000
index aea3983b76..0000000000
--- a/Lang/JavaScript/Solve-a-Hopido-puzzle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Solve-a-Hopido-puzzle/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Solve-a-Numbrix-puzzle b/Lang/JavaScript/Solve-a-Numbrix-puzzle
deleted file mode 120000
index 43202401f9..0000000000
--- a/Lang/JavaScript/Solve-a-Numbrix-puzzle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Solve-a-Numbrix-puzzle/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Sort-numbers-lexicographically b/Lang/JavaScript/Sort-numbers-lexicographically
deleted file mode 120000
index 0350e5ac3a..0000000000
--- a/Lang/JavaScript/Sort-numbers-lexicographically
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-numbers-lexicographically/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Sorting-algorithms-Radix-sort b/Lang/JavaScript/Sorting-algorithms-Radix-sort
deleted file mode 120000
index 0d4b9cb23d..0000000000
--- a/Lang/JavaScript/Sorting-algorithms-Radix-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Radix-sort/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Spelling-of-ordinal-numbers b/Lang/JavaScript/Spelling-of-ordinal-numbers
deleted file mode 120000
index 5ed638cc81..0000000000
--- a/Lang/JavaScript/Spelling-of-ordinal-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Spelling-of-ordinal-numbers/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Square-free-integers b/Lang/JavaScript/Square-free-integers
deleted file mode 120000
index 5f495f4fd4..0000000000
--- a/Lang/JavaScript/Square-free-integers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Square-free-integers/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/State-name-puzzle b/Lang/JavaScript/State-name-puzzle
deleted file mode 120000
index 12f667dc4c..0000000000
--- a/Lang/JavaScript/State-name-puzzle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/State-name-puzzle/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Steffensens-method b/Lang/JavaScript/Steffensens-method
deleted file mode 120000
index 12c21e29e2..0000000000
--- a/Lang/JavaScript/Steffensens-method
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Steffensens-method/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Strassens-algorithm b/Lang/JavaScript/Strassens-algorithm
deleted file mode 120000
index f4d0497694..0000000000
--- a/Lang/JavaScript/Strassens-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strassens-algorithm/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Stream-merge b/Lang/JavaScript/Stream-merge
deleted file mode 120000
index cf7057043d..0000000000
--- a/Lang/JavaScript/Stream-merge
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Stream-merge/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Subleq b/Lang/JavaScript/Subleq
deleted file mode 120000
index 19f1606c88..0000000000
--- a/Lang/JavaScript/Subleq
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Subleq/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Substitution-cipher b/Lang/JavaScript/Substitution-cipher
deleted file mode 120000
index e8fd969b4a..0000000000
--- a/Lang/JavaScript/Substitution-cipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Substitution-cipher/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Superpermutation-minimisation b/Lang/JavaScript/Superpermutation-minimisation
deleted file mode 120000
index a257c8e7e7..0000000000
--- a/Lang/JavaScript/Superpermutation-minimisation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Superpermutation-minimisation/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Sylvesters-sequence b/Lang/JavaScript/Sylvesters-sequence
deleted file mode 120000
index 472599a8bf..0000000000
--- a/Lang/JavaScript/Sylvesters-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sylvesters-sequence/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Tarjan b/Lang/JavaScript/Tarjan
deleted file mode 120000
index c299c7aebb..0000000000
--- a/Lang/JavaScript/Tarjan
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tarjan/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Tau-number b/Lang/JavaScript/Tau-number
deleted file mode 120000
index ff78310d47..0000000000
--- a/Lang/JavaScript/Tau-number
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tau-number/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Thieles-interpolation-formula b/Lang/JavaScript/Thieles-interpolation-formula
deleted file mode 120000
index 4aa6c84146..0000000000
--- a/Lang/JavaScript/Thieles-interpolation-formula
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Thieles-interpolation-formula/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Tonelli-Shanks-algorithm b/Lang/JavaScript/Tonelli-Shanks-algorithm
deleted file mode 120000
index f646a271d1..0000000000
--- a/Lang/JavaScript/Tonelli-Shanks-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tonelli-Shanks-algorithm/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Topswops b/Lang/JavaScript/Topswops
deleted file mode 120000
index cffdbd99df..0000000000
--- a/Lang/JavaScript/Topswops
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Topswops/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Transliterate-English-text-using-the-Greek-alphabet b/Lang/JavaScript/Transliterate-English-text-using-the-Greek-alphabet
deleted file mode 120000
index 90b7eb9492..0000000000
--- a/Lang/JavaScript/Transliterate-English-text-using-the-Greek-alphabet
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Transliterate-English-text-using-the-Greek-alphabet/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Twos-complement b/Lang/JavaScript/Twos-complement
deleted file mode 120000
index d0b1730478..0000000000
--- a/Lang/JavaScript/Twos-complement
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Twos-complement/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Ukkonen-s-suffix-tree-construction b/Lang/JavaScript/Ukkonen-s-suffix-tree-construction
deleted file mode 120000
index 7a4d0832f5..0000000000
--- a/Lang/JavaScript/Ukkonen-s-suffix-tree-construction
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ukkonen-s-suffix-tree-construction/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Unbias-a-random-generator b/Lang/JavaScript/Unbias-a-random-generator
deleted file mode 120000
index 1e801c1fa5..0000000000
--- a/Lang/JavaScript/Unbias-a-random-generator
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Unbias-a-random-generator/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Unicode-strings b/Lang/JavaScript/Unicode-strings
deleted file mode 120000
index ad6c128bef..0000000000
--- a/Lang/JavaScript/Unicode-strings
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Unicode-strings/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Van-der-Corput-sequence b/Lang/JavaScript/Van-der-Corput-sequence
deleted file mode 120000
index 41397b68df..0000000000
--- a/Lang/JavaScript/Van-der-Corput-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Van-der-Corput-sequence/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Vector b/Lang/JavaScript/Vector
deleted file mode 120000
index fec6065641..0000000000
--- a/Lang/JavaScript/Vector
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Vector/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Verhoeff-algorithm b/Lang/JavaScript/Verhoeff-algorithm
deleted file mode 120000
index cd27def09b..0000000000
--- a/Lang/JavaScript/Verhoeff-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Verhoeff-algorithm/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Vigen-re-cipher-Cryptanalysis b/Lang/JavaScript/Vigen-re-cipher-Cryptanalysis
deleted file mode 120000
index 53c004e91c..0000000000
--- a/Lang/JavaScript/Vigen-re-cipher-Cryptanalysis
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Vigen-re-cipher-Cryptanalysis/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Vogels-approximation-method b/Lang/JavaScript/Vogels-approximation-method
deleted file mode 120000
index 72693f1daa..0000000000
--- a/Lang/JavaScript/Vogels-approximation-method
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Vogels-approximation-method/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Word-ladder b/Lang/JavaScript/Word-ladder
deleted file mode 120000
index f78d94e145..0000000000
--- a/Lang/JavaScript/Word-ladder
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Word-ladder/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Wordiff b/Lang/JavaScript/Wordiff
deleted file mode 120000
index 18ec352da6..0000000000
--- a/Lang/JavaScript/Wordiff
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Wordiff/JavaScript
\ No newline at end of file
diff --git a/Lang/JavaScript/Zebra-puzzle b/Lang/JavaScript/Zebra-puzzle
deleted file mode 120000
index 5c531004b3..0000000000
--- a/Lang/JavaScript/Zebra-puzzle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Zebra-puzzle/JavaScript
\ No newline at end of file
diff --git a/Lang/Joy/Case-sensitivity-of-identifiers b/Lang/Joy/Case-sensitivity-of-identifiers
deleted file mode 120000
index e8f5c2c1db..0000000000
--- a/Lang/Joy/Case-sensitivity-of-identifiers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Case-sensitivity-of-identifiers/Joy
\ No newline at end of file
diff --git a/Lang/Joy/Read-a-file-line-by-line b/Lang/Joy/Read-a-file-line-by-line
deleted file mode 120000
index 9985d0bc9c..0000000000
--- a/Lang/Joy/Read-a-file-line-by-line
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Read-a-file-line-by-line/Joy
\ No newline at end of file
diff --git a/Lang/Joy/Sort-an-integer-array b/Lang/Joy/Sort-an-integer-array
deleted file mode 120000
index 91921cd08e..0000000000
--- a/Lang/Joy/Sort-an-integer-array
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-an-integer-array/Joy
\ No newline at end of file
diff --git a/Lang/Joy/Unicode-variable-names b/Lang/Joy/Unicode-variable-names
deleted file mode 120000
index b7f93a76ef..0000000000
--- a/Lang/Joy/Unicode-variable-names
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Unicode-variable-names/Joy
\ No newline at end of file
diff --git a/Lang/Jq/00-LANG.txt b/Lang/Jq/00-LANG.txt
index a2d6626be7..3eba7f05c0 100644
--- a/Lang/Jq/00-LANG.txt
+++ b/Lang/Jq/00-LANG.txt
@@ -7,14 +7,9 @@ jq was originally designed and developed by Stephen Dolan.
==jq Modules at rosettacode.org==
* [[:Category:Jq/assert.jq|assert.jq]] - module to support assertions
-* [[:Category:Jq/bitwise.jq|bitwise.jq]] - bit streams, bit arrays, and integers
* [[:Category:Jq/fibonacci.jq|fibonacci.jq]] - Fibonacci sequence and Fibonacci coding
* [[:Category:Jq/peg.jq|peg.jq]] - Parsing Expression Grammar foundations
* [[:Category:Jq/polynomials.jq|polynomials.jq]] - polynomials as JSON arrays
-* [[:Category:Jq/rational.jq|rational.jq]] - rational numbers
-
-* [[:Category:Jq/Date.jq|Date.jq]] - Gregorian calendar from the year 1
-* [[:Category:Jq/MRG32k3a.jq|MRG32k3a.jq]] - MRG32k3a Combined Recursive Pseudo-Random Number Generator
* [[:Category:Jq/RealSet.jq|RealSet.jq]] - Union of finite real intervals
==Todo==
diff --git a/Lang/Jq/15-puzzle-game b/Lang/Jq/15-puzzle-game
deleted file mode 120000
index 9c065d8ccc..0000000000
--- a/Lang/Jq/15-puzzle-game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/15-puzzle-game/Jq
\ No newline at end of file
diff --git a/Lang/Jq/15-puzzle-solver b/Lang/Jq/15-puzzle-solver
deleted file mode 120000
index e822e3d4e7..0000000000
--- a/Lang/Jq/15-puzzle-solver
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/15-puzzle-solver/Jq
\ No newline at end of file
diff --git a/Lang/Jq/2048 b/Lang/Jq/2048
deleted file mode 120000
index e78d154a28..0000000000
--- a/Lang/Jq/2048
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/2048/Jq
\ No newline at end of file
diff --git a/Lang/Jq/24-game b/Lang/Jq/24-game
deleted file mode 120000
index 1db8a29eb4..0000000000
--- a/Lang/Jq/24-game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/24-game/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Averages-Simple-moving-average b/Lang/Jq/Averages-Simple-moving-average
deleted file mode 120000
index 7c27d5bee2..0000000000
--- a/Lang/Jq/Averages-Simple-moving-average
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Simple-moving-average/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Bioinformatics-base-count b/Lang/Jq/Bioinformatics-base-count
new file mode 120000
index 0000000000..87df406d18
--- /dev/null
+++ b/Lang/Jq/Bioinformatics-base-count
@@ -0,0 +1 @@
+../../Task/Bioinformatics-base-count/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Bitwise-operations b/Lang/Jq/Bitwise-operations
deleted file mode 120000
index eff5a2f904..0000000000
--- a/Lang/Jq/Bitwise-operations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bitwise-operations/Jq
\ No newline at end of file
diff --git a/Lang/Jq/CRC-32 b/Lang/Jq/CRC-32
deleted file mode 120000
index 800ab8f0ad..0000000000
--- a/Lang/Jq/CRC-32
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/CRC-32/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Chaocipher b/Lang/Jq/Chaocipher
deleted file mode 120000
index 3383992151..0000000000
--- a/Lang/Jq/Chaocipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Chaocipher/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Continued-fraction-Arithmetic-Construct-from-rational-number b/Lang/Jq/Continued-fraction-Arithmetic-Construct-from-rational-number
deleted file mode 120000
index 90c56c3b3a..0000000000
--- a/Lang/Jq/Continued-fraction-Arithmetic-Construct-from-rational-number
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Continued-fraction-Arithmetic-Construct-from-rational-number/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Deconvolution-1D b/Lang/Jq/Deconvolution-1D
deleted file mode 120000
index 4f872c1005..0000000000
--- a/Lang/Jq/Deconvolution-1D
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Deconvolution-1D/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Display-an-outline-as-a-nested-table b/Lang/Jq/Display-an-outline-as-a-nested-table
deleted file mode 120000
index 37137659b6..0000000000
--- a/Lang/Jq/Display-an-outline-as-a-nested-table
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Display-an-outline-as-a-nested-table/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Draw-a-cuboid b/Lang/Jq/Draw-a-cuboid
deleted file mode 120000
index 2af657c230..0000000000
--- a/Lang/Jq/Draw-a-cuboid
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Draw-a-cuboid/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Entropy-Narcissist b/Lang/Jq/Entropy-Narcissist
deleted file mode 120000
index f142d7e681..0000000000
--- a/Lang/Jq/Entropy-Narcissist
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Entropy-Narcissist/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Factors-of-a-Mersenne-number b/Lang/Jq/Factors-of-a-Mersenne-number
deleted file mode 120000
index e34af6567d..0000000000
--- a/Lang/Jq/Factors-of-a-Mersenne-number
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factors-of-a-Mersenne-number/Jq
\ No newline at end of file
diff --git a/Lang/Jq/File-size-distribution b/Lang/Jq/File-size-distribution
deleted file mode 120000
index d42e94402e..0000000000
--- a/Lang/Jq/File-size-distribution
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/File-size-distribution/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Find-Chess960-starting-position-identifier b/Lang/Jq/Find-Chess960-starting-position-identifier
deleted file mode 120000
index ea292cff65..0000000000
--- a/Lang/Jq/Find-Chess960-starting-position-identifier
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Find-Chess960-starting-position-identifier/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Find-duplicate-files b/Lang/Jq/Find-duplicate-files
deleted file mode 120000
index 289f08d02f..0000000000
--- a/Lang/Jq/Find-duplicate-files
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Find-duplicate-files/Jq
\ No newline at end of file
diff --git a/Lang/Jq/French-Republican-calendar b/Lang/Jq/French-Republican-calendar
deleted file mode 120000
index d495d14d71..0000000000
--- a/Lang/Jq/French-Republican-calendar
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/French-Republican-calendar/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Generate-random-chess-position b/Lang/Jq/Generate-random-chess-position
deleted file mode 120000
index a6ff2b1df0..0000000000
--- a/Lang/Jq/Generate-random-chess-position
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Generate-random-chess-position/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Giuga-numbers b/Lang/Jq/Giuga-numbers
deleted file mode 120000
index b5850902a3..0000000000
--- a/Lang/Jq/Giuga-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Giuga-numbers/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Graph-colouring b/Lang/Jq/Graph-colouring
deleted file mode 120000
index 07b418f3a3..0000000000
--- a/Lang/Jq/Graph-colouring
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Graph-colouring/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Introspection b/Lang/Jq/Introspection
deleted file mode 120000
index cdb6f22cc1..0000000000
--- a/Lang/Jq/Introspection
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Introspection/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Knights-tour b/Lang/Jq/Knights-tour
deleted file mode 120000
index ca47275558..0000000000
--- a/Lang/Jq/Knights-tour
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Knights-tour/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Levenshtein-distance-Alignment b/Lang/Jq/Levenshtein-distance-Alignment
deleted file mode 120000
index b331da38ff..0000000000
--- a/Lang/Jq/Levenshtein-distance-Alignment
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Levenshtein-distance-Alignment/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Mayan-calendar b/Lang/Jq/Mayan-calendar
deleted file mode 120000
index aa0964c1d8..0000000000
--- a/Lang/Jq/Mayan-calendar
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Mayan-calendar/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Mind-boggling-card-trick b/Lang/Jq/Mind-boggling-card-trick
deleted file mode 120000
index 11a1e6dd3d..0000000000
--- a/Lang/Jq/Mind-boggling-card-trick
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Mind-boggling-card-trick/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Minimal-steps-down-to-1 b/Lang/Jq/Minimal-steps-down-to-1
deleted file mode 120000
index d05488db25..0000000000
--- a/Lang/Jq/Minimal-steps-down-to-1
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Minimal-steps-down-to-1/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Modified-random-distribution b/Lang/Jq/Modified-random-distribution
deleted file mode 120000
index 5585f4b8dd..0000000000
--- a/Lang/Jq/Modified-random-distribution
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Modified-random-distribution/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Multiplicative-order b/Lang/Jq/Multiplicative-order
deleted file mode 120000
index 72c4d667a9..0000000000
--- a/Lang/Jq/Multiplicative-order
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Multiplicative-order/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Nonoblock b/Lang/Jq/Nonoblock
deleted file mode 120000
index f2323057e5..0000000000
--- a/Lang/Jq/Nonoblock
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nonoblock/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Nonogram-solver b/Lang/Jq/Nonogram-solver
deleted file mode 120000
index 2ae5949d16..0000000000
--- a/Lang/Jq/Nonogram-solver
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nonogram-solver/Jq
\ No newline at end of file
diff --git a/Lang/Jq/P-value-correction b/Lang/Jq/P-value-correction
deleted file mode 120000
index 4685fd057d..0000000000
--- a/Lang/Jq/P-value-correction
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/P-value-correction/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Palindromic-gapful-numbers b/Lang/Jq/Palindromic-gapful-numbers
deleted file mode 120000
index 3f1d4b0a65..0000000000
--- a/Lang/Jq/Palindromic-gapful-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Palindromic-gapful-numbers/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Pancake-numbers b/Lang/Jq/Pancake-numbers
deleted file mode 120000
index 7c0b6487cc..0000000000
--- a/Lang/Jq/Pancake-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pancake-numbers/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Peaceful-chess-queen-armies b/Lang/Jq/Peaceful-chess-queen-armies
deleted file mode 120000
index 7c675a3306..0000000000
--- a/Lang/Jq/Peaceful-chess-queen-armies
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Peaceful-chess-queen-armies/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Pentomino-tiling b/Lang/Jq/Pentomino-tiling
deleted file mode 120000
index cce133df04..0000000000
--- a/Lang/Jq/Pentomino-tiling
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pentomino-tiling/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Perlin-noise b/Lang/Jq/Perlin-noise
deleted file mode 120000
index eb52c317a2..0000000000
--- a/Lang/Jq/Perlin-noise
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Perlin-noise/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Pisano-period b/Lang/Jq/Pisano-period
deleted file mode 120000
index 223468a26a..0000000000
--- a/Lang/Jq/Pisano-period
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pisano-period/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Poker-hand-analyser b/Lang/Jq/Poker-hand-analyser
deleted file mode 120000
index fd9738ce61..0000000000
--- a/Lang/Jq/Poker-hand-analyser
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Poker-hand-analyser/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Polynomial-regression b/Lang/Jq/Polynomial-regression
deleted file mode 120000
index 56985e2ba4..0000000000
--- a/Lang/Jq/Polynomial-regression
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Polynomial-regression/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Prime-numbers-whose-neighboring-pairs-are-tetraprimes b/Lang/Jq/Prime-numbers-whose-neighboring-pairs-are-tetraprimes
deleted file mode 120000
index e1fd0d226c..0000000000
--- a/Lang/Jq/Prime-numbers-whose-neighboring-pairs-are-tetraprimes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Prime-numbers-whose-neighboring-pairs-are-tetraprimes/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Pseudo-random-numbers-Combined-recursive-generator-MRG32k3a b/Lang/Jq/Pseudo-random-numbers-Combined-recursive-generator-MRG32k3a
deleted file mode 120000
index 8a1fa69d52..0000000000
--- a/Lang/Jq/Pseudo-random-numbers-Combined-recursive-generator-MRG32k3a
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pseudo-random-numbers-Combined-recursive-generator-MRG32k3a/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Pseudo-random-numbers-PCG32 b/Lang/Jq/Pseudo-random-numbers-PCG32
deleted file mode 120000
index c80dea5d5d..0000000000
--- a/Lang/Jq/Pseudo-random-numbers-PCG32
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pseudo-random-numbers-PCG32/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Pseudo-random-numbers-Xorshift-star b/Lang/Jq/Pseudo-random-numbers-Xorshift-star
deleted file mode 120000
index 54ff010417..0000000000
--- a/Lang/Jq/Pseudo-random-numbers-Xorshift-star
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pseudo-random-numbers-Xorshift-star/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Quaternion-type b/Lang/Jq/Quaternion-type
new file mode 120000
index 0000000000..36df977f17
--- /dev/null
+++ b/Lang/Jq/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Ramer-Douglas-Peucker-line-simplification b/Lang/Jq/Ramer-Douglas-Peucker-line-simplification
deleted file mode 120000
index 2692c011c6..0000000000
--- a/Lang/Jq/Ramer-Douglas-Peucker-line-simplification
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ramer-Douglas-Peucker-line-simplification/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Random-sentence-from-book b/Lang/Jq/Random-sentence-from-book
deleted file mode 120000
index 677f7ffdcc..0000000000
--- a/Lang/Jq/Random-sentence-from-book
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Random-sentence-from-book/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Rosetta-Code-Rank-languages-by-number-of-users b/Lang/Jq/Rosetta-Code-Rank-languages-by-number-of-users
deleted file mode 120000
index 41c301e751..0000000000
--- a/Lang/Jq/Rosetta-Code-Rank-languages-by-number-of-users
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Rosetta-Code-Rank-languages-by-number-of-users/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Sequence:-nth-number-with-exactly-n-divisors b/Lang/Jq/Sequence-nth-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/Jq/Sequence:-nth-number-with-exactly-n-divisors
rename to Lang/Jq/Sequence-nth-number-with-exactly-n-divisors
diff --git a/Lang/Jq/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors b/Lang/Jq/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
similarity index 100%
rename from Lang/Jq/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors
rename to Lang/Jq/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
diff --git a/Lang/Jq/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/Jq/Sequence-smallest-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/Jq/Sequence:-smallest-number-with-exactly-n-divisors
rename to Lang/Jq/Sequence-smallest-number-with-exactly-n-divisors
diff --git a/Lang/Jq/Set-puzzle b/Lang/Jq/Set-puzzle
deleted file mode 120000
index 4d4860ff33..0000000000
--- a/Lang/Jq/Set-puzzle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Set-puzzle/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Set-right-adjacent-bits b/Lang/Jq/Set-right-adjacent-bits
deleted file mode 120000
index 74d85af7c9..0000000000
--- a/Lang/Jq/Set-right-adjacent-bits
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Set-right-adjacent-bits/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Sierpinski-pentagon b/Lang/Jq/Sierpinski-pentagon
deleted file mode 120000
index 25b52521df..0000000000
--- a/Lang/Jq/Sierpinski-pentagon
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sierpinski-pentagon/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Sleeping-Beauty-problem b/Lang/Jq/Sleeping-Beauty-problem
deleted file mode 120000
index 56204d6c76..0000000000
--- a/Lang/Jq/Sleeping-Beauty-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sleeping-Beauty-problem/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Solve-a-Hidato-puzzle b/Lang/Jq/Solve-a-Hidato-puzzle
deleted file mode 120000
index e3f6b38721..0000000000
--- a/Lang/Jq/Solve-a-Hidato-puzzle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Solve-a-Hidato-puzzle/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Solve-a-Holy-Knights-tour b/Lang/Jq/Solve-a-Holy-Knights-tour
deleted file mode 120000
index d69331eff1..0000000000
--- a/Lang/Jq/Solve-a-Holy-Knights-tour
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Solve-a-Holy-Knights-tour/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Solve-a-Numbrix-puzzle b/Lang/Jq/Solve-a-Numbrix-puzzle
deleted file mode 120000
index 29721632e1..0000000000
--- a/Lang/Jq/Solve-a-Numbrix-puzzle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Solve-a-Numbrix-puzzle/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Sort-an-outline-at-every-level b/Lang/Jq/Sort-an-outline-at-every-level
deleted file mode 120000
index bce371340d..0000000000
--- a/Lang/Jq/Sort-an-outline-at-every-level
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-an-outline-at-every-level/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Sorting-Algorithms-Circle-Sort b/Lang/Jq/Sorting-Algorithms-Circle-Sort
new file mode 120000
index 0000000000..acb625912d
--- /dev/null
+++ b/Lang/Jq/Sorting-Algorithms-Circle-Sort
@@ -0,0 +1 @@
+../../Task/Sorting-Algorithms-Circle-Sort/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Strassens-algorithm b/Lang/Jq/Strassens-algorithm
deleted file mode 120000
index d6ccda4254..0000000000
--- a/Lang/Jq/Strassens-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strassens-algorithm/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Thieles-interpolation-formula b/Lang/Jq/Thieles-interpolation-formula
deleted file mode 120000
index 25d4327e8c..0000000000
--- a/Lang/Jq/Thieles-interpolation-formula
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Thieles-interpolation-formula/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Tic-tac-toe b/Lang/Jq/Tic-tac-toe
deleted file mode 120000
index 29e18a13ef..0000000000
--- a/Lang/Jq/Tic-tac-toe
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tic-tac-toe/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Twos-complement b/Lang/Jq/Twos-complement
deleted file mode 120000
index 79d28d31d7..0000000000
--- a/Lang/Jq/Twos-complement
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Twos-complement/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Vogels-approximation-method b/Lang/Jq/Vogels-approximation-method
deleted file mode 120000
index fb9aff7884..0000000000
--- a/Lang/Jq/Vogels-approximation-method
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Vogels-approximation-method/Jq
\ No newline at end of file
diff --git a/Lang/Jq/War-card-game b/Lang/Jq/War-card-game
deleted file mode 120000
index 428c4a1307..0000000000
--- a/Lang/Jq/War-card-game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/War-card-game/Jq
\ No newline at end of file
diff --git a/Lang/Jq/Wordiff b/Lang/Jq/Wordiff
deleted file mode 120000
index 61aa15852c..0000000000
--- a/Lang/Jq/Wordiff
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Wordiff/Jq
\ No newline at end of file
diff --git a/Lang/Julia/Bioinformatics-base-count b/Lang/Julia/Bioinformatics-base-count
new file mode 120000
index 0000000000..37835d6558
--- /dev/null
+++ b/Lang/Julia/Bioinformatics-base-count
@@ -0,0 +1 @@
+../../Task/Bioinformatics-base-count/Julia
\ No newline at end of file
diff --git a/Lang/Julia/Meissel-Mertens-constant b/Lang/Julia/Meissel-Mertens-constant
new file mode 120000
index 0000000000..24fa8f526c
--- /dev/null
+++ b/Lang/Julia/Meissel-Mertens-constant
@@ -0,0 +1 @@
+../../Task/Meissel-Mertens-constant/Julia
\ No newline at end of file
diff --git a/Lang/Julia/Miller-Rabin-primality-test b/Lang/Julia/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..1a7339a0d3
--- /dev/null
+++ b/Lang/Julia/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/Julia
\ No newline at end of file
diff --git a/Lang/Julia/OLE-automation b/Lang/Julia/OLE-automation
deleted file mode 120000
index 58b1722653..0000000000
--- a/Lang/Julia/OLE-automation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/OLE-automation/Julia
\ No newline at end of file
diff --git a/Lang/Julia/Quaternion-type b/Lang/Julia/Quaternion-type
new file mode 120000
index 0000000000..8a462d73ba
--- /dev/null
+++ b/Lang/Julia/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/Julia
\ No newline at end of file
diff --git a/Lang/Julia/Sequence:-nth-number-with-exactly-n-divisors b/Lang/Julia/Sequence-nth-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/Julia/Sequence:-nth-number-with-exactly-n-divisors
rename to Lang/Julia/Sequence-nth-number-with-exactly-n-divisors
diff --git a/Lang/Julia/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors b/Lang/Julia/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
similarity index 100%
rename from Lang/Julia/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors
rename to Lang/Julia/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
diff --git a/Lang/Julia/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/Julia/Sequence-smallest-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/Julia/Sequence:-smallest-number-with-exactly-n-divisors
rename to Lang/Julia/Sequence-smallest-number-with-exactly-n-divisors
diff --git a/Lang/Julia/Simulate-input-Keyboard b/Lang/Julia/Simulate-input-Keyboard
deleted file mode 120000
index 79cc3689e4..0000000000
--- a/Lang/Julia/Simulate-input-Keyboard
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Simulate-input-Keyboard/Julia
\ No newline at end of file
diff --git a/Lang/Julia/Sorting-Algorithms-Circle-Sort b/Lang/Julia/Sorting-Algorithms-Circle-Sort
new file mode 120000
index 0000000000..a8c5c2c2be
--- /dev/null
+++ b/Lang/Julia/Sorting-Algorithms-Circle-Sort
@@ -0,0 +1 @@
+../../Task/Sorting-Algorithms-Circle-Sort/Julia
\ No newline at end of file
diff --git a/Lang/Julia/Use-another-language-to-call-a-function b/Lang/Julia/Use-another-language-to-call-a-function
deleted file mode 120000
index c21a8c88ad..0000000000
--- a/Lang/Julia/Use-another-language-to-call-a-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Use-another-language-to-call-a-function/Julia
\ No newline at end of file
diff --git a/Lang/K/Abundant-odd-numbers b/Lang/K/Abundant-odd-numbers
deleted file mode 120000
index e7fe0d3fc3..0000000000
--- a/Lang/K/Abundant-odd-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abundant-odd-numbers/K
\ No newline at end of file
diff --git a/Lang/K/Ascending-primes b/Lang/K/Ascending-primes
deleted file mode 120000
index d9555980d2..0000000000
--- a/Lang/K/Ascending-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ascending-primes/K
\ No newline at end of file
diff --git a/Lang/K/Benfords-law b/Lang/K/Benfords-law
deleted file mode 120000
index 75ff9d97ad..0000000000
--- a/Lang/K/Benfords-law
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Benfords-law/K
\ No newline at end of file
diff --git a/Lang/K/Bulls-and-cows b/Lang/K/Bulls-and-cows
deleted file mode 120000
index 97544c963d..0000000000
--- a/Lang/K/Bulls-and-cows
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bulls-and-cows/K
\ No newline at end of file
diff --git a/Lang/K/Circular-primes b/Lang/K/Circular-primes
deleted file mode 120000
index 5e07afa7a8..0000000000
--- a/Lang/K/Circular-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Circular-primes/K
\ No newline at end of file
diff --git a/Lang/K/Compare-a-list-of-strings b/Lang/K/Compare-a-list-of-strings
deleted file mode 120000
index e673df5891..0000000000
--- a/Lang/K/Compare-a-list-of-strings
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compare-a-list-of-strings/K
\ No newline at end of file
diff --git a/Lang/K/Compare-length-of-two-strings b/Lang/K/Compare-length-of-two-strings
deleted file mode 120000
index 9854a6e09b..0000000000
--- a/Lang/K/Compare-length-of-two-strings
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compare-length-of-two-strings/K
\ No newline at end of file
diff --git a/Lang/K/Descending-primes b/Lang/K/Descending-primes
deleted file mode 120000
index 1478a33e22..0000000000
--- a/Lang/K/Descending-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Descending-primes/K
\ No newline at end of file
diff --git a/Lang/K/Distribution-of-0-digits-in-factorial-series b/Lang/K/Distribution-of-0-digits-in-factorial-series
deleted file mode 120000
index c4d66f6a7e..0000000000
--- a/Lang/K/Distribution-of-0-digits-in-factorial-series
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Distribution-of-0-digits-in-factorial-series/K
\ No newline at end of file
diff --git a/Lang/K/Empty-program b/Lang/K/Empty-program
new file mode 120000
index 0000000000..f255a9c6f6
--- /dev/null
+++ b/Lang/K/Empty-program
@@ -0,0 +1 @@
+../../Task/Empty-program/K
\ No newline at end of file
diff --git a/Lang/K/Euler-method b/Lang/K/Euler-method
deleted file mode 120000
index c1f821dc7c..0000000000
--- a/Lang/K/Euler-method
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Euler-method/K
\ No newline at end of file
diff --git a/Lang/K/Find-common-directory-path b/Lang/K/Find-common-directory-path
deleted file mode 120000
index 21e1ffcdd3..0000000000
--- a/Lang/K/Find-common-directory-path
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Find-common-directory-path/K
\ No newline at end of file
diff --git a/Lang/K/M-bius-function b/Lang/K/M-bius-function
deleted file mode 120000
index e4dca86d37..0000000000
--- a/Lang/K/M-bius-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/M-bius-function/K
\ No newline at end of file
diff --git a/Lang/K/Monads-Maybe-monad b/Lang/K/Monads-Maybe-monad
deleted file mode 120000
index c39136ba4b..0000000000
--- a/Lang/K/Monads-Maybe-monad
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Monads-Maybe-monad/K
\ No newline at end of file
diff --git a/Lang/K/Monty-Hall-problem b/Lang/K/Monty-Hall-problem
deleted file mode 120000
index 8fb0f9e98b..0000000000
--- a/Lang/K/Monty-Hall-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Monty-Hall-problem/K
\ No newline at end of file
diff --git a/Lang/K/Reverse-words-in-a-string b/Lang/K/Reverse-words-in-a-string
deleted file mode 120000
index d83b97640c..0000000000
--- a/Lang/K/Reverse-words-in-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Reverse-words-in-a-string/K
\ No newline at end of file
diff --git a/Lang/K/Sieve-of-Eratosthenes b/Lang/K/Sieve-of-Eratosthenes
deleted file mode 120000
index c66b9a1b22..0000000000
--- a/Lang/K/Sieve-of-Eratosthenes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sieve-of-Eratosthenes/K
\ No newline at end of file
diff --git a/Lang/K/Square-free-integers b/Lang/K/Square-free-integers
deleted file mode 120000
index a0f2a0affe..0000000000
--- a/Lang/K/Square-free-integers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Square-free-integers/K
\ No newline at end of file
diff --git a/Lang/K/Substring b/Lang/K/Substring
deleted file mode 120000
index 002d50df4f..0000000000
--- a/Lang/K/Substring
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Substring/K
\ No newline at end of file
diff --git a/Lang/K/Sum-multiples-of-3-and-5 b/Lang/K/Sum-multiples-of-3-and-5
deleted file mode 120000
index 625ba55b5f..0000000000
--- a/Lang/K/Sum-multiples-of-3-and-5
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sum-multiples-of-3-and-5/K
\ No newline at end of file
diff --git a/Lang/K/Tic-tac-toe b/Lang/K/Tic-tac-toe
deleted file mode 120000
index bdd7e9ba5b..0000000000
--- a/Lang/K/Tic-tac-toe
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tic-tac-toe/K
\ No newline at end of file
diff --git a/Lang/K/UTF-8-encode-and-decode b/Lang/K/UTF-8-encode-and-decode
deleted file mode 120000
index f38c9e1894..0000000000
--- a/Lang/K/UTF-8-encode-and-decode
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/UTF-8-encode-and-decode/K
\ No newline at end of file
diff --git a/Lang/K/Write-float-arrays-to-a-text-file b/Lang/K/Write-float-arrays-to-a-text-file
deleted file mode 120000
index 2af99671ba..0000000000
--- a/Lang/K/Write-float-arrays-to-a-text-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Write-float-arrays-to-a-text-file/K
\ No newline at end of file
diff --git a/Lang/Kantalo/00-LANG.txt b/Lang/Kantalo/00-LANG.txt
deleted file mode 100644
index 453580c58d..0000000000
--- a/Lang/Kantalo/00-LANG.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-{{language|Kantalo
-|version=0.0.2
-|exec=interpreted
-|strength=weak
-|express=explicit
-|checking=dynamic
-|gc=yes
-|tags=Kantalo,Language
-|LCT=yes
-|hopl=no
-|safety=unsafe
-|site=http://kantalo.kesug.com/}}
-
-=={{header|Kantalo}}==
-
-Kantalo is a non-object-oriented programming language, with the aim of making it easier to use.
-
-==Main commands==
-
-Here are some kantalo commands:
-
-var.save - It is used to define variable.
-var.import - Import variable outside functions.
-var.edit - Edit an Existing Variable.
-terminal.text - Returns a message passed within the argument.
-terminal.input - Creates a text input.
-if- Used to create conditions .
-func - It is used to create functions.
-execute - Performs functions.
-
-
-Simple Hello world with kantalo:
-
-
-var.save nome = "Alice",
-func saudacao > (
- terminal.text("Seja bem-vindo(a), -*nome*-!")
-)
-execute saudacao
-
\ No newline at end of file
diff --git a/Lang/Kantalo/00-META.yaml b/Lang/Kantalo/00-META.yaml
deleted file mode 100644
index c7d465ac08..0000000000
--- a/Lang/Kantalo/00-META.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-from: http://rosettacode.org/wiki/Category:Kantalo
diff --git a/Lang/Koka/00-LANG.txt b/Lang/Koka/00-LANG.txt
index 540a8fe180..96ea39de13 100644
--- a/Lang/Koka/00-LANG.txt
+++ b/Lang/Koka/00-LANG.txt
@@ -3,7 +3,7 @@
Releases:
- https://github.com/koka-lang/koka/releases
-Latest: v3.1.3
+Latest: v2.4.2
'''Language Reference'''
diff --git a/Lang/Koka/A+B b/Lang/Koka/A+B
deleted file mode 120000
index 5fcfbb2462..0000000000
--- a/Lang/Koka/A+B
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/A+B/Koka
\ No newline at end of file
diff --git a/Lang/Koka/Extend-your-language b/Lang/Koka/Extend-your-language
deleted file mode 120000
index fa9d061610..0000000000
--- a/Lang/Koka/Extend-your-language
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Extend-your-language/Koka
\ No newline at end of file
diff --git a/Lang/Koka/Jump-anywhere b/Lang/Koka/Jump-anywhere
deleted file mode 120000
index 39d5f8124d..0000000000
--- a/Lang/Koka/Jump-anywhere
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jump-anywhere/Koka
\ No newline at end of file
diff --git a/Lang/Koka/Letter-frequency b/Lang/Koka/Letter-frequency
deleted file mode 120000
index 35e2486b2e..0000000000
--- a/Lang/Koka/Letter-frequency
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Letter-frequency/Koka
\ No newline at end of file
diff --git a/Lang/Koka/Loops-Break b/Lang/Koka/Loops-Break
deleted file mode 120000
index 21d8774db0..0000000000
--- a/Lang/Koka/Loops-Break
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Break/Koka
\ No newline at end of file
diff --git a/Lang/Koka/Man-or-boy-test b/Lang/Koka/Man-or-boy-test
deleted file mode 120000
index d04c480201..0000000000
--- a/Lang/Koka/Man-or-boy-test
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Man-or-boy-test/Koka
\ No newline at end of file
diff --git a/Lang/Koka/Monads-Writer-monad b/Lang/Koka/Monads-Writer-monad
deleted file mode 120000
index 21e3e4c596..0000000000
--- a/Lang/Koka/Monads-Writer-monad
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Monads-Writer-monad/Koka
\ No newline at end of file
diff --git a/Lang/Koka/Nim-game b/Lang/Koka/Nim-game
deleted file mode 120000
index f3fed42c95..0000000000
--- a/Lang/Koka/Nim-game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nim-game/Koka
\ No newline at end of file
diff --git a/Lang/Koka/Order-by-pair-comparisons b/Lang/Koka/Order-by-pair-comparisons
deleted file mode 120000
index f453142a5f..0000000000
--- a/Lang/Koka/Order-by-pair-comparisons
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Order-by-pair-comparisons/Koka
\ No newline at end of file
diff --git a/Lang/Komodo/00-LANG.txt b/Lang/Komodo/00-LANG.txt
deleted file mode 100644
index 90f6e00b5c..0000000000
--- a/Lang/Komodo/00-LANG.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-{{language
-|exec=interpreted
-|site=https://komodo-lang.org}}{{language programming paradigm|Declarative}}{{language programming paradigm|Procedural}}
-Komodo is a programming language to test ideas in a fast and easy way. It is ideal for problems with basic discrete structures, like numbers and words. Komodo tries to make operating with these entities as easy as possible while minimizing the amount of code needed to achieve a successful implementation. Komodo is a scripting language regarding its flexibility, but it is a pretty specific language with a lot of assumptions about how things should be. Komodo is an experimental language, and some of its features are there because I had a personal preference for them.
\ No newline at end of file
diff --git a/Lang/Komodo/00-META.yaml b/Lang/Komodo/00-META.yaml
deleted file mode 100644
index c626a5f324..0000000000
--- a/Lang/Komodo/00-META.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-from: http://rosettacode.org/wiki/Category:Komodo
diff --git a/Lang/Komodo/Arithmetic-Integer b/Lang/Komodo/Arithmetic-Integer
deleted file mode 120000
index bfaefbd88d..0000000000
--- a/Lang/Komodo/Arithmetic-Integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-Integer/Komodo
\ No newline at end of file
diff --git a/Lang/Komodo/Array-concatenation b/Lang/Komodo/Array-concatenation
deleted file mode 120000
index bc329941d2..0000000000
--- a/Lang/Komodo/Array-concatenation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Array-concatenation/Komodo
\ No newline at end of file
diff --git a/Lang/Komodo/Empty-string b/Lang/Komodo/Empty-string
deleted file mode 120000
index 9210767339..0000000000
--- a/Lang/Komodo/Empty-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Empty-string/Komodo
\ No newline at end of file
diff --git a/Lang/Komodo/FizzBuzz b/Lang/Komodo/FizzBuzz
deleted file mode 120000
index 49b35c998a..0000000000
--- a/Lang/Komodo/FizzBuzz
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/FizzBuzz/Komodo
\ No newline at end of file
diff --git a/Lang/Komodo/Function-definition b/Lang/Komodo/Function-definition
deleted file mode 120000
index 375c03b7e3..0000000000
--- a/Lang/Komodo/Function-definition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Function-definition/Komodo
\ No newline at end of file
diff --git a/Lang/Komodo/Greatest-element-of-a-list b/Lang/Komodo/Greatest-element-of-a-list
deleted file mode 120000
index 61a341a27e..0000000000
--- a/Lang/Komodo/Greatest-element-of-a-list
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Greatest-element-of-a-list/Komodo
\ No newline at end of file
diff --git a/Lang/Komodo/Hello-world-Text b/Lang/Komodo/Hello-world-Text
deleted file mode 120000
index cf4d6242bb..0000000000
--- a/Lang/Komodo/Hello-world-Text
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Text/Komodo
\ No newline at end of file
diff --git a/Lang/Komodo/Literals-Integer b/Lang/Komodo/Literals-Integer
deleted file mode 120000
index e770e3710e..0000000000
--- a/Lang/Komodo/Literals-Integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Literals-Integer/Komodo
\ No newline at end of file
diff --git a/Lang/Komodo/Logical-operations b/Lang/Komodo/Logical-operations
deleted file mode 120000
index f15b7485a0..0000000000
--- a/Lang/Komodo/Logical-operations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Logical-operations/Komodo
\ No newline at end of file
diff --git a/Lang/Komodo/Null-object b/Lang/Komodo/Null-object
deleted file mode 120000
index a6a020a8ca..0000000000
--- a/Lang/Komodo/Null-object
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Null-object/Komodo
\ No newline at end of file
diff --git a/Lang/Komodo/Set b/Lang/Komodo/Set
deleted file mode 120000
index a5c8370f07..0000000000
--- a/Lang/Komodo/Set
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Set/Komodo
\ No newline at end of file
diff --git a/Lang/Komodo/String-concatenation b/Lang/Komodo/String-concatenation
deleted file mode 120000
index 72385e6195..0000000000
--- a/Lang/Komodo/String-concatenation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-concatenation/Komodo
\ No newline at end of file
diff --git a/Lang/Kotlin/00-LANG.txt b/Lang/Kotlin/00-LANG.txt
index 95d9b59867..5f33d4bd2a 100644
--- a/Lang/Kotlin/00-LANG.txt
+++ b/Lang/Kotlin/00-LANG.txt
@@ -4,7 +4,7 @@
|site=http://kotlinlang.org
|hopl=no
}}
-Kotlin is a statically-typed programming language that runs on the [[runs on vm::Java Virtual Machine]] (JVM) and can also be compiled to JavaScript. It is being developed by JetBrains with assistance from open source contributors and is intended for industrial use.
+Kotlin is a statically-typed programming language that runs on the [[JVM]] and can also be compiled to JavaScript. It is being developed by JetBrains with assistance from open source contributors and is intended for industrial use.
In addition, a separate team at JetBrains is developing a version of Kotlin which compiles (via LLVM) directly to machine code for various platforms. The first Technology Preview for this version was rolled out in April 2017.
diff --git a/Lang/Kotlin/Bioinformatics-base-count b/Lang/Kotlin/Bioinformatics-base-count
new file mode 120000
index 0000000000..998809c6ab
--- /dev/null
+++ b/Lang/Kotlin/Bioinformatics-base-count
@@ -0,0 +1 @@
+../../Task/Bioinformatics-base-count/Kotlin
\ No newline at end of file
diff --git a/Lang/Kotlin/Boyer-Moore-string-search b/Lang/Kotlin/Boyer-Moore-string-search
deleted file mode 120000
index 985c6560bd..0000000000
--- a/Lang/Kotlin/Boyer-Moore-string-search
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Boyer-Moore-string-search/Kotlin
\ No newline at end of file
diff --git a/Lang/Kotlin/Compare-length-of-two-strings b/Lang/Kotlin/Compare-length-of-two-strings
deleted file mode 120000
index a8c0b8d6cf..0000000000
--- a/Lang/Kotlin/Compare-length-of-two-strings
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compare-length-of-two-strings/Kotlin
\ No newline at end of file
diff --git a/Lang/Kotlin/Compiler-AST-interpreter b/Lang/Kotlin/Compiler-AST-interpreter
deleted file mode 120000
index 5990b7f53e..0000000000
--- a/Lang/Kotlin/Compiler-AST-interpreter
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compiler-AST-interpreter/Kotlin
\ No newline at end of file
diff --git a/Lang/Kotlin/Factorial-primes b/Lang/Kotlin/Factorial-primes
deleted file mode 120000
index 36b19250f9..0000000000
--- a/Lang/Kotlin/Factorial-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factorial-primes/Kotlin
\ No newline at end of file
diff --git a/Lang/Kotlin/Miller-Rabin-primality-test b/Lang/Kotlin/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..4a724f8c08
--- /dev/null
+++ b/Lang/Kotlin/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/Kotlin
\ No newline at end of file
diff --git a/Lang/Kotlin/Quaternion-type b/Lang/Kotlin/Quaternion-type
new file mode 120000
index 0000000000..a85b316d4c
--- /dev/null
+++ b/Lang/Kotlin/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/Kotlin
\ No newline at end of file
diff --git a/Lang/Kotlin/Radical-of-an-integer b/Lang/Kotlin/Radical-of-an-integer
deleted file mode 120000
index e9d51e3e8d..0000000000
--- a/Lang/Kotlin/Radical-of-an-integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Radical-of-an-integer/Kotlin
\ No newline at end of file
diff --git a/Lang/Kotlin/Sequence:-nth-number-with-exactly-n-divisors b/Lang/Kotlin/Sequence-nth-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/Kotlin/Sequence:-nth-number-with-exactly-n-divisors
rename to Lang/Kotlin/Sequence-nth-number-with-exactly-n-divisors
diff --git a/Lang/Kotlin/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors b/Lang/Kotlin/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
similarity index 100%
rename from Lang/Kotlin/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors
rename to Lang/Kotlin/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
diff --git a/Lang/Kotlin/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/Kotlin/Sequence-smallest-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/Kotlin/Sequence:-smallest-number-with-exactly-n-divisors
rename to Lang/Kotlin/Sequence-smallest-number-with-exactly-n-divisors
diff --git a/Lang/Kotlin/Sorting-Algorithms-Circle-Sort b/Lang/Kotlin/Sorting-Algorithms-Circle-Sort
new file mode 120000
index 0000000000..74cde5ab2a
--- /dev/null
+++ b/Lang/Kotlin/Sorting-Algorithms-Circle-Sort
@@ -0,0 +1 @@
+../../Task/Sorting-Algorithms-Circle-Sort/Kotlin
\ No newline at end of file
diff --git a/Lang/Kotlin/Strassens-algorithm b/Lang/Kotlin/Strassens-algorithm
deleted file mode 120000
index f68cd59b88..0000000000
--- a/Lang/Kotlin/Strassens-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strassens-algorithm/Kotlin
\ No newline at end of file
diff --git a/Lang/LDPL/Command-line-arguments b/Lang/LDPL/Command-line-arguments
deleted file mode 120000
index 7b4b88a226..0000000000
--- a/Lang/LDPL/Command-line-arguments
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Command-line-arguments/LDPL
\ No newline at end of file
diff --git a/Lang/LOLCODE/00-LANG.txt b/Lang/LOLCODE/00-LANG.txt
index 2195760c79..57c4165430 100644
--- a/Lang/LOLCODE/00-LANG.txt
+++ b/Lang/LOLCODE/00-LANG.txt
@@ -3,21 +3,4 @@
|site=http://lolcode.org/
|hopl=no
}}
-
-LOLCODE is an esoteric language created by Adam Lindsay in 2007. It was inspired by the [https://en.wikipedia.org/wiki/Lolcat lolcat] phenomenon which began a year earlier. LOLCODE uses intentionally grammatically incorrect text known as lolspeak, a humorous imagining of what a cat might say if it could speak something resembling English.
-
-Here is an example program that prints the numbers 0 through 9 to standard output:
-
-HAI 1.3
-
-IM IN YR loop UPPIN YR var TIL BOTH SAEM var AN 10
- VISIBLE var
-IM OUTTA YR loop
-
-KTHXBYE
-
-
-==Todo==
-[https://rosettacode.org/wiki/Tasks_not_implemented_in_LOLCODE Tasks not implemented in LOLCODE]
-
[[Category:Esoteric Languages]]
\ No newline at end of file
diff --git a/Lang/LOLCODE/A+B b/Lang/LOLCODE/A+B
deleted file mode 120000
index d5ea45853c..0000000000
--- a/Lang/LOLCODE/A+B
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/A+B/LOLCODE
\ No newline at end of file
diff --git a/Lang/LOLCODE/Arithmetic-Integer b/Lang/LOLCODE/Arithmetic-Integer
deleted file mode 120000
index bba2907420..0000000000
--- a/Lang/LOLCODE/Arithmetic-Integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-Integer/LOLCODE
\ No newline at end of file
diff --git a/Lang/LOLCODE/Boolean-values b/Lang/LOLCODE/Boolean-values
deleted file mode 120000
index b3ad6a0e0d..0000000000
--- a/Lang/LOLCODE/Boolean-values
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Boolean-values/LOLCODE
\ No newline at end of file
diff --git a/Lang/LOLCODE/Case-sensitivity-of-identifiers b/Lang/LOLCODE/Case-sensitivity-of-identifiers
deleted file mode 120000
index 32c69366ea..0000000000
--- a/Lang/LOLCODE/Case-sensitivity-of-identifiers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Case-sensitivity-of-identifiers/LOLCODE
\ No newline at end of file
diff --git a/Lang/LOLCODE/Catalan-numbers b/Lang/LOLCODE/Catalan-numbers
deleted file mode 120000
index 3fdf885cda..0000000000
--- a/Lang/LOLCODE/Catalan-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Catalan-numbers/LOLCODE
\ No newline at end of file
diff --git a/Lang/LOLCODE/Chinese-zodiac b/Lang/LOLCODE/Chinese-zodiac
deleted file mode 120000
index 0169fc21dd..0000000000
--- a/Lang/LOLCODE/Chinese-zodiac
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Chinese-zodiac/LOLCODE
\ No newline at end of file
diff --git a/Lang/LOLCODE/Compound-data-type b/Lang/LOLCODE/Compound-data-type
deleted file mode 120000
index a58d5bfd2a..0000000000
--- a/Lang/LOLCODE/Compound-data-type
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compound-data-type/LOLCODE
\ No newline at end of file
diff --git a/Lang/LOLCODE/Conditional-structures b/Lang/LOLCODE/Conditional-structures
deleted file mode 120000
index 15617a63e0..0000000000
--- a/Lang/LOLCODE/Conditional-structures
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Conditional-structures/LOLCODE
\ No newline at end of file
diff --git a/Lang/LOLCODE/Copy-a-string b/Lang/LOLCODE/Copy-a-string
deleted file mode 120000
index deb186939a..0000000000
--- a/Lang/LOLCODE/Copy-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Copy-a-string/LOLCODE
\ No newline at end of file
diff --git a/Lang/LOLCODE/Determine-if-a-string-has-all-the-same-characters b/Lang/LOLCODE/Determine-if-a-string-has-all-the-same-characters
deleted file mode 120000
index 492082be7e..0000000000
--- a/Lang/LOLCODE/Determine-if-a-string-has-all-the-same-characters
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-has-all-the-same-characters/LOLCODE
\ No newline at end of file
diff --git a/Lang/LOLCODE/Dot-product b/Lang/LOLCODE/Dot-product
deleted file mode 120000
index 0667fd8bc3..0000000000
--- a/Lang/LOLCODE/Dot-product
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dot-product/LOLCODE
\ No newline at end of file
diff --git a/Lang/LOLCODE/Empty-program b/Lang/LOLCODE/Empty-program
deleted file mode 120000
index 31b87c5a4b..0000000000
--- a/Lang/LOLCODE/Empty-program
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Empty-program/LOLCODE
\ No newline at end of file
diff --git a/Lang/LOLCODE/Evaluate-binomial-coefficients b/Lang/LOLCODE/Evaluate-binomial-coefficients
deleted file mode 120000
index f6f761fd40..0000000000
--- a/Lang/LOLCODE/Evaluate-binomial-coefficients
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Evaluate-binomial-coefficients/LOLCODE
\ No newline at end of file
diff --git a/Lang/LOLCODE/Function-definition b/Lang/LOLCODE/Function-definition
deleted file mode 120000
index c9fc3fa7a5..0000000000
--- a/Lang/LOLCODE/Function-definition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Function-definition/LOLCODE
\ No newline at end of file
diff --git a/Lang/LOLCODE/Gotchas b/Lang/LOLCODE/Gotchas
deleted file mode 120000
index 753dc0a0c3..0000000000
--- a/Lang/LOLCODE/Gotchas
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Gotchas/LOLCODE
\ No newline at end of file
diff --git a/Lang/LOLCODE/Hello-world-Newline-omission b/Lang/LOLCODE/Hello-world-Newline-omission
deleted file mode 120000
index 29d6dd8c2e..0000000000
--- a/Lang/LOLCODE/Hello-world-Newline-omission
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Newline-omission/LOLCODE
\ No newline at end of file
diff --git a/Lang/LOLCODE/Integer-comparison b/Lang/LOLCODE/Integer-comparison
deleted file mode 120000
index 565277c685..0000000000
--- a/Lang/LOLCODE/Integer-comparison
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Integer-comparison/LOLCODE
\ No newline at end of file
diff --git a/Lang/LOLCODE/Isqrt-integer-square-root-of-X b/Lang/LOLCODE/Isqrt-integer-square-root-of-X
deleted file mode 120000
index 4aa1c0772e..0000000000
--- a/Lang/LOLCODE/Isqrt-integer-square-root-of-X
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Isqrt-integer-square-root-of-X/LOLCODE
\ No newline at end of file
diff --git a/Lang/LOLCODE/Jewels-and-stones b/Lang/LOLCODE/Jewels-and-stones
deleted file mode 120000
index 5c30a50d3b..0000000000
--- a/Lang/LOLCODE/Jewels-and-stones
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jewels-and-stones/LOLCODE
\ No newline at end of file
diff --git a/Lang/LOLCODE/Jordan-P-lya-numbers b/Lang/LOLCODE/Jordan-P-lya-numbers
deleted file mode 120000
index d942ad0dab..0000000000
--- a/Lang/LOLCODE/Jordan-P-lya-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jordan-P-lya-numbers/LOLCODE
\ No newline at end of file
diff --git a/Lang/LOLCODE/Loops-Do-while b/Lang/LOLCODE/Loops-Do-while
deleted file mode 120000
index 55da8969f1..0000000000
--- a/Lang/LOLCODE/Loops-Do-while
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Do-while/LOLCODE
\ No newline at end of file
diff --git a/Lang/LOLCODE/Loops-Downward-for b/Lang/LOLCODE/Loops-Downward-for
deleted file mode 120000
index 098dda4410..0000000000
--- a/Lang/LOLCODE/Loops-Downward-for
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Downward-for/LOLCODE
\ No newline at end of file
diff --git a/Lang/LOLCODE/Loops-For b/Lang/LOLCODE/Loops-For
deleted file mode 120000
index 131d677c68..0000000000
--- a/Lang/LOLCODE/Loops-For
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-For/LOLCODE
\ No newline at end of file
diff --git a/Lang/LOLCODE/Loops-For-with-a-specified-step b/Lang/LOLCODE/Loops-For-with-a-specified-step
deleted file mode 120000
index 5debcbe8c4..0000000000
--- a/Lang/LOLCODE/Loops-For-with-a-specified-step
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-For-with-a-specified-step/LOLCODE
\ No newline at end of file
diff --git a/Lang/LOLCODE/Loops-N-plus-one-half b/Lang/LOLCODE/Loops-N-plus-one-half
deleted file mode 120000
index f67d63ceea..0000000000
--- a/Lang/LOLCODE/Loops-N-plus-one-half
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-N-plus-one-half/LOLCODE
\ No newline at end of file
diff --git a/Lang/LOLCODE/Menu b/Lang/LOLCODE/Menu
deleted file mode 120000
index 8ec9ba2bbb..0000000000
--- a/Lang/LOLCODE/Menu
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Menu/LOLCODE
\ No newline at end of file
diff --git a/Lang/LOLCODE/Nested-function b/Lang/LOLCODE/Nested-function
deleted file mode 120000
index 28b8eedc4f..0000000000
--- a/Lang/LOLCODE/Nested-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nested-function/LOLCODE
\ No newline at end of file
diff --git a/Lang/LOLCODE/Nim-game b/Lang/LOLCODE/Nim-game
deleted file mode 120000
index 8694962a96..0000000000
--- a/Lang/LOLCODE/Nim-game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nim-game/LOLCODE
\ No newline at end of file
diff --git a/Lang/LOLCODE/Nth b/Lang/LOLCODE/Nth
deleted file mode 120000
index ca0f39b290..0000000000
--- a/Lang/LOLCODE/Nth
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nth/LOLCODE
\ No newline at end of file
diff --git a/Lang/LOLCODE/Primality-by-trial-division b/Lang/LOLCODE/Primality-by-trial-division
deleted file mode 120000
index 243da2a0b6..0000000000
--- a/Lang/LOLCODE/Primality-by-trial-division
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Primality-by-trial-division/LOLCODE
\ No newline at end of file
diff --git a/Lang/LOLCODE/Real-constants-and-functions b/Lang/LOLCODE/Real-constants-and-functions
deleted file mode 120000
index 9cae154fda..0000000000
--- a/Lang/LOLCODE/Real-constants-and-functions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Real-constants-and-functions/LOLCODE
\ No newline at end of file
diff --git a/Lang/LOLCODE/Repeat b/Lang/LOLCODE/Repeat
deleted file mode 120000
index bfb28ef859..0000000000
--- a/Lang/LOLCODE/Repeat
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Repeat/LOLCODE
\ No newline at end of file
diff --git a/Lang/LOLCODE/Repeat-a-string b/Lang/LOLCODE/Repeat-a-string
deleted file mode 120000
index b733bdc3e9..0000000000
--- a/Lang/LOLCODE/Repeat-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Repeat-a-string/LOLCODE
\ No newline at end of file
diff --git a/Lang/LOLCODE/Return-multiple-values b/Lang/LOLCODE/Return-multiple-values
deleted file mode 120000
index 326bda4561..0000000000
--- a/Lang/LOLCODE/Return-multiple-values
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Return-multiple-values/LOLCODE
\ No newline at end of file
diff --git a/Lang/LOLCODE/Reverse-a-string b/Lang/LOLCODE/Reverse-a-string
deleted file mode 120000
index c092ce2e24..0000000000
--- a/Lang/LOLCODE/Reverse-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Reverse-a-string/LOLCODE
\ No newline at end of file
diff --git a/Lang/LOLCODE/Short-circuit-evaluation b/Lang/LOLCODE/Short-circuit-evaluation
deleted file mode 120000
index 747e2d63b6..0000000000
--- a/Lang/LOLCODE/Short-circuit-evaluation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Short-circuit-evaluation/LOLCODE
\ No newline at end of file
diff --git a/Lang/LOLCODE/Split-a-character-string-based-on-change-of-character b/Lang/LOLCODE/Split-a-character-string-based-on-change-of-character
deleted file mode 120000
index 3d417eb3b9..0000000000
--- a/Lang/LOLCODE/Split-a-character-string-based-on-change-of-character
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Split-a-character-string-based-on-change-of-character/LOLCODE
\ No newline at end of file
diff --git a/Lang/LOLCODE/String-concatenation b/Lang/LOLCODE/String-concatenation
deleted file mode 120000
index 8f1d425354..0000000000
--- a/Lang/LOLCODE/String-concatenation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-concatenation/LOLCODE
\ No newline at end of file
diff --git a/Lang/LOLCODE/String-interpolation-included- b/Lang/LOLCODE/String-interpolation-included-
deleted file mode 120000
index 2477427706..0000000000
--- a/Lang/LOLCODE/String-interpolation-included-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-interpolation-included-/LOLCODE
\ No newline at end of file
diff --git a/Lang/LOLCODE/Sum-of-a-series b/Lang/LOLCODE/Sum-of-a-series
deleted file mode 120000
index 3071bb174e..0000000000
--- a/Lang/LOLCODE/Sum-of-a-series
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sum-of-a-series/LOLCODE
\ No newline at end of file
diff --git a/Lang/LOLCODE/Terminal-control-Display-an-extended-character b/Lang/LOLCODE/Terminal-control-Display-an-extended-character
deleted file mode 120000
index 506d7e357c..0000000000
--- a/Lang/LOLCODE/Terminal-control-Display-an-extended-character
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Terminal-control-Display-an-extended-character/LOLCODE
\ No newline at end of file
diff --git a/Lang/LOLCODE/Terminal-control-Ringing-the-terminal-bell b/Lang/LOLCODE/Terminal-control-Ringing-the-terminal-bell
deleted file mode 120000
index a3dce93aeb..0000000000
--- a/Lang/LOLCODE/Terminal-control-Ringing-the-terminal-bell
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Terminal-control-Ringing-the-terminal-bell/LOLCODE
\ No newline at end of file
diff --git a/Lang/LOLCODE/Tokenize-a-string b/Lang/LOLCODE/Tokenize-a-string
deleted file mode 120000
index 61653af306..0000000000
--- a/Lang/LOLCODE/Tokenize-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tokenize-a-string/LOLCODE
\ No newline at end of file
diff --git a/Lang/LOLCODE/Topic-variable b/Lang/LOLCODE/Topic-variable
deleted file mode 120000
index 8a1f58e75e..0000000000
--- a/Lang/LOLCODE/Topic-variable
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Topic-variable/LOLCODE
\ No newline at end of file
diff --git a/Lang/LOLCODE/Variable-declaration-reset b/Lang/LOLCODE/Variable-declaration-reset
deleted file mode 120000
index 126975a58e..0000000000
--- a/Lang/LOLCODE/Variable-declaration-reset
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Variable-declaration-reset/LOLCODE
\ No newline at end of file
diff --git a/Lang/LOLCODE/Zeckendorf-number-representation b/Lang/LOLCODE/Zeckendorf-number-representation
deleted file mode 120000
index 093dc5325c..0000000000
--- a/Lang/LOLCODE/Zeckendorf-number-representation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Zeckendorf-number-representation/LOLCODE
\ No newline at end of file
diff --git a/Lang/LSE/Empty-program b/Lang/LSE/Empty-program
new file mode 120000
index 0000000000..16856f6969
--- /dev/null
+++ b/Lang/LSE/Empty-program
@@ -0,0 +1 @@
+../../Task/Empty-program/LSE
\ No newline at end of file
diff --git a/Lang/LSL/00-LANG.txt b/Lang/LSL/00-LANG.txt
index 3025477b27..bdb68f1bc2 100644
--- a/Lang/LSL/00-LANG.txt
+++ b/Lang/LSL/00-LANG.txt
@@ -1,42 +1,25 @@
{{language
|hopl=no
}}
-'''LSL''' ([[wp:Linden_Scripting_Language|'''Linden Scripting Language''']]) is the scripting language developed by [http://en.wikipedia.org/wiki/Linden_Lab Linden Labs] for their virtual sandbox world [[wp:Second_Life|Second Life]]. Also [[wp:OpenSimulator|OpenSimulator]] along with other [https://omrg.org Open Metaverse] proprietors run a largely compatible superset version of LSL. LSL scripts allow objects rezzed in-world(in-game) to interact with and manipulate the virtual world around them, but also the internet in limited fashion. LSL has many built-in functions, and the ability for inter script messaging, http POST and GET requests, gui dialog boxes, chat channel messaging, java & C like semantics, is turning complete, etc.
-
-==In Depth: Syntax Structure==
-LSL is C-like with scoping of local varaibles and global; strict typing with type-recasting possible; use of {} to encapsulate function blocks, and ; to denote an execution block, and () to encapsulate parameters, and equivalency from right to left and for assignment myint=1-2, variables can be formed as procedures that return a value. Oprands are the same, but there are no pointers nor triple oprands such as +++.
-LSL is not like C in many ways, there are only 3 basic types, and 4 special types of data structures: integer (unsigned 32bit), float (unsigned 32bit), string (max string length varies), key ( a 32bit base16 UUID often treated as a string),vectors (set of three floats, aka a tuple <0.0,0.0,0.0> ); quaternions or rot ( set of four floats <0.0,0.0,0.0,0.0> ); lists (1D array that can contain any of or a mix of types of data), There is no void as a type! Nor is there any keyword for functions. Simply outside of a script's default loop function called a state, one forms a function with it's name(type prams){;} and can be called anywhere else. Over-loading is not valid, nor is under-loading when calling a function or variable-function that returns a value.
-
-==In Depth: Where & when LSL scripts can run==
-Rezzing is dragging and dropping from the user's inventory into to the virtual world space, or being worn as attachments to one's avatar (including HUDs). These aforementioned objects take the form of built-in 3d models of basic shapes commonly known as primitives or just prims, sculpted prims, and user uploaded 3D models. Each object has in-turn it's own inventory where the scripts run. In truth one can link many objects into a meta-object known as a link-set, each linked object retains it's own inventory instance, and running scripts. When an object is derezzed, that is brought back into the user's inventory, or an attached object derezzes when the user logs off the scripts' current status is paused and saved.
-
-==In Depth: LSL basic script structure==
-Each script must contain a default script state, this is very similar to the default loop found with in Arduino Clike programming. It is possible to switch the currently running state of a script to a knew one, and back again, thus ignoring/clearing any callback functions called "events". (However the timer does not get cleared upon state changes).
-Each state in LSL scripts can have built in call-back functions known as "event types" which are triggered with interrupt like behavior from a cue that is filled by the current simulator or sim (a sim is world instance, generally a 256x256meter block, although some communication with adjacent sims maybe possible) the script is residing in. Most events are repeatable, but there are logically single fire events such as state_entry, on_rez, on_attach, on_deattach. Aforementioned user functions, variables,
-
-==Back-ends of LSL with in Second-Life==
-In Second-life, one can save & run scripts optionally for the two current back-ends that actually run the code over a server, each with their own pros and cons.
-[https://wiki.secondlife.com/wiki/LSO LSO] exists for backward compatibility. LSO saved scripts are interpreted at runtime by the server. LSO scripts take less initial script memory, they are limited to less available memory as well. In rare circumstances LSO may run faster than MONO. However LSO suffers from memory fragmentation slow downs with list connotation (there are some work around). LSO handles the jump to @location in unexpected ways.
-Mono saved scripts are compiled under [[wp:Mono_(software)|Mono]] (the most recent) to byte-code ran by the server.
- Most scripts will benefit from being set to MONO compilation for greater speed and more available memory, at the cost of higher initial memory used.
+The [[wp:Linden_Scripting_Language|'''Linden Scripting Language''']], usually just called '''LSL''' for short, is a language developed by [http://en.wikipedia.org/wiki/Linden_Lab Linden Labs] for their [[wp:Second_Life|Second Life]] virtual world. LSL allows Second Life objects to sense, respond to events, and interact with the (virtual) world around them, and the Avatars in that world.
==Flavors of LSL==
-# A largely compatible version of LSL that can run in the [[http://opensimulator.org/wiki/OSSL_Script_Library|OpenSimulator]] virtual world.
+There are currently three flavors of the LSL language
+# LSL compiled under [[wp:Mono_(software)|Mono]] (the most recent)
+# The original interpreted version (no longer being developed and only exists for backward compatibility)
+# A largely compatible version of LSL that can run in the [[wp:OpenSimulator|OpenSimulator]] virtual world.
==Documentation==
There are two popular web sites documenting LSL
# Second Life's own [http://wiki.secondlife.com/wiki/LSL_Portal LSL Portal]
# a user supported [http://lslwiki.net/lslwiki/wakka.php LSL Wiki]
-==Libraries of Scripts==
+==Libraries==
There exists several open source libraries where users share code
-* [https://outworldz.com/cgi/freescripts.plx Free LSL Scripts]
* [http://community.secondlife.com/t5/LSL-Scripting-Library/bd-p/LSLScriptingLibrary LSL Scripting Library]
* [http://wiki.secondlife.com/wiki/Category:LSL_Examples LSL Examples]
+* [http://www.free-lsl-scripts.com/cgi/freescripts.plx Free LSL Scripts]
* [http://community.secondlife.com/t5/LSL-Scripting/bd-p/LSLScripting LSL Scripting]
==External Editors==
-There are also many [http://wiki.secondlife.com/wiki/LSL_Alternate_Editors external editors] for LSL allowing you to write with highlighting, [https://github.com/Feay/LSL-for-Scite api tool-tips], [https://github.com/Makopo/lslint syntax check], and (to a limited extent)
-[https://github.com/Sei-Lisa/LSL-compiler compile and execute LSL] outside of the Second Life environment.
-
-You will need to sign up at [http://secondlife.com Second Life] and have a Second Life account to execute LSL in the virtual world. Your scripts can exist by themselves in a folder of your inventory, or in an Object in your inventory, but need to be in an Object that is in-world to execute (if an Object containing scripts is taken in to your inventory, the scripts will be suspended and will resume when brought out in to the world again.)
\ No newline at end of file
+There are also many [http://wiki.secondlife.com/wiki/LSL_Alternate_Editors external editors] for LSL allowing you to write, syntax check, and (to a limited extent) execute LSL outside of the Second Life environment. You will need to sign up at [http://secondlife.com Second Life] and have a Second Life account to execute LSL in the virtual world. Your scripts can exist by themselves in a folder of your inventory, or in an Object in your inventory, but need to be in an Object that is in-world to execute (if an Object containing scripts is taken in to your inventory, the scripts will be suspended and will resume when brought out in to the world again.)
\ No newline at end of file
diff --git a/Lang/LSL/Binary-digits b/Lang/LSL/Binary-digits
deleted file mode 120000
index 54627407f6..0000000000
--- a/Lang/LSL/Binary-digits
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Binary-digits/LSL
\ No newline at end of file
diff --git a/Lang/Labyrinth/00-LANG.txt b/Lang/Labyrinth/00-LANG.txt
deleted file mode 100644
index 6b7624f3ac..0000000000
--- a/Lang/Labyrinth/00-LANG.txt
+++ /dev/null
@@ -1 +0,0 @@
-{{stub}}{{language|site=https://github.com/m-ender/labyrinth}}
\ No newline at end of file
diff --git a/Lang/Labyrinth/00-META.yaml b/Lang/Labyrinth/00-META.yaml
deleted file mode 100644
index 2e09fd26db..0000000000
--- a/Lang/Labyrinth/00-META.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-from: http://rosettacode.org/wiki/Category:Labyrinth
diff --git a/Lang/Lambdatalk/Bioinformatics-base-count b/Lang/Lambdatalk/Bioinformatics-base-count
new file mode 120000
index 0000000000..03508c2431
--- /dev/null
+++ b/Lang/Lambdatalk/Bioinformatics-base-count
@@ -0,0 +1 @@
+../../Task/Bioinformatics-base-count/Lambdatalk
\ No newline at end of file
diff --git a/Lang/Langur/00-LANG.txt b/Lang/Langur/00-LANG.txt
index 612e66c8de..c2da20439a 100644
--- a/Lang/Langur/00-LANG.txt
+++ b/Lang/Langur/00-LANG.txt
@@ -3,22 +3,12 @@
|hopl=no
}}
-Langur is an open-source programming language that natively uses arbitrary-precision decimal floating point, and deals with extremely large and small numbers. It also has native complex numbers that are arbitrary-precision decimal. Its principles of design are accuracy in calculation and a concise, expressive syntax.
+Langur is an open-source imperative/functional programming language. The name langur begins with a lowercase letter when it does not start a sentence.
-Langur has a high number of mathematical operators (rem, mod, etc.) and logical operators (including nand, nor, nxor).
+Langur code can be run with script files or with its REPL. The recommended file name extension is .langur.
-Langur has date/time literals (using ISO 8601 syntax) and duration literals.
+Langur uses a hash mark for single line comments. Therefore, script files may begin with a shebang to tell a Linux shell where to find the interpreter.
-Langur has flexible parameter options, with both positional parameters and parameters by name, and with parameter expansion (on last positional parameter). Parameters by name may be optional or required.
-
-Langur uses exceptions instead of error codes.
-
-Langur code can be run from executable files, or you can use interactive mode or the REPL. The file name extension is .langur.
-
-Langur uses a hash mark for single line comments. Therefore, script files can begin with a shebang to tell a Linux shell where to find the interpreter.
-
-Source code is always UTF-8, with no BOM, using Linux line returns (line feed) only.
-
-The name langur begins with a lowercase letter when it does not start a sentence.
+Source code is in UTF-8, with no BOM, using Linux line returns (line feed) only.
website: https://langurlang.org/
\ No newline at end of file
diff --git a/Lang/Langur/99-bottles-of-beer b/Lang/Langur/99-bottles-of-beer
deleted file mode 120000
index 043a4c56e9..0000000000
--- a/Lang/Langur/99-bottles-of-beer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/99-bottles-of-beer/Langur
\ No newline at end of file
diff --git a/Lang/Langur/Angle-difference-between-two-bearings b/Lang/Langur/Angle-difference-between-two-bearings
deleted file mode 120000
index 7b4ef17804..0000000000
--- a/Lang/Langur/Angle-difference-between-two-bearings
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Angle-difference-between-two-bearings/Langur
\ No newline at end of file
diff --git a/Lang/Langur/Arithmetic-Complex b/Lang/Langur/Arithmetic-Complex
deleted file mode 120000
index 5341d853ac..0000000000
--- a/Lang/Langur/Arithmetic-Complex
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-Complex/Langur
\ No newline at end of file
diff --git a/Lang/Langur/Babbage-problem b/Lang/Langur/Babbage-problem
deleted file mode 120000
index 662297217a..0000000000
--- a/Lang/Langur/Babbage-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Babbage-problem/Langur
\ No newline at end of file
diff --git a/Lang/Langur/Currency b/Lang/Langur/Currency
deleted file mode 120000
index 5a712c5b9d..0000000000
--- a/Lang/Langur/Currency
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Currency/Langur
\ No newline at end of file
diff --git a/Lang/Langur/Enforced-immutability b/Lang/Langur/Enforced-immutability
deleted file mode 120000
index a6a872e8c6..0000000000
--- a/Lang/Langur/Enforced-immutability
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Enforced-immutability/Langur
\ No newline at end of file
diff --git a/Lang/Langur/I-before-E-except-after-C b/Lang/Langur/I-before-E-except-after-C
deleted file mode 120000
index a4c67c55c7..0000000000
--- a/Lang/Langur/I-before-E-except-after-C
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/I-before-E-except-after-C/Langur
\ No newline at end of file
diff --git a/Lang/Langur/Monty-Hall-problem b/Lang/Langur/Monty-Hall-problem
deleted file mode 120000
index b5a048c861..0000000000
--- a/Lang/Langur/Monty-Hall-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Monty-Hall-problem/Langur
\ No newline at end of file
diff --git a/Lang/Langur/Morse-code b/Lang/Langur/Morse-code
deleted file mode 120000
index ee4498f8de..0000000000
--- a/Lang/Langur/Morse-code
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Morse-code/Langur
\ No newline at end of file
diff --git a/Lang/Langur/Old-Russian-measure-of-length b/Lang/Langur/Old-Russian-measure-of-length
deleted file mode 120000
index 45d7b04413..0000000000
--- a/Lang/Langur/Old-Russian-measure-of-length
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Old-Russian-measure-of-length/Langur
\ No newline at end of file
diff --git a/Lang/Langur/Program-name b/Lang/Langur/Program-name
new file mode 120000
index 0000000000..04198cf0de
--- /dev/null
+++ b/Lang/Langur/Program-name
@@ -0,0 +1 @@
+../../Task/Program-name/Langur
\ No newline at end of file
diff --git a/Lang/Langur/Safe-addition b/Lang/Langur/Safe-addition
deleted file mode 120000
index 9cd478ca7f..0000000000
--- a/Lang/Langur/Safe-addition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Safe-addition/Langur
\ No newline at end of file
diff --git a/Lang/Langur/String-interpolation-included- b/Lang/Langur/String-interpolation-included-
deleted file mode 120000
index e0b5bfaf9c..0000000000
--- a/Lang/Langur/String-interpolation-included-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-interpolation-included-/Langur
\ No newline at end of file
diff --git a/Lang/Lapyst/00-LANG.txt b/Lang/Lapyst/00-LANG.txt
deleted file mode 100644
index 4b906ad0c0..0000000000
--- a/Lang/Lapyst/00-LANG.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-{{stub}}
-{{language|Lapyst
-|site=https://lang.lapyst.dev
-|exec=both
-|parampass=both
-|strength=strong
-|express=both
-|checking=static
-|tags=lapyst
-|gc=yes (optional)}}
-
-Lapyst is an general-purpose language designed by [[User:Mai Lapyst]]. It features multiple backend strategies (machinecode, bytecode and interpretation), while combining many usefull features of other languages for the user to choose from. The philosophy in the language is generally to empower the user and give it as much choice as possible.
-
-The current default implementation is [[Lapystc]].
\ No newline at end of file
diff --git a/Lang/Lapyst/00-META.yaml b/Lang/Lapyst/00-META.yaml
deleted file mode 100644
index 3187527652..0000000000
--- a/Lang/Lapyst/00-META.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-from: http://rosettacode.org/wiki/Category:Lapyst
diff --git a/Lang/Lapyst/Conditional-structures b/Lang/Lapyst/Conditional-structures
deleted file mode 120000
index d244d152bd..0000000000
--- a/Lang/Lapyst/Conditional-structures
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Conditional-structures/Lapyst
\ No newline at end of file
diff --git a/Lang/Lean/00-LANG.txt b/Lang/Lean/00-LANG.txt
index ae97385d36..174b82817c 100644
--- a/Lang/Lean/00-LANG.txt
+++ b/Lang/Lean/00-LANG.txt
@@ -1,22 +1,17 @@
-{{language|Lean
+{{language
|exec=machine
|strength=strong
|safety=safe
|checking=both
|gc=yes
-|LCT=yes
-|site=https://lean-lang.org/}}
+|LCT=yes}}
+{{implementation|Lean}}
{{language programming paradigm|functional}}
{{language programming paradigm|dependent-types}}
-'''Lean''' is a dependently typed programming language and proof assistant, similar to [[Rocq]] and [[Agda]]. It aims to bridge the gap between interactive and automated theorem proving by situating automated tools and methods in a framework that supports user interaction and the construction of fully specified axiomatic proofs.
-As a proof assistant / theorem prover, Lean primarily benefits from Mathlib, a mechanized implementation of swaths of mathematics at the undergraduate and graduate level.
+'''Lean''' is an open source theorem prover and programming language being developed at Microsoft Research.
-As a general-purpose programming language, Lean benefits from its use as a theorem prover, as several features developed for the purpose of theorem proving, such as its dependent types system and its syntax-rewriting macros, also find much utility outside their original theorem proving contexts.
+Lean aims to bridge the gap between interactive and automated theorem proving, by situating automated tools and methods in a framework that supports user interaction and the construction of fully specified axiomatic proofs.
-Lean 4 is the current major version of the language, being a bootstrapped rewrite of the older (and different) Lean 3 system.
-
-=== Citations ===
-
-Frequently asked questions: https://lean-lang.org/faq/
\ No newline at end of file
+https://leanprover.github.io/about/
\ No newline at end of file
diff --git a/Lang/Liberty-BASIC/Calculating-the-value-of-e b/Lang/Liberty-BASIC/Calculating-the-value-of-e
deleted file mode 120000
index 95f95733b8..0000000000
--- a/Lang/Liberty-BASIC/Calculating-the-value-of-e
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Calculating-the-value-of-e/Liberty-BASIC
\ No newline at end of file
diff --git a/Lang/Liberty-BASIC/Egyptian-division b/Lang/Liberty-BASIC/Egyptian-division
deleted file mode 120000
index 91346c7989..0000000000
--- a/Lang/Liberty-BASIC/Egyptian-division
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Egyptian-division/Liberty-BASIC
\ No newline at end of file
diff --git a/Lang/Liberty-BASIC/Hunt-the-Wumpus b/Lang/Liberty-BASIC/Hunt-the-Wumpus
deleted file mode 120000
index 4e2d0e150d..0000000000
--- a/Lang/Liberty-BASIC/Hunt-the-Wumpus
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hunt-the-Wumpus/Liberty-BASIC
\ No newline at end of file
diff --git a/Lang/Liberty-BASIC/Jacobsthal-numbers b/Lang/Liberty-BASIC/Jacobsthal-numbers
deleted file mode 120000
index c1008ff58b..0000000000
--- a/Lang/Liberty-BASIC/Jacobsthal-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jacobsthal-numbers/Liberty-BASIC
\ No newline at end of file
diff --git a/Lang/Liberty-BASIC/Jaro-similarity b/Lang/Liberty-BASIC/Jaro-similarity
deleted file mode 120000
index 0f3ee067c6..0000000000
--- a/Lang/Liberty-BASIC/Jaro-similarity
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jaro-similarity/Liberty-BASIC
\ No newline at end of file
diff --git a/Lang/Liberty-BASIC/Miller-Rabin-primality-test b/Lang/Liberty-BASIC/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..01eccc1a73
--- /dev/null
+++ b/Lang/Liberty-BASIC/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/Liberty-BASIC
\ No newline at end of file
diff --git a/Lang/Liberty-BASIC/Minesweeper-game b/Lang/Liberty-BASIC/Minesweeper-game
deleted file mode 120000
index 19abfc9a07..0000000000
--- a/Lang/Liberty-BASIC/Minesweeper-game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Minesweeper-game/Liberty-BASIC
\ No newline at end of file
diff --git a/Lang/Liberty-BASIC/Numbers-which-are-not-the-sum-of-distinct-squares b/Lang/Liberty-BASIC/Numbers-which-are-not-the-sum-of-distinct-squares
deleted file mode 120000
index 18d07e8ad3..0000000000
--- a/Lang/Liberty-BASIC/Numbers-which-are-not-the-sum-of-distinct-squares
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Numbers-which-are-not-the-sum-of-distinct-squares/Liberty-BASIC
\ No newline at end of file
diff --git a/Lang/Liberty-BASIC/Numbers-with-equal-rises-and-falls b/Lang/Liberty-BASIC/Numbers-with-equal-rises-and-falls
deleted file mode 120000
index 019f830246..0000000000
--- a/Lang/Liberty-BASIC/Numbers-with-equal-rises-and-falls
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Numbers-with-equal-rises-and-falls/Liberty-BASIC
\ No newline at end of file
diff --git a/Lang/Liberty-BASIC/Poker-hand-analyser b/Lang/Liberty-BASIC/Poker-hand-analyser
deleted file mode 120000
index 3ed8c3b507..0000000000
--- a/Lang/Liberty-BASIC/Poker-hand-analyser
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Poker-hand-analyser/Liberty-BASIC
\ No newline at end of file
diff --git a/Lang/Liberty-BASIC/Primality-by-Wilsons-theorem b/Lang/Liberty-BASIC/Primality-by-Wilsons-theorem
deleted file mode 120000
index d68ab9bb3f..0000000000
--- a/Lang/Liberty-BASIC/Primality-by-Wilsons-theorem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Primality-by-Wilsons-theorem/Liberty-BASIC
\ No newline at end of file
diff --git a/Lang/Liberty-BASIC/Quaternion-type b/Lang/Liberty-BASIC/Quaternion-type
new file mode 120000
index 0000000000..33da9602b0
--- /dev/null
+++ b/Lang/Liberty-BASIC/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/Liberty-BASIC
\ No newline at end of file
diff --git a/Lang/Liberty-BASIC/Snake b/Lang/Liberty-BASIC/Snake
deleted file mode 120000
index 20a60d8427..0000000000
--- a/Lang/Liberty-BASIC/Snake
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Snake/Liberty-BASIC
\ No newline at end of file
diff --git a/Lang/Lilypond/00-LANG.txt b/Lang/Lilypond/00-LANG.txt
index 9afe2b1bd9..5c24c70c93 100644
--- a/Lang/Lilypond/00-LANG.txt
+++ b/Lang/Lilypond/00-LANG.txt
@@ -1 +1,9 @@
-#REDIRECT [[:Category:LilyPond]]
\ No newline at end of file
+{{stub}}
+{{language|lilypond
+|site=http://www.lilypond.org/
+|hopl=no
+}}
+
+The lilypond language is used by the lilypond score production software for describing the layout of musical score sheets.
+
+[[Category:Musical Notation]]
\ No newline at end of file
diff --git a/Lang/Locomotive-Basic/00-LANG.txt b/Lang/Locomotive-Basic/00-LANG.txt
index 5045a1b047..04db5b5ea8 100644
--- a/Lang/Locomotive-Basic/00-LANG.txt
+++ b/Lang/Locomotive-Basic/00-LANG.txt
@@ -7,9 +7,9 @@
'''Locomotive BASIC''' is a variant of BASIC that is built into the ROM of the [[wp:Amstrad CPC|Amstrad CPC]] series of home computers introduced in 1984. In the 1980s, the CPC was a popular, slightly more expensive alternative to the Commodore C64/C128. It was not just suited for games but also office work because of its high resolution display and [[wp:CP/M|CP/M]] support.
-The easiest way to use Locomotive BASIC today is [https://benchmarko.github.io/CPCBasic/cpcbasic.html CPCBasic], a very fast implementation in JavaScript which also allows easy pasting of code from Rosetta Code. Note that programs will run much faster in CPCBasic than on a real CPC. To slow down a program, add an extra delay loop to the main loop, e.g. for delay=1 to 5:frame:nextwhich will pause for five frames or 0.1 seconds.
+The easiest way to use Locomotive BASIC today is [https://benchmarko.github.io/CPCBasic/cpcbasic.html CPCBasic], a very fast implementation in JavaScript which also allows easy pasting of code from Rosetta Code. Note that programs will run much faster in CPCBasic than on a real CPC. To slow down a program, add an extra delay loop to the main loop, e.g.:for delay=1 to 5:frame:next which will pause for five frames or 0.1 seconds.
-[https://retroshowcase.gr/cpcbox-master/ CPCBox] is another option for the web browser, a whole-machine JavaScript CPC emulator mainly for games which has good compatibility but which lacks copy and paste support.
+[https://www.retrovm.com/ CPCBox] is another option for the web browser, a whole-machine JavaScript CPC emulator mainly for games which has good compatibility but which lacks copy and paste support.
Locomotive BASIC can also be used via native CPC emulators such as [http://www.winape.net/ WinAPE] (Windows) or [http://sourceforge.net/projects/javacpc/ JavaCPC] (Windows/macOS/Linux). All these CPC emulators are also perfectly legal because Amstrad has given their permission for distributing CPC ROM images with emulators.
@@ -19,14 +19,14 @@ Either use the CPCBasic browser-based Locomotive Basic emulator (https://benchma
In CPCBasic, enter your program, e.g.
-10 print "Hello World!"
+10 print "Hello World!"
into the "CPC Basic" text box at the top and then press the Run button below it. Output goes to the blue CPC screen below. You can also interact with the CPC screen directly if you first click on it with the mouse. The Reset button stops a running program and returns you to the Ready prompt.
In a native emulator, just type
-10 print "Hello World!"
-run
+10 print "Hello World!"
+run
to run your first Locomotive BASIC program.
@@ -56,7 +56,7 @@ As on many other 8-bit machines of the era, BASIC programs are often extended wi
Memory on the CPC 464 and 664 is subdivided into four 16 kB blocks (0 to 3), with block 3 at &c000 normally reserved for the screen. The CPC 6128 features a second 64 kB bank (blocks 4 to 7) which can be accessed from BASIC with [[wp:Bank switching|bank switching]] in block 1 (&4000 and &7fff), e.g.
-out &7fff,&x11000100
+out &7fff,&x11000100
would make block 4 accessible in the address space of block 1.http://k1.dyndns.org/Vintage/Schneider%20CPC/Das%20Schneider%20CPC%20Systembuch/z87.htm This way, the entire 128 kB of memory can be used by BASIC. Alternatively, RSX commands for bank switching and copying between banks are included on the system discs and discussed in chapter 8 of the CPC user manual.http://www.cpcwiki.eu/index.php/User_Manual Even on the 64 kB models, it is possible to do [[wp:Multiple buffering|double buffering]] in BASIC by reserving another RAM block for the screen, drawing into the hidden screen, and then setting the CRTC screen address to the currently hidden screen with the BASIC [[wp:I/o port|port I/O]] command OUT.
diff --git a/Lang/Locomotive-Basic/Abelian-sandpile-model b/Lang/Locomotive-Basic/Abelian-sandpile-model
deleted file mode 120000
index e00a530896..0000000000
--- a/Lang/Locomotive-Basic/Abelian-sandpile-model
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abelian-sandpile-model/Locomotive-Basic
\ No newline at end of file
diff --git a/Lang/Locomotive-Basic/Animate-a-pendulum b/Lang/Locomotive-Basic/Animate-a-pendulum
deleted file mode 120000
index 32a0ee5149..0000000000
--- a/Lang/Locomotive-Basic/Animate-a-pendulum
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Animate-a-pendulum/Locomotive-Basic
\ No newline at end of file
diff --git a/Lang/Locomotive-Basic/Dragon-curve b/Lang/Locomotive-Basic/Dragon-curve
deleted file mode 120000
index 2088f12a68..0000000000
--- a/Lang/Locomotive-Basic/Dragon-curve
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dragon-curve/Locomotive-Basic
\ No newline at end of file
diff --git a/Lang/Locomotive-Basic/Draw-a-cuboid b/Lang/Locomotive-Basic/Draw-a-cuboid
deleted file mode 120000
index cbfb396b7f..0000000000
--- a/Lang/Locomotive-Basic/Draw-a-cuboid
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Draw-a-cuboid/Locomotive-Basic
\ No newline at end of file
diff --git a/Lang/Locomotive-Basic/Forest-fire b/Lang/Locomotive-Basic/Forest-fire
deleted file mode 120000
index 44a3c54d6a..0000000000
--- a/Lang/Locomotive-Basic/Forest-fire
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Forest-fire/Locomotive-Basic
\ No newline at end of file
diff --git a/Lang/Locomotive-Basic/Hilbert-curve b/Lang/Locomotive-Basic/Hilbert-curve
deleted file mode 120000
index 8355f1c6bf..0000000000
--- a/Lang/Locomotive-Basic/Hilbert-curve
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hilbert-curve/Locomotive-Basic
\ No newline at end of file
diff --git a/Lang/Locomotive-Basic/Koch-curve b/Lang/Locomotive-Basic/Koch-curve
deleted file mode 120000
index 87294988f6..0000000000
--- a/Lang/Locomotive-Basic/Koch-curve
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Koch-curve/Locomotive-Basic
\ No newline at end of file
diff --git a/Lang/Loglan82/AKS-test-for-primes b/Lang/Loglan82/AKS-test-for-primes
deleted file mode 120000
index 335d9d190f..0000000000
--- a/Lang/Loglan82/AKS-test-for-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/AKS-test-for-primes/Loglan82
\ No newline at end of file
diff --git a/Lang/Loglan82/Abundant-deficient-and-perfect-number-classifications b/Lang/Loglan82/Abundant-deficient-and-perfect-number-classifications
deleted file mode 120000
index c3fb63599e..0000000000
--- a/Lang/Loglan82/Abundant-deficient-and-perfect-number-classifications
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abundant-deficient-and-perfect-number-classifications/Loglan82
\ No newline at end of file
diff --git a/Lang/Loglan82/Abundant-odd-numbers b/Lang/Loglan82/Abundant-odd-numbers
deleted file mode 120000
index 282ee6e007..0000000000
--- a/Lang/Loglan82/Abundant-odd-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abundant-odd-numbers/Loglan82
\ No newline at end of file
diff --git a/Lang/Loglan82/Bell-numbers b/Lang/Loglan82/Bell-numbers
deleted file mode 120000
index 7761831a2e..0000000000
--- a/Lang/Loglan82/Bell-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bell-numbers/Loglan82
\ No newline at end of file
diff --git a/Lang/Loglan82/CUSIP b/Lang/Loglan82/CUSIP
deleted file mode 120000
index 8aaccb215d..0000000000
--- a/Lang/Loglan82/CUSIP
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/CUSIP/Loglan82
\ No newline at end of file
diff --git a/Lang/Loglan82/Catalan-numbers b/Lang/Loglan82/Catalan-numbers
deleted file mode 120000
index 309128cccf..0000000000
--- a/Lang/Loglan82/Catalan-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Catalan-numbers/Loglan82
\ No newline at end of file
diff --git a/Lang/Loglan82/Cumulative-standard-deviation b/Lang/Loglan82/Cumulative-standard-deviation
deleted file mode 120000
index e030ba56eb..0000000000
--- a/Lang/Loglan82/Cumulative-standard-deviation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cumulative-standard-deviation/Loglan82
\ No newline at end of file
diff --git a/Lang/Loglan82/Day-of-the-week b/Lang/Loglan82/Day-of-the-week
deleted file mode 120000
index 65e7a590f5..0000000000
--- a/Lang/Loglan82/Day-of-the-week
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Day-of-the-week/Loglan82
\ No newline at end of file
diff --git a/Lang/Loglan82/Diversity-prediction-theorem b/Lang/Loglan82/Diversity-prediction-theorem
deleted file mode 120000
index 99f7aed5fc..0000000000
--- a/Lang/Loglan82/Diversity-prediction-theorem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Diversity-prediction-theorem/Loglan82
\ No newline at end of file
diff --git a/Lang/Loglan82/Dot-product b/Lang/Loglan82/Dot-product
deleted file mode 120000
index e65fed671f..0000000000
--- a/Lang/Loglan82/Dot-product
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dot-product/Loglan82
\ No newline at end of file
diff --git a/Lang/Loglan82/Dutch-national-flag-problem b/Lang/Loglan82/Dutch-national-flag-problem
deleted file mode 120000
index 80274c2f7b..0000000000
--- a/Lang/Loglan82/Dutch-national-flag-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dutch-national-flag-problem/Loglan82
\ No newline at end of file
diff --git a/Lang/Loglan82/Equilibrium-index b/Lang/Loglan82/Equilibrium-index
deleted file mode 120000
index 99b2d35b94..0000000000
--- a/Lang/Loglan82/Equilibrium-index
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Equilibrium-index/Loglan82
\ No newline at end of file
diff --git a/Lang/Loglan82/Ethiopian-multiplication b/Lang/Loglan82/Ethiopian-multiplication
deleted file mode 120000
index 13a8b5d45c..0000000000
--- a/Lang/Loglan82/Ethiopian-multiplication
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ethiopian-multiplication/Loglan82
\ No newline at end of file
diff --git a/Lang/Loglan82/Factors-of-an-integer b/Lang/Loglan82/Factors-of-an-integer
deleted file mode 120000
index 106a23d5a7..0000000000
--- a/Lang/Loglan82/Factors-of-an-integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factors-of-an-integer/Loglan82
\ No newline at end of file
diff --git a/Lang/Loglan82/Gamma-function b/Lang/Loglan82/Gamma-function
deleted file mode 120000
index e6dce092fb..0000000000
--- a/Lang/Loglan82/Gamma-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Gamma-function/Loglan82
\ No newline at end of file
diff --git a/Lang/Loglan82/Hello-world-Text b/Lang/Loglan82/Hello-world-Text
deleted file mode 120000
index 02b527238f..0000000000
--- a/Lang/Loglan82/Hello-world-Text
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Text/Loglan82
\ No newline at end of file
diff --git a/Lang/Loglan82/Horners-rule-for-polynomial-evaluation b/Lang/Loglan82/Horners-rule-for-polynomial-evaluation
deleted file mode 120000
index 5eca5139bd..0000000000
--- a/Lang/Loglan82/Horners-rule-for-polynomial-evaluation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Horners-rule-for-polynomial-evaluation/Loglan82
\ No newline at end of file
diff --git a/Lang/Loglan82/Josephus-problem b/Lang/Loglan82/Josephus-problem
deleted file mode 120000
index 74e740313f..0000000000
--- a/Lang/Loglan82/Josephus-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Josephus-problem/Loglan82
\ No newline at end of file
diff --git a/Lang/Loglan82/Levenshtein-distance b/Lang/Loglan82/Levenshtein-distance
deleted file mode 120000
index 64975523f2..0000000000
--- a/Lang/Loglan82/Levenshtein-distance
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Levenshtein-distance/Loglan82
\ No newline at end of file
diff --git a/Lang/Loglan82/Long-year b/Lang/Loglan82/Long-year
deleted file mode 120000
index b249596823..0000000000
--- a/Lang/Loglan82/Long-year
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Long-year/Loglan82
\ No newline at end of file
diff --git a/Lang/Loglan82/Loops-Do-while b/Lang/Loglan82/Loops-Do-while
deleted file mode 120000
index e038a12c06..0000000000
--- a/Lang/Loglan82/Loops-Do-while
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Do-while/Loglan82
\ No newline at end of file
diff --git a/Lang/Loglan82/Loops-For-with-a-specified-step b/Lang/Loglan82/Loops-For-with-a-specified-step
deleted file mode 120000
index bace3aec2b..0000000000
--- a/Lang/Loglan82/Loops-For-with-a-specified-step
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-For-with-a-specified-step/Loglan82
\ No newline at end of file
diff --git a/Lang/Loglan82/M-bius-function b/Lang/Loglan82/M-bius-function
deleted file mode 120000
index 82e1041f7d..0000000000
--- a/Lang/Loglan82/M-bius-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/M-bius-function/Loglan82
\ No newline at end of file
diff --git a/Lang/Loglan82/Monty-Hall-problem b/Lang/Loglan82/Monty-Hall-problem
deleted file mode 120000
index 3c5ec1bb89..0000000000
--- a/Lang/Loglan82/Monty-Hall-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Monty-Hall-problem/Loglan82
\ No newline at end of file
diff --git a/Lang/Loglan82/Shoelace-formula-for-polygonal-area b/Lang/Loglan82/Shoelace-formula-for-polygonal-area
deleted file mode 120000
index 7a3facc57c..0000000000
--- a/Lang/Loglan82/Shoelace-formula-for-polygonal-area
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Shoelace-formula-for-polygonal-area/Loglan82
\ No newline at end of file
diff --git a/Lang/Loglan82/Statistics-Basic b/Lang/Loglan82/Statistics-Basic
deleted file mode 120000
index 06f2b88d7e..0000000000
--- a/Lang/Loglan82/Statistics-Basic
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Statistics-Basic/Loglan82
\ No newline at end of file
diff --git a/Lang/Loglan82/Statistics-Normal-distribution b/Lang/Loglan82/Statistics-Normal-distribution
deleted file mode 120000
index c0cf6b079d..0000000000
--- a/Lang/Loglan82/Statistics-Normal-distribution
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Statistics-Normal-distribution/Loglan82
\ No newline at end of file
diff --git a/Lang/Loglan82/Tau-number b/Lang/Loglan82/Tau-number
deleted file mode 120000
index 0f86291ac1..0000000000
--- a/Lang/Loglan82/Tau-number
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tau-number/Loglan82
\ No newline at end of file
diff --git a/Lang/Logo/Associative-array-Creation b/Lang/Logo/Associative-array-Creation
new file mode 120000
index 0000000000..3776b1b4e9
--- /dev/null
+++ b/Lang/Logo/Associative-array-Creation
@@ -0,0 +1 @@
+../../Task/Associative-array-Creation/Logo
\ No newline at end of file
diff --git a/Lang/Logo/Merge-and-aggregate-datasets b/Lang/Logo/Merge-and-aggregate-datasets
deleted file mode 120000
index f9a42bcf33..0000000000
--- a/Lang/Logo/Merge-and-aggregate-datasets
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Merge-and-aggregate-datasets/Logo
\ No newline at end of file
diff --git a/Lang/Logo/Sort-three-variables b/Lang/Logo/Sort-three-variables
deleted file mode 120000
index 98d62a0bb1..0000000000
--- a/Lang/Logo/Sort-three-variables
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-three-variables/Logo
\ No newline at end of file
diff --git a/Lang/Logo/Sparkline-in-unicode b/Lang/Logo/Sparkline-in-unicode
deleted file mode 120000
index d2b466f59a..0000000000
--- a/Lang/Logo/Sparkline-in-unicode
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sparkline-in-unicode/Logo
\ No newline at end of file
diff --git a/Lang/Lua/100-doors b/Lang/Lua/100-doors
new file mode 120000
index 0000000000..ce373fa8af
--- /dev/null
+++ b/Lang/Lua/100-doors
@@ -0,0 +1 @@
+../../Task/100-doors/Lua
\ No newline at end of file
diff --git a/Lang/Lua/Bioinformatics-base-count b/Lang/Lua/Bioinformatics-base-count
new file mode 120000
index 0000000000..cb9548dcc8
--- /dev/null
+++ b/Lang/Lua/Bioinformatics-base-count
@@ -0,0 +1 @@
+../../Task/Bioinformatics-base-count/Lua
\ No newline at end of file
diff --git a/Lang/Lua/Calkin-Wilf-sequence b/Lang/Lua/Calkin-Wilf-sequence
deleted file mode 120000
index 1f9b22fde7..0000000000
--- a/Lang/Lua/Calkin-Wilf-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Calkin-Wilf-sequence/Lua
\ No newline at end of file
diff --git a/Lang/Lua/Check-input-device-is-a-terminal b/Lang/Lua/Check-input-device-is-a-terminal
deleted file mode 120000
index fdc01bb562..0000000000
--- a/Lang/Lua/Check-input-device-is-a-terminal
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Check-input-device-is-a-terminal/Lua
\ No newline at end of file
diff --git a/Lang/Lua/Demings-funnel b/Lang/Lua/Demings-funnel
deleted file mode 120000
index bfeba4e463..0000000000
--- a/Lang/Lua/Demings-funnel
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Demings-funnel/Lua
\ No newline at end of file
diff --git a/Lang/Lua/Duffinian-numbers b/Lang/Lua/Duffinian-numbers
deleted file mode 120000
index 3d384f7bda..0000000000
--- a/Lang/Lua/Duffinian-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Duffinian-numbers/Lua
\ No newline at end of file
diff --git a/Lang/Lua/Empty-program b/Lang/Lua/Empty-program
new file mode 120000
index 0000000000..451d4b192d
--- /dev/null
+++ b/Lang/Lua/Empty-program
@@ -0,0 +1 @@
+../../Task/Empty-program/Lua
\ No newline at end of file
diff --git a/Lang/Lua/GUI-component-interaction b/Lang/Lua/GUI-component-interaction
deleted file mode 120000
index da7428ad7e..0000000000
--- a/Lang/Lua/GUI-component-interaction
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/GUI-component-interaction/Lua
\ No newline at end of file
diff --git a/Lang/Lua/Gauss-Jordan-matrix-inversion b/Lang/Lua/Gauss-Jordan-matrix-inversion
deleted file mode 120000
index 4e412c8561..0000000000
--- a/Lang/Lua/Gauss-Jordan-matrix-inversion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Gauss-Jordan-matrix-inversion/Lua
\ No newline at end of file
diff --git a/Lang/Lua/Generate-random-chess-position b/Lang/Lua/Generate-random-chess-position
deleted file mode 120000
index 7d17633430..0000000000
--- a/Lang/Lua/Generate-random-chess-position
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Generate-random-chess-position/Lua
\ No newline at end of file
diff --git a/Lang/Lua/Hello-world-Line-printer b/Lang/Lua/Hello-world-Line-printer
deleted file mode 120000
index 1ade14f20f..0000000000
--- a/Lang/Lua/Hello-world-Line-printer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Line-printer/Lua
\ No newline at end of file
diff --git a/Lang/Lua/Jacobsthal-numbers b/Lang/Lua/Jacobsthal-numbers
deleted file mode 120000
index ff787752c3..0000000000
--- a/Lang/Lua/Jacobsthal-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jacobsthal-numbers/Lua
\ No newline at end of file
diff --git a/Lang/Lua/Jordan-P-lya-numbers b/Lang/Lua/Jordan-P-lya-numbers
deleted file mode 120000
index 860eeeaaa4..0000000000
--- a/Lang/Lua/Jordan-P-lya-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jordan-P-lya-numbers/Lua
\ No newline at end of file
diff --git a/Lang/Lua/Juggler-sequence b/Lang/Lua/Juggler-sequence
deleted file mode 120000
index 94ab059422..0000000000
--- a/Lang/Lua/Juggler-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Juggler-sequence/Lua
\ No newline at end of file
diff --git a/Lang/Lua/Knapsack-problem-Bounded b/Lang/Lua/Knapsack-problem-Bounded
deleted file mode 120000
index edddb60b00..0000000000
--- a/Lang/Lua/Knapsack-problem-Bounded
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Knapsack-problem-Bounded/Lua
\ No newline at end of file
diff --git a/Lang/Lua/Legendre-prime-counting-function b/Lang/Lua/Legendre-prime-counting-function
deleted file mode 120000
index cf72af7d74..0000000000
--- a/Lang/Lua/Legendre-prime-counting-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Legendre-prime-counting-function/Lua
\ No newline at end of file
diff --git a/Lang/Lua/Miller-Rabin-primality-test b/Lang/Lua/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..45a2ff22f4
--- /dev/null
+++ b/Lang/Lua/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/Lua
\ No newline at end of file
diff --git a/Lang/Lua/Numbers-with-equal-rises-and-falls b/Lang/Lua/Numbers-with-equal-rises-and-falls
deleted file mode 120000
index 5900c5ba75..0000000000
--- a/Lang/Lua/Numbers-with-equal-rises-and-falls
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Numbers-with-equal-rises-and-falls/Lua
\ No newline at end of file
diff --git a/Lang/Lua/Parse-an-IP-Address b/Lang/Lua/Parse-an-IP-Address
deleted file mode 120000
index aa0f24a93c..0000000000
--- a/Lang/Lua/Parse-an-IP-Address
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Parse-an-IP-Address/Lua
\ No newline at end of file
diff --git a/Lang/Lua/Parsing-RPN-calculator-algorithm b/Lang/Lua/Parsing-RPN-calculator-algorithm
new file mode 120000
index 0000000000..397c1ccfd1
--- /dev/null
+++ b/Lang/Lua/Parsing-RPN-calculator-algorithm
@@ -0,0 +1 @@
+../../Task/Parsing-RPN-calculator-algorithm/Lua
\ No newline at end of file
diff --git a/Lang/Lua/Quaternion-type b/Lang/Lua/Quaternion-type
new file mode 120000
index 0000000000..09499b7f9c
--- /dev/null
+++ b/Lang/Lua/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/Lua
\ No newline at end of file
diff --git a/Lang/Lua/Ramer-Douglas-Peucker-line-simplification b/Lang/Lua/Ramer-Douglas-Peucker-line-simplification
deleted file mode 120000
index 516d951928..0000000000
--- a/Lang/Lua/Ramer-Douglas-Peucker-line-simplification
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ramer-Douglas-Peucker-line-simplification/Lua
\ No newline at end of file
diff --git a/Lang/Lua/Sleeping-Beauty-problem b/Lang/Lua/Sleeping-Beauty-problem
deleted file mode 120000
index 75e2ee6eb2..0000000000
--- a/Lang/Lua/Sleeping-Beauty-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sleeping-Beauty-problem/Lua
\ No newline at end of file
diff --git a/Lang/Lua/Sorting-Algorithms-Circle-Sort b/Lang/Lua/Sorting-Algorithms-Circle-Sort
new file mode 120000
index 0000000000..e6dc299d24
--- /dev/null
+++ b/Lang/Lua/Sorting-Algorithms-Circle-Sort
@@ -0,0 +1 @@
+../../Task/Sorting-Algorithms-Circle-Sort/Lua
\ No newline at end of file
diff --git a/Lang/Lua/Strassens-algorithm b/Lang/Lua/Strassens-algorithm
deleted file mode 120000
index 9da800cb02..0000000000
--- a/Lang/Lua/Strassens-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strassens-algorithm/Lua
\ No newline at end of file
diff --git a/Lang/Lua/Sum-of-elements-below-main-diagonal-of-matrix b/Lang/Lua/Sum-of-elements-below-main-diagonal-of-matrix
deleted file mode 120000
index 63a3cd2cf9..0000000000
--- a/Lang/Lua/Sum-of-elements-below-main-diagonal-of-matrix
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sum-of-elements-below-main-diagonal-of-matrix/Lua
\ No newline at end of file
diff --git a/Lang/Lua/Summarize-primes b/Lang/Lua/Summarize-primes
deleted file mode 120000
index 601bc61d3c..0000000000
--- a/Lang/Lua/Summarize-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Summarize-primes/Lua
\ No newline at end of file
diff --git a/Lang/Lua/Super-d-numbers b/Lang/Lua/Super-d-numbers
deleted file mode 120000
index 64e775e306..0000000000
--- a/Lang/Lua/Super-d-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Super-d-numbers/Lua
\ No newline at end of file
diff --git a/Lang/Lua/Terminal-control-Hiding-the-cursor b/Lang/Lua/Terminal-control-Hiding-the-cursor
deleted file mode 120000
index 68700a27b1..0000000000
--- a/Lang/Lua/Terminal-control-Hiding-the-cursor
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Terminal-control-Hiding-the-cursor/Lua
\ No newline at end of file
diff --git a/Lang/Lua/Terminal-control-Unicode-output b/Lang/Lua/Terminal-control-Unicode-output
deleted file mode 120000
index b9be1e6352..0000000000
--- a/Lang/Lua/Terminal-control-Unicode-output
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Terminal-control-Unicode-output/Lua
\ No newline at end of file
diff --git a/Lang/Lua/Total-circles-area b/Lang/Lua/Total-circles-area
deleted file mode 120000
index 368862d6f6..0000000000
--- a/Lang/Lua/Total-circles-area
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Total-circles-area/Lua
\ No newline at end of file
diff --git a/Lang/Lua/Update-a-configuration-file b/Lang/Lua/Update-a-configuration-file
deleted file mode 120000
index 75ad1d2a09..0000000000
--- a/Lang/Lua/Update-a-configuration-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Update-a-configuration-file/Lua
\ No newline at end of file
diff --git a/Lang/Lua/Use-another-language-to-call-a-function b/Lang/Lua/Use-another-language-to-call-a-function
deleted file mode 120000
index 05e8f054e4..0000000000
--- a/Lang/Lua/Use-another-language-to-call-a-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Use-another-language-to-call-a-function/Lua
\ No newline at end of file
diff --git a/Lang/Lua/Wagstaff-primes b/Lang/Lua/Wagstaff-primes
deleted file mode 120000
index c8cec659a4..0000000000
--- a/Lang/Lua/Wagstaff-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Wagstaff-primes/Lua
\ No newline at end of file
diff --git a/Lang/Lua/Wieferich-primes b/Lang/Lua/Wieferich-primes
deleted file mode 120000
index ac68d34377..0000000000
--- a/Lang/Lua/Wieferich-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Wieferich-primes/Lua
\ No newline at end of file
diff --git a/Lang/Lua/Wilson-primes-of-order-n b/Lang/Lua/Wilson-primes-of-order-n
deleted file mode 120000
index 338cbe60ca..0000000000
--- a/Lang/Lua/Wilson-primes-of-order-n
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Wilson-primes-of-order-n/Lua
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/00-LANG.txt b/Lang/M2000-Interpreter/00-LANG.txt
index ab29824f45..ed77df4b81 100644
--- a/Lang/M2000-Interpreter/00-LANG.txt
+++ b/Lang/M2000-Interpreter/00-LANG.txt
@@ -9,7 +9,7 @@
|gc=allowed
|hopl=no
}}
-M2000 is an interpreter running on its own Environment written in Visual Basic 6, as an open source project and can be found in GitHub[https://github.com/M2000Interpreter/Environment]. Current version is 14, revision 8. See [[M2000 Interpreter Implementation]]
+M2000 is an interpreter running on its own Environment written in Visual Basic 6, as an open source project and can be found in GitHub[https://github.com/M2000Interpreter/Version9]. Current version is 12, revision 13. See [[M2000 Interpreter Implementation]]
{{language programming paradigm|Imperative}}
{{language programming paradigm|Object-oriented}}
{{Language programming paradigm|Event-driven}}
@@ -21,68 +21,12 @@ M2000 has two set of vocabularies, one with English identifiers and one with Gre
M2000 start as an experimental interpreted language, using a Module in Module idea (like a Procedure in Procedure) where each inner Module is closed for modification, but open for expansion, by replacing code at run time. Source code executed as is, without second interpretation of a simple form, although block of code arranged for execution in a manner of consuming code (code which executed deleted, code in a loop kept as a copy for next iteration).
-We can use BASIC type statement's. Although there are some differences. Like the FOR NEXT:
-
-SET SWITCHES "+FOR"
-// WHY ? BECAUSE WHEN STEP IS POSITIVE (+1 HERE)
-// WE GET ITERATION IF START VALUE IS LESS OR EQUAL THE LAST VALUE
-FOR I=10 TO 0
- PRINT "NEVER PRINT - IS LIKE BASIC"
-NEXT
-SET SWITCHES "+DIM"
-// WHY ? BECAUSE DIM MAKE AN ARRAY FROM 0 TO TOP VALUE (10)
-DIM A(10)=1
-PRINT LEN(A())=11, A(0), A(10), "BASIC"
-
-SET SWITCHES "-FOR" ' THE DEFAULT
-// WHY ? BECAUSE EVERY TIME ITERATE FROM START VALUE TO END VALUE
-FOR I=10 TO 0
- PRINT "ALWAYS PRINT - IS NOT LIKE BASIC"
-NEXT
-
-SET SWITCHES "-DIM"
-// WHY ? BECAUSE DIM MAKE AN ARRAY N (10) ITEMS
-DIM A(10)=1
-PRINT LEN(A())=10, A(0), A(9), "M2000"
-DIM B(0 TO 10)=1 ' WE CAN DEFINE MIN AND MAX INDEX (CAN BE NEGATIVE)
-PRINT LEN(B())=11, B(0), B(10), "M2000"
-
-
Module's may be Global, or local to other modules. We can define global modules in a module, and all these definitions deleted at the end of module execution. Because we have to execute the definition of a module, we can select definition, or load definition before we call the module. Also modules can be part of object's of type Group. A module can't call itself unless we use Call module_name. The standard call is by using only the name of module. So from a module we can call local modules or global, but we can't call parent module (if isn't global). In a group we can call anything like a module plus the modules of the groups.
-We can use labels and line numbers (each number is just a label). After a line number we can place statement. Static subs/functions have same scope as the module scope. Here SomethingElse() is like Module as a program, with own scope.
-
-
-MODULE alfa {
- FUNCTION SomethingElse(A, ZZ) {
- =A/ZZ ' WE CAN'T READ Z HERE
- }
- 000 READ X
- 001 Z=10
- 005 GOSUB alfa
- 010 COMPUTE(&X)
- 020 PRINT @MUL10(X), SomethingElse(@MUL10(X), Z)
- 030 IF X<20 THEN 10
- 040 GOSUB alfa
- 050 END
- 060 SUB COMPUTE(&A)
- 070 A++
- 080 Z++ // SIDE EFFECT
- 090 END SUB
- 100 FUNCTION MUL10(A)
- 110 =A*Z
- 120 END FUNCTION
-alfa:
- 130 PRINT "-------------------------"
- 140 RETURN
-}
-alfa 14
-
-
We can change a inner module at the calling of a module, see the example: We call inner Beta in two stages. At the second stage we change inner Theta with Theta2. This is the decoration of Beta with Theta as Theta2. This is a temporary decoration because Beta after execution erase any new identifier including Theta. So each time we call Beta, statement Module Theta make this module unless a decoration stop it.
====English Vocabulary====
-Module Beta {
+Module Beta {
Module Theta (x){
Print "This is Theta, we get x=";x
}
@@ -94,141 +38,8 @@ Module Theta2 (x) {
}
Beta ; Theta as Theta2
-
-This is a rare case. Most cases use alternative definitions:
-
-Module Beta {
- Module Theta (x){
- Print "This is Theta, we get x=";x
- }
- For i=1 to 3 : Theta i : Next i
-}
-Beta
-Module Beta {
- Module Theta (x) {
- Print "This is Theta2, we get x=";x
- }
- For i=1 to 3 : Theta i : Next i
-}
-Beta
-
-
-Another variation is the use of function pass by reference:
-
-Module Beta {
- Read &theta()
- For i=1 to 3 :Call Theta(i) : Next i
-}
-Function Theta(x){
- Print "This is Theta, we get x=";x
-}
-Function Theta2(x) {
- Print "This is Theta2, we get x=";x
-}
-Beta &Theta()
-Beta &Theta2()
-
-
-Or a more compact way to use a Group:
-
-Module Beta {
- Read That
- For i=1 to 3 :Call That.Theta(i) : Next i
-}
-Group A {
- Function Theta(x){
- Print "This is Theta, we get x=";x
- }
-}
-Group B {
- Function Theta(x) {
- Print "This is Theta2, we get x=";x
- }
-}
-Beta A
-Beta B
-
-
-Or a more compact way to use a Class:
-
-Module Beta {
- Read That
- For i=1 to 3 :Call That.Theta(i) : Next i
-}
-Class Something {
-Private:
- string message=letter$ ' letter$ read from stack of values a string
-Public:
- Function Theta(x){
- Print .message;x
- }
-}
-A=Something("This is Theta, we get x=")
-B=Something("This is Theta2, we get x=")
-Beta A
-Beta B
-
-
-
-Or a variant of class which made an object which return value
-
-Module Beta {
- Read &That
- For i=1 to 3 :Print That(i) : Next i
-}
-Class Something {
-Private:
- string message=letter$ ' letter$ read from stack of values a string
-Public:
- Set {
- Read This
- }
- Value (x){ ' (x) change to: Read x
- = .message + x ' .message is string (x can be string or number)
- }
-}
-A=Something("This is Theta, we get x=")
-Beta &A
-A=Something("This is Theta2, we get x=")
-Beta &A
-
-
-Or by using lambda functions (functions which we hold in variables, with closures)
-
-
-Module Beta {
- Read &That
- For i=1 to 3 :Print That(i) : Next i
-}
-m="This is Theta, we get x="
-A=lambda m (x)->m + x ' one line lambda function
-Beta &A
-' we can use multiline lambda functions
-A=lambda m="This is Theta2, we get x=" (x)->{
- =m + x
-}
-Beta &A
-
-
-The same but now we bass by value (we remove & from the caller and the callee too:
-
-
-Module Beta {
- Read That
- For i=1 to 3 :Print That(i) : Next i
-}
-m="This is Theta, we get x="
-A=lambda m (x)->m + x ' one line lambda function
-Beta A
-' we can use multiline lambda functions
-A=lambda m="This is Theta2, we get x=" (x)->{
- =m + x
-}
-Beta A
-
-
====Greek Vocabulary====
-Τμήμα Βήτα {
+Τμήμα Βήτα {
Τμήμα Θήτα (χ){
Τύπωσε "Αυτό είναι το Θήτα, θα πάρουμε το χ=";χ
}
@@ -241,9 +52,9 @@ Beta A
Βήτα ; Θήτα ως Θήτα2
-As we can see from code, some statements are like BASIC, except the use of curly brackets {}. Check the code below. We have a Module (as a Procedure), where we define some functions and some variables, as entities. These entities defined in every call to CheckIt, and erased when execution return from CheckIt. By default every parameter in M2000 pass by value. We define a function, Alfa() where we set type for parameter.
+As we can see from code, some statements are like BASIC, except the use of curly brackets {}. Check the code below. We have a Module (as a Procedure), where we define some functions and some variables, as entities. These entities defined in every call to CheckIt, and erased when execution return from CheckIt. By default every parameter in M2000 pass by value. We define two functions, Alfa() where we set type for parameter x and ExpType$() where we not set type for x, and we wish to return the name of type when we make a call.
-Module CheckIt {
+Module CheckIt {
\\ We can't call something out of this module
Function Alfa(X as double) {
=X**2
@@ -259,13 +70,14 @@ As we can see from code, some statements are like BASIC, except the use of curly
Print Type$(Z)
Currency Z1=212.12, Z2=323233.12, Z3=223212323323.12
Print Z1, Z2, Z3
- Print Type$(Z1+Z2) ' Currency
- Print Type$(Z1*Z2) ' Currency
- Print Type$(Z2*Z3) ' Double (Currency can't hold this number)
+ Def ExpType$(x)=Type$(x)
+ Print ExpType$(Z1+Z2) ' Currency
+ Print ExpType$(Z1*Z2) ' Currency
+ Print ExpType$(Z2*Z3) ' Double (Currency can't hold this number)
\\ Integer, Long, Single, Currency, Decimal
- Print Type$(10%), Type$(10&), Type$(10~), Type$(10#), Type$(10@)
+ Print ExpType$(10%), ExpType$(10&), ExpType$(10~), ExpType$(10#), ExpType$(10@)
\\ Without symbol is a Double
- Print Type$(10)
+ Print ExpType$(10)
}
\\ We call it
CheckIt
@@ -280,7 +92,7 @@ A statement Input Alfa$ can input characters for a string or for object typed gr
Types are strong for values with a name (variables, constants), but weak for items in containers. In a container (Array, Inventory and Stack) we can place anything including other containers. We can bypass the "strong" capability but this isn't a practice for good programming. Internal or variables are of type of Variant, so we can make a reference of A to A$ and we can save a string "1212" and read from A the number 1212.
-
+
Module AKindOfMess {
a=10@
Print Type$(a)="Decimal"
@@ -319,7 +131,7 @@ Print Error$=""
So check this for proper use of types.
-Module CheckInt {
+Module CheckInt {
A%=1212212.12@
Print A% ' 1212212
A%=1212212.52@
@@ -337,19 +149,18 @@ So check this for proper use of types.
}
CheckInt
-So we say about Integer Variables, and no Integer Numeric Type. Like in Basic, M2000 is not case sensitive (except for labels), so A% and a% is the same. We may have A, A$ and A% as three variables, or A(), A%(), A$() as arrays or and functions. We can use name(* ) to call function and not array if we have each with same name.
+So we say about Integer Variables, and no Integer Numeric Type. Like in Basic, M2000 is not case sensitive (except for labels), so A% and a% is the same. We may have A, A$ and A% as three variables, or A(), A%(), A$() as arrays or and functions. We can use name(@ ) to call function and not array if we have each with same name.
-Dim A(10)=1
+Dim A(10)=1
Def A(x)=x**2
-Print A(3), A(* 4) ' change @ to * from later versions
-
+Print A(3), A(@ 4)
By default all variables are local. M2000 uses heap to store local variables, not stack. We can use global variables, but a local definition hide a global one. We can make global variables for temporary use (at return from module which we define a global, this global erased). A global definition in an already defined global variable with same name, hide for temporary use the old global variable.
It is easy to make modules, with modules, functions, variables, arrays. We can use subroutines when we want code in a module or a function to used more than once. We can use local variables inside subroutines. In subroutines we can use module's variables, functions, subroutines. Until here we see something like BASIC, except that variables are local to modules and functions, but can be used by subroutines. Also we have see that we can replace a module in a module when we call it. With this replacement we can use a predefined logic with some "terminals", modules that get parameters and do final things. We can make global modules and functions in local modules and functions, but these exist until creator module or function exit.
-M2000 can be used for more advanced programming. Modules and functions can be members of Groups. Groups are values. So a function can return a Group.
+M2000 can be used for more advanced programming. Modules and functions can be members of Groups. Groups are values. So a function can return a Group.
===Stack of Values===
Modules and functions get parameters in a stack. Modules get the parent stack with parameters, and functions get a new stack with parameters. Modules return from call and are responsible to clear as needed the stack. Functions drop the stack after the call from an expression. A module can return entities in stack, if we want to do that. We can call a module and pass parameters, and that module can call other module leaving parameters in stack to be read in last module.
@@ -359,7 +170,7 @@ In the example below (y) is a Read y for module definition. Early versions of la
As we see alfa has no read statement, because before get the first number need to make two modules, and then pop one number and call a module passing current stack, so if choose beta, then the second value feed y from a read y statement.
-
+
module alfa {
module beta (y) {
print y**3
@@ -384,13 +195,15 @@ function sumall {
print sumall(1,2,3,4,5,6,7)=28
+
+
===OOP===
Groups are objects for M2000. We can use them as values, and if we want we can use pointers for groups (but we can make a lot of programs without using pointers to groups). Without using pointer, a Group may be local with a name in a Module or can be in a container like array, inventory (a type of map) and stack objects, without name. Groups may have private and public members, may have properties as read only, may get value and return value, and may have operators. Members of Groups can be anything, including other groups. Groups may have events too. We can make groups by using CLASS statement or by using own function which return a Group or a pointer to Group.
A special object is the lambda object, which may have a number of closures, and have to faces, a variable and a function:
-Module Delta {
+Module Delta {
\\ Make a group like a lambda
\\ A Class make a Global Function
\\ (in a group a Class definition make a group member, not a global function)
@@ -431,7 +244,7 @@ We can place a lambda function as closure in a lambda function, and we can build
a class define a type too. We can make a class from other classes too. We can make inner classes too.
-
+
Form 80,50
\\ counters supposed we provide them from a file
global LastCustomerId=100, ReportId=80
@@ -529,7 +342,7 @@ While M {
Until now we see modules/functions/subs for procedural programming, Groups for OOP, Groups as lambda functions and lambda functions for functional programming. We can use events for groups and for COM objects, including GUI objects.
-Module Beta {
+Module Beta {
Group WithEvents Alpha {
Event "One"
Module DoIt (x) {
@@ -567,7 +380,7 @@ Until now we see that programming with events can be used in M2000. There is an
Modules may have Threads, part of modules that can be executed in intervals, can be halted, or can be released, and can be erased. Each thread has own stack and may have own static variables (Modules and Functions also may have static variables), but can use modules variables and functions/modules/subs. Threads can run concurrent (thread return to task manager after execution of a statement or a block of statements) or sequential (a thread has to exit from interval to start other thread)
-Module Zeta {
+Module Zeta {
k=10
Thread {
k++
@@ -586,7 +399,7 @@ Zeta
M2000 Interpreter can work with Structures and Buffers. Buffer is a memory block and Structure can define types of memory, and a buffer can hold arrays of structures. Each structure can be made from other structures or arrays of structures, and may have unions. We can use buffers for code execution (writing machine code), using standard buffers (not executable), for data holder. Also we can use Buffers calling external dll and passing by address.
-Module Kappa {
+Module Kappa {
Function Theta(x) {
Structure Points_single {
x as single
@@ -602,26 +415,4 @@ M2000 Interpreter can work with Structures and Buffers. Buffer is a memory block
\\
Print Eval(P, 0!x)=1212.12~, Eval(P, 0!y)=21.1212~
}
-Kappa
-Module Kappa {
- Function Theta(x) {
- Structure Points_single {
- x as single
- y as single
- }
- Buffer Clear Points as Points_single*x
- =Points
- }
- P=Theta(100)
- Print Len(P)=800 ' 2x4x100 bytes
- ' new way to use fields of structure
- P[0]|x=1212.12
- P[0]|y=21.1212
- Print Eval(P, 0!x)=1212.12~, Eval(P, 0!y)=21.1212~
- Print P[0]|x=1212.12~, P[0]|y=21.1212~
- P[4]=P[0] ' copy of structure at offser 4*len of structrure Points_single
- ' p(0) is address of first struct, p(4) is address of 5th struct
- Print P[4]|x=1212.12~, P[4]|y=21.1212~, p(4)-p(0)=32
-}
-Kappa
-
\ No newline at end of file
+Kappa
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/ADFGVX-cipher b/Lang/M2000-Interpreter/ADFGVX-cipher
deleted file mode 120000
index 58053e0f2d..0000000000
--- a/Lang/M2000-Interpreter/ADFGVX-cipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/ADFGVX-cipher/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Apply-a-digital-filter-direct-form-II-transposed- b/Lang/M2000-Interpreter/Apply-a-digital-filter-direct-form-II-transposed-
deleted file mode 120000
index 0994290aa3..0000000000
--- a/Lang/M2000-Interpreter/Apply-a-digital-filter-direct-form-II-transposed-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Apply-a-digital-filter-direct-form-II-transposed-/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Arbitrary-precision-integers-included- b/Lang/M2000-Interpreter/Arbitrary-precision-integers-included-
deleted file mode 120000
index 4f4595771b..0000000000
--- a/Lang/M2000-Interpreter/Arbitrary-precision-integers-included-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arbitrary-precision-integers-included-/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Arithmetic-Complex b/Lang/M2000-Interpreter/Arithmetic-Complex
deleted file mode 120000
index d7240f321f..0000000000
--- a/Lang/M2000-Interpreter/Arithmetic-Complex
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-Complex/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Associative-array-Merging b/Lang/M2000-Interpreter/Associative-array-Merging
deleted file mode 120000
index e54ba7cbfd..0000000000
--- a/Lang/M2000-Interpreter/Associative-array-Merging
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Associative-array-Merging/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Averages-Mean-angle b/Lang/M2000-Interpreter/Averages-Mean-angle
deleted file mode 120000
index 5bcc89482d..0000000000
--- a/Lang/M2000-Interpreter/Averages-Mean-angle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Mean-angle/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Averages-Root-mean-square b/Lang/M2000-Interpreter/Averages-Root-mean-square
deleted file mode 120000
index 226fa9019d..0000000000
--- a/Lang/M2000-Interpreter/Averages-Root-mean-square
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Root-mean-square/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Averages-Simple-moving-average b/Lang/M2000-Interpreter/Averages-Simple-moving-average
deleted file mode 120000
index 4d812f1b4c..0000000000
--- a/Lang/M2000-Interpreter/Averages-Simple-moving-average
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Simple-moving-average/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Babylonian-spiral b/Lang/M2000-Interpreter/Babylonian-spiral
deleted file mode 120000
index 70eeaaf834..0000000000
--- a/Lang/M2000-Interpreter/Babylonian-spiral
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Babylonian-spiral/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Bernoulli-numbers b/Lang/M2000-Interpreter/Bernoulli-numbers
deleted file mode 120000
index 91c31cbe94..0000000000
--- a/Lang/M2000-Interpreter/Bernoulli-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bernoulli-numbers/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Bifid-cipher b/Lang/M2000-Interpreter/Bifid-cipher
deleted file mode 120000
index c97cd39b1f..0000000000
--- a/Lang/M2000-Interpreter/Bifid-cipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bifid-cipher/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Binary-strings b/Lang/M2000-Interpreter/Binary-strings
deleted file mode 120000
index 7890dd1bf5..0000000000
--- a/Lang/M2000-Interpreter/Binary-strings
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Binary-strings/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Bitmap-B-zier-curves-Quadratic b/Lang/M2000-Interpreter/Bitmap-B-zier-curves-Quadratic
deleted file mode 120000
index 2471b47323..0000000000
--- a/Lang/M2000-Interpreter/Bitmap-B-zier-curves-Quadratic
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bitmap-B-zier-curves-Quadratic/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Bitmap-Bresenhams-line-algorithm b/Lang/M2000-Interpreter/Bitmap-Bresenhams-line-algorithm
deleted file mode 120000
index 37e0c9a050..0000000000
--- a/Lang/M2000-Interpreter/Bitmap-Bresenhams-line-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bitmap-Bresenhams-line-algorithm/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Bitwise-operations b/Lang/M2000-Interpreter/Bitwise-operations
deleted file mode 120000
index 7b5956a12b..0000000000
--- a/Lang/M2000-Interpreter/Bitwise-operations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bitwise-operations/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Cartesian-product-of-two-or-more-lists b/Lang/M2000-Interpreter/Cartesian-product-of-two-or-more-lists
deleted file mode 120000
index afa95add18..0000000000
--- a/Lang/M2000-Interpreter/Cartesian-product-of-two-or-more-lists
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cartesian-product-of-two-or-more-lists/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Chinese-zodiac b/Lang/M2000-Interpreter/Chinese-zodiac
deleted file mode 120000
index ba20540cb2..0000000000
--- a/Lang/M2000-Interpreter/Chinese-zodiac
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Chinese-zodiac/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Compare-length-of-two-strings b/Lang/M2000-Interpreter/Compare-length-of-two-strings
deleted file mode 120000
index 1726357b73..0000000000
--- a/Lang/M2000-Interpreter/Compare-length-of-two-strings
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compare-length-of-two-strings/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Compound-data-type b/Lang/M2000-Interpreter/Compound-data-type
deleted file mode 120000
index 661e74ca81..0000000000
--- a/Lang/M2000-Interpreter/Compound-data-type
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compound-data-type/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Count-occurrences-of-a-substring b/Lang/M2000-Interpreter/Count-occurrences-of-a-substring
deleted file mode 120000
index 96e93abdc4..0000000000
--- a/Lang/M2000-Interpreter/Count-occurrences-of-a-substring
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Count-occurrences-of-a-substring/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Deal-cards-for-FreeCell b/Lang/M2000-Interpreter/Deal-cards-for-FreeCell
deleted file mode 120000
index 59b0374429..0000000000
--- a/Lang/M2000-Interpreter/Deal-cards-for-FreeCell
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Deal-cards-for-FreeCell/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Doomsday-rule b/Lang/M2000-Interpreter/Doomsday-rule
deleted file mode 120000
index 64bda385da..0000000000
--- a/Lang/M2000-Interpreter/Doomsday-rule
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Doomsday-rule/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Egyptian-division b/Lang/M2000-Interpreter/Egyptian-division
deleted file mode 120000
index ed8318ad3d..0000000000
--- a/Lang/M2000-Interpreter/Egyptian-division
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Egyptian-division/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Equilibrium-index b/Lang/M2000-Interpreter/Equilibrium-index
deleted file mode 120000
index 52fd43669a..0000000000
--- a/Lang/M2000-Interpreter/Equilibrium-index
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Equilibrium-index/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Eulers-identity b/Lang/M2000-Interpreter/Eulers-identity
deleted file mode 120000
index af0f40c33c..0000000000
--- a/Lang/M2000-Interpreter/Eulers-identity
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Eulers-identity/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Execute-Computer-Zero b/Lang/M2000-Interpreter/Execute-Computer-Zero
deleted file mode 120000
index fecab5c3ec..0000000000
--- a/Lang/M2000-Interpreter/Execute-Computer-Zero
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Execute-Computer-Zero/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Factors-of-a-Mersenne-number b/Lang/M2000-Interpreter/Factors-of-a-Mersenne-number
deleted file mode 120000
index dcb49d5579..0000000000
--- a/Lang/M2000-Interpreter/Factors-of-a-Mersenne-number
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factors-of-a-Mersenne-number/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Fast-Fourier-transform b/Lang/M2000-Interpreter/Fast-Fourier-transform
deleted file mode 120000
index e70d70854c..0000000000
--- a/Lang/M2000-Interpreter/Fast-Fourier-transform
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fast-Fourier-transform/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/File-extension-is-in-extensions-list b/Lang/M2000-Interpreter/File-extension-is-in-extensions-list
deleted file mode 120000
index 6d12e57411..0000000000
--- a/Lang/M2000-Interpreter/File-extension-is-in-extensions-list
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/File-extension-is-in-extensions-list/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Find-the-last-Sunday-of-each-month b/Lang/M2000-Interpreter/Find-the-last-Sunday-of-each-month
deleted file mode 120000
index 14e77f2ff4..0000000000
--- a/Lang/M2000-Interpreter/Find-the-last-Sunday-of-each-month
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Find-the-last-Sunday-of-each-month/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Four-is-magic b/Lang/M2000-Interpreter/Four-is-magic
deleted file mode 120000
index 3bd19ce379..0000000000
--- a/Lang/M2000-Interpreter/Four-is-magic
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Four-is-magic/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Globally-replace-text-in-several-files b/Lang/M2000-Interpreter/Globally-replace-text-in-several-files
deleted file mode 120000
index 6371957a66..0000000000
--- a/Lang/M2000-Interpreter/Globally-replace-text-in-several-files
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Globally-replace-text-in-several-files/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Greatest-subsequential-sum b/Lang/M2000-Interpreter/Greatest-subsequential-sum
deleted file mode 120000
index 5470dd7511..0000000000
--- a/Lang/M2000-Interpreter/Greatest-subsequential-sum
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Greatest-subsequential-sum/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/HTTPS b/Lang/M2000-Interpreter/HTTPS
deleted file mode 120000
index 07f4e45833..0000000000
--- a/Lang/M2000-Interpreter/HTTPS
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/HTTPS/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/ISBN13-check-digit b/Lang/M2000-Interpreter/ISBN13-check-digit
deleted file mode 120000
index b320adf2bf..0000000000
--- a/Lang/M2000-Interpreter/ISBN13-check-digit
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/ISBN13-check-digit/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Idiomatically-determine-all-the-characters-that-can-be-used-for-symbols b/Lang/M2000-Interpreter/Idiomatically-determine-all-the-characters-that-can-be-used-for-symbols
deleted file mode 120000
index 85569db69f..0000000000
--- a/Lang/M2000-Interpreter/Idiomatically-determine-all-the-characters-that-can-be-used-for-symbols
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Idiomatically-determine-all-the-characters-that-can-be-used-for-symbols/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/K-d-tree b/Lang/M2000-Interpreter/K-d-tree
deleted file mode 120000
index 5f1e9bff31..0000000000
--- a/Lang/M2000-Interpreter/K-d-tree
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/K-d-tree/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Leonardo-numbers b/Lang/M2000-Interpreter/Leonardo-numbers
deleted file mode 120000
index 4f37c1babb..0000000000
--- a/Lang/M2000-Interpreter/Leonardo-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Leonardo-numbers/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Logistic-curve-fitting-in-epidemiology b/Lang/M2000-Interpreter/Logistic-curve-fitting-in-epidemiology
deleted file mode 120000
index d60f5aa239..0000000000
--- a/Lang/M2000-Interpreter/Logistic-curve-fitting-in-epidemiology
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Logistic-curve-fitting-in-epidemiology/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Long-multiplication b/Lang/M2000-Interpreter/Long-multiplication
deleted file mode 120000
index ba1dc9bc62..0000000000
--- a/Lang/M2000-Interpreter/Long-multiplication
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Long-multiplication/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Long-year b/Lang/M2000-Interpreter/Long-year
deleted file mode 120000
index 7119be8d2b..0000000000
--- a/Lang/M2000-Interpreter/Long-year
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Long-year/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Mastermind b/Lang/M2000-Interpreter/Mastermind
deleted file mode 120000
index 3cfbb80935..0000000000
--- a/Lang/M2000-Interpreter/Mastermind
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Mastermind/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Matrix-digital-rain b/Lang/M2000-Interpreter/Matrix-digital-rain
deleted file mode 120000
index c3f5d509a7..0000000000
--- a/Lang/M2000-Interpreter/Matrix-digital-rain
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Matrix-digital-rain/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Matrix-transposition b/Lang/M2000-Interpreter/Matrix-transposition
deleted file mode 120000
index 5ea61d7980..0000000000
--- a/Lang/M2000-Interpreter/Matrix-transposition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Matrix-transposition/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Modified-random-distribution b/Lang/M2000-Interpreter/Modified-random-distribution
deleted file mode 120000
index bbbb129f02..0000000000
--- a/Lang/M2000-Interpreter/Modified-random-distribution
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Modified-random-distribution/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Modular-exponentiation b/Lang/M2000-Interpreter/Modular-exponentiation
deleted file mode 120000
index 99e9549d1a..0000000000
--- a/Lang/M2000-Interpreter/Modular-exponentiation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Modular-exponentiation/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Morse-code b/Lang/M2000-Interpreter/Morse-code
deleted file mode 120000
index 77ce05e92e..0000000000
--- a/Lang/M2000-Interpreter/Morse-code
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Morse-code/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Multi-dimensional-array b/Lang/M2000-Interpreter/Multi-dimensional-array
deleted file mode 120000
index 24c2948fdf..0000000000
--- a/Lang/M2000-Interpreter/Multi-dimensional-array
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Multi-dimensional-array/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Multiple-regression b/Lang/M2000-Interpreter/Multiple-regression
deleted file mode 120000
index f645ea689c..0000000000
--- a/Lang/M2000-Interpreter/Multiple-regression
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Multiple-regression/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Number-names b/Lang/M2000-Interpreter/Number-names
deleted file mode 120000
index acf20af45b..0000000000
--- a/Lang/M2000-Interpreter/Number-names
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Number-names/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Old-lady-swallowed-a-fly b/Lang/M2000-Interpreter/Old-lady-swallowed-a-fly
deleted file mode 120000
index f9fe169db2..0000000000
--- a/Lang/M2000-Interpreter/Old-lady-swallowed-a-fly
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Old-lady-swallowed-a-fly/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Ordered-words b/Lang/M2000-Interpreter/Ordered-words
deleted file mode 120000
index ccf0ec6f16..0000000000
--- a/Lang/M2000-Interpreter/Ordered-words
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ordered-words/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Password-generator b/Lang/M2000-Interpreter/Password-generator
deleted file mode 120000
index 0b48ccbf39..0000000000
--- a/Lang/M2000-Interpreter/Password-generator
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Password-generator/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Periodic-table b/Lang/M2000-Interpreter/Periodic-table
deleted file mode 120000
index 0e286fad08..0000000000
--- a/Lang/M2000-Interpreter/Periodic-table
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Periodic-table/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Polyspiral b/Lang/M2000-Interpreter/Polyspiral
deleted file mode 120000
index f2eb619d45..0000000000
--- a/Lang/M2000-Interpreter/Polyspiral
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Polyspiral/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Power-set b/Lang/M2000-Interpreter/Power-set
deleted file mode 120000
index c99b047826..0000000000
--- a/Lang/M2000-Interpreter/Power-set
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Power-set/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Problem-of-Apollonius b/Lang/M2000-Interpreter/Problem-of-Apollonius
deleted file mode 120000
index 3c1d7459c0..0000000000
--- a/Lang/M2000-Interpreter/Problem-of-Apollonius
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Problem-of-Apollonius/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Pseudo-random-numbers-Middle-square-method b/Lang/M2000-Interpreter/Pseudo-random-numbers-Middle-square-method
deleted file mode 120000
index 71371c48fd..0000000000
--- a/Lang/M2000-Interpreter/Pseudo-random-numbers-Middle-square-method
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pseudo-random-numbers-Middle-square-method/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Pseudo-random-numbers-Xorshift-star b/Lang/M2000-Interpreter/Pseudo-random-numbers-Xorshift-star
deleted file mode 120000
index a60ebed0a5..0000000000
--- a/Lang/M2000-Interpreter/Pseudo-random-numbers-Xorshift-star
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pseudo-random-numbers-Xorshift-star/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Quaternion-type b/Lang/M2000-Interpreter/Quaternion-type
new file mode 120000
index 0000000000..7027a86930
--- /dev/null
+++ b/Lang/M2000-Interpreter/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Read-a-specific-line-from-a-file b/Lang/M2000-Interpreter/Read-a-specific-line-from-a-file
deleted file mode 120000
index 12c1b22a47..0000000000
--- a/Lang/M2000-Interpreter/Read-a-specific-line-from-a-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Read-a-specific-line-from-a-file/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Roots-of-a-quadratic-function b/Lang/M2000-Interpreter/Roots-of-a-quadratic-function
deleted file mode 120000
index 0f141b08fb..0000000000
--- a/Lang/M2000-Interpreter/Roots-of-a-quadratic-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Roots-of-a-quadratic-function/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Simple-turtle-graphics b/Lang/M2000-Interpreter/Simple-turtle-graphics
deleted file mode 120000
index 8bb4a18e49..0000000000
--- a/Lang/M2000-Interpreter/Simple-turtle-graphics
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Simple-turtle-graphics/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Sleeping-Beauty-problem b/Lang/M2000-Interpreter/Sleeping-Beauty-problem
deleted file mode 120000
index aee1fdd4f8..0000000000
--- a/Lang/M2000-Interpreter/Sleeping-Beauty-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sleeping-Beauty-problem/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Sort-an-integer-array b/Lang/M2000-Interpreter/Sort-an-integer-array
deleted file mode 120000
index f409389d27..0000000000
--- a/Lang/M2000-Interpreter/Sort-an-integer-array
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-an-integer-array/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Sort-an-outline-at-every-level b/Lang/M2000-Interpreter/Sort-an-outline-at-every-level
deleted file mode 120000
index b5c1e68e5d..0000000000
--- a/Lang/M2000-Interpreter/Sort-an-outline-at-every-level
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-an-outline-at-every-level/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Sorting-algorithms-Strand-sort b/Lang/M2000-Interpreter/Sorting-algorithms-Strand-sort
deleted file mode 120000
index 94b7b8369f..0000000000
--- a/Lang/M2000-Interpreter/Sorting-algorithms-Strand-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Strand-sort/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Stable-marriage-problem b/Lang/M2000-Interpreter/Stable-marriage-problem
deleted file mode 120000
index 1148451e3c..0000000000
--- a/Lang/M2000-Interpreter/Stable-marriage-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Stable-marriage-problem/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Statistics-Basic b/Lang/M2000-Interpreter/Statistics-Basic
deleted file mode 120000
index 9d5dab6ba7..0000000000
--- a/Lang/M2000-Interpreter/Statistics-Basic
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Statistics-Basic/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Statistics-Normal-distribution b/Lang/M2000-Interpreter/Statistics-Normal-distribution
deleted file mode 120000
index 6018d24b87..0000000000
--- a/Lang/M2000-Interpreter/Statistics-Normal-distribution
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Statistics-Normal-distribution/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Strip-a-set-of-characters-from-a-string b/Lang/M2000-Interpreter/Strip-a-set-of-characters-from-a-string
deleted file mode 120000
index ca8f98d606..0000000000
--- a/Lang/M2000-Interpreter/Strip-a-set-of-characters-from-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strip-a-set-of-characters-from-a-string/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Taxicab-numbers b/Lang/M2000-Interpreter/Taxicab-numbers
deleted file mode 120000
index 6c7f58f7d6..0000000000
--- a/Lang/M2000-Interpreter/Taxicab-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Taxicab-numbers/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Temperature-conversion b/Lang/M2000-Interpreter/Temperature-conversion
deleted file mode 120000
index 75d9db05ed..0000000000
--- a/Lang/M2000-Interpreter/Temperature-conversion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Temperature-conversion/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Terminal-control-Hiding-the-cursor b/Lang/M2000-Interpreter/Terminal-control-Hiding-the-cursor
deleted file mode 120000
index 7d9e8bacf5..0000000000
--- a/Lang/M2000-Interpreter/Terminal-control-Hiding-the-cursor
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Terminal-control-Hiding-the-cursor/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Tree-datastructures b/Lang/M2000-Interpreter/Tree-datastructures
deleted file mode 120000
index 1fa6a47d52..0000000000
--- a/Lang/M2000-Interpreter/Tree-datastructures
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tree-datastructures/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Truth-table b/Lang/M2000-Interpreter/Truth-table
deleted file mode 120000
index b77fe8354b..0000000000
--- a/Lang/M2000-Interpreter/Truth-table
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Truth-table/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Ultra-useful-primes b/Lang/M2000-Interpreter/Ultra-useful-primes
deleted file mode 120000
index 5330980a0e..0000000000
--- a/Lang/M2000-Interpreter/Ultra-useful-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ultra-useful-primes/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Video-display-modes b/Lang/M2000-Interpreter/Video-display-modes
deleted file mode 120000
index 39ee17dc2d..0000000000
--- a/Lang/M2000-Interpreter/Video-display-modes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Video-display-modes/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Window-management b/Lang/M2000-Interpreter/Window-management
deleted file mode 120000
index bb8ac9e26a..0000000000
--- a/Lang/M2000-Interpreter/Window-management
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Window-management/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M2000-Interpreter/Write-language-name-in-3D-ASCII b/Lang/M2000-Interpreter/Write-language-name-in-3D-ASCII
deleted file mode 120000
index 3ec6cbeb80..0000000000
--- a/Lang/M2000-Interpreter/Write-language-name-in-3D-ASCII
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Write-language-name-in-3D-ASCII/M2000-Interpreter
\ No newline at end of file
diff --git a/Lang/M4/Cantor-set b/Lang/M4/Cantor-set
deleted file mode 120000
index cb3913e176..0000000000
--- a/Lang/M4/Cantor-set
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cantor-set/M4
\ No newline at end of file
diff --git a/Lang/M4/Empty-program b/Lang/M4/Empty-program
new file mode 120000
index 0000000000..3ce502532c
--- /dev/null
+++ b/Lang/M4/Empty-program
@@ -0,0 +1 @@
+../../Task/Empty-program/M4
\ No newline at end of file
diff --git a/Lang/MACRO-11/Run-length-encoding b/Lang/MACRO-11/Run-length-encoding
deleted file mode 120000
index 3f700314e0..0000000000
--- a/Lang/MACRO-11/Run-length-encoding
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Run-length-encoding/MACRO-11
\ No newline at end of file
diff --git a/Lang/MACRO-11/Square-but-not-cube b/Lang/MACRO-11/Square-but-not-cube
deleted file mode 120000
index 7130b2c620..0000000000
--- a/Lang/MACRO-11/Square-but-not-cube
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Square-but-not-cube/MACRO-11
\ No newline at end of file
diff --git a/Lang/MAD/Arithmetic-derivative b/Lang/MAD/Arithmetic-derivative
deleted file mode 120000
index e7c006ae6c..0000000000
--- a/Lang/MAD/Arithmetic-derivative
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-derivative/MAD
\ No newline at end of file
diff --git a/Lang/MAD/Look-and-say-sequence b/Lang/MAD/Look-and-say-sequence
deleted file mode 120000
index dbca6a6456..0000000000
--- a/Lang/MAD/Look-and-say-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Look-and-say-sequence/MAD
\ No newline at end of file
diff --git a/Lang/MAD/Zeckendorf-number-representation b/Lang/MAD/Zeckendorf-number-representation
deleted file mode 120000
index 3be8d0f3cc..0000000000
--- a/Lang/MAD/Zeckendorf-number-representation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Zeckendorf-number-representation/MAD
\ No newline at end of file
diff --git a/Lang/MATLAB/Bioinformatics-base-count b/Lang/MATLAB/Bioinformatics-base-count
new file mode 120000
index 0000000000..2622a73422
--- /dev/null
+++ b/Lang/MATLAB/Bioinformatics-base-count
@@ -0,0 +1 @@
+../../Task/Bioinformatics-base-count/MATLAB
\ No newline at end of file
diff --git a/Lang/MATLAB/Find-the-last-Sunday-of-each-month b/Lang/MATLAB/Find-the-last-Sunday-of-each-month
deleted file mode 120000
index 989cc5e7f4..0000000000
--- a/Lang/MATLAB/Find-the-last-Sunday-of-each-month
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Find-the-last-Sunday-of-each-month/MATLAB
\ No newline at end of file
diff --git a/Lang/ML-I/Empty-program b/Lang/ML-I/Empty-program
new file mode 120000
index 0000000000..48b06f2449
--- /dev/null
+++ b/Lang/ML-I/Empty-program
@@ -0,0 +1 @@
+../../Task/Empty-program/ML-I
\ No newline at end of file
diff --git a/Lang/MSX-Basic/Colour-pinstripe-Display b/Lang/MSX-Basic/Colour-pinstripe-Display
deleted file mode 120000
index f0497934ea..0000000000
--- a/Lang/MSX-Basic/Colour-pinstripe-Display
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Colour-pinstripe-Display/MSX-Basic
\ No newline at end of file
diff --git a/Lang/MSX-Basic/Diversity-prediction-theorem b/Lang/MSX-Basic/Diversity-prediction-theorem
deleted file mode 120000
index e57f4cb084..0000000000
--- a/Lang/MSX-Basic/Diversity-prediction-theorem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Diversity-prediction-theorem/MSX-Basic
\ No newline at end of file
diff --git a/Lang/MSX-Basic/Evaluate-binomial-coefficients b/Lang/MSX-Basic/Evaluate-binomial-coefficients
deleted file mode 120000
index 806e2bfad2..0000000000
--- a/Lang/MSX-Basic/Evaluate-binomial-coefficients
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Evaluate-binomial-coefficients/MSX-Basic
\ No newline at end of file
diff --git a/Lang/MSX-Basic/Generate-lower-case-ASCII-alphabet b/Lang/MSX-Basic/Generate-lower-case-ASCII-alphabet
deleted file mode 120000
index 8cceece87f..0000000000
--- a/Lang/MSX-Basic/Generate-lower-case-ASCII-alphabet
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Generate-lower-case-ASCII-alphabet/MSX-Basic
\ No newline at end of file
diff --git a/Lang/MSX-Basic/Leonardo-numbers b/Lang/MSX-Basic/Leonardo-numbers
deleted file mode 120000
index 070fbe9186..0000000000
--- a/Lang/MSX-Basic/Leonardo-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Leonardo-numbers/MSX-Basic
\ No newline at end of file
diff --git a/Lang/MSX-Basic/Map-range b/Lang/MSX-Basic/Map-range
deleted file mode 120000
index 749213e0f6..0000000000
--- a/Lang/MSX-Basic/Map-range
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Map-range/MSX-Basic
\ No newline at end of file
diff --git a/Lang/MSX-Basic/Pascals-triangle b/Lang/MSX-Basic/Pascals-triangle
deleted file mode 120000
index bfaa04f0db..0000000000
--- a/Lang/MSX-Basic/Pascals-triangle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pascals-triangle/MSX-Basic
\ No newline at end of file
diff --git a/Lang/MSX-Basic/Pinstripe-Display b/Lang/MSX-Basic/Pinstripe-Display
deleted file mode 120000
index b37582657e..0000000000
--- a/Lang/MSX-Basic/Pinstripe-Display
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pinstripe-Display/MSX-Basic
\ No newline at end of file
diff --git a/Lang/MUMPS/00-LANG.txt b/Lang/MUMPS/00-LANG.txt
index 491ec139a6..cfb6ac9800 100644
--- a/Lang/MUMPS/00-LANG.txt
+++ b/Lang/MUMPS/00-LANG.txt
@@ -1,21 +1,14 @@
{{language
-|untyped=yes
-|gc
-|parampass|
-}}
-
+|untyped=yes}}
{{language programming paradigm|procedural}}
-Visit the Google group/ Usenet newsgroupcomp.lang.mumps for discussions about this language.
+Visit the Google group comp.lang.mumps for discussions about this language.
Visit [[wp:MUMPS|Wikipedia]] for a general description.
See http://71.174.62.16/Demo/AnnoStd for details about the language.
-Standard MUMPS has one data type (strings) and some dialects (Cache, MSM, IRIS) add a second data type (objects). A variable can be unsubscripted or not, and the subscripted variables form a
-sparse n-tree, or associative arrays or sparse multidimensional hierarchical key-value pair with keys as strings and values as strings.
-
-MUMPS doesn't have traditional arrays, but has an array syntax that manipulates trees as if they were arrays, using indexing to access nodes of the tree. You can create a tree that can have unlimited levels of branching, with keys and values associated with each node in the tree. Similarly, while the language doesn't have lists, you can mimic lists by creating strings with a consistent character (or string) as a delimiter separating the entries.
-
-The Cache and IRIS dialects also support explicit List operations and data structures as values.
+
Standard MUMPS has one data types (strings) and some dialects (Cache, MSM) add a second data type (objects). A variable can be unsubscripted or not, and the subscripted variables form a
+sparse n-tree. MUMPS doesn't have traditional arrays, but has an array syntax that manipulates trees as if they were arrays, using indexing to access nodes of the tree. You can create a tree that can have unlimited levels of branching, with keys and values associated with each node in the tree. Similarly, while the language doesn't have lists, you can mimic lists by creating strings with a consistent character (or string) as a delimiter separating the entries.
+The Cache dialect also supports explicit List operations and data structures.
\ No newline at end of file
diff --git a/Lang/MUMPS/Menu b/Lang/MUMPS/Menu
new file mode 120000
index 0000000000..e9b86505e7
--- /dev/null
+++ b/Lang/MUMPS/Menu
@@ -0,0 +1 @@
+../../Task/Menu/MUMPS
\ No newline at end of file
diff --git a/Lang/Maple/Empty-program b/Lang/Maple/Empty-program
new file mode 120000
index 0000000000..f9fceb04a1
--- /dev/null
+++ b/Lang/Maple/Empty-program
@@ -0,0 +1 @@
+../../Task/Empty-program/Maple
\ No newline at end of file
diff --git a/Lang/Maple/Pythagoras-tree b/Lang/Maple/Pythagoras-tree
deleted file mode 120000
index 0342fe2180..0000000000
--- a/Lang/Maple/Pythagoras-tree
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pythagoras-tree/Maple
\ No newline at end of file
diff --git a/Lang/Maple/Quaternion-type b/Lang/Maple/Quaternion-type
new file mode 120000
index 0000000000..dc174952ef
--- /dev/null
+++ b/Lang/Maple/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/Maple
\ No newline at end of file
diff --git a/Lang/Maple/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/Maple/Sequence-smallest-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/Maple/Sequence:-smallest-number-with-exactly-n-divisors
rename to Lang/Maple/Sequence-smallest-number-with-exactly-n-divisors
diff --git a/Lang/MariaDB/00-LANG.txt b/Lang/MariaDB/00-LANG.txt
deleted file mode 100644
index fc505f9a24..0000000000
--- a/Lang/MariaDB/00-LANG.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-{{language|MariaDB}}
-{{implementation|SQL}}
-
-'''MariaDB''' is a relational database management system (RDBMS) with non-relational extensions, like JSON and dynamic columns. It was originally forked from MySQL. After Oracle acquired MySQL in 2009, its creator Michael "Monty" Widenius and other developers from the team created MariaDB. MariaDB was named after Monty's second daughter, Maria.
-
-MariaDB is backed by two organisations: the MariaDB Foundation, a not-for-profit organisation that makes sure that MariaDB will remain free forever; and MariaDB plc, a company that provides MariaDB support and sells the MariaDB Enterprise edition. MariaDB code is distributed under the GNU GPL 2. Part of the code belongs to Oracle, because it derives from MySQL. MariaDB KnowledgeBase, its documentation, is available under that GNU FDL and the CC-BY-SA 3.0.
-
-MariaDB SQL has procedural extensions, which can be used to develop stored procedures, stored functions, triggers and events, as well as anonymous code blocks. It also supports a PL/SQL parser, available when MariaDB is used in Oracle compatibility mode. User-Defined Functions can also be written in a compiled language and be used in SQL statements. MariaDB also supports storage engines and other types of plugins.
-
-== External Links ==
-* [https://en.wikipedia.org/wiki/MariaDB Wikipedia:MariaDB]
-* [https://mariadb.com/kb MariaDB KnowledgeBase]
-* [https://mariadb.com/ MariaDB website]
-
-[[Category:SQL Derivatives]]
\ No newline at end of file
diff --git a/Lang/MariaDB/00-META.yaml b/Lang/MariaDB/00-META.yaml
deleted file mode 100644
index 4ad202983e..0000000000
--- a/Lang/MariaDB/00-META.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-from: http://rosettacode.org/wiki/Category:MariaDB
diff --git a/Lang/MariaDB/Conditional-structures b/Lang/MariaDB/Conditional-structures
deleted file mode 120000
index 1ed7f68fbf..0000000000
--- a/Lang/MariaDB/Conditional-structures
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Conditional-structures/MariaDB
\ No newline at end of file
diff --git a/Lang/MariaDB/Hello-world-Text b/Lang/MariaDB/Hello-world-Text
deleted file mode 120000
index bc1357e35b..0000000000
--- a/Lang/MariaDB/Hello-world-Text
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Text/MariaDB
\ No newline at end of file
diff --git a/Lang/MariaDB/Parameterized-SQL-statement b/Lang/MariaDB/Parameterized-SQL-statement
deleted file mode 120000
index 28a4df441a..0000000000
--- a/Lang/MariaDB/Parameterized-SQL-statement
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Parameterized-SQL-statement/MariaDB
\ No newline at end of file
diff --git a/Lang/MariaDB/Table-creation-Postal-addresses b/Lang/MariaDB/Table-creation-Postal-addresses
deleted file mode 120000
index 5f671a41e1..0000000000
--- a/Lang/MariaDB/Table-creation-Postal-addresses
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Table-creation-Postal-addresses/MariaDB
\ No newline at end of file
diff --git a/Lang/Mastermind/00-LANG.txt b/Lang/Mastermind/00-LANG.txt
deleted file mode 100644
index faed2e3417..0000000000
--- a/Lang/Mastermind/00-LANG.txt
+++ /dev/null
@@ -1,292 +0,0 @@
-{{stub}}{{language|Mastermind}}
-Mastermind is a programming language designed specifically to create [[Brainf***]] code. The [https://mastermind.lostpixels.org Mastermind IDE] includes a [[Rust]]-based compiler, which converts (compiles) Mastermind source programs into Brainf***.
-The current Mastermind compiler generates Brainf*** code assuming an infinite bi-directional tape, as well as 8-bit wrapping cells https://github.com/Heathcorp/Mastermind.
-
-== Usage ==
-
-=== Variables & Values ===
-
-Variables can be defined as single cells, or as contiguous sets of cells:
-// single-cell:
-let var = 56;
-let c = 'g';
-let bool = true; // true/false equivalent to 1/0
-// multi-cell:
-let array[4] = [1, 2, 3, 4];
-let string[5] = "hello";
-If left uninitialised, a cell is assumed to have a value of 0.
-
-Expressions consist of simple adds and subtractions, arrays and strings cannot be used in expressions:
-
-// supported:
-var += 4 + (5 - 4 + (3 - 2));
-var = 'g' - 23 + true;
-var = var + 5; // inefficient but supported
-var += array[0] + 5;
-let arr[3] = [4 + 3 - ('5' - 46), 1, 3];
-
-// NOT supported:
-var += [4, 5, 7][1] + 3;
-Array indices must be compile-time constant integers
-
-=== Input & Output ===
-
-Single bytes can be output using the ''output'' operator:
-
-output 'h';
-output var;
-output var + 6;
-output array[0];
-// the following are equivalent:
-output '\n';
-output 10;
-Likewise for ''input'':
-
-input var;
-input arr[2];
-There is also ''*'' spread syntax and support for strings and arrays for ease of use:
-
-output "hello";
-output ['1', '2', '3'];
-output *array;
-
-input *array;
-
-=== Loops ===
-
-The simplest is the ''while'' loop, which only supports cell references, not expressions:
-
-while var {
- // do stuff
- // var -= 1;
- // etc
-}
-
-==== Draining loops ====
-The "drain" loop is equivalent to the common Brainf*** construction of repeating an action ''N'' times, where ''N'' is the value of a tape cell. Hence, "draining" the cell while doing the actions in the loop body.
-
-drain var {
-
-}
-// shorthand for following:
-while var {
- // do stuff
- var -= 1;
-}
-This destructively loops as many times as the value in the cell being referenced, this can be used with expressions:
-
-drain 10 {}
-drain var - 6 {}
-There is also shorthand "into" syntax for adding to other cells:
-
-drain var into other_var other_var_2 *spread_array etc;
-
-// example of typical "for loop":
-let i;
-drain 10 into i {
- output '0' + i; // inefficient for the example
-}
-// "0123456789"
-// equivalent to the following:
-let i;
-let N = 10;
-while N {
- output '0' + i;
-}
-
-==== Copying loops ====
-The "copy" loop is equivalent to the drain loop, except it is not destructive. This means the variable can be accessed safely from inside the loop body.
-
-copy var into other_var *spread_var etc;
-
-// examples:
-copy var {
- // this will output the original var value, var times
- output var;
-}
-
-let rows = 3;
-let columns = 6;
-let total;
-drain rows {
- copy columns into total {
- output '.';
- }
-}
-// ......
-// ......
-// ......
-
-=== If/Else ===
-The "if" and "else" keywords operate similar to [[C]], except "else if" is not supported. The code in the "if" body will be executed if the provided expression is positive, otherwise the "else" body is executed. If the "not" keyword is used, the behavior is reversed.
-Examples:
-
-if 13 {
- output "13";
-}
-
-if var {
- output "true";
-} else {
- output "false";
-}
-
-// typical equivalence use-case:
-if not var - 10 {
- // ==
-} else {
- // !=
-}
-
-=== Functions ===
-Functions work like templates/macros, as they do not perform any passing by value. All functions are in-lined at compile time. This means multiple calls to a large function will significantly increase your compiled [[Brainf***]] size.
-
-For this reason, function arguments are given using ''<'' angled bracket ''>'' syntax, much like generic functions in other languages:
-
-def quote {
- output 39; // ASCII single quote
- output arg;
- output 39;
-}
-
-let N = 'g';
-quote;
-N += 3;
-quote;
-// gj
-
-=== Imports ===
-
-Imports work much like the [[C]] preprocessor:
-
-#include "other_file"
-This copies the contents of "other_file" into the current file at compile-time.
-
-=== In-line Brainf*** features ===
-
-In-line Brainf*** allows the programmer to define custom behavior as if writing raw [[Brainf***]], this is analogous to [[C]]'s in-line [[Assembly]].
-
-
-// This is its most basic form:
-// find the next cell that equals -1
-bf {
- +[->+]-
-}
-
-// This is its more advanced form:
-// input a line of lowercase letters and output the uppercase version
-// this is an intentionally inefficient example
-bf @3 clobbers var *spread_var etc {
- ,----------[++++++++++>,----------]
- <[<]>
- [
- {
- let g @0;
- assert g unknown;
- output g + ('A' - 'a');
- // embedded Mastermind!
- }
- >
- ]
- // now clear and return
- <[[-]<]>
-}
-It is the programmer's responsibility to clear used cells and return back to the cell in which the in-line Brainf*** context began. If the programmer does not do this, any Mastermind code after the in-line Brainf*** command will likely break.
-
-==== Memory location specifiers ====
-For hand-tuning optimizations and in-line Brainf*** that reads from Mastermind variables, you can specify the location on the Brainf*** tape:
-Variables can be fixed to a specified location on the eventual Brainf*** tape. This can also be done with in-line Brainf*** code sections. This can be used to share values between Mastermind and Brainf*** contexts.
-
-let var @3 = 4;
-// compiled: >>>++++
-
-bf @4 {
- <><><>
-}
-// compiled: >>>><><><>
-
-==== Clobbering and Assertions ====
-The Mastermind compiler will try to predict the value of cells at compile-time, so it can prevent unnecessary cell clean-ups and unreachable code (with optimizations turned on). If your in-line Brainf*** affects existing Mastermind variables, you should tell the compiler using the "clobbers" keyword, the syntax is similar to the ''drain into'' variable list:
-
-bf clobbers var *spread_var other_var etc {}
-The compiler will now assume nothing about the values of those variables afterwards.
-
-If instead you want to tell the compiler specifically that a value has become certain, you can use ''assert'':
-
-assert var equals 3;
-// most common use cases:
-assert var equals 0;
-assert var unknown;
-Asserting a variable as ''unknown'' is equivalent to clobbering.
-
-==== Embedded Mastermind ====
-Embedding Mastermind into your in-line [[Brainf***]] allows you to use Mastermind syntax features for programs within your Brainf***, this is useful for ''N''-length string based programs, or anything not possible in pure Mastermind:
-
-
-let sum @0;
-
-bf @0 {
- >>
- // read input (until eof) to the tape, nullifying any spaces or newlines
- // (this is probably not a good practical example, ideas are appreciated)
- ,[
- {
- let c @0;
- assert c unknown; // needed otherwise the compiler assumes c = 0
-
- if not (c - '\n') {
- c = 0;
- }
- if not (c - ' ') {
- c = 0;
- }
- }
- >,
- ]
-}
-Memory location specifiers are relative to the current Mastermind context. Also, top-level variables are not cleared by default in Mastermind contexts, this allows you to "leave" variables in cells for your Brainf*** to use. If you want your embedded Mastermind to clean itself up, you can simply open a scope at the top level:
-
-bf {
- ++----++[][][<><><>] // the program doesn't matter for this example
- {
- // variables here will not be cleared
- let g @2;
- assert g unknown;
- {
- // variables here will be cleared
- let b = 32;
- }
- }
- {{
- // self-cleaning Mastermind code here
- }}
-}
-
-==== Advanced ====
-All Mastermind features are available within the embedded Mastermind contexts, including in-line [[Brainf***]] code.
-
-bf {
- ++++[
- {
- let i @0;
- assert i unknown;
- let j @1 = i + 1;
-
- bf @1 {
- [.+]
- {
- // even more layers are possible
- bf {
- {
- output "h"
- }
- }
- }
- }
- }
- -]
-}
-
-
-== References ==
-{{reflist}}
\ No newline at end of file
diff --git a/Lang/Mastermind/00-META.yaml b/Lang/Mastermind/00-META.yaml
deleted file mode 100644
index 52ba5ad7eb..0000000000
--- a/Lang/Mastermind/00-META.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-from: http://rosettacode.org/wiki/Category:Mastermind
diff --git a/Lang/Mastermind/Hello-world-Text b/Lang/Mastermind/Hello-world-Text
deleted file mode 120000
index a0461bd60e..0000000000
--- a/Lang/Mastermind/Hello-world-Text
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Text/Mastermind
\ No newline at end of file
diff --git a/Lang/Mastermind/Repeat b/Lang/Mastermind/Repeat
deleted file mode 120000
index 25794ace84..0000000000
--- a/Lang/Mastermind/Repeat
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Repeat/Mastermind
\ No newline at end of file
diff --git a/Lang/Mathematica/00-LANG.txt b/Lang/Mathematica/00-LANG.txt
index 15e81dd703..5daf1eef81 100644
--- a/Lang/Mathematica/00-LANG.txt
+++ b/Lang/Mathematica/00-LANG.txt
@@ -11,4 +11,4 @@ It is used in many scientific, engineering, mathematical and computing fields, a
[[Category:Mathematical programming languages]]
==Todo==
-[[Tasks not implemented in Mathematica]]
\ No newline at end of file
+[[Reports:Tasks_not_implemented_in_Mathematica]]
\ No newline at end of file
diff --git a/Lang/Mathematica/15-puzzle-solver b/Lang/Mathematica/15-puzzle-solver
deleted file mode 120000
index c802cd3973..0000000000
--- a/Lang/Mathematica/15-puzzle-solver
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/15-puzzle-solver/Mathematica
\ No newline at end of file
diff --git a/Lang/Mathematica/ADFGVX-cipher b/Lang/Mathematica/ADFGVX-cipher
deleted file mode 120000
index 0a44fcd7ef..0000000000
--- a/Lang/Mathematica/ADFGVX-cipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/ADFGVX-cipher/Mathematica
\ No newline at end of file
diff --git a/Lang/Mathematica/ASCII-art-diagram-converter b/Lang/Mathematica/ASCII-art-diagram-converter
deleted file mode 120000
index 1006da4cf6..0000000000
--- a/Lang/Mathematica/ASCII-art-diagram-converter
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/ASCII-art-diagram-converter/Mathematica
\ No newline at end of file
diff --git a/Lang/Mathematica/Arithmetic-derivative b/Lang/Mathematica/Arithmetic-derivative
deleted file mode 120000
index a9033ded41..0000000000
--- a/Lang/Mathematica/Arithmetic-derivative
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-derivative/Mathematica
\ No newline at end of file
diff --git a/Lang/Mathematica/B-zier-curves-Intersections b/Lang/Mathematica/B-zier-curves-Intersections
deleted file mode 120000
index 85dc8fb4ae..0000000000
--- a/Lang/Mathematica/B-zier-curves-Intersections
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/B-zier-curves-Intersections/Mathematica
\ No newline at end of file
diff --git a/Lang/Mathematica/Bioinformatics-base-count b/Lang/Mathematica/Bioinformatics-base-count
new file mode 120000
index 0000000000..986950c20f
--- /dev/null
+++ b/Lang/Mathematica/Bioinformatics-base-count
@@ -0,0 +1 @@
+../../Task/Bioinformatics-base-count/Mathematica
\ No newline at end of file
diff --git a/Lang/Mathematica/Camel-case-and-snake-case b/Lang/Mathematica/Camel-case-and-snake-case
deleted file mode 120000
index 6d73876132..0000000000
--- a/Lang/Mathematica/Camel-case-and-snake-case
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Camel-case-and-snake-case/Mathematica
\ No newline at end of file
diff --git a/Lang/Mathematica/Doomsday-rule b/Lang/Mathematica/Doomsday-rule
deleted file mode 120000
index 92b8fc707b..0000000000
--- a/Lang/Mathematica/Doomsday-rule
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Doomsday-rule/Mathematica
\ No newline at end of file
diff --git a/Lang/Mathematica/Empty-program b/Lang/Mathematica/Empty-program
new file mode 120000
index 0000000000..7445caa973
--- /dev/null
+++ b/Lang/Mathematica/Empty-program
@@ -0,0 +1 @@
+../../Task/Empty-program/Mathematica
\ No newline at end of file
diff --git a/Lang/Mathematica/Erd-s-Nicolas-numbers b/Lang/Mathematica/Erd-s-Nicolas-numbers
deleted file mode 120000
index d74b7bd3b7..0000000000
--- a/Lang/Mathematica/Erd-s-Nicolas-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Erd-s-Nicolas-numbers/Mathematica
\ No newline at end of file
diff --git a/Lang/Mathematica/Jordan-P-lya-numbers b/Lang/Mathematica/Jordan-P-lya-numbers
deleted file mode 120000
index 4fd2ab0262..0000000000
--- a/Lang/Mathematica/Jordan-P-lya-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jordan-P-lya-numbers/Mathematica
\ No newline at end of file
diff --git a/Lang/Mathematica/Meissel-Mertens-constant b/Lang/Mathematica/Meissel-Mertens-constant
new file mode 120000
index 0000000000..8d1d0df59d
--- /dev/null
+++ b/Lang/Mathematica/Meissel-Mertens-constant
@@ -0,0 +1 @@
+../../Task/Meissel-Mertens-constant/Mathematica
\ No newline at end of file
diff --git a/Lang/Mathematica/Miller-Rabin-primality-test b/Lang/Mathematica/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..400d0fb0e3
--- /dev/null
+++ b/Lang/Mathematica/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/Mathematica
\ No newline at end of file
diff --git a/Lang/Mathematica/Parse-an-IP-Address b/Lang/Mathematica/Parse-an-IP-Address
deleted file mode 120000
index 32b7086e88..0000000000
--- a/Lang/Mathematica/Parse-an-IP-Address
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Parse-an-IP-Address/Mathematica
\ No newline at end of file
diff --git a/Lang/Mathematica/Perlin-noise b/Lang/Mathematica/Perlin-noise
deleted file mode 120000
index 9de4d18cd6..0000000000
--- a/Lang/Mathematica/Perlin-noise
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Perlin-noise/Mathematica
\ No newline at end of file
diff --git a/Lang/Mathematica/Prime-numbers-whose-neighboring-pairs-are-tetraprimes b/Lang/Mathematica/Prime-numbers-whose-neighboring-pairs-are-tetraprimes
deleted file mode 120000
index e8da31b0d4..0000000000
--- a/Lang/Mathematica/Prime-numbers-whose-neighboring-pairs-are-tetraprimes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Prime-numbers-whose-neighboring-pairs-are-tetraprimes/Mathematica
\ No newline at end of file
diff --git a/Lang/Mathematica/Quaternion-type b/Lang/Mathematica/Quaternion-type
new file mode 120000
index 0000000000..700c56b146
--- /dev/null
+++ b/Lang/Mathematica/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/Mathematica
\ No newline at end of file
diff --git a/Lang/Mathematica/Radical-of-an-integer b/Lang/Mathematica/Radical-of-an-integer
deleted file mode 120000
index e6b1268eae..0000000000
--- a/Lang/Mathematica/Radical-of-an-integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Radical-of-an-integer/Mathematica
\ No newline at end of file
diff --git a/Lang/Mathematica/Ramer-Douglas-Peucker-line-simplification b/Lang/Mathematica/Ramer-Douglas-Peucker-line-simplification
deleted file mode 120000
index 40a31497c6..0000000000
--- a/Lang/Mathematica/Ramer-Douglas-Peucker-line-simplification
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ramer-Douglas-Peucker-line-simplification/Mathematica
\ No newline at end of file
diff --git a/Lang/Mathematica/Same-fringe b/Lang/Mathematica/Same-fringe
deleted file mode 120000
index 9a80cee1d8..0000000000
--- a/Lang/Mathematica/Same-fringe
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Same-fringe/Mathematica
\ No newline at end of file
diff --git a/Lang/Mathematica/Sequence:-nth-number-with-exactly-n-divisors b/Lang/Mathematica/Sequence-nth-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/Mathematica/Sequence:-nth-number-with-exactly-n-divisors
rename to Lang/Mathematica/Sequence-nth-number-with-exactly-n-divisors
diff --git a/Lang/Mathematica/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors b/Lang/Mathematica/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
similarity index 100%
rename from Lang/Mathematica/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors
rename to Lang/Mathematica/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
diff --git a/Lang/Mathematica/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/Mathematica/Sequence-smallest-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/Mathematica/Sequence:-smallest-number-with-exactly-n-divisors
rename to Lang/Mathematica/Sequence-smallest-number-with-exactly-n-divisors
diff --git a/Lang/Mathematica/Singular-value-decomposition b/Lang/Mathematica/Singular-value-decomposition
deleted file mode 120000
index 1a576b3373..0000000000
--- a/Lang/Mathematica/Singular-value-decomposition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Singular-value-decomposition/Mathematica
\ No newline at end of file
diff --git a/Lang/Mathematica/Sisyphus-sequence b/Lang/Mathematica/Sisyphus-sequence
deleted file mode 120000
index 82e0aee9dd..0000000000
--- a/Lang/Mathematica/Sisyphus-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sisyphus-sequence/Mathematica
\ No newline at end of file
diff --git a/Lang/Mathematica/Sorting-Algorithms-Circle-Sort b/Lang/Mathematica/Sorting-Algorithms-Circle-Sort
new file mode 120000
index 0000000000..9ff1fc78ae
--- /dev/null
+++ b/Lang/Mathematica/Sorting-Algorithms-Circle-Sort
@@ -0,0 +1 @@
+../../Task/Sorting-Algorithms-Circle-Sort/Mathematica
\ No newline at end of file
diff --git a/Lang/Mathematica/Sphenic-numbers b/Lang/Mathematica/Sphenic-numbers
deleted file mode 120000
index c276d09072..0000000000
--- a/Lang/Mathematica/Sphenic-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sphenic-numbers/Mathematica
\ No newline at end of file
diff --git a/Lang/Mathematica/Strassens-algorithm b/Lang/Mathematica/Strassens-algorithm
deleted file mode 120000
index c75340ee0d..0000000000
--- a/Lang/Mathematica/Strassens-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strassens-algorithm/Mathematica
\ No newline at end of file
diff --git a/Lang/Mathematica/Sudan-function b/Lang/Mathematica/Sudan-function
deleted file mode 120000
index 915d15ee53..0000000000
--- a/Lang/Mathematica/Sudan-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sudan-function/Mathematica
\ No newline at end of file
diff --git a/Lang/Mathematica/Suffixation-of-decimal-numbers b/Lang/Mathematica/Suffixation-of-decimal-numbers
deleted file mode 120000
index dd6272f891..0000000000
--- a/Lang/Mathematica/Suffixation-of-decimal-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Suffixation-of-decimal-numbers/Mathematica
\ No newline at end of file
diff --git a/Lang/Mathematica/Tonelli-Shanks-algorithm b/Lang/Mathematica/Tonelli-Shanks-algorithm
deleted file mode 120000
index 747956daa4..0000000000
--- a/Lang/Mathematica/Tonelli-Shanks-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tonelli-Shanks-algorithm/Mathematica
\ No newline at end of file
diff --git a/Lang/Mathematica/Transliterate-English-text-using-the-Greek-alphabet b/Lang/Mathematica/Transliterate-English-text-using-the-Greek-alphabet
deleted file mode 120000
index d987c7e779..0000000000
--- a/Lang/Mathematica/Transliterate-English-text-using-the-Greek-alphabet
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Transliterate-English-text-using-the-Greek-alphabet/Mathematica
\ No newline at end of file
diff --git a/Lang/Mathematica/Tropical-algebra-overloading b/Lang/Mathematica/Tropical-algebra-overloading
deleted file mode 120000
index 6a45231ead..0000000000
--- a/Lang/Mathematica/Tropical-algebra-overloading
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tropical-algebra-overloading/Mathematica
\ No newline at end of file
diff --git a/Lang/Mathematica/Vogels-approximation-method b/Lang/Mathematica/Vogels-approximation-method
deleted file mode 120000
index 2d01457a6e..0000000000
--- a/Lang/Mathematica/Vogels-approximation-method
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Vogels-approximation-method/Mathematica
\ No newline at end of file
diff --git a/Lang/Mathematica/Wagstaff-primes b/Lang/Mathematica/Wagstaff-primes
deleted file mode 120000
index 7e781a92a6..0000000000
--- a/Lang/Mathematica/Wagstaff-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Wagstaff-primes/Mathematica
\ No newline at end of file
diff --git a/Lang/Mathematica/World-Cup-group-stage b/Lang/Mathematica/World-Cup-group-stage
deleted file mode 120000
index c3a327e4ad..0000000000
--- a/Lang/Mathematica/World-Cup-group-stage
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/World-Cup-group-stage/Mathematica
\ No newline at end of file
diff --git a/Lang/Maxima/Angle-difference-between-two-bearings b/Lang/Maxima/Angle-difference-between-two-bearings
deleted file mode 120000
index b086194fa4..0000000000
--- a/Lang/Maxima/Angle-difference-between-two-bearings
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Angle-difference-between-two-bearings/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Arithmetic-derivative b/Lang/Maxima/Arithmetic-derivative
deleted file mode 120000
index b682390e8a..0000000000
--- a/Lang/Maxima/Arithmetic-derivative
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-derivative/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Array-length b/Lang/Maxima/Array-length
deleted file mode 120000
index da5c3a4dcd..0000000000
--- a/Lang/Maxima/Array-length
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Array-length/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Carmichael-3-strong-pseudoprimes b/Lang/Maxima/Carmichael-3-strong-pseudoprimes
deleted file mode 120000
index cca27bae48..0000000000
--- a/Lang/Maxima/Carmichael-3-strong-pseudoprimes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Carmichael-3-strong-pseudoprimes/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Chinese-zodiac b/Lang/Maxima/Chinese-zodiac
deleted file mode 120000
index 5fc6134cf1..0000000000
--- a/Lang/Maxima/Chinese-zodiac
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Chinese-zodiac/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Chowla-numbers b/Lang/Maxima/Chowla-numbers
deleted file mode 120000
index 4a1835dd7a..0000000000
--- a/Lang/Maxima/Chowla-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Chowla-numbers/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Conjugate-transpose b/Lang/Maxima/Conjugate-transpose
deleted file mode 120000
index f1ca6a05e7..0000000000
--- a/Lang/Maxima/Conjugate-transpose
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Conjugate-transpose/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Continued-fraction-Arithmetic-Construct-from-rational-number b/Lang/Maxima/Continued-fraction-Arithmetic-Construct-from-rational-number
deleted file mode 120000
index 29d02a5a5d..0000000000
--- a/Lang/Maxima/Continued-fraction-Arithmetic-Construct-from-rational-number
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Continued-fraction-Arithmetic-Construct-from-rational-number/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Delete-a-file b/Lang/Maxima/Delete-a-file
deleted file mode 120000
index 9515074358..0000000000
--- a/Lang/Maxima/Delete-a-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Delete-a-file/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Diversity-prediction-theorem b/Lang/Maxima/Diversity-prediction-theorem
deleted file mode 120000
index 5f6277f150..0000000000
--- a/Lang/Maxima/Diversity-prediction-theorem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Diversity-prediction-theorem/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Doomsday-rule b/Lang/Maxima/Doomsday-rule
deleted file mode 120000
index e92ce2f9d2..0000000000
--- a/Lang/Maxima/Doomsday-rule
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Doomsday-rule/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Exponentiation-order b/Lang/Maxima/Exponentiation-order
deleted file mode 120000
index 3914b83865..0000000000
--- a/Lang/Maxima/Exponentiation-order
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Exponentiation-order/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Exponentiation-with-infix-operators-in-or-operating-on-the-base b/Lang/Maxima/Exponentiation-with-infix-operators-in-or-operating-on-the-base
deleted file mode 120000
index 571c836707..0000000000
--- a/Lang/Maxima/Exponentiation-with-infix-operators-in-or-operating-on-the-base
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Exponentiation-with-infix-operators-in-or-operating-on-the-base/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Fermat-numbers b/Lang/Maxima/Fermat-numbers
deleted file mode 120000
index 705c8192a4..0000000000
--- a/Lang/Maxima/Fermat-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fermat-numbers/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/General-FizzBuzz b/Lang/Maxima/General-FizzBuzz
deleted file mode 120000
index e422ed53f2..0000000000
--- a/Lang/Maxima/General-FizzBuzz
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/General-FizzBuzz/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Guess-the-number b/Lang/Maxima/Guess-the-number
deleted file mode 120000
index 386c9c38ac..0000000000
--- a/Lang/Maxima/Guess-the-number
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Guess-the-number/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Guess-the-number-With-feedback b/Lang/Maxima/Guess-the-number-With-feedback
deleted file mode 120000
index 8b04db909f..0000000000
--- a/Lang/Maxima/Guess-the-number-With-feedback
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Guess-the-number-With-feedback/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Hash-from-two-arrays b/Lang/Maxima/Hash-from-two-arrays
deleted file mode 120000
index b59b47ec09..0000000000
--- a/Lang/Maxima/Hash-from-two-arrays
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hash-from-two-arrays/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Humble-numbers b/Lang/Maxima/Humble-numbers
deleted file mode 120000
index d093fa7dd0..0000000000
--- a/Lang/Maxima/Humble-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Humble-numbers/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Jacobi-symbol b/Lang/Maxima/Jacobi-symbol
deleted file mode 120000
index 73e8a14256..0000000000
--- a/Lang/Maxima/Jacobi-symbol
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jacobi-symbol/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/List-comprehensions b/Lang/Maxima/List-comprehensions
deleted file mode 120000
index de6043c392..0000000000
--- a/Lang/Maxima/List-comprehensions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/List-comprehensions/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Loops-N-plus-one-half b/Lang/Maxima/Loops-N-plus-one-half
deleted file mode 120000
index 8fb12a3bb8..0000000000
--- a/Lang/Maxima/Loops-N-plus-one-half
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-N-plus-one-half/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Loops-With-multiple-ranges b/Lang/Maxima/Loops-With-multiple-ranges
deleted file mode 120000
index 0d4ccad640..0000000000
--- a/Lang/Maxima/Loops-With-multiple-ranges
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-With-multiple-ranges/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Magic-constant b/Lang/Maxima/Magic-constant
deleted file mode 120000
index 406aae118d..0000000000
--- a/Lang/Maxima/Magic-constant
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Magic-constant/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Meissel-Mertens-constant b/Lang/Maxima/Meissel-Mertens-constant
new file mode 120000
index 0000000000..ea7cea2fda
--- /dev/null
+++ b/Lang/Maxima/Meissel-Mertens-constant
@@ -0,0 +1 @@
+../../Task/Meissel-Mertens-constant/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Miller-Rabin-primality-test b/Lang/Maxima/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..331b953779
--- /dev/null
+++ b/Lang/Maxima/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Nested-function b/Lang/Maxima/Nested-function
deleted file mode 120000
index 14e0a5c6e4..0000000000
--- a/Lang/Maxima/Nested-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nested-function/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Nth b/Lang/Maxima/Nth
deleted file mode 120000
index 76e7cadf39..0000000000
--- a/Lang/Maxima/Nth
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nth/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Old-lady-swallowed-a-fly b/Lang/Maxima/Old-lady-swallowed-a-fly
deleted file mode 120000
index 7f7aab63d3..0000000000
--- a/Lang/Maxima/Old-lady-swallowed-a-fly
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Old-lady-swallowed-a-fly/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Pernicious-numbers b/Lang/Maxima/Pernicious-numbers
deleted file mode 120000
index 1062304d91..0000000000
--- a/Lang/Maxima/Pernicious-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pernicious-numbers/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Phrase-reversals b/Lang/Maxima/Phrase-reversals
deleted file mode 120000
index e9f3fbc16e..0000000000
--- a/Lang/Maxima/Phrase-reversals
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Phrase-reversals/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Population-count b/Lang/Maxima/Population-count
deleted file mode 120000
index ae8e574cce..0000000000
--- a/Lang/Maxima/Population-count
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Population-count/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Proper-divisors b/Lang/Maxima/Proper-divisors
deleted file mode 120000
index d541bf6c4d..0000000000
--- a/Lang/Maxima/Proper-divisors
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Proper-divisors/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Pseudo-random-numbers-PCG32 b/Lang/Maxima/Pseudo-random-numbers-PCG32
deleted file mode 120000
index 6feec056ab..0000000000
--- a/Lang/Maxima/Pseudo-random-numbers-PCG32
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pseudo-random-numbers-PCG32/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Pseudo-random-numbers-Splitmix64 b/Lang/Maxima/Pseudo-random-numbers-Splitmix64
deleted file mode 120000
index c67133774e..0000000000
--- a/Lang/Maxima/Pseudo-random-numbers-Splitmix64
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pseudo-random-numbers-Splitmix64/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Pseudo-random-numbers-Xorshift-star b/Lang/Maxima/Pseudo-random-numbers-Xorshift-star
deleted file mode 120000
index 601269aa2d..0000000000
--- a/Lang/Maxima/Pseudo-random-numbers-Xorshift-star
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pseudo-random-numbers-Xorshift-star/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Real-constants-and-functions b/Lang/Maxima/Real-constants-and-functions
deleted file mode 120000
index 5465f4ddf0..0000000000
--- a/Lang/Maxima/Real-constants-and-functions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Real-constants-and-functions/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Regular-expressions b/Lang/Maxima/Regular-expressions
deleted file mode 120000
index ad80bc2114..0000000000
--- a/Lang/Maxima/Regular-expressions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Regular-expressions/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Rename-a-file b/Lang/Maxima/Rename-a-file
deleted file mode 120000
index 875c72e05d..0000000000
--- a/Lang/Maxima/Rename-a-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Rename-a-file/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Repeat b/Lang/Maxima/Repeat
deleted file mode 120000
index 69cf6bc4f0..0000000000
--- a/Lang/Maxima/Repeat
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Repeat/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Repunit-primes b/Lang/Maxima/Repunit-primes
deleted file mode 120000
index fb23d38994..0000000000
--- a/Lang/Maxima/Repunit-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Repunit-primes/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Safe-primes-and-unsafe-primes b/Lang/Maxima/Safe-primes-and-unsafe-primes
deleted file mode 120000
index 3ba21ce950..0000000000
--- a/Lang/Maxima/Safe-primes-and-unsafe-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Safe-primes-and-unsafe-primes/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Sequence-of-primorial-primes b/Lang/Maxima/Sequence-of-primorial-primes
deleted file mode 120000
index 987ddfd5b4..0000000000
--- a/Lang/Maxima/Sequence-of-primorial-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sequence-of-primorial-primes/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors b/Lang/Maxima/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
similarity index 100%
rename from Lang/Maxima/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors
rename to Lang/Maxima/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
diff --git a/Lang/Maxima/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/Maxima/Sequence:-smallest-number-with-exactly-n-divisors
deleted file mode 120000
index 2edcd184a6..0000000000
--- a/Lang/Maxima/Sequence:-smallest-number-with-exactly-n-divisors
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sequence:-smallest-number-with-exactly-n-divisors/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Shoelace-formula-for-polygonal-area b/Lang/Maxima/Shoelace-formula-for-polygonal-area
deleted file mode 120000
index 4b2db308ce..0000000000
--- a/Lang/Maxima/Shoelace-formula-for-polygonal-area
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Shoelace-formula-for-polygonal-area/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Sorting-algorithms-Counting-sort b/Lang/Maxima/Sorting-algorithms-Counting-sort
deleted file mode 120000
index 3b3f2f0c39..0000000000
--- a/Lang/Maxima/Sorting-algorithms-Counting-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Counting-sort/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Sorting-algorithms-Stooge-sort b/Lang/Maxima/Sorting-algorithms-Stooge-sort
deleted file mode 120000
index df60525c6e..0000000000
--- a/Lang/Maxima/Sorting-algorithms-Stooge-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Stooge-sort/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Statistics-Basic b/Lang/Maxima/Statistics-Basic
deleted file mode 120000
index 3aa4fcf62d..0000000000
--- a/Lang/Maxima/Statistics-Basic
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Statistics-Basic/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Stirling-numbers-of-the-first-kind b/Lang/Maxima/Stirling-numbers-of-the-first-kind
deleted file mode 120000
index 00938d2052..0000000000
--- a/Lang/Maxima/Stirling-numbers-of-the-first-kind
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Stirling-numbers-of-the-first-kind/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Stirling-numbers-of-the-second-kind b/Lang/Maxima/Stirling-numbers-of-the-second-kind
deleted file mode 120000
index 3b2dde9483..0000000000
--- a/Lang/Maxima/Stirling-numbers-of-the-second-kind
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Stirling-numbers-of-the-second-kind/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Substring-Top-and-tail b/Lang/Maxima/Substring-Top-and-tail
deleted file mode 120000
index 6897859615..0000000000
--- a/Lang/Maxima/Substring-Top-and-tail
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Substring-Top-and-tail/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Summarize-primes b/Lang/Maxima/Summarize-primes
deleted file mode 120000
index d202f40be0..0000000000
--- a/Lang/Maxima/Summarize-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Summarize-primes/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Superellipse b/Lang/Maxima/Superellipse
deleted file mode 120000
index 4ecd2801c8..0000000000
--- a/Lang/Maxima/Superellipse
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Superellipse/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Tau-function b/Lang/Maxima/Tau-function
deleted file mode 120000
index 40243f7b1e..0000000000
--- a/Lang/Maxima/Tau-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tau-function/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Tau-number b/Lang/Maxima/Tau-number
deleted file mode 120000
index 053b7e480c..0000000000
--- a/Lang/Maxima/Tau-number
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tau-number/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/The-Twelve-Days-of-Christmas b/Lang/Maxima/The-Twelve-Days-of-Christmas
deleted file mode 120000
index dd36e626f6..0000000000
--- a/Lang/Maxima/The-Twelve-Days-of-Christmas
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/The-Twelve-Days-of-Christmas/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Topic-variable b/Lang/Maxima/Topic-variable
deleted file mode 120000
index e2a8f808d7..0000000000
--- a/Lang/Maxima/Topic-variable
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Topic-variable/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Towers-of-Hanoi b/Lang/Maxima/Towers-of-Hanoi
deleted file mode 120000
index 40963f2edb..0000000000
--- a/Lang/Maxima/Towers-of-Hanoi
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Towers-of-Hanoi/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Unicode-variable-names b/Lang/Maxima/Unicode-variable-names
deleted file mode 120000
index 34b765c308..0000000000
--- a/Lang/Maxima/Unicode-variable-names
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Unicode-variable-names/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Variable-declaration-reset b/Lang/Maxima/Variable-declaration-reset
deleted file mode 120000
index 127cccc10e..0000000000
--- a/Lang/Maxima/Variable-declaration-reset
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Variable-declaration-reset/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Vector b/Lang/Maxima/Vector
deleted file mode 120000
index 8d6cbd46ca..0000000000
--- a/Lang/Maxima/Vector
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Vector/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Wagstaff-primes b/Lang/Maxima/Wagstaff-primes
deleted file mode 120000
index f74c4ee3f2..0000000000
--- a/Lang/Maxima/Wagstaff-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Wagstaff-primes/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Wieferich-primes b/Lang/Maxima/Wieferich-primes
deleted file mode 120000
index 8ad2bd1a72..0000000000
--- a/Lang/Maxima/Wieferich-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Wieferich-primes/Maxima
\ No newline at end of file
diff --git a/Lang/Maxima/Wilson-primes-of-order-n b/Lang/Maxima/Wilson-primes-of-order-n
deleted file mode 120000
index 83b27ec734..0000000000
--- a/Lang/Maxima/Wilson-primes-of-order-n
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Wilson-primes-of-order-n/Maxima
\ No newline at end of file
diff --git a/Lang/MelonBasic/Empty-program b/Lang/MelonBasic/Empty-program
new file mode 120000
index 0000000000..8fb3b62c73
--- /dev/null
+++ b/Lang/MelonBasic/Empty-program
@@ -0,0 +1 @@
+../../Task/Empty-program/MelonBasic
\ No newline at end of file
diff --git a/Lang/Mercury/Miller-Rabin-primality-test b/Lang/Mercury/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..6022def69b
--- /dev/null
+++ b/Lang/Mercury/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/Mercury
\ No newline at end of file
diff --git a/Lang/Mercury/Quaternion-type b/Lang/Mercury/Quaternion-type
new file mode 120000
index 0000000000..34fd045795
--- /dev/null
+++ b/Lang/Mercury/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/Mercury
\ No newline at end of file
diff --git a/Lang/Mia/Loops-While b/Lang/Mia/Loops-While
deleted file mode 120000
index acad4e8591..0000000000
--- a/Lang/Mia/Loops-While
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-While/Mia
\ No newline at end of file
diff --git a/Lang/Microsoft-Small-Basic/A+B b/Lang/Microsoft-Small-Basic/A+B
deleted file mode 120000
index f3a4fe9f2e..0000000000
--- a/Lang/Microsoft-Small-Basic/A+B
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/A+B/Microsoft-Small-Basic
\ No newline at end of file
diff --git a/Lang/Microsoft-Small-Basic/Array-length b/Lang/Microsoft-Small-Basic/Array-length
deleted file mode 120000
index 5cb5fd80e3..0000000000
--- a/Lang/Microsoft-Small-Basic/Array-length
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Array-length/Microsoft-Small-Basic
\ No newline at end of file
diff --git a/Lang/Microsoft-Small-Basic/Halt-and-catch-fire b/Lang/Microsoft-Small-Basic/Halt-and-catch-fire
deleted file mode 120000
index 85dd00fc29..0000000000
--- a/Lang/Microsoft-Small-Basic/Halt-and-catch-fire
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Halt-and-catch-fire/Microsoft-Small-Basic
\ No newline at end of file
diff --git a/Lang/Microsoft-Small-Basic/Hello-world-Graphical b/Lang/Microsoft-Small-Basic/Hello-world-Graphical
deleted file mode 120000
index e9bfd8a7e0..0000000000
--- a/Lang/Microsoft-Small-Basic/Hello-world-Graphical
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Graphical/Microsoft-Small-Basic
\ No newline at end of file
diff --git a/Lang/Microsoft-Small-Basic/I-before-E-except-after-C b/Lang/Microsoft-Small-Basic/I-before-E-except-after-C
deleted file mode 120000
index e009793925..0000000000
--- a/Lang/Microsoft-Small-Basic/I-before-E-except-after-C
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/I-before-E-except-after-C/Microsoft-Small-Basic
\ No newline at end of file
diff --git a/Lang/Microsoft-Small-Basic/Jump-anywhere b/Lang/Microsoft-Small-Basic/Jump-anywhere
deleted file mode 120000
index ef9c52343e..0000000000
--- a/Lang/Microsoft-Small-Basic/Jump-anywhere
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jump-anywhere/Microsoft-Small-Basic
\ No newline at end of file
diff --git a/Lang/Microsoft-Small-Basic/Program-termination b/Lang/Microsoft-Small-Basic/Program-termination
deleted file mode 120000
index ecf78f2fdc..0000000000
--- a/Lang/Microsoft-Small-Basic/Program-termination
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Program-termination/Microsoft-Small-Basic
\ No newline at end of file
diff --git a/Lang/Microsoft-Small-Basic/RPG-attributes-generator b/Lang/Microsoft-Small-Basic/RPG-attributes-generator
deleted file mode 120000
index b4096f1ae1..0000000000
--- a/Lang/Microsoft-Small-Basic/RPG-attributes-generator
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/RPG-attributes-generator/Microsoft-Small-Basic
\ No newline at end of file
diff --git a/Lang/Microsoft-Small-Basic/Simple-windowed-application b/Lang/Microsoft-Small-Basic/Simple-windowed-application
deleted file mode 120000
index 372561cd34..0000000000
--- a/Lang/Microsoft-Small-Basic/Simple-windowed-application
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Simple-windowed-application/Microsoft-Small-Basic
\ No newline at end of file
diff --git a/Lang/Microsoft-Small-Basic/Substring b/Lang/Microsoft-Small-Basic/Substring
deleted file mode 120000
index 187fdf47c4..0000000000
--- a/Lang/Microsoft-Small-Basic/Substring
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Substring/Microsoft-Small-Basic
\ No newline at end of file
diff --git a/Lang/Microsoft-Small-Basic/The-Name-Game b/Lang/Microsoft-Small-Basic/The-Name-Game
deleted file mode 120000
index 904bd0e9c8..0000000000
--- a/Lang/Microsoft-Small-Basic/The-Name-Game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/The-Name-Game/Microsoft-Small-Basic
\ No newline at end of file
diff --git a/Lang/Microsoft-Small-Basic/Transliterate-English-text-using-the-Greek-alphabet b/Lang/Microsoft-Small-Basic/Transliterate-English-text-using-the-Greek-alphabet
deleted file mode 120000
index 5d28e3f2bb..0000000000
--- a/Lang/Microsoft-Small-Basic/Transliterate-English-text-using-the-Greek-alphabet
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Transliterate-English-text-using-the-Greek-alphabet/Microsoft-Small-Basic
\ No newline at end of file
diff --git a/Lang/Microsoft-Small-Basic/Variables b/Lang/Microsoft-Small-Basic/Variables
deleted file mode 120000
index 3ad596872d..0000000000
--- a/Lang/Microsoft-Small-Basic/Variables
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Variables/Microsoft-Small-Basic
\ No newline at end of file
diff --git a/Lang/Microsoft-Small-Basic/Window-creation b/Lang/Microsoft-Small-Basic/Window-creation
deleted file mode 120000
index 31935ba19c..0000000000
--- a/Lang/Microsoft-Small-Basic/Window-creation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Window-creation/Microsoft-Small-Basic
\ No newline at end of file
diff --git a/Lang/MiniScript/Apply-a-callback-to-an-array b/Lang/MiniScript/Apply-a-callback-to-an-array
deleted file mode 120000
index 9f2b7eb3c8..0000000000
--- a/Lang/MiniScript/Apply-a-callback-to-an-array
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Apply-a-callback-to-an-array/MiniScript
\ No newline at end of file
diff --git a/Lang/MiniScript/Count-in-factors b/Lang/MiniScript/Count-in-factors
deleted file mode 120000
index 7a0ecccaf4..0000000000
--- a/Lang/MiniScript/Count-in-factors
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Count-in-factors/MiniScript
\ No newline at end of file
diff --git a/Lang/MiniScript/Empty-program b/Lang/MiniScript/Empty-program
new file mode 120000
index 0000000000..60da45f9ae
--- /dev/null
+++ b/Lang/MiniScript/Empty-program
@@ -0,0 +1 @@
+../../Task/Empty-program/MiniScript
\ No newline at end of file
diff --git a/Lang/MiniScript/Haversine-formula b/Lang/MiniScript/Haversine-formula
deleted file mode 120000
index 0bba2877d8..0000000000
--- a/Lang/MiniScript/Haversine-formula
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Haversine-formula/MiniScript
\ No newline at end of file
diff --git a/Lang/MiniScript/Read-a-file-line-by-line b/Lang/MiniScript/Read-a-file-line-by-line
deleted file mode 120000
index 7064fcf098..0000000000
--- a/Lang/MiniScript/Read-a-file-line-by-line
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Read-a-file-line-by-line/MiniScript
\ No newline at end of file
diff --git a/Lang/MiniScript/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors b/Lang/MiniScript/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
similarity index 100%
rename from Lang/MiniScript/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors
rename to Lang/MiniScript/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
diff --git a/Lang/MiniScript/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/MiniScript/Sequence-smallest-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/MiniScript/Sequence:-smallest-number-with-exactly-n-divisors
rename to Lang/MiniScript/Sequence-smallest-number-with-exactly-n-divisors
diff --git a/Lang/MiniScript/Sleeping-Beauty-problem b/Lang/MiniScript/Sleeping-Beauty-problem
deleted file mode 120000
index feb4e597cb..0000000000
--- a/Lang/MiniScript/Sleeping-Beauty-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sleeping-Beauty-problem/MiniScript
\ No newline at end of file
diff --git a/Lang/Minimal-BASIC/Abundant-deficient-and-perfect-number-classifications b/Lang/Minimal-BASIC/Abundant-deficient-and-perfect-number-classifications
deleted file mode 120000
index ca944f9e1d..0000000000
--- a/Lang/Minimal-BASIC/Abundant-deficient-and-perfect-number-classifications
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abundant-deficient-and-perfect-number-classifications/Minimal-BASIC
\ No newline at end of file
diff --git a/Lang/Minimal-BASIC/Evaluate-binomial-coefficients b/Lang/Minimal-BASIC/Evaluate-binomial-coefficients
deleted file mode 120000
index 6ad0769264..0000000000
--- a/Lang/Minimal-BASIC/Evaluate-binomial-coefficients
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Evaluate-binomial-coefficients/Minimal-BASIC
\ No newline at end of file
diff --git a/Lang/Minimal-BASIC/Jensens-Device b/Lang/Minimal-BASIC/Jensens-Device
deleted file mode 120000
index f729ff931e..0000000000
--- a/Lang/Minimal-BASIC/Jensens-Device
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jensens-Device/Minimal-BASIC
\ No newline at end of file
diff --git a/Lang/Minimal-BASIC/Leonardo-numbers b/Lang/Minimal-BASIC/Leonardo-numbers
deleted file mode 120000
index c45ebe1ebc..0000000000
--- a/Lang/Minimal-BASIC/Leonardo-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Leonardo-numbers/Minimal-BASIC
\ No newline at end of file
diff --git a/Lang/Minimal-BASIC/Loops-Infinite b/Lang/Minimal-BASIC/Loops-Infinite
deleted file mode 120000
index a936b362aa..0000000000
--- a/Lang/Minimal-BASIC/Loops-Infinite
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Infinite/Minimal-BASIC
\ No newline at end of file
diff --git a/Lang/Minimal-BASIC/Monty-Hall-problem b/Lang/Minimal-BASIC/Monty-Hall-problem
deleted file mode 120000
index e997b4d558..0000000000
--- a/Lang/Minimal-BASIC/Monty-Hall-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Monty-Hall-problem/Minimal-BASIC
\ No newline at end of file
diff --git a/Lang/Minimal-BASIC/Pancake-numbers b/Lang/Minimal-BASIC/Pancake-numbers
deleted file mode 120000
index 5141be0a11..0000000000
--- a/Lang/Minimal-BASIC/Pancake-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pancake-numbers/Minimal-BASIC
\ No newline at end of file
diff --git a/Lang/Minimal-BASIC/Sum-of-a-series b/Lang/Minimal-BASIC/Sum-of-a-series
deleted file mode 120000
index b515c8004d..0000000000
--- a/Lang/Minimal-BASIC/Sum-of-a-series
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sum-of-a-series/Minimal-BASIC
\ No newline at end of file
diff --git a/Lang/Miranda/Align-columns b/Lang/Miranda/Align-columns
deleted file mode 120000
index ca88577a8d..0000000000
--- a/Lang/Miranda/Align-columns
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Align-columns/Miranda
\ No newline at end of file
diff --git a/Lang/Miranda/Arithmetic-derivative b/Lang/Miranda/Arithmetic-derivative
deleted file mode 120000
index 91683ddf96..0000000000
--- a/Lang/Miranda/Arithmetic-derivative
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-derivative/Miranda
\ No newline at end of file
diff --git a/Lang/Miranda/Bell-numbers b/Lang/Miranda/Bell-numbers
deleted file mode 120000
index 6635e596b0..0000000000
--- a/Lang/Miranda/Bell-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bell-numbers/Miranda
\ No newline at end of file
diff --git a/Lang/Miranda/Combinations b/Lang/Miranda/Combinations
deleted file mode 120000
index b252f73176..0000000000
--- a/Lang/Miranda/Combinations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Combinations/Miranda
\ No newline at end of file
diff --git a/Lang/Miranda/Display-a-linear-combination b/Lang/Miranda/Display-a-linear-combination
deleted file mode 120000
index 38a961bb6a..0000000000
--- a/Lang/Miranda/Display-a-linear-combination
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Display-a-linear-combination/Miranda
\ No newline at end of file
diff --git a/Lang/Miranda/Doomsday-rule b/Lang/Miranda/Doomsday-rule
deleted file mode 120000
index 91e25767d0..0000000000
--- a/Lang/Miranda/Doomsday-rule
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Doomsday-rule/Miranda
\ No newline at end of file
diff --git a/Lang/Miranda/Execute-Brain- b/Lang/Miranda/Execute-Brain-
deleted file mode 120000
index e3f7d58819..0000000000
--- a/Lang/Miranda/Execute-Brain-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Execute-Brain-/Miranda
\ No newline at end of file
diff --git a/Lang/Miranda/Fractran b/Lang/Miranda/Fractran
deleted file mode 120000
index 528ab3ee2e..0000000000
--- a/Lang/Miranda/Fractran
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fractran/Miranda
\ No newline at end of file
diff --git a/Lang/Miranda/Hailstone-sequence b/Lang/Miranda/Hailstone-sequence
deleted file mode 120000
index 1f03fbb737..0000000000
--- a/Lang/Miranda/Hailstone-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hailstone-sequence/Miranda
\ No newline at end of file
diff --git a/Lang/Miranda/Isqrt-integer-square-root-of-X b/Lang/Miranda/Isqrt-integer-square-root-of-X
deleted file mode 120000
index 4b479d99e5..0000000000
--- a/Lang/Miranda/Isqrt-integer-square-root-of-X
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Isqrt-integer-square-root-of-X/Miranda
\ No newline at end of file
diff --git a/Lang/Miranda/Leonardo-numbers b/Lang/Miranda/Leonardo-numbers
deleted file mode 120000
index 6f062a014a..0000000000
--- a/Lang/Miranda/Leonardo-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Leonardo-numbers/Miranda
\ No newline at end of file
diff --git a/Lang/Miranda/Loops-Infinite b/Lang/Miranda/Loops-Infinite
deleted file mode 120000
index 8845df4b78..0000000000
--- a/Lang/Miranda/Loops-Infinite
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Infinite/Miranda
\ No newline at end of file
diff --git a/Lang/Miranda/Modular-exponentiation b/Lang/Miranda/Modular-exponentiation
deleted file mode 120000
index 876dc45d07..0000000000
--- a/Lang/Miranda/Modular-exponentiation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Modular-exponentiation/Miranda
\ No newline at end of file
diff --git a/Lang/Miranda/Move-to-front-algorithm b/Lang/Miranda/Move-to-front-algorithm
deleted file mode 120000
index ed5becbabe..0000000000
--- a/Lang/Miranda/Move-to-front-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Move-to-front-algorithm/Miranda
\ No newline at end of file
diff --git a/Lang/Miranda/Mutual-recursion b/Lang/Miranda/Mutual-recursion
deleted file mode 120000
index 42af709518..0000000000
--- a/Lang/Miranda/Mutual-recursion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Mutual-recursion/Miranda
\ No newline at end of file
diff --git a/Lang/Miranda/Old-lady-swallowed-a-fly b/Lang/Miranda/Old-lady-swallowed-a-fly
deleted file mode 120000
index 91f1f84abb..0000000000
--- a/Lang/Miranda/Old-lady-swallowed-a-fly
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Old-lady-swallowed-a-fly/Miranda
\ No newline at end of file
diff --git a/Lang/Miranda/Partition-an-integer-x-into-n-primes b/Lang/Miranda/Partition-an-integer-x-into-n-primes
deleted file mode 120000
index 0d73af13aa..0000000000
--- a/Lang/Miranda/Partition-an-integer-x-into-n-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Partition-an-integer-x-into-n-primes/Miranda
\ No newline at end of file
diff --git a/Lang/Miranda/Run-length-encoding b/Lang/Miranda/Run-length-encoding
deleted file mode 120000
index e0fd07015b..0000000000
--- a/Lang/Miranda/Run-length-encoding
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Run-length-encoding/Miranda
\ No newline at end of file
diff --git a/Lang/Miranda/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/Miranda/Sequence-smallest-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/Miranda/Sequence:-smallest-number-with-exactly-n-divisors
rename to Lang/Miranda/Sequence-smallest-number-with-exactly-n-divisors
diff --git a/Lang/Miranda/Sudan-function b/Lang/Miranda/Sudan-function
deleted file mode 120000
index 30973d5427..0000000000
--- a/Lang/Miranda/Sudan-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sudan-function/Miranda
\ No newline at end of file
diff --git a/Lang/Miranda/Super-d-numbers b/Lang/Miranda/Super-d-numbers
deleted file mode 120000
index d99b0c174b..0000000000
--- a/Lang/Miranda/Super-d-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Super-d-numbers/Miranda
\ No newline at end of file
diff --git a/Lang/Miranda/Zeckendorf-number-representation b/Lang/Miranda/Zeckendorf-number-representation
deleted file mode 120000
index 8a316c3af1..0000000000
--- a/Lang/Miranda/Zeckendorf-number-representation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Zeckendorf-number-representation/Miranda
\ No newline at end of file
diff --git a/Lang/Mn/00-LANG.txt b/Lang/Mn/00-LANG.txt
deleted file mode 100644
index 0fd90d2c3a..0000000000
--- a/Lang/Mn/00-LANG.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-{{stub}}{{language|mn}}
-mn is a minimalistic, concatenative, functional stack language. It is a very simple subset of [[min]].
-
-==Links==
-*[https://h3rald.com/mn/Mn_DeveloperGuide.htm Learn mn]
-
-{{Language programming paradigm|Concatenative}}
\ No newline at end of file
diff --git a/Lang/Mn/00-META.yaml b/Lang/Mn/00-META.yaml
deleted file mode 100644
index f79f1602c3..0000000000
--- a/Lang/Mn/00-META.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-from: http://rosettacode.org/wiki/Category:Mn
diff --git a/Lang/Mn/Factorial b/Lang/Mn/Factorial
deleted file mode 120000
index 4c7a3c3b43..0000000000
--- a/Lang/Mn/Factorial
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factorial/Mn
\ No newline at end of file
diff --git a/Lang/Mn/Loops-While b/Lang/Mn/Loops-While
deleted file mode 120000
index 9e10aebd40..0000000000
--- a/Lang/Mn/Loops-While
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-While/Mn
\ No newline at end of file
diff --git a/Lang/Modula-2/00-LANG.txt b/Lang/Modula-2/00-LANG.txt
index 62faf6e14c..854aa29a1a 100644
--- a/Lang/Modula-2/00-LANG.txt
+++ b/Lang/Modula-2/00-LANG.txt
@@ -26,11 +26,4 @@ Modula-2 was designed by Niklaus Wirth at ETH Zurich as a systems implementation
* [http://sourceforge.net/projects/schwarzerkaffee Schwarzer Kaffee]
==Modula-2 on IRC==
-* [irc://irc.freenode.net/#modula-2 irc://irc.freenode.net/#modula-2]
-
-===See also===
-* [[Modula-3]]
-* [[Oberon-07]]
-* [[Oberon-2]]
-* [[Component Pascal]]
-* [[Zonnon]]
\ No newline at end of file
+* [irc://irc.freenode.net/#modula-2 irc://irc.freenode.net/#modula-2]
\ No newline at end of file
diff --git a/Lang/Modula-2/AKS-test-for-primes b/Lang/Modula-2/AKS-test-for-primes
deleted file mode 120000
index f86ed2a172..0000000000
--- a/Lang/Modula-2/AKS-test-for-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/AKS-test-for-primes/Modula-2
\ No newline at end of file
diff --git a/Lang/Modula-2/Abundant-odd-numbers b/Lang/Modula-2/Abundant-odd-numbers
deleted file mode 120000
index acae176170..0000000000
--- a/Lang/Modula-2/Abundant-odd-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abundant-odd-numbers/Modula-2
\ No newline at end of file
diff --git a/Lang/Modula-2/Cistercian-numerals b/Lang/Modula-2/Cistercian-numerals
deleted file mode 120000
index 5da4e51fc7..0000000000
--- a/Lang/Modula-2/Cistercian-numerals
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cistercian-numerals/Modula-2
\ No newline at end of file
diff --git a/Lang/Modula-2/Cumulative-standard-deviation b/Lang/Modula-2/Cumulative-standard-deviation
deleted file mode 120000
index 49f430ac8e..0000000000
--- a/Lang/Modula-2/Cumulative-standard-deviation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cumulative-standard-deviation/Modula-2
\ No newline at end of file
diff --git a/Lang/Modula-2/Day-of-the-week b/Lang/Modula-2/Day-of-the-week
deleted file mode 120000
index 626da93e5e..0000000000
--- a/Lang/Modula-2/Day-of-the-week
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Day-of-the-week/Modula-2
\ No newline at end of file
diff --git a/Lang/Modula-2/Diversity-prediction-theorem b/Lang/Modula-2/Diversity-prediction-theorem
deleted file mode 120000
index c351696cc1..0000000000
--- a/Lang/Modula-2/Diversity-prediction-theorem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Diversity-prediction-theorem/Modula-2
\ No newline at end of file
diff --git a/Lang/Modula-2/Dutch-national-flag-problem b/Lang/Modula-2/Dutch-national-flag-problem
deleted file mode 120000
index b6400fd8d9..0000000000
--- a/Lang/Modula-2/Dutch-national-flag-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dutch-national-flag-problem/Modula-2
\ No newline at end of file
diff --git a/Lang/Modula-2/Equilibrium-index b/Lang/Modula-2/Equilibrium-index
deleted file mode 120000
index 434b864e3f..0000000000
--- a/Lang/Modula-2/Equilibrium-index
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Equilibrium-index/Modula-2
\ No newline at end of file
diff --git a/Lang/Modula-2/Factors-of-an-integer b/Lang/Modula-2/Factors-of-an-integer
deleted file mode 120000
index 19271a7965..0000000000
--- a/Lang/Modula-2/Factors-of-an-integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factors-of-an-integer/Modula-2
\ No newline at end of file
diff --git a/Lang/Modula-2/Gamma-function b/Lang/Modula-2/Gamma-function
deleted file mode 120000
index f14cc894e2..0000000000
--- a/Lang/Modula-2/Gamma-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Gamma-function/Modula-2
\ No newline at end of file
diff --git a/Lang/Modula-2/Generate-lower-case-ASCII-alphabet b/Lang/Modula-2/Generate-lower-case-ASCII-alphabet
deleted file mode 120000
index 94aba1f8a9..0000000000
--- a/Lang/Modula-2/Generate-lower-case-ASCII-alphabet
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Generate-lower-case-ASCII-alphabet/Modula-2
\ No newline at end of file
diff --git a/Lang/Modula-2/Gray-code b/Lang/Modula-2/Gray-code
deleted file mode 120000
index 8cb45ff695..0000000000
--- a/Lang/Modula-2/Gray-code
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Gray-code/Modula-2
\ No newline at end of file
diff --git a/Lang/Modula-2/Luhn-test-of-credit-card-numbers b/Lang/Modula-2/Luhn-test-of-credit-card-numbers
deleted file mode 120000
index 7ff802d85c..0000000000
--- a/Lang/Modula-2/Luhn-test-of-credit-card-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Luhn-test-of-credit-card-numbers/Modula-2
\ No newline at end of file
diff --git a/Lang/Modula-2/M-bius-function b/Lang/Modula-2/M-bius-function
deleted file mode 120000
index e2d4a4a9b1..0000000000
--- a/Lang/Modula-2/M-bius-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/M-bius-function/Modula-2
\ No newline at end of file
diff --git a/Lang/Modula-2/Magic-constant b/Lang/Modula-2/Magic-constant
deleted file mode 120000
index d6cf44baf4..0000000000
--- a/Lang/Modula-2/Magic-constant
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Magic-constant/Modula-2
\ No newline at end of file
diff --git a/Lang/Modula-2/Map-range b/Lang/Modula-2/Map-range
deleted file mode 120000
index d2da488e09..0000000000
--- a/Lang/Modula-2/Map-range
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Map-range/Modula-2
\ No newline at end of file
diff --git a/Lang/Modula-2/Mayan-numerals b/Lang/Modula-2/Mayan-numerals
deleted file mode 120000
index 68f34cbb07..0000000000
--- a/Lang/Modula-2/Mayan-numerals
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Mayan-numerals/Modula-2
\ No newline at end of file
diff --git a/Lang/Modula-2/Monty-Hall-problem b/Lang/Modula-2/Monty-Hall-problem
deleted file mode 120000
index 9ad6c8767a..0000000000
--- a/Lang/Modula-2/Monty-Hall-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Monty-Hall-problem/Modula-2
\ No newline at end of file
diff --git a/Lang/Modula-2/Multifactorial b/Lang/Modula-2/Multifactorial
deleted file mode 120000
index ba5a38f5d3..0000000000
--- a/Lang/Modula-2/Multifactorial
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Multifactorial/Modula-2
\ No newline at end of file
diff --git a/Lang/Modula-2/Nth-root b/Lang/Modula-2/Nth-root
deleted file mode 120000
index 0efaa69472..0000000000
--- a/Lang/Modula-2/Nth-root
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nth-root/Modula-2
\ No newline at end of file
diff --git a/Lang/Modula-2/Periodic-table b/Lang/Modula-2/Periodic-table
deleted file mode 120000
index 20953bda9a..0000000000
--- a/Lang/Modula-2/Periodic-table
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Periodic-table/Modula-2
\ No newline at end of file
diff --git a/Lang/Modula-2/Ramer-Douglas-Peucker-line-simplification b/Lang/Modula-2/Ramer-Douglas-Peucker-line-simplification
deleted file mode 120000
index ff583aca48..0000000000
--- a/Lang/Modula-2/Ramer-Douglas-Peucker-line-simplification
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ramer-Douglas-Peucker-line-simplification/Modula-2
\ No newline at end of file
diff --git a/Lang/Modula-2/Semiprime b/Lang/Modula-2/Semiprime
deleted file mode 120000
index 108e390f08..0000000000
--- a/Lang/Modula-2/Semiprime
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Semiprime/Modula-2
\ No newline at end of file
diff --git a/Lang/Modula-2/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/Modula-2/Sequence-smallest-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/Modula-2/Sequence:-smallest-number-with-exactly-n-divisors
rename to Lang/Modula-2/Sequence-smallest-number-with-exactly-n-divisors
diff --git a/Lang/Modula-2/Temperature-conversion b/Lang/Modula-2/Temperature-conversion
deleted file mode 120000
index fa236503d3..0000000000
--- a/Lang/Modula-2/Temperature-conversion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Temperature-conversion/Modula-2
\ No newline at end of file
diff --git a/Lang/Modula-2/Tic-tac-toe b/Lang/Modula-2/Tic-tac-toe
deleted file mode 120000
index 21b0370c7a..0000000000
--- a/Lang/Modula-2/Tic-tac-toe
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tic-tac-toe/Modula-2
\ No newline at end of file
diff --git a/Lang/Modula-2/Zeckendorf-number-representation b/Lang/Modula-2/Zeckendorf-number-representation
deleted file mode 120000
index bbadf943ec..0000000000
--- a/Lang/Modula-2/Zeckendorf-number-representation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Zeckendorf-number-representation/Modula-2
\ No newline at end of file
diff --git a/Lang/Modula-3/00-LANG.txt b/Lang/Modula-3/00-LANG.txt
index aaa0f4b8bf..582f870540 100644
--- a/Lang/Modula-3/00-LANG.txt
+++ b/Lang/Modula-3/00-LANG.txt
@@ -21,11 +21,4 @@ Its main implementation is [[Critical Mass Modula-3]].
Modula-3 influenced a few languages such as [[C Sharp|C#]], [[Java]], [[Ocaml]] and [[Python]].
==Links==
-* [http://en.wikipedia.org/wiki/Modula-3 Modula-3 at Wikipedia]
-
-===See also===
-* [[Modula-2]]
-* [[Oberon-07]]
-* [[Oberon-2]]
-* [[Component Pascal]]
-* [[Zonnon]]
\ No newline at end of file
+* [http://en.wikipedia.org/wiki/Modula-3 Modula-3 at Wikipedia]
\ No newline at end of file
diff --git a/Lang/Modula-3/Additive-primes b/Lang/Modula-3/Additive-primes
deleted file mode 120000
index b81b571c35..0000000000
--- a/Lang/Modula-3/Additive-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Additive-primes/Modula-3
\ No newline at end of file
diff --git a/Lang/Modula-3/Comments b/Lang/Modula-3/Comments
new file mode 120000
index 0000000000..8c3489c305
--- /dev/null
+++ b/Lang/Modula-3/Comments
@@ -0,0 +1 @@
+../../Task/Comments/Modula-3
\ No newline at end of file
diff --git a/Lang/Modula-3/Pascals-triangle b/Lang/Modula-3/Pascals-triangle
deleted file mode 120000
index 093a7901c2..0000000000
--- a/Lang/Modula-3/Pascals-triangle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pascals-triangle/Modula-3
\ No newline at end of file
diff --git a/Lang/Mojo/Hunt-the-Wumpus b/Lang/Mojo/Hunt-the-Wumpus
deleted file mode 120000
index a79c86df71..0000000000
--- a/Lang/Mojo/Hunt-the-Wumpus
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hunt-the-Wumpus/Mojo
\ No newline at end of file
diff --git a/Lang/MoonBit/00-LANG.txt b/Lang/MoonBit/00-LANG.txt
deleted file mode 100644
index cf5345dc27..0000000000
--- a/Lang/MoonBit/00-LANG.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-{{language|MoonBit
-|exec=bytecode
-|safety=safe
-|strength=strong
-|gc=yes
-|site=https://www.moonbitlang.com/}
-}}
-'''MoonBit''' is a general-purpose programming language and toolchain designed for high performance and resource efficiency, optimized for WebAssembly (Wasm). It is developed by a young and passionate team led by Zhang Hongbo. One of the motivations behind MoonBit’s creation was Zhang’s belief that existing languages like Java, Go, and Rust do not fully leverage the security and speed advantages of the WebAssembly instruction set, particularly in cloud computing and edge computing. After its initial release with native WebAssembly support, MoonBit later added support for JavaScript, Native, and the LLVM backend.
-
-MoonBit was publicly released in August 2023 and is currently in its beta stage.
-
-==Todo==
-* [[Tasks not implemented in MoonBit]]
\ No newline at end of file
diff --git a/Lang/MoonBit/00-META.yaml b/Lang/MoonBit/00-META.yaml
deleted file mode 100644
index 97e1356190..0000000000
--- a/Lang/MoonBit/00-META.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-from: http://rosettacode.org/wiki/Category:MoonBit
diff --git a/Lang/MoonBit/Array-length b/Lang/MoonBit/Array-length
deleted file mode 120000
index 4a5666710a..0000000000
--- a/Lang/MoonBit/Array-length
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Array-length/MoonBit
\ No newline at end of file
diff --git a/Lang/MoonBit/Hello-world-Text b/Lang/MoonBit/Hello-world-Text
deleted file mode 120000
index f3db6f7a6c..0000000000
--- a/Lang/MoonBit/Hello-world-Text
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Text/MoonBit
\ No newline at end of file
diff --git a/Lang/MoonRock/00-LANG.txt b/Lang/MoonRock/00-LANG.txt
deleted file mode 100644
index dcba29adb9..0000000000
--- a/Lang/MoonRock/00-LANG.txt
+++ /dev/null
@@ -1,68 +0,0 @@
-{{language|MoonRock
-|exec=machine
-|site=http://www.rowan.sensation.net.au/moonrock.html}}
-{{language programming paradigm|Imperative}}
-{{implementation|BASIC}}
-'''MoonRock''' is a compiler for a [[BASIC]]-like programming language, developed by Rowan Crowe. Released for [[MS-DOS]] and compatible systems, MoonRock enables compilation to assembly language and linking to COM executable files. The compiler is known for producing exceptionally concise executables; for example, a "[[Hello world|Hello, World!]]" program can be compiled into a COM file as small as 276 bytes.
-
-MoonRock is a programming language specifically designed to facilitate the creation of programs that can be easily translated into assembly language. This design choice emphasizes simplicity and direct mapping to low-level operations, making it particularly suitable for environments where performance and control over hardware are critical. The language's syntax and features are structured to align closely with assembly language constructs while benefiting from some higher-level abstractions provided by BASIC.
-
-== MoonRock Version 0.50 ==
-=== Program Structure ===
-The definitions of arrays must be included within the BEGIN DEF section of the program.
-
-=== Control Structures ===
-The ''[[Loops/For|for]]'' loop requires that both the start and end values be variables, constants, or literals; expressions are not permitted. The language does not implement a ''[[Loops/Do-while|repeat-until]]'' loop.
-
-=== Arithmetic Operations ===
-MoonRock 0.50 does not support [[Floating point|floating-point numbers]] and operations. Division using the / operator produces rounded [[Arithmetic/Integer|integer]] results. For integer division, the \ operator must be used. For example:
-
-A% = 1 / 3
-PRINT A% + "\n"
-A% = 2 / 3
-PRINT A% + "\n"
-A% = 3 / 3
-PRINT A% + "\n"
-
-produces the output:
-
-0
-1
-1
-
-The MOD function is not implemented for 32-bit integers (doublewords).
-
-=== Comparison Operations ===
-Both operands in comparison operations must be literals, constants, or variables; expressions are not allowed. Only variables of the same type can be compared. Attempting to compare variables of different types, such as A& > B%, may produce incorrect results.
-
-=== Output ===
-To output the value of a named constant, it must be passed as an argument to the STR function:
-
-PRINT "Up to " + STR(%MaxNumber) + "\n"
-
-Formatted output is not supported. Users may create custom subroutines as a workaround, such as:
-
-SUB PrintStr(S$, Width%)
- IF LEN(S$) > Width% THEN
- PRINT S$
- ELSE
- S$ = SPACE(Width%) + S$
- PRINT RIGHT(S$, Width%)
- ENDIF
-END SUB
-
-
-=== Abnormal Behaviors ===
-The manual states: ''Keywords are shown in all upper case to aid readability. They may be of any case in the source code''. However, some statements function solely when written in lowercase. For example, the statement:
-
-if A@ = 0 then print B% + " "
-
-operates correctly only when if and then are in lowercase. Conversely, the following formulation works regardless of case:
-
-IF A@ = 0 THEN
- PRINT B% + " "
-ENDIF
-
-
-== External links ==
-* [https://github.com/DosWorld/moonrock MoonRock on GitHub]
\ No newline at end of file
diff --git a/Lang/MoonRock/00-META.yaml b/Lang/MoonRock/00-META.yaml
deleted file mode 100644
index 8869a57523..0000000000
--- a/Lang/MoonRock/00-META.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-from: http://rosettacode.org/wiki/Category:MoonRock
diff --git a/Lang/MoonRock/100-doors b/Lang/MoonRock/100-doors
deleted file mode 120000
index 35643d2a2f..0000000000
--- a/Lang/MoonRock/100-doors
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/100-doors/MoonRock
\ No newline at end of file
diff --git a/Lang/MoonRock/Abundant-deficient-and-perfect-number-classifications b/Lang/MoonRock/Abundant-deficient-and-perfect-number-classifications
deleted file mode 120000
index 5a720f6808..0000000000
--- a/Lang/MoonRock/Abundant-deficient-and-perfect-number-classifications
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abundant-deficient-and-perfect-number-classifications/MoonRock
\ No newline at end of file
diff --git a/Lang/MoonRock/Bell-numbers b/Lang/MoonRock/Bell-numbers
deleted file mode 120000
index 1519c89b24..0000000000
--- a/Lang/MoonRock/Bell-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bell-numbers/MoonRock
\ No newline at end of file
diff --git a/Lang/MoonRock/Day-of-the-week b/Lang/MoonRock/Day-of-the-week
deleted file mode 120000
index 3423abb3da..0000000000
--- a/Lang/MoonRock/Day-of-the-week
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Day-of-the-week/MoonRock
\ No newline at end of file
diff --git a/Lang/MoonRock/Ethiopian-multiplication b/Lang/MoonRock/Ethiopian-multiplication
deleted file mode 120000
index 99b728ad22..0000000000
--- a/Lang/MoonRock/Ethiopian-multiplication
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ethiopian-multiplication/MoonRock
\ No newline at end of file
diff --git a/Lang/MoonRock/Factors-of-an-integer b/Lang/MoonRock/Factors-of-an-integer
deleted file mode 120000
index 9cb6716a51..0000000000
--- a/Lang/MoonRock/Factors-of-an-integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factors-of-an-integer/MoonRock
\ No newline at end of file
diff --git a/Lang/MoonRock/Fibonacci-sequence b/Lang/MoonRock/Fibonacci-sequence
deleted file mode 120000
index 633e95692a..0000000000
--- a/Lang/MoonRock/Fibonacci-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fibonacci-sequence/MoonRock
\ No newline at end of file
diff --git a/Lang/MoonRock/Josephus-problem b/Lang/MoonRock/Josephus-problem
deleted file mode 120000
index 1084916ce4..0000000000
--- a/Lang/MoonRock/Josephus-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Josephus-problem/MoonRock
\ No newline at end of file
diff --git a/Lang/MoonRock/Leap-year b/Lang/MoonRock/Leap-year
deleted file mode 120000
index 5ab049d315..0000000000
--- a/Lang/MoonRock/Leap-year
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Leap-year/MoonRock
\ No newline at end of file
diff --git a/Lang/MoonRock/Long-year b/Lang/MoonRock/Long-year
deleted file mode 120000
index cc090c489a..0000000000
--- a/Lang/MoonRock/Long-year
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Long-year/MoonRock
\ No newline at end of file
diff --git a/Lang/MoonRock/Semiprime b/Lang/MoonRock/Semiprime
deleted file mode 120000
index 9c66936bd7..0000000000
--- a/Lang/MoonRock/Semiprime
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Semiprime/MoonRock
\ No newline at end of file
diff --git a/Lang/MySQL/00-LANG.txt b/Lang/MySQL/00-LANG.txt
index bf94001666..9f2e3a69fb 100644
--- a/Lang/MySQL/00-LANG.txt
+++ b/Lang/MySQL/00-LANG.txt
@@ -1,9 +1,9 @@
{{language}}
'''MySQL''' is a multithreaded, multi-user, SQL Database Management System (DBMS) with more than six million installations.
-'''MySQL''' is owned and sponsored by a single for-profit firm, Oracle, which holds the copyright to most of the codebase. This is similar to the JBoss model and how the Free Software Foundation handles copyright in its projects, and dissimilar to how the Apache project does it, where the software is developed by a public community, and the copyright to the codebase is owned by its individual authors.
+'''MySQL''' is owned and sponsored by a single for-profit firm, the Swedish company MySQL AB, which holds the copyright to most of the codebase. This is similar to the JBoss model and how the Free Software Foundation handles copyright in its projects, and dissimilar to how the Apache project does it, where the software is developed by a public community, and the copyright to the codebase is owned by its individual authors.
-The company develops and maintains the system, selling support and service contracts, as well as a cloud variant called HeatWave (part of Oracle Cloud), proprietary-licensed copies of MySQL, and employing people all over the world who collaborate via the Internet. MySQL AB was founded by David Axmark, Allan Larsson, and Michael "Monty" Widenius.
+The company develops and maintains the system, selling support and service contracts, as well as proprietary-licensed copies of MySQL, and employing people all over the world who collaborate via the Internet. MySQL AB was founded by David Axmark, Allan Larsson, and Michael "Monty" Widenius.
==Citations==
* [http://en.wikipedia.org/wiki/Mysql Wikipedia:MySQL]
diff --git a/Lang/NS-HUBASIC/Empty-program b/Lang/NS-HUBASIC/Empty-program
new file mode 120000
index 0000000000..8edcb8591a
--- /dev/null
+++ b/Lang/NS-HUBASIC/Empty-program
@@ -0,0 +1 @@
+../../Task/Empty-program/NS-HUBASIC
\ No newline at end of file
diff --git a/Lang/Nanoquery/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/Nanoquery/Sequence-smallest-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/Nanoquery/Sequence:-smallest-number-with-exactly-n-divisors
rename to Lang/Nanoquery/Sequence-smallest-number-with-exactly-n-divisors
diff --git a/Lang/Nascom-BASIC/Damm-algorithm b/Lang/Nascom-BASIC/Damm-algorithm
deleted file mode 120000
index 5a6439a18c..0000000000
--- a/Lang/Nascom-BASIC/Damm-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Damm-algorithm/Nascom-BASIC
\ No newline at end of file
diff --git a/Lang/Nascom-BASIC/Dragon-curve b/Lang/Nascom-BASIC/Dragon-curve
deleted file mode 120000
index 36b4172957..0000000000
--- a/Lang/Nascom-BASIC/Dragon-curve
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dragon-curve/Nascom-BASIC
\ No newline at end of file
diff --git a/Lang/Nascom-BASIC/Langtons-ant b/Lang/Nascom-BASIC/Langtons-ant
deleted file mode 120000
index d0fdcffe2f..0000000000
--- a/Lang/Nascom-BASIC/Langtons-ant
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Langtons-ant/Nascom-BASIC
\ No newline at end of file
diff --git a/Lang/Nascom-BASIC/Levenshtein-distance b/Lang/Nascom-BASIC/Levenshtein-distance
deleted file mode 120000
index c821e59923..0000000000
--- a/Lang/Nascom-BASIC/Levenshtein-distance
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Levenshtein-distance/Nascom-BASIC
\ No newline at end of file
diff --git a/Lang/Nascom-BASIC/Luhn-test-of-credit-card-numbers b/Lang/Nascom-BASIC/Luhn-test-of-credit-card-numbers
deleted file mode 120000
index 1d7e8b0698..0000000000
--- a/Lang/Nascom-BASIC/Luhn-test-of-credit-card-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Luhn-test-of-credit-card-numbers/Nascom-BASIC
\ No newline at end of file
diff --git a/Lang/Nascom-BASIC/Mayan-numerals b/Lang/Nascom-BASIC/Mayan-numerals
deleted file mode 120000
index d2108ce9fa..0000000000
--- a/Lang/Nascom-BASIC/Mayan-numerals
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Mayan-numerals/Nascom-BASIC
\ No newline at end of file
diff --git a/Lang/Nascom-BASIC/Old-Russian-measure-of-length b/Lang/Nascom-BASIC/Old-Russian-measure-of-length
deleted file mode 120000
index 73ef2957e7..0000000000
--- a/Lang/Nascom-BASIC/Old-Russian-measure-of-length
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Old-Russian-measure-of-length/Nascom-BASIC
\ No newline at end of file
diff --git a/Lang/NetRexx/00-LANG.txt b/Lang/NetRexx/00-LANG.txt
index 3f624ad431..f110c9bdb8 100644
--- a/Lang/NetRexx/00-LANG.txt
+++ b/Lang/NetRexx/00-LANG.txt
@@ -29,7 +29,7 @@ as languages such as Java, while preserving the low threshold to learning and th
On the 8th of June 2011, IBM transferred ownership of the reference implementation of NetRexx to The Rexx Language Association (RexxLA) for administration under the [http://site.icu-project.org ICU - International Components for Unicode] open source license.
-On March 3rd, 2024, NetRexx 4.06-GA was released.
+On September 12th 2022, NetRexx 4.04 was released
==== Useful Links ====
* [http://www.netrexx.org The NetRexx Programming Language - www.netrexx.org]
diff --git a/Lang/NetRexx/Haversine-formula b/Lang/NetRexx/Haversine-formula
deleted file mode 120000
index bbcbbd8775..0000000000
--- a/Lang/NetRexx/Haversine-formula
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Haversine-formula/NetRexx
\ No newline at end of file
diff --git a/Lang/NewLISP/Abbreviations-simple b/Lang/NewLISP/Abbreviations-simple
deleted file mode 120000
index ec4184c6a2..0000000000
--- a/Lang/NewLISP/Abbreviations-simple
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abbreviations-simple/NewLISP
\ No newline at end of file
diff --git a/Lang/NewLISP/Ascending-primes b/Lang/NewLISP/Ascending-primes
deleted file mode 120000
index 68daf13118..0000000000
--- a/Lang/NewLISP/Ascending-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ascending-primes/NewLISP
\ No newline at end of file
diff --git a/Lang/NewLISP/Associative-array-Merging b/Lang/NewLISP/Associative-array-Merging
deleted file mode 120000
index 8ebd2e6646..0000000000
--- a/Lang/NewLISP/Associative-array-Merging
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Associative-array-Merging/NewLISP
\ No newline at end of file
diff --git a/Lang/NewLISP/Cartesian-product-of-two-or-more-lists b/Lang/NewLISP/Cartesian-product-of-two-or-more-lists
deleted file mode 120000
index 4a3b5275b2..0000000000
--- a/Lang/NewLISP/Cartesian-product-of-two-or-more-lists
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cartesian-product-of-two-or-more-lists/NewLISP
\ No newline at end of file
diff --git a/Lang/NewLISP/Compare-a-list-of-strings b/Lang/NewLISP/Compare-a-list-of-strings
deleted file mode 120000
index 9b0eddc19c..0000000000
--- a/Lang/NewLISP/Compare-a-list-of-strings
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compare-a-list-of-strings/NewLISP
\ No newline at end of file
diff --git a/Lang/NewLISP/Department-numbers b/Lang/NewLISP/Department-numbers
deleted file mode 120000
index 17043dfb0a..0000000000
--- a/Lang/NewLISP/Department-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Department-numbers/NewLISP
\ No newline at end of file
diff --git a/Lang/NewLISP/Dinesmans-multiple-dwelling-problem b/Lang/NewLISP/Dinesmans-multiple-dwelling-problem
deleted file mode 120000
index 0b5efae41b..0000000000
--- a/Lang/NewLISP/Dinesmans-multiple-dwelling-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dinesmans-multiple-dwelling-problem/NewLISP
\ No newline at end of file
diff --git a/Lang/NewLISP/Find-Chess960-starting-position-identifier b/Lang/NewLISP/Find-Chess960-starting-position-identifier
deleted file mode 120000
index 772e0d75d4..0000000000
--- a/Lang/NewLISP/Find-Chess960-starting-position-identifier
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Find-Chess960-starting-position-identifier/NewLISP
\ No newline at end of file
diff --git a/Lang/NewLISP/Loops-With-multiple-ranges b/Lang/NewLISP/Loops-With-multiple-ranges
deleted file mode 120000
index ef48847607..0000000000
--- a/Lang/NewLISP/Loops-With-multiple-ranges
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-With-multiple-ranges/NewLISP
\ No newline at end of file
diff --git a/Lang/NewLISP/Matrix-multiplication b/Lang/NewLISP/Matrix-multiplication
deleted file mode 120000
index 0badc9299f..0000000000
--- a/Lang/NewLISP/Matrix-multiplication
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Matrix-multiplication/NewLISP
\ No newline at end of file
diff --git a/Lang/NewLISP/Multisplit b/Lang/NewLISP/Multisplit
deleted file mode 120000
index 1bb5fea36e..0000000000
--- a/Lang/NewLISP/Multisplit
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Multisplit/NewLISP
\ No newline at end of file
diff --git a/Lang/NewLISP/Range-consolidation b/Lang/NewLISP/Range-consolidation
deleted file mode 120000
index 15f7beee34..0000000000
--- a/Lang/NewLISP/Range-consolidation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Range-consolidation/NewLISP
\ No newline at end of file
diff --git a/Lang/NewLISP/Range-expansion b/Lang/NewLISP/Range-expansion
deleted file mode 120000
index 8f2d253805..0000000000
--- a/Lang/NewLISP/Range-expansion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Range-expansion/NewLISP
\ No newline at end of file
diff --git a/Lang/NewLISP/Run-length-encoding b/Lang/NewLISP/Run-length-encoding
deleted file mode 120000
index 91cae97224..0000000000
--- a/Lang/NewLISP/Run-length-encoding
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Run-length-encoding/NewLISP
\ No newline at end of file
diff --git a/Lang/NewLISP/Set-consolidation b/Lang/NewLISP/Set-consolidation
deleted file mode 120000
index 9d4d20d448..0000000000
--- a/Lang/NewLISP/Set-consolidation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Set-consolidation/NewLISP
\ No newline at end of file
diff --git a/Lang/NewLISP/Sorting-algorithms-Permutation-sort b/Lang/NewLISP/Sorting-algorithms-Permutation-sort
deleted file mode 120000
index a14257af91..0000000000
--- a/Lang/NewLISP/Sorting-algorithms-Permutation-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Permutation-sort/NewLISP
\ No newline at end of file
diff --git a/Lang/NewLISP/Split-a-character-string-based-on-change-of-character b/Lang/NewLISP/Split-a-character-string-based-on-change-of-character
deleted file mode 120000
index 5af27e593c..0000000000
--- a/Lang/NewLISP/Split-a-character-string-based-on-change-of-character
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Split-a-character-string-based-on-change-of-character/NewLISP
\ No newline at end of file
diff --git a/Lang/NewLISP/Text-processing-1 b/Lang/NewLISP/Text-processing-1
deleted file mode 120000
index 39b0cd8b87..0000000000
--- a/Lang/NewLISP/Text-processing-1
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Text-processing-1/NewLISP
\ No newline at end of file
diff --git a/Lang/NewLISP/Text-processing-Max-licenses-in-use b/Lang/NewLISP/Text-processing-Max-licenses-in-use
deleted file mode 120000
index fca40fd641..0000000000
--- a/Lang/NewLISP/Text-processing-Max-licenses-in-use
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Text-processing-Max-licenses-in-use/NewLISP
\ No newline at end of file
diff --git a/Lang/NewLISP/Truncatable-primes b/Lang/NewLISP/Truncatable-primes
deleted file mode 120000
index 52cd8db47d..0000000000
--- a/Lang/NewLISP/Truncatable-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Truncatable-primes/NewLISP
\ No newline at end of file
diff --git a/Lang/Nickle/00-LANG.txt b/Lang/Nickle/00-LANG.txt
index e2643c2540..53bb3afeae 100644
--- a/Lang/Nickle/00-LANG.txt
+++ b/Lang/Nickle/00-LANG.txt
@@ -19,7 +19,7 @@ Other datatypes include multi-dimensional arrays, strings, structures, tagged un
The reference implementation includes an interactive top level with byte code compilation before evaluation.
Example:
-/* Arrays to JSON */
+/* Arrays to JSON */
autoimport JSON;
int [*] d = {1,2,3};
poly [*] p = {1, "abc", 42};
@@ -39,8 +39,7 @@ print f;
for (int i = 0; i < dim(p); i++) {
printf("%v ", p[i]);
}
-printf("\n");
-
+printf("\n");
{{out}}
prompt$ nickle sampler.5c
diff --git a/Lang/Nim/Bioinformatics-base-count b/Lang/Nim/Bioinformatics-base-count
new file mode 120000
index 0000000000..14fcd687ff
--- /dev/null
+++ b/Lang/Nim/Bioinformatics-base-count
@@ -0,0 +1 @@
+../../Task/Bioinformatics-base-count/Nim
\ No newline at end of file
diff --git a/Lang/Nim/Meissel-Mertens-constant b/Lang/Nim/Meissel-Mertens-constant
new file mode 120000
index 0000000000..760c7d7443
--- /dev/null
+++ b/Lang/Nim/Meissel-Mertens-constant
@@ -0,0 +1 @@
+../../Task/Meissel-Mertens-constant/Nim
\ No newline at end of file
diff --git a/Lang/Nim/Miller-Rabin-primality-test b/Lang/Nim/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..1ce4ac13f6
--- /dev/null
+++ b/Lang/Nim/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/Nim
\ No newline at end of file
diff --git a/Lang/Nim/Quaternion-type b/Lang/Nim/Quaternion-type
new file mode 120000
index 0000000000..384e273bfc
--- /dev/null
+++ b/Lang/Nim/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/Nim
\ No newline at end of file
diff --git a/Lang/Nim/Sequence:-nth-number-with-exactly-n-divisors b/Lang/Nim/Sequence-nth-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/Nim/Sequence:-nth-number-with-exactly-n-divisors
rename to Lang/Nim/Sequence-nth-number-with-exactly-n-divisors
diff --git a/Lang/Nim/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors b/Lang/Nim/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
similarity index 100%
rename from Lang/Nim/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors
rename to Lang/Nim/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
diff --git a/Lang/Nim/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/Nim/Sequence-smallest-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/Nim/Sequence:-smallest-number-with-exactly-n-divisors
rename to Lang/Nim/Sequence-smallest-number-with-exactly-n-divisors
diff --git a/Lang/Nim/Sorting-Algorithms-Circle-Sort b/Lang/Nim/Sorting-Algorithms-Circle-Sort
new file mode 120000
index 0000000000..80141c2866
--- /dev/null
+++ b/Lang/Nim/Sorting-Algorithms-Circle-Sort
@@ -0,0 +1 @@
+../../Task/Sorting-Algorithms-Circle-Sort/Nim
\ No newline at end of file
diff --git a/Lang/Nom/00-LANG.txt b/Lang/Nom/00-LANG.txt
deleted file mode 100644
index 596e8bc965..0000000000
--- a/Lang/Nom/00-LANG.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-{{language|Nom}}
-
-Nom is an interpreted and also compiling (via the translation scripts)
-language. Documentation for ''Nom'' can be found at [www.nomlang.org] along
-with the downloadable [http://nomlang.org/download implementation].
-All the source code is also hosted in [https://sourceforge.net sourceforge]
-at https://bumble.sf.net/books/pars/
-
-Nom is based on the PEP (''Parsing Engine for Patterns'') virtual machine,
-which is a text-based virtual machine. The PEP virtual machine is
-documented at [http://nomlang.org/doc/machine/]. Nom was first ''conceived''
-around about 2005 but a good working implementation (the
-[https://bumble.sf.net/books/pars/object/pep.c pep] interpreter) was not
-achieved until approximately 2019.
-
-Nom is, I believe a new approach to recognising/parsing/transforming/transpiling/compiling context-free languages
-since it uses the same standard Unix-style approach of a ''text-stream-filter''
-as with tools like ''sed'' or ''awk''.
\ No newline at end of file
diff --git a/Lang/Nom/00-META.yaml b/Lang/Nom/00-META.yaml
deleted file mode 100644
index 347649abaa..0000000000
--- a/Lang/Nom/00-META.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-from: http://rosettacode.org/wiki/Category:Nom
diff --git a/Lang/Nom/Balanced-brackets b/Lang/Nom/Balanced-brackets
deleted file mode 120000
index 53c6847c48..0000000000
--- a/Lang/Nom/Balanced-brackets
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Balanced-brackets/Nom
\ No newline at end of file
diff --git a/Lang/Nom/CSV-to-HTML-translation b/Lang/Nom/CSV-to-HTML-translation
deleted file mode 120000
index efc535b187..0000000000
--- a/Lang/Nom/CSV-to-HTML-translation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/CSV-to-HTML-translation/Nom
\ No newline at end of file
diff --git a/Lang/Nom/Determine-if-a-string-is-numeric b/Lang/Nom/Determine-if-a-string-is-numeric
deleted file mode 120000
index dc0b5a67ea..0000000000
--- a/Lang/Nom/Determine-if-a-string-is-numeric
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-is-numeric/Nom
\ No newline at end of file
diff --git a/Lang/Nom/Empty-string b/Lang/Nom/Empty-string
deleted file mode 120000
index e51cf14c29..0000000000
--- a/Lang/Nom/Empty-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Empty-string/Nom
\ No newline at end of file
diff --git a/Lang/Nom/Even-or-odd b/Lang/Nom/Even-or-odd
deleted file mode 120000
index a93a39c338..0000000000
--- a/Lang/Nom/Even-or-odd
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Even-or-odd/Nom
\ No newline at end of file
diff --git a/Lang/Nom/Hello-world-Text b/Lang/Nom/Hello-world-Text
deleted file mode 120000
index 6575bd7149..0000000000
--- a/Lang/Nom/Hello-world-Text
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Text/Nom
\ No newline at end of file
diff --git a/Lang/Nom/Input-loop b/Lang/Nom/Input-loop
deleted file mode 120000
index c687c9a3a9..0000000000
--- a/Lang/Nom/Input-loop
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Input-loop/Nom
\ No newline at end of file
diff --git a/Lang/Nom/Odd-word-problem b/Lang/Nom/Odd-word-problem
deleted file mode 120000
index 43979a4bb7..0000000000
--- a/Lang/Nom/Odd-word-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Odd-word-problem/Nom
\ No newline at end of file
diff --git a/Lang/Nom/Reverse-a-string b/Lang/Nom/Reverse-a-string
deleted file mode 120000
index 38692d6625..0000000000
--- a/Lang/Nom/Reverse-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Reverse-a-string/Nom
\ No newline at end of file
diff --git a/Lang/Nu/00-LANG.txt b/Lang/Nu/00-LANG.txt
index 4a1eea655e..d173c3d735 100644
--- a/Lang/Nu/00-LANG.txt
+++ b/Lang/Nu/00-LANG.txt
@@ -1,5 +1,3 @@
-{{stub}}
-{{language|Nu|site=https://www.nushell.sh|tags=nu}}
-{{Language programming paradigm|Functional}}
+{{stub}}{{language|Nu}}
Nu is the programming language used by Nushell.
\ No newline at end of file
diff --git a/Lang/Nu/Associative-array-Merging b/Lang/Nu/Associative-array-Merging
deleted file mode 120000
index 7f423eb251..0000000000
--- a/Lang/Nu/Associative-array-Merging
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Associative-array-Merging/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Averages-Arithmetic-mean b/Lang/Nu/Averages-Arithmetic-mean
deleted file mode 120000
index 21a1e77aec..0000000000
--- a/Lang/Nu/Averages-Arithmetic-mean
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Arithmetic-mean/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Averages-Median b/Lang/Nu/Averages-Median
deleted file mode 120000
index 8b1a3ddc2c..0000000000
--- a/Lang/Nu/Averages-Median
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Median/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Averages-Mode b/Lang/Nu/Averages-Mode
deleted file mode 120000
index bb3150600b..0000000000
--- a/Lang/Nu/Averages-Mode
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Mode/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Averages-Pythagorean-means b/Lang/Nu/Averages-Pythagorean-means
deleted file mode 120000
index 02b10a7b5e..0000000000
--- a/Lang/Nu/Averages-Pythagorean-means
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Pythagorean-means/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Averages-Root-mean-square b/Lang/Nu/Averages-Root-mean-square
deleted file mode 120000
index ed92d8f206..0000000000
--- a/Lang/Nu/Averages-Root-mean-square
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Root-mean-square/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Base64-decode-data b/Lang/Nu/Base64-decode-data
deleted file mode 120000
index 3620ff6de5..0000000000
--- a/Lang/Nu/Base64-decode-data
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Base64-decode-data/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Binary-digits b/Lang/Nu/Binary-digits
deleted file mode 120000
index cbbd7fb698..0000000000
--- a/Lang/Nu/Binary-digits
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Binary-digits/Nu
\ No newline at end of file
diff --git a/Lang/Nu/CSV-data-manipulation b/Lang/Nu/CSV-data-manipulation
deleted file mode 120000
index 212f9d037c..0000000000
--- a/Lang/Nu/CSV-data-manipulation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/CSV-data-manipulation/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Calculating-the-value-of-e b/Lang/Nu/Calculating-the-value-of-e
deleted file mode 120000
index 60dd80e1f7..0000000000
--- a/Lang/Nu/Calculating-the-value-of-e
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Calculating-the-value-of-e/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Check-input-device-is-a-terminal b/Lang/Nu/Check-input-device-is-a-terminal
deleted file mode 120000
index 2c12886796..0000000000
--- a/Lang/Nu/Check-input-device-is-a-terminal
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Check-input-device-is-a-terminal/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Check-output-device-is-a-terminal b/Lang/Nu/Check-output-device-is-a-terminal
deleted file mode 120000
index 8ac81dc9fd..0000000000
--- a/Lang/Nu/Check-output-device-is-a-terminal
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Check-output-device-is-a-terminal/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Check-that-file-exists b/Lang/Nu/Check-that-file-exists
deleted file mode 120000
index aa750c153c..0000000000
--- a/Lang/Nu/Check-that-file-exists
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Check-that-file-exists/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Comma-quibbling b/Lang/Nu/Comma-quibbling
deleted file mode 120000
index 6196295075..0000000000
--- a/Lang/Nu/Comma-quibbling
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Comma-quibbling/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Count-in-octal b/Lang/Nu/Count-in-octal
deleted file mode 120000
index b2bc3a9f84..0000000000
--- a/Lang/Nu/Count-in-octal
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Count-in-octal/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Count-occurrences-of-a-substring b/Lang/Nu/Count-occurrences-of-a-substring
deleted file mode 120000
index 1a4f958e67..0000000000
--- a/Lang/Nu/Count-occurrences-of-a-substring
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Count-occurrences-of-a-substring/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Date-format b/Lang/Nu/Date-format
deleted file mode 120000
index b99fcd9487..0000000000
--- a/Lang/Nu/Date-format
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Date-format/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Day-of-the-week b/Lang/Nu/Day-of-the-week
deleted file mode 120000
index 628ae77cde..0000000000
--- a/Lang/Nu/Day-of-the-week
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Day-of-the-week/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Department-numbers b/Lang/Nu/Department-numbers
deleted file mode 120000
index bb0cfc31a5..0000000000
--- a/Lang/Nu/Department-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Department-numbers/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Determine-if-a-string-has-all-the-same-characters b/Lang/Nu/Determine-if-a-string-has-all-the-same-characters
deleted file mode 120000
index 1b0a4160eb..0000000000
--- a/Lang/Nu/Determine-if-a-string-has-all-the-same-characters
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-has-all-the-same-characters/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Dot-product b/Lang/Nu/Dot-product
deleted file mode 120000
index 98aeabb740..0000000000
--- a/Lang/Nu/Dot-product
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dot-product/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Entropy b/Lang/Nu/Entropy
deleted file mode 120000
index 5bed68a8b8..0000000000
--- a/Lang/Nu/Entropy
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Entropy/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Even-or-odd b/Lang/Nu/Even-or-odd
deleted file mode 120000
index 7bc71663d2..0000000000
--- a/Lang/Nu/Even-or-odd
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Even-or-odd/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Factors-of-an-integer b/Lang/Nu/Factors-of-an-integer
deleted file mode 120000
index 5aa37c904e..0000000000
--- a/Lang/Nu/Factors-of-an-integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factors-of-an-integer/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Fibonacci-sequence b/Lang/Nu/Fibonacci-sequence
deleted file mode 120000
index c835014e2a..0000000000
--- a/Lang/Nu/Fibonacci-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fibonacci-sequence/Nu
\ No newline at end of file
diff --git a/Lang/Nu/File-extension-is-in-extensions-list b/Lang/Nu/File-extension-is-in-extensions-list
deleted file mode 120000
index ee608b6863..0000000000
--- a/Lang/Nu/File-extension-is-in-extensions-list
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/File-extension-is-in-extensions-list/Nu
\ No newline at end of file
diff --git a/Lang/Nu/File-size b/Lang/Nu/File-size
deleted file mode 120000
index 14db7aa8d0..0000000000
--- a/Lang/Nu/File-size
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/File-size/Nu
\ No newline at end of file
diff --git a/Lang/Nu/File-size-distribution b/Lang/Nu/File-size-distribution
deleted file mode 120000
index 2ee98ba338..0000000000
--- a/Lang/Nu/File-size-distribution
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/File-size-distribution/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Find-limit-of-recursion b/Lang/Nu/Find-limit-of-recursion
deleted file mode 120000
index c6b78c9274..0000000000
--- a/Lang/Nu/Find-limit-of-recursion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Find-limit-of-recursion/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Find-the-last-Sunday-of-each-month b/Lang/Nu/Find-the-last-Sunday-of-each-month
deleted file mode 120000
index 7d0aedf546..0000000000
--- a/Lang/Nu/Find-the-last-Sunday-of-each-month
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Find-the-last-Sunday-of-each-month/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Generate-lower-case-ASCII-alphabet b/Lang/Nu/Generate-lower-case-ASCII-alphabet
deleted file mode 120000
index 2680ace5a7..0000000000
--- a/Lang/Nu/Generate-lower-case-ASCII-alphabet
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Generate-lower-case-ASCII-alphabet/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Greatest-common-divisor b/Lang/Nu/Greatest-common-divisor
deleted file mode 120000
index d844f147ad..0000000000
--- a/Lang/Nu/Greatest-common-divisor
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Greatest-common-divisor/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Greatest-element-of-a-list b/Lang/Nu/Greatest-element-of-a-list
deleted file mode 120000
index 3b8838db94..0000000000
--- a/Lang/Nu/Greatest-element-of-a-list
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Greatest-element-of-a-list/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Harshad-or-Niven-series b/Lang/Nu/Harshad-or-Niven-series
deleted file mode 120000
index 87dd3a6ea5..0000000000
--- a/Lang/Nu/Harshad-or-Niven-series
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Harshad-or-Niven-series/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Hello-world-Newline-omission b/Lang/Nu/Hello-world-Newline-omission
deleted file mode 120000
index f00be9e5a7..0000000000
--- a/Lang/Nu/Hello-world-Newline-omission
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Newline-omission/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Hex-words b/Lang/Nu/Hex-words
deleted file mode 120000
index 14f92faeab..0000000000
--- a/Lang/Nu/Hex-words
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hex-words/Nu
\ No newline at end of file
diff --git a/Lang/Nu/I-before-E-except-after-C b/Lang/Nu/I-before-E-except-after-C
deleted file mode 120000
index 3f6ace8c86..0000000000
--- a/Lang/Nu/I-before-E-except-after-C
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/I-before-E-except-after-C/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Identity-matrix b/Lang/Nu/Identity-matrix
deleted file mode 120000
index 31adec2ac4..0000000000
--- a/Lang/Nu/Identity-matrix
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Identity-matrix/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Integer-sequence b/Lang/Nu/Integer-sequence
deleted file mode 120000
index 32270a6fb8..0000000000
--- a/Lang/Nu/Integer-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Integer-sequence/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Jewels-and-stones b/Lang/Nu/Jewels-and-stones
deleted file mode 120000
index 31ec593a67..0000000000
--- a/Lang/Nu/Jewels-and-stones
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jewels-and-stones/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Last-Friday-of-each-month b/Lang/Nu/Last-Friday-of-each-month
deleted file mode 120000
index 6075ef1dcc..0000000000
--- a/Lang/Nu/Last-Friday-of-each-month
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Last-Friday-of-each-month/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Letter-frequency b/Lang/Nu/Letter-frequency
deleted file mode 120000
index 0b7cf31f44..0000000000
--- a/Lang/Nu/Letter-frequency
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Letter-frequency/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Levenshtein-distance b/Lang/Nu/Levenshtein-distance
deleted file mode 120000
index f8c80b6b68..0000000000
--- a/Lang/Nu/Levenshtein-distance
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Levenshtein-distance/Nu
\ No newline at end of file
diff --git a/Lang/Nu/MD5 b/Lang/Nu/MD5
deleted file mode 120000
index feac42125d..0000000000
--- a/Lang/Nu/MD5
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/MD5/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Matrix-transposition b/Lang/Nu/Matrix-transposition
deleted file mode 120000
index adc758bbe0..0000000000
--- a/Lang/Nu/Matrix-transposition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Matrix-transposition/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Multiplication-tables b/Lang/Nu/Multiplication-tables
deleted file mode 120000
index ac72d93e8f..0000000000
--- a/Lang/Nu/Multiplication-tables
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Multiplication-tables/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Non-decimal-radices-Convert b/Lang/Nu/Non-decimal-radices-Convert
deleted file mode 120000
index 1dbd245069..0000000000
--- a/Lang/Nu/Non-decimal-radices-Convert
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Non-decimal-radices-Convert/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Null-object b/Lang/Nu/Null-object
deleted file mode 120000
index 74589e5538..0000000000
--- a/Lang/Nu/Null-object
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Null-object/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Order-two-numerical-lists b/Lang/Nu/Order-two-numerical-lists
deleted file mode 120000
index a09725d44a..0000000000
--- a/Lang/Nu/Order-two-numerical-lists
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Order-two-numerical-lists/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Ordered-words b/Lang/Nu/Ordered-words
deleted file mode 120000
index fb4962c2af..0000000000
--- a/Lang/Nu/Ordered-words
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ordered-words/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Phrase-reversals b/Lang/Nu/Phrase-reversals
deleted file mode 120000
index df54742816..0000000000
--- a/Lang/Nu/Phrase-reversals
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Phrase-reversals/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Pick-random-element b/Lang/Nu/Pick-random-element
deleted file mode 120000
index 184348b826..0000000000
--- a/Lang/Nu/Pick-random-element
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pick-random-element/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Random-numbers b/Lang/Nu/Random-numbers
deleted file mode 120000
index ba277327c8..0000000000
--- a/Lang/Nu/Random-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Random-numbers/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Remove-duplicate-elements b/Lang/Nu/Remove-duplicate-elements
deleted file mode 120000
index d498c34eae..0000000000
--- a/Lang/Nu/Remove-duplicate-elements
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Remove-duplicate-elements/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Repeat-a-string b/Lang/Nu/Repeat-a-string
deleted file mode 120000
index 962454e331..0000000000
--- a/Lang/Nu/Repeat-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Repeat-a-string/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Reverse-a-string b/Lang/Nu/Reverse-a-string
deleted file mode 120000
index 34f43d53f3..0000000000
--- a/Lang/Nu/Reverse-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Reverse-a-string/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Rot-13 b/Lang/Nu/Rot-13
deleted file mode 120000
index d2902fe7ad..0000000000
--- a/Lang/Nu/Rot-13
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Rot-13/Nu
\ No newline at end of file
diff --git a/Lang/Nu/SHA-256 b/Lang/Nu/SHA-256
deleted file mode 120000
index b58398940b..0000000000
--- a/Lang/Nu/SHA-256
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/SHA-256/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Show-the-epoch b/Lang/Nu/Show-the-epoch
deleted file mode 120000
index 9547f199df..0000000000
--- a/Lang/Nu/Show-the-epoch
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Show-the-epoch/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Sort-a-list-of-object-identifiers b/Lang/Nu/Sort-a-list-of-object-identifiers
deleted file mode 120000
index 9efe53a3b5..0000000000
--- a/Lang/Nu/Sort-a-list-of-object-identifiers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-a-list-of-object-identifiers/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Sort-an-integer-array b/Lang/Nu/Sort-an-integer-array
deleted file mode 120000
index cff6ab8400..0000000000
--- a/Lang/Nu/Sort-an-integer-array
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-an-integer-array/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Split-a-character-string-based-on-change-of-character b/Lang/Nu/Split-a-character-string-based-on-change-of-character
deleted file mode 120000
index c6103b5715..0000000000
--- a/Lang/Nu/Split-a-character-string-based-on-change-of-character
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Split-a-character-string-based-on-change-of-character/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Strip-whitespace-from-a-string-Top-and-tail b/Lang/Nu/Strip-whitespace-from-a-string-Top-and-tail
deleted file mode 120000
index c8922d283e..0000000000
--- a/Lang/Nu/Strip-whitespace-from-a-string-Top-and-tail
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strip-whitespace-from-a-string-Top-and-tail/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Substring-Top-and-tail b/Lang/Nu/Substring-Top-and-tail
deleted file mode 120000
index 8e1ec9809c..0000000000
--- a/Lang/Nu/Substring-Top-and-tail
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Substring-Top-and-tail/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Sum-and-product-of-an-array b/Lang/Nu/Sum-and-product-of-an-array
deleted file mode 120000
index c3f15d2743..0000000000
--- a/Lang/Nu/Sum-and-product-of-an-array
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sum-and-product-of-an-array/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Sum-digits-of-an-integer b/Lang/Nu/Sum-digits-of-an-integer
deleted file mode 120000
index 41b99ca024..0000000000
--- a/Lang/Nu/Sum-digits-of-an-integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sum-digits-of-an-integer/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Sum-of-a-series b/Lang/Nu/Sum-of-a-series
deleted file mode 120000
index 8172f12fc3..0000000000
--- a/Lang/Nu/Sum-of-a-series
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sum-of-a-series/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Sum-of-squares b/Lang/Nu/Sum-of-squares
deleted file mode 120000
index d7b0eacde8..0000000000
--- a/Lang/Nu/Sum-of-squares
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sum-of-squares/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Terminal-control-Clear-the-screen b/Lang/Nu/Terminal-control-Clear-the-screen
deleted file mode 120000
index 929018a6f7..0000000000
--- a/Lang/Nu/Terminal-control-Clear-the-screen
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Terminal-control-Clear-the-screen/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Terminal-control-Dimensions b/Lang/Nu/Terminal-control-Dimensions
deleted file mode 120000
index 6f437c04e4..0000000000
--- a/Lang/Nu/Terminal-control-Dimensions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Terminal-control-Dimensions/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Terminal-control-Display-an-extended-character b/Lang/Nu/Terminal-control-Display-an-extended-character
deleted file mode 120000
index e54390beea..0000000000
--- a/Lang/Nu/Terminal-control-Display-an-extended-character
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Terminal-control-Display-an-extended-character/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Terminal-control-Hiding-the-cursor b/Lang/Nu/Terminal-control-Hiding-the-cursor
deleted file mode 120000
index e19aad16bb..0000000000
--- a/Lang/Nu/Terminal-control-Hiding-the-cursor
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Terminal-control-Hiding-the-cursor/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Terminal-control-Inverse-video b/Lang/Nu/Terminal-control-Inverse-video
deleted file mode 120000
index dbb97c54ab..0000000000
--- a/Lang/Nu/Terminal-control-Inverse-video
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Terminal-control-Inverse-video/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Terminal-control-Ringing-the-terminal-bell b/Lang/Nu/Terminal-control-Ringing-the-terminal-bell
deleted file mode 120000
index f67008c1f1..0000000000
--- a/Lang/Nu/Terminal-control-Ringing-the-terminal-bell
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Terminal-control-Ringing-the-terminal-bell/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Time-a-function b/Lang/Nu/Time-a-function
deleted file mode 120000
index d32498490a..0000000000
--- a/Lang/Nu/Time-a-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Time-a-function/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Tokenize-a-string b/Lang/Nu/Tokenize-a-string
deleted file mode 120000
index e254094f94..0000000000
--- a/Lang/Nu/Tokenize-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tokenize-a-string/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Word-frequency b/Lang/Nu/Word-frequency
deleted file mode 120000
index b6ff2592c2..0000000000
--- a/Lang/Nu/Word-frequency
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Word-frequency/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Y-combinator b/Lang/Nu/Y-combinator
deleted file mode 120000
index 77e8ec4916..0000000000
--- a/Lang/Nu/Y-combinator
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Y-combinator/Nu
\ No newline at end of file
diff --git a/Lang/Nu/Zero-to-the-zero-power b/Lang/Nu/Zero-to-the-zero-power
deleted file mode 120000
index 950e81f484..0000000000
--- a/Lang/Nu/Zero-to-the-zero-power
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Zero-to-the-zero-power/Nu
\ No newline at end of file
diff --git a/Lang/OCaml/Anti-primes b/Lang/OCaml/Anti-primes
deleted file mode 120000
index 5c78fd8505..0000000000
--- a/Lang/OCaml/Anti-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Anti-primes/OCaml
\ No newline at end of file
diff --git a/Lang/OCaml/Attractive-numbers b/Lang/OCaml/Attractive-numbers
deleted file mode 120000
index 7813955dbc..0000000000
--- a/Lang/OCaml/Attractive-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Attractive-numbers/OCaml
\ No newline at end of file
diff --git a/Lang/OCaml/Cuban-primes b/Lang/OCaml/Cuban-primes
deleted file mode 120000
index d69918cc8d..0000000000
--- a/Lang/OCaml/Cuban-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cuban-primes/OCaml
\ No newline at end of file
diff --git a/Lang/OCaml/Harmonic-series b/Lang/OCaml/Harmonic-series
deleted file mode 120000
index 7ea0abbec3..0000000000
--- a/Lang/OCaml/Harmonic-series
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Harmonic-series/OCaml
\ No newline at end of file
diff --git a/Lang/OCaml/Kosaraju b/Lang/OCaml/Kosaraju
deleted file mode 120000
index 7243692ec3..0000000000
--- a/Lang/OCaml/Kosaraju
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Kosaraju/OCaml
\ No newline at end of file
diff --git a/Lang/OCaml/Parse-an-IP-Address b/Lang/OCaml/Parse-an-IP-Address
deleted file mode 120000
index f01fc56f01..0000000000
--- a/Lang/OCaml/Parse-an-IP-Address
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Parse-an-IP-Address/OCaml
\ No newline at end of file
diff --git a/Lang/OCaml/Pseudo-random-numbers-Xorshift-star b/Lang/OCaml/Pseudo-random-numbers-Xorshift-star
deleted file mode 120000
index 3fd6f20cda..0000000000
--- a/Lang/OCaml/Pseudo-random-numbers-Xorshift-star
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pseudo-random-numbers-Xorshift-star/OCaml
\ No newline at end of file
diff --git a/Lang/OCaml/Quaternion-type b/Lang/OCaml/Quaternion-type
new file mode 120000
index 0000000000..cc65de3875
--- /dev/null
+++ b/Lang/OCaml/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/OCaml
\ No newline at end of file
diff --git a/Lang/OCaml/Sorting-algorithms-Sleep-sort b/Lang/OCaml/Sorting-algorithms-Sleep-sort
deleted file mode 120000
index 1cc75210f7..0000000000
--- a/Lang/OCaml/Sorting-algorithms-Sleep-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Sleep-sort/OCaml
\ No newline at end of file
diff --git a/Lang/OCaml/Strassens-algorithm b/Lang/OCaml/Strassens-algorithm
deleted file mode 120000
index f94e8ddb52..0000000000
--- a/Lang/OCaml/Strassens-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strassens-algorithm/OCaml
\ No newline at end of file
diff --git a/Lang/OOC/00-LANG.txt b/Lang/OOC/00-LANG.txt
index 65c190709f..6ab39964dc 100644
--- a/Lang/OOC/00-LANG.txt
+++ b/Lang/OOC/00-LANG.txt
@@ -1,2 +1,2 @@
{{stub}}{{language
-|site=https://ooc-lang.github.io/}}
\ No newline at end of file
+|site=http://ooc-lang.org}}
\ No newline at end of file
diff --git a/Lang/OPL/00-LANG.txt b/Lang/OPL/00-LANG.txt
index 5d7f1fba8f..8357c2d27a 100644
--- a/Lang/OPL/00-LANG.txt
+++ b/Lang/OPL/00-LANG.txt
@@ -1,11 +1,3 @@
{{stub}}
{{language
-|site=http://opl-dev.sourceforge.net/}}
-
-'''OPL (Open Programming Language'''; formerly '''Organiser Programming Language)''' is a high-level programming language designed primarily for use on mobile devices, particularly those running the Psion Series 3 and Series 5 operating systems. Developed in the early 1990s, '''OPL''' was created to provide a simple yet powerful environment for application development on handheld devices, allowing users to create software that could leverage the unique features of these portable platforms.
-
-OPL is known for its ease of use, making it accessible to both novice and experienced programmers. The language features a syntax that is similar to [[BASIC]], which helps in rapid application development. It supports structured programming concepts, including variables, control structures, and functions, enabling developers to write clear and maintainable code.
-
-One of the key strengths of OPL is its ability to interact seamlessly with the underlying operating system, allowing developers to access device-specific features such as file management, user interface elements, and hardware capabilities. This makes OPL particularly suitable for creating productivity applications, games, and utilities tailored for mobile users.
-
-Despite its niche status, OPL has garnered a dedicated community of enthusiasts and developers who continue to explore its capabilities and create innovative applications. As mobile computing continues to evolve, OPL remains a notable example of early efforts to bring programming to handheld devices, showcasing the potential of portable technology in software development.
\ No newline at end of file
+|site=http://opl-dev.sourceforge.net/}}
\ No newline at end of file
diff --git a/Lang/OPL/100-doors b/Lang/OPL/100-doors
deleted file mode 120000
index a3b7e045e6..0000000000
--- a/Lang/OPL/100-doors
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/100-doors/OPL
\ No newline at end of file
diff --git a/Lang/OPL/Arithmetic-Integer b/Lang/OPL/Arithmetic-Integer
deleted file mode 120000
index dfcb743d43..0000000000
--- a/Lang/OPL/Arithmetic-Integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-Integer/OPL
\ No newline at end of file
diff --git a/Lang/OPL/Array-length b/Lang/OPL/Array-length
deleted file mode 120000
index 691e5be366..0000000000
--- a/Lang/OPL/Array-length
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Array-length/OPL
\ No newline at end of file
diff --git a/Lang/OPL/Arrays b/Lang/OPL/Arrays
deleted file mode 120000
index f57347887c..0000000000
--- a/Lang/OPL/Arrays
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arrays/OPL
\ No newline at end of file
diff --git a/Lang/OPL/Character-codes b/Lang/OPL/Character-codes
deleted file mode 120000
index 2dac3156b8..0000000000
--- a/Lang/OPL/Character-codes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Character-codes/OPL
\ No newline at end of file
diff --git a/Lang/OPL/Comments b/Lang/OPL/Comments
deleted file mode 120000
index 8aec78d8aa..0000000000
--- a/Lang/OPL/Comments
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Comments/OPL
\ No newline at end of file
diff --git a/Lang/OPL/Compare-length-of-two-strings b/Lang/OPL/Compare-length-of-two-strings
deleted file mode 120000
index c36f1e31fc..0000000000
--- a/Lang/OPL/Compare-length-of-two-strings
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compare-length-of-two-strings/OPL
\ No newline at end of file
diff --git a/Lang/OPL/Copy-a-string b/Lang/OPL/Copy-a-string
deleted file mode 120000
index 76609905e5..0000000000
--- a/Lang/OPL/Copy-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Copy-a-string/OPL
\ No newline at end of file
diff --git a/Lang/OPL/Draw-a-clock b/Lang/OPL/Draw-a-clock
deleted file mode 120000
index 438c8aadf3..0000000000
--- a/Lang/OPL/Draw-a-clock
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Draw-a-clock/OPL
\ No newline at end of file
diff --git a/Lang/OPL/Draw-a-pixel b/Lang/OPL/Draw-a-pixel
deleted file mode 120000
index d5c6ecea21..0000000000
--- a/Lang/OPL/Draw-a-pixel
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Draw-a-pixel/OPL
\ No newline at end of file
diff --git a/Lang/OPL/Empty-string b/Lang/OPL/Empty-string
deleted file mode 120000
index 9f6569303b..0000000000
--- a/Lang/OPL/Empty-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Empty-string/OPL
\ No newline at end of file
diff --git a/Lang/OPL/Factors-of-an-integer b/Lang/OPL/Factors-of-an-integer
deleted file mode 120000
index 2dc5a0a29e..0000000000
--- a/Lang/OPL/Factors-of-an-integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factors-of-an-integer/OPL
\ No newline at end of file
diff --git a/Lang/OPL/Filter b/Lang/OPL/Filter
deleted file mode 120000
index 89ea7a2c54..0000000000
--- a/Lang/OPL/Filter
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Filter/OPL
\ No newline at end of file
diff --git a/Lang/OPL/Hello-world-Text b/Lang/OPL/Hello-world-Text
deleted file mode 120000
index a870057a16..0000000000
--- a/Lang/OPL/Hello-world-Text
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Text/OPL
\ No newline at end of file
diff --git a/Lang/OPL/Program-termination b/Lang/OPL/Program-termination
deleted file mode 120000
index 8287761646..0000000000
--- a/Lang/OPL/Program-termination
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Program-termination/OPL
\ No newline at end of file
diff --git a/Lang/OPL/Reverse-a-string b/Lang/OPL/Reverse-a-string
deleted file mode 120000
index 8dba18d4c9..0000000000
--- a/Lang/OPL/Reverse-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Reverse-a-string/OPL
\ No newline at end of file
diff --git a/Lang/OPL/Show-ASCII-table b/Lang/OPL/Show-ASCII-table
deleted file mode 120000
index 72f35c10c7..0000000000
--- a/Lang/OPL/Show-ASCII-table
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Show-ASCII-table/OPL
\ No newline at end of file
diff --git a/Lang/OPL/String-length b/Lang/OPL/String-length
deleted file mode 120000
index ebd9f5ed88..0000000000
--- a/Lang/OPL/String-length
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-length/OPL
\ No newline at end of file
diff --git a/Lang/OPL/String-prepend b/Lang/OPL/String-prepend
deleted file mode 120000
index 78cb69646e..0000000000
--- a/Lang/OPL/String-prepend
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-prepend/OPL
\ No newline at end of file
diff --git a/Lang/OPL/Substring b/Lang/OPL/Substring
deleted file mode 120000
index 046b764f06..0000000000
--- a/Lang/OPL/Substring
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Substring/OPL
\ No newline at end of file
diff --git a/Lang/OPL/User-input-Text b/Lang/OPL/User-input-Text
deleted file mode 120000
index ad39694040..0000000000
--- a/Lang/OPL/User-input-Text
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/User-input-Text/OPL
\ No newline at end of file
diff --git a/Lang/Oberon-07/00-LANG.txt b/Lang/Oberon-07/00-LANG.txt
deleted file mode 100644
index fecc62a2b8..0000000000
--- a/Lang/Oberon-07/00-LANG.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-{{stub}}
-{{language|Oberon-07
-|strength=strong
-|safety=safe
-|express=explicit
-|compat=structural
-|checking=static
-|parampass=both
-|gc=yes
-}}
-
-'''Oberon-07''' is a revision of the Oberon language by Niklaus Wirth. Oberon-07 is based on Wirth's original Oberon language (not [[Oberon-2]]), Wirth lists the changes [https://people.inf.ethz.ch/wirth/Oberon/Oberon07.pdf here], which are largely aimed at simplification - in [https://people.inf.ethz.ch/wirth/Oberon/Oberon07.Report.pdf his defining document], Wirth quotes Einstein: "Make it as simple as possible, but not simpler".
-
-Oberon-07 contains a WHILE loop that allows multiple conditions and statements - similar to the loop in [[wp:Guarded_Command_Language|Edsgar Dijkstra's Guarded Command Language]], though with different syntax and without non-determinism. See [[Loops/N_plus_one_half#Oberon-07]] for an example.
-
-In addition to the samples below, many of the [[Oberon-2]] samples should work with Oberon-07, particularly if the Oberon-07 compiler you are using allows LONGINT as a synonym for INTEGER (LONGINT, SHORTINT, LONGREAL and SHORTREAL were dropped from Oberon-07).
-
-==Tasks not implemented in Oberon-07==
-[[Tasks not implemented in Oberon-07]]
-
-== Library modules used in Rosetta Code samples ==
-* [[:Category:Oberon-07-primes|Prime related]]
-* [[:Category:Oberon-07-words|Word related]]
-
-== See also ==
-* [[Oberon-2]]
-* [[Modula-2]]
-* [[Modula-3]]
-* [[Component Pascal]]
-* [[Zonnon]]
\ No newline at end of file
diff --git a/Lang/Oberon-07/00-META.yaml b/Lang/Oberon-07/00-META.yaml
deleted file mode 100644
index df5ec38ad0..0000000000
--- a/Lang/Oberon-07/00-META.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-from: http://rosettacode.org/wiki/Category:Oberon-07
diff --git a/Lang/Oberon-07/Abundant-odd-numbers b/Lang/Oberon-07/Abundant-odd-numbers
deleted file mode 120000
index 93003f8da4..0000000000
--- a/Lang/Oberon-07/Abundant-odd-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abundant-odd-numbers/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Additive-primes b/Lang/Oberon-07/Additive-primes
deleted file mode 120000
index 29e374f522..0000000000
--- a/Lang/Oberon-07/Additive-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Additive-primes/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Almost-prime b/Lang/Oberon-07/Almost-prime
deleted file mode 120000
index a487d08ae3..0000000000
--- a/Lang/Oberon-07/Almost-prime
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Almost-prime/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Arithmetic-derivative b/Lang/Oberon-07/Arithmetic-derivative
deleted file mode 120000
index 8a23f5aca7..0000000000
--- a/Lang/Oberon-07/Arithmetic-derivative
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-derivative/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Arithmetic-numbers b/Lang/Oberon-07/Arithmetic-numbers
deleted file mode 120000
index 12d1ac60ce..0000000000
--- a/Lang/Oberon-07/Arithmetic-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-numbers/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Bell-numbers b/Lang/Oberon-07/Bell-numbers
deleted file mode 120000
index e9a3518583..0000000000
--- a/Lang/Oberon-07/Bell-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bell-numbers/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Brilliant-numbers b/Lang/Oberon-07/Brilliant-numbers
deleted file mode 120000
index 9a2690e4fa..0000000000
--- a/Lang/Oberon-07/Brilliant-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Brilliant-numbers/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/CUSIP b/Lang/Oberon-07/CUSIP
deleted file mode 120000
index fca08cc3e6..0000000000
--- a/Lang/Oberon-07/CUSIP
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/CUSIP/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Calculating-the-value-of-e b/Lang/Oberon-07/Calculating-the-value-of-e
deleted file mode 120000
index 3693146162..0000000000
--- a/Lang/Oberon-07/Calculating-the-value-of-e
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Calculating-the-value-of-e/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Carmichael-3-strong-pseudoprimes b/Lang/Oberon-07/Carmichael-3-strong-pseudoprimes
deleted file mode 120000
index 1732f66395..0000000000
--- a/Lang/Oberon-07/Carmichael-3-strong-pseudoprimes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Carmichael-3-strong-pseudoprimes/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Catalan-numbers b/Lang/Oberon-07/Catalan-numbers
deleted file mode 120000
index 97d7a62fcd..0000000000
--- a/Lang/Oberon-07/Catalan-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Catalan-numbers/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Copy-stdin-to-stdout b/Lang/Oberon-07/Copy-stdin-to-stdout
deleted file mode 120000
index 15b9092fd0..0000000000
--- a/Lang/Oberon-07/Copy-stdin-to-stdout
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Copy-stdin-to-stdout/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Count-in-factors b/Lang/Oberon-07/Count-in-factors
deleted file mode 120000
index 213e18b9fd..0000000000
--- a/Lang/Oberon-07/Count-in-factors
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Count-in-factors/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Cumulative-standard-deviation b/Lang/Oberon-07/Cumulative-standard-deviation
deleted file mode 120000
index 998c4d523e..0000000000
--- a/Lang/Oberon-07/Cumulative-standard-deviation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cumulative-standard-deviation/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Day-of-the-week b/Lang/Oberon-07/Day-of-the-week
deleted file mode 120000
index f4a166cd18..0000000000
--- a/Lang/Oberon-07/Day-of-the-week
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Day-of-the-week/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Department-numbers b/Lang/Oberon-07/Department-numbers
deleted file mode 120000
index ee00d69bb6..0000000000
--- a/Lang/Oberon-07/Department-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Department-numbers/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Determine-if-a-string-has-all-the-same-characters b/Lang/Oberon-07/Determine-if-a-string-has-all-the-same-characters
deleted file mode 120000
index f2c11ea5d4..0000000000
--- a/Lang/Oberon-07/Determine-if-a-string-has-all-the-same-characters
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-has-all-the-same-characters/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Dice-game-probabilities b/Lang/Oberon-07/Dice-game-probabilities
deleted file mode 120000
index 527f78ea60..0000000000
--- a/Lang/Oberon-07/Dice-game-probabilities
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dice-game-probabilities/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Empty-program b/Lang/Oberon-07/Empty-program
deleted file mode 120000
index ba46e2aae6..0000000000
--- a/Lang/Oberon-07/Empty-program
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Empty-program/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Equal-prime-and-composite-sums b/Lang/Oberon-07/Equal-prime-and-composite-sums
deleted file mode 120000
index 91c57a6baf..0000000000
--- a/Lang/Oberon-07/Equal-prime-and-composite-sums
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Equal-prime-and-composite-sums/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Ethiopian-multiplication b/Lang/Oberon-07/Ethiopian-multiplication
deleted file mode 120000
index 13a766a6c8..0000000000
--- a/Lang/Oberon-07/Ethiopian-multiplication
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ethiopian-multiplication/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Euclid-Mullin-sequence b/Lang/Oberon-07/Euclid-Mullin-sequence
deleted file mode 120000
index 81b23466eb..0000000000
--- a/Lang/Oberon-07/Euclid-Mullin-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Euclid-Mullin-sequence/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Factorial b/Lang/Oberon-07/Factorial
deleted file mode 120000
index 42b8c4919c..0000000000
--- a/Lang/Oberon-07/Factorial
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factorial/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Find-the-last-Sunday-of-each-month b/Lang/Oberon-07/Find-the-last-Sunday-of-each-month
deleted file mode 120000
index 1d918212c0..0000000000
--- a/Lang/Oberon-07/Find-the-last-Sunday-of-each-month
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Find-the-last-Sunday-of-each-month/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Giuga-numbers b/Lang/Oberon-07/Giuga-numbers
deleted file mode 120000
index cce0bf5fc2..0000000000
--- a/Lang/Oberon-07/Giuga-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Giuga-numbers/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Harmonic-series b/Lang/Oberon-07/Harmonic-series
deleted file mode 120000
index 8e08686cfc..0000000000
--- a/Lang/Oberon-07/Harmonic-series
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Harmonic-series/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Isqrt-integer-square-root-of-X b/Lang/Oberon-07/Isqrt-integer-square-root-of-X
deleted file mode 120000
index a51f2f67a5..0000000000
--- a/Lang/Oberon-07/Isqrt-integer-square-root-of-X
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Isqrt-integer-square-root-of-X/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Iterated-digits-squaring b/Lang/Oberon-07/Iterated-digits-squaring
deleted file mode 120000
index 7a2da6ed31..0000000000
--- a/Lang/Oberon-07/Iterated-digits-squaring
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Iterated-digits-squaring/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Jordan-P-lya-numbers b/Lang/Oberon-07/Jordan-P-lya-numbers
deleted file mode 120000
index 9a4df048e8..0000000000
--- a/Lang/Oberon-07/Jordan-P-lya-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jordan-P-lya-numbers/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Julia-set b/Lang/Oberon-07/Julia-set
deleted file mode 120000
index e864d34442..0000000000
--- a/Lang/Oberon-07/Julia-set
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Julia-set/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Knapsack-problem-Continuous b/Lang/Oberon-07/Knapsack-problem-Continuous
deleted file mode 120000
index 43a5919216..0000000000
--- a/Lang/Oberon-07/Knapsack-problem-Continuous
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Knapsack-problem-Continuous/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Last-Friday-of-each-month b/Lang/Oberon-07/Last-Friday-of-each-month
deleted file mode 120000
index e8c07d9c19..0000000000
--- a/Lang/Oberon-07/Last-Friday-of-each-month
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Last-Friday-of-each-month/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Leap-year b/Lang/Oberon-07/Leap-year
deleted file mode 120000
index 8797ca0922..0000000000
--- a/Lang/Oberon-07/Leap-year
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Leap-year/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Legendre-prime-counting-function b/Lang/Oberon-07/Legendre-prime-counting-function
deleted file mode 120000
index 7d4d3489c5..0000000000
--- a/Lang/Oberon-07/Legendre-prime-counting-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Legendre-prime-counting-function/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Long-year b/Lang/Oberon-07/Long-year
deleted file mode 120000
index a0709fd34e..0000000000
--- a/Lang/Oberon-07/Long-year
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Long-year/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Loops-Break b/Lang/Oberon-07/Loops-Break
deleted file mode 120000
index bcd210938e..0000000000
--- a/Lang/Oberon-07/Loops-Break
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Break/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Loops-N-plus-one-half b/Lang/Oberon-07/Loops-N-plus-one-half
deleted file mode 120000
index f9ed03d1cc..0000000000
--- a/Lang/Oberon-07/Loops-N-plus-one-half
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-N-plus-one-half/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Magic-8-ball b/Lang/Oberon-07/Magic-8-ball
deleted file mode 120000
index 060c6dd973..0000000000
--- a/Lang/Oberon-07/Magic-8-ball
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Magic-8-ball/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/McNuggets-problem b/Lang/Oberon-07/McNuggets-problem
deleted file mode 120000
index f69d28cb85..0000000000
--- a/Lang/Oberon-07/McNuggets-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/McNuggets-problem/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Motzkin-numbers b/Lang/Oberon-07/Motzkin-numbers
deleted file mode 120000
index b3b2948803..0000000000
--- a/Lang/Oberon-07/Motzkin-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Motzkin-numbers/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Numbers-with-equal-rises-and-falls b/Lang/Oberon-07/Numbers-with-equal-rises-and-falls
deleted file mode 120000
index 5077c6cc5f..0000000000
--- a/Lang/Oberon-07/Numbers-with-equal-rises-and-falls
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Numbers-with-equal-rises-and-falls/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/One-dimensional-cellular-automata b/Lang/Oberon-07/One-dimensional-cellular-automata
deleted file mode 120000
index 95f88799f3..0000000000
--- a/Lang/Oberon-07/One-dimensional-cellular-automata
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/One-dimensional-cellular-automata/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Ordered-words b/Lang/Oberon-07/Ordered-words
deleted file mode 120000
index 6b04795e94..0000000000
--- a/Lang/Oberon-07/Ordered-words
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ordered-words/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Pell-numbers b/Lang/Oberon-07/Pell-numbers
deleted file mode 120000
index 7b4ee7e909..0000000000
--- a/Lang/Oberon-07/Pell-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pell-numbers/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Primality-by-trial-division b/Lang/Oberon-07/Primality-by-trial-division
deleted file mode 120000
index bbe4339271..0000000000
--- a/Lang/Oberon-07/Primality-by-trial-division
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Primality-by-trial-division/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Rare-numbers b/Lang/Oberon-07/Rare-numbers
deleted file mode 120000
index ee9d392e3c..0000000000
--- a/Lang/Oberon-07/Rare-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Rare-numbers/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Scope-modifiers b/Lang/Oberon-07/Scope-modifiers
deleted file mode 120000
index 5c7c859780..0000000000
--- a/Lang/Oberon-07/Scope-modifiers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Scope-modifiers/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Semiprime b/Lang/Oberon-07/Semiprime
deleted file mode 120000
index 46f4d8859c..0000000000
--- a/Lang/Oberon-07/Semiprime
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Semiprime/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Sequence-of-non-squares b/Lang/Oberon-07/Sequence-of-non-squares
deleted file mode 120000
index 45e81c48c5..0000000000
--- a/Lang/Oberon-07/Sequence-of-non-squares
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sequence-of-non-squares/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Sequence-of-primorial-primes b/Lang/Oberon-07/Sequence-of-primorial-primes
deleted file mode 120000
index 7f1050cb25..0000000000
--- a/Lang/Oberon-07/Sequence-of-primorial-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sequence-of-primorial-primes/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Shoelace-formula-for-polygonal-area b/Lang/Oberon-07/Shoelace-formula-for-polygonal-area
deleted file mode 120000
index b71cae6abb..0000000000
--- a/Lang/Oberon-07/Shoelace-formula-for-polygonal-area
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Shoelace-formula-for-polygonal-area/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Sierpinski-triangle b/Lang/Oberon-07/Sierpinski-triangle
deleted file mode 120000
index bdad2ec3ac..0000000000
--- a/Lang/Oberon-07/Sierpinski-triangle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sierpinski-triangle/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Sleeping-Beauty-problem b/Lang/Oberon-07/Sleeping-Beauty-problem
deleted file mode 120000
index 94be576322..0000000000
--- a/Lang/Oberon-07/Sleeping-Beauty-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sleeping-Beauty-problem/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Square-but-not-cube b/Lang/Oberon-07/Square-but-not-cube
deleted file mode 120000
index 917704f475..0000000000
--- a/Lang/Oberon-07/Square-but-not-cube
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Square-but-not-cube/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Stack b/Lang/Oberon-07/Stack
deleted file mode 120000
index abb833bb1a..0000000000
--- a/Lang/Oberon-07/Stack
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Stack/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Stirling-numbers-of-the-first-kind b/Lang/Oberon-07/Stirling-numbers-of-the-first-kind
deleted file mode 120000
index fc333d5e86..0000000000
--- a/Lang/Oberon-07/Stirling-numbers-of-the-first-kind
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Stirling-numbers-of-the-first-kind/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Tau-number b/Lang/Oberon-07/Tau-number
deleted file mode 120000
index c494dc7ed9..0000000000
--- a/Lang/Oberon-07/Tau-number
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tau-number/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Thue-Morse b/Lang/Oberon-07/Thue-Morse
deleted file mode 120000
index 9ae7bad9e1..0000000000
--- a/Lang/Oberon-07/Thue-Morse
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Thue-Morse/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Van-Eck-sequence b/Lang/Oberon-07/Van-Eck-sequence
deleted file mode 120000
index 1d825043d7..0000000000
--- a/Lang/Oberon-07/Van-Eck-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Van-Eck-sequence/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Van-der-Corput-sequence b/Lang/Oberon-07/Van-der-Corput-sequence
deleted file mode 120000
index 9bcb9702bb..0000000000
--- a/Lang/Oberon-07/Van-der-Corput-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Van-der-Corput-sequence/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Verhoeff-algorithm b/Lang/Oberon-07/Verhoeff-algorithm
deleted file mode 120000
index 5e73a5c36f..0000000000
--- a/Lang/Oberon-07/Verhoeff-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Verhoeff-algorithm/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Yellowstone-sequence b/Lang/Oberon-07/Yellowstone-sequence
deleted file mode 120000
index cf4e2d20b9..0000000000
--- a/Lang/Oberon-07/Yellowstone-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Yellowstone-sequence/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon-07/Zeckendorf-number-representation b/Lang/Oberon-07/Zeckendorf-number-representation
deleted file mode 120000
index 3ada43b974..0000000000
--- a/Lang/Oberon-07/Zeckendorf-number-representation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Zeckendorf-number-representation/Oberon-07
\ No newline at end of file
diff --git a/Lang/Oberon/100-doors b/Lang/Oberon/100-doors
new file mode 120000
index 0000000000..9d190b3c16
--- /dev/null
+++ b/Lang/Oberon/100-doors
@@ -0,0 +1 @@
+../../Task/100-doors/Oberon
\ No newline at end of file
diff --git a/Lang/Oberon/Abundant-deficient-and-perfect-number-classifications b/Lang/Oberon/Abundant-deficient-and-perfect-number-classifications
deleted file mode 120000
index e8005ff3ac..0000000000
--- a/Lang/Oberon/Abundant-deficient-and-perfect-number-classifications
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abundant-deficient-and-perfect-number-classifications/Oberon
\ No newline at end of file
diff --git a/Lang/Oberon/Arithmetic-Integer b/Lang/Oberon/Arithmetic-Integer
new file mode 120000
index 0000000000..e9f7a593d7
--- /dev/null
+++ b/Lang/Oberon/Arithmetic-Integer
@@ -0,0 +1 @@
+../../Task/Arithmetic-Integer/Oberon
\ No newline at end of file
diff --git a/Lang/Oberon/Calkin-Wilf-sequence b/Lang/Oberon/Calkin-Wilf-sequence
deleted file mode 120000
index 15bedf6a9d..0000000000
--- a/Lang/Oberon/Calkin-Wilf-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Calkin-Wilf-sequence/Oberon
\ No newline at end of file
diff --git a/Lang/Oberon/Cumulative-standard-deviation b/Lang/Oberon/Cumulative-standard-deviation
deleted file mode 120000
index efd10bee3a..0000000000
--- a/Lang/Oberon/Cumulative-standard-deviation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cumulative-standard-deviation/Oberon
\ No newline at end of file
diff --git a/Lang/Oberon/Euclid-Mullin-sequence b/Lang/Oberon/Euclid-Mullin-sequence
deleted file mode 120000
index 7808b89779..0000000000
--- a/Lang/Oberon/Euclid-Mullin-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Euclid-Mullin-sequence/Oberon
\ No newline at end of file
diff --git a/Lang/Oberon/Even-or-odd b/Lang/Oberon/Even-or-odd
new file mode 120000
index 0000000000..02920c353c
--- /dev/null
+++ b/Lang/Oberon/Even-or-odd
@@ -0,0 +1 @@
+../../Task/Even-or-odd/Oberon
\ No newline at end of file
diff --git a/Lang/Oberon/Golden-ratio-Convergence b/Lang/Oberon/Golden-ratio-Convergence
deleted file mode 120000
index dd21277799..0000000000
--- a/Lang/Oberon/Golden-ratio-Convergence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Golden-ratio-Convergence/Oberon
\ No newline at end of file
diff --git a/Lang/Oberon/Greatest-common-divisor b/Lang/Oberon/Greatest-common-divisor
new file mode 120000
index 0000000000..23dd5fc156
--- /dev/null
+++ b/Lang/Oberon/Greatest-common-divisor
@@ -0,0 +1 @@
+../../Task/Greatest-common-divisor/Oberon
\ No newline at end of file
diff --git a/Lang/Oberon/Loops-Continue b/Lang/Oberon/Loops-Continue
deleted file mode 120000
index 2ebf84aa8e..0000000000
--- a/Lang/Oberon/Loops-Continue
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Continue/Oberon
\ No newline at end of file
diff --git a/Lang/Oberon/Loops-For-with-a-specified-step b/Lang/Oberon/Loops-For-with-a-specified-step
new file mode 120000
index 0000000000..e73c849d2b
--- /dev/null
+++ b/Lang/Oberon/Loops-For-with-a-specified-step
@@ -0,0 +1 @@
+../../Task/Loops-For-with-a-specified-step/Oberon
\ No newline at end of file
diff --git a/Lang/Oberon/Rare-numbers b/Lang/Oberon/Rare-numbers
deleted file mode 120000
index 9dc08ea100..0000000000
--- a/Lang/Oberon/Rare-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Rare-numbers/Oberon
\ No newline at end of file
diff --git a/Lang/Objeck/Catalan-numbers-Pascals-triangle b/Lang/Objeck/Catalan-numbers-Pascals-triangle
deleted file mode 120000
index bc3c684d61..0000000000
--- a/Lang/Objeck/Catalan-numbers-Pascals-triangle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Catalan-numbers-Pascals-triangle/Objeck
\ No newline at end of file
diff --git a/Lang/Objeck/Copy-stdin-to-stdout b/Lang/Objeck/Copy-stdin-to-stdout
deleted file mode 120000
index b358bbac43..0000000000
--- a/Lang/Objeck/Copy-stdin-to-stdout
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Copy-stdin-to-stdout/Objeck
\ No newline at end of file
diff --git a/Lang/Objeck/Disarium-numbers b/Lang/Objeck/Disarium-numbers
deleted file mode 120000
index bc58c40d5c..0000000000
--- a/Lang/Objeck/Disarium-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Disarium-numbers/Objeck
\ No newline at end of file
diff --git a/Lang/Objeck/Distributed-programming b/Lang/Objeck/Distributed-programming
deleted file mode 120000
index 728f38ee28..0000000000
--- a/Lang/Objeck/Distributed-programming
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Distributed-programming/Objeck
\ No newline at end of file
diff --git a/Lang/Objeck/Floyds-triangle b/Lang/Objeck/Floyds-triangle
deleted file mode 120000
index 743553b677..0000000000
--- a/Lang/Objeck/Floyds-triangle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Floyds-triangle/Objeck
\ No newline at end of file
diff --git a/Lang/Objeck/Generate-lower-case-ASCII-alphabet b/Lang/Objeck/Generate-lower-case-ASCII-alphabet
deleted file mode 120000
index 92f0212a12..0000000000
--- a/Lang/Objeck/Generate-lower-case-ASCII-alphabet
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Generate-lower-case-ASCII-alphabet/Objeck
\ No newline at end of file
diff --git a/Lang/Objeck/HTTPS-Client-authenticated b/Lang/Objeck/HTTPS-Client-authenticated
deleted file mode 120000
index 6f56878ef9..0000000000
--- a/Lang/Objeck/HTTPS-Client-authenticated
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/HTTPS-Client-authenticated/Objeck
\ No newline at end of file
diff --git a/Lang/Objeck/Hello-world-Standard-error b/Lang/Objeck/Hello-world-Standard-error
deleted file mode 120000
index 49d3f16aa6..0000000000
--- a/Lang/Objeck/Hello-world-Standard-error
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Standard-error/Objeck
\ No newline at end of file
diff --git a/Lang/Objeck/Knuth-shuffle b/Lang/Objeck/Knuth-shuffle
deleted file mode 120000
index a7bb43880d..0000000000
--- a/Lang/Objeck/Knuth-shuffle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Knuth-shuffle/Objeck
\ No newline at end of file
diff --git a/Lang/Objeck/Mad-Libs b/Lang/Objeck/Mad-Libs
deleted file mode 120000
index 39f19ea059..0000000000
--- a/Lang/Objeck/Mad-Libs
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Mad-Libs/Objeck
\ No newline at end of file
diff --git a/Lang/Objeck/Magic-squares-of-doubly-even-order b/Lang/Objeck/Magic-squares-of-doubly-even-order
deleted file mode 120000
index 526cd66745..0000000000
--- a/Lang/Objeck/Magic-squares-of-doubly-even-order
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Magic-squares-of-doubly-even-order/Objeck
\ No newline at end of file
diff --git a/Lang/Objeck/Matrix-multiplication b/Lang/Objeck/Matrix-multiplication
deleted file mode 120000
index e2801343eb..0000000000
--- a/Lang/Objeck/Matrix-multiplication
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Matrix-multiplication/Objeck
\ No newline at end of file
diff --git a/Lang/Objeck/Multiplication-tables b/Lang/Objeck/Multiplication-tables
deleted file mode 120000
index 3bad27bce2..0000000000
--- a/Lang/Objeck/Multiplication-tables
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Multiplication-tables/Objeck
\ No newline at end of file
diff --git a/Lang/Objeck/Queue-Definition b/Lang/Objeck/Queue-Definition
deleted file mode 120000
index 392e43e236..0000000000
--- a/Lang/Objeck/Queue-Definition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Queue-Definition/Objeck
\ No newline at end of file
diff --git a/Lang/Objeck/Roman-numerals-Decode b/Lang/Objeck/Roman-numerals-Decode
deleted file mode 120000
index bd8b56a721..0000000000
--- a/Lang/Objeck/Roman-numerals-Decode
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Roman-numerals-Decode/Objeck
\ No newline at end of file
diff --git a/Lang/Objeck/Rosetta-Code-Find-unimplemented-tasks b/Lang/Objeck/Rosetta-Code-Find-unimplemented-tasks
deleted file mode 120000
index 7e77326aa1..0000000000
--- a/Lang/Objeck/Rosetta-Code-Find-unimplemented-tasks
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Rosetta-Code-Find-unimplemented-tasks/Objeck
\ No newline at end of file
diff --git a/Lang/Objeck/Sorting-Algorithms-Circle-Sort b/Lang/Objeck/Sorting-Algorithms-Circle-Sort
new file mode 120000
index 0000000000..4475fe5763
--- /dev/null
+++ b/Lang/Objeck/Sorting-Algorithms-Circle-Sort
@@ -0,0 +1 @@
+../../Task/Sorting-Algorithms-Circle-Sort/Objeck
\ No newline at end of file
diff --git a/Lang/Objeck/Strip-a-set-of-characters-from-a-string b/Lang/Objeck/Strip-a-set-of-characters-from-a-string
deleted file mode 120000
index f651f9d55d..0000000000
--- a/Lang/Objeck/Strip-a-set-of-characters-from-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strip-a-set-of-characters-from-a-string/Objeck
\ No newline at end of file
diff --git a/Lang/Objeck/Take-notes-on-the-command-line b/Lang/Objeck/Take-notes-on-the-command-line
deleted file mode 120000
index 5d55699b35..0000000000
--- a/Lang/Objeck/Take-notes-on-the-command-line
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Take-notes-on-the-command-line/Objeck
\ No newline at end of file
diff --git a/Lang/Object-Pascal-Implementations/00-LANG.txt b/Lang/Object-Pascal-Implementations/00-LANG.txt
deleted file mode 100644
index 74167ef7a7..0000000000
--- a/Lang/Object-Pascal-Implementations/00-LANG.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-{{language|Object Pascal}}
-{{implementation cat|Object Pascal}}
-{{implementation|Pascal}}
\ No newline at end of file
diff --git a/Lang/Object-Pascal-Implementations/00-META.yaml b/Lang/Object-Pascal-Implementations/00-META.yaml
deleted file mode 100644
index 34f0628a46..0000000000
--- a/Lang/Object-Pascal-Implementations/00-META.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-from: http://rosettacode.org/wiki/Category:Object_Pascal_Implementations
diff --git a/Lang/Object-Pascal/Sorting-algorithms-Shell-sort b/Lang/Object-Pascal/Sorting-algorithms-Shell-sort
deleted file mode 120000
index 6ae9067d88..0000000000
--- a/Lang/Object-Pascal/Sorting-algorithms-Shell-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Shell-sort/Object-Pascal
\ No newline at end of file
diff --git a/Lang/Octave/Peripheral-drift-illusion b/Lang/Octave/Peripheral-drift-illusion
deleted file mode 120000
index 9bda77fd28..0000000000
--- a/Lang/Octave/Peripheral-drift-illusion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Peripheral-drift-illusion/Octave
\ No newline at end of file
diff --git a/Lang/Octave/Quaternion-type b/Lang/Octave/Quaternion-type
new file mode 120000
index 0000000000..6dec972e26
--- /dev/null
+++ b/Lang/Octave/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/Octave
\ No newline at end of file
diff --git a/Lang/Odin/00-LANG.txt b/Lang/Odin/00-LANG.txt
index 1a08002d21..2c96551228 100644
--- a/Lang/Odin/00-LANG.txt
+++ b/Lang/Odin/00-LANG.txt
@@ -1,24 +1 @@
-{{language
-|exec=machine
-|gc=no
-|safety=unsafe
-|parampass=reference
-|checking=static
-|compat=nominative
-|strength=strong
-|site=https://odin-lang.org/
-|tag=odin
-}}{{language programming paradigm|Imperative}}{{Codepad}}
-
-'''Odin''' is a general-purpose, [[procedural programming|procedural]], [[imperative programming|imperative]] programming language developed by [https://www.gingerbill.org/ gingerBill] as a "C alternative for the joy of programming".
-
-Odin is distributed under [https://github.com/odin-lang/Odin/blob/master/LICENSE zlib license].
-
-==Links==
-* [https://odin-lang.org/docs/install/ Compiler installation instructions]
-* [https://github.com/odin-lang/Odin Repository]
-* [https://odin-lang.org/docs/overview/ Language overview]
-* [https://pkg.odin-lang.org/ Standard library documentation]
-
-==Todo==
-[[Tasks_not_implemented_in_Odin]]
\ No newline at end of file
+{{stub}}{{language|Odin}}
\ No newline at end of file
diff --git a/Lang/Odin/100-doors b/Lang/Odin/100-doors
deleted file mode 120000
index 67c11787e6..0000000000
--- a/Lang/Odin/100-doors
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/100-doors/Odin
\ No newline at end of file
diff --git a/Lang/Odin/Call-a-function-in-a-shared-library b/Lang/Odin/Call-a-function-in-a-shared-library
deleted file mode 120000
index cf4ca70486..0000000000
--- a/Lang/Odin/Call-a-function-in-a-shared-library
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Call-a-function-in-a-shared-library/Odin
\ No newline at end of file
diff --git a/Lang/Odin/Character-codes b/Lang/Odin/Character-codes
deleted file mode 120000
index 409b8a73d1..0000000000
--- a/Lang/Odin/Character-codes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Character-codes/Odin
\ No newline at end of file
diff --git a/Lang/Odin/Color-wheel b/Lang/Odin/Color-wheel
deleted file mode 120000
index 5b87562427..0000000000
--- a/Lang/Odin/Color-wheel
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Color-wheel/Odin
\ No newline at end of file
diff --git a/Lang/Odin/Comments b/Lang/Odin/Comments
deleted file mode 120000
index 69505856e6..0000000000
--- a/Lang/Odin/Comments
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Comments/Odin
\ No newline at end of file
diff --git a/Lang/Odin/Date-format b/Lang/Odin/Date-format
deleted file mode 120000
index 63e481d689..0000000000
--- a/Lang/Odin/Date-format
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Date-format/Odin
\ No newline at end of file
diff --git a/Lang/Odin/Draw-a-clock b/Lang/Odin/Draw-a-clock
deleted file mode 120000
index b014eb3c8e..0000000000
--- a/Lang/Odin/Draw-a-clock
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Draw-a-clock/Odin
\ No newline at end of file
diff --git a/Lang/Odin/Draw-a-cuboid b/Lang/Odin/Draw-a-cuboid
deleted file mode 120000
index 124ff7cfe9..0000000000
--- a/Lang/Odin/Draw-a-cuboid
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Draw-a-cuboid/Odin
\ No newline at end of file
diff --git a/Lang/Odin/Draw-a-sphere b/Lang/Odin/Draw-a-sphere
deleted file mode 120000
index b20b72cdc0..0000000000
--- a/Lang/Odin/Draw-a-sphere
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Draw-a-sphere/Odin
\ No newline at end of file
diff --git a/Lang/Odin/Euler-method b/Lang/Odin/Euler-method
deleted file mode 120000
index 2085f38551..0000000000
--- a/Lang/Odin/Euler-method
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Euler-method/Odin
\ No newline at end of file
diff --git a/Lang/Odin/Execute-Brain- b/Lang/Odin/Execute-Brain-
deleted file mode 120000
index 748dbb9c99..0000000000
--- a/Lang/Odin/Execute-Brain-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Execute-Brain-/Odin
\ No newline at end of file
diff --git a/Lang/Odin/Fractran b/Lang/Odin/Fractran
deleted file mode 120000
index 5bd1840a6a..0000000000
--- a/Lang/Odin/Fractran
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fractran/Odin
\ No newline at end of file
diff --git a/Lang/Odin/Function-composition b/Lang/Odin/Function-composition
deleted file mode 120000
index 27b230f571..0000000000
--- a/Lang/Odin/Function-composition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Function-composition/Odin
\ No newline at end of file
diff --git a/Lang/Odin/Hailstone-sequence b/Lang/Odin/Hailstone-sequence
deleted file mode 120000
index 678ea867f0..0000000000
--- a/Lang/Odin/Hailstone-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hailstone-sequence/Odin
\ No newline at end of file
diff --git a/Lang/Odin/Hello-world-Graphical b/Lang/Odin/Hello-world-Graphical
deleted file mode 120000
index 00108512b1..0000000000
--- a/Lang/Odin/Hello-world-Graphical
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Graphical/Odin
\ No newline at end of file
diff --git a/Lang/Odin/Image-noise b/Lang/Odin/Image-noise
deleted file mode 120000
index 9b2e03c5b6..0000000000
--- a/Lang/Odin/Image-noise
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Image-noise/Odin
\ No newline at end of file
diff --git a/Lang/Odin/Musical-scale b/Lang/Odin/Musical-scale
deleted file mode 120000
index cd45a36de9..0000000000
--- a/Lang/Odin/Musical-scale
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Musical-scale/Odin
\ No newline at end of file
diff --git a/Lang/Odin/One-dimensional-cellular-automata b/Lang/Odin/One-dimensional-cellular-automata
deleted file mode 120000
index 5cf45742c4..0000000000
--- a/Lang/Odin/One-dimensional-cellular-automata
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/One-dimensional-cellular-automata/Odin
\ No newline at end of file
diff --git a/Lang/Odin/Primality-by-trial-division b/Lang/Odin/Primality-by-trial-division
deleted file mode 120000
index 8e356363dd..0000000000
--- a/Lang/Odin/Primality-by-trial-division
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Primality-by-trial-division/Odin
\ No newline at end of file
diff --git a/Lang/Odin/Quine b/Lang/Odin/Quine
deleted file mode 120000
index 53e4cf3687..0000000000
--- a/Lang/Odin/Quine
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Quine/Odin
\ No newline at end of file
diff --git a/Lang/Odin/Read-a-configuration-file b/Lang/Odin/Read-a-configuration-file
deleted file mode 120000
index fa189332d6..0000000000
--- a/Lang/Odin/Read-a-configuration-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Read-a-configuration-file/Odin
\ No newline at end of file
diff --git a/Lang/Odin/Reverse-words-in-a-string b/Lang/Odin/Reverse-words-in-a-string
deleted file mode 120000
index 9648c360e7..0000000000
--- a/Lang/Odin/Reverse-words-in-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Reverse-words-in-a-string/Odin
\ No newline at end of file
diff --git a/Lang/Odin/Runge-Kutta-method b/Lang/Odin/Runge-Kutta-method
deleted file mode 120000
index 1b9162c995..0000000000
--- a/Lang/Odin/Runge-Kutta-method
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Runge-Kutta-method/Odin
\ No newline at end of file
diff --git a/Lang/Odin/Sieve-of-Eratosthenes b/Lang/Odin/Sieve-of-Eratosthenes
deleted file mode 120000
index 265789a7db..0000000000
--- a/Lang/Odin/Sieve-of-Eratosthenes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sieve-of-Eratosthenes/Odin
\ No newline at end of file
diff --git a/Lang/Odin/Sockets b/Lang/Odin/Sockets
deleted file mode 120000
index ccedc5dd5d..0000000000
--- a/Lang/Odin/Sockets
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sockets/Odin
\ No newline at end of file
diff --git a/Lang/Odin/Strip-a-set-of-characters-from-a-string b/Lang/Odin/Strip-a-set-of-characters-from-a-string
deleted file mode 120000
index b76ef81d13..0000000000
--- a/Lang/Odin/Strip-a-set-of-characters-from-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strip-a-set-of-characters-from-a-string/Odin
\ No newline at end of file
diff --git a/Lang/Odin/Unicode-variable-names b/Lang/Odin/Unicode-variable-names
deleted file mode 120000
index f070da9637..0000000000
--- a/Lang/Odin/Unicode-variable-names
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Unicode-variable-names/Odin
\ No newline at end of file
diff --git a/Lang/Odin/Write-entire-file b/Lang/Odin/Write-entire-file
deleted file mode 120000
index 53b4243bae..0000000000
--- a/Lang/Odin/Write-entire-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Write-entire-file/Odin
\ No newline at end of file
diff --git a/Lang/Oforth/Quaternion-type b/Lang/Oforth/Quaternion-type
new file mode 120000
index 0000000000..51caedda0e
--- /dev/null
+++ b/Lang/Oforth/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/Oforth
\ No newline at end of file
diff --git a/Lang/Ol/Quaternion-type b/Lang/Ol/Quaternion-type
new file mode 120000
index 0000000000..a3e712c033
--- /dev/null
+++ b/Lang/Ol/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/Ol
\ No newline at end of file
diff --git a/Lang/Ol/Runge-Kutta-method b/Lang/Ol/Runge-Kutta-method
deleted file mode 120000
index 55f8d1bf18..0000000000
--- a/Lang/Ol/Runge-Kutta-method
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Runge-Kutta-method/Ol
\ No newline at end of file
diff --git a/Lang/OmniMark/00-LANG.txt b/Lang/OmniMark/00-LANG.txt
deleted file mode 100644
index 43585c3f19..0000000000
--- a/Lang/OmniMark/00-LANG.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-{{language|OmniMark
-|tags=omnimark
-|site=https://www.stilo.com/omnimark/}}
-'''OmniMark''' is a fourth-generation programming language used mostly in the publishing industry. It is currently a proprietary software product of Stilo International. The most recent release of OmniMark is 12.0 (as at 2024-06-25).
-
-For a brief period, in 1999-2000, OmniMark was available free of charge (versions 4 and 5, including a 'Lite edition' of version 4, which was limited to 200 actions).
-
-==Links==
-* [[wp:OmniMark|Omnimark in Wikipedia]]
-* [https://developers.stilo.com/docs/html/index.html Version 12.0 documentation]
-* [https://developers.stilo.com/documentation/docs/html/index.htm Version 6.5 documentation]
-* [https://developers.stilo.com/documentation/v4r0/index.htm Version 4.0 documentation]
-
-==Todo==
-* [[Tasks not implemented in OmniMark]]
\ No newline at end of file
diff --git a/Lang/OmniMark/00-META.yaml b/Lang/OmniMark/00-META.yaml
deleted file mode 100644
index 4f47c1011a..0000000000
--- a/Lang/OmniMark/00-META.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-from: http://rosettacode.org/wiki/Category:OmniMark
diff --git a/Lang/OmniMark/100-doors b/Lang/OmniMark/100-doors
deleted file mode 120000
index 97ec6d7965..0000000000
--- a/Lang/OmniMark/100-doors
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/100-doors/OmniMark
\ No newline at end of file
diff --git a/Lang/OmniMark/Array-concatenation b/Lang/OmniMark/Array-concatenation
deleted file mode 120000
index 826b17e39e..0000000000
--- a/Lang/OmniMark/Array-concatenation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Array-concatenation/OmniMark
\ No newline at end of file
diff --git a/Lang/OmniMark/Array-length b/Lang/OmniMark/Array-length
deleted file mode 120000
index 47ea995113..0000000000
--- a/Lang/OmniMark/Array-length
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Array-length/OmniMark
\ No newline at end of file
diff --git a/Lang/OmniMark/CSV-to-HTML-translation b/Lang/OmniMark/CSV-to-HTML-translation
deleted file mode 120000
index 78c14aa62b..0000000000
--- a/Lang/OmniMark/CSV-to-HTML-translation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/CSV-to-HTML-translation/OmniMark
\ No newline at end of file
diff --git a/Lang/OmniMark/Caesar-cipher b/Lang/OmniMark/Caesar-cipher
deleted file mode 120000
index abca569385..0000000000
--- a/Lang/OmniMark/Caesar-cipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Caesar-cipher/OmniMark
\ No newline at end of file
diff --git a/Lang/OmniMark/Camel-case-and-snake-case b/Lang/OmniMark/Camel-case-and-snake-case
deleted file mode 120000
index 977f7a6fec..0000000000
--- a/Lang/OmniMark/Camel-case-and-snake-case
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Camel-case-and-snake-case/OmniMark
\ No newline at end of file
diff --git a/Lang/OmniMark/Determine-if-a-string-has-all-the-same-characters b/Lang/OmniMark/Determine-if-a-string-has-all-the-same-characters
deleted file mode 120000
index c1672ea012..0000000000
--- a/Lang/OmniMark/Determine-if-a-string-has-all-the-same-characters
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-has-all-the-same-characters/OmniMark
\ No newline at end of file
diff --git a/Lang/OmniMark/Hello-world-Standard-error b/Lang/OmniMark/Hello-world-Standard-error
deleted file mode 120000
index 8ef2028e3a..0000000000
--- a/Lang/OmniMark/Hello-world-Standard-error
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Standard-error/OmniMark
\ No newline at end of file
diff --git a/Lang/OmniMark/Hex-words b/Lang/OmniMark/Hex-words
deleted file mode 120000
index b43e37ad28..0000000000
--- a/Lang/OmniMark/Hex-words
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hex-words/OmniMark
\ No newline at end of file
diff --git a/Lang/OmniMark/ISBN13-check-digit b/Lang/OmniMark/ISBN13-check-digit
deleted file mode 120000
index 5629e040c9..0000000000
--- a/Lang/OmniMark/ISBN13-check-digit
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/ISBN13-check-digit/OmniMark
\ No newline at end of file
diff --git a/Lang/OmniMark/Input-loop b/Lang/OmniMark/Input-loop
deleted file mode 120000
index c2f5884755..0000000000
--- a/Lang/OmniMark/Input-loop
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Input-loop/OmniMark
\ No newline at end of file
diff --git a/Lang/OmniMark/Repeat-a-string b/Lang/OmniMark/Repeat-a-string
deleted file mode 120000
index a5c79bdf8d..0000000000
--- a/Lang/OmniMark/Repeat-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Repeat-a-string/OmniMark
\ No newline at end of file
diff --git a/Lang/OmniMark/Reverse-a-string b/Lang/OmniMark/Reverse-a-string
deleted file mode 120000
index ac30e9d9f0..0000000000
--- a/Lang/OmniMark/Reverse-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Reverse-a-string/OmniMark
\ No newline at end of file
diff --git a/Lang/OmniMark/Rot-13 b/Lang/OmniMark/Rot-13
deleted file mode 120000
index 34ecde427b..0000000000
--- a/Lang/OmniMark/Rot-13
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Rot-13/OmniMark
\ No newline at end of file
diff --git a/Lang/OmniMark/Strip-control-codes-and-extended-characters-from-a-string b/Lang/OmniMark/Strip-control-codes-and-extended-characters-from-a-string
deleted file mode 120000
index e108d513e0..0000000000
--- a/Lang/OmniMark/Strip-control-codes-and-extended-characters-from-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strip-control-codes-and-extended-characters-from-a-string/OmniMark
\ No newline at end of file
diff --git a/Lang/OmniMark/Substring b/Lang/OmniMark/Substring
deleted file mode 120000
index 3eb9323ac2..0000000000
--- a/Lang/OmniMark/Substring
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Substring/OmniMark
\ No newline at end of file
diff --git a/Lang/OmniMark/Substring-Top-and-tail b/Lang/OmniMark/Substring-Top-and-tail
deleted file mode 120000
index b88887f219..0000000000
--- a/Lang/OmniMark/Substring-Top-and-tail
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Substring-Top-and-tail/OmniMark
\ No newline at end of file
diff --git a/Lang/OmniMark/XML-Input b/Lang/OmniMark/XML-Input
deleted file mode 120000
index 56ac42b963..0000000000
--- a/Lang/OmniMark/XML-Input
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/XML-Input/OmniMark
\ No newline at end of file
diff --git a/Lang/OoRexx/00-LANG.txt b/Lang/OoRexx/00-LANG.txt
index 84a3f74109..8031f8ae00 100644
--- a/Lang/OoRexx/00-LANG.txt
+++ b/Lang/OoRexx/00-LANG.txt
@@ -10,7 +10,4 @@ open sourced, maintained by the [http://www.rexxla.org/ Rexx Language Associatio
ooRexx can be used to run many programs shown here in the [[REXX]] category.
See http://rosettacode.org/wiki/Rosetta_Code:Village_Pump/Dialects#REXX.2C_ooRexx.2C_and_others
-for differences.
-
-== Rosetta Code tasks not implemented in OoRexx ==
-[[Tasks not implemented in OoRexx]]
\ No newline at end of file
+for differences.
\ No newline at end of file
diff --git a/Lang/OoRexx/Giuga-numbers b/Lang/OoRexx/Giuga-numbers
deleted file mode 120000
index 86fe47decb..0000000000
--- a/Lang/OoRexx/Giuga-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Giuga-numbers/OoRexx
\ No newline at end of file
diff --git a/Lang/OoRexx/Nth-root b/Lang/OoRexx/Nth-root
deleted file mode 120000
index 05543d43a8..0000000000
--- a/Lang/OoRexx/Nth-root
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nth-root/OoRexx
\ No newline at end of file
diff --git a/Lang/OoRexx/Prime-decomposition b/Lang/OoRexx/Prime-decomposition
deleted file mode 120000
index f16b4825fb..0000000000
--- a/Lang/OoRexx/Prime-decomposition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Prime-decomposition/OoRexx
\ No newline at end of file
diff --git a/Lang/OoRexx/Quaternion-type b/Lang/OoRexx/Quaternion-type
new file mode 120000
index 0000000000..be3652b55d
--- /dev/null
+++ b/Lang/OoRexx/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/OoRexx
\ No newline at end of file
diff --git a/Lang/OoRexx/Sorting-algorithms-Merge-sort b/Lang/OoRexx/Sorting-algorithms-Merge-sort
deleted file mode 120000
index ae6f4594d4..0000000000
--- a/Lang/OoRexx/Sorting-algorithms-Merge-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Merge-sort/OoRexx
\ No newline at end of file
diff --git a/Lang/Openscad/Empty-program b/Lang/Openscad/Empty-program
new file mode 120000
index 0000000000..89182791e6
--- /dev/null
+++ b/Lang/Openscad/Empty-program
@@ -0,0 +1 @@
+../../Task/Empty-program/Openscad
\ No newline at end of file
diff --git a/Lang/OxygenBasic/Array-length b/Lang/OxygenBasic/Array-length
deleted file mode 120000
index 00db990da9..0000000000
--- a/Lang/OxygenBasic/Array-length
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Array-length/OxygenBasic
\ No newline at end of file
diff --git a/Lang/OxygenBasic/Blum-integer b/Lang/OxygenBasic/Blum-integer
deleted file mode 120000
index 343ecf7af1..0000000000
--- a/Lang/OxygenBasic/Blum-integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Blum-integer/OxygenBasic
\ No newline at end of file
diff --git a/Lang/OxygenBasic/Cullen-and-Woodall-numbers b/Lang/OxygenBasic/Cullen-and-Woodall-numbers
deleted file mode 120000
index 75020e6fa5..0000000000
--- a/Lang/OxygenBasic/Cullen-and-Woodall-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cullen-and-Woodall-numbers/OxygenBasic
\ No newline at end of file
diff --git a/Lang/OxygenBasic/Determine-if-a-string-has-all-the-same-characters b/Lang/OxygenBasic/Determine-if-a-string-has-all-the-same-characters
deleted file mode 120000
index 5577d0b0ab..0000000000
--- a/Lang/OxygenBasic/Determine-if-a-string-has-all-the-same-characters
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-has-all-the-same-characters/OxygenBasic
\ No newline at end of file
diff --git a/Lang/OxygenBasic/Diversity-prediction-theorem b/Lang/OxygenBasic/Diversity-prediction-theorem
deleted file mode 120000
index e07716f11a..0000000000
--- a/Lang/OxygenBasic/Diversity-prediction-theorem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Diversity-prediction-theorem/OxygenBasic
\ No newline at end of file
diff --git a/Lang/OxygenBasic/Eban-numbers b/Lang/OxygenBasic/Eban-numbers
deleted file mode 120000
index 4b362db2df..0000000000
--- a/Lang/OxygenBasic/Eban-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Eban-numbers/OxygenBasic
\ No newline at end of file
diff --git a/Lang/OxygenBasic/Evaluate-binomial-coefficients b/Lang/OxygenBasic/Evaluate-binomial-coefficients
deleted file mode 120000
index 2fc6117dc9..0000000000
--- a/Lang/OxygenBasic/Evaluate-binomial-coefficients
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Evaluate-binomial-coefficients/OxygenBasic
\ No newline at end of file
diff --git a/Lang/OxygenBasic/FizzBuzz b/Lang/OxygenBasic/FizzBuzz
deleted file mode 120000
index 7f3e716c79..0000000000
--- a/Lang/OxygenBasic/FizzBuzz
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/FizzBuzz/OxygenBasic
\ No newline at end of file
diff --git a/Lang/OxygenBasic/Generate-lower-case-ASCII-alphabet b/Lang/OxygenBasic/Generate-lower-case-ASCII-alphabet
deleted file mode 120000
index dc06638a04..0000000000
--- a/Lang/OxygenBasic/Generate-lower-case-ASCII-alphabet
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Generate-lower-case-ASCII-alphabet/OxygenBasic
\ No newline at end of file
diff --git a/Lang/OxygenBasic/Hello-world-Newline-omission b/Lang/OxygenBasic/Hello-world-Newline-omission
deleted file mode 120000
index b315730342..0000000000
--- a/Lang/OxygenBasic/Hello-world-Newline-omission
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Newline-omission/OxygenBasic
\ No newline at end of file
diff --git a/Lang/OxygenBasic/Hello-world-Text b/Lang/OxygenBasic/Hello-world-Text
deleted file mode 120000
index 0286beeff0..0000000000
--- a/Lang/OxygenBasic/Hello-world-Text
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Text/OxygenBasic
\ No newline at end of file
diff --git a/Lang/OxygenBasic/Hofstadter-Q-sequence b/Lang/OxygenBasic/Hofstadter-Q-sequence
deleted file mode 120000
index 99d7dde29e..0000000000
--- a/Lang/OxygenBasic/Hofstadter-Q-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hofstadter-Q-sequence/OxygenBasic
\ No newline at end of file
diff --git a/Lang/OxygenBasic/Jewels-and-stones b/Lang/OxygenBasic/Jewels-and-stones
deleted file mode 120000
index af9c0e197d..0000000000
--- a/Lang/OxygenBasic/Jewels-and-stones
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jewels-and-stones/OxygenBasic
\ No newline at end of file
diff --git a/Lang/OxygenBasic/Josephus-problem b/Lang/OxygenBasic/Josephus-problem
deleted file mode 120000
index 26c79416e6..0000000000
--- a/Lang/OxygenBasic/Josephus-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Josephus-problem/OxygenBasic
\ No newline at end of file
diff --git a/Lang/OxygenBasic/Leonardo-numbers b/Lang/OxygenBasic/Leonardo-numbers
deleted file mode 120000
index 9d8949a99b..0000000000
--- a/Lang/OxygenBasic/Leonardo-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Leonardo-numbers/OxygenBasic
\ No newline at end of file
diff --git a/Lang/OxygenBasic/Loops-Continue b/Lang/OxygenBasic/Loops-Continue
deleted file mode 120000
index df4c4e529e..0000000000
--- a/Lang/OxygenBasic/Loops-Continue
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Continue/OxygenBasic
\ No newline at end of file
diff --git a/Lang/OxygenBasic/Numbers-with-equal-rises-and-falls b/Lang/OxygenBasic/Numbers-with-equal-rises-and-falls
deleted file mode 120000
index 0060a020b0..0000000000
--- a/Lang/OxygenBasic/Numbers-with-equal-rises-and-falls
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Numbers-with-equal-rises-and-falls/OxygenBasic
\ No newline at end of file
diff --git a/Lang/OxygenBasic/Primality-by-trial-division b/Lang/OxygenBasic/Primality-by-trial-division
deleted file mode 120000
index 90df6937ed..0000000000
--- a/Lang/OxygenBasic/Primality-by-trial-division
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Primality-by-trial-division/OxygenBasic
\ No newline at end of file
diff --git a/Lang/OxygenBasic/Repeat b/Lang/OxygenBasic/Repeat
deleted file mode 120000
index 56b4dec43d..0000000000
--- a/Lang/OxygenBasic/Repeat
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Repeat/OxygenBasic
\ No newline at end of file
diff --git a/Lang/OxygenBasic/Sudan-function b/Lang/OxygenBasic/Sudan-function
deleted file mode 120000
index 05a812bb81..0000000000
--- a/Lang/OxygenBasic/Sudan-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sudan-function/OxygenBasic
\ No newline at end of file
diff --git a/Lang/OxygenBasic/Tau-number b/Lang/OxygenBasic/Tau-number
deleted file mode 120000
index 4f73054594..0000000000
--- a/Lang/OxygenBasic/Tau-number
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tau-number/OxygenBasic
\ No newline at end of file
diff --git a/Lang/Oz/FizzBuzz b/Lang/Oz/FizzBuzz
new file mode 120000
index 0000000000..287980acd6
--- /dev/null
+++ b/Lang/Oz/FizzBuzz
@@ -0,0 +1 @@
+../../Task/FizzBuzz/Oz
\ No newline at end of file
diff --git a/Lang/Oz/Miller-Rabin-primality-test b/Lang/Oz/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..e6999d8858
--- /dev/null
+++ b/Lang/Oz/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/Oz
\ No newline at end of file
diff --git a/Lang/PARI-GP/00-LANG.txt b/Lang/PARI-GP/00-LANG.txt
index 81b37f3de6..bacfec6d7d 100644
--- a/Lang/PARI-GP/00-LANG.txt
+++ b/Lang/PARI-GP/00-LANG.txt
@@ -17,7 +17,7 @@ PARI/GP is a widely used computer algebra system designed for fast computations
PARI/GP is composed of two parts: a [[C]] library called PARI and an interface, gp, to this library. GP scripts are concise, easy to write, and resemble mathematical language. (Terminology: the scripting language of gp is called GP.)
-PARI was written by Henri Cohen and others at Université de Bordeaux; Aurel Page is the current project leader. gp was originally written by Dominique Bernardi, then maintained and enhanced by Karim Belabas and Ilya Zakharevich, and finally rewritten by Bill Allombert.
+PARI was written by Henri Cohen and others at Université de Bordeaux and is now maintained by Karim Belabas. gp was originally written by Dominique Bernardi, then maintained and enhanced by Karim Belabas and Ilya Zakharevich, and finally rewritten by Bill Allombert.
== Getting PARI/GP ==
PARI/GP can be used in many different operating systems. This is a reasonably comprehensive list of currently-supported systems; for other systems, please use the [https://pari.math.u-bordeaux.fr/lists-index.html mailing lists].
@@ -219,16 +219,12 @@ If you want to program with PARI, many languages are supported:
** [https://pari.math.u-bordeaux.fr/Events/PARI2017c/talks/TAN2.pdf Théorie algébrique des nombres avancée] (22 pp.)
** [https://pari.math.u-bordeaux.fr/Events/PARI2017c/talks/ecc.pdf Courbes elliptiques sur les corps finis] (4 pp.)
*[http://w3.countnumber.de/fischer/res-ZT2007/PariByExample.pdf Erste Schritte mit PARI/GP] by Lars Fischer (13 pp., 2007; German)
-* [https://www.youtube.com/watch?v=I_GfMUGAlns Pari Gp مع NotPad++] by NoorDeen Rahmani (2020; 2:46; Arabic) -- setting up Notepad++ for syntax highlighting for PARI/GP.
+*[https://www.youtube.com/watch?v=I_GfMUGAlns Pari Gp مع NotPad++] by NoorDeen Rahmani (2020; 2:46; Arabic) -- setting up Notepad++ for syntax highlighting for PARI/GP.
==== Video tutorials ====
* [https://www.youtube.com/watch?v=RQLqQHu7i0Y Pari/GP Tutorial: Basics] by Leandro Junes (2020, 19:04)
-* [https://www.youtube.com/watch?v=FeG0BYRrDOE&t=12m Video demo of RSA in PARI/GP] by Maren1955 (2014, 17:39)
-* Video tutorials, parts [http://www.youtube.com/watch?v=0G-9JzlrzBM 1] [http://www.youtube.com/watch?v=d7i0rv59hns 2] [http://www.youtube.com/watch?v=wCyU2n-G-pk 3] [http://www.youtube.com/watch?v=WOCuBvK8O6Q 4] (2011, appx. 20 minutes)
-
-== Syntax highlighting ==
-* [https://github.com/notepad-plus-plus/userDefinedLanguages/blob/master/UDLs/PARI-GP_by-third_maths.xml Notepad++]
-* [https://www.youtube.com/watch?v=I_GfMUGAlns Pari Gp مع NotPad++] (Arabic tutorial)
+*[https://www.youtube.com/watch?v=FeG0BYRrDOE&t=12m Video demo of RSA in PARI/GP] by Maren1955 (2014, 17:39)
+*Video tutorials, parts [http://www.youtube.com/watch?v=0G-9JzlrzBM 1] [http://www.youtube.com/watch?v=d7i0rv59hns 2] [http://www.youtube.com/watch?v=wCyU2n-G-pk 3] [http://www.youtube.com/watch?v=WOCuBvK8O6Q 4] (2011, appx. 20 minutes)
=== Papers on PARI/GP ===
* Karim Belabas and Henri Cohen, [https://arxiv.org/abs/1810.00547 Modular Forms in Pari/GP], ''Research in the Mathematical Sciences'' '''5''':37 (2018)
diff --git a/Lang/PARI-GP/4-rings-or-4-squares-puzzle b/Lang/PARI-GP/4-rings-or-4-squares-puzzle
deleted file mode 120000
index b8cfa5a07c..0000000000
--- a/Lang/PARI-GP/4-rings-or-4-squares-puzzle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/4-rings-or-4-squares-puzzle/PARI-GP
\ No newline at end of file
diff --git a/Lang/PARI-GP/Achilles-numbers b/Lang/PARI-GP/Achilles-numbers
deleted file mode 120000
index 73f3f645b5..0000000000
--- a/Lang/PARI-GP/Achilles-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Achilles-numbers/PARI-GP
\ No newline at end of file
diff --git a/Lang/PARI-GP/Almkvist-Giullera-formula-for-pi b/Lang/PARI-GP/Almkvist-Giullera-formula-for-pi
deleted file mode 120000
index 53d950c5f0..0000000000
--- a/Lang/PARI-GP/Almkvist-Giullera-formula-for-pi
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Almkvist-Giullera-formula-for-pi/PARI-GP
\ No newline at end of file
diff --git a/Lang/PARI-GP/Attractive-numbers b/Lang/PARI-GP/Attractive-numbers
deleted file mode 120000
index 9c5ab01706..0000000000
--- a/Lang/PARI-GP/Attractive-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Attractive-numbers/PARI-GP
\ No newline at end of file
diff --git a/Lang/PARI-GP/Bell-numbers b/Lang/PARI-GP/Bell-numbers
deleted file mode 120000
index c0de777713..0000000000
--- a/Lang/PARI-GP/Bell-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bell-numbers/PARI-GP
\ No newline at end of file
diff --git a/Lang/PARI-GP/Disarium-numbers b/Lang/PARI-GP/Disarium-numbers
deleted file mode 120000
index e21e95674b..0000000000
--- a/Lang/PARI-GP/Disarium-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Disarium-numbers/PARI-GP
\ No newline at end of file
diff --git a/Lang/PARI-GP/Empty-program b/Lang/PARI-GP/Empty-program
new file mode 120000
index 0000000000..e5621857fc
--- /dev/null
+++ b/Lang/PARI-GP/Empty-program
@@ -0,0 +1 @@
+../../Task/Empty-program/PARI-GP
\ No newline at end of file
diff --git a/Lang/PARI-GP/Gapful-numbers b/Lang/PARI-GP/Gapful-numbers
deleted file mode 120000
index a3ce3c2de1..0000000000
--- a/Lang/PARI-GP/Gapful-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Gapful-numbers/PARI-GP
\ No newline at end of file
diff --git a/Lang/PARI-GP/Meissel-Mertens-constant b/Lang/PARI-GP/Meissel-Mertens-constant
new file mode 120000
index 0000000000..b03a10e2fd
--- /dev/null
+++ b/Lang/PARI-GP/Meissel-Mertens-constant
@@ -0,0 +1 @@
+../../Task/Meissel-Mertens-constant/PARI-GP
\ No newline at end of file
diff --git a/Lang/PARI-GP/Miller-Rabin-primality-test b/Lang/PARI-GP/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..6c17b6de21
--- /dev/null
+++ b/Lang/PARI-GP/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/PARI-GP
\ No newline at end of file
diff --git a/Lang/PARI-GP/Pell-numbers b/Lang/PARI-GP/Pell-numbers
deleted file mode 120000
index 6dc31a644a..0000000000
--- a/Lang/PARI-GP/Pell-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pell-numbers/PARI-GP
\ No newline at end of file
diff --git a/Lang/PARI-GP/Prime-numbers-whose-neighboring-pairs-are-tetraprimes b/Lang/PARI-GP/Prime-numbers-whose-neighboring-pairs-are-tetraprimes
deleted file mode 120000
index 497a956889..0000000000
--- a/Lang/PARI-GP/Prime-numbers-whose-neighboring-pairs-are-tetraprimes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Prime-numbers-whose-neighboring-pairs-are-tetraprimes/PARI-GP
\ No newline at end of file
diff --git a/Lang/PARI-GP/Quaternion-type b/Lang/PARI-GP/Quaternion-type
new file mode 120000
index 0000000000..87636fd8d1
--- /dev/null
+++ b/Lang/PARI-GP/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/PARI-GP
\ No newline at end of file
diff --git a/Lang/PARI-GP/Sorting-Algorithms-Circle-Sort b/Lang/PARI-GP/Sorting-Algorithms-Circle-Sort
new file mode 120000
index 0000000000..2e42235ea5
--- /dev/null
+++ b/Lang/PARI-GP/Sorting-Algorithms-Circle-Sort
@@ -0,0 +1 @@
+../../Task/Sorting-Algorithms-Circle-Sort/PARI-GP
\ No newline at end of file
diff --git a/Lang/PARI-GP/Tonelli-Shanks-algorithm b/Lang/PARI-GP/Tonelli-Shanks-algorithm
deleted file mode 120000
index de551c5a5b..0000000000
--- a/Lang/PARI-GP/Tonelli-Shanks-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tonelli-Shanks-algorithm/PARI-GP
\ No newline at end of file
diff --git a/Lang/PHP/00-LANG.txt b/Lang/PHP/00-LANG.txt
index 894fa89337..ad1d2b043d 100644
--- a/Lang/PHP/00-LANG.txt
+++ b/Lang/PHP/00-LANG.txt
@@ -13,13 +13,4 @@
'''PHP''' (PHP: Hypertext Preprocessor) is a [[reflective programming]] language originally designed for producing dynamic Web pages. PHP is used mainly in server-side application software, but can be used from a command line interface or in standalone graphical applications.
==Citations==
-* [[wp:PHP|Wikipedia:PHP]]
-
-==External links==
-=== Online compilers ===
-* [https://onlinephp.io/ PHP Sandbox - Execute PHP code online through your browser] (online compiler)
-* [https://www.mycompiler.io/new/php Create a new PHP program - myCompiler - myCompiler] (online compiler)
-
-=== Tutorials and manuals ===
-* [https://www.w3schools.com/php/default.asp PHP Tutorial] on [https://www.w3schools.com www.w3schools.com]
-* [https://www.geeksforgeeks.org/php/php-tutorial/ PHP Tutorial - GeeksforGeeks]
\ No newline at end of file
+* [[wp:PHP|Wikipedia:PHP]]
\ No newline at end of file
diff --git a/Lang/PHP/AKS-test-for-primes b/Lang/PHP/AKS-test-for-primes
deleted file mode 120000
index e35d324f89..0000000000
--- a/Lang/PHP/AKS-test-for-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/AKS-test-for-primes/PHP
\ No newline at end of file
diff --git a/Lang/PHP/Abbreviations-automatic b/Lang/PHP/Abbreviations-automatic
deleted file mode 120000
index 30112aa9b6..0000000000
--- a/Lang/PHP/Abbreviations-automatic
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abbreviations-automatic/PHP
\ No newline at end of file
diff --git a/Lang/PHP/Abundant-deficient-and-perfect-number-classifications b/Lang/PHP/Abundant-deficient-and-perfect-number-classifications
deleted file mode 120000
index c5476da28d..0000000000
--- a/Lang/PHP/Abundant-deficient-and-perfect-number-classifications
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abundant-deficient-and-perfect-number-classifications/PHP
\ No newline at end of file
diff --git a/Lang/PHP/Abundant-odd-numbers b/Lang/PHP/Abundant-odd-numbers
deleted file mode 120000
index c610a0d9cd..0000000000
--- a/Lang/PHP/Abundant-odd-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abundant-odd-numbers/PHP
\ No newline at end of file
diff --git a/Lang/PHP/Angle-difference-between-two-bearings b/Lang/PHP/Angle-difference-between-two-bearings
deleted file mode 120000
index 357602b50f..0000000000
--- a/Lang/PHP/Angle-difference-between-two-bearings
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Angle-difference-between-two-bearings/PHP
\ No newline at end of file
diff --git a/Lang/PHP/Arithmetic-numbers b/Lang/PHP/Arithmetic-numbers
deleted file mode 120000
index 21fbcc7304..0000000000
--- a/Lang/PHP/Arithmetic-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-numbers/PHP
\ No newline at end of file
diff --git a/Lang/PHP/Bell-numbers b/Lang/PHP/Bell-numbers
deleted file mode 120000
index 879d53dae5..0000000000
--- a/Lang/PHP/Bell-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bell-numbers/PHP
\ No newline at end of file
diff --git a/Lang/PHP/Brazilian-numbers b/Lang/PHP/Brazilian-numbers
deleted file mode 120000
index 5bd899327e..0000000000
--- a/Lang/PHP/Brazilian-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Brazilian-numbers/PHP
\ No newline at end of file
diff --git a/Lang/PHP/Diversity-prediction-theorem b/Lang/PHP/Diversity-prediction-theorem
deleted file mode 120000
index a50f50e661..0000000000
--- a/Lang/PHP/Diversity-prediction-theorem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Diversity-prediction-theorem/PHP
\ No newline at end of file
diff --git a/Lang/PHP/Gamma-function b/Lang/PHP/Gamma-function
deleted file mode 120000
index 4d00e2f50d..0000000000
--- a/Lang/PHP/Gamma-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Gamma-function/PHP
\ No newline at end of file
diff --git a/Lang/PHP/Horizontal-sundial-calculations b/Lang/PHP/Horizontal-sundial-calculations
deleted file mode 120000
index a385f37a68..0000000000
--- a/Lang/PHP/Horizontal-sundial-calculations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Horizontal-sundial-calculations/PHP
\ No newline at end of file
diff --git a/Lang/PHP/Leonardo-numbers b/Lang/PHP/Leonardo-numbers
deleted file mode 120000
index 4b3cefd6f0..0000000000
--- a/Lang/PHP/Leonardo-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Leonardo-numbers/PHP
\ No newline at end of file
diff --git a/Lang/PHP/M-bius-function b/Lang/PHP/M-bius-function
deleted file mode 120000
index 6f4e3a47bb..0000000000
--- a/Lang/PHP/M-bius-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/M-bius-function/PHP
\ No newline at end of file
diff --git a/Lang/PHP/Magic-constant b/Lang/PHP/Magic-constant
deleted file mode 120000
index b67d20fb19..0000000000
--- a/Lang/PHP/Magic-constant
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Magic-constant/PHP
\ No newline at end of file
diff --git a/Lang/PHP/Map-range b/Lang/PHP/Map-range
deleted file mode 120000
index 07d5696e85..0000000000
--- a/Lang/PHP/Map-range
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Map-range/PHP
\ No newline at end of file
diff --git a/Lang/PHP/Miller-Rabin-primality-test b/Lang/PHP/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..bff04d1a83
--- /dev/null
+++ b/Lang/PHP/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/PHP
\ No newline at end of file
diff --git a/Lang/PHP/Multifactorial b/Lang/PHP/Multifactorial
deleted file mode 120000
index a4051140a1..0000000000
--- a/Lang/PHP/Multifactorial
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Multifactorial/PHP
\ No newline at end of file
diff --git a/Lang/PHP/Partial-function-application b/Lang/PHP/Partial-function-application
deleted file mode 120000
index 8596466c3e..0000000000
--- a/Lang/PHP/Partial-function-application
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Partial-function-application/PHP
\ No newline at end of file
diff --git a/Lang/PHP/Prime-decomposition b/Lang/PHP/Prime-decomposition
deleted file mode 120000
index 6265ac9618..0000000000
--- a/Lang/PHP/Prime-decomposition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Prime-decomposition/PHP
\ No newline at end of file
diff --git a/Lang/PHP/Square-free-integers b/Lang/PHP/Square-free-integers
deleted file mode 120000
index 49d9fb45c0..0000000000
--- a/Lang/PHP/Square-free-integers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Square-free-integers/PHP
\ No newline at end of file
diff --git a/Lang/PHP/Statistics-Basic b/Lang/PHP/Statistics-Basic
deleted file mode 120000
index 199b45c315..0000000000
--- a/Lang/PHP/Statistics-Basic
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Statistics-Basic/PHP
\ No newline at end of file
diff --git a/Lang/PHP/Statistics-Normal-distribution b/Lang/PHP/Statistics-Normal-distribution
deleted file mode 120000
index e8fce08a80..0000000000
--- a/Lang/PHP/Statistics-Normal-distribution
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Statistics-Normal-distribution/PHP
\ No newline at end of file
diff --git a/Lang/PHP/Tau-number b/Lang/PHP/Tau-number
deleted file mode 120000
index 67a4445d30..0000000000
--- a/Lang/PHP/Tau-number
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tau-number/PHP
\ No newline at end of file
diff --git a/Lang/PHP/Water-collected-between-towers b/Lang/PHP/Water-collected-between-towers
deleted file mode 120000
index 524c5ae99b..0000000000
--- a/Lang/PHP/Water-collected-between-towers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Water-collected-between-towers/PHP
\ No newline at end of file
diff --git a/Lang/PILOT/00-LANG.txt b/Lang/PILOT/00-LANG.txt
index 5e238de7ae..742582e7c0 100644
--- a/Lang/PILOT/00-LANG.txt
+++ b/Lang/PILOT/00-LANG.txt
@@ -9,6 +9,4 @@ NO:Sorry, it was Napoleon Bonaparte.
PILOT was also marketed in the 1980s as a first programming language for children and beginners, including in extended versions supporting turtle graphics; and it even found use as a scripting language under CP/M.
-Keywords—written in block capitals in the example above—are case-insensitive and can usually be abbreviated to one or two letters (T for TYPE, JM for JUMPMATCH). The only data types supported are strings and integers.
-=== External Links ===
-[https://handwiki.org/wiki/PILOT HandWiki PILOT], where you can find a list of PILOT implementations.
\ No newline at end of file
+Keywords—written in block capitals in the example above—are case-insensitive and can usually be abbreviated to one or two letters (T for TYPE, JM for JUMPMATCH). The only data types supported are strings and integers.
\ No newline at end of file
diff --git a/Lang/PL-I-80/Additive-primes b/Lang/PL-I-80/Additive-primes
deleted file mode 120000
index a065cd3d8e..0000000000
--- a/Lang/PL-I-80/Additive-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Additive-primes/PL-I-80
\ No newline at end of file
diff --git a/Lang/PL-I-80/Character-codes b/Lang/PL-I-80/Character-codes
deleted file mode 120000
index c19a7eafa1..0000000000
--- a/Lang/PL-I-80/Character-codes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Character-codes/PL-I-80
\ No newline at end of file
diff --git a/Lang/PL-I-80/Integer-overflow b/Lang/PL-I-80/Integer-overflow
deleted file mode 120000
index f1947b64b4..0000000000
--- a/Lang/PL-I-80/Integer-overflow
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Integer-overflow/PL-I-80
\ No newline at end of file
diff --git a/Lang/PL-I-80/Square-free-integers b/Lang/PL-I-80/Square-free-integers
deleted file mode 120000
index 6f8a00edb8..0000000000
--- a/Lang/PL-I-80/Square-free-integers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Square-free-integers/PL-I-80
\ No newline at end of file
diff --git a/Lang/PL-I-80/Strip-whitespace-from-a-string-Top-and-tail b/Lang/PL-I-80/Strip-whitespace-from-a-string-Top-and-tail
deleted file mode 120000
index ac54cb4639..0000000000
--- a/Lang/PL-I-80/Strip-whitespace-from-a-string-Top-and-tail
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strip-whitespace-from-a-string-Top-and-tail/PL-I-80
\ No newline at end of file
diff --git a/Lang/PL-I/00-LANG.txt b/Lang/PL-I/00-LANG.txt
index 3b9ba57193..e9ccbaa140 100644
--- a/Lang/PL-I/00-LANG.txt
+++ b/Lang/PL-I/00-LANG.txt
@@ -84,8 +84,4 @@ The pre-processor keywords are prefixed with a % (perce
==See Also==
* [[wp:PL/I|PL/I on Wikipedia]]
* [[PL/M]]
-* [[Polyglot:PL/I and PL/M]]
-
-==External links==
-* [http://teampli.net/index.html Team PL/I]
-** [http://teampli.net/candt.html PL/I Compilers and Tools]
\ No newline at end of file
+* [[Polyglot:PL/I and PL/M]]
\ No newline at end of file
diff --git a/Lang/PL-I/Abundant-odd-numbers b/Lang/PL-I/Abundant-odd-numbers
deleted file mode 120000
index 666cd2c37f..0000000000
--- a/Lang/PL-I/Abundant-odd-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abundant-odd-numbers/PL-I
\ No newline at end of file
diff --git a/Lang/PL-I/Arithmetic-derivative b/Lang/PL-I/Arithmetic-derivative
deleted file mode 120000
index 37f109623d..0000000000
--- a/Lang/PL-I/Arithmetic-derivative
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-derivative/PL-I
\ No newline at end of file
diff --git a/Lang/PL-I/Arithmetic-numbers b/Lang/PL-I/Arithmetic-numbers
deleted file mode 120000
index 6912369ef9..0000000000
--- a/Lang/PL-I/Arithmetic-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-numbers/PL-I
\ No newline at end of file
diff --git a/Lang/PL-I/Bell-numbers b/Lang/PL-I/Bell-numbers
deleted file mode 120000
index 4afaf5b11f..0000000000
--- a/Lang/PL-I/Bell-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bell-numbers/PL-I
\ No newline at end of file
diff --git a/Lang/PL-I/Diversity-prediction-theorem b/Lang/PL-I/Diversity-prediction-theorem
deleted file mode 120000
index a449ec2ac9..0000000000
--- a/Lang/PL-I/Diversity-prediction-theorem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Diversity-prediction-theorem/PL-I
\ No newline at end of file
diff --git a/Lang/PL-I/Fairshare-between-two-and-more b/Lang/PL-I/Fairshare-between-two-and-more
deleted file mode 120000
index 38f481a639..0000000000
--- a/Lang/PL-I/Fairshare-between-two-and-more
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fairshare-between-two-and-more/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/Tau-number b/Lang/PL-I/Tau-number
deleted file mode 120000
index 3dade8db80..0000000000
--- a/Lang/PL-I/Tau-number
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tau-number/PL-I
\ No newline at end of file
diff --git a/Lang/PL-I/Zeckendorf-number-representation b/Lang/PL-I/Zeckendorf-number-representation
deleted file mode 120000
index eabc5808d1..0000000000
--- a/Lang/PL-I/Zeckendorf-number-representation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Zeckendorf-number-representation/PL-I
\ No newline at end of file
diff --git a/Lang/PL-M/100-doors b/Lang/PL-M/100-doors
new file mode 120000
index 0000000000..fb7e956c0e
--- /dev/null
+++ b/Lang/PL-M/100-doors
@@ -0,0 +1 @@
+../../Task/100-doors/PL-M
\ No newline at end of file
diff --git a/Lang/PL-M/Arithmetic-derivative b/Lang/PL-M/Arithmetic-derivative
deleted file mode 120000
index 13f3e396fe..0000000000
--- a/Lang/PL-M/Arithmetic-derivative
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-derivative/PL-M
\ No newline at end of file
diff --git a/Lang/PL-M/Draw-a-cuboid b/Lang/PL-M/Draw-a-cuboid
deleted file mode 120000
index c6084a0c66..0000000000
--- a/Lang/PL-M/Draw-a-cuboid
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Draw-a-cuboid/PL-M
\ No newline at end of file
diff --git a/Lang/PL-M/Empty-program b/Lang/PL-M/Empty-program
deleted file mode 120000
index 80a556ac57..0000000000
--- a/Lang/PL-M/Empty-program
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Empty-program/PL-M
\ No newline at end of file
diff --git a/Lang/PL-M/Move-to-front-algorithm b/Lang/PL-M/Move-to-front-algorithm
deleted file mode 120000
index 23bec2ef3f..0000000000
--- a/Lang/PL-M/Move-to-front-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Move-to-front-algorithm/PL-M
\ No newline at end of file
diff --git a/Lang/PL-M/Nested-function b/Lang/PL-M/Nested-function
deleted file mode 120000
index 2fbc4399dd..0000000000
--- a/Lang/PL-M/Nested-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nested-function/PL-M
\ No newline at end of file
diff --git a/Lang/PL-M/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors b/Lang/PL-M/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
similarity index 100%
rename from Lang/PL-M/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors
rename to Lang/PL-M/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
diff --git a/Lang/PL-M/Super-d-numbers b/Lang/PL-M/Super-d-numbers
deleted file mode 120000
index bb5c98f089..0000000000
--- a/Lang/PL-M/Super-d-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Super-d-numbers/PL-M
\ No newline at end of file
diff --git a/Lang/PL-M/The-Twelve-Days-of-Christmas b/Lang/PL-M/The-Twelve-Days-of-Christmas
deleted file mode 120000
index a94c814e99..0000000000
--- a/Lang/PL-M/The-Twelve-Days-of-Christmas
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/The-Twelve-Days-of-Christmas/PL-M
\ No newline at end of file
diff --git a/Lang/PL-M/Zeckendorf-number-representation b/Lang/PL-M/Zeckendorf-number-representation
deleted file mode 120000
index 3d48575a07..0000000000
--- a/Lang/PL-M/Zeckendorf-number-representation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Zeckendorf-number-representation/PL-M
\ No newline at end of file
diff --git a/Lang/POV-Ray/Bitmap b/Lang/POV-Ray/Bitmap
deleted file mode 120000
index 90fece7e75..0000000000
--- a/Lang/POV-Ray/Bitmap
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bitmap/POV-Ray
\ No newline at end of file
diff --git a/Lang/POV-Ray/Maze-generation b/Lang/POV-Ray/Maze-generation
deleted file mode 120000
index 724f710098..0000000000
--- a/Lang/POV-Ray/Maze-generation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Maze-generation/POV-Ray
\ No newline at end of file
diff --git a/Lang/PROMAL/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/PROMAL/Sequence-smallest-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/PROMAL/Sequence:-smallest-number-with-exactly-n-divisors
rename to Lang/PROMAL/Sequence-smallest-number-with-exactly-n-divisors
diff --git a/Lang/Pascal-P/00-LANG.txt b/Lang/Pascal-P/00-LANG.txt
deleted file mode 100644
index ce87f461ab..0000000000
--- a/Lang/Pascal-P/00-LANG.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-{{language|Pascal-P
-|exec=bytecode
-|strength=strong
-|safety=safe
-|express=explicit
-|checking=static
-|parampass=both
-|gc=no
-|LCT=yes
-}}{{language programming paradigm|Procedural}}
-
-{{implementation|Pascal}}{{Compiler}}
-
-'''Pascal-P''' is a renowned [[:Category:Pascal|Pascal]] compiler designed to generate [[bytecode]], known as ''p-code'', and interpret the resulting code. The compilers and interpreters of Pascal-P are developed using the Pascal programming language.
-
-Originally developed in Zurich in 1973, the earliest iteration of Pascal-P, known as Pascal-P1, laid the foundation for subsequent versions, including P2, P3, and P4. While versions P1 and P3 are no longer accessible, P2 is still readily available and has notably served as the base for the UCSD system. Furthermore, there exist derivative versions, such as P5 and P6, which have evolved from the core Pascal-P compiler.
-
-Notably, Pascal-P is heralded for its portability, as it is capable of generating code suitable for a hypothetical stack computer system. This feature enhances its versatility and applicability across various platforms and environments. Additionally, Pascal-P has made significant contributions to the realm of education, often being utilized as an educational tool to impart knowledge and foster learning in the field of computer programming.
-
-== External links ==
-* [http://pascal.hansotten.com/niklaus-wirth/px-compilers Px compilers] on [http://pascal.hansotten.com/ Pascal for small machines]
-* [https://sourceforge.net/projects/pascalp4/ Scott Moore's version of P4] The package includes crucial components essential for program execution on the MS-DOS platform - the compiler and the p-code interpreter executables.
-* [https://www.moorecad.com/standardpascal/p4.html The P4 compiler] on [https://www.moorecad.com/ Scott Moore's page]
\ No newline at end of file
diff --git a/Lang/Pascal-P/00-META.yaml b/Lang/Pascal-P/00-META.yaml
deleted file mode 100644
index 5af4159a1f..0000000000
--- a/Lang/Pascal-P/00-META.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-from: http://rosettacode.org/wiki/Category:Pascal-P
diff --git a/Lang/Pascal-P/Abundant-deficient-and-perfect-number-classifications b/Lang/Pascal-P/Abundant-deficient-and-perfect-number-classifications
deleted file mode 120000
index 248c55dcbd..0000000000
--- a/Lang/Pascal-P/Abundant-deficient-and-perfect-number-classifications
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abundant-deficient-and-perfect-number-classifications/Pascal-P
\ No newline at end of file
diff --git a/Lang/Pascal-P/Abundant-odd-numbers b/Lang/Pascal-P/Abundant-odd-numbers
deleted file mode 120000
index 745698036f..0000000000
--- a/Lang/Pascal-P/Abundant-odd-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abundant-odd-numbers/Pascal-P
\ No newline at end of file
diff --git a/Lang/Pascal-P/Angle-difference-between-two-bearings b/Lang/Pascal-P/Angle-difference-between-two-bearings
deleted file mode 120000
index 506fbb7a95..0000000000
--- a/Lang/Pascal-P/Angle-difference-between-two-bearings
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Angle-difference-between-two-bearings/Pascal-P
\ No newline at end of file
diff --git a/Lang/Pascal-P/Anti-primes b/Lang/Pascal-P/Anti-primes
deleted file mode 120000
index fe2e4f4a10..0000000000
--- a/Lang/Pascal-P/Anti-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Anti-primes/Pascal-P
\ No newline at end of file
diff --git a/Lang/Pascal-P/Arithmetic-numbers b/Lang/Pascal-P/Arithmetic-numbers
deleted file mode 120000
index 3ad1b31145..0000000000
--- a/Lang/Pascal-P/Arithmetic-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-numbers/Pascal-P
\ No newline at end of file
diff --git a/Lang/Pascal-P/Bell-numbers b/Lang/Pascal-P/Bell-numbers
deleted file mode 120000
index fccbe75006..0000000000
--- a/Lang/Pascal-P/Bell-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bell-numbers/Pascal-P
\ No newline at end of file
diff --git a/Lang/Pascal-P/Brazilian-numbers b/Lang/Pascal-P/Brazilian-numbers
deleted file mode 120000
index f79a88ea27..0000000000
--- a/Lang/Pascal-P/Brazilian-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Brazilian-numbers/Pascal-P
\ No newline at end of file
diff --git a/Lang/Pascal-P/CUSIP b/Lang/Pascal-P/CUSIP
deleted file mode 120000
index 3a5ce6c0b7..0000000000
--- a/Lang/Pascal-P/CUSIP
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/CUSIP/Pascal-P
\ No newline at end of file
diff --git a/Lang/Pascal-P/Catalan-numbers b/Lang/Pascal-P/Catalan-numbers
deleted file mode 120000
index 9dee46f2ca..0000000000
--- a/Lang/Pascal-P/Catalan-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Catalan-numbers/Pascal-P
\ No newline at end of file
diff --git a/Lang/Pascal-P/Cistercian-numerals b/Lang/Pascal-P/Cistercian-numerals
deleted file mode 120000
index 3169bb4737..0000000000
--- a/Lang/Pascal-P/Cistercian-numerals
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cistercian-numerals/Pascal-P
\ No newline at end of file
diff --git a/Lang/Pascal-P/Day-of-the-week b/Lang/Pascal-P/Day-of-the-week
deleted file mode 120000
index 04c1bf395c..0000000000
--- a/Lang/Pascal-P/Day-of-the-week
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Day-of-the-week/Pascal-P
\ No newline at end of file
diff --git a/Lang/Pascal-P/Diversity-prediction-theorem b/Lang/Pascal-P/Diversity-prediction-theorem
deleted file mode 120000
index 1c77b9f4a8..0000000000
--- a/Lang/Pascal-P/Diversity-prediction-theorem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Diversity-prediction-theorem/Pascal-P
\ No newline at end of file
diff --git a/Lang/Pascal-P/Dot-product b/Lang/Pascal-P/Dot-product
deleted file mode 120000
index 1354e110a2..0000000000
--- a/Lang/Pascal-P/Dot-product
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dot-product/Pascal-P
\ No newline at end of file
diff --git a/Lang/Pascal-P/Ethiopian-multiplication b/Lang/Pascal-P/Ethiopian-multiplication
deleted file mode 120000
index cf25f4fb51..0000000000
--- a/Lang/Pascal-P/Ethiopian-multiplication
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ethiopian-multiplication/Pascal-P
\ No newline at end of file
diff --git a/Lang/Pascal-P/Factors-of-an-integer b/Lang/Pascal-P/Factors-of-an-integer
deleted file mode 120000
index db1f886bee..0000000000
--- a/Lang/Pascal-P/Factors-of-an-integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factors-of-an-integer/Pascal-P
\ No newline at end of file
diff --git a/Lang/Pascal-P/FizzBuzz b/Lang/Pascal-P/FizzBuzz
deleted file mode 120000
index 8d0c857c1d..0000000000
--- a/Lang/Pascal-P/FizzBuzz
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/FizzBuzz/Pascal-P
\ No newline at end of file
diff --git a/Lang/Pascal-P/Gamma-function b/Lang/Pascal-P/Gamma-function
deleted file mode 120000
index b35d39ded3..0000000000
--- a/Lang/Pascal-P/Gamma-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Gamma-function/Pascal-P
\ No newline at end of file
diff --git a/Lang/Pascal-P/Generate-lower-case-ASCII-alphabet b/Lang/Pascal-P/Generate-lower-case-ASCII-alphabet
deleted file mode 120000
index 54db5eb4c2..0000000000
--- a/Lang/Pascal-P/Generate-lower-case-ASCII-alphabet
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Generate-lower-case-ASCII-alphabet/Pascal-P
\ No newline at end of file
diff --git a/Lang/Pascal-P/Horners-rule-for-polynomial-evaluation b/Lang/Pascal-P/Horners-rule-for-polynomial-evaluation
deleted file mode 120000
index 1bf2158b09..0000000000
--- a/Lang/Pascal-P/Horners-rule-for-polynomial-evaluation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Horners-rule-for-polynomial-evaluation/Pascal-P
\ No newline at end of file
diff --git a/Lang/Pascal-P/Josephus-problem b/Lang/Pascal-P/Josephus-problem
deleted file mode 120000
index ee86f2f03c..0000000000
--- a/Lang/Pascal-P/Josephus-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Josephus-problem/Pascal-P
\ No newline at end of file
diff --git a/Lang/Pascal-P/Leap-year b/Lang/Pascal-P/Leap-year
deleted file mode 120000
index e7c0275cd7..0000000000
--- a/Lang/Pascal-P/Leap-year
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Leap-year/Pascal-P
\ No newline at end of file
diff --git a/Lang/Pascal-P/Leonardo-numbers b/Lang/Pascal-P/Leonardo-numbers
deleted file mode 120000
index 33730eb927..0000000000
--- a/Lang/Pascal-P/Leonardo-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Leonardo-numbers/Pascal-P
\ No newline at end of file
diff --git a/Lang/Pascal-P/Levenshtein-distance b/Lang/Pascal-P/Levenshtein-distance
deleted file mode 120000
index 369c4fda51..0000000000
--- a/Lang/Pascal-P/Levenshtein-distance
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Levenshtein-distance/Pascal-P
\ No newline at end of file
diff --git a/Lang/Pascal-P/Long-year b/Lang/Pascal-P/Long-year
deleted file mode 120000
index 4a8c200f91..0000000000
--- a/Lang/Pascal-P/Long-year
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Long-year/Pascal-P
\ No newline at end of file
diff --git a/Lang/Pascal-P/M-bius-function b/Lang/Pascal-P/M-bius-function
deleted file mode 120000
index 5ac8d7d007..0000000000
--- a/Lang/Pascal-P/M-bius-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/M-bius-function/Pascal-P
\ No newline at end of file
diff --git a/Lang/Pascal-P/Magic-constant b/Lang/Pascal-P/Magic-constant
deleted file mode 120000
index d71a46b136..0000000000
--- a/Lang/Pascal-P/Magic-constant
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Magic-constant/Pascal-P
\ No newline at end of file
diff --git a/Lang/Pascal-P/Map-range b/Lang/Pascal-P/Map-range
deleted file mode 120000
index ecc77d75f6..0000000000
--- a/Lang/Pascal-P/Map-range
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Map-range/Pascal-P
\ No newline at end of file
diff --git a/Lang/Pascal-P/Multifactorial b/Lang/Pascal-P/Multifactorial
deleted file mode 120000
index 3a5245db30..0000000000
--- a/Lang/Pascal-P/Multifactorial
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Multifactorial/Pascal-P
\ No newline at end of file
diff --git a/Lang/Pascal-P/Periodic-table b/Lang/Pascal-P/Periodic-table
deleted file mode 120000
index d1e817f294..0000000000
--- a/Lang/Pascal-P/Periodic-table
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Periodic-table/Pascal-P
\ No newline at end of file
diff --git a/Lang/Pascal-P/Prime-decomposition b/Lang/Pascal-P/Prime-decomposition
deleted file mode 120000
index b9ce930a04..0000000000
--- a/Lang/Pascal-P/Prime-decomposition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Prime-decomposition/Pascal-P
\ No newline at end of file
diff --git a/Lang/Pascal-P/Ramer-Douglas-Peucker-line-simplification b/Lang/Pascal-P/Ramer-Douglas-Peucker-line-simplification
deleted file mode 120000
index 41e4d1e47d..0000000000
--- a/Lang/Pascal-P/Ramer-Douglas-Peucker-line-simplification
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ramer-Douglas-Peucker-line-simplification/Pascal-P
\ No newline at end of file
diff --git a/Lang/Pascal-P/Square-free-integers b/Lang/Pascal-P/Square-free-integers
deleted file mode 120000
index 011a7d78bb..0000000000
--- a/Lang/Pascal-P/Square-free-integers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Square-free-integers/Pascal-P
\ No newline at end of file
diff --git a/Lang/Pascal-P/Tau-number b/Lang/Pascal-P/Tau-number
deleted file mode 120000
index 23629ebb6c..0000000000
--- a/Lang/Pascal-P/Tau-number
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tau-number/Pascal-P
\ No newline at end of file
diff --git a/Lang/Pascal/Abundant-odd-numbers b/Lang/Pascal/Abundant-odd-numbers
new file mode 120000
index 0000000000..b58a9a885b
--- /dev/null
+++ b/Lang/Pascal/Abundant-odd-numbers
@@ -0,0 +1 @@
+../../Task/Abundant-odd-numbers/Pascal
\ No newline at end of file
diff --git a/Lang/Pascal/Bell-numbers b/Lang/Pascal/Bell-numbers
new file mode 120000
index 0000000000..c4ab57da43
--- /dev/null
+++ b/Lang/Pascal/Bell-numbers
@@ -0,0 +1 @@
+../../Task/Bell-numbers/Pascal
\ No newline at end of file
diff --git a/Lang/Pascal/Bioinformatics-base-count b/Lang/Pascal/Bioinformatics-base-count
new file mode 120000
index 0000000000..97aaee2dbb
--- /dev/null
+++ b/Lang/Pascal/Bioinformatics-base-count
@@ -0,0 +1 @@
+../../Task/Bioinformatics-base-count/Pascal
\ No newline at end of file
diff --git a/Lang/Pascal/Brazilian-numbers b/Lang/Pascal/Brazilian-numbers
new file mode 120000
index 0000000000..152f3a22d2
--- /dev/null
+++ b/Lang/Pascal/Brazilian-numbers
@@ -0,0 +1 @@
+../../Task/Brazilian-numbers/Pascal
\ No newline at end of file
diff --git a/Lang/Pascal/Count-the-coins b/Lang/Pascal/Count-the-coins
deleted file mode 120000
index 8d7999b667..0000000000
--- a/Lang/Pascal/Count-the-coins
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Count-the-coins/Pascal
\ No newline at end of file
diff --git a/Lang/Pascal/Date-manipulation b/Lang/Pascal/Date-manipulation
deleted file mode 120000
index 9edece533b..0000000000
--- a/Lang/Pascal/Date-manipulation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Date-manipulation/Pascal
\ No newline at end of file
diff --git a/Lang/Pascal/Ethiopian-multiplication b/Lang/Pascal/Ethiopian-multiplication
new file mode 120000
index 0000000000..53e5b905d2
--- /dev/null
+++ b/Lang/Pascal/Ethiopian-multiplication
@@ -0,0 +1 @@
+../../Task/Ethiopian-multiplication/Pascal
\ No newline at end of file
diff --git a/Lang/Pascal/FizzBuzz b/Lang/Pascal/FizzBuzz
new file mode 120000
index 0000000000..786dae3647
--- /dev/null
+++ b/Lang/Pascal/FizzBuzz
@@ -0,0 +1 @@
+../../Task/FizzBuzz/Pascal
\ No newline at end of file
diff --git a/Lang/Pascal/Gamma-function b/Lang/Pascal/Gamma-function
new file mode 120000
index 0000000000..f83dad18cb
--- /dev/null
+++ b/Lang/Pascal/Gamma-function
@@ -0,0 +1 @@
+../../Task/Gamma-function/Pascal
\ No newline at end of file
diff --git a/Lang/Pascal/Leap-year b/Lang/Pascal/Leap-year
new file mode 120000
index 0000000000..5eb674ed97
--- /dev/null
+++ b/Lang/Pascal/Leap-year
@@ -0,0 +1 @@
+../../Task/Leap-year/Pascal
\ No newline at end of file
diff --git a/Lang/Pascal/Levenshtein-distance b/Lang/Pascal/Levenshtein-distance
new file mode 120000
index 0000000000..aa9f13dc0f
--- /dev/null
+++ b/Lang/Pascal/Levenshtein-distance
@@ -0,0 +1 @@
+../../Task/Levenshtein-distance/Pascal
\ No newline at end of file
diff --git a/Lang/Pascal/Map-range b/Lang/Pascal/Map-range
new file mode 120000
index 0000000000..71c05c40ec
--- /dev/null
+++ b/Lang/Pascal/Map-range
@@ -0,0 +1 @@
+../../Task/Map-range/Pascal
\ No newline at end of file
diff --git a/Lang/Pascal/Prime-decomposition b/Lang/Pascal/Prime-decomposition
new file mode 120000
index 0000000000..7b392e005f
--- /dev/null
+++ b/Lang/Pascal/Prime-decomposition
@@ -0,0 +1 @@
+../../Task/Prime-decomposition/Pascal
\ No newline at end of file
diff --git a/Lang/Pascal/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors b/Lang/Pascal/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
similarity index 100%
rename from Lang/Pascal/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors
rename to Lang/Pascal/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
diff --git a/Lang/Pascal/Sorting-Algorithms-Circle-Sort b/Lang/Pascal/Sorting-Algorithms-Circle-Sort
new file mode 120000
index 0000000000..3100a6716d
--- /dev/null
+++ b/Lang/Pascal/Sorting-Algorithms-Circle-Sort
@@ -0,0 +1 @@
+../../Task/Sorting-Algorithms-Circle-Sort/Pascal
\ No newline at end of file
diff --git a/Lang/Pascal/Square-free-integers b/Lang/Pascal/Square-free-integers
new file mode 120000
index 0000000000..874a24625c
--- /dev/null
+++ b/Lang/Pascal/Square-free-integers
@@ -0,0 +1 @@
+../../Task/Square-free-integers/Pascal
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/00-LANG.txt b/Lang/PascalABC.NET/00-LANG.txt
index 7f652b8be9..d9efe4d43e 100644
--- a/Lang/PascalABC.NET/00-LANG.txt
+++ b/Lang/PascalABC.NET/00-LANG.txt
@@ -1,4 +1,4 @@
-{{language|site=https://pascalabc.net/en/}}
+{{language|PascalABC.NET}}
{{implementation|Pascal}}
PascalABC.NET is the new generation Pascal programming language that combines simplicity of classic Pascal, a great number of modern extensions and broad capabilities of Microsoft .NET Framework.
@@ -16,5 +16,4 @@ begin
end.
-==Tasks not implemented in PascalABC.NET==
-[[Tasks not implemented in PascalABC.NET]]
\ No newline at end of file
+{{unimpl_Page|PacalABC.NET}}
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/100-doors b/Lang/PascalABC.NET/100-doors
new file mode 120000
index 0000000000..ba816799a0
--- /dev/null
+++ b/Lang/PascalABC.NET/100-doors
@@ -0,0 +1 @@
+../../Task/100-doors/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/15-puzzle-game b/Lang/PascalABC.NET/15-puzzle-game
deleted file mode 120000
index caf890e56b..0000000000
--- a/Lang/PascalABC.NET/15-puzzle-game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/15-puzzle-game/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/15-puzzle-solver b/Lang/PascalABC.NET/15-puzzle-solver
deleted file mode 120000
index 73063f2237..0000000000
--- a/Lang/PascalABC.NET/15-puzzle-solver
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/15-puzzle-solver/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/99-bottles-of-beer b/Lang/PascalABC.NET/99-bottles-of-beer
deleted file mode 120000
index bc29442ab5..0000000000
--- a/Lang/PascalABC.NET/99-bottles-of-beer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/99-bottles-of-beer/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/A+B b/Lang/PascalABC.NET/A+B
deleted file mode 120000
index 7a5a9db498..0000000000
--- a/Lang/PascalABC.NET/A+B
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/A+B/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Abbreviations-easy b/Lang/PascalABC.NET/Abbreviations-easy
deleted file mode 120000
index ea782fa0b0..0000000000
--- a/Lang/PascalABC.NET/Abbreviations-easy
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abbreviations-easy/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Abbreviations-simple b/Lang/PascalABC.NET/Abbreviations-simple
deleted file mode 120000
index abc650feac..0000000000
--- a/Lang/PascalABC.NET/Abbreviations-simple
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abbreviations-simple/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Abstract-type b/Lang/PascalABC.NET/Abstract-type
deleted file mode 120000
index 305270825e..0000000000
--- a/Lang/PascalABC.NET/Abstract-type
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abstract-type/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Accumulator-factory b/Lang/PascalABC.NET/Accumulator-factory
deleted file mode 120000
index dd94a031d6..0000000000
--- a/Lang/PascalABC.NET/Accumulator-factory
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Accumulator-factory/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Ackermann-function b/Lang/PascalABC.NET/Ackermann-function
deleted file mode 120000
index c2fa2dd278..0000000000
--- a/Lang/PascalABC.NET/Ackermann-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ackermann-function/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Add-a-variable-to-a-class-instance-at-runtime b/Lang/PascalABC.NET/Add-a-variable-to-a-class-instance-at-runtime
deleted file mode 120000
index ec0970f459..0000000000
--- a/Lang/PascalABC.NET/Add-a-variable-to-a-class-instance-at-runtime
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Add-a-variable-to-a-class-instance-at-runtime/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Additive-primes b/Lang/PascalABC.NET/Additive-primes
deleted file mode 120000
index 0022732e2e..0000000000
--- a/Lang/PascalABC.NET/Additive-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Additive-primes/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Address-of-a-variable b/Lang/PascalABC.NET/Address-of-a-variable
deleted file mode 120000
index 8477592c7b..0000000000
--- a/Lang/PascalABC.NET/Address-of-a-variable
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Address-of-a-variable/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Amicable-pairs b/Lang/PascalABC.NET/Amicable-pairs
deleted file mode 120000
index e8f5a09925..0000000000
--- a/Lang/PascalABC.NET/Amicable-pairs
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Amicable-pairs/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Anagrams b/Lang/PascalABC.NET/Anagrams
deleted file mode 120000
index 2bec53abb4..0000000000
--- a/Lang/PascalABC.NET/Anagrams
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Anagrams/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Angle-difference-between-two-bearings b/Lang/PascalABC.NET/Angle-difference-between-two-bearings
deleted file mode 120000
index a9e8619c23..0000000000
--- a/Lang/PascalABC.NET/Angle-difference-between-two-bearings
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Angle-difference-between-two-bearings/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Angles-geometric-normalization-and-conversion b/Lang/PascalABC.NET/Angles-geometric-normalization-and-conversion
deleted file mode 120000
index 27c57b8ea0..0000000000
--- a/Lang/PascalABC.NET/Angles-geometric-normalization-and-conversion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Angles-geometric-normalization-and-conversion/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Anonymous-recursion b/Lang/PascalABC.NET/Anonymous-recursion
deleted file mode 120000
index 7a2a34d4d5..0000000000
--- a/Lang/PascalABC.NET/Anonymous-recursion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Anonymous-recursion/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Anti-primes b/Lang/PascalABC.NET/Anti-primes
deleted file mode 120000
index 0107c4a2bb..0000000000
--- a/Lang/PascalABC.NET/Anti-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Anti-primes/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Apply-a-callback-to-an-array b/Lang/PascalABC.NET/Apply-a-callback-to-an-array
deleted file mode 120000
index 88f34b5a9e..0000000000
--- a/Lang/PascalABC.NET/Apply-a-callback-to-an-array
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Apply-a-callback-to-an-array/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Approximate-equality b/Lang/PascalABC.NET/Approximate-equality
deleted file mode 120000
index 9d80191945..0000000000
--- a/Lang/PascalABC.NET/Approximate-equality
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Approximate-equality/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Arbitrary-precision-integers-included- b/Lang/PascalABC.NET/Arbitrary-precision-integers-included-
deleted file mode 120000
index 8e9998f39e..0000000000
--- a/Lang/PascalABC.NET/Arbitrary-precision-integers-included-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arbitrary-precision-integers-included-/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Archimedean-spiral b/Lang/PascalABC.NET/Archimedean-spiral
deleted file mode 120000
index 8c791b5144..0000000000
--- a/Lang/PascalABC.NET/Archimedean-spiral
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Archimedean-spiral/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Arithmetic-Complex b/Lang/PascalABC.NET/Arithmetic-Complex
deleted file mode 120000
index bccd03a873..0000000000
--- a/Lang/PascalABC.NET/Arithmetic-Complex
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-Complex/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Arithmetic-Integer b/Lang/PascalABC.NET/Arithmetic-Integer
deleted file mode 120000
index 30d5138cbd..0000000000
--- a/Lang/PascalABC.NET/Arithmetic-Integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-Integer/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Arithmetic-Rational b/Lang/PascalABC.NET/Arithmetic-Rational
deleted file mode 120000
index e1c3c085b7..0000000000
--- a/Lang/PascalABC.NET/Arithmetic-Rational
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-Rational/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Arithmetic-evaluation b/Lang/PascalABC.NET/Arithmetic-evaluation
deleted file mode 120000
index 816270d1cc..0000000000
--- a/Lang/PascalABC.NET/Arithmetic-evaluation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-evaluation/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Arithmetic-geometric-mean b/Lang/PascalABC.NET/Arithmetic-geometric-mean
deleted file mode 120000
index de68d8badc..0000000000
--- a/Lang/PascalABC.NET/Arithmetic-geometric-mean
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-geometric-mean/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Arithmetic-numbers b/Lang/PascalABC.NET/Arithmetic-numbers
deleted file mode 120000
index 91fbd5c07a..0000000000
--- a/Lang/PascalABC.NET/Arithmetic-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-numbers/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Array-concatenation b/Lang/PascalABC.NET/Array-concatenation
deleted file mode 120000
index bfe26798bc..0000000000
--- a/Lang/PascalABC.NET/Array-concatenation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Array-concatenation/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Arrays b/Lang/PascalABC.NET/Arrays
deleted file mode 120000
index 62dfb07030..0000000000
--- a/Lang/PascalABC.NET/Arrays
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arrays/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Ascending-primes b/Lang/PascalABC.NET/Ascending-primes
deleted file mode 120000
index 764168a0be..0000000000
--- a/Lang/PascalABC.NET/Ascending-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ascending-primes/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Assertions b/Lang/PascalABC.NET/Assertions
deleted file mode 120000
index bdc3ed57c2..0000000000
--- a/Lang/PascalABC.NET/Assertions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Assertions/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Associative-array-Creation b/Lang/PascalABC.NET/Associative-array-Creation
deleted file mode 120000
index fc1bef5cdb..0000000000
--- a/Lang/PascalABC.NET/Associative-array-Creation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Associative-array-Creation/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Associative-array-Iteration b/Lang/PascalABC.NET/Associative-array-Iteration
deleted file mode 120000
index 2f1ab21d84..0000000000
--- a/Lang/PascalABC.NET/Associative-array-Iteration
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Associative-array-Iteration/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Associative-array-Merging b/Lang/PascalABC.NET/Associative-array-Merging
deleted file mode 120000
index debbdc2521..0000000000
--- a/Lang/PascalABC.NET/Associative-array-Merging
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Associative-array-Merging/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Attractive-numbers b/Lang/PascalABC.NET/Attractive-numbers
deleted file mode 120000
index 974a121495..0000000000
--- a/Lang/PascalABC.NET/Attractive-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Attractive-numbers/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Averages-Arithmetic-mean b/Lang/PascalABC.NET/Averages-Arithmetic-mean
deleted file mode 120000
index c13a81b3d2..0000000000
--- a/Lang/PascalABC.NET/Averages-Arithmetic-mean
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Arithmetic-mean/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Averages-Mean-angle b/Lang/PascalABC.NET/Averages-Mean-angle
deleted file mode 120000
index 1138410560..0000000000
--- a/Lang/PascalABC.NET/Averages-Mean-angle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Mean-angle/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Averages-Median b/Lang/PascalABC.NET/Averages-Median
deleted file mode 120000
index 3e861f57c5..0000000000
--- a/Lang/PascalABC.NET/Averages-Median
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Median/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Averages-Mode b/Lang/PascalABC.NET/Averages-Mode
deleted file mode 120000
index 73a256bfd8..0000000000
--- a/Lang/PascalABC.NET/Averages-Mode
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Mode/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Averages-Pythagorean-means b/Lang/PascalABC.NET/Averages-Pythagorean-means
deleted file mode 120000
index d41041c28e..0000000000
--- a/Lang/PascalABC.NET/Averages-Pythagorean-means
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Pythagorean-means/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Averages-Root-mean-square b/Lang/PascalABC.NET/Averages-Root-mean-square
deleted file mode 120000
index fcd93926c8..0000000000
--- a/Lang/PascalABC.NET/Averages-Root-mean-square
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Root-mean-square/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Babbage-problem b/Lang/PascalABC.NET/Babbage-problem
deleted file mode 120000
index 0c9b0d20ea..0000000000
--- a/Lang/PascalABC.NET/Babbage-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Babbage-problem/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Balanced-brackets b/Lang/PascalABC.NET/Balanced-brackets
deleted file mode 120000
index 4b5678c4d8..0000000000
--- a/Lang/PascalABC.NET/Balanced-brackets
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Balanced-brackets/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Bifid-cipher b/Lang/PascalABC.NET/Bifid-cipher
deleted file mode 120000
index b627ea6e1a..0000000000
--- a/Lang/PascalABC.NET/Bifid-cipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bifid-cipher/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Binary-digits b/Lang/PascalABC.NET/Binary-digits
deleted file mode 120000
index e0597a5dc1..0000000000
--- a/Lang/PascalABC.NET/Binary-digits
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Binary-digits/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Binary-search b/Lang/PascalABC.NET/Binary-search
deleted file mode 120000
index aa5ba91c87..0000000000
--- a/Lang/PascalABC.NET/Binary-search
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Binary-search/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Bitwise-operations b/Lang/PascalABC.NET/Bitwise-operations
deleted file mode 120000
index acc6123f1c..0000000000
--- a/Lang/PascalABC.NET/Bitwise-operations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bitwise-operations/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Break-OO-privacy b/Lang/PascalABC.NET/Break-OO-privacy
deleted file mode 120000
index 29ee336925..0000000000
--- a/Lang/PascalABC.NET/Break-OO-privacy
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Break-OO-privacy/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/CRC-32 b/Lang/PascalABC.NET/CRC-32
deleted file mode 120000
index dfed202f62..0000000000
--- a/Lang/PascalABC.NET/CRC-32
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/CRC-32/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/CSV-data-manipulation b/Lang/PascalABC.NET/CSV-data-manipulation
deleted file mode 120000
index ab9f191d41..0000000000
--- a/Lang/PascalABC.NET/CSV-data-manipulation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/CSV-data-manipulation/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/CUSIP b/Lang/PascalABC.NET/CUSIP
deleted file mode 120000
index 1b4c6de901..0000000000
--- a/Lang/PascalABC.NET/CUSIP
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/CUSIP/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Caesar-cipher b/Lang/PascalABC.NET/Caesar-cipher
deleted file mode 120000
index 7b80169afb..0000000000
--- a/Lang/PascalABC.NET/Caesar-cipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Caesar-cipher/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Calculating-the-value-of-e b/Lang/PascalABC.NET/Calculating-the-value-of-e
deleted file mode 120000
index c544f3c00f..0000000000
--- a/Lang/PascalABC.NET/Calculating-the-value-of-e
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Calculating-the-value-of-e/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Calendar---for-REAL-programmers b/Lang/PascalABC.NET/Calendar---for-REAL-programmers
deleted file mode 120000
index aa32b573de..0000000000
--- a/Lang/PascalABC.NET/Calendar---for-REAL-programmers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Calendar---for-REAL-programmers/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Call-an-object-method b/Lang/PascalABC.NET/Call-an-object-method
deleted file mode 120000
index 0c1cf230d7..0000000000
--- a/Lang/PascalABC.NET/Call-an-object-method
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Call-an-object-method/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Cartesian-product-of-two-or-more-lists b/Lang/PascalABC.NET/Cartesian-product-of-two-or-more-lists
deleted file mode 120000
index e9abacde8d..0000000000
--- a/Lang/PascalABC.NET/Cartesian-product-of-two-or-more-lists
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cartesian-product-of-two-or-more-lists/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Case-sensitivity-of-identifiers b/Lang/PascalABC.NET/Case-sensitivity-of-identifiers
deleted file mode 120000
index b0fc4ead7c..0000000000
--- a/Lang/PascalABC.NET/Case-sensitivity-of-identifiers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Case-sensitivity-of-identifiers/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Casting-out-nines b/Lang/PascalABC.NET/Casting-out-nines
deleted file mode 120000
index 2635cd3c59..0000000000
--- a/Lang/PascalABC.NET/Casting-out-nines
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Casting-out-nines/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Catalan-numbers b/Lang/PascalABC.NET/Catalan-numbers
deleted file mode 120000
index a970e535cd..0000000000
--- a/Lang/PascalABC.NET/Catalan-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Catalan-numbers/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Catalan-numbers-Pascals-triangle b/Lang/PascalABC.NET/Catalan-numbers-Pascals-triangle
deleted file mode 120000
index 47a30d7f38..0000000000
--- a/Lang/PascalABC.NET/Catalan-numbers-Pascals-triangle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Catalan-numbers-Pascals-triangle/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Catamorphism b/Lang/PascalABC.NET/Catamorphism
deleted file mode 120000
index 4cd74052dd..0000000000
--- a/Lang/PascalABC.NET/Catamorphism
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Catamorphism/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Character-codes b/Lang/PascalABC.NET/Character-codes
deleted file mode 120000
index 1888f78c06..0000000000
--- a/Lang/PascalABC.NET/Character-codes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Character-codes/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Check-input-device-is-a-terminal b/Lang/PascalABC.NET/Check-input-device-is-a-terminal
deleted file mode 120000
index 942e91ecc8..0000000000
--- a/Lang/PascalABC.NET/Check-input-device-is-a-terminal
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Check-input-device-is-a-terminal/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Check-output-device-is-a-terminal b/Lang/PascalABC.NET/Check-output-device-is-a-terminal
deleted file mode 120000
index ddcd688824..0000000000
--- a/Lang/PascalABC.NET/Check-output-device-is-a-terminal
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Check-output-device-is-a-terminal/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Check-that-file-exists b/Lang/PascalABC.NET/Check-that-file-exists
deleted file mode 120000
index 8a6772fd4b..0000000000
--- a/Lang/PascalABC.NET/Check-that-file-exists
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Check-that-file-exists/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Cheryls-birthday b/Lang/PascalABC.NET/Cheryls-birthday
deleted file mode 120000
index a54346abfd..0000000000
--- a/Lang/PascalABC.NET/Cheryls-birthday
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cheryls-birthday/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Chinese-remainder-theorem b/Lang/PascalABC.NET/Chinese-remainder-theorem
deleted file mode 120000
index 72e58e3a4a..0000000000
--- a/Lang/PascalABC.NET/Chinese-remainder-theorem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Chinese-remainder-theorem/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Chinese-zodiac b/Lang/PascalABC.NET/Chinese-zodiac
deleted file mode 120000
index f7393d9042..0000000000
--- a/Lang/PascalABC.NET/Chinese-zodiac
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Chinese-zodiac/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Cholesky-decomposition b/Lang/PascalABC.NET/Cholesky-decomposition
deleted file mode 120000
index 35182d3cfc..0000000000
--- a/Lang/PascalABC.NET/Cholesky-decomposition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cholesky-decomposition/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Chowla-numbers b/Lang/PascalABC.NET/Chowla-numbers
deleted file mode 120000
index 556f1a6dfd..0000000000
--- a/Lang/PascalABC.NET/Chowla-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Chowla-numbers/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Circular-primes b/Lang/PascalABC.NET/Circular-primes
deleted file mode 120000
index 5224e07ad0..0000000000
--- a/Lang/PascalABC.NET/Circular-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Circular-primes/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Classes b/Lang/PascalABC.NET/Classes
deleted file mode 120000
index 08756ef03a..0000000000
--- a/Lang/PascalABC.NET/Classes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Classes/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Closest-pair-problem b/Lang/PascalABC.NET/Closest-pair-problem
deleted file mode 120000
index 4b7bc32806..0000000000
--- a/Lang/PascalABC.NET/Closest-pair-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Closest-pair-problem/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Closures-Value-capture b/Lang/PascalABC.NET/Closures-Value-capture
deleted file mode 120000
index 428138cdfe..0000000000
--- a/Lang/PascalABC.NET/Closures-Value-capture
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Closures-Value-capture/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Collections b/Lang/PascalABC.NET/Collections
deleted file mode 120000
index c3fa3dc417..0000000000
--- a/Lang/PascalABC.NET/Collections
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Collections/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Color-of-a-screen-pixel b/Lang/PascalABC.NET/Color-of-a-screen-pixel
deleted file mode 120000
index 45582746a3..0000000000
--- a/Lang/PascalABC.NET/Color-of-a-screen-pixel
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Color-of-a-screen-pixel/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Color-wheel b/Lang/PascalABC.NET/Color-wheel
deleted file mode 120000
index ea27bb369f..0000000000
--- a/Lang/PascalABC.NET/Color-wheel
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Color-wheel/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Colour-bars-Display b/Lang/PascalABC.NET/Colour-bars-Display
deleted file mode 120000
index e504c543a7..0000000000
--- a/Lang/PascalABC.NET/Colour-bars-Display
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Colour-bars-Display/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Colour-pinstripe-Display b/Lang/PascalABC.NET/Colour-pinstripe-Display
deleted file mode 120000
index c9febd7d37..0000000000
--- a/Lang/PascalABC.NET/Colour-pinstripe-Display
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Colour-pinstripe-Display/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Combinations b/Lang/PascalABC.NET/Combinations
deleted file mode 120000
index fad981495d..0000000000
--- a/Lang/PascalABC.NET/Combinations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Combinations/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Combinations-with-repetitions b/Lang/PascalABC.NET/Combinations-with-repetitions
deleted file mode 120000
index f75050c914..0000000000
--- a/Lang/PascalABC.NET/Combinations-with-repetitions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Combinations-with-repetitions/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Command-line-arguments b/Lang/PascalABC.NET/Command-line-arguments
deleted file mode 120000
index f229191025..0000000000
--- a/Lang/PascalABC.NET/Command-line-arguments
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Command-line-arguments/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Comments b/Lang/PascalABC.NET/Comments
deleted file mode 120000
index 5e528e6991..0000000000
--- a/Lang/PascalABC.NET/Comments
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Comments/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Compare-a-list-of-strings b/Lang/PascalABC.NET/Compare-a-list-of-strings
deleted file mode 120000
index b8b040023f..0000000000
--- a/Lang/PascalABC.NET/Compare-a-list-of-strings
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compare-a-list-of-strings/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Compare-length-of-two-strings b/Lang/PascalABC.NET/Compare-length-of-two-strings
deleted file mode 120000
index 92be62a3df..0000000000
--- a/Lang/PascalABC.NET/Compare-length-of-two-strings
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compare-length-of-two-strings/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Compile-time-calculation b/Lang/PascalABC.NET/Compile-time-calculation
deleted file mode 120000
index aa6140bdc4..0000000000
--- a/Lang/PascalABC.NET/Compile-time-calculation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compile-time-calculation/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Composite-numbers-k-with-no-single-digit-factors-whose-factors-are-all-substrings-of-k b/Lang/PascalABC.NET/Composite-numbers-k-with-no-single-digit-factors-whose-factors-are-all-substrings-of-k
deleted file mode 120000
index 54d237d7ab..0000000000
--- a/Lang/PascalABC.NET/Composite-numbers-k-with-no-single-digit-factors-whose-factors-are-all-substrings-of-k
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Composite-numbers-k-with-no-single-digit-factors-whose-factors-are-all-substrings-of-k/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Compound-data-type b/Lang/PascalABC.NET/Compound-data-type
deleted file mode 120000
index 89ad664595..0000000000
--- a/Lang/PascalABC.NET/Compound-data-type
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compound-data-type/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Concurrent-computing b/Lang/PascalABC.NET/Concurrent-computing
deleted file mode 120000
index ced9fcccc5..0000000000
--- a/Lang/PascalABC.NET/Concurrent-computing
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Concurrent-computing/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Conditional-structures b/Lang/PascalABC.NET/Conditional-structures
deleted file mode 120000
index 6186fdd1f8..0000000000
--- a/Lang/PascalABC.NET/Conditional-structures
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Conditional-structures/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Constrained-genericity b/Lang/PascalABC.NET/Constrained-genericity
deleted file mode 120000
index 4d89cf348d..0000000000
--- a/Lang/PascalABC.NET/Constrained-genericity
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Constrained-genericity/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Constrained-random-points-on-a-circle b/Lang/PascalABC.NET/Constrained-random-points-on-a-circle
deleted file mode 120000
index 5d3f518fc9..0000000000
--- a/Lang/PascalABC.NET/Constrained-random-points-on-a-circle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Constrained-random-points-on-a-circle/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Continued-fraction b/Lang/PascalABC.NET/Continued-fraction
deleted file mode 120000
index f6f45a7af5..0000000000
--- a/Lang/PascalABC.NET/Continued-fraction
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Continued-fraction/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Continued-fraction-Arithmetic-Construct-from-rational-number b/Lang/PascalABC.NET/Continued-fraction-Arithmetic-Construct-from-rational-number
deleted file mode 120000
index 2bab87463d..0000000000
--- a/Lang/PascalABC.NET/Continued-fraction-Arithmetic-Construct-from-rational-number
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Continued-fraction-Arithmetic-Construct-from-rational-number/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Convert-decimal-number-to-rational b/Lang/PascalABC.NET/Convert-decimal-number-to-rational
deleted file mode 120000
index 7827892fb4..0000000000
--- a/Lang/PascalABC.NET/Convert-decimal-number-to-rational
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Convert-decimal-number-to-rational/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Copy-a-string b/Lang/PascalABC.NET/Copy-a-string
deleted file mode 120000
index d102da9b43..0000000000
--- a/Lang/PascalABC.NET/Copy-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Copy-a-string/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Copy-stdin-to-stdout b/Lang/PascalABC.NET/Copy-stdin-to-stdout
deleted file mode 120000
index 08f7b00296..0000000000
--- a/Lang/PascalABC.NET/Copy-stdin-to-stdout
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Copy-stdin-to-stdout/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Count-in-factors b/Lang/PascalABC.NET/Count-in-factors
deleted file mode 120000
index 42811aa9aa..0000000000
--- a/Lang/PascalABC.NET/Count-in-factors
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Count-in-factors/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Count-in-octal b/Lang/PascalABC.NET/Count-in-octal
deleted file mode 120000
index 8965e8c25f..0000000000
--- a/Lang/PascalABC.NET/Count-in-octal
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Count-in-octal/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Count-occurrences-of-a-substring b/Lang/PascalABC.NET/Count-occurrences-of-a-substring
deleted file mode 120000
index d67adab506..0000000000
--- a/Lang/PascalABC.NET/Count-occurrences-of-a-substring
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Count-occurrences-of-a-substring/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Count-the-coins b/Lang/PascalABC.NET/Count-the-coins
deleted file mode 120000
index 43a4fdb837..0000000000
--- a/Lang/PascalABC.NET/Count-the-coins
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Count-the-coins/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Create-a-file b/Lang/PascalABC.NET/Create-a-file
deleted file mode 120000
index 5f3fa97f14..0000000000
--- a/Lang/PascalABC.NET/Create-a-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Create-a-file/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Create-a-two-dimensional-array-at-runtime b/Lang/PascalABC.NET/Create-a-two-dimensional-array-at-runtime
deleted file mode 120000
index 2c7befc65f..0000000000
--- a/Lang/PascalABC.NET/Create-a-two-dimensional-array-at-runtime
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Create-a-two-dimensional-array-at-runtime/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Create-an-object-at-a-given-address b/Lang/PascalABC.NET/Create-an-object-at-a-given-address
deleted file mode 120000
index aa2e5f2ab2..0000000000
--- a/Lang/PascalABC.NET/Create-an-object-at-a-given-address
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Create-an-object-at-a-given-address/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Cuban-primes b/Lang/PascalABC.NET/Cuban-primes
deleted file mode 120000
index 844ac15cb4..0000000000
--- a/Lang/PascalABC.NET/Cuban-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cuban-primes/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Cullen-and-Woodall-numbers b/Lang/PascalABC.NET/Cullen-and-Woodall-numbers
deleted file mode 120000
index 714083d23b..0000000000
--- a/Lang/PascalABC.NET/Cullen-and-Woodall-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cullen-and-Woodall-numbers/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Cumulative-standard-deviation b/Lang/PascalABC.NET/Cumulative-standard-deviation
deleted file mode 120000
index b6ef0ab016..0000000000
--- a/Lang/PascalABC.NET/Cumulative-standard-deviation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cumulative-standard-deviation/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Currency b/Lang/PascalABC.NET/Currency
deleted file mode 120000
index 2017d69d57..0000000000
--- a/Lang/PascalABC.NET/Currency
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Currency/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Curzon-numbers b/Lang/PascalABC.NET/Curzon-numbers
deleted file mode 120000
index 13437cd157..0000000000
--- a/Lang/PascalABC.NET/Curzon-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Curzon-numbers/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/DNS-query b/Lang/PascalABC.NET/DNS-query
deleted file mode 120000
index 52bda8e0aa..0000000000
--- a/Lang/PascalABC.NET/DNS-query
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/DNS-query/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Damm-algorithm b/Lang/PascalABC.NET/Damm-algorithm
deleted file mode 120000
index 6fee5b0ddc..0000000000
--- a/Lang/PascalABC.NET/Damm-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Damm-algorithm/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Date-format b/Lang/PascalABC.NET/Date-format
deleted file mode 120000
index 176b256586..0000000000
--- a/Lang/PascalABC.NET/Date-format
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Date-format/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Day-of-the-week b/Lang/PascalABC.NET/Day-of-the-week
deleted file mode 120000
index 3300b037b4..0000000000
--- a/Lang/PascalABC.NET/Day-of-the-week
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Day-of-the-week/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Deceptive-numbers b/Lang/PascalABC.NET/Deceptive-numbers
deleted file mode 120000
index 007d2d649c..0000000000
--- a/Lang/PascalABC.NET/Deceptive-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Deceptive-numbers/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Deconvolution-1D b/Lang/PascalABC.NET/Deconvolution-1D
deleted file mode 120000
index 9604235c77..0000000000
--- a/Lang/PascalABC.NET/Deconvolution-1D
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Deconvolution-1D/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Define-a-primitive-data-type b/Lang/PascalABC.NET/Define-a-primitive-data-type
deleted file mode 120000
index 684571f697..0000000000
--- a/Lang/PascalABC.NET/Define-a-primitive-data-type
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Define-a-primitive-data-type/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Demings-funnel b/Lang/PascalABC.NET/Demings-funnel
deleted file mode 120000
index 0255de8e51..0000000000
--- a/Lang/PascalABC.NET/Demings-funnel
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Demings-funnel/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Department-numbers b/Lang/PascalABC.NET/Department-numbers
deleted file mode 120000
index 1b068d9b34..0000000000
--- a/Lang/PascalABC.NET/Department-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Department-numbers/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Descending-primes b/Lang/PascalABC.NET/Descending-primes
deleted file mode 120000
index 5641c47c94..0000000000
--- a/Lang/PascalABC.NET/Descending-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Descending-primes/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Detect-division-by-zero b/Lang/PascalABC.NET/Detect-division-by-zero
deleted file mode 120000
index a843cd631e..0000000000
--- a/Lang/PascalABC.NET/Detect-division-by-zero
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Detect-division-by-zero/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Determine-if-a-string-has-all-the-same-characters b/Lang/PascalABC.NET/Determine-if-a-string-has-all-the-same-characters
deleted file mode 120000
index bb838a1f25..0000000000
--- a/Lang/PascalABC.NET/Determine-if-a-string-has-all-the-same-characters
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-has-all-the-same-characters/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Determine-if-a-string-has-all-unique-characters b/Lang/PascalABC.NET/Determine-if-a-string-has-all-unique-characters
deleted file mode 120000
index 7c66082879..0000000000
--- a/Lang/PascalABC.NET/Determine-if-a-string-has-all-unique-characters
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-has-all-unique-characters/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Determine-if-a-string-is-collapsible b/Lang/PascalABC.NET/Determine-if-a-string-is-collapsible
deleted file mode 120000
index d22cc466fc..0000000000
--- a/Lang/PascalABC.NET/Determine-if-a-string-is-collapsible
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-is-collapsible/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Determine-if-a-string-is-numeric b/Lang/PascalABC.NET/Determine-if-a-string-is-numeric
deleted file mode 120000
index 3ddeb93c61..0000000000
--- a/Lang/PascalABC.NET/Determine-if-a-string-is-numeric
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-is-numeric/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Determine-sentence-type b/Lang/PascalABC.NET/Determine-sentence-type
deleted file mode 120000
index dc0284a0e0..0000000000
--- a/Lang/PascalABC.NET/Determine-sentence-type
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-sentence-type/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Dice-game-probabilities b/Lang/PascalABC.NET/Dice-game-probabilities
deleted file mode 120000
index e5f12572e0..0000000000
--- a/Lang/PascalABC.NET/Dice-game-probabilities
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dice-game-probabilities/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Digital-root b/Lang/PascalABC.NET/Digital-root
deleted file mode 120000
index 2ade97cd7d..0000000000
--- a/Lang/PascalABC.NET/Digital-root
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Digital-root/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Digital-root-Multiplicative-digital-root b/Lang/PascalABC.NET/Digital-root-Multiplicative-digital-root
deleted file mode 120000
index 3dcbce4c26..0000000000
--- a/Lang/PascalABC.NET/Digital-root-Multiplicative-digital-root
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Digital-root-Multiplicative-digital-root/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Dijkstras-algorithm b/Lang/PascalABC.NET/Dijkstras-algorithm
deleted file mode 120000
index d9c1782412..0000000000
--- a/Lang/PascalABC.NET/Dijkstras-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dijkstras-algorithm/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Dinesmans-multiple-dwelling-problem b/Lang/PascalABC.NET/Dinesmans-multiple-dwelling-problem
deleted file mode 120000
index b9659a07e6..0000000000
--- a/Lang/PascalABC.NET/Dinesmans-multiple-dwelling-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dinesmans-multiple-dwelling-problem/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Disarium-numbers b/Lang/PascalABC.NET/Disarium-numbers
deleted file mode 120000
index 25866ae831..0000000000
--- a/Lang/PascalABC.NET/Disarium-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Disarium-numbers/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Distribution-of-0-digits-in-factorial-series b/Lang/PascalABC.NET/Distribution-of-0-digits-in-factorial-series
deleted file mode 120000
index f8efbe37d1..0000000000
--- a/Lang/PascalABC.NET/Distribution-of-0-digits-in-factorial-series
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Distribution-of-0-digits-in-factorial-series/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Diversity-prediction-theorem b/Lang/PascalABC.NET/Diversity-prediction-theorem
deleted file mode 120000
index a1a0483997..0000000000
--- a/Lang/PascalABC.NET/Diversity-prediction-theorem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Diversity-prediction-theorem/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Doomsday-rule b/Lang/PascalABC.NET/Doomsday-rule
deleted file mode 120000
index 4aed9db54a..0000000000
--- a/Lang/PascalABC.NET/Doomsday-rule
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Doomsday-rule/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Dot-product b/Lang/PascalABC.NET/Dot-product
deleted file mode 120000
index 75977e9d01..0000000000
--- a/Lang/PascalABC.NET/Dot-product
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dot-product/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Doubly-linked-list-Definition b/Lang/PascalABC.NET/Doubly-linked-list-Definition
deleted file mode 120000
index f2561705cf..0000000000
--- a/Lang/PascalABC.NET/Doubly-linked-list-Definition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Doubly-linked-list-Definition/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Doubly-linked-list-Element-definition b/Lang/PascalABC.NET/Doubly-linked-list-Element-definition
deleted file mode 120000
index 50c9d03e8c..0000000000
--- a/Lang/PascalABC.NET/Doubly-linked-list-Element-definition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Doubly-linked-list-Element-definition/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Doubly-linked-list-Element-insertion b/Lang/PascalABC.NET/Doubly-linked-list-Element-insertion
deleted file mode 120000
index 28af162224..0000000000
--- a/Lang/PascalABC.NET/Doubly-linked-list-Element-insertion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Doubly-linked-list-Element-insertion/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Doubly-linked-list-Traversal b/Lang/PascalABC.NET/Doubly-linked-list-Traversal
deleted file mode 120000
index 9cc3d51b16..0000000000
--- a/Lang/PascalABC.NET/Doubly-linked-list-Traversal
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Doubly-linked-list-Traversal/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Dragon-curve b/Lang/PascalABC.NET/Dragon-curve
deleted file mode 120000
index 1a8a6239bd..0000000000
--- a/Lang/PascalABC.NET/Dragon-curve
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dragon-curve/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Draw-a-pixel b/Lang/PascalABC.NET/Draw-a-pixel
deleted file mode 120000
index cdcb7e2918..0000000000
--- a/Lang/PascalABC.NET/Draw-a-pixel
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Draw-a-pixel/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Draw-a-rotating-cube b/Lang/PascalABC.NET/Draw-a-rotating-cube
deleted file mode 120000
index 9092790488..0000000000
--- a/Lang/PascalABC.NET/Draw-a-rotating-cube
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Draw-a-rotating-cube/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Duffinian-numbers b/Lang/PascalABC.NET/Duffinian-numbers
deleted file mode 120000
index ed0f087334..0000000000
--- a/Lang/PascalABC.NET/Duffinian-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Duffinian-numbers/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Dutch-national-flag-problem b/Lang/PascalABC.NET/Dutch-national-flag-problem
deleted file mode 120000
index 20b563dbd5..0000000000
--- a/Lang/PascalABC.NET/Dutch-national-flag-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dutch-national-flag-problem/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Egyptian-division b/Lang/PascalABC.NET/Egyptian-division
deleted file mode 120000
index d931ff8696..0000000000
--- a/Lang/PascalABC.NET/Egyptian-division
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Egyptian-division/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Emirp-primes b/Lang/PascalABC.NET/Emirp-primes
deleted file mode 120000
index 69e5f4d7f7..0000000000
--- a/Lang/PascalABC.NET/Emirp-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Emirp-primes/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Empty-program b/Lang/PascalABC.NET/Empty-program
deleted file mode 120000
index 9a2aa557cd..0000000000
--- a/Lang/PascalABC.NET/Empty-program
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Empty-program/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Empty-string b/Lang/PascalABC.NET/Empty-string
deleted file mode 120000
index 39d89b0e6b..0000000000
--- a/Lang/PascalABC.NET/Empty-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Empty-string/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Entropy b/Lang/PascalABC.NET/Entropy
deleted file mode 120000
index 792ccf7d2a..0000000000
--- a/Lang/PascalABC.NET/Entropy
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Entropy/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Enumerations b/Lang/PascalABC.NET/Enumerations
deleted file mode 120000
index 3fbeab7aac..0000000000
--- a/Lang/PascalABC.NET/Enumerations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Enumerations/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Environment-variables b/Lang/PascalABC.NET/Environment-variables
deleted file mode 120000
index a87e0f0eca..0000000000
--- a/Lang/PascalABC.NET/Environment-variables
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Environment-variables/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Equal-prime-and-composite-sums b/Lang/PascalABC.NET/Equal-prime-and-composite-sums
deleted file mode 120000
index e0ef8faaeb..0000000000
--- a/Lang/PascalABC.NET/Equal-prime-and-composite-sums
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Equal-prime-and-composite-sums/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Equilibrium-index b/Lang/PascalABC.NET/Equilibrium-index
deleted file mode 120000
index 1ebc161d1d..0000000000
--- a/Lang/PascalABC.NET/Equilibrium-index
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Equilibrium-index/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Erd-s-Nicolas-numbers b/Lang/PascalABC.NET/Erd-s-Nicolas-numbers
deleted file mode 120000
index 8d04b147b5..0000000000
--- a/Lang/PascalABC.NET/Erd-s-Nicolas-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Erd-s-Nicolas-numbers/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Ethiopian-multiplication b/Lang/PascalABC.NET/Ethiopian-multiplication
deleted file mode 120000
index 225d8834fa..0000000000
--- a/Lang/PascalABC.NET/Ethiopian-multiplication
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ethiopian-multiplication/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Euclid-Mullin-sequence b/Lang/PascalABC.NET/Euclid-Mullin-sequence
deleted file mode 120000
index c1a4f722c5..0000000000
--- a/Lang/PascalABC.NET/Euclid-Mullin-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Euclid-Mullin-sequence/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Euler-method b/Lang/PascalABC.NET/Euler-method
deleted file mode 120000
index d3b60b57ad..0000000000
--- a/Lang/PascalABC.NET/Euler-method
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Euler-method/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Eulers-constant-0.5772... b/Lang/PascalABC.NET/Eulers-constant-0.5772...
deleted file mode 120000
index 093c235349..0000000000
--- a/Lang/PascalABC.NET/Eulers-constant-0.5772...
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Eulers-constant-0.5772.../PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Eulers-identity b/Lang/PascalABC.NET/Eulers-identity
deleted file mode 120000
index 05f2a3a1ec..0000000000
--- a/Lang/PascalABC.NET/Eulers-identity
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Eulers-identity/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Eulers-sum-of-powers-conjecture b/Lang/PascalABC.NET/Eulers-sum-of-powers-conjecture
deleted file mode 120000
index a568356eba..0000000000
--- a/Lang/PascalABC.NET/Eulers-sum-of-powers-conjecture
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Eulers-sum-of-powers-conjecture/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Evaluate-binomial-coefficients b/Lang/PascalABC.NET/Evaluate-binomial-coefficients
deleted file mode 120000
index 6ad68ae41d..0000000000
--- a/Lang/PascalABC.NET/Evaluate-binomial-coefficients
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Evaluate-binomial-coefficients/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Even-or-odd b/Lang/PascalABC.NET/Even-or-odd
deleted file mode 120000
index 4191597943..0000000000
--- a/Lang/PascalABC.NET/Even-or-odd
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Even-or-odd/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Events b/Lang/PascalABC.NET/Events
deleted file mode 120000
index 75843719a2..0000000000
--- a/Lang/PascalABC.NET/Events
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Events/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Evolutionary-algorithm b/Lang/PascalABC.NET/Evolutionary-algorithm
deleted file mode 120000
index bc9856dbc0..0000000000
--- a/Lang/PascalABC.NET/Evolutionary-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Evolutionary-algorithm/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Exceptions b/Lang/PascalABC.NET/Exceptions
deleted file mode 120000
index b4b7999bea..0000000000
--- a/Lang/PascalABC.NET/Exceptions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Exceptions/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Exceptions-Catch-an-exception-thrown-in-a-nested-call b/Lang/PascalABC.NET/Exceptions-Catch-an-exception-thrown-in-a-nested-call
deleted file mode 120000
index 7cf9286a5e..0000000000
--- a/Lang/PascalABC.NET/Exceptions-Catch-an-exception-thrown-in-a-nested-call
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Exceptions-Catch-an-exception-thrown-in-a-nested-call/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Execute-a-system-command b/Lang/PascalABC.NET/Execute-a-system-command
deleted file mode 120000
index 7b3f5b40fe..0000000000
--- a/Lang/PascalABC.NET/Execute-a-system-command
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Execute-a-system-command/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Exponentiation-order b/Lang/PascalABC.NET/Exponentiation-order
deleted file mode 120000
index 7066d9dd6b..0000000000
--- a/Lang/PascalABC.NET/Exponentiation-order
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Exponentiation-order/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Exponentiation-with-infix-operators-in-or-operating-on-the-base b/Lang/PascalABC.NET/Exponentiation-with-infix-operators-in-or-operating-on-the-base
deleted file mode 120000
index cc33366128..0000000000
--- a/Lang/PascalABC.NET/Exponentiation-with-infix-operators-in-or-operating-on-the-base
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Exponentiation-with-infix-operators-in-or-operating-on-the-base/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Extend-your-language b/Lang/PascalABC.NET/Extend-your-language
deleted file mode 120000
index ee51376fd1..0000000000
--- a/Lang/PascalABC.NET/Extend-your-language
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Extend-your-language/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Extensible-prime-generator b/Lang/PascalABC.NET/Extensible-prime-generator
deleted file mode 120000
index c255987252..0000000000
--- a/Lang/PascalABC.NET/Extensible-prime-generator
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Extensible-prime-generator/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Extreme-floating-point-values b/Lang/PascalABC.NET/Extreme-floating-point-values
deleted file mode 120000
index 438be3c964..0000000000
--- a/Lang/PascalABC.NET/Extreme-floating-point-values
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Extreme-floating-point-values/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Factorial b/Lang/PascalABC.NET/Factorial
deleted file mode 120000
index 64716300fa..0000000000
--- a/Lang/PascalABC.NET/Factorial
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factorial/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Factorial-primes b/Lang/PascalABC.NET/Factorial-primes
deleted file mode 120000
index 5b7eb12507..0000000000
--- a/Lang/PascalABC.NET/Factorial-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factorial-primes/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Factorions b/Lang/PascalABC.NET/Factorions
deleted file mode 120000
index 8d771f5a56..0000000000
--- a/Lang/PascalABC.NET/Factorions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factorions/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Factors-of-a-Mersenne-number b/Lang/PascalABC.NET/Factors-of-a-Mersenne-number
deleted file mode 120000
index 3160230a03..0000000000
--- a/Lang/PascalABC.NET/Factors-of-a-Mersenne-number
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factors-of-a-Mersenne-number/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Factors-of-an-integer b/Lang/PascalABC.NET/Factors-of-an-integer
deleted file mode 120000
index b2f675ad56..0000000000
--- a/Lang/PascalABC.NET/Factors-of-an-integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factors-of-an-integer/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Fairshare-between-two-and-more b/Lang/PascalABC.NET/Fairshare-between-two-and-more
deleted file mode 120000
index c21d1ab427..0000000000
--- a/Lang/PascalABC.NET/Fairshare-between-two-and-more
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fairshare-between-two-and-more/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Farey-sequence b/Lang/PascalABC.NET/Farey-sequence
deleted file mode 120000
index cd060f6fa5..0000000000
--- a/Lang/PascalABC.NET/Farey-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Farey-sequence/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Fast-Fourier-transform b/Lang/PascalABC.NET/Fast-Fourier-transform
deleted file mode 120000
index 2ebeb31f36..0000000000
--- a/Lang/PascalABC.NET/Fast-Fourier-transform
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fast-Fourier-transform/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Feigenbaum-constant-calculation b/Lang/PascalABC.NET/Feigenbaum-constant-calculation
deleted file mode 120000
index df0fd85992..0000000000
--- a/Lang/PascalABC.NET/Feigenbaum-constant-calculation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Feigenbaum-constant-calculation/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Fermat-numbers b/Lang/PascalABC.NET/Fermat-numbers
deleted file mode 120000
index 87303a8419..0000000000
--- a/Lang/PascalABC.NET/Fermat-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fermat-numbers/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Fibonacci-word b/Lang/PascalABC.NET/Fibonacci-word
deleted file mode 120000
index 6accc7df5c..0000000000
--- a/Lang/PascalABC.NET/Fibonacci-word
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fibonacci-word/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Fibonacci-word-fractal b/Lang/PascalABC.NET/Fibonacci-word-fractal
deleted file mode 120000
index 32647433c7..0000000000
--- a/Lang/PascalABC.NET/Fibonacci-word-fractal
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fibonacci-word-fractal/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/File-input-output b/Lang/PascalABC.NET/File-input-output
deleted file mode 120000
index aa29aa165d..0000000000
--- a/Lang/PascalABC.NET/File-input-output
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/File-input-output/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/File-modification-time b/Lang/PascalABC.NET/File-modification-time
deleted file mode 120000
index f54091dc36..0000000000
--- a/Lang/PascalABC.NET/File-modification-time
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/File-modification-time/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/File-size b/Lang/PascalABC.NET/File-size
deleted file mode 120000
index cb4f56c334..0000000000
--- a/Lang/PascalABC.NET/File-size
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/File-size/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Filter b/Lang/PascalABC.NET/Filter
deleted file mode 120000
index b6b1f56f68..0000000000
--- a/Lang/PascalABC.NET/Filter
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Filter/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Find-common-directory-path b/Lang/PascalABC.NET/Find-common-directory-path
deleted file mode 120000
index 48495d80e3..0000000000
--- a/Lang/PascalABC.NET/Find-common-directory-path
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Find-common-directory-path/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Find-if-a-point-is-within-a-triangle b/Lang/PascalABC.NET/Find-if-a-point-is-within-a-triangle
deleted file mode 120000
index 995f2a0af8..0000000000
--- a/Lang/PascalABC.NET/Find-if-a-point-is-within-a-triangle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Find-if-a-point-is-within-a-triangle/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Find-limit-of-recursion b/Lang/PascalABC.NET/Find-limit-of-recursion
deleted file mode 120000
index 8e738ede74..0000000000
--- a/Lang/PascalABC.NET/Find-limit-of-recursion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Find-limit-of-recursion/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Find-palindromic-numbers-in-both-binary-and-ternary-bases b/Lang/PascalABC.NET/Find-palindromic-numbers-in-both-binary-and-ternary-bases
deleted file mode 120000
index d897fb9951..0000000000
--- a/Lang/PascalABC.NET/Find-palindromic-numbers-in-both-binary-and-ternary-bases
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Find-palindromic-numbers-in-both-binary-and-ternary-bases/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Find-the-intersection-of-a-line-with-a-plane b/Lang/PascalABC.NET/Find-the-intersection-of-a-line-with-a-plane
deleted file mode 120000
index db54cce940..0000000000
--- a/Lang/PascalABC.NET/Find-the-intersection-of-a-line-with-a-plane
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Find-the-intersection-of-a-line-with-a-plane/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Find-the-intersection-of-two-lines b/Lang/PascalABC.NET/Find-the-intersection-of-two-lines
deleted file mode 120000
index 654d760b69..0000000000
--- a/Lang/PascalABC.NET/Find-the-intersection-of-two-lines
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Find-the-intersection-of-two-lines/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Find-the-last-Sunday-of-each-month b/Lang/PascalABC.NET/Find-the-last-Sunday-of-each-month
deleted file mode 120000
index 14b7c01559..0000000000
--- a/Lang/PascalABC.NET/Find-the-last-Sunday-of-each-month
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Find-the-last-Sunday-of-each-month/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Find-the-missing-permutation b/Lang/PascalABC.NET/Find-the-missing-permutation
deleted file mode 120000
index 74bb4ee6f0..0000000000
--- a/Lang/PascalABC.NET/Find-the-missing-permutation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Find-the-missing-permutation/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/First-class-functions b/Lang/PascalABC.NET/First-class-functions
deleted file mode 120000
index d4c191f6d3..0000000000
--- a/Lang/PascalABC.NET/First-class-functions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/First-class-functions/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/First-class-functions-Use-numbers-analogously b/Lang/PascalABC.NET/First-class-functions-Use-numbers-analogously
deleted file mode 120000
index 60d3a6b1c4..0000000000
--- a/Lang/PascalABC.NET/First-class-functions-Use-numbers-analogously
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/First-class-functions-Use-numbers-analogously/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/First-perfect-square-in-base-n-with-n-unique-digits b/Lang/PascalABC.NET/First-perfect-square-in-base-n-with-n-unique-digits
deleted file mode 120000
index dd9c2365f8..0000000000
--- a/Lang/PascalABC.NET/First-perfect-square-in-base-n-with-n-unique-digits
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/First-perfect-square-in-base-n-with-n-unique-digits/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/First-power-of-2-that-has-leading-decimal-digits-of-12 b/Lang/PascalABC.NET/First-power-of-2-that-has-leading-decimal-digits-of-12
deleted file mode 120000
index 31a48a0c89..0000000000
--- a/Lang/PascalABC.NET/First-power-of-2-that-has-leading-decimal-digits-of-12
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/First-power-of-2-that-has-leading-decimal-digits-of-12/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Five-weekends b/Lang/PascalABC.NET/Five-weekends
deleted file mode 120000
index 868fa3eedb..0000000000
--- a/Lang/PascalABC.NET/Five-weekends
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Five-weekends/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Fivenum b/Lang/PascalABC.NET/Fivenum
deleted file mode 120000
index ef9246e91a..0000000000
--- a/Lang/PascalABC.NET/Fivenum
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fivenum/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/FizzBuzz b/Lang/PascalABC.NET/FizzBuzz
deleted file mode 120000
index 9af47ffeb0..0000000000
--- a/Lang/PascalABC.NET/FizzBuzz
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/FizzBuzz/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Flatten-a-list b/Lang/PascalABC.NET/Flatten-a-list
deleted file mode 120000
index 951e9e626d..0000000000
--- a/Lang/PascalABC.NET/Flatten-a-list
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Flatten-a-list/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Floyds-triangle b/Lang/PascalABC.NET/Floyds-triangle
deleted file mode 120000
index 741db9a754..0000000000
--- a/Lang/PascalABC.NET/Floyds-triangle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Floyds-triangle/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Fork b/Lang/PascalABC.NET/Fork
deleted file mode 120000
index 21f23b18c9..0000000000
--- a/Lang/PascalABC.NET/Fork
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fork/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Formatted-numeric-output b/Lang/PascalABC.NET/Formatted-numeric-output
deleted file mode 120000
index d5385037bc..0000000000
--- a/Lang/PascalABC.NET/Formatted-numeric-output
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Formatted-numeric-output/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Forward-difference b/Lang/PascalABC.NET/Forward-difference
deleted file mode 120000
index 6ba594a872..0000000000
--- a/Lang/PascalABC.NET/Forward-difference
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Forward-difference/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Fractal-tree b/Lang/PascalABC.NET/Fractal-tree
deleted file mode 120000
index 1018455008..0000000000
--- a/Lang/PascalABC.NET/Fractal-tree
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fractal-tree/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Function-composition b/Lang/PascalABC.NET/Function-composition
deleted file mode 120000
index 10938e885c..0000000000
--- a/Lang/PascalABC.NET/Function-composition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Function-composition/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Function-definition b/Lang/PascalABC.NET/Function-definition
deleted file mode 120000
index cc1ff414b4..0000000000
--- a/Lang/PascalABC.NET/Function-definition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Function-definition/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Fusc-sequence b/Lang/PascalABC.NET/Fusc-sequence
deleted file mode 120000
index 30b9581633..0000000000
--- a/Lang/PascalABC.NET/Fusc-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fusc-sequence/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Gamma-function b/Lang/PascalABC.NET/Gamma-function
deleted file mode 120000
index d0d1bc1bed..0000000000
--- a/Lang/PascalABC.NET/Gamma-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Gamma-function/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Gapful-numbers b/Lang/PascalABC.NET/Gapful-numbers
deleted file mode 120000
index c53e98533f..0000000000
--- a/Lang/PascalABC.NET/Gapful-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Gapful-numbers/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Gauss-Jordan-matrix-inversion b/Lang/PascalABC.NET/Gauss-Jordan-matrix-inversion
deleted file mode 120000
index af61f036c2..0000000000
--- a/Lang/PascalABC.NET/Gauss-Jordan-matrix-inversion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Gauss-Jordan-matrix-inversion/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Gaussian-elimination b/Lang/PascalABC.NET/Gaussian-elimination
deleted file mode 120000
index 263ffc6099..0000000000
--- a/Lang/PascalABC.NET/Gaussian-elimination
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Gaussian-elimination/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/General-FizzBuzz b/Lang/PascalABC.NET/General-FizzBuzz
deleted file mode 120000
index 655ae97e52..0000000000
--- a/Lang/PascalABC.NET/General-FizzBuzz
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/General-FizzBuzz/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Generate-Chess960-starting-position b/Lang/PascalABC.NET/Generate-Chess960-starting-position
deleted file mode 120000
index 0f95aaeb00..0000000000
--- a/Lang/PascalABC.NET/Generate-Chess960-starting-position
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Generate-Chess960-starting-position/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Generate-lower-case-ASCII-alphabet b/Lang/PascalABC.NET/Generate-lower-case-ASCII-alphabet
deleted file mode 120000
index 8ef0c3c6f0..0000000000
--- a/Lang/PascalABC.NET/Generate-lower-case-ASCII-alphabet
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Generate-lower-case-ASCII-alphabet/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Generator-Exponential b/Lang/PascalABC.NET/Generator-Exponential
deleted file mode 120000
index ca6d0b1093..0000000000
--- a/Lang/PascalABC.NET/Generator-Exponential
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Generator-Exponential/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Generic-swap b/Lang/PascalABC.NET/Generic-swap
deleted file mode 120000
index 35fd1c3542..0000000000
--- a/Lang/PascalABC.NET/Generic-swap
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Generic-swap/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Get-system-command-output b/Lang/PascalABC.NET/Get-system-command-output
deleted file mode 120000
index 41cb609755..0000000000
--- a/Lang/PascalABC.NET/Get-system-command-output
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Get-system-command-output/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Giuga-numbers b/Lang/PascalABC.NET/Giuga-numbers
deleted file mode 120000
index e5f281e7e3..0000000000
--- a/Lang/PascalABC.NET/Giuga-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Giuga-numbers/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Globally-replace-text-in-several-files b/Lang/PascalABC.NET/Globally-replace-text-in-several-files
deleted file mode 120000
index d8545a73f2..0000000000
--- a/Lang/PascalABC.NET/Globally-replace-text-in-several-files
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Globally-replace-text-in-several-files/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Goldbachs-comet b/Lang/PascalABC.NET/Goldbachs-comet
deleted file mode 120000
index 01fcc2a336..0000000000
--- a/Lang/PascalABC.NET/Goldbachs-comet
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Goldbachs-comet/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Golden-ratio-Convergence b/Lang/PascalABC.NET/Golden-ratio-Convergence
deleted file mode 120000
index 375683d4e0..0000000000
--- a/Lang/PascalABC.NET/Golden-ratio-Convergence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Golden-ratio-Convergence/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Gray-code b/Lang/PascalABC.NET/Gray-code
deleted file mode 120000
index 078fdc2c8b..0000000000
--- a/Lang/PascalABC.NET/Gray-code
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Gray-code/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Greatest-common-divisor b/Lang/PascalABC.NET/Greatest-common-divisor
deleted file mode 120000
index 27dc1c21f9..0000000000
--- a/Lang/PascalABC.NET/Greatest-common-divisor
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Greatest-common-divisor/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Greatest-element-of-a-list b/Lang/PascalABC.NET/Greatest-element-of-a-list
deleted file mode 120000
index b5185eb27d..0000000000
--- a/Lang/PascalABC.NET/Greatest-element-of-a-list
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Greatest-element-of-a-list/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Greatest-subsequential-sum b/Lang/PascalABC.NET/Greatest-subsequential-sum
deleted file mode 120000
index 10aeb8b0f0..0000000000
--- a/Lang/PascalABC.NET/Greatest-subsequential-sum
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Greatest-subsequential-sum/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Guess-the-number b/Lang/PascalABC.NET/Guess-the-number
deleted file mode 120000
index 7fff26f7e2..0000000000
--- a/Lang/PascalABC.NET/Guess-the-number
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Guess-the-number/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/HTTP b/Lang/PascalABC.NET/HTTP
deleted file mode 120000
index 28d630c27b..0000000000
--- a/Lang/PascalABC.NET/HTTP
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/HTTP/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/HTTPS b/Lang/PascalABC.NET/HTTPS
deleted file mode 120000
index 88259c85d4..0000000000
--- a/Lang/PascalABC.NET/HTTPS
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/HTTPS/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/HTTPS-Authenticated b/Lang/PascalABC.NET/HTTPS-Authenticated
deleted file mode 120000
index 5f39b0a90c..0000000000
--- a/Lang/PascalABC.NET/HTTPS-Authenticated
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/HTTPS-Authenticated/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Hailstone-sequence b/Lang/PascalABC.NET/Hailstone-sequence
deleted file mode 120000
index f83360c3ea..0000000000
--- a/Lang/PascalABC.NET/Hailstone-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hailstone-sequence/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Halt-and-catch-fire b/Lang/PascalABC.NET/Halt-and-catch-fire
deleted file mode 120000
index 531d664087..0000000000
--- a/Lang/PascalABC.NET/Halt-and-catch-fire
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Halt-and-catch-fire/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Hamming-numbers b/Lang/PascalABC.NET/Hamming-numbers
deleted file mode 120000
index bd37bceed8..0000000000
--- a/Lang/PascalABC.NET/Hamming-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hamming-numbers/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Handle-a-signal b/Lang/PascalABC.NET/Handle-a-signal
deleted file mode 120000
index e3f3390134..0000000000
--- a/Lang/PascalABC.NET/Handle-a-signal
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Handle-a-signal/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Happy-numbers b/Lang/PascalABC.NET/Happy-numbers
deleted file mode 120000
index 2b0f0e30d5..0000000000
--- a/Lang/PascalABC.NET/Happy-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Happy-numbers/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Harmonic-series b/Lang/PascalABC.NET/Harmonic-series
deleted file mode 120000
index c5dec236a3..0000000000
--- a/Lang/PascalABC.NET/Harmonic-series
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Harmonic-series/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Harshad-or-Niven-series b/Lang/PascalABC.NET/Harshad-or-Niven-series
deleted file mode 120000
index 4a30ac9f34..0000000000
--- a/Lang/PascalABC.NET/Harshad-or-Niven-series
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Harshad-or-Niven-series/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Hash-from-two-arrays b/Lang/PascalABC.NET/Hash-from-two-arrays
deleted file mode 120000
index 06b09f8bf9..0000000000
--- a/Lang/PascalABC.NET/Hash-from-two-arrays
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hash-from-two-arrays/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Haversine-formula b/Lang/PascalABC.NET/Haversine-formula
deleted file mode 120000
index 505d4c95b1..0000000000
--- a/Lang/PascalABC.NET/Haversine-formula
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Haversine-formula/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Hello-world-Line-printer b/Lang/PascalABC.NET/Hello-world-Line-printer
deleted file mode 120000
index 87d7f6b37c..0000000000
--- a/Lang/PascalABC.NET/Hello-world-Line-printer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Line-printer/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Hello-world-Newline-omission b/Lang/PascalABC.NET/Hello-world-Newline-omission
deleted file mode 120000
index 2c094828d8..0000000000
--- a/Lang/PascalABC.NET/Hello-world-Newline-omission
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Newline-omission/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Hello-world-Standard-error b/Lang/PascalABC.NET/Hello-world-Standard-error
deleted file mode 120000
index 4b2452f23e..0000000000
--- a/Lang/PascalABC.NET/Hello-world-Standard-error
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Standard-error/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Here-document b/Lang/PascalABC.NET/Here-document
deleted file mode 120000
index 073a394aa5..0000000000
--- a/Lang/PascalABC.NET/Here-document
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Here-document/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Heronian-triangles b/Lang/PascalABC.NET/Heronian-triangles
deleted file mode 120000
index 38597384c9..0000000000
--- a/Lang/PascalABC.NET/Heronian-triangles
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Heronian-triangles/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Hex-words b/Lang/PascalABC.NET/Hex-words
deleted file mode 120000
index 487faee543..0000000000
--- a/Lang/PascalABC.NET/Hex-words
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hex-words/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Hickerson-series-of-almost-integers b/Lang/PascalABC.NET/Hickerson-series-of-almost-integers
deleted file mode 120000
index 8789a0cbe0..0000000000
--- a/Lang/PascalABC.NET/Hickerson-series-of-almost-integers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hickerson-series-of-almost-integers/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Higher-order-functions b/Lang/PascalABC.NET/Higher-order-functions
deleted file mode 120000
index c3ac017464..0000000000
--- a/Lang/PascalABC.NET/Higher-order-functions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Higher-order-functions/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Hilbert-curve b/Lang/PascalABC.NET/Hilbert-curve
deleted file mode 120000
index 319eba89d6..0000000000
--- a/Lang/PascalABC.NET/Hilbert-curve
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hilbert-curve/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Hofstadter-Conway-$10-000-sequence b/Lang/PascalABC.NET/Hofstadter-Conway-$10-000-sequence
deleted file mode 120000
index 6f07522b20..0000000000
--- a/Lang/PascalABC.NET/Hofstadter-Conway-$10-000-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hofstadter-Conway-$10-000-sequence/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Hofstadter-Figure-Figure-sequences b/Lang/PascalABC.NET/Hofstadter-Figure-Figure-sequences
deleted file mode 120000
index 658c56f7ad..0000000000
--- a/Lang/PascalABC.NET/Hofstadter-Figure-Figure-sequences
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hofstadter-Figure-Figure-sequences/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Hofstadter-Q-sequence b/Lang/PascalABC.NET/Hofstadter-Q-sequence
deleted file mode 120000
index 454e935a80..0000000000
--- a/Lang/PascalABC.NET/Hofstadter-Q-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hofstadter-Q-sequence/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Horizontal-sundial-calculations b/Lang/PascalABC.NET/Horizontal-sundial-calculations
deleted file mode 120000
index 6ab4227b2a..0000000000
--- a/Lang/PascalABC.NET/Horizontal-sundial-calculations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Horizontal-sundial-calculations/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Horners-rule-for-polynomial-evaluation b/Lang/PascalABC.NET/Horners-rule-for-polynomial-evaluation
deleted file mode 120000
index 43a8514719..0000000000
--- a/Lang/PascalABC.NET/Horners-rule-for-polynomial-evaluation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Horners-rule-for-polynomial-evaluation/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Host-introspection b/Lang/PascalABC.NET/Host-introspection
deleted file mode 120000
index 786a9617c6..0000000000
--- a/Lang/PascalABC.NET/Host-introspection
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Host-introspection/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Hostname b/Lang/PascalABC.NET/Hostname
deleted file mode 120000
index 89e14c01f4..0000000000
--- a/Lang/PascalABC.NET/Hostname
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hostname/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Humble-numbers b/Lang/PascalABC.NET/Humble-numbers
deleted file mode 120000
index ee2cb9aa95..0000000000
--- a/Lang/PascalABC.NET/Humble-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Humble-numbers/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/I-before-E-except-after-C b/Lang/PascalABC.NET/I-before-E-except-after-C
deleted file mode 120000
index db9c4689f9..0000000000
--- a/Lang/PascalABC.NET/I-before-E-except-after-C
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/I-before-E-except-after-C/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/IBAN b/Lang/PascalABC.NET/IBAN
deleted file mode 120000
index 2a1610e29a..0000000000
--- a/Lang/PascalABC.NET/IBAN
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/IBAN/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/ISBN13-check-digit b/Lang/PascalABC.NET/ISBN13-check-digit
deleted file mode 120000
index 1cc5a9193a..0000000000
--- a/Lang/PascalABC.NET/ISBN13-check-digit
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/ISBN13-check-digit/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Identity-matrix b/Lang/PascalABC.NET/Identity-matrix
deleted file mode 120000
index e498197ea6..0000000000
--- a/Lang/PascalABC.NET/Identity-matrix
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Identity-matrix/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Include-a-file b/Lang/PascalABC.NET/Include-a-file
deleted file mode 120000
index 5762928418..0000000000
--- a/Lang/PascalABC.NET/Include-a-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Include-a-file/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Increasing-gaps-between-consecutive-Niven-numbers b/Lang/PascalABC.NET/Increasing-gaps-between-consecutive-Niven-numbers
deleted file mode 120000
index cff91f6819..0000000000
--- a/Lang/PascalABC.NET/Increasing-gaps-between-consecutive-Niven-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Increasing-gaps-between-consecutive-Niven-numbers/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Increment-a-numerical-string b/Lang/PascalABC.NET/Increment-a-numerical-string
deleted file mode 120000
index 5570e6302a..0000000000
--- a/Lang/PascalABC.NET/Increment-a-numerical-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Increment-a-numerical-string/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Infinity b/Lang/PascalABC.NET/Infinity
deleted file mode 120000
index e5b6807ad7..0000000000
--- a/Lang/PascalABC.NET/Infinity
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Infinity/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Inheritance-Multiple b/Lang/PascalABC.NET/Inheritance-Multiple
deleted file mode 120000
index f3f065b097..0000000000
--- a/Lang/PascalABC.NET/Inheritance-Multiple
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Inheritance-Multiple/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Inheritance-Single b/Lang/PascalABC.NET/Inheritance-Single
deleted file mode 120000
index 2843b9d512..0000000000
--- a/Lang/PascalABC.NET/Inheritance-Single
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Inheritance-Single/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Input-loop b/Lang/PascalABC.NET/Input-loop
deleted file mode 120000
index 8086164ab5..0000000000
--- a/Lang/PascalABC.NET/Input-loop
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Input-loop/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Integer-comparison b/Lang/PascalABC.NET/Integer-comparison
deleted file mode 120000
index b60ac826c4..0000000000
--- a/Lang/PascalABC.NET/Integer-comparison
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Integer-comparison/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Intersecting-number-wheels b/Lang/PascalABC.NET/Intersecting-number-wheels
deleted file mode 120000
index 5d79870677..0000000000
--- a/Lang/PascalABC.NET/Intersecting-number-wheels
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Intersecting-number-wheels/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Isograms-and-heterograms b/Lang/PascalABC.NET/Isograms-and-heterograms
deleted file mode 120000
index bf330eefcd..0000000000
--- a/Lang/PascalABC.NET/Isograms-and-heterograms
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Isograms-and-heterograms/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Isqrt-integer-square-root-of-X b/Lang/PascalABC.NET/Isqrt-integer-square-root-of-X
deleted file mode 120000
index 5e922bc6f6..0000000000
--- a/Lang/PascalABC.NET/Isqrt-integer-square-root-of-X
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Isqrt-integer-square-root-of-X/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Iterated-digits-squaring b/Lang/PascalABC.NET/Iterated-digits-squaring
deleted file mode 120000
index d26b072d9f..0000000000
--- a/Lang/PascalABC.NET/Iterated-digits-squaring
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Iterated-digits-squaring/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/JSON b/Lang/PascalABC.NET/JSON
deleted file mode 120000
index e24e87ebee..0000000000
--- a/Lang/PascalABC.NET/JSON
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/JSON/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Jacobi-symbol b/Lang/PascalABC.NET/Jacobi-symbol
deleted file mode 120000
index beae5f110d..0000000000
--- a/Lang/PascalABC.NET/Jacobi-symbol
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jacobi-symbol/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Jacobsthal-numbers b/Lang/PascalABC.NET/Jacobsthal-numbers
deleted file mode 120000
index 876df13cd2..0000000000
--- a/Lang/PascalABC.NET/Jacobsthal-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jacobsthal-numbers/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Jensens-Device b/Lang/PascalABC.NET/Jensens-Device
deleted file mode 120000
index b995733017..0000000000
--- a/Lang/PascalABC.NET/Jensens-Device
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jensens-Device/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Jewels-and-stones b/Lang/PascalABC.NET/Jewels-and-stones
deleted file mode 120000
index 3c21e35293..0000000000
--- a/Lang/PascalABC.NET/Jewels-and-stones
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jewels-and-stones/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/JortSort b/Lang/PascalABC.NET/JortSort
deleted file mode 120000
index 7235c60479..0000000000
--- a/Lang/PascalABC.NET/JortSort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/JortSort/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Josephus-problem b/Lang/PascalABC.NET/Josephus-problem
deleted file mode 120000
index b62f88327b..0000000000
--- a/Lang/PascalABC.NET/Josephus-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Josephus-problem/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Juggler-sequence b/Lang/PascalABC.NET/Juggler-sequence
deleted file mode 120000
index 11d7432b3c..0000000000
--- a/Lang/PascalABC.NET/Juggler-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Juggler-sequence/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Julia-set b/Lang/PascalABC.NET/Julia-set
deleted file mode 120000
index 905a140bc7..0000000000
--- a/Lang/PascalABC.NET/Julia-set
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Julia-set/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Jump-anywhere b/Lang/PascalABC.NET/Jump-anywhere
deleted file mode 120000
index cb395144b9..0000000000
--- a/Lang/PascalABC.NET/Jump-anywhere
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jump-anywhere/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Kaprekar-numbers b/Lang/PascalABC.NET/Kaprekar-numbers
deleted file mode 120000
index f1765dac14..0000000000
--- a/Lang/PascalABC.NET/Kaprekar-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Kaprekar-numbers/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Kernighans-large-earthquake-problem b/Lang/PascalABC.NET/Kernighans-large-earthquake-problem
deleted file mode 120000
index bfd99d6f53..0000000000
--- a/Lang/PascalABC.NET/Kernighans-large-earthquake-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Kernighans-large-earthquake-problem/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Keyboard-input-Obtain-a-Y-or-N-response b/Lang/PascalABC.NET/Keyboard-input-Obtain-a-Y-or-N-response
deleted file mode 120000
index d70dc96806..0000000000
--- a/Lang/PascalABC.NET/Keyboard-input-Obtain-a-Y-or-N-response
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Keyboard-input-Obtain-a-Y-or-N-response/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Knapsack-problem-0-1 b/Lang/PascalABC.NET/Knapsack-problem-0-1
deleted file mode 120000
index 2fbfd42a60..0000000000
--- a/Lang/PascalABC.NET/Knapsack-problem-0-1
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Knapsack-problem-0-1/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Knuth-shuffle b/Lang/PascalABC.NET/Knuth-shuffle
deleted file mode 120000
index a80c329b34..0000000000
--- a/Lang/PascalABC.NET/Knuth-shuffle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Knuth-shuffle/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Knuths-algorithm-S b/Lang/PascalABC.NET/Knuths-algorithm-S
deleted file mode 120000
index 5898ddfb2a..0000000000
--- a/Lang/PascalABC.NET/Knuths-algorithm-S
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Knuths-algorithm-S/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Knuths-power-tree b/Lang/PascalABC.NET/Knuths-power-tree
deleted file mode 120000
index 985187fb94..0000000000
--- a/Lang/PascalABC.NET/Knuths-power-tree
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Knuths-power-tree/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Kolakoski-sequence b/Lang/PascalABC.NET/Kolakoski-sequence
deleted file mode 120000
index 141e5ac2f1..0000000000
--- a/Lang/PascalABC.NET/Kolakoski-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Kolakoski-sequence/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Kosaraju b/Lang/PascalABC.NET/Kosaraju
deleted file mode 120000
index b461c7f092..0000000000
--- a/Lang/PascalABC.NET/Kosaraju
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Kosaraju/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Kronecker-product b/Lang/PascalABC.NET/Kronecker-product
deleted file mode 120000
index d78d832294..0000000000
--- a/Lang/PascalABC.NET/Kronecker-product
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Kronecker-product/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Kronecker-product-based-fractals b/Lang/PascalABC.NET/Kronecker-product-based-fractals
deleted file mode 120000
index 47d2054ae1..0000000000
--- a/Lang/PascalABC.NET/Kronecker-product-based-fractals
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Kronecker-product-based-fractals/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/LZW-compression b/Lang/PascalABC.NET/LZW-compression
deleted file mode 120000
index caca350ee1..0000000000
--- a/Lang/PascalABC.NET/LZW-compression
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/LZW-compression/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Lah-numbers b/Lang/PascalABC.NET/Lah-numbers
deleted file mode 120000
index 6d00cf7c92..0000000000
--- a/Lang/PascalABC.NET/Lah-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Lah-numbers/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Langtons-ant b/Lang/PascalABC.NET/Langtons-ant
deleted file mode 120000
index 7c98b40d3c..0000000000
--- a/Lang/PascalABC.NET/Langtons-ant
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Langtons-ant/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Largest-int-from-concatenated-ints b/Lang/PascalABC.NET/Largest-int-from-concatenated-ints
deleted file mode 120000
index 97fdfc9525..0000000000
--- a/Lang/PascalABC.NET/Largest-int-from-concatenated-ints
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Largest-int-from-concatenated-ints/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Largest-number-divisible-by-its-digits b/Lang/PascalABC.NET/Largest-number-divisible-by-its-digits
deleted file mode 120000
index 40a547007f..0000000000
--- a/Lang/PascalABC.NET/Largest-number-divisible-by-its-digits
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Largest-number-divisible-by-its-digits/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Largest-proper-divisor-of-n b/Lang/PascalABC.NET/Largest-proper-divisor-of-n
deleted file mode 120000
index 2988b13d98..0000000000
--- a/Lang/PascalABC.NET/Largest-proper-divisor-of-n
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Largest-proper-divisor-of-n/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Last-Friday-of-each-month b/Lang/PascalABC.NET/Last-Friday-of-each-month
deleted file mode 120000
index bcb04c8152..0000000000
--- a/Lang/PascalABC.NET/Last-Friday-of-each-month
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Last-Friday-of-each-month/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Last-letter-first-letter b/Lang/PascalABC.NET/Last-letter-first-letter
deleted file mode 120000
index 19b2a978ef..0000000000
--- a/Lang/PascalABC.NET/Last-letter-first-letter
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Last-letter-first-letter/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Law-of-cosines---triples b/Lang/PascalABC.NET/Law-of-cosines---triples
deleted file mode 120000
index c3f4700866..0000000000
--- a/Lang/PascalABC.NET/Law-of-cosines---triples
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Law-of-cosines---triples/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Leap-year b/Lang/PascalABC.NET/Leap-year
deleted file mode 120000
index 250d71014a..0000000000
--- a/Lang/PascalABC.NET/Leap-year
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Leap-year/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Least-common-multiple b/Lang/PascalABC.NET/Least-common-multiple
deleted file mode 120000
index 446b96ac48..0000000000
--- a/Lang/PascalABC.NET/Least-common-multiple
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Least-common-multiple/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Left-factorials b/Lang/PascalABC.NET/Left-factorials
deleted file mode 120000
index 8ed1d03134..0000000000
--- a/Lang/PascalABC.NET/Left-factorials
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Left-factorials/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Leonardo-numbers b/Lang/PascalABC.NET/Leonardo-numbers
deleted file mode 120000
index 0895bc3d59..0000000000
--- a/Lang/PascalABC.NET/Leonardo-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Leonardo-numbers/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Levenshtein-distance b/Lang/PascalABC.NET/Levenshtein-distance
deleted file mode 120000
index e32fc71042..0000000000
--- a/Lang/PascalABC.NET/Levenshtein-distance
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Levenshtein-distance/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Linear-congruential-generator b/Lang/PascalABC.NET/Linear-congruential-generator
deleted file mode 120000
index 901b6b4116..0000000000
--- a/Lang/PascalABC.NET/Linear-congruential-generator
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Linear-congruential-generator/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/List-comprehensions b/Lang/PascalABC.NET/List-comprehensions
deleted file mode 120000
index e9fa93e9e6..0000000000
--- a/Lang/PascalABC.NET/List-comprehensions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/List-comprehensions/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Literals-Floating-point b/Lang/PascalABC.NET/Literals-Floating-point
deleted file mode 120000
index e11300a194..0000000000
--- a/Lang/PascalABC.NET/Literals-Floating-point
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Literals-Floating-point/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Literals-Integer b/Lang/PascalABC.NET/Literals-Integer
deleted file mode 120000
index a9aac3cffe..0000000000
--- a/Lang/PascalABC.NET/Literals-Integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Literals-Integer/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Literals-String b/Lang/PascalABC.NET/Literals-String
deleted file mode 120000
index 2f02c8af92..0000000000
--- a/Lang/PascalABC.NET/Literals-String
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Literals-String/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Logistic-curve-fitting-in-epidemiology b/Lang/PascalABC.NET/Logistic-curve-fitting-in-epidemiology
deleted file mode 120000
index 9ae308e46e..0000000000
--- a/Lang/PascalABC.NET/Logistic-curve-fitting-in-epidemiology
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Logistic-curve-fitting-in-epidemiology/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Long-literals-with-continuations b/Lang/PascalABC.NET/Long-literals-with-continuations
deleted file mode 120000
index cef817d9b6..0000000000
--- a/Lang/PascalABC.NET/Long-literals-with-continuations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Long-literals-with-continuations/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Long-multiplication b/Lang/PascalABC.NET/Long-multiplication
deleted file mode 120000
index 3da90eb79b..0000000000
--- a/Lang/PascalABC.NET/Long-multiplication
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Long-multiplication/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Long-primes b/Lang/PascalABC.NET/Long-primes
deleted file mode 120000
index f90c1c5b51..0000000000
--- a/Lang/PascalABC.NET/Long-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Long-primes/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Long-year b/Lang/PascalABC.NET/Long-year
deleted file mode 120000
index cfbd0a990c..0000000000
--- a/Lang/PascalABC.NET/Long-year
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Long-year/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Longest-common-subsequence b/Lang/PascalABC.NET/Longest-common-subsequence
deleted file mode 120000
index 1dfbd5ef9d..0000000000
--- a/Lang/PascalABC.NET/Longest-common-subsequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Longest-common-subsequence/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Longest-common-substring b/Lang/PascalABC.NET/Longest-common-substring
deleted file mode 120000
index c8e27105a8..0000000000
--- a/Lang/PascalABC.NET/Longest-common-substring
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Longest-common-substring/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Longest-increasing-subsequence b/Lang/PascalABC.NET/Longest-increasing-subsequence
deleted file mode 120000
index 256a8afb28..0000000000
--- a/Lang/PascalABC.NET/Longest-increasing-subsequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Longest-increasing-subsequence/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Look-and-say-sequence b/Lang/PascalABC.NET/Look-and-say-sequence
deleted file mode 120000
index a23016f201..0000000000
--- a/Lang/PascalABC.NET/Look-and-say-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Look-and-say-sequence/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Loop-over-multiple-arrays-simultaneously b/Lang/PascalABC.NET/Loop-over-multiple-arrays-simultaneously
deleted file mode 120000
index 52655fded4..0000000000
--- a/Lang/PascalABC.NET/Loop-over-multiple-arrays-simultaneously
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loop-over-multiple-arrays-simultaneously/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Loops-Break b/Lang/PascalABC.NET/Loops-Break
deleted file mode 120000
index 75f285786e..0000000000
--- a/Lang/PascalABC.NET/Loops-Break
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Break/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Loops-Continue b/Lang/PascalABC.NET/Loops-Continue
deleted file mode 120000
index 75da2856ce..0000000000
--- a/Lang/PascalABC.NET/Loops-Continue
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Continue/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Loops-Do-while b/Lang/PascalABC.NET/Loops-Do-while
deleted file mode 120000
index a15c938618..0000000000
--- a/Lang/PascalABC.NET/Loops-Do-while
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Do-while/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Loops-Downward-for b/Lang/PascalABC.NET/Loops-Downward-for
deleted file mode 120000
index c2c6306f3a..0000000000
--- a/Lang/PascalABC.NET/Loops-Downward-for
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Downward-for/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Loops-For b/Lang/PascalABC.NET/Loops-For
deleted file mode 120000
index bf236f094e..0000000000
--- a/Lang/PascalABC.NET/Loops-For
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-For/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Loops-For-with-a-specified-step b/Lang/PascalABC.NET/Loops-For-with-a-specified-step
deleted file mode 120000
index 5244453d5c..0000000000
--- a/Lang/PascalABC.NET/Loops-For-with-a-specified-step
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-For-with-a-specified-step/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Loops-Foreach b/Lang/PascalABC.NET/Loops-Foreach
deleted file mode 120000
index 68b06931af..0000000000
--- a/Lang/PascalABC.NET/Loops-Foreach
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Foreach/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Loops-Increment-loop-index-within-loop-body b/Lang/PascalABC.NET/Loops-Increment-loop-index-within-loop-body
deleted file mode 120000
index f5d20bce59..0000000000
--- a/Lang/PascalABC.NET/Loops-Increment-loop-index-within-loop-body
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Increment-loop-index-within-loop-body/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Loops-N-plus-one-half b/Lang/PascalABC.NET/Loops-N-plus-one-half
deleted file mode 120000
index 95fe8496ec..0000000000
--- a/Lang/PascalABC.NET/Loops-N-plus-one-half
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-N-plus-one-half/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Loops-Nested b/Lang/PascalABC.NET/Loops-Nested
deleted file mode 120000
index d1a88ee15f..0000000000
--- a/Lang/PascalABC.NET/Loops-Nested
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Nested/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Loops-While b/Lang/PascalABC.NET/Loops-While
deleted file mode 120000
index 19d817b9f2..0000000000
--- a/Lang/PascalABC.NET/Loops-While
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-While/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Loops-With-multiple-ranges b/Lang/PascalABC.NET/Loops-With-multiple-ranges
deleted file mode 120000
index 1b3c0e8a85..0000000000
--- a/Lang/PascalABC.NET/Loops-With-multiple-ranges
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-With-multiple-ranges/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Loops-Wrong-ranges b/Lang/PascalABC.NET/Loops-Wrong-ranges
deleted file mode 120000
index cd717ae408..0000000000
--- a/Lang/PascalABC.NET/Loops-Wrong-ranges
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Wrong-ranges/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Lucas-Lehmer-test b/Lang/PascalABC.NET/Lucas-Lehmer-test
deleted file mode 120000
index bec917b045..0000000000
--- a/Lang/PascalABC.NET/Lucas-Lehmer-test
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Lucas-Lehmer-test/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Ludic-numbers b/Lang/PascalABC.NET/Ludic-numbers
deleted file mode 120000
index 84c5abb4fd..0000000000
--- a/Lang/PascalABC.NET/Ludic-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ludic-numbers/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Luhn-test-of-credit-card-numbers b/Lang/PascalABC.NET/Luhn-test-of-credit-card-numbers
deleted file mode 120000
index 00804b09b8..0000000000
--- a/Lang/PascalABC.NET/Luhn-test-of-credit-card-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Luhn-test-of-credit-card-numbers/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Lychrel-numbers b/Lang/PascalABC.NET/Lychrel-numbers
deleted file mode 120000
index c6935e364e..0000000000
--- a/Lang/PascalABC.NET/Lychrel-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Lychrel-numbers/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/M-bius-function b/Lang/PascalABC.NET/M-bius-function
deleted file mode 120000
index e6445ec3ed..0000000000
--- a/Lang/PascalABC.NET/M-bius-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/M-bius-function/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/MAC-vendor-lookup b/Lang/PascalABC.NET/MAC-vendor-lookup
deleted file mode 120000
index d35cdd8c9b..0000000000
--- a/Lang/PascalABC.NET/MAC-vendor-lookup
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/MAC-vendor-lookup/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/MD5 b/Lang/PascalABC.NET/MD5
deleted file mode 120000
index 375523a297..0000000000
--- a/Lang/PascalABC.NET/MD5
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/MD5/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Magic-constant b/Lang/PascalABC.NET/Magic-constant
deleted file mode 120000
index 822ebb4fb2..0000000000
--- a/Lang/PascalABC.NET/Magic-constant
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Magic-constant/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Magic-squares-of-doubly-even-order b/Lang/PascalABC.NET/Magic-squares-of-doubly-even-order
deleted file mode 120000
index b8c93bc64a..0000000000
--- a/Lang/PascalABC.NET/Magic-squares-of-doubly-even-order
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Magic-squares-of-doubly-even-order/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Magnanimous-numbers b/Lang/PascalABC.NET/Magnanimous-numbers
deleted file mode 120000
index 0a895d4414..0000000000
--- a/Lang/PascalABC.NET/Magnanimous-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Magnanimous-numbers/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Man-or-boy-test b/Lang/PascalABC.NET/Man-or-boy-test
deleted file mode 120000
index f9b9ccb7a0..0000000000
--- a/Lang/PascalABC.NET/Man-or-boy-test
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Man-or-boy-test/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Map-range b/Lang/PascalABC.NET/Map-range
deleted file mode 120000
index 2c5d9ac526..0000000000
--- a/Lang/PascalABC.NET/Map-range
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Map-range/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Matrix-exponentiation-operator b/Lang/PascalABC.NET/Matrix-exponentiation-operator
deleted file mode 120000
index 31137ceb77..0000000000
--- a/Lang/PascalABC.NET/Matrix-exponentiation-operator
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Matrix-exponentiation-operator/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Matrix-multiplication b/Lang/PascalABC.NET/Matrix-multiplication
deleted file mode 120000
index ab9b502408..0000000000
--- a/Lang/PascalABC.NET/Matrix-multiplication
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Matrix-multiplication/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Matrix-transposition b/Lang/PascalABC.NET/Matrix-transposition
deleted file mode 120000
index 2ba6e5da4b..0000000000
--- a/Lang/PascalABC.NET/Matrix-transposition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Matrix-transposition/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Maximum-triangle-path-sum b/Lang/PascalABC.NET/Maximum-triangle-path-sum
deleted file mode 120000
index d476233920..0000000000
--- a/Lang/PascalABC.NET/Maximum-triangle-path-sum
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Maximum-triangle-path-sum/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Maze-generation b/Lang/PascalABC.NET/Maze-generation
deleted file mode 120000
index 147e928cb8..0000000000
--- a/Lang/PascalABC.NET/Maze-generation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Maze-generation/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/McNuggets-problem b/Lang/PascalABC.NET/McNuggets-problem
deleted file mode 120000
index ceb4630090..0000000000
--- a/Lang/PascalABC.NET/McNuggets-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/McNuggets-problem/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Memory-allocation b/Lang/PascalABC.NET/Memory-allocation
deleted file mode 120000
index b7e94af0dd..0000000000
--- a/Lang/PascalABC.NET/Memory-allocation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Memory-allocation/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Mertens-function b/Lang/PascalABC.NET/Mertens-function
deleted file mode 120000
index f3e21033e6..0000000000
--- a/Lang/PascalABC.NET/Mertens-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Mertens-function/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Metallic-ratios b/Lang/PascalABC.NET/Metallic-ratios
deleted file mode 120000
index 1f47416b87..0000000000
--- a/Lang/PascalABC.NET/Metallic-ratios
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Metallic-ratios/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Metered-concurrency b/Lang/PascalABC.NET/Metered-concurrency
deleted file mode 120000
index 925b288d53..0000000000
--- a/Lang/PascalABC.NET/Metered-concurrency
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Metered-concurrency/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Mian-Chowla-sequence b/Lang/PascalABC.NET/Mian-Chowla-sequence
deleted file mode 120000
index 8a0250e208..0000000000
--- a/Lang/PascalABC.NET/Mian-Chowla-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Mian-Chowla-sequence/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Middle-three-digits b/Lang/PascalABC.NET/Middle-three-digits
deleted file mode 120000
index 5e135c1794..0000000000
--- a/Lang/PascalABC.NET/Middle-three-digits
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Middle-three-digits/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Minimum-multiple-of-m-where-digital-sum-equals-m b/Lang/PascalABC.NET/Minimum-multiple-of-m-where-digital-sum-equals-m
deleted file mode 120000
index 97c186fb9d..0000000000
--- a/Lang/PascalABC.NET/Minimum-multiple-of-m-where-digital-sum-equals-m
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Minimum-multiple-of-m-where-digital-sum-equals-m/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Modified-random-distribution b/Lang/PascalABC.NET/Modified-random-distribution
deleted file mode 120000
index 0b45ed8c91..0000000000
--- a/Lang/PascalABC.NET/Modified-random-distribution
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Modified-random-distribution/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Modular-exponentiation b/Lang/PascalABC.NET/Modular-exponentiation
deleted file mode 120000
index 06db8e7a38..0000000000
--- a/Lang/PascalABC.NET/Modular-exponentiation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Modular-exponentiation/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Modular-inverse b/Lang/PascalABC.NET/Modular-inverse
deleted file mode 120000
index cf592b925c..0000000000
--- a/Lang/PascalABC.NET/Modular-inverse
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Modular-inverse/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Monte-Carlo-methods b/Lang/PascalABC.NET/Monte-Carlo-methods
deleted file mode 120000
index 097d7017f6..0000000000
--- a/Lang/PascalABC.NET/Monte-Carlo-methods
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Monte-Carlo-methods/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Monty-Hall-problem b/Lang/PascalABC.NET/Monty-Hall-problem
deleted file mode 120000
index 194ee5c033..0000000000
--- a/Lang/PascalABC.NET/Monty-Hall-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Monty-Hall-problem/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Morse-code b/Lang/PascalABC.NET/Morse-code
deleted file mode 120000
index 957358167f..0000000000
--- a/Lang/PascalABC.NET/Morse-code
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Morse-code/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Motzkin-numbers b/Lang/PascalABC.NET/Motzkin-numbers
deleted file mode 120000
index 119a6ee6b9..0000000000
--- a/Lang/PascalABC.NET/Motzkin-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Motzkin-numbers/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Mouse-position b/Lang/PascalABC.NET/Mouse-position
deleted file mode 120000
index 207ee7b935..0000000000
--- a/Lang/PascalABC.NET/Mouse-position
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Mouse-position/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Move-to-front-algorithm b/Lang/PascalABC.NET/Move-to-front-algorithm
deleted file mode 120000
index e365638bb3..0000000000
--- a/Lang/PascalABC.NET/Move-to-front-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Move-to-front-algorithm/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Multifactorial b/Lang/PascalABC.NET/Multifactorial
deleted file mode 120000
index 1a4d72f284..0000000000
--- a/Lang/PascalABC.NET/Multifactorial
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Multifactorial/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Multiple-regression b/Lang/PascalABC.NET/Multiple-regression
deleted file mode 120000
index c2b1f827d2..0000000000
--- a/Lang/PascalABC.NET/Multiple-regression
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Multiple-regression/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Multiplication-tables b/Lang/PascalABC.NET/Multiplication-tables
deleted file mode 120000
index bbe1dc2627..0000000000
--- a/Lang/PascalABC.NET/Multiplication-tables
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Multiplication-tables/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Multisplit b/Lang/PascalABC.NET/Multisplit
deleted file mode 120000
index cacc0acc3b..0000000000
--- a/Lang/PascalABC.NET/Multisplit
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Multisplit/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Munchausen-numbers b/Lang/PascalABC.NET/Munchausen-numbers
deleted file mode 120000
index e5388bf0cf..0000000000
--- a/Lang/PascalABC.NET/Munchausen-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Munchausen-numbers/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Musical-scale b/Lang/PascalABC.NET/Musical-scale
deleted file mode 120000
index 33d370124c..0000000000
--- a/Lang/PascalABC.NET/Musical-scale
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Musical-scale/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Mutual-recursion b/Lang/PascalABC.NET/Mutual-recursion
deleted file mode 120000
index ccdccec66f..0000000000
--- a/Lang/PascalABC.NET/Mutual-recursion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Mutual-recursion/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/N-queens-problem b/Lang/PascalABC.NET/N-queens-problem
deleted file mode 120000
index d0df5430cc..0000000000
--- a/Lang/PascalABC.NET/N-queens-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/N-queens-problem/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Named-parameters b/Lang/PascalABC.NET/Named-parameters
deleted file mode 120000
index f91e295fc0..0000000000
--- a/Lang/PascalABC.NET/Named-parameters
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Named-parameters/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Naming-conventions b/Lang/PascalABC.NET/Naming-conventions
deleted file mode 120000
index 5fc365228c..0000000000
--- a/Lang/PascalABC.NET/Naming-conventions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Naming-conventions/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Narcissistic-decimal-number b/Lang/PascalABC.NET/Narcissistic-decimal-number
deleted file mode 120000
index 6e25078669..0000000000
--- a/Lang/PascalABC.NET/Narcissistic-decimal-number
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Narcissistic-decimal-number/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Nested-function b/Lang/PascalABC.NET/Nested-function
deleted file mode 120000
index 406d1380f0..0000000000
--- a/Lang/PascalABC.NET/Nested-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nested-function/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Next-highest-int-from-digits b/Lang/PascalABC.NET/Next-highest-int-from-digits
deleted file mode 120000
index f57c5311ba..0000000000
--- a/Lang/PascalABC.NET/Next-highest-int-from-digits
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Next-highest-int-from-digits/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Nim-game b/Lang/PascalABC.NET/Nim-game
deleted file mode 120000
index 11fed8b04f..0000000000
--- a/Lang/PascalABC.NET/Nim-game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nim-game/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Non-continuous-subsequences b/Lang/PascalABC.NET/Non-continuous-subsequences
deleted file mode 120000
index fb90313f8e..0000000000
--- a/Lang/PascalABC.NET/Non-continuous-subsequences
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Non-continuous-subsequences/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Nonoblock b/Lang/PascalABC.NET/Nonoblock
deleted file mode 120000
index 27ec8aac45..0000000000
--- a/Lang/PascalABC.NET/Nonoblock
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nonoblock/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Nth b/Lang/PascalABC.NET/Nth
deleted file mode 120000
index 2151e00c8d..0000000000
--- a/Lang/PascalABC.NET/Nth
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nth/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Null-object b/Lang/PascalABC.NET/Null-object
deleted file mode 120000
index 39b6da0acb..0000000000
--- a/Lang/PascalABC.NET/Null-object
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Null-object/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Numbers-which-are-not-the-sum-of-distinct-squares b/Lang/PascalABC.NET/Numbers-which-are-not-the-sum-of-distinct-squares
deleted file mode 120000
index 11f633b289..0000000000
--- a/Lang/PascalABC.NET/Numbers-which-are-not-the-sum-of-distinct-squares
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Numbers-which-are-not-the-sum-of-distinct-squares/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Numbers-which-are-the-cube-roots-of-the-product-of-their-proper-divisors b/Lang/PascalABC.NET/Numbers-which-are-the-cube-roots-of-the-product-of-their-proper-divisors
deleted file mode 120000
index 3b98dabeae..0000000000
--- a/Lang/PascalABC.NET/Numbers-which-are-the-cube-roots-of-the-product-of-their-proper-divisors
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Numbers-which-are-the-cube-roots-of-the-product-of-their-proper-divisors/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Numbers-with-equal-rises-and-falls b/Lang/PascalABC.NET/Numbers-with-equal-rises-and-falls
deleted file mode 120000
index 265a6e57f2..0000000000
--- a/Lang/PascalABC.NET/Numbers-with-equal-rises-and-falls
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Numbers-with-equal-rises-and-falls/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Numeric-error-propagation b/Lang/PascalABC.NET/Numeric-error-propagation
deleted file mode 120000
index b8b2e6d9b5..0000000000
--- a/Lang/PascalABC.NET/Numeric-error-propagation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Numeric-error-propagation/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Numerical-integration b/Lang/PascalABC.NET/Numerical-integration
deleted file mode 120000
index dc5bfcc884..0000000000
--- a/Lang/PascalABC.NET/Numerical-integration
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Numerical-integration/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Object-serialization b/Lang/PascalABC.NET/Object-serialization
deleted file mode 120000
index 07426b45b7..0000000000
--- a/Lang/PascalABC.NET/Object-serialization
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Object-serialization/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Odd-word-problem b/Lang/PascalABC.NET/Odd-word-problem
deleted file mode 120000
index b0936fb34b..0000000000
--- a/Lang/PascalABC.NET/Odd-word-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Odd-word-problem/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/One-dimensional-cellular-automata b/Lang/PascalABC.NET/One-dimensional-cellular-automata
deleted file mode 120000
index 19b52c40ec..0000000000
--- a/Lang/PascalABC.NET/One-dimensional-cellular-automata
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/One-dimensional-cellular-automata/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/One-of-n-lines-in-a-file b/Lang/PascalABC.NET/One-of-n-lines-in-a-file
deleted file mode 120000
index 6a1426ac8c..0000000000
--- a/Lang/PascalABC.NET/One-of-n-lines-in-a-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/One-of-n-lines-in-a-file/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/OpenWebNet-password b/Lang/PascalABC.NET/OpenWebNet-password
deleted file mode 120000
index 41ce8aa36a..0000000000
--- a/Lang/PascalABC.NET/OpenWebNet-password
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/OpenWebNet-password/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Operator-precedence b/Lang/PascalABC.NET/Operator-precedence
deleted file mode 120000
index 08a1b040c3..0000000000
--- a/Lang/PascalABC.NET/Operator-precedence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Operator-precedence/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Order-two-numerical-lists b/Lang/PascalABC.NET/Order-two-numerical-lists
deleted file mode 120000
index 8f392c8ff3..0000000000
--- a/Lang/PascalABC.NET/Order-two-numerical-lists
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Order-two-numerical-lists/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Ordered-words b/Lang/PascalABC.NET/Ordered-words
deleted file mode 120000
index d3217a2d03..0000000000
--- a/Lang/PascalABC.NET/Ordered-words
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ordered-words/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Padovan-n-step-number-sequences b/Lang/PascalABC.NET/Padovan-n-step-number-sequences
deleted file mode 120000
index 2e49ed2259..0000000000
--- a/Lang/PascalABC.NET/Padovan-n-step-number-sequences
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Padovan-n-step-number-sequences/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Padovan-sequence b/Lang/PascalABC.NET/Padovan-sequence
deleted file mode 120000
index c2c68fb6dd..0000000000
--- a/Lang/PascalABC.NET/Padovan-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Padovan-sequence/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Palindrome-dates b/Lang/PascalABC.NET/Palindrome-dates
deleted file mode 120000
index 09644b6a7c..0000000000
--- a/Lang/PascalABC.NET/Palindrome-dates
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Palindrome-dates/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Palindrome-detection b/Lang/PascalABC.NET/Palindrome-detection
deleted file mode 120000
index cc92721e9f..0000000000
--- a/Lang/PascalABC.NET/Palindrome-detection
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Palindrome-detection/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Palindromic-gapful-numbers b/Lang/PascalABC.NET/Palindromic-gapful-numbers
deleted file mode 120000
index 532e5bda78..0000000000
--- a/Lang/PascalABC.NET/Palindromic-gapful-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Palindromic-gapful-numbers/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Pancake-numbers b/Lang/PascalABC.NET/Pancake-numbers
deleted file mode 120000
index b4faf1b68d..0000000000
--- a/Lang/PascalABC.NET/Pancake-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pancake-numbers/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Pangram-checker b/Lang/PascalABC.NET/Pangram-checker
deleted file mode 120000
index 114e870600..0000000000
--- a/Lang/PascalABC.NET/Pangram-checker
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pangram-checker/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Paraffins b/Lang/PascalABC.NET/Paraffins
deleted file mode 120000
index bafd6e0939..0000000000
--- a/Lang/PascalABC.NET/Paraffins
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Paraffins/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Parallel-calculations b/Lang/PascalABC.NET/Parallel-calculations
deleted file mode 120000
index e88e92c1df..0000000000
--- a/Lang/PascalABC.NET/Parallel-calculations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Parallel-calculations/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Parametric-polymorphism b/Lang/PascalABC.NET/Parametric-polymorphism
deleted file mode 120000
index 7c242be133..0000000000
--- a/Lang/PascalABC.NET/Parametric-polymorphism
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Parametric-polymorphism/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Parsing-RPN-calculator-algorithm b/Lang/PascalABC.NET/Parsing-RPN-calculator-algorithm
deleted file mode 120000
index c4ae7949cd..0000000000
--- a/Lang/PascalABC.NET/Parsing-RPN-calculator-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Parsing-RPN-calculator-algorithm/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Partition-an-integer-x-into-n-primes b/Lang/PascalABC.NET/Partition-an-integer-x-into-n-primes
deleted file mode 120000
index eb7a5e97f7..0000000000
--- a/Lang/PascalABC.NET/Partition-an-integer-x-into-n-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Partition-an-integer-x-into-n-primes/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Partition-function-P b/Lang/PascalABC.NET/Partition-function-P
deleted file mode 120000
index e780cc5e40..0000000000
--- a/Lang/PascalABC.NET/Partition-function-P
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Partition-function-P/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Pascal-matrix-generation b/Lang/PascalABC.NET/Pascal-matrix-generation
deleted file mode 120000
index c8097eca88..0000000000
--- a/Lang/PascalABC.NET/Pascal-matrix-generation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pascal-matrix-generation/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Pascals-triangle b/Lang/PascalABC.NET/Pascals-triangle
deleted file mode 120000
index 1089718a97..0000000000
--- a/Lang/PascalABC.NET/Pascals-triangle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pascals-triangle/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Pascals-triangle-Puzzle b/Lang/PascalABC.NET/Pascals-triangle-Puzzle
deleted file mode 120000
index 8106a5db3a..0000000000
--- a/Lang/PascalABC.NET/Pascals-triangle-Puzzle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pascals-triangle-Puzzle/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Pathological-floating-point-problems b/Lang/PascalABC.NET/Pathological-floating-point-problems
deleted file mode 120000
index 7eaa34e4a8..0000000000
--- a/Lang/PascalABC.NET/Pathological-floating-point-problems
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pathological-floating-point-problems/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Pells-equation b/Lang/PascalABC.NET/Pells-equation
deleted file mode 120000
index 1729f4ebb8..0000000000
--- a/Lang/PascalABC.NET/Pells-equation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pells-equation/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Perfect-shuffle b/Lang/PascalABC.NET/Perfect-shuffle
deleted file mode 120000
index 5ea5d5cf28..0000000000
--- a/Lang/PascalABC.NET/Perfect-shuffle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Perfect-shuffle/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Perfect-totient-numbers b/Lang/PascalABC.NET/Perfect-totient-numbers
deleted file mode 120000
index 8aae312612..0000000000
--- a/Lang/PascalABC.NET/Perfect-totient-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Perfect-totient-numbers/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Permutation-test b/Lang/PascalABC.NET/Permutation-test
deleted file mode 120000
index 38efc59733..0000000000
--- a/Lang/PascalABC.NET/Permutation-test
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Permutation-test/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Permutations b/Lang/PascalABC.NET/Permutations
deleted file mode 120000
index e1329591d7..0000000000
--- a/Lang/PascalABC.NET/Permutations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Permutations/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Permutations-Derangements b/Lang/PascalABC.NET/Permutations-Derangements
deleted file mode 120000
index 4c7dd2b64b..0000000000
--- a/Lang/PascalABC.NET/Permutations-Derangements
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Permutations-Derangements/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Pick-random-element b/Lang/PascalABC.NET/Pick-random-element
deleted file mode 120000
index 9dd6351bad..0000000000
--- a/Lang/PascalABC.NET/Pick-random-element
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pick-random-element/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Plot-coordinate-pairs b/Lang/PascalABC.NET/Plot-coordinate-pairs
deleted file mode 120000
index 4d0282311b..0000000000
--- a/Lang/PascalABC.NET/Plot-coordinate-pairs
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Plot-coordinate-pairs/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Pointers-and-references b/Lang/PascalABC.NET/Pointers-and-references
deleted file mode 120000
index 6985ca1666..0000000000
--- a/Lang/PascalABC.NET/Pointers-and-references
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pointers-and-references/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Polymorphic-copy b/Lang/PascalABC.NET/Polymorphic-copy
deleted file mode 120000
index 7ed8b814ad..0000000000
--- a/Lang/PascalABC.NET/Polymorphic-copy
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Polymorphic-copy/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Polymorphism b/Lang/PascalABC.NET/Polymorphism
deleted file mode 120000
index 4996bdacfd..0000000000
--- a/Lang/PascalABC.NET/Polymorphism
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Polymorphism/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Population-count b/Lang/PascalABC.NET/Population-count
deleted file mode 120000
index 742c56a591..0000000000
--- a/Lang/PascalABC.NET/Population-count
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Population-count/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Power-set b/Lang/PascalABC.NET/Power-set
deleted file mode 120000
index 042d839f30..0000000000
--- a/Lang/PascalABC.NET/Power-set
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Power-set/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Primality-by-trial-division b/Lang/PascalABC.NET/Primality-by-trial-division
deleted file mode 120000
index 62ca027b6e..0000000000
--- a/Lang/PascalABC.NET/Primality-by-trial-division
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Primality-by-trial-division/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Prime-decomposition b/Lang/PascalABC.NET/Prime-decomposition
deleted file mode 120000
index ea96188341..0000000000
--- a/Lang/PascalABC.NET/Prime-decomposition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Prime-decomposition/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Program-name b/Lang/PascalABC.NET/Program-name
deleted file mode 120000
index 6bdce5a90a..0000000000
--- a/Lang/PascalABC.NET/Program-name
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Program-name/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Program-termination b/Lang/PascalABC.NET/Program-termination
deleted file mode 120000
index 63645717ea..0000000000
--- a/Lang/PascalABC.NET/Program-termination
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Program-termination/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Queue-Definition b/Lang/PascalABC.NET/Queue-Definition
deleted file mode 120000
index efb10e6df2..0000000000
--- a/Lang/PascalABC.NET/Queue-Definition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Queue-Definition/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Queue-Usage b/Lang/PascalABC.NET/Queue-Usage
deleted file mode 120000
index eab42cf449..0000000000
--- a/Lang/PascalABC.NET/Queue-Usage
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Queue-Usage/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Quine b/Lang/PascalABC.NET/Quine
deleted file mode 120000
index 98ce8f9f2f..0000000000
--- a/Lang/PascalABC.NET/Quine
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Quine/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Quoting-constructs b/Lang/PascalABC.NET/Quoting-constructs
deleted file mode 120000
index 971db935d4..0000000000
--- a/Lang/PascalABC.NET/Quoting-constructs
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Quoting-constructs/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/RPG-attributes-generator b/Lang/PascalABC.NET/RPG-attributes-generator
deleted file mode 120000
index ddbe45c835..0000000000
--- a/Lang/PascalABC.NET/RPG-attributes-generator
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/RPG-attributes-generator/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Radical-of-an-integer b/Lang/PascalABC.NET/Radical-of-an-integer
deleted file mode 120000
index 430a252ecf..0000000000
--- a/Lang/PascalABC.NET/Radical-of-an-integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Radical-of-an-integer/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Ramer-Douglas-Peucker-line-simplification b/Lang/PascalABC.NET/Ramer-Douglas-Peucker-line-simplification
deleted file mode 120000
index 31e2b26ec5..0000000000
--- a/Lang/PascalABC.NET/Ramer-Douglas-Peucker-line-simplification
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ramer-Douglas-Peucker-line-simplification/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Random-numbers b/Lang/PascalABC.NET/Random-numbers
deleted file mode 120000
index da187d2cc0..0000000000
--- a/Lang/PascalABC.NET/Random-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Random-numbers/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Read-a-file-character-by-character-UTF8 b/Lang/PascalABC.NET/Read-a-file-character-by-character-UTF8
deleted file mode 120000
index a425a12499..0000000000
--- a/Lang/PascalABC.NET/Read-a-file-character-by-character-UTF8
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Read-a-file-character-by-character-UTF8/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Read-a-file-line-by-line b/Lang/PascalABC.NET/Read-a-file-line-by-line
deleted file mode 120000
index bd96f90ae1..0000000000
--- a/Lang/PascalABC.NET/Read-a-file-line-by-line
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Read-a-file-line-by-line/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Read-a-specific-line-from-a-file b/Lang/PascalABC.NET/Read-a-specific-line-from-a-file
deleted file mode 120000
index 28703147aa..0000000000
--- a/Lang/PascalABC.NET/Read-a-specific-line-from-a-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Read-a-specific-line-from-a-file/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Read-entire-file b/Lang/PascalABC.NET/Read-entire-file
deleted file mode 120000
index 20a95b9d77..0000000000
--- a/Lang/PascalABC.NET/Read-entire-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Read-entire-file/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Real-constants-and-functions b/Lang/PascalABC.NET/Real-constants-and-functions
deleted file mode 120000
index a6e7dce16d..0000000000
--- a/Lang/PascalABC.NET/Real-constants-and-functions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Real-constants-and-functions/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Reflection-List-methods b/Lang/PascalABC.NET/Reflection-List-methods
deleted file mode 120000
index 7e40bca2fa..0000000000
--- a/Lang/PascalABC.NET/Reflection-List-methods
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Reflection-List-methods/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Reflection-List-properties b/Lang/PascalABC.NET/Reflection-List-properties
deleted file mode 120000
index ed60f425f0..0000000000
--- a/Lang/PascalABC.NET/Reflection-List-properties
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Reflection-List-properties/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Regular-expressions b/Lang/PascalABC.NET/Regular-expressions
deleted file mode 120000
index a3ccbe1574..0000000000
--- a/Lang/PascalABC.NET/Regular-expressions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Regular-expressions/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Remove-duplicate-elements b/Lang/PascalABC.NET/Remove-duplicate-elements
deleted file mode 120000
index 6f37a5852e..0000000000
--- a/Lang/PascalABC.NET/Remove-duplicate-elements
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Remove-duplicate-elements/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Remove-lines-from-a-file b/Lang/PascalABC.NET/Remove-lines-from-a-file
deleted file mode 120000
index 6e76bee372..0000000000
--- a/Lang/PascalABC.NET/Remove-lines-from-a-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Remove-lines-from-a-file/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Rename-a-file b/Lang/PascalABC.NET/Rename-a-file
deleted file mode 120000
index e7599165d6..0000000000
--- a/Lang/PascalABC.NET/Rename-a-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Rename-a-file/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Repeat b/Lang/PascalABC.NET/Repeat
deleted file mode 120000
index e16283f972..0000000000
--- a/Lang/PascalABC.NET/Repeat
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Repeat/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Repeat-a-string b/Lang/PascalABC.NET/Repeat-a-string
deleted file mode 120000
index c21e0bfde3..0000000000
--- a/Lang/PascalABC.NET/Repeat-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Repeat-a-string/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Return-multiple-values b/Lang/PascalABC.NET/Return-multiple-values
deleted file mode 120000
index 5178c8dd1d..0000000000
--- a/Lang/PascalABC.NET/Return-multiple-values
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Return-multiple-values/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Reverse-a-string b/Lang/PascalABC.NET/Reverse-a-string
deleted file mode 120000
index 8e67838296..0000000000
--- a/Lang/PascalABC.NET/Reverse-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Reverse-a-string/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Reverse-words-in-a-string b/Lang/PascalABC.NET/Reverse-words-in-a-string
deleted file mode 120000
index aa82b64f3b..0000000000
--- a/Lang/PascalABC.NET/Reverse-words-in-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Reverse-words-in-a-string/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Roman-numerals-Decode b/Lang/PascalABC.NET/Roman-numerals-Decode
deleted file mode 120000
index 990d667ad0..0000000000
--- a/Lang/PascalABC.NET/Roman-numerals-Decode
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Roman-numerals-Decode/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Roman-numerals-Encode b/Lang/PascalABC.NET/Roman-numerals-Encode
deleted file mode 120000
index c8f15e15fa..0000000000
--- a/Lang/PascalABC.NET/Roman-numerals-Encode
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Roman-numerals-Encode/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Roots-of-unity b/Lang/PascalABC.NET/Roots-of-unity
deleted file mode 120000
index 31b7a73b39..0000000000
--- a/Lang/PascalABC.NET/Roots-of-unity
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Roots-of-unity/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Rosetta-Code-Rank-languages-by-popularity b/Lang/PascalABC.NET/Rosetta-Code-Rank-languages-by-popularity
deleted file mode 120000
index 55aa7d4f0c..0000000000
--- a/Lang/PascalABC.NET/Rosetta-Code-Rank-languages-by-popularity
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Rosetta-Code-Rank-languages-by-popularity/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Rot-13 b/Lang/PascalABC.NET/Rot-13
deleted file mode 120000
index f7c9e778c9..0000000000
--- a/Lang/PascalABC.NET/Rot-13
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Rot-13/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Scope-modifiers b/Lang/PascalABC.NET/Scope-modifiers
deleted file mode 120000
index eb11f44070..0000000000
--- a/Lang/PascalABC.NET/Scope-modifiers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Scope-modifiers/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Search-a-list-of-records b/Lang/PascalABC.NET/Search-a-list-of-records
deleted file mode 120000
index 7e72a33d4d..0000000000
--- a/Lang/PascalABC.NET/Search-a-list-of-records
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Search-a-list-of-records/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Send-an-unknown-method-call b/Lang/PascalABC.NET/Send-an-unknown-method-call
deleted file mode 120000
index 2e049c05b3..0000000000
--- a/Lang/PascalABC.NET/Send-an-unknown-method-call
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Send-an-unknown-method-call/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Sequence-of-primes-by-trial-division b/Lang/PascalABC.NET/Sequence-of-primes-by-trial-division
deleted file mode 120000
index 4182c218d4..0000000000
--- a/Lang/PascalABC.NET/Sequence-of-primes-by-trial-division
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sequence-of-primes-by-trial-division/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Short-circuit-evaluation b/Lang/PascalABC.NET/Short-circuit-evaluation
deleted file mode 120000
index 582c107471..0000000000
--- a/Lang/PascalABC.NET/Short-circuit-evaluation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Short-circuit-evaluation/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Sierpinski-triangle b/Lang/PascalABC.NET/Sierpinski-triangle
deleted file mode 120000
index 7eb8f22264..0000000000
--- a/Lang/PascalABC.NET/Sierpinski-triangle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sierpinski-triangle/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Sieve-of-Eratosthenes b/Lang/PascalABC.NET/Sieve-of-Eratosthenes
deleted file mode 120000
index c9a2623742..0000000000
--- a/Lang/PascalABC.NET/Sieve-of-Eratosthenes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sieve-of-Eratosthenes/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Simple-windowed-application b/Lang/PascalABC.NET/Simple-windowed-application
deleted file mode 120000
index a619cd32f7..0000000000
--- a/Lang/PascalABC.NET/Simple-windowed-application
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Simple-windowed-application/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Singly-linked-list-Element-definition b/Lang/PascalABC.NET/Singly-linked-list-Element-definition
deleted file mode 120000
index 71d3f5d628..0000000000
--- a/Lang/PascalABC.NET/Singly-linked-list-Element-definition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Singly-linked-list-Element-definition/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Singly-linked-list-Element-insertion b/Lang/PascalABC.NET/Singly-linked-list-Element-insertion
deleted file mode 120000
index f60548d528..0000000000
--- a/Lang/PascalABC.NET/Singly-linked-list-Element-insertion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Singly-linked-list-Element-insertion/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Sleep b/Lang/PascalABC.NET/Sleep
deleted file mode 120000
index d8f830cd4f..0000000000
--- a/Lang/PascalABC.NET/Sleep
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sleep/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Sort-an-array-of-composite-structures b/Lang/PascalABC.NET/Sort-an-array-of-composite-structures
deleted file mode 120000
index e0459e8577..0000000000
--- a/Lang/PascalABC.NET/Sort-an-array-of-composite-structures
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-an-array-of-composite-structures/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Sort-an-integer-array b/Lang/PascalABC.NET/Sort-an-integer-array
deleted file mode 120000
index e2137f1191..0000000000
--- a/Lang/PascalABC.NET/Sort-an-integer-array
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-an-integer-array/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Sort-three-variables b/Lang/PascalABC.NET/Sort-three-variables
deleted file mode 120000
index 2143247222..0000000000
--- a/Lang/PascalABC.NET/Sort-three-variables
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-three-variables/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Sort-using-a-custom-comparator b/Lang/PascalABC.NET/Sort-using-a-custom-comparator
deleted file mode 120000
index a2ade4323b..0000000000
--- a/Lang/PascalABC.NET/Sort-using-a-custom-comparator
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-using-a-custom-comparator/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Sorting-algorithms-Bubble-sort b/Lang/PascalABC.NET/Sorting-algorithms-Bubble-sort
deleted file mode 120000
index 75fb7e1472..0000000000
--- a/Lang/PascalABC.NET/Sorting-algorithms-Bubble-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Bubble-sort/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Sorting-algorithms-Quicksort b/Lang/PascalABC.NET/Sorting-algorithms-Quicksort
deleted file mode 120000
index d84582d974..0000000000
--- a/Lang/PascalABC.NET/Sorting-algorithms-Quicksort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Quicksort/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Special-variables b/Lang/PascalABC.NET/Special-variables
deleted file mode 120000
index 00db4953ba..0000000000
--- a/Lang/PascalABC.NET/Special-variables
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Special-variables/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Split-a-character-string-based-on-change-of-character b/Lang/PascalABC.NET/Split-a-character-string-based-on-change-of-character
deleted file mode 120000
index b7c7bef74b..0000000000
--- a/Lang/PascalABC.NET/Split-a-character-string-based-on-change-of-character
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Split-a-character-string-based-on-change-of-character/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Stack b/Lang/PascalABC.NET/Stack
deleted file mode 120000
index 71f695fe1b..0000000000
--- a/Lang/PascalABC.NET/Stack
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Stack/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Stack-traces b/Lang/PascalABC.NET/Stack-traces
deleted file mode 120000
index b6976dc3e0..0000000000
--- a/Lang/PascalABC.NET/Stack-traces
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Stack-traces/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Statistics-Basic b/Lang/PascalABC.NET/Statistics-Basic
deleted file mode 120000
index 5ef44d7d18..0000000000
--- a/Lang/PascalABC.NET/Statistics-Basic
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Statistics-Basic/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/String-append b/Lang/PascalABC.NET/String-append
deleted file mode 120000
index 78fd361243..0000000000
--- a/Lang/PascalABC.NET/String-append
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-append/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/String-case b/Lang/PascalABC.NET/String-case
deleted file mode 120000
index 980e55192e..0000000000
--- a/Lang/PascalABC.NET/String-case
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-case/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/String-concatenation b/Lang/PascalABC.NET/String-concatenation
deleted file mode 120000
index d7b52bf492..0000000000
--- a/Lang/PascalABC.NET/String-concatenation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-concatenation/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/String-interpolation-included- b/Lang/PascalABC.NET/String-interpolation-included-
deleted file mode 120000
index 6a1179d384..0000000000
--- a/Lang/PascalABC.NET/String-interpolation-included-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-interpolation-included-/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/String-length b/Lang/PascalABC.NET/String-length
deleted file mode 120000
index 1bc629e3ec..0000000000
--- a/Lang/PascalABC.NET/String-length
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-length/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/String-matching b/Lang/PascalABC.NET/String-matching
deleted file mode 120000
index f031375ab5..0000000000
--- a/Lang/PascalABC.NET/String-matching
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-matching/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/String-prepend b/Lang/PascalABC.NET/String-prepend
deleted file mode 120000
index 205b3e4638..0000000000
--- a/Lang/PascalABC.NET/String-prepend
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-prepend/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Strip-a-set-of-characters-from-a-string b/Lang/PascalABC.NET/Strip-a-set-of-characters-from-a-string
deleted file mode 120000
index 5548033cde..0000000000
--- a/Lang/PascalABC.NET/Strip-a-set-of-characters-from-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strip-a-set-of-characters-from-a-string/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Strip-block-comments b/Lang/PascalABC.NET/Strip-block-comments
deleted file mode 120000
index 7a95085577..0000000000
--- a/Lang/PascalABC.NET/Strip-block-comments
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strip-block-comments/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Strip-comments-from-a-string b/Lang/PascalABC.NET/Strip-comments-from-a-string
deleted file mode 120000
index c415553cce..0000000000
--- a/Lang/PascalABC.NET/Strip-comments-from-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strip-comments-from-a-string/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Strip-control-codes-and-extended-characters-from-a-string b/Lang/PascalABC.NET/Strip-control-codes-and-extended-characters-from-a-string
deleted file mode 120000
index 3175c3c416..0000000000
--- a/Lang/PascalABC.NET/Strip-control-codes-and-extended-characters-from-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strip-control-codes-and-extended-characters-from-a-string/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Strip-whitespace-from-a-string-Top-and-tail b/Lang/PascalABC.NET/Strip-whitespace-from-a-string-Top-and-tail
deleted file mode 120000
index 075fc6a71b..0000000000
--- a/Lang/PascalABC.NET/Strip-whitespace-from-a-string-Top-and-tail
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strip-whitespace-from-a-string-Top-and-tail/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Substitution-cipher b/Lang/PascalABC.NET/Substitution-cipher
deleted file mode 120000
index 5c9f1bb54c..0000000000
--- a/Lang/PascalABC.NET/Substitution-cipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Substitution-cipher/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Substring b/Lang/PascalABC.NET/Substring
deleted file mode 120000
index f2a607112d..0000000000
--- a/Lang/PascalABC.NET/Substring
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Substring/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Substring-Top-and-tail b/Lang/PascalABC.NET/Substring-Top-and-tail
deleted file mode 120000
index b64b9c4948..0000000000
--- a/Lang/PascalABC.NET/Substring-Top-and-tail
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Substring-Top-and-tail/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Sudan-function b/Lang/PascalABC.NET/Sudan-function
deleted file mode 120000
index 2a6cccd8a5..0000000000
--- a/Lang/PascalABC.NET/Sudan-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sudan-function/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Sum-and-product-of-an-array b/Lang/PascalABC.NET/Sum-and-product-of-an-array
deleted file mode 120000
index 5bf49387d6..0000000000
--- a/Lang/PascalABC.NET/Sum-and-product-of-an-array
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sum-and-product-of-an-array/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Sum-digits-of-an-integer b/Lang/PascalABC.NET/Sum-digits-of-an-integer
deleted file mode 120000
index 84d553224a..0000000000
--- a/Lang/PascalABC.NET/Sum-digits-of-an-integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sum-digits-of-an-integer/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Sum-multiples-of-3-and-5 b/Lang/PascalABC.NET/Sum-multiples-of-3-and-5
deleted file mode 120000
index 3792b87fe0..0000000000
--- a/Lang/PascalABC.NET/Sum-multiples-of-3-and-5
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sum-multiples-of-3-and-5/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Sum-of-a-series b/Lang/PascalABC.NET/Sum-of-a-series
deleted file mode 120000
index 1c91b8532b..0000000000
--- a/Lang/PascalABC.NET/Sum-of-a-series
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sum-of-a-series/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Sum-of-elements-below-main-diagonal-of-matrix b/Lang/PascalABC.NET/Sum-of-elements-below-main-diagonal-of-matrix
deleted file mode 120000
index 055fd11a3e..0000000000
--- a/Lang/PascalABC.NET/Sum-of-elements-below-main-diagonal-of-matrix
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sum-of-elements-below-main-diagonal-of-matrix/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Sum-of-squares b/Lang/PascalABC.NET/Sum-of-squares
deleted file mode 120000
index 0d6573d1ec..0000000000
--- a/Lang/PascalABC.NET/Sum-of-squares
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sum-of-squares/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Symmetric-difference b/Lang/PascalABC.NET/Symmetric-difference
deleted file mode 120000
index 6a0af3805f..0000000000
--- a/Lang/PascalABC.NET/Symmetric-difference
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Symmetric-difference/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/System-time b/Lang/PascalABC.NET/System-time
deleted file mode 120000
index b4cf3d92cb..0000000000
--- a/Lang/PascalABC.NET/System-time
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/System-time/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Take-notes-on-the-command-line b/Lang/PascalABC.NET/Take-notes-on-the-command-line
deleted file mode 120000
index ce2c9c51c4..0000000000
--- a/Lang/PascalABC.NET/Take-notes-on-the-command-line
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Take-notes-on-the-command-line/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Tau-function b/Lang/PascalABC.NET/Tau-function
deleted file mode 120000
index fcb633b959..0000000000
--- a/Lang/PascalABC.NET/Tau-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tau-function/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Tau-number b/Lang/PascalABC.NET/Tau-number
deleted file mode 120000
index 4be8374dc0..0000000000
--- a/Lang/PascalABC.NET/Tau-number
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tau-number/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Teacup-rim-text b/Lang/PascalABC.NET/Teacup-rim-text
deleted file mode 120000
index 408b28d813..0000000000
--- a/Lang/PascalABC.NET/Teacup-rim-text
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Teacup-rim-text/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Temperature-conversion b/Lang/PascalABC.NET/Temperature-conversion
deleted file mode 120000
index 607c5a8aa1..0000000000
--- a/Lang/PascalABC.NET/Temperature-conversion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Temperature-conversion/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Terminal-control-Clear-the-screen b/Lang/PascalABC.NET/Terminal-control-Clear-the-screen
deleted file mode 120000
index ba3f668e83..0000000000
--- a/Lang/PascalABC.NET/Terminal-control-Clear-the-screen
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Terminal-control-Clear-the-screen/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Terminal-control-Coloured-text b/Lang/PascalABC.NET/Terminal-control-Coloured-text
deleted file mode 120000
index 26edde266f..0000000000
--- a/Lang/PascalABC.NET/Terminal-control-Coloured-text
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Terminal-control-Coloured-text/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Terminal-control-Cursor-movement b/Lang/PascalABC.NET/Terminal-control-Cursor-movement
deleted file mode 120000
index 75b038bfd2..0000000000
--- a/Lang/PascalABC.NET/Terminal-control-Cursor-movement
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Terminal-control-Cursor-movement/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Terminal-control-Cursor-positioning b/Lang/PascalABC.NET/Terminal-control-Cursor-positioning
deleted file mode 120000
index 440e989070..0000000000
--- a/Lang/PascalABC.NET/Terminal-control-Cursor-positioning
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Terminal-control-Cursor-positioning/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Terminal-control-Dimensions b/Lang/PascalABC.NET/Terminal-control-Dimensions
deleted file mode 120000
index 294b1506e4..0000000000
--- a/Lang/PascalABC.NET/Terminal-control-Dimensions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Terminal-control-Dimensions/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Terminal-control-Display-an-extended-character b/Lang/PascalABC.NET/Terminal-control-Display-an-extended-character
deleted file mode 120000
index 51ff55a04f..0000000000
--- a/Lang/PascalABC.NET/Terminal-control-Display-an-extended-character
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Terminal-control-Display-an-extended-character/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Terminal-control-Hiding-the-cursor b/Lang/PascalABC.NET/Terminal-control-Hiding-the-cursor
deleted file mode 120000
index 0f79ee5b6d..0000000000
--- a/Lang/PascalABC.NET/Terminal-control-Hiding-the-cursor
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Terminal-control-Hiding-the-cursor/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Terminal-control-Ringing-the-terminal-bell b/Lang/PascalABC.NET/Terminal-control-Ringing-the-terminal-bell
deleted file mode 120000
index dbea7c8c1b..0000000000
--- a/Lang/PascalABC.NET/Terminal-control-Ringing-the-terminal-bell
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Terminal-control-Ringing-the-terminal-bell/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Test-a-function b/Lang/PascalABC.NET/Test-a-function
deleted file mode 120000
index 561aaeccdd..0000000000
--- a/Lang/PascalABC.NET/Test-a-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Test-a-function/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Time-a-function b/Lang/PascalABC.NET/Time-a-function
deleted file mode 120000
index 2c161d3642..0000000000
--- a/Lang/PascalABC.NET/Time-a-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Time-a-function/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Tokenize-a-string b/Lang/PascalABC.NET/Tokenize-a-string
deleted file mode 120000
index 790ef58cc8..0000000000
--- a/Lang/PascalABC.NET/Tokenize-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tokenize-a-string/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Top-rank-per-group b/Lang/PascalABC.NET/Top-rank-per-group
deleted file mode 120000
index 09da721479..0000000000
--- a/Lang/PascalABC.NET/Top-rank-per-group
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Top-rank-per-group/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Totient-function b/Lang/PascalABC.NET/Totient-function
deleted file mode 120000
index cbbd5dcdf5..0000000000
--- a/Lang/PascalABC.NET/Totient-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Totient-function/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Towers-of-Hanoi b/Lang/PascalABC.NET/Towers-of-Hanoi
deleted file mode 120000
index 2c8ecfee74..0000000000
--- a/Lang/PascalABC.NET/Towers-of-Hanoi
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Towers-of-Hanoi/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Trabb-Pardo-Knuth-algorithm b/Lang/PascalABC.NET/Trabb-Pardo-Knuth-algorithm
deleted file mode 120000
index c211c9d9e3..0000000000
--- a/Lang/PascalABC.NET/Trabb-Pardo-Knuth-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Trabb-Pardo-Knuth-algorithm/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Transliterate-English-text-using-the-Greek-alphabet b/Lang/PascalABC.NET/Transliterate-English-text-using-the-Greek-alphabet
deleted file mode 120000
index d24a02b5a0..0000000000
--- a/Lang/PascalABC.NET/Transliterate-English-text-using-the-Greek-alphabet
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Transliterate-English-text-using-the-Greek-alphabet/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Tree-datastructures b/Lang/PascalABC.NET/Tree-datastructures
deleted file mode 120000
index 2b711cc827..0000000000
--- a/Lang/PascalABC.NET/Tree-datastructures
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tree-datastructures/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Tree-traversal b/Lang/PascalABC.NET/Tree-traversal
deleted file mode 120000
index 7b8540d436..0000000000
--- a/Lang/PascalABC.NET/Tree-traversal
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tree-traversal/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Trigonometric-functions b/Lang/PascalABC.NET/Trigonometric-functions
deleted file mode 120000
index 90b97e3cc1..0000000000
--- a/Lang/PascalABC.NET/Trigonometric-functions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Trigonometric-functions/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Truncate-a-file b/Lang/PascalABC.NET/Truncate-a-file
deleted file mode 120000
index e41951adf8..0000000000
--- a/Lang/PascalABC.NET/Truncate-a-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Truncate-a-file/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Twos-complement b/Lang/PascalABC.NET/Twos-complement
deleted file mode 120000
index b0daea87d5..0000000000
--- a/Lang/PascalABC.NET/Twos-complement
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Twos-complement/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/URL-decoding b/Lang/PascalABC.NET/URL-decoding
deleted file mode 120000
index bb79d3d611..0000000000
--- a/Lang/PascalABC.NET/URL-decoding
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/URL-decoding/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/URL-encoding b/Lang/PascalABC.NET/URL-encoding
deleted file mode 120000
index 4e193b1e1d..0000000000
--- a/Lang/PascalABC.NET/URL-encoding
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/URL-encoding/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Undefined-values b/Lang/PascalABC.NET/Undefined-values
deleted file mode 120000
index 799f03aa4e..0000000000
--- a/Lang/PascalABC.NET/Undefined-values
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Undefined-values/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Unicode-strings b/Lang/PascalABC.NET/Unicode-strings
deleted file mode 120000
index 1596fd402d..0000000000
--- a/Lang/PascalABC.NET/Unicode-strings
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Unicode-strings/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Unicode-variable-names b/Lang/PascalABC.NET/Unicode-variable-names
deleted file mode 120000
index 356bcbe63e..0000000000
--- a/Lang/PascalABC.NET/Unicode-variable-names
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Unicode-variable-names/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/User-input-Text b/Lang/PascalABC.NET/User-input-Text
deleted file mode 120000
index c49d403c30..0000000000
--- a/Lang/PascalABC.NET/User-input-Text
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/User-input-Text/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Variables b/Lang/PascalABC.NET/Variables
deleted file mode 120000
index fb0f3cb656..0000000000
--- a/Lang/PascalABC.NET/Variables
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Variables/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Variadic-function b/Lang/PascalABC.NET/Variadic-function
deleted file mode 120000
index c1bc454958..0000000000
--- a/Lang/PascalABC.NET/Variadic-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Variadic-function/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Vector b/Lang/PascalABC.NET/Vector
deleted file mode 120000
index d45a06a593..0000000000
--- a/Lang/PascalABC.NET/Vector
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Vector/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Vector-products b/Lang/PascalABC.NET/Vector-products
deleted file mode 120000
index 8bc6e1a1f1..0000000000
--- a/Lang/PascalABC.NET/Vector-products
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Vector-products/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Walk-a-directory-Non-recursively b/Lang/PascalABC.NET/Walk-a-directory-Non-recursively
deleted file mode 120000
index 117d045320..0000000000
--- a/Lang/PascalABC.NET/Walk-a-directory-Non-recursively
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Walk-a-directory-Non-recursively/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Walk-a-directory-Recursively b/Lang/PascalABC.NET/Walk-a-directory-Recursively
deleted file mode 120000
index 6fba185f99..0000000000
--- a/Lang/PascalABC.NET/Walk-a-directory-Recursively
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Walk-a-directory-Recursively/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Window-creation b/Lang/PascalABC.NET/Window-creation
deleted file mode 120000
index c656ea2a7f..0000000000
--- a/Lang/PascalABC.NET/Window-creation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Window-creation/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Word-frequency b/Lang/PascalABC.NET/Word-frequency
deleted file mode 120000
index eed444f9fc..0000000000
--- a/Lang/PascalABC.NET/Word-frequency
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Word-frequency/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Word-wrap b/Lang/PascalABC.NET/Word-wrap
deleted file mode 120000
index b2cbb831f8..0000000000
--- a/Lang/PascalABC.NET/Word-wrap
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Word-wrap/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Write-entire-file b/Lang/PascalABC.NET/Write-entire-file
deleted file mode 120000
index fb24fa3029..0000000000
--- a/Lang/PascalABC.NET/Write-entire-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Write-entire-file/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Write-to-Windows-event-log b/Lang/PascalABC.NET/Write-to-Windows-event-log
deleted file mode 120000
index 556c794eaf..0000000000
--- a/Lang/PascalABC.NET/Write-to-Windows-event-log
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Write-to-Windows-event-log/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/XML-DOM-serialization b/Lang/PascalABC.NET/XML-DOM-serialization
deleted file mode 120000
index ac8822f809..0000000000
--- a/Lang/PascalABC.NET/XML-DOM-serialization
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/XML-DOM-serialization/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/XML-Input b/Lang/PascalABC.NET/XML-Input
deleted file mode 120000
index 6c693b433f..0000000000
--- a/Lang/PascalABC.NET/XML-Input
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/XML-Input/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/XML-Output b/Lang/PascalABC.NET/XML-Output
deleted file mode 120000
index c33649037e..0000000000
--- a/Lang/PascalABC.NET/XML-Output
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/XML-Output/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/PascalABC.NET/Zero-to-the-zero-power b/Lang/PascalABC.NET/Zero-to-the-zero-power
deleted file mode 120000
index 315543b2a3..0000000000
--- a/Lang/PascalABC.NET/Zero-to-the-zero-power
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Zero-to-the-zero-power/PascalABC.NET
\ No newline at end of file
diff --git a/Lang/Perl/Bioinformatics-base-count b/Lang/Perl/Bioinformatics-base-count
new file mode 120000
index 0000000000..38044107bd
--- /dev/null
+++ b/Lang/Perl/Bioinformatics-base-count
@@ -0,0 +1 @@
+../../Task/Bioinformatics-base-count/Perl
\ No newline at end of file
diff --git a/Lang/Perl/Compare-sorting-algorithms-performance b/Lang/Perl/Compare-sorting-algorithms-performance
deleted file mode 120000
index a54a5351fe..0000000000
--- a/Lang/Perl/Compare-sorting-algorithms-performance
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compare-sorting-algorithms-performance/Perl
\ No newline at end of file
diff --git a/Lang/Perl/Continued-fraction-Arithmetic-G-matrix-ng-continued-fraction-n- b/Lang/Perl/Continued-fraction-Arithmetic-G-matrix-ng-continued-fraction-n-
deleted file mode 120000
index bc2932bdb0..0000000000
--- a/Lang/Perl/Continued-fraction-Arithmetic-G-matrix-ng-continued-fraction-n-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Continued-fraction-Arithmetic-G-matrix-ng-continued-fraction-n-/Perl
\ No newline at end of file
diff --git a/Lang/Perl/Execute-Computer-Zero b/Lang/Perl/Execute-Computer-Zero
deleted file mode 120000
index f5f02da865..0000000000
--- a/Lang/Perl/Execute-Computer-Zero
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Execute-Computer-Zero/Perl
\ No newline at end of file
diff --git a/Lang/Perl/K-d-tree b/Lang/Perl/K-d-tree
deleted file mode 120000
index 1cd4d50962..0000000000
--- a/Lang/Perl/K-d-tree
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/K-d-tree/Perl
\ No newline at end of file
diff --git a/Lang/Perl/Machine-code b/Lang/Perl/Machine-code
deleted file mode 120000
index 4729cd6042..0000000000
--- a/Lang/Perl/Machine-code
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Machine-code/Perl
\ No newline at end of file
diff --git a/Lang/Perl/Meissel-Mertens-constant b/Lang/Perl/Meissel-Mertens-constant
new file mode 120000
index 0000000000..d5ec169595
--- /dev/null
+++ b/Lang/Perl/Meissel-Mertens-constant
@@ -0,0 +1 @@
+../../Task/Meissel-Mertens-constant/Perl
\ No newline at end of file
diff --git a/Lang/Perl/Miller-Rabin-primality-test b/Lang/Perl/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..f2d8f376aa
--- /dev/null
+++ b/Lang/Perl/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/Perl
\ No newline at end of file
diff --git a/Lang/Perl/Prime-numbers-whose-neighboring-pairs-are-tetraprimes b/Lang/Perl/Prime-numbers-whose-neighboring-pairs-are-tetraprimes
deleted file mode 120000
index fc79cb9bd2..0000000000
--- a/Lang/Perl/Prime-numbers-whose-neighboring-pairs-are-tetraprimes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Prime-numbers-whose-neighboring-pairs-are-tetraprimes/Perl
\ No newline at end of file
diff --git a/Lang/Perl/Quaternion-type b/Lang/Perl/Quaternion-type
new file mode 120000
index 0000000000..6c26830ce6
--- /dev/null
+++ b/Lang/Perl/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/Perl
\ No newline at end of file
diff --git a/Lang/Perl/Search-in-paragraphs-text b/Lang/Perl/Search-in-paragraphs-text
deleted file mode 120000
index 3327049060..0000000000
--- a/Lang/Perl/Search-in-paragraphs-text
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Search-in-paragraphs-text/Perl
\ No newline at end of file
diff --git a/Lang/Perl/Sequence:-nth-number-with-exactly-n-divisors b/Lang/Perl/Sequence-nth-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/Perl/Sequence:-nth-number-with-exactly-n-divisors
rename to Lang/Perl/Sequence-nth-number-with-exactly-n-divisors
diff --git a/Lang/Perl/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors b/Lang/Perl/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
similarity index 100%
rename from Lang/Perl/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors
rename to Lang/Perl/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
diff --git a/Lang/Perl/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/Perl/Sequence-smallest-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/Perl/Sequence:-smallest-number-with-exactly-n-divisors
rename to Lang/Perl/Sequence-smallest-number-with-exactly-n-divisors
diff --git a/Lang/Perl/Singular-value-decomposition b/Lang/Perl/Singular-value-decomposition
deleted file mode 120000
index 0fe6468df6..0000000000
--- a/Lang/Perl/Singular-value-decomposition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Singular-value-decomposition/Perl
\ No newline at end of file
diff --git a/Lang/Perl/Sorting-Algorithms-Circle-Sort b/Lang/Perl/Sorting-Algorithms-Circle-Sort
new file mode 120000
index 0000000000..dec6111fc4
--- /dev/null
+++ b/Lang/Perl/Sorting-Algorithms-Circle-Sort
@@ -0,0 +1 @@
+../../Task/Sorting-Algorithms-Circle-Sort/Perl
\ No newline at end of file
diff --git a/Lang/Perl/Steffensens-method b/Lang/Perl/Steffensens-method
deleted file mode 120000
index 3b3d8146aa..0000000000
--- a/Lang/Perl/Steffensens-method
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Steffensens-method/Perl
\ No newline at end of file
diff --git a/Lang/Perl/Strassens-algorithm b/Lang/Perl/Strassens-algorithm
deleted file mode 120000
index 013c3f70b0..0000000000
--- a/Lang/Perl/Strassens-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strassens-algorithm/Perl
\ No newline at end of file
diff --git a/Lang/Perl/Tropical-algebra-overloading b/Lang/Perl/Tropical-algebra-overloading
deleted file mode 120000
index 380da329d3..0000000000
--- a/Lang/Perl/Tropical-algebra-overloading
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tropical-algebra-overloading/Perl
\ No newline at end of file
diff --git a/Lang/Phix/00-LANG.txt b/Lang/Phix/00-LANG.txt
index 7a127fa93c..cbc88ce28e 100644
--- a/Lang/Phix/00-LANG.txt
+++ b/Lang/Phix/00-LANG.txt
@@ -11,13 +11,13 @@
|LCT=yes
|bnf=http://phix.x10.mx/bnf.php
}}
-Phix is a self-hosted hybrid interpreter/compiler, developed by Pete Lomax.
-
+Phix is a self-hosted hybrid interpreter/compiler, developed by Pete Lomax. It is very easy to use, and similar to
+[https://rosettacode.org/wiki/Category:Euphoria Euphoria].
-On 26th December 2021, Phix became the first language on this site to have [https://rosettacode.org/wiki/Rosetta_Code/Rank_languages_by_popularity/Full_list?oldid=294533 submissions for 100%] of all tasks.
-(On 20th June 2022 [[Wren]] became the second, albeit there are [https://www.rosettacode.org/wiki/Category:WrenGo 13]+[https://rosettacode.org/wiki/Special:Search?search=wren.h&wprov=acrw1_-1 66] of those I have never been able to run.)
+On [https://rosettacode.org/wiki/Rosetta_Code/Rank_languages_by_popularity/Full_list?oldid=294533 26th December 2021, Phix became the first programming language on this site to have submissions for 100% of all tasks].
+(On 20th June 2022 [[Wren]] became the second, albeit with [https://www.rosettacode.org/wiki/Category:WrenGo 13]+[https://rosettacode.org/wiki/Special:Search?search=wren.h&wprov=acrw1_-1 66] of those embedded that I, for one, have been unable to run.)
-[http://phix.x10.mx/download.php A simple 30MB download] contains a pre-compiled executable, all the sources, and'' '''everything''' ''needed to recompile them, in under 20 seconds. The download also contains a full-featured programmer's editor and about 1000 demos.
+[http://phix.x10.mx/download.php A simple 30MB download] contains a pre-compiled executable, all the sources, and'' '''everything''' ''needed to recompile them, in under 20 seconds. The download also contains a full-featured programmer's editor and about 1000 demo programs.
You can also [https://replit.com/@PeteLomax1/PhixInterpreter#main.sh run Phix on replit here] (1.0.3 Lnx 64 bit), and several manually transpiled and uploaded entries [https://rosettacode.org/wiki/Category:Phix/online here]
diff --git a/Lang/Phix/Bioinformatics-base-count b/Lang/Phix/Bioinformatics-base-count
new file mode 120000
index 0000000000..88d72c5b75
--- /dev/null
+++ b/Lang/Phix/Bioinformatics-base-count
@@ -0,0 +1 @@
+../../Task/Bioinformatics-base-count/Phix
\ No newline at end of file
diff --git a/Lang/Phix/Meissel-Mertens-constant b/Lang/Phix/Meissel-Mertens-constant
new file mode 120000
index 0000000000..a9b8084fb5
--- /dev/null
+++ b/Lang/Phix/Meissel-Mertens-constant
@@ -0,0 +1 @@
+../../Task/Meissel-Mertens-constant/Phix
\ No newline at end of file
diff --git a/Lang/Phix/Miller-Rabin-primality-test b/Lang/Phix/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..440728dd57
--- /dev/null
+++ b/Lang/Phix/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/Phix
\ No newline at end of file
diff --git a/Lang/Phix/Quaternion-type b/Lang/Phix/Quaternion-type
new file mode 120000
index 0000000000..bae473b66e
--- /dev/null
+++ b/Lang/Phix/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/Phix
\ No newline at end of file
diff --git a/Lang/Phix/Sequence:-nth-number-with-exactly-n-divisors b/Lang/Phix/Sequence-nth-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/Phix/Sequence:-nth-number-with-exactly-n-divisors
rename to Lang/Phix/Sequence-nth-number-with-exactly-n-divisors
diff --git a/Lang/Phix/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors b/Lang/Phix/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
similarity index 100%
rename from Lang/Phix/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors
rename to Lang/Phix/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
diff --git a/Lang/Phix/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/Phix/Sequence-smallest-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/Phix/Sequence:-smallest-number-with-exactly-n-divisors
rename to Lang/Phix/Sequence-smallest-number-with-exactly-n-divisors
diff --git a/Lang/Phix/Sorting-Algorithms-Circle-Sort b/Lang/Phix/Sorting-Algorithms-Circle-Sort
new file mode 120000
index 0000000000..2aea38718d
--- /dev/null
+++ b/Lang/Phix/Sorting-Algorithms-Circle-Sort
@@ -0,0 +1 @@
+../../Task/Sorting-Algorithms-Circle-Sort/Phix
\ No newline at end of file
diff --git a/Lang/Picat/Bioinformatics-base-count b/Lang/Picat/Bioinformatics-base-count
new file mode 120000
index 0000000000..c724eb719d
--- /dev/null
+++ b/Lang/Picat/Bioinformatics-base-count
@@ -0,0 +1 @@
+../../Task/Bioinformatics-base-count/Picat
\ No newline at end of file
diff --git a/Lang/Picat/Quaternion-type b/Lang/Picat/Quaternion-type
new file mode 120000
index 0000000000..e15dda2aeb
--- /dev/null
+++ b/Lang/Picat/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/Picat
\ No newline at end of file
diff --git a/Lang/Pico-8/00-LANG.txt b/Lang/Pico-8/00-LANG.txt
deleted file mode 100644
index 017ddd4004..0000000000
--- a/Lang/Pico-8/00-LANG.txt
+++ /dev/null
@@ -1 +0,0 @@
-{{stub}}{{language|Pico-8}}
\ No newline at end of file
diff --git a/Lang/Pico-8/00-META.yaml b/Lang/Pico-8/00-META.yaml
deleted file mode 100644
index 5d0c380905..0000000000
--- a/Lang/Pico-8/00-META.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-from: http://rosettacode.org/wiki/Category:Pico-8
diff --git a/Lang/Pico-8/Hello-world-Text b/Lang/Pico-8/Hello-world-Text
deleted file mode 120000
index 8a6a254eaa..0000000000
--- a/Lang/Pico-8/Hello-world-Text
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Text/Pico-8
\ No newline at end of file
diff --git a/Lang/PicoLisp/Bioinformatics-base-count b/Lang/PicoLisp/Bioinformatics-base-count
new file mode 120000
index 0000000000..a4931ebf04
--- /dev/null
+++ b/Lang/PicoLisp/Bioinformatics-base-count
@@ -0,0 +1 @@
+../../Task/Bioinformatics-base-count/PicoLisp
\ No newline at end of file
diff --git a/Lang/PicoLisp/Miller-Rabin-primality-test b/Lang/PicoLisp/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..eae524ec57
--- /dev/null
+++ b/Lang/PicoLisp/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/PicoLisp
\ No newline at end of file
diff --git a/Lang/PicoLisp/Quaternion-type b/Lang/PicoLisp/Quaternion-type
new file mode 120000
index 0000000000..2120681801
--- /dev/null
+++ b/Lang/PicoLisp/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/PicoLisp
\ No newline at end of file
diff --git a/Lang/Pike/Execute-Brain- b/Lang/Pike/Execute-Brain-
deleted file mode 120000
index dd7ee4c73b..0000000000
--- a/Lang/Pike/Execute-Brain-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Execute-Brain-/Pike
\ No newline at end of file
diff --git a/Lang/Pike/Miller-Rabin-primality-test b/Lang/Pike/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..2cc78451b0
--- /dev/null
+++ b/Lang/Pike/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/Pike
\ No newline at end of file
diff --git a/Lang/Plain-English/00-LANG.txt b/Lang/Plain-English/00-LANG.txt
index 087f59b9fa..ff86a2a8e2 100644
--- a/Lang/Plain-English/00-LANG.txt
+++ b/Lang/Plain-English/00-LANG.txt
@@ -25,19 +25,13 @@ or compiled to a self-contained Microsoft Windows .exe file.
Here is a list of what you must understand from the start:
'''Fully Implemented in Itself:''' It is a single executable, with one or more human readable libraries (also written in Plain English Programming Language) which produces a new stand alone .exe with your new program in it.
-The project originally started as an IDE with a built-in compiler.
-Over time, this evolved into a separate effort, resulting in a standalone compiler developed as an independent project.
-Today, the ecosystem consists of two distinct components:
-an IDE that includes its own integrated compiler, and a separate command-line compiler, each maintained independently.
+It is NOT a compiler only that takes in source and produces compiled code.
+It is NOT an IDE only, that shells out to a compiler.
+It is both.
There is NO complete source code in another language; the system was bootstrapped in a Pascal-like language (which is no longer available) and was later re-written entirely in Plain English.
It is "Machine Code" Low Level: The bootstrap is very basic, only able to copy itself and add raw machine code in Intel hex format, make calls to the operating system, e.g.
-Call "kernel32.dll" "SetFilePointer" with
- the file [hFile]
- and 0 [lDistanceToMove]
- and 0 [lpDistanceToMoveHigh]
- and 2 [file_end / dwMoveMethod]
- returning a result number.
+Call "kernel32.dll" "SetFilePointer" with the file and 0 and 0 and 2 [file_end] returning a result number.
and call other DLLs e.g.
@@ -49,25 +43,21 @@ and it can do a few other things.
To run:
- Start up.
- Clear the screen.
- Use medium letters.
- Use the fat pen.
- Pick a really dark color.
- Loop.
- Start in the center of the screen.
- Turn left 1/32 of the way.
- Turn right.
- Move 2 inches.
- Turn left.
- Write "HELLO WORLD".
- Refresh the screen.
- Lighten the current color about 20 percent.
- Add 1 to a count.
- If the count is 32, break.
- Repeat.
- Wait for the escape key.
- Shut down.
+Start up.
+Clear the screen.
+Use medium letters. Use the fat pen.
+Pick a really dark color.
+Loop.
+Start in the center of the screen.
+Turn left 1/32 of the way.
+Turn right. Move 2 inches. Turn left.
+Write "HELLO WORLD".
+Refresh the screen.
+Lighten the current color about 20 percent.
+Add 1 to a count. If the count is 32, break.
+Repeat.
+Wait for the escape key.
+Shut down.
Note that standard English punctuation, word types, and sentence structure are all used.
@@ -89,10 +79,10 @@ Intel $8B85080000008B008B9D0C0000000103.
And yes, that is 80x86 machine code in Intel hex format. It decompiles to
-mov eax, [ebp+8] ; $8B8508000000 -> Load the value at (EBP + 8) into EAX (1st function argument)
-mov eax, [eax] ; $8B00 -> Dereference EAX (load the value from the address stored in EAX)
-mov ebx, [ebp+12] ; $8B9D0C000000-> Load the value at (EBP + 12) into EBX (2nd function argument)
-add [ebx],eax ; $0103 -> Add EAX to the value stored at the address in EBX
+mov eax, [ebp+8] ; $8B8508000000 -> load the current stack address + 8 into the accumulator
+mov eax, [eax] ; $8B00 -> load memory pointed to by accumulator into accumulator
+mov ebx, [ebp+12] ; $8B9D0C000000-> load the current stack address + 12 into working register
+add [ebx],eax ; $0103 -> add accumulator to memory pointed to by working register
So the language has stacked pointers (all parameters are passed by reference) to the two numbers via a number to another number and then it calls this code which gets the first number, and adds it to the second. Hopefully this example shows how high level and low level Plain English is at the same time.
@@ -128,7 +118,7 @@ The great foo is a number.
then values may be assigned, inside a routine
-Put 0 into the great foo.
+Put 0 into the great foo
or be passed by address...
@@ -182,8 +172,8 @@ Type reductions proceed, recursively, from left to right, until a match is found
To decide if a number is greater than another number:
- If the first number is greater than the second number, say yes.
- Say no.
+If the first number is greater than the second number, say yes.
+Say no.
'''Function:''' A routine that extracts, calculates, or otherwise derives a value from a passed parameter. Function headers take this form:
@@ -197,14 +187,14 @@ Unlike procedures (which are called via imperative sentences) and deciders (whic
'''Statements'''
From the instruction manual (see link below):
-(1) The compiler really only understand five kinds of sentences:
-(a) Type definitions, which always start with A, AN, or SOME;
-(b) Global variable definitions, which always start with THE;
-(c) Routine headers, which always start with TO, which can contain:
-(d) Conditional statements, which always start with IF; and
-(e) Imperative statements, which start with anything else.
+(1) I really only understand five kinds of sentences:
+(a) type definitions, which always start with A, AN, or SOME;
+(b) global variable definitions, which always start with THE;
+(c) routine headers, which always start with TO, which can contain:
+(d) conditional statements, which always start with IF; and
+(e) imperative statements, which start with anything else.
-(2) I treat as a name (that is, a variable, argument, parameter or a type) anything after A, AN, ANOTHER, SOME, or THE, up to:
+(2) I treat as a name anything after A, AN, ANOTHER, SOME, or THE, up to:
(a) any simple verb, like IS, ARE, CAN, or DO, or
(b) any conjunction, like AND or OR, or
@@ -221,9 +211,7 @@ From the instruction manual (see link below):
The noodle built into Plain English is simply not useful enough by itself, and therefore libraries were created to assist in writing Rosetta Code tasks in Plain English.
See also:
-https://github.com/Folds/english A work in progress to normalize Plain English into a more standard compiler.
-For documentation on the language in general, see the instructions.pdf file in the documentation folder.
-The author objects (see the issues)
+https://github.com/Folds/english A work in progress to normalize Plain English into a more standard compiler. For documentation on the language in general, see the instructions.pdf file in the documentation folder. The author objects (see the issues)
https://forums.parallax.com/discussion/163792/plain-english-programming a long rambling and unproductive (but educational, so productive in that sense) discussion of Plain English with it's author and proponents of a bare metal processor.
{| class="wikitable"
@@ -245,219 +233,9 @@ https://forums.parallax.com/discussion/163792/plain-english-programming a long r
* Complete IDE Download
** [http://www.Osmosian.com/cal-4700.zip cal-4700.zip]
*** requires Microsoft Windows
-* Plain English Compiler (CMD / Command Line)
-** [https://github.com/elisson-zlq3x/Plain-English-Compiler GitHub repo]
==Discussion==
* [https://forums.parallax.com/discussion/163792/plain-english-programming Plain English Programming]
==Todo==
-[[Reports:Tasks_not_implemented_in_PlainEnglish]]
-
-=Plain English Sources=
-[http://osmosian.com/cal-4700.zip IDE]
-and [https://github.com/elisson-zlq3x/Plain-English-Compiler Compiler].
-==Creators==
-* Gerry Rzeppa (Father)
-[https://www.quora.com/profile/Gerry-Rzeppa Quora Profile]
-[https://www.linkedin.com/in/gerry-rzeppa-17b8051b/ LinkedIn Profile]
-[https://twitter.com/gerryrzeppa Twitter Profile]
-[https://github.com/GerryRzeppa GitHub Profile]
-* Dan Rzeppa (Son)
-[https://github.com/danrzeppa GitHub Profile]
-
-==Contributors==
-* Elender Góis Gallas (Plain Portuguese Creator)
-[https://www.quora.com/profile/Elender-G%C3%B3is-Gallas-%E3%82%A8%E3%83%AC%E3%83%B3%E3%83%87-%E3%82%AC%E3%83%A9%E3%82%B9 Quora Profile]
-[https://www.linkedin.com/in/elender/ LinkedIn Profile]
-[https://twitter.com/elenderg Twitter Profile]
-[https://github.com/elenderg GitHub Profile]
-* Pablo Cayuela (Plain Spanish Creator)
-[https://www.linkedin.com/in/pablo-cayuela-a42b019/ LinkedIn Profile]
-
-==Copyright Owner==
-* The Osmosian Order
-** [http://www.Osmosian.com/ The Osmosian Order of Plain English Programmers] Brochure
-*** [http://www.osmosian.com/manifesto.pdf The Osmosian Manifesto]
-** [https://OsmosianPlainEnglishProgramming.blog/ Wordpress Blog]
In chronological order:
-*** 2018
-**** 05
-***** 01 [https://OsmosianPlainEnglishProgramming.blog/2018/05/01/a-solution-to-the-fatal-flaw-in-relational-database-systems/ A Solution to the Fatal Flaw in Relational Database Systems]
-***** 02 [https://OsmosianPlainEnglishProgramming.blog/2018/05/02/plain-english-programming-fractal-forests/ Fractal Forests]
-***** 02 [https://OsmosianPlainEnglishProgramming.blog/2018/05/02/plain-english-programming-is-a-picture-worth-1000-words/ Plain English Programming — Is a Picture Worth 1000 Words?]
-***** 03 [https://OsmosianPlainEnglishProgramming.blog/2018/05/03/plain-english-programming-robotics/ Robotics]
-***** 03 [https://OsmosianPlainEnglishProgramming.blog/2018/05/03/plain-english-programming-a-wysiwyg-document-editor/ A WYSIWYG Document Editor]
-***** 04 [https://OsmosianPlainEnglishProgramming.blog/2018/05/04/plain-english-programming-musings-on-the-a-in-ai/ Musings on the “A” in “AI”]
-***** 04 [https://OsmosianPlainEnglishProgramming.blog/2018/05/04/plain-english-programming-a-simple-merge-sort/ Robotics]
-***** 05 [https://OsmosianPlainEnglishProgramming.blog/2018/05/05/plain-english-programming-smoothing-polygons/ Plain English Programming — Smoothing Polygons]
-***** 05 [https://OsmosianPlainEnglishProgramming.blog/2018/05/05/plain-english-programming-kobayashi-maru-primes/ Kobayashi Maru Primes]
-***** 06 [https://OsmosianPlainEnglishProgramming.blog/2018/05/06/plain-english-programming-nested-ifs/ Plain English Programming — Nested IFs]
-***** 06 [https://OsmosianPlainEnglishProgramming.blog/2018/05/06/plain-english-programming-the-malevolent-mathemagician/ Plain English Programming — The Malevolent Mathemagician]
-***** 07 [https://OsmosianPlainEnglishProgramming.blog/2018/05/07/plain-english-programming-parsing-with-riders/ Parsing with Riders]
-***** 07 [https://OsmosianPlainEnglishProgramming.blog/2018/05/07/plain-english-programming-jackson-pollocks-alphabet-soup/ Plain English Programming — Jackson Pollock’s Alphabet Soup]
-***** 08 [https://OsmosianPlainEnglishProgramming.blog/2018/05/08/plain-english-programming-random-numbers/ Random Numbers]
-***** 08 [https://OsmosianPlainEnglishProgramming.blog/2018/05/08/plain-english-programming-sierpinski-koch/ Sierpinski & Koch]
-***** 09 [https://OsmosianPlainEnglishProgramming.blog/2018/05/09/plain-english-programming-the-travelling-salesman/ The Travelling Salesman]
-***** 09 [https://OsmosianPlainEnglishProgramming.blog/2018/05/09/plain-english-programming-a-jigsaw-puzzle/ A Jigsaw Puzzle]
-***** 10 [https://OsmosianPlainEnglishProgramming.blog/2018/05/10/plain-english-programming-anagrams/ Anagrams]
-***** 11 [https://OsmosianPlainEnglishProgramming.blog/2018/05/11/plain-english-programming-the-amazing-multimaze/ The Amazing MultiMaze]
-***** 12 [https://OsmosianPlainEnglishProgramming.blog/2018/05/12/plain-english-programming-painting-like-monet/ Painting Like Monet]
-***** 13 [https://OsmosianPlainEnglishProgramming.blog/2018/05/13/plain-english-programming-bresenhams-circle-drawing-algorithm/ Bresenham’s Circle Drawing Algorithm]
-***** 14 [https://OsmosianPlainEnglishProgramming.blog/2018/05/14/plain-english-programming-hiding-in-plain-sight/ Hiding in Plain Sight]
-***** 14 [https://OsmosianPlainEnglishProgramming.blog/2018/05/14/plain-english-programming-sudoku-solver/ Sudoku Solver]
-***** 15 [https://OsmosianPlainEnglishProgramming.blog/2018/05/15/plain-english-programming-teaching-kids/ Teaching Kids to Program]
-***** 16 [https://OsmosianPlainEnglishProgramming.blog/2018/05/16/the-journey-begins/ Plain English Programming]
-==IDE including Compiler==
-===Creator supplied===
-*[http://www.osmosian.com/cal-3040.zip cal-3040] 2006/08/14
-**[http://www.osmosian.com/ebnf EBNF]
-**[http://www.osmosian.com/instructions.pdf instructions]
-*[http://www.osmosian.com/cal-4700.zip cal-4700] 2017/01/27
-
-===GitHub===
-*[https://GitHub.com/GerryRzeppa/osmosian /GerryRzeppa/osmosian] cal-3040
-*[https://GitHub.com/Folds/osmosian /Folds/osmosian] cal-3040 (Unauthorized)
-*[https://GitHub.com/elenderg/Portugues-Puro /elenderg/Portugues-Puro] cal-4700 Translated to Portuguese
-
-==Forums==
-===[https://www.AnandTech.com/ AnandTech]===
-*[https://forums.anandtech.com/threads/natural-language-programming.2358744/ Natural Language Programming: Good Idea? Yes Maybe No]
-*[https://forums.anandtech.com/threads/conversational-storytelling-with-javascript.2410448/ Conversational Storytelling with JavaScript]
-*[https://forums.anandtech.com/threads/natural-language-programming-english-and-or-español.2559516/ Natural Language Programming -- English and/or Español]
-*[https://forums.anandtech.com/threads/learning-programming.2406202/#post-36858285 Learning programming]
-*[https://forums.anandtech.com/threads/official-free-tools-thread.199156/page-4#post-36861957 Official Free Tools Thread | Plain English contribution]
-*[https://news.yCombinator.com/item?id=8719957 Plain English Programming (2013)]
-*[https://news.yCombinator.com/item?id=19355965 Do You Approve the Plain English?]
-===[https://Forum.Arduino.cc/ Arduino]===
-*[https://forum.arduino.cc/t/plain-english-programming/371096/15 Plain English Programming]
-===[https://groups.google.com/g/comp.compilers/ comp.compilers]===
-*[https://groups.google.com/g/comp.compilers/c/p30I_zVRlps/m/9UshbYjqZzwJ Writing A Plain English Compiler]
-*[https://groups.google.com/g/comp.compilers/c/4t3_Dq6foFA/m/CYfdnKMBkAsJ Re: A Plain English Compiler]
-===[https://www.GeeksForGeeks.org/ GeeksForGeeks]===
-*[https://www.geeksforgeeks.org/the-malevolent-mathemagician-natural-language-programming/ The Malevolent Mathemagician | Natural Language Programming]
-*[https://www.geeksforgeeks.org/creating-wysiwyg-document-editor/ Creating WYSIWYG Document Editor | Natural Language Programming]
-*[https://www.geeksforgeeks.org/a-kobayashi-maru-approach-to-finding-primes/ A Kobayashi Maru Approach to Finding Primes]
-*[https://www.geeksforgeeks.org/natural-language-programming-sorting/ Sorting | Natural Language Programming]
-*[https://www.geeksforgeeks.org/natural-language-programming-teaching-kids/ Natural Language Programming — Teaching Kids]
-*[https://www.geeksforgeeks.org/natural-language-programming/ Natural Language Programming]
-===[https://IntFiction.org/ Interactive Fiction Community Forum]===
-*[https://intfiction.org/t/writer-wanted-for-a-conversational-storytelling-project/6169 Writer wanted for a “Conversational Storytelling” project]
-*[https://intfiction.org/t/inform-system-developers-do-you-approve-the-plain-english-programming/42213 Inform system developers, do you approve the Plain English Programming?]
-===[https://Forums.Parallax.com/ Parallax Forums]===
-*[https://forums.parallax.com/discussion/163792/plain-english-programming Plain English Programming]
-===[https://www.PC-Control.co.uk/ PC Control Limited]===
-*[https://www.pc-control.co.uk/control/articles/article10.php Automated Maze solver using a servo hawk]
-**[https://www.pc-control.co.uk/control/articles/images/photo%2009%20-%20definitions.png photo 09 - definitions]
-**[https://www.pc-control.co.uk/control/articles/images/photo%2010%20-%20low-level%20helper%20routines.png photo 10 - low-level helper routines]
-**[https://www.pc-control.co.uk/control/articles/images/photo%2011%20-%20mid-level%20helper%20routines.png photo 11 - mid-level helper routines]
-**[https://www.pc-control.co.uk/control/articles/images/photo%2012%20-%20high-level%20helper%20routines.png photo 12 - high-level helper routines]
-**[https://www.pc-control.co.uk/control/articles/images/photo%2013%20-%20main%20routine.png photo 13 - main routine]
-**[https://www.pc-control.co.uk/control/articles/images/photo%2014%20-%20terminal%20output.png photo 14 - terminal output]
-===[https://www.Quora.com/ Quora]===
-*Jul 06, 2021 - [https://www.quora.com/What-can-a-beginner-programmer-use-as-a-programming-IDE-I-tried-using-Visual-Studio-Express-but-it-was-too-hard-to-use-and-understand-Is-there-anything-else-I-can-use/answer/Gerry-Rzeppa What can a beginner programmer use as a programming IDE? I tried using Visual Studio Express but it was too hard to use and understand. Is there anything else I can use?]
-**"To get started with Plain English, see here (it’s fast, friendly, and free):"
-**Reference to another Gerry Rzeppa Quora article: Jun 27, 2021 - [https://www.quora.com/Is-there-a-right-way-to-learn-to-code-1/answer/Gerry-Rzeppa Is there a right way to learn to code?]
-*Jul 06, 2021 - [https://www.quora.com/How-often-when-puzzling-out-a-solution-to-a-problem-do-you-think-or-say-aloud-Are-we-asking-the-right-question-questions/answer/Gerry-Rzeppa How often when puzzling out a solution to a problem, do you think or say aloud, “Are we asking the right question/questions?”]
-**"Almost every time."
-**Reference to another Gerry Rzeppa Quora article: May 11, 2021 [https://www.quora.com/What-IDE-has-impressed-you-with-its-ease-of-use-and-how-productive-were-you-with-it/answer/Gerry-Rzeppa What IDE has impressed you with its ease of use, and how productive were you with it?]
-*Jul 06, 2021 - [https://www.quora.com/What-are-the-best-examples-of-poetry-written-in-programming-languages/answer/Gerry-Rzeppa What are the best examples of poetry written in programming languages?]
-**A poem written in Plain English that, when run, makes the picture the poem describes.
-*Jul 05, 2021 - [https://www.quora.com/What-is-the-character-limit-for-one-line-of-code-you-go-by/answer/Gerry-Rzeppa What is the character limit for one line of code you go by?]
-**"... if handwritten code fits on the screen, it’s okay by me."
-*Jul 05, 2021 - [https://www.quora.com/How-is-a-one-dimensional-character-array-and-a-string-similar/answer/Gerry-Rzeppa How is a one-dimensional character array and a string similar?]
-
-**Strings
-**Substrings
-**String Riders
-*Jun 27, 2021 - [https://www.quora.com/Is-there-a-right-way-to-learn-to-code-1/answer/Gerry-Rzeppa Is there a right way to learn to code?]
-**A offering of the Plain English IDE and personal tutoring.
-*Jun 10, 2021 - [https://www.quora.com/Is-there-any-way-to-write-genuine-self-modifying-code-in-Windows/answer/Gerry-Rzeppa Is there any way to write genuine self-modifying code in Windows?]
-
-**Memory Map
-**Memory Pointers
-*Jun 10, 2021 - [https://www.quora.com/How-can-I-write-a-Python-program-where-a-bunch-of-students-will-be-assigned-thesis-themes-using-the-FIFO-method/answer/Gerry-Rzeppa How can I write a Python program where a bunch of students will be assigned thesis themes using the FIFO method?]
-** Use of path variable.
-** Iterative development.
-** Relation of item in a list and the name of the list.
-** Screen space management.
-** Use of "backwards".
-*Jun 09, 2021 - [https://www.quora.com/How-do-computers-execute-if-statements-to-the-core-machine-code-and-opcodes/answer/Gerry-Rzeppa How do computers execute if statements to the core machine code and opcodes?]
-
-** List command and explanation of display produced
-** Memory Map
-** Uses [https://defuse.ca/online-x86-assembler.htm Online x86 and x64 Intel Instruction Assembler] to disassemble code in the List output.
-** Offers free “How to Write a Plain English Compiler in Plain English” course via email.
-*Jun 08, 2021 - [https://www.quora.com/How-can-I-draw-the-flag-of-a-country-in-C-beginner/answer/Gerry-Rzeppa How can I draw the flag of a country in C#? (beginner)]
-** Make a box
-** Center the box
-** Draw and fill the box
-** Stroke
-*Jun 07, 2021 - [https://www.quora.com/Is-it-wise-to-ask-query-like-why-curly-braces-are-preferred-in-C-instead-of-opening-and-closing-bracket-when-writing-functions-or-we-just-need-to-memorize-that-as-a-random-rule-Is-there-any-book-which-deals-with/answer/Gerry-Rzeppa Is it wise to ask query like why curly braces are preferred in C instead of opening and closing bracket when writing functions, or we just need to memorize that as a random rule? Is there any book which deals with such miscellaneous things about C?]
-** “Arbitrary and unnecessary rule”
-*Jun 06, 2021 - [https://www.quora.com/How-would-I-go-about-creating-dots-and-boxes-in-Java/answer/Gerry-Rzeppa How would I go about creating dots and boxes in Java?]
-*Jun 06, 2021 - [https://www.quora.com/How-can-I-write-a-menu-driven-program-to-perform-following-operations-on-the-stack-using-array-a-i-Push-ii-Pop-iii-Peek/answer/Gerry-Rzeppa How can I write a menu-driven program to perform the following operations on the stack using array- a (i) Push (ii) Pop (iii) Peek?]
-*Jun 06, 2021 - [https://www.quora.com/How-do-I-make-a-countdown-and-when-it-finishes-it-shows-a-text-in-coding-I-want-to-add-a-picture-as-a-border-or-what-else-to-countdown/answer/Gerry-Rzeppa How do I make a countdown and when it finishes, it shows a text in coding? I want to add a picture as a border or what else to countdown.]
-*Jun 06, 2021 - [https://www.quora.com/What-is-recursion-Can-you-explain-the-main-principles-of-recursions-Can-you-do-the-code-algorithm-of-the-Fibonacci-series-using-recursion/answer/Gerry-Rzeppa What is recursion? Can you explain the main principles of recursions? Can you do the code/algorithm of the Fibonacci series using recursion?]
-*Jun 06, 2021 - [https://www.quora.com/How-do-you-find-the-intersection-point-between-a-line-and-a-rectangle-algorithm-geometry-line-intersection-development/answer/Gerry-Rzeppa What is recursion? How do you find the intersection point between a line and a rectangle (algorithm, geometry, line, intersection, development)?]
-*Jun 06, 2021 - [https://www.quora.com/How-do-you-handle-algorithms-to-create-polygons-no-Thiesen-Voronoi-Python-Shapely-Voronoi-development/answer/Gerry-Rzeppa How do you handle algorithms to create polygons (no Thiesen/Voronoi) (Python, Shapely, Voronoi, development)?]
-*Jun 04, 2021 - [https://www.quora.com/I-want-to-get-into-programming-What-languages-should-I-learn-first/answer/Gerry-Rzeppa I want to get into programming. What languages should I learn first?]
-*Jun 04, 2021 - [https://www.quora.com/How-do-I-make-a-programme-using-codes/answer/Gerry-Rzeppa How do I make a programme using codes?]
-*Jun 04, 2021 - [https://www.quora.com/Why-is-Hello-World-the-default-line-in-programming-languages/answer/Gerry-Rzeppa Why is "Hello World" the default line in programming languages?]
-*Jun 04, 2021 - [https://www.quora.com/Why-cant-I-find-any-real-photo-of-a-compiler-Is-it-too-small/answer/Gerry-Rzeppa Why can't I find any real photo of a compiler? Is it too small?]
-*Jun 03, 2021 - [https://www.quora.com/Why-must-the-starting-value-of-a-control-variable-be-less-than-the-ending-value-in-a-for-loop-expression/answer/Gerry-Rzeppa Why must the starting value of a control variable be less than the ending value in a for loop expression?]
-*Jun 03, 2021 - [https://www.quora.com/What-is-the-purpose-of-initialization-of-counter-variable-in-a-loop/answer/Gerry-Rzeppa What is the purpose of "initialization of counter variable" in a loop?]
-*Jun 03, 2021 - [https://www.quora.com/What-is-the-nature-of-a-variable-with-real-life-examples/answer/Gerry-Rzeppa What is the nature of a variable with real life examples?]
-*Jun 03, 2021 - [https://www.quora.com/Why-is-UML-a-significant-area-of-study/answer/Gerry-Rzeppa Why is UML a significant area of study?]
-*May 29, 2021 [https://www.quora.com/Is-it-easier-to-write-an-interpreter-than-a-compiler-Why/answer/Gerry-Rzeppa Is it easier to write an interpreter than a compiler? Why?]
-**"Yes. An interpreter can be written with less knowledge of the hardware and operating system."
-**Reference to another Gerry Rzeppa Quora article: May 18, 2021 [https://www.quora.com/How-do-I-make-programming-language/answer/Gerry-Rzeppa How do I make programming language?]
-*May 18, 2021 [https://www.quora.com/How-do-I-make-programming-language/answer/Gerry-Rzeppa How do I make programming language?]
-**Reference to another Gerry Rzeppa Quora article: Dec 22, 2020 [https://www.quora.com/How-do-you-start-writing-your-interpreter-from-scratch/answer/Gerry-Rzeppa How do you start writing your interpreter from scratch?]
-**Reference to another Gerry Rzeppa Quora article: Aug 30, 2020 [https://www.quora.com/What-is-a-compiler-and-the-stages-of-a-compiler/answer/Gerry-Rzeppa What is a compiler and the stages of a compiler?]
-*May 11, 2021 [https://www.quora.com/What-IDE-has-impressed-you-with-its-ease-of-use-and-how-productive-were-you-with-it/answer/Gerry-Rzeppa What IDE has impressed you with its ease of use, and how productive were you with it?]
-*Apr 28, 2021 - [https://www.quora.com/I-need-some-good-project-related-to-data-structure-I-am-a-2rd-year-computer-science-student-What-is-your-suggestion/answer/Gerry-Rzeppa I need some good project related to data structure. I am a 2rd year computer science student. What is your suggestion?]
-
-**Data types
-***Fundamental
-****byte
-****record
-***Pointers
-****Generic
-****Typed
-***Strings
-***Things
-****Stacks
-****Queues
-****Hashed Indices
-**Memory Map
-**WYSIWYG document editor
-*Apr 12, 2021 - [https://www.quora.com/What-is-the-relationship-between-a-compiler-algorithm-and-data-structure/answer/Gerry-Rzeppa What is the relationship between a compiler, algorithm, and data structure?]
-** "A compiler uses data structures and algorithms to translate high-level source code into low-level executable machine code."
-** Discussion of the Plain English compiler
-*Mar 29, 2021 - [https://www.quora.com/What-is-the-most-interesting-Python-algorithm-in-less-than-ten-lines-of-code/answer/Gerry-Rzeppa What is the most interesting Python algorithm in less than ten lines of code?]
-**Lindenmayer interpreter
-*Mar 27, 2021 - [https://www.quora.com/What-is-the-best-way-to-present-an-algorithm/answer/Gerry-Rzeppa What is the best way to present an algorithm?]
-**Three-step process
-*Mar 24, 2021 - [https://www.quora.com/Why-is-it-hard-to-understand-linked-lists-in-programming/answer/Gerry-Rzeppa Why is it hard to understand linked lists in programming?]
-**Discuss Plain English linked list.
-*Dec 22, 2020 [https://www.quora.com/How-do-you-start-writing-your-interpreter-from-scratch/answer/Gerry-Rzeppa How do you start writing your interpreter from scratch?]
-** “primitive” BASIC editor/interpreter
-*Oct 03, 2020 - [https://www.quora.com/In-procedural-programming-how-do-you-plan-your-code-without-UML/answer/Gerry-Rzeppa In procedural programming, how do you plan your code without UML?]
-**Osmosian maxim: “If it’s hard, it’s wrong.”
-**Pair Programming
-**"During the winter of 2005-2006, we wrote (and documented) 25,000 lines of Plain English code in just six months ..."
-**'“Just tell us what you need, sonny, and we’ll show you how to live without it.”'
-*Aug 30, 2020 [https://www.quora.com/What-is-a-compiler-and-the-stages-of-a-compiler/answer/Gerry-Rzeppa What is a compiler and the stages of a compiler?]
-**Structure of the Plain English compiler.
-*Jul 09, 2020 - [https://www.quora.com/Who-can-print-this-string-Hello-world-more-smartly-and-clearly/answer/Gerry-Rzeppa Who can print this string "Hello world" more smartly and clearly?]
-**Plain English program to print in a circle.
-**Español Llano (Plain Spanish) program to print in a circle.
-*Jun 08, 2020 - [https://www.quora.com/Why-do-some-programmers-write-their-own-compilers/answer/Gerry-Rzeppa Why do some programmers write their own compilers?]
-**'My elder son and I wrote our own Plain English compiler and IDE, in Plain English, originally, for three reasons. We wanted to know:'
-***'1. Is it easier to program when you don’t have to translate your natural-language thoughts into an alternate syntax?'
-***'2. Can natural languages be parsed in a relatively “sloppy” manner (as humans apparently parse them) and still provide a stable enough environment for productive programming?'
-***'3. Can low-level programs (like compilers) be conveniently and efficiently written in high level languages (like English)?
-**'Turns out the answers to all of three questions is, “Yes!”'
-
-==Successor Project (Trial)==
-*[https://www.indiegogo.com/projects/the-hybrid-programming-language#/ The Hybrid Programming Language] - Plain English with snippets of formulas and graphics where needed
\ No newline at end of file
+[[Reports:Tasks_not_implemented_in_PlainEnglish]]
\ No newline at end of file
diff --git a/Lang/Pluto/00-LANG.txt b/Lang/Pluto/00-LANG.txt
deleted file mode 100644
index 80e65c9293..0000000000
--- a/Lang/Pluto/00-LANG.txt
+++ /dev/null
@@ -1,47 +0,0 @@
-{{language|Pluto
-|exec=interpreted
-|strength=strong
-|safety=safe
-|express=implicit
-|checking=dynamic
-|gc=yes
-|hopl=no
-|site=https://pluto-lang.org/}}
-Pluto is a superset of Lua 5.4 with a focus on general-purpose programming. While being remarkably compatible with Lua 5.4 source-code & bytecode, it enhances the standard library & adds more than a dozen highly-desired syntaxes such as switch statements, compound operators, classes, class inheritance, string interpolation, type hinting, enums, and so on.
-
-Pluto aspires to be a version of Lua with a larger feature-set, that is all. Pluto is not a Lua-killer, an attempted successor, or any of that. Many people (rightly so) love Lua precisely because of the design philosophy. And fundamentally, Pluto is a major deviation from Lua's design philosophy. Some may prefer this, some may not.
-
-The language is being developed on [https://github.com/PlutoLang/Pluto github] and pre-built binaries for 64-bit Linux, MacOS and Windows can be downloaded [https://github.com/PlutoLang/Pluto/releases here].
-
-Here is a list of custom libraries used on Rosetta Code:
-{|class="wikitable"
-! No. !! Module name !! No. !! Module name
-|-
-| 1 || [[:Category:Pluto-fmt|fmt]] || 2 || [[:Category:Pluto-math2|math2]]
-|-
-| 3 || [[:Category:Pluto-int|int]] || 4 || [[:Category:Pluto-table2|table2]]
-|-
-| 5 || [[:Category:Pluto-complex|complex]] || 6 || [[:Category:Pluto-rat|rat]]
-|-
-| 7 || [[:Category:Pluto-queue|queue]] || 8 || [[:Category:Pluto-map|map]]
-|-
-| 9 || [[:Category:Pluto-list|list]] || 10 || [[:Category:Pluto-perm|perm]]
-|-
-|11 || [[:Category:Pluto-ansi|ansi]] || 12 || [[:Category:Pluto-io2|io2]]
-|-
-|13 || [[:Category:Pluto-uchar|uchar]] || 14 || [[:Category:Pluto-gchar|gchar]]
-|-
-|15 || [[:Category:Pluto-matrix|matrix]] || 16 || [[:Category:Pluto-poly|poly]]
-|-
-|17 || [[:Category:Pluto-audio|audio]] || 18 || [[:Category:Pluto-bitmap|bitmap]]
-|-
-|19 || [[:Category:Pluto-lsystem|lsystem]] || 20 || [[:Category:Pluto-bignum|bignum]]
-|-
-|}
-
-== To do ==
-[[Tasks not implemented in Pluto]]
-
-== See also ==
-
-[[Lua]]
\ No newline at end of file
diff --git a/Lang/Pluto/00-META.yaml b/Lang/Pluto/00-META.yaml
deleted file mode 100644
index 4169e06d3e..0000000000
--- a/Lang/Pluto/00-META.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-from: http://rosettacode.org/wiki/Category:Pluto
diff --git a/Lang/Pluto/100-prisoners b/Lang/Pluto/100-prisoners
deleted file mode 120000
index 2439d4fa2a..0000000000
--- a/Lang/Pluto/100-prisoners
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/100-prisoners/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/9-billion-names-of-God-the-integer b/Lang/Pluto/9-billion-names-of-God-the-integer
deleted file mode 120000
index 03c26b8d5f..0000000000
--- a/Lang/Pluto/9-billion-names-of-God-the-integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/9-billion-names-of-God-the-integer/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/99-bottles-of-beer b/Lang/Pluto/99-bottles-of-beer
deleted file mode 120000
index cc21927564..0000000000
--- a/Lang/Pluto/99-bottles-of-beer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/99-bottles-of-beer/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/A+B b/Lang/Pluto/A+B
deleted file mode 120000
index c26f431720..0000000000
--- a/Lang/Pluto/A+B
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/A+B/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/ABC-problem b/Lang/Pluto/ABC-problem
deleted file mode 120000
index 13affeffe2..0000000000
--- a/Lang/Pluto/ABC-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/ABC-problem/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/AKS-test-for-primes b/Lang/Pluto/AKS-test-for-primes
deleted file mode 120000
index 55e9fce3e0..0000000000
--- a/Lang/Pluto/AKS-test-for-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/AKS-test-for-primes/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/ASCII-art-diagram-converter b/Lang/Pluto/ASCII-art-diagram-converter
deleted file mode 120000
index 395927ab4a..0000000000
--- a/Lang/Pluto/ASCII-art-diagram-converter
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/ASCII-art-diagram-converter/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Abbreviations-automatic b/Lang/Pluto/Abbreviations-automatic
deleted file mode 120000
index 1d471effa2..0000000000
--- a/Lang/Pluto/Abbreviations-automatic
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abbreviations-automatic/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Abbreviations-easy b/Lang/Pluto/Abbreviations-easy
deleted file mode 120000
index 4e4f49cf5b..0000000000
--- a/Lang/Pluto/Abbreviations-easy
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abbreviations-easy/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Abbreviations-simple b/Lang/Pluto/Abbreviations-simple
deleted file mode 120000
index d62c58f891..0000000000
--- a/Lang/Pluto/Abbreviations-simple
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abbreviations-simple/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Abelian-sandpile-model b/Lang/Pluto/Abelian-sandpile-model
deleted file mode 120000
index 84e194b9d0..0000000000
--- a/Lang/Pluto/Abelian-sandpile-model
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abelian-sandpile-model/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Abelian-sandpile-model-Identity b/Lang/Pluto/Abelian-sandpile-model-Identity
deleted file mode 120000
index 5258fd0a4e..0000000000
--- a/Lang/Pluto/Abelian-sandpile-model-Identity
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abelian-sandpile-model-Identity/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Abstract-type b/Lang/Pluto/Abstract-type
deleted file mode 120000
index f418e6a876..0000000000
--- a/Lang/Pluto/Abstract-type
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abstract-type/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Abundant-deficient-and-perfect-number-classifications b/Lang/Pluto/Abundant-deficient-and-perfect-number-classifications
deleted file mode 120000
index f5843a0883..0000000000
--- a/Lang/Pluto/Abundant-deficient-and-perfect-number-classifications
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abundant-deficient-and-perfect-number-classifications/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Abundant-odd-numbers b/Lang/Pluto/Abundant-odd-numbers
deleted file mode 120000
index 18495df602..0000000000
--- a/Lang/Pluto/Abundant-odd-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abundant-odd-numbers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Accumulator-factory b/Lang/Pluto/Accumulator-factory
deleted file mode 120000
index 09dad4bd16..0000000000
--- a/Lang/Pluto/Accumulator-factory
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Accumulator-factory/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Achilles-numbers b/Lang/Pluto/Achilles-numbers
deleted file mode 120000
index 0121ec15f3..0000000000
--- a/Lang/Pluto/Achilles-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Achilles-numbers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Ackermann-function b/Lang/Pluto/Ackermann-function
deleted file mode 120000
index b2e9e8bcf4..0000000000
--- a/Lang/Pluto/Ackermann-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ackermann-function/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Add-a-variable-to-a-class-instance-at-runtime b/Lang/Pluto/Add-a-variable-to-a-class-instance-at-runtime
deleted file mode 120000
index 9c086b6c80..0000000000
--- a/Lang/Pluto/Add-a-variable-to-a-class-instance-at-runtime
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Add-a-variable-to-a-class-instance-at-runtime/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Additive-primes b/Lang/Pluto/Additive-primes
deleted file mode 120000
index 5fa0027662..0000000000
--- a/Lang/Pluto/Additive-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Additive-primes/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Address-of-a-variable b/Lang/Pluto/Address-of-a-variable
deleted file mode 120000
index db8c9fa74c..0000000000
--- a/Lang/Pluto/Address-of-a-variable
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Address-of-a-variable/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Algebraic-data-types b/Lang/Pluto/Algebraic-data-types
deleted file mode 120000
index a63223b643..0000000000
--- a/Lang/Pluto/Algebraic-data-types
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Algebraic-data-types/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Aliquot-sequence-classifications b/Lang/Pluto/Aliquot-sequence-classifications
deleted file mode 120000
index 3d08da68d2..0000000000
--- a/Lang/Pluto/Aliquot-sequence-classifications
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Aliquot-sequence-classifications/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Almkvist-Giullera-formula-for-pi b/Lang/Pluto/Almkvist-Giullera-formula-for-pi
deleted file mode 120000
index a4dbb156c2..0000000000
--- a/Lang/Pluto/Almkvist-Giullera-formula-for-pi
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Almkvist-Giullera-formula-for-pi/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Almost-prime b/Lang/Pluto/Almost-prime
deleted file mode 120000
index 8dfdefc597..0000000000
--- a/Lang/Pluto/Almost-prime
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Almost-prime/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Amb b/Lang/Pluto/Amb
deleted file mode 120000
index 5d885d9898..0000000000
--- a/Lang/Pluto/Amb
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Amb/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Amicable-pairs b/Lang/Pluto/Amicable-pairs
deleted file mode 120000
index 8f6d71ca71..0000000000
--- a/Lang/Pluto/Amicable-pairs
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Amicable-pairs/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Anagrams b/Lang/Pluto/Anagrams
deleted file mode 120000
index ed05036541..0000000000
--- a/Lang/Pluto/Anagrams
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Anagrams/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Anagrams-Deranged-anagrams b/Lang/Pluto/Anagrams-Deranged-anagrams
deleted file mode 120000
index 15515547a0..0000000000
--- a/Lang/Pluto/Anagrams-Deranged-anagrams
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Anagrams-Deranged-anagrams/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Angle-difference-between-two-bearings b/Lang/Pluto/Angle-difference-between-two-bearings
deleted file mode 120000
index e89e19b294..0000000000
--- a/Lang/Pluto/Angle-difference-between-two-bearings
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Angle-difference-between-two-bearings/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Angles-geometric-normalization-and-conversion b/Lang/Pluto/Angles-geometric-normalization-and-conversion
deleted file mode 120000
index bf11da216a..0000000000
--- a/Lang/Pluto/Angles-geometric-normalization-and-conversion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Angles-geometric-normalization-and-conversion/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Anonymous-recursion b/Lang/Pluto/Anonymous-recursion
deleted file mode 120000
index e9e2ff5cdd..0000000000
--- a/Lang/Pluto/Anonymous-recursion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Anonymous-recursion/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Anti-primes b/Lang/Pluto/Anti-primes
deleted file mode 120000
index 62e9118e82..0000000000
--- a/Lang/Pluto/Anti-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Anti-primes/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Approximate-equality b/Lang/Pluto/Approximate-equality
deleted file mode 120000
index 65832f9c4c..0000000000
--- a/Lang/Pluto/Approximate-equality
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Approximate-equality/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Arbitrary-precision-integers-included- b/Lang/Pluto/Arbitrary-precision-integers-included-
deleted file mode 120000
index 63cf45fedf..0000000000
--- a/Lang/Pluto/Arbitrary-precision-integers-included-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arbitrary-precision-integers-included-/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Archimedean-spiral b/Lang/Pluto/Archimedean-spiral
deleted file mode 120000
index bf76191b73..0000000000
--- a/Lang/Pluto/Archimedean-spiral
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Archimedean-spiral/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Arena-storage-pool b/Lang/Pluto/Arena-storage-pool
deleted file mode 120000
index 2287439dec..0000000000
--- a/Lang/Pluto/Arena-storage-pool
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arena-storage-pool/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Arithmetic-Complex b/Lang/Pluto/Arithmetic-Complex
deleted file mode 120000
index e8437b9a01..0000000000
--- a/Lang/Pluto/Arithmetic-Complex
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-Complex/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Arithmetic-Integer b/Lang/Pluto/Arithmetic-Integer
deleted file mode 120000
index 3b77091442..0000000000
--- a/Lang/Pluto/Arithmetic-Integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-Integer/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Arithmetic-Rational b/Lang/Pluto/Arithmetic-Rational
deleted file mode 120000
index 497dafd0e0..0000000000
--- a/Lang/Pluto/Arithmetic-Rational
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-Rational/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Arithmetic-derivative b/Lang/Pluto/Arithmetic-derivative
deleted file mode 120000
index 9254d1c7e4..0000000000
--- a/Lang/Pluto/Arithmetic-derivative
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-derivative/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Arithmetic-evaluation b/Lang/Pluto/Arithmetic-evaluation
deleted file mode 120000
index 4f46626913..0000000000
--- a/Lang/Pluto/Arithmetic-evaluation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-evaluation/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Arithmetic-geometric-mean b/Lang/Pluto/Arithmetic-geometric-mean
deleted file mode 120000
index 7f7bd49c54..0000000000
--- a/Lang/Pluto/Arithmetic-geometric-mean
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-geometric-mean/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Arithmetic-geometric-mean-Calculate-Pi b/Lang/Pluto/Arithmetic-geometric-mean-Calculate-Pi
deleted file mode 120000
index f64109ba32..0000000000
--- a/Lang/Pluto/Arithmetic-geometric-mean-Calculate-Pi
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-geometric-mean-Calculate-Pi/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Arithmetic-numbers b/Lang/Pluto/Arithmetic-numbers
deleted file mode 120000
index 9d3c7548ad..0000000000
--- a/Lang/Pluto/Arithmetic-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-numbers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Array-concatenation b/Lang/Pluto/Array-concatenation
deleted file mode 120000
index b151e60e5d..0000000000
--- a/Lang/Pluto/Array-concatenation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Array-concatenation/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Arrays b/Lang/Pluto/Arrays
deleted file mode 120000
index 36aa2a73e2..0000000000
--- a/Lang/Pluto/Arrays
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arrays/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Ascending-primes b/Lang/Pluto/Ascending-primes
deleted file mode 120000
index b086dde9de..0000000000
--- a/Lang/Pluto/Ascending-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ascending-primes/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Assertions b/Lang/Pluto/Assertions
deleted file mode 120000
index 8561bd9006..0000000000
--- a/Lang/Pluto/Assertions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Assertions/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Associative-array-Creation b/Lang/Pluto/Associative-array-Creation
deleted file mode 120000
index dab36a66d3..0000000000
--- a/Lang/Pluto/Associative-array-Creation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Associative-array-Creation/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Associative-array-Iteration b/Lang/Pluto/Associative-array-Iteration
deleted file mode 120000
index 5ced29976c..0000000000
--- a/Lang/Pluto/Associative-array-Iteration
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Associative-array-Iteration/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Associative-array-Merging b/Lang/Pluto/Associative-array-Merging
deleted file mode 120000
index e8bdf6f6ca..0000000000
--- a/Lang/Pluto/Associative-array-Merging
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Associative-array-Merging/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Attractive-numbers b/Lang/Pluto/Attractive-numbers
deleted file mode 120000
index cc6d5fdf22..0000000000
--- a/Lang/Pluto/Attractive-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Attractive-numbers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Average-loop-length b/Lang/Pluto/Average-loop-length
deleted file mode 120000
index da02c11d74..0000000000
--- a/Lang/Pluto/Average-loop-length
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Average-loop-length/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Averages-Arithmetic-mean b/Lang/Pluto/Averages-Arithmetic-mean
deleted file mode 120000
index a80eb1d9ce..0000000000
--- a/Lang/Pluto/Averages-Arithmetic-mean
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Arithmetic-mean/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Averages-Mean-angle b/Lang/Pluto/Averages-Mean-angle
deleted file mode 120000
index b2c7bb37d8..0000000000
--- a/Lang/Pluto/Averages-Mean-angle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Mean-angle/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Averages-Mean-time-of-day b/Lang/Pluto/Averages-Mean-time-of-day
deleted file mode 120000
index 11b930dc65..0000000000
--- a/Lang/Pluto/Averages-Mean-time-of-day
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Mean-time-of-day/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Averages-Median b/Lang/Pluto/Averages-Median
deleted file mode 120000
index 4877cdaa55..0000000000
--- a/Lang/Pluto/Averages-Median
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Median/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Averages-Mode b/Lang/Pluto/Averages-Mode
deleted file mode 120000
index 9ba2618c12..0000000000
--- a/Lang/Pluto/Averages-Mode
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Mode/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Averages-Pythagorean-means b/Lang/Pluto/Averages-Pythagorean-means
deleted file mode 120000
index f4cb6461df..0000000000
--- a/Lang/Pluto/Averages-Pythagorean-means
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Pythagorean-means/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Averages-Root-mean-square b/Lang/Pluto/Averages-Root-mean-square
deleted file mode 120000
index 744197c17a..0000000000
--- a/Lang/Pluto/Averages-Root-mean-square
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Root-mean-square/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Averages-Simple-moving-average b/Lang/Pluto/Averages-Simple-moving-average
deleted file mode 120000
index 79f88ee858..0000000000
--- a/Lang/Pluto/Averages-Simple-moving-average
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Simple-moving-average/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Babbage-problem b/Lang/Pluto/Babbage-problem
deleted file mode 120000
index 7dd4f1e4c1..0000000000
--- a/Lang/Pluto/Babbage-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Babbage-problem/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Balanced-brackets b/Lang/Pluto/Balanced-brackets
deleted file mode 120000
index e55ebe8e48..0000000000
--- a/Lang/Pluto/Balanced-brackets
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Balanced-brackets/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Barnsley-fern b/Lang/Pluto/Barnsley-fern
deleted file mode 120000
index a90021bfee..0000000000
--- a/Lang/Pluto/Barnsley-fern
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Barnsley-fern/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Base64-decode-data b/Lang/Pluto/Base64-decode-data
deleted file mode 120000
index 9e79a215f0..0000000000
--- a/Lang/Pluto/Base64-decode-data
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Base64-decode-data/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Bell-numbers b/Lang/Pluto/Bell-numbers
deleted file mode 120000
index 12ebb36a37..0000000000
--- a/Lang/Pluto/Bell-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bell-numbers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Benfords-law b/Lang/Pluto/Benfords-law
deleted file mode 120000
index b781bccffa..0000000000
--- a/Lang/Pluto/Benfords-law
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Benfords-law/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Bernoulli-numbers b/Lang/Pluto/Bernoulli-numbers
deleted file mode 120000
index def2b8378f..0000000000
--- a/Lang/Pluto/Bernoulli-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bernoulli-numbers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Best-shuffle b/Lang/Pluto/Best-shuffle
deleted file mode 120000
index eb98710b09..0000000000
--- a/Lang/Pluto/Best-shuffle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Best-shuffle/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Bifid-cipher b/Lang/Pluto/Bifid-cipher
deleted file mode 120000
index 7fb890e12d..0000000000
--- a/Lang/Pluto/Bifid-cipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bifid-cipher/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Bin-given-limits b/Lang/Pluto/Bin-given-limits
deleted file mode 120000
index 89b9600240..0000000000
--- a/Lang/Pluto/Bin-given-limits
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bin-given-limits/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Binary-search b/Lang/Pluto/Binary-search
deleted file mode 120000
index a0b45e9e17..0000000000
--- a/Lang/Pluto/Binary-search
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Binary-search/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Binary-strings b/Lang/Pluto/Binary-strings
deleted file mode 120000
index fbf99b0505..0000000000
--- a/Lang/Pluto/Binary-strings
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Binary-strings/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Biorhythms b/Lang/Pluto/Biorhythms
deleted file mode 120000
index 22eb307022..0000000000
--- a/Lang/Pluto/Biorhythms
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Biorhythms/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Bitcoin-address-validation b/Lang/Pluto/Bitcoin-address-validation
deleted file mode 120000
index 44983f1ea0..0000000000
--- a/Lang/Pluto/Bitcoin-address-validation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bitcoin-address-validation/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Bitmap b/Lang/Pluto/Bitmap
deleted file mode 120000
index 2eae4de5c9..0000000000
--- a/Lang/Pluto/Bitmap
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bitmap/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Bitmap-Bresenhams-line-algorithm b/Lang/Pluto/Bitmap-Bresenhams-line-algorithm
deleted file mode 120000
index 648ca4156e..0000000000
--- a/Lang/Pluto/Bitmap-Bresenhams-line-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bitmap-Bresenhams-line-algorithm/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Bitmap-Midpoint-circle-algorithm b/Lang/Pluto/Bitmap-Midpoint-circle-algorithm
deleted file mode 120000
index 30e98198c1..0000000000
--- a/Lang/Pluto/Bitmap-Midpoint-circle-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bitmap-Midpoint-circle-algorithm/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Bitwise-operations b/Lang/Pluto/Bitwise-operations
deleted file mode 120000
index 7aa2755b89..0000000000
--- a/Lang/Pluto/Bitwise-operations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bitwise-operations/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Blum-integer b/Lang/Pluto/Blum-integer
deleted file mode 120000
index 29fd128c56..0000000000
--- a/Lang/Pluto/Blum-integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Blum-integer/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Box-the-compass b/Lang/Pluto/Box-the-compass
deleted file mode 120000
index 06e763904d..0000000000
--- a/Lang/Pluto/Box-the-compass
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Box-the-compass/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Brazilian-numbers b/Lang/Pluto/Brazilian-numbers
deleted file mode 120000
index 2847bc95cf..0000000000
--- a/Lang/Pluto/Brazilian-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Brazilian-numbers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Break-OO-privacy b/Lang/Pluto/Break-OO-privacy
deleted file mode 120000
index 00a12e0cb3..0000000000
--- a/Lang/Pluto/Break-OO-privacy
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Break-OO-privacy/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Brilliant-numbers b/Lang/Pluto/Brilliant-numbers
deleted file mode 120000
index 3c956fa37f..0000000000
--- a/Lang/Pluto/Brilliant-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Brilliant-numbers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Burrows-Wheeler-transform b/Lang/Pluto/Burrows-Wheeler-transform
deleted file mode 120000
index d346f62601..0000000000
--- a/Lang/Pluto/Burrows-Wheeler-transform
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Burrows-Wheeler-transform/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/CRC-32 b/Lang/Pluto/CRC-32
deleted file mode 120000
index a2f9755cc8..0000000000
--- a/Lang/Pluto/CRC-32
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/CRC-32/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/CUSIP b/Lang/Pluto/CUSIP
deleted file mode 120000
index ffc1be79c9..0000000000
--- a/Lang/Pluto/CUSIP
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/CUSIP/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Caesar-cipher b/Lang/Pluto/Caesar-cipher
deleted file mode 120000
index 92165c560f..0000000000
--- a/Lang/Pluto/Caesar-cipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Caesar-cipher/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Calculating-the-value-of-e b/Lang/Pluto/Calculating-the-value-of-e
deleted file mode 120000
index c85ceb9feb..0000000000
--- a/Lang/Pluto/Calculating-the-value-of-e
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Calculating-the-value-of-e/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Calkin-Wilf-sequence b/Lang/Pluto/Calkin-Wilf-sequence
deleted file mode 120000
index e7c08bf16e..0000000000
--- a/Lang/Pluto/Calkin-Wilf-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Calkin-Wilf-sequence/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Call-a-foreign-language-function b/Lang/Pluto/Call-a-foreign-language-function
deleted file mode 120000
index f071bb1596..0000000000
--- a/Lang/Pluto/Call-a-foreign-language-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Call-a-foreign-language-function/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Call-a-function-in-a-shared-library b/Lang/Pluto/Call-a-function-in-a-shared-library
deleted file mode 120000
index fb03a37240..0000000000
--- a/Lang/Pluto/Call-a-function-in-a-shared-library
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Call-a-function-in-a-shared-library/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Call-an-object-method b/Lang/Pluto/Call-an-object-method
deleted file mode 120000
index 9b34265855..0000000000
--- a/Lang/Pluto/Call-an-object-method
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Call-an-object-method/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Camel-case-and-snake-case b/Lang/Pluto/Camel-case-and-snake-case
deleted file mode 120000
index 63e934e944..0000000000
--- a/Lang/Pluto/Camel-case-and-snake-case
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Camel-case-and-snake-case/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Canonicalize-CIDR b/Lang/Pluto/Canonicalize-CIDR
deleted file mode 120000
index 47427dcbdb..0000000000
--- a/Lang/Pluto/Canonicalize-CIDR
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Canonicalize-CIDR/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Cantor-set b/Lang/Pluto/Cantor-set
deleted file mode 120000
index e41e42a9fe..0000000000
--- a/Lang/Pluto/Cantor-set
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cantor-set/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Carmichael-3-strong-pseudoprimes b/Lang/Pluto/Carmichael-3-strong-pseudoprimes
deleted file mode 120000
index 15460b52f8..0000000000
--- a/Lang/Pluto/Carmichael-3-strong-pseudoprimes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Carmichael-3-strong-pseudoprimes/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Case-sensitivity-of-identifiers b/Lang/Pluto/Case-sensitivity-of-identifiers
deleted file mode 120000
index e37b951419..0000000000
--- a/Lang/Pluto/Case-sensitivity-of-identifiers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Case-sensitivity-of-identifiers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Casting-out-nines b/Lang/Pluto/Casting-out-nines
deleted file mode 120000
index f9d2b5090f..0000000000
--- a/Lang/Pluto/Casting-out-nines
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Casting-out-nines/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Catalan-numbers b/Lang/Pluto/Catalan-numbers
deleted file mode 120000
index 13ef84ea7e..0000000000
--- a/Lang/Pluto/Catalan-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Catalan-numbers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Catalan-numbers-Pascals-triangle b/Lang/Pluto/Catalan-numbers-Pascals-triangle
deleted file mode 120000
index ba6ed52865..0000000000
--- a/Lang/Pluto/Catalan-numbers-Pascals-triangle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Catalan-numbers-Pascals-triangle/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Catamorphism b/Lang/Pluto/Catamorphism
deleted file mode 120000
index 5d492b9b1c..0000000000
--- a/Lang/Pluto/Catamorphism
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Catamorphism/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Chaocipher b/Lang/Pluto/Chaocipher
deleted file mode 120000
index a4b28d7a7d..0000000000
--- a/Lang/Pluto/Chaocipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Chaocipher/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Check-input-device-is-a-terminal b/Lang/Pluto/Check-input-device-is-a-terminal
deleted file mode 120000
index 3b90efa3c8..0000000000
--- a/Lang/Pluto/Check-input-device-is-a-terminal
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Check-input-device-is-a-terminal/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Check-output-device-is-a-terminal b/Lang/Pluto/Check-output-device-is-a-terminal
deleted file mode 120000
index fc1799c10c..0000000000
--- a/Lang/Pluto/Check-output-device-is-a-terminal
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Check-output-device-is-a-terminal/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Check-that-file-exists b/Lang/Pluto/Check-that-file-exists
deleted file mode 120000
index 4438ce2610..0000000000
--- a/Lang/Pluto/Check-that-file-exists
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Check-that-file-exists/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Chernicks-Carmichael-numbers b/Lang/Pluto/Chernicks-Carmichael-numbers
deleted file mode 120000
index 027fba1c47..0000000000
--- a/Lang/Pluto/Chernicks-Carmichael-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Chernicks-Carmichael-numbers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Cheryls-birthday b/Lang/Pluto/Cheryls-birthday
deleted file mode 120000
index 30af57e589..0000000000
--- a/Lang/Pluto/Cheryls-birthday
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cheryls-birthday/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Chinese-remainder-theorem b/Lang/Pluto/Chinese-remainder-theorem
deleted file mode 120000
index 9b0d96ce42..0000000000
--- a/Lang/Pluto/Chinese-remainder-theorem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Chinese-remainder-theorem/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Chinese-zodiac b/Lang/Pluto/Chinese-zodiac
deleted file mode 120000
index 9268137a2b..0000000000
--- a/Lang/Pluto/Chinese-zodiac
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Chinese-zodiac/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Cholesky-decomposition b/Lang/Pluto/Cholesky-decomposition
deleted file mode 120000
index 87b60466d9..0000000000
--- a/Lang/Pluto/Cholesky-decomposition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cholesky-decomposition/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Chowla-numbers b/Lang/Pluto/Chowla-numbers
deleted file mode 120000
index b10ca6f6d9..0000000000
--- a/Lang/Pluto/Chowla-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Chowla-numbers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Church-numerals b/Lang/Pluto/Church-numerals
deleted file mode 120000
index 1d195312b9..0000000000
--- a/Lang/Pluto/Church-numerals
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Church-numerals/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Circles-of-given-radius-through-two-points b/Lang/Pluto/Circles-of-given-radius-through-two-points
deleted file mode 120000
index 95277c7cbf..0000000000
--- a/Lang/Pluto/Circles-of-given-radius-through-two-points
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Circles-of-given-radius-through-two-points/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Circular-primes b/Lang/Pluto/Circular-primes
deleted file mode 120000
index 03acc9542a..0000000000
--- a/Lang/Pluto/Circular-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Circular-primes/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Classes b/Lang/Pluto/Classes
deleted file mode 120000
index 26462a13cb..0000000000
--- a/Lang/Pluto/Classes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Classes/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Closest-pair-problem b/Lang/Pluto/Closest-pair-problem
deleted file mode 120000
index 37a54ff46b..0000000000
--- a/Lang/Pluto/Closest-pair-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Closest-pair-problem/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Closures-Value-capture b/Lang/Pluto/Closures-Value-capture
deleted file mode 120000
index 86d660ee42..0000000000
--- a/Lang/Pluto/Closures-Value-capture
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Closures-Value-capture/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Collections b/Lang/Pluto/Collections
deleted file mode 120000
index 82a2dd2b4f..0000000000
--- a/Lang/Pluto/Collections
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Collections/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Color-wheel b/Lang/Pluto/Color-wheel
deleted file mode 120000
index 1f743faae0..0000000000
--- a/Lang/Pluto/Color-wheel
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Color-wheel/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Colorful-numbers b/Lang/Pluto/Colorful-numbers
deleted file mode 120000
index 6fd26697f2..0000000000
--- a/Lang/Pluto/Colorful-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Colorful-numbers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Combinations b/Lang/Pluto/Combinations
deleted file mode 120000
index 1554032a2c..0000000000
--- a/Lang/Pluto/Combinations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Combinations/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Combinations-with-repetitions b/Lang/Pluto/Combinations-with-repetitions
deleted file mode 120000
index 27271a521e..0000000000
--- a/Lang/Pluto/Combinations-with-repetitions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Combinations-with-repetitions/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Comma-quibbling b/Lang/Pluto/Comma-quibbling
deleted file mode 120000
index d45769fa57..0000000000
--- a/Lang/Pluto/Comma-quibbling
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Comma-quibbling/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Command-line-arguments b/Lang/Pluto/Command-line-arguments
deleted file mode 120000
index 0f5f02829e..0000000000
--- a/Lang/Pluto/Command-line-arguments
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Command-line-arguments/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Commatizing-numbers b/Lang/Pluto/Commatizing-numbers
deleted file mode 120000
index 703f59f582..0000000000
--- a/Lang/Pluto/Commatizing-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Commatizing-numbers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Comments b/Lang/Pluto/Comments
deleted file mode 120000
index 8d1e636123..0000000000
--- a/Lang/Pluto/Comments
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Comments/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Compare-a-list-of-strings b/Lang/Pluto/Compare-a-list-of-strings
deleted file mode 120000
index 6f0ca59023..0000000000
--- a/Lang/Pluto/Compare-a-list-of-strings
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compare-a-list-of-strings/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Compare-length-of-two-strings b/Lang/Pluto/Compare-length-of-two-strings
deleted file mode 120000
index a17ca1cb1f..0000000000
--- a/Lang/Pluto/Compare-length-of-two-strings
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compare-length-of-two-strings/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Compile-time-calculation b/Lang/Pluto/Compile-time-calculation
deleted file mode 120000
index f08af0ba8e..0000000000
--- a/Lang/Pluto/Compile-time-calculation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compile-time-calculation/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Compiler-lexical-analyzer b/Lang/Pluto/Compiler-lexical-analyzer
deleted file mode 120000
index 0e5b3d7d41..0000000000
--- a/Lang/Pluto/Compiler-lexical-analyzer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compiler-lexical-analyzer/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Compound-data-type b/Lang/Pluto/Compound-data-type
deleted file mode 120000
index d8d7d92b91..0000000000
--- a/Lang/Pluto/Compound-data-type
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compound-data-type/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Concurrent-computing b/Lang/Pluto/Concurrent-computing
deleted file mode 120000
index edc4e372c5..0000000000
--- a/Lang/Pluto/Concurrent-computing
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Concurrent-computing/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Conditional-structures b/Lang/Pluto/Conditional-structures
deleted file mode 120000
index 480797a688..0000000000
--- a/Lang/Pluto/Conditional-structures
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Conditional-structures/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Conjugate-transpose b/Lang/Pluto/Conjugate-transpose
deleted file mode 120000
index dfb7444c0e..0000000000
--- a/Lang/Pluto/Conjugate-transpose
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Conjugate-transpose/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Consecutive-primes-with-ascending-or-descending-differences b/Lang/Pluto/Consecutive-primes-with-ascending-or-descending-differences
deleted file mode 120000
index 855ac67f9b..0000000000
--- a/Lang/Pluto/Consecutive-primes-with-ascending-or-descending-differences
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Consecutive-primes-with-ascending-or-descending-differences/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Constrained-genericity b/Lang/Pluto/Constrained-genericity
deleted file mode 120000
index 27aef58dac..0000000000
--- a/Lang/Pluto/Constrained-genericity
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Constrained-genericity/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Continued-fraction b/Lang/Pluto/Continued-fraction
deleted file mode 120000
index 413f477143..0000000000
--- a/Lang/Pluto/Continued-fraction
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Continued-fraction/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Continued-fraction-Arithmetic-Construct-from-rational-number b/Lang/Pluto/Continued-fraction-Arithmetic-Construct-from-rational-number
deleted file mode 120000
index 4207df96c4..0000000000
--- a/Lang/Pluto/Continued-fraction-Arithmetic-Construct-from-rational-number
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Continued-fraction-Arithmetic-Construct-from-rational-number/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Convert-decimal-number-to-rational b/Lang/Pluto/Convert-decimal-number-to-rational
deleted file mode 120000
index 67bc18205b..0000000000
--- a/Lang/Pluto/Convert-decimal-number-to-rational
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Convert-decimal-number-to-rational/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Convert-seconds-to-compound-duration b/Lang/Pluto/Convert-seconds-to-compound-duration
deleted file mode 120000
index 694dec3e9d..0000000000
--- a/Lang/Pluto/Convert-seconds-to-compound-duration
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Convert-seconds-to-compound-duration/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Count-in-factors b/Lang/Pluto/Count-in-factors
deleted file mode 120000
index 875d6814c3..0000000000
--- a/Lang/Pluto/Count-in-factors
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Count-in-factors/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Count-in-octal b/Lang/Pluto/Count-in-octal
deleted file mode 120000
index c5624def8e..0000000000
--- a/Lang/Pluto/Count-in-octal
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Count-in-octal/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Count-occurrences-of-a-substring b/Lang/Pluto/Count-occurrences-of-a-substring
deleted file mode 120000
index 282d7ede4a..0000000000
--- a/Lang/Pluto/Count-occurrences-of-a-substring
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Count-occurrences-of-a-substring/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Count-the-coins b/Lang/Pluto/Count-the-coins
deleted file mode 120000
index 7996299523..0000000000
--- a/Lang/Pluto/Count-the-coins
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Count-the-coins/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Cramers-rule b/Lang/Pluto/Cramers-rule
deleted file mode 120000
index 371e1d9db7..0000000000
--- a/Lang/Pluto/Cramers-rule
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cramers-rule/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Create-a-file b/Lang/Pluto/Create-a-file
deleted file mode 120000
index 1e22b0b1e3..0000000000
--- a/Lang/Pluto/Create-a-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Create-a-file/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Create-a-two-dimensional-array-at-runtime b/Lang/Pluto/Create-a-two-dimensional-array-at-runtime
deleted file mode 120000
index 4da351e86e..0000000000
--- a/Lang/Pluto/Create-a-two-dimensional-array-at-runtime
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Create-a-two-dimensional-array-at-runtime/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Cuban-primes b/Lang/Pluto/Cuban-primes
deleted file mode 120000
index 6b91d15127..0000000000
--- a/Lang/Pluto/Cuban-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cuban-primes/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Cullen-and-Woodall-numbers b/Lang/Pluto/Cullen-and-Woodall-numbers
deleted file mode 120000
index 663a789226..0000000000
--- a/Lang/Pluto/Cullen-and-Woodall-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cullen-and-Woodall-numbers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Cumulative-standard-deviation b/Lang/Pluto/Cumulative-standard-deviation
deleted file mode 120000
index bfd250d57c..0000000000
--- a/Lang/Pluto/Cumulative-standard-deviation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cumulative-standard-deviation/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Currency b/Lang/Pluto/Currency
deleted file mode 120000
index 022bd123d4..0000000000
--- a/Lang/Pluto/Currency
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Currency/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Currying b/Lang/Pluto/Currying
deleted file mode 120000
index 98e5282551..0000000000
--- a/Lang/Pluto/Currying
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Currying/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Curzon-numbers b/Lang/Pluto/Curzon-numbers
deleted file mode 120000
index 19e831cce8..0000000000
--- a/Lang/Pluto/Curzon-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Curzon-numbers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Cut-a-rectangle b/Lang/Pluto/Cut-a-rectangle
deleted file mode 120000
index 503ba83f0f..0000000000
--- a/Lang/Pluto/Cut-a-rectangle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cut-a-rectangle/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Cyclops-numbers b/Lang/Pluto/Cyclops-numbers
deleted file mode 120000
index c731e7f9d2..0000000000
--- a/Lang/Pluto/Cyclops-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cyclops-numbers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/DNS-query b/Lang/Pluto/DNS-query
deleted file mode 120000
index abafcfbe46..0000000000
--- a/Lang/Pluto/DNS-query
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/DNS-query/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Damm-algorithm b/Lang/Pluto/Damm-algorithm
deleted file mode 120000
index 4db0c540c5..0000000000
--- a/Lang/Pluto/Damm-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Damm-algorithm/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Date-format b/Lang/Pluto/Date-format
deleted file mode 120000
index e6307f8af0..0000000000
--- a/Lang/Pluto/Date-format
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Date-format/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Date-manipulation b/Lang/Pluto/Date-manipulation
deleted file mode 120000
index 541e3b8538..0000000000
--- a/Lang/Pluto/Date-manipulation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Date-manipulation/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Day-of-the-week b/Lang/Pluto/Day-of-the-week
deleted file mode 120000
index c857bee861..0000000000
--- a/Lang/Pluto/Day-of-the-week
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Day-of-the-week/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/De-Bruijn-sequences b/Lang/Pluto/De-Bruijn-sequences
deleted file mode 120000
index 7208c6eb97..0000000000
--- a/Lang/Pluto/De-Bruijn-sequences
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/De-Bruijn-sequences/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Deceptive-numbers b/Lang/Pluto/Deceptive-numbers
deleted file mode 120000
index f13a36d2f4..0000000000
--- a/Lang/Pluto/Deceptive-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Deceptive-numbers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Deepcopy b/Lang/Pluto/Deepcopy
deleted file mode 120000
index 066df45f7c..0000000000
--- a/Lang/Pluto/Deepcopy
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Deepcopy/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Delegates b/Lang/Pluto/Delegates
deleted file mode 120000
index 52103da749..0000000000
--- a/Lang/Pluto/Delegates
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Delegates/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Delete-a-file b/Lang/Pluto/Delete-a-file
deleted file mode 120000
index b17ce9999b..0000000000
--- a/Lang/Pluto/Delete-a-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Delete-a-file/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Demings-funnel b/Lang/Pluto/Demings-funnel
deleted file mode 120000
index 56a8ba2ece..0000000000
--- a/Lang/Pluto/Demings-funnel
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Demings-funnel/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Department-numbers b/Lang/Pluto/Department-numbers
deleted file mode 120000
index 1666a30ed8..0000000000
--- a/Lang/Pluto/Department-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Department-numbers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Descending-primes b/Lang/Pluto/Descending-primes
deleted file mode 120000
index c35e1667b5..0000000000
--- a/Lang/Pluto/Descending-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Descending-primes/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Detect-division-by-zero b/Lang/Pluto/Detect-division-by-zero
deleted file mode 120000
index 36d9e93987..0000000000
--- a/Lang/Pluto/Detect-division-by-zero
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Detect-division-by-zero/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Determinant-and-permanent b/Lang/Pluto/Determinant-and-permanent
deleted file mode 120000
index e1b29bc12a..0000000000
--- a/Lang/Pluto/Determinant-and-permanent
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determinant-and-permanent/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Determine-if-a-string-has-all-the-same-characters b/Lang/Pluto/Determine-if-a-string-has-all-the-same-characters
deleted file mode 120000
index 030ea85992..0000000000
--- a/Lang/Pluto/Determine-if-a-string-has-all-the-same-characters
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-has-all-the-same-characters/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Determine-if-a-string-has-all-unique-characters b/Lang/Pluto/Determine-if-a-string-has-all-unique-characters
deleted file mode 120000
index 79e7e032c2..0000000000
--- a/Lang/Pluto/Determine-if-a-string-has-all-unique-characters
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-has-all-unique-characters/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Determine-if-a-string-is-collapsible b/Lang/Pluto/Determine-if-a-string-is-collapsible
deleted file mode 120000
index dac3838017..0000000000
--- a/Lang/Pluto/Determine-if-a-string-is-collapsible
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-is-collapsible/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Determine-if-a-string-is-numeric b/Lang/Pluto/Determine-if-a-string-is-numeric
deleted file mode 120000
index f3177e5d6e..0000000000
--- a/Lang/Pluto/Determine-if-a-string-is-numeric
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-is-numeric/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Determine-if-a-string-is-squeezable b/Lang/Pluto/Determine-if-a-string-is-squeezable
deleted file mode 120000
index 17dbb0267a..0000000000
--- a/Lang/Pluto/Determine-if-a-string-is-squeezable
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-is-squeezable/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Determine-if-two-triangles-overlap b/Lang/Pluto/Determine-if-two-triangles-overlap
deleted file mode 120000
index d35e94d3a0..0000000000
--- a/Lang/Pluto/Determine-if-two-triangles-overlap
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-two-triangles-overlap/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Determine-sentence-type b/Lang/Pluto/Determine-sentence-type
deleted file mode 120000
index d97a791028..0000000000
--- a/Lang/Pluto/Determine-sentence-type
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-sentence-type/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Dice-game-probabilities b/Lang/Pluto/Dice-game-probabilities
deleted file mode 120000
index b6d7ab05ea..0000000000
--- a/Lang/Pluto/Dice-game-probabilities
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dice-game-probabilities/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Digital-root b/Lang/Pluto/Digital-root
deleted file mode 120000
index fb194db4fd..0000000000
--- a/Lang/Pluto/Digital-root
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Digital-root/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Digital-root-Multiplicative-digital-root b/Lang/Pluto/Digital-root-Multiplicative-digital-root
deleted file mode 120000
index 27b8582991..0000000000
--- a/Lang/Pluto/Digital-root-Multiplicative-digital-root
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Digital-root-Multiplicative-digital-root/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Disarium-numbers b/Lang/Pluto/Disarium-numbers
deleted file mode 120000
index fd659f8581..0000000000
--- a/Lang/Pluto/Disarium-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Disarium-numbers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Discordian-date b/Lang/Pluto/Discordian-date
deleted file mode 120000
index eef2a0d868..0000000000
--- a/Lang/Pluto/Discordian-date
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Discordian-date/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Display-a-linear-combination b/Lang/Pluto/Display-a-linear-combination
deleted file mode 120000
index b9e618e087..0000000000
--- a/Lang/Pluto/Display-a-linear-combination
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Display-a-linear-combination/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Distribution-of-0-digits-in-factorial-series b/Lang/Pluto/Distribution-of-0-digits-in-factorial-series
deleted file mode 120000
index a06ffa876b..0000000000
--- a/Lang/Pluto/Distribution-of-0-digits-in-factorial-series
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Distribution-of-0-digits-in-factorial-series/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Diversity-prediction-theorem b/Lang/Pluto/Diversity-prediction-theorem
deleted file mode 120000
index 1855763e0b..0000000000
--- a/Lang/Pluto/Diversity-prediction-theorem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Diversity-prediction-theorem/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Doomsday-rule b/Lang/Pluto/Doomsday-rule
deleted file mode 120000
index 0bae1c428f..0000000000
--- a/Lang/Pluto/Doomsday-rule
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Doomsday-rule/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Doubly-linked-list-Definition b/Lang/Pluto/Doubly-linked-list-Definition
deleted file mode 120000
index 2c673acc7c..0000000000
--- a/Lang/Pluto/Doubly-linked-list-Definition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Doubly-linked-list-Definition/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Doubly-linked-list-Element-definition b/Lang/Pluto/Doubly-linked-list-Element-definition
deleted file mode 120000
index 7b2f1839e3..0000000000
--- a/Lang/Pluto/Doubly-linked-list-Element-definition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Doubly-linked-list-Element-definition/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Doubly-linked-list-Element-insertion b/Lang/Pluto/Doubly-linked-list-Element-insertion
deleted file mode 120000
index 566d3ce443..0000000000
--- a/Lang/Pluto/Doubly-linked-list-Element-insertion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Doubly-linked-list-Element-insertion/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Doubly-linked-list-Traversal b/Lang/Pluto/Doubly-linked-list-Traversal
deleted file mode 120000
index 9a9262d67b..0000000000
--- a/Lang/Pluto/Doubly-linked-list-Traversal
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Doubly-linked-list-Traversal/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Dragon-curve b/Lang/Pluto/Dragon-curve
deleted file mode 120000
index f1e72e5ef1..0000000000
--- a/Lang/Pluto/Dragon-curve
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dragon-curve/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Draw-a-sphere b/Lang/Pluto/Draw-a-sphere
deleted file mode 120000
index 639e598bda..0000000000
--- a/Lang/Pluto/Draw-a-sphere
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Draw-a-sphere/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Dutch-national-flag-problem b/Lang/Pluto/Dutch-national-flag-problem
deleted file mode 120000
index 4ca6eb0344..0000000000
--- a/Lang/Pluto/Dutch-national-flag-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dutch-national-flag-problem/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Dynamic-variable-names b/Lang/Pluto/Dynamic-variable-names
deleted file mode 120000
index 9f84b3a575..0000000000
--- a/Lang/Pluto/Dynamic-variable-names
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dynamic-variable-names/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/EKG-sequence-convergence b/Lang/Pluto/EKG-sequence-convergence
deleted file mode 120000
index 5e7a87aa27..0000000000
--- a/Lang/Pluto/EKG-sequence-convergence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/EKG-sequence-convergence/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Earliest-difference-between-prime-gaps b/Lang/Pluto/Earliest-difference-between-prime-gaps
deleted file mode 120000
index 7c35dd843e..0000000000
--- a/Lang/Pluto/Earliest-difference-between-prime-gaps
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Earliest-difference-between-prime-gaps/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Eban-numbers b/Lang/Pluto/Eban-numbers
deleted file mode 120000
index 3c27b7fc5e..0000000000
--- a/Lang/Pluto/Eban-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Eban-numbers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Egyptian-division b/Lang/Pluto/Egyptian-division
deleted file mode 120000
index 1935b9a4b4..0000000000
--- a/Lang/Pluto/Egyptian-division
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Egyptian-division/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Element-wise-operations b/Lang/Pluto/Element-wise-operations
deleted file mode 120000
index a809ac3319..0000000000
--- a/Lang/Pluto/Element-wise-operations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Element-wise-operations/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Elementary-cellular-automaton-Random-number-generator b/Lang/Pluto/Elementary-cellular-automaton-Random-number-generator
deleted file mode 120000
index c9e4dd2c5e..0000000000
--- a/Lang/Pluto/Elementary-cellular-automaton-Random-number-generator
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Elementary-cellular-automaton-Random-number-generator/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Elliptic-curve-arithmetic b/Lang/Pluto/Elliptic-curve-arithmetic
deleted file mode 120000
index 01ab3acc14..0000000000
--- a/Lang/Pluto/Elliptic-curve-arithmetic
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Elliptic-curve-arithmetic/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Emirp-primes b/Lang/Pluto/Emirp-primes
deleted file mode 120000
index 70bc487ce4..0000000000
--- a/Lang/Pluto/Emirp-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Emirp-primes/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Entropy b/Lang/Pluto/Entropy
deleted file mode 120000
index ad4816da25..0000000000
--- a/Lang/Pluto/Entropy
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Entropy/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Entropy-Narcissist b/Lang/Pluto/Entropy-Narcissist
deleted file mode 120000
index b44bd0dceb..0000000000
--- a/Lang/Pluto/Entropy-Narcissist
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Entropy-Narcissist/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Enumerations b/Lang/Pluto/Enumerations
deleted file mode 120000
index f1e25dcea7..0000000000
--- a/Lang/Pluto/Enumerations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Enumerations/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Environment-variables b/Lang/Pluto/Environment-variables
deleted file mode 120000
index 544499e35f..0000000000
--- a/Lang/Pluto/Environment-variables
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Environment-variables/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Equal-prime-and-composite-sums b/Lang/Pluto/Equal-prime-and-composite-sums
deleted file mode 120000
index 5924d0c24d..0000000000
--- a/Lang/Pluto/Equal-prime-and-composite-sums
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Equal-prime-and-composite-sums/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Equilibrium-index b/Lang/Pluto/Equilibrium-index
deleted file mode 120000
index d670c800de..0000000000
--- a/Lang/Pluto/Equilibrium-index
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Equilibrium-index/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Erd-s-Selfridge-categorization-of-primes b/Lang/Pluto/Erd-s-Selfridge-categorization-of-primes
deleted file mode 120000
index ee9715de69..0000000000
--- a/Lang/Pluto/Erd-s-Selfridge-categorization-of-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Erd-s-Selfridge-categorization-of-primes/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Esthetic-numbers b/Lang/Pluto/Esthetic-numbers
deleted file mode 120000
index 5b009a94ca..0000000000
--- a/Lang/Pluto/Esthetic-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Esthetic-numbers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Ethiopian-multiplication b/Lang/Pluto/Ethiopian-multiplication
deleted file mode 120000
index b71d5e1260..0000000000
--- a/Lang/Pluto/Ethiopian-multiplication
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ethiopian-multiplication/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Euclid-Mullin-sequence b/Lang/Pluto/Euclid-Mullin-sequence
deleted file mode 120000
index 4b920b7289..0000000000
--- a/Lang/Pluto/Euclid-Mullin-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Euclid-Mullin-sequence/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Euler-method b/Lang/Pluto/Euler-method
deleted file mode 120000
index b7dbfe93a0..0000000000
--- a/Lang/Pluto/Euler-method
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Euler-method/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Eulers-constant-0.5772... b/Lang/Pluto/Eulers-constant-0.5772...
deleted file mode 120000
index 43d30a3576..0000000000
--- a/Lang/Pluto/Eulers-constant-0.5772...
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Eulers-constant-0.5772.../Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Eulers-identity b/Lang/Pluto/Eulers-identity
deleted file mode 120000
index 97a4ba8ed8..0000000000
--- a/Lang/Pluto/Eulers-identity
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Eulers-identity/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Eulers-sum-of-powers-conjecture b/Lang/Pluto/Eulers-sum-of-powers-conjecture
deleted file mode 120000
index d14dd7e926..0000000000
--- a/Lang/Pluto/Eulers-sum-of-powers-conjecture
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Eulers-sum-of-powers-conjecture/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Evaluate-binomial-coefficients b/Lang/Pluto/Evaluate-binomial-coefficients
deleted file mode 120000
index 00328c39e4..0000000000
--- a/Lang/Pluto/Evaluate-binomial-coefficients
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Evaluate-binomial-coefficients/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Even-or-odd b/Lang/Pluto/Even-or-odd
deleted file mode 120000
index fc5cc6a785..0000000000
--- a/Lang/Pluto/Even-or-odd
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Even-or-odd/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Exceptions b/Lang/Pluto/Exceptions
deleted file mode 120000
index d201ead5a3..0000000000
--- a/Lang/Pluto/Exceptions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Exceptions/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Exceptions-Catch-an-exception-thrown-in-a-nested-call b/Lang/Pluto/Exceptions-Catch-an-exception-thrown-in-a-nested-call
deleted file mode 120000
index eeff87c8ee..0000000000
--- a/Lang/Pluto/Exceptions-Catch-an-exception-thrown-in-a-nested-call
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Exceptions-Catch-an-exception-thrown-in-a-nested-call/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Execute-Brain- b/Lang/Pluto/Execute-Brain-
deleted file mode 120000
index 19151dc329..0000000000
--- a/Lang/Pluto/Execute-Brain-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Execute-Brain-/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Execute-Computer-Zero b/Lang/Pluto/Execute-Computer-Zero
deleted file mode 120000
index 23a9487cf2..0000000000
--- a/Lang/Pluto/Execute-Computer-Zero
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Execute-Computer-Zero/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Execute-a-system-command b/Lang/Pluto/Execute-a-system-command
deleted file mode 120000
index 005fc83a4b..0000000000
--- a/Lang/Pluto/Execute-a-system-command
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Execute-a-system-command/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Exponentiation-operator b/Lang/Pluto/Exponentiation-operator
deleted file mode 120000
index ebdd988197..0000000000
--- a/Lang/Pluto/Exponentiation-operator
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Exponentiation-operator/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Exponentiation-order b/Lang/Pluto/Exponentiation-order
deleted file mode 120000
index 9327e0a3aa..0000000000
--- a/Lang/Pluto/Exponentiation-order
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Exponentiation-order/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Exponentiation-with-infix-operators-in-or-operating-on-the-base b/Lang/Pluto/Exponentiation-with-infix-operators-in-or-operating-on-the-base
deleted file mode 120000
index 3b14bba6bd..0000000000
--- a/Lang/Pluto/Exponentiation-with-infix-operators-in-or-operating-on-the-base
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Exponentiation-with-infix-operators-in-or-operating-on-the-base/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Extensible-prime-generator b/Lang/Pluto/Extensible-prime-generator
deleted file mode 120000
index e39589d864..0000000000
--- a/Lang/Pluto/Extensible-prime-generator
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Extensible-prime-generator/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Extreme-floating-point-values b/Lang/Pluto/Extreme-floating-point-values
deleted file mode 120000
index f7dff2ba0b..0000000000
--- a/Lang/Pluto/Extreme-floating-point-values
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Extreme-floating-point-values/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Factorial b/Lang/Pluto/Factorial
deleted file mode 120000
index 26b76cb13d..0000000000
--- a/Lang/Pluto/Factorial
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factorial/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Factorial-primes b/Lang/Pluto/Factorial-primes
deleted file mode 120000
index b57eac84ac..0000000000
--- a/Lang/Pluto/Factorial-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factorial-primes/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Factorions b/Lang/Pluto/Factorions
deleted file mode 120000
index 0d6fdce25f..0000000000
--- a/Lang/Pluto/Factorions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factorions/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Factors-of-a-Mersenne-number b/Lang/Pluto/Factors-of-a-Mersenne-number
deleted file mode 120000
index d60ce6e99f..0000000000
--- a/Lang/Pluto/Factors-of-a-Mersenne-number
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factors-of-a-Mersenne-number/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Factors-of-an-integer b/Lang/Pluto/Factors-of-an-integer
deleted file mode 120000
index cc13f27676..0000000000
--- a/Lang/Pluto/Factors-of-an-integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factors-of-an-integer/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Fairshare-between-two-and-more b/Lang/Pluto/Fairshare-between-two-and-more
deleted file mode 120000
index bfe6b9462c..0000000000
--- a/Lang/Pluto/Fairshare-between-two-and-more
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fairshare-between-two-and-more/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Farey-sequence b/Lang/Pluto/Farey-sequence
deleted file mode 120000
index d29c19b41e..0000000000
--- a/Lang/Pluto/Farey-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Farey-sequence/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Fast-Fourier-transform b/Lang/Pluto/Fast-Fourier-transform
deleted file mode 120000
index d83789d068..0000000000
--- a/Lang/Pluto/Fast-Fourier-transform
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fast-Fourier-transform/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Feigenbaum-constant-calculation b/Lang/Pluto/Feigenbaum-constant-calculation
deleted file mode 120000
index 256bf8cb19..0000000000
--- a/Lang/Pluto/Feigenbaum-constant-calculation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Feigenbaum-constant-calculation/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Fermat-numbers b/Lang/Pluto/Fermat-numbers
deleted file mode 120000
index 45d4d630d7..0000000000
--- a/Lang/Pluto/Fermat-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fermat-numbers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Fibonacci-n-step-number-sequences b/Lang/Pluto/Fibonacci-n-step-number-sequences
deleted file mode 120000
index 82a6f3ddc3..0000000000
--- a/Lang/Pluto/Fibonacci-n-step-number-sequences
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fibonacci-n-step-number-sequences/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Fibonacci-sequence b/Lang/Pluto/Fibonacci-sequence
deleted file mode 120000
index efff8e1eb6..0000000000
--- a/Lang/Pluto/Fibonacci-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fibonacci-sequence/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Fibonacci-word b/Lang/Pluto/Fibonacci-word
deleted file mode 120000
index cbcb68d78f..0000000000
--- a/Lang/Pluto/Fibonacci-word
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fibonacci-word/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/File-extension-is-in-extensions-list b/Lang/Pluto/File-extension-is-in-extensions-list
deleted file mode 120000
index 7414b8a00c..0000000000
--- a/Lang/Pluto/File-extension-is-in-extensions-list
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/File-extension-is-in-extensions-list/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/File-modification-time b/Lang/Pluto/File-modification-time
deleted file mode 120000
index b0430abc54..0000000000
--- a/Lang/Pluto/File-modification-time
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/File-modification-time/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/File-size b/Lang/Pluto/File-size
deleted file mode 120000
index 998a7a784d..0000000000
--- a/Lang/Pluto/File-size
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/File-size/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Filter b/Lang/Pluto/Filter
deleted file mode 120000
index 98b0321ee6..0000000000
--- a/Lang/Pluto/Filter
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Filter/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Find-if-a-point-is-within-a-triangle b/Lang/Pluto/Find-if-a-point-is-within-a-triangle
deleted file mode 120000
index 2f4b95698d..0000000000
--- a/Lang/Pluto/Find-if-a-point-is-within-a-triangle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Find-if-a-point-is-within-a-triangle/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Find-the-last-Sunday-of-each-month b/Lang/Pluto/Find-the-last-Sunday-of-each-month
deleted file mode 120000
index dbefdf7ab1..0000000000
--- a/Lang/Pluto/Find-the-last-Sunday-of-each-month
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Find-the-last-Sunday-of-each-month/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/First-class-functions b/Lang/Pluto/First-class-functions
deleted file mode 120000
index 0fe40c3eac..0000000000
--- a/Lang/Pluto/First-class-functions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/First-class-functions/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/First-class-functions-Use-numbers-analogously b/Lang/Pluto/First-class-functions-Use-numbers-analogously
deleted file mode 120000
index 8d26dcc696..0000000000
--- a/Lang/Pluto/First-class-functions-Use-numbers-analogously
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/First-class-functions-Use-numbers-analogously/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/First-perfect-square-in-base-n-with-n-unique-digits b/Lang/Pluto/First-perfect-square-in-base-n-with-n-unique-digits
deleted file mode 120000
index 5163776997..0000000000
--- a/Lang/Pluto/First-perfect-square-in-base-n-with-n-unique-digits
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/First-perfect-square-in-base-n-with-n-unique-digits/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/First-power-of-2-that-has-leading-decimal-digits-of-12 b/Lang/Pluto/First-power-of-2-that-has-leading-decimal-digits-of-12
deleted file mode 120000
index e709baba03..0000000000
--- a/Lang/Pluto/First-power-of-2-that-has-leading-decimal-digits-of-12
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/First-power-of-2-that-has-leading-decimal-digits-of-12/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Five-weekends b/Lang/Pluto/Five-weekends
deleted file mode 120000
index 00a410b463..0000000000
--- a/Lang/Pluto/Five-weekends
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Five-weekends/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Fivenum b/Lang/Pluto/Fivenum
deleted file mode 120000
index a69f6ae762..0000000000
--- a/Lang/Pluto/Fivenum
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fivenum/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/FizzBuzz b/Lang/Pluto/FizzBuzz
deleted file mode 120000
index bd54d0d8bb..0000000000
--- a/Lang/Pluto/FizzBuzz
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/FizzBuzz/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Flatten-a-list b/Lang/Pluto/Flatten-a-list
deleted file mode 120000
index 821ee95cae..0000000000
--- a/Lang/Pluto/Flatten-a-list
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Flatten-a-list/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Floyd-Warshall-algorithm b/Lang/Pluto/Floyd-Warshall-algorithm
deleted file mode 120000
index 7df2d45291..0000000000
--- a/Lang/Pluto/Floyd-Warshall-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Floyd-Warshall-algorithm/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Floyds-triangle b/Lang/Pluto/Floyds-triangle
deleted file mode 120000
index 7d85d7bf3e..0000000000
--- a/Lang/Pluto/Floyds-triangle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Floyds-triangle/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Formatted-numeric-output b/Lang/Pluto/Formatted-numeric-output
deleted file mode 120000
index ca4bc2e2c0..0000000000
--- a/Lang/Pluto/Formatted-numeric-output
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Formatted-numeric-output/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Fortunate-numbers b/Lang/Pluto/Fortunate-numbers
deleted file mode 120000
index 78cf9f5f36..0000000000
--- a/Lang/Pluto/Fortunate-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fortunate-numbers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Forward-difference b/Lang/Pluto/Forward-difference
deleted file mode 120000
index f75e0263fe..0000000000
--- a/Lang/Pluto/Forward-difference
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Forward-difference/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Four-is-magic b/Lang/Pluto/Four-is-magic
deleted file mode 120000
index 8f0564da6b..0000000000
--- a/Lang/Pluto/Four-is-magic
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Four-is-magic/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Function-composition b/Lang/Pluto/Function-composition
deleted file mode 120000
index 89443d02fb..0000000000
--- a/Lang/Pluto/Function-composition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Function-composition/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Function-definition b/Lang/Pluto/Function-definition
deleted file mode 120000
index 8c3e064f65..0000000000
--- a/Lang/Pluto/Function-definition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Function-definition/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Fusc-sequence b/Lang/Pluto/Fusc-sequence
deleted file mode 120000
index af89d11bec..0000000000
--- a/Lang/Pluto/Fusc-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fusc-sequence/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Gamma-function b/Lang/Pluto/Gamma-function
deleted file mode 120000
index 8b7dee23dc..0000000000
--- a/Lang/Pluto/Gamma-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Gamma-function/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Gapful-numbers b/Lang/Pluto/Gapful-numbers
deleted file mode 120000
index 0b3bce275e..0000000000
--- a/Lang/Pluto/Gapful-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Gapful-numbers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Gauss-Jordan-matrix-inversion b/Lang/Pluto/Gauss-Jordan-matrix-inversion
deleted file mode 120000
index 75ed24ffd1..0000000000
--- a/Lang/Pluto/Gauss-Jordan-matrix-inversion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Gauss-Jordan-matrix-inversion/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/General-FizzBuzz b/Lang/Pluto/General-FizzBuzz
deleted file mode 120000
index a7cf491b38..0000000000
--- a/Lang/Pluto/General-FizzBuzz
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/General-FizzBuzz/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Generate-lower-case-ASCII-alphabet b/Lang/Pluto/Generate-lower-case-ASCII-alphabet
deleted file mode 120000
index 64f2576fe0..0000000000
--- a/Lang/Pluto/Generate-lower-case-ASCII-alphabet
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Generate-lower-case-ASCII-alphabet/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Generator-Exponential b/Lang/Pluto/Generator-Exponential
deleted file mode 120000
index 26eb55a2a0..0000000000
--- a/Lang/Pluto/Generator-Exponential
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Generator-Exponential/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Giuga-numbers b/Lang/Pluto/Giuga-numbers
deleted file mode 120000
index 221b7a2689..0000000000
--- a/Lang/Pluto/Giuga-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Giuga-numbers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Goldbachs-comet b/Lang/Pluto/Goldbachs-comet
deleted file mode 120000
index ff1cca329d..0000000000
--- a/Lang/Pluto/Goldbachs-comet
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Goldbachs-comet/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Golden-ratio-Convergence b/Lang/Pluto/Golden-ratio-Convergence
deleted file mode 120000
index 15a2256122..0000000000
--- a/Lang/Pluto/Golden-ratio-Convergence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Golden-ratio-Convergence/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Gray-code b/Lang/Pluto/Gray-code
deleted file mode 120000
index afd6df8f4b..0000000000
--- a/Lang/Pluto/Gray-code
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Gray-code/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Greatest-common-divisor b/Lang/Pluto/Greatest-common-divisor
deleted file mode 120000
index a4feeee2fd..0000000000
--- a/Lang/Pluto/Greatest-common-divisor
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Greatest-common-divisor/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Greatest-element-of-a-list b/Lang/Pluto/Greatest-element-of-a-list
deleted file mode 120000
index 85148f8e2b..0000000000
--- a/Lang/Pluto/Greatest-element-of-a-list
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Greatest-element-of-a-list/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Greatest-subsequential-sum b/Lang/Pluto/Greatest-subsequential-sum
deleted file mode 120000
index 308ac33a20..0000000000
--- a/Lang/Pluto/Greatest-subsequential-sum
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Greatest-subsequential-sum/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Greedy-algorithm-for-Egyptian-fractions b/Lang/Pluto/Greedy-algorithm-for-Egyptian-fractions
deleted file mode 120000
index 97dc6bbde7..0000000000
--- a/Lang/Pluto/Greedy-algorithm-for-Egyptian-fractions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Greedy-algorithm-for-Egyptian-fractions/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Guess-the-number b/Lang/Pluto/Guess-the-number
deleted file mode 120000
index f68fa3fc41..0000000000
--- a/Lang/Pluto/Guess-the-number
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Guess-the-number/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Hailstone-sequence b/Lang/Pluto/Hailstone-sequence
deleted file mode 120000
index 0c70c36e8a..0000000000
--- a/Lang/Pluto/Hailstone-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hailstone-sequence/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Halt-and-catch-fire b/Lang/Pluto/Halt-and-catch-fire
deleted file mode 120000
index f8e69baccf..0000000000
--- a/Lang/Pluto/Halt-and-catch-fire
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Halt-and-catch-fire/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Happy-numbers b/Lang/Pluto/Happy-numbers
deleted file mode 120000
index 8184fae2dd..0000000000
--- a/Lang/Pluto/Happy-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Happy-numbers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Harmonic-series b/Lang/Pluto/Harmonic-series
deleted file mode 120000
index 9e5681ab0c..0000000000
--- a/Lang/Pluto/Harmonic-series
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Harmonic-series/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Harshad-or-Niven-series b/Lang/Pluto/Harshad-or-Niven-series
deleted file mode 120000
index 8a3855605b..0000000000
--- a/Lang/Pluto/Harshad-or-Niven-series
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Harshad-or-Niven-series/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Hash-from-two-arrays b/Lang/Pluto/Hash-from-two-arrays
deleted file mode 120000
index 5612dbf1a3..0000000000
--- a/Lang/Pluto/Hash-from-two-arrays
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hash-from-two-arrays/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Hash-join b/Lang/Pluto/Hash-join
deleted file mode 120000
index 857fcc5b68..0000000000
--- a/Lang/Pluto/Hash-join
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hash-join/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Haversine-formula b/Lang/Pluto/Haversine-formula
deleted file mode 120000
index b9fcee8ac0..0000000000
--- a/Lang/Pluto/Haversine-formula
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Haversine-formula/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Hello-world-Graphical b/Lang/Pluto/Hello-world-Graphical
deleted file mode 120000
index b0cbed710e..0000000000
--- a/Lang/Pluto/Hello-world-Graphical
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Graphical/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Hello-world-Newbie b/Lang/Pluto/Hello-world-Newbie
deleted file mode 120000
index d7c1d093e2..0000000000
--- a/Lang/Pluto/Hello-world-Newbie
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Newbie/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Hello-world-Newline-omission b/Lang/Pluto/Hello-world-Newline-omission
deleted file mode 120000
index 5020503885..0000000000
--- a/Lang/Pluto/Hello-world-Newline-omission
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Newline-omission/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Hello-world-Standard-error b/Lang/Pluto/Hello-world-Standard-error
deleted file mode 120000
index 2b41d962cc..0000000000
--- a/Lang/Pluto/Hello-world-Standard-error
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Standard-error/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Hello-world-Text b/Lang/Pluto/Hello-world-Text
deleted file mode 120000
index 6d5bb1406f..0000000000
--- a/Lang/Pluto/Hello-world-Text
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Text/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Hex-words b/Lang/Pluto/Hex-words
deleted file mode 120000
index 62ff8632b8..0000000000
--- a/Lang/Pluto/Hex-words
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hex-words/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Hickerson-series-of-almost-integers b/Lang/Pluto/Hickerson-series-of-almost-integers
deleted file mode 120000
index 1706eca746..0000000000
--- a/Lang/Pluto/Hickerson-series-of-almost-integers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hickerson-series-of-almost-integers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Higher-order-functions b/Lang/Pluto/Higher-order-functions
deleted file mode 120000
index 532e183ee0..0000000000
--- a/Lang/Pluto/Higher-order-functions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Higher-order-functions/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Hofstadter-Q-sequence b/Lang/Pluto/Hofstadter-Q-sequence
deleted file mode 120000
index 55c19c4e5e..0000000000
--- a/Lang/Pluto/Hofstadter-Q-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hofstadter-Q-sequence/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Home-primes b/Lang/Pluto/Home-primes
deleted file mode 120000
index 66e3e487a6..0000000000
--- a/Lang/Pluto/Home-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Home-primes/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Horners-rule-for-polynomial-evaluation b/Lang/Pluto/Horners-rule-for-polynomial-evaluation
deleted file mode 120000
index 02512d6f7e..0000000000
--- a/Lang/Pluto/Horners-rule-for-polynomial-evaluation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Horners-rule-for-polynomial-evaluation/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Hostname b/Lang/Pluto/Hostname
deleted file mode 120000
index c1fe0db0ef..0000000000
--- a/Lang/Pluto/Hostname
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hostname/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Humble-numbers b/Lang/Pluto/Humble-numbers
deleted file mode 120000
index f616a12fe9..0000000000
--- a/Lang/Pluto/Humble-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Humble-numbers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/IBAN b/Lang/Pluto/IBAN
deleted file mode 120000
index 3c48349f04..0000000000
--- a/Lang/Pluto/IBAN
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/IBAN/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/ISBN13-check-digit b/Lang/Pluto/ISBN13-check-digit
deleted file mode 120000
index 18cc8cf2ba..0000000000
--- a/Lang/Pluto/ISBN13-check-digit
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/ISBN13-check-digit/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Identity-matrix b/Lang/Pluto/Identity-matrix
deleted file mode 120000
index 755ad3b6ef..0000000000
--- a/Lang/Pluto/Identity-matrix
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Identity-matrix/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Idiomatically-determine-all-the-lowercase-and-uppercase-letters b/Lang/Pluto/Idiomatically-determine-all-the-lowercase-and-uppercase-letters
deleted file mode 120000
index 1ce83f951b..0000000000
--- a/Lang/Pluto/Idiomatically-determine-all-the-lowercase-and-uppercase-letters
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Idiomatically-determine-all-the-lowercase-and-uppercase-letters/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Increment-a-numerical-string b/Lang/Pluto/Increment-a-numerical-string
deleted file mode 120000
index 5413743d7c..0000000000
--- a/Lang/Pluto/Increment-a-numerical-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Increment-a-numerical-string/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Index-finite-lists-of-positive-integers b/Lang/Pluto/Index-finite-lists-of-positive-integers
deleted file mode 120000
index 44f395ae80..0000000000
--- a/Lang/Pluto/Index-finite-lists-of-positive-integers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Index-finite-lists-of-positive-integers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Infinity b/Lang/Pluto/Infinity
deleted file mode 120000
index cb81bde8e2..0000000000
--- a/Lang/Pluto/Infinity
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Infinity/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Inheritance-Multiple b/Lang/Pluto/Inheritance-Multiple
deleted file mode 120000
index 8172d1b878..0000000000
--- a/Lang/Pluto/Inheritance-Multiple
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Inheritance-Multiple/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Inheritance-Single b/Lang/Pluto/Inheritance-Single
deleted file mode 120000
index 978ce6e7cf..0000000000
--- a/Lang/Pluto/Inheritance-Single
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Inheritance-Single/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Integer-overflow b/Lang/Pluto/Integer-overflow
deleted file mode 120000
index 21ae81881b..0000000000
--- a/Lang/Pluto/Integer-overflow
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Integer-overflow/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Inverted-syntax b/Lang/Pluto/Inverted-syntax
deleted file mode 120000
index 689ac95819..0000000000
--- a/Lang/Pluto/Inverted-syntax
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Inverted-syntax/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Isqrt-integer-square-root-of-X b/Lang/Pluto/Isqrt-integer-square-root-of-X
deleted file mode 120000
index e61bc6f394..0000000000
--- a/Lang/Pluto/Isqrt-integer-square-root-of-X
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Isqrt-integer-square-root-of-X/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Iterated-digits-squaring b/Lang/Pluto/Iterated-digits-squaring
deleted file mode 120000
index 1e0c30dec8..0000000000
--- a/Lang/Pluto/Iterated-digits-squaring
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Iterated-digits-squaring/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/JSON b/Lang/Pluto/JSON
deleted file mode 120000
index bc77142a3f..0000000000
--- a/Lang/Pluto/JSON
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/JSON/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Jacobi-symbol b/Lang/Pluto/Jacobi-symbol
deleted file mode 120000
index 004a1623cc..0000000000
--- a/Lang/Pluto/Jacobi-symbol
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jacobi-symbol/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Jacobsthal-numbers b/Lang/Pluto/Jacobsthal-numbers
deleted file mode 120000
index 310c137dfd..0000000000
--- a/Lang/Pluto/Jacobsthal-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jacobsthal-numbers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Jaro-Winkler-distance b/Lang/Pluto/Jaro-Winkler-distance
deleted file mode 120000
index c18faa1587..0000000000
--- a/Lang/Pluto/Jaro-Winkler-distance
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jaro-Winkler-distance/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Jaro-similarity b/Lang/Pluto/Jaro-similarity
deleted file mode 120000
index 7fbb18452a..0000000000
--- a/Lang/Pluto/Jaro-similarity
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jaro-similarity/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Jensens-Device b/Lang/Pluto/Jensens-Device
deleted file mode 120000
index 1f301e92cb..0000000000
--- a/Lang/Pluto/Jensens-Device
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jensens-Device/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Jewels-and-stones b/Lang/Pluto/Jewels-and-stones
deleted file mode 120000
index 0d8632e132..0000000000
--- a/Lang/Pluto/Jewels-and-stones
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jewels-and-stones/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Jordan-P-lya-numbers b/Lang/Pluto/Jordan-P-lya-numbers
deleted file mode 120000
index 69c05770d3..0000000000
--- a/Lang/Pluto/Jordan-P-lya-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jordan-P-lya-numbers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/JortSort b/Lang/Pluto/JortSort
deleted file mode 120000
index 2f3a60be62..0000000000
--- a/Lang/Pluto/JortSort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/JortSort/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Josephus-problem b/Lang/Pluto/Josephus-problem
deleted file mode 120000
index c17c5c052c..0000000000
--- a/Lang/Pluto/Josephus-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Josephus-problem/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Juggler-sequence b/Lang/Pluto/Juggler-sequence
deleted file mode 120000
index 55e904505f..0000000000
--- a/Lang/Pluto/Juggler-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Juggler-sequence/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Julia-set b/Lang/Pluto/Julia-set
deleted file mode 120000
index 47c2b492f2..0000000000
--- a/Lang/Pluto/Julia-set
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Julia-set/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Jump-anywhere b/Lang/Pluto/Jump-anywhere
deleted file mode 120000
index 0cc6c03c6c..0000000000
--- a/Lang/Pluto/Jump-anywhere
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jump-anywhere/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Kaprekar-numbers b/Lang/Pluto/Kaprekar-numbers
deleted file mode 120000
index 1c32b1316d..0000000000
--- a/Lang/Pluto/Kaprekar-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Kaprekar-numbers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Knapsack-problem-0-1 b/Lang/Pluto/Knapsack-problem-0-1
deleted file mode 120000
index 154c3bec73..0000000000
--- a/Lang/Pluto/Knapsack-problem-0-1
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Knapsack-problem-0-1/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Knapsack-problem-Bounded b/Lang/Pluto/Knapsack-problem-Bounded
deleted file mode 120000
index fdfd53d307..0000000000
--- a/Lang/Pluto/Knapsack-problem-Bounded
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Knapsack-problem-Bounded/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Knapsack-problem-Continuous b/Lang/Pluto/Knapsack-problem-Continuous
deleted file mode 120000
index afd8aad5a0..0000000000
--- a/Lang/Pluto/Knapsack-problem-Continuous
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Knapsack-problem-Continuous/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Knapsack-problem-Unbounded b/Lang/Pluto/Knapsack-problem-Unbounded
deleted file mode 120000
index a47d914c76..0000000000
--- a/Lang/Pluto/Knapsack-problem-Unbounded
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Knapsack-problem-Unbounded/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Knuth-shuffle b/Lang/Pluto/Knuth-shuffle
deleted file mode 120000
index e7dddcd355..0000000000
--- a/Lang/Pluto/Knuth-shuffle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Knuth-shuffle/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Knuths-algorithm-S b/Lang/Pluto/Knuths-algorithm-S
deleted file mode 120000
index 541d484707..0000000000
--- a/Lang/Pluto/Knuths-algorithm-S
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Knuths-algorithm-S/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Kronecker-product b/Lang/Pluto/Kronecker-product
deleted file mode 120000
index 3e6a6e5b94..0000000000
--- a/Lang/Pluto/Kronecker-product
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Kronecker-product/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Kronecker-product-based-fractals b/Lang/Pluto/Kronecker-product-based-fractals
deleted file mode 120000
index 3cfc235117..0000000000
--- a/Lang/Pluto/Kronecker-product-based-fractals
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Kronecker-product-based-fractals/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/LU-decomposition b/Lang/Pluto/LU-decomposition
deleted file mode 120000
index 6a8af92062..0000000000
--- a/Lang/Pluto/LU-decomposition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/LU-decomposition/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/LZW-compression b/Lang/Pluto/LZW-compression
deleted file mode 120000
index 50427fda5c..0000000000
--- a/Lang/Pluto/LZW-compression
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/LZW-compression/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Lah-numbers b/Lang/Pluto/Lah-numbers
deleted file mode 120000
index f5d9d24027..0000000000
--- a/Lang/Pluto/Lah-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Lah-numbers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Langtons-ant b/Lang/Pluto/Langtons-ant
deleted file mode 120000
index fbf8c4cec8..0000000000
--- a/Lang/Pluto/Langtons-ant
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Langtons-ant/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Largest-number-divisible-by-its-digits b/Lang/Pluto/Largest-number-divisible-by-its-digits
deleted file mode 120000
index 0399c7d845..0000000000
--- a/Lang/Pluto/Largest-number-divisible-by-its-digits
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Largest-number-divisible-by-its-digits/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Largest-proper-divisor-of-n b/Lang/Pluto/Largest-proper-divisor-of-n
deleted file mode 120000
index d21ea35abe..0000000000
--- a/Lang/Pluto/Largest-proper-divisor-of-n
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Largest-proper-divisor-of-n/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Last-Friday-of-each-month b/Lang/Pluto/Last-Friday-of-each-month
deleted file mode 120000
index 34cb3bb01f..0000000000
--- a/Lang/Pluto/Last-Friday-of-each-month
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Last-Friday-of-each-month/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Leap-year b/Lang/Pluto/Leap-year
deleted file mode 120000
index 9574544885..0000000000
--- a/Lang/Pluto/Leap-year
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Leap-year/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Least-common-multiple b/Lang/Pluto/Least-common-multiple
deleted file mode 120000
index 315d9ee3c1..0000000000
--- a/Lang/Pluto/Least-common-multiple
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Least-common-multiple/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Legendre-prime-counting-function b/Lang/Pluto/Legendre-prime-counting-function
deleted file mode 120000
index f91e3cb00d..0000000000
--- a/Lang/Pluto/Legendre-prime-counting-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Legendre-prime-counting-function/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Leonardo-numbers b/Lang/Pluto/Leonardo-numbers
deleted file mode 120000
index 6a0846d95e..0000000000
--- a/Lang/Pluto/Leonardo-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Leonardo-numbers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/List-comprehensions b/Lang/Pluto/List-comprehensions
deleted file mode 120000
index e183959a9e..0000000000
--- a/Lang/Pluto/List-comprehensions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/List-comprehensions/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Literals-Floating-point b/Lang/Pluto/Literals-Floating-point
deleted file mode 120000
index f40aa2eb22..0000000000
--- a/Lang/Pluto/Literals-Floating-point
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Literals-Floating-point/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Literals-Integer b/Lang/Pluto/Literals-Integer
deleted file mode 120000
index 2ca0134201..0000000000
--- a/Lang/Pluto/Literals-Integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Literals-Integer/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Logistic-curve-fitting-in-epidemiology b/Lang/Pluto/Logistic-curve-fitting-in-epidemiology
deleted file mode 120000
index 5620c74aa1..0000000000
--- a/Lang/Pluto/Logistic-curve-fitting-in-epidemiology
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Logistic-curve-fitting-in-epidemiology/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Long-year b/Lang/Pluto/Long-year
deleted file mode 120000
index e81c486cc5..0000000000
--- a/Lang/Pluto/Long-year
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Long-year/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Longest-increasing-subsequence b/Lang/Pluto/Longest-increasing-subsequence
deleted file mode 120000
index 24fdc53a13..0000000000
--- a/Lang/Pluto/Longest-increasing-subsequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Longest-increasing-subsequence/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Longest-string-challenge b/Lang/Pluto/Longest-string-challenge
deleted file mode 120000
index 8e8deb88da..0000000000
--- a/Lang/Pluto/Longest-string-challenge
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Longest-string-challenge/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Loop-over-multiple-arrays-simultaneously b/Lang/Pluto/Loop-over-multiple-arrays-simultaneously
deleted file mode 120000
index cebc902b5b..0000000000
--- a/Lang/Pluto/Loop-over-multiple-arrays-simultaneously
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loop-over-multiple-arrays-simultaneously/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Loops-Break b/Lang/Pluto/Loops-Break
deleted file mode 120000
index 2b3657d2de..0000000000
--- a/Lang/Pluto/Loops-Break
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Break/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Loops-Continue b/Lang/Pluto/Loops-Continue
deleted file mode 120000
index 5f41db6125..0000000000
--- a/Lang/Pluto/Loops-Continue
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Continue/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Loops-Do-while b/Lang/Pluto/Loops-Do-while
deleted file mode 120000
index a265d4decf..0000000000
--- a/Lang/Pluto/Loops-Do-while
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Do-while/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Loops-Downward-for b/Lang/Pluto/Loops-Downward-for
deleted file mode 120000
index 6302a5cc0d..0000000000
--- a/Lang/Pluto/Loops-Downward-for
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Downward-for/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Loops-For b/Lang/Pluto/Loops-For
deleted file mode 120000
index 9f83ae12bd..0000000000
--- a/Lang/Pluto/Loops-For
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-For/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Loops-For-with-a-specified-step b/Lang/Pluto/Loops-For-with-a-specified-step
deleted file mode 120000
index 508122a2e3..0000000000
--- a/Lang/Pluto/Loops-For-with-a-specified-step
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-For-with-a-specified-step/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Loops-Foreach b/Lang/Pluto/Loops-Foreach
deleted file mode 120000
index 9dbfba413e..0000000000
--- a/Lang/Pluto/Loops-Foreach
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Foreach/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Loops-Increment-loop-index-within-loop-body b/Lang/Pluto/Loops-Increment-loop-index-within-loop-body
deleted file mode 120000
index f1ce9d6778..0000000000
--- a/Lang/Pluto/Loops-Increment-loop-index-within-loop-body
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Increment-loop-index-within-loop-body/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Loops-Infinite b/Lang/Pluto/Loops-Infinite
deleted file mode 120000
index 50986dd414..0000000000
--- a/Lang/Pluto/Loops-Infinite
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Infinite/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Loops-N-plus-one-half b/Lang/Pluto/Loops-N-plus-one-half
deleted file mode 120000
index 433e3f6336..0000000000
--- a/Lang/Pluto/Loops-N-plus-one-half
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-N-plus-one-half/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Loops-Nested b/Lang/Pluto/Loops-Nested
deleted file mode 120000
index 96f4c43c62..0000000000
--- a/Lang/Pluto/Loops-Nested
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Nested/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Loops-While b/Lang/Pluto/Loops-While
deleted file mode 120000
index 3aa5f84aba..0000000000
--- a/Lang/Pluto/Loops-While
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-While/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Loops-With-multiple-ranges b/Lang/Pluto/Loops-With-multiple-ranges
deleted file mode 120000
index b1ef3af096..0000000000
--- a/Lang/Pluto/Loops-With-multiple-ranges
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-With-multiple-ranges/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Loops-Wrong-ranges b/Lang/Pluto/Loops-Wrong-ranges
deleted file mode 120000
index 7b8bd4ecb0..0000000000
--- a/Lang/Pluto/Loops-Wrong-ranges
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Wrong-ranges/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Lucas-Lehmer-test b/Lang/Pluto/Lucas-Lehmer-test
deleted file mode 120000
index 247c0bbafb..0000000000
--- a/Lang/Pluto/Lucas-Lehmer-test
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Lucas-Lehmer-test/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Luhn-test-of-credit-card-numbers b/Lang/Pluto/Luhn-test-of-credit-card-numbers
deleted file mode 120000
index c06ed72be3..0000000000
--- a/Lang/Pluto/Luhn-test-of-credit-card-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Luhn-test-of-credit-card-numbers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/M-bius-function b/Lang/Pluto/M-bius-function
deleted file mode 120000
index 99da13a437..0000000000
--- a/Lang/Pluto/M-bius-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/M-bius-function/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/MD4 b/Lang/Pluto/MD4
deleted file mode 120000
index b6660e39bc..0000000000
--- a/Lang/Pluto/MD4
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/MD4/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/MD5 b/Lang/Pluto/MD5
deleted file mode 120000
index c54a09dd7b..0000000000
--- a/Lang/Pluto/MD5
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/MD5/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/MD5-Implementation b/Lang/Pluto/MD5-Implementation
deleted file mode 120000
index 6cfead7533..0000000000
--- a/Lang/Pluto/MD5-Implementation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/MD5-Implementation/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Machine-code b/Lang/Pluto/Machine-code
deleted file mode 120000
index 82c80d52fd..0000000000
--- a/Lang/Pluto/Machine-code
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Machine-code/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Magic-8-ball b/Lang/Pluto/Magic-8-ball
deleted file mode 120000
index e4c5118cb4..0000000000
--- a/Lang/Pluto/Magic-8-ball
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Magic-8-ball/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Magic-constant b/Lang/Pluto/Magic-constant
deleted file mode 120000
index 640896b2e7..0000000000
--- a/Lang/Pluto/Magic-constant
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Magic-constant/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Magic-squares-of-doubly-even-order b/Lang/Pluto/Magic-squares-of-doubly-even-order
deleted file mode 120000
index 357d3e5480..0000000000
--- a/Lang/Pluto/Magic-squares-of-doubly-even-order
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Magic-squares-of-doubly-even-order/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Magic-squares-of-odd-order b/Lang/Pluto/Magic-squares-of-odd-order
deleted file mode 120000
index 5df4846612..0000000000
--- a/Lang/Pluto/Magic-squares-of-odd-order
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Magic-squares-of-odd-order/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Magic-squares-of-singly-even-order b/Lang/Pluto/Magic-squares-of-singly-even-order
deleted file mode 120000
index 2430b82023..0000000000
--- a/Lang/Pluto/Magic-squares-of-singly-even-order
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Magic-squares-of-singly-even-order/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Man-or-boy-test b/Lang/Pluto/Man-or-boy-test
deleted file mode 120000
index a1f41c4398..0000000000
--- a/Lang/Pluto/Man-or-boy-test
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Man-or-boy-test/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Mandelbrot-set b/Lang/Pluto/Mandelbrot-set
deleted file mode 120000
index 3e79f825ad..0000000000
--- a/Lang/Pluto/Mandelbrot-set
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Mandelbrot-set/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Map-range b/Lang/Pluto/Map-range
deleted file mode 120000
index a57c07d536..0000000000
--- a/Lang/Pluto/Map-range
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Map-range/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Matrix-exponentiation-operator b/Lang/Pluto/Matrix-exponentiation-operator
deleted file mode 120000
index 1f6eb5cbaa..0000000000
--- a/Lang/Pluto/Matrix-exponentiation-operator
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Matrix-exponentiation-operator/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Matrix-multiplication b/Lang/Pluto/Matrix-multiplication
deleted file mode 120000
index 61008dcc0b..0000000000
--- a/Lang/Pluto/Matrix-multiplication
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Matrix-multiplication/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Matrix-transposition b/Lang/Pluto/Matrix-transposition
deleted file mode 120000
index aaa00341d6..0000000000
--- a/Lang/Pluto/Matrix-transposition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Matrix-transposition/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Maximum-triangle-path-sum b/Lang/Pluto/Maximum-triangle-path-sum
deleted file mode 120000
index 916e59e364..0000000000
--- a/Lang/Pluto/Maximum-triangle-path-sum
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Maximum-triangle-path-sum/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/McNuggets-problem b/Lang/Pluto/McNuggets-problem
deleted file mode 120000
index 2540339e72..0000000000
--- a/Lang/Pluto/McNuggets-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/McNuggets-problem/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Menu b/Lang/Pluto/Menu
deleted file mode 120000
index 058fd3fb23..0000000000
--- a/Lang/Pluto/Menu
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Menu/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Mian-Chowla-sequence b/Lang/Pluto/Mian-Chowla-sequence
deleted file mode 120000
index f966e85ca5..0000000000
--- a/Lang/Pluto/Mian-Chowla-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Mian-Chowla-sequence/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Middle-three-digits b/Lang/Pluto/Middle-three-digits
deleted file mode 120000
index 8d3393e673..0000000000
--- a/Lang/Pluto/Middle-three-digits
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Middle-three-digits/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Mind-boggling-card-trick b/Lang/Pluto/Mind-boggling-card-trick
deleted file mode 120000
index 230afb38bb..0000000000
--- a/Lang/Pluto/Mind-boggling-card-trick
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Mind-boggling-card-trick/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Modified-random-distribution b/Lang/Pluto/Modified-random-distribution
deleted file mode 120000
index a50baa585f..0000000000
--- a/Lang/Pluto/Modified-random-distribution
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Modified-random-distribution/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Modular-exponentiation b/Lang/Pluto/Modular-exponentiation
deleted file mode 120000
index 5694ee1899..0000000000
--- a/Lang/Pluto/Modular-exponentiation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Modular-exponentiation/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Modular-inverse b/Lang/Pluto/Modular-inverse
deleted file mode 120000
index 339ad0f426..0000000000
--- a/Lang/Pluto/Modular-inverse
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Modular-inverse/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Monads-Maybe-monad b/Lang/Pluto/Monads-Maybe-monad
deleted file mode 120000
index 38ba5a7df2..0000000000
--- a/Lang/Pluto/Monads-Maybe-monad
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Monads-Maybe-monad/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Monte-Carlo-methods b/Lang/Pluto/Monte-Carlo-methods
deleted file mode 120000
index 8639690631..0000000000
--- a/Lang/Pluto/Monte-Carlo-methods
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Monte-Carlo-methods/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Monty-Hall-problem b/Lang/Pluto/Monty-Hall-problem
deleted file mode 120000
index dac7cd8df3..0000000000
--- a/Lang/Pluto/Monty-Hall-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Monty-Hall-problem/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Morse-code b/Lang/Pluto/Morse-code
deleted file mode 120000
index cf03e5492b..0000000000
--- a/Lang/Pluto/Morse-code
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Morse-code/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Motzkin-numbers b/Lang/Pluto/Motzkin-numbers
deleted file mode 120000
index 32bef98749..0000000000
--- a/Lang/Pluto/Motzkin-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Motzkin-numbers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Move-to-front-algorithm b/Lang/Pluto/Move-to-front-algorithm
deleted file mode 120000
index 2cc1837031..0000000000
--- a/Lang/Pluto/Move-to-front-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Move-to-front-algorithm/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Multi-dimensional-array b/Lang/Pluto/Multi-dimensional-array
deleted file mode 120000
index 53ab69b153..0000000000
--- a/Lang/Pluto/Multi-dimensional-array
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Multi-dimensional-array/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Multifactorial b/Lang/Pluto/Multifactorial
deleted file mode 120000
index db75308a5f..0000000000
--- a/Lang/Pluto/Multifactorial
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Multifactorial/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Multiple-distinct-objects b/Lang/Pluto/Multiple-distinct-objects
deleted file mode 120000
index 3449d4226d..0000000000
--- a/Lang/Pluto/Multiple-distinct-objects
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Multiple-distinct-objects/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Multiple-regression b/Lang/Pluto/Multiple-regression
deleted file mode 120000
index 41b57d2c96..0000000000
--- a/Lang/Pluto/Multiple-regression
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Multiple-regression/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Multiplication-tables b/Lang/Pluto/Multiplication-tables
deleted file mode 120000
index 98a4d7bd3c..0000000000
--- a/Lang/Pluto/Multiplication-tables
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Multiplication-tables/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Munchausen-numbers b/Lang/Pluto/Munchausen-numbers
deleted file mode 120000
index 9b090f8c02..0000000000
--- a/Lang/Pluto/Munchausen-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Munchausen-numbers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Munching-squares b/Lang/Pluto/Munching-squares
deleted file mode 120000
index 71dcd71a08..0000000000
--- a/Lang/Pluto/Munching-squares
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Munching-squares/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Musical-scale b/Lang/Pluto/Musical-scale
deleted file mode 120000
index 9692211175..0000000000
--- a/Lang/Pluto/Musical-scale
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Musical-scale/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Mutual-recursion b/Lang/Pluto/Mutual-recursion
deleted file mode 120000
index 3866a9925a..0000000000
--- a/Lang/Pluto/Mutual-recursion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Mutual-recursion/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/N-queens-problem b/Lang/Pluto/N-queens-problem
deleted file mode 120000
index a29c7467b2..0000000000
--- a/Lang/Pluto/N-queens-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/N-queens-problem/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Named-parameters b/Lang/Pluto/Named-parameters
deleted file mode 120000
index 8f0b72ba9b..0000000000
--- a/Lang/Pluto/Named-parameters
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Named-parameters/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Narcissistic-decimal-number b/Lang/Pluto/Narcissistic-decimal-number
deleted file mode 120000
index feead3c3a0..0000000000
--- a/Lang/Pluto/Narcissistic-decimal-number
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Narcissistic-decimal-number/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Nested-function b/Lang/Pluto/Nested-function
deleted file mode 120000
index ea9816ec32..0000000000
--- a/Lang/Pluto/Nested-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nested-function/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Nested-templated-data b/Lang/Pluto/Nested-templated-data
deleted file mode 120000
index d56f50a5d8..0000000000
--- a/Lang/Pluto/Nested-templated-data
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nested-templated-data/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Non-continuous-subsequences b/Lang/Pluto/Non-continuous-subsequences
deleted file mode 120000
index f226b8c60b..0000000000
--- a/Lang/Pluto/Non-continuous-subsequences
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Non-continuous-subsequences/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Non-decimal-radices-Convert b/Lang/Pluto/Non-decimal-radices-Convert
deleted file mode 120000
index e1fddc5a20..0000000000
--- a/Lang/Pluto/Non-decimal-radices-Convert
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Non-decimal-radices-Convert/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Non-decimal-radices-Input b/Lang/Pluto/Non-decimal-radices-Input
deleted file mode 120000
index e530fe6bb6..0000000000
--- a/Lang/Pluto/Non-decimal-radices-Input
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Non-decimal-radices-Input/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Non-decimal-radices-Output b/Lang/Pluto/Non-decimal-radices-Output
deleted file mode 120000
index 8cfb1c729a..0000000000
--- a/Lang/Pluto/Non-decimal-radices-Output
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Non-decimal-radices-Output/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Nonoblock b/Lang/Pluto/Nonoblock
deleted file mode 120000
index 733d16326f..0000000000
--- a/Lang/Pluto/Nonoblock
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nonoblock/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Nth b/Lang/Pluto/Nth
deleted file mode 120000
index 54dfb50037..0000000000
--- a/Lang/Pluto/Nth
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nth/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Number-names b/Lang/Pluto/Number-names
deleted file mode 120000
index 1ede3bfc36..0000000000
--- a/Lang/Pluto/Number-names
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Number-names/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Numbers-with-equal-rises-and-falls b/Lang/Pluto/Numbers-with-equal-rises-and-falls
deleted file mode 120000
index b08f5ff647..0000000000
--- a/Lang/Pluto/Numbers-with-equal-rises-and-falls
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Numbers-with-equal-rises-and-falls/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Numeric-error-propagation b/Lang/Pluto/Numeric-error-propagation
deleted file mode 120000
index 2f5e41e871..0000000000
--- a/Lang/Pluto/Numeric-error-propagation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Numeric-error-propagation/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Numerical-integration b/Lang/Pluto/Numerical-integration
deleted file mode 120000
index e89c1b753a..0000000000
--- a/Lang/Pluto/Numerical-integration
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Numerical-integration/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Old-Russian-measure-of-length b/Lang/Pluto/Old-Russian-measure-of-length
deleted file mode 120000
index 9f7493d0af..0000000000
--- a/Lang/Pluto/Old-Russian-measure-of-length
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Old-Russian-measure-of-length/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Old-lady-swallowed-a-fly b/Lang/Pluto/Old-lady-swallowed-a-fly
deleted file mode 120000
index e29df6472a..0000000000
--- a/Lang/Pluto/Old-lady-swallowed-a-fly
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Old-lady-swallowed-a-fly/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/One-dimensional-cellular-automata b/Lang/Pluto/One-dimensional-cellular-automata
deleted file mode 120000
index b90efd8831..0000000000
--- a/Lang/Pluto/One-dimensional-cellular-automata
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/One-dimensional-cellular-automata/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Order-by-pair-comparisons b/Lang/Pluto/Order-by-pair-comparisons
deleted file mode 120000
index 1c7665f6b2..0000000000
--- a/Lang/Pluto/Order-by-pair-comparisons
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Order-by-pair-comparisons/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Ordered-words b/Lang/Pluto/Ordered-words
deleted file mode 120000
index 018c8529a3..0000000000
--- a/Lang/Pluto/Ordered-words
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ordered-words/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Ormiston-triples b/Lang/Pluto/Ormiston-triples
deleted file mode 120000
index e6fe78c60e..0000000000
--- a/Lang/Pluto/Ormiston-triples
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ormiston-triples/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Palindrome-detection b/Lang/Pluto/Palindrome-detection
deleted file mode 120000
index 755083778a..0000000000
--- a/Lang/Pluto/Palindrome-detection
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Palindrome-detection/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Pancake-numbers b/Lang/Pluto/Pancake-numbers
deleted file mode 120000
index 129dac7c77..0000000000
--- a/Lang/Pluto/Pancake-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pancake-numbers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Paraffins b/Lang/Pluto/Paraffins
deleted file mode 120000
index 4b8b6e0ba9..0000000000
--- a/Lang/Pluto/Paraffins
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Paraffins/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Parametric-polymorphism b/Lang/Pluto/Parametric-polymorphism
deleted file mode 120000
index bdc68d3723..0000000000
--- a/Lang/Pluto/Parametric-polymorphism
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Parametric-polymorphism/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Parsing-RPN-calculator-algorithm b/Lang/Pluto/Parsing-RPN-calculator-algorithm
deleted file mode 120000
index f120a8c76e..0000000000
--- a/Lang/Pluto/Parsing-RPN-calculator-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Parsing-RPN-calculator-algorithm/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Parsing-Shunting-yard-algorithm b/Lang/Pluto/Parsing-Shunting-yard-algorithm
deleted file mode 120000
index 6a968b87bd..0000000000
--- a/Lang/Pluto/Parsing-Shunting-yard-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Parsing-Shunting-yard-algorithm/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Partial-function-application b/Lang/Pluto/Partial-function-application
deleted file mode 120000
index bc39fe1347..0000000000
--- a/Lang/Pluto/Partial-function-application
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Partial-function-application/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Partition-an-integer-x-into-n-primes b/Lang/Pluto/Partition-an-integer-x-into-n-primes
deleted file mode 120000
index b3156a2b19..0000000000
--- a/Lang/Pluto/Partition-an-integer-x-into-n-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Partition-an-integer-x-into-n-primes/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Partition-function-P b/Lang/Pluto/Partition-function-P
deleted file mode 120000
index 74dceccc52..0000000000
--- a/Lang/Pluto/Partition-function-P
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Partition-function-P/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Pascal-matrix-generation b/Lang/Pluto/Pascal-matrix-generation
deleted file mode 120000
index 08137286fd..0000000000
--- a/Lang/Pluto/Pascal-matrix-generation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pascal-matrix-generation/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Pascals-triangle b/Lang/Pluto/Pascals-triangle
deleted file mode 120000
index b148762a81..0000000000
--- a/Lang/Pluto/Pascals-triangle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pascals-triangle/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Pascals-triangle-Puzzle b/Lang/Pluto/Pascals-triangle-Puzzle
deleted file mode 120000
index 312b0f9b1b..0000000000
--- a/Lang/Pluto/Pascals-triangle-Puzzle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pascals-triangle-Puzzle/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Pells-equation b/Lang/Pluto/Pells-equation
deleted file mode 120000
index 330936d009..0000000000
--- a/Lang/Pluto/Pells-equation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pells-equation/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Perfect-numbers b/Lang/Pluto/Perfect-numbers
deleted file mode 120000
index c44c743521..0000000000
--- a/Lang/Pluto/Perfect-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Perfect-numbers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Perfect-shuffle b/Lang/Pluto/Perfect-shuffle
deleted file mode 120000
index 1dd4b8c882..0000000000
--- a/Lang/Pluto/Perfect-shuffle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Perfect-shuffle/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Perfect-totient-numbers b/Lang/Pluto/Perfect-totient-numbers
deleted file mode 120000
index ff9d8e3ace..0000000000
--- a/Lang/Pluto/Perfect-totient-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Perfect-totient-numbers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Periodic-table b/Lang/Pluto/Periodic-table
deleted file mode 120000
index 9aa6afb48f..0000000000
--- a/Lang/Pluto/Periodic-table
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Periodic-table/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Peripheral-drift-illusion b/Lang/Pluto/Peripheral-drift-illusion
deleted file mode 120000
index 28e04374ac..0000000000
--- a/Lang/Pluto/Peripheral-drift-illusion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Peripheral-drift-illusion/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Perlin-noise b/Lang/Pluto/Perlin-noise
deleted file mode 120000
index 9a99043b16..0000000000
--- a/Lang/Pluto/Perlin-noise
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Perlin-noise/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Permutations b/Lang/Pluto/Permutations
deleted file mode 120000
index 750604fad2..0000000000
--- a/Lang/Pluto/Permutations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Permutations/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Pernicious-numbers b/Lang/Pluto/Pernicious-numbers
deleted file mode 120000
index 29e4a1f27e..0000000000
--- a/Lang/Pluto/Pernicious-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pernicious-numbers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Phrase-reversals b/Lang/Pluto/Phrase-reversals
deleted file mode 120000
index 8398529c2c..0000000000
--- a/Lang/Pluto/Phrase-reversals
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Phrase-reversals/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Pick-random-element b/Lang/Pluto/Pick-random-element
deleted file mode 120000
index f181e160e5..0000000000
--- a/Lang/Pluto/Pick-random-element
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pick-random-element/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Pisano-period b/Lang/Pluto/Pisano-period
deleted file mode 120000
index 377c8913e0..0000000000
--- a/Lang/Pluto/Pisano-period
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pisano-period/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Pointers-and-references b/Lang/Pluto/Pointers-and-references
deleted file mode 120000
index e2ffa489f1..0000000000
--- a/Lang/Pluto/Pointers-and-references
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pointers-and-references/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Polynomial-long-division b/Lang/Pluto/Polynomial-long-division
deleted file mode 120000
index feb0f9bb3e..0000000000
--- a/Lang/Pluto/Polynomial-long-division
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Polynomial-long-division/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Polynomial-regression b/Lang/Pluto/Polynomial-regression
deleted file mode 120000
index 11b7492061..0000000000
--- a/Lang/Pluto/Polynomial-regression
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Polynomial-regression/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Population-count b/Lang/Pluto/Population-count
deleted file mode 120000
index c275fa8665..0000000000
--- a/Lang/Pluto/Population-count
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Population-count/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Power-set b/Lang/Pluto/Power-set
deleted file mode 120000
index 72362c1ec0..0000000000
--- a/Lang/Pluto/Power-set
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Power-set/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Price-fraction b/Lang/Pluto/Price-fraction
deleted file mode 120000
index 1ac1f34fe5..0000000000
--- a/Lang/Pluto/Price-fraction
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Price-fraction/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Primality-by-Wilsons-theorem b/Lang/Pluto/Primality-by-Wilsons-theorem
deleted file mode 120000
index 9b5599f64b..0000000000
--- a/Lang/Pluto/Primality-by-Wilsons-theorem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Primality-by-Wilsons-theorem/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Primality-by-trial-division b/Lang/Pluto/Primality-by-trial-division
deleted file mode 120000
index 01622c5c43..0000000000
--- a/Lang/Pluto/Primality-by-trial-division
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Primality-by-trial-division/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Prime-conspiracy b/Lang/Pluto/Prime-conspiracy
deleted file mode 120000
index fb52d53fda..0000000000
--- a/Lang/Pluto/Prime-conspiracy
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Prime-conspiracy/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Prime-decomposition b/Lang/Pluto/Prime-decomposition
deleted file mode 120000
index 3af54a0bb5..0000000000
--- a/Lang/Pluto/Prime-decomposition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Prime-decomposition/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Prime-triangle b/Lang/Pluto/Prime-triangle
deleted file mode 120000
index 9d4d789f0f..0000000000
--- a/Lang/Pluto/Prime-triangle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Prime-triangle/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Primes---allocate-descendants-to-their-ancestors b/Lang/Pluto/Primes---allocate-descendants-to-their-ancestors
deleted file mode 120000
index f8c226f8bd..0000000000
--- a/Lang/Pluto/Primes---allocate-descendants-to-their-ancestors
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Primes---allocate-descendants-to-their-ancestors/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Primorial-numbers b/Lang/Pluto/Primorial-numbers
deleted file mode 120000
index c8bd364676..0000000000
--- a/Lang/Pluto/Primorial-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Primorial-numbers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Priority-queue b/Lang/Pluto/Priority-queue
deleted file mode 120000
index ad7bed4159..0000000000
--- a/Lang/Pluto/Priority-queue
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Priority-queue/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Program-name b/Lang/Pluto/Program-name
deleted file mode 120000
index 6b084789ed..0000000000
--- a/Lang/Pluto/Program-name
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Program-name/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Program-termination b/Lang/Pluto/Program-termination
deleted file mode 120000
index 50e8764745..0000000000
--- a/Lang/Pluto/Program-termination
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Program-termination/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Proper-divisors b/Lang/Pluto/Proper-divisors
deleted file mode 120000
index 8bb1a6945e..0000000000
--- a/Lang/Pluto/Proper-divisors
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Proper-divisors/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Pseudo-random-numbers-Middle-square-method b/Lang/Pluto/Pseudo-random-numbers-Middle-square-method
deleted file mode 120000
index 13c5850baa..0000000000
--- a/Lang/Pluto/Pseudo-random-numbers-Middle-square-method
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pseudo-random-numbers-Middle-square-method/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Pseudo-random-numbers-PCG32 b/Lang/Pluto/Pseudo-random-numbers-PCG32
deleted file mode 120000
index a7591cbf7d..0000000000
--- a/Lang/Pluto/Pseudo-random-numbers-PCG32
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pseudo-random-numbers-PCG32/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Pseudo-random-numbers-Splitmix64 b/Lang/Pluto/Pseudo-random-numbers-Splitmix64
deleted file mode 120000
index 5899b47f2e..0000000000
--- a/Lang/Pluto/Pseudo-random-numbers-Splitmix64
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pseudo-random-numbers-Splitmix64/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Pythagoras-tree b/Lang/Pluto/Pythagoras-tree
deleted file mode 120000
index 08b1af9c83..0000000000
--- a/Lang/Pluto/Pythagoras-tree
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pythagoras-tree/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Pythagorean-triples b/Lang/Pluto/Pythagorean-triples
deleted file mode 120000
index 8be426ea15..0000000000
--- a/Lang/Pluto/Pythagorean-triples
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pythagorean-triples/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/QR-decomposition b/Lang/Pluto/QR-decomposition
deleted file mode 120000
index 6d72ede0a4..0000000000
--- a/Lang/Pluto/QR-decomposition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/QR-decomposition/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Queue-Definition b/Lang/Pluto/Queue-Definition
deleted file mode 120000
index 8cf42a0b6a..0000000000
--- a/Lang/Pluto/Queue-Definition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Queue-Definition/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Queue-Usage b/Lang/Pluto/Queue-Usage
deleted file mode 120000
index 6d7d7a3b25..0000000000
--- a/Lang/Pluto/Queue-Usage
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Queue-Usage/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Quoting-constructs b/Lang/Pluto/Quoting-constructs
deleted file mode 120000
index 21c1cfccbd..0000000000
--- a/Lang/Pluto/Quoting-constructs
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Quoting-constructs/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/RIPEMD-160 b/Lang/Pluto/RIPEMD-160
deleted file mode 120000
index 18207c76aa..0000000000
--- a/Lang/Pluto/RIPEMD-160
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/RIPEMD-160/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/RPG-attributes-generator b/Lang/Pluto/RPG-attributes-generator
deleted file mode 120000
index 94703dd51c..0000000000
--- a/Lang/Pluto/RPG-attributes-generator
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/RPG-attributes-generator/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/RSA-code b/Lang/Pluto/RSA-code
deleted file mode 120000
index fa27ed3ec1..0000000000
--- a/Lang/Pluto/RSA-code
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/RSA-code/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Ramanujans-constant b/Lang/Pluto/Ramanujans-constant
deleted file mode 120000
index c98dc7a621..0000000000
--- a/Lang/Pluto/Ramanujans-constant
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ramanujans-constant/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Ramer-Douglas-Peucker-line-simplification b/Lang/Pluto/Ramer-Douglas-Peucker-line-simplification
deleted file mode 120000
index f3927eff81..0000000000
--- a/Lang/Pluto/Ramer-Douglas-Peucker-line-simplification
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ramer-Douglas-Peucker-line-simplification/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Random-number-generator-device- b/Lang/Pluto/Random-number-generator-device-
deleted file mode 120000
index 6f23d7dfa7..0000000000
--- a/Lang/Pluto/Random-number-generator-device-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Random-number-generator-device-/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Random-numbers b/Lang/Pluto/Random-numbers
deleted file mode 120000
index 7bda811b12..0000000000
--- a/Lang/Pluto/Random-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Random-numbers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Range-expansion b/Lang/Pluto/Range-expansion
deleted file mode 120000
index c486f1e65b..0000000000
--- a/Lang/Pluto/Range-expansion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Range-expansion/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Range-extraction b/Lang/Pluto/Range-extraction
deleted file mode 120000
index c2738db56f..0000000000
--- a/Lang/Pluto/Range-extraction
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Range-extraction/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Rare-numbers b/Lang/Pluto/Rare-numbers
deleted file mode 120000
index f80bc44b48..0000000000
--- a/Lang/Pluto/Rare-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Rare-numbers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Read-a-configuration-file b/Lang/Pluto/Read-a-configuration-file
deleted file mode 120000
index 90fb599972..0000000000
--- a/Lang/Pluto/Read-a-configuration-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Read-a-configuration-file/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Read-a-file-line-by-line b/Lang/Pluto/Read-a-file-line-by-line
deleted file mode 120000
index d35b8cfbc4..0000000000
--- a/Lang/Pluto/Read-a-file-line-by-line
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Read-a-file-line-by-line/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Read-entire-file b/Lang/Pluto/Read-entire-file
deleted file mode 120000
index f49bee994d..0000000000
--- a/Lang/Pluto/Read-entire-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Read-entire-file/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Real-constants-and-functions b/Lang/Pluto/Real-constants-and-functions
deleted file mode 120000
index 0f3f45eaa6..0000000000
--- a/Lang/Pluto/Real-constants-and-functions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Real-constants-and-functions/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Recamans-sequence b/Lang/Pluto/Recamans-sequence
deleted file mode 120000
index b47a985a96..0000000000
--- a/Lang/Pluto/Recamans-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Recamans-sequence/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Reduced-row-echelon-form b/Lang/Pluto/Reduced-row-echelon-form
deleted file mode 120000
index 8086c26ac8..0000000000
--- a/Lang/Pluto/Reduced-row-echelon-form
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Reduced-row-echelon-form/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Rename-a-file b/Lang/Pluto/Rename-a-file
deleted file mode 120000
index dd234bb854..0000000000
--- a/Lang/Pluto/Rename-a-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Rename-a-file/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Repeat b/Lang/Pluto/Repeat
deleted file mode 120000
index a6a3c03575..0000000000
--- a/Lang/Pluto/Repeat
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Repeat/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Repeat-a-string b/Lang/Pluto/Repeat-a-string
deleted file mode 120000
index 7cea8b7235..0000000000
--- a/Lang/Pluto/Repeat-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Repeat-a-string/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Repunit-primes b/Lang/Pluto/Repunit-primes
deleted file mode 120000
index 7e185e6e79..0000000000
--- a/Lang/Pluto/Repunit-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Repunit-primes/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Resistor-mesh b/Lang/Pluto/Resistor-mesh
deleted file mode 120000
index e4f455a984..0000000000
--- a/Lang/Pluto/Resistor-mesh
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Resistor-mesh/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Return-multiple-values b/Lang/Pluto/Return-multiple-values
deleted file mode 120000
index 18f6c32d09..0000000000
--- a/Lang/Pluto/Return-multiple-values
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Return-multiple-values/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Reverse-a-string b/Lang/Pluto/Reverse-a-string
deleted file mode 120000
index dc5b2e2493..0000000000
--- a/Lang/Pluto/Reverse-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Reverse-a-string/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Reverse-words-in-a-string b/Lang/Pluto/Reverse-words-in-a-string
deleted file mode 120000
index 378e6ea4b7..0000000000
--- a/Lang/Pluto/Reverse-words-in-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Reverse-words-in-a-string/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Roman-numerals-Encode b/Lang/Pluto/Roman-numerals-Encode
deleted file mode 120000
index d12a85d68f..0000000000
--- a/Lang/Pluto/Roman-numerals-Encode
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Roman-numerals-Encode/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Roots-of-a-function b/Lang/Pluto/Roots-of-a-function
deleted file mode 120000
index a5bb6f8f20..0000000000
--- a/Lang/Pluto/Roots-of-a-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Roots-of-a-function/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Roots-of-a-quadratic-function b/Lang/Pluto/Roots-of-a-quadratic-function
deleted file mode 120000
index 8e5bf4c688..0000000000
--- a/Lang/Pluto/Roots-of-a-quadratic-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Roots-of-a-quadratic-function/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Roots-of-unity b/Lang/Pluto/Roots-of-unity
deleted file mode 120000
index e0f1ada438..0000000000
--- a/Lang/Pluto/Roots-of-unity
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Roots-of-unity/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Rot-13 b/Lang/Pluto/Rot-13
deleted file mode 120000
index ca2ef70221..0000000000
--- a/Lang/Pluto/Rot-13
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Rot-13/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Runge-Kutta-method b/Lang/Pluto/Runge-Kutta-method
deleted file mode 120000
index 1f412f01e7..0000000000
--- a/Lang/Pluto/Runge-Kutta-method
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Runge-Kutta-method/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/SEDOLs b/Lang/Pluto/SEDOLs
deleted file mode 120000
index 4a14938cfb..0000000000
--- a/Lang/Pluto/SEDOLs
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/SEDOLs/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/SHA-1 b/Lang/Pluto/SHA-1
deleted file mode 120000
index b2417e97b6..0000000000
--- a/Lang/Pluto/SHA-1
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/SHA-1/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/SHA-256 b/Lang/Pluto/SHA-256
deleted file mode 120000
index 69f9d4a47c..0000000000
--- a/Lang/Pluto/SHA-256
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/SHA-256/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Safe-primes-and-unsafe-primes b/Lang/Pluto/Safe-primes-and-unsafe-primes
deleted file mode 120000
index 0dd190920e..0000000000
--- a/Lang/Pluto/Safe-primes-and-unsafe-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Safe-primes-and-unsafe-primes/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Sailors-coconuts-and-a-monkey-problem b/Lang/Pluto/Sailors-coconuts-and-a-monkey-problem
deleted file mode 120000
index 29da882738..0000000000
--- a/Lang/Pluto/Sailors-coconuts-and-a-monkey-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sailors-coconuts-and-a-monkey-problem/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Search-a-list b/Lang/Pluto/Search-a-list
deleted file mode 120000
index 7284791eca..0000000000
--- a/Lang/Pluto/Search-a-list
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Search-a-list/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Search-a-list-of-records b/Lang/Pluto/Search-a-list-of-records
deleted file mode 120000
index 53af5de4bf..0000000000
--- a/Lang/Pluto/Search-a-list-of-records
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Search-a-list-of-records/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Selectively-replace-multiple-instances-of-a-character-within-a-string b/Lang/Pluto/Selectively-replace-multiple-instances-of-a-character-within-a-string
deleted file mode 120000
index b494f69bf0..0000000000
--- a/Lang/Pluto/Selectively-replace-multiple-instances-of-a-character-within-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Selectively-replace-multiple-instances-of-a-character-within-a-string/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Self-numbers b/Lang/Pluto/Self-numbers
deleted file mode 120000
index 6ddaee76e3..0000000000
--- a/Lang/Pluto/Self-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Self-numbers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Semiprime b/Lang/Pluto/Semiprime
deleted file mode 120000
index 8587fb750c..0000000000
--- a/Lang/Pluto/Semiprime
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Semiprime/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Semordnilap b/Lang/Pluto/Semordnilap
deleted file mode 120000
index 92f96e5b0c..0000000000
--- a/Lang/Pluto/Semordnilap
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Semordnilap/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Sequence-of-non-squares b/Lang/Pluto/Sequence-of-non-squares
deleted file mode 120000
index ffd6b85122..0000000000
--- a/Lang/Pluto/Sequence-of-non-squares
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sequence-of-non-squares/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Sequence-of-primes-by-trial-division b/Lang/Pluto/Sequence-of-primes-by-trial-division
deleted file mode 120000
index 0a541cb28c..0000000000
--- a/Lang/Pluto/Sequence-of-primes-by-trial-division
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sequence-of-primes-by-trial-division/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Sequence-of-primorial-primes b/Lang/Pluto/Sequence-of-primorial-primes
deleted file mode 120000
index cc2120f894..0000000000
--- a/Lang/Pluto/Sequence-of-primorial-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sequence-of-primorial-primes/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/Pluto/Sequence:-smallest-number-with-exactly-n-divisors
deleted file mode 120000
index ac5bc99ced..0000000000
--- a/Lang/Pluto/Sequence:-smallest-number-with-exactly-n-divisors
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sequence:-smallest-number-with-exactly-n-divisors/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Set b/Lang/Pluto/Set
deleted file mode 120000
index 9bbe04e32f..0000000000
--- a/Lang/Pluto/Set
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Set/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Set-consolidation b/Lang/Pluto/Set-consolidation
deleted file mode 120000
index af203f8560..0000000000
--- a/Lang/Pluto/Set-consolidation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Set-consolidation/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Set-of-real-numbers b/Lang/Pluto/Set-of-real-numbers
deleted file mode 120000
index 80d4d8a2d1..0000000000
--- a/Lang/Pluto/Set-of-real-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Set-of-real-numbers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Set-right-adjacent-bits b/Lang/Pluto/Set-right-adjacent-bits
deleted file mode 120000
index 7f599e0236..0000000000
--- a/Lang/Pluto/Set-right-adjacent-bits
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Set-right-adjacent-bits/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Sexy-primes b/Lang/Pluto/Sexy-primes
deleted file mode 120000
index 2ab94558b6..0000000000
--- a/Lang/Pluto/Sexy-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sexy-primes/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Shoelace-formula-for-polygonal-area b/Lang/Pluto/Shoelace-formula-for-polygonal-area
deleted file mode 120000
index beae637d82..0000000000
--- a/Lang/Pluto/Shoelace-formula-for-polygonal-area
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Shoelace-formula-for-polygonal-area/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Show-ASCII-table b/Lang/Pluto/Show-ASCII-table
deleted file mode 120000
index cac0997662..0000000000
--- a/Lang/Pluto/Show-ASCII-table
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Show-ASCII-table/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Sierpinski-arrowhead-curve b/Lang/Pluto/Sierpinski-arrowhead-curve
deleted file mode 120000
index 18f606e730..0000000000
--- a/Lang/Pluto/Sierpinski-arrowhead-curve
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sierpinski-arrowhead-curve/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Sierpinski-square-curve b/Lang/Pluto/Sierpinski-square-curve
deleted file mode 120000
index 35f7d5150e..0000000000
--- a/Lang/Pluto/Sierpinski-square-curve
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sierpinski-square-curve/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Sierpinski-triangle-Graphical b/Lang/Pluto/Sierpinski-triangle-Graphical
deleted file mode 120000
index 008a1742b1..0000000000
--- a/Lang/Pluto/Sierpinski-triangle-Graphical
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sierpinski-triangle-Graphical/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Simple-turtle-graphics b/Lang/Pluto/Simple-turtle-graphics
deleted file mode 120000
index 0cf7b3ba67..0000000000
--- a/Lang/Pluto/Simple-turtle-graphics
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Simple-turtle-graphics/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Singleton b/Lang/Pluto/Singleton
deleted file mode 120000
index b0a6a2c730..0000000000
--- a/Lang/Pluto/Singleton
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Singleton/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Singly-linked-list-Element-definition b/Lang/Pluto/Singly-linked-list-Element-definition
deleted file mode 120000
index 1f46e7b961..0000000000
--- a/Lang/Pluto/Singly-linked-list-Element-definition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Singly-linked-list-Element-definition/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Singly-linked-list-Element-insertion b/Lang/Pluto/Singly-linked-list-Element-insertion
deleted file mode 120000
index 27b69c63f5..0000000000
--- a/Lang/Pluto/Singly-linked-list-Element-insertion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Singly-linked-list-Element-insertion/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Singly-linked-list-Traversal b/Lang/Pluto/Singly-linked-list-Traversal
deleted file mode 120000
index a9f1239636..0000000000
--- a/Lang/Pluto/Singly-linked-list-Traversal
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Singly-linked-list-Traversal/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Sleep b/Lang/Pluto/Sleep
deleted file mode 120000
index fe338781ff..0000000000
--- a/Lang/Pluto/Sleep
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sleep/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Sleeping-Beauty-problem b/Lang/Pluto/Sleeping-Beauty-problem
deleted file mode 120000
index 34cc3d8c3d..0000000000
--- a/Lang/Pluto/Sleeping-Beauty-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sleeping-Beauty-problem/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Smallest-number-k-such-that-k+2^m-is-composite-for-all-m-less-than-k b/Lang/Pluto/Smallest-number-k-such-that-k+2^m-is-composite-for-all-m-less-than-k
deleted file mode 120000
index b69fb666de..0000000000
--- a/Lang/Pluto/Smallest-number-k-such-that-k+2^m-is-composite-for-all-m-less-than-k
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Smallest-number-k-such-that-k+2^m-is-composite-for-all-m-less-than-k/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Smarandache-Wellin-primes b/Lang/Pluto/Smarandache-Wellin-primes
deleted file mode 120000
index 44308127bf..0000000000
--- a/Lang/Pluto/Smarandache-Wellin-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Smarandache-Wellin-primes/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Smarandache-prime-digital-sequence b/Lang/Pluto/Smarandache-prime-digital-sequence
deleted file mode 120000
index c1bae0f65e..0000000000
--- a/Lang/Pluto/Smarandache-prime-digital-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Smarandache-prime-digital-sequence/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Sockets b/Lang/Pluto/Sockets
deleted file mode 120000
index 50dbde578c..0000000000
--- a/Lang/Pluto/Sockets
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sockets/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Sokoban b/Lang/Pluto/Sokoban
deleted file mode 120000
index 542f29a2fd..0000000000
--- a/Lang/Pluto/Sokoban
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sokoban/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Soloways-recurring-rainfall b/Lang/Pluto/Soloways-recurring-rainfall
deleted file mode 120000
index 3292890eaf..0000000000
--- a/Lang/Pluto/Soloways-recurring-rainfall
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Soloways-recurring-rainfall/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Solve-a-Numbrix-puzzle b/Lang/Pluto/Solve-a-Numbrix-puzzle
deleted file mode 120000
index a0c76a1703..0000000000
--- a/Lang/Pluto/Solve-a-Numbrix-puzzle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Solve-a-Numbrix-puzzle/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Sort-a-list-of-object-identifiers b/Lang/Pluto/Sort-a-list-of-object-identifiers
deleted file mode 120000
index 243d019eeb..0000000000
--- a/Lang/Pluto/Sort-a-list-of-object-identifiers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-a-list-of-object-identifiers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Sort-an-array-of-composite-structures b/Lang/Pluto/Sort-an-array-of-composite-structures
deleted file mode 120000
index 11ca6daaca..0000000000
--- a/Lang/Pluto/Sort-an-array-of-composite-structures
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-an-array-of-composite-structures/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Sort-an-integer-array b/Lang/Pluto/Sort-an-integer-array
deleted file mode 120000
index 43fcfc8222..0000000000
--- a/Lang/Pluto/Sort-an-integer-array
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-an-integer-array/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Sort-disjoint-sublist b/Lang/Pluto/Sort-disjoint-sublist
deleted file mode 120000
index 43eaf99d0d..0000000000
--- a/Lang/Pluto/Sort-disjoint-sublist
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-disjoint-sublist/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Sort-numbers-lexicographically b/Lang/Pluto/Sort-numbers-lexicographically
deleted file mode 120000
index e54ac23b46..0000000000
--- a/Lang/Pluto/Sort-numbers-lexicographically
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-numbers-lexicographically/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Sort-using-a-custom-comparator b/Lang/Pluto/Sort-using-a-custom-comparator
deleted file mode 120000
index 017bd9f879..0000000000
--- a/Lang/Pluto/Sort-using-a-custom-comparator
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-using-a-custom-comparator/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Sorting-algorithms-Bead-sort b/Lang/Pluto/Sorting-algorithms-Bead-sort
deleted file mode 120000
index 732611b770..0000000000
--- a/Lang/Pluto/Sorting-algorithms-Bead-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Bead-sort/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Sorting-algorithms-Bogosort b/Lang/Pluto/Sorting-algorithms-Bogosort
deleted file mode 120000
index 2902c3ee3a..0000000000
--- a/Lang/Pluto/Sorting-algorithms-Bogosort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Bogosort/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Sorting-algorithms-Bubble-sort b/Lang/Pluto/Sorting-algorithms-Bubble-sort
deleted file mode 120000
index c4cdca7c13..0000000000
--- a/Lang/Pluto/Sorting-algorithms-Bubble-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Bubble-sort/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Sorting-algorithms-Cocktail-sort b/Lang/Pluto/Sorting-algorithms-Cocktail-sort
deleted file mode 120000
index 468360189f..0000000000
--- a/Lang/Pluto/Sorting-algorithms-Cocktail-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Cocktail-sort/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Sorting-algorithms-Cocktail-sort-with-shifting-bounds b/Lang/Pluto/Sorting-algorithms-Cocktail-sort-with-shifting-bounds
deleted file mode 120000
index c01e910e78..0000000000
--- a/Lang/Pluto/Sorting-algorithms-Cocktail-sort-with-shifting-bounds
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Cocktail-sort-with-shifting-bounds/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Sorting-algorithms-Comb-sort b/Lang/Pluto/Sorting-algorithms-Comb-sort
deleted file mode 120000
index b6f9e143fc..0000000000
--- a/Lang/Pluto/Sorting-algorithms-Comb-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Comb-sort/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Sorting-algorithms-Counting-sort b/Lang/Pluto/Sorting-algorithms-Counting-sort
deleted file mode 120000
index d4c1acd3d5..0000000000
--- a/Lang/Pluto/Sorting-algorithms-Counting-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Counting-sort/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Sorting-algorithms-Gnome-sort b/Lang/Pluto/Sorting-algorithms-Gnome-sort
deleted file mode 120000
index 77a2f09b42..0000000000
--- a/Lang/Pluto/Sorting-algorithms-Gnome-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Gnome-sort/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Sorting-algorithms-Heapsort b/Lang/Pluto/Sorting-algorithms-Heapsort
deleted file mode 120000
index 4be9369490..0000000000
--- a/Lang/Pluto/Sorting-algorithms-Heapsort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Heapsort/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Sorting-algorithms-Insertion-sort b/Lang/Pluto/Sorting-algorithms-Insertion-sort
deleted file mode 120000
index 2f3123eb14..0000000000
--- a/Lang/Pluto/Sorting-algorithms-Insertion-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Insertion-sort/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Sorting-algorithms-Merge-sort b/Lang/Pluto/Sorting-algorithms-Merge-sort
deleted file mode 120000
index e46aac85a3..0000000000
--- a/Lang/Pluto/Sorting-algorithms-Merge-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Merge-sort/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Sorting-algorithms-Pancake-sort b/Lang/Pluto/Sorting-algorithms-Pancake-sort
deleted file mode 120000
index 857f218dec..0000000000
--- a/Lang/Pluto/Sorting-algorithms-Pancake-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Pancake-sort/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Sorting-algorithms-Patience-sort b/Lang/Pluto/Sorting-algorithms-Patience-sort
deleted file mode 120000
index bf8f7e3856..0000000000
--- a/Lang/Pluto/Sorting-algorithms-Patience-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Patience-sort/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Sorting-algorithms-Permutation-sort b/Lang/Pluto/Sorting-algorithms-Permutation-sort
deleted file mode 120000
index a892e63103..0000000000
--- a/Lang/Pluto/Sorting-algorithms-Permutation-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Permutation-sort/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Sorting-algorithms-Quicksort b/Lang/Pluto/Sorting-algorithms-Quicksort
deleted file mode 120000
index dcb1016c3c..0000000000
--- a/Lang/Pluto/Sorting-algorithms-Quicksort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Quicksort/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Sorting-algorithms-Radix-sort b/Lang/Pluto/Sorting-algorithms-Radix-sort
deleted file mode 120000
index 2aa1cd2582..0000000000
--- a/Lang/Pluto/Sorting-algorithms-Radix-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Radix-sort/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Sorting-algorithms-Selection-sort b/Lang/Pluto/Sorting-algorithms-Selection-sort
deleted file mode 120000
index 7993c7d392..0000000000
--- a/Lang/Pluto/Sorting-algorithms-Selection-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Selection-sort/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Sorting-algorithms-Shell-sort b/Lang/Pluto/Sorting-algorithms-Shell-sort
deleted file mode 120000
index aa83ab75ed..0000000000
--- a/Lang/Pluto/Sorting-algorithms-Shell-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Shell-sort/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Sorting-algorithms-Sleep-sort b/Lang/Pluto/Sorting-algorithms-Sleep-sort
deleted file mode 120000
index 2b4156ef57..0000000000
--- a/Lang/Pluto/Sorting-algorithms-Sleep-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Sleep-sort/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Sorting-algorithms-Stooge-sort b/Lang/Pluto/Sorting-algorithms-Stooge-sort
deleted file mode 120000
index adcd800531..0000000000
--- a/Lang/Pluto/Sorting-algorithms-Stooge-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Stooge-sort/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Sorting-algorithms-Strand-sort b/Lang/Pluto/Sorting-algorithms-Strand-sort
deleted file mode 120000
index a3576da55b..0000000000
--- a/Lang/Pluto/Sorting-algorithms-Strand-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Strand-sort/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Sparkline-in-unicode b/Lang/Pluto/Sparkline-in-unicode
deleted file mode 120000
index d4375bf194..0000000000
--- a/Lang/Pluto/Sparkline-in-unicode
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sparkline-in-unicode/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Spelling-of-ordinal-numbers b/Lang/Pluto/Spelling-of-ordinal-numbers
deleted file mode 120000
index 707c9a5de7..0000000000
--- a/Lang/Pluto/Spelling-of-ordinal-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Spelling-of-ordinal-numbers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Spiral-matrix b/Lang/Pluto/Spiral-matrix
deleted file mode 120000
index ab63b333d6..0000000000
--- a/Lang/Pluto/Spiral-matrix
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Spiral-matrix/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Square-but-not-cube b/Lang/Pluto/Square-but-not-cube
deleted file mode 120000
index 93ef364cf3..0000000000
--- a/Lang/Pluto/Square-but-not-cube
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Square-but-not-cube/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Square-free-integers b/Lang/Pluto/Square-free-integers
deleted file mode 120000
index bd620174b2..0000000000
--- a/Lang/Pluto/Square-free-integers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Square-free-integers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Stack b/Lang/Pluto/Stack
deleted file mode 120000
index b73a91dd58..0000000000
--- a/Lang/Pluto/Stack
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Stack/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Start-from-a-main-routine b/Lang/Pluto/Start-from-a-main-routine
deleted file mode 120000
index cbf12fbc14..0000000000
--- a/Lang/Pluto/Start-from-a-main-routine
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Start-from-a-main-routine/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Statistics-Basic b/Lang/Pluto/Statistics-Basic
deleted file mode 120000
index 4f94a6e6d7..0000000000
--- a/Lang/Pluto/Statistics-Basic
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Statistics-Basic/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Statistics-Normal-distribution b/Lang/Pluto/Statistics-Normal-distribution
deleted file mode 120000
index bc2d3ac3d4..0000000000
--- a/Lang/Pluto/Statistics-Normal-distribution
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Statistics-Normal-distribution/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Stem-and-leaf-plot b/Lang/Pluto/Stem-and-leaf-plot
deleted file mode 120000
index cc3ba5ca9e..0000000000
--- a/Lang/Pluto/Stem-and-leaf-plot
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Stem-and-leaf-plot/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Stirling-numbers-of-the-first-kind b/Lang/Pluto/Stirling-numbers-of-the-first-kind
deleted file mode 120000
index 0c81546d18..0000000000
--- a/Lang/Pluto/Stirling-numbers-of-the-first-kind
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Stirling-numbers-of-the-first-kind/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Stirling-numbers-of-the-second-kind b/Lang/Pluto/Stirling-numbers-of-the-second-kind
deleted file mode 120000
index 05d2a235b3..0000000000
--- a/Lang/Pluto/Stirling-numbers-of-the-second-kind
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Stirling-numbers-of-the-second-kind/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Straddling-checkerboard b/Lang/Pluto/Straddling-checkerboard
deleted file mode 120000
index d74538b05d..0000000000
--- a/Lang/Pluto/Straddling-checkerboard
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Straddling-checkerboard/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Strassens-algorithm b/Lang/Pluto/Strassens-algorithm
deleted file mode 120000
index 79ee4e726f..0000000000
--- a/Lang/Pluto/Strassens-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strassens-algorithm/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/String-append b/Lang/Pluto/String-append
deleted file mode 120000
index e24995b130..0000000000
--- a/Lang/Pluto/String-append
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-append/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/String-interpolation-included- b/Lang/Pluto/String-interpolation-included-
deleted file mode 120000
index 7953b3790b..0000000000
--- a/Lang/Pluto/String-interpolation-included-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-interpolation-included-/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/String-length b/Lang/Pluto/String-length
deleted file mode 120000
index 9313ae7886..0000000000
--- a/Lang/Pluto/String-length
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-length/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/String-matching b/Lang/Pluto/String-matching
deleted file mode 120000
index 422a3c7f0c..0000000000
--- a/Lang/Pluto/String-matching
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-matching/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/String-prepend b/Lang/Pluto/String-prepend
deleted file mode 120000
index 84229275c1..0000000000
--- a/Lang/Pluto/String-prepend
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-prepend/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Strip-a-set-of-characters-from-a-string b/Lang/Pluto/Strip-a-set-of-characters-from-a-string
deleted file mode 120000
index 805462a850..0000000000
--- a/Lang/Pluto/Strip-a-set-of-characters-from-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strip-a-set-of-characters-from-a-string/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Strip-whitespace-from-a-string-Top-and-tail b/Lang/Pluto/Strip-whitespace-from-a-string-Top-and-tail
deleted file mode 120000
index f8b3fd3947..0000000000
--- a/Lang/Pluto/Strip-whitespace-from-a-string-Top-and-tail
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strip-whitespace-from-a-string-Top-and-tail/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Subleq b/Lang/Pluto/Subleq
deleted file mode 120000
index 100b00d22e..0000000000
--- a/Lang/Pluto/Subleq
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Subleq/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Substring b/Lang/Pluto/Substring
deleted file mode 120000
index 830ca3e467..0000000000
--- a/Lang/Pluto/Substring
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Substring/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Substring-Top-and-tail b/Lang/Pluto/Substring-Top-and-tail
deleted file mode 120000
index ac12380468..0000000000
--- a/Lang/Pluto/Substring-Top-and-tail
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Substring-Top-and-tail/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Successive-prime-differences b/Lang/Pluto/Successive-prime-differences
deleted file mode 120000
index 17a80e33ef..0000000000
--- a/Lang/Pluto/Successive-prime-differences
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Successive-prime-differences/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Sudan-function b/Lang/Pluto/Sudan-function
deleted file mode 120000
index 18faadc2cc..0000000000
--- a/Lang/Pluto/Sudan-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sudan-function/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Sudoku b/Lang/Pluto/Sudoku
deleted file mode 120000
index 0219f968ec..0000000000
--- a/Lang/Pluto/Sudoku
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sudoku/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Suffixation-of-decimal-numbers b/Lang/Pluto/Suffixation-of-decimal-numbers
deleted file mode 120000
index c7008ba8db..0000000000
--- a/Lang/Pluto/Suffixation-of-decimal-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Suffixation-of-decimal-numbers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Sum-and-product-of-an-array b/Lang/Pluto/Sum-and-product-of-an-array
deleted file mode 120000
index de37da7c3f..0000000000
--- a/Lang/Pluto/Sum-and-product-of-an-array
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sum-and-product-of-an-array/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Sum-and-product-puzzle b/Lang/Pluto/Sum-and-product-puzzle
deleted file mode 120000
index b5887c9a13..0000000000
--- a/Lang/Pluto/Sum-and-product-puzzle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sum-and-product-puzzle/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Sum-digits-of-an-integer b/Lang/Pluto/Sum-digits-of-an-integer
deleted file mode 120000
index 0c6a6782ed..0000000000
--- a/Lang/Pluto/Sum-digits-of-an-integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sum-digits-of-an-integer/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Sum-multiples-of-3-and-5 b/Lang/Pluto/Sum-multiples-of-3-and-5
deleted file mode 120000
index 7476a45c41..0000000000
--- a/Lang/Pluto/Sum-multiples-of-3-and-5
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sum-multiples-of-3-and-5/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Sum-of-elements-below-main-diagonal-of-matrix b/Lang/Pluto/Sum-of-elements-below-main-diagonal-of-matrix
deleted file mode 120000
index 45a9f51475..0000000000
--- a/Lang/Pluto/Sum-of-elements-below-main-diagonal-of-matrix
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sum-of-elements-below-main-diagonal-of-matrix/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Summarize-and-say-sequence b/Lang/Pluto/Summarize-and-say-sequence
deleted file mode 120000
index fc93ce6bcc..0000000000
--- a/Lang/Pluto/Summarize-and-say-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Summarize-and-say-sequence/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Summarize-primes b/Lang/Pluto/Summarize-primes
deleted file mode 120000
index ecbdeed375..0000000000
--- a/Lang/Pluto/Summarize-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Summarize-primes/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Super-d-numbers b/Lang/Pluto/Super-d-numbers
deleted file mode 120000
index f56d2824e5..0000000000
--- a/Lang/Pluto/Super-d-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Super-d-numbers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Superellipse b/Lang/Pluto/Superellipse
deleted file mode 120000
index 71cba61449..0000000000
--- a/Lang/Pluto/Superellipse
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Superellipse/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Sylvesters-sequence b/Lang/Pluto/Sylvesters-sequence
deleted file mode 120000
index 27749333cd..0000000000
--- a/Lang/Pluto/Sylvesters-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sylvesters-sequence/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Symmetric-difference b/Lang/Pluto/Symmetric-difference
deleted file mode 120000
index 09ce1d13b8..0000000000
--- a/Lang/Pluto/Symmetric-difference
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Symmetric-difference/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Synchronous-concurrency b/Lang/Pluto/Synchronous-concurrency
deleted file mode 120000
index 4eb3a63418..0000000000
--- a/Lang/Pluto/Synchronous-concurrency
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Synchronous-concurrency/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/System-time b/Lang/Pluto/System-time
deleted file mode 120000
index 8575dc8b3a..0000000000
--- a/Lang/Pluto/System-time
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/System-time/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Tau-function b/Lang/Pluto/Tau-function
deleted file mode 120000
index 03b50006f6..0000000000
--- a/Lang/Pluto/Tau-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tau-function/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Tau-number b/Lang/Pluto/Tau-number
deleted file mode 120000
index 532021c510..0000000000
--- a/Lang/Pluto/Tau-number
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tau-number/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Temperature-conversion b/Lang/Pluto/Temperature-conversion
deleted file mode 120000
index dfda68998c..0000000000
--- a/Lang/Pluto/Temperature-conversion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Temperature-conversion/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Terminal-control-Clear-the-screen b/Lang/Pluto/Terminal-control-Clear-the-screen
deleted file mode 120000
index edabc9ce73..0000000000
--- a/Lang/Pluto/Terminal-control-Clear-the-screen
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Terminal-control-Clear-the-screen/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Terminal-control-Coloured-text b/Lang/Pluto/Terminal-control-Coloured-text
deleted file mode 120000
index 378909157d..0000000000
--- a/Lang/Pluto/Terminal-control-Coloured-text
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Terminal-control-Coloured-text/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Terminal-control-Cursor-movement b/Lang/Pluto/Terminal-control-Cursor-movement
deleted file mode 120000
index bf8c8572a2..0000000000
--- a/Lang/Pluto/Terminal-control-Cursor-movement
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Terminal-control-Cursor-movement/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Terminal-control-Cursor-positioning b/Lang/Pluto/Terminal-control-Cursor-positioning
deleted file mode 120000
index feeca5cd4b..0000000000
--- a/Lang/Pluto/Terminal-control-Cursor-positioning
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Terminal-control-Cursor-positioning/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Terminal-control-Dimensions b/Lang/Pluto/Terminal-control-Dimensions
deleted file mode 120000
index 79b01b1a8a..0000000000
--- a/Lang/Pluto/Terminal-control-Dimensions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Terminal-control-Dimensions/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Terminal-control-Display-an-extended-character b/Lang/Pluto/Terminal-control-Display-an-extended-character
deleted file mode 120000
index d9f4ec60f5..0000000000
--- a/Lang/Pluto/Terminal-control-Display-an-extended-character
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Terminal-control-Display-an-extended-character/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Terminal-control-Hiding-the-cursor b/Lang/Pluto/Terminal-control-Hiding-the-cursor
deleted file mode 120000
index 5126fbbc31..0000000000
--- a/Lang/Pluto/Terminal-control-Hiding-the-cursor
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Terminal-control-Hiding-the-cursor/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Terminal-control-Inverse-video b/Lang/Pluto/Terminal-control-Inverse-video
deleted file mode 120000
index a011de6856..0000000000
--- a/Lang/Pluto/Terminal-control-Inverse-video
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Terminal-control-Inverse-video/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Terminal-control-Preserve-screen b/Lang/Pluto/Terminal-control-Preserve-screen
deleted file mode 120000
index 4985e385ae..0000000000
--- a/Lang/Pluto/Terminal-control-Preserve-screen
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Terminal-control-Preserve-screen/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Terminal-control-Ringing-the-terminal-bell b/Lang/Pluto/Terminal-control-Ringing-the-terminal-bell
deleted file mode 120000
index c14ff1f9fd..0000000000
--- a/Lang/Pluto/Terminal-control-Ringing-the-terminal-bell
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Terminal-control-Ringing-the-terminal-bell/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Terminal-control-Unicode-output b/Lang/Pluto/Terminal-control-Unicode-output
deleted file mode 120000
index c67e68f15d..0000000000
--- a/Lang/Pluto/Terminal-control-Unicode-output
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Terminal-control-Unicode-output/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Ternary-logic b/Lang/Pluto/Ternary-logic
deleted file mode 120000
index ca522a2f56..0000000000
--- a/Lang/Pluto/Ternary-logic
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ternary-logic/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Test-integerness b/Lang/Pluto/Test-integerness
deleted file mode 120000
index 9a3717f805..0000000000
--- a/Lang/Pluto/Test-integerness
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Test-integerness/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Textonyms b/Lang/Pluto/Textonyms
deleted file mode 120000
index 4c3ea903b1..0000000000
--- a/Lang/Pluto/Textonyms
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Textonyms/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/The-Name-Game b/Lang/Pluto/The-Name-Game
deleted file mode 120000
index de7bc541a3..0000000000
--- a/Lang/Pluto/The-Name-Game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/The-Name-Game/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/The-Twelve-Days-of-Christmas b/Lang/Pluto/The-Twelve-Days-of-Christmas
deleted file mode 120000
index 0c2a346005..0000000000
--- a/Lang/Pluto/The-Twelve-Days-of-Christmas
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/The-Twelve-Days-of-Christmas/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/The-sieve-of-Sundaram b/Lang/Pluto/The-sieve-of-Sundaram
deleted file mode 120000
index bf60d24d46..0000000000
--- a/Lang/Pluto/The-sieve-of-Sundaram
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/The-sieve-of-Sundaram/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Thue-Morse b/Lang/Pluto/Thue-Morse
deleted file mode 120000
index b1a06a67e8..0000000000
--- a/Lang/Pluto/Thue-Morse
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Thue-Morse/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Time-a-function b/Lang/Pluto/Time-a-function
deleted file mode 120000
index 1ca7d0a7b7..0000000000
--- a/Lang/Pluto/Time-a-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Time-a-function/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Tokenize-a-string-with-escaping b/Lang/Pluto/Tokenize-a-string-with-escaping
deleted file mode 120000
index ba51452013..0000000000
--- a/Lang/Pluto/Tokenize-a-string-with-escaping
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tokenize-a-string-with-escaping/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Top-rank-per-group b/Lang/Pluto/Top-rank-per-group
deleted file mode 120000
index c27cb54f5d..0000000000
--- a/Lang/Pluto/Top-rank-per-group
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Top-rank-per-group/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Total-circles-area b/Lang/Pluto/Total-circles-area
deleted file mode 120000
index 2f856ad28d..0000000000
--- a/Lang/Pluto/Total-circles-area
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Total-circles-area/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Totient-function b/Lang/Pluto/Totient-function
deleted file mode 120000
index 73b5eb6381..0000000000
--- a/Lang/Pluto/Totient-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Totient-function/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Towers-of-Hanoi b/Lang/Pluto/Towers-of-Hanoi
deleted file mode 120000
index 9b1428dcf0..0000000000
--- a/Lang/Pluto/Towers-of-Hanoi
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Towers-of-Hanoi/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Trabb-Pardo-Knuth-algorithm b/Lang/Pluto/Trabb-Pardo-Knuth-algorithm
deleted file mode 120000
index e85f9f54de..0000000000
--- a/Lang/Pluto/Trabb-Pardo-Knuth-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Trabb-Pardo-Knuth-algorithm/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Transliterate-English-text-using-the-Greek-alphabet b/Lang/Pluto/Transliterate-English-text-using-the-Greek-alphabet
deleted file mode 120000
index 329d1e52f1..0000000000
--- a/Lang/Pluto/Transliterate-English-text-using-the-Greek-alphabet
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Transliterate-English-text-using-the-Greek-alphabet/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Trigonometric-functions b/Lang/Pluto/Trigonometric-functions
deleted file mode 120000
index 8bcbebbd97..0000000000
--- a/Lang/Pluto/Trigonometric-functions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Trigonometric-functions/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Truncatable-primes b/Lang/Pluto/Truncatable-primes
deleted file mode 120000
index e57c3ab40f..0000000000
--- a/Lang/Pluto/Truncatable-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Truncatable-primes/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Truncate-a-file b/Lang/Pluto/Truncate-a-file
deleted file mode 120000
index f472b828c2..0000000000
--- a/Lang/Pluto/Truncate-a-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Truncate-a-file/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Truth-table b/Lang/Pluto/Truth-table
deleted file mode 120000
index e15e65e09d..0000000000
--- a/Lang/Pluto/Truth-table
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Truth-table/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Twelve-statements b/Lang/Pluto/Twelve-statements
deleted file mode 120000
index f003bdd498..0000000000
--- a/Lang/Pluto/Twelve-statements
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Twelve-statements/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Twos-complement b/Lang/Pluto/Twos-complement
deleted file mode 120000
index 5830145b21..0000000000
--- a/Lang/Pluto/Twos-complement
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Twos-complement/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/UPC b/Lang/Pluto/UPC
deleted file mode 120000
index 477e69b6c6..0000000000
--- a/Lang/Pluto/UPC
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/UPC/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Ultra-useful-primes b/Lang/Pluto/Ultra-useful-primes
deleted file mode 120000
index 5db52360c1..0000000000
--- a/Lang/Pluto/Ultra-useful-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ultra-useful-primes/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Unbias-a-random-generator b/Lang/Pluto/Unbias-a-random-generator
deleted file mode 120000
index 14b505ac5e..0000000000
--- a/Lang/Pluto/Unbias-a-random-generator
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Unbias-a-random-generator/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Unicode-strings b/Lang/Pluto/Unicode-strings
deleted file mode 120000
index 482c486148..0000000000
--- a/Lang/Pluto/Unicode-strings
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Unicode-strings/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Unprimeable-numbers b/Lang/Pluto/Unprimeable-numbers
deleted file mode 120000
index ec55975821..0000000000
--- a/Lang/Pluto/Unprimeable-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Unprimeable-numbers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/User-input-Text b/Lang/Pluto/User-input-Text
deleted file mode 120000
index 6c3afd2860..0000000000
--- a/Lang/Pluto/User-input-Text
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/User-input-Text/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Vampire-number b/Lang/Pluto/Vampire-number
deleted file mode 120000
index 39b76c4ae2..0000000000
--- a/Lang/Pluto/Vampire-number
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Vampire-number/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Van-Eck-sequence b/Lang/Pluto/Van-Eck-sequence
deleted file mode 120000
index d053bbc892..0000000000
--- a/Lang/Pluto/Van-Eck-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Van-Eck-sequence/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Van-der-Corput-sequence b/Lang/Pluto/Van-der-Corput-sequence
deleted file mode 120000
index e6ce56ddef..0000000000
--- a/Lang/Pluto/Van-der-Corput-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Van-der-Corput-sequence/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Variable-declaration-reset b/Lang/Pluto/Variable-declaration-reset
deleted file mode 120000
index 26738839ca..0000000000
--- a/Lang/Pluto/Variable-declaration-reset
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Variable-declaration-reset/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Variable-length-quantity b/Lang/Pluto/Variable-length-quantity
deleted file mode 120000
index 3f78793bbd..0000000000
--- a/Lang/Pluto/Variable-length-quantity
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Variable-length-quantity/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Variadic-function b/Lang/Pluto/Variadic-function
deleted file mode 120000
index 8d2be144f4..0000000000
--- a/Lang/Pluto/Variadic-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Variadic-function/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Vector b/Lang/Pluto/Vector
deleted file mode 120000
index fd56d6c8ab..0000000000
--- a/Lang/Pluto/Vector
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Vector/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Vector-products b/Lang/Pluto/Vector-products
deleted file mode 120000
index 83a09bc1a3..0000000000
--- a/Lang/Pluto/Vector-products
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Vector-products/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Verhoeff-algorithm b/Lang/Pluto/Verhoeff-algorithm
deleted file mode 120000
index 1b001cd3c1..0000000000
--- a/Lang/Pluto/Verhoeff-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Verhoeff-algorithm/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Voronoi-diagram b/Lang/Pluto/Voronoi-diagram
deleted file mode 120000
index 50678561e7..0000000000
--- a/Lang/Pluto/Voronoi-diagram
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Voronoi-diagram/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Wagstaff-primes b/Lang/Pluto/Wagstaff-primes
deleted file mode 120000
index d8a1a2f0da..0000000000
--- a/Lang/Pluto/Wagstaff-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Wagstaff-primes/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Water-collected-between-towers b/Lang/Pluto/Water-collected-between-towers
deleted file mode 120000
index 94e32bc8f3..0000000000
--- a/Lang/Pluto/Water-collected-between-towers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Water-collected-between-towers/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Wieferich-primes b/Lang/Pluto/Wieferich-primes
deleted file mode 120000
index 453231fbab..0000000000
--- a/Lang/Pluto/Wieferich-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Wieferich-primes/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Wilson-primes-of-order-n b/Lang/Pluto/Wilson-primes-of-order-n
deleted file mode 120000
index 9bafdd051b..0000000000
--- a/Lang/Pluto/Wilson-primes-of-order-n
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Wilson-primes-of-order-n/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Wireworld b/Lang/Pluto/Wireworld
deleted file mode 120000
index 1eed665c2c..0000000000
--- a/Lang/Pluto/Wireworld
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Wireworld/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Word-wheel b/Lang/Pluto/Word-wheel
deleted file mode 120000
index c83ad2ab7f..0000000000
--- a/Lang/Pluto/Word-wheel
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Word-wheel/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/World-Cup-group-stage b/Lang/Pluto/World-Cup-group-stage
deleted file mode 120000
index 1c8f3e8b53..0000000000
--- a/Lang/Pluto/World-Cup-group-stage
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/World-Cup-group-stage/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Write-entire-file b/Lang/Pluto/Write-entire-file
deleted file mode 120000
index be63715e40..0000000000
--- a/Lang/Pluto/Write-entire-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Write-entire-file/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Write-float-arrays-to-a-text-file b/Lang/Pluto/Write-float-arrays-to-a-text-file
deleted file mode 120000
index eaa4582b34..0000000000
--- a/Lang/Pluto/Write-float-arrays-to-a-text-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Write-float-arrays-to-a-text-file/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Write-language-name-in-3D-ASCII b/Lang/Pluto/Write-language-name-in-3D-ASCII
deleted file mode 120000
index 54358f8cdd..0000000000
--- a/Lang/Pluto/Write-language-name-in-3D-ASCII
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Write-language-name-in-3D-ASCII/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Y-combinator b/Lang/Pluto/Y-combinator
deleted file mode 120000
index b356912f44..0000000000
--- a/Lang/Pluto/Y-combinator
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Y-combinator/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Yellowstone-sequence b/Lang/Pluto/Yellowstone-sequence
deleted file mode 120000
index f4fb013414..0000000000
--- a/Lang/Pluto/Yellowstone-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Yellowstone-sequence/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Zebra-puzzle b/Lang/Pluto/Zebra-puzzle
deleted file mode 120000
index d1dee531e9..0000000000
--- a/Lang/Pluto/Zebra-puzzle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Zebra-puzzle/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Zeckendorf-number-representation b/Lang/Pluto/Zeckendorf-number-representation
deleted file mode 120000
index 6f7ac19b32..0000000000
--- a/Lang/Pluto/Zeckendorf-number-representation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Zeckendorf-number-representation/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Zero-to-the-zero-power b/Lang/Pluto/Zero-to-the-zero-power
deleted file mode 120000
index 88cbcf1376..0000000000
--- a/Lang/Pluto/Zero-to-the-zero-power
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Zero-to-the-zero-power/Pluto
\ No newline at end of file
diff --git a/Lang/Pluto/Zig-zag-matrix b/Lang/Pluto/Zig-zag-matrix
deleted file mode 120000
index 49521638f6..0000000000
--- a/Lang/Pluto/Zig-zag-matrix
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Zig-zag-matrix/Pluto
\ No newline at end of file
diff --git a/Lang/PostScript/Sieve-of-Eratosthenes b/Lang/PostScript/Sieve-of-Eratosthenes
deleted file mode 120000
index bf5fd9fe66..0000000000
--- a/Lang/PostScript/Sieve-of-Eratosthenes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sieve-of-Eratosthenes/PostScript
\ No newline at end of file
diff --git a/Lang/PowerShell/AKS-test-for-primes b/Lang/PowerShell/AKS-test-for-primes
deleted file mode 120000
index d5622ba541..0000000000
--- a/Lang/PowerShell/AKS-test-for-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/AKS-test-for-primes/PowerShell
\ No newline at end of file
diff --git a/Lang/PowerShell/Abundant-odd-numbers b/Lang/PowerShell/Abundant-odd-numbers
deleted file mode 120000
index fa7795f731..0000000000
--- a/Lang/PowerShell/Abundant-odd-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abundant-odd-numbers/PowerShell
\ No newline at end of file
diff --git a/Lang/PowerShell/Anti-primes b/Lang/PowerShell/Anti-primes
deleted file mode 120000
index f56c16a315..0000000000
--- a/Lang/PowerShell/Anti-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Anti-primes/PowerShell
\ No newline at end of file
diff --git a/Lang/PowerShell/Base64-decode-data b/Lang/PowerShell/Base64-decode-data
deleted file mode 120000
index 64cfcd61a8..0000000000
--- a/Lang/PowerShell/Base64-decode-data
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Base64-decode-data/PowerShell
\ No newline at end of file
diff --git a/Lang/PowerShell/Bell-numbers b/Lang/PowerShell/Bell-numbers
deleted file mode 120000
index 175671e690..0000000000
--- a/Lang/PowerShell/Bell-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bell-numbers/PowerShell
\ No newline at end of file
diff --git a/Lang/PowerShell/Brazilian-numbers b/Lang/PowerShell/Brazilian-numbers
deleted file mode 120000
index 93e2e48db6..0000000000
--- a/Lang/PowerShell/Brazilian-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Brazilian-numbers/PowerShell
\ No newline at end of file
diff --git a/Lang/PowerShell/Call-a-foreign-language-function b/Lang/PowerShell/Call-a-foreign-language-function
deleted file mode 120000
index b222a9fc7d..0000000000
--- a/Lang/PowerShell/Call-a-foreign-language-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Call-a-foreign-language-function/PowerShell
\ No newline at end of file
diff --git a/Lang/PowerShell/Department-numbers b/Lang/PowerShell/Department-numbers
deleted file mode 120000
index 089828bb9a..0000000000
--- a/Lang/PowerShell/Department-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Department-numbers/PowerShell
\ No newline at end of file
diff --git a/Lang/PowerShell/Gray-code b/Lang/PowerShell/Gray-code
deleted file mode 120000
index c7adcf7cdb..0000000000
--- a/Lang/PowerShell/Gray-code
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Gray-code/PowerShell
\ No newline at end of file
diff --git a/Lang/PowerShell/Hello-world-Web-server b/Lang/PowerShell/Hello-world-Web-server
deleted file mode 120000
index 3b4f878f34..0000000000
--- a/Lang/PowerShell/Hello-world-Web-server
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Web-server/PowerShell
\ No newline at end of file
diff --git a/Lang/PowerShell/Leonardo-numbers b/Lang/PowerShell/Leonardo-numbers
deleted file mode 120000
index fda0fa0dbc..0000000000
--- a/Lang/PowerShell/Leonardo-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Leonardo-numbers/PowerShell
\ No newline at end of file
diff --git a/Lang/PowerShell/M-bius-function b/Lang/PowerShell/M-bius-function
deleted file mode 120000
index a50c276864..0000000000
--- a/Lang/PowerShell/M-bius-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/M-bius-function/PowerShell
\ No newline at end of file
diff --git a/Lang/PowerShell/Mayan-numerals b/Lang/PowerShell/Mayan-numerals
deleted file mode 120000
index 24e3ef5efb..0000000000
--- a/Lang/PowerShell/Mayan-numerals
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Mayan-numerals/PowerShell
\ No newline at end of file
diff --git a/Lang/PowerShell/Multifactorial b/Lang/PowerShell/Multifactorial
deleted file mode 120000
index 45d4ca2539..0000000000
--- a/Lang/PowerShell/Multifactorial
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Multifactorial/PowerShell
\ No newline at end of file
diff --git a/Lang/PowerShell/Periodic-table b/Lang/PowerShell/Periodic-table
deleted file mode 120000
index bcfd7f5cf0..0000000000
--- a/Lang/PowerShell/Periodic-table
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Periodic-table/PowerShell
\ No newline at end of file
diff --git a/Lang/PowerShell/Quaternion-type b/Lang/PowerShell/Quaternion-type
new file mode 120000
index 0000000000..60f8156bec
--- /dev/null
+++ b/Lang/PowerShell/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/PowerShell
\ No newline at end of file
diff --git a/Lang/PowerShell/Statistics-Basic b/Lang/PowerShell/Statistics-Basic
deleted file mode 120000
index 604034a29d..0000000000
--- a/Lang/PowerShell/Statistics-Basic
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Statistics-Basic/PowerShell
\ No newline at end of file
diff --git a/Lang/PowerShell/Statistics-Normal-distribution b/Lang/PowerShell/Statistics-Normal-distribution
deleted file mode 120000
index 9ce69e4094..0000000000
--- a/Lang/PowerShell/Statistics-Normal-distribution
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Statistics-Normal-distribution/PowerShell
\ No newline at end of file
diff --git a/Lang/PowerShell/Strassens-algorithm b/Lang/PowerShell/Strassens-algorithm
deleted file mode 120000
index 1b221ce844..0000000000
--- a/Lang/PowerShell/Strassens-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strassens-algorithm/PowerShell
\ No newline at end of file
diff --git a/Lang/ProDOS/00-LANG.txt b/Lang/ProDOS/00-LANG.txt
index d4852ff3b2..3affb9c53a 100644
--- a/Lang/ProDOS/00-LANG.txt
+++ b/Lang/ProDOS/00-LANG.txt
@@ -4,18 +4,18 @@ ProDOS is an open-source command-based programming language created by Riley Hou
===Overview===
ProDOS is a command-based language. This term refers to any form of language that uses built-in commands to function, instead of strings of keywords to function. For example:
-printline Hello, World!
+printline Hello, World!
The command "printline" is used to display the line "Hello, World". For clarification, in Java the alternative would be:
-public class HelloWorld
+public class HelloWorld
{
public static void main(String[] args)
{
System.out.println("Goodbye, World!");
}
-}
+}
-As you can see, the difference is quite significant. The command "printline" is pre-defined, this means that the user does not have to define classes,etc.
+As you can see, the difference is quite significant. The command "printline" is pre-defined, this means that the user does not have to define classes,etc.
===Future Implementations===
ProDOS has not yet reached a release stage, but due to it being only a few months left until it is able to be released, ProDOS 1 will be ready to be released for public distribution by early 2012.
\ No newline at end of file
diff --git a/Lang/Prog8/Quine b/Lang/Prog8/Quine
deleted file mode 120000
index d19dfe3196..0000000000
--- a/Lang/Prog8/Quine
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Quine/Prog8
\ No newline at end of file
diff --git a/Lang/ProgressBASIC/00-LANG.txt b/Lang/ProgressBASIC/00-LANG.txt
deleted file mode 100644
index d243dbaa3d..0000000000
--- a/Lang/ProgressBASIC/00-LANG.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-{{language}}
-ProgressBASIC is a BASIC-like programming language used in the mobile/steam game Progressbar95. To get acses to the programming language. You must unlock the 8-bit category of systems.
-To understand how this programming language works, [https://progressbar95.fandom.com/wiki/ProgressBASIC#Commands click this]
\ No newline at end of file
diff --git a/Lang/ProgressBASIC/00-META.yaml b/Lang/ProgressBASIC/00-META.yaml
deleted file mode 100644
index 82857e2590..0000000000
--- a/Lang/ProgressBASIC/00-META.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-from: http://rosettacode.org/wiki/Category:ProgressBASIC
diff --git a/Lang/Prolog/100-prisoners b/Lang/Prolog/100-prisoners
deleted file mode 120000
index f105600099..0000000000
--- a/Lang/Prolog/100-prisoners
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/100-prisoners/Prolog
\ No newline at end of file
diff --git a/Lang/Prolog/Boolean-values b/Lang/Prolog/Boolean-values
deleted file mode 120000
index a4d04329bd..0000000000
--- a/Lang/Prolog/Boolean-values
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Boolean-values/Prolog
\ No newline at end of file
diff --git a/Lang/Prolog/Damm-algorithm b/Lang/Prolog/Damm-algorithm
deleted file mode 120000
index beadc26281..0000000000
--- a/Lang/Prolog/Damm-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Damm-algorithm/Prolog
\ No newline at end of file
diff --git a/Lang/Prolog/Determine-sentence-type b/Lang/Prolog/Determine-sentence-type
deleted file mode 120000
index d87bf5b582..0000000000
--- a/Lang/Prolog/Determine-sentence-type
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-sentence-type/Prolog
\ No newline at end of file
diff --git a/Lang/Prolog/Evaluate-binomial-coefficients b/Lang/Prolog/Evaluate-binomial-coefficients
deleted file mode 120000
index 15602e690b..0000000000
--- a/Lang/Prolog/Evaluate-binomial-coefficients
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Evaluate-binomial-coefficients/Prolog
\ No newline at end of file
diff --git a/Lang/Prolog/Hello-world-Newline-omission b/Lang/Prolog/Hello-world-Newline-omission
deleted file mode 120000
index c1a7a16c3a..0000000000
--- a/Lang/Prolog/Hello-world-Newline-omission
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Newline-omission/Prolog
\ No newline at end of file
diff --git a/Lang/Prolog/ISBN13-check-digit b/Lang/Prolog/ISBN13-check-digit
deleted file mode 120000
index a76610ede1..0000000000
--- a/Lang/Prolog/ISBN13-check-digit
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/ISBN13-check-digit/Prolog
\ No newline at end of file
diff --git a/Lang/Prolog/Integer-comparison b/Lang/Prolog/Integer-comparison
deleted file mode 120000
index 700709dfc3..0000000000
--- a/Lang/Prolog/Integer-comparison
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Integer-comparison/Prolog
\ No newline at end of file
diff --git a/Lang/Prolog/Iterated-digits-squaring b/Lang/Prolog/Iterated-digits-squaring
deleted file mode 120000
index 2783b6cb96..0000000000
--- a/Lang/Prolog/Iterated-digits-squaring
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Iterated-digits-squaring/Prolog
\ No newline at end of file
diff --git a/Lang/Prolog/Josephus-problem b/Lang/Prolog/Josephus-problem
deleted file mode 120000
index f88549c05c..0000000000
--- a/Lang/Prolog/Josephus-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Josephus-problem/Prolog
\ No newline at end of file
diff --git a/Lang/Prolog/Magic-8-ball b/Lang/Prolog/Magic-8-ball
deleted file mode 120000
index 6daea6349e..0000000000
--- a/Lang/Prolog/Magic-8-ball
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Magic-8-ball/Prolog
\ No newline at end of file
diff --git a/Lang/Prolog/Map-range b/Lang/Prolog/Map-range
deleted file mode 120000
index 09c2135423..0000000000
--- a/Lang/Prolog/Map-range
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Map-range/Prolog
\ No newline at end of file
diff --git a/Lang/Prolog/Miller-Rabin-primality-test b/Lang/Prolog/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..77f0bc56fd
--- /dev/null
+++ b/Lang/Prolog/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/Prolog
\ No newline at end of file
diff --git a/Lang/Prolog/Old-Russian-measure-of-length b/Lang/Prolog/Old-Russian-measure-of-length
deleted file mode 120000
index d1594e7647..0000000000
--- a/Lang/Prolog/Old-Russian-measure-of-length
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Old-Russian-measure-of-length/Prolog
\ No newline at end of file
diff --git a/Lang/Prolog/Order-by-pair-comparisons b/Lang/Prolog/Order-by-pair-comparisons
deleted file mode 120000
index b08bc67036..0000000000
--- a/Lang/Prolog/Order-by-pair-comparisons
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Order-by-pair-comparisons/Prolog
\ No newline at end of file
diff --git a/Lang/Prolog/Phrase-reversals b/Lang/Prolog/Phrase-reversals
deleted file mode 120000
index 1afa8eb5f5..0000000000
--- a/Lang/Prolog/Phrase-reversals
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Phrase-reversals/Prolog
\ No newline at end of file
diff --git a/Lang/Prolog/Population-count b/Lang/Prolog/Population-count
deleted file mode 120000
index 1ffa420c15..0000000000
--- a/Lang/Prolog/Population-count
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Population-count/Prolog
\ No newline at end of file
diff --git a/Lang/Prolog/Quaternion-type b/Lang/Prolog/Quaternion-type
new file mode 120000
index 0000000000..458f5f70bc
--- /dev/null
+++ b/Lang/Prolog/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/Prolog
\ No newline at end of file
diff --git a/Lang/Prolog/RPG-attributes-generator b/Lang/Prolog/RPG-attributes-generator
deleted file mode 120000
index cde5e146a7..0000000000
--- a/Lang/Prolog/RPG-attributes-generator
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/RPG-attributes-generator/Prolog
\ No newline at end of file
diff --git a/Lang/Prolog/SEDOLs b/Lang/Prolog/SEDOLs
deleted file mode 120000
index 21d9643112..0000000000
--- a/Lang/Prolog/SEDOLs
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/SEDOLs/Prolog
\ No newline at end of file
diff --git a/Lang/Prolog/Semordnilap b/Lang/Prolog/Semordnilap
deleted file mode 120000
index c4e2d18fc4..0000000000
--- a/Lang/Prolog/Semordnilap
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Semordnilap/Prolog
\ No newline at end of file
diff --git a/Lang/Prolog/Sort-three-variables b/Lang/Prolog/Sort-three-variables
deleted file mode 120000
index 8518a9819c..0000000000
--- a/Lang/Prolog/Sort-three-variables
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-three-variables/Prolog
\ No newline at end of file
diff --git a/Lang/Prolog/Stem-and-leaf-plot b/Lang/Prolog/Stem-and-leaf-plot
deleted file mode 120000
index 8a3d5cbab0..0000000000
--- a/Lang/Prolog/Stem-and-leaf-plot
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Stem-and-leaf-plot/Prolog
\ No newline at end of file
diff --git a/Lang/Prolog/String-concatenation b/Lang/Prolog/String-concatenation
deleted file mode 120000
index 47d572fb22..0000000000
--- a/Lang/Prolog/String-concatenation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-concatenation/Prolog
\ No newline at end of file
diff --git a/Lang/Prolog/Thue-Morse b/Lang/Prolog/Thue-Morse
deleted file mode 120000
index c42ff58a18..0000000000
--- a/Lang/Prolog/Thue-Morse
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Thue-Morse/Prolog
\ No newline at end of file
diff --git a/Lang/Prolog/Topswops b/Lang/Prolog/Topswops
deleted file mode 120000
index 20c5cfbba8..0000000000
--- a/Lang/Prolog/Topswops
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Topswops/Prolog
\ No newline at end of file
diff --git a/Lang/Prolog/Trabb-Pardo-Knuth-algorithm b/Lang/Prolog/Trabb-Pardo-Knuth-algorithm
deleted file mode 120000
index dcd294e9ea..0000000000
--- a/Lang/Prolog/Trabb-Pardo-Knuth-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Trabb-Pardo-Knuth-algorithm/Prolog
\ No newline at end of file
diff --git a/Lang/Prolog/Twos-complement b/Lang/Prolog/Twos-complement
deleted file mode 120000
index 1ba2d1e131..0000000000
--- a/Lang/Prolog/Twos-complement
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Twos-complement/Prolog
\ No newline at end of file
diff --git a/Lang/Prolog/Wireworld b/Lang/Prolog/Wireworld
deleted file mode 120000
index b45eaa2601..0000000000
--- a/Lang/Prolog/Wireworld
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Wireworld/Prolog
\ No newline at end of file
diff --git a/Lang/Prolog/Zero-to-the-zero-power b/Lang/Prolog/Zero-to-the-zero-power
deleted file mode 120000
index 5d3d1cb814..0000000000
--- a/Lang/Prolog/Zero-to-the-zero-power
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Zero-to-the-zero-power/Prolog
\ No newline at end of file
diff --git a/Lang/PureBasic/ASCII-art-diagram-converter b/Lang/PureBasic/ASCII-art-diagram-converter
deleted file mode 120000
index 33f4c7eea5..0000000000
--- a/Lang/PureBasic/ASCII-art-diagram-converter
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/ASCII-art-diagram-converter/PureBasic
\ No newline at end of file
diff --git a/Lang/PureBasic/Bioinformatics-base-count b/Lang/PureBasic/Bioinformatics-base-count
new file mode 120000
index 0000000000..16be5f27be
--- /dev/null
+++ b/Lang/PureBasic/Bioinformatics-base-count
@@ -0,0 +1 @@
+../../Task/Bioinformatics-base-count/PureBasic
\ No newline at end of file
diff --git a/Lang/PureBasic/Blum-integer b/Lang/PureBasic/Blum-integer
deleted file mode 120000
index d3f0a3d564..0000000000
--- a/Lang/PureBasic/Blum-integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Blum-integer/PureBasic
\ No newline at end of file
diff --git a/Lang/PureBasic/Determine-if-a-string-has-all-the-same-characters b/Lang/PureBasic/Determine-if-a-string-has-all-the-same-characters
deleted file mode 120000
index 8ce6b940bc..0000000000
--- a/Lang/PureBasic/Determine-if-a-string-has-all-the-same-characters
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-has-all-the-same-characters/PureBasic
\ No newline at end of file
diff --git a/Lang/PureBasic/Determine-sentence-type b/Lang/PureBasic/Determine-sentence-type
deleted file mode 120000
index 58f4c9411b..0000000000
--- a/Lang/PureBasic/Determine-sentence-type
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-sentence-type/PureBasic
\ No newline at end of file
diff --git a/Lang/PureBasic/Generate-Chess960-starting-position b/Lang/PureBasic/Generate-Chess960-starting-position
deleted file mode 120000
index d1a0ea8b2a..0000000000
--- a/Lang/PureBasic/Generate-Chess960-starting-position
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Generate-Chess960-starting-position/PureBasic
\ No newline at end of file
diff --git a/Lang/PureBasic/Jewels-and-stones b/Lang/PureBasic/Jewels-and-stones
deleted file mode 120000
index 90d847c8e7..0000000000
--- a/Lang/PureBasic/Jewels-and-stones
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jewels-and-stones/PureBasic
\ No newline at end of file
diff --git a/Lang/PureBasic/M-bius-function b/Lang/PureBasic/M-bius-function
deleted file mode 120000
index 86603635cf..0000000000
--- a/Lang/PureBasic/M-bius-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/M-bius-function/PureBasic
\ No newline at end of file
diff --git a/Lang/PureBasic/Meissel-Mertens-constant b/Lang/PureBasic/Meissel-Mertens-constant
new file mode 120000
index 0000000000..81f0bd26b3
--- /dev/null
+++ b/Lang/PureBasic/Meissel-Mertens-constant
@@ -0,0 +1 @@
+../../Task/Meissel-Mertens-constant/PureBasic
\ No newline at end of file
diff --git a/Lang/PureBasic/Miller-Rabin-primality-test b/Lang/PureBasic/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..af69162304
--- /dev/null
+++ b/Lang/PureBasic/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/PureBasic
\ No newline at end of file
diff --git a/Lang/PureBasic/Numerical-and-alphabetical-suffixes b/Lang/PureBasic/Numerical-and-alphabetical-suffixes
deleted file mode 120000
index 1544fa8d4a..0000000000
--- a/Lang/PureBasic/Numerical-and-alphabetical-suffixes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Numerical-and-alphabetical-suffixes/PureBasic
\ No newline at end of file
diff --git a/Lang/PureBasic/Periodic-table b/Lang/PureBasic/Periodic-table
deleted file mode 120000
index d212a3056c..0000000000
--- a/Lang/PureBasic/Periodic-table
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Periodic-table/PureBasic
\ No newline at end of file
diff --git a/Lang/PureBasic/Quaternion-type b/Lang/PureBasic/Quaternion-type
new file mode 120000
index 0000000000..6551ed8e89
--- /dev/null
+++ b/Lang/PureBasic/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/PureBasic
\ No newline at end of file
diff --git a/Lang/PureBasic/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors b/Lang/PureBasic/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
similarity index 100%
rename from Lang/PureBasic/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors
rename to Lang/PureBasic/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
diff --git a/Lang/PureBasic/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/PureBasic/Sequence-smallest-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/PureBasic/Sequence:-smallest-number-with-exactly-n-divisors
rename to Lang/PureBasic/Sequence-smallest-number-with-exactly-n-divisors
diff --git a/Lang/PureBasic/The-Name-Game b/Lang/PureBasic/The-Name-Game
deleted file mode 120000
index 50ae0fd1b6..0000000000
--- a/Lang/PureBasic/The-Name-Game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/The-Name-Game/PureBasic
\ No newline at end of file
diff --git a/Lang/PureBasic/Twos-complement b/Lang/PureBasic/Twos-complement
deleted file mode 120000
index dfe56459f4..0000000000
--- a/Lang/PureBasic/Twos-complement
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Twos-complement/PureBasic
\ No newline at end of file
diff --git a/Lang/Python/Bioinformatics-base-count b/Lang/Python/Bioinformatics-base-count
new file mode 120000
index 0000000000..7f8a0873e8
--- /dev/null
+++ b/Lang/Python/Bioinformatics-base-count
@@ -0,0 +1 @@
+../../Task/Bioinformatics-base-count/Python
\ No newline at end of file
diff --git a/Lang/Python/Compile-time-calculation b/Lang/Python/Compile-time-calculation
deleted file mode 120000
index 33879ac69d..0000000000
--- a/Lang/Python/Compile-time-calculation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compile-time-calculation/Python
\ No newline at end of file
diff --git a/Lang/Python/Constrained-genericity b/Lang/Python/Constrained-genericity
deleted file mode 120000
index 3ac238c57a..0000000000
--- a/Lang/Python/Constrained-genericity
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Constrained-genericity/Python
\ No newline at end of file
diff --git a/Lang/Python/Dominoes b/Lang/Python/Dominoes
deleted file mode 120000
index 648f074afc..0000000000
--- a/Lang/Python/Dominoes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dominoes/Python
\ No newline at end of file
diff --git a/Lang/Python/Erd-s-Selfridge-categorization-of-primes b/Lang/Python/Erd-s-Selfridge-categorization-of-primes
deleted file mode 120000
index fd2fdbcb3f..0000000000
--- a/Lang/Python/Erd-s-Selfridge-categorization-of-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Erd-s-Selfridge-categorization-of-primes/Python
\ No newline at end of file
diff --git a/Lang/Python/Execute-Brain- b/Lang/Python/Execute-Brain-
deleted file mode 120000
index ad83d880d6..0000000000
--- a/Lang/Python/Execute-Brain-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Execute-Brain-/Python
\ No newline at end of file
diff --git a/Lang/Python/Im-a-software-engineer-get-me-out-of-here b/Lang/Python/Im-a-software-engineer-get-me-out-of-here
deleted file mode 120000
index d238ff00d2..0000000000
--- a/Lang/Python/Im-a-software-engineer-get-me-out-of-here
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Im-a-software-engineer-get-me-out-of-here/Python
\ No newline at end of file
diff --git a/Lang/Python/Isograms-and-heterograms b/Lang/Python/Isograms-and-heterograms
deleted file mode 120000
index f277330152..0000000000
--- a/Lang/Python/Isograms-and-heterograms
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Isograms-and-heterograms/Python
\ No newline at end of file
diff --git a/Lang/Python/Meissel-Mertens-constant b/Lang/Python/Meissel-Mertens-constant
new file mode 120000
index 0000000000..04fd530b92
--- /dev/null
+++ b/Lang/Python/Meissel-Mertens-constant
@@ -0,0 +1 @@
+../../Task/Meissel-Mertens-constant/Python
\ No newline at end of file
diff --git a/Lang/Python/Miller-Rabin-primality-test b/Lang/Python/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..4ec507954a
--- /dev/null
+++ b/Lang/Python/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/Python
\ No newline at end of file
diff --git a/Lang/Python/Multi-base-primes b/Lang/Python/Multi-base-primes
deleted file mode 120000
index 6190bc944f..0000000000
--- a/Lang/Python/Multi-base-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Multi-base-primes/Python
\ No newline at end of file
diff --git a/Lang/Python/Numbers-which-are-not-the-sum-of-distinct-squares b/Lang/Python/Numbers-which-are-not-the-sum-of-distinct-squares
deleted file mode 120000
index 3a47a71cf2..0000000000
--- a/Lang/Python/Numbers-which-are-not-the-sum-of-distinct-squares
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Numbers-which-are-not-the-sum-of-distinct-squares/Python
\ No newline at end of file
diff --git a/Lang/Python/P-Adic-square-roots b/Lang/Python/P-Adic-square-roots
deleted file mode 120000
index 3ecdf0d3ca..0000000000
--- a/Lang/Python/P-Adic-square-roots
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/P-Adic-square-roots/Python
\ No newline at end of file
diff --git a/Lang/Python/Parametric-polymorphism b/Lang/Python/Parametric-polymorphism
deleted file mode 120000
index b6d5668cdf..0000000000
--- a/Lang/Python/Parametric-polymorphism
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Parametric-polymorphism/Python
\ No newline at end of file
diff --git a/Lang/Python/Peripheral-drift-illusion b/Lang/Python/Peripheral-drift-illusion
deleted file mode 120000
index 4e0e7d7c77..0000000000
--- a/Lang/Python/Peripheral-drift-illusion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Peripheral-drift-illusion/Python
\ No newline at end of file
diff --git a/Lang/Python/Prime-numbers-whose-neighboring-pairs-are-tetraprimes b/Lang/Python/Prime-numbers-whose-neighboring-pairs-are-tetraprimes
deleted file mode 120000
index 9997b73880..0000000000
--- a/Lang/Python/Prime-numbers-whose-neighboring-pairs-are-tetraprimes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Prime-numbers-whose-neighboring-pairs-are-tetraprimes/Python
\ No newline at end of file
diff --git a/Lang/Python/Quaternion-type b/Lang/Python/Quaternion-type
new file mode 120000
index 0000000000..4219e34b85
--- /dev/null
+++ b/Lang/Python/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/Python
\ No newline at end of file
diff --git a/Lang/Python/Ramanujan-primes-twins b/Lang/Python/Ramanujan-primes-twins
deleted file mode 120000
index 8b76bc210b..0000000000
--- a/Lang/Python/Ramanujan-primes-twins
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ramanujan-primes-twins/Python
\ No newline at end of file
diff --git a/Lang/Python/Rhonda-numbers b/Lang/Python/Rhonda-numbers
deleted file mode 120000
index 26cc73526d..0000000000
--- a/Lang/Python/Rhonda-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Rhonda-numbers/Python
\ No newline at end of file
diff --git a/Lang/Python/Ruth-Aaron-numbers b/Lang/Python/Ruth-Aaron-numbers
deleted file mode 120000
index 933b3d03bc..0000000000
--- a/Lang/Python/Ruth-Aaron-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ruth-Aaron-numbers/Python
\ No newline at end of file
diff --git a/Lang/Python/Sequence:-nth-number-with-exactly-n-divisors b/Lang/Python/Sequence-nth-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/Python/Sequence:-nth-number-with-exactly-n-divisors
rename to Lang/Python/Sequence-nth-number-with-exactly-n-divisors
diff --git a/Lang/Python/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors b/Lang/Python/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
similarity index 100%
rename from Lang/Python/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors
rename to Lang/Python/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
diff --git a/Lang/Python/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/Python/Sequence-smallest-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/Python/Sequence:-smallest-number-with-exactly-n-divisors
rename to Lang/Python/Sequence-smallest-number-with-exactly-n-divisors
diff --git a/Lang/Python/Smarandache-Wellin-primes b/Lang/Python/Smarandache-Wellin-primes
deleted file mode 120000
index 87eea97b5c..0000000000
--- a/Lang/Python/Smarandache-Wellin-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Smarandache-Wellin-primes/Python
\ No newline at end of file
diff --git a/Lang/Python/Sorting-Algorithms-Circle-Sort b/Lang/Python/Sorting-Algorithms-Circle-Sort
new file mode 120000
index 0000000000..3e7a80b339
--- /dev/null
+++ b/Lang/Python/Sorting-Algorithms-Circle-Sort
@@ -0,0 +1 @@
+../../Task/Sorting-Algorithms-Circle-Sort/Python
\ No newline at end of file
diff --git a/Lang/Python/Square-form-factorization b/Lang/Python/Square-form-factorization
deleted file mode 120000
index 38da301a59..0000000000
--- a/Lang/Python/Square-form-factorization
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Square-form-factorization/Python
\ No newline at end of file
diff --git a/Lang/Python/Start-from-a-main-routine b/Lang/Python/Start-from-a-main-routine
deleted file mode 120000
index e9c472aaa4..0000000000
--- a/Lang/Python/Start-from-a-main-routine
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Start-from-a-main-routine/Python
\ No newline at end of file
diff --git a/Lang/Python/Untouchable-numbers b/Lang/Python/Untouchable-numbers
deleted file mode 120000
index c4bd0ba9e1..0000000000
--- a/Lang/Python/Untouchable-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Untouchable-numbers/Python
\ No newline at end of file
diff --git a/Lang/Python/Wasteful-equidigital-and-frugal-numbers b/Lang/Python/Wasteful-equidigital-and-frugal-numbers
deleted file mode 120000
index c89de12312..0000000000
--- a/Lang/Python/Wasteful-equidigital-and-frugal-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Wasteful-equidigital-and-frugal-numbers/Python
\ No newline at end of file
diff --git a/Lang/Q/00-LANG.txt b/Lang/Q/00-LANG.txt
index 1cf9ed3990..761de14eda 100644
--- a/Lang/Q/00-LANG.txt
+++ b/Lang/Q/00-LANG.txt
@@ -1,6 +1,5 @@
-{{language}}
-Q is another vector language (in the family of [[APL]], [[J]], [[K]], and [[Nial]])
+{{language}}Q is another vector language (in the family of [[APL]] [[J]] [[K]] and [[Nial]])
-There is a totally unrelated language called Q [http://q-lang.sourceforge.net/ here]. (It is an equational programming language.)
+There is a totally unrelated language called Q [http://q-lang.sourceforge.net/ here]. (It is an equational programming language)
-Documentation: [https://code.kx.com/q4m3/ Q for Mortals] An introduction to q programming
\ No newline at end of file
+Q [https://code.kx.com/trac/wiki/QforMortals docs](anonymous/anonymous)
\ No newline at end of file
diff --git a/Lang/Q/Euler-method b/Lang/Q/Euler-method
deleted file mode 120000
index 093ad80e13..0000000000
--- a/Lang/Q/Euler-method
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Euler-method/Q
\ No newline at end of file
diff --git a/Lang/QB64/Averages-Mean-angle b/Lang/QB64/Averages-Mean-angle
deleted file mode 120000
index aab53ced3a..0000000000
--- a/Lang/QB64/Averages-Mean-angle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Mean-angle/QB64
\ No newline at end of file
diff --git a/Lang/QB64/Blum-integer b/Lang/QB64/Blum-integer
deleted file mode 120000
index 6d55cd1ae1..0000000000
--- a/Lang/QB64/Blum-integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Blum-integer/QB64
\ No newline at end of file
diff --git a/Lang/QB64/Determine-if-a-string-has-all-the-same-characters b/Lang/QB64/Determine-if-a-string-has-all-the-same-characters
deleted file mode 120000
index e5cb75941f..0000000000
--- a/Lang/QB64/Determine-if-a-string-has-all-the-same-characters
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-has-all-the-same-characters/QB64
\ No newline at end of file
diff --git a/Lang/QB64/Fibonacci-n-step-number-sequences b/Lang/QB64/Fibonacci-n-step-number-sequences
deleted file mode 120000
index dbe9d19cad..0000000000
--- a/Lang/QB64/Fibonacci-n-step-number-sequences
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fibonacci-n-step-number-sequences/QB64
\ No newline at end of file
diff --git a/Lang/QB64/Hello-world-Newline-omission b/Lang/QB64/Hello-world-Newline-omission
deleted file mode 120000
index 355c4d1286..0000000000
--- a/Lang/QB64/Hello-world-Newline-omission
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Newline-omission/QB64
\ No newline at end of file
diff --git a/Lang/QB64/Hofstadter-Q-sequence b/Lang/QB64/Hofstadter-Q-sequence
deleted file mode 120000
index 636c2bd5e2..0000000000
--- a/Lang/QB64/Hofstadter-Q-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hofstadter-Q-sequence/QB64
\ No newline at end of file
diff --git a/Lang/QB64/Intersecting-number-wheels b/Lang/QB64/Intersecting-number-wheels
deleted file mode 120000
index 226a608551..0000000000
--- a/Lang/QB64/Intersecting-number-wheels
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Intersecting-number-wheels/QB64
\ No newline at end of file
diff --git a/Lang/QB64/Mayan-calendar b/Lang/QB64/Mayan-calendar
deleted file mode 120000
index 13deaa3e8a..0000000000
--- a/Lang/QB64/Mayan-calendar
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Mayan-calendar/QB64
\ No newline at end of file
diff --git a/Lang/QB64/Multiple-regression b/Lang/QB64/Multiple-regression
deleted file mode 120000
index f5a655fb07..0000000000
--- a/Lang/QB64/Multiple-regression
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Multiple-regression/QB64
\ No newline at end of file
diff --git a/Lang/QB64/Perfect-numbers b/Lang/QB64/Perfect-numbers
deleted file mode 120000
index 313898bfff..0000000000
--- a/Lang/QB64/Perfect-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Perfect-numbers/QB64
\ No newline at end of file
diff --git a/Lang/QB64/Price-fraction b/Lang/QB64/Price-fraction
deleted file mode 120000
index b2a7164220..0000000000
--- a/Lang/QB64/Price-fraction
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Price-fraction/QB64
\ No newline at end of file
diff --git a/Lang/QB64/Safe-primes-and-unsafe-primes b/Lang/QB64/Safe-primes-and-unsafe-primes
deleted file mode 120000
index 2fe9c13027..0000000000
--- a/Lang/QB64/Safe-primes-and-unsafe-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Safe-primes-and-unsafe-primes/QB64
\ No newline at end of file
diff --git a/Lang/QB64/Sum-of-a-series b/Lang/QB64/Sum-of-a-series
deleted file mode 120000
index 67ad320160..0000000000
--- a/Lang/QB64/Sum-of-a-series
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sum-of-a-series/QB64
\ No newline at end of file
diff --git a/Lang/QB64/Tau-number b/Lang/QB64/Tau-number
deleted file mode 120000
index 0690f3645f..0000000000
--- a/Lang/QB64/Tau-number
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tau-number/QB64
\ No newline at end of file
diff --git a/Lang/QB64/Trabb-Pardo-Knuth-algorithm b/Lang/QB64/Trabb-Pardo-Knuth-algorithm
deleted file mode 120000
index bd61960412..0000000000
--- a/Lang/QB64/Trabb-Pardo-Knuth-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Trabb-Pardo-Knuth-algorithm/QB64
\ No newline at end of file
diff --git a/Lang/QB64/Twos-complement b/Lang/QB64/Twos-complement
deleted file mode 120000
index fd393f8160..0000000000
--- a/Lang/QB64/Twos-complement
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Twos-complement/QB64
\ No newline at end of file
diff --git a/Lang/QB64/Web-scraping b/Lang/QB64/Web-scraping
deleted file mode 120000
index bdf604fdc3..0000000000
--- a/Lang/QB64/Web-scraping
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Web-scraping/QB64
\ No newline at end of file
diff --git a/Lang/QBasic/00-LANG.txt b/Lang/QBasic/00-LANG.txt
index 66c4f1d834..4ab26db45d 100644
--- a/Lang/QBasic/00-LANG.txt
+++ b/Lang/QBasic/00-LANG.txt
@@ -1,4 +1,3 @@
{{language}}
-{{implementation|BASIC}}
QBasic is a BASIC that was written by Microsoft and normally executes under Windows.
\ No newline at end of file
diff --git a/Lang/QBasic/15-puzzle-game b/Lang/QBasic/15-puzzle-game
deleted file mode 120000
index 4cdffaba3f..0000000000
--- a/Lang/QBasic/15-puzzle-game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/15-puzzle-game/QBasic
\ No newline at end of file
diff --git a/Lang/QBasic/ASCII-art-diagram-converter b/Lang/QBasic/ASCII-art-diagram-converter
deleted file mode 120000
index 75bc551903..0000000000
--- a/Lang/QBasic/ASCII-art-diagram-converter
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/ASCII-art-diagram-converter/QBasic
\ No newline at end of file
diff --git a/Lang/QBasic/Associative-array-Merging b/Lang/QBasic/Associative-array-Merging
deleted file mode 120000
index 7cdfcc0848..0000000000
--- a/Lang/QBasic/Associative-array-Merging
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Associative-array-Merging/QBasic
\ No newline at end of file
diff --git a/Lang/QBasic/Averages-Mean-angle b/Lang/QBasic/Averages-Mean-angle
deleted file mode 120000
index 499df28583..0000000000
--- a/Lang/QBasic/Averages-Mean-angle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Mean-angle/QBasic
\ No newline at end of file
diff --git a/Lang/QBasic/Determine-sentence-type b/Lang/QBasic/Determine-sentence-type
deleted file mode 120000
index 5f23645126..0000000000
--- a/Lang/QBasic/Determine-sentence-type
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-sentence-type/QBasic
\ No newline at end of file
diff --git a/Lang/QBasic/Dinesmans-multiple-dwelling-problem b/Lang/QBasic/Dinesmans-multiple-dwelling-problem
new file mode 120000
index 0000000000..58659e8fb4
--- /dev/null
+++ b/Lang/QBasic/Dinesmans-multiple-dwelling-problem
@@ -0,0 +1 @@
+../../Task/Dinesmans-multiple-dwelling-problem/QBasic
\ No newline at end of file
diff --git a/Lang/QBasic/Display-a-linear-combination b/Lang/QBasic/Display-a-linear-combination
deleted file mode 120000
index e9d158c960..0000000000
--- a/Lang/QBasic/Display-a-linear-combination
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Display-a-linear-combination/QBasic
\ No newline at end of file
diff --git a/Lang/QBasic/Diversity-prediction-theorem b/Lang/QBasic/Diversity-prediction-theorem
deleted file mode 120000
index 01e16fde09..0000000000
--- a/Lang/QBasic/Diversity-prediction-theorem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Diversity-prediction-theorem/QBasic
\ No newline at end of file
diff --git a/Lang/QBasic/Evaluate-binomial-coefficients b/Lang/QBasic/Evaluate-binomial-coefficients
deleted file mode 120000
index 86b00c5e75..0000000000
--- a/Lang/QBasic/Evaluate-binomial-coefficients
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Evaluate-binomial-coefficients/QBasic
\ No newline at end of file
diff --git a/Lang/QBasic/Fibonacci-n-step-number-sequences b/Lang/QBasic/Fibonacci-n-step-number-sequences
deleted file mode 120000
index 77136c7137..0000000000
--- a/Lang/QBasic/Fibonacci-n-step-number-sequences
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fibonacci-n-step-number-sequences/QBasic
\ No newline at end of file
diff --git a/Lang/QBasic/Horizontal-sundial-calculations b/Lang/QBasic/Horizontal-sundial-calculations
deleted file mode 120000
index 48a7ed5986..0000000000
--- a/Lang/QBasic/Horizontal-sundial-calculations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Horizontal-sundial-calculations/QBasic
\ No newline at end of file
diff --git a/Lang/QBasic/Jensens-Device b/Lang/QBasic/Jensens-Device
deleted file mode 120000
index 199e4d7809..0000000000
--- a/Lang/QBasic/Jensens-Device
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jensens-Device/QBasic
\ No newline at end of file
diff --git a/Lang/QBasic/Leonardo-numbers b/Lang/QBasic/Leonardo-numbers
deleted file mode 120000
index d0e3199c8a..0000000000
--- a/Lang/QBasic/Leonardo-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Leonardo-numbers/QBasic
\ No newline at end of file
diff --git a/Lang/QBasic/Loops-Continue b/Lang/QBasic/Loops-Continue
deleted file mode 120000
index eeea4ac585..0000000000
--- a/Lang/QBasic/Loops-Continue
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Continue/QBasic
\ No newline at end of file
diff --git a/Lang/QBasic/Map-range b/Lang/QBasic/Map-range
deleted file mode 120000
index be9705365d..0000000000
--- a/Lang/QBasic/Map-range
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Map-range/QBasic
\ No newline at end of file
diff --git a/Lang/QBasic/Nested-templated-data b/Lang/QBasic/Nested-templated-data
deleted file mode 120000
index ddf5a87c1b..0000000000
--- a/Lang/QBasic/Nested-templated-data
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nested-templated-data/QBasic
\ No newline at end of file
diff --git a/Lang/QBasic/Numbers-with-equal-rises-and-falls b/Lang/QBasic/Numbers-with-equal-rises-and-falls
deleted file mode 120000
index 8e3ab8bbe9..0000000000
--- a/Lang/QBasic/Numbers-with-equal-rises-and-falls
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Numbers-with-equal-rises-and-falls/QBasic
\ No newline at end of file
diff --git a/Lang/QBasic/Phrase-reversals b/Lang/QBasic/Phrase-reversals
deleted file mode 120000
index 7f3671bcb7..0000000000
--- a/Lang/QBasic/Phrase-reversals
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Phrase-reversals/QBasic
\ No newline at end of file
diff --git a/Lang/QBasic/Pinstripe-Display b/Lang/QBasic/Pinstripe-Display
deleted file mode 120000
index f245a0ccf2..0000000000
--- a/Lang/QBasic/Pinstripe-Display
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pinstripe-Display/QBasic
\ No newline at end of file
diff --git a/Lang/QBasic/Ramer-Douglas-Peucker-line-simplification b/Lang/QBasic/Ramer-Douglas-Peucker-line-simplification
deleted file mode 120000
index 574b7acaf0..0000000000
--- a/Lang/QBasic/Ramer-Douglas-Peucker-line-simplification
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ramer-Douglas-Peucker-line-simplification/QBasic
\ No newline at end of file
diff --git a/Lang/QBasic/Repeat-a-string b/Lang/QBasic/Repeat-a-string
new file mode 120000
index 0000000000..4c99978a73
--- /dev/null
+++ b/Lang/QBasic/Repeat-a-string
@@ -0,0 +1 @@
+../../Task/Repeat-a-string/QBasic
\ No newline at end of file
diff --git a/Lang/QBasic/Rot-13 b/Lang/QBasic/Rot-13
deleted file mode 120000
index 8ebe820c50..0000000000
--- a/Lang/QBasic/Rot-13
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Rot-13/QBasic
\ No newline at end of file
diff --git a/Lang/QBasic/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors b/Lang/QBasic/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
similarity index 100%
rename from Lang/QBasic/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors
rename to Lang/QBasic/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
diff --git a/Lang/QBasic/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/QBasic/Sequence-smallest-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/QBasic/Sequence:-smallest-number-with-exactly-n-divisors
rename to Lang/QBasic/Sequence-smallest-number-with-exactly-n-divisors
diff --git a/Lang/QBasic/Soundex b/Lang/QBasic/Soundex
deleted file mode 120000
index 2d904fe964..0000000000
--- a/Lang/QBasic/Soundex
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Soundex/QBasic
\ No newline at end of file
diff --git a/Lang/QBasic/Split-a-character-string-based-on-change-of-character b/Lang/QBasic/Split-a-character-string-based-on-change-of-character
deleted file mode 120000
index 5e5ffa8a44..0000000000
--- a/Lang/QBasic/Split-a-character-string-based-on-change-of-character
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Split-a-character-string-based-on-change-of-character/QBasic
\ No newline at end of file
diff --git a/Lang/QBasic/Statistics-Normal-distribution b/Lang/QBasic/Statistics-Normal-distribution
deleted file mode 120000
index 9e5e8f24f2..0000000000
--- a/Lang/QBasic/Statistics-Normal-distribution
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Statistics-Normal-distribution/QBasic
\ No newline at end of file
diff --git a/Lang/QBasic/The-Name-Game b/Lang/QBasic/The-Name-Game
deleted file mode 120000
index f7f2e9b30b..0000000000
--- a/Lang/QBasic/The-Name-Game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/The-Name-Game/QBasic
\ No newline at end of file
diff --git a/Lang/QBasic/Vector b/Lang/QBasic/Vector
deleted file mode 120000
index 7bbf551f69..0000000000
--- a/Lang/QBasic/Vector
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Vector/QBasic
\ No newline at end of file
diff --git a/Lang/Quackery/00-LANG.txt b/Lang/Quackery/00-LANG.txt
index b70d597b46..498188387d 100644
--- a/Lang/Quackery/00-LANG.txt
+++ b/Lang/Quackery/00-LANG.txt
@@ -1,9 +1,9 @@
{{language|Quackery}}
{{language programming paradigm|Concatenative}}
{{language programming paradigm|Imperative}}
-Quackery is an open-source, lightweight, entry-level concatenative language for educational and recreational programming, and an extensible compiler for a hypothetical processor, the Quackery Engine.
+Quackery is an open-source, lightweight, entry-level concatenative language for educational and recreational programming.
-It is coded as a Python 3 function in about 50k of Pythonscript, about half of which is a string of Quackery code.
+It is coded as a Python 3 function in under 48k of Pythonscript, about half of which is a string of Quackery code.
The Quackery GitHub repository, which includes the Quackery manual "The Book of Quackery" as a pdf, is at [https://github.com/GordonCharlton/Quackery github.com/GordonCharlton/Quackery].
@@ -19,7 +19,7 @@ To compile this definition of quackery, build takes a
The words is, [, and ] are builders; they can be found in the builders dictionary, which extends the functionality of build beyond building a flat nest for do to evaluate. is takes the item that do most recently added to its output nest, and adds it to the names dictionary, along with the string that follows it, "quackery" as its name. The syntax of Quackery is; words and numbers are sequences of printable characters, separated by spaces and carriage returns unless a builder treats the text that follows it otherwise. The builder builds is equivalent to is for adding new words and behaviours to the builders dictionary.
-Evaluation of a nest proceeds from left to right unless a control flow operator redirects it. done causes doto stop evaluating a nest and return to the nest that pointed to it immediately, rather than at the end of the nest. again restarts the evaluation of that nest, non-recursively. The word recurse does it recursively. if and iff conditionally (depending on the item on the top of the Quackery stack) skip over the next one and two items in the nest respectively. else skips over one item, unconditionally. As with the other provided control flow operators, these words are nests, not operators, that make use of the "meta-control flow" operators, which grant the behaviours described above to words that use them. (They modify items on the return stack, rather than acting on the Quackery engine's various registers directly, so their changes are enacted upon exiting the nest that called them.)
+Evaluation of a nest proceeds from left to right unless a control flow operator redirects it. done causes doto stop evaluating a nest and return to the nest that pointed to it immediately, rather than at the end of the nest. again restarts the evaluation of that nest, non-recursively. The word recurse does it recursively. if and iff conditionally (depending on the item on the top of the Quackery stack) skip over the next one and two items in the nest respectively. else skips over one item, unconditionally. As with the other provided control flow operators, these words are nests, not operators, that make use of the "meta-control flow" operators, which grant the behaviours described above to words that use them. (They modify items on the return stack, rather than acting on the Quackery engine's various pointers registers directly, so their changes are enacted upon exiting the nest that called them.)
There are no variables in Quackery. Instead, there are stack management words to rearrange the uppermost items on the Quackery stack as required, and nameable ancillary stacks that fulfil the roles of variables.
@@ -27,28 +27,8 @@ Everything is code except when it is data. When do does a number, t
Conceptually, the Quackery engine is a stack based processor which does not have direct access to physical memory but has a memory management co-processor that intermediates, that takes care of the nests and bignums, provides pointers to the Quackery engine CPU on request, and garbage collects continuously.
-Quackery is not intended to be a super-fast enterprise-level language; it is intended as an exploration of a novel architecture, and a fun programming project straight out of a textbook. (The textbook is included in the download.)
+Quackery is not intended to be a super-fast enterprise-level language; it is intended as a fun programming project straight out of a textbook. (The textbook is included in the download.)
-Why not try your hand at one of the [[Tasks not implemented in Quackery]].
+If your language supports bignums, first-class functions and dynamic arrays of bignums, functions and dynamic arrays, and has automatic garbage collection, and if you can code depth-first traversal of a tree you can implement Quackery in your preferred language with reasonable ease, and modify it as you please.
-== Selected Quackery Examples ==
-
-Rosetta Code has hundreds of Quackery examples. Here’s a curated set that showcases some of Quackery's strengths:
-
-* [[99 bottles of beer#Quackery|99 bottles of beer]] Shows simple, readable control flow and output.
-* [[Gosper's hack#Quackery|Gosper's hack]] A nifty one-liner.
-* [[Temperature conversion#Quackery|Temperature conversion]] Co-operative brevity.
-* [[Balanced brackets#Quackery|Balanced brackets]] Demonstrates natural stack use for classic problems.
-* [[Loops/Increment loop index within loop body#Quackery|Increment loop index within loop body]] You want a loop that's indexed ''and'' indefinite? Here's how.
-* [[Quine#Quackery|Quine]] Illustrates code-as-data and quotation handling.
-* [[Bacon cipher#Quackery|Bacon cipher]] Highlights clear text manipulation with minimal code.
-* [[Permutations#Quackery|Permutations]] Uses recursion and stack shuffling expressively.
-* [[Sorting algorithms/Insertion sort#Quackery|Insertion sort]] Demonstrates some built-in higher-order functions.
-* [[Higher-order functions#Quackery|Higher-order functions]] Defining and using fold, map, and filter.
-* [[Conway's Game of Life#Quackery|Conway's Game of Life]] Handles structured simulation with clarity.
-* [[Execute Brain****#Quackery|Brainf*** interpreter]] Demonstrates interpreter-building and extensibility.
-* [[Dinesman's multiple-dwelling problem#Quackery|Dinesman's multiple-dwelling problem]] Crafting a Domain Specific Language.
-
-== The Task that Nearly Broke the Author ==
-
-* [[Zeckendorf arithmetic#Quackery|Zeckendorf arithmetic]] Forget everything you thought you knew about arithmetic…
\ No newline at end of file
+Or try your hand at one of the [[Tasks not implemented in Quackery]].
\ No newline at end of file
diff --git a/Lang/Quackery/4-rings-or-4-squares-puzzle b/Lang/Quackery/4-rings-or-4-squares-puzzle
deleted file mode 120000
index 786cc93b7f..0000000000
--- a/Lang/Quackery/4-rings-or-4-squares-puzzle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/4-rings-or-4-squares-puzzle/Quackery
\ No newline at end of file
diff --git a/Lang/Quackery/Balanced-ternary b/Lang/Quackery/Balanced-ternary
deleted file mode 120000
index c02c0b6483..0000000000
--- a/Lang/Quackery/Balanced-ternary
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Balanced-ternary/Quackery
\ No newline at end of file
diff --git a/Lang/Quackery/Benfords-law b/Lang/Quackery/Benfords-law
deleted file mode 120000
index 83c8fdffec..0000000000
--- a/Lang/Quackery/Benfords-law
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Benfords-law/Quackery
\ No newline at end of file
diff --git a/Lang/Quackery/Bioinformatics-base-count b/Lang/Quackery/Bioinformatics-base-count
new file mode 120000
index 0000000000..65cab8d1ed
--- /dev/null
+++ b/Lang/Quackery/Bioinformatics-base-count
@@ -0,0 +1 @@
+../../Task/Bioinformatics-base-count/Quackery
\ No newline at end of file
diff --git a/Lang/Quackery/Chowla-numbers b/Lang/Quackery/Chowla-numbers
deleted file mode 120000
index 017749c553..0000000000
--- a/Lang/Quackery/Chowla-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Chowla-numbers/Quackery
\ No newline at end of file
diff --git a/Lang/Quackery/Combinations-and-permutations b/Lang/Quackery/Combinations-and-permutations
deleted file mode 120000
index fc6f331f4d..0000000000
--- a/Lang/Quackery/Combinations-and-permutations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Combinations-and-permutations/Quackery
\ No newline at end of file
diff --git a/Lang/Quackery/Cuban-primes b/Lang/Quackery/Cuban-primes
deleted file mode 120000
index 8c512d4853..0000000000
--- a/Lang/Quackery/Cuban-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cuban-primes/Quackery
\ No newline at end of file
diff --git a/Lang/Quackery/Dice-game-probabilities b/Lang/Quackery/Dice-game-probabilities
deleted file mode 120000
index 87d28dc799..0000000000
--- a/Lang/Quackery/Dice-game-probabilities
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dice-game-probabilities/Quackery
\ No newline at end of file
diff --git a/Lang/Quackery/Dinesmans-multiple-dwelling-problem b/Lang/Quackery/Dinesmans-multiple-dwelling-problem
deleted file mode 120000
index 2061e87b20..0000000000
--- a/Lang/Quackery/Dinesmans-multiple-dwelling-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dinesmans-multiple-dwelling-problem/Quackery
\ No newline at end of file
diff --git a/Lang/Quackery/Distribution-of-0-digits-in-factorial-series b/Lang/Quackery/Distribution-of-0-digits-in-factorial-series
deleted file mode 120000
index 8627f3195b..0000000000
--- a/Lang/Quackery/Distribution-of-0-digits-in-factorial-series
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Distribution-of-0-digits-in-factorial-series/Quackery
\ No newline at end of file
diff --git a/Lang/Quackery/Doomsday-rule b/Lang/Quackery/Doomsday-rule
deleted file mode 120000
index f3df2f0b9b..0000000000
--- a/Lang/Quackery/Doomsday-rule
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Doomsday-rule/Quackery
\ No newline at end of file
diff --git a/Lang/Quackery/Dutch-national-flag-problem b/Lang/Quackery/Dutch-national-flag-problem
deleted file mode 120000
index 133393cf2e..0000000000
--- a/Lang/Quackery/Dutch-national-flag-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dutch-national-flag-problem/Quackery
\ No newline at end of file
diff --git a/Lang/Quackery/Execute-Computer-Zero b/Lang/Quackery/Execute-Computer-Zero
deleted file mode 120000
index bffceead11..0000000000
--- a/Lang/Quackery/Execute-Computer-Zero
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Execute-Computer-Zero/Quackery
\ No newline at end of file
diff --git a/Lang/Quackery/First-class-functions-Use-numbers-analogously b/Lang/Quackery/First-class-functions-Use-numbers-analogously
deleted file mode 120000
index c8416f6780..0000000000
--- a/Lang/Quackery/First-class-functions-Use-numbers-analogously
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/First-class-functions-Use-numbers-analogously/Quackery
\ No newline at end of file
diff --git a/Lang/Quackery/Flipping-bits-game b/Lang/Quackery/Flipping-bits-game
deleted file mode 120000
index fd3aa38458..0000000000
--- a/Lang/Quackery/Flipping-bits-game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Flipping-bits-game/Quackery
\ No newline at end of file
diff --git a/Lang/Quackery/Golden-ratio-Convergence b/Lang/Quackery/Golden-ratio-Convergence
deleted file mode 120000
index 177994dc3e..0000000000
--- a/Lang/Quackery/Golden-ratio-Convergence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Golden-ratio-Convergence/Quackery
\ No newline at end of file
diff --git a/Lang/Quackery/Menu b/Lang/Quackery/Menu
deleted file mode 120000
index 07087595bc..0000000000
--- a/Lang/Quackery/Menu
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Menu/Quackery
\ No newline at end of file
diff --git a/Lang/Quackery/Miller-Rabin-primality-test b/Lang/Quackery/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..d8e4ec56b5
--- /dev/null
+++ b/Lang/Quackery/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/Quackery
\ No newline at end of file
diff --git a/Lang/Quackery/Minimum-multiple-of-m-where-digital-sum-equals-m b/Lang/Quackery/Minimum-multiple-of-m-where-digital-sum-equals-m
deleted file mode 120000
index ddb9ece049..0000000000
--- a/Lang/Quackery/Minimum-multiple-of-m-where-digital-sum-equals-m
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Minimum-multiple-of-m-where-digital-sum-equals-m/Quackery
\ No newline at end of file
diff --git a/Lang/Quackery/Old-lady-swallowed-a-fly b/Lang/Quackery/Old-lady-swallowed-a-fly
deleted file mode 120000
index 0d6823a2fd..0000000000
--- a/Lang/Quackery/Old-lady-swallowed-a-fly
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Old-lady-swallowed-a-fly/Quackery
\ No newline at end of file
diff --git a/Lang/Quackery/Password-generator b/Lang/Quackery/Password-generator
deleted file mode 120000
index 8d0efee13f..0000000000
--- a/Lang/Quackery/Password-generator
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Password-generator/Quackery
\ No newline at end of file
diff --git a/Lang/Quackery/Pseudo-random-numbers-Xorshift-star b/Lang/Quackery/Pseudo-random-numbers-Xorshift-star
deleted file mode 120000
index 0d802ea7eb..0000000000
--- a/Lang/Quackery/Pseudo-random-numbers-Xorshift-star
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pseudo-random-numbers-Xorshift-star/Quackery
\ No newline at end of file
diff --git a/Lang/Quackery/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors b/Lang/Quackery/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
similarity index 100%
rename from Lang/Quackery/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors
rename to Lang/Quackery/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
diff --git a/Lang/Quackery/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/Quackery/Sequence-smallest-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/Quackery/Sequence:-smallest-number-with-exactly-n-divisors
rename to Lang/Quackery/Sequence-smallest-number-with-exactly-n-divisors
diff --git a/Lang/Quackery/Sleep b/Lang/Quackery/Sleep
deleted file mode 120000
index 7cd0464b5f..0000000000
--- a/Lang/Quackery/Sleep
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sleep/Quackery
\ No newline at end of file
diff --git a/Lang/Quackery/Solve-the-no-connection-puzzle b/Lang/Quackery/Solve-the-no-connection-puzzle
deleted file mode 120000
index d37f201a93..0000000000
--- a/Lang/Quackery/Solve-the-no-connection-puzzle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Solve-the-no-connection-puzzle/Quackery
\ No newline at end of file
diff --git a/Lang/Quackery/Sorting-Algorithms-Circle-Sort b/Lang/Quackery/Sorting-Algorithms-Circle-Sort
new file mode 120000
index 0000000000..e4abaee49d
--- /dev/null
+++ b/Lang/Quackery/Sorting-Algorithms-Circle-Sort
@@ -0,0 +1 @@
+../../Task/Sorting-Algorithms-Circle-Sort/Quackery
\ No newline at end of file
diff --git a/Lang/Quackery/Square-free-integers b/Lang/Quackery/Square-free-integers
deleted file mode 120000
index 1d2a5a3f4e..0000000000
--- a/Lang/Quackery/Square-free-integers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Square-free-integers/Quackery
\ No newline at end of file
diff --git a/Lang/Quackery/Sum-of-elements-below-main-diagonal-of-matrix b/Lang/Quackery/Sum-of-elements-below-main-diagonal-of-matrix
deleted file mode 120000
index 1f9736ed88..0000000000
--- a/Lang/Quackery/Sum-of-elements-below-main-diagonal-of-matrix
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sum-of-elements-below-main-diagonal-of-matrix/Quackery
\ No newline at end of file
diff --git a/Lang/Quackery/Two-bullet-roulette b/Lang/Quackery/Two-bullet-roulette
deleted file mode 120000
index 24f00326c1..0000000000
--- a/Lang/Quackery/Two-bullet-roulette
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Two-bullet-roulette/Quackery
\ No newline at end of file
diff --git a/Lang/Quackery/Ultra-useful-primes b/Lang/Quackery/Ultra-useful-primes
deleted file mode 120000
index d6fc3551e1..0000000000
--- a/Lang/Quackery/Ultra-useful-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ultra-useful-primes/Quackery
\ No newline at end of file
diff --git a/Lang/Quackery/Universal-Turing-machine b/Lang/Quackery/Universal-Turing-machine
deleted file mode 120000
index 9346211d7e..0000000000
--- a/Lang/Quackery/Universal-Turing-machine
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Universal-Turing-machine/Quackery
\ No newline at end of file
diff --git a/Lang/QuickBASIC/AKS-test-for-primes b/Lang/QuickBASIC/AKS-test-for-primes
deleted file mode 120000
index 3fb1fc33c1..0000000000
--- a/Lang/QuickBASIC/AKS-test-for-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/AKS-test-for-primes/QuickBASIC
\ No newline at end of file
diff --git a/Lang/QuickBASIC/Abundant-odd-numbers b/Lang/QuickBASIC/Abundant-odd-numbers
deleted file mode 120000
index baf10a6d8e..0000000000
--- a/Lang/QuickBASIC/Abundant-odd-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abundant-odd-numbers/QuickBASIC
\ No newline at end of file
diff --git a/Lang/QuickBASIC/Arithmetic-numbers b/Lang/QuickBASIC/Arithmetic-numbers
deleted file mode 120000
index e7076b98ae..0000000000
--- a/Lang/QuickBASIC/Arithmetic-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-numbers/QuickBASIC
\ No newline at end of file
diff --git a/Lang/QuickBASIC/Brazilian-numbers b/Lang/QuickBASIC/Brazilian-numbers
deleted file mode 120000
index 28cd1e19d8..0000000000
--- a/Lang/QuickBASIC/Brazilian-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Brazilian-numbers/QuickBASIC
\ No newline at end of file
diff --git a/Lang/QuickBASIC/CUSIP b/Lang/QuickBASIC/CUSIP
deleted file mode 120000
index cb4c762939..0000000000
--- a/Lang/QuickBASIC/CUSIP
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/CUSIP/QuickBASIC
\ No newline at end of file
diff --git a/Lang/QuickBASIC/Catalan-numbers b/Lang/QuickBASIC/Catalan-numbers
deleted file mode 120000
index d84bc84044..0000000000
--- a/Lang/QuickBASIC/Catalan-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Catalan-numbers/QuickBASIC
\ No newline at end of file
diff --git a/Lang/QuickBASIC/Cumulative-standard-deviation b/Lang/QuickBASIC/Cumulative-standard-deviation
deleted file mode 120000
index 969c73b001..0000000000
--- a/Lang/QuickBASIC/Cumulative-standard-deviation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cumulative-standard-deviation/QuickBASIC
\ No newline at end of file
diff --git a/Lang/QuickBASIC/Determine-if-a-string-is-collapsible b/Lang/QuickBASIC/Determine-if-a-string-is-collapsible
deleted file mode 120000
index d58e5303fd..0000000000
--- a/Lang/QuickBASIC/Determine-if-a-string-is-collapsible
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-is-collapsible/QuickBASIC
\ No newline at end of file
diff --git a/Lang/QuickBASIC/Dutch-national-flag-problem b/Lang/QuickBASIC/Dutch-national-flag-problem
deleted file mode 120000
index f213f50587..0000000000
--- a/Lang/QuickBASIC/Dutch-national-flag-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dutch-national-flag-problem/QuickBASIC
\ No newline at end of file
diff --git a/Lang/QuickBASIC/Equilibrium-index b/Lang/QuickBASIC/Equilibrium-index
deleted file mode 120000
index d38cfdf137..0000000000
--- a/Lang/QuickBASIC/Equilibrium-index
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Equilibrium-index/QuickBASIC
\ No newline at end of file
diff --git a/Lang/QuickBASIC/Ethiopian-multiplication b/Lang/QuickBASIC/Ethiopian-multiplication
deleted file mode 120000
index 8a8cc43790..0000000000
--- a/Lang/QuickBASIC/Ethiopian-multiplication
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ethiopian-multiplication/QuickBASIC
\ No newline at end of file
diff --git a/Lang/QuickBASIC/Function-definition b/Lang/QuickBASIC/Function-definition
deleted file mode 120000
index 0251617973..0000000000
--- a/Lang/QuickBASIC/Function-definition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Function-definition/QuickBASIC
\ No newline at end of file
diff --git a/Lang/QuickBASIC/Gamma-function b/Lang/QuickBASIC/Gamma-function
deleted file mode 120000
index 6180b04d53..0000000000
--- a/Lang/QuickBASIC/Gamma-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Gamma-function/QuickBASIC
\ No newline at end of file
diff --git a/Lang/QuickBASIC/Knights-tour b/Lang/QuickBASIC/Knights-tour
deleted file mode 120000
index 7c54f50c61..0000000000
--- a/Lang/QuickBASIC/Knights-tour
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Knights-tour/QuickBASIC
\ No newline at end of file
diff --git a/Lang/QuickBASIC/Langtons-ant b/Lang/QuickBASIC/Langtons-ant
deleted file mode 120000
index c0bbe5661c..0000000000
--- a/Lang/QuickBASIC/Langtons-ant
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Langtons-ant/QuickBASIC
\ No newline at end of file
diff --git a/Lang/QuickBASIC/M-bius-function b/Lang/QuickBASIC/M-bius-function
deleted file mode 120000
index 8f60fadaa9..0000000000
--- a/Lang/QuickBASIC/M-bius-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/M-bius-function/QuickBASIC
\ No newline at end of file
diff --git a/Lang/QuickBASIC/Monty-Hall-problem b/Lang/QuickBASIC/Monty-Hall-problem
deleted file mode 120000
index 5a322fee75..0000000000
--- a/Lang/QuickBASIC/Monty-Hall-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Monty-Hall-problem/QuickBASIC
\ No newline at end of file
diff --git a/Lang/QuickBASIC/Multifactorial b/Lang/QuickBASIC/Multifactorial
deleted file mode 120000
index 1f38ec7f4d..0000000000
--- a/Lang/QuickBASIC/Multifactorial
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Multifactorial/QuickBASIC
\ No newline at end of file
diff --git a/Lang/QuickBASIC/Nth-root b/Lang/QuickBASIC/Nth-root
deleted file mode 120000
index db6d881466..0000000000
--- a/Lang/QuickBASIC/Nth-root
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nth-root/QuickBASIC
\ No newline at end of file
diff --git a/Lang/QuickBASIC/Prime-decomposition b/Lang/QuickBASIC/Prime-decomposition
deleted file mode 120000
index 1a12af5b95..0000000000
--- a/Lang/QuickBASIC/Prime-decomposition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Prime-decomposition/QuickBASIC
\ No newline at end of file
diff --git a/Lang/QuickBASIC/Random-numbers b/Lang/QuickBASIC/Random-numbers
deleted file mode 120000
index 8332f543fa..0000000000
--- a/Lang/QuickBASIC/Random-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Random-numbers/QuickBASIC
\ No newline at end of file
diff --git a/Lang/QuickBASIC/Repeat-a-string b/Lang/QuickBASIC/Repeat-a-string
deleted file mode 120000
index f019b580c1..0000000000
--- a/Lang/QuickBASIC/Repeat-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Repeat-a-string/QuickBASIC
\ No newline at end of file
diff --git a/Lang/QuickBASIC/Semiprime b/Lang/QuickBASIC/Semiprime
deleted file mode 120000
index ded745aaee..0000000000
--- a/Lang/QuickBASIC/Semiprime
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Semiprime/QuickBASIC
\ No newline at end of file
diff --git a/Lang/QuickBASIC/Shoelace-formula-for-polygonal-area b/Lang/QuickBASIC/Shoelace-formula-for-polygonal-area
deleted file mode 120000
index dc63463382..0000000000
--- a/Lang/QuickBASIC/Shoelace-formula-for-polygonal-area
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Shoelace-formula-for-polygonal-area/QuickBASIC
\ No newline at end of file
diff --git a/Lang/QuickBASIC/Sorting-algorithms-Quicksort b/Lang/QuickBASIC/Sorting-algorithms-Quicksort
deleted file mode 120000
index 573bd236b2..0000000000
--- a/Lang/QuickBASIC/Sorting-algorithms-Quicksort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Quicksort/QuickBASIC
\ No newline at end of file
diff --git a/Lang/Quite-BASIC/Determine-sentence-type b/Lang/Quite-BASIC/Determine-sentence-type
deleted file mode 120000
index 6c274b9228..0000000000
--- a/Lang/Quite-BASIC/Determine-sentence-type
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-sentence-type/Quite-BASIC
\ No newline at end of file
diff --git a/Lang/Quite-BASIC/Empty-program b/Lang/Quite-BASIC/Empty-program
new file mode 120000
index 0000000000..fb2bfba5b2
--- /dev/null
+++ b/Lang/Quite-BASIC/Empty-program
@@ -0,0 +1 @@
+../../Task/Empty-program/Quite-BASIC
\ No newline at end of file
diff --git a/Lang/R/15-puzzle-solver b/Lang/R/15-puzzle-solver
deleted file mode 120000
index f3e79214e0..0000000000
--- a/Lang/R/15-puzzle-solver
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/15-puzzle-solver/R
\ No newline at end of file
diff --git a/Lang/R/ADFGVX-cipher b/Lang/R/ADFGVX-cipher
deleted file mode 120000
index 78a519cccb..0000000000
--- a/Lang/R/ADFGVX-cipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/ADFGVX-cipher/R
\ No newline at end of file
diff --git a/Lang/R/Angle-difference-between-two-bearings b/Lang/R/Angle-difference-between-two-bearings
deleted file mode 120000
index a27ae03f18..0000000000
--- a/Lang/R/Angle-difference-between-two-bearings
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Angle-difference-between-two-bearings/R
\ No newline at end of file
diff --git a/Lang/R/Angles-geometric-normalization-and-conversion b/Lang/R/Angles-geometric-normalization-and-conversion
deleted file mode 120000
index d1e56f507e..0000000000
--- a/Lang/R/Angles-geometric-normalization-and-conversion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Angles-geometric-normalization-and-conversion/R
\ No newline at end of file
diff --git a/Lang/R/Arithmetic-derivative b/Lang/R/Arithmetic-derivative
deleted file mode 120000
index b37750c7e7..0000000000
--- a/Lang/R/Arithmetic-derivative
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-derivative/R
\ No newline at end of file
diff --git a/Lang/R/Balanced-ternary b/Lang/R/Balanced-ternary
deleted file mode 120000
index 593bb03a22..0000000000
--- a/Lang/R/Balanced-ternary
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Balanced-ternary/R
\ No newline at end of file
diff --git a/Lang/R/Bioinformatics-Sequence-mutation b/Lang/R/Bioinformatics-Sequence-mutation
deleted file mode 120000
index 2779ce82b8..0000000000
--- a/Lang/R/Bioinformatics-Sequence-mutation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bioinformatics-Sequence-mutation/R
\ No newline at end of file
diff --git a/Lang/R/Bioinformatics-base-count b/Lang/R/Bioinformatics-base-count
new file mode 120000
index 0000000000..2ca416a985
--- /dev/null
+++ b/Lang/R/Bioinformatics-base-count
@@ -0,0 +1 @@
+../../Task/Bioinformatics-base-count/R
\ No newline at end of file
diff --git a/Lang/R/Boyer-Moore-string-search b/Lang/R/Boyer-Moore-string-search
deleted file mode 120000
index 32fa72f304..0000000000
--- a/Lang/R/Boyer-Moore-string-search
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Boyer-Moore-string-search/R
\ No newline at end of file
diff --git a/Lang/R/Brazilian-numbers b/Lang/R/Brazilian-numbers
deleted file mode 120000
index 87e6a7046a..0000000000
--- a/Lang/R/Brazilian-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Brazilian-numbers/R
\ No newline at end of file
diff --git a/Lang/R/CUSIP b/Lang/R/CUSIP
deleted file mode 120000
index e43a376539..0000000000
--- a/Lang/R/CUSIP
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/CUSIP/R
\ No newline at end of file
diff --git a/Lang/R/Call-a-foreign-language-function b/Lang/R/Call-a-foreign-language-function
deleted file mode 120000
index 606c52dbec..0000000000
--- a/Lang/R/Call-a-foreign-language-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Call-a-foreign-language-function/R
\ No newline at end of file
diff --git a/Lang/R/Camel-case-and-snake-case b/Lang/R/Camel-case-and-snake-case
deleted file mode 120000
index e76dd2d66a..0000000000
--- a/Lang/R/Camel-case-and-snake-case
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Camel-case-and-snake-case/R
\ No newline at end of file
diff --git a/Lang/R/Catalan-numbers-Pascals-triangle b/Lang/R/Catalan-numbers-Pascals-triangle
deleted file mode 120000
index dbe83426e3..0000000000
--- a/Lang/R/Catalan-numbers-Pascals-triangle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Catalan-numbers-Pascals-triangle/R
\ No newline at end of file
diff --git a/Lang/R/Chinese-zodiac b/Lang/R/Chinese-zodiac
deleted file mode 120000
index 55811323ec..0000000000
--- a/Lang/R/Chinese-zodiac
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Chinese-zodiac/R
\ No newline at end of file
diff --git a/Lang/R/Colour-pinstripe-Display b/Lang/R/Colour-pinstripe-Display
deleted file mode 120000
index 88bf4afbbd..0000000000
--- a/Lang/R/Colour-pinstripe-Display
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Colour-pinstripe-Display/R
\ No newline at end of file
diff --git a/Lang/R/Compare-length-of-two-strings b/Lang/R/Compare-length-of-two-strings
deleted file mode 120000
index 834feb9f20..0000000000
--- a/Lang/R/Compare-length-of-two-strings
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compare-length-of-two-strings/R
\ No newline at end of file
diff --git a/Lang/R/Compare-sorting-algorithms-performance b/Lang/R/Compare-sorting-algorithms-performance
deleted file mode 120000
index 61629d6cd5..0000000000
--- a/Lang/R/Compare-sorting-algorithms-performance
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compare-sorting-algorithms-performance/R
\ No newline at end of file
diff --git a/Lang/R/Conjugate-transpose b/Lang/R/Conjugate-transpose
deleted file mode 120000
index 573e26fb04..0000000000
--- a/Lang/R/Conjugate-transpose
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Conjugate-transpose/R
\ No newline at end of file
diff --git a/Lang/R/Continued-fraction b/Lang/R/Continued-fraction
deleted file mode 120000
index 8e8db83048..0000000000
--- a/Lang/R/Continued-fraction
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Continued-fraction/R
\ No newline at end of file
diff --git a/Lang/R/Continued-fraction-Arithmetic-Construct-from-rational-number b/Lang/R/Continued-fraction-Arithmetic-Construct-from-rational-number
deleted file mode 120000
index 6bffaf9997..0000000000
--- a/Lang/R/Continued-fraction-Arithmetic-Construct-from-rational-number
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Continued-fraction-Arithmetic-Construct-from-rational-number/R
\ No newline at end of file
diff --git a/Lang/R/Continued-fraction-Arithmetic-G-matrix-ng-continued-fraction-n- b/Lang/R/Continued-fraction-Arithmetic-G-matrix-ng-continued-fraction-n-
deleted file mode 120000
index 794241b476..0000000000
--- a/Lang/R/Continued-fraction-Arithmetic-G-matrix-ng-continued-fraction-n-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Continued-fraction-Arithmetic-G-matrix-ng-continued-fraction-n-/R
\ No newline at end of file
diff --git a/Lang/R/Convert-seconds-to-compound-duration b/Lang/R/Convert-seconds-to-compound-duration
deleted file mode 120000
index 85f297d7da..0000000000
--- a/Lang/R/Convert-seconds-to-compound-duration
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Convert-seconds-to-compound-duration/R
\ No newline at end of file
diff --git a/Lang/R/Convex-hull b/Lang/R/Convex-hull
deleted file mode 120000
index 8db2946ae1..0000000000
--- a/Lang/R/Convex-hull
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Convex-hull/R
\ No newline at end of file
diff --git a/Lang/R/Count-in-octal b/Lang/R/Count-in-octal
deleted file mode 120000
index 37edd3a31e..0000000000
--- a/Lang/R/Count-in-octal
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Count-in-octal/R
\ No newline at end of file
diff --git a/Lang/R/Cramers-rule b/Lang/R/Cramers-rule
deleted file mode 120000
index 839896c59f..0000000000
--- a/Lang/R/Cramers-rule
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cramers-rule/R
\ No newline at end of file
diff --git a/Lang/R/Create-an-HTML-table b/Lang/R/Create-an-HTML-table
deleted file mode 120000
index 209500efb4..0000000000
--- a/Lang/R/Create-an-HTML-table
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Create-an-HTML-table/R
\ No newline at end of file
diff --git a/Lang/R/Curzon-numbers b/Lang/R/Curzon-numbers
deleted file mode 120000
index a381ff9f97..0000000000
--- a/Lang/R/Curzon-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Curzon-numbers/R
\ No newline at end of file
diff --git a/Lang/R/De-Bruijn-sequences b/Lang/R/De-Bruijn-sequences
deleted file mode 120000
index bd74daf8c7..0000000000
--- a/Lang/R/De-Bruijn-sequences
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/De-Bruijn-sequences/R
\ No newline at end of file
diff --git a/Lang/R/Deceptive-numbers b/Lang/R/Deceptive-numbers
deleted file mode 120000
index 68b87065ac..0000000000
--- a/Lang/R/Deceptive-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Deceptive-numbers/R
\ No newline at end of file
diff --git a/Lang/R/Deepcopy b/Lang/R/Deepcopy
deleted file mode 120000
index 85c0e9d496..0000000000
--- a/Lang/R/Deepcopy
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Deepcopy/R
\ No newline at end of file
diff --git a/Lang/R/Demings-funnel b/Lang/R/Demings-funnel
deleted file mode 120000
index ae9cefb48f..0000000000
--- a/Lang/R/Demings-funnel
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Demings-funnel/R
\ No newline at end of file
diff --git a/Lang/R/Determine-sentence-type b/Lang/R/Determine-sentence-type
deleted file mode 120000
index b5e3ac4763..0000000000
--- a/Lang/R/Determine-sentence-type
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-sentence-type/R
\ No newline at end of file
diff --git a/Lang/R/Digital-root-Multiplicative-digital-root b/Lang/R/Digital-root-Multiplicative-digital-root
deleted file mode 120000
index 09c29b1f07..0000000000
--- a/Lang/R/Digital-root-Multiplicative-digital-root
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Digital-root-Multiplicative-digital-root/R
\ No newline at end of file
diff --git a/Lang/R/Dijkstras-algorithm b/Lang/R/Dijkstras-algorithm
deleted file mode 120000
index 3bff2fae1d..0000000000
--- a/Lang/R/Dijkstras-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dijkstras-algorithm/R
\ No newline at end of file
diff --git a/Lang/R/Disarium-numbers b/Lang/R/Disarium-numbers
deleted file mode 120000
index 233dce846c..0000000000
--- a/Lang/R/Disarium-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Disarium-numbers/R
\ No newline at end of file
diff --git a/Lang/R/Display-a-linear-combination b/Lang/R/Display-a-linear-combination
deleted file mode 120000
index c292ce3aec..0000000000
--- a/Lang/R/Display-a-linear-combination
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Display-a-linear-combination/R
\ No newline at end of file
diff --git a/Lang/R/Doomsday-rule b/Lang/R/Doomsday-rule
deleted file mode 120000
index d2c2b8b054..0000000000
--- a/Lang/R/Doomsday-rule
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Doomsday-rule/R
\ No newline at end of file
diff --git a/Lang/R/Draw-a-cuboid b/Lang/R/Draw-a-cuboid
deleted file mode 120000
index b0d15ca88e..0000000000
--- a/Lang/R/Draw-a-cuboid
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Draw-a-cuboid/R
\ No newline at end of file
diff --git a/Lang/R/Draw-a-pixel b/Lang/R/Draw-a-pixel
deleted file mode 120000
index 64a7037eb8..0000000000
--- a/Lang/R/Draw-a-pixel
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Draw-a-pixel/R
\ No newline at end of file
diff --git a/Lang/R/Draw-a-sphere b/Lang/R/Draw-a-sphere
deleted file mode 120000
index 5508f91f81..0000000000
--- a/Lang/R/Draw-a-sphere
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Draw-a-sphere/R
\ No newline at end of file
diff --git a/Lang/R/Dutch-national-flag-problem b/Lang/R/Dutch-national-flag-problem
deleted file mode 120000
index 422342365f..0000000000
--- a/Lang/R/Dutch-national-flag-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dutch-national-flag-problem/R
\ No newline at end of file
diff --git a/Lang/R/Equilibrium-index b/Lang/R/Equilibrium-index
deleted file mode 120000
index 7c36abe0f6..0000000000
--- a/Lang/R/Equilibrium-index
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Equilibrium-index/R
\ No newline at end of file
diff --git a/Lang/R/Euclid-Mullin-sequence b/Lang/R/Euclid-Mullin-sequence
deleted file mode 120000
index 3929a900d8..0000000000
--- a/Lang/R/Euclid-Mullin-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Euclid-Mullin-sequence/R
\ No newline at end of file
diff --git a/Lang/R/Execute-HQ9+ b/Lang/R/Execute-HQ9+
deleted file mode 120000
index 0972c0bb4f..0000000000
--- a/Lang/R/Execute-HQ9+
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Execute-HQ9+/R
\ No newline at end of file
diff --git a/Lang/R/Factorial-primes b/Lang/R/Factorial-primes
deleted file mode 120000
index 90b75c9d38..0000000000
--- a/Lang/R/Factorial-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factorial-primes/R
\ No newline at end of file
diff --git a/Lang/R/Factorions b/Lang/R/Factorions
deleted file mode 120000
index 351fcd0d06..0000000000
--- a/Lang/R/Factorions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factorions/R
\ No newline at end of file
diff --git a/Lang/R/Factors-of-a-Mersenne-number b/Lang/R/Factors-of-a-Mersenne-number
deleted file mode 120000
index 7aad181edd..0000000000
--- a/Lang/R/Factors-of-a-Mersenne-number
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factors-of-a-Mersenne-number/R
\ No newline at end of file
diff --git a/Lang/R/Fermat-numbers b/Lang/R/Fermat-numbers
deleted file mode 120000
index 17ea6a5311..0000000000
--- a/Lang/R/Fermat-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fermat-numbers/R
\ No newline at end of file
diff --git a/Lang/R/Fibonacci-n-step-number-sequences b/Lang/R/Fibonacci-n-step-number-sequences
deleted file mode 120000
index 1cf227761a..0000000000
--- a/Lang/R/Fibonacci-n-step-number-sequences
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fibonacci-n-step-number-sequences/R
\ No newline at end of file
diff --git a/Lang/R/File-extension-is-in-extensions-list b/Lang/R/File-extension-is-in-extensions-list
deleted file mode 120000
index 154f141040..0000000000
--- a/Lang/R/File-extension-is-in-extensions-list
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/File-extension-is-in-extensions-list/R
\ No newline at end of file
diff --git a/Lang/R/Find-palindromic-numbers-in-both-binary-and-ternary-bases b/Lang/R/Find-palindromic-numbers-in-both-binary-and-ternary-bases
deleted file mode 120000
index 1adf6989fe..0000000000
--- a/Lang/R/Find-palindromic-numbers-in-both-binary-and-ternary-bases
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Find-palindromic-numbers-in-both-binary-and-ternary-bases/R
\ No newline at end of file
diff --git a/Lang/R/Flipping-bits-game b/Lang/R/Flipping-bits-game
deleted file mode 120000
index 45f9cba067..0000000000
--- a/Lang/R/Flipping-bits-game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Flipping-bits-game/R
\ No newline at end of file
diff --git a/Lang/R/Floyd-Warshall-algorithm b/Lang/R/Floyd-Warshall-algorithm
deleted file mode 120000
index f0f7534bc6..0000000000
--- a/Lang/R/Floyd-Warshall-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Floyd-Warshall-algorithm/R
\ No newline at end of file
diff --git a/Lang/R/Fractran b/Lang/R/Fractran
deleted file mode 120000
index 4684d03d23..0000000000
--- a/Lang/R/Fractran
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fractran/R
\ No newline at end of file
diff --git a/Lang/R/Gapful-numbers b/Lang/R/Gapful-numbers
deleted file mode 120000
index d00abda6e0..0000000000
--- a/Lang/R/Gapful-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Gapful-numbers/R
\ No newline at end of file
diff --git a/Lang/R/Gauss-Jordan-matrix-inversion b/Lang/R/Gauss-Jordan-matrix-inversion
deleted file mode 120000
index abdff0e0d3..0000000000
--- a/Lang/R/Gauss-Jordan-matrix-inversion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Gauss-Jordan-matrix-inversion/R
\ No newline at end of file
diff --git a/Lang/R/Giuga-numbers b/Lang/R/Giuga-numbers
deleted file mode 120000
index e45399fcf4..0000000000
--- a/Lang/R/Giuga-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Giuga-numbers/R
\ No newline at end of file
diff --git a/Lang/R/Golden-ratio-Convergence b/Lang/R/Golden-ratio-Convergence
deleted file mode 120000
index c3444860a4..0000000000
--- a/Lang/R/Golden-ratio-Convergence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Golden-ratio-Convergence/R
\ No newline at end of file
diff --git a/Lang/R/Greedy-algorithm-for-Egyptian-fractions b/Lang/R/Greedy-algorithm-for-Egyptian-fractions
deleted file mode 120000
index 142b97c38d..0000000000
--- a/Lang/R/Greedy-algorithm-for-Egyptian-fractions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Greedy-algorithm-for-Egyptian-fractions/R
\ No newline at end of file
diff --git a/Lang/R/Halt-and-catch-fire b/Lang/R/Halt-and-catch-fire
deleted file mode 120000
index f754df332d..0000000000
--- a/Lang/R/Halt-and-catch-fire
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Halt-and-catch-fire/R
\ No newline at end of file
diff --git a/Lang/R/Harshad-or-Niven-series b/Lang/R/Harshad-or-Niven-series
deleted file mode 120000
index 30268e28d1..0000000000
--- a/Lang/R/Harshad-or-Niven-series
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Harshad-or-Niven-series/R
\ No newline at end of file
diff --git a/Lang/R/Hello-world-Newbie b/Lang/R/Hello-world-Newbie
deleted file mode 120000
index af7f835953..0000000000
--- a/Lang/R/Hello-world-Newbie
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Newbie/R
\ No newline at end of file
diff --git a/Lang/R/Hex-words b/Lang/R/Hex-words
deleted file mode 120000
index f38acbfb8b..0000000000
--- a/Lang/R/Hex-words
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hex-words/R
\ No newline at end of file
diff --git a/Lang/R/Humble-numbers b/Lang/R/Humble-numbers
deleted file mode 120000
index 66447beec9..0000000000
--- a/Lang/R/Humble-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Humble-numbers/R
\ No newline at end of file
diff --git a/Lang/R/ISBN13-check-digit b/Lang/R/ISBN13-check-digit
deleted file mode 120000
index 2ffb9a42ca..0000000000
--- a/Lang/R/ISBN13-check-digit
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/ISBN13-check-digit/R
\ No newline at end of file
diff --git a/Lang/R/Integer-overflow b/Lang/R/Integer-overflow
deleted file mode 120000
index 35a7fbe410..0000000000
--- a/Lang/R/Integer-overflow
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Integer-overflow/R
\ No newline at end of file
diff --git a/Lang/R/Isqrt-integer-square-root-of-X b/Lang/R/Isqrt-integer-square-root-of-X
deleted file mode 120000
index 3aa4e6becf..0000000000
--- a/Lang/R/Isqrt-integer-square-root-of-X
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Isqrt-integer-square-root-of-X/R
\ No newline at end of file
diff --git a/Lang/R/Kernighans-large-earthquake-problem b/Lang/R/Kernighans-large-earthquake-problem
deleted file mode 120000
index e4a703f050..0000000000
--- a/Lang/R/Kernighans-large-earthquake-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Kernighans-large-earthquake-problem/R
\ No newline at end of file
diff --git a/Lang/R/LZW-compression b/Lang/R/LZW-compression
deleted file mode 120000
index 52a9a7c425..0000000000
--- a/Lang/R/LZW-compression
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/LZW-compression/R
\ No newline at end of file
diff --git a/Lang/R/Literals-Floating-point b/Lang/R/Literals-Floating-point
deleted file mode 120000
index 45971f0459..0000000000
--- a/Lang/R/Literals-Floating-point
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Literals-Floating-point/R
\ No newline at end of file
diff --git a/Lang/R/Loops-With-multiple-ranges b/Lang/R/Loops-With-multiple-ranges
deleted file mode 120000
index b09ac16be3..0000000000
--- a/Lang/R/Loops-With-multiple-ranges
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-With-multiple-ranges/R
\ No newline at end of file
diff --git a/Lang/R/M-bius-function b/Lang/R/M-bius-function
deleted file mode 120000
index 54d202ad87..0000000000
--- a/Lang/R/M-bius-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/M-bius-function/R
\ No newline at end of file
diff --git a/Lang/R/Magic-constant b/Lang/R/Magic-constant
deleted file mode 120000
index 42b2f79fd6..0000000000
--- a/Lang/R/Magic-constant
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Magic-constant/R
\ No newline at end of file
diff --git a/Lang/R/Make-directory-path b/Lang/R/Make-directory-path
deleted file mode 120000
index 4c5b0435c3..0000000000
--- a/Lang/R/Make-directory-path
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Make-directory-path/R
\ No newline at end of file
diff --git a/Lang/R/Middle-three-digits b/Lang/R/Middle-three-digits
deleted file mode 120000
index d0b65517a3..0000000000
--- a/Lang/R/Middle-three-digits
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Middle-three-digits/R
\ No newline at end of file
diff --git a/Lang/R/Modular-arithmetic b/Lang/R/Modular-arithmetic
deleted file mode 120000
index d91672ac00..0000000000
--- a/Lang/R/Modular-arithmetic
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Modular-arithmetic/R
\ No newline at end of file
diff --git a/Lang/R/Modular-exponentiation b/Lang/R/Modular-exponentiation
deleted file mode 120000
index 00a5ab3605..0000000000
--- a/Lang/R/Modular-exponentiation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Modular-exponentiation/R
\ No newline at end of file
diff --git a/Lang/R/Move-to-front-algorithm b/Lang/R/Move-to-front-algorithm
deleted file mode 120000
index 4c2217c694..0000000000
--- a/Lang/R/Move-to-front-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Move-to-front-algorithm/R
\ No newline at end of file
diff --git a/Lang/R/Multi-dimensional-array b/Lang/R/Multi-dimensional-array
deleted file mode 120000
index c00f08cfcf..0000000000
--- a/Lang/R/Multi-dimensional-array
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Multi-dimensional-array/R
\ No newline at end of file
diff --git a/Lang/R/Munchausen-numbers b/Lang/R/Munchausen-numbers
deleted file mode 120000
index aa4d45945f..0000000000
--- a/Lang/R/Munchausen-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Munchausen-numbers/R
\ No newline at end of file
diff --git a/Lang/R/Munching-squares b/Lang/R/Munching-squares
deleted file mode 120000
index 5c31288892..0000000000
--- a/Lang/R/Munching-squares
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Munching-squares/R
\ No newline at end of file
diff --git a/Lang/R/Naming-conventions b/Lang/R/Naming-conventions
deleted file mode 120000
index 6ca70fbd5c..0000000000
--- a/Lang/R/Naming-conventions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Naming-conventions/R
\ No newline at end of file
diff --git a/Lang/R/Numbers-with-equal-rises-and-falls b/Lang/R/Numbers-with-equal-rises-and-falls
deleted file mode 120000
index bd2b09b1a8..0000000000
--- a/Lang/R/Numbers-with-equal-rises-and-falls
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Numbers-with-equal-rises-and-falls/R
\ No newline at end of file
diff --git a/Lang/R/Numeric-error-propagation b/Lang/R/Numeric-error-propagation
deleted file mode 120000
index b4d737b26d..0000000000
--- a/Lang/R/Numeric-error-propagation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Numeric-error-propagation/R
\ No newline at end of file
diff --git a/Lang/R/Old-Russian-measure-of-length b/Lang/R/Old-Russian-measure-of-length
deleted file mode 120000
index 10e03acc09..0000000000
--- a/Lang/R/Old-Russian-measure-of-length
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Old-Russian-measure-of-length/R
\ No newline at end of file
diff --git a/Lang/R/Order-two-numerical-lists b/Lang/R/Order-two-numerical-lists
deleted file mode 120000
index 7823304c26..0000000000
--- a/Lang/R/Order-two-numerical-lists
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Order-two-numerical-lists/R
\ No newline at end of file
diff --git a/Lang/R/Padovan-n-step-number-sequences b/Lang/R/Padovan-n-step-number-sequences
deleted file mode 120000
index bb121da853..0000000000
--- a/Lang/R/Padovan-n-step-number-sequences
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Padovan-n-step-number-sequences/R
\ No newline at end of file
diff --git a/Lang/R/Parse-an-IP-Address b/Lang/R/Parse-an-IP-Address
deleted file mode 120000
index 9f23986592..0000000000
--- a/Lang/R/Parse-an-IP-Address
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Parse-an-IP-Address/R
\ No newline at end of file
diff --git a/Lang/R/Parsing-RPN-calculator-algorithm b/Lang/R/Parsing-RPN-calculator-algorithm
deleted file mode 120000
index 121dbc0d6c..0000000000
--- a/Lang/R/Parsing-RPN-calculator-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Parsing-RPN-calculator-algorithm/R
\ No newline at end of file
diff --git a/Lang/R/Parsing-Shunting-yard-algorithm b/Lang/R/Parsing-Shunting-yard-algorithm
deleted file mode 120000
index ceae410d30..0000000000
--- a/Lang/R/Parsing-Shunting-yard-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Parsing-Shunting-yard-algorithm/R
\ No newline at end of file
diff --git a/Lang/R/Pernicious-numbers b/Lang/R/Pernicious-numbers
deleted file mode 120000
index e0d8d55200..0000000000
--- a/Lang/R/Pernicious-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pernicious-numbers/R
\ No newline at end of file
diff --git a/Lang/R/Phrase-reversals b/Lang/R/Phrase-reversals
deleted file mode 120000
index a54a2683b7..0000000000
--- a/Lang/R/Phrase-reversals
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Phrase-reversals/R
\ No newline at end of file
diff --git a/Lang/R/Pig-the-dice-game b/Lang/R/Pig-the-dice-game
deleted file mode 120000
index eb7f5b9e91..0000000000
--- a/Lang/R/Pig-the-dice-game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pig-the-dice-game/R
\ No newline at end of file
diff --git a/Lang/R/Pinstripe-Display b/Lang/R/Pinstripe-Display
deleted file mode 120000
index ecca9291db..0000000000
--- a/Lang/R/Pinstripe-Display
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pinstripe-Display/R
\ No newline at end of file
diff --git a/Lang/R/Plasma-effect b/Lang/R/Plasma-effect
deleted file mode 120000
index 0d663e21d0..0000000000
--- a/Lang/R/Plasma-effect
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Plasma-effect/R
\ No newline at end of file
diff --git a/Lang/R/Poker-hand-analyser b/Lang/R/Poker-hand-analyser
deleted file mode 120000
index 1291d08bb2..0000000000
--- a/Lang/R/Poker-hand-analyser
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Poker-hand-analyser/R
\ No newline at end of file
diff --git a/Lang/R/Pseudo-random-numbers-Middle-square-method b/Lang/R/Pseudo-random-numbers-Middle-square-method
deleted file mode 120000
index 27657f10ef..0000000000
--- a/Lang/R/Pseudo-random-numbers-Middle-square-method
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pseudo-random-numbers-Middle-square-method/R
\ No newline at end of file
diff --git a/Lang/R/Quaternion-type b/Lang/R/Quaternion-type
new file mode 120000
index 0000000000..2e826895b9
--- /dev/null
+++ b/Lang/R/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/R
\ No newline at end of file
diff --git a/Lang/R/Quickselect-algorithm b/Lang/R/Quickselect-algorithm
deleted file mode 120000
index 996073d670..0000000000
--- a/Lang/R/Quickselect-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Quickselect-algorithm/R
\ No newline at end of file
diff --git a/Lang/R/Rename-a-file b/Lang/R/Rename-a-file
deleted file mode 120000
index d3214c3f95..0000000000
--- a/Lang/R/Rename-a-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Rename-a-file/R
\ No newline at end of file
diff --git a/Lang/R/Rep-string b/Lang/R/Rep-string
deleted file mode 120000
index 6f2483d2e5..0000000000
--- a/Lang/R/Rep-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Rep-string/R
\ No newline at end of file
diff --git a/Lang/R/Repunit-primes b/Lang/R/Repunit-primes
deleted file mode 120000
index 9ae6100164..0000000000
--- a/Lang/R/Repunit-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Repunit-primes/R
\ No newline at end of file
diff --git a/Lang/R/Retrieve-and-search-chat-history b/Lang/R/Retrieve-and-search-chat-history
deleted file mode 120000
index 6f350b7b8c..0000000000
--- a/Lang/R/Retrieve-and-search-chat-history
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Retrieve-and-search-chat-history/R
\ No newline at end of file
diff --git a/Lang/R/Search-a-list-of-records b/Lang/R/Search-a-list-of-records
deleted file mode 120000
index ee8b509a32..0000000000
--- a/Lang/R/Search-a-list-of-records
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Search-a-list-of-records/R
\ No newline at end of file
diff --git a/Lang/R/Self-describing-numbers b/Lang/R/Self-describing-numbers
deleted file mode 120000
index 3e9383f257..0000000000
--- a/Lang/R/Self-describing-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Self-describing-numbers/R
\ No newline at end of file
diff --git a/Lang/R/Semordnilap b/Lang/R/Semordnilap
deleted file mode 120000
index 8ef388caef..0000000000
--- a/Lang/R/Semordnilap
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Semordnilap/R
\ No newline at end of file
diff --git a/Lang/R/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors b/Lang/R/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
similarity index 100%
rename from Lang/R/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors
rename to Lang/R/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
diff --git a/Lang/R/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/R/Sequence-smallest-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/R/Sequence:-smallest-number-with-exactly-n-divisors
rename to Lang/R/Sequence-smallest-number-with-exactly-n-divisors
diff --git a/Lang/R/Shoelace-formula-for-polygonal-area b/Lang/R/Shoelace-formula-for-polygonal-area
deleted file mode 120000
index 8e6ea3fcc6..0000000000
--- a/Lang/R/Shoelace-formula-for-polygonal-area
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Shoelace-formula-for-polygonal-area/R
\ No newline at end of file
diff --git a/Lang/R/Soloways-recurring-rainfall b/Lang/R/Soloways-recurring-rainfall
deleted file mode 120000
index 33b1f84311..0000000000
--- a/Lang/R/Soloways-recurring-rainfall
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Soloways-recurring-rainfall/R
\ No newline at end of file
diff --git a/Lang/R/Sort-numbers-lexicographically b/Lang/R/Sort-numbers-lexicographically
deleted file mode 120000
index 77a76317d2..0000000000
--- a/Lang/R/Sort-numbers-lexicographically
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-numbers-lexicographically/R
\ No newline at end of file
diff --git a/Lang/R/Sorting-algorithms-Bead-sort b/Lang/R/Sorting-algorithms-Bead-sort
deleted file mode 120000
index 4be00936ef..0000000000
--- a/Lang/R/Sorting-algorithms-Bead-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Bead-sort/R
\ No newline at end of file
diff --git a/Lang/R/Sorting-algorithms-Patience-sort b/Lang/R/Sorting-algorithms-Patience-sort
deleted file mode 120000
index bcaf3b078e..0000000000
--- a/Lang/R/Sorting-algorithms-Patience-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Patience-sort/R
\ No newline at end of file
diff --git a/Lang/R/Sorting-algorithms-Strand-sort b/Lang/R/Sorting-algorithms-Strand-sort
deleted file mode 120000
index 80a612e755..0000000000
--- a/Lang/R/Sorting-algorithms-Strand-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Strand-sort/R
\ No newline at end of file
diff --git a/Lang/R/Spinning-rod-animation-Text b/Lang/R/Spinning-rod-animation-Text
deleted file mode 120000
index 3083d1bb50..0000000000
--- a/Lang/R/Spinning-rod-animation-Text
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Spinning-rod-animation-Text/R
\ No newline at end of file
diff --git a/Lang/R/Split-a-character-string-based-on-change-of-character b/Lang/R/Split-a-character-string-based-on-change-of-character
deleted file mode 120000
index 16a92812f1..0000000000
--- a/Lang/R/Split-a-character-string-based-on-change-of-character
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Split-a-character-string-based-on-change-of-character/R
\ No newline at end of file
diff --git a/Lang/R/Square-free-integers b/Lang/R/Square-free-integers
deleted file mode 120000
index a07b4300b5..0000000000
--- a/Lang/R/Square-free-integers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Square-free-integers/R
\ No newline at end of file
diff --git a/Lang/R/Start-from-a-main-routine b/Lang/R/Start-from-a-main-routine
deleted file mode 120000
index 915851ff80..0000000000
--- a/Lang/R/Start-from-a-main-routine
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Start-from-a-main-routine/R
\ No newline at end of file
diff --git a/Lang/R/Strassens-algorithm b/Lang/R/Strassens-algorithm
deleted file mode 120000
index e4aa0075a9..0000000000
--- a/Lang/R/Strassens-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strassens-algorithm/R
\ No newline at end of file
diff --git a/Lang/R/String-interpolation-included- b/Lang/R/String-interpolation-included-
deleted file mode 120000
index f311002546..0000000000
--- a/Lang/R/String-interpolation-included-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-interpolation-included-/R
\ No newline at end of file
diff --git a/Lang/R/String-matching b/Lang/R/String-matching
deleted file mode 120000
index 2461134ac0..0000000000
--- a/Lang/R/String-matching
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-matching/R
\ No newline at end of file
diff --git a/Lang/R/Strip-a-set-of-characters-from-a-string b/Lang/R/Strip-a-set-of-characters-from-a-string
deleted file mode 120000
index b83d60c994..0000000000
--- a/Lang/R/Strip-a-set-of-characters-from-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strip-a-set-of-characters-from-a-string/R
\ No newline at end of file
diff --git a/Lang/R/Strip-block-comments b/Lang/R/Strip-block-comments
deleted file mode 120000
index 17c55383a8..0000000000
--- a/Lang/R/Strip-block-comments
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strip-block-comments/R
\ No newline at end of file
diff --git a/Lang/R/Substitution-cipher b/Lang/R/Substitution-cipher
deleted file mode 120000
index ce3c7f1ac2..0000000000
--- a/Lang/R/Substitution-cipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Substitution-cipher/R
\ No newline at end of file
diff --git a/Lang/R/Substring-Top-and-tail b/Lang/R/Substring-Top-and-tail
deleted file mode 120000
index 271cd3b15f..0000000000
--- a/Lang/R/Substring-Top-and-tail
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Substring-Top-and-tail/R
\ No newline at end of file
diff --git a/Lang/R/Superellipse b/Lang/R/Superellipse
deleted file mode 120000
index 3b8dc95f89..0000000000
--- a/Lang/R/Superellipse
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Superellipse/R
\ No newline at end of file
diff --git a/Lang/R/Sylvesters-sequence b/Lang/R/Sylvesters-sequence
deleted file mode 120000
index 29d289c6ff..0000000000
--- a/Lang/R/Sylvesters-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sylvesters-sequence/R
\ No newline at end of file
diff --git a/Lang/R/Textonyms b/Lang/R/Textonyms
deleted file mode 120000
index a6ba4b7c41..0000000000
--- a/Lang/R/Textonyms
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Textonyms/R
\ No newline at end of file
diff --git a/Lang/R/The-Name-Game b/Lang/R/The-Name-Game
deleted file mode 120000
index a5e981bf52..0000000000
--- a/Lang/R/The-Name-Game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/The-Name-Game/R
\ No newline at end of file
diff --git a/Lang/R/Tonelli-Shanks-algorithm b/Lang/R/Tonelli-Shanks-algorithm
deleted file mode 120000
index 2ad48c9cd5..0000000000
--- a/Lang/R/Tonelli-Shanks-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tonelli-Shanks-algorithm/R
\ No newline at end of file
diff --git a/Lang/R/Transliterate-English-text-using-the-Greek-alphabet b/Lang/R/Transliterate-English-text-using-the-Greek-alphabet
deleted file mode 120000
index 0b8d7b7463..0000000000
--- a/Lang/R/Transliterate-English-text-using-the-Greek-alphabet
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Transliterate-English-text-using-the-Greek-alphabet/R
\ No newline at end of file
diff --git a/Lang/R/Twelve-statements b/Lang/R/Twelve-statements
deleted file mode 120000
index 89536cfc68..0000000000
--- a/Lang/R/Twelve-statements
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Twelve-statements/R
\ No newline at end of file
diff --git a/Lang/R/Van-der-Corput-sequence b/Lang/R/Van-der-Corput-sequence
deleted file mode 120000
index 66a8a345d5..0000000000
--- a/Lang/R/Van-der-Corput-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Van-der-Corput-sequence/R
\ No newline at end of file
diff --git a/Lang/R/Variable-declaration-reset b/Lang/R/Variable-declaration-reset
deleted file mode 120000
index d5c07caba9..0000000000
--- a/Lang/R/Variable-declaration-reset
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Variable-declaration-reset/R
\ No newline at end of file
diff --git a/Lang/R/Vector b/Lang/R/Vector
deleted file mode 120000
index 3d5cfd297c..0000000000
--- a/Lang/R/Vector
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Vector/R
\ No newline at end of file
diff --git a/Lang/R/Verhoeff-algorithm b/Lang/R/Verhoeff-algorithm
deleted file mode 120000
index 2838835d10..0000000000
--- a/Lang/R/Verhoeff-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Verhoeff-algorithm/R
\ No newline at end of file
diff --git a/Lang/R/Wieferich-primes b/Lang/R/Wieferich-primes
deleted file mode 120000
index 1c103bdf36..0000000000
--- a/Lang/R/Wieferich-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Wieferich-primes/R
\ No newline at end of file
diff --git a/Lang/R/Wilson-primes-of-order-n b/Lang/R/Wilson-primes-of-order-n
deleted file mode 120000
index 0638b273a2..0000000000
--- a/Lang/R/Wilson-primes-of-order-n
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Wilson-primes-of-order-n/R
\ No newline at end of file
diff --git a/Lang/R/Write-entire-file b/Lang/R/Write-entire-file
deleted file mode 120000
index 2972bb07fe..0000000000
--- a/Lang/R/Write-entire-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Write-entire-file/R
\ No newline at end of file
diff --git a/Lang/REBOL/00-LANG.txt b/Lang/REBOL/00-LANG.txt
new file mode 100644
index 0000000000..0117c8198c
--- /dev/null
+++ b/Lang/REBOL/00-LANG.txt
@@ -0,0 +1,3 @@
+{{stub}}{{language|REBOL
+|site=http://rebol.com}}
+REBOL stands for Relative Expression Based Object Language.
\ No newline at end of file
diff --git a/Lang/REBOL/00-META.yaml b/Lang/REBOL/00-META.yaml
new file mode 100644
index 0000000000..58070bb517
--- /dev/null
+++ b/Lang/REBOL/00-META.yaml
@@ -0,0 +1,2 @@
+---
+from: http://rosettacode.org/wiki/Category:REBOL
diff --git a/Lang/REBOL/100-doors b/Lang/REBOL/100-doors
new file mode 120000
index 0000000000..3c604849c4
--- /dev/null
+++ b/Lang/REBOL/100-doors
@@ -0,0 +1 @@
+../../Task/100-doors/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/15-puzzle-game b/Lang/REBOL/15-puzzle-game
new file mode 120000
index 0000000000..ca19266202
--- /dev/null
+++ b/Lang/REBOL/15-puzzle-game
@@ -0,0 +1 @@
+../../Task/15-puzzle-game/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/99-bottles-of-beer b/Lang/REBOL/99-bottles-of-beer
new file mode 120000
index 0000000000..464d38e243
--- /dev/null
+++ b/Lang/REBOL/99-bottles-of-beer
@@ -0,0 +1 @@
+../../Task/99-bottles-of-beer/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/A+B b/Lang/REBOL/A+B
new file mode 120000
index 0000000000..a6531c3ec1
--- /dev/null
+++ b/Lang/REBOL/A+B
@@ -0,0 +1 @@
+../../Task/A+B/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Abstract-type b/Lang/REBOL/Abstract-type
new file mode 120000
index 0000000000..c01205f584
--- /dev/null
+++ b/Lang/REBOL/Abstract-type
@@ -0,0 +1 @@
+../../Task/Abstract-type/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Accumulator-factory b/Lang/REBOL/Accumulator-factory
new file mode 120000
index 0000000000..9f94ac82f1
--- /dev/null
+++ b/Lang/REBOL/Accumulator-factory
@@ -0,0 +1 @@
+../../Task/Accumulator-factory/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Add-a-variable-to-a-class-instance-at-runtime b/Lang/REBOL/Add-a-variable-to-a-class-instance-at-runtime
new file mode 120000
index 0000000000..901f7e7487
--- /dev/null
+++ b/Lang/REBOL/Add-a-variable-to-a-class-instance-at-runtime
@@ -0,0 +1 @@
+../../Task/Add-a-variable-to-a-class-instance-at-runtime/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Align-columns b/Lang/REBOL/Align-columns
new file mode 120000
index 0000000000..67ffa18d54
--- /dev/null
+++ b/Lang/REBOL/Align-columns
@@ -0,0 +1 @@
+../../Task/Align-columns/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Amicable-pairs b/Lang/REBOL/Amicable-pairs
new file mode 120000
index 0000000000..238ed42eb6
--- /dev/null
+++ b/Lang/REBOL/Amicable-pairs
@@ -0,0 +1 @@
+../../Task/Amicable-pairs/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Animation b/Lang/REBOL/Animation
new file mode 120000
index 0000000000..0fccfbad33
--- /dev/null
+++ b/Lang/REBOL/Animation
@@ -0,0 +1 @@
+../../Task/Animation/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Anonymous-recursion b/Lang/REBOL/Anonymous-recursion
new file mode 120000
index 0000000000..5c9e13cbb0
--- /dev/null
+++ b/Lang/REBOL/Anonymous-recursion
@@ -0,0 +1 @@
+../../Task/Anonymous-recursion/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Apply-a-callback-to-an-array b/Lang/REBOL/Apply-a-callback-to-an-array
new file mode 120000
index 0000000000..a9a331e92d
--- /dev/null
+++ b/Lang/REBOL/Apply-a-callback-to-an-array
@@ -0,0 +1 @@
+../../Task/Apply-a-callback-to-an-array/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Arithmetic-Integer b/Lang/REBOL/Arithmetic-Integer
new file mode 120000
index 0000000000..acafb7724e
--- /dev/null
+++ b/Lang/REBOL/Arithmetic-Integer
@@ -0,0 +1 @@
+../../Task/Arithmetic-Integer/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Array-concatenation b/Lang/REBOL/Array-concatenation
new file mode 120000
index 0000000000..679c10ed62
--- /dev/null
+++ b/Lang/REBOL/Array-concatenation
@@ -0,0 +1 @@
+../../Task/Array-concatenation/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Array-length b/Lang/REBOL/Array-length
new file mode 120000
index 0000000000..d083adde64
--- /dev/null
+++ b/Lang/REBOL/Array-length
@@ -0,0 +1 @@
+../../Task/Array-length/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Arrays b/Lang/REBOL/Arrays
new file mode 120000
index 0000000000..9fc95551ee
--- /dev/null
+++ b/Lang/REBOL/Arrays
@@ -0,0 +1 @@
+../../Task/Arrays/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Averages-Arithmetic-mean b/Lang/REBOL/Averages-Arithmetic-mean
new file mode 120000
index 0000000000..de8cb5e395
--- /dev/null
+++ b/Lang/REBOL/Averages-Arithmetic-mean
@@ -0,0 +1 @@
+../../Task/Averages-Arithmetic-mean/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Averages-Median b/Lang/REBOL/Averages-Median
new file mode 120000
index 0000000000..96ef2cd694
--- /dev/null
+++ b/Lang/REBOL/Averages-Median
@@ -0,0 +1 @@
+../../Task/Averages-Median/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Calendar b/Lang/REBOL/Calendar
new file mode 120000
index 0000000000..f396941538
--- /dev/null
+++ b/Lang/REBOL/Calendar
@@ -0,0 +1 @@
+../../Task/Calendar/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Check-that-file-exists b/Lang/REBOL/Check-that-file-exists
new file mode 120000
index 0000000000..70f5435458
--- /dev/null
+++ b/Lang/REBOL/Check-that-file-exists
@@ -0,0 +1 @@
+../../Task/Check-that-file-exists/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Classes b/Lang/REBOL/Classes
new file mode 120000
index 0000000000..f823823847
--- /dev/null
+++ b/Lang/REBOL/Classes
@@ -0,0 +1 @@
+../../Task/Classes/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Comma-quibbling b/Lang/REBOL/Comma-quibbling
new file mode 120000
index 0000000000..b2f7530541
--- /dev/null
+++ b/Lang/REBOL/Comma-quibbling
@@ -0,0 +1 @@
+../../Task/Comma-quibbling/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Comments b/Lang/REBOL/Comments
new file mode 120000
index 0000000000..2dad54191c
--- /dev/null
+++ b/Lang/REBOL/Comments
@@ -0,0 +1 @@
+../../Task/Comments/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Copy-a-string b/Lang/REBOL/Copy-a-string
new file mode 120000
index 0000000000..8babad9959
--- /dev/null
+++ b/Lang/REBOL/Copy-a-string
@@ -0,0 +1 @@
+../../Task/Copy-a-string/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Create-a-file b/Lang/REBOL/Create-a-file
new file mode 120000
index 0000000000..3089537d01
--- /dev/null
+++ b/Lang/REBOL/Create-a-file
@@ -0,0 +1 @@
+../../Task/Create-a-file/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Date-format b/Lang/REBOL/Date-format
new file mode 120000
index 0000000000..33ce065e87
--- /dev/null
+++ b/Lang/REBOL/Date-format
@@ -0,0 +1 @@
+../../Task/Date-format/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Date-manipulation b/Lang/REBOL/Date-manipulation
new file mode 120000
index 0000000000..2722a008ce
--- /dev/null
+++ b/Lang/REBOL/Date-manipulation
@@ -0,0 +1 @@
+../../Task/Date-manipulation/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Day-of-the-week b/Lang/REBOL/Day-of-the-week
new file mode 120000
index 0000000000..82d7509a60
--- /dev/null
+++ b/Lang/REBOL/Day-of-the-week
@@ -0,0 +1 @@
+../../Task/Day-of-the-week/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Delete-a-file b/Lang/REBOL/Delete-a-file
new file mode 120000
index 0000000000..66f14845d7
--- /dev/null
+++ b/Lang/REBOL/Delete-a-file
@@ -0,0 +1 @@
+../../Task/Delete-a-file/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Detect-division-by-zero b/Lang/REBOL/Detect-division-by-zero
new file mode 120000
index 0000000000..b0ccafd718
--- /dev/null
+++ b/Lang/REBOL/Detect-division-by-zero
@@ -0,0 +1 @@
+../../Task/Detect-division-by-zero/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Determine-if-a-string-is-numeric b/Lang/REBOL/Determine-if-a-string-is-numeric
new file mode 120000
index 0000000000..045a0ae13f
--- /dev/null
+++ b/Lang/REBOL/Determine-if-a-string-is-numeric
@@ -0,0 +1 @@
+../../Task/Determine-if-a-string-is-numeric/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Documentation b/Lang/REBOL/Documentation
new file mode 120000
index 0000000000..daa69740d8
--- /dev/null
+++ b/Lang/REBOL/Documentation
@@ -0,0 +1 @@
+../../Task/Documentation/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Dot-product b/Lang/REBOL/Dot-product
new file mode 120000
index 0000000000..0e405ceca0
--- /dev/null
+++ b/Lang/REBOL/Dot-product
@@ -0,0 +1 @@
+../../Task/Dot-product/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Dynamic-variable-names b/Lang/REBOL/Dynamic-variable-names
new file mode 120000
index 0000000000..dc26f8842e
--- /dev/null
+++ b/Lang/REBOL/Dynamic-variable-names
@@ -0,0 +1 @@
+../../Task/Dynamic-variable-names/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Echo-server b/Lang/REBOL/Echo-server
new file mode 120000
index 0000000000..e5f15ce096
--- /dev/null
+++ b/Lang/REBOL/Echo-server
@@ -0,0 +1 @@
+../../Task/Echo-server/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Empty-program b/Lang/REBOL/Empty-program
new file mode 120000
index 0000000000..15b162acc2
--- /dev/null
+++ b/Lang/REBOL/Empty-program
@@ -0,0 +1 @@
+../../Task/Empty-program/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Environment-variables b/Lang/REBOL/Environment-variables
new file mode 120000
index 0000000000..1742700711
--- /dev/null
+++ b/Lang/REBOL/Environment-variables
@@ -0,0 +1 @@
+../../Task/Environment-variables/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Execute-Brain- b/Lang/REBOL/Execute-Brain-
new file mode 120000
index 0000000000..5d49896311
--- /dev/null
+++ b/Lang/REBOL/Execute-Brain-
@@ -0,0 +1 @@
+../../Task/Execute-Brain-/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Execute-a-system-command b/Lang/REBOL/Execute-a-system-command
new file mode 120000
index 0000000000..6177e36583
--- /dev/null
+++ b/Lang/REBOL/Execute-a-system-command
@@ -0,0 +1 @@
+../../Task/Execute-a-system-command/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/FTP b/Lang/REBOL/FTP
new file mode 120000
index 0000000000..7ab1c53c58
--- /dev/null
+++ b/Lang/REBOL/FTP
@@ -0,0 +1 @@
+../../Task/FTP/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Factorial b/Lang/REBOL/Factorial
new file mode 120000
index 0000000000..8643656c0a
--- /dev/null
+++ b/Lang/REBOL/Factorial
@@ -0,0 +1 @@
+../../Task/Factorial/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/File-input-output b/Lang/REBOL/File-input-output
new file mode 120000
index 0000000000..30e510fb5d
--- /dev/null
+++ b/Lang/REBOL/File-input-output
@@ -0,0 +1 @@
+../../Task/File-input-output/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/File-size b/Lang/REBOL/File-size
new file mode 120000
index 0000000000..61c4252f32
--- /dev/null
+++ b/Lang/REBOL/File-size
@@ -0,0 +1 @@
+../../Task/File-size/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Filter b/Lang/REBOL/Filter
new file mode 120000
index 0000000000..d25c807398
--- /dev/null
+++ b/Lang/REBOL/Filter
@@ -0,0 +1 @@
+../../Task/Filter/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Find-the-last-Sunday-of-each-month b/Lang/REBOL/Find-the-last-Sunday-of-each-month
new file mode 120000
index 0000000000..c54d330170
--- /dev/null
+++ b/Lang/REBOL/Find-the-last-Sunday-of-each-month
@@ -0,0 +1 @@
+../../Task/Find-the-last-Sunday-of-each-month/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/First-class-functions b/Lang/REBOL/First-class-functions
new file mode 120000
index 0000000000..729d2ef773
--- /dev/null
+++ b/Lang/REBOL/First-class-functions
@@ -0,0 +1 @@
+../../Task/First-class-functions/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Fixed-length-records b/Lang/REBOL/Fixed-length-records
new file mode 120000
index 0000000000..c6d6d1ea72
--- /dev/null
+++ b/Lang/REBOL/Fixed-length-records
@@ -0,0 +1 @@
+../../Task/Fixed-length-records/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/FizzBuzz b/Lang/REBOL/FizzBuzz
new file mode 120000
index 0000000000..5fada5dc79
--- /dev/null
+++ b/Lang/REBOL/FizzBuzz
@@ -0,0 +1 @@
+../../Task/FizzBuzz/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Flatten-a-list b/Lang/REBOL/Flatten-a-list
new file mode 120000
index 0000000000..c63e60f1ae
--- /dev/null
+++ b/Lang/REBOL/Flatten-a-list
@@ -0,0 +1 @@
+../../Task/Flatten-a-list/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Flow-control-structures b/Lang/REBOL/Flow-control-structures
new file mode 120000
index 0000000000..02978f970b
--- /dev/null
+++ b/Lang/REBOL/Flow-control-structures
@@ -0,0 +1 @@
+../../Task/Flow-control-structures/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Formatted-numeric-output b/Lang/REBOL/Formatted-numeric-output
new file mode 120000
index 0000000000..6231201b56
--- /dev/null
+++ b/Lang/REBOL/Formatted-numeric-output
@@ -0,0 +1 @@
+../../Task/Formatted-numeric-output/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Function-composition b/Lang/REBOL/Function-composition
new file mode 120000
index 0000000000..00fbef410f
--- /dev/null
+++ b/Lang/REBOL/Function-composition
@@ -0,0 +1 @@
+../../Task/Function-composition/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Function-definition b/Lang/REBOL/Function-definition
new file mode 120000
index 0000000000..24045b17c8
--- /dev/null
+++ b/Lang/REBOL/Function-definition
@@ -0,0 +1 @@
+../../Task/Function-definition/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Generic-swap b/Lang/REBOL/Generic-swap
new file mode 120000
index 0000000000..252d05095f
--- /dev/null
+++ b/Lang/REBOL/Generic-swap
@@ -0,0 +1 @@
+../../Task/Generic-swap/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Greatest-common-divisor b/Lang/REBOL/Greatest-common-divisor
new file mode 120000
index 0000000000..66251fda3d
--- /dev/null
+++ b/Lang/REBOL/Greatest-common-divisor
@@ -0,0 +1 @@
+../../Task/Greatest-common-divisor/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Greatest-element-of-a-list b/Lang/REBOL/Greatest-element-of-a-list
new file mode 120000
index 0000000000..bf835b648c
--- /dev/null
+++ b/Lang/REBOL/Greatest-element-of-a-list
@@ -0,0 +1 @@
+../../Task/Greatest-element-of-a-list/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/HTTP b/Lang/REBOL/HTTP
new file mode 120000
index 0000000000..7ade844f73
--- /dev/null
+++ b/Lang/REBOL/HTTP
@@ -0,0 +1 @@
+../../Task/HTTP/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Hailstone-sequence b/Lang/REBOL/Hailstone-sequence
new file mode 120000
index 0000000000..f668d98fe0
--- /dev/null
+++ b/Lang/REBOL/Hailstone-sequence
@@ -0,0 +1 @@
+../../Task/Hailstone-sequence/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Hello-world-Graphical b/Lang/REBOL/Hello-world-Graphical
new file mode 120000
index 0000000000..65375f6063
--- /dev/null
+++ b/Lang/REBOL/Hello-world-Graphical
@@ -0,0 +1 @@
+../../Task/Hello-world-Graphical/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Hello-world-Newline-omission b/Lang/REBOL/Hello-world-Newline-omission
new file mode 120000
index 0000000000..a1ab230770
--- /dev/null
+++ b/Lang/REBOL/Hello-world-Newline-omission
@@ -0,0 +1 @@
+../../Task/Hello-world-Newline-omission/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Hello-world-Text b/Lang/REBOL/Hello-world-Text
new file mode 120000
index 0000000000..417f675e90
--- /dev/null
+++ b/Lang/REBOL/Hello-world-Text
@@ -0,0 +1 @@
+../../Task/Hello-world-Text/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Higher-order-functions b/Lang/REBOL/Higher-order-functions
new file mode 120000
index 0000000000..e0da7764d4
--- /dev/null
+++ b/Lang/REBOL/Higher-order-functions
@@ -0,0 +1 @@
+../../Task/Higher-order-functions/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Horners-rule-for-polynomial-evaluation b/Lang/REBOL/Horners-rule-for-polynomial-evaluation
new file mode 120000
index 0000000000..3ed4d272a6
--- /dev/null
+++ b/Lang/REBOL/Horners-rule-for-polynomial-evaluation
@@ -0,0 +1 @@
+../../Task/Horners-rule-for-polynomial-evaluation/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Hostname b/Lang/REBOL/Hostname
new file mode 120000
index 0000000000..00509fe88c
--- /dev/null
+++ b/Lang/REBOL/Hostname
@@ -0,0 +1 @@
+../../Task/Hostname/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Increment-a-numerical-string b/Lang/REBOL/Increment-a-numerical-string
new file mode 120000
index 0000000000..0b8ae5b473
--- /dev/null
+++ b/Lang/REBOL/Increment-a-numerical-string
@@ -0,0 +1 @@
+../../Task/Increment-a-numerical-string/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Inheritance-Single b/Lang/REBOL/Inheritance-Single
new file mode 120000
index 0000000000..8790c38450
--- /dev/null
+++ b/Lang/REBOL/Inheritance-Single
@@ -0,0 +1 @@
+../../Task/Inheritance-Single/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Input-loop b/Lang/REBOL/Input-loop
new file mode 120000
index 0000000000..81d9914a81
--- /dev/null
+++ b/Lang/REBOL/Input-loop
@@ -0,0 +1 @@
+../../Task/Input-loop/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Integer-comparison b/Lang/REBOL/Integer-comparison
new file mode 120000
index 0000000000..6f12d33801
--- /dev/null
+++ b/Lang/REBOL/Integer-comparison
@@ -0,0 +1 @@
+../../Task/Integer-comparison/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Interactive-programming-repl- b/Lang/REBOL/Interactive-programming-repl-
new file mode 120000
index 0000000000..a2a59ee516
--- /dev/null
+++ b/Lang/REBOL/Interactive-programming-repl-
@@ -0,0 +1 @@
+../../Task/Interactive-programming-repl-/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/JSON b/Lang/REBOL/JSON
new file mode 120000
index 0000000000..bbdd962074
--- /dev/null
+++ b/Lang/REBOL/JSON
@@ -0,0 +1 @@
+../../Task/JSON/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Josephus-problem b/Lang/REBOL/Josephus-problem
new file mode 120000
index 0000000000..d092745290
--- /dev/null
+++ b/Lang/REBOL/Josephus-problem
@@ -0,0 +1 @@
+../../Task/Josephus-problem/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Keyboard-macros b/Lang/REBOL/Keyboard-macros
new file mode 120000
index 0000000000..4c918106f7
--- /dev/null
+++ b/Lang/REBOL/Keyboard-macros
@@ -0,0 +1 @@
+../../Task/Keyboard-macros/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Knuth-shuffle b/Lang/REBOL/Knuth-shuffle
new file mode 120000
index 0000000000..e1ef5ac835
--- /dev/null
+++ b/Lang/REBOL/Knuth-shuffle
@@ -0,0 +1 @@
+../../Task/Knuth-shuffle/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Last-Friday-of-each-month b/Lang/REBOL/Last-Friday-of-each-month
new file mode 120000
index 0000000000..592b3befd7
--- /dev/null
+++ b/Lang/REBOL/Last-Friday-of-each-month
@@ -0,0 +1 @@
+../../Task/Last-Friday-of-each-month/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Leap-year b/Lang/REBOL/Leap-year
new file mode 120000
index 0000000000..e1fde0d2a0
--- /dev/null
+++ b/Lang/REBOL/Leap-year
@@ -0,0 +1 @@
+../../Task/Leap-year/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Literals-Integer b/Lang/REBOL/Literals-Integer
new file mode 120000
index 0000000000..c018808d2d
--- /dev/null
+++ b/Lang/REBOL/Literals-Integer
@@ -0,0 +1 @@
+../../Task/Literals-Integer/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Logical-operations b/Lang/REBOL/Logical-operations
new file mode 120000
index 0000000000..b2be03cb20
--- /dev/null
+++ b/Lang/REBOL/Logical-operations
@@ -0,0 +1 @@
+../../Task/Logical-operations/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Loops-Break b/Lang/REBOL/Loops-Break
new file mode 120000
index 0000000000..b12b588bcd
--- /dev/null
+++ b/Lang/REBOL/Loops-Break
@@ -0,0 +1 @@
+../../Task/Loops-Break/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Loops-Continue b/Lang/REBOL/Loops-Continue
new file mode 120000
index 0000000000..620f8d42c2
--- /dev/null
+++ b/Lang/REBOL/Loops-Continue
@@ -0,0 +1 @@
+../../Task/Loops-Continue/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Loops-Do-while b/Lang/REBOL/Loops-Do-while
new file mode 120000
index 0000000000..a092621ef7
--- /dev/null
+++ b/Lang/REBOL/Loops-Do-while
@@ -0,0 +1 @@
+../../Task/Loops-Do-while/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Loops-Downward-for b/Lang/REBOL/Loops-Downward-for
new file mode 120000
index 0000000000..e956288e68
--- /dev/null
+++ b/Lang/REBOL/Loops-Downward-for
@@ -0,0 +1 @@
+../../Task/Loops-Downward-for/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Loops-For b/Lang/REBOL/Loops-For
new file mode 120000
index 0000000000..9c59f991f0
--- /dev/null
+++ b/Lang/REBOL/Loops-For
@@ -0,0 +1 @@
+../../Task/Loops-For/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Loops-For-with-a-specified-step b/Lang/REBOL/Loops-For-with-a-specified-step
new file mode 120000
index 0000000000..3174e4899e
--- /dev/null
+++ b/Lang/REBOL/Loops-For-with-a-specified-step
@@ -0,0 +1 @@
+../../Task/Loops-For-with-a-specified-step/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Loops-Foreach b/Lang/REBOL/Loops-Foreach
new file mode 120000
index 0000000000..98cc61392e
--- /dev/null
+++ b/Lang/REBOL/Loops-Foreach
@@ -0,0 +1 @@
+../../Task/Loops-Foreach/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Loops-Infinite b/Lang/REBOL/Loops-Infinite
new file mode 120000
index 0000000000..cd80f1fc2f
--- /dev/null
+++ b/Lang/REBOL/Loops-Infinite
@@ -0,0 +1 @@
+../../Task/Loops-Infinite/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Loops-N-plus-one-half b/Lang/REBOL/Loops-N-plus-one-half
new file mode 120000
index 0000000000..530a004b19
--- /dev/null
+++ b/Lang/REBOL/Loops-N-plus-one-half
@@ -0,0 +1 @@
+../../Task/Loops-N-plus-one-half/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Loops-Nested b/Lang/REBOL/Loops-Nested
new file mode 120000
index 0000000000..fad704e1b5
--- /dev/null
+++ b/Lang/REBOL/Loops-Nested
@@ -0,0 +1 @@
+../../Task/Loops-Nested/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Loops-While b/Lang/REBOL/Loops-While
new file mode 120000
index 0000000000..7caecdb43d
--- /dev/null
+++ b/Lang/REBOL/Loops-While
@@ -0,0 +1 @@
+../../Task/Loops-While/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/MD5 b/Lang/REBOL/MD5
new file mode 120000
index 0000000000..5cb019110c
--- /dev/null
+++ b/Lang/REBOL/MD5
@@ -0,0 +1 @@
+../../Task/MD5/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Mad-Libs b/Lang/REBOL/Mad-Libs
new file mode 120000
index 0000000000..db4b8d6171
--- /dev/null
+++ b/Lang/REBOL/Mad-Libs
@@ -0,0 +1 @@
+../../Task/Mad-Libs/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Menu b/Lang/REBOL/Menu
new file mode 120000
index 0000000000..3b0b7dc2de
--- /dev/null
+++ b/Lang/REBOL/Menu
@@ -0,0 +1 @@
+../../Task/Menu/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Multiplication-tables b/Lang/REBOL/Multiplication-tables
new file mode 120000
index 0000000000..1b70d39ee9
--- /dev/null
+++ b/Lang/REBOL/Multiplication-tables
@@ -0,0 +1 @@
+../../Task/Multiplication-tables/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Mutual-recursion b/Lang/REBOL/Mutual-recursion
new file mode 120000
index 0000000000..cb2de22d29
--- /dev/null
+++ b/Lang/REBOL/Mutual-recursion
@@ -0,0 +1 @@
+../../Task/Mutual-recursion/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Null-object b/Lang/REBOL/Null-object
new file mode 120000
index 0000000000..0b324069d2
--- /dev/null
+++ b/Lang/REBOL/Null-object
@@ -0,0 +1 @@
+../../Task/Null-object/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Number-reversal-game b/Lang/REBOL/Number-reversal-game
new file mode 120000
index 0000000000..a23e4203b5
--- /dev/null
+++ b/Lang/REBOL/Number-reversal-game
@@ -0,0 +1 @@
+../../Task/Number-reversal-game/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Palindrome-detection b/Lang/REBOL/Palindrome-detection
new file mode 120000
index 0000000000..45e3490dd4
--- /dev/null
+++ b/Lang/REBOL/Palindrome-detection
@@ -0,0 +1 @@
+../../Task/Palindrome-detection/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Percentage-difference-between-images b/Lang/REBOL/Percentage-difference-between-images
new file mode 120000
index 0000000000..47e0c29027
--- /dev/null
+++ b/Lang/REBOL/Percentage-difference-between-images
@@ -0,0 +1 @@
+../../Task/Percentage-difference-between-images/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Perfect-numbers b/Lang/REBOL/Perfect-numbers
new file mode 120000
index 0000000000..888589d0dd
--- /dev/null
+++ b/Lang/REBOL/Perfect-numbers
@@ -0,0 +1 @@
+../../Task/Perfect-numbers/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Primality-by-trial-division b/Lang/REBOL/Primality-by-trial-division
new file mode 120000
index 0000000000..6e14471054
--- /dev/null
+++ b/Lang/REBOL/Primality-by-trial-division
@@ -0,0 +1 @@
+../../Task/Primality-by-trial-division/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Program-termination b/Lang/REBOL/Program-termination
new file mode 120000
index 0000000000..7c4ce8b3c8
--- /dev/null
+++ b/Lang/REBOL/Program-termination
@@ -0,0 +1 @@
+../../Task/Program-termination/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Queue-Definition b/Lang/REBOL/Queue-Definition
new file mode 120000
index 0000000000..aa21697e36
--- /dev/null
+++ b/Lang/REBOL/Queue-Definition
@@ -0,0 +1 @@
+../../Task/Queue-Definition/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Queue-Usage b/Lang/REBOL/Queue-Usage
new file mode 120000
index 0000000000..488c4682f8
--- /dev/null
+++ b/Lang/REBOL/Queue-Usage
@@ -0,0 +1 @@
+../../Task/Queue-Usage/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Quine b/Lang/REBOL/Quine
new file mode 120000
index 0000000000..391f27dc9c
--- /dev/null
+++ b/Lang/REBOL/Quine
@@ -0,0 +1 @@
+../../Task/Quine/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Read-a-specific-line-from-a-file b/Lang/REBOL/Read-a-specific-line-from-a-file
new file mode 120000
index 0000000000..fc3cb7c086
--- /dev/null
+++ b/Lang/REBOL/Read-a-specific-line-from-a-file
@@ -0,0 +1 @@
+../../Task/Read-a-specific-line-from-a-file/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Read-entire-file b/Lang/REBOL/Read-entire-file
new file mode 120000
index 0000000000..8d1ffdb8c8
--- /dev/null
+++ b/Lang/REBOL/Read-entire-file
@@ -0,0 +1 @@
+../../Task/Read-entire-file/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Regular-expressions b/Lang/REBOL/Regular-expressions
new file mode 120000
index 0000000000..cc056f3dfc
--- /dev/null
+++ b/Lang/REBOL/Regular-expressions
@@ -0,0 +1 @@
+../../Task/Regular-expressions/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Remove-duplicate-elements b/Lang/REBOL/Remove-duplicate-elements
new file mode 120000
index 0000000000..989597f93c
--- /dev/null
+++ b/Lang/REBOL/Remove-duplicate-elements
@@ -0,0 +1 @@
+../../Task/Remove-duplicate-elements/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Rename-a-file b/Lang/REBOL/Rename-a-file
new file mode 120000
index 0000000000..d5b1f76dba
--- /dev/null
+++ b/Lang/REBOL/Rename-a-file
@@ -0,0 +1 @@
+../../Task/Rename-a-file/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Repeat-a-string b/Lang/REBOL/Repeat-a-string
new file mode 120000
index 0000000000..df3bda003c
--- /dev/null
+++ b/Lang/REBOL/Repeat-a-string
@@ -0,0 +1 @@
+../../Task/Repeat-a-string/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Reverse-a-string b/Lang/REBOL/Reverse-a-string
new file mode 120000
index 0000000000..4fa66fa042
--- /dev/null
+++ b/Lang/REBOL/Reverse-a-string
@@ -0,0 +1 @@
+../../Task/Reverse-a-string/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Rot-13 b/Lang/REBOL/Rot-13
new file mode 120000
index 0000000000..344b9949b8
--- /dev/null
+++ b/Lang/REBOL/Rot-13
@@ -0,0 +1 @@
+../../Task/Rot-13/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Runtime-evaluation b/Lang/REBOL/Runtime-evaluation
new file mode 120000
index 0000000000..4f29a7904a
--- /dev/null
+++ b/Lang/REBOL/Runtime-evaluation
@@ -0,0 +1 @@
+../../Task/Runtime-evaluation/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Runtime-evaluation-In-an-environment b/Lang/REBOL/Runtime-evaluation-In-an-environment
new file mode 120000
index 0000000000..00ac88948d
--- /dev/null
+++ b/Lang/REBOL/Runtime-evaluation-In-an-environment
@@ -0,0 +1 @@
+../../Task/Runtime-evaluation-In-an-environment/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Search-a-list b/Lang/REBOL/Search-a-list
new file mode 120000
index 0000000000..30c4450829
--- /dev/null
+++ b/Lang/REBOL/Search-a-list
@@ -0,0 +1 @@
+../../Task/Search-a-list/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Send-email b/Lang/REBOL/Send-email
new file mode 120000
index 0000000000..7a102c33ea
--- /dev/null
+++ b/Lang/REBOL/Send-email
@@ -0,0 +1 @@
+../../Task/Send-email/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Shell-one-liner b/Lang/REBOL/Shell-one-liner
new file mode 120000
index 0000000000..3efd76bee3
--- /dev/null
+++ b/Lang/REBOL/Shell-one-liner
@@ -0,0 +1 @@
+../../Task/Shell-one-liner/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Simple-database b/Lang/REBOL/Simple-database
new file mode 120000
index 0000000000..2171f3e8b2
--- /dev/null
+++ b/Lang/REBOL/Simple-database
@@ -0,0 +1 @@
+../../Task/Simple-database/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Simple-windowed-application b/Lang/REBOL/Simple-windowed-application
new file mode 120000
index 0000000000..3eb2f5011a
--- /dev/null
+++ b/Lang/REBOL/Simple-windowed-application
@@ -0,0 +1 @@
+../../Task/Simple-windowed-application/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Sleep b/Lang/REBOL/Sleep
new file mode 120000
index 0000000000..49498dee8f
--- /dev/null
+++ b/Lang/REBOL/Sleep
@@ -0,0 +1 @@
+../../Task/Sleep/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Sort-an-integer-array b/Lang/REBOL/Sort-an-integer-array
new file mode 120000
index 0000000000..be40906bd3
--- /dev/null
+++ b/Lang/REBOL/Sort-an-integer-array
@@ -0,0 +1 @@
+../../Task/Sort-an-integer-array/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Sort-stability b/Lang/REBOL/Sort-stability
new file mode 120000
index 0000000000..7a6119bc4e
--- /dev/null
+++ b/Lang/REBOL/Sort-stability
@@ -0,0 +1 @@
+../../Task/Sort-stability/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Sorting-algorithms-Insertion-sort b/Lang/REBOL/Sorting-algorithms-Insertion-sort
new file mode 120000
index 0000000000..5a9f9f2f24
--- /dev/null
+++ b/Lang/REBOL/Sorting-algorithms-Insertion-sort
@@ -0,0 +1 @@
+../../Task/Sorting-algorithms-Insertion-sort/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Stack b/Lang/REBOL/Stack
new file mode 120000
index 0000000000..70bb3936ee
--- /dev/null
+++ b/Lang/REBOL/Stack
@@ -0,0 +1 @@
+../../Task/Stack/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Stair-climbing-puzzle b/Lang/REBOL/Stair-climbing-puzzle
new file mode 120000
index 0000000000..935f1a3925
--- /dev/null
+++ b/Lang/REBOL/Stair-climbing-puzzle
@@ -0,0 +1 @@
+../../Task/Stair-climbing-puzzle/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/String-case b/Lang/REBOL/String-case
new file mode 120000
index 0000000000..2279191d8d
--- /dev/null
+++ b/Lang/REBOL/String-case
@@ -0,0 +1 @@
+../../Task/String-case/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/String-concatenation b/Lang/REBOL/String-concatenation
new file mode 120000
index 0000000000..8be78ed69f
--- /dev/null
+++ b/Lang/REBOL/String-concatenation
@@ -0,0 +1 @@
+../../Task/String-concatenation/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/String-interpolation-included- b/Lang/REBOL/String-interpolation-included-
new file mode 120000
index 0000000000..1158cc37bc
--- /dev/null
+++ b/Lang/REBOL/String-interpolation-included-
@@ -0,0 +1 @@
+../../Task/String-interpolation-included-/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/String-length b/Lang/REBOL/String-length
new file mode 120000
index 0000000000..06c8f5cbd6
--- /dev/null
+++ b/Lang/REBOL/String-length
@@ -0,0 +1 @@
+../../Task/String-length/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Substring b/Lang/REBOL/Substring
new file mode 120000
index 0000000000..ae87eb5a53
--- /dev/null
+++ b/Lang/REBOL/Substring
@@ -0,0 +1 @@
+../../Task/Substring/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Sum-and-product-of-an-array b/Lang/REBOL/Sum-and-product-of-an-array
new file mode 120000
index 0000000000..5ce08d6535
--- /dev/null
+++ b/Lang/REBOL/Sum-and-product-of-an-array
@@ -0,0 +1 @@
+../../Task/Sum-and-product-of-an-array/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Symmetric-difference b/Lang/REBOL/Symmetric-difference
new file mode 120000
index 0000000000..27c9c680ad
--- /dev/null
+++ b/Lang/REBOL/Symmetric-difference
@@ -0,0 +1 @@
+../../Task/Symmetric-difference/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/System-time b/Lang/REBOL/System-time
new file mode 120000
index 0000000000..7ea31d4a27
--- /dev/null
+++ b/Lang/REBOL/System-time
@@ -0,0 +1 @@
+../../Task/System-time/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Take-notes-on-the-command-line b/Lang/REBOL/Take-notes-on-the-command-line
new file mode 120000
index 0000000000..f00a0f5d0a
--- /dev/null
+++ b/Lang/REBOL/Take-notes-on-the-command-line
@@ -0,0 +1 @@
+../../Task/Take-notes-on-the-command-line/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Tokenize-a-string b/Lang/REBOL/Tokenize-a-string
new file mode 120000
index 0000000000..ee10fb0551
--- /dev/null
+++ b/Lang/REBOL/Tokenize-a-string
@@ -0,0 +1 @@
+../../Task/Tokenize-a-string/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Towers-of-Hanoi b/Lang/REBOL/Towers-of-Hanoi
new file mode 120000
index 0000000000..a173272546
--- /dev/null
+++ b/Lang/REBOL/Towers-of-Hanoi
@@ -0,0 +1 @@
+../../Task/Towers-of-Hanoi/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Tree-traversal b/Lang/REBOL/Tree-traversal
new file mode 120000
index 0000000000..0c44bbca9b
--- /dev/null
+++ b/Lang/REBOL/Tree-traversal
@@ -0,0 +1 @@
+../../Task/Tree-traversal/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Trigonometric-functions b/Lang/REBOL/Trigonometric-functions
new file mode 120000
index 0000000000..8f4c11188c
--- /dev/null
+++ b/Lang/REBOL/Trigonometric-functions
@@ -0,0 +1 @@
+../../Task/Trigonometric-functions/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/User-input-Graphical b/Lang/REBOL/User-input-Graphical
new file mode 120000
index 0000000000..001538e055
--- /dev/null
+++ b/Lang/REBOL/User-input-Graphical
@@ -0,0 +1 @@
+../../Task/User-input-Graphical/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/User-input-Text b/Lang/REBOL/User-input-Text
new file mode 120000
index 0000000000..b81fcf9c85
--- /dev/null
+++ b/Lang/REBOL/User-input-Text
@@ -0,0 +1 @@
+../../Task/User-input-Text/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Variadic-function b/Lang/REBOL/Variadic-function
new file mode 120000
index 0000000000..c3eb7c285d
--- /dev/null
+++ b/Lang/REBOL/Variadic-function
@@ -0,0 +1 @@
+../../Task/Variadic-function/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Web-scraping b/Lang/REBOL/Web-scraping
new file mode 120000
index 0000000000..4c37db2bfe
--- /dev/null
+++ b/Lang/REBOL/Web-scraping
@@ -0,0 +1 @@
+../../Task/Web-scraping/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Window-creation b/Lang/REBOL/Window-creation
new file mode 120000
index 0000000000..d3c3450624
--- /dev/null
+++ b/Lang/REBOL/Window-creation
@@ -0,0 +1 @@
+../../Task/Window-creation/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/XML-Input b/Lang/REBOL/XML-Input
new file mode 120000
index 0000000000..f96cb4fd5e
--- /dev/null
+++ b/Lang/REBOL/XML-Input
@@ -0,0 +1 @@
+../../Task/XML-Input/REBOL
\ No newline at end of file
diff --git a/Lang/REBOL/Y-combinator b/Lang/REBOL/Y-combinator
new file mode 120000
index 0000000000..492c58627d
--- /dev/null
+++ b/Lang/REBOL/Y-combinator
@@ -0,0 +1 @@
+../../Task/Y-combinator/REBOL
\ No newline at end of file
diff --git a/Lang/REXX/00-LANG.txt b/Lang/REXX/00-LANG.txt
index 592349f719..26a483d9aa 100644
--- a/Lang/REXX/00-LANG.txt
+++ b/Lang/REXX/00-LANG.txt
@@ -26,21 +26,6 @@
The '''REXX''' language was influenced by the computer programming languages: '''ALGOL, PL/I, EXEC,''' and '''EXEC 2.'''
-Using Classic REXX closely resembles pseudo code and many languages like Basic or Julia. Experienced programmers should have no problem reading REXX code and translating it to other languages.
-Some items that might differ from what you are familiar with.
-* Caseless, fully free format.
-* Code blocks delimited by do...end, no brackets (){}.
-* A programs starts always with line 1, so you'll need 'exit' before the code for procedures and routines.
-* Usual control structures present: do...by...to, do while/until, select, leave, iterate, call, return, exit, & (and), \ (not).
-* No data types, no declarations, everything is string. String functions such as 'Left()' or 'Substr()' may be applied on numbers.
-* All arithmetic is decimal based, not binary. So stuff like bit shifting or multiply/divide by 2 using exponent add/subtract does not apply.
-* Exponentiation is designated by '**' thus x^2 = x**2.
-* Integer division is designated by '%' thus 13%3 = 4.
-* Modulo division (remainder) is designated by '//' thus 13//3 = 1 ('13 mod 3').
-* Arrays (here called 'stems') are designated by something like 'stem.a.b. etc' (stem = name array; a, b etc any value; 'associative arrays').
-* Precision is unlimited (default 9 digits), but you have to specify it yourself ('numeric digits nn').
-* Parameter passing always by value. Stems cannot be passed, but must be made available with 'expose'.
-
Versions of REXX:
* '''[[wp:ARexx|ARexx]]''' is a classic REXX implementation (with extensions) for the AmigaOS, given in bundle since AmigaOS 2. (Regina REXX has specific support for the extended functions that were introduced in ARexx.) ARexx was written in 1987 by William S. Hawes.
@@ -51,7 +36,7 @@ Some items that might differ from what you are familiar with.
* '''[[CRX REXX]]''' (Compact REXX) is a classic REXX first written by Dr. Brian Marks.
-* '''[[REXX/2]]''' is a classic REXX that is bundled with PC/SPF and written by Command Technology Corporation, a license is required to use this product. This version of REXX can only be used under PC/SPF and it's panels. PC/SPF resembles the IBM program product SPF (which has other names and versions). The last version was published in 1996. Company CTC doesn't exist anymore.
+* '''[[CTC REXX]]''' is a classic REXX that is bundled with PC/SPF and written by Command Technology Corporation, a license is required to use this product. This version of REXX can only be used under PC/SPF and it's panels. PC/SPF resembles the IBM program product SPF (which has other names and versions).
* '''[[KEXX]]''' is a subset of REXX that is bundled with KEDIT and written by Keven J. Kearney of Mansfield Software Group, Inc., a license is required to use this product. KEXX only executes under the KEDIT licensed product. KEDIT is an XEDIT clone (an editor from IBM for VM/CMS program products).
@@ -90,7 +75,7 @@ Some items that might differ from what you are familiar with.
* '''[[Regina REXX]]''' is an implementation first created by Anders Christensen (in 1992) and is now maintained by others, notably Mark Hessling. Regina REXX runs on more different platforms than any other REXX, too many to name here. It can be downloaded freely.
-* '''[[Reginald REXX]]''' is a REXX developed by Jeff Glatt. It can be downloaded freely. According to Rexxinfo.org, Reginald is out of maintenance.
+* '''[[Reginald REXX]]''' is a REXX developed by Jeff Glatt. It can be downloaded freely.
* '''[[REXX/imc]]''' a classic REXX developed by Ian M. Collier (imc) for Linux/Unix.
@@ -99,10 +84,10 @@ Some items that might differ from what you are familiar with.
* '''REXX/Personal''' is another name for '''Personal REXX''' (see above).
-* '''[[ROO oo-REXX]]''' an object-oriented REXX developed by Keith Watts of Kilowatt Software, Inc. It can be downloaded freely. '''ROO''' is also known as '''ROO!'''. According to Rexxinfo.org, Roo! is out of maintenance.
+* '''[[ROO oo-REXX]]''' an object-oriented REXX developed by Keith Watts of Kilowatt Software, Inc. It can be downloaded freely. '''ROO''' is also known as '''ROO!'''.
-* '''[[R4 REXX]]''' a classic REXX developed by Keith Watts of Kilowatt Software, Inc. It was also known as '''Portable REXX'''. It can be downloaded freely. According to Rexxinfo.org, R4 is out of maintenance.
+* '''[[R4 REXX]]''' a classic REXX developed by Keith Watts of Kilowatt Software, Inc. It was also known as '''Portable REXX'''. It can be downloaded freely.
* '''[[T/REXX, a REXX compiler for CMS]]''' is an implementation of classic REXX written by Leigh Lundin and Mark Woodruff (according to Wikipedia).
@@ -127,7 +112,16 @@ Some items that might differ from what you are familiar with.
* [http://www.rexxla.org The Rexx Language Association - www.rexxla.org]
* [http://regina-rexx.sourceforge.net/index.html Regina Rexx Interpreter]
* [http://www.kedit.com/ Mansfield Software Group, Inc. (KEDIT)]
+* [http://www.quercus-sys.com/ Personal REXX, Quercus Systems]
+* [http://www.commandtechnology.com/ CTC Command Technology]
* [http://www.rexxla.org/ CRX Open Source (right column side)]
+* [http://www.kilowattsoftware.com/r4Page.htm R4, Kilowatt Software]
+* [http://www.kilowattsoftware.com/rooPage.htm ROO, Kilowatt Software]
+* [http://publib.boulder.ibm.com/cgi-bin/bookmgr_OS390/BOOKS/HCSE2C00/CCONTENTS?SHELF=hcsh2ab0&DN=SC24-6221-00&DT=20090724140455 z/VM V6R1 REXX/VM Reference]
+* [http://publib.boulder.ibm.com/cgi-bin/bookmgr_OS390/BOOKS/HCSB3C00/CCONTENTS?SHELF=hcsh2ab0&DN=SC24-6222-00&DT=20090724131829 z/VM V6R1 REXX/VM User's Guide]
+* [http://www.rexxinfo.org/html/rexxinfo1.html#Rexx-Manuals {many references to REXX manuals}]
+
+
== Rosetta Code tasks not implemented in REXX ==
-[[Tasks not implemented in REXX]]
\ No newline at end of file
+[[Reports:Tasks_not_implemented_in_REXX]]
\ No newline at end of file
diff --git a/Lang/REXX/Arithmetic-numbers b/Lang/REXX/Arithmetic-numbers
deleted file mode 120000
index 71a3332017..0000000000
--- a/Lang/REXX/Arithmetic-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-numbers/REXX
\ No newline at end of file
diff --git a/Lang/REXX/Ascending-primes b/Lang/REXX/Ascending-primes
deleted file mode 120000
index bbc0af4983..0000000000
--- a/Lang/REXX/Ascending-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ascending-primes/REXX
\ No newline at end of file
diff --git a/Lang/REXX/Base64-decode-data b/Lang/REXX/Base64-decode-data
deleted file mode 120000
index 226b0ce798..0000000000
--- a/Lang/REXX/Base64-decode-data
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Base64-decode-data/REXX
\ No newline at end of file
diff --git a/Lang/REXX/Bioinformatics-base-count b/Lang/REXX/Bioinformatics-base-count
new file mode 120000
index 0000000000..c722864481
--- /dev/null
+++ b/Lang/REXX/Bioinformatics-base-count
@@ -0,0 +1 @@
+../../Task/Bioinformatics-base-count/REXX
\ No newline at end of file
diff --git a/Lang/REXX/Blum-integer b/Lang/REXX/Blum-integer
deleted file mode 120000
index 2aa27c2ff0..0000000000
--- a/Lang/REXX/Blum-integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Blum-integer/REXX
\ No newline at end of file
diff --git a/Lang/REXX/Chernicks-Carmichael-numbers b/Lang/REXX/Chernicks-Carmichael-numbers
deleted file mode 120000
index 4050cb562e..0000000000
--- a/Lang/REXX/Chernicks-Carmichael-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Chernicks-Carmichael-numbers/REXX
\ No newline at end of file
diff --git a/Lang/REXX/Deceptive-numbers b/Lang/REXX/Deceptive-numbers
deleted file mode 120000
index 3f3cdd6f00..0000000000
--- a/Lang/REXX/Deceptive-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Deceptive-numbers/REXX
\ No newline at end of file
diff --git a/Lang/REXX/Descending-primes b/Lang/REXX/Descending-primes
deleted file mode 120000
index c55d765868..0000000000
--- a/Lang/REXX/Descending-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Descending-primes/REXX
\ No newline at end of file
diff --git a/Lang/REXX/Euclid-Mullin-sequence b/Lang/REXX/Euclid-Mullin-sequence
deleted file mode 120000
index 3ded1fce93..0000000000
--- a/Lang/REXX/Euclid-Mullin-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Euclid-Mullin-sequence/REXX
\ No newline at end of file
diff --git a/Lang/REXX/Eulers-constant-0.5772... b/Lang/REXX/Eulers-constant-0.5772...
deleted file mode 120000
index 4dd79a59f3..0000000000
--- a/Lang/REXX/Eulers-constant-0.5772...
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Eulers-constant-0.5772.../REXX
\ No newline at end of file
diff --git a/Lang/REXX/Find-largest-left-truncatable-prime-in-a-given-base b/Lang/REXX/Find-largest-left-truncatable-prime-in-a-given-base
deleted file mode 120000
index 528dd8a890..0000000000
--- a/Lang/REXX/Find-largest-left-truncatable-prime-in-a-given-base
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Find-largest-left-truncatable-prime-in-a-given-base/REXX
\ No newline at end of file
diff --git a/Lang/REXX/Goldbachs-comet b/Lang/REXX/Goldbachs-comet
deleted file mode 120000
index ddf76b927f..0000000000
--- a/Lang/REXX/Goldbachs-comet
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Goldbachs-comet/REXX
\ No newline at end of file
diff --git a/Lang/REXX/Jacobsthal-numbers b/Lang/REXX/Jacobsthal-numbers
deleted file mode 120000
index 7f86ce7033..0000000000
--- a/Lang/REXX/Jacobsthal-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jacobsthal-numbers/REXX
\ No newline at end of file
diff --git a/Lang/REXX/Legendre-prime-counting-function b/Lang/REXX/Legendre-prime-counting-function
deleted file mode 120000
index 74d1b424e1..0000000000
--- a/Lang/REXX/Legendre-prime-counting-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Legendre-prime-counting-function/REXX
\ No newline at end of file
diff --git a/Lang/REXX/Magic-constant b/Lang/REXX/Magic-constant
deleted file mode 120000
index 13d81a62dd..0000000000
--- a/Lang/REXX/Magic-constant
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Magic-constant/REXX
\ No newline at end of file
diff --git a/Lang/REXX/Miller-Rabin-primality-test b/Lang/REXX/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..6b9607754b
--- /dev/null
+++ b/Lang/REXX/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/REXX
\ No newline at end of file
diff --git a/Lang/REXX/Primes---allocate-descendants-to-their-ancestors b/Lang/REXX/Primes---allocate-descendants-to-their-ancestors
deleted file mode 120000
index e6293c9090..0000000000
--- a/Lang/REXX/Primes---allocate-descendants-to-their-ancestors
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Primes---allocate-descendants-to-their-ancestors/REXX
\ No newline at end of file
diff --git a/Lang/REXX/Quaternion-type b/Lang/REXX/Quaternion-type
new file mode 120000
index 0000000000..18e452fac4
--- /dev/null
+++ b/Lang/REXX/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/REXX
\ No newline at end of file
diff --git a/Lang/REXX/Ramanujan-primes-twins b/Lang/REXX/Ramanujan-primes-twins
deleted file mode 120000
index 09da3d7f76..0000000000
--- a/Lang/REXX/Ramanujan-primes-twins
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ramanujan-primes-twins/REXX
\ No newline at end of file
diff --git a/Lang/REXX/Sequence:-nth-number-with-exactly-n-divisors b/Lang/REXX/Sequence-nth-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/REXX/Sequence:-nth-number-with-exactly-n-divisors
rename to Lang/REXX/Sequence-nth-number-with-exactly-n-divisors
diff --git a/Lang/REXX/Sequence-of-primorial-primes b/Lang/REXX/Sequence-of-primorial-primes
deleted file mode 120000
index cd4ebe8c73..0000000000
--- a/Lang/REXX/Sequence-of-primorial-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sequence-of-primorial-primes/REXX
\ No newline at end of file
diff --git a/Lang/REXX/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors b/Lang/REXX/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
similarity index 100%
rename from Lang/REXX/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors
rename to Lang/REXX/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
diff --git a/Lang/REXX/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/REXX/Sequence-smallest-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/REXX/Sequence:-smallest-number-with-exactly-n-divisors
rename to Lang/REXX/Sequence-smallest-number-with-exactly-n-divisors
diff --git a/Lang/REXX/Sieve-of-Pritchard b/Lang/REXX/Sieve-of-Pritchard
deleted file mode 120000
index 601b18d906..0000000000
--- a/Lang/REXX/Sieve-of-Pritchard
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sieve-of-Pritchard/REXX
\ No newline at end of file
diff --git a/Lang/REXX/Sorting-Algorithms-Circle-Sort b/Lang/REXX/Sorting-Algorithms-Circle-Sort
new file mode 120000
index 0000000000..383d356065
--- /dev/null
+++ b/Lang/REXX/Sorting-Algorithms-Circle-Sort
@@ -0,0 +1 @@
+../../Task/Sorting-Algorithms-Circle-Sort/REXX
\ No newline at end of file
diff --git a/Lang/REXX/Verhoeff-algorithm b/Lang/REXX/Verhoeff-algorithm
deleted file mode 120000
index 0bc439ccea..0000000000
--- a/Lang/REXX/Verhoeff-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Verhoeff-algorithm/REXX
\ No newline at end of file
diff --git a/Lang/REXX/Web-scraping b/Lang/REXX/Web-scraping
deleted file mode 120000
index 818c9c985e..0000000000
--- a/Lang/REXX/Web-scraping
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Web-scraping/REXX
\ No newline at end of file
diff --git a/Lang/RISC-V-Assembly/00-LANG.txt b/Lang/RISC-V-Assembly/00-LANG.txt
index 3f4a6ea98e..f524ed95fb 100644
--- a/Lang/RISC-V-Assembly/00-LANG.txt
+++ b/Lang/RISC-V-Assembly/00-LANG.txt
@@ -1,79 +1,4 @@
{{language|RISC-V Assembly}}[https://riscv.org Risc-V] is an open source hardware instruction set architecture based on the principle of a '''R'''educed '''I'''nstruction '''S'''et '''C'''omputer. The project was started by the university of California, Berkeley in 2010. This site refers to the Risc-V assembly language. ([https://en.wikipedia.org/wiki/RISC-V#Software Wikipedia page]), Website: [https://riscv.org https://riscv.org].
-'''Riscv on raspberry pico 2'''
-
-A pico2 with the chip rp2335 contains 2 cores hazard3 with risc v assembly
-it is possible to programm assembly riscv with the sdk C++ and a compiler riscv32-unknown-elf-as.exe
-
-It is also possible to programm without SDK but it is necessary to write functions for init
-the clocks and to communicate for usb connexion.
-
-install under Windows11 (or see documentation raspberry py pico SDK) :
-
-Create main folder (ex : \pico2)
-
-install SDK C++ (see instructions in raspberry pi pico2 SDK documentation)
-
-install toolchaine under \Pico2\tools\bin from
-
-https://github.com/raspberrypi/pico-sdk-tools/releases/download/v2.0.0-2/riscv-toolchain-14-x64-win.zip
-
-
-Create work folder (ex : \pico2\hello)
-
-Create file CMakeLists.txt (see instructions in raspberry pi pico2 SDK documentation)
-
-Create program hello.s with a editor
-
-Copy a file pico_sdk_import.cmake from \pico2\pico-sdk\external
-
-Create a folder build under \pico2\hello
-
-Go to this folder
-
-Compile program with :
-
- cmake -DPICO_PLATFORM=rp2350-riscv -DPICO_TOOLCHAIN_PATH=E:\Pico2\tools\bin -G "NMake Makefiles" ..
-
-and
- nmake
-
-copy the file .uf2 to raspberry pico2 (see documentation raspberry pi pico2)
-
-Start serial connexion on host (ex: putty on windows11)
-
-Example CMakeLists.txt :
-
-cmake_minimum_required(VERSION 3.13)
-
-include(pico_sdk_import.cmake)
-
-project(hello C CXX ASM)
-
-set(CMAKE_C_STANDARD 11)
-
-set(CMAKE_CXX_STANDARD 17)
-
-pico_sdk_init()
-
-add_executable(hello
-hello.s # pgm source assembly riscv
-)
-
-target_link_libraries(hello pico_stdlib)
-
-pico_enable_stdio_usb(hello 1)
-
-pico_enable_stdio_uart(hello 0)
-
-pico_add_extra_outputs(hello)
-
-
-see source program on hello world rosetta code
-
-cmake -DPython3_EXECUTABLE=C:\Users\Vincent\AppData\Local\Microsoft\WindowsApps\python3.10.exe -DPICO_PLATFORM=rp2350-riscv -DPICO_TOOLCHAIN_PATH=E:\Pico2\tools\bin -DPICO_SDK_PATH=..\..\..\pico-sdk -G "NMake Makefiles" ..
-
-see instructions list on chapter 3.8.1.6. Alphabetical list of instructions on rp2350 datasheet
-
[[Category:Assembler language]]
[[Category:Assembly]]
\ No newline at end of file
diff --git a/Lang/RISC-V-Assembly/Address-of-a-variable b/Lang/RISC-V-Assembly/Address-of-a-variable
deleted file mode 120000
index 7e7b85f7fc..0000000000
--- a/Lang/RISC-V-Assembly/Address-of-a-variable
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Address-of-a-variable/RISC-V-Assembly
\ No newline at end of file
diff --git a/Lang/RISC-V-Assembly/Arithmetic-Integer b/Lang/RISC-V-Assembly/Arithmetic-Integer
deleted file mode 120000
index 41172f4754..0000000000
--- a/Lang/RISC-V-Assembly/Arithmetic-Integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-Integer/RISC-V-Assembly
\ No newline at end of file
diff --git a/Lang/RISC-V-Assembly/Array-length b/Lang/RISC-V-Assembly/Array-length
deleted file mode 120000
index 51b567c37e..0000000000
--- a/Lang/RISC-V-Assembly/Array-length
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Array-length/RISC-V-Assembly
\ No newline at end of file
diff --git a/Lang/RISC-V-Assembly/Binary-digits b/Lang/RISC-V-Assembly/Binary-digits
deleted file mode 120000
index 45c4e871d7..0000000000
--- a/Lang/RISC-V-Assembly/Binary-digits
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Binary-digits/RISC-V-Assembly
\ No newline at end of file
diff --git a/Lang/RISC-V-Assembly/Binary-search b/Lang/RISC-V-Assembly/Binary-search
deleted file mode 120000
index ad0fc6f909..0000000000
--- a/Lang/RISC-V-Assembly/Binary-search
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Binary-search/RISC-V-Assembly
\ No newline at end of file
diff --git a/Lang/RISC-V-Assembly/Bitwise-operations b/Lang/RISC-V-Assembly/Bitwise-operations
deleted file mode 120000
index d2de2c0d91..0000000000
--- a/Lang/RISC-V-Assembly/Bitwise-operations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bitwise-operations/RISC-V-Assembly
\ No newline at end of file
diff --git a/Lang/RISC-V-Assembly/Compare-length-of-two-strings b/Lang/RISC-V-Assembly/Compare-length-of-two-strings
deleted file mode 120000
index b61a06982a..0000000000
--- a/Lang/RISC-V-Assembly/Compare-length-of-two-strings
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compare-length-of-two-strings/RISC-V-Assembly
\ No newline at end of file
diff --git a/Lang/RISC-V-Assembly/Conditional-structures b/Lang/RISC-V-Assembly/Conditional-structures
deleted file mode 120000
index 2fb608a736..0000000000
--- a/Lang/RISC-V-Assembly/Conditional-structures
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Conditional-structures/RISC-V-Assembly
\ No newline at end of file
diff --git a/Lang/RISC-V-Assembly/Count-in-octal b/Lang/RISC-V-Assembly/Count-in-octal
deleted file mode 120000
index bf7e472328..0000000000
--- a/Lang/RISC-V-Assembly/Count-in-octal
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Count-in-octal/RISC-V-Assembly
\ No newline at end of file
diff --git a/Lang/RISC-V-Assembly/Determine-if-a-string-is-numeric b/Lang/RISC-V-Assembly/Determine-if-a-string-is-numeric
deleted file mode 120000
index fe9d1269a0..0000000000
--- a/Lang/RISC-V-Assembly/Determine-if-a-string-is-numeric
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-is-numeric/RISC-V-Assembly
\ No newline at end of file
diff --git a/Lang/RISC-V-Assembly/Doubly-linked-list-Definition b/Lang/RISC-V-Assembly/Doubly-linked-list-Definition
deleted file mode 120000
index f016184b4e..0000000000
--- a/Lang/RISC-V-Assembly/Doubly-linked-list-Definition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Doubly-linked-list-Definition/RISC-V-Assembly
\ No newline at end of file
diff --git a/Lang/RISC-V-Assembly/Factorial b/Lang/RISC-V-Assembly/Factorial
deleted file mode 120000
index d4cbcd152f..0000000000
--- a/Lang/RISC-V-Assembly/Factorial
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factorial/RISC-V-Assembly
\ No newline at end of file
diff --git a/Lang/RISC-V-Assembly/Factors-of-an-integer b/Lang/RISC-V-Assembly/Factors-of-an-integer
deleted file mode 120000
index e6286a7691..0000000000
--- a/Lang/RISC-V-Assembly/Factors-of-an-integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factors-of-an-integer/RISC-V-Assembly
\ No newline at end of file
diff --git a/Lang/RISC-V-Assembly/FizzBuzz b/Lang/RISC-V-Assembly/FizzBuzz
deleted file mode 120000
index fa85a0bece..0000000000
--- a/Lang/RISC-V-Assembly/FizzBuzz
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/FizzBuzz/RISC-V-Assembly
\ No newline at end of file
diff --git a/Lang/RISC-V-Assembly/Guess-the-number b/Lang/RISC-V-Assembly/Guess-the-number
deleted file mode 120000
index 3c820e8397..0000000000
--- a/Lang/RISC-V-Assembly/Guess-the-number
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Guess-the-number/RISC-V-Assembly
\ No newline at end of file
diff --git a/Lang/RISC-V-Assembly/Hello-world-Newbie b/Lang/RISC-V-Assembly/Hello-world-Newbie
deleted file mode 120000
index 5721ad4125..0000000000
--- a/Lang/RISC-V-Assembly/Hello-world-Newbie
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Newbie/RISC-V-Assembly
\ No newline at end of file
diff --git a/Lang/RISC-V-Assembly/Include-a-file b/Lang/RISC-V-Assembly/Include-a-file
deleted file mode 120000
index 2742cb0a60..0000000000
--- a/Lang/RISC-V-Assembly/Include-a-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Include-a-file/RISC-V-Assembly
\ No newline at end of file
diff --git a/Lang/RISC-V-Assembly/Integer-comparison b/Lang/RISC-V-Assembly/Integer-comparison
deleted file mode 120000
index c89ef738d7..0000000000
--- a/Lang/RISC-V-Assembly/Integer-comparison
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Integer-comparison/RISC-V-Assembly
\ No newline at end of file
diff --git a/Lang/RISC-V-Assembly/Jump-anywhere b/Lang/RISC-V-Assembly/Jump-anywhere
deleted file mode 120000
index 97bc1d7493..0000000000
--- a/Lang/RISC-V-Assembly/Jump-anywhere
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jump-anywhere/RISC-V-Assembly
\ No newline at end of file
diff --git a/Lang/RISC-V-Assembly/Logical-operations b/Lang/RISC-V-Assembly/Logical-operations
deleted file mode 120000
index c149f117e3..0000000000
--- a/Lang/RISC-V-Assembly/Logical-operations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Logical-operations/RISC-V-Assembly
\ No newline at end of file
diff --git a/Lang/RISC-V-Assembly/Loops-Do-while b/Lang/RISC-V-Assembly/Loops-Do-while
deleted file mode 120000
index c6ea94d0bd..0000000000
--- a/Lang/RISC-V-Assembly/Loops-Do-while
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Do-while/RISC-V-Assembly
\ No newline at end of file
diff --git a/Lang/RISC-V-Assembly/Loops-For b/Lang/RISC-V-Assembly/Loops-For
deleted file mode 120000
index eb2a1946a7..0000000000
--- a/Lang/RISC-V-Assembly/Loops-For
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-For/RISC-V-Assembly
\ No newline at end of file
diff --git a/Lang/RISC-V-Assembly/Loops-While b/Lang/RISC-V-Assembly/Loops-While
deleted file mode 120000
index aefdc14d66..0000000000
--- a/Lang/RISC-V-Assembly/Loops-While
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-While/RISC-V-Assembly
\ No newline at end of file
diff --git a/Lang/RISC-V-Assembly/Loops-With-multiple-ranges b/Lang/RISC-V-Assembly/Loops-With-multiple-ranges
deleted file mode 120000
index e4ac51774c..0000000000
--- a/Lang/RISC-V-Assembly/Loops-With-multiple-ranges
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-With-multiple-ranges/RISC-V-Assembly
\ No newline at end of file
diff --git a/Lang/RISC-V-Assembly/Primality-by-trial-division b/Lang/RISC-V-Assembly/Primality-by-trial-division
deleted file mode 120000
index 2d5326d125..0000000000
--- a/Lang/RISC-V-Assembly/Primality-by-trial-division
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Primality-by-trial-division/RISC-V-Assembly
\ No newline at end of file
diff --git a/Lang/RISC-V-Assembly/Sieve-of-Eratosthenes b/Lang/RISC-V-Assembly/Sieve-of-Eratosthenes
deleted file mode 120000
index 048e79765f..0000000000
--- a/Lang/RISC-V-Assembly/Sieve-of-Eratosthenes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sieve-of-Eratosthenes/RISC-V-Assembly
\ No newline at end of file
diff --git a/Lang/RISC-V-Assembly/Singly-linked-list-Element-definition b/Lang/RISC-V-Assembly/Singly-linked-list-Element-definition
deleted file mode 120000
index c46a1c1483..0000000000
--- a/Lang/RISC-V-Assembly/Singly-linked-list-Element-definition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Singly-linked-list-Element-definition/RISC-V-Assembly
\ No newline at end of file
diff --git a/Lang/RISC-V-Assembly/Singly-linked-list-Element-insertion b/Lang/RISC-V-Assembly/Singly-linked-list-Element-insertion
deleted file mode 120000
index 3942e77b33..0000000000
--- a/Lang/RISC-V-Assembly/Singly-linked-list-Element-insertion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Singly-linked-list-Element-insertion/RISC-V-Assembly
\ No newline at end of file
diff --git a/Lang/RISC-V-Assembly/Singly-linked-list-Traversal b/Lang/RISC-V-Assembly/Singly-linked-list-Traversal
deleted file mode 120000
index 704ea88764..0000000000
--- a/Lang/RISC-V-Assembly/Singly-linked-list-Traversal
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Singly-linked-list-Traversal/RISC-V-Assembly
\ No newline at end of file
diff --git a/Lang/RISC-V-Assembly/Sorting-algorithms-Bubble-sort b/Lang/RISC-V-Assembly/Sorting-algorithms-Bubble-sort
deleted file mode 120000
index eb7e9f655b..0000000000
--- a/Lang/RISC-V-Assembly/Sorting-algorithms-Bubble-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Bubble-sort/RISC-V-Assembly
\ No newline at end of file
diff --git a/Lang/RISC-V-Assembly/Sorting-algorithms-Heapsort b/Lang/RISC-V-Assembly/Sorting-algorithms-Heapsort
deleted file mode 120000
index 623c46da1a..0000000000
--- a/Lang/RISC-V-Assembly/Sorting-algorithms-Heapsort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Heapsort/RISC-V-Assembly
\ No newline at end of file
diff --git a/Lang/RISC-V-Assembly/Sorting-algorithms-Insertion-sort b/Lang/RISC-V-Assembly/Sorting-algorithms-Insertion-sort
deleted file mode 120000
index 3748bff361..0000000000
--- a/Lang/RISC-V-Assembly/Sorting-algorithms-Insertion-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Insertion-sort/RISC-V-Assembly
\ No newline at end of file
diff --git a/Lang/RISC-V-Assembly/Sorting-algorithms-Merge-sort b/Lang/RISC-V-Assembly/Sorting-algorithms-Merge-sort
deleted file mode 120000
index e189625c7b..0000000000
--- a/Lang/RISC-V-Assembly/Sorting-algorithms-Merge-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Merge-sort/RISC-V-Assembly
\ No newline at end of file
diff --git a/Lang/RISC-V-Assembly/Sorting-algorithms-Patience-sort b/Lang/RISC-V-Assembly/Sorting-algorithms-Patience-sort
deleted file mode 120000
index ff4a528100..0000000000
--- a/Lang/RISC-V-Assembly/Sorting-algorithms-Patience-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Patience-sort/RISC-V-Assembly
\ No newline at end of file
diff --git a/Lang/RISC-V-Assembly/Sorting-algorithms-Quicksort b/Lang/RISC-V-Assembly/Sorting-algorithms-Quicksort
deleted file mode 120000
index 61ec2d6c95..0000000000
--- a/Lang/RISC-V-Assembly/Sorting-algorithms-Quicksort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Quicksort/RISC-V-Assembly
\ No newline at end of file
diff --git a/Lang/RISC-V-Assembly/Sorting-algorithms-Selection-sort b/Lang/RISC-V-Assembly/Sorting-algorithms-Selection-sort
deleted file mode 120000
index dc2705e303..0000000000
--- a/Lang/RISC-V-Assembly/Sorting-algorithms-Selection-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Selection-sort/RISC-V-Assembly
\ No newline at end of file
diff --git a/Lang/RISC-V-Assembly/Sorting-algorithms-Shell-sort b/Lang/RISC-V-Assembly/Sorting-algorithms-Shell-sort
deleted file mode 120000
index 3181770874..0000000000
--- a/Lang/RISC-V-Assembly/Sorting-algorithms-Shell-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Shell-sort/RISC-V-Assembly
\ No newline at end of file
diff --git a/Lang/RISC-V-Assembly/String-append b/Lang/RISC-V-Assembly/String-append
deleted file mode 120000
index c4e4abff3f..0000000000
--- a/Lang/RISC-V-Assembly/String-append
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-append/RISC-V-Assembly
\ No newline at end of file
diff --git a/Lang/RISC-V-Assembly/String-comparison b/Lang/RISC-V-Assembly/String-comparison
deleted file mode 120000
index 05a600887a..0000000000
--- a/Lang/RISC-V-Assembly/String-comparison
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-comparison/RISC-V-Assembly
\ No newline at end of file
diff --git a/Lang/RISC-V-Assembly/String-concatenation b/Lang/RISC-V-Assembly/String-concatenation
deleted file mode 120000
index 14bea49904..0000000000
--- a/Lang/RISC-V-Assembly/String-concatenation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-concatenation/RISC-V-Assembly
\ No newline at end of file
diff --git a/Lang/RISC-V-Assembly/String-interpolation-included- b/Lang/RISC-V-Assembly/String-interpolation-included-
deleted file mode 120000
index d5a6926006..0000000000
--- a/Lang/RISC-V-Assembly/String-interpolation-included-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-interpolation-included-/RISC-V-Assembly
\ No newline at end of file
diff --git a/Lang/RISC-V-Assembly/String-length b/Lang/RISC-V-Assembly/String-length
deleted file mode 120000
index 9f0b9ba1b7..0000000000
--- a/Lang/RISC-V-Assembly/String-length
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-length/RISC-V-Assembly
\ No newline at end of file
diff --git a/Lang/RISC-V-Assembly/String-matching b/Lang/RISC-V-Assembly/String-matching
deleted file mode 120000
index daa67c8da0..0000000000
--- a/Lang/RISC-V-Assembly/String-matching
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-matching/RISC-V-Assembly
\ No newline at end of file
diff --git a/Lang/RISC-V-Assembly/String-prepend b/Lang/RISC-V-Assembly/String-prepend
deleted file mode 120000
index 4cf66d1f37..0000000000
--- a/Lang/RISC-V-Assembly/String-prepend
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-prepend/RISC-V-Assembly
\ No newline at end of file
diff --git a/Lang/RISC-V-Assembly/Substring b/Lang/RISC-V-Assembly/Substring
deleted file mode 120000
index 346f148efa..0000000000
--- a/Lang/RISC-V-Assembly/Substring
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Substring/RISC-V-Assembly
\ No newline at end of file
diff --git a/Lang/RISC-V-Assembly/Tree-traversal b/Lang/RISC-V-Assembly/Tree-traversal
deleted file mode 120000
index e386a26400..0000000000
--- a/Lang/RISC-V-Assembly/Tree-traversal
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tree-traversal/RISC-V-Assembly
\ No newline at end of file
diff --git a/Lang/RISC-V-Assembly/Visualize-a-tree b/Lang/RISC-V-Assembly/Visualize-a-tree
deleted file mode 120000
index 20ab2b2342..0000000000
--- a/Lang/RISC-V-Assembly/Visualize-a-tree
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Visualize-a-tree/RISC-V-Assembly
\ No newline at end of file
diff --git a/Lang/RPL/Guess-the-number b/Lang/RPL/Guess-the-number
new file mode 120000
index 0000000000..c108a4519e
--- /dev/null
+++ b/Lang/RPL/Guess-the-number
@@ -0,0 +1 @@
+../../Task/Guess-the-number/RPL
\ No newline at end of file
diff --git a/Lang/RTL-2/00-LANG.txt b/Lang/RTL-2/00-LANG.txt
index 1ed7c9f33f..4f020fcdf0 100644
--- a/Lang/RTL-2/00-LANG.txt
+++ b/Lang/RTL-2/00-LANG.txt
@@ -52,9 +52,6 @@ While the specifics varied by operating system the following is an example of a
This code insert moves the value of a variable passed into the RTL/2 procedure into a variable called COUNTER in a data brick called MYDATA.
-== Design and Rationale ==
-J. G. P. Barnes describes RTL/2 and the reasons behind some of the design decisions made during its development in his 1976 book RTL/2 Design and Philosophy.
-
== Reserved Words ==
ABS
AND
@@ -86,7 +83,6 @@ LENGTH
LET
LOR
MOD
-MODE
NEV
NOT
OCT
diff --git a/Lang/Racket/Arithmetic-derivative b/Lang/Racket/Arithmetic-derivative
deleted file mode 120000
index 67478aafca..0000000000
--- a/Lang/Racket/Arithmetic-derivative
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-derivative/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Bioinformatics-base-count b/Lang/Racket/Bioinformatics-base-count
new file mode 120000
index 0000000000..e2d3d89548
--- /dev/null
+++ b/Lang/Racket/Bioinformatics-base-count
@@ -0,0 +1 @@
+../../Task/Bioinformatics-base-count/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Miller-Rabin-primality-test b/Lang/Racket/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..db07b51bff
--- /dev/null
+++ b/Lang/Racket/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Quaternion-type b/Lang/Racket/Quaternion-type
new file mode 120000
index 0000000000..88e3ea41c9
--- /dev/null
+++ b/Lang/Racket/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Sorting-Algorithms-Circle-Sort b/Lang/Racket/Sorting-Algorithms-Circle-Sort
new file mode 120000
index 0000000000..4c351d18cc
--- /dev/null
+++ b/Lang/Racket/Sorting-Algorithms-Circle-Sort
@@ -0,0 +1 @@
+../../Task/Sorting-Algorithms-Circle-Sort/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Strassens-algorithm b/Lang/Racket/Strassens-algorithm
deleted file mode 120000
index c6d669358e..0000000000
--- a/Lang/Racket/Strassens-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strassens-algorithm/Racket
\ No newline at end of file
diff --git a/Lang/Racket/Twos-complement b/Lang/Racket/Twos-complement
deleted file mode 120000
index 0d85b62ede..0000000000
--- a/Lang/Racket/Twos-complement
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Twos-complement/Racket
\ No newline at end of file
diff --git a/Lang/Raku/Bioinformatics-base-count b/Lang/Raku/Bioinformatics-base-count
new file mode 120000
index 0000000000..7d4ea3da69
--- /dev/null
+++ b/Lang/Raku/Bioinformatics-base-count
@@ -0,0 +1 @@
+../../Task/Bioinformatics-base-count/Raku
\ No newline at end of file
diff --git a/Lang/Raku/Catmull-Clark-subdivision-surface b/Lang/Raku/Catmull-Clark-subdivision-surface
deleted file mode 120000
index ca92993d5e..0000000000
--- a/Lang/Raku/Catmull-Clark-subdivision-surface
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Catmull-Clark-subdivision-surface/Raku
\ No newline at end of file
diff --git a/Lang/Raku/Dominoes b/Lang/Raku/Dominoes
deleted file mode 120000
index 48ba3c99bf..0000000000
--- a/Lang/Raku/Dominoes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dominoes/Raku
\ No newline at end of file
diff --git a/Lang/Raku/Meissel-Mertens-constant b/Lang/Raku/Meissel-Mertens-constant
new file mode 120000
index 0000000000..5a835b7f73
--- /dev/null
+++ b/Lang/Raku/Meissel-Mertens-constant
@@ -0,0 +1 @@
+../../Task/Meissel-Mertens-constant/Raku
\ No newline at end of file
diff --git a/Lang/Raku/Miller-Rabin-primality-test b/Lang/Raku/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..5ec2c83bd9
--- /dev/null
+++ b/Lang/Raku/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/Raku
\ No newline at end of file
diff --git a/Lang/Raku/Play-recorded-sounds b/Lang/Raku/Play-recorded-sounds
deleted file mode 120000
index 7d18ecbdee..0000000000
--- a/Lang/Raku/Play-recorded-sounds
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Play-recorded-sounds/Raku
\ No newline at end of file
diff --git a/Lang/Raku/Quaternion-type b/Lang/Raku/Quaternion-type
new file mode 120000
index 0000000000..3333adafb6
--- /dev/null
+++ b/Lang/Raku/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/Raku
\ No newline at end of file
diff --git a/Lang/Raku/Sequence:-nth-number-with-exactly-n-divisors b/Lang/Raku/Sequence-nth-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/Raku/Sequence:-nth-number-with-exactly-n-divisors
rename to Lang/Raku/Sequence-nth-number-with-exactly-n-divisors
diff --git a/Lang/Raku/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors b/Lang/Raku/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
similarity index 100%
rename from Lang/Raku/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors
rename to Lang/Raku/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
diff --git a/Lang/Raku/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/Raku/Sequence-smallest-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/Raku/Sequence:-smallest-number-with-exactly-n-divisors
rename to Lang/Raku/Sequence-smallest-number-with-exactly-n-divisors
diff --git a/Lang/Raku/Simple-turtle-graphics b/Lang/Raku/Simple-turtle-graphics
deleted file mode 120000
index 496cec69f4..0000000000
--- a/Lang/Raku/Simple-turtle-graphics
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Simple-turtle-graphics/Raku
\ No newline at end of file
diff --git a/Lang/Raku/Sorting-Algorithms-Circle-Sort b/Lang/Raku/Sorting-Algorithms-Circle-Sort
new file mode 120000
index 0000000000..1ba8b44162
--- /dev/null
+++ b/Lang/Raku/Sorting-Algorithms-Circle-Sort
@@ -0,0 +1 @@
+../../Task/Sorting-Algorithms-Circle-Sort/Raku
\ No newline at end of file
diff --git a/Lang/RapidQ/Levenshtein-distance b/Lang/RapidQ/Levenshtein-distance
deleted file mode 120000
index 43ee94415c..0000000000
--- a/Lang/RapidQ/Levenshtein-distance
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Levenshtein-distance/RapidQ
\ No newline at end of file
diff --git a/Lang/RapidQ/Map-range b/Lang/RapidQ/Map-range
deleted file mode 120000
index a3da155381..0000000000
--- a/Lang/RapidQ/Map-range
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Map-range/RapidQ
\ No newline at end of file
diff --git a/Lang/RapidQ/Nth-root b/Lang/RapidQ/Nth-root
deleted file mode 120000
index f4c270323f..0000000000
--- a/Lang/RapidQ/Nth-root
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nth-root/RapidQ
\ No newline at end of file
diff --git a/Lang/RapidQ/Temperature-conversion b/Lang/RapidQ/Temperature-conversion
deleted file mode 120000
index 757db1c288..0000000000
--- a/Lang/RapidQ/Temperature-conversion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Temperature-conversion/RapidQ
\ No newline at end of file
diff --git a/Lang/Rebol/00-LANG.txt b/Lang/Rebol/00-LANG.txt
deleted file mode 100644
index 4aa183678a..0000000000
--- a/Lang/Rebol/00-LANG.txt
+++ /dev/null
@@ -1,32 +0,0 @@
-{{language|Rebol
-|site=http://rebol.com
-|strength=strong
-|checking=dynamic
-|gc=yes
-|exec=interpreted
-|tags=rebol, REBOL}}
-
-{{Language programming paradigm|Dynamic}}
-{{Language programming paradigm|Declarative}}
-{{Language programming paradigm|Functional}}
-{{Language programming paradigm|Event-driven}}
-{{Language programming paradigm|Reflective}}
-{{Language programming paradigm|Procedural}}
-{{Language programming paradigm|Imperative}}
-{{Language programming paradigm|Concurrent}}
-{{Language programming paradigm|Distributed}}
-
-Another entry (before merge) is available at [https://rosettacode.org/wiki/Category:REBOL Category:REBOL]
-
-'''Rebol''' (originally named '''REBOL''') stands for Relative Expression Based Object Language and was designed by Carl Sassenrath to combat unnecessary software complexity through a language-centric approach. Rebol has been around since about 1998, with [https://www.rebol.com/downloads.html Rebol 2 widely available] and free to use across many platforms. In December 2012, the Rebol 3 (R3) interpreter was [https://github.com/rebol/rebol/ released as open source] under the Apache 2.0 license. Today, an actively maintained community fork of Rebol 3 is available at https://github.com/Oldes/Rebol3/ with [https://github.com/Oldes/Rebol3/releases current releases and binaries]. This fork's goal is to keep the code close to the original design while improving usability, maintainability, and buildability.
-
-The functions dictionary for the latest available Rebol version can be found at: https://rebol.tech/docs/functions.html
-
-==Todo==
-[https://rosettacode.org/wiki/Tasks_not_implemented_in_Rebol Tasks not implemented in Rebol]
-
-==Useful links==
-* [http://www.rebol.com Original (outdated) Rebol site]
-* [https://github.com/Oldes/Rebol3 Rebol3 source] on Github (active development).
-* [https://rebol.zulipchat.com/ Rebol Zulip chat].
-* [https://app.element.io/#/room/#Rebol3:gitter.im Rebol Matrix chat].
\ No newline at end of file
diff --git a/Lang/Rebol/00-META.yaml b/Lang/Rebol/00-META.yaml
deleted file mode 100644
index 1edb7cbb3e..0000000000
--- a/Lang/Rebol/00-META.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-from: http://rosettacode.org/wiki/Category:Rebol
diff --git a/Lang/Rebol/100-doors b/Lang/Rebol/100-doors
deleted file mode 120000
index 5b331a9eba..0000000000
--- a/Lang/Rebol/100-doors
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/100-doors/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/100-prisoners b/Lang/Rebol/100-prisoners
deleted file mode 120000
index 97501a6eb7..0000000000
--- a/Lang/Rebol/100-prisoners
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/100-prisoners/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/15-puzzle-game b/Lang/Rebol/15-puzzle-game
deleted file mode 120000
index 067f887d80..0000000000
--- a/Lang/Rebol/15-puzzle-game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/15-puzzle-game/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/21-game b/Lang/Rebol/21-game
deleted file mode 120000
index 26c96de104..0000000000
--- a/Lang/Rebol/21-game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/21-game/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/24-game b/Lang/Rebol/24-game
deleted file mode 120000
index da2db22523..0000000000
--- a/Lang/Rebol/24-game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/24-game/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/9-billion-names-of-God-the-integer b/Lang/Rebol/9-billion-names-of-God-the-integer
deleted file mode 120000
index 73577ad2b4..0000000000
--- a/Lang/Rebol/9-billion-names-of-God-the-integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/9-billion-names-of-God-the-integer/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/99-bottles-of-beer b/Lang/Rebol/99-bottles-of-beer
deleted file mode 120000
index 5fa8a19390..0000000000
--- a/Lang/Rebol/99-bottles-of-beer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/99-bottles-of-beer/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/A+B b/Lang/Rebol/A+B
deleted file mode 120000
index b25e6fbd34..0000000000
--- a/Lang/Rebol/A+B
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/A+B/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/ABC-problem b/Lang/Rebol/ABC-problem
deleted file mode 120000
index 4e6e666878..0000000000
--- a/Lang/Rebol/ABC-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/ABC-problem/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Abbreviations-automatic b/Lang/Rebol/Abbreviations-automatic
deleted file mode 120000
index 85b470e105..0000000000
--- a/Lang/Rebol/Abbreviations-automatic
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abbreviations-automatic/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Abbreviations-easy b/Lang/Rebol/Abbreviations-easy
deleted file mode 120000
index f54524f132..0000000000
--- a/Lang/Rebol/Abbreviations-easy
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abbreviations-easy/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Abbreviations-simple b/Lang/Rebol/Abbreviations-simple
deleted file mode 120000
index 1036d0a126..0000000000
--- a/Lang/Rebol/Abbreviations-simple
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abbreviations-simple/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Abelian-sandpile-model-Identity b/Lang/Rebol/Abelian-sandpile-model-Identity
deleted file mode 120000
index fa169923d8..0000000000
--- a/Lang/Rebol/Abelian-sandpile-model-Identity
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abelian-sandpile-model-Identity/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Abstract-type b/Lang/Rebol/Abstract-type
deleted file mode 120000
index 98f9214f95..0000000000
--- a/Lang/Rebol/Abstract-type
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abstract-type/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Abundant-odd-numbers b/Lang/Rebol/Abundant-odd-numbers
deleted file mode 120000
index 3a7c4247e0..0000000000
--- a/Lang/Rebol/Abundant-odd-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abundant-odd-numbers/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Accumulator-factory b/Lang/Rebol/Accumulator-factory
deleted file mode 120000
index 2ad70f64ad..0000000000
--- a/Lang/Rebol/Accumulator-factory
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Accumulator-factory/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Ackermann-function b/Lang/Rebol/Ackermann-function
deleted file mode 120000
index 699a619796..0000000000
--- a/Lang/Rebol/Ackermann-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ackermann-function/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Add-a-variable-to-a-class-instance-at-runtime b/Lang/Rebol/Add-a-variable-to-a-class-instance-at-runtime
deleted file mode 120000
index a74659ec86..0000000000
--- a/Lang/Rebol/Add-a-variable-to-a-class-instance-at-runtime
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Add-a-variable-to-a-class-instance-at-runtime/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Additive-primes b/Lang/Rebol/Additive-primes
deleted file mode 120000
index 1f4da61e10..0000000000
--- a/Lang/Rebol/Additive-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Additive-primes/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Align-columns b/Lang/Rebol/Align-columns
deleted file mode 120000
index f1de5b19b7..0000000000
--- a/Lang/Rebol/Align-columns
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Align-columns/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Almost-prime b/Lang/Rebol/Almost-prime
deleted file mode 120000
index 485728d591..0000000000
--- a/Lang/Rebol/Almost-prime
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Almost-prime/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Amb b/Lang/Rebol/Amb
deleted file mode 120000
index ada18b3a53..0000000000
--- a/Lang/Rebol/Amb
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Amb/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Amicable-pairs b/Lang/Rebol/Amicable-pairs
deleted file mode 120000
index 7715d03a59..0000000000
--- a/Lang/Rebol/Amicable-pairs
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Amicable-pairs/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Anagrams b/Lang/Rebol/Anagrams
deleted file mode 120000
index 19dbe7b94f..0000000000
--- a/Lang/Rebol/Anagrams
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Anagrams/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Anagrams-Deranged-anagrams b/Lang/Rebol/Anagrams-Deranged-anagrams
deleted file mode 120000
index dc92d83901..0000000000
--- a/Lang/Rebol/Anagrams-Deranged-anagrams
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Anagrams-Deranged-anagrams/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Animation b/Lang/Rebol/Animation
deleted file mode 120000
index 9bc983a74f..0000000000
--- a/Lang/Rebol/Animation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Animation/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Anonymous-recursion b/Lang/Rebol/Anonymous-recursion
deleted file mode 120000
index bb89ba8ad2..0000000000
--- a/Lang/Rebol/Anonymous-recursion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Anonymous-recursion/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Anti-primes b/Lang/Rebol/Anti-primes
deleted file mode 120000
index a605291c15..0000000000
--- a/Lang/Rebol/Anti-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Anti-primes/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Apply-a-callback-to-an-array b/Lang/Rebol/Apply-a-callback-to-an-array
deleted file mode 120000
index 846524932e..0000000000
--- a/Lang/Rebol/Apply-a-callback-to-an-array
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Apply-a-callback-to-an-array/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Archimedean-spiral b/Lang/Rebol/Archimedean-spiral
deleted file mode 120000
index 485754061d..0000000000
--- a/Lang/Rebol/Archimedean-spiral
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Archimedean-spiral/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Arena-storage-pool b/Lang/Rebol/Arena-storage-pool
deleted file mode 120000
index 261e2b68b6..0000000000
--- a/Lang/Rebol/Arena-storage-pool
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arena-storage-pool/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Arithmetic-Integer b/Lang/Rebol/Arithmetic-Integer
deleted file mode 120000
index beda640d8b..0000000000
--- a/Lang/Rebol/Arithmetic-Integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-Integer/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Arithmetic-evaluation b/Lang/Rebol/Arithmetic-evaluation
deleted file mode 120000
index eace662534..0000000000
--- a/Lang/Rebol/Arithmetic-evaluation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-evaluation/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Array-concatenation b/Lang/Rebol/Array-concatenation
deleted file mode 120000
index 54981e3b27..0000000000
--- a/Lang/Rebol/Array-concatenation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Array-concatenation/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Array-length b/Lang/Rebol/Array-length
deleted file mode 120000
index b057893924..0000000000
--- a/Lang/Rebol/Array-length
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Array-length/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Arrays b/Lang/Rebol/Arrays
deleted file mode 120000
index c2505cc17f..0000000000
--- a/Lang/Rebol/Arrays
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arrays/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Assertions b/Lang/Rebol/Assertions
deleted file mode 120000
index 410d203693..0000000000
--- a/Lang/Rebol/Assertions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Assertions/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Associative-array-Creation b/Lang/Rebol/Associative-array-Creation
deleted file mode 120000
index ed84b3cd74..0000000000
--- a/Lang/Rebol/Associative-array-Creation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Associative-array-Creation/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Attractive-numbers b/Lang/Rebol/Attractive-numbers
deleted file mode 120000
index bd3dc833b3..0000000000
--- a/Lang/Rebol/Attractive-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Attractive-numbers/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Averages-Arithmetic-mean b/Lang/Rebol/Averages-Arithmetic-mean
deleted file mode 120000
index 1b2f7cd050..0000000000
--- a/Lang/Rebol/Averages-Arithmetic-mean
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Arithmetic-mean/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Averages-Median b/Lang/Rebol/Averages-Median
deleted file mode 120000
index 308cc999e7..0000000000
--- a/Lang/Rebol/Averages-Median
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Median/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Babbage-problem b/Lang/Rebol/Babbage-problem
deleted file mode 120000
index da5afb5375..0000000000
--- a/Lang/Rebol/Babbage-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Babbage-problem/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Babylonian-spiral b/Lang/Rebol/Babylonian-spiral
deleted file mode 120000
index 18aac82eae..0000000000
--- a/Lang/Rebol/Babylonian-spiral
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Babylonian-spiral/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Balanced-brackets b/Lang/Rebol/Balanced-brackets
deleted file mode 120000
index 99271027bc..0000000000
--- a/Lang/Rebol/Balanced-brackets
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Balanced-brackets/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Barnsley-fern b/Lang/Rebol/Barnsley-fern
deleted file mode 120000
index e98ef998d2..0000000000
--- a/Lang/Rebol/Barnsley-fern
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Barnsley-fern/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Base64-decode-data b/Lang/Rebol/Base64-decode-data
deleted file mode 120000
index 0ea7b555cb..0000000000
--- a/Lang/Rebol/Base64-decode-data
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Base64-decode-data/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Bifid-cipher b/Lang/Rebol/Bifid-cipher
deleted file mode 120000
index b00839dd98..0000000000
--- a/Lang/Rebol/Bifid-cipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bifid-cipher/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Binary-digits b/Lang/Rebol/Binary-digits
deleted file mode 120000
index 7cb2d23198..0000000000
--- a/Lang/Rebol/Binary-digits
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Binary-digits/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Binary-strings b/Lang/Rebol/Binary-strings
deleted file mode 120000
index 9671e7ddf3..0000000000
--- a/Lang/Rebol/Binary-strings
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Binary-strings/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Biorhythms b/Lang/Rebol/Biorhythms
deleted file mode 120000
index 7e80c97327..0000000000
--- a/Lang/Rebol/Biorhythms
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Biorhythms/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Bitcoin-address-validation b/Lang/Rebol/Bitcoin-address-validation
deleted file mode 120000
index 9344a9c4c3..0000000000
--- a/Lang/Rebol/Bitcoin-address-validation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bitcoin-address-validation/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Bitmap b/Lang/Rebol/Bitmap
deleted file mode 120000
index 629709bef1..0000000000
--- a/Lang/Rebol/Bitmap
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bitmap/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Bitmap-Flood-fill b/Lang/Rebol/Bitmap-Flood-fill
deleted file mode 120000
index af82299463..0000000000
--- a/Lang/Rebol/Bitmap-Flood-fill
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bitmap-Flood-fill/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Bitmap-Histogram b/Lang/Rebol/Bitmap-Histogram
deleted file mode 120000
index 3dc33a01e1..0000000000
--- a/Lang/Rebol/Bitmap-Histogram
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bitmap-Histogram/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Bitmap-Midpoint-circle-algorithm b/Lang/Rebol/Bitmap-Midpoint-circle-algorithm
deleted file mode 120000
index d8a14cc133..0000000000
--- a/Lang/Rebol/Bitmap-Midpoint-circle-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bitmap-Midpoint-circle-algorithm/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Bitmap-Read-a-PPM-file b/Lang/Rebol/Bitmap-Read-a-PPM-file
deleted file mode 120000
index 4c8503a5c6..0000000000
--- a/Lang/Rebol/Bitmap-Read-a-PPM-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bitmap-Read-a-PPM-file/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Bitmap-Write-a-PPM-file b/Lang/Rebol/Bitmap-Write-a-PPM-file
deleted file mode 120000
index f47ca4a660..0000000000
--- a/Lang/Rebol/Bitmap-Write-a-PPM-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bitmap-Write-a-PPM-file/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Bitwise-IO b/Lang/Rebol/Bitwise-IO
deleted file mode 120000
index d928c50478..0000000000
--- a/Lang/Rebol/Bitwise-IO
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bitwise-IO/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Bitwise-operations b/Lang/Rebol/Bitwise-operations
deleted file mode 120000
index ed4b6220a6..0000000000
--- a/Lang/Rebol/Bitwise-operations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bitwise-operations/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Box-the-compass b/Lang/Rebol/Box-the-compass
deleted file mode 120000
index 8772a92d1c..0000000000
--- a/Lang/Rebol/Box-the-compass
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Box-the-compass/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Bulls-and-cows b/Lang/Rebol/Bulls-and-cows
deleted file mode 120000
index acbfc00124..0000000000
--- a/Lang/Rebol/Bulls-and-cows
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bulls-and-cows/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Bulls-and-cows-Player b/Lang/Rebol/Bulls-and-cows-Player
deleted file mode 120000
index 3cce956d9f..0000000000
--- a/Lang/Rebol/Bulls-and-cows-Player
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bulls-and-cows-Player/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Burrows-Wheeler-transform b/Lang/Rebol/Burrows-Wheeler-transform
deleted file mode 120000
index 0a3a26dcec..0000000000
--- a/Lang/Rebol/Burrows-Wheeler-transform
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Burrows-Wheeler-transform/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/CRC-32 b/Lang/Rebol/CRC-32
deleted file mode 120000
index 634c717528..0000000000
--- a/Lang/Rebol/CRC-32
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/CRC-32/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/CSV-data-manipulation b/Lang/Rebol/CSV-data-manipulation
deleted file mode 120000
index 7ac497a786..0000000000
--- a/Lang/Rebol/CSV-data-manipulation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/CSV-data-manipulation/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/CSV-to-HTML-translation b/Lang/Rebol/CSV-to-HTML-translation
deleted file mode 120000
index f5ad170ee4..0000000000
--- a/Lang/Rebol/CSV-to-HTML-translation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/CSV-to-HTML-translation/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Caesar-cipher b/Lang/Rebol/Caesar-cipher
deleted file mode 120000
index a6b4726d60..0000000000
--- a/Lang/Rebol/Caesar-cipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Caesar-cipher/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Calendar b/Lang/Rebol/Calendar
deleted file mode 120000
index ab6fe69315..0000000000
--- a/Lang/Rebol/Calendar
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Calendar/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Calendar---for-REAL-programmers b/Lang/Rebol/Calendar---for-REAL-programmers
deleted file mode 120000
index af1c969dec..0000000000
--- a/Lang/Rebol/Calendar---for-REAL-programmers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Calendar---for-REAL-programmers/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Catalan-numbers b/Lang/Rebol/Catalan-numbers
deleted file mode 120000
index 0e39f685c0..0000000000
--- a/Lang/Rebol/Catalan-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Catalan-numbers/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Catalan-numbers-Pascals-triangle b/Lang/Rebol/Catalan-numbers-Pascals-triangle
deleted file mode 120000
index 6b1b6d4970..0000000000
--- a/Lang/Rebol/Catalan-numbers-Pascals-triangle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Catalan-numbers-Pascals-triangle/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Character-codes b/Lang/Rebol/Character-codes
deleted file mode 120000
index 3daa301cb2..0000000000
--- a/Lang/Rebol/Character-codes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Character-codes/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Check-input-device-is-a-terminal b/Lang/Rebol/Check-input-device-is-a-terminal
deleted file mode 120000
index 82d5a1e6e2..0000000000
--- a/Lang/Rebol/Check-input-device-is-a-terminal
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Check-input-device-is-a-terminal/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Check-that-file-exists b/Lang/Rebol/Check-that-file-exists
deleted file mode 120000
index 83129a7375..0000000000
--- a/Lang/Rebol/Check-that-file-exists
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Check-that-file-exists/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Chinese-zodiac b/Lang/Rebol/Chinese-zodiac
deleted file mode 120000
index e983432942..0000000000
--- a/Lang/Rebol/Chinese-zodiac
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Chinese-zodiac/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Classes b/Lang/Rebol/Classes
deleted file mode 120000
index 19c13253ee..0000000000
--- a/Lang/Rebol/Classes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Classes/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Closures-Value-capture b/Lang/Rebol/Closures-Value-capture
deleted file mode 120000
index c746b0b21a..0000000000
--- a/Lang/Rebol/Closures-Value-capture
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Closures-Value-capture/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Color-quantization b/Lang/Rebol/Color-quantization
deleted file mode 120000
index fca9b62778..0000000000
--- a/Lang/Rebol/Color-quantization
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Color-quantization/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Comma-quibbling b/Lang/Rebol/Comma-quibbling
deleted file mode 120000
index 8f9382035d..0000000000
--- a/Lang/Rebol/Comma-quibbling
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Comma-quibbling/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Comments b/Lang/Rebol/Comments
deleted file mode 120000
index 1a45f1afdb..0000000000
--- a/Lang/Rebol/Comments
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Comments/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Compare-a-list-of-strings b/Lang/Rebol/Compare-a-list-of-strings
deleted file mode 120000
index 8b48806d25..0000000000
--- a/Lang/Rebol/Compare-a-list-of-strings
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compare-a-list-of-strings/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Conways-Game-of-Life b/Lang/Rebol/Conways-Game-of-Life
deleted file mode 120000
index 1be297f380..0000000000
--- a/Lang/Rebol/Conways-Game-of-Life
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Conways-Game-of-Life/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Copy-a-string b/Lang/Rebol/Copy-a-string
deleted file mode 120000
index 713a966385..0000000000
--- a/Lang/Rebol/Copy-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Copy-a-string/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Create-a-file b/Lang/Rebol/Create-a-file
deleted file mode 120000
index eb56f3709c..0000000000
--- a/Lang/Rebol/Create-a-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Create-a-file/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Create-a-two-dimensional-array-at-runtime b/Lang/Rebol/Create-a-two-dimensional-array-at-runtime
deleted file mode 120000
index 2338b1da0a..0000000000
--- a/Lang/Rebol/Create-a-two-dimensional-array-at-runtime
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Create-a-two-dimensional-array-at-runtime/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Create-an-HTML-table b/Lang/Rebol/Create-an-HTML-table
deleted file mode 120000
index 479c62b61c..0000000000
--- a/Lang/Rebol/Create-an-HTML-table
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Create-an-HTML-table/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Currency b/Lang/Rebol/Currency
deleted file mode 120000
index 918d212fb1..0000000000
--- a/Lang/Rebol/Currency
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Currency/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Currying b/Lang/Rebol/Currying
deleted file mode 120000
index 8810de2a28..0000000000
--- a/Lang/Rebol/Currying
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Currying/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Date-format b/Lang/Rebol/Date-format
deleted file mode 120000
index bbad545c0e..0000000000
--- a/Lang/Rebol/Date-format
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Date-format/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Date-manipulation b/Lang/Rebol/Date-manipulation
deleted file mode 120000
index 0ef2caa486..0000000000
--- a/Lang/Rebol/Date-manipulation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Date-manipulation/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Day-of-the-week b/Lang/Rebol/Day-of-the-week
deleted file mode 120000
index 27a96c7aab..0000000000
--- a/Lang/Rebol/Day-of-the-week
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Day-of-the-week/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Deal-cards-for-FreeCell b/Lang/Rebol/Deal-cards-for-FreeCell
deleted file mode 120000
index 6092f801ff..0000000000
--- a/Lang/Rebol/Deal-cards-for-FreeCell
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Deal-cards-for-FreeCell/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Delete-a-file b/Lang/Rebol/Delete-a-file
deleted file mode 120000
index 60299e91d7..0000000000
--- a/Lang/Rebol/Delete-a-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Delete-a-file/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Detect-division-by-zero b/Lang/Rebol/Detect-division-by-zero
deleted file mode 120000
index fb477e9779..0000000000
--- a/Lang/Rebol/Detect-division-by-zero
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Detect-division-by-zero/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Determine-if-a-string-is-numeric b/Lang/Rebol/Determine-if-a-string-is-numeric
deleted file mode 120000
index 6a7216a9d5..0000000000
--- a/Lang/Rebol/Determine-if-a-string-is-numeric
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-is-numeric/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Digital-root b/Lang/Rebol/Digital-root
deleted file mode 120000
index c70057beb3..0000000000
--- a/Lang/Rebol/Digital-root
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Digital-root/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Display-a-linear-combination b/Lang/Rebol/Display-a-linear-combination
deleted file mode 120000
index 701713c8e0..0000000000
--- a/Lang/Rebol/Display-a-linear-combination
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Display-a-linear-combination/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Documentation b/Lang/Rebol/Documentation
deleted file mode 120000
index 92c3f85b3b..0000000000
--- a/Lang/Rebol/Documentation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Documentation/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Dot-product b/Lang/Rebol/Dot-product
deleted file mode 120000
index a29d1db870..0000000000
--- a/Lang/Rebol/Dot-product
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dot-product/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Dragon-curve b/Lang/Rebol/Dragon-curve
deleted file mode 120000
index e192bc1b6c..0000000000
--- a/Lang/Rebol/Dragon-curve
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dragon-curve/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Draw-a-clock b/Lang/Rebol/Draw-a-clock
deleted file mode 120000
index 9c767ac91b..0000000000
--- a/Lang/Rebol/Draw-a-clock
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Draw-a-clock/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Draw-a-pixel b/Lang/Rebol/Draw-a-pixel
deleted file mode 120000
index 4424b2ecc5..0000000000
--- a/Lang/Rebol/Draw-a-pixel
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Draw-a-pixel/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Dynamic-variable-names b/Lang/Rebol/Dynamic-variable-names
deleted file mode 120000
index 36e09e119f..0000000000
--- a/Lang/Rebol/Dynamic-variable-names
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dynamic-variable-names/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Echo-server b/Lang/Rebol/Echo-server
deleted file mode 120000
index cdc4b2fda6..0000000000
--- a/Lang/Rebol/Echo-server
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Echo-server/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Empty-directory b/Lang/Rebol/Empty-directory
deleted file mode 120000
index 2945783dae..0000000000
--- a/Lang/Rebol/Empty-directory
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Empty-directory/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Empty-program b/Lang/Rebol/Empty-program
deleted file mode 120000
index f34c1f5023..0000000000
--- a/Lang/Rebol/Empty-program
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Empty-program/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Empty-string b/Lang/Rebol/Empty-string
deleted file mode 120000
index 33318a0a63..0000000000
--- a/Lang/Rebol/Empty-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Empty-string/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Enumerations b/Lang/Rebol/Enumerations
deleted file mode 120000
index ba3f469c4e..0000000000
--- a/Lang/Rebol/Enumerations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Enumerations/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Environment-variables b/Lang/Rebol/Environment-variables
deleted file mode 120000
index 5354438b20..0000000000
--- a/Lang/Rebol/Environment-variables
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Environment-variables/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Ethiopian-multiplication b/Lang/Rebol/Ethiopian-multiplication
deleted file mode 120000
index 1671fc4362..0000000000
--- a/Lang/Rebol/Ethiopian-multiplication
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ethiopian-multiplication/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Euler-method b/Lang/Rebol/Euler-method
deleted file mode 120000
index d587d93232..0000000000
--- a/Lang/Rebol/Euler-method
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Euler-method/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Eulers-constant-0.5772... b/Lang/Rebol/Eulers-constant-0.5772...
deleted file mode 120000
index 02917c130f..0000000000
--- a/Lang/Rebol/Eulers-constant-0.5772...
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Eulers-constant-0.5772.../Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Evolutionary-algorithm b/Lang/Rebol/Evolutionary-algorithm
deleted file mode 120000
index ccdf89518f..0000000000
--- a/Lang/Rebol/Evolutionary-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Evolutionary-algorithm/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Execute-Brain- b/Lang/Rebol/Execute-Brain-
deleted file mode 120000
index 60bfe033c3..0000000000
--- a/Lang/Rebol/Execute-Brain-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Execute-Brain-/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Execute-a-system-command b/Lang/Rebol/Execute-a-system-command
deleted file mode 120000
index 14651b49c9..0000000000
--- a/Lang/Rebol/Execute-a-system-command
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Execute-a-system-command/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Exponentiation-order b/Lang/Rebol/Exponentiation-order
deleted file mode 120000
index 852ef49526..0000000000
--- a/Lang/Rebol/Exponentiation-order
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Exponentiation-order/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/FASTA-format b/Lang/Rebol/FASTA-format
deleted file mode 120000
index 40d663436d..0000000000
--- a/Lang/Rebol/FASTA-format
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/FASTA-format/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/FTP b/Lang/Rebol/FTP
deleted file mode 120000
index 3480e1937d..0000000000
--- a/Lang/Rebol/FTP
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/FTP/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Factorial b/Lang/Rebol/Factorial
deleted file mode 120000
index 359724a1fc..0000000000
--- a/Lang/Rebol/Factorial
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factorial/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Factors-of-an-integer b/Lang/Rebol/Factors-of-an-integer
deleted file mode 120000
index 9d42008357..0000000000
--- a/Lang/Rebol/Factors-of-an-integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factors-of-an-integer/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Fibonacci-sequence b/Lang/Rebol/Fibonacci-sequence
deleted file mode 120000
index f57b59f681..0000000000
--- a/Lang/Rebol/Fibonacci-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fibonacci-sequence/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/File-input-output b/Lang/Rebol/File-input-output
deleted file mode 120000
index b8c077dcb5..0000000000
--- a/Lang/Rebol/File-input-output
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/File-input-output/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/File-size b/Lang/Rebol/File-size
deleted file mode 120000
index 896b2c8e3b..0000000000
--- a/Lang/Rebol/File-size
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/File-size/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Filter b/Lang/Rebol/Filter
deleted file mode 120000
index eaf8ebe826..0000000000
--- a/Lang/Rebol/Filter
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Filter/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Find-the-last-Sunday-of-each-month b/Lang/Rebol/Find-the-last-Sunday-of-each-month
deleted file mode 120000
index d3b115bfb8..0000000000
--- a/Lang/Rebol/Find-the-last-Sunday-of-each-month
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Find-the-last-Sunday-of-each-month/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/First-class-functions b/Lang/Rebol/First-class-functions
deleted file mode 120000
index 5b2c2417e0..0000000000
--- a/Lang/Rebol/First-class-functions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/First-class-functions/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/First-class-functions-Use-numbers-analogously b/Lang/Rebol/First-class-functions-Use-numbers-analogously
deleted file mode 120000
index de2ebe8414..0000000000
--- a/Lang/Rebol/First-class-functions-Use-numbers-analogously
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/First-class-functions-Use-numbers-analogously/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Five-weekends b/Lang/Rebol/Five-weekends
deleted file mode 120000
index 01c1c36611..0000000000
--- a/Lang/Rebol/Five-weekends
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Five-weekends/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Fixed-length-records b/Lang/Rebol/Fixed-length-records
deleted file mode 120000
index 9039851f51..0000000000
--- a/Lang/Rebol/Fixed-length-records
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fixed-length-records/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/FizzBuzz b/Lang/Rebol/FizzBuzz
deleted file mode 120000
index eab06ab9bd..0000000000
--- a/Lang/Rebol/FizzBuzz
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/FizzBuzz/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Flatten-a-list b/Lang/Rebol/Flatten-a-list
deleted file mode 120000
index c1a20ef65d..0000000000
--- a/Lang/Rebol/Flatten-a-list
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Flatten-a-list/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Flow-control-structures b/Lang/Rebol/Flow-control-structures
deleted file mode 120000
index 07ef2d4ad0..0000000000
--- a/Lang/Rebol/Flow-control-structures
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Flow-control-structures/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Formatted-numeric-output b/Lang/Rebol/Formatted-numeric-output
deleted file mode 120000
index 7f83bb070c..0000000000
--- a/Lang/Rebol/Formatted-numeric-output
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Formatted-numeric-output/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Fractal-tree b/Lang/Rebol/Fractal-tree
deleted file mode 120000
index dc8b11466f..0000000000
--- a/Lang/Rebol/Fractal-tree
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fractal-tree/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Fraction-reduction b/Lang/Rebol/Fraction-reduction
deleted file mode 120000
index b0104cd06a..0000000000
--- a/Lang/Rebol/Fraction-reduction
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fraction-reduction/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Fractran b/Lang/Rebol/Fractran
deleted file mode 120000
index 9377d42c62..0000000000
--- a/Lang/Rebol/Fractran
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fractran/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Function-composition b/Lang/Rebol/Function-composition
deleted file mode 120000
index 76d75e3285..0000000000
--- a/Lang/Rebol/Function-composition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Function-composition/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Function-definition b/Lang/Rebol/Function-definition
deleted file mode 120000
index 70c2821920..0000000000
--- a/Lang/Rebol/Function-definition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Function-definition/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Gapful-numbers b/Lang/Rebol/Gapful-numbers
deleted file mode 120000
index 68fbc7017f..0000000000
--- a/Lang/Rebol/Gapful-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Gapful-numbers/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Generic-swap b/Lang/Rebol/Generic-swap
deleted file mode 120000
index 283afac298..0000000000
--- a/Lang/Rebol/Generic-swap
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Generic-swap/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Get-system-command-output b/Lang/Rebol/Get-system-command-output
deleted file mode 120000
index 62cff72de6..0000000000
--- a/Lang/Rebol/Get-system-command-output
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Get-system-command-output/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Globally-replace-text-in-several-files b/Lang/Rebol/Globally-replace-text-in-several-files
deleted file mode 120000
index 03354f183a..0000000000
--- a/Lang/Rebol/Globally-replace-text-in-several-files
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Globally-replace-text-in-several-files/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Go-Fish b/Lang/Rebol/Go-Fish
deleted file mode 120000
index 7c0ef6e6d5..0000000000
--- a/Lang/Rebol/Go-Fish
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Go-Fish/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Greatest-common-divisor b/Lang/Rebol/Greatest-common-divisor
deleted file mode 120000
index e924b899c0..0000000000
--- a/Lang/Rebol/Greatest-common-divisor
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Greatest-common-divisor/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Greatest-element-of-a-list b/Lang/Rebol/Greatest-element-of-a-list
deleted file mode 120000
index e262faf6c6..0000000000
--- a/Lang/Rebol/Greatest-element-of-a-list
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Greatest-element-of-a-list/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/HTTP b/Lang/Rebol/HTTP
deleted file mode 120000
index f7583ff32a..0000000000
--- a/Lang/Rebol/HTTP
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/HTTP/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/HTTPS b/Lang/Rebol/HTTPS
deleted file mode 120000
index 39a4cf4015..0000000000
--- a/Lang/Rebol/HTTPS
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/HTTPS/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/HTTPS-Authenticated b/Lang/Rebol/HTTPS-Authenticated
deleted file mode 120000
index 325f33d148..0000000000
--- a/Lang/Rebol/HTTPS-Authenticated
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/HTTPS-Authenticated/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Hailstone-sequence b/Lang/Rebol/Hailstone-sequence
deleted file mode 120000
index 52670d11f8..0000000000
--- a/Lang/Rebol/Hailstone-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hailstone-sequence/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Halt-and-catch-fire b/Lang/Rebol/Halt-and-catch-fire
deleted file mode 120000
index 4e21d500fa..0000000000
--- a/Lang/Rebol/Halt-and-catch-fire
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Halt-and-catch-fire/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Handle-a-signal b/Lang/Rebol/Handle-a-signal
deleted file mode 120000
index 67b30c2214..0000000000
--- a/Lang/Rebol/Handle-a-signal
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Handle-a-signal/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Hash-from-two-arrays b/Lang/Rebol/Hash-from-two-arrays
deleted file mode 120000
index de8389960e..0000000000
--- a/Lang/Rebol/Hash-from-two-arrays
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hash-from-two-arrays/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Hash-join b/Lang/Rebol/Hash-join
deleted file mode 120000
index 02b63d13c7..0000000000
--- a/Lang/Rebol/Hash-join
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hash-join/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Hello-world-Graphical b/Lang/Rebol/Hello-world-Graphical
deleted file mode 120000
index e8f4608f84..0000000000
--- a/Lang/Rebol/Hello-world-Graphical
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Graphical/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Hello-world-Newline-omission b/Lang/Rebol/Hello-world-Newline-omission
deleted file mode 120000
index 2762747194..0000000000
--- a/Lang/Rebol/Hello-world-Newline-omission
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Newline-omission/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Hello-world-Text b/Lang/Rebol/Hello-world-Text
deleted file mode 120000
index 2b783947da..0000000000
--- a/Lang/Rebol/Hello-world-Text
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Text/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Higher-order-functions b/Lang/Rebol/Higher-order-functions
deleted file mode 120000
index 6c4634db1c..0000000000
--- a/Lang/Rebol/Higher-order-functions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Higher-order-functions/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Horners-rule-for-polynomial-evaluation b/Lang/Rebol/Horners-rule-for-polynomial-evaluation
deleted file mode 120000
index 2e9d363a9e..0000000000
--- a/Lang/Rebol/Horners-rule-for-polynomial-evaluation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Horners-rule-for-polynomial-evaluation/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Hostname b/Lang/Rebol/Hostname
deleted file mode 120000
index 3effe6dbed..0000000000
--- a/Lang/Rebol/Hostname
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hostname/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Huffman-coding b/Lang/Rebol/Huffman-coding
deleted file mode 120000
index 545f0a329b..0000000000
--- a/Lang/Rebol/Huffman-coding
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Huffman-coding/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/I-before-E-except-after-C b/Lang/Rebol/I-before-E-except-after-C
deleted file mode 120000
index e2b7750d9c..0000000000
--- a/Lang/Rebol/I-before-E-except-after-C
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/I-before-E-except-after-C/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/ISBN13-check-digit b/Lang/Rebol/ISBN13-check-digit
deleted file mode 120000
index aef47eac0f..0000000000
--- a/Lang/Rebol/ISBN13-check-digit
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/ISBN13-check-digit/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Identity-matrix b/Lang/Rebol/Identity-matrix
deleted file mode 120000
index 6dfa288d93..0000000000
--- a/Lang/Rebol/Identity-matrix
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Identity-matrix/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Image-noise b/Lang/Rebol/Image-noise
deleted file mode 120000
index a58b511104..0000000000
--- a/Lang/Rebol/Image-noise
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Image-noise/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Increment-a-numerical-string b/Lang/Rebol/Increment-a-numerical-string
deleted file mode 120000
index 1d874b5b6c..0000000000
--- a/Lang/Rebol/Increment-a-numerical-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Increment-a-numerical-string/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Inheritance-Single b/Lang/Rebol/Inheritance-Single
deleted file mode 120000
index 0d3eb9573f..0000000000
--- a/Lang/Rebol/Inheritance-Single
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Inheritance-Single/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Input-loop b/Lang/Rebol/Input-loop
deleted file mode 120000
index 62007f0b87..0000000000
--- a/Lang/Rebol/Input-loop
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Input-loop/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Integer-comparison b/Lang/Rebol/Integer-comparison
deleted file mode 120000
index 7349100994..0000000000
--- a/Lang/Rebol/Integer-comparison
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Integer-comparison/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Integer-overflow b/Lang/Rebol/Integer-overflow
deleted file mode 120000
index 8caca51571..0000000000
--- a/Lang/Rebol/Integer-overflow
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Integer-overflow/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Interactive-programming-repl- b/Lang/Rebol/Interactive-programming-repl-
deleted file mode 120000
index e63ccabe70..0000000000
--- a/Lang/Rebol/Interactive-programming-repl-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Interactive-programming-repl-/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/JSON b/Lang/Rebol/JSON
deleted file mode 120000
index 8bd9ae2a02..0000000000
--- a/Lang/Rebol/JSON
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/JSON/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Jacobsthal-numbers b/Lang/Rebol/Jacobsthal-numbers
deleted file mode 120000
index 0faf5cccbd..0000000000
--- a/Lang/Rebol/Jacobsthal-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jacobsthal-numbers/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Jewels-and-stones b/Lang/Rebol/Jewels-and-stones
deleted file mode 120000
index b876a95e71..0000000000
--- a/Lang/Rebol/Jewels-and-stones
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jewels-and-stones/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Josephus-problem b/Lang/Rebol/Josephus-problem
deleted file mode 120000
index 0a4a059418..0000000000
--- a/Lang/Rebol/Josephus-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Josephus-problem/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Keyboard-macros b/Lang/Rebol/Keyboard-macros
deleted file mode 120000
index 6090099e1c..0000000000
--- a/Lang/Rebol/Keyboard-macros
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Keyboard-macros/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Knapsack-problem-0-1 b/Lang/Rebol/Knapsack-problem-0-1
deleted file mode 120000
index a86da2e20d..0000000000
--- a/Lang/Rebol/Knapsack-problem-0-1
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Knapsack-problem-0-1/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Knapsack-problem-Bounded b/Lang/Rebol/Knapsack-problem-Bounded
deleted file mode 120000
index 75ecc0ad88..0000000000
--- a/Lang/Rebol/Knapsack-problem-Bounded
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Knapsack-problem-Bounded/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Knapsack-problem-Continuous b/Lang/Rebol/Knapsack-problem-Continuous
deleted file mode 120000
index d2d9139eb3..0000000000
--- a/Lang/Rebol/Knapsack-problem-Continuous
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Knapsack-problem-Continuous/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Knapsack-problem-Unbounded b/Lang/Rebol/Knapsack-problem-Unbounded
deleted file mode 120000
index 05a28b3b91..0000000000
--- a/Lang/Rebol/Knapsack-problem-Unbounded
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Knapsack-problem-Unbounded/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Knights-tour b/Lang/Rebol/Knights-tour
deleted file mode 120000
index 71e91ef802..0000000000
--- a/Lang/Rebol/Knights-tour
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Knights-tour/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Knuth-shuffle b/Lang/Rebol/Knuth-shuffle
deleted file mode 120000
index 34c5744ed5..0000000000
--- a/Lang/Rebol/Knuth-shuffle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Knuth-shuffle/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/LZW-compression b/Lang/Rebol/LZW-compression
deleted file mode 120000
index 6ef643485d..0000000000
--- a/Lang/Rebol/LZW-compression
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/LZW-compression/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Largest-number-divisible-by-its-digits b/Lang/Rebol/Largest-number-divisible-by-its-digits
deleted file mode 120000
index ded7dc4f52..0000000000
--- a/Lang/Rebol/Largest-number-divisible-by-its-digits
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Largest-number-divisible-by-its-digits/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Last-Friday-of-each-month b/Lang/Rebol/Last-Friday-of-each-month
deleted file mode 120000
index 22f9e289f1..0000000000
--- a/Lang/Rebol/Last-Friday-of-each-month
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Last-Friday-of-each-month/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Leap-year b/Lang/Rebol/Leap-year
deleted file mode 120000
index fe28d10471..0000000000
--- a/Lang/Rebol/Leap-year
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Leap-year/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Letter-frequency b/Lang/Rebol/Letter-frequency
deleted file mode 120000
index f821174d22..0000000000
--- a/Lang/Rebol/Letter-frequency
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Letter-frequency/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Levenshtein-distance b/Lang/Rebol/Levenshtein-distance
deleted file mode 120000
index 8eb20cd9e5..0000000000
--- a/Lang/Rebol/Levenshtein-distance
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Levenshtein-distance/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Literals-Floating-point b/Lang/Rebol/Literals-Floating-point
deleted file mode 120000
index 446f0ca13c..0000000000
--- a/Lang/Rebol/Literals-Floating-point
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Literals-Floating-point/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Literals-Integer b/Lang/Rebol/Literals-Integer
deleted file mode 120000
index 61eb2276ad..0000000000
--- a/Lang/Rebol/Literals-Integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Literals-Integer/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Logical-operations b/Lang/Rebol/Logical-operations
deleted file mode 120000
index 4ccc093b6a..0000000000
--- a/Lang/Rebol/Logical-operations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Logical-operations/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Look-and-say-sequence b/Lang/Rebol/Look-and-say-sequence
deleted file mode 120000
index 5af8fa2fe8..0000000000
--- a/Lang/Rebol/Look-and-say-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Look-and-say-sequence/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Loop-over-multiple-arrays-simultaneously b/Lang/Rebol/Loop-over-multiple-arrays-simultaneously
deleted file mode 120000
index 7e8df4a406..0000000000
--- a/Lang/Rebol/Loop-over-multiple-arrays-simultaneously
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loop-over-multiple-arrays-simultaneously/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Loops-Break b/Lang/Rebol/Loops-Break
deleted file mode 120000
index a7d70b8ddf..0000000000
--- a/Lang/Rebol/Loops-Break
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Break/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Loops-Continue b/Lang/Rebol/Loops-Continue
deleted file mode 120000
index eb55ae4a46..0000000000
--- a/Lang/Rebol/Loops-Continue
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Continue/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Loops-Do-while b/Lang/Rebol/Loops-Do-while
deleted file mode 120000
index 7b9c11e6c9..0000000000
--- a/Lang/Rebol/Loops-Do-while
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Do-while/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Loops-Downward-for b/Lang/Rebol/Loops-Downward-for
deleted file mode 120000
index aabadccc5d..0000000000
--- a/Lang/Rebol/Loops-Downward-for
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Downward-for/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Loops-For b/Lang/Rebol/Loops-For
deleted file mode 120000
index 3441cbf3e4..0000000000
--- a/Lang/Rebol/Loops-For
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-For/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Loops-For-with-a-specified-step b/Lang/Rebol/Loops-For-with-a-specified-step
deleted file mode 120000
index 48cddeed7c..0000000000
--- a/Lang/Rebol/Loops-For-with-a-specified-step
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-For-with-a-specified-step/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Loops-Foreach b/Lang/Rebol/Loops-Foreach
deleted file mode 120000
index 5113646d4a..0000000000
--- a/Lang/Rebol/Loops-Foreach
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Foreach/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Loops-Increment-loop-index-within-loop-body b/Lang/Rebol/Loops-Increment-loop-index-within-loop-body
deleted file mode 120000
index 2a105f8219..0000000000
--- a/Lang/Rebol/Loops-Increment-loop-index-within-loop-body
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Increment-loop-index-within-loop-body/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Loops-Infinite b/Lang/Rebol/Loops-Infinite
deleted file mode 120000
index b9782bb44c..0000000000
--- a/Lang/Rebol/Loops-Infinite
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Infinite/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Loops-N-plus-one-half b/Lang/Rebol/Loops-N-plus-one-half
deleted file mode 120000
index fde94d5278..0000000000
--- a/Lang/Rebol/Loops-N-plus-one-half
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-N-plus-one-half/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Loops-Nested b/Lang/Rebol/Loops-Nested
deleted file mode 120000
index 8570918c54..0000000000
--- a/Lang/Rebol/Loops-Nested
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Nested/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Loops-While b/Lang/Rebol/Loops-While
deleted file mode 120000
index d6ae658607..0000000000
--- a/Lang/Rebol/Loops-While
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-While/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Loops-With-multiple-ranges b/Lang/Rebol/Loops-With-multiple-ranges
deleted file mode 120000
index 1444c994ba..0000000000
--- a/Lang/Rebol/Loops-With-multiple-ranges
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-With-multiple-ranges/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Loops-Wrong-ranges b/Lang/Rebol/Loops-Wrong-ranges
deleted file mode 120000
index 8c6fabb9b5..0000000000
--- a/Lang/Rebol/Loops-Wrong-ranges
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Wrong-ranges/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Ludic-numbers b/Lang/Rebol/Ludic-numbers
deleted file mode 120000
index a4ebabb376..0000000000
--- a/Lang/Rebol/Ludic-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ludic-numbers/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Luhn-test-of-credit-card-numbers b/Lang/Rebol/Luhn-test-of-credit-card-numbers
deleted file mode 120000
index 54db6d0086..0000000000
--- a/Lang/Rebol/Luhn-test-of-credit-card-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Luhn-test-of-credit-card-numbers/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Lychrel-numbers b/Lang/Rebol/Lychrel-numbers
deleted file mode 120000
index a9ccc00139..0000000000
--- a/Lang/Rebol/Lychrel-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Lychrel-numbers/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/MAC-vendor-lookup b/Lang/Rebol/MAC-vendor-lookup
deleted file mode 120000
index ea5da48c4a..0000000000
--- a/Lang/Rebol/MAC-vendor-lookup
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/MAC-vendor-lookup/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/MD5 b/Lang/Rebol/MD5
deleted file mode 120000
index 8e783d3330..0000000000
--- a/Lang/Rebol/MD5
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/MD5/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Mad-Libs b/Lang/Rebol/Mad-Libs
deleted file mode 120000
index e503266ac3..0000000000
--- a/Lang/Rebol/Mad-Libs
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Mad-Libs/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Mandelbrot-set b/Lang/Rebol/Mandelbrot-set
deleted file mode 120000
index 9795649798..0000000000
--- a/Lang/Rebol/Mandelbrot-set
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Mandelbrot-set/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Mayan-numerals b/Lang/Rebol/Mayan-numerals
deleted file mode 120000
index f3c3f1ac1b..0000000000
--- a/Lang/Rebol/Mayan-numerals
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Mayan-numerals/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Maze-generation b/Lang/Rebol/Maze-generation
deleted file mode 120000
index 16909e3bd3..0000000000
--- a/Lang/Rebol/Maze-generation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Maze-generation/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Menu b/Lang/Rebol/Menu
deleted file mode 120000
index 0970cb6584..0000000000
--- a/Lang/Rebol/Menu
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Menu/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Morse-code b/Lang/Rebol/Morse-code
deleted file mode 120000
index 9b184a4368..0000000000
--- a/Lang/Rebol/Morse-code
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Morse-code/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Multiplication-tables b/Lang/Rebol/Multiplication-tables
deleted file mode 120000
index 19c593899a..0000000000
--- a/Lang/Rebol/Multiplication-tables
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Multiplication-tables/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Mutual-recursion b/Lang/Rebol/Mutual-recursion
deleted file mode 120000
index 3927e2e3d0..0000000000
--- a/Lang/Rebol/Mutual-recursion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Mutual-recursion/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Nim-game b/Lang/Rebol/Nim-game
deleted file mode 120000
index 3d509e2da0..0000000000
--- a/Lang/Rebol/Nim-game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nim-game/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Null-object b/Lang/Rebol/Null-object
deleted file mode 120000
index 6d91c61493..0000000000
--- a/Lang/Rebol/Null-object
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Null-object/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Number-reversal-game b/Lang/Rebol/Number-reversal-game
deleted file mode 120000
index 225b967208..0000000000
--- a/Lang/Rebol/Number-reversal-game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Number-reversal-game/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Object-serialization b/Lang/Rebol/Object-serialization
deleted file mode 120000
index b546950e51..0000000000
--- a/Lang/Rebol/Object-serialization
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Object-serialization/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Ordered-words b/Lang/Rebol/Ordered-words
deleted file mode 120000
index 62492c8748..0000000000
--- a/Lang/Rebol/Ordered-words
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ordered-words/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Padovan-n-step-number-sequences b/Lang/Rebol/Padovan-n-step-number-sequences
deleted file mode 120000
index 6ce6076d9f..0000000000
--- a/Lang/Rebol/Padovan-n-step-number-sequences
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Padovan-n-step-number-sequences/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Palindrome-detection b/Lang/Rebol/Palindrome-detection
deleted file mode 120000
index 976abf960a..0000000000
--- a/Lang/Rebol/Palindrome-detection
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Palindrome-detection/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Palindromic-gapful-numbers b/Lang/Rebol/Palindromic-gapful-numbers
deleted file mode 120000
index ce1a9844df..0000000000
--- a/Lang/Rebol/Palindromic-gapful-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Palindromic-gapful-numbers/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Parsing-Shunting-yard-algorithm b/Lang/Rebol/Parsing-Shunting-yard-algorithm
deleted file mode 120000
index b48c2dd4c0..0000000000
--- a/Lang/Rebol/Parsing-Shunting-yard-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Parsing-Shunting-yard-algorithm/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Pentagram b/Lang/Rebol/Pentagram
deleted file mode 120000
index 707cf04e6c..0000000000
--- a/Lang/Rebol/Pentagram
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pentagram/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Percentage-difference-between-images b/Lang/Rebol/Percentage-difference-between-images
deleted file mode 120000
index 4b4ccc789a..0000000000
--- a/Lang/Rebol/Percentage-difference-between-images
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Percentage-difference-between-images/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Perfect-numbers b/Lang/Rebol/Perfect-numbers
deleted file mode 120000
index cc7bf3b1d8..0000000000
--- a/Lang/Rebol/Perfect-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Perfect-numbers/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Permutation-test b/Lang/Rebol/Permutation-test
deleted file mode 120000
index 33aca0c009..0000000000
--- a/Lang/Rebol/Permutation-test
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Permutation-test/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Pick-random-element b/Lang/Rebol/Pick-random-element
deleted file mode 120000
index a63070b88e..0000000000
--- a/Lang/Rebol/Pick-random-element
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pick-random-element/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Playing-cards b/Lang/Rebol/Playing-cards
deleted file mode 120000
index 77a603d4f6..0000000000
--- a/Lang/Rebol/Playing-cards
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Playing-cards/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Poker-hand-analyser b/Lang/Rebol/Poker-hand-analyser
deleted file mode 120000
index cd92bc4893..0000000000
--- a/Lang/Rebol/Poker-hand-analyser
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Poker-hand-analyser/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Polyspiral b/Lang/Rebol/Polyspiral
deleted file mode 120000
index a68aec96f7..0000000000
--- a/Lang/Rebol/Polyspiral
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Polyspiral/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Primality-by-trial-division b/Lang/Rebol/Primality-by-trial-division
deleted file mode 120000
index efa17720e9..0000000000
--- a/Lang/Rebol/Primality-by-trial-division
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Primality-by-trial-division/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Program-termination b/Lang/Rebol/Program-termination
deleted file mode 120000
index 24f49d0325..0000000000
--- a/Lang/Rebol/Program-termination
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Program-termination/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Pythagoras-tree b/Lang/Rebol/Pythagoras-tree
deleted file mode 120000
index f30dc63938..0000000000
--- a/Lang/Rebol/Pythagoras-tree
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pythagoras-tree/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Queue-Definition b/Lang/Rebol/Queue-Definition
deleted file mode 120000
index 162ba667c2..0000000000
--- a/Lang/Rebol/Queue-Definition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Queue-Definition/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Queue-Usage b/Lang/Rebol/Queue-Usage
deleted file mode 120000
index f4c7c7a4c3..0000000000
--- a/Lang/Rebol/Queue-Usage
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Queue-Usage/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Quine b/Lang/Rebol/Quine
deleted file mode 120000
index 27b88ad2ff..0000000000
--- a/Lang/Rebol/Quine
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Quine/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Quoting-constructs b/Lang/Rebol/Quoting-constructs
deleted file mode 120000
index cfd2d459f0..0000000000
--- a/Lang/Rebol/Quoting-constructs
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Quoting-constructs/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/RPG-attributes-generator b/Lang/Rebol/RPG-attributes-generator
deleted file mode 120000
index b156c392e1..0000000000
--- a/Lang/Rebol/RPG-attributes-generator
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/RPG-attributes-generator/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Read-a-specific-line-from-a-file b/Lang/Rebol/Read-a-specific-line-from-a-file
deleted file mode 120000
index 14a1597027..0000000000
--- a/Lang/Rebol/Read-a-specific-line-from-a-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Read-a-specific-line-from-a-file/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Read-entire-file b/Lang/Rebol/Read-entire-file
deleted file mode 120000
index 28b35bf7cc..0000000000
--- a/Lang/Rebol/Read-entire-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Read-entire-file/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Recamans-sequence b/Lang/Rebol/Recamans-sequence
deleted file mode 120000
index bfdd733327..0000000000
--- a/Lang/Rebol/Recamans-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Recamans-sequence/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Reduced-row-echelon-form b/Lang/Rebol/Reduced-row-echelon-form
deleted file mode 120000
index 743fe9cee3..0000000000
--- a/Lang/Rebol/Reduced-row-echelon-form
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Reduced-row-echelon-form/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Regular-expressions b/Lang/Rebol/Regular-expressions
deleted file mode 120000
index 8b6a46c176..0000000000
--- a/Lang/Rebol/Regular-expressions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Regular-expressions/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Remove-duplicate-elements b/Lang/Rebol/Remove-duplicate-elements
deleted file mode 120000
index e15cb15fa9..0000000000
--- a/Lang/Rebol/Remove-duplicate-elements
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Remove-duplicate-elements/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Rename-a-file b/Lang/Rebol/Rename-a-file
deleted file mode 120000
index b1a36bd846..0000000000
--- a/Lang/Rebol/Rename-a-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Rename-a-file/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Repeat-a-string b/Lang/Rebol/Repeat-a-string
deleted file mode 120000
index ef9fbbc4ad..0000000000
--- a/Lang/Rebol/Repeat-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Repeat-a-string/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Reverse-a-string b/Lang/Rebol/Reverse-a-string
deleted file mode 120000
index 58f8abd089..0000000000
--- a/Lang/Rebol/Reverse-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Reverse-a-string/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Rock-paper-scissors b/Lang/Rebol/Rock-paper-scissors
deleted file mode 120000
index cda68fe0a1..0000000000
--- a/Lang/Rebol/Rock-paper-scissors
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Rock-paper-scissors/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Rosetta-Code-Count-examples b/Lang/Rebol/Rosetta-Code-Count-examples
deleted file mode 120000
index d0380c9f7b..0000000000
--- a/Lang/Rebol/Rosetta-Code-Count-examples
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Rosetta-Code-Count-examples/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Rosetta-Code-Find-unimplemented-tasks b/Lang/Rebol/Rosetta-Code-Find-unimplemented-tasks
deleted file mode 120000
index 24ea450c68..0000000000
--- a/Lang/Rebol/Rosetta-Code-Find-unimplemented-tasks
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Rosetta-Code-Find-unimplemented-tasks/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Rosetta-Code-Rank-languages-by-popularity b/Lang/Rebol/Rosetta-Code-Rank-languages-by-popularity
deleted file mode 120000
index fab9075fea..0000000000
--- a/Lang/Rebol/Rosetta-Code-Rank-languages-by-popularity
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Rosetta-Code-Rank-languages-by-popularity/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Rot-13 b/Lang/Rebol/Rot-13
deleted file mode 120000
index 237e499a3f..0000000000
--- a/Lang/Rebol/Rot-13
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Rot-13/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Runtime-evaluation b/Lang/Rebol/Runtime-evaluation
deleted file mode 120000
index b5e1f8ecde..0000000000
--- a/Lang/Rebol/Runtime-evaluation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Runtime-evaluation/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Runtime-evaluation-In-an-environment b/Lang/Rebol/Runtime-evaluation-In-an-environment
deleted file mode 120000
index f0cf1819d7..0000000000
--- a/Lang/Rebol/Runtime-evaluation-In-an-environment
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Runtime-evaluation-In-an-environment/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/SHA-1 b/Lang/Rebol/SHA-1
deleted file mode 120000
index 6006c706a1..0000000000
--- a/Lang/Rebol/SHA-1
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/SHA-1/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/SHA-256 b/Lang/Rebol/SHA-256
deleted file mode 120000
index a282c64fe3..0000000000
--- a/Lang/Rebol/SHA-256
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/SHA-256/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/SHA-256-Merkle-tree b/Lang/Rebol/SHA-256-Merkle-tree
deleted file mode 120000
index 3ec6fddf77..0000000000
--- a/Lang/Rebol/SHA-256-Merkle-tree
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/SHA-256-Merkle-tree/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Search-a-list b/Lang/Rebol/Search-a-list
deleted file mode 120000
index 318894f6a3..0000000000
--- a/Lang/Rebol/Search-a-list
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Search-a-list/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Self-describing-numbers b/Lang/Rebol/Self-describing-numbers
deleted file mode 120000
index e068493027..0000000000
--- a/Lang/Rebol/Self-describing-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Self-describing-numbers/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Semordnilap b/Lang/Rebol/Semordnilap
deleted file mode 120000
index 0da3f78b6d..0000000000
--- a/Lang/Rebol/Semordnilap
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Semordnilap/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Send-email b/Lang/Rebol/Send-email
deleted file mode 120000
index bdcdb84d73..0000000000
--- a/Lang/Rebol/Send-email
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Send-email/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Shell-one-liner b/Lang/Rebol/Shell-one-liner
deleted file mode 120000
index d93fe376ad..0000000000
--- a/Lang/Rebol/Shell-one-liner
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Shell-one-liner/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Show-ASCII-table b/Lang/Rebol/Show-ASCII-table
deleted file mode 120000
index 73b59f4704..0000000000
--- a/Lang/Rebol/Show-ASCII-table
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Show-ASCII-table/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Sieve-of-Eratosthenes b/Lang/Rebol/Sieve-of-Eratosthenes
deleted file mode 120000
index 304a7c5cc4..0000000000
--- a/Lang/Rebol/Sieve-of-Eratosthenes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sieve-of-Eratosthenes/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Sieve-of-Pritchard b/Lang/Rebol/Sieve-of-Pritchard
deleted file mode 120000
index ae2da5fd4b..0000000000
--- a/Lang/Rebol/Sieve-of-Pritchard
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sieve-of-Pritchard/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Simple-database b/Lang/Rebol/Simple-database
deleted file mode 120000
index 91cc755165..0000000000
--- a/Lang/Rebol/Simple-database
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Simple-database/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Simple-windowed-application b/Lang/Rebol/Simple-windowed-application
deleted file mode 120000
index 9329534018..0000000000
--- a/Lang/Rebol/Simple-windowed-application
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Simple-windowed-application/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Sleep b/Lang/Rebol/Sleep
deleted file mode 120000
index 93ccbde879..0000000000
--- a/Lang/Rebol/Sleep
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sleep/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Sort-an-integer-array b/Lang/Rebol/Sort-an-integer-array
deleted file mode 120000
index 964bc28a49..0000000000
--- a/Lang/Rebol/Sort-an-integer-array
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-an-integer-array/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Sort-stability b/Lang/Rebol/Sort-stability
deleted file mode 120000
index 398ebf99ce..0000000000
--- a/Lang/Rebol/Sort-stability
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-stability/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Sorting-algorithms-Gnome-sort b/Lang/Rebol/Sorting-algorithms-Gnome-sort
deleted file mode 120000
index 5a1b4b5c4b..0000000000
--- a/Lang/Rebol/Sorting-algorithms-Gnome-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Gnome-sort/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Sorting-algorithms-Insertion-sort b/Lang/Rebol/Sorting-algorithms-Insertion-sort
deleted file mode 120000
index 542842155d..0000000000
--- a/Lang/Rebol/Sorting-algorithms-Insertion-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Insertion-sort/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Sorting-algorithms-Merge-sort b/Lang/Rebol/Sorting-algorithms-Merge-sort
deleted file mode 120000
index c0e13b1fde..0000000000
--- a/Lang/Rebol/Sorting-algorithms-Merge-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Merge-sort/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Sorting-algorithms-Stooge-sort b/Lang/Rebol/Sorting-algorithms-Stooge-sort
deleted file mode 120000
index 330c056497..0000000000
--- a/Lang/Rebol/Sorting-algorithms-Stooge-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Stooge-sort/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Spiral-matrix b/Lang/Rebol/Spiral-matrix
deleted file mode 120000
index 5be66bebd7..0000000000
--- a/Lang/Rebol/Spiral-matrix
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Spiral-matrix/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Stack b/Lang/Rebol/Stack
deleted file mode 120000
index 4ddf42dff7..0000000000
--- a/Lang/Rebol/Stack
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Stack/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Stair-climbing-puzzle b/Lang/Rebol/Stair-climbing-puzzle
deleted file mode 120000
index 30110c39ff..0000000000
--- a/Lang/Rebol/Stair-climbing-puzzle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Stair-climbing-puzzle/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Statistics-Normal-distribution b/Lang/Rebol/Statistics-Normal-distribution
deleted file mode 120000
index c2c6f8e607..0000000000
--- a/Lang/Rebol/Statistics-Normal-distribution
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Statistics-Normal-distribution/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Straddling-checkerboard b/Lang/Rebol/Straddling-checkerboard
deleted file mode 120000
index b2cd63efdf..0000000000
--- a/Lang/Rebol/Straddling-checkerboard
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Straddling-checkerboard/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/String-case b/Lang/Rebol/String-case
deleted file mode 120000
index 99d32eb89d..0000000000
--- a/Lang/Rebol/String-case
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-case/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/String-concatenation b/Lang/Rebol/String-concatenation
deleted file mode 120000
index 60e5df3a60..0000000000
--- a/Lang/Rebol/String-concatenation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-concatenation/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/String-interpolation-included- b/Lang/Rebol/String-interpolation-included-
deleted file mode 120000
index 0d16a99c3d..0000000000
--- a/Lang/Rebol/String-interpolation-included-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-interpolation-included-/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/String-length b/Lang/Rebol/String-length
deleted file mode 120000
index 4008031d32..0000000000
--- a/Lang/Rebol/String-length
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-length/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Strip-comments-from-a-string b/Lang/Rebol/Strip-comments-from-a-string
deleted file mode 120000
index 7d0be8f55b..0000000000
--- a/Lang/Rebol/Strip-comments-from-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strip-comments-from-a-string/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Substring b/Lang/Rebol/Substring
deleted file mode 120000
index 16d8520df3..0000000000
--- a/Lang/Rebol/Substring
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Substring/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Sum-and-product-of-an-array b/Lang/Rebol/Sum-and-product-of-an-array
deleted file mode 120000
index f0691c6c52..0000000000
--- a/Lang/Rebol/Sum-and-product-of-an-array
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sum-and-product-of-an-array/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Symmetric-difference b/Lang/Rebol/Symmetric-difference
deleted file mode 120000
index ead8d7c53a..0000000000
--- a/Lang/Rebol/Symmetric-difference
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Symmetric-difference/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/System-time b/Lang/Rebol/System-time
deleted file mode 120000
index 26192d37e7..0000000000
--- a/Lang/Rebol/System-time
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/System-time/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Take-notes-on-the-command-line b/Lang/Rebol/Take-notes-on-the-command-line
deleted file mode 120000
index 686f0e9609..0000000000
--- a/Lang/Rebol/Take-notes-on-the-command-line
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Take-notes-on-the-command-line/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Terminal-control-Clear-the-screen b/Lang/Rebol/Terminal-control-Clear-the-screen
deleted file mode 120000
index 26092c08d5..0000000000
--- a/Lang/Rebol/Terminal-control-Clear-the-screen
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Terminal-control-Clear-the-screen/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Terminal-control-Coloured-text b/Lang/Rebol/Terminal-control-Coloured-text
deleted file mode 120000
index 91c395fe7a..0000000000
--- a/Lang/Rebol/Terminal-control-Coloured-text
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Terminal-control-Coloured-text/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/The-Twelve-Days-of-Christmas b/Lang/Rebol/The-Twelve-Days-of-Christmas
deleted file mode 120000
index 1cd8cfb663..0000000000
--- a/Lang/Rebol/The-Twelve-Days-of-Christmas
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/The-Twelve-Days-of-Christmas/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Tokenize-a-string b/Lang/Rebol/Tokenize-a-string
deleted file mode 120000
index 683933fc1a..0000000000
--- a/Lang/Rebol/Tokenize-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tokenize-a-string/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Towers-of-Hanoi b/Lang/Rebol/Towers-of-Hanoi
deleted file mode 120000
index 256a976fba..0000000000
--- a/Lang/Rebol/Towers-of-Hanoi
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Towers-of-Hanoi/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Transliterate-English-text-using-the-Greek-alphabet b/Lang/Rebol/Transliterate-English-text-using-the-Greek-alphabet
deleted file mode 120000
index 6cd5a9fcd9..0000000000
--- a/Lang/Rebol/Transliterate-English-text-using-the-Greek-alphabet
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Transliterate-English-text-using-the-Greek-alphabet/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Tree-traversal b/Lang/Rebol/Tree-traversal
deleted file mode 120000
index a9acbc3e12..0000000000
--- a/Lang/Rebol/Tree-traversal
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tree-traversal/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Trigonometric-functions b/Lang/Rebol/Trigonometric-functions
deleted file mode 120000
index 31689c9f7b..0000000000
--- a/Lang/Rebol/Trigonometric-functions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Trigonometric-functions/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Truncate-a-file b/Lang/Rebol/Truncate-a-file
deleted file mode 120000
index a6b1c49090..0000000000
--- a/Lang/Rebol/Truncate-a-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Truncate-a-file/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Twos-complement b/Lang/Rebol/Twos-complement
deleted file mode 120000
index 7d177dca86..0000000000
--- a/Lang/Rebol/Twos-complement
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Twos-complement/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/URL-decoding b/Lang/Rebol/URL-decoding
deleted file mode 120000
index 13aaaaf76d..0000000000
--- a/Lang/Rebol/URL-decoding
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/URL-decoding/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/URL-encoding b/Lang/Rebol/URL-encoding
deleted file mode 120000
index f2738b2378..0000000000
--- a/Lang/Rebol/URL-encoding
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/URL-encoding/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/User-input-Graphical b/Lang/Rebol/User-input-Graphical
deleted file mode 120000
index 9826592fbf..0000000000
--- a/Lang/Rebol/User-input-Graphical
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/User-input-Graphical/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/User-input-Text b/Lang/Rebol/User-input-Text
deleted file mode 120000
index 61cd5bb640..0000000000
--- a/Lang/Rebol/User-input-Text
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/User-input-Text/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Validate-International-Securities-Identification-Number b/Lang/Rebol/Validate-International-Securities-Identification-Number
deleted file mode 120000
index c8f6432cf5..0000000000
--- a/Lang/Rebol/Validate-International-Securities-Identification-Number
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Validate-International-Securities-Identification-Number/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Variadic-function b/Lang/Rebol/Variadic-function
deleted file mode 120000
index eb753c87ca..0000000000
--- a/Lang/Rebol/Variadic-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Variadic-function/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Vigen-re-cipher b/Lang/Rebol/Vigen-re-cipher
deleted file mode 120000
index e4c0684470..0000000000
--- a/Lang/Rebol/Vigen-re-cipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Vigen-re-cipher/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Walk-a-directory-Non-recursively b/Lang/Rebol/Walk-a-directory-Non-recursively
deleted file mode 120000
index 7d9b757781..0000000000
--- a/Lang/Rebol/Walk-a-directory-Non-recursively
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Walk-a-directory-Non-recursively/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Walk-a-directory-Recursively b/Lang/Rebol/Walk-a-directory-Recursively
deleted file mode 120000
index 6bdc6972ee..0000000000
--- a/Lang/Rebol/Walk-a-directory-Recursively
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Walk-a-directory-Recursively/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/War-card-game b/Lang/Rebol/War-card-game
deleted file mode 120000
index 25923c64aa..0000000000
--- a/Lang/Rebol/War-card-game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/War-card-game/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Web-scraping b/Lang/Rebol/Web-scraping
deleted file mode 120000
index 4e9367ba38..0000000000
--- a/Lang/Rebol/Web-scraping
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Web-scraping/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Window-creation b/Lang/Rebol/Window-creation
deleted file mode 120000
index bd0bbb0b87..0000000000
--- a/Lang/Rebol/Window-creation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Window-creation/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Word-frequency b/Lang/Rebol/Word-frequency
deleted file mode 120000
index 520eed281f..0000000000
--- a/Lang/Rebol/Word-frequency
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Word-frequency/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/XML-Input b/Lang/Rebol/XML-Input
deleted file mode 120000
index 014dc4f1f1..0000000000
--- a/Lang/Rebol/XML-Input
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/XML-Input/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Y-combinator b/Lang/Rebol/Y-combinator
deleted file mode 120000
index dcc94474b6..0000000000
--- a/Lang/Rebol/Y-combinator
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Y-combinator/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Zero-to-the-zero-power b/Lang/Rebol/Zero-to-the-zero-power
deleted file mode 120000
index 8722267184..0000000000
--- a/Lang/Rebol/Zero-to-the-zero-power
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Zero-to-the-zero-power/Rebol
\ No newline at end of file
diff --git a/Lang/Rebol/Zig-zag-matrix b/Lang/Rebol/Zig-zag-matrix
deleted file mode 120000
index ff69ef9beb..0000000000
--- a/Lang/Rebol/Zig-zag-matrix
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Zig-zag-matrix/Rebol
\ No newline at end of file
diff --git a/Lang/Red/00-LANG.txt b/Lang/Red/00-LANG.txt
index bde0f4b81e..1cb6089084 100644
--- a/Lang/Red/00-LANG.txt
+++ b/Lang/Red/00-LANG.txt
@@ -8,9 +8,6 @@ Like Rebol, Red has a low memory footprint, is garbage collected, and has a [htt
Red embeds several DSLs, among which Red/System (C semantics meet Red syntax), dedicated to low-level and system programming. It is also used as an intermediate language (IL) when Red is compiled. The Red executable is able to build Red/System files directly (`*.reds`) as well as Red files (`*.red`), and Red/System code may be embedded freely in Red code.
-==Todo==
-[https://rosettacode.org/wiki/Tasks_not_implemented_in_Red Tasks not implemented in Red]
-
==Useful links==
* [http://www.red-lang.org Red Language Website]
* [https://twitter.com/red_lang @red_lang] on Twitter.
diff --git a/Lang/Red/Accumulator-factory b/Lang/Red/Accumulator-factory
deleted file mode 120000
index 73cf9ffff0..0000000000
--- a/Lang/Red/Accumulator-factory
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Accumulator-factory/Red
\ No newline at end of file
diff --git a/Lang/Red/Address-of-a-variable b/Lang/Red/Address-of-a-variable
deleted file mode 120000
index 81b5a1a171..0000000000
--- a/Lang/Red/Address-of-a-variable
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Address-of-a-variable/Red
\ No newline at end of file
diff --git a/Lang/Red/Angle-difference-between-two-bearings b/Lang/Red/Angle-difference-between-two-bearings
deleted file mode 120000
index e218e0c4ee..0000000000
--- a/Lang/Red/Angle-difference-between-two-bearings
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Angle-difference-between-two-bearings/Red
\ No newline at end of file
diff --git a/Lang/Red/Angles-geometric-normalization-and-conversion b/Lang/Red/Angles-geometric-normalization-and-conversion
deleted file mode 120000
index f969ff2c56..0000000000
--- a/Lang/Red/Angles-geometric-normalization-and-conversion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Angles-geometric-normalization-and-conversion/Red
\ No newline at end of file
diff --git a/Lang/Red/Arithmetic-Integer b/Lang/Red/Arithmetic-Integer
deleted file mode 120000
index cb3f74d046..0000000000
--- a/Lang/Red/Arithmetic-Integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-Integer/Red
\ No newline at end of file
diff --git a/Lang/Red/Arithmetic-evaluation b/Lang/Red/Arithmetic-evaluation
deleted file mode 120000
index c6c5c304b5..0000000000
--- a/Lang/Red/Arithmetic-evaluation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-evaluation/Red
\ No newline at end of file
diff --git a/Lang/Red/Boolean-values b/Lang/Red/Boolean-values
deleted file mode 120000
index 3df0e7a087..0000000000
--- a/Lang/Red/Boolean-values
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Boolean-values/Red
\ No newline at end of file
diff --git a/Lang/Red/Calendar b/Lang/Red/Calendar
deleted file mode 120000
index 3283fd5906..0000000000
--- a/Lang/Red/Calendar
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Calendar/Red
\ No newline at end of file
diff --git a/Lang/Red/Calendar---for-REAL-programmers b/Lang/Red/Calendar---for-REAL-programmers
deleted file mode 120000
index e0db1bd24f..0000000000
--- a/Lang/Red/Calendar---for-REAL-programmers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Calendar---for-REAL-programmers/Red
\ No newline at end of file
diff --git a/Lang/Red/Call-a-function b/Lang/Red/Call-a-function
deleted file mode 120000
index 2907d38f1e..0000000000
--- a/Lang/Red/Call-a-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Call-a-function/Red
\ No newline at end of file
diff --git a/Lang/Red/Call-an-object-method b/Lang/Red/Call-an-object-method
deleted file mode 120000
index 50c2f71ec1..0000000000
--- a/Lang/Red/Call-an-object-method
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Call-an-object-method/Red
\ No newline at end of file
diff --git a/Lang/Red/Case-sensitivity-of-identifiers b/Lang/Red/Case-sensitivity-of-identifiers
deleted file mode 120000
index 1f46e1aec5..0000000000
--- a/Lang/Red/Case-sensitivity-of-identifiers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Case-sensitivity-of-identifiers/Red
\ No newline at end of file
diff --git a/Lang/Red/Classes b/Lang/Red/Classes
deleted file mode 120000
index 5db3a1a49b..0000000000
--- a/Lang/Red/Classes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Classes/Red
\ No newline at end of file
diff --git a/Lang/Red/Compare-length-of-two-strings b/Lang/Red/Compare-length-of-two-strings
deleted file mode 120000
index 0a8b824021..0000000000
--- a/Lang/Red/Compare-length-of-two-strings
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compare-length-of-two-strings/Red
\ No newline at end of file
diff --git a/Lang/Red/Compiler-AST-interpreter b/Lang/Red/Compiler-AST-interpreter
deleted file mode 120000
index 38de1297c9..0000000000
--- a/Lang/Red/Compiler-AST-interpreter
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compiler-AST-interpreter/Red
\ No newline at end of file
diff --git a/Lang/Red/Compiler-code-generator b/Lang/Red/Compiler-code-generator
deleted file mode 120000
index 7af219c35c..0000000000
--- a/Lang/Red/Compiler-code-generator
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compiler-code-generator/Red
\ No newline at end of file
diff --git a/Lang/Red/Compiler-lexical-analyzer b/Lang/Red/Compiler-lexical-analyzer
deleted file mode 120000
index 6b88c28f94..0000000000
--- a/Lang/Red/Compiler-lexical-analyzer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compiler-lexical-analyzer/Red
\ No newline at end of file
diff --git a/Lang/Red/Compiler-syntax-analyzer b/Lang/Red/Compiler-syntax-analyzer
deleted file mode 120000
index 406b1710ff..0000000000
--- a/Lang/Red/Compiler-syntax-analyzer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compiler-syntax-analyzer/Red
\ No newline at end of file
diff --git a/Lang/Red/Compiler-virtual-machine-interpreter b/Lang/Red/Compiler-virtual-machine-interpreter
deleted file mode 120000
index 85d28b0fea..0000000000
--- a/Lang/Red/Compiler-virtual-machine-interpreter
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compiler-virtual-machine-interpreter/Red
\ No newline at end of file
diff --git a/Lang/Red/Currying b/Lang/Red/Currying
deleted file mode 120000
index a40d4bf838..0000000000
--- a/Lang/Red/Currying
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Currying/Red
\ No newline at end of file
diff --git a/Lang/Red/Dot-product b/Lang/Red/Dot-product
deleted file mode 120000
index 7a0eb69ac3..0000000000
--- a/Lang/Red/Dot-product
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dot-product/Red
\ No newline at end of file
diff --git a/Lang/Red/Empty-directory b/Lang/Red/Empty-directory
deleted file mode 120000
index 171a4f4f65..0000000000
--- a/Lang/Red/Empty-directory
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Empty-directory/Red
\ No newline at end of file
diff --git a/Lang/Red/Execute-Brain- b/Lang/Red/Execute-Brain-
deleted file mode 120000
index 603437fa06..0000000000
--- a/Lang/Red/Execute-Brain-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Execute-Brain-/Red
\ No newline at end of file
diff --git a/Lang/Red/Extend-your-language b/Lang/Red/Extend-your-language
deleted file mode 120000
index af9a4e8c46..0000000000
--- a/Lang/Red/Extend-your-language
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Extend-your-language/Red
\ No newline at end of file
diff --git a/Lang/Red/First-class-functions b/Lang/Red/First-class-functions
deleted file mode 120000
index fbfe38fd28..0000000000
--- a/Lang/Red/First-class-functions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/First-class-functions/Red
\ No newline at end of file
diff --git a/Lang/Red/Five-weekends b/Lang/Red/Five-weekends
deleted file mode 120000
index 4b364097a6..0000000000
--- a/Lang/Red/Five-weekends
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Five-weekends/Red
\ No newline at end of file
diff --git a/Lang/Red/Function-composition b/Lang/Red/Function-composition
deleted file mode 120000
index 880a1c6e87..0000000000
--- a/Lang/Red/Function-composition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Function-composition/Red
\ No newline at end of file
diff --git a/Lang/Red/HTTP b/Lang/Red/HTTP
deleted file mode 120000
index f7d36ebcff..0000000000
--- a/Lang/Red/HTTP
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/HTTP/Red
\ No newline at end of file
diff --git a/Lang/Red/Leap-year b/Lang/Red/Leap-year
deleted file mode 120000
index cb911ae827..0000000000
--- a/Lang/Red/Leap-year
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Leap-year/Red
\ No newline at end of file
diff --git a/Lang/Red/Logical-operations b/Lang/Red/Logical-operations
deleted file mode 120000
index b02eaed36f..0000000000
--- a/Lang/Red/Logical-operations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Logical-operations/Red
\ No newline at end of file
diff --git a/Lang/Red/Metaprogramming b/Lang/Red/Metaprogramming
deleted file mode 120000
index 764ff52337..0000000000
--- a/Lang/Red/Metaprogramming
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Metaprogramming/Red
\ No newline at end of file
diff --git a/Lang/Red/Parsing-RPN-calculator-algorithm b/Lang/Red/Parsing-RPN-calculator-algorithm
deleted file mode 120000
index f68a7bf5c6..0000000000
--- a/Lang/Red/Parsing-RPN-calculator-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Parsing-RPN-calculator-algorithm/Red
\ No newline at end of file
diff --git a/Lang/Red/Parsing-RPN-to-infix-conversion b/Lang/Red/Parsing-RPN-to-infix-conversion
deleted file mode 120000
index 27fb99e707..0000000000
--- a/Lang/Red/Parsing-RPN-to-infix-conversion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Parsing-RPN-to-infix-conversion/Red
\ No newline at end of file
diff --git a/Lang/Red/Parsing-Shunting-yard-algorithm b/Lang/Red/Parsing-Shunting-yard-algorithm
deleted file mode 120000
index 64583c9508..0000000000
--- a/Lang/Red/Parsing-Shunting-yard-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Parsing-Shunting-yard-algorithm/Red
\ No newline at end of file
diff --git a/Lang/Red/Partial-function-application b/Lang/Red/Partial-function-application
deleted file mode 120000
index dbffa4d18e..0000000000
--- a/Lang/Red/Partial-function-application
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Partial-function-application/Red
\ No newline at end of file
diff --git a/Lang/Red/Quaternion-type b/Lang/Red/Quaternion-type
new file mode 120000
index 0000000000..7b5fc87ddd
--- /dev/null
+++ b/Lang/Red/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/Red
\ No newline at end of file
diff --git a/Lang/Red/Rosetta-Code-Find-unimplemented-tasks b/Lang/Red/Rosetta-Code-Find-unimplemented-tasks
deleted file mode 120000
index 53726178b5..0000000000
--- a/Lang/Red/Rosetta-Code-Find-unimplemented-tasks
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Rosetta-Code-Find-unimplemented-tasks/Red
\ No newline at end of file
diff --git a/Lang/Red/Runtime-evaluation-In-an-environment b/Lang/Red/Runtime-evaluation-In-an-environment
deleted file mode 120000
index ee82b72bbd..0000000000
--- a/Lang/Red/Runtime-evaluation-In-an-environment
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Runtime-evaluation-In-an-environment/Red
\ No newline at end of file
diff --git a/Lang/Red/Towers-of-Hanoi b/Lang/Red/Towers-of-Hanoi
deleted file mode 120000
index 112b276dee..0000000000
--- a/Lang/Red/Towers-of-Hanoi
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Towers-of-Hanoi/Red
\ No newline at end of file
diff --git a/Lang/Red/Vector-products b/Lang/Red/Vector-products
deleted file mode 120000
index 28d3b45939..0000000000
--- a/Lang/Red/Vector-products
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Vector-products/Red
\ No newline at end of file
diff --git a/Lang/Red/Word-frequency b/Lang/Red/Word-frequency
deleted file mode 120000
index 535322fbdc..0000000000
--- a/Lang/Red/Word-frequency
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Word-frequency/Red
\ No newline at end of file
diff --git a/Lang/Refal/Align-columns b/Lang/Refal/Align-columns
deleted file mode 120000
index 8c214d7af1..0000000000
--- a/Lang/Refal/Align-columns
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Align-columns/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Arbitrary-precision-integers-included- b/Lang/Refal/Arbitrary-precision-integers-included-
deleted file mode 120000
index f00d324a4e..0000000000
--- a/Lang/Refal/Arbitrary-precision-integers-included-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arbitrary-precision-integers-included-/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Arithmetic-derivative b/Lang/Refal/Arithmetic-derivative
deleted file mode 120000
index c88f60d44d..0000000000
--- a/Lang/Refal/Arithmetic-derivative
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-derivative/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Bell-numbers b/Lang/Refal/Bell-numbers
deleted file mode 120000
index a73ced2740..0000000000
--- a/Lang/Refal/Bell-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bell-numbers/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Case-sensitivity-of-identifiers b/Lang/Refal/Case-sensitivity-of-identifiers
deleted file mode 120000
index 7def95d498..0000000000
--- a/Lang/Refal/Case-sensitivity-of-identifiers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Case-sensitivity-of-identifiers/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Combinations b/Lang/Refal/Combinations
deleted file mode 120000
index d4a5475872..0000000000
--- a/Lang/Refal/Combinations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Combinations/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Copy-stdin-to-stdout b/Lang/Refal/Copy-stdin-to-stdout
deleted file mode 120000
index 974e13964c..0000000000
--- a/Lang/Refal/Copy-stdin-to-stdout
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Copy-stdin-to-stdout/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Damm-algorithm b/Lang/Refal/Damm-algorithm
deleted file mode 120000
index 9b99056b8a..0000000000
--- a/Lang/Refal/Damm-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Damm-algorithm/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Determine-sentence-type b/Lang/Refal/Determine-sentence-type
deleted file mode 120000
index 13809ebd86..0000000000
--- a/Lang/Refal/Determine-sentence-type
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-sentence-type/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Disarium-numbers b/Lang/Refal/Disarium-numbers
deleted file mode 120000
index 7389ead892..0000000000
--- a/Lang/Refal/Disarium-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Disarium-numbers/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Discordian-date b/Lang/Refal/Discordian-date
deleted file mode 120000
index e18bd824ca..0000000000
--- a/Lang/Refal/Discordian-date
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Discordian-date/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Display-a-linear-combination b/Lang/Refal/Display-a-linear-combination
deleted file mode 120000
index fc164db566..0000000000
--- a/Lang/Refal/Display-a-linear-combination
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Display-a-linear-combination/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Doomsday-rule b/Lang/Refal/Doomsday-rule
deleted file mode 120000
index 87fb488eaa..0000000000
--- a/Lang/Refal/Doomsday-rule
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Doomsday-rule/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Duffinian-numbers b/Lang/Refal/Duffinian-numbers
deleted file mode 120000
index 7aec5bb21b..0000000000
--- a/Lang/Refal/Duffinian-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Duffinian-numbers/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Factors-of-an-integer b/Lang/Refal/Factors-of-an-integer
deleted file mode 120000
index b8b431c369..0000000000
--- a/Lang/Refal/Factors-of-an-integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factors-of-an-integer/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Flatten-a-list b/Lang/Refal/Flatten-a-list
deleted file mode 120000
index b2445ac726..0000000000
--- a/Lang/Refal/Flatten-a-list
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Flatten-a-list/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Fractran b/Lang/Refal/Fractran
deleted file mode 120000
index 30b9e7a511..0000000000
--- a/Lang/Refal/Fractran
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fractran/Refal
\ No newline at end of file
diff --git a/Lang/Refal/General-FizzBuzz b/Lang/Refal/General-FizzBuzz
deleted file mode 120000
index 019727fd06..0000000000
--- a/Lang/Refal/General-FizzBuzz
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/General-FizzBuzz/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Horners-rule-for-polynomial-evaluation b/Lang/Refal/Horners-rule-for-polynomial-evaluation
deleted file mode 120000
index 29b0a0f26a..0000000000
--- a/Lang/Refal/Horners-rule-for-polynomial-evaluation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Horners-rule-for-polynomial-evaluation/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Isqrt-integer-square-root-of-X b/Lang/Refal/Isqrt-integer-square-root-of-X
deleted file mode 120000
index 812b5e86d3..0000000000
--- a/Lang/Refal/Isqrt-integer-square-root-of-X
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Isqrt-integer-square-root-of-X/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Lah-numbers b/Lang/Refal/Lah-numbers
deleted file mode 120000
index a761f59719..0000000000
--- a/Lang/Refal/Lah-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Lah-numbers/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Letter-frequency b/Lang/Refal/Letter-frequency
deleted file mode 120000
index e9c48e99dd..0000000000
--- a/Lang/Refal/Letter-frequency
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Letter-frequency/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Loops-Infinite b/Lang/Refal/Loops-Infinite
deleted file mode 120000
index 536c01c9bd..0000000000
--- a/Lang/Refal/Loops-Infinite
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Infinite/Refal
\ No newline at end of file
diff --git a/Lang/Refal/McNuggets-problem b/Lang/Refal/McNuggets-problem
deleted file mode 120000
index 90628a4989..0000000000
--- a/Lang/Refal/McNuggets-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/McNuggets-problem/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Modular-exponentiation b/Lang/Refal/Modular-exponentiation
deleted file mode 120000
index 68c13863de..0000000000
--- a/Lang/Refal/Modular-exponentiation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Modular-exponentiation/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Move-to-front-algorithm b/Lang/Refal/Move-to-front-algorithm
deleted file mode 120000
index e69e4f5498..0000000000
--- a/Lang/Refal/Move-to-front-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Move-to-front-algorithm/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Narcissistic-decimal-number b/Lang/Refal/Narcissistic-decimal-number
deleted file mode 120000
index 3c509c9753..0000000000
--- a/Lang/Refal/Narcissistic-decimal-number
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Narcissistic-decimal-number/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Nested-templated-data b/Lang/Refal/Nested-templated-data
deleted file mode 120000
index ceaf039a10..0000000000
--- a/Lang/Refal/Nested-templated-data
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nested-templated-data/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Old-lady-swallowed-a-fly b/Lang/Refal/Old-lady-swallowed-a-fly
deleted file mode 120000
index 63d7ebf658..0000000000
--- a/Lang/Refal/Old-lady-swallowed-a-fly
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Old-lady-swallowed-a-fly/Refal
\ No newline at end of file
diff --git a/Lang/Refal/One-dimensional-cellular-automata b/Lang/Refal/One-dimensional-cellular-automata
deleted file mode 120000
index 89b9ba280e..0000000000
--- a/Lang/Refal/One-dimensional-cellular-automata
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/One-dimensional-cellular-automata/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Ordered-words b/Lang/Refal/Ordered-words
deleted file mode 120000
index b546984c01..0000000000
--- a/Lang/Refal/Ordered-words
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ordered-words/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Palindrome-detection b/Lang/Refal/Palindrome-detection
deleted file mode 120000
index 87f1ace89c..0000000000
--- a/Lang/Refal/Palindrome-detection
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Palindrome-detection/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Population-count b/Lang/Refal/Population-count
deleted file mode 120000
index 3cdd939b69..0000000000
--- a/Lang/Refal/Population-count
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Population-count/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Power-set b/Lang/Refal/Power-set
deleted file mode 120000
index f50da086ad..0000000000
--- a/Lang/Refal/Power-set
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Power-set/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Repeat b/Lang/Refal/Repeat
deleted file mode 120000
index 1cdb36e096..0000000000
--- a/Lang/Refal/Repeat
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Repeat/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Roman-numerals-Encode b/Lang/Refal/Roman-numerals-Encode
deleted file mode 120000
index a35e7a2ee0..0000000000
--- a/Lang/Refal/Roman-numerals-Encode
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Roman-numerals-Encode/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Run-length-encoding b/Lang/Refal/Run-length-encoding
deleted file mode 120000
index afeb7091c3..0000000000
--- a/Lang/Refal/Run-length-encoding
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Run-length-encoding/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Sierpinski-triangle b/Lang/Refal/Sierpinski-triangle
deleted file mode 120000
index 078d645de8..0000000000
--- a/Lang/Refal/Sierpinski-triangle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sierpinski-triangle/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Split-a-character-string-based-on-change-of-character b/Lang/Refal/Split-a-character-string-based-on-change-of-character
deleted file mode 120000
index 8a3aec8866..0000000000
--- a/Lang/Refal/Split-a-character-string-based-on-change-of-character
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Split-a-character-string-based-on-change-of-character/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Square-but-not-cube b/Lang/Refal/Square-but-not-cube
deleted file mode 120000
index a50417a708..0000000000
--- a/Lang/Refal/Square-but-not-cube
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Square-but-not-cube/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Strip-comments-from-a-string b/Lang/Refal/Strip-comments-from-a-string
deleted file mode 120000
index 6f86213c31..0000000000
--- a/Lang/Refal/Strip-comments-from-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strip-comments-from-a-string/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Super-d-numbers b/Lang/Refal/Super-d-numbers
deleted file mode 120000
index 923b4678f8..0000000000
--- a/Lang/Refal/Super-d-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Super-d-numbers/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Tokenize-a-string b/Lang/Refal/Tokenize-a-string
deleted file mode 120000
index f8ac7459de..0000000000
--- a/Lang/Refal/Tokenize-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tokenize-a-string/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Word-ladder b/Lang/Refal/Word-ladder
deleted file mode 120000
index b43f6deb31..0000000000
--- a/Lang/Refal/Word-ladder
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Word-ladder/Refal
\ No newline at end of file
diff --git a/Lang/Refal/Zeckendorf-number-representation b/Lang/Refal/Zeckendorf-number-representation
deleted file mode 120000
index 70b5a3265e..0000000000
--- a/Lang/Refal/Zeckendorf-number-representation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Zeckendorf-number-representation/Refal
\ No newline at end of file
diff --git a/Lang/Retro/Sieve-of-Eratosthenes b/Lang/Retro/Sieve-of-Eratosthenes
deleted file mode 120000
index d5617b7054..0000000000
--- a/Lang/Retro/Sieve-of-Eratosthenes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sieve-of-Eratosthenes/Retro
\ No newline at end of file
diff --git a/Lang/Retro/String-append b/Lang/Retro/String-append
deleted file mode 120000
index db032f3f0a..0000000000
--- a/Lang/Retro/String-append
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-append/Retro
\ No newline at end of file
diff --git a/Lang/Retro/Sum-multiples-of-3-and-5 b/Lang/Retro/Sum-multiples-of-3-and-5
deleted file mode 120000
index cb0c42540d..0000000000
--- a/Lang/Retro/Sum-multiples-of-3-and-5
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sum-multiples-of-3-and-5/Retro
\ No newline at end of file
diff --git a/Lang/Rhombus/00-LANG.txt b/Lang/Rhombus/00-LANG.txt
deleted file mode 100644
index ef9932595f..0000000000
--- a/Lang/Rhombus/00-LANG.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-{{language
-|exec=both
-|gc=yes
-|site=https://rhombus-lang.org/
-}}
\ No newline at end of file
diff --git a/Lang/Rhombus/00-META.yaml b/Lang/Rhombus/00-META.yaml
deleted file mode 100644
index 732b96d2eb..0000000000
--- a/Lang/Rhombus/00-META.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-from: http://rosettacode.org/wiki/Category:Rhombus
diff --git a/Lang/Rhombus/99-bottles-of-beer b/Lang/Rhombus/99-bottles-of-beer
deleted file mode 120000
index bcb9ee7049..0000000000
--- a/Lang/Rhombus/99-bottles-of-beer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/99-bottles-of-beer/Rhombus
\ No newline at end of file
diff --git a/Lang/Rhombus/Arbitrary-precision-integers-included- b/Lang/Rhombus/Arbitrary-precision-integers-included-
deleted file mode 120000
index 31558e19d7..0000000000
--- a/Lang/Rhombus/Arbitrary-precision-integers-included-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arbitrary-precision-integers-included-/Rhombus
\ No newline at end of file
diff --git a/Lang/Rhombus/Caesar-cipher b/Lang/Rhombus/Caesar-cipher
deleted file mode 120000
index dd9f5453ed..0000000000
--- a/Lang/Rhombus/Caesar-cipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Caesar-cipher/Rhombus
\ No newline at end of file
diff --git a/Lang/Rhombus/Factorial b/Lang/Rhombus/Factorial
deleted file mode 120000
index 92b62c830f..0000000000
--- a/Lang/Rhombus/Factorial
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factorial/Rhombus
\ No newline at end of file
diff --git a/Lang/Rhombus/Fibonacci-sequence b/Lang/Rhombus/Fibonacci-sequence
deleted file mode 120000
index d496e8a0b2..0000000000
--- a/Lang/Rhombus/Fibonacci-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fibonacci-sequence/Rhombus
\ No newline at end of file
diff --git a/Lang/Rhombus/FizzBuzz b/Lang/Rhombus/FizzBuzz
deleted file mode 120000
index 5740514b72..0000000000
--- a/Lang/Rhombus/FizzBuzz
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/FizzBuzz/Rhombus
\ No newline at end of file
diff --git a/Lang/Rhombus/Guess-the-number-With-feedback b/Lang/Rhombus/Guess-the-number-With-feedback
deleted file mode 120000
index c51dd719ba..0000000000
--- a/Lang/Rhombus/Guess-the-number-With-feedback
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Guess-the-number-With-feedback/Rhombus
\ No newline at end of file
diff --git a/Lang/Rhombus/Hello-world-Text b/Lang/Rhombus/Hello-world-Text
deleted file mode 120000
index 11fb03859d..0000000000
--- a/Lang/Rhombus/Hello-world-Text
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Text/Rhombus
\ No newline at end of file
diff --git a/Lang/Rhombus/Inheritance-Single b/Lang/Rhombus/Inheritance-Single
deleted file mode 120000
index 2f478862d8..0000000000
--- a/Lang/Rhombus/Inheritance-Single
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Inheritance-Single/Rhombus
\ No newline at end of file
diff --git a/Lang/Rhombus/Polymorphism b/Lang/Rhombus/Polymorphism
deleted file mode 120000
index a5540935b5..0000000000
--- a/Lang/Rhombus/Polymorphism
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Polymorphism/Rhombus
\ No newline at end of file
diff --git a/Lang/Rhombus/Rot-13 b/Lang/Rhombus/Rot-13
deleted file mode 120000
index 369226ff2f..0000000000
--- a/Lang/Rhombus/Rot-13
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Rot-13/Rhombus
\ No newline at end of file
diff --git a/Lang/Rhombus/Y-combinator b/Lang/Rhombus/Y-combinator
deleted file mode 120000
index 745c50d95d..0000000000
--- a/Lang/Rhombus/Y-combinator
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Y-combinator/Rhombus
\ No newline at end of file
diff --git a/Lang/Ring/Bioinformatics-base-count b/Lang/Ring/Bioinformatics-base-count
new file mode 120000
index 0000000000..291f269ac6
--- /dev/null
+++ b/Lang/Ring/Bioinformatics-base-count
@@ -0,0 +1 @@
+../../Task/Bioinformatics-base-count/Ring
\ No newline at end of file
diff --git a/Lang/Ring/Brilliant-numbers b/Lang/Ring/Brilliant-numbers
deleted file mode 120000
index 4e2621cdb9..0000000000
--- a/Lang/Ring/Brilliant-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Brilliant-numbers/Ring
\ No newline at end of file
diff --git a/Lang/Ring/Colorful-numbers b/Lang/Ring/Colorful-numbers
deleted file mode 120000
index 0882269c01..0000000000
--- a/Lang/Ring/Colorful-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Colorful-numbers/Ring
\ No newline at end of file
diff --git a/Lang/Ring/Compare-a-list-of-strings b/Lang/Ring/Compare-a-list-of-strings
deleted file mode 120000
index 308f7db9af..0000000000
--- a/Lang/Ring/Compare-a-list-of-strings
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compare-a-list-of-strings/Ring
\ No newline at end of file
diff --git a/Lang/Ring/Composite-numbers-k-with-no-single-digit-factors-whose-factors-are-all-substrings-of-k b/Lang/Ring/Composite-numbers-k-with-no-single-digit-factors-whose-factors-are-all-substrings-of-k
deleted file mode 120000
index cd105cb2cf..0000000000
--- a/Lang/Ring/Composite-numbers-k-with-no-single-digit-factors-whose-factors-are-all-substrings-of-k
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Composite-numbers-k-with-no-single-digit-factors-whose-factors-are-all-substrings-of-k/Ring
\ No newline at end of file
diff --git a/Lang/Ring/Draw-a-clock b/Lang/Ring/Draw-a-clock
deleted file mode 120000
index d4e59a0d8d..0000000000
--- a/Lang/Ring/Draw-a-clock
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Draw-a-clock/Ring
\ No newline at end of file
diff --git a/Lang/Ring/Duffinian-numbers b/Lang/Ring/Duffinian-numbers
deleted file mode 120000
index 297b9a5500..0000000000
--- a/Lang/Ring/Duffinian-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Duffinian-numbers/Ring
\ No newline at end of file
diff --git a/Lang/Ring/Empty-program b/Lang/Ring/Empty-program
new file mode 120000
index 0000000000..05941ac0c2
--- /dev/null
+++ b/Lang/Ring/Empty-program
@@ -0,0 +1 @@
+../../Task/Empty-program/Ring
\ No newline at end of file
diff --git a/Lang/Ring/Miller-Rabin-primality-test b/Lang/Ring/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..dd0885b5c9
--- /dev/null
+++ b/Lang/Ring/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/Ring
\ No newline at end of file
diff --git a/Lang/Ring/Selectively-replace-multiple-instances-of-a-character-within-a-string b/Lang/Ring/Selectively-replace-multiple-instances-of-a-character-within-a-string
deleted file mode 120000
index 238083a2d3..0000000000
--- a/Lang/Ring/Selectively-replace-multiple-instances-of-a-character-within-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Selectively-replace-multiple-instances-of-a-character-within-a-string/Ring
\ No newline at end of file
diff --git a/Lang/Ring/Sequence:-nth-number-with-exactly-n-divisors b/Lang/Ring/Sequence-nth-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/Ring/Sequence:-nth-number-with-exactly-n-divisors
rename to Lang/Ring/Sequence-nth-number-with-exactly-n-divisors
diff --git a/Lang/Ring/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors b/Lang/Ring/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
similarity index 100%
rename from Lang/Ring/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors
rename to Lang/Ring/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
diff --git a/Lang/Ring/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/Ring/Sequence-smallest-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/Ring/Sequence:-smallest-number-with-exactly-n-divisors
rename to Lang/Ring/Sequence-smallest-number-with-exactly-n-divisors
diff --git a/Lang/Ring/Sorting-Algorithms-Circle-Sort b/Lang/Ring/Sorting-Algorithms-Circle-Sort
new file mode 120000
index 0000000000..de0338125a
--- /dev/null
+++ b/Lang/Ring/Sorting-Algorithms-Circle-Sort
@@ -0,0 +1 @@
+../../Task/Sorting-Algorithms-Circle-Sort/Ring
\ No newline at end of file
diff --git a/Lang/Ring/Sorting-algorithms-Bead-sort b/Lang/Ring/Sorting-algorithms-Bead-sort
deleted file mode 120000
index eea2153977..0000000000
--- a/Lang/Ring/Sorting-algorithms-Bead-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Bead-sort/Ring
\ No newline at end of file
diff --git a/Lang/Ring/Special-characters b/Lang/Ring/Special-characters
deleted file mode 120000
index 0dd3c257c9..0000000000
--- a/Lang/Ring/Special-characters
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Special-characters/Ring
\ No newline at end of file
diff --git a/Lang/Ring/Truth-table b/Lang/Ring/Truth-table
deleted file mode 120000
index b2ddf39eb1..0000000000
--- a/Lang/Ring/Truth-table
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Truth-table/Ring
\ No newline at end of file
diff --git a/Lang/Ring/Twelve-statements b/Lang/Ring/Twelve-statements
deleted file mode 120000
index 539ba91df6..0000000000
--- a/Lang/Ring/Twelve-statements
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Twelve-statements/Ring
\ No newline at end of file
diff --git a/Lang/Ring/Universal-Turing-machine b/Lang/Ring/Universal-Turing-machine
deleted file mode 120000
index 1e0cfd8b67..0000000000
--- a/Lang/Ring/Universal-Turing-machine
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Universal-Turing-machine/Ring
\ No newline at end of file
diff --git a/Lang/Ring/Wagstaff-primes b/Lang/Ring/Wagstaff-primes
deleted file mode 120000
index 877433f537..0000000000
--- a/Lang/Ring/Wagstaff-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Wagstaff-primes/Ring
\ No newline at end of file
diff --git a/Lang/Ring/Wieferich-primes b/Lang/Ring/Wieferich-primes
deleted file mode 120000
index 4a7c97a04d..0000000000
--- a/Lang/Ring/Wieferich-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Wieferich-primes/Ring
\ No newline at end of file
diff --git a/Lang/Ring/Yin-and-yang b/Lang/Ring/Yin-and-yang
deleted file mode 120000
index b4e272e04d..0000000000
--- a/Lang/Ring/Yin-and-yang
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Yin-and-yang/Ring
\ No newline at end of file
diff --git a/Lang/Robotic/Empty-program b/Lang/Robotic/Empty-program
new file mode 120000
index 0000000000..5e2d95817a
--- /dev/null
+++ b/Lang/Robotic/Empty-program
@@ -0,0 +1 @@
+../../Task/Empty-program/Robotic
\ No newline at end of file
diff --git a/Lang/Rockstar/00-LANG.txt b/Lang/Rockstar/00-LANG.txt
index c22e2c3636..9dc3cbc2f7 100644
--- a/Lang/Rockstar/00-LANG.txt
+++ b/Lang/Rockstar/00-LANG.txt
@@ -1,8 +1,4 @@
-{{stub}}
-{{language|Rockstar
-|site=https://codewithrockstar.com/
-|hopl=no
-}}
+{{stub}}{{language|Rockstar}}
Rockstar was created by a rockin' dude named Dylan Beattie.
diff --git a/Lang/Rocq/00-LANG.txt b/Lang/Rocq/00-LANG.txt
deleted file mode 100644
index 3a6e02cc5b..0000000000
--- a/Lang/Rocq/00-LANG.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-{{language|Rocq
-|site=https://rocq-prover.org/
-}}
-The '''Rocq Prover''' (previously known as '''Coq''') is a proof assistant application. It allows the expression of mathematical assertions, mechanically checks proofs of these assertions, helps to find formal proofs, and extracts a certified program from the constructive proof of its formal specification. Rocq works within the theory of the calculus of inductive constructions, a derivative of the calculus of constructions. Rocq is not an automated [[wp:Theorem_prover|theorem prover]] but includes automatic theorem proving tactics and various decision procedures.
-
-==Citations==
-* [[wp:Rocq|Rocq]]
-
-[[Category:Mathematical programming languages]]
\ No newline at end of file
diff --git a/Lang/Rocq/00-META.yaml b/Lang/Rocq/00-META.yaml
deleted file mode 100644
index 7a4ef3c3e3..0000000000
--- a/Lang/Rocq/00-META.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-from: http://rosettacode.org/wiki/Category:Rocq
diff --git a/Lang/Rocq/100-doors b/Lang/Rocq/100-doors
deleted file mode 120000
index ddc9d15706..0000000000
--- a/Lang/Rocq/100-doors
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/100-doors/Rocq
\ No newline at end of file
diff --git a/Lang/Rocq/Ackermann-function b/Lang/Rocq/Ackermann-function
deleted file mode 120000
index 2c359313d3..0000000000
--- a/Lang/Rocq/Ackermann-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ackermann-function/Rocq
\ No newline at end of file
diff --git a/Lang/Rocq/Extend-your-language b/Lang/Rocq/Extend-your-language
deleted file mode 120000
index 7a189585f3..0000000000
--- a/Lang/Rocq/Extend-your-language
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Extend-your-language/Rocq
\ No newline at end of file
diff --git a/Lang/Rocq/Factorial b/Lang/Rocq/Factorial
deleted file mode 120000
index 73a7e2f546..0000000000
--- a/Lang/Rocq/Factorial
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factorial/Rocq
\ No newline at end of file
diff --git a/Lang/Rocq/Fibonacci-sequence b/Lang/Rocq/Fibonacci-sequence
deleted file mode 120000
index a31a4762d2..0000000000
--- a/Lang/Rocq/Fibonacci-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fibonacci-sequence/Rocq
\ No newline at end of file
diff --git a/Lang/Rocq/FizzBuzz b/Lang/Rocq/FizzBuzz
deleted file mode 120000
index 3dc20e67b5..0000000000
--- a/Lang/Rocq/FizzBuzz
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/FizzBuzz/Rocq
\ No newline at end of file
diff --git a/Lang/Rocq/Hello-world-Newbie b/Lang/Rocq/Hello-world-Newbie
deleted file mode 120000
index f8f6323716..0000000000
--- a/Lang/Rocq/Hello-world-Newbie
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Newbie/Rocq
\ No newline at end of file
diff --git a/Lang/Rocq/Hello-world-Text b/Lang/Rocq/Hello-world-Text
deleted file mode 120000
index 3d91fcb1de..0000000000
--- a/Lang/Rocq/Hello-world-Text
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Text/Rocq
\ No newline at end of file
diff --git a/Lang/Rocq/Loops-For b/Lang/Rocq/Loops-For
deleted file mode 120000
index ea834fd5b7..0000000000
--- a/Lang/Rocq/Loops-For
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-For/Rocq
\ No newline at end of file
diff --git a/Lang/Rocq/Tree-traversal b/Lang/Rocq/Tree-traversal
deleted file mode 120000
index 944802a525..0000000000
--- a/Lang/Rocq/Tree-traversal
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tree-traversal/Rocq
\ No newline at end of file
diff --git a/Lang/Rocq/Variadic-function b/Lang/Rocq/Variadic-function
deleted file mode 120000
index 0c5215f0a1..0000000000
--- a/Lang/Rocq/Variadic-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Variadic-function/Rocq
\ No newline at end of file
diff --git a/Lang/Ruby/Bioinformatics-base-count b/Lang/Ruby/Bioinformatics-base-count
new file mode 120000
index 0000000000..af92d7709c
--- /dev/null
+++ b/Lang/Ruby/Bioinformatics-base-count
@@ -0,0 +1 @@
+../../Task/Bioinformatics-base-count/Ruby
\ No newline at end of file
diff --git a/Lang/Ruby/Miller-Rabin-primality-test b/Lang/Ruby/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..d7cbf43733
--- /dev/null
+++ b/Lang/Ruby/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/Ruby
\ No newline at end of file
diff --git a/Lang/Ruby/Quaternion-type b/Lang/Ruby/Quaternion-type
new file mode 120000
index 0000000000..c1af2a1904
--- /dev/null
+++ b/Lang/Ruby/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/Ruby
\ No newline at end of file
diff --git a/Lang/Ruby/Sequence:-nth-number-with-exactly-n-divisors b/Lang/Ruby/Sequence-nth-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/Ruby/Sequence:-nth-number-with-exactly-n-divisors
rename to Lang/Ruby/Sequence-nth-number-with-exactly-n-divisors
diff --git a/Lang/Ruby/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors b/Lang/Ruby/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
similarity index 100%
rename from Lang/Ruby/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors
rename to Lang/Ruby/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
diff --git a/Lang/Ruby/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/Ruby/Sequence-smallest-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/Ruby/Sequence:-smallest-number-with-exactly-n-divisors
rename to Lang/Ruby/Sequence-smallest-number-with-exactly-n-divisors
diff --git a/Lang/Ruby/Sorting-Algorithms-Circle-Sort b/Lang/Ruby/Sorting-Algorithms-Circle-Sort
new file mode 120000
index 0000000000..022b44ef66
--- /dev/null
+++ b/Lang/Ruby/Sorting-Algorithms-Circle-Sort
@@ -0,0 +1 @@
+../../Task/Sorting-Algorithms-Circle-Sort/Ruby
\ No newline at end of file
diff --git a/Lang/Ruby/Strassens-algorithm b/Lang/Ruby/Strassens-algorithm
deleted file mode 120000
index ecb75a8f11..0000000000
--- a/Lang/Ruby/Strassens-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strassens-algorithm/Ruby
\ No newline at end of file
diff --git a/Lang/Ruby/Variable-declaration-reset b/Lang/Ruby/Variable-declaration-reset
deleted file mode 120000
index 42ba082e34..0000000000
--- a/Lang/Ruby/Variable-declaration-reset
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Variable-declaration-reset/Ruby
\ No newline at end of file
diff --git a/Lang/Run-BASIC/Determine-sentence-type b/Lang/Run-BASIC/Determine-sentence-type
deleted file mode 120000
index 5db5f89e0c..0000000000
--- a/Lang/Run-BASIC/Determine-sentence-type
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-sentence-type/Run-BASIC
\ No newline at end of file
diff --git a/Lang/Run-BASIC/Josephus-problem b/Lang/Run-BASIC/Josephus-problem
deleted file mode 120000
index d5ce7e543e..0000000000
--- a/Lang/Run-BASIC/Josephus-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Josephus-problem/Run-BASIC
\ No newline at end of file
diff --git a/Lang/Run-BASIC/Meissel-Mertens-constant b/Lang/Run-BASIC/Meissel-Mertens-constant
new file mode 120000
index 0000000000..44168b020e
--- /dev/null
+++ b/Lang/Run-BASIC/Meissel-Mertens-constant
@@ -0,0 +1 @@
+../../Task/Meissel-Mertens-constant/Run-BASIC
\ No newline at end of file
diff --git a/Lang/Run-BASIC/Miller-Rabin-primality-test b/Lang/Run-BASIC/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..13b7319b57
--- /dev/null
+++ b/Lang/Run-BASIC/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/Run-BASIC
\ No newline at end of file
diff --git a/Lang/Run-BASIC/Nested-templated-data b/Lang/Run-BASIC/Nested-templated-data
deleted file mode 120000
index e2c607e939..0000000000
--- a/Lang/Run-BASIC/Nested-templated-data
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nested-templated-data/Run-BASIC
\ No newline at end of file
diff --git a/Lang/Run-BASIC/Numbers-with-equal-rises-and-falls b/Lang/Run-BASIC/Numbers-with-equal-rises-and-falls
deleted file mode 120000
index b0e664881e..0000000000
--- a/Lang/Run-BASIC/Numbers-with-equal-rises-and-falls
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Numbers-with-equal-rises-and-falls/Run-BASIC
\ No newline at end of file
diff --git a/Lang/Run-BASIC/Pancake-numbers b/Lang/Run-BASIC/Pancake-numbers
deleted file mode 120000
index 8078e50109..0000000000
--- a/Lang/Run-BASIC/Pancake-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pancake-numbers/Run-BASIC
\ No newline at end of file
diff --git a/Lang/Run-BASIC/Phrase-reversals b/Lang/Run-BASIC/Phrase-reversals
deleted file mode 120000
index db249e8a6e..0000000000
--- a/Lang/Run-BASIC/Phrase-reversals
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Phrase-reversals/Run-BASIC
\ No newline at end of file
diff --git a/Lang/Run-BASIC/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors b/Lang/Run-BASIC/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
similarity index 100%
rename from Lang/Run-BASIC/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors
rename to Lang/Run-BASIC/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
diff --git a/Lang/Run-BASIC/Split-a-character-string-based-on-change-of-character b/Lang/Run-BASIC/Split-a-character-string-based-on-change-of-character
deleted file mode 120000
index afd1d6a928..0000000000
--- a/Lang/Run-BASIC/Split-a-character-string-based-on-change-of-character
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Split-a-character-string-based-on-change-of-character/Run-BASIC
\ No newline at end of file
diff --git a/Lang/Run-BASIC/The-Name-Game b/Lang/Run-BASIC/The-Name-Game
deleted file mode 120000
index a0ca866e4a..0000000000
--- a/Lang/Run-BASIC/The-Name-Game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/The-Name-Game/Run-BASIC
\ No newline at end of file
diff --git a/Lang/Rust/Almkvist-Giullera-formula-for-pi b/Lang/Rust/Almkvist-Giullera-formula-for-pi
deleted file mode 120000
index 495c52095c..0000000000
--- a/Lang/Rust/Almkvist-Giullera-formula-for-pi
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Almkvist-Giullera-formula-for-pi/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Ascending-primes b/Lang/Rust/Ascending-primes
deleted file mode 120000
index 84fdafe351..0000000000
--- a/Lang/Rust/Ascending-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ascending-primes/Rust
\ No newline at end of file
diff --git a/Lang/Rust/B-zier-curves-Intersections b/Lang/Rust/B-zier-curves-Intersections
deleted file mode 120000
index 732ede6e4e..0000000000
--- a/Lang/Rust/B-zier-curves-Intersections
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/B-zier-curves-Intersections/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Bifid-cipher b/Lang/Rust/Bifid-cipher
deleted file mode 120000
index 8ddce2026b..0000000000
--- a/Lang/Rust/Bifid-cipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bifid-cipher/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Bioinformatics-Global-alignment b/Lang/Rust/Bioinformatics-Global-alignment
deleted file mode 120000
index 3bbbc3b358..0000000000
--- a/Lang/Rust/Bioinformatics-Global-alignment
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bioinformatics-Global-alignment/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Bioinformatics-base-count b/Lang/Rust/Bioinformatics-base-count
new file mode 120000
index 0000000000..412ded1361
--- /dev/null
+++ b/Lang/Rust/Bioinformatics-base-count
@@ -0,0 +1 @@
+../../Task/Bioinformatics-base-count/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Biorhythms b/Lang/Rust/Biorhythms
deleted file mode 120000
index 8d5ffa21d8..0000000000
--- a/Lang/Rust/Biorhythms
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Biorhythms/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Blum-integer b/Lang/Rust/Blum-integer
deleted file mode 120000
index 7a0e8a69ae..0000000000
--- a/Lang/Rust/Blum-integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Blum-integer/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Boyer-Moore-string-search b/Lang/Rust/Boyer-Moore-string-search
deleted file mode 120000
index b70383335b..0000000000
--- a/Lang/Rust/Boyer-Moore-string-search
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Boyer-Moore-string-search/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Break-OO-privacy b/Lang/Rust/Break-OO-privacy
deleted file mode 120000
index 37b6e0d417..0000000000
--- a/Lang/Rust/Break-OO-privacy
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Break-OO-privacy/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Calendar---for-REAL-programmers b/Lang/Rust/Calendar---for-REAL-programmers
deleted file mode 120000
index 5bd1cebf14..0000000000
--- a/Lang/Rust/Calendar---for-REAL-programmers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Calendar---for-REAL-programmers/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Camel-case-and-snake-case b/Lang/Rust/Camel-case-and-snake-case
deleted file mode 120000
index 5c92d90b28..0000000000
--- a/Lang/Rust/Camel-case-and-snake-case
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Camel-case-and-snake-case/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Color-quantization b/Lang/Rust/Color-quantization
deleted file mode 120000
index 76c5471c0f..0000000000
--- a/Lang/Rust/Color-quantization
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Color-quantization/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Commatizing-numbers b/Lang/Rust/Commatizing-numbers
deleted file mode 120000
index 5df0e95315..0000000000
--- a/Lang/Rust/Commatizing-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Commatizing-numbers/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Compare-sorting-algorithms-performance b/Lang/Rust/Compare-sorting-algorithms-performance
deleted file mode 120000
index 7676ca3dd8..0000000000
--- a/Lang/Rust/Compare-sorting-algorithms-performance
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compare-sorting-algorithms-performance/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Compiler-AST-interpreter b/Lang/Rust/Compiler-AST-interpreter
deleted file mode 120000
index 2028e35209..0000000000
--- a/Lang/Rust/Compiler-AST-interpreter
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compiler-AST-interpreter/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Compiler-code-generator b/Lang/Rust/Compiler-code-generator
deleted file mode 120000
index fa460708f3..0000000000
--- a/Lang/Rust/Compiler-code-generator
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compiler-code-generator/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Compiler-lexical-analyzer b/Lang/Rust/Compiler-lexical-analyzer
deleted file mode 120000
index b603fdc69a..0000000000
--- a/Lang/Rust/Compiler-lexical-analyzer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compiler-lexical-analyzer/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Compiler-syntax-analyzer b/Lang/Rust/Compiler-syntax-analyzer
deleted file mode 120000
index 4fa6fc40a8..0000000000
--- a/Lang/Rust/Compiler-syntax-analyzer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compiler-syntax-analyzer/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Continued-fraction-Arithmetic-G-matrix-ng-continued-fraction-n- b/Lang/Rust/Continued-fraction-Arithmetic-G-matrix-ng-continued-fraction-n-
deleted file mode 120000
index 7e0955d429..0000000000
--- a/Lang/Rust/Continued-fraction-Arithmetic-G-matrix-ng-continued-fraction-n-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Continued-fraction-Arithmetic-G-matrix-ng-continued-fraction-n-/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Cyclops-numbers b/Lang/Rust/Cyclops-numbers
deleted file mode 120000
index 044bb62e43..0000000000
--- a/Lang/Rust/Cyclops-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cyclops-numbers/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Cyclotomic-polynomial b/Lang/Rust/Cyclotomic-polynomial
deleted file mode 120000
index 8ff16fabbb..0000000000
--- a/Lang/Rust/Cyclotomic-polynomial
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cyclotomic-polynomial/Rust
\ No newline at end of file
diff --git a/Lang/Rust/De-Bruijn-sequences b/Lang/Rust/De-Bruijn-sequences
deleted file mode 120000
index 69c62c6871..0000000000
--- a/Lang/Rust/De-Bruijn-sequences
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/De-Bruijn-sequences/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Deconvolution-1D b/Lang/Rust/Deconvolution-1D
deleted file mode 120000
index d02a914ea3..0000000000
--- a/Lang/Rust/Deconvolution-1D
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Deconvolution-1D/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Deconvolution-2D+ b/Lang/Rust/Deconvolution-2D+
deleted file mode 120000
index 4b9cb470ba..0000000000
--- a/Lang/Rust/Deconvolution-2D+
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Deconvolution-2D+/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Demings-funnel b/Lang/Rust/Demings-funnel
deleted file mode 120000
index 295d5542ba..0000000000
--- a/Lang/Rust/Demings-funnel
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Demings-funnel/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Descending-primes b/Lang/Rust/Descending-primes
deleted file mode 120000
index fc953fbf4e..0000000000
--- a/Lang/Rust/Descending-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Descending-primes/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Determine-if-two-triangles-overlap b/Lang/Rust/Determine-if-two-triangles-overlap
deleted file mode 120000
index 2bc1e5e063..0000000000
--- a/Lang/Rust/Determine-if-two-triangles-overlap
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-two-triangles-overlap/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Determine-sentence-type b/Lang/Rust/Determine-sentence-type
deleted file mode 120000
index caee594e4d..0000000000
--- a/Lang/Rust/Determine-sentence-type
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-sentence-type/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Doubly-linked-list-Definition b/Lang/Rust/Doubly-linked-list-Definition
deleted file mode 120000
index 9eb9054258..0000000000
--- a/Lang/Rust/Doubly-linked-list-Definition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Doubly-linked-list-Definition/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Doubly-linked-list-Traversal b/Lang/Rust/Doubly-linked-list-Traversal
deleted file mode 120000
index b44bd60c3c..0000000000
--- a/Lang/Rust/Doubly-linked-list-Traversal
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Doubly-linked-list-Traversal/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Duffinian-numbers b/Lang/Rust/Duffinian-numbers
deleted file mode 120000
index 5a84e9b8ff..0000000000
--- a/Lang/Rust/Duffinian-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Duffinian-numbers/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Eban-numbers b/Lang/Rust/Eban-numbers
deleted file mode 120000
index cf564cdce5..0000000000
--- a/Lang/Rust/Eban-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Eban-numbers/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Elliptic-Curve-Digital-Signature-Algorithm b/Lang/Rust/Elliptic-Curve-Digital-Signature-Algorithm
deleted file mode 120000
index f6d4ecb90e..0000000000
--- a/Lang/Rust/Elliptic-Curve-Digital-Signature-Algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Elliptic-Curve-Digital-Signature-Algorithm/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Elliptic-curve-arithmetic b/Lang/Rust/Elliptic-curve-arithmetic
deleted file mode 120000
index cb1c49b6dd..0000000000
--- a/Lang/Rust/Elliptic-curve-arithmetic
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Elliptic-curve-arithmetic/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Faulhabers-formula b/Lang/Rust/Faulhabers-formula
deleted file mode 120000
index f7691b3566..0000000000
--- a/Lang/Rust/Faulhabers-formula
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Faulhabers-formula/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Faulhabers-triangle b/Lang/Rust/Faulhabers-triangle
deleted file mode 120000
index 49b5537877..0000000000
--- a/Lang/Rust/Faulhabers-triangle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Faulhabers-triangle/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Find-largest-left-truncatable-prime-in-a-given-base b/Lang/Rust/Find-largest-left-truncatable-prime-in-a-given-base
deleted file mode 120000
index e7da5ced0b..0000000000
--- a/Lang/Rust/Find-largest-left-truncatable-prime-in-a-given-base
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Find-largest-left-truncatable-prime-in-a-given-base/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Fractran b/Lang/Rust/Fractran
deleted file mode 120000
index 46ed1ab96e..0000000000
--- a/Lang/Rust/Fractran
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fractran/Rust
\ No newline at end of file
diff --git a/Lang/Rust/French-Republican-calendar b/Lang/Rust/French-Republican-calendar
deleted file mode 120000
index 60dfe0f429..0000000000
--- a/Lang/Rust/French-Republican-calendar
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/French-Republican-calendar/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Functional-coverage-tree b/Lang/Rust/Functional-coverage-tree
deleted file mode 120000
index fab149755e..0000000000
--- a/Lang/Rust/Functional-coverage-tree
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Functional-coverage-tree/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Graph-colouring b/Lang/Rust/Graph-colouring
deleted file mode 120000
index acb44a12b7..0000000000
--- a/Lang/Rust/Graph-colouring
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Graph-colouring/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Hex-words b/Lang/Rust/Hex-words
deleted file mode 120000
index 9322882ab9..0000000000
--- a/Lang/Rust/Hex-words
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hex-words/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Humble-numbers b/Lang/Rust/Humble-numbers
deleted file mode 120000
index 001b631312..0000000000
--- a/Lang/Rust/Humble-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Humble-numbers/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Knapsack-problem-Bounded b/Lang/Rust/Knapsack-problem-Bounded
deleted file mode 120000
index db57c7551f..0000000000
--- a/Lang/Rust/Knapsack-problem-Bounded
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Knapsack-problem-Bounded/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Kosaraju b/Lang/Rust/Kosaraju
deleted file mode 120000
index 69a0c5ef3e..0000000000
--- a/Lang/Rust/Kosaraju
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Kosaraju/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Latin-Squares-in-reduced-form b/Lang/Rust/Latin-Squares-in-reduced-form
deleted file mode 120000
index 17d284a00f..0000000000
--- a/Lang/Rust/Latin-Squares-in-reduced-form
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Latin-Squares-in-reduced-form/Rust
\ No newline at end of file
diff --git a/Lang/Rust/List-rooted-trees b/Lang/Rust/List-rooted-trees
deleted file mode 120000
index ef07119312..0000000000
--- a/Lang/Rust/List-rooted-trees
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/List-rooted-trees/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Long-literals-with-continuations b/Lang/Rust/Long-literals-with-continuations
deleted file mode 120000
index ad69d0820b..0000000000
--- a/Lang/Rust/Long-literals-with-continuations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Long-literals-with-continuations/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Mayan-calendar b/Lang/Rust/Mayan-calendar
deleted file mode 120000
index 8da8002279..0000000000
--- a/Lang/Rust/Mayan-calendar
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Mayan-calendar/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Median-filter b/Lang/Rust/Median-filter
deleted file mode 120000
index 1cdae0e790..0000000000
--- a/Lang/Rust/Median-filter
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Median-filter/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Miller-Rabin-primality-test b/Lang/Rust/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..937aebe94f
--- /dev/null
+++ b/Lang/Rust/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Modular-arithmetic b/Lang/Rust/Modular-arithmetic
deleted file mode 120000
index bf3b8fce76..0000000000
--- a/Lang/Rust/Modular-arithmetic
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Modular-arithmetic/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Multiple-regression b/Lang/Rust/Multiple-regression
deleted file mode 120000
index 84425ee458..0000000000
--- a/Lang/Rust/Multiple-regression
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Multiple-regression/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Natural-sorting b/Lang/Rust/Natural-sorting
deleted file mode 120000
index 77b1a7de05..0000000000
--- a/Lang/Rust/Natural-sorting
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Natural-sorting/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Non-continuous-subsequences b/Lang/Rust/Non-continuous-subsequences
deleted file mode 120000
index 7152418d6c..0000000000
--- a/Lang/Rust/Non-continuous-subsequences
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Non-continuous-subsequences/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Nonogram-solver b/Lang/Rust/Nonogram-solver
deleted file mode 120000
index 670a3f0f6a..0000000000
--- a/Lang/Rust/Nonogram-solver
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nonogram-solver/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Numerical-and-alphabetical-suffixes b/Lang/Rust/Numerical-and-alphabetical-suffixes
deleted file mode 120000
index 0446d710e5..0000000000
--- a/Lang/Rust/Numerical-and-alphabetical-suffixes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Numerical-and-alphabetical-suffixes/Rust
\ No newline at end of file
diff --git a/Lang/Rust/OpenWebNet-password b/Lang/Rust/OpenWebNet-password
deleted file mode 120000
index 24be1f8b4a..0000000000
--- a/Lang/Rust/OpenWebNet-password
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/OpenWebNet-password/Rust
\ No newline at end of file
diff --git a/Lang/Rust/P-Adic-numbers-basic b/Lang/Rust/P-Adic-numbers-basic
deleted file mode 120000
index 2ccd34b2fd..0000000000
--- a/Lang/Rust/P-Adic-numbers-basic
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/P-Adic-numbers-basic/Rust
\ No newline at end of file
diff --git a/Lang/Rust/P-Adic-square-roots b/Lang/Rust/P-Adic-square-roots
deleted file mode 120000
index ed4fb995e0..0000000000
--- a/Lang/Rust/P-Adic-square-roots
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/P-Adic-square-roots/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Permutations-Derangements b/Lang/Rust/Permutations-Derangements
deleted file mode 120000
index 9efa9a4159..0000000000
--- a/Lang/Rust/Permutations-Derangements
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Permutations-Derangements/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Playfair-cipher b/Lang/Rust/Playfair-cipher
deleted file mode 120000
index f3e93df373..0000000000
--- a/Lang/Rust/Playfair-cipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Playfair-cipher/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Polynomial-regression b/Lang/Rust/Polynomial-regression
deleted file mode 120000
index cdb9cdc8ff..0000000000
--- a/Lang/Rust/Polynomial-regression
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Polynomial-regression/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Pseudo-random-numbers-Combined-recursive-generator-MRG32k3a b/Lang/Rust/Pseudo-random-numbers-Combined-recursive-generator-MRG32k3a
deleted file mode 120000
index a557952f5e..0000000000
--- a/Lang/Rust/Pseudo-random-numbers-Combined-recursive-generator-MRG32k3a
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pseudo-random-numbers-Combined-recursive-generator-MRG32k3a/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Pseudo-random-numbers-Middle-square-method b/Lang/Rust/Pseudo-random-numbers-Middle-square-method
deleted file mode 120000
index 07d7dfdf71..0000000000
--- a/Lang/Rust/Pseudo-random-numbers-Middle-square-method
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pseudo-random-numbers-Middle-square-method/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Pseudo-random-numbers-Splitmix64 b/Lang/Rust/Pseudo-random-numbers-Splitmix64
deleted file mode 120000
index af868efefa..0000000000
--- a/Lang/Rust/Pseudo-random-numbers-Splitmix64
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pseudo-random-numbers-Splitmix64/Rust
\ No newline at end of file
diff --git a/Lang/Rust/QR-decomposition b/Lang/Rust/QR-decomposition
deleted file mode 120000
index b6ec08cee6..0000000000
--- a/Lang/Rust/QR-decomposition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/QR-decomposition/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Quaternion-type b/Lang/Rust/Quaternion-type
new file mode 120000
index 0000000000..92c25b946f
--- /dev/null
+++ b/Lang/Rust/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Ramanujan-primes-twins b/Lang/Rust/Ramanujan-primes-twins
deleted file mode 120000
index ec360cedbc..0000000000
--- a/Lang/Rust/Ramanujan-primes-twins
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ramanujan-primes-twins/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Rendezvous b/Lang/Rust/Rendezvous
deleted file mode 120000
index 2ae4407138..0000000000
--- a/Lang/Rust/Rendezvous
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Rendezvous/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Resistor-mesh b/Lang/Rust/Resistor-mesh
deleted file mode 120000
index 245eca7f06..0000000000
--- a/Lang/Rust/Resistor-mesh
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Resistor-mesh/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/Rust/Sequence-smallest-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/Rust/Sequence:-smallest-number-with-exactly-n-divisors
rename to Lang/Rust/Sequence-smallest-number-with-exactly-n-divisors
diff --git a/Lang/Rust/Shoelace-formula-for-polygonal-area b/Lang/Rust/Shoelace-formula-for-polygonal-area
deleted file mode 120000
index 4ce5ca075a..0000000000
--- a/Lang/Rust/Shoelace-formula-for-polygonal-area
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Shoelace-formula-for-polygonal-area/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Singleton b/Lang/Rust/Singleton
deleted file mode 120000
index 480988c162..0000000000
--- a/Lang/Rust/Singleton
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Singleton/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Sokoban b/Lang/Rust/Sokoban
deleted file mode 120000
index 57d1bc73b3..0000000000
--- a/Lang/Rust/Sokoban
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sokoban/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Solve-a-Holy-Knights-tour b/Lang/Rust/Solve-a-Holy-Knights-tour
deleted file mode 120000
index 7d376bff89..0000000000
--- a/Lang/Rust/Solve-a-Holy-Knights-tour
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Solve-a-Holy-Knights-tour/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Solve-a-Hopido-puzzle b/Lang/Rust/Solve-a-Hopido-puzzle
deleted file mode 120000
index 13eae5b688..0000000000
--- a/Lang/Rust/Solve-a-Hopido-puzzle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Solve-a-Hopido-puzzle/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Solve-a-Numbrix-puzzle b/Lang/Rust/Solve-a-Numbrix-puzzle
deleted file mode 120000
index 6da0fac9a0..0000000000
--- a/Lang/Rust/Solve-a-Numbrix-puzzle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Solve-a-Numbrix-puzzle/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Sorting-Algorithms-Circle-Sort b/Lang/Rust/Sorting-Algorithms-Circle-Sort
new file mode 120000
index 0000000000..924c0eb5ac
--- /dev/null
+++ b/Lang/Rust/Sorting-Algorithms-Circle-Sort
@@ -0,0 +1 @@
+../../Task/Sorting-Algorithms-Circle-Sort/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Sorting-algorithms-Bead-sort b/Lang/Rust/Sorting-algorithms-Bead-sort
deleted file mode 120000
index 1096740d47..0000000000
--- a/Lang/Rust/Sorting-algorithms-Bead-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Bead-sort/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Sorting-algorithms-Patience-sort b/Lang/Rust/Sorting-algorithms-Patience-sort
deleted file mode 120000
index 98bfba78ce..0000000000
--- a/Lang/Rust/Sorting-algorithms-Patience-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Patience-sort/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Sorting-algorithms-Permutation-sort b/Lang/Rust/Sorting-algorithms-Permutation-sort
deleted file mode 120000
index 0bbf7e172b..0000000000
--- a/Lang/Rust/Sorting-algorithms-Permutation-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Permutation-sort/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Sorting-algorithms-Strand-sort b/Lang/Rust/Sorting-algorithms-Strand-sort
deleted file mode 120000
index c01a273a80..0000000000
--- a/Lang/Rust/Sorting-algorithms-Strand-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Strand-sort/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Special-characters b/Lang/Rust/Special-characters
deleted file mode 120000
index 7cb915367e..0000000000
--- a/Lang/Rust/Special-characters
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Special-characters/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Stable-marriage-problem b/Lang/Rust/Stable-marriage-problem
deleted file mode 120000
index 98e509ab20..0000000000
--- a/Lang/Rust/Stable-marriage-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Stable-marriage-problem/Rust
\ No newline at end of file
diff --git a/Lang/Rust/State-name-puzzle b/Lang/Rust/State-name-puzzle
deleted file mode 120000
index a88b598d4b..0000000000
--- a/Lang/Rust/State-name-puzzle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/State-name-puzzle/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Steffensens-method b/Lang/Rust/Steffensens-method
deleted file mode 120000
index 4aa426ad52..0000000000
--- a/Lang/Rust/Steffensens-method
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Steffensens-method/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Stem-and-leaf-plot b/Lang/Rust/Stem-and-leaf-plot
deleted file mode 120000
index c5e2a0d27c..0000000000
--- a/Lang/Rust/Stem-and-leaf-plot
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Stem-and-leaf-plot/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Stern-Brocot-sequence b/Lang/Rust/Stern-Brocot-sequence
deleted file mode 120000
index 72080b645a..0000000000
--- a/Lang/Rust/Stern-Brocot-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Stern-Brocot-sequence/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Strassens-algorithm b/Lang/Rust/Strassens-algorithm
deleted file mode 120000
index 059089e819..0000000000
--- a/Lang/Rust/Strassens-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strassens-algorithm/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Stream-merge b/Lang/Rust/Stream-merge
deleted file mode 120000
index 101f42c85a..0000000000
--- a/Lang/Rust/Stream-merge
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Stream-merge/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Strip-block-comments b/Lang/Rust/Strip-block-comments
deleted file mode 120000
index c9f77902d0..0000000000
--- a/Lang/Rust/Strip-block-comments
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strip-block-comments/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Strip-control-codes-and-extended-characters-from-a-string b/Lang/Rust/Strip-control-codes-and-extended-characters-from-a-string
deleted file mode 120000
index 56a1876479..0000000000
--- a/Lang/Rust/Strip-control-codes-and-extended-characters-from-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strip-control-codes-and-extended-characters-from-a-string/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Subleq b/Lang/Rust/Subleq
deleted file mode 120000
index cc28544f34..0000000000
--- a/Lang/Rust/Subleq
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Subleq/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Substitution-cipher b/Lang/Rust/Substitution-cipher
deleted file mode 120000
index aa3ad1011d..0000000000
--- a/Lang/Rust/Substitution-cipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Substitution-cipher/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Sudan-function b/Lang/Rust/Sudan-function
deleted file mode 120000
index 29cdeee99f..0000000000
--- a/Lang/Rust/Sudan-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sudan-function/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Suffixation-of-decimal-numbers b/Lang/Rust/Suffixation-of-decimal-numbers
deleted file mode 120000
index 2428a135a4..0000000000
--- a/Lang/Rust/Suffixation-of-decimal-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Suffixation-of-decimal-numbers/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Summarize-and-say-sequence b/Lang/Rust/Summarize-and-say-sequence
deleted file mode 120000
index 030276987c..0000000000
--- a/Lang/Rust/Summarize-and-say-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Summarize-and-say-sequence/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Superpermutation-minimisation b/Lang/Rust/Superpermutation-minimisation
deleted file mode 120000
index 8b214e27cd..0000000000
--- a/Lang/Rust/Superpermutation-minimisation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Superpermutation-minimisation/Rust
\ No newline at end of file
diff --git a/Lang/Rust/The-Name-Game b/Lang/Rust/The-Name-Game
deleted file mode 120000
index 92835f00de..0000000000
--- a/Lang/Rust/The-Name-Game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/The-Name-Game/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Tonelli-Shanks-algorithm b/Lang/Rust/Tonelli-Shanks-algorithm
deleted file mode 120000
index b90bd71718..0000000000
--- a/Lang/Rust/Tonelli-Shanks-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tonelli-Shanks-algorithm/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Tree-datastructures b/Lang/Rust/Tree-datastructures
deleted file mode 120000
index 37b567712c..0000000000
--- a/Lang/Rust/Tree-datastructures
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tree-datastructures/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Tropical-algebra-overloading b/Lang/Rust/Tropical-algebra-overloading
deleted file mode 120000
index 271296f0b3..0000000000
--- a/Lang/Rust/Tropical-algebra-overloading
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tropical-algebra-overloading/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Twos-complement b/Lang/Rust/Twos-complement
deleted file mode 120000
index 086c8719d1..0000000000
--- a/Lang/Rust/Twos-complement
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Twos-complement/Rust
\ No newline at end of file
diff --git a/Lang/Rust/UPC b/Lang/Rust/UPC
deleted file mode 120000
index 775faf96be..0000000000
--- a/Lang/Rust/UPC
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/UPC/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Ukkonen-s-suffix-tree-construction b/Lang/Rust/Ukkonen-s-suffix-tree-construction
deleted file mode 120000
index 684e412fed..0000000000
--- a/Lang/Rust/Ukkonen-s-suffix-tree-construction
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ukkonen-s-suffix-tree-construction/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Verhoeff-algorithm b/Lang/Rust/Verhoeff-algorithm
deleted file mode 120000
index fd5322e5ec..0000000000
--- a/Lang/Rust/Verhoeff-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Verhoeff-algorithm/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Vogels-approximation-method b/Lang/Rust/Vogels-approximation-method
deleted file mode 120000
index 377b0aef0a..0000000000
--- a/Lang/Rust/Vogels-approximation-method
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Vogels-approximation-method/Rust
\ No newline at end of file
diff --git a/Lang/Rust/War-card-game b/Lang/Rust/War-card-game
deleted file mode 120000
index bc45c42250..0000000000
--- a/Lang/Rust/War-card-game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/War-card-game/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Word-ladder b/Lang/Rust/Word-ladder
deleted file mode 120000
index 9973e5c323..0000000000
--- a/Lang/Rust/Word-ladder
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Word-ladder/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Word-search b/Lang/Rust/Word-search
deleted file mode 120000
index 737b35c0c7..0000000000
--- a/Lang/Rust/Word-search
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Word-search/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Word-wheel b/Lang/Rust/Word-wheel
deleted file mode 120000
index 3c8a9835e5..0000000000
--- a/Lang/Rust/Word-wheel
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Word-wheel/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Wordiff b/Lang/Rust/Wordiff
deleted file mode 120000
index 44e42a760a..0000000000
--- a/Lang/Rust/Wordiff
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Wordiff/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Xiaolin-Wus-line-algorithm b/Lang/Rust/Xiaolin-Wus-line-algorithm
deleted file mode 120000
index 68352a1cb5..0000000000
--- a/Lang/Rust/Xiaolin-Wus-line-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Xiaolin-Wus-line-algorithm/Rust
\ No newline at end of file
diff --git a/Lang/Rust/Zebra-puzzle b/Lang/Rust/Zebra-puzzle
deleted file mode 120000
index 2b9c2729f7..0000000000
--- a/Lang/Rust/Zebra-puzzle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Zebra-puzzle/Rust
\ No newline at end of file
diff --git a/Lang/Rye/00-LANG.txt b/Lang/Rye/00-LANG.txt
deleted file mode 100644
index 10b016e264..0000000000
--- a/Lang/Rye/00-LANG.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-{{stub}}{{language|rye}}
-Rye is a flexible, high-level programming language designed for predictable state management. Rye takes ideas from Rebol, and adds few from Factor, Linux shell, and Go. Written in Go, Rye doubles as a scripting companion for Go programs. Go's libraries integrate seamlessly, and Rye can be embedded as a scripting or config language for Go programs.
-
-As a high-level language, Rye explores bridging coding and user interfaces. Its interactive console features syntax highlighting, history, tab completion, and tools to explore the language and environment you’re crafting.
-
-==Todo==
-[https://rosettacode.org/wiki/Tasks_not_implemented_in_Rye Tasks not implemented in Rye]
-
-==Links==
-*[https://ryelang.org/ Homepage]
-*[https://github.com/refaktor/rye Github repository]
\ No newline at end of file
diff --git a/Lang/Rye/00-META.yaml b/Lang/Rye/00-META.yaml
deleted file mode 100644
index c4fbe956c0..0000000000
--- a/Lang/Rye/00-META.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-from: http://rosettacode.org/wiki/Category:Rye
diff --git a/Lang/Rye/100-doors b/Lang/Rye/100-doors
deleted file mode 120000
index 438aa2dd57..0000000000
--- a/Lang/Rye/100-doors
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/100-doors/Rye
\ No newline at end of file
diff --git a/Lang/Rye/99-bottles-of-beer b/Lang/Rye/99-bottles-of-beer
deleted file mode 120000
index bd33c6e283..0000000000
--- a/Lang/Rye/99-bottles-of-beer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/99-bottles-of-beer/Rye
\ No newline at end of file
diff --git a/Lang/Rye/A+B b/Lang/Rye/A+B
deleted file mode 120000
index cd82f2f9d7..0000000000
--- a/Lang/Rye/A+B
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/A+B/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Arithmetic-Integer b/Lang/Rye/Arithmetic-Integer
deleted file mode 120000
index 3854f98ef8..0000000000
--- a/Lang/Rye/Arithmetic-Integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-Integer/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Array-concatenation b/Lang/Rye/Array-concatenation
deleted file mode 120000
index e06de8357b..0000000000
--- a/Lang/Rye/Array-concatenation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Array-concatenation/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Array-length b/Lang/Rye/Array-length
deleted file mode 120000
index f3ddf845d5..0000000000
--- a/Lang/Rye/Array-length
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Array-length/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Arrays b/Lang/Rye/Arrays
deleted file mode 120000
index 0051f3551e..0000000000
--- a/Lang/Rye/Arrays
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arrays/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Assertions b/Lang/Rye/Assertions
deleted file mode 120000
index 55dc6c4a1c..0000000000
--- a/Lang/Rye/Assertions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Assertions/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Associative-array-Creation b/Lang/Rye/Associative-array-Creation
deleted file mode 120000
index 6d8b394caa..0000000000
--- a/Lang/Rye/Associative-array-Creation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Associative-array-Creation/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Catamorphism b/Lang/Rye/Catamorphism
deleted file mode 120000
index 1cc0f4cd16..0000000000
--- a/Lang/Rye/Catamorphism
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Catamorphism/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Check-that-file-exists b/Lang/Rye/Check-that-file-exists
deleted file mode 120000
index 0f1689d415..0000000000
--- a/Lang/Rye/Check-that-file-exists
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Check-that-file-exists/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Collections b/Lang/Rye/Collections
deleted file mode 120000
index 8619dddf36..0000000000
--- a/Lang/Rye/Collections
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Collections/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Compare-length-of-two-strings b/Lang/Rye/Compare-length-of-two-strings
deleted file mode 120000
index 3ee03067fd..0000000000
--- a/Lang/Rye/Compare-length-of-two-strings
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compare-length-of-two-strings/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Copy-a-string b/Lang/Rye/Copy-a-string
deleted file mode 120000
index 5130e809be..0000000000
--- a/Lang/Rye/Copy-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Copy-a-string/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Create-a-file b/Lang/Rye/Create-a-file
deleted file mode 120000
index 933dfda3ec..0000000000
--- a/Lang/Rye/Create-a-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Create-a-file/Rye
\ No newline at end of file
diff --git a/Lang/Rye/DNS-query b/Lang/Rye/DNS-query
deleted file mode 120000
index 25d8db99dd..0000000000
--- a/Lang/Rye/DNS-query
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/DNS-query/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Date-format b/Lang/Rye/Date-format
deleted file mode 120000
index 3a4d47e12d..0000000000
--- a/Lang/Rye/Date-format
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Date-format/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Date-manipulation b/Lang/Rye/Date-manipulation
deleted file mode 120000
index aae44dde34..0000000000
--- a/Lang/Rye/Date-manipulation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Date-manipulation/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Day-of-the-week b/Lang/Rye/Day-of-the-week
deleted file mode 120000
index 39e63de9c9..0000000000
--- a/Lang/Rye/Day-of-the-week
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Day-of-the-week/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Delete-a-file b/Lang/Rye/Delete-a-file
deleted file mode 120000
index 9eea0e6587..0000000000
--- a/Lang/Rye/Delete-a-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Delete-a-file/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Detect-division-by-zero b/Lang/Rye/Detect-division-by-zero
deleted file mode 120000
index f063a804c3..0000000000
--- a/Lang/Rye/Detect-division-by-zero
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Detect-division-by-zero/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Determine-if-a-string-is-numeric b/Lang/Rye/Determine-if-a-string-is-numeric
deleted file mode 120000
index 921464be9b..0000000000
--- a/Lang/Rye/Determine-if-a-string-is-numeric
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-is-numeric/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Dot-product b/Lang/Rye/Dot-product
deleted file mode 120000
index ae39c4baea..0000000000
--- a/Lang/Rye/Dot-product
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dot-product/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Empty-string b/Lang/Rye/Empty-string
deleted file mode 120000
index f9e83f3c4d..0000000000
--- a/Lang/Rye/Empty-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Empty-string/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Environment-variables b/Lang/Rye/Environment-variables
deleted file mode 120000
index 61b0fc4a40..0000000000
--- a/Lang/Rye/Environment-variables
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Environment-variables/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Even-or-odd b/Lang/Rye/Even-or-odd
deleted file mode 120000
index 8e627fbc05..0000000000
--- a/Lang/Rye/Even-or-odd
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Even-or-odd/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Exceptions b/Lang/Rye/Exceptions
deleted file mode 120000
index 98c5a1f0b9..0000000000
--- a/Lang/Rye/Exceptions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Exceptions/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Execute-a-system-command b/Lang/Rye/Execute-a-system-command
deleted file mode 120000
index 6ef49fa4fa..0000000000
--- a/Lang/Rye/Execute-a-system-command
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Execute-a-system-command/Rye
\ No newline at end of file
diff --git a/Lang/Rye/File-input-output b/Lang/Rye/File-input-output
deleted file mode 120000
index 92a41d1ae9..0000000000
--- a/Lang/Rye/File-input-output
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/File-input-output/Rye
\ No newline at end of file
diff --git a/Lang/Rye/File-size b/Lang/Rye/File-size
deleted file mode 120000
index 434016471c..0000000000
--- a/Lang/Rye/File-size
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/File-size/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Filter b/Lang/Rye/Filter
deleted file mode 120000
index be25d82950..0000000000
--- a/Lang/Rye/Filter
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Filter/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Function-definition b/Lang/Rye/Function-definition
deleted file mode 120000
index aacf81b6b4..0000000000
--- a/Lang/Rye/Function-definition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Function-definition/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Get-system-command-output b/Lang/Rye/Get-system-command-output
deleted file mode 120000
index 0faad90e64..0000000000
--- a/Lang/Rye/Get-system-command-output
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Get-system-command-output/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Globally-replace-text-in-several-files b/Lang/Rye/Globally-replace-text-in-several-files
deleted file mode 120000
index 3bc1b5796d..0000000000
--- a/Lang/Rye/Globally-replace-text-in-several-files
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Globally-replace-text-in-several-files/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Greatest-element-of-a-list b/Lang/Rye/Greatest-element-of-a-list
deleted file mode 120000
index 3f8290710b..0000000000
--- a/Lang/Rye/Greatest-element-of-a-list
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Greatest-element-of-a-list/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Guess-the-number b/Lang/Rye/Guess-the-number
deleted file mode 120000
index 3554ecb000..0000000000
--- a/Lang/Rye/Guess-the-number
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Guess-the-number/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Hello-world-Graphical b/Lang/Rye/Hello-world-Graphical
deleted file mode 120000
index 8ba960fd9f..0000000000
--- a/Lang/Rye/Hello-world-Graphical
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Graphical/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Hello-world-Newbie b/Lang/Rye/Hello-world-Newbie
deleted file mode 120000
index 404d5bf799..0000000000
--- a/Lang/Rye/Hello-world-Newbie
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Newbie/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Hello-world-Newline-omission b/Lang/Rye/Hello-world-Newline-omission
deleted file mode 120000
index 8978311a91..0000000000
--- a/Lang/Rye/Hello-world-Newline-omission
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Newline-omission/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Hello-world-Text b/Lang/Rye/Hello-world-Text
deleted file mode 120000
index 527e3f5d07..0000000000
--- a/Lang/Rye/Hello-world-Text
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Text/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Hello-world-Web-server b/Lang/Rye/Hello-world-Web-server
deleted file mode 120000
index 3eb3a08cd7..0000000000
--- a/Lang/Rye/Hello-world-Web-server
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Web-server/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Hostname b/Lang/Rye/Hostname
deleted file mode 120000
index 794d1a04af..0000000000
--- a/Lang/Rye/Hostname
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hostname/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Include-a-file b/Lang/Rye/Include-a-file
deleted file mode 120000
index 075626de41..0000000000
--- a/Lang/Rye/Include-a-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Include-a-file/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Increment-a-numerical-string b/Lang/Rye/Increment-a-numerical-string
deleted file mode 120000
index a92efbbcc7..0000000000
--- a/Lang/Rye/Increment-a-numerical-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Increment-a-numerical-string/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Integer-comparison b/Lang/Rye/Integer-comparison
deleted file mode 120000
index b464263441..0000000000
--- a/Lang/Rye/Integer-comparison
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Integer-comparison/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Jewels-and-stones b/Lang/Rye/Jewels-and-stones
deleted file mode 120000
index 2e39bc84a7..0000000000
--- a/Lang/Rye/Jewels-and-stones
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jewels-and-stones/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Loops-Do-while b/Lang/Rye/Loops-Do-while
deleted file mode 120000
index fb7d5e8d59..0000000000
--- a/Lang/Rye/Loops-Do-while
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Do-while/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Loops-For b/Lang/Rye/Loops-For
deleted file mode 120000
index 3149a28871..0000000000
--- a/Lang/Rye/Loops-For
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-For/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Loops-Foreach b/Lang/Rye/Loops-Foreach
deleted file mode 120000
index 5feb6cdb06..0000000000
--- a/Lang/Rye/Loops-Foreach
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Foreach/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Loops-Infinite b/Lang/Rye/Loops-Infinite
deleted file mode 120000
index 7267542117..0000000000
--- a/Lang/Rye/Loops-Infinite
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Infinite/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Loops-While b/Lang/Rye/Loops-While
deleted file mode 120000
index 376326123c..0000000000
--- a/Lang/Rye/Loops-While
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-While/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Nth b/Lang/Rye/Nth
deleted file mode 120000
index 5490f22f35..0000000000
--- a/Lang/Rye/Nth
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nth/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Operator-precedence b/Lang/Rye/Operator-precedence
deleted file mode 120000
index 43eb0d7842..0000000000
--- a/Lang/Rye/Operator-precedence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Operator-precedence/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Ordered-words b/Lang/Rye/Ordered-words
deleted file mode 120000
index c1d477486c..0000000000
--- a/Lang/Rye/Ordered-words
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ordered-words/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Partial-function-application b/Lang/Rye/Partial-function-application
deleted file mode 120000
index ae25414b27..0000000000
--- a/Lang/Rye/Partial-function-application
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Partial-function-application/Rye
\ No newline at end of file
diff --git a/Lang/Rye/RPG-attributes-generator b/Lang/Rye/RPG-attributes-generator
deleted file mode 120000
index fa9afbb45f..0000000000
--- a/Lang/Rye/RPG-attributes-generator
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/RPG-attributes-generator/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Read-entire-file b/Lang/Rye/Read-entire-file
deleted file mode 120000
index 345a900f2b..0000000000
--- a/Lang/Rye/Read-entire-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Read-entire-file/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Remove-duplicate-elements b/Lang/Rye/Remove-duplicate-elements
deleted file mode 120000
index c6a95084fa..0000000000
--- a/Lang/Rye/Remove-duplicate-elements
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Remove-duplicate-elements/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Rename-a-file b/Lang/Rye/Rename-a-file
deleted file mode 120000
index 3dce3fa2f0..0000000000
--- a/Lang/Rye/Rename-a-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Rename-a-file/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Return-multiple-values b/Lang/Rye/Return-multiple-values
deleted file mode 120000
index 9f9f2d8ad1..0000000000
--- a/Lang/Rye/Return-multiple-values
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Return-multiple-values/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Reverse-a-string b/Lang/Rye/Reverse-a-string
deleted file mode 120000
index 71a229a461..0000000000
--- a/Lang/Rye/Reverse-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Reverse-a-string/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Sleep b/Lang/Rye/Sleep
deleted file mode 120000
index caf7749aa7..0000000000
--- a/Lang/Rye/Sleep
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sleep/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Sort-an-integer-array b/Lang/Rye/Sort-an-integer-array
deleted file mode 120000
index 8cac11dd37..0000000000
--- a/Lang/Rye/Sort-an-integer-array
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-an-integer-array/Rye
\ No newline at end of file
diff --git a/Lang/Rye/String-append b/Lang/Rye/String-append
deleted file mode 120000
index 7184f2004b..0000000000
--- a/Lang/Rye/String-append
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-append/Rye
\ No newline at end of file
diff --git a/Lang/Rye/String-case b/Lang/Rye/String-case
deleted file mode 120000
index d596578a64..0000000000
--- a/Lang/Rye/String-case
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-case/Rye
\ No newline at end of file
diff --git a/Lang/Rye/String-concatenation b/Lang/Rye/String-concatenation
deleted file mode 120000
index 7a56a81ca6..0000000000
--- a/Lang/Rye/String-concatenation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-concatenation/Rye
\ No newline at end of file
diff --git a/Lang/Rye/String-interpolation-included- b/Lang/Rye/String-interpolation-included-
deleted file mode 120000
index 8918c4450c..0000000000
--- a/Lang/Rye/String-interpolation-included-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-interpolation-included-/Rye
\ No newline at end of file
diff --git a/Lang/Rye/String-length b/Lang/Rye/String-length
deleted file mode 120000
index bf2836e136..0000000000
--- a/Lang/Rye/String-length
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-length/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Strip-a-set-of-characters-from-a-string b/Lang/Rye/Strip-a-set-of-characters-from-a-string
deleted file mode 120000
index a8703fda98..0000000000
--- a/Lang/Rye/Strip-a-set-of-characters-from-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strip-a-set-of-characters-from-a-string/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Strip-whitespace-from-a-string-Top-and-tail b/Lang/Rye/Strip-whitespace-from-a-string-Top-and-tail
deleted file mode 120000
index d53cb2cf57..0000000000
--- a/Lang/Rye/Strip-whitespace-from-a-string-Top-and-tail
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strip-whitespace-from-a-string-Top-and-tail/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Substring-Top-and-tail b/Lang/Rye/Substring-Top-and-tail
deleted file mode 120000
index 1cf4555801..0000000000
--- a/Lang/Rye/Substring-Top-and-tail
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Substring-Top-and-tail/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Sum-and-product-of-an-array b/Lang/Rye/Sum-and-product-of-an-array
deleted file mode 120000
index 95d8d590bc..0000000000
--- a/Lang/Rye/Sum-and-product-of-an-array
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sum-and-product-of-an-array/Rye
\ No newline at end of file
diff --git a/Lang/Rye/System-time b/Lang/Rye/System-time
deleted file mode 120000
index 14391ca376..0000000000
--- a/Lang/Rye/System-time
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/System-time/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Tokenize-a-string b/Lang/Rye/Tokenize-a-string
deleted file mode 120000
index 404261ec01..0000000000
--- a/Lang/Rye/Tokenize-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tokenize-a-string/Rye
\ No newline at end of file
diff --git a/Lang/Rye/User-input-Text b/Lang/Rye/User-input-Text
deleted file mode 120000
index 8cd3ad9295..0000000000
--- a/Lang/Rye/User-input-Text
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/User-input-Text/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Variables b/Lang/Rye/Variables
deleted file mode 120000
index d50ac89ca0..0000000000
--- a/Lang/Rye/Variables
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Variables/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Window-creation b/Lang/Rye/Window-creation
deleted file mode 120000
index 334b72f881..0000000000
--- a/Lang/Rye/Window-creation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Window-creation/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Write-entire-file b/Lang/Rye/Write-entire-file
deleted file mode 120000
index 7a14255070..0000000000
--- a/Lang/Rye/Write-entire-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Write-entire-file/Rye
\ No newline at end of file
diff --git a/Lang/Rye/Zero-to-the-zero-power b/Lang/Rye/Zero-to-the-zero-power
deleted file mode 120000
index 2c54da2a61..0000000000
--- a/Lang/Rye/Zero-to-the-zero-power
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Zero-to-the-zero-power/Rye
\ No newline at end of file
diff --git a/Lang/S-BASIC/00-LANG.txt b/Lang/S-BASIC/00-LANG.txt
index cb4f4a5c14..7e71ba9085 100644
--- a/Lang/S-BASIC/00-LANG.txt
+++ b/Lang/S-BASIC/00-LANG.txt
@@ -1,5 +1,4 @@
{{stub}}{{language|S-BASIC}}
-{{implementation|BASIC}}
S-BASIC (the S stands for "structured") was a native-code
compiler for an ALGOL-like dialect of the BASIC programming
language, and ran on 8-bit microcomputers using the Z80 CPU and
diff --git a/Lang/S-BASIC/Additive-primes b/Lang/S-BASIC/Additive-primes
deleted file mode 120000
index b90d39a158..0000000000
--- a/Lang/S-BASIC/Additive-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Additive-primes/S-BASIC
\ No newline at end of file
diff --git a/Lang/S-BASIC/Address-of-a-variable b/Lang/S-BASIC/Address-of-a-variable
deleted file mode 120000
index e42c14ed1b..0000000000
--- a/Lang/S-BASIC/Address-of-a-variable
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Address-of-a-variable/S-BASIC
\ No newline at end of file
diff --git a/Lang/S-BASIC/Case-sensitivity-of-identifiers b/Lang/S-BASIC/Case-sensitivity-of-identifiers
deleted file mode 120000
index cf49bbdc11..0000000000
--- a/Lang/S-BASIC/Case-sensitivity-of-identifiers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Case-sensitivity-of-identifiers/S-BASIC
\ No newline at end of file
diff --git a/Lang/S-BASIC/Character-codes b/Lang/S-BASIC/Character-codes
deleted file mode 120000
index f408189f94..0000000000
--- a/Lang/S-BASIC/Character-codes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Character-codes/S-BASIC
\ No newline at end of file
diff --git a/Lang/S-BASIC/Copy-a-string b/Lang/S-BASIC/Copy-a-string
deleted file mode 120000
index cf54fdae2e..0000000000
--- a/Lang/S-BASIC/Copy-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Copy-a-string/S-BASIC
\ No newline at end of file
diff --git a/Lang/S-BASIC/Determine-if-a-string-has-all-unique-characters b/Lang/S-BASIC/Determine-if-a-string-has-all-unique-characters
deleted file mode 120000
index f2a5cead6b..0000000000
--- a/Lang/S-BASIC/Determine-if-a-string-has-all-unique-characters
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-has-all-unique-characters/S-BASIC
\ No newline at end of file
diff --git a/Lang/S-BASIC/Factorial b/Lang/S-BASIC/Factorial
deleted file mode 120000
index 3c6e9121ba..0000000000
--- a/Lang/S-BASIC/Factorial
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factorial/S-BASIC
\ No newline at end of file
diff --git a/Lang/S-BASIC/Golden-ratio-Convergence b/Lang/S-BASIC/Golden-ratio-Convergence
deleted file mode 120000
index 4ad7ad99cc..0000000000
--- a/Lang/S-BASIC/Golden-ratio-Convergence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Golden-ratio-Convergence/S-BASIC
\ No newline at end of file
diff --git a/Lang/S-BASIC/Harmonic-series b/Lang/S-BASIC/Harmonic-series
deleted file mode 120000
index 32781a4eaa..0000000000
--- a/Lang/S-BASIC/Harmonic-series
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Harmonic-series/S-BASIC
\ No newline at end of file
diff --git a/Lang/S-BASIC/Hello-world-Line-printer b/Lang/S-BASIC/Hello-world-Line-printer
deleted file mode 120000
index c091e2e975..0000000000
--- a/Lang/S-BASIC/Hello-world-Line-printer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Line-printer/S-BASIC
\ No newline at end of file
diff --git a/Lang/S-BASIC/Integer-overflow b/Lang/S-BASIC/Integer-overflow
deleted file mode 120000
index 60893ea23b..0000000000
--- a/Lang/S-BASIC/Integer-overflow
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Integer-overflow/S-BASIC
\ No newline at end of file
diff --git a/Lang/S-BASIC/Loops-Break b/Lang/S-BASIC/Loops-Break
deleted file mode 120000
index 4109f93543..0000000000
--- a/Lang/S-BASIC/Loops-Break
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Break/S-BASIC
\ No newline at end of file
diff --git a/Lang/S-BASIC/Loops-Do-while b/Lang/S-BASIC/Loops-Do-while
deleted file mode 120000
index 026ddb5c46..0000000000
--- a/Lang/S-BASIC/Loops-Do-while
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Do-while/S-BASIC
\ No newline at end of file
diff --git a/Lang/S-BASIC/Loops-Increment-loop-index-within-loop-body b/Lang/S-BASIC/Loops-Increment-loop-index-within-loop-body
deleted file mode 120000
index 0b105df636..0000000000
--- a/Lang/S-BASIC/Loops-Increment-loop-index-within-loop-body
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Increment-loop-index-within-loop-body/S-BASIC
\ No newline at end of file
diff --git a/Lang/S-BASIC/Loops-While b/Lang/S-BASIC/Loops-While
deleted file mode 120000
index cf0317c07f..0000000000
--- a/Lang/S-BASIC/Loops-While
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-While/S-BASIC
\ No newline at end of file
diff --git a/Lang/S-BASIC/Real-constants-and-functions b/Lang/S-BASIC/Real-constants-and-functions
deleted file mode 120000
index dd7abd08ca..0000000000
--- a/Lang/S-BASIC/Real-constants-and-functions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Real-constants-and-functions/S-BASIC
\ No newline at end of file
diff --git a/Lang/S-BASIC/Rename-a-file b/Lang/S-BASIC/Rename-a-file
deleted file mode 120000
index 918d2d7e4f..0000000000
--- a/Lang/S-BASIC/Rename-a-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Rename-a-file/S-BASIC
\ No newline at end of file
diff --git a/Lang/S-BASIC/Sort-an-integer-array b/Lang/S-BASIC/Sort-an-integer-array
deleted file mode 120000
index ee8b6cb035..0000000000
--- a/Lang/S-BASIC/Sort-an-integer-array
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-an-integer-array/S-BASIC
\ No newline at end of file
diff --git a/Lang/S-BASIC/Sorting-algorithms-Insertion-sort b/Lang/S-BASIC/Sorting-algorithms-Insertion-sort
deleted file mode 120000
index 60391d0e75..0000000000
--- a/Lang/S-BASIC/Sorting-algorithms-Insertion-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Insertion-sort/S-BASIC
\ No newline at end of file
diff --git a/Lang/S-BASIC/Square-free-integers b/Lang/S-BASIC/Square-free-integers
deleted file mode 120000
index d6296e2f26..0000000000
--- a/Lang/S-BASIC/Square-free-integers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Square-free-integers/S-BASIC
\ No newline at end of file
diff --git a/Lang/S-BASIC/String-interpolation-included- b/Lang/S-BASIC/String-interpolation-included-
deleted file mode 120000
index c71873859b..0000000000
--- a/Lang/S-BASIC/String-interpolation-included-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-interpolation-included-/S-BASIC
\ No newline at end of file
diff --git a/Lang/S-BASIC/Strip-whitespace-from-a-string-Top-and-tail b/Lang/S-BASIC/Strip-whitespace-from-a-string-Top-and-tail
deleted file mode 120000
index e52fe4d75d..0000000000
--- a/Lang/S-BASIC/Strip-whitespace-from-a-string-Top-and-tail
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strip-whitespace-from-a-string-Top-and-tail/S-BASIC
\ No newline at end of file
diff --git a/Lang/S-BASIC/Sum-of-a-series b/Lang/S-BASIC/Sum-of-a-series
deleted file mode 120000
index 1396d4d958..0000000000
--- a/Lang/S-BASIC/Sum-of-a-series
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sum-of-a-series/S-BASIC
\ No newline at end of file
diff --git a/Lang/S-BASIC/Variables b/Lang/S-BASIC/Variables
deleted file mode 120000
index 09187048df..0000000000
--- a/Lang/S-BASIC/Variables
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Variables/S-BASIC
\ No newline at end of file
diff --git a/Lang/S-BASIC/Zero-to-the-zero-power b/Lang/S-BASIC/Zero-to-the-zero-power
deleted file mode 120000
index e660e2efea..0000000000
--- a/Lang/S-BASIC/Zero-to-the-zero-power
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Zero-to-the-zero-power/S-BASIC
\ No newline at end of file
diff --git a/Lang/SETL/Arbitrary-precision-integers-included- b/Lang/SETL/Arbitrary-precision-integers-included-
deleted file mode 120000
index 36386fe719..0000000000
--- a/Lang/SETL/Arbitrary-precision-integers-included-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arbitrary-precision-integers-included-/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Arithmetic-derivative b/Lang/SETL/Arithmetic-derivative
deleted file mode 120000
index 56f987cef7..0000000000
--- a/Lang/SETL/Arithmetic-derivative
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-derivative/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Bell-numbers b/Lang/SETL/Bell-numbers
deleted file mode 120000
index 32b1473efe..0000000000
--- a/Lang/SETL/Bell-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bell-numbers/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Best-shuffle b/Lang/SETL/Best-shuffle
deleted file mode 120000
index 25f39d305e..0000000000
--- a/Lang/SETL/Best-shuffle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Best-shuffle/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Brilliant-numbers b/Lang/SETL/Brilliant-numbers
deleted file mode 120000
index 8c8cbe8558..0000000000
--- a/Lang/SETL/Brilliant-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Brilliant-numbers/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Calculating-the-value-of-e b/Lang/SETL/Calculating-the-value-of-e
deleted file mode 120000
index 751e6b54b5..0000000000
--- a/Lang/SETL/Calculating-the-value-of-e
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Calculating-the-value-of-e/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Damm-algorithm b/Lang/SETL/Damm-algorithm
deleted file mode 120000
index 8e8b8d193a..0000000000
--- a/Lang/SETL/Damm-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Damm-algorithm/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Doomsday-rule b/Lang/SETL/Doomsday-rule
deleted file mode 120000
index b9fa54eb7b..0000000000
--- a/Lang/SETL/Doomsday-rule
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Doomsday-rule/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Duffinian-numbers b/Lang/SETL/Duffinian-numbers
deleted file mode 120000
index 93694a20c6..0000000000
--- a/Lang/SETL/Duffinian-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Duffinian-numbers/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Fractran b/Lang/SETL/Fractran
deleted file mode 120000
index 20f759abeb..0000000000
--- a/Lang/SETL/Fractran
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fractran/SETL
\ No newline at end of file
diff --git a/Lang/SETL/General-FizzBuzz b/Lang/SETL/General-FizzBuzz
deleted file mode 120000
index c26977365f..0000000000
--- a/Lang/SETL/General-FizzBuzz
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/General-FizzBuzz/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Gray-code b/Lang/SETL/Gray-code
deleted file mode 120000
index a07e0b4e7b..0000000000
--- a/Lang/SETL/Gray-code
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Gray-code/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Horners-rule-for-polynomial-evaluation b/Lang/SETL/Horners-rule-for-polynomial-evaluation
deleted file mode 120000
index c30c2e1637..0000000000
--- a/Lang/SETL/Horners-rule-for-polynomial-evaluation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Horners-rule-for-polynomial-evaluation/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Largest-proper-divisor-of-n b/Lang/SETL/Largest-proper-divisor-of-n
deleted file mode 120000
index a82ec82f9e..0000000000
--- a/Lang/SETL/Largest-proper-divisor-of-n
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Largest-proper-divisor-of-n/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Levenshtein-distance b/Lang/SETL/Levenshtein-distance
deleted file mode 120000
index 5a234fcd60..0000000000
--- a/Lang/SETL/Levenshtein-distance
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Levenshtein-distance/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Loops-Do-while b/Lang/SETL/Loops-Do-while
deleted file mode 120000
index 8e0329f189..0000000000
--- a/Lang/SETL/Loops-Do-while
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Do-while/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Loops-Increment-loop-index-within-loop-body b/Lang/SETL/Loops-Increment-loop-index-within-loop-body
deleted file mode 120000
index 21b3e5953d..0000000000
--- a/Lang/SETL/Loops-Increment-loop-index-within-loop-body
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Increment-loop-index-within-loop-body/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Loops-Infinite b/Lang/SETL/Loops-Infinite
deleted file mode 120000
index 582c03e313..0000000000
--- a/Lang/SETL/Loops-Infinite
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Infinite/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Loops-N-plus-one-half b/Lang/SETL/Loops-N-plus-one-half
deleted file mode 120000
index 111820383b..0000000000
--- a/Lang/SETL/Loops-N-plus-one-half
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-N-plus-one-half/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Luhn-test-of-credit-card-numbers b/Lang/SETL/Luhn-test-of-credit-card-numbers
deleted file mode 120000
index d5c47a10ed..0000000000
--- a/Lang/SETL/Luhn-test-of-credit-card-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Luhn-test-of-credit-card-numbers/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Matrix-transposition b/Lang/SETL/Matrix-transposition
deleted file mode 120000
index 9a975d9213..0000000000
--- a/Lang/SETL/Matrix-transposition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Matrix-transposition/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Mayan-numerals b/Lang/SETL/Mayan-numerals
deleted file mode 120000
index fd50100876..0000000000
--- a/Lang/SETL/Mayan-numerals
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Mayan-numerals/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Modular-exponentiation b/Lang/SETL/Modular-exponentiation
deleted file mode 120000
index fcea778ebb..0000000000
--- a/Lang/SETL/Modular-exponentiation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Modular-exponentiation/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Monte-Carlo-methods b/Lang/SETL/Monte-Carlo-methods
deleted file mode 120000
index da6adaf82b..0000000000
--- a/Lang/SETL/Monte-Carlo-methods
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Monte-Carlo-methods/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Monty-Hall-problem b/Lang/SETL/Monty-Hall-problem
deleted file mode 120000
index 0740052c5e..0000000000
--- a/Lang/SETL/Monty-Hall-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Monty-Hall-problem/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Move-to-front-algorithm b/Lang/SETL/Move-to-front-algorithm
deleted file mode 120000
index 7a6129ce08..0000000000
--- a/Lang/SETL/Move-to-front-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Move-to-front-algorithm/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Nested-templated-data b/Lang/SETL/Nested-templated-data
deleted file mode 120000
index 58fd3f508a..0000000000
--- a/Lang/SETL/Nested-templated-data
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nested-templated-data/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Old-lady-swallowed-a-fly b/Lang/SETL/Old-lady-swallowed-a-fly
deleted file mode 120000
index 948ed47605..0000000000
--- a/Lang/SETL/Old-lady-swallowed-a-fly
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Old-lady-swallowed-a-fly/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Ordered-words b/Lang/SETL/Ordered-words
deleted file mode 120000
index efd35b209e..0000000000
--- a/Lang/SETL/Ordered-words
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ordered-words/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Partition-function-P b/Lang/SETL/Partition-function-P
deleted file mode 120000
index f47b3bd593..0000000000
--- a/Lang/SETL/Partition-function-P
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Partition-function-P/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Pisano-period b/Lang/SETL/Pisano-period
deleted file mode 120000
index 735d169166..0000000000
--- a/Lang/SETL/Pisano-period
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pisano-period/SETL
\ No newline at end of file
diff --git a/Lang/SETL/RPG-attributes-generator b/Lang/SETL/RPG-attributes-generator
deleted file mode 120000
index 86469ad6af..0000000000
--- a/Lang/SETL/RPG-attributes-generator
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/RPG-attributes-generator/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Radical-of-an-integer b/Lang/SETL/Radical-of-an-integer
deleted file mode 120000
index 7020a7b45c..0000000000
--- a/Lang/SETL/Radical-of-an-integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Radical-of-an-integer/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Range-consolidation b/Lang/SETL/Range-consolidation
deleted file mode 120000
index b24d504011..0000000000
--- a/Lang/SETL/Range-consolidation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Range-consolidation/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/SETL/Sequence-smallest-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/SETL/Sequence:-smallest-number-with-exactly-n-divisors
rename to Lang/SETL/Sequence-smallest-number-with-exactly-n-divisors
diff --git a/Lang/SETL/Show-ASCII-table b/Lang/SETL/Show-ASCII-table
deleted file mode 120000
index 5c4e8348ce..0000000000
--- a/Lang/SETL/Show-ASCII-table
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Show-ASCII-table/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Sleeping-Beauty-problem b/Lang/SETL/Sleeping-Beauty-problem
deleted file mode 120000
index cf1ef983c1..0000000000
--- a/Lang/SETL/Sleeping-Beauty-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sleeping-Beauty-problem/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Split-a-character-string-based-on-change-of-character b/Lang/SETL/Split-a-character-string-based-on-change-of-character
deleted file mode 120000
index ff9aa0b4dd..0000000000
--- a/Lang/SETL/Split-a-character-string-based-on-change-of-character
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Split-a-character-string-based-on-change-of-character/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Square-free-integers b/Lang/SETL/Square-free-integers
deleted file mode 120000
index 328ef78775..0000000000
--- a/Lang/SETL/Square-free-integers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Square-free-integers/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Strip-comments-from-a-string b/Lang/SETL/Strip-comments-from-a-string
deleted file mode 120000
index 6397b858bf..0000000000
--- a/Lang/SETL/Strip-comments-from-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strip-comments-from-a-string/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Super-d-numbers b/Lang/SETL/Super-d-numbers
deleted file mode 120000
index 0f77d4c38c..0000000000
--- a/Lang/SETL/Super-d-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Super-d-numbers/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Tokenize-a-string b/Lang/SETL/Tokenize-a-string
deleted file mode 120000
index bd55474aef..0000000000
--- a/Lang/SETL/Tokenize-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tokenize-a-string/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Vector-products b/Lang/SETL/Vector-products
deleted file mode 120000
index 936d45f3d5..0000000000
--- a/Lang/SETL/Vector-products
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Vector-products/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Word-ladder b/Lang/SETL/Word-ladder
deleted file mode 120000
index c8dccafa85..0000000000
--- a/Lang/SETL/Word-ladder
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Word-ladder/SETL
\ No newline at end of file
diff --git a/Lang/SETL/Zeckendorf-number-representation b/Lang/SETL/Zeckendorf-number-representation
deleted file mode 120000
index 536fc12840..0000000000
--- a/Lang/SETL/Zeckendorf-number-representation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Zeckendorf-number-representation/SETL
\ No newline at end of file
diff --git a/Lang/SIL/00-LANG.txt b/Lang/SIL/00-LANG.txt
deleted file mode 100644
index 2639d4af86..0000000000
--- a/Lang/SIL/00-LANG.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-{{stub}}{{language|sil}}
-SIL (Simple Interpreted Language) is designed for a nostalgic view of the past. It is simple and minimalist, but remains capable of universal computation. SIL used to be known as S.I.L.O.S.
-
-=== Todo ===
-[[Tasks not implemented in SIL]]
-
-==Links==
-*[https://github.com/rjhunjhunwala/SIL-S.I.L.O.S SIL on GitHub]
\ No newline at end of file
diff --git a/Lang/SIL/00-META.yaml b/Lang/SIL/00-META.yaml
deleted file mode 100644
index ac7ba9e679..0000000000
--- a/Lang/SIL/00-META.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-from: http://rosettacode.org/wiki/Category:SIL
diff --git a/Lang/SIL/Apply-a-callback-to-an-array b/Lang/SIL/Apply-a-callback-to-an-array
deleted file mode 120000
index c6346f2693..0000000000
--- a/Lang/SIL/Apply-a-callback-to-an-array
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Apply-a-callback-to-an-array/SIL
\ No newline at end of file
diff --git a/Lang/SIL/Arithmetic-Integer b/Lang/SIL/Arithmetic-Integer
deleted file mode 120000
index 0359dfe6a8..0000000000
--- a/Lang/SIL/Arithmetic-Integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-Integer/SIL
\ No newline at end of file
diff --git a/Lang/SIL/Function-definition b/Lang/SIL/Function-definition
deleted file mode 120000
index 1ed935d033..0000000000
--- a/Lang/SIL/Function-definition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Function-definition/SIL
\ No newline at end of file
diff --git a/Lang/SIL/Hello-world-Text b/Lang/SIL/Hello-world-Text
deleted file mode 120000
index 67a60a7cc4..0000000000
--- a/Lang/SIL/Hello-world-Text
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Text/SIL
\ No newline at end of file
diff --git a/Lang/SIL/Loops-Do-while b/Lang/SIL/Loops-Do-while
deleted file mode 120000
index 226040ebd7..0000000000
--- a/Lang/SIL/Loops-Do-while
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Do-while/SIL
\ No newline at end of file
diff --git a/Lang/SIL/Loops-For b/Lang/SIL/Loops-For
deleted file mode 120000
index f6976d2ec6..0000000000
--- a/Lang/SIL/Loops-For
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-For/SIL
\ No newline at end of file
diff --git a/Lang/SIL/Loops-Infinite b/Lang/SIL/Loops-Infinite
deleted file mode 120000
index 923cceed13..0000000000
--- a/Lang/SIL/Loops-Infinite
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Infinite/SIL
\ No newline at end of file
diff --git a/Lang/SIL/Loops-N-plus-one-half b/Lang/SIL/Loops-N-plus-one-half
deleted file mode 120000
index 8adce730cd..0000000000
--- a/Lang/SIL/Loops-N-plus-one-half
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-N-plus-one-half/SIL
\ No newline at end of file
diff --git a/Lang/SIL/Loops-While b/Lang/SIL/Loops-While
deleted file mode 120000
index 401dee2479..0000000000
--- a/Lang/SIL/Loops-While
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-While/SIL
\ No newline at end of file
diff --git a/Lang/SNOBOL4/Find-the-intersection-of-two-lines b/Lang/SNOBOL4/Find-the-intersection-of-two-lines
deleted file mode 120000
index b2451a2b39..0000000000
--- a/Lang/SNOBOL4/Find-the-intersection-of-two-lines
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Find-the-intersection-of-two-lines/SNOBOL4
\ No newline at end of file
diff --git a/Lang/SNOBOL4/Multiplication-tables b/Lang/SNOBOL4/Multiplication-tables
deleted file mode 120000
index 756425cd3a..0000000000
--- a/Lang/SNOBOL4/Multiplication-tables
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Multiplication-tables/SNOBOL4
\ No newline at end of file
diff --git a/Lang/SQL/Factorial b/Lang/SQL/Factorial
deleted file mode 120000
index c6f45973cd..0000000000
--- a/Lang/SQL/Factorial
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factorial/SQL
\ No newline at end of file
diff --git a/Lang/SapbotVM/00-LANG.txt b/Lang/SapbotVM/00-LANG.txt
deleted file mode 100644
index a83fdbd907..0000000000
--- a/Lang/SapbotVM/00-LANG.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-{{stub}}{{language|SapbotVM}}
-SapbotVM is easy-to-implement virtual machine architecture, made by Romarchive, that's not compilable, but only have interpreted Assembler. Also, this language have two formats: SVM1, SVM2. First, is based on JSON, second is custom.
-
-SapbotVM have limited support for monitor, no internet and plug and play devices. So only serial port.
\ No newline at end of file
diff --git a/Lang/SapbotVM/00-META.yaml b/Lang/SapbotVM/00-META.yaml
deleted file mode 100644
index f50043dbce..0000000000
--- a/Lang/SapbotVM/00-META.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-from: http://rosettacode.org/wiki/Category:SapbotVM
diff --git a/Lang/SapbotVM/Guess-the-number-With-feedback b/Lang/SapbotVM/Guess-the-number-With-feedback
deleted file mode 120000
index 0038e4427f..0000000000
--- a/Lang/SapbotVM/Guess-the-number-With-feedback
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Guess-the-number-With-feedback/SapbotVM
\ No newline at end of file
diff --git a/Lang/SapbotVM/Hello-world-Text b/Lang/SapbotVM/Hello-world-Text
deleted file mode 120000
index c695d3ee98..0000000000
--- a/Lang/SapbotVM/Hello-world-Text
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Text/SapbotVM
\ No newline at end of file
diff --git a/Lang/Scala/Additive-primes b/Lang/Scala/Additive-primes
deleted file mode 120000
index ba2692b54f..0000000000
--- a/Lang/Scala/Additive-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Additive-primes/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Boyer-Moore-string-search b/Lang/Scala/Boyer-Moore-string-search
deleted file mode 120000
index 58b64a7997..0000000000
--- a/Lang/Scala/Boyer-Moore-string-search
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Boyer-Moore-string-search/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Continued-fraction-Arithmetic-G-matrix-ng-continued-fraction-n- b/Lang/Scala/Continued-fraction-Arithmetic-G-matrix-ng-continued-fraction-n-
deleted file mode 120000
index 03b359aab4..0000000000
--- a/Lang/Scala/Continued-fraction-Arithmetic-G-matrix-ng-continued-fraction-n-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Continued-fraction-Arithmetic-G-matrix-ng-continued-fraction-n-/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Descending-primes b/Lang/Scala/Descending-primes
deleted file mode 120000
index 461c6bfefd..0000000000
--- a/Lang/Scala/Descending-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Descending-primes/Scala
\ No newline at end of file
diff --git a/Lang/Scala/ISBN13-check-digit b/Lang/Scala/ISBN13-check-digit
deleted file mode 120000
index b0dc1022b2..0000000000
--- a/Lang/Scala/ISBN13-check-digit
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/ISBN13-check-digit/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Miller-Rabin-primality-test b/Lang/Scala/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..28de5ef463
--- /dev/null
+++ b/Lang/Scala/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Parallel-calculations b/Lang/Scala/Parallel-calculations
deleted file mode 120000
index 525e6ca1ba..0000000000
--- a/Lang/Scala/Parallel-calculations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Parallel-calculations/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Quaternion-type b/Lang/Scala/Quaternion-type
new file mode 120000
index 0000000000..15f3eda4c9
--- /dev/null
+++ b/Lang/Scala/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Sorting-Algorithms-Circle-Sort b/Lang/Scala/Sorting-Algorithms-Circle-Sort
new file mode 120000
index 0000000000..5b9f057951
--- /dev/null
+++ b/Lang/Scala/Sorting-Algorithms-Circle-Sort
@@ -0,0 +1 @@
+../../Task/Sorting-Algorithms-Circle-Sort/Scala
\ No newline at end of file
diff --git a/Lang/Scala/Tonelli-Shanks-algorithm b/Lang/Scala/Tonelli-Shanks-algorithm
deleted file mode 120000
index a29f0a9b6f..0000000000
--- a/Lang/Scala/Tonelli-Shanks-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tonelli-Shanks-algorithm/Scala
\ No newline at end of file
diff --git a/Lang/Scala/UPC b/Lang/Scala/UPC
deleted file mode 120000
index bc3faec2ef..0000000000
--- a/Lang/Scala/UPC
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/UPC/Scala
\ No newline at end of file
diff --git a/Lang/Scheme/Cantor-set b/Lang/Scheme/Cantor-set
deleted file mode 120000
index a799296687..0000000000
--- a/Lang/Scheme/Cantor-set
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cantor-set/Scheme
\ No newline at end of file
diff --git a/Lang/Scheme/Cholesky-decomposition b/Lang/Scheme/Cholesky-decomposition
deleted file mode 120000
index ade9e83803..0000000000
--- a/Lang/Scheme/Cholesky-decomposition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cholesky-decomposition/Scheme
\ No newline at end of file
diff --git a/Lang/Scheme/Circular-primes b/Lang/Scheme/Circular-primes
deleted file mode 120000
index 9f4430f520..0000000000
--- a/Lang/Scheme/Circular-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Circular-primes/Scheme
\ No newline at end of file
diff --git a/Lang/Scheme/Compare-length-of-two-strings b/Lang/Scheme/Compare-length-of-two-strings
deleted file mode 120000
index d6e6006fa7..0000000000
--- a/Lang/Scheme/Compare-length-of-two-strings
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compare-length-of-two-strings/Scheme
\ No newline at end of file
diff --git a/Lang/Scheme/Conjugate-transpose b/Lang/Scheme/Conjugate-transpose
deleted file mode 120000
index ef50892884..0000000000
--- a/Lang/Scheme/Conjugate-transpose
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Conjugate-transpose/Scheme
\ No newline at end of file
diff --git a/Lang/Scheme/Egyptian-division b/Lang/Scheme/Egyptian-division
deleted file mode 120000
index ca3a36ae83..0000000000
--- a/Lang/Scheme/Egyptian-division
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Egyptian-division/Scheme
\ No newline at end of file
diff --git a/Lang/Scheme/Empty-program b/Lang/Scheme/Empty-program
new file mode 120000
index 0000000000..ee1ee662be
--- /dev/null
+++ b/Lang/Scheme/Empty-program
@@ -0,0 +1 @@
+../../Task/Empty-program/Scheme
\ No newline at end of file
diff --git a/Lang/Scheme/Find-the-missing-permutation b/Lang/Scheme/Find-the-missing-permutation
deleted file mode 120000
index 8f7e82d271..0000000000
--- a/Lang/Scheme/Find-the-missing-permutation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Find-the-missing-permutation/Scheme
\ No newline at end of file
diff --git a/Lang/Scheme/French-Republican-calendar b/Lang/Scheme/French-Republican-calendar
deleted file mode 120000
index f19a245ee9..0000000000
--- a/Lang/Scheme/French-Republican-calendar
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/French-Republican-calendar/Scheme
\ No newline at end of file
diff --git a/Lang/Scheme/Kronecker-product b/Lang/Scheme/Kronecker-product
deleted file mode 120000
index 58539a69b9..0000000000
--- a/Lang/Scheme/Kronecker-product
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Kronecker-product/Scheme
\ No newline at end of file
diff --git a/Lang/Scheme/Kronecker-product-based-fractals b/Lang/Scheme/Kronecker-product-based-fractals
deleted file mode 120000
index c27228f2e0..0000000000
--- a/Lang/Scheme/Kronecker-product-based-fractals
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Kronecker-product-based-fractals/Scheme
\ No newline at end of file
diff --git a/Lang/Scheme/Last-letter-first-letter b/Lang/Scheme/Last-letter-first-letter
deleted file mode 120000
index a5c5c31b6e..0000000000
--- a/Lang/Scheme/Last-letter-first-letter
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Last-letter-first-letter/Scheme
\ No newline at end of file
diff --git a/Lang/Scheme/Miller-Rabin-primality-test b/Lang/Scheme/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..644cc32269
--- /dev/null
+++ b/Lang/Scheme/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/Scheme
\ No newline at end of file
diff --git a/Lang/Scheme/Own-digits-power-sum b/Lang/Scheme/Own-digits-power-sum
deleted file mode 120000
index 0897a09d02..0000000000
--- a/Lang/Scheme/Own-digits-power-sum
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Own-digits-power-sum/Scheme
\ No newline at end of file
diff --git a/Lang/Scheme/Pick-random-element b/Lang/Scheme/Pick-random-element
deleted file mode 120000
index 5745ea287d..0000000000
--- a/Lang/Scheme/Pick-random-element
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pick-random-element/Scheme
\ No newline at end of file
diff --git a/Lang/Scheme/Pseudo-random-numbers-Splitmix64 b/Lang/Scheme/Pseudo-random-numbers-Splitmix64
deleted file mode 120000
index 730c9170c9..0000000000
--- a/Lang/Scheme/Pseudo-random-numbers-Splitmix64
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pseudo-random-numbers-Splitmix64/Scheme
\ No newline at end of file
diff --git a/Lang/Scheme/Runge-Kutta-method b/Lang/Scheme/Runge-Kutta-method
deleted file mode 120000
index 55b6f782a6..0000000000
--- a/Lang/Scheme/Runge-Kutta-method
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Runge-Kutta-method/Scheme
\ No newline at end of file
diff --git a/Lang/Scheme/Sierpinski-triangle-Graphical b/Lang/Scheme/Sierpinski-triangle-Graphical
deleted file mode 120000
index 13f8e60559..0000000000
--- a/Lang/Scheme/Sierpinski-triangle-Graphical
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sierpinski-triangle-Graphical/Scheme
\ No newline at end of file
diff --git a/Lang/Scheme/Tau-number b/Lang/Scheme/Tau-number
deleted file mode 120000
index fe45f01d25..0000000000
--- a/Lang/Scheme/Tau-number
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tau-number/Scheme
\ No newline at end of file
diff --git a/Lang/Scheme/Unicode-variable-names b/Lang/Scheme/Unicode-variable-names
deleted file mode 120000
index e5f49b3fae..0000000000
--- a/Lang/Scheme/Unicode-variable-names
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Unicode-variable-names/Scheme
\ No newline at end of file
diff --git a/Lang/Scheme/Word-frequency b/Lang/Scheme/Word-frequency
deleted file mode 120000
index 109edef2da..0000000000
--- a/Lang/Scheme/Word-frequency
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Word-frequency/Scheme
\ No newline at end of file
diff --git a/Lang/Scilab/Empty-program b/Lang/Scilab/Empty-program
new file mode 120000
index 0000000000..0cb8f21cc3
--- /dev/null
+++ b/Lang/Scilab/Empty-program
@@ -0,0 +1 @@
+../../Task/Empty-program/Scilab
\ No newline at end of file
diff --git a/Lang/Sed/00-LANG.txt b/Lang/Sed/00-LANG.txt
index 5d2641e2db..23390cea6c 100644
--- a/Lang/Sed/00-LANG.txt
+++ b/Lang/Sed/00-LANG.txt
@@ -6,7 +6,5 @@ a non interactive tool for text manipulation and filtering.
One implementation is [[GNU Sed]]
-See [[Tasks not implemented in sed]]
-
[[Category:Editor]]
[[Category:Utility]]
\ No newline at end of file
diff --git a/Lang/Seed7/Miller-Rabin-primality-test b/Lang/Seed7/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..298c8872f9
--- /dev/null
+++ b/Lang/Seed7/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/Seed7
\ No newline at end of file
diff --git a/Lang/Seed7/Quaternion-type b/Lang/Seed7/Quaternion-type
new file mode 120000
index 0000000000..d621b24ce0
--- /dev/null
+++ b/Lang/Seed7/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/Seed7
\ No newline at end of file
diff --git a/Lang/SequenceL/00-LANG.txt b/Lang/SequenceL/00-LANG.txt
index 5e5a95101f..3c3098bf74 100644
--- a/Lang/SequenceL/00-LANG.txt
+++ b/Lang/SequenceL/00-LANG.txt
@@ -3,7 +3,7 @@
|strength=strong
|safety=safe
|checking=static
-|site=
+|site=http://sequencel.com
|tags=sequencel
|hopl=no}}
{{language programming paradigm|Declarative}}
diff --git a/Lang/Set-lang/Empty-program b/Lang/Set-lang/Empty-program
new file mode 120000
index 0000000000..e6f84e5a85
--- /dev/null
+++ b/Lang/Set-lang/Empty-program
@@ -0,0 +1 @@
+../../Task/Empty-program/Set-lang
\ No newline at end of file
diff --git a/Lang/SheerPower-4GL/00-LANG.txt b/Lang/SheerPower-4GL/00-LANG.txt
index fc11170935..bd4b7049ad 100644
--- a/Lang/SheerPower-4GL/00-LANG.txt
+++ b/Lang/SheerPower-4GL/00-LANG.txt
@@ -1,6 +1,6 @@
{{stub}}
{{language
-|site=https://sheerpower.ttinet.com/index.html/
+|site=http://www.sp4gl.com/
}}
SheerPower 4GL is a Fourth-generation programming language developed by Touch Technologies, Inc.
@@ -16,7 +16,4 @@ SheerPower 4GL has several key features:
#There is also a Common Gateway Interface (CGI) interface built into SheerPower, along with many other built-in functions designed for high-performance and increased programmer productivity.
== See Also ==
-[[wp:SheerPower4GL|Wikipedia:SheerPower4GL]]
-
-==Todo==
-[[Tasks_not_implemented_in_SheerPower_4GL]]
\ No newline at end of file
+[[wp:SheerPower4GL|Wikipedia:SheerPower4GL]]
\ No newline at end of file
diff --git a/Lang/SheerPower-4GL/99-bottles-of-beer b/Lang/SheerPower-4GL/99-bottles-of-beer
deleted file mode 120000
index 71e6136936..0000000000
--- a/Lang/SheerPower-4GL/99-bottles-of-beer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/99-bottles-of-beer/SheerPower-4GL
\ No newline at end of file
diff --git a/Lang/SheerPower-4GL/Caesar-cipher b/Lang/SheerPower-4GL/Caesar-cipher
deleted file mode 120000
index b9d2a1d1d1..0000000000
--- a/Lang/SheerPower-4GL/Caesar-cipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Caesar-cipher/SheerPower-4GL
\ No newline at end of file
diff --git a/Lang/SheerPower-4GL/FizzBuzz b/Lang/SheerPower-4GL/FizzBuzz
deleted file mode 120000
index 339e329e2c..0000000000
--- a/Lang/SheerPower-4GL/FizzBuzz
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/FizzBuzz/SheerPower-4GL
\ No newline at end of file
diff --git a/Lang/SheerPower-4GL/Towers-of-Hanoi b/Lang/SheerPower-4GL/Towers-of-Hanoi
deleted file mode 120000
index a6bc7f6597..0000000000
--- a/Lang/SheerPower-4GL/Towers-of-Hanoi
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Towers-of-Hanoi/SheerPower-4GL
\ No newline at end of file
diff --git a/Lang/Sidef/00-LANG.txt b/Lang/Sidef/00-LANG.txt
index 03c8af9ab7..a63ddf8a52 100644
--- a/Lang/Sidef/00-LANG.txt
+++ b/Lang/Sidef/00-LANG.txt
@@ -18,11 +18,14 @@
[https://tio.run/#sidef Try Sidef on tio.run]
{{infobox_end}}
-Sidef is a modern, expressive programming language that combines the elegance of [[derived from::Ruby]], the versatility of [[derived from::Raku]], and the mathematical power of a built-in computer algebra system.
+Sidef is a modern, dynamic, object-oriented programming language, focusing on simplicity, readability and elegance, taking the best from languages like [[derived from::Ruby]], [[derived from::Go]], [[derived from::Raku]] and [[derived from::Julia]].
The language is mostly used as a research programming language.
-For more details, see: [https://github.com/trizen/sidef https://github.com/trizen/sidef]
+For more details, see:
+* Gitbook: [https://trizen.gitbook.io/sidef-lang/ https://trizen.gitbook.io/sidef-lang/]
+* Tutorial: [https://notabug.org/trizen/sidef/wiki https://notabug.org/trizen/sidef/wiki]
+* Development page: [https://github.com/trizen/sidef https://github.com/trizen/sidef]
==Todo==
diff --git a/Lang/Sidef/Arithmetic-derivative b/Lang/Sidef/Arithmetic-derivative
deleted file mode 120000
index bdcd1874e7..0000000000
--- a/Lang/Sidef/Arithmetic-derivative
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-derivative/Sidef
\ No newline at end of file
diff --git a/Lang/Sidef/Arithmetic-numbers b/Lang/Sidef/Arithmetic-numbers
deleted file mode 120000
index 672bca881d..0000000000
--- a/Lang/Sidef/Arithmetic-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-numbers/Sidef
\ No newline at end of file
diff --git a/Lang/Sidef/Binary-strings b/Lang/Sidef/Binary-strings
deleted file mode 120000
index 86bf141c80..0000000000
--- a/Lang/Sidef/Binary-strings
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Binary-strings/Sidef
\ No newline at end of file
diff --git a/Lang/Sidef/CRC-32 b/Lang/Sidef/CRC-32
deleted file mode 120000
index 7abbf21ee3..0000000000
--- a/Lang/Sidef/CRC-32
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/CRC-32/Sidef
\ No newline at end of file
diff --git a/Lang/Sidef/Empty-program b/Lang/Sidef/Empty-program
new file mode 120000
index 0000000000..c7465e3077
--- /dev/null
+++ b/Lang/Sidef/Empty-program
@@ -0,0 +1 @@
+../../Task/Empty-program/Sidef
\ No newline at end of file
diff --git a/Lang/Sidef/Increasing-gaps-between-consecutive-Niven-numbers b/Lang/Sidef/Increasing-gaps-between-consecutive-Niven-numbers
deleted file mode 120000
index b80a20c4f5..0000000000
--- a/Lang/Sidef/Increasing-gaps-between-consecutive-Niven-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Increasing-gaps-between-consecutive-Niven-numbers/Sidef
\ No newline at end of file
diff --git a/Lang/Sidef/Jaro-Winkler-distance b/Lang/Sidef/Jaro-Winkler-distance
deleted file mode 120000
index 48f92f7ccd..0000000000
--- a/Lang/Sidef/Jaro-Winkler-distance
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jaro-Winkler-distance/Sidef
\ No newline at end of file
diff --git a/Lang/Sidef/Jordan-P-lya-numbers b/Lang/Sidef/Jordan-P-lya-numbers
deleted file mode 120000
index b084543da1..0000000000
--- a/Lang/Sidef/Jordan-P-lya-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jordan-P-lya-numbers/Sidef
\ No newline at end of file
diff --git a/Lang/Sidef/Meissel-Mertens-constant b/Lang/Sidef/Meissel-Mertens-constant
new file mode 120000
index 0000000000..7eda1518da
--- /dev/null
+++ b/Lang/Sidef/Meissel-Mertens-constant
@@ -0,0 +1 @@
+../../Task/Meissel-Mertens-constant/Sidef
\ No newline at end of file
diff --git a/Lang/Sidef/Miller-Rabin-primality-test b/Lang/Sidef/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..5bb5523a0e
--- /dev/null
+++ b/Lang/Sidef/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/Sidef
\ No newline at end of file
diff --git a/Lang/Sidef/Pell-numbers b/Lang/Sidef/Pell-numbers
deleted file mode 120000
index af14680327..0000000000
--- a/Lang/Sidef/Pell-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pell-numbers/Sidef
\ No newline at end of file
diff --git a/Lang/Sidef/Prime-numbers-whose-neighboring-pairs-are-tetraprimes b/Lang/Sidef/Prime-numbers-whose-neighboring-pairs-are-tetraprimes
deleted file mode 120000
index 1f840ef9e4..0000000000
--- a/Lang/Sidef/Prime-numbers-whose-neighboring-pairs-are-tetraprimes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Prime-numbers-whose-neighboring-pairs-are-tetraprimes/Sidef
\ No newline at end of file
diff --git a/Lang/Sidef/Quaternion-type b/Lang/Sidef/Quaternion-type
new file mode 120000
index 0000000000..5e28a5e41d
--- /dev/null
+++ b/Lang/Sidef/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/Sidef
\ No newline at end of file
diff --git a/Lang/Sidef/Sequence:-nth-number-with-exactly-n-divisors b/Lang/Sidef/Sequence-nth-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/Sidef/Sequence:-nth-number-with-exactly-n-divisors
rename to Lang/Sidef/Sequence-nth-number-with-exactly-n-divisors
diff --git a/Lang/Sidef/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors b/Lang/Sidef/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
similarity index 100%
rename from Lang/Sidef/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors
rename to Lang/Sidef/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
diff --git a/Lang/Sidef/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/Sidef/Sequence-smallest-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/Sidef/Sequence:-smallest-number-with-exactly-n-divisors
rename to Lang/Sidef/Sequence-smallest-number-with-exactly-n-divisors
diff --git a/Lang/Sidef/Smarandache-Wellin-primes b/Lang/Sidef/Smarandache-Wellin-primes
deleted file mode 120000
index 056e5bc295..0000000000
--- a/Lang/Sidef/Smarandache-Wellin-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Smarandache-Wellin-primes/Sidef
\ No newline at end of file
diff --git a/Lang/Sidef/Sorting-Algorithms-Circle-Sort b/Lang/Sidef/Sorting-Algorithms-Circle-Sort
new file mode 120000
index 0000000000..e866329cad
--- /dev/null
+++ b/Lang/Sidef/Sorting-Algorithms-Circle-Sort
@@ -0,0 +1 @@
+../../Task/Sorting-Algorithms-Circle-Sort/Sidef
\ No newline at end of file
diff --git a/Lang/Sidef/Wagstaff-primes b/Lang/Sidef/Wagstaff-primes
deleted file mode 120000
index d0053cfbed..0000000000
--- a/Lang/Sidef/Wagstaff-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Wagstaff-primes/Sidef
\ No newline at end of file
diff --git a/Lang/SimpleCode/Empty-program b/Lang/SimpleCode/Empty-program
new file mode 120000
index 0000000000..dc55c70d09
--- /dev/null
+++ b/Lang/SimpleCode/Empty-program
@@ -0,0 +1 @@
+../../Task/Empty-program/SimpleCode
\ No newline at end of file
diff --git a/Lang/Slate/Empty-program b/Lang/Slate/Empty-program
new file mode 120000
index 0000000000..cea8e90b74
--- /dev/null
+++ b/Lang/Slate/Empty-program
@@ -0,0 +1 @@
+../../Task/Empty-program/Slate
\ No newline at end of file
diff --git a/Lang/Smalltalk/Miller-Rabin-primality-test b/Lang/Smalltalk/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..e3a303744d
--- /dev/null
+++ b/Lang/Smalltalk/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/Smalltalk
\ No newline at end of file
diff --git a/Lang/SmileBASIC/Execute-Brain- b/Lang/SmileBASIC/Execute-Brain-
deleted file mode 120000
index f5b6561ddd..0000000000
--- a/Lang/SmileBASIC/Execute-Brain-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Execute-Brain-/SmileBASIC
\ No newline at end of file
diff --git a/Lang/Sparkling/Empty-program b/Lang/Sparkling/Empty-program
new file mode 120000
index 0000000000..519287810d
--- /dev/null
+++ b/Lang/Sparkling/Empty-program
@@ -0,0 +1 @@
+../../Task/Empty-program/Sparkling
\ No newline at end of file
diff --git a/Lang/Standard-ML/Averages-Mean-angle b/Lang/Standard-ML/Averages-Mean-angle
deleted file mode 120000
index 38ef0bd393..0000000000
--- a/Lang/Standard-ML/Averages-Mean-angle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Mean-angle/Standard-ML
\ No newline at end of file
diff --git a/Lang/Standard-ML/Averages-Simple-moving-average b/Lang/Standard-ML/Averages-Simple-moving-average
deleted file mode 120000
index 6dd59a5e2f..0000000000
--- a/Lang/Standard-ML/Averages-Simple-moving-average
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Simple-moving-average/Standard-ML
\ No newline at end of file
diff --git a/Lang/Standard-ML/Box-the-compass b/Lang/Standard-ML/Box-the-compass
deleted file mode 120000
index bdb5283192..0000000000
--- a/Lang/Standard-ML/Box-the-compass
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Box-the-compass/Standard-ML
\ No newline at end of file
diff --git a/Lang/Standard-ML/Call-a-foreign-language-function b/Lang/Standard-ML/Call-a-foreign-language-function
deleted file mode 120000
index 1f398efa97..0000000000
--- a/Lang/Standard-ML/Call-a-foreign-language-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Call-a-foreign-language-function/Standard-ML
\ No newline at end of file
diff --git a/Lang/Standard-ML/Knuth-shuffle b/Lang/Standard-ML/Knuth-shuffle
deleted file mode 120000
index da7fa35b79..0000000000
--- a/Lang/Standard-ML/Knuth-shuffle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Knuth-shuffle/Standard-ML
\ No newline at end of file
diff --git a/Lang/Standard-ML/Last-Friday-of-each-month b/Lang/Standard-ML/Last-Friday-of-each-month
deleted file mode 120000
index 39c2756109..0000000000
--- a/Lang/Standard-ML/Last-Friday-of-each-month
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Last-Friday-of-each-month/Standard-ML
\ No newline at end of file
diff --git a/Lang/Standard-ML/Miller-Rabin-primality-test b/Lang/Standard-ML/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..ba4b002043
--- /dev/null
+++ b/Lang/Standard-ML/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/Standard-ML
\ No newline at end of file
diff --git a/Lang/Standard-ML/Pi b/Lang/Standard-ML/Pi
deleted file mode 120000
index f806ddbcae..0000000000
--- a/Lang/Standard-ML/Pi
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pi/Standard-ML
\ No newline at end of file
diff --git a/Lang/Standard-ML/Pseudo-random-numbers-Splitmix64 b/Lang/Standard-ML/Pseudo-random-numbers-Splitmix64
deleted file mode 120000
index bce7d31edd..0000000000
--- a/Lang/Standard-ML/Pseudo-random-numbers-Splitmix64
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pseudo-random-numbers-Splitmix64/Standard-ML
\ No newline at end of file
diff --git a/Lang/Standard-ML/URL-encoding b/Lang/Standard-ML/URL-encoding
deleted file mode 120000
index f4e1b1b4e1..0000000000
--- a/Lang/Standard-ML/URL-encoding
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/URL-encoding/Standard-ML
\ No newline at end of file
diff --git a/Lang/Stax/00-LANG.txt b/Lang/Stax/00-LANG.txt
index 9436dc0940..daeb2cc2d2 100644
--- a/Lang/Stax/00-LANG.txt
+++ b/Lang/Stax/00-LANG.txt
@@ -1,2 +1 @@
-[https://github.com/tomtheisen/stax Github]
-{{language|site=https://staxlang.xyz/}}
\ No newline at end of file
+{{stub}}{{language|Stax}}
\ No newline at end of file
diff --git a/Lang/SuperCollider/00-LANG.txt b/Lang/SuperCollider/00-LANG.txt
index d6b538fcd2..f804a4a144 100644
--- a/Lang/SuperCollider/00-LANG.txt
+++ b/Lang/SuperCollider/00-LANG.txt
@@ -9,130 +9,4 @@ The programming language was originally devised by James McCartney and has been
[https://github.com/supercollider/supercollider SuperCollider at GitHub]
-[http://supercollider.github.io/ SuperCollider Homepage]
-
-
-
-Some additional notes on SuperCollider 2024-06-21
-
-From the SuperCollider GitHub website: https://supercollider.github.io/ :
-Quote:
-A PLATFORM FOR AUDIO SYNTHESIS AND ALGORITHMIC COMPOSITION,
- USED BY MUSICIANS, ARTISTS AND RESEARCHERS WORKING WITH SOUND.
-
-FREE AND OPEN SOURCE SOFTWARE FOR WINDOWS, MACOS AND LINUX.
-
-SuperCollider features three major components:
-scsynth – A real-time audio server
-sclang – An interpreted programming language
-scide – An editor for sclang with an integrated help system
-End-Quote.
-
-Some people try to squeeze a musical composition into 140 characters: (but just for the challenge):
-Don't judge SuperCollider or the language by these examples, they are just for fun.
-
-f={|t|Pbind(\note,Pseq([-1,1,6,8,9,1,-1,8,6,1,9,8]+5,319),\dur,t)};Ptpar([0,f.(1/6),12,f.(0.1672)],1).play
-
-Listen to the results here: https://supercollider.github.io/assets/audio/sc-140/06_batuhanbozkurt_celesteh.mp3
-You can see/hear more at: https://supercollider.github.io/sc-140.html
-
-
-As of today (2024-06-21) the current version of SuperCollider for all supported platforms is: 3.13.0
-
-While SClang (SuperCollider language) and its companion components are designed for the creation of sounds and music, the language is a full featured programming language.
-
-The language is OO, to the extent that everything is an object, even numbers.
-In this snippet: 123 + 456 the 123 is an object, + is a method on the class of that object, and 456 is a parameter to that method.
-Even though + is a method the syntax of the addition is what you would typically expect.
-
-The print function in SClang is a method called postln, which first appears in the root of the class tree: Object.
-
-Some examples, showing two possible call formats:
-
-postln("Hello World"); // prints: Hello World
-"Hello World".postln; // prints: Hello World
-postln(1001); // prints: 1001
-1001.postln; // prints: 1001
-postln(123 + 456); // prints: 579
-(123 + 456).postln; // prints: 579
-
-
-The method postln, adds a new-line after printing the text, if you don't want the new-line, use: post.
-
-
-SuperCollider from the command line (not used much)
-
-SuperCollider scripts are stored in files with an extension of .scd.
-These are typically referred to as supercollider documents, hence .scd.
-
-99.99% of the time, you will execute code from within the IDE (scide).
-
-It is possible but not typical, to run a script from the command line, for example:
- > sclang.exe ABC_problem.scd
-This will output the expected results.
-See code at: https://rosettacode.org/wiki/ABC_problem#SuperCollider
-However, before executing your code, sclang will compile its class library, and you will see all of the messages about the compilation, before you see the output from your code.
-
-Also, once your code is finished, you will be stuck as sclang is still waiting for more input from a file, not the keyboard. The second problem can be solved by adding exit(0); to the end of your script (.scd file);
-
-SuperCollider comes packaged with QT, and has classes that represent GUI objects, for example:
- > sclang.exe Barnsley_fern.scd
-Will open a window and draw the Barnsley Fern.
-See code at: https://rosettacode.org/wiki/Barnsley_fern#SuperCollider
-You will have to use Ctrl-c to kill the sclang process, you cannot add exit(0) to you script as the exit would happen before the GUI was fully created.
-
-It is theoretically possible to create a thread within your script which waits until all work is done and then for it to execute exit(0); but you are just giving yourself extra work.
-
-You can also run sclang without giving it a file, then it will accept input from the keyboard.
- > sclang.exe
-You will get this prompt sc3> now you can type in ONE LINE OF CODE.
-For example, the following line of code has three statements, the end result is printing the sum of the two numbers:
-sc3> var v1=123; var v2=456; postf("v1+v2=%\n", v1+v2);
-v1+v2=579
--> v1+v2=579
-
-The line with the arrow: -> v1+v2=579, is sclang printing the value of the last expression executed
-
-Summary: You can start sclang from the command line and type in some code, or you could give sclang a script to run, both will work, but it is much more productive to use scide.
-Using sclang from the command line is like playing your guitar with winter gloves on, you could do it, but why make life difficult?
-
-If you have composed (written code for) a long piece of music, and now you want to execute the code from the command line, yes, you can do it, but it isn't going to sound any different than it would if you execute the code from within scide.
-Also, scide offers the ability to 'live code', i.e. execute some code to make some music, and change the code as the music is playing, so the music evolves as you change the code.
-
-
-SuperCollider from the IDE
-Start scide, or 'open' a SuperCollider Document (*.scd), if scide is 'associated' with that file type.
-See: https://doc.sccode.org/Guides/SCIde.html
-After you start scide, it starts sclang, which compiles the SuperCollider classes.
-Now you can start coding.
-
-How to execute code (borrowed from the page at the URL above)
-
-To evaluate code, use one of the following keyboard commands:
-Ctrl+Return
-Most used, "smart" code evaluation:
-Normally, the current line will be evaluated (where the cursor is).
-If the cursor is within a region, the entire region will be evaluated. See below for explanation of regions.
-If some code is selected, the selection will be evaluated.
-
-Shift+Return
-
-Evaluates either the current line, or the selection (if any). Use this to evaluate a single line within a region without the need to select it.
-Regions make it quick and easy to evaluate larger portions of code. A region is surrounded by parentheses; to be interpreted as a region, the parenthesis must each be the only character on a line.
-
-(
-Pbind(
- \degree, Pseries(0, 1, 8),
- \dur, 0.25
-).play;
-)
-
-If the cursor is anywhere between the outermost parentheses, pressing Ctrl+Return will automatically evaluate the entire contents within the parentheses, starting with Pbind and ending with play;.
-
-To quickly evaluate a portion of code, you can also double-click on any bracket (round, squared, or curly), which will select everything between this and the other matching bracket, so you can quickly evaluate it.
-
-To stop any running code, use the Ctrl+. shortcut (Ctrl+Period).
-This will stop all the code scheduled on the clocks, as well as all the sound processes on the audio server.
-
-
-... more coming soon ...
\ No newline at end of file
+[http://supercollider.github.io/ SuperCollider Homepage]
\ No newline at end of file
diff --git a/Lang/SuperCollider/Averages-Pythagorean-means b/Lang/SuperCollider/Averages-Pythagorean-means
deleted file mode 120000
index 9ee9ff6fef..0000000000
--- a/Lang/SuperCollider/Averages-Pythagorean-means
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Pythagorean-means/SuperCollider
\ No newline at end of file
diff --git a/Lang/SuperCollider/Catalan-numbers b/Lang/SuperCollider/Catalan-numbers
deleted file mode 120000
index 3ee9240cf0..0000000000
--- a/Lang/SuperCollider/Catalan-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Catalan-numbers/SuperCollider
\ No newline at end of file
diff --git a/Lang/SuperCollider/Golden-ratio-Convergence b/Lang/SuperCollider/Golden-ratio-Convergence
deleted file mode 120000
index 77807cac46..0000000000
--- a/Lang/SuperCollider/Golden-ratio-Convergence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Golden-ratio-Convergence/SuperCollider
\ No newline at end of file
diff --git a/Lang/SuperCollider/Iterated-digits-squaring b/Lang/SuperCollider/Iterated-digits-squaring
deleted file mode 120000
index 197266fc01..0000000000
--- a/Lang/SuperCollider/Iterated-digits-squaring
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Iterated-digits-squaring/SuperCollider
\ No newline at end of file
diff --git a/Lang/SuperCollider/Multiplication-tables b/Lang/SuperCollider/Multiplication-tables
deleted file mode 120000
index f5418ea2b2..0000000000
--- a/Lang/SuperCollider/Multiplication-tables
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Multiplication-tables/SuperCollider
\ No newline at end of file
diff --git a/Lang/SuperCollider/Semordnilap b/Lang/SuperCollider/Semordnilap
new file mode 120000
index 0000000000..ace051dba8
--- /dev/null
+++ b/Lang/SuperCollider/Semordnilap
@@ -0,0 +1 @@
+../../Task/Semordnilap/SuperCollider
\ No newline at end of file
diff --git a/Lang/SuperCollider/Vampire-number b/Lang/SuperCollider/Vampire-number
deleted file mode 120000
index 96124ca653..0000000000
--- a/Lang/SuperCollider/Vampire-number
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Vampire-number/SuperCollider
\ No newline at end of file
diff --git a/Lang/Swift/AVL-tree b/Lang/Swift/AVL-tree
deleted file mode 120000
index ff46aae38e..0000000000
--- a/Lang/Swift/AVL-tree
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/AVL-tree/Swift
\ No newline at end of file
diff --git a/Lang/Swift/Bioinformatics-base-count b/Lang/Swift/Bioinformatics-base-count
new file mode 120000
index 0000000000..c497b7a9fe
--- /dev/null
+++ b/Lang/Swift/Bioinformatics-base-count
@@ -0,0 +1 @@
+../../Task/Bioinformatics-base-count/Swift
\ No newline at end of file
diff --git a/Lang/Swift/Boyer-Moore-string-search b/Lang/Swift/Boyer-Moore-string-search
deleted file mode 120000
index d0d21c21e5..0000000000
--- a/Lang/Swift/Boyer-Moore-string-search
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Boyer-Moore-string-search/Swift
\ No newline at end of file
diff --git a/Lang/Swift/Chaocipher b/Lang/Swift/Chaocipher
deleted file mode 120000
index 6e9ab31392..0000000000
--- a/Lang/Swift/Chaocipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Chaocipher/Swift
\ No newline at end of file
diff --git a/Lang/Swift/Compare-length-of-two-strings b/Lang/Swift/Compare-length-of-two-strings
deleted file mode 120000
index d53f307b7e..0000000000
--- a/Lang/Swift/Compare-length-of-two-strings
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compare-length-of-two-strings/Swift
\ No newline at end of file
diff --git a/Lang/Swift/Continued-fraction-Arithmetic-G-matrix-ng-continued-fraction-n- b/Lang/Swift/Continued-fraction-Arithmetic-G-matrix-ng-continued-fraction-n-
deleted file mode 120000
index bfa2341e33..0000000000
--- a/Lang/Swift/Continued-fraction-Arithmetic-G-matrix-ng-continued-fraction-n-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Continued-fraction-Arithmetic-G-matrix-ng-continued-fraction-n-/Swift
\ No newline at end of file
diff --git a/Lang/Swift/De-Bruijn-sequences b/Lang/Swift/De-Bruijn-sequences
deleted file mode 120000
index 0fbdf1e9f8..0000000000
--- a/Lang/Swift/De-Bruijn-sequences
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/De-Bruijn-sequences/Swift
\ No newline at end of file
diff --git a/Lang/Swift/Empty-program b/Lang/Swift/Empty-program
new file mode 120000
index 0000000000..2c1baaa481
--- /dev/null
+++ b/Lang/Swift/Empty-program
@@ -0,0 +1 @@
+../../Task/Empty-program/Swift
\ No newline at end of file
diff --git a/Lang/Swift/Floyd-Warshall-algorithm b/Lang/Swift/Floyd-Warshall-algorithm
deleted file mode 120000
index d1366dce22..0000000000
--- a/Lang/Swift/Floyd-Warshall-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Floyd-Warshall-algorithm/Swift
\ No newline at end of file
diff --git a/Lang/Swift/K-d-tree b/Lang/Swift/K-d-tree
deleted file mode 120000
index a4758e806b..0000000000
--- a/Lang/Swift/K-d-tree
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/K-d-tree/Swift
\ No newline at end of file
diff --git a/Lang/Swift/M-bius-function b/Lang/Swift/M-bius-function
deleted file mode 120000
index cd32d72e63..0000000000
--- a/Lang/Swift/M-bius-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/M-bius-function/Swift
\ No newline at end of file
diff --git a/Lang/Swift/Miller-Rabin-primality-test b/Lang/Swift/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..08a41b9961
--- /dev/null
+++ b/Lang/Swift/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/Swift
\ No newline at end of file
diff --git a/Lang/Swift/Parse-an-IP-Address b/Lang/Swift/Parse-an-IP-Address
deleted file mode 120000
index b157f3f9a2..0000000000
--- a/Lang/Swift/Parse-an-IP-Address
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Parse-an-IP-Address/Swift
\ No newline at end of file
diff --git a/Lang/Swift/Pseudo-random-numbers-Splitmix64 b/Lang/Swift/Pseudo-random-numbers-Splitmix64
deleted file mode 120000
index 7f3d66c35a..0000000000
--- a/Lang/Swift/Pseudo-random-numbers-Splitmix64
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pseudo-random-numbers-Splitmix64/Swift
\ No newline at end of file
diff --git a/Lang/Swift/Quaternion-type b/Lang/Swift/Quaternion-type
new file mode 120000
index 0000000000..d74f88c4be
--- /dev/null
+++ b/Lang/Swift/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/Swift
\ No newline at end of file
diff --git a/Lang/Swift/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors b/Lang/Swift/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
similarity index 100%
rename from Lang/Swift/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors
rename to Lang/Swift/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
diff --git a/Lang/Swift/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/Swift/Sequence-smallest-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/Swift/Sequence:-smallest-number-with-exactly-n-divisors
rename to Lang/Swift/Sequence-smallest-number-with-exactly-n-divisors
diff --git a/Lang/Swift/Sorting-Algorithms-Circle-Sort b/Lang/Swift/Sorting-Algorithms-Circle-Sort
new file mode 120000
index 0000000000..367310fdad
--- /dev/null
+++ b/Lang/Swift/Sorting-Algorithms-Circle-Sort
@@ -0,0 +1 @@
+../../Task/Sorting-Algorithms-Circle-Sort/Swift
\ No newline at end of file
diff --git a/Lang/Swift/Tonelli-Shanks-algorithm b/Lang/Swift/Tonelli-Shanks-algorithm
deleted file mode 120000
index 9e28b1de2a..0000000000
--- a/Lang/Swift/Tonelli-Shanks-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tonelli-Shanks-algorithm/Swift
\ No newline at end of file
diff --git a/Lang/Symsyn/Empty-program b/Lang/Symsyn/Empty-program
new file mode 120000
index 0000000000..73cbdf1eb6
--- /dev/null
+++ b/Lang/Symsyn/Empty-program
@@ -0,0 +1 @@
+../../Task/Empty-program/Symsyn
\ No newline at end of file
diff --git a/Lang/TAV/00-LANG.txt b/Lang/TAV/00-LANG.txt
deleted file mode 100644
index bb9d8890a2..0000000000
--- a/Lang/TAV/00-LANG.txt
+++ /dev/null
@@ -1,46 +0,0 @@
-{{language|TAV
-|site=https://tavpl.de
-|untyped=yes
-|exec=machine
-|gc=no
-|parampass=reference
-|checking=dynamic
-|safety=safe
-}}
-{{language programming paradigm|Procedural}}
-{{CompileOnline}}
-
-'''TAV''' is the '''terse and verbose'''
-language that borrows from [[Python]], Stage2, [[Genie]] and more.
-
-Its most outstanding feature is the use of templates for function calls instead of the
-traditional function_name(parameter, parameter, ...) form.
-Matched parenthesis are consequently rarely necessary.
-
-Summary of important points:
-
-* C precompiler, should work on any system with a reasonable C compiler
-* Block structuring by indentation, like in Python; line oriented
-* No keywords in the core language, only symbols (i.e. bigraphs)
-* Variables are of any kind (type) dynamically; no declarations necessary
-* Function definition and calls by word sequences with interspersed parameters, often no parenthesis needed
-* Maps (dictionaries) with all kinds of keys (except floating-point numbers)
-* Rows (arrays) if the keys are dense integers, dynamically expanding
-* Arbitrary precision integer numbers
-* Dynamic Unicode strings
-* Fields for extra data in rows and maps
-* Attributes for information about an item
-* Fault items for reliable error handling
-* Reference counting avoids unsolicited delays for garbage-collection
-* Basic support for object-oriented programming (no inheritance)
-* Discretionary type system specified, but not yet tested
-* Publication syntax with common English keywords instead of symbols
-* Bindings to SDL, Cairo and GTK (proof-of-concept level)
-
-Many examples can be run via copy and paste in the Playground.
-
-Because there are no keywords and rarely nested parenthesis (of any kind),
-syntax highlighting is not used.
-
-==Links==
-*[[https://tavpl.de/TAV-Online TAV Online Playground]]
\ No newline at end of file
diff --git a/Lang/TAV/00-META.yaml b/Lang/TAV/00-META.yaml
deleted file mode 100644
index 94650f22a2..0000000000
--- a/Lang/TAV/00-META.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-from: http://rosettacode.org/wiki/Category:TAV
diff --git a/Lang/TAV/A+B b/Lang/TAV/A+B
deleted file mode 120000
index a5e97665e3..0000000000
--- a/Lang/TAV/A+B
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/A+B/TAV
\ No newline at end of file
diff --git a/Lang/TAV/Ackermann-function b/Lang/TAV/Ackermann-function
deleted file mode 120000
index 237de07217..0000000000
--- a/Lang/TAV/Ackermann-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ackermann-function/TAV
\ No newline at end of file
diff --git a/Lang/TAV/Anagrams b/Lang/TAV/Anagrams
deleted file mode 120000
index 335a62bd1c..0000000000
--- a/Lang/TAV/Anagrams
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Anagrams/TAV
\ No newline at end of file
diff --git a/Lang/TAV/Arithmetic-Integer b/Lang/TAV/Arithmetic-Integer
deleted file mode 120000
index b9d994e37f..0000000000
--- a/Lang/TAV/Arithmetic-Integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-Integer/TAV
\ No newline at end of file
diff --git a/Lang/TAV/Array-concatenation b/Lang/TAV/Array-concatenation
deleted file mode 120000
index a1b0d9260d..0000000000
--- a/Lang/TAV/Array-concatenation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Array-concatenation/TAV
\ No newline at end of file
diff --git a/Lang/TAV/Array-length b/Lang/TAV/Array-length
deleted file mode 120000
index 0d849f41e8..0000000000
--- a/Lang/TAV/Array-length
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Array-length/TAV
\ No newline at end of file
diff --git a/Lang/TAV/Ascending-primes b/Lang/TAV/Ascending-primes
deleted file mode 120000
index b4add5cfb9..0000000000
--- a/Lang/TAV/Ascending-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ascending-primes/TAV
\ No newline at end of file
diff --git a/Lang/TAV/Associative-array-Iteration b/Lang/TAV/Associative-array-Iteration
deleted file mode 120000
index 48bdb805ad..0000000000
--- a/Lang/TAV/Associative-array-Iteration
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Associative-array-Iteration/TAV
\ No newline at end of file
diff --git a/Lang/TAV/Averages-Root-mean-square b/Lang/TAV/Averages-Root-mean-square
deleted file mode 120000
index 75f73fbdb8..0000000000
--- a/Lang/TAV/Averages-Root-mean-square
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Root-mean-square/TAV
\ No newline at end of file
diff --git a/Lang/TAV/Babbage-problem b/Lang/TAV/Babbage-problem
deleted file mode 120000
index 141507242e..0000000000
--- a/Lang/TAV/Babbage-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Babbage-problem/TAV
\ No newline at end of file
diff --git a/Lang/TAV/Bernoulli-numbers b/Lang/TAV/Bernoulli-numbers
deleted file mode 120000
index 164f4e8e6c..0000000000
--- a/Lang/TAV/Bernoulli-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bernoulli-numbers/TAV
\ No newline at end of file
diff --git a/Lang/TAV/Character-codes b/Lang/TAV/Character-codes
deleted file mode 120000
index 46e37f6e83..0000000000
--- a/Lang/TAV/Character-codes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Character-codes/TAV
\ No newline at end of file
diff --git a/Lang/TAV/Command-line-arguments b/Lang/TAV/Command-line-arguments
deleted file mode 120000
index 72fc191937..0000000000
--- a/Lang/TAV/Command-line-arguments
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Command-line-arguments/TAV
\ No newline at end of file
diff --git a/Lang/TAV/Conditional-structures b/Lang/TAV/Conditional-structures
deleted file mode 120000
index bf797da6e6..0000000000
--- a/Lang/TAV/Conditional-structures
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Conditional-structures/TAV
\ No newline at end of file
diff --git a/Lang/TAV/Convert-decimal-number-to-rational b/Lang/TAV/Convert-decimal-number-to-rational
deleted file mode 120000
index c7b635149b..0000000000
--- a/Lang/TAV/Convert-decimal-number-to-rational
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Convert-decimal-number-to-rational/TAV
\ No newline at end of file
diff --git a/Lang/TAV/Copy-a-string b/Lang/TAV/Copy-a-string
deleted file mode 120000
index 3ca111af72..0000000000
--- a/Lang/TAV/Copy-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Copy-a-string/TAV
\ No newline at end of file
diff --git a/Lang/TAV/Create-a-two-dimensional-array-at-runtime b/Lang/TAV/Create-a-two-dimensional-array-at-runtime
deleted file mode 120000
index ec0fae01dd..0000000000
--- a/Lang/TAV/Create-a-two-dimensional-array-at-runtime
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Create-a-two-dimensional-array-at-runtime/TAV
\ No newline at end of file
diff --git a/Lang/TAV/Empty-string b/Lang/TAV/Empty-string
deleted file mode 120000
index c001916e31..0000000000
--- a/Lang/TAV/Empty-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Empty-string/TAV
\ No newline at end of file
diff --git a/Lang/TAV/Factorial b/Lang/TAV/Factorial
deleted file mode 120000
index 005136367e..0000000000
--- a/Lang/TAV/Factorial
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factorial/TAV
\ No newline at end of file
diff --git a/Lang/TAV/Fibonacci-sequence b/Lang/TAV/Fibonacci-sequence
deleted file mode 120000
index e65f13e72b..0000000000
--- a/Lang/TAV/Fibonacci-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fibonacci-sequence/TAV
\ No newline at end of file
diff --git a/Lang/TAV/Formatted-numeric-output b/Lang/TAV/Formatted-numeric-output
deleted file mode 120000
index efbc60523a..0000000000
--- a/Lang/TAV/Formatted-numeric-output
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Formatted-numeric-output/TAV
\ No newline at end of file
diff --git a/Lang/TAV/Greatest-element-of-a-list b/Lang/TAV/Greatest-element-of-a-list
deleted file mode 120000
index b4f81674a0..0000000000
--- a/Lang/TAV/Greatest-element-of-a-list
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Greatest-element-of-a-list/TAV
\ No newline at end of file
diff --git a/Lang/TAV/Guess-the-number-With-feedback b/Lang/TAV/Guess-the-number-With-feedback
deleted file mode 120000
index 5779e4d532..0000000000
--- a/Lang/TAV/Guess-the-number-With-feedback
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Guess-the-number-With-feedback/TAV
\ No newline at end of file
diff --git a/Lang/TAV/HTTPS b/Lang/TAV/HTTPS
deleted file mode 120000
index 3b5c7b8988..0000000000
--- a/Lang/TAV/HTTPS
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/HTTPS/TAV
\ No newline at end of file
diff --git a/Lang/TAV/Halt-and-catch-fire b/Lang/TAV/Halt-and-catch-fire
deleted file mode 120000
index 802c4aa7b1..0000000000
--- a/Lang/TAV/Halt-and-catch-fire
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Halt-and-catch-fire/TAV
\ No newline at end of file
diff --git a/Lang/TAV/Hello-world-Graphical b/Lang/TAV/Hello-world-Graphical
deleted file mode 120000
index 5207716bc0..0000000000
--- a/Lang/TAV/Hello-world-Graphical
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Graphical/TAV
\ No newline at end of file
diff --git a/Lang/TAV/Hello-world-Text b/Lang/TAV/Hello-world-Text
deleted file mode 120000
index 3fd6788564..0000000000
--- a/Lang/TAV/Hello-world-Text
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Text/TAV
\ No newline at end of file
diff --git a/Lang/TAV/Letter-frequency b/Lang/TAV/Letter-frequency
deleted file mode 120000
index 891b699844..0000000000
--- a/Lang/TAV/Letter-frequency
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Letter-frequency/TAV
\ No newline at end of file
diff --git a/Lang/TAV/Loop-over-multiple-arrays-simultaneously b/Lang/TAV/Loop-over-multiple-arrays-simultaneously
deleted file mode 120000
index b6133fd1e3..0000000000
--- a/Lang/TAV/Loop-over-multiple-arrays-simultaneously
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loop-over-multiple-arrays-simultaneously/TAV
\ No newline at end of file
diff --git a/Lang/TAV/Loops-Break b/Lang/TAV/Loops-Break
deleted file mode 120000
index 9576a14c29..0000000000
--- a/Lang/TAV/Loops-Break
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Break/TAV
\ No newline at end of file
diff --git a/Lang/TAV/Loops-Do-while b/Lang/TAV/Loops-Do-while
deleted file mode 120000
index 1fc4e33872..0000000000
--- a/Lang/TAV/Loops-Do-while
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Do-while/TAV
\ No newline at end of file
diff --git a/Lang/TAV/Loops-Downward-for b/Lang/TAV/Loops-Downward-for
deleted file mode 120000
index 414c0842ce..0000000000
--- a/Lang/TAV/Loops-Downward-for
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Downward-for/TAV
\ No newline at end of file
diff --git a/Lang/TAV/Loops-For b/Lang/TAV/Loops-For
deleted file mode 120000
index b5f2be83c7..0000000000
--- a/Lang/TAV/Loops-For
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-For/TAV
\ No newline at end of file
diff --git a/Lang/TAV/Loops-Infinite b/Lang/TAV/Loops-Infinite
deleted file mode 120000
index 6ab04989e3..0000000000
--- a/Lang/TAV/Loops-Infinite
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Infinite/TAV
\ No newline at end of file
diff --git a/Lang/TAV/Loops-N-plus-one-half b/Lang/TAV/Loops-N-plus-one-half
deleted file mode 120000
index eaeea87dec..0000000000
--- a/Lang/TAV/Loops-N-plus-one-half
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-N-plus-one-half/TAV
\ No newline at end of file
diff --git a/Lang/TAV/Loops-While b/Lang/TAV/Loops-While
deleted file mode 120000
index b408169718..0000000000
--- a/Lang/TAV/Loops-While
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-While/TAV
\ No newline at end of file
diff --git a/Lang/TAV/Multiplication-tables b/Lang/TAV/Multiplication-tables
deleted file mode 120000
index 294070cfc4..0000000000
--- a/Lang/TAV/Multiplication-tables
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Multiplication-tables/TAV
\ No newline at end of file
diff --git a/Lang/TAV/Ordered-words b/Lang/TAV/Ordered-words
deleted file mode 120000
index 1dd34f0734..0000000000
--- a/Lang/TAV/Ordered-words
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ordered-words/TAV
\ No newline at end of file
diff --git a/Lang/TAV/Permutations b/Lang/TAV/Permutations
deleted file mode 120000
index c61f5ead43..0000000000
--- a/Lang/TAV/Permutations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Permutations/TAV
\ No newline at end of file
diff --git a/Lang/TAV/Real-constants-and-functions b/Lang/TAV/Real-constants-and-functions
deleted file mode 120000
index 074b803009..0000000000
--- a/Lang/TAV/Real-constants-and-functions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Real-constants-and-functions/TAV
\ No newline at end of file
diff --git a/Lang/TAV/Reverse-a-string b/Lang/TAV/Reverse-a-string
deleted file mode 120000
index ded0969ffb..0000000000
--- a/Lang/TAV/Reverse-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Reverse-a-string/TAV
\ No newline at end of file
diff --git a/Lang/TAV/Semordnilap b/Lang/TAV/Semordnilap
deleted file mode 120000
index 2269a5f472..0000000000
--- a/Lang/TAV/Semordnilap
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Semordnilap/TAV
\ No newline at end of file
diff --git a/Lang/TAV/Show-ASCII-table b/Lang/TAV/Show-ASCII-table
deleted file mode 120000
index f220b6d5c2..0000000000
--- a/Lang/TAV/Show-ASCII-table
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Show-ASCII-table/TAV
\ No newline at end of file
diff --git a/Lang/TAV/Simple-windowed-application b/Lang/TAV/Simple-windowed-application
deleted file mode 120000
index 16b1926606..0000000000
--- a/Lang/TAV/Simple-windowed-application
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Simple-windowed-application/TAV
\ No newline at end of file
diff --git a/Lang/TAV/Stack b/Lang/TAV/Stack
deleted file mode 120000
index a05bead248..0000000000
--- a/Lang/TAV/Stack
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Stack/TAV
\ No newline at end of file
diff --git a/Lang/TAV/String-length b/Lang/TAV/String-length
deleted file mode 120000
index 6374cb4fac..0000000000
--- a/Lang/TAV/String-length
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-length/TAV
\ No newline at end of file
diff --git a/Lang/TAV/Sudoku b/Lang/TAV/Sudoku
deleted file mode 120000
index c7ddc3598c..0000000000
--- a/Lang/TAV/Sudoku
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sudoku/TAV
\ No newline at end of file
diff --git a/Lang/TAV/Tic-tac-toe b/Lang/TAV/Tic-tac-toe
deleted file mode 120000
index c75d3a40ab..0000000000
--- a/Lang/TAV/Tic-tac-toe
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tic-tac-toe/TAV
\ No newline at end of file
diff --git a/Lang/TAV/Tokenize-a-string b/Lang/TAV/Tokenize-a-string
deleted file mode 120000
index 8b4118dfbe..0000000000
--- a/Lang/TAV/Tokenize-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tokenize-a-string/TAV
\ No newline at end of file
diff --git a/Lang/TAV/Twelve-statements b/Lang/TAV/Twelve-statements
deleted file mode 120000
index 0036358c10..0000000000
--- a/Lang/TAV/Twelve-statements
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Twelve-statements/TAV
\ No newline at end of file
diff --git a/Lang/TAV/Window-creation b/Lang/TAV/Window-creation
deleted file mode 120000
index 83a0431016..0000000000
--- a/Lang/TAV/Window-creation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Window-creation/TAV
\ No newline at end of file
diff --git a/Lang/TAV/Word-frequency b/Lang/TAV/Word-frequency
deleted file mode 120000
index 569f86daf5..0000000000
--- a/Lang/TAV/Word-frequency
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Word-frequency/TAV
\ No newline at end of file
diff --git a/Lang/TI-83-BASIC/00-LANG.txt b/Lang/TI-83-BASIC/00-LANG.txt
index a8830c103d..571b0d2a73 100644
--- a/Lang/TI-83-BASIC/00-LANG.txt
+++ b/Lang/TI-83-BASIC/00-LANG.txt
@@ -8,24 +8,24 @@
The language contains control flow for structured programming.
The main control flow statements are:
====If====
-If condition
+If condition
Then
...
Else
...
-End
+End
====For====
-For(variable,start,stop,step)
+For(variable,start,stop,step)
...
-End
+End
====While====
-While condition
+While condition
...
-End
+End
====Repeat====
-Repeat condition
+Repeat condition
...
-End
+End
===Data types===
'''TI-BASIC''' is a strongly and dynamically-typed language
Variables are global. There is no local variables. So programs cannot be recursive, even if a program can call itself.
@@ -37,11 +37,11 @@ Variables are global. There is no local variables. So programs cannot be recursi
==Example==
One popular example is the quadratic formula program.
-Prompt A,B,C
+Prompt A,B,C
B²-4AC->D
(-B-sqrt(D))/(2A)->Y
(-B+sqrt(D))/(2A)->X
-{Y,X}
+{Y,X}
As far there is a complex mode and variable can be real or complex, this program is very ubiquitous.
diff --git a/Lang/TXR/Cheryls-birthday b/Lang/TXR/Cheryls-birthday
deleted file mode 120000
index 3755473e4e..0000000000
--- a/Lang/TXR/Cheryls-birthday
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cheryls-birthday/TXR
\ No newline at end of file
diff --git a/Lang/Tailspin/00-LANG.txt b/Lang/Tailspin/00-LANG.txt
index 02c82847dd..a8437326e6 100644
--- a/Lang/Tailspin/00-LANG.txt
+++ b/Lang/Tailspin/00-LANG.txt
@@ -18,6 +18,4 @@ The inspiration comes mostly from xslt, but data structures are json-like. The m
[https://github.com/tobega/tailspin-v0/blob/master/TailspinReference.md Syntax reference]
-Development page, also how to run Tailspin programs [https://github.com/tobega/tailspin-v0 on github]
-
-Next version v0.5 [https://github.com/tobega/tailspin-v0.5 under development]
\ No newline at end of file
+Development page, also how to run Tailspin programs [https://github.com/tobega/tailspin-v0 on github]
\ No newline at end of file
diff --git a/Lang/Tailspin/Combinations b/Lang/Tailspin/Combinations
deleted file mode 120000
index 987b496fbb..0000000000
--- a/Lang/Tailspin/Combinations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Combinations/Tailspin
\ No newline at end of file
diff --git a/Lang/Tailspin/Sierpinski-triangle b/Lang/Tailspin/Sierpinski-triangle
deleted file mode 120000
index b603b111a2..0000000000
--- a/Lang/Tailspin/Sierpinski-triangle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sierpinski-triangle/Tailspin
\ No newline at end of file
diff --git a/Lang/Tcl/Ascending-primes b/Lang/Tcl/Ascending-primes
deleted file mode 120000
index aad1d565ea..0000000000
--- a/Lang/Tcl/Ascending-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ascending-primes/Tcl
\ No newline at end of file
diff --git a/Lang/Tcl/Bioinformatics-base-count b/Lang/Tcl/Bioinformatics-base-count
new file mode 120000
index 0000000000..2d2ea8e987
--- /dev/null
+++ b/Lang/Tcl/Bioinformatics-base-count
@@ -0,0 +1 @@
+../../Task/Bioinformatics-base-count/Tcl
\ No newline at end of file
diff --git a/Lang/Tcl/Chaocipher b/Lang/Tcl/Chaocipher
deleted file mode 120000
index 8d836b3e4a..0000000000
--- a/Lang/Tcl/Chaocipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Chaocipher/Tcl
\ No newline at end of file
diff --git a/Lang/Tcl/Character-codes b/Lang/Tcl/Character-codes
new file mode 120000
index 0000000000..3f7702eaa9
--- /dev/null
+++ b/Lang/Tcl/Character-codes
@@ -0,0 +1 @@
+../../Task/Character-codes/Tcl
\ No newline at end of file
diff --git a/Lang/Tcl/De-Bruijn-sequences b/Lang/Tcl/De-Bruijn-sequences
deleted file mode 120000
index b3e1240d2e..0000000000
--- a/Lang/Tcl/De-Bruijn-sequences
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/De-Bruijn-sequences/Tcl
\ No newline at end of file
diff --git a/Lang/Tcl/Descending-primes b/Lang/Tcl/Descending-primes
deleted file mode 120000
index 11b4ea6aa0..0000000000
--- a/Lang/Tcl/Descending-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Descending-primes/Tcl
\ No newline at end of file
diff --git a/Lang/Tcl/Find-if-a-point-is-within-a-triangle b/Lang/Tcl/Find-if-a-point-is-within-a-triangle
deleted file mode 120000
index 340eb44d03..0000000000
--- a/Lang/Tcl/Find-if-a-point-is-within-a-triangle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Find-if-a-point-is-within-a-triangle/Tcl
\ No newline at end of file
diff --git a/Lang/Tcl/M-bius-function b/Lang/Tcl/M-bius-function
deleted file mode 120000
index 1c7ccdef59..0000000000
--- a/Lang/Tcl/M-bius-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/M-bius-function/Tcl
\ No newline at end of file
diff --git a/Lang/Tcl/Miller-Rabin-primality-test b/Lang/Tcl/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..5e3095425f
--- /dev/null
+++ b/Lang/Tcl/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/Tcl
\ No newline at end of file
diff --git a/Lang/Tcl/Quaternion-type b/Lang/Tcl/Quaternion-type
new file mode 120000
index 0000000000..50905d75b8
--- /dev/null
+++ b/Lang/Tcl/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/Tcl
\ No newline at end of file
diff --git a/Lang/Tcl/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/Tcl/Sequence-smallest-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/Tcl/Sequence:-smallest-number-with-exactly-n-divisors
rename to Lang/Tcl/Sequence-smallest-number-with-exactly-n-divisors
diff --git a/Lang/Tcl/Strassens-algorithm b/Lang/Tcl/Strassens-algorithm
deleted file mode 120000
index 8ac35c1ae0..0000000000
--- a/Lang/Tcl/Strassens-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strassens-algorithm/Tcl
\ No newline at end of file
diff --git a/Lang/Tcl/Unicode-strings b/Lang/Tcl/Unicode-strings
deleted file mode 120000
index 5d3bbc0431..0000000000
--- a/Lang/Tcl/Unicode-strings
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Unicode-strings/Tcl
\ No newline at end of file
diff --git a/Lang/Tiny-BASIC/Leonardo-numbers b/Lang/Tiny-BASIC/Leonardo-numbers
deleted file mode 120000
index 731e542c2f..0000000000
--- a/Lang/Tiny-BASIC/Leonardo-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Leonardo-numbers/Tiny-BASIC
\ No newline at end of file
diff --git a/Lang/Tiny-BASIC/Magic-constant b/Lang/Tiny-BASIC/Magic-constant
deleted file mode 120000
index e64a075712..0000000000
--- a/Lang/Tiny-BASIC/Magic-constant
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Magic-constant/Tiny-BASIC
\ No newline at end of file
diff --git a/Lang/Tiny-BASIC/Mandelbrot-set b/Lang/Tiny-BASIC/Mandelbrot-set
deleted file mode 120000
index 9aab104307..0000000000
--- a/Lang/Tiny-BASIC/Mandelbrot-set
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Mandelbrot-set/Tiny-BASIC
\ No newline at end of file
diff --git a/Lang/Tiny-BASIC/The-Twelve-Days-of-Christmas b/Lang/Tiny-BASIC/The-Twelve-Days-of-Christmas
deleted file mode 120000
index 8dad6cc4e9..0000000000
--- a/Lang/Tiny-BASIC/The-Twelve-Days-of-Christmas
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/The-Twelve-Days-of-Christmas/Tiny-BASIC
\ No newline at end of file
diff --git a/Lang/Transd/Compare-length-of-two-strings b/Lang/Transd/Compare-length-of-two-strings
new file mode 120000
index 0000000000..28f3956c3e
--- /dev/null
+++ b/Lang/Transd/Compare-length-of-two-strings
@@ -0,0 +1 @@
+../../Task/Compare-length-of-two-strings/Transd
\ No newline at end of file
diff --git a/Lang/Trith/Empty-program b/Lang/Trith/Empty-program
new file mode 120000
index 0000000000..a3056b4a8b
--- /dev/null
+++ b/Lang/Trith/Empty-program
@@ -0,0 +1 @@
+../../Task/Empty-program/Trith
\ No newline at end of file
diff --git a/Lang/True-BASIC/00-LANG.txt b/Lang/True-BASIC/00-LANG.txt
index 7ebdbc548e..765d6ad0cc 100644
--- a/Lang/True-BASIC/00-LANG.txt
+++ b/Lang/True-BASIC/00-LANG.txt
@@ -2,7 +2,6 @@
|exec=interpreted
|tags=basic,TrueBasic
|site=http://www.truebasic.com/}}
-{{implementation|BASIC}}
True BASIC is a variant of the BASIC programming language descended from Dartmouth BASIC, the original BASIC. It was invented by college professors John G. Kemeny and Thomas E. Kurtz.
It is an interpreted, procedural language and sold as a commercial product. Versions have existed for Microsoft Windows, Apple Mac OS, MS-DOS, OS/2, and the Atari ST. The latest version of the language is 6.007 and currently only runs on Microsoft Windows.
diff --git a/Lang/True-BASIC/100-prisoners b/Lang/True-BASIC/100-prisoners
deleted file mode 120000
index b793e357f7..0000000000
--- a/Lang/True-BASIC/100-prisoners
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/100-prisoners/True-BASIC
\ No newline at end of file
diff --git a/Lang/True-BASIC/Determine-sentence-type b/Lang/True-BASIC/Determine-sentence-type
deleted file mode 120000
index 988197fd95..0000000000
--- a/Lang/True-BASIC/Determine-sentence-type
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-sentence-type/True-BASIC
\ No newline at end of file
diff --git a/Lang/True-BASIC/Diversity-prediction-theorem b/Lang/True-BASIC/Diversity-prediction-theorem
deleted file mode 120000
index 85980181c1..0000000000
--- a/Lang/True-BASIC/Diversity-prediction-theorem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Diversity-prediction-theorem/True-BASIC
\ No newline at end of file
diff --git a/Lang/True-BASIC/Evaluate-binomial-coefficients b/Lang/True-BASIC/Evaluate-binomial-coefficients
deleted file mode 120000
index 8a2a036883..0000000000
--- a/Lang/True-BASIC/Evaluate-binomial-coefficients
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Evaluate-binomial-coefficients/True-BASIC
\ No newline at end of file
diff --git a/Lang/True-BASIC/Greatest-element-of-a-list b/Lang/True-BASIC/Greatest-element-of-a-list
deleted file mode 120000
index 3c9a45a72c..0000000000
--- a/Lang/True-BASIC/Greatest-element-of-a-list
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Greatest-element-of-a-list/True-BASIC
\ No newline at end of file
diff --git a/Lang/True-BASIC/Leonardo-numbers b/Lang/True-BASIC/Leonardo-numbers
deleted file mode 120000
index 7faae2372e..0000000000
--- a/Lang/True-BASIC/Leonardo-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Leonardo-numbers/True-BASIC
\ No newline at end of file
diff --git a/Lang/True-BASIC/Loop-over-multiple-arrays-simultaneously b/Lang/True-BASIC/Loop-over-multiple-arrays-simultaneously
deleted file mode 120000
index 0cb7e37da5..0000000000
--- a/Lang/True-BASIC/Loop-over-multiple-arrays-simultaneously
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loop-over-multiple-arrays-simultaneously/True-BASIC
\ No newline at end of file
diff --git a/Lang/True-BASIC/Meissel-Mertens-constant b/Lang/True-BASIC/Meissel-Mertens-constant
new file mode 120000
index 0000000000..fd72ec2c53
--- /dev/null
+++ b/Lang/True-BASIC/Meissel-Mertens-constant
@@ -0,0 +1 @@
+../../Task/Meissel-Mertens-constant/True-BASIC
\ No newline at end of file
diff --git a/Lang/True-BASIC/Multiple-regression b/Lang/True-BASIC/Multiple-regression
deleted file mode 120000
index ca0e5c404e..0000000000
--- a/Lang/True-BASIC/Multiple-regression
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Multiple-regression/True-BASIC
\ No newline at end of file
diff --git a/Lang/True-BASIC/Phrase-reversals b/Lang/True-BASIC/Phrase-reversals
deleted file mode 120000
index 564680054e..0000000000
--- a/Lang/True-BASIC/Phrase-reversals
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Phrase-reversals/True-BASIC
\ No newline at end of file
diff --git a/Lang/True-BASIC/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/True-BASIC/Sequence-smallest-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/True-BASIC/Sequence:-smallest-number-with-exactly-n-divisors
rename to Lang/True-BASIC/Sequence-smallest-number-with-exactly-n-divisors
diff --git a/Lang/True-BASIC/Soundex b/Lang/True-BASIC/Soundex
deleted file mode 120000
index 33e7fb68ee..0000000000
--- a/Lang/True-BASIC/Soundex
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Soundex/True-BASIC
\ No newline at end of file
diff --git a/Lang/True-BASIC/Split-a-character-string-based-on-change-of-character b/Lang/True-BASIC/Split-a-character-string-based-on-change-of-character
deleted file mode 120000
index e25a5cf6f3..0000000000
--- a/Lang/True-BASIC/Split-a-character-string-based-on-change-of-character
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Split-a-character-string-based-on-change-of-character/True-BASIC
\ No newline at end of file
diff --git a/Lang/True-BASIC/The-Name-Game b/Lang/True-BASIC/The-Name-Game
deleted file mode 120000
index bf4d14fb81..0000000000
--- a/Lang/True-BASIC/The-Name-Game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/The-Name-Game/True-BASIC
\ No newline at end of file
diff --git a/Lang/True-BASIC/Vector b/Lang/True-BASIC/Vector
deleted file mode 120000
index 4da227d0fe..0000000000
--- a/Lang/True-BASIC/Vector
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Vector/True-BASIC
\ No newline at end of file
diff --git a/Lang/TypeScript/Additive-primes b/Lang/TypeScript/Additive-primes
deleted file mode 120000
index 698823ecab..0000000000
--- a/Lang/TypeScript/Additive-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Additive-primes/TypeScript
\ No newline at end of file
diff --git a/Lang/TypeScript/Arithmetic-numbers b/Lang/TypeScript/Arithmetic-numbers
deleted file mode 120000
index 0a37af8cff..0000000000
--- a/Lang/TypeScript/Arithmetic-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-numbers/TypeScript
\ No newline at end of file
diff --git a/Lang/TypeScript/Deal-cards-for-FreeCell b/Lang/TypeScript/Deal-cards-for-FreeCell
deleted file mode 120000
index 04eefe17ef..0000000000
--- a/Lang/TypeScript/Deal-cards-for-FreeCell
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Deal-cards-for-FreeCell/TypeScript
\ No newline at end of file
diff --git a/Lang/TypeScript/Leonardo-numbers b/Lang/TypeScript/Leonardo-numbers
deleted file mode 120000
index 501c953b40..0000000000
--- a/Lang/TypeScript/Leonardo-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Leonardo-numbers/TypeScript
\ No newline at end of file
diff --git a/Lang/TypeScript/Map-range b/Lang/TypeScript/Map-range
deleted file mode 120000
index 50eeda25cd..0000000000
--- a/Lang/TypeScript/Map-range
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Map-range/TypeScript
\ No newline at end of file
diff --git a/Lang/TypeScript/Sum-of-a-series b/Lang/TypeScript/Sum-of-a-series
deleted file mode 120000
index 810faf05f3..0000000000
--- a/Lang/TypeScript/Sum-of-a-series
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sum-of-a-series/TypeScript
\ No newline at end of file
diff --git a/Lang/UNIX-Shell/CRC-32 b/Lang/UNIX-Shell/CRC-32
deleted file mode 120000
index 7be1bb462f..0000000000
--- a/Lang/UNIX-Shell/CRC-32
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/CRC-32/UNIX-Shell
\ No newline at end of file
diff --git a/Lang/UNIX-Shell/Color-of-a-screen-pixel b/Lang/UNIX-Shell/Color-of-a-screen-pixel
deleted file mode 120000
index 8344bcd2f2..0000000000
--- a/Lang/UNIX-Shell/Color-of-a-screen-pixel
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Color-of-a-screen-pixel/UNIX-Shell
\ No newline at end of file
diff --git a/Lang/UNIX-Shell/Color-quantization b/Lang/UNIX-Shell/Color-quantization
deleted file mode 120000
index 6c518f1af5..0000000000
--- a/Lang/UNIX-Shell/Color-quantization
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Color-quantization/UNIX-Shell
\ No newline at end of file
diff --git a/Lang/UNIX-Shell/Copy-stdin-to-stdout b/Lang/UNIX-Shell/Copy-stdin-to-stdout
deleted file mode 120000
index 217727646b..0000000000
--- a/Lang/UNIX-Shell/Copy-stdin-to-stdout
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Copy-stdin-to-stdout/UNIX-Shell
\ No newline at end of file
diff --git a/Lang/UNIX-Shell/Horners-rule-for-polynomial-evaluation b/Lang/UNIX-Shell/Horners-rule-for-polynomial-evaluation
deleted file mode 120000
index 18a4ccc4dc..0000000000
--- a/Lang/UNIX-Shell/Horners-rule-for-polynomial-evaluation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Horners-rule-for-polynomial-evaluation/UNIX-Shell
\ No newline at end of file
diff --git a/Lang/UNIX-Shell/Pi b/Lang/UNIX-Shell/Pi
deleted file mode 120000
index 854a52d02a..0000000000
--- a/Lang/UNIX-Shell/Pi
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pi/UNIX-Shell
\ No newline at end of file
diff --git a/Lang/UNIX-Shell/Trabb-Pardo-Knuth-algorithm b/Lang/UNIX-Shell/Trabb-Pardo-Knuth-algorithm
deleted file mode 120000
index d9c18fe35b..0000000000
--- a/Lang/UNIX-Shell/Trabb-Pardo-Knuth-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Trabb-Pardo-Knuth-algorithm/UNIX-Shell
\ No newline at end of file
diff --git a/Lang/Uiua/00-LANG.txt b/Lang/Uiua/00-LANG.txt
index f3cc2f1ee5..2a4f3f689f 100644
--- a/Lang/Uiua/00-LANG.txt
+++ b/Lang/Uiua/00-LANG.txt
@@ -1,15 +1,7 @@
{{language
-|exec=bytecode
-|site=https://www.uiua.org/
-|checking=dynamic
-|gc=yes
-|express=implicit
-|LCT=yes}}
-{{language programming paradigm|array}}
-{{language programming paradigm|functional|array}}
-From [https://www.uiua.org uiua.org]:
-
-"Uiua (''wee-wuh'') is a general purpose, stack-based, array-oriented programming language with a focus on simplicity, beauty, and tacit code.
+|site=https://www.uiua.org/}}
+{{language programming paradigm|functional}}
+Uiua (''wee-wuh'') is a general purpose, stack-based, array-oriented programming language with a focus on simplicity, beauty, and tacit code.
Uiua has a simple, context-free, LL(3) grammar. Code runs from right to left, top to bottom, with only one precedence rule. As operators are to the left of their operands, Uiua code reads a little bit like a Lisp, but with fewer parentheses.
@@ -19,10 +11,4 @@ Uiua's one and only composite data type, the array, is based on those of APL, J,
Unlike other array languages, Uiua does not have monadic and dyadic versions of each glyph. Every glyph does only one thing, so you don't need to parse an entire expression to know which version it is.
-Find out more, and run code in your browser at [https://www.uiua.org https://www.uiua.org]."
-
-===Note===
-The Uiua programming language uses a custom font and colorful syntax highlighting to increase the readability of its code. As such syntax highlighting is not possible to display on this wiki, it is recommended to paste code into [https://www.uiua.org/pad the online Uiua pad] (or a [https://www.uiua.org/install#editor-support supported editor]) to view code more easily.
-
-==Todo==
-[https://rosettacode.org/wiki/Tasks_not_implemented_in_Uiua Tasks not implemented in Uiua]
\ No newline at end of file
+Find out more, and run code in your browser at https://www.uiua.org
\ No newline at end of file
diff --git a/Lang/Uiua/100-doors b/Lang/Uiua/100-doors
deleted file mode 120000
index 58d6cad56c..0000000000
--- a/Lang/Uiua/100-doors
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/100-doors/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/15-puzzle-solver b/Lang/Uiua/15-puzzle-solver
deleted file mode 120000
index d2c4541287..0000000000
--- a/Lang/Uiua/15-puzzle-solver
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/15-puzzle-solver/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/21-game b/Lang/Uiua/21-game
deleted file mode 120000
index 629762436d..0000000000
--- a/Lang/Uiua/21-game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/21-game/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/4-rings-or-4-squares-puzzle b/Lang/Uiua/4-rings-or-4-squares-puzzle
deleted file mode 120000
index a31782d205..0000000000
--- a/Lang/Uiua/4-rings-or-4-squares-puzzle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/4-rings-or-4-squares-puzzle/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/99-bottles-of-beer b/Lang/Uiua/99-bottles-of-beer
deleted file mode 120000
index bd1d75c2c7..0000000000
--- a/Lang/Uiua/99-bottles-of-beer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/99-bottles-of-beer/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/A+B b/Lang/Uiua/A+B
deleted file mode 120000
index df9da8c183..0000000000
--- a/Lang/Uiua/A+B
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/A+B/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/ABC-problem b/Lang/Uiua/ABC-problem
deleted file mode 120000
index e3c88d305a..0000000000
--- a/Lang/Uiua/ABC-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/ABC-problem/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/ADFGVX-cipher b/Lang/Uiua/ADFGVX-cipher
deleted file mode 120000
index 3b808ce65e..0000000000
--- a/Lang/Uiua/ADFGVX-cipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/ADFGVX-cipher/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/ASCII-art-diagram-converter b/Lang/Uiua/ASCII-art-diagram-converter
deleted file mode 120000
index 7868ebc205..0000000000
--- a/Lang/Uiua/ASCII-art-diagram-converter
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/ASCII-art-diagram-converter/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Abbreviations-automatic b/Lang/Uiua/Abbreviations-automatic
deleted file mode 120000
index 4ed38ebb71..0000000000
--- a/Lang/Uiua/Abbreviations-automatic
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abbreviations-automatic/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Abelian-sandpile-model b/Lang/Uiua/Abelian-sandpile-model
deleted file mode 120000
index 511d6d21ce..0000000000
--- a/Lang/Uiua/Abelian-sandpile-model
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abelian-sandpile-model/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Abundant-deficient-and-perfect-number-classifications b/Lang/Uiua/Abundant-deficient-and-perfect-number-classifications
deleted file mode 120000
index 4ea7de4aaa..0000000000
--- a/Lang/Uiua/Abundant-deficient-and-perfect-number-classifications
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abundant-deficient-and-perfect-number-classifications/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Abundant-odd-numbers b/Lang/Uiua/Abundant-odd-numbers
deleted file mode 120000
index 15f27f9ef1..0000000000
--- a/Lang/Uiua/Abundant-odd-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abundant-odd-numbers/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Ackermann-function b/Lang/Uiua/Ackermann-function
deleted file mode 120000
index 94bc0faf99..0000000000
--- a/Lang/Uiua/Ackermann-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ackermann-function/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Align-columns b/Lang/Uiua/Align-columns
deleted file mode 120000
index 90d8156011..0000000000
--- a/Lang/Uiua/Align-columns
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Align-columns/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Almost-prime b/Lang/Uiua/Almost-prime
deleted file mode 120000
index 392773baf7..0000000000
--- a/Lang/Uiua/Almost-prime
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Almost-prime/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Amicable-pairs b/Lang/Uiua/Amicable-pairs
deleted file mode 120000
index 8c9ce68129..0000000000
--- a/Lang/Uiua/Amicable-pairs
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Amicable-pairs/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Anagrams b/Lang/Uiua/Anagrams
deleted file mode 120000
index a823cee1f3..0000000000
--- a/Lang/Uiua/Anagrams
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Anagrams/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Angle-difference-between-two-bearings b/Lang/Uiua/Angle-difference-between-two-bearings
deleted file mode 120000
index ee9bbb083d..0000000000
--- a/Lang/Uiua/Angle-difference-between-two-bearings
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Angle-difference-between-two-bearings/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Anonymous-recursion b/Lang/Uiua/Anonymous-recursion
deleted file mode 120000
index 8c1b1c25c3..0000000000
--- a/Lang/Uiua/Anonymous-recursion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Anonymous-recursion/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Anti-primes b/Lang/Uiua/Anti-primes
deleted file mode 120000
index caaf04d665..0000000000
--- a/Lang/Uiua/Anti-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Anti-primes/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Apply-a-callback-to-an-array b/Lang/Uiua/Apply-a-callback-to-an-array
deleted file mode 120000
index 685e6558c3..0000000000
--- a/Lang/Uiua/Apply-a-callback-to-an-array
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Apply-a-callback-to-an-array/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Arithmetic-Complex b/Lang/Uiua/Arithmetic-Complex
deleted file mode 120000
index acbbaad1bb..0000000000
--- a/Lang/Uiua/Arithmetic-Complex
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-Complex/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Arithmetic-Integer b/Lang/Uiua/Arithmetic-Integer
deleted file mode 120000
index 8f8007cc44..0000000000
--- a/Lang/Uiua/Arithmetic-Integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-Integer/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Arithmetic-derivative b/Lang/Uiua/Arithmetic-derivative
deleted file mode 120000
index 940b88708d..0000000000
--- a/Lang/Uiua/Arithmetic-derivative
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-derivative/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Arithmetic-geometric-mean b/Lang/Uiua/Arithmetic-geometric-mean
deleted file mode 120000
index 6adeb66a11..0000000000
--- a/Lang/Uiua/Arithmetic-geometric-mean
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-geometric-mean/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Arithmetic-geometric-mean-Calculate-Pi b/Lang/Uiua/Arithmetic-geometric-mean-Calculate-Pi
deleted file mode 120000
index e30c23f938..0000000000
--- a/Lang/Uiua/Arithmetic-geometric-mean-Calculate-Pi
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-geometric-mean-Calculate-Pi/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Arithmetic-numbers b/Lang/Uiua/Arithmetic-numbers
deleted file mode 120000
index e537c98fb0..0000000000
--- a/Lang/Uiua/Arithmetic-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-numbers/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Array-concatenation b/Lang/Uiua/Array-concatenation
deleted file mode 120000
index 48fabf1a40..0000000000
--- a/Lang/Uiua/Array-concatenation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Array-concatenation/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Array-length b/Lang/Uiua/Array-length
deleted file mode 120000
index 7c3be21b34..0000000000
--- a/Lang/Uiua/Array-length
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Array-length/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Arrays b/Lang/Uiua/Arrays
deleted file mode 120000
index ae2ca1c8a6..0000000000
--- a/Lang/Uiua/Arrays
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arrays/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Ascending-primes b/Lang/Uiua/Ascending-primes
deleted file mode 120000
index 83b9f7be7a..0000000000
--- a/Lang/Uiua/Ascending-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ascending-primes/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Assertions b/Lang/Uiua/Assertions
deleted file mode 120000
index b370cee8a3..0000000000
--- a/Lang/Uiua/Assertions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Assertions/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Associative-array-Creation b/Lang/Uiua/Associative-array-Creation
deleted file mode 120000
index 8f5e350a55..0000000000
--- a/Lang/Uiua/Associative-array-Creation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Associative-array-Creation/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Associative-array-Iteration b/Lang/Uiua/Associative-array-Iteration
deleted file mode 120000
index 5ba8f9745a..0000000000
--- a/Lang/Uiua/Associative-array-Iteration
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Associative-array-Iteration/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Associative-array-Merging b/Lang/Uiua/Associative-array-Merging
deleted file mode 120000
index d769831c9b..0000000000
--- a/Lang/Uiua/Associative-array-Merging
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Associative-array-Merging/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Attractive-numbers b/Lang/Uiua/Attractive-numbers
deleted file mode 120000
index d36ccc01ec..0000000000
--- a/Lang/Uiua/Attractive-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Attractive-numbers/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Averages-Arithmetic-mean b/Lang/Uiua/Averages-Arithmetic-mean
deleted file mode 120000
index b50b3b064d..0000000000
--- a/Lang/Uiua/Averages-Arithmetic-mean
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Arithmetic-mean/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Averages-Mean-time-of-day b/Lang/Uiua/Averages-Mean-time-of-day
deleted file mode 120000
index 970582690e..0000000000
--- a/Lang/Uiua/Averages-Mean-time-of-day
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Mean-time-of-day/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Averages-Median b/Lang/Uiua/Averages-Median
deleted file mode 120000
index 254605ff30..0000000000
--- a/Lang/Uiua/Averages-Median
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Median/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Averages-Mode b/Lang/Uiua/Averages-Mode
deleted file mode 120000
index 13987f5b7d..0000000000
--- a/Lang/Uiua/Averages-Mode
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Mode/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Averages-Pythagorean-means b/Lang/Uiua/Averages-Pythagorean-means
deleted file mode 120000
index a42d46aee7..0000000000
--- a/Lang/Uiua/Averages-Pythagorean-means
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Pythagorean-means/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Averages-Root-mean-square b/Lang/Uiua/Averages-Root-mean-square
deleted file mode 120000
index 681a323abf..0000000000
--- a/Lang/Uiua/Averages-Root-mean-square
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Root-mean-square/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Babbage-problem b/Lang/Uiua/Babbage-problem
deleted file mode 120000
index 485d090cb5..0000000000
--- a/Lang/Uiua/Babbage-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Babbage-problem/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Barnsley-fern b/Lang/Uiua/Barnsley-fern
deleted file mode 120000
index 39f57d2d79..0000000000
--- a/Lang/Uiua/Barnsley-fern
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Barnsley-fern/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Bell-numbers b/Lang/Uiua/Bell-numbers
deleted file mode 120000
index 88832c268c..0000000000
--- a/Lang/Uiua/Bell-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bell-numbers/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Benfords-law b/Lang/Uiua/Benfords-law
deleted file mode 120000
index c9f7d29ef6..0000000000
--- a/Lang/Uiua/Benfords-law
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Benfords-law/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Bifid-cipher b/Lang/Uiua/Bifid-cipher
deleted file mode 120000
index 7118fdadf7..0000000000
--- a/Lang/Uiua/Bifid-cipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bifid-cipher/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Bin-given-limits b/Lang/Uiua/Bin-given-limits
deleted file mode 120000
index 66cb90c004..0000000000
--- a/Lang/Uiua/Bin-given-limits
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bin-given-limits/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Binary-digits b/Lang/Uiua/Binary-digits
deleted file mode 120000
index 126c2d6665..0000000000
--- a/Lang/Uiua/Binary-digits
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Binary-digits/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Bitmap b/Lang/Uiua/Bitmap
deleted file mode 120000
index 6ff7a055f3..0000000000
--- a/Lang/Uiua/Bitmap
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bitmap/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Bitmap-Flood-fill b/Lang/Uiua/Bitmap-Flood-fill
deleted file mode 120000
index 8833733b75..0000000000
--- a/Lang/Uiua/Bitmap-Flood-fill
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bitmap-Flood-fill/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Bitwise-operations b/Lang/Uiua/Bitwise-operations
deleted file mode 120000
index 1b1bf97751..0000000000
--- a/Lang/Uiua/Bitwise-operations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bitwise-operations/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Boolean-values b/Lang/Uiua/Boolean-values
deleted file mode 120000
index ac8910eee9..0000000000
--- a/Lang/Uiua/Boolean-values
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Boolean-values/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Bulls-and-cows-Player b/Lang/Uiua/Bulls-and-cows-Player
deleted file mode 120000
index b45c91dd88..0000000000
--- a/Lang/Uiua/Bulls-and-cows-Player
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bulls-and-cows-Player/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Burrows-Wheeler-transform b/Lang/Uiua/Burrows-Wheeler-transform
deleted file mode 120000
index d53398fc74..0000000000
--- a/Lang/Uiua/Burrows-Wheeler-transform
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Burrows-Wheeler-transform/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/CRC-32 b/Lang/Uiua/CRC-32
deleted file mode 120000
index 063f3e4ee3..0000000000
--- a/Lang/Uiua/CRC-32
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/CRC-32/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/CSV-data-manipulation b/Lang/Uiua/CSV-data-manipulation
deleted file mode 120000
index 78747e6f49..0000000000
--- a/Lang/Uiua/CSV-data-manipulation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/CSV-data-manipulation/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/CSV-to-HTML-translation b/Lang/Uiua/CSV-to-HTML-translation
deleted file mode 120000
index cd311bcc18..0000000000
--- a/Lang/Uiua/CSV-to-HTML-translation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/CSV-to-HTML-translation/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Caesar-cipher b/Lang/Uiua/Caesar-cipher
deleted file mode 120000
index ef50c0e2e1..0000000000
--- a/Lang/Uiua/Caesar-cipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Caesar-cipher/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Calculating-the-value-of-e b/Lang/Uiua/Calculating-the-value-of-e
deleted file mode 120000
index d7cc261bf8..0000000000
--- a/Lang/Uiua/Calculating-the-value-of-e
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Calculating-the-value-of-e/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Calkin-Wilf-sequence b/Lang/Uiua/Calkin-Wilf-sequence
deleted file mode 120000
index 23330ada15..0000000000
--- a/Lang/Uiua/Calkin-Wilf-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Calkin-Wilf-sequence/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Call-a-function b/Lang/Uiua/Call-a-function
deleted file mode 120000
index 1d6b22e4f5..0000000000
--- a/Lang/Uiua/Call-a-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Call-a-function/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Cantor-set b/Lang/Uiua/Cantor-set
deleted file mode 120000
index 1c94d38d0e..0000000000
--- a/Lang/Uiua/Cantor-set
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cantor-set/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Cartesian-product-of-two-or-more-lists b/Lang/Uiua/Cartesian-product-of-two-or-more-lists
deleted file mode 120000
index bff2250b36..0000000000
--- a/Lang/Uiua/Cartesian-product-of-two-or-more-lists
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cartesian-product-of-two-or-more-lists/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Catalan-numbers b/Lang/Uiua/Catalan-numbers
deleted file mode 120000
index 39a3cbd336..0000000000
--- a/Lang/Uiua/Catalan-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Catalan-numbers/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Catalan-numbers-Pascals-triangle b/Lang/Uiua/Catalan-numbers-Pascals-triangle
deleted file mode 120000
index d4426dbc39..0000000000
--- a/Lang/Uiua/Catalan-numbers-Pascals-triangle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Catalan-numbers-Pascals-triangle/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Catamorphism b/Lang/Uiua/Catamorphism
deleted file mode 120000
index f0a8a02f45..0000000000
--- a/Lang/Uiua/Catamorphism
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Catamorphism/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Character-codes b/Lang/Uiua/Character-codes
deleted file mode 120000
index 511eef1d48..0000000000
--- a/Lang/Uiua/Character-codes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Character-codes/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Check-output-device-is-a-terminal b/Lang/Uiua/Check-output-device-is-a-terminal
deleted file mode 120000
index 9599dac818..0000000000
--- a/Lang/Uiua/Check-output-device-is-a-terminal
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Check-output-device-is-a-terminal/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Check-that-file-exists b/Lang/Uiua/Check-that-file-exists
deleted file mode 120000
index 2ad54c3db1..0000000000
--- a/Lang/Uiua/Check-that-file-exists
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Check-that-file-exists/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Circular-primes b/Lang/Uiua/Circular-primes
deleted file mode 120000
index 65d19beab0..0000000000
--- a/Lang/Uiua/Circular-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Circular-primes/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Cistercian-numerals b/Lang/Uiua/Cistercian-numerals
deleted file mode 120000
index 7a072fe82a..0000000000
--- a/Lang/Uiua/Cistercian-numerals
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cistercian-numerals/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Collections b/Lang/Uiua/Collections
deleted file mode 120000
index 3ea461802a..0000000000
--- a/Lang/Uiua/Collections
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Collections/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Color-wheel b/Lang/Uiua/Color-wheel
deleted file mode 120000
index f9a74260bf..0000000000
--- a/Lang/Uiua/Color-wheel
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Color-wheel/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Colorful-numbers b/Lang/Uiua/Colorful-numbers
deleted file mode 120000
index b2f820f214..0000000000
--- a/Lang/Uiua/Colorful-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Colorful-numbers/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Colour-bars-Display b/Lang/Uiua/Colour-bars-Display
deleted file mode 120000
index dbff1dc862..0000000000
--- a/Lang/Uiua/Colour-bars-Display
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Colour-bars-Display/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Combinations b/Lang/Uiua/Combinations
deleted file mode 120000
index 1300366dbb..0000000000
--- a/Lang/Uiua/Combinations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Combinations/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Combinations-and-permutations b/Lang/Uiua/Combinations-and-permutations
deleted file mode 120000
index c2af258e0d..0000000000
--- a/Lang/Uiua/Combinations-and-permutations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Combinations-and-permutations/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Command-line-arguments b/Lang/Uiua/Command-line-arguments
deleted file mode 120000
index d8dd4a464b..0000000000
--- a/Lang/Uiua/Command-line-arguments
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Command-line-arguments/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Comments b/Lang/Uiua/Comments
deleted file mode 120000
index c903ca1910..0000000000
--- a/Lang/Uiua/Comments
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Comments/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Compare-a-list-of-strings b/Lang/Uiua/Compare-a-list-of-strings
deleted file mode 120000
index 7a7f8f4123..0000000000
--- a/Lang/Uiua/Compare-a-list-of-strings
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compare-a-list-of-strings/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Compare-length-of-two-strings b/Lang/Uiua/Compare-length-of-two-strings
deleted file mode 120000
index ca614fc73a..0000000000
--- a/Lang/Uiua/Compare-length-of-two-strings
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compare-length-of-two-strings/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Continued-fraction b/Lang/Uiua/Continued-fraction
deleted file mode 120000
index e2c428ddc0..0000000000
--- a/Lang/Uiua/Continued-fraction
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Continued-fraction/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Convert-seconds-to-compound-duration b/Lang/Uiua/Convert-seconds-to-compound-duration
deleted file mode 120000
index 7c892696f2..0000000000
--- a/Lang/Uiua/Convert-seconds-to-compound-duration
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Convert-seconds-to-compound-duration/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Conways-Game-of-Life b/Lang/Uiua/Conways-Game-of-Life
deleted file mode 120000
index 577dcf20b1..0000000000
--- a/Lang/Uiua/Conways-Game-of-Life
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Conways-Game-of-Life/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Copy-a-string b/Lang/Uiua/Copy-a-string
deleted file mode 120000
index ecc8029f9f..0000000000
--- a/Lang/Uiua/Copy-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Copy-a-string/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Count-in-factors b/Lang/Uiua/Count-in-factors
deleted file mode 120000
index fee553f727..0000000000
--- a/Lang/Uiua/Count-in-factors
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Count-in-factors/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Count-in-octal b/Lang/Uiua/Count-in-octal
deleted file mode 120000
index 8d3356f54e..0000000000
--- a/Lang/Uiua/Count-in-octal
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Count-in-octal/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Count-occurrences-of-a-substring b/Lang/Uiua/Count-occurrences-of-a-substring
deleted file mode 120000
index 5aa05050f1..0000000000
--- a/Lang/Uiua/Count-occurrences-of-a-substring
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Count-occurrences-of-a-substring/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Count-the-coins b/Lang/Uiua/Count-the-coins
deleted file mode 120000
index 061cac0c44..0000000000
--- a/Lang/Uiua/Count-the-coins
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Count-the-coins/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Cramers-rule b/Lang/Uiua/Cramers-rule
deleted file mode 120000
index cdb9c1d147..0000000000
--- a/Lang/Uiua/Cramers-rule
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cramers-rule/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Create-a-two-dimensional-array-at-runtime b/Lang/Uiua/Create-a-two-dimensional-array-at-runtime
deleted file mode 120000
index 4ef285f54f..0000000000
--- a/Lang/Uiua/Create-a-two-dimensional-array-at-runtime
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Create-a-two-dimensional-array-at-runtime/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Cuban-primes b/Lang/Uiua/Cuban-primes
deleted file mode 120000
index 36dfb34863..0000000000
--- a/Lang/Uiua/Cuban-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cuban-primes/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Cut-a-rectangle b/Lang/Uiua/Cut-a-rectangle
deleted file mode 120000
index c91aef1334..0000000000
--- a/Lang/Uiua/Cut-a-rectangle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cut-a-rectangle/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Damm-algorithm b/Lang/Uiua/Damm-algorithm
deleted file mode 120000
index af8244172d..0000000000
--- a/Lang/Uiua/Damm-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Damm-algorithm/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Day-of-the-week b/Lang/Uiua/Day-of-the-week
deleted file mode 120000
index 3e8980f9e6..0000000000
--- a/Lang/Uiua/Day-of-the-week
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Day-of-the-week/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Delete-a-file b/Lang/Uiua/Delete-a-file
deleted file mode 120000
index a33b49cc5b..0000000000
--- a/Lang/Uiua/Delete-a-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Delete-a-file/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Department-numbers b/Lang/Uiua/Department-numbers
deleted file mode 120000
index d3bc5b010c..0000000000
--- a/Lang/Uiua/Department-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Department-numbers/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Descending-primes b/Lang/Uiua/Descending-primes
deleted file mode 120000
index 9ae82c1998..0000000000
--- a/Lang/Uiua/Descending-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Descending-primes/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Detect-division-by-zero b/Lang/Uiua/Detect-division-by-zero
deleted file mode 120000
index 40e2698013..0000000000
--- a/Lang/Uiua/Detect-division-by-zero
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Detect-division-by-zero/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Determine-if-a-string-has-all-the-same-characters b/Lang/Uiua/Determine-if-a-string-has-all-the-same-characters
deleted file mode 120000
index 55e1bace7e..0000000000
--- a/Lang/Uiua/Determine-if-a-string-has-all-the-same-characters
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-has-all-the-same-characters/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Determine-if-a-string-has-all-unique-characters b/Lang/Uiua/Determine-if-a-string-has-all-unique-characters
deleted file mode 120000
index 76105a59e1..0000000000
--- a/Lang/Uiua/Determine-if-a-string-has-all-unique-characters
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-has-all-unique-characters/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Determine-if-a-string-is-collapsible b/Lang/Uiua/Determine-if-a-string-is-collapsible
deleted file mode 120000
index 9891000cca..0000000000
--- a/Lang/Uiua/Determine-if-a-string-is-collapsible
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-is-collapsible/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Determine-if-a-string-is-numeric b/Lang/Uiua/Determine-if-a-string-is-numeric
deleted file mode 120000
index 12d7b2bbd9..0000000000
--- a/Lang/Uiua/Determine-if-a-string-is-numeric
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-is-numeric/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Digital-root b/Lang/Uiua/Digital-root
deleted file mode 120000
index 709355d0c9..0000000000
--- a/Lang/Uiua/Digital-root
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Digital-root/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Dijkstras-algorithm b/Lang/Uiua/Dijkstras-algorithm
deleted file mode 120000
index f3d03f9e62..0000000000
--- a/Lang/Uiua/Dijkstras-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dijkstras-algorithm/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Disarium-numbers b/Lang/Uiua/Disarium-numbers
deleted file mode 120000
index 28107527a2..0000000000
--- a/Lang/Uiua/Disarium-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Disarium-numbers/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Dominoes b/Lang/Uiua/Dominoes
deleted file mode 120000
index bd5d6f0291..0000000000
--- a/Lang/Uiua/Dominoes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dominoes/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Doomsday-rule b/Lang/Uiua/Doomsday-rule
deleted file mode 120000
index d408a1ec32..0000000000
--- a/Lang/Uiua/Doomsday-rule
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Doomsday-rule/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Dot-product b/Lang/Uiua/Dot-product
deleted file mode 120000
index 920d49c003..0000000000
--- a/Lang/Uiua/Dot-product
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dot-product/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Dutch-national-flag-problem b/Lang/Uiua/Dutch-national-flag-problem
deleted file mode 120000
index 198949a01a..0000000000
--- a/Lang/Uiua/Dutch-national-flag-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dutch-national-flag-problem/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Earliest-difference-between-prime-gaps b/Lang/Uiua/Earliest-difference-between-prime-gaps
deleted file mode 120000
index 3fd8b6678f..0000000000
--- a/Lang/Uiua/Earliest-difference-between-prime-gaps
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Earliest-difference-between-prime-gaps/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Echo-server b/Lang/Uiua/Echo-server
deleted file mode 120000
index 13818666c0..0000000000
--- a/Lang/Uiua/Echo-server
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Echo-server/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Emirp-primes b/Lang/Uiua/Emirp-primes
deleted file mode 120000
index 277723b92d..0000000000
--- a/Lang/Uiua/Emirp-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Emirp-primes/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Empty-string b/Lang/Uiua/Empty-string
deleted file mode 120000
index 9b9da2a9b4..0000000000
--- a/Lang/Uiua/Empty-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Empty-string/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Enforced-immutability b/Lang/Uiua/Enforced-immutability
deleted file mode 120000
index 243ebb8f2a..0000000000
--- a/Lang/Uiua/Enforced-immutability
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Enforced-immutability/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Enumerations b/Lang/Uiua/Enumerations
deleted file mode 120000
index 08a4a901fa..0000000000
--- a/Lang/Uiua/Enumerations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Enumerations/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Ethiopian-multiplication b/Lang/Uiua/Ethiopian-multiplication
deleted file mode 120000
index 4091de8f8e..0000000000
--- a/Lang/Uiua/Ethiopian-multiplication
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ethiopian-multiplication/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Exceptions b/Lang/Uiua/Exceptions
deleted file mode 120000
index 4cf4e7dfeb..0000000000
--- a/Lang/Uiua/Exceptions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Exceptions/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Exponentiation-operator b/Lang/Uiua/Exponentiation-operator
deleted file mode 120000
index bf3e3a41e0..0000000000
--- a/Lang/Uiua/Exponentiation-operator
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Exponentiation-operator/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Exponentiation-order b/Lang/Uiua/Exponentiation-order
deleted file mode 120000
index 8518c14141..0000000000
--- a/Lang/Uiua/Exponentiation-order
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Exponentiation-order/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Extreme-floating-point-values b/Lang/Uiua/Extreme-floating-point-values
deleted file mode 120000
index 05ab571554..0000000000
--- a/Lang/Uiua/Extreme-floating-point-values
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Extreme-floating-point-values/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Factorial b/Lang/Uiua/Factorial
deleted file mode 120000
index 5664c30904..0000000000
--- a/Lang/Uiua/Factorial
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factorial/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Factors-of-an-integer b/Lang/Uiua/Factors-of-an-integer
deleted file mode 120000
index c83bd4a95a..0000000000
--- a/Lang/Uiua/Factors-of-an-integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factors-of-an-integer/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Find-the-missing-permutation b/Lang/Uiua/Find-the-missing-permutation
deleted file mode 120000
index e1361833f3..0000000000
--- a/Lang/Uiua/Find-the-missing-permutation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Find-the-missing-permutation/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Flatten-a-list b/Lang/Uiua/Flatten-a-list
deleted file mode 120000
index 8d22eb4f6e..0000000000
--- a/Lang/Uiua/Flatten-a-list
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Flatten-a-list/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Flipping-bits-game b/Lang/Uiua/Flipping-bits-game
deleted file mode 120000
index 4647df0617..0000000000
--- a/Lang/Uiua/Flipping-bits-game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Flipping-bits-game/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Forest-fire b/Lang/Uiua/Forest-fire
deleted file mode 120000
index 1c1ded9f8f..0000000000
--- a/Lang/Uiua/Forest-fire
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Forest-fire/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Greatest-common-divisor b/Lang/Uiua/Greatest-common-divisor
deleted file mode 120000
index ed42b8017f..0000000000
--- a/Lang/Uiua/Greatest-common-divisor
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Greatest-common-divisor/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Hailstone-sequence b/Lang/Uiua/Hailstone-sequence
deleted file mode 120000
index eb6ae1ccd8..0000000000
--- a/Lang/Uiua/Hailstone-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hailstone-sequence/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Halt-and-catch-fire b/Lang/Uiua/Halt-and-catch-fire
deleted file mode 120000
index 098009e021..0000000000
--- a/Lang/Uiua/Halt-and-catch-fire
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Halt-and-catch-fire/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Hash-from-two-arrays b/Lang/Uiua/Hash-from-two-arrays
deleted file mode 120000
index 63b4a8d5f8..0000000000
--- a/Lang/Uiua/Hash-from-two-arrays
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hash-from-two-arrays/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Hickerson-series-of-almost-integers b/Lang/Uiua/Hickerson-series-of-almost-integers
deleted file mode 120000
index d1dde8e508..0000000000
--- a/Lang/Uiua/Hickerson-series-of-almost-integers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hickerson-series-of-almost-integers/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Identity-matrix b/Lang/Uiua/Identity-matrix
deleted file mode 120000
index 73bc76c89c..0000000000
--- a/Lang/Uiua/Identity-matrix
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Identity-matrix/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Include-a-file b/Lang/Uiua/Include-a-file
deleted file mode 120000
index 2dd83554d2..0000000000
--- a/Lang/Uiua/Include-a-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Include-a-file/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Increment-a-numerical-string b/Lang/Uiua/Increment-a-numerical-string
deleted file mode 120000
index 5102531751..0000000000
--- a/Lang/Uiua/Increment-a-numerical-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Increment-a-numerical-string/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Infinity b/Lang/Uiua/Infinity
deleted file mode 120000
index 13e94dd0ff..0000000000
--- a/Lang/Uiua/Infinity
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Infinity/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Integer-sequence b/Lang/Uiua/Integer-sequence
deleted file mode 120000
index 71a2ec5539..0000000000
--- a/Lang/Uiua/Integer-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Integer-sequence/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Iterated-digits-squaring b/Lang/Uiua/Iterated-digits-squaring
deleted file mode 120000
index e658bdae0a..0000000000
--- a/Lang/Uiua/Iterated-digits-squaring
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Iterated-digits-squaring/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Jacobi-symbol b/Lang/Uiua/Jacobi-symbol
deleted file mode 120000
index c75e72b791..0000000000
--- a/Lang/Uiua/Jacobi-symbol
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jacobi-symbol/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Jacobsthal-numbers b/Lang/Uiua/Jacobsthal-numbers
deleted file mode 120000
index 18c3697b6e..0000000000
--- a/Lang/Uiua/Jacobsthal-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jacobsthal-numbers/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Langtons-ant b/Lang/Uiua/Langtons-ant
deleted file mode 120000
index ea25fbedff..0000000000
--- a/Lang/Uiua/Langtons-ant
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Langtons-ant/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Largest-int-from-concatenated-ints b/Lang/Uiua/Largest-int-from-concatenated-ints
deleted file mode 120000
index 1440573f32..0000000000
--- a/Lang/Uiua/Largest-int-from-concatenated-ints
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Largest-int-from-concatenated-ints/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Largest-number-divisible-by-its-digits b/Lang/Uiua/Largest-number-divisible-by-its-digits
deleted file mode 120000
index acf7bb2c5f..0000000000
--- a/Lang/Uiua/Largest-number-divisible-by-its-digits
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Largest-number-divisible-by-its-digits/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Leap-year b/Lang/Uiua/Leap-year
deleted file mode 120000
index 526002b745..0000000000
--- a/Lang/Uiua/Leap-year
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Leap-year/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Least-common-multiple b/Lang/Uiua/Least-common-multiple
deleted file mode 120000
index 83973eef06..0000000000
--- a/Lang/Uiua/Least-common-multiple
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Least-common-multiple/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Levenshtein-distance b/Lang/Uiua/Levenshtein-distance
deleted file mode 120000
index 2d4dd26520..0000000000
--- a/Lang/Uiua/Levenshtein-distance
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Levenshtein-distance/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/List-comprehensions b/Lang/Uiua/List-comprehensions
deleted file mode 120000
index bf7b708e56..0000000000
--- a/Lang/Uiua/List-comprehensions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/List-comprehensions/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Literals-Floating-point b/Lang/Uiua/Literals-Floating-point
deleted file mode 120000
index 47d46d3181..0000000000
--- a/Lang/Uiua/Literals-Floating-point
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Literals-Floating-point/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Look-and-say-sequence b/Lang/Uiua/Look-and-say-sequence
deleted file mode 120000
index f3d748e2f9..0000000000
--- a/Lang/Uiua/Look-and-say-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Look-and-say-sequence/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Loop-over-multiple-arrays-simultaneously b/Lang/Uiua/Loop-over-multiple-arrays-simultaneously
deleted file mode 120000
index 59937c5207..0000000000
--- a/Lang/Uiua/Loop-over-multiple-arrays-simultaneously
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loop-over-multiple-arrays-simultaneously/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Loops-Break b/Lang/Uiua/Loops-Break
deleted file mode 120000
index 34504412c0..0000000000
--- a/Lang/Uiua/Loops-Break
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Break/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Loops-While b/Lang/Uiua/Loops-While
deleted file mode 120000
index d29e38976b..0000000000
--- a/Lang/Uiua/Loops-While
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-While/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Luhn-test-of-credit-card-numbers b/Lang/Uiua/Luhn-test-of-credit-card-numbers
deleted file mode 120000
index 6eae093c92..0000000000
--- a/Lang/Uiua/Luhn-test-of-credit-card-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Luhn-test-of-credit-card-numbers/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/M-bius-function b/Lang/Uiua/M-bius-function
deleted file mode 120000
index 5b29f0bb61..0000000000
--- a/Lang/Uiua/M-bius-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/M-bius-function/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Mandelbrot-set b/Lang/Uiua/Mandelbrot-set
deleted file mode 120000
index da1b6d50fa..0000000000
--- a/Lang/Uiua/Mandelbrot-set
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Mandelbrot-set/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Matrix-multiplication b/Lang/Uiua/Matrix-multiplication
deleted file mode 120000
index 8ecd583efc..0000000000
--- a/Lang/Uiua/Matrix-multiplication
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Matrix-multiplication/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Matrix-transposition b/Lang/Uiua/Matrix-transposition
deleted file mode 120000
index 877ca2d6ea..0000000000
--- a/Lang/Uiua/Matrix-transposition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Matrix-transposition/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Maze-solving b/Lang/Uiua/Maze-solving
deleted file mode 120000
index 02af57731f..0000000000
--- a/Lang/Uiua/Maze-solving
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Maze-solving/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/McNuggets-problem b/Lang/Uiua/McNuggets-problem
deleted file mode 120000
index 93b54a1053..0000000000
--- a/Lang/Uiua/McNuggets-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/McNuggets-problem/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Mertens-function b/Lang/Uiua/Mertens-function
deleted file mode 120000
index 8c5970d27b..0000000000
--- a/Lang/Uiua/Mertens-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Mertens-function/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Middle-three-digits b/Lang/Uiua/Middle-three-digits
deleted file mode 120000
index 5c8f171c17..0000000000
--- a/Lang/Uiua/Middle-three-digits
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Middle-three-digits/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Modular-inverse b/Lang/Uiua/Modular-inverse
deleted file mode 120000
index 70c091b2ce..0000000000
--- a/Lang/Uiua/Modular-inverse
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Modular-inverse/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Motzkin-numbers b/Lang/Uiua/Motzkin-numbers
deleted file mode 120000
index bef04d5aa9..0000000000
--- a/Lang/Uiua/Motzkin-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Motzkin-numbers/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Multifactorial b/Lang/Uiua/Multifactorial
deleted file mode 120000
index cd3719d315..0000000000
--- a/Lang/Uiua/Multifactorial
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Multifactorial/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Munchausen-numbers b/Lang/Uiua/Munchausen-numbers
deleted file mode 120000
index 2170e259d6..0000000000
--- a/Lang/Uiua/Munchausen-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Munchausen-numbers/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Munching-squares b/Lang/Uiua/Munching-squares
deleted file mode 120000
index 65b5e765bd..0000000000
--- a/Lang/Uiua/Munching-squares
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Munching-squares/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Musical-scale b/Lang/Uiua/Musical-scale
deleted file mode 120000
index 1f1e1695ce..0000000000
--- a/Lang/Uiua/Musical-scale
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Musical-scale/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/N-queens-problem b/Lang/Uiua/N-queens-problem
deleted file mode 120000
index d8b56e5e2a..0000000000
--- a/Lang/Uiua/N-queens-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/N-queens-problem/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Narcissistic-decimal-number b/Lang/Uiua/Narcissistic-decimal-number
deleted file mode 120000
index fa8d4f2d6a..0000000000
--- a/Lang/Uiua/Narcissistic-decimal-number
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Narcissistic-decimal-number/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Next-highest-int-from-digits b/Lang/Uiua/Next-highest-int-from-digits
deleted file mode 120000
index c924583411..0000000000
--- a/Lang/Uiua/Next-highest-int-from-digits
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Next-highest-int-from-digits/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Non-continuous-subsequences b/Lang/Uiua/Non-continuous-subsequences
deleted file mode 120000
index cbb45eef3a..0000000000
--- a/Lang/Uiua/Non-continuous-subsequences
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Non-continuous-subsequences/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Non-decimal-radices-Input b/Lang/Uiua/Non-decimal-radices-Input
deleted file mode 120000
index 4980368463..0000000000
--- a/Lang/Uiua/Non-decimal-radices-Input
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Non-decimal-radices-Input/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Non-decimal-radices-Output b/Lang/Uiua/Non-decimal-radices-Output
deleted file mode 120000
index 8d901b62f2..0000000000
--- a/Lang/Uiua/Non-decimal-radices-Output
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Non-decimal-radices-Output/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Numbers-which-are-not-the-sum-of-distinct-squares b/Lang/Uiua/Numbers-which-are-not-the-sum-of-distinct-squares
deleted file mode 120000
index fd1772b308..0000000000
--- a/Lang/Uiua/Numbers-which-are-not-the-sum-of-distinct-squares
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Numbers-which-are-not-the-sum-of-distinct-squares/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/One-dimensional-cellular-automata b/Lang/Uiua/One-dimensional-cellular-automata
deleted file mode 120000
index 5df7e9b84a..0000000000
--- a/Lang/Uiua/One-dimensional-cellular-automata
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/One-dimensional-cellular-automata/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Ordered-words b/Lang/Uiua/Ordered-words
deleted file mode 120000
index 7046edd964..0000000000
--- a/Lang/Uiua/Ordered-words
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ordered-words/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Padovan-sequence b/Lang/Uiua/Padovan-sequence
deleted file mode 120000
index 5ff77d41cb..0000000000
--- a/Lang/Uiua/Padovan-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Padovan-sequence/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Pangram-checker b/Lang/Uiua/Pangram-checker
deleted file mode 120000
index f48b39bf42..0000000000
--- a/Lang/Uiua/Pangram-checker
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pangram-checker/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Parsing-RPN-calculator-algorithm b/Lang/Uiua/Parsing-RPN-calculator-algorithm
deleted file mode 120000
index 650f272e3c..0000000000
--- a/Lang/Uiua/Parsing-RPN-calculator-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Parsing-RPN-calculator-algorithm/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Particle-fountain b/Lang/Uiua/Particle-fountain
deleted file mode 120000
index 5a4eedea1a..0000000000
--- a/Lang/Uiua/Particle-fountain
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Particle-fountain/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Partition-an-integer-x-into-n-primes b/Lang/Uiua/Partition-an-integer-x-into-n-primes
deleted file mode 120000
index b54ce3d232..0000000000
--- a/Lang/Uiua/Partition-an-integer-x-into-n-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Partition-an-integer-x-into-n-primes/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Partition-function-P b/Lang/Uiua/Partition-function-P
deleted file mode 120000
index e15b2a3f0a..0000000000
--- a/Lang/Uiua/Partition-function-P
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Partition-function-P/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Pascal-matrix-generation b/Lang/Uiua/Pascal-matrix-generation
deleted file mode 120000
index d6006d5f28..0000000000
--- a/Lang/Uiua/Pascal-matrix-generation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pascal-matrix-generation/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Pascals-triangle b/Lang/Uiua/Pascals-triangle
deleted file mode 120000
index d3ded33bae..0000000000
--- a/Lang/Uiua/Pascals-triangle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pascals-triangle/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Pascals-triangle-Puzzle b/Lang/Uiua/Pascals-triangle-Puzzle
deleted file mode 120000
index 9d1c439151..0000000000
--- a/Lang/Uiua/Pascals-triangle-Puzzle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pascals-triangle-Puzzle/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Password-generator b/Lang/Uiua/Password-generator
deleted file mode 120000
index 0a559819ad..0000000000
--- a/Lang/Uiua/Password-generator
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Password-generator/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Peaceful-chess-queen-armies b/Lang/Uiua/Peaceful-chess-queen-armies
deleted file mode 120000
index e3e9bf7f31..0000000000
--- a/Lang/Uiua/Peaceful-chess-queen-armies
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Peaceful-chess-queen-armies/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Perfect-numbers b/Lang/Uiua/Perfect-numbers
deleted file mode 120000
index 45883a0ea8..0000000000
--- a/Lang/Uiua/Perfect-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Perfect-numbers/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Perfect-shuffle b/Lang/Uiua/Perfect-shuffle
deleted file mode 120000
index 85b9185041..0000000000
--- a/Lang/Uiua/Perfect-shuffle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Perfect-shuffle/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Perfect-totient-numbers b/Lang/Uiua/Perfect-totient-numbers
deleted file mode 120000
index 473a593e75..0000000000
--- a/Lang/Uiua/Perfect-totient-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Perfect-totient-numbers/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Periodic-table b/Lang/Uiua/Periodic-table
deleted file mode 120000
index 5e6b72eb1b..0000000000
--- a/Lang/Uiua/Periodic-table
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Periodic-table/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Peripheral-drift-illusion b/Lang/Uiua/Peripheral-drift-illusion
deleted file mode 120000
index 6946c8b8f1..0000000000
--- a/Lang/Uiua/Peripheral-drift-illusion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Peripheral-drift-illusion/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Permutations b/Lang/Uiua/Permutations
deleted file mode 120000
index 850f4f7144..0000000000
--- a/Lang/Uiua/Permutations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Permutations/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Pernicious-numbers b/Lang/Uiua/Pernicious-numbers
deleted file mode 120000
index bcc3ebf322..0000000000
--- a/Lang/Uiua/Pernicious-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pernicious-numbers/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Phrase-reversals b/Lang/Uiua/Phrase-reversals
deleted file mode 120000
index 4584c0fe62..0000000000
--- a/Lang/Uiua/Phrase-reversals
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Phrase-reversals/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Pick-random-element b/Lang/Uiua/Pick-random-element
deleted file mode 120000
index e85c1a21e1..0000000000
--- a/Lang/Uiua/Pick-random-element
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pick-random-element/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Pisano-period b/Lang/Uiua/Pisano-period
deleted file mode 120000
index 2e3ec789ad..0000000000
--- a/Lang/Uiua/Pisano-period
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pisano-period/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Plasma-effect b/Lang/Uiua/Plasma-effect
deleted file mode 120000
index ca73067f67..0000000000
--- a/Lang/Uiua/Plasma-effect
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Plasma-effect/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Population-count b/Lang/Uiua/Population-count
deleted file mode 120000
index 601ac5e44a..0000000000
--- a/Lang/Uiua/Population-count
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Population-count/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Power-set b/Lang/Uiua/Power-set
deleted file mode 120000
index 21a40d792f..0000000000
--- a/Lang/Uiua/Power-set
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Power-set/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Primality-by-Wilsons-theorem b/Lang/Uiua/Primality-by-Wilsons-theorem
deleted file mode 120000
index 8e83e31c35..0000000000
--- a/Lang/Uiua/Primality-by-Wilsons-theorem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Primality-by-Wilsons-theorem/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Prime-conspiracy b/Lang/Uiua/Prime-conspiracy
deleted file mode 120000
index d1cad5b5e0..0000000000
--- a/Lang/Uiua/Prime-conspiracy
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Prime-conspiracy/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Prime-decomposition b/Lang/Uiua/Prime-decomposition
deleted file mode 120000
index bdff89da46..0000000000
--- a/Lang/Uiua/Prime-decomposition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Prime-decomposition/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Prime-numbers-whose-neighboring-pairs-are-tetraprimes b/Lang/Uiua/Prime-numbers-whose-neighboring-pairs-are-tetraprimes
deleted file mode 120000
index fead595d8f..0000000000
--- a/Lang/Uiua/Prime-numbers-whose-neighboring-pairs-are-tetraprimes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Prime-numbers-whose-neighboring-pairs-are-tetraprimes/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Prime-triangle b/Lang/Uiua/Prime-triangle
deleted file mode 120000
index 59527b37eb..0000000000
--- a/Lang/Uiua/Prime-triangle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Prime-triangle/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Program-termination b/Lang/Uiua/Program-termination
deleted file mode 120000
index 58f6f7fb66..0000000000
--- a/Lang/Uiua/Program-termination
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Program-termination/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Proper-divisors b/Lang/Uiua/Proper-divisors
deleted file mode 120000
index 94a040a034..0000000000
--- a/Lang/Uiua/Proper-divisors
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Proper-divisors/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Quoting-constructs b/Lang/Uiua/Quoting-constructs
deleted file mode 120000
index 0a39b9c1b8..0000000000
--- a/Lang/Uiua/Quoting-constructs
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Quoting-constructs/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/RPG-attributes-generator b/Lang/Uiua/RPG-attributes-generator
deleted file mode 120000
index 96e8262b6d..0000000000
--- a/Lang/Uiua/RPG-attributes-generator
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/RPG-attributes-generator/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Radical-of-an-integer b/Lang/Uiua/Radical-of-an-integer
deleted file mode 120000
index dd623262df..0000000000
--- a/Lang/Uiua/Radical-of-an-integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Radical-of-an-integer/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Random-Latin-squares b/Lang/Uiua/Random-Latin-squares
deleted file mode 120000
index 1244042116..0000000000
--- a/Lang/Uiua/Random-Latin-squares
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Random-Latin-squares/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Random-numbers b/Lang/Uiua/Random-numbers
deleted file mode 120000
index bc115ba91a..0000000000
--- a/Lang/Uiua/Random-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Random-numbers/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Real-constants-and-functions b/Lang/Uiua/Real-constants-and-functions
deleted file mode 120000
index fb71bc51b7..0000000000
--- a/Lang/Uiua/Real-constants-and-functions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Real-constants-and-functions/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Recamans-sequence b/Lang/Uiua/Recamans-sequence
deleted file mode 120000
index fdc4665a6a..0000000000
--- a/Lang/Uiua/Recamans-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Recamans-sequence/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Repeat b/Lang/Uiua/Repeat
deleted file mode 120000
index e75d6dc3ae..0000000000
--- a/Lang/Uiua/Repeat
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Repeat/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Reverse-words-in-a-string b/Lang/Uiua/Reverse-words-in-a-string
deleted file mode 120000
index a6f43bc773..0000000000
--- a/Lang/Uiua/Reverse-words-in-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Reverse-words-in-a-string/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Rosetta-Code-Rank-languages-by-popularity b/Lang/Uiua/Rosetta-Code-Rank-languages-by-popularity
deleted file mode 120000
index 582776a4d1..0000000000
--- a/Lang/Uiua/Rosetta-Code-Rank-languages-by-popularity
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Rosetta-Code-Rank-languages-by-popularity/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Run-length-encoding b/Lang/Uiua/Run-length-encoding
deleted file mode 120000
index b6eee5ca86..0000000000
--- a/Lang/Uiua/Run-length-encoding
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Run-length-encoding/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Ruth-Aaron-numbers b/Lang/Uiua/Ruth-Aaron-numbers
deleted file mode 120000
index bbf8bc039a..0000000000
--- a/Lang/Uiua/Ruth-Aaron-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ruth-Aaron-numbers/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Self-describing-numbers b/Lang/Uiua/Self-describing-numbers
deleted file mode 120000
index 158e71854a..0000000000
--- a/Lang/Uiua/Self-describing-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Self-describing-numbers/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Sequence-of-primes-by-trial-division b/Lang/Uiua/Sequence-of-primes-by-trial-division
deleted file mode 120000
index d94d81ea51..0000000000
--- a/Lang/Uiua/Sequence-of-primes-by-trial-division
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sequence-of-primes-by-trial-division/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Set-puzzle b/Lang/Uiua/Set-puzzle
deleted file mode 120000
index 3e3bc1d78f..0000000000
--- a/Lang/Uiua/Set-puzzle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Set-puzzle/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Set-right-adjacent-bits b/Lang/Uiua/Set-right-adjacent-bits
deleted file mode 120000
index 902c125b59..0000000000
--- a/Lang/Uiua/Set-right-adjacent-bits
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Set-right-adjacent-bits/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Sexy-primes b/Lang/Uiua/Sexy-primes
deleted file mode 120000
index 8d61a811ee..0000000000
--- a/Lang/Uiua/Sexy-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sexy-primes/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Shoelace-formula-for-polygonal-area b/Lang/Uiua/Shoelace-formula-for-polygonal-area
deleted file mode 120000
index d0a37fe60f..0000000000
--- a/Lang/Uiua/Shoelace-formula-for-polygonal-area
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Shoelace-formula-for-polygonal-area/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Smith-numbers b/Lang/Uiua/Smith-numbers
deleted file mode 120000
index 3e4afb53bf..0000000000
--- a/Lang/Uiua/Smith-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Smith-numbers/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Solve-a-Hidato-puzzle b/Lang/Uiua/Solve-a-Hidato-puzzle
deleted file mode 120000
index 961a795fe0..0000000000
--- a/Lang/Uiua/Solve-a-Hidato-puzzle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Solve-a-Hidato-puzzle/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Solve-a-Numbrix-puzzle b/Lang/Uiua/Solve-a-Numbrix-puzzle
deleted file mode 120000
index d5e755e9d5..0000000000
--- a/Lang/Uiua/Solve-a-Numbrix-puzzle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Solve-a-Numbrix-puzzle/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Sort-disjoint-sublist b/Lang/Uiua/Sort-disjoint-sublist
deleted file mode 120000
index 247b8fbb37..0000000000
--- a/Lang/Uiua/Sort-disjoint-sublist
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-disjoint-sublist/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Spiral-matrix b/Lang/Uiua/Spiral-matrix
deleted file mode 120000
index 58fe68a534..0000000000
--- a/Lang/Uiua/Spiral-matrix
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Spiral-matrix/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Split-a-character-string-based-on-change-of-character b/Lang/Uiua/Split-a-character-string-based-on-change-of-character
deleted file mode 120000
index 61d4dd8555..0000000000
--- a/Lang/Uiua/Split-a-character-string-based-on-change-of-character
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Split-a-character-string-based-on-change-of-character/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Square-free-integers b/Lang/Uiua/Square-free-integers
deleted file mode 120000
index 7a649e9779..0000000000
--- a/Lang/Uiua/Square-free-integers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Square-free-integers/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Stem-and-leaf-plot b/Lang/Uiua/Stem-and-leaf-plot
deleted file mode 120000
index cfafe7201a..0000000000
--- a/Lang/Uiua/Stem-and-leaf-plot
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Stem-and-leaf-plot/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/String-case b/Lang/Uiua/String-case
deleted file mode 120000
index 4362c13413..0000000000
--- a/Lang/Uiua/String-case
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-case/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/String-concatenation b/Lang/Uiua/String-concatenation
deleted file mode 120000
index cd5c2325bd..0000000000
--- a/Lang/Uiua/String-concatenation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-concatenation/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/String-interpolation-included- b/Lang/Uiua/String-interpolation-included-
deleted file mode 120000
index e880f170b4..0000000000
--- a/Lang/Uiua/String-interpolation-included-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-interpolation-included-/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/String-matching b/Lang/Uiua/String-matching
deleted file mode 120000
index d45ce27782..0000000000
--- a/Lang/Uiua/String-matching
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-matching/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Strip-a-set-of-characters-from-a-string b/Lang/Uiua/Strip-a-set-of-characters-from-a-string
deleted file mode 120000
index 951d176969..0000000000
--- a/Lang/Uiua/Strip-a-set-of-characters-from-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strip-a-set-of-characters-from-a-string/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Sudan-function b/Lang/Uiua/Sudan-function
deleted file mode 120000
index afedd391cb..0000000000
--- a/Lang/Uiua/Sudan-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sudan-function/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Sudoku b/Lang/Uiua/Sudoku
deleted file mode 120000
index be7e18a94a..0000000000
--- a/Lang/Uiua/Sudoku
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sudoku/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Sum-multiples-of-3-and-5 b/Lang/Uiua/Sum-multiples-of-3-and-5
deleted file mode 120000
index 1949126562..0000000000
--- a/Lang/Uiua/Sum-multiples-of-3-and-5
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sum-multiples-of-3-and-5/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Sum-of-elements-below-main-diagonal-of-matrix b/Lang/Uiua/Sum-of-elements-below-main-diagonal-of-matrix
deleted file mode 120000
index 37e45429c6..0000000000
--- a/Lang/Uiua/Sum-of-elements-below-main-diagonal-of-matrix
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sum-of-elements-below-main-diagonal-of-matrix/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Summarize-primes b/Lang/Uiua/Summarize-primes
deleted file mode 120000
index 4ad940883d..0000000000
--- a/Lang/Uiua/Summarize-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Summarize-primes/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Sylvesters-sequence b/Lang/Uiua/Sylvesters-sequence
deleted file mode 120000
index 859c7ca10b..0000000000
--- a/Lang/Uiua/Sylvesters-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sylvesters-sequence/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Tau-function b/Lang/Uiua/Tau-function
deleted file mode 120000
index 314431f8dd..0000000000
--- a/Lang/Uiua/Tau-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tau-function/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Test-a-function b/Lang/Uiua/Test-a-function
deleted file mode 120000
index 4e61b05504..0000000000
--- a/Lang/Uiua/Test-a-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Test-a-function/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Tic-tac-toe b/Lang/Uiua/Tic-tac-toe
deleted file mode 120000
index fc3b26168b..0000000000
--- a/Lang/Uiua/Tic-tac-toe
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tic-tac-toe/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Totient-function b/Lang/Uiua/Totient-function
deleted file mode 120000
index 838bb52e2f..0000000000
--- a/Lang/Uiua/Totient-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Totient-function/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Trigonometric-functions b/Lang/Uiua/Trigonometric-functions
deleted file mode 120000
index 07a1fc051e..0000000000
--- a/Lang/Uiua/Trigonometric-functions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Trigonometric-functions/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Truncatable-primes b/Lang/Uiua/Truncatable-primes
deleted file mode 120000
index b02bf04462..0000000000
--- a/Lang/Uiua/Truncatable-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Truncatable-primes/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Unprimeable-numbers b/Lang/Uiua/Unprimeable-numbers
deleted file mode 120000
index 5a99955431..0000000000
--- a/Lang/Uiua/Unprimeable-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Unprimeable-numbers/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Validate-International-Securities-Identification-Number b/Lang/Uiua/Validate-International-Securities-Identification-Number
deleted file mode 120000
index 6d28391590..0000000000
--- a/Lang/Uiua/Validate-International-Securities-Identification-Number
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Validate-International-Securities-Identification-Number/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Voronoi-diagram b/Lang/Uiua/Voronoi-diagram
deleted file mode 120000
index d3162948cc..0000000000
--- a/Lang/Uiua/Voronoi-diagram
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Voronoi-diagram/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Water-collected-between-towers b/Lang/Uiua/Water-collected-between-towers
deleted file mode 120000
index cfd5fa722a..0000000000
--- a/Lang/Uiua/Water-collected-between-towers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Water-collected-between-towers/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Weird-numbers b/Lang/Uiua/Weird-numbers
deleted file mode 120000
index 3d24f8a95b..0000000000
--- a/Lang/Uiua/Weird-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Weird-numbers/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Wieferich-primes b/Lang/Uiua/Wieferich-primes
deleted file mode 120000
index b9d2d78697..0000000000
--- a/Lang/Uiua/Wieferich-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Wieferich-primes/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Wireworld b/Lang/Uiua/Wireworld
deleted file mode 120000
index eaa729b6f4..0000000000
--- a/Lang/Uiua/Wireworld
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Wireworld/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Word-frequency b/Lang/Uiua/Word-frequency
deleted file mode 120000
index f59b23af8e..0000000000
--- a/Lang/Uiua/Word-frequency
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Word-frequency/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Word-wheel b/Lang/Uiua/Word-wheel
deleted file mode 120000
index f8bafcb6c7..0000000000
--- a/Lang/Uiua/Word-wheel
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Word-wheel/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Yellowstone-sequence b/Lang/Uiua/Yellowstone-sequence
deleted file mode 120000
index 0bae4da70f..0000000000
--- a/Lang/Uiua/Yellowstone-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Yellowstone-sequence/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Zebra-puzzle b/Lang/Uiua/Zebra-puzzle
deleted file mode 120000
index cd343323b4..0000000000
--- a/Lang/Uiua/Zebra-puzzle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Zebra-puzzle/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Zeckendorf-number-representation b/Lang/Uiua/Zeckendorf-number-representation
deleted file mode 120000
index 1748bf90ef..0000000000
--- a/Lang/Uiua/Zeckendorf-number-representation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Zeckendorf-number-representation/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Zhang-Suen-thinning-algorithm b/Lang/Uiua/Zhang-Suen-thinning-algorithm
deleted file mode 120000
index a7e773ae5b..0000000000
--- a/Lang/Uiua/Zhang-Suen-thinning-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Zhang-Suen-thinning-algorithm/Uiua
\ No newline at end of file
diff --git a/Lang/Uiua/Zig-zag-matrix b/Lang/Uiua/Zig-zag-matrix
deleted file mode 120000
index 3d79e2a814..0000000000
--- a/Lang/Uiua/Zig-zag-matrix
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Zig-zag-matrix/Uiua
\ No newline at end of file
diff --git a/Lang/Ultimate++/00-LANG.txt b/Lang/Ultimate++/00-LANG.txt
index a819e23329..b340f85de9 100644
--- a/Lang/Ultimate++/00-LANG.txt
+++ b/Lang/Ultimate++/00-LANG.txt
@@ -23,7 +23,7 @@ https://www.ultimatepp.org/www$uppweb$overview$en-us.html
==Language==
This example is a hello world using the Upp namespace.
-
+
#include
#include
@@ -39,7 +39,7 @@ CONSOLE_APP_MAIN
for(int i = 0; i < cmdline.GetCount(); i++) {
}
}
-
+
{{out}}
@@ -51,7 +51,7 @@ and Hello World
'''A+B B-A'''
-
+
#include
#include
#include
@@ -69,7 +69,7 @@ CONSOLE_APP_MAIN
for(int i = 0; i < cmdline.GetCount(); i++) {
}
}
-
+
{{out}}
@@ -84,7 +84,7 @@ CONSOLE_APP_MAIN
'''Conditional loop'''
-
+
#include
#include
#include
@@ -108,7 +108,7 @@ CONSOLE_APP_MAIN
for(int i = 0; i < cmdline.GetCount(); i++) {
}
}
-
+
diff --git a/Lang/Unicon/Circular-primes b/Lang/Unicon/Circular-primes
deleted file mode 120000
index 2ebcc862f3..0000000000
--- a/Lang/Unicon/Circular-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Circular-primes/Unicon
\ No newline at end of file
diff --git a/Lang/Unicon/Deceptive-numbers b/Lang/Unicon/Deceptive-numbers
deleted file mode 120000
index 74debdb49f..0000000000
--- a/Lang/Unicon/Deceptive-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Deceptive-numbers/Unicon
\ No newline at end of file
diff --git a/Lang/Unicon/Emirp-primes b/Lang/Unicon/Emirp-primes
deleted file mode 120000
index 63628f22b5..0000000000
--- a/Lang/Unicon/Emirp-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Emirp-primes/Unicon
\ No newline at end of file
diff --git a/Lang/Unicon/Equal-prime-and-composite-sums b/Lang/Unicon/Equal-prime-and-composite-sums
deleted file mode 120000
index 108da6ee4a..0000000000
--- a/Lang/Unicon/Equal-prime-and-composite-sums
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Equal-prime-and-composite-sums/Unicon
\ No newline at end of file
diff --git a/Lang/Unicon/Factorial-primes b/Lang/Unicon/Factorial-primes
deleted file mode 120000
index 2f492134d2..0000000000
--- a/Lang/Unicon/Factorial-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factorial-primes/Unicon
\ No newline at end of file
diff --git a/Lang/Unicon/Fermat-numbers b/Lang/Unicon/Fermat-numbers
deleted file mode 120000
index 18314c4e86..0000000000
--- a/Lang/Unicon/Fermat-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fermat-numbers/Unicon
\ No newline at end of file
diff --git a/Lang/Unicon/Pell-numbers b/Lang/Unicon/Pell-numbers
deleted file mode 120000
index 1e5fe97247..0000000000
--- a/Lang/Unicon/Pell-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pell-numbers/Unicon
\ No newline at end of file
diff --git a/Lang/Unicon/Repunit-primes b/Lang/Unicon/Repunit-primes
deleted file mode 120000
index a063ca9ca3..0000000000
--- a/Lang/Unicon/Repunit-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Repunit-primes/Unicon
\ No newline at end of file
diff --git a/Lang/Unicon/Ultra-useful-primes b/Lang/Unicon/Ultra-useful-primes
deleted file mode 120000
index c78c99febd..0000000000
--- a/Lang/Unicon/Ultra-useful-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Ultra-useful-primes/Unicon
\ No newline at end of file
diff --git a/Lang/Unicon/Unix-ls b/Lang/Unicon/Unix-ls
deleted file mode 120000
index 4501440ef6..0000000000
--- a/Lang/Unicon/Unix-ls
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Unix-ls/Unicon
\ No newline at end of file
diff --git a/Lang/Unicon/Vector b/Lang/Unicon/Vector
deleted file mode 120000
index 2c82c9664f..0000000000
--- a/Lang/Unicon/Vector
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Vector/Unicon
\ No newline at end of file
diff --git a/Lang/Unicon/Wagstaff-primes b/Lang/Unicon/Wagstaff-primes
deleted file mode 120000
index 9aef3c7dca..0000000000
--- a/Lang/Unicon/Wagstaff-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Wagstaff-primes/Unicon
\ No newline at end of file
diff --git a/Lang/Unison/Spiral-matrix b/Lang/Unison/Spiral-matrix
deleted file mode 120000
index 423c950e4b..0000000000
--- a/Lang/Unison/Spiral-matrix
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Spiral-matrix/Unison
\ No newline at end of file
diff --git a/Lang/UnixPipes/00-LANG.txt b/Lang/UnixPipes/00-LANG.txt
index 421b024690..8a315a0473 100644
--- a/Lang/UnixPipes/00-LANG.txt
+++ b/Lang/UnixPipes/00-LANG.txt
@@ -13,7 +13,7 @@ Using utilities from, [http://packages.debian.org/unstable/utils/moreutils moreu
Defining unfold as the opposite of xargs, i.e take a list of arguments and send them one at a time.
The definition would be
-
+
|cat unfold
num=$1
while read xxx; do
@@ -27,7 +27,7 @@ done
4 5 6
7 8
-
+
== Deleted solutions ==
We delete a UnixPipes solution when it is too similar to its UNIX Shell equivalent, or when it is incorrect (but the UNIX Shell solution is correct).
diff --git a/Lang/Ursalang/Anagrams b/Lang/Ursalang/Anagrams
deleted file mode 120000
index 955e3f6b2d..0000000000
--- a/Lang/Ursalang/Anagrams
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Anagrams/Ursalang
\ No newline at end of file
diff --git a/Lang/Ursalang/Averages-Arithmetic-mean b/Lang/Ursalang/Averages-Arithmetic-mean
deleted file mode 120000
index 47e790e66c..0000000000
--- a/Lang/Ursalang/Averages-Arithmetic-mean
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Arithmetic-mean/Ursalang
\ No newline at end of file
diff --git a/Lang/Ursalang/Averages-Mode b/Lang/Ursalang/Averages-Mode
deleted file mode 120000
index 3250a246da..0000000000
--- a/Lang/Ursalang/Averages-Mode
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Mode/Ursalang
\ No newline at end of file
diff --git a/Lang/Ursalang/Averages-Root-mean-square b/Lang/Ursalang/Averages-Root-mean-square
deleted file mode 120000
index 1acc742630..0000000000
--- a/Lang/Ursalang/Averages-Root-mean-square
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Root-mean-square/Ursalang
\ No newline at end of file
diff --git a/Lang/Ursalang/FizzBuzz b/Lang/Ursalang/FizzBuzz
deleted file mode 120000
index 7a0a8b495c..0000000000
--- a/Lang/Ursalang/FizzBuzz
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/FizzBuzz/Ursalang
\ No newline at end of file
diff --git a/Lang/Ursalang/Generator-Exponential b/Lang/Ursalang/Generator-Exponential
deleted file mode 120000
index 4533fcc114..0000000000
--- a/Lang/Ursalang/Generator-Exponential
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Generator-Exponential/Ursalang
\ No newline at end of file
diff --git a/Lang/Ursalang/Hailstone-sequence b/Lang/Ursalang/Hailstone-sequence
deleted file mode 120000
index fd3a016859..0000000000
--- a/Lang/Ursalang/Hailstone-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hailstone-sequence/Ursalang
\ No newline at end of file
diff --git a/Lang/Ursalang/Loops-Break b/Lang/Ursalang/Loops-Break
deleted file mode 120000
index 9956e0ecbe..0000000000
--- a/Lang/Ursalang/Loops-Break
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Break/Ursalang
\ No newline at end of file
diff --git a/Lang/Ursalang/Loops-Continue b/Lang/Ursalang/Loops-Continue
deleted file mode 120000
index b92db2e19a..0000000000
--- a/Lang/Ursalang/Loops-Continue
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Continue/Ursalang
\ No newline at end of file
diff --git a/Lang/Ursalang/Loops-For b/Lang/Ursalang/Loops-For
deleted file mode 120000
index 11a1ba7e0e..0000000000
--- a/Lang/Ursalang/Loops-For
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-For/Ursalang
\ No newline at end of file
diff --git a/Lang/Ursalang/Loops-While b/Lang/Ursalang/Loops-While
deleted file mode 120000
index 45dc0e4ade..0000000000
--- a/Lang/Ursalang/Loops-While
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-While/Ursalang
\ No newline at end of file
diff --git a/Lang/Ursalang/Man-or-boy-test b/Lang/Ursalang/Man-or-boy-test
deleted file mode 120000
index 14bf7f1c8c..0000000000
--- a/Lang/Ursalang/Man-or-boy-test
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Man-or-boy-test/Ursalang
\ No newline at end of file
diff --git a/Lang/Uxntal/00-LANG.txt b/Lang/Uxntal/00-LANG.txt
index 29f2256564..d0204e9b73 100644
--- a/Lang/Uxntal/00-LANG.txt
+++ b/Lang/Uxntal/00-LANG.txt
@@ -1,7 +1,5 @@
{{language|Uxntal}}
-''For unimplemented tasks see: [https://rosettacode.org/wiki/Tasks_not_implemented_in_Uxntal Uxntal Unimplemened]''
-
'''Uxntal''' is the assembly language for the Uxn virtual machine. The VM has 64KiB of addressable memory, two 256-byte stacks (data and return), and a 256-byte block of I/O ports, divided into 16 devices with 16 ports each. The Uxntal assembler features sub-labels, simple lambdas, user-defined macros, and shorthands for common immediate operations.
== Uxn VM ==
@@ -14,23 +12,10 @@ The 256 opcodes are divided into 8 special instructions, and 31 regular instruct
== Syntax ==
-
-In concatenative programming, there are no precedence rules, the calculations are merely performed in the sequence in which they are presented. The order with which elements come off a stack is known as last in, first out. '''''— [https://wiki.xxiivv.com/site/uxntal_syntax.html Uxntal Syntax]'''''
-
-
Instructions are written in uppercase, followed by any combination of the three flags 2kr. Hex values are written with lowercase a-f.
Code can be placed at specific addresses with the | rune, which is especially important for assembling the reset vector at address 0x100 (|0100) and for defining devices and zero-page variables. Padding can be inserted with the $ rune.
Labels are created with @ and &. The difference is that @ creates a label with the given name, while & creates a sub-label by prefixing the most recent @label and a slash.
-For further details on Uxntal syntax, see the [https://wiki.xxiivv.com/site/uxntal_syntax.html syntax page] on the XXIIVV wiki.
-
-[[Category:Assembler_language]]
-[[Category:Assembly]]
-[[Category:Esoteric_Languages]]
-[[Category:Execution_method/Compiled/Bytecode]]
-[[Category:Programming_paradigm/Object-oriented]]
-[[Category:Programming_paradigm/Concatenative]]
-[[Category:Typing/Unsafe]]
-[[Category:Typing/Untyped]]
\ No newline at end of file
+For further details on Uxntal syntax, see the [https://wiki.xxiivv.com/site/uxntal_syntax.html syntax page] on the XXIIVV wiki.
\ No newline at end of file
diff --git a/Lang/Uxntal/Array-length b/Lang/Uxntal/Array-length
deleted file mode 120000
index 438c43e439..0000000000
--- a/Lang/Uxntal/Array-length
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Array-length/Uxntal
\ No newline at end of file
diff --git a/Lang/Uxntal/Chaos-game b/Lang/Uxntal/Chaos-game
deleted file mode 120000
index 80920dd6ff..0000000000
--- a/Lang/Uxntal/Chaos-game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Chaos-game/Uxntal
\ No newline at end of file
diff --git a/Lang/Uxntal/Comments b/Lang/Uxntal/Comments
deleted file mode 120000
index b23db936ba..0000000000
--- a/Lang/Uxntal/Comments
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Comments/Uxntal
\ No newline at end of file
diff --git a/Lang/Uxntal/Conditional-structures b/Lang/Uxntal/Conditional-structures
deleted file mode 120000
index 75d2f67746..0000000000
--- a/Lang/Uxntal/Conditional-structures
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Conditional-structures/Uxntal
\ No newline at end of file
diff --git a/Lang/Uxntal/Copy-a-string b/Lang/Uxntal/Copy-a-string
deleted file mode 120000
index 00610fac74..0000000000
--- a/Lang/Uxntal/Copy-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Copy-a-string/Uxntal
\ No newline at end of file
diff --git a/Lang/Uxntal/Draw-a-pixel b/Lang/Uxntal/Draw-a-pixel
new file mode 120000
index 0000000000..68f5f2e311
--- /dev/null
+++ b/Lang/Uxntal/Draw-a-pixel
@@ -0,0 +1 @@
+../../Task/Draw-a-pixel/Uxntal
\ No newline at end of file
diff --git a/Lang/Uxntal/Fibonacci-sequence b/Lang/Uxntal/Fibonacci-sequence
deleted file mode 120000
index 7795c4564a..0000000000
--- a/Lang/Uxntal/Fibonacci-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fibonacci-sequence/Uxntal
\ No newline at end of file
diff --git a/Lang/Uxntal/Flow-control-structures b/Lang/Uxntal/Flow-control-structures
deleted file mode 120000
index db95ed817d..0000000000
--- a/Lang/Uxntal/Flow-control-structures
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Flow-control-structures/Uxntal
\ No newline at end of file
diff --git a/Lang/Uxntal/Hello-world-Graphical b/Lang/Uxntal/Hello-world-Graphical
deleted file mode 120000
index 2a5fadb101..0000000000
--- a/Lang/Uxntal/Hello-world-Graphical
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Graphical/Uxntal
\ No newline at end of file
diff --git a/Lang/Uxntal/Hello-world-Standard-error b/Lang/Uxntal/Hello-world-Standard-error
deleted file mode 120000
index be0ab3efa0..0000000000
--- a/Lang/Uxntal/Hello-world-Standard-error
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Standard-error/Uxntal
\ No newline at end of file
diff --git a/Lang/Uxntal/Hello-world-Text b/Lang/Uxntal/Hello-world-Text
new file mode 120000
index 0000000000..9024a6cde4
--- /dev/null
+++ b/Lang/Uxntal/Hello-world-Text
@@ -0,0 +1 @@
+../../Task/Hello-world-Text/Uxntal
\ No newline at end of file
diff --git a/Lang/Uxntal/Integer-sequence b/Lang/Uxntal/Integer-sequence
deleted file mode 120000
index 6d76150081..0000000000
--- a/Lang/Uxntal/Integer-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Integer-sequence/Uxntal
\ No newline at end of file
diff --git a/Lang/Uxntal/Loops-Break b/Lang/Uxntal/Loops-Break
deleted file mode 120000
index 5d6d57196c..0000000000
--- a/Lang/Uxntal/Loops-Break
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Break/Uxntal
\ No newline at end of file
diff --git a/Lang/Uxntal/Loops-Continue b/Lang/Uxntal/Loops-Continue
deleted file mode 120000
index 88d5768874..0000000000
--- a/Lang/Uxntal/Loops-Continue
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Continue/Uxntal
\ No newline at end of file
diff --git a/Lang/Uxntal/Loops-Do-while b/Lang/Uxntal/Loops-Do-while
deleted file mode 120000
index a3d655278d..0000000000
--- a/Lang/Uxntal/Loops-Do-while
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Do-while/Uxntal
\ No newline at end of file
diff --git a/Lang/Uxntal/Loops-For-with-a-specified-step b/Lang/Uxntal/Loops-For-with-a-specified-step
deleted file mode 120000
index 4f79f37c9f..0000000000
--- a/Lang/Uxntal/Loops-For-with-a-specified-step
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-For-with-a-specified-step/Uxntal
\ No newline at end of file
diff --git a/Lang/Uxntal/Loops-Foreach b/Lang/Uxntal/Loops-Foreach
deleted file mode 120000
index f8f61da6a7..0000000000
--- a/Lang/Uxntal/Loops-Foreach
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Foreach/Uxntal
\ No newline at end of file
diff --git a/Lang/Uxntal/Loops-N-plus-one-half b/Lang/Uxntal/Loops-N-plus-one-half
deleted file mode 120000
index f7ee606c95..0000000000
--- a/Lang/Uxntal/Loops-N-plus-one-half
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-N-plus-one-half/Uxntal
\ No newline at end of file
diff --git a/Lang/Uxntal/Loops-While b/Lang/Uxntal/Loops-While
deleted file mode 120000
index f8307c2951..0000000000
--- a/Lang/Uxntal/Loops-While
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-While/Uxntal
\ No newline at end of file
diff --git a/Lang/Uxntal/Quine b/Lang/Uxntal/Quine
deleted file mode 120000
index 9f3a4ca4d4..0000000000
--- a/Lang/Uxntal/Quine
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Quine/Uxntal
\ No newline at end of file
diff --git a/Lang/Uxntal/Stack-traces b/Lang/Uxntal/Stack-traces
deleted file mode 120000
index 0b9cf24839..0000000000
--- a/Lang/Uxntal/Stack-traces
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Stack-traces/Uxntal
\ No newline at end of file
diff --git a/Lang/Uxntal/String-length b/Lang/Uxntal/String-length
deleted file mode 120000
index 8dd88d3b90..0000000000
--- a/Lang/Uxntal/String-length
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-length/Uxntal
\ No newline at end of file
diff --git a/Lang/Uxntal/Weird-numbers b/Lang/Uxntal/Weird-numbers
deleted file mode 120000
index 1bddac81d2..0000000000
--- a/Lang/Uxntal/Weird-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Weird-numbers/Uxntal
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/00-LANG.txt b/Lang/V-(Vlang)/00-LANG.txt
index 56c1cc8279..9a2f5797f1 100644
--- a/Lang/V-(Vlang)/00-LANG.txt
+++ b/Lang/V-(Vlang)/00-LANG.txt
@@ -13,7 +13,7 @@
''Simple, fast, safe, compiled. For developing maintainable software.''
-'''Note: V (or Vlang). There was a language naming collision, so V (Vlang) was chosen.'''
+'''Note: V is also known as Vlang. There was a language naming collision, so V (Vlang) was chosen.'''
V (Vlang) is used here on Rosetta Code to disambiguate from the other language called [[:Category:V|V]].
@@ -21,15 +21,13 @@ V is an easier to learn, read, and use language.
[https://vlang.io V] first appeared in 2019 in a trial web sandbox, "The V Playground".
-V's design and history has been influenced by Go, C, Oberon, Rust, Swift, Kotlin, and Python.
+V's design has been influenced by Go, Oberon, Rust, Swift, Kotlin, and Python. [https://github.com/vlang/v/wiki/FAQ For V's FAQ]
-V's sources are published at [https://github.com/vlang/v GitHub], presently on version [https://github.com/vlang/v/releases 0.5.x].
-
-V's [https://github.com/vlang/v/wiki/FAQ FAQ] and [https://github.com/vlang/v/blob/master/ROADMAP.md roadmap] to see its validity, promise, and delivery of features.
+V's sources are published at [https://github.com/vlang/v GitHub], presently on version [https://github.com/vlang/v/releases 0.4.x].
V's compiler tool is similar in implementation to a multi purpose command processor: ''prompt$ v help''
-V language review and documentation is [https://github.com/vlang/v/blob/master/doc/docs.md here] for the professional, student, or as a hobby.
+V language review and documentation are [https://github.com/vlang/v/blob/master/doc/docs.md here].
==Helpful links==
* [https://en.everybodywiki.com/V_(programming_language) V in Wiki]
@@ -37,45 +35,59 @@ V language review and documentation is [https://github.com/vlang/v/blob/master/d
* [https://www.youtube.com/watch?v=pchEsYwA74Q V language overview and introduction] on behalf of the Sydney Computing Society
* [https://www.youtube.com/watch?v=_dIAcNp9bJs V language overview and presentation] for IBM
* Some of the code snippets are available at the archived [//github.com/v-community/v_rosetta V-Community (V Rosetta) GitHub]
-* For venturing into how to contribute, join, or help the V project can be found [https://github.com/vlang/v/blob/master/CONTRIBUTING.md#how-to-help-and-contribute-to-the-v-project here].
* More info on the below can be found at [https://modules.vlang.io/ modules used by V]
{| class="wikitable"
-! No. !! Module name !! !! No. !! Module name !! !! No. !! Module name
+! No. !! Module name !! !! No. !! Module name
|-
-| 1 || [https://modules.vlang.io/arrays.html arrays] || || 2 || [https://modules.vlang.io/benchmark.html benchmark] || || 3 || [https://modules.vlang.io/bitfield.html bifield]
+| 1 || [https://rosettacode.org/wiki/Category:Vlang-arrays arrays] || || 2 || [https://rosettacode.org/wiki/Category:Vlang-benchmark benchmark]
|-
-| 4 || [https://modules.vlang.io/cli.html cli] || || 5 || [https://modules.vlang.io/clipboard.html clipboard] || || 6 || [https://modules.vlang.io/compress.html compress]
+| 3 || [https://rosettacode.org/wiki/Category:Vlang-bifield bifield] || || 4 || [https://rosettacode.org/wiki/Category:Vlang-cli cli]
|-
-| 7 || [https://modules.vlang.io/context.html context] || || 8 || [https://modules.vlang.io/crypto.html crypto] || || 9 || [https://modules.vlang.io/net.websocket.html websocket]
+| 5 || [https://rosettacode.org/wiki/Category:Vlang-clipboard clipboard] || || 6 || [https://rosettacode.org/wiki/Category:Vlang-compress compress]
|-
-| 10 || [https://modules.vlang.io/datatypes.html datatypes] || || 11 || [https://modules.vlang.io/main.html main] || || 12 || [https://modules.vlang.io/dl.html dl]
+| 7 || [https://rosettacode.org/wiki/Category:Vlang-context context] || || 8 || [https://rosettacode.org/wiki/Category:Vlang-crypto crypto]
|-
-| 13 || [https://modules.vlang.io/dlmalloc.html dlmalloc] || || 14 || [https://modules.vlang.io/encoding.html encoding] || || 15 || [https://modules.vlang.io/eventbus.html eventbus]
+| 9 || [https://rosettacode.org/wiki/Category:Vlang-darwin darwin] || || 10 || [https://rosettacode.org/wiki/Category:Vlang-datatypes datatypes]
|-
-| 16 || [https://modules.vlang.io/flag.html flag] || || 17 || [https://modules.vlang.io/fontstash.html fontstash] || || 18 || [https://modules.vlang.io/gg.html gg]
+| 11 || [https://rosettacode.org/wiki/Category:Vlang-main main] || || 12 || [https://rosettacode.org/wiki/Category:Vlang-dl dl]
|-
-| 19 || [https://modules.vlang.io/gx.html gx] || || 20 || [https://modules.vlang.io/hash.html hash] || || 21 || [https://modules.vlang.io/io.html io]
+| 13 || [https://rosettacode.org/wiki/Category:Vlang-dlmalloc dlmalloc] || || 14 || [https://rosettacode.org/wiki/Category:Vlang-encoding encoding]
|-
-| 22 || [https://modules.vlang.io/json.html json] || || 23 || [https://modules.vlang.io/log.html log] || || 24 || [https://modules.vlang.io/math.html math]
+| 15 || [https://rosettacode.org/wiki/Category:Vlang-eventbus eventbus] || || 16 || [https://rosettacode.org/wiki/Category:Vlang-flag flag]
|-
-| 25 || [https://modules.vlang.io/db.mssql.html mssql] || || 26 || [https://modules.vlang.io/db.mysql.html mysql] || || 27 || [https://modules.vlang.io/net.html net]
+| 17 || [https://rosettacode.org/wiki/Category:Vlang-fontstash fontstash] || || 18 || [https://rosettacode.org/wiki/Category:Vlang-gg gg]
|-
-| 28 || [https://modules.vlang.io/orm.html orm] || || 29 || [https://modules.vlang.io/os.html os] || || 30 || [https://modules.vlang.io/pg.html pg]
+| 19 || [https://rosettacode.org/wiki/Category:Vlang-gx gx] || || 20 || [https://rosettacode.org/wiki/Category:Vlang-crypto hash]
|-
-| 31 || [https://modules.vlang.io/picoev.html picoev] || || 32 || [https://modules.vlang.io/veb.html veb] || || 33 || [https://modules.vlang.io/picohttpparser.html picohttpparser]
+| 21 || [https://rosettacode.org/wiki/Category:Vlang-io io] || || 22 || [https://rosettacode.org/wiki/Category:Vlang-json json]
|-
-| 34 || [https://modules.vlang.io/rand.html rand]|| || 35 || [https://modules.vlang.io/readline.html readline] || || 36 || [https://modules.vlang.io/regex.html regex]
+| 23 || [https://rosettacode.org/wiki/Category:Vlang-log log] || || 24 || [https://rosettacode.org/wiki/Category:Vlang-math math]
|-
-| 37 || [https://modules.vlang.io/runtime.html runtime] || || 38 || [https://modules.vlang.io/semver.html semver] || || 39 || [https://modules.vlang.io/sokol.sapp.html sokol.sapp]
+| 25 || [https://rosettacode.org/wiki/Category:Vlang-mssql mssql] || || 26 || [https://rosettacode.org/wiki/Category:Vlang-mysql mysql]
|-
-| 40 || [https://modules.vlang.io/db.sqlite.html sqlite] || || 41 || [https://modules.vlang.io/stbi.html stbi] || || 42 || [https://modules.vlang.io/strconv.html strconv]
+| 27 || [https://rosettacode.org/wiki/Category:Vlang-net net] || || 28 || [https://rosettacode.org/wiki/Category:Vlang-orm orm]
|-
-| 43 || [https://modules.vlang.io/strings.html strings] || || 44 || [https://modules.vlang.io/sync.html sync] || || 45 || [https://modules.vlang.io/szip.html szip]
+| 29 || [https://rosettacode.org/wiki/Category:Vlang-os os] || || 30 || [https://rosettacode.org/wiki/Category:Vlang-pg pg]
|-
-| 46 || [https://modules.vlang.io/term.html term] || || 47 || [https://modules.vlang.io/time.html time] || || 48 || [https://modules.vlang.io/toml.html toml]
+| 31 || [https://rosettacode.org/wiki/Category:Vlang-picoev picoev] || || 32 || [https://rosettacode.org/wiki/Category:Vlang-event picoev]
|-
-| 49 || [https://modules.vlang.io/vweb.html vweb] || || 50 || [https://modules.vlang.io/wasm.html wasm] || || 51 || [https://modules.vlang.io/maps.html maps]
+| 33 || [https://rosettacode.org/wiki/Category:Vlang-picohttpparser picohttpparser] || || 34 || [https://rosettacode.org/wiki/Category:Vlang-rand rand]
+|-
+| 35 || [https://rosettacode.org/wiki/Category:Vlang-readline readline] || || 36 || [https://rosettacode.org/wiki/Category:Vlang-regex regex]
+|-
+| 37 || [https://rosettacode.org/wiki/Category:Vlang-runtime runtime] || || 38 || [https://rosettacode.org/wiki/Category:Vlang-semver semver]
+|-
+| 39 || [https://rosettacode.org/wiki/Category:Vlang-sokol sokol] || || 40 || [https://rosettacode.org/wiki/Category:Vlang-sqlite sqlite]
+|-
+| 41 || [https://rosettacode.org/wiki/Category:Vlang-stbi stbi] || || 42 || [https://rosettacode.org/wiki/Category:Vlang-strconv strconv]
+|-
+| 43 || [https://rosettacode.org/wiki/Category:Vlang-strings strings] || || 44 || [https://rosettacode.org/wiki/Category:Vlang-sync sync]
+|-
+| 45 || [https://rosettacode.org/wiki/Category:Vlang-szip szip] || || 46 || [https://rosettacode.org/wiki/Category:Vlang-term term]
+|-
+| 47 || [https://rosettacode.org/wiki/Category:Vlang-time time] || || 48 || [https://rosettacode.org/wiki/Category:Vlang-toml toml]
+|-
+| 49 || [https://rosettacode.org/wiki/Category:Vlang-vweb vweb] || || 50 || [https://rosettacode.org/wiki/Category:Vlang-wasm wasm]
|-
-| 52 || [https://modules.vlang.io/sokol.audio.html sokol.audio] || || 53 || [https://modules.vlang.io/x.ttf.html ttf] || || 54 || [https://modules.vlang.io/x.json2.html json2]
|}
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/15-puzzle-solver b/Lang/V-(Vlang)/15-puzzle-solver
deleted file mode 120000
index 9193bcde1c..0000000000
--- a/Lang/V-(Vlang)/15-puzzle-solver
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/15-puzzle-solver/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Accumulator-factory b/Lang/V-(Vlang)/Accumulator-factory
deleted file mode 120000
index 20257d9d8b..0000000000
--- a/Lang/V-(Vlang)/Accumulator-factory
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Accumulator-factory/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Add-a-variable-to-a-class-instance-at-runtime b/Lang/V-(Vlang)/Add-a-variable-to-a-class-instance-at-runtime
deleted file mode 120000
index dccc76d376..0000000000
--- a/Lang/V-(Vlang)/Add-a-variable-to-a-class-instance-at-runtime
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Add-a-variable-to-a-class-instance-at-runtime/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Animate-a-pendulum b/Lang/V-(Vlang)/Animate-a-pendulum
deleted file mode 120000
index 87bb2b5f80..0000000000
--- a/Lang/V-(Vlang)/Animate-a-pendulum
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Animate-a-pendulum/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Apply-a-callback-to-an-array b/Lang/V-(Vlang)/Apply-a-callback-to-an-array
deleted file mode 120000
index 8b7f34e888..0000000000
--- a/Lang/V-(Vlang)/Apply-a-callback-to-an-array
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Apply-a-callback-to-an-array/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Approximate-equality b/Lang/V-(Vlang)/Approximate-equality
deleted file mode 120000
index ba99a599b6..0000000000
--- a/Lang/V-(Vlang)/Approximate-equality
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Approximate-equality/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Archimedean-spiral b/Lang/V-(Vlang)/Archimedean-spiral
deleted file mode 120000
index 0915aa0768..0000000000
--- a/Lang/V-(Vlang)/Archimedean-spiral
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Archimedean-spiral/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Arithmetic-derivative b/Lang/V-(Vlang)/Arithmetic-derivative
deleted file mode 120000
index 0d28ff0c59..0000000000
--- a/Lang/V-(Vlang)/Arithmetic-derivative
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-derivative/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Best-shuffle b/Lang/V-(Vlang)/Best-shuffle
deleted file mode 120000
index a5a48fba81..0000000000
--- a/Lang/V-(Vlang)/Best-shuffle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Best-shuffle/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Bioinformatics-base-count b/Lang/V-(Vlang)/Bioinformatics-base-count
new file mode 120000
index 0000000000..93867218eb
--- /dev/null
+++ b/Lang/V-(Vlang)/Bioinformatics-base-count
@@ -0,0 +1 @@
+../../Task/Bioinformatics-base-count/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Bitcoin-address-validation b/Lang/V-(Vlang)/Bitcoin-address-validation
deleted file mode 120000
index 28da42f695..0000000000
--- a/Lang/V-(Vlang)/Bitcoin-address-validation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bitcoin-address-validation/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Bitwise-operations b/Lang/V-(Vlang)/Bitwise-operations
deleted file mode 120000
index e781b4c06c..0000000000
--- a/Lang/V-(Vlang)/Bitwise-operations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bitwise-operations/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Box-the-compass b/Lang/V-(Vlang)/Box-the-compass
deleted file mode 120000
index 8aa45acb1f..0000000000
--- a/Lang/V-(Vlang)/Box-the-compass
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Box-the-compass/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Burrows-Wheeler-transform b/Lang/V-(Vlang)/Burrows-Wheeler-transform
deleted file mode 120000
index c6a4d26892..0000000000
--- a/Lang/V-(Vlang)/Burrows-Wheeler-transform
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Burrows-Wheeler-transform/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Canonicalize-CIDR b/Lang/V-(Vlang)/Canonicalize-CIDR
deleted file mode 120000
index 42ce54344e..0000000000
--- a/Lang/V-(Vlang)/Canonicalize-CIDR
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Canonicalize-CIDR/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Classes b/Lang/V-(Vlang)/Classes
deleted file mode 120000
index a7d339230e..0000000000
--- a/Lang/V-(Vlang)/Classes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Classes/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Closures-Value-capture b/Lang/V-(Vlang)/Closures-Value-capture
deleted file mode 120000
index d671104741..0000000000
--- a/Lang/V-(Vlang)/Closures-Value-capture
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Closures-Value-capture/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Color-wheel b/Lang/V-(Vlang)/Color-wheel
deleted file mode 120000
index b828d5a770..0000000000
--- a/Lang/V-(Vlang)/Color-wheel
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Color-wheel/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Compile-time-calculation b/Lang/V-(Vlang)/Compile-time-calculation
deleted file mode 120000
index 1ec9e378fa..0000000000
--- a/Lang/V-(Vlang)/Compile-time-calculation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compile-time-calculation/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Constrained-genericity b/Lang/V-(Vlang)/Constrained-genericity
deleted file mode 120000
index af413abe8c..0000000000
--- a/Lang/V-(Vlang)/Constrained-genericity
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Constrained-genericity/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Convert-seconds-to-compound-duration b/Lang/V-(Vlang)/Convert-seconds-to-compound-duration
deleted file mode 120000
index 90e9599792..0000000000
--- a/Lang/V-(Vlang)/Convert-seconds-to-compound-duration
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Convert-seconds-to-compound-duration/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Create-an-object-at-a-given-address b/Lang/V-(Vlang)/Create-an-object-at-a-given-address
deleted file mode 120000
index 2a735f50a4..0000000000
--- a/Lang/V-(Vlang)/Create-an-object-at-a-given-address
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Create-an-object-at-a-given-address/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/De-Bruijn-sequences b/Lang/V-(Vlang)/De-Bruijn-sequences
deleted file mode 120000
index 03d47939a3..0000000000
--- a/Lang/V-(Vlang)/De-Bruijn-sequences
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/De-Bruijn-sequences/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Death-Star b/Lang/V-(Vlang)/Death-Star
deleted file mode 120000
index ed8ea3e0a6..0000000000
--- a/Lang/V-(Vlang)/Death-Star
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Death-Star/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Define-a-primitive-data-type b/Lang/V-(Vlang)/Define-a-primitive-data-type
deleted file mode 120000
index aebf4cbe69..0000000000
--- a/Lang/V-(Vlang)/Define-a-primitive-data-type
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Define-a-primitive-data-type/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Dijkstras-algorithm b/Lang/V-(Vlang)/Dijkstras-algorithm
deleted file mode 120000
index c6cb06de44..0000000000
--- a/Lang/V-(Vlang)/Dijkstras-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dijkstras-algorithm/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Dragon-curve b/Lang/V-(Vlang)/Dragon-curve
deleted file mode 120000
index ea14877291..0000000000
--- a/Lang/V-(Vlang)/Dragon-curve
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dragon-curve/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Draw-a-cuboid b/Lang/V-(Vlang)/Draw-a-cuboid
deleted file mode 120000
index 675b202e8b..0000000000
--- a/Lang/V-(Vlang)/Draw-a-cuboid
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Draw-a-cuboid/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Draw-a-rotating-cube b/Lang/V-(Vlang)/Draw-a-rotating-cube
deleted file mode 120000
index c731b8a529..0000000000
--- a/Lang/V-(Vlang)/Draw-a-rotating-cube
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Draw-a-rotating-cube/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Dutch-national-flag-problem b/Lang/V-(Vlang)/Dutch-national-flag-problem
deleted file mode 120000
index 826568fc3d..0000000000
--- a/Lang/V-(Vlang)/Dutch-national-flag-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dutch-national-flag-problem/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Dynamic-variable-names b/Lang/V-(Vlang)/Dynamic-variable-names
deleted file mode 120000
index 59780bc7d8..0000000000
--- a/Lang/V-(Vlang)/Dynamic-variable-names
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dynamic-variable-names/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Eertree b/Lang/V-(Vlang)/Eertree
deleted file mode 120000
index df3a9103a6..0000000000
--- a/Lang/V-(Vlang)/Eertree
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Eertree/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Elementary-cellular-automaton-Random-number-generator b/Lang/V-(Vlang)/Elementary-cellular-automaton-Random-number-generator
deleted file mode 120000
index d02a93aeca..0000000000
--- a/Lang/V-(Vlang)/Elementary-cellular-automaton-Random-number-generator
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Elementary-cellular-automaton-Random-number-generator/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Enumerations b/Lang/V-(Vlang)/Enumerations
deleted file mode 120000
index 711e1f8ea0..0000000000
--- a/Lang/V-(Vlang)/Enumerations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Enumerations/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Execute-HQ9+ b/Lang/V-(Vlang)/Execute-HQ9+
deleted file mode 120000
index cecaa41a14..0000000000
--- a/Lang/V-(Vlang)/Execute-HQ9+
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Execute-HQ9+/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Exponentiation-with-infix-operators-in-or-operating-on-the-base b/Lang/V-(Vlang)/Exponentiation-with-infix-operators-in-or-operating-on-the-base
deleted file mode 120000
index 119da73572..0000000000
--- a/Lang/V-(Vlang)/Exponentiation-with-infix-operators-in-or-operating-on-the-base
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Exponentiation-with-infix-operators-in-or-operating-on-the-base/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Find-Chess960-starting-position-identifier b/Lang/V-(Vlang)/Find-Chess960-starting-position-identifier
deleted file mode 120000
index b88e0a4eb1..0000000000
--- a/Lang/V-(Vlang)/Find-Chess960-starting-position-identifier
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Find-Chess960-starting-position-identifier/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Find-the-last-Sunday-of-each-month b/Lang/V-(Vlang)/Find-the-last-Sunday-of-each-month
deleted file mode 120000
index 8c3dbc9a79..0000000000
--- a/Lang/V-(Vlang)/Find-the-last-Sunday-of-each-month
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Find-the-last-Sunday-of-each-month/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Five-weekends b/Lang/V-(Vlang)/Five-weekends
deleted file mode 120000
index ed2a49051d..0000000000
--- a/Lang/V-(Vlang)/Five-weekends
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Five-weekends/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Fivenum b/Lang/V-(Vlang)/Fivenum
deleted file mode 120000
index 77154f6b56..0000000000
--- a/Lang/V-(Vlang)/Fivenum
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fivenum/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Flipping-bits-game b/Lang/V-(Vlang)/Flipping-bits-game
deleted file mode 120000
index f272f02e11..0000000000
--- a/Lang/V-(Vlang)/Flipping-bits-game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Flipping-bits-game/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Floyds-triangle b/Lang/V-(Vlang)/Floyds-triangle
deleted file mode 120000
index cc0e0a9649..0000000000
--- a/Lang/V-(Vlang)/Floyds-triangle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Floyds-triangle/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Galton-box-animation b/Lang/V-(Vlang)/Galton-box-animation
deleted file mode 120000
index 2caf8cb18c..0000000000
--- a/Lang/V-(Vlang)/Galton-box-animation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Galton-box-animation/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Generate-random-chess-position b/Lang/V-(Vlang)/Generate-random-chess-position
deleted file mode 120000
index 7687c7236a..0000000000
--- a/Lang/V-(Vlang)/Generate-random-chess-position
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Generate-random-chess-position/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Get-system-command-output b/Lang/V-(Vlang)/Get-system-command-output
deleted file mode 120000
index 1b29764574..0000000000
--- a/Lang/V-(Vlang)/Get-system-command-output
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Get-system-command-output/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Hash-join b/Lang/V-(Vlang)/Hash-join
deleted file mode 120000
index a28257577b..0000000000
--- a/Lang/V-(Vlang)/Hash-join
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hash-join/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Hello-world-Standard-error b/Lang/V-(Vlang)/Hello-world-Standard-error
deleted file mode 120000
index f1aa7945d1..0000000000
--- a/Lang/V-(Vlang)/Hello-world-Standard-error
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Standard-error/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Higher-order-functions b/Lang/V-(Vlang)/Higher-order-functions
deleted file mode 120000
index a6c0b9843e..0000000000
--- a/Lang/V-(Vlang)/Higher-order-functions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Higher-order-functions/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Hilbert-curve b/Lang/V-(Vlang)/Hilbert-curve
deleted file mode 120000
index d691e8f108..0000000000
--- a/Lang/V-(Vlang)/Hilbert-curve
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hilbert-curve/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Humble-numbers b/Lang/V-(Vlang)/Humble-numbers
deleted file mode 120000
index c32de84293..0000000000
--- a/Lang/V-(Vlang)/Humble-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Humble-numbers/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Idiomatically-determine-all-the-lowercase-and-uppercase-letters b/Lang/V-(Vlang)/Idiomatically-determine-all-the-lowercase-and-uppercase-letters
deleted file mode 120000
index efa66c489c..0000000000
--- a/Lang/V-(Vlang)/Idiomatically-determine-all-the-lowercase-and-uppercase-letters
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Idiomatically-determine-all-the-lowercase-and-uppercase-letters/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Include-a-file b/Lang/V-(Vlang)/Include-a-file
deleted file mode 120000
index 439a7ac6c3..0000000000
--- a/Lang/V-(Vlang)/Include-a-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Include-a-file/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Inheritance-Multiple b/Lang/V-(Vlang)/Inheritance-Multiple
deleted file mode 120000
index 5c8421d069..0000000000
--- a/Lang/V-(Vlang)/Inheritance-Multiple
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Inheritance-Multiple/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Inheritance-Single b/Lang/V-(Vlang)/Inheritance-Single
deleted file mode 120000
index e9a1dd6d9f..0000000000
--- a/Lang/V-(Vlang)/Inheritance-Single
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Inheritance-Single/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Integer-comparison b/Lang/V-(Vlang)/Integer-comparison
deleted file mode 120000
index 0152b2d289..0000000000
--- a/Lang/V-(Vlang)/Integer-comparison
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Integer-comparison/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Juggler-sequence b/Lang/V-(Vlang)/Juggler-sequence
deleted file mode 120000
index 56d41efb28..0000000000
--- a/Lang/V-(Vlang)/Juggler-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Juggler-sequence/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Knights-tour b/Lang/V-(Vlang)/Knights-tour
deleted file mode 120000
index 542607dce0..0000000000
--- a/Lang/V-(Vlang)/Knights-tour
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Knights-tour/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/LU-decomposition b/Lang/V-(Vlang)/LU-decomposition
deleted file mode 120000
index 1eb080d8ba..0000000000
--- a/Lang/V-(Vlang)/LU-decomposition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/LU-decomposition/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/LZW-compression b/Lang/V-(Vlang)/LZW-compression
deleted file mode 120000
index 36e201b60a..0000000000
--- a/Lang/V-(Vlang)/LZW-compression
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/LZW-compression/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Langtons-ant b/Lang/V-(Vlang)/Langtons-ant
deleted file mode 120000
index ccce40cc4e..0000000000
--- a/Lang/V-(Vlang)/Langtons-ant
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Langtons-ant/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Legendre-prime-counting-function b/Lang/V-(Vlang)/Legendre-prime-counting-function
deleted file mode 120000
index ca54942178..0000000000
--- a/Lang/V-(Vlang)/Legendre-prime-counting-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Legendre-prime-counting-function/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Logical-operations b/Lang/V-(Vlang)/Logical-operations
deleted file mode 120000
index bed3efe6b2..0000000000
--- a/Lang/V-(Vlang)/Logical-operations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Logical-operations/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/MD4 b/Lang/V-(Vlang)/MD4
deleted file mode 120000
index 4ef84d93a7..0000000000
--- a/Lang/V-(Vlang)/MD4
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/MD4/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Magic-8-ball b/Lang/V-(Vlang)/Magic-8-ball
deleted file mode 120000
index 01ad1da8ee..0000000000
--- a/Lang/V-(Vlang)/Magic-8-ball
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Magic-8-ball/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Magic-squares-of-odd-order b/Lang/V-(Vlang)/Magic-squares-of-odd-order
deleted file mode 120000
index 15a07e422e..0000000000
--- a/Lang/V-(Vlang)/Magic-squares-of-odd-order
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Magic-squares-of-odd-order/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Map-range b/Lang/V-(Vlang)/Map-range
deleted file mode 120000
index bd9191a4a1..0000000000
--- a/Lang/V-(Vlang)/Map-range
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Map-range/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Matrix-chain-multiplication b/Lang/V-(Vlang)/Matrix-chain-multiplication
deleted file mode 120000
index 6f5b000cff..0000000000
--- a/Lang/V-(Vlang)/Matrix-chain-multiplication
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Matrix-chain-multiplication/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Matrix-transposition b/Lang/V-(Vlang)/Matrix-transposition
deleted file mode 120000
index f283dea370..0000000000
--- a/Lang/V-(Vlang)/Matrix-transposition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Matrix-transposition/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Mayan-numerals b/Lang/V-(Vlang)/Mayan-numerals
deleted file mode 120000
index 005198e98f..0000000000
--- a/Lang/V-(Vlang)/Mayan-numerals
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Mayan-numerals/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Maze-generation b/Lang/V-(Vlang)/Maze-generation
deleted file mode 120000
index 62cabc5306..0000000000
--- a/Lang/V-(Vlang)/Maze-generation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Maze-generation/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Maze-solving b/Lang/V-(Vlang)/Maze-solving
deleted file mode 120000
index 1dd904fdc6..0000000000
--- a/Lang/V-(Vlang)/Maze-solving
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Maze-solving/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Memory-allocation b/Lang/V-(Vlang)/Memory-allocation
deleted file mode 120000
index 28b226407c..0000000000
--- a/Lang/V-(Vlang)/Memory-allocation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Memory-allocation/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Metaprogramming b/Lang/V-(Vlang)/Metaprogramming
deleted file mode 120000
index 6b8564d95e..0000000000
--- a/Lang/V-(Vlang)/Metaprogramming
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Metaprogramming/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Mind-boggling-card-trick b/Lang/V-(Vlang)/Mind-boggling-card-trick
deleted file mode 120000
index 765932978d..0000000000
--- a/Lang/V-(Vlang)/Mind-boggling-card-trick
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Mind-boggling-card-trick/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Monads-List-monad b/Lang/V-(Vlang)/Monads-List-monad
deleted file mode 120000
index 60c249323a..0000000000
--- a/Lang/V-(Vlang)/Monads-List-monad
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Monads-List-monad/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Monads-Maybe-monad b/Lang/V-(Vlang)/Monads-Maybe-monad
deleted file mode 120000
index bcf0927f50..0000000000
--- a/Lang/V-(Vlang)/Monads-Maybe-monad
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Monads-Maybe-monad/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Morse-code b/Lang/V-(Vlang)/Morse-code
deleted file mode 120000
index ac98ffd266..0000000000
--- a/Lang/V-(Vlang)/Morse-code
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Morse-code/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Multiplication-tables b/Lang/V-(Vlang)/Multiplication-tables
deleted file mode 120000
index 3bdff7103e..0000000000
--- a/Lang/V-(Vlang)/Multiplication-tables
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Multiplication-tables/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/N-queens-problem b/Lang/V-(Vlang)/N-queens-problem
deleted file mode 120000
index 50b06d4a76..0000000000
--- a/Lang/V-(Vlang)/N-queens-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/N-queens-problem/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Nonoblock b/Lang/V-(Vlang)/Nonoblock
deleted file mode 120000
index 930ce96e10..0000000000
--- a/Lang/V-(Vlang)/Nonoblock
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nonoblock/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/One-dimensional-cellular-automata b/Lang/V-(Vlang)/One-dimensional-cellular-automata
deleted file mode 120000
index 7b9510a27e..0000000000
--- a/Lang/V-(Vlang)/One-dimensional-cellular-automata
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/One-dimensional-cellular-automata/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Operator-precedence b/Lang/V-(Vlang)/Operator-precedence
deleted file mode 120000
index 749797e963..0000000000
--- a/Lang/V-(Vlang)/Operator-precedence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Operator-precedence/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Optional-parameters b/Lang/V-(Vlang)/Optional-parameters
deleted file mode 120000
index 34451b5a74..0000000000
--- a/Lang/V-(Vlang)/Optional-parameters
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Optional-parameters/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Palindrome-dates b/Lang/V-(Vlang)/Palindrome-dates
deleted file mode 120000
index 58cd472885..0000000000
--- a/Lang/V-(Vlang)/Palindrome-dates
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Palindrome-dates/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Pancake-numbers b/Lang/V-(Vlang)/Pancake-numbers
deleted file mode 120000
index 03055f6721..0000000000
--- a/Lang/V-(Vlang)/Pancake-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pancake-numbers/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Pangram-checker b/Lang/V-(Vlang)/Pangram-checker
deleted file mode 120000
index 281ca7e770..0000000000
--- a/Lang/V-(Vlang)/Pangram-checker
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pangram-checker/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Parametric-polymorphism b/Lang/V-(Vlang)/Parametric-polymorphism
deleted file mode 120000
index 2fba74d455..0000000000
--- a/Lang/V-(Vlang)/Parametric-polymorphism
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Parametric-polymorphism/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Partial-function-application b/Lang/V-(Vlang)/Partial-function-application
deleted file mode 120000
index 2ab67a8d88..0000000000
--- a/Lang/V-(Vlang)/Partial-function-application
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Partial-function-application/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Pascals-triangle b/Lang/V-(Vlang)/Pascals-triangle
deleted file mode 120000
index 91982b11d4..0000000000
--- a/Lang/V-(Vlang)/Pascals-triangle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pascals-triangle/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Password-generator b/Lang/V-(Vlang)/Password-generator
deleted file mode 120000
index 7e3dac059f..0000000000
--- a/Lang/V-(Vlang)/Password-generator
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Password-generator/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Peano-curve b/Lang/V-(Vlang)/Peano-curve
deleted file mode 120000
index 859acf6031..0000000000
--- a/Lang/V-(Vlang)/Peano-curve
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Peano-curve/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Permutations-by-swapping b/Lang/V-(Vlang)/Permutations-by-swapping
deleted file mode 120000
index 247ffcc655..0000000000
--- a/Lang/V-(Vlang)/Permutations-by-swapping
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Permutations-by-swapping/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Polymorphic-copy b/Lang/V-(Vlang)/Polymorphic-copy
deleted file mode 120000
index d1d9a95084..0000000000
--- a/Lang/V-(Vlang)/Polymorphic-copy
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Polymorphic-copy/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Polymorphism b/Lang/V-(Vlang)/Polymorphism
deleted file mode 120000
index 1ca2c9e1ef..0000000000
--- a/Lang/V-(Vlang)/Polymorphism
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Polymorphism/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Polyspiral b/Lang/V-(Vlang)/Polyspiral
deleted file mode 120000
index f6495b4e02..0000000000
--- a/Lang/V-(Vlang)/Polyspiral
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Polyspiral/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Price-fraction b/Lang/V-(Vlang)/Price-fraction
deleted file mode 120000
index 065a5d4d27..0000000000
--- a/Lang/V-(Vlang)/Price-fraction
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Price-fraction/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Prime-decomposition b/Lang/V-(Vlang)/Prime-decomposition
deleted file mode 120000
index 092f726639..0000000000
--- a/Lang/V-(Vlang)/Prime-decomposition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Prime-decomposition/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Probabilistic-choice b/Lang/V-(Vlang)/Probabilistic-choice
deleted file mode 120000
index 5f44e37240..0000000000
--- a/Lang/V-(Vlang)/Probabilistic-choice
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Probabilistic-choice/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Program-name b/Lang/V-(Vlang)/Program-name
deleted file mode 120000
index 9b2935c679..0000000000
--- a/Lang/V-(Vlang)/Program-name
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Program-name/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Pseudo-random-numbers-Splitmix64 b/Lang/V-(Vlang)/Pseudo-random-numbers-Splitmix64
deleted file mode 120000
index 05590ef252..0000000000
--- a/Lang/V-(Vlang)/Pseudo-random-numbers-Splitmix64
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pseudo-random-numbers-Splitmix64/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Quine b/Lang/V-(Vlang)/Quine
deleted file mode 120000
index a258f08a53..0000000000
--- a/Lang/V-(Vlang)/Quine
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Quine/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/RPG-attributes-generator b/Lang/V-(Vlang)/RPG-attributes-generator
deleted file mode 120000
index e14499c2a5..0000000000
--- a/Lang/V-(Vlang)/RPG-attributes-generator
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/RPG-attributes-generator/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Range-extraction b/Lang/V-(Vlang)/Range-extraction
deleted file mode 120000
index 76ae7cce99..0000000000
--- a/Lang/V-(Vlang)/Range-extraction
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Range-extraction/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Read-a-specific-line-from-a-file b/Lang/V-(Vlang)/Read-a-specific-line-from-a-file
deleted file mode 120000
index 8f9a931625..0000000000
--- a/Lang/V-(Vlang)/Read-a-specific-line-from-a-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Read-a-specific-line-from-a-file/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Regular-expressions b/Lang/V-(Vlang)/Regular-expressions
deleted file mode 120000
index bc8ed031b0..0000000000
--- a/Lang/V-(Vlang)/Regular-expressions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Regular-expressions/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Respond-to-an-unknown-method-call b/Lang/V-(Vlang)/Respond-to-an-unknown-method-call
deleted file mode 120000
index 3cfbcab7fa..0000000000
--- a/Lang/V-(Vlang)/Respond-to-an-unknown-method-call
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Respond-to-an-unknown-method-call/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Return-multiple-values b/Lang/V-(Vlang)/Return-multiple-values
deleted file mode 120000
index ddbdb0227d..0000000000
--- a/Lang/V-(Vlang)/Return-multiple-values
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Return-multiple-values/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/SEDOLs b/Lang/V-(Vlang)/SEDOLs
deleted file mode 120000
index 3d43f78e48..0000000000
--- a/Lang/V-(Vlang)/SEDOLs
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/SEDOLs/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Scope-modifiers b/Lang/V-(Vlang)/Scope-modifiers
deleted file mode 120000
index 429eb578e5..0000000000
--- a/Lang/V-(Vlang)/Scope-modifiers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Scope-modifiers/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Send-an-unknown-method-call b/Lang/V-(Vlang)/Send-an-unknown-method-call
deleted file mode 120000
index 682a1fe636..0000000000
--- a/Lang/V-(Vlang)/Send-an-unknown-method-call
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Send-an-unknown-method-call/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Sierpinski-arrowhead-curve b/Lang/V-(Vlang)/Sierpinski-arrowhead-curve
deleted file mode 120000
index ce49e15c40..0000000000
--- a/Lang/V-(Vlang)/Sierpinski-arrowhead-curve
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sierpinski-arrowhead-curve/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Sierpinski-square-curve b/Lang/V-(Vlang)/Sierpinski-square-curve
deleted file mode 120000
index c9f1debc78..0000000000
--- a/Lang/V-(Vlang)/Sierpinski-square-curve
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sierpinski-square-curve/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Sieve-of-Pritchard b/Lang/V-(Vlang)/Sieve-of-Pritchard
deleted file mode 120000
index c1742abeaf..0000000000
--- a/Lang/V-(Vlang)/Sieve-of-Pritchard
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sieve-of-Pritchard/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Singly-linked-list-Element-definition b/Lang/V-(Vlang)/Singly-linked-list-Element-definition
deleted file mode 120000
index 4870f24a23..0000000000
--- a/Lang/V-(Vlang)/Singly-linked-list-Element-definition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Singly-linked-list-Element-definition/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Sokoban b/Lang/V-(Vlang)/Sokoban
deleted file mode 120000
index ac9a6fb995..0000000000
--- a/Lang/V-(Vlang)/Sokoban
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sokoban/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Solve-a-Holy-Knights-tour b/Lang/V-(Vlang)/Solve-a-Holy-Knights-tour
deleted file mode 120000
index 4753f7fb1d..0000000000
--- a/Lang/V-(Vlang)/Solve-a-Holy-Knights-tour
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Solve-a-Holy-Knights-tour/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Sort-a-list-of-object-identifiers b/Lang/V-(Vlang)/Sort-a-list-of-object-identifiers
deleted file mode 120000
index f40fb70fcb..0000000000
--- a/Lang/V-(Vlang)/Sort-a-list-of-object-identifiers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-a-list-of-object-identifiers/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Sort-numbers-lexicographically b/Lang/V-(Vlang)/Sort-numbers-lexicographically
deleted file mode 120000
index 05897e6739..0000000000
--- a/Lang/V-(Vlang)/Sort-numbers-lexicographically
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-numbers-lexicographically/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Sorting-Algorithms-Circle-Sort b/Lang/V-(Vlang)/Sorting-Algorithms-Circle-Sort
new file mode 120000
index 0000000000..90876b0ca9
--- /dev/null
+++ b/Lang/V-(Vlang)/Sorting-Algorithms-Circle-Sort
@@ -0,0 +1 @@
+../../Task/Sorting-Algorithms-Circle-Sort/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Special-variables b/Lang/V-(Vlang)/Special-variables
deleted file mode 120000
index cf6afb2ad0..0000000000
--- a/Lang/V-(Vlang)/Special-variables
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Special-variables/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Spiral-matrix b/Lang/V-(Vlang)/Spiral-matrix
deleted file mode 120000
index 3966b6fb8b..0000000000
--- a/Lang/V-(Vlang)/Spiral-matrix
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Spiral-matrix/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Stair-climbing-puzzle b/Lang/V-(Vlang)/Stair-climbing-puzzle
deleted file mode 120000
index f0a6ae3661..0000000000
--- a/Lang/V-(Vlang)/Stair-climbing-puzzle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Stair-climbing-puzzle/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Straddling-checkerboard b/Lang/V-(Vlang)/Straddling-checkerboard
deleted file mode 120000
index fcc5be8fde..0000000000
--- a/Lang/V-(Vlang)/Straddling-checkerboard
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Straddling-checkerboard/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Substring-Top-and-tail b/Lang/V-(Vlang)/Substring-Top-and-tail
deleted file mode 120000
index 6ff0a67c24..0000000000
--- a/Lang/V-(Vlang)/Substring-Top-and-tail
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Substring-Top-and-tail/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Sudoku b/Lang/V-(Vlang)/Sudoku
deleted file mode 120000
index 930f85b4d1..0000000000
--- a/Lang/V-(Vlang)/Sudoku
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sudoku/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Sum-of-squares b/Lang/V-(Vlang)/Sum-of-squares
deleted file mode 120000
index bdf6276079..0000000000
--- a/Lang/V-(Vlang)/Sum-of-squares
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sum-of-squares/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Summarize-and-say-sequence b/Lang/V-(Vlang)/Summarize-and-say-sequence
deleted file mode 120000
index 6bf589b063..0000000000
--- a/Lang/V-(Vlang)/Summarize-and-say-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Summarize-and-say-sequence/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Superellipse b/Lang/V-(Vlang)/Superellipse
deleted file mode 120000
index f4877a60ae..0000000000
--- a/Lang/V-(Vlang)/Superellipse
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Superellipse/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Superpermutation-minimisation b/Lang/V-(Vlang)/Superpermutation-minimisation
deleted file mode 120000
index 8aeb5ea4bd..0000000000
--- a/Lang/V-(Vlang)/Superpermutation-minimisation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Superpermutation-minimisation/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Table-creation-Postal-addresses b/Lang/V-(Vlang)/Table-creation-Postal-addresses
deleted file mode 120000
index 07c82be810..0000000000
--- a/Lang/V-(Vlang)/Table-creation-Postal-addresses
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Table-creation-Postal-addresses/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Taxicab-numbers b/Lang/V-(Vlang)/Taxicab-numbers
deleted file mode 120000
index d3f4a716c8..0000000000
--- a/Lang/V-(Vlang)/Taxicab-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Taxicab-numbers/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/The-Twelve-Days-of-Christmas b/Lang/V-(Vlang)/The-Twelve-Days-of-Christmas
deleted file mode 120000
index ac2e9fb7b5..0000000000
--- a/Lang/V-(Vlang)/The-Twelve-Days-of-Christmas
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/The-Twelve-Days-of-Christmas/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Thue-Morse b/Lang/V-(Vlang)/Thue-Morse
deleted file mode 120000
index 82f9127b9d..0000000000
--- a/Lang/V-(Vlang)/Thue-Morse
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Thue-Morse/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Topic-variable b/Lang/V-(Vlang)/Topic-variable
deleted file mode 120000
index 99a32af3bb..0000000000
--- a/Lang/V-(Vlang)/Topic-variable
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Topic-variable/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Transliterate-English-text-using-the-Greek-alphabet b/Lang/V-(Vlang)/Transliterate-English-text-using-the-Greek-alphabet
deleted file mode 120000
index 9c6f1c38d1..0000000000
--- a/Lang/V-(Vlang)/Transliterate-English-text-using-the-Greek-alphabet
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Transliterate-English-text-using-the-Greek-alphabet/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Twos-complement b/Lang/V-(Vlang)/Twos-complement
deleted file mode 120000
index b9ca937183..0000000000
--- a/Lang/V-(Vlang)/Twos-complement
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Twos-complement/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/UPC b/Lang/V-(Vlang)/UPC
deleted file mode 120000
index bb6c7d3bca..0000000000
--- a/Lang/V-(Vlang)/UPC
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/UPC/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/User-input-Graphical b/Lang/V-(Vlang)/User-input-Graphical
deleted file mode 120000
index d985c46dcb..0000000000
--- a/Lang/V-(Vlang)/User-input-Graphical
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/User-input-Graphical/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Variable-length-quantity b/Lang/V-(Vlang)/Variable-length-quantity
deleted file mode 120000
index e0a7eee24f..0000000000
--- a/Lang/V-(Vlang)/Variable-length-quantity
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Variable-length-quantity/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/War-card-game b/Lang/V-(Vlang)/War-card-game
deleted file mode 120000
index b1fa28907b..0000000000
--- a/Lang/V-(Vlang)/War-card-game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/War-card-game/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Word-frequency b/Lang/V-(Vlang)/Word-frequency
deleted file mode 120000
index 7472df9d00..0000000000
--- a/Lang/V-(Vlang)/Word-frequency
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Word-frequency/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Yin-and-yang b/Lang/V-(Vlang)/Yin-and-yang
deleted file mode 120000
index bfc21b3e37..0000000000
--- a/Lang/V-(Vlang)/Yin-and-yang
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Yin-and-yang/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V-(Vlang)/Zhang-Suen-thinning-algorithm b/Lang/V-(Vlang)/Zhang-Suen-thinning-algorithm
deleted file mode 120000
index b0618c7785..0000000000
--- a/Lang/V-(Vlang)/Zhang-Suen-thinning-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Zhang-Suen-thinning-algorithm/V-(Vlang)
\ No newline at end of file
diff --git a/Lang/V/00-LANG.txt b/Lang/V/00-LANG.txt
index 6de2ee34df..c4203ea969 100644
--- a/Lang/V/00-LANG.txt
+++ b/Lang/V/00-LANG.txt
@@ -5,7 +5,6 @@
|site=http://code.google.com/p/v-language/
|LCT=yes}}
{{language programming paradigm|concatenative}}
-''Note: There is another language called V at Rosetta Code, it can be found at [[:Category:V_(Vlang)|V (Vlang)]].''
-
'''V''' is a simple, stack-based (concatenative), dynamic language. It is similar to [[Joy]] and [[PostScript]].
-
\ No newline at end of file
+
+Note: There is another language called V at Rosetta Code, it can be found over [[:Category:V_(Vlang)|here]].
\ No newline at end of file
diff --git a/Lang/V/99-bottles-of-beer b/Lang/V/99-bottles-of-beer
deleted file mode 120000
index 9e72431c34..0000000000
--- a/Lang/V/99-bottles-of-beer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/99-bottles-of-beer/V
\ No newline at end of file
diff --git a/Lang/VBA/Abundant-odd-numbers b/Lang/VBA/Abundant-odd-numbers
deleted file mode 120000
index 634e142877..0000000000
--- a/Lang/VBA/Abundant-odd-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abundant-odd-numbers/VBA
\ No newline at end of file
diff --git a/Lang/VBA/Bell-numbers b/Lang/VBA/Bell-numbers
deleted file mode 120000
index 825db8e67d..0000000000
--- a/Lang/VBA/Bell-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bell-numbers/VBA
\ No newline at end of file
diff --git a/Lang/VBA/Brazilian-numbers b/Lang/VBA/Brazilian-numbers
deleted file mode 120000
index 3b990aab5c..0000000000
--- a/Lang/VBA/Brazilian-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Brazilian-numbers/VBA
\ No newline at end of file
diff --git a/Lang/VBA/Deal-cards-for-FreeCell b/Lang/VBA/Deal-cards-for-FreeCell
deleted file mode 120000
index 33506ab6dc..0000000000
--- a/Lang/VBA/Deal-cards-for-FreeCell
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Deal-cards-for-FreeCell/VBA
\ No newline at end of file
diff --git a/Lang/VBA/Gamma-function b/Lang/VBA/Gamma-function
deleted file mode 120000
index 75f8622191..0000000000
--- a/Lang/VBA/Gamma-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Gamma-function/VBA
\ No newline at end of file
diff --git a/Lang/VBA/M-bius-function b/Lang/VBA/M-bius-function
deleted file mode 120000
index eb8fdee7b1..0000000000
--- a/Lang/VBA/M-bius-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/M-bius-function/VBA
\ No newline at end of file
diff --git a/Lang/VBA/Monty-Hall-problem b/Lang/VBA/Monty-Hall-problem
deleted file mode 120000
index cbcc810f65..0000000000
--- a/Lang/VBA/Monty-Hall-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Monty-Hall-problem/VBA
\ No newline at end of file
diff --git a/Lang/VBA/Quaternion-type b/Lang/VBA/Quaternion-type
new file mode 120000
index 0000000000..b9d823193e
--- /dev/null
+++ b/Lang/VBA/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/VBA
\ No newline at end of file
diff --git a/Lang/VBScript/Bioinformatics-base-count b/Lang/VBScript/Bioinformatics-base-count
new file mode 120000
index 0000000000..27b49dfc57
--- /dev/null
+++ b/Lang/VBScript/Bioinformatics-base-count
@@ -0,0 +1 @@
+../../Task/Bioinformatics-base-count/VBScript
\ No newline at end of file
diff --git a/Lang/VBScript/Simple-windowed-application b/Lang/VBScript/Simple-windowed-application
deleted file mode 120000
index 99e416c344..0000000000
--- a/Lang/VBScript/Simple-windowed-application
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Simple-windowed-application/VBScript
\ No newline at end of file
diff --git a/Lang/VTL-2/RPG-attributes-generator b/Lang/VTL-2/RPG-attributes-generator
deleted file mode 120000
index 1167e48571..0000000000
--- a/Lang/VTL-2/RPG-attributes-generator
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/RPG-attributes-generator/VTL-2
\ No newline at end of file
diff --git a/Lang/VTL-2/Zeckendorf-number-representation b/Lang/VTL-2/Zeckendorf-number-representation
deleted file mode 120000
index f281019c65..0000000000
--- a/Lang/VTL-2/Zeckendorf-number-representation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Zeckendorf-number-representation/VTL-2
\ No newline at end of file
diff --git a/Lang/Vala/Execute-Brain- b/Lang/Vala/Execute-Brain-
deleted file mode 120000
index ae24a4e37d..0000000000
--- a/Lang/Vala/Execute-Brain-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Execute-Brain-/Vala
\ No newline at end of file
diff --git a/Lang/Verilog/Leonardo-numbers b/Lang/Verilog/Leonardo-numbers
deleted file mode 120000
index fdea2f05f8..0000000000
--- a/Lang/Verilog/Leonardo-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Leonardo-numbers/Verilog
\ No newline at end of file
diff --git a/Lang/Verilog/Loops-Infinite b/Lang/Verilog/Loops-Infinite
deleted file mode 120000
index 07545a5d7e..0000000000
--- a/Lang/Verilog/Loops-Infinite
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Infinite/Verilog
\ No newline at end of file
diff --git a/Lang/Verilog/Pancake-numbers b/Lang/Verilog/Pancake-numbers
deleted file mode 120000
index f9cd19af94..0000000000
--- a/Lang/Verilog/Pancake-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pancake-numbers/Verilog
\ No newline at end of file
diff --git a/Lang/Verilog/Twos-complement b/Lang/Verilog/Twos-complement
deleted file mode 120000
index 8527a62e79..0000000000
--- a/Lang/Verilog/Twos-complement
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Twos-complement/Verilog
\ No newline at end of file
diff --git a/Lang/Vim-Script/Hello-world-Graphical b/Lang/Vim-Script/Hello-world-Graphical
deleted file mode 120000
index 799696cc16..0000000000
--- a/Lang/Vim-Script/Hello-world-Graphical
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Graphical/Vim-Script
\ No newline at end of file
diff --git a/Lang/Vim-Script/Here-document b/Lang/Vim-Script/Here-document
deleted file mode 120000
index 4f2967d090..0000000000
--- a/Lang/Vim-Script/Here-document
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Here-document/Vim-Script
\ No newline at end of file
diff --git a/Lang/Vim-Script/Loop-over-multiple-arrays-simultaneously b/Lang/Vim-Script/Loop-over-multiple-arrays-simultaneously
deleted file mode 120000
index 3e8729e53b..0000000000
--- a/Lang/Vim-Script/Loop-over-multiple-arrays-simultaneously
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loop-over-multiple-arrays-simultaneously/Vim-Script
\ No newline at end of file
diff --git a/Lang/Vim-Script/Loops-For b/Lang/Vim-Script/Loops-For
deleted file mode 120000
index 427dcdb8bf..0000000000
--- a/Lang/Vim-Script/Loops-For
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-For/Vim-Script
\ No newline at end of file
diff --git a/Lang/Vim-Script/XML-Input b/Lang/Vim-Script/XML-Input
deleted file mode 120000
index 57be30dc70..0000000000
--- a/Lang/Vim-Script/XML-Input
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/XML-Input/Vim-Script
\ No newline at end of file
diff --git a/Lang/Visual-Basic-.NET/Execute-Brain- b/Lang/Visual-Basic-.NET/Execute-Brain-
deleted file mode 120000
index 40c465e5ff..0000000000
--- a/Lang/Visual-Basic-.NET/Execute-Brain-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Execute-Brain-/Visual-Basic-.NET
\ No newline at end of file
diff --git a/Lang/Visual-Basic-.NET/Quaternion-type b/Lang/Visual-Basic-.NET/Quaternion-type
new file mode 120000
index 0000000000..111784d7c2
--- /dev/null
+++ b/Lang/Visual-Basic-.NET/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/Visual-Basic-.NET
\ No newline at end of file
diff --git a/Lang/Vyxal/00-LANG.txt b/Lang/Vyxal/00-LANG.txt
deleted file mode 100644
index 0acceafc9b..0000000000
--- a/Lang/Vyxal/00-LANG.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-{{language|Vyxal}}
-
-Vyxal is an esoteric golfing language designed to make code golf challenges fun, and to allow code golfers to win said challenges.
\ No newline at end of file
diff --git a/Lang/Vyxal/00-META.yaml b/Lang/Vyxal/00-META.yaml
deleted file mode 100644
index a5968dda5e..0000000000
--- a/Lang/Vyxal/00-META.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-from: http://rosettacode.org/wiki/Category:Vyxal
diff --git a/Lang/Vyxal/Arithmetic-geometric-mean b/Lang/Vyxal/Arithmetic-geometric-mean
deleted file mode 120000
index 5c957e3635..0000000000
--- a/Lang/Vyxal/Arithmetic-geometric-mean
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-geometric-mean/Vyxal
\ No newline at end of file
diff --git a/Lang/Vyxal/Execute-Brain- b/Lang/Vyxal/Execute-Brain-
deleted file mode 120000
index 76839bca71..0000000000
--- a/Lang/Vyxal/Execute-Brain-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Execute-Brain-/Vyxal
\ No newline at end of file
diff --git a/Lang/Vyxal/Factorial b/Lang/Vyxal/Factorial
deleted file mode 120000
index 1cdfde0f4b..0000000000
--- a/Lang/Vyxal/Factorial
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factorial/Vyxal
\ No newline at end of file
diff --git a/Lang/Vyxal/Factorions b/Lang/Vyxal/Factorions
deleted file mode 120000
index df658fe37b..0000000000
--- a/Lang/Vyxal/Factorions
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factorions/Vyxal
\ No newline at end of file
diff --git a/Lang/Vyxal/FizzBuzz b/Lang/Vyxal/FizzBuzz
deleted file mode 120000
index 22964032ea..0000000000
--- a/Lang/Vyxal/FizzBuzz
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/FizzBuzz/Vyxal
\ No newline at end of file
diff --git a/Lang/Vyxal/Linear-congruential-generator b/Lang/Vyxal/Linear-congruential-generator
deleted file mode 120000
index 7a8e447f9f..0000000000
--- a/Lang/Vyxal/Linear-congruential-generator
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Linear-congruential-generator/Vyxal
\ No newline at end of file
diff --git a/Lang/Vyxal/Narcissistic-decimal-number b/Lang/Vyxal/Narcissistic-decimal-number
deleted file mode 120000
index 4f717275c0..0000000000
--- a/Lang/Vyxal/Narcissistic-decimal-number
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Narcissistic-decimal-number/Vyxal
\ No newline at end of file
diff --git a/Lang/Waduzitdo/00-LANG.txt b/Lang/Waduzitdo/00-LANG.txt
deleted file mode 100644
index 140eff39b3..0000000000
--- a/Lang/Waduzitdo/00-LANG.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-{{stub}}
-{{language|Waduzitdo
-|site=https://waduzitdo.org/
-|hopl=no
-}}
-
-Waduzitdo is a programming language created by Larry Kheriaty and published in the popular computer culture magazine BYTE in 1978. It very closely resembles [[PILOT]], but is even more simplified and has been proven to not be Turing complete. It appears to have been created as an attempt to create an extremely small compiler, as well as being a good language for demonstrating basic functions; the language only has eight commands, which demonstrate input and output, along with basic pattern-matching and decision-making. The language gets its name from the fact that it was designed for demonstrating a computer to people who had never used one before who are asking "What does it do?"
\ No newline at end of file
diff --git a/Lang/Waduzitdo/00-META.yaml b/Lang/Waduzitdo/00-META.yaml
deleted file mode 100644
index 7c62d1f448..0000000000
--- a/Lang/Waduzitdo/00-META.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-from: http://rosettacode.org/wiki/Category:Waduzitdo
diff --git a/Lang/Waduzitdo/Hello-world-Text b/Lang/Waduzitdo/Hello-world-Text
deleted file mode 120000
index 4d7c98308f..0000000000
--- a/Lang/Waduzitdo/Hello-world-Text
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hello-world-Text/Waduzitdo
\ No newline at end of file
diff --git a/Lang/Waduzitdo/Nim-game b/Lang/Waduzitdo/Nim-game
deleted file mode 120000
index d8c3766378..0000000000
--- a/Lang/Waduzitdo/Nim-game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nim-game/Waduzitdo
\ No newline at end of file
diff --git a/Lang/Wee-Basic/Empty-program b/Lang/Wee-Basic/Empty-program
new file mode 120000
index 0000000000..132197773e
--- /dev/null
+++ b/Lang/Wee-Basic/Empty-program
@@ -0,0 +1 @@
+../../Task/Empty-program/Wee-Basic
\ No newline at end of file
diff --git a/Lang/Wisp/Knuth-shuffle b/Lang/Wisp/Knuth-shuffle
deleted file mode 120000
index 14993ebaba..0000000000
--- a/Lang/Wisp/Knuth-shuffle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Knuth-shuffle/Wisp
\ No newline at end of file
diff --git a/Lang/Wisp/Levenshtein-distance b/Lang/Wisp/Levenshtein-distance
deleted file mode 120000
index 4fa74a1890..0000000000
--- a/Lang/Wisp/Levenshtein-distance
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Levenshtein-distance/Wisp
\ No newline at end of file
diff --git a/Lang/Wren/00-LANG.txt b/Lang/Wren/00-LANG.txt
index 2d52115f0a..1dbc2e611b 100644
--- a/Lang/Wren/00-LANG.txt
+++ b/Lang/Wren/00-LANG.txt
@@ -15,7 +15,7 @@ It is under development on [https://github.com/wren-lang/wren GitHub] and is ful
The CLI tool (Wren CLI) has its own repository and is the main focus of examples written for RC.
The latest version 0.4.0 is available as a pre-built standalone executable for 64-bit Linux, MacOS and Windows and can be downloaded from [https://github.com/wren-lang/wren-cli/releases here].
-As a language mainly designed for embedding, Wren's standard library is (of necessity) quite small and I ([[User:PureFox|PureFox]]) have therefore decided to create some additional modules to assist with writing Rosetta Code tasks so the same code does not have to be written or copy/pasted time and time again thereby bloating a task's script code unnecessarily. The ones written so far are listed below:
+As a language mainly designed for embedding, Wren's standard library is (of necessity) quite small and I have therefore decided to create some additional modules to assist with writing Rosetta Code tasks so the same code does not have to be written or copy/pasted time and time again thereby bloating a task's script code unnecessarily. The ones written so far are listed below:
{| class="wikitable"
! No. !! Module name !! !! No. !! Module name
@@ -64,11 +64,7 @@ As a language mainly designed for embedding, Wren's standard library is (of nece
|-
| 43 || [[:Category:Wren-vector|vector]] || || 44 || [[:Category:Wren-ordered|ordered]]
|-
-| 45 || [[:Category:Wren-psieve|psieve]] || || 46 || [[:Category:Wren-hash|hash]]
-|-
-| 47 || [[:Category:Wren-roman|roman]] || || 48 || [[:Category:Wren-std|std]]
-|-
-| 49 || [[:Category:Wren-ansi|ansi]] || || ||
+| 45 || [[:Category:Wren-psieve|psieve]] || || ||
|}
To use a class or classes from a module (say ''fmt''), you need to import them into your script with Wren code such as the following. To use more than one class separate their names with commas:
@@ -95,7 +91,5 @@ There are also a number of third-party modules available for Wren of which the f
For further information and licensing requirements, please consult their individual pages.
-Finally, there are some RC tasks which require a special C executable to solve but where it is not worthwhile to create a dedicated module to house the Wren source code. See [[:Category:libwren|libwren]] for details.
-
==Todo==
* [[Tasks not implemented in Wren]]
\ No newline at end of file
diff --git a/Lang/Wren/Bioinformatics-base-count b/Lang/Wren/Bioinformatics-base-count
new file mode 120000
index 0000000000..620c92bb71
--- /dev/null
+++ b/Lang/Wren/Bioinformatics-base-count
@@ -0,0 +1 @@
+../../Task/Bioinformatics-base-count/Wren
\ No newline at end of file
diff --git a/Lang/Wren/Empty-program b/Lang/Wren/Empty-program
new file mode 120000
index 0000000000..e0842518a1
--- /dev/null
+++ b/Lang/Wren/Empty-program
@@ -0,0 +1 @@
+../../Task/Empty-program/Wren
\ No newline at end of file
diff --git a/Lang/Wren/Meissel-Mertens-constant b/Lang/Wren/Meissel-Mertens-constant
new file mode 120000
index 0000000000..2a9c71a439
--- /dev/null
+++ b/Lang/Wren/Meissel-Mertens-constant
@@ -0,0 +1 @@
+../../Task/Meissel-Mertens-constant/Wren
\ No newline at end of file
diff --git a/Lang/Wren/Miller-Rabin-primality-test b/Lang/Wren/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..26f77867d2
--- /dev/null
+++ b/Lang/Wren/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/Wren
\ No newline at end of file
diff --git a/Lang/Wren/Quaternion-type b/Lang/Wren/Quaternion-type
new file mode 120000
index 0000000000..42a26f0111
--- /dev/null
+++ b/Lang/Wren/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/Wren
\ No newline at end of file
diff --git a/Lang/Wren/Sequence:-nth-number-with-exactly-n-divisors b/Lang/Wren/Sequence-nth-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/Wren/Sequence:-nth-number-with-exactly-n-divisors
rename to Lang/Wren/Sequence-nth-number-with-exactly-n-divisors
diff --git a/Lang/Wren/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors b/Lang/Wren/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
similarity index 100%
rename from Lang/Wren/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors
rename to Lang/Wren/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
diff --git a/Lang/Wren/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/Wren/Sequence-smallest-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/Wren/Sequence:-smallest-number-with-exactly-n-divisors
rename to Lang/Wren/Sequence-smallest-number-with-exactly-n-divisors
diff --git a/Lang/Wren/Sorting-Algorithms-Circle-Sort b/Lang/Wren/Sorting-Algorithms-Circle-Sort
new file mode 120000
index 0000000000..3d8f8916cb
--- /dev/null
+++ b/Lang/Wren/Sorting-Algorithms-Circle-Sort
@@ -0,0 +1 @@
+../../Task/Sorting-Algorithms-Circle-Sort/Wren
\ No newline at end of file
diff --git a/Lang/X-script/00-LANG.txt b/Lang/X-script/00-LANG.txt
deleted file mode 100644
index af743e22c3..0000000000
--- a/Lang/X-script/00-LANG.txt
+++ /dev/null
@@ -1,38 +0,0 @@
-{{language|X-script}}
-X-script is a minimalistic programming language which is characterised by user friendlyness and simplicity.
-All data are strings. It can also handle binary data, which are then encoded as hexadecimal strings.
-It can read from and write to files and serial devices like TCP/IP ports and serial ports.
-It has a window that has similarities with consoles, where you can start programs, call functions and call states or just write code (like in Python).
-
-Here is an example of an x-script that implements a chemical calculator:
-[[Chemical_calculator#X-script]].
-
-The development of X-script started around 1980 and the language has been improved ever since. Originally, the goal was to enable the creation of rapid prototypes of programs, to test ideas before the real programming started.
-
-The "Hello world" program looks like this:
-
-
-In x-script, you can develop an application in two different ways. One is as a function, which is similar to functions in other languages, except that all data are strings.
-
-The other is as a state, which is a list of inputs and outputs.
-A state is mostly the quickest way to solve a programming problem. It is also easy to read, since it is a list of inputs and the corresponding outputs or actions. The inputs are surrounded by ?"..."? and the corresponding outputs or actions by !"..."!. If you for example want to read a comma-separated account from a bank, the state could look like this:
-
-accountStatement.x
-------------------
-(* Titles *)
-?"TransactionDate;Reference;Amount
-"?
-!""!
-
-(* Example: 2023-09-04;Accessa Finance Inc 305653152413;-3850.00 *)
-?";;
-"?
-!" you '<0,payed to,earned from> :
dollars."!
-
-?""?
-!""!
-
-
-Function calls have this format: .
-
-The example above calls the library functions , , , , , and .
, , and are "pattern functions" which are used to match input strings. , and are ordinary functions. prints a string to the X-window.
retrieves stringparts identified in the input file. returns from the state,
\ No newline at end of file
diff --git a/Lang/X-script/00-META.yaml b/Lang/X-script/00-META.yaml
deleted file mode 100644
index 2fd50d732b..0000000000
--- a/Lang/X-script/00-META.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-from: http://rosettacode.org/wiki/Category:X-script
diff --git a/Lang/X86-64-Assembly/A+B b/Lang/X86-64-Assembly/A+B
deleted file mode 120000
index 8da0da2282..0000000000
--- a/Lang/X86-64-Assembly/A+B
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/A+B/X86-64-Assembly
\ No newline at end of file
diff --git a/Lang/X86-64-Assembly/Binary-digits b/Lang/X86-64-Assembly/Binary-digits
deleted file mode 120000
index 1eb48aa18a..0000000000
--- a/Lang/X86-64-Assembly/Binary-digits
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Binary-digits/X86-64-Assembly
\ No newline at end of file
diff --git a/Lang/X86-64-Assembly/Command-line-arguments b/Lang/X86-64-Assembly/Command-line-arguments
deleted file mode 120000
index 112452a5d5..0000000000
--- a/Lang/X86-64-Assembly/Command-line-arguments
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Command-line-arguments/X86-64-Assembly
\ No newline at end of file
diff --git a/Lang/X86-64-Assembly/Create-an-HTML-table b/Lang/X86-64-Assembly/Create-an-HTML-table
deleted file mode 120000
index e10bb5efed..0000000000
--- a/Lang/X86-64-Assembly/Create-an-HTML-table
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Create-an-HTML-table/X86-64-Assembly
\ No newline at end of file
diff --git a/Lang/X86-64-Assembly/Generate-lower-case-ASCII-alphabet b/Lang/X86-64-Assembly/Generate-lower-case-ASCII-alphabet
deleted file mode 120000
index 0146a7c580..0000000000
--- a/Lang/X86-64-Assembly/Generate-lower-case-ASCII-alphabet
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Generate-lower-case-ASCII-alphabet/X86-64-Assembly
\ No newline at end of file
diff --git a/Lang/X86-64-Assembly/HTTPS b/Lang/X86-64-Assembly/HTTPS
deleted file mode 120000
index 2a06876bd2..0000000000
--- a/Lang/X86-64-Assembly/HTTPS
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/HTTPS/X86-64-Assembly
\ No newline at end of file
diff --git a/Lang/X86-64-Assembly/Include-a-file b/Lang/X86-64-Assembly/Include-a-file
deleted file mode 120000
index b94c0093ef..0000000000
--- a/Lang/X86-64-Assembly/Include-a-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Include-a-file/X86-64-Assembly
\ No newline at end of file
diff --git a/Lang/X86-64-Assembly/Magic-8-ball b/Lang/X86-64-Assembly/Magic-8-ball
deleted file mode 120000
index 63e5e8cfbb..0000000000
--- a/Lang/X86-64-Assembly/Magic-8-ball
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Magic-8-ball/X86-64-Assembly
\ No newline at end of file
diff --git a/Lang/X86-64-Assembly/Password-generator b/Lang/X86-64-Assembly/Password-generator
deleted file mode 120000
index e8e77773e7..0000000000
--- a/Lang/X86-64-Assembly/Password-generator
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Password-generator/X86-64-Assembly
\ No newline at end of file
diff --git a/Lang/X86-64-Assembly/Pseudo-random-numbers-Middle-square-method b/Lang/X86-64-Assembly/Pseudo-random-numbers-Middle-square-method
deleted file mode 120000
index 9ff7bee727..0000000000
--- a/Lang/X86-64-Assembly/Pseudo-random-numbers-Middle-square-method
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pseudo-random-numbers-Middle-square-method/X86-64-Assembly
\ No newline at end of file
diff --git a/Lang/X86-64-Assembly/Random-number-generator-device- b/Lang/X86-64-Assembly/Random-number-generator-device-
deleted file mode 120000
index 17f5db574d..0000000000
--- a/Lang/X86-64-Assembly/Random-number-generator-device-
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Random-number-generator-device-/X86-64-Assembly
\ No newline at end of file
diff --git a/Lang/X86-64-Assembly/Rot-13 b/Lang/X86-64-Assembly/Rot-13
deleted file mode 120000
index 498ce19193..0000000000
--- a/Lang/X86-64-Assembly/Rot-13
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Rot-13/X86-64-Assembly
\ No newline at end of file
diff --git a/Lang/X86-64-Assembly/Sieve-of-Eratosthenes b/Lang/X86-64-Assembly/Sieve-of-Eratosthenes
deleted file mode 120000
index 2ec4e68176..0000000000
--- a/Lang/X86-64-Assembly/Sieve-of-Eratosthenes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sieve-of-Eratosthenes/X86-64-Assembly
\ No newline at end of file
diff --git a/Lang/X86-64-Assembly/Stack b/Lang/X86-64-Assembly/Stack
deleted file mode 120000
index f458d7ec5f..0000000000
--- a/Lang/X86-64-Assembly/Stack
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Stack/X86-64-Assembly
\ No newline at end of file
diff --git a/Lang/X86-64-Assembly/String-length b/Lang/X86-64-Assembly/String-length
deleted file mode 120000
index d3dacaf4b5..0000000000
--- a/Lang/X86-64-Assembly/String-length
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/String-length/X86-64-Assembly
\ No newline at end of file
diff --git a/Lang/X86-64-Assembly/Terminal-control-Clear-the-screen b/Lang/X86-64-Assembly/Terminal-control-Clear-the-screen
deleted file mode 120000
index 8974ae4cd4..0000000000
--- a/Lang/X86-64-Assembly/Terminal-control-Clear-the-screen
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Terminal-control-Clear-the-screen/X86-64-Assembly
\ No newline at end of file
diff --git a/Lang/X86-64-Assembly/Twos-complement b/Lang/X86-64-Assembly/Twos-complement
deleted file mode 120000
index 03daa00fb9..0000000000
--- a/Lang/X86-64-Assembly/Twos-complement
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Twos-complement/X86-64-Assembly
\ No newline at end of file
diff --git a/Lang/X86-Assembly/Pythagoras-tree b/Lang/X86-Assembly/Pythagoras-tree
deleted file mode 120000
index 2ed69a8164..0000000000
--- a/Lang/X86-Assembly/Pythagoras-tree
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pythagoras-tree/X86-Assembly
\ No newline at end of file
diff --git a/Lang/X86-Assembly/Stack b/Lang/X86-Assembly/Stack
new file mode 120000
index 0000000000..c0f7dc8fa0
--- /dev/null
+++ b/Lang/X86-Assembly/Stack
@@ -0,0 +1 @@
+../../Task/Stack/X86-Assembly
\ No newline at end of file
diff --git a/Lang/XBS/00-LANG.txt b/Lang/XBS/00-LANG.txt
index 87ee4c9802..46cebd0203 100644
--- a/Lang/XBS/00-LANG.txt
+++ b/Lang/XBS/00-LANG.txt
@@ -1,8 +1,29 @@
{{language|XBS}}
== What is XBS? ==
+XBS is an interpreted language written in [[JavaScript]]. XBS has similarities to JavaScript and Python, as well as some other languages. XBS can be used for any web page with the correct library.
-XBS is an interpreted language written in [[JavaScript]]. The language does not have its own sandbox, and relies on methods passed down from JavaScript. XBS was created originally to help its creator understand how to create a basic programming language, and later branched out its syntax in creative ways.
+----
+
+== Details ==
+
+XBS has a github page and is currently open-sourced. The github page has a wiki for the documentation; but just know, this language still isn't done. It has most features a programming language has, except for some minor details that I need to fix.
+
+----
+
+== Code Examples ==
+
+Variable declaration
+
+set x = "Hello, world!";
+log(x)
+
+Functions
+
+func FirstFunction(a,b){
+ send a+b; #Add a and b
+}
+log(FirstFunction(1,2));
----
@@ -13,5 +34,4 @@ XBS is an interpreted language written in [[JavaScript]]. The language does not
== Notes ==
-* XBS was re-written back in 2021 as the language had a lot of issues with expressional parsing priorities. Most XBS examples on this site are outdated.
-* XBS is a slow language, as it is interpreted using [[JavaScript]]
\ No newline at end of file
+XBS is currently going through a rewrite, and the wiki has not been rewritten yet.
\ No newline at end of file
diff --git a/Lang/XBasic/AKS-test-for-primes b/Lang/XBasic/AKS-test-for-primes
deleted file mode 120000
index dcd18f7155..0000000000
--- a/Lang/XBasic/AKS-test-for-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/AKS-test-for-primes/XBasic
\ No newline at end of file
diff --git a/Lang/XBasic/Associative-array-Merging b/Lang/XBasic/Associative-array-Merging
deleted file mode 120000
index 9fcd826207..0000000000
--- a/Lang/XBasic/Associative-array-Merging
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Associative-array-Merging/XBasic
\ No newline at end of file
diff --git a/Lang/XBasic/Determine-sentence-type b/Lang/XBasic/Determine-sentence-type
deleted file mode 120000
index ea580ad280..0000000000
--- a/Lang/XBasic/Determine-sentence-type
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-sentence-type/XBasic
\ No newline at end of file
diff --git a/Lang/XBasic/Diversity-prediction-theorem b/Lang/XBasic/Diversity-prediction-theorem
deleted file mode 120000
index 76939265dd..0000000000
--- a/Lang/XBasic/Diversity-prediction-theorem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Diversity-prediction-theorem/XBasic
\ No newline at end of file
diff --git a/Lang/XBasic/Euler-method b/Lang/XBasic/Euler-method
deleted file mode 120000
index 546ca521e8..0000000000
--- a/Lang/XBasic/Euler-method
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Euler-method/XBasic
\ No newline at end of file
diff --git a/Lang/XBasic/Jewels-and-stones b/Lang/XBasic/Jewels-and-stones
deleted file mode 120000
index b0451efebb..0000000000
--- a/Lang/XBasic/Jewels-and-stones
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jewels-and-stones/XBasic
\ No newline at end of file
diff --git a/Lang/XBasic/Josephus-problem b/Lang/XBasic/Josephus-problem
deleted file mode 120000
index 425d14bd16..0000000000
--- a/Lang/XBasic/Josephus-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Josephus-problem/XBasic
\ No newline at end of file
diff --git a/Lang/XBasic/Levenshtein-distance b/Lang/XBasic/Levenshtein-distance
deleted file mode 120000
index 57fd900b58..0000000000
--- a/Lang/XBasic/Levenshtein-distance
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Levenshtein-distance/XBasic
\ No newline at end of file
diff --git a/Lang/XBasic/Loops-Infinite b/Lang/XBasic/Loops-Infinite
deleted file mode 120000
index b803a965e4..0000000000
--- a/Lang/XBasic/Loops-Infinite
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Infinite/XBasic
\ No newline at end of file
diff --git a/Lang/XBasic/M-bius-function b/Lang/XBasic/M-bius-function
deleted file mode 120000
index 09886c7873..0000000000
--- a/Lang/XBasic/M-bius-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/M-bius-function/XBasic
\ No newline at end of file
diff --git a/Lang/XBasic/Nim-game b/Lang/XBasic/Nim-game
deleted file mode 120000
index 49a494ab0c..0000000000
--- a/Lang/XBasic/Nim-game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nim-game/XBasic
\ No newline at end of file
diff --git a/Lang/XBasic/Pancake-numbers b/Lang/XBasic/Pancake-numbers
deleted file mode 120000
index ba6560d347..0000000000
--- a/Lang/XBasic/Pancake-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pancake-numbers/XBasic
\ No newline at end of file
diff --git a/Lang/XBasic/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors b/Lang/XBasic/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
similarity index 100%
rename from Lang/XBasic/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors
rename to Lang/XBasic/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
diff --git a/Lang/XBasic/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/XBasic/Sequence-smallest-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/XBasic/Sequence:-smallest-number-with-exactly-n-divisors
rename to Lang/XBasic/Sequence-smallest-number-with-exactly-n-divisors
diff --git a/Lang/XBasic/Sorting-algorithms-Quicksort b/Lang/XBasic/Sorting-algorithms-Quicksort
deleted file mode 120000
index baefc61c90..0000000000
--- a/Lang/XBasic/Sorting-algorithms-Quicksort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Quicksort/XBasic
\ No newline at end of file
diff --git a/Lang/XBasic/The-Name-Game b/Lang/XBasic/The-Name-Game
deleted file mode 120000
index bc5b69cbc8..0000000000
--- a/Lang/XBasic/The-Name-Game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/The-Name-Game/XBasic
\ No newline at end of file
diff --git a/Lang/XBasic/Twos-complement b/Lang/XBasic/Twos-complement
deleted file mode 120000
index 651db096a5..0000000000
--- a/Lang/XBasic/Twos-complement
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Twos-complement/XBasic
\ No newline at end of file
diff --git a/Lang/XPL0/AKS-test-for-primes b/Lang/XPL0/AKS-test-for-primes
deleted file mode 120000
index 16474e53df..0000000000
--- a/Lang/XPL0/AKS-test-for-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/AKS-test-for-primes/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Arithmetic-geometric-mean-Calculate-Pi b/Lang/XPL0/Arithmetic-geometric-mean-Calculate-Pi
deleted file mode 120000
index 34337f3f2d..0000000000
--- a/Lang/XPL0/Arithmetic-geometric-mean-Calculate-Pi
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-geometric-mean-Calculate-Pi/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Average-loop-length b/Lang/XPL0/Average-loop-length
deleted file mode 120000
index b29c22437d..0000000000
--- a/Lang/XPL0/Average-loop-length
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Average-loop-length/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Bifid-cipher b/Lang/XPL0/Bifid-cipher
deleted file mode 120000
index 224f51d976..0000000000
--- a/Lang/XPL0/Bifid-cipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bifid-cipher/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Bin-given-limits b/Lang/XPL0/Bin-given-limits
deleted file mode 120000
index d093bfd306..0000000000
--- a/Lang/XPL0/Bin-given-limits
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bin-given-limits/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Bioinformatics-base-count b/Lang/XPL0/Bioinformatics-base-count
new file mode 120000
index 0000000000..485c648b6c
--- /dev/null
+++ b/Lang/XPL0/Bioinformatics-base-count
@@ -0,0 +1 @@
+../../Task/Bioinformatics-base-count/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Cistercian-numerals b/Lang/XPL0/Cistercian-numerals
deleted file mode 120000
index c2ce89db06..0000000000
--- a/Lang/XPL0/Cistercian-numerals
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cistercian-numerals/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Count-the-coins b/Lang/XPL0/Count-the-coins
deleted file mode 120000
index 7a91396756..0000000000
--- a/Lang/XPL0/Count-the-coins
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Count-the-coins/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Create-an-object-at-a-given-address b/Lang/XPL0/Create-an-object-at-a-given-address
deleted file mode 120000
index 10ca5e5926..0000000000
--- a/Lang/XPL0/Create-an-object-at-a-given-address
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Create-an-object-at-a-given-address/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Currency b/Lang/XPL0/Currency
deleted file mode 120000
index 05aee1c3b1..0000000000
--- a/Lang/XPL0/Currency
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Currency/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Determinant-and-permanent b/Lang/XPL0/Determinant-and-permanent
deleted file mode 120000
index ffda863c8d..0000000000
--- a/Lang/XPL0/Determinant-and-permanent
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determinant-and-permanent/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Display-a-linear-combination b/Lang/XPL0/Display-a-linear-combination
deleted file mode 120000
index bd14d58a74..0000000000
--- a/Lang/XPL0/Display-a-linear-combination
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Display-a-linear-combination/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Draw-a-clock b/Lang/XPL0/Draw-a-clock
deleted file mode 120000
index 7d1040eda3..0000000000
--- a/Lang/XPL0/Draw-a-clock
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Draw-a-clock/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Find-common-directory-path b/Lang/XPL0/Find-common-directory-path
deleted file mode 120000
index 29427fdf4b..0000000000
--- a/Lang/XPL0/Find-common-directory-path
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Find-common-directory-path/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Fivenum b/Lang/XPL0/Fivenum
deleted file mode 120000
index 2bd4e43614..0000000000
--- a/Lang/XPL0/Fivenum
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fivenum/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Floyd-Warshall-algorithm b/Lang/XPL0/Floyd-Warshall-algorithm
deleted file mode 120000
index ffd21f6111..0000000000
--- a/Lang/XPL0/Floyd-Warshall-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Floyd-Warshall-algorithm/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/GUI-component-interaction b/Lang/XPL0/GUI-component-interaction
deleted file mode 120000
index 8745be4ca4..0000000000
--- a/Lang/XPL0/GUI-component-interaction
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/GUI-component-interaction/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Gaussian-elimination b/Lang/XPL0/Gaussian-elimination
deleted file mode 120000
index 6a178b8f16..0000000000
--- a/Lang/XPL0/Gaussian-elimination
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Gaussian-elimination/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Hex-words b/Lang/XPL0/Hex-words
deleted file mode 120000
index 4ed3e2b550..0000000000
--- a/Lang/XPL0/Hex-words
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Hex-words/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/I-before-E-except-after-C b/Lang/XPL0/I-before-E-except-after-C
deleted file mode 120000
index 4eed624cc7..0000000000
--- a/Lang/XPL0/I-before-E-except-after-C
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/I-before-E-except-after-C/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/IBAN b/Lang/XPL0/IBAN
deleted file mode 120000
index ce771b5589..0000000000
--- a/Lang/XPL0/IBAN
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/IBAN/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Joystick-position b/Lang/XPL0/Joystick-position
deleted file mode 120000
index 0ba634deb3..0000000000
--- a/Lang/XPL0/Joystick-position
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Joystick-position/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Knapsack-problem-Bounded b/Lang/XPL0/Knapsack-problem-Bounded
deleted file mode 120000
index 3ed5296747..0000000000
--- a/Lang/XPL0/Knapsack-problem-Bounded
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Knapsack-problem-Bounded/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Largest-int-from-concatenated-ints b/Lang/XPL0/Largest-int-from-concatenated-ints
deleted file mode 120000
index c906e77c82..0000000000
--- a/Lang/XPL0/Largest-int-from-concatenated-ints
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Largest-int-from-concatenated-ints/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Last-letter-first-letter b/Lang/XPL0/Last-letter-first-letter
deleted file mode 120000
index f77624cd59..0000000000
--- a/Lang/XPL0/Last-letter-first-letter
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Last-letter-first-letter/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Left-factorials b/Lang/XPL0/Left-factorials
deleted file mode 120000
index c9ff64d1b6..0000000000
--- a/Lang/XPL0/Left-factorials
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Left-factorials/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Levenshtein-distance b/Lang/XPL0/Levenshtein-distance
deleted file mode 120000
index 0172b975ff..0000000000
--- a/Lang/XPL0/Levenshtein-distance
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Levenshtein-distance/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Long-literals-with-continuations b/Lang/XPL0/Long-literals-with-continuations
deleted file mode 120000
index d850e008c5..0000000000
--- a/Lang/XPL0/Long-literals-with-continuations
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Long-literals-with-continuations/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Long-primes b/Lang/XPL0/Long-primes
deleted file mode 120000
index 4b515cb676..0000000000
--- a/Lang/XPL0/Long-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Long-primes/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Longest-increasing-subsequence b/Lang/XPL0/Longest-increasing-subsequence
deleted file mode 120000
index bed908bffb..0000000000
--- a/Lang/XPL0/Longest-increasing-subsequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Longest-increasing-subsequence/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Longest-string-challenge b/Lang/XPL0/Longest-string-challenge
deleted file mode 120000
index 08f945d149..0000000000
--- a/Lang/XPL0/Longest-string-challenge
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Longest-string-challenge/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Magic-squares-of-doubly-even-order b/Lang/XPL0/Magic-squares-of-doubly-even-order
deleted file mode 120000
index 31327c15e8..0000000000
--- a/Lang/XPL0/Magic-squares-of-doubly-even-order
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Magic-squares-of-doubly-even-order/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Meissel-Mertens-constant b/Lang/XPL0/Meissel-Mertens-constant
new file mode 120000
index 0000000000..8f73d24896
--- /dev/null
+++ b/Lang/XPL0/Meissel-Mertens-constant
@@ -0,0 +1 @@
+../../Task/Meissel-Mertens-constant/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Modified-random-distribution b/Lang/XPL0/Modified-random-distribution
deleted file mode 120000
index dfbceea492..0000000000
--- a/Lang/XPL0/Modified-random-distribution
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Modified-random-distribution/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Numerical-integration-Gauss-Legendre-Quadrature b/Lang/XPL0/Numerical-integration-Gauss-Legendre-Quadrature
deleted file mode 120000
index a05d2a56e6..0000000000
--- a/Lang/XPL0/Numerical-integration-Gauss-Legendre-Quadrature
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Numerical-integration-Gauss-Legendre-Quadrature/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Phrase-reversals b/Lang/XPL0/Phrase-reversals
deleted file mode 120000
index 2aa0453c8b..0000000000
--- a/Lang/XPL0/Phrase-reversals
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Phrase-reversals/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Poker-hand-analyser b/Lang/XPL0/Poker-hand-analyser
deleted file mode 120000
index 5fc0329088..0000000000
--- a/Lang/XPL0/Poker-hand-analyser
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Poker-hand-analyser/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Polynomial-regression b/Lang/XPL0/Polynomial-regression
deleted file mode 120000
index 01f5c8d75a..0000000000
--- a/Lang/XPL0/Polynomial-regression
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Polynomial-regression/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Primorial-numbers b/Lang/XPL0/Primorial-numbers
deleted file mode 120000
index 6512549f63..0000000000
--- a/Lang/XPL0/Primorial-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Primorial-numbers/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Quaternion-type b/Lang/XPL0/Quaternion-type
new file mode 120000
index 0000000000..03ac35a45d
--- /dev/null
+++ b/Lang/XPL0/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Read-a-configuration-file b/Lang/XPL0/Read-a-configuration-file
deleted file mode 120000
index 338d315c72..0000000000
--- a/Lang/XPL0/Read-a-configuration-file
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Read-a-configuration-file/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Rep-string b/Lang/XPL0/Rep-string
deleted file mode 120000
index d90ffe53d7..0000000000
--- a/Lang/XPL0/Rep-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Rep-string/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors b/Lang/XPL0/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
similarity index 100%
rename from Lang/XPL0/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors
rename to Lang/XPL0/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
diff --git a/Lang/XPL0/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/XPL0/Sequence-smallest-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/XPL0/Sequence:-smallest-number-with-exactly-n-divisors
rename to Lang/XPL0/Sequence-smallest-number-with-exactly-n-divisors
diff --git a/Lang/XPL0/Sierpinski-square-curve b/Lang/XPL0/Sierpinski-square-curve
deleted file mode 120000
index f8060a7322..0000000000
--- a/Lang/XPL0/Sierpinski-square-curve
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sierpinski-square-curve/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Sort-numbers-lexicographically b/Lang/XPL0/Sort-numbers-lexicographically
deleted file mode 120000
index f415eaee2b..0000000000
--- a/Lang/XPL0/Sort-numbers-lexicographically
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-numbers-lexicographically/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Sort-three-variables b/Lang/XPL0/Sort-three-variables
deleted file mode 120000
index 6a041ebc3e..0000000000
--- a/Lang/XPL0/Sort-three-variables
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sort-three-variables/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Sorting-Algorithms-Circle-Sort b/Lang/XPL0/Sorting-Algorithms-Circle-Sort
new file mode 120000
index 0000000000..a68d7b0426
--- /dev/null
+++ b/Lang/XPL0/Sorting-Algorithms-Circle-Sort
@@ -0,0 +1 @@
+../../Task/Sorting-Algorithms-Circle-Sort/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Sorting-algorithms-Patience-sort b/Lang/XPL0/Sorting-algorithms-Patience-sort
deleted file mode 120000
index 5ca2b1424f..0000000000
--- a/Lang/XPL0/Sorting-algorithms-Patience-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Patience-sort/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Sorting-algorithms-Permutation-sort b/Lang/XPL0/Sorting-algorithms-Permutation-sort
deleted file mode 120000
index a50b3c1c69..0000000000
--- a/Lang/XPL0/Sorting-algorithms-Permutation-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Permutation-sort/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Square-free-integers b/Lang/XPL0/Square-free-integers
deleted file mode 120000
index 791b667893..0000000000
--- a/Lang/XPL0/Square-free-integers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Square-free-integers/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Stern-Brocot-sequence b/Lang/XPL0/Stern-Brocot-sequence
deleted file mode 120000
index a67d0ce67d..0000000000
--- a/Lang/XPL0/Stern-Brocot-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Stern-Brocot-sequence/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Strip-block-comments b/Lang/XPL0/Strip-block-comments
deleted file mode 120000
index 734cf1b909..0000000000
--- a/Lang/XPL0/Strip-block-comments
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strip-block-comments/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Substitution-cipher b/Lang/XPL0/Substitution-cipher
deleted file mode 120000
index e26a399b99..0000000000
--- a/Lang/XPL0/Substitution-cipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Substitution-cipher/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Subtractive-generator b/Lang/XPL0/Subtractive-generator
deleted file mode 120000
index e69b094ce6..0000000000
--- a/Lang/XPL0/Subtractive-generator
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Subtractive-generator/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Text-processing-1 b/Lang/XPL0/Text-processing-1
deleted file mode 120000
index 395543f260..0000000000
--- a/Lang/XPL0/Text-processing-1
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Text-processing-1/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Text-processing-2 b/Lang/XPL0/Text-processing-2
deleted file mode 120000
index 8d2b9925ef..0000000000
--- a/Lang/XPL0/Text-processing-2
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Text-processing-2/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Thieles-interpolation-formula b/Lang/XPL0/Thieles-interpolation-formula
deleted file mode 120000
index fcd209a547..0000000000
--- a/Lang/XPL0/Thieles-interpolation-formula
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Thieles-interpolation-formula/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/User-input-Graphical b/Lang/XPL0/User-input-Graphical
deleted file mode 120000
index 9b08de25b4..0000000000
--- a/Lang/XPL0/User-input-Graphical
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/User-input-Graphical/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Visualize-a-tree b/Lang/XPL0/Visualize-a-tree
deleted file mode 120000
index 022c2d2ff2..0000000000
--- a/Lang/XPL0/Visualize-a-tree
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Visualize-a-tree/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Window-creation b/Lang/XPL0/Window-creation
deleted file mode 120000
index 8cbc53df4a..0000000000
--- a/Lang/XPL0/Window-creation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Window-creation/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/World-Cup-group-stage b/Lang/XPL0/World-Cup-group-stage
deleted file mode 120000
index 4312a43d55..0000000000
--- a/Lang/XPL0/World-Cup-group-stage
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/World-Cup-group-stage/XPL0
\ No newline at end of file
diff --git a/Lang/YAMLScript/00-LANG.txt b/Lang/YAMLScript/00-LANG.txt
index 7e44330500..1ead096361 100644
--- a/Lang/YAMLScript/00-LANG.txt
+++ b/Lang/YAMLScript/00-LANG.txt
@@ -4,33 +4,22 @@
{{language programming paradigm|hosted}}
{{implementation|Lisp}}
-'''[https://yamlscript.org YS (pronounced "wise", aka YAMLScript)]''' is a new programming language that uses [https://yaml.org/ YAML] as its syntax. It is a complete, functional, general purpose language, but can also be easily embedded in YAML files to make them dynamic at load time. Most existing YAML files and all JSON files are already valid YS programs.
+'''[https://yamlscript.org YAMLScript]''' is a new programming language that uses [https://yaml.org/ YAML] as its syntax. It is a complete, functional, general purpose language, but can also be easily embedded in YAML files to make them dynamic at load time. Most existing YAML files and all JSON files are already valid YAMLScript programs. YAMLScript has a compiler/interpreter CLI program called [https://github.com/yaml/yamlscript/releases ys] and is also available in several programming languages as a binding module to the [https://github.com/yaml/yamlscript/releases libyamlscript.so] shared library:
-You can learn YS for free (with help from experienced mentors) at [https://exercism.org/tracks/yamlscript Exercism].
-
-YS has a compiler/interpreter CLI program called [https://github.com/yaml/yamlscript/releases ys] and is also available in several programming languages as a binding module to the [https://github.com/yaml/yamlscript/releases libys.so] shared library:
-
-* [https://www.nuget.org/packages/YAMLScript/ C#]
* [https://clojars.org/org.yamlscript/clj-yamlscript Clojure]
-* [https://shardbox.org/shards/yamlscript Crystal]
-* [https://github.com/yaml/yamlscript-go Go]
-* [https://hackage.haskell.org/package/yamlscript Haskell]
* [https://clojars.org/org.yamlscript/yamlscript Java]
-* [https://juliahub.com/ui/Packages/General/YAMLScript Julia]
-* [https://luarocks.org/modules/ingy/yamlscript Lua]
* [https://www.npmjs.com/package/@yaml/yamlscript NodeJS]
* [https://metacpan.org/pod/YAMLScript Perl]
-* [https://packagist.org/packages/yaml/yamlscript PHP]
* [https://pypi.org/project/yamlscript/ Python]
* [https://raku.land/zef:ingy/YAMLScript Raku]
* [https://rubygems.org/gems/yamlscript Ruby]
* [https://crates.io/crates/yamlscript Rust]
-==Installing YS==
+==Installing YAMLScript==
-Run this command to install the ys command line YS runner/loader/compiler binary.
+Run this command to install the ys command line YAMLScript runner/loader/compiler program.
- curl https://getys.org/ys | bash
+ curl -sSL yamlscript.org/install | bash
That will install $HOME/.local/bin/ys. If $HOME/.local/bin is not in your PATH, run:
@@ -39,77 +28,14 @@ That will install $HOME/.local/bin/ys. If $HOME/.local/bin
-#!/usr/bin/env ys-0
-
-# Create a Rosetta Code entry for a YS program:
-
-defn main(program *args):
- say: |-
-
- =={{header|YAMLScript}}==
-
- $chomp(program:read)
-
-
- when-not ENV.NO_OUT.?:
- command =: "ys $program$fmt-args(args)"
- output =: bash(command).out:chomp
- say: |-
-
- {{out}}
-
- $ $command
- $output
- </pre>
-
-defn fmt-args(args):
- args =: !:joins
- map _ args:
- \(re-matches(/[-+,.:\w]+/ _:S)
- .if(_ pr-str(_)))
- when args.?: " $args"
-
-
-You run it like this:
-
-
-$ ys rosetta-code-ys-entry fibonacci-sequence.ys 5
-
-=={{header|YAMLScript}}==
-
-!YS-v0
-
-defn main(n=10):
- loop a 0, b 1, i 1:
- say: a
- when i < n:
- recur: b, (a + b), i.++
-
-
-{{out}}
-
-$ ys fibonacci-sequence.ys 5
-0
-1
-1
-2
-3
-</pre>
-
\ No newline at end of file
+See https://yamlscript.org for more information.
\ No newline at end of file
diff --git a/Lang/YAMLScript/100-prisoners b/Lang/YAMLScript/100-prisoners
deleted file mode 120000
index bebf8d5d8f..0000000000
--- a/Lang/YAMLScript/100-prisoners
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/100-prisoners/YAMLScript
\ No newline at end of file
diff --git a/Lang/YAMLScript/21-game b/Lang/YAMLScript/21-game
deleted file mode 120000
index 80f0a3594c..0000000000
--- a/Lang/YAMLScript/21-game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/21-game/YAMLScript
\ No newline at end of file
diff --git a/Lang/YAMLScript/Array-length b/Lang/YAMLScript/Array-length
deleted file mode 120000
index 6ab2707560..0000000000
--- a/Lang/YAMLScript/Array-length
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Array-length/YAMLScript
\ No newline at end of file
diff --git a/Lang/YAMLScript/Average-loop-length b/Lang/YAMLScript/Average-loop-length
deleted file mode 120000
index 21710eecef..0000000000
--- a/Lang/YAMLScript/Average-loop-length
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Average-loop-length/YAMLScript
\ No newline at end of file
diff --git a/Lang/YAMLScript/Base64-decode-data b/Lang/YAMLScript/Base64-decode-data
deleted file mode 120000
index 0f66fa60fa..0000000000
--- a/Lang/YAMLScript/Base64-decode-data
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Base64-decode-data/YAMLScript
\ No newline at end of file
diff --git a/Lang/YAMLScript/Best-shuffle b/Lang/YAMLScript/Best-shuffle
deleted file mode 120000
index 99ffbfc9b1..0000000000
--- a/Lang/YAMLScript/Best-shuffle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Best-shuffle/YAMLScript
\ No newline at end of file
diff --git a/Lang/YAMLScript/Conways-Game-of-Life b/Lang/YAMLScript/Conways-Game-of-Life
deleted file mode 120000
index 3153c05b26..0000000000
--- a/Lang/YAMLScript/Conways-Game-of-Life
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Conways-Game-of-Life/YAMLScript
\ No newline at end of file
diff --git a/Lang/YAMLScript/Dragon-curve b/Lang/YAMLScript/Dragon-curve
deleted file mode 120000
index 7f9deedb82..0000000000
--- a/Lang/YAMLScript/Dragon-curve
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dragon-curve/YAMLScript
\ No newline at end of file
diff --git a/Lang/YAMLScript/Even-or-odd b/Lang/YAMLScript/Even-or-odd
deleted file mode 120000
index 95556dd2eb..0000000000
--- a/Lang/YAMLScript/Even-or-odd
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Even-or-odd/YAMLScript
\ No newline at end of file
diff --git a/Lang/YAMLScript/Floyds-triangle b/Lang/YAMLScript/Floyds-triangle
deleted file mode 120000
index 9c388f69f3..0000000000
--- a/Lang/YAMLScript/Floyds-triangle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Floyds-triangle/YAMLScript
\ No newline at end of file
diff --git a/Lang/YAMLScript/Function-definition b/Lang/YAMLScript/Function-definition
deleted file mode 120000
index cc6f6727f4..0000000000
--- a/Lang/YAMLScript/Function-definition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Function-definition/YAMLScript
\ No newline at end of file
diff --git a/Lang/YAMLScript/Greatest-common-divisor b/Lang/YAMLScript/Greatest-common-divisor
deleted file mode 120000
index 134280cc97..0000000000
--- a/Lang/YAMLScript/Greatest-common-divisor
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Greatest-common-divisor/YAMLScript
\ No newline at end of file
diff --git a/Lang/YAMLScript/Integer-comparison b/Lang/YAMLScript/Integer-comparison
deleted file mode 120000
index 47b0c04990..0000000000
--- a/Lang/YAMLScript/Integer-comparison
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Integer-comparison/YAMLScript
\ No newline at end of file
diff --git a/Lang/YAMLScript/Integer-overflow b/Lang/YAMLScript/Integer-overflow
deleted file mode 120000
index fe6aaac55c..0000000000
--- a/Lang/YAMLScript/Integer-overflow
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Integer-overflow/YAMLScript
\ No newline at end of file
diff --git a/Lang/YAMLScript/JortSort b/Lang/YAMLScript/JortSort
deleted file mode 120000
index 28bb797476..0000000000
--- a/Lang/YAMLScript/JortSort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/JortSort/YAMLScript
\ No newline at end of file
diff --git a/Lang/YAMLScript/Knuth-shuffle b/Lang/YAMLScript/Knuth-shuffle
deleted file mode 120000
index 676dc89553..0000000000
--- a/Lang/YAMLScript/Knuth-shuffle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Knuth-shuffle/YAMLScript
\ No newline at end of file
diff --git a/Lang/YAMLScript/Luhn-test-of-credit-card-numbers b/Lang/YAMLScript/Luhn-test-of-credit-card-numbers
deleted file mode 120000
index f96e4c4d21..0000000000
--- a/Lang/YAMLScript/Luhn-test-of-credit-card-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Luhn-test-of-credit-card-numbers/YAMLScript
\ No newline at end of file
diff --git a/Lang/YAMLScript/Munching-squares b/Lang/YAMLScript/Munching-squares
deleted file mode 120000
index 2b7870226f..0000000000
--- a/Lang/YAMLScript/Munching-squares
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Munching-squares/YAMLScript
\ No newline at end of file
diff --git a/Lang/YAMLScript/Next-highest-int-from-digits b/Lang/YAMLScript/Next-highest-int-from-digits
deleted file mode 120000
index 6dd0221650..0000000000
--- a/Lang/YAMLScript/Next-highest-int-from-digits
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Next-highest-int-from-digits/YAMLScript
\ No newline at end of file
diff --git a/Lang/YAMLScript/One-dimensional-cellular-automata b/Lang/YAMLScript/One-dimensional-cellular-automata
deleted file mode 120000
index 74c105b72e..0000000000
--- a/Lang/YAMLScript/One-dimensional-cellular-automata
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/One-dimensional-cellular-automata/YAMLScript
\ No newline at end of file
diff --git a/Lang/YAMLScript/Palindrome-detection b/Lang/YAMLScript/Palindrome-detection
deleted file mode 120000
index fc4c1cdd2f..0000000000
--- a/Lang/YAMLScript/Palindrome-detection
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Palindrome-detection/YAMLScript
\ No newline at end of file
diff --git a/Lang/YAMLScript/Quickselect-algorithm b/Lang/YAMLScript/Quickselect-algorithm
deleted file mode 120000
index 978322a04a..0000000000
--- a/Lang/YAMLScript/Quickselect-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Quickselect-algorithm/YAMLScript
\ No newline at end of file
diff --git a/Lang/YAMLScript/Sieve-of-Eratosthenes b/Lang/YAMLScript/Sieve-of-Eratosthenes
deleted file mode 120000
index b42b0394f6..0000000000
--- a/Lang/YAMLScript/Sieve-of-Eratosthenes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sieve-of-Eratosthenes/YAMLScript
\ No newline at end of file
diff --git a/Lang/YAMLScript/Sparkline-in-unicode b/Lang/YAMLScript/Sparkline-in-unicode
deleted file mode 120000
index ae2a07413c..0000000000
--- a/Lang/YAMLScript/Sparkline-in-unicode
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sparkline-in-unicode/YAMLScript
\ No newline at end of file
diff --git a/Lang/YAMLScript/Terminal-control-Ringing-the-terminal-bell b/Lang/YAMLScript/Terminal-control-Ringing-the-terminal-bell
deleted file mode 120000
index 21baf990a9..0000000000
--- a/Lang/YAMLScript/Terminal-control-Ringing-the-terminal-bell
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Terminal-control-Ringing-the-terminal-bell/YAMLScript
\ No newline at end of file
diff --git a/Lang/YAMLScript/Tokenize-a-string b/Lang/YAMLScript/Tokenize-a-string
deleted file mode 120000
index 4c9f0efdcc..0000000000
--- a/Lang/YAMLScript/Tokenize-a-string
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tokenize-a-string/YAMLScript
\ No newline at end of file
diff --git a/Lang/YAMLScript/Undefined-values b/Lang/YAMLScript/Undefined-values
deleted file mode 120000
index ff7699a995..0000000000
--- a/Lang/YAMLScript/Undefined-values
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Undefined-values/YAMLScript
\ No newline at end of file
diff --git a/Lang/YAMLScript/Validate-International-Securities-Identification-Number b/Lang/YAMLScript/Validate-International-Securities-Identification-Number
deleted file mode 120000
index 40c80b8d7d..0000000000
--- a/Lang/YAMLScript/Validate-International-Securities-Identification-Number
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Validate-International-Securities-Identification-Number/YAMLScript
\ No newline at end of file
diff --git a/Lang/YAMLScript/Van-der-Corput-sequence b/Lang/YAMLScript/Van-der-Corput-sequence
deleted file mode 120000
index 654ffd3cbb..0000000000
--- a/Lang/YAMLScript/Van-der-Corput-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Van-der-Corput-sequence/YAMLScript
\ No newline at end of file
diff --git a/Lang/YAMLScript/Weird-numbers b/Lang/YAMLScript/Weird-numbers
deleted file mode 120000
index bf5aa481d4..0000000000
--- a/Lang/YAMLScript/Weird-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Weird-numbers/YAMLScript
\ No newline at end of file
diff --git a/Lang/YAMLScript/Xiaolin-Wus-line-algorithm b/Lang/YAMLScript/Xiaolin-Wus-line-algorithm
deleted file mode 120000
index be316f6902..0000000000
--- a/Lang/YAMLScript/Xiaolin-Wus-line-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Xiaolin-Wus-line-algorithm/YAMLScript
\ No newline at end of file
diff --git a/Lang/YAMLScript/Yellowstone-sequence b/Lang/YAMLScript/Yellowstone-sequence
deleted file mode 120000
index efac2d410f..0000000000
--- a/Lang/YAMLScript/Yellowstone-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Yellowstone-sequence/YAMLScript
\ No newline at end of file
diff --git a/Lang/YAMLScript/Zig-zag-matrix b/Lang/YAMLScript/Zig-zag-matrix
deleted file mode 120000
index 691eda7cd9..0000000000
--- a/Lang/YAMLScript/Zig-zag-matrix
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Zig-zag-matrix/YAMLScript
\ No newline at end of file
diff --git a/Lang/Yabasic/Associative-array-Merging b/Lang/Yabasic/Associative-array-Merging
deleted file mode 120000
index 446716ab58..0000000000
--- a/Lang/Yabasic/Associative-array-Merging
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Associative-array-Merging/Yabasic
\ No newline at end of file
diff --git a/Lang/Yabasic/Averages-Mean-angle b/Lang/Yabasic/Averages-Mean-angle
deleted file mode 120000
index ee2478f1ef..0000000000
--- a/Lang/Yabasic/Averages-Mean-angle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Averages-Mean-angle/Yabasic
\ No newline at end of file
diff --git a/Lang/Yabasic/Determine-if-a-string-has-all-the-same-characters b/Lang/Yabasic/Determine-if-a-string-has-all-the-same-characters
deleted file mode 120000
index c1da4813dd..0000000000
--- a/Lang/Yabasic/Determine-if-a-string-has-all-the-same-characters
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-has-all-the-same-characters/Yabasic
\ No newline at end of file
diff --git a/Lang/Yabasic/Determine-sentence-type b/Lang/Yabasic/Determine-sentence-type
deleted file mode 120000
index 54129c23c0..0000000000
--- a/Lang/Yabasic/Determine-sentence-type
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-sentence-type/Yabasic
\ No newline at end of file
diff --git a/Lang/Yabasic/Display-a-linear-combination b/Lang/Yabasic/Display-a-linear-combination
deleted file mode 120000
index 3089327b6e..0000000000
--- a/Lang/Yabasic/Display-a-linear-combination
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Display-a-linear-combination/Yabasic
\ No newline at end of file
diff --git a/Lang/Yabasic/Diversity-prediction-theorem b/Lang/Yabasic/Diversity-prediction-theorem
deleted file mode 120000
index 5dec4248b2..0000000000
--- a/Lang/Yabasic/Diversity-prediction-theorem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Diversity-prediction-theorem/Yabasic
\ No newline at end of file
diff --git a/Lang/Yabasic/Empty-program b/Lang/Yabasic/Empty-program
new file mode 120000
index 0000000000..86460983fb
--- /dev/null
+++ b/Lang/Yabasic/Empty-program
@@ -0,0 +1 @@
+../../Task/Empty-program/Yabasic
\ No newline at end of file
diff --git a/Lang/Yabasic/Evaluate-binomial-coefficients b/Lang/Yabasic/Evaluate-binomial-coefficients
deleted file mode 120000
index 2d010b1897..0000000000
--- a/Lang/Yabasic/Evaluate-binomial-coefficients
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Evaluate-binomial-coefficients/Yabasic
\ No newline at end of file
diff --git a/Lang/Yabasic/Kronecker-product b/Lang/Yabasic/Kronecker-product
deleted file mode 120000
index 64e2f55421..0000000000
--- a/Lang/Yabasic/Kronecker-product
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Kronecker-product/Yabasic
\ No newline at end of file
diff --git a/Lang/Yabasic/Meissel-Mertens-constant b/Lang/Yabasic/Meissel-Mertens-constant
new file mode 120000
index 0000000000..2300a0e96d
--- /dev/null
+++ b/Lang/Yabasic/Meissel-Mertens-constant
@@ -0,0 +1 @@
+../../Task/Meissel-Mertens-constant/Yabasic
\ No newline at end of file
diff --git a/Lang/Yabasic/Modular-inverse b/Lang/Yabasic/Modular-inverse
deleted file mode 120000
index 996963babe..0000000000
--- a/Lang/Yabasic/Modular-inverse
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Modular-inverse/Yabasic
\ No newline at end of file
diff --git a/Lang/Yabasic/Multiple-regression b/Lang/Yabasic/Multiple-regression
deleted file mode 120000
index 047c89f1aa..0000000000
--- a/Lang/Yabasic/Multiple-regression
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Multiple-regression/Yabasic
\ No newline at end of file
diff --git a/Lang/Yabasic/Nested-templated-data b/Lang/Yabasic/Nested-templated-data
deleted file mode 120000
index 026a122d79..0000000000
--- a/Lang/Yabasic/Nested-templated-data
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Nested-templated-data/Yabasic
\ No newline at end of file
diff --git a/Lang/Yabasic/Pascals-triangle b/Lang/Yabasic/Pascals-triangle
deleted file mode 120000
index 9cb7c7cced..0000000000
--- a/Lang/Yabasic/Pascals-triangle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pascals-triangle/Yabasic
\ No newline at end of file
diff --git a/Lang/Yabasic/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors b/Lang/Yabasic/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
similarity index 100%
rename from Lang/Yabasic/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors
rename to Lang/Yabasic/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
diff --git a/Lang/Yabasic/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/Yabasic/Sequence-smallest-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/Yabasic/Sequence:-smallest-number-with-exactly-n-divisors
rename to Lang/Yabasic/Sequence-smallest-number-with-exactly-n-divisors
diff --git a/Lang/Yabasic/Sexy-primes b/Lang/Yabasic/Sexy-primes
deleted file mode 120000
index a3fa026246..0000000000
--- a/Lang/Yabasic/Sexy-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sexy-primes/Yabasic
\ No newline at end of file
diff --git a/Lang/Yabasic/Shell-one-liner b/Lang/Yabasic/Shell-one-liner
deleted file mode 120000
index 04ae90ab0a..0000000000
--- a/Lang/Yabasic/Shell-one-liner
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Shell-one-liner/Yabasic
\ No newline at end of file
diff --git a/Lang/Yabasic/Sorting-algorithms-Counting-sort b/Lang/Yabasic/Sorting-algorithms-Counting-sort
deleted file mode 120000
index c5fee45d6b..0000000000
--- a/Lang/Yabasic/Sorting-algorithms-Counting-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Counting-sort/Yabasic
\ No newline at end of file
diff --git a/Lang/Yabasic/Sorting-algorithms-Stooge-sort b/Lang/Yabasic/Sorting-algorithms-Stooge-sort
deleted file mode 120000
index 920cab2b30..0000000000
--- a/Lang/Yabasic/Sorting-algorithms-Stooge-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Stooge-sort/Yabasic
\ No newline at end of file
diff --git a/Lang/Yabasic/Soundex b/Lang/Yabasic/Soundex
deleted file mode 120000
index 154bd39b85..0000000000
--- a/Lang/Yabasic/Soundex
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Soundex/Yabasic
\ No newline at end of file
diff --git a/Lang/Yabasic/Statistics-Normal-distribution b/Lang/Yabasic/Statistics-Normal-distribution
deleted file mode 120000
index f9d32e077f..0000000000
--- a/Lang/Yabasic/Statistics-Normal-distribution
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Statistics-Normal-distribution/Yabasic
\ No newline at end of file
diff --git a/Lang/Yabasic/The-Name-Game b/Lang/Yabasic/The-Name-Game
deleted file mode 120000
index 97bfdf9347..0000000000
--- a/Lang/Yabasic/The-Name-Game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/The-Name-Game/Yabasic
\ No newline at end of file
diff --git a/Lang/Yabasic/Tree-datastructures b/Lang/Yabasic/Tree-datastructures
deleted file mode 120000
index da4a839e0d..0000000000
--- a/Lang/Yabasic/Tree-datastructures
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tree-datastructures/Yabasic
\ No newline at end of file
diff --git a/Lang/Yabasic/Twos-complement b/Lang/Yabasic/Twos-complement
deleted file mode 120000
index 3889fdcaf6..0000000000
--- a/Lang/Yabasic/Twos-complement
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Twos-complement/Yabasic
\ No newline at end of file
diff --git a/Lang/Yabasic/Web-scraping b/Lang/Yabasic/Web-scraping
deleted file mode 120000
index 2a4cb5ee13..0000000000
--- a/Lang/Yabasic/Web-scraping
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Web-scraping/Yabasic
\ No newline at end of file
diff --git a/Lang/ZED/00-LANG.txt b/Lang/ZED/00-LANG.txt
index 5b0358bc17..b0cb425a84 100644
--- a/Lang/ZED/00-LANG.txt
+++ b/Lang/ZED/00-LANG.txt
@@ -12,9 +12,8 @@ Development of ZEDc is also happening on GitHub: https://github.com/zelah/ZEDc
ZED can be seen compiling itself here: http://ideone.com/ARpMCM
-(begin (define (ZED* ZEDnumber1 ZEDnumber2) (cond (#t (* ZEDnumber1 ZEDnumber2)) (else err))) (define (ZED+ ZEDnumber1 ZEDnumber2) (cond (#t (+ ZEDnumber1 ZEDnumber2)) (else err))) (define (ZED- ZEDnumber1 ZEDnumber2) (cond (#t (- ZEDnumber1 ZEDnumber2)) (else err))) (define (ZED/ ZEDnumber1 ZEDnumber2) (cond (#t (/ ZEDnumber1 ZEDnumber2)) (else err))) (define (ZED= value1 value2) (cond (#t (eqv? value1 value2)) (else err))) (define (ZEDadd-between! item list collect) (cond ((null? list) collect) ((null? (cdr list)) (cons (car list) collect)) (#t (ZEDadd-between! item (cdr list) (cons item (cons (car list) collect)))) (else err))) (define (ZEDadd-between item list) (cond (#t (reverse (ZEDadd-between! item list (quote ())))) (else err))) (define (ZEDadd-between-ra list item) (cond (#t (reverse (ZEDadd-between! item list (quote ())))) (else err))) (define (ZEDalpha) (cond (#t (ZEDwrite-all (ZEDrd (quote ()) append (ZEDrd (quote ()) append (ZEDnewlines (ZEDby-four (ZEDfunction-sort (ZEDsentences (ZEDleading-newline (ZEDspace-newline (ZEDtab-replace (ZEDnewline-space-tab-repeats (ZEDnewline-space (ZEDfilter ZEDnot-return? (ZEDreplace-trailing-white-space (ZEDread-all)))))))))))))))) (else err))) (define (ZEDapplication? expression) (cond (#t (and (not (null? expression)) (pair? (car expression)) (null? (cdar expression)))) (else err))) (define (ZEDarity arity-hash function) (cond (#t (cdr (assoc function arity-hash))) (else err))) (define (ZEDarity-hash! clause) (cond (#t (cons (ZEDclause-name clause) (ZEDclause-arity clause))) (else err))) (define (ZEDarity-hash program) (cond (#t (append (map ZEDarity-hash! program) (append (list (cons (quote ZED1) 1) (cons (quote ZED!) 1) (cons (quote ZED001) 1) (cons (quote or) 2) (cons (quote and) 2) (cons (quote begin) 2) (cons (quote ZEDc) 2) (cons (quote quote) 1)) (list (cons (quote ZED002) 2) (cons (quote ZED003) 3) (cons (quote ZED004) 4) (cons (quote ZED005) 5) (cons (quote ZED006) 6) (cons (quote ZED007) 7) (cons (quote ZED008) 8) (cons (quote ZED009) 9) (cons (quote ZED010) 10) (cons (quote ZED011) 11) (cons (quote ZED012) 12) (cons (quote ZED013) 13) (cons (quote ZED014) 14) (cons (quote ZED015) 15) (cons (quote ZED016) 16) (cons (quote ZED017) 17) (cons (quote ZED018) 18) (cons (quote ZED019) 19) (cons (quote ZED020) 20) (cons (quote ZED021) 21) (cons (quote ZED022) 22) (cons (quote ZED023) 23) (cons (quote ZED024) 24) (cons (quote ZED025) 25) (cons (quote ZED026) 26) (cons (quote ZED027) 27) (cons (quote ZED028) 28) (cons (quote ZED029) 29) (cons (quote ZED030) 30) (cons (quote ZED031) 31) (cons (quote ZED032) 32) (cons (quote ZED033) 33) (cons (quote ZED034) 34) (cons (quote ZED035) 35) (cons (quote ZED036) 36) (cons (quote ZED037) 37) (cons (quote ZED038) 38) (cons (quote ZED039) 39) (cons (quote ZED040) 40) (cons (quote ZED041) 41) (cons (quote ZED042) 42) (cons (quote ZED043) 43) (cons (quote ZED044) 44) (cons (quote ZED045) 45) (cons (quote ZED046) 46) (cons (quote ZED047) 47) (cons (quote ZED048) 48) (cons (quote ZED049) 49) (cons (quote ZED050) 50) (cons (quote ZED051) 51) (cons (quote ZED052) 52) (cons (quote ZED053) 53) (cons (quote ZED054) 54) (cons (quote ZED055) 55) (cons (quote ZED056) 56) (cons (quote ZED057) 57) (cons (quote ZED058) 58) (cons (quote ZED059) 59) (cons (quote ZED060) 60) (cons (quote ZED061) 61) (cons (quote ZED062) 62) (cons (quote ZED063) 63) (cons (quote ZED064) 64) (cons (quote ZED065) 65) (cons (quote ZED066) 66) (cons (quote ZED067) 67) (cons (quote ZED068) 68) (cons (quote ZED069) 69) (cons (quote ZED070) 70) (cons (quote ZED071) 71) (cons (quote ZED072) 72) (cons (quote ZED073) 73) (cons (quote ZED074) 74) (cons (quote ZED075) 75) (cons (quote ZED076) 76) (cons (quote ZED077) 77) (cons (quote ZED078) 78) (cons (quote ZED079) 79) (cons (quote ZED080) 80) (cons (quote ZED081) 81) (cons (quote ZED082) 82) (cons (quote ZED083) 83) (cons (quote ZED084) 84) (cons (quote ZED085) 85) (cons (quote ZED086) 86) (cons (quote ZED087) 87) (cons (quote ZED088) 88) (cons (quote ZED089) 89) (cons (quote ZED090) 90) (cons (quote ZED091) 91) (cons (quote ZED092) 92) (cons (quote ZED093) 93) (cons (quote ZED094) 94) (cons (quote ZED095) 95) (cons (quote ZED096) 96) (cons (quote ZED097) 97) (cons (quote ZED098) 98) (cons (quote ZED099) 99))))) (else err))) (define (ZEDby-four! sentences collect) (cond ((null? sentences) collect) (#t (ZEDby-four! (cddddr sentences) (cons (list (car sentences) (cadr sentences) (caddr sentences) (cadddr sentences)) collect))) (else err))) (define (ZEDby-four sentences) (cond (#t (reverse (ZEDby-four! sentences (quote ())))) (else err))) (define (ZEDby-three! sentences collect) (cond ((null? sentences) collect) (#t (ZEDby-three! (cdddr sentences) (cons (list (car sentences) (cadr sentences) (caddr sentences)) collect))) (else err))) (define (ZEDby-three sentences) (cond (#t (reverse (ZEDby-three! sentences (quote ())))) (else err))) (define (ZEDcharacter-less? character1 character2) (cond (#t (< (char->integer character1) (char->integer character2))) (else err))) (define (ZEDclause-arguments clause) (cond (#t (cadr clause)) (else err))) (define (ZEDclause-arguments-agree clause1 clause2) (cond ((equal? (ZEDclause-arguments clause1) (ZEDclause-arguments clause2)) (ZEDclause-arguments clause1)) (else err))) (define (ZEDclause-arity clause) (cond (#t (length (ZEDclause-arguments clause))) (else err))) (define (ZEDclause-body clause) (cond (#t (cddr clause)) (else err))) (define (ZEDclause-less? clause1 clause2) (cond (#t (ZEDsentence-less? (car clause1) (car clause2))) (else err))) (define (ZEDclause-name clause) (cond (#t (car clause)) (else err))) (define (ZEDclause-name-agree clause1 clause2) (cond ((eq? (ZEDclause-name clause1) (ZEDclause-name clause2)) (ZEDclause-name clause1)) (else err))) (define (ZEDcombine-all! program collect) (cond ((null? program) collect) ((null? (cdr program)) (cons (car program) collect)) ((eq? (ZEDclause-name (car program)) (ZEDclause-name (cadr program))) (ZEDcombine-all! (ZEDcombine-head-clauses program) collect)) (#t (ZEDcombine-all! (cdr program) (cons (car program) collect))) (else err))) (define (ZEDcombine-all program) (cond (#t (reverse (ZEDcombine-all! program (quote ())))) (else err))) (define (ZEDcombine-clauses clause1 clause2) (cond (#t (cons (ZEDclause-name-agree clause1 clause2) (cons (ZEDclause-arguments-agree clause1 clause2) (append (ZEDclause-body clause1) (ZEDclause-body clause2))))) (else err))) (define (ZEDcombine-head-clauses program) (cond (#t (cons (ZEDcombine-clauses (car program) (cadr program)) (cddr program))) (else err))) (define (ZEDcombine-program-clauses program) (cond (#t (ZEDcombine-all (ZEDready-program program))) (else err))) (define (ZEDcomp!) (cond (#t (ZEDcomp!a (ZEDcombine-program-clauses (ZEDby-three (ZEDread-sentences (ZEDdiscard-comments (ZEDfunction-sort (ZEDsentences (ZEDleading-newline (ZEDspace-newline (ZEDtab-replace (ZEDnewline-space-tab-repeats (ZEDnewline-space (ZEDfilter ZEDnot-return? (ZEDreplace-trailing-white-space (ZEDread-all)))))))))))))))) (else err))) (define (ZEDcomp!a combined) (cond (#t (ZEDcomp!aa (ZEDprogramize combined (ZEDarity-hash combined)))) (else err))) (define (ZEDcomp!aa programized) (cond (#t (write programized)) (else err))) (define (ZEDcomp) (cond (#t (ZEDcomp!)) (else err))) (define (ZEDcondefy! expressions collect) (cond ((null? expressions) collect) (#t (ZEDcondefy! (cddr expressions) (cons (append (car expressions) (cadr expressions)) collect))) (else err))) (define (ZEDcondefy expressions) (cond (#t (reverse (ZEDcondefy! expressions (quote ())))) (else err))) (define (ZEDcons ZEDvalue1 ZEDvalue2) (cond (#t (cons ZEDvalue1 ZEDvalue2)) (else err))) (define (ZEDcount ZEDnumber) (cond (#t (cons (delay ZEDnumber) (delay (ZEDcount (ZED+ ZEDnumber 1))))) (else err))) (define (ZEDcount-by ZEDstep ZEDnumber) (cond (#t (cons (delay ZEDnumber) (delay (ZEDcount-by ZEDstep (ZED+ ZEDnumber ZEDstep))))) (else err))) (define (ZEDdelay-wrap expression) (cond (#t (list (quote delay) expression)) (else err))) (define (ZEDdigit? character) (cond (#t (or (eqv? #\0 character) (eqv? #\1 character) (eqv? #\2 character) (eqv? #\3 character) (eqv? #\4 character) (eqv? #\5 character) (eqv? #\6 character) (eqv? #\7 character) (eqv? #\8 character) (eqv? #\9 character))) (else err))) (define (ZEDdiscard-comments! program collect) (cond ((null? program) collect) (#t (ZEDdiscard-comments! (cddddr program) (cons (cadddr program) (cons (caddr program) (cons (car program) collect))))) (else err))) (define (ZEDdiscard-comments program) (cond (#t (reverse (ZEDdiscard-comments! program (quote ())))) (else err))) (define (ZEDdr! value) (cond ((pair? value) (ZEDmp ZEDdr! (ZEDfirst 64 value))) (#t value) (else err))) (define (ZEDdr value) (cond (#t (begin (display (ZEDpr (ZEDdr! value))) (newline) (newline) value)) (else err))) (define (ZEDdrr value) (cond (#t (begin (display (ZEDpr value)) (newline) (newline) value)) (else err))) (define (ZEDfalse? noun-list) (cond (#t (equal? noun-list (list ## #\f #\a #\l #\s #\e))) (else err))) (define (ZEDfi function list) (cond ((null? list) (quote ())) ((function (if (promise? (car list)) (force (car list)) (car list))) (cons (delay (if (promise? (car list)) (force (car list)) (car list))) (delay (ZEDfi function (if (promise? (cdr list)) (force (cdr list)) (cdr list)))))) (#t (ZEDfi function (if (promise? (cdr list)) (force (cdr list)) (cdr list)))) (else err))) (define (ZEDfilter! predicate list collect) (cond ((null? list) collect) ((predicate (car list)) (ZEDfilter! predicate (cdr list) (cons (car list) collect))) (#t (ZEDfilter! predicate (cdr list) collect)) (else err))) (define (ZEDfilter predicate list) (cond (#t (reverse (ZEDfilter! predicate list (quote ())))) (else err))) (define (ZEDfirst! integer list collect) (cond ((or (zero? integer) (null? list)) (reverse collect)) ((not (pair? list)) (reverse (cons list collect))) ((> integer 0) (ZEDfirst! (- integer 1) (if (promise? (cdr list)) (force (cdr list)) (cdr list)) (cons (if (promise? (car list)) (force (car list)) (car list)) collect))) (else err))) (define (ZEDfirst integer list) (cond ((not (pair? list)) list) (#t (ZEDfirst! integer list (quote ()))) (else err))) (define (ZEDflatten! ZEDlist ZEDsub-list-found? ZEDcollect) (cond ((and (ZEDnull? ZEDlist) (ZEDnot ZEDsub-list-found?)) (ZEDreverse ZEDcollect)) ((ZEDnull? ZEDlist) (ZEDflatten! (ZEDreverse ZEDcollect) #f (quote ()))) ((ZEDnot (ZEDpair? ZEDlist)) (ZEDflatten! (quote ()) ZEDsub-list-found? (ZEDcons ZEDlist ZEDcollect))) ((ZEDpair? (if (promise? (car ZEDlist)) (force (car ZEDlist)) (car ZEDlist))) (ZEDflatten! (if (promise? (cdr ZEDlist)) (force (cdr ZEDlist)) (cdr ZEDlist)) #t (ZEDcons (if (promise? (cdr (if (promise? (car ZEDlist)) (force (car ZEDlist)) (car ZEDlist)))) (force (cdr (if (promise? (car ZEDlist)) (force (car ZEDlist)) (car ZEDlist)))) (cdr (if (promise? (car ZEDlist)) (force (car ZEDlist)) (car ZEDlist)))) (ZEDcons (if (promise? (car (if (promise? (car ZEDlist)) (force (car ZEDlist)) (car ZEDlist)))) (force (car (if (promise? (car ZEDlist)) (force (car ZEDlist)) (car ZEDlist)))) (car (if (promise? (car ZEDlist)) (force (car ZEDlist)) (car ZEDlist)))) ZEDcollect)))) ((ZEDnull? (if (promise? (car ZEDlist)) (force (car ZEDlist)) (car ZEDlist))) (ZEDflatten! (if (promise? (cdr ZEDlist)) (force (cdr ZEDlist)) (cdr ZEDlist)) ZEDsub-list-found? ZEDcollect)) (#t (ZEDflatten! (if (promise? (cdr ZEDlist)) (force (cdr ZEDlist)) (cdr ZEDlist)) ZEDsub-list-found? (ZEDcons (if (promise? (car ZEDlist)) (force (car ZEDlist)) (car ZEDlist)) ZEDcollect))) (else err))) (define (ZEDflatten ZEDlist) (cond (#t (ZEDflatten! ZEDlist #f (quote ()))) (else err))) (define (ZEDfor-each ZEDeffect ZEDlist) (cond (#t (for-each ZEDeffect ZEDlist)) (else err))) (define (ZEDfunction expression) (cond (#t (caar expression)) (else err))) (define (ZEDfunction-sort sentences) (cond (#t (ZEDrd (quote ()) append (ZEDsort ZEDclause-less? (ZEDby-four sentences)))) (else err))) (define (ZEDfunctionize clause arity-hash) (cond (#t (list (quote define) (cons (ZEDclause-name clause) (ZEDclause-arguments clause)) (cons (quote cond) (append (ZEDcondefy (ZEDmap-with ZEDschemefy (ZEDclause-body clause) arity-hash)) (list (list (quote else) (quote err))))))) (else err))) (define (ZEDgather-count?! candidate) (cond (#t (and (= 6 (length candidate)) (eqv? #\Z (car candidate)) (eqv? #\E (cadr candidate)) (eqv? #\D (caddr candidate)) (eqv? #\0 (cadddr candidate)) (ZEDdigit? (car (cddddr candidate))) (ZEDdigit? (cadr (cddddr candidate))))) (else err))) (define (ZEDgather-count? symbol) (cond (#t (ZEDgather-count?! (string->list (symbol->string symbol)))) (else err))) (define (ZEDgather-noun sentence) (cond ((null? sentence) (quote ())) ((eqv? #\space (car sentence)) (quote ())) (#t (cons (car sentence) (ZEDgather-noun (cdr sentence)))) (else err))) (define (ZEDgather-verb sentence) (cond ((eqv? #) (car sentence)) (quote ())) (#t (cons (car sentence) (ZEDgather-verb (cdr sentence)))) (else err))) (define (ZEDgr garbage value) (cond (#t (begin (ZEDdr garbage) value)) (else err))) (define (ZEDgrr garbage value) (cond (#t (begin (ZEDdrr garbage) value)) (else err))) (define (ZEDleading-newline program) (cond ((null? program) (quote ())) ((eqv? #\newline (car program)) (cdr program)) (#t program) (else err))) (define (ZEDliteral? literal-list) (cond (#t (eqv? #" (car literal-list))) (else err))) (define (ZEDmake-ZED ZED-list) (cond ((equal? ZED-list (list #\e #\r #\r)) "'err") ((equal? ZED-list (list #\n #\i #\l)) "'()") ((equal? ZED-list (list #\a #\n #\d)) "and") ((equal? ZED-list (list #\o #\r)) "or") ((equal? ZED-list (list #\q #\u #\o #\t #\e)) "quote") ((equal? ZED-list (list #\s #\e)) "begin") (#t (list->string (append (list #\Z #\E #\D) ZED-list))) (else err))) (define (ZEDmake-character noun-list) (cond (#t (list->string (cons ## (cons #
-(cdr noun-list))))) (else err))) (define (ZEDmake-exact exact-list) (cond (#t (list->string (append (list ## #\e) exact-list))) (else err))) (define (ZEDmake-literal literal-list) (cond (#t (list->string (cdr (reverse (cdr (reverse literal-list)))))) (else err))) (define (ZEDmake-number-character noun-list) (cond (#t (list->string (list ## #
-(integer->char (string->number (list->string (cddr noun-list))))))) (else err))) (define (ZEDmap-with! function list extra collect) (cond ((null? list) collect) (#t (ZEDmap-with! function (cdr list) extra (cons (function (car list) extra) collect))) (else err))) (define (ZEDmap-with function list extra) (cond (#t (reverse (ZEDmap-with! function list extra (quote ())))) (else err))) (define (ZEDmerge! comparator list1 list2 collect) (cond ((null? list2) (append (reverse collect) list1)) ((null? list1) (append (reverse collect) list2)) ((comparator (car list2) (car list1)) (ZEDmerge! comparator list1 (cdr list2) (cons (car list2) collect))) (#t (ZEDmerge! comparator (cdr list1) list2 (cons (car list1) collect))) (else err))) (define (ZEDmerge comparator list1 list2) (cond (#t (ZEDmerge! comparator list1 list2 (quote ()))) (else err))) (define (ZEDmp function list) (cond ((null? list) (quote ())) ((pair? list) (cons (delay (function (if (promise? (car list)) (force (car list)) (car list)))) (delay (ZEDmp function (if (promise? (cdr list)) (force (cdr list)) (cdr list)))))) (#t (function list)) (else err))) (define (ZEDnewline-space! program) (cond (#t (cons #\newline (ZEDnewline-space!a program))) (else err))) (define (ZEDnewline-space!a program) (cond (#t (ZEDnewline-space!aa program (reverse (ZEDnewline-space!ab program (quote ()))))) (else err))) (define (ZEDnewline-space!aa program transformed) (cond ((equal? program transformed) program) (#t (ZEDnewline-space!a transformed)) (else err))) (define (ZEDnewline-space!ab program collect) (cond ((null? program) collect) ((null? (cdr program)) (cons (car program) collect)) ((and (eqv? #\newline (car program)) (or (eqv? #\space (cadr program)) (eqv? #\ht (cadr program)))) (ZEDnewline-space!ab (cdr program) collect)) (#t (ZEDnewline-space!ab (cdr program) (cons (car program) collect))) (else err))) (define (ZEDnewline-space program) (cond (#t (ZEDnewline-space! program)) (else err))) (define (ZEDnewline-space-tab-repeats! program collect) (cond ((or (null? program) (null? (cdr program))) (append program collect)) ((and (eqv? #\newline (car program)) (eqv? #\newline (cadr program))) (ZEDnewline-space-tab-repeats! (cdr program) collect)) ((and (or (eqv? #\space (car program)) (eqv? #\ht (car program))) (or (eqv? #\space (cadr program)) (eqv? #\ht (cadr program)))) (ZEDnewline-space-tab-repeats! (cdr program) collect)) (#t (ZEDnewline-space-tab-repeats! (cdr program) (cons (car program) collect))) (else err))) (define (ZEDnewline-space-tab-repeats program) (cond (#t (reverse (ZEDnewline-space-tab-repeats! program (quote ())))) (else err))) (define (ZEDnewlines clauses) (cond (#t (ZEDadd-between-ra (ZEDmap-with ZEDadd-between-ra clauses (list #\newline)) (list (list #\newline #\newline)))) (else err))) (define (ZEDnormal-character? noun-list) (cond (#t (eqv? (car noun-list) ##)) (else err))) (define (ZEDnot ZEDvalue) (cond (#t (not ZEDvalue)) (else err))) (define (ZEDnot-return? character) (cond (#t (not (eqv? #\cr character))) (else err))) (define (ZEDnoun! noun-list number?) (cond (number? (ZEDmake-exact noun-list)) ((ZEDliteral? noun-list) (ZEDmake-literal noun-list)) ((ZEDtrue? noun-list) "#t") ((ZEDfalse? noun-list) "#f") ((ZEDnumber-character? noun-list) (ZEDmake-number-character noun-list)) ((ZEDnormal-character? noun-list) (ZEDmake-character noun-list)) (#t (ZEDmake-ZED noun-list)) (else err))) (define (ZEDnoun noun-list) (cond (#t (ZEDnoun! noun-list (string->number (list->string noun-list)))) (else err))) (define (ZEDnull? ZEDvalue) (cond (#t (null? ZEDvalue)) (else err))) (define (ZEDnumber-character? noun-list) (cond (#t (and (eqv? (car noun-list) ##) (eqv? (cadr noun-list) #\0) (not (null? (cddr noun-list))))) (else err))) (define (ZEDpair? ZEDvalue) (cond (#t (pair? ZEDvalue)) (else err))) (define (ZEDpop stack) (cond (#t (cdr stack)) (else err))) (define (ZEDpr! value output-string) (cond (#t (begin (display (ZEDpr!a value (quote ())) output-string) (ZEDpr!b output-string (get-output-string output-string)))) (else err))) (define (ZEDpr!a value collect) (cond ((char? value) (ZEDpr!aa (list->string (list ## value)) collect)) ((string? value) (ZEDpr!aa (string-append """ value """) collect)) ((symbol? value) (ZEDpr!aa (symbol->string value) collect)) ((number? value) (ZEDpr!aa (number->string value) collect)) ((and (boolean? value) value) (ZEDpr!aa "#true" collect)) ((boolean? value) (ZEDpr!aa "#false" collect)) ((null? value) (reverse collect)) (#t (ZEDpr!a (if (promise? (cdr value)) (force (cdr value)) (cdr value)) (cons (ZEDpr!a (if (promise? (car value)) (force (car value)) (car value)) (quote ())) collect))) (else err))) (define (ZEDpr!aa string collect) (cond ((null? collect) string) (#t (reverse (cons string (cons "." collect)))) (else err))) (define (ZEDpr!b output-string value) (cond (#t (begin (close-output-port output-string) value)) (else err))) (define (ZEDpr value) (cond (#t (ZEDpr! value (open-output-string))) (else err))) (define (ZEDprogramize program arity-hash) (cond (#t (cons (quote begin) (ZEDmap-with ZEDfunctionize program arity-hash))) (else err))) (define (ZEDpush object stack) (cond (#t (cons object stack)) (else err))) (define (ZEDrd! function list) (cond ((null? (if (promise? (cdr list)) (force (cdr list)) (cdr list))) (if (promise? (car list)) (force (car list)) (car list))) (#t (ZEDrd! function (cons (function (if (promise? (car (if (promise? (cdr list)) (force (cdr list)) (cdr list)))) (force (car (if (promise? (cdr list)) (force (cdr list)) (cdr list)))) (car (if (promise? (cdr list)) (force (cdr list)) (cdr list)))) (if (promise? (car list)) (force (car list)) (car list))) (if (promise? (cdr (if (promise? (cdr list)) (force (cdr list)) (cdr list)))) (force (cdr (if (promise? (cdr list)) (force (cdr list)) (cdr list)))) (cdr (if (promise? (cdr list)) (force (cdr list)) (cdr list))))))) (else err))) (define (ZEDrd final function list) (cond (#t (ZEDrd! function (cons final (reverse list)))) (else err))) (define (ZEDread-all! collect) (cond (#t (ZEDread-all!a (read-char) collect)) (else err))) (define (ZEDread-all!a character collect) (cond ((eof-object? character) collect) (#t (ZEDread-all! (cons character collect))) (else err))) (define (ZEDread-all) (cond (#t (reverse (ZEDread-all! (quote ())))) (else err))) (define (ZEDread-sentence!a sentence collect) (cond ((null? sentence) collect) ((eqv? #\space (car sentence)) (ZEDread-sentence!a (cdr sentence) collect)) ((eqv? #( (car sentence)) (ZEDread-sentence!aa sentence (ZEDgather-verb (cdr sentence)) collect)) (#t (ZEDread-sentence!ab sentence (ZEDgather-noun sentence) collect)) (else err))) (define (ZEDread-sentence!aa sentence gather-verb collect) (cond (#t (ZEDread-sentence!a (ZEDtails (+ 2 (length gather-verb)) sentence) (cons (ZEDverb gather-verb) collect))) (else err))) (define (ZEDread-sentence!ab sentence gather-noun collect) (cond (#t (ZEDread-sentence!a (ZEDtails (length gather-noun) sentence) (cons (ZEDnoun gather-noun) collect))) (else err))) (define (ZEDread-sentence!b list output-string) (cond (#t (begin (display list output-string) (ZEDread-sentence!ba output-string (get-output-string output-string)))) (else err))) (define (ZEDread-sentence!ba output-string get-output-string) (cond (#t (begin (close-output-port output-string) (ZEDread-sentence!baa (open-input-string get-output-string)))) (else err))) (define (ZEDread-sentence!baa input-string) (cond (#t (ZEDread-sentence!baaa input-string (read input-string))) (else err))) (define (ZEDread-sentence!baaa input-string answer) (cond (#t (begin (close-input-port input-string) answer)) (else err))) (define (ZEDread-sentence sentence) (cond (#t (ZEDread-sentence!b (reverse (ZEDread-sentence!a sentence (quote ()))) (open-output-string))) (else err))) (define (ZEDread-sentences sentences) (cond (#t (map ZEDread-sentence sentences)) (else err))) (define (ZEDready-clause clause) (cond (#t (cons (caaar clause) (cons (cdar clause) (cdr clause)))) (else err))) (define (ZEDready-program program) (cond (#t (map ZEDready-clause program)) (else err))) (define (ZEDreplace-trailing-white-space! program) (cond ((null? program) (quote ())) ((or (eqv? (car program) #\space) (eqv? (car program) #\ht) (eqv? (car program) #\cr) (eqv? (car program) #\newline)) (ZEDreplace-trailing-white-space! (cdr program))) (#t (cons #\newline program)) (else err))) (define (ZEDreplace-trailing-white-space program) (cond (#t (reverse (ZEDreplace-trailing-white-space! (reverse program)))) (else err))) (define (ZEDreverse ZEDlist) (cond (#t (reverse ZEDlist)) (else err))) (define (ZEDschemefy! expression arity-hash stack) (cond ((null? expression) (ZEDtop stack)) ((ZEDapplication? expression) (ZEDschemefy!a expression arity-hash stack (ZEDfunction expression))) (#t (ZEDschemefy! (cdr expression) arity-hash (ZEDpush (car expression) stack))) (else err))) (define (ZEDschemefy!a expression arity-hash stack function) (cond (#t (ZEDschemefy!aa expression arity-hash stack function (ZEDarity arity-hash function))) (else err))) (define (ZEDschemefy!aa expression arity-hash stack function arity) (cond ((ZEDgather-count? function) (ZEDschemefy! (cdr expression) arity-hash (ZEDpush (ZEDfirst arity stack) (ZEDtails arity stack)))) ((eq? function (quote ZED1)) (ZEDschemefy! (cdr expression) arity-hash (ZEDpush (list (quote if) (list (quote promise?) (cons (quote car) (ZEDfirst arity stack))) (list (quote force) (cons (quote car) (ZEDfirst arity stack))) (cons (quote car) (ZEDfirst arity stack))) (ZEDtails arity stack)))) ((eq? function (quote ZED!)) (ZEDschemefy! (cdr expression) arity-hash (ZEDpush (list (quote if) (list (quote promise?) (cons (quote cdr) (ZEDfirst arity stack))) (list (quote force) (cons (quote cdr) (ZEDfirst arity stack))) (cons (quote cdr) (ZEDfirst arity stack))) (ZEDtails arity stack)))) ((eq? function (quote ZEDc)) (ZEDschemefy! (cdr expression) arity-hash (ZEDpush (cons (quote cons) (map ZEDdelay-wrap (ZEDfirst arity stack))) (ZEDtails arity stack)))) (#t (ZEDschemefy! (cdr expression) arity-hash (ZEDpush (cons function (ZEDfirst arity stack)) (ZEDtails arity stack)))) (else err))) (define (ZEDschemefy expression arity-hash) (cond (#t (list (ZEDschemefy! (reverse expression) arity-hash (ZEDstack)))) (else err))) (define (ZEDsentence-less? sentence1 sentence2) (cond ((null? sentence2) #f) ((null? sentence1) #t) ((ZEDcharacter-less? (car sentence1) (car sentence2)) #t) ((ZEDcharacter-less? (car sentence2) (car sentence1)) #f) (#t (ZEDsentence-less? (cdr sentence1) (cdr sentence2))) (else err))) (define (ZEDsentences! program collect1 collect2) (cond ((null? program) collect2) ((eqv? #\newline (car program)) (ZEDsentences! (cdr program) (quote ()) (cons (reverse collect1) collect2))) (#t (ZEDsentences! (cdr program) (cons (car program) collect1) collect2)) (else err))) (define (ZEDsentences program) (cond (#t (reverse (ZEDsentences! program (quote ()) (quote ())))) (else err))) (define (ZEDsort!a jumble) (cond (#t (map list jumble)) (else err))) (define (ZEDsort!b comparator jumble) (cond ((null? jumble) (quote ())) ((null? (cdr jumble)) jumble) (#t (ZEDsort!b comparator (cons (ZEDmerge comparator (car jumble) (cadr jumble)) (ZEDsort!b comparator (cddr jumble))))) (else err))) (define (ZEDsort comparator jumble) (cond (#t (car (ZEDsort!b comparator (ZEDsort!a jumble)))) (else err))) (define (ZEDspace-newline! program collect) (cond ((or (null? program) (null? (cdr program))) (append program collect)) ((and (eqv? #\space (car program)) (eqv? #\newline (cadr program))) (ZEDspace-newline! (cdr program) collect)) (#t (ZEDspace-newline! (cdr program) (cons (car program) collect))) (else err))) (define (ZEDspace-newline program) (cond (#t (reverse (ZEDspace-newline! program (quote ())))) (else err))) (define (ZEDstack) (cond (#t (quote ())) (else err))) (define (ZEDtab-replace! program collect) (cond ((null? program) collect) ((eqv? #\ht (car program)) (ZEDtab-replace! (cdr program) (cons #\space collect))) (#t (ZEDtab-replace! (cdr program) (cons (car program) collect))) (else err))) (define (ZEDtab-replace program) (cond (#t (reverse (ZEDtab-replace! program (quote ())))) (else err))) (define (ZEDtails number list) (cond ((null? list) (quote ())) ((zero? number) list) ((> number 0) (ZEDtails (- number 1) (cdr list))) (else err))) (define (ZEDtop stack) (cond (#t (car stack)) (else err))) (define (ZEDtrue? noun-list) (cond (#t (equal? noun-list (list ## #\t #\r #\u #\e))) (else err))) (define (ZEDverb verb-list) (cond ((ZEDliteral? verb-list) (list (ZEDmake-literal verb-list))) (#t (list (ZEDmake-ZED verb-list))) (else err))) (define (ZEDwrite-all program) (cond ((null? program) (quote err)) (#t (ZEDwrite-all (begin (write-char (car program)) (cdr program)))) (else err))) (define (ZEDzed->scheme! value collect) (cond ((null? value) (reverse collect)) (#t (ZEDzed->scheme! (if (promise? (cdr value)) (force (cdr value)) (cdr value)) (cons (ZEDzed->scheme (if (promise? (car value)) (force (car value)) (car value))) collect))) (else err))) (define (ZEDzed->scheme value) (cond ((not (pair? value)) value) (#t (ZEDzed->scheme! value (quote ()))) (else err)))) (ZEDcomp)
Language author on RC: [[User:Zelah|Zelah]] ([[User_talk:Zelah|talk]] | [[Special:Contributions/Zelah|contribs]])
+
+165x2 194x2 207x2
.
\ No newline at end of file
diff --git a/Lang/ZX-Spectrum-Basic/Sorting-Algorithms-Circle-Sort b/Lang/ZX-Spectrum-Basic/Sorting-Algorithms-Circle-Sort
new file mode 120000
index 0000000000..c34f35480d
--- /dev/null
+++ b/Lang/ZX-Spectrum-Basic/Sorting-Algorithms-Circle-Sort
@@ -0,0 +1 @@
+../../Task/Sorting-Algorithms-Circle-Sort/ZX-Spectrum-Basic
\ No newline at end of file
diff --git a/Lang/Zig/15-puzzle-game b/Lang/Zig/15-puzzle-game
deleted file mode 120000
index 67842297fa..0000000000
--- a/Lang/Zig/15-puzzle-game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/15-puzzle-game/Zig
\ No newline at end of file
diff --git a/Lang/Zig/15-puzzle-solver b/Lang/Zig/15-puzzle-solver
deleted file mode 120000
index 31e2e98f6a..0000000000
--- a/Lang/Zig/15-puzzle-solver
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/15-puzzle-solver/Zig
\ No newline at end of file
diff --git a/Lang/Zig/2048 b/Lang/Zig/2048
deleted file mode 120000
index d2ac81be16..0000000000
--- a/Lang/Zig/2048
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/2048/Zig
\ No newline at end of file
diff --git a/Lang/Zig/24-game b/Lang/Zig/24-game
deleted file mode 120000
index 7b40225753..0000000000
--- a/Lang/Zig/24-game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/24-game/Zig
\ No newline at end of file
diff --git a/Lang/Zig/24-game-Solve b/Lang/Zig/24-game-Solve
deleted file mode 120000
index cf80fe1aa1..0000000000
--- a/Lang/Zig/24-game-Solve
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/24-game-Solve/Zig
\ No newline at end of file
diff --git a/Lang/Zig/9-billion-names-of-God-the-integer b/Lang/Zig/9-billion-names-of-God-the-integer
deleted file mode 120000
index 891e6336a6..0000000000
--- a/Lang/Zig/9-billion-names-of-God-the-integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/9-billion-names-of-God-the-integer/Zig
\ No newline at end of file
diff --git a/Lang/Zig/A+B b/Lang/Zig/A+B
deleted file mode 120000
index 99c5298cb2..0000000000
--- a/Lang/Zig/A+B
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/A+B/Zig
\ No newline at end of file
diff --git a/Lang/Zig/ABC-problem b/Lang/Zig/ABC-problem
deleted file mode 120000
index 4f4592d850..0000000000
--- a/Lang/Zig/ABC-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/ABC-problem/Zig
\ No newline at end of file
diff --git a/Lang/Zig/AVL-tree b/Lang/Zig/AVL-tree
deleted file mode 120000
index 05056fdece..0000000000
--- a/Lang/Zig/AVL-tree
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/AVL-tree/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Abelian-sandpile-model b/Lang/Zig/Abelian-sandpile-model
deleted file mode 120000
index aff7b1b955..0000000000
--- a/Lang/Zig/Abelian-sandpile-model
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abelian-sandpile-model/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Abelian-sandpile-model-Identity b/Lang/Zig/Abelian-sandpile-model-Identity
deleted file mode 120000
index 5a22dd3380..0000000000
--- a/Lang/Zig/Abelian-sandpile-model-Identity
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Abelian-sandpile-model-Identity/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Anti-primes b/Lang/Zig/Anti-primes
deleted file mode 120000
index bde3882591..0000000000
--- a/Lang/Zig/Anti-primes
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Anti-primes/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Arithmetic-Integer b/Lang/Zig/Arithmetic-Integer
deleted file mode 120000
index 3faa5af494..0000000000
--- a/Lang/Zig/Arithmetic-Integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arithmetic-Integer/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Arrays b/Lang/Zig/Arrays
deleted file mode 120000
index 8271fea84a..0000000000
--- a/Lang/Zig/Arrays
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Arrays/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Associative-array-Creation b/Lang/Zig/Associative-array-Creation
deleted file mode 120000
index 9dff0b181f..0000000000
--- a/Lang/Zig/Associative-array-Creation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Associative-array-Creation/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Associative-array-Iteration b/Lang/Zig/Associative-array-Iteration
deleted file mode 120000
index 0120ea3ca0..0000000000
--- a/Lang/Zig/Associative-array-Iteration
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Associative-array-Iteration/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Babbage-problem b/Lang/Zig/Babbage-problem
deleted file mode 120000
index c79a638466..0000000000
--- a/Lang/Zig/Babbage-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Babbage-problem/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Babylonian-spiral b/Lang/Zig/Babylonian-spiral
deleted file mode 120000
index 518c958994..0000000000
--- a/Lang/Zig/Babylonian-spiral
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Babylonian-spiral/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Balanced-brackets b/Lang/Zig/Balanced-brackets
deleted file mode 120000
index 0a6293637f..0000000000
--- a/Lang/Zig/Balanced-brackets
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Balanced-brackets/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Balanced-ternary b/Lang/Zig/Balanced-ternary
deleted file mode 120000
index aaf8a47b9b..0000000000
--- a/Lang/Zig/Balanced-ternary
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Balanced-ternary/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Base64-decode-data b/Lang/Zig/Base64-decode-data
deleted file mode 120000
index 9291a91364..0000000000
--- a/Lang/Zig/Base64-decode-data
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Base64-decode-data/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Bifid-cipher b/Lang/Zig/Bifid-cipher
deleted file mode 120000
index c3e619eb90..0000000000
--- a/Lang/Zig/Bifid-cipher
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bifid-cipher/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Binary-digits b/Lang/Zig/Binary-digits
deleted file mode 120000
index 6e0bd7354f..0000000000
--- a/Lang/Zig/Binary-digits
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Binary-digits/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Bitcoin-address-validation b/Lang/Zig/Bitcoin-address-validation
deleted file mode 120000
index 582e8551db..0000000000
--- a/Lang/Zig/Bitcoin-address-validation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bitcoin-address-validation/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Bitmap b/Lang/Zig/Bitmap
deleted file mode 120000
index ef66b502ad..0000000000
--- a/Lang/Zig/Bitmap
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Bitmap/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Boolean-values b/Lang/Zig/Boolean-values
deleted file mode 120000
index 8bbec67819..0000000000
--- a/Lang/Zig/Boolean-values
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Boolean-values/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Boyer-Moore-string-search b/Lang/Zig/Boyer-Moore-string-search
deleted file mode 120000
index 9c6dd89c45..0000000000
--- a/Lang/Zig/Boyer-Moore-string-search
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Boyer-Moore-string-search/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Break-OO-privacy b/Lang/Zig/Break-OO-privacy
deleted file mode 120000
index 535f70b15b..0000000000
--- a/Lang/Zig/Break-OO-privacy
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Break-OO-privacy/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Camel-case-and-snake-case b/Lang/Zig/Camel-case-and-snake-case
deleted file mode 120000
index ab00dfd34b..0000000000
--- a/Lang/Zig/Camel-case-and-snake-case
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Camel-case-and-snake-case/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Canonicalize-CIDR b/Lang/Zig/Canonicalize-CIDR
deleted file mode 120000
index 792c271f68..0000000000
--- a/Lang/Zig/Canonicalize-CIDR
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Canonicalize-CIDR/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Cholesky-decomposition b/Lang/Zig/Cholesky-decomposition
deleted file mode 120000
index 7fbe65969f..0000000000
--- a/Lang/Zig/Cholesky-decomposition
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cholesky-decomposition/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Chowla-numbers b/Lang/Zig/Chowla-numbers
deleted file mode 120000
index 034b021f26..0000000000
--- a/Lang/Zig/Chowla-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Chowla-numbers/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Command-line-arguments b/Lang/Zig/Command-line-arguments
deleted file mode 120000
index 5b9231a470..0000000000
--- a/Lang/Zig/Command-line-arguments
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Command-line-arguments/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Compare-sorting-algorithms-performance b/Lang/Zig/Compare-sorting-algorithms-performance
deleted file mode 120000
index 2f98698afb..0000000000
--- a/Lang/Zig/Compare-sorting-algorithms-performance
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Compare-sorting-algorithms-performance/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Convex-hull b/Lang/Zig/Convex-hull
deleted file mode 120000
index bb63712423..0000000000
--- a/Lang/Zig/Convex-hull
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Convex-hull/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Conways-Game-of-Life b/Lang/Zig/Conways-Game-of-Life
deleted file mode 120000
index d6337a8a7a..0000000000
--- a/Lang/Zig/Conways-Game-of-Life
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Conways-Game-of-Life/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Count-occurrences-of-a-substring b/Lang/Zig/Count-occurrences-of-a-substring
deleted file mode 120000
index 820b93c2bb..0000000000
--- a/Lang/Zig/Count-occurrences-of-a-substring
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Count-occurrences-of-a-substring/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Cumulative-standard-deviation b/Lang/Zig/Cumulative-standard-deviation
deleted file mode 120000
index 225e824146..0000000000
--- a/Lang/Zig/Cumulative-standard-deviation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cumulative-standard-deviation/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Cyclops-numbers b/Lang/Zig/Cyclops-numbers
deleted file mode 120000
index 625d97b345..0000000000
--- a/Lang/Zig/Cyclops-numbers
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Cyclops-numbers/Zig
\ No newline at end of file
diff --git a/Lang/Zig/De-Bruijn-sequences b/Lang/Zig/De-Bruijn-sequences
deleted file mode 120000
index 1e82ee12c7..0000000000
--- a/Lang/Zig/De-Bruijn-sequences
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/De-Bruijn-sequences/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Deal-cards-for-FreeCell b/Lang/Zig/Deal-cards-for-FreeCell
deleted file mode 120000
index 8f0b26df35..0000000000
--- a/Lang/Zig/Deal-cards-for-FreeCell
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Deal-cards-for-FreeCell/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Deconvolution-1D b/Lang/Zig/Deconvolution-1D
deleted file mode 120000
index 26b778762a..0000000000
--- a/Lang/Zig/Deconvolution-1D
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Deconvolution-1D/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Determinant-and-permanent b/Lang/Zig/Determinant-and-permanent
deleted file mode 120000
index 6aec06c204..0000000000
--- a/Lang/Zig/Determinant-and-permanent
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determinant-and-permanent/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Determine-if-a-string-is-numeric b/Lang/Zig/Determine-if-a-string-is-numeric
deleted file mode 120000
index 1317ba1b29..0000000000
--- a/Lang/Zig/Determine-if-a-string-is-numeric
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Determine-if-a-string-is-numeric/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Dijkstras-algorithm b/Lang/Zig/Dijkstras-algorithm
deleted file mode 120000
index e85779f749..0000000000
--- a/Lang/Zig/Dijkstras-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Dijkstras-algorithm/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Eertree b/Lang/Zig/Eertree
deleted file mode 120000
index 297f5d26a6..0000000000
--- a/Lang/Zig/Eertree
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Eertree/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Egyptian-division b/Lang/Zig/Egyptian-division
deleted file mode 120000
index fbc8453acb..0000000000
--- a/Lang/Zig/Egyptian-division
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Egyptian-division/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Elliptic-Curve-Digital-Signature-Algorithm b/Lang/Zig/Elliptic-Curve-Digital-Signature-Algorithm
deleted file mode 120000
index 8631c5bdb3..0000000000
--- a/Lang/Zig/Elliptic-Curve-Digital-Signature-Algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Elliptic-Curve-Digital-Signature-Algorithm/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Elliptic-curve-arithmetic b/Lang/Zig/Elliptic-curve-arithmetic
deleted file mode 120000
index 6d1206bc71..0000000000
--- a/Lang/Zig/Elliptic-curve-arithmetic
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Elliptic-curve-arithmetic/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Evolutionary-algorithm b/Lang/Zig/Evolutionary-algorithm
deleted file mode 120000
index 59ff814ffb..0000000000
--- a/Lang/Zig/Evolutionary-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Evolutionary-algorithm/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Execute-a-Markov-algorithm b/Lang/Zig/Execute-a-Markov-algorithm
deleted file mode 120000
index 5b70cd7b50..0000000000
--- a/Lang/Zig/Execute-a-Markov-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Execute-a-Markov-algorithm/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Factors-of-an-integer b/Lang/Zig/Factors-of-an-integer
deleted file mode 120000
index 9bd33985d3..0000000000
--- a/Lang/Zig/Factors-of-an-integer
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Factors-of-an-integer/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Farey-sequence b/Lang/Zig/Farey-sequence
deleted file mode 120000
index 44274502d4..0000000000
--- a/Lang/Zig/Farey-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Farey-sequence/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Fibonacci-sequence b/Lang/Zig/Fibonacci-sequence
deleted file mode 120000
index 8c7ee19f72..0000000000
--- a/Lang/Zig/Fibonacci-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fibonacci-sequence/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Fibonacci-word b/Lang/Zig/Fibonacci-word
deleted file mode 120000
index e5d3567eb0..0000000000
--- a/Lang/Zig/Fibonacci-word
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Fibonacci-word/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Find-the-missing-permutation b/Lang/Zig/Find-the-missing-permutation
deleted file mode 120000
index 720e08365d..0000000000
--- a/Lang/Zig/Find-the-missing-permutation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Find-the-missing-permutation/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Floyd-Warshall-algorithm b/Lang/Zig/Floyd-Warshall-algorithm
deleted file mode 120000
index e20cfd03e2..0000000000
--- a/Lang/Zig/Floyd-Warshall-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Floyd-Warshall-algorithm/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Gray-code b/Lang/Zig/Gray-code
deleted file mode 120000
index f2147c406a..0000000000
--- a/Lang/Zig/Gray-code
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Gray-code/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Halt-and-catch-fire b/Lang/Zig/Halt-and-catch-fire
deleted file mode 120000
index c9706c0075..0000000000
--- a/Lang/Zig/Halt-and-catch-fire
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Halt-and-catch-fire/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Integer-sequence b/Lang/Zig/Integer-sequence
deleted file mode 120000
index 43f4f97f8b..0000000000
--- a/Lang/Zig/Integer-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Integer-sequence/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Jaro-similarity b/Lang/Zig/Jaro-similarity
deleted file mode 120000
index 26cb0df4ff..0000000000
--- a/Lang/Zig/Jaro-similarity
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Jaro-similarity/Zig
\ No newline at end of file
diff --git a/Lang/Zig/K-d-tree b/Lang/Zig/K-d-tree
deleted file mode 120000
index 3fd542d0d2..0000000000
--- a/Lang/Zig/K-d-tree
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/K-d-tree/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Knapsack-problem-0-1 b/Lang/Zig/Knapsack-problem-0-1
deleted file mode 120000
index 95f8fcd9fc..0000000000
--- a/Lang/Zig/Knapsack-problem-0-1
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Knapsack-problem-0-1/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Knights-tour b/Lang/Zig/Knights-tour
deleted file mode 120000
index a8fa50bb64..0000000000
--- a/Lang/Zig/Knights-tour
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Knights-tour/Zig
\ No newline at end of file
diff --git a/Lang/Zig/LZW-compression b/Lang/Zig/LZW-compression
deleted file mode 120000
index fd9ce93698..0000000000
--- a/Lang/Zig/LZW-compression
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/LZW-compression/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Latin-Squares-in-reduced-form b/Lang/Zig/Latin-Squares-in-reduced-form
deleted file mode 120000
index 4ae8de3ec8..0000000000
--- a/Lang/Zig/Latin-Squares-in-reduced-form
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Latin-Squares-in-reduced-form/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Loops-Nested b/Lang/Zig/Loops-Nested
deleted file mode 120000
index a78e39957d..0000000000
--- a/Lang/Zig/Loops-Nested
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Loops-Nested/Zig
\ No newline at end of file
diff --git a/Lang/Zig/M-bius-function b/Lang/Zig/M-bius-function
deleted file mode 120000
index b4ad984b09..0000000000
--- a/Lang/Zig/M-bius-function
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/M-bius-function/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Main-step-of-GOST-28147-89 b/Lang/Zig/Main-step-of-GOST-28147-89
deleted file mode 120000
index 433b294fbc..0000000000
--- a/Lang/Zig/Main-step-of-GOST-28147-89
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Main-step-of-GOST-28147-89/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Matrix-exponentiation-operator b/Lang/Zig/Matrix-exponentiation-operator
deleted file mode 120000
index 273e429228..0000000000
--- a/Lang/Zig/Matrix-exponentiation-operator
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Matrix-exponentiation-operator/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Modular-arithmetic b/Lang/Zig/Modular-arithmetic
deleted file mode 120000
index a64c6161fe..0000000000
--- a/Lang/Zig/Modular-arithmetic
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Modular-arithmetic/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Modular-inverse b/Lang/Zig/Modular-inverse
deleted file mode 120000
index f96c2102b0..0000000000
--- a/Lang/Zig/Modular-inverse
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Modular-inverse/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Monty-Hall-problem b/Lang/Zig/Monty-Hall-problem
deleted file mode 120000
index 5c32ef8986..0000000000
--- a/Lang/Zig/Monty-Hall-problem
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Monty-Hall-problem/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Move-to-front-algorithm b/Lang/Zig/Move-to-front-algorithm
deleted file mode 120000
index 820f21fe3e..0000000000
--- a/Lang/Zig/Move-to-front-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Move-to-front-algorithm/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Mutual-recursion b/Lang/Zig/Mutual-recursion
deleted file mode 120000
index ad6fe03709..0000000000
--- a/Lang/Zig/Mutual-recursion
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Mutual-recursion/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Natural-sorting b/Lang/Zig/Natural-sorting
deleted file mode 120000
index ce3fd8d2e1..0000000000
--- a/Lang/Zig/Natural-sorting
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Natural-sorting/Zig
\ No newline at end of file
diff --git a/Lang/Zig/P-Adic-numbers-basic b/Lang/Zig/P-Adic-numbers-basic
deleted file mode 120000
index 7be77909db..0000000000
--- a/Lang/Zig/P-Adic-numbers-basic
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/P-Adic-numbers-basic/Zig
\ No newline at end of file
diff --git a/Lang/Zig/P-Adic-square-roots b/Lang/Zig/P-Adic-square-roots
deleted file mode 120000
index bf2f9425e2..0000000000
--- a/Lang/Zig/P-Adic-square-roots
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/P-Adic-square-roots/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Parametric-polymorphism b/Lang/Zig/Parametric-polymorphism
deleted file mode 120000
index 76dd4a7ae3..0000000000
--- a/Lang/Zig/Parametric-polymorphism
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Parametric-polymorphism/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Parse-an-IP-Address b/Lang/Zig/Parse-an-IP-Address
deleted file mode 120000
index dcc1d9a064..0000000000
--- a/Lang/Zig/Parse-an-IP-Address
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Parse-an-IP-Address/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Parsing-RPN-calculator-algorithm b/Lang/Zig/Parsing-RPN-calculator-algorithm
deleted file mode 120000
index 64d52e74e9..0000000000
--- a/Lang/Zig/Parsing-RPN-calculator-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Parsing-RPN-calculator-algorithm/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Parsing-Shunting-yard-algorithm b/Lang/Zig/Parsing-Shunting-yard-algorithm
deleted file mode 120000
index 36cb3a3892..0000000000
--- a/Lang/Zig/Parsing-Shunting-yard-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Parsing-Shunting-yard-algorithm/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Pells-equation b/Lang/Zig/Pells-equation
deleted file mode 120000
index dc6754d05f..0000000000
--- a/Lang/Zig/Pells-equation
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Pells-equation/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Permutations-by-swapping b/Lang/Zig/Permutations-by-swapping
deleted file mode 120000
index 5e667cc7e2..0000000000
--- a/Lang/Zig/Permutations-by-swapping
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Permutations-by-swapping/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Quickselect-algorithm b/Lang/Zig/Quickselect-algorithm
deleted file mode 120000
index 7dbb81ef78..0000000000
--- a/Lang/Zig/Quickselect-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Quickselect-algorithm/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Quine b/Lang/Zig/Quine
deleted file mode 120000
index 20f1f12898..0000000000
--- a/Lang/Zig/Quine
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Quine/Zig
\ No newline at end of file
diff --git a/Lang/Zig/SHA-1 b/Lang/Zig/SHA-1
deleted file mode 120000
index 374af24054..0000000000
--- a/Lang/Zig/SHA-1
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/SHA-1/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Sisyphus-sequence b/Lang/Zig/Sisyphus-sequence
deleted file mode 120000
index 58dd5ff994..0000000000
--- a/Lang/Zig/Sisyphus-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sisyphus-sequence/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Solve-a-Holy-Knights-tour b/Lang/Zig/Solve-a-Holy-Knights-tour
deleted file mode 120000
index b0fe3fcb9a..0000000000
--- a/Lang/Zig/Solve-a-Holy-Knights-tour
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Solve-a-Holy-Knights-tour/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Solve-the-no-connection-puzzle b/Lang/Zig/Solve-the-no-connection-puzzle
deleted file mode 120000
index 4b3367c677..0000000000
--- a/Lang/Zig/Solve-the-no-connection-puzzle
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Solve-the-no-connection-puzzle/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Sorting-algorithms-Patience-sort b/Lang/Zig/Sorting-algorithms-Patience-sort
deleted file mode 120000
index a696e81abf..0000000000
--- a/Lang/Zig/Sorting-algorithms-Patience-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Patience-sort/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Sorting-algorithms-Strand-sort b/Lang/Zig/Sorting-algorithms-Strand-sort
deleted file mode 120000
index 67361c524c..0000000000
--- a/Lang/Zig/Sorting-algorithms-Strand-sort
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sorting-algorithms-Strand-sort/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Stern-Brocot-sequence b/Lang/Zig/Stern-Brocot-sequence
deleted file mode 120000
index 4e68e871bc..0000000000
--- a/Lang/Zig/Stern-Brocot-sequence
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Stern-Brocot-sequence/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Strassens-algorithm b/Lang/Zig/Strassens-algorithm
deleted file mode 120000
index f02a6cb05a..0000000000
--- a/Lang/Zig/Strassens-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Strassens-algorithm/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Stream-merge b/Lang/Zig/Stream-merge
deleted file mode 120000
index 83ddc64918..0000000000
--- a/Lang/Zig/Stream-merge
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Stream-merge/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Sudoku b/Lang/Zig/Sudoku
deleted file mode 120000
index cc0b8be01d..0000000000
--- a/Lang/Zig/Sudoku
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sudoku/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Sutherland-Hodgman-polygon-clipping b/Lang/Zig/Sutherland-Hodgman-polygon-clipping
deleted file mode 120000
index 2e08ab9fc7..0000000000
--- a/Lang/Zig/Sutherland-Hodgman-polygon-clipping
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Sutherland-Hodgman-polygon-clipping/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Tarjan b/Lang/Zig/Tarjan
deleted file mode 120000
index 47db828add..0000000000
--- a/Lang/Zig/Tarjan
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tarjan/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Thue-Morse b/Lang/Zig/Thue-Morse
deleted file mode 120000
index 514eeceeed..0000000000
--- a/Lang/Zig/Thue-Morse
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Thue-Morse/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Tonelli-Shanks-algorithm b/Lang/Zig/Tonelli-Shanks-algorithm
deleted file mode 120000
index 364e6278fd..0000000000
--- a/Lang/Zig/Tonelli-Shanks-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tonelli-Shanks-algorithm/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Tree-datastructures b/Lang/Zig/Tree-datastructures
deleted file mode 120000
index 2483259e7c..0000000000
--- a/Lang/Zig/Tree-datastructures
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Tree-datastructures/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Verhoeff-algorithm b/Lang/Zig/Verhoeff-algorithm
deleted file mode 120000
index d90fb8e2ca..0000000000
--- a/Lang/Zig/Verhoeff-algorithm
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Verhoeff-algorithm/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Vigen-re-cipher-Cryptanalysis b/Lang/Zig/Vigen-re-cipher-Cryptanalysis
deleted file mode 120000
index 7fd7d3aa92..0000000000
--- a/Lang/Zig/Vigen-re-cipher-Cryptanalysis
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Vigen-re-cipher-Cryptanalysis/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Vogels-approximation-method b/Lang/Zig/Vogels-approximation-method
deleted file mode 120000
index af40cfb307..0000000000
--- a/Lang/Zig/Vogels-approximation-method
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Vogels-approximation-method/Zig
\ No newline at end of file
diff --git a/Lang/Zig/War-card-game b/Lang/Zig/War-card-game
deleted file mode 120000
index 6bc9afa5bf..0000000000
--- a/Lang/Zig/War-card-game
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/War-card-game/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Y-combinator b/Lang/Zig/Y-combinator
deleted file mode 120000
index 1478dbbdb7..0000000000
--- a/Lang/Zig/Y-combinator
+++ /dev/null
@@ -1 +0,0 @@
-../../Task/Y-combinator/Zig
\ No newline at end of file
diff --git a/Lang/Zkl/Bioinformatics-base-count b/Lang/Zkl/Bioinformatics-base-count
new file mode 120000
index 0000000000..f344937ca4
--- /dev/null
+++ b/Lang/Zkl/Bioinformatics-base-count
@@ -0,0 +1 @@
+../../Task/Bioinformatics-base-count/Zkl
\ No newline at end of file
diff --git a/Lang/Zkl/Miller-Rabin-primality-test b/Lang/Zkl/Miller-Rabin-primality-test
new file mode 120000
index 0000000000..92bfcfa6ff
--- /dev/null
+++ b/Lang/Zkl/Miller-Rabin-primality-test
@@ -0,0 +1 @@
+../../Task/Miller-Rabin-primality-test/Zkl
\ No newline at end of file
diff --git a/Lang/Zkl/Quaternion-type b/Lang/Zkl/Quaternion-type
new file mode 120000
index 0000000000..d36f19dd00
--- /dev/null
+++ b/Lang/Zkl/Quaternion-type
@@ -0,0 +1 @@
+../../Task/Quaternion-type/Zkl
\ No newline at end of file
diff --git a/Lang/Zkl/Sequence:-nth-number-with-exactly-n-divisors b/Lang/Zkl/Sequence-nth-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/Zkl/Sequence:-nth-number-with-exactly-n-divisors
rename to Lang/Zkl/Sequence-nth-number-with-exactly-n-divisors
diff --git a/Lang/Zkl/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors b/Lang/Zkl/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
similarity index 100%
rename from Lang/Zkl/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors
rename to Lang/Zkl/Sequence-smallest-number-greater-than-previous-term-with-exactly-n-divisors
diff --git a/Lang/Zkl/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/Zkl/Sequence-smallest-number-with-exactly-n-divisors
similarity index 100%
rename from Lang/Zkl/Sequence:-smallest-number-with-exactly-n-divisors
rename to Lang/Zkl/Sequence-smallest-number-with-exactly-n-divisors
diff --git a/Lang/Zkl/Sorting-Algorithms-Circle-Sort b/Lang/Zkl/Sorting-Algorithms-Circle-Sort
new file mode 120000
index 0000000000..6de597a14d
--- /dev/null
+++ b/Lang/Zkl/Sorting-Algorithms-Circle-Sort
@@ -0,0 +1 @@
+../../Task/Sorting-Algorithms-Circle-Sort/Zkl
\ No newline at end of file
diff --git a/Lang/Zonnon/00-LANG.txt b/Lang/Zonnon/00-LANG.txt
index e4a45b3fa4..8a95e192c9 100644
--- a/Lang/Zonnon/00-LANG.txt
+++ b/Lang/Zonnon/00-LANG.txt
@@ -3,11 +3,4 @@
|site=http://www.zonnon.ethz.ch/
|LCT=yes
}}
-Zonnon is a general-purpose programming language in the [[Pascal]], [[Modula-2]] and [[Oberon]] family. It retains an emphasis on simplicity, clear syntax and separation of concerns whilst focusing on concurrency and ease of composition and expression. Unification of abstractions is at the heart of its design and this is reflected in its conceptual model based on modules, objects, definitions and implementations. Zonnon offers a new computing model based on active objects with their interaction defined by syntax controlled dialogs. It also introduces new features including operator overloading and exception handling, and is specifically designed to be platform independent.
-
-===See also===
-* [[Oberon-07]]
-* [[Oberon-2]]
-* [[Component Pascal]]
-* [[Modula-2]]
-* [[Modula-3]]
\ No newline at end of file
+Zonnon is a general-purpose programming language in the [[Pascal]], [[Modula-2]] and [[Oberon]] family. It retains an emphasis on simplicity, clear syntax and separation of concerns whilst focusing on concurrency and ease of composition and expression. Unification of abstractions is at the heart of its design and this is reflected in its conceptual model based on modules, objects, definitions and implementations. Zonnon offers a new computing model based on active objects with their interaction defined by syntax controlled dialogs. It also introduces new features including operator overloading and exception handling, and is specifically designed to be platform independent.
\ No newline at end of file
diff --git a/Task/100-doors/00-TASK.txt b/Task/100-doors/00-TASK.txt
index 83471393d8..fd7471448b 100644
--- a/Task/100-doors/00-TASK.txt
+++ b/Task/100-doors/00-TASK.txt
@@ -2,26 +2,21 @@ There are 100 doors in a row that are all initially closed.
You make 100 [[task feature::Rosetta Code:multiple passes|passes]] by the doors.
-The first time through, visit every door and ''toggle'' the door (if the door is closed, open it; if it is open, close it).
+The first time through, visit every door and ''toggle'' the door (if the door is closed, open it; if it is open, close it).
-The second time, only visit every 2nd door (door #2, #4, #6, ...), and toggle it.
+The second time, only visit every 2nd door (door #2, #4, #6, ...), and toggle it.
-The third time, visit every 3rd door (door #3, #6, #9, ...), etc, until you only visit the 100th door.
+The third time, visit every 3rd door (door #3, #6, #9, ...), etc, until you only visit the 100th door.
;Task:
-Answer the question: what state are the doors in after the last pass? Which are open, which are closed?
+Answer the question: what state are the doors in after the last pass? Which are open, which are closed?
'''[[task feature::Rosetta Code:extra credit|Alternate]]:'''
-As noted in this page's [[Talk:100 doors|discussion page]], the only doors that remain open are those whose numbers are perfect squares.
+As noted in this page's [[Talk:100 doors|discussion page]], the only doors that remain open are those whose numbers are perfect squares.
-Opening only those doors is an [[task feature::Rosetta Code:optimization|optimization]] that may also be expressed;
+Opening only those doors is an [[task feature::Rosetta Code:optimization|optimization]] that may also be expressed;
however, as should be obvious, this defeats the intent of comparing implementations across programming languages.
-;Why doesn't syntax highlighting work on this page ?:
-Currently, there is a limit on how many <syntaxhighlight> tags can appear on a page, so only the first few languages get highlighting, the rest are shown in monochrome.
-You could try "manual highlighting", possibly using one of the highlighters on [[Syntax highlighting using Mediawiki formatting]] or something similar.
-
-
diff --git a/Task/100-doors/11l/100-doors.11l b/Task/100-doors/11l/100-doors.11l
index 2808744415..3783f3ff5a 100644
--- a/Task/100-doors/11l/100-doors.11l
+++ b/Task/100-doors/11l/100-doors.11l
@@ -1,5 +1,5 @@
V doors = [0B] * 100
-L(i) 0.<100
+L(i) 100
L(j) (i .< 100).step(i + 1)
doors[j] = !doors[j]
print(‘Door ’(i + 1)‘: ’(I doors[i] {‘open’} E ‘close’))
diff --git a/Task/100-doors/8080-Assembly/100-doors-2.8080 b/Task/100-doors/8080-Assembly/100-doors-2.8080
deleted file mode 100644
index d5cb28c55f..0000000000
--- a/Task/100-doors/8080-Assembly/100-doors-2.8080
+++ /dev/null
@@ -1,79 +0,0 @@
-wboot equ 0 ; jump to BIOS warm boot routine
-bdos equ 5 ; BDOS entry
-conout equ 2 ; BDOS console output function
-putstr equ 9 ; BDOS print string function
-ndoors equ 100 ; number of doors
- ;
- org 100h
- lxi sp,stack ; set our own stack
- lxi d,intro ; print introductory message
- mvi c,putstr
- call bdos
- ;
- ; generate sequence of squares to specified limit
- ; HL holds the current square
- ; DE holds the increment
- ; BC holds the negative of the limit
- ;
-gensqr: lxi h,1 ; starting value of square
- lxi d,3 ; starting value of increment
- lxi b,-ndoors
-sqrs2: call putdec ; otherwise print current square
- mvi a,' ' ; separate with a space
- call putchr
- push h ; have we reached the limit?
- dad b
- pop h
- jc done ; CY if HL > limit
- dad d ; square += incrememnt
- inx d ; increment += 2
- inx d
- jmp sqrs2 ; repeat until finished
- ;
-done: jmp wboot ; exit with warm boot
- ;---------------------------------------------------
- ; console output of char in A register
- ;---------------------------------------------------
-putchr: push h
- push d
- push b
- mov e,a
- mvi c,conout
- call bdos
- pop b
- pop d
- pop h
- ret
- ;---------------------------------------------------
- ; Output decimal number to console
- ; HL holds 16-bit unsigned binary number to print
- ;---------------------------------------------------
-putdec: push b
- push d
- push h
- lxi b,-10
- lxi d,-1
-putdec2:
- dad b
- inx d
- jc putdec2
- lxi b,10
- dad b
- xchg
- mov a,h
- ora l
- cnz putdec ; recursive call
- mov a,e
- adi '0'
- call putchr
- pop h
- pop d
- pop b
- ret
- ;---------------------------------------------------
- ; data area and stack
- ;---------------------------------------------------
-intro: db 'The open doors are: $'
-stack equ $+128 ; 64-level stack
- ;
- end
diff --git a/Task/100-doors/8080-Assembly/100-doors-1.8080 b/Task/100-doors/8080-Assembly/100-doors.8080
similarity index 100%
rename from Task/100-doors/8080-Assembly/100-doors-1.8080
rename to Task/100-doors/8080-Assembly/100-doors.8080
diff --git a/Task/100-doors/ANSI-BASIC/100-doors.basic b/Task/100-doors/ANSI-BASIC/100-doors.basic
deleted file mode 100644
index eec806c191..0000000000
--- a/Task/100-doors/ANSI-BASIC/100-doors.basic
+++ /dev/null
@@ -1,21 +0,0 @@
-100 REM 100 doors
-110 REM The unoptimised door flipping method
-120 REM which simulates the process
-130 DIM IsDoorOpen(1 TO 100)
-140 LET DoorMax = UBOUND(IsDoorOpen)
-150 REM Set all doors to closed
-160 FOR I = 1 TO DoorMax
-170 LET IsDoorOpen(I) = 0
-180 NEXT I
-190 REM Repeatedly flip the doors
-200 FOR I = 1 TO DoorMax
-210 FOR J = I TO DoorMax STEP I
-220 LET IsDoorOpen(J) = 1 - IsDoorOpen(J)
-230 NEXT J
-240 NEXT I
-250 REM Display the results
-260 FOR I = 1 TO DoorMax
-270 IF IsDoorOpen(I) <> 0 THEN PRINT I;
-280 NEXT I
-290 PRINT
-300 END
diff --git a/Task/100-doors/APL/100-doors-2.apl b/Task/100-doors/APL/100-doors-2.apl
index bff8982b24..ba6d739dae 100644
--- a/Task/100-doors/APL/100-doors-2.apl
+++ b/Task/100-doors/APL/100-doors-2.apl
@@ -1 +1,3 @@
-≠⌿0=(⍳100)∘.|⍳100
+⍝⍝ Also works with GNU APL after introduction of
+⍝⍝ the ⍸ function with SVN r1368, Dec 03 2020
+⍸≠⌿0=(⍳100)∘.|⍳100
diff --git a/Task/100-doors/APL/100-doors-3.apl b/Task/100-doors/APL/100-doors-3.apl
deleted file mode 100644
index 5fcad5e104..0000000000
--- a/Task/100-doors/APL/100-doors-3.apl
+++ /dev/null
@@ -1 +0,0 @@
-⍸≠⌿0=(⍳100)∘.|⍳100
diff --git a/Task/100-doors/AWK/100-doors-1.awk b/Task/100-doors/AWK/100-doors-1.awk
new file mode 100644
index 0000000000..1c2a279c09
--- /dev/null
+++ b/Task/100-doors/AWK/100-doors-1.awk
@@ -0,0 +1,17 @@
+BEGIN {
+ for(i=1; i <= 100; i++)
+ {
+ doors[i] = 0 # close the doors
+ }
+ for(i=1; i <= 100; i++)
+ {
+ for(j=i; j <= 100; j += i)
+ {
+ doors[j] = (doors[j]+1) % 2
+ }
+ }
+ for(i=1; i <= 100; i++)
+ {
+ print i, doors[i] ? "open" : "close"
+ }
+}
diff --git a/Task/100-doors/AWK/100-doors-2.awk b/Task/100-doors/AWK/100-doors-2.awk
new file mode 100644
index 0000000000..9344bbec27
--- /dev/null
+++ b/Task/100-doors/AWK/100-doors-2.awk
@@ -0,0 +1,14 @@
+BEGIN {
+ for(i=1; i <= 100; i++) {
+ doors[i] = 0 # close the doors
+ }
+ for(i=1; i <= 100; i++) {
+ if ( int(sqrt(i)) == sqrt(i) ) {
+ doors[i] = 1
+ }
+ }
+ for(i=1; i <= 100; i++)
+ {
+ print i, doors[i] ? "open" : "close"
+ }
+}
diff --git a/Task/100-doors/Ada/100-doors-1.adb b/Task/100-doors/Ada/100-doors-1.ada
similarity index 100%
rename from Task/100-doors/Ada/100-doors-1.adb
rename to Task/100-doors/Ada/100-doors-1.ada
diff --git a/Task/100-doors/Ada/100-doors-2.adb b/Task/100-doors/Ada/100-doors-2.ada
similarity index 100%
rename from Task/100-doors/Ada/100-doors-2.adb
rename to Task/100-doors/Ada/100-doors-2.ada
diff --git a/Task/100-doors/Adina/100-doors-1.adina b/Task/100-doors/Adina/100-doors-1.adina
deleted file mode 100644
index 0e7190c89e..0000000000
--- a/Task/100-doors/Adina/100-doors-1.adina
+++ /dev/null
@@ -1,16 +0,0 @@
-двери = новый-массив 100 ложь
-
-цикл
- шаг
- в-диапазоне 1 101
- цикл
- номер
- в-диапазоне (шаг - 1) 100 шаг
- двери[номер] := не двери[номер]
-
-цикл
- номер 100
- вывести/перенос
- формат «Дверь ~a ~a»
- номер + 1
- двери[номер] ? «открыта» «закрыта»
diff --git a/Task/100-doors/Adina/100-doors-2.adina b/Task/100-doors/Adina/100-doors-2.adina
deleted file mode 100644
index 6286140dc0..0000000000
--- a/Task/100-doors/Adina/100-doors-2.adina
+++ /dev/null
@@ -1,17 +0,0 @@
-english()
-doors = make-vector 100 #f
-
-for
- $ step
- in-range 1 101
- for
- $ number
- in-range (step - 1) 100 step
- doors[number] := not doors[number]
-
-for
- $ number 100
- displayln
- format "Door ~a ~a"
- number + 1
- if doors[number] "open" "closed"
diff --git a/Task/100-doors/Agena/100-doors.agena b/Task/100-doors/Agena/100-doors.agena
new file mode 100644
index 0000000000..18c9cb1963
--- /dev/null
+++ b/Task/100-doors/Agena/100-doors.agena
@@ -0,0 +1,19 @@
+# find the first few squares via the unoptimised door flipping method
+scope
+
+ local doorMax := 100;
+ local door;
+ create register door( doorMax );
+
+ # set all doors to closed
+ for i to doorMax do door[ i ] := false od;
+
+ # repeatedly flip the doors
+ for i to doorMax do
+ for j from i to doorMax by i do door[ j ] := not door[ j ] od
+ od;
+
+ # display the results
+ for i to doorMax do if door[ i ] then write( " ", i ) fi od; print()
+
+epocs
diff --git a/Task/100-doors/ArkScript/100-doors-1.ark b/Task/100-doors/ArkScript/100-doors-1.ark
deleted file mode 100644
index 713e3b360f..0000000000
--- a/Task/100-doors/ArkScript/100-doors-1.ark
+++ /dev/null
@@ -1,21 +0,0 @@
-(import std.Range :range :forEach)
-(import std.List)
-
-(mut doors (list:fill 100 false))
-(let r (range 0 100))
-
-(forEach r
- (fun (i) {
- (mut j i)
- (while (< j 100) {
- (@= doors j (not (@ doors j)))
- (set j (+ j i 1)) })
- (print doors) }))
-
-(print
- (list:map
- (list:filter
- (list:zipWithIndex doors)
- (fun (e)
- (@ e 1)))
- (fun (e) (@ e 0))))
diff --git a/Task/100-doors/ArkScript/100-doors-2.ark b/Task/100-doors/ArkScript/100-doors-2.ark
deleted file mode 100644
index b1cb4380b2..0000000000
--- a/Task/100-doors/ArkScript/100-doors-2.ark
+++ /dev/null
@@ -1,4 +0,0 @@
-[true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true]
-...
-[true false false true false false false false true false false false false false false true false false false false false false false false true false false false false false false false false false false true false false false false false false false false false false false false true false false false false false false false false false false false false false false true false false false false false false false false false false false false false false false false true false false false false false false false false false false false false false false false false false false true]
-[0 3 8 15 24 35 48 63 80 99]
diff --git a/Task/100-doors/AutoIt/100-doors.au3 b/Task/100-doors/AutoIt/100-doors.autoit
similarity index 100%
rename from Task/100-doors/AutoIt/100-doors.au3
rename to Task/100-doors/AutoIt/100-doors.autoit
diff --git a/Task/100-doors/AutoLISP/100-doors.lsp b/Task/100-doors/AutoLISP/100-doors.lsp
deleted file mode 100644
index d4a0ebbe77..0000000000
--- a/Task/100-doors/AutoLISP/100-doors.lsp
+++ /dev/null
@@ -1,18 +0,0 @@
-(defun CreateDoors (n / doors)
- (repeat n
- (setq doors (cons nil doors))
- )
-)
-
-(defun Doors (doors / cnt)
- (setq cnt 0)
- (mapcar
- '(lambda (d)
- (zerop (rem (sqrt (setq cnt (1+ cnt))) 1))
- )
- doors
- )
-)
-
-> (Doors (CreateDoors 100))
-(T nil nil T nil nil nil nil T nil nil nil nil nil nil T nil nil nil nil nil nil nil nil T nil nil nil nil nil nil nil nil nil nil T nil nil nil nil nil nil nil nil nil nil nil nil T nil nil nil nil nil nil nil nil nil nil nil nil nil nil T nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil T nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil T nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil T nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil T nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil T nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil T nil nil nil nil)
diff --git a/Task/100-doors/BQN/100-doors-4.bqn b/Task/100-doors/BQN/100-doors-4.bqn
deleted file mode 100644
index cfab61e191..0000000000
--- a/Task/100-doors/BQN/100-doors-4.bqn
+++ /dev/null
@@ -1,3 +0,0 @@
-F ← {1+ / 2| +˝ 0= |⌜˜ 1+↕𝕩}
-F 100
-# ⟨ 1 4 9 16 25 36 49 64 81 100 ⟩
diff --git a/Task/100-doors/BQN/100-doors-5.bqn b/Task/100-doors/BQN/100-doors-5.bqn
deleted file mode 100644
index b78e4f3de6..0000000000
--- a/Task/100-doors/BQN/100-doors-5.bqn
+++ /dev/null
@@ -1,3 +0,0 @@
-F ← {ט1+↕⌊√𝕩}
-F 100
-# ⟨ 1 4 9 16 25 36 49 64 81 100 ⟩
diff --git a/Task/100-doors/Ballerina/100-doors.ballerina b/Task/100-doors/Ballerina/100-doors.ballerina
deleted file mode 100644
index 35d7c63798..0000000000
--- a/Task/100-doors/Ballerina/100-doors.ballerina
+++ /dev/null
@@ -1,16 +0,0 @@
-// https://rosettacode.org/wiki/100_doors
-import ballerina/io;
-
-public function main() {
- boolean[100] doors = [];
- foreach int i in int:range(0,100,1) {
- foreach int j in int:range(i, 100, i+1) {
- doors[j] = ! doors[j];
- }
- }
- foreach int i in int:range(0,doors.length(),1) {
- if doors[i] {
- io:println("Door #",i+1," is ","open");
- }
- }
-}
diff --git a/Task/100-doors/C-sharp/100-doors-1.cs b/Task/100-doors/C-sharp/100-doors-1.cs
index 3e031cc721..d06413f95c 100644
--- a/Task/100-doors/C-sharp/100-doors-1.cs
+++ b/Task/100-doors/C-sharp/100-doors-1.cs
@@ -5,10 +5,11 @@ namespace ConsoleApplication1
{
static void Main(string[] args)
{
- // Arrays are initialized to their type default values; the default for bool is false
- // Use false to indicate closed door
bool[] doors = new bool[100];
+ //Close all doors to start.
+ for (int d = 0; d < 100; d++) doors[d] = false;
+
//For each pass...
for (int p = 0; p < 100; p++)//number of passes
{
@@ -23,7 +24,7 @@ namespace ConsoleApplication1
}
//Output the results.
- Console.WriteLine("Passes Completed!!! Here are the results:");
+ Console.WriteLine("Passes Completed!!! Here are the results: \r\n");
for (int d = 0; d < 100; d++)
{
if (doors[d])
diff --git a/Task/100-doors/C/100-doors-3.c b/Task/100-doors/C/100-doors-3.c
index d8fed2c66e..fb7f7feb29 100644
--- a/Task/100-doors/C/100-doors-3.c
+++ b/Task/100-doors/C/100-doors-3.c
@@ -1,14 +1,19 @@
#include
-#include
-int main() {
- uint32_t doorBytes[4] = {0};
-
- for (uint32_t i = 1; i <= 100; ++i)
- for (uint32_t j = i - 1; j <= 99; j += i)
- doorBytes[j % 4] ^= (uint32_t)1 << j / 4;
-
- for (uint32_t i = 0; i <= 99; doorBytes[i++ % 4] >>= 1)
- if (doorBytes[i % 4] & 1)
- printf("door %d is open\n", i + 1);
+int main()
+{
+ int square = 1, increment = 3, door;
+ for (door = 1; door <= 100; ++door)
+ {
+ printf("door #%d", door);
+ if (door == square)
+ {
+ printf(" is open.\n");
+ square += increment;
+ increment += 2;
+ }
+ else
+ printf(" is closed.\n");
+ }
+ return 0;
}
diff --git a/Task/100-doors/C/100-doors-4.c b/Task/100-doors/C/100-doors-4.c
index fb7f7feb29..a1972a382b 100644
--- a/Task/100-doors/C/100-doors-4.c
+++ b/Task/100-doors/C/100-doors-4.c
@@ -2,18 +2,8 @@
int main()
{
- int square = 1, increment = 3, door;
- for (door = 1; door <= 100; ++door)
- {
- printf("door #%d", door);
- if (door == square)
- {
- printf(" is open.\n");
- square += increment;
- increment += 2;
- }
- else
- printf(" is closed.\n");
- }
+ int door, square, increment;
+ for (door = 1, square = 1, increment = 1; door <= 100; door++ == square && (square += increment += 2))
+ printf("door #%d is %s.\n", door, (door == square? "open" : "closed"));
return 0;
}
diff --git a/Task/100-doors/C/100-doors-5.c b/Task/100-doors/C/100-doors-5.c
index a1972a382b..4988099e36 100644
--- a/Task/100-doors/C/100-doors-5.c
+++ b/Task/100-doors/C/100-doors-5.c
@@ -2,8 +2,9 @@
int main()
{
- int door, square, increment;
- for (door = 1, square = 1, increment = 1; door <= 100; door++ == square && (square += increment += 2))
- printf("door #%d is %s.\n", door, (door == square? "open" : "closed"));
- return 0;
+ int i;
+ for (i = 1; i * i <= 100; i++)
+ printf("door %d open\n", i * i);
+
+ return 0;
}
diff --git a/Task/100-doors/C/100-doors-6.c b/Task/100-doors/C/100-doors-6.c
deleted file mode 100644
index 4988099e36..0000000000
--- a/Task/100-doors/C/100-doors-6.c
+++ /dev/null
@@ -1,10 +0,0 @@
-#include
-
-int main()
-{
- int i;
- for (i = 1; i * i <= 100; i++)
- printf("door %d open\n", i * i);
-
- return 0;
-}
diff --git a/Task/100-doors/CBASIC/100-doors.basic b/Task/100-doors/CBASIC/100-doors.basic
deleted file mode 100644
index f81972b2ae..0000000000
--- a/Task/100-doors/CBASIC/100-doors.basic
+++ /dev/null
@@ -1,27 +0,0 @@
-dim doors%(100)
-
-print "Finding solution to the 100 Doors Problem"
-
-rem - all doors are initially closed
-for i% = 1 to 100
- doors%(i%) = 0
-next i%
-
-rem - pass through at increasing intervals
-for i% = 1 to 100
- for j% = i% to 100 step i%
- rem - flip each door encountered
- doors%(j%) = 1 - doors%(j%)
- next j%
-next i%
-
-rem - show which doors are open
-print "The open doors are: ";
-for i% = 1 to 100
- if doors%(i%) = 1 then print i%;
-next i%
-
-print
-print "Thanks for consulting the puzzle guru!"
-
-end
diff --git a/Task/100-doors/COBOL/100-doors.cob b/Task/100-doors/COBOL/100-doors.cobol
similarity index 100%
rename from Task/100-doors/COBOL/100-doors.cob
rename to Task/100-doors/COBOL/100-doors.cobol
diff --git a/Task/100-doors/Component-Pascal/100-doors.pas b/Task/100-doors/Component-Pascal/100-doors.pas
new file mode 100644
index 0000000000..0e11914244
--- /dev/null
+++ b/Task/100-doors/Component-Pascal/100-doors.pas
@@ -0,0 +1,26 @@
+MODULE Doors100;
+IMPORT StdLog;
+
+PROCEDURE Do*;
+VAR
+ i,j: INTEGER;
+ closed: ARRAY 101 OF BOOLEAN;
+BEGIN
+ (* initialization of closed 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/Rocq/100-doors-1.rocq b/Task/100-doors/Coq/100-doors-1.coq
similarity index 100%
rename from Task/100-doors/Rocq/100-doors-1.rocq
rename to Task/100-doors/Coq/100-doors-1.coq
diff --git a/Task/100-doors/Rocq/100-doors-2.rocq b/Task/100-doors/Coq/100-doors-2.coq
similarity index 100%
rename from Task/100-doors/Rocq/100-doors-2.rocq
rename to Task/100-doors/Coq/100-doors-2.coq
diff --git a/Task/100-doors/Rocq/100-doors-3.rocq b/Task/100-doors/Coq/100-doors-3.coq
similarity index 100%
rename from Task/100-doors/Rocq/100-doors-3.rocq
rename to Task/100-doors/Coq/100-doors-3.coq
diff --git a/Task/100-doors/Rocq/100-doors-4.rocq b/Task/100-doors/Coq/100-doors-4.coq
similarity index 100%
rename from Task/100-doors/Rocq/100-doors-4.rocq
rename to Task/100-doors/Coq/100-doors-4.coq
diff --git a/Task/100-doors/Crystal/100-doors.cr b/Task/100-doors/Crystal/100-doors.crystal
similarity index 100%
rename from Task/100-doors/Crystal/100-doors.cr
rename to Task/100-doors/Crystal/100-doors.crystal
diff --git a/Task/100-doors/DuckDB/100-doors.duckdb b/Task/100-doors/DuckDB/100-doors.duckdb
deleted file mode 100644
index aa3716882e..0000000000
--- a/Task/100-doors/DuckDB/100-doors.duckdb
+++ /dev/null
@@ -1,19 +0,0 @@
-# Show the state of n doors after n iterations
-create or replace function doors(n) as (
- with recursive cte(ix,d) as (
- select 0 as ix, list_transform(range(0, n), x -> false) as d
- union all
- select ix+1,
- list_transform(d, (x,i) -> if (i % (ix + 1) = 0, NOT x, x))
- from cte
- where ix < n
- )
- select last(d order by ix)
- from cte
-);
-
-# For brevity, we just show the indices of the doors that are open after all
-# have been visited:
-select ix
-from (select unnest(generate_series(1,100)) as ix, unnest(doors(100)) as d)
-where d = true;
diff --git a/Task/100-doors/EMal/100-doors.emal b/Task/100-doors/EMal/100-doors.emal
index f7294803da..6f7b1360d1 100644
--- a/Task/100-doors/EMal/100-doors.emal
+++ b/Task/100-doors/EMal/100-doors.emal
@@ -4,7 +4,7 @@ type Door
model
int id
Door:State state
- new by int ←id, Door:State ←state do end
+ new by int =id, Door:State =state do end
fun toggle ← <|me.state ← when(me.state æ Door:State.CLOSED, Door:State.OPEN, Door:State.CLOSED)
fun asText ← <|"Door #" + me.id + " is " + when(me.state æ Door:State.CLOSED, "closed", "open")
end
@@ -13,7 +13,7 @@ type Main
List doors ← Door[].with(100, false);
for(int i := 0; i < 100; i++)
@@ -14,8 +14,8 @@ public Program()
for(int i := 0; i < 100; i++)
{
- Console.printLine("Door #",i + 1," :",Doors[i].iif("Open","Closed"))
+ console.printLine("Door #",i + 1," :",Doors[i].iif("Open","Closed"))
};
- Console.readChar()
+ console.readChar()
}
diff --git a/Task/100-doors/Elixir/100-doors.ex b/Task/100-doors/Elixir/100-doors.elixir
similarity index 100%
rename from Task/100-doors/Elixir/100-doors.ex
rename to Task/100-doors/Elixir/100-doors.elixir
diff --git a/Task/100-doors/Emacs-Lisp/100-doors-2.el b/Task/100-doors/Emacs-Lisp/100-doors-2.el
deleted file mode 100644
index 66b2cff437..0000000000
--- a/Task/100-doors/Emacs-Lisp/100-doors-2.el
+++ /dev/null
@@ -1,16 +0,0 @@
-(defun one-hundred-doors(initial-state)
- "Turn doors in INITIAL-STATE according to 100 Doors problem."
- (interactive "nEnter initial doors' state (as a number): ")
- (cl-loop for x from 1 to 100
- do (cl-loop for y from (1- x) to 99 by x
- do (setq initial-state (logxor initial-state (ash 1 y)))))
- (let ((counter 1)
- (open-doors nil))
- (while (> initial-state 0)
- (when (eq (mod initial-state 2) 1)
- (push counter open-doors))
- (cl-incf counter)
- (setq initial-state (/ initial-state 2)))
- (message "Open doors are %s" (reverse open-doors))))
-
-(one-hundred-doors 0)
diff --git a/Task/100-doors/Emacs-Lisp/100-doors-1.el b/Task/100-doors/Emacs-Lisp/100-doors.l
similarity index 100%
rename from Task/100-doors/Emacs-Lisp/100-doors-1.el
rename to Task/100-doors/Emacs-Lisp/100-doors.l
diff --git a/Task/100-doors/Euphoria/100-doors.eu b/Task/100-doors/Euphoria/100-doors.euphoria
similarity index 100%
rename from Task/100-doors/Euphoria/100-doors.eu
rename to Task/100-doors/Euphoria/100-doors.euphoria
diff --git a/Task/100-doors/Excel/100-doors-4.excel b/Task/100-doors/Excel/100-doors-4.excel
deleted file mode 100644
index 619e31a91c..0000000000
--- a/Task/100-doors/Excel/100-doors-4.excel
+++ /dev/null
@@ -1 +0,0 @@
-=LET(i, SEQUENCE(100), root, SQRT(i), "Door " & i & ": " & IF(root = INT(root), "open", "close"))
diff --git a/Task/100-doors/F-Sharp/100-doors-2.fs b/Task/100-doors/F-Sharp/100-doors-2.fs
index abda597121..dff5b85a51 100644
--- a/Task/100-doors/F-Sharp/100-doors-2.fs
+++ b/Task/100-doors/F-Sharp/100-doors-2.fs
@@ -1 +1,6 @@
-[1..100] |> List.fold (fun doors pass->List.mapi (fun i x->if ((i + 1) % pass)=0 then not x else x) doors) (List.init 100 (fun _->false))
+open System
+let answer2 =
+ let PerfectSquare n =
+ let sqrt = int(Math.Sqrt(float n))
+ n = sqrt * sqrt
+ [| for i in 1..100 do yield PerfectSquare i |]
diff --git a/Task/100-doors/F-Sharp/100-doors-3.fs b/Task/100-doors/F-Sharp/100-doors-3.fs
index 0e020e7034..abda597121 100644
--- a/Task/100-doors/F-Sharp/100-doors-3.fs
+++ b/Task/100-doors/F-Sharp/100-doors-3.fs
@@ -1,8 +1 @@
-let X q=not q
-let mutable q = false
-let mutable doors = []
-for n in 1..100 do
- for g in 1..n do if n%g=0 then q<-X(q)
- if q then doors<-n::doors
- q<-false
-printfn "%A" (doors|>List.rev)
+[1..100] |> List.fold (fun doors pass->List.mapi (fun i x->if ((i + 1) % pass)=0 then not x else x) doors) (List.init 100 (fun _->false))
diff --git a/Task/100-doors/Fennel/100-doors.fennel b/Task/100-doors/Fennel/100-doors.fennel
deleted file mode 100644
index b6e72cb03e..0000000000
--- a/Task/100-doors/Fennel/100-doors.fennel
+++ /dev/null
@@ -1,15 +0,0 @@
-(do ;;; find the first few squares via the unoptimised door flipping method
-
- (local door-max 100)
-
- ; repeatedly flip the doors and show the ones that are left open
- (var door {})
- (for [i 1 door-max]
- (for [j i door-max i]
- (tset door j (not (. door j)))
- )
- (when (. door i)
- (io.write (.. " " i))
- )
- )
-)
diff --git a/Task/100-doors/Fortran/100-doors-3.f b/Task/100-doors/Fortran/100-doors-3.f
deleted file mode 100644
index 2041b696fe..0000000000
--- a/Task/100-doors/Fortran/100-doors-3.f
+++ /dev/null
@@ -1,73 +0,0 @@
-! =============================================================================
-! DOORS PROBLEM
-! =============================================================================
-!
-! PROBLEM STATEMENT:
-! 100 doors are all initially closed. We make 100 passes.
-! Pass 1 toggles every door (1, 2, 3, ..., 100).
-! Pass 2 toggles every 2nd (2, 4, 6, ..., 100).
-! Pass k toggles every k-th (k, 2k, 3k, ...).
-! Pass 100 toggles only door 100.
-! What state is each door in after all 100 passes?
-!
-! ALGORITHM -- DIVISOR COUNTING:
-! Door number D is toggled on pass k if and only if k divides D evenly,
-! i.e. mod(D, k) == 0. So the total number of toggles that door D receives
-! equals the number of divisors of D (including 1 and D itself).
-!
-! Example: door 6
-! Divisors of 6 are 1, 2, 3, 6 => 4 toggles => even => CLOSED
-!
-! Example: door 9
-! Divisors of 9 are 1, 3, 9 => 3 toggles => odd => OPEN
-!
-! A door ends up OPEN when its divisor count is ODD.
-! A door ends up CLOSED when its divisor count is EVEN.
-!
-! KEY MATHEMATICAL INSIGHT (why the pattern is perfect squares):
-! Divisors normally come in pairs: if j divides D then (D/j) also divides D,
-! giving an even count. The only exception is when j == D/j, i.e. j*j == D.
-! That "pairing trick" breaks at the square root, leaving one unpaired divisor
-! and making the total ODD. This happens exactly when D is a perfect square.
-! So doors 1, 4, 9, 16, 25, 36, 49, 64, 81, 100 are open; all others closed.
-!
-! This program proves the result by brute-force divisor counting, rather than
-! assuming the mathematical conclusion up front.
-! =============================================================================
-
-program doors
- implicit none
-
- integer, parameter :: n = 100 ! total number of doors (and passes)
- integer :: door ! current door being evaluated (1..n)
- integer :: pass ! current pass number being tested (1..n)
- integer :: toggles ! number of times this door was toggled
- character(6) :: state ! final state label: 'open' or 'closed'
-
- ! --- outer loop: consider each door in turn ---
- do door = 1, n
-
- toggles = 0 ! reset the toggle counter for this door
-
- ! --- inner loop: check every pass to see if it touches this door ---
- ! Pass number 'pass' visits door 'door' only when 'pass' is a divisor
- ! of 'door'. mod(door, pass) == 0 means pass divides door exactly.
- do pass = 1, n
- if (mod(door, pass) == 0) toggles = toggles + 1
- end do
-
- ! --- determine final state from parity of toggle count ---
- ! Starting closed, an odd number of toggles leaves the door open;
- ! an even number returns it to closed.
- if (mod(toggles, 2) == 1) then
- state = 'open'
- else
- state = 'closed'
- end if
-
- ! --- report result for this door ---
- write(*, '(A, I3, A, A)') 'Door', door, ' is ', trim(state)
-
- end do
-
-end program doors
diff --git a/Task/100-doors/Goboscript/100-doors.gobo b/Task/100-doors/Goboscript/100-doors.gobo
deleted file mode 100644
index f0bc39fd44..0000000000
--- a/Task/100-doors/Goboscript/100-doors.gobo
+++ /dev/null
@@ -1,37 +0,0 @@
-costumes "assets/blank.svg";
-
-list doors;
-
-proc do_100_doors {
- delete doors;
- repeat 100 {add false to doors;}
-
- local pass_i = 1;
- repeat 100 {
- local i = 0;
- repeat length doors / pass_i {
- i += pass_i;
- doors[i] = not doors[i];
- }
-
- pass_i++;
- }
-}
-
-onflag{main;}
-proc main {
- do_100_doors;
-
- show doors;
- local i = 1;
- repeat length doors {
- if doors[i] {
- local state = "open";
- } else {
- local state = "closed";
- }
-
- log "Door " & i & " is " & state;
- i++;
- }
-}
diff --git a/Task/100-doors/Haskell/100-doors-3.hs b/Task/100-doors/Haskell/100-doors-3.hs
index 3b66096632..2cea247dfd 100644
--- a/Task/100-doors/Haskell/100-doors-3.hs
+++ b/Task/100-doors/Haskell/100-doors-3.hs
@@ -1,9 +1,6 @@
-isDoorOpen :: Integral a => a -> Bool
--- In Haskell, we are too lazy to open and close doors. Instead we
--- count how many times we would have toggled them, and then check if
--- that number is odd.
-isDoorOpen doorNumber = odd numToggles
- where numToggles = length [ 1 | x <- [1..doorNumber], doorNumber `rem` x == 0]
+gate :: Eq a => [a] -> [a] -> [Door]
+gate (x:xs) (y:ys) | x == y = Open : gate xs ys
+gate (x:xs) ys = Closed : gate xs ys
+gate [] _ = []
-main = do
- print $ "Open doors are " ++ show [x | x <- [0..100], isDoorOpen x]
+run n = gate [1..n] [k*k | k <- [1..]]
diff --git a/Task/100-doors/Haskell/100-doors-4.hs b/Task/100-doors/Haskell/100-doors-4.hs
index 2cea247dfd..44f44aa391 100644
--- a/Task/100-doors/Haskell/100-doors-4.hs
+++ b/Task/100-doors/Haskell/100-doors-4.hs
@@ -1,6 +1 @@
-gate :: Eq a => [a] -> [a] -> [Door]
-gate (x:xs) (y:ys) | x == y = Open : gate xs ys
-gate (x:xs) ys = Closed : gate xs ys
-gate [] _ = []
-
-run n = gate [1..n] [k*k | k <- [1..]]
+run n = takeWhile (< n) [k*k | k <- [1..]]
diff --git a/Task/100-doors/Haskell/100-doors-5.hs b/Task/100-doors/Haskell/100-doors-5.hs
deleted file mode 100644
index 44f44aa391..0000000000
--- a/Task/100-doors/Haskell/100-doors-5.hs
+++ /dev/null
@@ -1 +0,0 @@
-run n = takeWhile (< n) [k*k | k <- [1..]]
diff --git a/Task/100-doors/Haxe/100-doors-1.hx b/Task/100-doors/Haxe/100-doors-1.haxe
similarity index 100%
rename from Task/100-doors/Haxe/100-doors-1.hx
rename to Task/100-doors/Haxe/100-doors-1.haxe
diff --git a/Task/100-doors/Haxe/100-doors-2.hx b/Task/100-doors/Haxe/100-doors-2.haxe
similarity index 100%
rename from Task/100-doors/Haxe/100-doors-2.hx
rename to Task/100-doors/Haxe/100-doors-2.haxe
diff --git a/Task/100-doors/Informix-4GL/100-doors-2.4gl b/Task/100-doors/Informix-4GL/100-doors-2.4gl
index 6a8949775e..77483d70d0 100644
--- a/Task/100-doors/Informix-4GL/100-doors-2.4gl
+++ b/Task/100-doors/Informix-4GL/100-doors-2.4gl
@@ -2,7 +2,7 @@
(for i (range 1 101)
i2 (range (dec i) 100 i)
- (var! doors (set-at [i2] (not (i2 doors))))
+ (var! doors (set-at [i2] (! (i2 doors))))
(continue))
(-> (xmap vec doors)
diff --git a/Task/100-doors/Julia/100-doors-1.jl b/Task/100-doors/Julia/100-doors-1.julia
similarity index 100%
rename from Task/100-doors/Julia/100-doors-1.jl
rename to Task/100-doors/Julia/100-doors-1.julia
diff --git a/Task/100-doors/Julia/100-doors-2.jl b/Task/100-doors/Julia/100-doors-2.julia
similarity index 100%
rename from Task/100-doors/Julia/100-doors-2.jl
rename to Task/100-doors/Julia/100-doors-2.julia
diff --git a/Task/100-doors/Kotlin/100-doors.kts b/Task/100-doors/Kotlin/100-doors.kotlin
similarity index 100%
rename from Task/100-doors/Kotlin/100-doors.kts
rename to Task/100-doors/Kotlin/100-doors.kotlin
diff --git a/Task/100-doors/Langur/100-doors-1.langur b/Task/100-doors/Langur/100-doors-1.langur
index caac5fccf7..48e130366a 100644
--- a/Task/100-doors/Langur/100-doors-1.langur
+++ b/Task/100-doors/Langur/100-doors-1.langur
@@ -1,9 +1,9 @@
-var doors = [false] * 100
+var .doors = [false] * 100
-for i of doors {
- for j = i; j <= len(doors); j += i {
- doors[j] = not doors[j]
+for .i of .doors {
+ for .j = .i; .j <= len(.doors); .j += .i {
+ .doors[.j] = not .doors[.j]
}
}
-writeln for[=[]] i of doors { if doors[i]: _for = more(_for, i) }
+writeln for[=[]] .i of .doors { if(.doors[.i]: _for ~= [.i]) }
diff --git a/Task/100-doors/Langur/100-doors-2.langur b/Task/100-doors/Langur/100-doors-2.langur
index 1933c0187f..f120dd60c3 100644
--- a/Task/100-doors/Langur/100-doors-2.langur
+++ b/Task/100-doors/Langur/100-doors-2.langur
@@ -1 +1 @@
-writeln fold(doors, series(1..len(doors)), by=fn(a, b, c) { if(b: a~[c]; a) }, init=[])
+writeln foldfrom(fn(.a, .b, .c) if(.b: .a~[.c]; .a), [], .doors, series 1..len .doors)
diff --git a/Task/100-doors/Langur/100-doors-3.langur b/Task/100-doors/Langur/100-doors-3.langur
index 61d90f3fb8..d1c575957b 100644
--- a/Task/100-doors/Langur/100-doors-3.langur
+++ b/Task/100-doors/Langur/100-doors-3.langur
@@ -1 +1 @@
-writeln map(1..10, by=fn{^2})
+writeln map fn{^2}, 1..10
diff --git a/Task/100-doors/Lua/100-doors.lua b/Task/100-doors/Lua/100-doors.lua
new file mode 100644
index 0000000000..3183bc7730
--- /dev/null
+++ b/Task/100-doors/Lua/100-doors.lua
@@ -0,0 +1,11 @@
+local is_open = {}
+
+for pass = 1,100 do
+ for door = pass,100,pass do
+ is_open[door] = not is_open[door]
+ end
+end
+
+for i,v in next,is_open do
+ print ('Door '..i..':',v and 'open' or 'close')
+end
diff --git a/Task/100-doors/MoonRock/100-doors.moonrock b/Task/100-doors/MoonRock/100-doors.moonrock
deleted file mode 100644
index f942ba2444..0000000000
--- a/Task/100-doors/MoonRock/100-doors.moonrock
+++ /dev/null
@@ -1,35 +0,0 @@
-' 100 doors
-
-BEGIN DEF
-%DoorMax = 100
-%LastI = %DoorMax - 1
-DIM DoorOpen%[%DoorMax]
-
-BEGIN CODE
-' The unoptimised door flipping method
-' which simulates the process
-' Set all doors to closed
-FOR I% = 0 TO %LastI
- DoorOpen%[I%] = FALSE
-NEXT
-' Repeatedly flip the doors
-FOR I% = 1 TO %DoorMax
- J% = I% - 1
- WHILE J% < %DoorMax
- IF DoorOpen%[J%] = TRUE THEN
- DoorOpen%[J%] = FALSE
- ELSE
- DoorOpen%[J%] = TRUE
- ENDIF
- J% = J% + I%
- WEND
-NEXT
-' Display the results
-FOR I% = 0 TO %LastI
- IF DoorOpen%[I%] = TRUE THEN
- IPl1% = I% + 1
- PRINT " " + IPl1%
- ENDIF
-NEXT
-PRINT "\n"
-END
diff --git a/Task/100-doors/OCaml/100-doors-1.ml b/Task/100-doors/OCaml/100-doors-1.ocaml
similarity index 100%
rename from Task/100-doors/OCaml/100-doors-1.ml
rename to Task/100-doors/OCaml/100-doors-1.ocaml
diff --git a/Task/100-doors/OCaml/100-doors-2.ml b/Task/100-doors/OCaml/100-doors-2.ocaml
similarity index 100%
rename from Task/100-doors/OCaml/100-doors-2.ml
rename to Task/100-doors/OCaml/100-doors-2.ocaml
diff --git a/Task/100-doors/OCaml/100-doors-3.ml b/Task/100-doors/OCaml/100-doors-3.ocaml
similarity index 100%
rename from Task/100-doors/OCaml/100-doors-3.ml
rename to Task/100-doors/OCaml/100-doors-3.ocaml
diff --git a/Task/100-doors/OPL/100-doors.opl b/Task/100-doors/OPL/100-doors.opl
deleted file mode 100644
index 097dc00ccd..0000000000
--- a/Task/100-doors/OPL/100-doors.opl
+++ /dev/null
@@ -1,27 +0,0 @@
-REM https://github.com/Eva-Broccoli/OPL-Rosetta-Code/blob/main/A100door.opl
-PROC main:
- LOCAL door%(100),i%,j%
- i%=1
- j%=1
- WHILE j%<101
- WHILE i%<101
- IF door%(i%)=0
- door%(i%)=1
- ELSE
- door%(i%)=0
- ENDIF
- i%=i%+j%
- ENDWH
- j%=j%+1
- i%=0+j%
- ENDWH
- PRINT "Open doors:",
- i%=1
- WHILE i%<101
- IF door%(i%)=1
- PRINT i%,
- ENDIF
- i%=i%+1
- ENDWH
- GET
-ENDP
diff --git a/Task/100-doors/Oberon/100-doors.oberon b/Task/100-doors/Oberon/100-doors.oberon
new file mode 100644
index 0000000000..ddec2b2de8
--- /dev/null
+++ b/Task/100-doors/Oberon/100-doors.oberon
@@ -0,0 +1,27 @@
+MODULE Doors;
+ IMPORT Out;
+
+ PROCEDURE Do*; (* In Oberon an asterisk after an identifier is an export mark *)
+ CONST N = 100; len = N + 1;
+ VAR i, j: INTEGER;
+ closed: ARRAY len OF BOOLEAN; (* Arrays in Oberon always start with index 0; closed[0] is not used *)
+ BEGIN
+ FOR i := 1 TO N DO closed[i] := TRUE END;
+ FOR i := 1 TO N DO
+ j := 1;
+ WHILE j < len DO
+ IF j MOD i = 0 THEN closed[j] := ~closed[j] END; INC(j) (* ~ = NOT *)
+ END
+ END;
+ (* Print a state diagram of all doors *)
+ FOR i := 1 TO N DO
+ IF (i - 1) MOD 10 = 0 THEN Out.Ln END;
+ IF closed[i] THEN Out.String("- ") ELSE Out.String("+ ") END
+ END; Out.Ln;
+ (* Print the numbers of the open doors *)
+ FOR i := 1 TO N DO
+ IF ~closed[i] THEN Out.Int(i, 0); Out.Char(" ") END
+ END; Out.Ln
+ END Do;
+
+END Doors.
diff --git a/Task/100-doors/Odin/100-doors-1.odin b/Task/100-doors/Odin/100-doors-1.odin
deleted file mode 100644
index 7169d3893a..0000000000
--- a/Task/100-doors/Odin/100-doors-1.odin
+++ /dev/null
@@ -1,22 +0,0 @@
-package doors
-
-import "core:fmt"
-
-main :: proc() {
- doors: [100]bool
-
- for every_n := 1; every_n < len(doors); every_n += 1 {
- i := every_n - 1
- for true {
- if i >= len(doors) do break
-
- doors[i] = !doors[i]
-
- i += every_n
- }
- }
-
- for &door, i in doors {
- if door do fmt.printf("%d ", i + 1)
- }
-}
diff --git a/Task/100-doors/Odin/100-doors-2.odin b/Task/100-doors/Odin/100-doors-2.odin
deleted file mode 100644
index b4fcc95bd6..0000000000
--- a/Task/100-doors/Odin/100-doors-2.odin
+++ /dev/null
@@ -1,24 +0,0 @@
-package main
-
-import "core:fmt"
-
-main :: proc() {
- using fmt
-
- Door_State :: enum {Closed, Open}
-
- doors := [?]Door_State { 0..<100 = .Closed }
-
- for i in 1..=100 {
- for j := i-1; j < 100; j += i {
- if doors[j] == .Closed {
- doors[j] = .Open
- } else {
- doors[j] = .Closed
- }
- }
- }
- for state, i in doors {
- println("Door: ",int(i+1)," -> ",state)
- }
-}
diff --git a/Task/100-doors/Odin/100-doors-3.odin b/Task/100-doors/Odin/100-doors-3.odin
deleted file mode 100644
index 77e9cd99ef..0000000000
--- a/Task/100-doors/Odin/100-doors-3.odin
+++ /dev/null
@@ -1,22 +0,0 @@
-package main
-
-import "core:fmt"
-import "core:math"
-
-main :: proc() {
- using fmt
-
- Door_State :: enum {Closed, Open}
-
- doors := [?]Door_State { 0..<100 = .Closed }
-
- for i in 1..=100 {
- res := math.sqrt_f64( f64(i) )
- if math.mod_f64( res, 1) == 0 {
- doors[i-1] = .Open
- } else {
- doors[i-1] = .Closed
- }
- println("Door: ", i, " -> ", doors[i-1])
- }
-}
diff --git a/Task/100-doors/OmniMark/100-doors-1.xom b/Task/100-doors/OmniMark/100-doors-1.xom
deleted file mode 100644
index 8a04ae39c7..0000000000
--- a/Task/100-doors/OmniMark/100-doors-1.xom
+++ /dev/null
@@ -1,18 +0,0 @@
-process
- local switch doors size 100 ; all initialised ('1st pass' to false)
-
- repeat over doors
- repeat for integer door from #item to 100 by #item
- do when doors[door] = false
- activate doors[door] ; illustrating alternative to set ... to
- else
- set doors[door] to false
- done
- again
- again
-
- repeat over doors
- do when doors = true
- put #error '%d(#item)%n'
- done
- again
diff --git a/Task/100-doors/OmniMark/100-doors-2.xom b/Task/100-doors/OmniMark/100-doors-2.xom
deleted file mode 100644
index 8c4bd45aa7..0000000000
--- a/Task/100-doors/OmniMark/100-doors-2.xom
+++ /dev/null
@@ -1,10 +0,0 @@
-process
- local integer door initial {1}
- local integer step initial {3}
-
- repeat
- output "Door %d(door) is open%n"
- increment door by step
- increment step by 2
- exit when door > 100
- again
diff --git a/Task/100-doors/PL-M/100-doors.plm b/Task/100-doors/PL-M/100-doors.plm
new file mode 100644
index 0000000000..0013832477
--- /dev/null
+++ b/Task/100-doors/PL-M/100-doors.plm
@@ -0,0 +1,55 @@
+100H: /* FIND THE FIRST FEW SQUARES VIA THE UNOPTIMISED DOOR FLIPPING METHOD */
+
+ /* BDOS SYSTEM CALL */
+ BDOS: PROCEDURE( FN, ARG );
+ DECLARE FN BYTE, ARG ADDRESS;
+ GO TO 5;
+ END BDOS;
+
+ /* PRINTS A BYTE AS A CHARACTER */
+ PRINT$CHAR: PROCEDURE( CH );
+ DECLARE CH BYTE;
+ CALL BDOS( 2, CH );
+ END PRINT$CHAR;
+
+ /* PRINTS A BYTE AS A NUMBER */
+ PRINT$BYTE: PROCEDURE( N );
+ DECLARE N BYTE;
+ DECLARE ( V, D3, D2 ) BYTE;
+ V = N;
+ D3 = V MOD 10;
+ IF ( V := V / 10 ) <> 0 THEN DO;
+ D2 = V MOD 10;
+ IF ( V := V / 10 ) <> 0 THEN CALL PRINT$CHAR( '0' + V );
+ CALL PRINT$CHAR( '0' + D2 );
+ END;
+ CALL PRINT$CHAR( '0' + D3 );
+ END PRINT$BYTE;
+
+ DECLARE DOOR$DCL LITERALLY '101';
+ DECLARE FALSE LITERALLY '0';
+ DECLARE CR LITERALLY '0DH';
+ DECLARE LF LITERALLY '0AH';
+
+ /* ARRAY OF DOORS - DOOR( I ) IS TRUE IF OPEN, FALSE IF CLOSED */
+ DECLARE DOOR( DOOR$DCL ) BYTE;
+ DECLARE ( I, J ) BYTE;
+
+ /* SET ALL DOORS TO CLOSED */
+ DO I = 0 TO LAST( DOOR ); DOOR( I ) = FALSE; END;
+ /* REPEATEDLY FLIP THE DOORS */
+ DO I = 1 TO LAST( DOOR );
+ DO J = I TO LAST( DOOR ) BY I;
+ DOOR( J ) = NOT DOOR( J );
+ END;
+ END;
+ /* DISPLAY THE RESULTS */
+ DO I = 1 TO LAST( DOOR );
+ IF DOOR( I ) THEN DO;
+ CALL PRINT$CHAR( ' ' );
+ CALL PRINT$BYTE( I );
+ END;
+ END;
+ CALL PRINT$CHAR( CR );
+ CALL PRINT$CHAR( LF );
+EOF
diff --git a/Task/100-doors/PascalABC.NET/100-doors.pas b/Task/100-doors/PascalABC.NET/100-doors.pas
new file mode 100644
index 0000000000..fab41ed069
--- /dev/null
+++ b/Task/100-doors/PascalABC.NET/100-doors.pas
@@ -0,0 +1,8 @@
+// 100 doors. Nigel Galloway: January 1th., 2023
+type doorState=(Open,Closed);
+function flip(n:doorState):doorState:=if n=Open then Closed else Open;
+var Doors:Array of doorState:=ArrFill(100,Closed);
+begin
+ for var n:=1 to 100 do for var g:=n-1 to 99 step n do Doors[g]:=flip(Doors[g]);
+ for var n:=0 to 99 do if Doors[n]=Open then write(n+1,' '); writeLn
+end.
diff --git a/Task/100-doors/Plain-English/100-doors.plain b/Task/100-doors/Plain-English/100-doors.plain
index 2ebc38ce0b..f6ee5c1b2e 100644
--- a/Task/100-doors/Plain-English/100-doors.plain
+++ b/Task/100-doors/Plain-English/100-doors.plain
@@ -1,57 +1,51 @@
-A flag list is a doubly linked list with a flag.
-A door is a flag list.
-A pass is a number.
-
-To run:
- Start up.
- Pass doors given 1000 and 1000 passes.
- Shut down.
-
-To pass doors given a count and some passes:
- Create some doors given the count.
- Loop.
- Add 1 to a counter.
- If the counter is greater than the passes, break.
- Go through the doors given the counter and the passes.
- Repeat.
- Output the states of the doors.
- Destroy the doors.
-
To create some doors given a count:
- Loop.
- Add 1 to a counter.
- If the counter is greater than the count, exit.
- Allocate memory for a door.
- Clear the door's flag.
- Append the door to the doors.
- Repeat.
+Loop.
+If a counter is past the count, exit.
+Allocate memory for a door.
+Clear the door's flag.
+Append the door to the doors.
+Repeat.
+
+A door is a flag thing.
To go through some doors given a number and some passes:
- Put 0 into a counter.
- Loop.
- Add the number to the counter.
- If the counter is greater than the passes, exit.
- Pick a door from the doors given the number.
- Invert the door's flag.
- Repeat.
-
-To pick a door from some doors given a number:
- Loop.
- Add 1 to a counter.
- If the counter is greater than the number, exit.
- Get the door from the doors.
- If the door is nil, exit.
- Repeat.
+Put 0 into a counter.
+Loop.
+Add the number to the counter.
+If the counter is greater than the passes, exit.
+Pick a door from the doors given the number.
+Invert the door's flag.
+Repeat.
To output the states of some doors:
- Loop.
- Bump a counter.
- Get a door from the doors.
- If the door is nil, exit.
- If the door's flag is set,
- Write "Door " then the counter then " is open"
- then the CRLF string to StdOut;
- Repeat.
- \Write "Door " then the counter then " is closed"
- \then the CRLF string to StdOut.
- Repeat.
+Loop.
+Bump a counter.
+Get a door from the doors.
+If the door is nil, exit.
+If the door's flag is set, write "Door " then the counter then " is open" to the output; repeat.
+Write "Door " then the counter then " is closed" to the output.
+Repeat.
+
+To pass doors given a count and some passes:
+Create some doors given the count.
+Loop.
+If a counter is past the passes, break.
+Go through the doors given the counter and the passes.
+Repeat.
+Output the states of the doors.
+Destroy the doors.
+
+A pass is a number.
+
+To pick a door from some doors given a number:
+Loop.
+If a counter is past the number, exit.
+Get the door from the doors.
+If the door is nil, exit.
+Repeat.
+
+To run:
+Start up.
+Pass doors given 100 and 100 passes.
+Wait for the escape key.
+Shut down.
diff --git a/Task/100-doors/PowerShell/100-doors-1.ps1 b/Task/100-doors/PowerShell/100-doors-1.psh
similarity index 100%
rename from Task/100-doors/PowerShell/100-doors-1.ps1
rename to Task/100-doors/PowerShell/100-doors-1.psh
diff --git a/Task/100-doors/PowerShell/100-doors-2.ps1 b/Task/100-doors/PowerShell/100-doors-2.psh
similarity index 100%
rename from Task/100-doors/PowerShell/100-doors-2.ps1
rename to Task/100-doors/PowerShell/100-doors-2.psh
diff --git a/Task/100-doors/PowerShell/100-doors-3.ps1 b/Task/100-doors/PowerShell/100-doors-3.psh
similarity index 100%
rename from Task/100-doors/PowerShell/100-doors-3.ps1
rename to Task/100-doors/PowerShell/100-doors-3.psh
diff --git a/Task/100-doors/PowerShell/100-doors-4.ps1 b/Task/100-doors/PowerShell/100-doors-4.psh
similarity index 100%
rename from Task/100-doors/PowerShell/100-doors-4.ps1
rename to Task/100-doors/PowerShell/100-doors-4.psh
diff --git a/Task/100-doors/PowerShell/100-doors-5.ps1 b/Task/100-doors/PowerShell/100-doors-5.psh
similarity index 100%
rename from Task/100-doors/PowerShell/100-doors-5.ps1
rename to Task/100-doors/PowerShell/100-doors-5.psh
diff --git a/Task/100-doors/PowerShell/100-doors-6.ps1 b/Task/100-doors/PowerShell/100-doors-6.psh
similarity index 100%
rename from Task/100-doors/PowerShell/100-doors-6.ps1
rename to Task/100-doors/PowerShell/100-doors-6.psh
diff --git a/Task/100-doors/PowerShell/100-doors-7.ps1 b/Task/100-doors/PowerShell/100-doors-7.psh
similarity index 100%
rename from Task/100-doors/PowerShell/100-doors-7.ps1
rename to Task/100-doors/PowerShell/100-doors-7.psh
diff --git a/Task/100-doors/Pyret/100-doors.arr b/Task/100-doors/Pyret/100-doors.pyret
similarity index 100%
rename from Task/100-doors/Pyret/100-doors.arr
rename to Task/100-doors/Pyret/100-doors.pyret
diff --git a/Task/100-doors/Python/100-doors-5.py b/Task/100-doors/Python/100-doors-5.py
index 96e57804d7..c3f39a49a6 100644
--- a/Task/100-doors/Python/100-doors-5.py
+++ b/Task/100-doors/Python/100-doors-5.py
@@ -1,2 +1,6 @@
for i in range(1, 101):
- print(f"Door {i}:{"closed" if i**0.5 % 1 else "open"}")
+ if i**0.5 % 1:
+ state='closed'
+ else:
+ state='open'
+ print("Door {}:{}".format(i, state))
diff --git a/Task/100-doors/Python/100-doors-6.py b/Task/100-doors/Python/100-doors-6.py
index b42230ac44..7524fc9970 100644
--- a/Task/100-doors/Python/100-doors-6.py
+++ b/Task/100-doors/Python/100-doors-6.py
@@ -1 +1 @@
-for i in range(1,11): print(f"Door {i**2} is open")
+for i in range(1,11): print("Door %s is open" % i**2)
diff --git a/Task/100-doors/Quackery/100-doors-1.quackery b/Task/100-doors/Quackery/100-doors-1.quackery
deleted file mode 100644
index e3d105d0cd..0000000000
--- a/Task/100-doors/Quackery/100-doors-1.quackery
+++ /dev/null
@@ -1,17 +0,0 @@
- [ bit ^ ] is toggle ( f n --> f )
-
- [ 0
- 100 times
- [ i^ 1+ swap
- 101 times
- [ i^ toggle over step ]
- nip ] ] is toggledoors ( --> f )
-
- [ 100 times
- [ 1 >> dup 1 &
- if [ i^ 1+ echo sp ] ]
- drop ] is echodoors ( f --> )
-
- toggledoors
- say " These doors are open: " echodoors cr
- say " The rest are closed." cr
diff --git a/Task/100-doors/Quackery/100-doors-2.quackery b/Task/100-doors/Quackery/100-doors-2.quackery
deleted file mode 100644
index 85074cd60f..0000000000
--- a/Task/100-doors/Quackery/100-doors-2.quackery
+++ /dev/null
@@ -1 +0,0 @@
- 10 times [ i^ 1+ 2 ** echo sp ]
diff --git a/Task/100-doors/Quackery/100-doors.quackery b/Task/100-doors/Quackery/100-doors.quackery
new file mode 100644
index 0000000000..5577d1c6c4
--- /dev/null
+++ b/Task/100-doors/Quackery/100-doors.quackery
@@ -0,0 +1,22 @@
+/O> [ bit ^ ] is toggle ( f n --> f )
+...
+... [ 0
+... 100 times
+... [ i^ 1+ swap
+... 101 times
+... [ i^ toggle over step ]
+... nip ] ] is toggledoors ( --> f )
+...
+... [ 100 times
+... [ 1 >> dup 1 &
+... if [ i^ 1+ echo sp ] ]
+... drop ] is echodoors ( f --> )
+...
+... toggledoors
+... say " These doors are open: " echodoors cr
+... say " The rest are closed." cr
+...
+ These doors are open: 1 4 9 16 25 36 49 64 81 100
+ The rest are closed.
+
+Stack empty.
diff --git a/Task/100-doors/Rebol/100-doors-1.rebol b/Task/100-doors/REBOL/100-doors-1.rebol
similarity index 100%
rename from Task/100-doors/Rebol/100-doors-1.rebol
rename to Task/100-doors/REBOL/100-doors-1.rebol
diff --git a/Task/100-doors/REBOL/100-doors-2.rebol b/Task/100-doors/REBOL/100-doors-2.rebol
new file mode 100644
index 0000000000..73f1f448f3
--- /dev/null
+++ b/Task/100-doors/REBOL/100-doors-2.rebol
@@ -0,0 +1,2 @@
+doors: array/initial 100 'closed
+repeat i 10 [doors/(i * i): 'open]
diff --git a/Task/100-doors/Rebol/100-doors-2.rebol b/Task/100-doors/Rebol/100-doors-2.rebol
deleted file mode 100644
index b8428a69d9..0000000000
--- a/Task/100-doors/Rebol/100-doors-2.rebol
+++ /dev/null
@@ -1,26 +0,0 @@
-;; Create a bitset with capacity for 100 bits (representing 100 doors)
-;; Each bit represents a door state: 0 = closed, 1 = open
-doors: make bitset! 100
-
-;; Outer loop: Make 100 passes (i = 1 to 100)
-repeat i 100 [
- ;; Inner loop: Check each door position (j = 1 to 100)
- repeat j 100 [
- ;; If door j index is divisible by pass number i (no remainder)
- if zero? (j // i) [
- ;; Toggle the door's bit:
- ;; doors/:j accesses door j in the bitset
- ;; 'not' flips the bit value (0 -> 1, 1 -> 0)
- doors/:j: not doors/:j
- ]
- ]
-]
-
-;; Final loop: Check which doors are open, print their numbers
-repeat i 100 [
- ;; If door i's bit is set (open)
- if doors/:i [
- ;; Print the door's number and that it is open
- print ["door" i "is open"]
- ]
-]
diff --git a/Task/100-doors/Rebol/100-doors-3.rebol b/Task/100-doors/Rebol/100-doors-3.rebol
deleted file mode 100644
index 318cdd4a11..0000000000
--- a/Task/100-doors/Rebol/100-doors-3.rebol
+++ /dev/null
@@ -1,6 +0,0 @@
-;; Loop variable i from 1 to 10 (since 10^2 = 100, covers doors 1 to 100)
-repeat i 10 [
- ;; Print that door number (i squared) is open
- ;; These are exactly the doors with perfect square numbers: 1, 4, 9, ..., 100
- print ["door" (i * i) "is open"]
-]
diff --git a/Task/100-doors/Rust/100-doors-1.rs b/Task/100-doors/Rust/100-doors-1.rust
similarity index 100%
rename from Task/100-doors/Rust/100-doors-1.rs
rename to Task/100-doors/Rust/100-doors-1.rust
diff --git a/Task/100-doors/Rust/100-doors-2.rs b/Task/100-doors/Rust/100-doors-2.rust
similarity index 100%
rename from Task/100-doors/Rust/100-doors-2.rs
rename to Task/100-doors/Rust/100-doors-2.rust
diff --git a/Task/100-doors/Rust/100-doors-3.rs b/Task/100-doors/Rust/100-doors-3.rust
similarity index 100%
rename from Task/100-doors/Rust/100-doors-3.rs
rename to Task/100-doors/Rust/100-doors-3.rust
diff --git a/Task/100-doors/Rust/100-doors-4.rs b/Task/100-doors/Rust/100-doors-4.rust
similarity index 100%
rename from Task/100-doors/Rust/100-doors-4.rs
rename to Task/100-doors/Rust/100-doors-4.rust
diff --git a/Task/100-doors/Rye/100-doors.rye b/Task/100-doors/Rye/100-doors.rye
deleted file mode 100644
index 1bd595c1c9..0000000000
--- a/Task/100-doors/Rye/100-doors.rye
+++ /dev/null
@@ -1,8 +0,0 @@
-replicate 100 { false }
-|walk\pos 'p {
- .map\pos 'r { ::d ,
- either r .is-multiple-of p { not d } { d } }
- |at p }
-|map\pos 'p { .either { p } { false } }
-|filter { .is-integer }
-|for { .embed "Door {} is open." |print }
diff --git a/Task/100-doors/Scheme/100-doors-1.scm b/Task/100-doors/Scheme/100-doors-1.ss
similarity index 100%
rename from Task/100-doors/Scheme/100-doors-1.scm
rename to Task/100-doors/Scheme/100-doors-1.ss
diff --git a/Task/100-doors/Scheme/100-doors-2.scm b/Task/100-doors/Scheme/100-doors-2.ss
similarity index 100%
rename from Task/100-doors/Scheme/100-doors-2.scm
rename to Task/100-doors/Scheme/100-doors-2.ss
diff --git a/Task/100-doors/Scheme/100-doors-3.scm b/Task/100-doors/Scheme/100-doors-3.ss
similarity index 100%
rename from Task/100-doors/Scheme/100-doors-3.scm
rename to Task/100-doors/Scheme/100-doors-3.ss
diff --git a/Task/100-doors/Scheme/100-doors-4.scm b/Task/100-doors/Scheme/100-doors-4.scm
deleted file mode 100644
index a65ab0f484..0000000000
--- a/Task/100-doors/Scheme/100-doors-4.scm
+++ /dev/null
@@ -1,17 +0,0 @@
-(define (doors-toggle door-state)
- (define (doors-toggle-helper door-state num-doors step counter)
- (cond ((> step num-doors) door-state)
- ((> counter (1- num-doors))
- (doors-toggle-helper door-state num-doors (1+ step) step))
- (else (vector-set! door-state
- counter
- (not (array-ref door-state counter)))
- (doors-toggle-helper door-state
- num-doors
- step
- (+ step counter)))))
- (let ((step 1)
- (num-doors (vector-length door-state)))
- (doors-toggle-helper door-state num-doors step (1- step))))
-
-(doors-toggle (make-vector 100 #f)) ;; #t is an open door, #f a closed one
diff --git a/Task/100-doors/Tailspin/100-doors-1.tailspin b/Task/100-doors/Tailspin/100-doors-1.tailspin
deleted file mode 100644
index 3a2f81f4c2..0000000000
--- a/Task/100-doors/Tailspin/100-doors-1.tailspin
+++ /dev/null
@@ -1,14 +0,0 @@
-source hundredDoors
- @: [ 1..100 -> 0 ];
- templates toggle
- def jump: $;
- $jump..100:$jump -> \(
- when ($@hundredDoors($) <=0>)> do @hundredDoors($): 1;
- otherwise @hundredDoors($): 0;
- \) -> !VOID
- end toggle
- 1..100 -> toggle -> !VOID
- $@ -> \[i](<=1> ' $i;' !\) !
-end hundredDoors
-
-$hundredDoors -> 'Open doors:$...;' -> !OUT::write
diff --git a/Task/100-doors/Tailspin/100-doors-2.tailspin b/Task/100-doors/Tailspin/100-doors-2.tailspin
deleted file mode 100644
index fb29ae1395..0000000000
--- a/Task/100-doors/Tailspin/100-doors-2.tailspin
+++ /dev/null
@@ -1,14 +0,0 @@
-hundredDoors source
- @ set [ 1..100 -> 0 ];
- toggle templates
- jump is $;
- $jump..100:$jump -> templates
- when <|?($@hundredDoors($) matches <|=0>)> do @hundredDoors($) set 1;
- otherwise @hundredDoors($) set 0;
- end -> !VOID
- end toggle
- 1..100 -> toggle -> !VOID
- $@(.. as i; -> if <|=1> -> ' $i;') !
-end hundredDoors
-
-$hundredDoors -> 'Open doors:$...;' !
diff --git a/Task/100-doors/Tailspin/100-doors.tailspin b/Task/100-doors/Tailspin/100-doors.tailspin
new file mode 100644
index 0000000000..8ea97723d3
--- /dev/null
+++ b/Task/100-doors/Tailspin/100-doors.tailspin
@@ -0,0 +1,11 @@
+source hundredDoors
+ @: [ 1..100 -> 0 ];
+ templates toggle
+ def jump: $;
+ $jump..100:$jump -> \(when ($@hundredDoors($) <=0>)> do @hundredDoors($): 1; otherwise @hundredDoors($): 0;\) -> !VOID
+ end toggle
+ 1..100 -> toggle -> !VOID
+ $@ -> \[i](<=1> ' $i;' !\) !
+end hundredDoors
+
+$hundredDoors -> 'Open doors:$...;' -> !OUT::write
diff --git a/Task/100-doors/Tcl/100-doors-1.tcl b/Task/100-doors/Tcl/100-doors-1.tcl
index 71a614db6d..43badf3380 100644
--- a/Task/100-doors/Tcl/100-doors-1.tcl
+++ b/Task/100-doors/Tcl/100-doors-1.tcl
@@ -1,85 +1,11 @@
-#!/usr/bin/env tclsh
-
-# 100 doors
-
-proc seq { m n } {
- set r {}
- for {set i $m} {$i <= $n} {incr i} {
- lappend r $i
- }
- return $r
-}
-
-proc toggle {val a b} {
- # expr has ternary operators
- return [expr {
- ${val} == ${a}? ${b} :
- ${val} == ${b}? ${a} :
- [error "bad value: ${val}"]
- }]
-}
-
-proc multiples {n max} {
- set ret {}
- set x $n
-
- # maximum multiple
- set mid [expr $max / 2]
-
- if {$x>=$mid && $x<$max} { return $x }
-
- # calculate multiples
- if {[expr $x <= $mid]} {
- for {set i 1} {$i <= $max } {incr i} {
-
- set x [expr $i * $n]
-
- if {$x > $max} { break }
-
- lappend ret $x
- }
- }
-
- return $ret
-}
-
-# states
-array set state {
- open "open"
- closed "closed"
- unknown "?"
-}
-
-# ==============================
-# start program
-
-# 100 doors
-variable MAX 100
-
-variable mid [expr int($MAX / 2)]
-
-variable Seq_100 [seq 1 $MAX]
-
-# initialize doors closed
-foreach n $Seq_100 {
- set door($n) $state(closed)
-}
-
-# do for 1 .. 100
-foreach m $Seq_100 {
-
- set mults [multiples $m $MAX]
-
- foreach d $mults {
- set door($d) [toggle $door($d) $state(open) $state(closed)]
+package require Tcl 8.5
+set n 100
+set doors [concat - [lrepeat $n 0]]
+for {set step 1} {$step <= $n} {incr step} {
+ for {set i $step} {$i <= $n} {incr i $step} {
+ lset doors $i [expr { ! [lindex $doors $i]}]
}
}
-
-# output
-foreach n $Seq_100 {
- if { $door($n) eq $state(open) } {
- puts stdout "$n: $door($n)"
- }
+for {set i 1} {$i <= $n} {incr i} {
+ puts [format "door %d is %s" $i [expr {[lindex $doors $i] ? "open" : "closed"}]]
}
-
-# end
diff --git a/Task/100-doors/Tcl/100-doors-2.tcl b/Task/100-doors/Tcl/100-doors-2.tcl
index 43badf3380..df7078d750 100644
--- a/Task/100-doors/Tcl/100-doors-2.tcl
+++ b/Task/100-doors/Tcl/100-doors-2.tcl
@@ -1,11 +1,8 @@
package require Tcl 8.5
-set n 100
-set doors [concat - [lrepeat $n 0]]
-for {set step 1} {$step <= $n} {incr step} {
- for {set i $step} {$i <= $n} {incr i $step} {
- lset doors $i [expr { ! [lindex $doors $i]}]
- }
+set doors [lrepeat [expr {$n + 1}] closed]
+for {set i 1} {$i <= sqrt($n)} {incr i} {
+ lset doors [expr {$i ** 2}] open
}
for {set i 1} {$i <= $n} {incr i} {
- puts [format "door %d is %s" $i [expr {[lindex $doors $i] ? "open" : "closed"}]]
+ puts [format "door %d is %s" $i [lindex $doors $i]]
}
diff --git a/Task/100-doors/Tcl/100-doors-3.tcl b/Task/100-doors/Tcl/100-doors-3.tcl
index df7078d750..8e3db5488e 100644
--- a/Task/100-doors/Tcl/100-doors-3.tcl
+++ b/Task/100-doors/Tcl/100-doors-3.tcl
@@ -1,8 +1,46 @@
package require Tcl 8.5
-set doors [lrepeat [expr {$n + 1}] closed]
-for {set i 1} {$i <= sqrt($n)} {incr i} {
- lset doors [expr {$i ** 2}] open
+package require Tk
+
+array set door_status {}
+
+# create the gui
+set doors [list x]
+for {set i 0} {$i < 10} {incr i} {
+ for {set j 0} {$j < 10} {incr j} {
+ set k [expr {1 + $j + 10*$i}]
+ lappend doors [radiobutton .d_$k -text $k -variable door_status($k) \
+ -indicatoron no -offrelief flat -width 3 -value open]
+ grid [lindex $doors $k] -column $j -row $i
+ }
}
-for {set i 1} {$i <= $n} {incr i} {
- puts [format "door %d is %s" $i [lindex $doors $i]]
+
+# create the controls
+button .start -command go -text Start
+label .i_label -text " door:"
+entry .i -textvariable i -width 4
+label .step_label -text " step:"
+entry .step -textvariable step -width 4
+grid .start - .i_label - .i - .step_label - .step - -row $i
+grid configure .start -sticky ew
+grid configure .i_label .step_label -sticky e
+grid configure .i .step -sticky w
+
+proc go {} {
+ global doors door_status i step
+
+ # initialize the door_status (all closed)
+ for {set d 1} {$d <= 100} {incr d} {
+ set door_status($d) closed
+ }
+
+ # now, begin opening and closing
+ for {set step 1} {$step <= 100} {incr step} {
+ for {set i 1} {$i <= 100} {incr i} {
+ if {$i % $step == 0} {
+ [lindex $doors $i] [expr {$door_status($i) eq "open" ? "deselect" : "select"}]
+ update
+ after 50
+ }
+ }
+ }
}
diff --git a/Task/100-doors/Tcl/100-doors-4.tcl b/Task/100-doors/Tcl/100-doors-4.tcl
deleted file mode 100644
index 8e3db5488e..0000000000
--- a/Task/100-doors/Tcl/100-doors-4.tcl
+++ /dev/null
@@ -1,46 +0,0 @@
-package require Tcl 8.5
-package require Tk
-
-array set door_status {}
-
-# create the gui
-set doors [list x]
-for {set i 0} {$i < 10} {incr i} {
- for {set j 0} {$j < 10} {incr j} {
- set k [expr {1 + $j + 10*$i}]
- lappend doors [radiobutton .d_$k -text $k -variable door_status($k) \
- -indicatoron no -offrelief flat -width 3 -value open]
- grid [lindex $doors $k] -column $j -row $i
- }
-}
-
-# create the controls
-button .start -command go -text Start
-label .i_label -text " door:"
-entry .i -textvariable i -width 4
-label .step_label -text " step:"
-entry .step -textvariable step -width 4
-grid .start - .i_label - .i - .step_label - .step - -row $i
-grid configure .start -sticky ew
-grid configure .i_label .step_label -sticky e
-grid configure .i .step -sticky w
-
-proc go {} {
- global doors door_status i step
-
- # initialize the door_status (all closed)
- for {set d 1} {$d <= 100} {incr d} {
- set door_status($d) closed
- }
-
- # now, begin opening and closing
- for {set step 1} {$step <= 100} {incr step} {
- for {set i 1} {$i <= 100} {incr i} {
- if {$i % $step == 0} {
- [lindex $doors $i] [expr {$door_status($i) eq "open" ? "deselect" : "select"}]
- update
- after 50
- }
- }
- }
-}
diff --git a/Task/100-doors/Uiua/100-doors-1.uiua b/Task/100-doors/Uiua/100-doors-1.uiua
deleted file mode 100644
index a9b6f157a4..0000000000
--- a/Task/100-doors/Uiua/100-doors-1.uiua
+++ /dev/null
@@ -1,6 +0,0 @@
-◿2/+=0⊞◿.+1⇡100
- +1⇡100 # 1-100
- ⊞◿. # Mod each with 1-100
- =0 # Find where mod = 0, aka the divisors
- /+ # Sum to get num of divisors
-◿2 # Num divisors is odd
diff --git a/Task/100-doors/Uiua/100-doors-2.uiua b/Task/100-doors/Uiua/100-doors-2.uiua
deleted file mode 100644
index c1e094976b..0000000000
--- a/Task/100-doors/Uiua/100-doors-2.uiua
+++ /dev/null
@@ -1 +0,0 @@
-⊜∘/≠±⊞◿..+1⇡100
diff --git a/Task/100-doors/Uiua/100-doors-3.uiua b/Task/100-doors/Uiua/100-doors-3.uiua
deleted file mode 100644
index 35552aab2a..0000000000
--- a/Task/100-doors/Uiua/100-doors-3.uiua
+++ /dev/null
@@ -1 +0,0 @@
-×.+1⇡⌊√ 100
diff --git a/Task/100-doors/Unison/100-doors.u b/Task/100-doors/Unison/100-doors.unison
similarity index 100%
rename from Task/100-doors/Unison/100-doors.u
rename to Task/100-doors/Unison/100-doors.unison
diff --git a/Task/100-doors/V-(Vlang)/100-doors-2.v b/Task/100-doors/V-(Vlang)/100-doors-2.v
index 35ff929ac5..6ec392d9a6 100644
--- a/Task/100-doors/V-(Vlang)/100-doors-2.v
+++ b/Task/100-doors/V-(Vlang)/100-doors-2.v
@@ -11,10 +11,11 @@ fn main(){
doors[current - 1] = true
increment++
door_nbr += 2 * increment + 1
- print('O')
- } else {
- print('=')
- }
+ }
}
+ doors.map( fn( it bool) bool { // graphically represent opened doors
+ print( if it {( 'O')} else {('=')} )
+ return it
+ })
println('')
}
diff --git a/Task/100-doors/V-(Vlang)/100-doors-3.v b/Task/100-doors/V-(Vlang)/100-doors-3.v
deleted file mode 100644
index 8f720ebff3..0000000000
--- a/Task/100-doors/V-(Vlang)/100-doors-3.v
+++ /dev/null
@@ -1,11 +0,0 @@
-import math
-
-const number_doors = 101
-
-fn main() {
- max_i := int(math.sqrt(f64(number_doors - 1))) + 1
- for i in 1..max_i {
- door := i * i
- println("Door ${door} open")
- }
-}
diff --git a/Task/100-doors/V-(Vlang)/100-doors-4.v b/Task/100-doors/V-(Vlang)/100-doors-4.v
deleted file mode 100644
index bce04b6c59..0000000000
--- a/Task/100-doors/V-(Vlang)/100-doors-4.v
+++ /dev/null
@@ -1,5 +0,0 @@
-fn main() {
- for i in 1..11 {
- print ( " Door ${i*i} is open.\n" )
- }
-}
diff --git a/Task/100-doors/VBScript/100-doors.vbs b/Task/100-doors/VBScript/100-doors.vb
similarity index 100%
rename from Task/100-doors/VBScript/100-doors.vbs
rename to Task/100-doors/VBScript/100-doors.vb
diff --git a/Task/100-doors/VHDL/100-doors-1.vhd b/Task/100-doors/VHDL/100-doors-1.vhdl
similarity index 100%
rename from Task/100-doors/VHDL/100-doors-1.vhd
rename to Task/100-doors/VHDL/100-doors-1.vhdl
diff --git a/Task/100-doors/VHDL/100-doors-2.vhd b/Task/100-doors/VHDL/100-doors-2.vhdl
similarity index 100%
rename from Task/100-doors/VHDL/100-doors-2.vhd
rename to Task/100-doors/VHDL/100-doors-2.vhdl
diff --git a/Task/100-doors/YAMLScript/100-doors.ys b/Task/100-doors/YAMLScript/100-doors.ys
index 7e63c2a67d..d5248aee43 100644
--- a/Task/100-doors/YAMLScript/100-doors.ys
+++ b/Task/100-doors/YAMLScript/100-doors.ys
@@ -1,14 +1,16 @@
-!YS-v0
+!yamlscript/v0
defn main():
- open =:
- reduce _ vec([true] * 100) (1 .. 100):
- fn(doors i):
- loop j i, doors doors:
- if j < 100:
- recur (j + i).++:
- update-in doors [j]: \(doors.$j.!)
- else: doors
- say: -"Open doors after 100 passes:\ " +
- (1 .. 100).map(\(_.--:open && _))
- .filter(a).join(', ')
+ say: |-
+ Open doors after 100 passes:
+ $(apply str interpose(', ' open-doors()))
+
+defn open-doors():
+ for [[d n] map(vector doors() iterate(inc 1)) :when d]:
+ n
+
+defn doors():
+ reduce:
+ fn(doors idx): assoc(doors idx true)
+ into []: repeat(100 false)
+ map \(dec (%1 * %1)): 1 .. 10
diff --git a/Task/100-doors/Zig/100-doors-4.zig b/Task/100-doors/Zig/100-doors-4.zig
index 14d911f591..53b792a533 100644
--- a/Task/100-doors/Zig/100-doors-4.zig
+++ b/Task/100-doors/Zig/100-doors-4.zig
@@ -1,7 +1,8 @@
pub fn main() !void {
const stdout = @import("std").io.getStdOut().writer();
- for(1..11) |door| {
+ var door: u8 = 1;
+ while (door * door <= 100) : (door += 1) {
try stdout.print("Door {d} is open\n", .{door * door});
}
}
diff --git a/Task/100-prisoners/11l/100-prisoners.11l b/Task/100-prisoners/11l/100-prisoners.11l
index 0bacfb4489..f8e57ab878 100644
--- a/Task/100-prisoners/11l/100-prisoners.11l
+++ b/Task/100-prisoners/11l/100-prisoners.11l
@@ -5,7 +5,7 @@ F play_random(n)
L 0 .< n
random:shuffle(&in_drawer)
V found = 0B
- L(prisoner) 0.<100
+ L(prisoner) 100
found = 0B
L(reveal) random:sample(sampler, 50)
V card = in_drawer[reveal]
@@ -24,7 +24,7 @@ F play_optimal(n)
L 0 .< n
random:shuffle(&in_drawer)
V found = 0B
- L(prisoner) 0.<100
+ L(prisoner) 100
V reveal = prisoner
found = 0B
L 50
diff --git a/Task/100-prisoners/ALGOL-68/100-prisoners.alg b/Task/100-prisoners/ALGOL-68/100-prisoners.alg
deleted file mode 100644
index e8858ff506..0000000000
--- a/Task/100-prisoners/ALGOL-68/100-prisoners.alg
+++ /dev/null
@@ -1,66 +0,0 @@
-BEGIN # 100 prisoners #
-
-CO begin code from the Knuth shuffle task CO
-PROC between = (INT a, b)INT :
-(
- ENTIER (random * ABS (b-a+1) + (a ?n 1) do
- (bind ?k (+ 1 (random ?n)))
- (bind ?tmp (nth$ ?n ?lst))
- (bind ?lst (replace$ ?lst ?n ?n (nth$ ?k ?lst)))
- (bind ?lst (replace$ ?lst ?k ?k ?tmp))
- (bind ?n (- ?n 1)))
- ?lst)
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; Create a random permutation of 1..100 representing box contents
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(deffunction random-permutation ()
- (shuffle (create$ 1 2 3 4 5 6 7 8 9 10
- 11 12 13 14 15 16 17 18 19 20
- 21 22 23 24 25 26 27 28 29 30
- 31 32 33 34 35 36 37 38 39 40
- 41 42 43 44 45 46 47 48 49 50
- 51 52 53 54 55 56 57 58 59 60
- 61 62 63 64 65 66 67 68 69 70
- 71 72 73 74 75 76 77 78 79 80
- 81 82 83 84 85 86 87 88 89 90
- 91 92 93 94 95 96 97 98 99 100)))
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; Prisoner loop strategy:
-;; Start at your own number, open that box, then follow the chain.
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(deffunction prisoner-succeeds (?id ?perm)
- (bind ?next ?id)
- (bind ?opens 0)
- (while (< ?opens MAX-OPENS) do
- (bind ?opens (+ ?opens 1))
- (bind ?found (nth$ ?next ?perm))
- (if (= ?found ?id) then
- (return TRUE))
- (bind ?next ?found))
- FALSE)
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; Run one full trial: all prisoners must succeed
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(deffunction run-trial ()
- (bind ?perm (random-permutation))
- (foreach ?p (create$ 1 to NUM-PRISONERS) do
- (if (not (prisoner-succeeds ?p ?perm)) then
- (return FALSE)))
- TRUE)
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; Run many trials to estimate probability
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(deffunction simulate (?trials)
- (bind ?wins 0)
- (loop-for-count (?i 1 ?trials) do
- (if (run-trial) then
- (bind ?wins (+ ?wins 1))))
- (printout t "Trials: " ?trials crlf)
- (printout t "Successful trials: " ?wins crlf)
- (printout t "Estimated probability: "
- (/ (float ?wins) (float ?trials)) crlf))
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; Entry point
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(reset)
-(simulate 1000)
diff --git a/Task/100-prisoners/C++/100-prisoners-1.cpp b/Task/100-prisoners/C++/100-prisoners.cpp
similarity index 100%
rename from Task/100-prisoners/C++/100-prisoners-1.cpp
rename to Task/100-prisoners/C++/100-prisoners.cpp
diff --git a/Task/100-prisoners/Crystal/100-prisoners.cr b/Task/100-prisoners/Crystal/100-prisoners.crystal
similarity index 100%
rename from Task/100-prisoners/Crystal/100-prisoners.cr
rename to Task/100-prisoners/Crystal/100-prisoners.crystal
diff --git a/Task/100-prisoners/D/100-prisoners.d b/Task/100-prisoners/D/100-prisoners.d
index 5c70291510..04986ae37c 100644
--- a/Task/100-prisoners/D/100-prisoners.d
+++ b/Task/100-prisoners/D/100-prisoners.d
@@ -37,7 +37,7 @@ bool playRandom() {
double exec(const size_t n, bool function() play) {
size_t success = 0;
- for (size_t i = n; i > 0; i--) {
+ for (int i = n; i > 0; i--) {
if (play()) {
success++;
}
diff --git a/Task/100-prisoners/EasyLang/100-prisoners.easy b/Task/100-prisoners/EasyLang/100-prisoners.easy
index d43959b394..6bdc815b68 100644
--- a/Task/100-prisoners/EasyLang/100-prisoners.easy
+++ b/Task/100-prisoners/EasyLang/100-prisoners.easy
@@ -1,51 +1,60 @@
-global drawer[] sampler[] .
-proc init .
- for i = 1 to 100
- drawer[] &= i
- sampler[] &= i
- .
+for i = 1 to 100
+ drawer[] &= i
+ sampler[] &= i
.
-init
-proc shuffle_drawer .
+subr shuffle_drawer
for i = len drawer[] downto 2
- r = random 1 i
+ r = randint i
swap drawer[r] drawer[i]
.
.
-func play_random .
+subr play_random
shuffle_drawer
for prisoner = 1 to 100
+ found = 0
for i = 1 to 50
- r = random 1 (100 - i + 1)
+ r = randint (100 - i)
card = drawer[sampler[r]]
- swap sampler[r] sampler[100 - i + 1]
- if card = prisoner : break 1
+ swap sampler[r] sampler[100 - i - 1]
+ if card = prisoner
+ found = 1
+ break 1
+ .
+ .
+ if found = 0
+ break 1
.
- if i > 50 : return 0
.
- return 1
.
-func play_optimal .
+subr play_optimal
shuffle_drawer
for prisoner = 1 to 100
reveal = prisoner
+ found = 0
for i = 1 to 50
card = drawer[reveal]
- if card = prisoner : break 1
+ if card = prisoner
+ found = 1
+ break 1
+ .
reveal = card
.
- if i > 50 : return 0
+ if found = 0
+ break 1
+ .
.
- return 1
.
-n = 100000
-for i to n
- win += play_random
+n = 10000
+win = 0
+for _ = 1 to n
+ play_random
+ win += found
.
print "random: " & 100.0 * win / n & "%"
#
win = 0
-for i to n
- win += play_optimal
+for _ = 1 to n
+ play_optimal
+ win += found
.
print "optimal: " & 100.0 * win / n & "%"
diff --git a/Task/100-prisoners/Ecstasy/100-prisoners.ecstasy b/Task/100-prisoners/Ecstasy/100-prisoners.ecstasy
deleted file mode 100644
index 9f66539ddd..0000000000
--- a/Task/100-prisoners/Ecstasy/100-prisoners.ecstasy
+++ /dev/null
@@ -1,49 +0,0 @@
-module OneHundredPrisoners {
- @Inject Console console;
-
- void run() {
- console.print($"# of executions: {attempts}");
- console.print($"Optimal play success rate: {simulate(tryOpt)}%");
- console.print($" Random play success rate: {simulate(tryRnd)}%");
- }
-
- Int attempts = 10000;
-
- Dec simulate(function Boolean(Int[]) allFoundNumber) {
- Int[] drawers = new Int[100](i->i);
- Int pardoned = 0;
- for (Int i : 1..attempts) {
- if (allFoundNumber(drawers.shuffled())) {
- ++pardoned;
- }
- }
- return (pardoned * 1000000 / attempts).toDec() / 10000;
- }
-
- Boolean tryRnd(Int[] drawers) {
- Inmates: for (Int inmate : 0..<100) {
- Int[] choices = drawers.shuffled();
- for (Int attempt : 0..<50) {
- if (drawers[choices[attempt]] == inmate) {
- continue Inmates;
- }
- }
- return False;
- }
- return True;
- }
-
- Boolean tryOpt(Int[] drawers) {
- Inmates: for (Int inmate : 0..<100) {
- Int choice = inmate;
- for (Int attempt : 0..<50) {
- if (drawers[choice] == inmate) {
- continue Inmates;
- }
- choice = drawers[choice];
- }
- return False;
- }
- return True;
- }
-}
diff --git a/Task/100-prisoners/Elixir/100-prisoners.ex b/Task/100-prisoners/Elixir/100-prisoners.elixir
similarity index 100%
rename from Task/100-prisoners/Elixir/100-prisoners.ex
rename to Task/100-prisoners/Elixir/100-prisoners.elixir
diff --git a/Task/100-prisoners/Icon/100-prisoners.icon b/Task/100-prisoners/Icon/100-prisoners.icon
deleted file mode 100644
index adcfba193c..0000000000
--- a/Task/100-prisoners/Icon/100-prisoners.icon
+++ /dev/null
@@ -1,40 +0,0 @@
-link "numbers"
-global lp # lucky prisoner list
-global p # starting prisoner list
-global pardoned # Count of trials with all prisoners pardoned
-
-procedure main(A)
- n := \A[1] | 100
- runs := \A[2] | 3000
-
- write(runs," runs using ",n," prisoners.")
- every (pardoned := 0, 1 to runs) do
- runTrial(simplePrisoner, n)
- write("Simple: ",fix(100*pardoned,runs,6,2),"%")
- every (pardoned := 0, 1 to runs) do
- runTrial(smartPrisoner, n)
- write("Smart: ",fix(100*pardoned,runs,6,2),"%")
-end
-
-procedure runTrial(pCode,n)
- d := mkDrawers(n)
- p := set([: 1 to n :])
- lp := set()
- every pCode(d, !p)
- if *lp = n then pardoned +:= 1
-end
-
-procedure mkDrawers(n)
- d := [: 1 to n :]
- every !d :=: ?d
- return d
-end
-
-procedure simplePrisoner(d, n)
- every 1 to *d/2 do if n = (i := ?d) then break (insert(lp,n))
-end
-
-procedure smartPrisoner(d, n)
- i := n
- every 1 to *d/2 do if n = (i := d[i]) then break (insert(lp,n))
-end
diff --git a/Task/100-prisoners/Julia/100-prisoners.jl b/Task/100-prisoners/Julia/100-prisoners.julia
similarity index 100%
rename from Task/100-prisoners/Julia/100-prisoners.jl
rename to Task/100-prisoners/Julia/100-prisoners.julia
diff --git a/Task/100-prisoners/Kotlin/100-prisoners.kts b/Task/100-prisoners/Kotlin/100-prisoners.kotlin
similarity index 100%
rename from Task/100-prisoners/Kotlin/100-prisoners.kts
rename to Task/100-prisoners/Kotlin/100-prisoners.kotlin
diff --git a/Task/100-prisoners/Pluto/100-prisoners.pluto b/Task/100-prisoners/Pluto/100-prisoners.pluto
deleted file mode 100644
index 029aec0590..0000000000
--- a/Task/100-prisoners/Pluto/100-prisoners.pluto
+++ /dev/null
@@ -1,55 +0,0 @@
-local fmt = require "fmt"
-require "table2"
-
-local function do_trials(trials, np, strategy)
- local pardoned = 0
- for _ = 1, trials do
- local drawers = table.create(100)
- for i = 1, 100 do drawers[i] = i end
- drawers:shuffle()
- local next_trial = false
- for p = 1, np do
- local next_prisoner = false
- if strategy == "optimal" then
- local prev = p
- for __ = 1, 50 do
- local curr = drawers[prev]
- if curr == p then
- next_prisoner = true
- break
- end
- prev = curr
- end
- else
- local opened = table.rep(100, false)
- for ___ = 1, 50 do
- local n
- while true do
- n = math.random(100)
- if !opened[n] then
- opened[n] = true
- break
- end
- end
- if drawers[n] == p then
- next_prisoner = true
- break
- end
- end
- end
- if !next_prisoner then
- next_trial = true
- break
- end
- end
- if !next_trial then pardoned += 1 end
- end
- local rf = pardoned / trials * 100
- fmt.print(" strategy = %-7s pardoned = %,6s relative frequency = %5.2f%%\n", strategy, pardoned, rf)
-end
-
-local trials = 1e5
-for {10, 100} as np do
- fmt.print("Results from %,s trials with %d prisoners:\n", trials, np)
- for {"random", "optimal"} as strategy do do_trials(trials, np, strategy) end
-end
diff --git a/Task/100-prisoners/PowerShell/100-prisoners.ps1 b/Task/100-prisoners/PowerShell/100-prisoners.psh
similarity index 100%
rename from Task/100-prisoners/PowerShell/100-prisoners.ps1
rename to Task/100-prisoners/PowerShell/100-prisoners.psh
diff --git a/Task/100-prisoners/Prolog/100-prisoners.pro b/Task/100-prisoners/Prolog/100-prisoners.pro
deleted file mode 100644
index 375a4acfc8..0000000000
--- a/Task/100-prisoners/Prolog/100-prisoners.pro
+++ /dev/null
@@ -1,43 +0,0 @@
-:- use_module(library(aggregate)).
-:- use_module(library(lists)).
-:- use_module(library(random)).
-
-random_subset(Length, List, Subset) :-
- random_permutation(List, Shuffled),
- length(Subset, Length),
- prefix(Subset, Shuffled).
-
-random_play :-
- numlist(1, 100, Prisoners),
- random_permutation(Prisoners, Drawers),
- forall(member(Prisoner, Prisoners), (
- random_subset(50, Drawers, CheckedDrawers),
- memberchk(Prisoner, CheckedDrawers)
- )).
-
-optimal_play :-
- numlist(1, 100, Prisoners),
- random_permutation(Prisoners, Drawers),
- forall(member(Prisoner, Prisoners), optimal_play(50, Prisoner, Prisoner, Drawers)).
-
-optimal_play(ChecksRemaining, Prisoner, NumberToCheck, Drawers) :-
- ChecksRemaining > 0,
- nth1(NumberToCheck, Drawers, NumberInDrawer),
- ( NumberInDrawer = Prisoner
- -> true
- ; ChecksRemaining0 is ChecksRemaining - 1,
- optimal_play(ChecksRemaining0, Prisoner, NumberInDrawer, Drawers)
- ).
-
-:- meta_predicate play_n_times(+, 0, -).
-play_n_times(PlayCount, Play, Percentage) :-
- aggregate_all(count, ( between(1, PlayCount, _), call(Play) ), Victories),
- Percentage is Victories / PlayCount * 100.
-
-main(SimulationCount) :-
- play_n_times(SimulationCount, random_play, RandomPlayPercent),
- play_n_times(SimulationCount, optimal_play, OptimalPlayPercent),
- format("Simulation count: ~d\nRandom play wins: ~f% of the simulations.\nOptimal play wins ~f% of the simulations.",
- [SimulationCount, RandomPlayPercent, OptimalPlayPercent]).
-
-:- main(100_000).
diff --git a/Task/100-prisoners/Rebol/100-prisoners.rebol b/Task/100-prisoners/Rebol/100-prisoners.rebol
deleted file mode 100644
index e7378827ab..0000000000
--- a/Task/100-prisoners/Rebol/100-prisoners.rebol
+++ /dev/null
@@ -1,77 +0,0 @@
-Rebol [
- title: "Rosetta code: 100 prisoners"
- file: %100_prisoners.r3
- url: https://rosettacode.org/wiki/100_prisoners
- needs: 3.0.0
- note: "Based on Red language implementation!"
-]
-
-random/seed 1
-prisoners: 100 ;; Total number of prisoners in the puzzle
-K_runs: 10000 ;; Number of simulation runs to perform
-
-rand_arr: make block! prisoners ;; Will hold the numbers 1..100
-repeat n prisoners [append rand_arr n] ;; Fill rand_arr with [1 2 3 ... 100]
-
-;; --------------------------------------------------
-;; strat_optimal: "optimal" strategy from the puzzle
-;; Each prisoner starts at the locker with their own number,
-;; then follows the chain inside the lockers until they find their number
-;; or until they have opened 50 lockers.
-;; Returns TRUE if the prisoner finds their own number, FALSE otherwise.
-;; --------------------------------------------------
-strat_optimal: func [pris /local locker][
- locker: pris ;; Start at 'own-numbered' locker
- loop 50 [
- if Board/:locker = pris [ return true ] ;; Found prisoner's number? -> success
- locker: Board/:locker ;; Move to the locker whose number was inside
- ]
- false ;; Not found within 50 tries -> fail
-]
-
-;; --------------------------------------------------
-;; strat_rand: "random" strategy
-;; Each prisoner picks a random permutation of lockers,
-;; then opens the first 50 in that random order, checking for their number.
-;; Returns TRUE if found, FALSE if not.
-;; --------------------------------------------------
-strat_rand: func [pris][
- random rand_arr ;; Randomize the locker opening order
- repeat n 50 [
- if Board/(rand_arr/:n) = pris [ return true ];; Check the nth randomly chosen locker
- ] ;; If found -> success
- false ;; Not found in 50 tries -> fail
-]
-
-;; --------------------------------------------------
-;; check_board: Runs a strategy for the entire set of prisoners
-;; Returns TRUE if *every prisoner* finds their number, FALSE if any fail.
-;; Argument 'strat' is the symbol 'optimal or 'rand
-;; --------------------------------------------------
-check_board: func [strat][
- ;; Choose which strategy function to run
- strat: either strat = 'optimal [:strat_optimal] [:strat_rand]
-
- ;; Test each prisoner with the chosen strategy
- repeat pris prisoners [
- unless strat pris [return false] ;; If any fail, run ends -> false
- ]
- true ;; All prisoners succeeded -> true
-]
-
-saved: saved_rand: 0 ;; Counters for the number of successful runs per strategy
-
-;; --------------------------------------------------
-;; Run the given number of simulations
-;; --------------------------------------------------
-loop K_runs [
- Board: random copy rand_arr ;; Create a random locker arrangement for this run
- if check_board 'optimal [saved: saved + 1] ;; Attempt "optimal" strategy, count full successes
- if check_board 'rand [saved_rand: saved_rand + 1] ;; Attempt "random" strategy, count full successes
-]
-
-;; At this point:
-;; - 'saved' = number of runs where *all prisoners* survived using optimal strategy
-;; - 'saved_rand' = number of runs where *all prisoners* survived using random strategy
-print ["runs" k_runs newline "Percent saved opt.strategy:" saved * 100.0 / k_runs ]
-print ["Percent saved random strategy:" saved_rand * 100.0 / k_runs ]
diff --git a/Task/100-prisoners/Rust/100-prisoners-1.rs b/Task/100-prisoners/Rust/100-prisoners-1.rust
similarity index 100%
rename from Task/100-prisoners/Rust/100-prisoners-1.rs
rename to Task/100-prisoners/Rust/100-prisoners-1.rust
diff --git a/Task/100-prisoners/Rust/100-prisoners-2.rs b/Task/100-prisoners/Rust/100-prisoners-2.rust
similarity index 100%
rename from Task/100-prisoners/Rust/100-prisoners-2.rs
rename to Task/100-prisoners/Rust/100-prisoners-2.rust
diff --git a/Task/100-prisoners/True-BASIC/100-prisoners.basic b/Task/100-prisoners/True-BASIC/100-prisoners.basic
deleted file mode 100644
index eacc0cac4a..0000000000
--- a/Task/100-prisoners/True-BASIC/100-prisoners.basic
+++ /dev/null
@@ -1,40 +0,0 @@
-FUNCTION trials(prisoners, iterations, optimal)
- DIM drawers(100)
- FOR i = 1 TO prisoners
- LET drawers(i) = i
- NEXT i
- FOR i = 1 TO iterations
- FOR k = 1 TO prisoners
- LET x = RND+1
- LET p = drawers(x)
- LET drawers(x) = drawers(k)
- LET drawers(k) = p
- NEXT k
- FOR prisoner = 1 TO prisoners
- LET found = false
- IF optimal<>0 THEN LET drawer = prisoner ELSE LET drawer = RND+1
- FOR j = 1 TO prisoners/2
- LET drawer = drawers(drawer)
- IF drawer = prisoner THEN
- LET found = true
- EXIT FOR
- END IF
- IF (NOT optimal<>0) THEN LET drawer = RND+1
- NEXT j
- IF (NOT found<>0) THEN EXIT FOR
- NEXT prisoner
- LET pardoned = pardoned+found
- NEXT i
- LET trials = (100*pardoned/iterations)
-END FUNCTION
-
-LET false = 0
-LET true = 1
-LET iterations = 10000
-PRINT "Simulation count: "; iterations
-FOR prisoners = 10 TO 100 STEP 90
- LET randon = trials(prisoners,iterations,false)
- LET optimal = trials(prisoners,iterations,true)
- PRINT "Prisoners: "; prisoners; ", random: "; randon; ", optimal: "; optimal
-NEXT prisoners
-END
diff --git a/Task/100-prisoners/VBScript/100-prisoners.vbs b/Task/100-prisoners/VBScript/100-prisoners.vb
similarity index 100%
rename from Task/100-prisoners/VBScript/100-prisoners.vbs
rename to Task/100-prisoners/VBScript/100-prisoners.vb
diff --git a/Task/100-prisoners/YAMLScript/100-prisoners.ys b/Task/100-prisoners/YAMLScript/100-prisoners.ys
deleted file mode 100644
index d44a0487cc..0000000000
--- a/Task/100-prisoners/YAMLScript/100-prisoners.ys
+++ /dev/null
@@ -1,79 +0,0 @@
-!YS-v0
-
-defn main(n=5000):
- :: https://rosettacode.org/wiki/100_prisoners
-
- random-successes optimal-successes run-count =:
- simulate-n-runs(n)
- .slice(q(random-successes optimal-successes run-count))
-
- say: "Probability of survival with random search: $F(random-successes / run-count)"
-
- say: "Probability of survival with ordered search: $F(optimal-successes / run-count)"
-
-defn simulate-n-runs(n):
- :: Simulate n runs of the 100 prisoner problem and returns a success count
- for each search method.
-
- loop random-successes 0, optimal-successes 0, run-count 0:
- # If we've done the loop n times
- if n == run-count:
- # return results
- then::
- random-successes :: random-successes
- optimal-successes :: optimal-successes
- run-count :: run-count
-
- # Otherwise, run for another batch of prisoners
- else:
- next-result =: simulate-100-prisoners()
- recur:
- (random-successes + next-result.random)
- (optimal-successes + next-result.optimal)
- run-count.++
-
-defn simulate-100-prisoners():
- :: Simulates all prisoners searching the same drawers by both strategies,
- returns map showing whether each was successful.
-
- # Create 100 drawers with randomly ordered prisoner numbers:
- drawers =: random-drawers()
- hash-map:
- :random try-luck(drawers search-50-random-drawers)
- :optimal try-luck(drawers search-50-optimal-drawers)
-
-defn try-luck(drawers drawer-searching-function):
- :: Returns 1 if all prisoners find their number otherwise 0.
-
- loop prisoners range(100):
- if prisoners.?:
- if prisoners.0.drawer-searching-function(drawers):
- recur: rest(prisoners)
- else: 0
- else: 1
-
-defn search-50-optimal-drawers(prisoner-number drawers):
- :: Open 50 drawers according to the agreed strategy, returning true if
- prisoner's number was found.
-
- loop next-drawer prisoner-number, drawers-opened 0:
- when drawers-opened != 50:
- result =: drawers.$next-drawer
- result == prisoner-number ||:
- recur: result drawers-opened.++
-
-defn search-50-random-drawers(prisoner-number drawers):
- :: Select 50 random drawers and return true if the prisoner's number was
- found.
-
- drawers:
- .shuffle()
- .take(50)
- .filter(eq(prisoner-number))
- .count()
- .eq(1)
-
-defn random-drawers():
- :: Returns a list of shuffled numbers.
-
- shuffle: range(100)
diff --git a/Task/15-puzzle-game/Ada/15-puzzle-game-1.adb b/Task/15-puzzle-game/Ada/15-puzzle-game-1.ada
similarity index 100%
rename from Task/15-puzzle-game/Ada/15-puzzle-game-1.adb
rename to Task/15-puzzle-game/Ada/15-puzzle-game-1.ada
diff --git a/Task/15-puzzle-game/Ada/15-puzzle-game-2.adb b/Task/15-puzzle-game/Ada/15-puzzle-game-2.ada
similarity index 100%
rename from Task/15-puzzle-game/Ada/15-puzzle-game-2.adb
rename to Task/15-puzzle-game/Ada/15-puzzle-game-2.ada
diff --git a/Task/15-puzzle-game/Ada/15-puzzle-game-3.adb b/Task/15-puzzle-game/Ada/15-puzzle-game-3.ada
similarity index 100%
rename from Task/15-puzzle-game/Ada/15-puzzle-game-3.adb
rename to Task/15-puzzle-game/Ada/15-puzzle-game-3.ada
diff --git a/Task/15-puzzle-game/Ada/15-puzzle-game-4.adb b/Task/15-puzzle-game/Ada/15-puzzle-game-4.ada
similarity index 100%
rename from Task/15-puzzle-game/Ada/15-puzzle-game-4.adb
rename to Task/15-puzzle-game/Ada/15-puzzle-game-4.ada
diff --git a/Task/15-puzzle-game/Arturo/15-puzzle-game.arturo b/Task/15-puzzle-game/Arturo/15-puzzle-game.arturo
index 9dcfaaed59..4d08ffb095 100644
--- a/Task/15-puzzle-game/Arturo/15-puzzle-game.arturo
+++ b/Task/15-puzzle-game/Arturo/15-puzzle-game.arturo
@@ -107,13 +107,17 @@ validMovement?: $[
movement :literal
][
pos: game\playerPosition
- case movement [
- 'up -> return (not? in? pos [0..3])
- 'down -> return (not? in? pos [12..15])
- 'left -> return (not? in? pos [0 4 8 12])
- 'right -> return (not? in? pos [3 7 11 15])
- any -> return false
- ]
+ case [movement]
+ when? [='up]
+ -> return (not? in? pos [0..3])
+ when? [='down]
+ -> return (not? in? pos [12..15])
+ when? [='left]
+ -> return (not? in? pos [0 4 8 12])
+ when? [='right]
+ -> return (not? in? pos [3 7 11 15])
+ else
+ -> return false
]
@@ -126,14 +130,13 @@ validMovement?: $[
;; will be returned the same input as a :string
parseInput: $[inp :string][
lowerInp: lower inp
- case lowerInp [
- "w" -> return 'up
- "a" -> return 'left
- "s" -> return 'down
- "d" -> return 'right
- "q" -> return 'quit
- any -> return inp
- ]
+ case [lowerInp]
+ when? [="w"] -> return 'up
+ when? [="a"] -> return 'left
+ when? [="s"] -> return 'down
+ when? [="d"] -> return 'right
+ when? [="q"] -> return 'quit
+ else -> return inp
]
;; Moves the player in Game's Table
@@ -152,7 +155,7 @@ movePlayer: $[
playerPosition :integer
relativePosition :integer
][
- if throws? [
+ try [
; 'otherPosition is the real index of the 'relativePosition
otherPosition: + playerPosition relativePosition
@@ -165,16 +168,20 @@ movePlayer: $[
; -- Updates player's status
game\playerPosition: otherPosition
game\movements: inc game\movements
- ] -> panic "'movement didn't checked."
+ ] else -> panic "'movement didn't checked."
]
- case movement [
- 'up -> updateGame game position neg 4
- 'down -> updateGame game position 4
- 'left -> updateGame game position neg 1
- 'right -> updateGame game position 1
- any -> panic "movement didn't check."
- ]
+ case [movement]
+ when? [='up]
+ -> (updateGame game position (neg 4))
+ when? [='down]
+ -> (updateGame game position (4))
+ when? [='left]
+ -> (updateGame game position (neg 1))
+ when? [='right]
+ -> (updateGame game position (1))
+ else -> panic "'movement didn't checked."
+
]
endGame: $[
@@ -202,12 +209,13 @@ runGame: $[sampleTable :block][
-> endGame "Exiting game..."
validInp: validInput? command
- switch validInp [
+ if? validInp [
validMov: validMovement? game command
(validMov)?
-> movePlayer game command
-> printWrongMovement command
- ] -> printWrongInput command
+ ] else
+ -> printWrongInput command
if sampleTable = game
-> endGame "Congratulations! You won!"
diff --git a/Task/15-puzzle-game/COBOL/15-puzzle-game.cob b/Task/15-puzzle-game/COBOL/15-puzzle-game.cobol
similarity index 100%
rename from Task/15-puzzle-game/COBOL/15-puzzle-game.cob
rename to Task/15-puzzle-game/COBOL/15-puzzle-game.cobol
diff --git a/Task/15-puzzle-game/Delphi/15-puzzle-game.pas b/Task/15-puzzle-game/Delphi/15-puzzle-game.delphi
similarity index 100%
rename from Task/15-puzzle-game/Delphi/15-puzzle-game.pas
rename to Task/15-puzzle-game/Delphi/15-puzzle-game.delphi
diff --git a/Task/15-puzzle-game/EasyLang/15-puzzle-game.easy b/Task/15-puzzle-game/EasyLang/15-puzzle-game.easy
index 17beb79a5a..e10e23f2a7 100644
--- a/Task/15-puzzle-game/EasyLang/15-puzzle-game.easy
+++ b/Task/15-puzzle-game/EasyLang/15-puzzle-game.easy
@@ -1,53 +1,68 @@
-sysconf topleft
-gbackground 432
-gtextsize 13
+sys topleft
+background 432
+textsize 13
len f[] 16
-proc draw .
- gclear
+proc draw . .
+ clear
for i = 1 to 16
- v = f[i]
- if v < 16
+ h = f[i]
+ if h < 16
x = (i - 1) mod 4 * 24 + 3
y = (i - 1) div 4 * 24 + 3
- gcolor 210
- grect x y 22 22
- if v < 10 : x += 2
- gcolor 885
- gtext x + 4 y + 6 v
+ color 210
+ move x y
+ rect 22 22
+ move x + 4 y + 6
+ if h < 10
+ move x + 6 y + 6
+ .
+ color 885
+ text h
.
.
.
-proc smiley .
+global done .
+proc smiley . .
s = 3.5
x = 86
y = 86
- gcolor 983
- gcircle x y 2.8 * s
- gcolor 000
- gcircle (x - s) (y - s) (s / 3)
- gcircle x + 3.5 y - 3.5 s / 3
- glinewidth s / 3
- gcurve [ x - s y + s x y + 2 * s x + s y + s ]
+ move x y
+ color 983
+ circle 2.8 * s
+ color 000
+ move x - s y - s
+ circle s / 3
+ move x + 3.5 y - 3.5
+ circle s / 3
+ linewidth s / 3
+ curve [ x - s y + s x y + 2 * s x + s y + s ]
.
-global done .
-proc init .
+proc init . .
done = 0
- for i = 1 to 16 : f[i] = i
+ for i = 1 to 16
+ f[i] = i
+ .
# shuffle
for i = 15 downto 2
- r = random 1 i
+ r = randint i
swap f[r] f[i]
.
# make it solvable
inv = 0
- for i = 1 to 15 : for j = 1 to i - 1
- if f[j] > f[i] : inv += 1
+ for i = 1 to 15
+ for j = 1 to i - 1
+ if f[j] > f[i]
+ inv += 1
+ .
+ .
.
- if inv mod 2 <> 0 : swap f[1] f[2]
- gtextsize 12
+ if inv mod 2 <> 0
+ swap f[1] f[2]
+ .
+ textsize 12
draw
.
-proc move_tile .
+proc move_tile . .
c = mouse_x div 25
r = mouse_y div 25
i = r * 4 + c + 1
@@ -62,7 +77,9 @@ proc move_tile .
.
draw
for i = 1 to 15
- if f[i] > f[i + 1] : return
+ if f[i] > f[i + 1]
+ return
+ .
.
done = 1
timer 0.5
@@ -70,7 +87,7 @@ proc move_tile .
on mouse_down
if done = 0
move_tile
- elif done = 3 and mouse_x > 75 and mouse_y > 75
+ elif done = 3
init
.
.
diff --git a/Task/15-puzzle-game/FuncSug/15-puzzle-game-1.funcsug b/Task/15-puzzle-game/FuncSug/15-puzzle-game-1.funcsug
deleted file mode 100644
index 9bbdbf9e3e..0000000000
--- a/Task/15-puzzle-game/FuncSug/15-puzzle-game-1.funcsug
+++ /dev/null
@@ -1,33 +0,0 @@
-#---------------
-# Prepare game
-#---------------
-# 'import' imports from JavaScript code
-var buttonList := import('buttonList')
-var emptyButton := import('emptyButton')
-
-#---------------
-# Shuffle cards
-#---------------
-repeat 100:
- var adj := calljs getAdjacentButtons(emptyButton)
- var button := calljs randomChoose(adj)
- waitSeconds(0)
- calljs exchange(button, emptyButton)
- emptyButton := button
-
-#---------------
-# Play
-#---------------
-while not (calljs isOrdered(buttonList)):
- var adj := listToPar(calljs getAdjacentButtons(emptyButton))
- parallel(for button in adj, select 1):
- select:
- awaitClickBeep(button)
- do:
- calljs exchange(button, emptyButton)
- emptyButton := button
-
-#----------
-# Success
-#----------
-displayNewMessage('Congratulations! You succeeded!')
diff --git a/Task/15-puzzle-game/FuncSug/15-puzzle-game-2.funcsug b/Task/15-puzzle-game/FuncSug/15-puzzle-game-2.funcsug
deleted file mode 100644
index 18dae3021f..0000000000
--- a/Task/15-puzzle-game/FuncSug/15-puzzle-game-2.funcsug
+++ /dev/null
@@ -1,53 +0,0 @@
-const $ = document.getElementById.bind(document)
-
-// Parameters
-//------------
-const width = 4
-const height = 4
-const size = width*height-1
-
-// Make cards
-//------------
-const gameTable = $('gameTable')
-gameTable.style.gridTemplateColumns = 'repeat(' + width + ', 60px)'
-for (let i=0; i' + (i+1) + ''
-}
-gameTable.innerHTML += ''
-const buttonList = document.querySelectorAll('#gameTable > button')
-const emptyButton = $(''+size)
-
-// Utils functions
-//-----------------
-function idToXy(id) {
- return [id%width, Math.floor(id/width)]
-}
-
-function xyToId(x,y) {
- return '' + (width*y + x)
-}
-
-function getAdjacentButtons(button) {
- const [x,y] = idToXy(button.id)
- const inTheXFrame = n=>(0<=n && n (0<=n && n $(xyToId(coord[0],coord[1]))
- const horizAdj = [x-1,x+1].filter(inTheXFrame).map(e=>[e,y])
- const verticAdj = [y-1,y+1].filter(inTheYFrame).map(e=>[x,e])
- return [...horizAdj, ...verticAdj].map( coordToButton )
-}
-
-function exchange(button, empty) {
- empty.innerHTML = button.innerHTML
- button.innerHTML = ''
-}
-
-function randomChoose(array) {
- const index = Math.floor(Math.random()*array.length)
- return array[index]
-}
-
-function isOrdered(buttonList) {
- const isAtRightPlace = button=>(button.innerHTML=='' || button.innerHTML==(1*button.id+1))
- return Array.from(buttonList).every(isAtRightPlace)
-}
diff --git a/Task/15-puzzle-game/FuncSug/15-puzzle-game-3.funcsug b/Task/15-puzzle-game/FuncSug/15-puzzle-game-3.funcsug
deleted file mode 100644
index fd210e543c..0000000000
--- a/Task/15-puzzle-game/FuncSug/15-puzzle-game-3.funcsug
+++ /dev/null
@@ -1,13 +0,0 @@
-#gameTable {
- display: inline-grid;
- row-gap: 10px;
-}
-
-#gameTable > button {
- width: 50px;
- height: 50px;
-}
-
-#gameTable > button:empty {
- visibility: hidden;
-}
diff --git a/Task/15-puzzle-game/Jq/15-puzzle-game.jq b/Task/15-puzzle-game/Jq/15-puzzle-game.jq
deleted file mode 100644
index 6ae4fa4c93..0000000000
--- a/Task/15-puzzle-game/Jq/15-puzzle-game.jq
+++ /dev/null
@@ -1,93 +0,0 @@
-include "MRG32k3a" {search: "."}; # see above
-
-# The following may be omitted if using the C implementation of jq
-def _nwise($n):
- def n: if length <= $n then . else .[0:$n] , (.[$n:] | n) end;
- n;
-
-### Generic utilities
-
-def lpad($len): tostring | ($len - length) as $l | (" " * $l) + .;
-
-# tabular print
-def tprint($columns; $width):
- reduce _nwise($columns) as $row ("";
- . + ($row|map(lpad($width)) | join(" ")) + "\n" );
-
-def array_swap($i; $j):
- if $j < $i then array_swap($j;$i)
- elif $i == $j then .
- else .[:$i] + [.[$j]] + .[$i+1:$j] + [.[$i]] + .[$j+1:]
- end ;
-
-### Pre-requisite: MRG32k3a
-# Input: an array to be shuffled
-# Output: the shuffled array using a seed based on `now`
-def shuffle:
- { prng: (seed(now | tostring | sub("^.*[.]";"") | tonumber)),
- array: . }
- | knuthShuffle
- | .array;
-
-### 15-Puzzle
-
-# Pretty-print the board
-def pp:
- .board | map(if . == 0 then "" end) | tprint(4;3);
-
-def row: ./4 | floor;
-def col: . % 4;
-
-def move($p):
- .zero as $zero
- | (.board |= array_swap($zero; $p))
- | .zero = $p
- | .n += 1 ;
-
-def SolvedBoard: [range(1;16), 0];
-
-# Output: {goal, n, board, zero}
-def init($easy):
- SolvedBoard as $init
- | { goal: $init,
- n: 0, # number of moves so far
- board: ($init | if $easy then array_swap(14;15) else shuffle end)
- }
- | .zero = (.board|index(0)) ;
-
-# If $m is a valid single-letter move, then emit the corresponding
-# index of the proposed new position.
-# Input must include .zero
-def isValidMove($m):
- if ($m == "u") then if (.zero|row) != 0 then .zero - 4 else false end
- elif ($m == "d") then if (.zero|row) != 3 then .zero + 4 else false end
- elif ($m == "r") then if (.zero|col) != 3 then .zero + 1 else false end
- elif ($m == "l") then if (.zero|col) != 0 then .zero - 1 else false end
- else false
- end;
-
-def instructions:
- "Please enter \"u\", \"d\", \"l\", or \"r\" to move the empty cell",
- "up, down, left, or right. You can also enter \"q\" to quit.",
- "Upper or lowercase is accepted and only the first character",
- "is important, so for example you could enter `up` instead of `u`.";
-
-def play($easy):
- def prompt:
- pp,
- if .board == .goal then "Congratulations. You solved the puzzle in \(.n) moves."
- else
- "Enter move #\(.n + 1) (u, d, l, r or q): ",
- ( (limit(1;inputs)[:1]|ascii_downcase) as $m
- | if $m == "q" then halt
- else isValidMove($m) as $p
- | if $p then move($p) | prompt
- else "Invalid move.", prompt
- end
- end)
- end;
-
- instructions,
- (init($easy) | prompt);
-
-play(ARGS.named.easy)
diff --git a/Task/15-puzzle-game/Julia/15-puzzle-game.jl b/Task/15-puzzle-game/Julia/15-puzzle-game.julia
similarity index 100%
rename from Task/15-puzzle-game/Julia/15-puzzle-game.jl
rename to Task/15-puzzle-game/Julia/15-puzzle-game.julia
diff --git a/Task/15-puzzle-game/Kotlin/15-puzzle-game.kts b/Task/15-puzzle-game/Kotlin/15-puzzle-game.kotlin
similarity index 100%
rename from Task/15-puzzle-game/Kotlin/15-puzzle-game.kts
rename to Task/15-puzzle-game/Kotlin/15-puzzle-game.kotlin
diff --git a/Task/15-puzzle-game/OCaml/15-puzzle-game.ml b/Task/15-puzzle-game/OCaml/15-puzzle-game.ocaml
similarity index 100%
rename from Task/15-puzzle-game/OCaml/15-puzzle-game.ml
rename to Task/15-puzzle-game/OCaml/15-puzzle-game.ocaml
diff --git a/Task/15-puzzle-game/PascalABC.NET/15-puzzle-game.pas b/Task/15-puzzle-game/PascalABC.NET/15-puzzle-game.pas
deleted file mode 100644
index 2d5275fb8f..0000000000
--- a/Task/15-puzzle-game/PascalABC.NET/15-puzzle-game.pas
+++ /dev/null
@@ -1,178 +0,0 @@
-// Игра в 15 PABCWork.NET\Samples\Games\15.pas
-uses GraphABC,ABCObjects,ABCButtons;
-
-const
-/// размер поля
- n = 4;
-/// размер фишки
- sz = 100;
-/// зазор между фишками
- zz = 10;
-/// отступ от левого и правого краев
- x0 = 20;
-/// отступ от верхнего и нижнего краев
- y0 = 20;
-
-var
- p: array [1..n,1..n] of SquareABC;
- digits: array [1..n*n-1] of integer;
-
- MeshButton: ButtonABC;
- StatusRect: RectangleABC;
-
- EmptyCellX,EmptyCellY: integer;
- MovesCount: integer;
- EndOfGame: boolean; // True если все фишки стоят на своих местах
-
-// Поменять местами две фишки
-procedure Swap(var p,p1: SquareABC);
-begin
- PABCSystem.Swap(p,p1);
- var i := p.Left;
- p.Left := p1.Left;
- p1.Left := i;
- i := p.Top;
- p.Top := p1.Top;
- p1.Top := i;
-end;
-
-// Определить, являются ли клетки соседями
-function Neighbours(x1,y1,x2,y2: integer): boolean;
-begin
- Result := (Abs(x1-x2)=1) and (y1=y2) or (Abs(y1-y2)=1) and (x1=x2)
-end;
-
-// Заполнить вспомогательный массив цифр
-procedure FillDigitsArr;
-begin
- for var i:=1 to n*n-1 do
- digits[i] := i;
-end;
-
-// Перемешать вспомогательный массив цифр. Количество обменов должно быть четным
-procedure MixDigitsArr;
-var x: integer;
-begin
- for var i:=1 to n*n-1 do
- begin
- repeat
- x := Random(15)+1;
- until x<>i;
- Swap(digits[i],digits[x]);
- end;
- if n mod 2=0 then
- Swap(digits[1],digits[2]); // количество обменов должно быть четным
-end;
-
-// Заполнить двумерный массив фишек. Вместо пустой ячейки - белая фишка с числом 0
-procedure Fill15ByDigitsArr;
-begin
- Swap(p[EmptyCellY,EmptyCellX],p[n,n]); // Переместить пустую фишку в правый нижний угол
- EmptyCellX := n;
- EmptyCellY := n;
- var i := 1;
- for var y:=1 to n do
- for var x:=1 to n do
- begin
- if x*y=n*n then exit;
- p[y,x].Number := digits[i];
- i += 1;
- end;
-end;
-
-// Перемешать массив фишек
-procedure Mix15;
-begin
- MixDigitsArr;
- Fill15ByDigitsArr;
- MovesCount := 0;
- EndOfGame := False;
- StatusRect.Text := 'Количество ходов: '+IntToStr(MovesCount);
- StatusRect.Color := RGB(200,200,255);
-end;
-
-// Создать массив фишек
-procedure Create15;
-begin
- EmptyCellX := n;
- EmptyCellY := n;
- for var x:=1 to n do
- for var y:=1 to n do
- begin
- p[y,x] := new SquareABC(x0+(x-1)*(sz+zz),y0+(y-1)*(sz+zz),sz,clMoneyGreen);
- p[y,x].BorderColor := clGreen;
- p[y,x].BorderWidth := 2;
- p[y,x].TextScale := 0.7;
- end;
- p[EmptyCellY,EmptyCellX].Color := clWhite;
- p[EmptyCellY,EmptyCellX].BorderColor := clWhite;
- FillDigitsArr;
- MixDigitsArr;
- Fill15ByDigitsArr;
-end;
-
-// Проверить, все ли фишки стоят на своих местах
-function IsSolution: boolean;
-begin
- Result:=True;
- var i:=1;
- for var y:=1 to n do
- for var x:=1 to n do
- begin
- if p[y,x].Number<>i then
- begin
- Result:=False;
- break;
- end;
- i += 1;
- if i=n*n then i:=0;
- end;
-end;
-
-procedure MouseDown(x,y,mb: integer);
-begin
- if EndOfGame then // Если все фишки на своих местах, то не реагировать на мышь и ждать нажатия кнопки "Перемешать"
- exit;
- if ObjectUnderPoint(x,y)=nil then // Eсли мы щелкнули не на объекте, то не реагировать на мышь
- exit;
- var fx := (x-x0) div (sz+zz) + 1; // Вычислить координаты на доске для ячейки, на которой мы щелкнули мышью
- var fy := (y-y0) div (sz+zz) + 1;
- if (fx>n) or (fy>n) then
- exit;
- if Neighbours(fx,fy,EmptyCellX,EmptyCellY) then // Если ячейка соседствует с пустой, то поменять их местами
- begin
- Swap(p[EmptyCellY,EmptyCellX],p[fy,fx]);
- EmptyCellX := fx;
- EmptyCellY := fy;
- Inc(MovesCount);
- StatusRect.Text := 'Количество ходов: ' + MovesCount;
- if IsSolution then
- begin
- StatusRect.Text := 'Победа! Сделано ходов: ' + MovesCount;
- StatusRect.Color := RGB(255,200,200);
- EndOfGame := True;
- end
- end;
-end;
-
-begin
- SetSmoothingOff;
- Window.Title := 'Игра в 15';
- Window.IsFixedSize := True;
- SetWindowSize(2*x0+(sz+zz)*n-zz,2*y0+(sz+zz)*n-zz+90);
-
- EndOfGame := False;
- Create15;
-
- MeshButton := ButtonABC.Create((WindowWidth-200) div 2,2*y0+(sz+zz)*n-zz,200,'Перемешать',clLightGray);
- MeshButton.OnClick := Mix15;
- StatusRect := new RectangleABC(0,WindowHeight-40,WindowWidth,40,RGB(200,200,255));
- StatusRect.TextVisible := True;
- StatusRect.Text := 'Количество ходов: '+IntToStr(MovesCount);
- StatusRect.BorderWidth := 2;
- StatusRect.BorderColor := RGB(80,80,255);
-
- MovesCount := 0;
-
- OnMouseDown := MouseDown;
-end.
diff --git a/Task/15-puzzle-game/PowerShell/15-puzzle-game.ps1 b/Task/15-puzzle-game/PowerShell/15-puzzle-game.psh
similarity index 100%
rename from Task/15-puzzle-game/PowerShell/15-puzzle-game.ps1
rename to Task/15-puzzle-game/PowerShell/15-puzzle-game.psh
diff --git a/Task/15-puzzle-game/QBasic/15-puzzle-game.basic b/Task/15-puzzle-game/QBasic/15-puzzle-game.basic
deleted file mode 100644
index 14a9e86aef..0000000000
--- a/Task/15-puzzle-game/QBasic/15-puzzle-game.basic
+++ /dev/null
@@ -1,133 +0,0 @@
-DECLARE SUB printPuzzle ()
-DECLARE SUB buildBoard (level AS INTEGER)
-DECLARE FUNCTION introAndLevel! ()
-DECLARE FUNCTION isMoveValid! (piece AS INTEGER, piecePos AS INTEGER, emptyPos AS INTEGER)
-DECLARE FUNCTION piecePosition! (piece AS INTEGER)
-DECLARE FUNCTION isPuzzleComplete! ()
-
-DIM SHARED d(16) AS INTEGER
-DIM SHARED dbp$(16) ' Board pieces
-DIM SHARED sh(3) AS INTEGER
-DIM level AS INTEGER, x AS INTEGER, y AS INTEGER, z AS INTEGER
-
-' Main Program
-level = introAndLevel
-buildBoard (level)
-DO
- printPuzzle
- PRINT "To move a piece, enter its number (0 to quit): "
- INPUT x
- IF x = 0 THEN END
-
- WHILE isMoveValid(x, y, z) = 0
- PRINT "Wrong move."
- printPuzzle
- PRINT "To move a piece, enter its number (0 to quit): "
- INPUT x
- IF x = 0 THEN END
- WEND
-
- d(z) = x
- d(y) = 0
- CLS
-LOOP UNTIL isPuzzleComplete
-PRINT "YOU WON!"
-END
-
-SUB buildBoard (level AS INTEGER)
- ' Set pieces in correct order first
- FOR p = 1 TO 15
- d(p) = p
- NEXT p
- d(16) = 0 ' 0 = empty piece/slot
- z = 16 ' z = empty position
-
- PRINT
- PRINT "Shuffling pieces";
- RANDOMIZE TIMER
- FOR n = 1 TO sh(level)
- PRINT ".";
- DO
- x = INT(RND * 4) + 1
- r = 0
- SELECT CASE x
- CASE 1: r = z - 4
- CASE 2: r = z + 4
- CASE 3: IF (z - 1) MOD 4 <> 0 THEN r = z - 1
- CASE 4: IF z MOD 4 <> 0 THEN r = z + 1
- END SELECT
- LOOP WHILE (r < 1) OR (r > 16)
- d(z) = d(r)
- z = r
- d(z) = 0
- NEXT n
- CLS
-END SUB
-
-FUNCTION introAndLevel
- CLS
- sh(1) = 10
- sh(2) = 50
- sh(3) = 100
- PRINT "15 PUZZLE GAME": PRINT: PRINT
- PRINT "Please enter level of difficulty,"
- DO
- PRINT "1 (easy), 2 (medium) or 3 (hard): ";
- INPUT level
- LOOP WHILE (level < 1) OR (level > 3)
- introAndLevel = level
-END FUNCTION
-
-FUNCTION isMoveValid (piece AS INTEGER, piecePos AS INTEGER, emptyPos AS INTEGER)
- mv = 0
- IF (piece >= 1) AND (piece <= 15) THEN
- piecePos = piecePosition(piece)
- emptyPos = piecePosition(0)
- IF (piecePos - 4 = emptyPos) OR (piecePos + 4 = emptyPos) OR ((piecePos - 1 = emptyPos) AND (emptyPos MOD 4 <> 0)) OR ((piecePos + 1 = emptyPos) AND (piecePos MOD 4 <> 0)) THEN
- mv = 1
- END IF
- END IF
- isMoveValid = mv
-END FUNCTION
-
-FUNCTION isPuzzleComplete
- pc = 0
- p = 1
- WHILE (p < 16) AND (d(p) = p)
- p = p + 1
- WEND
- IF p = 16 THEN pc = 1
- isPuzzleComplete = pc
-END FUNCTION
-
-FUNCTION piecePosition (piece AS INTEGER)
- p = 1
- WHILE d(p) <> piece
- p = p + 1
- IF p > 16 THEN
- PRINT "UH OH!"
- STOP
- END IF
- WEND
- piecePosition = p
-END FUNCTION
-
-SUB printPuzzle
- FOR p = 1 TO 16
- IF d(p) = 0 THEN
- dbp$(p) = " "
- ELSE
- dbp$(p) = RIGHT$(" " + LTRIM$(STR$(d(p))), 3) + " "
- END IF
- NEXT p
-
- PRINT "+-----+-----+-----+-----+"
- PRINT "|"; dbp$(1); "|"; dbp$(2); "|"; dbp$(3); "|"; dbp$(4); "|"
- PRINT "+-----+-----+-----+-----+"
- PRINT "|"; dbp$(5); "|"; dbp$(6); "|"; dbp$(7); "|"; dbp$(8); "|"
- PRINT "+-----+-----+-----+-----+"
- PRINT "|"; dbp$(9); "|"; dbp$(10); "|"; dbp$(11); "|"; dbp$(12); "|"
- PRINT "+-----+-----+-----+-----+"
- PRINT "|"; dbp$(13); "|"; dbp$(14); "|"; dbp$(15); "|"; dbp$(16); "|"
- PRINT "+-----+-----+-----+-----+"
-END SUB
diff --git a/Task/15-puzzle-game/Rebol/15-puzzle-game.rebol b/Task/15-puzzle-game/REBOL/15-puzzle-game.rebol
similarity index 100%
rename from Task/15-puzzle-game/Rebol/15-puzzle-game.rebol
rename to Task/15-puzzle-game/REBOL/15-puzzle-game.rebol
diff --git a/Task/15-puzzle-game/Rust/15-puzzle-game.rs b/Task/15-puzzle-game/Rust/15-puzzle-game.rust
similarity index 100%
rename from Task/15-puzzle-game/Rust/15-puzzle-game.rs
rename to Task/15-puzzle-game/Rust/15-puzzle-game.rust
diff --git a/Task/15-puzzle-game/Scheme/15-puzzle-game.scm b/Task/15-puzzle-game/Scheme/15-puzzle-game.ss
similarity index 100%
rename from Task/15-puzzle-game/Scheme/15-puzzle-game.scm
rename to Task/15-puzzle-game/Scheme/15-puzzle-game.ss
diff --git a/Task/15-puzzle-game/VBScript/15-puzzle-game.vbs b/Task/15-puzzle-game/VBScript/15-puzzle-game.vb
similarity index 100%
rename from Task/15-puzzle-game/VBScript/15-puzzle-game.vbs
rename to Task/15-puzzle-game/VBScript/15-puzzle-game.vb
diff --git a/Task/15-puzzle-game/Zig/15-puzzle-game.zig b/Task/15-puzzle-game/Zig/15-puzzle-game.zig
deleted file mode 100644
index 431b73eab5..0000000000
--- a/Task/15-puzzle-game/Zig/15-puzzle-game.zig
+++ /dev/null
@@ -1,91 +0,0 @@
-const std = @import("std");
-const stdout = std.io.getStdOut().writer();
-
-const tokens = [16][]const u8{ " 1", " 2", " 3", " 4", " 5", " 6", " 7", " 8", " 9", "10", "11", "12", "13", "14", "15", " " };
-
-const empty_token = 15;
-var empty: u8 = empty_token;
-var cells: [16]u8 = undefined;
-var invalid: bool = false;
-
-const Move = enum { no, up, down, left, right };
-
-fn showBoard() !void {
- try stdout.writeAll("\n");
-
- var solved = true;
- var i: u8 = 0;
- while (i < 16) : (i += 1) {
- try stdout.print(" {s} ", .{tokens[cells[i]]});
- if ((i + 1) % 4 == 0) try stdout.writeAll("\n");
- if (i != cells[i]) solved = false;
- }
-
- try stdout.writeAll("\n");
-
- if (solved) {
- try stdout.writeAll("\n\n** You did it! **\n\n");
- std.posix.exit(0);
- }
-}
-
-fn updateToken(move: Move) !void {
- const newEmpty = switch (move) {
- Move.up => if (empty / 4 < 3) empty + 4 else empty,
- Move.down => if (empty / 4 > 0) empty - 4 else empty,
- Move.left => if (empty % 4 < 3) empty + 1 else empty,
- Move.right => if (empty % 4 > 0) empty - 1 else empty,
- else => empty,
- };
-
- if (empty == newEmpty) {
- invalid = true;
- } else {
- invalid = false;
- cells[empty] = cells[newEmpty];
- cells[newEmpty] = empty_token;
- empty = newEmpty;
- }
-}
-
-fn waitForMove() !Move {
- const reader = std.io.getStdIn().reader();
- if (invalid) try stdout.writeAll("(invalid) ");
- try stdout.writeAll("enter u/d/l/r or q: ");
- const input = try reader.readBytesNoEof(2);
- switch (std.ascii.toLower(input[0])) {
- 'q' => std.posix.exit(0),
- 'u' => return Move.up,
- 'd' => return Move.down,
- 'l' => return Move.left,
- 'r' => return Move.right,
- else => return Move.no,
- }
-}
-
-fn shuffle(moves: u8) !void {
- var random = std.Random.DefaultPrng.init(@intCast(std.time.microTimestamp()));
- const rand = random.random();
- var n: u8 = 0;
- while (n < moves) {
- const move: Move = rand.enumValue(Move);
- try updateToken(move);
- if (!invalid) n += 1;
- }
- invalid = false;
-}
-
-pub fn main() !void {
- var n: u8 = 0;
- while (n < 16) : (n += 1) {
- cells[n] = n;
- }
-
- try shuffle(50);
- try showBoard();
-
- while (true) {
- try updateToken(try waitForMove());
- try showBoard();
- }
-}
diff --git a/Task/15-puzzle-solver/Ada/15-puzzle-solver.adb b/Task/15-puzzle-solver/Ada/15-puzzle-solver.ada
similarity index 100%
rename from Task/15-puzzle-solver/Ada/15-puzzle-solver.adb
rename to Task/15-puzzle-solver/Ada/15-puzzle-solver.ada
diff --git a/Task/15-puzzle-solver/C-sharp/15-puzzle-solver.cs b/Task/15-puzzle-solver/C-sharp/15-puzzle-solver.cs
index 591dbc1385..16d2c2a882 100644
--- a/Task/15-puzzle-solver/C-sharp/15-puzzle-solver.cs
+++ b/Task/15-puzzle-solver/C-sharp/15-puzzle-solver.cs
@@ -1,97 +1,1466 @@
-// Translated from C++ by Nigel Galloway
+using System;
+using System.IO;
+using System.IO.Compression;
+using System.Runtime.InteropServices;
+using System.Text;
-new FifteenSolver(8, 0xFE169B4C0A73D852).Solve();
-
-class FifteenSolver
+public static class Program
{
- readonly int[] RowIndex = [3, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3];
- readonly int[] ColIndex = [3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2];
- int n = 0, maxCost = 0;
- readonly int[] Hole = new int[100];
- readonly char[] Move = new char[100];
- readonly int[] Cost = new int[100];
- readonly ulong[] State = new ulong[100];
-
- bool Scan()
+ public static void Main(string[] args)
{
- if (Cost[n] < maxCost)
- return Explore();
-
- if (State[n] == 0x123456789ABCDEF0)
+ byte[] t = new byte[]
{
- Console.WriteLine($"Solution found in {n} moves :");
+ 15, 14, 1, 6,
+ 9, 11, 4, 12,
+ 0, 10, 7, 3,
+ 13, 8, 5, 2,
+ };
- for (var g = 1; g <= n; ++g)
- Console.Write(Move[g]);
-
- Console.WriteLine();
- return true;
- }
-
- if (Cost[n] == maxCost)
- return Explore();
-
- return false;
- }
-
- bool Explore()
- {
- if (Move[n] != 'u' && Hole[n] / 4 < 3) { Down(); ++n; if (Scan()) return true; --n; }
- if (Move[n] != 'd' && Hole[n] / 4 > 0) { Up(); ++n; if (Scan()) return true; --n; }
- if (Move[n] != 'l' && Hole[n] % 4 < 3) { Right(); ++n; if (Scan()) return true; --n; }
- if (Move[n] != 'r' && Hole[n] % 4 > 0) { Left(); ++n; if (Scan()) return true; --n; }
- return false;
- }
-
- void Down()
- {
- var shift = (11 - Hole[n]) * 4;
- var a = State[n] & (0xFUL << shift);
- Hole[n + 1] = Hole[n] + 4;
- State[n + 1] = State[n] - a + (a << 16);
- Move[n + 1] = 'd';
- Cost[n + 1] = Cost[n] + (RowIndex[a >> shift] <= Hole[n] / 4 ? 0 : 1);
- }
-
- void Up()
- {
- var shift = (19 - Hole[n]) * 4;
- var a = State[n] & (0xFUL << shift);
- Hole[n + 1] = Hole[n] - 4;
- State[n + 1] = State[n] - a + (a >> 16);
- Move[n + 1] = 'u';
- Cost[n + 1] = Cost[n] + (RowIndex[a >> shift] >= Hole[n] / 4 ? 0 : 1);
- }
-
- void Right()
- {
- var shift = (14 - Hole[n]) * 4;
- var a = State[n] & (0xFUL << shift);
- Hole[n + 1] = Hole[n] + 1;
- State[n + 1] = State[n] - a + (a << 4);
- Move[n + 1] = 'r';
- Cost[n + 1] = Cost[n] + (ColIndex[a >> shift] <= Hole[n] % 4 ? 0 : 1);
- }
-
- void Left()
- {
- int shift = (16 - Hole[n]) * 4;
- ulong a = State[n] & (0xFUL << shift);
- Hole[n + 1] = Hole[n] - 1;
- State[n + 1] = State[n] - a + (a >> 4);
- Move[n + 1] = 'l';
- Cost[n + 1] = Cost[n] + (ColIndex[a >> shift] >= Hole[n] % 4 ? 0 : 1);
- }
-
- public FifteenSolver(int n, ulong g)
- {
- Hole[0] = n;
- State[0] = g;
- }
-
- public void Solve()
- {
- for (; !Scan(); ++maxCost)
- ;
+ Ultimate.SolvePuzzle15(t);
+ }
+}
+
+public static class NativeLibraryHelper
+{
+ [DllImport("kernel32.dll")]
+ public static extern IntPtr LoadLibrary(string DllToLoad);
+
+ [DllImport("kernel32.dll")]
+ public static extern IntPtr GetProcAddress(IntPtr DllHandle, string ProcedureName);
+
+ [DllImport("kernel32.dll")]
+ public static extern bool FreeLibrary(IntPtr DllHandle);
+
+ public static T GetMethod(IntPtr DllHandle, string MethodName) where T : class
+ {
+ T Method = null;
+
+ IntPtr MethodHandle = NativeLibraryHelper.GetProcAddress(DllHandle, MethodName);
+ if (MethodHandle != IntPtr.Zero)
+ {
+ Method = (T)((Object)Marshal.GetDelegateForFunctionPointer(MethodHandle, typeof(T)));
+ }
+
+ return Method;
+ }
+}
+
+public static class Ultimate
+{
+ [UnmanagedFunctionPointer(CallingConvention.StdCall)]
+ [return: MarshalAs(UnmanagedType.LPWStr)]
+ private delegate string GetSolverName();
+
+ [UnmanagedFunctionPointer(CallingConvention.StdCall)]
+ [return: MarshalAs(UnmanagedType.LPWStr)]
+ private delegate string CallSolver([In] [Out] byte[] Array, int Len);
+
+ public static void SolvePuzzle15(byte[] t)
+ {
+ string LibPath = "Solver.dll";
+
+ byte[] ZipedData = Convert.FromBase64String(Data.ToString());
+ byte[] UnzipedData = DecompressGZipArhive(new MemoryStream(ZipedData));
+ File.WriteAllBytes(LibPath, UnzipedData);
+
+ IntPtr DllHandle = NativeLibraryHelper.LoadLibrary(LibPath);
+
+ GetSolverName GetSolverName = NativeLibraryHelper.GetMethod(DllHandle, "GetSolverName");
+ Console.WriteLine("Hi! My name is {0}.", GetSolverName());
+ Console.WriteLine();
+
+ Console.WriteLine("And I try solve puzzle15 with board:");
+ for (int i = 0; i < t.Length; i += 4) Console.WriteLine("{0} {1} {2} {3}", t[i], t[i + 1], t[i + 2], t[i + 3]);
+ Console.WriteLine();
+
+ CallSolver SolveThis = NativeLibraryHelper.GetMethod(DllHandle, "SolvePuzzle15");
+
+ DateTime StartTime = DateTime.Now;
+ string Path = SolveThis(t, t.Length);
+
+ if (!String.IsNullOrEmpty(Path))
+ {
+ Path = Path.Trim();
+ Console.WriteLine("Ready! Solution path is : {0}", Path);
+ Console.WriteLine("Moves {0} and Time: {1}", Path.Length, (DateTime.Now - StartTime).ToString());
+ Console.WriteLine();
+ Console.WriteLine("Bye bye :)");
+ }
+ else
+ {
+ Console.WriteLine("Sorry! I do know a solution :(");
+ }
+
+ NativeLibraryHelper.FreeLibrary(DllHandle);
+ File.Delete(LibPath);
+
+ Console.ReadKey();
+ }
+
+ private static byte[] DecompressGZipArhive(Stream FStream)
+ {
+ if (FStream == null) return new byte[0];
+
+ FStream.Seek(0, SeekOrigin.Begin);
+ MemoryStream OutStream = new MemoryStream();
+
+ using (GZipStream DecompressedStream = new GZipStream(FStream, CompressionMode.Decompress))
+ {
+ byte[] Buffer = new byte[1024];
+ int CountReadingBytes = 0;
+
+ while ((CountReadingBytes = DecompressedStream.Read(Buffer, 0, Buffer.Length)) > 0)
+ {
+ OutStream.Write(Buffer, 0, CountReadingBytes);
+ }
+ }
+ return OutStream.ToArray();
+ }
+
+ // no way make normal long string literal
+ private delegate StringBuilder AppendDelegate(string v);
+ private static StringBuilder Data = new StringBuilder(100000);
+ static Ultimate()
+ {
+ AppendDelegate a = Data.Append;
+ a("H4sICB6/w2MCAFBhc2NhbFNvbHZlci54ODYtNjQuZGxsAOxaZ3QbRRC+kyVHFg7nBAdCaDYYiKg21ab6ggR7cKL3HgJHDcWRqK");
+ a("5RDDof4on26I/OAx79QTDVkmwcOTTboTgxxYQm+yimOcYU8c2eZORLaP/xi253dmdnZmdnZmd3EzgxJhQIguDEL5MRhHbB+qsV");
+ a("/vmvGb/1t3hxfeHZojfL20X1zfKjzzl3UdnFdRedXTd/YdmC+RdeeFGw7IyzyupCF5ade2GZ77CjyhZedOZZO02f7qnI0jjcLw");
+ a("hnXl00he6osNOW6zkKNozf7hC6thGE448RhJINBXzww1cUsnWHJTfBztzgIWcO4PPi3Tn8/AqKKS1POYVzqLzHKRw+RZgC4avd");
+ a("8uC4Uzh9tvCf/8653ynMLvjr/p2CZ10eRIk5WwLdSZObilMmCKfvdOb84HzUoRfIDJy5JLNjCl4tyOxUR4jg6xGhE/QXo0ythV");
+ a("e708UcD3O05irsgfIdlHa8MxYtQpWvhVDpXLc9EN8Djjya6m76xIBHLD0o7fKda/HdfTrXOQwJZfE68M7KzoOvUZbeHJR2+erO");
+ a("uuCiBQLWhq8RcFBuuhbePOH/vyl/ma3PuNE5BT7RBh9pgw+2wfNs8F42eBcbvJ0N3tIGz7HBM22wxwY7bPDEDVPh723wiA1ebY");
+ a("NX2eB+G7zcBidt8Is2+Bkb/KgNvs8G326Db7DBbTZ4sQ2+0gbX2eDzbPAZNvhEG3ykDT7YBs+zwXvZ4F1s8HY2eEsbPMcGz7TB");
+ a("HhvssMET19vW3waP2ODVNniVDe63wcttcNIGv2iDn7HBj9rg+2zw7Tb4BhvcZoMX2+ArbXCdDT7PBp9hg0+0wUfa4INt8DwbvJ");
+ a("cN3sUGb2eDt7TBc2zwTBvsscEOGzwRs62/DR6xwatt8Cob3G+Dl/8DnLTBL/4D/IwNftQG32eDb7fBN9jgNhu82AZfOQVuc213");
+ a("h0OIuHZD3tEJmEXPrBhgeqrb1YIMRGS6a9XGTkGfVbqTU1B112Yo0qlMJsOi0/tucwhp9S1s8zRoLkbz8a6Nl4NUjv4xTH+Tuo");
+ a("dYdFYZOlg0MJ5+/qrsoLJTcoh5+J9TT5zpp6SZHhpl+us+vZst84/zjEKNulb2ZMnEThOEqvjZ0WMzrf31e8ntGfzJ4bioGoFx");
+ a("ZUHKLy0tLQosSCmJTxwv7IPBqrdHWbE6oK9Q9ZWsKIFZ+mqSTW/GGEA9KbdT2pVe7ytRQMtweh7N0oAQBoSIniVA1KnzgQSbVw");
+ a("okymh6llVJp+9keVOzzWdI1ntzE0E5mi3TKIjlck7yl9+J7THjnOyFmkMAMMpJlx8sAPCnWWs8NA16TuzgFJjeyYU9i4TVByDv");
+ a("0J+yCrn1TD/Ukr9K+X8s/NXcTH+MhbusrrPYve5sF8FgMDRlCDOcFfkNqh5n3j5pyfWoLypiYkpavBCZphIed0vXLkDjWHJacM");
+ a("+xpBgsbnPOUDKpiIOFk+JY0hGUNAMt4bRD06nNMZZ0BqdbTU7e4gzoCSUx7ApVW5WC4KwYAwLjvW4l0xMaVcJD0wKt8cZSaYtm");
+ a("kgdMwCGTBKfQD51Ky8+UNdcVMVRKIOGuGFjGDN+MIdU4egYMbN6Qqh+ZBilqHKXGcTSOonE8tALEtzDD7aAgSFsswRflbOcMab");
+ a("ZvRi1rSRJDsPmKtYwQ8fZawKBfqxrqjDiRSqlS58FxfI5MUVsvtQ1QWy+1DWSoNSsJtQ5RaxptWUGobRQfiPKw0pImHkrLOBVS");
+ a("+GwsuPTE6PBKmIsqJknf9fNJ13uQrtdjmeU5dXNVs/CII0/dXNVoc06qO6fqfXOqLkW3m7QN3UDhf2p6jqZpOW1osTxGdn2PZj");
+ a("J1u4EK1/dsmlEJVDsbqi3J6tutGqUz0OZW9Zmhd0nbww2YF1d4dj2h2+Z8tVv6Tubpe4Tru5roV5LGqkljldQ2l9rKqG0utZVx");
+ a("fWclodbZ1FqCNksQanLjMzP0qF3b52W1/R603WnznwkYep1AyEMZKl4Qs38B6cnEWGJasGosgRXxRUQWTuA3Io4lHMFizadTg4");
+ a("NWZizhBAKHnbQqDHEivHp/lkgXhra3gGkACoLTYyrHcjPo4UfW2t/I6WYSWIbQT51sX9L+or3zVgjItaoux/FL4deL3wAGoxjC");
+ a("L43fKH7joffNW6QtfBY+dIAB+KToQ7ZKYzgwRJ80fcgwMe5tUssJmUm1aLJ0YUrRU5p0eg8LfzIKGakanAfCJZp0cY+gSRdhsD");
+ a("ehSUH83o+vGNqarh5WpM1Z0hY0/iKnm5Bz/Yh2Hlaz/LLPWTiV6ZRejrOoTxxlNclLv+nM5zc/x49zCR5BNHK85LG4GDpak0JT");
+ a("OfYNm+U5XXGTq7X4M1IxsNfNvy9NEoyTBF91alLTck265Ds3Pv34mIBs82Jiv7+q39yE9Gubn5wYKSHcviFfUa+sJ/vSvvLerY");
+ a("/BGdvi2bf2nFnfeL4FKmsGgptghqo3yenPk5Y6xXl7OR0hxMd4aLQq3ommYgfzpviw8L7n3oQjdNA1mikyHZki6aZ4Pjn0K7y/");
+ a("cJQBoYDZMNDvnewXqV+0+YOeepH2YXbDqJRwZDhTe7+IMtsft/dfM0PvzW9j1/QB0aODUBaewfIxpCfSBOTBozbYUpc9vxhd2T");
+ a("CuGf7xrenSy9oyp/ZLT5wyjn6rK1/+jZl+LgLW/BJVPxfB7JIyVb9iLtMvqWX6FQzrVOFmulxJ+yTK6h+kpksOx+eK03/wSU3y");
+ a("xfTVKaJR5fpYtnLbPdnKvU9lK4/Es5Wne7OVF4b4dG4bRbHyhR/xxdoK4Qkx3C8gRBgbMwNyGZDLgFwG5DIglwG5DMhlzK/8Qb");
+ a("qIRLmIi3IRRMGXi0IViGJVIIpVgShWBaJYFYhiVbKiXE+iDK5e+QgJk5lfTWo67thcBsmi++5cQRlK9wseGsceZMbhs5k+61y0");
+ a("olqC6oVWtQzVRRw3kTbfzKUqp54GgkfxZEtPhcc3qDsknN7i0s3DaTFYFU4fHqwIp8uD24bT2wS3DKc3Cm5tbo/4IT2fcIUpDu");
+ a("md5haAtZfOEswNtZj2kksw16eyQDALUeqvI5dwPb4LuLbGgx5j+rxyp5DpNSmz2h9VTZ9t5XEnTbEfanqYRdWKMn9V/MVKyhh/");
+ a("/jmT4S3pb7/NZAxfRS0feHznZP7VvG/F9eQ0c9INv2Uymu7SAKavR113nY8q5ExvINhSNJu9aoarEqia7h83XHugpvt/Hfz0jp");
+ a("ULx6UnjvnVMtMcP9naitKnQbJ8mvb+wyZy/fZ88Rd7R+4P8VW67k4eLGnv20K67lIAsvR8XNYRzj4pkYsS/vIeFeufGCpTixCb");
+ a("EwwAkgeGwOlNsr4hZImmlN3fJ7fBmtRlPyh6v9K3WgmvHleiTo/pAQ9VL6JgTN0/wvExOkdKB6nVjPDWA94UOnlCHxWo6kdyBD");
+ a("mfAAQKNFx+wQ1A8SaU8CfTlL7hgDel9H2iiD1mtU96fmPp+TmKdzCgrwq0DgY3D7T2NxSzZXGKasNdGNcu4jP8Yk4HSQfxVWp6");
+ a("LusM6J1K36dK+NPxQLR4vUkILMyAPmBuS/MhP80jv57cTscxs8Si5abJEq33AWcJiK8rNa/XFSl9Q6DqNvdVliVgORlzN9qvIK");
+ a("+I35yAdyCgJwMw5VkkcFFWYHNDLq0p5cv5elV80qiPyvnr66qeqG2rqpWWdrOa3saC2sh7VFejtSLTV6VLf8xkaiO7Zj0Tw3Pj");
+ a("jztWPlo+hnspJ9Kt6m/7pKXb4LezsqBLWfAmlpsozgKE0icdtho1WIKsv4v8UQfv79Ee2tYfSZ8tI36KLHqYmDXRrenDoqUF6R");
+ a("t/gPqbAPEREzRi77wRh6w9Yj5G+CM4Dx2F/kNz/emD0WzWrKOjCh1/L4MEjLMPiDp3iBRYsUE+RT751NP+1EYuXklLN5aWOryd");
+ a("odlQgxhYEIf6efqXVsfh9J1aTB+wRZd8/2OtPcFSxBeGrZT/NaUfGIPUjqq43SuxzlTQiBKKawznX61lHxkZxI+d1vrQiF64Vi");
+ a("B6oqjqg0BtmNldsCMLd4rkmWsG4KJmgaIjzf+E6W9pPI9QcRxtf/MN64+tWc0SIwVMf5+Fu0V2/vse8m9vL5hVRgoV/WfWmgm9");
+ a("yfRRZBkwFtW7iom9qjeO08ImDJMXEzFzpkW3rTBSwDmHvxFZzXd136reQTkyh2SsJE1m5X1K0fsC0SNEHNaZ/inTP+KM1y0Tyc");
+ a("Py5GH58gxYYmzGxYDezQ1ycsiRAmVSkB/qvgl4V/gjGxPzw0kQu39gYitg3QGqrKKNyvEdHbm/Qw+l5gyRBPcNBTL3N2XFkFqU");
+ a("jJQW5PmLPZ7rgXFNn36y4aAtdGEu0QA5nDrI4hrdcjuVWswXESbH/ylNn6onIQ1cvqEwUBW34rHYWEgnDFhKPyyvSKnpa3Ch05");
+ a("zNIW9foCbRUJytYzCnrUYPhrkfnjN3ueUTKlSxJ73F6FrbgLQ0EU7PD4/PWeTm1TLTEUlxD7FQfJFJOuFxsb7Sp8fJImPYtcE2");
+ a("jmVFzJXU6KzwtQ7hoLZiz4GRYhEL6QR20yotlmO0zv3q7sxa8nSLJe0zUK5Ff6t10e+c1F+kpGW15ddMlPmBM50Yt1PP+c8DFU");
+ a("OIuDkboAiHmKXo42QGd/yKo+HSQlYz0HAQSjIObzJH+9qKMhGUr4HcanQJBxT9uxep08oYXplAD+JNGbekifRCwLEYcSxDwjBp");
+ a("h/9Bnpf+hTxrfv8reXa0yfPhz/9GHpgzMxxwgzJjl4BRoiRGymSjmukVFbLe6YOM0pODBOk/+Mv7FenJVQSUI2OYAJDkwFh5hk");
+ a("lPrmGJb8rKx2TaXJtV8T1ZX8W/SUX8nsiXx1VxgCXMsvJBJg4QHxBUxV6mi1LHkW5Z6qh1i73heK2my27/kp7gpswQaeDWRDC0");
+ a("PkEi4uO5blHQ+FqX2OaUiz9Mf0/qcO3XhuSsY9ZFcNKzfVFniSbXpOpdWtWgeYgqdfQoUkccWQRrr7nu02r8W19ZM4zLk/1Vcb");
+ a("mGwCV1JNn58ZkBYKlinGEAspOgS2vpBPeWX6qERpf2UpUQQ08nu41nyWzNz+TZ1NB+tmb9KWvSLDHhUBJpEE7yIPytQ0OE2xnJ");
+ a("rnp+fDauVlt1h3Cw4XQwvfBgw+fAEeRAN1VKUCkZvkjkuQocmw475/dhxPSjMMK6TMNq88sYqs2lWgnVKsFBuk4XBIj6rYi8eh");
+ a("mzWHm4TkBa6ji6olLs1cBBa6mvQC4c3OtPtE9BX41CoujR2CefFsm+qtNvkt0iRa6GoFTWkqDDz4ILH9mLka5HuGTFkGJ9oJS4");
+ a("OcpjQIGeltH+hi1L05fxk1uW2UP6X8u055+UmyyZSqbKVLMumcytWr60GLxNDPyWtjwWiofLhBP9853oOwF9bU7HEpwimPQqtp");
+ a("lC6Dpm30jy4z/cqfd3cuC7yjJUvDKXF89VolD1B6t58XgtL55jvHjlcBSarL+t6e9rkrfXp7/ODH8l01vPQQeq1aheTDgtmQGh");
+ a("0al1DAia3JIRm5umaXIHkoeNNX9rpqFQ81dlzOnUlYH9UZegr4JuCq7B4cIoRmKCKY1dDcBnnLkYl4a7f01ADfKCw76zSECMN8");
+ a("1tZawGrg5RvOPtRdNroPmbQ2gAzVdodM2w5pPUYaYvbP5emtF6OWRra23Ct6JZutkfl55vbQSQSDu3zkwT6FyD8xjHymU9ksDK");
+ a("4dn+CH6IL+jH2UdraRiHsbTew++2GkZRvZm2Af+tAgy23qctg+mKAhVziWp9Ra3mw7eaRf23Zm39ZlKZry2AO1quMrpAfxYngi");
+ a("VxqXUrp8AHVws5Gnw4w/dMTuqCisp/IHWbC8eDwQKMhKyZaZasXHObQ7V3tOLoNiB1FC+mr2+xQ0yF407ob1lMWurHTRC/HvEm");
+ a("EUD4/EJVXIC5WKJmDJ3CV+p4PY/vdwXguwAfxKfJMSf//ZhXaMzOWVnhLJswA7p+Mff/YlhRLylfe2k9wdwW0x7FamKZ4Imv9I");
+ a("ZcfN9o3x8fBgtAVtviHxcFBg5sxVmjiGGuDCiH47tpXiycgd++nZn6zbTWeNNs4gPSQwzNKNPaMv8AzimHSR3HjMvtnVnx3nLQ");
+ a("GiZY9JgUomf6NOxOEBSIoZl2AmapGvWngEmPJUP+yp70fOxd3Zg5SRRIszUr8S40pKwYBs6tSK6J/jfrccvrgvBoAek0bCvqxg");
+ a("pA3HRunPySldPhLGciIwWdU3B52qOWr0RGau7N80lEbYZ3JiYux3lSc3E1pDBW0VcoK0zp+UCXL3Ly9FsxjJX3YRh01QUz3ffT");
+ a("TMNGQH2LDgcI+6d0qTUrG104ZYcep2Y1eoJIYnThCNi0AZqlmxNWfibrKfN0LebXl+NVydzfpyfAXhZTct9IHntZf92vd/v0lf");
+ a("KKb3yR73BSPKVrXkTd7Faf3ucrT4CIJYidV6PLj3vPR7UYiuC2aO3mgRerQ2e4plloCMcdpDrq6/a5bkOOp+0d6mrYnFQu+jg9");
+ a("9ELXpGh/EVRK+Tc56WF5bqkZpH042qRTgccAbIcsCq68bhcrdFneGuL5sebbe2FXw2Z8rf1Sx5v5jN9wc8axtb34bzgjmaSe6n");
+ a("Uzf0GkZzArdBtW6Das0G1YoduwQrdhhW6Dh24rvbfyWdhrcQUEjUsd/bK3V0bte2k7/E5wNYQdwvdM2iGuQfGNG0odvejBlfLO");
+ a("iSsdwWlYWNrHgU9k3J1554l78L4Ik25AShjCJf9ZA6q+EEYaSjOcM3iamMS031KNhZUI7GdVa7K0tAEhcyxE4Xzc9FA0j4uox0");
+ a("meF8jEvAkI+RmBsrcLAf0TCuifQLLPsL/4xaEACaKvTLMfaGt6VRR419ZZjxwFh24WLS5QsENkU+xTvwamX/yC7GAs6MOn0UNo");
+ a("3c6C7U13trYjNpJuys/MrbQYuHdLHe+LtCb8mIFLiffntZVuh8MVT0xgUE2rmIHJG5i8gckbmLyByRuYPNf6uvZfrBDtv5fzoq");
+ a("EZWotAazFoDT4aukfVGx62NHdMXIUDRd4GOdLcwmpSXy0+AQYLOhwu0K4ZpxyPqffI0p3LaHdcs1KL5YyxB4bYS9HGwNvux24e");
+ a("bp7Savzt9dNAw99uuqh4CtPsgvqtf5osxqGDX0WcAVHGSRe0CjzeepOIrwR5E7jD1GpWaZK6SmsdpL1cHIhhTYhXHAeC9FPfQd");
+ a("tYFurdNrsqKX7BYxwTx8o44LsrsivTZQJX/ChWuyQTXD+H0+107GgW50FlGq0M5vp1YylWqxDnbfS+Rb0Rp2cKaiVHzU5jBjre");
+ a("gwToKNnJ6sA2Z1ZoMen5JAg5C8+OskofRhPSvEixQEj4JIlEzbuNhfi+09RPaoLT8N2GZuX961nxq9lvRvis4DN5kvk5bT9NNE");
+ a("8sTDQP2p7jIB63Sx3+p7yc2dw8ZoRHzErymLVYzLQYYuhT4WFRa+2pr9ReymTono4n/cgXpaU+V+/Z0cPzJluanWzNyqaV2Fwt");
+ a("mzRgkwZs0oBNGrBJAzZpwCZzBm235zLLng+38snjrXzydCufPMfKJy+28snLeQHylnm3B/Quf+RNnkzCNGHLtZrRkLPte7r9cS");
+ a("RXDwuYJjRxD6XW3XDbBjc2bORI5kEI+tUNMrZOQI2zVCBVw/6eIrNPf/wxTV7gvpDdEaqpgzvDLgU8MoO4CBxSsNuiEloPOeoY");
+ a("MlNYyJba3qdUN5bCR0LVlgjVSI1k/X3Tje9HlMxiZMN0OkLxY4E/YhZCtAjfwSNwtHsa3KjdQz2I79UUTyi5OiYG6B7Qi5FD+S");
+ a("O87VaY4mvAeE9MUnZLk01Cpnsws42wqBFCF1Oo3SqmyE/FJKgks7ES8qQoakvXliJrwXCpY7k3BUOF6Q4g3KoDNMcCTVzFMEjR");
+ a("yU3bVX11uuibP910B5tBt5NB88npyaynzklnbRom/HVwg6wxtpMJa1bcRP7X5n8Y55FTzLk5k6ObsUQON1JckvWvTu6i33CfHm");
+ a("vqN6uAD7ZPwSUduSEkB4Y41jnkbXwzjTuuS2wFOoDYWe9Y8CXE9om/Q26+HlDUki/RkRsBx7QiAxQegcK3+wtNHBPJEpxJBAtC");
+ a("ES1mTVYztwPtfBej0MSnW+rOk71lYYwzwYNXU59ZnX2HmDpvGkk8EdT+YuTbKG+FmNv+lZi3ZsU8/wvuA/Ajsc2PNbdc1LBc1L");
+ a("Bc1LBc1LBc1LBcFBHA7u15+/1Q7v9HkRu3nVKpIX31GyWaX3fjMaantm03z5LBkFLb/LszdIACU2Th4QJsDispv9yFGprrPb+7");
+ a("67aVUQ0PY3GHeajtCa6HJHHlvOZ95hQFR6gh5KxdWhQDIZe0+F7Kt6x662LUlwxKS66kNj/dWINqj2aoHuTon4g4mJ2OnspBc4");
+ a("b1rt4yIgoQbXnbph5CpGyTxECy2eBcMhj8COLuYh5g7qRl38lJIJpKs9Mj8nIfj2dRiYyh4QTlKW5zQ+iVODf1dzvQskzADNpF");
+ a("So/s/29rbf3FoL8Udv5e6HAAO/8Qdv60mtUnLn+QqPvaQpX0/1iW3773Io+/qsdf9bX+tqkpdAu98yHnLlz86tBMZc1qVexnfa");
+ a("twxbgZPV+dmyR85k3obystE3ysm8bq75o7qHrfnyPZmk9wWMiOlJGN66lz44Qve5PA5jETmziStk5KFXnIvFsgxSBeLxkLzqRk");
+ a("K1QMu+12FqL1ZSv9km6OR3gq20kHc35pRcNBya8PcyInciJi1yTmIO2qhFmQxZT1nzlmZRaT+qFRZFdQlwF1GVCXAXXZNPyX9s");
+ a("kwPdgolipE9w/9Zo0svZIIufj9dnmcHy3Ojffh6I27umLMMJl9lp+17+UOwbd38eI6XGJQMhDzw1Qk1CeKhAa0vVgEe4TRrzDV");
+ a("nN2QnZE57uDTl/PXgjWr8U6gr9AHzo970OZN0rUdft8zcTRSKsr6SlPKNvXj3aLbyTXZ3/SsDC3aLSm335LfYooRmFAM07wVJn");
+ a("QPTOhhmNBT2F3brWm/H9BfU/UAaawSx9LPrJjw4gYUGI5cDQp0QZPJhFwdG/MrWISScLVQL/Ga4aZDqr83+4ZHVatdwE7H9ASd");
+ a("WGMydIenmz/fRRTYFebb7qEh0pO9uOhXojLu4ZMR36xP1/2E0kfnzed8OrGLG6F4oPXrYGG4m/ZlVBv2D3e7WDjjbijscPNX6g");
+ a("XdzDuOGwuq1IxL6hraA0r035Ff+bwTei/FQ/NMJDe8cpLh7xW7zVl8fUCVhREL0YlT46eVKMPjrvo0fwVVvWlQ9elpGmf4Uzh7");
+ a("boIiPO5sXI8jULsWA4EUyebz/u6nS8pb0VM1eLY/epkD5Hw1ow1FkAQWXSfGlAXdzfWuT3av28aqra5ZtL6y4D16JGmGPkRzOt");
+ a("ohyepKfsiPhX8RQ4dkUStDsrlBdn/w6aNcXhkTQB3dn9YER1CTlqI5HEfj96TgrADu3DwnVYSKWjPUuAHdA3kI8A7J4rKYT/8i");
+ a("pgLHgJEgF/jtczwPfgelS9GX8ywi5MSV8zTQPjt6/C+tg/WlZ0eP+D17qW/4ByhhNees1bYjW0BJkd5J5W0yNwllDQgmKftMEB");
+ a("Zln0hV1QV/ed+8NrZDWtqX5eDHWJzTSrXYn22VaJPDy0RMtH4Yj6nHiT4ILtf01h8k6+/JeG6j/UDmClqYEvkyh0r+HL8TpwmW");
+ a("PdBu29GuT7Oc3Wj314w2vRaDPeE1J7Tln2N2tOQoyZejDG3YG75hBrzUgJca8FIDXmrASw14qQEvXWt/kOl0L3Q7BLlb8DTX4K");
+ a("IJT530buix4ouCzQeyzQjULK/fyA9uB+LVb4YcnigKfoZvWfCj4Ae8uQ2tzRPb120uN49sHyzF1xGaqcWwUxEJcxrslyogpdYs");
+ a("l64lG5YxDsOaJyqkxRHAzSMVwS2aR8TgdvSpah7xBKubR+YG12seKZNaNb4XQ8wSojN8HEDQBOzgDA7mfW5e30+LWXwad1PwqG");
+ a("oZCckdnjg+OC08cXnQEZoDTAdRw1zXnzrf7FgPyde8z4zK4AjpZK33f7j961bIC1R9VjWGZ1j+kkSX7RXpB3Dfreh+cJ2m7I3i");
+ a("2rtFLi9o+oXmfabhnlMx/ALDwkrXhdHHcgd+dFZKrRejSVnmB0yXnHwsaKkgb/1Hh6p+tua75vqKMk9oI2kpOLIXcm/n2GaHX+");
+ a("NP5UmCh18gPwffgNBWLC3pkZY8R1yGK6XFJ/FK0aUbNg+7645oHnZdWtY8vEndQVTbzqylMWBaLIWHK+VIytwVMky2Ib/akxo3");
+ a("12L5bcdRmwf6PArtT5XE8NzGxUZofguP7b69oKFFdJZOUfbgRTr0fZ1LrUkt8kCJwzy3ilEvE99Swn4BayEpe4N6dG9MJacQRf");
+ a("8RU68Qgi5lzQdajNdDMtdGcC+GkFa/G8PVZXB9/i3F1xGcY5Yp0qtdit5lbkS2KHXw+npUX0BVDZchQzH+MJ/7bw78PRzWTx7g");
+ a("wVNyQFL7AlKgt2rQ+q+tSdE8JPf/sMXatl1qq7uDOwF3QA6b8+XwL3MWOXco47790WRLYW3zN2gDaqgUvHOEGJ7mlZpVTc/j01");
+ a("jCDaHlC/oy76hZGPCmVD2OZ/W8fCP3Jq7SSdaYqSK5EhPpk/vwgGm5ed77efSIja33zq9PIkuDooSgnxk+Mie8IAIvB5QIOUAz");
+ a("ZmXSBYKml1jgslqHiLGozuYN3dwmeTXvFfkoS7hwjRCEVCKLHp9my8CA2F7lFuo3oTHRQ/7g7DrAm6qi8EvTphMTaauIiqhVW2");
+ a("dxEmtHsMX3NEHcuP0cce/E2aVFbXxG87n93Ip7T9xSCi24KM4qqJWqvBpHnBQpjf859+UtUxx+n80b995z7rnnnHvWfRRoHR+n");
+ a("0/BiiimgNvdIHstWIeLM/8PCEfS6KCU1F6GpnNKOxRgGbGd9D4xauWaXyFbYPxF7K5U7WlNSawkKYFLaNuiHsQh0kO0as87Hft");
+ a("7hvU31Yw4LxUVKe23T7Ocd7nHa1wIDEYZcYjkFoVlPQyR4zFMmSRI0dQqmKAObhXu4VhqhEIoNaC9tRu9xDRrkhlRlGEnuRsry");
+ a("4Vm6/Lw/3eIARwBTcZqtFk6w6a/AoYHD9DqZJdBhCPnBqHwXqGrhWthnhai+y1nphiySPw+zpCy8g0uKoq5QOx2nYfCQZDysbv");
+ a("r5twAOA3Y5VaB40H8wWQxFqJ1UJknUNUZBgMh47l2m7WTre6/e9wusj9n3Z60qa99fe619T6K+aEE5OMYXRki4ydv4bbjJ/1uU");
+ a("omcLIihWXd3knfuOEktRav/AUSqocoHohGspXlLM8B10HzpV6FfgIZ6j9fP0/AD9eWwYXSK5stoA0iM0kUJLcavEFio19dHTZf");
+ a("9owHtjz77xsu0wACxV7SCkWshv2TqI4PtkRfWCg+kYy7g/V7tR6Yaen055X9thBGCWkUqLN7k4KI9XIAIAcON30Vi0dFPLZ6hl");
+ a("zR7RwyyAvisyetvgXG+Fs3ANsflRYnhRL0RtzqI2UxajwRw0SB5iGfYGDJulx15Gj/PQYwysNzSwDqERBoQ/+2FT9TxtdLwk6S");
+ a("r22MAxzmoy53mjlDZjoi5/TRNNscuaXz5H+CcJiOCtMge0T3oY/gl8kyiCTi2wzEMQyUP6grCowerv/P08EgwzOmk0HlI1AMyf");
+ a("A+ZD+7hFvgX5BYrsgtOKIRnaIKnFpn7KLBfr+p8sQOWET2T/IYuaizEWarP26pMimnJCr1zTtKi1VB/2KBo2lcN8hdhjfxjGGw");
+ a("lYKbN5eUIrXmjl85ZB5vOj+xvmumgolYKJJfO1PNQA6aJZzj1pT9OWLLD2DQzq8gWjdH+XGl3kf897zYmcSns30PGDC/YO4b0Q");
+ a("Ay/EwITxfClShzsDzF2+DBhDDk+3wfh8BWBA+H6NeBqq00lPotH/Y9tjwAVxde8V10lCa2Lez2MBoZsa/Wuag/Bczk4bdHPA35");
+ a("rvQoBf1sVLvy9cRexxGpqkmCkewVCAk2zrBhydrHlUx6OGUoaKROsB6MimfhlP0+Wh393S0MUQZ30ZC7Cm0X70z2jmxtgoVm2A");
+ a("nA/v7JPxANQ20KAXNb5oPi0y+ujzaBxrHqCc6FIQnUB4yCrqKCi+gARtILYqWYAxCP+3+Xc0WqxPogHvRfsccKKhb6a8r4YW+X");
+ a("9u3h4e3llWeCHAA6fNUHPnhah9CO3hwaASoW2AhiQxfsfD7hHufcF4xUS1BainmxUd9QY73rvOJ8VWYVVwgB+M7+2Cr0aqeRQK");
+ a("XHEtZ7x/MugP6f6YpHuyV+J779xD+gNPuzQf7nkbXbkqneYtatIIb1EQNkgph/ghpSqkVIWUqpBSx3blPH9Yt4FdDZj779MQ/j");
+ a("4Ifz+EfwDCr0H4UzA4sblB3BcY5ykxC1D6YyDk1OpXLPNe24MmaP4NuGOAokuWfe/8Lq5HWZgsBL+rO3z9pZtafk+b3UXj0Auv");
+ a("bHK8t73989ze/32kQN+ydgQm2MdpjSqR3SXq9nnoF6Hyfhr1+l6iFe2Lx2nJauxJTIG9QAEKwVoZhIvhPsVWt0BYBMf9olsEb4");
+ a("4yubGyoIsaHQC5NZBbD+7Y7aX3UA8NLorm9XiQqBIWlwnBjyB+EGUzh7qAnbaqJ53unGTWejrtC4sJBvR7w5RU3wDz1nRabjOP");
+ a("dEiv0CG1t30BdKmEGvYY+IwosgGCHyHkVjeV1VIqWSYr6HIARQvv3E+I154vyRwfsO8hgJ+pzW7oNKGX6dDLtMfetMLelGBjVA");
+ a("DlOhTtDjfR1505cxoCKRs6q024e2XgTiaojnpwk93AWHnt9SKOUS7zjqq7Y9ppS2ge3ebyVxFI5EKCVs4z9O2aN2x8dMbnOt+p");
+ a("G+h8ctpCrsvNbLG3F1tsafsO65QXdG8B0lEN8pKCvAyLCSBBRsbg1U3VsM+rMrPYSoFf6xJT0R58j+cAVysdLVHiR1W4knn8Y8");
+ a("7qoBwxqxmELRmWlEW1yNOWYl4LxLy2unG5myUPAMTUtOsXZOb1Ec2ru0j3N4C2CrRVoK0CbdUoJc6iL85Cpp73jJNwYSqOsc9f");
+ a("f+A4r2yeU74fI2BqPNotYthhKLlXhtaCa7YGcvTGeFCOB0GIqaGXafdC1JEk6sBhPkTcBwISm5WjTauP36uAs/FiJi3L707GKW");
+ a("eR2Xfym3By/F9EC6ekh+aL86kwmfPIDltP7u1l9/9R8Ry+Tl+BCKfb9NTtr9nWoWSZm3XRnIIsOu3s12y8OPAZ67RvonthvQBY");
+ a("zNS6e8D9kauohJMCrhU00c2grAiXXRfR1HoRe9EfnD/KD6CVx2Jdp34R0tYIKlJQdEOOodQhDkBCkcfF6h7yTBx+xGOv2ua7Ce");
+ a("ZArgdp2tgsbegNwMA1uZmu6FF8pU1gE5eKjX8M4i0AxveZQBXksv+D5s0gBJO9116ZOanRJaMglo6ALB2WEQM8V/jd5SHdq0bs");
+ a("H8N5EslZhOYxKUITjwmQejA53Q1aODZNw72p4RFtZR28JujdvzfonYEg/XrcWjuri2VEuxLj8PAYmrq6hnvENGIXDScLqMWJaP");
+ a("EP+pLUnnrOMLXu+UkshlocjE93kT+Uy5AuHEYjgeM+Gq3aOJ4A+rgtStH4z4wHqBtRSIDPs7uYtpEi7bI0czp40zwckoW/g7He");
+ a("UOyd0JQfUAbswlK35CIHnrBxmX+guRCuyzY4MNo63voGYXtEdmgn2SUY+0r7CZlneGxE2S2Rt6wLxr6jnaUS29F+OOUCmoViJ6");
+ a("Fyb7oGDmniCW4PSgRj243Fk058EQZkURDgAUhwRoguWsSBLIhCBm3kzk/hh5/oD9uGbd2rekPx49Iz4mfkpJN7ZuKTC1yBq5uk");
+ a("Pd3RCqvUYSqE7udQmqRUcGDzWzpzhvYLXUH/ypZeXIMyznngTKVC5xZmKJwUEbYzIl3NtWg/Ix7MSZtKyz+/eSsFUUqBB5gysG");
+ a("dhNB+6rFuP7aJF20pc0zlNZ/0+pFscl5qSttJAruWjHzi+5ZEgwNhl8JIkhmt/tGNW0YKluH6Zptf6nUVJzOF6fppHFn/waVFv");
+ a("LOC+oPFPH6kjFbljFFfIvW6h5lEQJ44DxCXmR8BGXgzVhKg6nq/VfsBGhxy/id7SvrbxKn6im7w75JKcCTAqgxGKekx7CNwcVL");
+ a("cER0byQipK4xT/b95r6Dg2eNZ77aW4YG1GB+xZZ782Qvw3gCgg0iot48Sl0Ai9xvPm3ehUj35bpSsMDkWX1UGGMxGB9iFyy/sV");
+ a("CPgLSagDMuqr/hTWj3b/n9kUhPP7H9+b2+i/zi8vUWIfBi2fNLEZ3lQWcY6Lp9+W/4aL9yoFZ4lt9q3/1xbgfz75XjRR6wCY4g");
+ a("RCjaYwAP/J3hcX1YpaUqF95DK3M2GDIF+g3f2Cvp/V8n7mw3fgkjuTXn5QNO9x+Ndni/Y9Yu/YbeADtll+JxOFcCCG2CSH59K6");
+ a("pRyLVEwm2Bnq5yCYGkR+S0RPdv3O6YFgvSxxlg8RfcNCUQe09nDrflpe7KF7iEvugvZCcQTjJXtYwd2wUoCjIFfvEMc7oQLpSy");
+ a("ta/3e6O7YZ+HXdiW7TPyBzGvKjc0t0mHqWGsoBXEYFXtqZ0D+mX5Cd/yn8oosfRsPmQgNWYEDcZazYj4RERHwAosR4T7r8FRA/");
+ a("4WRR8lI8YTWgJfMRmZnxvlviVHp3dv/xmCGTf8f+/k449rHBrE2wgScBCcQSengIFZYFUZGE8zoMl/TSVTlYj7bG2DkaU/aKbB");
+ a("/Tce4XAlRjJw551CDqcAPBy+yv/h7v7MulLPZa8lmb/XLUUje1+T0cS6FMzWJfdz9rs9V2RTuqdSwmgy2SB0M16QahMb1oKWAK");
+ a("e6dQn0KyWGg47QswiH3LMPIP2gp8f4i9Ve3ld0hX59QD/b/HmzOZsvbadnIJIpvEPpuyWHvhBd3woc1qH+3BNK1tso4YeymWaq");
+ a("ZHmE11exvpik2FfbN0MDYhk4/IpZe4zE3maSdiBDMXUW2eZ8xQmmgc2SbRXrv6QEKjCByr1QOLZIncsV0u3U0BMMGXZibC5H8x");
+ a("gB8NmeVUZUReOqRtyntGj/AY8bQBTzU6Q6xgGmgK4XtrLjVxniTOzp9vfPvP/KmLUZfBoj1uSbjrGfhCR/h74LL3ZNTB7EHSJ1");
+ a("1g47yqJegQPwSBgru/whXV9ws1kfpJ1wsnZ+deJ/+aHr7Mwd52YI/UHMltQRM2txFl6fdke9WDD9eGY8MoXTb5eMunbfx543ts");
+ a("h/8EFysU+4qyG5D5dPnaAfjn63IInPpFYPIt65ZVwES3qlCvcQgpkXfXCOmx5zRuecomUwUClxXYKy1B7WkriIKrkUyGfkmXnw");
+ a("7MoFOd+si0p01sZunKrAbtMaAlFrDjK2zPCDWozcSuQ5iWCqUHFiKUr6ZNJ+E0r8fKd3lnNwt/D+bE7FMpv1tbMJMYvlIRdnF+");
+ a("k9qAhSHjltY8SGoCMqhoW4ywDDbgKbXzqAeCl9iopG/kjsHhpYSh9jzEqIBaXjtiUf8O/MJMDhFlCYsRw7FqvbVTXv1vRfMQdN");
+ a("g1oQjONrEm29FAwz8vAtMRp2cIAU16kx0KizthrofwFtm2GpR0T9FHW/2RnBnxwE0mWi2fAVpF95A7dszF7sy6aJYH7pb2Wx06");
+ a("+bsvKMVjXUXR1GtZ6XV4codOQ38ar5jH6xYOnFUiA45HZKT5h1vzsNLJ8r+/Q8Es4DIPfKZd+RytDQHcnoefpGPhRu0v413BeJ");
+ a("fRMEtXxi4aSQivbxRGnZ1zeDW0K+eN9b2LdnhpHq6/6mYzvmO1O0LZwN/ecku8xRa/bdtizf3g/Wft+8EvU9e5HxiqfqJQ9QfV");
+ a("Gqp+mu7KzvI5UtQiK33xW/asdI41K830GGM/+E/56cG5Zn56w9r/l59+c66DzOvWnw1fGfpTOAekPOtM5WnEMFY+atOdsxZn1Z");
+ a("2HL8+iO7Pryw1cY+jLO//Ipi9PftSmL/sXZdOX4z+36csPlmXRlw79ZZqTIPo06BKhs4SHa+qbi7B1ZNtOs41n1WM+7O0OLWgO");
+ a("uqVt0LHHGy8KCYq5kOAL1s009py1jl3emW+328BEJJ+u9m+jKF2O0P3RUl0vz6aHP4gaJxtPKLG1aAeSIPAJfR89QPavotTzfv");
+ a("Gy7QmR7XJE3nkTeHf0wRh3KeyQUIxmqtU/hUGp8sp4F0ICF29IcW1BL9kBramJ7pEZbrkrS2sYS789yQ4Awif6NjWIB8l6wU69");
+ a("MBszA9yOAWwNX0HDbPDvw3NBPjMz7LSPdgQ7/uf8T8iS/oGPDKGyJn1aAxQZeuFXIVF2Pm97yCZnqYVuiXw9dEC+hZyrdPmJ/W");
+ a("6RjzG1twgQuuiLBHly/FhXAnLBc/yFA7yvPAHKoUpQrvqMaBAvOYb8nzlP67ZXcXpdORvH/riTvj8KCbEGVhxb4zdznVujPf7X");
+ a("l9EGqzgO8Qfrwxp9i5T/pM7uIVLrhq9wEK5ssdH398BbqmA5ePxERD7P2wC1bZO9V96CTiAKnngvV43vLuRNtcVD3Ymhs/X9c9");
+ a("lqIyTqtjryrQHrA7F7plrzENNKlto8URRTgRDgUeygILsIlDY9DvISO46sNiKlbnnpt7J7l3CvR0xLxErRph9txLbxD/YmIjns");
+ a("FUwLJzJ0iexuCaN6eS69iKHqYkPi/spjIpJKkM7iBjVKbASMaVeN2et1UkGQpgDhRIrv51ZQi6GhPDA23dFah6YsC035Q+nt1Z");
+ a("1j7+yX89BmhCsOGmmiR1UUTL+6YuPGzsH2wfZoTaB9BCWEdDxyeXhabJNzFRSq0o0S+zJZnvUxfUVm6DEM2Ng5QN9aKac8More");
+ a("lg5eNjgKqJ39FBzs7Kbhtf3im4AwScQG374gX3wsJqHEL0qjvtp1Xh0+VqXnsxUsG9piKSMVBVdvMqmh84uG9m/bcfSiPZofvm");
+ a("ywQYoUhGJ9nDsP+j+5cAl+A6/T1hLkPJTLe7kLKBGoyC78109/vbPbMLi4ynPpV5d/Iq5yvFcuxNXQIpeEseqJlq/jMsE4hKep");
+ a("m0wCYDp+uqxr0COfsEyJfZ55ddQkF97VSzJeBguTeKN0rG3zXtViDAX8Mt+hsI3nFeOVZB3PhIVBba9znOCQRM6XpAu2xMUoqH");
+ a("D+RFxI/YB3+WpAp9df4uaq76UMQuHEEJ78DZ98AXP8OvApyYbPutF1/x1dSXLhQ6mEWNonXVAgkErur1z2A72R40ekg/5fL9gh");
+ a("GEvKXcki+bJumo3Be/T4skE6X09vlksSBk2OD7m6wYGUy83MEaJxgTcU+yk8PbY9d8R80Sro/+WCwpD/U+9Va8isQB5bjpVVDD");
+ a("2Zgz66XBzMcjGxsXNF+4r26DYsF+N0tv9QwQm8YssNy8Cxpgys732xb+mKy1Yw//cx/8+nYTRsg24qvkdBsYX/ZfD/6jH4/2Di");
+ a("/4mdn6F7+5/t0aJw7LPwZSvs/L/Uxv+oWf8TXN2FwQEK/M9//fhr8D9d5Yn3aHmLuAL/X0H832nyf4vg/4N5GUsm4mAT8f/irq");
+ a("+wyIuV2LuZV8GJLrzjFV4cLBzCG8H/tTb+30nwv208rxivJOt4JiwManud4wQ3Nv+/bOX/x638f7f0d3zyBczx68CnJBs+60bX");
+ a("7UB3TP73ElMlC238mw/+pcfgW2bZ49BF4TwcYtsq/qfv+GQtoHPaS+v9+i/jSYaBJAw4z+/pNEcQovRMRATE9srD9iIHYi9CQT");
+ a("JUYdNfZJCElY3kUDyvGIFHsnsygag1fW7ky7Hv0Z6+ETqmeciISKtwfLrzN90W2skZh7LUP7fX9tXRpjb7QbZK8j5AgQ3hM04d");
+ a("1w8HMd0HXzQJgOXv4w547HJ2joTAY/NJ3PoBs/WjeuuuJKE3B3faVSdyo3az0RW2IdvEkJPFkFViyAPN1ofZhjyAhtwVQ2pP3W");
+ a("+4yN9JuF9SZXORTf98g7TTcbS//2N07Pd5n3JMMm/Fu266e0zcnfEe3639ie/eE++8Kb5bJO7WF3f7oqU5KhmXebIaGO7WDx7Y");
+ a("ATr5qSUFnhoWPCWi2udlZM4txy9C5qoeuRTtwfvssYKeSuJ9etlaR0Zg+GF2vndGwRFO34Dz47vmwO8qkyIbyuo+BfyRRnU6wh");
+ a("0+8kWmbiZMx3N2MAK4gmuAjRrVy0Mc+PYB32Ga3M6AGz88BWQJsXEOxHaoJBmll62FZLD98BARXkVXsx7Dnqsmu+8W0El37paP");
+ a("sl9oD8KMXb96K0h4D0j4MFyYp+HCoHY1Oi/In7kIDXChdhOyayENB1KoVLFlgnbkvQbGiwnjS7dhesPDAOXghbiQ8szhs3Qqvj");
+ a("uuTpU7LgEZC3FXFlQrk25KrHN1pQ9HNFAfGz/e11T9R6YWMnosvaQr6AJQlnKGXAIzZzuu9UvpBVvfgLPpFF0l9sf8juFxEfzx");
+ a("4ZSN+O5NXPbRMEFVCoIkhVRCH3jRNZSA/GaGF3W3RLFHqfK6kGBlaiE7NLgh4hsbpHXQHLvZ15gsBsngU6bjQ4VcPqLDQcCIW6");
+ a("szCxhIja9lffGgoUBkSHuS+WLq1fAiMPsmKskRCM8khAG8gCqRCu4h/dtYkYJL1zqJGqC/D57bBKqJQsaVC55W3EexACJCjRw/");
+ a("Jg3XsnlnubeHZIbWA/ocepRpbBkhB3l7bREKWpHjbFuGdhkqzIGZwvajgTJUrD4P7+xDXWQxjPia8VH7lj6pddOg/6S+1g21GX");
+ a("fbmeGsrUiuDKJdMSn7gK0zCO2pVj4QfQSOJhnFGlbND8anuQjzNzbG+IInqL51W1gQTwGulcxYRIDI8cZvxotMSw9a8qagBhgP");
+ a("ATIeMMAF0VtHB+Bgq4gmROdL7hWspjhYzU97BzE52I1ahzDgNB/OxDjQV6r6qIqBOLFtoq6bBHOBnRKgZ7+r9XDCWrCeS4QJmq");
+ a("cba0n2mlhPFM0C0MfW9WQgcZmA9UNNpQnMBKwl1pfqfTk0s5PRgRg8lsO3dJpbsLANdqCA1g96QYVeUKEXVOgFFXpBhV5ANe86");
+ a("ziMv0urvZHbwvjhu66k5ErhCO3pLY8dxxC/hP0+g7QsWaBH6aM/xJ4ciuUgU5lQbn2G160/xRUbqWgE9TL1auFe0XFtwh8GJy4");
+ a("gTv96C66MM1Zk9P1eOYdh/ltKQQKHKwwkjZOGItwJiFzcFjXQE/x6vK6KQpOpBowSDWM8KIpywxuwc+xlWIgaOgm0dLaclohI9");
+ a("QEwfeAoxC8t0S0qKzAJsHCIg3qBfrKL+oh4/wxKJFUZCfwKZ6JSoykW8KaWVtr6deVxCUy+g/Mh6WCZ66gygO+f3R+t6bDW504");
+ a("mEUf/nxXPMWzyfeU7CmKCDfl7MhvMxOuxsFkXyAP37uOrhM5uQlorvjU8FYu4dF02GzkaIJaTKPsW1FPEn+CckP/MqAxBXOlCO");
+ a("U3IX+7DXBNWAL6RKtNdgL+vifA5ezZSij3Tb49FqqQgPTd8qkwwQWXByLCfjLeSf9tcLma8nIWI/U4qM0yOmB2IBxPz3l9X9Gg");
+ a("jKdO3d8aJgD4ztV90nI/CAU7o7BV6j1dLPPyxwoeQWH++GIdvoLoEMe/T79MHu3Eb/yrblVDfFMSNrhMbJv9r8XK5n0L6rMPPH");
+ a("2eO/Qyea/95HUD2/MoTlqg+oHtT3n5J+M83zwEmD2DBhoahBTy7N77xeUdo1TjxHMNhTktwq4F974QfMi5f6eFvf24fVpC8nC7");
+ a("0VvQvnKhFcskdW/zE+PXQqo9hg4LdPBj9Bu4SFbkpNs6ckOgl3Aq9G4Kt/ZFWLz0H4sRL4oergwrfXhefNqDt3IpnlvBoXaMEB");
+ a("D7TD+7ryerTgAF9Q3WKomXyVkIpPndH2cIQSjxYhWtskQY/GuqHB5Tct+hv0hWpGEL9I26hHEBYIecRg8V19yVrSDWQJFFFE0f");
+ a("tiQxEZof41OI+tgDMxiSIFPJGZhSgz9F7RzDG4P4KxVPZzTiiakNotIoYdcCrdZvvesdowQVBxn/sNc1+8V5UJ2vELGW3vjbZv");
+ a("ZJPKq0pukNBFD8MbdBaSl0ex46/wBx27q81KvezxxnlMbzl2cEWlmsOfSdXJvfNQm/BX1dbJIeQj1lPibQUBNZ/aTE3mAxxdoO");
+ a("3UkxHZAfXr3mC+oW3zhB5iFLyrrinLj26u3wfVM/JhoEJuCEQlguzBmJbuS/oT2DoXKR2tNB9FnW5SvAeM6b3iEgzLPVhE9S0h");
+ a("0Z6p4miwroB9fjC757F5Lj4TLMdurKjEr70E8e17afgbuQVN+x7hz2Des2jeGwbgtETW55nPrqhGIyJEsggE0O9V8YMvGRAZ9m");
+ a("cyhC10wAmjfKH1noYFCT6stBNkjkBOFcgZZGkIE11eGpsuRwBOppcMJGiUDHX+ou1a4KKssvgMMDoIOOODQtMaFQ1MDCoNQmpG");
+ a("wQaFwtXssWvauo6WbRrMoG2K4mAxflJTmWuvrX202267ZZkJPQVKqLby0cOsLSWrD2czMsO3s/9z7jffnRlG2Mdv/RVzz73nnv");
+ a("s6332ce+45G6h32CwcIsM7KFIf+OJAjlOpsjtJbwPn3Y6+ROE46zulEAFRtlOWjT01nfvflscdxZgf5xmHrV0C9owJisGBY9Yo");
+ a("gGZUhez/o7OVRAdeSvXDypGAGOAgR/xGIzGnvJ+Q56sWiH3E08QMFlHsZK6HYR7a8SqTbZjqx5LPjFL8sdTUIJKgC+jPDRzl06");
+ a("LS2n8txpIbYMRX17t9NXeMgNEmiipnPuc4LE/G7RwNTqOeUEqgPYrvIVDmVGYiPT4sXU8EkUA25e+abRDT7YJOdQJbwWJN9DVE");
+ a("bP1ovnZJ2TEWTjbWnuaTM7r3PMcLxsAMTQlpJPP1m8U+TVGY7RM4at8Aal+HUmSDyZFyHPPPC7xfVLPffS6i0I+0s47HztriVP");
+ a("Bfb7HVQt0g8+yqktNd/ZBHq8es6HoM6a4eFxV7lxuYu4sMIQ4jGymR1UsOr153dZPyk5lnkq/EXq9XRqzXZcVKrxKshHjPsmyG");
+ a("tqYYxHq9cGtGad0vesEKxYR0rjeEdbLe50VEmxH9FvXJJydpyDw5fqzlK7Z0s0a6k3jHY1m9BGXGXtZj17/mjPW/Lnb9aYVL01");
+ a("a4tLAWDItMkG34ETsypIs2bPp32lBxxjZEjlfejgiHTFgaI9+bSe1yPosoZlYWV1+APimHNIXVX+BZja4zjjKi/L/wELgTIMk3");
+ a("1cfZDSt15uB0clKiXrRe8kys/ThrjXz7IOzZbMMkfh7AZPU0QDLd0i+k+cQ78jnoH19HLA2Gnvf3LZPMhNYyKZl+hLRWhZS3h3");
+ a("1/1/0FzqjqF+tkk6LSvUvNGGYhBFuQKl31iP6afJhKxA0zqeZwvSLSIQ0thNBTczT055fjQ46G/ogg2EGWqeMPlPh3SPxKxgcz");
+ a("FezKJCW2kYSC3YfTVqjYh4hDvTmYugWJDZ/wfnMAqgr0wgyge5JF5O6BOMfAcljKFYhVbxkgWyP7WzHd/5ZegyMv6TU4jKBTSU");
+ a("P3ghrrro1G/sC13jvTDB4Tlkiwdidyz5C5G2TuFzn3dMzwVrA9VJuScTSxqS1w2q3Zn5gwiGSWpvvOjxPdH8kXsn8Ot+r0r5f0");
+ a("ZxL9FkYEznaJM1LiDJc4stkx5Ml0h//599EMwekkVEujtp++N2Y6OzwqmJPBirV0RE69BuHI82RXfHsY/rh/A98Whp/aLb6j/m");
+ a("QQ/1Jfb4g3xOLvYOrm6JSo9Loe0mf1kL68h/R5XdJjv3feJe9vusqv6e5GXtwQ/jN7dOX0YKqxQXsG/JS4RpGqvDH615LR+IPl");
+ a("hlbu3CfqZeW0dHoNQ4n4AcIKiRBqb33s9sTOf2WX/Ju39DAePaQv7yF9dQ/pv+whfSTSD1lukEetqHRTD/l/fLH79He7pEfLFz");
+ a("CeI+Ngoz9eShei0velc7pRpjP9abgHcBjFxrQ5Ap5rN5P8RZ6ra8m7Cs7hfJJaY5iQaFmVjDlvTJ9K2xijOwP/Z+P/GfjfOibO");
+ a("nTvG5DaPibesVlEOW8pr/5rXgtfTKLxH2zeDrlpJHAipwrawuHIt7nmO42MlBLaoHHnnGQjZ8WUG9yDIQYWp8hedxpC+UByScX");
+ a("iaaEZuvs2wPNhr5eWQFC0g/VXSBJlNAaiA9Kc/Q+lPBv25OFDsp3sPyMIpT4D1sRleauaI0aiHgK0MD9bhNIb7ABavaukRU5e9");
+ a("eWz/YM66KWjURDRqAizDzR/i9LbYHN6TxmXpMLDpJ/sLdKVFtwm8ibViCQhuB5IV1gJWRG1mo8bTntwcud+LKtHYCNEbaQu5C0");
+ a("nX9SEYw0OfkUwAVz/0tBAii2WZxUKwrb0v5HuKo/BTs42qhF0616c07/CK/XKjFlt/cwaYJo6Y5mUDM835Y3Da+hPCYBiE3Vfg");
+ a("/wFgnEvBOEnEOA+I85cm6OVtagn8oWgHehufDwC0L5R6K+CRyWgc9DcgpIEWN/NIL41HyiSPkLAGtGaF05qDVY6uDfkMQUzgTk");
+ a("U0xQStPLbAST4WqQYq9ZVl8/ibSHRfguaUURMPA0/7Lm4luBUwmjlnjEkLx+Os+bFoA+uXvYA2tUh4wS7AWyTsfBfwnwSMNtwR");
+ a("3obk00hTRNp//M2Al4WIn3d3yaBHUSw/Rzn9wsu5BLdwgVGiT65TER7MYU5Xe7chIlHo0x0J6cp1ww+9RYddzDyADvpOdNh0/L");
+ a("+Q4F2iw2ZTh70sOuz89p3avJCkHt2ENjeH9dffAW8SMKUv3Qn497H76zO6R7v7v+afrHBatpOSfy7lScKdrTEQ3yUEhov6bthH");
+ a("jghFuOQbhDXeMhyRvBXjPC9lHCGPVOKxxPVQvxTixRW9V7KC/FjtKTTe47a8KeRJ/M7Xp+K7fYOnEpzJbqKnozDTsj/KqJ3812");
+ a("P5cVT+J8f+u/Ib//fy47n9/2X5t5/6N8r3pTy8Md6QQ07boNhxD8LOua2FSuGak+RhpP3cwpzGm9+a5+t9KzmKMLbiBZUvYU3B");
+ a("InTMsr+3mN6Gl7DFCEui9aHzNJlC3Q6pTD5IKiX3JfiawE5jARQpCX7f2942uHXaU932xUbzQ3D3RgsWuasKrnAkwqWJWpjThH");
+ a("ogx8lnoXN88braS3qhro2ICFCEb2BtQZsBddhQTz/h5b2DdL281wD8Z+Wt1cpzY/C4vDtD5d0WR+UpqbdQASk2bC592717yTnV");
+ a("SCJavY9pthHNxB072nNaLzYt2gwk04/Y7bWYHj9PnHBi7m+UoTVI9pqW469RMS3ZEG/IN+UMjTN4zNUnbkfG8hFKyk2IVUsw/x");
+ a("1JnYmgYirbQOT7AO1lGgR/9Qn80PuIJUDK+bTFdAGRE/0DB2p1pmefQbaBG3zbG9WknO2+psa23tVtK2eOeSynybejcZ+F2rDt");
+ a("u5wdvtZGtX9Oq9xHxTqfs7093zb1MvpphDMcm7NeN8E5rNGZ+D2dyVPo7PKQ88gJCPRJWAIwYgrAusyPUXqXKMZiBfoVEk4sVU");
+ a("hMCraOA2pM/RXF9NlL+pnv9j/rZ77bEHRV5+K4dJ5li9W3i1/FqNkrQneymIymm7hfIi9kpT6LenEtkJWhP3sa9JV8Vte9IKfT");
+ a("L/QYOlhw7Z0Qz+cxhoLQc/RVmPEaYQnrMXgLDIPYcXYw9WhanLSZE2v/u810GCjGbaZ/0I+6VErnNP5ARXb9BQ+QMlH+QjMqsJ");
+ a("vP/o1tqMQyKwRSVhmFeztrmp9f8yzZETWE8jz9hwa93449pPdbJ4LVS83PY7H2jARWVYOu07ULSVKn611A6uIJfOy+XpI6d71O");
+ a("6pz1ktQoYF0sSR19MJzUIUDqSJDyAytF0lr1hE5rxRORtL6p12n9DEmS1kxA6if5glZjvU5r2+91Ws0IhtN6RNJ6AkmS1sOA1D");
+ a("rQijhnT2dzDrvxgQUKcD/I7ZflHPyjXk4AQWY7jN2fzoojIcej+KF/GCva4RbcS7Dn1ZUF488mThlO7Ze16a/VpjmQ6awbmgwo");
+ a("YANGYIte2pzH9dJmIQhUEJ1CRC01r3A5n2MCO3BlHEKHoKi3Es+46AFsLlBETJWdd5wf6yizCqjCqb2AIe5k1q7VHURSekGBMN");
+ a("U1bwKTB+qnqRpqMHU7coXh9tNw84DLr2xNzwIXWRaAy9Xfx3HR6yYjip9Etwk0tQ9+8fZkOlYv9TRmYbSpE32JNi2mCw7THgDa");
+ a("ZdIUvkwK2RkH5feQhtsjYUkvAxGvigg25jctldv2Fy2qJaHJIOZG3CPhrWHKfUhQxwAJQ1WNMP3De/PB2lVRBhnbOIM8/Wuq7L");
+ a("RpwIx5PvalPHg/aG+X33Us+e07oscHK+hxCqEz0EGT0EHiJq76ri4iXDlfhbYO6K3rUomb+rLZgEMkCHEiwuUb6hhIXT1uNP8U");
+ a("fElDrJge3ayz0/eSeYmP+YBgBRUxmhfP4L6CFPHYAAwfPbboMqfp5wVt91si3G0hRE3LUC1spZDiFMRhrC8Pyt1zjPkdi8yyO+");
+ a("Sczf5g5YQdiQ/funOoYlM5A3uuO6p5hzuqrudXLxRpugBIQuHJtBf9gvZkUrYZpyPtBse2p8IedDqghKj6QX93S9F+g67uZVat");
+ a("Y6H8XvRB+1KOY3d1u1EFlRX0BlAVvMtV8LFIp/i6D0A2mPrrAfThrAbA0iv09od5hIKan8wNqdMU+b1F+42ob3H/OINyzX7n3C");
+ a("YnvPv2Wrn8A4Mno/o4rfQrbFxuftHuyrPUYVhHEOyoTGq/DaWo/cjmSXQbEYrtbwSMdB6qhTuMYOrZA4TP+u+W6EpNu4gjLdGd");
+ a("Fq0PiqedK3HheQ3N/5v0mS33N+HKxBcBAp/PncTKxJ+hvcA2Sew+SJezcgIgteVSejkBtM+f19G+fCyc6D8AQXURBBVB8AWJ2Y");
+ a("A0SXATILXyUka6VyKtiyB3DyCaJydyHXMFyZsktisCew4X3gHMvgLzUok5IQJzvKB7t6C7V9QiUWL3jcA2E/bcFmDOvIwxv3hO");
+ a("x9z/aDjm54BA9wpBt1bQfU5iv4h02QUbAakPjGektRLpvgiSiiC5384kxwmSN0rsuREkZxFJO0g2fEmM0hn9DrurfE8dvohl8D");
+ a("RqO9WRAOTeJSb+odvC8E094mP/GUwdz3NffAhTyh+zkNCt/LOH9K8GdJ/+YQ/pr/aQvryH9HlnSr82tF9/34n191l9sl/3N32y");
+ a("vw9BZ93GreL6xamQ7q89je3WzbQ1mBD9g/NJbdM+m8jH7l+cRyT5cZL8RUTeJKhDF3sKqP8E1OEU02lTytJ805OVMptvulWxW3");
+ a("3xLZMSiKp+yzdQ/KSJnyHixyZ+0uknetCh92ODt4FbRZIjlwSK1W17YYmVDhjevXuLja3QgC1RijPYhWc77DYmv+XyC5FQv2IY");
+ a("AVWmmfGGw1rqm2LleKseb0W8GfHmAI4nTtgYS4QYsjhva0VjbPvrtPtZGKR5v4qIhPeub2JaIAmSE4S8wrdtVZqOkgYUK1C4/C");
+ a("qbYVmi9+l1QDICJm1O6Iq0wdbVA9sRpx4ItzkRXj401/hV5l6jO8V7l5/yO70jTgcmKAzkm/amxBkqrAIH1npNhr5xhsoU7Mao");
+ a("3hfTw9l+LBuaZIayoUZBltTlPrUVfcVtIJv8E9MwzFBUK7NxH9r0eBsNP+LTAhY+sHBnrHqKWmLvuj8Cz0zLoDENeoaL8fRRHi");
+ a("dEV/sSPBbQFuG9sDgY+DLiPQLuwp97QrM8MsyvtepvYjRwd4l2HQkkIX9lWqDN5c8ha1QxpigSFkPLkzin1NdIznW8xzLKF5TU");
+ a("DQRPNBd7v0zwmK+qGwILrUl+LaI08Z1S3w3I1b9EYxf07znsWhe0SEHbRM0tbpnIjMxK9lPSeLuVCKDEN81GOuVggO3NsC7X3f");
+ a("04lGfE+IqL6tc7WfaiRaNPSPlgJsJtCaRxOtWaAHOTxg66kWUOQhnMdv0l29nAdjbQIL7T+dGms6wF9MygHxozyQ4R80H2p+g3");
+ a("qkOC51wttJcFtMpECsd5zMxfm4z+WvkgO1q+8Bzv9iZRBrNnBNiUDhyZ21C6oGHVxrSdt2Y/SDuKVJ/Y+nzMF6VQECOr//D4dj");
+ a("k53RBzhdKbexJy8fNPwwSEGeI23G/7Lg+UFcOTrDlQ7GIcmkHg4ykvsCSnNO9g+ZhS34WEmch3GL5eAQ4U0yNl7zP8wdDDnPlk");
+ a("XD4F/HGSKJOZA7/ObVEKkrH1UXGmAifgAVEuGxdy4HRnhTmS4pY3xJvnbxWv+KRT+sQZys/m4wMsDmjKakfRQai0n9wMrT4iHk");
+ a("n9gnf49RsB4d0PQvUcSvHWEyGolr7PeClj/oSF/E/9OJyNPOojZg6nU/i8RBy8Cp5CkHVROSEJUFj56p2icDZ0t4h9l8zKgFoT");
+ a("zYeQV0bOh9BzQsi0ACSAkiZQouZDxfsEUwGm92UKGtxJWmSJb4EVLlKsBg4/TVF+1Ohmqmo6msDtv8IoX97nOk3sdwza1ro5rk");
+ a("43nIwqpCCozjkiq07aniiG4hmx/TbdaUi+aYs5zrAEHJryDAJqpp7NXYJV8WHEcRZ/oCCUYT1lGI4MdZThaKee4RxkuCOUIZAi");
+ a("bgp3i3RU3zNGxGzTc3gGryzY8msMgLs3bOA+hsY1vEN1f+EQMNDVof7oqd+ov3gAvbxSs8jfiLHRluz8PpXgbIIxBtwKUDKw/i");
+ a("EtQijFZmDyncWNX5sYoSSzA4ZJKzUdmnTUx1Gfi+DUugkZ4H7ha0XqZUGFz/u2kdTj6cFp4tsoqZSmqhlE6RBMa5b3u6ouObvE");
+ a("58Tn5UB9WwOwP5D8A0WUku0viqU5YMIPXi8vltUv008tczNbmKx+GcOHfwm86omxNOKH9Yo4j4HDgeupPUH8K65bnou6iu7wHs");
+ a("ilWRPVxM0RPc/QFqjrzDQRVTfRfIhWcUfwIxJnGl9ImRlw2FC3OBCTt4g93wdgrGmeajxoAl98/6S+2f5Ikw210A6rYDugEiX9");
+ a("CFn2GMnKdfCqV+r7qjjzTXxGeKdwdbG31GD0PssTEtp3BU1K/cUDl/6Co2qEMdr25awjJ2Q4hHXrCb58QLlsBfum0rpb01vh9s");
+ a("JmSTOQxWtzMZDRAQlHnHWikxIsaXGsGxUaYTT47nCmShNMlebMn2KuBA9SBOtVwuGRjWSbPd6XhOZGLNrVJ+jbrUxbWfDcOpqG");
+ a("Vp+DT0Cw3HNszk0xNfxB77ff/E702zbqt3EbANECsgF7TiwETuUuGkL2IxUYH3rnlH+ddclw6lmqqbU4f0a6taI/eoQS3IP8DX");
+ a("2EDIkmMTgg4xfBq99a0kqLwjk4mwh7+6OOh3pR85+JN/BQJNS0CS1QAgxffimaFl8RLRff/oiI2jOB88h8y0yacrwl6Vbc263n");
+ a("vjZOTGMrIE50s9NcSSsvETFLBhSdK+3f0wNl02tG/lBOQ0JnWDIYd4XnO0fS5hldRj114ynmkgAu8U+3ViQh/VJe2jkV98ucGr");
+ a("4MR+1X6lI+IwnttUnEDTMzWGh9P61BxAEiZhWDOJcT4m1AlLQizhtA8RNKElA04Tdo1QtaaQSCFoFAnE+Iw5O6nhai9ovx9OHo");
+ a("u4wMkvtXf8PNz2uFwRfvbcSeR4FkYrcYLZPE1OqbbhbmV7Drc/qGNDozG3YjnrdQK87nn+VJgieHwiE62zGbcRhMlqTZ/v4YHd");
+ a("d1+xnbvp9Shd3PN9iu32h29yVKB3iBPRn4KZ8NvDdZT/GrQpOYjhzadISKTdP3mACm2GiuNKtrO/kUrW3SkmGzJtnTWx2F2iE9");
+ a("82VqR0zrLLHrV1dB5s8xNZC+oBnfVOAa/jZM436rf4ODHw+fuwYCwvxA5VA2pRdqQfqiddNVmn5OcePeYCvpBJcK+Mz1kfwWGC");
+ a("bk85uIoTCc4AcvB0Wfx4MSVkKxAfpEZzKZX08027M7A6PQDnDSUBI/bTALSbUfEwXiEinuDcTZXzTaa6X+4pnqw0wpTn71sj4D");
+ a("RH3qo+oj+V1Lw1kGZT5IUiurVo8Noh7VFDfBHEs/CuzJ9pIS/erU07EtIcnzDoawCQsdzKHytw0bR81iEkDQHPv8r24WVv9oiA");
+ a("dRlTZTlXRruS0uPpd0KbPLfheWIoqy9wt196Wox1Hek1+KgFaD6uM0M1nuTjMCqJtyPh/98hotd5OKBRT+24OkSHOc52TCtiK6");
+ a("Igk0278Wcfzt1GEurLsOluu/ROYTSwbAXBUCuyv6EIVXNb0LU/VvdHGG61FdnAE5F82GVMeSusVqcX6l2bLax3lgmqwEH+SxQ6");
+ a("xMnVKsHcPA6qCX90UF7nHuEnKQ4yWZB6JXQmdoJcQ+EbWq6Ie5ncj9ik358xsCkb0k8zuncWlE3kQ9L1pQWBtDpTy2fJb44lxp");
+ a("fZcUNi6AOCGkkLRCmsFCRXawsaZ4fhqnvTm8nF9beG6gjE2nuJ5wcWuLQ6cPDBmKdNqced9XmEEhEE8zVN77TsuVx1QvU9tGHW");
+ a("wRjyNw1aA+dhPmR4Dsj4vfpiqRlvUFv7mqCxofpjpWjQDj1yKoxpswBNWmvyBspC+1giLHmrSx3PyoPv88jAS+V6PhHLoOkOb/");
+ a("RKUJeggMJwL/w5NGRHs3REqYZPktJgeXD9QbJOkrIkjnRZFunMukfyVJ03qIO3wd43FgyOKkfAXN3fkQFbeiDCW3IMhN9COgvh");
+ a("PPtfjgESnffihCvg0IPjzULw/yVVpF0Chk+gsR0O0RNnfhD1i67HccjpEL3gFvjDAaEPo7QoMQov6cJ4ub8lB4owsBobojuLpV");
+ a("Q1GBA6S2MC9eTFWzsBGi36/w6yft8YzQPkupModm/xRtStwIa+sB3HCPOu30naZ3VXs0xmzBaZf/UVH1GyjOck8V91aqgsMQZf");
+ a("7hW52/Lib9+g0UPTkNXWBGkN9Bm4KMu9iKfhBHIUCmA4iEb5zqrNnAM1IJM0UJ65rRmiHUmo/B4OSXGnAywfMBg4Zk1Jjybfh8");
+ a("VwtO8Sj8zccntmDqkwj41bN3IOlQFg9k0sP6rPNErT7rPFYrbpO5abl2+m2m+4+HdOQHJLK/lpqVpmbfiMIY70WJt1DiLSC8C9");
+ a("KQvl6m58v0XEEH7wvQSKZzm8QbUanj2RD0pXWZ2iX/osXNoMV89zICdJf0gOiJT09q/LgLAYr/6Rf8lSTIkho88j0BguLYhaxL");
+ a("USvWr1i8IVJfG65V8d+OFpxiRBXo2SZdRb6ENZpuL3qHPuvcZv3+EF5ES5RrclnUQs89g6m3gxHk7VakvN3z6x70qXtIn9dD+q");
+ a("we0ot6SM/qIT21h/RT62OmR9gT3mTEIExar41rPgK1zX58FunY1o0E1DBCXB0AK5WxkoKpKYyFca7dLb+WGOU/ub4Hffge0j09");
+ a("pM/qIb2oh/SsHtJTe0g/9WD36V/1kP7ugz3py7P/dV7Slel4InQJMsDHbjIv5wdi2IdWht5xF7TD8qHotGxwTif0KUj0W9gMka");
+ a("WZ7dPnHVlxoIsdbpkfJY4Vdo4UM+q3jndJgCBmM5MNyLmTzNoevuH6YFCvyvsRBCPq0776jPW568z1kfMtP4EpWUfyS96NDt1I");
+ a("4aePyjVWvKdTUrYgwWc2pj6L39j2xdXDZcEgT4FTjxoN1blE25PU0AYM9Y4vhJwhBymo20tloYXHM15J/RlINtgJreknenwfkd");
+ a("EuprpjRygfbacWAQV9iCn+wbKY1nil/tYbR/RqDFHPJtJK6kbE+eKwKF3L9qdPS38RXfW/avT8bitAD9dB/Xwa8vD6DrjFQMmS");
+ a("QJS+ibrvatL/A3KuyNwIGCNNDRymvnGa2zZUJP1RJDWQ/EltpxHAfvI5RJJaYkK+HES9fvs79fqNof1YJ9O5EVlYtkSPtaqnaf");
+ a("IdToOUJXtaLP0awFuFdyftnTEYkRYDBKwUyKb17359tZm6SF9tnAiSaaYkEpFlqznMORic2jZNKZriM9Q/z9SKtaP+PfuDkU6d");
+ a("3i1U5mHR8eSqo9BbLaZXOozc5Q1p7E+CSvHlsp+bReLbudbaUnRSjGLRSW5EoQ8dh2v5VGSDsWmq3WXMf804gCexPdl9zFNK0U");
+ a("mHr5dvdw/uTri/eHQnobWk344e72J/BkvoQJRyxvdnw95SE3pIP3x1t+niEesXV/PxordaWRoM0htamSOa3iVXdUMPp5x42GQB");
+ a("2mOy2Mj867qvj1rTXbo6uTQqtau/QU13qKVot8GqqwftheYQlIlaiv4prDPXle6GPuYPRoOjvhciwNOPlqDlvdRrWqTuzhnkoW");
+ a("zrufo0Twkp6v6rmAtw8g2kOnwd2TsbDAlgqn+IaJwSxd1QMPXpe+MN9Na8DyD4d4v2MRPln+O3PdpTjDKniPuUXHXJVcKWPOuj");
+ a("8X0dvVHNRskG92BEMu2f/05oPwHjfNbqE4/37uxiA7Gb94JVq/6r+n1cyvU7B1XBWYwpzfitXps8rb4r76H69hGNqEFkT/WT/P");
+ a("FibP6Q7697SF//P6a7Snt47x/mM7SwlvzNNbARuap/8D1ThNVw8pEKH04BC6LIwuXIzCpytL3Pbg46YLEByvUkg3Ec2W03d1oe");
+ a("bKpuI/DIHmKvFSUsFaJLPZ816mVXV32SJHX2FHFaPPsf4ZNQ7PexWB2yS2QrY6XbZHr0+q49nk+CCa9fTeWn/MOz6FzqHpC1in");
+ a("7SskgS6R4UOB98+VocG7Hy53QGbCwwhx2L1/ipxntOTJqwEJUoYODGfM+M7gOf5ezEPHrrVFmnsPEq7n48Z07tPn1U9+kvsfOV");
+ a("+6ZIpKj8lV2SosYH7xmUeIJZr1kE2b4mu7EyrUcMoGePMeQX0D4BrRHQDwKqEZDpOENVAvq1SFspoEEi7RYBXSCgWwVUICCXgK");
+ a("4W0BwB3SSgGwQ0/QRDMwT0lYCuEtC1JxlyCuhmAU0U0J0CmiCgOgGNF9DjAsoW0HM/MjRaQLs6GUoX0GaRdq6Azj7CUJqA7hBU");
+ a("+gvohICSBTT0FEO9BHShgAwCcgjo+BqGfi+gwwLaLKCDAmoRkCqgTwTUJqCAgD4T0CkBfcRQyuuQTqh9DoFXir7Xtr+3+vSd0j");
+ a("CXvlM6F0EIHGajlci2HQ8f1IrJfLFAuJCvpv6d4r7gOFMuaIQ+Z2wnSXmowL2GDwwNvcSZkRTNJD+GbOe+fgfqs2ay5M0u/vke");
+ a("6eG9+NuR78UPAj/cOO+NVEDmZOmB9jHdA602uWv12UnoqRcSep+I+nC68PmhdhTJlCh9caSYt2K2lMmx37+vi9ke6CM/Ifw7qv");
+ a("yzuYN/3tMbpxYVspd6IiKUxw//msS62O1Suu70USkSjvd4Kqruz88DWgstr8PnegNtU9RSVBRyZniEFO/rQaUEmZgm1JdJs0S9");
+ a("HpWE9jKFdbtnD16rLY9jeHkU9VS4njHs/aLnBwaM0C8+1Z2/mO1ifaKFofM6cdQIiXgcvpPwGW1ZW8nWroP4J94VD4Brd5eSMN");
+ a("EFN5sVM0ZS1Sy/N2V8YzRUTLbXdHrGCSN7nix2SLGjTWjgt35IDbpS81kgnnwmTJV+EzS6LQkTf2agR8oPYJ4/0521Mz+l/Wsj");
+ a("VKwQ6KBAIgJHEJAmns6g39oU5M2veHeqzpjEtrGS1YUT6bmV+gGOfGd+n9UKAoW+bXr/lJD6PbaBbJ9vIlPqpw4TlNaAUvs1QM");
+ a("p3p2dY7pmKEO2+2XnJ5w5eCy/L/lSdiwoUbMQesjw96zn8VA7KunA0oLNgSqoyJav3+wj3QXiJyb/J6CI5UIIPBEnbX4japP3F");
+ a("1sh6qQtEjQaq9zqoRt5jv3Sb1R+m8R5Q5g9bH5E9XWRHwNEQJ7bKDmoPCBfwFvgs1SEqn6LmMln1t6AYbscw0j/jU9qT3Vz0W2");
+ a("Ht+74OKAUZoU8wHUg4MhZsxIOhZcOy6Mc9Ee1clupV41aw/WUnvQYa6/KL9/Om4hp9ivy8XJ8iPy1nCa7L0H7MSFt9BU2y1x4n");
+ a("jstVzwLjk37ufiOpJ2NvAPH779ogfB5pheAdulIz1qTeD7h2e3qHOxnm8G2QSx8H45qFSf3AJchwO2fIRoZsTuBdyjlIuI4T7E");
+ a("iwGzx9ChVTC8rhvYl3b/yyAuojtgdGf0YEssjGznNo5ktsReBcF8HPa7A90JfhTRq8lfrJSrJsUZypXtyKoFGu6jzSx1gIWJlq");
+ a("rj5GJC1rTwKsbqewm/QlLGsDiECgajD+uEe2f8bZUzZ/ST2R1P4uT9USflWDnxSwqBm1JfT+GaxhTxNTHE6gYs5z0kCHz320sy");
+ a("NOIfazc2VVt50vt6q/NhjpjlXztTIIulqDUZSbx3klRkkr0a8hJALhGLrXM0DdeTlzWf7VjER8UpKPMXaniAJ2QcYfmieuE7NE");
+ a("l/1u8ASzwVNtzAbd67MXsmWp6dmU70+0Z5iLI86kDKemHh3KLOmz/Z1CZLOFsm0/IbLlT7K5R6Bcf7W0n7NY2s9ZzIw7DySjaE");
+ a("feb9NHQuO6bEwW/QiesuIjcQ+g/TF9TbBl+JrRit8c/Brxm0nfyyBZ7DNS+PI0guJ7WS2KnL4UMxLmsKLst9TJaDBwXuclZ1IZ");
+ a("KsZjXH0nM64nhfZfIs0eKAbQqQEo7emVeml2WVoBgvxg1DOYembycT4Q9kXKyyKrE2Mnd/IxxoMu8UDaoO65kgfxy708iBorsK");
+ a("6IkfXrluFDAcFsWf9cxfQjsEPf4UC21xcY53e1eJcC2diH+qlOoTBEPQ9b4wziYXg2OBzfo46X0sVHm/Q/DdbVHZ6pqCG5FuOl");
+ a("Wix5mx+kDr1zqbMOJgIa7GITBrqVoKu9f7MhyFzbzfn7dPm/ba8ndNB+Z5n0J4tPR+wa/hhlsSf2e4O9VfpQen6pD2U5gjyUun");
+ a("0N5kyefW5ERBZ9v1W9wZien7j8YBmCPb1JGDLdzt91vmn8F0bMTwgUUMCCQCEFejFSmRxTfA78m0G/fDak+V9W6/Nb5fyPIPh5");
+ a("Pu4WY38/vo/0ZWa4WGYm0TJzFi0z/YT9hGDEOrNvuV5OpSynAkHx3bDvCjxJjq6nS/Eui8cPu3fWfeo9kB8MIopsNbiUcaYbsE");
+ a("V3+TYRIjc6FwUulgWaZIFxCIq31r1Fx8jvJGq8smX+Nxfq+ZsQFJ/eWcK+hVjSXsKwQF51Wm5zuo7/Mjn+kl75Qn3854nx18bY");
+ a("PT00P6Qj8+9l5lyZedxC7r2bDQGSOq+QOAMlTj8EeSQDsBsi2EZWMbb/figX+iBuXUC6zjaoZQbyhcpaNsFwUTClLnkUfNSpv8");
+ a("EqBPWOUuM/S4wLbYK2wLQyZibe3n1YnHdq2dau+Ul94kZaxYx32rrKVqLl98xwTGSpRrolcAX1v6TL5tznfuyoJ+5RH4BIIvO0");
+ a("c24LXhXErJnv47wjqFd0/o+0/NOLabHpdBorbFLcH27fbKnTwHL9YJmca5sjxrvjV/pwrL5ZH45VN+vjfW/0934DIsRqdCG+Jc");
+ a("9VLj+8dGOypHIfuCNOXKcXs+bVnSj+J9wuZ2CK0P+RxZ0lixuAoOAQ4qJZEufQAh3nuwWxvvXY73Wx/kkaz0gaTy/Qm7WODbuG");
+ a("2vRzvU2XUptmuvyWF892zoWX+Kbl/eASwLcns4nUdfqjWdze3ny4QQz50dHa9uQdepmXyTIvRVC2rVrinCVxBsi2yXE803pw8N");
+ a("bu/BVi3JdjaD0q7kc6urgqJP2MpfK92nz5Xm2+3jOjjaTfo1wZ6pvOUN9YalqElVvL6jYEXBGOD33NcKjf13cocw9dkBxgv78w");
+ a("oHsP7T1Jm/apVTwVRvpCrBgfPj9+NYPmx/wtND+6L8ep+W6EdPcO891iTQvJCXqDZ+jYXAqK7KmQyt2J3Rd0qTgXqsaIny8AIo");
+ a("YSyZuQDF7WxuvHJXpPrJFil7td4eO1Q+K4JM5clxwvWlp/Knze4ytF3yvoe2WeXGblfgFYYSxaKUknSdJmV2jmHu3X3v0fczTw");
+ a("pkLz7/wMC3wPcSK+tODJsBfsgm9il9dLlvfIPL28DfN6Ku+9yPLujVme/P4Ka6mwhyr1wsbKwi6Yp3PZBtpaVmlrCAIbQ2vIbJ");
+ a("nz8C/0nN8jKNaHnwMnX+JslzjvIihG7nKXH977qizz66YH6SP96XEe99DDq/wy67LeiA/OtPs5Tsyt9toJcJAx2Wbs5j6eOxMz");
+ a("GvhqrAnSt9tZIpmPHQEqUPOD2DpXnxZfzgJq40GeVszeg3QOvN5P8k6BZmfTn8FU6h+Xj7cPgSJKfyyUHsfpfWU68XDwoLhXAa");
+ a("JbIDppv9rgArLaf2ssv96+1pFB5BYStMa2PonbpbNl+pcjJSY9wXK+gW5PzlbB5NHp/284JN/8xW4jyzeTuso3Wd8Eyd3qE50p");
+ a("XTEWmHAMt6wKAsjiYM0HPPWlWWqaObDIUrNGmwxrHgoFFmuBVaF58q67Qkm/DAXcIuCeT38u46ibQ2krOTDfne9VCyw1t1Dhvz");
+ a("KS97klIXo0yDy/+etb8bfZ5a/PxjdKv29p8Nva78Va/EXab472+7GWnqHBuzX4E+13j/Zr1NKDvP5LZmF+8u4zYmcaxzQhXNoX");
+ a("R9BFISiBoOwQZCbo4hBk1TG9e206jZY4Lu6M7wuhevYRyZB8b5XmBKtzJ5VN3kvPA+1QOEgLDMA94tEdJGJwBVM7EICgeVhnib");
+ a("FT6UVuGlpg06vU8Yr008D+OeAFLKF47hsldWOaHNXLDZTqHuiAAvKUuoHZtIPp/bi4X0VcwlV1E7Jx/0SOO0jPqiT2O8Mu+te6");
+ a("WZucTtzorLopnlOlCt0MCNrqE4wGticwNhhEtbduK4QHVge9v3di1bwfidiGCN9kpkJQwEMDOl2mqy3jMDfHjWXhf/52owEm+t");
+ a("v7AJ3Wtz7S7iIcGlEvwG1ueYeDLVp+x2u3PTtY6jsM9XX4mXWs6TXBWJ4zxlaZCIt5/fjMZa8JurPgkJJkVY6VVcbh7kRE2S3r");
+ a("WgLJRDfQy+VHsp/CRNfzEr1bA79T5X2HqPIfAuBivoYeTe0cthBTooxpap+h+QER5eZp5Q4KXKiVW4AER22RgeyvBUZ1KX8gl4");
+ a("85T6KF1eMvjm1F+D4EiIXmBK2C447N5uLZL1RjWzyE40cQo07cyXKFAKdikBI6UDVpmuYMD8oi7JuyQQ6WgOYvti37GYeU62zz");
+ a("62aavW1HGcSDbf51zkVAlH4Hlf4GxFd6AoYZG35OVlJuQDJF1CU3kq7/p9gniXOwQ9QUCR3OuezyWa3aEe5ZOEo+QPcLOIRuM3");
+ a("3zrpGsoN2H/D6TsguaSEWHCRf2qBBFb6jatJkplf4s5gnpEZpuBvN+UN1yAfrR9P1tfIk1ZTGqP+4yFjGP9gdTnwcNEAziX/sB");
+ a("1t+CjxatBPXbJ1HB9l1EvmDvFHwEML4+ki+wd/uKDre/ZGD638DFoNBlGvoBa7Fe8z4KFnVAj6g3xmMtnIg4lz9kexFIdkJy9w");
+ a("VCCyPkAPaT/tcO1m1aNVroNl2vtoJoALIJb0EWmmBwTxNvT6oXoSG35nFDbKC3/b0QvSVMrxGwX/3pZu5/ddMefHN98afFtP+X");
+ a("2tdsumyn0DBSig5ryiRS/tD+pNh1TycrUyPd6DuYWC0grZGqgfgoBiCmniBnJj+gw066AphTs5F2pIIvD/cuokxNkCypH+bQQX");
+ a("Tc50hA+scifSvStyVYDU5o7yOGiHkuXFmQ9ncjy93qUh8HQlHOWxByvXrKSDPNa2Npj0D2wQmf65eJUkmUabl3WjBCR66rPW7K");
+ a("UzUKdK/U6c4TdF2gC6r5hCHGB1CWgCLXWZACgY9YUFdmR/AdEXQi6A9ysAx5vy8XeaW8Fen1J3CndeKfLKp8IShEfTRdqwelUE");
+ a("PXj+ZO6NfQCTz12gyeKjciDkn1nNS/4UdKmiCSnkScH2l/1dIOU5pNpD1EaXgP+Tbx5GrwMtu/WSjfB8yMeB8ASJ2M7GT/RiIl");
+ a("TA9HOv0TIA0TSLdIpNenhiM1AEKrm46j1aZ/Mu7lEnfE1eG4QwEBdz3hfhJg3P4S9+Mrw3F3AALuLYT7N+C2/yiatO8WPcO2q8");
+ a("IzbAVUgvuQd4yGl2hHq35zmEvYKDOYImoenMIZypBBiJ1eFBlWyAyFEVW6HBAyXKhnWC0yXCUzNE8Lz/AqIGQ4+HYowwyRYajM");
+ a("MPya8AxDACHDu3qGEcggOTOW/s5WIW9yFfpIgYcuPnIJI+LWlyNCq3qRb59ly/vCgI47E5KnuSpOGjB5TPP4AwvZzWDV+K6ECn");
+ a("23pmeErMaGE7kQRBDv8i1VhUKkXJKi9xv6NaULxxSusMvX4SoYbSgvcmWNhmzDlRX3Rnke/hoqL3BlxcP3AYXd5/HfQa4sz+Dy");
+ a("c1xZiTBY4soad165hQ7qSxL9sCkdSGLf0MIvQ+xGv4f6FsJ/420Z1OoOnFXw/lztWEFN7qw6v9Dnpgb25gZGZChABiS4Wuzqxg");
+ a("RxLykX3qj722VCeentlfiN8uU/LMJjv5IU0j/4/DqyX4he1OVGkl65Ru9X/wG9e4jeQ+H0uun/6tPtpzwm6sBeove677uLzg/v");
+ a("u3VLRN+dd+a+MyKDP7rPZPsuqtTb1Uuxn3TuUKllI0TLEPUTRB0Ia9vz18ZjPsiQbYvq/zbPf0bv50Tvl7Hpwb5Af7qfHER/bP");
+ a("jjGUFr7NWjWMsiQPKh6Vq4D8KXpnPYsqVZkoqWv2L+guBcySX99vE5n3qb2X4hokiAekkTaGr6+33J5Io6kFrj3cYmmz0H8r5Y");
+ a("8Z7LT/o6J4S+zgxeYM87zdB2Af1WQG8L6EsBvSGgN0W+8dcwNF/TYxJQ3imGRgvoTgGlC+hbQWUUIHXaSGqlaY+DRBmmffjZmI");
+ a("CAikD7KRfsbyKA9AP4kad8VsUrwzKYGveW0YCgHcGPibhid4Ly37EKdNHvXVnwQTPtdUYrpmXI5T0aVzEAI7YY8idhIvrrbLIy");
+ a("3WI6DrEK/XPR+tfM69/L2vr3C7n+RaxEmwCpf/xKrH8SKaEkYv2bCqRqgXSLRLrQEY6UCUj9mUAqkkijneFI6YDUSwWSTSJ5Cs");
+ a("ORFgFS+wPJ5cf+2g7gSVvU7N9V3wOvlPUPVX0T+KBGgrAMvCN1CHXO1xFL2+dXxJ4nZ6fjeWP7b7m/fNvXlCRkuOCoYqTF4Kjd");
+ a("Wtua3uGobazBfnSMzd1vjNWdMibbPWyM353TTrIirDJbXSN7Q6egl8FhWdfUfi3T1OKTEZ/A8Xxms7y4dfXWY24c7uIwdg7L/U");
+ a("2BC2iOXnnU4hnknAsHrYUJmZor2zR4tDLhJXVgMD27Ti3K3umH/8Gimp3uRO9xi2XtdOxC+JW11CmJtR7iVDTnOCtFscUfGMV+");
+ a("hd3QNdyjPUqiq3+6s90NWB01GueOwvTJRsx+OZ3FLTjXauc+9CCpCKxNz+BLA+FOTr1reOipg7tEro91wtMdz3wE2DQgm4A0Dc");
+ a("goUWqYGKnrK6AnztSFoAizCkhrJUQFuALN6RVRMCL1CkdAGaQwP+uDRqNh+VTMAfmPpm9Hcnki3FlZ7ilF7xTmHVwxEFMF7l7o");
+ a("iEYS7fXPsY1wZWA6FJf01viSmxx0Hm0/m3L5VD8rlkGGpC9o0v4/68dCvWHtt5qSjZH1zJWplwhV/XXY0+qqNdld7p/LMN9Id2");
+ a("185XzRMIp6Id3PfkMfTd+A3xJ01FMMHxdIWadZRYE64wlOX8v4jnr8Ed9+AwlYVM9QTdK7MSHylprirkPh1AJ9PQPpbM24SiN0");
+ a("cUux3fnAJghw8VH6sPX4Vt1zdDHuJ9N0Me5HCGKshLUJfhBipd8MHJKHUCAbKTYK5LawVgo7IpJmYoShpC6NeWqI9rE7m2P4/8");
+ a("Ry+kGp703oKJUolTayU0GmeAqVqmyEc5n5qi8nOpaahcI0Dxe5DY3nCwrImM9Hr7Kx4Fmv07R6NqQgnxzZbSnGIB8KphYjkkj6");
+ a("2fuch2QZlpoHQQLlWcFNLF3Hbu8+rBoOiKw+Xd5LLcpClRuod9Upz7L6JD/i94H7Ksya3twkW6HvziGaMT906bDZepfeVaZ3qR");
+ a("dBZn9SbzGdulHH+bnEmU04vjRqknEN/sRyNdpVPifVJrFd/RhdWOp7T7kywbvX5ZlTfQWJTj2DipW6o9SIJ4UCSGIR7IN5ybY6");
+ a("OwI5hqajnOeM6jzQwft+O3/RCGRwv+MKFgcVB/BLfMdKyb7yuTiuFADmcmyWmpw4bvoo2Szlar1ZtQhqX34ZxoXdtKz+s5FzHJ");
+ a("6l57i5SM/hQpDQ7UASNVSnniSNzSN7LMVNviZy6ZnLBB4VONBD+NaoGVy+/UvawNUwgogJYskBSquOchVQnApXh5lcaKstvYjQ");
+ a("MOsJpMwvxcZ0GmT2oYK6ZILc5RWjISzXD20i1zltsgjv0iF4yH0Hs8c6jlEmDiG56LbVncvmsXV5aq2TO0f8GruWSPIpDUkZ2K");
+ a("SVfklk6R6t9Mf2YdoSyHnbVvzF5Q/rqWOBUDdcqWEvArZL4R6jnU0HvlllLUPqQKisBGbgkxr9CkC3PVQd8tUWCgufbbJjZBgv");
+ a("Jn942aj5cHuLZFAi+BqCWD9BErlh84SXtSiXpd36r91Y7HtfsyBnB7uzZgV7pi2huyS6ujdDkufwfVikuJwO8TVYVo8DWvu5LE");
+ a("sDb+dCEpkQ8hFdNyGuMH+RuTwdf5MrzlWwYhvdJqzqlf3VjfcJL2obasD15PUcOAmWVTtEyGzx0uRHfj1rXkPAoX1zOLvwElvL");
+ a("H96YI/zhJWsOdNtzjJQlrjKP1HDtJWDwW47pDF6o9C7G5hixDhR7uxqyQeJJJbF5YDbLl8keX/xkM1JAB1uSRkFJ+5jVR/hLF4");
+ a("5qgN/1oy6Fr056/6dZG3x6MMvXqADqm8J8m2UV2e9hQV+JuLXTutW3i+8/eB8fux8Tyq+knqmA+1x829SNnvH5sxPK++XPNlck");
+ a("i/GwebJR3nwHamt0+CY7Q931hIGmlWRqW3C7P6w+5Q8AI5fnxLIIRpHnmX/RdiXwURVnfDcX4dxFCARFCQoaBDF4JgZ1Q7K6kQ");
+ a("2NAooWlTY1YuuBklWsIQmGaJY1uPWqtrXiVW3VitaD4pUETKJVDIgaATUq6ksXNaJCuLL9f9/Me/P2vc2GXvx+ZOfN+c3MN9/M");
+ a("fPMdwOl3R/FoIfQGhco809nlq2dB7JXFV9vl7vqggd7g1PdXlu/d8lvV3yjYoyujugWCky406FfX2Qb9+hJBslRw/eF6viEqX5");
+ a("PK9yqCwlLBjnlG+m9U+kpRD9nToPP1rVCHrDl91YvMG0MPv8pg/dhFxZQrifVbiyWpTZ2JEGzib/cRs3kYPrCGr8dV0AFZaxde");
+ a("YrRB8EZE7/+3I/zHG/EnjxQiinbgz2tf4s9pzBlPna0A084yAPsCQeF8YgRgGN+IBrdcIvRRqvkmtQOQm0ccNb3hY9jWmfULMx");
+ a("Pr+5zSZ7rir+MRlPFZG5OprHbL8qMS119ArlLQh+hoWzbpP9GaYNV36Cf9/X7SW/pJ/1PidODFHJBX7ZrPVDa7/arQ4e8QGoXw");
+ a("5rEoWrfL5i892KN7yYdXahhpW58VGR4uxvZCusfLoTFFUSqT24+l2JnXW73erE8p4L0lmmi+lGNuJSnPjl3v7kas9uHNxFGuEz");
+ a("of3h4IzHSn8FmypBscw8XvOHGWlHbPutDpLRc6HWwnG/yPr8mvilf4kfonfQLSuenaBT8YGHEQ7V+YsP0Rpva/0tD+Rf23/8H3");
+ a("RvvKH6fS9o3nvzhhOgBnIULccNnddybCMrOejqufNcmsH++MhnscKiWu/JxqIpnrofd9Fl9Mskazg2q2BKQibebe4srLBnqk1O");
+ a("6yXiTWVA5EgBzsVE3GUD++WQ31L3Ig4eG6gIeaBIlYwlfTloJWhblxbrmbZxIVh1BxzHwvEvpEj/PPK6uFWtEa/PiDjzbyz1Nt");
+ a("/PN8O/+80iFO0jg6lHuD66FAtIs1KEdDybkncliYxZ9qfy18IM9QPpC9iF3aA+lwei/6DuDme3sCm0TciewAcLUYnn2+BtQQSv");
+ a("KLCJzYaXNFV/LaA4Nkc8AjUuA9wut6cX1x2Xs4/qIGMb509r2bpIoiF5pw2AUc1giH765mHEaYnUUAhzWJwxoG9p1/qIE96kvg");
+ a("8D3n6wP7tBzYCVCIC9V1sjCVGLWQGLWQGLWQGLWQGLWQGLUQj5oY+INf711VidZbmQnWG74ArP+c2+96u7xbrXeTfjSQeinrSE");
+ a("Mer8dw4GBDvSlo9bhNqtUucOS1u+ZYUS+pm8+uwR5oBNPuobDQzZICWAtoMYQWQ2gxhBYtwt6J5QVhT0HBiGuapNOQkSou24xX");
+ a("SDTsndSpN5lOh+bg617nDghGVKSCV1L9HkLcF6dpBF8hitU229qXU76lvljF5mA7QQFtk38MlXRqK29MoI9e0k1rhSwBFJCynQ");
+ a("HDQCwLmBzXloWpO95OXktc3Zl/5xiNBfnu4Oc4fCgQzPLkbRgZ40mAeBPSG/g6JlGEQJq4DO8sous52zPEd3z77rBjrl23gDiv");
+ a("UdgRbFTyuab0mxOkA5qyTWxm0mEhrH3Ru9BMtojyNiqFEtxxmKYtbWqaNkwDyo0/zzpNt38tZA8UqnUoghcfvxT8Oy+1i1gp+F");
+ a("ZhvjoxX5ofS7C8CJMHmgXx2xGYgk5MENKaouct5PlCSqdDiE+Fw1iuHXSOoIX9gpM1LGndenlGcXC4CbkoD/WMC1acyW5iKnIp");
+ a("A9XOg1bPKuciZQTa6zCnli7A+wP6rk2twwxSrESKWHnc1dolBX3hY42tfwCK7V/228+7nKqfsnlY/XMT1mpXocFyYHj5REf0+s");
+ a("NcL87tLsI5lD3bfAY8EBXOSI9kUBJH/9QUzVXBMUPUVdfBxt7gBycauIKJpNPQX/U2ou01gwmjP17oBOXnriYjiPTVSG9Hettg");
+ a("QTLX0DvveoVJUz7Fgn+xVMekByUmeSPYOS7vu6GAauh3l/fZ0ABTQ09QQ7NsDW37p1R5mY3F97/Ag5mAXDu61oIHB+1fnxaedu");
+ a("rFABPO+4bR7jpQOdSPo//EhKYUV3CPe53uL0Gl83dmfPus2MGhwkZvcrPRaCZM7Fadg7e4Si+E5yiFIyeBcGxA0lKXKQqi2WF8");
+ a("pvMnfPyWtWiXuaJRkplKLswE5zAT7xnd8aBFD72s81KwTHPC45r8HRQZS+Zx6R2PDeE6yVVDZmQA0RLnuZmqD2Z+uIWm8hgSM5");
+ a("/dXABWENRPMKcG81Nxxs3/+tl/6blvKSxpp7GCkYelc4LthEJNe4AfnybD74WvqScJ/ASMThqp8lXBB2FrVTJcF1BEatTFBu67");
+ a("idSnYdQgUpwWSPOHytIjZ/saQGVDo7Qb7jOMfJ9ILVYRvT22WSHvER8BeZ/xW+ntOI3pLWTr+9jL+8c3tmeIEH5BDI+A/hgh3n");
+ a("BCvCEG4tl07+znfd3YuE8y2gEo6ptl7Gjx90eeOS2b90GyCV+YiRF0Vw1iZGM8SuCvVvm4IpwaAKmkTMfSAfR+Xgh9g7Kv/Mll");
+ a("mf78MnfVaPzNqhoK5ju1thYPqkgPlpH6Zjq36WyGWydiLv1xSDSKlMyC4AG8x9i1eGLpuaatzO/LPkCNOM+vEef5RnGebxPn+X");
+ a("Zxnu8Q53nd+ZwuB1C04qocOg+zKJR0IgHQvh9A2YA+eECs24Q07/KvWYhSiQcY4vh+cbKWUvn8noG7jzx7M+DvFSEqByZQ+Our");
+ a("c8VRRj/eDlbH2wmNCgu7O4GFg2fqWLhcYuF94FpHCk1QLOVK0lQln7xmosNUScs5eiWvy0rmoBJeXehqtuhqNnf13X+rq68cZu");
+ a("vqPwvNXd1f2mdX80xQphKUWedYu/rX7f119YdXVSWNn6CSrcXWrl6BSsJ6X/1p9IjTAlKarZWm6UabSyDCd+ReuTMFWTldoFJI");
+ a("oFJIoFJIoFJIoFKIUUms/MTnJ79xfBppP1aU6+eK22LOT/K4NP8qfqnNIn2abujTkAWi1MdOTsZ3SY5xUN6137qZzhBbZr5tM3");
+ a("WNS7yf7vsc0/r+Tf/FfpqtnQrPjxzoTUGAKd1JVwlK5yJKN8igdIreqP0zK8R7q/1+oWlVd6r1b6cPHdrVpybSv2KZWxomSqDu");
+ a("gWz7cgDciyhGhzGK4oGiHHxPJumB93X3hhBaPX0RclJkE6PcXA3FurXdAaeDDogYMOGp03Ub6dDAXaLy1wlfhuQDMeSF34WUZr");
+ a("xFkLJUyrTGSDIu/TW5rsDF1Lo/RE1pobnINbKdK7+oSnINphspKe1grU/GuuNO3wglSJ5J2SFc32jUP8USOIzObl2fYlDyL97u");
+ a("uv0Gk52xh3WDXmuFglS7mOnY+YXiPC2a33KF6obBQjnHEfc3mwYlG87o2JkL6jbfefXi81DcNM8J9UfUbrWR9kejZMx5pFO8zx");
+ a("fBvA2em7R5qfygZ7tvgcUcgx/t2iwI5vOYeUWgR5uOgMIYtZ+E+9pPfKy4Byxqp+w6NiktPvJXliaGSRqI/xniiLnD90/B+ZmF");
+ a("YUJUBw+VJvALvaaLROrOgUl86RWl2rVfohSS2xkfG4hy7IFsr+C6aV/ngkCOh9AUKDDRJu1JrDMZ5oyN2kVnyIn+rrcPuqbWuB");
+ a("r/2iXZjsAwDKmdpRj3PpmlbUpWOazpbJ8YlcEgEYF0zNlGVp4fLK5WDz2m980Padf5B1g2VaPEcqQb1CFESO8QtEfWQ0SQw8IP");
+ a("20BeRSkYLh6FENYAJwJzcH/CB5KBarVFuuPRTDFHwylB5HTIM5kaKFv/yPMImBi0FbFvFF4B9vFQ+GjtAknSKETsix8U6DTGIU");
+ a("je35/SnHQA1yaW86seqzmZ4eYTephH4FlOAsrfh40Oj4MRJzwK58IUI99ia707nJxtcpTNtobm7uDMYxmRmnW07iS7ORfvqG7n");
+ a("sTw+Sn6+aBfioo2QvBA8I4Aph4pQCVOCkL3/PVTyIPvPtJs2B/ZPODGsyLXqJMA93CGn+a6oevSJby94lJQ3nJmlHcMEpEl7p5");
+ a("w9sHEb1V9YZBnt66MqrXZhNmz/8FoZRBW8ut9sg9a+X8JJOTb6XyC+9qZsCDuQvjYdpocXsC0a/nty5Gx6l8WAB7cY7HXth0KH");
+ a("g2whmOKTKX4bxY+yx69HvKK5cd4Lgu1ouDKtKN/jrjwEVLyEGJQZX+ANUVuYpDBXwS9MaZCuFt1Fx+/CNmS/c8bkz1/srkxnJu");
+ a("qAKpw1BuPiiiYeoiZSqYn8xSMryAaCFNyi25m2LQTkXDzSqNhcX90uo7qRRnWzn0N1L/DbPdqrOhWVVg0S9vQXISvFHeUrK2Tp");
+ a("MNbhSSLwQzPd0NNpI2I0aBDNGa5D9s4c5H1uiXGfm/WLg7zPxa8ft7D8wpGBwVTpbKEvxsDOxuXspHak1ha6nX34B2Lcqhgr4G");
+ a("jBKInQlRSS7kUtCG25HxrXQ7KXV/srt9PPo9ZSPKmxuKkzmS5vrKXlb06XCNAwslvb1tsbDRWOPN0BcKuOaNKS6D45auOvRvrK");
+ a("Zo80ZjVthVoXgDw+fTOZyaLtr0FdGtzyvF8cbNfP+i9vJvtpp5tZ/yk4Isfy/a/pUETANt5isJemwf9R5ALYRRmJ1PSqAaTy5I");
+ a("zk8neNo2oQOtekJcMp8EREgeWuRyUh6pDam0ZSETebglpLTOZk9Bpj+CMIASr22dgy0xqL4Gs1klzb6CzIa8IlGd5XC4KNM/NH");
+ a("NgciiKlOW8P0GNnj6jdjDaQSTqv1dAItgOfpNCfRJ50AGClwf+nkPmZxDmYRrK9gN+mxwR5XL+ZHTmtwejfhWSL/xbU3uh3sH8");
+ a("0F9tHlDaVRbbN0iBPs27+lM0r2s2t7oxVifbJ9KcsAmfnr++xvxnZ66gY9nSepqIvp53j+eyL0ta001JMcn4ZmJ8enoW78jXM/");
+ a("SVf3k3jvG7V7nYEMfXc3rnndrnF8vAC4lfo9D9wk4/hRcWk0quP2om2Y0TJEcA3gC1NepMnzyZnifJKr9nkzn7RH3Os0lSrudU");
+ a("e9j9NhL06HfDSSq6J/+ibIylDz6Z/isAcfLsYKYn/iYVj7FH+x2t1adp7Twct+HAKCDJ18qSCMbiKMgw3CaKEJdnuPHfxj5tk0");
+ a("eHv4ZJyxqRejdPhCNhpofvMcpr95PvjzRG+ehz2lGAeXvouqHsqzvnnmQC+R+xrI0HO+t4Xeyy6mGpk9K7j+p+6luRLAWrgCB9");
+ a("+fJOpPyeV992fjzxL1Z+aTqj+3b0JVm3Kt/VnwruxPxXgD9Pn7hdNZOvIEBvH0XXEq62nau2P3XyUuQ3gPh3F34fT5THJXiwWC");
+ a("NYjjxTScM9c5Sa4cx01faJY7uEX7C7sLhUvaLi8z2+DzqRhHS3fd1uot5WGrJydF/8zPZC1krL2VcGlErKhBO+GnWdRAnfcO5f");
+ a("Me819ZZBQG0ukDV2TeZPnM96kiXnb6K5pH69ouloaXX2t7CLWjFRnoi0FrDGAUJP/dfvfW25jS6CmJ97vqjQn2Oz9zvdJJW/Ux");
+ a("iBTS4B1iGzxF7/5z+nZXPPp210Xi2iXZ1ly+wZep7b9P0b15HejjE3v/t3RvMvkaSrtCp3uJ3q+7tVfNoC27T7EG/sP7KKqcad");
+ a("xG4UFdu+oiY0SORJCvKjdilEQPR4l+uGJvnmEz0LMlsBdCP6IpUzsAX3imPVed77kH4+6zbKEqvWbJFJiVafFMPbLFc/yUFk/O");
+ a("6aGMBb9xOqD02+KZ4kRx0vj96x7MyH0TUIusRre37SRfqtAVl9F9789ZuE/THQvyl/yyPZg/yuEShX27ay9zNFmaW5wVGcdIKe");
+ a("+aLMNAHPiIsOhmQc4E7xuZjHYzqQNf96ADa3IEf2oYTj8+arT1KNxbS0KFHoqk08Lh9GdK5DSGifSfqdiDyMX2FkTcQxTXQHEj");
+ a("jLgNFHcj4sJ9ne93FxQRkYbp43X6d7rlO0l9W/HxYyyWvvmd4Ice2b+8BT9t6Pfj47BeuOY5VHPsSsJwR46kXMTX1Mqg3G9dT2");
+ a("GS3uZ6vBXsTHcjI7AP482x394qb9/n22/f6v0Uqk2ptb6ipHW1C4oOqPT4+JMp8CdTu3OkwB/+OPoCHX8qRxr4kxnJioc/mZGB");
+ a("2tFuJwfVLMW33zV1/EHb7xIQmvl+Whh6ZmYBnGBr7bdOWDg5UbdwUiTsm2DfE/y/Hs5KFdBeTFUcB2YzmTLpYPtlL8vhRG/7sm");
+ a("Gl5Pd8zgTye6sl27K2GgM6FT7bM1ngKuPtD2h9XEiHDiKfF2RSu5kusbrXRTL+5owMN48nWN8PrKufPyGL7NvzQYQV7iom5LBp");
+ a("Y6k/yaLsFOuRKgh7SE/+R5IbGGDaZkotlwsL/qr9sUjuiw77vviHVnTgq+MT74uXv2mgoxqvdMt42fnRdvwYNg6dAwBaKgLife");
+ a("uIWIwx+8NZA3xBPwJtwJd2yG91+MG/i8UbvVfGKgVWsNXqCbj9sI/mpd04XFA/qnvMuAXd9eLar53QWK+cXtzaQvhl2JXxsuFr");
+ a("WsUm/PJqhga139npb5iQW5L3Y3U7vwcL5Z+U4kn7CY/xbkt8kZunENKdEr9R120PoFajYY/eLhoVYKp2e4x2xZN7hRunDiIXeG");
+ a("vV7v+mNxr2O79UrQhROdBjf1539RACL7iHz8QT2T1qj7NyLMYlXIx1RDvujBVzjozWY+NsQYHOag2dct1+jemdI188b0CnDXMR");
+ a("wlyEMBchzAWYlAn9y+g37lg5PvRBRYQRAU8gUIPiOM0Fi/IWP712e0nQzmwpIS2VDlyIpEo7YkLHwCheVao/78ulI/zsRHs8lA");
+ a("Rgo6crJB6mv2D5DBjUQUe/qTxkBpRIJ0drewaREulQKJF+UZx/RGC0nw0aFK+Jin/V2q/ApI14Ea2di2dp/MLuZsmkznMa5hwV");
+ a("xTuCNhPKTVThsBk1lZOjQwNp1EJ5mKJcHDUoMICi0HZJ8HjPi3D5m8DCkk1/j/Vx3sXZ00/6h35ilOcCoauGx/Q/r2cpyDZ1eg");
+ a("q9nefs6nqK0Cv0Ex+cMfOb/Bbgo+FuKz+mMFgpFJ9/RMVVxcEf/Zjzy/EqjV/Mi7mnP5tG5iB9NEpoC6d10yh5pyJtKhG/ySiL");
+ a("X0vZiShbHDrbp6wQOFsNR/nBpIIX4IW2266WZ32/HDYw0X7eqf310AT7T4lG+3lRPV/9OplahLnW+nSwquj8eAh90lI3NvSw8S");
+ a("rMsXyo+/BbkMxHYJyAhnIO34ukCJosrbZ6/kgnN024p3byhXHyAV6N70RO7LucuQBD+KUotIlXZJf+8uhQp4SE5zkfudngFVaw");
+ a("2qn90yy1Gf/8Z+SHHIK2Nia/zP2mcEmj3T9FbQIHx+/lI+0YPsU6hvCRZIivAR8nZrONeT6ycHqm1jlYT8fHCE6X7JBR8CSQgE");
+ a("/8392/wvHuXyOhKa2Ng9doebfK5BqkWq64mBWNlcEWz3GO2KuXR1xM8mxXr3DCu9fT69Doip/a7159+WeOPT3FfJGZJT2iDRFW");
+ a("fQJ7fSA6eoFSrg81BPcq0bU4dVjX6yV4GEokb9A7qq/1ukr4wwu0W9atkD3gyjemINTnulUx+q7YYXrzUjulc11MVoeMzltXNd");
+ a("1WR3CdrYrLG0Ymx+TLEe8Otoz6i2E5STUoPSHIM4D+Br3bg80xRdxCP6QI6fJK0SHTjANvh6ldTE00PA9lIKdQ/YS+d1+jU4pb");
+ a("EBCe/DCgdn8qtMxrLaJvlvXTSWb0j0eExML48utkfiyx/EgnzSXxa4rqgetUZlCyPo0jYoVt+E1KRak546VS24xL9li3nm6dvB");
+ a("MTFnQ2q2Q1Z/DKhgk6udW7jSaoXMqdbHMyGS7zboNISWy5Uh7wbcR342H+NkYURI0vkd2jrL5q4r/ndvsbZqBjGVc+43Sw/YSf");
+ a("ybth4SLLUok7vkv5jRvnZQ0LWA41C7MLrswSWAj8KpnUvjdfwyKc2Kaljv/s7b1RlMPnp8gLMDwExhersdfVCyfrqAwJWP+k0D");
+ a("5BR638qOxzaCk/XON8qMn+2+/jszBgCe7b6l0+8KZ4l284S7zLb1BC1RrXtNkR7/4NIClCW+GZUj9jivqaWj9jqvo6vn7G8eor");
+ a("p35Gjv4V8niCMzxiTZX6JCfLp31wSDSqshQFZxTJLJkMSz2EZWVEFkecCuMWtrs/6WHL/Tvm1f/NiWpRmd4ja286CfbdMNrPOp");
+ a("neegSO1hae5FTcKvN7+kn8nn4Szp4IC9mTHCF74lE3NUXf+T6LkR78Bmb4aC/fYFxSdpNss9SvA4zi83GIW9avq+/ox343+jJ1");
+ a("uBQLmjjchq12+t4IfGUaD7zrwP0OeBvQjPtdd4xcEBxTWjc3davO6wn8HGMjuAVzC16JsYf6Ou5VmhQh4hJUoR9LAtHimtdtum");
+ a("5BKJL444eL090Q2EX9tvol1A0PmDx5Q8j0ST3JLzcC45mgAuNxGwL0oYDC/Pjyd7N6E8vffePi8WvXvnDZx89+nqVtMai2Rfy2");
+ a("q+3xWSI4QDJjl1DbircT+4rcU1QijwCw3FYAcjmWenj3Rx2cl6SsYuoAmWi3Fshycnyntf5sEd9hjc/SV8tLOqHZRIEE48v+xo");
+ a("b140+kzcRwaiKMMISzzG7dbh2cDH/IexEp3brdY3XrZj8v8V1XuzgiWEFy5Wxo430H1USGy6h/tOpRqFCtqPj9+XiovT92+X8r");
+ a("L21aNJIM/WO1XmiFVE2Ghls8tpk6FzILjNC+ObZoII01m6U9eIRQkZLfN42I3b/eQcLPxKgIQ6J3AUZisswr3LkOMcOmbQ1HBs");
+ a("p9eZ0zhgJ0UP861DI3969H5lT9iy0aSHtJ9S+f+tdxkP07Y4jkZ52MgOrowe7Pdj4Wy8Pc+xW0laFORHwhTJqVJ+R6YSZLLstn");
+ a("41+CVhG/pyC4Hj7tKqeWlL2lUhm4DlzJxda90zLTFZk2PKlu4MnmsXDxXCfY3a33D0At58eOfyPU3YGpUF53YEt8PDNfK1T9bb");
+ a("TC3qEurDPfYyTzSF1KVFn7fK0cdLD86fg4mWHDyWTgpL/scyNe8d+K89ZXjjXHIw50QI6PuAz8Gzi7gWfkOMbO+Lzs2PP8iXZ1");
+ a("dPt5/YgzE6xPde+ik1fB37McSuf0QIvQOR0KP9Os21e0gi/UYpsboBPvlYpDEbf9P57Rb/v+YLz2l8r2G1pk+4TfNl5Ktw7HLT");
+ a("Y4bPef2f2PF/Rn8HKdiP80NT3BfdbOf+JrT2ACdY+qh10xdAEzOghH34Lobwj8rt1C54Cb/+RHrp4VGwrRlL7xY993Svtz2Hqb");
+ a("OgcFvW/5yua+5UvGDo/sxKn5HvZEGMbfjZbi7nyDmuOOYh9/S9095TUq6N3sK0O809uxbGk7hu/MpSkbL2uHiP7mfO9bFfdSIt");
+ a("cyqRlBUqDWG1qBhmwzQTaPZAbAfnmGJDB/FLLZ2m5PkdtBPuCoUA74O2zLkLP8Xm379vno/SHBfGRkTU7iRrXLz5Vi6yvTEumz");
+ a("SnxT8xPLb/gZNwaNTopC9U3HJrHiJjUhafElkIbXT2FQ7aQ4457fxvOy3leG/8ksjo6SGZX2SsagEqnm0o5xxfSsjzM9b3FFTm");
+ a("/7sqVtPD2pGy9rKw9jLvO96yvCnIoKMD9iHvUGB9sbfPwkMQt+yF2L4zDG7PseaqWRAcFGka6zioFXjTDpTZZhikIljX6ky4Nk");
+ a("t+b63uEwT+chtUsbHa4Hmnn4ZnwudOJRP32OgFaFaTArJtnAGn6SQFQbIjFefH9A4tAghSA2/Ph4Z+LzdlWKSk98vlZocNHO/+");
+ a("xcrZa46ehrrSeMOD+G33Qk1vb0yJ5mRWXgVEXOLPeLPCT0e7+G+YCoIqUnNAlSOqOJSakWtt1c3brs/+1oNyH/Z0PuQdPzWCCe");
+ a("ahRAvNKYiJ5nJh08PS9U9DyB//8keX4LJP1X91X7Oc4LxvVhfsjCq0MXg9/1kqTn8p2yErqxCR4pO4trdzhLyFVx7X/yXvg6hd");
+ a("246Orv4x+9jH4meiyc/xG/NLgLgsyNojJ/pjIleT9Uh3S+4otYcv3egO30ODwxycHD/gGcI+O7Bt88+q38Dfz9xiE3qS8cieeD");
+ a("34dXYz7WYD4aMR9tmA/MS6DDUE3t64nY2Hwx5AGM002Z1O/nuN8VRTyg0i5MllMNqKJ/UEA/QnfOlV5Cw4xYfXyXvsRwz9Wozl");
+ a("Xb+Nytibneo+V87XDQcY0ciw0sgUPfHnqF7euB+B7zhJvmu1PNt66sOJWosIRce3MH6ukLvo/W9jf/W8X8Q8bCmH8qg3fhWP23");
+ a("owQOrAYOrAEONKJjbcAB4ALmQOKA/f0/2nuw/j7JFslgLjQwAsEaDuLo4EcNAExHerUf3BnfBehsf6i4NNhORrZKQmOd6qs4NN");
+ a("+JSS0oLQhuLG76NMWLF5Kmz1JmhUa6ZwVHcsr4TRDAR0IT0pHgT0/HI6wbSeeWwmoxVeIPjk2inN7xjcX4PCc435EeK5IRWkbP");
+ a("POylJsl1RyPkKYMYJl8p1LlQKUAaqL4A0kDU7rODNBwgDUSKDaSBBNJwKgSQmpFGIA0HrsYHSfELQ6Xzl+2lk0TlOF/Zm8XBth");
+ a("LUCRsBxbARUOJsK4aNAL+zKfhmZBj5pGPR/EgylD90JcEcq/RHXH33DRBurV+fXzXP1UC+FmtevYXyVJSGzpp3eVHDwmhB3gHX");
+ a("bdc66Bnl0qhxrw+dXxrsoOElj5CY83mQrjdH+pPStRS8HRbkfVT9DunjnmCqr3Ii1RWOV48b9VCZz1EmWDUPNHp7wMXP5rhpyS");
+ a("5Zdejt9nTxDA/VSfEgny0esENAgho2kQyVUVoXec2BYf6G06sPEAGAh9zISGHWIeT2h9ZSRo4lRYKyd3GYIrGM6ry8j10rh7Ld");
+ a("oW5Ihof8lJ8c77dDaGgluZuB8AGnwUdTtJ18WH/CewkKbCsKflUQ/LEoGCku+6G47G14f/JNatKq/YDF2Q3vSWW6XUnT/Tyvt2");
+ a("os1bc3tq3qAZHPwEOOOPM+XpoRB5bq7QxHR3Avw5G3O5ACDZDUvO9dRbvz9lX/mXoFfCerSnntlaMxL2dhEDBWRcHPuCaNzF9J");
+ a("h0UwL43Bqh4Dl0JOzoS9SmSq7WVa04epXhs+4z2a8dKndK9s8ihtuskCEwshF/lDhfPyC+cLvY9t+0nvY97SE6H3Mc/Q+8A2Mb");
+ a("sUXwKZ5iSR6HppsJs/nU3a6H/0EqzIpEe2kr6kQ8UwCoIDqN22l3C5sBR6Ik1fYrH+Iie9tnCesQnkJMVKwKj3AEj9uZBrLWti");
+ a("pKVhJgeJt/C9qUozyfp+MBHP6QtgrwTgLoQMSHT2AkPpgK5qnwxh/OnrPSFwCDRAFzlAhkO+JbiSKn3zePzPNmHbAugkpAgeAl");
+ a("zc0yjenDCAI3NpM7ltT2/UzKEJFcyPpZcF88zfNv05P2pV4wekzElXT/7x/RlqS4R8Fnkl8laxRgV1flMH3UeE4NEu0DeFEeYW");
+ a("MG85NG+be3qjtklSnNt44yGln+Rw3Nl3E8HKnPT4dSt/XExL66JLR/DBLOP+avQDwzm0g3TTq+a7VpL1A3jfpS1A2kufTXzByg");
+ a("lZmEdRaKEs1PEBpVSVOipgAXY+kJPetWeVwpEokzPN14a+lp01H9VJt12CAiDdyT67RoMXTyVAvbTIebxOpdmas0qDVfO7qgEL");
+ a("AdVwPQI4ZU2qrZrnqHKjbbyEAmU/2MNlqAou72s9q5QN1niBPZxJew5ZYrpThnwCylZekAzpH1sFINqjnKpACAu6YZ8f83oaZp");
+ a("6PyBD7FKDwQegvsrEOLXmPrjK4Z1v/ujrx5XVrX6LDQlLFQFAkumBHCkj+03yFKE1iueFJoVriKuCEdzI5zE+LZEam0N06I/VG");
+ a("A793vkf4De6+kLHq0HduD6qgkVLQ2MeHCcA8R8WksIVUGt0diUtpvAGLow95n9OM+VaiiLqW/NgbrXlJHA1Gi1S10R+W4uR3z1");
+ a("/Ncyaky5zdbV64I3O0qtdZL88Mp+q1fb0Wmdbr50gENpI+p6NP+ENDktSXPwR4CQDUAbTFmiMIZ4VSsHGnmCBDrUgGArvJCQCW");
+ a("PmqQZmCDqM8gmThg5PZFF+LrC/+tnobw0NrepIBLLzgPBem8Q2mq94n0meeRPnPGYTcJAYQnoPSk7POZ91PdA3PNq8t56k4g2j");
+ a("K/XTyAsVTBHu3+p4wHsEIZdc6TRhRbtzg2tsTvVYnhMupeowTQ2Lw7Hsz93B9c2s0W/N8nSzLenCjd6FrZqx3VPf8Hvu+QXcfi");
+ a("G5UG2P1AWq3baTVgdcn9tKZgPVJcEQ2+PkxFRi7jcxXMivLhq9lHZ/quM33ON30b94L9RjT2Anke9YdSkvDMrFfiE7I+RF0G4L");
+ a("hU5oyMwc+voogIuApedNa+RovdWeTyfh725n2x9PfUhaJgVlF9T1+3cH9oqfUmZKc3vKH+9HsegOGCyGh/AJeOSc+R8UlPYFAr");
+ a("olk+JmynIvb9V5K0AG2+bdcbxGkutIoiU4Qy7rwq7E/dSH98CadruUiMedbx2JE/Pv28aZ6zqqDmpTpKCQzUyenxlsMeBteDBr");
+ a("4T5PrQH2IpmYlOx9qnoCuVXNFOdRfz4XYmSatdhUCVBxI9g0HTcy5IsuaM//77bfz7MvyWHGB9SI1/nu/Gj1WhApvPBKH92EPa");
+ a("j+/CU5UMU9U0CTU4i0Xc9AXoICfh0L5Be1Yjhp3E/hzM34OpAjSl3cKV1SFsVaUEBqY6rlMLyU8mpW+NOuRCekAupIzfSVbmEL");
+ a("62i36EuB8Sbe32bEge6ICSUounb3CQ+rh23dv38JdVbp88oNsiaD6qP1sE/55+6s/XkT/CKX3rp047JpF+6hPXqkH99reo6oRe");
+ a("h0U/tRHKbNw/pW972QPIOY+9DxWywjrLILe++j/Qt72jGVV/NLnv/vzs6ET92bpI9Wcc9efnB6z96f6t7E/FeAP0HY3Cfoahb5");
+ a("uu7dnn6EffVvEjpK/D2ipUOh2qtumGqu1UVrUNCz3bdMjLz3iZoHgd+gksOLGTBOKhGMOKth9a+QT28yX47MTCGm4yrNTmULe2");
+ a("k/Yrn54J1n+kr/XfKOZHE/PT3Wtf/1itcul3TDCWPqaOVv4tOHEplXQhClDMDEQJqoZIIZh8gkEGGlJ/Cy69kMBLU9aUvlPWlB");
+ a("4A+dD5gyfKhS0mpdtu6S3++0C3X5j87ha23ohxrRlC2hrbetPYBIyU0e6krUhm7CHLohQnBa81ofPaTTqv6hlB6byyzKnlkYHl");
+ a("rk+9B6N2yFTMkMVg8r9rn7Jq3H9hzyS02B05XNiZvD6dLUy2eqCpII0EJO9BAAeEj/uyZ4IVI5zdXXgEmyp08+hA7V6hnWqPbb");
+ a("Ff646kUFtKL1yKWTh4599ugdlGn4Hufh/bF/L68n1uLE8Y50Cr7sgkXwh/B/Cd7zz0BarJ5L/El9cU+MaXf056gPit6aSy7MVR");
+ a("cIB2yxEWO0Dx1sfQzv2w6vzSc2qJ2OwdSdY/8j5Heas5b+3p9+CDkSK1ASEfaAChc8TF8Hm7EZFOEQJDhskoNxuR+0TH78UC75");
+ a("RUvh0+D7V5WAL4tFmoRNrJC1yLEsOoxId/E1B27wOUgWNhr/D2F0z2KP/mxE/qI/jhmSGfJK3IybAPfQUhTWzLzch8PgpqNx4m");
+ a("GpErxM3gz7GAH5/+/HFXAvn9oQuosfy/9d0/5JlOeQZQHmmWfOihFFOnv97eFpWBhy1Pevb3xVT3XpqsjIH8cwhThRzVtEVeHQ");
+ a("P4NDLChGMYRd/bw0U37FFFs8P6kGaSRaUTeZSatHwdoJsVQPHtsaGFEm5hHNubatSre4OqewQJVN0OED47P1KREFaEeWwUMrNq");
+ a("VoHr7vUVk7Fas3E5ID7IbYfGJLmRlCmkg7QmeLANQxY15kbEvkp9+ee6A8mrnety1OnIZH+F4w7eHmWmtvtQnbfx1KH98zYS6X");
+ a("9+0RtFIEdLRcA6dYnlG/k24QdS+YNvaKOonhDqGUr1sM5QYCIWStUzaqHcvJoXyk2r1UIpzBT9+WCvvkBKUECbl8m2d0gNic8Y");
+ a("GkTh8ZGNjxxtK30E6ZFwsVg5x9LK6VNCEO/7tTdmMs+UDEHPcAM3+tCv0dqFqbjICcjD+sq8QbcyrcbnRlb6wt4BkEGNCRtW7h");
+ a("V6271E+d/C8PP6AXLAlEDcC5LFfuPKz3v7knew2VuVYiz/rt3VMOWUpCYTv93c8Ml/YMG2dt3Yu7YckEh50v+NHfNayJpplxzd");
+ a("tz37EMCYmplIHqRNu/qz3gT6SGabAG2GTQAaOC1VHHI7DBHsLuKJyP1EKgp0aJfu5xm9lCN5ozwGwQ6kZ3HzLmEzoE0UwiidgQ");
+ a("MV7Q3HoePtjsAoHbdX3gm0XTaK22wP03Bw9759lnk13NaI/QIilOyApbwKDDNXgnMeiWd73MLSauVpOJbH6CNprI+kBZu5yunP");
+ a("8FIRI+3LJCQcCNZf/sVa9WYR6cnkrgTyZK/S4Ztfh/PLO8hfe4aySGJY8kAE/FMIeA179i0wosgf5fhY4d3B3A21tuLbAwxk6q");
+ a("0todZ+lSEuO6hXt3bT8Uzf9lMVPVYk0GUmgahH3EFOp2sHj9uSKNQMpgqjBGSPgNrB45bmXi3HaugpPyQ5aKg+hrwgzBHgvsA3");
+ a("lZ98qx8ML8tIREclMbf3F1ThpX2MQ4PF+Yz3l9XKpp08/4EG5QgDY0NgCyxHu/5pm3Ux+U/kTMY1GgQrB/RqXWJ7Ejmm8U7/Dc");
+ a("Z73wge7xwx3jk03gt5HC6xWIuw3Y82ag8Ukl/EQo8OlDW9WqTPiJveOoMNtzNMFROobe2dZ/lymMP4OJyjpo9k+305cez32ez/");
+ a("5ToqpqBQrnarqCeX6xnDUT+M4HrYce+ystIobetx62P3tR3iPuaplyY48kgSaG0U6eIx44WveqPsC4C3I98oYV9lhGf5LhyKg/");
+ a("AkIP2+Mj48wj5/MYyW87brxVKPtmOJYiTZ02dob/WV3gDzrdGPeqMy0WbvQspz446cSbAlh5Z4ykOzPcGe8rxmWFupL2IbFldF");
+ a("DRsW85UNi9G9IjYXsdKGheAZnI9TK7+1t1PnQoUzmr51L4O0Oz7yelStp8at9dMDfdSaJWu1W8aw84fQdT3COl5EhrUd29SQ2P");
+ a("1RcPnaBaW968zfvlJnHP9whrV/eGwPDJHL9f40QChQ9vwwoSoRlKKGBVH4vdbtqeYQLVn/BNlZ7+FiTYaSSgGkwahUUf4Cd6Vb");
+ a("lhey/1h/EP9f+pqZgNj5Z29PV+hghxf4uhzHx9qZpbgJ1paVfisgPZMuZadRa4r8TRbkj/1I6jC7ATOg9dTzWeWhqKB9H8XQNL");
+ a("O8Pcvaq2MwkY4SrVfYB38OsBFtvABTjBcnyAQ/ezffQs8yWbMPWE3iH32pOv89WwvqNDTisFiz/z1c3hh65odjXfIalKYL4VzB");
+ a("0NWLZFCiziYGfRbR+AIwGdhd5ZT+BUFW09McCPGxUInBSfzwrIvFn9ds95VVdv0Q5WKBBuKX8jEkdCe/+/3Ul39JZmCu9BHxQr");
+ a("Lg4XiNwUEV1sF5Y74anLtvpveNLuvgVC2n8+XuwlIW3z1KDNJYGiA208HoqMaI6FMC5RDLfamdHJ1AyIjKLrIxyvvi916nMv43");
+ a("/KIlNn5Rq2eO02ByDaVirGbrx0jGspA8gg2QZ2MhhRPykL6vxXl0w2EWHpLt/YxsebiEroc6b2CbL2KfxVW5gP0qxJKrbiw+oU");
+ a("Jynng7zwWT8v7HWI1Xfl3zZ8ZKqPAKtnZxKGUCCIesShwIDqGq8ue5qwZynfPcLOsDTZanfA2zcrUnv3Rw+xUOLpTJYzMrk9bm");
+ a("M/xmwVZG7tGEAbzhJLY6RICv+FqK/Kj53O0pJd5VYDBdii9HyMjbF/8+MonkXHkTb/0LX5Tkgtuzm/mYjMrc7gJxLtmszhtx71");
+ a("tAawbBA/qWLijbyQZRYw+eR7P+kaG/hKYh+XHanwRj4FkkwTvnl+VhddOync+26FPZCOhYEVBFtSNqtTOSlNOoAFXyZaZqilvX");
+ a("OyT5KxVwFodjqW9eATj40q9wi6C/mKDwo8yxLg6VMC392e1EKQKpJcEdkfSivN3V7wrfO1YTkWgqsT24DpxipTfjtxFU0MfZX3");
+ a("Ma+6lPjcdClnWfJd8YIRmvaKy0b/sjTzQo65/QrE6VhgoJEcR6IHJh95SpwOujP2JtGPlRHQh60S6DoN+HZkUbiN/WQyJ8ZxlA");
+ a("vqEDGZ+DG+99HMvIx1bYZvmEexwsPB+TiVwsZrdymeMeSoblY5+4/w38arPjVwJ4RtvhcQOcwxQ4TW6+aRDRSH0pyeOoiYXMQq");
+ a("9rl6BSN5vICXlE99IjqWuiynNtv/ndtvz281q884N2K2dsoZuycnaDDNYd8Na5ageM3EDvnZ9Zd8DKpTT53byN96PPPXTVF+Bk");
+ a("/uMpxVIwv8/GeT8rIfbnr6jQ9SgEZOTXgn/+ic06f+MEAfqZdCdAejw7+B6+g/3raBOZCHnZEaC8RzTQ1U+7cmsvve1QmFVwhg");
+ a("zmSXML/yXkLFCbtJRkxAI72C4ImJY924lpeZ5kx0bwBQbpdvzwzvY4xgfN4kUsh30YDH1TZFjHP0rVpVu0MIZaaK0kWmRWYu3S");
+ a("3mWIkM3yMJdgPEtpaG560jKedv8NBPYEynv8k2oYH35UDeN5PIwMk2UcP3qEQPGkMy//KHSQIttEZKbq1Tjq1Xc3yXF7ydq3sy");
+ a("Xz3OKswdqfGgyZ9sQTqj92+zZL29GnDhzWuF90nkE5H5Wb/YTqW+sjqm+zYvk1tTAzhPMXO1HDGYb3R7DScQTAKsaSIrlHYquY");
+ a("/NmMEf3SqtehX0gTfSqM6iwXsJ8AFsT4UafqWrz7zbQo0OnvnxM6zQTcqxHSDqPBLOv2AVofwD2RLMuhHfouDm4L7kS+eso3W0");
+ a("AZbZc2yQaUh5G/+gM+//TYCI2dPyzHCxAcQxAEDl8jV/a5y4TtkAcfZo/pg5BabvD6JzyIZX92stAyQi7xujnDLbmW3fRIFgb6");
+ a("sDhiWrn06zH09c8AsgcV5nt3VE0QC+MZirvtIUKFUi7PLLsnBvACbEWGMGUYLAudKQpVUtwFXGhup3hVmuEOHCkSL6XE05CoQ8");
+ a("JKVTcC2sgkUvEQufIo1y8eQ+RITr8Q6dpy8jR/KVnd6FvftkObmpxIP7VHnqe1Fjhb4qMtfNqHLhOUh85rTFsHOVhFjY3B6KP6");
+ a("/kqMasFdguMYFsdgN7c4PYhIRswkRrMro4DbTWxLNAJ5CDc+neEV3u12fbbUrE5+tBnT2f97j8IHlNM+4XKf4kc99gj1STdg4P");
+ a("fZeu8O+f7EaC9bt9ozueStft7fOwV91/AjAHjXIBSenF3gt2HR3UeSdHntFeX4JKKLGe+uuFDcQdnfNXuqdEcgCin8ywAkTz3b");
+ a("3pIenUenonoRxkmHIVv/Hr+AsCodbPWQasw0JHvSW7hbJ3MdSBUQhgChnfja7eFeDUF21r+6TARg3xwBNQI2ewasb6XUxFHgJh");
+ a("Swq1rhlkXXj12Rn5K7iHPoDeN7Fh8ArFcIpXcBwZDl+JCErBOSWXJbzxSGRjLm0vLN7mAmgc9V9L2ouSKV3kOe5J5PjuobONOw");
+ a("OPRL6XFguqReRqm0l/D3qUQhR2/rpYY9LzpQbQlnqVmCi97RltzA/O2rANAx2ISDLXWNHtfdrZhXFMqUOT1KG4+Ux6A1UrahuL");
+ a("bLaVRknEe1E7aQ1PUusMP4wJJyhsjT4OsRz/ifASizVLN9fbdpsyz6Vbb3j2g/7xuKBvjxrNHi3eaQasfSOjfw2FW3X/eEdPtv");
+ a("6MDK547lCOatc9V16mmLEYGJG4w6nF1vIlbR4HlBjNk6iHIRGTBiZ1DsUyK2LezHfPuFSax2mtb1gup0Sr3QNopbLdpqpwcNPp");
+ a("pw4wxQG+LaVFzeusBJtpx4shW5QGcRz/bFD39YPLikEdiRFPwVu+PduhWaJ/llYpv9ZSIuvX31QOL3NqkPi7HWaJxj/Xqfe73Q");
+ a("iX3jfHwSXZVMig56MzIEiqTnOo03MUwSt3v0xfKkcpXlEVvaHy8/nbfG6JYkno+t2FBqoYuP8FgKP5YPovNQGEid+iSy6AB5QM");
+ a("i0yQ9y0ZO2ctGLKfsSyp78IGW/mGpsTb0D0fhHwd9yUPVq369RyZeruJJLt6rKP6f4DSL+bFGLf0ts0UWb+UX3CvzIvmP/Zleq");
+ a("y5o7RZavPwQ82fuoKxmf4nqIqEMxjNrru23W1+znz3a0p+17UG2RlnQPpW+1pSt5FGo8cppKt79nBzTsT74PeX8q+NC0P6H6c6");
+ a("n6+Q+qY1/779Sx75hW73469oW8+/k8u1+cZ4f+TjAn5qLL+YH91Z0868cgIyp0UIX5SEH4hw46L4twD4WPQnjaJphmPfYTHqY7");
+ a("CfgNeVQw9cWNScxOHBQauh/R0fbIAIz7HoY3Xevay7XcQQU+QhiFz6LwtZt5Cn6J2rEbPbynl06HIaRAHgj5b6Y8B+5TvtNy0C");
+ a("WD32LqF/KeT3mn3Sf6diPayL94f/U2JJxOCQsRAfQ4DmH6R+9tFH2uiD5aRrekXgp3D046b1J/k1epgb3hPjWwUwkKdZ62jO9T");
+ a("9woYftxjHt+vDvCQ5VC9N73LEDz3AY2vmPuhH9DHQ7kk4ozR/DO+hPyNJwfI/Tt8yqfSbPDDmHqWZ9GdD8NViURH4E10oxoh48");
+ a("Jxj2jwaap37e96ibAOw/c19H1oLpW1XFit/rbV+4RExn/w8xPvPsQU0+bcJV6ksumhUvf3gzjehMpJ98/1Gv5MdNSQsf3migHl");
+ a("y7CYotWcVI7b4tH4UzGw/LhodYUrMiZsXMMjF4fLEc6ODojMxt5YvuzKCdmO6aLY6W9HK8eiXPVon+s1euTZ/aHv3SvRHhVA0S");
+ a("yVLa389N4BVYN2utypH0I2PzLPt/EXyBh2vYgc9CqUA8H6k2QAVeDd048gb6ED2zgeTxtjEIHYtXIwanwD2zmpHLOGH9Qu2Doe");
+ a("ucEqfoUcriYxNIZZh3JqgGDIktTFnj/FnD+kcvZVf7o5v89agIJtMfkHqfz68+JoXegod11c+Y6ig/Kn2xjPn+6QXcAJPs2Rz+");
+ a("8XihRD5c1fgM6+0u6wqExMvpLv4dSGvGul+4QdOMiHGL7/y+Z2a8vGWiVBCgQH/jSbJEh5OKEsyA1oUzsvRcmCHLz8Zmj2WLz6");
+ a("TAIRomXglM5tFOODj+zD4JwNsEMK82tm8POT/h2Qqe1f1tM+307z/LleUPNteZ+WsrrQhBqrLECa/BfMs7+p2O1fvZbg/JdIf0");
+ a("a9RUHDJMcQMhZ+5mVf+fl1Qvf0blfdsyqWYS6obykvCnaXT3Q5XK81BtP+zD47loes2YKtUJO/biZ02mx+RTibNNX6amNwQOTc");
+ a("sNkGAKpF3OlGnAdxiCC9nnMLFZJO/DmQNHODFUlvuYJoqNk63gJhTZTMoWodr/ZG46d1aS8jTdgfwJrrXxvHNF8L1Hwlsues/W");
+ a("Uf+2oqa5d8Xunv9ny4vYsx/WGX/1LnvRaLLzhr+lnUBjDve5fbTm+Qfj7SfVc0uo+hgVM5jPRTkM4JO80V2Nabl152/8hWObUB");
+ a("FWPZ0dwv6a9reYWITak4q6uBOqO2J545ZfsO0VKIfTzdNEOjinjNmEciMkv3Q/MnkpMa8wrUXPINnzPnUVwqxSnfNJdQ3Hcv95");
+ a("p909xBcR8hLvzvrN9X447fCziKAkNVgnV+9iSen/fjp9vt37+U6L7BsmvGnVznckm5AzY3jyxkgjiUxAbIJKIjwbjDInBpWNBy");
+ a("kJNrdhGveFttTzQwGQtNO1MttJcvweg9/aZ1oR1ejo64XvBucz3h3RFZwYefKwaQv1UkaA/09korjBP5qLvDTLrj2/PEotyvP+");
+ a("ukmDEllDp+itOR791fQTTg6zMUaOMJtJE20G6+jGmAMiFifz+Sk74uMV4G26DOSnrX14+Ki54Kn8z8CH6dKajtGXJdJtbBkIo0");
+ a("/E0PDGH7u7vp0BwBL0A0oredZtozgusAe9m70md1GkCo21qFt97RwsKgkdnKQbDTm9OotVbxBPTNe6gnyv0AtSnY2Gnph53i2O");
+ a("v75y5V36vbEtXXv33hDWt6haGg1xHo194mAWFzEINT4InCVxxGjd+FoNHEWCRB0cT5Yli54e/OlxK7x+H0rZm3rQje0JWh5hqn");
+ a("Lfdn5twGftORPaE9W/iverE3gf1UzazjELY54K/tyXDd6sBOO74RaB7B25evLOVmqKJGccbr+krYk46Mlv00l653WiJkP7bY2u");
+ a("gC+0suLPTqaSdiVjqZ15Mk435Pcb8WcSky7laKKxdxg2TcYoo7j+Okwftu2ZKkQzz/L/RGu44zvFXf/gM/mG5hfSMqf4hRXlss");
+ a("0zZ+RqkZlPqDzpu6gNKaRco+6sUWh1GO2BWSX9V1vbLfZxsOnFFqe5IXj7AOHMoZ4/EAIccwY3y1aB/j+pllXOPmctUtAdLYck");
+ a("bGq3E9nr6Hh9emy+9xUs6C9SsOMMbJC6JVXhH7t7RsE8lneJftc6DWqgGv0k8kKfix5Fj6eqCryxdFxeHUN79J30M1rkVILKaw");
+ a("xGIC+6o4X/YYInLFwR+67hLn78Kx+YVZlXNICL6IRY1msrtkZfmwMKtO6GvvyVM0vQSnX82z3krT/3op0fTWwrG8QnCwx/F+Uj");
+ a("u0tWHWu8jl/5ZagXPrsWSIoKTsdUhTaTPreqNFzl+NhWWaYuf6oknf1kVdt5fHcSCGw12PZTDt9o+fO1h7V/bDJ+v//U3p6dXr");
+ a("lq7ui2vpKr7+zt8Oun2J5zYwzAblEKj+WPBD+4Lhv7hvtsW7b/7hK/N986xT1JRfdD75e222TvlLF/N9sygkFJ7U1VAiqWh8Rr");
+ a("a8epZqa4+2XjtniKtlvu3aiXoT3jujaFvb8mOv/d558Po2DTNLtbMBEhA/W6tC76W+KEJ0u3TR7XKQcbtUZwkbvwJdu32pEmaN");
+ a("l16dID3kwxB5sg0+s5m/QfbHlAu5DwOYiLu+tZ5Q4+JboEd3BIuaC7MN8pbXzce0P52s5vfXc1DtVY3W+d0KhZHIcKMCRTBRfS");
+ a("igVmR8/ZfVvcIQbN3qBOcHm/85MVsrvDnFIebkFQsFwZ7ikJMwuDhUQJ+aVP5QZmOFeKDfF7qT7ERww1OuIFhJzHMnQzSWv0va");
+ a("ycZQ6Svi8eEwJvIw10TKMyEqKszm5tBdU/F3lU+2+PIHaO0Mk5qVfTwe16qe5vFYrQUQSDgeNRiPVfY3C9qkk+jBhnU68Zwj33");
+ a("6RC9DxKDViOB6Xw7JaH5Y2rPdJ+u0ixGY0GI6hC3kqV9PSZQj3X87j8zh5MMt5WQgH133rkCWBpOLXo1CJXLqVxk2tlw221LgR");
+ a("cgLfTjlR4dsgHD60A69Y8e1XFwLfxtjqk3hnlF5+NfnT/6xXvICr7CAS5iKOWBB45pEnOreNJ/YMMBEEYapX0573sn4rOpOTMQ");
+ a("9qvu3rVR0YlHvZuPK4Ldi/QfHW0Oom37mh+nZ+eeSH0Wa56leo++zB+RcPWgSU/vGCSUBpmDaW1elAmwk+7w7w05Y4Ko7wNSAY");
+ a("5PNEqMaQ1/LyIpi9pGbpDkfFsSS/NU1N109LMeCzXrZO18sXJBA7stt/xXMeACVjGtp1IqwR0OUI25eDuf8eYX9jEf+8skSY4a");
+ a("jBjz/4aD3/PBXmn+fv5Z9XVh0gAN9SVknrqFUZpEZ5aRTDYJcHa+MATqElIYSLQze4u7YlGedQP+uCn5/N4J8JMItrX57Ay6si");
+ a("szh024TVPHpe8upTEL2LU4CNs9hZOUnlT+/UvQC6lr/PyHgWuzKtewPP85sisPQ1vOa0YYEj0AZJLOZA6JtN08KI6Dyct3E2Pi");
+ a("NJL+WGsilKvUGlBtXkjXLVXeOMm6ad/5V4mG0oHON6YfYY3EHoNRyPmxhwkmpgjNHCt/aaxRzkXGx5jk4Ar/AQBX6hxPvsgPvI");
+ a("dVKwjiYcY0rTL+xNNFAQ6NM2VaHP2Fm0Xtfq6POoRJ+lc7GNYfy6JRwkcb8HTUOiZ5Q+JPQErW2noaA7h8lciguF1hAqXf45da");
+ a("SOwoCnUcCzRsKDBFFzXbtIaFOArhGARqcoQBeXANCzDEAbJKCbocDd9TfKoiZKe/o7APVHEZmtBBpQHnwhnHpp0qvxTfm165oY");
+ a("iMfZRuWs7JK6Nypgj7S4hw6+k5rwl11AoSJ9In7zd+K3Ma7yWi0pe5tEGVRb+kpaiIz+EIf9PEvnA/0aqCHt8PUYXxZRZ+3mV1");
+ a("+jtbELZxpX3ZG0QEB8PFr2GnnS/QkrVIhFFhKLLCQWWUgsspBYZCGxyEK0yNRaT0wfJVGLm96j0s33F9bJkAcPtaEohKxNF6KR");
+ a("VrHTRSa8e2QmpvOGNfp0viqnM3W27XYW976/VD9D2Q5AeM/sHRhIhYPRyEm1vekI5UQjRDTPMyHT0dT6mBetRPPW80haqIcBCC");
+ a("01naOs9HLWY/3wIwIxdwppnVq7IMt6kYDB08BAivKsyGEon5ysoKw5B1AufsEK5afnShmMhYjwuF5oAbwW9WubP+rX/iN4jxmv");
+ a("4E0Lefb7NmoK4vKQgHjvsQriDcWAuOl5K8TH6xDT/dH1oh1gO7+MOXVsGp4AOaKHzesUI147oYLuspHTFV9qFXCMUtZcxzSdOA");
+ a("34Zpt1XpfIcmA/S+F0Ufg3g0XcG7tZQvEVvbEc2di1SE/kz5EZMhi3GbnSeybOx6Uk5Xev9v4W+34Zz97+sEd7hX+r1EdVgbj7");
+ a("aylGDFNUo9jWVh9XDd52JkNSozhbOk0ljvB2jpOrmRl6MiKXzqMy7EZ4Daq7l6vTncvx+fIDJ2J2QwiSX6mS8KM0tkfL9mhHbd");
+ a("dO3yCM5kfSdQajUDiqu8uhF1qzhnfnUwymIwoKdwml40kIqUlUWN8oPWfJgYY/xzV6dUAARWXYdQRdk+sliakHMl51tELGgrOJ");
+ a("v/2cjoxNEhkfmgX8ifWLea90mUdzKnuYC9jfd8honOkpqet1EwPVgP6OLCZ2q2Uve7iXE2RnHE7d0BMyGB3q4Tu07FMJaqHCq6");
+ a("OlxAdYhfFOkT5AvKuWQaeSbbFRQT8EJ5B5la+1mTkDSFfkFx8ozX0iRczIWGF9vUs7JJn1BdO0K9DxsFb4JTDO0Ad7j3WZZBnD");
+ a("Dshc0h+/gWf0XuE/olmJq5S0et9SfiHhZ4PlRN4KNnPO5c1c7PHdnjnci9Ho9eO8Nn79awb5cWqpPJx/8Vssd61jV93vCfuklY");
+ a("BYM0Uep4FCjKMVR8nBXSXmvd2PnGpwKQ/6B6y0+SNl2b8ZmwBHvlcLHEtpGGAHjYEar8+ccrzySmi8RnyhxiswXIiPk26AtsXP");
+ a("eMRuPriOCpekBxrRA/RNjmsSd3/w9WoIj5VDiDym8eNsRYFolMrQ+HzOddgdxYmKF5Qe4BLPBlTFk/S5CVvr3QGqSUW4XjHuSa");
+ a("ax9OWCUdTGsEsKYXgZKdcpQGCoubNjZEEfFdKuWkz01dVA1h64vbEmqE41uuux9XdOBdsK0CvTTro2GgWMLP8e08JhSGC+kw7N");
+ a("ACHyOojR7uL3MEvarfCfoP38cwTDQj9hr9x3qhAQIwhKypuO5D/p4q8QUtbue4kNlz+73MniXf/s6GWXm9fp4ie7PaJhN8hDj4");
+ a("M2wcHaF5uJfrcmE17qjGCmwjmb9E9FgGsIbU5EKyxqKfnI3SqfTqQh9ByG0LJiacn9g3BBijjmSFTrBKrlYuuw+zeJZPD6FDxy");
+ a("imrWcsEPZ5L1TjfvfJ/zx80pxraQwxREbRGdsY8pPZIe6u1jHHIEVnRTjwBKTmwBh4muRtwMj3QjffgeqadTJEDR+GN3sjzwDp");
+ a("OKJYaKyhBOv/U73Qar3d8+M9fKXdWwJ6+OhWZuSGpgHO3u62BIKCY1nXDcNaklMpySaVXs9LmObaQo/O8Ol7uuQZ38XIipOPj2");
+ a("XIFjbIdTFSHlaFzZMLfF9kbx8T2aRYQru8XeqIGvG3BpQfmzzE250ZSMVU2pCOnBA0+nGXRMmibcXUg5BmUOg3Ht4Ps3PJCduH");
+ a("+Z+sC6qYPk72Vnn+Pa9/k++L79iN9a17inwgXZCbw8XYc/aXsqnD2Lx3DG4E68qFJ2g1ryKXVOljoYZON9XjvsCespNQgfu/aj");
+ a("fwL+rQ0w8m1x80XiUaxiKEl1ZNGfEyPFYVNeJbzTEplvjpcCPBRfpOLlDojI44H76EpwnOrKxWegK6V/sXblVS/bdO+Ozw3uF5");
+ a("9G9IdPPolPwwifPmU3Bo02RLLLbzDU2neajUUu00EYNlsS4/Ovr14j+dev3ycVNfzPyhfxhz9SJ+o45+kF4jx9L1BsFabxcYFi");
+ a("sRxrpbDBNU77SNihW5MK8AOETAMOVzOwdTrJaz9unYHpRbqRybWZ1On9V/ILhlbRTVIA/BL991NNL9Hc0tlg2fAxBKOa/5EoMG");
+ a("IUeBlH8hmQ8xSa8oyWeb7NQJ5ep253sfQAPety7okfqdxdEDro6pCXnP3EIZCZPKZM6ynT3/hNnPNtNuXr2aby/YHyhaQv5mi6");
+ a("626RJcNU1Y3bBHTnEnQLZLsn7TPVZ8rsp/ryVbt/wI7tym7jfGFTvgmUb4TKl4J8ICdNnPFWU8Z9W5Hxn4Ytyin7TPkeMOV7l/");
+ a("I16/kQ26nlHGJSxKk1dfoxynuPKW+HttwtrgKc91RT3puQN3KVzIf3jRGcr53zXWPKN5vyeZWcMEQPgX2NDnG2bQS23WjCtqtO");
+ a("o/fdx3Rsa5HYtqHA8BP4rjC+gXM7EDwEBOelb9FvWnkPr5Y1Wp0IPK5VisC92mIRWKX9EgFjIan1g8Vu3EWVehPf7UwPHPfK31");
+ a("VCxEq/m3KnzXfSbtOds5NSjAcBvoIGSN7eeWcS633o54eOtczL+90yvne1E3PibJoCrDXuwYPgyeP7Xr9QdOkAF6+kTBo45p61");
+ a("P8oZVjEk/MKA9Xk3pmGSuZqLZDXmXO8jV9dOcf1k1i0AkA8b6doVG1BAv8aGOf/1GxnGNurKxGedND/rsJTpWPlEkn4HbMNZko");
+ a("839+7gU0+bwTVuJHZuUk2uKzBCmEMDoVu8jatsjKTraIIkQDz0DuK9XNZGh9aA1xhw/Ma8+wCfJo1R+HR4Lgq5H7FSr6oz5d2m");
+ a("keal61ZMut7L2rdtvQy3G72sGOUX9wjh5/6WZCz9JuRRUytvNOrBGKXN6U5Rcw3VbH5wd628ETE5m2gMq51iDC93qjF01V2IL8");
+ a("FPiIAnPFPwIMOE5uL9aA80c8TRNJ38Pxai52lvM0v7EBFdmsVr4rs7xcP1GnPzgaONoneHiQscgkqkDMsmtNz7pdVwug5wBcG6");
+ a("eVHmbRMbh22Hgw95qNOBhIUiYYGR4NUQu0TELlKxYfl8WI/prhGcjgaqDRPZOVpN5JxTSP/uYX0iA3Iinz8doJa+D9w+IxzJRz");
+ a("W8FGvW8ExUHC7qL02PcXOoCTO3qVruGSg8ggo7BW15UYjPqvvTGro/5da/63mBNflyAStd0zsczDCagkZUNJDF+G7wPa6tuKM3");
+ a("yl8tntUOGXjOUT9/QpbIU6v5WSdB/yqlr2xTffWdDlP9flqi8huMkk6ZUNpt5BDnGP6sWbLaUTG/ZslzjsD58SEMAcI2qIIRDp");
+ a("yoZ+EFcPObvACsxbQVb1PZOYgMzmgLczI1UDHJlNOn4I9Zlbh+Ao/1O58PxyeL/FtY8gvfC0vq/PJmScFn/5kDjdpF4g27TXsm");
+ a("rAi37fyTFeX3OsFWfGUe/zwPJKT3uoX889Qi/nmeUNHsRLDbzHZkGDIBg6L9ghgpk5C11W4HyyfdmKHQ9KkTgaarHrDSm2H5gt");
+ a("6MNtM92PMpWJEyYYpzeqbrVg9uqROjwkeq43jTwQnjFudyMiCwQPcs+RAcOyC8n0lD3WvCBZK/zLtfmvd4dhNo1KQUJo1TRypQ");
+ a("kwjUH/9oBbXsNBCXvcniNPMl6vaXNcqaFlJNnyQbZxMfLLpB7FVPLqbkRlnyrdi04yjtEZm2QKO0F/W04ZRWL9LQkTatfSfrkr");
+ a("eRTP4Pb5Do8X6IHvNYXzXCxP88AR04ydaBh/JorE0D8MxG1J8t236um89JzTLtPQ1pQ0TaWqI+2olwEEkNh94kdPcNND88xkxE");
+ a("KcBQY+OnRmjviz9fQ+NcJmHH9gXMuKxgXwQV3IwKWBlXzm3LdxgJdm8BaobThXebJBLebv0ZPcwarnvYu/+W6J2UtWbpNmwXpw");
+ a("gXNunYsAzH/4Tj4iRSyJIsUiJrcBJBg2gByiICZTfvPcacVKYJk6W8Sp9u6CWwMpnIjjdx6ENZzhho+IocJm63rPqLLagavABZ");
+ a("b6O2PZ254fowZnyO9EojfY22fACnr5Hpl32C9PlG+iotBRgK0FfJ9Lk7kI4bS9w5uO6SWm1oxUC6smZHzisP22ZEVFKCrW7pO1");
+ a("KOtI882lukDih0B8d/iRXTJkxUeoR94g0XKjT97ALWZt16gck+sYfa9minPiRdD3xTHLw+hyalOHiWuzhYlakP++vfiqVQ3DAr");
+ a("W8u9DVvVz8V5f+x3VFQftmHAvojPOGMXuF5ImQDeNohVWB60w1g83cMVVCmgMdoHv7c+Hlx2CnZAYa+XWYqCkIYEIQ0JQhoShD");
+ a("QkCGkIhDSxvReQpas/jPatr56a81tdDRV+LAw11J8j6KvNBT/SYJ5egCd2nW/a6vFRPXqtFvmvFXKvqBOBRq0SASbqi1ckvj8L");
+ a("eZd7Y68B7QbpV1uBOv7HPYx2moXRsUTarI9Y7UDb7ZjkbfZHLJaDzGVu/g8vRKNASClq3CS2U166wArbA0DXd8qfC3Gy3fz0sE");
+ a("2cSjkrPIbWtiUHZ5RKDgBVwwO0NdgrOJYPfYC5ivzasDvT6eQzO948MCl1C5ziMagM7rv/LiwY1JGMkHyz0Tb/slcIddyNWDHi");
+ a("Tpw32ZkYf41AvHzMWYPeP06NK88S3gZKpfn6e1TIgN2EWukGYO2r1Ndn+/LqWSLdFHaTPfi7DNQadL+BWgMQBGpB2AhZnlVZvv");
+ a("qDkWU7guIkj/7O8EXGGHrteWRPCqJanIqksM4fNtDU81N6LFiaaUs49ULm75oZynq49pzSZJPN5G6dO6zeRGSEeBdJ3X+nAfU0");
+ a("BfVUBHnN+GR2nzIAfTJmXL1r0bzK9thE8/QLWAHa4BjnX9xZvRWwGvIZ2gooVkfAN2P3vB/hQ6CpeJ94hWTXtK9OQL7mNxEU7/");
+ a("coJqaM15OiEXZ7JA/0Sv/cj0p7JG/dksgeibSfaTC3NLMDaPXMb2esgpdaMQTKNxXgqo6sSAqU2HmqbK+uNjrSVfc8r49RDNi2");
+ a("Z8SMA7cZPj8A1Z0trwKsXfVUf09tzyGo9WjUyrwAo85FTrEEperQBvQ3ciFlzzBl7zayL5EPCzL7J4/0ChmPqwcpCj5jEhDx5L");
+ a("utx5+Hc+Sb0O8w5GarnWr47fITl9RJ7uLcOjkROx7ue/zNYy/H2joHvEcthINEDMgeWJrVRoJ3vHg+xRKvD4MfyKNeF6wZgtwx");
+ a("Q7VQDhWDcdlqMezM38ModF2J7HLOYgY3cr4u1LGJxYcQrttEt9vzeIqGiruxkkyBmEflUdM2hWubIR86DK6R/Ugt90LHKj1a7g");
+ a("0WFffmtVd/JnlO74ihNA2jVf5/uRy/R/8gx2/I8sT4e7BjOGFrvDH82CHGcErMGHZbx5CH7cinMWx1yJEIKbVtD9PZQh/Dlfvj");
+ a("jGHXn3ppFBC5lSJ/2lO7z1l5/DRlRxN5fnysl9x5skxn2TvlOIj4MZ5Bf2lv3j5FT15LgJqJ5Lk6lLyWRT61nX9esYipqrGlA2");
+ a("lDQ48hgng4jlJ0OCZonE59yz2CTTQBRTJ8+YXpFS7kcFMO4X9ZZppI/TzwtBCvDO7B0ls1DSvx9y8xq2UA5rbHyDsep2RN93cZ");
+ a("6hZHsR79dKycL40kskp2s6mmc7mmQIlxnJOOn6T8qOSRaEKE8A8piiI4jkHp5Dt0ivCypAi/gS8yaRYL48THOZvIrM0+KXuCPr");
+ a("Rrpe5P2h9anFNStws8KbY3e30SLnBTC+DD3lv3deX5MfZUiZQWtST5Q1nSslEY4853qgvW8hiNQxjwXZEDcH8hooZwVn9wQU9k");
+ a("ahjevatftNrNcsBuViPLlqbmoKAvr8NVdzlatVk5Ndu/2OkaXmQy/wQH9wyowzeefMMP4cuUSGrSTvJNjOKyUa7zZLKU+Qhkd9");
+ a("3dVB5CSjnOJLddSixy2nxhBmNAhY/vEhDozcZVaiEltSKjc3rEJe1gAFxYsRAtZcfUWtEp08ORE8rDXC5aHTmGyyHsmC6KbNRs");
+ a("piyykWf5GxXp5cv8yFcT5owMIVkKJUvq0uBHWSlRJGA64nLkKesniOvD/kV5ELqn/CeOJYx0p02eknLG5k6Jk9u0njlzbIn0OC");
+ a("XE+ywWMS7rQglbmwQskoU6hEUMWzn1gv2/toex/1mzflKLU626h44ke1YN1n34sEkHaw/j2g97/0f2MC5Hm9qMpt7/wB6G/uUw");
+ a("jF8MNYxfdHfo2kn3PNu/7Qvze+gwwrZzB5vwII6/zJ99g8++MCe+vuxfK/v0lxl/P2D+H5FMQxXRG3zL2Ggh+H5qsGcofdR79z");
+ a("Mzzaz5zfDsbmV5Ihf83etj5eP9c5huve/C53ut1vvSbpHHF+ypvx7E8tpZFL4aYaUfbCfLfMtWpvxi35edKNzn+/L2gbZEla7t");
+ a("sqb27d9dqL+z2q52+0DdR3KqsIevTFLw2NgVuu3+7AeyfDr+RobSJ9OmUweanXUkkHdpAxXYICFKpZIHUB5x3xFMG8G1twqUyP");
+ a("Io+b1rOPYyWdZFZZtQln1lo+zJVJZL9W8fe62bSteitG/NzAtvyX3/9atO8u3+0tf0z8FU1aGoylgFqv2d5vaHUw0FVIMOwPa9");
+ a("dgDs5/NXb+xXvtniFhKTxCUfOQGNicNF8bkgVJtvEbpnhxA4QwmcZ7HpddG7pl7kWlXkfVK+eVAVkfNWTUUCpiJnqCLrqMjVso");
+ a("iaeT+KRLx6/mEq/2zKf4bMP0SQmXGUOZPKIoD3uwHcEs/XALlwtmFxWMSsE/mz6a2pPAl/q6unUq28Ca5NI0m0CrkR2Rd81zX0");
+ a("tazXURONVh6FQBQqFdWHUvlkKv9rlHe9yKYPXuvB1bgQWWiDrjwSASzr6uoxlDeF8s5CXtGB9cgqujaCEk5OM7q2pceEPzb4q2");
+ a("+YbEDu6AfyyMUS2hsUtG+lGtAOJxBOk0DeoID8c6oO5DgDyFGUEE5V428GMoG/6W5sEMbbYtWhxlR6VVW/TCVaYKDhZHyqmq34");
+ a("f30s/ifQN9cdUquVoHP230AvC1427OmvdxYFO4M7a3vGXZ/cE0l2Pdy8+AgvG0XnJreuFsZ/eH5RksvsH1fZIlD0SUQJf1Z2lX");
+ a("GFkHZ7pPoA7ZYDVN2zjFXCqnl60wjO8Sk0vZV9T+9oyjqEsu5K1gnzlbC+ARcTI4UvGUWcDT/XOf3Y71h7CFX4KCqUwKWFqqEQ");
+ a("8a2ofihXf32Gbs1jp53891d/Bs8/1686L2p/+keufbS9dobfVr9d/6NB4Yddv5dtXVnoYyhtYtSFWb2NbFSQvtRixLKFoioZuO");
+ a("0qpwisrNSTPtcDu/TA83ogxSkDozmQrNeTWsHWjqYjrWL2cRF+N6Z3hS6XeF9R+J+EyBncX+mvnCKm8fDiwjlkLZ3Bms1Hj66R");
+ a("+ENp7X+PSSulNPSS035AWr2RlElJHzlknUti68ylxEZZbizSIJ+kp2VT2iMyLQtpLGskE7Mo8Vbl08RjSc8hpP1lubEnrQJMvL");
+ a("Q4XXC72FawvPCCUKVJR9IO5Uj6vD1KC3fqaNJvqtXP3Ovkmfuxw5Wfua3CDgbb6FLr0X4+kQYoyPlNuvan46JRtiKhziV9+3uK");
+ a("XEo0IbifzslsXGJSc3HZel9e89JhMGjBFiiEvybD+oSzuQQZMEIbZsD4xKSvipxlY6mIs4XNYWQGhqpjOB9Lq1dZDKTbzs/1MT");
+ a("cpZx8n6P7pT1Xaa/QTTkR4Doq+/J/uX5WPxtiH+EHhwpEZwIXjaqz3r98f1rd9CM1iH6LFk+P8X/im/Aptas1/+0/uXzXk/mUQ");
+ a("G4O4Fl2VNODoR/u9byXilzmciew5XHsqnQe7E9pzUPNXJP2F9j9/iyzzR5feHnqaUab33f8j+4+Hkv3HZ/sdbwyrD1wkn7E0Co");
+ a("KNcPilD0RnAQZiMONNI9/QzNnn2V3A2PXdjrg6gb1F8/6zYm7/tiU6dPtVs8Xo+LmJl65ijqUHzEM8l3GU7xqmox0x7xzdQkNF");
+ a("Y7sSnTJJqbsK+wJRK2209GfWVf+P/lwg+lPKTUSutPVnydV99YctyH+oPYawrUeSR59v7VNifrKVSsbzh/T446gS7oDV9Md/34");
+ a("Y8+oP92+MLtgt7GfjhkerQ0W/aFKDfH8DIpvEKC8Pfc7Wo0u8y3pOD3u38rd4Us0HfYrUg3frT6EXKJHhf/c9U/bfo//7qoO0J");
+ a("LfuM9g39WezugLG1a8EsCckqMTUJ9Hevrv132kODXGrNLaqx6XpjD1sbi79/x6BRm/TCdQ7tzQ/hERMPhd862f+W+b7A8uK4ps");
+ a("AHImWcdAqLerP+bpqQLnofqeQLcWOYvtrwZd+/7f5IfWw75jyD7ij/PM21e6NQymstZBeorYWlBE1knMooJ5w9kwRnZwKzgoWl");
+ a("8f2VUmSb4d91nqNijnD7N5JcjQMNt2SSvcz7mR2fx97/mBPewCxl5uMX5kqG+cwF5M9LPmPMnsfGlsnrtr4v5cb3D058UDxf78");
+ a("O0WPW9Mg19L/WG34Fwbt/rSTnw75ThTIt6Vwe7osfLegoHhP8C3HqNj6/ER7dS6pJabHElOjSdfOboruNPVUts7myJ0B1chr1e");
+ a("/VQp+HE1av/RNQfzIFoi9Blrve2m9/h2o4TyxNSkzbufDKS3s383IbUNmYLPr9eR7KcK3WPGt4OkFGwyElK3jsKhuZuDpXNE6K");
+ a("1gaalZ3y5sHW+rCp0BKcabq/DMCXo3i1Ap9CDDZmkdCsMhowoyQtPQKx1TAK0zzJWsBCFo3ih6L/qd0FrEeU/ZEchCwr6SqCGS");
+ a("oeODXukwoxb02NA15r7jxLiR/QySlrsXRAy/Yhoy9VrUNiTnBy7pSq7EzOsVpcuK5h2wVGRGq26JPfw+zYELew3ssZxXQE3F2s");
+ a("wKnVX6Z9GFP2cx+1mQC2myOjJ891nUQ45I4b1QpGeECufkF5YGBnA1AdgYbUsqDxeFZs5Rb+dKNE6USa0tnOMMS+ZMiVRnScVv");
+ a("zU1ZsF8vE7YfiM8AYugFo5b3GL7/hTxKPe9g7I95VL6Y9LJNRhafrSp7ffEyx02f1096pyNxuuaw75+sxND7WmJ+lVxT0hhvDy");
+ a("mvbn1I+mOrmk9O4aTQTpH0AhZm/198lMbqGwn6QPvfKvYNmCnj/aGUdoO0kQwlOW8nPzWG/32EbeSuXRhVszrQUf3hFutyUVzS");
+ a("aQ10B4JFdxMZ1B4p642aOmovby2wGAUoTpJXzW6MBVVZ/fW/+nMWq6jXvDdxoEabzoGGJVTlKk5tWEThu0R4IYWzl3F4AYXHij");
+ a("CDsEjkyabwL0S4vRfh+ns43EbhShEmezOaR+RZReEJf+LwGsqTLeIbKTwWYQW9zX5UDf+UaLpVNZMsYb38rRG/rCIhg4tUcKEK");
+ a("LlDBHBXMVkF0Rg+2qSC6wkG9J6fhbonoNSpHowyGDQ//ruWrRgm6Z9HZ0am9j12nz6JdBmo8rrprkT2s45j2GKsN1nkAmlBKud");
+ a("4NSn2tJOFerppThTUFNDdNlPdqqBj0bzIHpZI0m+TQJEVmRGc/ReTDZzv78NnuIDhWOCBRP9p165cZSqJ+lMMkUa/guxWC+tis");
+ a("apZuh100iZSZlKpdxSntkUFiI5uAMISY872bA4NPJya/q+5WVK9P/jhIjYo9oHQyaLeOH+m/JPtIPMLy2O7BVUcvtOJnVOhuhG");
+ a("3rQe043J/pTtfN6AD6VZE9RdpQp982+k1yLa+n3yHi4t31Af4Y+yaJCOrWudK1e1ey7YpGRFZkkXhxqGRzdG4jKwhJaVLtX7Rd");
+ a("C3xT1Rlv0geFFlKBQgGBIoWCPGx9QSlqAw2mkkyePgBxs1rYg+mwUaYtrYRuDbEY3XROh7KNaTenq9NhcQotdW15iEXYrOKjzt");
+ a("etAa3KpOJo9v++c27uzU2atJvj96O55/Wd73Xe53zfjTiP6vwZYGBSwBG3UsQmHlssO2Xcp18g7oci7jkZtxC2duEDhM0RXvkw");
+ a("T0kHksYkOkllYGpcJRKAJZ3aXSV/FtYxR3nOJ3m36pcE4n76ZvAHv4rMJtXWSOepYfwblO1K2BXC2ZutnqWbESLdy2RanX+MJl");
+ a("+hzg1ZX1hWiETYuLfVl1jOs9XdMco1ksBYqu5FLXeVtwkV2IyAiu/Zq40qwEJOXMsq0GBQAVnop9ezCtRHUwFg4axnFvyyu3cW");
+ a("gP6hTL9D7nfxXds1uDXC5I+UlWdQMpJ8igNJ/jTdS0Yf/TZXvUl9gGyAa+NK59prOEquBWw+XgHgYzuvCSQ6tzi80o6fvGUMUy");
+ a("/ApfJFKgqurRwqDbjk23yWzU4Kucu3x5WqZKRBOx1IV+2qVcAhTeWL+EThn4wbqnF556qIXH60JBqXJ6yOyWWJz9Je8PkUN5jl");
+ a("t655Ty2JDpedy49Rk3JfDUuMqs/ZZxnkKSrd8ZjWLuTwNwFMYSmP1ktZHRBvRQG9mst48WSw+btMAiLwI6A9s5aPYlWF356mU/");
+ a("ifpWmimLYyoiiG3xRNFA+sii0KqXwbqPev4dFQp2rVNEqGa9sGH6BSVm4oaWkxeHvAYmwr1Ur+E720lUolE0n+dI2FFAnm7bqN");
+ a("tx8q7V4UX4WAjm3ftejYtsqise3ktRHZ9lZxNLZdv7IvbFtezdSfb4lCva/zlSEG2sVc6eCTQDVcieTs6Smk+jM0Dsh4smdQxq");
+ a("ghhB8B6kdlIaxYPUTHisVDNFZ0XhORFa/eEI0Vy1bEZgXS16q6UDgkhi7sGcy/ZP/gpTjV/sGb2uKyCV4QlUNrwuwfwMOqxkMx");
+ a("o3rwOZ7Q0DdmPXHIiVCtCCWLUJ0IpSHE3C40cJvhLAqBo/To4XT16OF0I+QfLg03Bm0x3DKNuyuKQxLhYa3nhNdmIIEOO/enam");
+ a("K44eqIYlj4nWhiePma2GIACnGqGMo/jzZ25aeGjt03PxKcN7IObaYt5JAR3ClyiPede8nOZxL5+90iZpbPCiWg8kgyUdJ0mfRL");
+ a("TuKCao68vZbNmzjaKWaX+dbZlqpbOGYehZJdJXKeym+oJQuu4Ha2jb4ZoEyV7JvOqfxNJo2vKxZtYqwEJHHH+UaKvYU/hU25Fy");
+ a("kRjWYnQmrWfE63bE5P0YT25PKIQnvg+mhCy7g6ttDUBHL5DQcMIekFscasW/mKm26+//ZAsP6urYL1y42paxOQWixTHeZgqmZb");
+ a("jaVh67ZsnolU1txJ+NB4aMePkU2fDOQcdgEomV9AvYE4XvFxn9W1jPggCnv46XrnQXHPmUVAuWCrGHykL1mM2Zi+kd5cHF7OB0");
+ a("5cEMrIOsPenSdTpNSDsNLKQyjWeadksfAIzbldmZFqemEaalqDIv6Fvqhg5yOPzMCIMEFqDM30UzCYZoIH5yAM6igaj8sk/bTM");
+ a("Qp8XpDoT+hFaAV4zLiJcji2Tb+8YgVDLBXcma5o5bGlEzfz3qmiauXFZbM2UmInzlhP46H2M8w8QXJYMmR3QKlX3AI4vgRBlng");
+ a("LkwfGLAW1e+ttWMXfxzTZ0uUdN3JDNFg7qEJLv3NRNDu0hW9lV2qRM12/dj/4HH7zl7eMOSFL05gm5K+j+BDH6VvL5AHD/Eq9o");
+ a("JWeBMgY7OwTspQArrMxhF8jOaWJfsobgKIGfBqh01ZEkTU7fXxxRTstWRpPTP5bElpOR05tQkU9jEE07r0Q3pSf++g8l8c3gAv");
+ a("yxTEsKHQ8sD3Bvj7f9kXj62f2cmoFUv4VJKi7IoggGL37yuTDuF8rV+75EjRPfWRSRE1esiMaJg4v7pLGZKomr/DHWr7MSQ2n2");
+ a("bxU93v1V7/dIsseGkL0/mKGjR5qu73JvyIqTEdpkbQtDmMOxrsHBqVhzgsaC1VdGZMHl10Zjwb5FsVmw5X7ULThwx3tR2+ysBO");
+ a("O8lPfk3n+A+2T6xjxgKOO8rRUh2ox+bRPsorPv9RezaKwSRT67TlhP+SCeh+BWMUDTD98boB7BHpxZ7DbOLL643zCz2HsGzfnE");
+ a("XaL9PRQyfbCr0wd32PThR/rpwxrqbQ3Th5QB0aYPJ5JCpg/jVorpwzgJSCIIfhnnD/aQ+YNdPzD+3awJfJ0zosCvujqawNu/1a");
+ a("/5w+tZ/Z0/XGAWWEeeA6Src4BUczhx3YAdHO79Jv1wb3KGDfcvsz+82OP91gnoe991/lfj/R+c/RnvD04ke+HO2OP9Uuf/fbz/");
+ a("NuHid/Q+3nvjNE2auDCiJqUuj6ZJWx39G+8PfRCt7+Ch48BH/JKiUrMMH/t86JYY5z8bYqRX6tLdndeQu8/tKEP/KNzZchu1Sy");
+ a("38kSE84HZ9OKMzOzM0/JEh/PgEfTitc83K0HD2qtDwRwjr6Vc+vCuKf0k+n+pQznfzqsm7ygz7XuXsYX0PTKAjqhV7hko89ubC");
+ a("DZSGvR88UELHmF/uIbPH/tUlvqLiZrwLJYcQhxXcioSBwMaOBIB+/wW0xELvdHNJYd4nrgm4ki0TDrzAryTMyejo6Q30E0vRNr");
+ a("J8Jda8f92avMZWU5pl8ietsdaUZQUK806VPyouzKUX9YS/CAy/bzJkTdT7Jp4jutvj+7nEmyhB4zI648Yb2Tgka93vuFNpN1w4");
+ a("CffPVRLr/QbqLPQ0h1V7k6wWzthQ8+O6mh+WNRvfQBjlYb1avWni9DTbPK+wPcXLAdWdj+HvR1QZrDPhXqFqjm59oRmVtHCMbP");
+ a("QQGO6+m8oW2HJPSLsQVvffTJadA6yW3ybdOrFg85euEQR4Mq8wh8GphL2mzBwo2El5Ck3d1TiIbjHZ8o7zeaTghPV6TURSP627");
+ a("yEIBeqC3b0IPlBd83amdj+eyS/OqfeIBMo7K5Qvl27rteW87LI5mh8XZxP7xQM14+9QvcHuyfAC/+/QPwffGAbyvg7ekr3raQv");
+ a("xzCi7l7cdxyTH/AOWPZ/eQW8F2eZcG98OKPK1csRMMKfIcRsXCj4Yzr9FpcRx2WpxtucecVa9uXORfUOLbYirYcn7B7ObSmbCC");
+ a("1G51+79jdX89+taE6fBljpi3gzFJBZWfIA5ZXcN5H6rRZHfvxf8mU1HeG/wOFr8bLXyUddeH9Hdql3+8c2qrs6ohSBq+Q0gDUR");
+ a("H6v0D6YCsJdy+QLx9QL7kClAfUy6KqJyE1/wcFfcxP/NlnV32LWN1fmcqTcxo6t5F+QQ1snv1W92lcqr+bL4sd81lBH9SmNKuo");
+ a("+Jhl56pRAbef2LE+1f31OHrs7s9EyHJfA3TTb8fdwbHIV1k2KjDTNcyGA6uLbHmvWx5tAGSaA2VrQHLcXw9aP9ztPysSMBRMRX");
+ a("5b3huWe+4U8yfJKKP/i0JDe438fh/vTRT4N+wKXgkPtt+qgCtxD/EInZ7swFZg7bSmsGZNwFb1vuXuDdSGXtTscVB74vsV6OZQ");
+ a("pqj4ZfvU/eS5wf2uBQ2ivBFZtqQmVzvSAvbGTxKoKR30X0x36nFo1WFBh7kCWSw7h5vVq3iDeLaG42ZvPGOwT8mw9XBhXHVztX");
+ a("AnkhQIfYjv8IIg7zpDb2K4/2mwX/AGuSHaxS+IsmkvwtNc4i3vLsGbyvm6F+zX8XX+FO06//xD2h6r5RI09yuWqnusf5N7rO0n");
+ a("0Aa7wg0FaO8DPUfQUTpqUItA4DHsI5R46QVz1asWW5P2sM5433BetPutTFvk53R/QUFPu7sbmnxaPP0oTac/q/jtB/kB7fwn/q");
+ a("hvGTRrPEbyE17WyE8jE7sLlxhtMb0OX1rsLTMWrO59GqyX8gErsNgIq+Y4zSyh77FgHT+gwdpAsJ4Jg2U9rhp4eTzcLkak8a9e");
+ a("6SmQ/uf+xR81lSio/Pha/q7m8w+RwaccLTBIxmjfr0fY9+sR9v16hH2/HmHfj0MHQj3XuXJ0JvzqxG8V1S8/qXr9Eai8eX+wwG");
+ a("AwRHq462De8O11zVpgZ0Wqup7wp6jrCmTlS3b5yxsqUghUZVlaYJLrQ3wi0ta+MceBq0LSgKsDP9RYmQdpoA4RPoyksuWutkKv");
+ a("fbIk3BCYUR8J4EP8WqtfmjvJsmkYhDh9kmXz14PwO770SrogcHu8uChwXoL4/Yh+kyybr04S4XsSxQWChQPxiydLgSQRbjGJcA");
+ a("XiO58fRPrMBpzY/m4KXzpaJO/ptfJ0rdhhTg6ag/LpzEH9LVMIHp2Salj0c7uIYohKwlVQ8hYURBAPbAVZN0eqw1uIuaA3cjWr");
+ a("w6vxhlSzjXZSi+GK6vmzZB0poo4r+1zH6fFhdWSH1JFH+8Le5Ts8bafaLUVtnuU77MVshLdOUyIyPLi8luIqZ88onQYp1z6fg7");
+ a("pY7rVLucf2OZDMYCH5Gy8Df+idtB1ZyVMXZ1ebzW1cAt9sArJO7j1WLkaZ+IG8pg7KbcygcHq9vYltSDit+ZfraXUuQxWtBrHV");
+ a("D+yn2GaFV3N0gb6aD2nSf6NebMv6W8eRcWF13BJSxybUUWKUm207KqjTzN9MbSMDaHgfoknr9OJwae28BGzx0Btl4kuqxHl7Mu");
+ a("O8IGg611OaNSUCAWmFcH6Dm51qDRnZ+EAN3HPmzwXomQBN3IiXkBcki62uEYiPDh3XSOJCwdMNTeVfk3VVtOejigNi71WPf8cA");
+ a("xv9y3Iigk/he0bfusgBjKKFKwNV66HcQ9HVJoQRUATSfDSE+KnjgnxwGf5Ye/mjAx95xSjj+mQL/+X3iP/SEYT88SQd79xzg/n");
+ a("RiKO77UBMfKSb2gfnJetgVetg3zGG8lyaG4b02qX98j1f58k6WDr6ZcP9XQijugyXubyX0ne8a/D16+L/JY/x/lqDiH6ykNpHx");
+ a("t/e5ggS1gtX6Cqx5IOBCSYDKG0eiIOBsxMfkjxH8nok68P+czfgfiVfxD7pZVxIY/3P0MHlLQjWInT0PmDWbRC9olqX+HKGUZa");
+ a("eu1I+olE+WSpKlymLV9QSVWiFLDVLbvyh1UXgpOceqEgc29K0CWkKjw1kS0EAJ6Ex8OCDLczpAjqVhgAYu1o0BFgno2fgYdBxZ");
+ a("hFL3yVIpstRGUersiKWUgllkm4zyD5X5vyXyj++tFj4f959HCjNYFhkjioyJXMWJMqNNdOrvoVgwPFw6jLx/5NtqywfxwIAEsm");
+ a("nrrAWoelIh0acq1y4AZXebhJ4mymp3QC3CqrTWp4lBnIejCSP1ltbr2D4gjfpWgNLmXSvNjP9YPTDWb1511qbxPhtyB0fKc0WB");
+ a("cRFaxGwqMZ5KTAeuwfGb9tCj5WbqwYeN07GDYauFpQSVhCEjwkhIIRI2Sq8JvFswkPxj2d0I0VyG1hSN75rFWuPIP+15p29Pss");
+ a("PVT9lbajXlA5ANDuN8VNt2XW3b08Nq23Yp5D0M7ZcisFb5+1IsXZIv6gm4y3cExClP6ESsGKN8XpulZgfbS/5VnOtKijJO1vDY");
+ a("TCeoVq1etSefdGn4JOBpVOt3xgb343Bw/7hEnfkvD4K7AeBK5FoAaRz3LREnjXh28G1sdXGw9SdfyNPUDXzpBmslYcKXf7BWEi");
+ a("Z8DQY5xXqa7b7lHBPmz9wbagMui+rHC2n2Vv9gNVhLQTXQSrtWiGjTIvLtSsUQsgMPISfY84cnl06ykWFymWNR9y42S1JFz49l");
+ a("dWvbTH7zM6bqdoM9HCN+tAvfUlBLszsu2VKwQ/e9nb4xHE+hXwm5AGxS6yUz95VlZqzEEp6Z5M+DwzuFDCbQb3ec+N0uf6fgN6");
+ a("QcrBmaA4ppGEwqNFl2Nunx1JvNs4ZUNNM1XwIpUFFBLuUJkwTu3jAFB9MSe1QpjQPRg0COxGGDZ9524669Vp/yHT0k9LzhpXeo");
+ a("0MVbs97ez6DPS80yoj+D3NQnZBH2zQW/MvG3Sok/VZfEIJIJanR+zClNFRz4PXUKBsIFn0Lzu5ZqfMoIybKLlzvWT4I6VFwwRS");
+ a("PfM69WT3eoEAw8MNij/VZOtP16tDendA4jvbsQbpYqJ9ChkESP3te1+4eVaH7q1MpDMuUvaqhIow5iS2FaYG7e7Qlzc249bMyx");
+ a("caQWA7p5vCk6Ie06Gjl2rqVqlkmrUjTkIVrOa9r8o3ShWh1utUbc2iuS7PnXKJHq33dcX3/NUhPobdNl68LxhBhGEszoBcWeJz");
+ a("7oEZuSBr8RtHF2uf8mX8Qyzm4afTzWKf5VEdORSBsm3jjYcPDnaTC4y3mPMmToMmSEoz/oOLWFELl0euNCJNgOBnSU/1CNwdWa");
+ a("DvzSfk0wCkE9aNaeRWJQUMi/uNiXHFLAMd1ApQRnpbAdedvEcIw2+LG/zltFrLKyF79BGDLRNtiM51Wt2Korx9aj7BwblTYSTK");
+ a("/7cdLL9/dnaCre9/019p/RI/xn8M+LlZylppZ/+DIUWYqweV722nJwOP0gRXhds/XO70FhwZaC+GrbSZAKfZgmbOokSgs6MwbK");
+ a("j5OD5McsTOI6t46gfahCTxd2X9dnIt41ht9lnwmUJuHvsI2Z1heHCZsRI0p8wXjLxmTri5Y4raxl07/jJNyH5Rbut+DPzlL1gc");
+ a("BtW628XVI0HYMsjSTEWnbbwrfEaCXNB1yLBlhZbkUtDbzT8EuIvfNrROhgJPYGY0Uc3pk0CDhJztx9KpBlBGSnuA8hU2UZ3rkN");
+ a("COOvJxGWJehhz80TSb1YBmKbg9IVz0VaLO90PIglhP+6Ej2NN02LQWNyCI3wtwOt8Y8CDAFYTH2FXcKprPb3UzR7dcosfQPgRD");
+ a("BN76V++1zyUt9CVznODEfFApTSiYVqUfFrW5wn+ZTDWNRGRW9CUZQMWLZWoOSamtvNOK07B7z6/oFBWgl7cTMMOZsDpla3koO3");
+ a("1s0mLS24p4NMZKunWV+shXxeiVEPc/0m+6l2TxPOrhFffARn1ziY4Umjm0xYf33asvUOfFCk+2OTxn/lFqwoq45Z7u4ExjjxKa");
+ a("YTn7JLd3OLBi4qvV/lEb2vSJbhhRSIp6M/65ZlaYHqZckBK85MrXknKw6APrXQS3l6Jln5jEmjAJgK7MdSWf9Iwv21EFEpbnAw");
+ a("rECOpYoVN5xLhGDefsvWN0OTa6ymLWDwHNtJy+ZGGsd/4Sg+UHRKtRhUk77KbsIPK6qyaCCqhFIK9qgd0MfnEyL87SxuKUI7lJ");
+ a("xQGoCiSu/R2cwk4v/Uw0FWDQJZjuImx9S9YD0x7CxmmFro0dl6Jrm/DpRmqkmbQ+C5O03NMPidA30OJ93zD3+Cz/2JCcZ6hofo");
+ a("FnOs9IOQOMkNVzwXKB3u7jG5srUclXNmuDIkDuDOanLd/d0paOr1Z5EG/UOnPedfjOhfIxrzBqN2SRnuQUuBgQqD5iomgdjBsH");
+ a("gVuXERof1IQAMPIrWEaa4xCKEnMJTKRyn/OaRlY2ldFzHPSOQxApVIvkL3vf6axv3cN9BXb5vcv776xGwwORDaV187uZ99dS0B");
+ a("eb6ffXXT2Eh99VvnGfrq43PB3u+E9NW7JvWvrx44m/rqsXL+Gd5f/xjpeg1Ff63vvme4snTBDeaZruFqI7oMI8uW5SerF5n9E/");
+ a("V5TDidV/OMUfOYfJG78ocuDo4Cz+CRDjoss5enC+7uhI2pvFkn5w8Ru6UWOksp5nT6qplnIlMs91OYwbC77qdIBMU1FNR3Th/N");
+ a("1zqnZxIidU7OmfrOSe2YskngSUA2Qr86bVZPb4hilMks4pZnlmXkQc0pauo7Bwu7DU8SlqYg7lsfQXykjvonNBkqp7Gk807xdk");
+ a("llGyb5DFeyzT9STRgKfg7VEtS2dVxtW/fItnUFt62/G9qWdWKveucQAhB6R/ahIfTOw4bypolR25WEgXYFAMsJgA8AZGwv7Sn3");
+ a("VWpKG0ZHakr3TTc0pV/noSldBj7pcFp3Tp9p2nshsvpCGoprVITmdC7vyUSe8Tx1QVDXW1K0Gc+pXB6M0EwwekGeT6T0TZ4WyN");
+ a("PyX8vzRxP6THvzBRHkmTuh7/KsuqAf8qzNiCTPveca5Hl4Vrg8t2X2mabPz++bPFdc0Ls8386V8izNUGU5LUc/5/CP1vpFbQcQ");
+ a("ox9KWd2fxvtX8j06QwtXx/AZ/LyjAJ1uXOlM+rLsXGTW9U7nnRupd/IAYR8Bt7oDporHOq8j69qaLg2TgBI8bapCjdY6CIu+gw");
+ a("Bv+6lTY8f3mf/rcyPo1Fvj+q5Tubn90KllIyLp1A+nGHSq/KJwnSoa12eaHskx6tQMy8+bXKMjqFU8sEc9kfXqJ+eF6dWRGQa9");
+ a("Ch9jMPgF9Wq+1Kuo+vNpdiT9KcrV68/uSBXhCt/GUZuPlabLMrQ/sYlPV0Gub/MxSxUdLPH6HnGlI2CxYg7+r6bLJo/RRRk6M1");
+ a("X55PByTrZmp0pon3IruN75myQeE5HKz5g0TLR8CynfHcF8wjRVVZt4oTV5Lr/Qag+dPHju7xBPtiiXBkoOxvszAXAq4ac1XQ3i");
+ a("0XwNolZdNHh3ZPK54muJkiEFprkWy09bEzWrJEpcqJ9PVFMjqqkLraYewRCkGgRSFSJ3q8CizoAFb7CfRMPks2UBf50o0RYKv9");
+ a("0APypdvyGIJkCMwPch+f3n+xKC93SCAZ4Ro3ZRwZPwDx4DPzPB+w7BQ/5LRP46I7h6HQM0fp43JyY/d5DaxSeo/ByLEmHo9k9P");
+ a("lowj+gHcF8IyydEX8vqrd+ZxRH84PKPIGfx1eTH5+eexdF4cL/g5Q+SvMwq4XoB7ajYnN+jqisHPZQT9GbPKz5dn96r/eIcqoR");
+ a("srj6r/Z5P+S/h6CdUJmP/GTnmv+nDZ7Jj68HOC/4WJ4asANOiPSOhGjCX8d2bFhH8hwf9Zb/Av1eAj5JvVf/4cHQP4F5h65c/c");
+ a("kBoOXdxf+ZYS/CNxqnyfjAIg8RYkRmn7916s19UGQ228z56E2vxrkdd2cTRWJCaJ5MhtYmrseh4ZTX07Hfx0w7Z76ZzexsoJoQ");
+ a("vqobphcyHgqLbZrleiHtSyr1X+EZvu3hcrDae3hvc3D8qjgCO2nBPy7Kw7wSXfByQ+b9YdtRUUbNmAVekFuBOuvqP4R1mJo+YG");
+ a("eS+9CHZPHUim7DiHLzhp3ZWJ4mQh3I5zh0kXYSOr4+SZALmXsiNDi5Y+RWlBwnzsxE4OWH6LeZTVct/fbh2AuxN5H1Y8Dtptm0");
+ a("+Ujg/iVzocky79TOl1zFJ8hdUKn1Ks1R6LGO/jt9KFX+/yHJwZzabpGhUWXqYcZJa0kZzaKWd/pJ2JGO57s81CWZ4MP3UTkIRI");
+ a("QF77UGW73r9BQTXuibcQUHoHM5mmjpd+Do6Y2v0TcBYh+Fgw58J8V5K9JiHfn0pvYSrn5se5Ps5tMPg2CD3fpe3AZ9CdGw8rtf");
+ a("vvB9xNCezvi/xjsTlo4OwZbXeDqQnMWuNherh/Bok82RnPrcyPK51OFJR9RjK9xQQ7t/cG2NcdLWPOcmDTXPhsSIElSLb3362R");
+ a("YMQfjenZbDPee6h3RBuVox+ekeRE848B/x140QJXeyQKAS59DnoiBzk2w6sIuefympXehAEFe1VALLHEPbDPixAFZRLHanQhRj");
+ a("NRb3zvBvkXevbhdl6OvXifswa7wUBTs+4oxW30NzE0hr1i6CTec+0nsNobguJXi0xtUpf0dnsIV2UlQOLX8lz6r0+b6HKU0olF");
+ a("CncPldHtJw9um2yG/8G3zmgo6fBBeh2lf5/T3ZfcgUCcK1O9479qLHunXo4f6WfWk3gNsnDFv+CKE+0c5soN/qQuxpdRmuH45V");
+ a("D9X7+p4Wc8T0eeVMrTwnm8gz+dhMBDlxJDmugghfZ+W2wnA/jntp00AaWXkQM3bE7avak4ck7fzUEbggl7g+9CwcqrvjLFwULg");
+ a("EmR5WJ/Fg567/GRc6VQkbOIEJxISb8cnO/xN2I+E7yIkXkmYscZgl4W72H/UXyGX/OtOWu65WbwhgivExOPdmkc43wjmqQc/wv");
+ a("kF1QfwGQBIrShZ3Qyg/0hTAPnnc038BAPFP8syx0kF/xI8AD/eQYyyBUdvVBpjythDiEB8C8WvRzyw/StHwUfT8CZU9SRCQrPS");
+ a("WJLrxEjXrR0kR5FXJYFdeKxXffo2pY85JvTpnKwQfXp2FNP+5CidPsVlhepT10SDPhnqp/zKgTd6rb9jIun7G6L+5yeG1H90JN");
+ a("f/8khd/Q9ODK2/Okb9lQR/oaF+4/0P5LuG8g2jfFI5ae/OdhJC9dhOQqbd55iBS+pe5bKxcXHQt8T170JoQ6nUi/lSuctmwgkd");
+ a("l1X9bXeRfp9AUXIOSPqtfHs+2X3uqngP8NVrJ+Q3b05QZXafE1SZprmy1zgXQDVxc3ut196bAUm2brCMKmpJOMx1dyeu/4joR5");
+ a("zivStk3OHySPvBUAz4n0KbiH7K59bn0/7lNjT1Ot5U7bNsvhFx9Xq6JT4vTSDFvfCwPe8L14CC50x+a4mP8HoHnGufQPXhTKmq");
+ a("oSz7eaZF+O9N3E2livcXeS9spYJJVDDZBw++HQU5gYJq4xCl2UNXJ0oOvL11Y+ybhHt29J5sCt3/akU+MptyF37VgaizlJj8Cb");
+ a("vB2xvM+QjnLB2k/J0T4v2LlTtPh2a5U81yw2mRZaYy5UxolmvULJYzIguMLl+gVuzFr2ZcXa+v6ZnoY9jd4JqrIj+eCtdfl8I6");
+ a("7GlzeJo0f8NwIawOfpnSCnpIf+WJF32IPRMypOgiRDeavLggu9ee11g2EE9DE/Em0x+PZ5v0unOqo1gWWZRJZon5fe0zJn+K4n");
+ a("j3DHoz2jYqqH5bnQdnBwKQFr34Y1davfsLeGpQH/zhQbiGN9WCNITIAYj1Ljw2pk3EQ9LrcSD9siSokf7Rl3xrXQG8en9qHel9");
+ a("+aC++ytjPG2elxyeV/BYLQa2zuKDQWzvTQzDNu8Ly5Vv45Uz5mlNmKexIZkb0EFJHxlXMx1h3spi0/N29v/Ibw/uvkpu41aUwP");
+ a("/1hMjcvisCt43vc7O/Sf4ydpK7QezyE3rl7jBwt+hwh8pg0+tnAv3mr9eaFsXf46EBfZhfRiWFwazZHQg6yBiTLceF+wyzycj+");
+ a("FXj96kqXrgK6gm5+uoRv6644YYIfdEsL5fJdKU+G3vnUFEfN3Ub79dISsfAvRrnxI0CUWoX36zmUl7IZ/f50C78/ipYu/P5UwO");
+ a("WPsuIKEESxhqE8nB4F9HTRrTSqVfguUhisSpTCvosU0FSm0tQRQhN3YU5FpUfR09Mh6VEEPV2CHoWyGenpEvR0aOmCnj89DXq2");
+ a("FAl6lFj0SH9MffanVRvqjwmZQI5nXpr46vLM48JYAMMxMVIuqcPat2z8DNqS3Zg6Y9ZXCJ2Fk5+KVOEqKznOPwiwxbfBbVaB4E");
+ a("NemCOn6H6c/lRH9NsNfpzC18Nea4aH9iG8RcML0YDUOV9mCs/5RuGHpGJYkkT0N5MQw79ROdqZqx39Rwfe9ytyUSqdBstW56hZ");
+ a("1+1AezoHsPDLnt1O08nEBGwOYe3xxnETt0Jayo3DvpTw3hXeSvECQ+kZHfbamD1KLJjCU7wubcn7/vmGnOxf04EYJ8U4KcY7gv");
+ a("ul7x5V+6VAj+obCXR5QZcXdHnXyQFWv3/ELNKTW+T5FxF5SbyByLmjiKL2SF0PkCWazwVN+AQn2mCPiajMGK1y3eCsnQq3UcAY");
+ a("Nu53iI5PXylrq2VTIz5n0GfpEj6tLKfw7K+QVPWY9h4/XkycuybzToLOxZ1Sk0tsjW+O+5T+Fpj+yj/mPZ13q+/vzaLss+FlF6");
+ a("tlA6Jsj38F6tOVqQwvM1Yt0yPKBPyTZRk5uXeEl+mkS+nqdo42/va5vy4N6a+pT7XWK2f4/PLQaWEwDi3a0EXPE91wflgXDbhR");
+ a("++hjf0Sb3lkYuY+W7VltwHuSuQHXJ/OiLWIDXlOTsMTdYG7qTT++IX50Cn7s/uob58eBJ8CPx+b3iR+WgcyP5IHR+dHUx/ai1/");
+ a("2TE8P06t6ZkXU/ZOew0NNwuIM/w+cj6K0OF3qaHJ79uPN9+L28JsuV7ZgmJWOapLz/yhkxJeoOpbioGJLaC9/Zl7FNqG6REAs+");
+ a("BmJs0x3jRwAKSjbZD39dmNdkRYViTqaU9lJfPXUOvfqPXd1z5puYb516VptvPTE2+nyr//q6IUxfoak3YjyQmipdKsE63jc1zx");
+ a("r5e+js5wVGnQ1vvwNE+x1g1Nfe+L11TIz1RCuvyRuDLHcW76OZOQYT9weoJH0btttCh8HDHXLMHDpBjJmagtdNYwUPWcrSsDke");
+ a("pnGcFMkmnSjSO4xHzvNePhP0IztfiE+OlWH25IAk4QaEoZBFpsaiw1/RDPit9wnLT0+ZVFZ42kKaTxxWzEb9j95+5VhyYWZY+z");
+ a("18rmH86cWf/Adow9iPPtyR12q5stFe3Oow7fNPk/svQNpsbVSSbdWmIizpHXn7bksu3GJGEHcdhU0qMyJvf03yQcITDbKBH3N2");
+ a("gpRWkFKY14AG2YAKimpSi/xZ4hzJ02az7EyzNv4zGb8FJpuprcTmYbAAz6Df1LO4/ulo7fWp099Ie738aa29fj0qSns16Ht2Eu");
+ a("t7ZlKf9D29cpxJ1PdRdpT9mVj2pcLnnzOyAVi54WOcTHrexZEH7QzoDy8EaZ85PYqyDmcJ0oPXetVB5LWxjT9FpqdurKTn1Pz+");
+ a("0xORFjyQcA0GqujQln51JuC/xge3yLI9zxsr2zNqlBr/DvjIU9GviESlch+dVQkx/pzSr+xk4/zkqRicAUtCPbDlRCBcEB27/T");
+ a("17dvj8L9swl4v8ftVrNuz9KyYcjPkvFPux/Kah1brl7IEO71B8ObyjnRR2DDLNr05NkcnVqwaarJgGoYlVvIwK/qf5z0uG8YS4");
+ a("Xb2dKLoH7j+Vc3FmIIpuag06v6umT+VmJPFgU9kuqxehN2UI9/SwAvizCeuEwh8EoTxIRW88BFmFDE4FYgDKCxucoo9Nd/4GOF");
+ a("41J9LYZFzPaE6XB+udLqOMl8lt+B7h6GXSljG+Xsa1FmzYI/f1cWTrgSm1HzRleLqhD03skNOf5nN6jju96+Ic2L4duARaWXXC");
+ a("ddwdsJS9QsepQ+hUfWDQbXPktU/E8a8cDHN1A3HspgLNdn5vefAMLSLhffBm9qLfouJfAPxxWurApqsblqg2zlJL3I4SMB7Xna");
+ a("6dTZGjeiWQYHRnsQ43G4P8aINXGO/VqTgPg1P8CW2uqwmqazCSScCKFVB9Ko926Hh3DfjlHyr0WY27EXGyIBr3xSiKa6W3v6s4");
+ a("8OVN/HJ9XJzp8lSx56ugPeLXZZi5RezfmTc5ryo3mYmSZrvqwd97FdBuWE9ol5Z4Ex/A19QFqUrPAdS7EUQMV4lYhRjlI/yBbF");
+ a("V22REEH1NV2hTwQeXJv9f2CAhzZDeaHy/m/OeCwS3DNQZPjAeDH4k3Mjj1UeLTdf2iD5KuMjF9VLOl6o/Ip+L/wn7gPxIIs4nh");
+ a("Ep+Sgm81sQKJ/M5WCuHR78o7pz8junbx65BpiMNVXne3+dZpIKFQR8K3zWTv32wkoegR6IhaxVyq/xf4w8xj4V7LtcL0NYH/AQ");
+ a("LuBakmA82x5Hl/nCrP0qUsy/dvYVkucP8w1cT8L1ExeGgf65JrrBJHdf2Vu6LbgjQ/sZZpltKqoUGPZdU0TCP0dhMI/dxkJPTb");
+ a("24yyCutP0NTovLjHxAe6g7yDpx/DXKDNP4DuD+HTOxtrFE+3mOKl5p4WE6TM3P3iIwsfjUpOrpyMWD1HrY3HE6y5R63u9y2wgc");
+ a("sdjf9s4G/12pLzE3ffjDPOBPQFPupsFAtIR0+DN1P55WmuN/FpqfqFuH9SekWweB7eZcnyG6l8ZlGNM9mbfgO+lW2tWCY15190");
+ a("EyUMsHrK0/wWAfuZVobtai7x0c/8Xew5xukkS+t/o4zWFlsqsRrn2TcT6rZkpwflHkY524T3r6hxvJfh8HysrES4yGNjm+4exd");
+ a("D1af6Pj9CFqREt89NYKa9qpV6hDa7lPPOTfZofY7395mR7C2uQUjRZO3nU0nEwlSZH/DRyflcHoxI5DTJf5PGS94cdfdofLtX2");
+ a("h6Vtaih+R1aP6gEimSck93SdCYTuDF8mxrrZYTvDUfeFf/Ewxrj1Fxj3hY3z4TblkU8N8+Hw/WKH9N+v2iyMvW/885B9Yx9t2o");
+ a("LYLyb2sOMjB5YSRCzX/8NGnki3MTRwQakhhNheG4p+I3vE3ofAi5LzDXvE/6s8N0SSZ9pEvTwBxpumvPCJUaQFQnB5YSKNvtff");
+ a("9EvQ8UiuQaYGeR468X+Q54MR5TnxHCFPSSiJlVF4eI9BpM+fkCJdHCZSq+DInDCRlkSX6XMPghf35RhlatTvDmX38cj82JFVJ+");
+ a("wVtAlDBe38Iy23dkhjAyn2Gr6ArtTjAaX8xsybAd/0JcSKusUtnMS3B9PVT2LG/GT8QrlJaz7TLkP/rksyYRWri6jXy/Vq2Ov7");
+ a("q0pyYzoI0lA+BqM12yvafU0QQcWLPIeEDWGn52DlJXOvBgyy5ZI4rFuMMYO9gzPeozEG10b8U+01Y4ci5M9Ejs9OBUehkneCo1");
+ a("AxPpEVwxAGvSGgC903+mVMye8tB9cPzuUFobg5uIfniVjkiAy3UIYnkMFaPwdoiMhjlYh8AJEOstdVhoCHAwAx+Po2ej8xjl3H");
+ a("X1/keavIOwQXQAF4QVaPHvBIArwExYDSb1NNErKJYuci1uldkCyiPqGoqbKys6iysxHoJA0WNaZvpvmmViMArggCrKMCftywCe");
+ a("Kxe2IIHvdQhv35jEd+sNiPKfbZfFHpr+5E4HEE/JMF+AuC+RZTvrtlvlLKV4EAcqn8DKS/vRyIavWNpxIrZIl5VMKJQFVg42JY");
+ a("MAhUfVlWJJcZBbTOIEh4EO8d/pKE5guFdpgApEpoJ+9AIIBlUF5PRRPGWmD6dApJ/g3kfJxy/hOJNAXaTzn/joAPKse3ZPVXap");
+ a("+X6xyyP+Bpc36/IcNRM/incHt3uWVnqslR3Agz564RWtIPkLSwJsHURGVOjytrMVz4Yf3mKzbqep/NJpeRrY/SITP2k3oP4G8/");
+ a("fN9Neitgiut8CTjh+136pqU12aeQvidGO9grpz1ZXA0ecpoazEud9yEE/7IE2my5OxUhTGlLbya4t/E50I/V52tl6kcFfwyEyz");
+ a("f+WG7ZXKUmVasf/yHuusOjKoL4vcu95JIQLpBEo4LGDoKaKGpE0BwkkkBi7/WzECsWSLAFOIloHkf07FhQbFiwYCGCSkzRJEiL");
+ a("IIrYAgK+4yxBWgrh/M3s3r13zxyI+un9cW9md3a2zc622V1vCLg/BDwYAh4JATTe8j/JOg5lvvJWYNOAAS4YC9gj4AWlgEsE3O");
+ a("sWwNcKeD3RXCLg+YADZ4u6O/JWwCMEXAv6wEkCPpfcjxawRvDBAp5B8N6y3glOFPCn4Omjtc29QmPdd79EuX3ZxuUWOD681YSD");
+ a("bZlhK1s2r0Xow5HqULi7KNzEdg7nBnU6NM6kzWGNk7o2rHF6ASymsRlb3/5OU+K9HpJDtGwpZxb70VNdSEGtfrTFjNSi/1fp1R");
+ a("ui9Yc+sV9bClNo6pNY5WPmfQZnkLJA02nZF2irmZnSUzyszAoetk/y9muMmtVfxxoZX70BGZ+7jTqUhsB+8DyzxPBcQJ7ztrKn");
+ a("dlk6Jg/tPHmg3kLPeFAuJZ4QDO27ljaL7iGafc36riBbcK1cb8mo9f5reqoVWZ6JJYJXkO05WFKbF75+vshYUjOMurTV6OyY+e");
+ a("0YlPHIhA4ipNlvkqugaxBnwAU6wkCrnwE6seZl3BPeBIY1VFK0Lw64mQ3kJ8iy5QKsQRlVjjHKKH4Nnf/gMqot0lqKpqwrUYtw");
+ a("X5ivUFtLiLMAxupOyKv+2wOywDZwd4rceZE7L3LnRe4M+0UI2ZaFbNK5BH0esCrIM7BlZ5DiUM+41Yi85Cu6f2ILe3s6FVtDTj");
+ a("qRJN1ikFxHkr1lM5OMkSTgCZEll1HgCWxQJ2N9CWtUe7cjrFVYDXlG00gVjBSYK8YD1F+kfXLEazjbybkSzmYmcj6krzyUjXz5");
+ a("EQqn3kiYNx19uHkqJO0XZYx9l1/NSWvEh36BVLn+Ms5JWn/LKaT96RmM0p/N712waqZKzrRJ60aPzbjGVms+lKSnVnccWAN98A");
+ a("B453kdnvK1MSiSW4F5U32YadF7IUnDWhRa8NNHviFFN3uX/Fmo7l7L7Dc6DlwOhplgmOt1hDm2/sAcPwBJjb75dYOt8TP4Z4QV");
+ a("l54NUmilWDKVDKhsXSpDdk/fNnvX9KvyMI+kQyDU+R7iBaBvRRANTIYScWlvfetrzCK+EQRyVA1fo2Yt+m4Wgls8LfXJTVm+GH");
+ a("E7Py/WWuoCrnsRNB6vvdUY01nUZCR/1MIhc0wxRLdPtO3h+xZLta9gQlcEHqEl+1xtrdaOgXEREvrWmyiVemz5Dsa9OnTBDEcy");
+ a("34EVpk5lYiotxbu1rzmEXs60PuhJmj1SNhUkJpAIB1o2OGeNHGCP2uXuhFyfz62o54GRW1yzth0iiH292KlwCtgrVvFBW/NqfN");
+ a("T935auXd/3N0HaOC4K5z8rmLWNxj4NitZK73VuUzAZKqtrs5VmCpXLjLdu7OIdJqJJmk40lYW1sD9CfDzkCziJx864svc508Vw");
+ a("0thIH9k2mz9a979++KfpLURayssm7wiWZpmSeyont6gN88Knng4Geah9ECi13Ad3/P306vrO77t2995G+D7FrG94HFyv8MN+V2");
+ a("/lMqujJGUj1+z4ABwbc5F4/Mo748pwH/3r8GrAFvEWWErNp37qg8RkSMT62SwRo30NNBzAdG4Lz+USQMAJU0WGdTGsfPmpIGSz");
+ a("XI8pb4sZl4W8Y3YYdGMh73chYNx+4YzuKuQcw/sls4394pig9U0Mq7xVtiG4Hog4r2Odz4qJ7IIWMa3Vxf17rYxhasvvPnNhaY");
+ a("uygqzv5f5EYUM2bhwbkevGGFVbHYrrgB18opJg2iUEkf4zoqcA0xpoUkVhsiPDBDojwgg6fS6ClQd7lEGcikPxinud1Pwn5sdR");
+ a("sW5vx3KmYN1GrPPQQLMMvg9b+DKRfmk4OZmKDHOEEeZySxgm0vtzWuJc00hP0m7c0VTtffl+DgSoOFWlt2mS6nbS3d98f7Fklx");
+ a("xmh8o8LVlvwbEjJn2fSTNMpOs7zKTp+lyQUlSDKar9KapxHFUshz99B4XvZwr/UkT4DL00FFUuk/Y3kd4ZQdpPHxkizeok0kNN");
+ a("pKczKcNoFpumB2nbIrG4kd8cV64NpIOQwEKMl7pobkcJ3XdeV1A+yU3NXbK6en2XKdZM8QDgDwikb/y2O/pBEfTZgn4Z0X/A6S");
+ a("2i5pVqSusL7eZsOfVx38hsXdRB2drPRHp7uzlb+yJbFaJcj2bSPibSogjS3x6nOlCoYgZSxbgov6vbydFOjkeRY09y/JQdY5jr");
+ a("1+3EdR8T1+1tZq5PMFdHmGsPYnAPM4jjpt6Pm5Voq17RVr2irXq5rcrmb+7/X0bmaathySjwciK8+b2tJl6sQCd+M8gyl7uq6n");
+ a("KnFjoOwxefwwOFpBcrmnKzm8b2z6tocnuwgVxRF3qPzVOn5FEI12w1uQjjqezm2wLQSZ46u6ejx7hkCzMfOcbn3YP3uu5ZWPqa");
+ a("ZYBljEfTOMH6zlldWI9poPsHMb4o1urnH8H6Er70Aq26+hfFNn8kn4cPOTXBqVF9G//xDhug2QTZCHoJEKvb6bN48JQZsskoxl");
+ a("bAwZp6N/wxAA1CtWrq7UDYF6PFBC1tDFCf6/1F+keQZn5/yDP0ErjZSmL1V1E14T2DyP5y/+1R+x/jPMwi83tPCCWazeZOCLx5");
+ a("HBuUk6LQe3nDVtJyCw9CbA7aEIFZ1nwbdT79nucdqokDqEvlffmrmml0VHx32Zk7k2x0Iw+7MZ5gw92Buh0op7iskzd7Q2Ok77");
+ a("bJYRGNMo3zMVb5Kp4ZbXxJfUs+L9yqlb+ivORgnJYzxBrgUy9i6wXZ1NS3YbgM6BBNfV9A/TR1gYAGamo9IBJgfCjgIPc8D++P");
+ a("ot4Z14fN7QpWqK+zf9KCdvh5ZlJe1P6/ilWDPpgE9QUMLm+S9xrh3YFqxHmuoW6EjB2XCDkZKZIOtyPJbWxK+dBBAJSxCY3qdH");
+ a("jayZMyNg+AJcPh+WKBjc8fOxR5/hjHlhH/d3AOTTfuXqHY2F+/7wVIex2cqkUofda6aOVpka8v5fw9DUDU+TvLm/l8Chu5LfVO");
+ a("yLTM2nnpZnx6kVZLtmQPVis2Mm8JpsV9rtB+GqwKxu9XoG0izxLh2cpnVn5qZn9okDHPdAmLDimkM5ZLIZWO4dPS/Qohm0Whd/");
+ a("vYjpyCQKlfjyBaB8u0fj8kmcy8SEDlKZ1OUnDGYRdDHi357W4+UYj9XuOgt7Y41zsmE4meN4MEoQQG/ho94Km1423nXG2jSMJJ");
+ a("SELhVa0F5b/a9UkgRB5OoLWDcYDL224v3TdXu/GQjCI2hJKbvhW8rN7g008X9HH6vfy+eKHW2t3MotC8TS3P3y+XZxTpfCLeuq");
+ a("wZl+LWagsr+87AkuwIbx9vXvzqYt+UmrEtuTRPlM9CxuV5C3YUfO6XL0YCzQGqw4vqIq0XajEkeypgnTYRrFJ2tmG50oyAhq3/");
+ a("MZSzo2DaT9+qH6maU4xLJ7yJIc6zm8H5y+ewtJMgXjTrWAHRlNpxd/yXgpa+50XnP4r4P2bi/6SZv+jPUACCPcvgPs1SBsPsUG");
+ a("b9IOTy5EJBWPR+W6bAoEDUe8rMsOgZvVS3/Ocv+6v8H1gmbQBEFHOetUZh8A+/JABe0PAEhlJ2RzfB5G+X4U0xHx+VBYdH2jlc");
+ a("roblCjALxRx8xhqse3pTTIufiRKTVd70d5Am84qT1X9sN/67bS9jzoreXkTdmJ9XDbWUn5YYLeUbwPqszmDU/k0t4LO3qn2xQt");
+ a("iHAushsKQuxmIFdrnAbAJ7W2AdixiL2cnYFoEdJ7BfBXaNwHSBaQJbK7APBfatwJYI7EuB/QBMxlcfeR66BjpQ92wQmxx7R25y");
+ a("9F9DoeoD2eFlK2+sltvNcn36hcai5os1CLlMhOQl3aTX5sLlyBjeKoMN113p81NAujn/JV+oFnOs5mjGe9HrRcpi6YYcXuTPBf");
+ a("9u34+429+Cj/8T186gGf/Cgq+z4I5vgpH+VnxVJL7la8Zl+g6D3YGu0ND9Wz/f3fOSKOlnBrNEnBBkbCYw/aktoDpsK/42bSP6");
+ a("7Uz/6c9Msf8wI1fW97Af2gjyvvTXVkNh0h7cxCWdkAOuW3FlJeCJbsD7LO0ieDLBSQKeRbAi4NcInrKB4LSTf2cWL6+FTL/DLN");
+ a("IGCKcXyelZwXU6hahfwiFKOth7JXl7RIjrdrDTsHVwGiOc7hVOl9Ps4iLB5CqCJ4KJ3F637Cf42nm9YTp/Fszkz9xX2nm9YQ7v");
+ a("+nw2NS+zsHJGDSMp7obhThv+4vHu5PCEvIrhofcuK6cQReGJq8ZnNEyZBxC7pTAWn0vg/IVC4vyz7Xx3LmzxT1KvPw2mR5JW6Y");
+ a("Z2EtO6PXclYHCfN3iUc0JsQXkgOfBoUeXwZLerangCMjwaTKY67O6KnHj31OFOfJ3wyomH10XwclXDz1V9dmL/5toWUH2S76pu");
+ a("ElenrmgpODgGjcQ9NSd+CJ5zjUN0uKrwgIFyb4++LkV8J+Hr36BQesBteGJ5jQMxJSKmMxIhRM1FHFMydCucE9yeGxIUymP/Vd");
+ a("QCa9cmw8S/QLMVuKpzEtkirAPmQGtj4Jpf22aH82KiW7ERtTUarJDG1F50z/wD4xSa2OGUJe4RvEbc0SXi1yPiPyMcvxKK326K");
+ a("f+MexL++0BT/tM02I/6fbKb4axQZPxhWpjUXipIu152h+B3m/DtM8WOVyCFWiTheDCBX6PR+hYjXoeCyZLzNbIr3ZnO8ekS8F4");
+ a("TjdYTidZrz/RfiVU3xlsXJOAvK65P9A/jZDdEwvKJheEXD8HLDMLUmqc+N5rSIVyn3gUhBNiugvMN4rqu6hx1/6o1AsAl3KH14");
+ a("M+IG9Fcgu64mP5YNzQesUfAZYs+vxKt2oUZhJkgAgWcIbvh0VvS9DGyKfbhNircI4Q+NHn39v1W/CQaE4n35hXs2X+HHdXEcSy");
+ a("9DQGOPke3AkvJxfYL+MDyQsSGA5X3bWFfroPswBwBGDVaot8CvQdXwj89D4vMUPkGxSOtVgyqVyhlOXqt1ggcn+sIviDOAOVh8");
+ a("oLFMbUsGrCgzqH9GABk4rQ4wB4wLBcwIBbzNFDBGnQ9ChH2ewqqd+Kdxi0fdBEjhcPmwRnRVqbWcmrSRI2nen1rHXm/Ai5a7jW");
+ a("vTyndCiSwlS1i246A7vmiuNTU3G7PhpcQCtT4LX0hirJDEirTxwBHDW/jgpQpXVdpojivpe1w+UOHo5apKOocd1O/gMDXtfBXO");
+ a("qU5wShsiCKdASvUM2IIgbH/htPx7zNscDyK2bGJbgwI/GsAQdeLhlISDI5IA1s+D3tvD90FwEirpXLDy5Z+40/XASWIc5xmqII");
+ a("BtQjLDK5GMSa5pX6GXbVBfARL0qM/ho4DPYHyRiof5k7SYEpyaPDjVWZaOHE5wcBkez3FN1pfS4wH7wX20cN9fuIs0fA5Pz9CR");
+ a("8FHLZjaoborG51FPpHgQ5Bh8jVbg+F60AmGrAe+UCO/13yn48DN56tcxdhJV9XN8ga7GR3YVp+RjMMVXR6UNcnAhHulgIdLXN9");
+ a("KWuToDtMkIOouCem3ovV4fgd7rHQSIEQF2wEcshm7cjjy8gXA+z9ApcFVd004J8o3CoF4JB/2WBrmYcw3afJQJNI9vjCGJMR5B");
+ a("cn3buVVpSIJekswd/xvCaRY5XQEnwB/YEdWUT7sIvoyivQOwL8KemSMJWw+Q6cKjaLEw9PCc3Lv0BK1tSrDsYDr5v3+xLwdX+1");
+ a("F/WygbASaHr4JfwA25kPM/oLD3yyzA2n0vN3ZLlf5fBbDuiN6njp41wUwNr0xMCU76GX2Q3OHcsDS0vmKxD/mzfVxoZ1Q0OTlb");
+ a("Le3Bu1L8CAP0NjxpLUss3A0Gb0pmnY2zlJf1C9N6Tupdmk0LBN6k6TQ0Ongir57HZQXZTkf43Es+8ezjmnIpnPmdlcB5RVDGvQ");
+ a("JZbNO8SZiWba5DNGCQ4Mb6mHLNsMoh/dA/xRYqrXTKB8sP9LJ/OTaLY92ek22ljQT2lAsU9+GZU63Rp7V1a5Jl/Fiyz0Qjc9vR");
+ a("pdVHKx+csTPnf0mXyBKPzyi6eWyiQi9F9Ibg9wYrSiKZ21dOtGMx6Xg3lFjZiXlZ6+j9pE8Q3+kDRCZ7ikyWHA2xbcOoYwACDg");
+ a("iHb8zDhY5LaV3Fr6ceTHHVk73BtCwkKkrW5P6tq2rYETAyKG+JKdmXrKomS1us8f3wV7K3f7w4u+8dlo6jhVPT/cWMA+Wd8Ir6");
+ a("wAUGBzoLkMikGm3/4iCAkh8DzCsXBWhOLKhjy1uUkmR+IQ9uQWQQnHqaENSv8Qph1PNEKNHineJqRNfH5ydjoBODJkRi/dujXa");
+ a("F7rYgqR1BZyp3M6V3v52HB+JOC8k/tgRO5nsipX375kAZbaQ+GC7WBDSxv0A6i3F1VNhOL8p8VnJ6bhNbbrj9+IBc+ieN9Fot7");
+ a("pN+SdlguBJHw25PzYYjYB9c6yAzoa/qQ1cleRBMLicG0r5F6i8irHsP2+/pZHdTOajHk4vvVLOsCFvuYeL0+aEzho9s3vYIhxx");
+ a("wMOeZhybAGS4ZNhTDxKsQyIsxks75BDiihTZgUk/RlrnMvoMHd1LghEKEGOXgv5m/JSL5/3F5y0cB41+TX2G38EcBPhvtRRDdR");
+ a("0k8W38n3iu995I52sMCJr/9W/AFWCB4tYDvBFxJMRX8JVHnu1Ozcijbwjx1oH58QSBb0ASdoBS/oUDoCCGPFEoirw+165JPAvq");
+ a("E43O8pgSQJI0uo82LvqUcUHxpjc00bS3MhBN2n+EgF6FVAGbq/nRJxDtC8e9aJ0wm5mk4X90+7D47UiPaiv0PJLHIQxsklw/03");
+ a("2UWbOtVJOspVTRLjvxCOhtvH7JZndruKnY6JCOtNx/j8ALsRZ0q0ODsUUzhXFfPaEOH2PrstJzdLnNXKn+KcDSdT+RQPVWylCU");
+ a("RBttuBngXe2PwYIF4b4ZAcqKxTRbtHPZebCul7+ahBGv31owSfRAk+zf8p1av3vAzauQme20qGJJyYN6zuQeH+aKQ7BpnkOknM");
+ a("XQx3OAL3X2NKwsUyCb3p70BKQiYl4aRAns8SeeBYhLVEHDgAbhGRQoaMyIp9LBd3meK7WcaXQH+9AlchPISgnkKez/DHBPsCIy");
+ a("PuIzl1AIqSjf0chrVkTq6x7rQuSPsnS4JBcZSqVh6lSsMpLJ/YJoBBH5q0F03aiybtRZP2oknTGrz1OJzVvhPZmsA2nlAGcrhS");
+ a("KIYrDX2oZ0R+eqJNjY0t11U0q3FO90dOanix7o8otUQ4ozvCsYPJa3IfsTP0JDZ/p5J2SB1ovy0j/+6f+GTWR3bi1MtHuI1wRd");
+ a("SpkCg79Vzp3HORLwH3jgXg3yRMpFq4yAciDPdn9HcQVfGRVMXZ/hQhx5BcvKiWmp5TMdhvg1MIL9YG+1ttBg50DfFlXEFJZKMt");
+ a("LLOkh/vBBCbhxkAXH8QAEY2BbtNwl+9wlh4ZbhIQPSmgBRqJjX8COBKKLoHQm4CaiF0gdmttUsYCZ2sdITB/d/LS6jbk5T0yGT");
+ a("h/kVVe1o/mwyCoci+qnAUEVR7tPii9od3SmVj8q7oM/2jyZdz3JGXLULtoN6x2ewu1eyNQgib2DlxNykaBWGf7n2HdHkUXyeJ3");
+ a("morfXJZmzdAYON8Ej0Kd7q48a3KM8rx6B8oz7jNreT56Nbe/NvPtT1yce1AeaGsmae/N0j5GjtNSA8XFvrA4yrLYA1m0FIYhhY");
+ a("HzDBH8K7rokVOMsrigE2XR2WQtC+0qlEW0gmB5IVvGlAjzXqt9Jq7L1Gu72OybDnjvQ5MRnLnqSaOfJzZ1YY29VGU7O0xUzEaa");
+ a("Uh4fM3b69qj8xQwr+2fMsLwjpHDeK4UzTQjnbSHh7Ou/kRvwCAgo+stkhNV3BjAXmEE5Q3iznIJKVg31mUBk1XCfOSI8Vs71js");
+ a("hAFkMt/TwDttTNiO7qJv1ko24+oh3/yxutdfPLFVHq5q+Wzyb9g70wArQN6ema3IeWbXuWJA90uu5ZR9o4UbHq7FSW4rukFO8v");
+ a("xndCz/ZIh9TpizeixFbssW6NrlXvi9SqtwPdbfseYpTbPW0ot8MbrOVGrwT4AkfxGZQ17Qb5kidBnv4pyCNONt8L8uLuylnK57");
+ a("Yo+2uW83i8PwwA8S/ZzXkFn7BnbOLPAusxPa47eYIgbAAqhH0UzEhoYP1jKldrnGvymbRCH1dy6UC7657rFB7cx6Oa+/uz7aEz");
+ a("J5ymW1W++kSXawxXLkVNpoHEJ2g4A985maZF0kxcAZpNCmiM9lUV2b5eNtrX0wDRcNAlZ8rw+1cj/NvK321f/dG+WFbk6UQIiI");
+ a("Qk/+oF4H8m+O+K6AkiorGGtT3yeQ0pV82Qq4rBhqAM3Eb7hfVWubr0MsiV/wch/39V50SoHO+7SA33B/+JzrHm8cUTjTzmb0Ue");
+ a("A3XWPN5x6U55P+IBYq2/SRjydXOm03oeaWkzy3+LPvezPZH/uc0mwc9rCx1YMs6qQo1t7hWS9yKTvI8xy/sgu7jbh1OQQmc3cY");
+ a("JVLinlogz8KfzeDdNwcg/4nGlWSZo5caD5LYpOfFfqxIP8r1KSpEpEaGkP9+MHqNd3lOj9vG7Rizrd8GDSiwMkLza7pELWfWBZ");
+ a("WDmFYKEzW4Pn6v7TEMefSEeDFFJPcIjuME6LVZc2o1CbpDw0QR5KTjDkIXsz8vFNjVUerruYZP4rW/flclu4rxhjKhc+7j9zDo");
+ a("rkWRHu75VJssw35Rd5CpxLCHgzkr+7vE0/3sjbJb+TfcjH1rxVXhSS9WPNsg6BlEK+a33//RKp7497azf7RR7kbB765xo056bd");
+ a("6fjzPxM6PtgzJPNZCst8LyzQJEHeCyDvh/r7KBH6/TkM+qV+19MWouh3gKNJtysxYd2uzyXl/y38/964qWqhHDf9LzqsZZCp/2");
+ a("+l/r/6T/3/BaF6HcUVirL3ouy9KHuu1Sj12XOxrM/Rb/xb9blJPzEpVItHi1pMQS26UIunoxYH+PfldsrXx9Zw3AsbWCvpUit9");
+ a("BqN2/1bBrINT+Qd7VxnjRBCFt6UNxdLC4RYCxa24BooXL+6kBAnuxaVoIAfkgAQLrgf8oLgEOQiB4sWdKxa6HFLcKW92vrLtQP");
+ a("HAHybZ++abeTO7M/Pe7t7s64ztRMSt7Y2W+ZNI0jdtU3yPe35Ytc2/8X+JOIbvS6pjmPCIxrDzbnEMn7QMjWGraGMojl+Vgxi/");
+ a("Vev/pD3mP87tsV+qKPZYkEaylmiPaV+q9sieh6I93nxH+bBH57HfssfJx/6lPdpLqGP5/AGN5dxd4ljmbfFL9tj3AMbz/No/Z4");
+ a("9rU0Sxx+I0ivW/tMfhngh7rPhKtMfuRyLs8TKN60/b48Ej/9YeexdXx9CSRGN4doc4hp2a/Yg94v3Owb9XzKPhWNrNONaZwMeE");
+ a("NoktM5VURJ1LSo4p/KxczV9rQlP4y6k2WdZg0J4n57ORqe8Eg5/3UM1NRzHspdpI1mNenk1A0ea4Fvk5FQan81rkOwI/F8Ztxk");
+ a("IS7Xd2SN7H3/+Qnljgegc/CdeiPx31F5MkRYjy5blc7sfnt1griqEVtW+jFdnpym3sK0t/9nVFyxejkSvxutXBdZpgjtSugHKf");
+ a("wWCHklKwfvqKvNKkBxLk1aTL0jfkd38pv1aQz49MapwvsY/vegcf6yQf66RN9yXek86IapjOJfa5dL3DJSZ5iUlOgWRSo26YV/");
+ a("/2+5y/iKqj0/yko8W3iTq6x046SnXSjZF0L5bpXj9nAvRTvF8oH9LClJPKXfhi/jpRg/lrRR9Ph/Sxi56P5KibYfqYj46SdFSh");
+ a("o6n8UAMbV/St7aFnxrSSfIkSP6eltcgege8Im+cmpSxC28pp5RWR8+GsfU+NbfQ2WZJIpmgCkxmr+dl7hzL/r+PN2OpDM7LRpd");
+ a("dhCtkPCjmXUM7NrDJCX6hBJzGyso7rIyVdCCU9+Zp+0XU/YZnnuGIg6SlL2v8t+ZVfys8U5LMqmegXi5/3i5fd+3qiZCgzhmU2");
+ a("oE5jmQ1/6HuOvZCqd+nZAhfbN4t6V6sRn6dTPuSE6dyPfK85nIw/osiBNOIFYBFeADLzO+OM0AtAaXmCBH2oY2gw3WyhRSOME7");
+ a("ezlwtaRYL2R6pLHhd0G6phIJnQM+VfzG+WL6j227U7bP3FTWK/pWkY9bvGT86/Z1SsdTSesGZ5kBRhM7bY5GQlvN3VDfxd6def");
+ a("s/SMDeuTt4j/iC7pCqh94rlNfdJro9gnb+pHm/MV13/nm4Y5C7Pnt1mt1z+J6i3lFic5l6He16hP3H8M6hibZkd+Kj+b+2bx99");
+ a("VghpWUJuwWFrX8FFa+GZXnhZWfYA2OUt42vYnBNqGi5ExGCyWxffpitchF/oQKoby0lEeg38l818Qlg5NScH9ritIuaOmpR2Yx");
+ a("sc5e5mdbt1Jqk/Nu2PeGbUG+97+uxJmkGLribiTLHSB15NijIR3xYro33B/srOIo5d9Jf7AWZ7u4BrH52JotKRrGdjG/ZpvC1i");
+ a("XHk6QK1M8ZaalmpcJYxc2upplbEvtN4eHWim+VURWKraxlvkUPFI8oPTmujN479bXgAfZd/zfrbWX4L+dl/m+y4uB2ncXnLWbx");
+ a("DJ3uKNkjrmnIn5Gyo+8nQ9sHxhQlMjgL9U1Kivm7dmdurfq3RbiUul4bvjcKzitR19dY/J31ydV1GaizuJ/sTrPy++IN3J0sM/");
+ a("32ja/Hc4SatPgdZbVZQv52qbFOj78wnYLv79U2GMRv8oZi/ylh8fLv7m9DLhIB+PbSBl5KrQsX0TKgJV4yh7DmJYKhz95WZU5R");
+ a("Xfo6Iy3mwdaV0zymtULHxNBK48oPZ5W8rG7mD8hUxdb5UIMKvlF6knHuoz8NjI1f8fXQF9I/FFMDX9uapoGw0VoQQZIE/j/8kS");
+ a("D2pcOtNWkIA0DJxzHXRnAEXyYJHCEkb9EpaIK8QTif421kucB7cCG4PkSm51rL63MP42gazjEunuNSoO+Dhpf7yDFuHPKBWha/");
+ a("y+OtiyT74twhbr3AZL4f+qO9OnbNiLuS0fWVVuNLy6lxSyU1nlBFjdurUxzX50DcwOoPi7sQ17F2hcWXhsVNtVT5XGFxixKHfB");
+ a("Me94uNgezvBK30b4M4ZiVjhIQsorwQjh33HLl4ynPi5NVLVy4fvXb9RqLv5u1zd+7K95MesH5fBL38weBYCvlfDCaBP1+Q/fLs");
+ a("ysbqK5Ltaxdf+EOen61PJya4vidhAgplhIw/dX/WSL8Xkv2kvKVEyVKly5QtV75Cteo1ataqnZI0OC3VkkHSKUcMOyjNTKjUX7");
+ a("dvt4jzNerUN6K+YYM85uMdx8/5yPnqIPSw6fVcvVMVuHUa6TuQ3jCnc2Vbb4GDacCPAs/OGtRjvtm8ri74NWDyDjlmzXg0a/Yk");
+ a("8EdABNd+cDVYh1TslerGe6SnQ+rmDMmPjDw5N6E8uBnYtHej1dbKqdcMBi8LrF8xx/29xjtxbnAbsP2SeSsGLjj0MiMMfwvSJ4");
+ a("5/MO9evVsPe0OdumNgK1U9dCbxnGdirw+cN8B1jR9b0lpg4L6pGd5xPu9jpE5ogpJGQ3+IqC2kKFgQcqCRISUdXejws/tyfrr/");
+ a("TdZI1upGyTWHZqNuvtBLRxdU+lzj8CX2mJpnq4b4AG0Uu3Rzu7Zv4hjYDL4F9r6NYy7waMG+EuVXfF1uSkwfazh3H4U80HqMow");
+ a("PoAiaE8AZHL9AHDAClRI4mYC6gBWgF2oEOYLT3h6XveL4b6AUGgKb3qB9oB/YHxgHdQC8wFBzt1GdaQI2TIqrx8NDcXtsSzn3Z");
+ a("8MzPzjEX0Ap0AF3A7wWNvkgxbdGKRfq34vJxQDfQB5Ra43xAK7A7cAowHugB+oGGNhwLAG3A7sApwHigB+gHGtpytADtwP7AOK");
+ a("Ab6AUGgJnbcSwPdACnAOOBHqAfaGiP6wbagN2BU4DxQA8wAMzcAecFlhSfr0j/W8H1k+fLC4xDua0oPA/8OfhS8INazuPBveA7");
+ a("wG+CJ4AnxwPPA94U3AveHPwSeCtwH3hrcD94G/AAeFvw1+DtwQ0dOe8AbgLv+Im9u4xxIorCMDy4u0tgcAlSHIK7BtcQ3N2h+O");
+ a("DuVrxYcCjuUNyCuxd3ggYnwLlvA5xgP/jJTdiP59zpdK5Md7c0AcfH9bCN6+O0uAF24YY4N26CC+GmuBRuiSviVrg+no/b40XY");
+ a("wevwWLwee3HI0KwHjod9uDP24y74OO6KA7gbford2Kpn3B1Hxz2wjXtiF+6FC+HeuCL24fp4FW6Pb2AH38Rj8S3sxbexD9/Bfn");
+ a("wXH8f3cADfx0/xA2zVN64UhvHjI5HYTzh6GuYDx8AuHBMXwrFwfRwbt8dxsIPj4rE4Hvbi+NiHE+LjOBkO4FT4Kc6IrQbcHzg6");
+ a("boBt3BC7cCAT48PXcSlsl2e8yu1xMuzg5HisshenwD6cEvtxKnwcD8MBPBw/xSOw1dB4JI6OZ2Mbp6rA+HFGXAhnwRVxDlwT58");
+ a("T1cW7cHOfD7XF+7MZFsINL46F4Dx6L92MPPoC9uEEl5hM3xQdwf3weD8EBPBbfw4vxU7wVv8F7cPhGXA+Ojs9gGyerzHzjFLgQ");
+ a("blmN+cYr2zG/2Ifb41XYwavxWLwGe/Fa7MPrsB+vx8fxBhzAG/FTvAlbjY234Oh4K7bxNuzC23EhXLoD48f7JjN+nGEP48cZsY");
+ a("Mz4bE4C/bibNiHc2A/fr6P8eMXOIBfYauJ8WscHr/F0fF7HB9fPsR84ABOix9jFz5wlPnBnrPMD15ylfnBS3F7vAw7eDkei1dg");
+ a("L16JfdiH/XgVPo5X4wBeg5/iex+Zr6bG93F4rN8fSEu9FNmc/O73ob5/+Q4Hx+t+Hk87QNbMzPweDyl5kHohl6m7T5v6Ier+gh");
+ a("xP/UjwfNl5HaR+lLovBz8PnjH1Y9TfZDX18ydN/Tj1QDZTf8PxJ6lXLMbxp0z9FHV3Ec5/zNRPU2+fm+MZ11nqT/Pz/Zb6Oepp");
+ a("s3CfnzD18xaN4z2c/wLlRYUYL+e5SP18Aa6HebhE3ZWX52W8l6nHz0edcV1R9dzUr6q6m+e9puobmbeAqp+nfl3VPdRvUq9flP");
+ a("lnvLeohy/JeZif28HxluJ5Ge9d6mMLczz1e9QPlGZ+GNd96nYJzkP9AfWNZbhO6g+pLyrLPFB/RD13ca6f51VNv9tYyAph+fVd");
+ a("FFK93yd15adXt05zV88e04jjQ3xpIb+0UF+aFSLk93/CRIkSIVy0aJG+/gkbNWpEK4Q5LDTNihQr6s/e+PR0ZV7I8+QbMtjid2");
+ a("O/kDVJN+khN5LnyTdkfDePJ2uSbtJDbiTPk2+C9e6Sv2x2D173u5Nk3Qntw8t+ob+mytGdB0WR+cZ+lXvSrZHHN+9pnFZl1rc5");
+ a("ZWne4EUq1yTtGEleL3oZu1RWWfEhojw/XqQyZtJSkeV1qDePUxmzQnrpd/VhnqgH84z/slyfh/7mKlenuyTjC9/X+Dj1YDZyV5");
+ a("Trd9NfSOWElRPMz3V4kcqToRLI9VV0jG2VVedGlmX1Y0dll5YJpN/uZ/zUIcn4c+eZ1wP6a6q8MNuR9bX6Gx+gHswkVc1vfg79");
+ a("uVXODCyKLOuDN6rc/dC8g1xzAPtC5dxlO+X6N+KhKhc/SxRWxjeQcVEPZughD6Tfob+iysZh9oaT/Yc3qmz8IryMr/0g9o3KSD");
+ a("nfRJD1w4tUxt4SyoxvMOumMmW9PDK/B/BYlXtfXZP94xpibKlcXfKInN+Lm6vcMyVKGHn9GWp8nnowJ+aZEVHWn/76KlcP3GTW");
+ a("f5ixn3owq+aaIfPnpr+QyvKfroWR9ccbVbaN4JXrTzvCuBTZnPzbNvQPx3tH/eF8o9nXo0hyQOLWZv3pz63y6O4Ncv3n8SKVod");
+ a("3Xosr6jTEOr3L+oGwhZP5xfZWZlg6LaG5Qrot6MLO2eSL7uzn9uVW2iOZI/wHsUZmyYy05f6FxzI/KeRMWy/V7cHuVsc+3N+uL");
+ a("D6jMMO50BNn/441tlYsmJYgm9zceqrLghwzy+PgTjO9RD+aCzSNkfdz0l/qWnD+U7M8A9qks5h8YRcY/0Ti+ypeJysn8eXB7lS");
+ a("tiNJH78w0+oHJtnTNhZH0mGbtUTox+Web3OPaqzJEqpHx/yT2ZfaOyW+nX0u/BzVXuybhQ1jf8FK6LejCL3HfJ/Lanv5DKlL7j");
+ a("oeX6sFflnv6f5PEuj7Gl8tXh8+b+w81VZv3YXM7/Bh9X2fhMdpn/+lON06q8US2yjO889qhccWVkNFnfacybyqPNm5nfg7Bb5c");
+ a("sH5h+A7ensO+rBbHv6k6zfIvorqsw0arqsf6kZxgHqwUzSoqFc/z36HZWj4/WW668509hWOfrBLZmfjXioyg+pd8hypJ1l/JR6");
+ a("ME+drS/736G/psrSVT7J4wPYp/J1/IGhZH5nG0dXWTfrKfP9CbdXmfxNHRn/G3xc5cI0q8z6e1l3lVXfJTI//2CPyqwFQ8n9EX");
+ a("8O4/aSZMzYu+X63fSXUlnl9dqosj7Yp3LtkZ2RZH3msi4qzy0KLY8/gIeqHD0mt7l/5hm/oR7MXdU+yPp46W+uMnTaxtIff77x");
+ a("eerBTNC2nMyvQ38plX2LPpL9qZuf/l+1+mf5PZnj/tTiL/j9cSUqFrWzZcqaKatdO6sra9bMrjyZs2avYzdt19F2585ZL2d2O6");
+ a("Ndo0XbnNmt/+1ftDBk/OHsV9I9yqRDelhfL3mAPE6WYl0rkr7QIX/4PFAUnqei1cDqZDX68rW1ZVtVvnxtZ3W1mlgd6Y8ToUi7");
+ a("Bh0bF+neuUkISs4ts8ViiEwLW6Vd665Nvv5np4EfP2f4Rn3+yHNd+n/dbtP/h+bvxecTepus2Mek45iM7v192v1MWv1N+oaY9J");
+ a("PHyWALV7VCw5ZNGnU+wPiCzc9tsohxpe7pomX89qUof6Nlz9nb8nN8fM5zj3nyUvd/5u5KY5opwnDL54GIUm+84nrjgRZBKZ6F");
+ a("shUUZIWixCN2LatUy3btFuXTGBs1indj1KAxpj+MIWpijZr4wx/9oQne9YrXD+sV8cYzeNYp+wxtt9t30SiubjI8zPHu7PPOO7");
+ a("Oz7850P6D1MFVHT8smucycC/N+Wk8u5AvAv6qnHUKDalJJXCBHlElDY/Dj/YzrAEpALvskeL+F6/dwvSB9jZ8p3hOaiurC+VFV");
+ a("TmwWpmRdUOOCnkxE1QuFSFxlJqlH46qgz2haPJFkSdNaNKZMClEV7+kuHFWQKCSnFEHWtFg0IidLQpdFk1OCLMyo0STLk5NMSE");
+ a("/KsZhuJEbikwpqmpZV+UIlwQqsnkRLxC9MyNPCjK7oQiQmMzzChWP70Rk1GZ1WBCWRYGOoa0uBnfgA5gcT2N8S715dVxKr9V8g");
+ a("ly4Vcg1Cm2GHhwuxqKoILp5+iHHqi5WEqsQ6j+LpY0oyNJVQ5Ml+RY8kolrpjKvltzMeW8RS9QzdW6BrY6mWhs7tbhybYhpjje");
+ a("lKVfrQ55C/05Ys65iurZCcgvletYD8Hbfui8djiqy6q72Ai8jfpqlX1aNjq/pbbWekt1h2NIwxm/WkMl09TmzfODiuXqzGL1N5");
+ a("Mbe5a67JbWKjnxdyLbWGyk2rDUWqauT9zf8oQ9SS/bLBdcblRlHhwd+LbSzEWEixcAcLCyw8hSAgFFjoeogh4v3s/y9YaH749+");
+ a("KvDH99kAXEWxkm2Q9ESM/9XpxnyMO1z7JvNzxnpDc/awT2fzlA5hyW3sXCwyy8zsJTiwa2sbyP2P9cW5nDN7meeMzgwePPPG7E");
+ a("m19hcix8z0Lo1d+LGgtPsTD3Wjm4XmdcWOh6wwj+11lA/C0ml2FhrzdYQD7PK7xm5K+uoy2yOhDy7qKBDWw83KIcft2yWGxsLB");
+ a("af3sUI6R2KxZu3Kf1vlE97isV7W0oBZRBWtioWzeNsqh3z1SV6nJ3dZ5Mj7kfZs6qvs1lkfUeRp3k/nvjE+n7iAz/PpzTPrEN5");
+ a("bicGA4xnUgFR/xLNc8WG55JDeW4rBkc0RQVLZpef0jwLn9E8BcGxPNldLbHG0/OZNc9lpC9+TvOccCjPJnGU3XxBkx0rNjyzX9");
+ a("A85xzKc1vxzESU9052FD6nec5/SfPMOZTn9mIgJuv6afFkMD6jTroW0V717iupr2ieKw7l2czstsyyNMeheU59TfP07utMnk3i");
+ a("UFRPlvvn/Fc0T2mZ5hl2KE+PaMyxq9my+r6m+fq/ofnOO5Rvixhgj3NxVVENutoyfy4/5pjOwDHezkB7Z5D96QoEjm73HcX+6w");
+ a("34vN09wZ7uHvHoK10T39B6mfiW1kveoXrZRhw5X1cS7IEY95NvrP003P+Q+Y7m6drPGTzzwLTbvYqF31G+aKAfKAD5eTNFIMrn");
+ a("gB6X28AGnG+T2+QHMubdGuygDelvmfX3vc246DD95a4xeAqQMyM/tgqtzt9c2e/A3w3+vxv8F8A79wPNfwH8wzZ6kO50byj/5b");
+ a("vQ3vOIo/783bCLe4AoV7jPbB+leZ+SyEIPc0ifLVbrJ/+jzfx9f7wvsNFP+M2N0Y/rXaMe6W3YyTsG5lB/geM7Zn2szg8TedhD");
+ a("GOkZ6GPuN8wLV2zGVehDAvJj0SQnxa314dXdlvz9mvsv6SM1AfuIgu/FBnrPhh4uqj5vDvE8T0d5gcsB18ojLsXqXPc08oE8PY");
+ a("y4XzWdD/w1pKeBwiXABK4DmEJ5fjSF1u6rq3H/b6gfGAZqwAaTX3cB7TRRx6/btsMmy3ITSOdH4Ufab77yk8087YD1jbv+VvcG");
+ a("v18ISqU5WhuuX+B8zfx+pvml6/Br/aVaTth7Y/jx8vk9YU8C6gXyY8tQiT2r/zfkAzPAGk7gw+0gZZqvNkJPfsRzJj0Kv9o8h6");
+ a("7TTqT9NtZOtg0Zbn1DW6y+X+j+4P3NZh6/vzXPCZNcdmJjeGJcLc/TEOfjahpY1oekJHSmDAxMWdhLDpivYz9+8PPUsR8f7MOH");
+ a("+KLpfpX/ndar/0CsFzDZUcEkl9vp39Vrbmfod0f0tx0MzALzQC7H/hrn2wm4K3AXA6Vdze0TiMdiSoS/f+JHGnqUEM+a9Cu46f");
+ a("7nOQjrFaFnfnjdpvgRf69+80e7Sf26DoYeEQ93Vdtt4aDqebanrTruRVwDeg+1vv9n25EOfkIP6j0S8xJgoQPXdZSB/k6UAxba");
+ a("ref96W7w9OH6cX7pWJznOMgdXy1fQDx7AniciHo4+nF9fTh/AOfrhxwwHYT+BtzV43rI8Gfo5vfe6FdpxDXuL4c9ZDfR9uQ/yD");
+ a("o/Z5Y73aH2dBrygRowBeT2lEXcO4J8ILenvAS7CuF8p/81e1qGnHcU6UBuT/lx2p68Z7j/UXuSBpE/DHlgZgjnAWZCON+ZiJ9h");
+ a("Ht/K/rUqe4Ldebh98uc/7lfZkrbH2YOc5R9Yr39F2wL6BnqBEtDjAm5p7V/ZLjQgq5MxxfCysPrR/8zzGw/0N7AVracV6DFrp8");
+ a("9G9/9Kj9syP01Zi0x/0Jf5uYLbY3prWj/eg51pjxrajesxzOKUvy+FfLO/z7WNtR53CgVm9GR8eliZjic2l/UZht2Z/X8L0ONS");
+ a("I60vbZ361JrcjtSna1t3lT79LE7pM72NuZ9XazQLvXmRnzfp09tE62thnfqUWpypz79qny3M36jHZxIR3te32UT69Qvb0noqOK");
+ a("yfr5X/jyM/dgn1nq8nE3IkaSw6M7zF7D7WZD2erKC95rej20VoW1+75a/bWL9P6nrct4AZYIGn34Dx43b0F8RzwAJQuBF2D/QD");
+ a("PTchDgwDU8AcMH0z5G9BOWAB6L3VwCwwfZv5PtC3usa0utXY0Uz3t4EWG/99m7P625+3b2f103r9zHgLwfwF21n3szDaacVjs1");
+ a("9xne1VeHZj+pn0HOwcqAEzzyMdWADy8y+/jn71Buz8BfRHYBqY5+kvQh6YBeZfQvmXEX8V/TGPcsDwKwYuA6VXqf6F1mLHFNrl");
+ a("/cWvTnJ9dMApTz28j/vkyZ5HW3fYhPf6nUFRDPjEjnaxi62y7+o9qqu9L9AbaO8Ieju6uo/p6uzp67jS5d3B9Dxm9pPuaONvOs");
+ a("RZ/bR8/x+Kqhcrq/7gwaQyHd6BHo+EnWgeAw7jae7XO1bwPSOqR5NY0TLA2o/yg7fuTPNKrZO359yN6dfhc8zPc+ANP4N/J+v5");
+ a("sp/b8S40n9ZD4T8t8XZAO/Nj59C4mlD00m6iyVHlAiWhqBGlxBPtZ/bHt4Lnsg3fiUOdZdf82D00FI/IsXF11Ewa87pdrJ/beT");
+ a("sv7Urzml8n74K8Ye+xMN6XKQ+W9tWAceuu1uO0D/Ze2I3m89Z6+V7g/lfGrx1CfTPRWM3w5WrczZr3CtLfaqV5eQ5zFu/UhdXj");
+ a("V2sIrb1m35w+L2CyczP/3Wl+C+AvldAB/F1KNf/dGP/puAX93en71uIeNJ+lw5w5rjWHBtVo0vDlltp4xYZndk+ah3C4M3luF5");
+ a("LiesXSmMJaexl/izg2obw4EixBTf5WSB3bPH1+PEbkY8ecOX9r5Jc2tbGtiDX5WyI/GIvLSYv6m5B/ZnRSQR2W18m5HwE86Iq+");
+ a("QHdn9zFib3tHT09pXe1Rve2+Y3xd7cEun/fooPeYno5A75U152ng+mui62HZZP52wHr6wNvCuu1xWjRWbkyL5wyz3BYoN6RckH");
+ a("QR7RyKayWo2w4jZ54mjjKsp5f2E12kfFCO6QrDetcXSswo1PWplbyJ85w2E4tR+j/PTn58aIjk0Ts0JlI8RsdFisdpg0O0ni9T");
+ a("lQTR345AgZaqDXV8N91cjPfmrVe3fyi6eV9gS/UGNb49bWGfOoJZLle54avtU0IK4yWXq9xA5fnMVk4QIFexIWkFYpJQKzbBy1");
+ a("du7Cl8Xl8AxxyXM22UWfyCFs1xuaqNJ9kv7fS/wuUqNnLMf1VfyrsvytdsiEh9TdUV5nK1GwvIS5zncuWF93PfEBJ5Xr5mgfnH");
+ a("DZYq2A/lsSA7+x1d3MvL8wXK1AeGVh1h2JDd6K72V/LzmBc6TyDDVPECL4+FwOuu12+a15vPk/+BrFfYH+VNC1fXU7VQkS7x81");
+ a("QuNPP9SinbaH+L+vna1UXkNayJNdTU7a072fFtcZo8reRQvg2pHN01vLybQvKFrjy/nvJCU5JD+ACUNxZmNv5swzjNy1cuUJR+");
+ a("sdVTjsvVLhSzbyhvOXnF6jxYZAaFW9bP1+lt3zKIqULvpKwx+wrjmt1dR96rfzGa3+G+B1zCIydc/U75FA3sbjIL+ZbywiTi4h");
+ a("tYyELChzROZqCq5JM1513+nSLjOQjlKxek+N2o6qD6/Llc9cILvuyibb86krNczrTQYF3t5iknZ63OwxcrLNS/7hUuZ/WCPrwV");
+ a("ffVYzwDelZL8NfTUwXUkNS5X++KVlFzgctYvANnrP7qnFLi85YuoZjxctdWfB7RB3vrFCHstQtcf5vJWjnrupJ+vX38GWc1rnX");
+ a("Yrk/27M8Y/4Mvrq3Vwk1fqOQRyFo5i+IgtRQe4XKWjFU5WavxKcTlrxyU9FtSM+jzeVh4HyPNzr6j/EAvFw88L+fqORu5ilA61");
+ a("OMkEl7dy2MFZR1TvmufytY4v7vKatZJ+i8vVdxzBY9R4mOV4iNSWeo6XPztW4ZBsz7s7dVmuBS5f5SCBd4QwtCUuV+1wKOxBCp");
+ a("b9JtknjQIHFNnvx7DwOgsHsPtXkoXXWTjAzf5n4WkWDmgoFq9l4SMW+jcVi/ezsMUWxWKMhXr+G63d5j13DENUCR21L3Y2omjl");
+ a("SUeG64u3t3n/7xH09adjzvBT1fIUZ9lIrcoxPK+1W/OcAj//kTbt5Fieg3hAw/36CGueEvi1eWkeyw7l2ST2Ry/t23yWkojjex");
+ a("Q0T08HzaNt2pk8txVHZfVCZa1F/V6a54oNz7BDeTaX7HaEeQkuiMUvw3c1qP5ZOIrmMe9Qnk3isJycKndQz1HWPJeRvthJ88g7");
+ a("luegeqkci06OaPhuC80z20XzaFSdyXNbsTQEsbGIvTfAd2hInvNH0zz8DuW5jcg7J/9uD80zdQzNQ3MozyZxXJ2sIJo92vRe1v");
+ a("z7P900jwWH8tyW9c+RmfJMYf4Ymqfko3kU/irPsxv+4d//GVBkzXBxVP3+T7fN/K+H5tMad2a77rg2z62e2Gs+6/adQrr3WJrP");
+ a("RNyZ7dvC7zNSPKoy4uEemmfrcTSPtEN5Noust45cYBgyiw+w9qJ+p8l1PM1j0aH228zbMyDrSXz/jBqXlmx4ujRn8txOPENORG");
+ a("U8q+G7asR4lD+B5uFzKE+P2BuJKLp+RjQekyvfbZxgzXcJ6bkTaT6aQ/luI/bN6GhTfDeQbNeFk2geGYfybBKlBJv0xthiG3y/");
+ a("kOaZ9tusW3Qoz+3Z63I5cvHa5Dd3Es1ztpfm4bnEmTy3EQNxNZmIxwL8O5X0/SXcR/PwO5TndiWerDH5uJvupXkOBGgesw7lub");
+ a("2I11wgOttH8/T20zyyDuXpEdc+GBCs/F5AOEDzFUSaz5JD+TaLxovHwJQSuRjft6V4NgZpHkLCqTyNZRT8VuoTaZ7LNjwnHMqz");
+ a("URyLXnj6TDSJuBCkeb51Ms1jzqE8ty/5dy9gk3qMR40n0/P63ADNI+dQno3iyFiln2H5ZLo9FwZpHssO5bmjOCZfoETkmMnP8N");
+ a("YAzXf+FJqPV3cmX494WtwYkcaMb+mUv0tN8p07leYz5VC+OzO+5bXw4IzvalN8Z4ds/KEO5bsD49u/WR2Knq+DLP9eOL1vdnGY");
+ a("5jOQdAZfen/7+lE6toHM58c2IVGNxCfX9lHMD1mP929Bf20jNvNsh+kxdzx+z/cEA70nGpgDugLAfgO1kwzMcOwzMIX8NDADdP");
+ a("kNzAMzvQ3m34/pC4yVdVwYttavD3qdk2zm9/8z/WpBxIFZHu9HXLTT73go2F3Wr3/EWr/z0OvS6TbPE/8z/aZOhh6BOWCex4Pr");
+ a("0K+vrN+MZD3O8vHBN0brT5hxln6FAegVqAHTwNQpyD/VwALSPYNIR34Y+RowzeODpvlJaNz4JN+aSnGMWutVgj7TIZvnJofqtc");
+ a("D1wPU8BL0OGyidBn0hPQcUhq316hmx1uvubLnvhaI6GZVVSwVPQI+jN3uuuG3vd4fufe/MwiW7n3DSkyH++xzdfR1eX+Doo9o7");
+ a("+n1Btj+wv6+9J9AfbD+6W/R2d3T0dPZ3Bq905VF+ib9fRDsJH+K7kOM2613qtJPvjOr0vNSwId/DzEGf/DggNDwTS0ZX92DNRm");
+ a("IzevRSZXXx9NhmNTKViKvRy5VE6bpm0X7AMFADpoBpYAbI61rk9gzeBaSvmO18nJ7H+s+0Gc8d0i9qnrNDw6PimeVnMg16qLd/");
+ a("8QAXvc9y8sjpIzdb5Ht4/uR+wn7T7GCwmR1Irruvs3eYzpeG6euZmjpWVS3yGyvzj9V1ROvumzxFVsn8oHI+mT8sJ8j8Xi1hI7");
+ a("+Zvr4/aDuXXadhIAx3AQuWvAEbJFgYOU6cy5LboiAuUkEsK8dxG9M2qZyECh4ekcSTuplSV0LCm9Hn+W3PeOI0PTo5p6vu+Pf+");
+ a("9but179SR6//k2y9/o/1D6//jZI330uG/e+E+XldR7f/ZhR4rk+ogyxv+KEOev8PdXjg6qD8/v3PW++zQx26pr32P3J1aNUhV8");
+ a("bzHjfUo7YqtF+uHvNpsM7VZdL5r48719+H2u//0imv/5sq/OPLzn8+jfbHL1r/3xnoqsKWHvun/MCP6+Hya6wA1dXlV40KTz0g");
+ a("TwOym/FCvqBC87h8OwMK3/X6Qm62C+/nwbzp/EDDZLTRYJevPnBKFwvRHGqS0HTSvfm0Igmjgy4BfZLw0aacgmXj+JT3/fKY8n");
+ a("gB/VZPacphPquLYVwc2PnTmNn+EPwRWDtfPM0XZ7Y/6cefdFXUp4akSdR7R10flmtNqTft+rtugLc5CwPm/LtmLdc8pgEJsrSP");
+ a("M9dbDvsSUBaPcQc0SkBuOYjoRR4DB4gZ4hBxhObjiGPECRqfIs4m7toNCcbRwPahdrPZqJGn/QoYp4gDxAxxiDhCzBHHiBPEYw");
+ a("7v6lLkw3lcvh/jOwipq7ZuyunnQqTvId/FUVSqURPLUg/YGlFMic70u9ooUTkWRuRaOi5VbtTJ8dYotbsYL38avd9ridZr9OH4");
+ a("1/VMfRCVFtXE3c4IPXQAt6XQl3qp5uO1VHtRFVpO+s7sdFM6valF209n6xuyyb56u7iK57WNdf3642pkiJ3IqrF8ZJTSYNKvQU");
+ a("/etqq61CvLoA9BP3GEmJ95+ZLP4tGCk60y/Qad/WR1UsWYH/DH2pzUdkiwa4hopNaL2fwsDhBn7nywJASbgE2tTSlYex9hKbc2");
+ a("o2CtPmIUrL3vRCy6jP/tq9dvlq/J+/GSGn75sipUMehtVaHtap0SY+9PSWAtrJ9Ruy6lmZv57dfX5N3nKZ8shCM78flAy2NAGQ");
+ a("eY/H1Xcrlu5/y6qUma8owEiBniEHGEmCOOESeIU8QZjociDhCHiCPEHHE81acz9VFc5Z8SPTGjjJHv9uTKZrn6NHT0m4/8c96Z");
+ a("837znm26jl19spDOrneVy0K7W5aoiq6RohKFmPQhWA42ATvMqTrZh2KtrEZrQ4FW/iLbnLjPsG0epBQigPM2HB9SqDnniFuBGP");
+ a("lFM+fazHmHxh8Qb7s5H4X7fErApp7nFAn2ln9zx/9kcd1+w+MdNO/4p2Af0qHd1lGwD0Dmjcfjf3bH//yOn8z/18NV/v/re/vj");
+ a("8/cOUexruXtSqFbJVhU31vvDyPkzpw0DUJzL0GZISzL0jrsOVZdeh15CL+2VS/8BDSRN27tcQ5qMuKAUl8T22SYHW8aMGTNmZG");
+ a("RkZGTsyMjIyEcoJnpYkm0JT5H1fpJO5ECW39NzfP9Z9fn2EAleMdM6+U3PbJeSIv1jWvOKBP6A3S0anlkrXVLLPzFMv2y75Gxu");
+ a("DyKmRZbZitqc9+TONPH9PAvHGTQUN8zgfuJ87RC23i5YpGU1DKse4BT7NsSu1VquO7tl+CRYk68wYKMUSuZGINbOU2J6xLJ9Yp");
+ a("+RWpCAJgvhZlD/QuagN8jcbn0PBVL1c8jFVn2r04nWr6F+dpH6K4K9oJVGQ/mctmNZyv6wm9OkrkXPtxfr5j3q75pes+xSeuQY");
+ a("NVpqF+59Q+nKD9vyG8EZMQXXNTpVGIqUxy2k8n/Z+QyPKyeUNhc4FtIP1XjqivGP0pWy7V4Y/hH1ff44lDbEfAiHP2dI6mBdKm");
+ a("dQ1hyZgHJWKucwDjbQvFS+Y+U+K2NHFeWcOP4Bu/1EGDhA/L161PGOffPcS/WaTP+gUuz41ENrV0y5gYYFKpUaMy6NoPqSp+PI");
+ a("9ZnzSDuIuuPsAKHjKvRhcByRcZxfJehvoA8D2Ihe9+P0A+i5IDMyzJMYANcUHB8Mzme1IPLNaSFo+/K1DqyC44KryKz2FeO8Bc");
+ a("cFQZEBHV4kc//A8cHK8bYWXLUYFwYVh28UVB56LvDXe6sfnwOOD9AhPHedPCFdcJFA2tU7FTwGFxPscnL6zyFjMz4pKLVux8Kn");
+ a("4ITg0f6OAkJ+ChwX5Mm+103QEJwYjMl80IEO46JBk4+q2cmBCwMbiGo0nBjAgZ4LPow+6ef/DpwUJBh8VrMjcKExv5tXIMgVpE");
+ a("WD+01BM395cJJhvF1Ug21wEQN29YuK7IETjMyHu7qPeQJOMAbnSjqOuIxbGG1JWcWcQi8ZVlf31D1dg1sYQKdKYgB9jJFytJ9M");
+ a("4pqCjxgTh19VdNZjXKzBr3+g67kBPmqY635TwF1wkjEsUCnP6/bkdcZ64KRhK8XoiiHjR/q5/a74nd+HXjRUwU7l+AkT0QYnGo");
+ a("VgE+omcT2By4GD/WWcxE3ARY0eP1VDJS3GJRsZYGE4bMU0cAp+uRf4x8zlG51qyaeQll5UO7/U/3kTxq2llluRk0vosZBekfVj");
+ a("Xn94qX5PXtc8X7c09a6m/j9zV87rRAyEEYIOEOK+ZQFB3AIEEqLilpC4xCGgoDBZByw23ijeBUJFzdFT8l+oaBAlJT+BkhKPPZ");
+ a("MlXnvechQI3ntJ1t/32eNrdux1yiXuv08e59frTkMC/jrLf5rjB/0TafwKwmMC7jqbvxPH/0v95XN91j7Av9R13v54mYkj9Ypn");
+ a("rZrfCK5k+8fZGfWPVzSusuknmD633nnrztULN67fvnM7k8/dFEcyQ2XraopBipF7tXtgd/tQxAiOPj6axm+nflSXw8rY2h61Eq");
+ a("kc1CNZ3AVpQMJp6sdGSDGwoq7836NJ3KauXsAqmNu76TeQDhQrKlKKf0uX31skKkwHt4906AS8oFVUynpBPZ6Uakyfd/F7ErpE");
+ a("BSSmnjMk9U9RPK+ZlHooayWMHKsz4pyY0/hPipAvWYJnMhPqhXZa/exQEDXw5OwwWDjfXpSOvjWCLJ2HLeY8Kd1tjK5lzv8/SO");
+ a("uqZakey1Jc16Ww/gBU35bxUGjhOafNEA9a7FUPajypZ4FLB/apJ/ujfMDU/M/y8dyTJfEP5/tPxLNw3yZscAd9PibTagI3B8oe");
+ a("FTdLJa0SjfupnyhKbkVjdA1h2VnVeICPTkpTiKmCNqVLldDdlcj3dGoqZMU8dHGbEedbJ4VAjajwjPJO+q0ZnZoQcJHJ310jH5");
+ a("UKxpqhPyVfjLR7C+pnxMAijtcbBaQfeNSLjN6Ojp4zvInV0vaI9QCJatnx5wrEEEZyqKLx54l8psCgV65cdF0zmc9YTxOVqbQu");
+ a("LKC6uI2Iw6BC29Yh1tqvXDpA9Vg+Vtn5CUoThcajkS1t/01ZPcTw5aGOMhMTF2Vj23vMT0gA5sc50nG/G+W7JuGY9Q1WzzNl8w");
+ a("nn3DrDNc5o+wfFAVE1fmniEcxt9mivdg9jumfAKTeZz0O0Py7wj32YSjx/Au1evZhIA3c49LGlU7p7tcsAChifBW4e97f8wiX1");
+ a("egML/7DP9dUjw84Xgbj1tHDothcUnH02dHUAAxC2n92k9qitFzlSmXLG+FcRP6RuGxjTP+kQ8chl4vsX6bTeUpbf+Xe3lXq66B");
+ a("upLv/OLr91OAdbRMW4vdT+XFF92LF1QFQh3FtbTR3SOyjL+vkhAQEArKUUTqTHw2qeDSz4b7S/QIG9HArP6d7Clj6aVmOnhUMm");
+ a("zv1oKra8sa6psPPw8yn4NaBbVxnV/nrg1WT1ti70axsW88jKVr/MrT9vyek5CoSx88dd89TlzMxH5zORH8+UqwlQQvL5i3WEm0");
+ a("CUGGTrbdeSekCQ6h+kN6+kVhOdNdJO6R5I6LZUxIREwJPJ/7rFcdN7tILpXxu7uh6DkFy/oPvMxoKnZ/wI0JhoDGD2PUR+JlAY");
+ a("pYpfxgS2fkgfy1dXra2hGR3l/f9Wd+hZPEldEQXXn0kX+nBXM2UvRhdI4lb8/RM+9/N5Ofvczo/XSzwn+PY/fW7nEs64eErlfi");
+ a("zH337/Gf/9dcz+9gc3r1y/fKNz/dhifVtVi1vn7om5Dx8mhCs4vLSfpw8r+Xi2b3z2+xuMG0eGAjtFXyp1Zza5YkbVYn2vXn3n");
+ a("UpjGz5VaWqJd23cPwX3k2bhugcfvESGS95AGbUWvKTcfKB8Ob5oxzNKq8BRqycx8BWy0UPKN8rO5w7eYqf3v2kz514smOoYffc");
+ a("F+9d3/ZZ4zeHDbx/nwbdqPIv9fm0K9SPj/zLxkZ9aPB8H99wQ45DJ+DOkN5UQOdT0LkuBHq0IVR5m4YKRHBCjJzNO0WCrGqn5S");
+ a("4f4vxg9tdSQiUSNKv5r4/WK2KJTRqkjnI+b1CATkntcj3mftcYy8/xPzt0D+vvGathY8Jjl93PhwpDZ4s44OzZJ6hBwHJpLLlG");
+ a("tgXaXbw6LURglX+7lybezqwPI11gZjN1rkxn2Ev2E3QiKQj8Odb2xwS4T774ouS4g5F6KQtRShClj/ptV91Ni2UNl2hpsLjlwQ");
+ a("T3Tdi3cYEEPiTa8HwOY8cRm/PLMXb+EQIwBw7aqNMy70POHAE1kPn/Tof5QUjZOpb9h4ZKG6H82EW9iscvW9PsH/7NEMIGz7u+");
+ a("UdJWlrocBLHPlIXS9+l74aQWqWnzYL/bKldPCi1zioEDkHsvt6L0OgpV1ZUUXvfgFFcMAlcGtincz9/qYcfyb96pgXgp6MPTu8");
+ a("mfSbU7w+3qbNT8auWCeOGIhenYQ2Shc3SCmSbeiiNChFRBGhcJf0m9072AK82Bzo/p5n+xmL9XmYCgF+M7bXM/M8M3s37x/qeC");
+ a("nJB4yoOl429SDSAiLc40R9RDfsouQbgGJ9Rvu8mVgoQNGeznH3uIGFT4OxbJlS+nNQzowQnk/JXy8SCPX4Wv5u6H0jfp8u9olR");
+ a("jFyoioL6fYOgKGIl99lTb7pSh2mq4yD1ENPcN8of3YREv5+3w7QD4VDYI+VHYOO5L86XSW3xjbqucL4E3OeFHj6NvBBnmHBRnA");
+ a("PqiwKa/oV6svXr94mA1n2bdYpQaiEAP/NXn6v4NWEFpcozwqz6mAqbLZAl36iPj9RrZ9FvUF9Ss3WVIvX6KAD/UukjuZDsR9YH");
+ a("AQWm1vfm+j4K+uxcj//B8ak1cJEm7cxVLq2GZM21Cxkx+FvzEEbTuF2n8+uQHFGU3pj/ZeZVBzj/aQBP/++w9K12ZuMr3KFMsb");
+ a("KPen7AAuap5Pj8fpfv/2f93+CN1B6WkdjNI8h7qKw2J9jP+HV2E+7hGdkJ/qfMj/ebp6SV0OZ5W1/8+vP3YmNAmsDRQol8i40Y");
+ a("oUqOC0UfkPf8vFnBz6fmXMjPX5I5+dBjoNhvG5FDaOtliJT88PqASHpr4siv5svl2vy0Y7zBfT95d+oV67Feqn+dHKsPquIhmJ");
+ a("DdcbzA8xb+kMxDcd/JQ2V7f2k2h39nKwechMbPzhkpnov4EomJT0uuI1byXUAS0ubtsem9bIsirvqAyIBmvqe8zgZK5dlBzSuh");
+ a("ji9kkHzPec+/TkA9cod0+xMRzf358Mo/U7DqXCZvS0DzHGysDW7oUNpAfCN/X8m3NgADjjCxv4WJ3qv93bfNdMuaikHp+6w7G1");
+ a("eK+w7LSA6FfuBb6/p03N72+d0dPf8oEInvnN8xJAddPjmpcFqY/ulWKjvh+uiipP3/Rx7Qh9wt06SGKB3/ABGIYKZYhfxcrS/V");
+ a("XfD2KruUxpVeX0LI/LHoiz2Gz7RdS6vTQBT+JjYmk8ZHfWHEggUfwW5qra9CQa8PFBUl6koUxW50JdqVuBMEQVDci+JO3Ii/QP");
+ a("D+ANGiuHPRjTsXBcGNfqYTJ53EIQouDie5mXO+b85rQi7cu220iU5Gl9m6fH9NvVT/XkdcctVGxv7K62RofM6pkLdfy4bq//rp");
+ a("7+IrP1Bbfu9y8sDZo1TYpNbtV3oTpYMd6GInetiF3diDvdiHA1jAQRzCYRwBbN/dzybnzh47cQYAqvz9nusK96HSwhVwF6ilA9");
+ a("kVpxuNpWgMKT0X8oY4/fkbkPl4uQ5Yx8F8aV1u/bIalvVqhbX3uO4NpUPJMKKaQI3661TZrxKnf2tvCbwF55K4DoilDpZ2RSe1");
+ a("e5bZa5vsvqCFgOgAma/0OlyKsOu9dV8vueRcFx3tW9n4NfjJ7Fl6/Wh2rX1UwK27qItDmFma9wpjVQnGoIHBdCUGkxUYjJdjsL");
+ a("gMg2GIwaiOQS9AKLZCnFY4DnVrOVoTidbYR2vRQ4t5ao1ctBh/+Yr82g20p8vQnoRoj+toLwZoDyXaIx/tnkd/62f++g30pyH6");
+ a("kzr64wD9RYn+0Ed/5KHfY7zExtm6tBYc1oJIcz3DD4lfJ35AfEl8cqFv+Y7PzfVxA/G0jngSIB5LxIs+4qGHeLQUcc8lzhriqB");
+ a("wluRw5Dn5FXtWYjruZO50jXY9RgIg4EXEi4kTEka/ma/MBO/EjZRNFrPSxMql/lZ9z+JmvlH9A/pL8ffL3yJ/cRy7518h/Vco/");
+ a("7zs6Adw6BTw9nuPUDNGkfZP2Tdo3ad+kvXw0zwv09YXy8pSxt8BFsEB2+XrqKq5mfadYklg+sTxiEa/npljzPVvs7x1ngeeUz2");
+ a("eKfWPloPJi2pj3s77YrPtig4cNQ0pac9vTWBo4OobW2pvfx53zgLwAdKgtcaw08zoXgSuUrxeKMcns0/0nOg4asxrG+0tA6zLw");
+ a("kLp63A2c/LXiodfqninnrJ/b8TWO9Xq5h+UL+Y76+174cRV4fI29cNXYT1LGS/XxKqOPK8R+003WPOXzDc2xMN/X+ljLOl3LXl");
+ a("qrfIishxJe5+Nsn3lqZhSx8v5scy6ind7DTM7dBu5SXlD0Ws3fjFXm38xTee7KZ+R8jNSaG8aa1RKrRQz9U7OGjZxa54fGrMxb");
+ a("LoHkvMnHohjT8pjZtcXmf2jzXSuZr+FP94GvlKeU/83FPIuVtubRzE3pvEqMeWa8E9jvy2fvn3r0j+8TQQ2B2AJaG/Vt1FLel+");
+ a("I+hyWdVEfhkt/nWr5fjz0BvlPwVOe2eJ4W9b/mquzd2l7/lnOmYK96v6u63JJzM2f2s8V+npm2dl92v4Yu5W7NTzFm5Tn7yap5");
+ a("hv4UhXH8eey9R4SQn+y9905GRNmrv1227E1WZEYoI1FSyi6RTVmFvEIo8YJIVrwQn64r7nPPPa5x69tzzv0959xznvOsc84vCx");
+ a("rqxr/an0uf/w91ydtTDnl9/jDR9qZR9+Z18Vj4r5T4Gck1gOy8JHISnAF/kyNOvixyCNQDafgLXxHpCW5fTjtuzz42dVxKv+7h");
+ a("/mtK2viT94ZITXD7eooYFuT8+cj58+Iba8X2T8/pZ8JNXCP0R1uvr8/6Za5ZJufZG895DHX6NrN//+38V98T2Qt6A0+/zn2StS");
+ a("efDfr2uDZ/Pnhf5MsDkRFQu++y9UTbzqHB+lh9CKnb7xfNI0WJoeG7WI6H/UXkB0SeiRQDVYBLf517lGkm1mQZf21knobHt2+K");
+ a("6Frh3FJYj0usrz4/dGfrL7LNJnl0y/e5LI3k0iZPrmXy5JB3k+H15gT/Lb5YP/jzfZDTVEMvTPlv4lbgI3NK0dCmvp+HcQZGPG");
+ a("hNPGhNPGhNPGhNPGgdnF81iH83sIXc2AJ2wF6yTHgWmeocBGp98/HsKlfBCJDGl9o5ROLM0aieT+W3s+Ap+DGGgO/td75s4Riy");
+ a("cqlsya3yBj6lPpD6VeovgTeXQf+S5OGai/uc1PiaJoWlCevRhPVowno0YT2asB5NgvWoF/PfdQuo1C2kcj6/OmVwhN9KFVZpCV");
+ a("znJDFfuykqm4mcWpcsSv+0F56y1CtQf0Ld5zt+niORX6APldCHSsF+vE5sDlOKqeQuTg2auO6hb0SHYvHgE20LllDZA/Wdr1uf");
+ a("nbOkykCwgbY/+F39v4DnPdgArB/wr/OflxPPtDYZnUqRE6Y5y9heTuU1KF7erGeQN+Qhb8gd5g3ud2lz98g7M5+ksc2ppPIc5K");
+ a("/sX58V/L4bVAT+/NXK3dqD9VVRWyifwU+Bw1W+fzkf5WngNnXTV+q8YVxVlQugIvgxxsidRTiO8DdzPpuPPB774hu/2pg9nz1c");
+ a("TeVLdZV2UBNnnDmFK2a65GN9xeNaKutrqyyGCs8j6Dbqe6BuuafX0891VLLqqqwEzvzJjtHa/tHoWPfUUzlVX6UeVHi2Qi9S7w");
+ a("21srY+0q7h2AYq1RuyhtDYOtn44Gifl/ub8mAEffhi5U54ejVmHaFWz515q/f+Ktr3qiYqBZoyB2iatT4H74JmjAUqPCegK6iP");
+ a("gP72/Ay+bM3RC6hz3MH5L2e/jLUk7WM5A20LtlCZAk3bZhb8r0A98CdrM6WlymdQBHj0LrW952+tsgacb2V1xb3m1dqotAC3ae");
+ a("PjOwDPRdAbJOov1NrBprYqg9rRC1R4hkEXUK8IdbW3uVOR9uROHYiNtBGeXNR3UT/cLp0ele6osgocpo3wFKS8Edzu4J/vO3jy");
+ a("dkKHoD6+2fBsAhWBkcsf2UezzipFuzAu+knT3vrgB7Qt2RV7gf7OPubAtx+0A+Ede0jt+YTfZ/vvI/znaUm5RuJdQthX+rzG87");
+ a("2kcWeKSIb74QwyzyDzDDLPIPMMMs+Ea/ZH/Vt9iOQ33WJ56qn+KkMG4HegYdu/yJk8Z0uRceSiTc5w32XGMVil8RDGAXXFyp38");
+ a("dh98BSnWw8rFm2vdHYYeD8feoT6+2fDcA/WA0w/0ifqB7iOQLXgDv/B0ozwaFAGRdg2i33nI7x/BYuDSGzPv1PFiX5ZKoZHYIN");
+ a("Tl68s4fFmDUSpDwXnaKfXqlNeBYyApl7D+uNlo5j2GPmgjPBWoT6P+hLrnbt2ztuZdAvXcxdi81O9b3O/DfXtucrFcgdy+75vz");
+ a("EivzECuJl7xHFvYcxanftyaxB52s0hEkfT+NH/Ddk5lyStl75BFSKwe3zdeI2fywGdj8TOwBmmZvux/eorPIx6B/8l+dJbR5Bu");
+ a("oBMxfnWnyYTbyfo3IURGzD6HWjuSo9wHn4DjzLJgUp9wNjgC9+X+P3h2AKiMoqJ7LK4fSPLeZhc+DNr21+OTeysuoyX+UQeEKb");
+ a("SExLabOzF6pkX0QusuB7j1nUC1A/v8DMzXx3LTynQT2QlLM5xx/KKPuP7y9ROQKeLP7e852lrP0yyrwL/BLlpaAi9fAeyH+/k+");
+ a("W6twErVHaAc8B79mPjiD9ux3SwwiqVzGrkt1JT3b/9y51Mkj9X8GCNyrC1+F8gPPepT6e8B6o/c7d4ztHHf4cX1adcMb24s06l");
+ a("73piGvR3/yE7CN+VjdgH9LsPXx74cP95rD//HL+ZfTyo9419swrBIoii8PnHLuxE7O7u7u7u7tYXxcbAwsDu7m7sBLuwu1FUDG");
+ a("yszxjz2i8+uHA4Z3ZnZqd28i74md+b+Ik8kvk7bLWZ9jyLNCqgrMCol1/f5/Xp+Mo26Ot5du4xrB/AltE/GHO/WsNkGRdQC7CU");
+ a("cOKqNDagAbgP4f4qXfZ8zsf/bj89LPvpYdhPZy+d8S03fnMzvuV+Z3NX7Zu+qu2EgDpP5l3jjXe9S2+Id2Vq2UT9ytln7qnM1Y");
+ a("DAr/i/g78C0ygL+Ed7KzEjBFOEd3mKJp+nYCIe8Hw648HMgA4A3GoyK6DL4BXArbPcHzgnoCVAXDfwvwwtWFzj4HW488Gftxm/");
+ a("B2yNE0/mUofz+GbgQFjGhWbv9+e9/sre5Qs/Vtl+3f5+af0QI5RiNALs18d41z6ifFPfWszabinpXOTrw9utZJL3G0RSu+tOtZ");
+ a("YFtGpFQNtX4h93Htw70VoFRN3iDqC3LP1QTr3fp+/LswTOEWiLWWiLWWiLWWiLWbzN8VdpS7+GfZUN9CWrA98dh2JGDqbI5O3z");
+ a("9Ab15+ybGHdBOeIQV87N9AlbiA83d1RnY0DJcJcF4sqFuxx6C8/NebkxVh/F/4GtxAn/yjyo3DbSsJ25wNZff8dI/DffQf8Hf6");
+ a("zjd+cYrPMpv/iU3w/2v386xvqzI6u/jLg7oPngIPilNpcszNd20ub88eUexq69jF2wlS7bnuar78ewG/P3fqVvObQ/oIUH6I/g");
+ a("H8+zf38f/fQh5seHiRv+9THYp5czdMOu+d6RgPYfpS+EfXnY8/vPx327XocfDyjFCdo++FG9WmHLn2TeBTaDH9o6G/P54acCug");
+ a("nSgV/xX/90QBuBgDGf+uF8dsAZvk2QDvyqLUv2swFVAwI/8zsPPztBO/B1PVg2Kn688GyeWZynT7rAOgkW13E4Pe52cCB0EN7h");
+ a("0n0Tx5Ev48h8iXUMyEc4cdW4GFBb3IcuGHX9t/aoRtsfciWgcyAf+O764V2/HfKLOYhfPzx6GFDfR6wtr76Pse5j1gug3Ad3uO");
+ a("u0iRd8W7h/Na1Gv/jT+o3xOqCM4OKrX5urDMXvIlAOWOdYRvv9yubK6KP9/d+0ny8bxOkBEHg/nwCMFVH9vobvJ41+5+tvMG4w");
+ a("p/T4vxjUfdXPY99OmGTEm+zdGJTrm34+dAinQ5GdyhHev9OzWWfOu3/+j1mO6E6jYxIA9nYvvzb3tdPaKpZT5/TkkzjftZdtRn");
+ a("vx65XlP7ApJm/WM3st/+M22DCz01gQD/xof/M6zyNmcVoK/2r5DcT/mazUDfyjuLNkc6oPBH7kbzXPL4Ge4GfvzpPd6QAQ+OG4");
+ a("/6n/NPdOvo43aC6nXmBpTvdL3+wV/MbM7TQV/p3xfThhLoF84FfeUzGPU38QAfzOe+7jP39e0gf/rK1swN910BNY43b2fE4jwB");
+ a("pgPQ+X36kB6A+s55fePi/Ac/BNG7PW98Z4nqGg0ylwkTjMcwe+HWtf72ZhpyxFnGqCH+3FPuN5kaJOLYH3Z9nof65/Vq6pijtV");
+ a("AfeKOfOd83j2HMQtYX179j7JFPxGLelUD/46nV/PE36WvrOlCFeaNgL7uH53vFhO+LugHPid8+juZZxugHjAp9+fDZr1U5Y+u5");
+ a("zTevBV/f/CuvcX3L9kJ22nLXVVpy5gCvjRuUqCak6VwFL8BURc6H5gAbDifcn9MtWdOoIfxfuA50lr8P3C79o8XAN3D2DsNZvr");
+ a("qlP4TVXTaRjs82rY5L5fNzQw1g2/sA7ZV8+pfH3eAX/0HzuMYjPGxiZMbMbY2Iyx1v+xpwjXu4FTO9hYh9pngA1+zD/ea/39by");
+ a("F9E6ch4GJj36Z/3RYkfVPyB+4R/lfDXMJ/hmZ8v/CvzMcG4rdwc75V+LP52Nf/GprtYw3h0rWm34G/3mP35f9lGkKRhpDfpCF8");
+ a("W6eZ4FAbH4+3dY7u3V/lPxT5h438DG3vlLoD6YLf/w8SBhuG0NgwfLbH8dV5nGkzQB5+kX9sc9DB3tf3+Qm8K+uglHUQytpR1g");
+ a("HK+gBl/cG2Hv0+hl8vg9zdndr3os11+7YP/2ptaX7P1j3fdu3/Dez+8f3/q+GUDJvfZEff5jM0+QxFPmlbpNt/0+Z56RHD7vzr");
+ a("fOPHumd8v38exydb38//JzJtfQeNcHo2kvELNuwuzDB9RzldG0MY+Lv1++Crf4TGOm0cx/wP/tUwecczl51Amxj362Fe47/0JP");
+ a("oS+FfDHMR/xCn0yXAgJnXaLPj7ev1szzgQLaSiNQuqaPQv0ahr4jDPzO26+cH/0l7/yhm+/X/2z+2X5jltBflA4Ed2qnyT+n/9");
+ a("k1eEaFJJUG1WENWDe4F66GFwquhSM3Q6uBYYhq4HnwRj0Rfh+2ADWjGksGAH+l4cKUxc6RA6ApwEnESXiydNBhfRU+FE8aXb6H");
+ a("RwLfAQXQ8eCV6gp8L7QdDZQXQIvgHCou/BIRNIUdAR4PggNvoi/Cwh8aKVSMoGUqHzwUUS40aXg3uDYuhh8BpQDn0RHpaEckDD");
+ a("iplUaoSOBzcD7dDt4KGgK3opnCyZ1Ac9FV4LBqPvwdGSkwd0PHgamIheCqdPIS1E54ODpaTc0BHgBqmlXeh2cJuM0tG3Gt4IXq");
+ a("C3wFczUQ5ziB9elZXsobfAM3JKpdBL4au5pE7oe3CRPKQNXQ5Ok1eaiU4HBy0orUTnKySlLiKdRaeDN4Pb6C3wLfAQfQ+uVZQ0");
+ a("oOvBM0HQubwLPgnCoi/C8YpRF2hYpUA8dDn4EUiGVnHKoyRli54Kbwet0IfgmWVJM3opvAesRB+Cw5SnfNAR4ErgHroefBK8QF");
+ a("+Ey1QgDfN4F/wYxECronQaJENfhINUkgqhI8CbQCn0FnhZZer0rYZDVpV6oiPADcEwdDt4CpiIngoXrkZa0eXgcNVJJ7odfAzs");
+ a("QF+Em9ag7tDt4OQ1aa/odHAJ8BRdDk5bW9J87sOtQDZ0uzcM3Xl0HVMAgPFBUU4x59hqf/ateAiKYFAEwaAogociKAZFUIy9Kh");
+ a("gURfHsRfEQVBtMq6gqXq0Rxdhjf4i9lt8f3/m+pmky986997VNOuU5GKYbvPjhxqxDPhttOuXoCPdUR3wMxuuEv8ZE3eCNK65T");
+ a("l/kiTNYZP4gpusZbeSZKriOegT5d57ajXKeu8AwMfMjb+cSj3V+d8M0o6Sr/gCG6wfM9wqxJB8f4u3NEOuYz0KJT/hOxDo41Vo");
+ a("zQMXegolP+F+06OM5+QofOeC7G6oLXaTd2XeZ2VHXCjxxvvLrGs5HrOj9/gv2lc17sRNeqQ95slPU82Tzw/Qh1jd85zRh1wX+h");
+ a("SQen+zho1jlPGO180FV+DKN0znMxWsdnGC/G6OBMaxWZjvlCTNQZv3uO7+nWBS9+rjNTh7w9enTEV6DQGXfjO53zx+jXBa88xr");
+ a("h0iZ/CwIe9D/+D9XRwXhCsiSad8e7nG4uO+WS06oQHXmDt6ZAfRruu8ZgUuso5Mp3zB5igSxe6d6hq/wdPsNrF9ogucYI5usbP");
+ a("XGJcOucDLnVm6Qr/hH4dXGb9YMAjfi1/jEG64Lsvd190nRcdayw65I0R6TLvghYd8/WIdZV/RZsOrnBOoF2XeAckOuIj0KEr3I");
+ a("lUZ7zEOGtPh/wQMl3jAVe6jzrk9XGPLvPumKxjPh1dOuW70a1r/BZm6oL/wBwddPqncXhbl3gzzNMR74fPdYVPw3c65evQr6s8");
+ a("FfN1zgte5foedW28CdbTZY5R1jEfhaE64QyRzvgutOgaz0Cs6/wpRugGL3i1PatDXgPtusy7ItExH4UOnfBFSHXGd2GsrvEcZL");
+ a("rO32GCDq+xNjJrSVf4OUzWdW691hzqmDe6zn7RZW673lzpCl8x3lzpjBe8wWuHDvkiBDVv5wVvtN91dpN1NMG60hF3Yj2d84o3");
+ a("+zld4osQ6YwfRauu8e8YroNbfB/Era5DR7zjbc4HHfOxSHTCl6NDZzwbqa7zgbf73LrCt2CCrvKrqOo6r3mHedBlXrRqXekSj0");
+ a("CPrvAldzkrdMZP4Dud82fo1w1e4m7rRIe8BgY85mPyThikYz4Ky+iEL8LKOuO7sJau8QwM0XX+FE26wTve42zRMfegRVfutZcR");
+ a("64J3v89c6ZjvR7sueN37zZXOecQkZ46u8C0Yq6vch0w3+LYH7EFd5esednt1lR9/xP7SOS9Vs6d0yKfgc53wNDR0zos8Zk50yP");
+ a("dhwOPGyLs8bp3omN9BSRdcesI+0hyciGadcA0tmoPvMFw3eOku49UxX46ROuPfnvTaoYOn/H4Pqc55m6etBx3xAxiva7z8FOPV");
+ a("JT72GWeOTvioqT63TvhjTNEFh9Oc1zrkLTFLR7wf6rrCp6FHp3wdCl3lx9Gnc34TDV3wz/hDB93OKwRPuB7eDAN1xOMR6io/jp");
+ a("V1zm9iLV3wzxiig2d9HDTpEm+GZh3xfhimK3waWnXK12G4rvLjaNM5v4mRuuAlnzO3OuQ9MFrHfCtSXeVedOqCl3jevtNl7kJV");
+ a("5/w7Jusgd16iS0d8B7p1lb/CLN3gI6abW13hVWeYW13iZvyhI94fQZf34dMxUKd8PUJd5RcxWNf5M5R0gxd/wRmlQ14TZV3mnT");
+ a("FUx3wkIp3wC2jRdS7PtNc0B3ugQ8f8AlJd528wSTf46BetK53whejRGd+JQtd4Ovp0nT9BQzd4gZeMV4c8AcGTxsXTEeo6f4XB");
+ a("usGLvmyMOuRzsZ5O+VY06So/hmad81wM0wX/hFYdzPLnLwzXJd4UbTribLa1oTN+EKN0jV/DaF3nbzBGNzh61XmqIz4Mk3SFz0");
+ a("JNp3wjpugqT0Wucx47x6XojCehX9f42NecM7rKb2PQU66fz3vdeatTnoaSznnQG+ZBh9w51/3TGT+BSOfcQIvmoPVNZ6yOeZe3");
+ a("nKE65j6M1A3e6W1j1zGfgDE64S5conPufMd164xPetd4dcLT0K1zPvw9Z6yucD/m6KAnCK7GPJ3xo+jTNe5437XqlA/stTZ0hc");
+ a("/BgKe9nVeaZ8y6xFejWWf8L1p18KE9izZd8C0fWc+6wcHH7qNOeBzG6IzvwiW6xjPQqeNP/Bn8U+eUDvmzz4xXN7jzc2PUGYdf");
+ a("uo865B706YI3+MqYdYUzzNcZz/zaWKZYS3zmN8aiU2771hmoK1xDWbMXCXtWB5wh0hnPw3Bd8JDv/Xpd5rMwUqec/uA+6hrP+N");
+ a("H86jrPbfg5XfBGPxuPLnM7qjrhPkzSDV7nF2tYl/lR5LrGX/Ubu27wm7+7Jl3w338auw7+Mg8Y+Ixx8cS/zZeu8XQM1nX+BCXd");
+ a("4CXnW8865NVR1mVuwVAd85GIdMIXokVnfCdiXePpGKHr/AkqusED/zFOHXKKRKd8LVJd5dK/9qfmoIrxmoMnUNU5v4VJuuDgP/");
+ a("dMB7wSpugSb4FcR3wDZukqh4F/E6dDvsLXbD/XGYcL+nrGVG/nOzFY1/hAz0Qp6wqfg1ad8vsYrgte39esR+sy74NUx3wKxuqE");
+ a("r0amM/Z3uMEEHfLamKTL/ANqusGLe/5JXYf8m2eg9GhfaAp2wcBproF/wTI6Wsz3iqGkMz5pcd9PpxOejkjX+U+06sBzSrbGcB");
+ a("3xVFR0zr1IdMHHeW5Jh054V88a6dIxP4C3dc69KHTBf6FPB6E583yShubgWqzVbT75FZR1nf/DUB145sgQRLrMG3iGSIsu8/7o");
+ a("0BU+A6lOuYqxmoPHkOmc91/G3OoKX4opOuMnkeucz/cMkVk64yfR0DkvtNwCwR865J0x+Fnj5XNR0ikvvLy51SHvgCYd8XFo1g");
+ a("nnaNE5Nw02zzria1HRVf4Ao3TBy6xgjLrENyDVVR644gJBpw55HMbrnIetZPw65nMwWaf8ELp0jV9Eruu8+8rGqyu86irunS7x");
+ a("A+jXNT5v1QX8Yc7H4dbVXJOOOcd6mm1OY9QBb4UWHfE4xDrjP9Cmg9WtMYzUES+3hnWlS7wbMh3zq5ig6/wDpugGD1zT59Yh74");
+ a("NZOuZjUdcJv4seXfCpa9nLusaz0dB1/gZ/6AZfuLYxPO99ePl1rENd4m3QrCP+GMN0wb9itA7WdSZgjK5xuJ61p0NeG5mOeBQm");
+ a("6ITX3MA90mU+Dz065eM2tEd0wud7Jsd8nfItCHP3nadisM75/o2sPV3jjxHrgpfa2DzrkDdAuy7zM0h0ztdt4pp1lb/ARN3g9c");
+ a("vOHF3mPdClYz4B3TrhHs/hmKkL7sd8HWzmujBgunnjbTBIR7zt5taMjng4huoK34BIV3nbJmtGR3wIOnSFT9rCmtcJT0RVV/kN");
+ a("TNJ1Xm5LZ6Mu8c7o1jFvsZXr1BEfgvm6whdjwAxrkm8Y6jp1laeiWee8/NbutS5xO9p1wuMwWme8/jbmUJd5D0zSMS+2revRIW");
+ a("+OeTriFZqtQ13iFMu84P5yN0o6514M0QU/tJ0zQtd4JkbqOn+DUbrBu2/venTMJ2C8TnguJuqC+9GtA8+MWBEzdYm3wRwdcWdk");
+ a("7+uMH8SAmT4v92KQLvjhnVyzrvFsDNN1/gatusHVnd1jzcFUXKJzHjzM59Al3gaTdcR3okvXeCbe1nX+BfN0sIvzZFfzpiO+GC");
+ a("u/6Dp52xavHTriQ9CmK/w0Ruqcm3a3H3XMLyPTdV5zD/tRl/lfVHWwp33R6t7pKk/DTJ3zBXuZK53yI5ina/wdPtcNXn5vP9Yl");
+ a("Phz9OuXJCF7y/rzGPuZTl/l8DNYpz4iNRdf5P5R1sO8CwQEYqiv8GYbpBpf3s981B+9jhC74xv2NXVf5PSS64KWGW6s65Ntwia");
+ a("7y9AOsGV3n9Q90xuoyX4+Zusr/oK6Dg1wL5umIj8LnOuFx+E5n3DHC2HXKt6D0srHzKgd7vdAl/h5NusHdh9j7Oud1DnUfdZlH");
+ a("YpROeBxG64z3bTMWXeHFD7PvdMhHYpZO+CG8rWv8AQpd8LKHO2N1iS9Gv874YczXNV7vCOt/lmvgvbCWjvkrDNENXrxizeuQN8");
+ a("JwXebRaNMpT0KnrvHCR5pnHfKe6NIxP4puXfCmR1ljOuKj0aMT3vBo169j7sKgV8wV92KwLvi5keZZ59yLWBf8F0bo4BjPZvKc");
+ a("gorOeC7G64LHHGf965QfRU3XuAfdOmj3e0vM1DGfhLpO+Cr06IzfRqELXut486zL3ImGzvghzNc1fhUDZlt73IdBusHTTnDO6I");
+ a("L/RkmXT/RvHLCezrkXQ3XB8SivIzrm7U/yY13hLU82Xh3xkejQCY9DqjPe+xTng465OXHPdMRHY4pO+EnkOudVT3WPdIkPR4+u");
+ a("8Gf4XDd45dP8vkJHPA0DXvVrec3TvY7rMqdYWaf8HIbonFccbVy6xHuiRcd8LmKd8cJnuKc65I3Qrst8wJn2u67weZioU97Qsw");
+ a("Lu0WXeC3N0zIt0uGc65IsxYI6Pz8+cbf51zr1o0gUn55gjnfAEjNJV/gGjdYMXP9e60iG/iYm64EFj7E0d8kuo6zpPOM9c6SpP");
+ a("xYDXfF7uxSBd8OoXuB5d5j3QomOejVjX+c3U9emC/0GHDi505iDVJd4OY3XET13stUDX+c9L3EcdXOpcRaE5OAR9usJXoqEzzv");
+ a("GHznn2Zc72130c3utya1XHfC6G6JRvR5Ou8pNo1jn3YpgueJ8rnCc65mMwVifchUznPBcTdcF/4x4djDNGTNYlbkaXjniJK+1f");
+ a("HfK2mKUjHo66rvCp6NEpX4tCV3kq+nTOl3Yau874L5Te8Hmv8iwVDNEV7sVQXfA6VxuXLvOZiHXKd6NN1/iYa5zvOuFxGKszfu");
+ a("9a49UFb3+dseiI17revOsy74F5Ov6fYrsMlSKKAyg+dhfYhYKFCDY2dtfY3S12K7aiomJ3C3aLLWI3drfPbjGx4zcfDucg+9y7");
+ a("996dh8KfV+Kp3sZnkfCSs+Ccc3zXdAGuMNf+65DXo6HexqfRVl/il+iqP3DKee6SjlwYQ3Q53o3R+jA/wQz9gTfOd4/1Nj6L4/");
+ a("oSf8Y5HZhXX7zQd02v4BNIeNlrOMki76dT8jmk15c49mJ7q1Py3mXWrw9zDAboyMFyz24deSDG69H8FzN0sMLzBKt0Nt6ATXob");
+ a("n8U1fYlbrLSfui3/QNwrftZsdyGk1OW4A9LrPnxprTugIw9f5+z0aF6GOXoFz17vrkbNCTa4hzolD8dpPZpf4pr+wG02+my6Lf");
+ a("/AWx1sspcIrnovLrjZenQ5bozMui33Rw49mnchnz7Mh7bZt6j5LzrqYLu/Y5dnl2az1H7f6ch7cEAf5soHvLcOuTuCa17Dh5FQ");
+ a("R/6KlDowJ93tsP3RfXgJ+ugV/PKI+6M/cOajzkJn4/zHnIUuwC1xTbflccedhZ7B25DwuvPifye8lw5O+n8S5NGX+Mcp33kdnP");
+ a("bsQiUduTVq6bY8Aw115DNoqS/xnTP2RMdw9bPujw65M2boPrwgQq/g/VihD/NSs8rr9ArejXv6MF/FUx3DH/FWB+f8ux5fdMhj");
+ a("ENywHj6PhPoSxznvOa9Tcl1k1iGPRx49gzeggN7GRy945uhLPP2i77KewUUuOV9djqdhiJ7BGzBeb+MGZpGn6rb8HAf0B65yxf");
+ a("3UIa/BNb2NzyJGX+In15yr/sAZrjuXm86UVyG93sZ3kEfHcJUb1qxDbn7Teem2vA8t9WGOQVcdOc4t90en5LMYoi9xrtvOQhfg");
+ a("GlilQ/6HTTq44/uOazobX8U9HcPBXd/rW17DOZFUF+AaSK9Dvo9sOoajed9yOnJGVNPZuDtC3YcnY4CewTcxXMdwx/vuie7D17");
+ a("BNx3C9B55lui33wnHdhxfhnF7B0YzuNR35JOLe9tk5eYx91il55CNr1qO56GNr0+W4KxrqPjwDLXXkHeioD3MMeujIwRPr15Gz");
+ a("YbiOXA7jdeTmmKrbcoKnnm86JVfEXh3yNBzWM7jWM/dHh3zlt2eljuHgjzXficPeK0JHLoc8OoY/ooAO/rrDKK7L8V2U0zH8Ew");
+ a("118M/nRksdcneM1n34JCbpSzwyMJejR/MyHNcr+A/OaQO1QTbc0pGvIEbHcIrYZpl0Si6LD7oc/8J3Hc3SZkRw189y6rjmHaLm");
+ a("TSitt/F9hDqGf6KpjgZbq8Y3d6FDnoNJegX/NB87Qwep/TmO6xVcOo0163K8Ftf0Nv6MezpIGzuojqc65G94q4N01okvOhuvM8");
+ a("/6W2/jm8h2z9r4D/LowNzr3oLmL/Rh3lgotvvu9fwG4/UHzl84djBVF+CxmKNn8Cqs0Nv4EdbpD1y5iLPQIffHAT2aX+G4/sBZ");
+ a("i5oh0dm4JG7pcrwBMXobn0fc+86Xc5tVTaoLcHnk0yH3RBHdhz8Ws3c6mlfNgrY6Gw9GVz2al2KSXsHfMEMHJbwe23Q2jsFeHT");
+ a("lzSXuus3ElPNVt+SXe6g+8pZR7orfxZcR94Gd5UWlr1it4P4row1ywjHXqctwcHXVbjmXWs4dOyXmxRBfg5VilV/B+nNOHuV1Z");
+ a("d0OP5kWI+9Br+DuSapc4OIoC+hLPKu9+6hU8q4KzjpqvYYaO4Z9YoIOK7j9WRF0pdjAI1/QK3lbZPujInavYB92H5yJpjLXxoK");
+ a("q+J3o0r0YRfYkzVfPZdQHuikp6Bt9CqD9wYjOVLXVK7oqOug/nreHsdAFuhHW6LQ/DNj2ac9d0droAt8U9PYOv4amO4fy1rFkX");
+ a("4Mn4olfwfvzWhzl9bfv5yLlzZeTRIfdFAT2aU5l9LK6zcXn00CHHN+s4QKfkhlil2/IubNKH+aQ5yJ36EverZ316NM+qb516Bf");
+ a("dr4Cz1aO7c0DPnsX3grI2sT2fjno2tTffhJSiuV/BBlNOH+Tmq6Q+8oYl91tv4LProS7zbrOIQfZhHNrO3ejQvwmm9gic3953V");
+ a("M3gDgif+Hq7Wwtp0yL1RRPfhv62ctQ5bW39b76v78CS01TN4A7rqbdylnfXoPjwbC/QKXtEeOnLRDvZKl+NhuKdH81o81dv4Hd");
+ a("7qD1y7oz3UIa9C8NRr+AES6hhO3sl8jk7JDZFet+W+yKZH8x7k0Yf5KoroGP6J0jow97cVlfQ2fowh+gMn7mK2U6fkZZikV/B+");
+ a("7NSHuU5Xz0kdcne81H24RTe/j3RbHoH0z6yHm/e0Nt2WR6GhHs3xevnu6JR8CR115NfooT/w/t7upz7Ml7FEx/DRPvZIX+Lsfd");
+ a("1VXYAbYKduyzX6WacOOVl/69QpeSISPnem/B4p9QeuM8CadcgbkU1v4+QD7adOyZVRQIc8CcX1DD6Ecvowf0I1HQwya4tQZ+MS");
+ a("aKrL8Xa01X0Ge5YOca90Si6MAXobJxoaOxiuU/IrjNcfuNgIv+N0Ob6KdTqG44z0PNEpeYo5vcN6Bi/BW72C3+OL/sATxnqG6B");
+ a("k8c5zn4Qvvyz3+s1v3vAxFcQDG6+UDGMQgTdyhG0OFUaJJV0MtImLoILFWYjJVgkjjpQiplrjES5n6EYiRoYsQi8tUYiAxivj1");
+ a("e/QmT55naXL/555z0iWz6xz3Lts/OuAXjOiIkyvtsTHd9DgmdZbnkdV5XiyYSxf5ZM29rWt8g6qu8ytq+ou/172/jm3Yq7hv9q");
+ a("a7GZEOeBoNneU5/Og87xXNokP+2/JNG3677d5DQgecxoDOcHzXXDrgNGZ0httK5tddPISSTvHjvnOtI+4oezfdxZWKM65DvkXs");
+ a("3Vw8e2iP6RzvYFiH3H9kDXWS746tj67z6Klzp1O8cOZ/i85z4dze1kV+xrWOuOfCO+iAJ/Ck6xyrult006v41EU+wK8O+Q2dH9");
+ a("ac+y59dx3wILp1iqcQ11l+QEJHXL6yt3XraT3/7MitSwMBAMbhQw6DGBYWRNRkGgYxiJhMi7JgEDEaLl0WkWEyH5dFjg38OD8Q");
+ a("kywtikFMC8ZhWhCjXPLgHlzZn7C3PC+/6cxaWfj/aw9hEHXD4Lczbstlq12FwUJ33BplWy/bpJ3pCTt8Yp8fHPKHM9eVdTa4wz");
+ a("1GbDPlJXO+8I2fHLHg/E3lIte4zRYPGfOE50x5wZw9vnLAIUcsOHdbucQNNnnAmKdMmPGRPQ74zdm8coVb3OURY7aZ8p59vvOL");
+ a("Bet3lavcZJP7jHjMhBmf/wSlj0DpG1D6FZT+A6U51kDjE0rrgGkEcILyw6B0Gpp8DZTfBaXnQOl1UHoPlD4Hpe9A6XdQmmkty2");
+ a("i+GM0Xo/kCR75AAPfUkuCSFI/EvJScVCjfOT+vGEA31e62DcPAvJrnuliAeDFqY/6t2NdUgywZFFXUe/pJFoUlQfpLvCPFj6Pk");
+ a("DFo378xgfCR/KxOQ/SfluSFylLz9A35T2qP5mrCydjYxzZfmjtwE70s9RRzWo313Vam4LLGDk7YoTCCCLfeO8x07fBDUHMlnsa");
+ a("mH6BXUYnG05bg4UDB41Qa/1BIL3bK7AJkbSfMeJZnEPNTGeYnLcydH57RlFCUaO5/fE12U3TxjSYNGfHIqTnghRdso/tRkNc+U");
+ a("2z68EiARCTlaFLfRp67Yb9QElVsb7zZ1DrwGrjvJem7aYhdRfkKtiUlnZYybxE4VZcc7LbbQ0erL5kv1rH3Zq6B9ukkZySFIsv");
+ a("QGWNMZ/Ao7y5WkrQ/LTb4BtGh7W2JUmqMKvbbXOOTlDybOOueIjrQjzbLde+7xvUiN8wr7Hx39Cy7hegV1BA/LZUo0nxFVh9wl");
+ a("eIdlx8U+Ws1aGf0XNUUrDtxjkkf/AgN+wjeWQY900gvqE0/4gbZvrrTBsP6xMQY36hn1h6LIFnNwxS9/tqq7+9+d8Rv/I6OMeh");
+ a("UGYSjsX8PtmtyEp+udeybamUUF0o3M/XuPtCTiHs9HCxR6em9cnBMT8EzPWZgN4ZbiIfl8Gm7Aq0afRljX3Tu/jP4iTMXPM9eX");
+ a("HnixkPhM/2ukyexqmq23pdb5a3JXXTlgu7Jiao3RYtRLheR/wS+EoRDtwFvRxVuqizt7bBuWqR0Zrxp4NcpPxBPKlpMwmqJjOs");
+ a("6MLiwRub1JBphW0gD4i2OFdV6/yVMC077VZwdLDMixJhLTTcQtDQ6/a5vfNte+inflKEs+s+xhQaL/aBOls2UfpFL0TRcj8T4N");
+ a("Q79TYsNSEY1BwleGqTIqJevVTHzJNxXojuRiBiRXgEqJ7NSivNQcYyO9lJwcBmAqTSwtgXJKgR6HMocp0NjAAj7bhwmKTYB8Gy");
+ a("B2AeJgf58w1yCw78FnwASIActvoHgYSA80XPNzylKLQNmLAcwMKK2qykk1NGUYBQBm7I7vcSAKw/iDweJgMVgMFgMLxWBhIVgM");
+ a("LBSDhYXgmZfMnJnMSzCwUFgYLAYWisHCAwMLO9vffog9X+H6H7n/45vzrpkD7oDAHkqooIYTNHCBKwyAMMMCd4jwgBWesMEn/A");
+ a("ZCj/QLbehXeqHfaE+/U6CWLvQnfdBfdKOf9MDPvFJHVauTatRZXVWvZrWou4rqoVb1VJt6qaQ+sMAdEtxjiQc8YYNnbPGCHV6x");
+ a("xxsOCDjjD4z4woQfutA7TXStT7rRZ93qi+70Vff6pgcNGvWsF33XUT/0qp960y+d9IcpzM4QszelOZjKHE1tTqYxZ9Oai+nM1f");
+ a("TmZgYDBs3dHKZ26qZ+GiaclilO67RNaSossaWtbG0b29rO9nawaBcb7Wo3m2zhiCtd5WrXuNZ1rneDQ7e46Fa3ueQKT3zpK1/7");
+ a("xre+870fPPrFR7/6zSdfBBLKUIU6NKENXejDEDAsIYY1bCGF3Omed9f8lAWQf5UaaKGD/l1pgQhrrpOgoISWtKJ17tPSLtcZKO");
+ a("Y2ka65TKIFI6xkFatZw1rWsZ4NDNnCIlvZxhIrOOElr3jNG97yjvd84MgXHvnKN554IYgoRSVq0YhWdKIXg0CxiChWsYkkipGM");
+ a("h7EajyOO83gf47iOz/E1prGQO7mXpazkUZ5kI1t5kVfZy0GCnOUio3zIp9xkkh9qp4gq1eGvoLefi+qyoJsChW9F2dBbUPbz1n");
+ a("PACuvsJ+t52/lDmd3yyAmGURgmqaEOuRKJRK5EIpErkUjkJDUkNUjkypev7bvDpxyJRCJHIpHIyp59OJmk2512+w/Iw3XumcxQ");
+ a("yCd8iAy6EBWHCYoYzxeYWM7X83rezz/PRmM1D43duM1j4zVB89SETQwvSZNBjGpGmJmaBWrWZocbo7Ugx25d2PHaAHrCNoafpM");
+ a("0gSLUjDE3tAkVru8OR0VmQZHcuLHldAE1hF8NT0mUQpboRpqZugaq12+HK6C3IsnsXtrw+gK6wj+Er6TMIU/3S770FW/bgQpc3");
+ a("BPAVDjGEJUMGY2oYoWwaFjhbh/1N2oLf/d+Cro4iuLDmSRFCFcNbojKIU0cXWIUd7ozcgjw7d2HPywPoC/MY/pI8g0CVjzA45Q");
+ a("sUrvkOh0ZhQaJduLDoFQE0hkUMj0mRQaQqRpicigUq12KHS6O0INMuXdj0ygA6wzKGz6TMIFSVI4xO5QKla7nDqVFZkGpXLqx6");
+ a("VQCtYRXDa1JlEKuqEWanaoHatdrh1qgtyLVpN6if6rCO61Od1Fn9XCtYvkDzctNsvNhw7MMwbrXifw3czFSs6HE1KWmJK624js");
+ a("PL+LxNxOukucJlNtzDLJzbJSLeIuU1dDHKJTZewi6TSuH5Vzz519rBs36rv8tzRthK9pfSPkplT+iqRlkvekJbF33Vq97YWPv1");
+ a("8dXDdu6vxpSW+u/rybXM5wVbMbEUV/YRcSEpN6JlJVfZxwNW4XMXEZeRchuTrMLoHK7B5x4iLiLtNLYwo6/HBhyuwOcOIiwhQ2");
+ a("XHfkFhjcEcjiU43IIvazjJDi7Qvx3+d/wfj84a6v3bjGA/VZrmN6o36R7vF282EetTvtG4SeUOnftFJG9VU/ZG2yZ1O/TtU3hE");
+ a("4ymUa/ie0eDDtUPZPm1H1J3Ct4aMudrg+jDtULVP1xFlp7StoXuG600a7UqhfWl0KJU+SaczKbWWVk8v15cdpX74YbPSgXQ6kl");
+ a("In0upnqfU/P/Uh0tP+H5/91Ck2N3FpfUKmITX30PHonk7WfEPL34w6KLkvSlPWe2a/NxbcRMNdURq3qcjU7PbMcm9st8l6i1V+");
+ a("D1CdhtHl1muzv6OV3U6PcovbSz/1m8iF2Vu9I/Y7ZcE1Gz6z4nRs4L/eLx859lnziD1PWfTbd70PhD9KtU55Bt2aLZ9Z87vW77");
+ a("WMbZ//dwMs/VyuWIF5zz/7rln4mY2XNcgSsIHf9bPtM+u+se+/2juz0JnCMIwfBh1ZGkVOpCypIcufLCdLja1EMrZMoZALW7IU");
+ a("QvYsyXYhU8I5M2dmzpnvnBmKsu9ZUxPRlCXhYkppkCX7872+rN98thsX5mbu3+f3PO/zfk0N94LBGws5Ik4+SIB83lNK1FQq1F");
+ a("V0aiutqa+YEi+4nH+Qryae2u73qQzued81/6DrRqnLrPyRe9FjdNFkIqLLDGUxRVqTK+AG3mZMSVb/xBGKDN9H7qgEv+OJi0j0");
+ a("Uv4evFGRJPtkcof1vR/C/Leof+eHMFI+Tns7oeA/StSvVHJuEtuLQbMrmstF0V3Kor3oToToBtcKoj917biC5jDxG5NluCBZI3");
+ a("qjyux+RfSaKl4/sxpV0QpKOaE1RKc8o0tEqKFg8hRbV9iC3DtZuAB9nxfe8fuodUg7AH0Nq7PVE4pOs2ZDyx3WbusQ6Vex6tmN");
+ a("oV8/ezA0nG8vQZZ59n6oeMt+AP3qJ5vwu4jU24iU2p88DN1qIZE6pLohi5YhfdKpADrdTj2EQhGkzgxnHvJmp7MXulx1bkCP9l");
+ a("BjRHoc9utG6HA//RQbtUWmLfJjRGYcEmR9ZiumfwfJUTfbCIkxJDsCc1+RXY95H86exo58mf2QNdyebn+kwyJ3BWZ80D2OJHjq");
+ a("vnF1r43XAfOd6E3DdDd7OzDVx9573DBdcr1wvSzILcUkg9xBeP1R7hk6WEfWHVPciJmdZpew016w9+hcXf3e1LngWe5WhU9X0t");
+ a("VxKihX3V7TyZ+uwpEx2ljbZDuqJqRN/KprmeTExYpd1Jo69GS0ZlwV0l2k0wYaqtg5lSR3YI1stwg3lsiDhmK7nCIHaopm5ZIH");
+ a("y2mxQyStahv5sKjYIYvJiYcUvWm66ErfNnh6JUFbing1XpycmPirTREhL06XbATRk7AXIuhIMcVOeOVzwsyvs1/ctK64asvEV0");
+ a("SR/UXiKyzau6wNHSK+6L0kGtIWg63qOW9xwsCWaPCSC20DEXZR0W/mEmH7FD0mToQlZAkvLtShxNcGSbrzq1THXVpDfM1VtBVD");
+ a("dJRqGX/vF1K+THxFFL2kSISFKePlb3CniDBN8dK2T9yH1buHxekCV7p4O+Fkmd/ciduIraKyYcgpK1GOGX/cMUxxM1Zv3VospA");
+ a("3+hZ6RoIQrfbkgFS8EkqwDkZxG84/6dYxyb1uV3qG+L/eB0Fd0V5pgUn5LEp/fNmjKPrz5EaGuokHHspjd5JBm4WtKbiaosXIe");
+ a("culJrhZrwtqwbmwAG8WmsHlsFduOLDrCzrMSJdAg0DHLX4D82eWnkDxX/OvooW/9OqCjZ9AfVMwJFoIGJ/DROW8HD5E3zfKtsM");
+ a("eG58eAg2X5tdD/YP44dH+af42c6VToAb1nFOYhXfYUMlD7ZuEuV3luSDvH/6vFag5th1mjoelSaw009a0DVpG2lW63tNtBz5H2");
+ a("eOgIDaHfGfsydtQL+71tJLskeyE/piZnQjmoBsUuJ69BqzqphlBoYGoYttPy1DrspKOps1Ao7LSFGmOcCdBhvbMVbfCkcwE58d");
+ a("L5gBbYPd0HaixIL4UKJ9LnkQu4YDD77pm+mPvUzCz0v9HeBLh1tbcJPuU/SAppY/GFDUBOnay4lHVW22/gG+TDmL8e6X6MXr6b");
+ a("wnWjgknCaZz5kNYUX9iQlGM8tbT/n3/68xHeVZKEADYEAA==");
}
}
diff --git a/Task/15-puzzle-solver/Dart/15-puzzle-solver.dart b/Task/15-puzzle-solver/Dart/15-puzzle-solver.dart
deleted file mode 100644
index 27546c8101..0000000000
--- a/Task/15-puzzle-solver/Dart/15-puzzle-solver.dart
+++ /dev/null
@@ -1,78 +0,0 @@
-import 'package:collection/collection.dart';
-
-typedef OffsetFunction = int Function(int a, int b);
-Function eq = const ListEquality().equals;
-
-/// Solve Random 15 Puzzles
-class FifteenSolver {
- static const target = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0];
- static const trN = [3, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3];
- static const tcN = [3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2];
- var pos0 = List.filled(100, 0);
- var moves = List.filled(100, 0);
- var dirs = List.filled(100, '');
- int step = 0, best = 0;
- var board = List.generate(100, (int i) => List.filled(16, 0));
-
- bool isFinished() {
- if (moves[step] < best) return nextMove();
- if (eq(board[step], target)) {
- print("Solution found in $step moves :${dirs.join('')}");
- return true;
- }
- return (moves[step] == best) ? nextMove() : false;
- }
-
- var passNumber = 0;
-
- /// Try all valid moves from here, but don't retrace your steps.
- /// Return true if a solution is found.
- bool nextMove() {
- // if (passNumber++ ~/ 100000 == 0) print("${dirs.join('')}");
- return (dirs[step] != 'u' && pos0[step] ~/ 4 < 3 && down()) ||
- (dirs[step] != 'd' && pos0[step] ~/ 4 > 0 && up()) ||
- (dirs[step] != 'l' && pos0[step] % 4 < 3 && right()) ||
- (dirs[step] != 'r' && pos0[step] % 4 > 0 && left()) ||
- false;
- }
-
- bool move(int offset, String dir, List rcArray, OffsetFunction rcFunc) {
- final int ix = pos0[step] + offset;
- final n = board[step][ix];
- pos0[step + 1] = pos0[step] + offset;
- board[step + 1] = board[step].toList()
- ..[pos0[step]] = n
- ..[ix] = 0;
- dirs[step + 1] = dir;
- moves[step + 1] = moves[step] + rcFunc(rcArray[n], pos0[step]);
- step++;
- if (isFinished()) return true;
- step--;
- return false;
- }
-
- bool right() => move(1, 'r', tcN, (a, b) => (a <= b % 4 ? 0 : 1));
- bool left() => move(-1, 'l', tcN, (a, b) => (a >= b % 4 ? 0 : 1));
- bool down() => move(4, 'd', trN, (a, b) => (a <= b ~/ 4 ? 0 : 1));
- bool up() => move(-4, 'u', trN, (a, b) => (a >= b ~/ 4 ? 0 : 1));
-
- void solve(List initBoard) {
- pos0[0] = initBoard.indexOf(0);
- board[0] = initBoard;
- while (!isFinished()) best++;
- }
-}
-
-void main(List args) {
- print("running");
- // test values
- // final start = [5, 1, 2, 3, 6, 10, 7, 4, 13, 9, 11, 8, 14, 0, 15, 12];
- // final start = [9, 1, 2, 4, 13, 6, 5, 7, 3, 11, 14, 15, 10, 0, 8, 12];
- // final start = [10, 3, 1, 4, 13, 5, 8, 7, 9, 6, 0, 11, 14, 15, 12, 2];
- // required solution
- final start = [15, 14, 1, 6, 9, 11, 4, 12, 0, 10, 7, 3, 13, 8, 5, 2];
- // Extra credit
- // final start = [0, 12, 9, 13, 15, 11, 10, 14, 3, 7, 2, 5, 4, 8, 6, 1];
- print(start);
- FifteenSolver().solve(start);
-}
diff --git a/Task/15-puzzle-solver/FreeBASIC/15-puzzle-solver.basic b/Task/15-puzzle-solver/FreeBASIC/15-puzzle-solver.basic
deleted file mode 100644
index 4dcdf807c9..0000000000
--- a/Task/15-puzzle-solver/FreeBASIC/15-puzzle-solver.basic
+++ /dev/null
@@ -1,288 +0,0 @@
-Randomize Timer
-
-Dim Shared As Integer Nr(15) = {3, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3}
-Dim Shared As Integer Nc(15) = {3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2}
-Dim Shared As Integer n, nn
-Dim Shared As Integer N0(99), N3(100), N4(99)
-Dim Shared As Ulongint N2(99)
-
-Enum
- Ki = 1
- Kg = 8
- Ke = 2
- Kl = 4
-End Enum
-
-Dim Shared As Integer l = 108, r = 114, u = 117, d = 100
-
-Declare Function fY() As Boolean
-Declare Function fZ(w As Integer) As Boolean
-Declare Function fN() As Boolean
-
-Sub fI()
- Dim As Integer g = (11 - N0(n)) * 4
- Dim As Ulongint a = (N2(n) And (15ULL Shl g))
- N0(n + 1) = N0(n) + 4
- N2(n + 1) = N2(n) - a + (a Shl 16)
- N3(n + 1) = d
- N4(n + 1) = N4(n)
- If Not(Nr((a Shr g)) <= N0(n)\4) Then N4(n + 1) += 1
- n += 1
-End Sub
-
-Sub fG()
- Dim As Integer g = (19 - N0(n)) * 4
- Dim As Ulongint a = (N2(n) And (15ULL Shl g))
- N0(n + 1) = N0(n) - 4
- N2(n + 1) = N2(n) - a + (a Shr 16)
- N3(n + 1) = u
- N4(n + 1) = N4(n)
- If Not(Nr((a Shr g)) >= N0(n)\4) Then N4(n + 1) += 1
- n += 1
-End Sub
-
-Sub fE()
- Dim As Integer g = (14 - N0(n)) * 4
- Dim As Ulongint a = (N2(n) And (15ULL Shl g))
- N0(n + 1) = N0(n) + 1
- N2(n + 1) = N2(n) - a + (a Shl 4)
- N3(n + 1) = r
- N4(n + 1) = N4(n)
- If Not(Nc((a Shr g)) <= (N0(n) Mod 4)) Then N4(n + 1) += 1
- n += 1
-End Sub
-
-Sub fL()
- Dim As Integer g = (16 - N0(n)) * 4
- Dim As Ulongint a = (N2(n) And (15ULL Shl g))
- N0(n + 1) = N0(n) - 1
- N2(n + 1) = N2(n) - a + (a Shr 4)
- N3(n + 1) = l
- N4(n + 1) = N4(n)
- If Not(Nc((a Shr g)) >= (N0(n) Mod 4)) Then N4(n + 1) += 1
- n += 1
-End Sub
-
-Function fY() As Boolean
- If N2(n) = &h123456789abcdef0ULL Then Return True
- If N4(n) <= nn Then Return fN()
- Return False
-End Function
-
-Function fZ(w As Integer) As Boolean
- If (w And Ki) > 0 Then
- fI()
- If fY() Then Return True
- n -= 1
- End If
- If (w And Kg) > 0 Then
- fG()
- If fY() Then Return True
- n -= 1
- End If
- If (w And Ke) > 0 Then
- fE()
- If fY() Then Return True
- n -= 1
- End If
- If (w And Kl) > 0 Then
- fL()
- If fY() Then Return True
- n -= 1
- End If
- Return False
-End Function
-
-Function fN() As Boolean
- Select Case N0(n)
- Case 0
- Select Case N3(n)
- Case l: Return fZ(Ki)
- Case u: Return fZ(Ke)
- Case Else: Return fZ(Ki Or Ke)
- End Select
- Case 3
- Select Case N3(n)
- Case r: Return fZ(Ki)
- Case u: Return fZ(Kl)
- Case Else: Return fZ(Ki Or Kl)
- End Select
- Case 1, 2
- Select Case N3(n)
- Case l: Return fZ(Ki Or Kl)
- Case r: Return fZ(Ki Or Ke)
- Case u: Return fZ(Ke Or Kl)
- Case Else: Return fZ(Kl Or Ke Or Ki)
- End Select
- Case 12
- Select Case N3(n)
- Case l: Return fZ(Kg)
- Case d: Return fZ(Ke)
- Case Else: Return fZ(Ke Or Kg)
- End Select
- Case 15
- Select Case N3(n)
- Case r: Return fZ(Kg)
- Case d: Return fZ(Kl)
- Case Else: Return fZ(Kg Or Kl)
- End Select
- Case 13, 14
- Select Case N3(n)
- Case l: Return fZ(Kg Or Kl)
- Case r: Return fZ(Ke Or Kg)
- Case d: Return fZ(Ke Or Kl)
- Case Else: Return fZ(Kg Or Ke Or Kl)
- End Select
- Case 4, 8
- Select Case N3(n)
- Case l: Return fZ(Ki Or Kg)
- Case u: Return fZ(Kg Or Ke)
- Case d: Return fZ(Ki Or Ke)
- Case Else: Return fZ(Ki Or Kg Or Ke)
- End Select
- Case 7, 11
- Select Case N3(n)
- Case d: Return fZ(Ki Or Kl)
- Case u: Return fZ(Kg Or Kl)
- Case r: Return fZ(Ki Or Kg)
- Case Else: Return fZ(Ki Or Kg Or Kl)
- End Select
- Case Else
- Select Case N3(n)
- Case d: Return fZ(Ki Or Ke Or Kl)
- Case l: Return fZ(Ki Or Kg Or Kl)
- Case r: Return fZ(Ki Or Kg Or Ke)
- Case u: Return fZ(Kg Or Ke Or Kl)
- Case Else: Return fZ(Ki Or Kg Or Ke Or Kl)
- End Select
- End Select
-End Function
-
-Sub solve()
- If fN() Then
- Exit Sub
- Else
- n = 0
- nn += 1
- solve()
- End If
-End Sub
-
-Function createPuzzle(Byval j As Integer) As Ulongint
- Dim As Ulongint q = &h123456789abcdef0ULL
- Dim As String h = Hex(q, 16)
- Dim As Integer z, d, r, u = 0
- While j > 0 ' number of moves to do
- Do
- d = Int(Rnd * 4) + 1
- Loop While d = u
- u = -d
- r = Int(Rnd * 3) + 1
- While r > 0
- z = Instr(h, "0")
- Select Case d
- Case 1 ' -1
- If (z Mod 4) <> 1 Then
- Mid(h, z, 1) = Mid(h, z - 1, 1)
- Mid(h, z - 1, 1) = "0"
- j -= 1
- End If
- Case 2 ' +1
- If (z Mod 4) <> 0 Then
- Mid(h, z, 1) = Mid(h, z + 1, 1)
- Mid(h, z + 1, 1) = "0"
- j -= 1
- End If
- Case 3 ' -4
- If z >= 5 Then
- Mid(h, z, 1) = Mid(h, z - 4, 1)
- Mid(h, z - 4, 1) = "0"
- j -= 1
- End If
- Case 4 ' +4
- If z <= 12 Then
- Mid(h, z, 1) = Mid(h, z + 4, 1)
- Mid(h, z + 4, 1) = "0"
- j -= 1
- End If
- End Select
- r -= 1
- Wend
- Wend
- Return Valulng("&h" + h)
-End Function
-
-Sub ShowConfiguration(Byval h As String, i As Integer)
- Dim As Integer r, c
- Dim x As String
- Color 14
- For r = 1 To 4
- For c = 1 To 4
- x = Mid(h, r * 4 - 4 + c, 1)
- If x = "0" Then x = " "
- Locate r + i, c + c - 1: Print x;
- Next
- Next
- Color 7
-End Sub
-
-Sub shoWMoves(Byval h As String, Byval s As String, Byval m As Integer, Byval p As Integer)
- Dim As Integer j, z, d
- ShowConfiguration(h, 12)
- For j = 1 To m
- d = Asc(Mid(s, j, 1))
- z = Instr(h, "0")
- Select Case d
- Case l
- If (z Mod 4) <> 1 Then
- Mid(h, z, 1) = Mid(h, z - 1, 1)
- Mid(h, z - 1, 1) = "0"
- End If
- Case r
- If (z Mod 4) <> 0 Then
- Mid(h, z, 1) = Mid(h, z + 1, 1)
- Mid(h, z + 1, 1) = "0"
- End If
- Case u
- If z >= 5 Then
- Mid(h, z, 1) = Mid(h, z - 4, 1)
- Mid(h, z - 4, 1) = "0"
- End If
- Case d
- If z <= 12 Then
- Mid(h, z, 1) = Mid(h, z + 4, 1)
- Mid(h, z + 4, 1) = "0"
- End If
- End Select
- ShowConfiguration(h, 12)
- Sleep p
- Next
- Print
-End Sub
-
-Sub fifteenSolver(Byval g As Ulongint, Byval p As Integer)
- Dim As String h, s
- Dim As Integer j
- Dim As Double t0 = Timer
- n = 0
- nn = 0
- h = Hex(g, 16)
- Cls
- Print "Puzzle: "; Lcase(h)
- ShowConfiguration(h, 2)
- Print Chr(10)
- N0(0) = Instr(h, "0") - 1
- N2(0) = g
- solve()
- Print Using "Solution found in & moves: "; n;
- For j = 1 To n
- s &= Chr(N3(j))
- Next
- Print s
- Print Using !"\nTook ###.######## seconds on i5 @ 3.20 GHz"; Timer - t0
- If p Then showMoves(h, s, n, p)
-End Sub
-
-fifteenSolver(&hfe169b4c0a73d852ULL, 1000)
-
-Sleep
diff --git a/Task/15-puzzle-solver/FutureBasic/15-puzzle-solver.basic b/Task/15-puzzle-solver/FutureBasic/15-puzzle-solver.basic
deleted file mode 100644
index 16a309133a..0000000000
--- a/Task/15-puzzle-solver/FutureBasic/15-puzzle-solver.basic
+++ /dev/null
@@ -1,165 +0,0 @@
-// 15 Puzzle Solver
-//https://rosettacode.org/wiki/15_puzzle_solver
-// Requires FutureBasic 7.0.30 or later
-
-begin globals
- int Nr(15), Nc(15), n, un, N0(99), N3(99), N4(99)
- UInt64 N2(99)
-end globals
-
-def fn fY as BOOL
-void def fn fI
-void def fn fG
-void def fn fE
-void def fn fL
-
-local fn fN1 as BOOL
- if ( N3(n) != _"u" && N0(n) / 4 < 3 )
- fn fI
- n++
- if ( fn fY ) then return YES
- n--
- end if
-
- if ( N3(n) != _"d" && N0(n) / 4 > 0 )
- fn fG
- n++
- if ( fn fY ) then return YES
- n--
- end if
-
- if ( N3(n) != _"l" && N0(n) % 4 < 3 )
- fn fE
- n++
- if ( fn fY ) then return YES
- n--
- end if
-
- if ( N3(n) != _"r" && N0(n) %4 > 0 )
- fn fL
- n++
- if ( fn fY ) then return YES
- n--
- end if
-end fn = NO
-
-void local fn fI
- int g = ( 11 - N0(n)) * 4
- UInt64 a = N2(n) & ((UInt64)15 << g)
- N0(n + 1) = N0(n) + 4
- N2(n + 1) = N2(n) - a + (a << 16)
- N3(n + 1) = _"d"
- if ( Nr(a >> g) <= N0(n) / 4 )
- N4(n + 1) = N4(n)
- else
- N4(n + 1) = N4(n) + 1
- end if
-end fn
-
-void local fn fG
- int g = (19 - N0(n)) * 4
- UInt64 a = N2(n) & ((UInt64)15 << g)
- N0(n + 1) = N0(n) - 4
- N2(n + 1) = N2(n) - a + (a >> 16)
- N3(n + 1) = _"u"
- if ( Nr(a >> g) >= N0(n) / 4 )
- N4(n + 1) = N4(n)
- else
- N4(n + 1) = N4(n) + 1
- end if
-end fn
-
-void local fn fE
- int g = (14 - N0(n)) * 4
- UInt64 a = N2(n) & ((UInt64)15 << g)
- N0(n + 1) = N0(n) + 1
- N2(n + 1) = N2(n) - a + (a << 4)
- N3(n + 1) = _"r"
- if ( Nc(a >> g) <= N0(n) % 4 )
- N4(n + 1) = N4(n)
- else
- N4(n + 1) = N4(n) + 1
- end if
-end fn
-
-void local fn fL
- int g = (16 - N0(n)) * 4
- UInt64 a = N2(n) & ((UInt64)15 << g)
- N0(n + 1) = N0(n) - 1
- N2(n + 1) = N2(n) - a + (a >> 4)
- N3(n + 1) = _"l"
- if ( Nc(a >> g) >= N0(n) % 4 )
- N4(n + 1) = N4(n)
- else
- N4(n + 1) = N4(n) + 1
- end if
-end fn
-
-local fn fY as BOOL
- if ( N4(n) < un ) then return fn fN1
- if ( N2(n) == 0x123456789abcdef0 )
- printf @"Solution found in %d moves:",n
- for int g = 1 to n
- printf @"%c\b",N3(g)
- next
- print
- return YES
- end if
- if ( N4(n) == un ) then return fn fN1
-end fn = NO
-
-void local fn Solve( initN as int, initG as UInt64 )
- int tempNr(15) = {3,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3}
- int tempNc(15) = {3,0,1,2,3,0,1,2,3,0,1,2,3,0,1,2}
-
- fn memcpy(@Nr(0),@tempNr(0),sizeof(int)*16)
- fn memcpy(@Nc(0),@tempNc(0),sizeof(int)*16)
-
- n = 0
- un = 0
-
- N0(0) = initN
- N2(0) = initG
-
- while ( !fn fY )
- un++
- wend
-end fn
-
-
-window 1, @"15 Puzzle Solver"
-windowcenter(1)
-WindowSetBackgroundColor(1,fn ColorBlack)
-
-text ,14,fn colorWhite
-Print "Puzzle: "; "fe169b4c0a73d852"
-
-text ,14,fn colorYellow
-print
-print @"15 14 1 6"
-print @" 9 11 4 12"
-print @" 0 10 7 3"
-print @"13 8 5 2"
-print
-text ,14,fn colorWhite
-
-CFStringRef ComputerChip = unix @"sysctl -n machdep.cpu.brand_string"
-
-CFTimeInterval t : t = fn CACurrentMediaTime
-fn Solve( 8, 0xfe169b4c0a73d852 )
-CFTimeInterval CurrentTime = fn CACurrentMediaTime-t
-
-print
-text ,14,fn colorYellow
-print
-print @" 1 2 3 4"
-print @" 5 6 7 8"
-print @" 9 10 11 12"
-print @"13 14 15 0"
-print
-text ,14,fn colorWhite
-
-print : printf @"Compute time: %.3f seconds",(CurrentTime)
-print ComputerChip
-
-HandleEvents
diff --git a/Task/15-puzzle-solver/JavaScript/15-puzzle-solver.js b/Task/15-puzzle-solver/JavaScript/15-puzzle-solver.js
deleted file mode 100644
index 1904d1d75b..0000000000
--- a/Task/15-puzzle-solver/JavaScript/15-puzzle-solver.js
+++ /dev/null
@@ -1,97 +0,0 @@
-class FifteenSolver {
- constructor(n, g) {
- this.Nr = [3,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3];
- this.Nc = [3,0,1,2,3,0,1,2,3,0,1,2,3,0,1,2];
- this.n = 0;
- this._n = 0;
- this.N0 = new Array(100).fill(0);
- this.N3 = new Array(100).fill('');
- this.N4 = new Array(100).fill(0);
- this.N2 = new Array(100).fill(0n);
- this.N0[0] = n;
- this.N2[0] = BigInt(g);
- }
-
- fY() {
- if (this.N4[this.n] < this._n) return this.fN();
- if (this.N2[this.n] === 0x123456789abcdef0n) {
- let moves = '';
- for (let g = 1; g <= this.n; g++) moves += this.N3[g];
- console.log(`Solution found in ${this.n} moves: ${moves}`);
- return true;
- }
- if (this.N4[this.n] === this._n) return this.fN();
- return false;
- }
-
- fN() {
- if (this.N3[this.n] !== 'u' && Math.floor(this.N0[this.n]/4) < 3) {
- this.fI();
- this.n++;
- if (this.fY()) return true;
- this.n--;
- }
- if (this.N3[this.n] !== 'd' && Math.floor(this.N0[this.n]/4) > 0) {
- this.fG();
- this.n++;
- if (this.fY()) return true;
- this.n--;
- }
- if (this.N3[this.n] !== 'l' && this.N0[this.n]%4 < 3) {
- this.fE();
- this.n++;
- if (this.fY()) return true;
- this.n--;
- }
- if (this.N3[this.n] !== 'r' && this.N0[this.n]%4 > 0) {
- this.fL();
- this.n++;
- if (this.fY()) return true;
- this.n--;
- }
- return false;
- }
-
- fI() {
- const g = (11 - this.N0[this.n]) * 4;
- const a = this.N2[this.n] & (15n << BigInt(g));
- this.N0[this.n + 1] = this.N0[this.n] + 4;
- this.N2[this.n + 1] = this.N2[this.n] - a + (a << 16n);
- this.N3[this.n + 1] = 'd';
- this.N4[this.n + 1] = this.N4[this.n] + (this.Nr[Number(a >> BigInt(g))] <= Math.floor(this.N0[this.n]/4) ? 0 : 1);
- }
-
- fG() {
- const g = (19 - this.N0[this.n]) * 4;
- const a = this.N2[this.n] & (15n << BigInt(g));
- this.N0[this.n + 1] = this.N0[this.n] - 4;
- this.N2[this.n + 1] = this.N2[this.n] - a + (a >> 16n);
- this.N3[this.n + 1] = 'u';
- this.N4[this.n + 1] = this.N4[this.n] + (this.Nr[Number(a >> BigInt(g))] >= Math.floor(this.N0[this.n]/4) ? 0 : 1);
- }
-
- fE() {
- const g = (14 - this.N0[this.n]) * 4;
- const a = this.N2[this.n] & (15n << BigInt(g));
- this.N0[this.n + 1] = this.N0[this.n] + 1;
- this.N2[this.n + 1] = this.N2[this.n] - a + (a << 4n);
- this.N3[this.n + 1] = 'r';
- this.N4[this.n + 1] = this.N4[this.n] + (this.Nc[Number(a >> BigInt(g))] <= this.N0[this.n]%4 ? 0 : 1);
- }
-
- fL() {
- const g = (16 - this.N0[this.n]) * 4;
- const a = this.N2[this.n] & (15n << BigInt(g));
- this.N0[this.n + 1] = this.N0[this.n] - 1;
- this.N2[this.n + 1] = this.N2[this.n] - a + (a >> 4n);
- this.N3[this.n + 1] = 'l';
- this.N4[this.n + 1] = this.N4[this.n] + (this.Nc[Number(a >> BigInt(g))] >= this.N0[this.n]%4 ? 0 : 1);
- }
-
- solve() {
- while (!this.fY()) this._n++;
- }
-}
-
-const start = new FifteenSolver(8, '0xfe169b4c0a73d852');
-start.solve();
diff --git a/Task/15-puzzle-solver/Jq/15-puzzle-solver.jq b/Task/15-puzzle-solver/Jq/15-puzzle-solver.jq
deleted file mode 100644
index 0e7f033340..0000000000
--- a/Task/15-puzzle-solver/Jq/15-puzzle-solver.jq
+++ /dev/null
@@ -1,192 +0,0 @@
-# The following may be omitted if using the C implementation
-# or if the debug messages are deleted.
-def debug(msg): (msg | tostring | debug | empty), .;
-
-### Generic functions
-
-def array_swap($i; $j):
- if $j < $i then array_swap($j;$i)
- elif $i == $j then .
- else .[:$i] + [.[$j]] + .[$i+1:$j] + [.[$i]] + .[$j+1:]
- end ;
-
-def sum(s): reduce s as $x (0; . + $x);
-
-### The 15-Puzzle
-
-# manhattan distance between points $ix and $iy where these are indices in the flat array
-def distance($ix; $jx):
- def row: ./4 | floor;
- def col: . % 4;
- [$ix, $jx]
- | map(row) as $mr # [$ri, $rj]
- | map(col) as $mc # [$ci, $cj]
- | [$mr[0] - $mr[1], $mc[0] - $mc[1]]
- | map(length) # i.e. abs
- | add;
-
-# What is the Manhattan distance between the position of $tile in the goal
-# and the location corresponding to index $ix, where $ix is in range(0;16)
-def manhattan($tile; $ix):
- .position[$tile|tostring] as $jx
- | distance($ix; $jx);
-
-# The total of the discrepancies
-def total_manhattan_distance:
- sum( range(0;16) as $p | .board[$p] as $tile | select($tile != 0) | manhattan($tile; $p) )
- | debug;
-
-# Input:
-# .goal is the desired board (flat array)
-# .position is the JSON object mapping tiles to the goal index
-# .zero is the location of 0
-# .board is the current state of the board (flat array)
-# .distance is incremented by $delta after each move
-# .seen is our memory
-# If allowed, move the zero tile to $p where $p has been properly specified in relation to .zero;
-# otherwise emit empty
-def move($p):
- if $p >= 0 and $p < 16
- then .board[$p] as $tile
- # Are we making things worse off?
- | (manhattan($tile; .zero) - manhattan($tile; $p)) as $delta
- | if $delta > 0 and .distance > (.N - .n)
- then if .n >= .N then debug({n, N, distance,sequence: (.sequence|length)}) end | empty
- else # make the move
- .zero as $zero
- | (.board | array_swap($zero; $p)) as $candidate
- | ($candidate|tostring) as $s
- | if .seen[$s]
- then empty
- else .board = $candidate
- | .zero = $p
- | .n += 1
- | .seen[$s] = true
- end
- end
- # We should only reach here if the move has been made
- | if $delta != 0
- then .distance += $delta
- end
- else empty
- end
-;
-
-def row: . / 4 | floor;
-def col: . % 4;
-
-def up:
- if (.zero | row) == 0 then empty
- else move(.zero - 4)
- | .sequence += ["u"]
- end;
-
-def down:
- if (.zero | row) == 3 then empty
- else move(.zero + 4)
- | .sequence += ["d"]
- end;
-
-def left:
- if (.zero|col) == 0 then empty
- else move(.zero - 1)
- | .sequence += ["l"]
- end;
-
-def right:
- if (.zero|col) == 3 then empty
- else move(.zero + 1)
- | .sequence += ["r"]
- end;
-
-# $array is a permutation of range(0;16), e.g. the goal
-# Output: a JSON object such that .[$tile] is the position of $tile in the goal
-def positions($array):
- reduce range(0; $array|length) as $i ({}; . + {($array[$i]|tostring): $i});
-
-# map a string of lowercase hex digits to an array of decimals
-def symbols2array: explode | map(if . > 96 then .-87 else .-48 end);
-
-# $start should be a string of length 16 representing the starting state;
-# the goal is: "123456789abcdef0"
-def init($start):
- if $start|length == 16 then . else error end
- | [range(1;16), 0] as $init
- | {goal: $init,
- position: positions($init),
- distance: 0,
- n: 0, # number of moves so far
- sequence: [], # the sequence of moves so far
- seen: {}
- }
- | .board = ($start | symbols2array)
- | .zero = (.board|index(0))
- | (.board|tostring) as $s
- | .seen[$s] = true
-;
-
-# Output: If the move of the zero tile to $p is legal in one step,
-# then emit manhattan($tile; .zero) - manhattan($tile; $p)
-# where $tile is the tile at $p;
-# otherwise: null
-def delta_move($p):
- if $p >= 0 and $p < 16
- then distance($p; .zero) as $base
- | if ($base|length) == 1 # abs
- then .board[$p] as $tile
- | manhattan($tile; .zero) - manhattan($tile; $p)
- else null
- end
- else null
- end ;
-
-# For comparing the possible moves:
-def moves:
- {"u": delta_move( .zero - 4),
- "d": delta_move( .zero + 4),
- "l": delta_move( .zero - 1),
- "r": delta_move( .zero + 1) }
- | to_entries
- | map(select( .value ) )
- | sort_by(.value)
- ;
-
-
-# input: the output of moves
-def execute($moves):
- ($moves[] |.key) as $key
- | if $key == "l" then left
- elif $key == "r" then right
- elif $key == "u" then up
- elif $key == "d" then down
- else empty
- end;
-
-# $N is the maximum number of moves allowed
-# Input: as per `input`; .n is the number of moves so far
-def possible_moves($N):
- def possible_moves:
- if .board == .goal then . # a solution
- elif (.sequence|length) >= $N then empty
- else .sequence[-1] as $lastmove
- | if $lastmove == "l" then execute(moves | map(select(.key != "r")))
- elif $lastmove == "r" then execute(moves | map(select(.key != "l")))
- elif $lastmove == "u" then execute(moves | map(select(.key != "d")))
- elif $lastmove == "d" then execute(moves | map(select(.key != "u")))
- else execute(moves)
- end
- | possible_moves
- end ;
- possible_moves;
-
-def solve($goal):
- init($goal)
- | total_manhattan_distance as $d
- | first( range($d; 100) as $n
- | .N = $n
- | .distance = $d
- | debug("before: n=\($n) distance = \($d))")
- | possible_moves($n)
- | .sequence | join("") ) ;
-
-solve("fe169b4c0a73d852")
diff --git a/Task/15-puzzle-solver/Julia/15-puzzle-solver.jl b/Task/15-puzzle-solver/Julia/15-puzzle-solver.julia
similarity index 100%
rename from Task/15-puzzle-solver/Julia/15-puzzle-solver.jl
rename to Task/15-puzzle-solver/Julia/15-puzzle-solver.julia
diff --git a/Task/15-puzzle-solver/Mathematica/15-puzzle-solver.math b/Task/15-puzzle-solver/Mathematica/15-puzzle-solver.math
deleted file mode 100644
index 3a7bdde6e4..0000000000
--- a/Task/15-puzzle-solver/Mathematica/15-puzzle-solver.math
+++ /dev/null
@@ -1,178 +0,0 @@
-(* Constants for the correct ordering and board position mapping *)
-correctOrder = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0};
-rowOf = {0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3} + 1; (* +1 because Mathematica uses 1-based indexing *)
-colOf = {0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3} + 1; (* +1 because Mathematica uses 1-based indexing *)
-
-(* Function to estimate remaining moves using Manhattan distance *)
-EstimateMoves[board_] := Module[{h = 0},
- Do[
- (* Skip the empty tile (0) *)
- If[board[[i]] != 0,
- (* Find where this tile should be in the correct order *)
- correctPos = Position[correctOrder, board[[i]]][[1, 1]];
- (* Calculate Manhattan distance: |current_row - correct_row| + |current_col - correct_col| *)
- h += Abs[rowOf[[i]] - rowOf[[correctPos]]] + Abs[colOf[[i]] - colOf[[correctPos]]];
- ],
- {i, 1, 16}
- ];
- h
-]
-
-(* Find the position of the blank tile (0) *)
-FindBlankPosition[board_] := Position[board, 0][[1, 1]]
-
-(* Generate possible moves from current state *)
-GenerateMoves[board_, movesSoFar_] := Module[
- {blankPos, possibleMoves = {}, newBoard, newMoves},
-
- blankPos = FindBlankPosition[board];
-
- (* Check if we can move left (blank goes right) *)
- If[Mod[blankPos, 4] != 1,
- newBoard = board;
- newBoard[[blankPos]] = newBoard[[blankPos - 1]];
- newBoard[[blankPos - 1]] = 0;
- newMoves = movesSoFar <> "r";
- AppendTo[possibleMoves, {newBoard, newMoves, Length[newMoves] + EstimateMoves[newBoard]}];
- ];
-
- (* Check if we can move right (blank goes left) *)
- If[Mod[blankPos, 4] != 0,
- newBoard = board;
- newBoard[[blankPos]] = newBoard[[blankPos + 1]];
- newBoard[[blankPos + 1]] = 0;
- newMoves = movesSoFar <> "l";
- AppendTo[possibleMoves, {newBoard, newMoves, Length[newMoves] + EstimateMoves[newBoard]}];
- ];
-
- (* Check if we can move up (blank goes down) *)
- If[blankPos > 4,
- newBoard = board;
- newBoard[[blankPos]] = newBoard[[blankPos - 4]];
- newBoard[[blankPos - 4]] = 0;
- newMoves = movesSoFar <> "d";
- AppendTo[possibleMoves, {newBoard, newMoves, Length[newMoves] + EstimateMoves[newBoard]}];
- ];
-
- (* Check if we can move down (blank goes up) *)
- If[blankPos <= 12,
- newBoard = board;
- newBoard[[blankPos]] = newBoard[[blankPos + 4]];
- newBoard[[blankPos + 4]] = 0;
- newMoves = movesSoFar <> "u";
- AppendTo[possibleMoves, {newBoard, newMoves, Length[newMoves] + EstimateMoves[newBoard]}];
- ];
-
- possibleMoves
-]
-
-(* A* Search algorithm for solving the puzzle *)
-Solve15Puzzle[startBoard_] := Module[
- {openSet = {}, closedSet = {}, current, children, bestMoves = {}},
-
- (* Initialize the priority queue (Mathematica doesn't have a built-in priority queue,
- so we'll use a list and sort it each time) *)
- openSet = {{startBoard, "", EstimateMoves[startBoard]}};
-
- While[Length[openSet] > 0,
- (* Sort the open set by total estimated cost *)
- openSet = Sort[openSet, #1[[3]] < #2[[3]] &];
-
- (* Get the most promising state *)
- current = First[openSet];
- openSet = Rest[openSet];
-
- (* Check if we've reached the goal state *)
- If[current[[1]] == correctOrder,
- Print["Solution found!"];
- Print["Moves: ", current[[2]]];
- Print["Number of moves: ", StringLength[current[[2]]]];
- Print["Open set size: ", Length[openSet]];
- Print["Closed set size: ", Length[closedSet]];
-
- (* Format the final board *)
- Print["Final board:"];
- Print[Partition[current[[1]], 4]];
- Return[current[[2]]];
- ];
-
- (* Generate all possible moves from current state *)
- children = GenerateMoves[current[[1]], current[[2]]];
-
- (* Process each child state *)
- For[i = 1, i <= Length[children], i++,
- child = children[[i]];
- childBoard = child[[1]];
-
- (* Check if this board is already in the closed set *)
- If[Not[MemberQ[Map[First, closedSet], childBoard]],
- (* Check if this board is already in the open set *)
- existingIdx = Position[Map[First, openSet], childBoard];
-
- If[existingIdx == {},
- (* Add to open set if not already there *)
- AppendTo[openSet, child];
- ,
- (* Update if this path is better than existing one *)
- existingIdx = existingIdx[[1, 1]];
- If[StringLength[child[[2]]] < StringLength[openSet[[existingIdx, 2]]],
- openSet[[existingIdx]] = child;
- ];
- ];
- ];
- ];
-
- (* Add current state to closed set *)
- AppendTo[closedSet, current];
- ];
-
- Print["No solution found!"];
- Return[{}];
-]
-
-(* Example usage *)
-startingBoard = {15, 14, 1, 6, 9, 11, 4, 12, 0, 10, 7, 3, 13, 8, 5, 2};
-(* startingBoard = {0, 1, 2, 3, 5, 6, 7, 4, 9, 10, 11, 8, 13, 14, 15, 12}; *)
-
-solution = Solve15Puzzle[startingBoard];
-
-(* Pretty print function to visualize a board *)
-PrintBoard[board_] := Module[{},
- Grid[Partition[board, 4], Frame -> All]
-]
-
-(* Visualization code to show the solution step by step *)
-VisualizeSolution[startBoard_, moves_] := Module[
- {currentBoard = startBoard, frames = {PrintBoard[startBoard]}, blankPos},
-
- Do[
- blankPos = FindBlankPosition[currentBoard];
-
- Switch[StringTake[moves, {i}],
- "l", (* blank moves left *)
- currentBoard[[blankPos]] = currentBoard[[blankPos - 1]];
- currentBoard[[blankPos - 1]] = 0,
-
- "r", (* blank moves right *)
- currentBoard[[blankPos]] = currentBoard[[blankPos + 1]];
- currentBoard[[blankPos + 1]] = 0,
-
- "u", (* blank moves up *)
- currentBoard[[blankPos]] = currentBoard[[blankPos - 4]];
- currentBoard[[blankPos - 4]] = 0,
-
- "d", (* blank moves down *)
- currentBoard[[blankPos]] = currentBoard[[blankPos + 4]];
- currentBoard[[blankPos + 4]] = 0
- ];
-
- AppendTo[frames, PrintBoard[currentBoard]];
-
- ,{i, 1, StringLength[moves]}
- ];
-
- ListAnimate[frames]
-]
-
-(* Uncomment to visualize the solution *)
-(* If[solution != {}, VisualizeSolution[startingBoard, solution]]; *)
diff --git a/Task/15-puzzle-solver/PascalABC.NET/15-puzzle-solver.pas b/Task/15-puzzle-solver/PascalABC.NET/15-puzzle-solver.pas
deleted file mode 100644
index 36a40f7d75..0000000000
--- a/Task/15-puzzle-solver/PascalABC.NET/15-puzzle-solver.pas
+++ /dev/null
@@ -1,3 +0,0 @@
-// Игра в 15 PABCWork.NET\Samples\Games\15.pas
-see
-https://rosettacode.org/wiki/15_puzzle_game#PascalABC.NET
diff --git a/Task/15-puzzle-solver/R/15-puzzle-solver.r b/Task/15-puzzle-solver/R/15-puzzle-solver.r
deleted file mode 100644
index 624401ed4e..0000000000
--- a/Task/15-puzzle-solver/R/15-puzzle-solver.r
+++ /dev/null
@@ -1,239 +0,0 @@
-## ----- Constants (match Julia) -----
-Nr <- c(3, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3)
-Nc <- c(3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2)
-
-N0 <- integer(85)
-# N2 is a list of nibble vectors (each length 16, values 0..15, LSB-first)
-N2 <- vector("list", 85)
-N3 <- rep("", 85) # chars 'd','u','r','l'
-N4 <- integer(85)
-
-i <- 1L
-g <- 8L
-ee <- 2L
-l <- 4L
-.n <- 1L # scalar (Julia used a 1-element Vector{Int32})
-
-## ----- Helpers for nibble representation -----
-# Convert a 16-hex string like "fe169b4c0a73d852" to nibble vector (LSB first)
-hex_to_nibbles <- function(hexstr) {
- hexstr <- gsub("^0x", "", tolower(hexstr))
- stopifnot(nchar(hexstr) == 16)
- chars <- strsplit(hexstr, "")[[1]]
- lookup <- c(as.character(0:9), letters[1:6])
- to_val <- function(ch) match(ch, lookup) - 1L
- nibs_msbf <- vapply(chars, to_val, integer(1))
- rev(nibs_msbf)
-}
-
-
-# Compare two nibble vectors for equality
-nibbles_equal <- function(a, b) {
- if (is.null(a) || is.null(b)) return(FALSE)
- length(a) == length(b) && all(a == b)
-}
-
-# Extract nibble value at bit-offset gg (multiple of 4)
-# LSB-first indexing: position = gg/4, R index = pos+1
-get_nibble_at <- function(nibs, gg) {
- pos <- as.integer(gg / 4L)
- nibs[pos + 1L]
-}
-
-# Move nibble at position pos by delta positions (delta can be +/-1, +/-4)
-# Clears original pos (sets to 0), and adds the nibble to new position.
-move_nibble <- function(nibs, pos, delta) {
- src <- pos
- dst <- pos + delta
- if (dst < 0L || dst > 15L) stop("Nibble move out of bounds")
- v <- nibs[src + 1L]
- if (v == 0L) return(nibs) # nothing to move
- nibs[src + 1L] <- 0L
- nibs[dst + 1L] <- nibs[dst + 1L] + v # original code “-a + (a << …)” effectively relocates the nibble
- nibs
-}
-
-# (a >> gg) when a is a single-nibble mask at gg just yields that nibble value.
-# In our model we already read that nibble directly.
-
-## ----- Target and initial states (as nibbles) -----
-# Goal: 0x123456789abcdef0 => nibbles MSB→LSB: 1 2 3 4 5 6 7 8 9 a b c d e f 0
-GOAL <- hex_to_nibbles("123456789abcdef0")
-
-# Initial: 0xfe169b4c0a73d852 => nibbles MSB→LSB: f e 1 6 9 b 4 c 0 a 7 3 d 8 5 2
-INIT <- hex_to_nibbles("fe169b4c0a73d852")
-
-## ----- Core functions (translated) -----
-fY <- function(n) {
- if (nibbles_equal(N2[[n + 1L]], GOAL)) {
- return(list(ans = TRUE, n = n))
- }
- if (N4[n + 1L] <= .n) {
- return(fN(n))
- }
- list(ans = FALSE, n = n)
-}
-
-fZ <- function(w, n) {
- if (bitwAnd(w, i) > 0L) {
- n <- fI(n)
- tmp <- fY(n)
- if (tmp$ans) return(tmp)
- n <- n - 1L
- }
- if (bitwAnd(w, g) > 0L) {
- n <- fG(n)
- tmp <- fY(n)
- if (tmp$ans) return(tmp)
- n <- n - 1L
- }
- if (bitwAnd(w, ee) > 0L) {
- n <- fE(n)
- tmp <- fY(n)
- if (tmp$ans) return(tmp)
- n <- n - 1L
- }
- if (bitwAnd(w, l) > 0L) {
- n <- fL(n)
- tmp <- fY(n)
- if (tmp$ans) return(tmp)
- n <- n - 1L
- }
- list(ans = FALSE, n = n)
-}
-
-fN <- function(n) {
- x <- N0[n + 1L]
- y <- N3[n + 1L] # "d","u","r","l"
- if (x == 0L) {
- if (y == "l") return(fZ(i, n))
- else if (y == "u") return(fZ(ee, n))
- else return(fZ(i + ee, n))
- } else if (x == 3L) {
- if (y == "r") return(fZ(i, n))
- else if (y == "u") return(fZ(l, n))
- else return(fZ(i + l, n))
- } else if (x == 1L || x == 2L) {
- if (y == "l") return(fZ(i + l, n))
- else if (y == "r") return(fZ(i + ee, n))
- else if (y == "u") return(fZ(ee + l, n))
- else return(fZ(l + ee + i, n))
- } else if (x == 12L) {
- if (y == "l") return(fZ(g, n))
- else if (y == "d") return(fZ(ee, n))
- else return(fZ(ee + g, n))
- } else if (x == 15L) {
- if (y == "r") return(fZ(g, n))
- else if (y == "d") return(fZ(l, n))
- else return(fZ(g + l, n))
- } else if (x == 13L || x == 14L) {
- if (y == "l") return(fZ(g + l, n))
- else if (y == "r") return(fZ(ee + g, n))
- else if (y == "d") return(fZ(ee + l, n))
- else return(fZ(g + ee + l, n))
- } else if (x == 4L || x == 8L) {
- if (y == "l") return(fZ(i + g, n))
- else if (y == "u") return(fZ(g + ee, n))
- else if (y == "d") return(fZ(i + ee, n))
- else return(fZ(i + g + ee, n))
- } else if (x == 7L || x == 11L) {
- if (y == "d") return(fZ(i + l, n))
- else if (y == "u") return(fZ(g + l, n))
- else if (y == "r") return(fZ(i + g, n))
- else return(fZ(i + g + l, n))
- } else {
- if (y == "d") return(fZ(i + ee + l, n))
- else if (y == "l") return(fZ(i + g + l, n))
- else if (y == "r") return(fZ(i + g + ee, n))
- else if (y == "u") return(fZ(g + ee + l, n))
- else return(fZ(i + g + ee + l, n))
- }
-}
-
-# Down: take nibble at gg=(11-N0)*4 and move it left by 16 bits => +4 nibbles
-fI <- function(n) {
- gg <- (11L - N0[n + 1L]) * 4L
- pos <- as.integer(gg / 4L)
- a <- get_nibble_at(N2[[n + 1L]], gg)
- N0[n + 2L] <<- N0[n + 1L] + 4L
- N2[[n + 2L]] <<- move_nibble(N2[[n + 1L]], pos, +4L)
- N3[n + 2L] <<- "d"
- N4[n + 2L] <<- N4[n + 1L]
- cond <- Nr[a + 1L] <= (N0[n + 1L] %/% 4L)
- if (!cond) N4[n + 2L] <<- N4[n + 2L] + 1L
- n + 1L
-}
-
-# Up: gg=(19-N0)*4, move right by 16 bits => -4 nibbles
-fG <- function(n) {
- gg <- (19L - N0[n + 1L]) * 4L
- pos <- as.integer(gg / 4L)
- a <- get_nibble_at(N2[[n + 1L]], gg)
- N0[n + 2L] <<- N0[n + 1L] - 4L
- N2[[n + 2L]] <<- move_nibble(N2[[n + 1L]], pos, -4L)
- N3[n + 2L] <<- "u"
- N4[n + 2L] <<- N4[n + 1L]
- cond <- Nr[a + 1L] >= (N0[n + 1L] %/% 4L)
- if (!cond) N4[n + 2L] <<- N4[n + 2L] + 1L
- n + 1L
-}
-
-# Right: gg=(14-N0)*4, shift by +4 bits => +1 nibble
-fE <- function(n) {
- gg <- (14L - N0[n + 1L]) * 4L
- pos <- as.integer(gg / 4L)
- a <- get_nibble_at(N2[[n + 1L]], gg)
- N0[n + 2L] <<- N0[n + 1L] + 1L
- N2[[n + 2L]] <<- move_nibble(N2[[n + 1L]], pos, +1L)
- N3[n + 2L] <<- "r"
- N4[n + 2L] <<- N4[n + 1L]
- cond <- Nc[a + 1L] <= (N0[n + 1L] %% 4L)
- if (!cond) N4[n + 2L] <<- N4[n + 2L] + 1L
- n + 1L
-}
-
-# Left: gg=(16-N0)*4, shift by -4 bits => -1 nibble
-fL <- function(n) {
- gg <- (16L - N0[n + 1L]) * 4L
- pos <- as.integer(gg / 4L)
- a <- get_nibble_at(N2[[n + 1L]], gg)
- N0[n + 2L] <<- N0[n + 1L] - 1L
- N2[[n + 2L]] <<- move_nibble(N2[[n + 1L]], pos, -1L)
- N3[n + 2L] <<- "l"
- N4[n + 2L] <<- N4[n + 1L]
- cond <- Nc[a + 1L] >= (N0[n + 1L] %% 4L)
- if (!cond) N4[n + 2L] <<- N4[n + 2L] + 1L
- n + 1L
-}
-
-solve_fn <- function(n) {
- tmp <- fN(n)
- ans <- tmp$ans
- n <- tmp$n
- if (ans) {
- cat(sprintf("Solution found in %d moves:\n", n))
- if (n >= 1L) {
- cat(paste0(N3[2:(n + 1L)], collapse = ""), "\n")
- } else {
- cat("\n")
- }
- } else {
- cat(sprintf("next iteration, .n will be %d...\n", .n + 1L))
- n <<- 0L
- .n <<- .n + 1L
- solve_fn(n)
- }
-}
-
-run <- function() {
- N0[1L] <<- 8L
- .n <<- 1L
- N2[[1L]] <<- INIT
- # carry forward initial defaults
- N3[1L] <<- ""
- N4[1L] <<- 0L
- solve_fn(0L)
-}
-
-# Execute
-run()
diff --git a/Task/15-puzzle-solver/Rust/15-puzzle-solver-1.rs b/Task/15-puzzle-solver/Rust/15-puzzle-solver-1.rust
similarity index 100%
rename from Task/15-puzzle-solver/Rust/15-puzzle-solver-1.rs
rename to Task/15-puzzle-solver/Rust/15-puzzle-solver-1.rust
diff --git a/Task/15-puzzle-solver/Rust/15-puzzle-solver-2.rs b/Task/15-puzzle-solver/Rust/15-puzzle-solver-2.rust
similarity index 100%
rename from Task/15-puzzle-solver/Rust/15-puzzle-solver-2.rs
rename to Task/15-puzzle-solver/Rust/15-puzzle-solver-2.rust
diff --git a/Task/15-puzzle-solver/Uiua/15-puzzle-solver.uiua b/Task/15-puzzle-solver/Uiua/15-puzzle-solver.uiua
deleted file mode 100644
index 2ee70f4190..0000000000
--- a/Task/15-puzzle-solver/Uiua/15-puzzle-solver.uiua
+++ /dev/null
@@ -1,37 +0,0 @@
-# Solve a 15 puzzle https://rosettacode.org/wiki/15_puzzle_solver#Uiua
-T ← ↯4_4 ↻1⇡16
-Pos ← ≡(⊢⊚⌕)↘1⇡16¤ # Positions of the numbers (not 0)
-
-# Applying a very gentle weighting to certain cells massively
-# speeds up the algorithm
-Weights ← [[2 1 1 2] [2 1 1 2] [2 1 1 2] [2 1 1 1]]
-Distance ← /+×⊡: Weights :≡/+⌵-⊙.∩Pos
-Heuristic ← Distance T
-
-Nfour ← [[1 0] [¯1 0] [0 1] [0 ¯1]]
-
-ValidN ← ≡⊟⊙¤▽≡/↧×⊃(≡₀<4|≡₀≥0).+Nfour¤. # Actual neighbours at a point.
-ValidNs ← ⊞(□ValidN⊟).⇡4 # Precalculate them.
-
-Moves ← °□⊡:ValidNs⊢⊚⌕0 # Get valid (from to) moves from grid.
-Swap ← ⍜⊡⇌ # Swap the values at the indexes
-Next ← ⊸≡⋅1 ≡Swap⊙¤⊸Moves # Next positions, set costs=1
-
-Solve ← (
- &p$"Solving: _".
- ⍜now (⊢path(Next|≍|Heuristic):T)
- &p$"_ seconds"
- ≡/-⧈∘2◇≡(⊢⊚⌕0)⇌⊢ # Track the movement of the 0
- ⇌˜≡get¤mapNfour"udlr" # Map to directions
-)
-
-# Uncomment one of the following lines to try these grids
-# ⍥(Swap⊡⊸(⌊×⚂⧻)⊸Moves)90 T
-# [[2 14 6 4] [5 1 3 8] [9 10 7 11] [13 0 15 12]] # Simple 40 shuffles
-# [[5 1 2 3] [6 10 7 4] [13 9 11 8] [14 0 15 12]] # Simple 12 steps
-# [[9 1 2 4] [13 6 5 7] [3 11 14 15] [10 0 8 12]] # 34 steps
-# [[10 3 1 4] [13 5 8 7] [9 6 0 11] [14 15 12 2]] # 38 steps (a few seconds)
-[[15 14 1 6] [9 11 4 12] [0 10 7 3] [13 8 5 2]] # Main Challenge
-# [[0 12 9 13] [15 11 10 14] [3 7 2 5] [4 8 6 1]] # Extra Credit
-
-Solve
diff --git a/Task/15-puzzle-solver/V-(Vlang)/15-puzzle-solver.v b/Task/15-puzzle-solver/V-(Vlang)/15-puzzle-solver.v
deleted file mode 100644
index 35fa9515b9..0000000000
--- a/Task/15-puzzle-solver/V-(Vlang)/15-puzzle-solver.v
+++ /dev/null
@@ -1,194 +0,0 @@
-import strconv
-
-struct FifteenSolver {
- mut:
- n int
- n1 int
- n0 []int
- n2 []u64
- n3 []rune
- n4 []int
- xx u64
-}
-
-const nr = [3, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3]
-const nc = [3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2]
-const i_flag = 1
-const g_flag = 8
-const e_flag = 2
-const l_flag = 4
-const fifteen = u64(15)
-
-fn u64_from_hex(s string) u64 {
- return strconv.parse_uint(s, 16, 64) or { 0 }
-}
-
-fn (mut fs FifteenSolver) f_y() bool {
- if fs.n2[fs.n] == fs.xx { return true }
- if fs.n4[fs.n] <= fs.n1 { return fs.f_n() }
- return false
-}
-
-fn (mut fs FifteenSolver) f_i() {
- g := (11 - fs.n0[fs.n]) * 4
- a := fs.n2[fs.n] & (fifteen << g)
- fs.n0[fs.n + 1] = fs.n0[fs.n] + 4
- fs.n2[fs.n + 1] = fs.n2[fs.n] - a + (a << 16)
- fs.n3[fs.n + 1] = `d`
- fs.n4[fs.n + 1] = fs.n4[fs.n]
- cond := nr[(a >> g) & 0xF] <= (fs.n0[fs.n] >> 2)
- if !cond { fs.n4[fs.n + 1] = fs.n4[fs.n + 1] + 1 }
- fs.n++
-}
-
-fn (mut fs FifteenSolver) f_g() {
- g := (19 - fs.n0[fs.n]) * 4
- a := fs.n2[fs.n] & (fifteen << g)
- fs.n0[fs.n + 1] = fs.n0[fs.n] - 4
- fs.n2[fs.n + 1] = fs.n2[fs.n] - a + (a >> 16)
- fs.n3[fs.n + 1] = `u`
- fs.n4[fs.n + 1] = fs.n4[fs.n]
- cond := nr[(a >> g) & 0xF] >= (fs.n0[fs.n] >> 2)
- if !cond { fs.n4[fs.n + 1] = fs.n4[fs.n + 1] + 1 }
- fs.n++
-}
-
-fn (mut fs FifteenSolver) f_e() {
- g := (14 - fs.n0[fs.n]) * 4
- a := fs.n2[fs.n] & (fifteen << g)
- fs.n0[fs.n + 1] = fs.n0[fs.n] + 1
- fs.n2[fs.n + 1] = fs.n2[fs.n] - a + (a << 4)
- fs.n3[fs.n + 1] = `r`
- fs.n4[fs.n + 1] = fs.n4[fs.n]
- cond := nc[(a >> g) & 0xF] <= fs.n0[fs.n] % 4
- if !cond { fs.n4[fs.n + 1] = fs.n4[fs.n + 1] + 1 }
- fs.n++
-}
-
-fn (mut fs FifteenSolver) f_l() {
- g := (16 - fs.n0[fs.n]) * 4
- a := fs.n2[fs.n] & (fifteen << g)
- fs.n0[fs.n + 1] = fs.n0[fs.n] - 1
- fs.n2[fs.n + 1] = fs.n2[fs.n] - a + (a >> 4)
- fs.n3[fs.n + 1] = `l`
- fs.n4[fs.n + 1] = fs.n4[fs.n]
- cond := nc[(a >> g) & 0xF] >= fs.n0[fs.n] % 4
- if !cond { fs.n4[fs.n + 1] = fs.n4[fs.n + 1] + 1 }
- fs.n++
-}
-
-fn (mut fs FifteenSolver) f_z(w int) bool {
- if w & i_flag > 0 {
- fs.f_i()
- if fs.f_y() { return true }
- fs.n--
- }
- if w & g_flag > 0 {
- fs.f_g()
- if fs.f_y() { return true }
- fs.n--
- }
- if w & e_flag > 0 {
- fs.f_e()
- if fs.f_y() { return true }
- fs.n--
- }
- if w & l_flag > 0 {
- fs.f_l()
- if fs.f_y() { return true }
- fs.n--
- }
- return false
-}
-
-fn (mut fs FifteenSolver) f_n() bool {
- p0 := fs.n0[fs.n]
- p3 := fs.n3[fs.n]
- return match p0 {
- 0 {
- if p3 == `l` { fs.f_z(i_flag) }
- else if p3 == `u` { fs.f_z(e_flag) }
- else { fs.f_z(i_flag + e_flag) }
- }
- 3 {
- if p3 == `r` { fs.f_z(i_flag) }
- else if p3 == `u` { fs.f_z(l_flag) }
- else { fs.f_z(i_flag + l_flag) }
- }
- 1, 2 {
- if p3 == `l` { fs.f_z(i_flag + l_flag) }
- else if p3 == `r` { fs.f_z(i_flag + e_flag) }
- else if p3 == `u` { fs.f_z(e_flag + l_flag) }
- else { fs.f_z(l_flag + e_flag + i_flag) }
- }
- 12 {
- if p3 == `l` { fs.f_z(g_flag) }
- else if p3 == `d` { fs.f_z(e_flag) }
- else { fs.f_z(e_flag + g_flag) }
- }
- 15 {
- if p3 == `r` { fs.f_z(g_flag) }
- else if p3 == `d` { fs.f_z(l_flag) }
- else { fs.f_z(g_flag + l_flag) }
- }
- 13, 14 {
- if p3 == `l` { fs.f_z(g_flag + l_flag) }
- else if p3 == `r` { fs.f_z(e_flag + g_flag) }
- else if p3 == `d` { fs.f_z(e_flag + l_flag) }
- else { fs.f_z(g_flag + e_flag + l_flag) }
- }
- 4, 8 {
- if p3 == `l` { fs.f_z(i_flag + g_flag) }
- else if p3 == `u` { fs.f_z(g_flag + e_flag) }
- else if p3 == `d` { fs.f_z(i_flag + e_flag) }
- else { fs.f_z(i_flag + g_flag + e_flag) }
- }
- 7, 11 {
- if p3 == `d` { fs.f_z(i_flag + l_flag) }
- else if p3 == `u` { fs.f_z(g_flag + l_flag) }
- else if p3 == `r` { fs.f_z(i_flag + g_flag) }
- else { fs.f_z(i_flag + g_flag + l_flag) }
- }
- else {
- if p3 == `d` { fs.f_z(i_flag + e_flag + l_flag) }
- else if p3 == `l` { fs.f_z(i_flag + g_flag + l_flag) }
- else if p3 == `r` { fs.f_z(i_flag + g_flag + e_flag) }
- else if p3 == `u` { fs.f_z(g_flag + e_flag + l_flag) }
- else { fs.f_z(i_flag + g_flag + e_flag + l_flag) }
- }
- }
-}
-
-fn (mut fs FifteenSolver) fifteen_solver(n_val int, g_val u64) {
- fs.n0[0] = n_val
- fs.n2[0] = g_val
- fs.n4[0] = 0
-}
-
-fn (mut fs FifteenSolver) solve() {
- if fs.f_n() {
- println("Solution found in $fs.n moves: ")
- for g in 1 .. fs.n + 1 {
- print(fs.n3[g].str())
- }
- println("")
- } else {
- fs.n = 0
- fs.n1++
- fs.solve()
- }
-}
-
-fn main() {
- mut fs := FifteenSolver{
- n0: []int{len: 85, init: 0}
- n2: []u64{len: 85, init: 0}
- n3: []rune{len: 85, init: ` `}
- n4: []int{len: 85, init: 0}
- n: 0
- n1: 0
- xx: u64_from_hex("123456789abcdef0")
- }
- fs.fifteen_solver(8, u64_from_hex("fe169b4c0a73d852"))
- fs.solve()
-}
diff --git a/Task/15-puzzle-solver/Zig/15-puzzle-solver.zig b/Task/15-puzzle-solver/Zig/15-puzzle-solver.zig
deleted file mode 100644
index e566437561..0000000000
--- a/Task/15-puzzle-solver/Zig/15-puzzle-solver.zig
+++ /dev/null
@@ -1,187 +0,0 @@
-const std = @import("std");
-const Allocator = std.mem.Allocator;
-const ArrayList = std.ArrayList;
-const PriorityQueue = std.PriorityQueue;
-const AutoHashMap = std.AutoHashMap;
-
-// Constants for the puzzle
-const CORRECT_ORDER = [16]u8{ 1,2,3,4, 5,6,7,8, 9,10,11,12, 13,14,15,0 };
-const ROW = [16]i32{ 0,0,0,0, 1,1,1,1, 2,2,2,2, 3,3,3,3 };
-const COLUMN = [16]i32{ 0,1,2,3, 0,1,2,3, 0,1,2,3, 0,1,2,3 };
-
-// State struct to represent the puzzle state
-const State = struct {
- est_tot_moves: u8,
- moves: []u8,
- est_moves_rem: u8,
- allocator: Allocator,
-
- pub fn init(allocator: Allocator, order: [16]u8) !State {
- return State{
- .est_tot_moves = estimate_moves(order),
- .moves = try allocator.dupe(u8, ""), // empty
- .est_moves_rem = estimate_moves(order),
- .allocator = allocator,
- };
- }
-
- pub fn deinit(self: *State) void {
- self.allocator.free(self.moves);
- }
-};
-
-// BoardState represents the entire game state
-const BoardState = struct {
- order: [16]u8,
- state: State,
-};
-
-// Find the index of a tile in the order array
-fn findIndex(order: [16]u8, tile: u8) usize {
- var i: usize = 0;
- for (order) |v| {
- if (v == tile) return i;
- i += 1;
- }
- @panic("findIndex: tile not found");
-}
-
-// Estimate the number of moves (Manhattan distance)
-fn estimate_moves(current: [16]u8) u8 {
- var h: u8 = 0;
- for (current) |tile| {
- const ci = findIndex(current, tile);
- const gi = findIndex(CORRECT_ORDER, tile);
- const rd = @abs(ROW[ci] - ROW[gi]);
- const cd = @abs(COLUMN[ci] - COLUMN[gi]);
- h += @as(u8, @intCast(rd + cd));
- }
- return h;
-}
-
-// Make a single move (swap hole with neighbor)
-fn makeMove(
- allocator: Allocator,
- parent: *const State,
- order: [16]u8,
- dir: u8,
- idx: usize,
- new_idx: usize,
-) !BoardState {
- var new_order = order;
- new_order[idx] = order[new_idx];
- new_order[new_idx] = order[idx];
-
- const rem = estimate_moves(new_order);
- const mv: [1]u8 = .{dir};
- const combined = try std.mem.concat(allocator, u8, &[_][]const u8{ parent.moves, &mv });
-
- return BoardState{
- .order = new_order,
- .state = State{
- .est_tot_moves = @as(u8, @intCast(combined.len)) + rem,
- .moves = combined,
- .est_moves_rem = rem,
- .allocator = allocator,
- },
- };
-}
-
-// Generate all children from a parent (takes *const so we don't double-free)
-fn generateChildren(allocator: Allocator, parent: *const BoardState) !ArrayList(BoardState) {
- var children = ArrayList(BoardState).init(allocator);
- const hole = findIndex(parent.order, 0);
-
- if (COLUMN[hole] > 0) {
- const c = try makeMove(allocator, &parent.state, parent.order, 'l', hole, hole - 1);
- try children.append(c);
- }
- if (COLUMN[hole] < 3) {
- const c = try makeMove(allocator, &parent.state, parent.order, 'r', hole, hole + 1);
- try children.append(c);
- }
- if (ROW[hole] > 0) {
- const c = try makeMove(allocator, &parent.state, parent.order, 'u', hole, hole - 4);
- try children.append(c);
- }
- if (ROW[hole] < 3) {
- const c = try makeMove(allocator, &parent.state, parent.order, 'd', hole, hole + 4);
- try children.append(c);
- }
-
- return children;
-}
-
-// Compare function for priority queue
-fn boardCompare(_: void, a: BoardState, b: BoardState) std.math.Order {
- return std.math.order(a.state.est_tot_moves, b.state.est_tot_moves);
-}
-
-// Hash an order into a u64
-fn hashOrder(order: [16]u8) u64 {
- var r: u64 = 0;
- for (order) |v| r = (r << 4) | v;
- return r;
-}
-
-pub fn main() !void {
- var gpa = std.heap.GeneralPurposeAllocator(.{}){};
- defer _ = gpa.deinit();
- const allocator = gpa.allocator();
-
- var open_states = PriorityQueue(BoardState, void, boardCompare).init(allocator, {});
- defer {
- while (open_states.count() > 0) {
- var item = open_states.remove();
- item.state.deinit();
- }
- open_states.deinit();
- }
-
- var closed_states = AutoHashMap(u64, void).init(allocator);
- defer closed_states.deinit();
-
- const start_order = [16]u8{15,14,1,6,9,11,4,12, 0,10,7,3,13,8,5,2};
- const initial_state = try State.init(allocator, start_order);
- try open_states.add(BoardState{ .order = start_order, .state = initial_state });
-
- const stdout = std.io.getStdOut().writer();
-
- while (open_states.count() > 0) {
- var current = open_states.remove();
-
- // goal check
- if (std.mem.eql(u8, ¤t.order, &CORRECT_ORDER)) {
- try stdout.print(
- "Open: {d}, Closed: {d}, Moves: {d}\n",
- .{ open_states.count(), closed_states.count(), current.state.moves.len },
- );
- try stdout.print("Path: {s}\n", .{ current.state.moves });
- current.state.deinit();
- break;
- }
-
- const h = hashOrder(current.order);
- if (closed_states.contains(h)) {
- current.state.deinit();
- continue;
- }
- try closed_states.put(h, {});
-
- var children = try generateChildren(allocator, ¤t);
- defer children.deinit();
-
- // ↓ Here’s the fix: shadow each child into a mutable `var child`
- for (children.items) |child| {
- var my_child = child; // now `child.state.deinit()` sees a `*State`, not `*const State`
- const ch = hashOrder(my_child.order);
- if (closed_states.contains(ch)) {
- my_child.state.deinit();
- continue;
- }
- try open_states.add(my_child);
- }
-
- current.state.deinit();
- }
-}
diff --git a/Task/2048/Ada/2048.adb b/Task/2048/Ada/2048.ada
similarity index 100%
rename from Task/2048/Ada/2048.adb
rename to Task/2048/Ada/2048.ada
diff --git a/Task/2048/BQN/2048.bqn b/Task/2048/BQN/2048.bqn
index cb0a27ed3b..a73e95c7b4 100644
--- a/Task/2048/BQN/2048.bqn
+++ b/Task/2048/BQN/2048.bqn
@@ -15,7 +15,7 @@ Spawn←{i←•rand.Range∘≠⊸⊑(0⊸= /○⥊ ↕∘≢)𝕩 ⋄ (•rand
Lose←Left∘Right∘Down∘Up⊸≡ # Losing condition, no moves change the board
Win←∨´·∨˝2048⊸= # Winning condition, 2048!
-Quit←{•Out e∾"[?12l"∾e∾"[?25h" ⋄ •term.RawMode 0 ⋄ •Exit 𝕩} # Restores the terminal and exits
+Quit←{•Out e∾"[?12l"∾e∾"[?25h" ⋄ •Exit 𝕩} # Restores the terminal and exits
Display←{ # Displays the board, score and controls
•Out e∾"[H"∾e∾"[2J" # Cursor to origin and clear screen
•Out "Controls: h: left, j: down, k: up, l: right, q: quit"
diff --git a/Task/2048/Delphi/2048.pas b/Task/2048/Delphi/2048.delphi
similarity index 100%
rename from Task/2048/Delphi/2048.pas
rename to Task/2048/Delphi/2048.delphi
diff --git a/Task/2048/EasyLang/2048.easy b/Task/2048/EasyLang/2048.easy
deleted file mode 100644
index 345c4962c4..0000000000
--- a/Task/2048/EasyLang/2048.easy
+++ /dev/null
@@ -1,161 +0,0 @@
-len brd[] 16
-gbackground 987
-proc newtile .
- for i to 16 : if brd[i] = 0 : break 1
- if i > 16 : return
- v = 2
- if randomf < 0.1 : v = 4
- repeat
- ind = random 1 16
- until brd[ind] = 0
- .
- brd[ind] = v
-.
-global pts stat .
-proc show .
- gclear
- gtextsize 5
- gcolor 222
- gtext 10 94 "2048 Game"
- gtext 60 94 "Pts: " & pts
- gtextsize 7
- gcolor 876
- grect 9 9 82 82
- gcolor 987
- grect 10 10 80 80
- for i to 16 : if brd[i] <> 0
- x = i mod1 4 * 20 - 9.5
- y = i div1 4 * 20 - 9.5
- gcolor 765
- grect x y 19 19
- v = brd[i]
- h = 2 * floor log v 10
- gcolor 000
- gtext x + 7 - h y + 7 brd[i]
- .
-.
-proc init .
- for i to 16 : brd[i] = 0
- newtile
- newtile
- stat = 0
- pts = 0
- show
-.
-init
-#
-dir[] = [ -4 -1 4 1 ]
-start[] = [ 16 4 1 13 ]
-proc domove indk test &moved .
- moved = 0
- dir = dir[indk]
- bdir = dir[(indk + 1) mod1 4]
- start = start[indk]
- for i to 4
- h0 = start + dir
- for j to 3
- if brd[h0] <> 0
- v = brd[h0]
- h = h0
- while h <> start and brd[h - dir] = 0 : h -= dir
- if h <> h0
- moved = 1
- if test = 1 : return
- .
- if h <> start and brd[h - dir] = v
- moved = 1
- if test = 1 : return
- v *= 2
- pts += v
- brd[h - dir] = -v
- if v = 2048 : stat = 1
- v = 0
- .
- brd[h0] = 0
- brd[h] = v
- .
- h0 += dir
- .
- h0 = start
- for j to 3
- brd[h0] = abs brd[h0]
- h0 += dir
- .
- sleep 0.1
- show
- start += bdir
- .
-.
-proc handle indk .
- if indk = 0 : return
- domove indk 0 moved
- if moved = 1
- newtile
- sleep 0.2
- show
- if stat = 0
- stat = 2
- for indk to 4
- domove indk 1 moved
- if moved = 1
- stat = 0
- break 1
- .
- .
- .
- .
- if stat <> 0
- gtextsize 5
- if stat = 1
- stat = 0
- gtext 10 3 "You got 2048 😊"
- else
- gtext 10 3 "No more moves 🙁"
- .
- .
-.
-on mouse_down
- mx = mouse_x
- my = mouse_y
-.
-proc handle_mup .
- dx = mouse_x - mx
- dy = mouse_y - my
- indk = 0
- if abs dx > abs dy
- if abs dx > 3
- indk = 4
- if dx > 0 : indk = 2
- .
- else
- if abs dy > 3
- indk = 3
- if dy > 0 : indk = 1
- .
- .
- if indk <> 0 and stat = 2
- init
- else
- handle indk
- .
-.
-on mouse_up
- handle_mup
-.
-on key_down
- if stat = 2
- if keybkey = " " : init
- return
- .
- indk = 0
- if keybkey = "ArrowUp"
- indk = 1
- elif keybkey = "ArrowRight"
- indk = 2
- elif keybkey = "ArrowDown"
- indk = 3
- elif keybkey = "ArrowLeft"
- indk = 4
- .
- handle indk
-.
diff --git a/Task/2048/Elixir/2048.ex b/Task/2048/Elixir/2048.elixir
similarity index 100%
rename from Task/2048/Elixir/2048.ex
rename to Task/2048/Elixir/2048.elixir
diff --git a/Task/2048/Guile/2048.guile b/Task/2048/Guile/2048.guile
deleted file mode 100644
index f8b103f0d4..0000000000
--- a/Task/2048/Guile/2048.guile
+++ /dev/null
@@ -1,312 +0,0 @@
-;;require-module (ice-9 format)
-;;usage -> [~4d] print-board
-;;
-(use-modules (ice-9 format))
-
-;;require-module (srfi srfi-64)
-;;usage -> test-assert
-;;
-(use-modules (srfi srfi-64))
-
-;;prodedure-name 2or4-generator
-;;input -> <$:nil>
-;;output -> _ (number)
-;;note -> "it only generates 2 or 4, with a 10% of outputting 4"
-;;
-(define 2or4-generator
- (lambda ()
- (let ([random-number (random 10)])
- (if (zero? random-number)
- 4
- 2))))
-
-;;procedure-name print-board
-;;input -> board (array::4*4)
-;;output -> <$:nil>
-;;
-(define print-board
- (lambda (board)
- (do ((i 0 (1+ i)))
- ((> i 3))
- (do ((j 0 (1+ j)))
- ((> j 3))
- (format #t "[~4d]" (array-ref board i j)))
- (newline))))
-
-;;procedure-name spawn!
-;;input -> 4x4board (array::4*4)
-;;output -> <$:nil>
-;;
-(define spawn!
- (lambda (4x4board)
- (let ([indexes '()])
- (do ((i 0 (1+ i)))
- ((> i 3))
- (do ((j 0 (1+ j)))
- ((> j 3))
- (when (zero? (array-ref 4x4board i j))
- (set! indexes (cons (cons i j) indexes)))))
- (let* ([indexes-length (length indexes)]
- [used-index-index (random indexes-length)]
- [used-index-pair (list-ref indexes used-index-index)])
- (array-set! 4x4board (2or4-generator) (car used-index-pair) (cdr used-index-pair))))))
-
-;;procedure-name ask-user
-;;input -> valid-moves (list:symbol)
-;;output -> _ (symbol) [(memq <$:self:_> (list 'up 'down 'left 'right)) => #t]
-;;note -> "this procedure assumes there is at least one valid move"
-;;
-(define ask-user
- (lambda (valid-moves)
- (let loop ()
- (let ([option (read)])
- (if (memq option valid-moves)
- (case option
- [(up) 'up]
- [(down) 'down]
- [(left) 'left]
- [(right) 'right]
- [else (begin
- (display "wrong input! Please type up, down, left, or right only!")
- (newline)
- (loop))])
- (begin
- (display "please use valid moves!")
- (newline)
- (display "valid moves: ")
- (display valid-moves)
- (newline)
- (loop)))))))
-
-;;procedure-name update-row!
-;;input -> row (array::1*4)
-;;output -> <$:nil>
-;;
-(define update-row!
- (lambda (row)
- (unless (array-equal? row #(0 0 0 0))
- (let ([lst '()] [l 0])
- (when (not (zero? (array-ref row 3))) (set! l (1+ l)) (set! lst (cons (array-ref row 3) lst)))
- (when (not (zero? (array-ref row 2))) (set! l (1+ l)) (set! lst (cons (array-ref row 2) lst)))
- (when (not (zero? (array-ref row 1))) (set! l (1+ l)) (set! lst (cons (array-ref row 1) lst)))
- (when (not (zero? (array-ref row 0))) (set! l (1+ l)) (set! lst (cons (array-ref row 0) lst)))
- (do ((i 0 (1+ i)))
- ((>= i (- 4 l)))
- (array-set! row 0 i))
- (do ((i (- 4 l) (1+ i)) (j 0 (1+ j)))
- ((>= i 4))
- (array-set! row (list-ref lst j) i)))
- (if (= (array-ref row 3) (array-ref row 2))
- (begin (array-set! row (+ (array-ref row 3) (array-ref row 2)) 3)
- (array-set! row (array-ref row 1) 2)
- (array-set! row (array-ref row 0) 1)
- (array-set! row 0 0)
- (when (= (array-ref row 2) (array-ref row 1))
- (array-set! row (+ (array-ref row 2) (array-ref row 1)) 2)
- (array-set! row 0 1)))
- (if (= (array-ref row 2) (array-ref row 1))
- (begin (array-set! row (+ (array-ref row 2) (array-ref row 1)) 2)
- (array-set! row (array-ref row 0) 1)
- (array-set! row 0 0))
- (when (= (array-ref row 1) (array-ref row 0))
- (array-set! row (+ (array-ref row 1) (array-ref row 0)) 1)
- (array-set! row 0 0)))))))
-
-;;procedure-name update-board!
-;;input -> board (array::4*4)
-;;output -> <$:nil>
-;;note -> "this procedure can assume that the opertion is shifting the piles right"
-;;
-(define update-board!
- (lambda (board)
- (do ((i 0 (1+ i)))
- ((>= i 4))
- (update-row! (array-cell-ref board i)))))
-
-;;procedure-name row-can-shift-qright?
-;;input -> row (array::1*4)
-;;output -> _ (#t or #f)
-;;
-(define row-can-shift-right?
- (lambda (row)
- (if (and (zero? (array-ref row 0))
- (zero? (array-ref row 1))
- (zero? (array-ref row 2)))
- #f
- (if (or (zero? (array-ref row 3))
- (and (not (zero? (array-ref row 0))) (member 0 (list
- (array-ref row 1)
- (array-ref row 2)
- (array-ref row 3))))
- (and (not (zero? (array-ref row 1))) (member 0 (list
- (array-ref row 2)
- (array-ref row 3))))
- (and (not (zero? (array-ref row 2))) (member 0 (list
- (array-ref row 3)))))
- #t
- (if (or (and (not (zero? (array-ref row 0))) (= (array-ref row 0) (array-ref row 1)))
- (and (not (zero? (array-ref row 1))) (= (array-ref row 1) (array-ref row 2)))
- (and (not (zero? (array-ref row 2))) (= (array-ref row 2) (array-ref row 3))))
- #t
- #f)))))
-
-(define test-row-can-shift-right?
- (lambda ()
- (test-begin "row-can-shift-right? test")
- (test-assert (row-can-shift-right? #(2 0 0 0)))
- (test-assert (row-can-shift-right? #(0 2 0 0)))
- (test-assert (row-can-shift-right? #(0 0 2 0)))
- (test-assert (not (row-can-shift-right? #(0 0 0 2))))
- (test-assert (row-can-shift-right? #(4 2 0 0)))
- (test-assert (row-can-shift-right? #(2 0 0 2)))
- (test-assert (row-can-shift-right? #(1024 8 2 2)))
- (test-end "row-can-shift-right? test")))
-
-;;procedure-name can-shift-right?
-;;input -> board (array::4*4)
-;;output -> _ (#t or #f)
-;;
-(define can-shift-right?
- (lambda (board)
- (or (row-can-shift-right? (array-cell-ref board 0))
- (row-can-shift-right? (array-cell-ref board 1))
- (row-can-shift-right? (array-cell-ref board 2))
- (row-can-shift-right? (array-cell-ref board 3)))))
-
-(define test-can-shift-right?
- (lambda ()
- (test-begin "can-shift-right? test")
- (test-assert (can-shift-right? #2((2 0 0 2)
- (0 0 0 0)
- (0 0 0 0)
- (0 0 0 0))))
- (test-assert (can-shift-right? #2((2 0 0 0)
- (0 0 0 0)
- (0 0 0 0)
- (2 0 0 0))))
- (test-assert (not (can-shift-right? #2((2 8 4 8)
- (2 16 4 8)
- (0 0 0 4)
- (0 0 0 2)))))
- (test-end "can-shift-right? test")))
-
-;;procedure-name valid-move?
-;;input -> board (array::4*4)
-;;output -> _ (symbol) [(eq? 'gameover <$:self:_>) => #t]
-;;output -> _ (list:symbol[1 or 2 or 3 or 4])
-;;note -> "the list symbol should only contain up, down, left, right"
-;;
-(define valid-move?
- (lambda (board)
- (let* ([output-lst '()]
- [rows board]
- [columns (make-shared-array rows
- (lambda (i j)
- (list j i))
- 4 4)]
- [rows-reversed (make-shared-array rows
- (lambda (i j)
- (list i (- 3 j)))
- 4 4)]
- [columns-reversed (make-shared-array columns
- (lambda (i j)
- (list i (- 3 j)))
- 4 4)])
- (when (can-shift-right? rows) (set! output-lst (append (list 'right) output-lst)))
- (when (can-shift-right? rows-reversed) (set! output-lst (append (list 'left) output-lst)))
- (when (can-shift-right? columns) (set! output-lst (append (list 'down) output-lst)))
- (when (can-shift-right? columns-reversed) (set! output-lst (append (list 'up) output-lst)))
- (if (null? output-lst)
- 'gameover
- output-lst))))
-
-(define test-valid-move?
- (lambda ()
- (test-begin "valid-move? test")
- (test-assert (eq? 'gameover (valid-move? #2((8 4 2 16)
- (2 8 4 32)
- (4 2 8 16)
- (128 4 16 64)))))
- (test-assert (equal? (list 'up 'down 'left 'right) (valid-move? #2((0 0 0 0)
- (0 2 0 0)
- (0 0 0 0)
- (0 0 0 2)))))
- (test-end "valid-move? test")))
-
-;;prodedure-name check-game-status!
-;;input -> board (array::4*4)
-;;output -> _ (symbol)
-;;note -> "The thing this procedure should implement: 1.decide whether there is a 2048 tile on board, if so, return 'win 2.decide the valid moves next time and return them as a list like (list 'up 'down 'right) or anything equivalent (if there is no valid moves, just return 'gameover)"
-;;
-(define check-game-status!
- (lambda (board)
- (spawn! board)
- (let ([all-tiles (list (array-ref board 0 0)
- (array-ref board 0 1)
- (array-ref board 0 2)
- (array-ref board 0 3)
- (array-ref board 1 0)
- (array-ref board 1 1)
- (array-ref board 1 2)
- (array-ref board 1 3)
- (array-ref board 2 0)
- (array-ref board 2 1)
- (array-ref board 2 2)
- (array-ref board 2 3)
- (array-ref board 3 0)
- (array-ref board 3 1)
- (array-ref board 3 2)
- (array-ref board 3 3))])
- (if (member 2048 all-tiles)
- 'win
- (valid-move? board)))))
-
-;;procedure-name play
-;;input -> <$:nil>
-;;output -> _ (array:4*4)
-;;
-(define play
- (lambda ()
- (set! *random-state* (random-state-from-platform))
- (let ([board (make-array 0 4 4)])
- (let* ([rows board]
- [columns (make-shared-array rows
- (lambda (i j)
- (list j i))
- 4 4)]
- [rows-reversed (make-shared-array rows
- (lambda (i j)
- (list i (- 3 j)))
- 4 4)]
- [columns-reversed (make-shared-array columns
- (lambda (i j)
- (list i (- 3 j)))
- 4 4)])
- (spawn! rows)
- (let loop ([turn 1] [available-moves (valid-move? rows)])
- (format #t "TURN ~d" turn)
- (newline)
- (print-board rows)
- (case (ask-user available-moves)
- [(up) (update-board! columns-reversed)]
- [(down) (update-board! columns)]
- [(left) (update-board! rows-reversed)]
- [(right) (update-board! rows)]
- [else (error "something went wrong! The return stuff from (ask-user availuable-moves) is not among 'up 'down 'left 'right! This normally should never be reached.")])
- (let ([symbols (check-game-status! rows)])
- (cond
- [(symbol? symbols) (case symbols
- [(win) (begin
- (display "You win!")
- (newline)
- (print-board rows))]
- [(gameover) (begin
- (display "You lose!")
- (newline)
- (print-board rows))]
- [else (error "While not intended, we named what the procedure (check-game-status rows) returned as symbols, checking it as a symbol which passed, then we get this. But we coded this to be 'win or 'gameover !")])]
- [(list? symbols) (begin
- (display "Valid moves: ")
- (display symbols)
- (newline)
- (loop (1+ turn) symbols))])))))))
diff --git a/Task/2048/Jq/2048.jq b/Task/2048/Jq/2048.jq
deleted file mode 100644
index 367500faf2..0000000000
--- a/Task/2048/Jq/2048.jq
+++ /dev/null
@@ -1,127 +0,0 @@
-include "MRG32k3a" {search: "."}; # see comment above
-
-### Generic functions
-
-def lpad($len): tostring | ($len - length) as $l | (" " * $l) + .;
-
-# Create an m x n matrix with initial values specified by .
-def matrix($m; $n):
- if $m == 0 then []
- else . as $init
- | if $m == 1 then [range(0;$n) | $init]
- elif $m > 0 then
- matrix(1; $n) as $row
- | [range(0; $m) | $row ]
- else error("matrix\($m);\($n)) invalid")
- end
- end;
-
-
-### The 2048 Game
-# Left-squish the input array in accordance with the game requirements for a single row
-def squish:
- def squish($n):
- def s:
- if length == 0 then [range(0;$n)|null]
- elif .[0] == null then .[1:] | s
- elif length == 1 then . + [range(0; $n - 1)|null]
- elif .[0] == .[1] then [.[0] + .[1]] + (.[2:]|squish($n-1))
- else .[0:1] + (.[1:]|squish($n-1))
- end;
- s;
- squish(length);
-
-# Input: a matrix of rows
-def squish_left:
- [.[] | squish];
-
-def squish_right:
- [.[] | reverse | squish | reverse];
-
-def squish_up:
- transpose
- | [.[] | squish]
- | transpose;
-
-def squish_down:
- transpose
- | [.[] | reverse | squish | reverse]
- | transpose;
-
-# Gather the [i,j] co-ordinates of all the null values in the input matrix
-def gather:
- if length == 0 then error end
- | (.[0] | length) as $cols
- | [range(0;length) as $i
- | range(0; $cols) as $j
- | select(.[$i][$j] == null) | [$i,$j]]
- | if length == 0 then error end ;
-
-# Input: {matrix}
-# Add a random 2 or 4 if possible, else error
-# Output: includes .prng for the PRN generator
-def add_random:
- (.matrix | gather) as $gather
- | ($gather | length) as $n
- | if $n == 0 then error end
- | if .prng == null then .prng = seed(now | tostring | sub("^.*[.]";"") | tonumber) end
- | .prng |= nextFloat
- | $gather[.prng.nextFloat * $n | trunc] as [$i,$j]
- | .prng |= nextFloat
- | (if (.prng.nextFloat) < 0.1 then 4 else 2 end) as $exmachina
- | .matrix[$i][$j] = $exmachina ;
-
-def prompt: "[ijkl] or [wasd] or q to quit or n to restart:";
-
-def direction:
- {"i": "up", "j": "left", "k": "down", "l": "right",
- "w": "up", "a": "left", "s": "down", "d": "right",
- "q": "quit",
- "n": "restart"
- };
-
-# Recognize $goal as the goal
-def play($goal):
-
- # Pretty print
- def pp:
- .matrix[] | map(. // "." | lpad(4)) | join(" ");
-
- def won:
- any(.matrix[][]; . == $goal);
-
- def lost:
- .matrix
- | (squish_left == .) and (squish_right == .) and
- (squish_up == .) and (squish_down == .);
-
- def round:
- pp,
- if lost then "Sorry! Better luck next time.", play($goal)
- else prompt,
- ( (try input catch halt) as $in
- | .matrix as $matrix # for checking if a move is legal
- | .emit = null
- | direction[$in | ascii_downcase] as $direction
- | if $direction == "up" then .matrix |= squish_up
- elif $direction == "down" then .matrix |= squish_down
- elif $direction == "left" then .matrix |= squish_left
- elif $direction == "right" then .matrix |= squish_right
- elif $direction == "quit" then .emit = "bye"
- elif $direction == "restart" then .emit = "restart"
- else .emit = "unknown direction \($direction) ... please try again."
- end
- | if .emit == "bye" then .emit, halt
- elif .emit == "restart" then "Restarting...", play($goal)
- elif .emit != null then .emit, round
- elif .matrix == $matrix then "Disallowed direction! Please try again.", round
- elif won then pp, "Congratulations!", play($goal)
- else add_random | round
- end)
- end;
-
- { matrix: (null | matrix(4;4))}
- | .matrix[2] = [null,2,2,2]
- | round;
-
-play(2048)
diff --git a/Task/2048/Julia/2048.jl b/Task/2048/Julia/2048.julia
similarity index 100%
rename from Task/2048/Julia/2048.jl
rename to Task/2048/Julia/2048.julia
diff --git a/Task/2048/Kotlin/2048.kts b/Task/2048/Kotlin/2048.kotlin
similarity index 100%
rename from Task/2048/Kotlin/2048.kts
rename to Task/2048/Kotlin/2048.kotlin
diff --git a/Task/2048/OCaml/2048.ml b/Task/2048/OCaml/2048.ocaml
similarity index 100%
rename from Task/2048/OCaml/2048.ml
rename to Task/2048/OCaml/2048.ocaml
diff --git a/Task/2048/Rust/2048.rs b/Task/2048/Rust/2048.rust
similarity index 100%
rename from Task/2048/Rust/2048.rs
rename to Task/2048/Rust/2048.rust
diff --git a/Task/2048/Wren/2048.wren b/Task/2048/Wren/2048.wren
index b92bc4948d..ddff0c113d 100644
--- a/Task/2048/Wren/2048.wren
+++ b/Task/2048/Wren/2048.wren
@@ -20,6 +20,13 @@ class G2048 {
for (j in 0..3) _board[i][j] = Tile.new(0, false)
}
_rand = Random.new()
+ initializeBoard()
+ }
+
+ initializeBoard() {
+ for (y in 0..3) {
+ for (x in 0..3) _board[x][y] = Tile.new(0, false)
+ }
}
loop() {
diff --git a/Task/2048/Zig/2048.zig b/Task/2048/Zig/2048.zig
deleted file mode 100644
index ffe55ff922..0000000000
--- a/Task/2048/Zig/2048.zig
+++ /dev/null
@@ -1,362 +0,0 @@
-// git repository at https://codeberg.org/Vulwsztyn/2048_zig
-const std = @import("std");
-const builtin = @import("builtin");
-
-const Io = std.Io;
-const Random = std.Random;
-const fmt = std.fmt;
-
-const mibu = @import("mibu");
-const color = mibu.color;
-const events = mibu.events;
-const term = mibu.term;
-const cursor = mibu.cursor;
-
-// You can change these constants to modify the game behavior
-const ROW_SIZE = 4; // program won't work if less than 2
-const COL_SIZE = 4; // program won't work if less than 2
-const TARGET_SCORE = 11; // 2^11 = 2048
-const PROBABILITY_OF_FOUR_NUMERATOR = 10;
-const PROBABILITY_OF_FOUR_DENOMINATOR = 100; // these 2 work in tandem to give chance of spawning a 4 instead of 2
-
-const Dir = enum { up, down, left, right };
-const Action = union(enum) {
- Move: Dir,
- Quit,
- Noop,
-};
-
-fn spawn(comptime X: usize, comptime Y: usize, matrix_p: *[X][Y]u8, rand: Random) void {
- var buffer: [X * Y]u8 = undefined;
- var zero_indices = std.ArrayListUnmanaged(u8).initBuffer(&buffer);
- for (matrix_p, 0..) |row, i| {
- for (row, 0..) |val, j| {
- if (val == 0) {
- zero_indices.appendBounded(@intCast(i * Y + j)) catch unreachable;
- }
- }
- }
- const random_index = rand.intRangeAtMost(u8, 0, @intCast(zero_indices.items.len - 1));
- const chosen = zero_indices.items[random_index];
- const row = chosen / Y;
- const col = chosen % Y;
- const value: u8 = if (rand.intRangeAtMost(u8, 0, PROBABILITY_OF_FOUR_DENOMINATOR) < PROBABILITY_OF_FOUR_NUMERATOR) 2 else 1;
- matrix_p[row][col] = value;
-}
-
-fn additives_for_previous(dir: Dir) [2]i8 {
- // assuming that for a move in a direction, we look at the values at the end
- // and check backwards
- // e.g. for up, we look at the top row and check downwards
- // so we return 1, 0 meaning one row down, same column
- switch (dir) {
- .up => {
- return .{ 1, 0 };
- },
- .down => {
- return .{ -1, 0 };
- },
- .left => {
- return .{ 0, 1 };
- },
- .right => {
- return .{ 0, -1 };
- },
- }
-}
-fn is_move_possible(comptime X: usize, comptime Y: usize, matrix_p: [X][Y]u8, dir: Dir) bool {
- // checks if move is possible by checking if any tile can be moved or combined
- const additives = additives_for_previous(dir);
- for (0..X) |i| {
- const i_signed: i8 = @intCast(i);
- const new_i = i_signed + additives[0];
- if (new_i < 0 or new_i >= X) continue;
- for (0..Y) |j| {
- const j_signed: i8 = @intCast(j);
- const new_j = j_signed + additives[1];
- if (new_j < 0 or new_j >= Y) continue;
- const val = matrix_p[i][j];
- const prev_val = matrix_p[@intCast(new_i)][@intCast(new_j)];
- if (val != 0 and val == prev_val) return true;
- if (val == 0 and prev_val != 0) return true;
- }
- }
- return false;
-}
-
-fn is_game_lost(comptime X: usize, comptime Y: usize, matrix_p: [X][Y]u8) bool {
- // checks if move in any direction is possible
- for (std.meta.tags(Dir)) |dir| {
- if (is_move_possible(X, Y, matrix_p, dir)) {
- return false;
- }
- }
- return true;
-}
-
-fn is_game_won(comptime X: usize, comptime Y: usize, matrix_p: [X][Y]u8) bool {
- for (matrix_p) |row| {
- for (row) |val| {
- if (val >= TARGET_SCORE) {
- return true;
- }
- }
- }
- return false;
-}
-
-fn last_positions(comptime X: usize, comptime Y: usize, dir: Dir, gpa: std.mem.Allocator) std.ArrayList([2]u8) {
- // see comment in additives_for_previous
- // e.g. for move up we start at the top row and go downwards
- // this function returns the list positions in the top row (for that scenario)
- var list: std.ArrayList([2]u8) = .empty;
- switch (dir) {
- .up => {
- for (0..Y) |i| {
- list.append(gpa, .{ 0, @intCast(i) }) catch unreachable;
- }
- },
- .down => {
- for (0..Y) |i| {
- list.append(gpa, .{ X - 1, @intCast(i) }) catch unreachable;
- }
- },
- .left => {
- for (0..X) |i| {
- list.append(gpa, .{ @intCast(i), 0 }) catch unreachable;
- }
- },
- .right => {
- for (0..X) |i| {
- list.append(gpa, .{ @intCast(i), X - 1 }) catch unreachable;
- }
- },
- }
- return list;
-}
-
-fn move_matrix(comptime X: usize, comptime Y: usize, matrix_p: *[X][Y]u8, dir: Dir) void {
- const gpa = std.heap.page_allocator;
- const additives = additives_for_previous(dir);
- var postions = last_positions(X, Y, dir, gpa);
- defer postions.deinit(gpa);
- std.debug.print("\n", .{});
- for (postions.items) |pos| {
- var target_row: i8 = @intCast(pos[0]);
- var target_col: i8 = @intCast(pos[1]);
- var target_val: u8 = matrix_p[pos[0]][pos[1]];
- var current_row: i8 = target_row;
- var current_col: i8 = target_col;
- while (true) {
- current_row += additives[0];
- current_col += additives[1];
- const went_out_of_bounds = current_row < 0 or current_row >= (X) or
- current_col < 0 or current_col >= (Y);
- if (went_out_of_bounds) {
- break;
- }
- const current_val: u8 = matrix_p[@intCast(current_row)][@intCast(current_col)];
- if (current_val == 0) {
- // nothing to do,
- continue;
- }
- if (target_val != 0 and target_val != current_val) {
- // cannot combine, move target forward
- // e.g 0 0 2 4 (for was target, now 2 becomes target)
- matrix_p[@intCast(current_row)][@intCast(current_col)] = 0;
- target_row = (target_row) + (additives[0]);
- target_col = (target_col) + (additives[1]);
- matrix_p[@intCast(target_row)][@intCast(target_col)] = current_val;
- target_val = matrix_p[@intCast(target_row)][@intCast(target_col)];
- continue;
- }
- if (target_val == 0) {
- // move current to target
- // e.g 0 0 2 0 -> 0 0 0 2 (2 remains target, since we want 0 2 2 0 to become 0 0 0 4)
- matrix_p[@intCast(target_row)][@intCast(target_col)] = current_val;
- target_val = current_val;
- } else {
- // combine
- // e.g 0 0 2 2 -> 0 0 0 4 (with rightmost zero becoming target, since the movements are not greedy)
- matrix_p[@intCast(target_row)][@intCast(target_col)] = target_val + 1;
- target_val = 0;
- target_row = target_row + (additives[0]);
- target_col = target_col + (additives[1]);
- }
- // both in case of move and combine we clear current
- matrix_p[@intCast(current_row)][@intCast(current_col)] = 0;
- }
- }
-}
-
-fn print(comptime X: usize, comptime Y: usize, matrix_p: [X][Y]u8, stdout: *Io.Writer) !void {
- for (matrix_p, 0..) |row, i| {
- try cursor.goTo(stdout, 1, 2 + i);
- var buf: [100]u8 = undefined;
- const all_together_slice = buf[0..];
- for (row) |val| {
- const value = if (val != 0) std.math.pow(u16, 2, @intCast(val)) else 0;
- const value_as_str = if (val > 0) try fmt.bufPrint(all_together_slice, "{d}", .{value}) else "_";
-
- try color.fg256(stdout, if (val > 1) @enumFromInt(val) else color.Color.white); // sets colour based on value
- try stdout.print("{s:>5} ", .{value_as_str}); // prints with padding
- }
- try stdout.print("\x1b[K\n", .{});
- }
-}
-
-fn init_matrix(comptime X: usize, comptime Y: usize, matrix_p: *[X][Y]u8) void {
- // initializes matrix to all zeros
- for (matrix_p) |*row| {
- for (row) |*val| {
- val.* = @intCast(0);
- }
- }
-}
-
-fn action_from_event(next: events.Event) Action {
- switch (next) {
- .key => |k| switch (k.code) {
- .char => |c| switch (c) {
- 'c' => {
- return .Quit;
- },
- 'q' => {
- return .Quit;
- },
- 'w' => {
- return .{ .Move = .up };
- },
- 's' => {
- return .{ .Move = .down };
- },
- 'a' => {
- return .{ .Move = .left };
- },
- 'd' => {
- return .{ .Move = .right };
- },
- 'h' => {
- return .{ .Move = .left };
- },
- 'j' => {
- return .{ .Move = .down };
- },
- 'k' => {
- return .{ .Move = .up };
- },
- 'l' => {
- return .{ .Move = .right };
- },
- else => {
- return .Noop;
- },
- },
- .up => {
- return .{ .Move = .up };
- },
- .down => {
- return .{ .Move = .down };
- },
- .left => {
- return .{ .Move = .left };
- },
- .right => {
- return .{ .Move = .right };
- },
- else => {
- return .Noop;
- },
- },
- else => {
- return .Noop;
- },
- }
-}
-
-pub fn main() !void {
- const row_size = ROW_SIZE;
- const col_size = COL_SIZE;
- var seed: u64 = undefined;
- try std.posix.getrandom(std.mem.asBytes(&seed));
-
- var prng = Random.DefaultPrng.init(seed);
- const rand = prng.random();
-
- var stdout_buffer: [1024]u8 = undefined;
-
- const stdin = std.fs.File.stdin();
- var stdout_file = std.fs.File.stdout();
- var stdout_writer = stdout_file.writer(&stdout_buffer);
- const stdout = &stdout_writer.interface;
-
- if (!std.posix.isatty(stdin.handle)) {
- try stdout.print("The current file descriptor is not a referring to a terminal.\n", .{});
- return;
- }
-
- if (builtin.os.tag == .windows) {
- try mibu.enableWindowsVTS(stdout.handle);
- }
-
- // Enable terminal raw mode, its very recommended when listening for events
- var raw_term = try term.enableRawMode(stdin.handle);
- defer raw_term.disableRawMode() catch {
- std.debug.print("Failed to disable raw mode\n", .{});
- };
-
- try term.enterAlternateScreen(stdout);
- defer term.exitAlternateScreen(stdout) catch {
- std.debug.print("Failed to exit alternate screen\n", .{});
- };
-
- try cursor.hide(stdout);
- defer cursor.show(stdout) catch {
- std.debug.print("Failed to show cursor\n", .{});
- };
-
- try cursor.goTo(stdout, 1, 1);
- try mibu.style.italic(stdout, true);
-
- var matrix: [row_size][col_size]u8 = undefined;
-
- init_matrix(row_size, col_size, &matrix);
-
- spawn(row_size, col_size, &matrix, rand);
- try stdout.print("move with wsad, hjkl, or arrows; quit with c or q\x1b[K\n", .{}); // prints with padding
-
- try print(row_size, col_size, matrix, stdout);
-
- try stdout.flush();
-
- while (true) {
- try cursor.goTo(stdout, 1, 2);
- const next = try events.next(stdin);
- const action = action_from_event(next);
- switch (action) {
- .Quit => break,
- .Noop => continue,
- .Move => |dir| {
- if (is_move_possible(row_size, col_size, matrix, dir)) {
- move_matrix(row_size, col_size, &matrix, dir);
- try print(row_size, col_size, matrix, stdout);
- if (is_game_won(row_size, col_size, matrix)) {
- try cursor.goTo(stdout, 1, row_size + 3);
- try stdout.print("You won! Congratulations!\n", .{});
- try stdout.flush();
- break;
- }
- spawn(row_size, col_size, &matrix, rand);
- try print(row_size, col_size, matrix, stdout);
- if (is_game_lost(row_size, col_size, matrix)) {
- try cursor.goTo(stdout, 1, (row_size + 3));
- try stdout.print("Game over! No more moves possible!\n", .{});
- try stdout.flush();
- break;
- }
- }
- try stdout.flush();
- },
- }
- }
-}
diff --git a/Task/21-game/00-TASK.txt b/Task/21-game/00-TASK.txt
index 0fd624861d..85e5e6c32b 100644
--- a/Task/21-game/00-TASK.txt
+++ b/Task/21-game/00-TASK.txt
@@ -9,7 +9,6 @@ One player will be the computer.
Players alternate supplying a number to be added to the ''running total''.
-This game is a variant of [https://en.wikipedia.org/wiki/Nim#The_21_game Nim].
;Task:
Write a computer program that will:
@@ -20,7 +19,4 @@ Write a computer program that will:
::* provide a mechanism for the player to quit/exit/halt/stop/close the program,
::* issue a notification when there is a winner, and
::* determine who goes first (maybe a random or user choice, or can be specified when the game begins).
-
-;Related tasks:
-::* [[Nim game]]
diff --git a/Task/21-game/ALGOL-68/21-game.alg b/Task/21-game/ALGOL-68/21-game.alg
deleted file mode 100644
index e9dfe16bed..0000000000
--- a/Task/21-game/ALGOL-68/21-game.alg
+++ /dev/null
@@ -1,41 +0,0 @@
-IF print( ( "Player who reaches 21, wins", newline ) ); # 21 game - based on the EasyLang sample #
- INT human = 1, computer = 2;
- []STRING name = ( "Human ", "Computer" );
- INT player := human, sum := 0;
- STRING a := "?";
- WHILE a /= "y" AND a /= "n" AND a /= "q" DO
- print( ( "Do you want to go first (y/n/q) " ) );
- read( ( a, newline ) );
- IF a = "n" THEN player := computer FI
- OD;
- a /= "q"
-THEN
- WHILE
- INT add := IF player = human THEN
- a := "?";
- WHILE a /= "q" AND a /= "1" AND a /= "2" AND a /= "3" DO
- print( ( newline, "Add 1, 2 or 3 (q to quit) " ) );
- read( ( a, newline ) )
- OD;
- IF a = "1" THEN 1 ELIF a = "2" THEN 2 ELSE 3 FI
- ELIF sum MOD 4 = 1 THEN
- # player = computer, optimal move not possible #
- ENTIER ( random * 3 ) + 1
- ELSE
- # player = computer, can make the optimal move #
- 4 - ( sum + 3 ) MOD 4
- FI;
- sum +:= add;
- IF a /= "q" THEN
- print( ( name[ player ], ": ", whole( add, 0 ), " --> ", whole( sum, 0 ), newline ) )
- FI;
- a /= "q" AND sum < 21
- DO
- player := IF player = human THEN computer ELSE human FI
- OD;
- IF a /= "q" THEN
- print( ( newline ) );
- print( ( IF player = human THEN "Congratulations, you won" ELSE "Sorry, you lost" FI ) );
- print( ( newline ) )
- FI
-FI
diff --git a/Task/21-game/Ada/21-game.adb b/Task/21-game/Ada/21-game.ada
similarity index 100%
rename from Task/21-game/Ada/21-game.adb
rename to Task/21-game/Ada/21-game.ada
diff --git a/Task/21-game/AppleScript/21-game.applescript b/Task/21-game/AppleScript/21-game.applescript
deleted file mode 100644
index c850f044a1..0000000000
--- a/Task/21-game/AppleScript/21-game.applescript
+++ /dev/null
@@ -1,44 +0,0 @@
-repeat
- set pstart to some item of {true, false}
- if pstart then
- display alert "You go first!"
- set score to 0
- else
- display alert "The computer goes first!"
- log "The computer chose 1"
- log "The score is now 1"
- set score to 1
- end if
- repeat
- repeat
- set input to display alert "Choose a number:" buttons {1, 2, 3}
- set pmove to button returned of input
- set score to score + pmove
- if score > 21 then
- display alert "You can't go above 21! Try again."
- set score to score - pmove
- else
- exit repeat
- end if
- end repeat
- log "You chose " & pmove
- log "The score is now " & score
- if score = 21 then
- log "You win!"
- exit repeat
- else if score mod 4 is not 1 then
- set cmove to (5 - (score mod 4)) mod 4
- else
- set cmove to random number from 1 to 3
- end if
- set score to score + cmove
- log "The computer chose " & cmove
- log "The score is now " & score
- if score = 21 then
- log "Too bad! The computer wins."
- exit repeat
- end if
- end repeat
- set again to display alert "Play again?" buttons {"Yes", "No"}
- if button returned of again = "No" then exit repeat
-end repeat
diff --git a/Task/21-game/Arturo/21-game.arturo b/Task/21-game/Arturo/21-game.arturo
index a4c0d5eb0f..3b62d3b212 100644
--- a/Task/21-game/Arturo/21-game.arturo
+++ b/Task/21-game/Arturo/21-game.arturo
@@ -5,7 +5,7 @@ print "-----------------------------"
players: ["A" "B"]
currentPlayer: sample players
nextPlayer: first players -- currentPlayer
-runningTotal: 0
+runningTotal: new 0
num: 0
getNum: function [][
diff --git a/Task/21-game/AutoHotkey/21-game.ahk b/Task/21-game/AutoHotkey/21-game.ahk
index ba112f623d..89fc54b3c2 100644
--- a/Task/21-game/AutoHotkey/21-game.ahk
+++ b/Task/21-game/AutoHotkey/21-game.ahk
@@ -6,7 +6,7 @@ Gui, add, text, xs vT, Total : 00
Gui, add, text, xs vComputer, Computer Dealt 00
Gui, add, text, xs Section, Player 1
loop, 3
- Gui, add, button, x+5 vPlayer1_%A_Index% gTotal, % A_Index
+ Gui, add, button, x+5 vPlayer1_%A_Index% gTotal, % A_Index
Gui, add, button, xs vReset gReset, reset
Gui show,, 21 Game
Winners := [1,5,9,13,17,21]
@@ -18,13 +18,13 @@ total := 0
GuiControl,, T, % "Total : " SubStr("00" Total, -1)
GuiControl,, Computer, % "Computer Waiting"
Loop 3
- GuiControl, Enable, % "Player1_" A_Index
+ GuiControl, Enable, % "Player1_" A_Index
Random, rnd, 0, 1
if rnd
{
- Loop 3
- GuiControl, Disable, % "Player1_" A_Index
- gosub ComputerTurn
+ Loop 3
+ GuiControl, Disable, % "Player1_" A_Index
+ gosub ComputerTurn
}
return
;-----------------------------------
@@ -34,12 +34,12 @@ Total += Added
GuiControl,, T, % "Total : " SubStr("00" Total, -1)
if (total >= 21)
{
- MsgBox % "Player 1 Wins"
- gosub reset
- return
+ MsgBox % "Player 1 Wins"
+ gosub reset
+ return
}
Loop 3
- GuiControl, Disable, % "Player1_" A_Index
+ GuiControl, Disable, % "Player1_" A_Index
gosub, ComputerTurn
return
;-----------------------------------
@@ -48,38 +48,38 @@ Gui, Submit, NoHide
Sleep 500
if RadioE
{
- if (total < 13)
- RadioC := true
- else
- RadioH := true
+ if (total < 13)
+ RadioC := true
+ else
+ RadioH := true
}
if RadioC
{
- Random, Deal, 1, 3
- total += Deal
+ Random, Deal, 1, 3
+ total += Deal
}
if RadioH
{
- for i, v in Winners
- if (total >= v)
- continue
- else
- {
- Deal := v - total
- if Deal > 3
- Random, Deal, 1, 3
- total += Deal
- break
- }
+ for i, v in Winners
+ if (total >= v)
+ continue
+ else
+ {
+ Deal := v - total
+ if Deal > 3
+ Random, Deal, 1, 3
+ total += Deal
+ break
+ }
}
GuiControl,, T, % "Total : " SubStr("00" Total, -1)
GuiControl,, Computer, % "Computer Dealt " Deal
if (total=21)
{
- MsgBox Computer Wins
- gosub, reset
+ MsgBox Computer Wins
+ gosub, reset
}
else
- Loop 3
- GuiControl, Enable, % "Player1_" A_Index
+ Loop 3
+ GuiControl, Enable, % "Player1_" A_Index
return
diff --git a/Task/21-game/EasyLang/21-game.easy b/Task/21-game/EasyLang/21-game.easy
index 6f4e5100cd..1ed700b063 100644
--- a/Task/21-game/EasyLang/21-game.easy
+++ b/Task/21-game/EasyLang/21-game.easy
@@ -2,36 +2,36 @@ print "Who reaches 21, wins"
print "Do you want to begin (y/n)"
who = 1
if input = "n"
- who = 2
+ who = 2
.
who$[] = [ "Human" "Computer" ]
repeat
- if who = 1
- repeat
- print ""
- print "Choose 1,2 or 3 (q for quit)"
- a$ = input
- n = number a$
- until a$ = "q" or (n >= 1 and n <= 3)
- .
- else
- sleep 1
- if sum mod 4 = 1
- n = random 1 3
- else
- n = 4 - (sum + 3) mod 4
- .
- .
- sum += n
- print who$[who] & ": " & n & " --> " & sum
- until sum >= 21 or a$ = "q"
- who = who mod 2 + 1
+ if who = 1
+ repeat
+ print ""
+ print "Choose 1,2 or 3 (q for quit)"
+ a$ = input
+ n = number a$
+ until a$ = "q" or (n >= 1 and n <= 3)
+ .
+ else
+ sleep 1
+ if sum mod 4 = 1
+ n = randint 3
+ else
+ n = 4 - (sum + 3) mod 4
+ .
+ .
+ sum += n
+ print who$[who] & ": " & n & " --> " & sum
+ until sum >= 21 or a$ = "q"
+ who = who mod 2 + 1
.
if a$ <> "q"
- print ""
- if who = 0
- print "Congratulation, you won"
- else
- print "Sorry, you lost"
- .
+ print ""
+ if who = 0
+ print "Congratulation, you won"
+ else
+ print "Sorry, you lost"
+ .
.
diff --git a/Task/21-game/GDScript/21-game.gd b/Task/21-game/GDScript/21-game.gd
index 009e2e3a9a..78f190267d 100644
--- a/Task/21-game/GDScript/21-game.gd
+++ b/Task/21-game/GDScript/21-game.gd
@@ -8,81 +8,81 @@ const target: int = 21
# -1 is returned to request quit
func get_player_choice(total: int) -> int:
- while true:
- printraw("Player's choice: ")
- var input: String = OS.read_string_from_stdin().strip_edges()
+ while true:
+ printraw("Player's choice: ")
+ var input: String = OS.read_string_from_stdin().strip_edges()
- if input == "quit":
- return -1
+ if input == "quit":
+ return -1
- if not input.is_valid_int():
- print("Please input an integer.")
- continue
+ if not input.is_valid_int():
+ print("Please input an integer.")
+ continue
- var input_int := int(input)
- if input_int < 1 or input_int > 3:
- print("Please pick a number from 1 to 3")
- continue
+ var input_int := int(input)
+ if input_int < 1 or input_int > 3:
+ print("Please pick a number from 1 to 3")
+ continue
- if input_int + total > target:
- print("Please do not exceed a total of %d" % target)
- continue
+ if input_int + total > target:
+ print("Please do not exceed a total of %d" % target)
+ continue
- return input_int
+ return input_int
- # This is required since Godot does not detect the unreachable code path
- OS.crash("unreachable")
- return 0
+ # This is required since Godot does not detect the unreachable code path
+ OS.crash("unreachable")
+ return 0
func get_computer_choice(total: int) -> int:
- # This can be shortened using max() if you do not have type checking OCD
- var remaining: int = target - total
- return randi_range(1, 3 if remaining > 3 else remaining)
+ # This can be shortened using max() if you do not have type checking OCD
+ var remaining: int = target - total
+ return randi_range(1, 3 if remaining > 3 else remaining)
func play() -> void:
- print("""\
+ print("""\
Welcome to the 21 game.
Type quit to exit.""")
- var total: int = 0
- var player: Player
- match randi_range(1, 2):
- 1:
- player = Player.Human
- print("You will go first.")
- 2:
- player = Player.Computer
- print("The computer will go first.")
+ var total: int = 0
+ var player: Player
+ match randi_range(1, 2):
+ 1:
+ player = Player.Human
+ print("You will go first.")
+ 2:
+ player = Player.Computer
+ print("The computer will go first.")
- while true:
- print("\nThe total is %d" % total)
+ while true:
+ print("\nThe total is %d" % total)
- var choice: int
- match player:
- Player.Human:
- choice = get_player_choice(total)
- if choice == -1:
- return
- Player.Computer:
- choice = get_computer_choice(total)
- print("The computer plays %d" % choice)
- assert(1 <= choice and choice <= 3)
+ var choice: int
+ match player:
+ Player.Human:
+ choice = get_player_choice(total)
+ if choice == -1:
+ return
+ Player.Computer:
+ choice = get_computer_choice(total)
+ print("The computer plays %d" % choice)
+ assert(1 <= choice and choice <= 3)
- total += choice
- if total == target:
- match player:
- Player.Human: print("You win!")
- Player.Computer: print("The computer won, you lose.")
- return
- assert(total < target)
+ total += choice
+ if total == target:
+ match player:
+ Player.Human: print("You win!")
+ Player.Computer: print("The computer won, you lose.")
+ return
+ assert(total < target)
- match player:
- Player.Human: player = Player.Computer
- Player.Computer: player = Player.Human
+ match player:
+ Player.Human: player = Player.Computer
+ Player.Computer: player = Player.Human
func _process(_delta: float) -> bool:
- randomize()
- play()
- return true
+ randomize()
+ play()
+ return true
diff --git a/Task/21-game/J/21-game.j b/Task/21-game/J/21-game.j
index 04b5ac792e..821237993a 100644
--- a/Task/21-game/J/21-game.j
+++ b/Task/21-game/J/21-game.j
@@ -1,32 +1,37 @@
-g21=: summarize@play@setup ::'g21: error termination'
+g21=: summarize@play@setup ::('g21: error termination'"_)
-Until=: {{u^:(0-:v)^:_}}
+NB. non-verb must be defined before use, otherwise are assumed verbs.
+Until=: 2 :'u^:(0-:v)^:_'
-'score turn choice'=: 0 1 2
+t=: 'score turn choice'
+(t)=: i. # ;: t
+empty erase't'
+
+Fetch=: &{
+Alter=: }
play=: move Until done
-move=: [: update you`it@.(turn&{)
-done=: 21 <: score&{
-
+done=: 21 <: score Fetch
+move=: [: update you`it@.(turn Fetch)
update=: swap@display@add
-add=: score}~ score&{ + choice&{
-display=: [ 'sum: {}' echo@format~ score&{
-swap=: turn}~ [: -. turn&{
+add=: score Alter~ (score Fetch + choice Fetch)
+display=: [ ([: echo 'sum: {}' format~ score Fetch)
+swap=: turn Alter~ ([: -. turn Fetch)
-it=: ([ 'It chose {}.' echo@format~ choice&{)@(choice}~ cb)
-cb=: 1:`(>:@?@3)`3:`2:@.(4 | score&{) NB. computer brain
+it=: ([ [: echo 'It chose {}.' format~ choice Fetch)@(choice Alter~ cb)
+cb=: (1:`r`3:`2:)@.(4 | score Fetch) NB. computer brain
+r=: 3 :'>:?3'
you=: qio1@check@acquire@prompt
-prompt=: [ echo@'your choice?'
-acquire=: choice}~'123'i.0{' ',~read
-check=: (choice}~ 665 - score&{)@([ echo@'g21: early termination')^:(3 = choice&{)
-qio1=: choice}~ ([: >: choice&{)
+prompt=: [ ([: echo 'your choice?'"_)
+acquire=: choice Alter~ ('123' i. 0 { ' ' ,~ read)
+check=: (choice Alter~ (665 - score Fetch))@([ ([: echo 'g21: early termination'"_))^:(3 = choice Fetch)
+qio1=: choice Alter~ ([: >: choice Fetch)
-setup=: ([ echo@'On your turn enter 1 2 or 3, other entries exit')@(?@2 turn} ])@0 0 0 NB. choose first player randomly
+setup=: ([ [: echo 'On your turn enter 1 2 or 3, other entries exit'"_)@((3 :'?2') turn Alter ])@0 0 0"_ NB. choose first player randomly
+summarize=: ' won' ,~ (];._2 'it you ') {~ turn Fetch
-summarize=: ' won',~ ];._2@'it you '{~turn&{
-
-read=: 1!:1@1
-write=: 1!:2&4 NB. unused
-format=: ''&$: : ([: ; (a: , [: ":&.> [) ,. '{}' ([ (E. <@}.;._1 ]) ,) ])
+read=: 1!:1@:1:
+write=: 1!:2 4: NB. unused
+format=: ''&$: :([: ; (a: , [: ":&.> [) ,. '{}' ([ (E. <@}.;._1 ]) ,) ])
diff --git a/Task/21-game/Julia/21-game.jl b/Task/21-game/Julia/21-game.julia
similarity index 100%
rename from Task/21-game/Julia/21-game.jl
rename to Task/21-game/Julia/21-game.julia
diff --git a/Task/21-game/Python/21-game-1.py b/Task/21-game/Python/21-game-1.py
index fa4bcbcfdc..61db2b29a5 100644
--- a/Task/21-game/Python/21-game-1.py
+++ b/Task/21-game/Python/21-game-1.py
@@ -1,62 +1,62 @@
from random import randint
def start():
- game_count=0
- print("Enter q to quit at any time.\nThe computer will choose first.\nRunning total is now {}".format(game_count))
- roundno=1
- while game_count<21:
- print("\nROUND {}: \n".format(roundno))
- t = select_count(game_count)
- game_count = game_count+t
- print("Running total is now {}\n".format(game_count))
- if game_count>=21:
- print("So, commiserations, the computer has won!")
- return 0
- t = request_count()
- if not t:
- print('OK,quitting the game')
- return -1
- game_count = game_count+t
- print("Running total is now {}\n".format(game_count))
- if game_count>=21:
- print("So, congratulations, you've won!")
- return 1
- roundno+=1
+ game_count=0
+ print("Enter q to quit at any time.\nThe computer will choose first.\nRunning total is now {}".format(game_count))
+ roundno=1
+ while game_count<21:
+ print("\nROUND {}: \n".format(roundno))
+ t = select_count(game_count)
+ game_count = game_count+t
+ print("Running total is now {}\n".format(game_count))
+ if game_count>=21:
+ print("So, commiserations, the computer has won!")
+ return 0
+ t = request_count()
+ if not t:
+ print('OK,quitting the game')
+ return -1
+ game_count = game_count+t
+ print("Running total is now {}\n".format(game_count))
+ if game_count>=21:
+ print("So, congratulations, you've won!")
+ return 1
+ roundno+=1
def select_count(game_count):
- '''selects a random number if the game_count is less than 18. otherwise chooses the winning number'''
- if game_count<18:
- t= randint(1,3)
- else:
- t = 21-game_count
- print("The computer chooses {}".format(t))
- return t
+ '''selects a random number if the game_count is less than 18. otherwise chooses the winning number'''
+ if game_count<18:
+ t= randint(1,3)
+ else:
+ t = 21-game_count
+ print("The computer chooses {}".format(t))
+ return t
def request_count():
- '''request user input between 1,2 and 3. It will continue till either quit(q) or one of those numbers is requested.'''
- t=""
- while True:
- try:
- t = raw_input('Your choice 1 to 3 :')
- if int(t) in [1,2,3]:
- return int(t)
- else:
- print("Out of range, try again")
- except:
- if t=="q":
- return None
- else:
- print("Invalid Entry, try again")
+ '''request user input between 1,2 and 3. It will continue till either quit(q) or one of those numbers is requested.'''
+ t=""
+ while True:
+ try:
+ t = raw_input('Your choice 1 to 3 :')
+ if int(t) in [1,2,3]:
+ return int(t)
+ else:
+ print("Out of range, try again")
+ except:
+ if t=="q":
+ return None
+ else:
+ print("Invalid Entry, try again")
c=0
m=0
r=True
while r:
- o = start()
- if o==-1:
- break
- else:
- c+=1 if o==0 else 0
- m+=1 if o==1 else 0
- print("Computer wins {0} game, human wins {1} games".format(c,m))
- t = raw_input("Another game?(press y to continue):")
- r = (t=="y")
+ o = start()
+ if o==-1:
+ break
+ else:
+ c+=1 if o==0 else 0
+ m+=1 if o==1 else 0
+ print("Computer wins {0} game, human wins {1} games".format(c,m))
+ t = raw_input("Another game?(press y to continue):")
+ r = (t=="y")
diff --git a/Task/21-game/Rebol/21-game.rebol b/Task/21-game/Rebol/21-game.rebol
deleted file mode 100644
index 03fa84803d..0000000000
--- a/Task/21-game/Rebol/21-game.rebol
+++ /dev/null
@@ -1,26 +0,0 @@
-Rebol [
- title: "Rosetta code: 21 game"
- file: %21_game.r3
- url: https://rosettacode.org/wiki/21_game
-]
-
-game-21: function[][
- total: 0
- human?: true
- while [total <> 21][
- either human? [
- n: ask "Enter a number between 1 and 3 (CTRL+C to quit): "
- if none? n [quit]
- unless parse n [#"1" | #"2" | #"3"][ continue ]
- n: to integer! n
- ][ ;computer
- if 3 < n: 21 - total [ n: random 3 ]
- print ["Computer picks:" as-yellow n]
- ]
- total: total + n
- print ["Total:" as-green total]
- human?: not human?
- ]
- print as-green pick ["Computer wins!" "You win!"] human?
-]
-game-21
diff --git a/Task/21-game/Ring/21-game.ring b/Task/21-game/Ring/21-game.ring
index 06bcf1934e..51094dea5e 100644
--- a/Task/21-game/Ring/21-game.ring
+++ b/Task/21-game/Ring/21-game.ring
@@ -100,9 +100,9 @@ func choose(ch,ym)
ok
func msgBox(text) {
- m = new qMessageBox(win1) {
- setWindowTitle("21 Game")
- setText(text)
- show()
- }
+ m = new qMessageBox(win1) {
+ setWindowTitle("21 Game")
+ setText(text)
+ show()
+ }
}
diff --git a/Task/21-game/Rust/21-game.rs b/Task/21-game/Rust/21-game.rust
similarity index 100%
rename from Task/21-game/Rust/21-game.rs
rename to Task/21-game/Rust/21-game.rust
diff --git a/Task/21-game/Uiua/21-game.uiua b/Task/21-game/Uiua/21-game.uiua
deleted file mode 100644
index 8f17d8a5d9..0000000000
--- a/Task/21-game/Uiua/21-game.uiua
+++ /dev/null
@@ -1,6 +0,0 @@
-T ← 21
-P ← &p$"_ played: _\tTotal: _"
-Play‼ ← ⍥(&p$"_ won." ^0)⊸=T⊸P ^0 ⟜+ ^1
-Computer ← Play‼"Computer" ⍥+₁⊸=0◿4⊸˜-T # Aim for Rem mod 4 = 0
-Random ← Play‼"Random"+1⌊×3⚂ # Random play.
-◌⍢(⍥Computer⊸ 21:
- recur()
- val
- else: recur()
diff --git a/Task/24-game-Solve/Ada/24-game-solve.adb b/Task/24-game-Solve/Ada/24-game-solve.adb
deleted file mode 100644
index 2494b4e14f..0000000000
--- a/Task/24-game-Solve/Ada/24-game-solve.adb
+++ /dev/null
@@ -1,245 +0,0 @@
-with Ada.Text_IO; use Ada.Text_IO;
-
-procedure Game24_Solver is
- subtype Index is Positive range 1 .. 4;
- subtype Digit is Integer range 1 .. 9;
- type Digit_Array_Type is array (Index) of Digit;
-
- Success_Exception : exception;
-
- Digit_Array : Digit_Array_Type;
-
- procedure Swap (A, B : Index) is
- Tmp : Digit;
- begin
- if A /= B then
- Tmp := Digit_Array (A);
- Digit_Array (A) := Digit_Array (B);
- Digit_Array (B) := Tmp;
- end if;
- end Swap;
-
- procedure Do_Operation_Options is
- type Operation_Character is ('+', '-', '*', '/');
- type Operation_Access is
- access function (Left, Right : Float) return Float;
- type Allowed_Operation_Array_Type is
- array (Operation_Character) of Operation_Access;
-
- function Operation_Character_To_String
- (C : in Operation_Character) return String is
- begin
- case C is
- when '+' =>
- return "+";
-
- when '-' =>
- return "-";
-
- when '*' =>
- return "*";
-
- when '/' =>
- return "/";
- end case;
- end Operation_Character_To_String;
-
- function Add_Floats (Left, Right : Float) return Float is
- begin
- return Left + Right;
- end Add_Floats;
-
- function Subtract_Floats (Left, Right : Float) return Float is
- begin
- return Left - Right;
- end Subtract_Floats;
-
- function Multiply_Floats (Left, Right : Float) return Float is
- begin
- return Left * Right;
- end Multiply_Floats;
-
- function Divide_Floats (Left, Right : Float) return Float is
- begin
- return Left / Right;
- end Divide_Floats;
-
- Allowed_Operation_Array : constant Allowed_Operation_Array_Type :=
- ('+' => Add_Floats'Access,
- '-' => Subtract_Floats'Access,
- '*' => Multiply_Floats'Access,
- '/' => Divide_Floats'Access);
-
- A : Digit renames Digit_Array (1);
- B : Digit renames Digit_Array (2);
- C : Digit renames Digit_Array (3);
- D : Digit renames Digit_Array (4);
- begin
- for Op1 in Operation_Character loop
- for Op2 in Operation_Character loop
- for Op3 in Operation_Character loop
- if (Allowed_Operation_Array (Op3)
- (Allowed_Operation_Array (Op2)
- (Allowed_Operation_Array (Op1) (Float (A), Float (B)),
- Float (C)),
- Float (D)))
- = 24.0
- then
- Put_Line
- ("(("
- & Digit'Image (A)
- & " "
- & Operation_Character_To_String (Op1)
- & " "
- & Digit'Image (B)
- & ") "
- & Operation_Character_To_String (Op2)
- & " "
- & Digit'Image (C)
- & ") "
- & Operation_Character_To_String (Op3)
- & " "
- & Digit'Image (D));
- raise Success_Exception;
- end if;
- if (Allowed_Operation_Array (Op2)
- (Allowed_Operation_Array (Op1) (Float (A), Float (B)),
- Allowed_Operation_Array (Op3) (Float (C), Float (D))))
- = 24.0
- then
- Put_Line
- ("("
- & Digit'Image (A)
- & " "
- & Operation_Character_To_String (Op1)
- & " "
- & Digit'Image (B)
- & ") "
- & Operation_Character_To_String (Op2)
- & " ("
- & Digit'Image (C)
- & " "
- & Operation_Character_To_String (Op3)
- & " "
- & Digit'Image (D)
- & ")");
- raise Success_Exception;
- end if;
- if (Allowed_Operation_Array (Op1)
- (Float (A),
- Allowed_Operation_Array (Op2)
- (Float (B),
- Allowed_Operation_Array (Op3)
- (Float (C), Float (D)))))
- = 24.0
- then
- Put_Line
- (Digit'Image (A)
- & " "
- & Operation_Character_To_String (Op1)
- & " ("
- & Digit'Image (B)
- & " "
- & Operation_Character_To_String (Op2)
- & " ("
- & Digit'Image (C)
- & " "
- & Operation_Character_To_String (Op3)
- & " "
- & Digit'Image (D)
- & "))");
- raise Success_Exception;
- end if;
- if (Allowed_Operation_Array (Op1)
- (Float (A),
- Allowed_Operation_Array (Op3)
- (Allowed_Operation_Array (Op2) (Float (B), Float (C)),
- Float (D))))
- = 24.0
- then
- Put_Line
- (Digit'Image (A)
- & " "
- & Operation_Character_To_String (Op1)
- & " (("
- & Digit'Image (B)
- & " "
- & Operation_Character_To_String (Op2)
- & " "
- & Digit'Image (C)
- & ") "
- & Operation_Character_To_String (Op3)
- & " "
- & Digit'Image (D)
- & ")");
- raise Success_Exception;
- end if;
- if (Allowed_Operation_Array (Op3)
- (Allowed_Operation_Array (Op1)
- (Float (A),
- Allowed_Operation_Array (Op2) (Float (B), Float (C))),
- Float (D)))
- = 24.0
- then
- Put_Line
- ("("
- & Digit'Image (A)
- & " "
- & Operation_Character_To_String (Op1)
- & " ("
- & Digit'Image (B)
- & " "
- & Operation_Character_To_String (Op2)
- & " "
- & Digit'Image (C)
- & ")) "
- & Operation_Character_To_String (Op3)
- & " "
- & Digit'Image (D));
- raise Success_Exception;
- end if;
- end loop;
- end loop;
- end loop;
- end Do_Operation_Options;
-
- procedure Do_Permutations (Start_Index : Index := Index'First) is
- begin
- if Start_Index = Index'Last then
- Do_Operation_Options;
- return;
- end if;
-
- for I in Start_Index .. Index'Last loop
- Swap (Start_Index, I);
- Do_Permutations (Start_Index + 1);
- Swap (Start_Index, I);
- end loop;
- end Do_Permutations;
-begin
- Put ("Enter 4 digits: ");
- declare
- Zero_Pos : constant Integer := Character'Pos ('0');
- Input : String := Get_Line;
- begin
- if Input'Length = 4 then
- for I in Index'Range loop
- if Input (I) in '1' .. '9' then
- Digit_Array (I) := Character'Pos (Input (I)) - Zero_Pos;
- else
- Put_Line
- ("Invalid input: all characters must be non-zero digits");
- return;
- end if;
- end loop;
- else
- Put_Line ("Invalid input: it must have length of 4");
- return;
- end if;
- end;
- Do_Permutations;
- Put_Line ("Solution not found");
-exception
- when Success_Exception =>
- null;
-end Game24_Solver;
diff --git a/Task/24-game-Solve/COBOL/24-game-solve.cob b/Task/24-game-Solve/COBOL/24-game-solve.cobol
similarity index 100%
rename from Task/24-game-Solve/COBOL/24-game-solve.cob
rename to Task/24-game-Solve/COBOL/24-game-solve.cobol
diff --git a/Task/24-game-Solve/Dart/24-game-solve.dart b/Task/24-game-Solve/Dart/24-game-solve.dart
deleted file mode 100644
index 38d41aaba9..0000000000
--- a/Task/24-game-Solve/Dart/24-game-solve.dart
+++ /dev/null
@@ -1,226 +0,0 @@
-enum Operator {
- Sub,
- Plus,
- Mul,
- Div
-}
-
-class Factor {
- String content;
- int value;
-
- Factor({this.content, this.value});
-
- Factor copyWith({String content, int value}) {
- return Factor(
- content: content ?? this.content,
- value: value ?? this.value
- );
- }
-}
-
-List apply(Operator op, List left, List right) {
- List ret = [];
- for (var l in left) {
- for (var r in right) {
- switch (op) {
- case Operator.Sub:
- if (l.value > r.value) {
- ret.add(Factor(
- content: "(${l.content} - ${r.content})",
- value: l.value - r.value
- ));
- }
- break;
- case Operator.Plus:
- ret.add(Factor(
- content: "(${l.content} + ${r.content})",
- value: l.value + r.value
- ));
- break;
- case Operator.Mul:
- ret.add(Factor(
- content: "(${l.content} × ${r.content})",
- value: l.value * r.value
- ));
- break;
- case Operator.Div:
- if (l.value >= r.value && r.value > 0 && l.value % r.value == 0) {
- ret.add(Factor(
- content: "(${l.content} / ${r.content})",
- value: l.value ~/ r.value
- ));
- }
- break;
- }
- }
- }
- return ret;
-}
-
-List calc(List op, List numbers) {
- List _calc(List op, List numbers, List acc) {
- if (op.isEmpty) {
- return List.from(acc);
- }
-
- List ret = [];
- var monoFactor = [Factor(
- content: numbers[0].toString(),
- value: numbers[0],
- )];
-
- switch (op[0]) {
- case Operator.Mul:
- ret.addAll(apply(op[0], acc, monoFactor));
- break;
- case Operator.Div:
- ret.addAll(apply(op[0], acc, monoFactor));
- ret.addAll(apply(op[0], monoFactor, acc));
- break;
- case Operator.Sub:
- ret.addAll(apply(op[0], acc, monoFactor));
- ret.addAll(apply(op[0], monoFactor, acc));
- break;
- case Operator.Plus:
- ret.addAll(apply(op[0], acc, monoFactor));
- break;
- }
-
- return _calc(
- op.sublist(1),
- numbers.sublist(1),
- ret
- );
- }
-
- return _calc(
- op,
- numbers.sublist(1),
- [Factor(content: numbers[0].toString(), value: numbers[0])]
- );
-}
-
-List solutions(List numbers) {
- List ret = [];
- Set hashSet = {};
-
- for (var ops in OpIter()) {
- for (var order in orders()) {
- var orderedNumbers = applyOrder(numbers, order);
- var results = calc(ops, orderedNumbers);
-
- for (var factor in results) {
- if (factor.value == 24 && !hashSet.contains(factor.content)) {
- hashSet.add(factor.content);
- ret.add(factor);
- }
- }
- }
- }
-
- return ret;
-}
-
-class OpIter extends Iterable> {
- @override
- Iterator> get iterator => _OpIterator();
-}
-
-class _OpIterator implements Iterator> {
- int _index = 0;
- static const List OPTIONS = [
- Operator.Mul,
- Operator.Sub,
- Operator.Plus,
- Operator.Div
- ];
-
- @override
- List get current {
- final f1 = OPTIONS[(_index & (3 << 4)) >> 4];
- final f2 = OPTIONS[(_index & (3 << 2)) >> 2];
- final f3 = OPTIONS[(_index & 3)];
- return [f1, f2, f3];
- }
-
- @override
- bool moveNext() {
- if (_index >= 1 << 6) {
- return false;
- }
- _index++;
- return true;
- }
-}
-
-List> orders() {
- return [
- [0, 1, 2, 3],
- [0, 1, 3, 2],
- [0, 2, 1, 3],
- [0, 2, 3, 1],
- [0, 3, 1, 2],
- [0, 3, 2, 1],
- [1, 0, 2, 3],
- [1, 0, 3, 2],
- [1, 2, 0, 3],
- [1, 2, 3, 0],
- [1, 3, 0, 2],
- [1, 3, 2, 0],
- [2, 0, 1, 3],
- [2, 0, 3, 1],
- [2, 1, 0, 3],
- [2, 1, 3, 0],
- [2, 3, 0, 1],
- [2, 3, 1, 0],
- [3, 0, 1, 2],
- [3, 0, 2, 1],
- [3, 1, 0, 2],
- [3, 1, 2, 0],
- [3, 2, 0, 1],
- [3, 2, 1, 0]
- ];
-}
-
-List applyOrder(List numbers, List order) {
- return [
- numbers[order[0]],
- numbers[order[1]],
- numbers[order[2]],
- numbers[order[3]]
- ];
-}
-
-void main(List args) {
- List numbers = [];
-
- if (args.isNotEmpty) {
- String input = args[0];
- for (var char in input.split('')) {
- int n = int.tryParse(char);
- if (n != null) {
- numbers.add(n);
- }
-
- if (numbers.length == 4) {
- var sols = solutions(numbers);
- var len = sols.length;
-
- if (len == 0) {
- print('no solution for ${numbers[0]}, ${numbers[1]}, ${numbers[2]}, ${numbers[3]}');
- return;
- }
-
- print('solutions for ${numbers[0]}, ${numbers[1]}, ${numbers[2]}, ${numbers[3]}');
- for (var s in sols) {
- print(s.content);
- }
- print('$len solutions found');
- return;
- }
- }
- } else {
- print('empty input');
- }
-}
diff --git a/Task/24-game-Solve/Elixir/24-game-solve.ex b/Task/24-game-Solve/Elixir/24-game-solve.elixir
similarity index 100%
rename from Task/24-game-Solve/Elixir/24-game-solve.ex
rename to Task/24-game-Solve/Elixir/24-game-solve.elixir
diff --git a/Task/24-game-Solve/Fortran/24-game-solve-3.f b/Task/24-game-Solve/Fortran/24-game-solve-3.f
deleted file mode 100644
index c3f0095d7a..0000000000
--- a/Task/24-game-Solve/Fortran/24-game-solve-3.f
+++ /dev/null
@@ -1,481 +0,0 @@
-module game24_module
- use omp_lib
- use iso_fortran_env, only: int64
- implicit none
- ! Define constants
- integer, parameter :: max_limit = 8 ! Maximum allowed value for the number of inputs
- integer, parameter :: expr_len = 200 ! Maximum length for expressions
-
- ! Precomputed total calls for n=6,7,8
- integer(int64), parameter :: total_calls_n6 = 20000000_int64
- integer(int64), parameter :: total_calls_n7 = 2648275200_int64
- integer(int64), parameter :: total_calls_n8 = 444557593600_int64
-
- !----------------------- Progress Indicator Variables ---------------------
- integer(int64) :: total_calls = 0 ! Total number of recursive calls
- integer(int64) :: completed_calls = 0 ! Number of completed recursive calls
- integer :: last_percentage = -1 ! Last percentage reported
- integer, parameter :: progress_bar_width = 50 ! Width of the progress bar
- character(len=1) :: carriage_return = char(13) ! Carriage return character
- logical :: show_progress = .false. ! Flag to show progress bar
- !--------------------------------------------------------------------------
-contains
-
- !-----------------------------------------------------------------------
- ! ! Aborted function: calculate_total_calls
- ! ! Description:
- ! ! Estimates the total number of recursive calls for a given n,
- ! ! considering commutativity (addition and multiplication).
- ! ! Arguments:
- ! ! n: The number of input numbers.
- ! ! Returns:
- ! ! The estimated total number of recursive calls as an integer.
- ! !-----------------------------------------------------------------------
- ! integer function calculate_total_calls(n)
- ! implicit none
- ! integer, intent(in) :: n
- ! integer :: k
- ! calculate_total_calls = 1
- ! do k = 2, n
- ! ! For each pair, there are 6 possible operations:
- ! ! 1 addition, 1 multiplication (commutative)
- ! ! 2 subtraction, 2 division (non-commutative)
- ! calculate_total_calls = calculate_total_calls * ((k * (k - 1)) / 2) * 6
- ! end do
- ! end function calculate_total_calls
-
- !-----------------------------------------------------------------------
- ! Subroutine: convert_to_number
- ! Description:
- ! Converts user input (numbers or card values) into numeric values.
- ! Handles card values such as 'A', 'J', 'Q', 'K' and converts them into
- ! corresponding numbers (A=1, J=11, Q=12, K=13).
- ! Arguments:
- ! input_str: Input string representing the number or card.
- ! number: Output real number after conversion.
- ! ios: I/O status indicator (0 for success, non-zero for error).
- !-----------------------------------------------------------------------
- subroutine convert_to_number(input_str, number, ios)
- implicit none
- character(len=*), intent(in) :: input_str
- real, intent(out) :: number
- integer, intent(out) :: ios
- character(len=1) :: first_char
- real :: temp_number
-
- ios = 0 ! Reset the I/O status to 0 (valid input by default)
- first_char = input_str(1:1)
-
- select case (first_char)
- case ('A', 'a')
- number = 1.0
- case ('J', 'j')
- number = 11.0
- case ('Q', 'q')
- number = 12.0
- case ('K', 'k')
- number = 13.0
- case default
- read (input_str, *, iostat=ios) temp_number ! Attempt to read a real number
-
- ! If input is not a valid real number or is not an integer, set ios to 1
- if (ios /= 0 .or. mod(temp_number, 1.0) /= 0.0) then
- ios = 1 ! Invalid input
- else
- number = temp_number ! Valid integer input
- end if
- end select
- end subroutine convert_to_number
-
- !-----------------------------------------------------------------------
- ! Subroutine: remove_decimal_zeros
- ! Description:
- ! Removes trailing zeros after the decimal point from a string.
- ! Arguments:
- ! str: Input string that may contain trailing zeros.
- ! result: Output string with trailing zeros removed.
- !-----------------------------------------------------------------------
- subroutine remove_decimal_zeros(str, result)
- implicit none
- character(len=*), intent(in) :: str ! Input: String to remove zeros from
- character(len=*), intent(out) :: result ! Output: String without trailing zeros
- integer :: i, len_str ! Loop counter and string length
-
- len_str = len_trim(str)
- result = adjustl(str(1:len_str))
-
- ! Find the position of the decimal point
- i = index(result, '.')
-
- ! If there's a decimal point, remove trailing zeros
- if (i > 0) then
- do while (len_str > i .and. result(len_str:len_str) == '0')
- len_str = len_str - 1
- end do
- if (result(len_str:len_str) == '.') len_str = len_str - 1
- result = result(1:len_str)
- end if
- end subroutine remove_decimal_zeros
-
- !-----------------------------------------------------------------------
- ! Subroutine: create_new_arrays
- ! Description:
- ! Creates new arrays after performing an operation.
- ! Arguments:
- ! nums: Input array of numbers.
- ! exprs: Input array of expressions.
- ! idx1: Index of the first element to remove.
- ! idx2: Index of the second element to remove.
- ! result: Result of the operation.
- ! new_expr: New expression string.
- ! new_nums: Output array of numbers with elements removed and result added.
- ! new_exprs: Output array of expressions with elements removed and new_expr added.
- !-----------------------------------------------------------------------
- subroutine create_new_arrays(nums, exprs, idx1, idx2, result, new_expr, new_nums, new_exprs)
- implicit none
- real, intent(in) :: nums(:) ! Input: Array of numbers
- character(len=expr_len), intent(in) :: exprs(:) ! Input: Array of expressions
- integer, intent(in) :: idx1, idx2 ! Input: Indices of elements to remove
- real, intent(in) :: result ! Input: Result of the operation
- character(len=expr_len), intent(in) :: new_expr ! Input: New expression
- real, allocatable, intent(out) :: new_nums(:) ! Output: New array of numbers
- character(len=expr_len), allocatable, intent(out) :: new_exprs(:) ! Output: New array of expressions
- integer :: i, j, n ! Loop counters and size of input arrays
-
- n = size(nums)
- allocate (new_nums(n - 1))
- allocate (new_exprs(n - 1))
-
- j = 0
- do i = 1, n
- if (i /= idx1 .and. i /= idx2) then
- j = j + 1
- new_nums(j) = nums(i)
- new_exprs(j) = exprs(i)
- end if
- end do
-
- ! Add the result of the operation to the new arrays
- new_nums(n - 1) = result
- new_exprs(n - 1) = new_expr
- end subroutine create_new_arrays
-
- !-----------------------------------------------------------------------
- ! Subroutine: update_progress_bar
- ! Description:
- ! Updates and displays the horizontal percentage-based progress bar.
- ! Arguments:
- ! None
- !-----------------------------------------------------------------------
- subroutine update_progress_bar()
- implicit none
- real :: percentage
- integer :: filled_length
- character(len=progress_bar_width) :: bar
- integer :: int_percentage
-
- if (total_calls == 0 .or. .not. show_progress) return ! Avoid division by zero and check the flag
-
- percentage = real(completed_calls) / real(total_calls) * 100.0
-
- ! Ensure percentage does not exceed 100%
- if (percentage > 100.0) percentage = 100.0
-
- ! Calculate integer percentage
- int_percentage = int(percentage)
-
- ! Update progress bar only when percentage increases by at least 1%
- if (int_percentage > last_percentage) then
- last_percentage = int_percentage
-
- ! Calculate the filled length of the progress bar
- filled_length = min(int(percentage / 100.0 * progress_bar_width), progress_bar_width)
-
- ! Construct the progress bar string
- bar = repeat('=', filled_length)
- if (filled_length < progress_bar_width) then
- bar = bar//'>'//repeat(' ', progress_bar_width - filled_length - 1)
- end if
-
- ! Print the progress bar and integer percentage
- write (*, '(A, F4.1, A)', advance='no') carriage_return//'['//bar//'] ', percentage, '%'
- call flush (0) ! Ensure output is displayed immediately
- end if
- end subroutine update_progress_bar
-
- !-----------------------------------------------------------------------
- ! Recursive Subroutine: solve_24
- ! Description:
- ! Recursively solves the 24 game by trying all possible operations.
- ! Utilizes OpenMP tasks for parallelization.
- ! Arguments:
- ! nums: Array of numbers to use in the game.
- ! exprs: Array of string expressions representing the numbers.
- ! found: Logical flag indicating if a solution has been found.
- !-----------------------------------------------------------------------
- recursive subroutine solve_24(nums, exprs, found)
- use omp_lib
- implicit none
- real, intent(in) :: nums(:) ! Input: Array of numbers
- character(len=expr_len), intent(in) :: exprs(:) ! Input: Array of expressions
- logical, intent(inout) :: found ! Input/Output: Flag indicating if a solution is found
- integer :: n ! Size of the input arrays
- integer :: i, j, op ! Loop counters
- real :: a, b, result ! Temporary variables for calculations
- real, allocatable :: new_nums(:) ! Temp array to store numbers after an operation
- character(len=expr_len), allocatable :: new_exprs(:) ! Temp array to store expressions after an operation
- character(len=expr_len) :: expr_a, expr_b, new_expr ! Temp variables for expressions
-
- n = size(nums)
-
- ! Increment the completed_calls counter and update progress bar
- if (show_progress) then
- !$omp atomic
- completed_calls = completed_calls + 1
- call update_progress_bar()
- end if
-
- ! If a solution is found, return
- if (found) return
-
- ! Base case: If only one number is left, check if it is 24
- if (n == 1) then
- if (abs(nums(1) - 24.0) < 1e-4) then
- if (show_progress) then
- write (*, '(A, F5.1, A)', advance='no') carriage_return//'['//repeat('=', progress_bar_width)//'] ', 100.0, '%'
- write (*, '(A)') '' ! Insert a blank line
- end if
- !$omp critical
- write (*, '(A, A, A, F10.7, A)') 'Solution found:', trim(exprs(1)), '= 24 (', nums(1), ')'
- found = .true.
- !$omp end critical
- end if
- return
- end if
-
- ! Iterate over all pairs of numbers
- do i = 1, n - 1
- do j = i + 1, n
- a = nums(i)
- b = nums(j)
- expr_a = exprs(i)
- expr_b = exprs(j)
-
- ! Iterate over all operators
- do op = 1, 4
- ! Avoid division by zero
- if ((op == 4 .and. abs(b) < 1e-6)) cycle
-
- ! Perform the operation and create the new expression
- select case (op)
- case (1)
- result = a + b
- new_expr = '('//trim(expr_a)//'+'//trim(expr_b)//')'
- case (2)
- result = a - b
- new_expr = '('//trim(expr_a)//'-'//trim(expr_b)//')'
- case (3)
- result = a * b
- new_expr = '('//trim(expr_a)//'*'//trim(expr_b)//')'
- case (4)
- result = a / b
- new_expr = '('//trim(expr_a)//'/'//trim(expr_b)//')'
- end select
-
- ! Create new arrays with the selected numbers removed
- call create_new_arrays(nums, exprs, i, j, result, new_expr, new_nums, new_exprs)
-
- ! For the first few recursion levels, create parallel tasks
- if (n >= 6 .and. omp_get_level() < 2) then
- !$omp task shared(found) firstprivate(new_nums, new_exprs)
- call solve_24(new_nums, new_exprs, found)
- !$omp end task
- else
- call solve_24(new_nums, new_exprs, found)
- end if
-
- ! If a solution is found, deallocate memory and return
- if (found) then
- deallocate (new_nums)
- deallocate (new_exprs)
- return
- end if
-
- ! Handle commutative operations only once
- if (op == 1 .or. op == 3) cycle
-
- ! Swap operands for subtraction and division
- if (op == 2 .or. op == 4) then
- if (op == 4 .and. abs(a) < 1e-6) cycle ! Avoid division by zero
-
- select case (op)
- case (2)
- result = b - a
- new_expr = '('//trim(expr_b)//'-'//trim(expr_a)//')'
- case (4)
- result = b / a
- new_expr = '('//trim(expr_b)//'/'//trim(expr_a)//')'
- end select
-
- ! Create new arrays with the selected numbers removed
- call create_new_arrays(nums, exprs, i, j, result, new_expr, new_nums, new_exprs)
-
- ! For the first few recursion levels, create parallel tasks
- if (n >= 6 .and. omp_get_level() < 2) then
- !$omp task shared(found) firstprivate(new_nums, new_exprs)
- call solve_24(new_nums, new_exprs, found)
- !$omp end task
- else
- ! Recursively call the solve_24 function with the new arrays
- call solve_24(new_nums, new_exprs, found)
- end if
-
- ! If a solution is found, deallocate memory and return
- if (found) then
- deallocate (new_nums)
- deallocate (new_exprs)
- return
- end if
- end if
-
- end do ! End of operator loop
- end do ! End of j loop
- end do ! End of i loop
- end subroutine solve_24
-
-end module game24_module
-
-program game24
- use game24_module
- implicit none
-
- ! Declare variables
- integer :: maxn ! Number of numbers to be entered by the user
- real, allocatable :: numbers(:) ! Array to store the numbers entered by the user
- character(len=expr_len), allocatable :: expressions(:) ! Array to store the expressions
- integer :: i, ios ! Loop counter and I/O status
- logical :: found_solution ! Flag to indicate if a solution was found
- character(len=10) :: user_input ! Variable to store user input
- character(len=1) :: play_again ! Variable to store the user's decision
-
- do ! Game loop to allow restarting the game
-
- ! Prompt the user for the number of numbers to use in the game
- do
- write (*, '(A,I0,A)', advance='no') 'Enter the number of numbers (1 to ', max_limit, '): '
- read (*, *, iostat=ios) maxn
-
- ! Check if the input is valid
- if (ios /= 0) then
- write (*, '(A,I0,A)') 'Invalid input. Please enter an integer between 1 and ', max_limit, '.'
- cycle
- end if
-
- ! Validate the input: Ensure the number of numbers is within the valid range
- if (maxn < 1 .or. maxn > max_limit) then
- write (*, '(A,I0,A)') 'Error: Number of numbers must be between 1 and ', max_limit, '. Try again.'
- cycle
- end if
-
- exit ! Exit loop if the input is valid
- end do
-
- ! Allocate memory for the arrays based on the number of numbers
- allocate (numbers(maxn))
- allocate (expressions(maxn))
-
- ! Prompt the user to enter the numbers or card values
- write (*, '(A,I0,A)') 'Enter ', maxn, ' numbers or card values (A=1, J=11, Q=12, K=13).'
- do i = 1, maxn
- do
- ! Prompt the user to enter a number or card value
- write (*, '(A,I0,A)', advance='no') 'Enter value for card ', i, ': '
- read (*, '(A)', iostat=ios) user_input
-
- ! Check if input is an integer or valid card symbol (A, J, Q, K)
- call convert_to_number(user_input, numbers(i), ios)
-
- ! If the input is valid, exit loop
- if (ios == 0) exit
-
- ! Invalid input: prompt the user to try again
- write (*, '(A)') 'Invalid input. Please enter an integer or valid card symbol (A, J, Q, K).'
- end do
-
- ! Convert the number to a string expression and remove trailing zeros
- write (expressions(i), '(F0.2)') numbers(i)
- call remove_decimal_zeros(expressions(i), expressions(i))
- end do
-
- ! Initialize the solution flag to false
- found_solution = .false.
-
- ! Assign precomputed total_calls based on n
- select case (maxn)
- case (6)
- total_calls = total_calls_n6
- case (7)
- total_calls = total_calls_n7
- case (8)
- total_calls = total_calls_n8
- case default
- total_calls = 0
- end select
-
- ! Decide whether to show progress bar based on n
- if (maxn >= 6) then
- show_progress = .true.
- completed_calls = 0
- last_percentage = -1
-
- ! Initialize progress bar display
- write (*, '(A)', advance='no') '['//repeat(' ', progress_bar_width)//'] 0%'
- call flush (0) ! Ensure the output is displayed immediately
- else
- show_progress = .false.
- end if
-
- ! Start parallel region
- !$omp parallel
- !$omp single nowait
- call solve_24(numbers, expressions, found_solution)
- !$omp end single
- !$omp end parallel
-
- ! After search completes, ensure the progress bar reaches 100% if shown
- if (show_progress .and. .not. found_solution) then
- write (*, '(A, A)', advance='no') carriage_return//'['//repeat('=', progress_bar_width)//'] 100% '
- call flush (0)
- write (*, '(A)') '' ! Insert a blank line
- end if
-
- ! If a solution was found and progress bar is shown, ensure a blank line
- if (show_progress .and. found_solution) then
- ! Progress bar already refreshed to 100% and blank line inserted in solve_24
- end if
-
- ! If no solution was found, print a message
- if (.not. found_solution) then
- write (*, '(A)') 'No valid solution found.'
- end if
-
- ! Deallocate the memory used by the arrays
- deallocate (numbers)
- deallocate (expressions)
-
- ! Ask the user if they want to play again
- if (show_progress) then
- write (*, '(A)', advance='no') carriage_return//'Play again? (Enter y/n to continue or any other key to exit): '
- else
- write (*, '(A)', advance='no') 'Play again? (Enter y/n to continue or any other key to exit): '
- end if
- read (*, '(A)') play_again ! Read user input
-
- ! Check if the user wants to exit
- if (play_again /= 'y' .and. play_again /= 'Y') exit
-
- end do ! End of game loop
-
- write (*, '(A)') 'Exiting the game...'
-
-end program game24
diff --git a/Task/24-game-Solve/FreeBASIC/24-game-solve.basic b/Task/24-game-Solve/FreeBASIC/24-game-solve.basic
deleted file mode 100644
index 4593f64cb2..0000000000
--- a/Task/24-game-Solve/FreeBASIC/24-game-solve.basic
+++ /dev/null
@@ -1,124 +0,0 @@
-Type GameState
- digitos(3) As Double
- operaciones(2) As String
-End Type
-
-Function randomDigits() As String
- Dim As String resultado = ""
- For i As Integer = 0 To 3
- resultado &= Str(Int(Rnd * 9) + 1)
- Next
- Return resultado
-End Function
-
-Function evaluate(digitos() As Double, operaciones() As String) As Double
- Dim As Double valor = digitos(0)
-
- For i As Integer = 0 To 2
- Select Case operaciones(i)
- Case "+": valor += digitos(i +1)
- Case "-": valor -= digitos(i +1)
- Case "*": valor *= digitos(i +1)
- Case "/": If digitos(i +1) <> 0 Then valor /= digitos(i +1)
- End Select
- Next
-
- Return valor
-End Function
-
-Sub permute(digitos() As Double, soluciones() As GameState, Byref solutionCnt As Integer, k As Integer)
- Dim As String*1 opChars(3) = {"+", "-", "*", "/"}
- Dim As String ops(2)
- Dim As Integer i, j, l, m
-
- If k = 4 Then
- For i = 0 To 3
- ops(0) = opChars(i)
- For j = 0 To 3
- ops(1) = opChars(j)
- For l = 0 To 3
- ops(2) = opChars(l)
- If Abs(evaluate(digitos(), ops()) - 24) < 0.001 Then
- With soluciones(solutionCnt)
- For m = 0 To 3: .digitos(m) = digitos(m): Next
- For m = 0 To 2: .operaciones(m) = ops(m): Next
- End With
- solutionCnt += 1
- Exit For 'Stop after first solution
- End If
- Next
- If solutionCnt Then Exit For
- Next
- If solutionCnt Then Exit For
- Next
- Else
- For i = k To 3
- Swap digitos(i), digitos(k)
- permute(digitos(), soluciones(), solutionCnt, k +1)
- If solutionCnt Then Exit For
- Swap digitos(k), digitos(i)
- Next
- End If
-End Sub
-
-' Main program
-Randomize Timer
-Dim As Integer i
-Dim As String cmd
-Dim As Double digitos(3)
-Dim As String operaciones(2)
-
-Do
- Cls
- Print "24 Game"
- Print "Generating 4 digitos..."
-
- Dim As String inputDigits = randomDigits()
- Print "Make 24 using these digitos: ";
- For i = 1 To Len(inputDigits)
- Print Mid(inputDigits, i, 1); " ";
- Next
- Print
-
- Line Input "Enter your expression (e.g. 4+5*3-2): ", cmd
-
- Dim As Integer digitCnt = 0, opCnt = 0
- ' Parse user input
- For i = 1 To Len(cmd)
- Select Case Mid(cmd, i, 1)
- Case "1" To "9"
- digitos(digitCnt) = Val(Mid(cmd, i, 1))
- digitCnt += 1
- Case "+", "-", "*", "/"
- operaciones(opCnt) = Mid(cmd, i, 1)
- opCnt += 1
- End Select
- Next
-
- Dim As Double resultado = evaluate(digitos(), operaciones())
- Print "Your resultado: "; resultado
-
- If Abs(resultado - 24) < 0.001 Then
- Print !"\nCongratulations, you found a solution!"
- Else
- Print !"\nThe valor of your expression is "; resultado; " instead of 24!"
-
- Dim As GameState soluciones(1000)
- Dim As Integer solucCnt = 0
-
- permute(digitos(), soluciones(), solucCnt, 0)
-
- If solucCnt > 0 Then
- Print !"\nA possible solution could have been: ";
- With soluciones(0)
- Print .digitos(0) & .operaciones(0) & .digitos(1) & .operaciones(1) & .digitos(2) & .operaciones(2) & .digitos(3)
- End With
- Else
- Print !"\nThere was no known solution for these digitos."
- End If
- End If
-
- Print !"\nDo you want to try again? (press N for exit, other key to continue)"
-Loop Until (Ucase(Input(1)) = "N")
-
-Sleep
diff --git a/Task/24-game-Solve/FutureBasic/24-game-solve.basic b/Task/24-game-Solve/FutureBasic/24-game-solve.basic
index 4f6e1c9984..5a2f9b5cf2 100644
--- a/Task/24-game-Solve/FutureBasic/24-game-solve.basic
+++ b/Task/24-game-Solve/FutureBasic/24-game-solve.basic
@@ -15,6 +15,7 @@ void local fn eval( t as CFStringRef )
end if
end fn
+
clear local fn work( t as CFStringRef )
Short a, b, c, d, e, f, g
CGFloat n(3)
@@ -43,6 +44,7 @@ clear local fn work( t as CFStringRef )
next : next : next : next
end fn
+
window 1, @"24 Game", ( 0, 0, 250, 250 )
fn work(@"3388")
fn work(@"1346")
diff --git a/Task/24-game-Solve/Julia/24-game-solve.jl b/Task/24-game-Solve/Julia/24-game-solve.julia
similarity index 100%
rename from Task/24-game-Solve/Julia/24-game-solve.jl
rename to Task/24-game-Solve/Julia/24-game-solve.julia
diff --git a/Task/24-game-Solve/Kotlin/24-game-solve.kts b/Task/24-game-Solve/Kotlin/24-game-solve.kotlin
similarity index 100%
rename from Task/24-game-Solve/Kotlin/24-game-solve.kts
rename to Task/24-game-Solve/Kotlin/24-game-solve.kotlin
diff --git a/Task/24-game-Solve/OCaml/24-game-solve.ml b/Task/24-game-Solve/OCaml/24-game-solve.ocaml
similarity index 100%
rename from Task/24-game-Solve/OCaml/24-game-solve.ml
rename to Task/24-game-Solve/OCaml/24-game-solve.ocaml
diff --git a/Task/24-game-Solve/Rust/24-game-solve.rs b/Task/24-game-Solve/Rust/24-game-solve.rust
similarity index 100%
rename from Task/24-game-Solve/Rust/24-game-solve.rs
rename to Task/24-game-Solve/Rust/24-game-solve.rust
diff --git a/Task/24-game-Solve/Scheme/24-game-solve-1.scm b/Task/24-game-Solve/Scheme/24-game-solve-1.ss
similarity index 100%
rename from Task/24-game-Solve/Scheme/24-game-solve-1.scm
rename to Task/24-game-Solve/Scheme/24-game-solve-1.ss
diff --git a/Task/24-game-Solve/Scheme/24-game-solve-2.scm b/Task/24-game-Solve/Scheme/24-game-solve-2.ss
similarity index 100%
rename from Task/24-game-Solve/Scheme/24-game-solve-2.scm
rename to Task/24-game-Solve/Scheme/24-game-solve-2.ss
diff --git a/Task/24-game-Solve/Zig/24-game-solve.zig b/Task/24-game-Solve/Zig/24-game-solve.zig
deleted file mode 100644
index 1837c9404d..0000000000
--- a/Task/24-game-Solve/Zig/24-game-solve.zig
+++ /dev/null
@@ -1,273 +0,0 @@
-const std = @import("std");
-const print = std.debug.print;
-const ArrayList = std.ArrayList;
-const HashMap = std.HashMap;
-const Allocator = std.mem.Allocator;
-
-const Operator = enum {
- sub,
- plus,
- mul,
- div,
-};
-
-const Factor = struct {
- content: []const u8,
- value: i32,
-
- fn deinit(self: Factor, allocator: Allocator) void {
- allocator.free(self.content);
- }
-};
-
-fn apply(allocator: Allocator, op: Operator, left: []const Factor, right: []const Factor) !ArrayList(Factor) {
- var ret = ArrayList(Factor).init(allocator);
-
- for (left) |l| {
- for (right) |r| {
- switch (op) {
- .sub => {
- if (l.value > r.value) {
- const content = try std.fmt.allocPrint(allocator, "({s} - {s})", .{ l.content, r.content });
- try ret.append(Factor{
- .content = content,
- .value = l.value - r.value,
- });
- }
- },
- .plus => {
- const content = try std.fmt.allocPrint(allocator, "({s} + {s})", .{ l.content, r.content });
- try ret.append(Factor{
- .content = content,
- .value = l.value + r.value,
- });
- },
- .mul => {
- const content = try std.fmt.allocPrint(allocator, "({s} x {s})", .{ l.content, r.content });
- try ret.append(Factor{
- .content = content,
- .value = l.value * r.value,
- });
- },
- .div => {
- if (l.value >= r.value and r.value > 0 and @rem(l.value, r.value) == 0) {
- const content = try std.fmt.allocPrint(allocator, "({s} / {s})", .{ l.content, r.content });
- try ret.append(Factor{
- .content = content,
- .value = @divTrunc(l.value, r.value),
- });
- }
- },
- }
- }
- }
-
- return ret;
-}
-
-fn calc(allocator: Allocator, ops: [3]Operator, numbers: [4]i32) !ArrayList(Factor) {
- var current_factors = ArrayList(Factor).init(allocator);
- defer {
- for (current_factors.items) |factor| {
- factor.deinit(allocator);
- }
- current_factors.deinit();
- }
-
- // Initialize with first number
- const initial_content = try std.fmt.allocPrint(allocator, "{}", .{numbers[0]});
- try current_factors.append(Factor{
- .content = initial_content,
- .value = numbers[0],
- });
-
- // Process each operation
- for (ops, 0..) |op, i| {
- var next_factors = ArrayList(Factor).init(allocator);
- defer {
- for (next_factors.items) |factor| {
- factor.deinit(allocator);
- }
- next_factors.deinit();
- }
-
- const mono_content = try std.fmt.allocPrint(allocator, "{}", .{numbers[i + 1]});
- defer allocator.free(mono_content);
- const mono_factor = Factor{
- .content = mono_content,
- .value = numbers[i + 1],
- };
- const mono_slice = &[_]Factor{mono_factor};
-
- switch (op) {
- .mul, .plus => {
- var applied = try apply(allocator, op, current_factors.items, mono_slice);
- defer applied.deinit();
- try next_factors.appendSlice(applied.items);
- },
- .div, .sub => {
- var applied1 = try apply(allocator, op, current_factors.items, mono_slice);
- defer applied1.deinit();
- try next_factors.appendSlice(applied1.items);
-
- var applied2 = try apply(allocator, op, mono_slice, current_factors.items);
- defer applied2.deinit();
- try next_factors.appendSlice(applied2.items);
- },
- }
-
- // Clear current factors and move next_factors to current_factors
- for (current_factors.items) |factor| {
- factor.deinit(allocator);
- }
- current_factors.clearRetainingCapacity();
-
- // Move ownership from next_factors to current_factors
- try current_factors.appendSlice(next_factors.items);
- next_factors.clearRetainingCapacity(); // Don't deinit the items, we moved them
- }
-
- // Create result and transfer ownership
- var result = ArrayList(Factor).init(allocator);
- try result.appendSlice(current_factors.items);
- current_factors.clearRetainingCapacity(); // Don't deinit, we transferred ownership
-
- return result;
-}
-
-const OpIter = struct {
- index: usize,
-
- const OPTIONS = [_]Operator{ .mul, .sub, .plus, .div };
-
- fn init() OpIter {
- return OpIter{ .index = 0 };
- }
-
- fn next(self: *OpIter) ?[3]Operator {
- if (self.index >= 64) {
- return null;
- }
-
- const f1 = OPTIONS[(self.index & (3 << 4)) >> 4];
- const f2 = OPTIONS[(self.index & (3 << 2)) >> 2];
- const f3 = OPTIONS[(self.index & (3 << 0)) >> 0];
-
- self.index += 1;
- return [3]Operator{ f1, f2, f3 };
- }
-};
-
-fn orders() [24][4]usize {
- return [24][4]usize{
- [4]usize{ 0, 1, 2, 3 },
- [4]usize{ 0, 1, 3, 2 },
- [4]usize{ 0, 2, 1, 3 },
- [4]usize{ 0, 2, 3, 1 },
- [4]usize{ 0, 3, 1, 2 },
- [4]usize{ 0, 3, 2, 1 },
- [4]usize{ 1, 0, 2, 3 },
- [4]usize{ 1, 0, 3, 2 },
- [4]usize{ 1, 2, 0, 3 },
- [4]usize{ 1, 2, 3, 0 },
- [4]usize{ 1, 3, 0, 2 },
- [4]usize{ 1, 3, 2, 0 },
- [4]usize{ 2, 0, 1, 3 },
- [4]usize{ 2, 0, 3, 1 },
- [4]usize{ 2, 1, 0, 3 },
- [4]usize{ 2, 1, 3, 0 },
- [4]usize{ 2, 3, 0, 1 },
- [4]usize{ 2, 3, 1, 0 },
- [4]usize{ 3, 0, 1, 2 },
- [4]usize{ 3, 0, 2, 1 },
- [4]usize{ 3, 1, 0, 2 },
- [4]usize{ 3, 1, 2, 0 },
- [4]usize{ 3, 2, 0, 1 },
- [4]usize{ 3, 2, 1, 0 },
- };
-}
-
-fn applyOrder(numbers: [4]i32, order: [4]usize) [4]i32 {
- return [4]i32{ numbers[order[0]], numbers[order[1]], numbers[order[2]], numbers[order[3]] };
-}
-
-fn solutions(allocator: Allocator, numbers: [4]i32) !ArrayList(Factor) {
- var ret = ArrayList(Factor).init(allocator);
- var hash_set = HashMap([]const u8, void, std.hash_map.StringContext, std.hash_map.default_max_load_percentage).init(allocator);
- defer {
- // Free all keys in the hash map
- var iterator = hash_set.iterator();
- while (iterator.next()) |entry| {
- allocator.free(entry.key_ptr.*);
- }
- hash_set.deinit();
- }
-
- var op_iter = OpIter.init();
- while (op_iter.next()) |ops| {
- const all_orders = orders();
- for (all_orders) |order| {
- const reordered_numbers = applyOrder(numbers, order);
- var results = calc(allocator, ops, reordered_numbers) catch continue;
- defer {
- for (results.items) |factor| {
- factor.deinit(allocator);
- }
- results.deinit();
- }
-
- for (results.items) |factor| {
- if (factor.value == 24) {
- // Check if we've seen this content before
- if (hash_set.contains(factor.content)) {
- continue;
- }
-
- // Add to hash set with a duplicated key
- const key_copy = try allocator.dupe(u8, factor.content);
- try hash_set.put(key_copy, {});
-
- // Add to results with a duplicated content
- try ret.append(Factor{
- .content = try allocator.dupe(u8, factor.content),
- .value = factor.value,
- });
- }
- }
- }
- }
-
- return ret;
-}
-
-pub fn main() !void {
- var gpa = std.heap.GeneralPurposeAllocator(.{}){};
- defer _ = gpa.deinit();
- const allocator = gpa.allocator();
-
- // Hard-coded input: 5598
- const nums = [4]i32{ 5, 5, 9, 8 };
-
- var sols = solutions(allocator, nums) catch {
- print("Error computing solutions\n", .{});
- return;
- };
- defer {
- for (sols.items) |factor| {
- factor.deinit(allocator);
- }
- sols.deinit();
- }
-
- const len = sols.items.len;
- if (len == 0) {
- print("no solution for {}, {}, {}, {}\n", .{ nums[0], nums[1], nums[2], nums[3] });
- return;
- }
-
- print("solutions for {}, {}, {}, {}\n", .{ nums[0], nums[1], nums[2], nums[3] });
- for (sols.items) |s| {
- print("{s}\n", .{s.content});
- }
- print("{} solutions found\n", .{len});
-}
diff --git a/Task/24-game/ALGOL-68/24-game.alg b/Task/24-game/ALGOL-68/24-game.alg
index b74144035a..3ba4ed6a03 100644
--- a/Task/24-game/ALGOL-68/24-game.alg
+++ b/Task/24-game/ALGOL-68/24-game.alg
@@ -40,7 +40,7 @@ BEGIN # play the 24 game - present the user with 4 digits and invite them to #
error( "Unexpected """ + curr ch + """" );
0
FI # factor # ;
- PROC expr term = REAL:
+ PROC term = REAL:
BEGIN
REAL result := factor;
WHILE curr ch = "*" OR curr ch = "/" DO
@@ -49,14 +49,14 @@ BEGIN # play the 24 game - present the user with 4 digits and invite them to #
IF op = "*" THEN result *:= factor ELSE result /:= factor FI
OD;
result
- END # expr term # ;
+ END # term # ;
PROC expression = REAL:
BEGIN
- REAL result := expr term;
+ REAL result := term;
WHILE curr ch = "+" OR curr ch = "-" DO
CHAR op = curr ch;
next ch;
- IF op = "+" THEN result +:= expr term ELSE result -:= expr term FI
+ IF op = "+" THEN result +:= term ELSE result -:= term FI
OD;
result
END # expression # ;
@@ -80,7 +80,7 @@ BEGIN # play the 24 game - present the user with 4 digits and invite them to #
puzzle digits[ i ] := 0
OD;
print( ( "Enter an expression using these digits:" ) );
- TO 4 DO # pick 4 random digits #
+ FOR i TO 4 DO # pick 4 random digits #
INT digit := 1 + ENTIER ( next random * 9 );
IF digit > 9 THEN digit := 9 FI;
puzzle digits[ digit ] +:= 1;
diff --git a/Task/24-game/Ada/24-game.adb b/Task/24-game/Ada/24-game.ada
similarity index 100%
rename from Task/24-game/Ada/24-game.adb
rename to Task/24-game/Ada/24-game.ada
diff --git a/Task/24-game/Arturo/24-game.arturo b/Task/24-game/Arturo/24-game.arturo
index 0175c79a13..a44398760e 100644
--- a/Task/24-game/Arturo/24-game.arturo
+++ b/Task/24-game/Arturo/24-game.arturo
@@ -28,10 +28,11 @@ result: 0
while [result<>24][
got: input "Enter an expression to form 24: "
blo: to :block got
- switch validExpression? blo [
+ if? validExpression? blo [
result: do blo
print ["The result is:" result]
- ][
+ ]
+ else [
print "Invalid expression. Please try again!"
]
print ""
diff --git a/Task/24-game/AutoIt/24-game.au3 b/Task/24-game/AutoIt/24-game.autoit
similarity index 100%
rename from Task/24-game/AutoIt/24-game.au3
rename to Task/24-game/AutoIt/24-game.autoit
diff --git a/Task/24-game/COBOL/24-game.cob b/Task/24-game/COBOL/24-game.cobol
similarity index 100%
rename from Task/24-game/COBOL/24-game.cob
rename to Task/24-game/COBOL/24-game.cobol
diff --git a/Task/24-game/Delphi/24-game.pas b/Task/24-game/Delphi/24-game.delphi
similarity index 100%
rename from Task/24-game/Delphi/24-game.pas
rename to Task/24-game/Delphi/24-game.delphi
diff --git a/Task/24-game/EasyLang/24-game.easy b/Task/24-game/EasyLang/24-game.easy
deleted file mode 100644
index 03d699645f..0000000000
--- a/Task/24-game/EasyLang/24-game.easy
+++ /dev/null
@@ -1,68 +0,0 @@
-print "Enter an equation in RPN form using all of, and only "
-print "the following single digits which evaluates to 24:"
-func game .
- len cnt[] 9
- write ">> "
- for i to 4
- h = random 1 9
- write h & " "
- cnt[h] += 1
- .
- print ""
- s$ = input
- print s$
- if s$ = ""
- return 1
- .
- for c$ in strchars s$
- if c$ = "+" or c$ = "-" or c$ = "*" or c$ = "/"
- if len st[] < 2
- print "Stack empty"
- return 1
- .
- if c$ = "+"
- st[$ - 1] = st[$ - 1] + st[$]
- elif c$ = "-"
- st[$ - 1] = st[$ - 1] - st[$]
- elif c$ = "*"
- st[$ - 1] = st[$ - 1] * st[$]
- else
- st[$ - 1] = st[$ - 1] / st[$]
- .
- len st[] -1
- elif c$ <> " "
- h = strcode c$ - 48
- if h < 1 or h > 9
- print "Wrong command " & c$
- return 0
- .
- if cnt[h] = 0
- print "Wrong number " & h
- return 0
- .
- cnt[h] -= 1
- st[] &= h
- .
- .
- for c in cnt[]
- s += c
- .
- if s > 0
- print "Not all numbers used"
- return 0
- .
- if len st[] > 1
- print "Calculation not finished"
- return 0
- .
- print st[1]
- if abs (st[1] - 24) < 1e-10
- print "Well done"
- else
- print "Wrong result"
- .
-.
-repeat
- print ""
- until game = 1
-.
diff --git a/Task/24-game/Elena/24-game.elena b/Task/24-game/Elena/24-game.elena
index 2a65ccecd2..d4170cfc82 100644
--- a/Task/24-game/Elena/24-game.elena
+++ b/Task/24-game/Elena/24-game.elena
@@ -18,13 +18,13 @@ class ExpressionTree
var node := new DynamicStruct();
ch =>
- $43 : { node.Level := level + 1; node.Operation := mssg add } // +
- $45 : { node.Level := level + 1; node.Operation := mssg subtract } // -
- $42 : { node.Level := level + 2; node.Operation := mssg multiply } // *
- $47 : { node.Level := level + 2; node.Operation := mssg divide } // /
- $40 : { level.append(10); ^ self } // (
- $41 : { level.reduce(10); ^ self } // )
- ! : {
+ $43 { node.Level := level + 1; node.Operation := mssg add } // +
+ $45 { node.Level := level + 1; node.Operation := mssg subtract } // -
+ $42 { node.Level := level + 2; node.Operation := mssg multiply } // *
+ $47 { node.Level := level + 2; node.Operation := mssg divide } // /
+ $40 { level.append(10); ^ self } // (
+ $41 { level.reduce(10); ^ self } // )
+ ! {
node.Leaf := ch.toString().toReal();
node.Level := level + 3
};
@@ -112,16 +112,16 @@ class TwentyFourGame
{
theNumbers := new object[]
{
- 1 + Random.nextInt(9),
- 1 + Random.nextInt(9),
- 1 + Random.nextInt(9),
- 1 + Random.nextInt(9)
+ 1 + randomGenerator.nextInt(9),
+ 1 + randomGenerator.nextInt(9),
+ 1 + randomGenerator.nextInt(9),
+ 1 + randomGenerator.nextInt(9)
}
}
help()
{
- Console
+ console
.printLine("------------------------------- Instructions ------------------------------")
.printLine("Four digits will be displayed.")
.printLine("Enter an equation using all of those four digits that evaluates to 24")
@@ -137,9 +137,9 @@ class TwentyFourGame
prompt()
{
- theNumbers.forEach::(n){ Console.print(n," ") };
+ theNumbers.forEach::(n){ console.print(n," ") };
- Console.print(": ")
+ console.print(": ")
}
resolve(expr)
@@ -149,19 +149,19 @@ class TwentyFourGame
var leaves := new ArrayList();
tree.readLeaves(leaves);
- if:not (leaves.ascendant().sequenceEqual(theNumbers.ascendant()))
- { Console.printLine("Invalid input. Enter an equation using all of those four digits. Try again."); ^ self };
+ ifnot (leaves.ascendant().sequenceEqual(theNumbers.ascendant()))
+ { console.printLine("Invalid input. Enter an equation using all of those four digits. Try again."); ^ self };
var result := tree.Value;
if (result == 24)
{
- Console.printLine("Good work. ",expr,"=",result);
+ console.printLine("Good work. ",expr,"=",result);
self.newPuzzle()
}
else
{
- Console.printLine("Incorrect. ",expr,"=",result)
+ console.printLine("Incorrect. ",expr,"=",result)
}
}
}
@@ -178,7 +178,7 @@ extension gameOp
{
if (expr == "")
{
- Console.printLine("Skipping this puzzle"); self.newPuzzle()
+ console.printLine("Skipping this puzzle"); self.newPuzzle()
}
else
{
@@ -188,7 +188,8 @@ extension gameOp
}
catch(Exception e)
{
- Console.printLine("An error occurred. Check your input and try again.")
+ console.printLine(e)
+ //console.printLine:"An error occurred. Check your input and try again."
}
};
@@ -197,11 +198,11 @@ extension gameOp
}
}
-// --- Program ---
+// --- program ---
-public Program()
+public program()
{
var game := new TwentyFourGame().help();
- while (game.prompt().playRound(Console.readLine())) {}
+ while (game.prompt().playRound(console.readLine())) {}
}
diff --git a/Task/24-game/Elixir/24-game.ex b/Task/24-game/Elixir/24-game.elixir
similarity index 100%
rename from Task/24-game/Elixir/24-game.ex
rename to Task/24-game/Elixir/24-game.elixir
diff --git a/Task/24-game/Frink/24-game.frink b/Task/24-game/Frink/24-game.frink
deleted file mode 100644
index a7a123bc86..0000000000
--- a/Task/24-game/Frink/24-game.frink
+++ /dev/null
@@ -1,15 +0,0 @@
-ops = ["+", "-", "*", "/"]
-
-chosen = new array[[4], {|x| random[1,9]}]
-println[chosen]
-
-for d = chosen.lexicographicPermute[]
- multifor o = [ops, ops, ops]
- {
- str = "((" + d@0 + o@0 + d@1 + ")" + o@1 + d@2 + ")" + o@2 + d@3
- if eval[str] == 24
- println[str]
- str = "(" + d@0 + o@0 + d@1 + ")" + o@1 + "(" + d@2 + + o@2 + d@3 + ")"
- if eval[str] == 24
- println[str]
- }
diff --git a/Task/24-game/FutureBasic/24-game.basic b/Task/24-game/FutureBasic/24-game.basic
deleted file mode 100644
index e3cb41f183..0000000000
--- a/Task/24-game/FutureBasic/24-game.basic
+++ /dev/null
@@ -1,310 +0,0 @@
-//include resources "24 Game Icon.icns"
-
-#build CompilerOptions @"-Wno-unused-variable"
-
-_mEdit = 2
-editmenu _mEdit
-
-begin globals
-long gPosition
-end globals
-
-void local fn EraseErrorText
-
- CGRect r
- r = fn CGRectMake(10, 200, 400, 15)
- rect fill r,fn ColorBlack
-
-end fn
-
-local fn ArcRandom( a as long, b as long ) as long
- long i
- cln i = (arc4random()%(b-a+1))+a;
-end fn = fn floor(i)
-
-local fn GetRandomNumbers as CFStringRef
-
- // 96 number groups
-
- CFArrayRef combos = @[¬
-
- // The first 32 are easy
- @"1 2 3 4", @"2 4 6 8", @"1 2 4 8", @"1 3 4 6", @"1 2 6 8",
- @"2 3 4 8", @"1 3 6 9", @"1 2 7 8", @"2 3 6 8", @"1 4 6 8",
- @"2 2 3 9", @"3 4 6 6", @"2 3 3 8", @"1 5 6 6", @"2 4 4 6",
- @"1 3 8 8", @"2 2 6 9", @"3 3 6 9", @"1 2 5 9", @"2 4 5 5",
- @"1 3 5 9", @"2 2 4 9", @"1 2 3 6", @"1 2 2 9", @"1 2 3 9",
- @"1 2 4 6", @"1 2 4 4", @"1 2 2 6", @"1 3 3 6", @"1 1 4 6",
- @"1 1 2 8", @"1 1 3 8",
- // The middle 32 are medium
- @"1 5 5 9", @"4 4 6 9", @"2 3 7 9",@"3 5 8 8", @"1 6 6 8",
- @"3 3 5 6", @"1 4 5 8", @"3 3 6 7",@"2 5 5 8", @"4 4 7 9",
- @"1 5 6 9", @"3 3 8 9", @"2 6 6 7",@"4 5 7 8", @"2 2 5 9",
- @"2 4 6 7", @"1 5 6 8", @"3 4 7 7",@"2 5 6 6", @"3 4 5 9",
- @"1 6 7 9", @"2 3 7 8", @"1 4 6 9",@"2 3 5 9", @"3 4 4 8",
- @"2 5 8 9", @"1 4 8 9", @"3 3 4 9",@"2 6 7 9", @"1 3 5 7",
- @"1 3 6 6", @"2 2 5 7",
- // The last 32 are hard
- @"1 5 7 9",@"3 4 7 9", @"2 5 7 8", @"3 4 8 9", @"3 4 5 8",
- @"2 6 6 9",@"4 4 5 7", @"2 4 6 9", @"1 4 7 7", @"2 3 8 9",
- @"2 3 4 7",@"3 3 4 8", @"1 3 7 9", @"2 4 5 9", @"1 3 6 8",
- @"2 4 4 9",@"1 5 8 9", @"3 3 5 9", @"2 6 8 9", @"1 4 4 7",
- @"2 3 6 7",@"1 3 5 8", @"2 4 7 8", @"1 3 4 7", @"2 3 5 6",
- @"1 4 5 6",@"3 3 5 7", @"2 2 3 6", @"3 3 7 7", @"3 3 7 9",
- @"4 4 8 9",@"2 4 8 9"]
-
- long i = fn ArcRandom( 0, len(combos) - 1 )
- gPosition = i
-
-end fn = combos[i]
-
-
-local fn EvaluateMath( equation as CFStringRef ) as CFStringRef
- equation = fn StringByReplacingOccurrencesOfString( lcase(equation), @"x", @"*" )
-
- CFStringRef result = NULL
- RegularExpressionRef regex = fn RegularExpressionWithPattern( @"[0-9.]+", NSRegularExpressionCaseInsensitive, NULL )
- CFArrayRef matches = fn RegularExpressionMatches( regex, equation, 0, fn CFRangeMake( 0, len(equation) ) )
- NSInteger intConversions = 0
- TextCheckingResultRef match
- CFRange originalRange
- CFRange adjustedRange
- CFStringRef value
-
- for match in matches
- originalRange = fn TextCheckingResultRange( match )
- adjustedRange = fn CFRangeMake( ( originalRange.location + ( intConversions * len( @".0") ) ), originalRange.length )
- value = fn StringSubstringWithRange( equation, adjustedRange )
- if fn StringContainsString( value, @"." )
- continue
- else
- equation = fn StringByReplacingCharactersInRange( equation, adjustedRange, fn StringWithFormat( @"%@.0", value ) )
- intConversions++
- end if
- next
- ExceptionRef e
- try
- ExpressionRef expression = fn ExpressionWithFormat( equation )
- CFNumberRef number = fn ExpressionValueWithObject( expression, NULL, NULL )
- result = fn StringWithFormat( @"%.3f", dblval( number ) )
- end try
-
- catch (e)
- result = fn StringWithFormat( @"%@", e ) : exit fn
- end catch
- // Test if result is an integer and, if so, return result as an integer
- if( fn StringDoubleValue( result ) == fn floorf( fn StringDoubleValue( result ) ) )
- result = fn ArrayFirstObject( fn StringComponentsSeparatedByString( result, @"." ) )
- end if
-end fn = result
-
-
-local fn QuitOrPlayAlert(GameResult as CFStringRef)
- alert -2,,GameResult,@"You won!",@"Quit;Play Again"
- AlertButtonSetKeyEquivalent( 2, 2, @"\e" )
- short result
- result = alert 2
- if ( result != NSAlertSecondButtonReturn ) then appterminate
-end fn
-
-
-local fn BuildWindow
- CGRect r = fn CGRectMake( 0, 0, 580, 250)
- window 1, @"24 Game", r
- windowcenter(1)
- WindowSetBackgroundColor(1,fn ColorBlack)
-
-end fn
-
-///////// Start //////////
-
-fn BuildWindow
-
-
-short d(4), i
-CFStringRef CheckForDuplicates(97)
-for i = 1 to 96
- CheckForDuplicates(i) = @""
-next i
-
-short DuplicatesCounter
-DuplicatesCounter = 0
-
-
-"Main"
-
-cls
-text ,,fn colorWhite
-
-print
-print %(10,15),"Given four numbers and using just the +, -, *, and / operators; and the"
-print %(10,30),"possible use of parenthesis (), enter an expression that equates to 24."
-print %(10,45),"You must use all your numbers and only those numbers."
-print %(10,60),"Examples: 9618 Solution 9 + 6 + 1 + 8 or 3173 Solution (3 * 7) - (1 - 4)"
-print
-print %(10,85),"Enter Q to quit or S to skip to the next number."
-
-"GetFourNumbers"
-
-CFArrayRef randomNumbers : randomNumbers= fn StringComponentsSeparatedByString( fn GetRandomNumbers, @" " )
-CFStringRef RandomNumberblock : RandomNumberblock = @""
-CFStringRef RandomNumberblockAdd : RandomNumberblockAdd = @""
-
-for i = 0 to 3
- // create a string from the 4 numbers
- RandomNumberblockAdd = randomNumbers[i]
- RandomNumberblock = fn StringByAppendingString(RandomNumberblock,RandomNumberblockAdd)
- RandomNumberblock = fn StringByAppendingString(RandomNumberblock,@" ")
-next i
-
-
-if DuplicatesCounter = > 96
- // reset counter when last number is retrieved and start from the first number block
- DuplicatesCounter = 0
- for i = 1 to 96
- CheckForDuplicates(i) = @""
- next i
-end if
-
-for i = 1 to 96
- // check the current numbers with the numbers already used
- if fn StringIsEqual(RandomNumberblock,CheckForDuplicates(i))
- RandomNumberblock = fn StringWithString(CheckForDuplicates(DuplicatesCounter))
- goto "GetFourNumbers"
- end if
-next i
-
-DuplicatesCounter ++
-CheckForDuplicates(DuplicatesCounter) = fn StringWithString(RandomNumberblock)
-
-d(1) = fn StringIntegerValue( randomNumbers[0] )
-d(2) = fn StringIntegerValue( randomNumbers[1] )
-d(3) = fn StringIntegerValue( randomNumbers[2] )
-d(4) = fn StringIntegerValue( randomNumbers[3] )
-
-short dots = 0
-
-//d(1) = 9:d(2) = 6:d(3) = 1:d(4) = 8 // Uncomment to test with 9618 numbers. Solution 9 + 6 + 1 + 8
-//d(1) = 6:d(2) = 5:d(3) = 3:d(4) = 8 // Uncomment to test with 6538 numbers. Solution 6 / ( 5 - 3 ) * 8
-//d(1) = 3:d(2) = 1:d(3) = 7:d(4) = 3 // Uncomment to test with 3773 numbers. Solution ((3 * 1) * 7) + 3
-//d(1) = 4:d(2) = 2:d(3) = 7:d(4) = 1 // Uncomment to test with 4271 numbers. Solution (4 * ( 7 - 2 + 1 )
-// NOTE: When using these test numbers, also uncomment dots = 0 below here to prevent misleading dot displays
-
-
-if gPosition <= 32 then dots = 1
-if gPosition > 32 and gPosition < 65 then dots = 2
-if gPosition > 64 then dots = 3
-
-//dots = 0 uncomment when testing the numbers above to prevent misleading dot displays
-
-print
-text ,,fn colorGreen
-print %(15,110),"These are your numbers, difficulty level ";
-// @"\U000026AA" is white unicode dot - Easy difficulty (One-Dot)
-// @"\U0001F534" is red unicode dot - Medium difficulty (Two-Dots)
-// @"\U0001F7E1" is yellow unicode dot - Hard difficulty (Three-Dots)
-
-if dots = 1 then print @"\U000026AA Easy"
-if dots = 2 then print @"\U0001F534 \U0001F534 Medium"
-if dots = 3 then print @"\U0001F7E1 \U0001F7E1 \U0001F7E1 Hard"
-
-print %(55,125)
-text ,18,fn colorGreen
-for i = 1 to 4
- print d(i); " ";
-next
-
-print
-
-text ,12,fn colorWhite
-printf @"\n\n\n"
-
-CFStringRef expr
-bool TryAgain : TryAgain = _false
-CFStringRef MessageText
-CFStringRef UserInput = NULL
-
-"InputExpression"
-
-if TryAgain
- MessageText = fn StringWithFormat( @"Enter math expression: [ '%@' was incorrect ]", expr )
- UserInput = input %(10, 190), MessageText, @"123456789+-*/()qs", YES,, 0
-else
- UserInput = input %(10, 190), @"Enter math expression:", @"123456789+-*/()qs", YES,, 0
-end if
-
-if ( UserInput == NULL ) then "InputExpression"
-expr = UserInput
-if expr = @"" then "InputExpression"
-if fn StringIsEqual(ucase(expr) , @"Q") then appterminate
-if fn StringIsEqual(ucase(expr) , @"S") then "Main"
-
-
-//check expr for validity
-
-short j
-bool GotAllNumbers : GotAllNumbers = _false
-short ThisNumberPosition : ThisNumberPosition = 0
-short GotaNumber : GotaNumber = 0
-short TotalNumbers : TotalNumbers = 0
-
-short ExtraNumbers:ExtraNumbers = 0
-
-for i = 1 to len$(fn stringpascalstring(expr))
- if asc(mid$(fn stringpascalstring(expr),i,1)) > 48 && asc(mid$(fn stringpascalstring(expr),i,1)) < 58
- ExtraNumbers ++
- end if
-next i
-
-if ExtraNumbers > 4
- fn EraseErrorText
- text ,,fn colorRed
- TryAgain = _true
- print %(10,200);"Error! Extra numbers not allowed": goto "InputExpression"
- text ,,fn colorWhite
-end if
-
-
-for i = 1 to 4
- GotaNumber = 0
- for j = 0 to len(expr) -1
- ThisNumberPosition = instr( j, expr, right(str( d(i)),1 ))
- ThisNumberPosition ++
- if ThisNumberPosition then GotaNumber = _true
- next j
- if GotaNumber then TotalNumbers ++
-next i
-
-if TotalNumbers => 4 then GotAllNumbers = _true
-
-if GotAllNumbers = _false
- fn EraseErrorText
- text ,,fn colorRed
- TryAgain = _true
- print %(10,200);"ERROR! Must use all your numbers and only those numbers." : goto "InputExpression"
- text ,,fn colorWhite
-end if
-
-fn EraseErrorText
-
-
-if fn EvaluateMath( expr ) = _false
- text ,,fn colorRed
- TryAgain = _true
- Print %(10,200);"Error! Incorrect math sequence."
- goto "InputExpression"
- text ,,fn colorWhite
-end if
-
-CFStringRef GameResult
-if fn StringIntegerValue( fn EvaluateMath( expr ) ) == 24 then GameResult = @"Correct" else GameResult = @"Incorrect"
-
-if GameResult = @"Incorrect"
- TryAgain = _true
- goto "InputExpression"
-end if
-
-fn QuitOrPlayAlert(GameResult)
-goto "Main"
-
-handleevents
diff --git a/Task/24-game/J/24-game.j b/Task/24-game/J/24-game.j
index 928663b455..73034a24eb 100644
--- a/Task/24-game/J/24-game.j
+++ b/Task/24-game/J/24-game.j
@@ -1,6 +1,6 @@
require'misc'
-deal=: 1 + ? @ 9 9 9 9
-rules=: echo @ 'see http://en.wikipedia.org/wiki/24_Game'
+deal=: 1 + ? bind 9 9 9 9
+rules=: smoutput bind 'see http://en.wikipedia.org/wiki/24_Game'
input=: prompt @ ('enter 24 expression using ', ":, ': '"_)
wellformed=: (' '<;._1@, ":@[) -:&(/:~) '(+-*%)' -.&;:~ ]
diff --git a/Task/24-game/Jq/24-game.jq b/Task/24-game/Jq/24-game.jq
deleted file mode 100644
index 09ce6dfc30..0000000000
--- a/Task/24-game/Jq/24-game.jq
+++ /dev/null
@@ -1,90 +0,0 @@
-### The MRG32k3a combined recursive PRNG - see above
-import "MRG32k3a" as MRG {search: "."};
-
-### Generic utilities
-def sum(stream): reduce stream as $x (0; .+$x);
-
-# like while/2 but emit the final term rather than the first one
-def whilst(cond; update):
- def _whilst:
- if cond then update | (., _whilst) else empty end;
- _whilst;
-
-### Reverse Polish Notation
-# An array of the allowed operators
-def operators: "+-*/" | split("");
-
-# If $a and $b are numbers and $c an operator, then "$a $b $c" is evaluated as an RPN expression.
-# Output: {emit, result} with .emit == null if there is a valid result.
-def applyOperator($a; $b; $c):
- if ([$a,$b] | map(type) | unique) == ["number"]
- then
- if $c == "+" then {result: ($a + $b)}
- elif $c == "-" then {result: ($a - $b)}
- elif $c == "*" then {result: ($a * $b)}
- elif ($c == "/") then {result: ($b / $a)}
- else {emit: "unrecognized operator: \($c)"}
- end
- else {emit: "invalid number"}
- end;
-
-# Input: an array representing an RPN expression.
-# Output: {emit, result} as per applyOperator/3
-# Example: [1,2,3,"+","+"] | evaluate #=> 6
-def evaluate:
- if length == 1
- then if .[0]|type == "number" then {result: .[0]}
- else {emit: "invalid RPN expression"}
- end
- elif length < 3 then {emit: "invalid RPN expression: \(. | join(" "))"}
- else . as $in
- | (first( range(0; length) as $i | select(any( operators[]; . == $in[$i]) ) | $i) // null) as $ix
- | if $ix == null then {emit: "invalid RPN expression"}
- else applyOperator(.[$ix-2]; .[$ix-1]; .[$ix]) as $result
- | if $result.result then .[:$ix-2] + [$result.result] + .[$ix+1:] | evaluate
- else $result
- end
- end
- end;
-
-### The "24 Game"
-
-# . is the putative RPN string to be checked.
-# $four is the string of the four expected digits, in order.
-# Output: {emit, result} with .emit set to "Correct!" if .result == 24
-def check($four):
- if (gsub("[^1-9]";"") | explode | sort | implode) != $four
- then {emit: "You must use each of the four digits \($four | split("") | join(" ")) exactly once:"}
- else . as $in
- | {s: [], emit: null}
- | [$in | split("")[] | select(. != " ")
- | . as $in | explode[0] | if . >= 48 and . <= 57 then . - 48 else $in end]
- | evaluate
- | if .result
- then if .result|round == 24 then .emit = "Correct!"
- else .emit = "Value \(.result) is not 24."
- end
- else .emit += "\nTry again, or enter . to start again, or q to quit."
- end
- end ;
-
-def run:
- # Populate .digits with four non-negative digits selected at random, with replacement:
- {digits: (9 | MRG::prn(4) | map(. + 1))}
- | (.digits | sort | join("")) as $four
- | "At the prompt, enter an RPN string (e.g. 64*1+1-), or . for a new set of four digits, or q to quit.",
- "Make 24 using these digits, once each, in any order: \(.digits):",
- ( whilst( .stop | not;
- .emit = null
- | . as $state
- | try input catch halt
- | if IN( "q", "quit") then halt
- elif . == "." then $state | .stop = true
- else check($four)
- | if .result then .stop = true end
- end )
- | select(.emit).emit ),
- # rerun
- run;
-
-run
diff --git a/Task/24-game/Julia/24-game.jl b/Task/24-game/Julia/24-game.julia
similarity index 100%
rename from Task/24-game/Julia/24-game.jl
rename to Task/24-game/Julia/24-game.julia
diff --git a/Task/24-game/Kotlin/24-game.kts b/Task/24-game/Kotlin/24-game.kotlin
similarity index 100%
rename from Task/24-game/Kotlin/24-game.kts
rename to Task/24-game/Kotlin/24-game.kotlin
diff --git a/Task/24-game/OCaml/24-game.ml b/Task/24-game/OCaml/24-game.ocaml
similarity index 100%
rename from Task/24-game/OCaml/24-game.ml
rename to Task/24-game/OCaml/24-game.ocaml
diff --git a/Task/24-game/Perl/24-game.pl b/Task/24-game/Perl/24-game.pl
index d4dd33e728..071bb8e2b8 100644
--- a/Task/24-game/Perl/24-game.pl
+++ b/Task/24-game/Perl/24-game.pl
@@ -25,21 +25,18 @@ while (1) {
print "Expression (try ", $try++, "): ";
my $entry = <>;
- if (!defined $entry || substr($entry,0,1) eq 'q')
+ if (!defined $entry || $entry eq 'q')
{ say "Goodbye. Sorry you couldn't win."; last; }
- $entry =~ s/\s+//g; # remove all white space (newline is whitespace too)
+ $entry =~ s/\s+//g; # remove all white space
next if $entry eq '';
my $given_digits = join "", sort @digits;
my $entry_digits = join "", sort grep { /\d/ } split(//, $entry);
- if ($given_digits ne $entry_digits)
- { say "incorrect digits"; next; }
- if ($entry =~ /\d\d/)
- { say "error, combined digits"; next; }
- if ($entry =~ m|[-+*/]{2}|)
- { say "error, combined operators"; next; }
- if ($entry =~ tr|-0-9()+*/||c)
- { say "invalid characters!"; next; }
+ if ($given_digits ne $entry_digits || # not correct digits
+ $entry =~ /\d\d/ || # combined digits
+ $entry =~ m|[-+*/]{2}| || # combined operators
+ $entry =~ tr|-0-9()+*/||c) # Invalid characters
+ { say "That's not valid"; next; }
my $n = eval $entry;
diff --git a/Task/24-game/PowerShell/24-game.ps1 b/Task/24-game/PowerShell/24-game.psh
similarity index 100%
rename from Task/24-game/PowerShell/24-game.ps1
rename to Task/24-game/PowerShell/24-game.psh
diff --git a/Task/24-game/Rebol/24-game.rebol b/Task/24-game/Rebol/24-game.rebol
deleted file mode 100644
index 246a8cc6b5..0000000000
--- a/Task/24-game/Rebol/24-game.rebol
+++ /dev/null
@@ -1,43 +0,0 @@
-Rebol [
- title: "Rosetta code: 24 game"
- file: %24_game.r3
- url: https://rosettacode.org/wiki/24_game
- needs: 3.10.0 ; or something like that (ajoin/with)
-]
-game-24: function/with [
- /seed val
-][
- random/seed any [val now/precise]
- valid: copy/part random digits 4
- prin "Using the following numbers, enter an expression that equals 24: "
- print [valid/1 ", " valid/2 ", " valid/3 " and " valid/4]
- print "Evaluation from left to right with no precedence, unless you use parenthesis."
- sort valid
-
- sucess: false
-
- while [not sucess] [
- guess: ask "Enter your expression: "
- if guess = "q" [halt]
- numbers: sort copy guess
- numbers: take/part find numbers digit 4
- either all [
- valid = numbers
- parse guess [some chars end]
- integer? result: try load ajoin/with split guess 1 #" "
- ][
- print ["The result of your expression is: " result]
- if result = 24 [sucess: true]
- ][
- print "Something is wrong with the expression, try again."
- ]
- ]
- print "You got it right!"
-][
- valid: guess: none
- digits: "123456789"
- digit: charset digits
- chars: union digit charset "+-*/()"
-]
-
-game-24/seed 1
diff --git a/Task/24-game/Rust/24-game.rs b/Task/24-game/Rust/24-game.rs
deleted file mode 100644
index 149fb0aa62..0000000000
--- a/Task/24-game/Rust/24-game.rs
+++ /dev/null
@@ -1,108 +0,0 @@
-use std::io::{self,BufRead};
-extern crate rand;
-use rand::Rng;
-
-fn op_type(x: char) -> i32{
- match x {
- '-' | '+' => return 1,
- '/' | '*' => return 2,
- '(' | ')' => return -1,
- _ => return 0,
- }
-}
-
-fn to_rpn(input: &mut String){
-
- let mut rpn_string : String = String::new();
- let mut rpn_stack : String = String::new();
- let mut last_token = '#';
- for token in input.chars(){
- if token.is_digit(10) {
- rpn_string.push(token);
- }
- else if op_type(token) == 0 {
- continue;
- }
- else if op_type(token) > op_type(last_token) || token == '(' {
- rpn_stack.push(token);
- last_token=token;
- }
- else {
- while let Some(top) = rpn_stack.pop() {
- if top=='(' {
- break;
- }
- rpn_string.push(top);
- }
- if token != ')'{
- rpn_stack.push(token);
- }
- }
- }
- while let Some(top) = rpn_stack.pop() {
- rpn_string.push(top);
- }
-
- println!("your formula results in {}", rpn_string);
-
- *input=rpn_string;
-}
-
-fn calculate(input: &String, list : &mut [u32;4]) -> f32{
- let mut stack : Vec = Vec::new();
- let mut accumulator : f32 = 0.0;
-
- for token in input.chars(){
- if token.is_digit(10) {
- let test = token.to_digit(10).unwrap() as u32;
- match list.iter().position(|&x| x == test){
- Some(idx) => list[idx]=10 ,
- _ => println!(" invalid digit: {} ",test),
- }
- stack.push(accumulator);
- accumulator = test as f32;
- }else{
- let a = stack.pop().unwrap();
- accumulator = match token {
- '-' => a-accumulator,
- '+' => a+accumulator,
- '/' => a/accumulator,
- '*' => a*accumulator,
- _ => {accumulator},//NOP
- };
- }
- }
- println!("your formula results in {}",accumulator);
- accumulator
-}
-
-fn main() {
-
- let mut rng = rand::thread_rng();
- // each from 1 ──► 9 (inclusive)
- let mut list :[u32;4]=[
- rng.gen::()%9+1,
- rng.gen::()%9+1,
- rng.gen::()%9+1,
- rng.gen::()%9+1
- ];
-
- println!("form 24 with using + - / * {:?}",list);
- //get user input
- let mut input = String::new();
- io::stdin().read_line(&mut input).unwrap();
- //convert to rpn
- to_rpn(&mut input);
- let result = calculate(&input, &mut list);
-
- if list.iter().any(|&num| num != 10) {
- println!("you didn't use all the numbers");
- } else {
- println!("and you used all numbers");
- match result {
- 24.0 => println!("you won"),
- _ => println!("but your formula doesn't result in 24"),
- }
- }
-
-}
diff --git a/Task/24-game/Rust/24-game.rust b/Task/24-game/Rust/24-game.rust
new file mode 100644
index 0000000000..bdcad8b01d
--- /dev/null
+++ b/Task/24-game/Rust/24-game.rust
@@ -0,0 +1,102 @@
+use std::io::{self,BufRead};
+extern crate rand;
+use rand::Rng;
+
+fn op_type(x: char) -> i32{
+ match x {
+ '-' | '+' => return 1,
+ '/' | '*' => return 2,
+ '(' | ')' => return -1,
+ _ => return 0,
+ }
+}
+
+fn to_rpn(input: &mut String){
+
+ let mut rpn_string : String = String::new();
+ let mut rpn_stack : String = String::new();
+ let mut last_token = '#';
+ for token in input.chars(){
+ if token.is_digit(10) {
+ rpn_string.push(token);
+ }
+ else if op_type(token) == 0 {
+ continue;
+ }
+ else if op_type(token) > op_type(last_token) || token == '(' {
+ rpn_stack.push(token);
+ last_token=token;
+ }
+ else {
+ while let Some(top) = rpn_stack.pop() {
+ if top=='(' {
+ break;
+ }
+ rpn_string.push(top);
+ }
+ if token != ')'{
+ rpn_stack.push(token);
+ }
+ }
+ }
+ while let Some(top) = rpn_stack.pop() {
+ rpn_string.push(top);
+ }
+
+ println!("you formula results in {}", rpn_string);
+
+ *input=rpn_string;
+}
+
+fn calculate(input: &String, list : &mut [u32;4]) -> f32{
+ let mut stack : Vec = Vec::new();
+ let mut accumulator : f32 = 0.0;
+
+ for token in input.chars(){
+ if token.is_digit(10) {
+ let test = token.to_digit(10).unwrap() as u32;
+ match list.iter().position(|&x| x == test){
+ Some(idx) => list[idx]=10 ,
+ _ => println!(" invalid digit: {} ",test),
+ }
+ stack.push(accumulator);
+ accumulator = test as f32;
+ }else{
+ let a = stack.pop().unwrap();
+ accumulator = match token {
+ '-' => a-accumulator,
+ '+' => a+accumulator,
+ '/' => a/accumulator,
+ '*' => a*accumulator,
+ _ => {accumulator},//NOP
+ };
+ }
+ }
+ println!("you formula results in {}",accumulator);
+ accumulator
+}
+
+fn main() {
+
+ let mut rng = rand::thread_rng();
+ let mut list :[u32;4]=[rng.gen::()%10,rng.gen::()%10,rng.gen::()%10,rng.gen::()%10];
+
+ println!("form 24 with using + - / * {:?}",list);
+ //get user input
+ let mut input = String::new();
+ io::stdin().read_line(&mut input).unwrap();
+ //convert to rpn
+ to_rpn(&mut input);
+ let result = calculate(&input, &mut list);
+
+ if list.iter().any(|&list| list !=10){
+ println!("and you used all numbers");
+ match result {
+ 24.0 => println!("you won"),
+ _ => println!("but your formulla doesn't result in 24"),
+ }
+ }else{
+ println!("you didn't use all the numbers");
+ }
+
+}
diff --git a/Task/24-game/Scheme/24-game.scm b/Task/24-game/Scheme/24-game.ss
similarity index 100%
rename from Task/24-game/Scheme/24-game.scm
rename to Task/24-game/Scheme/24-game.ss
diff --git a/Task/24-game/Zig/24-game.zig b/Task/24-game/Zig/24-game.zig
deleted file mode 100644
index 4c224f1030..0000000000
--- a/Task/24-game/Zig/24-game.zig
+++ /dev/null
@@ -1,153 +0,0 @@
-const std = @import("std");
-const rand = std.Random;
-// (hint: errors cannot be handled at comptime)
-var stdout: std.fs.File.Writer = undefined;
-var stdin: std.fs.File.Reader = undefined;
-
-fn opType(x: u8) i32 {
- return switch (x) {
- '-', '+' => 1,
- '/', '*' => 2,
- '(', ')' => -1,
- else => 0,
- };
-}
-
-fn toRpn(allocator: std.mem.Allocator, input: []const u8) ![]u8 {
- var rpnString = std.ArrayList(u8).init(allocator);
- defer rpnString.deinit();
-
- var rpnStack = std.ArrayList(u8).init(allocator);
- defer rpnStack.deinit();
-
- var lastToken: u8 = '#';
-
- for (input) |token| {
- if (token >= '1' and token <= '9') {
- try rpnString.append(token);
- } else if (opType(token) == 0) {
- continue;
- } else if (opType(token) > opType(lastToken) or token == '(') {
- try rpnStack.append(token);
- lastToken = token;
- } else {
- while (rpnStack.items.len > 0) {
- const top = rpnStack.pop().?;
- if (top == '(') {
- break;
- }
- try rpnString.append(top);
- }
- if (token != ')') {
- try rpnStack.append(token);
- }
- }
- }
-
- while (rpnStack.items.len > 0) {
- try rpnString.append(rpnStack.pop().?);
- }
-
- if (rpnString.items.len > 0) {
- try stdout.print("your formula results in {s}\n", .{rpnString.items});
- } else {
- stdout.print("no input available.\n", .{}) catch {};
- }
-
- return rpnString.toOwnedSlice();
-}
-
-fn calculate(input: []const u8, list: *[4]u32) f32 {
- var stack = std.ArrayList(f32).init(std.heap.page_allocator);
- defer stack.deinit();
-
- var accumulator: f32 = 0.0;
-
- for (input) |token| {
- if (token >= '1' and token <= '9') {
- const digit = @as(u32, token - '0');
-
- // Find and mark the used digit
- var found = false;
- for (list, 0..) |val, idx| {
- if (val == digit) {
- list[idx] = 10;
- found = true;
- break;
- }
- }
-
- if (!found) {
- stdout.print(" invalid digit: {d} \n", .{digit}) catch {};
- }
-
- stack.append(accumulator) catch {};
- accumulator = @floatFromInt(digit);
- } else {
- const a = stack.pop().?;
-
- accumulator = switch (token) {
- '-' => a - accumulator,
- '+' => a + accumulator,
- '/' => a / accumulator,
- '*' => a * accumulator,
- else => accumulator, // NOP
- };
- }
- }
-
- stdout.print("your formula results in {d}\n", .{accumulator}) catch {};
- return accumulator;
-}
-
-pub fn main() !void {
- stdout = std.io.getStdOut().writer();
- stdin = std.io.getStdIn().reader();
- var prng = rand.DefaultPrng.init(@as(u64, @intCast(std.time.timestamp())));
- const random = prng.random();
- // only values from 1 --> 9 (inclusive)
- var list = [_]u32{
- @mod(random.int(u32), 9) + 1,
- @mod(random.int(u32), 9) + 1,
- @mod(random.int(u32), 9) + 1,
- @mod(random.int(u32), 9) + 1,
- };
-
- try stdout.print("form 24 with using + - / * {d} {d} {d} {d}\n", .{ list[0], list[1], list[2], list[3] });
-
- // Get user input
- var buffer: [1024]u8 = undefined;
- const input = try stdin.readUntilDelimiterOrEof(buffer[0..], '\n') orelse "";
-
- var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator);
- defer arena.deinit();
- const allocator = arena.allocator();
-
- // Convert to RPN
- const rpnInput = try toRpn(allocator, input);
- if (rpnInput.len == 0) {
- stdout.print("exit.\n", .{}) catch {};
- return;
- }
-
- const result = calculate(rpnInput, &list);
-
- var allUsed = true;
- for (list) |val| {
- if (val != 10) {
- allUsed = false;
- break;
- }
- }
-
- if (allUsed) {
- try stdout.print("and you used all numbers\n", .{});
- if (result == 24.0) {
- try stdout.print("you won\n", .{});
- } else {
- try stdout.print("but your formula doesn't result in 24\n", .{});
- }
- } else {
- try stdout.print("you didn't use all the numbers\n", .{});
- }
-}
diff --git a/Task/4-rings-or-4-squares-puzzle/Ada/4-rings-or-4-squares-puzzle.adb b/Task/4-rings-or-4-squares-puzzle/Ada/4-rings-or-4-squares-puzzle.ada
similarity index 100%
rename from Task/4-rings-or-4-squares-puzzle/Ada/4-rings-or-4-squares-puzzle.adb
rename to Task/4-rings-or-4-squares-puzzle/Ada/4-rings-or-4-squares-puzzle.ada
diff --git a/Task/4-rings-or-4-squares-puzzle/Crystal/4-rings-or-4-squares-puzzle.cr b/Task/4-rings-or-4-squares-puzzle/Crystal/4-rings-or-4-squares-puzzle.crystal
similarity index 100%
rename from Task/4-rings-or-4-squares-puzzle/Crystal/4-rings-or-4-squares-puzzle.cr
rename to Task/4-rings-or-4-squares-puzzle/Crystal/4-rings-or-4-squares-puzzle.crystal
diff --git a/Task/4-rings-or-4-squares-puzzle/EasyLang/4-rings-or-4-squares-puzzle.easy b/Task/4-rings-or-4-squares-puzzle/EasyLang/4-rings-or-4-squares-puzzle.easy
index 22e54e305a..f2e05dc87f 100644
--- a/Task/4-rings-or-4-squares-puzzle/EasyLang/4-rings-or-4-squares-puzzle.easy
+++ b/Task/4-rings-or-4-squares-puzzle/EasyLang/4-rings-or-4-squares-puzzle.easy
@@ -1,10 +1,12 @@
func ok v t[] .
for h in t[]
- if v = h : return 0
+ if v = h
+ return 0
+ .
.
return 1
.
-proc four lo hi uni show .
+proc four lo hi uni show . .
#
subr bf
for f = lo to hi
diff --git a/Task/4-rings-or-4-squares-puzzle/Julia/4-rings-or-4-squares-puzzle.jl b/Task/4-rings-or-4-squares-puzzle/Julia/4-rings-or-4-squares-puzzle.julia
similarity index 100%
rename from Task/4-rings-or-4-squares-puzzle/Julia/4-rings-or-4-squares-puzzle.jl
rename to Task/4-rings-or-4-squares-puzzle/Julia/4-rings-or-4-squares-puzzle.julia
diff --git a/Task/4-rings-or-4-squares-puzzle/Kotlin/4-rings-or-4-squares-puzzle.kts b/Task/4-rings-or-4-squares-puzzle/Kotlin/4-rings-or-4-squares-puzzle.kotlin
similarity index 100%
rename from Task/4-rings-or-4-squares-puzzle/Kotlin/4-rings-or-4-squares-puzzle.kts
rename to Task/4-rings-or-4-squares-puzzle/Kotlin/4-rings-or-4-squares-puzzle.kotlin
diff --git a/Task/4-rings-or-4-squares-puzzle/OCaml/4-rings-or-4-squares-puzzle.ml b/Task/4-rings-or-4-squares-puzzle/OCaml/4-rings-or-4-squares-puzzle.ocaml
similarity index 100%
rename from Task/4-rings-or-4-squares-puzzle/OCaml/4-rings-or-4-squares-puzzle.ml
rename to Task/4-rings-or-4-squares-puzzle/OCaml/4-rings-or-4-squares-puzzle.ocaml
diff --git a/Task/4-rings-or-4-squares-puzzle/PARI-GP/4-rings-or-4-squares-puzzle.parigp b/Task/4-rings-or-4-squares-puzzle/PARI-GP/4-rings-or-4-squares-puzzle.parigp
deleted file mode 100644
index d8c0e765a3..0000000000
--- a/Task/4-rings-or-4-squares-puzzle/PARI-GP/4-rings-or-4-squares-puzzle.parigp
+++ /dev/null
@@ -1,39 +0,0 @@
-foursquares(plo, phi, punique, pshow) = {
- my(lo=plo, hi=phi, unique=punique, show=pshow, solutions, a, b, c, d, e, f, g);
- print();
- for (c = lo, hi,
- for (d = lo, hi,
- if (!unique || c != d,
- a = c + d;
- if (a >= lo && a <= hi && (!unique || (c != 0 && d != 0)),
- for (e = lo, hi,
- if (!unique || (e != a && e != c && e != d),
- g = d + e;
- if (g >= lo && g <= hi && (!unique || (g != a && g != c && g != d && g != e)),
- for (f = lo, hi,
- if (!unique || (f != a && f != c && f != d && f != g && f != e),
- b = e + f - c;
- if (b >= lo && b <= hi && (!unique || (b != a && b != c && b != d && b != g && b != e && b != f)),
- solutions++;
- if (show, print(a, " ", b, " ", c, " ", d, " ", e, " ", f, " ", g));
- )
- )
- )
- )
- )
- )
- )
- )
- )
- );
-
- if (unique,
- print("\n", solutions, " unique solutions in ", lo, " to ", hi);
- ,
- print("\n", solutions, " non-unique solutions in ", lo, " to ", hi);
- );
-}
-
-foursquares(1,7,1,1);
-foursquares(3,9,1,1);
-foursquares(0,9,0,0);
diff --git a/Task/4-rings-or-4-squares-puzzle/Quackery/4-rings-or-4-squares-puzzle.quackery b/Task/4-rings-or-4-squares-puzzle/Quackery/4-rings-or-4-squares-puzzle.quackery
deleted file mode 100644
index fd5fa00757..0000000000
--- a/Task/4-rings-or-4-squares-puzzle/Quackery/4-rings-or-4-squares-puzzle.quackery
+++ /dev/null
@@ -1,36 +0,0 @@
- [ swap dip [ 1+ split drop ]
- split nip ] is slice ( [ n n --> [ )
-
- [ 0 swap witheach + ] is sum ( [ --> n )
-
- [ slice sum join ] is square ( [ [ n n --> [ )
-
- [ true swap
- behead swap witheach
- [ over = not if
- [ dip not conclude ] ]
- drop ] is same ( [ --> b )
-
- [ [] temp put
- over - 1+ times
- [ dup i^ + temp gather ]
- drop
- temp take ] is low->high ( n n --> [ )
-
- [ [] temp put
- witheach
- [ []
- over 0 1 square
- over 1 3 square
- over 3 5 square
- over 5 6 square
- same iff
- [ nested temp gather ]
- else drop ]
- temp take ] is task ( [ n --> [ )
-
- 1 7 low->high permutations task
- witheach [ echo cr ] cr
- 3 9 low->high permutations task
- witheach [ echo cr ] cr
- 0 9 low->high 7 arrangements task size echo
diff --git a/Task/4-rings-or-4-squares-puzzle/Rust/4-rings-or-4-squares-puzzle.rs b/Task/4-rings-or-4-squares-puzzle/Rust/4-rings-or-4-squares-puzzle.rust
similarity index 100%
rename from Task/4-rings-or-4-squares-puzzle/Rust/4-rings-or-4-squares-puzzle.rs
rename to Task/4-rings-or-4-squares-puzzle/Rust/4-rings-or-4-squares-puzzle.rust
diff --git a/Task/4-rings-or-4-squares-puzzle/Scheme/4-rings-or-4-squares-puzzle.scm b/Task/4-rings-or-4-squares-puzzle/Scheme/4-rings-or-4-squares-puzzle.ss
similarity index 100%
rename from Task/4-rings-or-4-squares-puzzle/Scheme/4-rings-or-4-squares-puzzle.scm
rename to Task/4-rings-or-4-squares-puzzle/Scheme/4-rings-or-4-squares-puzzle.ss
diff --git a/Task/4-rings-or-4-squares-puzzle/Uiua/4-rings-or-4-squares-puzzle.uiua b/Task/4-rings-or-4-squares-puzzle/Uiua/4-rings-or-4-squares-puzzle.uiua
deleted file mode 100644
index be7a6495bb..0000000000
--- a/Task/4-rings-or-4-squares-puzzle/Uiua/4-rings-or-4-squares-puzzle.uiua
+++ /dev/null
@@ -1,4 +0,0 @@
-# Solve 4 equations in 7 variables, all distinct.
-Test ← =1⧻◴≡⌟◇(/+⊏){0_1 1_2_3 3_4_5 5_6}
-▽⊸≡Test⧅≠⊸⧻+1⇡7
-▽⊸≡Test⧅≠⊸⧻+3⇡7
diff --git a/Task/4-rings-or-4-squares-puzzle/V-(Vlang)/4-rings-or-4-squares-puzzle-2.v b/Task/4-rings-or-4-squares-puzzle/V-(Vlang)/4-rings-or-4-squares-puzzle-2.v
deleted file mode 100644
index f44447a8e6..0000000000
--- a/Task/4-rings-or-4-squares-puzzle/V-(Vlang)/4-rings-or-4-squares-puzzle-2.v
+++ /dev/null
@@ -1,38 +0,0 @@
-import math.bits
-
-fn main ( ) {
- mut n := 0
- mut t := []u8{len:7}
-
- n = solve ( 0, mut t, 1, 7, true )
- println ( "$n unique solutions in 1 to 7" )
- n = solve ( 0, mut t, 3, 9, true )
- println("$n unique solutions in 3 to 9")
- n = solve ( 0, mut t, 0, 9, false )
- println("$n non-unique solutions in 0 to 9")
-}
-
-fn solve ( lvl u8, mut t []u8, low u8, high u8,unique bool ) int {
- if lvl==7 {
- return int(suma(t) && (!unique || isunique( t )))
- }
- mut cnt:=0
- for v := low; v <= high; v++ {
- t[lvl] = v
- cnt += solve ( lvl + 1, mut t, low, high, unique )
- }
- return cnt
-}
-
-@[inline]
-fn isunique ( t []u8 ) bool {
- return bits.ones_count_32(u32(1)<= n - 1 THEN 1
- ELIF ( n - col ) < col THEN names[ n - col ]
- ELIF ( n - col ) = col AND NOT ODD n THEN names[ n - col ]
- ELSE
- NAMEG partial sum := 0;
- FOR k TO col DO partial sum +:= c[ n - col ][ k ] OD;
- partial sum
- FI
- OD;
- names[ n ]:= 0;
- FOR k TO n DO names[ n ] +:= c[ n ][ k ] OD
-; IF n MOD 200 = 0 THEN print( ( "...", whole( n, 0 ), newline ) ) FI
-OD;
-
-# display the first 25 rows of the triangle #
-FOR n TO 25 DO
- print( ( "(", whole( names[ n ], -6 ), ")", whole( n, -3 ), ":" ) );
- FOR col TO n DO
- print( ( " ", whole( c[ n ][ col ], -3 ) ) )
- OD;
- print( ( newline ) )
-OD;
-
-print( ( " 23: ", whole( names[ 23 ], 0 ), newline ) );
-print( ( " 123: ", whole( names[ 123 ], 0 ), newline ) )
diff --git a/Task/9-billion-names-of-God-the-integer/Ada/9-billion-names-of-god-the-integer.adb b/Task/9-billion-names-of-God-the-integer/Ada/9-billion-names-of-god-the-integer.ada
similarity index 100%
rename from Task/9-billion-names-of-God-the-integer/Ada/9-billion-names-of-god-the-integer.adb
rename to Task/9-billion-names-of-God-the-integer/Ada/9-billion-names-of-god-the-integer.ada
diff --git a/Task/9-billion-names-of-God-the-integer/Crystal/9-billion-names-of-god-the-integer.cr b/Task/9-billion-names-of-God-the-integer/Crystal/9-billion-names-of-god-the-integer.crystal
similarity index 100%
rename from Task/9-billion-names-of-God-the-integer/Crystal/9-billion-names-of-god-the-integer.cr
rename to Task/9-billion-names-of-God-the-integer/Crystal/9-billion-names-of-god-the-integer.crystal
diff --git a/Task/9-billion-names-of-God-the-integer/EasyLang/9-billion-names-of-god-the-integer.easy b/Task/9-billion-names-of-God-the-integer/EasyLang/9-billion-names-of-god-the-integer.easy
deleted file mode 100644
index 31f4c0500b..0000000000
--- a/Task/9-billion-names-of-God-the-integer/EasyLang/9-billion-names-of-god-the-integer.easy
+++ /dev/null
@@ -1,64 +0,0 @@
-func[] bnadd a[] b[] .
- if len a[] < len b[] : swap a[] b[]
- for i = 1 to len a[]
- bi = 0
- if i <= len b[] : bi = b[i]
- h = a[i] + bi + c
- r[] &= h mod 10000000
- c = h div 10000000
- .
- if c > 0 : r[] &= c
- return r[]
-.
-func[] bnsub a[] b[] .
- for i = 1 to len a[]
- ai = a[i]
- bi = 0
- if i <= len b[] : bi = b[i]
- bi += c
- c = 0
- if bi > ai
- ai += 10000000
- c = 1
- .
- r[] &= ai - bi
- .
- while r[$] = 0 : len r[] -1
- return r[]
-.
-func$ str bn[] .
- s$ = bn[$]
- for i = len bn[] - 1 downto 1
- h$ = bn[i]
- s$ &= substr "0000000" 1 (7 - len h$) & h$
- .
- return s$
-.
-proc parti n &p[][] .
- subr upd
- if k mod 2 = 1
- h[] = bnadd p[n][] p[d][]
- else
- h[] = bnsub p[n][] p[d][]
- .
- p[n][] = h[]
- .
- for k = 1 to n
- d = n - k * (3 * k - 1) div 2
- if d < 0 : break 1
- upd
- d -= k
- if d < 0 : break 1
- upd
- .
-.
-proc partitions_p n &p[][] .
- p[][] = [ ]
- len p[][] n + 1
- p[0][] = [ 1 ]
- for i to n : parti i p[][]
-.
-for nn in [ 23 123 1234 12345 ]
- partitions_p nn p[][]
- print nn & ": " & str p[nn][]
-.
diff --git a/Task/9-billion-names-of-God-the-integer/Elixir/9-billion-names-of-god-the-integer.ex b/Task/9-billion-names-of-God-the-integer/Elixir/9-billion-names-of-god-the-integer.elixir
similarity index 100%
rename from Task/9-billion-names-of-God-the-integer/Elixir/9-billion-names-of-god-the-integer.ex
rename to Task/9-billion-names-of-God-the-integer/Elixir/9-billion-names-of-god-the-integer.elixir
diff --git a/Task/9-billion-names-of-God-the-integer/FutureBasic/9-billion-names-of-god-the-integer.basic b/Task/9-billion-names-of-God-the-integer/FutureBasic/9-billion-names-of-god-the-integer.basic
deleted file mode 100644
index 6c25428226..0000000000
--- a/Task/9-billion-names-of-God-the-integer/FutureBasic/9-billion-names-of-god-the-integer.basic
+++ /dev/null
@@ -1,179 +0,0 @@
-//
-// 9 billion names of G-D the integer
-//
-// Using FutureBasic 7.0.35
-// September 2025, R.W.
-//
-
-include "gmp.incl" // GMP only (MPFR not needed here)
-
-_kTriMax = 25
-_kMaxP = 123456 // compile-time bound for big_p[]
-
-UInt64 tri(_kTriMax, _kTriMax) // the 25 by 25 triangle
-mpz_t big_p(_kMaxP) // partition values P(0.._kMaxP)
-
-//
-// Integer partition via GMP (mpz_t)
-//
-// Computes P(0..partMax) in global big_p[]
-// big_p(xxxxx) will have _kMaxP elements
-//
-// At its largest sum term (123456),
-// it would be greater than 10^385 or hundreds of digits
-// beyond a centillion
-
-local fn ComputePartitions( partMax as long )
- long i, j, k
- long a, b
- mpz_t s
-
- if partMax > _kMaxP then partMax = _kMaxP
- // temp accumulator
- mpz_init( s )
-
- // base case
- mpz_set_ui( big_p(0), 1 )
-
- for i = 1 to partMax
- // generalized pentagonal sequence setup
- j = 1
- k = 1
- b = 2
- a = 5
-
- while j > 0
- // j = i - (3*k*k+k) \ 2
- // (implemented incrementally via b,a)
- j = i - b
- b = b + a
- a = a + 3
-
- if j >= 0
- if (k AND 1) <> 0
- mpz_add( s, s, big_p(j) )
- else
- mpz_sub( s, s, big_p(j) )
- end if
- end if
- // second term at j + k
- j = j + k
- if j >= 0
- if (k AND 1) <> 0
- mpz_add( s, s, big_p(j) )
- else
- mpz_sub( s, s, big_p(j) )
- end if
- end if
- k ++
- wend
-
- mpz_swap( big_p(i), s )
- next
-
- mpz_clear( s )
-end fn
-
-//
-// Partition triangle using 64-bit ints
-// p(n,k) -> # of partitions of n with
-// largest part exactly k
-//
-local fn BuildPartitionTriangle
- CFStringRef pLine, filler
- pLine = @""
- filler = @" "
- long n, k
-
- // first 3 rows are always 1's
- tri(1,1) = 1
- tri(2,1) = 1
- tri(2,2) = 1
- tri(3,1) = 1
- tri(3,2) = 1
- tri(3,3) = 1
-
- for n = 4 to _kTriMax
- for k = 1 to n
- if k * 2 > n
- tri(n,k) = tri(n-1, k-1)
- else
- tri(n,k) = tri(n-1, k-1) + tri(n-k, k)
- end if
- next
- next
-
- // display the triangle
- for n = 1 to 25
- pLine = @""
- for k = 1 to n
- pLine = concat(pLine, mid(str(tri(n,k)),1),@" ")
- next k
- pLine = concat(left(filler, 38 - len(pLine)/2) , pLine)
- print pLine
- next n
-end fn
-//
-// MAIN
-// ----------------------------------------------
-Window 1, @"9 Billion Names of G-D the integer",¬
-(0,0,980,540)
-
-long n, k, max
-max = 123456 // must not exceed _kMaxP
-CFStringRef pLine
-pLine = @""
-
-CFTimeInterval t
-t = fn CACurrentMediaTime // start clock
-
-fn BuildPartitionTriangle
-
-// Initialize big_p(0..kPartMax) to 0
-for n = 0 to max
- mpz_init( big_p(n) )
-next
-
-// Compute partitions P(0..kPartMax)
-fn ComputePartitions( max )
-print@
-print @"Sums"
-print @"----"
-
-long cxCount
-cxCount = 5
-Int i
-long cx(5)
-cx(1) = 23
-cx(2) = 123
-cx(3) = 1234
-cx(4) = 12345
-cx(5) = 123456
-
-long at
-at = 1
-
-for i = 1 to max
- if at <= cxCount
- if i = cx(at)
- pLine = fn mpz_cf( 10,big_p(i) )
- print concat( @"G(", mid(str(i),1), @") = ", pLine )
- at = at + 1
- end if
- else
- exit for
- end if
-next
-//
-// stop the clock
-print@
-printf @"Elapsed time = %.4f ms.", (fn CACurrentMediaTime - t)*1000
-
-// Cleanup
-for n = 0 to max
- mpz_clear( big_p(n) )
-next
-
-HandleEvents
-
-//
diff --git a/Task/9-billion-names-of-God-the-integer/Groovy/9-billion-names-of-god-the-integer.groovy b/Task/9-billion-names-of-God-the-integer/Groovy/9-billion-names-of-god-the-integer.groovy
index 006cf36944..fed2cfdfba 100644
--- a/Task/9-billion-names-of-God-the-integer/Groovy/9-billion-names-of-god-the-integer.groovy
+++ b/Task/9-billion-names-of-God-the-integer/Groovy/9-billion-names-of-god-the-integer.groovy
@@ -1,4 +1,4 @@
-static def partitions(c)
+def partitions(c)
{
def p=[];
diff --git a/Task/9-billion-names-of-God-the-integer/Julia/9-billion-names-of-god-the-integer.jl b/Task/9-billion-names-of-God-the-integer/Julia/9-billion-names-of-god-the-integer.julia
similarity index 100%
rename from Task/9-billion-names-of-God-the-integer/Julia/9-billion-names-of-god-the-integer.jl
rename to Task/9-billion-names-of-God-the-integer/Julia/9-billion-names-of-god-the-integer.julia
diff --git a/Task/9-billion-names-of-God-the-integer/Kotlin/9-billion-names-of-god-the-integer.kts b/Task/9-billion-names-of-God-the-integer/Kotlin/9-billion-names-of-god-the-integer.kotlin
similarity index 100%
rename from Task/9-billion-names-of-God-the-integer/Kotlin/9-billion-names-of-god-the-integer.kts
rename to Task/9-billion-names-of-God-the-integer/Kotlin/9-billion-names-of-god-the-integer.kotlin
diff --git a/Task/9-billion-names-of-God-the-integer/OCaml/9-billion-names-of-god-the-integer.ml b/Task/9-billion-names-of-God-the-integer/OCaml/9-billion-names-of-god-the-integer.ocaml
similarity index 100%
rename from Task/9-billion-names-of-God-the-integer/OCaml/9-billion-names-of-god-the-integer.ml
rename to Task/9-billion-names-of-God-the-integer/OCaml/9-billion-names-of-god-the-integer.ocaml
diff --git a/Task/9-billion-names-of-God-the-integer/Pluto/9-billion-names-of-god-the-integer.pluto b/Task/9-billion-names-of-God-the-integer/Pluto/9-billion-names-of-god-the-integer.pluto
deleted file mode 100644
index 32f0b981d9..0000000000
--- a/Task/9-billion-names-of-God-the-integer/Pluto/9-billion-names-of-god-the-integer.pluto
+++ /dev/null
@@ -1,39 +0,0 @@
-local bigint = require "pluto:bigint"
-local fmt = require "fmt"
-
-local zero = bigint.new(0)
-local one = bigint.new(1)
-
-local cache = {{one}}
-
-local function cumu(n)
- if #cache <= n then
- for l = #cache, n do
- local r = {zero}
- for x = 1, l do
- local min = l - x
- if x < min then min = x end
- r:insert(r:back() + cache[l - x + 1][min + 1])
- end
- cache:insert(r)
- end
- end
- return cache[n + 1]
-end
-
-local function row(n)
- local r = cumu(n)
- return range(1, n):map(|i| -> r[i + 1] - r[i])
-end
-
-print("Rows:")
-for i = 1, 25 do
- fmt.write("%2d: ", i)
- local r = row(i)
- fmt.tprint("%3s", r, #r)
-end
-
-print("\nSums:")
-for {23, 123, 1234, 12345} as i do
- fmt.print("%5d: %s", i, cumu(i):back())
-end
diff --git a/Task/9-billion-names-of-God-the-integer/Rebol/9-billion-names-of-god-the-integer.rebol b/Task/9-billion-names-of-God-the-integer/Rebol/9-billion-names-of-god-the-integer.rebol
deleted file mode 100644
index 4c937e4e34..0000000000
--- a/Task/9-billion-names-of-God-the-integer/Rebol/9-billion-names-of-god-the-integer.rebol
+++ /dev/null
@@ -1,101 +0,0 @@
-Rebol [
- title: "Rosetta code: 9 billion names of God the integer"
- file: %9_billion_names_of_God_the_integer.r3
- url: https://rosettacode.org/wiki/9_billion_names_of_God_the_integer
- needs: 3.0.0
- note: {Based on Red language version}
-]
-names-of-god: function/with [
- row [integer!] "row number (>= 1)"
- /show "Display intermediate results"
- /all "When showing, print all intermediate data"
-][
- ;; Validate input - require row >= 1, otherwise trigger a runtime error
- assert [row >= 1]
-
- ;; If /show refinement is used, display results for the given row
- if show [
- ;; Ensure nums/:row is computed; if not, recursively compute it
- unless nums/:row [names-of-god row]
-
- ;; Loop from 1 to row
- repeat i row [
- either all [ ;; If /all refinement is used, display extra details
- probe reduce [i nums/:i sums/:i] ;; Show index, sequence, and sum
- ][
- print nums/:i ;; Otherwise, just print the sequence
- ]
- ]
- ]
-
- ;; Compute a new row from scratch (if row not already computed)...
- unless sum: sums/:row [
- out: clear [] ;; Temporary storage for row's elements
- half: to integer! row / 2 ;; Middle position of the row
-
- ;; Ensure all required previous rows exist; generate missing ones
- if row - 1 > last: length? nums [
- repeat i row - last - 1 [
- names-of-god last + i
- ]
- ]
-
- ;; Build the `out` block for this row
- repeat col row - 1 [
- ;; Special case: the middle element
- either col = (half + 1) [
- append out at nums/(row - 1) half ;; Insert from previous row's middle
- break ;; Stop building here
- ][
- ;; General case: append sum-part of two earlier sequences
- append out sum-part nums/(row - col) col
- ]
- ]
-
- ;; Compute the sum of the row
- sum: 0.0
- forall out [
- sum: sum + out/1
- ]
-
- ;; Cache the computed row and its sum
- sums/:row: sum
- nums/:row: copy out
- clear out
- ]
- sums/:row ;; Return sum of the row
-][
- ;; ===== WITH BLOCK (local helper definitions and persistent state) =====
-
- ;; Helper function: sum the first `count` elements from the given block `nums`
- sum-part: function [nums [block!] count [integer!]][
- out: 0.0
- loop count [
- out: out + nums/1
- if empty? nums: next nums [break] ;; Stop if we've exhausted the block
- ]
- ;; If within integer range, convert to integer
- if out <= 0#7fffffffffffffff [out: to integer! out]
- out
- ]
-
- ;; Persistent storage for each computed row (map! with row → sequence)
- ;; Start with base cases:
- ;; row 1 = [1]
- ;; row 2 = [1 1]
- nums: make map! [1 [1] 2 [1 1]]
-
- ;; Persistent storage for row sums (map! with row → sum)
- ;; Base sums: row 1 sum = 1, row 2 sum = 2
- sums: make map! [1 1 2 2]
-]
-
-
-
-print "rows: ^/"
-names-of-god/show 25
-
-print "^/sums: ^/"
-probe names-of-god 23
-probe names-of-god 123
-probe names-of-god 1234
diff --git a/Task/9-billion-names-of-God-the-integer/Rust/9-billion-names-of-god-the-integer.rs b/Task/9-billion-names-of-God-the-integer/Rust/9-billion-names-of-god-the-integer.rust
similarity index 100%
rename from Task/9-billion-names-of-God-the-integer/Rust/9-billion-names-of-god-the-integer.rs
rename to Task/9-billion-names-of-God-the-integer/Rust/9-billion-names-of-god-the-integer.rust
diff --git a/Task/9-billion-names-of-God-the-integer/Scheme/9-billion-names-of-god-the-integer.scm b/Task/9-billion-names-of-God-the-integer/Scheme/9-billion-names-of-god-the-integer.ss
similarity index 100%
rename from Task/9-billion-names-of-God-the-integer/Scheme/9-billion-names-of-god-the-integer.scm
rename to Task/9-billion-names-of-God-the-integer/Scheme/9-billion-names-of-god-the-integer.ss
diff --git a/Task/9-billion-names-of-God-the-integer/Zig/9-billion-names-of-god-the-integer-1.zig b/Task/9-billion-names-of-God-the-integer/Zig/9-billion-names-of-god-the-integer-1.zig
deleted file mode 100644
index 7502e47386..0000000000
--- a/Task/9-billion-names-of-God-the-integer/Zig/9-billion-names-of-god-the-integer-1.zig
+++ /dev/null
@@ -1,63 +0,0 @@
-const std = @import("std");
-const print = std.debug.print;
-const bigint = std.math.big.int.Managed;
-const eql = std.mem.eql;
-const Array = std.ArrayList;
-const Array1 = Array(bigint);
-const Array2 = Array(Array1);
-var gpa = std.heap.GeneralPurposeAllocator(.{}){};
-const allocator = gpa.allocator();
-
-fn cumu(cache: *Array2, n: usize) !*Array1 {
- var y = cache.items.len;
- while (cache.items.len <= n) : (y += 1) {
- var roww = Array1.init(allocator);
- try roww.append(try bigint.init(allocator));
- for (1..y + 1) |x| {
- var cache_value = try cache.items[y - x].items[@min(x, y - x)].clone();
- try cache_value.add(&cache_value, &roww.getLast());
- try roww.append(cache_value);
- }
- try cache.append(roww);
- }
- return &(cache.items[n]);
-}
-
-fn row(cache: *Array2, n: usize) !void {
- const e = try cumu(cache, n);
- var v = try bigint.init(allocator);
- for (0..n) |i| {
- try v.sub(&e.items[i + 1], &e.items[i]);
- print(" {} ", .{v});
- }
- v.deinit();
- print("\n", .{});
-}
-
-pub fn main() !void {
- var cache = Array2.init(allocator);
- defer {
- cache.deinit();
- }
- defer {
- while (cache.popOrNull()) |l| {
- l.deinit();
- }
- }
- var cache0 = Array1.init(allocator);
- var v = try bigint.init(allocator);
- try v.set(1);
- try cache0.append(v);
- try cache.append(cache0);
-
- print("rows:\n", .{});
- for (1..1000) |x| {
- try row(&cache, x);
- }
-
- print("\nsums:\n", .{});
- for ([_]usize{ 23, 123, 999 }) |num| {
- const r = try cumu(&cache, num);
- print("{d: >4} {d}\n", .{ num, r.getLast() });
- }
-}
diff --git a/Task/9-billion-names-of-God-the-integer/Zig/9-billion-names-of-god-the-integer-2.zig b/Task/9-billion-names-of-God-the-integer/Zig/9-billion-names-of-god-the-integer-2.zig
deleted file mode 100644
index 3b8f04f057..0000000000
--- a/Task/9-billion-names-of-God-the-integer/Zig/9-billion-names-of-god-the-integer-2.zig
+++ /dev/null
@@ -1,35 +0,0 @@
-const std = @import("std");
-const print = std.debug.print;
-const bigint = std.math.big.int.Managed;
-const eql = std.mem.eql;
-const Array = std.ArrayList;
-const Array1 = Array(bigint);
-var gpa = std.heap.GeneralPurposeAllocator(.{}){};
-const allocator = gpa.allocator();
-
-fn calc ( n:usize, p:*Array1) !void {
- for ( 1..n+1 ) |k| {
- var d:i64 = @intCast(n);
- d -= @intCast(k*(3*k - 1)/2);
- inline for ( 0..2 ) |_| {
- if ( d < 0 ) return;
- if (k&1>0) try p.items[n].add ( &p.items[n], &p.items[@intCast(d)] )
- else try p.items[n].sub ( &p.items[n], &p.items[@intCast(d)] );
- d -= @intCast(k);
- }
- }
-}
-
-fn main() !void {
- const s = [_]usize{ 23, 123, 1234, 12345, 123456 };
- var p = Array1.init ( allocator );
- try p.append ( try bigint.initSet ( allocator, 1 ) );
- var i:usize=1;
- for ( s )|m|{
- while (i<=m):(i+=1){
- try p.append( try bigint.init(allocator) );
- try calc( i, &p );
- }
- print("P({d}) = {d}\n", .{m,p.items[m]} );
- }
-}
diff --git a/Task/99-bottles-of-beer/8th/99-bottles-of-beer-1.8th b/Task/99-bottles-of-beer/8th/99-bottles-of-beer-1.8th
deleted file mode 100644
index f07c88a955..0000000000
--- a/Task/99-bottles-of-beer/8th/99-bottles-of-beer-1.8th
+++ /dev/null
@@ -1,26 +0,0 @@
-\ 99 bottles of beer on the wall:
-[
- "no more bottles" ,
- "one bottle" ,
- ( dup . " bottles" )
-] var, bottles
-
-: .bottles
- dup 2 n:min bottles @ caseof ;
-
-: .beer
- .bottles . " of beer" . ;
-
-: .wall
- .beer " on the wall" . ;
-
-: .take
- " Take one down and pass it around" . ;
-
-: beers
- .wall ", " . .beer '; putc cr
- n:1- 0 max .take ", " .
- .wall '. putc cr drop ;
-
-' beers 1 99 loop-
-bye
diff --git a/Task/99-bottles-of-beer/8th/99-bottles-of-beer-2.8th b/Task/99-bottles-of-beer/8th/99-bottles-of-beer-2.8th
deleted file mode 100644
index f736dda979..0000000000
--- a/Task/99-bottles-of-beer/8th/99-bottles-of-beer-2.8th
+++ /dev/null
@@ -1,12 +0,0 @@
-[
- ( "Just one more bottle of beer on the wall, one bottle of beer.\n" . ) ,
- ( I dup "%d bottles of beer on the wall, %d bottles of beer.\n" s:strfmt . )
-] constant lyrics
-
-: app:main
- (
- dup lyrics [2,99] rot ' n:cmp a:pigeon w:exec
- n:1- "Take one down, pass it around, %d bottles of beer on the wall.\n\n" s:strfmt .
- ) 1 99 loop-
-
- "No more bottles of beer on the wall, no more bottles of beer.\n" . ;
diff --git a/Task/99-bottles-of-beer/8th/99-bottles-of-beer.8th b/Task/99-bottles-of-beer/8th/99-bottles-of-beer.8th
new file mode 100644
index 0000000000..fa816e4a36
--- /dev/null
+++ b/Task/99-bottles-of-beer/8th/99-bottles-of-beer.8th
@@ -0,0 +1,20 @@
+\ 99 bottles of beer on the wall:
+: allout "no more bottles" ;
+: just-one "1 bottle" ;
+: yeah! dup . " bottles" ;
+
+[
+ ' allout ,
+ ' just-one ,
+ ' yeah! ,
+] var, bottles
+
+: .bottles dup 2 n:min bottles @ swap caseof ;
+: .beer .bottles . " of beer" . ;
+: .wall .beer " on the wall" . ;
+: .take " Take one down and pass it around" . ;
+: beers .wall ", " . .beer '; putc cr
+ n:1- 0 max .take ", " .
+ .wall '. putc cr drop ;
+
+' beers 1 99 loop- bye
diff --git a/Task/99-bottles-of-beer/ALGOL-68/99-bottles-of-beer.alg b/Task/99-bottles-of-beer/ALGOL-68/99-bottles-of-beer.alg
index 194eebdb25..5ec893ef5a 100644
--- a/Task/99-bottles-of-beer/ALGOL-68/99-bottles-of-beer.alg
+++ b/Task/99-bottles-of-beer/ALGOL-68/99-bottles-of-beer.alg
@@ -1,10 +1,8 @@
-FOR bottles FROM 99 BY -1 TO 1 DO
- STRING bottles now = whole(bottles,0) + " bottle" + IF bottles = 1 THEN "" ELSE "s" FI;
- STRING bottles left = IF bottles = 1 THEN "No more" ELSE whole(bottles-1,0) FI
- + " bottle"
- + IF bottles = 2 THEN "" ELSE "s" FI;
- print((bottles now," of beer on the wall",newline));
- print((bottles now," of beer",newline));
- print(("Take one down, pass it around",newline));
- print((bottles left," of beer on the wall",newline,newline))
-OD
+main:(
+ FOR bottles FROM 99 TO 1 BY -1 DO
+ printf(($z-d" bottles of beer on the wall"l$, bottles));
+ printf(($z-d" bottles of beer"l$, bottles));
+ printf(($"Take one down, pass it around"l$));
+ printf(($z-d" bottles of beer on the wall"ll$, bottles-1))
+ OD
+)
diff --git a/Task/99-bottles-of-beer/Ada/99-bottles-of-beer-1.adb b/Task/99-bottles-of-beer/Ada/99-bottles-of-beer-1.ada
similarity index 100%
rename from Task/99-bottles-of-beer/Ada/99-bottles-of-beer-1.adb
rename to Task/99-bottles-of-beer/Ada/99-bottles-of-beer-1.ada
diff --git a/Task/99-bottles-of-beer/Ada/99-bottles-of-beer-2.adb b/Task/99-bottles-of-beer/Ada/99-bottles-of-beer-2.ada
similarity index 100%
rename from Task/99-bottles-of-beer/Ada/99-bottles-of-beer-2.adb
rename to Task/99-bottles-of-beer/Ada/99-bottles-of-beer-2.ada
diff --git a/Task/99-bottles-of-beer/Aria/99-bottles-of-beer.aria b/Task/99-bottles-of-beer/Aria/99-bottles-of-beer.aria
deleted file mode 100644
index 7e36393581..0000000000
--- a/Task/99-bottles-of-beer/Aria/99-bottles-of-beer.aria
+++ /dev/null
@@ -1,48 +0,0 @@
-struct Lyrics {
- type func new(n: Int) {
- assert n > 0;
- return alloc(This) {
- .n = n,
- };
- }
-
- func prettyprint() {
- val suffix_n = this.n == 1 ? "" : "s";
- val suffix_n_minus_1 = this.n == 2 ? "" : "s";
- return "{0} bottle{2} of beer on the wall, {0} bottle{2} of beer.\nTake one down and pass it around, {1} bottle{3} of beer on the wall.\n".format(this.n, this.n-1, suffix_n, suffix_n_minus_1);
- }
-}
-
-struct Song {
- type func new(n: Int) {
- assert n > 0;
- return alloc(This) {
- .n = n,
- };
- }
-
- func iterator() {
- return this;
- }
-
- func next() {
- if this.n == 0 {
- return Box(){.done = true};
- }
-
- val n = this.n;
- this.n -= 1;
-
- return Box() {
- .done = false,
- .value = Lyrics.new(n),
- };
- }
-}
-
-func main() {
- val song = Song.new(99);
- for verse in song {
- println(verse);
- }
-}
diff --git a/Task/99-bottles-of-beer/ArkScript/99-bottles-of-beer.ark b/Task/99-bottles-of-beer/ArkScript/99-bottles-of-beer.ark
deleted file mode 100644
index d12274823c..0000000000
--- a/Task/99-bottles-of-beer/ArkScript/99-bottles-of-beer.ark
+++ /dev/null
@@ -1,24 +0,0 @@
-# try and get an argument from the command line invocation
-(let arg
- (if (>= (len sys:args) 1)
- (toNumber (@ sys:args 0))
- nil))
-# if no argument was passed the default value will be 100
-(let i
- (if (nil? arg)
- 100
- arg))
-
-(let explode-bottles (fun (n)
- (if (> n 1) {
- (print (string:format "{} Bottles of beer on the wall\n{} bottles of beer\nTake one down, pass it around" n n))
- (print (string:format "{} Bottles of beer on the wall." (- n 1)))
- (explode-bottles (- n 1)) })
-(explode-bottles i)
-
-# alternative solution with a loop
-(mut n i)
-(while (> n 1) {
- (print (string:format "{} Bottles of beer on the wall\n{} bottles of beer\nTake one down, pass it around" n n))
- (set n (- n 1))
- (print (string:format "{} Bottles of beer on the wall." n)) })
diff --git a/Task/99-bottles-of-beer/Arturo/99-bottles-of-beer.arturo b/Task/99-bottles-of-beer/Arturo/99-bottles-of-beer.arturo
index a751484f40..36bb34201e 100644
--- a/Task/99-bottles-of-beer/Arturo/99-bottles-of-beer.arturo
+++ b/Task/99-bottles-of-beer/Arturo/99-bottles-of-beer.arturo
@@ -6,8 +6,9 @@ loop 99..1 'i [
print ~"Take one down, pass it around!"
if 1=i-1 -> s: ""
- switch i>1 [
+ if? i>1 [
print ~"|i-1| bottle|s| of beer on the wall!"
print ""
- ] -> print "No more bottles of beer on the wall!"
+ ]
+ else -> print "No more bottles of beer on the wall!"
]
diff --git a/Task/99-bottles-of-beer/Ballerina/99-bottles-of-beer.ballerina b/Task/99-bottles-of-beer/Ballerina/99-bottles-of-beer.ballerina
deleted file mode 100644
index d81204e77e..0000000000
--- a/Task/99-bottles-of-beer/Ballerina/99-bottles-of-beer.ballerina
+++ /dev/null
@@ -1,11 +0,0 @@
-// https://rosettacode.org/wiki/99_bottles_of_beer
-import ballerina/io;
-
-public function main() {
- foreach int i in int:range(99, 0, -1) {
- io:print(i); io:println(" bottles of beer on the wall");
- io:print(i); io:println(" bottles of beer");
- io:println("Take one down, pass it around");
- io:print(i-1); io:println(" bottles of beer on the wall\n");
- }
-}
diff --git a/Task/99-bottles-of-beer/COBOL/99-bottles-of-beer-1.cob b/Task/99-bottles-of-beer/COBOL/99-bottles-of-beer-1.cobol
similarity index 100%
rename from Task/99-bottles-of-beer/COBOL/99-bottles-of-beer-1.cob
rename to Task/99-bottles-of-beer/COBOL/99-bottles-of-beer-1.cobol
diff --git a/Task/99-bottles-of-beer/COBOL/99-bottles-of-beer-2.cob b/Task/99-bottles-of-beer/COBOL/99-bottles-of-beer-2.cobol
similarity index 100%
rename from Task/99-bottles-of-beer/COBOL/99-bottles-of-beer-2.cob
rename to Task/99-bottles-of-beer/COBOL/99-bottles-of-beer-2.cobol
diff --git a/Task/99-bottles-of-beer/COBOL/99-bottles-of-beer-3.cob b/Task/99-bottles-of-beer/COBOL/99-bottles-of-beer-3.cobol
similarity index 100%
rename from Task/99-bottles-of-beer/COBOL/99-bottles-of-beer-3.cob
rename to Task/99-bottles-of-beer/COBOL/99-bottles-of-beer-3.cobol
diff --git a/Task/99-bottles-of-beer/Chapel/99-bottles-of-beer.chpl b/Task/99-bottles-of-beer/Chapel/99-bottles-of-beer.chapel
similarity index 100%
rename from Task/99-bottles-of-beer/Chapel/99-bottles-of-beer.chpl
rename to Task/99-bottles-of-beer/Chapel/99-bottles-of-beer.chapel
diff --git a/Task/99-bottles-of-beer/Crystal/99-bottles-of-beer.cr b/Task/99-bottles-of-beer/Crystal/99-bottles-of-beer.crystal
similarity index 100%
rename from Task/99-bottles-of-beer/Crystal/99-bottles-of-beer.cr
rename to Task/99-bottles-of-beer/Crystal/99-bottles-of-beer.crystal
diff --git a/Task/99-bottles-of-beer/Dart/99-bottles-of-beer.dart b/Task/99-bottles-of-beer/Dart/99-bottles-of-beer.dart
index 07a966aa75..3251bd7375 100644
--- a/Task/99-bottles-of-beer/Dart/99-bottles-of-beer.dart
+++ b/Task/99-bottles-of-beer/Dart/99-bottles-of-beer.dart
@@ -57,3 +57,5 @@ class BeerSong extends Song {
return theLyrics;
}
}
+
+}
diff --git a/Task/99-bottles-of-beer/DuckDB/99-bottles-of-beer-1.duckdb b/Task/99-bottles-of-beer/DuckDB/99-bottles-of-beer-1.duckdb
deleted file mode 100644
index 3fe002df2b..0000000000
--- a/Task/99-bottles-of-beer/DuckDB/99-bottles-of-beer-1.duckdb
+++ /dev/null
@@ -1,13 +0,0 @@
-.header off
-.mode list
-select list_transform( range(99,-1,-1),
- n ->
- if (n = 0,
- 'No more bottles of beer on the wall' || chr(10)
- || 'no more bottles of beer.' || chr(10)
- || 'Go to the store, buy some more!' || chr(10)
- || '99 bottles of beer on the wall.',
- n || ' bottle' || if ( n = 1, '', 's') || ' of beer on the wall' || chr(10)
- || n || ' bottle' || if ( n = 1, '', 's') || ' of beer;' || chr(10)
- || 'Take one down, pass it around' || chr(10) ) )
- .array_to_string(chr(10)) ;
diff --git a/Task/99-bottles-of-beer/DuckDB/99-bottles-of-beer-2.duckdb b/Task/99-bottles-of-beer/DuckDB/99-bottles-of-beer-2.duckdb
deleted file mode 100644
index 02dd9eb97c..0000000000
--- a/Task/99-bottles-of-beer/DuckDB/99-bottles-of-beer-2.duckdb
+++ /dev/null
@@ -1,21 +0,0 @@
-.header off
-.mode list
-
-with recursive cte as (
- select 99 as n, '' as s
- union all
- select n-1 as n,
- if (n = 0,
- 'No more bottles of beer on the wall' || chr(10)
- || 'no more bottles of beer.' || chr(10)
- || 'Go to the store, buy some more!' || chr(10)
- || '99 bottles of beer on the wall.',
- n || ' bottle' || if ( n = 1, '', 's') || ' of beer on the wall' || chr(10)
- || n || ' bottle' || if ( n = 1, '', 's') || ' of beer;' || chr(10)
- || 'Take one down, pass it around' || chr(10) )
- from cte
- where n > -1
- ) select s
- from cte
- where s != ''
- order by n desc ;
diff --git a/Task/99-bottles-of-beer/EMal/99-bottles-of-beer.emal b/Task/99-bottles-of-beer/EMal/99-bottles-of-beer.emal
index 4993f8c5ee..7f8bf2daa2 100644
--- a/Task/99-bottles-of-beer/EMal/99-bottles-of-beer.emal
+++ b/Task/99-bottles-of-beer/EMal/99-bottles-of-beer.emal
@@ -1,28 +1,30 @@
type NinetynineBottles
-int DEFAULT_BOTTLES_COUNT ← 99
+int DEFAULT_BOTTLES_COUNT = 99
model
int initialBottlesCount, bottlesCount
- new by int ←bottlesCount
- me.initialBottlesCount ← bottlesCount
+ new by int =bottlesCount
+ me.initialBottlesCount = bottlesCount
end
- fun subject ← <|when(me.bottlesCount æ 1, "bottle", "bottles")
- fun bottles ← <|when(me.bottlesCount æ 0, "no more", text!me.bottlesCount)
- fun goToWall ← void by block
- text line ← me.bottles() + " " + me.subject() + " of beer on the wall, " +
+ fun subject = <|when(me.bottlesCount == 1, "bottle", "bottles")
+ fun bottles = <|when(me.bottlesCount == 0, "no more", text!me.bottlesCount)
+ fun goToWall = void by block
+ text line = me.bottles() + " " + me.subject() + " of beer on the wall, " +
me.bottles() + " " + me.subject() + " of beer."
- if me.bottlesCount æ 0 do line[0] ← line[0].upper() end # text can be modified
+ if me.bottlesCount == 0 do line[0] = line[0].upper() end # text can be modified
writeLine(line)
end
- fun takeOne ← logic by block
+ fun takeOne = logic by block
if --me.bottlesCount < 0 do return false end # cannot take a beer down
writeLine("Take one down and pass it around, " + me.bottles() +
" " + me.subject() + " of beer on the wall.")
writeLine()
return true
end
- fun goToStore ← <|writeLine("Go to the store and buy some more, " +
- me.initialBottlesCount + " bottles of beer on the wall.")
- fun play ← void by block
+ fun goToStore = void by block
+ writeLine("Go to the store and buy some more, " + me.initialBottlesCount +
+ " bottles of beer on the wall.")
+ end
+ fun play = void by block
for ever
me.goToWall()
if not me.takeOne()
diff --git a/Task/99-bottles-of-beer/EasyLang/99-bottles-of-beer.easy b/Task/99-bottles-of-beer/EasyLang/99-bottles-of-beer.easy
index deabe7c1be..f1f30f9082 100644
--- a/Task/99-bottles-of-beer/EasyLang/99-bottles-of-beer.easy
+++ b/Task/99-bottles-of-beer/EasyLang/99-bottles-of-beer.easy
@@ -1,15 +1,18 @@
func$ bottle num .
- if num = 1 : return "1 bottle"
- return num & " bottles"
+ if num = 1
+ return "bottle"
+ .
+ return "bottles"
.
+#
i = 99
repeat
- print bottle i & " of beer on the wall"
- print bottle i & " of beer"
+ print i & " " & bottle i & " of beer on the wall"
+ print i & " " & bottle i & " of beer"
print "Take one down, pass it around"
i -= 1
until i = 0
- print bottle i & " of beer on the wall"
+ print i & " " & bottle i & " of beer on the wall"
print ""
.
print "No more bottles of beer on the wall"
diff --git a/Task/99-bottles-of-beer/Elena/99-bottles-of-beer.elena b/Task/99-bottles-of-beer/Elena/99-bottles-of-beer.elena
index 496eaa2e0c..e88bc758db 100644
--- a/Task/99-bottles-of-beer/Elena/99-bottles-of-beer.elena
+++ b/Task/99-bottles-of-beer/Elena/99-bottles-of-beer.elena
@@ -27,9 +27,9 @@ extension bottleOp
};
}
-public Program()
+public program()
{
var bottles := 99;
- bottles.bottleEnumerator().forEach(PrintingLn)
+ bottles.bottleEnumerator().forEach(printingLn)
}
diff --git a/Task/99-bottles-of-beer/Elixir/99-bottles-of-beer-2.ex b/Task/99-bottles-of-beer/Elixir/99-bottles-of-beer-2.ex
deleted file mode 100644
index 21f101524c..0000000000
--- a/Task/99-bottles-of-beer/Elixir/99-bottles-of-beer-2.ex
+++ /dev/null
@@ -1,36 +0,0 @@
-last = [
- """
- 2 bottles of beer on the wall
- 2 bottles of beer
- Take one down, pass it around
- 1 bottle of beer on the wall
- """,
- """
- 1 bottle of beer on the wall
- 1 bottle of beer
- Take one down, pass it around
- No bottles of beer on the wall
- """,
- """
- 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
- """
-]
-
-skeleton = fn n ->
- """
- #{n} bottles of beer on the wall
- #{n} bottles of beer
- Take one down, pass it around
- #{n - 1} bottles of beer on the wall
- """
-end
-
-99..3
-|> Stream.map(skeleton)
-|> Stream.concat(last)
-|> Enum.intersperse("\n")
-|> IO.iodata_to_binary()
-|> IO.puts()
diff --git a/Task/99-bottles-of-beer/Elixir/99-bottles-of-beer-1.ex b/Task/99-bottles-of-beer/Elixir/99-bottles-of-beer.elixir
similarity index 100%
rename from Task/99-bottles-of-beer/Elixir/99-bottles-of-beer-1.ex
rename to Task/99-bottles-of-beer/Elixir/99-bottles-of-beer.elixir
diff --git a/Task/99-bottles-of-beer/Emacs-Lisp/99-bottles-of-beer.el b/Task/99-bottles-of-beer/Emacs-Lisp/99-bottles-of-beer.l
similarity index 100%
rename from Task/99-bottles-of-beer/Emacs-Lisp/99-bottles-of-beer.el
rename to Task/99-bottles-of-beer/Emacs-Lisp/99-bottles-of-beer.l
diff --git a/Task/99-bottles-of-beer/Euphoria/99-bottles-of-beer-1.eu b/Task/99-bottles-of-beer/Euphoria/99-bottles-of-beer-1.euphoria
similarity index 100%
rename from Task/99-bottles-of-beer/Euphoria/99-bottles-of-beer-1.eu
rename to Task/99-bottles-of-beer/Euphoria/99-bottles-of-beer-1.euphoria
diff --git a/Task/99-bottles-of-beer/Euphoria/99-bottles-of-beer-2.eu b/Task/99-bottles-of-beer/Euphoria/99-bottles-of-beer-2.euphoria
similarity index 100%
rename from Task/99-bottles-of-beer/Euphoria/99-bottles-of-beer-2.eu
rename to Task/99-bottles-of-beer/Euphoria/99-bottles-of-beer-2.euphoria
diff --git a/Task/99-bottles-of-beer/Euphoria/99-bottles-of-beer-3.eu b/Task/99-bottles-of-beer/Euphoria/99-bottles-of-beer-3.euphoria
similarity index 100%
rename from Task/99-bottles-of-beer/Euphoria/99-bottles-of-beer-3.eu
rename to Task/99-bottles-of-beer/Euphoria/99-bottles-of-beer-3.euphoria
diff --git a/Task/99-bottles-of-beer/Factor/99-bottles-of-beer-1.factor b/Task/99-bottles-of-beer/Factor/99-bottles-of-beer-1.factor
deleted file mode 100644
index 55688df8a7..0000000000
--- a/Task/99-bottles-of-beer/Factor/99-bottles-of-beer-1.factor
+++ /dev/null
@@ -1,6 +0,0 @@
-USE: math.parser
-100
-[ dup 1 - [ >dec " bottles of beer" append [ " on the wall" append ] keep ] bi@
- "Take one down, pass it around" -rot
- first CHAR: - = [ 2drop "..." "why's all the rum gone??" ] when ! if leading character is "-" then replace with new string
- 4array "\n" join print nl ] each
diff --git a/Task/99-bottles-of-beer/Factor/99-bottles-of-beer-2.factor b/Task/99-bottles-of-beer/Factor/99-bottles-of-beer.factor
similarity index 100%
rename from Task/99-bottles-of-beer/Factor/99-bottles-of-beer-2.factor
rename to Task/99-bottles-of-beer/Factor/99-bottles-of-beer.factor
diff --git a/Task/99-bottles-of-beer/Goboscript/99-bottles-of-beer.gobo b/Task/99-bottles-of-beer/Goboscript/99-bottles-of-beer.gobo
deleted file mode 100644
index 3d8b925c28..0000000000
--- a/Task/99-bottles-of-beer/Goboscript/99-bottles-of-beer.gobo
+++ /dev/null
@@ -1,44 +0,0 @@
-%include inflator/string
-
-costumes "assets/blank.svg";
-
-func add_bottle(n) {
- local s = "s";
- local s2 = "s";
- local n_minus_1 = $n - 1;
- local end = "\n";
-
- if $n == 1 {
- n_minus_1 = "No more";
- s = "";
- end = "";
- } elif $n == 2 {
- s2 = "";
- }
-
- return $n&" bottle"&s&" of beer on the wall\n" &
- $n&" bottle"&s&" of beer\n" &
- "Take one down, pass it around\n" &
- n_minus_1&" bottle"&s2&" of beer on the wall" & end;
-}
-
-proc do_99_bottles_of_beer {
- local ret = "";
- local i = 99;
- repeat 99 {
- ret &= add_bottle(i);
- i--;
- }
-
- split ret, "\n";
- i = 1;
- repeat length split {
- log split[i];
- i++;
- }
-}
-
-onflag{main;}
-proc main {
- do_99_bottles_of_beer;
-}
diff --git a/Task/99-bottles-of-beer/Haxe/99-bottles-of-beer-1.hx b/Task/99-bottles-of-beer/Haxe/99-bottles-of-beer-1.haxe
similarity index 100%
rename from Task/99-bottles-of-beer/Haxe/99-bottles-of-beer-1.hx
rename to Task/99-bottles-of-beer/Haxe/99-bottles-of-beer-1.haxe
diff --git a/Task/99-bottles-of-beer/Haxe/99-bottles-of-beer-2.hx b/Task/99-bottles-of-beer/Haxe/99-bottles-of-beer-2.haxe
similarity index 100%
rename from Task/99-bottles-of-beer/Haxe/99-bottles-of-beer-2.hx
rename to Task/99-bottles-of-beer/Haxe/99-bottles-of-beer-2.haxe
diff --git a/Task/99-bottles-of-beer/Java/99-bottles-of-beer-5.java b/Task/99-bottles-of-beer/Java/99-bottles-of-beer-5.java
deleted file mode 100644
index 394eb68af8..0000000000
--- a/Task/99-bottles-of-beer/Java/99-bottles-of-beer-5.java
+++ /dev/null
@@ -1,76 +0,0 @@
-import java.util.Scanner;
-
-public class NineNineBottles {
- static int bottlesOfBeer = 99;
- static boolean hasBeer = true;
- static Scanner keyboard = new Scanner(System.in);
-
- public static void main(String[] args) {
- beerCheck();
- keyboard.close();
- }
-
- private static void beerCheck() {
- if(hasBeer) {
- party(bottlesOfBeer);
- }
-
- if(!hasBeer) {
- System.out.println("Your ran out of beer. Would you like to go to the store?: ");
- String blurryVision, fallingOver, youAreDrunk;
- youAreDrunk = keyboard.nextLine();
- fallingOver = "RUHFO" + youAreDrunk.toLowerCase() + "RUHFOISafhur";
- blurryVision = fallingOver.split("[a-zA-Z]", 2).toString();
- if(blurryVision.contains("y"))
- blurryVision = blurryVision.substring(0, 1).toUpperCase();
- System.out.println("You entered: " + blurryVision.toString() + fallingOver);
- System.out.println("Did you mean yes?: ");
- blurryVision = keyboard.nextLine();
- if(blurryVision.contains("y") || blurryVision.contains("Y") || blurryVision.contains("8")
- || blurryVision.contains("2") || blurryVision.equalsIgnoreCase(youAreDrunk))
- {String beRECcheeck = blurryVision.toLowerCase();
- if(beRECcheeck.equals("y")) {
- goToStore();
- beerCheck();
- }
- }
- }
- }
-
- private static void party(int bottlesOfBeer) {
- while(bottlesOfBeer > 1) {
- putOnWall(bottlesOfBeer);
- bottlesOfBeer = takeOneDown(bottlesOfBeer);
- }
- putLastOnWall(bottlesOfBeer);
- }
-
- private static void putOnWall(int bottlesOfBeer) {
- System.out.printf("%d bottles of beer on the wall%n", bottlesOfBeer);
-
- }
-
- private static int takeOneDown(int bottlesOfBeer) {
- System.out.printf("%d bottles of beer%n", bottlesOfBeer);
- System.out.println("Take one down, pass it around");
- bottlesOfBeer--;
- putOnWall(bottlesOfBeer);
- System.out.println();
- return bottlesOfBeer;
-
- }
-
- private static void putLastOnWall(int bottleOfBeer) {
- System.out.printf("%d bottle of beer on the wall%n", bottleOfBeer);
- System.out.printf("%d bottle of beer%n", bottleOfBeer);
- System.out.println("Take it down, pass it around");
- bottleOfBeer--;
- System.out.println("No more bottles of beer on the wall.");
- hasBeer = false;
- }
-
- private static void goToStore() {
- bottlesOfBeer = 99;
- hasBeer = true;
- }
-}
diff --git a/Task/99-bottles-of-beer/Julia/99-bottles-of-beer-1.jl b/Task/99-bottles-of-beer/Julia/99-bottles-of-beer-1.julia
similarity index 100%
rename from Task/99-bottles-of-beer/Julia/99-bottles-of-beer-1.jl
rename to Task/99-bottles-of-beer/Julia/99-bottles-of-beer-1.julia
diff --git a/Task/99-bottles-of-beer/Julia/99-bottles-of-beer-2.jl b/Task/99-bottles-of-beer/Julia/99-bottles-of-beer-2.julia
similarity index 100%
rename from Task/99-bottles-of-beer/Julia/99-bottles-of-beer-2.jl
rename to Task/99-bottles-of-beer/Julia/99-bottles-of-beer-2.julia
diff --git a/Task/99-bottles-of-beer/Julia/99-bottles-of-beer-3.jl b/Task/99-bottles-of-beer/Julia/99-bottles-of-beer-3.julia
similarity index 100%
rename from Task/99-bottles-of-beer/Julia/99-bottles-of-beer-3.jl
rename to Task/99-bottles-of-beer/Julia/99-bottles-of-beer-3.julia
diff --git a/Task/99-bottles-of-beer/Kotlin/99-bottles-of-beer.kts b/Task/99-bottles-of-beer/Kotlin/99-bottles-of-beer.kotlin
similarity index 100%
rename from Task/99-bottles-of-beer/Kotlin/99-bottles-of-beer.kts
rename to Task/99-bottles-of-beer/Kotlin/99-bottles-of-beer.kotlin
diff --git a/Task/99-bottles-of-beer/Langur/99-bottles-of-beer.langur b/Task/99-bottles-of-beer/Langur/99-bottles-of-beer.langur
deleted file mode 100644
index 355e6adcbb..0000000000
--- a/Task/99-bottles-of-beer/Langur/99-bottles-of-beer.langur
+++ /dev/null
@@ -1,6 +0,0 @@
-for i=99; i>0; i-=1 {
- writeln "{{i}} bottles of beer on the wall"
- writeln "{{i}} bottles of beer"
- writeln "Take one down, pass it around"
- writeln "{{i-1}} bottles of beer on the wall\n"
-}
diff --git a/Task/99-bottles-of-beer/Lua/99-bottles-of-beer-4.lua b/Task/99-bottles-of-beer/Lua/99-bottles-of-beer-4.lua
deleted file mode 100644
index 5fdc0aa064..0000000000
--- a/Task/99-bottles-of-beer/Lua/99-bottles-of-beer-4.lua
+++ /dev/null
@@ -1,13 +0,0 @@
-local bottlesCount = 99
-local word = function(n) return n == 1 and "bottle" or "bottles" end
-while bottlesCount do
- print (string.format("%d %s of beer on the wall, %d %s of beer", bottlesCount, word(bottlesCount),bottlesCount, word(bottlesCount)))
- print ("You take one down, pass it around, ")
- bottlesCount = bottlesCount - 1
- if bottlesCount > 0 then
- print (string.format("%d %s of beer on the wall", bottlesCount, word(bottlesCount)))
- else
- print ("No more bottles of beer on the wall.")
- end
- if bottlesCount == 0 then bottlesCount = false end -- coud use reserved word break instead
-end
diff --git a/Task/99-bottles-of-beer/Lua/99-bottles-of-beer-5.lua b/Task/99-bottles-of-beer/Lua/99-bottles-of-beer-5.lua
deleted file mode 100644
index 8bc69c1a98..0000000000
--- a/Task/99-bottles-of-beer/Lua/99-bottles-of-beer-5.lua
+++ /dev/null
@@ -1,10 +0,0 @@
-word = function(n) return n == 1 and "bottle" or "bottles" end
-
-coldOne = function (bottlesCount)
- if bottlesCount < 1 then return print ("drunk, eh?") end
- if bottlesCount == 1 then return print ("1 bottle of beer and it's mine!") end
- print (string.format("%d %s of beer on the wall, %d %s of beer", bottlesCount, word(bottlesCount),bottlesCount, word(bottlesCount)))
- print ("You take one down, pass it around, ")
- print (string.format("%d %s of beer on the wall", bottlesCount-1, word(bottlesCount-1)))
- coldOne ( bottlesCount - 1)
-end
diff --git a/Task/99-bottles-of-beer/Nutt/99-bottles-of-beer.nutt b/Task/99-bottles-of-beer/Nutt/99-bottles-of-beer.nutt
index fcac676e27..ccd2ec6780 100644
--- a/Task/99-bottles-of-beer/Nutt/99-bottles-of-beer.nutt
+++ b/Task/99-bottles-of-beer/Nutt/99-bottles-of-beer.nutt
@@ -1,8 +1,8 @@
-module main
-import $native 'io' : output#sayn
+module main imports native.io.output.say
-funct main () : () =
- [1, 2; 99]#reverse#each {
- sayn "\(it) bottles of beer on the wall, \(it) bottles of beer";
- sayn "Take one down and pass it around, \(it# - 1) bottles of beer on the wall."
- }
+for i|->{1,2..99;<|>) do
+ say(""+i+" bottles of beer on the wall, "+i+" bottles of beer")
+ say("Take one down and pass it around, "+(i-1)+" bottles of beer on the wall.")
+done
+
+end
diff --git a/Task/99-bottles-of-beer/OCaml/99-bottles-of-beer-1.ml b/Task/99-bottles-of-beer/OCaml/99-bottles-of-beer-1.ocaml
similarity index 100%
rename from Task/99-bottles-of-beer/OCaml/99-bottles-of-beer-1.ml
rename to Task/99-bottles-of-beer/OCaml/99-bottles-of-beer-1.ocaml
diff --git a/Task/99-bottles-of-beer/OCaml/99-bottles-of-beer-2.ml b/Task/99-bottles-of-beer/OCaml/99-bottles-of-beer-2.ocaml
similarity index 100%
rename from Task/99-bottles-of-beer/OCaml/99-bottles-of-beer-2.ml
rename to Task/99-bottles-of-beer/OCaml/99-bottles-of-beer-2.ocaml
diff --git a/Task/99-bottles-of-beer/OCaml/99-bottles-of-beer-3.ml b/Task/99-bottles-of-beer/OCaml/99-bottles-of-beer-3.ocaml
similarity index 100%
rename from Task/99-bottles-of-beer/OCaml/99-bottles-of-beer-3.ml
rename to Task/99-bottles-of-beer/OCaml/99-bottles-of-beer-3.ocaml
diff --git a/Task/99-bottles-of-beer/OCaml/99-bottles-of-beer-4.ml b/Task/99-bottles-of-beer/OCaml/99-bottles-of-beer-4.ocaml
similarity index 100%
rename from Task/99-bottles-of-beer/OCaml/99-bottles-of-beer-4.ml
rename to Task/99-bottles-of-beer/OCaml/99-bottles-of-beer-4.ocaml
diff --git a/Task/99-bottles-of-beer/Oxygene/99-bottles-of-beer-2.oxy b/Task/99-bottles-of-beer/Oxygene/99-bottles-of-beer-2.oxy
deleted file mode 100644
index 5fc3a8fccb..0000000000
--- a/Task/99-bottles-of-beer/Oxygene/99-bottles-of-beer-2.oxy
+++ /dev/null
@@ -1,21 +0,0 @@
-namespace _99_beers;
-
-method bottles(number: Integer): String;
-begin
-if (number = 1) then
- Result := "bottle"
- else
- Result := "bottles";
-end;
-
-begin
- for n: Integer := 99 downto 1 do
- begin
- writeLn($"{n} {bottles(n)} of beer on the wall,");
- writeLn($"{n} {bottles(n)} of beer,");
- writeLn($"Take one down, and pass it around,");
- writeLn($"{n-1} {bottles(n-1)} of beer on the wall.");
- writeLn();
- end;
- readLn;
-end.
diff --git a/Task/99-bottles-of-beer/Oxygene/99-bottles-of-beer-1.oxy b/Task/99-bottles-of-beer/Oxygene/99-bottles-of-beer.oxy
similarity index 100%
rename from Task/99-bottles-of-beer/Oxygene/99-bottles-of-beer-1.oxy
rename to Task/99-bottles-of-beer/Oxygene/99-bottles-of-beer.oxy
diff --git a/Task/99-bottles-of-beer/PascalABC.NET/99-bottles-of-beer-1.pas b/Task/99-bottles-of-beer/PascalABC.NET/99-bottles-of-beer-1.pas
deleted file mode 100644
index f455395d06..0000000000
--- a/Task/99-bottles-of-beer/PascalABC.NET/99-bottles-of-beer-1.pas
+++ /dev/null
@@ -1,10 +0,0 @@
-begin
- for var i:=99 to 1 step -1 do
- begin
- Println(i,'bottles of beer on the wall');
- Println(i,'bottles of beer');
- Println('Take one down, pass it around');
- Println(i-1,'bottles of beer on the wall');
- Println
- end;
-end.
diff --git a/Task/99-bottles-of-beer/PascalABC.NET/99-bottles-of-beer-2.pas b/Task/99-bottles-of-beer/PascalABC.NET/99-bottles-of-beer-2.pas
deleted file mode 100644
index 3ce09c9fc9..0000000000
--- a/Task/99-bottles-of-beer/PascalABC.NET/99-bottles-of-beer-2.pas
+++ /dev/null
@@ -1,10 +0,0 @@
-begin
- for var i:=99 to 1 step -1 do
- begin
- writeLn($'{i} bottles of beer on the wall');
- writeLn($'{i} bottles of beer');
- writeLn($'Take one down, pass it around');
- writeLn($'{i-1}bottles of beer on the wall');
- writeLn
- end;
-end.
diff --git a/Task/99-bottles-of-beer/Plain-English/99-bottles-of-beer.plain b/Task/99-bottles-of-beer/Plain-English/99-bottles-of-beer.plain
index 871d7a9918..65fd694264 100644
--- a/Task/99-bottles-of-beer/Plain-English/99-bottles-of-beer.plain
+++ b/Task/99-bottles-of-beer/Plain-English/99-bottles-of-beer.plain
@@ -1,32 +1,26 @@
To run:
- Start up.
- Sing 99 of bottles of beer on the wall.
- Wait for the escape key.
- Shut down.
+Start up.
+Sing 99 of bottles of beer on the wall.
+Wait for the escape key.
+Shut down.
To sing a number of bottles of beer on the wall:
- Put the number into a counter.
- Loop.
- Write the first line given the counter.
- Write the second line given the counter.
- Write "Take one down, pass it around" to the console.
- Subtract 1 from the counter.
- Write the first line given the counter.
- If the counter is 0, break.
- Write "" on the console.
- Repeat.
+Put the number into a counter.
+Loop.
+Write the first line given the counter.
+Write the second line given the counter.
+Write "Take one down, pass it around" to the console.
+Subtract 1 from the counter.
+Write the first line given the counter.
+If the counter is 0, break.
+Write "" on the console.
+Repeat.
To write the first line given a counter:
- If the counter is 0,
- Write "No more bottles of beer on the wall" to the console;
- Exit.
- If the counter is 1,
- Write "1 bottle of beer on the wall" to the console;
- Exit.
- Write the counter then " bottles of beer on the wall" to the console.
+If the counter is 0, write "No more bottles of beer on the wall" to the console; exit.
+If the counter is 1, write "1 bottle of beer on the wall" to the console; exit.
+Write the counter then " bottles of beer on the wall" to the console.
To write the second line given a counter:
- If the counter is 1,
- Write "1 bottle of beer" to the console;
- Exit.
- Write the counter then " bottles of beer" to the console.
+If the counter is 1, write "1 bottle of beer" to the console; exit.
+Write the counter then " bottles of beer" to the console.
diff --git a/Task/99-bottles-of-beer/Pluto/99-bottles-of-beer.pluto b/Task/99-bottles-of-beer/Pluto/99-bottles-of-beer.pluto
deleted file mode 100644
index 1e20d4e1f4..0000000000
--- a/Task/99-bottles-of-beer/Pluto/99-bottles-of-beer.pluto
+++ /dev/null
@@ -1,12 +0,0 @@
-function pl(n) return n==1?"":"s" end
-
-function fmt(s)
- return $"{s} bottle{pl(s)} of beer on the wall, \n" ..
- $"{s} bottle{pl(s)} of beer. \n" ..
- $"Take one down, pass it around, \n" ..
- $"{s-1} bottle{pl(s-1)} of beer on the wall.\n\n"
-end
-
-for i = 99, 1, -1 do
- print(fmt(i))
-end
diff --git a/Task/99-bottles-of-beer/Rebol/99-bottles-of-beer-1.rebol b/Task/99-bottles-of-beer/REBOL/99-bottles-of-beer-1.rebol
similarity index 100%
rename from Task/99-bottles-of-beer/Rebol/99-bottles-of-beer-1.rebol
rename to Task/99-bottles-of-beer/REBOL/99-bottles-of-beer-1.rebol
diff --git a/Task/99-bottles-of-beer/Rebol/99-bottles-of-beer-2.rebol b/Task/99-bottles-of-beer/REBOL/99-bottles-of-beer-2.rebol
similarity index 100%
rename from Task/99-bottles-of-beer/Rebol/99-bottles-of-beer-2.rebol
rename to Task/99-bottles-of-beer/REBOL/99-bottles-of-beer-2.rebol
diff --git a/Task/99-bottles-of-beer/Rebol/99-bottles-of-beer-3.rebol b/Task/99-bottles-of-beer/REBOL/99-bottles-of-beer-3.rebol
similarity index 100%
rename from Task/99-bottles-of-beer/Rebol/99-bottles-of-beer-3.rebol
rename to Task/99-bottles-of-beer/REBOL/99-bottles-of-beer-3.rebol
diff --git a/Task/99-bottles-of-beer/Red/99-bottles-of-beer-2.red b/Task/99-bottles-of-beer/Red/99-bottles-of-beer-2.red
deleted file mode 100644
index e01dbbd378..0000000000
--- a/Task/99-bottles-of-beer/Red/99-bottles-of-beer-2.red
+++ /dev/null
@@ -1,21 +0,0 @@
-w: 99
-while [w][
- print [
- reform [
- w x: either 1 < w ["bottles"] ["bottle"] y: "of beer" z: "on the wall" ","
- w x y
- ]
- ]
- w: w - 1
- if w = 1 [remove at x length? x]
- print [
- "take one down pass it around, "
- either 0 < w [
- reform [w x y z]
- ][
- w: false reform [
- "no more bottles " y rejoin [z "."]
- ]
- ]
- ]
-]
diff --git a/Task/99-bottles-of-beer/Red/99-bottles-of-beer-3.red b/Task/99-bottles-of-beer/Red/99-bottles-of-beer-3.red
deleted file mode 100644
index 67973dc127..0000000000
--- a/Task/99-bottles-of-beer/Red/99-bottles-of-beer-3.red
+++ /dev/null
@@ -1,21 +0,0 @@
-cold-one?: function [
- count [integer!]
-][
- case [
- count < 1 [return print "drunk, eh?"]
- count = 1 [print "1 bottle of beer and it's mine." ]
- 'otherwise [
- print [count x: "bottles of beer" y: "on the wall" ","
- count x
- ]
- print [
- "take one down pass it around, "
- z: (-1 + count)
- either z = 1 [replace x "s" ""][x]
- y
- ]
- ]
- ]
- cold-one? -1 + count
-
-]
diff --git a/Task/99-bottles-of-beer/Red/99-bottles-of-beer-1.red b/Task/99-bottles-of-beer/Red/99-bottles-of-beer.red
similarity index 100%
rename from Task/99-bottles-of-beer/Red/99-bottles-of-beer-1.red
rename to Task/99-bottles-of-beer/Red/99-bottles-of-beer.red
diff --git a/Task/99-bottles-of-beer/Rhombus/99-bottles-of-beer.rhombus b/Task/99-bottles-of-beer/Rhombus/99-bottles-of-beer.rhombus
deleted file mode 100644
index b7564c4ae9..0000000000
--- a/Task/99-bottles-of-beer/Rhombus/99-bottles-of-beer.rhombus
+++ /dev/null
@@ -1,13 +0,0 @@
-#lang rhombus/static
-
-for (i in 1..100):
- fun plural(n :: Int):
- if n == 1:
- | ""
- | "s"
- let bottles = 100 - i
- println(@str{@(bottles) bottle@(plural(bottles)) of beer on the wall, @(bottles) bottle@(plural(bottles)) of beer.})
- println(@str{Take one down and pass it around, @(bottles - 1) bottle@(plural(bottles - 1)) of beer on the wall.})
-
-println("No more bottles of beer on the wall, no more bottles of beer.")
-println("Go to the store and buy some more, 99 bottles of beer on the wall.")
diff --git a/Task/99-bottles-of-beer/Rust/99-bottles-of-beer-1.rs b/Task/99-bottles-of-beer/Rust/99-bottles-of-beer-1.rust
similarity index 100%
rename from Task/99-bottles-of-beer/Rust/99-bottles-of-beer-1.rs
rename to Task/99-bottles-of-beer/Rust/99-bottles-of-beer-1.rust
diff --git a/Task/99-bottles-of-beer/Rust/99-bottles-of-beer-2.rs b/Task/99-bottles-of-beer/Rust/99-bottles-of-beer-2.rust
similarity index 100%
rename from Task/99-bottles-of-beer/Rust/99-bottles-of-beer-2.rs
rename to Task/99-bottles-of-beer/Rust/99-bottles-of-beer-2.rust
diff --git a/Task/99-bottles-of-beer/Rye/99-bottles-of-beer.rye b/Task/99-bottles-of-beer/Rye/99-bottles-of-beer.rye
deleted file mode 100644
index 0bfe1a8f2d..0000000000
--- a/Task/99-bottles-of-beer/Rye/99-bottles-of-beer.rye
+++ /dev/null
@@ -1,16 +0,0 @@
-private {
-
- bottles: fn1 { = 1 |either { "bottle" } { "bottles" } }
- verse1: closure { n } { .embed join [ "{} " bottles n " of beer on the wall" ] }
- verse2: closure { n } { .embed join [ "{} " bottles n " of beer" ] }
- verse3: does { "Take one down and pass it around, " }
-
- closure { n } {
- prn join [ verse1 n ", " verse2 n "." newline verse3 ]
- ( n - 1 :m > 0 ) |either
- { verse1 m |++ "." |print , beers m }
- { print "no more bottles of beer on the wall." }
- }
-} :beers
-
-99 |beers
diff --git a/Task/99-bottles-of-beer/Scheme/99-bottles-of-beer.scm b/Task/99-bottles-of-beer/Scheme/99-bottles-of-beer.ss
similarity index 100%
rename from Task/99-bottles-of-beer/Scheme/99-bottles-of-beer.scm
rename to Task/99-bottles-of-beer/Scheme/99-bottles-of-beer.ss
diff --git a/Task/99-bottles-of-beer/SheerPower-4GL/99-bottles-of-beer.4gl b/Task/99-bottles-of-beer/SheerPower-4GL/99-bottles-of-beer.4gl
deleted file mode 100644
index 4f2fa34121..0000000000
--- a/Task/99-bottles-of-beer/SheerPower-4GL/99-bottles-of-beer.4gl
+++ /dev/null
@@ -1,28 +0,0 @@
-declare integer n%
-
-for n% = 99 to 1 step -1
- print bottles$(n%); ' of beer on the wall, '; bottles$(n%); ' of beer.'
- print 'Take one down and pass it around, '; bottles$(n% - 1); ' of beer on the wall.'
- print
-next n%
-
-print 'No more bottles of beer on the wall, no more bottles of beer.'
-print 'Go to the store and buy some more, 99 bottles of beer on the wall.'
-
-! =============================================================================
-! Routine: bottles$(n%)
-!
-! Return the correct phrase for n% bottles:
-! 0 → "no more bottles"
-! 1 → "1 bottle"
-! 2 or more → " bottles"
-! =============================================================================
-routine bottles$(n%)
- if n% = 0 then
- bottles$ = 'no more bottles'
- elseif n% = 1 then
- bottles$ = '1 bottle'
- else
- bottles$ = str$(n%) + ' bottles'
- end if
-end routine
diff --git a/Task/99-bottles-of-beer/Tailspin/99-bottles-of-beer-2.tailspin b/Task/99-bottles-of-beer/Tailspin/99-bottles-of-beer-2.tailspin
deleted file mode 100644
index 2925e02e15..0000000000
--- a/Task/99-bottles-of-beer/Tailspin/99-bottles-of-beer-2.tailspin
+++ /dev/null
@@ -1,16 +0,0 @@
-sayBottleCount templates
- when <|=1> do
- '1 bottle' !
- when <|=0> do
- 'No bottles' !
- otherwise
- '$; bottles' !
-end sayBottleCount
-
-'$:99..1:-1 ->
-'$->sayBottleCount; of beer on the wall,
-$->sayBottleCount; of beer.
-Take one down, pass it around,
-$ - 1 -> sayBottleCount; of beer on the wall.
-
-';' !
diff --git a/Task/99-bottles-of-beer/Tailspin/99-bottles-of-beer-1.tailspin b/Task/99-bottles-of-beer/Tailspin/99-bottles-of-beer.tailspin
similarity index 100%
rename from Task/99-bottles-of-beer/Tailspin/99-bottles-of-beer-1.tailspin
rename to Task/99-bottles-of-beer/Tailspin/99-bottles-of-beer.tailspin
diff --git a/Task/99-bottles-of-beer/Uiua/99-bottles-of-beer.uiua b/Task/99-bottles-of-beer/Uiua/99-bottles-of-beer.uiua
deleted file mode 100644
index 3909ab4598..0000000000
--- a/Task/99-bottles-of-beer/Uiua/99-bottles-of-beer.uiua
+++ /dev/null
@@ -1,9 +0,0 @@
-b ← (
- &p $$ _ bottles of beer on the wall
- $$ _ bottles of beer
- $$ Take one down, pass it around
- $$ _ bottles of beer on the wall
- $$
-)
-
-⍚(b.+1.-1) ⇌↘1⇡100
diff --git a/Task/99-bottles-of-beer/Uxntal/99-bottles-of-beer.uxnatl b/Task/99-bottles-of-beer/Uxntal/99-bottles-of-beer.uxnatl
index 868c8dd512..2d10b5487c 100644
--- a/Task/99-bottles-of-beer/Uxntal/99-bottles-of-beer.uxnatl
+++ b/Task/99-bottles-of-beer/Uxntal/99-bottles-of-beer.uxnatl
@@ -1,73 +1,63 @@
-%\n { 0a } %\s { 20 } %\0 { 00 }
-%newline { [ LIT2 \n -Console/write ] DEO }
-%plural { [ LIT2 "s -Console/write ] DEO }
+( uxncli 99bottles.rom )
-|18 @Console/write
+|10 @Console &vector $2 &read $1 &pad $4 &type $1 &write $1 &error $1
-|100
+|0100 ( -> )
+ #63 &loop
+ DUP
+ [ LIT2 0a -Console/write ] DEO
+ #01 EQUk ?&done
+ POP #01 SUB
+ !&loop
+ &done BRK
-#63
-&loop
- DUP print/verse
- newline
- #01 EQUk ?/done
- POP #01 SUB
- !/done
+@ ( num -- )
+ DUP ;dict/wall
+ DUP [ LIT2 0a -Console/write ] DEO
+ ;dict/take
+ #01 SUB ;dict/wall !
- &done
- POP2
+@ ( num -- )
+ DUP #00 EQU ?&zero
+ DUP #01 EQU ?&one
+ ;dict/bottle
+ [ LIT2 "s -Console/write ] DEO
+ !&end
-BRK
-
-@print/verse ( num -- )
- DUP /bottle ;msgs/wall /str
- DUP /bottle newline
- ;msgs/take /str
- #01 SUB /bottle ;msgs/wall !/str
-
-@print/bottle ( num -- )
- DUP #00 EQU ?/bottle/zero
- DUP #01 EQU ?/bottle/one
- /dec ;msgs/bottle /str
- plural
- !/bottle/end
-
- &bottle/one ( num -- )
- /dec ;msgs/bottle /str
- !/bottle/end
-
- &bottle/zero ( num -- )
- POP ;msgs/no-more /str
- ;msgs/bottle /str
- plural
+ &one ( num -- )
+ ;dict/bottle
+ !&end
+ &zero ( num -- )
+ POP ;dict/no-more
+ ;dict/bottle
+ [ LIT2 "s -Console/write ] DEO
+ ( >> )
+ &end
+ ;dict/of-beer
( >> )
- &bottle/end
- ;msgs/of-beer
- ( >> )
-
-@print/str ( str -- )
- LDAk .Console/write DEO
- INC2 LDAk ?/str
+@ ( str -- )
+ &loop
+ LDAk .Console/write DEO
+ INC2 LDAk ?&loop
POP2 JMP2r
-@print/dec ( byte -- )
- DUP #64 DIV /dec/try
- DUP #0a DIV /dec/try
+@ ( byte -- )
+ DUP #64 DIV /try
+ DUP #0a DIV /try
( >> )
- &dec/try/num ( num -- )
- #0a DIVk MUL SUB
- [ LIT "0 ] ADD .Console/write DEO
- JMP2r
+@ ( num -- )
+ #0a DIVk MUL SUB
+ [ LIT "0 ] ADD .Console/write DEO
+ JMP2r
- &dec/try ( num -- )
- DUP ?/dec/try/num
+ &try ( num -- )
+ DUP ?
POP JMP2r
-@msgs [
- &no-more "No \s "more \0
- &bottle \s "bottle \0
- &of-beer \s "of \s "beer \s \0
- &wall "on \s "the \s "wall \n \0
- &take "Take \s "one \s "down, \s "pass \s "it \s "around \n \0 ]
+@dict &no-more "No 20 "more $1
+ &bottle 20 "bottle $1
+ &of-beer 20 "of 20 "beer 20 $1
+ &wall "on 20 "the 20 "wall 0a $1
+ &take "Take 20 "one 20 "down, 20 "pass 20 "it 20 "around 0a $1
diff --git a/Task/99-bottles-of-beer/V-(Vlang)/99-bottles-of-beer.v b/Task/99-bottles-of-beer/V-(Vlang)/99-bottles-of-beer.v
index 3e3d0cd41d..0490354be6 100644
--- a/Task/99-bottles-of-beer/V-(Vlang)/99-bottles-of-beer.v
+++ b/Task/99-bottles-of-beer/V-(Vlang)/99-bottles-of-beer.v
@@ -11,6 +11,7 @@ fn verse(beers int) {
mut beer := beers - 1
mut numno := beers.str()
mut elipsis := ""
+
if beers == 0 { numno = "No" }
println("$numno bottle${plural(beers)} of beer on the wall")
println("$numno bottle${plural(beers)} of beer")
@@ -19,10 +20,12 @@ fn verse(beers int) {
println("To the store, to buy some more")
numno = "99"
elipsis = "..."
+ } else {
+ println("Take one down, pass it around")
}
- else { println("Take one down, pass it around") }
println("$numno bottle${plural(beer)} of beer on the wall${elipsis}")
}
+
// passing time
pub fn main() {
for beers := 99; beers >= 0; beers-- {
diff --git a/Task/99-bottles-of-beer/V/99-bottles-of-beer.v b/Task/99-bottles-of-beer/V/99-bottles-of-beer.v
deleted file mode 100644
index 67c9827af0..0000000000
--- a/Task/99-bottles-of-beer/V/99-bottles-of-beer.v
+++ /dev/null
@@ -1,12 +0,0 @@
-[bottles
- [newline '' puts].
- [beer
- [0 =] ['No more bottles of beer' put] if
- [1 =] ['One bottle of beer' put] if
- [1 >] [dup put ' bottles of beer' put] if].
- [0 =] [newline]
- [beer ' on the wall, ' put beer newline
- 'Take one down and pass it around, ' put pred beer ' on the wall' puts newline]
- tailrec].
-
-99 bottles
diff --git a/Task/99-bottles-of-beer/YAMLScript/99-bottles-of-beer-1.ys b/Task/99-bottles-of-beer/YAMLScript/99-bottles-of-beer-1.ys
deleted file mode 100644
index 30910edf41..0000000000
--- a/Task/99-bottles-of-beer/YAMLScript/99-bottles-of-beer-1.ys
+++ /dev/null
@@ -1,15 +0,0 @@
-!ys-0
-
-defn main(number=99):
- each num (number .. 1):
- say: |
- $bottles(num) of beer on the wall,
- $bottles(num) of beer.
- Take one down, pass it around.
- $bottles(num.--) of beer on the wall.
-
-defn bottles(n):
- condp eq n:
- 0 :: No more bottles
- 1 :: 1 bottle
- else : "$n bottles"
diff --git a/Task/99-bottles-of-beer/YAMLScript/99-bottles-of-beer-2.ys b/Task/99-bottles-of-beer/YAMLScript/99-bottles-of-beer-2.ys
deleted file mode 100644
index d830a6c4a7..0000000000
--- a/Task/99-bottles-of-beer/YAMLScript/99-bottles-of-beer-2.ys
+++ /dev/null
@@ -1,9 +0,0 @@
-!yamlscript/v0
-
-defn main(number=99):
- each num (number .. 1):
- say: |
- $num bottles of beer on the wall,
- $num bottles of beer.
- Take one down, pass it around.
- $(num.--) bottles of beer on the wall.
diff --git a/Task/99-bottles-of-beer/YAMLScript/99-bottles-of-beer.ys b/Task/99-bottles-of-beer/YAMLScript/99-bottles-of-beer.ys
new file mode 100644
index 0000000000..4aa8dbc7b3
--- /dev/null
+++ b/Task/99-bottles-of-beer/YAMLScript/99-bottles-of-beer.ys
@@ -0,0 +1,22 @@
+#!/usr/bin/env ys-0
+
+# Print the verses to "99 Bottles of Beer"
+#
+# usage:
+# ys 99-bottles.ys []
+
+defn main(number=99):
+ each [n (number .. 1)]:
+ say: paragraph(n)
+
+defn paragraph(num): |
+ $bottles(num) of beer on the wall,
+ $bottles(num) of beer.
+ Take one down, pass it around.
+ $bottles(num - 1) of beer on the wall.
+
+defn bottles(n):
+ cond:
+ n == 0 : 'No more bottles'
+ n == 1 : '1 bottle'
+ => : "$n bottles"
diff --git a/Task/A+B/11l/a+b.11l b/Task/A+B/11l/a+b.11l
index fada22ecf1..2eea3c99c2 100644
--- a/Task/A+B/11l/a+b.11l
+++ b/Task/A+B/11l/a+b.11l
@@ -1 +1 @@
-print(sum(input().split(‘ ’, group_delimiters' 1B).map(Int)))
+print(sum(input().split(‘ ’, group_delimiters' 1B).map(i -> Int(i))))
diff --git a/Task/A+B/Ada/a+b-1.adb b/Task/A+B/Ada/a+b-1.ada
similarity index 100%
rename from Task/A+B/Ada/a+b-1.adb
rename to Task/A+B/Ada/a+b-1.ada
diff --git a/Task/A+B/Ada/a+b-2.adb b/Task/A+B/Ada/a+b-2.ada
similarity index 100%
rename from Task/A+B/Ada/a+b-2.adb
rename to Task/A+B/Ada/a+b-2.ada
diff --git a/Task/A+B/Agena/a+b.agena b/Task/A+B/Agena/a+b.agena
index 0ac7496582..5b94875c68 100644
--- a/Task/A+B/Agena/a+b.agena
+++ b/Task/A+B/Agena/a+b.agena
@@ -1,10 +1,6 @@
scope
local f := trim( io.read() ) split " "; # read a line and split into fields
- try
- local a := tonumber( f[ 1 ] );
- local b := tonumber( f[ 2 ] );
- print( a + b )
- catch in ex then
- print( "Unable to add the numbers: ", tostring( ex ) )
- yrt
-end
+ local a := tonumber( f[ 1 ] );
+ local b := tonumber( f[ 2 ] );
+ print( a + b )
+epocs
diff --git a/Task/A+B/ArkScript/a+b.ark b/Task/A+B/ArkScript/a+b.ark
deleted file mode 100644
index 71c47670c9..0000000000
--- a/Task/A+B/ArkScript/a+b.ark
+++ /dev/null
@@ -1,9 +0,0 @@
-(import std.String :split)
-(import std.List :map :reduce)
-
-(let in (input))
-(let numbers (map (split in " ") (fun (t) (toNumber t))))
-(print (reduce numbers (fun (a b)
- (if (nil? b)
- a
- (+ a b)))))
diff --git a/Task/A+B/AutoIt/a+b-1.au3 b/Task/A+B/AutoIt/a+b-1.autoit
similarity index 100%
rename from Task/A+B/AutoIt/a+b-1.au3
rename to Task/A+B/AutoIt/a+b-1.autoit
diff --git a/Task/A+B/AutoIt/a+b-2.au3 b/Task/A+B/AutoIt/a+b-2.autoit
similarity index 100%
rename from Task/A+B/AutoIt/a+b-2.au3
rename to Task/A+B/AutoIt/a+b-2.autoit
diff --git a/Task/A+B/Ballerina/a+b.ballerina b/Task/A+B/Ballerina/a+b.ballerina
deleted file mode 100644
index 7c90b9d2f5..0000000000
--- a/Task/A+B/Ballerina/a+b.ballerina
+++ /dev/null
@@ -1,16 +0,0 @@
-import ballerina/io;
-
-public function main() returns error? {
- while true {
- io:print("Enter two integers separated by a space : ");
- string[] s = re ` `.split(io:readln());
- if s.length() < 2 {
- io:println("Insufficient numbers, try again");
- } else {
- int a = check int:fromString(s[0]);
- int b = check int:fromString(s[1]);
- io:println("Their sum is ", a + b, ".");
- break;
- }
- }
-}
diff --git a/Task/A+B/Batch-File/a+b-3.bat b/Task/A+B/Batch-File/a+b-3.bat
index 46420dac6d..f89aab8525 100644
--- a/Task/A+B/Batch-File/a+b-3.bat
+++ b/Task/A+B/Batch-File/a+b-3.bat
@@ -1 +1,6 @@
-doskey add=setlocal^& set a=$1^& set b=$2^& set /a res=a+b^& endlocal
+::aplusb.cmd
+@echo off
+setlocal
+set /a c=%~1
+echo %c%
+endlocal
diff --git a/Task/A+B/Batch-File/a+b-5.bat b/Task/A+B/Batch-File/a+b-5.bat
deleted file mode 100644
index 3f5d39e1f4..0000000000
--- a/Task/A+B/Batch-File/a+b-5.bat
+++ /dev/null
@@ -1,12 +0,0 @@
-@echo off
-setlocal enableextensions
-set /p ab=
-call :setab %ab%
-set /a res=a+b
-echo %res%
-goto:eof
-
-:setab
-set a=%1
-set b=%2
-goto:eof
diff --git a/Task/A+B/Batch-File/a+b-6.bat b/Task/A+B/Batch-File/a+b-6.bat
deleted file mode 100644
index 0f331e1554..0000000000
--- a/Task/A+B/Batch-File/a+b-6.bat
+++ /dev/null
@@ -1,6 +0,0 @@
-@echo off
-setlocal enableextensions
-set /p ab=
-set res=0
-for %%i in (%ab%) do set /a res+=%%i
-echo %res%
diff --git a/Task/A+B/Binary-Lambda-Calculus/a+b.blc b/Task/A+B/Binary-Lambda-Calculus/a+b.blc
deleted file mode 100644
index 4b57e7a05a..0000000000
--- a/Task/A+B/Binary-Lambda-Calculus/a+b.blc
+++ /dev/null
@@ -1,2 +0,0 @@
-(lambda (augend addend f x)
- (augend f (addend f x)))
diff --git a/Task/A+B/COBOL/a+b-1.cob b/Task/A+B/COBOL/a+b-1.cobol
similarity index 100%
rename from Task/A+B/COBOL/a+b-1.cob
rename to Task/A+B/COBOL/a+b-1.cobol
diff --git a/Task/A+B/COBOL/a+b-2.cob b/Task/A+B/COBOL/a+b-2.cobol
similarity index 100%
rename from Task/A+B/COBOL/a+b-2.cob
rename to Task/A+B/COBOL/a+b-2.cobol
diff --git a/Task/A+B/Crystal/a+b-1.cr b/Task/A+B/Crystal/a+b-1.crystal
similarity index 100%
rename from Task/A+B/Crystal/a+b-1.cr
rename to Task/A+B/Crystal/a+b-1.crystal
diff --git a/Task/A+B/Crystal/a+b-2.cr b/Task/A+B/Crystal/a+b-2.crystal
similarity index 100%
rename from Task/A+B/Crystal/a+b-2.cr
rename to Task/A+B/Crystal/a+b-2.crystal
diff --git a/Task/A+B/Delphi/a+b.pas b/Task/A+B/Delphi/a+b.delphi
similarity index 100%
rename from Task/A+B/Delphi/a+b.pas
rename to Task/A+B/Delphi/a+b.delphi
diff --git a/Task/A+B/DuckDB/a+b-1.duckdb b/Task/A+B/DuckDB/a+b-1.duckdb
deleted file mode 100644
index 06fc2868f4..0000000000
--- a/Task/A+B/DuckDB/a+b-1.duckdb
+++ /dev/null
@@ -1,5 +0,0 @@
-.headers off
-.mode list
-select sum(c::INTEGER)
-from (select unnest(regexp_extract_all(content, '[-0-9]+') ) as c
- from read_text('rc-a+b.txt') );
diff --git a/Task/A+B/DuckDB/a+b-2.duckdb b/Task/A+B/DuckDB/a+b-2.duckdb
deleted file mode 100644
index ce4c1aa6c7..0000000000
--- a/Task/A+B/DuckDB/a+b-2.duckdb
+++ /dev/null
@@ -1,2 +0,0 @@
-select a+b from (select column0 as a, column1 as b
-from read_csv('/dev/stdin', header=false, sep=' '));
diff --git a/Task/A+B/EMal/a+b.emal b/Task/A+B/EMal/a+b.emal
index 22106f56f5..c2e2652cab 100644
--- a/Task/A+B/EMal/a+b.emal
+++ b/Task/A+B/EMal/a+b.emal
@@ -1,15 +1,17 @@
-fun main ← int by List args
- text input ← when(args.length æ 1, args[0], ask(text, "Enter n integers separated by a space: "))
+fun main = int by List args
+ text input = when(args.length == 1, args[0], ask(text, "Enter n integers separated by a space: "))
int sum, count
for each text word in input.split(" ")
- word ← word.trim()
+ word = word.trim()
if word.isEmpty() do continue end # ignore empty words
- int nr ← int!word # this can raise an exception
- if abs(nr) > 1000 do error(0, "Integers must be in the interval [-1000, 1000]") end
+ int nr = int!word # this can raise an exception
+ if abs(nr) > 1000
+ Event.error(0, "Integers must be in the interval [-1000, 1000]").raise()
+ end
sum += nr
++count
end
- if count < 2 do error(1, "At least two integers must be provided") end
+ if count < 2 do Event.error(1, "At least two integers must be provided").raise() end
writeLine("The sum of " + count + " integers is: " + sum)
return 0
end
diff --git a/Task/A+B/Ed/a+b.ed b/Task/A+B/Ed/a+b.ed
deleted file mode 100644
index fdc4ec064b..0000000000
--- a/Task/A+B/Ed/a+b.ed
+++ /dev/null
@@ -1,101 +0,0 @@
-H
-g/[^0-9]{1,}/s///g
-,p
-# decimal -> unary
-g/^0+([0-9])/s//\1/
-g/^9([0-9]*)(i*)/s//\1\2\2\2\2\2\2\2\2\2\2iiiiiiiii/
-g/^8([0-9]*)(i*)/s//\1\2\2\2\2\2\2\2\2\2\2iiiiiiii/
-g/^7([0-9]*)(i*)/s//\1\2\2\2\2\2\2\2\2\2\2iiiiiii/
-g/^6([0-9]*)(i*)/s//\1\2\2\2\2\2\2\2\2\2\2iiiiii/
-g/^5([0-9]*)(i*)/s//\1\2\2\2\2\2\2\2\2\2\2iiiii/
-g/^4([0-9]*)(i*)/s//\1\2\2\2\2\2\2\2\2\2\2iiii/
-g/^3([0-9]*)(i*)/s//\1\2\2\2\2\2\2\2\2\2\2iii/
-g/^2([0-9]*)(i*)/s//\1\2\2\2\2\2\2\2\2\2\2ii/
-g/^1([0-9]*)(i*)/s//\1\2\2\2\2\2\2\2\2\2\2i/
-g/^0([0-9]*)(i*)/s//\1\2\2\2\2\2\2\2\2\2\2/
-g/^9([0-9]*)(i*)/s//\1\2\2\2\2\2\2\2\2\2\2iiiiiiiii/
-g/^8([0-9]*)(i*)/s//\1\2\2\2\2\2\2\2\2\2\2iiiiiiii/
-g/^7([0-9]*)(i*)/s//\1\2\2\2\2\2\2\2\2\2\2iiiiiii/
-g/^6([0-9]*)(i*)/s//\1\2\2\2\2\2\2\2\2\2\2iiiiii/
-g/^5([0-9]*)(i*)/s//\1\2\2\2\2\2\2\2\2\2\2iiiii/
-g/^4([0-9]*)(i*)/s//\1\2\2\2\2\2\2\2\2\2\2iiii/
-g/^3([0-9]*)(i*)/s//\1\2\2\2\2\2\2\2\2\2\2iii/
-g/^2([0-9]*)(i*)/s//\1\2\2\2\2\2\2\2\2\2\2ii/
-g/^1([0-9]*)(i*)/s//\1\2\2\2\2\2\2\2\2\2\2i/
-g/^0([0-9]*)(i*)/s//\1\2\2\2\2\2\2\2\2\2\2/
-g/^9([0-9]*)(i*)/s//\1\2\2\2\2\2\2\2\2\2\2iiiiiiiii/
-g/^8([0-9]*)(i*)/s//\1\2\2\2\2\2\2\2\2\2\2iiiiiiii/
-g/^7([0-9]*)(i*)/s//\1\2\2\2\2\2\2\2\2\2\2iiiiiii/
-g/^6([0-9]*)(i*)/s//\1\2\2\2\2\2\2\2\2\2\2iiiiii/
-g/^5([0-9]*)(i*)/s//\1\2\2\2\2\2\2\2\2\2\2iiiii/
-g/^4([0-9]*)(i*)/s//\1\2\2\2\2\2\2\2\2\2\2iiii/
-g/^3([0-9]*)(i*)/s//\1\2\2\2\2\2\2\2\2\2\2iii/
-g/^2([0-9]*)(i*)/s//\1\2\2\2\2\2\2\2\2\2\2ii/
-g/^1([0-9]*)(i*)/s//\1\2\2\2\2\2\2\2\2\2\2i/
-g/^0([0-9]*)(i*)/s//\1\2\2\2\2\2\2\2\2\2\2/
-g/^9([0-9]*)(i*)/s//\1\2\2\2\2\2\2\2\2\2\2iiiiiiiii/
-g/^8([0-9]*)(i*)/s//\1\2\2\2\2\2\2\2\2\2\2iiiiiiii/
-g/^7([0-9]*)(i*)/s//\1\2\2\2\2\2\2\2\2\2\2iiiiiii/
-g/^6([0-9]*)(i*)/s//\1\2\2\2\2\2\2\2\2\2\2iiiiii/
-g/^5([0-9]*)(i*)/s//\1\2\2\2\2\2\2\2\2\2\2iiiii/
-g/^4([0-9]*)(i*)/s//\1\2\2\2\2\2\2\2\2\2\2iiii/
-g/^3([0-9]*)(i*)/s//\1\2\2\2\2\2\2\2\2\2\2iii/
-g/^2([0-9]*)(i*)/s//\1\2\2\2\2\2\2\2\2\2\2ii/
-g/^1([0-9]*)(i*)/s//\1\2\2\2\2\2\2\2\2\2\2i/
-g/^0([0-9]*)(i*)/s//\1\2\2\2\2\2\2\2\2\2\2/
-g/^9([0-9]*)(i*)/s//\1\2\2\2\2\2\2\2\2\2\2iiiiiiiii/
-g/^8([0-9]*)(i*)/s//\1\2\2\2\2\2\2\2\2\2\2iiiiiiii/
-g/^7([0-9]*)(i*)/s//\1\2\2\2\2\2\2\2\2\2\2iiiiiii/
-g/^6([0-9]*)(i*)/s//\1\2\2\2\2\2\2\2\2\2\2iiiiii/
-g/^5([0-9]*)(i*)/s//\1\2\2\2\2\2\2\2\2\2\2iiiii/
-g/^4([0-9]*)(i*)/s//\1\2\2\2\2\2\2\2\2\2\2iiii/
-g/^3([0-9]*)(i*)/s//\1\2\2\2\2\2\2\2\2\2\2iii/
-g/^2([0-9]*)(i*)/s//\1\2\2\2\2\2\2\2\2\2\2ii/
-g/^1([0-9]*)(i*)/s//\1\2\2\2\2\2\2\2\2\2\2i/
-g/^0([0-9]*)(i*)/s//\1\2\2\2\2\2\2\2\2\2\2/
-# actual logic
-,j
-# unary -> decimal (for 0-10000 range)
-g/i{9000}(i{0,999})/s//9\1/
-g/i{8000}(i{0,999})/s//8\1/
-g/i{7000}(i{0,999})/s//7\1/
-g/i{6000}(i{0,999})/s//6\1/
-g/i{5000}(i{0,999})/s//5\1/
-g/i{4000}(i{0,999})/s//4\1/
-g/i{3000}(i{0,999})/s//3\1/
-g/i{2000}(i{0,999})/s//2\1/
-g/i{1000}(i{0,999})/s//1\1/
-v/^[0-9]i*$/s/.*/0&/
-g/i{900}(i{0,99})/s//9\1/
-g/i{800}(i{0,99})/s//8\1/
-g/i{700}(i{0,99})/s//7\1/
-g/i{600}(i{0,99})/s//6\1/
-g/i{500}(i{0,99})/s//5\1/
-g/i{400}(i{0,99})/s//4\1/
-g/i{300}(i{0,99})/s//3\1/
-g/i{200}(i{0,99})/s//2\1/
-g/i{100}(i{0,99})/s//1\1/
-v/^[0-9]{2}i*$/s/^([0-9])(i*)$/\10\2/
-g/i{90}(i{0,9})/s//9\1/
-g/i{80}(i{0,9})/s//8\1/
-g/i{70}(i{0,9})/s//7\1/
-g/i{60}(i{0,9})/s//6\1/
-g/i{50}(i{0,9})/s//5\1/
-g/i{40}(i{0,9})/s//4\1/
-g/i{30}(i{0,9})/s//3\1/
-g/i{20}(i{0,9})/s//2\1/
-g/i{10}(i{0,9})/s//1\1/
-v/^[0-9]{3}i*$/s/^([0-9]{2})(i*)$/\10\2/
-g/i{9}/s//9/
-g/i{8}/s//8/
-g/i{7}/s//7/
-g/i{6}/s//6/
-g/i{5}/s//5/
-g/i{4}/s//4/
-g/i{3}/s//3/
-g/i{2}/s//2/
-g/i{1}/s//1/
-v/^[0-9]{4}i*$/s/^([0-9]{3})(i*)$/\10\2/
-g/^0+([0-9])/s//\1/
-,p
-Q
diff --git a/Task/A+B/Elena/a+b-1.elena b/Task/A+B/Elena/a+b-1.elena
index d585433b10..a4c98a1213 100644
--- a/Task/A+B/Elena/a+b-1.elena
+++ b/Task/A+B/Elena/a+b-1.elena
@@ -1,9 +1,9 @@
import extensions;
-public Program()
+public program()
{
- var A := Integer.new();
- var B := Integer.new();
+ var A := Integer.new();
+ var B := Integer.new();
- Console.loadLine(A,B).printLine(A + B)
+ console.loadLine(A,B).printLine(A + B)
}
diff --git a/Task/A+B/Elena/a+b-2.elena b/Task/A+B/Elena/a+b-2.elena
index a1042363c6..8097b76574 100644
--- a/Task/A+B/Elena/a+b-2.elena
+++ b/Task/A+B/Elena/a+b-2.elena
@@ -1,9 +1,9 @@
import system'routines;
import extensions;
-public Program()
+public program()
{
- Console.printLine(Console.readLine()
+ console.printLine(console.readLine()
.split()
.selectBy(mssgconst toInt[1])
.summarize())
diff --git a/Task/A+B/Elixir/a+b.ex b/Task/A+B/Elixir/a+b.elixir
similarity index 100%
rename from Task/A+B/Elixir/a+b.ex
rename to Task/A+B/Elixir/a+b.elixir
diff --git a/Task/A+B/Emacs-Lisp/a+b.el b/Task/A+B/Emacs-Lisp/a+b.l
similarity index 100%
rename from Task/A+B/Emacs-Lisp/a+b.el
rename to Task/A+B/Emacs-Lisp/a+b.l
diff --git a/Task/A+B/Euphoria/a+b.eu b/Task/A+B/Euphoria/a+b.euphoria
similarity index 100%
rename from Task/A+B/Euphoria/a+b.eu
rename to Task/A+B/Euphoria/a+b.euphoria
diff --git a/Task/A+B/Forth/a+b-2.fth b/Task/A+B/Forth/a+b-2.fth
deleted file mode 100644
index f83c5b0b46..0000000000
--- a/Task/A+B/Forth/a+b-2.fth
+++ /dev/null
@@ -1 +0,0 @@
-: addab + cr . cr ;
diff --git a/Task/A+B/Forth/a+b-1.fth b/Task/A+B/Forth/a+b.fth
similarity index 100%
rename from Task/A+B/Forth/a+b-1.fth
rename to Task/A+B/Forth/a+b.fth
diff --git a/Task/A+B/FutureBasic/a+b-2.basic b/Task/A+B/FutureBasic/a+b-2.basic
deleted file mode 100644
index aee4ef9505..0000000000
--- a/Task/A+B/FutureBasic/a+b-2.basic
+++ /dev/null
@@ -1,15 +0,0 @@
-void local fn InputIntegers
- while ( 1 )
- CFStringRef s = input @"", @"0123456789 ", YES
- if ( !s ) then end
- CFArrayRef a = fn StringComponentsSeparatedByString( s, @" " )
- if ( len(a) != 2 ) then beep : continue
- cls : print %(150,95),a[0];@" + ";a[1];@" = ";intval(a[0]) + intval(a[1])
- wend
-end fn
-
-window 1, @"A+B", (0,0,290,200)
-textlabel 1, @"Enter two integers separated by space(s).\nPress 'return' to calculate or 'esc' to quit.", (20,160,270,32)
-fn InputIntegers
-
-HandleEvents
diff --git a/Task/A+B/FutureBasic/a+b-1.basic b/Task/A+B/FutureBasic/a+b.basic
similarity index 100%
rename from Task/A+B/FutureBasic/a+b-1.basic
rename to Task/A+B/FutureBasic/a+b.basic
diff --git a/Task/A+B/Guile/a+b.guile b/Task/A+B/Guile/a+b.guile
deleted file mode 100644
index d3ef4f223d..0000000000
--- a/Task/A+B/Guile/a+b.guile
+++ /dev/null
@@ -1,3 +0,0 @@
-;;;Actually, the solution is same as that of many other Lisp dialects here
-(+ (read) (read))
-;;Yes, it is neat but not strong, error prone actually. Other than this walkaround, if you dislike fetching a line in string format then parse the chars one by one by hand or byte by byte from stdin, you can use one read and do the work, with the price of typing (1 2) instead of 1 2 at the prompt since read would treat the input as a symbolic expression. So.,.there is sadly no easy way like scanf and %d %d in c unless one is willing to type ()s!
diff --git a/Task/A+B/HPPPL/a+b.hpppl b/Task/A+B/HPPPL/a+b.hpppl
deleted file mode 100644
index 068fec62c3..0000000000
--- a/Task/A+B/HPPPL/a+b.hpppl
+++ /dev/null
@@ -1,6 +0,0 @@
-EXPORT A_plus_B()
-BEGIN
-LOCAL A, B;
-INPUT({A, B});
-PRINT(A + " " + B + " " + (A + B));
-END;
diff --git a/Task/A+B/Julia/a+b-1.jl b/Task/A+B/Julia/a+b-1.julia
similarity index 100%
rename from Task/A+B/Julia/a+b-1.jl
rename to Task/A+B/Julia/a+b-1.julia
diff --git a/Task/A+B/Julia/a+b-2.jl b/Task/A+B/Julia/a+b-2.julia
similarity index 100%
rename from Task/A+B/Julia/a+b-2.jl
rename to Task/A+B/Julia/a+b-2.julia
diff --git a/Task/A+B/Koka/a+b.koka b/Task/A+B/Koka/a+b.koka
deleted file mode 100644
index f0f1738e2d..0000000000
--- a/Task/A+B/Koka/a+b.koka
+++ /dev/null
@@ -1,32 +0,0 @@
-import std/os/readline
-
-// A prompt effect which retries getting input until a valid result is returned.
-effect prompt
- ctl delimit(): () // Captures the retry resumption
- final ctl fail(): e // A failed input
-
-// Prompt for input, with retry until successful result
-// - `message` is the original prompt
-// - `err-message` is the error shown on failure
-fun prompt(message: string, err-message: string, action: (string) -> a): a
- var reattempt := fn() impossible() // We ensure all paths include a delimiter
- with handler
- raw ctl delimit()
- reattempt := (fn() rcontext.resume(())) // set reattempt resumption
- reattempt() // Initial try
- final ctl fail()
- reattempt() // Handle failure by reattempting
- // Print the initial request message
- println(message)
- delimit() // Mark retry point
- try {
- action(readline()) // Read the input and apply the action
- } fn(err)
- // On an exception, print the error message and retry
- println(err-message)
- fail() // reset
-
-fun main()
- with line <- prompt("Enter two numbers separated by space: ", "Invalid input, please enter two integers.")
- val [a, b] = line.split(" ")
- a.parse-int.unjust + b.parse-int.unjust
diff --git a/Task/A+B/Kotlin/a+b.kts b/Task/A+B/Kotlin/a+b.kotlin
similarity index 100%
rename from Task/A+B/Kotlin/a+b.kts
rename to Task/A+B/Kotlin/a+b.kotlin
diff --git a/Task/A+B/LOLCODE/a+b.lol b/Task/A+B/LOLCODE/a+b.lol
deleted file mode 100644
index 711b24849b..0000000000
--- a/Task/A+B/LOLCODE/a+b.lol
+++ /dev/null
@@ -1,9 +0,0 @@
-HAI 1.2
- I HAS A VAR1 ITZ A YARN BTW DECLARE A VARIABLE FOR LATER USE
- I HAS A VAR2 ITZ A YARN BTW DECLARE A VARIABLE FOR LATER USE
- VISIBLE "NUMBAH 1?"
- GIMMEH VAR1 BTW GET INPUT (NUMBER) INTO VARIABLE
- VISIBLE "NUMBAH 2?"
- GIMMEH VAR2 BTW GET INPUT (NUMBER) INTO VARIABLE
- VISIBLE SUM OF VAR1 AN VAR2
-KTHXBYE
diff --git a/Task/A+B/Microsoft-Small-Basic/a+b.basic b/Task/A+B/Microsoft-Small-Basic/a+b.basic
deleted file mode 100644
index d35e63fe64..0000000000
--- a/Task/A+B/Microsoft-Small-Basic/a+b.basic
+++ /dev/null
@@ -1,14 +0,0 @@
-getIntegers:
-integers = TextWindow.Read()
-spacePosition = Text.GetIndexOf(integers, " ")
-If spacePosition = 0 Then
- TextWindow.WriteLine("Please enter two integers.")
- Goto getIntegers
-EndIf
-A = Text.GetSubText(integers, 1, spacePosition - 1)
-B = Text.GetSubTextToEnd(integers, spacePosition + 1)
-If A < -1000 Or A > 1000 Or B < -1000 Or B > 1000 Then
- TextWindow.WriteLine("Integers are outside the range -1000 to 1000. Try again.")
- Goto getIntegers
-EndIf
-TextWindow.WriteLine(A + B)
diff --git a/Task/A+B/Nu/a+b.nu b/Task/A+B/Nu/a+b.nu
index 1cb2baca8a..fe56af1ee0 100644
--- a/Task/A+B/Nu/a+b.nu
+++ b/Task/A+B/Nu/a+b.nu
@@ -1 +1 @@
-input | split words | into int | math sum
+input | parse "{a} {b}" | first | values | into int | math sum
diff --git a/Task/A+B/Nutt/a+b.nutt b/Task/A+B/Nutt/a+b.nutt
index 5b0625667e..50a609c5d5 100644
--- a/Task/A+B/Nutt/a+b.nutt
+++ b/Task/A+B/Nutt/a+b.nutt
@@ -1,8 +1,7 @@
module main
-import $native 'io' [input#hear output#sayn]
+imports native.io{input.hear,output.say}
-funct main () : () =
- val read_int = {(hear ())#to_int#fold {0} {it}};
- val a = read_int ();
- val b = read_int ();
- sayn (a# + b)
+vals a=hear(Int),b=hear(Int)
+say(a+b)
+
+end
diff --git a/Task/A+B/OCaml/a+b.ml b/Task/A+B/OCaml/a+b.ocaml
similarity index 100%
rename from Task/A+B/OCaml/a+b.ml
rename to Task/A+B/OCaml/a+b.ocaml
diff --git a/Task/A+B/PascalABC.NET/a+b.pas b/Task/A+B/PascalABC.NET/a+b.pas
deleted file mode 100644
index ac390aa674..0000000000
--- a/Task/A+B/PascalABC.NET/a+b.pas
+++ /dev/null
@@ -1,3 +0,0 @@
-##
-var (a,b) := ReadInteger2;
-Writeln(a + b);
diff --git a/Task/A+B/Plain-English/a+b.plain b/Task/A+B/Plain-English/a+b.plain
index 4187b423eb..92c92ca2e1 100644
--- a/Task/A+B/Plain-English/a+b.plain
+++ b/Task/A+B/Plain-English/a+b.plain
@@ -1,42 +1,17 @@
To run:
- Start up.
- Set up the console.
- Write "Type the first number: " to Stdout.
- Read a buffer from stdin.
- Trim the buffer.
- If the buffer is not any integer,
- Write "Invalid input. Aborting Operation."
- then the CRLF string to StdOut;
- Shut down;
- Exit.
- Write "Type the second number: " to Stdout.
- Read a second buffer from stdin.
- Trim the second buffer.
- If the second buffer is not any integer,
- Write "Invalid input. Aborting Operation."
- then the CRLF string to StdOut;
- Shut down;
- Exit.
- Convert the buffer to a number.
- Convert the second buffer to a second number.
- Output the sum of the number and the second number.
- Shut down.
+Start up.
+Read a number from the console.
+Read another number from the console.
+Output the sum of the number and the other number.
+Wait for the escape key.
+Shut down.
To output the sum of a number and another number:
- If the number is not valid,
- Write "Invalid input. Aborting Operation."
- then the CRLF string to StdOut;
- Exit.
- If the other number is not valid,
- Write "Invalid input. Aborting Operation."
- then the CRLF string to StdOut;
- Exit.
- Add the other number to the number.
- Convert the number to a string called result.
- Write "The sum is " then the result
- then the CRLF string to StdOut.
+If the number is not valid, write "Invalid input" to the console; exit.
+If the other number is not valid, write "Invalid input" to the console; exit.
+Write the number plus the other number then " is the sum." to the console.
To decide if a number is valid:
- If the number is less than -1000, say no.
- If the number is greater than 1000, say no.
- Say yes.
+If the number is not greater than or equal to -1000, say no.
+If the number is not less than or equal to 1000, say no.
+Say yes.
diff --git a/Task/A+B/Pluto/a+b.pluto b/Task/A+B/Pluto/a+b.pluto
deleted file mode 100644
index 974f2e0a29..0000000000
--- a/Task/A+B/Pluto/a+b.pluto
+++ /dev/null
@@ -1,2 +0,0 @@
-a, b = io.read("*n", "*n")
-print(a+b)
diff --git a/Task/A+B/PowerShell/a+b-1.ps1 b/Task/A+B/PowerShell/a+b-1.psh
similarity index 100%
rename from Task/A+B/PowerShell/a+b-1.ps1
rename to Task/A+B/PowerShell/a+b-1.psh
diff --git a/Task/A+B/PowerShell/a+b-2.ps1 b/Task/A+B/PowerShell/a+b-2.psh
similarity index 100%
rename from Task/A+B/PowerShell/a+b-2.ps1
rename to Task/A+B/PowerShell/a+b-2.psh
diff --git a/Task/A+B/PowerShell/a+b-3.ps1 b/Task/A+B/PowerShell/a+b-3.psh
similarity index 100%
rename from Task/A+B/PowerShell/a+b-3.ps1
rename to Task/A+B/PowerShell/a+b-3.psh
diff --git a/Task/A+B/PowerShell/a+b-4.ps1 b/Task/A+B/PowerShell/a+b-4.psh
similarity index 100%
rename from Task/A+B/PowerShell/a+b-4.ps1
rename to Task/A+B/PowerShell/a+b-4.psh
diff --git a/Task/A+B/Rebol/a+b.rebol b/Task/A+B/REBOL/a+b.rebol
similarity index 100%
rename from Task/A+B/Rebol/a+b.rebol
rename to Task/A+B/REBOL/a+b.rebol
diff --git a/Task/A+B/REXX/a+b-1.rexx b/Task/A+B/REXX/a+b-1.rexx
new file mode 100644
index 0000000000..46a34f359e
--- /dev/null
+++ b/Task/A+B/REXX/a+b-1.rexx
@@ -0,0 +1,4 @@
+/*REXX program obtains two numbers from the input stream (the console), shows their sum.*/
+parse pull a b /*obtain two numbers from input stream.*/
+say a+b /*display the sum to the terminal. */
+ /*stick a fork in it, we're all done. */
diff --git a/Task/A+B/REXX/a+b-2.rexx b/Task/A+B/REXX/a+b-2.rexx
new file mode 100644
index 0000000000..064640ab38
--- /dev/null
+++ b/Task/A+B/REXX/a+b-2.rexx
@@ -0,0 +1,4 @@
+/*REXX program obtains two numbers from the input stream (the console), shows their sum.*/
+parse pull a b /*obtain two numbers from input stream.*/
+say (a+b) / 1 /*display normalized sum to terminal. */
+ /*stick a fork in it, we're all done. */
diff --git a/Task/A+B/REXX/a+b-3.rexx b/Task/A+B/REXX/a+b-3.rexx
new file mode 100644
index 0000000000..774178e64d
--- /dev/null
+++ b/Task/A+B/REXX/a+b-3.rexx
@@ -0,0 +1,6 @@
+/*REXX program obtains two numbers from the input stream (the console), shows their sum.*/
+numeric digits 300 /*the default is nine decimal digits.*/
+parse pull a b /*obtain two numbers from input stream.*/
+z= (a+b) / 1 /*add and normalize sum, store it in Z.*/
+say z /*display normalized sum Z to terminal.*/
+ /*stick a fork in it, we're all done. */
diff --git a/Task/A+B/REXX/a+b-4.rexx b/Task/A+B/REXX/a+b-4.rexx
new file mode 100644
index 0000000000..05e988dfb5
--- /dev/null
+++ b/Task/A+B/REXX/a+b-4.rexx
@@ -0,0 +1,11 @@
+/*REXX program obtains some numbers from the input stream (the console), shows their sum*/
+numeric digits 1000 /*just in case the user gets ka-razy. */
+say 'enter some numbers to be summed:' /*display a prompt message to terminal.*/
+parse pull y /*obtain all numbers from input stream.*/
+many= words(y) /*obtain the number of numbers entered.*/
+$= 0 /*initialize the sum to zero. */
+ do j=1 for many /*process each of the numbers. */
+ $= $ + word(y, j) /*add one number to the sum. */
+ end /*j*/
+ /*stick a fork in it, we're all done. */
+say 'sum of ' many " numbers = " $/1 /*display normalized sum $ to terminal.*/
diff --git a/Task/A+B/REXX/a+b-5.rexx b/Task/A+B/REXX/a+b-5.rexx
new file mode 100644
index 0000000000..3aed91ea3f
--- /dev/null
+++ b/Task/A+B/REXX/a+b-5.rexx
@@ -0,0 +1,8 @@
+/*REXX program obtains some numbers from the input stream (the console), shows their sum*/
+numeric digits 1000 /*just in case the user gets ka-razy. */
+say 'enter some numbers to be summed:' /*display a prompt message to terminal.*/
+parse pull y /*obtain all numbers from input stream.*/
+y=space(y)
+y=translate(y,'+',' ')
+Interpret 's='y
+say 'sum of ' many " numbers = " s/1 /*display normalized sum s to terminal.*/
diff --git a/Task/A+B/REXX/a+b.rexx b/Task/A+B/REXX/a+b.rexx
deleted file mode 100644
index 787c3a6be7..0000000000
--- a/Task/A+B/REXX/a+b.rexx
+++ /dev/null
@@ -1,27 +0,0 @@
--- 23 Aug 2025
-include Setting
-
-say 'A+B'
-say version
-say
-do forever
- call Charout, 'REXX '
- pull x
- if x = '' then
- leave
- parse var x a b
- say
- say 'As given...'
- say 'A =' a
- say 'B =' b
- say 'A+B =' a+b
- say
- say 'Normalized...'
- say 'A =' a/1
- say 'B =' b/1
- say 'A+B =' (a+b)/1
- say
-end
-exit
-
-include Abend
diff --git a/Task/A+B/Rust/a+b-1.rs b/Task/A+B/Rust/a+b-1.rust
similarity index 100%
rename from Task/A+B/Rust/a+b-1.rs
rename to Task/A+B/Rust/a+b-1.rust
diff --git a/Task/A+B/Rust/a+b-2.rs b/Task/A+B/Rust/a+b-2.rust
similarity index 100%
rename from Task/A+B/Rust/a+b-2.rs
rename to Task/A+B/Rust/a+b-2.rust
diff --git a/Task/A+B/Rye/a+b-1.rye b/Task/A+B/Rye/a+b-1.rye
deleted file mode 100644
index e2cff104bd..0000000000
--- a/Task/A+B/Rye/a+b-1.rye
+++ /dev/null
@@ -1,5 +0,0 @@
-rye .stdin ;
-|Read\string ; "123 321"
-|load ; [ 123 321 ]
-|apply* ?_+ ; 444
-|print
diff --git a/Task/A+B/Rye/a+b-2.rye b/Task/A+B/Rye/a+b-2.rye
deleted file mode 100644
index f929e645ca..0000000000
--- a/Task/A+B/Rye/a+b-2.rye
+++ /dev/null
@@ -1 +0,0 @@
-echo "5 2" | rye -do 'rye .stdin .Read\string .load .apply* ?_+'
diff --git a/Task/A+B/Scheme/a+b.scm b/Task/A+B/Scheme/a+b.ss
similarity index 100%
rename from Task/A+B/Scheme/a+b.scm
rename to Task/A+B/Scheme/a+b.ss
diff --git a/Task/A+B/TAV/a+b.tav b/Task/A+B/TAV/a+b.tav
deleted file mode 100644
index 29b223afca..0000000000
--- a/Task/A+B/TAV/a+b.tav
+++ /dev/null
@@ -1,6 +0,0 @@
-main(parms):+
- ?# lne =: file () give lines \ void is standard input
- ab =: string lne split by many of #Whitespace
- a =: string ab[1] as integer
- b =: string ab[2] as integer
- print a + b
diff --git a/Task/A+B/Uiua/a+b.uiua b/Task/A+B/Uiua/a+b.uiua
deleted file mode 100644
index 4a62fbacd3..0000000000
--- a/Task/A+B/Uiua/a+b.uiua
+++ /dev/null
@@ -1,5 +0,0 @@
-/+∵⋕⊜□≠@ .&sc
-
-{{out|input=3 4}}
-
-7
diff --git a/Task/A+B/VBScript/a+b-1.vbs b/Task/A+B/VBScript/a+b-1.vb
similarity index 100%
rename from Task/A+B/VBScript/a+b-1.vbs
rename to Task/A+B/VBScript/a+b-1.vb
diff --git a/Task/A+B/VBScript/a+b-2.vbs b/Task/A+B/VBScript/a+b-2.vb
similarity index 100%
rename from Task/A+B/VBScript/a+b-2.vbs
rename to Task/A+B/VBScript/a+b-2.vb
diff --git a/Task/A+B/VHDL/a+b.vhd b/Task/A+B/VHDL/a+b.vhdl
similarity index 100%
rename from Task/A+B/VHDL/a+b.vhd
rename to Task/A+B/VHDL/a+b.vhdl
diff --git a/Task/A+B/X86-64-Assembly/a+b.x86-64 b/Task/A+B/X86-64-Assembly/a+b.x86-64
deleted file mode 100644
index 6254ca0053..0000000000
--- a/Task/A+B/X86-64-Assembly/a+b.x86-64
+++ /dev/null
@@ -1,150 +0,0 @@
-format ELF64 executable 3
-entry start
-bsize equ 24
-
-segment executable readable
-start:
- pop rdx
- cmp rdx, 1
- jg .getargv0
- mov qword[avar], 0
- mov qword[bvar], 0
- jmp .calculate
- .getargv0:
- pop rdi
- pop rdi
- call atoq
- mov qword[avar], rax
- cmp rdx, 2
- jg .getargv1
- mov qword[bvar], 0
- jmp .calculate
- .getargv1:
- pop rdi
- call atoq
- mov qword[bvar], rax
- .calculate:
- xor rdi, rdi
- add rdi, qword[avar]
- add rdi, qword[bvar]
- call printq
- .exit0:
- mov rax, 60
- xor rdi, rdi
- syscall
-
-atoq:
- push r8
- push r9
- push rdi
- push rsi
- push rdx
- push rcx
- xor rcx, rcx
- xor rax, rax
- xor r8, r8
- mov r9, 1
- cmp byte[rdi], 0
- jz .exit
- cmp byte[rdi], '-'
- jne .stbegin
- mov r9, -1
- inc rdi
- .stbegin:
- cmp byte[rdi], '0'
- jl .return
- cmp byte[rdi], '9'
- jg .return
- .stloop:
- cmp byte[rdi + r8], '0'
- jl .calc0
- cmp byte[rdi + r8], '9'
- jg .calc0
- mov sil, byte[rdi + r8]
- sub rsi, '0'
- push rsi
- inc r8
- jmp .stloop
- .calc0:
- xor rcx, rcx
- mov rdi, 10
- mov rsi, 1
- .calc1:
- pop rax
- mul rsi
- add rcx, rax
- dec r8
- jz .return
- mov rax, rsi
- mul rdi
- mov rsi, rax
- jmp .calc1
- .return:
- xor rdx, rdx
- mov rax, rcx
- imul r9
- .exit:
- pop rcx
- pop rdx
- pop rsi
- pop rdi
- pop r9
- pop r8
- ret
-
-printq:
- push r9
- push rdi
- push rsi
- push rdx
- mov rax, rdi
- mov r9, bsize
- dec r9
- mov rsi, 10
- sub rsp, bsize
- sub rax, 0
- jns .stloop
- neg rax
- .stloop:
- xor rdx, rdx
- div rsi
- add dl, '0'
- mov byte[rsp + r9], dl
- sub rax, 0
- jz .negtest
- dec r9
- jmp .stloop
- .negtest:
- sub rdi, 0
- jns .printit
- dec r9
- mov byte[rsp + r9], '-'
- .printit:
- mov rdx, bsize
- sub rdx, r9
- mov rsi, rsp
- add rsi, r9
- mov rdi, 1
- mov rax, 1
- syscall
- sub rsp, 8
- mov byte[rsp], 0x0a
- mov rax, 1
- mov rdi, 1
- mov rsi, rsp
- mov rdx, 1
- syscall
- add rsp, 8
- .restores:
- add rsp, bsize
- mov rax, rdx
- pop rdx
- pop rsi
- pop rdi
- pop r9
- .return:
- ret
-
-segment readable writable
-avar: rq 1
-bvar: rq 1
diff --git a/Task/A+B/ZED/a+b.zed b/Task/A+B/ZED/a+b.zed
index b3605ef199..6c28d79b86 100644
--- a/Task/A+B/ZED/a+b.zed
+++ b/Task/A+B/ZED/a+b.zed
@@ -1,14 +1,14 @@
(A+B)
-READ AND ADD
+comment:
#true
(+) (read) (read)
(+) one two
-=========
+comment:
#true
(003) "+" one two
(read)
-=========
+comment:
#true
(001) "read"
diff --git a/Task/A+B/Zig/a+b.zig b/Task/A+B/Zig/a+b.zig
deleted file mode 100644
index 378622f54f..0000000000
--- a/Task/A+B/Zig/a+b.zig
+++ /dev/null
@@ -1,18 +0,0 @@
-const std = @import("std");
-
-pub fn main() !void {
- var buf: [1024]u8 = undefined;
- const reader = std.io.getStdIn().reader();
- const stdout = std.io.getStdOut().writer();
- try stdout.writeAll("Enter two integers separated by a space: ");
- const input = try reader.readUntilDelimiter(&buf, '\n');
- const text = std.mem.trimRight(u8, input, "\r\n");
-
- var it = std.mem.tokenizeScalar(u8, text, ' ');
-
- const a = try std.fmt.parseInt(i64, it.next().?, 10);
- const b = try std.fmt.parseInt(i64, it.next().?, 10);
-
-
- try stdout.print("{d}\n", .{a + b});
-}
diff --git a/Task/ABC-problem/8080-Assembly/abc-problem.8080 b/Task/ABC-problem/8080-Assembly/abc-problem.8080
index 1c9a496782..e6c7c4d5f4 100644
--- a/Task/ABC-problem/8080-Assembly/abc-problem.8080
+++ b/Task/ABC-problem/8080-Assembly/abc-problem.8080
@@ -1,77 +1,77 @@
- org 100h
- jmp test
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;;; Subroutine 'blocks': takes a $-terminated string in
- ;;; DE containing a word, and checks whether it can be
- ;;; written with the blocks.
- ;;; Returns: carry flag set if word is accepted.
- ;;; Uses registers: A, B, D, E, H, L
-blocks: push d ; Store string pointer
- lxi h,blockslist ; At the start, all blocks are
- lxi d,blocksavail ; available
- mvi b,40
-blocksinit: mov a,m
- stax d
- inx h
- inx d
- dcr b
- jnz blocksinit
- pop d ; Restore string pointer
-blockschar: ldax d ; Get current character
- cpi '$' ; End of string?
- stc ; Set carry flag (accept string)
- rz ; And then we're done
- ani 0DFh ; Make uppercase
- lxi h,blocksavail ; Is it available?
- mvi b,40
-blockscheck: cmp m
- jz blocksaccept ; Yes, we found it
- inx h ; Try next available char
- dcr b
- jnz blockscheck
- ana a ; Char unavailable, clear
- ret ; carry and stop.
-blocksaccept: mvi m,0 ; We've now used this char
- mov a,l ; And its blockmate
- xri 1
- mov l,a
- mvi m,0
- inx d ; Try next char in string
- jmp blockschar
- ;; Note: 'blocksavail' must not cross page boundary
-blockslist: db 'BOXKDQCPNAGTRETGQDFSJWHUVIANOBERFSLYPCZM'
-blocksavail: ds 40
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;;; Test code: run the subroutine on the given words.
-test: lxi h,words
-doword: mov e,m ; Get pointer to next word
- inx h
- mov d,m
- inx h
- mov a,e ; If zero, end of word list
- ora d
- rz
- push h ; Save pointer to list
- push d ; Save pointer to word
- mvi c,9 ; Write word to console
- call 5
- pop d ; Retrieve word ponter
- call blocks ; Run the 'blocks' routine
- lxi d,yes ; Say 'yes',
- jc yesno ; if the carry is set.
- lxi d,no ; Otherwise, say 'no'.
-yesno: mvi c,9
- call 5
- pop h ; Restore list pointer
- jmp doword ; Do next word
-yes: db ': Yes',13,10,'$'
-no: db ': No',13,10,'$'
-words: dw wrda,wrdbark,wrdbook,wrdtreat,wrdcommon
- dw wrdsquad,wrdconfuse,0
-wrda: db 'A$'
-wrdbark: db 'BARK$'
-wrdbook: db 'BOOK$'
-wrdtreat: db 'TREAT$'
-wrdcommon: db 'COMMON$'
-wrdsquad: db 'SQUAD$'
-wrdconfuse: db 'CONFUSE$'
+ org 100h
+ jmp test
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ ;;; Subroutine 'blocks': takes a $-terminated string in
+ ;;; DE containing a word, and checks whether it can be
+ ;;; written with the blocks.
+ ;;; Returns: carry flag set if word is accepted.
+ ;;; Uses registers: A, B, D, E, H, L
+blocks: push d ; Store string pointer
+ lxi h,blockslist ; At the start, all blocks are
+ lxi d,blocksavail ; available
+ mvi b,40
+blocksinit: mov a,m
+ stax d
+ inx h
+ inx d
+ dcr b
+ jnz blocksinit
+ pop d ; Restore string pointer
+blockschar: ldax d ; Get current character
+ cpi '$' ; End of string?
+ stc ; Set carry flag (accept string)
+ rz ; And then we're done
+ ani 0DFh ; Make uppercase
+ lxi h,blocksavail ; Is it available?
+ mvi b,40
+blockscheck: cmp m
+ jz blocksaccept ; Yes, we found it
+ inx h ; Try next available char
+ dcr b
+ jnz blockscheck
+ ana a ; Char unavailable, clear
+ ret ; carry and stop.
+blocksaccept: mvi m,0 ; We've now used this char
+ mov a,l ; And its blockmate
+ xri 1
+ mov l,a
+ mvi m,0
+ inx d ; Try next char in string
+ jmp blockschar
+ ;; Note: 'blocksavail' must not cross page boundary
+blockslist: db 'BOXKDQCPNAGTRETGQDFSJWHUVIANOBERFSLYPCZM'
+blocksavail: ds 40
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ ;;; Test code: run the subroutine on the given words.
+test: lxi h,words
+doword: mov e,m ; Get pointer to next word
+ inx h
+ mov d,m
+ inx h
+ mov a,e ; If zero, end of word list
+ ora d
+ rz
+ push h ; Save pointer to list
+ push d ; Save pointer to word
+ mvi c,9 ; Write word to console
+ call 5
+ pop d ; Retrieve word ponter
+ call blocks ; Run the 'blocks' routine
+ lxi d,yes ; Say 'yes',
+ jc yesno ; if the carry is set.
+ lxi d,no ; Otherwise, say 'no'.
+yesno: mvi c,9
+ call 5
+ pop h ; Restore list pointer
+ jmp doword ; Do next word
+yes: db ': Yes',13,10,'$'
+no: db ': No',13,10,'$'
+words: dw wrda,wrdbark,wrdbook,wrdtreat,wrdcommon
+ dw wrdsquad,wrdconfuse,0
+wrda: db 'A$'
+wrdbark: db 'BARK$'
+wrdbook: db 'BOOK$'
+wrdtreat: db 'TREAT$'
+wrdcommon: db 'COMMON$'
+wrdsquad: db 'SQUAD$'
+wrdconfuse: db 'CONFUSE$'
diff --git a/Task/ABC-problem/8086-Assembly/abc-problem.8086 b/Task/ABC-problem/8086-Assembly/abc-problem.8086
index 260f99738a..ca056dc17a 100644
--- a/Task/ABC-problem/8086-Assembly/abc-problem.8086
+++ b/Task/ABC-problem/8086-Assembly/abc-problem.8086
@@ -1,63 +1,63 @@
- cpu 8086
- bits 16
- org 100h
-section .text
- jmp demo
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;;; Subroutine "blocks": see if the $-terminated string in DS:BX
- ;;; can be written with the blocks.
- ;;; Returns: carry flag set if word is accepted.
- ;;; Uses registers: AL, BX, CX, SI, DI
- ;;; Assumes CS=DS=ES
-blocks: mov si,.list ; Set all blocks available
- mov di,.avail
- mov cx,20
- rep movsw
-.char: mov al,[bx] ; Get current character
- inc bx
- cmp al,'$' ; Are we at the end?
- je .ok ; Then the string is accepted
- mov cx,40 ; If not, check if block is available
- mov di,.avail
- repne scasb
- test cx,cx ; This clears the carry flag
- jz .out ; If zero, block is not available
- dec di ; Zero out the block we found
- mov [di],ch ; CH is guaranteed 0 here
- xor di,1 ; Point at other character on block
- mov [di],ch ; Zero out that one too.
- jmp .char
-.ok: stc
-.out: ret
-.list: db 'BOXKDQCPNAGTRETGQDFSJWHUVIANOBERFSLYPCZM'
-.avail: db ' '
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;;; Test code: run the subroutine on the given words
-demo: mov bp,words
-wrd: mov dx,[bp] ; Get word
- test dx,dx ; End of words?
- jz stop
- mov ah,9 ; Print word
- int 21h
- mov bx,dx ; Run subroutine
- call blocks
- mov dx,yes ; Print yes or no depending on carry
- jc print
- mov dx,no
-print: mov ah,9
- int 21h
- inc bp
- inc bp
- jmp wrd
-stop: ret
-section .data
-yes: db ': Yes',13,10,'$'
-no: db ': No',13,10,'$'
-words: dw .a,.bark,.book,.treat,.cmn,.squad,.confs,0
-.a: db 'A$'
-.bark: db 'BARK$'
-.book: db 'BOOK$'
-.treat: db 'TREAT$'
-.cmn: db 'COMMON$'
-.squad: db 'SQUAD$'
-.confs: db 'CONFUSE$'
+ cpu 8086
+ bits 16
+ org 100h
+section .text
+ jmp demo
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ ;;; Subroutine "blocks": see if the $-terminated string in DS:BX
+ ;;; can be written with the blocks.
+ ;;; Returns: carry flag set if word is accepted.
+ ;;; Uses registers: AL, BX, CX, SI, DI
+ ;;; Assumes CS=DS=ES
+blocks: mov si,.list ; Set all blocks available
+ mov di,.avail
+ mov cx,20
+ rep movsw
+.char: mov al,[bx] ; Get current character
+ inc bx
+ cmp al,'$' ; Are we at the end?
+ je .ok ; Then the string is accepted
+ mov cx,40 ; If not, check if block is available
+ mov di,.avail
+ repne scasb
+ test cx,cx ; This clears the carry flag
+ jz .out ; If zero, block is not available
+ dec di ; Zero out the block we found
+ mov [di],ch ; CH is guaranteed 0 here
+ xor di,1 ; Point at other character on block
+ mov [di],ch ; Zero out that one too.
+ jmp .char
+.ok: stc
+.out: ret
+.list: db 'BOXKDQCPNAGTRETGQDFSJWHUVIANOBERFSLYPCZM'
+.avail: db ' '
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ ;;; Test code: run the subroutine on the given words
+demo: mov bp,words
+wrd: mov dx,[bp] ; Get word
+ test dx,dx ; End of words?
+ jz stop
+ mov ah,9 ; Print word
+ int 21h
+ mov bx,dx ; Run subroutine
+ call blocks
+ mov dx,yes ; Print yes or no depending on carry
+ jc print
+ mov dx,no
+print: mov ah,9
+ int 21h
+ inc bp
+ inc bp
+ jmp wrd
+stop: ret
+section .data
+yes: db ': Yes',13,10,'$'
+no: db ': No',13,10,'$'
+words: dw .a,.bark,.book,.treat,.cmn,.squad,.confs,0
+.a: db 'A$'
+.bark: db 'BARK$'
+.book: db 'BOOK$'
+.treat: db 'TREAT$'
+.cmn: db 'COMMON$'
+.squad: db 'SQUAD$'
+.confs: db 'CONFUSE$'
diff --git a/Task/ABC-problem/8th/abc-problem.8th b/Task/ABC-problem/8th/abc-problem.8th
index 6869fcd656..f5b7f80c51 100644
--- a/Task/ABC-problem/8th/abc-problem.8th
+++ b/Task/ABC-problem/8th/abc-problem.8th
@@ -171,8 +171,8 @@ var ix
' chkokpath s:each \ | path
rdrop \
success @ \ success
- if \
- break \
+ if \
+ break \
then
;
diff --git a/Task/ABC-problem/ALGOL-68/abc-problem.alg b/Task/ABC-problem/ALGOL-68/abc-problem.alg
index 11c3a41ade..524af00c33 100644
--- a/Task/ABC-problem/ALGOL-68/abc-problem.alg
+++ b/Task/ABC-problem/ALGOL-68/abc-problem.alg
@@ -1,14 +1,21 @@
-# ABC problem: #
# determine whether we can spell words with a set of blocks #
+# construct the list of blocks #
+[][]STRING blocks = ( ( "B", "O" ), ( "X", "K" ), ( "D", "Q" ), ( "C", "P" )
+ , ( "N", "A" ), ( "G", "T" ), ( "R", "E" ), ( "T", "G" )
+ , ( "Q", "D" ), ( "F", "S" ), ( "J", "W" ), ( "H", "U" )
+ , ( "V", "I" ), ( "A", "N" ), ( "O", "B" ), ( "E", "R" )
+ , ( "F", "S" ), ( "L", "Y" ), ( "P", "C" ), ( "Z", "M" )
+ );
+
# Returns TRUE if we can spell the word using the blocks, FALSE otherwise #
# Returns TRUE for an empty string #
-PROC can spell = ( STRING word, [][]STRING block set )BOOL:
+PROC can spell = ( STRING word, [][]STRING blocks )BOOL:
BEGIN
# construct a set of flags to indicate whether the blocks are used #
# or not #
- [ 1 LWB block set : 1 UPB block set ]BOOL used;
+ [ 1 LWB blocks : 1 UPB blocks ]BOOL used;
FOR block pos FROM LWB used TO UPB used
DO
used[ block pos ] := FALSE
@@ -27,11 +34,11 @@ PROC can spell = ( STRING word, [][]STRING block set )BOOL:
# look through the unused blocks for the current letter #
BOOL found := FALSE;
- FOR block pos FROM 1 LWB block set TO 1 UPB block set
+ FOR block pos FROM 1 LWB blocks TO 1 UPB blocks
WHILE NOT found
DO
- IF ( c = block set[ block pos ][ 1 ][ 1 ]
- OR c = block set[ block pos ][ 2 ][ 1 ]
+ IF ( c = blocks[ block pos ][ 1 ][ 1 ]
+ OR c = blocks[ block pos ][ 2 ][ 1 ]
)
AND NOT used[ block pos ]
THEN
@@ -49,33 +56,25 @@ PROC can spell = ( STRING word, [][]STRING block set )BOOL:
END; # can spell #
-# main # (
-
- [][]STRING abc blocks # construct the list of blocks #
- = ( ( "B", "O" ), ( "X", "K" ), ( "D", "Q" ), ( "C", "P" )
- , ( "N", "A" ), ( "G", "T" ), ( "R", "E" ), ( "T", "G" )
- , ( "Q", "D" ), ( "F", "S" ), ( "J", "W" ), ( "H", "U" )
- , ( "V", "I" ), ( "A", "N" ), ( "O", "B" ), ( "E", "R" )
- , ( "F", "S" ), ( "L", "Y" ), ( "P", "C" ), ( "Z", "M" )
- );
+main: (
# test the can spell procedure #
- PROC test can spell = ( STRING word, [][]STRING block set )VOID:
+ PROC test can spell = ( STRING word, [][]STRING blocks )VOID:
write( ( ( "can spell: """
+ word
+ """ -> "
- + IF can spell( word, block set ) THEN "yes" ELSE "no" FI
+ + IF can spell( word, blocks ) THEN "yes" ELSE "no" FI
)
, newline
)
);
- test can spell( "A", abc blocks );
- test can spell( "BaRK", abc blocks );
- test can spell( "BOOK", abc blocks );
- test can spell( "TREAT", abc blocks );
- test can spell( "COMMON", abc blocks );
- test can spell( "SQUAD", abc blocks );
- test can spell( "CONFUSE", abc blocks )
+ test can spell( "A", blocks );
+ test can spell( "BaRK", blocks );
+ test can spell( "BOOK", blocks );
+ test can spell( "TREAT", blocks );
+ test can spell( "COMMON", blocks );
+ test can spell( "SQUAD", blocks );
+ test can spell( "CONFUSE", blocks )
)
diff --git a/Task/ABC-problem/Ada/abc-problem.adb b/Task/ABC-problem/Ada/abc-problem.ada
similarity index 100%
rename from Task/ABC-problem/Ada/abc-problem.adb
rename to Task/ABC-problem/Ada/abc-problem.ada
diff --git a/Task/ABC-problem/Arturo/abc-problem.arturo b/Task/ABC-problem/Arturo/abc-problem.arturo
index 5365095039..7ec68fd2ef 100644
--- a/Task/ABC-problem/Arturo/abc-problem.arturo
+++ b/Task/ABC-problem/Arturo/abc-problem.arturo
@@ -16,8 +16,8 @@ canMakeWord?: function [wrd][
ref: new blocks
loop split wrd 'chr [
cib: charInBlock chr ref
- switch cib = ø [ return false ]
- [ ref: remove ref .index cib ]
+ if? cib = ø [ return false ]
+ else [ ref: remove ref .index cib ]
]
return true
]
diff --git a/Task/ABC-problem/AutoHotkey/abc-problem-1.ahk b/Task/ABC-problem/AutoHotkey/abc-problem-1.ahk
index d92688964d..448f692c2b 100644
--- a/Task/ABC-problem/AutoHotkey/abc-problem-1.ahk
+++ b/Task/ABC-problem/AutoHotkey/abc-problem-1.ahk
@@ -1,24 +1,24 @@
isWordPossible(blocks, word){
- o := {}
- loop, parse, blocks, `n, `r
- o.Insert(A_LoopField)
- loop, parse, word
- if !(r := isWordPossible_contains(o, A_LoopField, word))
- return 0
- return 1
+ o := {}
+ loop, parse, blocks, `n, `r
+ o.Insert(A_LoopField)
+ loop, parse, word
+ if !(r := isWordPossible_contains(o, A_LoopField, word))
+ return 0
+ return 1
}
isWordPossible_contains(byref o, letter, word){
- loop 2 {
- for k,v in o
- if Instr(v,letter)
- {
- StringReplace, op, v,% letter
- if RegExMatch(op, "[" word "]")
- sap := k
- else added := 1 , sap := k
- if added
- return "1" o.remove(sap)
- }
- added := 1
- }
+ loop 2 {
+ for k,v in o
+ if Instr(v,letter)
+ {
+ StringReplace, op, v,% letter
+ if RegExMatch(op, "[" word "]")
+ sap := k
+ else added := 1 , sap := k
+ if added
+ return "1" o.remove(sap)
+ }
+ added := 1
+ }
}
diff --git a/Task/ABC-problem/AutoHotkey/abc-problem-2.ahk b/Task/ABC-problem/AutoHotkey/abc-problem-2.ahk
index c68d69b1f4..dff93522ac 100644
--- a/Task/ABC-problem/AutoHotkey/abc-problem-2.ahk
+++ b/Task/ABC-problem/AutoHotkey/abc-problem-2.ahk
@@ -34,5 +34,5 @@ CONFUSE
)"
loop, parse, wordlist, `n
- out .= A_LoopField " - " isWordPossible(blocks, A_LoopField) "`n"
+ out .= A_LoopField " - " isWordPossible(blocks, A_LoopField) "`n"
msgbox % out
diff --git a/Task/ABC-problem/BASIC256/abc-problem.basic b/Task/ABC-problem/BASIC256/abc-problem.basic
index 9458ea9532..e448382b74 100644
--- a/Task/ABC-problem/BASIC256/abc-problem.basic
+++ b/Task/ABC-problem/BASIC256/abc-problem.basic
@@ -5,42 +5,42 @@ b = int((length(blocks$) /3) + 1)
dim blk$(b)
for i = 1 to length(makeWord$)
- wrd$ = word$(makeWord$,i,",")
- dim hit(b)
- n = 0
- if wrd$ = "" then exit for
- for k = 1 to length(wrd$)
- w$ = upper(mid(wrd$,k,1))
- for j = 1 to b
- if hit[j] = 0 then
- if w$ = left(word$(blocks$,j,","),1) or w$ = right(word$(blocks$,j,","),1) then
- hit[j] = 1
- n += 1
- exit for
- end if
- end if
- next j
- next k
- print wrd$; chr(9);
- if n = length(wrd$) then print " True" else print " False"
+ wrd$ = word$(makeWord$,i,",")
+ dim hit(b)
+ n = 0
+ if wrd$ = "" then exit for
+ for k = 1 to length(wrd$)
+ w$ = upper(mid(wrd$,k,1))
+ for j = 1 to b
+ if hit[j] = 0 then
+ if w$ = left(word$(blocks$,j,","),1) or w$ = right(word$(blocks$,j,","),1) then
+ hit[j] = 1
+ n += 1
+ exit for
+ end if
+ end if
+ next j
+ next k
+ print wrd$; chr(9);
+ if n = length(wrd$) then print " True" else print " False"
next i
end
function word$(sr$, wn, delim$)
- j = wn
- if j = 0 then j += 1
- res$ = "" : s$ = sr$ : d$ = delim$
- if d$ = "" then d$ = " "
- sd = length(d$) : sl = length(s$)
- while true
- n = instr(s$,d$) : j -= 1
- if j = 0 then
- if n = 0 then res$ = s$ else res$ = mid(s$,1,n-1)
- return res$
- end if
- if n = 0 then return res$
- if n = sl - sd then res$ = "" : return res$
- sl2 = sl-n : s$ = mid(s$,n+1,sl2) : sl = sl2
- end while
- return res$
+ j = wn
+ if j = 0 then j += 1
+ res$ = "" : s$ = sr$ : d$ = delim$
+ if d$ = "" then d$ = " "
+ sd = length(d$) : sl = length(s$)
+ while true
+ n = instr(s$,d$) : j -= 1
+ if j = 0 then
+ if n = 0 then res$ = s$ else res$ = mid(s$,1,n-1)
+ return res$
+ end if
+ if n = 0 then return res$
+ if n = sl - sd then res$ = "" : return res$
+ sl2 = sl-n : s$ = mid(s$,n+1,sl2) : sl = sl2
+ end while
+ return res$
end function
diff --git a/Task/ABC-problem/Ballerina/abc-problem.ballerina b/Task/ABC-problem/Ballerina/abc-problem.ballerina
deleted file mode 100644
index 6210e2d24b..0000000000
--- a/Task/ABC-problem/Ballerina/abc-problem.ballerina
+++ /dev/null
@@ -1,32 +0,0 @@
-import ballerina/io;
-
-function r(string word, string[] bl) returns boolean {
- if word == "" { return true; }
- int c = word[0].toBytes()[0] | 32;
- foreach int i in 0.. blocks =
- new List() { "bo", "xk", "dq", "cp", "na", "gt", "re", "tg", "qd", "fs",
- "jw", "hu", "vi", "an", "ob", "er", "fs", "ly", "pc", "zm" };
- List words = new List() {
- "A", "BARK", "BOOK", "TREAT", "COMMON", "SQUAD", "CONFUSE"};
-
- var solver = new ABC(blocks);
-
- foreach( var word in words)
- {
- Console.WriteLine("{0} :{1}", word, solver.CanMake(word));
- }
+ List blocks =
+ new List() { "bo", "xk", "dq", "cp", "na", "gt", "re", "tg", "qd", "fs",
+ "jw", "hu", "vi", "an", "ob", "er", "fs", "ly", "pc", "zm" };
+ List words = new List() {
+ "A", "BARK", "BOOK", "TREAT", "COMMON", "SQUAD", "CONFUSE"};
+
+ var solver = new ABC(blocks);
+
+ foreach( var word in words)
+ {
+ Console.WriteLine("{0} :{1}", word, solver.CanMake(word));
+ }
}
class ABC
{
- readonly Dictionary> _blockDict = new Dictionary>();
- bool[] _used;
- int _nextBlock;
+ readonly Dictionary> _blockDict = new Dictionary>();
+ bool[] _used;
+ int _nextBlock;
- readonly List _blocks;
+ readonly List _blocks;
- private void AddBlockChar(char c)
- {
- if (!_blockDict.ContainsKey(c))
- {
- _blockDict[c] = new List();
- }
- _blockDict[c].Add(_nextBlock);
- }
+ private void AddBlockChar(char c)
+ {
+ if (!_blockDict.ContainsKey(c))
+ {
+ _blockDict[c] = new List();
+ }
+ _blockDict[c].Add(_nextBlock);
+ }
- private void AddBlock(string block)
- {
- AddBlockChar(block[0]);
- AddBlockChar(block[1]);
- _nextBlock++;
- }
+ private void AddBlock(string block)
+ {
+ AddBlockChar(block[0]);
+ AddBlockChar(block[1]);
+ _nextBlock++;
+ }
- public ABC(List blocks)
- {
- _blocks = blocks;
- foreach (var block in blocks)
- {
- AddBlock(block);
- }
- }
+ public ABC(List blocks)
+ {
+ _blocks = blocks;
+ foreach (var block in blocks)
+ {
+ AddBlock(block);
+ }
+ }
- public bool CanMake(string word)
- {
- word = word.ToLower();
- if (word.Length > _blockDict.Count)
- {
- return false;
- }
- _used = new bool[_blocks.Count];
- return TryMake(word);
- }
+ public bool CanMake(string word)
+ {
+ word = word.ToLower();
+ if (word.Length > _blockDict.Count)
+ {
+ return false;
+ }
+ _used = new bool[_blocks.Count];
+ return TryMake(word);
+ }
- public bool TryMake(string word)
- {
- if (word == string.Empty)
- {
- return true;
- }
- var blocks = _blockDict[word[0]].Where(b => !_used[b]);
- foreach (var block in blocks)
- {
- _used[block] = true;
- if (TryMake(word.Substring(1)))
- {
- return true;
- }
- _used[block] = false;
- }
- return false;
- }
+ public bool TryMake(string word)
+ {
+ if (word == string.Empty)
+ {
+ return true;
+ }
+ var blocks = _blockDict[word[0]].Where(b => !_used[b]);
+ foreach (var block in blocks)
+ {
+ _used[block] = true;
+ if (TryMake(word.Substring(1)))
+ {
+ return true;
+ }
+ _used[block] = false;
+ }
+ return false;
+ }
}
diff --git a/Task/ABC-problem/C/abc-problem.c b/Task/ABC-problem/C/abc-problem.c
index 6e248837a9..0a798cd2c4 100644
--- a/Task/ABC-problem/C/abc-problem.c
+++ b/Task/ABC-problem/C/abc-problem.c
@@ -3,39 +3,39 @@
int can_make_words(char **b, char *word)
{
- int i, ret = 0, c = toupper(*word);
+ int i, ret = 0, c = toupper(*word);
#define SWAP(a, b) if (a != b) { char * tmp = a; a = b; b = tmp; }
- if (!c) return 1;
- if (!b[0]) return 0;
+ if (!c) return 1;
+ if (!b[0]) return 0;
- for (i = 0; b[i] && !ret; i++) {
- if (b[i][0] != c && b[i][1] != c) continue;
- SWAP(b[i], b[0]);
- ret = can_make_words(b + 1, word + 1);
- SWAP(b[i], b[0]);
- }
+ for (i = 0; b[i] && !ret; i++) {
+ if (b[i][0] != c && b[i][1] != c) continue;
+ SWAP(b[i], b[0]);
+ ret = can_make_words(b + 1, word + 1);
+ SWAP(b[i], b[0]);
+ }
- return ret;
+ return ret;
}
int main(void)
{
- char* blocks[] = {
- "BO", "XK", "DQ", "CP", "NA",
- "GT", "RE", "TG", "QD", "FS",
- "JW", "HU", "VI", "AN", "OB",
- "ER", "FS", "LY", "PC", "ZM",
- 0 };
+ char* blocks[] = {
+ "BO", "XK", "DQ", "CP", "NA",
+ "GT", "RE", "TG", "QD", "FS",
+ "JW", "HU", "VI", "AN", "OB",
+ "ER", "FS", "LY", "PC", "ZM",
+ 0 };
- char *words[] = {
- "", "A", "BARK", "BOOK", "TREAT", "COMMON", "SQUAD", "Confuse", 0
- };
+ char *words[] = {
+ "", "A", "BARK", "BOOK", "TREAT", "COMMON", "SQUAD", "Confuse", 0
+ };
- char **w;
- for (w = words; *w; w++)
- printf("%s\t%d\n", *w, can_make_words(blocks, *w));
+ char **w;
+ for (w = words; *w; w++)
+ printf("%s\t%d\n", *w, can_make_words(blocks, *w));
- return 0;
+ return 0;
}
diff --git a/Task/ABC-problem/COBOL/abc-problem.cob b/Task/ABC-problem/COBOL/abc-problem.cob
deleted file mode 100644
index 7c1b0e20c6..0000000000
--- a/Task/ABC-problem/COBOL/abc-problem.cob
+++ /dev/null
@@ -1,64 +0,0 @@
- IDENTIFICATION DIVISION.
- PROGRAM-ID. ABC-PROBLEM.
-
- DATA DIVISION.
- WORKING-STORAGE SECTION.
- 01 INPUT-DATA.
- 03 BLOCK-SET PIC X(40) VALUE
- 'BOXKDQCPNAGTRETGQDFSJWHUVIANOBERFSLYPCZM'.
- 03 WORD-DATA.
- 05 FILLER PIC X(7) VALUE 'A'.
- 05 FILLER PIC X(7) VALUE 'BARK'.
- 05 FILLER PIC X(7) VALUE 'BOOK'.
- 05 FILLER PIC X(7) VALUE 'TREAT'.
- 05 FILLER PIC X(7) VALUE 'COMMON'.
- 05 FILLER PIC X(7) VALUE 'SQUAD'.
- 05 FILLER PIC X(7) VALUE 'CONFUSE'.
- 03 WORDS PIC X(7) OCCURS 7 TIMES, INDEXED BY W,
- REDEFINES WORD-DATA.
-
- 01 OUTPUT-LINE.
- 03 OUT-WORD PIC X(7).
- 03 FILLER PIC XX VALUE ': '.
- 03 RESULT PIC X(3).
- 03 FOO PIC 999.
-
- 01 VARIABLES.
- 03 BLOCK-SET PIC X(40).
- 03 BLOCKS OCCURS 20 TIMES, INDEXED BY B,
- REDEFINES BLOCK-SET.
- 05 FACE-A PIC X.
- 05 FACE-B PIC X.
- 03 WORD.
- 05 LETTERS PIC X OCCURS 7 TIMES, INDEXED BY L.
- 03 FAIL-FLAG PIC X.
- 88 FAILED VALUE 'X'.
-
- PROCEDURE DIVISION.
- BEGIN.
- PERFORM CHECK-WORD VARYING W FROM 1 BY 1
- UNTIL W IS GREATER THAN 7.
- STOP RUN.
-
- CHECK-WORD.
- MOVE BLOCK-SET OF INPUT-DATA TO BLOCK-SET OF VARIABLES.
-
- MOVE WORDS(W) TO WORD.
- SET L TO 1.
- MOVE SPACE TO FAIL-FLAG.
- PERFORM CHECK-LETTER VARYING L FROM 1 BY 1
- UNTIL FAILED
- OR L IS GREATER THAN 7
- OR LETTERS(L) IS EQUAL TO SPACE.
-
- MOVE WORDS(W) TO OUT-WORD.
- IF FAILED, MOVE 'NO' TO RESULT, ELSE MOVE 'YES' TO RESULT.
- DISPLAY OUTPUT-LINE.
-
- CHECK-LETTER.
- SET B TO 1.
- SEARCH BLOCKS VARYING B
- AT END
- MOVE 'X' TO FAIL-FLAG
- WHEN LETTERS(L) IS EQUAL TO FACE-A(B) OR FACE-B(B)
- MOVE SPACES TO BLOCKS(B).
diff --git a/Task/ABC-problem/Component-Pascal/abc-problem.pas b/Task/ABC-problem/Component-Pascal/abc-problem.pas
index caa5e1d04f..1f278709b7 100644
--- a/Task/ABC-problem/Component-Pascal/abc-problem.pas
+++ b/Task/ABC-problem/Component-Pascal/abc-problem.pas
@@ -1,84 +1,84 @@
MODULE ABCProblem;
IMPORT
- StdLog, DevCommanders, TextMappers;
+ StdLog, DevCommanders, TextMappers;
CONST
- notfound = -1;
-TYPE
- String = ARRAY 3 OF CHAR;
+ notfound = -1;
+TYPE
+ String = ARRAY 3 OF CHAR;
VAR
- blocks : ARRAY 20 OF String;
-
+ blocks : ARRAY 20 OF String;
+
PROCEDURE Check(s: ARRAY OF CHAR): BOOLEAN;
VAR
- used: SET;
- i,blockIndex: INTEGER;
-
- PROCEDURE GetBlockFor(c: CHAR): INTEGER;
- VAR
- i: INTEGER;
- BEGIN
- c := CAP(c);
- i := 0;
- WHILE (i < LEN(blocks)) DO
- IF (c = blocks[i][0]) OR (c = blocks[i][1]) THEN
- IF ~(i IN used) THEN RETURN i END
- END;
- INC(i)
- END;
- RETURN notfound
- END GetBlockFor;
-
+ used: SET;
+ i,blockIndex: INTEGER;
+
+ PROCEDURE GetBlockFor(c: CHAR): INTEGER;
+ VAR
+ i: INTEGER;
+ BEGIN
+ c := CAP(c);
+ i := 0;
+ WHILE (i < LEN(blocks)) DO
+ IF (c = blocks[i][0]) OR (c = blocks[i][1]) THEN
+ IF ~(i IN used) THEN RETURN i END
+ END;
+ INC(i)
+ END;
+ RETURN notfound
+ END GetBlockFor;
+
BEGIN
- used := {};
- FOR i := 0 TO LEN(s$) - 1 DO
- blockIndex := GetBlockFor(s[i]);
- IF blockIndex = notfound THEN
- RETURN FALSE
- ELSE
- INCL(used,blockIndex)
- END
- END;
- RETURN TRUE
-END Check;
+ used := {};
+ FOR i := 0 TO LEN(s$) - 1 DO
+ blockIndex := GetBlockFor(s[i]);
+ IF blockIndex = notfound THEN
+ RETURN FALSE
+ ELSE
+ INCL(used,blockIndex)
+ END
+ END;
+ RETURN TRUE
+END Check;
PROCEDURE CanMakeWord*;
VAR
- s: TextMappers.Scanner;
+ s: TextMappers.Scanner;
BEGIN
- s.ConnectTo(DevCommanders.par.text);
- s.SetPos(DevCommanders.par.beg);
- s.Scan;
- WHILE (~s.rider.eot) DO
- IF (s.type = TextMappers.char) & (s.char = '~') THEN
- RETURN
- ELSIF (s.type = TextMappers.string) THEN
- StdLog.String(s.string);StdLog.String(":> ");
- StdLog.Bool(Check(s.string));StdLog.Ln
- END;
- s.Scan
- END
+ s.ConnectTo(DevCommanders.par.text);
+ s.SetPos(DevCommanders.par.beg);
+ s.Scan;
+ WHILE (~s.rider.eot) DO
+ IF (s.type = TextMappers.char) & (s.char = '~') THEN
+ RETURN
+ ELSIF (s.type = TextMappers.string) THEN
+ StdLog.String(s.string);StdLog.String(":> ");
+ StdLog.Bool(Check(s.string));StdLog.Ln
+ END;
+ s.Scan
+ END
END CanMakeWord;
BEGIN
- blocks[0] := "BO";
- blocks[1] := "XK";
- blocks[2] := "DQ";
- blocks[3] := "CP";
- blocks[4] := "NA";
- blocks[5] := "GT";
- blocks[6] := "RE";
- blocks[7] := "TG";
- blocks[8] := "QD";
- blocks[9] := "FS";
- blocks[10] := "JW";
- blocks[11] := "HU";
- blocks[12] := "VI";
- blocks[13] := "AN";
- blocks[14] := "OB";
- blocks[15] := "ER";
- blocks[16] := "FS";
- blocks[17] := "LY";
- blocks[18] := "PC";
- blocks[19] := "ZM";
-
+ blocks[0] := "BO";
+ blocks[1] := "XK";
+ blocks[2] := "DQ";
+ blocks[3] := "CP";
+ blocks[4] := "NA";
+ blocks[5] := "GT";
+ blocks[6] := "RE";
+ blocks[7] := "TG";
+ blocks[8] := "QD";
+ blocks[9] := "FS";
+ blocks[10] := "JW";
+ blocks[11] := "HU";
+ blocks[12] := "VI";
+ blocks[13] := "AN";
+ blocks[14] := "OB";
+ blocks[15] := "ER";
+ blocks[16] := "FS";
+ blocks[17] := "LY";
+ blocks[18] := "PC";
+ blocks[19] := "ZM";
+
END ABCProblem.
diff --git a/Task/ABC-problem/Crystal/abc-problem.cr b/Task/ABC-problem/Crystal/abc-problem.cr
deleted file mode 100644
index 5f3ec7d4ff..0000000000
--- a/Task/ABC-problem/Crystal/abc-problem.cr
+++ /dev/null
@@ -1,17 +0,0 @@
-def can_make_word? (word, blocks, i=0)
- return true if word.empty?
- ch = word[0].upcase
- blocks.each_with_index do |block, idx|
- if ch.in? block.upcase
- return true if can_make_word? word[1..], blocks[...idx] + blocks[(idx+1)..], i+1
- end
- end
- false
-end
-
-blocks = "BO XK DQ CP NA GT RE TG QD FS JW HU VI AN OB ER FS LY PC ZM".split
-
-["A", "BARK", "BOOK", "TREAT", "COMMON", "SQUAD", "CONFUSE"].each do |word|
- print word, " -> ", can_make_word?(word, blocks), "\n"
-end
-print "abba", " -> ", can_make_word?("abba", ["AB", "AB", "AC", "AC"]), "\n"
diff --git a/Task/ABC-problem/Delphi/abc-problem.pas b/Task/ABC-problem/Delphi/abc-problem.delphi
similarity index 100%
rename from Task/ABC-problem/Delphi/abc-problem.pas
rename to Task/ABC-problem/Delphi/abc-problem.delphi
diff --git a/Task/ABC-problem/DuckDB/abc-problem.duckdb b/Task/ABC-problem/DuckDB/abc-problem.duckdb
deleted file mode 100644
index 0856cd977f..0000000000
--- a/Task/ABC-problem/DuckDB/abc-problem.duckdb
+++ /dev/null
@@ -1,45 +0,0 @@
-CREATE OR REPLACE FUNCTION matches(block, letter) as (
- block[1] = letter or block[2] = letter
-);
-
-# permute(lst, n, word) generates sub-permutations, perm (of length n), of the list lst,
-# that satisfy matches(perm[i], word[i]), for i in range(1, n+1).
-# Normally n = length(word).
-# The caller is responsible for ensuring appropriate adjustment of typographical case.
-CREATE OR REPLACE FUNCTION permute(lst, n, word) as table (
- WITH RECURSIVE permute(perm, remaining) as (
- -- base case
- SELECT
- []::VARCHAR[] as perm,
- lst::VARCHAR[] as remaining
- UNION ALL
- -- recursive case: add one element from remaining to perm and remove it from remaining
- SELECT
- (perm || [element]) AS perm,
- (remaining[1:i-1] || remaining[i+1:]) AS remaining
- FROM (select *, unnest(remaining) AS element, generate_subscripts(remaining,1) as i
- FROM permute)
- WHERE length(perm) < n
- and matches(element, word[1 + length(perm)])
- )
- SELECT perm
- FROM permute
- WHERE length(perm) = n
-);
-
-# All solutions
-CREATE OR REPLACE FUNCTION solve(word) as table (
- from permute(
- ['BO', 'XK', 'DQ', 'CP', 'NA', 'GT', 'RE', 'TG', 'QD', 'FS',
- 'JW', 'HU', 'VI', 'AN', 'OB', 'ER', 'FS', 'LY', 'PC', 'ZM'],
- length(word), upper(word) )
-);
-
-CREATE OR REPLACE FUNCTION one_solution(word) as (
- from solve(word)
- limit 1
-);
-
-# Examples
-select word, one_solution(word)
-from (select unnest(['','A','BarK','BOOK','TREAT','COMMON','SQUAD','Confuse','abba']) as word);
diff --git a/Task/ABC-problem/EMal/abc-problem.emal b/Task/ABC-problem/EMal/abc-problem.emal
deleted file mode 100644
index 66f28bfaa3..0000000000
--- a/Task/ABC-problem/EMal/abc-problem.emal
+++ /dev/null
@@ -1,28 +0,0 @@
-List words ← text["", "A", "Bark", "book", "TREAT", "COMMON", "SQuAd", "CONFUSE"]
-List checks ← logic[true, true, true, false, true, false, true, true]
-fun canMakeWord ← logic by text word
- if word.length æ 0 do return true end
- List wblocks ← text[
- "BO", "XK", "DQ", "CP", "NA",
- "GT", "RE", "TG", "QD", "FS",
- "JW", "HU", "VI", "AN", "OB",
- "ER", "FS", "LY", "PC", "ZM"]
- for each text ch in word.upper().split()
- logic found ← false
- for each text wblock in wblocks
- if wblock.find(ch) ≥ 0
- wblocks[wblockIndex] ← Text.EMPTY
- found ← true
- break
- end
- end
- if not found do return false end
- end
- return true
-end
-writeLine("word".padEnd(11, " "), "|", "canMakeWord", "|", "isCorrect")
-for each text word in words
- writeLine(word.padEnd(11, " "), "|",
- (text!canMakeWord(word)).padEnd(11, " "), "|",
- (canMakeWord(word) æ checks[wordIndex]))
-end
diff --git a/Task/ABC-problem/EasyLang/abc-problem.easy b/Task/ABC-problem/EasyLang/abc-problem.easy
index 3ce60e223b..4f51ed99d3 100644
--- a/Task/ABC-problem/EasyLang/abc-problem.easy
+++ b/Task/ABC-problem/EasyLang/abc-problem.easy
@@ -2,7 +2,7 @@ b$[][] = [ [ "B" "O" ] [ "X" "K" ] [ "D" "Q" ] [ "C" "P" ] [ "N" "A" ] [ "G" "T"
len b[] len b$[][]
global w$[] cnt .
#
-proc backtr wi .
+proc backtr wi . .
if wi > len w$[]
cnt += 1
return
diff --git a/Task/ABC-problem/EchoLisp/abc-problem.l b/Task/ABC-problem/EchoLisp/abc-problem.l
index 1eca19b9fd..20f3578009 100644
--- a/Task/ABC-problem/EchoLisp/abc-problem.l
+++ b/Task/ABC-problem/EchoLisp/abc-problem.l
@@ -1,15 +1,16 @@
(lib 'list) ;; list-delete
(define BLOCKS '("BO" "XK" "DQ" "CP" "NA" "GT" "RE" "TG" "QD" "FS"
- "JW" "HU" "VI" "AN" "OB" "ER" "FS" "LY" "PC" "ZM" ))
-
+ "JW" "HU" "VI" "AN" "OB" "ER" "FS" "LY" "PC" "ZM" ))
+
(define WORDS '("A" "BARK" "BOOK" "TREAT" "COMMON" "SQUAD" "CONFUSE"))
-
+
(define (spell word blocks)
(cond
- ((string-empty? word) #t)
- ((empty? blocks) #f)
- (else
- (for/or [(block blocks)]
- #:continue (not (string-match block (string-first word)))
- (spell (string-rest word) (list-delete blocks block))))))
+ ((string-empty? word) #t)
+ ((empty? blocks) #f)
+ (else
+ (for/or [(block blocks)]
+ #:continue (not (string-match block (string-first word)))
+ (spell (string-rest word) (list-delete blocks block))))))
+
diff --git a/Task/ABC-problem/Elena/abc-problem.elena b/Task/ABC-problem/Elena/abc-problem.elena
index 4b068c9957..99216ac706 100644
--- a/Task/ABC-problem/Elena/abc-problem.elena
+++ b/Task/ABC-problem/Elena/abc-problem.elena
@@ -27,20 +27,20 @@ extension op
}
}
-public Program()
+public program()
{
- auto blocks := new const string[]{"BO", "XK", "DQ", "CP", "NA",
- "GT", "RE", "TG", "QD", "FS",
- "JW", "HU", "VI", "AN", "OB",
- "ER", "FS", "LY", "PC", "ZM"};
+ var blocks := new string[]{"BO", "XK", "DQ", "CP", "NA",
+ "GT", "RE", "TG", "QD", "FS",
+ "JW", "HU", "VI", "AN", "OB",
+ "ER", "FS", "LY", "PC", "ZM"};
- auto words := new const string[]{"", "A", "BARK", "BOOK", "TREAT", "COMMON", "SQUAD", "Confuse"};
+ var words := new string[]{"", "A", "BARK", "BOOK", "TREAT", "COMMON", "SQUAD", "Confuse"};
Enumerator e := words.enumerator();
e.next();
words.forEach::(word)
{
- Console.printLine("can make '",word,"' : ",word.canMakeWordFrom(blocks));
+ console.printLine("can make '",word,"' : ",word.canMakeWordFrom(blocks));
}
}
diff --git a/Task/ABC-problem/Elixir/abc-problem.ex b/Task/ABC-problem/Elixir/abc-problem.elixir
similarity index 100%
rename from Task/ABC-problem/Elixir/abc-problem.ex
rename to Task/ABC-problem/Elixir/abc-problem.elixir
diff --git a/Task/ABC-problem/Euphoria/abc-problem.eu b/Task/ABC-problem/Euphoria/abc-problem.eu
deleted file mode 100644
index be5498a568..0000000000
--- a/Task/ABC-problem/Euphoria/abc-problem.eu
+++ /dev/null
@@ -1,35 +0,0 @@
-include std/text.e
-
-sequence blocks = {{'B','O'},{'X','K'},{'D','Q'},{'C','P'},{'N','A'},
- {'G','T'},{'R','E'},{'T','G'},{'Q','D'},{'F','S'},
- {'J','W'},{'H','U'},{'V','I'},{'A','N'},{'O','B'},
- {'E','R'},{'F','S'},{'L','Y'},{'P','C'},{'Z','M'}}
-sequence words = {"A","BarK","BOOK","TrEaT","COMMON","SQUAD","CONFUSE"}
-
-sequence current_word
-sequence temp
-integer matches
-
-for i = 1 to length(words) do
- current_word = upper(words[i])
- temp = blocks
- matches = 0
- for j = 1 to length(current_word) do
- for k = 1 to length(temp) do
- if find(current_word[j],temp[k]) then
- temp = remove(temp,k)
- matches += 1
- exit
- end if
- end for
- if length(current_word) = matches then
- printf(1,"%s: TRUE\n",{words[i]})
- exit
- end if
- end for
- if length(current_word) != matches then
- printf(1,"%s: FALSE\n",{words[i]})
- end if
-end for
-
-if getc(0) then end if
diff --git a/Task/ABC-problem/Euphoria/abc-problem.euphoria b/Task/ABC-problem/Euphoria/abc-problem.euphoria
new file mode 100644
index 0000000000..efa3352600
--- /dev/null
+++ b/Task/ABC-problem/Euphoria/abc-problem.euphoria
@@ -0,0 +1,35 @@
+include std/text.e
+
+sequence blocks = {{'B','O'},{'X','K'},{'D','Q'},{'C','P'},{'N','A'},
+ {'G','T'},{'R','E'},{'T','G'},{'Q','D'},{'F','S'},
+ {'J','W'},{'H','U'},{'V','I'},{'A','N'},{'O','B'},
+ {'E','R'},{'F','S'},{'L','Y'},{'P','C'},{'Z','M'}}
+sequence words = {"A","BarK","BOOK","TrEaT","COMMON","SQUAD","CONFUSE"}
+
+sequence current_word
+sequence temp
+integer matches
+
+for i = 1 to length(words) do
+ current_word = upper(words[i])
+ temp = blocks
+ matches = 0
+ for j = 1 to length(current_word) do
+ for k = 1 to length(temp) do
+ if find(current_word[j],temp[k]) then
+ temp = remove(temp,k)
+ matches += 1
+ exit
+ end if
+ end for
+ if length(current_word) = matches then
+ printf(1,"%s: TRUE\n",{words[i]})
+ exit
+ end if
+ end for
+ if length(current_word) != matches then
+ printf(1,"%s: FALSE\n",{words[i]})
+ end if
+end for
+
+if getc(0) then end if
diff --git a/Task/ABC-problem/FBSL/abc-problem.fbsl b/Task/ABC-problem/FBSL/abc-problem.fbsl
index 1ef125fe0f..9c34a6ea72 100644
--- a/Task/ABC-problem/FBSL/abc-problem.fbsl
+++ b/Task/ABC-problem/FBSL/abc-problem.fbsl
@@ -1,44 +1,44 @@
#APPTYPE CONSOLE
SUB MAIN()
- BlockCheck("A")
- BlockCheck("BARK")
- BlockCheck("BooK")
- BlockCheck("TrEaT")
- BlockCheck("comMON")
- BlockCheck("sQuAd")
- BlockCheck("Confuse")
- pause
+ BlockCheck("A")
+ BlockCheck("BARK")
+ BlockCheck("BooK")
+ BlockCheck("TrEaT")
+ BlockCheck("comMON")
+ BlockCheck("sQuAd")
+ BlockCheck("Confuse")
+ pause
END SUB
FUNCTION BlockCheck(str)
- print str " " iif( Blockable( str ), "can", "cannot" ) " be spelled with blocks."
+ print str " " iif( Blockable( str ), "can", "cannot" ) " be spelled with blocks."
END FUNCTION
FUNCTION Blockable(str AS STRING)
- DIM blocks AS STRING = "BOXKDQCPNAGTRETGQDFSJWHUVIANOBERFSLYPCZM"
- DIM C AS STRING = ""
- DIM POS AS INTEGER = 0
-
- FOR DIM I = 1 TO LEN(str)
- C = str{i}
- POS = INSTR(BLOCKS, C, 0, 1) 'case insensitive
- IF POS > 0 THEN
- 'if the pos is odd, it's the first of the pair
- IF POS MOD 2 = 1 THEN
- 'so clear the first and the second
- poke(@blocks + pos - 1," ")
- poke(@blocks + pos," ")
- 'otherwise, it's the last of the pair
- ELSE
- 'clear the second and the first
- poke(@blocks + pos - 1," ")
- poke(@blocks + pos - 2," ")
- END IF
- ELSE
- 'not found, so can't be spelled
- RETURN FALSE
- END IF
- NEXT
- 'got thru to here, so can be spelled
- RETURN TRUE
+ DIM blocks AS STRING = "BOXKDQCPNAGTRETGQDFSJWHUVIANOBERFSLYPCZM"
+ DIM C AS STRING = ""
+ DIM POS AS INTEGER = 0
+
+ FOR DIM I = 1 TO LEN(str)
+ C = str{i}
+ POS = INSTR(BLOCKS, C, 0, 1) 'case insensitive
+ IF POS > 0 THEN
+ 'if the pos is odd, it's the first of the pair
+ IF POS MOD 2 = 1 THEN
+ 'so clear the first and the second
+ poke(@blocks + pos - 1," ")
+ poke(@blocks + pos," ")
+ 'otherwise, it's the last of the pair
+ ELSE
+ 'clear the second and the first
+ poke(@blocks + pos - 1," ")
+ poke(@blocks + pos - 2," ")
+ END IF
+ ELSE
+ 'not found, so can't be spelled
+ RETURN FALSE
+ END IF
+ NEXT
+ 'got thru to here, so can be spelled
+ RETURN TRUE
END FUNCTION
diff --git a/Task/ABC-problem/Fortran/abc-problem-2.f b/Task/ABC-problem/Fortran/abc-problem-2.f
index 186802c418..0c0d917d24 100644
--- a/Task/ABC-problem/Fortran/abc-problem-2.f
+++ b/Task/ABC-problem/Fortran/abc-problem-2.f
@@ -1,264 +1,264 @@
- MODULE PLAYPEN !Messes with a set of alphabet blocks.
- INTEGER MSG !Output unit number.
- PARAMETER (MSG = 6) !Standard output.
- INTEGER MS !I dislike unidentified constants...
- PARAMETER (MS = 2) !So this is the maximum number of lettered sides.
- INTEGER LETTER(26),SUPPLY(26) !For counting the alphabet.
+ MODULE PLAYPEN !Messes with a set of alphabet blocks.
+ INTEGER MSG !Output unit number.
+ PARAMETER (MSG = 6) !Standard output.
+ INTEGER MS !I dislike unidentified constants...
+ PARAMETER (MS = 2) !So this is the maximum number of lettered sides.
+ INTEGER LETTER(26),SUPPLY(26) !For counting the alphabet.
CONTAINS
- SUBROUTINE SWAP(I,J) !This really should be known to the compiler.
- INTEGER I,J,K !Which could generate in-place code,
- K = I !Using registers, maybe.
- I = J !Or maybe, there are special op-codes.
- J = K !Rather than this clunkiness.
- END SUBROUTINE SWAP !And it should be for any type of thingy.
+ SUBROUTINE SWAP(I,J) !This really should be known to the compiler.
+ INTEGER I,J,K !Which could generate in-place code,
+ K = I !Using registers, maybe.
+ I = J !Or maybe, there are special op-codes.
+ J = K !Rather than this clunkiness.
+ END SUBROUTINE SWAP !And it should be for any type of thingy.
INTEGER FUNCTION LSTNB(TEXT) !Sigh. Last Not Blank.
Concocted yet again by R.N.McLean (whom God preserve) December MM.
Code checking reveals that the Compaq compiler generates a copy of the string and then finds the length of that when using the latter-day intrinsic LEN_TRIM. Madness!
-Can't DO WHILE (L.GT.0 .AND. TEXT(L:L).LE.' ') !Control chars. regarded as spaces.
+Can't DO WHILE (L.GT.0 .AND. TEXT(L:L).LE.' ') !Control chars. regarded as spaces.
Curse the morons who think it good that the compiler MIGHT evaluate logical expressions fully.
Crude GO TO rather than a DO-loop, because compilers use a loop counter as well as updating the index variable.
Comparison runs of GNASH showed a saving of ~3% in its mass-data reading through the avoidance of DO in LSTNB alone.
Crappy code for character comparison of varying lengths is avoided by using ICHAR which is for single characters only.
Checking the indexing of CHARACTER variables for bounds evoked astounding stupidities, such as calculating the length of TEXT(L:L) by subtracting L from L!
Comparison runs of GNASH showed a saving of ~25-30% in its mass data scanning for this, involving all its two-dozen or so single-character comparisons, not just in LSTNB.
- CHARACTER*(*),INTENT(IN):: TEXT !The bumf. If there must be copy-in, at least there need not be copy back.
- INTEGER L !The length of the bumf.
- L = LEN(TEXT) !So, what is it?
- 1 IF (L.LE.0) GO TO 2 !Are we there yet?
- IF (ICHAR(TEXT(L:L)).GT.ICHAR(" ")) GO TO 2 !Control chars are regarded as spaces also.
- L = L - 1 !Step back one.
- GO TO 1 !And try again.
- 2 LSTNB = L !The last non-blank, possibly zero.
- RETURN !Unsafe to use LSTNB as a variable.
- END FUNCTION LSTNB !Compilers can bungle it.
+ CHARACTER*(*),INTENT(IN):: TEXT !The bumf. If there must be copy-in, at least there need not be copy back.
+ INTEGER L !The length of the bumf.
+ L = LEN(TEXT) !So, what is it?
+ 1 IF (L.LE.0) GO TO 2 !Are we there yet?
+ IF (ICHAR(TEXT(L:L)).GT.ICHAR(" ")) GO TO 2 !Control chars are regarded as spaces also.
+ L = L - 1 !Step back one.
+ GO TO 1 !And try again.
+ 2 LSTNB = L !The last non-blank, possibly zero.
+ RETURN !Unsafe to use LSTNB as a variable.
+ END FUNCTION LSTNB !Compilers can bungle it.
- SUBROUTINE LETTERCOUNT(TEXT) !Count the occurrences of A-Z.
- CHARACTER*(*) TEXT !The text to inspect.
- INTEGER I,K !Assistants.
- DO I = 1,LEN(TEXT) !Step through the text.
- K = ICHAR(TEXT(I:I)) - ICHAR("A") + 1 !This presumes that A-Z have contiguous codes!
- IF (K.GE.1 .AND. K.LE.26) LETTER(K) = LETTER(K) + 1 !Not so with EBCDIC!!
- END DO !On to the next letter.
- END SUBROUTINE LETTERCOUNT !Be careful with LETTER.
+ SUBROUTINE LETTERCOUNT(TEXT) !Count the occurrences of A-Z.
+ CHARACTER*(*) TEXT !The text to inspect.
+ INTEGER I,K !Assistants.
+ DO I = 1,LEN(TEXT) !Step through the text.
+ K = ICHAR(TEXT(I:I)) - ICHAR("A") + 1 !This presumes that A-Z have contiguous codes!
+ IF (K.GE.1 .AND. K.LE.26) LETTER(K) = LETTER(K) + 1 !Not so with EBCDIC!!
+ END DO !On to the next letter.
+ END SUBROUTINE LETTERCOUNT !Be careful with LETTER.
- SUBROUTINE UPCASE(TEXT) !In the absence of an intrinsic...
+ SUBROUTINE UPCASE(TEXT) !In the absence of an intrinsic...
Converts any lower case letters in TEXT to upper case...
Concocted yet again by R.N.McLean (whom God preserve) December MM.
Converting from a DO loop evades having both an iteration counter to decrement and an index variable to adjust.
- CHARACTER*(*) TEXT !The stuff to be modified.
-c CHARACTER*26 LOWER,UPPER !Tables. a-z may not be contiguous codes.
+ CHARACTER*(*) TEXT !The stuff to be modified.
+c CHARACTER*26 LOWER,UPPER !Tables. a-z may not be contiguous codes.
c PARAMETER (LOWER = "abcdefghijklmnopqrstuvwxyz")
c PARAMETER (UPPER = "ABCDEFGHIJKLMNOPQRSTUVWXYZ")
CAREFUL!! The below relies on a-z and A-Z being contiguous, as is NOT the case with EBCDIC.
- INTEGER I,L,IT !Fingers.
- L = LEN(TEXT) !Get a local value, in case LEN engages in oddities.
- I = L !Start at the end and work back..
- 1 IF (I.LE.0) RETURN !Are we there yet? Comparison against zero should not require a subtraction.
-c IT = INDEX(LOWER,TEXT(I:I)) !Well?
-c IF (IT .GT. 0) TEXT(I:I) = UPPER(IT:IT) !One to convert?
- IT = ICHAR(TEXT(I:I)) - ICHAR("a") !More symbols precede "a" than "A".
- IF (IT.GE.0 .AND. IT.LE.25) TEXT(I:I) = CHAR(IT + ICHAR("A")) !In a-z? Convert!
- I = I - 1 !Back one.
- GO TO 1 !Inspect..
- END SUBROUTINE UPCASE !Easy.
+ INTEGER I,L,IT !Fingers.
+ L = LEN(TEXT) !Get a local value, in case LEN engages in oddities.
+ I = L !Start at the end and work back..
+ 1 IF (I.LE.0) RETURN !Are we there yet? Comparison against zero should not require a subtraction.
+c IT = INDEX(LOWER,TEXT(I:I)) !Well?
+c IF (IT .GT. 0) TEXT(I:I) = UPPER(IT:IT) !One to convert?
+ IT = ICHAR(TEXT(I:I)) - ICHAR("a") !More symbols precede "a" than "A".
+ IF (IT.GE.0 .AND. IT.LE.25) TEXT(I:I) = CHAR(IT + ICHAR("A")) !In a-z? Convert!
+ I = I - 1 !Back one.
+ GO TO 1 !Inspect..
+ END SUBROUTINE UPCASE !Easy.
- SUBROUTINE ORDERSIDE(LETTER) !Puts the letters into order.
- CHARACTER*(*) LETTER !The letters.
- INTEGER I,N,H !Assistants.
- CHARACTER*1 T !A scratchpad.
- LOGICAL CURSE !A bit.
- N = LEN(LETTER) !So, how many letters?
- H = N - 1 !Last - First, and not +1.
- IF (H.LE.0) RETURN !Ha ha.
- 1 H = MAX(1,H*10/13) !The special feature.
- IF (H.EQ.9 .OR. H.EQ.10) H = 11 !A twiddle.
- CURSE = .FALSE. !So far, so good.
- DO I = N - H,1,-1 !If H = 1, this is a BubbleSort.
- IF (LETTER(I:I).LT.LETTER(I + H:I + H)) THEN !One compare.
- T = LETTER(I:I) !One swap.
- LETTER(I:I) = LETTER(I + H:I + H) !Alas, no SWAP(A,B)
- LETTER(I + H:I + H) = T !Is recognised by the compiler.
- CURSE = .TRUE. !If once a tiger is seen...
- END IF !So much for that comparison.
- END DO !On to the next.
+ SUBROUTINE ORDERSIDE(LETTER) !Puts the letters into order.
+ CHARACTER*(*) LETTER !The letters.
+ INTEGER I,N,H !Assistants.
+ CHARACTER*1 T !A scratchpad.
+ LOGICAL CURSE !A bit.
+ N = LEN(LETTER) !So, how many letters?
+ H = N - 1 !Last - First, and not +1.
+ IF (H.LE.0) RETURN !Ha ha.
+ 1 H = MAX(1,H*10/13) !The special feature.
+ IF (H.EQ.9 .OR. H.EQ.10) H = 11 !A twiddle.
+ CURSE = .FALSE. !So far, so good.
+ DO I = N - H,1,-1 !If H = 1, this is a BubbleSort.
+ IF (LETTER(I:I).LT.LETTER(I + H:I + H)) THEN !One compare.
+ T = LETTER(I:I) !One swap.
+ LETTER(I:I) = LETTER(I + H:I + H) !Alas, no SWAP(A,B)
+ LETTER(I + H:I + H) = T !Is recognised by the compiler.
+ CURSE = .TRUE. !If once a tiger is seen...
+ END IF !So much for that comparison.
+ END DO !On to the next.
IF (CURSE .OR. H.GT.1) GO TO 1!Another pass?
- END SUBROUTINE ORDERSIDE !Simple enough.
- SUBROUTINE ORDERBLOCKS(N,SOME) !Puts the collection of blocks into order.
- INTEGER N !The number of blocks.
- CHARACTER*(*) SOME(:) !Their lists of letters.
- INTEGER I,H !Assistants.
- CHARACTER*(LEN(SOME(1))) T !A scratchpad matching an element of SOME.
- LOGICAL CURSE !Since there is still no SWAP(SOME(I),SOME(I + H)).
- H = N - 1 !So here comes another CombSort.
- IF (H.LE.0) RETURN !With standard suspicion.
- 1 H = MAX(1,H*10/13) !This is the outer loop.
- IF (H.EQ.9 .OR. H.EQ.10) H = 11 !This is a fiddle.
- CURSE = .FALSE. !Start the next pass in hope.
- DO I = N - H,1,-1 !Going backwards, just for fun.
- IF (SOME(I).LT.SOME(I + H)) THEN !So then?
- T = SOME(I) !Disorder.
- SOME(I) = SOME(I + H) !So once again,
- SOME(I + H) = T !Swap the two miscreants.
- CURSE = .TRUE. !And remember.
- END IF !So much for that comparison.
- END DO !On to the next.
+ END SUBROUTINE ORDERSIDE !Simple enough.
+ SUBROUTINE ORDERBLOCKS(N,SOME) !Puts the collection of blocks into order.
+ INTEGER N !The number of blocks.
+ CHARACTER*(*) SOME(:) !Their lists of letters.
+ INTEGER I,H !Assistants.
+ CHARACTER*(LEN(SOME(1))) T !A scratchpad matching an element of SOME.
+ LOGICAL CURSE !Since there is still no SWAP(SOME(I),SOME(I + H)).
+ H = N - 1 !So here comes another CombSort.
+ IF (H.LE.0) RETURN !With standard suspicion.
+ 1 H = MAX(1,H*10/13) !This is the outer loop.
+ IF (H.EQ.9 .OR. H.EQ.10) H = 11 !This is a fiddle.
+ CURSE = .FALSE. !Start the next pass in hope.
+ DO I = N - H,1,-1 !Going backwards, just for fun.
+ IF (SOME(I).LT.SOME(I + H)) THEN !So then?
+ T = SOME(I) !Disorder.
+ SOME(I) = SOME(I + H) !So once again,
+ SOME(I + H) = T !Swap the two miscreants.
+ CURSE = .TRUE. !And remember.
+ END IF !So much for that comparison.
+ END DO !On to the next.
IF (CURSE .OR. H.GT.1) GO TO 1!Are we there yet?
- END SUBROUTINE ORDERBLOCKS !Not much code, but ringing the changes is still tedious.
+ END SUBROUTINE ORDERBLOCKS !Not much code, but ringing the changes is still tedious.
- SUBROUTINE PLAY(N,SOME) !Mess about with the collection of blocks.
- INTEGER N !Their number.
- CHARACTER*(*) SOME(:) !Their letters.
- INTEGER NH,HIT(N) !A list of blocks.
- INTEGER B,I,J,K,L,M !Assistants.
- CHARACTER*1 C !A letter of the moment.
- L = LEN(SOME(1)) !The maximum number of letters to any block.
+ SUBROUTINE PLAY(N,SOME) !Mess about with the collection of blocks.
+ INTEGER N !Their number.
+ CHARACTER*(*) SOME(:) !Their letters.
+ INTEGER NH,HIT(N) !A list of blocks.
+ INTEGER B,I,J,K,L,M !Assistants.
+ CHARACTER*1 C !A letter of the moment.
+ L = LEN(SOME(1)) !The maximum number of letters to any block.
Cast the collection on to the floor.
- WRITE (MSG,1) N,L,SOME !Announce the set as it is supplied.
+ WRITE (MSG,1) N,L,SOME !Announce the set as it is supplied.
1 FORMAT (I7," blocks, with at most",I2," letters:",66(1X,A))
Change the "orientation" of some blocks.
- DO B = 1,N !Step through each block.
- CALL UPCASE(SOME(B)) !Paranoia rules.
- CALL ORDERSIDE(SOME(B)) !Put its letter list into order.
- END DO !On to the next block.
- WRITE (MSG,2) SOME !Reveal the orderly array.
+ DO B = 1,N !Step through each block.
+ CALL UPCASE(SOME(B)) !Paranoia rules.
+ CALL ORDERSIDE(SOME(B)) !Put its letter list into order.
+ END DO !On to the next block.
+ WRITE (MSG,2) SOME !Reveal the orderly array.
2 FORMAT (6X,"... the letters in reverse order:",66(1X,A))
Collate the collection of blocks.
- CALL ORDERBLOCKS(N,SOME) !Now order the blocks by their letters.
- WRITE (MSG,3) SOME !Reveal them in neato order.
+ CALL ORDERBLOCKS(N,SOME) !Now order the blocks by their letters.
+ WRITE (MSG,3) SOME !Reveal them in neato order.
3 FORMAT (7X,"... the blocks in reverse order:",66(1X,A))
Count the appearances of the letters of the alphabet.
- LETTER = 0 !Enough of shuffling blocks around.
- DO B = 1,N !Now inspect their collective letters.
- CALL LETTERCOUNT(SOME(B)) !A block's worth at a go.
- END DO !On to the next block.
- SUPPLY = LETTER !Save the counts of supplied letters.
- WRITE (MSG,4) (CHAR(ICHAR("A") + I - 1),I = 1,26),SUPPLY !Results.
- 4 FORMAT (15X,"Letters of the alphabet:",26A,/, !First, a line with A ... Z.
- 1 11X,"... number thereof supplied:",26I) !Then a line of the associated counts.
+ LETTER = 0 !Enough of shuffling blocks around.
+ DO B = 1,N !Now inspect their collective letters.
+ CALL LETTERCOUNT(SOME(B)) !A block's worth at a go.
+ END DO !On to the next block.
+ SUPPLY = LETTER !Save the counts of supplied letters.
+ WRITE (MSG,4) (CHAR(ICHAR("A") + I - 1),I = 1,26),SUPPLY !Results.
+ 4 FORMAT (15X,"Letters of the alphabet:",26A,/, !First, a line with A ... Z.
+ 1 11X,"... number thereof supplied:",26I) !Then a line of the associated counts.
Check for blocks with duplicated letters.
- WRITE (MSG,5) !Announce.
- 5 FORMAT (8X,"Blocks with duplicated letters:",$) !Further output impends.
- M = 0 !No duplication found.
- DO B = 1,N !So step through each block.
- JJ:DO J = 2,L !Inspecting successive letters of the block,
- IF (SOME(B)(J:J).LE." ") EXIT JJ !Provided they've not run out.
- DO K = 1,J - 1 !To see if it has appeared earlier.
+ WRITE (MSG,5) !Announce.
+ 5 FORMAT (8X,"Blocks with duplicated letters:",$) !Further output impends.
+ M = 0 !No duplication found.
+ DO B = 1,N !So step through each block.
+ JJ:DO J = 2,L !Inspecting successive letters of the block,
+ IF (SOME(B)(J:J).LE." ") EXIT JJ !Provided they've not run out.
+ DO K = 1,J - 1 !To see if it has appeared earlier.
IF (SOME(B)(K:K).LE." ") EXIT JJ!Reverse order means that spaces will be at the end!
- IF (SOME(B)(J:J).EQ.SOME(B)(K:K)) THEN !Well?
- M = M + 1 !A match!
- WRITE (MSG,6) SOME(B) !Name the block.
- 6 FORMAT (1X,A,$) !With further output still impending,
- EXIT JJ !And give up on this block.
- END IF !One duplicated letter is sufficient for its downfall.
- END DO !Next letter up.
- END DO JJ !On to the next letter of the block.
- END DO !On to the next block.
- CALL HIC(M) !Show the count and end the line.
+ IF (SOME(B)(J:J).EQ.SOME(B)(K:K)) THEN !Well?
+ M = M + 1 !A match!
+ WRITE (MSG,6) SOME(B) !Name the block.
+ 6 FORMAT (1X,A,$) !With further output still impending,
+ EXIT JJ !And give up on this block.
+ END IF !One duplicated letter is sufficient for its downfall.
+ END DO !Next letter up.
+ END DO JJ !On to the next letter of the block.
+ END DO !On to the next block.
+ CALL HIC(M) !Show the count and end the line.
Check for duplicate blocks, knowing that the array of blocks is ordered.
- WRITE (MSG,7) !Announce.
- 7 FORMAT (21X,"Duplicated blocks:",$) !Again, leave the line dangling.
- K = 0 !No duplication found.
- B = 1 !Syncopation.
- 70 B = B + 1 !Advance one.
- IF (B.GT.N) GO TO 72 !Are we there yet?
- IF (SOME(B).NE.SOME(B - 1)) GO TO 70 !No match? Search on.
- K = K + 1 !A match is counted.
- WRITE (MSG,6) SOME(B) !Name it.
- 71 B = B + 1 !And speed through continued matching.
- IF (B.GT.N) GO TO 72 !Unless we're of the end.
- IF (SOME(B).EQ.SOME(B - 1)) GO TO 71 !Continued matching?
- GO TO 70 !Mismatch: resume the normal scan.
- 72 CALL HIC(K) !So much for that.
+ WRITE (MSG,7) !Announce.
+ 7 FORMAT (21X,"Duplicated blocks:",$) !Again, leave the line dangling.
+ K = 0 !No duplication found.
+ B = 1 !Syncopation.
+ 70 B = B + 1 !Advance one.
+ IF (B.GT.N) GO TO 72 !Are we there yet?
+ IF (SOME(B).NE.SOME(B - 1)) GO TO 70 !No match? Search on.
+ K = K + 1 !A match is counted.
+ WRITE (MSG,6) SOME(B) !Name it.
+ 71 B = B + 1 !And speed through continued matching.
+ IF (B.GT.N) GO TO 72 !Unless we're of the end.
+ IF (SOME(B).EQ.SOME(B - 1)) GO TO 71 !Continued matching?
+ GO TO 70 !Mismatch: resume the normal scan.
+ 72 CALL HIC(K) !So much for that.
Check for duplicated letters across different blocks.
- IF (ALL(SUPPLY.LE.1)) RETURN !Unless there are no duplicated letters.
- WRITE (MSG,8) !Announce.
- 8 FORMAT ("Duplicated letters on different blocks:",$) !More to come.
- K = 0 !Start another count.
- DO I = 1,26 !A well-known span.
- IF (SUPPLY(I).LE.1) CYCLE !Any duplicated letters?
+ IF (ALL(SUPPLY.LE.1)) RETURN !Unless there are no duplicated letters.
+ WRITE (MSG,8) !Announce.
+ 8 FORMAT ("Duplicated letters on different blocks:",$) !More to come.
+ K = 0 !Start another count.
+ DO I = 1,26 !A well-known span.
+ IF (SUPPLY(I).LE.1) CYCLE !Any duplicated letters?
C = CHAR(ICHAR("A") + I - 1)!Yes. This is the character.
- NH = 0 !So, how many blocks contribute?
- DO B = 1,N !Find out.
- IF (INDEX(SOME(B),C).GT.0) THEN !On this block?
- NH = NH + 1 !Yes.
- HIT(NH) = B !Keep track of which.
- END IF !So much for that block.
- END DO !On to the next.
- IF (ANY(SOME(HIT(2:NH)) .NE. SOME(HIT(1)))) THEN !All have the same collection of letters?
- K = K + 1 !No!
- WRITE (MSG,9) C !Name the heterogenously supported letter.
- 9 FORMAT (A,$) !Use the same spacing even though one character only.
- END IF !So much for that letter's search.
- END DO !On to the next letter.
- CALL HIC(K) !Finish the line with the count report.
- CONTAINS !This is used often enough.
- SUBROUTINE HIC(N) !But has very specific context.
- INTEGER N !The count.
- IF (N.LE.0) WRITE (MSG,*) "None." !Yes, we have no bananas.
- IF (N.GT.0) WRITE (MSG,*) N !Either way, end the line.
- END SUBROUTINE HIC !This service routine is not needed elsewhere.
- END SUBROUTINE PLAY !Look mummy! All the blockses are neatened!
+ NH = 0 !So, how many blocks contribute?
+ DO B = 1,N !Find out.
+ IF (INDEX(SOME(B),C).GT.0) THEN !On this block?
+ NH = NH + 1 !Yes.
+ HIT(NH) = B !Keep track of which.
+ END IF !So much for that block.
+ END DO !On to the next.
+ IF (ANY(SOME(HIT(2:NH)) .NE. SOME(HIT(1)))) THEN !All have the same collection of letters?
+ K = K + 1 !No!
+ WRITE (MSG,9) C !Name the heterogenously supported letter.
+ 9 FORMAT (A,$) !Use the same spacing even though one character only.
+ END IF !So much for that letter's search.
+ END DO !On to the next letter.
+ CALL HIC(K) !Finish the line with the count report.
+ CONTAINS !This is used often enough.
+ SUBROUTINE HIC(N) !But has very specific context.
+ INTEGER N !The count.
+ IF (N.LE.0) WRITE (MSG,*) "None." !Yes, we have no bananas.
+ IF (N.GT.0) WRITE (MSG,*) N !Either way, end the line.
+ END SUBROUTINE HIC !This service routine is not needed elsewhere.
+ END SUBROUTINE PLAY !Look mummy! All the blockses are neatened!
- LOGICAL FUNCTION CANBLOCK(WORD,N,SOME) !Can the blocks spell out the word?
+ LOGICAL FUNCTION CANBLOCK(WORD,N,SOME) !Can the blocks spell out the word?
Creates a move tree based on the letters of WORD and for each, the blocks available.
- CHARACTER*(*) WORD !The word to spell out.
- INTEGER N !The number of blocks.
- CHARACTER*(*) SOME(:) !The blocks and their letters.
- INTEGER NA,AVAIL(N) !Say not the struggle naught availeth!
- INTEGER NMOVE(LEN(WORD)) !I need a list of acceptable blocks,
- INTEGER MOVE(LEN(WORD),N) !One list for each letter of WORD.
- INTEGER I,L,S !Assistants.
- CHARACTER*1 C !The letter of the moment.
- CANBLOCK = .FALSE. !Initial pessimism.
- L = LSTNB(WORD) !Ignore trailing spaces.
- IF (L.GT.N) RETURN !Enough blocks?
- LETTER = 0 !To make rabbit stew,
- CALL LETTERCOUNT(WORD(1:L)) !First catch your rabbit.
- IF (ANY(SUPPLY .LT. LETTER)) RETURN !The larder is lacking.
- NA = N !Prepare a list.
- FORALL (I = 1:N) AVAIL(I) = I !That fingers every block.
- I = 0 !Step through the letters of the WORD.
+ CHARACTER*(*) WORD !The word to spell out.
+ INTEGER N !The number of blocks.
+ CHARACTER*(*) SOME(:) !The blocks and their letters.
+ INTEGER NA,AVAIL(N) !Say not the struggle naught availeth!
+ INTEGER NMOVE(LEN(WORD)) !I need a list of acceptable blocks,
+ INTEGER MOVE(LEN(WORD),N) !One list for each letter of WORD.
+ INTEGER I,L,S !Assistants.
+ CHARACTER*1 C !The letter of the moment.
+ CANBLOCK = .FALSE. !Initial pessimism.
+ L = LSTNB(WORD) !Ignore trailing spaces.
+ IF (L.GT.N) RETURN !Enough blocks?
+ LETTER = 0 !To make rabbit stew,
+ CALL LETTERCOUNT(WORD(1:L)) !First catch your rabbit.
+ IF (ANY(SUPPLY .LT. LETTER)) RETURN !The larder is lacking.
+ NA = N !Prepare a list.
+ FORALL (I = 1:N) AVAIL(I) = I !That fingers every block.
+ I = 0 !Step through the letters of the WORD.
Chug through the letters of the WORD.
- 1 I = I + 1 !One letter after the other.
- IF (I.GT.L) GO TO 100 !Yay! We're through!
- C = WORD(I:I) !The letter of the moment.
- NMOVE(I) = 0 !No moves known at this new level.
- DO S = 1,NA !So, look for them amongst the available slots.
- IF (INDEX(SOME(AVAIL(S)),C) .GT. 0) THEN !A hit?
- NMOVE(I) = NMOVE(I) + 1 !Yes! Count up another possible move.
- MOVE(I,NMOVE(I)) = S !Remember its slot.
- END IF !So much for that block.
- END DO !On to the next.
- 2 IF (NMOVE(I).GT.0) THEN !Have we any moves?
- S = MOVE(I,NMOVE(I)) !Yes! Recover the last found.
- NMOVE(I) = NMOVE(I) - 1 !Uncount, as it is about to be used.
- IF (S.NE.NA) CALL SWAP(AVAIL(S),AVAIL(NA)) !This block is no longer available.
- NA = NA - 1 !Shift the boundary back.
- GO TO 1 !Try the next letter!
- END IF !But if we can't find a move at that level...
- I = I - 1 !Retreat a level.
- IF (I.LE.0) RETURN !Oh dear!
- S = MOVE(I,NMOVE(I) + 1) !Undo the move that had been made at this level.
- NA = NA + 1 !And make its block is re-available.
- IF (S.NE.NA) CALL SWAP(AVAIL(S),AVAIL(NA)) !Move it back.
- GO TO 2 !See what moves remain at this level.
+ 1 I = I + 1 !One letter after the other.
+ IF (I.GT.L) GO TO 100 !Yay! We're through!
+ C = WORD(I:I) !The letter of the moment.
+ NMOVE(I) = 0 !No moves known at this new level.
+ DO S = 1,NA !So, look for them amongst the available slots.
+ IF (INDEX(SOME(AVAIL(S)),C) .GT. 0) THEN !A hit?
+ NMOVE(I) = NMOVE(I) + 1 !Yes! Count up another possible move.
+ MOVE(I,NMOVE(I)) = S !Remember its slot.
+ END IF !So much for that block.
+ END DO !On to the next.
+ 2 IF (NMOVE(I).GT.0) THEN !Have we any moves?
+ S = MOVE(I,NMOVE(I)) !Yes! Recover the last found.
+ NMOVE(I) = NMOVE(I) - 1 !Uncount, as it is about to be used.
+ IF (S.NE.NA) CALL SWAP(AVAIL(S),AVAIL(NA)) !This block is no longer available.
+ NA = NA - 1 !Shift the boundary back.
+ GO TO 1 !Try the next letter!
+ END IF !But if we can't find a move at that level...
+ I = I - 1 !Retreat a level.
+ IF (I.LE.0) RETURN !Oh dear!
+ S = MOVE(I,NMOVE(I) + 1) !Undo the move that had been made at this level.
+ NA = NA + 1 !And make its block is re-available.
+ IF (S.NE.NA) CALL SWAP(AVAIL(S),AVAIL(NA)) !Move it back.
+ GO TO 2 !See what moves remain at this level.
Completed!
- 100 CANBLOCK = .TRUE. !That's a relief.
- END FUNCTION CANBLOCK !Some revisions might have been made.
- END MODULE PLAYPEN !No sand here.
+ 100 CANBLOCK = .TRUE. !That's a relief.
+ END FUNCTION CANBLOCK !Some revisions might have been made.
+ END MODULE PLAYPEN !No sand here.
- USE PLAYPEN !Just so.
- INTEGER HAVE,TESTS !Parameters for the specified problem.
- PARAMETER (HAVE = 20, TESTS = 7) !Number of blocks, number of tests.
- CHARACTER*(MS) BLOCKS(HAVE) !Have blocks, will juggle.
- DATA BLOCKS/"BO","XK","DQ","CP","NA","GT","RE","TG","QD","FS", !The specified set
- 1 "JW","HU","VI","AN","OB","ER","FS","LY","PC","ZM"/ !Of letter blocks.
- CHARACTER*8 WORD(TESTS) !Now for the specified test words.
- LOGICAL ANS(TESTS),T,F !And the given results.
- PARAMETER (T = .TRUE., F = .FALSE.) !Enable a more compact specification.
- DATA WORD/"A","BARK","BOOK","TREAT","COMMON","SQUAD","CONFUSE"/ !So that these
- DATA ANS/ T , T , F , T , F , T , T / !Can be aligned.
+ USE PLAYPEN !Just so.
+ INTEGER HAVE,TESTS !Parameters for the specified problem.
+ PARAMETER (HAVE = 20, TESTS = 7) !Number of blocks, number of tests.
+ CHARACTER*(MS) BLOCKS(HAVE) !Have blocks, will juggle.
+ DATA BLOCKS/"BO","XK","DQ","CP","NA","GT","RE","TG","QD","FS", !The specified set
+ 1 "JW","HU","VI","AN","OB","ER","FS","LY","PC","ZM"/ !Of letter blocks.
+ CHARACTER*8 WORD(TESTS) !Now for the specified test words.
+ LOGICAL ANS(TESTS),T,F !And the given results.
+ PARAMETER (T = .TRUE., F = .FALSE.) !Enable a more compact specification.
+ DATA WORD/"A","BARK","BOOK","TREAT","COMMON","SQUAD","CONFUSE"/ !So that these
+ DATA ANS/ T , T , F , T , F , T , T / !Can be aligned.
LOGICAL YAY
INTEGER I
@@ -266,7 +266,7 @@ Completed!
1 FORMAT ("Arranges alphabet blocks, attending only to the ",
1 "letters on the blocks, and ignoring case and orientation.",/)
- CALL PLAY(HAVE,BLOCKS) !Some fun first.
+ CALL PLAY(HAVE,BLOCKS) !Some fun first.
WRITE (MSG,'(/"Now to see if some words can be spelled out.")')
DO I = 1,TESTS
diff --git a/Task/ABC-problem/FutureBasic/abc-problem-1.basic b/Task/ABC-problem/FutureBasic/abc-problem-1.basic
index e9f8bea0fc..5097485aa6 100644
--- a/Task/ABC-problem/FutureBasic/abc-problem-1.basic
+++ b/Task/ABC-problem/FutureBasic/abc-problem-1.basic
@@ -1,26 +1,30 @@
+include "NSLog.incl"
+
local fn CanBlocksSpell( w as CFStringRef ) as CFStringRef
- long i, j
- CFStringRef s = @"", t1, t2 : if fn StringIsEqual( w, @"" ) then exit fn = @"YES" else w = ucase(w)
+NSUInteger i, j
+CFStringRef s = @"", t1, t2 : if fn StringIsEqual( w, @"" ) then exit fn = @"YES" else w = ucase(w)
- mda(0) = {@"BO",@"XK",@"DQ",@"CP",@"NA",@"GT",@"RE",@"TG",@"QD",¬
- @"FS",@"JW",@"HU",@"VI",@"AN",@"OB",@"ER",@"FS",@"LY",@"PC",@"ZM"}
+mda(0) = {@"BO",@"XK",@"DQ",@"CP",@"NA",@"GT",@"RE",@"TG",@"QD",¬
+@"FS",@"JW",@"HU",@"VI",@"AN",@"OB",@"ER",@"FS",@"LY",@"PC",@"ZM"}
- for i = 0 to len(w) - 1
- for j = 0 to mda_count - 1
- t1 = mid( mda(j), 0, 1 ) : t2 = mid( mda(j), 1, 1 )
- if ( fn StringIsEqual( mid( w, i, 1 ), t1 ) ) then s = fn StringByAppendingString( s, t1 ) : mda(j) = @" " : break
- if ( fn StringIsEqual( mid( w, i, 1 ), t2 ) ) then s = fn StringByAppendingString( s, t2 ) : mda(j) = @" " : break
- next
- next
- if fn StringIsEqual( s, w ) then exit fn = @"YES"
+for i = 0 to len(w) - 1
+for j = 0 to mda_count - 1
+t1 = mid( mda(j), 0, 1 ) : t2 = mid( mda(j), 1, 1 )
+if ( fn StringIsEqual( mid( w, i, 1 ), t1 ) ) then s = fn StringByAppendingString( s, t1 ) : mda(j) = @" " : break
+if ( fn StringIsEqual( mid( w, i, 1 ), t2 ) ) then s = fn StringByAppendingString( s, t2 ) : mda(j) = @" " : break
+next
+next
+if fn StringIsEqual( s, w ) then exit fn = @"YES"
end fn = @"NO"
-long i
+NSUInteger i
CFArrayRef words
CFStringRef w
words = @[@"", @"a",@"Bark",@"BOOK",@"TrEaT",@"COMMON",@"Squad",@"conFUse",@"ABBA",@"aUtO"]
for w in words
- printf @"Can blocks spell %7s : %@", fn StringUTF8String( w ), fn CanBlocksSpell( w )
+printf @"Can blocks spell %7s : %@", fn StringUTF8String( w ), fn CanBlocksSpell( w )
next
+NSLog( @"%@", fn WindowPrintViewString( 1 ) )
+
HandleEvents
diff --git a/Task/ABC-problem/FutureBasic/abc-problem-2.basic b/Task/ABC-problem/FutureBasic/abc-problem-2.basic
index 76e7d3016f..0919078013 100644
--- a/Task/ABC-problem/FutureBasic/abc-problem-2.basic
+++ b/Task/ABC-problem/FutureBasic/abc-problem-2.basic
@@ -4,7 +4,7 @@ local fn blocks( wordList as str255 )
found = instr$( 1, blocks, ch )
select found
case > 3: mid$( blocks, found and -2, 2 ) = "__" : text , , fn ColorYellow
- rect fill ( x, y + 1, 15, 15 ), fn ColorBrown
+ rect fill ( x, y + 5.5, 15, 15 ), fn ColorBrown
case 0: text , , fn ColorLightGray
case < 4: blocks=" ,;BOXKDQCPNAGTRETGQDFSJWHUVIANOBERFSLYPCZM": x=3: y+=26: ch=""
end select
diff --git a/Task/ABC-problem/Go/abc-problem.go b/Task/ABC-problem/Go/abc-problem.go
index 0f28ef1f06..5ad1a85f59 100644
--- a/Task/ABC-problem/Go/abc-problem.go
+++ b/Task/ABC-problem/Go/abc-problem.go
@@ -1,39 +1,39 @@
package main
import (
- "fmt"
- "strings"
+ "fmt"
+ "strings"
)
func newSpeller(blocks string) func(string) bool {
- bl := strings.Fields(blocks)
- return func(word string) bool {
- return r(word, bl)
- }
+ bl := strings.Fields(blocks)
+ return func(word string) bool {
+ return r(word, bl)
+ }
}
func r(word string, bl []string) bool {
- if word == "" {
- return true
- }
- c := word[0] | 32
- for i, b := range bl {
- if c == b[0]|32 || c == b[1]|32 {
- bl[i], bl[0] = bl[0], b
- if r(word[1:], bl[1:]) == true {
- return true
- }
- bl[i], bl[0] = bl[0], bl[i]
- }
- }
- return false
+ if word == "" {
+ return true
+ }
+ c := word[0] | 32
+ for i, b := range bl {
+ if c == b[0]|32 || c == b[1]|32 {
+ bl[i], bl[0] = bl[0], b
+ if r(word[1:], bl[1:]) == true {
+ return true
+ }
+ bl[i], bl[0] = bl[0], bl[i]
+ }
+ }
+ return false
}
func main() {
- sp := newSpeller(
- "BO XK DQ CP NA GT RE TG QD FS JW HU VI AN OB ER FS LY PC ZM")
- for _, word := range []string{
- "A", "BARK", "BOOK", "TREAT", "COMMON", "SQUAD", "CONFUSE"} {
- fmt.Println(word, sp(word))
- }
+ sp := newSpeller(
+ "BO XK DQ CP NA GT RE TG QD FS JW HU VI AN OB ER FS LY PC ZM")
+ for _, word := range []string{
+ "A", "BARK", "BOOK", "TREAT", "COMMON", "SQUAD", "CONFUSE"} {
+ fmt.Println(word, sp(word))
+ }
}
diff --git a/Task/ABC-problem/Insitux/abc-problem.insitux b/Task/ABC-problem/Insitux/abc-problem.insitux
index 6dd31fc0b6..aba0f2cc01 100644
--- a/Task/ABC-problem/Insitux/abc-problem.insitux
+++ b/Task/ABC-problem/Insitux/abc-problem.insitux
@@ -7,5 +7,5 @@
(.. and (map in-block? word)))
(-> ["A" "bark" "Book" "TREAT" "Common" "squaD" "CoNFuSe"] ; Notice case insensitivity
- (map #"{%} => {can-make-word %}")
+ (map #(str % " => " (can-make-word %)))
(join ", "))
diff --git a/Task/ABC-problem/Julia/abc-problem.jl b/Task/ABC-problem/Julia/abc-problem.julia
similarity index 100%
rename from Task/ABC-problem/Julia/abc-problem.jl
rename to Task/ABC-problem/Julia/abc-problem.julia
diff --git a/Task/ABC-problem/Kotlin/abc-problem.kts b/Task/ABC-problem/Kotlin/abc-problem.kotlin
similarity index 100%
rename from Task/ABC-problem/Kotlin/abc-problem.kts
rename to Task/ABC-problem/Kotlin/abc-problem.kotlin
diff --git a/Task/ABC-problem/Lang/abc-problem.lang b/Task/ABC-problem/Lang/abc-problem.lang
index 8444fcad66..0e8e9d7054 100644
--- a/Task/ABC-problem/Lang/abc-problem.lang
+++ b/Task/ABC-problem/Lang/abc-problem.lang
@@ -1,37 +1,37 @@
fp.canMakeWord = ($word, $blocks) -> {
- if(!$word) {
- return 1
- }
-
- $word = fn.toLower($word)
-
- $c $= $word[0]
- $i = 0
- while($i < @$blocks) {
- $block $= fn.toLower($blocks[$i])
-
- if($block[0] != $c && $block[1] != $c) {
- $i += 1
-
- con.continue
- }
-
- $blocksCopy $= ^$blocks
- fn.listRemoveAt($blocksCopy, $i)
-
- if(fp.canMakeWord(fn.substring($word, 1), $blocksCopy)) {
- return 1
- }
-
- $i += 1
- }
-
- return 0
+ if(!$word) {
+ return 1
+ }
+
+ $word = fn.toLower($word)
+
+ $c $= $word[0]
+ $i = 0
+ while($i < @$blocks) {
+ $block $= fn.toLower($blocks[$i])
+
+ if($block[0] != $c && $block[1] != $c) {
+ $i += 1
+
+ con.continue
+ }
+
+ $blocksCopy $= ^$blocks
+ fn.listRemoveAt($blocksCopy, $i)
+
+ if(fp.canMakeWord(fn.substring($word, 1), $blocksCopy)) {
+ return 1
+ }
+
+ $i += 1
+ }
+
+ return 0
}
$blocks = fn.listOf(BO, XK, DQ, CP, NA, GT, RE, TG, QD, FS, JW, HU, VI, AN, OB, ER, FS, LY, PC, ZM)
$word
foreach($[word], [\e, A, BARK, BOOK, TREAT, COMMON, SQUAD, CONFUSE, Treat, cOmMoN]) {
- fn.printf(%s: %s%n, $word, fp.canMakeWord($word, $blocks))
+ fn.printf(%s: %s%n, $word, fp.canMakeWord($word, $blocks))
}
diff --git a/Task/ABC-problem/Lua/abc-problem.lua b/Task/ABC-problem/Lua/abc-problem.lua
index 9effcd462c..3e18d4914a 100644
--- a/Task/ABC-problem/Lua/abc-problem.lua
+++ b/Task/ABC-problem/Lua/abc-problem.lua
@@ -1,31 +1,31 @@
blocks = {
- {"B","O"}; {"X","K"}; {"D","Q"}; {"C","P"};
- {"N","A"}; {"G","T"}; {"R","E"}; {"T","G"};
- {"Q","D"}; {"F","S"}; {"J","W"}; {"H","U"};
- {"V","I"}; {"A","N"}; {"O","B"}; {"E","R"};
- {"F","S"}; {"L","Y"}; {"P","C"}; {"Z","M"};
- };
+ {"B","O"}; {"X","K"}; {"D","Q"}; {"C","P"};
+ {"N","A"}; {"G","T"}; {"R","E"}; {"T","G"};
+ {"Q","D"}; {"F","S"}; {"J","W"}; {"H","U"};
+ {"V","I"}; {"A","N"}; {"O","B"}; {"E","R"};
+ {"F","S"}; {"L","Y"}; {"P","C"}; {"Z","M"};
+ };
function canUse(table, letter)
- for i,v in pairs(blocks) do
- if (v[1] == letter:upper() or v[2] == letter:upper()) and table[i] then
- table[i] = false;
- return true;
- end
- end
- return false;
+ for i,v in pairs(blocks) do
+ if (v[1] == letter:upper() or v[2] == letter:upper()) and table[i] then
+ table[i] = false;
+ return true;
+ end
+ end
+ return false;
end
function canMake(Word)
- local Taken = {};
- for i,v in pairs(blocks) do
- table.insert(Taken,true);
- end
- local found = true;
- for i = 1,#Word do
- if not canUse(Taken,Word:sub(i,i)) then
- found = false;
- end
- end
- print(found)
+ local Taken = {};
+ for i,v in pairs(blocks) do
+ table.insert(Taken,true);
+ end
+ local found = true;
+ for i = 1,#Word do
+ if not canUse(Taken,Word:sub(i,i)) then
+ found = false;
+ end
+ end
+ print(found)
end
diff --git a/Task/ABC-problem/MAXScript/abc-problem-1.max b/Task/ABC-problem/MAXScript/abc-problem-1.max
index 0da376fc34..c05646f32e 100644
--- a/Task/ABC-problem/MAXScript/abc-problem-1.max
+++ b/Task/ABC-problem/MAXScript/abc-problem-1.max
@@ -1,98 +1,98 @@
-- This is the blocks array
global GlobalBlocks = #("BO","XK","DQ","CP","NA", \
- "GT","RE","TG","QD","FS", \
- "JW","HU","VI","AN","OB", \
- "ER","FS","LY","PC","ZM")
+ "GT","RE","TG","QD","FS", \
+ "JW","HU","VI","AN","OB", \
+ "ER","FS","LY","PC","ZM")
-- This function returns true if "_str" is part of "_word", false otherwise
fn occurs _str _word =
(
- if _str != undefined and _word != undefined then
- (
- matchpattern _word pattern:("*"+_str+"*")
- ) else return false
+ if _str != undefined and _word != undefined then
+ (
+ matchpattern _word pattern:("*"+_str+"*")
+ ) else return false
)
-- This is the main function
fn isWordPossible word blocks: = -- blocks is a keyword argument
(
- word = toupper word -- convert the string to upper case, to make it case insensitive
- if blocks == unsupplied do blocks = GlobalBlocks
- -- if blocks (keyword argument) is unsupplied, use the global blocks array (this is for recursion)
+ word = toupper word -- convert the string to upper case, to make it case insensitive
+ if blocks == unsupplied do blocks = GlobalBlocks
+ -- if blocks (keyword argument) is unsupplied, use the global blocks array (this is for recursion)
+
+ blocks = deepcopy blocks
- blocks = deepcopy blocks
+ local pos = 1 -- start at the beginning of the word
+ local solvedLetters = #() -- this array stores the indices of solved letters
+
+ while pos <= word.count do -- loop through every character in the word
+ (
+ local possibleBlocks = #() -- this array stores the blocks which can be used to make that letter
+ for b = 1 to Blocks.count do -- this loop finds all the possible blocks that can be used to make that letter
+ (
+ if occurs word[pos] blocks[b] do
+ (
+ appendifunique possibleBlocks b
+ )
+ )
+ if possibleBlocks.count > 0 then -- if it found any blocks
+ (
+ if possibleBlocks.count == 1 then -- if it found one block, then continue
+ (
+ appendifunique solvedLetters pos
+ deleteitem blocks possibleblocks[1]
+ pos += 1
+ )
+ else -- if it found more than one
+ (
+ for b = 1 to possibleBlocks.count do -- loop through every possible block
+ (
+ local possibleBlock = blocks[possibleBlocks[b]]
+ local blockFirstLetter = possibleBlock[1]
+ local blockSecondLetter = possibleBlock[2]
+ local matchingLetter = if blockFirstLetter == word[pos] then 1 else 2
+ -- ^ this is the index of the matching letter on the block
+
+ local notMatchingIndex = if matchingLetter == 1 then 2 else 1
+ local notMatchingLetter = possibleBlock[notMatchingIndex]
+ -- ^ this is the other letter on the block
+
+ if occurs notMatchingLetter (substring word (pos+1) -1) then
+ ( -- if the other letter occurs in the rest of the word
+ local removedBlocks = deepcopy blocks -- copy the current blocks array
+ deleteitem removedBlocks possibleBlocks[b] -- remove the item from the copied array
+
+ -- recursively check if the word is possible if that block is taken away from the array:
+ if (isWordPossible (substring word (pos+1) -1) blocks:removedBlocks) then
+ ( -- if it is, then remove the block and move to next character
+ appendifunique solvedLetters pos
+ deleteitem blocks possibleblocks[1]
+ pos += 1
+ exit
+ )
+ else
+ ( -- if it isn't and it looped through every possible block, then the word is not possible
+ if b == possibleBlocks.count do return false
+ )
+ )
+ else
+ ( -- if the other letter on this block doesn't occur in the rest of the word, then the letter is solved, continue
+ appendifunique solvedLetters pos
+ deleteitem blocks possibleblocks[b]
+ pos += 1
+ exit
+ )
+ )
+ )
+ ) else return false -- if it didn't find any blocks, then return false
+ )
- local pos = 1 -- start at the beginning of the word
- local solvedLetters = #() -- this array stores the indices of solved letters
-
- while pos <= word.count do -- loop through every character in the word
- (
- local possibleBlocks = #() -- this array stores the blocks which can be used to make that letter
- for b = 1 to Blocks.count do -- this loop finds all the possible blocks that can be used to make that letter
- (
- if occurs word[pos] blocks[b] do
- (
- appendifunique possibleBlocks b
- )
- )
- if possibleBlocks.count > 0 then -- if it found any blocks
- (
- if possibleBlocks.count == 1 then -- if it found one block, then continue
- (
- appendifunique solvedLetters pos
- deleteitem blocks possibleblocks[1]
- pos += 1
- )
- else -- if it found more than one
- (
- for b = 1 to possibleBlocks.count do -- loop through every possible block
- (
- local possibleBlock = blocks[possibleBlocks[b]]
- local blockFirstLetter = possibleBlock[1]
- local blockSecondLetter = possibleBlock[2]
- local matchingLetter = if blockFirstLetter == word[pos] then 1 else 2
- -- ^ this is the index of the matching letter on the block
-
- local notMatchingIndex = if matchingLetter == 1 then 2 else 1
- local notMatchingLetter = possibleBlock[notMatchingIndex]
- -- ^ this is the other letter on the block
-
- if occurs notMatchingLetter (substring word (pos+1) -1) then
- ( -- if the other letter occurs in the rest of the word
- local removedBlocks = deepcopy blocks -- copy the current blocks array
- deleteitem removedBlocks possibleBlocks[b] -- remove the item from the copied array
-
- -- recursively check if the word is possible if that block is taken away from the array:
- if (isWordPossible (substring word (pos+1) -1) blocks:removedBlocks) then
- ( -- if it is, then remove the block and move to next character
- appendifunique solvedLetters pos
- deleteitem blocks possibleblocks[1]
- pos += 1
- exit
- )
- else
- ( -- if it isn't and it looped through every possible block, then the word is not possible
- if b == possibleBlocks.count do return false
- )
- )
- else
- ( -- if the other letter on this block doesn't occur in the rest of the word, then the letter is solved, continue
- appendifunique solvedLetters pos
- deleteitem blocks possibleblocks[b]
- pos += 1
- exit
- )
- )
- )
- ) else return false -- if it didn't find any blocks, then return false
- )
-
- makeuniquearray solvedLetters -- make sure there are no duplicates in the solved array
- if solvedLetters.count != word.count then return false -- if number of solved letters is not equal to word length
- else
- ( -- this checks if all the solved letters are the same as the word
- check = ""
- for bit in solvedLetters do append check word[bit]
- if check == word then return true else return false
- )
+ makeuniquearray solvedLetters -- make sure there are no duplicates in the solved array
+ if solvedLetters.count != word.count then return false -- if number of solved letters is not equal to word length
+ else
+ ( -- this checks if all the solved letters are the same as the word
+ check = ""
+ for bit in solvedLetters do append check word[bit]
+ if check == word then return true else return false
+ )
)
diff --git a/Task/ABC-problem/MAXScript/abc-problem-3.max b/Task/ABC-problem/MAXScript/abc-problem-3.max
index 3aeab87682..4681f1b686 100644
--- a/Task/ABC-problem/MAXScript/abc-problem-3.max
+++ b/Task/ABC-problem/MAXScript/abc-problem-3.max
@@ -1,30 +1,30 @@
fn isWordPossible2 word =
(
- Blocks = #("BO","XK","DQ","CP","NA", \
- "GT","RE","TG","QD","FS", \
- "JW","HU","VI","AN","OB", \
- "ER","FS","LY","PC","ZM")
+ Blocks = #("BO","XK","DQ","CP","NA", \
+ "GT","RE","TG","QD","FS", \
+ "JW","HU","VI","AN","OB", \
+ "ER","FS","LY","PC","ZM")
word = toupper word
- local pos = 1
- local solvedLetters = #()
- while pos <= word.count do
- (
- for i = 1 to blocks.count do
- (
- if (matchpattern blocks[i] pattern:("*"+word[pos]+"*")) then
- (
- deleteitem blocks i
- appendifunique solvedLetters pos
- pos +=1
- exit
- )
- else if i == blocks.count do return false
- )
- )
- if solvedLetters.count == word.count then
- (
- local check = ""
- for bit in solvedLetters do append check word[bit]
- if check == word then return true else return false
- ) else return false
+ local pos = 1
+ local solvedLetters = #()
+ while pos <= word.count do
+ (
+ for i = 1 to blocks.count do
+ (
+ if (matchpattern blocks[i] pattern:("*"+word[pos]+"*")) then
+ (
+ deleteitem blocks i
+ appendifunique solvedLetters pos
+ pos +=1
+ exit
+ )
+ else if i == blocks.count do return false
+ )
+ )
+ if solvedLetters.count == word.count then
+ (
+ local check = ""
+ for bit in solvedLetters do append check word[bit]
+ if check == word then return true else return false
+ ) else return false
)
diff --git a/Task/ABC-problem/Maple/abc-problem.maple b/Task/ABC-problem/Maple/abc-problem.maple
index 0937c92c58..98312bccce 100644
--- a/Task/ABC-problem/Maple/abc-problem.maple
+++ b/Task/ABC-problem/Maple/abc-problem.maple
@@ -1,23 +1,23 @@
canSpell := proc(w)
- local blocks, i, j, word, letterFound;
- blocks := Array([["B", "O"], ["X", "K"], ["D", "Q"], ["C", "P"], ["N", "A"], ["G", "T"], ["R", "E"], ["T", "G"],
+ local blocks, i, j, word, letterFound;
+ blocks := Array([["B", "O"], ["X", "K"], ["D", "Q"], ["C", "P"], ["N", "A"], ["G", "T"], ["R", "E"], ["T", "G"],
["Q", "D"], ["F", "S"], ["J", "W"], ["H", "U"], ["V", "I"], ["A", "N"], ["O", "B"], ["E", "R"],
["F", "S"], ["L", "Y"], ["P", "C"], ["Z", "M"]]);
- word := StringTools[UpperCase](convert(w, string));
- for i to length(word) do
- letterFound := false;
- for j to numelems(blocks)/2 do
- if not letterFound and (substring(word, i) = blocks[j,1] or substring(word, i) = blocks[j,2]) then
- blocks[j,1] := undefined;
- blocks[j,2] := undefined;
- letterFound := true;
- end if;
- end do;
- if not letterFound then
- return false;
- end if;
- end do;
- return true;
+ word := StringTools[UpperCase](convert(w, string));
+ for i to length(word) do
+ letterFound := false;
+ for j to numelems(blocks)/2 do
+ if not letterFound and (substring(word, i) = blocks[j,1] or substring(word, i) = blocks[j,2]) then
+ blocks[j,1] := undefined;
+ blocks[j,2] := undefined;
+ letterFound := true;
+ end if;
+ end do;
+ if not letterFound then
+ return false;
+ end if;
+ end do;
+ return true;
end proc:
seq(printf("%a: %a\n", i, canSpell(i)), i in [a, Bark, bOok, treat, COMMON, squad, confuse]);
diff --git a/Task/ABC-problem/OCaml/abc-problem.ml b/Task/ABC-problem/OCaml/abc-problem.ocaml
similarity index 100%
rename from Task/ABC-problem/OCaml/abc-problem.ml
rename to Task/ABC-problem/OCaml/abc-problem.ocaml
diff --git a/Task/ABC-problem/Pluto/abc-problem.pluto b/Task/ABC-problem/Pluto/abc-problem.pluto
deleted file mode 100644
index 243a9a5f79..0000000000
--- a/Task/ABC-problem/Pluto/abc-problem.pluto
+++ /dev/null
@@ -1,25 +0,0 @@
-function r(word, bl)
- if word == "" then return true end
- local c = word:byte(1) | 32
- for i = 1, #bl do
- local b = bl[i]
- if c == b:byte(1) | 32 or c == b:byte(2) | 32 then
- bl[i] = bl[1]
- bl[1] = b
- if r(word:sub(2), bl:slice(2)) then return true end
- bl[1], bl[i] = bl[i], bl[1]
- end
- end
- return false
-end
-
-local function new_speller(blocks)
- local bl = blocks:split(" ")
- return |word| -> r(word, bl)
-end
-
-local sp = new_speller("BO XK DQ CP NA GT RE TG QD FS JW HU VI AN OB ER FS LY PC ZM")
-local words = {"A", "BARK", "BOOK", "TREAT", "COMMON", "SQUAD", "CONFUSE"}
-for words as word do
- print(string.format("%-7s %s", word, sp(word)))
-end
diff --git a/Task/ABC-problem/PowerBASIC/abc-problem.basic b/Task/ABC-problem/PowerBASIC/abc-problem.basic
index 4a29562c45..ff524d89eb 100644
--- a/Task/ABC-problem/PowerBASIC/abc-problem.basic
+++ b/Task/ABC-problem/PowerBASIC/abc-problem.basic
@@ -20,7 +20,7 @@
'1.Once a letter on a block is used that block cannot be used again
'2.The function should be case-insensitive
'3. Show your output on this page for the following words:
-' A, BARK, BOOK, TREAT, COMMON, SQUAD, CONFUSE
+' A, BARK, BOOK, TREAT, COMMON, SQUAD, CONFUSE
'-----------------------------------------------------------------------------
' G l o b a l C o n s t a n t s
'
diff --git a/Task/ABC-problem/PowerShell/abc-problem.ps1 b/Task/ABC-problem/PowerShell/abc-problem.ps1
deleted file mode 100644
index 3c8a1239a4..0000000000
--- a/Task/ABC-problem/PowerShell/abc-problem.ps1
+++ /dev/null
@@ -1,117 +0,0 @@
-<#
-.Synopsis
- ABC Problem
-.DESCRIPTION
- You are given a collection of ABC blocks. Just like the ones you had when you were a kid.
- There are twenty blocks with two letters on each block. You are guaranteed to have a
- complete alphabet amongst all sides of the blocks
- blocks = "BO","XK","DQ","CP","NA","GT","RE","TG","QD","FS","JW","HU","VI","AN","OB","ER","FS","LY","PC","ZM"
- The goal of this task is to write a function that takes a string and can determine whether
- you can spell the word with the given collection of blocks.
-
- The rules are simple:
- 1.Once a letter on a block is used that block cannot be used again
- 2.The function should be case-insensitive
- 3. Show your output on this page for the following words:
- >>> can_make_word("A")
- True
- >>> can_make_word("BARK")
- True
- >>> can_make_word("BOOK")
- False
- >>> can_make_word("TREAT")
- True
- >>> can_make_word("COMMON")
- False
- >>> can_make_word("SQUAD")
- True
- >>> can_make_word("CONFUSE")
- True
-
- Using the examples below you can either see just the value or
- status and the values using the verbose switch
-
-.EXAMPLE
- test-blocks -testword confuse
-
-.EXAMPLE
- test-blocks -testword confuse -verbose
-
-#>
-
-function test-blocks
-{
- [CmdletBinding()]
- # [OutputType([int])]
- Param
- (
- # word to test against blocks
- [Parameter(Mandatory = $true,
- ValueFromPipelineByPropertyName = $true)]
- $testword
-
- )
-
- $word = $testword
-
- #define array of blocks
- [System.Collections.ArrayList]$blockarray = "BO", "XK", "DQ", "CP", "NA", "GT", "RE", "TG", "QD", "FS", "JW", "HU", "VI", "AN", "OB", "ER", "FS", "LY", "PC", "ZM"
-
- #send word to chararray
- $chararray = $word.ToCharArray()
- $chars = $chararray
-
- #get the character count
- $charscount = $chars.count
-
- #get the initial count of the blocks
- $blockcount = $blockarray.Count
-
- #find out how many blocks should be left from the difference
- #of the blocks and characters in the word - 1 letter/1 block
- $correctblockcount = $blockcount - $charscount
-
- #loop through the characters in the word
- foreach ($char in $chars)
- {
-
- #loop through the blocks
- foreach ($block in $blockarray)
- {
-
- #check the current character against each letter on the current block
- #and break if found so the array can reload
- if ($char -in $block[0] -or $char -in $block[1])
- {
-
- write-verbose "match for letter - $char - removing block $block"
- $blockarray.Remove($block)
- break
-
- }
-
- }
-
- }
- #get final count of blocks left in array to determine if the word was
- #correctly made
- $finalblockcount = $blockarray.count
- if ($finalblockcount -ne $correctblockcount)
- {
- write-verbose "$word : $false "
- return $false
- }
- else
- {
- write-verbose "$word : $true "
- return $true
- }
-
-}
-
-#loop all the words and pass them to the function
-$wordlist = "a", "bark", "book", "treat", "common", "squad", "confuse"
-foreach ($word in $wordlist)
-{
- test-blocks -testword $word -Verbose
-}
diff --git a/Task/ABC-problem/PowerShell/abc-problem.psh b/Task/ABC-problem/PowerShell/abc-problem.psh
new file mode 100644
index 0000000000..9fd301dcac
--- /dev/null
+++ b/Task/ABC-problem/PowerShell/abc-problem.psh
@@ -0,0 +1,117 @@
+<#
+.Synopsis
+ ABC Problem
+.DESCRIPTION
+ You are given a collection of ABC blocks. Just like the ones you had when you were a kid.
+ There are twenty blocks with two letters on each block. You are guaranteed to have a
+ complete alphabet amongst all sides of the blocks
+ blocks = "BO","XK","DQ","CP","NA","GT","RE","TG","QD","FS","JW","HU","VI","AN","OB","ER","FS","LY","PC","ZM"
+ The goal of this task is to write a function that takes a string and can determine whether
+ you can spell the word with the given collection of blocks.
+
+ The rules are simple:
+ 1.Once a letter on a block is used that block cannot be used again
+ 2.The function should be case-insensitive
+ 3. Show your output on this page for the following words:
+ >>> can_make_word("A")
+ True
+ >>> can_make_word("BARK")
+ True
+ >>> can_make_word("BOOK")
+ False
+ >>> can_make_word("TREAT")
+ True
+ >>> can_make_word("COMMON")
+ False
+ >>> can_make_word("SQUAD")
+ True
+ >>> can_make_word("CONFUSE")
+ True
+
+ Using the examples below you can either see just the value or
+ status and the values using the verbose switch
+
+.EXAMPLE
+ test-blocks -testword confuse
+
+.EXAMPLE
+ test-blocks -testword confuse -verbose
+
+#>
+
+function test-blocks
+{
+ [CmdletBinding()]
+ # [OutputType([int])]
+ Param
+ (
+ # word to test against blocks
+ [Parameter(Mandatory = $true,
+ ValueFromPipelineByPropertyName = $true)]
+ $testword
+
+ )
+
+ $word = $testword
+
+ #define array of blocks
+ [System.Collections.ArrayList]$blockarray = "BO", "XK", "DQ", "CP", "NA", "GT", "RE", "TG", "QD", "FS", "JW", "HU", "VI", "AN", "OB", "ER", "FS", "LY", "PC", "ZM"
+
+ #send word to chararray
+ $chararray = $word.ToCharArray()
+ $chars = $chararray
+
+ #get the character count
+ $charscount = $chars.count
+
+ #get the initial count of the blocks
+ $blockcount = $blockarray.Count
+
+ #find out how many blocks should be left from the difference
+ #of the blocks and characters in the word - 1 letter/1 block
+ $correctblockcount = $blockcount - $charscount
+
+ #loop through the characters in the word
+ foreach ($char in $chars)
+ {
+
+ #loop through the blocks
+ foreach ($block in $blockarray)
+ {
+
+ #check the current character against each letter on the current block
+ #and break if found so the array can reload
+ if ($char -in $block[0] -or $char -in $block[1])
+ {
+
+ write-verbose "match for letter - $char - removing block $block"
+ $blockarray.Remove($block)
+ break
+
+ }
+
+ }
+
+ }
+ #get final count of blocks left in array to determine if the word was
+ #correctly made
+ $finalblockcount = $blockarray.count
+ if ($finalblockcount -ne $correctblockcount)
+ {
+ write-verbose "$word : $false "
+ return $false
+ }
+ else
+ {
+ write-verbose "$word : $true "
+ return $true
+ }
+
+}
+
+#loop all the words and pass them to the function
+$wordlist = "a", "bark", "book", "treat", "common", "squad", "confuse"
+foreach ($word in $wordlist)
+{
+ test-blocks -testword $word -Verbose
+}
diff --git a/Task/ABC-problem/Prolog/abc-problem-1.pro b/Task/ABC-problem/Prolog/abc-problem-1.pro
index 90c7559163..99d543c21b 100644
--- a/Task/ABC-problem/Prolog/abc-problem-1.pro
+++ b/Task/ABC-problem/Prolog/abc-problem-1.pro
@@ -1,22 +1,22 @@
abc_problem :-
- maplist(abc_problem, ['', 'A', bark, bOOk, treAT, 'COmmon', sQuaD, 'CONFUSE']).
+ maplist(abc_problem, ['', 'A', bark, bOOk, treAT, 'COmmon', sQuaD, 'CONFUSE']).
abc_problem(Word) :-
- L = [[b,o],[x,k],[d,q],[c,p],[n,a],[g,t],[r,e],[t,g],[q,d],[f,s],
- [j,w],[h,u],[v,i],[a,n],[o,b],[e,r],[f,s],[l,y],[p,c],[z,m]],
+ L = [[b,o],[x,k],[d,q],[c,p],[n,a],[g,t],[r,e],[t,g],[q,d],[f,s],
+ [j,w],[h,u],[v,i],[a,n],[o,b],[e,r],[f,s],[l,y],[p,c],[z,m]],
- ( abc_problem(L, Word)
- -> format('~w OK~n', [Word])
- ; format('~w KO~n', [Word])).
+ ( abc_problem(L, Word)
+ -> format('~w OK~n', [Word])
+ ; format('~w KO~n', [Word])).
abc_problem(L, Word) :-
- atom_chars(Word, C_Words),
- maplist(downcase_atom, C_Words, D_Words),
- can_makeword(L, D_Words).
+ atom_chars(Word, C_Words),
+ maplist(downcase_atom, C_Words, D_Words),
+ can_makeword(L, D_Words).
can_makeword(_L, []).
can_makeword(L, [H | T]) :-
- ( select([H, _], L, L1); select([_, H], L, L1)),
- can_makeword(L1, T).
+ ( select([H, _], L, L1); select([_, H], L, L1)),
+ can_makeword(L1, T).
diff --git a/Task/ABC-problem/Rebol/abc-problem.rebol b/Task/ABC-problem/Rebol/abc-problem.rebol
deleted file mode 100644
index fe63851d8f..0000000000
--- a/Task/ABC-problem/Rebol/abc-problem.rebol
+++ /dev/null
@@ -1,38 +0,0 @@
-Rebol [
- title: "Rosetta code: ABC problem"
- file: %ABC_problem.r3
- url: https://rosettacode.org/wiki/ABC_problem
- needs: 3.10.0 ;; or something like that
- note: "Based on Red language solution"
-]
-;; Define the function 'test' that takes a string argument 's'
-test: function [s [string!]][
- ;; Make a copy of the input string to work on (avoid mutation of original)
- s: copy s
- ;; Initialize 'p' as a copy of a specific character sequence
- p: copy "BOXKDQCPNAGTRETGQDFSJWHUVIANOBERFSLYPCZM"
- ;; Start an infinite loop
- forever [
- ;; If 's' is empty, return true (all characters matched/removed)
- if 0 = length? s [return true]
- ;; If 'p' is at the tail (all pairs tried), return false (no match)
- if tail? p [return false]
- ;; Create a parsing rule of the current two characters in 'p'
- rule: reduce [first p '| second p]
- ;; Try to parse 's' according to the current rule:
- ;; If parsing succeeds, remove that rule from the string
- p: either parse s [to rule remove rule to end ] [
- ;; If parsing succeeded, remove the current pair from 'p'
- head remove/part p 2
- ][
- ;; If parsing failed, skip the current pair in 'p' (move to next pair)
- skip p 2
- ]
- ]
-]
-
-;; Test the 'test' function on each word split from a string (split by space).
-foreach word split {A bark book TrEAT COmMoN SQUAD conFUsE} space [
- ;; Print the word and its result from 'test'
- printf [8 ": "] reduce [word test word]
-]
diff --git a/Task/ABC-problem/Rust/abc-problem.rs b/Task/ABC-problem/Rust/abc-problem.rust
similarity index 100%
rename from Task/ABC-problem/Rust/abc-problem.rs
rename to Task/ABC-problem/Rust/abc-problem.rust
diff --git a/Task/ABC-problem/SNOBOL4/abc-problem.sno b/Task/ABC-problem/SNOBOL4/abc-problem.sno
index 0ed5f49e73..b8cb880ab1 100644
--- a/Task/ABC-problem/SNOBOL4/abc-problem.sno
+++ b/Task/ABC-problem/SNOBOL4/abc-problem.sno
@@ -4,46 +4,46 @@
* Read in blocks to construct the blocks string
in1
- line = replace(input,&lcase,&ucase) :f(in1end)
- line ? breakx(' ') . pre ' ' rem . post :f(in1end)
- blocks = blocks "," pre post
- :(in1)
+ line = replace(input,&lcase,&ucase) :f(in1end)
+ line ? breakx(' ') . pre ' ' rem . post :f(in1end)
+ blocks = blocks "," pre post
+ :(in1)
in1end
* Function to determine if a word can be constructed with the given blocks
- define('abc(blocks,word)s,i,let')
- abcpat = (breakx(',') ',') . pre (*let len(1) | len(1) *let) rem . post
- :(abc_end)
+ define('abc(blocks,word)s,i,let')
+ abcpat = (breakx(',') ',') . pre (*let len(1) | len(1) *let) rem . post
+ :(abc_end)
abc
- eq(size(word),0) :s(abc3)
- s = replace(word,&lcase,&ucase)
- i = 0
+ eq(size(word),0) :s(abc3)
+ s = replace(word,&lcase,&ucase)
+ i = 0
abc2
- i = lt(i,size(s)) i + 1 :f(abc4)
- let = substr(s,i,1)
- blocks ? abcpat = pre post :f(abc3)
- :(abc2)
+ i = lt(i,size(s)) i + 1 :f(abc4)
+ let = substr(s,i,1)
+ blocks ? abcpat = pre post :f(abc3)
+ :(abc2)
abc3
- abc = 'False' :(abc5)
+ abc = 'False' :(abc5)
abc4
- abc = 'True' :(abc5)
+ abc = 'True' :(abc5)
abc5
- output = lpad('can_make_word("' word '"): ',26) abc
- abc = ""
- :(return)
+ output = lpad('can_make_word("' word '"): ',26) abc
+ abc = ""
+ :(return)
abc_end
* Check words
-* output = abc(blocks,"")
-* output = abc(blocks," ")
- output = abc(blocks,'A')
- output = abc(blocks,'bark')
- output = abc(blocks,'BOOK')
- output = abc(blocks,'TrEAT')
- output = abc(blocks,'COMMON')
- output = abc(blocks,'SQUAD')
- output = abc(blocks,'CONFUSE')
-
+* output = abc(blocks,"")
+* output = abc(blocks," ")
+ output = abc(blocks,'A')
+ output = abc(blocks,'bark')
+ output = abc(blocks,'BOOK')
+ output = abc(blocks,'TrEAT')
+ output = abc(blocks,'COMMON')
+ output = abc(blocks,'SQUAD')
+ output = abc(blocks,'CONFUSE')
+
* The blocks are entered below, after the following END label
END
b o
diff --git a/Task/ABC-problem/Scheme/abc-problem.scm b/Task/ABC-problem/Scheme/abc-problem.ss
similarity index 100%
rename from Task/ABC-problem/Scheme/abc-problem.scm
rename to Task/ABC-problem/Scheme/abc-problem.ss
diff --git a/Task/ABC-problem/SenseTalk/abc-problem-1.sensetalk b/Task/ABC-problem/SenseTalk/abc-problem-1.sensetalk
index ca1dcb76f7..abbfa87d9a 100644
--- a/Task/ABC-problem/SenseTalk/abc-problem-1.sensetalk
+++ b/Task/ABC-problem/SenseTalk/abc-problem-1.sensetalk
@@ -1,41 +1,41 @@
function CanMakeWord word
- put [
- ("B", "O"),
- ("X", "K"),
- ("D", "Q"),
- ("C", "P"),
- ("N", "A"),
- ("G", "T"),
- ("R", "E"),
- ("T", "G"),
- ("Q", "D"),
- ("F", "S"),
- ("J", "W"),
- ("H", "U"),
- ("V", "I"),
- ("A", "N"),
- ("O", "B"),
- ("E", "R"),
- ("F", "S"),
- ("L", "Y"),
- ("P", "C"),
- ("Z", "M")
- ] into blocks
-
- repeat with each character letter of word
- put False into found
- repeat with each item block of blocks by reference
- if item 1 of block is letter ignoring case or item 2 of block is letter ignoring case
- delete block
- put True into found
- exit repeat
- end if
- end repeat
- if found is False
- return False
- end if
- end repeat
- return True
-
+ put [
+ ("B", "O"),
+ ("X", "K"),
+ ("D", "Q"),
+ ("C", "P"),
+ ("N", "A"),
+ ("G", "T"),
+ ("R", "E"),
+ ("T", "G"),
+ ("Q", "D"),
+ ("F", "S"),
+ ("J", "W"),
+ ("H", "U"),
+ ("V", "I"),
+ ("A", "N"),
+ ("O", "B"),
+ ("E", "R"),
+ ("F", "S"),
+ ("L", "Y"),
+ ("P", "C"),
+ ("Z", "M")
+ ] into blocks
+
+ repeat with each character letter of word
+ put False into found
+ repeat with each item block of blocks by reference
+ if item 1 of block is letter ignoring case or item 2 of block is letter ignoring case
+ delete block
+ put True into found
+ exit repeat
+ end if
+ end repeat
+ if found is False
+ return False
+ end if
+ end repeat
+ return True
+
end CanMakeWord
diff --git a/Task/ABC-problem/SenseTalk/abc-problem-2.sensetalk b/Task/ABC-problem/SenseTalk/abc-problem-2.sensetalk
index 7bbcd3910d..8949df06a2 100644
--- a/Task/ABC-problem/SenseTalk/abc-problem-2.sensetalk
+++ b/Task/ABC-problem/SenseTalk/abc-problem-2.sensetalk
@@ -1,11 +1,11 @@
repeat with each item word in [
- "A",
- "BARK",
- "BOOK",
- "TREAT",
- "COMMON",
- "SQUAD",
- "CONFUSE"
+ "A",
+ "BARK",
+ "BOOK",
+ "TREAT",
+ "COMMON",
+ "SQUAD",
+ "CONFUSE"
]
- put CanMakeWord(word)
+ put CanMakeWord(word)
end repeat
diff --git a/Task/ABC-problem/SequenceL/abc-problem-1.sequencel b/Task/ABC-problem/SequenceL/abc-problem-1.sequencel
index eabaaedc4f..57f03ba268 100644
--- a/Task/ABC-problem/SequenceL/abc-problem-1.sequencel
+++ b/Task/ABC-problem/SequenceL/abc-problem-1.sequencel
@@ -2,28 +2,28 @@ import ;
import ;
main(args(2)) :=
- let
- result[i] := args[i] ++ ": " ++ boolToString(can_make_word(args[i], InitBlocks));
- in
- delimit(result, '\n');
+ let
+ result[i] := args[i] ++ ": " ++ boolToString(can_make_word(args[i], InitBlocks));
+ in
+ delimit(result, '\n');
InitBlocks := ["BO", "XK", "DQ", "CP", "NA", "GT", "RE", "TG", "QD", "FS", "JW", "HU", "VI", "AN", "OB", "ER", "FS", "LY", "PC", "ZM"];
-
+
can_make_word(word(1), blocks(2)) :=
- let
- choices[i] := i when some(blocks[i] = toUpper(head(word)));
- blocksAfterChoice[i] := blocks[(1 ... (choices[i] - 1)) ++ ((choices[i] + 1) ... size(blocks))];
- in
- true when size(word) = 0
- else
- false when size(choices) = 0
- else
- some(can_make_word(tail(word), blocksAfterChoice));
-
+ let
+ choices[i] := i when some(blocks[i] = toUpper(head(word)));
+ blocksAfterChoice[i] := blocks[(1 ... (choices[i] - 1)) ++ ((choices[i] + 1) ... size(blocks))];
+ in
+ true when size(word) = 0
+ else
+ false when size(choices) = 0
+ else
+ some(can_make_word(tail(word), blocksAfterChoice));
+
toUpper(letter(0)) :=
- let
- ascii := asciiToInt(letter);
- in
- letter when ascii >= 65 and ascii <= 90
- else
- intToAscii(ascii - 32);
+ let
+ ascii := asciiToInt(letter);
+ in
+ letter when ascii >= 65 and ascii <= 90
+ else
+ intToAscii(ascii - 32);
diff --git a/Task/ABC-problem/SequenceL/abc-problem-2.sequencel b/Task/ABC-problem/SequenceL/abc-problem-2.sequencel
index 11b30e8581..a82214ee48 100644
--- a/Task/ABC-problem/SequenceL/abc-problem-2.sequencel
+++ b/Task/ABC-problem/SequenceL/abc-problem-2.sequencel
@@ -3,29 +3,29 @@ import ;
import ;
main(args(2)) :=
- let
- result[i] := args[i] ++ ": " ++ boolToString(can_make_word(args[i], InitBlocks));
- in
- delimit(result, '\n');
+ let
+ result[i] := args[i] ++ ": " ++ boolToString(can_make_word(args[i], InitBlocks));
+ in
+ delimit(result, '\n');
InitBlocks := "BO XK DQ CP NA GT RE TG QD FS JW HU VI AN OB ER FS LY PC ZM";
-
+
can_make_word(word(1), blocks(1)) :=
- let
- regEx := "(\\a" ++ [toUpper(head(word))] ++ "|" ++ [toUpper(head(word))] ++ "\\a)";
-
- newBlocks := replaceFirst(blocks, regEx, "");
- in
- true when size(word) = 0
- else
- false when size(newBlocks) = size(blocks)
- else
- can_make_word(tail(word), newBlocks);
+ let
+ regEx := "(\\a" ++ [toUpper(head(word))] ++ "|" ++ [toUpper(head(word))] ++ "\\a)";
+
+ newBlocks := replaceFirst(blocks, regEx, "");
+ in
+ true when size(word) = 0
+ else
+ false when size(newBlocks) = size(blocks)
+ else
+ can_make_word(tail(word), newBlocks);
toUpper(letter(0)) :=
- let
- ascii := asciiToInt(letter);
- in
- letter when ascii >= 65 and ascii <= 90
- else
- intToAscii(ascii - 32);
+ let
+ ascii := asciiToInt(letter);
+ in
+ letter when ascii >= 65 and ascii <= 90
+ else
+ intToAscii(ascii - 32);
diff --git a/Task/ABC-problem/Smalltalk/abc-problem.st b/Task/ABC-problem/Smalltalk/abc-problem.st
index 3b23286677..d6a10f2fbe 100644
--- a/Task/ABC-problem/Smalltalk/abc-problem.st
+++ b/Task/ABC-problem/Smalltalk/abc-problem.st
@@ -1,21 +1,21 @@
ABCPuzzle>>test
- #('A' 'BARK' 'BOOK' 'TreaT' 'COMMON' 'sQUAD' 'CONFuSE') do: [ :each |
- Transcript crShow: each, ': ', (self solveFor: each) asString ]
+ #('A' 'BARK' 'BOOK' 'TreaT' 'COMMON' 'sQUAD' 'CONFuSE') do: [ :each |
+ Transcript crShow: each, ': ', (self solveFor: each) asString ]
ABCPuzzle>>solveFor: letters
- | blocks |
- blocks := #('BO' 'XK' 'DQ' 'CP' 'NA' 'GT' 'RE' 'TG' 'QD' 'FS' 'JW' 'HU' 'VI' 'AN' 'OB' 'ER' 'FS' 'LY' 'PC' 'ZM').
- ^ self solveFor: letters asUppercase with: blocks asOrderedCollection
+ | blocks |
+ blocks := #('BO' 'XK' 'DQ' 'CP' 'NA' 'GT' 'RE' 'TG' 'QD' 'FS' 'JW' 'HU' 'VI' 'AN' 'OB' 'ER' 'FS' 'LY' 'PC' 'ZM').
+ ^ self solveFor: letters asUppercase with: blocks asOrderedCollection
ABCPuzzle>>solveFor: letters with: blocks
- | l ldash matches |
- letters isEmpty ifTrue: [ ^ true ].
- l := letters first.
- ldash := letters allButFirst.
- matches := blocks select: [ :b | b includes: l ].
- matches isEmpty ifTrue: [ ^ false ].
- matches do: [ :m | | bdash |
- bdash := blocks copy.
- bdash remove: m.
- (self solveFor: ldash with: bdash) ifTrue: [ ^ true ] ].
- ^ false
+ | l ldash matches |
+ letters isEmpty ifTrue: [ ^ true ].
+ l := letters first.
+ ldash := letters allButFirst.
+ matches := blocks select: [ :b | b includes: l ].
+ matches isEmpty ifTrue: [ ^ false ].
+ matches do: [ :m | | bdash |
+ bdash := blocks copy.
+ bdash remove: m.
+ (self solveFor: ldash with: bdash) ifTrue: [ ^ true ] ].
+ ^ false
diff --git a/Task/ABC-problem/Swift/abc-problem-2.swift b/Task/ABC-problem/Swift/abc-problem-2.swift
index be73620266..026a22d936 100644
--- a/Task/ABC-problem/Swift/abc-problem-2.swift
+++ b/Task/ABC-problem/Swift/abc-problem-2.swift
@@ -1,20 +1,20 @@
import Swift
func canMake(word: String) -> Bool {
- var blocks = [
- "BO", "XK", "DQ", "CP", "NA", "GT", "RE", "TG", "QD", "FS",
- "JW", "HU", "VI", "AN", "OB", "ER", "FS", "LY", "PC", "ZM"
- ]
-
- for letter in word.uppercased().characters {
- guard let index = blocks.index(where: { $0.characters.contains(letter) }) else {
- return false
- }
-
- blocks.remove(at: index)
- }
-
- return true
+ var blocks = [
+ "BO", "XK", "DQ", "CP", "NA", "GT", "RE", "TG", "QD", "FS",
+ "JW", "HU", "VI", "AN", "OB", "ER", "FS", "LY", "PC", "ZM"
+ ]
+
+ for letter in word.uppercased().characters {
+ guard let index = blocks.index(where: { $0.characters.contains(letter) }) else {
+ return false
+ }
+
+ blocks.remove(at: index)
+ }
+
+ return true
}
let words = ["a", "bARK", "boOK", "TreAt", "CoMmon", "SquAd", "CONFUse"]
diff --git a/Task/ABC-problem/Tcl/abc-problem.tcl b/Task/ABC-problem/Tcl/abc-problem.tcl
index 7dab1aa0e6..d3f4b8f321 100644
--- a/Task/ABC-problem/Tcl/abc-problem.tcl
+++ b/Task/ABC-problem/Tcl/abc-problem.tcl
@@ -2,16 +2,16 @@ package require Tcl 8.6
proc abc {word {blocks {BO XK DQ CP NA GT RE TG QD FS JW HU VI AN OB ER FS LY PC ZM}}} {
set abc {{letters blocks abc} {
- set rest [lassign $letters ch]
- set i 0
- foreach blk $blocks {
- if {$ch in $blk && (![llength $rest]
- || [apply $abc $rest [lreplace $blocks $i $i] $abc])} {
- return true
- }
- incr i
- }
- return false
+ set rest [lassign $letters ch]
+ set i 0
+ foreach blk $blocks {
+ if {$ch in $blk && (![llength $rest]
+ || [apply $abc $rest [lreplace $blocks $i $i] $abc])} {
+ return true
+ }
+ incr i
+ }
+ return false
}}
return [apply $abc [split $word ""] [lmap b $blocks {split $b ""}] $abc]
}
diff --git a/Task/ABC-problem/Transd/abc-problem.transd b/Task/ABC-problem/Transd/abc-problem.transd
index b0bf878924..3ac73650a8 100644
--- a/Task/ABC-problem/Transd/abc-problem.transd
+++ b/Task/ABC-problem/Transd/abc-problem.transd
@@ -2,7 +2,7 @@
MainModule: {
blocks: ["BO", "XK", "DQ", "CP", "NA", "GT", "RE", "TG", "QD", "FS",
- "JW", "HU", "VI", "AN", "OB", "ER", "FS", "LY", "PC", "ZM"],
+ "JW", "HU", "VI", "AN", "OB", "ER", "FS", "LY", "PC", "ZM"],
words: ["A","BARK","BOOK","TREAT","COMMON","SQUAD","CONFUSE"],
testMake: Lambda Bool>(λ
@@ -16,7 +16,7 @@ MainModule: {
)
(ret false)
),
- _start: (lambda
+ _start: (lambda
(for word in words do
(lout :boolalpha word " : "
(exec testMake word blocks))
diff --git a/Task/ABC-problem/Uiua/abc-problem.uiua b/Task/ABC-problem/Uiua/abc-problem.uiua
deleted file mode 100644
index 244ecba154..0000000000
--- a/Task/ABC-problem/Uiua/abc-problem.uiua
+++ /dev/null
@@ -1,4 +0,0 @@
-s ← "BOXKDQCPNAGTRETGQDFSJWHUVIANOBERFSLYPCZM"
-Flt ← ⊂⊙↘₂⊃↙↘-⊸◿2⊸˜⨂ # remove block holding letter
-{"A" "BARK" "BOOK" "TREAT" "COMMON" "SQUAD" "CONFUSE"}
-≡⊂⟜⍚(◌◌⍥(⍥(⊙⊙⋅0)⊸≍⟜˜Flt⊙°⊂)◡⋅⧻ s ⊙1)
diff --git a/Task/ABC-problem/Ultimate++/abc-problem.ultimate++ b/Task/ABC-problem/Ultimate++/abc-problem.ultimate++
index fbfcebdcc0..13a35283ad 100644
--- a/Task/ABC-problem/Ultimate++/abc-problem.ultimate++
+++ b/Task/ABC-problem/Ultimate++/abc-problem.ultimate++
@@ -19,84 +19,84 @@ using namespace Upp;
int can_make_words(char **b, char *word)
{
- int i, ret = 0, c = toupper(*word);
-
- if (!c) return 1;
- if (!b[0]) return 0;
-
- for (i = 0; b[i] && !ret; i++) {
- if (b[i][0] != c && b[i][1] != c) continue;
- Swap(b[i], b[0]); // It needs to be Swap and not SWAP
- ret = can_make_words(b + 1, word + 1);
- Swap(b[i], b[0]); // It needs to be Swap instead of SWAP
- }
- return ret;
+ int i, ret = 0, c = toupper(*word);
+
+ if (!c) return 1;
+ if (!b[0]) return 0;
+
+ for (i = 0; b[i] && !ret; i++) {
+ if (b[i][0] != c && b[i][1] != c) continue;
+ Swap(b[i], b[0]); // It needs to be Swap and not SWAP
+ ret = can_make_words(b + 1, word + 1);
+ Swap(b[i], b[0]); // It needs to be Swap instead of SWAP
+ }
+ return ret;
}
//C++
bool can_create_word(const std::string& w, const list_t& vals) {
- std::set used;
- while (used.size() < w.size()) {
- const char c = toupper(w[used.size()]);
- uint32_t x = used.size();
- for (uint32_t i = 0, ii = vals.size(); i < ii; ++i) {
- if (used.find(i) == used.end()) {
- if (toupper(vals[i].first) == c || toupper(vals[i].second) == c) {
- used.insert(i);
- break;
- }
- }
- }
- if (x == used.size()) break;
- }
- return used.size() == w.size();
+ std::set used;
+ while (used.size() < w.size()) {
+ const char c = toupper(w[used.size()]);
+ uint32_t x = used.size();
+ for (uint32_t i = 0, ii = vals.size(); i < ii; ++i) {
+ if (used.find(i) == used.end()) {
+ if (toupper(vals[i].first) == c || toupper(vals[i].second) == c) {
+ used.insert(i);
+ break;
+ }
+ }
+ }
+ if (x == used.size()) break;
+ }
+ return used.size() == w.size();
}
// U++
CONSOLE_APP_MAIN
{
- // C
- char* blocks[] =
- {
- (char*)"BO", (char*)"XK", (char*)"DQ", (char*)"CP",
- (char*)"NA", (char*)"GT", (char*)"RE", (char*)"TG",
- (char*)"QD", (char*)"FS", (char*)"JW", (char*)"HU",
- (char*)"VI", (char*)"AN", (char*)"OB", (char*)"ER",
- (char*)"FS", (char*)"LY", (char*)"PC", (char*)"ZM", 0
- };
+ // C
+ char* blocks[] =
+ {
+ (char*)"BO", (char*)"XK", (char*)"DQ", (char*)"CP",
+ (char*)"NA", (char*)"GT", (char*)"RE", (char*)"TG",
+ (char*)"QD", (char*)"FS", (char*)"JW", (char*)"HU",
+ (char*)"VI", (char*)"AN", (char*)"OB", (char*)"ER",
+ (char*)"FS", (char*)"LY", (char*)"PC", (char*)"ZM", 0
+ };
- char *words[] =
- {
- (char*)"", (char*)"A", (char*)"BARK", (char*)"BOOK",
- (char*)"TREAT", (char*)"COMMON", (char*)"SQUAD", (char*)"Confuse", 0
- };
+ char *words[] =
+ {
+ (char*)"", (char*)"A", (char*)"BARK", (char*)"BOOK",
+ (char*)"TREAT", (char*)"COMMON", (char*)"SQUAD", (char*)"Confuse", 0
+ };
+
+ char **w;
+ for (w = words; *w; w++)
+ printf("%s\t%d\n", *w, can_make_words(blocks, *w));
+
+ printf("\n");
+
+ // C++
+ list_t vals{ {'B', 'O'}, {'X', 'K'}, {'D', 'Q'}, {'C', 'P'},
+ {'N', 'A'}, {'G', 'T'}, {'R', 'E'}, {'T', 'G'}, {'Q', 'D'},
+ {'F', 'S'}, {'J', 'W'}, {'H', 'U'}, {'V', 'I'}, {'A', 'N'},
+ {'O', 'B'}, {'E', 'R'}, {'F', 'S'}, {'L', 'Y'}, {'P', 'C'},
+ {'Z', 'M'}
+ };
+ std::vector wordsb{"A", "BARK", "BOOK", "TREAT", "COMMON", "SQUAD", "Confuse"};
+ for (const std::string& w : wordsb) {
+ std::cout << w << ": " << std::boolalpha << can_create_word(w, vals) << ".\n";
+ }
+ std::cout << "\n";
+
- char **w;
- for (w = words; *w; w++)
- printf("%s\t%d\n", *w, can_make_words(blocks, *w));
-
- printf("\n");
-
- // C++
- list_t vals{ {'B', 'O'}, {'X', 'K'}, {'D', 'Q'}, {'C', 'P'},
- {'N', 'A'}, {'G', 'T'}, {'R', 'E'}, {'T', 'G'}, {'Q', 'D'},
- {'F', 'S'}, {'J', 'W'}, {'H', 'U'}, {'V', 'I'}, {'A', 'N'},
- {'O', 'B'}, {'E', 'R'}, {'F', 'S'}, {'L', 'Y'}, {'P', 'C'},
- {'Z', 'M'}
- };
- std::vector wordsb{"A", "BARK", "BOOK", "TREAT", "COMMON", "SQUAD", "Confuse"};
- for (const std::string& w : wordsb) {
- std::cout << w << ": " << std::boolalpha << can_create_word(w, vals) << ".\n";
- }
- std::cout << "\n";
-
-
-
- const Vector& cmdline = CommandLine();
- for(int i = 0; i < cmdline.GetCount(); i++) {
- }
+
+ const Vector& cmdline = CommandLine();
+ for(int i = 0; i < cmdline.GetCount(); i++) {
+ }
}
diff --git a/Task/ABC-problem/V-(Vlang)/abc-problem.v b/Task/ABC-problem/V-(Vlang)/abc-problem.v
index f34fa80d4b..fbda461417 100644
--- a/Task/ABC-problem/V-(Vlang)/abc-problem.v
+++ b/Task/ABC-problem/V-(Vlang)/abc-problem.v
@@ -1,28 +1,29 @@
-const blocks = ["BO","XK","DQ","CP","NA","GT","RE","TG","QD","FS",
-"JW","HU","VI","AN","OB","ER","FS","LY","PC","ZM"]
-
-const words = ["A", "BARK","BOOK","TREAT","COMMON","SQUAD","CONFUSE"]
+const
+(
+ blocks = ["BO","XK","DQ","CP","NA","GT","RE","TG","QD","FS","JW","HU","VI","AN","OB","ER","FS","LY","PC","ZM"]
+ words = ["A", BARK","BOOK","TREAT","COMMON","SQUAD","CONFUSE"]
+)
fn main() {
- for word in words {
- println('>>> can_make_word("${word.to_upper()}"): ')
- if check_word(word, blocks) == true { println("True") } else { println("False") }
- }
+ for word in words {
+ println('>>> can_make_word("${word.to_upper()}"): ')
+ if check_word(word, blocks) == true {println('True')} else {println('False')}
+ }
}
fn check_word(word string, blocks []string) bool {
- mut tblocks := blocks.clone()
- mut found := false
- for chr in word {
- found = false
- for idx, _ in tblocks {
- if tblocks[idx].contains(chr.ascii_str()) == true {
- tblocks[idx] =""
- found = true
- break
- }
- }
- if found == false { return found }
- }
- return found
+ mut tblocks := blocks.clone()
+ mut found := false
+ for chr in word {
+ found = false
+ for idx, _ in tblocks {
+ if tblocks[idx].contains(chr.ascii_str()) == true {
+ tblocks[idx] =''
+ found = true
+ break
+ }
+ }
+ if found == false {return found}
+ }
+ return found
}
diff --git a/Task/ABC-problem/Yabasic/abc-problem.basic b/Task/ABC-problem/Yabasic/abc-problem.basic
index d7db87519a..c2e561b9f7 100644
--- a/Task/ABC-problem/Yabasic/abc-problem.basic
+++ b/Task/ABC-problem/Yabasic/abc-problem.basic
@@ -1,28 +1,28 @@
letters$ = "BO,XK,DQ,CP,NA,GT,RE,TG,QD,FS,JW,HU,VI,AN,OB,ER,FS,LY,PC,ZM"
sub canMake(letters$, word$)
- local i, j, p, n, pairs$(1)
-
- n = token(letters$, pairs$(), ",")
- word$ = upper$(word$)
-
- for i = 1 to len(word$)
- for j = 1 to n
- p = instr(pairs$(j), mid$(word$, i, 1))
- if p then
- pairs$(j) = ""
- break
- end if
- next j
- if not p return false
- next i
- return true
+ local i, j, p, n, pairs$(1)
+
+ n = token(letters$, pairs$(), ",")
+ word$ = upper$(word$)
+
+ for i = 1 to len(word$)
+ for j = 1 to n
+ p = instr(pairs$(j), mid$(word$, i, 1))
+ if p then
+ pairs$(j) = ""
+ break
+ end if
+ next j
+ if not p return false
+ next i
+ return true
end sub
-print "a = ", canMake(letters$, "a") // 1 = true
-print "bark = ", canMake(letters$, "Bark") // 1
-print "book = ", canMake(letters$, "BooK") // 0 = false
-print "treat = ", canMake(letters$, "TREAt") // 1
-print "common = ", canMake(letters$, "common") // 0
-print "squad = ", canMake(letters$, "squad") // 1
-print "confuse = ", canMake(letters$, "confuse") // 1
+print "a = ", canMake(letters$, "a") // 1 = true
+print "bark = ", canMake(letters$, "Bark") // 1
+print "book = ", canMake(letters$, "BooK") // 0 = false
+print "treat = ", canMake(letters$, "TREAt") // 1
+print "common = ", canMake(letters$, "common") // 0
+print "squad = ", canMake(letters$, "squad") // 1
+print "confuse = ", canMake(letters$, "confuse") // 1
diff --git a/Task/ABC-problem/Zig/abc-problem.zig b/Task/ABC-problem/Zig/abc-problem.zig
deleted file mode 100644
index ea586f7323..0000000000
--- a/Task/ABC-problem/Zig/abc-problem.zig
+++ /dev/null
@@ -1,54 +0,0 @@
-const std = @import("std");
-
-const Block: type = struct { Char1: u8, Char2: u8 };
-const BLOCK_SIZE: comptime_int = 20;
-const blocks: [BLOCK_SIZE]Block = .{
- .{ .Char1 = 'B', .Char2 = 'O' }, .{ .Char1 = 'X', .Char2 = 'K' },
- .{ .Char1 = 'D', .Char2 = 'Q' }, .{ .Char1 = 'C', .Char2 = 'P' },
- .{ .Char1 = 'N', .Char2 = 'A' }, .{ .Char1 = 'G', .Char2 = 'T' },
- .{ .Char1 = 'R', .Char2 = 'E' }, .{ .Char1 = 'T', .Char2 = 'G' },
- .{ .Char1 = 'Q', .Char2 = 'D' }, .{ .Char1 = 'F', .Char2 = 'S' },
- .{ .Char1 = 'J', .Char2 = 'W' }, .{ .Char1 = 'H', .Char2 = 'U' },
- .{ .Char1 = 'V', .Char2 = 'I' }, .{ .Char1 = 'A', .Char2 = 'N' },
- .{ .Char1 = 'O', .Char2 = 'B' }, .{ .Char1 = 'E', .Char2 = 'R' },
- .{ .Char1 = 'F', .Char2 = 'S' }, .{ .Char1 = 'L', .Char2 = 'Y' },
- .{ .Char1 = 'P', .Char2 = 'C' }, .{ .Char1 = 'Z', .Char2 = 'M' },
-};
-
-fn can_make_word(word: []const u8) bool {
- var marked: [BLOCK_SIZE]bool = [_]bool{false} ** BLOCK_SIZE;
-
- for (word) |char| {
- var hasBlock: bool = false;
-
- for (blocks, 0..) |block, index| {
- if ((block.Char1 == char or block.Char2 == char) and !marked[index]) {
- hasBlock = true;
- marked[index] = true;
- break;
- }
- }
-
- if (!hasBlock) {
- return false;
- }
- }
-
- return true;
-}
-
-pub fn main() !void {
- const words: []const []const u8 = &.{
- "A",
- "BARK",
- "BOOK",
- "TREAT",
- "COMMON",
- "SQUAD",
- "CONFUSE",
- };
-
- for (words) |word| {
- std.debug.print("{s}\t{any}\n", .{ word, can_make_word(word) });
- }
-}
diff --git a/Task/ABC-problem/Zkl/abc-problem.zkl b/Task/ABC-problem/Zkl/abc-problem.zkl
index a34c775681..66da4854fc 100644
--- a/Task/ABC-problem/Zkl/abc-problem.zkl
+++ b/Task/ABC-problem/Zkl/abc-problem.zkl
@@ -1,14 +1,14 @@
var blocks=T("BO", "XK", "DQ", "CP", "NA", "GT", "RE", "TG", "QD", "FS",
- "JW", "HU", "VI", "AN", "OB", "ER", "FS", "LY", "PC", "ZM", );
+ "JW", "HU", "VI", "AN", "OB", "ER", "FS", "LY", "PC", "ZM", );
fcn can_make_word(word){
fcn(blks,word){
if (not word) return(True); // bottom of recursion
foreach b in (blks){ n:=__bWalker.idx;
- if(not b.holds(word[0])) continue; // letter not on this block
- blks.del(n); // remove this block from pile
- if (self.fcn(blks,word[1,*])) return(True); // try remaining blocks
- blks.insert(n,b); // put block back in pile: backtracking
+ if(not b.holds(word[0])) continue; // letter not on this block
+ blks.del(n); // remove this block from pile
+ if (self.fcn(blks,word[1,*])) return(True); // try remaining blocks
+ blks.insert(n,b); // put block back in pile: backtracking
}
False; // out of blocks but not out of word
}(blocks.copy(),word.toUpper())
diff --git a/Task/ABC-problem/Zonnon/abc-problem.zonnon b/Task/ABC-problem/Zonnon/abc-problem.zonnon
index 731ebadcf1..c0dde3c245 100644
--- a/Task/ABC-problem/Zonnon/abc-problem.zonnon
+++ b/Task/ABC-problem/Zonnon/abc-problem.zonnon
@@ -1,87 +1,87 @@
module Main;
type
- Block = record
- l,r: char;
- used: boolean;
- end Block;
+ Block = record
+ l,r: char;
+ used: boolean;
+ end Block;
var
- blocks: array 20 of Block;
+ blocks: array 20 of Block;
procedure Exists(c: char): boolean;
var
- i: integer;
- r: boolean;
+ i: integer;
+ r: boolean;
begin
- r := false;i := 0;
- while ~r & (i < len(blocks)) do
- if ~(blocks[i].used) then
- r := (blocks[i].l = cap(c)) or (blocks[i].r = cap(c));
- blocks[i].used := r;
- end;
- inc(i)
- end;
- return r
+ r := false;i := 0;
+ while ~r & (i < len(blocks)) do
+ if ~(blocks[i].used) then
+ r := (blocks[i].l = cap(c)) or (blocks[i].r = cap(c));
+ blocks[i].used := r;
+ end;
+ inc(i)
+ end;
+ return r
end Exists;
procedure CanMakeWord(s: string);
var
- i: integer;
- made: boolean;
+ i: integer;
+ made: boolean;
begin
- made := true;
- for i := 0 to len(s) - 1 do
- made := made & Exists(s[i])
- end;
- writeln(s:20,"?",made);
- Clean()
+ made := true;
+ for i := 0 to len(s) - 1 do
+ made := made & Exists(s[i])
+ end;
+ writeln(s:20,"?",made);
+ Clean()
end CanMakeWord;
procedure Clean();
var
- i: integer;
+ i: integer;
begin
- for i := 0 to len(blocks) - 1 do
- blocks[i].used := false
- end
+ for i := 0 to len(blocks) - 1 do
+ blocks[i].used := false
+ end
end Clean;
procedure InitBlock(i:integer;l,r:char);
begin
- blocks[i].l := l;blocks[i].r := r;
- blocks[i].used := false;
+ blocks[i].l := l;blocks[i].r := r;
+ blocks[i].used := false;
end InitBlock;
procedure Init;
begin
- InitBlock(0,'B','O');
- InitBlock(1,'X','K');
- InitBlock(2,'D','Q');
- InitBlock(3,'C','Q');
- InitBlock(4,'N','A');
- InitBlock(5,'G','T');
- InitBlock(6,'R','E');
- InitBlock(7,'T','G');
- InitBlock(8,'Q','D');
- InitBlock(9,'F','S');
- InitBlock(10,'J','W');
- InitBlock(11,'H','U');
- InitBlock(12,'V','I');
- InitBlock(13,'A','N');
- InitBlock(14,'O','B');
- InitBlock(15,'E','R');
- InitBlock(16,'F','S');
- InitBlock(17,'L','Y');
- InitBlock(18,'P','C');
- InitBlock(19,'Z','M')
+ InitBlock(0,'B','O');
+ InitBlock(1,'X','K');
+ InitBlock(2,'D','Q');
+ InitBlock(3,'C','Q');
+ InitBlock(4,'N','A');
+ InitBlock(5,'G','T');
+ InitBlock(6,'R','E');
+ InitBlock(7,'T','G');
+ InitBlock(8,'Q','D');
+ InitBlock(9,'F','S');
+ InitBlock(10,'J','W');
+ InitBlock(11,'H','U');
+ InitBlock(12,'V','I');
+ InitBlock(13,'A','N');
+ InitBlock(14,'O','B');
+ InitBlock(15,'E','R');
+ InitBlock(16,'F','S');
+ InitBlock(17,'L','Y');
+ InitBlock(18,'P','C');
+ InitBlock(19,'Z','M')
end Init;
begin
- Init();
- CanMakeWord("A");
- CanMakeWord("BARK");
- CanMakeWord("BOOK");
- CanMakeWord("TREAT");
- CanMakeWord("COMMON");
- CanMakeWord("confuse");
+ Init();
+ CanMakeWord("A");
+ CanMakeWord("BARK");
+ CanMakeWord("BOOK");
+ CanMakeWord("TREAT");
+ CanMakeWord("COMMON");
+ CanMakeWord("confuse");
end Main.
diff --git a/Task/ADFGVX-cipher/11l/adfgvx-cipher.11l b/Task/ADFGVX-cipher/11l/adfgvx-cipher.11l
index 739e221d0a..e1dd671422 100644
--- a/Task/ADFGVX-cipher/11l/adfgvx-cipher.11l
+++ b/Task/ADFGVX-cipher/11l/adfgvx-cipher.11l
@@ -3,8 +3,8 @@ V adfgvx = ‘ADFGVX’
F encrypt(plainText, polybius, key)
V s = ‘’
L(ch) plainText
- L(r) 0.<6
- L(c) 0.<6
+ L(r) 6
+ L(c) 6
I polybius[r][c] == ch
s ‘’= :adfgvx[r]‘’:adfgvx[c]
@@ -43,8 +43,8 @@ F decrypt(cipherText, polybius, key)
V polybius = [[Char("\0")] * 6] * 6
V alphabet = ‘ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789’
random:shuffle(&alphabet)
-L(r) 0.<6
- L(c) 0.<6
+L(r) 6
+ L(c) 6
polybius[r][c] = alphabet[6 * r + c]
print("6 x 6 Polybius square:\n")
diff --git a/Task/ADFGVX-cipher/APL/adfgvx-cipher.apl b/Task/ADFGVX-cipher/APL/adfgvx-cipher.apl
deleted file mode 100644
index 93c8c07787..0000000000
--- a/Task/ADFGVX-cipher/APL/adfgvx-cipher.apl
+++ /dev/null
@@ -1,39 +0,0 @@
-adfgvx←{
- n←⎕NS''
- n.split←↑{⍺≥⍴⍵:⊂⍵ ⋄ (⊂⍺↑⍵),⍺∇⍺↓⍵}
-
- n.enc←⍺{
- t←∊(∘.,⍨'ADFGVX')[⊃∘⍸∘(⍺⍺∘=)¨⍵]
- w←↓⍉((⍴⍵⍵)split t)[;⍋⍵⍵]
- 1↓∊' ',¨w~¨' '
- }⍵
-
- n.dec←⍺{
- t←↓2 split (∊(⍉↑⍵⊆⍨' '≠⍵)[;⍋⍋⍵⍵])~' '
- ⍺⍺['ADFGVX'∘⍳¨t]
- }⍵
-
- n
-}
-
-adfgvx_test←{
- square←6 6⍴(⎕A,⎕D)[?⍨36]
- ⎕←'Polybius square:'
- ⎕←' ─ADFGVX','│┼││││││','A D F G V X' ⍪'─'⍪(11⍴1 0)\square
- ⎕←''
-
- key←{
- file←'e:\unixdict.txt'
- dict←(~data∊⎕TC)⊆data←⊃⎕NGET file
- dict←(⍵{⍺=≢⍵}¨dict)/dict
- dict←({⍵≡∪⍵}¨dict)/dict
- 1⎕C ⊃dict[?⍴dict]
- }9
- ⎕←'Key: ',key
-
- a←square adfgvx key
-
- ⎕←'Plaintext: ',plaintext←'ATTACKAT1200AM'
- ⎕←'Encrypted: ',encrypted←a.enc plaintext
- ⎕←'Decrypted: ',a.dec encrypted
-}
diff --git a/Task/ADFGVX-cipher/C-sharp/adfgvx-cipher.cs b/Task/ADFGVX-cipher/C-sharp/adfgvx-cipher.cs
deleted file mode 100644
index 3f4f47932f..0000000000
--- a/Task/ADFGVX-cipher/C-sharp/adfgvx-cipher.cs
+++ /dev/null
@@ -1,117 +0,0 @@
-using System.Diagnostics;
-
-const string cypher = "ADFGVX";
-var N = cypher.Length;
-var size = N * N;
-const string symbols = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
-Debug.Assert(size == symbols.Length);
-var square = new int[size];
-
-for (var i = 0; i < size; i++)
-{
- var j = Random.Shared.Next(i + 1);
- square[i] = square[j];
- square[j] = i;
-}
-
-Console.WriteLine($"{N} x {N} Polybius square:");
-Console.WriteLine();
-Console.WriteLine($" | {string.Join(' ', cypher.AsEnumerable())}");
-Console.WriteLine(new string('-', 2 * N + 3));
-
-for (var row = 0; row < N; row++)
-{
- Console.Write($"{cypher[row]} |");
-
- for (var col = 0; col < N; col++)
- {
- Console.Write($" {symbols[square[col + row * N]]}");
- }
-
- Console.WriteLine();
-}
-
-static bool IsSuitableTranspositionKey(string s) =>
- s.Length >= 7 && s.Length <= 12 && s.Length == s.Distinct().Count() && s.All(symbols.ToLowerInvariant().Contains);
-
-var keys = File.ReadAllLines("unixdict.txt").Where(IsSuitableTranspositionKey).ToArray();
-var key = keys[Random.Shared.Next(keys.Length)].ToUpperInvariant();
-Console.WriteLine();
-Console.WriteLine($"The key is {key}");
-var plaintext = "ATTACKAT1200AM";
-Console.WriteLine($"Plaintext: {plaintext}");
-
-string Encrypt(string plaintext, string key, int[] square)
-{
- // Create a lookup table from symbol to fragment
- var map = (from i in Enumerable.Range(0, size)
- let k = square[i]
- let code = cypher[i / N] + "" + cypher[i % N]
- select (k, code))
- .ToDictionary(kc => symbols[kc.k], kc => kc.code);
-
- // Map the plaintext to fragments
- var e = string.Join("", plaintext.Select(c => map[c]));
-
- // Determine number of rows
- var K = key.Length;
- var rows = (e.Length + K - 1) / K;
-
- // Pad with spaces
- e += new string(' ', rows * K - e.Length);
-
- // Sort the key
- var order = string.Join("", key.OrderBy(c => c)).Select(c => key.IndexOf(c)).ToArray();
-
- // Reorder the fragments.
- e = string.Join("", Enumerable.Range(0, K * rows).Select(i => e[(i / K) * K + order[i % K]]));
-
- // Transpose
- e = new([.. from col in Enumerable.Range(0, K)
- from row in Enumerable.Range(0, rows)
- select e[row * K + col]]);
-
- // Read off each column.
- return string.Join(" ", Enumerable.Range(0, K).Select(col => e.Substring(col * rows, rows).Trim()));
-}
-
-var encrypted = Encrypt(plaintext, key, square);
-Console.WriteLine($"Encrypted: {encrypted}");
-
-string Decrypt(string encrypted, string key, int[] square)
-{
- // Create a lookup table from fragment to symbol
- var map = (from i in Enumerable.Range(0, size)
- let k = square[i]
- let code = cypher[i / N] + "" + cypher[i % N]
- select (k, code))
- .ToDictionary(kc => kc.code, kc => symbols[kc.k]);
-
- // Split into columns
- var cols = encrypted.Split(' ');
-
- // Determine number of rows
- var K = key.Length;
- var rows = cols.Max(c => c.Length);
-
- // Pad each column
- cols = [.. cols.Select(c => c.PadRight(rows))];
-
- // Transpose
- string e = new([.. from row in Enumerable.Range(0, rows)
- from col in Enumerable.Range(0, K)
- select cols[col][row]]);
-
- // Sort the key
- var sorted = string.Join("", key.OrderBy(c => c));
- var order = key.Select(c => sorted.IndexOf(c)).ToArray();
-
- // Reorder the fragments
- e = string.Join("", Enumerable.Range(0, K * rows).Select(i => e[(i / K) * K + order[i % K]])).Trim();
-
- // Map the fragments to plaintext
- return string.Join("", Enumerable.Range(0, e.Length / 2).Select(i => map[e.Substring(2 * i, 2)]));
-}
-
-var decrypted = Decrypt(encrypted, key, square);
-Console.WriteLine($"Decrypted: {decrypted}");
diff --git a/Task/ADFGVX-cipher/Crystal/adfgvx-cipher.cr b/Task/ADFGVX-cipher/Crystal/adfgvx-cipher.cr
deleted file mode 100644
index 3236abc45a..0000000000
--- a/Task/ADFGVX-cipher/Crystal/adfgvx-cipher.cr
+++ /dev/null
@@ -1,62 +0,0 @@
-def make_square
- # it's a square at heart...
- (('A'..'Z').to_a + ('0'..'9').to_a).shuffle!
-end
-
-def make_key (size)
- words = File.open("unixdict.txt") do |f|
- f.each_line.select {|w| w.size == size && w.chars.to_set.size == size }.to_a
- end
- raise "no suitable key found" if words.empty?
- words.sample
-end
-
-def adfgvx_encrypt (message, square, key)
- h = "ADFGVX".chars
- message.chars.flat_map {|ch|
- row, col = square.index!(ch).divmod(6)
- [ h[row], h[col] ]
- }
- .in_groups_of(key.size)
- .transpose
- .zip(key.chars)
- .sort_by {|_, key| key }
- .map {|col, _| col.join }
- .join(" ")
-end
-
-def adfgvx_decrypt (message, square, key)
- h = "ADFGVX".chars
- sorted_key = key.chars.sort!
- cols = message.split.map &.chars
- max_size = cols.max_of &.size
- cols.map {|col| col + [nil]*(max_size-col.size) }
- .zip(sorted_key)
- .sort_by {|_, ch| key.index! ch }
- .map {|col, _| col }
- .transpose
- .flatten.compact
- .in_slices_of(2)
- .map {|(row, col)| square[ h.index!(row)*6 + h.index!(col) ] }
- .join
-end
-
-def show (title, message, square, key)
- encrypted = adfgvx_encrypt message, square, key
- decrypted = adfgvx_decrypt encrypted, square, key
- puts title
- puts " - Alphabet: #{square.join}"
- puts " - Key: #{key}"
- puts " - Message: #{message}"
- puts " - Encrypted: #{encrypted}"
- puts " - Decrypted: #{decrypted}"
- puts
-end
-
-message = "ATTACKAT1200AM"
-
-wiki_square = "NA1C3H8TB2OME5WRPD4F6G7I9J0KLQSUVXYZ".chars
-wiki_key = "PRIVACY"
-
-show "Wikipedia example:", message, wiki_square, wiki_key
-show "Random square and key:", message, make_square, make_key(9)
diff --git a/Task/ADFGVX-cipher/Fortran/adfgvx-cipher.f b/Task/ADFGVX-cipher/Fortran/adfgvx-cipher.f
deleted file mode 100644
index 40af143af8..0000000000
--- a/Task/ADFGVX-cipher/Fortran/adfgvx-cipher.f
+++ /dev/null
@@ -1,618 +0,0 @@
-!
-! ADFGVX Cipher
-! tested with Intel ifx (IFX) 2025.2.1 20250806 on Kubuntu 25.10
-! GNU Fortran (Ubuntu 15.2.0-4ubuntu4) 15.2.0 on Kubuntu 25.10
-! VSI Fortran on VMS does not compile it because it cannot handle
-! allocatable character strings.
-! U.B., December 2025
-!==============================================================================
-
-program ADFGVXCipher
-
- implicit none
-
- logical, parameter :: DEBUG = .false. ! set to .true. for reproducable, not random results
- logical, parameter :: VERBOSE = .false. ! set this to .true. to print some intermediate results
- integer, parameter :: maxLen=100 ! Maximum length of any test message (including extensions as 'X')
-
- integer, parameter :: minPassLen=7, maxPassLen=12 ! Minimum and maximum password length
-
- ! The complete alphabet of capital letters as used in most western languages, plus numbers 0...9
- character (len=36), parameter :: Alphabet ='ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567879'
- character (len=*), parameter :: ADFGVX = 'ADFGVX'
-
- character (len=maxLen) :: MsgToEncrypt, DecryptedMsg
- character (len=2*maxLen) :: EncryptedMsg ! encrypt makes 2 letters from 1
- character (len=25) :: PassPhrase
- integer, parameter :: ColWidth = 6 ! depends on length of the used alphabet but we use only 36 letters
-
- character (len=36) :: PolyAlphabet ! Permutation of Alphabet to represent Polybius square
- integer :: i
-
- ! Initialize random number generator once for the entire run-time of the program and all test cases
- call random_seed()
-
-
- ! The message to encrypt - for 1 test case
- ! the plain text message is from the task description
- MsgToEncrypt = 'ATTACKAT1200AM'
-
- if (.not. DEBUG) then
- print '("Init: DEBUG is .false., i.e. password and Polybius square are randomized.")'
- PassPhrase = getRandomPassPhrase() ! select random password from unixdict.txt
- else
- ! for DEBUG only: force constant password for reproducible result:
- print '("Init: DEBUG is .true., i.e. the code reproduces results of the NIM solution")'
- PassPhrase = 'EXCURSION' ! Taken from the NIM solution
- endif
-
- print '("Init: PassPhrase for encode and decode is ", A)' , PassPhrase
-
- if (.not. DEBUG) then
- call createRandomPolybiusSquare () ! Create random Permutation of Alphabet to represent Polybius square
- else
- ! For DEBUG only: force constant string for reproducable results
- ! Both the Alphabet and the password are from the NIM solution.
- ! If DEBUG is .true., the result of the NIM solution is exactly reproduced.
- PolyAlphabet = 'XOFPD6VHC40ZJMKRU5IA9YBW3L21NGQTE78S'
- endif
-
- call PrintSquare ("Init: Following Polybius square is used for encode/decode:", PolyAlphabet, ColWidth)
-
- call encode (MsgToEncrypt , EncryptedMsg, PolyAlphabet, PassPhrase)
- call decode (EncryptedMsg, DecryptedMsg, PolyAlphabet, PassPhrase)
-
- call printResult (MsgToEncrypt, EncryptedMsg, DecryptedMsg)
-
-contains
-
-
-
-! ==========================================================
-! Find random length of the new password,
-! then pick a random word of this length from the word list
-! ==========================================================
-function getRandomPassPhrase() result (retval)
- character (len=maxPassLen) :: retval
- integer :: leng ! required length of password to pick
-
- leng = randominInterval (minPassLen, maxPassLen)
- retval = getRandomWord (leng)
-
-end function getRandomPassPhrase
-
-! ==================================================================================
-! Read the wordlist unixdict.txt and select a random word with the requested length
-! ==================================================================================
-function getRandomWord (leng) result (retval)
- integer, intent(in) :: leng
- character (len=maxPassLen) :: retval
-
- character(len=100) :: word ! is longer than expected input word length
- character (len=maxPassLen), allocatable :: Candidates (:)
- integer:: capacity, content
- integer :: io_stat, l, idx, ii
-
- ! Read all words from unixdict.txt having length "len" and no repeating letters
- open(unit=10, file='unixdict.txt', status='old', action='read', iostat=io_stat)
- if (io_stat .ne. 0) then ! File open MUST be successful, otherwise total program failure.
- print *, "Error opening file"
- stop
- end if
- capacity = 128
- call resize (Candidates, maxPassLen, capacity)
- content = 0
- do
- read (10,'(A)', iostat=io_stat) word ! ok for both intel and GNU.
- l = len_trim (word) ! use this instead of Q format
- if (io_stat < 0) exit ! EOF: Normal end of this loop
- if (io_stat > 0) then
- print *, "Read error" ! ERROR: (never seen)
- exit
- end if
- if (l .ne. leng) cycle
- if (hasDuplicateChars(word)) cycle
- if (content .eq. capacity) then
- capacity = capacity * 2
- call resize (Candidates, maxPassLen, capacity)
- end if
- content = content + 1
- Candidates (content) = word
- enddo
- idx = randominInterval (1, content)
- retval = candidates (idx)
- do ii=1, leng
- if (retval(ii:ii) .ge. 'a' .and. retval(ii:ii) .le. 'z') then
- retval(ii:ii) = char (ichar(retval(ii:ii)) - ichar('a') + ichar('A'))
- endif
- end do
- close (10)
-
-end function getRandomWord
-
-! ========================================================================
-! Return true if argument word contains duplicate letters, otherwise false.
-! ========================================================================
-function hasDuplicateChars (word) result (itHas)
- character (len=*), intent(in) :: word
- logical :: itHas
- integer :: ii, jj, l
- l = len_trim(word)
- do ii=1, l
- do jj=ii+1, l
- if (word(ii:ii) .eq. word(jj:jj)) then
- itHas = .true.
- return
- endif
- end do
- end do
- itHas = .false.
-end function hasDuplicateChars
-
-
- !==============================================================
- ! Creating a random Polybius square is equivalent with creating
- ! a random permutation of the used alphabet
- ! Use the Sattolo algorithm to create such a permutation .
- !==============================================================
-subroutine createRandomPolybiusSquare ()
-
- character :: tmp ! for swapping single letters
-
- integer :: j, k, l ! Helper variables: indices into words, words' length
-
-
- PolyAlphabet = Alphabet
- l = len (Alphabet)
- do j = l, 1, -1 ! For all letters from end down to begin
- k = randominInterval (1, j-1) ! Select random letters between 1 and j-1
- tmp = PolyAlphabet(j:j) ! then swap letter at pos j with letter at pos k
- PolyAlphabet (j:j) = PolyAlphabet (k:k)
- PolyAlphabet (k:k) = tmp
- end do
-
-end subroutine createRandomPolybiusSquare
-
-
-
-! =============================================
-! Increase allocated size of string array 'var'
-! =============================================
-subroutine resize(var, sLen, newSize)
- integer, intent(in) :: sLen ! LEngth of 1 element of string array
- character (len=sLen), allocatable, intent(inout) :: var(:) ! The array to be increased
- integer, intent(in) :: newSize ! The new size of var
- character (len=sLen), allocatable :: tmp(:) ! Temporary storage
- integer :: oldSize ! Current array size
- integer :: ii ! Loop index
-
- ! Copy allocated values to temporary, then allocate var with
- ! new size and copy back saved values.
- ! Could be done with move_alloc but this would not be portable to OpenVMS Fortran
-
- if (allocated(var)) then
- oldSize = size(var)
- else
- oldSize = 0
- end if
-
- if (newSize .gt. oldSize) then ! only increment
- if (oldSize .gt.0) then
- allocate(tmp (oldSize))
- tmp(:oldSize) = var(:oldSize)
- deallocate (var)
- end if
- allocate(var(newSize))
- if (allocated(tmp) .and. allocated (var) ) then
- oldSize = min(size(tmp, 1), size(var, 1))
- var(:oldSize) = tmp(:oldSize)
- deallocate (tmp)
- end if
- end if
-end subroutine resize
-
-
- ! ===========================================================
- ! Generate random number between @lo and @hi (inclusive)
- ! Assume Random Number Generator has been initialized before.
- ! ===========================================================
-function randominInterval (lo, hi) result (r)
- integer, intent(in) :: lo, hi ! the interval
- integer :: r ! resultant (pseudo-)random number
- real :: rnd ! Fortran random number generator generates float values
-
- call random_number (rnd)
- r = lo + FLOOR((hi+1-lo)*rnd) ! We want to choose one between [lo,hi]
-
-end function randominInterval
-
-
-
-! =============================================
-! Encode a given string using the ADFGVX Cipher
-! =============================================
-subroutine encode (argInString, outString, argAlphabet, argPassPhrase)
- character (len=*), intent(in) :: argInString ! The string to encode
- character (len=*), intent(out) :: outString ! The resultant encoded text
- character (len=*), intent(in) :: argAlphabet ! The alphabet that makes the Polybius square
- character (len=*), intent(in) :: argPassPhrase ! the password used for encode and also decode.
- integer :: nRow
- integer :: argLen, passLen, newlen, ii, jj, kk, row, col
- character(len=2*len(OutString)+len_trim(argPassPhrase)) newAlphabet
-
- character, dimension(:,:), allocatable :: Matrix, expandedMatrix
-
- argLen = len_trim (argInString)
- passLen = len_trim (argPassPhrase)
- newlen = len(OutString)+len_trim(argPassPhrase)
- ! 1st step: encode with the given alphabet (resp. the equivalent 6x6 square),
- ! the output string being the row/col of each letter, expressed in terms of ADFGVX
- outString = ' '
- jj = 1
- do ii=1,argLen
- call getRC (argInString(ii:ii),row,col, argAlphabet)
- outString (jj:jj) = ADFGVX (row:row)
- jj = jj + 1
- outString (jj:jj) = ADFGVX (col:col)
- jj = jj + 1
- end do
-
- if (VERBOSE) then
- print '("Encode, first step: ")'
- do ii=1, arglen
- write (*,'(A3)', advance='no') ArgInString (ii:ii)
- end do
- print *, 'becomes'
-
- do ii=1, 2*argLen, 2
- write (*,'(x,A2)', advance='no') outString (ii:ii+1)
- end do
- write (*,'(///)')
- endif
-
- jj = 1
- kk = 1
- newAlphabet = argPassPhrase (:passLen) // outString(:len_trim(outString))
-
- nRow = (len_trim (newAlphabet) + passLen - 1)/passLen ! Required net number of lines for the Matrix
- allocate (Matrix (passLen, nRow))
-
- ! Without any complications: Just accept that last line might be incomplete - complete it with spaces.
- do row=1, nRow
- do col=1,passLen
- if (row .eq. 1 ) then ! Top row gets the password
- Matrix (col,row) = newAlphabet (jj:jj)
- jj = jj + 1
- else
- if (jj .gt. len_trim(newAlphabet)) then ! Entire new alphabet copied to Matrix
- Matrix(col,row) = ' ' ! remaining Matrix is all blank
- else
- Matrix (col,row) = newAlphabet (jj:jj)
- jj = jj + 1
- endif
- endif
- end do
- if (jj .gt. len_trim(newAlphabet)) exit
- end do
- jj = 1
- do row=1, nRow
- do col=1,passLen
- newAlphabet (jj:jj) = Matrix (col,row)
- jj = jj + 1
- end do
- end do
-
- if (VERBOSE) &
- call printMatrix ('Encode: This results in a new matrix: ', Matrix, nRow, passLen)
- ! Sort columns
- call quicksort_matrix (Matrix, passLen, nRow, 1, passlen)
-
- if (VERBOSE) &
- call printMatrix ('Encode: After sorting columns, this becomes: ', Matrix, nRow, passLen)
-
- jj = 1
- do row=1, nRow
- do col=1,passLen
- newAlphabet (jj:jj) = Matrix (col,row)
- jj = jj + 1
- end do
- end do
-
- allocate (expandedMatrix (passLen, nRow))
- ! Initialize al to blank
- do row=1, 2*kk
- do col=1,passLen
- expandedMatrix (col,row) = ' '
- end do
- end do
-
- jj=1
- do row=1, nRow
- do col=1,passLen
- if (jj .le. len_trim(newAlphabet)) then
- expandedMatrix (col,row) = newAlphabet (jj:jj)
- else
- expandedMatrix (col,row) = ' '
- endif
- jj = jj + 1
- end do
- end do
-
- outString = ' '
- jj = 1
- do col=1,passLen
- do row=2, nRow
- if (expandedMatrix (col,row) .ne. ' ') then
- outString (jj:jj) = expandedMatrix (col,row)
- jj = jj + 1
- end if
- end do
- outString (jj:jj) = ' '
- jj = jj + 1
- end do
-
-end subroutine encode
-
-
-! ==================================================================================
-! Sort columns of a Matrix, taking elements of top row as key to decide "lt" or ge".
-! ==================================================================================
-recursive subroutine quicksort_matrix (mat, ncols, nrows, low, high)
-
- integer, intent(in) :: ncols,nrows
- character, dimension (ncols,nrows), intent(inout) :: mat
-
- integer, intent(in) :: low, high
- integer :: pivot_index
- integer :: i, j, mid
- character :: pivot, temp
-
- if (low .lt. high) then
- ! The list is already "almost sorted", so use midlle word as pivot.
- mid = low + (high-low) / 2
- pivot = mat (mid,1)
-
- !Move pivot to the end
- call swapMat (mat,ncols,nrows,mid,high)
-
- i = low - 1
- do j = low, high - 1
- if (mat(j,1) .le. pivot) then
- i = i + 1
- call swapMat (mat,ncols,nrows,i,j)
- end if
- end do
-
- call swapMat (mat,ncols,nrows,i+1,high)
- pivot_index = i + 1
-
- call quicksort_matrix (mat, ncols,nrows, low, pivot_index - 1)
- call quicksort_matrix (mat, ncols,nrows, pivot_index + 1, high)
- end if
-end subroutine quicksort_matrix
-
-! ===============================================
-! Swap two columns of a Matrix (Used for sorting)
-! ===============================================
-subroutine swapMat (mat,ncols,nrows,col1,col2)
- integer, intent(in) :: ncols,nrows ! Size of ...
- character, dimension (ncols,nrows), intent(inout) :: mat ! ... the matrix
- integer, intent(in) :: col1, col2 ! The 2 columns to swap
-
- character :: tmp ! Helpers to swap 2 elements
- integer :: row
-
- ! early return in trivial noop case
- if (col1 .eq. col2) return
-
- do row=1, nrows ! Swap all elements of col 1 and col 2
- tmp = mat (col1,row)
- mat (col1,row) = mat(col2,row)
- mat(col2,row) = tmp
- end do
-
-end subroutine swapMat
-
-! =======================================================
-! Decode a given (encoded) string using the ADFGVX Cipher
-! =======================================================
-subroutine decode (argInString, outString, argAlphabet, argPassPhrase)
- character (len=*), intent(in) :: argInString ! The encoded string to decode
- character (len=*), intent(out) :: outString ! Result of the decode
- character (len=*), intent(in) :: argAlphabet ! The Polybius Square to encode and decode
- character (len=*), intent(in) :: argPassPhrase ! The Password used to encode and decode
- character (len=MaxLen) :: tmpString ! Temporary torage for intermediate result
- character, allocatable :: Matrix (:,:) ! Matrix to constructed from input string
- character (len=:),allocatable :: SortedPassPhrase ! The password after sorting its letters
- integer :: nRow, passLen ! NMUmbner of rows and columns of above Matrix
- integer :: inLen, col,row, ii, jj, idx ! Length of input string, and some helpers
-
- ! Estimate input string lengths
- inLen = len_trim (argInString)
- passLen = len_trim (argPassPhrase)
-
- outString = ' '
- nRow = (inLen + (passLen-1)) / passLen + 1 ! 1 extra for top row = password
-
- allocate (Matrix (passLen, nRow))
-
- ! Initialize entire matrix
- do col=1,passLen
- do row=1, nRow
- Matrix (col,row) = ' '
- end do
- ! Fill the column as far as required
- end do
-
-
- ! The columns of the result matrix are sorted as password letters and
- ! the sorted password letters makeup top row of th is matrix
- SortedPassPhrase = argPassPhrase
- call quicksort_matrix (SortedPassPhrase, passlen, 1, 1, passlen)
-
- row=1
- do col=1, passLen
- Matrix (col,row) = SortedPassPhrase(col:col)
- end do
-
- ! Set rest ( row 2 ff.) of the Matrix: column by column
- jj = 1
- do col=1,passLen
- row = 2
- do while (argInString (jj:jj) .ne. ' ')
- Matrix (col,row) = argInString (jj:jj)
- jj = jj + 1
- row = row + 1
- enddo
- jj = jj + 1
- end do
-
- if (VERBOSE) &
- call printMatrix ('Decode: the reconstructed Code matrix is ', Matrix, nROw, passLen)
-
- ! We know the columns of this matrix are sorted together with the password
- !
- ! restore the correct order of thet sorted matrix
- call UndoSort (Matrix, passLen, nRow, argPassPhrase, passlen)
-
- if (VERBOSE) &
- call printMatrix ('Decode: After Undo Sorting, this becomes', Matrix, nRow, passLen)
-
- ! The matrix is in the correct order now, so its rows, one by one, represent the first encoded string
- !
- jj = 1
- tmpString = ' '
- do row = 2, nRow ! Skip top row (=Passwprd)
- do col=1,passLen
- tmpString (jj:jj) = Matrix(col,row)
- jj = jj + 1
- end do
- end do
-
- ! Now we have the encoded string, each 2 letters are row/col in ADFGVX scheme
- jj = 1
- do ii=1, len_trim(tmpString), 2
- row = index (ADFGVX, tmpString(ii:ii))
- col = index (ADFGVX, tmpString((ii+1) : (ii+1)))
- outString (jj:jj) = getChar (row,col,argAlphabet) ! Decode from row/col to clear text
- jj = jj + 1
- end do
-end subroutine decode
-
-! =============================================================================
-! Print all nRow x nCol elements of a Matrix, togehther with a descriptive text
-! =============================================================================
-subroutine printMatrix (comment, Matrix, nRow, nCol)
- integer, intent(in) :: nRow, nCol
- character (len=*), intent(in) :: Comment
- character , intent(in) :: Matrix (nCol, nRow)
- integer :: r, c
-
- write (*,'(/A/)') Comment
- do r=1, nROw
- do c=1, nCol
- write (*, '(A2)', advance='no') Matrix(c,r)
- end do
- write (*,*)
- end do
-end subroutine printMatrix
-
-!=============================================================
-! Matrix has been sorted before, with top row as key elements.
-! Here undo that sort operation
-!=============================================================
-subroutine UndoSort (Matrix, nCol, nRow, argPassPhrase, passLen)
- integer, intent(in) :: nCol, nRow, passLen
- character, intent(inout) :: Matrix (nCol, nROw)
- character :: resultMatrix (nCol, nROw)
-
- character (len=passLen), intent(in) :: argPassPhrase
-
- integer :: ii, jj, kk
-
- do ii=1, passLen
- ! find whatever letter should be at pos ii within the unscrambled string
- jj = index (argPassPhrase, Matrix(ii, 1) )
- ! so letter "PassPhrase(jj:jj)" should be at pos ii in line 1 of Matrix
- if (jj .ne. ii) then
- do kk=1, nRow
- resultMatrix (jj,kk) = Matrix(ii,kk)
- end do
- else
- do kk=1, nRow
- resultMatrix (jj,kk) = Matrix(jj,kk)
- end do
- endif
- end do
- matrix = resultMatrix
-end subroutine UndoSort
-
-
-! ======================================================
-! Get Row and Column of a letter in the Polybius square
-! ======================================================
-subroutine getRC (c,row,col, argAlphabet)
- character, intent(in) :: c
- integer, intent(out) :: row,col
- character (len=*), intent(in) :: argAlphabet ! Argument to use for encoding
- integer :: idx
-
- idx = index (argAlphabet, c) - 1
-
- row = 1 + idx / ColWidth
- col = 1 + mod (idx, ColWidth)
-
-end subroutine getRC
-
-! ==================================================
-! Return letter in row column of the Polybius square
-! ==================================================
-function getChar (row,column,argAlphabet) result (chr)
- integer, intent(in) :: row, column
- character (len=*), intent(in) :: argAlphabet ! Argument to use for encoding
- character :: chr
- integer :: idx
-
- idx = (row-1) * ColWidth + column
- chr = argAlphabet (idx:idx)
-
-end function getChar
-
-! ===========================================
-! Print original, encoded and decoded strings
-! ===========================================
-subroutine printResult (m1,m2,m3)
- character (len=*), intent(in) :: m1,m2,m3
- write (*,'("Original: ", A)') m1(:len_trim(m1))
- write (*,'(" Encoded: ", A)') m2(:len_trim(m2))
- write (*,'(" Decoded: ", A)') m3(:len_trim(m3))
- print *
-end subroutine printResult
-
-! ================================================================================
-! Print the resulting Polybius square based on the alphabet used for encode/decode
-! ================================================================================
-subroutine PrintSquare (Comment, Alp, cw)
- character (len=*), intent(in) :: Comment
- character (len=*), intent(in) :: Alp
- integer, intent(in) :: cw ! column width for dormatted display
- integer:: ii, l
-
- l = len_trim(alp)
- write (*,'(/A/)') Comment
- Write (*, "(' A D F G V X', /,' +------------',/ A, '|')", advance='no') ADFGVX (1:1)
- do ii=1, l
- write (*, '(A2)', advance='no') Alp(ii:ii)
- if (mod (ii, cw) .eq. 0) then
- if (ii .ne. l) then
- write (*,'(/,A1,"|")', advance='no') ADFGVX (1 + ii/cw:1 + ii/cw)
- else
- write (*,*) ! just EOL
- endif
- endif
- end do
- print * ! one extra blank line
-end subroutine PrintSquare
-
-
-end program ADFGVXCipher
diff --git a/Task/ADFGVX-cipher/Free-Pascal-Lazarus/adfgvx-cipher.pas b/Task/ADFGVX-cipher/Free-Pascal-Lazarus/adfgvx-cipher.pas
deleted file mode 100644
index b35f201644..0000000000
--- a/Task/ADFGVX-cipher/Free-Pascal-Lazarus/adfgvx-cipher.pas
+++ /dev/null
@@ -1,198 +0,0 @@
-program adfgvxcipher;
-
-uses
- SysUtils,
- Classes;
-
-const
- ADFGVX = 'ADFGVX';
- ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
- MESSAGE = 'ATTACKAT1200AM';
-
-type
- //tPolybiusarr = array[1..6,1..6] of string;
- tPolybiusarr = array[1..6, 1..6] of char;
-
- procedure init_Polybius(var Polybius: tPolybiusarr);
-
- procedure ShuffleString(var S: string);
- var
- i, j: integer;
- c: char;
- begin
- for i := Length(S) downto 2 do
- begin
- j := Random(i) + 1; // 1..i
- c := S[i];
- S[i] := S[j];
- S[j] := c;
- end;
- end;
-
- var
- ShuffledAlphabet: string;
- x, y, i: integer;
- begin
- ShuffledAlphabet := ALPHABET;
- ShuffleString(ShuffledAlphabet);
- i := 1;
- for x := 1 to 6 do
- for y := 1 to 6 do
- begin
- Polybius[x, y] := ShuffledAlphabet[i];
- Inc(i);
- end;
- end;
-
- procedure PrintPolybius(Polybius: tPolybiusarr);
- var
- x, y: integer;
- ch: char;
- begin
- writeln('The 6 x 6 Polybius square:');
- writeln;
- Write(' |');
- for ch in ADFGVX do
- Write(ch: 2);
- writeln;
- writeln('---------------');
- for x := 1 to 6 do
- begin
- Write(ADFGVX[x], ' |');
- for y := 1 to 6 do
- begin
- Write(Polybius[x, y]: 2);
- end;
- writeln;
- end;
- end;
-
- function CreateKey(size: integer): string;
-
- procedure FilterList(var lst: TStringList; size: integer);
-
- function HasRepeatedCharacters(const str: string): boolean;
- var
- seen: array[0..255] of boolean;
- i: integer;
- c: byte;
- begin
- FillChar(seen, SizeOf(seen), False);
- for i := 1 to Length(str) do
- begin
- c := Ord(str[i]);
- if seen[c] then
- Exit(True); // repeated character found
- seen[c] := True;
- end;
- Result := False; // no repeats
- end;
-
- var
- x: integer;
- begin
- for x := lst.Count - 1 downto 0 do
- if (length(lst[x]) <> size) or HasRepeatedCharacters(lst[x]) then lst.Delete(x);
- end;
-
- const
- FNAME = 'unixdict.txt';
- var
- list: TStringList;
- begin
- if (size < 7) or (size > 12) then
- begin
- writeln('Key should contain between 7 and 12 letters, both inclusive.');
- halt;
- end;
- list := TStringList.Create;
- list.LoadFromFile(FNAME);
- filterlist(list, size);
- Result := UpperCase(list[random(list.Count)]);
- list.Free;
- end;
-
- function FindCharachter(ch: char; polybius: tPolybiusarr): string;
- var
- x, y: integer;
- begin
- for x := 1 to 6 do
- for y := 1 to 6 do
- if polybius[x, y] = ch then
- exit(ADFGVX[x] + ADFGVX[y]);
- end;
-
- function Encrypt(plainText, key: string; Polybius: tPolybiusarr): string;
- var
- ch: char;
- str: string;
- lst: TStringList;
- x, keylength: integer;
- begin
- str := '';
- keylength := length(key);
- lst := TStringList.Create;
- for x := 1 to keylength do
- lst.Add(key[x]);
- x := 0;
- for ch in plainText do
- begin
- lst[x] := lst[x] + FindCharachter(ch, Polybius);
- Inc(x);
- if x = keylength then x := 0;
- end;
- lst.Sort;
- writeln;
- for x := 0 to keylength - 1 do
- str := str + lst[x] + ' ';
- Result := TrimRight(str);
- lst.Free;
- end;
-
- function Decrypt(encryptedTex, key: string; polybius: tPolybiusarr): string;
- // Note: simplified decryption logic for demonstration purposes
- // need some work for longer messages
- var
- lst, tmp: TStringList;
- ch: char;
- s, str: string;
- begin
- lst := TStringList.Create;
- tmp := TStringList.Create;
- lst.AddDelimitedtext(encryptedTex, ' ', True);
- for ch in key do
- for str in lst do
- if str[1] = ch then
- begin
- tmp.Add(str);
- break;
- end;
- Result := '';
- s := '';
- for str in tmp do
- begin
- Result := Result + polybius[pos(str[2], ADFGVX), pos(str[3], ADFGVX)];
- if length(str) > 3 then s := s + polybius[pos(str[4], ADFGVX), pos(str[5], ADFGVX)];
- end;
- Result := Result + s;
- lst.Free;
- tmp.Free;
- end;
-
-var
- Polybius: tPolybiusarr;
- key, encryptedMessage, decryptedMessage: string;
-
-begin
- Randomize;
- init_Polybius(Polybius);
- PrintPolybius(Polybius);
- key := createkey(Random(12 - 7 + 1) + 7); //set length of word to 7 - 12
- encryptedMessage := Encrypt(MESSAGE, key, Polybius);
- decryptedMessage := Decrypt(encryptedMessage, key, polybius);
- writeln('The key is : ', key);
- writeln('the plain message is : ', MESSAGE);
- writeln('the encrypted message is: ', encryptedMessage);
- writeln('the decrypted message is: ', decryptedMessage);
-
-end.
diff --git a/Task/ADFGVX-cipher/FreeBASIC/adfgvx-cipher.basic b/Task/ADFGVX-cipher/FreeBASIC/adfgvx-cipher.basic
deleted file mode 100644
index e2bd2cc64b..0000000000
--- a/Task/ADFGVX-cipher/FreeBASIC/adfgvx-cipher.basic
+++ /dev/null
@@ -1,169 +0,0 @@
-Const ADFGVX As String = "ADFGVX"
-Const ALPHABET As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
-
-Function InitialisePolybiusSquare() As String
- Dim As Integer i, j
- Dim As String letters(35)
- For i = 0 To 35
- letters(i) = Mid(ALPHABET, i + 1, 1)
- Next
- Randomize Timer
- For i = 0 To 35
- j = Int(Rnd * 36)
- Swap letters(i), letters(j)
- Next
-
- Dim As Integer row, column
- Dim As String result = ""
- For row = 0 To 5
- For column = 0 To 5
- result &= letters(6 * row + column)
- Next
- Next
-
- Return result
-End Function
-
-Function CreateKey(size As Integer) As String
- If size < 7 Or size > 12 Then
- Print "Key should contain between 7 and 12 letters, both inclusive."
- Exit Function
- End If
-
- Dim As Integer i, j
- Dim As String word, candidates()
- Dim As Integer ff = Freefile
-
- Open "i:\unixdict.txt" For Input As #ff
- While Not Eof(ff)
- Line Input #ff, word
-
- Dim As String uniqueWord = ""
- For i = 1 To Len(word)
- If Instr(uniqueWord, Mid(word, i, 1)) = 0 Then
- uniqueWord &= Mid(word, i, 1)
- End If
- Next
-
- If Len(word) = size And Len(word) = Len(uniqueWord) Then
- word = Ucase(word)
-
- Dim isAlphanum As Boolean = TRue
- For i = 1 To Len(word)
- If Not (Mid(word, i, 1) >= "A" And Mid(word, i, 1) <= "Z") And Not (Mid(word, i, 1) >= "0" And Mid(word, i, 1) <= "9") Then
- isAlphanum = False
- Exit For
- End If
- Next
-
- If isAlphanum Then
- Redim Preserve candidates(Ubound(candidates) + 1)
- candidates(Ubound(candidates)) = word
- End If
- End If
- Wend
- Close #ff
-
- Randomize Timer
- For i = 0 To Ubound(candidates)
- j = Int(Rnd * (Ubound(candidates) + 1))
- Swap candidates(i), candidates(j)
- Next
-
- Return candidates(0)
-End Function
-
-Function Encrypt(plainText As String, polybius As String, key As String) As String
- Dim As Integer i, j, row, column
- Dim As String code, ch, encrypted
-
- code = ""
- For i = 1 To Len(plainText)
- ch = Mid(plainText, i, 1)
- For row = 0 To 5
- For column = 0 To 5
- If Mid(polybius, row * 6 + column + 1, 1) = ch Then
- code &= Mid(ADFGVX, row + 1, 1)
- code &= Mid(ADFGVX, column + 1, 1)
- End If
- Next
- Next
- Next
-
- encrypted = ""
- For i = 1 To Len(key)
- ch = Mid(key, i, 1)
- For j = Instr(key, ch) - 1 To Len(code) - 1 Step Len(key)
- encrypted &= Mid(code, j + 1, 1)
- Next
- encrypted &= " "
- Next
-
- Return encrypted
-End Function
-
-Function Decrypt(encryptedText As String, polybius As String, key As String) As String
- Dim As Integer i, j, row, column, spaceCount, codeSize
- Dim As String result, stream, word, code, plainText
- Dim As String blocks()
-
- result = ""
- i = 1
- While i <= Len(encryptedText)
- If Mid(encryptedText, i, 1) = " " Then
- i += 1
- Else
- result += Mid(encryptedText, i, 1)
- i += 1
- End If
- Wend
- spaceCount = Len(encryptedText) - Len(result)
- codeSize = Len(encryptedText) - spaceCount
-
- stream = encryptedText
- While Len(stream) > 0
- word = Left(stream, Instr(stream, " ") - 1)
- Redim Preserve blocks(Ubound(blocks) + 1)
- blocks(Ubound(blocks)) = word
- stream = Mid(stream, Instr(stream, " ") + 1)
- Wend
-
- code = ""
- For i = 0 To codeSize - 1
- For j = 0 To Ubound(blocks)
- If Len(code) < codeSize Then code &= Mid(blocks(j), i + 1, 1)
- Next
- Next
-
- plainText = ""
- For i = 1 To codeSize - 1 Step 2
- row = Instr(ADFGVX, Mid(code, i, 1)) - 1
- column = Instr(ADFGVX, Mid(code, i + 1, 1)) - 1
- plainText &= Mid(polybius, row * 6 + column + 1, 1)
- Next
-
- Return plainText
-End Function
-
-Dim As String polybius = InitialisePolybiusSquare()
-Print "The 6 x 6 Polybius square:"
-Print " | A D F G V X"
-Print "--------------"
-For row As Integer = 0 To 5
- Print Mid(ADFGVX, row + 1, 1); "|";
- For column As Integer = 0 To 5
- Print " "; Mid(polybius, row * 6 + column + 1, 1);
- Next
- Print
-Next
-
-Dim As String key = CreateKey(9)
-Print !"\nThe key is "; key
-Dim As String plainText = "ATTACKAT1200AM"
-Print !"\nPlain text: "; plainText
-Dim As String encryptedText = Encrypt(plainText, polybius, key)
-Print !"\nEncrypted: "; encryptedText
-Dim As String decryptedText = Decrypt(encryptedText, polybius, key)
-Print !"\nDecrypted: "; decryptedText
-
-Sleep
diff --git a/Task/ADFGVX-cipher/FutureBasic/adfgvx-cipher.basic b/Task/ADFGVX-cipher/FutureBasic/adfgvx-cipher.basic
deleted file mode 100644
index 3cbb6a7960..0000000000
--- a/Task/ADFGVX-cipher/FutureBasic/adfgvx-cipher.basic
+++ /dev/null
@@ -1,208 +0,0 @@
-/*
-ADFGVX cipher
-https://rosettacode.org/wiki/ADFGVX_cipher
-
-Requires file, unixdict.txt to be on the desktop
-https://github.com/quinnj/Rosetta-Julia/blob/master/unixdict.txt
-
-*/
-
-begin globals
-
- str255 ADFGVX
- ADFGVX = "ADFGVX"
- str255 ALPHABET
- ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
-
-end globals
-
-local fn InitialisePolybiusSquare As str255
- short i, j
-
- str255 letters(36)
- For i = 0 To 35
- letters(i) = Mid$(ALPHABET, i + 1, 1)
- Next
-
- For i = 0 To 35
- j = Int(rnd (36))
- Swap letters(i), letters(j)
- Next
-
- short row, column
- str255 result
- result = ""
- For row = 0 To 5
- For column = 0 To 5
- result = result + letters(6 * row + column)
- Next
- Next
-
-End fn = result
-
-local fn CreateKey(size As short) As str255
- If size < 7 Or size > 12
- Print "Key should contain between 7 and 12 letters, both inclusive."
- Exit fn
- End If
-
- short i, j
- str255 TheWord, candidates(1000)
- short ff = 1 // file number
-
- short CandidatesCounter = 1
-
- CFUrlRef ParentDirectory = fn FileManagerURLForDirectory( NSDesktopDirectory, NSUserDomainMask )
- CFUrlRef UnixDictURL = fn URLByAppendingPathComponent( ParentDirectory, @"unixdict.txt" )
-
-
- Open "I",ff, UnixDictURL
- While Eof(ff) = 0
- Line Input #ff, TheWord
-
- str255 uniqueWord
- uniqueWord = ""
- For i = 1 To Len$(TheWord)
- If Instr$(1,uniqueWord, Mid$(TheWord, i, 1)) = 0
- uniqueWord = uniqueWord + Mid$(TheWord, i, 1)
- End If
- Next
-
- If Len$(TheWord) = size && Len$(TheWord) = Len$(uniqueWord)
- TheWord = Ucase$(TheWord)
-
- bool isAlphanum = _true
- For i = 1 To Len$(TheWord)
- If (Mid$(TheWord, i, 1) < "A" && Mid$(TheWord, i, 1) <= "Z") && (Mid$(TheWord, i, 1) < "0" && Mid$(TheWord, i, 1) <= "9")
- isAlphanum = _false
- Exit For
- End If
- Next
-
-
- If isAlphanum
- //Redim Preserve candidates(Ubound(candidates) + 1)
- CandidatesCounter ++
- candidates(CandidatesCounter) = TheWord
- End If
- End If
- Wend
- Close #ff
-
-
-
- For i = 0 To CandidatesCounter
- j = Int(Rnd (CandidatesCounter + 1))
- Swap candidates(i), candidates(j)
- Next
-
-End fn = candidates(0)
-
-local fn Encrypt(plainText As str255, polybius As str255, key As str255) As str255
- short i, j, row, column
- str255 code, ch, encrypted
-
- code = ""
- For i = 1 To Len$(plainText)
- ch = Mid$(plainText, i, 1)
- For row = 0 To 5
- For column = 0 To 5
- If Mid$(polybius, row * 6 + column + 1, 1) = ch
- code = code + Mid$(ADFGVX, row + 1, 1)
- code = code + Mid$(ADFGVX, column + 1, 1)
- End If
- Next
- Next
- Next
-
- encrypted = ""
- For i = 1 To Len$(key)
- ch = Mid$(key, i, 1)
- For j = Instr$(1,key, ch) - 1 To Len$(code) - 1 Step Len$(key)
- encrypted = encrypted + Mid$(code, j + 1, 1)
- Next
- encrypted = encrypted + " "
- Next
-
-
-End fn = encrypted
-
-local fn Decrypt(encryptedText As str255, polybius As str255, key As str255) As str255
- short i, j, row, column, spaceCount, codeSize
- str255 result, stream, TheWord, code, plainText
- str255 blocks(200)
- short BlocksCounter = 1
- result = ""
- i = 1
- While i <= Len$(encryptedText)
- If Mid$(encryptedText, i, 1) = " "
- i += 1
- Else
- result += Mid$(encryptedText, i, 1)
- i += 1
- End If
- Wend
- spaceCount = Len$(encryptedText) - Len$(result)
- codeSize = Len$(encryptedText) - spaceCount
-
-
- stream = encryptedText
- While Len$(stream) > 0
- TheWord = Left$(stream, Instr$(1,stream, " ") - 1)
- //Redim Preserve blocks(Ubound(blocks) + 1)
- BlocksCounter ++
- blocks(BlocksCounter) = TheWord
- stream = Mid$(stream, Instr$(1,stream, " ") + 1)
- Wend
-
- code = ""
- For i = 0 To codeSize - 1
- BlocksCounter ++
- For j = 0 To BlocksCounter
- If Len$(code) < codeSize Then code = code + Mid$(blocks(j), i + 1, 1)
- Next
- Next
-
- plainText = ""
- For i = 1 To codeSize - 1 Step 2
- row = Instr$(1,ADFGVX, Mid$(code, i, 1)) - 1
- column = Instr$(1,ADFGVX, Mid$(code, i + 1, 1)) - 1
- plainText = plainText + Mid$(polybius, row * 6 + column + 1, 1)
- Next
-
-
-End fn = plainText
-
-str255 polybius
-polybius = fn InitialisePolybiusSquare
-Print "The 6 x 6 Polybius square:"
-Print " | A D F G V X"
-Print "--------------"
-short row
-For row = 0 To 5
- Print Mid$(ADFGVX, row + 1, 1); "|";
- short column
- For column = 0 To 5
- Print " "; Mid$(polybius, row * 6 + column + 1, 1);
- Next
- Print
-Next
-
-str255 key
-key = fn CreateKey(9)
-print
-Print "The key is "; key
-str255 plainText
-plainText = "ATTACKAT1200AM"// 20241105
-print
-Print "Plain text: "; plainText
-str255 encryptedText
-encryptedText = fn Encrypt(plainText, polybius, key)
-print
-Print "Encrypted: "; encryptedText
-str255 decryptedText
-decryptedText = fn Decrypt(encryptedText, polybius, key)
-print
-Print "Decrypted: "; decryptedText
-
-handleevents
diff --git a/Task/ADFGVX-cipher/JavaScript/adfgvx-cipher.js b/Task/ADFGVX-cipher/JavaScript/adfgvx-cipher.js
deleted file mode 100644
index 0bdfe6eb1a..0000000000
--- a/Task/ADFGVX-cipher/JavaScript/adfgvx-cipher.js
+++ /dev/null
@@ -1,134 +0,0 @@
-class ADFGVX {
- /** The WWI German ADFGVX cipher. */
- constructor(spoly, k, alph = 'ADFGVX') {
- this.polybius = spoly.toUpperCase().split('');
- this.pdim = Math.floor(Math.sqrt(this.polybius.length));
- this.key = k.toUpperCase().split('');
- this.keylen = this.key.length;
- this.alphabet = alph.split('');
- const pairs = [];
- for (let i = 0; i < this.alphabet.length; i++) {
- for (let j = 0; j < this.alphabet.length; j++) {
- pairs.push(this.alphabet[i] + this.alphabet[j]);
- }
- }
- this.encode = {};
- for (let i = 0; i < this.polybius.length; i++) {
- this.encode[this.polybius[i]] = pairs[i];
- }
- this.decode = {};
- for (const k in this.encode) {
- this.decode[this.encode[k]] = k;
- }
- }
-
- encrypt(msg) {
- /** Encrypt with the ADFGVX cipher. */
- const chars = [];
- for (const c of msg.toUpperCase()) {
- if (this.polybius.includes(c)) {
- chars.push(this.encode[c]);
- }
- }
- const flatChars = chars.join('').split('');
- const colvecs = [];
- for (let i = 0; i < this.keylen; i++) {
- const currentCol = [];
- for (let j = i; j < flatChars.length; j += this.keylen) {
- currentCol.push(flatChars[j]);
- }
- colvecs.push([this.key[i], currentCol]);
- }
-
- colvecs.sort((a, b) => a[0].localeCompare(b[0]));
-
- let result = '';
- for (const a of colvecs) {
- result += a[1].join('');
- }
- return result;
- }
-
- decrypt(cod) {
- /** Decrypt with the ADFGVX cipher. Does not depend on spacing of encoded text */
- const chars = [];
- for (const c of cod) {
- if (this.alphabet.includes(c)) {
- chars.push(c);
- }
- }
-
- const sortedkey = [...this.key].sort();
- const order = [];
- for (const ch of sortedkey) {
- order.push(this.key.indexOf(ch));
- }
- const originalorder = [];
- for (const ch of this.key) {
- originalorder.push(sortedkey.indexOf(ch));
- }
-
- const base = Math.floor(chars.length / this.keylen);
- const extra = chars.length % this.keylen;
- const strides = order.map((_, i) => base + (extra > i ? 1 : 0));
- const starts = [0];
- let sum = 0;
- for (let i = 0; i < strides.length - 1; i++) {
- sum += strides[i];
- starts.push(sum);
- }
- const ends = starts.map((start, i) => start + strides[i]);
- const cols = originalorder.map(i => chars.slice(starts[i], ends[i]));
-
- const pairs = [];
- for (let i = 0; i < Math.floor((chars.length - 1) / this.keylen) + 1; i++) {
- for (let j = 0; j < this.keylen; j++) {
- if (i * this.keylen + j < chars.length) {
- pairs.push(cols[j][i]);
- }
- }
- }
-
- let decoded = '';
- for (let i = 0; i < pairs.length; i += 2) {
- decoded += this.decode[pairs[i] + pairs[i + 1]];
- }
- return decoded;
- }
-}
-
-// Helper function to shuffle an array (Fisher-Yates shuffle)
-function shuffle(array) {
- for (let i = array.length - 1; i > 0; i--) {
- const j = Math.floor(Math.random() * (i + 1));
- [array[i], array[j]] = [array[j], array[i]];
- }
- return array;
-}
-
-
-async function main() {
- const PCHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'.split('');
- shuffle(PCHARS);
- const POLYBIUS = PCHARS.join('');
-
- // Simulate reading from unixdict.txt (replace with your actual file reading method if needed)
- // For demonstration purposes, using a hardcoded word list:
- const WORDS = ['ABDEFGHIK', 'JLMNOPQRS', 'TUVWXYZ01', '23456789'];
- const KEY = WORDS[Math.floor(Math.random() * WORDS.length)];
-
-
- const SECRET = new ADFGVX(POLYBIUS, KEY);
- const MESSAGE = 'ATTACKAT1200AM';
-
- console.log(`Polybius: ${POLYBIUS}, key: ${KEY}`);
- console.log('Message: ', MESSAGE);
-
- const ENCODED = SECRET.encrypt(MESSAGE);
- const DECODED = SECRET.decrypt(ENCODED);
-
- console.log('Encoded: ', ENCODED);
- console.log('Decoded: ', DECODED);
-}
-
-main();
diff --git a/Task/ADFGVX-cipher/Julia/adfgvx-cipher.jl b/Task/ADFGVX-cipher/Julia/adfgvx-cipher.julia
similarity index 100%
rename from Task/ADFGVX-cipher/Julia/adfgvx-cipher.jl
rename to Task/ADFGVX-cipher/Julia/adfgvx-cipher.julia
diff --git a/Task/ADFGVX-cipher/M2000-Interpreter/adfgvx-cipher.m2000 b/Task/ADFGVX-cipher/M2000-Interpreter/adfgvx-cipher.m2000
deleted file mode 100644
index 1cc6519280..0000000000
--- a/Task/ADFGVX-cipher/M2000-Interpreter/adfgvx-cipher.m2000
+++ /dev/null
@@ -1,116 +0,0 @@
-Module CheckADFGVX_Cipher {
- Class cipher {
- Private:
- buffer a as byte*36
- b="ADFGVX"
- key="ABCDEFGHIJK"
- orderkey="ABCDEFGHIJK"
- map=list
- map2=list
- module preparemaps {
- for i=0 to 5
- jj=0
- for j=i*6 to j+5
- .map(chr$(.a[j]))=mid$(.b, i+1,1)+mid$(.b,jj+1, 1)
- .map2(mid$(.b, i+1,1)+mid$(.b,jj+1, 1))=chr$(.a[j])
- jj++
- next
- next
- }
- Public:
- Module SetRandom (&returnvalue) {
- return .a, 0:=str$("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789")
- for i=1 to 100
- c=random(0, 35):d=c
- while c=d {d=random(0, 35)}
- byte o=.a[c]
- .a[c]<=.a[d]
- .a[d]<=o
- next
- returnvalue=chr$(eval$(.a)) ' convert to UTF16LE
- .preparemaps
- }
- Module SetSpecific (that$){
- return .a, 0:=str$(Ucase$(that$))
- .preparemaps
- }
- Module SetKey (.key as string) {
- .key<=ucase$(.key)
- if len(.key)<7 or len(.key)>12 then Error "Key has not proper length"
- if filter$(.key, "ABCDEFGHIJKLMNOPQRSTUVWXYZ")<>"" then
- Error "Key has bad letters"
- end if
- dim aa(1 to len(.key))
- for i=1 to len(.key):aa(i)=mid$(.key,i,1):next
- .orderkey<=aa()#sort()#str$("")
- }
- Module Display {
- Print "The 6 x 6 Polybius square:"
- Print " | A D F G V X"
- Print "---------------"
- for i=0 to 5
- Print mid$(.b,i+1,1)+" | ";
- jj=0
- for j=i*6 to j+5
- print chr$(.a[j]);" ";
- jj++
- next
- print
- next
- Print "Key:";.key
- }
- Function Encrypt(p as string) {
- crypted=""
- for i=1 to len(p)
- crypted+=.map$(mid$(p,i,1))
- next
- m=1
- encrypted=""
- For i = 1 To Len(.key)
- ch = Mid$(.orderkey, i, 1)
- For j = Instr(.key, ch) - 1 To Len(crypted) - 1 Step Len(.key)
- encrypted += Mid$(crypted, j + 1, 1)
- if m mod 5=0 then encrypted += " "
- m++
- Next
- Next
- =encrypted
- }
- Function Decrypt(p as string) {
- p=filter$(p, " ")
- decrypted=""
- m=1
- dim b$(len(p))
- For i = 1 To Len(.key)
- ch = Mid$(.orderkey, i, 1)
- For j = Instr(.key, ch) - 1 To Len(p) - 1 Step Len(.key)
- b$(j)=mid$(p, m, 1)
- m++
- Next
- Next
- for i=0 to len(b$())-1 step 2
- decrypted+=.map2(b$(i)+b$(i+1))
- next
- =decrypted
- }
- }
- ADFGVX=cipher()
- for ADFGVX {
- .SetSpecific "A9GKMF1DQRSBVX8Z0WTEJLOPY5U4CN2H76I3"
- .SetKey "volcanism"
- .Display
- encode=.Encrypt("ATTACKAT1200AM")
- Print "Encoded: ";encode
- Print "Decoded: ";.Decrypt(encode)
- Rem { ' using randomblock
- thisblock=""
- .SetRandom &thisblock
- Print "Random Block:";thisblock
- .Display
- encode=.Encrypt("ATTACKAT1200AM")
- Print "Encoded: ";encode
- Print "Decoded: ";.Decrypt(encode)
- }
- }
-}
-CheckADFGVX_Cipher
diff --git a/Task/ADFGVX-cipher/Mathematica/adfgvx-cipher.math b/Task/ADFGVX-cipher/Mathematica/adfgvx-cipher.math
deleted file mode 100644
index b66c4cb9fc..0000000000
--- a/Task/ADFGVX-cipher/Mathematica/adfgvx-cipher.math
+++ /dev/null
@@ -1,24 +0,0 @@
-encrypt[plaintext_, polybius_, key_] := Module[{fraction, fractioned},
- fraction = Thread[Characters[polybius] -> Tuples[Characters["ADFGVX"], 2]];
- fractioned = Partition[Flatten[Characters[plaintext] /. fraction], UpTo[StringLength[key]]];
- StringJoin[Flatten[Part[Flatten[fractioned, {2}], Ordering[Characters[key]]]]]];
-
-decrypt[encrypted_, polybius_, key_] := Module[{perm, colLengths, fractioned, defraction},
- perm = Ordering[Characters[key]];
- colLengths = Length /@ Part[Flatten[Partition[Characters[encrypted], UpTo[Length[perm]]], {2}], perm];
- fractioned = Flatten[Part[TakeList[Characters[encrypted], colLengths], InversePermutation[perm]], {2}];
- defraction = Thread[Tuples[Characters["ADFGVX"], 2] -> Characters[polybius]];
- StringJoin[Partition[Flatten[fractioned], 2] /. defraction]];
-
-words = ReadList["unixdict.txt", Word];
-key = Select[words, StringLength[#] == 9 && DuplicateFreeQ[Characters[#]] &] // RandomChoice;
-polybius = StringJoin@RandomSample@Characters["ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"];
-plaintext = "ATTACKAT1200AM";
-encrypted = encrypt[plaintext, polybius, key];
-decrypted = decrypt[encrypted, polybius, key];
-
-Print["Key: ", key];
-Print["Polybius: ", polybius];
-Print["Plaintext: ", plaintext];
-Print["Encrypted: ", encrypted];
-Print["Decrypted: ", decrypted];
diff --git a/Task/ADFGVX-cipher/R/adfgvx-cipher.r b/Task/ADFGVX-cipher/R/adfgvx-cipher.r
deleted file mode 100644
index 87fc86e172..0000000000
--- a/Task/ADFGVX-cipher/R/adfgvx-cipher.r
+++ /dev/null
@@ -1,173 +0,0 @@
-# The ADFGVX cipher.
-# See also eg. https://www.nku.edu/~christensen/092hnr304%20ADFGVX.pdf
-
-# ADFGVX class using R6
-library(R6)
-
-ADFGVX <- R6Class("ADFGVX",
- public = list(
- polybius = NULL,
- pdim = NULL,
- key = NULL,
- keylen = NULL,
- alphabet = NULL,
- encode = NULL,
- decode = NULL,
-
- # Constructor
- initialize = function(s, k, alph = "ADFGVX") {
- self$polybius <- toupper(strsplit(s, "")[[1]])
- self$pdim <- floor(sqrt(length(self$polybius)))
- self$alphabet <- toupper(strsplit(alph, "")[[1]])
-
- # Create encoding dictionary
- self$encode <- list()
- for (i in 1:self$pdim) {
- for (j in 1:self$pdim) {
- char <- self$polybius[(i - 1) * self$pdim + j]
- self$encode[[char]] <- c(self$alphabet[i], self$alphabet[j])
- }
- }
-
- # Create decoding dictionary
- self$decode <- list()
- for (char in names(self$encode)) {
- key_str <- paste(self$encode[[char]], collapse = "")
- self$decode[[key_str]] <- char
- }
-
- stopifnot(self$pdim^2 == length(self$polybius) &&
- self$pdim == length(self$alphabet))
-
- self$key <- toupper(strsplit(k, "")[[1]])
- self$keylen <- length(self$key)
- },
-
- # Encrypt with the ADFGVX cipher
- encrypt = function(s) {
- chars_upper <- toupper(strsplit(s, "")[[1]])
- chars_filtered <- chars_upper[chars_upper %in% self$polybius]
-
- # Encode characters
- chars <- unlist(lapply(chars_filtered, function(c) self$encode[[c]]))
-
- # Create column vectors
- colvecs <- list()
- for (i in 1:self$keylen) {
- indices <- seq(i, length(chars), by = self$keylen)
- colvecs[[self$key[i]]] <- chars[indices]
- }
-
- # Sort by key
- sorted_names <- sort(names(colvecs))
- result <- unlist(lapply(sorted_names, function(name) colvecs[[name]]))
-
- return(paste(result, collapse = ""))
- },
-
- # Decrypt with the ADFGVX cipher
- decrypt = function(s) {
- chars <- toupper(strsplit(s, "")[[1]])
- chars <- chars[chars %in% self$alphabet]
-
- sortedkey <- sort(self$key)
- order <- sapply(sortedkey, function(ch) which(self$key == ch)[1])
- originalorder <- sapply(self$key, function(ch) which(sortedkey == ch)[1])
-
- # Calculate strides (column lengths)
- div_result <- length(chars) %/% self$keylen
- rem_result <- length(chars) %% self$keylen
- strides <- sapply(order, function(i) {
- div_result + ifelse(rem_result >= i, 1, 0)
- })
-
- # Calculate starts and ends of columns
- starts <- c(1, cumsum(strides[-length(strides)]) + 1)
- ends <- starts + strides - 1
-
- # Get reordered columns
- cols <- lapply(originalorder, function(i) {
- chars[starts[i]:ends[i]]
- })
-
- # Recover the rows
- nrows <- (length(chars) - 1) %/% self$keylen + 1
- pairs <- c()
- for (i in 1:nrows) {
- for (j in 1:self$keylen) {
- if ((i - 1) * self$keylen + j > length(chars)) break
- pairs <- c(pairs, cols[[j]][i])
- }
- }
-
- # Decode pairs
- result <- c()
- for (i in seq(1, length(pairs) - 1, by = 2)) {
- pair_str <- paste(pairs[i:(i+1)], collapse = "")
- result <- c(result, self$decode[[pair_str]])
- }
-
- return(paste(result, collapse = ""))
- }
- )
-)
-
-# Main execution
-set.seed(123) # For reproducibility
-POLYBIUS <- paste(sample(strsplit("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", "")[[1]]),
- collapse = "")
-
-# Get dictionary words - try multiple sources
-get_valid_key <- function() {
- # Try to read unixdict.txt if it exists
- if (file.exists("unixdict.txt")) {
- dict_words <- readLines("unixdict.txt")
- } else {
- # Use sample words if file doesn't exist
- dict_words <- c("absolutes", "abruption", "abundance", "abysmally",
- "acrobatic", "algorithm", "ambiguity", "amplitude",
- "ancestory", "archetype", "asynchron", "auctioned",
- "backbone", "backfired", "backlights", "bandwidth",
- "benchmark", "biography", "birthplace", "blasphemy",
- "boulevard", "bricklaying", "broadcast", "butchering",
- "cauterize", "chemicals", "chromatic", "clipboard",
- "completing", "conjugate", "copyright", "daughters",
- "debuggers", "delimiters", "demograph", "dialyzing",
- "dictionary", "education", "equations", "factorize",
- "geography", "goshdarn", "graciously", "graphed",
- "hampshire", "imploding", "indexable", "jeculates",
- "keyboards", "labyrinth", "livestock", "logarithm",
- "machinery", "molecules", "nightmare", "obscurity",
- "particles", "quizboard", "racehorst", "reduction",
- "savepoint", "sectional", "shipyard", "splatting",
- "substance", "technology", "ulceration", "vineyard",
- "warehouse", "workplace", "xanthopsy", "yachtsmen")
- }
-
- # Filter for 9-letter words with unique characters
- valid_words <- dict_words[sapply(dict_words, function(w) {
- n <- nchar(w)
- n == 9 && length(unique(strsplit(w, "")[[1]])) == n
- })]
-
- if (length(valid_words) == 0) {
- stop("No valid 9-letter words with unique characters found")
- }
-
- return(toupper(sample(valid_words, 1)))
-}
-
-KEY <- get_valid_key()
-
-# Create cipher and encrypt/decrypt
-SECRETS <- ADFGVX$new(POLYBIUS, KEY)
-message <- "ATTACKAT1200AM"
-
-cat("Polybius:", POLYBIUS, ", Key:", KEY, "\n")
-cat("Message:", message, "\n")
-
-encoded <- SECRETS$encrypt(message)
-decoded <- SECRETS$decrypt(encoded)
-
-cat("Encoded:", encoded, "\n")
-cat("Decoded:", decoded, "\n")
diff --git a/Task/ADFGVX-cipher/Rust/adfgvx-cipher.rs b/Task/ADFGVX-cipher/Rust/adfgvx-cipher.rust
similarity index 100%
rename from Task/ADFGVX-cipher/Rust/adfgvx-cipher.rs
rename to Task/ADFGVX-cipher/Rust/adfgvx-cipher.rust
diff --git a/Task/ADFGVX-cipher/Uiua/adfgvx-cipher.uiua b/Task/ADFGVX-cipher/Uiua/adfgvx-cipher.uiua
deleted file mode 100644
index d163a20723..0000000000
--- a/Task/ADFGVX-cipher/Uiua/adfgvx-cipher.uiua
+++ /dev/null
@@ -1,11 +0,0 @@
-A ← ↯∞_2⊞⊟."ADFGVX"
-P ← ⊏⍏[⍥⚂]⧻."ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
-K ← "PACKHORSE"
-Sw ← ⊜□≠" ".
-Polybius ← setinv(/⊂⊡≡(⊚⌕):⊙:¤P A|⊏:P≡(⊢⊚⌕)⊙¤∩≡□↯∞_2:A)
-SortByK ← setinv(⊏⍏⟜(⍉⬚" "↯⊟∞⧻)K|▽≠" "./⊂⍉⊏⍏⍏K)
-Str ← setinv(/$"_ _"Sw/⊂≡(⊂:" ")|≡(⊢°□◇⬚" "↯⊟∞)/↥≡◇⧻.Sw)
-Pt ← "ATTACKAT1200AM"
-&p $"Key = _\nPolybius:\n_\nPlaintext = _"K↯⊟.√⧻.P Pt
-&p$"Crypttext = _". Str SortByK Polybius Pt
-&p$"Plaintext = _" °Polybius °SortByK °Str
diff --git a/Task/AKS-test-for-primes/11l/aks-test-for-primes.11l b/Task/AKS-test-for-primes/11l/aks-test-for-primes.11l
index dc2fcec555..110ea6ed1e 100644
--- a/Task/AKS-test-for-primes/11l/aks-test-for-primes.11l
+++ b/Task/AKS-test-for-primes/11l/aks-test-for-primes.11l
@@ -12,7 +12,7 @@ F aks_test(p)
R !any(ex[0 .< (len)-1].map(mult -> mult % @p != 0))
print(‘# p: (x-1)^p for small p’)
-L(p) 0.<12
+L(p) 12
print(‘#3: #.’.format(p, enumerate(expand_x_1(p)).map((n, e) -> ‘#.#.#.’.format(‘+’ * (e >= 0), e, I n {(‘x^#.’.format(n))} E ‘’)).join(‘ ’)))
print("\n# small primes using the aks test")
diff --git a/Task/AKS-test-for-primes/ANSI-BASIC/aks-test-for-primes.basic b/Task/AKS-test-for-primes/ANSI-BASIC/aks-test-for-primes.basic
deleted file mode 100644
index 547da20116..0000000000
--- a/Task/AKS-test-for-primes/ANSI-BASIC/aks-test-for-primes.basic
+++ /dev/null
@@ -1,79 +0,0 @@
-100 REM AKS test for primes
-110 DECLARE EXTERNAL SUB PascalTriangle
-120 DECLARE EXTERNAL SUB ExpandPoly
-130 DECLARE EXTERNAL FUNCTION IsPrime
-140 FOR N = 0 TO 9
-150 CALL ExpandPoly(N)
-160 NEXT N
-170 FOR N = 2 TO 50
-180 IF IsPrime(N) <> 0 THEN PRINT USING("###"): N;
-190 NEXT N
-200 PRINT
-210 END
-220 REM **
-230 EXTERNAL SUB PascalTriangle(N, PasTri())
-240 REM Calculate t!he N'th line 0.. middle
-250 LET N = INT(N)
-260 LET PasTri(0) = 1
-270 LET J = 1
-280 DO WHILE J <= N
-290 LET J = J + 1
-300 LET K = INT(J / 2)
-310 LET PasTri(K) = PasTri(K - 1)
-320 FOR K = K TO 1 STEP -1
-330 LET PasTri(K) = PasTri(K) + PasTri(K - 1)
-340 NEXT K
-350 LOOP
-360 END SUB
-370 REM **
-380 EXTERNAL FUNCTION IsPrime(N)
-390 LET N = INT(N)
-400 DIM PasTri(0 TO 50)
-410 LET PasTriMax = UBOUND(PasTri)
-420 IF N > PasTriMax THEN
-430 PRINT N; "is out of range"
-440 STOP
-450 END IF
-460 CALL PascalTriangle(N, PasTri)
-470 LET Res = 1
-480 LET I = INT(N / 2)
-490 DO WHILE (Res <> 0) AND (I > 1)
-500 IF (Res <> 0) AND (MOD(PasTri(I), N) = 0) THEN LET Res = 1 ELSE LET Res = 0
-510 LET I = I - 1
-520 LOOP
-530 LET IsPrime = Res
-540 END FUNCTION
-550 REM **
-560 EXTERNAL SUB ExpandPoly(N)
-570 LET N = INT(N)
-580 DIM VZ$(0 TO 1)
-590 LET VZ$(0) = "+"
-600 LET VZ$(1) = "-"
-610 DIM PasTri(0 TO 50)
-620 LET PasTriMax = UBOUND(PasTri)
-630 IF N > PasTriMax THEN
-640 PRINT N; "is out of range"
-650 STOP
-660 END IF
-670 SELECT CASE N
-680 CASE 0
-690 PRINT "(x - 1) ^ 0 = 1"
-700 CASE 1
-710 PRINT "(x - 1) ^ 1 = x - 1"
-720 CASE ELSE
-730 CALL PascalTriangle(N, PasTri)
-740 PRINT "(x - 1) ^"; N; " = x ^"; N;
-750 LET BVZ = 1
-760 FOR J = N - 1 TO INT(N / 2) + 1 STEP -1
-770 PRINT VZ$(BVZ); PasTri(N - J); "* x ^"; J;
-780 LET BVZ = ABS(1 - BVZ)
-790 NEXT J
-800 FOR J = INT(N / 2) TO 2 STEP -1
-810 PRINT VZ$(BVZ); PasTri(J); "* x ^"; J;
-820 LET BVZ = ABS(1 - BVZ)
-830 NEXT J
-840 PRINT VZ$(BVZ); PasTri(1); "* x ";
-850 LET BVZ = ABS(1 - BVZ)
-860 PRINT VZ$(BVZ); PasTri(0)
-870 END SELECT
-880 END SUB
diff --git a/Task/AKS-test-for-primes/Ada/aks-test-for-primes.adb b/Task/AKS-test-for-primes/Ada/aks-test-for-primes.ada
similarity index 100%
rename from Task/AKS-test-for-primes/Ada/aks-test-for-primes.adb
rename to Task/AKS-test-for-primes/Ada/aks-test-for-primes.ada
diff --git a/Task/AKS-test-for-primes/Agena/aks-test-for-primes.agena b/Task/AKS-test-for-primes/Agena/aks-test-for-primes.agena
deleted file mode 100644
index 6589095e8f..0000000000
--- a/Task/AKS-test-for-primes/Agena/aks-test-for-primes.agena
+++ /dev/null
@@ -1,89 +0,0 @@
-# AKS test for primes
-
-constant pas_tri_max := 50;
-
-proc pascal_triangle(n :: posint) is
-# Calculate the n'th line 1.. middle
-# For n = 1, 2, ..
- create register pas_tri((n + 1) \ 2);
- # pas_tri[0] always is 1
- j := 1;
- case n
- of 1, 2 then pas_tri[1] := 2
- else
- j := 3;
- pas_tri[1] := 2;
- while j <= n do
- j++;
- k := j \ 2; # middle
- pas_tri[k] := pas_tri[k - 1];
- while k >= 2 do
- pas_tri[k] +:= pas_tri[k - 1];
- k--
- od;
- pas_tri[1] +:= 1
- od
- esle
- esac
- return pas_tri
-end;
-
-proc is_prime(n :: nonnegint) :: boolean is
- if n > pas_tri_max then
- printf("%d is out of range\n", n);
- os.exit(-1)
- fi;
- pas_tri := pascal_triangle(n);
- res := true;
- i := n \ 2;
- while res and (i > 1) do
- res := res and (pas_tri[i] symmod n = 0);
- i--
- od;
- return res
-end;
-
-proc vz(b :: boolean) is
- return if b then '-' else '+' fi
-end;
-
-proc expand_poly(n :: nonnegint) is
- if n > pas_tri_max then
- printf("%d is out of range\n", n);
- os.exit(-1)
- fi;
- case n
- of 0 then printf("(x-1)^0 = 1\n");
- of 1 then printf("(x-1)^1 = x-1\n");
- else
- pas_tri := pascal_triangle(n);
- printf("(x-1)^%d = x^%d", n, n);
- bvz := true;
- n_div_2 := n \ 2
- for j from n - 1 to n_div_2 + 1 by -1 do
- printf("%s%d*x^%d", vz(bvz), pas_tri[n - j], j);
- bvz := not bvz
- od;
- for j from n_div_2 to 2 by -1 do
- printf("%s%d*x^%d", vz(bvz), pas_tri[j], j);
- bvz := not bvz
- od;
- printf("%s%d*x", vz(bvz), pas_tri[1]);
- bvz := not bvz;
- printf("%s1\n", vz(bvz));
- esle
- esac
-end;
-
-scope
- local n;
- for n from 0 to 9 do
- expand_poly(n)
- od;
- for n from 2 to pas_tri_max do
- if is_prime(n) then
- printf("%3d", n)
- fi
- od;
- printf("\n")
-end
diff --git a/Task/AKS-test-for-primes/Ballerina/aks-test-for-primes.ballerina b/Task/AKS-test-for-primes/Ballerina/aks-test-for-primes.ballerina
deleted file mode 100644
index 575c645a5f..0000000000
--- a/Task/AKS-test-for-primes/Ballerina/aks-test-for-primes.ballerina
+++ /dev/null
@@ -1,58 +0,0 @@
-import ballerina/io;
-
-int[] e = "²³⁴⁵⁶⁷".toCodePointInts();
-
-function bc(int p) returns int[] {
- int[] c = [];
- c.setLength(p + 1);
- int r = 1;
- int half = p / 2;
- foreach int i in 0...half {
- c[i] = r;
- c[p - i] = r;
- r = r * (p - i) / (i + 1);
- }
- foreach int i in int:range(p - 1, -1, -2) {
- c[i] = -c[i];
- }
- return c;
-}
-
-function pp(int[] c) returns string|error {
- if c.length() == 1 { return c[0].toString(); }
- int p = c.length() - 1;
- string s = "";
- if c[p] != 1 { s = c[p].toString(); }
- foreach int i in int:range(p, 0, -1) {
- s += "x";
- if i != 1 { s += check string:fromCodePointInt(e[i - 2]); }
- int d = c[i - 1];
- if d < 0 {
- s += " - " + (-d).toString();
- } else {
- s += " + " + d.toString();
- }
- }
- return s;
-}
-
-function aks(int p) returns boolean {
- int[] c = bc(p);
- c[p] -= 1;
- c[0] += 1;
- foreach int d in c {
- if d % p != 0 { return false; }
- }
- return true;
-}
-
-public function main() {
- foreach int p in 0...7 {
- io:println(p, ": ", pp(bc(p)));
- }
- io:println("\nAll primes under 50:");
- foreach int p in 2...49 {
- if aks(p) { io:print(p, " "); }
- }
- io:println();
-}
diff --git a/Task/AKS-test-for-primes/Clojure/aks-test-for-primes.clj b/Task/AKS-test-for-primes/Clojure/aks-test-for-primes.clj
index 47c637a9e0..377a586076 100644
--- a/Task/AKS-test-for-primes/Clojure/aks-test-for-primes.clj
+++ b/Task/AKS-test-for-primes/Clojure/aks-test-for-primes.clj
@@ -3,7 +3,7 @@
[n k]
(/ (apply *' (range n (- n k) -1))
(apply *' (range k 0 -1))
- (if (even? k) 1 -1)))
+ (if (and (even? k) (< k n)) -1 1)))
(defn cs
"coefficient series for (x - 1)^n, k=[0..n]"
diff --git a/Task/AKS-test-for-primes/Crystal/aks-test-for-primes.cr b/Task/AKS-test-for-primes/Crystal/aks-test-for-primes.crystal
similarity index 100%
rename from Task/AKS-test-for-primes/Crystal/aks-test-for-primes.cr
rename to Task/AKS-test-for-primes/Crystal/aks-test-for-primes.crystal
diff --git a/Task/AKS-test-for-primes/EasyLang/aks-test-for-primes.easy b/Task/AKS-test-for-primes/EasyLang/aks-test-for-primes.easy
deleted file mode 100644
index 10fa6635e4..0000000000
--- a/Task/AKS-test-for-primes/EasyLang/aks-test-for-primes.easy
+++ /dev/null
@@ -1,43 +0,0 @@
-func[] coefs n .
- len list[] n + 2
- list[0] = 1
- for k = 0 to n : list[k + 1] = list[k] * (n - k) / (k + 1)
- for k = 1 step 2 to n : list[k] = -list[k]
- return list[]
-.
-func isprimeaks n .
- c[] = coefs n
- c[0] -= 1
- c[n] += 1
- for i = 0 to n
- if c[i] mod n <> 0 : return 0
- .
- return 1
-.
-proc pprintcoefs n list[] .
- for i = 0 to n
- s$ = ""
- if i > 0
- s$ = " + "
- if list[i] < 0 : s$ = " - "
- .
- c$ = abs list[i]
- e = n - i
- if c$ = "1" and e > 0 : c$ = ""
- x$ = ""
- if e <> 0
- x$ = "x"
- if e <> 1 : x$ &= "^" & e
- .
- r$ &= s$ & c$ & x$
- .
- print "(x-1)^" & n & " : " & r$
-.
-for i = 0 to 7
- pprintcoefs i coefs i
-.
-print ""
-for i = 2 to 49
- if isprimeaks i = 1 : write i & " "
-.
-print ""
diff --git a/Task/AKS-test-for-primes/Elena/aks-test-for-primes.elena b/Task/AKS-test-for-primes/Elena/aks-test-for-primes.elena
index bda73a4cdf..d1ab382bf3 100644
--- a/Task/AKS-test-for-primes/Elena/aks-test-for-primes.elena
+++ b/Task/AKS-test-for-primes/Elena/aks-test-for-primes.elena
@@ -45,28 +45,28 @@ singleton AksTest
while(i != 0)
{
i -= 1;
- Console.print("+",c[i],"x^",i)
+ console.print("+",c[i],"x^",i)
}
}
}
-public Program()
+public program()
{
for (int n := 0; n < 10; n += 1) {
AksTest.coef(n);
- Console.print("(x-1)^",n," = ");
+ console.print("(x-1)^",n," = ");
AksTest.show(n);
- Console.printLine()
+ console.printLine()
};
- Console.print("Primes:");
+ console.print("Primes:");
for (int n := 1; n <= 63; n += 1) {
if (AksTest.is_prime(n))
{
- Console.print(n," ")
+ console.print(n," ")
}
};
- Console.printLine().readChar()
+ console.printLine().readChar()
}
diff --git a/Task/AKS-test-for-primes/Elixir/aks-test-for-primes.ex b/Task/AKS-test-for-primes/Elixir/aks-test-for-primes.elixir
similarity index 100%
rename from Task/AKS-test-for-primes/Elixir/aks-test-for-primes.ex
rename to Task/AKS-test-for-primes/Elixir/aks-test-for-primes.elixir
diff --git a/Task/AKS-test-for-primes/FutureBasic/aks-test-for-primes.basic b/Task/AKS-test-for-primes/FutureBasic/aks-test-for-primes.basic
deleted file mode 100644
index 72bc4196df..0000000000
--- a/Task/AKS-test-for-primes/FutureBasic/aks-test-for-primes.basic
+++ /dev/null
@@ -1,101 +0,0 @@
-// AKS Test for Primes task
-// https://rosettacode.org/wiki/AKS_test_for_primes
-
-
-#build ShowMoreWarnings NO
-
-begin globals
- sInt64 c(100)
- //double n
-end globals
-
-local fn coef(nx as short)
- // out-by-1, ie coef(1)==^0, coef(2)==^1, coef(3)==^2 etc.
- c(nx) = 1
- short i
- for i = nx-1 to 2 step -1
- c(i) = c(i) + c(i-1)
- next
-end fn
-
-local fn is_prime(nx as short) as boolean
- short i
- bool result = _false
- fn coef(nx+1) // (I said it was out-by-1)
- for i = 2 to nx-1 // (technically "to n" is more correct)
- if int(c(i)/nx) <> c(i)/nx
- return _false
- end if
- next
-
- result = _true
-end fn = result
-
-local fn show(nx as short)
- // (As per coef, this is (working) out-by-1)
-
- double ci
- str255 cix
- short i
-
- for i = nx to 1 step -1
- ci = c(i)
- if ci = 1
- if (nx-i) mod 2 = 0
- if i = 1
- if nx = 1
- cix = " 1"
- else
- cix = "+1"
- end if
- else
- cix = ""
- end if
- else
- cix = "-1"
- end if
- else
- if (nx-i) mod 2 = 0
- cix = "+" + str$(ci)
- else
- cix = "-" + str$(ci)
- end if
- end if
-
- if i = 1 // ie ^0
- print cix;
- else
- if i = 2 then print cix, "x"; // ie ^1
- if i <> 2 then print cix, "x^", i-1;
- end if
-
- next i
-end fn
-
-local fn AKS_test_for_primes
- short nx
-
- for nx = 1 to 10 // (0 to 9 really)
- fn coef(nx)
- print "(x-1)^" + str$(nx-1) + " = ";
- fn show(nx)
- print
- next
-
- print
- print "primes (<=53): ";
- short n
- c(2) = 1 // (this manages "", which is all that call did anyway...)
- for n = 2 to 53
- if fn is_prime(n)
- print " ", n;
- end if
- next
- print
-end fn
-
-window 1,@"AKS test for Primes",fn CGRectMake(0, 0, 850, 200)
-
-fn AKS_test_for_primes
-
-handleevents
diff --git a/Task/AKS-test-for-primes/Julia/aks-test-for-primes-1.jl b/Task/AKS-test-for-primes/Julia/aks-test-for-primes-1.julia
similarity index 100%
rename from Task/AKS-test-for-primes/Julia/aks-test-for-primes-1.jl
rename to Task/AKS-test-for-primes/Julia/aks-test-for-primes-1.julia
diff --git a/Task/AKS-test-for-primes/Julia/aks-test-for-primes-2.jl b/Task/AKS-test-for-primes/Julia/aks-test-for-primes-2.julia
similarity index 100%
rename from Task/AKS-test-for-primes/Julia/aks-test-for-primes-2.jl
rename to Task/AKS-test-for-primes/Julia/aks-test-for-primes-2.julia
diff --git a/Task/AKS-test-for-primes/Julia/aks-test-for-primes-3.jl b/Task/AKS-test-for-primes/Julia/aks-test-for-primes-3.julia
similarity index 100%
rename from Task/AKS-test-for-primes/Julia/aks-test-for-primes-3.jl
rename to Task/AKS-test-for-primes/Julia/aks-test-for-primes-3.julia
diff --git a/Task/AKS-test-for-primes/Julia/aks-test-for-primes-4.jl b/Task/AKS-test-for-primes/Julia/aks-test-for-primes-4.julia
similarity index 100%
rename from Task/AKS-test-for-primes/Julia/aks-test-for-primes-4.jl
rename to Task/AKS-test-for-primes/Julia/aks-test-for-primes-4.julia
diff --git a/Task/AKS-test-for-primes/Kotlin/aks-test-for-primes.kts b/Task/AKS-test-for-primes/Kotlin/aks-test-for-primes.kotlin
similarity index 100%
rename from Task/AKS-test-for-primes/Kotlin/aks-test-for-primes.kts
rename to Task/AKS-test-for-primes/Kotlin/aks-test-for-primes.kotlin
diff --git a/Task/AKS-test-for-primes/Loglan82/aks-test-for-primes.loglan82 b/Task/AKS-test-for-primes/Loglan82/aks-test-for-primes.loglan82
deleted file mode 100644
index 73629f52ea..0000000000
--- a/Task/AKS-test-for-primes/Loglan82/aks-test-for-primes.loglan82
+++ /dev/null
@@ -1,89 +0,0 @@
-program AKS;
-(* AKS test for primes *)
-
-const
- Pas_tri_last = 33; (* 33 for 32-bit integer type; 17 for 16-bit integer *)
-var
- n: integer;
-
- (* Calculate the n'th line 0 .. middle *)
- unit Pascal_triangle: procedure (n: integer; Pas_tri: arrayof integer);
- var
- j, k: integer;
- begin
- Pas_tri(0) := 1;
- j := 1;
- while j <= n
- do
- j := j + 1;
- k := j div 2;
- Pas_tri(k) := Pas_tri(k - 1);
- while k >= 1
- do
- Pas_tri(k) := Pas_tri(k) + Pas_tri(k - 1);
- k := k - 1
- od;
- od;
- end Pascal_triangle;
-
- unit is_prime: function (n: integer): boolean;
- var
- i: integer,
- Pas_tri: arrayof integer;
- begin
- array Pas_tri dim (0 : n);
- call Pascal_triangle(n, Pas_tri);
- result := true;
- i := n div 2;
- while result and (i > 1)
- do
- result := result and (Pas_tri(i) mod n = 0);
- i := i - 1;
- od;
- end is_prime;
-
- unit vz: function (b: boolean): character;
- begin
- if b then result := '-' else result := '+' fi;
- end vz;
-
- unit expand_poly: procedure (n: integer);
- var
- Pas_tri: arrayof integer,
- bvz: boolean,
- j: integer;
- begin
- array Pas_tri dim (0 : n);
- case n
- when 0: writeln("(x - 1) ^ 0 = 1")
- when 1: writeln("(x - 1) ^ 1 = x - 1")
- otherwise
- call Pascal_triangle(n, Pas_tri);
- write("(x - 1) ^ ", n: 1, " = x ^ ", n: 1, " ");
- bvz := true;
- for j := n - 1 downto (n div 2) + 1
- do
- write(vz(bvz), " ", Pas_tri(n - j): 1, " * x ^ ", j: 1, " ");
- bvz := not bvz;
- od;
- for j := (n div 2) downto 2
- do
- write(vz(bvz), " ", Pas_tri(j): 1, " * x ^ ", j: 1, " ");
- bvz := not bvz
- od;
- write(vz(bvz), " ", Pas_tri(1): 1, " * x ");
- bvz := not bvz;
- writeln(vz(bvz), " ", Pas_tri(0): 1);
- esac;
- end expand_poly;
-
-begin
- for n := 0 to 9
- do
- call expand_poly(n)
- od;
- for n := 2 to Pas_tri_last do
- if is_prime(n) then write(n: 1, " ") fi;
- od;
- writeln;
-end
diff --git a/Task/AKS-test-for-primes/Modula-2/aks-test-for-primes.mod2 b/Task/AKS-test-for-primes/Modula-2/aks-test-for-primes.mod2
deleted file mode 100644
index a138aea166..0000000000
--- a/Task/AKS-test-for-primes/Modula-2/aks-test-for-primes.mod2
+++ /dev/null
@@ -1,119 +0,0 @@
-MODULE AKSTest;
-(* AKS test for primes *)
-
-FROM STextIO IMPORT
- WriteLn, WriteString;
-FROM SWholeIO IMPORT
- WriteInt;
-
-CONST
- PasTriMax = 33; (* for 32-bit integer type *)
-
-TYPE
- TPasTri = ARRAY [0 .. PasTriMax] OF CARDINAL;
-
-VAR
- N: CARDINAL;
-
-PROCEDURE PascalTriangle(N: CARDINAL; VAR PasTri: TPasTri);
-(* Calculate the N'th line 0.. middle *)
-VAR
- J, K: CARDINAL;
-BEGIN
- PasTri[0] := 1;
- J := 1;
- WHILE J <= N DO
- J := J + 1;
- K := J DIV 2;
- PasTri[K] := PasTri[K - 1];
- FOR K := K TO 1 BY -1 DO
- PasTri[K] := PasTri[K] + PasTri[K - 1];
- END
- END
-END PascalTriangle;
-
-PROCEDURE IsPrime(N: CARDINAL): BOOLEAN;
-VAR
- Res : BOOLEAN;
- I : CARDINAL;
- PasTri: TPasTri;
-BEGIN
- IF N > PasTriMax THEN
- WriteInt(N, 1);
- WriteString(" is out of range");
- WriteLn;
- HALT;
- END;
- PascalTriangle(N, PasTri);
- Res := TRUE;
- I := N DIV 2;
- WHILE Res AND (I > 1) DO
- Res := Res AND (PasTri[I] MOD N = 0);
- I := I - 1
- END;
- RETURN Res;
-END IsPrime;
-
-PROCEDURE ExpandPoly(N: CARDINAL);
-TYPE
- TVZ = ARRAY BOOLEAN OF CHAR;
-CONST
- VZ = TVZ {'+', '-'};
-VAR
- J : CARDINAL;
- BVZ : BOOLEAN;
- PasTri: TPasTri;
-BEGIN
- IF N > PasTriMax THEN
- WriteInt(N, 1);
- WriteString(" is out of range");
- WriteLn;
- HALT
- END;
- CASE N OF
- | 0:
- WriteString("(x-1)^0 = 1"); WriteLn;
- | 1:
- WriteString("(x-1)^1 = x-1"); WriteLn;
- ELSE
- PascalTriangle(N, PasTri);
- WriteString("(x-1)^");
- WriteInt(N, 1);
- WriteString(" = x^");
- WriteInt(N, 1);
- BVZ := TRUE;
- FOR J := N - 1 TO N DIV 2 + 1 BY -1 DO
- WriteString(VZ[BVZ]);
- WriteInt(PasTri[N - J], 1);
- WriteString("*x^");
- WriteInt(J, 1);
- BVZ := NOT BVZ
- END;
- FOR J := N DIV 2 TO 2 BY -1 DO
- WriteString(VZ[BVZ]);
- WriteInt(PasTri[J], 1);
- WriteString("*x^");
- WriteInt(J, 1);
- BVZ := NOT BVZ
- END;
- WriteString(VZ[BVZ]);
- WriteInt(PasTri[1], 1);
- WriteString("*x");
- BVZ := NOT BVZ;
- WriteString(VZ[BVZ]);
- WriteInt(PasTri[0], 1);
- WriteLn;
- END;
-END ExpandPoly;
-
-BEGIN
- FOR N := 0 TO 9 DO
- ExpandPoly(N)
- END;
- FOR N := 2 TO PasTriMax DO
- IF IsPrime(N) THEN
- WriteInt(N, 3)
- END
- END;
- WriteLn;
-END AKSTest.
diff --git a/Task/AKS-test-for-primes/OCaml/aks-test-for-primes.ml b/Task/AKS-test-for-primes/OCaml/aks-test-for-primes.ocaml
similarity index 100%
rename from Task/AKS-test-for-primes/OCaml/aks-test-for-primes.ml
rename to Task/AKS-test-for-primes/OCaml/aks-test-for-primes.ocaml
diff --git a/Task/AKS-test-for-primes/PHP/aks-test-for-primes.php b/Task/AKS-test-for-primes/PHP/aks-test-for-primes.php
deleted file mode 100644
index 9b3e9bbaa4..0000000000
--- a/Task/AKS-test-for-primes/PHP/aks-test-for-primes.php
+++ /dev/null
@@ -1,80 +0,0 @@
- PAS_TRI_MAX) {
- echo $n, " is out of range", PHP_EOL;
- exit;
- }
- switch ($n) {
- case 0:
- echo "(x-1)^0 = 1", PHP_EOL;
- break;
- case 1:
- echo "(x-1)^1 = x-1", PHP_EOL;
- break;
- default:
- $pas_tri = [];
- pascal_triangle($n, $pas_tri);
- echo "(x-1)^", $n, " = x^", $n;
- $bvz = true;
- $n_div_2 = intdiv($n, 2);
- for ($j = $n - 1; $j > $n_div_2; $j--) {
- echo vz($bvz), $pas_tri[$n - $j], "*x^", $j;
- $bvz = !$bvz;
- }
- for ($j = $n_div_2; $j >= 2; $j--) {
- echo vz($bvz), $pas_tri[$j], "*x^", $j;
- $bvz = !$bvz;
- }
- echo vz($bvz), $pas_tri[1], "*x";
- $bvz = !$bvz;
- echo vz($bvz), $pas_tri[0], PHP_EOL;
- }
-}
-
-function pascal_triangle($n, &$pas_tri) {
-// Calculate the $n'th line 0.. middle
- $pas_tri = array_fill(0, intdiv($n + 1, 2) + 1, 0);
- $pas_tri[0] = 1;
- $j = 1;
- while ($j <= $n) {
- $j++;
- $k = intdiv($j, 2);
- $pas_tri[$k] = $pas_tri[$k - 1];
- while ($k >= 1) {
- $pas_tri[$k] += $pas_tri[$k - 1];
- $k--;
- }
- }
-}
-
-function is_prime($n):bool {
- if ($n > PAS_TRI_MAX) {
- echo $n, " is out of range", PHP_EOL;
- exit;
- }
- $pas_tri = [];
- pascal_triangle($n, $pas_tri);
- $res = true;
- $i = intdiv($n, 2);
- while ($res && ($i > 1)) {
- $res = $res && ($pas_tri[$i] % $n == 0);
- --$i;
- }
- return $res;
-}
-
-for ($n = 0; $n <= 9; $n++)
- expand_poly($n);
-for ($n = 2; $n <= PAS_TRI_MAX; $n++)
- if (is_prime($n))
- echo str_pad($n, 3, " ", STR_PAD_LEFT);
-echo PHP_EOL;
-?>
diff --git a/Task/AKS-test-for-primes/Phix/aks-test-for-primes-1.phix b/Task/AKS-test-for-primes/Phix/aks-test-for-primes-1.phix
deleted file mode 100644
index da1bc84810..0000000000
--- a/Task/AKS-test-for-primes/Phix/aks-test-for-primes-1.phix
+++ /dev/null
@@ -1,78 +0,0 @@
--- demo/rosetta/AKSprimes.exw
--- Does not work for primes above 67 (56 on 32bit), which is actually beyond the original task anyway.
--- Translated from the C version (with all out-by-1 stuff now eradicated).
-with javascript_semantics
-constant limit = iff(machine_bits()=32?56:67)
-sequence c = repeat(0,limit+1)
-
-procedure coef(integer n)
- c[n+1] = 1
- for i=n to 2 by -1 do
- c[i] += c[i-1]
- end for
-end procedure
-
-function is_aks_prime(integer n)
- coef(n)
- for i=2 to n-1 do
- if remainder(c[i],n)!=0 then
- return false
- end if
- end for
- return true
-end function
-
-procedure show(integer n)
- for i=n+1 to 1 by -1 do
- object ci = c[i]
- if ci=1 then
- if remainder(n-i+1,2)=0 then
- if i=1 then
- if n=0 then
- ci = "1"
- else
- ci = "+1"
- end if
- else
- ci = ""
- end if
- else
- ci = "-1"
- end if
- else
- if remainder(n-i+1,2)=0 then
- ci = sprintf("+%d",ci)
- else
- ci = sprintf("-%d",ci)
- end if
- end if
- if i=1 then -- ie ^0
- printf(1,"%s",{ci})
- elsif i=2 then -- ie ^1
- printf(1,"%sx",{ci})
- else
- printf(1,"%sx^%d",{ci,i-1})
- end if
- end for
-end procedure
-
-procedure main()
- for n=0 to 9 do
- coef(n);
- printf(1,"(x-1)^%d = ", n);
- show(n);
- puts(1,'\n');
- end for
-
- printf(1,"\nprimes (<=%d):",limit);
--- coef(1); -- (needed to reset c, if we want to avoid saying 1 is prime...)
- c[2] = 1 -- (this manages "", which is all that call did anyway...)
- for n=2 to limit do
- if is_aks_prime(n) then
- printf(1," %d", n);
- end if
- end for
- puts(1,'\n');
- wait_key()
-end procedure
-main()
diff --git a/Task/AKS-test-for-primes/Phix/aks-test-for-primes-2.phix b/Task/AKS-test-for-primes/Phix/aks-test-for-primes-2.phix
deleted file mode 100644
index f8bd4ad4ab..0000000000
--- a/Task/AKS-test-for-primes/Phix/aks-test-for-primes-2.phix
+++ /dev/null
@@ -1,27 +0,0 @@
-include mpfr.e
-mpz z = mpz_init()
-atom t0 = time(), t1 = t0+1
-sequence p = {}
-integer maxn = 0
-for n=2 to 10000 do -- (more than we can manage in 10s)
- bool nprime = true
- for k=1 to n-1 do
- mpz_bin_uiui(z,n,k)
- if not mpz_divisible_ui_p(z,n) then
- nprime = false
- exit
- end if
- end for
- if nprime then
- p &= n
- end if
- maxn = n
- if time()>t1 then
- if time()>t0+10 then progress("") exit end if
- progress("checking %d",{n})
- t1 = time()+1
- end if
-end for
-sequence q = get_primes_le(maxn)
-printf(1,"%d primes < %d found, correctly:%t, in %s\n",{length(p),maxn,p=q,elapsed(time()-t0)})
-wait_key()
diff --git a/Task/AKS-test-for-primes/Phix/aks-test-for-primes-3.phix b/Task/AKS-test-for-primes/Phix/aks-test-for-primes-3.phix
deleted file mode 100644
index bfa4d0b3d9..0000000000
--- a/Task/AKS-test-for-primes/Phix/aks-test-for-primes-3.phix
+++ /dev/null
@@ -1,24 +0,0 @@
-atom t0 = time(), t1 = t0+1
-sequence p = {}
-integer maxn = 0
-for n=2 to 10000 do -- (more than we can manage in 10s)
- sequence r = {1}
- for k=1 to n do
- r &= 1
- for l=k to 2 by -1 do
- r[l] = remainder(r[l]+r[l-1],n)
- end for
- end for
- if sum(r)=2 then -- ie {1,<==all 0s==>,1}
- p &= n
- end if
- maxn = n
- if time()>t1 then
- if time()>t0+10 then progress("") exit end if
- progress("checking %d",{n})
- t1 = time()+1
- end if
-end for
-sequence q = get_primes_le(maxn)
-printf(1,"%d primes < %d found, correctly:%t, in %s\n",{length(p),maxn,p=q,elapsed(time()-t0)})
-wait_key()
diff --git a/Task/AKS-test-for-primes/Phix/aks-test-for-primes.phix b/Task/AKS-test-for-primes/Phix/aks-test-for-primes.phix
new file mode 100644
index 0000000000..384e622777
--- /dev/null
+++ b/Task/AKS-test-for-primes/Phix/aks-test-for-primes.phix
@@ -0,0 +1,82 @@
+-->
+ -- demo/rosetta/AKSprimes.exw
+ -- Does not work for primes above 53, which is actually beyond the original task anyway.
+ -- Translated from the C version, just about everything is (working) out-by-1, what fun.
+
+ sequence c = repeat(0,100)
+
+ procedure coef(integer n)
+ -- out-by-1, ie coef(1)==^0, coef(2)==^1, coef(3)==^2 etc.
+ c[n] = 1
+ for i=n-1 to 2 by -1 do
+ c[i] = c[i]+c[i-1]
+ end for
+ end procedure
+
+ function is_aks_prime(integer n)
+ coef(n+1); -- (I said it was out-by-1)
+ for i=2 to n-1 do -- (technically "to n" is more correct)
+ if remainder(c[i],n)!=0 then
+ return 0
+ end if
+ end for
+ return 1
+ end function
+
+ procedure show(integer n)
+ -- (As per coef, this is (working) out-by-1)
+ object ci
+ for i=n to 1 by -1 do
+ ci = c[i]
+ if ci=1 then
+ if remainder(n-i,2)=0 then
+ if i=1 then
+ if n=1 then
+ ci = "1"
+ else
+ ci = "+1"
+ end if
+ else
+ ci = ""
+ end if
+ else
+ ci = "-1"
+ end if
+ else
+ if remainder(n-i,2)=0 then
+ ci = sprintf("+%d",ci)
+ else
+ ci = sprintf("-%d",ci)
+ end if
+ end if
+ if i=1 then -- ie ^0
+ printf(1,"%s",{ci})
+ elsif i=2 then -- ie ^1
+ printf(1,"%sx",{ci})
+ else
+ printf(1,"%sx^%d",{ci,i-1})
+ end if
+ end for
+ end procedure
+
+ procedure main()
+ for n=1 to 10 do -- (0 to 9 really)
+ coef(n);
+ printf(1,"(x-1)^%d = ", n-1);
+ show(n);
+ puts(1,'\n');
+ end for
+
+ puts(1,"\nprimes (<=53):");
+ -- coef(2); -- (needed to reset c, if we want to avoid saying 1 is prime...)
+ c[2] = 1 -- (this manages "", which is all that call did anyway...)
+ for n = 2 to 53 do
+ if is_aks_prime(n) then
+ printf(1," %d", n);
+ end if
+ end for
+ puts(1,'\n');
+ if getc(0) then end if
+ end procedure
+ main()
+
+ function abundantOdd(integer n, done, lim, bool printAll)
+ while done<lim do
+ atom tot = sum(factors(n,-1))
+ if tot>n then
+ done += 1
+ if printAll or done=lim then
+ string ln = iff(printAll?sprintf("%2d. ",done):"")
+ printf(1,"%s%,6d (proper sum:%,d)\n",{ln,n,tot})
+ end if
+ end if
+ n += 2
+ end while
+ printf(1,"\n")
+ return n
+ end function
+ printf(1,"The first 25 abundant odd numbers are:\n")
+ integer n = abundantOdd(1, 0, 25, true)
+ printf(1,"The one thousandth abundant odd number is:")
+ {} = abundantOdd(n, 25, 1000, false)
+ printf(1,"The first abundant odd number above one billion is:")
+ {} = abundantOdd(1e9+1, 0, 1, false)
+ iterator
Walker.zero().tweak(fcn(rn){
n:=rn.value;
while(True){
- sum:=0;
- foreach d in ([3.. n.toFloat().sqrt().toInt(), 2]){
- if( (y:=n/d) *d != n) continue;
- sum += ((y==d) and y or y+d)
- }
- if(sum>n){ rn.set(n+2); return(n) }
- n+=2;
+ sum:=0;
+ foreach d in ([3.. n.toFloat().sqrt().toInt(), 2]){
+ if( (y:=n/d) *d != n) continue;
+ sum += ((y==d) and y or y+d)
+ }
+ if(sum>n){ rn.set(n+2); return(n) }
+ n+=2;
}
}.fp(Ref(startAt.isOdd and startAt or startAt+1)))
}
diff --git a/Task/Accumulator-factory/Ada/accumulator-factory-1.adb b/Task/Accumulator-factory/Ada/accumulator-factory-1.ada
similarity index 100%
rename from Task/Accumulator-factory/Ada/accumulator-factory-1.adb
rename to Task/Accumulator-factory/Ada/accumulator-factory-1.ada
diff --git a/Task/Accumulator-factory/Ada/accumulator-factory-2.adb b/Task/Accumulator-factory/Ada/accumulator-factory-2.ada
similarity index 100%
rename from Task/Accumulator-factory/Ada/accumulator-factory-2.adb
rename to Task/Accumulator-factory/Ada/accumulator-factory-2.ada
diff --git a/Task/Accumulator-factory/Ada/accumulator-factory-3.adb b/Task/Accumulator-factory/Ada/accumulator-factory-3.ada
similarity index 100%
rename from Task/Accumulator-factory/Ada/accumulator-factory-3.adb
rename to Task/Accumulator-factory/Ada/accumulator-factory-3.ada
diff --git a/Task/Accumulator-factory/Ballerina/accumulator-factory.ballerina b/Task/Accumulator-factory/Ballerina/accumulator-factory.ballerina
deleted file mode 100644
index a8f8252dea..0000000000
--- a/Task/Accumulator-factory/Ballerina/accumulator-factory.ballerina
+++ /dev/null
@@ -1,38 +0,0 @@
-import ballerina/io;
-
-type numeric int|float|decimal;
-
-function accumulator(numeric acc) returns (function(numeric) returns numeric) {
- numeric sum = acc;
- return function(numeric n) returns numeric {
- numeric sum2 = sum;
- if sum2 is int && n is int {
- sum2 += n;
- } else if sum2 is float && n is float {
- sum2 += n;
- } else if sum2 is decimal && n is decimal {
- sum2 += n;
- } else if sum2 is int && n is float {
- sum2 = sum2 + n;
- } else if sum2 is int && n is decimal {
- sum2 = sum2 + n;
- } else if sum2 is float && n is int {
- sum2 += n;
- } else if sum2 is float && n is decimal {
- sum2 = sum2 + n;
- } else if sum2 is decimal && n is int {
- sum2 += n;
- } else if sum2 is decimal && n is float {
- sum2 += n;
- }
- sum = sum2;
- return sum;
- };
-}
-
-public function main() {
- var x = accumulator(1);
- _ = x(5);
- _ = accumulator(2);
- io:println(x(2.3));
-}
diff --git a/Task/Accumulator-factory/Crystal/accumulator-factory.cr b/Task/Accumulator-factory/Crystal/accumulator-factory.crystal
similarity index 100%
rename from Task/Accumulator-factory/Crystal/accumulator-factory.cr
rename to Task/Accumulator-factory/Crystal/accumulator-factory.crystal
diff --git a/Task/Accumulator-factory/Delphi/accumulator-factory.pas b/Task/Accumulator-factory/Delphi/accumulator-factory.delphi
similarity index 100%
rename from Task/Accumulator-factory/Delphi/accumulator-factory.pas
rename to Task/Accumulator-factory/Delphi/accumulator-factory.delphi
diff --git a/Task/Accumulator-factory/EMal/accumulator-factory.emal b/Task/Accumulator-factory/EMal/accumulator-factory.emal
index b0da805059..7072fb070e 100644
--- a/Task/Accumulator-factory/EMal/accumulator-factory.emal
+++ b/Task/Accumulator-factory/EMal/accumulator-factory.emal
@@ -7,9 +7,9 @@ in Org:RosettaCode
|^
type Number allows int, real
type AccumulatorUsingNumber
-fun foo ← fun by Number n
- fun g ← Number by Number i
- return n +← i
+fun foo = fun by Number n
+ fun g = Number by Number i
+ return n += i
end
return g
end
@@ -17,16 +17,16 @@ type AccumulatorUsingVar
^|EMal has an universal supertype Variable (var) that can be used.
|Some manual type checks are required.
|^
-fun checkType ← void by var value
- if generic!value ≠ real and generic!value ≠ int
- error(1, "Only real and int values can be used")
+fun checkType = void by var value
+ if generic!value != real and generic!value != int
+ Event.error(1, "Only real and int values can be used").raise()
end
end
-fun foo ← fun by var n
+fun foo = fun by var n
checkType(n)
- fun g ← var by var i
+ fun g = var by var i
checkType(i)
- return n +← i
+ return n += i
end
return g
end
@@ -35,15 +35,15 @@ type Main
|it is time to create a list holding both data types.
|We iterate over the solutions in order to test them.
|^
-List solutions ← generic[AccumulatorUsingNumber, AccumulatorUsingVar]
-for int i ← 0; i < solutions.length; ++i
- generic solution ← solutions[i]
- writeLine("[ solution " + (i + 1) + " ]")
- fun x ← :solution.foo(1)
+List solutions = generic[AccumulatorUsingNumber, AccumulatorUsingVar]
+for int i = 0; i < solutions.length; ++i
+ generic solution = solutions[i]
+ writeLine("=== solution " + (i + 1) + " ===")
+ fun x = :solution.foo(1)
x(5)
:solution.foo(3)
watch(x(2.3))
- fun y ← :solution.foo(1)
+ fun y = :solution.foo(1)
y(5)
:solution.foo(3)
watch(y(2))
diff --git a/Task/Accumulator-factory/Elena/accumulator-factory.elena b/Task/Accumulator-factory/Elena/accumulator-factory.elena
index 16e02b3b7b..be112e0585 100644
--- a/Task/Accumulator-factory/Elena/accumulator-factory.elena
+++ b/Task/Accumulator-factory/Elena/accumulator-factory.elena
@@ -1,16 +1,16 @@
function(acc)
= (n => acc.append(n));
-Accumulator(n)
+accumulator(n)
= function(new Variable(n));
-public Program()
+public program()
{
- var x := Accumulator(1);
+ var x := accumulator(1);
x(5);
- var y := Accumulator(3);
+ var y := accumulator(3);
- Console.write(x(2.3r))
+ console.write(x(2.3r))
}
diff --git a/Task/Accumulator-factory/Elixir/accumulator-factory-1.ex b/Task/Accumulator-factory/Elixir/accumulator-factory-1.elixir
similarity index 100%
rename from Task/Accumulator-factory/Elixir/accumulator-factory-1.ex
rename to Task/Accumulator-factory/Elixir/accumulator-factory-1.elixir
diff --git a/Task/Accumulator-factory/Elixir/accumulator-factory-2.ex b/Task/Accumulator-factory/Elixir/accumulator-factory-2.elixir
similarity index 100%
rename from Task/Accumulator-factory/Elixir/accumulator-factory-2.ex
rename to Task/Accumulator-factory/Elixir/accumulator-factory-2.elixir
diff --git a/Task/Accumulator-factory/Julia/accumulator-factory.jl b/Task/Accumulator-factory/Julia/accumulator-factory.julia
similarity index 100%
rename from Task/Accumulator-factory/Julia/accumulator-factory.jl
rename to Task/Accumulator-factory/Julia/accumulator-factory.julia
diff --git a/Task/Accumulator-factory/Kotlin/accumulator-factory.kts b/Task/Accumulator-factory/Kotlin/accumulator-factory.kotlin
similarity index 100%
rename from Task/Accumulator-factory/Kotlin/accumulator-factory.kts
rename to Task/Accumulator-factory/Kotlin/accumulator-factory.kotlin
diff --git a/Task/Accumulator-factory/M2000-Interpreter/accumulator-factory.m2000 b/Task/Accumulator-factory/M2000-Interpreter/accumulator-factory.m2000
index b9bdf82db9..38c3698bc9 100644
--- a/Task/Accumulator-factory/M2000-Interpreter/accumulator-factory.m2000
+++ b/Task/Accumulator-factory/M2000-Interpreter/accumulator-factory.m2000
@@ -1,33 +1,32 @@
-Module CheckIt {
- Def VarType(n)=Type$(n)
- foo=lambda (acc) -> {
- =lambda acc -> {
- if empty then =acc : exit
- read x
- acc+=x
- =acc
- }
- }
- Double a=1
- x = foo(a)
- call void x(5) ' Without Void a non zero value count as Error.
- call foo(3)
- print VarType(x())="Double", x(2.3)=8.3 ' Double literal
- Single m=1
- z=foo(m)
- long L=5
- ? VarType(z(L))="Single", z(2.3)=8.3~ ' Single literal
- Currency c=1
- zc=foo(c)
- ? VarType(zc(5))="Currency", zc(2.3)=8.3# ' Currency literal
- Decimal d=1
- zd=foo(d)
- ? VarType(zd(5))="Decimal", zd(2.3)=8.3@ ' Decimal literal
- Date dt=1
- zdt=foo(dt)
- ? VarType(zdt(5))="Date", zdt(2.3)=8.3ud ' Date literal
- Long Long LL=1
- zdt=foo(LL)
- ? VarType(zdt(5))="Long Long", zdt(2.3)=8&& ' Long Long literal
+\\ M2000 Interpreter
+\\ accumulator factory
+foo=lambda acc=0 (n as double=0) -> {
+ \\ interpreter place this: read n as double=0 as first line of lambda function
+ if n=0 then =acc : exit
+ acc+=n
+ \\ acc passed as a closuer to lambda (a copy of acc in the result lambda function)
+ =lambda acc -> {
+ ' if stack of values is empty then return a copy of acc
+ if empty then =acc : exit
+ read x
+ \\ x has no type here, can be any numeric type (also can be an object too)
+ \\ accumulator is double, and is a closure (a copy of acc in foo)
+ acc+=x
+ \\ any variable in M2000 hold first type
+ \\ if x is an object then we get error, except if object use this operator
+ x=acc
+ \\ so we return x type
+ =x
+ }
}
-CheckIt
+x=foo(1&) ' 1& is long type (32bit)
+call void x(5) ' 5 is double type (the default type for M2000)
+call void foo(3#) ' void tell to interpreter to throw result, 3# is Currency type
+print x(2.3@) ' print 8.3, 2.3@ is Decimal type
+print foo()=4 ' print true
+def ExpType$(z)=type$(z)
+print ExpType$(foo())="Double"
+print ExpType$(x(0&))="Long"
+print ExpType$(x(0@))="Decimal"
+print ExpType$(x())="Double"
+print ExpType$(foo(20))="lambda"
diff --git a/Task/Accumulator-factory/OCaml/accumulator-factory.ml b/Task/Accumulator-factory/OCaml/accumulator-factory.ocaml
similarity index 100%
rename from Task/Accumulator-factory/OCaml/accumulator-factory.ml
rename to Task/Accumulator-factory/OCaml/accumulator-factory.ocaml
diff --git a/Task/Accumulator-factory/PascalABC.NET/accumulator-factory.pas b/Task/Accumulator-factory/PascalABC.NET/accumulator-factory.pas
deleted file mode 100644
index 86c0cbcc7d..0000000000
--- a/Task/Accumulator-factory/PascalABC.NET/accumulator-factory.pas
+++ /dev/null
@@ -1,12 +0,0 @@
-function foo(n: real): real -> real :=
- i -> begin
- n += i;
- Result := n;
- end;
-
-begin
- var x := foo(1);
- x(5);
- foo(3);
- print(x(2.3));
-end.
diff --git a/Task/Accumulator-factory/Pluto/accumulator-factory.pluto b/Task/Accumulator-factory/Pluto/accumulator-factory.pluto
deleted file mode 100644
index 5baa4348fd..0000000000
--- a/Task/Accumulator-factory/Pluto/accumulator-factory.pluto
+++ /dev/null
@@ -1,11 +0,0 @@
-local function accumulator(acc)
- return |n| -> do
- acc += n
- return acc
- end
-end
-
-local x = accumulator(1)
-x(5)
-accumulator(3)
-print(x(2.3))
diff --git a/Task/Accumulator-factory/PowerShell/accumulator-factory-1.ps1 b/Task/Accumulator-factory/PowerShell/accumulator-factory-1.psh
similarity index 100%
rename from Task/Accumulator-factory/PowerShell/accumulator-factory-1.ps1
rename to Task/Accumulator-factory/PowerShell/accumulator-factory-1.psh
diff --git a/Task/Accumulator-factory/PowerShell/accumulator-factory-2.ps1 b/Task/Accumulator-factory/PowerShell/accumulator-factory-2.psh
similarity index 100%
rename from Task/Accumulator-factory/PowerShell/accumulator-factory-2.ps1
rename to Task/Accumulator-factory/PowerShell/accumulator-factory-2.psh
diff --git a/Task/Accumulator-factory/REBOL/accumulator-factory.rebol b/Task/Accumulator-factory/REBOL/accumulator-factory.rebol
new file mode 100644
index 0000000000..35b5392daf
--- /dev/null
+++ b/Task/Accumulator-factory/REBOL/accumulator-factory.rebol
@@ -0,0 +1,8 @@
+make-acc-gen: func [start-val] [
+ use [state] [
+ state: start-val
+ func [value] [
+ state: state + value
+ ]
+ ]
+]
diff --git a/Task/Accumulator-factory/Rebol/accumulator-factory-1.rebol b/Task/Accumulator-factory/Rebol/accumulator-factory-1.rebol
deleted file mode 100644
index 0738505b60..0000000000
--- a/Task/Accumulator-factory/Rebol/accumulator-factory-1.rebol
+++ /dev/null
@@ -1,11 +0,0 @@
-make-acc-gen: func [start-val] [
- use [state] [
- state: start-val
- func [value] [
- state: state + value
- ]
- ]
-]
-gen: make-acc-gen 1
-print gen 5 ;== 6
-print gen 2.3 ;== 8.3
diff --git a/Task/Accumulator-factory/Rebol/accumulator-factory-2.rebol b/Task/Accumulator-factory/Rebol/accumulator-factory-2.rebol
deleted file mode 100644
index 02468d5450..0000000000
--- a/Task/Accumulator-factory/Rebol/accumulator-factory-2.rebol
+++ /dev/null
@@ -1,25 +0,0 @@
-;; Define a generator function 'gen' with an optional refinement '/init'
-;; - 'value' is a required number passed to the function
-;; - '/init' is an optional refinement for initialization
-gen: function/with [value [number!] /init] [
-
- ;; If '/init' refinement is used, initialize state and exit immediately
- if init [
- state: value ;; Set the initial state to the provided value
- exit ;; Exit, so nothing else in the function is run
- ]
-
- ;; If not initializing, add 'value' to 'state'
- state: state + value
-
- ;; The function returns the new state each call
-][state: 0] ;; 'state' is a local variable, initialized once per definition (persistent closure)
-
-;; Initialize the 'state' value of gen to 1 by calling it with '/init'
-gen/init 1
-
-;; Call gen with 5: Adds 5 to state and prints the result (should print 6)
-print gen 5
-
-;; Call gen with 2.3: Adds 2.3 to state and prints the result (should print 8.3)
-print gen 2.3
diff --git a/Task/Accumulator-factory/Red/accumulator-factory.red b/Task/Accumulator-factory/Red/accumulator-factory.red
deleted file mode 100644
index 9bceca4447..0000000000
--- a/Task/Accumulator-factory/Red/accumulator-factory.red
+++ /dev/null
@@ -1,15 +0,0 @@
-Red [ "Accumulator factory - hinjolicious" ]
-
-; just a helper func to display informative output
-demo: function [s b] [print ["^/==" s "==^/^/" mold/only b "^/>>"] do b]
-
-demo "Accumulator" [
-foo: function [init] [
- acc: init
- closure [val][acc: acc + val]
-]
-x: foo 1
-print x 5 ; 6
-foo 3 ; no effect!
-print x 2.3 ; 8.3
-]
diff --git a/Task/Accumulator-factory/Rust/accumulator-factory-1.rs b/Task/Accumulator-factory/Rust/accumulator-factory-1.rust
similarity index 100%
rename from Task/Accumulator-factory/Rust/accumulator-factory-1.rs
rename to Task/Accumulator-factory/Rust/accumulator-factory-1.rust
diff --git a/Task/Accumulator-factory/Rust/accumulator-factory-2.rs b/Task/Accumulator-factory/Rust/accumulator-factory-2.rust
similarity index 100%
rename from Task/Accumulator-factory/Rust/accumulator-factory-2.rs
rename to Task/Accumulator-factory/Rust/accumulator-factory-2.rust
diff --git a/Task/Accumulator-factory/Scheme/accumulator-factory.scm b/Task/Accumulator-factory/Scheme/accumulator-factory.ss
similarity index 100%
rename from Task/Accumulator-factory/Scheme/accumulator-factory.scm
rename to Task/Accumulator-factory/Scheme/accumulator-factory.ss
diff --git a/Task/Accumulator-factory/V-(Vlang)/accumulator-factory.v b/Task/Accumulator-factory/V-(Vlang)/accumulator-factory.v
deleted file mode 100644
index c799934393..0000000000
--- a/Task/Accumulator-factory/V-(Vlang)/accumulator-factory.v
+++ /dev/null
@@ -1,23 +0,0 @@
-struct Generator {
- mut:
- a_n []f64
-}
-
-fn (mut gen Generator) generator(ir f64) fn (f64) f64 {
- gen.a_n << ir
- id := gen.a_n.len - 1
- return fn (mut gen Generator, id int) fn (f64) f64 {
- return fn [mut gen, id] (d f64) f64 {
- gen.a_n[id] += d
- return gen.a_n[id]
- }
- }(mut gen, id)
-}
-
-fn main() {
- mut o_generator := Generator{}
- accumulator := o_generator.generator(1)
- println(accumulator(5))
- o_generator.generator(3)
- println(accumulator(2.3))
-}
diff --git a/Task/Accumulator-factory/VBScript/accumulator-factory-1.vbs b/Task/Accumulator-factory/VBScript/accumulator-factory-1.vb
similarity index 100%
rename from Task/Accumulator-factory/VBScript/accumulator-factory-1.vbs
rename to Task/Accumulator-factory/VBScript/accumulator-factory-1.vb
diff --git a/Task/Accumulator-factory/VBScript/accumulator-factory-2.vbs b/Task/Accumulator-factory/VBScript/accumulator-factory-2.vb
similarity index 100%
rename from Task/Accumulator-factory/VBScript/accumulator-factory-2.vbs
rename to Task/Accumulator-factory/VBScript/accumulator-factory-2.vb
diff --git a/Task/Achilles-numbers/Ada/achilles-numbers.adb b/Task/Achilles-numbers/Ada/achilles-numbers.adb
deleted file mode 100644
index 054f448da3..0000000000
--- a/Task/Achilles-numbers/Ada/achilles-numbers.adb
+++ /dev/null
@@ -1,205 +0,0 @@
-pragma Ada_2022;
-
-with Ada.Text_IO;
-with Ada.Numerics; use Ada.Numerics;
-with Ada.Numerics.Long_Elementary_Functions;
-use Ada.Numerics.Long_Elementary_Functions;
-with Ada.Strings; use Ada.Strings;
-with Ada.Strings.Fixed; use Ada.Strings.Fixed;
-with Prime_Numbers;
-
-procedure Achilles_Numbers is
-
- package Long_Integer_Prime_Numbers is new Prime_Numbers
- (Integer, 0, 1, 2);
- use Long_Integer_Prime_Numbers;
-
- -- A powerful number N is such that for every primer factor P of it
- -- P^2 also divides N
- -- Is_Powerful function decomposes the given number N in its prime factors
- -- and then it checks if each factor squared is a divisor of N
- function Is_Powerful (Number : Natural) return Boolean is
- List : constant Number_List := Decompose (Integer (Number));
- begin
- for Index in List'Range loop
- declare
- N : constant Long_Long_Integer := Long_Long_Integer (Number);
- F : constant Long_Long_Integer := Long_Long_Integer (List (Index));
- begin
- if N mod (F * F) /= 0 then
- return False;
- end if;
- end;
- end loop;
-
- return True;
- end Is_Powerful;
-
- -- The Is_Power function checks if a given number N can be written
- -- as a power of two integers that are > 1
- -- It makes use of the mathematical expression N = A^B
- -- taking Log(N) = Log (A^B) equals to B = Log (N) / Log (A)
- -- where the solutions are when B is an integer > 1
- function Is_Power (N : Integer) return Boolean is
-
- function Is_Almost_Equal (A : Long_Float;
- B : Long_Float) return Boolean is
- Epsilon : constant := 0.000_000_000_000_001;
- begin
- if abs (A - B) < Epsilon then
- return True;
- else
- return False;
- end if;
- end Is_Almost_Equal;
-
- A : Integer := 2;
- B : Long_Float;
- Log_Of_N : constant Long_Float := Log (Long_Float (N), 2.0);
- begin
- if N = 1 then
- return True;
- end if;
-
- while True loop
- B := Log_Of_N / Log (Long_Float (A), 2.0);
-
- if Is_Almost_Equal (B, Long_Float (Integer (B)))
- and then Integer (B) > 1
- then
- return True;
- end if;
-
- exit when A * A > N;
- A := @ + 1;
- end loop;
-
- return False;
-
- end Is_Power;
-
- -- An Achilles number is a powerful number that can't be expressed
- -- as a power
- function Is_Achilles (N : Integer) return Boolean is
- begin
- if Is_Powerful (N) then
- if Is_Power (N) = False then
- return True;
- end if;
- end if;
-
- return False;
- end Is_Achilles;
-
- -- Calculates the Euler totient of a number
- function Totient (N : Integer) return Integer is
- Tot : Integer := N;
- I : Integer;
- N2 : Integer := N;
- begin
- I := 2;
- while I * I <= N2 loop
- if N2 mod I = 0 then
- while N2 mod I = 0 loop
- N2 := N2 / I;
- end loop;
- Tot := Tot - Tot / I;
- end if;
-
- if I = 2 then
- I := 1;
- end if;
- I := I + 2;
- end loop;
-
- if N2 > 1 then
- Tot := Tot - Tot / N2;
- end if;
-
- return Tot;
- end Totient;
-
- -- A Strong Achilles number is an Achilles number whose Euler Totient
- -- is also an Achilles number
- function Is_Strong_Achilles (N : Integer) return Boolean is
- begin
- if Is_Achilles (N) then
- if Is_Achilles (Totient (N)) then
- return True;
- end if;
- end if;
-
- return False;
- end Is_Strong_Achilles;
-
- -- Counts the digits in a number by taking the string from
- -- its 'Image attribute, trimming it and counting the characters
- function Count_Digits (N : Integer) return Natural is
- Integer_Str : constant String := Trim (N'Image, Both);
- begin
- return Integer_Str'Length;
- end Count_Digits;
-
-begin
- -- Find the first 50 Achilles numbers
- declare
- N : Integer := 1;
- Count : Integer := 1;
- begin
- Ada.Text_IO.Put_Line ("First 50 Achilles numbers:");
-
- while Count <= 50 loop
-
- if Is_Achilles (N) then
- Count := @ + 1;
- Ada.Text_IO.Put (N'Image & " ");
- end if;
-
- N := @ + 1;
- end loop;
-
- Ada.Text_IO.New_Line;
- end;
-
- -- Find the first 20 Strong Achilles numbers
- declare
- N : Integer := 1;
- Count : Integer := 1;
- begin
- Ada.Text_IO.Put_Line ("First 20 Strong Achilles numbers:");
-
- while Count <= 20 loop
-
- if Is_Strong_Achilles (N) then
- Count := @ + 1;
- Ada.Text_IO.Put (N'Image & " ");
- end if;
-
- N := @ + 1;
- end loop;
-
- Ada.Text_IO.New_Line;
- end;
-
- -- Count numbers with digits
- declare
- Counts : array (2 .. 6) of Natural := [others => 0];
- N : Integer := 1;
- begin
- Ada.Text_IO.Put_Line ("Number of Achilles numbers with:");
-
- while Count_Digits (N) <= Counts'Last loop
-
- -- Ada.Text_IO.Put_Line ("Testing: " & N'Image);
-
- if Is_Achilles (N) then
- Counts (Count_Digits (N)) := @ + 1;
- end if;
- N := @ + 1;
- end loop;
-
- for I in Counts'Range loop
- Ada.Text_IO.Put_Line (I'Image & " digits: " & Counts (I)'Image);
- end loop;
- end;
-end Achilles_Numbers;
diff --git a/Task/Achilles-numbers/Arturo/achilles-numbers.arturo b/Task/Achilles-numbers/Arturo/achilles-numbers.arturo
deleted file mode 100644
index 939ef41b2a..0000000000
--- a/Task/Achilles-numbers/Arturo/achilles-numbers.arturo
+++ /dev/null
@@ -1,36 +0,0 @@
-prettyPrint: function [res][
- res | split.every: 10
- | loop => [print map & 'x -> pad to :string x 7]
-]
-
-achilles?: function [n][
- exps: values tally factors.prime n
- and? -> not? some? exps => one?
- -> 1 = fold exps [a b] -> gcd @[a b]
-]
-
-phi: function [n][
- pf: tally factors.prime n
- fold.seed:1 keys pf [res pr][
- ipr: to :integer pr
- res * (ipr - 1) * ipr ^ dec to :integer pf\[ipr]
- ]
-]
-
-n: 50
-print ["First" n "Achilles numbers:"]
-2..∞ | select.first: n => achilles?
- | prettyPrint
-
-print ""
-print ["First" n "strong Achilles numbers:"]
-2..∞ | select.first: n 'x -> and? [achilles? x][achilles? phi x]
- | prettyPrint
-
-print ""
-counts: 2..1000000 | select => achilles?
- | map => [size digits &]
- | tally
-
-loop counts [k v]->
- print [k "digits:" v]
diff --git a/Task/Achilles-numbers/Ballerina/achilles-numbers.ballerina b/Task/Achilles-numbers/Ballerina/achilles-numbers.ballerina
deleted file mode 100644
index ff31e0dfeb..0000000000
--- a/Task/Achilles-numbers/Ballerina/achilles-numbers.ballerina
+++ /dev/null
@@ -1,92 +0,0 @@
-import ballerina/io;
-
-map pps = {};
-
-function getPerfectPowers(int maxExp) {
- int upper = 10.0.pow(maxExp);
- int upper2 = 10.0.pow(maxExp).sqrt().floor();
- foreach int i in 2...upper2 {
- int p = i;
- while true {
- if p > int:MAX_VALUE / i { break; }
- p *= i;
- if p >= upper { break; }
- pps[p.toString()] = 1;
- }
- }
-}
-
-function getAchilles(int minExp, int maxExp) returns map {
- int lower = 10.0.pow(minExp);
- int upper = 10.0.pow(maxExp);
- int upper2 = 10.0.pow(maxExp).cbrt().floor();
- int upper3 = 10.0.pow(maxExp).sqrt().floor();
- map achilles = {};
- foreach int b in 1...upper2 {
- int b3 = b * b * b;
- foreach int a in 1...upper3 {
- int p = b3 * a * a;
- if p >= upper { break; }
- if p >= lower {
- string ps = p.toString();
- if !pps.hasKey(ps) {
- achilles[ps] = 1;
- }
- }
- }
- }
- return achilles;
-}
-
-function totient(int m) returns int {
- if m < 1 { return 0; }
- int tot = m;
- int n = m;
- int i = 2;
- while i * i <= n {
- if (n % i) == 0 {
- while (n % i) == 0 { n /= i; }
- tot -= tot / i;
- }
- if i == 2 { i = 1; }
- i += 2;
- }
- if n > 1 { tot -= tot / n; }
- return tot;
-}
-
-public function main() returns error? {
- final int maxDigits = 14;
- getPerfectPowers(maxDigits);
- map achillesSet = getAchilles(1, 5); // enough for first 2 parts
- int[] achilles = achillesSet.keys().map(s => check int:fromString(s)).sort();
- io:println("First 50 Achilles numbers:");
- foreach int i in 0..<50 {
- string s = achilles[i].toString().padStart(4);
- io:print(s, " ");
- if (i + 1) % 10 == 0 { io:println(); }
- }
- io:println("\nFirst 30 strong Achilles numbers:");
- int[] strongAchilles = [];
- int count = 0;
- int n = 0;
- while count < 30 {
- int tot = totient(achilles[n]);
- if achillesSet.hasKey(tot.toString()) {
- strongAchilles.push(achilles[n]);
- count += 1;
- }
- n += 1;
- }
- foreach int j in 0..<30 {
- string t = strongAchilles[j].toString().padStart(5);
- io:print(t, " ");
- if (j + 1) % 10 == 0 { io:println(); }
- }
-
- io:println("\nNumber of Achilles numbers with:");
- foreach int d in 2...maxDigits {
- int ac = getAchilles(d - 1, d).length();
- io:println(d.toString().padStart(2), " digits: ", ac);
- }
-}
diff --git a/Task/Achilles-numbers/C/achilles-numbers.c b/Task/Achilles-numbers/C/achilles-numbers.c
deleted file mode 100644
index f7ed293f8e..0000000000
--- a/Task/Achilles-numbers/C/achilles-numbers.c
+++ /dev/null
@@ -1,105 +0,0 @@
-#include
-#include
-#include
-#include
-
-bool is_prime(int n) {
- if (n < 2) return false;
- if (n % 2 == 0 && n != 2) return false;
- for (int i = 3; i <= sqrt(n); i += 2) {
- if (n % i == 0) return false;
- }
- return true;
-}
-
-int phi(int n) {
- int result = n;
- for (int p = 2; p * p <= n; p++) {
- if (n % p == 0) {
- while (n % p == 0) n /= p;
- result -= result / p;
- }
- }
- if (n > 1) result -= result / n;
- return result;
-}
-
-bool is_powerful(int n) {
- int m = n;
- for (int p = 2; p * p <= n; p++) {
- if (m % p == 0) {
- int exp = 0;
- while (m % p == 0) {
- m /= p;
- exp++;
- }
- if (exp < 2) return false;
- }
- }
- if (m > 1) return false;
- return true;
-}
-
-bool is_perfect_power(int n) {
- for (int k = 2; k <= log2(n); k++) {
- double root = pow(n, 1.0 / k);
- int r = round(root);
- if (pow(r, k) == n) return true;
- }
- return false;
-}
-
-bool is_achilles(int n) {
- return is_powerful(n) && !is_perfect_power(n);
-}
-
-int main() {
- int *achilles = NULL, *strong = NULL;
- int a_count = 0, s_count = 0;
- int digit_counts[7] = {0};
-
- for (int n = 2; a_count < 50 || s_count < 50; n++) {
- if (is_achilles(n)) {
- if (a_count < 50){
- achilles = realloc(achilles, (a_count+1)*sizeof(int));
- achilles[a_count++] = n;
- }
-
- int ph = phi(n);
- if (is_achilles(ph)) {
- if (s_count < 50){
- strong = realloc(strong, (s_count+1)*sizeof(int));
- strong[s_count++] = n;
- }
- }
-
- }
- }
-
- for (int n = 2; n <= 1000000; n++) {
- if (is_achilles(n)) {
- int digits = floor(log10(n)) + 1;
- if (digits >= 2 && digits <= 15) {
- digit_counts[digits]++;
- }
- }
- }
-
- printf("First 50 Achilles numbers:\n");
- for (int i = 0; i < 50; i++) {
- printf("%d ", achilles[i]);
- }
- printf("\n\n");
-
- printf("First 50 Strong Achilles numbers:\n");
- for (int i = 0; i < 50; i++) {
- printf("%d ", strong[i]);
- }
- printf("\n\n");
-
- for (int d = 2; d <= 6; d++) {
- printf("Achilles numbers with %d digits: %d\n", d, digit_counts[d]);
- }
-
- return 0;
-}
diff --git a/Task/Achilles-numbers/COBOL/achilles-numbers.cob b/Task/Achilles-numbers/COBOL/achilles-numbers.cob
deleted file mode 100644
index f5fdc87beb..0000000000
--- a/Task/Achilles-numbers/COBOL/achilles-numbers.cob
+++ /dev/null
@@ -1,257 +0,0 @@
- IDENTIFICATION DIVISION.
- PROGRAM-ID. ACHILLES-NUMBERS.
-
- DATA DIVISION.
- WORKING-STORAGE SECTION.
- 01 CONSTANTS.
- 05 MAX-LIMIT PIC 9(10) COMP VALUE 100000000.
- 05 MAX-LIMIT-SQR PIC 9(6) COMP VALUE 10000.
- 05 MAX-LIMIT-CUB PIC 9(6) COMP VALUE 464.
-
- 01 PP-TEMP-DATA.
- 05 PP-TEMP-COUNT PIC 9(6) COMP VALUE 0.
- 05 PP-TEMP-TABLE.
- 10 PP-TEMP OCCURS 1 TO 15000 TIMES DEPENDING ON PP-TEMP-COUNT
- ASCENDING KEY IS PP-TEMP
- PIC 9(10) COMP.
-
- 01 PP-FINAL-DATA.
- 05 PP-COUNT PIC 9(6) COMP VALUE 0.
- 05 PP-TABLE.
- 10 P-POWER OCCURS 1 TO 15000 TIMES DEPENDING ON PP-COUNT
- ASCENDING KEY IS P-POWER
- INDEXED BY PP-IDX
- PIC 9(10) COMP.
-
- 01 ACH-TEMP-DATA.
- 05 ACH-TEMP-COUNT PIC 9(6) COMP VALUE 0.
- 05 ACH-TEMP-TABLE.
- 10 ACH-TEMP OCCURS 1 TO 35000 TIMES DEPENDING ON ACH-TEMP-COUNT
- ASCENDING KEY IS ACH-TEMP
- PIC 9(10) COMP.
-
- 01 ACH-FINAL-DATA.
- 05 ACH-COUNT PIC 9(6) COMP VALUE 0.
- 05 ACH-TABLE.
- 10 ACHILLES OCCURS 1 TO 15000 TIMES DEPENDING ON ACH-COUNT
- ASCENDING KEY IS ACHILLES
- INDEXED BY ACH-IDX
- PIC 9(10) COMP.
-
- 01 LOOP-VARS.
- 05 I PIC 9(6) COMP.
- 05 B PIC 9(6) COMP.
- 05 A PIC 9(6) COMP.
- 05 LAST-VAL PIC 9(10) COMP.
-
- 01 CALC-VARS.
- 05 P PIC 9(18) COMP.
- 05 B3 PIC 9(18) COMP.
- 05 SEARCH-P PIC 9(10) COMP.
-
- 01 TOT-VARS.
- 05 TOTIENT-IN PIC 9(10) COMP.
- 05 TOTIENT-OUT PIC 9(10) COMP.
- 05 TOT-I PIC 9(10) COMP.
- 05 TOT-N PIC 9(10) COMP.
- 05 TOT-Q PIC 9(10) COMP.
- 05 TOT-R PIC 9(10) COMP.
- 05 SUB-VAL PIC 9(10) COMP.
-
- 01 STRONG-ACH-VARS.
- 05 FOUND-FLAG PIC 9 VALUE 0.
- 05 STRONG-COUNT PIC 9(4) COMP VALUE 0.
- 05 STRONG-ACH OCCURS 30 TIMES PIC 9(10) COMP.
-
- 01 REPORT-VARS.
- 05 DISP-4 PIC ZZZ9.
- 05 DISP-5 PIC ZZZZ9.
- 05 DISP-2 PIC Z9.
- 05 DISP-NUM PIC Z(9)9.
- 05 FORMATTED-LINE PIC X(60) VALUE SPACES.
- 05 LINE-POS PIC 9(4) COMP VALUE 1.
- 05 ROW-COUNT PIC 9(4) COMP VALUE 0.
- 05 DIGIT-COUNT PIC 9(10) COMP.
- 05 D PIC 9(2) COMP.
- 05 LOWER-BND PIC 9(10) COMP.
- 05 UPPER-BND PIC 9(10) COMP.
-
- PROCEDURE DIVISION.
- MAIN-PARA.
- PERFORM GENERATE-PERFECT-POWERS.
- PERFORM GENERATE-ACHILLES.
- PERFORM PRINT-FIRST-50.
- PERFORM PRINT-STRONG-30.
- PERFORM PRINT-DIGITS.
- STOP RUN.
-
- GENERATE-PERFECT-POWERS.
- MOVE 0 TO PP-TEMP-COUNT.
- PERFORM VARYING I FROM 2 BY 1 UNTIL I > MAX-LIMIT-SQR
- COMPUTE P = I * I
- PERFORM UNTIL P >= MAX-LIMIT
- ADD 1 TO PP-TEMP-COUNT
- MOVE P TO PP-TEMP(PP-TEMP-COUNT)
- COMPUTE P = P * I
- END-PERFORM
- END-PERFORM.
-
- SORT PP-TEMP ON ASCENDING KEY PP-TEMP.
-
- MOVE 0 TO PP-COUNT.
- MOVE 0 TO LAST-VAL.
- PERFORM VARYING I FROM 1 BY 1 UNTIL I > PP-TEMP-COUNT
- IF PP-TEMP(I) NOT = LAST-VAL THEN
- ADD 1 TO PP-COUNT
- MOVE PP-TEMP(I) TO P-POWER(PP-COUNT)
- MOVE PP-TEMP(I) TO LAST-VAL
- END-IF
- END-PERFORM.
-
- GENERATE-ACHILLES.
- MOVE 0 TO ACH-TEMP-COUNT.
- PERFORM VARYING B FROM 1 BY 1 UNTIL B > MAX-LIMIT-CUB
- COMPUTE B3 = B * B * B
- PERFORM VARYING A FROM 1 BY 1 UNTIL A > MAX-LIMIT-SQR
- COMPUTE P = B3 * A * A
- IF P >= MAX-LIMIT THEN
- EXIT PERFORM
- END-IF
-
- IF P > 1 THEN
- MOVE P TO SEARCH-P
- MOVE 0 TO FOUND-FLAG
- SEARCH ALL P-POWER
- AT END
- MOVE 0 TO FOUND-FLAG
- WHEN P-POWER(PP-IDX) = SEARCH-P
- MOVE 1 TO FOUND-FLAG
- END-SEARCH
-
- IF FOUND-FLAG = 0 THEN
- ADD 1 TO ACH-TEMP-COUNT
- MOVE P TO ACH-TEMP(ACH-TEMP-COUNT)
- END-IF
- END-IF
- END-PERFORM
- END-PERFORM.
-
- SORT ACH-TEMP ON ASCENDING KEY ACH-TEMP.
-
- MOVE 0 TO ACH-COUNT.
- MOVE 0 TO LAST-VAL.
- PERFORM VARYING I FROM 1 BY 1 UNTIL I > ACH-TEMP-COUNT
- IF ACH-TEMP(I) NOT = LAST-VAL THEN
- ADD 1 TO ACH-COUNT
- MOVE ACH-TEMP(I) TO ACHILLES(ACH-COUNT)
- MOVE ACH-TEMP(I) TO LAST-VAL
- END-IF
- END-PERFORM.
-
- CALC-TOTIENT.
- MOVE TOTIENT-IN TO TOT-N
- MOVE TOTIENT-IN TO TOTIENT-OUT
- MOVE 2 TO TOT-I
- PERFORM UNTIL TOT-I * TOT-I > TOT-N
- DIVIDE TOT-N BY TOT-I GIVING TOT-Q REMAINDER TOT-R
- IF TOT-R = 0 THEN
- PERFORM UNTIL TOT-R NOT = 0
- DIVIDE TOT-N BY TOT-I GIVING TOT-Q REMAINDER TOT-R
- IF TOT-R = 0 THEN
- MOVE TOT-Q TO TOT-N
- END-IF
- END-PERFORM
- DIVIDE TOTIENT-OUT BY TOT-I GIVING SUB-VAL
- SUBTRACT SUB-VAL FROM TOTIENT-OUT
- END-IF
- IF TOT-I = 2 THEN
- MOVE 1 TO TOT-I
- END-IF
- ADD 2 TO TOT-I
- END-PERFORM.
- IF TOT-N > 1 THEN
- DIVIDE TOTIENT-OUT BY TOT-N GIVING SUB-VAL
- SUBTRACT SUB-VAL FROM TOTIENT-OUT
- END-IF.
-
- PRINT-FIRST-50.
- DISPLAY "First 50 Achilles numbers:".
- MOVE SPACES TO FORMATTED-LINE.
- MOVE 1 TO LINE-POS.
- MOVE 0 TO ROW-COUNT.
- PERFORM VARYING I FROM 1 BY 1 UNTIL I > 50
- MOVE ACHILLES(I) TO DISP-4
- STRING DISP-4 " " DELIMITED BY SIZE
- INTO FORMATTED-LINE WITH POINTER LINE-POS
- ADD 1 TO ROW-COUNT
- IF ROW-COUNT = 10 THEN
- DISPLAY FORMATTED-LINE(1:LINE-POS - 1)
- MOVE SPACES TO FORMATTED-LINE
- MOVE 1 TO LINE-POS
- MOVE 0 TO ROW-COUNT
- END-IF
- END-PERFORM.
-
- PRINT-STRONG-30.
- DISPLAY " ".
- DISPLAY "First 30 strong Achilles numbers:".
- MOVE 0 TO STRONG-COUNT.
- PERFORM VARYING I FROM 1 BY 1 UNTIL STRONG-COUNT >= 30 OR I > ACH-COUNT
- MOVE ACHILLES(I) TO TOTIENT-IN
- PERFORM CALC-TOTIENT
-
- MOVE TOTIENT-OUT TO SEARCH-P
- MOVE 0 TO FOUND-FLAG
- SEARCH ALL ACHILLES
- AT END
- MOVE 0 TO FOUND-FLAG
- WHEN ACHILLES(ACH-IDX) = SEARCH-P
- MOVE 1 TO FOUND-FLAG
- END-SEARCH
-
- IF FOUND-FLAG = 1 THEN
- ADD 1 TO STRONG-COUNT
- MOVE ACHILLES(I) TO STRONG-ACH(STRONG-COUNT)
- END-IF
- END-PERFORM.
-
- MOVE SPACES TO FORMATTED-LINE.
- MOVE 1 TO LINE-POS.
- MOVE 0 TO ROW-COUNT.
- PERFORM VARYING I FROM 1 BY 1 UNTIL I > 30
- MOVE STRONG-ACH(I) TO DISP-5
- STRING DISP-5 " " DELIMITED BY SIZE
- INTO FORMATTED-LINE WITH POINTER LINE-POS
- ADD 1 TO ROW-COUNT
- IF ROW-COUNT = 10 THEN
- DISPLAY FORMATTED-LINE(1:LINE-POS - 1)
- MOVE SPACES TO FORMATTED-LINE
- MOVE 1 TO LINE-POS
- MOVE 0 TO ROW-COUNT
- END-IF
- END-PERFORM.
-
- PRINT-DIGITS.
- DISPLAY " ".
- DISPLAY "Number of Achilles numbers with:".
- MOVE 10 TO LOWER-BND.
- COMPUTE UPPER-BND = 100.
- PERFORM VARYING D FROM 2 BY 1 UNTIL D > 8
- MOVE 0 TO DIGIT-COUNT
- PERFORM VARYING I FROM 1 BY 1 UNTIL I > ACH-COUNT
- IF ACHILLES(I) >= UPPER-BND THEN
- EXIT PERFORM
- END-IF
- IF ACHILLES(I) >= LOWER-BND THEN
- ADD 1 TO DIGIT-COUNT
- END-IF
- END-PERFORM
-
- MOVE D TO DISP-2
- MOVE DIGIT-COUNT TO DISP-NUM
-
- DISPLAY DISP-2 " digits: " FUNCTION TRIM(DISP-NUM)
-
- MOVE UPPER-BND TO LOWER-BND
- COMPUTE UPPER-BND = UPPER-BND * 10
- END-PERFORM.
diff --git a/Task/Achilles-numbers/Crystal/achilles-numbers.cr b/Task/Achilles-numbers/Crystal/achilles-numbers.cr
deleted file mode 100644
index 2cb66173f9..0000000000
--- a/Task/Achilles-numbers/Crystal/achilles-numbers.cr
+++ /dev/null
@@ -1,86 +0,0 @@
-struct Int
- def totient
- n = self
- return 0 if n < 1
- tot = n
- i = typeof(n).new(2)
- while i*i <= n
- if n % i == 0
- while n % i == 0
- n //= i
- end
- tot -= tot // i
- end
- if i == 2; i = 1 end
- i += 2
- end
- if n > 1
- tot -= tot // n
- end
- tot
- end
-end
-
-def get_perfect_powers (max_exp)
- upper = 10_u64 ** max_exp
- pps = Set(UInt64).new
- (2_u64 .. Math.isqrt(upper)).each do |i|
- p = i
- while (p *= i) < upper
- pps << p
- end
- end
- pps
-end
-
-def get_achilles (min_exp, max_exp, pps)
- lower = 10_u64 ** min_exp
- upper = 10_u64 ** max_exp
- achilles = Set(UInt64).new
- (1_u64 .. Math.cbrt(upper).to_u64).each do |b|
- b3 = b * b * b
- (1_u64 .. Math.isqrt(upper)).each do |a|
- p = b3 * a * a
- break if p >= upper
- if p >= lower
- achilles << p unless p.in? pps
- end
- end
- end
- achilles
-end
-
-def tprint (fmt, seq, row_sz)
- seq.in_slices_of(row_sz).each do |slice|
- puts slice.map {|elt| fmt % { elt } }.join(" ")
- end
-end
-
-max_digits = 12
-pps = get_perfect_powers(max_digits)
-
-achilles_set = get_achilles(1, 5, pps)
-achilles = achilles_set.to_a.sort!
-
-puts "First 50 Achilles numbers:"
-tprint("%4d", achilles.first(50), 10)
-
-puts "\nFirst 30 strong Achilles numbers:"
-strong_achilles = [] of UInt64
-count = 0
-n = 0
-while count < 30
- tot = achilles[n].totient
- if tot.in? achilles_set
- strong_achilles << achilles[n]
- count += 1
- end
- n += 1
-end
-tprint("%5d", strong_achilles, 10)
-
-puts "\nNumber of Achilles numbers with:"
-(2..max_digits).each do |d|
- ac = get_achilles(d-1, d, pps).size
- puts "%2d digits: %d" % { d, ac }
-end
diff --git a/Task/Achilles-numbers/Delphi/achilles-numbers.pas b/Task/Achilles-numbers/Delphi/achilles-numbers.delphi
similarity index 100%
rename from Task/Achilles-numbers/Delphi/achilles-numbers.pas
rename to Task/Achilles-numbers/Delphi/achilles-numbers.delphi
diff --git a/Task/Achilles-numbers/EasyLang/achilles-numbers.easy b/Task/Achilles-numbers/EasyLang/achilles-numbers.easy
index c84b968a4a..ec0935dde9 100644
--- a/Task/Achilles-numbers/EasyLang/achilles-numbers.easy
+++ b/Task/Achilles-numbers/EasyLang/achilles-numbers.easy
@@ -1,41 +1,56 @@
-fastfunc gcd n d .
- if d = 0 : return n
+func gcd n d .
+ if d = 0
+ return n
+ .
return gcd d (n mod d)
.
-fastfunc totient n .
- m = 1
- while m <= n
- if gcd m n = 1 : tot += 1
- m += 1
+func totient n .
+ for m = 1 to n
+ if gcd m n = 1
+ tot += 1
+ .
.
return tot
.
-fastfunc isPowerful m .
+func isPowerful m .
n = m
f = 2
l = sqrt m
- if m <= 1 : return 0
+ if m <= 1
+ return 0
+ .
while 1 = 1
+ q = n div f
if n mod f = 0
- if m mod (f * f) <> 0 : return 0
- n = n div f
- if f > n : return 1
+ if m mod (f * f) <> 0
+ return 0
+ .
+ n = q
+ if f > n
+ return 1
+ .
else
f += 1
if f > l
- if m mod (n * n) <> 0 : return 0
+ if m mod (n * n) <> 0
+ return 0
+ .
return 1
.
.
.
.
-fastfunc isAchilles n .
- if isPowerful n = 0 : return 0
+func isAchilles n .
+ if isPowerful n = 0
+ return 0
+ .
m = 2
a = m * m
repeat
repeat
- if a = n : return 0
+ if a = n
+ return 0
+ .
a *= m
until a > n
.
@@ -47,34 +62,38 @@ fastfunc isAchilles n .
.
print "First 50 Achilles numbers:"
n = 1
-while cnt < 50
+repeat
if isAchilles n = 1
write n & " "
- cnt += 1
- if cnt mod 10 = 0 : print ""
+ num += 1
.
n += 1
+ until num >= 50
.
print ""
+print ""
print "First 20 strong Achilles numbers:"
-cnt = 0
+num = 0
n = 1
-while cnt < 20
+repeat
if isAchilles n = 1 and isAchilles totient n = 1
write n & " "
- cnt += 1
- if cnt mod 10 = 0 : print ""
+ num += 1
.
n += 1
+ until num >= 20
.
print ""
+print ""
print "Number of Achilles numbers with 2 to 5 digits:"
a = 10
b = 100
for i = 2 to 5
num = 0
for n = a to b - 1
- num += isAchilles n
+ if isAchilles n = 1
+ num += 1
+ .
.
write num & " "
a = b
diff --git a/Task/Achilles-numbers/FutureBasic/achilles-numbers.basic b/Task/Achilles-numbers/FutureBasic/achilles-numbers.basic
deleted file mode 100644
index 194d6b3e21..0000000000
--- a/Task/Achilles-numbers/FutureBasic/achilles-numbers.basic
+++ /dev/null
@@ -1,90 +0,0 @@
-NSInteger local fn GCD( n as NSInteger, d as NSInteger )
- if ( d == 0 ) then return n else return fn GCD( d, n % d )
-end fn = 0
-
-NSInteger local fn Totient( n as NSInteger )
- NSInteger tot = 0
- for NSInteger m = 1 to n
- if fn GCD( m, n ) = 1 then tot++
- next
- return tot
-end fn = 0
-
-BOOL local fn IsPowerful( m as NSInteger )
- int n = m
- int f = 2
- double l = sqr(m)
-
- if m <= 1 then return NO
- while ( YES )
- NSInteger q = n / f
- if ( n % f ) == 0
- if ( m % (f * f) ) then return NO
- n = q
- if f > n then exit while
- else
- f++
- if ( f > l )
- if ( m % (n * n) ) then return NO
- exit while
- end if
- end if
- wend
-end fn = YES
-
-BOOL local fn IsAchilles( n as NSInteger )
- if fn IsPowerful(n) == NO then return NO
- NSInteger m = 2
- NSInteger a = m * m
- do
- do
- if a == n then return NO
- a *= m
- until ( a > n )
- m++
- a = m * m
- until ( a > n )
-end fn = YES
-
-local fn AchillesNumbers
- print "First 50 Achilles numbers:"
- NSInteger num = 0
- NSInteger n = 1
-
- CFTimeInterval t : t = fn CACurrentMediaTime
- do
- if fn IsAchilles( n )
- printf @"%4d \b", n
- num++
- if ( num % 10 ) != 0 then printf @" \b" else print
- end if
- n++
- until ( num >= 50 )
-
- printf @"\n\nFirst 20 strong Achilles numbers:"
- num = 0
- n = 1
- do
- if fn IsAchilles(n) && fn IsAchilles( fn Totient(n) )
- printf @"%5d \b", n
- num++
- if ( num % 5 ) != 0 then printf @" \b" else print
- end if
- n++
- until ( num >= 20 )
-
- printf @"\n"
- for NSInteger i = 2 to 6
- NSInteger inicio = fix( 10.0 ^ (i-1) )
- num = 0
- for n = inicio to inicio * 10 -1
- if fn IsAchilles(n) then num++
- next
- printf @"Achilles numbers with %d digits: %d", i, num
- next
- printf @"\nCompute time: %.3f ms", (fn CACurrentMediaTime - t ) * 1000
-end fn
-
-fn AchillesNumbers
-
-HandleEvents
diff --git a/Task/Achilles-numbers/JavaScript/achilles-numbers.js b/Task/Achilles-numbers/JavaScript/achilles-numbers.js
deleted file mode 100644
index 3f0113554c..0000000000
--- a/Task/Achilles-numbers/JavaScript/achilles-numbers.js
+++ /dev/null
@@ -1,129 +0,0 @@
-class AchillesNumbers {
- constructor() {
- this.pps = new Map(); // Stores perfect powers
- }
-
- // Euler's totient function
- totient(n) {
- let tot = n;
- let i = 2;
- while (i * i <= n) {
- if (n % i === 0) {
- // Remove all factors of i
- while (n % i === 0) {
- n = Math.floor(n / i);
- }
- tot -= Math.floor(tot / i);
- }
- // Handle even/odd step correctly
- if (i === 2) {
- i = 1;
- }
- i += 2;
- }
- // If remaining n is a prime
- if (n > 1) {
- tot -= Math.floor(tot / n);
- }
- return tot;
- }
-
- // Generate all perfect powers up to 10^maxExp
- getPerfectPowers(maxExp) {
- const upper = Math.pow(10, maxExp);
- const sqrtUpper = Math.floor(Math.sqrt(upper));
-
- for (let i = 2; i <= sqrtUpper; i++) {
- let p = i;
- while (true) {
- p *= i;
- if (p >= upper) break;
- this.pps.set(Math.floor(p), true);
- }
- }
- }
-
- // Generate all Achilles numbers between 10^minExp and 10^maxExp
- getAchilles(minExp, maxExp) {
- const lower = Math.pow(10, minExp);
- const upper = Math.pow(10, maxExp);
- const achilles = new Map();
-
- const cbrtUpper = Math.floor(Math.cbrt(upper));
- for (let b = 1; b <= cbrtUpper; b++) {
- const b3 = b * b * b;
- const sqrtUpper = Math.floor(Math.sqrt(upper));
-
- for (let a = 1; a <= sqrtUpper; a++) {
- const p = b3 * a * a;
- if (p >= upper) break;
-
- if (p >= lower) {
- if (!this.pps.has(p)) {
- achilles.set(p, true);
- }
- }
- }
- }
- return achilles;
- }
-
- static main() {
- const an = new AchillesNumbers();
- const maxDigits = 8;
-
- an.getPerfectPowers(maxDigits);
- const achillesSet = an.getAchilles(1, 5);
-
- // Convert map keys to sorted array
- const achilles = Array.from(achillesSet.keys()).sort((a, b) => a - b);
-
- // Print first 50 Achilles numbers
- console.log("First 50 Achilles numbers:");
- let output = "";
- for (let i = 0; i < 50; i++) {
- output += `${achilles[i].toString().padStart(4)} `;
- if ((i + 1) % 10 === 0) {
- console.log(output);
- output = "";
- }
- }
- if (output) console.log(output);
-
- // Print first 30 strong Achilles numbers
- console.log("\nFirst 30 strong Achilles numbers:");
- const strongAchilles = [];
- let count = 0;
- let idx = 0;
-
- while (count < 30 && idx < achilles.length) {
- const n = achilles[idx];
- const tot = an.totient(n);
- if (achillesSet.has(tot)) {
- strongAchilles.push(n);
- count++;
- }
- idx++;
- }
-
- output = "";
- for (let i = 0; i < 30; i++) {
- output += `${strongAchilles[i].toString().padStart(5)} `;
- if ((i + 1) % 10 === 0) {
- console.log(output);
- output = "";
- }
- }
- if (output) console.log(output);
-
- // Print counts per digit length
- console.log("\nNumber of Achilles numbers with:");
- for (let d = 2; d <= maxDigits; d++) {
- const ac = an.getAchilles(d - 1, d).size;
- console.log(`${d.toString().padStart(2)} digits: ${ac}`);
- }
- }
-}
-
-// Execute the main method
-AchillesNumbers.main();
diff --git a/Task/Achilles-numbers/Julia/achilles-numbers.jl b/Task/Achilles-numbers/Julia/achilles-numbers.julia
similarity index 100%
rename from Task/Achilles-numbers/Julia/achilles-numbers.jl
rename to Task/Achilles-numbers/Julia/achilles-numbers.julia
diff --git a/Task/Achilles-numbers/PARI-GP/achilles-numbers.parigp b/Task/Achilles-numbers/PARI-GP/achilles-numbers.parigp
deleted file mode 100644
index 44391a9b19..0000000000
--- a/Task/Achilles-numbers/PARI-GP/achilles-numbers.parigp
+++ /dev/null
@@ -1,8 +0,0 @@
-is(n,f=factor(n))=gcd(f[,2])==1 && vecmin(f[,2])>1
-first(n)=my(v=List()); forfactored(k=1,10^9, if(is(k[1],k[2]), listput(v,k[1]); if(#v==n, return(Vec(v)))))
-firstStrong(n)=my(v=List()); forfactored(k=1,10^9, if(is(k[1],k[2]) && is(eulerphi(k)), listput(v,k[1]); if(#v==n, return(Vec(v)))))
-countBetween(a,b)=my(s); forfactored(k=a,b, if(is(k[1],k[2]), s++)); s
-countDigits(n)=countBetween(10^(n-1),10^n-1)
-first(50)
-firstStrong(20)
-apply(countDigits, [2..5])
diff --git a/Task/Achilles-numbers/Phix/achilles-numbers.phix b/Task/Achilles-numbers/Phix/achilles-numbers.phix
index 3ebdef5c6e..933e7e375a 100644
--- a/Task/Achilles-numbers/Phix/achilles-numbers.phix
+++ b/Task/Achilles-numbers/Phix/achilles-numbers.phix
@@ -1,67 +1,62 @@
-with javascript_semantics
-requires("1.0.2") -- [join_by(fmt)]
-atom t0 = time()
-constant maxDigits = iff(platform()=JS?10:12)
-integer pps = new_dict()
+(phixonline)-->
+ with javascript_semantics
+ requires("1.0.2") -- [join_by(fmt)]
+ atom t0 = time()
+ constant maxDigits = iff(platform()=JS?10:12)
+ integer pps = new_dict()
-procedure getPerfectPowers(integer maxExp)
- atom hi = power(10, maxExp), t1 = time()+1
- integer imax = floor(sqrt(hi))
- for i=2 to imax do
- atom p = i
- while true do
- p *= i
- if p>=hi then exit end if
- setd(p,true,pps)
- end while
- if time()>t1 then
- progress("getting perfect powers, %d/%d\r",{i,imax})
- t1 = time()+1
- end if
- end for
- progress("")
-end procedure
+ procedure getPerfectPowers(integer maxExp)
+ atom hi = power(10, maxExp)
+ integer imax = floor(sqrt(hi))
+ for i=2 to imax do
+ atom p = i
+ while true do
+ p *= i
+ if p>=hi then exit end if
+ setd(p,true,pps)
+ end while
+ end for
+ end procedure
-function get_achilles(integer minExp, maxExp)
- atom lo10 = power(10,minExp),
- hi10 = power(10,maxExp)
- integer bmax = floor(power(hi10,1/3)),
- amax = floor(sqrt(hi10))
- sequence achilles = {}
- for b=2 to bmax do
- atom b3 = b * b * b
- for a=2 to amax do
- atom p = b3 * a * a
- if p>=hi10 then exit end if
- if p>=lo10 then
- integer node = getd_index(p,pps)
- if node=NULL then
- achilles &= p
- end if
- end if
- end for
- end for
- achilles = unique(achilles)
- return achilles
-end function
+ function get_achilles(integer minExp, maxExp)
+ atom lo10 = power(10,minExp),
+ hi10 = power(10,maxExp)
+ integer bmax = floor(power(hi10,1/3)),
+ amax = floor(sqrt(hi10))
+ sequence achilles = {}
+ for b=2 to bmax do
+ atom b3 = b * b * b
+ for a=2 to amax do
+ atom p = b3 * a * a
+ if p>=hi10 then exit end if
+ if p>=lo10 then
+ integer node = getd_index(p,pps)
+ if node=NULL then
+ achilles &= p
+ end if
+ end if
+ end for
+ end for
+ achilles = unique(achilles)
+ return achilles
+ end function
-getPerfectPowers(maxDigits)
+ getPerfectPowers(maxDigits)
+ sequence achilles = get_achilles(1,5)
-sequence achilles = get_achilles(1,5),
- a = join_by(achilles[1..50],1,10," ",fmt:="%4d")
-printf(1,"First 50 Achilles numbers:\n%s\n",{a})
+ function strong_achilles(integer n)
+ integer totient = sum(sq_eq(apply(true,gcd,{tagset(n),n}),1))
+ return find(totient,achilles)
+ end function
-function strong_achilles(integer n)
- integer totient = sum(sq_eq(apply(true,gcd,{tagset(n),n}),1))
- return find(totient,achilles)
-end function
+ sequence a = join_by(achilles[1..50],1,10," ",fmt:="%4d"),
+ sa = filter(achilles,strong_achilles)[1..30],
+ ssa = join_by(sa,1,10," ",fmt:="%5d")
-progress("filtering strong achilles...")
-sequence sa = filter(achilles,strong_achilles)[1..30],
- ssa = join_by(sa,1,10," ",fmt:="%5d")
-progress("")
-printf(1,"First 30 strong Achilles numbers:\n%s\n",{ssa})
-for d=2 to maxDigits do
- printf(1,"Achilles numbers with %d digits:%d\n",{d,length(get_achilles(d-1,d))})
-end for
-?elapsed(time()-t0)
+ printf(1,"First 50 Achilles numbers:\n%s\n",{a})
+ printf(1,"First 30 strong Achilles numbers:\n%s\n",{ssa})
+ for d=2 to maxDigits do
+ printf(1,"Achilles numbers with %d digits:%d\n",{d,length(get_achilles(d-1,d))})
+ end for
+ ?elapsed(time()-t0)
+
+(phixonline)-->
function ack(integer m, integer n)
if m=0 then
return n+1
diff --git a/Task/Ackermann-function/Phix/ackermann-function-2.phix b/Task/Ackermann-function/Phix/ackermann-function-2.phix
index 3c54091afd..6080743529 100644
--- a/Task/Ackermann-function/Phix/ackermann-function-2.phix
+++ b/Task/Ackermann-function/Phix/ackermann-function-2.phix
@@ -1,4 +1,4 @@
-(phixonline)--(notpygments)-->
+(phixonline)-->
-- demo\rosetta\Ackermann.exw
include mpfr.e
diff --git a/Task/Ackermann-function/Pluto/ackermann-function.pluto b/Task/Ackermann-function/Pluto/ackermann-function.pluto
deleted file mode 100644
index 91075937c7..0000000000
--- a/Task/Ackermann-function/Pluto/ackermann-function.pluto
+++ /dev/null
@@ -1,13 +0,0 @@
-function ack(m,n)
- if m==0 then
- return n+1
- elseif n == 0 then
- return ack(m-1,1)
- else return ack(m-1,ack(m,n-1)) end
-end
-
-for i = 0,3 do
- for j = 0,8 do
- print($"A({i},{j})={ack(i,j)}")
- end
-end
diff --git a/Task/Ackermann-function/PowerShell/ackermann-function-1.ps1 b/Task/Ackermann-function/PowerShell/ackermann-function-1.psh
similarity index 100%
rename from Task/Ackermann-function/PowerShell/ackermann-function-1.ps1
rename to Task/Ackermann-function/PowerShell/ackermann-function-1.psh
diff --git a/Task/Ackermann-function/PowerShell/ackermann-function-2.ps1 b/Task/Ackermann-function/PowerShell/ackermann-function-2.psh
similarity index 100%
rename from Task/Ackermann-function/PowerShell/ackermann-function-2.ps1
rename to Task/Ackermann-function/PowerShell/ackermann-function-2.psh
diff --git a/Task/Ackermann-function/PowerShell/ackermann-function-3.ps1 b/Task/Ackermann-function/PowerShell/ackermann-function-3.psh
similarity index 100%
rename from Task/Ackermann-function/PowerShell/ackermann-function-3.ps1
rename to Task/Ackermann-function/PowerShell/ackermann-function-3.psh
diff --git a/Task/Ackermann-function/PowerShell/ackermann-function-4.ps1 b/Task/Ackermann-function/PowerShell/ackermann-function-4.psh
similarity index 100%
rename from Task/Ackermann-function/PowerShell/ackermann-function-4.ps1
rename to Task/Ackermann-function/PowerShell/ackermann-function-4.psh
diff --git a/Task/Ackermann-function/Python/ackermann-function-2.py b/Task/Ackermann-function/Python/ackermann-function-2.py
index b52f4e5e1e..a2968422e0 100644
--- a/Task/Ackermann-function/Python/ackermann-function-2.py
+++ b/Task/Ackermann-function/Python/ackermann-function-2.py
@@ -1,6 +1,6 @@
-from functools import cache
+from functools import lru_cache
-@cache
+@lru_cache(None)
def ack2(M, N):
if M == 0:
return N + 1
diff --git a/Task/Ackermann-function/REXX/ackermann-function-1.rexx b/Task/Ackermann-function/REXX/ackermann-function-1.rexx
new file mode 100644
index 0000000000..4166968a81
--- /dev/null
+++ b/Task/Ackermann-function/REXX/ackermann-function-1.rexx
@@ -0,0 +1,25 @@
+/*REXX program calculates and displays some values for the Ackermann function. */
+ /*╔════════════════════════════════════════════════════════════════════════╗
+ ║ Note: the Ackermann function (as implemented here) utilizes deep ║
+ ║ recursive and is limited by the largest number that can have ║
+ ║ "1" (unity) added to a number (successfully and accurately). ║
+ ╚════════════════════════════════════════════════════════════════════════╝*/
+high=24
+ do j=0 to 3; say
+ do k=0 to high % (max(1, j))
+ call tell_Ack j, k
+ end /*k*/
+ end /*j*/
+exit /*stick a fork in it, we're all done. */
+/*──────────────────────────────────────────────────────────────────────────────────────*/
+tell_Ack: parse arg mm,nn; calls=0 /*display an echo message to terminal. */
+ #=right(nn,length(high))
+ say 'Ackermann('mm", "#')='right(ackermann(mm, nn), high),
+ left('', 12) 'calls='right(calls, high)
+ return
+/*──────────────────────────────────────────────────────────────────────────────────────*/
+ackermann: procedure expose calls /*compute value of Ackermann function. */
+ parse arg m,n; calls=calls+1
+ if m==0 then return n+1
+ if n==0 then return ackermann(m-1, 1)
+ return ackermann(m-1, ackermann(m, n-1) )
diff --git a/Task/Ackermann-function/REXX/ackermann-function-2.rexx b/Task/Ackermann-function/REXX/ackermann-function-2.rexx
new file mode 100644
index 0000000000..d489d6c82a
--- /dev/null
+++ b/Task/Ackermann-function/REXX/ackermann-function-2.rexx
@@ -0,0 +1,21 @@
+/*REXX program calculates and displays some values for the Ackermann function. */
+high=24
+ do j=0 to 3; say
+ do k=0 to high % (max(1, j))
+ call tell_Ack j, k
+ end /*k*/
+ end /*j*/
+exit /*stick a fork in it, we're all done. */
+/*──────────────────────────────────────────────────────────────────────────────────────*/
+tell_Ack: parse arg mm,nn; calls=0 /*display an echo message to terminal. */
+ #=right(nn,length(high))
+ say 'Ackermann('mm", "#')='right(ackermann(mm, nn), high),
+ left('', 12) 'calls='right(calls, high)
+ return
+/*──────────────────────────────────────────────────────────────────────────────────────*/
+ackermann: procedure expose calls /*compute value of Ackermann function. */
+ parse arg m,n; calls=calls+1
+ if m==0 then return n + 1
+ if n==0 then return ackermann(m-1, 1)
+ if m==2 then return n + 3 + n
+ return ackermann(m-1, ackermann(m, n-1) )
diff --git a/Task/Ackermann-function/REXX/ackermann-function-3.rexx b/Task/Ackermann-function/REXX/ackermann-function-3.rexx
new file mode 100644
index 0000000000..46a20892d0
--- /dev/null
+++ b/Task/Ackermann-function/REXX/ackermann-function-3.rexx
@@ -0,0 +1,36 @@
+/*REXX program calculates and displays some values for the Ackermann function. */
+numeric digits 100 /*use up to 100 decimal digit integers.*/
+ /*╔═════════════════════════════════════════════════════════════╗
+ ║ When REXX raises a number to an integer power (via the ** ║
+ ║ operator, the power can be positive, zero, or negative). ║
+ ║ Ackermann(5,1) is a bit impractical to calculate. ║
+ ╚═════════════════════════════════════════════════════════════╝*/
+high=24
+ do j=0 to 4; say
+ do k=0 to high % (max(1, j))
+ call tell_Ack j, k
+ if j==4 & k==2 then leave /*there's no sense in going overboard. */
+ end /*k*/
+ end /*j*/
+exit /*stick a fork in it, we're all done. */
+/*──────────────────────────────────────────────────────────────────────────────────────*/
+tell_Ack: parse arg mm,nn; calls=0 /*display an echo message to terminal. */
+ #=right(nn,length(high))
+ say 'Ackermann('mm", "#')='right(ackermann(mm, nn), high),
+ left('', 12) 'calls='right(calls, high)
+ return
+/*──────────────────────────────────────────────────────────────────────────────────────*/
+ackermann: procedure expose calls /*compute value of Ackermann function. */
+ parse arg m,n; calls=calls+1
+ if m==0 then return n + 1
+ if m==1 then return n + 2
+ if m==2 then return n + 3 + n
+ if m==3 then return 2**(n+3) - 3
+ if m==4 then do; #=2 /* [↓] Ugh! ··· and still more ughs.*/
+ do (n+3)-1 /*This is where the heavy lifting is. */
+ #=2**#
+ end
+ return #-3
+ end
+ if n==0 then return ackermann(m-1, 1)
+ return ackermann(m-1, ackermann(m, n-1) )
diff --git a/Task/Ackermann-function/REXX/ackermann-function.rexx b/Task/Ackermann-function/REXX/ackermann-function.rexx
deleted file mode 100644
index 5ef80aa39d..0000000000
--- a/Task/Ackermann-function/REXX/ackermann-function.rexx
+++ /dev/null
@@ -1,83 +0,0 @@
--- 27 Oct 2025
-include Setting
-numeric digits 310000
-
-say 'ACKERMANN FUNCTION'
-say version
-say
-call Ackermann1
-call Ackermann2
-exit
-
-Ackermann1:
-procedure expose glob.
-say 'Using recursion...'
-do i=0 to 3
- do j=0 to 10
- say 'Ackermann('i','j')' '=' Acker1(i,j) Elaps('r')'s'
- end
-end
-say
-return
-
-Acker1:
-procedure
-arg xx,yy
-select
- when xx = 0 then
- return yy+1
- when yy = 0 then
- return Acker1(xx-1,1)
- otherwise
- return Acker1(xx-1,Acker1(xx,yy-1))
-end
-
-Ackermann2:
-procedure expose glob.
-say 'Using closed formulas...'
-do i=0 to 3
- do j=0 to 10
- say 'Ackermann('i','j')' '=' Acker2(i,j) Elaps('r')'s'
- end
-end
-say 'Ackermann(3,100) =' Acker2(3,100) Elaps('r')'s'
-say 'Ackermann(3,1000) has' Length(Acker2(3,1000)) 'digits' Elaps('r')'s'
-say 'Ackermann(3,10000) has' Length(Acker2(3,10000)) 'digits' Elaps('r')'s'
-say 'Ackermann(3,100000) has' Length(Acker2(3,100000)) 'digits' Elaps('r')'s'
-say 'Ackermann(3,1000000) has' Length(Acker2(3,1000000)) 'digits' Elaps('r')'s'
-say 'Ackermann(4,0) =' Acker2(4,0) Elaps('r')'s'
-say 'Ackermann(4,1) =' Acker2(4,1) Elaps('r')'s'
-say 'Ackermann(4,2) has' Length(Acker2(4,2)) 'digits' Elaps('r')'s'
-return
-
-Acker2:
-procedure
-arg xx,yy
-select
- when xx=0 then
- rr=yy+1
- when xx=1 then
- rr=yy+2
- when xx=2 then
- rr=yy+yy+3
- when xx=3 then
- rr=2**(yy+3)-3
- when xx=4 then
- select
- when yy=0 then
- rr=2**(2**2)-3
- when yy=1 then
- rr=2**(2**(2**2))-3
- when yy=2 then
- rr=2**(2**(2**(2**2)))-3
- otherwise
- rr=0
- end
- otherwise
- rr=0
-end
-return rr
-
-include Abend
--- Elaps
-include Timer
diff --git a/Task/Ackermann-function/ReScript/ackermann-function.res b/Task/Ackermann-function/ReScript/ackermann-function.re
similarity index 100%
rename from Task/Ackermann-function/ReScript/ackermann-function.res
rename to Task/Ackermann-function/ReScript/ackermann-function.re
diff --git a/Task/Ackermann-function/Rebol/ackermann-function-1.rebol b/Task/Ackermann-function/Rebol/ackermann-function-1.rebol
deleted file mode 100644
index 52928c349e..0000000000
--- a/Task/Ackermann-function/Rebol/ackermann-function-1.rebol
+++ /dev/null
@@ -1,7 +0,0 @@
-ackermann: func [m n] [
- case [
- m = 0 [n + 1]
- n = 0 [ackermann m - 1 1]
- true [ackermann m - 1 ackermann m n - 1]
- ]
-]
diff --git a/Task/Ackermann-function/Rebol/ackermann-function-2.rebol b/Task/Ackermann-function/Rebol/ackermann-function-2.rebol
deleted file mode 100644
index c6e294cb60..0000000000
--- a/Task/Ackermann-function/Rebol/ackermann-function-2.rebol
+++ /dev/null
@@ -1,16 +0,0 @@
-ackermann: func [
- m [integer!]
- n [integer!]
-] [
- ;; Small-m closed forms
- case [
- m = 0 [n + 1]
- m = 1 [n + 2]
- m = 2 [(2 * n) + 3]
- m = 3 [
- ;; 2^(n+3) - 3
- (to integer! power 2 (n + 3)) - 3
- ]
- ;; m >= 4 causes stack overflow
- ]
-]
diff --git a/Task/Ackermann-function/Rust/ackermann-function-1.rs b/Task/Ackermann-function/Rust/ackermann-function-1.rust
similarity index 100%
rename from Task/Ackermann-function/Rust/ackermann-function-1.rs
rename to Task/Ackermann-function/Rust/ackermann-function-1.rust
diff --git a/Task/Ackermann-function/Rust/ackermann-function-2.rs b/Task/Ackermann-function/Rust/ackermann-function-2.rust
similarity index 100%
rename from Task/Ackermann-function/Rust/ackermann-function-2.rs
rename to Task/Ackermann-function/Rust/ackermann-function-2.rust
diff --git a/Task/Ackermann-function/Scheme/ackermann-function-1.scm b/Task/Ackermann-function/Scheme/ackermann-function-1.ss
similarity index 100%
rename from Task/Ackermann-function/Scheme/ackermann-function-1.scm
rename to Task/Ackermann-function/Scheme/ackermann-function-1.ss
diff --git a/Task/Ackermann-function/Scheme/ackermann-function-2.scm b/Task/Ackermann-function/Scheme/ackermann-function-2.ss
similarity index 100%
rename from Task/Ackermann-function/Scheme/ackermann-function-2.scm
rename to Task/Ackermann-function/Scheme/ackermann-function-2.ss
diff --git a/Task/Ackermann-function/TAV/ackermann-function.tav b/Task/Ackermann-function/TAV/ackermann-function.tav
deleted file mode 100644
index f81000b3c8..0000000000
--- a/Task/Ackermann-function/TAV/ackermann-function.tav
+++ /dev/null
@@ -1,11 +0,0 @@
-ackermann (n) (m) :
- ? n = 0
- :> m+1
- ? m = 0
- :> ackermann (n-1) 1
- :> ackermann (n-1) ackermann n (m-1) \ = ackermann (n-1) (ackermann n (m-1))
-\ test it
-main(params):+
- p1 =: string params[1] as integer else 3
- p2 =: string params[2] as integer else 5
- print "ackermann(" _ p1 _ "," _ p2 _ ") = " _ ackermann p1 p2
diff --git a/Task/Ackermann-function/Uiua/ackermann-function.uiua b/Task/Ackermann-function/Uiua/ackermann-function.uiua
deleted file mode 100644
index cebcb838cb..0000000000
--- a/Task/Ackermann-function/Uiua/ackermann-function.uiua
+++ /dev/null
@@ -1,7 +0,0 @@
-A ←|2.1 (
- ◡(×+1>0:>0)
- sw(+1pop|A-1:1pop:
- |A-1:off(A:-1:))
-)
-
-A 1 1
diff --git a/Task/Ackermann-function/VBScript/ackermann-function-1.vbs b/Task/Ackermann-function/VBScript/ackermann-function-1.vb
similarity index 100%
rename from Task/Ackermann-function/VBScript/ackermann-function-1.vbs
rename to Task/Ackermann-function/VBScript/ackermann-function-1.vb
diff --git a/Task/Ackermann-function/VBScript/ackermann-function-2.vbs b/Task/Ackermann-function/VBScript/ackermann-function-2.vb
similarity index 100%
rename from Task/Ackermann-function/VBScript/ackermann-function-2.vbs
rename to Task/Ackermann-function/VBScript/ackermann-function-2.vb
diff --git a/Task/Ackermann-function/ZED/ackermann-function.zed b/Task/Ackermann-function/ZED/ackermann-function.zed
index af5d1c0f49..a16fe385ad 100644
--- a/Task/Ackermann-function/ZED/ackermann-function.zed
+++ b/Task/Ackermann-function/ZED/ackermann-function.zed
@@ -1,29 +1,29 @@
-(a) m n
-M ZERO
+(A) m n
+comment:
(=) m 0
(add1) n
-(a) m n
-N ZERO
+(A) m n
+comment:
(=) n 0
-(a) (sub1) m 1
+(A) (sub1) m 1
-(a) m n
-DEFAULT
+(A) m n
+comment:
#true
-(a) (sub1) m (a) m (sub1) n
+(A) (sub1) m (A) m (sub1) n
(add1) n
-=========
+comment:
#true
(003) "+" n 1
(sub1) n
-=========
+comment:
#true
(003) "-" n 1
(=) n1 n2
-=========
+comment:
#true
(003) "=" n1 n2
diff --git a/Task/Active-Directory-Connect/AutoIt/active-directory-connect.au3 b/Task/Active-Directory-Connect/AutoIt/active-directory-connect.autoit
similarity index 100%
rename from Task/Active-Directory-Connect/AutoIt/active-directory-connect.au3
rename to Task/Active-Directory-Connect/AutoIt/active-directory-connect.autoit
diff --git a/Task/Active-Directory-Connect/Julia/active-directory-connect.jl b/Task/Active-Directory-Connect/Julia/active-directory-connect.julia
similarity index 100%
rename from Task/Active-Directory-Connect/Julia/active-directory-connect.jl
rename to Task/Active-Directory-Connect/Julia/active-directory-connect.julia
diff --git a/Task/Active-Directory-Connect/Kotlin/active-directory-connect.kts b/Task/Active-Directory-Connect/Kotlin/active-directory-connect.kotlin
similarity index 100%
rename from Task/Active-Directory-Connect/Kotlin/active-directory-connect.kts
rename to Task/Active-Directory-Connect/Kotlin/active-directory-connect.kotlin
diff --git a/Task/Active-Directory-Connect/Rust/active-directory-connect.rs b/Task/Active-Directory-Connect/Rust/active-directory-connect.rust
similarity index 100%
rename from Task/Active-Directory-Connect/Rust/active-directory-connect.rs
rename to Task/Active-Directory-Connect/Rust/active-directory-connect.rust
diff --git a/Task/Active-Directory-Connect/VBScript/active-directory-connect.vbs b/Task/Active-Directory-Connect/VBScript/active-directory-connect.vb
similarity index 100%
rename from Task/Active-Directory-Connect/VBScript/active-directory-connect.vbs
rename to Task/Active-Directory-Connect/VBScript/active-directory-connect.vb
diff --git a/Task/Active-Directory-Search-for-a-user/Julia/active-directory-search-for-a-user.jl b/Task/Active-Directory-Search-for-a-user/Julia/active-directory-search-for-a-user.julia
similarity index 100%
rename from Task/Active-Directory-Search-for-a-user/Julia/active-directory-search-for-a-user.jl
rename to Task/Active-Directory-Search-for-a-user/Julia/active-directory-search-for-a-user.julia
diff --git a/Task/Active-Directory-Search-for-a-user/PowerShell/active-directory-search-for-a-user.ps1 b/Task/Active-Directory-Search-for-a-user/PowerShell/active-directory-search-for-a-user.psh
similarity index 100%
rename from Task/Active-Directory-Search-for-a-user/PowerShell/active-directory-search-for-a-user.ps1
rename to Task/Active-Directory-Search-for-a-user/PowerShell/active-directory-search-for-a-user.psh
diff --git a/Task/Active-Directory-Search-for-a-user/VBScript/active-directory-search-for-a-user-1.vbs b/Task/Active-Directory-Search-for-a-user/VBScript/active-directory-search-for-a-user-1.vb
similarity index 100%
rename from Task/Active-Directory-Search-for-a-user/VBScript/active-directory-search-for-a-user-1.vbs
rename to Task/Active-Directory-Search-for-a-user/VBScript/active-directory-search-for-a-user-1.vb
diff --git a/Task/Active-Directory-Search-for-a-user/VBScript/active-directory-search-for-a-user-2.vbs b/Task/Active-Directory-Search-for-a-user/VBScript/active-directory-search-for-a-user-2.vb
similarity index 100%
rename from Task/Active-Directory-Search-for-a-user/VBScript/active-directory-search-for-a-user-2.vbs
rename to Task/Active-Directory-Search-for-a-user/VBScript/active-directory-search-for-a-user-2.vb
diff --git a/Task/Active-Directory-Search-for-a-user/VBScript/active-directory-search-for-a-user-3.vbs b/Task/Active-Directory-Search-for-a-user/VBScript/active-directory-search-for-a-user-3.vb
similarity index 100%
rename from Task/Active-Directory-Search-for-a-user/VBScript/active-directory-search-for-a-user-3.vbs
rename to Task/Active-Directory-Search-for-a-user/VBScript/active-directory-search-for-a-user-3.vb
diff --git a/Task/Active-object/Ada/active-object.adb b/Task/Active-object/Ada/active-object.ada
similarity index 100%
rename from Task/Active-object/Ada/active-object.adb
rename to Task/Active-object/Ada/active-object.ada
diff --git a/Task/Active-object/Crystal/active-object.cr b/Task/Active-object/Crystal/active-object.crystal
similarity index 100%
rename from Task/Active-object/Crystal/active-object.cr
rename to Task/Active-object/Crystal/active-object.crystal
diff --git a/Task/Active-object/Delphi/active-object.pas b/Task/Active-object/Delphi/active-object.delphi
similarity index 100%
rename from Task/Active-object/Delphi/active-object.pas
rename to Task/Active-object/Delphi/active-object.delphi
diff --git a/Task/Active-object/Julia/active-object.jl b/Task/Active-object/Julia/active-object.julia
similarity index 100%
rename from Task/Active-object/Julia/active-object.jl
rename to Task/Active-object/Julia/active-object.julia
diff --git a/Task/Active-object/Kotlin/active-object.kts b/Task/Active-object/Kotlin/active-object.kotlin
similarity index 100%
rename from Task/Active-object/Kotlin/active-object.kts
rename to Task/Active-object/Kotlin/active-object.kotlin
diff --git a/Task/Active-object/Rust/active-object.rs b/Task/Active-object/Rust/active-object.rust
similarity index 100%
rename from Task/Active-object/Rust/active-object.rs
rename to Task/Active-object/Rust/active-object.rust
diff --git a/Task/Add-a-variable-to-a-class-instance-at-runtime/Ada/add-a-variable-to-a-class-instance-at-runtime.adb b/Task/Add-a-variable-to-a-class-instance-at-runtime/Ada/add-a-variable-to-a-class-instance-at-runtime.ada
similarity index 100%
rename from Task/Add-a-variable-to-a-class-instance-at-runtime/Ada/add-a-variable-to-a-class-instance-at-runtime.adb
rename to Task/Add-a-variable-to-a-class-instance-at-runtime/Ada/add-a-variable-to-a-class-instance-at-runtime.ada
diff --git a/Task/Add-a-variable-to-a-class-instance-at-runtime/Arturo/add-a-variable-to-a-class-instance-at-runtime.arturo b/Task/Add-a-variable-to-a-class-instance-at-runtime/Arturo/add-a-variable-to-a-class-instance-at-runtime.arturo
index 1709ab334f..c668c74160 100644
--- a/Task/Add-a-variable-to-a-class-instance-at-runtime/Arturo/add-a-variable-to-a-class-instance-at-runtime.arturo
+++ b/Task/Add-a-variable-to-a-class-instance-at-runtime/Arturo/add-a-variable-to-a-class-instance-at-runtime.arturo
@@ -1,4 +1,4 @@
-define :myClass [name, surname]
+define :myClass [name,surname][]
myInstance: to :myClass ["John" "Doe"]
print myInstance
diff --git a/Task/Add-a-variable-to-a-class-instance-at-runtime/Ballerina/add-a-variable-to-a-class-instance-at-runtime.ballerina b/Task/Add-a-variable-to-a-class-instance-at-runtime/Ballerina/add-a-variable-to-a-class-instance-at-runtime.ballerina
deleted file mode 100644
index a4d319d761..0000000000
--- a/Task/Add-a-variable-to-a-class-instance-at-runtime/Ballerina/add-a-variable-to-a-class-instance-at-runtime.ballerina
+++ /dev/null
@@ -1,23 +0,0 @@
-import ballerina/io;
-
-// Person is an 'open' record type which allows fields of 'anydata' type
-// to be added at runtime.
-type Person record {
- string name;
- int age;
-};
-
-public function main() {
- // Create an instance of Person with an additional 'town' field.
- Person p = {
- name: "Fred",
- age: 40,
- "town": "Boston" // extra field name needs to be in quotes
- };
-
- // Print name and age fields - using standard '.' syntax.
- io:print(p.name, " is ", p.age);
-
- // Print the additional field - using a map-like syntax.
- io:println(" and lives in ", p["town"], ".");
-}
diff --git a/Task/Add-a-variable-to-a-class-instance-at-runtime/C++/add-a-variable-to-a-class-instance-at-runtime.cpp b/Task/Add-a-variable-to-a-class-instance-at-runtime/C++/add-a-variable-to-a-class-instance-at-runtime.cpp
deleted file mode 100644
index 1f83768ae0..0000000000
--- a/Task/Add-a-variable-to-a-class-instance-at-runtime/C++/add-a-variable-to-a-class-instance-at-runtime.cpp
+++ /dev/null
@@ -1,34 +0,0 @@
-#include
-#include
-#include