From 74c69a0df6890b735ef56ffedb70820eee596498 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ingy=20d=C3=B6t=20Net?= Date: Sat, 16 Dec 2023 21:33:55 -0800 Subject: [PATCH] Data update --- Conf/lang.yaml | 6 + Lang/11l/Comments | 1 - Lang/11l/List-comprehensions | 1 - Lang/8080-Assembly/McNuggets-problem | 1 + Lang/8080-Assembly/Repeat-a-string | 1 + Lang/ALGOL-60/100-doors | 1 - Lang/ALGOL-60/Sum-multiples-of-3-and-5 | 1 + Lang/ALGOL-68/Equal-prime-and-composite-sums | 1 + Lang/ALGOL-68/Jacobi-symbol | 1 + ...-which-are-not-the-sum-of-distinct-squares | 1 + Lang/ALGOL-68/Polynomial-long-division | 1 + Lang/ALGOL-68/Radical-of-an-integer | 1 + .../Ramer-Douglas-Peucker-line-simplification | 1 + Lang/ALGOL-M/Exponentiation-order | 1 + Lang/ALGOL-W/100-doors | 1 - Lang/ALGOL-W/Jacobi-symbol | 1 + ...-which-are-not-the-sum-of-distinct-squares | 1 + Lang/APL/Align-columns | 1 + Lang/APL/Longest-common-substring | 1 + Lang/AWK/Deceptive-numbers | 1 + Lang/Acornsoft-Lisp/Search-a-list | 1 + Lang/Amazing-Hopper/Anagrams | 1 + Lang/Amazing-Hopper/Arithmetic-evaluation | 1 + Lang/Amazing-Hopper/Averages-Median | 1 + Lang/Amazing-Hopper/Babbage-problem | 1 + Lang/Amazing-Hopper/Balanced-brackets | 1 + Lang/Amazing-Hopper/Cantor-set | 1 + Lang/Amazing-Hopper/Count-in-octal | 1 + Lang/Amazing-Hopper/Disarium-numbers | 1 + Lang/Amazing-Hopper/Dot-product | 1 + Lang/Amazing-Hopper/Formatted-numeric-output | 1 + Lang/Amazing-Hopper/Hailstone-sequence | 1 + Lang/Amazing-Hopper/Haversine-formula | 1 + Lang/Amazing-Hopper/Knuth-shuffle | 1 + Lang/Amazing-Hopper/M-bius-function | 1 + .../Magic-squares-of-doubly-even-order | 1 + Lang/Amazing-Hopper/Magnanimous-numbers | 1 + Lang/Amazing-Hopper/Matrix-digital-rain | 1 + Lang/Amazing-Hopper/Mayan-numerals | 1 + Lang/Amazing-Hopper/Middle-three-digits | 1 + .../One-dimensional-cellular-automata | 1 + Lang/Amazing-Hopper/Ordered-words | 1 + ...Pseudo-random-numbers-Middle-square-method | 1 + Lang/Amazing-Hopper/Return-multiple-values | 1 + Lang/Amazing-Hopper/Run-length-encoding | 1 + Lang/Amazing-Hopper/Smith-numbers | 1 + Lang/Amazing-Hopper/Statistics-Basic | 1 + .../Successive-prime-differences | 1 + Lang/Amazing-Hopper/Super-d-numbers | 1 + Lang/Amazing-Hopper/Symmetric-difference | 1 + .../Take-notes-on-the-command-line | 1 + Lang/Amazing-Hopper/Text-processing-2 | 1 + Lang/Amazing-Hopper/Truth-table | 1 + Lang/Amazing-Hopper/Van-Eck-sequence | 1 + Lang/AppleScript/Multifactorial | 1 + .../Catalan-numbers-Pascals-triangle | 1 + Lang/Applesoft-BASIC/Pig-the-dice-game | 1 + Lang/Applesoft-BASIC/Recamans-sequence | 1 + .../String-interpolation-included- | 1 + Lang/BASIC/Longest-string-challenge | 1 - Lang/BASIC/One-dimensional-cellular-automata | 1 - Lang/BASIC/Sorting-algorithms-Gnome-sort | 1 - Lang/BASIC256/21-game | 1 + Lang/BASIC256/Achilles-numbers | 1 + Lang/BASIC256/Benfords-law | 1 + Lang/BASIC256/Blum-integer | 1 + Lang/BASIC256/Casting-out-nines | 1 + ...mine-if-a-string-has-all-unique-characters | 1 + Lang/BASIC256/Equal-prime-and-composite-sums | 1 + Lang/BASIC256/Longest-string-challenge | 1 + Lang/BASIC256/Padovan-n-step-number-sequences | 1 + ...than-previous-term-with-exactly-n-divisors | 1 + ...e:-smallest-number-with-exactly-n-divisors | 1 + Lang/BASIC256/Sorting-algorithms-Bogosort | 1 + Lang/BASIC256/Sorting-algorithms-Gnome-sort | 1 + Lang/BASIC256/Subleq | 1 + Lang/BASIC256/Van-Eck-sequence | 1 + ...les-geometric-normalization-and-conversion | 1 + Lang/BBC-BASIC/Archimedean-spiral | 1 + .../Bioinformatics-Sequence-mutation | 1 + Lang/BBC-BASIC/Bioinformatics-base-count | 1 + Lang/BBC-BASIC/Calculating-the-value-of-e | 1 + Lang/BBC-BASIC/Currency | 1 + Lang/BBC-BASIC/Cyclops-numbers | 1 + Lang/BBC-BASIC/Emirp-primes | 1 + Lang/BBC-BASIC/Entropy-Narcissist | 1 + Lang/BBC-BASIC/Fusc-sequence | 1 + .../Generate-Chess960-starting-position | 1 + Lang/BBC-BASIC/Hex-words | 1 + .../Hickerson-series-of-almost-integers | 1 + Lang/BBC-BASIC/Humble-numbers | 1 + Lang/BBC-BASIC/I-before-E-except-after-C | 1 + Lang/BBC-BASIC/Jaro-similarity | 1 + Lang/BBC-BASIC/Julia-set | 1 + Lang/BBC-BASIC/Last-Friday-of-each-month | 1 + Lang/BBC-BASIC/MAC-vendor-lookup | 1 + Lang/BBC-BASIC/Magnanimous-numbers | 1 + .../Rosetta-Code-Find-unimplemented-tasks | 1 + Lang/BQN/00-LANG.txt | 7 +- .../BQN/Angle-difference-between-two-bearings | 1 + Lang/BQN/Apply-a-callback-to-an-array | 1 + Lang/BQN/Averages-Pythagorean-means | 1 + Lang/BQN/Determine-if-a-string-is-numeric | 1 + Lang/BQN/Leap-year | 1 + Lang/BQN/Longest-string-challenge | 1 + Lang/BQN/Multifactorial | 1 + Lang/BQN/Program-name | 1 + ...Pseudo-random-numbers-Middle-square-method | 1 + Lang/BQN/Remove-duplicate-elements | 1 + Lang/BQN/Reverse-words-in-a-string | 1 + Lang/BQN/Rot-13 | 1 + Lang/BQN/Sequence-of-non-squares | 1 + Lang/BQN/Sort-an-integer-array | 1 + ...racter-string-based-on-change-of-character | 1 + Lang/BQN/String-append | 1 + Lang/BQN/Test-integerness | 1 + Lang/BootBASIC/00-LANG.txt | 6 +- Lang/BootBASIC/Fibonacci-sequence | 1 + Lang/BootBASIC/Loops-Break | 1 + Lang/BootBASIC/Loops-N-plus-one-half | 1 + Lang/C++/ADFGVX-cipher | 1 + Lang/C++/Own-digits-power-sum | 1 + Lang/C++/Quoting-constructs | 1 + Lang/C++/Table-creation-Postal-addresses | 1 + Lang/C++/Total-circles-area | 1 + Lang/C++/Unicode-variable-names | 1 + .../Wasteful-equidigital-and-frugal-numbers | 1 + Lang/C++/Wordiff | 1 + Lang/C-sharp/Sphenic-numbers | 1 + Lang/C/Search-in-paragraphs-text | 1 + Lang/Chipmunk-Basic/21-game | 1 + .../Angle-difference-between-two-bearings | 1 + Lang/Chipmunk-Basic/Anonymous-recursion | 1 + Lang/Chipmunk-Basic/Arithmetic-Integer | 1 + Lang/Chipmunk-Basic/Array-length | 1 + Lang/Chipmunk-Basic/Binary-digits | 1 + Lang/Chipmunk-Basic/Box-the-compass | 1 + Lang/Chipmunk-Basic/Cantor-set | 1 + .../Carmichael-3-strong-pseudoprimes | 1 + Lang/Chipmunk-Basic/Casting-out-nines | 1 + .../Catalan-numbers-Pascals-triangle | 1 + Lang/Chipmunk-Basic/Catamorphism | 1 + Lang/Chipmunk-Basic/Character-codes | 1 + ...mine-if-a-string-has-all-unique-characters | 1 + Lang/Chipmunk-Basic/Disarium-numbers | 1 + Lang/Chipmunk-Basic/Egyptian-division | 1 + Lang/Chipmunk-Basic/Ethiopian-multiplication | 1 + Lang/Chipmunk-Basic/Find-limit-of-recursion | 1 + Lang/Chipmunk-Basic/Greatest-common-divisor | 1 + .../Guess-the-number-With-feedback | 1 + Lang/Chipmunk-Basic/Logical-operations | 1 + Lang/Chipmunk-Basic/Longest-string-challenge | 1 + .../Chipmunk-Basic/Magic-squares-of-odd-order | 1 + ...m-multiple-of-m-where-digital-sum-equals-m | 1 + Lang/Chipmunk-Basic/Morse-code | 1 + .../Padovan-n-step-number-sequences | 1 + Lang/Chipmunk-Basic/Pig-the-dice-game | 1 + Lang/Chipmunk-Basic/Repeat-a-string | 1 + Lang/Chipmunk-Basic/Sequence-of-non-squares | 1 + ...e:-smallest-number-with-exactly-n-divisors | 1 + .../Sorting-algorithms-Gnome-sort | 1 + .../Sorting-algorithms-Quicksort | 1 + Lang/Chipmunk-Basic/String-append | 1 + Lang/Chipmunk-Basic/String-case | 1 + .../String-interpolation-included- | 1 + Lang/Chipmunk-Basic/Van-Eck-sequence | 1 + .../Sorting-algorithms-Merge-sort | 1 + Lang/Cowgol/Longest-common-substring | 1 + Lang/Cowgol/Multifactorial | 1 + Lang/Curto/00-LANG.txt | 23 + Lang/Curto/00-META.yaml | 2 + Lang/Curto/Conditional-structures | 1 + Lang/Curto/Hello-world-Text | 1 + Lang/D/Largest-proper-divisor-of-n | 1 + Lang/Dart/Arithmetic-Integer | 1 + Lang/Dart/Nth-root | 1 + Lang/Dart/Pythagoras-tree | 1 + Lang/Dart/String-append | 1 + Lang/Draco/Binary-digits | 1 + Lang/Draco/Count-the-coins | 1 + Lang/EDSAC-order-code/Josephus-problem | 1 + .../Magic-squares-of-doubly-even-order | 1 + .../Magic-squares-of-odd-order | 1 + .../Magic-squares-of-singly-even-order | 1 + Lang/EDSAC-order-code/Maze-generation | 1 + ...Pseudo-random-numbers-Middle-square-method | 1 + .../Sorting-algorithms-Gnome-sort | 1 + .../Statistics-Normal-distribution | 1 + .../EDSAC-order-code/Sum-digits-of-an-integer | 1 + Lang/EMal/Empty-string | 1 + Lang/EMal/Environment-variables | 1 + Lang/EMal/FizzBuzz | 1 + Lang/EMal/Loops-For | 1 + Lang/EMal/Loops-For-with-a-specified-step | 1 + ...oops-Increment-loop-index-within-loop-body | 1 + Lang/EMal/Loops-N-plus-one-half | 1 + Lang/EMal/Loops-While | 1 + Lang/EMal/String-case | 1 + Lang/EMal/Towers-of-Hanoi | 1 + Lang/EasyLang/Animation | 1 + Lang/EasyLang/Averages-Mode | 1 + Lang/EasyLang/Averages-Pythagorean-means | 1 + Lang/EasyLang/Averages-Simple-moving-average | 1 + Lang/EasyLang/Balanced-brackets | 1 + Lang/EasyLang/Benfords-law | 1 + Lang/EasyLang/Bifid-cipher | 1 + Lang/EasyLang/Bin-given-limits | 1 + .../EasyLang/Bitmap-Bresenhams-line-algorithm | 1 + Lang/EasyLang/CUSIP | 1 + Lang/EasyLang/Caesar-cipher | 1 + Lang/EasyLang/Calendar | 1 + Lang/EasyLang/Cantor-set | 1 + .../EasyLang/Carmichael-3-strong-pseudoprimes | 1 + Lang/EasyLang/Casting-out-nines | 1 + Lang/EasyLang/Chinese-zodiac | 1 + ...Circles-of-given-radius-through-two-points | 1 + Lang/EasyLang/Cistercian-numerals | 1 + Lang/EasyLang/Closest-pair-problem | 1 + Lang/EasyLang/Colour-pinstripe-Display | 1 + Lang/EasyLang/Combinations-and-permutations | 1 + Lang/EasyLang/Comma-quibbling | 1 + ...tors-whose-factors-are-all-substrings-of-k | 1 + ...s-with-ascending-or-descending-differences | 1 + .../Constrained-random-points-on-a-circle | 1 + Lang/EasyLang/Cyclops-numbers | 1 + Lang/EasyLang/Deal-cards-for-FreeCell | 1 + Lang/EasyLang/Descending-primes | 1 + .../Determine-if-a-string-is-collapsible | 1 + .../Determine-if-a-string-is-squeezable | 1 + Lang/EasyLang/Dice-game-probabilities | 1 + Lang/EasyLang/Disarium-numbers | 1 + Lang/EasyLang/Discordian-date | 1 + Lang/EasyLang/Doomsday-rule | 1 + Lang/EasyLang/Dutch-national-flag-problem | 1 + Lang/EasyLang/Egyptian-division | 1 + Lang/EasyLang/Elementary-cellular-automaton | 1 + Lang/EasyLang/Empty-program | 1 + Lang/EasyLang/Euclid-Mullin-sequence | 1 + Lang/EasyLang/Evaluate-binomial-coefficients | 1 + Lang/EasyLang/Events | 1 + Lang/EasyLang/Execute-Brain- | 1 + Lang/EasyLang/Execute-Computer-Zero | 1 + Lang/EasyLang/Execute-HQ9+ | 1 + Lang/EasyLang/Execute-SNUSP | 1 + Lang/EasyLang/Exponentiation-order | 1 + ...nfix-operators-in-or-operating-on-the-base | 1 + Lang/EasyLang/Extensible-prime-generator | 1 + Lang/EasyLang/Extreme-floating-point-values | 1 + Lang/EasyLang/Factorial-primes | 1 + Lang/EasyLang/Feigenbaum-constant-calculation | 1 + .../Find-the-last-Sunday-of-each-month | 1 + Lang/EasyLang/Four-bit-adder | 1 + Lang/EasyLang/Hailstone-sequence | 1 + Lang/EasyLang/Harshad-or-Niven-series | 1 + Lang/EasyLang/Haversine-formula | 1 + Lang/EasyLang/Hofstadter-Q-sequence | 1 + Lang/EasyLang/Humble-numbers | 1 + Lang/EasyLang/Image-noise | 1 + Lang/EasyLang/Infinity | 1 + Lang/EasyLang/Isqrt-integer-square-root-of-X | 1 + Lang/EasyLang/Last-Friday-of-each-month | 1 + Lang/EasyLang/Leap-year | 1 + Lang/EasyLang/Look-and-say-sequence | 1 + .../Loop-over-multiple-arrays-simultaneously | 1 + Lang/EasyLang/M-bius-function | 1 + Lang/EasyLang/Magnanimous-numbers | 1 + Lang/EasyLang/Maximum-triangle-path-sum | 1 + Lang/EasyLang/McNuggets-problem | 1 + ...m-multiple-of-m-where-digital-sum-equals-m | 1 + Lang/EasyLang/Motzkin-numbers | 1 + Lang/EasyLang/Multifactorial | 1 + ...-which-are-not-the-sum-of-distinct-squares | 1 + .../One-dimensional-cellular-automata | 1 + Lang/EasyLang/Padovan-n-step-number-sequences | 1 + Lang/EasyLang/Particle-fountain | 1 + Lang/EasyLang/Perfect-shuffle | 1 + Lang/EasyLang/Periodic-table | 1 + Lang/EasyLang/Perlin-noise | 1 + Lang/EasyLang/Pig-the-dice-game | 1 + Lang/EasyLang/Polynomial-regression | 1 + Lang/EasyLang/Population-count | 1 + Lang/EasyLang/Radical-of-an-integer | 1 + .../Ramer-Douglas-Peucker-line-simplification | 1 + Lang/EasyLang/Repeat-a-string | 1 + Lang/EasyLang/Search-a-list | 1 + ...than-previous-term-with-exactly-n-divisors | 1 + Lang/EasyLang/Set-puzzle | 1 + Lang/EasyLang/Smarandache-Wellin-primes | 1 + Lang/EasyLang/Smith-numbers | 1 + Lang/EasyLang/Sort-disjoint-sublist | 1 + Lang/EasyLang/Sort-three-variables | 1 + .../EasyLang/Sorting-algorithms-Counting-sort | 1 + Lang/EasyLang/Sorting-algorithms-Gnome-sort | 1 + Lang/EasyLang/Sorting-algorithms-Stooge-sort | 1 + Lang/EasyLang/Soundex | 1 + Lang/EasyLang/Statistics-Basic | 1 + Lang/EasyLang/Subleq | 1 + Lang/EasyLang/Subtractive-generator | 1 + Lang/EasyLang/Successive-prime-differences | 1 + Lang/EasyLang/Sum-multiples-of-3-and-5 | 1 + Lang/EasyLang/Tau-function | 1 + Lang/EasyLang/Tau-number | 1 + Lang/EasyLang/Total-circles-area | 1 + Lang/EasyLang/Tree-traversal | 1 + Lang/EasyLang/Twelve-statements | 1 + Lang/EasyLang/Twin-primes | 1 + Lang/EasyLang/Ulam-spiral-for-primes- | 1 + Lang/EasyLang/Vampire-number | 1 + Lang/EasyLang/Wilson-primes-of-order-n | 1 + .../EasyLang/Zeckendorf-number-representation | 1 + Lang/Elixir/Cyclops-numbers | 1 + Lang/Elixir/Gapful-numbers | 1 + Lang/Emacs-Lisp/AVL-tree | 1 + Lang/Euler/FizzBuzz | 1 - Lang/Euler/Giuga-numbers | 1 - Lang/Euler/Jensens-Device | 1 - Lang/Euler/Return-multiple-values | 1 - Lang/Euler/Sum-and-product-of-an-array | 1 - Lang/Euler/Sum-of-squares | 1 - Lang/Evaldraw/Draw-a-clock | 1 + Lang/F-Sharp/Maximum-triangle-path-sum | 1 + Lang/FOCAL/Count-the-coins | 1 + Lang/Forth/Check-input-device-is-a-terminal | 1 + Lang/Fortran/Dijkstras-algorithm | 1 + Lang/Fortran/Sorting-algorithms-Quicksort | 1 - Lang/FutureBasic/15-puzzle-game | 1 + Lang/FutureBasic/2048 | 1 + Lang/FutureBasic/Benfords-law | 1 + Lang/FutureBasic/Bulls-and-cows-Player | 1 + Lang/FutureBasic/Call-an-object-method | 1 + Lang/FutureBasic/Camel-case-and-snake-case | 1 + .../Create-an-object-at-a-given-address | 1 + Lang/FutureBasic/Deepcopy | 1 + .../Find-the-last-Sunday-of-each-month | 1 + Lang/FutureBasic/Four-is-magic | 1 + .../Guess-the-number-With-feedback | 1 + Lang/GW-BASIC/Arithmetic-Integer | 1 + Lang/GW-BASIC/Array-concatenation | 1 + Lang/GW-BASIC/Box-the-compass | 1 + Lang/GW-BASIC/Chaos-game | 1 + Lang/GW-BASIC/Character-codes | 1 + Lang/GW-BASIC/Compare-length-of-two-strings | 1 + Lang/GW-BASIC/Egyptian-division | 1 + Lang/GW-BASIC/Guess-the-number-With-feedback | 1 + Lang/GW-BASIC/Knuth-shuffle | 1 + Lang/GW-BASIC/Logical-operations | 1 + Lang/GW-BASIC/Longest-string-challenge | 1 + Lang/GW-BASIC/Magic-squares-of-odd-order | 1 + Lang/GW-BASIC/Magnanimous-numbers | 1 + Lang/GW-BASIC/Repeat-a-string | 1 + Lang/GW-BASIC/Sorting-algorithms-Gnome-sort | 1 + .../Sorting-algorithms-Insertion-sort | 1 + Lang/GW-BASIC/String-append | 1 + Lang/GW-BASIC/String-interpolation-included- | 1 + Lang/GW-BASIC/The-Twelve-Days-of-Christmas | 1 + Lang/GW-BASIC/Van-Eck-sequence | 1 + Lang/Gambas/Arithmetic-geometric-mean | 1 + Lang/Gambas/Blum-integer | 1 + Lang/Gambas/Carmichael-3-strong-pseudoprimes | 1 + Lang/Gambas/Casting-out-nines | 1 + Lang/Gambas/Compare-length-of-two-strings | 1 + Lang/Gambas/Equal-prime-and-composite-sums | 1 + Lang/Gambas/Factors-of-an-integer | 1 + Lang/Gambas/Find-limit-of-recursion | 1 + Lang/Gambas/Goldbachs-comet | 1 + Lang/Gambas/Haversine-formula | 1 + Lang/Gambas/McNuggets-problem | 1 + ...m-multiple-of-m-where-digital-sum-equals-m | 1 + ...than-previous-term-with-exactly-n-divisors | 1 + Lang/Gambas/Subleq | 1 + Lang/Gambas/Tau-number | 1 + Lang/Haskell/Blum-integer | 1 + .../Arithmetic-geometric-mean-Calculate-Pi | 1 + Lang/IS-BASIC/Chaos-game | 1 + Lang/IS-BASIC/Levenshtein-distance | 1 + Lang/IS-BASIC/Pi | 1 + Lang/IS-BASIC/Sierpinski-carpet | 1 + Lang/IS-BASIC/Tau-number | 1 + Lang/Insitux/00-LANG.txt | 7 +- Lang/Insitux/Roman-numerals-Decode | 1 + Lang/J/00-LANG.txt | 2 + Lang/J/Ramanujan-primes-twins | 1 + Lang/J/Repunit-primes | 1 + Lang/J/Smarandache-Wellin-primes | 1 + Lang/J/Wilson-primes-of-order-n | 1 + Lang/Java/ADFGVX-cipher | 1 + ...-a-variable-to-a-class-instance-at-runtime | 1 + Lang/Java/Algebraic-data-types | 1 + ...bers-indexing-permutations-of-a-collection | 1 + Lang/Java/Main-step-of-GOST-28147-89 | 1 + Lang/Java/Own-digits-power-sum | 1 + Lang/Java/Table-creation-Postal-addresses | 1 + ...rate-English-text-using-the-Greek-alphabet | 1 + Lang/Java/Ukkonen-s-suffix-tree-construction | 1 + Lang/Java/Variable-size-Set | 1 + .../Wasteful-equidigital-and-frugal-numbers | 1 + Lang/Java/Wordiff | 1 + .../Find-if-a-point-is-within-a-triangle | 1 + Lang/Joy/Sum-multiples-of-3-and-5 | 1 + Lang/Julia/B-zier-curves-Intersections | 1 + Lang/KL1/Hello-world-Text | 1 + Lang/Koka/Tic-tac-toe | 1 + Lang/Lean/Hello-world-Standard-error | 1 + Lang/Logo/00-LANG.txt | 2 +- Lang/Lua/Equal-prime-and-composite-sums | 1 + Lang/Lua/Giuga-numbers | 1 + Lang/Lua/Jacobi-symbol | 1 + Lang/Lua/Largest-proper-divisor-of-n | 1 + ...-which-are-not-the-sum-of-distinct-squares | 1 + Lang/Lua/Radical-of-an-integer | 1 + Lang/MACRO-11/Binary-digits | 1 + Lang/MACRO-11/McNuggets-problem | 1 + Lang/MAD/Count-the-coins | 1 + Lang/MSX-Basic/Arithmetic-Integer | 1 + Lang/MSX-Basic/Balanced-brackets | 1 + Lang/MSX-Basic/Casting-out-nines | 1 + .../Catalan-numbers-Pascals-triangle | 1 + Lang/MSX-Basic/Chaos-game | 1 + Lang/MSX-Basic/Character-codes | 1 + Lang/MSX-Basic/Compare-length-of-two-strings | 1 + Lang/MSX-Basic/Egyptian-division | 1 + Lang/MSX-Basic/Guess-the-number-With-feedback | 1 + Lang/MSX-Basic/Logical-operations | 1 + Lang/MSX-Basic/Longest-string-challenge | 1 + Lang/MSX-Basic/Magic-squares-of-odd-order | 1 + Lang/MSX-Basic/Pig-the-dice-game | 1 + Lang/MSX-Basic/Sorting-algorithms-Gnome-sort | 1 + Lang/Macsyma/00-LANG.txt | 4 + Lang/Macsyma/00-META.yaml | 2 + Lang/Maxima/00-LANG.txt | 5 +- Lang/Maxima/Babbage-problem | 1 + Lang/Maxima/Calculating-the-value-of-e | 1 + Lang/Maxima/Catalan-numbers-Pascals-triangle | 1 + Lang/Maxima/Motzkin-numbers | 1 + Lang/Maxima/Multifactorial | 1 + Lang/Mia/00-LANG.txt | 1 + Lang/Mia/00-META.yaml | 2 + Lang/MiniScript/15-puzzle-game | 1 + Lang/MiniScript/4-rings-or-4-squares-puzzle | 1 + Lang/MiniScript/Abelian-sandpile-model | 1 + Lang/MiniScript/Abundant-odd-numbers | 1 + Lang/MiniScript/Accumulator-factory | 1 + Lang/MiniScript/Additive-primes | 1 + Lang/MiniScript/Align-columns | 1 + Lang/MiniScript/Almost-prime | 1 + Lang/MiniScript/Anagrams | 1 + Lang/MiniScript/Archimedean-spiral | 1 + Lang/MiniScript/Attractive-numbers | 1 + Lang/MiniScript/Averages-Mean-angle | 1 + Lang/MiniScript/Bitmap | 1 + Lang/MiniScript/Bitmap-B-zier-curves-Cubic | 1 + .../MiniScript/Bitmap-B-zier-curves-Quadratic | 1 + .../Bitmap-Bresenhams-line-algorithm | 1 + Lang/MiniScript/Bitmap-Flood-fill | 1 + Lang/MiniScript/Cantor-set | 1 + Lang/MiniScript/Compare-length-of-two-strings | 1 + Lang/MiniScript/Count-in-octal | 1 + Lang/MiniScript/Digital-root | 1 + Lang/MiniScript/Disarium-numbers | 1 + Lang/MiniScript/Elementary-cellular-automaton | 1 + Lang/MiniScript/Fractal-tree | 1 + Lang/MiniScript/Grayscale-image | 1 + Lang/MiniScript/Hailstone-sequence | 1 + Lang/MiniScript/Hello-world-Graphical | 1 + Lang/MiniScript/Hex-words | 1 + Lang/MiniScript/ISBN13-check-digit | 1 + Lang/MiniScript/Image-noise | 1 + Lang/MiniScript/Longest-string-challenge | 1 + Lang/MiniScript/MAC-vendor-lookup | 1 + Lang/MiniScript/McNuggets-problem | 1 + Lang/MiniScript/N-queens-problem | 1 + Lang/MiniScript/Order-by-pair-comparisons | 1 + Lang/MiniScript/Pi | 1 + ...than-previous-term-with-exactly-n-divisors | 1 + ...e:-smallest-number-with-exactly-n-divisors | 1 + .../Singly-linked-list-Element-definition | 1 + .../Singly-linked-list-Element-insertion | 1 + Lang/MiniScript/Solve-a-Hidato-puzzle | 1 + Lang/MiniScript/Sort-disjoint-sublist | 1 + Lang/MiniScript/Sorting-algorithms-Gnome-sort | 1 + Lang/MiniScript/String-append | 1 + Lang/MiniScript/Symmetric-difference | 1 + Lang/MiniScript/Tau-function | 1 + Lang/MiniScript/Tau-number | 1 + Lang/MiniScript/Wireworld | 1 + .../Zeckendorf-number-representation | 1 + Lang/Minimal-BASIC/Arithmetic-Integer | 1 + Lang/Minimal-BASIC/Arithmetic-geometric-mean | 1 + Lang/Minimal-BASIC/Array-concatenation | 1 + Lang/Minimal-BASIC/Find-limit-of-recursion | 1 + Lang/Minimal-BASIC/Knuth-shuffle | 1 + Lang/Minimal-BASIC/Recamans-sequence | 1 + Lang/Minimal-BASIC/Repeat-a-string | 1 + .../Sorting-algorithms-Gnome-sort | 1 + .../String-interpolation-included- | 1 + Lang/Nial/00-LANG.txt | 4 +- Lang/Nu/00-LANG.txt | 3 + Lang/Nu/00-META.yaml | 2 + Lang/Nu/A+B | 1 + Lang/Nu/Arithmetic-Integer | 1 + Lang/Nu/Array-concatenation | 1 + Lang/Nu/Array-length | 1 + Lang/Nu/Arrays | 1 + Lang/Nu/Balanced-brackets | 1 + Lang/Nu/Command-line-arguments | 1 + Lang/Nu/Determine-if-a-string-is-numeric | 1 + Lang/Nu/Environment-variables | 1 + Lang/Nu/Factorial | 1 + Lang/Nu/File-input-output | 1 + Lang/Nu/FizzBuzz | 1 + Lang/Nu/Hello-world-Standard-error | 1 + Lang/Nu/Hello-world-Text | 1 + Lang/Nu/Integer-comparison | 1 + Lang/Nu/Logical-operations | 1 + Lang/Nu/Loops-Break | 1 + Lang/Nu/Loops-Continue | 1 + Lang/Nu/Loops-Do-while | 1 + Lang/Nu/Loops-Downward-for | 1 + Lang/Nu/Loops-For | 1 + Lang/Nu/Loops-For-with-a-specified-step | 1 + Lang/Nu/Loops-Foreach | 1 + Lang/Nu/Loops-Infinite | 1 + Lang/Nu/Loops-N-plus-one-half | 1 + Lang/Nu/MAC-vendor-lookup | 1 + Lang/Nu/Nth-root | 1 + Lang/Nu/User-input-Text | 1 + Lang/Ol/Convert-decimal-number-to-rational | 1 + Lang/Ol/Multifactorial | 1 + Lang/Ol/Population-count | 1 + Lang/PL-0/00-LANG.txt | 14 +- Lang/PL-I-80/Sum-multiples-of-3-and-5 | 1 + Lang/PL-M/00-LANG.txt | 2 +- Lang/PL-M/Jacobi-symbol | 1 + Lang/PL-M/Sorting-algorithms-Gnome-sort | 1 + Lang/Pascal/McNuggets-problem | 1 + Lang/Pascal/Square-form-factorization | 1 + Lang/Phix/00-LANG.txt | 2 +- Lang/PostScript/00-LANG.txt | 18 +- Lang/Prolog/Ascending-primes | 1 + Lang/Prolog/Descending-primes | 1 + Lang/PureBasic/21-game | 1 + Lang/PureBasic/Casting-out-nines | 1 + ...mine-if-a-string-has-all-unique-characters | 1 + Lang/PureBasic/Equal-prime-and-composite-sums | 1 + Lang/PureBasic/Factorial-primes | 1 + .../PureBasic/Padovan-n-step-number-sequences | 1 + ...than-previous-term-with-exactly-n-divisors | 1 + ...e:-smallest-number-with-exactly-n-divisors | 1 + Lang/PureBasic/Van-Eck-sequence | 1 + Lang/Python/Home-primes | 1 + Lang/Python/Particle-fountain | 1 + Lang/Python/Radical-of-an-integer | 1 + Lang/QBasic/21-game | 1 + Lang/QBasic/Cantor-set | 1 + Lang/QBasic/Casting-out-nines | 1 + Lang/QBasic/Longest-string-challenge | 1 + Lang/QBasic/One-dimensional-cellular-automata | 1 + Lang/QBasic/Padovan-n-step-number-sequences | 1 + ...than-previous-term-with-exactly-n-divisors | 1 + ...e:-smallest-number-with-exactly-n-divisors | 1 + Lang/QBasic/Sorting-algorithms-Gnome-sort | 1 + Lang/QBasic/Van-Eck-sequence | 1 + Lang/Quackery/Bifid-cipher | 1 + Lang/Quackery/Bin-given-limits | 1 + Lang/Quackery/Bulls-and-cows | 1 + Lang/Quackery/Conways-Game-of-Life | 1 + Lang/Quackery/Deal-cards-for-FreeCell | 1 + ...mine-if-a-string-has-all-unique-characters | 1 + Lang/Quackery/Draw-a-clock | 1 + ...fect-square-in-base-n-with-n-unique-digits | 1 + Lang/Quackery/Four-bit-adder | 1 + Lang/Quackery/Hello-world-Graphical | 1 + .../Hofstadter-Figure-Figure-sequences | 1 + Lang/Quackery/Hunt-the-Wumpus | 1 + Lang/Quackery/Longest-common-substring | 1 + Lang/Quackery/Longest-string-challenge | 1 + Lang/Quackery/Morse-code | 1 + ...-which-are-not-the-sum-of-distinct-squares | 1 + Lang/Quackery/Penneys-game | 1 + Lang/Quackery/Periodic-table | 1 + Lang/Quackery/Set-consolidation | 1 + Lang/Quackery/Set-puzzle | 1 + Lang/Quackery/Set-right-adjacent-bits | 1 + Lang/Quackery/Speech-synthesis | 1 + Lang/Quackery/Spelling-of-ordinal-numbers | 1 + Lang/Quackery/Subtractive-generator | 1 + Lang/Quackery/Super-d-numbers | 1 + Lang/Quackery/Ulam-spiral-for-primes- | 1 + Lang/Quackery/Wagstaff-primes | 1 + Lang/QuickBASIC/Sorting-algorithms-Gnome-sort | 1 + Lang/Quite-BASIC/Arithmetic-Integer | 1 + Lang/Quite-BASIC/Arithmetic-geometric-mean | 1 + Lang/Quite-BASIC/Array-concatenation | 1 + Lang/Quite-BASIC/Box-the-compass | 1 + Lang/Quite-BASIC/Find-limit-of-recursion | 1 + Lang/Quite-BASIC/Logical-operations | 1 + Lang/Quite-BASIC/Periodic-table | 1 + Lang/Quite-BASIC/Repeat-a-string | 1 + .../Quite-BASIC/Sorting-algorithms-Gnome-sort | 1 + .../String-interpolation-included- | 1 + Lang/R/Abbreviations-automatic | 1 + Lang/R/Abbreviations-easy | 1 + Lang/R/Abelian-sandpile-model | 1 + Lang/R/Additive-primes | 1 + Lang/R/Execute-Brain- | 1 + Lang/RPL/00-LANG.txt | 4 +- Lang/Racket/Rare-numbers | 1 + Lang/Raku/B-zier-curves-Intersections | 1 + Lang/Rhovas/Classes | 1 + Lang/Rhovas/Hello-world-Text | 1 + Lang/Rhovas/Palindrome-detection | 1 + Lang/Ring/Hex-words | 1 + Lang/Ruby/Ormiston-triples | 1 + Lang/Ruby/Padovan-n-step-number-sequences | 1 + Lang/Run-BASIC/Casting-out-nines | 1 + Lang/Run-BASIC/Largest-proper-divisor-of-n | 1 + Lang/Run-BASIC/Population-count | 1 + ...than-previous-term-with-exactly-n-divisors | 1 + Lang/Run-BASIC/Sorting-algorithms-Gnome-sort | 1 + Lang/Rust/Combinations-and-permutations | 1 + .../Rust/Find-if-a-point-is-within-a-triangle | 1 + Lang/Rust/Largest-proper-divisor-of-n | 1 + Lang/Rust/M-bius-function | 1 + Lang/Rust/Own-digits-power-sum | 1 + Lang/Rust/Recamans-sequence | 1 + Lang/S-BASIC/Babbage-problem | 1 + Lang/S-BASIC/Boolean-values | 1 + Lang/S-BASIC/Digital-root | 1 + Lang/S-BASIC/Exponentiation-order | 1 + Lang/S-BASIC/File-input-output | 1 + Lang/S-BASIC/Sum-multiples-of-3-and-5 | 1 + Lang/SETL/100-prisoners | 1 + ...ficient-and-perfect-number-classifications | 1 + Lang/SETL/Align-columns | 1 + Lang/SETL/Amicable-pairs | 1 + Lang/SETL/Arithmetic-numbers | 1 + Lang/SETL/Attractive-numbers | 1 + Lang/SETL/Balanced-brackets | 1 + Lang/SETL/Binary-digits | 1 + Lang/SETL/Bulls-and-cows | 1 + Lang/SETL/Comma-quibbling | 1 + Lang/SETL/Count-occurrences-of-a-substring | 1 + Lang/SETL/Count-the-coins | 1 + Lang/SETL/Disarium-numbers | 1 + Lang/SETL/Entropy | 1 + Lang/SETL/Euclid-Mullin-sequence | 1 + Lang/SETL/Evolutionary-algorithm | 1 + Lang/SETL/Execute-Brain- | 1 + Lang/SETL/Execute-a-Markov-algorithm | 1 + Lang/SETL/Fibonacci-word | 1 + Lang/SETL/FizzBuzz | 1 + Lang/SETL/Hailstone-sequence | 1 + Lang/SETL/Harshad-or-Niven-series | 1 + Lang/SETL/Hofstadter-Figure-Figure-sequences | 1 + Lang/SETL/Hofstadter-Q-sequence | 1 + Lang/SETL/I-before-E-except-after-C | 1 + Lang/SETL/Isqrt-integer-square-root-of-X | 1 + Lang/SETL/Jacobsthal-numbers | 1 + Lang/SETL/Jewels-and-stones | 1 + Lang/SETL/Knuth-shuffle | 1 + Lang/SETL/Longest-common-substring | 1 + Lang/SETL/Look-and-say-sequence | 1 + Lang/SETL/Magnanimous-numbers | 1 + Lang/SETL/McNuggets-problem | 1 + Lang/SETL/Mertens-function | 1 + ...m-multiple-of-m-where-digital-sum-equals-m | 1 + Lang/SETL/Multifactorial | 1 + Lang/SETL/Mutual-recursion | 1 + Lang/SETL/Nth | 1 + Lang/SETL/Number-reversal-game | 1 + Lang/SETL/Perfect-shuffle | 1 + Lang/SETL/Pig-the-dice-game | 1 + Lang/SETL/Population-count | 1 + Lang/SETL/Recamans-sequence | 1 + Lang/SETL/Rep-string | 1 + Lang/SETL/Run-length-encoding | 1 + Lang/SETL/Sequence-of-non-squares | 1 + ...e:-smallest-number-with-exactly-n-divisors | 1 + Lang/SETL/Set-consolidation | 1 + Lang/SETL/Sierpinski-triangle | 1 + Lang/SETL/Sieve-of-Eratosthenes | 1 + Lang/SETL/Smith-numbers | 1 + Lang/SETL/Sorting-algorithms-Merge-sort | 1 + Lang/SETL/Subleq | 1 + Lang/SETL/Symmetric-difference | 1 + Lang/SETL/The-Twelve-Days-of-Christmas | 1 + Lang/SETL/Totient-function | 1 + Lang/SETL/Towers-of-Hanoi | 1 + Lang/SETL/Tree-traversal | 1 + Lang/SETL/Truth-table | 1 + Lang/SETL/Van-Eck-sequence | 1 + Lang/SETL/Yin-and-yang | 1 + Lang/Sidef/Achilles-numbers | 1 + Lang/Sidef/Blum-integer | 1 + .../Compare-sorting-algorithms-performance | 1 + Lang/Sidef/Erd-s-Nicolas-numbers | 1 + Lang/Sidef/Giuga-numbers | 1 + Lang/Sidef/Golden-ratio-Convergence | 1 + Lang/Sidef/Largest-proper-divisor-of-n | 1 + Lang/Sidef/Meissel-Mertens-constant | 1 + ...ts-of-the-product-of-their-proper-divisors | 1 + Lang/Sidef/Radical-of-an-integer | 1 + Lang/Sidef/Sphenic-numbers | 1 + Lang/Sidef/Square-form-factorization | 1 + Lang/Tailspin/Word-wrap | 1 + Lang/True-BASIC/21-game | 1 + Lang/True-BASIC/Balanced-brackets | 1 + Lang/True-BASIC/Cantor-set | 1 + Lang/True-BASIC/Casting-out-nines | 1 + Lang/True-BASIC/McNuggets-problem | 1 + ...m-multiple-of-m-where-digital-sum-equals-m | 1 + ...e:-smallest-number-with-exactly-n-divisors | 1 + Lang/UNIX-Shell/Doomsday-rule | 1 + .../Generate-Chess960-starting-position | 1 + Lang/Ursalang/00-LANG.txt | 5 + Lang/Ursalang/00-META.yaml | 2 + Lang/Ursalang/Accumulator-factory | 1 + Lang/Ursalang/Ackermann-function | 1 + Lang/Ursalang/Conditional-structures | 1 + Lang/Ursalang/Hello-world-Text | 1 + Lang/Ursalang/Integer-sequence | 1 + Lang/Uxntal/00-LANG.txt | 21 + Lang/Uxntal/00-META.yaml | 2 + Lang/Uxntal/Character-codes | 1 + Lang/Uxntal/Colour-bars-Display | 1 + Lang/Uxntal/Colour-pinstripe-Display | 1 + Lang/Uxntal/Draw-a-pixel | 1 + Lang/Uxntal/Factorial | 1 + Lang/Uxntal/File-input-output | 1 + Lang/Uxntal/Find-limit-of-recursion | 1 + Lang/Uxntal/Hello-world-Newline-omission | 1 + Lang/Uxntal/Hello-world-Text | 1 + Lang/Uxntal/Literals-Integer | 1 + Lang/Uxntal/Mouse-position | 1 + Lang/Uxntal/Rot-13 | 1 + Lang/Uxntal/Sum-digits-of-an-integer | 1 + Lang/V-(Vlang)/00-LANG.txt | 27 +- Lang/Vedit-macro-language/A+B | 1 + Lang/Vedit-macro-language/Babbage-problem | 1 + Lang/Wren/00-LANG.txt | 4 +- Lang/XBasic/A+B | 1 + Lang/XBasic/Arithmetic-Integer | 1 + Lang/XBasic/Array-length | 1 + Lang/XBasic/Casting-out-nines | 1 + Lang/XBasic/Catalan-numbers-Pascals-triangle | 1 + Lang/XBasic/Character-codes | 1 + Lang/XBasic/Compare-length-of-two-strings | 1 + Lang/XBasic/Egyptian-division | 1 + Lang/XBasic/Factors-of-an-integer | 1 + ...m-multiple-of-m-where-digital-sum-equals-m | 1 + Lang/XBasic/Repeat-a-string | 1 + Lang/XBasic/Rot-13 | 1 + ...than-previous-term-with-exactly-n-divisors | 1 + ...e:-smallest-number-with-exactly-n-divisors | 1 + Lang/XBasic/String-append | 1 + Lang/XBasic/String-interpolation-included- | 1 + Lang/XBasic/Sum-digits-of-an-integer | 1 + Lang/XBasic/Tau-number | 1 + Lang/XBasic/The-Twelve-Days-of-Christmas | 1 + Lang/XBasic/Van-Eck-sequence | 1 + Lang/XPL0/00-LANG.txt | 6 +- Lang/XPL0/Align-columns | 1 + Lang/XPL0/Convex-hull | 1 + Lang/XPL0/Find-limit-of-recursion | 1 + Lang/XPL0/Heronian-triangles | 1 + Lang/XPL0/Knapsack-problem-Unbounded | 1 + .../Ramer-Douglas-Peucker-line-simplification | 1 + Lang/XPL0/Roots-of-a-quadratic-function | 1 + Lang/XPL0/Self-numbers | 1 + Lang/XPL0/Write-float-arrays-to-a-text-file | 1 + Lang/Yabasic/21-game | 1 + Lang/Yabasic/Arithmetic-geometric-mean | 1 + Lang/Yabasic/Benfords-law | 1 + Lang/Yabasic/Boyer-Moore-string-search | 1 + Lang/Yabasic/Cantor-set | 1 + Lang/Yabasic/Casting-out-nines | 1 + Lang/Yabasic/Catalan-numbers-Pascals-triangle | 1 + Lang/Yabasic/Equal-prime-and-composite-sums | 1 + Lang/Yabasic/Goldbachs-comet | 1 + Lang/Yabasic/Padovan-n-step-number-sequences | 1 + Lang/Yabasic/Pig-the-dice-game | 1 + ...than-previous-term-with-exactly-n-divisors | 1 + ...e:-smallest-number-with-exactly-n-divisors | 1 + Lang/Yabasic/Sorting-algorithms-Gnome-sort | 1 + Lang/Yabasic/Subleq | 1 + Lang/Yabasic/Van-Eck-sequence | 1 + Lang/Zig/100-prisoners | 1 + Lang/Zig/Binary-search | 1 + Lang/Zig/Case-sensitivity-of-identifiers | 1 + Lang/Zig/Catamorphism | 1 + Lang/Zig/Find-limit-of-recursion | 1 + Lang/Zig/Introspection | 1 + Lang/Zig/Levenshtein-distance | 1 + Lang/Zig/Man-or-boy-test | 1 + Lang/Zig/Read-entire-file | 1 + Lang/Zig/Sort-using-a-custom-comparator | 1 + Lang/Zig/Unicode-variable-names | 1 + Task/100-doors/ALGOL-60/100-doors.alg | 31 -- Task/100-doors/ALGOL-W/100-doors.alg | 32 -- Task/100-doors/EMal/100-doors.emal | 19 +- Task/100-doors/Elena/100-doors.elena | 2 +- Task/100-doors/JavaScript/100-doors-8.js | 2 +- Task/100-prisoners/Phix/100-prisoners.phix | 56 ++- Task/100-prisoners/SETL/100-prisoners.setl | 59 +++ Task/100-prisoners/Wren/100-prisoners.wren | 6 +- Task/100-prisoners/Zig/100-prisoners-1.zig | 128 ++++++ Task/100-prisoners/Zig/100-prisoners-2.zig | 15 + .../FutureBasic/15-puzzle-game.basic | 89 ++++ .../MiniScript/15-puzzle-game-1.mini | 114 +++++ .../MiniScript/15-puzzle-game-2.mini | 218 ++++++++++ .../15-puzzle-game/Phix/15-puzzle-game-1.phix | 58 ++- Task/15-puzzle-game/Wren/15-puzzle-game.wren | 6 +- .../Wren/15-puzzle-solver.wren | 2 +- Task/2048/00-TASK.txt | 16 +- Task/2048/FutureBasic/2048.basic | 161 +++++++ Task/2048/Wren/2048.wren | 8 +- Task/21-game/BASIC256/21-game.basic | 31 ++ Task/21-game/Chipmunk-Basic/21-game.basic | 133 ++++++ Task/21-game/PureBasic/21-game.basic | 40 ++ Task/21-game/QBasic/21-game.basic | 34 ++ Task/21-game/True-BASIC/21-game.basic | 30 ++ Task/21-game/Wren/21-game.wren | 4 +- Task/21-game/Yabasic/21-game.basic | 33 ++ Task/24-game-Solve/Wren/24-game-solve.wren | 2 +- Task/24-game/Elena/24-game.elena | 53 ++- Task/24-game/Wren/24-game.wren | 4 +- .../4-rings-or-4-squares-puzzle.mini | 71 +++ .../Wren/4-rings-or-4-squares-puzzle.wren | 2 +- .../9-billion-names-of-god-the-integer.wren | 4 +- .../Elena/99-bottles-of-beer.elena | 6 +- .../Wren/99-bottles-of-beer.wren | 8 +- .../YAMLScript/99-bottles-of-beer.ys | 20 +- Task/A+B/Nu/a+b.nu | 1 + Task/A+B/Sidef/a+b-2.sidef | 2 +- Task/A+B/Sinclair-ZX81-BASIC/a+b-2.basic | 18 - .../{a+b-1.basic => a+b.basic} | 0 Task/A+B/Vedit-macro-language/a+b-1.vedit | 13 + Task/A+B/Vedit-macro-language/a+b-2.vedit | 3 + Task/A+B/XBasic/a+b.basic | 21 + Task/ABC-problem/Elena/abc-problem.elena | 4 +- Task/ABC-problem/Wren/abc-problem.wren | 4 +- Task/ADFGVX-cipher/C++/adfgvx-cipher.cpp | 133 ++++++ Task/ADFGVX-cipher/Java/adfgvx-cipher.java | 110 +++++ Task/ADFGVX-cipher/Wren/adfgvx-cipher.wren | 6 +- .../Wren/ascii-art-diagram-converter.wren | 6 +- Task/AVL-tree/Emacs-Lisp/avl-tree.l | 212 +++++++++ .../R/abbreviations-automatic.r | 21 + .../Wren/abbreviations-automatic.wren | 6 +- .../Abbreviations-easy/R/abbreviations-easy.r | 33 ++ .../Wren/abbreviations-easy.wren | 4 +- .../Wren/abbreviations-simple.wren | 4 +- .../Wren/abelian-sandpile-model-identity.wren | 2 +- .../MiniScript/abelian-sandpile-model.mini | 76 ++++ .../R/abelian-sandpile-model.r | 42 ++ .../Wren/abelian-sandpile-model.wren | 2 +- Task/Abstract-type/EMal/abstract-type.emal | 2 +- Task/Abstract-type/Wren/abstract-type.wren | 2 +- ...nt-and-perfect-number-classifications.setl | 17 + ...-and-perfect-number-classifications-1.wren | 2 +- ...-and-perfect-number-classifications-2.wren | 34 +- .../MiniScript/abundant-odd-numbers.mini | 44 ++ .../Wren/abundant-odd-numbers.wren | 8 +- .../EMal/accumulator-factory.emal | 4 +- .../Elena/accumulator-factory.elena | 2 +- .../MiniScript/accumulator-factory.mini | 25 ++ .../Ursalang/accumulator-factory.ursa | 10 + .../BASIC256/achilles-numbers.basic | 85 ++++ .../Perl/achilles-numbers-1.pl | 22 +- .../Sidef/achilles-numbers.sidef | 14 + .../Wren/achilles-numbers-1.wren | 21 +- .../Wren/achilles-numbers-2.wren | 22 +- .../Elena/ackermann-function.elena | 38 +- .../Ursalang/ackermann-function.ursa | 9 + .../Wren/active-directory-connect-1.wren | 2 +- .../Wren/active-directory-connect-2.wren | 2 +- .../active-directory-search-for-a-user-1.wren | 2 +- .../active-directory-search-for-a-user-2.wren | 2 +- ...riable-to-a-class-instance-at-runtime.java | 34 ++ .../MiniScript/additive-primes.mini | 28 ++ Task/Additive-primes/R/additive-primes.r | 9 + .../Additive-primes/Wren/additive-primes.wren | 4 +- .../Java/algebraic-data-types.java | 72 ++++ Task/Align-columns/APL/align-columns.apl | 10 + .../Align-columns/EasyLang/align-columns.easy | 8 +- .../MiniScript/align-columns.mini | 58 +++ Task/Align-columns/SETL/align-columns.setl | 34 ++ Task/Align-columns/Wren/align-columns.wren | 2 +- Task/Align-columns/XPL0/align-columns.xpl0 | 57 +++ .../aliquot-sequence-classifications.wren | 12 +- .../almkvist-giullera-formula-for-pi.wren | 4 +- ...{almost-prime.icon => almost-prime-1.icon} | 0 Task/Almost-prime/Icon/almost-prime-2.icon | 29 ++ .../Almost-prime/MiniScript/almost-prime.mini | 24 ++ Task/Almost-prime/Sidef/almost-prime-1.sidef | 46 ++ Task/Almost-prime/Sidef/almost-prime-2.sidef | 4 + Task/Almost-prime/Sidef/almost-prime.sidef | 18 - Task/Almost-prime/V-(Vlang)/almost-prime.v | 18 +- Task/Amb/C++/amb-2.cpp | 2 +- ...cable-pairs.rust => amicable-pairs-1.rust} | 0 .../Amicable-pairs/Rust/amicable-pairs-2.rust | 19 + Task/Amicable-pairs/SETL/amicable-pairs.setl | 17 + .../Amicable-pairs/V-(Vlang)/amicable-pairs.v | 4 +- Task/Amicable-pairs/Wren/amicable-pairs.wren | 6 +- .../Wren/anagrams-deranged-anagrams.wren | 2 +- Task/Anagrams/Amazing-Hopper/anagrams.hopper | 45 ++ Task/Anagrams/Elena/anagrams.elena | 3 +- Task/Anagrams/MiniScript/anagrams.mini | 27 ++ Task/Anagrams/Wren/anagrams.wren | 2 +- .../angle-difference-between-two-bearings.bqn | 12 + ...ngle-difference-between-two-bearings.basic | 32 ++ .../angle-difference-between-two-bearings-1.j | 1 - .../angle-difference-between-two-bearings-2.j | 27 -- .../J/angle-difference-between-two-bearings.j | 16 + ...ometric-normalization-and-conversion.basic | 41 ++ ...eometric-normalization-and-conversion.wren | 2 +- Task/Animation/EasyLang/animation.easy | 25 ++ Task/Animation/MiniScript/animation-1.mini | 19 + Task/Animation/MiniScript/animation-2.mini | 17 + Task/Animation/MiniScript/animation.mini | 12 - .../Chipmunk-Basic/anonymous-recursion.basic | 10 + .../IS-BASIC/anonymous-recursion.basic | 28 +- Task/Anti-primes/Wren/anti-primes.wren | 2 +- .../BQN/apply-a-callback-to-an-array.bqn | 5 + ...tal-filter-direct-form-ii-transposed-.wren | 2 +- ...rbitrary-precision-integers-included-.wren | 4 +- .../BBC-BASIC/archimedean-spiral.basic | 15 + .../MiniScript/archimedean-spiral-1.mini | 11 + .../MiniScript/archimedean-spiral-2.mini | 13 + .../Wren/arithmetic-complex.wren | 2 +- .../Chipmunk-Basic/arithmetic-integer.basic | 7 + ...teger-1.basic => arithmetic-integer.basic} | 0 .../Dart/arithmetic-integer.dart | 18 + .../GW-BASIC/arithmetic-integer.basic | 7 + .../MSX-Basic/arithmetic-integer.basic | 7 + .../Minimal-BASIC/arithmetic-integer.basic | 11 + .../Nu/arithmetic-integer.nu | 10 + .../Quite-BASIC/arithmetic-integer-1.basic | 7 + .../arithmetic-integer-2.basic | 0 .../XBasic/arithmetic-integer.basic | 19 + .../Wren/arithmetic-rational.wren | 4 +- .../arithmetic-evaluation.hopper | 285 ++++++++++++ .../Wren/arithmetic-evaluation.wren | 2 +- ...ithmetic-geometric-mean-calculate-pi.basic | 14 + ...rithmetic-geometric-mean-calculate-pi.wren | 2 +- .../Gambas/arithmetic-geometric-mean.gambas | 19 + .../arithmetic-geometric-mean.basic | 11 + .../arithmetic-geometric-mean.basic | 10 + .../Yabasic/arithmetic-geometric-mean.basic | 14 + .../SETL/arithmetic-numbers.setl | 33 ++ .../GW-BASIC/array-concatenation.basic | 23 + .../Minimal-BASIC/array-concatenation.basic | 21 + .../Nu/array-concatenation.nu | 3 + .../Quite-BASIC/array-concatenation.basic | 24 ++ .../Chipmunk-Basic/array-length.basic | 5 + Task/Array-length/Nu/array-length.nu | 1 + Task/Array-length/XBasic/array-length.basic | 15 + Task/Arrays/Nu/arrays.nu | 16 + Task/Ascending-primes/J/ascending-primes.j | 17 +- .../Prolog/ascending-primes.pro | 31 ++ .../Wren/ascending-primes-1.wren | 3 +- .../Wren/ascending-primes-2.wren | 3 +- .../associative-array-creation-1.easy | 1 - .../associative-array-creation-2.easy | 18 - .../EasyLang/associative-array-creation.easy | 24 ++ .../Sidef/associative-array-creation.sidef | 6 +- .../EasyLang/associative-array-iteration.easy | 16 +- .../Sidef/associative-array-iteration.sidef | 8 +- Task/Atomic-updates/Wren/atomic-updates.wren | 2 +- .../MiniScript/attractive-numbers.mini | 32 ++ .../SETL/attractive-numbers.setl | 28 ++ .../Wren/attractive-numbers.wren | 6 +- .../Sidef/averages-arithmetic-mean.sidef | 14 +- .../MiniScript/averages-mean-angle.mini | 22 + .../Wren/averages-mean-angle.wren | 2 +- .../Wren/averages-mean-time-of-day.wren | 4 +- .../Amazing-Hopper/averages-median.hopper | 29 ++ .../Averages-Median/Wren/averages-median.wren | 6 +- .../Averages-Mode/EasyLang/averages-mode.easy | 25 ++ .../BQN/averages-pythagorean-means.bqn | 5 + .../EasyLang/averages-pythagorean-means.easy | 16 + .../averages-simple-moving-average.easy | 29 ++ .../Wren/averages-simple-moving-average.wren | 4 +- .../Julia/b-zier-curves-intersections.julia | 131 ++++++ .../Raku/b-zier-curves-intersections.raku | 94 ++++ .../Amazing-Hopper/babbage-problem.hopper | 13 + .../Julia/babbage-problem.julia | 13 +- .../Maxima/babbage-problem.maxima | 14 + .../Raku/babbage-problem-1.raku | 2 +- .../S-BASIC/babbage-problem.basic | 32 ++ .../babbage-problem.vedit | 25 ++ .../Babbage-problem/Wren/babbage-problem.wren | 2 +- .../Amazing-Hopper/balanced-brackets.hopper | 41 ++ .../EasyLang/balanced-brackets.easy | 29 ++ .../MSX-Basic/balanced-brackets.basic | 20 + .../Balanced-brackets/Nu/balanced-brackets.nu | 12 + .../SETL/balanced-brackets.setl | 31 ++ .../True-BASIC/balanced-brackets.basic | 26 ++ .../Wren/balanced-ternary.wren | 4 +- .../Wren/base64-decode-data.wren | 4 +- Task/Bell-numbers/Wren/bell-numbers.wren | 4 +- Task/Benfords-law/BASIC256/benfords-law.basic | 34 ++ Task/Benfords-law/EasyLang/benfords-law.easy | 50 +++ .../FutureBasic/benfords-law.basic | 64 +++ Task/Benfords-law/Julia/benfords-law.julia | 2 +- Task/Benfords-law/Sidef/benfords-law.sidef | 7 +- Task/Benfords-law/Wren/benfords-law.wren | 2 +- Task/Benfords-law/Yabasic/benfords-law.basic | 41 ++ .../Wren/bernoulli-numbers.wren | 4 +- Task/Bifid-cipher/EasyLang/bifid-cipher.easy | 71 +++ .../Quackery/bifid-cipher.quackery | 97 +++++ .../EasyLang/bin-given-limits.easy | 26 ++ .../Quackery/bin-given-limits.quackery | 61 +++ .../Wren/bin-given-limits.wren | 4 +- .../Chipmunk-Basic/binary-digits.basic | 15 + Task/Binary-digits/Draco/binary-digits.draco | 5 + Task/Binary-digits/J/binary-digits.j | 2 +- .../MACRO-11/binary-digits.macro11 | 25 ++ Task/Binary-digits/SETL/binary-digits.setl | 9 + Task/Binary-digits/Wren/binary-digits.wren | 2 +- Task/Binary-search/Zig/binary-search-1.zig | 20 + Task/Binary-search/Zig/binary-search-2.zig | 18 + Task/Binary-search/Zig/binary-search-3.zig | 19 + Task/Binary-search/Zig/binary-search-4.zig | 22 + .../Wren/bioinformatics-global-alignment.wren | 8 +- .../bioinformatics-sequence-mutation.basic | 50 +++ .../bioinformatics-sequence-mutation.wren | 4 +- .../BBC-BASIC/bioinformatics-base-count.basic | 27 ++ .../Wren/bioinformatics-base-count.wren | 6 +- Task/Biorhythms/Wren/biorhythms.wren | 4 +- .../Wren/bitcoin-address-validation.wren | 6 +- .../Wren/bitcoin-public-point-to-address.wren | 6 +- .../bitmap-b-zier-curves-cubic.mini | 71 +++ .../bitmap-b-zier-curves-quadratic.mini | 69 +++ .../bitmap-bresenhams-line-algorithm.easy | 37 ++ .../bitmap-bresenhams-line-algorithm.mini | 38 ++ .../MiniScript/bitmap-flood-fill.mini | 21 + .../Wren/bitmap-histogram.wren | 2 +- .../Wren/bitmap-read-a-ppm-file.wren | 1 + .../bitmap-read-an-image-through-a-pipe.wren | 1 + .../Wren/bitmap-write-a-ppm-file.wren | 11 +- Task/Bitmap/MiniScript/bitmap.mini | 30 ++ Task/Blum-integer/BASIC256/blum-integer.basic | 40 ++ Task/Blum-integer/Gambas/blum-integer.gambas | 44 ++ Task/Blum-integer/Haskell/blum-integer.hs | 114 +++++ Task/Blum-integer/Perl/blum-integer.pl | 42 +- Task/Blum-integer/Sidef/blum-integer.sidef | 47 ++ .../S-BASIC/boolean-values.basic | 29 ++ .../Chipmunk-Basic/box-the-compass.basic | 32 ++ .../GW-BASIC/box-the-compass.basic | 32 ++ .../Quite-BASIC/box-the-compass.basic | 28 ++ .../Box-the-compass/Wren/box-the-compass.wren | 4 +- .../Yabasic/boyer-moore-string-search.basic | 103 +++++ .../Wren/brazilian-numbers.wren | 2 +- .../Wren/brilliant-numbers.wren | 3 +- .../FutureBasic/bulls-and-cows-player.basic | 135 ++++++ .../Quackery/bulls-and-cows.quackery | 57 +++ Task/Bulls-and-cows/SETL/bulls-and-cows.setl | 58 +++ ...idef => burrows-wheeler-transform-1.sidef} | 0 .../Sidef/burrows-wheeler-transform-2.sidef | 81 ++++ .../Wren/burrows-wheeler-transform.wren | 2 +- Task/CRC-32/Wren/crc-32.wren | 2 +- Task/CUSIP/C++/cusip.cpp | 4 +- Task/CUSIP/EasyLang/cusip.easy | 29 ++ .../Caesar-cipher/EasyLang/caesar-cipher.easy | 15 + .../JavaScript/caesar-cipher-1.js | 2 +- .../JavaScript/caesar-cipher-2.js | 2 +- Task/Caesar-cipher/V-(Vlang)/caesar-cipher.v | 7 +- .../calculating-the-value-of-e.basic | 14 + .../Maxima/calculating-the-value-of-e.maxima | 4 + .../Raku/calculating-the-value-of-e.raku | 2 +- .../calendar---for-real-programmers-1.wren | 6 +- .../calendar---for-real-programmers-2.wren | 2 +- Task/Calendar/EasyLang/calendar.easy | 70 +++ Task/Calendar/Wren/calendar.wren | 6 +- .../Wren/calkin-wilf-sequence.wren | 4 +- .../call-a-foreign-language-function-1.wren | 2 +- .../call-a-foreign-language-function-2.wren | 2 +- ...call-a-function-in-a-shared-library-1.wren | 2 +- ...call-a-function-in-a-shared-library-3.wren | 4 +- .../EasyLang/call-a-function.easy | 2 +- .../FutureBasic/call-an-object-method.basic | 21 + .../camel-case-and-snake-case-1.basic | 47 ++ .../camel-case-and-snake-case-2.basic | 9 + .../Wren/camel-case-and-snake-case.wren | 2 +- .../Wren/canny-edge-detector.wren | 2 +- .../Wren/canonicalize-cidr.wren | 4 +- .../Amazing-Hopper/cantor-set-1.hopper | 30 ++ .../Amazing-Hopper/cantor-set-2.hopper | 19 + Task/Cantor-set/BASIC256/cantor-set.basic | 2 +- .../Chipmunk-Basic/cantor-set.basic | 34 ++ Task/Cantor-set/EasyLang/cantor-set.easy | 11 + Task/Cantor-set/MiniScript/cantor-set.mini | 21 + Task/Cantor-set/QBasic/cantor-set.basic | 34 ++ Task/Cantor-set/True-BASIC/cantor-set.basic | 34 ++ Task/Cantor-set/Yabasic/cantor-set.basic | 33 ++ .../carmichael-3-strong-pseudoprimes.alg | 3 +- .../carmichael-3-strong-pseudoprimes.basic | 36 ++ .../carmichael-3-strong-pseudoprimes.easy | 30 ++ .../carmichael-3-strong-pseudoprimes.gambas | 48 +++ .../carmichael-3-strong-pseudoprimes.wren | 4 +- ...artesian-product-of-two-or-more-lists.wren | 2 +- .../Zig/case-sensitivity-of-identifiers.zig | 9 + .../BASIC256/casting-out-nines.basic | 10 + .../Chipmunk-Basic/casting-out-nines.basic | 9 + .../EasyLang/casting-out-nines.easy | 9 + .../Gambas/casting-out-nines.gambas | 16 + .../MSX-Basic/casting-out-nines.basic | 9 + .../PureBasic/casting-out-nines.basic | 18 + .../QBasic/casting-out-nines.basic | 8 + .../Run-BASIC/casting-out-nines.basic | 10 + .../True-BASIC/casting-out-nines.basic | 13 + .../XBasic/casting-out-nines.basic | 17 + .../Yabasic/casting-out-nines.basic | 9 + .../catalan-numbers-pascals-triangle.basic | 12 + .../catalan-numbers-pascals-triangle.basic | 13 + .../catalan-numbers-pascals-triangle.basic | 12 + .../catalan-numbers-pascals-triangle.maxima | 5 + .../catalan-numbers-pascals-triangle.basic | 26 ++ .../catalan-numbers-pascals-triangle.basic | 16 + .../Catalan-numbers/Wren/catalan-numbers.wren | 4 +- .../Chipmunk-Basic/catamorphism.basic | 30 ++ Task/Catamorphism/Zig/catamorphism-1.zig | 8 + Task/Catamorphism/Zig/catamorphism-2.zig | 26 ++ Task/Catamorphism/Zig/catamorphism-3.zig | 10 + Task/Catamorphism/Zig/catamorphism-4.zig | 12 + .../catmull-clark-subdivision-surface.wren | 8 +- Task/Chaos-game/GW-BASIC/chaos-game.basic | 19 + Task/Chaos-game/IS-BASIC/chaos-game.basic | 20 + Task/Chaos-game/MSX-Basic/chaos-game.basic | 22 + .../Chipmunk-Basic/character-codes.basic | 2 + .../GW-BASIC/character-codes.basic | 2 + .../MSX-Basic/character-codes.basic | 2 + .../Uxntal/character-codes.uxnatl | 23 + .../XBasic/character-codes.basic | 10 + Task/Chat-server/Wren/chat-server-1.wren | 2 +- Task/Chat-server/Wren/chat-server-2.wren | 4 +- .../Wren/check-machin-like-formulas.wren | 4 +- .../check-input-device-is-a-terminal-1.fth | 1 + .../check-input-device-is-a-terminal-2.fth | 1 + .../check-input-device-is-a-terminal-3.fth | 1 + .../check-input-device-is-a-terminal-4.fth | 1 + .../check-output-device-is-a-terminal-1.wren | 2 +- .../check-output-device-is-a-terminal-2.wren | 2 +- .../Wren/checkpoint-synchronization.wren | 2 +- .../Wren/chernicks-carmichael-numbers.wren | 4 +- .../EasyLang/chinese-zodiac.easy | 30 ++ Task/Chinese-zodiac/Wren/chinese-zodiac.wren | 2 +- .../Wren/cholesky-decomposition.wren | 4 +- ...hurch-numerals.go => church-numerals-1.go} | 0 Task/Church-numerals/Go/church-numerals-2.go | 88 ++++ ...es-of-given-radius-through-two-points.easy | 36 ++ ...es-of-given-radius-through-two-points.wren | 2 +- .../Wren/circular-primes-1.wren | 6 +- .../Wren/circular-primes-2.wren | 2 +- .../EasyLang/cistercian-numerals.easy | 56 +++ .../Wren/cistercian-numerals.wren | 2 +- Task/Classes/Rhovas/classes-1.rhovas | 8 + Task/Classes/Rhovas/classes-2.rhovas | 10 + .../EasyLang/closest-pair-problem.easy | 19 + .../Wren/closest-pair-problem.wren | 4 +- .../Wren/color-quantization.wren | 2 +- .../Wren/colorful-numbers.wren | 3 +- .../Uxntal/colour-bars-display.uxnatl | 19 + .../EasyLang/colour-pinstripe-display.easy | 11 + .../Uxntal/colour-pinstripe-display.uxnatl | 18 + .../combinations-and-permutations.easy | 64 +++ .../Rust/combinations-and-permutations.rust | 34 ++ .../Wren/combinations-and-permutations.wren | 6 +- .../Wren/combinations-with-repetitions-1.wren | 11 +- .../EasyLang/comma-quibbling.easy | 20 + .../Comma-quibbling/SETL/comma-quibbling.setl | 27 ++ .../Nu/command-line-arguments.nu | 3 + Task/Comments/11l/comments.11l | 15 - .../Wren/compare-a-list-of-strings.wren | 2 +- .../compare-length-of-two-strings.easy | 17 +- .../compare-length-of-two-strings.basic | 34 ++ .../compare-length-of-two-strings.gambas | 17 + .../compare-length-of-two-strings.basic | 8 + .../compare-length-of-two-strings.mini | 26 ++ .../compare-length-of-two-strings.basic | 21 + ...mpare-sorting-algorithms-performance.sidef | 120 ++++++ ...ompare-sorting-algorithms-performance.wren | 4 +- .../Scala/compile-time-calculation-1.scala | 6 + ...scala => compile-time-calculation-2.scala} | 0 .../Wren/compiler-ast-interpreter.wren | 6 +- .../Wren/compiler-code-generator.wren | 8 +- .../Wren/compiler-lexical-analyzer.wren | 8 +- .../Wren/compiler-syntax-analyzer.wren | 6 +- .../compiler-virtual-machine-interpreter.wren | 8 +- ...whose-factors-are-all-substrings-of-k.easy | 57 +++ ...whose-factors-are-all-substrings-of-k.wren | 6 +- .../Curto/conditional-structures-1.curto | 2 + .../Curto/conditional-structures-2.curto | 6 + .../Ursalang/conditional-structures-1.ursa | 1 + .../Ursalang/conditional-structures-2.ursa | 3 + .../Wren/conjugate-transpose.wren | 4 +- ...h-ascending-or-descending-differences.easy | 44 ++ ...h-ascending-or-descending-differences.wren | 2 +- ...constrained-random-points-on-a-circle.easy | 10 + ...onstrained-random-points-on-a-circle.sidef | 14 +- ...hmetic-construct-from-rational-number.wren | 4 +- ...tic-g-matrix-ng-continued-fraction-n-.wren | 2 +- .../Ol/convert-decimal-number-to-rational.ol | 8 + .../convert-decimal-number-to-rational.wren | 4 +- Task/Convex-hull/Wren/convex-hull.wren | 6 +- Task/Convex-hull/XPL0/convex-hull.xpl0 | 38 ++ .../MiniScript/conways-game-of-life.mini | 2 +- .../Quackery/conways-game-of-life.quackery | 132 ++++++ .../Wren/count-in-factors.wren | 2 +- .../Amazing-Hopper/count-in-octal.hopper | 10 + Task/Count-in-octal/J/count-in-octal-1.j | 4 +- Task/Count-in-octal/J/count-in-octal-2.j | 2 +- .../MiniScript/count-in-octal.mini | 16 + ...{count-in-octal.py => count-in-octal-1.py} | 0 .../Count-in-octal/Python/count-in-octal-2.py | 4 + Task/Count-in-octal/Wren/count-in-octal.wren | 2 +- .../count-occurrences-of-a-substring.setl | 16 + .../Draco/count-the-coins.draco | 16 + .../FOCAL/count-the-coins.focal | 6 + Task/Count-the-coins/MAD/count-the-coins.mad | 14 + .../Count-the-coins/SETL/count-the-coins.setl | 14 + .../Count-the-coins/Wren/count-the-coins.wren | 4 +- Task/Cramers-rule/Wren/cramers-rule.wren | 2 +- .../Wren/create-an-html-table.wren | 2 +- .../create-an-object-at-a-given-address.basic | 24 ++ ...create-an-object-at-a-given-address-1.wren | 2 +- ...create-an-object-at-a-given-address-2.wren | 4 +- Task/Cuban-primes/ALGOL-68/cuban-primes.alg | 34 +- Task/Cuban-primes/Wren/cuban-primes.wren | 2 +- .../Wren/cullen-and-woodall-numbers-2.wren | 2 +- .../Wren/cumulative-standard-deviation.wren | 6 +- Task/Currency/BBC-BASIC/currency.basic | 11 + Task/Currency/Wren/currency.wren | 2 +- .../Curzon-numbers/Wren/curzon-numbers-1.wren | 2 +- .../BBC-BASIC/cyclops-numbers.basic | 70 +++ .../EasyLang/cyclops-numbers.easy | 99 +++++ .../Elixir/cyclops-numbers.elixir | 62 +++ .../Cyclops-numbers/Wren/cyclops-numbers.wren | 15 +- .../Wren/cyclotomic-polynomial.wren | 8 +- Task/DNS-query/Wren/dns-query-1.wren | 2 +- Task/DNS-query/Wren/dns-query-2.wren | 4 +- Task/Damm-algorithm/Wren/damm-algorithm.wren | 4 +- Task/Date-format/Wren/date-format.wren | 2 +- .../Wren/date-manipulation.wren | 2 +- .../Day-of-the-week/Wren/day-of-the-week.wren | 2 +- .../Wren/de-bruijn-sequences.wren | 4 +- .../EasyLang/deal-cards-for-freecell.easy | 33 ++ .../Quackery/deal-cards-for-freecell.quackery | 39 ++ .../AWK/deceptive-numbers.awk | 30 ++ .../Deceptive-numbers/J/deceptive-numbers-1.j | 5 - .../Deceptive-numbers/J/deceptive-numbers-2.j | 17 - .../Deceptive-numbers/J/deceptive-numbers-3.j | 2 - Task/Deceptive-numbers/J/deceptive-numbers.j | 4 + .../V-(Vlang)/deceptive-numbers.v | 23 +- .../Wren/deceptive-numbers-1.wren | 2 +- .../Wren/deconvolution-2d+.wren | 4 +- Task/Deepcopy/FutureBasic/deepcopy.basic | 44 ++ Task/Deepcopy/Wren/deepcopy.wren | 4 +- .../Sidef/define-a-primitive-data-type.sidef | 2 +- Task/Demings-funnel/Wren/demings-funnel.wren | 10 +- .../EasyLang/descending-primes.easy | 27 ++ Task/Descending-primes/J/descending-primes.j | 10 +- .../Prolog/descending-primes.pro | 32 ++ .../Wren/descending-primes.wren | 2 +- .../Wren/determinant-and-permanent.wren | 4 +- ...-a-string-has-all-the-same-characters.easy | 2 +- ...-a-string-has-all-the-same-characters-3.hs | 10 + ...-a-string-has-all-the-same-characters.wren | 2 +- ...f-a-string-has-all-unique-characters.basic | 19 + ...f-a-string-has-all-unique-characters.basic | 21 + ...if-a-string-has-all-unique-characters.easy | 2 +- ...f-a-string-has-all-unique-characters.basic | 22 + ...-string-has-all-unique-characters.quackery | 43 ++ ...if-a-string-has-all-unique-characters.raku | 3 +- ...if-a-string-has-all-unique-characters.wren | 2 +- ...f-a-string-has-all-unique-characters.basic | 3 +- .../determine-if-a-string-is-collapsible.easy | 20 + .../determine-if-a-string-is-collapsible.wren | 2 +- .../BQN/determine-if-a-string-is-numeric.bqn | 1 + .../Nu/determine-if-a-string-is-numeric.nu | 3 + .../determine-if-a-string-is-numeric.wren | 2 +- .../determine-if-a-string-is-squeezable.easy | 23 + .../determine-if-a-string-is-squeezable.wren | 2 +- .../determine-if-two-triangles-overlap.wren | 2 +- .../EasyLang/dice-game-probabilities.easy | 25 ++ ...ital-root-multiplicative-digital-root.wren | 4 +- Task/Digital-root/J/digital-root-1.j | 5 +- Task/Digital-root/J/digital-root-2.j | 7 +- Task/Digital-root/J/digital-root-5.j | 2 - Task/Digital-root/J/digital-root-6.j | 4 - .../Digital-root/MiniScript/digital-root.mini | 27 ++ Task/Digital-root/S-BASIC/digital-root.basic | 31 ++ Task/Digital-root/Wren/digital-root.wren | 2 +- .../Fortran/dijkstras-algorithm.f | 122 ++++++ .../J/dijkstras-algorithm-1.j | 2 +- .../Wren/dijkstras-algorithm.wren | 8 +- .../dinesmans-multiple-dwelling-problem.wren | 2 +- .../Amazing-Hopper/disarium-numbers.hopper | 29 ++ .../Chipmunk-Basic/disarium-numbers.basic | 26 ++ .../EasyLang/disarium-numbers.easy | 18 + Task/Disarium-numbers/J/disarium-numbers.j | 9 +- .../MiniScript/disarium-numbers.mini | 20 + .../SETL/disarium-numbers.setl | 13 + .../EasyLang/discordian-date.easy | 52 +++ .../Discordian-date/Wren/discordian-date.wren | 4 +- .../Wren/display-a-linear-combination.wren | 2 +- .../display-an-outline-as-a-nested-table.wren | 4 +- .../Wren/distributed-programming-1.wren | 2 +- .../Wren/distributed-programming-2.wren | 2 +- .../Wren/distributed-programming-3.wren | 6 +- .../Wren/distributed-programming-4.wren | 2 +- .../Wren/distributed-programming-5.wren | 4 +- ...ion-of-0-digits-in-factorial-series-1.wren | 4 +- ...ion-of-0-digits-in-factorial-series-2.wren | 2 +- .../Wren/diversity-prediction-theorem.wren | 2 +- .../Doomsday-rule/EasyLang/doomsday-rule.easy | 24 ++ .../Doomsday-rule/UNIX-Shell/doomsday-rule.sh | 22 + Task/Doomsday-rule/Wren/doomsday-rule.wren | 2 +- .../Amazing-Hopper/dot-product-1.hopper | 6 + .../Amazing-Hopper/dot-product-2.hopper | 16 + .../Amazing-Hopper/dot-product-3.hopper | 6 + .../Wren/doubly-linked-list-definition.wren | 2 +- ...doubly-linked-list-element-definition.wren | 2 +- .../doubly-linked-list-element-insertion.wren | 2 +- .../Wren/doubly-linked-list-traversal.wren | 4 +- .../Evaldraw/draw-a-clock.evaldraw | 88 ++++ .../Quackery/draw-a-clock.quackery | 77 ++++ ...{draw-a-clock.raku => draw-a-clock-1.raku} | 0 Task/Draw-a-clock/Raku/draw-a-clock-2.raku | 11 + Task/Draw-a-clock/Raku/draw-a-clock-3.raku | 10 + ...raw-a-clock.basic => draw-a-clock-1.basic} | 0 .../Draw-a-clock/Yabasic/draw-a-clock-2.basic | 168 ++++++++ Task/Draw-a-cuboid/Wren/draw-a-cuboid.wren | 2 +- .../Draw-a-pixel/BBC-BASIC/draw-a-pixel.basic | 2 +- .../C/{draw-a-pixel.c => draw-a-pixel-1.c} | 0 Task/Draw-a-pixel/C/draw-a-pixel-2.c | 71 +++ .../{draw-a-pixel.pl => draw-a-pixel-1.pl} | 0 Task/Draw-a-pixel/Perl/draw-a-pixel-2.pl | 10 + Task/Draw-a-pixel/Perl/draw-a-pixel-3.pl | 44 ++ Task/Draw-a-pixel/Uxntal/draw-a-pixel.uxnatl | 16 + .../Wren/duffinian-numbers.wren | 1 - .../EasyLang/dutch-national-flag-problem.easy | 27 ++ .../Wren/dutch-national-flag-problem.wren | 2 +- .../Wren/ekg-sequence-convergence.wren | 6 +- ...liest-difference-between-prime-gaps-1.wren | 2 +- Task/Echo-server/Wren/echo-server-1.wren | 2 +- Task/Echo-server/Wren/echo-server-2.wren | 4 +- .../Chipmunk-Basic/egyptian-division.basic | 24 ++ .../EasyLang/egyptian-division.easy | 18 + .../GW-BASIC/egyptian-division.basic | 22 + .../MSX-Basic/egyptian-division.basic | 18 + .../XBasic/egyptian-division.basic | 31 ++ .../Wren/element-wise-operations.wren | 4 +- ...ry-cellular-automaton-infinite-length.wren | 2 +- ...lar-automaton-random-number-generator.wren | 2 +- .../elementary-cellular-automaton.easy | 37 ++ .../Julia/elementary-cellular-automaton.julia | 39 +- .../elementary-cellular-automaton.mini | 83 ++++ .../Wren/elementary-cellular-automaton.wren | 2 +- ...tic-curve-digital-signature-algorithm.wren | 8 +- .../Wren/elliptic-curve-arithmetic.wren | 2 +- .../Emirp-primes/BBC-BASIC/emirp-primes.basic | 29 ++ Task/Emirp-primes/Wren/emirp-primes.wren | 2 +- .../Empty-program/EasyLang/empty-program.easy | 1 + Task/Empty-string/EMal/empty-string.emal | 9 + .../BBC-BASIC/entropy-narcissist.basic | 8 + Task/Entropy/EasyLang/entropy.easy | 2 +- Task/Entropy/SETL/entropy.setl | 16 + Task/Enumerations/Wren/enumerations-2.wren | 2 +- .../EMal/environment-variables.emal | 6 + .../Nu/environment-variables.nu | 1 + .../Wren/environment-variables-1.wren | 2 +- .../Wren/environment-variables-2.wren | 4 +- .../equal-prime-and-composite-sums.alg | 45 ++ .../equal-prime-and-composite-sums.basic | 33 ++ .../equal-prime-and-composite-sums.gambas | 43 ++ .../Lua/equal-prime-and-composite-sums.lua | 43 ++ .../equal-prime-and-composite-sums.basic | 43 ++ .../Wren/equal-prime-and-composite-sums.wren | 2 +- .../equal-prime-and-composite-sums.basic | 35 ++ .../Wren/equilibrium-index.wren | 4 +- .../Perl/erd-s-nicolas-numbers.pl | 32 +- .../Sidef/erd-s-nicolas-numbers.sidef | 22 + .../ethiopian-multiplication.basic | 26 ++ .../EasyLang/ethiopian-multiplication.easy | 24 +- .../EasyLang/euclid-mullin-sequence.easy | 17 + .../SETL/euclid-mullin-sequence.setl | 19 + .../Wren/euclid-mullin-sequence-2.wren | 2 +- Task/Euler-method/Wren/euler-method.wren | 4 +- .../Eulers-identity/Wren/eulers-identity.wren | 2 +- .../evaluate-binomial-coefficients.easy | 15 + .../Wren/evaluate-binomial-coefficients.wren | 4 +- Task/Even-or-odd/Wren/even-or-odd.wren | 2 +- Task/Events/EasyLang/events.easy | 10 + .../SETL/evolutionary-algorithm.setl | 40 ++ ...an-exception-thrown-in-a-nested-call.sidef | 14 +- Task/Exceptions/Sidef/exceptions.sidef | 15 +- .../Wren/executable-library-1.wren | 4 +- .../Wren/executable-library-2.wren | 4 +- .../EasyLang/execute-brain-.easy | 76 ++++ Task/Execute-Brain-/R/execute-brain-.r | 50 +++ Task/Execute-Brain-/SETL/execute-brain-.setl | 71 +++ .../EasyLang/execute-computer-zero.easy | 33 ++ Task/Execute-HQ9+/EasyLang/execute-hq9+.easy | 21 + .../Execute-SNUSP/EasyLang/execute-snusp.easy | 63 +++ .../SETL/execute-a-markov-algorithm.setl | 62 +++ .../Wren/execute-a-markov-algorithm.wren | 4 +- .../Wren/execute-a-system-command-1.wren | 2 +- .../Wren/execute-a-system-command-2.wren | 4 +- .../ALGOL-M/exponentiation-order.alg | 7 + .../EasyLang/exponentiation-order.easy | 2 + .../S-BASIC/exponentiation-order.basic | 5 + ...operators-in-or-operating-on-the-base.easy | 5 + ...operators-in-or-operating-on-the-base.wren | 2 +- .../EasyLang/extensible-prime-generator.easy | 46 ++ .../Wren/extensible-prime-generator.wren | 2 +- .../extreme-floating-point-values.easy | 25 ++ Task/FTP/Wren/ftp-1.wren | 2 +- Task/FTP/Wren/ftp-2.wren | 2 +- ...indexing-permutations-of-a-collection.java | 110 +++++ ...indexing-permutations-of-a-collection.wren | 4 +- .../Factorial-primes/C++/factorial-primes.cpp | 6 +- .../EasyLang/factorial-primes.easy | 26 ++ .../Factorial-primes/Lua/factorial-primes.lua | 2 +- .../PureBasic/factorial-primes.basic | 24 ++ Task/Factorial/Nu/factorial.nu | 3 + Task/Factorial/Uxntal/factorial.uxnatl | 4 + Task/Factorial/Wren/factorial.wren | 4 +- Task/Factorial/YAMLScript/factorial.ys | 8 +- .../Wren/factors-of-a-mersenne-number.wren | 4 +- .../Gambas/factors-of-an-integer.gambas | 21 + ...eger.icon => factors-of-an-integer-1.icon} | 0 .../Icon/factors-of-an-integer-2.icon | 4 + .../MSX-Basic/factors-of-an-integer.basic | 2 +- .../Quackery/factors-of-an-integer.quackery | 2 +- .../Run-BASIC/factors-of-an-integer.basic | 16 +- .../True-BASIC/factors-of-an-integer.basic | 31 +- .../Wren/factors-of-an-integer.wren | 6 +- .../XBasic/factors-of-an-integer.basic | 23 + .../Yabasic/factors-of-an-integer.basic | 6 +- .../Wren/fairshare-between-two-and-more.wren | 4 +- Task/Farey-sequence/Wren/farey-sequence.wren | 8 +- .../Wren/fast-fourier-transform.wren | 4 +- .../Wren/faulhabers-formula.wren | 4 +- .../Wren/faulhabers-triangle.wren | 6 +- .../feigenbaum-constant-calculation.easy | 18 + .../Wren/feigenbaum-constant-calculation.wren | 2 +- .../Fermat-numbers/Wren/fermat-numbers-1.wren | 2 +- .../Fermat-numbers/Wren/fermat-numbers-2.wren | 2 +- .../fibonacci-n-step-number-sequences.wren | 2 +- .../BootBASIC/fibonacci-sequence.basic | 21 + .../J/fibonacci-sequence-1.j | 2 +- .../J/fibonacci-sequence-2.j | 5 +- .../J/fibonacci-sequence-3.j | 4 + .../Pascal/fibonacci-sequence-6.pas | 62 +++ Task/Fibonacci-word/SETL/fibonacci-word.setl | 30 ++ Task/Fibonacci-word/Wren/fibonacci-word.wren | 2 +- .../file-extension-is-in-extensions-list.wren | 4 +- .../File-input-output/Nu/file-input-output.nu | 2 + .../Rust/file-input-output-1.rust | 10 +- .../S-BASIC/file-input-output.basic | 37 ++ .../Uxntal/file-input-output.uxnatl | 25 ++ .../Zig/file-input-output.zig | 32 +- .../Wren/file-modification-time-1.wren | 2 +- .../Wren/file-modification-time-2.wren | 4 +- .../Wren/file-size-distribution.wren | 4 +- Task/Filter/Sidef/filter.sidef | 10 +- Task/Filter/V-(Vlang)/filter.v | 14 +- ...chess960-starting-position-identifier.wren | 2 +- .../OCaml/find-common-directory-path.ocaml | 37 +- .../Wren/find-duplicate-files.wren | 4 +- .../D/find-if-a-point-is-within-a-triangle.d | 6 +- ...d-if-a-point-is-within-a-triangle.evaldraw | 83 ++-- .../find-if-a-point-is-within-a-triangle.js | 109 +++++ .../find-if-a-point-is-within-a-triangle.rust | 92 ++++ ...eft-truncatable-prime-in-a-given-base.wren | 8 +- .../find-limit-of-recursion.basic | 6 + .../Gambas/find-limit-of-recursion.gambas | 12 + .../find-limit-of-recursion.basic | 5 + .../Quite-BASIC/find-limit-of-recursion.basic | 4 + .../Uxntal/find-limit-of-recursion.uxnatl | 48 +++ .../Wren/find-limit-of-recursion.wren | 8 +- .../XPL0/find-limit-of-recursion.xpl0 | 11 + .../Zig/find-limit-of-recursion-1.zig | 14 + .../Zig/find-limit-of-recursion-2.zig | 12 + .../Zig/find-limit-of-recursion-3.zig | 12 + ...bers-in-both-binary-and-ternary-bases.wren | 2 +- ...e-intersection-of-a-line-with-a-plane.wren | 30 +- .../find-the-last-sunday-of-each-month.easy | 33 ++ .../find-the-last-sunday-of-each-month.basic | 36 ++ .../find-the-last-sunday-of-each-month.wren | 2 +- .../Wren/first-class-environments.wren | 2 +- ...ass-functions-use-numbers-analogously.wren | 2 +- ...re-in-base-n-with-n-unique-digits.quackery | 33 ++ ...square-in-base-n-with-n-unique-digits.wren | 6 +- ...that-has-leading-decimal-digits-of-12.wren | 4 +- Task/Five-weekends/Wren/five-weekends.wren | 4 +- Task/Fivenum/Wren/fivenum.wren | 2 +- .../Wren/fixed-length-records-1.wren | 2 +- .../Wren/fixed-length-records-2.wren | 4 +- Task/FizzBuzz/EMal/fizzbuzz.emal | 10 + Task/FizzBuzz/Euler/fizzbuzz.euler | 10 - Task/FizzBuzz/Mathematica/fizzbuzz-6.math | 7 + Task/FizzBuzz/Mathematica/fizzbuzz-7.math | 9 + Task/FizzBuzz/Nu/fizzbuzz.nu | 4 + Task/FizzBuzz/SETL/fizzbuzz.setl | 10 + Task/FizzBuzz/Sidef/fizzbuzz-1.sidef | 2 +- Task/FizzBuzz/YAMLScript/fizzbuzz-1.ys | 9 - Task/FizzBuzz/YAMLScript/fizzbuzz-2.ys | 9 - Task/FizzBuzz/YAMLScript/fizzbuzz-3.ys | 13 - Task/FizzBuzz/YAMLScript/fizzbuzz.ys | 59 +++ Task/Flatten-a-list/Wren/flatten-a-list.wren | 2 +- .../Wren/flipping-bits-game.wren | 4 +- .../J/floyd-warshall-algorithm-2.j | 13 +- .../J/floyd-warshall-algorithm-3.j | 41 +- .../J/floyd-warshall-algorithm-4.j | 47 +- .../J/floyd-warshall-algorithm-5.j | 14 + .../Wren/floyd-warshall-algorithm.wren | 2 +- .../Floyds-triangle/Wren/floyds-triangle.wren | 2 +- Task/Fork/Wren/fork-1.wren | 2 +- Task/Fork/Wren/fork-2.wren | 2 +- .../Wren/formal-power-series.wren | 2 +- .../formatted-numeric-output.hopper | 43 ++ .../Wren/formatted-numeric-output.wren | 2 +- .../Wren/fortunate-numbers.wren | 14 +- .../Wren/forward-difference.wren | 2 +- .../EasyLang/four-bit-adder.easy | 23 + .../Quackery/four-bit-adder.quackery | 50 +++ .../FutureBasic/four-is-magic.basic | 31 ++ ...r-is-the-number-of-letters-in-the-....wren | 2 +- .../Fractal-tree/MiniScript/fractal-tree.mini | 17 + .../Wren/fraction-reduction.wren | 4 +- Task/Fractran/Wren/fractran.wren | 2 +- .../Wren/french-republican-calendar.wren | 6 +- .../Wren/function-frequency.wren | 8 +- .../Java/functional-coverage-tree.java | 21 +- .../Wren/functional-coverage-tree.wren | 2 +- .../BBC-BASIC/fusc-sequence.basic | 22 + Task/Fusc-sequence/Wren/fusc-sequence.wren | 2 +- .../Elena/gui-component-interaction-1.elena | 82 ++-- ...asic => gui-component-interaction-1.basic} | 0 .../gui-component-interaction-2.basic | 32 ++ .../Wren/galton-box-animation.wren | 2 +- .../Zig/galton-box-animation.zig | 2 +- Task/Gamma-function/Wren/gamma-function.wren | 8 +- .../Elixir/gapful-numbers.elixir | 16 + Task/Gapful-numbers/Wren/gapful-numbers.wren | 2 +- .../Wren/gauss-jordan-matrix-inversion.wren | 4 +- .../Wren/gaussian-elimination.wren | 2 +- .../Wren/general-fizzbuzz.wren | 2 +- .../00-TASK.txt | 2 +- .../generate-chess960-starting-position.basic | 17 + .../generate-chess960-starting-position.sh | 23 + .../generate-chess960-starting-position.wren | 4 +- .../Wren/generate-random-chess-position.wren | 2 +- .../Wren/get-system-command-output-1.wren | 2 +- .../Wren/get-system-command-output-2.wren | 4 +- Task/Giuga-numbers/Euler/giuga-numbers.euler | 35 -- Task/Giuga-numbers/Lua/giuga-numbers.lua | 28 ++ Task/Giuga-numbers/Sidef/giuga-numbers.sidef | 3 + .../BASIC256/goldbachs-comet.basic | 2 +- ...hs-comet-1.basic => goldbachs-comet.basic} | 0 .../Gambas/goldbachs-comet-1.gambas | 28 ++ .../goldbachs-comet-2.gambas} | 0 .../Yabasic/goldbachs-comet-1.basic | 23 + .../Yabasic/goldbachs-comet-2.basic | 46 ++ .../Sidef/golden-ratio-convergence.sidef | 9 + .../Graph-colouring/Wren/graph-colouring.wren | 6 +- Task/Gray-code/Wren/gray-code.wren | 2 +- .../MiniScript/grayscale-image.mini | 34 ++ .../greatest-common-divisor.basic | 15 + .../Dt/greatest-common-divisor.dt | 4 +- .../Zig/greatest-element-of-a-list.zig | 13 +- .../00-TASK.txt | 1 + ...reedy-algorithm-for-egyptian-fractions.cpp | 34 +- ...eedy-algorithm-for-egyptian-fractions.wren | 2 +- ...uess-the-number-with-feedback-player-.wren | 2 +- .../guess-the-number-with-feedback.basic | 16 + .../guess-the-number-with-feedback.basic | 49 +++ .../guess-the-number-with-feedback.basic | 14 + .../guess-the-number-with-feedback.basic | 13 + Task/HTTP/JavaScript/http-1.js | 10 +- Task/HTTP/JavaScript/http-2.js | 6 +- Task/HTTP/JavaScript/http-3.js | 70 +-- Task/HTTP/JavaScript/http-4.js | 68 ++- Task/HTTP/JavaScript/http-5.js | 22 +- Task/HTTP/JavaScript/http-6.js | 19 + Task/HTTP/PowerShell/http-1.psh | 1 + Task/HTTP/PowerShell/{http.psh => http-2.psh} | 0 Task/HTTP/Sidef/http.sidef | 15 +- Task/HTTP/Wren/http-1.wren | 2 +- Task/HTTP/Wren/http-2.wren | 4 +- .../Wren/https-authenticated-1.wren | 2 +- .../Wren/https-authenticated-2.wren | 4 +- .../Wren/https-client-authenticated-1.wren | 2 +- .../Wren/https-client-authenticated-2.wren | 4 +- Task/HTTPS/D/https.d | 2 + Task/HTTPS/JavaScript/https-1.js | 8 +- Task/HTTPS/JavaScript/https-2.js | 14 +- Task/HTTPS/JavaScript/https-3.js | 11 + Task/HTTPS/PowerShell/https-1.psh | 1 + .../PowerShell/{https.psh => https-2.psh} | 0 Task/HTTPS/Sidef/https.sidef | 23 +- Task/HTTPS/Wren/https-1.wren | 2 +- Task/HTTPS/Wren/https-2.wren | 4 +- .../Amazing-Hopper/hailstone-sequence.hopper | 43 ++ .../EasyLang/hailstone-sequence.easy | 30 ++ .../MiniScript/hailstone-sequence-1.mini | 31 ++ .../MiniScript/hailstone-sequence-2.mini | 45 ++ .../SETL/hailstone-sequence.setl | 24 ++ .../Wren/hamming-numbers-1.wren | 2 +- .../Sidef/handle-a-signal.sidef | 18 +- .../Harmonic-series/Wren/harmonic-series.wren | 4 +- .../EasyLang/harshad-or-niven-series.easy | 25 ++ .../SETL/harshad-or-niven-series.setl | 13 + .../Sidef/harshad-or-niven-series.sidef | 16 +- Task/Hash-join/Wren/hash-join.wren | 2 +- .../Amazing-Hopper/haversine-formula.hopper | 40 ++ .../EasyLang/haversine-formula.easy | 9 + .../Gambas/haversine-formula.gambas | 21 + .../Elena/hello-world-graphical-1.elena | 2 +- .../MiniScript/hello-world-graphical.mini | 4 + .../Quackery/hello-world-graphical.quackery | 17 + .../Sidef/hello-world-graphical-1.sidef | 8 +- .../Sidef/hello-world-graphical-2.sidef | 24 +- .../Sidef/hello-world-graphical-3.sidef | 13 + .../Wren/hello-world-line-printer-1.wren | 2 +- .../Wren/hello-world-line-printer-2.wren | 4 +- .../hello-world-newline-omission.easy | 1 + .../J/hello-world-newline-omission-1.j | 4 +- .../J/hello-world-newline-omission-2.j | 5 +- .../J/hello-world-newline-omission-3.j | 3 + .../hello-world-newline-omission.uxnatl | 13 + .../J/hello-world-standard-error.j | 6 +- .../Lean/hello-world-standard-error.lean | 3 + .../Nu/hello-world-standard-error.nu | 1 + .../Zig/hello-world-standard-error-1.zig | 7 + .../Zig/hello-world-standard-error-2.zig | 6 + .../Zig/hello-world-standard-error.zig | 6 - .../Curto/hello-world-text.curto | 1 + .../Hello-world-Text/KL1/hello-world-text.kl1 | 5 + Task/Hello-world-Text/Nu/hello-world-text.nu | 1 + .../Rhovas/hello-world-text.rhovas | 1 + .../Ursalang/hello-world-text.ursa | 1 + .../Uxntal/hello-world-text.uxnatl | 22 + .../Hello-world-Text/Zig/hello-world-text.zig | 7 +- .../Wren/heronian-triangles.wren | 6 +- .../XPL0/heronian-triangles.xpl0 | 54 +++ Task/Hex-words/BBC-BASIC/hex-words.basic | 47 ++ Task/Hex-words/MiniScript/hex-words.mini | 83 ++++ Task/Hex-words/Raku/hex-words.raku | 2 +- Task/Hex-words/Ring/hex-words.ring | 124 ++++++ .../hickerson-series-of-almost-integers.basic | 10 + ...hickerson-series-of-almost-integers-1.wren | 20 - ...hickerson-series-of-almost-integers-2.wren | 17 - .../hickerson-series-of-almost-integers.wren | 17 + .../Elena/higher-order-functions.elena | 2 +- .../hofstadter-conway-$10-000-sequence.wren | 2 +- ...ofstadter-figure-figure-sequences.quackery | 45 ++ .../hofstadter-figure-figure-sequences.setl | 24 ++ .../EasyLang/hofstadter-q-sequence.easy | 21 + .../SETL/hofstadter-q-sequence.setl | 10 + .../Wren/holidays-related-to-easter.wren | 6 +- Task/Home-primes/Python/home-primes.py | 39 ++ Task/Home-primes/Wren/home-primes-1.wren | 4 +- Task/Home-primes/Wren/home-primes-2.wren | 2 +- .../Wren/horizontal-sundial-calculations.wren | 2 +- .../Wren/host-introspection-1.wren | 2 +- .../Wren/host-introspection-2.wren | 2 +- Task/Hostname/Wren/hostname-1.wren | 2 +- Task/Hostname/Wren/hostname-2.wren | 4 +- .../Hough-transform/Wren/hough-transform.wren | 2 +- Task/Huffman-coding/Wren/huffman-coding.wren | 2 +- .../BBC-BASIC/humble-numbers.basic | 30 ++ .../EasyLang/humble-numbers.easy | 39 ++ Task/Humble-numbers/Wren/humble-numbers.wren | 10 +- Task/Hunt-the-Wumpus/00-TASK.txt | 2 +- .../Quackery/hunt-the-wumpus.quackery | 138 ++++++ .../Hunt-the-Wumpus/Wren/hunt-the-wumpus.wren | 6 +- .../BBC-BASIC/i-before-e-except-after-c.basic | 39 ++ .../SETL/i-before-e-except-after-c.setl | 34 ++ .../Wren/i-before-e-except-after-c-1.wren | 4 +- .../Wren/i-before-e-except-after-c-2.wren | 4 +- Task/IBAN/Wren/iban.wren | 2 +- .../MiniScript/isbn13-check-digit.mini | 16 + .../Identity-matrix/Wren/identity-matrix.wren | 4 +- ...oftware-engineer-get-me-out-of-here-1.wren | 4 +- ...oftware-engineer-get-me-out-of-here-2.wren | 2 +- .../Wren/image-convolution.wren | 2 +- Task/Image-noise/EasyLang/image-noise.easy | 24 ++ Task/Image-noise/MiniScript/image-noise.mini | 37 ++ Task/Image-noise/Python/image-noise.py | 53 +-- .../Wren/imaginary-base-numbers.wren | 4 +- Task/Include-a-file/Wren/include-a-file.wren | 4 +- ...aps-between-consecutive-niven-numbers.wren | 4 +- ...dex-finite-lists-of-positive-integers.wren | 2 +- Task/Infinity/EasyLang/infinity.easy | 3 + Task/Infinity/Zig/infinity.zig | 35 +- .../ActionScript/inheritance-single-1.as | 3 - .../ActionScript/inheritance-single-2.as | 3 - .../ActionScript/inheritance-single-3.as | 3 - .../ActionScript/inheritance-single-4.as | 3 - .../ActionScript/inheritance-single-5.as | 3 - .../ActionScript/inheritance-single.as | 15 + .../Aikido/inheritance-single-1.aikido | 3 - .../Aikido/inheritance-single-2.aikido | 3 - .../Aikido/inheritance-single-3.aikido | 3 - .../Aikido/inheritance-single-4.aikido | 3 - .../Aikido/inheritance-single-5.aikido | 3 - .../Aikido/inheritance-single.aikido | 15 + .../ChucK/inheritance-single-1.chuck | 3 - .../ChucK/inheritance-single-2.chuck | 3 - .../ChucK/inheritance-single-3.chuck | 3 - .../ChucK/inheritance-single-4.chuck | 3 - .../ChucK/inheritance-single-5.chuck | 3 - .../ChucK/inheritance-single.chuck | 15 + .../Eiffel/inheritance-single-1.e | 3 - .../Eiffel/inheritance-single-2.e | 5 - .../Eiffel/inheritance-single-3.e | 5 - .../Eiffel/inheritance-single-4.e | 5 - .../Eiffel/inheritance-single-5.e | 5 - .../Eiffel/inheritance-single.e | 23 + .../Groovy/inheritance-single-1.groovy | 3 - .../Groovy/inheritance-single-2.groovy | 3 - .../Groovy/inheritance-single-3.groovy | 3 - .../Groovy/inheritance-single-4.groovy | 3 - .../Groovy/inheritance-single-5.groovy | 3 - .../Groovy/inheritance-single.groovy | 15 + .../Haxe/inheritance-single-1.haxe | 12 + .../Haxe/inheritance-single-2.haxe | 17 +- .../Haxe/inheritance-single-3.haxe | 3 - .../Haxe/inheritance-single-4.haxe | 3 - .../Haxe/inheritance-single-5.haxe | 3 - .../Haxe/inheritance-single-6.haxe | 14 - .../J/inheritance-single-1.j | 8 + .../J/inheritance-single-2.j | 6 +- .../J/inheritance-single-3.j | 2 - .../J/inheritance-single-4.j | 2 - .../J/inheritance-single-5.j | 2 - .../J/inheritance-single-6.j | 4 - .../Java/inheritance-single-1.java | 3 - .../Java/inheritance-single-2.java | 3 - .../Java/inheritance-single-3.java | 3 - .../Java/inheritance-single-4.java | 3 - .../Java/inheritance-single-5.java | 3 - .../Java/inheritance-single.java | 15 + .../JavaScript/inheritance-single-1.js | 3 - .../JavaScript/inheritance-single-2.js | 4 - .../JavaScript/inheritance-single-3.js | 4 - .../JavaScript/inheritance-single-4.js | 4 - .../JavaScript/inheritance-single-5.js | 4 - .../JavaScript/inheritance-single-6.js | 4 - .../JavaScript/inheritance-single.js | 28 ++ .../Lingo/inheritance-single-1.lingo | 2 - .../Lingo/inheritance-single-2.lingo | 7 - .../Lingo/inheritance-single-3.lingo | 7 - .../Lingo/inheritance-single-4.lingo | 7 - .../Lingo/inheritance-single-5.lingo | 7 - .../Lingo/inheritance-single.lingo | 34 ++ .../Lisaac/inheritance-single-1.lisaac | 3 - .../Lisaac/inheritance-single-2.lisaac | 5 - .../Lisaac/inheritance-single-3.lisaac | 5 - .../Lisaac/inheritance-single-4.lisaac | 5 - .../Lisaac/inheritance-single-5.lisaac | 5 - .../Lisaac/inheritance-single.lisaac | 23 + .../OCaml/inheritance-single-1.ocaml | 4 - .../OCaml/inheritance-single-2.ocaml | 5 - .../OCaml/inheritance-single-3.ocaml | 5 - .../OCaml/inheritance-single-4.ocaml | 5 - .../OCaml/inheritance-single-5.ocaml | 5 - .../OCaml/inheritance-single.ocaml | 24 ++ .../Perl/inheritance-single-1.pl | 3 - .../Perl/inheritance-single-2.pl | 5 - .../Perl/inheritance-single-3.pl | 5 - .../Perl/inheritance-single-4.pl | 5 - .../Perl/inheritance-single-5.pl | 5 - .../Perl/inheritance-single-6.pl | 17 - .../Perl/inheritance-single.pl | 47 ++ .../Phix/inheritance-single.phix | 26 +- .../Self/inheritance-single-1.self | 1 - .../Self/inheritance-single-2.self | 1 - .../Self/inheritance-single-3.self | 1 - .../Self/inheritance-single-4.self | 1 - .../Self/inheritance-single-5.self | 1 - .../Self/inheritance-single.self | 5 + .../Nu/integer-comparison.nu | 5 + .../Java/integer-sequence-1.java | 4 +- .../Java/integer-sequence-2.java | 4 +- .../Java/integer-sequence-3.java | 8 + .../Java/integer-sequence-4.java | 10 + .../Sidef/integer-sequence.sidef | 2 +- .../Ursalang/integer-sequence.ursa | 5 + .../Elena/interactive-programming-repl-.elena | 16 +- .../Wren/intersecting-number-wheels.wren | 6 +- Task/Introspection/Wren/introspection.wren | 8 +- Task/Introspection/Zig/introspection-1.zig | 23 + Task/Introspection/Zig/introspection-2.zig | 25 ++ Task/Inverted-index/Wren/inverted-index.wren | 6 +- .../isqrt-integer-square-root-of-x.easy | 30 ++ .../isqrt-integer-square-root-of-x.quackery | 14 +- .../SETL/isqrt-integer-square-root-of-x.setl | 31 ++ .../Wren/isqrt-integer-square-root-of-x.wren | 4 +- Task/JSON/Hoon/{json.hoon => json-1.hoon} | 0 Task/JSON/Hoon/json-2.hoon | 7 + Task/JSON/Sidef/json.sidef | 10 +- Task/Jacobi-symbol/ALGOL-68/jacobi-symbol.alg | 34 ++ Task/Jacobi-symbol/ALGOL-W/jacobi-symbol.alg | 33 ++ Task/Jacobi-symbol/Lua/jacobi-symbol.lua | 33 ++ Task/Jacobi-symbol/PL-M/jacobi-symbol.plm | 69 +++ Task/Jacobi-symbol/Sidef/jacobi-symbol.sidef | 26 +- Task/Jacobi-symbol/Wren/jacobi-symbol.wren | 6 +- .../SETL/jacobsthal-numbers.setl | 40 ++ .../Wren/jacobsthal-numbers.wren | 6 +- .../Wren/jaro-winkler-distance.wren | 4 +- .../BBC-BASIC/jaro-similarity.basic | 45 ++ .../Jaro-similarity/Wren/jaro-similarity.wren | 2 +- .../Jensens-Device/Euler/jensens-device.euler | 17 - .../Jensens-Device/Sidef/jensens-device.sidef | 14 +- .../SETL/jewels-and-stones.setl | 13 + Task/JortSort/Wren/jortsort.wren | 2 +- .../EDSAC-order-code/josephus-problem.edsac | 109 +++++ ...problem.basic => josephus-problem-1.basic} | 0 .../Quite-BASIC/josephus-problem-2.basic | 19 + .../Wren/juggler-sequence-1.wren | 4 +- .../Wren/juggler-sequence-2.wren | 2 +- Task/Julia-set/BBC-BASIC/julia-set.basic | 18 + Task/K-d-tree/Wren/k-d-tree.wren | 8 +- .../Wren/k-means++-clustering.wren | 4 +- .../Wren/kaprekar-numbers.wren | 2 +- .../kernighans-large-earthquake-problem.wren | 2 +- .../Wren/keyboard-macros-1.wren | 2 +- .../Wren/keyboard-macros-2.wren | 2 +- .../Wren/knapsack-problem-0-1.wren | 2 +- .../Wren/knapsack-problem-bounded.wren | 2 +- .../Wren/knapsack-problem-continuous.wren | 6 +- .../Wren/knapsack-problem-unbounded.wren | 2 +- .../XPL0/knapsack-problem-unbounded.xpl0 | 26 ++ .../Amazing-Hopper/knuth-shuffle.hopper | 11 + Task/Knuth-shuffle/C++/knuth-shuffle-1.cpp | 3 + Task/Knuth-shuffle/Elena/knuth-shuffle.elena | 2 +- .../GW-BASIC/knuth-shuffle.basic | 19 + .../Minimal-BASIC/knuth-shuffle.basic | 24 ++ Task/Knuth-shuffle/SETL/knuth-shuffle.setl | 15 + .../Elena/knuths-algorithm-s.elena | 8 +- .../Wren/knuths-power-tree.wren | 4 +- .../kronecker-product-based-fractals.wren | 2 +- .../Wren/kronecker-product.wren | 4 +- .../Sidef/lu-decomposition.sidef | 38 +- .../LZW-compression/EMal/lzw-compression.emal | 59 +-- Task/Lah-numbers/Wren/lah-numbers.wren | 8 +- .../largest-int-from-concatenated-ints.wren | 2 +- .../largest-proper-divisor-of-n.basic | 2 +- .../D/largest-proper-divisor-of-n.d | 23 + .../EasyLang/largest-proper-divisor-of-n.easy | 6 +- .../J/largest-proper-divisor-of-n.j | 2 +- .../Lua/largest-proper-divisor-of-n.lua | 11 + ....pas => largest-proper-divisor-of-n-1.pas} | 0 .../Pascal/largest-proper-divisor-of-n-2.pas | 58 +++ ...asic => largest-proper-divisor-of-n.basic} | 0 .../largest-proper-divisor-of-n-1.basic | 10 + .../largest-proper-divisor-of-n-2.basic | 0 .../Rust/largest-proper-divisor-of-n-1.rust | 22 + .../Rust/largest-proper-divisor-of-n-2.rust | 17 + .../Sidef/largest-proper-divisor-of-n.sidef | 3 + .../Wren/largest-proper-divisor-of-n.wren | 4 +- .../BBC-BASIC/last-friday-of-each-month.basic | 9 + .../EasyLang/last-friday-of-each-month.easy | 33 ++ .../Wren/last-friday-of-each-month.wren | 2 +- Task/Leap-year/BQN/leap-year-1.bqn | 1 + Task/Leap-year/BQN/leap-year-2.bqn | 1 + Task/Leap-year/BQN/leap-year-3.bqn | 1 + Task/Leap-year/EasyLang/leap-year.easy | 7 + .../IS-BASIC/levenshtein-distance.basic | 23 + .../Zig/levenshtein-distance.zig | 34 ++ .../11l/list-comprehensions.11l | 1 - .../list-comprehensions-2.applescript | 1 - ...script => list-comprehensions.applescript} | 0 .../C/list-comprehensions-1.c | 1 - .../C/list-comprehensions-2.c | 2 - ...mprehensions-3.c => list-comprehensions.c} | 4 +- .../CoffeeScript/list-comprehensions-2.coffee | 1 - ...ns-1.coffee => list-comprehensions.coffee} | 2 + .../Elena/literals-floating-point.elena | 2 +- .../Uxntal/literals-integer.uxnatl | 2 + .../Chipmunk-Basic/logical-operations.basic | 8 + .../GW-BASIC/logical-operations.basic | 11 + .../MSX-Basic/logical-operations.basic | 8 + .../Nu/logical-operations.nu | 3 + .../Quite-BASIC/logical-operations.basic | 4 + .../J/long-multiplication-10.j | 2 + .../APL/longest-common-substring-1.apl | 5 + .../APL/longest-common-substring-2.apl | 2 + .../Cowgol/longest-common-substring.cowgol | 48 +++ .../longest-common-substring.quackery | 31 ++ .../SETL/longest-common-substring.setl | 17 + .../BASIC256/longest-string-challenge.basic | 14 + .../BQN/longest-string-challenge.bqn | 18 + .../longest-string-challenge.basic | 8 + .../GW-BASIC/longest-string-challenge.basic | 9 + .../MSX-Basic/longest-string-challenge.basic | 8 + .../MiniScript/longest-string-challenge.mini | 21 + .../longest-string-challenge.basic | 0 .../longest-string-challenge.quackery | 32 ++ .../EasyLang/look-and-say-sequence.easy | 22 + .../SETL/look-and-say-sequence.setl | 23 + ...p-over-multiple-arrays-simultaneously.easy | 6 + ...-over-multiple-arrays-simultaneously-1.zig | 14 + ...-over-multiple-arrays-simultaneously-2.zig | 14 + ...-over-multiple-arrays-simultaneously-3.zig | 13 + ...-over-multiple-arrays-simultaneously-4.zig | 13 + ...-over-multiple-arrays-simultaneously-5.zig | 13 + ...op-over-multiple-arrays-simultaneously.zig | 10 - Task/Loops-Break/BootBASIC/loops-break.basic | 9 + Task/Loops-Break/Nu/loops-break.nu | 6 + Task/Loops-Continue/Nu/loops-continue.nu | 8 + Task/Loops-Do-while/Nu/loops-do-while.nu | 6 + .../Nu/loops-downward-for.nu | 1 + .../EMal/loops-for-with-a-specified-step.emal | 2 + .../Nu/loops-for-with-a-specified-step.nu | 1 + Task/Loops-For/EMal/loops-for.emal | 4 + Task/Loops-For/Nu/loops-for.nu | 6 + Task/Loops-Foreach/Nu/loops-foreach.nu | 2 + ...increment-loop-index-within-loop-body.emal | 19 + Task/Loops-Infinite/Nu/loops-infinite.nu | 1 + .../BootBASIC/loops-n-plus-one-half.basic | 8 + .../EMal/loops-n-plus-one-half.emal | 7 + .../Nu/loops-n-plus-one-half.nu | 8 + Task/Loops-While/EMal/loops-while.emal | 5 + .../Amazing-Hopper/m-bius-function.hopper | 34 ++ .../EasyLang/m-bius-function.easy | 34 ++ Task/M-bius-function/J/m-bius-function-1.j | 2 +- Task/M-bius-function/J/m-bius-function-2.j | 2 +- .../M-bius-function/Rust/m-bius-function.rust | 78 ++++ .../BBC-BASIC/mac-vendor-lookup.basic | 29 ++ .../MiniScript/mac-vendor-lookup.mini | 9 + .../MAC-vendor-lookup/Nu/mac-vendor-lookup.nu | 21 + .../magic-squares-of-doubly-even-order.hopper | 51 +++ .../magic-squares-of-doubly-even-order.edsac | 149 +++++++ .../magic-squares-of-doubly-even-order.elena | 2 +- .../BASIC256/magic-squares-of-odd-order.basic | 1 - .../magic-squares-of-odd-order.basic | 73 ++++ .../magic-squares-of-odd-order.edsac | 172 ++++++++ .../GW-BASIC/magic-squares-of-odd-order.basic | 11 + .../magic-squares-of-odd-order.basic | 10 + .../Sidef/magic-squares-of-odd-order.sidef | 4 +- .../magic-squares-of-singly-even-order.edsac | 174 ++++++++ .../Amazing-Hopper/magnanimous-numbers.hopper | 30 ++ .../BBC-BASIC/magnanimous-numbers.basic | 22 + .../EasyLang/magnanimous-numbers.easy | 45 ++ .../GW-BASIC/magnanimous-numbers.basic | 23 + .../SETL/magnanimous-numbers.setl | 42 ++ .../Java/main-step-of-gost-28147-89.java | 219 ++++++++++ .../OCaml/make-directory-path.ocaml | 21 +- Task/Man-or-boy-test/Zig/man-or-boy-test.zig | 81 ++++ .../Mandelbrot-set/Python/mandelbrot-set-8.py | 4 +- .../matrix-digital-rain-1.hopper | 55 +++ .../matrix-digital-rain-2.hopper | 46 ++ .../EasyLang/maximum-triangle-path-sum.easy | 39 ++ .../Elena/maximum-triangle-path-sum.elena | 2 +- .../F-Sharp/maximum-triangle-path-sum.fs | 5 + .../Amazing-Hopper/mayan-numerals.hopper | 66 +++ .../EDSAC-order-code/maze-generation.edsac | 310 +++++++++++++ .../Sidef/maze-generation.sidef | 4 +- .../8080-Assembly/mcnuggets-problem.8080 | 43 ++ .../EasyLang/mcnuggets-problem.easy | 17 + .../Gambas/mcnuggets-problem.gambas | 22 + .../MACRO-11/mcnuggets-problem.macro11 | 35 ++ .../MiniScript/mcnuggets-problem.mini | 12 + .../Pascal/mcnuggets-problem.pas | 28 ++ .../SETL/mcnuggets-problem.setl | 8 + .../True-BASIC/mcnuggets-problem.basic | 22 + .../Perl/meissel-mertens-constant.pl | 4 +- .../Sidef/meissel-mertens-constant.sidef | 7 + .../SETL/mertens-function.setl | 19 + .../middle-three-digits-1.hopper | 21 + .../middle-three-digits-2.hopper | 25 ++ .../middle-three-digits-3.hopper | 29 ++ .../Elena/middle-three-digits.elena | 2 +- ...iple-of-m-where-digital-sum-equals-m.basic | 21 + ...tiple-of-m-where-digital-sum-equals-m.easy | 17 + ...ple-of-m-where-digital-sum-equals-m.gambas | 22 + ...tiple-of-m-where-digital-sum-equals-m.setl | 16 + ...iple-of-m-where-digital-sum-equals-m.basic | 21 + ...iple-of-m-where-digital-sum-equals-m.basic | 27 ++ .../Python/modular-inverse-1.py | 18 +- .../Python/modular-inverse-2.py | 105 +---- .../Python/modular-inverse-3.py | 91 ++++ ...se.quackery => modular-inverse-1.quackery} | 0 .../Quackery/modular-inverse-2.quackery | 25 ++ .../J/monte-carlo-methods-4.j | 9 + .../Chipmunk-Basic/morse-code.basic | 24 ++ Task/Morse-code/Quackery/morse-code.quackery | 44 ++ .../EasyLang/motzkin-numbers.easy | 25 ++ .../Maxima/motzkin-numbers.maxima | 8 + .../Uxntal/mouse-position.uxnatl | 27 ++ .../AppleScript/multifactorial-1.applescript | 21 + .../AppleScript/multifactorial-2.applescript | 6 + Task/Multifactorial/BQN/multifactorial.bqn | 3 + .../Cowgol/multifactorial.cowgol | 24 ++ .../EasyLang/multifactorial.easy | 15 + .../Maxima/multifactorial.maxima | 8 + Task/Multifactorial/Ol/multifactorial-1.ol | 13 + Task/Multifactorial/Ol/multifactorial-2.ol | 11 + Task/Multifactorial/SETL/multifactorial.setl | 9 + .../{musical-scale.py => musical-scale-1.py} | 0 Task/Musical-scale/Python/musical-scale-2.py | 48 +++ .../SETL/mutual-recursion.setl | 12 + .../MiniScript/n-queens-problem.mini | 88 ++++ .../Elena/nested-function.elena | 2 +- Task/Nth-root/Dart/nth-root.dart | 11 + Task/Nth-root/Nu/nth-root.nu | 7 + Task/Nth/SETL/nth.setl | 23 + .../Quackery/number-names.quackery | 44 +- .../SETL/number-reversal-game.setl | 30 ++ ...ch-are-not-the-sum-of-distinct-squares.alg | 38 ++ ...ch-are-not-the-sum-of-distinct-squares.alg | 39 ++ ...h-are-not-the-sum-of-distinct-squares.easy | 21 + ...ch-are-not-the-sum-of-distinct-squares.lua | 39 ++ ...e-not-the-sum-of-distinct-squares.quackery | 51 +++ ...the-product-of-their-proper-divisors.sidef | 5 + ...alization.hs => object-serialization-1.hs} | 0 .../Haskell/object-serialization-2.hs | 7 + ...one-dimensional-cellular-automata-1.hopper | 21 + ...one-dimensional-cellular-automata-2.hopper | 18 + .../one-dimensional-cellular-automata.easy | 25 ++ .../one-dimensional-cellular-automata-1.julia | 7 + .../one-dimensional-cellular-automata-2.julia | 9 + .../one-dimensional-cellular-automata.julia | 35 -- .../one-dimensional-cellular-automata.basic | 0 .../MiniScript/order-by-pair-comparisons.mini | 22 + .../Sidef/order-disjoint-list-items.sidef | 2 +- .../Amazing-Hopper/ordered-words.hopper | 33 ++ .../Ormiston-triples/Ruby/ormiston-triples.rb | 13 + .../C++/own-digits-power-sum.cpp | 54 +++ .../Java/own-digits-power-sum.java | 53 +++ .../Rust/own-digits-power-sum-1.rust | 18 + .../Rust/own-digits-power-sum-2.rust | 49 +++ .../padovan-n-step-number-sequences.basic | 36 ++ .../padovan-n-step-number-sequences.basic | 29 ++ .../padovan-n-step-number-sequences.easy | 26 ++ .../padovan-n-step-number-sequences.basic | 4 +- .../padovan-n-step-number-sequences.basic | 36 ++ .../padovan-n-step-number-sequences.basic | 33 ++ .../Ruby/padovan-n-step-number-sequences.rb | 15 + .../padovan-n-step-number-sequences.basic | 36 ++ .../Rhovas/palindrome-detection-1.rhovas | 3 + .../Rhovas/palindrome-detection-2.rhovas | 7 + .../Rhovas/palindrome-detection-3.rhovas | 15 + .../EasyLang/particle-fountain.easy | 23 + .../Python/particle-fountain.py | 187 ++++++++ .../Quackery/penneys-game.quackery | 65 +++ Task/Pentagram/Sidef/pentagram.sidef | 8 +- .../EasyLang/perfect-shuffle.easy | 23 + .../Perfect-shuffle/SETL/perfect-shuffle.setl | 22 + .../EasyLang/periodic-table.easy | 16 + .../Quackery/periodic-table.quackery | 19 + .../Quite-BASIC/periodic-table.basic | 39 ++ Task/Perlin-noise/00-TASK.txt | 7 +- Task/Perlin-noise/EasyLang/perlin-noise.easy | 75 ++++ Task/Permutations/Sidef/permutations-1.sidef | 4 +- Task/Permutations/Sidef/permutations-2.sidef | 4 +- Task/Permutations/Sidef/permutations-3.sidef | 4 +- Task/Pi/IS-BASIC/pi.basic | 49 +++ Task/Pi/MiniScript/pi.mini | 50 +++ .../Elena/pick-random-element.elena | 2 +- .../Sidef/pig-the-dice-game-player.sidef | 56 +-- .../Applesoft-BASIC/pig-the-dice-game.basic | 35 ++ .../Chipmunk-Basic/pig-the-dice-game.basic | 42 ++ .../EasyLang/pig-the-dice-game.easy | 128 ++++++ .../MSX-Basic/pig-the-dice-game.basic | 36 ++ .../SETL/pig-the-dice-game.setl | 46 ++ .../Yabasic/pig-the-dice-game.basic | 43 ++ Task/Polymorphism/Elena/polymorphism.elena | 8 +- .../ALGOL-68/polynomial-long-division.alg | 107 +++++ .../Jq/polynomial-long-division.jq | 2 +- .../Phix/polynomial-long-division.phix | 132 +++--- .../EasyLang/polynomial-regression.easy | 40 ++ .../Raku/polynomial-regression.raku | 13 +- .../EasyLang/population-count.easy | 30 ++ Task/Population-count/Ol/population-count.ol | 34 ++ .../Run-BASIC/population-count.basic | 68 +++ .../SETL/population-count.setl | 17 + .../primality-by-trial-division.quackery | 2 +- Task/Program-name/BQN/program-name.bqn | 1 + ...ndom-numbers-middle-square-method-1.hopper | 9 + ...ndom-numbers-middle-square-method-2.hopper | 7 + ...ndom-numbers-middle-square-method-3.hopper | 7 + ...ndom-numbers-middle-square-method-4.hopper | 7 + ...-random-numbers-middle-square-method-1.bqn | 1 + ...-random-numbers-middle-square-method-2.bqn | 1 + ...-random-numbers-middle-square-method.edsac | 151 +++++++ ...do-random-numbers-middle-square-method-1.j | 1 + ...do-random-numbers-middle-square-method-2.j | 1 + ...eudo-random-numbers-middle-square-method.j | 1 - .../Dart/pythagoras-tree-1.dart | 23 + .../Dart/pythagoras-tree-2.dart | 45 ++ .../JavaScript/pythagoras-tree-2.js | 21 +- .../Elena/quaternion-type.elena | 8 +- .../Elena/queue-definition.elena | 2 +- Task/Queue-Usage/Elena/queue-usage.elena | 2 +- .../Sidef/quickselect-algorithm.sidef | 18 +- .../C++/quoting-constructs.cpp | 25 ++ .../Java/quoting-constructs.java | 4 +- .../ALGOL-68/radical-of-an-integer.alg | 42 ++ .../EasyLang/radical-of-an-integer.easy | 62 +++ .../Lua/radical-of-an-integer.lua | 41 ++ .../Python/radical-of-an-integer.py | 54 +++ .../Sidef/radical-of-an-integer.sidef | 20 + .../J/ramanujan-primes-twins.j | 2 + ...er-douglas-peucker-line-simplification.alg | 63 +++ ...r-douglas-peucker-line-simplification.easy | 47 ++ ...r-douglas-peucker-line-simplification.xpl0 | 43 ++ .../random-number-generator-device-.sidef | 10 +- .../random-number-generator-included-.elena | 2 +- .../EasyLang/random-numbers.easy | 14 +- Task/Rare-numbers/Racket/rare-numbers.rkt | 51 +++ .../Sidef/read-a-file-line-by-line-1.sidef | 2 +- .../Sidef/read-a-file-line-by-line-2.sidef | 2 +- .../read-a-specific-line-from-a-file.sidef | 12 +- Task/Read-entire-file/Ol/read-entire-file.ol | 6 +- .../Zig/read-entire-file-1.zig | 20 + .../Zig/read-entire-file-2.zig | 18 + .../real-constants-and-functions.easy | 31 +- .../Applesoft-BASIC/recamans-sequence.basic | 19 + .../Minimal-BASIC/recamans-sequence.basic | 30 ++ .../Rust/recamans-sequence.rust | 27 ++ .../SETL/recamans-sequence.setl | 26 ++ .../Elena/reflection-list-properties.elena | 6 +- .../BQN/remove-duplicate-elements.bqn | 1 + .../Sidef/remove-lines-from-a-file.sidef | 6 +- Task/Rep-string/SETL/rep-string.setl | 17 + .../8080-Assembly/repeat-a-string.8080 | 32 ++ .../Chipmunk-Basic/repeat-a-string.basic | 12 + .../EasyLang/repeat-a-string.easy | 7 + .../GW-BASIC/repeat-a-string.basic | 17 + ...eat-a-string.inf => repeat-a-string-1.inf} | 0 .../Inform-7/repeat-a-string-2.inf | 1 + .../Minimal-BASIC/repeat-a-string.basic | 18 + .../Quite-BASIC/repeat-a-string.basic | 20 + .../XBasic/repeat-a-string.basic | 21 + Task/Repunit-primes/J/repunit-primes.j | 3 + .../return-multiple-values.hopper | 27 ++ .../Euler/return-multiple-values.euler | 11 - .../return-multiple-values.plain | 30 +- .../BQN/reverse-words-in-a-string-1.bqn | 16 + .../BQN/reverse-words-in-a-string-2.bqn | 1 + .../Elena/roman-numerals-decode.elena | 3 +- .../Insitux/roman-numerals-decode.insitux | 18 + .../Elena/roman-numerals-encode.elena | 4 +- .../XPL0/roots-of-a-quadratic-function.xpl0 | 48 +++ ...osetta-code-find-unimplemented-tasks.basic | 81 ++++ .../Python/rosetta-code-fix-code-tags-1.py | 5 +- Task/Rot-13/BQN/rot-13-1.bqn | 3 + Task/Rot-13/BQN/rot-13-2.bqn | 1 + Task/Rot-13/C-sharp/rot-13.cs | 3 +- Task/Rot-13/EasyLang/rot-13.easy | 26 +- Task/Rot-13/Sidef/rot-13.sidef | 4 +- Task/Rot-13/Uxntal/rot-13.uxnatl | 15 + Task/Rot-13/XBasic/rot-13.basic | 32 ++ Task/Rot-13/Zig/rot-13.zig | 94 ++-- .../Amazing-Hopper/run-length-encoding.hopper | 72 ++++ .../SETL/run-length-encoding.setl | 27 ++ ...runtime-evaluation-in-an-environment.elena | 2 +- .../Elena/runtime-evaluation.elena | 2 +- Task/SHA-256/Rust/sha-256-2.rust | 2 +- .../Acornsoft-Lisp/search-a-list.lisp | 17 + .../Search-a-list/EasyLang/search-a-list.easy | 19 + .../C/search-in-paragraphs-text.c | 112 +++++ Task/Self-numbers/XPL0/self-numbers.xpl0 | 61 +++ .../BQN/sequence-of-non-squares.bqn | 7 + .../sequence-of-non-squares.basic | 22 + .../MATLAB/sequence-of-non-squares-3.m | 1 + .../SETL/sequence-of-non-squares.setl | 17 + ...revious-term-with-exactly-n-divisors.basic | 24 ++ ...previous-term-with-exactly-n-divisors.easy | 21 + ...evious-term-with-exactly-n-divisors.gambas | 28 ++ ...previous-term-with-exactly-n-divisors.mini | 25 ++ ...revious-term-with-exactly-n-divisors.basic | 31 ++ ...revious-term-with-exactly-n-divisors.basic | 23 + ...revious-term-with-exactly-n-divisors.basic | 25 ++ ...revious-term-with-exactly-n-divisors.basic | 32 ++ ...revious-term-with-exactly-n-divisors.basic | 27 ++ ...llest-number-with-exactly-n-divisors.basic | 13 + ...llest-number-with-exactly-n-divisors.basic | 12 + ...allest-number-with-exactly-n-divisors.mini | 25 ++ ...llest-number-with-exactly-n-divisors.basic | 36 ++ ...llest-number-with-exactly-n-divisors.basic | 13 + ...allest-number-with-exactly-n-divisors.setl | 7 + ...llest-number-with-exactly-n-divisors.basic | 15 + ...llest-number-with-exactly-n-divisors.basic | 21 + ...llest-number-with-exactly-n-divisors.basic | 32 ++ .../Quackery/set-consolidation.quackery | 38 ++ .../SETL/set-consolidation.setl | 26 ++ Task/Set-puzzle/EasyLang/set-puzzle.easy | 75 ++++ Task/Set-puzzle/Quackery/set-puzzle.quackery | 18 + .../Quackery/set-right-adjacent-bits.quackery | 48 +++ .../sierpinski-carpet-3.applescript | 31 ++ .../IS-BASIC/sierpinski-carpet.basic | 15 + .../SETL/sierpinski-triangle.setl | 13 + .../SETL/sieve-of-eratosthenes.setl | 14 + .../Elena/simple-windowed-application.elena | 2 +- ...ef => simple-windowed-application-1.sidef} | 0 .../Sidef/simple-windowed-application-2.sidef | 27 ++ ...ingly-linked-list-element-definition.elena | 4 +- ...singly-linked-list-element-definition.mini | 45 ++ .../singly-linked-list-element-insertion.mini | 7 + ...cpp => singular-value-decomposition-1.cpp} | 0 .../C++/singular-value-decomposition-2.cpp | 23 + .../C++/smarandache-wellin-primes.cpp | 6 +- .../EasyLang/smarandache-wellin-primes.easy | 50 +++ .../J/smarandache-wellin-primes.j | 27 ++ .../Amazing-Hopper/smith-numbers.hopper | 46 ++ .../Smith-numbers/EasyLang/smith-numbers.easy | 32 ++ Task/Smith-numbers/SETL/smith-numbers.setl | 38 ++ .../MiniScript/solve-a-hidato-puzzle.mini | 107 +++++ .../BQN/sort-an-integer-array.bqn | 1 + .../EasyLang/sort-disjoint-sublist.easy | 18 + .../MiniScript/sort-disjoint-sublist.mini | 16 + .../EasyLang/sort-three-variables.easy | 35 ++ .../Zig/sort-using-a-custom-comparator.zig | 38 ++ .../sorting-algorithms-bogosort.basic | 42 ++ .../sorting-algorithms-bogosort.insitux | 4 +- .../Yabasic/sorting-algorithms-bogosort.basic | 22 +- .../sorting-algorithms-counting-sort.easy | 19 + .../sorting-algorithms-counting-sort.elena | 2 +- .../sorting-algorithms-gnome-sort.basic | 41 ++ .../sorting-algorithms-gnome-sort.basic | 29 ++ .../sorting-algorithms-gnome-sort.edsac | 152 +++++++ .../sorting-algorithms-gnome-sort.easy | 20 + .../sorting-algorithms-gnome-sort.basic | 25 ++ .../sorting-algorithms-gnome-sort.basic | 23 + .../sorting-algorithms-gnome-sort.mini | 22 + .../sorting-algorithms-gnome-sort.basic | 42 ++ .../PL-M/sorting-algorithms-gnome-sort.plm | 60 +++ .../sorting-algorithms-gnome-sort.basic | 43 ++ .../sorting-algorithms-gnome-sort.basic | 0 .../sorting-algorithms-gnome-sort.basic | 40 ++ .../sorting-algorithms-gnome-sort.basic | 33 ++ .../sorting-algorithms-gnome-sort.basic | 2 +- .../sorting-algorithms-gnome-sort.basic | 42 ++ .../Sidef/sorting-algorithms-heapsort.sidef | 34 +- .../sorting-algorithms-insertion-sort.basic | 32 ++ .../sorting-algorithms-insertion-sort.basic | 2 +- .../sorting-algorithms-merge-sort-1.pas | 66 +++ .../sorting-algorithms-merge-sort-2.pas | 12 + .../sorting-algorithms-merge-sort-3.pas | 85 ++++ .../Raku/sorting-algorithms-merge-sort-1.raku | 26 +- .../Raku/sorting-algorithms-merge-sort-3.raku | 45 +- .../Raku/sorting-algorithms-merge-sort-4.raku | 56 +-- .../Raku/sorting-algorithms-merge-sort-5.raku | 25 +- .../Raku/sorting-algorithms-merge-sort-6.raku | 27 ++ .../SETL/sorting-algorithms-merge-sort.setl | 31 ++ .../sorting-algorithms-quicksort.basic | 38 ++ .../Fortran/sorting-algorithms-quicksort.f | 100 ----- .../Python/sorting-algorithms-quicksort-1.py | 38 +- .../Raku/sorting-algorithms-quicksort-1.raku | 11 +- .../Raku/sorting-algorithms-quicksort-2.raku | 15 +- .../Raku/sorting-algorithms-quicksort-3.raku | 35 +- .../Raku/sorting-algorithms-quicksort-4.raku | 14 +- .../Raku/sorting-algorithms-quicksort-5.raku | 33 +- .../Zig/sorting-algorithms-quicksort-1.zig | 27 ++ .../Zig/sorting-algorithms-quicksort-2.zig | 24 ++ .../Zig/sorting-algorithms-quicksort.zig | 45 -- ... sorting-algorithms-selection-sort-1.rust} | 0 .../sorting-algorithms-selection-sort-2.rust | 12 + .../sorting-algorithms-stooge-sort.easy | 16 + .../sorting-algorithms-stooge-sort.elena | 2 +- Task/Soundex/EasyLang/soundex.easy | 23 + .../Quackery/speech-synthesis.quackery | 7 + .../spelling-of-ordinal-numbers.quackery | 26 ++ .../C-sharp/sphenic-numbers.cs | 62 +++ .../Sidef/sphenic-numbers.sidef | 26 ++ ...er-string-based-on-change-of-character.bqn | 4 + .../Pascal/square-form-factorization.pas | 293 +++++++++++++ .../Sidef/square-form-factorization.sidef | 56 +++ .../Amazing-Hopper/statistics-basic.hopper | 116 +++++ .../EasyLang/statistics-basic.easy | 45 ++ .../Sidef/statistics-basic.sidef | 40 +- .../statistics-normal-distribution.edsac | 219 ++++++++++ .../statistics-normal-distribution-1.parigp | 4 +- Task/String-append/BQN/string-append.bqn | 5 + .../Chipmunk-Basic/string-append.basic | 3 + Task/String-append/Dart/string-append.dart | 5 + .../GW-BASIC/string-append.basic | 3 + .../MiniScript/string-append.mini | 4 + Task/String-append/XBasic/string-append.basic | 11 + .../Chipmunk-Basic/string-case.basic | 4 + Task/String-case/EMal/string-case.emal | 7 + Task/String-case/Elena/string-case.elena | 5 - .../Wren/string-comparison.wren | 2 +- ...g => string-interpolation-included--1.alg} | 0 .../string-interpolation-included--2.alg | 21 + .../string-interpolation-included-.basic | 2 + .../string-interpolation-included-.basic | 2 + .../string-interpolation-included-.basic | 5 + .../string-interpolation-included-.basic | 3 + .../string-interpolation-included-.basic | 2 + .../string-interpolation-included-.basic | 9 + Task/Subleq/BASIC256/subleq.basic | 30 ++ Task/Subleq/EasyLang/subleq.easy | 43 ++ Task/Subleq/Gambas/subleq.gambas | 38 ++ Task/Subleq/SETL/subleq.setl | 38 ++ Task/Subleq/Yabasic/subleq.basic | 29 ++ .../EasyLang/subtractive-generator.easy | 36 ++ .../Quackery/subtractive-generator.quackery | 23 + .../successive-prime-differences.hopper | 111 +++++ .../successive-prime-differences.easy | 62 +++ .../Euler/sum-and-product-of-an-array.euler | 28 -- ...basic => sum-digits-of-an-integer-1.basic} | 0 .../sum-digits-of-an-integer-2.basic | 12 + .../sum-digits-of-an-integer.edsac | 114 +++++ .../Run-BASIC/sum-digits-of-an-integer.basic | 1 - .../Uxntal/sum-digits-of-an-integer.uxnatl | 7 + .../XBasic/sum-digits-of-an-integer.basic | 26 ++ .../ALGOL-60/sum-multiples-of-3-and-5.alg | 20 + .../EasyLang/sum-multiples-of-3-and-5.easy | 9 + .../Joy/sum-multiples-of-3-and-5.joy | 11 + .../PL-I-80/sum-multiples-of-3-and-5.pli | 43 ++ .../S-BASIC/sum-multiples-of-3-and-5.basic | 16 + .../Zig/sum-multiples-of-3-and-5.zig | 32 +- .../Sum-of-squares/Euler/sum-of-squares.euler | 18 - .../Amazing-Hopper/super-d-numbers.hopper | 29 ++ .../Quackery/super-d-numbers.quackery | 19 + .../symmetric-difference.hopper | 14 + .../EasyLang/symmetric-difference.easy | 13 +- .../MiniScript/symmetric-difference.mini | 53 +++ .../SETL/symmetric-difference.setl | 8 + .../C++/table-creation-postal-addresses.cpp | 63 +++ .../Java/table-creation-postal-addresses.java | 61 +++ .../take-notes-on-the-command-line.hopper | 21 + Task/Tau-function/EasyLang/tau-function.easy | 16 + .../Tau-function/MiniScript/tau-function.mini | 20 + Task/Tau-number/BASIC256/tau-number.basic | 2 +- Task/Tau-number/EasyLang/tau-number.easy | 21 + Task/Tau-number/Gambas/tau-number.gambas | 32 ++ Task/Tau-number/IS-BASIC/tau-number.basic | 12 + Task/Tau-number/MiniScript/tau-number.mini | 22 + .../{tau-number.basic => tau-number-1.basic} | 0 Task/Tau-number/True-BASIC/tau-number-2.basic | 22 + Task/Tau-number/XBasic/tau-number.basic | 25 ++ Task/Ternary-logic/Elena/ternary-logic.elena | 85 ++-- .../Test-integerness/BQN/test-integerness.bqn | 3 + .../Sidef/text-processing-1.sidef | 3 +- .../Amazing-Hopper/text-processing-2.hopper | 20 + .../the-twelve-days-of-christmas.basic | 26 ++ .../SETL/the-twelve-days-of-christmas.setl | 31 ++ .../XBasic/the-twelve-days-of-christmas.basic | 44 ++ Task/Tic-tac-toe/Koka/tic-tac-toe.koka | 407 ++++++++++++++++++ .../BQN/tokenize-a-string.bqn | 7 +- .../EasyLang/tokenize-a-string.easy | 4 +- .../JavaScript/tokenize-a-string-1.js | 5 + .../JavaScript/tokenize-a-string-2.js | 74 ++++ .../JavaScript/tokenize-a-string-3.js | 3 + .../JavaScript/tokenize-a-string.js | 1 - .../C++/tonelli-shanks-algorithm.cpp | 2 +- .../Elena/top-rank-per-group.elena | 8 +- .../C++/total-circles-area.cpp | 98 +++++ .../EasyLang/total-circles-area.easy | 77 ++++ ...es-area.java => total-circles-area-1.java} | 2 +- .../Java/total-circles-area-2.java | 86 ++++ .../Julia/total-circles-area.julia | 4 +- .../SETL/totient-function.setl | 36 ++ .../Towers-of-Hanoi/EMal/towers-of-hanoi.emal | 10 + .../Towers-of-Hanoi/SETL/towers-of-hanoi.setl | 12 + ...english-text-using-the-greek-alphabet.java | 47 ++ .../EasyLang/tree-traversal.easy | 72 ++++ .../Tree-traversal/Elena/tree-traversal.elena | 8 +- Task/Tree-traversal/SETL/tree-traversal.setl | 37 ++ .../Amazing-Hopper/truth-table-1.hopper | 106 +++++ .../Amazing-Hopper/truth-table-2.hopper | 69 +++ Task/Truth-table/SETL/truth-table.setl | 133 ++++++ .../EasyLang/twelve-statements.easy | 69 +++ .../{twin-primes.cpp => twin-primes-1.cpp} | 0 Task/Twin-primes/C++/twin-primes-2.cpp | 42 ++ Task/Twin-primes/EasyLang/twin-primes.easy | 31 ++ Task/Twin-primes/J/twin-primes.j | 13 +- .../{twin-primes.java => twin-primes-1.java} | 0 Task/Twin-primes/Java/twin-primes-2.java | 39 ++ Task/Twin-primes/Phix/twin-primes-1.phix | 25 ++ Task/Twin-primes/Phix/twin-primes-2.phix | 20 + Task/Twin-primes/Phix/twin-primes.phix | 27 -- Task/Twin-primes/Raku/twin-primes.raku | 3 +- .../Twos-complement/Java/twos-complement.java | 4 +- .../ukkonen-s-suffix-tree-construction.java | 202 +++++++++ .../EasyLang/ulam-spiral-for-primes-.easy | 61 +++ .../Quackery/ulam-spiral-for-primes-.quackery | 8 + .../C++/unicode-variable-names.cpp | 11 + .../Zig/unicode-variable-names.zig | 7 + Task/User-input-Text/Nu/user-input-text.nu | 4 + .../EasyLang/vampire-number.easy | 50 +++ .../Amazing-Hopper/van-eck-sequence.hopper | 17 + .../BASIC256/van-eck-sequence.basic | 21 + .../Chipmunk-Basic/van-eck-sequence.basic | 23 + .../GW-BASIC/van-eck-sequence.basic | 21 + .../PureBasic/van-eck-sequence.basic | 27 ++ .../QBasic/van-eck-sequence.basic | 22 + .../SETL/van-eck-sequence.setl | 11 + .../XBasic/van-eck-sequence.basic | 27 ++ .../Yabasic/van-eck-sequence.basic | 22 + ...e-size-set.cpp => variable-size-set-1.cpp} | 0 .../C++/variable-size-set-2.cpp | 26 ++ .../Java/variable-size-set.java | 14 + .../Elena/vigen-re-cipher.elena | 7 +- Task/Wagstaff-primes/C++/wagstaff-primes.cpp | 6 +- .../Quackery/wagstaff-primes.quackery | 15 + ...asteful-equidigital-and-frugal-numbers.cpp | 134 ++++++ ...steful-equidigital-and-frugal-numbers.java | 130 ++++++ .../EasyLang/wilson-primes-of-order-n.easy | 39 ++ .../J/wilson-primes-of-order-n.j | 26 ++ Task/Wireworld/Elena/wireworld.elena | 20 +- Task/Wireworld/MiniScript/wireworld.mini | 97 +++++ Task/Word-wrap/Elena/word-wrap.elena | 2 +- Task/Word-wrap/Tailspin/word-wrap.tailspin | 22 + Task/Wordiff/C++/wordiff.cpp | 112 +++++ Task/Wordiff/Java/wordiff.java | 96 +++++ .../Elena/world-cup-group-stage.elena | 2 +- .../write-float-arrays-to-a-text-file.xpl0 | 8 + ...{yin-and-yang.dart => yin-and-yang-1.dart} | 0 Task/Yin-and-yang/Dart/yin-and-yang-2.dart | 36 ++ Task/Yin-and-yang/Dart/yin-and-yang-3.dart | 30 ++ .../Yin-and-yang/JavaScript/yin-and-yang-4.js | 20 + .../Yin-and-yang/JavaScript/yin-and-yang-5.js | 18 + Task/Yin-and-yang/SETL/yin-and-yang.setl | 23 + .../Elena/zeckendorf-arithmetic.elena | 40 +- .../zeckendorf-number-representation.easy | 29 ++ .../zeckendorf-number-representation.mini | 27 ++ .../Elena/zhang-suen-thinning-algorithm.elena | 20 +- 2427 files changed, 31826 insertions(+), 3468 deletions(-) delete mode 120000 Lang/11l/Comments delete mode 120000 Lang/11l/List-comprehensions create mode 120000 Lang/8080-Assembly/McNuggets-problem create mode 120000 Lang/8080-Assembly/Repeat-a-string delete mode 120000 Lang/ALGOL-60/100-doors create mode 120000 Lang/ALGOL-60/Sum-multiples-of-3-and-5 create mode 120000 Lang/ALGOL-68/Equal-prime-and-composite-sums create mode 120000 Lang/ALGOL-68/Jacobi-symbol create mode 120000 Lang/ALGOL-68/Numbers-which-are-not-the-sum-of-distinct-squares create mode 120000 Lang/ALGOL-68/Polynomial-long-division create mode 120000 Lang/ALGOL-68/Radical-of-an-integer create mode 120000 Lang/ALGOL-68/Ramer-Douglas-Peucker-line-simplification create mode 120000 Lang/ALGOL-M/Exponentiation-order delete mode 120000 Lang/ALGOL-W/100-doors create mode 120000 Lang/ALGOL-W/Jacobi-symbol create mode 120000 Lang/ALGOL-W/Numbers-which-are-not-the-sum-of-distinct-squares create mode 120000 Lang/APL/Align-columns create mode 120000 Lang/APL/Longest-common-substring create mode 120000 Lang/AWK/Deceptive-numbers create mode 120000 Lang/Acornsoft-Lisp/Search-a-list create mode 120000 Lang/Amazing-Hopper/Anagrams create mode 120000 Lang/Amazing-Hopper/Arithmetic-evaluation create mode 120000 Lang/Amazing-Hopper/Averages-Median create mode 120000 Lang/Amazing-Hopper/Babbage-problem create mode 120000 Lang/Amazing-Hopper/Balanced-brackets create mode 120000 Lang/Amazing-Hopper/Cantor-set create mode 120000 Lang/Amazing-Hopper/Count-in-octal create mode 120000 Lang/Amazing-Hopper/Disarium-numbers create mode 120000 Lang/Amazing-Hopper/Dot-product create mode 120000 Lang/Amazing-Hopper/Formatted-numeric-output create mode 120000 Lang/Amazing-Hopper/Hailstone-sequence create mode 120000 Lang/Amazing-Hopper/Haversine-formula create mode 120000 Lang/Amazing-Hopper/Knuth-shuffle create mode 120000 Lang/Amazing-Hopper/M-bius-function create mode 120000 Lang/Amazing-Hopper/Magic-squares-of-doubly-even-order create mode 120000 Lang/Amazing-Hopper/Magnanimous-numbers create mode 120000 Lang/Amazing-Hopper/Matrix-digital-rain create mode 120000 Lang/Amazing-Hopper/Mayan-numerals create mode 120000 Lang/Amazing-Hopper/Middle-three-digits create mode 120000 Lang/Amazing-Hopper/One-dimensional-cellular-automata create mode 120000 Lang/Amazing-Hopper/Ordered-words create mode 120000 Lang/Amazing-Hopper/Pseudo-random-numbers-Middle-square-method create mode 120000 Lang/Amazing-Hopper/Return-multiple-values create mode 120000 Lang/Amazing-Hopper/Run-length-encoding create mode 120000 Lang/Amazing-Hopper/Smith-numbers create mode 120000 Lang/Amazing-Hopper/Statistics-Basic create mode 120000 Lang/Amazing-Hopper/Successive-prime-differences create mode 120000 Lang/Amazing-Hopper/Super-d-numbers create mode 120000 Lang/Amazing-Hopper/Symmetric-difference create mode 120000 Lang/Amazing-Hopper/Take-notes-on-the-command-line create mode 120000 Lang/Amazing-Hopper/Text-processing-2 create mode 120000 Lang/Amazing-Hopper/Truth-table create mode 120000 Lang/Amazing-Hopper/Van-Eck-sequence create mode 120000 Lang/AppleScript/Multifactorial create mode 120000 Lang/Applesoft-BASIC/Catalan-numbers-Pascals-triangle create mode 120000 Lang/Applesoft-BASIC/Pig-the-dice-game create mode 120000 Lang/Applesoft-BASIC/Recamans-sequence create mode 120000 Lang/Applesoft-BASIC/String-interpolation-included- delete mode 120000 Lang/BASIC/Longest-string-challenge delete mode 120000 Lang/BASIC/One-dimensional-cellular-automata delete mode 120000 Lang/BASIC/Sorting-algorithms-Gnome-sort create mode 120000 Lang/BASIC256/21-game create mode 120000 Lang/BASIC256/Achilles-numbers create mode 120000 Lang/BASIC256/Benfords-law create mode 120000 Lang/BASIC256/Blum-integer create mode 120000 Lang/BASIC256/Casting-out-nines create mode 120000 Lang/BASIC256/Determine-if-a-string-has-all-unique-characters create mode 120000 Lang/BASIC256/Equal-prime-and-composite-sums create mode 120000 Lang/BASIC256/Longest-string-challenge create mode 120000 Lang/BASIC256/Padovan-n-step-number-sequences create mode 120000 Lang/BASIC256/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors create mode 120000 Lang/BASIC256/Sequence:-smallest-number-with-exactly-n-divisors create mode 120000 Lang/BASIC256/Sorting-algorithms-Bogosort create mode 120000 Lang/BASIC256/Sorting-algorithms-Gnome-sort create mode 120000 Lang/BASIC256/Subleq create mode 120000 Lang/BASIC256/Van-Eck-sequence create mode 120000 Lang/BBC-BASIC/Angles-geometric-normalization-and-conversion create mode 120000 Lang/BBC-BASIC/Archimedean-spiral create mode 120000 Lang/BBC-BASIC/Bioinformatics-Sequence-mutation create mode 120000 Lang/BBC-BASIC/Bioinformatics-base-count create mode 120000 Lang/BBC-BASIC/Calculating-the-value-of-e create mode 120000 Lang/BBC-BASIC/Currency create mode 120000 Lang/BBC-BASIC/Cyclops-numbers create mode 120000 Lang/BBC-BASIC/Emirp-primes create mode 120000 Lang/BBC-BASIC/Entropy-Narcissist create mode 120000 Lang/BBC-BASIC/Fusc-sequence create mode 120000 Lang/BBC-BASIC/Generate-Chess960-starting-position create mode 120000 Lang/BBC-BASIC/Hex-words create mode 120000 Lang/BBC-BASIC/Hickerson-series-of-almost-integers create mode 120000 Lang/BBC-BASIC/Humble-numbers create mode 120000 Lang/BBC-BASIC/I-before-E-except-after-C create mode 120000 Lang/BBC-BASIC/Jaro-similarity create mode 120000 Lang/BBC-BASIC/Julia-set create mode 120000 Lang/BBC-BASIC/Last-Friday-of-each-month create mode 120000 Lang/BBC-BASIC/MAC-vendor-lookup create mode 120000 Lang/BBC-BASIC/Magnanimous-numbers create mode 120000 Lang/BBC-BASIC/Rosetta-Code-Find-unimplemented-tasks create mode 120000 Lang/BQN/Angle-difference-between-two-bearings create mode 120000 Lang/BQN/Apply-a-callback-to-an-array create mode 120000 Lang/BQN/Averages-Pythagorean-means create mode 120000 Lang/BQN/Determine-if-a-string-is-numeric create mode 120000 Lang/BQN/Leap-year create mode 120000 Lang/BQN/Longest-string-challenge create mode 120000 Lang/BQN/Multifactorial create mode 120000 Lang/BQN/Program-name create mode 120000 Lang/BQN/Pseudo-random-numbers-Middle-square-method create mode 120000 Lang/BQN/Remove-duplicate-elements create mode 120000 Lang/BQN/Reverse-words-in-a-string create mode 120000 Lang/BQN/Rot-13 create mode 120000 Lang/BQN/Sequence-of-non-squares create mode 120000 Lang/BQN/Sort-an-integer-array create mode 120000 Lang/BQN/Split-a-character-string-based-on-change-of-character create mode 120000 Lang/BQN/String-append create mode 120000 Lang/BQN/Test-integerness create mode 120000 Lang/BootBASIC/Fibonacci-sequence create mode 120000 Lang/BootBASIC/Loops-Break create mode 120000 Lang/BootBASIC/Loops-N-plus-one-half create mode 120000 Lang/C++/ADFGVX-cipher create mode 120000 Lang/C++/Own-digits-power-sum create mode 120000 Lang/C++/Quoting-constructs create mode 120000 Lang/C++/Table-creation-Postal-addresses create mode 120000 Lang/C++/Total-circles-area create mode 120000 Lang/C++/Unicode-variable-names create mode 120000 Lang/C++/Wasteful-equidigital-and-frugal-numbers create mode 120000 Lang/C++/Wordiff create mode 120000 Lang/C-sharp/Sphenic-numbers create mode 120000 Lang/C/Search-in-paragraphs-text create mode 120000 Lang/Chipmunk-Basic/21-game create mode 120000 Lang/Chipmunk-Basic/Angle-difference-between-two-bearings create mode 120000 Lang/Chipmunk-Basic/Anonymous-recursion create mode 120000 Lang/Chipmunk-Basic/Arithmetic-Integer create mode 120000 Lang/Chipmunk-Basic/Array-length create mode 120000 Lang/Chipmunk-Basic/Binary-digits create mode 120000 Lang/Chipmunk-Basic/Box-the-compass create mode 120000 Lang/Chipmunk-Basic/Cantor-set create mode 120000 Lang/Chipmunk-Basic/Carmichael-3-strong-pseudoprimes create mode 120000 Lang/Chipmunk-Basic/Casting-out-nines create mode 120000 Lang/Chipmunk-Basic/Catalan-numbers-Pascals-triangle create mode 120000 Lang/Chipmunk-Basic/Catamorphism create mode 120000 Lang/Chipmunk-Basic/Character-codes create mode 120000 Lang/Chipmunk-Basic/Determine-if-a-string-has-all-unique-characters create mode 120000 Lang/Chipmunk-Basic/Disarium-numbers create mode 120000 Lang/Chipmunk-Basic/Egyptian-division create mode 120000 Lang/Chipmunk-Basic/Ethiopian-multiplication create mode 120000 Lang/Chipmunk-Basic/Find-limit-of-recursion create mode 120000 Lang/Chipmunk-Basic/Greatest-common-divisor create mode 120000 Lang/Chipmunk-Basic/Guess-the-number-With-feedback create mode 120000 Lang/Chipmunk-Basic/Logical-operations create mode 120000 Lang/Chipmunk-Basic/Longest-string-challenge create mode 120000 Lang/Chipmunk-Basic/Magic-squares-of-odd-order create mode 120000 Lang/Chipmunk-Basic/Minimum-multiple-of-m-where-digital-sum-equals-m create mode 120000 Lang/Chipmunk-Basic/Morse-code create mode 120000 Lang/Chipmunk-Basic/Padovan-n-step-number-sequences create mode 120000 Lang/Chipmunk-Basic/Pig-the-dice-game create mode 120000 Lang/Chipmunk-Basic/Repeat-a-string create mode 120000 Lang/Chipmunk-Basic/Sequence-of-non-squares create mode 120000 Lang/Chipmunk-Basic/Sequence:-smallest-number-with-exactly-n-divisors create mode 120000 Lang/Chipmunk-Basic/Sorting-algorithms-Gnome-sort create mode 120000 Lang/Chipmunk-Basic/Sorting-algorithms-Quicksort create mode 120000 Lang/Chipmunk-Basic/String-append create mode 120000 Lang/Chipmunk-Basic/String-case create mode 120000 Lang/Chipmunk-Basic/String-interpolation-included- create mode 120000 Lang/Chipmunk-Basic/Van-Eck-sequence create mode 120000 Lang/Component-Pascal/Sorting-algorithms-Merge-sort create mode 120000 Lang/Cowgol/Longest-common-substring create mode 120000 Lang/Cowgol/Multifactorial create mode 100644 Lang/Curto/00-LANG.txt create mode 100644 Lang/Curto/00-META.yaml create mode 120000 Lang/Curto/Conditional-structures create mode 120000 Lang/Curto/Hello-world-Text create mode 120000 Lang/D/Largest-proper-divisor-of-n create mode 120000 Lang/Dart/Arithmetic-Integer create mode 120000 Lang/Dart/Nth-root create mode 120000 Lang/Dart/Pythagoras-tree create mode 120000 Lang/Dart/String-append create mode 120000 Lang/Draco/Binary-digits create mode 120000 Lang/Draco/Count-the-coins create mode 120000 Lang/EDSAC-order-code/Josephus-problem create mode 120000 Lang/EDSAC-order-code/Magic-squares-of-doubly-even-order create mode 120000 Lang/EDSAC-order-code/Magic-squares-of-odd-order create mode 120000 Lang/EDSAC-order-code/Magic-squares-of-singly-even-order create mode 120000 Lang/EDSAC-order-code/Maze-generation create mode 120000 Lang/EDSAC-order-code/Pseudo-random-numbers-Middle-square-method create mode 120000 Lang/EDSAC-order-code/Sorting-algorithms-Gnome-sort create mode 120000 Lang/EDSAC-order-code/Statistics-Normal-distribution create mode 120000 Lang/EDSAC-order-code/Sum-digits-of-an-integer create mode 120000 Lang/EMal/Empty-string create mode 120000 Lang/EMal/Environment-variables create mode 120000 Lang/EMal/FizzBuzz create mode 120000 Lang/EMal/Loops-For create mode 120000 Lang/EMal/Loops-For-with-a-specified-step create mode 120000 Lang/EMal/Loops-Increment-loop-index-within-loop-body create mode 120000 Lang/EMal/Loops-N-plus-one-half create mode 120000 Lang/EMal/Loops-While create mode 120000 Lang/EMal/String-case create mode 120000 Lang/EMal/Towers-of-Hanoi create mode 120000 Lang/EasyLang/Animation create mode 120000 Lang/EasyLang/Averages-Mode create mode 120000 Lang/EasyLang/Averages-Pythagorean-means create mode 120000 Lang/EasyLang/Averages-Simple-moving-average create mode 120000 Lang/EasyLang/Balanced-brackets create mode 120000 Lang/EasyLang/Benfords-law create mode 120000 Lang/EasyLang/Bifid-cipher create mode 120000 Lang/EasyLang/Bin-given-limits create mode 120000 Lang/EasyLang/Bitmap-Bresenhams-line-algorithm create mode 120000 Lang/EasyLang/CUSIP create mode 120000 Lang/EasyLang/Caesar-cipher create mode 120000 Lang/EasyLang/Calendar create mode 120000 Lang/EasyLang/Cantor-set create mode 120000 Lang/EasyLang/Carmichael-3-strong-pseudoprimes create mode 120000 Lang/EasyLang/Casting-out-nines create mode 120000 Lang/EasyLang/Chinese-zodiac create mode 120000 Lang/EasyLang/Circles-of-given-radius-through-two-points create mode 120000 Lang/EasyLang/Cistercian-numerals create mode 120000 Lang/EasyLang/Closest-pair-problem create mode 120000 Lang/EasyLang/Colour-pinstripe-Display create mode 120000 Lang/EasyLang/Combinations-and-permutations create mode 120000 Lang/EasyLang/Comma-quibbling create mode 120000 Lang/EasyLang/Composite-numbers-k-with-no-single-digit-factors-whose-factors-are-all-substrings-of-k create mode 120000 Lang/EasyLang/Consecutive-primes-with-ascending-or-descending-differences create mode 120000 Lang/EasyLang/Constrained-random-points-on-a-circle create mode 120000 Lang/EasyLang/Cyclops-numbers create mode 120000 Lang/EasyLang/Deal-cards-for-FreeCell create mode 120000 Lang/EasyLang/Descending-primes create mode 120000 Lang/EasyLang/Determine-if-a-string-is-collapsible create mode 120000 Lang/EasyLang/Determine-if-a-string-is-squeezable create mode 120000 Lang/EasyLang/Dice-game-probabilities create mode 120000 Lang/EasyLang/Disarium-numbers create mode 120000 Lang/EasyLang/Discordian-date create mode 120000 Lang/EasyLang/Doomsday-rule create mode 120000 Lang/EasyLang/Dutch-national-flag-problem create mode 120000 Lang/EasyLang/Egyptian-division create mode 120000 Lang/EasyLang/Elementary-cellular-automaton create mode 120000 Lang/EasyLang/Empty-program create mode 120000 Lang/EasyLang/Euclid-Mullin-sequence create mode 120000 Lang/EasyLang/Evaluate-binomial-coefficients create mode 120000 Lang/EasyLang/Events create mode 120000 Lang/EasyLang/Execute-Brain- create mode 120000 Lang/EasyLang/Execute-Computer-Zero create mode 120000 Lang/EasyLang/Execute-HQ9+ create mode 120000 Lang/EasyLang/Execute-SNUSP create mode 120000 Lang/EasyLang/Exponentiation-order create mode 120000 Lang/EasyLang/Exponentiation-with-infix-operators-in-or-operating-on-the-base create mode 120000 Lang/EasyLang/Extensible-prime-generator create mode 120000 Lang/EasyLang/Extreme-floating-point-values create mode 120000 Lang/EasyLang/Factorial-primes create mode 120000 Lang/EasyLang/Feigenbaum-constant-calculation create mode 120000 Lang/EasyLang/Find-the-last-Sunday-of-each-month create mode 120000 Lang/EasyLang/Four-bit-adder create mode 120000 Lang/EasyLang/Hailstone-sequence create mode 120000 Lang/EasyLang/Harshad-or-Niven-series create mode 120000 Lang/EasyLang/Haversine-formula create mode 120000 Lang/EasyLang/Hofstadter-Q-sequence create mode 120000 Lang/EasyLang/Humble-numbers create mode 120000 Lang/EasyLang/Image-noise create mode 120000 Lang/EasyLang/Infinity create mode 120000 Lang/EasyLang/Isqrt-integer-square-root-of-X create mode 120000 Lang/EasyLang/Last-Friday-of-each-month create mode 120000 Lang/EasyLang/Leap-year create mode 120000 Lang/EasyLang/Look-and-say-sequence create mode 120000 Lang/EasyLang/Loop-over-multiple-arrays-simultaneously create mode 120000 Lang/EasyLang/M-bius-function create mode 120000 Lang/EasyLang/Magnanimous-numbers create mode 120000 Lang/EasyLang/Maximum-triangle-path-sum create mode 120000 Lang/EasyLang/McNuggets-problem create mode 120000 Lang/EasyLang/Minimum-multiple-of-m-where-digital-sum-equals-m create mode 120000 Lang/EasyLang/Motzkin-numbers create mode 120000 Lang/EasyLang/Multifactorial create mode 120000 Lang/EasyLang/Numbers-which-are-not-the-sum-of-distinct-squares create mode 120000 Lang/EasyLang/One-dimensional-cellular-automata create mode 120000 Lang/EasyLang/Padovan-n-step-number-sequences create mode 120000 Lang/EasyLang/Particle-fountain create mode 120000 Lang/EasyLang/Perfect-shuffle create mode 120000 Lang/EasyLang/Periodic-table create mode 120000 Lang/EasyLang/Perlin-noise create mode 120000 Lang/EasyLang/Pig-the-dice-game create mode 120000 Lang/EasyLang/Polynomial-regression create mode 120000 Lang/EasyLang/Population-count create mode 120000 Lang/EasyLang/Radical-of-an-integer create mode 120000 Lang/EasyLang/Ramer-Douglas-Peucker-line-simplification create mode 120000 Lang/EasyLang/Repeat-a-string create mode 120000 Lang/EasyLang/Search-a-list create mode 120000 Lang/EasyLang/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors create mode 120000 Lang/EasyLang/Set-puzzle create mode 120000 Lang/EasyLang/Smarandache-Wellin-primes create mode 120000 Lang/EasyLang/Smith-numbers create mode 120000 Lang/EasyLang/Sort-disjoint-sublist create mode 120000 Lang/EasyLang/Sort-three-variables create mode 120000 Lang/EasyLang/Sorting-algorithms-Counting-sort create mode 120000 Lang/EasyLang/Sorting-algorithms-Gnome-sort create mode 120000 Lang/EasyLang/Sorting-algorithms-Stooge-sort create mode 120000 Lang/EasyLang/Soundex create mode 120000 Lang/EasyLang/Statistics-Basic create mode 120000 Lang/EasyLang/Subleq create mode 120000 Lang/EasyLang/Subtractive-generator create mode 120000 Lang/EasyLang/Successive-prime-differences create mode 120000 Lang/EasyLang/Sum-multiples-of-3-and-5 create mode 120000 Lang/EasyLang/Tau-function create mode 120000 Lang/EasyLang/Tau-number create mode 120000 Lang/EasyLang/Total-circles-area create mode 120000 Lang/EasyLang/Tree-traversal create mode 120000 Lang/EasyLang/Twelve-statements create mode 120000 Lang/EasyLang/Twin-primes create mode 120000 Lang/EasyLang/Ulam-spiral-for-primes- create mode 120000 Lang/EasyLang/Vampire-number create mode 120000 Lang/EasyLang/Wilson-primes-of-order-n create mode 120000 Lang/EasyLang/Zeckendorf-number-representation create mode 120000 Lang/Elixir/Cyclops-numbers create mode 120000 Lang/Elixir/Gapful-numbers create mode 120000 Lang/Emacs-Lisp/AVL-tree delete mode 120000 Lang/Euler/FizzBuzz delete mode 120000 Lang/Euler/Giuga-numbers delete mode 120000 Lang/Euler/Jensens-Device delete mode 120000 Lang/Euler/Return-multiple-values delete mode 120000 Lang/Euler/Sum-and-product-of-an-array delete mode 120000 Lang/Euler/Sum-of-squares create mode 120000 Lang/Evaldraw/Draw-a-clock create mode 120000 Lang/F-Sharp/Maximum-triangle-path-sum create mode 120000 Lang/FOCAL/Count-the-coins create mode 120000 Lang/Forth/Check-input-device-is-a-terminal create mode 120000 Lang/Fortran/Dijkstras-algorithm delete mode 120000 Lang/Fortran/Sorting-algorithms-Quicksort create mode 120000 Lang/FutureBasic/15-puzzle-game create mode 120000 Lang/FutureBasic/2048 create mode 120000 Lang/FutureBasic/Benfords-law create mode 120000 Lang/FutureBasic/Bulls-and-cows-Player create mode 120000 Lang/FutureBasic/Call-an-object-method create mode 120000 Lang/FutureBasic/Camel-case-and-snake-case create mode 120000 Lang/FutureBasic/Create-an-object-at-a-given-address create mode 120000 Lang/FutureBasic/Deepcopy create mode 120000 Lang/FutureBasic/Find-the-last-Sunday-of-each-month create mode 120000 Lang/FutureBasic/Four-is-magic create mode 120000 Lang/FutureBasic/Guess-the-number-With-feedback create mode 120000 Lang/GW-BASIC/Arithmetic-Integer create mode 120000 Lang/GW-BASIC/Array-concatenation create mode 120000 Lang/GW-BASIC/Box-the-compass create mode 120000 Lang/GW-BASIC/Chaos-game create mode 120000 Lang/GW-BASIC/Character-codes create mode 120000 Lang/GW-BASIC/Compare-length-of-two-strings create mode 120000 Lang/GW-BASIC/Egyptian-division create mode 120000 Lang/GW-BASIC/Guess-the-number-With-feedback create mode 120000 Lang/GW-BASIC/Knuth-shuffle create mode 120000 Lang/GW-BASIC/Logical-operations create mode 120000 Lang/GW-BASIC/Longest-string-challenge create mode 120000 Lang/GW-BASIC/Magic-squares-of-odd-order create mode 120000 Lang/GW-BASIC/Magnanimous-numbers create mode 120000 Lang/GW-BASIC/Repeat-a-string create mode 120000 Lang/GW-BASIC/Sorting-algorithms-Gnome-sort create mode 120000 Lang/GW-BASIC/Sorting-algorithms-Insertion-sort create mode 120000 Lang/GW-BASIC/String-append create mode 120000 Lang/GW-BASIC/String-interpolation-included- create mode 120000 Lang/GW-BASIC/The-Twelve-Days-of-Christmas create mode 120000 Lang/GW-BASIC/Van-Eck-sequence create mode 120000 Lang/Gambas/Arithmetic-geometric-mean create mode 120000 Lang/Gambas/Blum-integer create mode 120000 Lang/Gambas/Carmichael-3-strong-pseudoprimes create mode 120000 Lang/Gambas/Casting-out-nines create mode 120000 Lang/Gambas/Compare-length-of-two-strings create mode 120000 Lang/Gambas/Equal-prime-and-composite-sums create mode 120000 Lang/Gambas/Factors-of-an-integer create mode 120000 Lang/Gambas/Find-limit-of-recursion create mode 120000 Lang/Gambas/Goldbachs-comet create mode 120000 Lang/Gambas/Haversine-formula create mode 120000 Lang/Gambas/McNuggets-problem create mode 120000 Lang/Gambas/Minimum-multiple-of-m-where-digital-sum-equals-m create mode 120000 Lang/Gambas/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors create mode 120000 Lang/Gambas/Subleq create mode 120000 Lang/Gambas/Tau-number create mode 120000 Lang/Haskell/Blum-integer create mode 120000 Lang/IS-BASIC/Arithmetic-geometric-mean-Calculate-Pi create mode 120000 Lang/IS-BASIC/Chaos-game create mode 120000 Lang/IS-BASIC/Levenshtein-distance create mode 120000 Lang/IS-BASIC/Pi create mode 120000 Lang/IS-BASIC/Sierpinski-carpet create mode 120000 Lang/IS-BASIC/Tau-number create mode 120000 Lang/Insitux/Roman-numerals-Decode create mode 120000 Lang/J/Ramanujan-primes-twins create mode 120000 Lang/J/Repunit-primes create mode 120000 Lang/J/Smarandache-Wellin-primes create mode 120000 Lang/J/Wilson-primes-of-order-n create mode 120000 Lang/Java/ADFGVX-cipher create mode 120000 Lang/Java/Add-a-variable-to-a-class-instance-at-runtime create mode 120000 Lang/Java/Algebraic-data-types create mode 120000 Lang/Java/Factorial-base-numbers-indexing-permutations-of-a-collection create mode 120000 Lang/Java/Main-step-of-GOST-28147-89 create mode 120000 Lang/Java/Own-digits-power-sum create mode 120000 Lang/Java/Table-creation-Postal-addresses create mode 120000 Lang/Java/Transliterate-English-text-using-the-Greek-alphabet create mode 120000 Lang/Java/Ukkonen-s-suffix-tree-construction create mode 120000 Lang/Java/Variable-size-Set create mode 120000 Lang/Java/Wasteful-equidigital-and-frugal-numbers create mode 120000 Lang/Java/Wordiff create mode 120000 Lang/JavaScript/Find-if-a-point-is-within-a-triangle create mode 120000 Lang/Joy/Sum-multiples-of-3-and-5 create mode 120000 Lang/Julia/B-zier-curves-Intersections create mode 120000 Lang/KL1/Hello-world-Text create mode 120000 Lang/Koka/Tic-tac-toe create mode 120000 Lang/Lean/Hello-world-Standard-error create mode 120000 Lang/Lua/Equal-prime-and-composite-sums create mode 120000 Lang/Lua/Giuga-numbers create mode 120000 Lang/Lua/Jacobi-symbol create mode 120000 Lang/Lua/Largest-proper-divisor-of-n create mode 120000 Lang/Lua/Numbers-which-are-not-the-sum-of-distinct-squares create mode 120000 Lang/Lua/Radical-of-an-integer create mode 120000 Lang/MACRO-11/Binary-digits create mode 120000 Lang/MACRO-11/McNuggets-problem create mode 120000 Lang/MAD/Count-the-coins create mode 120000 Lang/MSX-Basic/Arithmetic-Integer create mode 120000 Lang/MSX-Basic/Balanced-brackets create mode 120000 Lang/MSX-Basic/Casting-out-nines create mode 120000 Lang/MSX-Basic/Catalan-numbers-Pascals-triangle create mode 120000 Lang/MSX-Basic/Chaos-game create mode 120000 Lang/MSX-Basic/Character-codes create mode 120000 Lang/MSX-Basic/Compare-length-of-two-strings create mode 120000 Lang/MSX-Basic/Egyptian-division create mode 120000 Lang/MSX-Basic/Guess-the-number-With-feedback create mode 120000 Lang/MSX-Basic/Logical-operations create mode 120000 Lang/MSX-Basic/Longest-string-challenge create mode 120000 Lang/MSX-Basic/Magic-squares-of-odd-order create mode 120000 Lang/MSX-Basic/Pig-the-dice-game create mode 120000 Lang/MSX-Basic/Sorting-algorithms-Gnome-sort create mode 100644 Lang/Macsyma/00-LANG.txt create mode 100644 Lang/Macsyma/00-META.yaml create mode 120000 Lang/Maxima/Babbage-problem create mode 120000 Lang/Maxima/Calculating-the-value-of-e create mode 120000 Lang/Maxima/Catalan-numbers-Pascals-triangle create mode 120000 Lang/Maxima/Motzkin-numbers create mode 120000 Lang/Maxima/Multifactorial create mode 100644 Lang/Mia/00-LANG.txt create mode 100644 Lang/Mia/00-META.yaml create mode 120000 Lang/MiniScript/15-puzzle-game create mode 120000 Lang/MiniScript/4-rings-or-4-squares-puzzle create mode 120000 Lang/MiniScript/Abelian-sandpile-model create mode 120000 Lang/MiniScript/Abundant-odd-numbers create mode 120000 Lang/MiniScript/Accumulator-factory create mode 120000 Lang/MiniScript/Additive-primes create mode 120000 Lang/MiniScript/Align-columns create mode 120000 Lang/MiniScript/Almost-prime create mode 120000 Lang/MiniScript/Anagrams create mode 120000 Lang/MiniScript/Archimedean-spiral create mode 120000 Lang/MiniScript/Attractive-numbers create mode 120000 Lang/MiniScript/Averages-Mean-angle create mode 120000 Lang/MiniScript/Bitmap create mode 120000 Lang/MiniScript/Bitmap-B-zier-curves-Cubic create mode 120000 Lang/MiniScript/Bitmap-B-zier-curves-Quadratic create mode 120000 Lang/MiniScript/Bitmap-Bresenhams-line-algorithm create mode 120000 Lang/MiniScript/Bitmap-Flood-fill create mode 120000 Lang/MiniScript/Cantor-set create mode 120000 Lang/MiniScript/Compare-length-of-two-strings create mode 120000 Lang/MiniScript/Count-in-octal create mode 120000 Lang/MiniScript/Digital-root create mode 120000 Lang/MiniScript/Disarium-numbers create mode 120000 Lang/MiniScript/Elementary-cellular-automaton create mode 120000 Lang/MiniScript/Fractal-tree create mode 120000 Lang/MiniScript/Grayscale-image create mode 120000 Lang/MiniScript/Hailstone-sequence create mode 120000 Lang/MiniScript/Hello-world-Graphical create mode 120000 Lang/MiniScript/Hex-words create mode 120000 Lang/MiniScript/ISBN13-check-digit create mode 120000 Lang/MiniScript/Image-noise create mode 120000 Lang/MiniScript/Longest-string-challenge create mode 120000 Lang/MiniScript/MAC-vendor-lookup create mode 120000 Lang/MiniScript/McNuggets-problem create mode 120000 Lang/MiniScript/N-queens-problem create mode 120000 Lang/MiniScript/Order-by-pair-comparisons create mode 120000 Lang/MiniScript/Pi create mode 120000 Lang/MiniScript/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors create mode 120000 Lang/MiniScript/Sequence:-smallest-number-with-exactly-n-divisors create mode 120000 Lang/MiniScript/Singly-linked-list-Element-definition create mode 120000 Lang/MiniScript/Singly-linked-list-Element-insertion create mode 120000 Lang/MiniScript/Solve-a-Hidato-puzzle create mode 120000 Lang/MiniScript/Sort-disjoint-sublist create mode 120000 Lang/MiniScript/Sorting-algorithms-Gnome-sort create mode 120000 Lang/MiniScript/String-append create mode 120000 Lang/MiniScript/Symmetric-difference create mode 120000 Lang/MiniScript/Tau-function create mode 120000 Lang/MiniScript/Tau-number create mode 120000 Lang/MiniScript/Wireworld create mode 120000 Lang/MiniScript/Zeckendorf-number-representation create mode 120000 Lang/Minimal-BASIC/Arithmetic-Integer create mode 120000 Lang/Minimal-BASIC/Arithmetic-geometric-mean create mode 120000 Lang/Minimal-BASIC/Array-concatenation create mode 120000 Lang/Minimal-BASIC/Find-limit-of-recursion create mode 120000 Lang/Minimal-BASIC/Knuth-shuffle create mode 120000 Lang/Minimal-BASIC/Recamans-sequence create mode 120000 Lang/Minimal-BASIC/Repeat-a-string create mode 120000 Lang/Minimal-BASIC/Sorting-algorithms-Gnome-sort create mode 120000 Lang/Minimal-BASIC/String-interpolation-included- create mode 100644 Lang/Nu/00-LANG.txt create mode 100644 Lang/Nu/00-META.yaml create mode 120000 Lang/Nu/A+B create mode 120000 Lang/Nu/Arithmetic-Integer create mode 120000 Lang/Nu/Array-concatenation create mode 120000 Lang/Nu/Array-length create mode 120000 Lang/Nu/Arrays create mode 120000 Lang/Nu/Balanced-brackets create mode 120000 Lang/Nu/Command-line-arguments create mode 120000 Lang/Nu/Determine-if-a-string-is-numeric create mode 120000 Lang/Nu/Environment-variables create mode 120000 Lang/Nu/Factorial create mode 120000 Lang/Nu/File-input-output create mode 120000 Lang/Nu/FizzBuzz create mode 120000 Lang/Nu/Hello-world-Standard-error create mode 120000 Lang/Nu/Hello-world-Text create mode 120000 Lang/Nu/Integer-comparison create mode 120000 Lang/Nu/Logical-operations create mode 120000 Lang/Nu/Loops-Break create mode 120000 Lang/Nu/Loops-Continue create mode 120000 Lang/Nu/Loops-Do-while create mode 120000 Lang/Nu/Loops-Downward-for create mode 120000 Lang/Nu/Loops-For create mode 120000 Lang/Nu/Loops-For-with-a-specified-step create mode 120000 Lang/Nu/Loops-Foreach create mode 120000 Lang/Nu/Loops-Infinite create mode 120000 Lang/Nu/Loops-N-plus-one-half create mode 120000 Lang/Nu/MAC-vendor-lookup create mode 120000 Lang/Nu/Nth-root create mode 120000 Lang/Nu/User-input-Text create mode 120000 Lang/Ol/Convert-decimal-number-to-rational create mode 120000 Lang/Ol/Multifactorial create mode 120000 Lang/Ol/Population-count create mode 120000 Lang/PL-I-80/Sum-multiples-of-3-and-5 create mode 120000 Lang/PL-M/Jacobi-symbol create mode 120000 Lang/PL-M/Sorting-algorithms-Gnome-sort create mode 120000 Lang/Pascal/McNuggets-problem create mode 120000 Lang/Pascal/Square-form-factorization create mode 120000 Lang/Prolog/Ascending-primes create mode 120000 Lang/Prolog/Descending-primes create mode 120000 Lang/PureBasic/21-game create mode 120000 Lang/PureBasic/Casting-out-nines create mode 120000 Lang/PureBasic/Determine-if-a-string-has-all-unique-characters create mode 120000 Lang/PureBasic/Equal-prime-and-composite-sums create mode 120000 Lang/PureBasic/Factorial-primes create mode 120000 Lang/PureBasic/Padovan-n-step-number-sequences create mode 120000 Lang/PureBasic/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors create mode 120000 Lang/PureBasic/Sequence:-smallest-number-with-exactly-n-divisors create mode 120000 Lang/PureBasic/Van-Eck-sequence create mode 120000 Lang/Python/Home-primes create mode 120000 Lang/Python/Particle-fountain create mode 120000 Lang/Python/Radical-of-an-integer create mode 120000 Lang/QBasic/21-game create mode 120000 Lang/QBasic/Cantor-set create mode 120000 Lang/QBasic/Casting-out-nines create mode 120000 Lang/QBasic/Longest-string-challenge create mode 120000 Lang/QBasic/One-dimensional-cellular-automata create mode 120000 Lang/QBasic/Padovan-n-step-number-sequences create mode 120000 Lang/QBasic/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors create mode 120000 Lang/QBasic/Sequence:-smallest-number-with-exactly-n-divisors create mode 120000 Lang/QBasic/Sorting-algorithms-Gnome-sort create mode 120000 Lang/QBasic/Van-Eck-sequence create mode 120000 Lang/Quackery/Bifid-cipher create mode 120000 Lang/Quackery/Bin-given-limits create mode 120000 Lang/Quackery/Bulls-and-cows create mode 120000 Lang/Quackery/Conways-Game-of-Life create mode 120000 Lang/Quackery/Deal-cards-for-FreeCell create mode 120000 Lang/Quackery/Determine-if-a-string-has-all-unique-characters create mode 120000 Lang/Quackery/Draw-a-clock create mode 120000 Lang/Quackery/First-perfect-square-in-base-n-with-n-unique-digits create mode 120000 Lang/Quackery/Four-bit-adder create mode 120000 Lang/Quackery/Hello-world-Graphical create mode 120000 Lang/Quackery/Hofstadter-Figure-Figure-sequences create mode 120000 Lang/Quackery/Hunt-the-Wumpus create mode 120000 Lang/Quackery/Longest-common-substring create mode 120000 Lang/Quackery/Longest-string-challenge create mode 120000 Lang/Quackery/Morse-code create mode 120000 Lang/Quackery/Numbers-which-are-not-the-sum-of-distinct-squares create mode 120000 Lang/Quackery/Penneys-game create mode 120000 Lang/Quackery/Periodic-table create mode 120000 Lang/Quackery/Set-consolidation create mode 120000 Lang/Quackery/Set-puzzle create mode 120000 Lang/Quackery/Set-right-adjacent-bits create mode 120000 Lang/Quackery/Speech-synthesis create mode 120000 Lang/Quackery/Spelling-of-ordinal-numbers create mode 120000 Lang/Quackery/Subtractive-generator create mode 120000 Lang/Quackery/Super-d-numbers create mode 120000 Lang/Quackery/Ulam-spiral-for-primes- create mode 120000 Lang/Quackery/Wagstaff-primes create mode 120000 Lang/QuickBASIC/Sorting-algorithms-Gnome-sort create mode 120000 Lang/Quite-BASIC/Arithmetic-Integer create mode 120000 Lang/Quite-BASIC/Arithmetic-geometric-mean create mode 120000 Lang/Quite-BASIC/Array-concatenation create mode 120000 Lang/Quite-BASIC/Box-the-compass create mode 120000 Lang/Quite-BASIC/Find-limit-of-recursion create mode 120000 Lang/Quite-BASIC/Logical-operations create mode 120000 Lang/Quite-BASIC/Periodic-table create mode 120000 Lang/Quite-BASIC/Repeat-a-string create mode 120000 Lang/Quite-BASIC/Sorting-algorithms-Gnome-sort create mode 120000 Lang/Quite-BASIC/String-interpolation-included- create mode 120000 Lang/R/Abbreviations-automatic create mode 120000 Lang/R/Abbreviations-easy create mode 120000 Lang/R/Abelian-sandpile-model create mode 120000 Lang/R/Additive-primes create mode 120000 Lang/R/Execute-Brain- create mode 120000 Lang/Racket/Rare-numbers create mode 120000 Lang/Raku/B-zier-curves-Intersections create mode 120000 Lang/Rhovas/Classes create mode 120000 Lang/Rhovas/Hello-world-Text create mode 120000 Lang/Rhovas/Palindrome-detection create mode 120000 Lang/Ring/Hex-words create mode 120000 Lang/Ruby/Ormiston-triples create mode 120000 Lang/Ruby/Padovan-n-step-number-sequences create mode 120000 Lang/Run-BASIC/Casting-out-nines create mode 120000 Lang/Run-BASIC/Largest-proper-divisor-of-n create mode 120000 Lang/Run-BASIC/Population-count create mode 120000 Lang/Run-BASIC/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors create mode 120000 Lang/Run-BASIC/Sorting-algorithms-Gnome-sort create mode 120000 Lang/Rust/Combinations-and-permutations create mode 120000 Lang/Rust/Find-if-a-point-is-within-a-triangle create mode 120000 Lang/Rust/Largest-proper-divisor-of-n create mode 120000 Lang/Rust/M-bius-function create mode 120000 Lang/Rust/Own-digits-power-sum create mode 120000 Lang/Rust/Recamans-sequence create mode 120000 Lang/S-BASIC/Babbage-problem create mode 120000 Lang/S-BASIC/Boolean-values create mode 120000 Lang/S-BASIC/Digital-root create mode 120000 Lang/S-BASIC/Exponentiation-order create mode 120000 Lang/S-BASIC/File-input-output create mode 120000 Lang/S-BASIC/Sum-multiples-of-3-and-5 create mode 120000 Lang/SETL/100-prisoners create mode 120000 Lang/SETL/Abundant-deficient-and-perfect-number-classifications create mode 120000 Lang/SETL/Align-columns create mode 120000 Lang/SETL/Amicable-pairs create mode 120000 Lang/SETL/Arithmetic-numbers create mode 120000 Lang/SETL/Attractive-numbers create mode 120000 Lang/SETL/Balanced-brackets create mode 120000 Lang/SETL/Binary-digits create mode 120000 Lang/SETL/Bulls-and-cows create mode 120000 Lang/SETL/Comma-quibbling create mode 120000 Lang/SETL/Count-occurrences-of-a-substring create mode 120000 Lang/SETL/Count-the-coins create mode 120000 Lang/SETL/Disarium-numbers create mode 120000 Lang/SETL/Entropy create mode 120000 Lang/SETL/Euclid-Mullin-sequence create mode 120000 Lang/SETL/Evolutionary-algorithm create mode 120000 Lang/SETL/Execute-Brain- create mode 120000 Lang/SETL/Execute-a-Markov-algorithm create mode 120000 Lang/SETL/Fibonacci-word create mode 120000 Lang/SETL/FizzBuzz create mode 120000 Lang/SETL/Hailstone-sequence create mode 120000 Lang/SETL/Harshad-or-Niven-series create mode 120000 Lang/SETL/Hofstadter-Figure-Figure-sequences create mode 120000 Lang/SETL/Hofstadter-Q-sequence create mode 120000 Lang/SETL/I-before-E-except-after-C create mode 120000 Lang/SETL/Isqrt-integer-square-root-of-X create mode 120000 Lang/SETL/Jacobsthal-numbers create mode 120000 Lang/SETL/Jewels-and-stones create mode 120000 Lang/SETL/Knuth-shuffle create mode 120000 Lang/SETL/Longest-common-substring create mode 120000 Lang/SETL/Look-and-say-sequence create mode 120000 Lang/SETL/Magnanimous-numbers create mode 120000 Lang/SETL/McNuggets-problem create mode 120000 Lang/SETL/Mertens-function create mode 120000 Lang/SETL/Minimum-multiple-of-m-where-digital-sum-equals-m create mode 120000 Lang/SETL/Multifactorial create mode 120000 Lang/SETL/Mutual-recursion create mode 120000 Lang/SETL/Nth create mode 120000 Lang/SETL/Number-reversal-game create mode 120000 Lang/SETL/Perfect-shuffle create mode 120000 Lang/SETL/Pig-the-dice-game create mode 120000 Lang/SETL/Population-count create mode 120000 Lang/SETL/Recamans-sequence create mode 120000 Lang/SETL/Rep-string create mode 120000 Lang/SETL/Run-length-encoding create mode 120000 Lang/SETL/Sequence-of-non-squares create mode 120000 Lang/SETL/Sequence:-smallest-number-with-exactly-n-divisors create mode 120000 Lang/SETL/Set-consolidation create mode 120000 Lang/SETL/Sierpinski-triangle create mode 120000 Lang/SETL/Sieve-of-Eratosthenes create mode 120000 Lang/SETL/Smith-numbers create mode 120000 Lang/SETL/Sorting-algorithms-Merge-sort create mode 120000 Lang/SETL/Subleq create mode 120000 Lang/SETL/Symmetric-difference create mode 120000 Lang/SETL/The-Twelve-Days-of-Christmas create mode 120000 Lang/SETL/Totient-function create mode 120000 Lang/SETL/Towers-of-Hanoi create mode 120000 Lang/SETL/Tree-traversal create mode 120000 Lang/SETL/Truth-table create mode 120000 Lang/SETL/Van-Eck-sequence create mode 120000 Lang/SETL/Yin-and-yang create mode 120000 Lang/Sidef/Achilles-numbers create mode 120000 Lang/Sidef/Blum-integer create mode 120000 Lang/Sidef/Compare-sorting-algorithms-performance create mode 120000 Lang/Sidef/Erd-s-Nicolas-numbers create mode 120000 Lang/Sidef/Giuga-numbers create mode 120000 Lang/Sidef/Golden-ratio-Convergence create mode 120000 Lang/Sidef/Largest-proper-divisor-of-n create mode 120000 Lang/Sidef/Meissel-Mertens-constant create mode 120000 Lang/Sidef/Numbers-which-are-the-cube-roots-of-the-product-of-their-proper-divisors create mode 120000 Lang/Sidef/Radical-of-an-integer create mode 120000 Lang/Sidef/Sphenic-numbers create mode 120000 Lang/Sidef/Square-form-factorization create mode 120000 Lang/Tailspin/Word-wrap create mode 120000 Lang/True-BASIC/21-game create mode 120000 Lang/True-BASIC/Balanced-brackets create mode 120000 Lang/True-BASIC/Cantor-set create mode 120000 Lang/True-BASIC/Casting-out-nines create mode 120000 Lang/True-BASIC/McNuggets-problem create mode 120000 Lang/True-BASIC/Minimum-multiple-of-m-where-digital-sum-equals-m create mode 120000 Lang/True-BASIC/Sequence:-smallest-number-with-exactly-n-divisors create mode 120000 Lang/UNIX-Shell/Doomsday-rule create mode 120000 Lang/UNIX-Shell/Generate-Chess960-starting-position create mode 100644 Lang/Ursalang/00-LANG.txt create mode 100644 Lang/Ursalang/00-META.yaml create mode 120000 Lang/Ursalang/Accumulator-factory create mode 120000 Lang/Ursalang/Ackermann-function create mode 120000 Lang/Ursalang/Conditional-structures create mode 120000 Lang/Ursalang/Hello-world-Text create mode 120000 Lang/Ursalang/Integer-sequence create mode 100644 Lang/Uxntal/00-LANG.txt create mode 100644 Lang/Uxntal/00-META.yaml create mode 120000 Lang/Uxntal/Character-codes create mode 120000 Lang/Uxntal/Colour-bars-Display create mode 120000 Lang/Uxntal/Colour-pinstripe-Display create mode 120000 Lang/Uxntal/Draw-a-pixel create mode 120000 Lang/Uxntal/Factorial create mode 120000 Lang/Uxntal/File-input-output create mode 120000 Lang/Uxntal/Find-limit-of-recursion create mode 120000 Lang/Uxntal/Hello-world-Newline-omission create mode 120000 Lang/Uxntal/Hello-world-Text create mode 120000 Lang/Uxntal/Literals-Integer create mode 120000 Lang/Uxntal/Mouse-position create mode 120000 Lang/Uxntal/Rot-13 create mode 120000 Lang/Uxntal/Sum-digits-of-an-integer create mode 120000 Lang/Vedit-macro-language/A+B create mode 120000 Lang/Vedit-macro-language/Babbage-problem create mode 120000 Lang/XBasic/A+B create mode 120000 Lang/XBasic/Arithmetic-Integer create mode 120000 Lang/XBasic/Array-length create mode 120000 Lang/XBasic/Casting-out-nines create mode 120000 Lang/XBasic/Catalan-numbers-Pascals-triangle create mode 120000 Lang/XBasic/Character-codes create mode 120000 Lang/XBasic/Compare-length-of-two-strings create mode 120000 Lang/XBasic/Egyptian-division create mode 120000 Lang/XBasic/Factors-of-an-integer create mode 120000 Lang/XBasic/Minimum-multiple-of-m-where-digital-sum-equals-m create mode 120000 Lang/XBasic/Repeat-a-string create mode 120000 Lang/XBasic/Rot-13 create mode 120000 Lang/XBasic/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors create mode 120000 Lang/XBasic/Sequence:-smallest-number-with-exactly-n-divisors create mode 120000 Lang/XBasic/String-append create mode 120000 Lang/XBasic/String-interpolation-included- create mode 120000 Lang/XBasic/Sum-digits-of-an-integer create mode 120000 Lang/XBasic/Tau-number create mode 120000 Lang/XBasic/The-Twelve-Days-of-Christmas create mode 120000 Lang/XBasic/Van-Eck-sequence create mode 120000 Lang/XPL0/Align-columns create mode 120000 Lang/XPL0/Convex-hull create mode 120000 Lang/XPL0/Find-limit-of-recursion create mode 120000 Lang/XPL0/Heronian-triangles create mode 120000 Lang/XPL0/Knapsack-problem-Unbounded create mode 120000 Lang/XPL0/Ramer-Douglas-Peucker-line-simplification create mode 120000 Lang/XPL0/Roots-of-a-quadratic-function create mode 120000 Lang/XPL0/Self-numbers create mode 120000 Lang/XPL0/Write-float-arrays-to-a-text-file create mode 120000 Lang/Yabasic/21-game create mode 120000 Lang/Yabasic/Arithmetic-geometric-mean create mode 120000 Lang/Yabasic/Benfords-law create mode 120000 Lang/Yabasic/Boyer-Moore-string-search create mode 120000 Lang/Yabasic/Cantor-set create mode 120000 Lang/Yabasic/Casting-out-nines create mode 120000 Lang/Yabasic/Catalan-numbers-Pascals-triangle create mode 120000 Lang/Yabasic/Equal-prime-and-composite-sums create mode 120000 Lang/Yabasic/Goldbachs-comet create mode 120000 Lang/Yabasic/Padovan-n-step-number-sequences create mode 120000 Lang/Yabasic/Pig-the-dice-game create mode 120000 Lang/Yabasic/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors create mode 120000 Lang/Yabasic/Sequence:-smallest-number-with-exactly-n-divisors create mode 120000 Lang/Yabasic/Sorting-algorithms-Gnome-sort create mode 120000 Lang/Yabasic/Subleq create mode 120000 Lang/Yabasic/Van-Eck-sequence create mode 120000 Lang/Zig/100-prisoners create mode 120000 Lang/Zig/Binary-search create mode 120000 Lang/Zig/Case-sensitivity-of-identifiers create mode 120000 Lang/Zig/Catamorphism create mode 120000 Lang/Zig/Find-limit-of-recursion create mode 120000 Lang/Zig/Introspection create mode 120000 Lang/Zig/Levenshtein-distance create mode 120000 Lang/Zig/Man-or-boy-test create mode 120000 Lang/Zig/Read-entire-file create mode 120000 Lang/Zig/Sort-using-a-custom-comparator create mode 120000 Lang/Zig/Unicode-variable-names delete mode 100644 Task/100-doors/ALGOL-60/100-doors.alg delete mode 100644 Task/100-doors/ALGOL-W/100-doors.alg create mode 100644 Task/100-prisoners/SETL/100-prisoners.setl create mode 100644 Task/100-prisoners/Zig/100-prisoners-1.zig create mode 100644 Task/100-prisoners/Zig/100-prisoners-2.zig create mode 100644 Task/15-puzzle-game/FutureBasic/15-puzzle-game.basic create mode 100644 Task/15-puzzle-game/MiniScript/15-puzzle-game-1.mini create mode 100644 Task/15-puzzle-game/MiniScript/15-puzzle-game-2.mini create mode 100644 Task/2048/FutureBasic/2048.basic create mode 100644 Task/21-game/BASIC256/21-game.basic create mode 100644 Task/21-game/Chipmunk-Basic/21-game.basic create mode 100644 Task/21-game/PureBasic/21-game.basic create mode 100644 Task/21-game/QBasic/21-game.basic create mode 100644 Task/21-game/True-BASIC/21-game.basic create mode 100644 Task/21-game/Yabasic/21-game.basic create mode 100644 Task/4-rings-or-4-squares-puzzle/MiniScript/4-rings-or-4-squares-puzzle.mini create mode 100644 Task/A+B/Nu/a+b.nu delete mode 100644 Task/A+B/Sinclair-ZX81-BASIC/a+b-2.basic rename Task/A+B/Sinclair-ZX81-BASIC/{a+b-1.basic => a+b.basic} (100%) create mode 100644 Task/A+B/Vedit-macro-language/a+b-1.vedit create mode 100644 Task/A+B/Vedit-macro-language/a+b-2.vedit create mode 100644 Task/A+B/XBasic/a+b.basic create mode 100644 Task/ADFGVX-cipher/C++/adfgvx-cipher.cpp create mode 100644 Task/ADFGVX-cipher/Java/adfgvx-cipher.java create mode 100644 Task/AVL-tree/Emacs-Lisp/avl-tree.l create mode 100644 Task/Abbreviations-automatic/R/abbreviations-automatic.r create mode 100644 Task/Abbreviations-easy/R/abbreviations-easy.r create mode 100644 Task/Abelian-sandpile-model/MiniScript/abelian-sandpile-model.mini create mode 100644 Task/Abelian-sandpile-model/R/abelian-sandpile-model.r create mode 100644 Task/Abundant-deficient-and-perfect-number-classifications/SETL/abundant-deficient-and-perfect-number-classifications.setl create mode 100644 Task/Abundant-odd-numbers/MiniScript/abundant-odd-numbers.mini create mode 100644 Task/Accumulator-factory/MiniScript/accumulator-factory.mini create mode 100644 Task/Accumulator-factory/Ursalang/accumulator-factory.ursa create mode 100644 Task/Achilles-numbers/BASIC256/achilles-numbers.basic create mode 100644 Task/Achilles-numbers/Sidef/achilles-numbers.sidef create mode 100644 Task/Ackermann-function/Ursalang/ackermann-function.ursa create mode 100644 Task/Add-a-variable-to-a-class-instance-at-runtime/Java/add-a-variable-to-a-class-instance-at-runtime.java create mode 100644 Task/Additive-primes/MiniScript/additive-primes.mini create mode 100644 Task/Additive-primes/R/additive-primes.r create mode 100644 Task/Algebraic-data-types/Java/algebraic-data-types.java create mode 100644 Task/Align-columns/APL/align-columns.apl create mode 100644 Task/Align-columns/MiniScript/align-columns.mini create mode 100644 Task/Align-columns/SETL/align-columns.setl create mode 100644 Task/Align-columns/XPL0/align-columns.xpl0 rename Task/Almost-prime/Icon/{almost-prime.icon => almost-prime-1.icon} (100%) create mode 100644 Task/Almost-prime/Icon/almost-prime-2.icon create mode 100644 Task/Almost-prime/MiniScript/almost-prime.mini create mode 100644 Task/Almost-prime/Sidef/almost-prime-1.sidef create mode 100644 Task/Almost-prime/Sidef/almost-prime-2.sidef delete mode 100644 Task/Almost-prime/Sidef/almost-prime.sidef rename Task/Amicable-pairs/Rust/{amicable-pairs.rust => amicable-pairs-1.rust} (100%) create mode 100644 Task/Amicable-pairs/Rust/amicable-pairs-2.rust create mode 100644 Task/Amicable-pairs/SETL/amicable-pairs.setl create mode 100644 Task/Anagrams/Amazing-Hopper/anagrams.hopper create mode 100644 Task/Anagrams/MiniScript/anagrams.mini create mode 100644 Task/Angle-difference-between-two-bearings/BQN/angle-difference-between-two-bearings.bqn create mode 100644 Task/Angle-difference-between-two-bearings/Chipmunk-Basic/angle-difference-between-two-bearings.basic delete mode 100644 Task/Angle-difference-between-two-bearings/J/angle-difference-between-two-bearings-1.j delete mode 100644 Task/Angle-difference-between-two-bearings/J/angle-difference-between-two-bearings-2.j create mode 100644 Task/Angle-difference-between-two-bearings/J/angle-difference-between-two-bearings.j create mode 100644 Task/Angles-geometric-normalization-and-conversion/BBC-BASIC/angles-geometric-normalization-and-conversion.basic create mode 100644 Task/Animation/EasyLang/animation.easy create mode 100644 Task/Animation/MiniScript/animation-1.mini create mode 100644 Task/Animation/MiniScript/animation-2.mini delete mode 100644 Task/Animation/MiniScript/animation.mini create mode 100644 Task/Anonymous-recursion/Chipmunk-Basic/anonymous-recursion.basic create mode 100644 Task/Apply-a-callback-to-an-array/BQN/apply-a-callback-to-an-array.bqn create mode 100644 Task/Archimedean-spiral/BBC-BASIC/archimedean-spiral.basic create mode 100644 Task/Archimedean-spiral/MiniScript/archimedean-spiral-1.mini create mode 100644 Task/Archimedean-spiral/MiniScript/archimedean-spiral-2.mini create mode 100644 Task/Arithmetic-Integer/Chipmunk-Basic/arithmetic-integer.basic rename Task/Arithmetic-Integer/Commodore-BASIC/{arithmetic-integer-1.basic => arithmetic-integer.basic} (100%) create mode 100644 Task/Arithmetic-Integer/Dart/arithmetic-integer.dart create mode 100644 Task/Arithmetic-Integer/GW-BASIC/arithmetic-integer.basic create mode 100644 Task/Arithmetic-Integer/MSX-Basic/arithmetic-integer.basic create mode 100644 Task/Arithmetic-Integer/Minimal-BASIC/arithmetic-integer.basic create mode 100644 Task/Arithmetic-Integer/Nu/arithmetic-integer.nu create mode 100644 Task/Arithmetic-Integer/Quite-BASIC/arithmetic-integer-1.basic rename Task/Arithmetic-Integer/{Commodore-BASIC => Quite-BASIC}/arithmetic-integer-2.basic (100%) create mode 100644 Task/Arithmetic-Integer/XBasic/arithmetic-integer.basic create mode 100644 Task/Arithmetic-evaluation/Amazing-Hopper/arithmetic-evaluation.hopper create mode 100644 Task/Arithmetic-geometric-mean-Calculate-Pi/IS-BASIC/arithmetic-geometric-mean-calculate-pi.basic create mode 100644 Task/Arithmetic-geometric-mean/Gambas/arithmetic-geometric-mean.gambas create mode 100644 Task/Arithmetic-geometric-mean/Minimal-BASIC/arithmetic-geometric-mean.basic create mode 100644 Task/Arithmetic-geometric-mean/Quite-BASIC/arithmetic-geometric-mean.basic create mode 100644 Task/Arithmetic-geometric-mean/Yabasic/arithmetic-geometric-mean.basic create mode 100644 Task/Arithmetic-numbers/SETL/arithmetic-numbers.setl create mode 100644 Task/Array-concatenation/GW-BASIC/array-concatenation.basic create mode 100644 Task/Array-concatenation/Minimal-BASIC/array-concatenation.basic create mode 100644 Task/Array-concatenation/Nu/array-concatenation.nu create mode 100644 Task/Array-concatenation/Quite-BASIC/array-concatenation.basic create mode 100644 Task/Array-length/Chipmunk-Basic/array-length.basic create mode 100644 Task/Array-length/Nu/array-length.nu create mode 100644 Task/Array-length/XBasic/array-length.basic create mode 100644 Task/Arrays/Nu/arrays.nu create mode 100644 Task/Ascending-primes/Prolog/ascending-primes.pro delete mode 100644 Task/Associative-array-Creation/EasyLang/associative-array-creation-1.easy delete mode 100644 Task/Associative-array-Creation/EasyLang/associative-array-creation-2.easy create mode 100644 Task/Associative-array-Creation/EasyLang/associative-array-creation.easy create mode 100644 Task/Attractive-numbers/MiniScript/attractive-numbers.mini create mode 100644 Task/Attractive-numbers/SETL/attractive-numbers.setl create mode 100644 Task/Averages-Mean-angle/MiniScript/averages-mean-angle.mini create mode 100644 Task/Averages-Median/Amazing-Hopper/averages-median.hopper create mode 100644 Task/Averages-Mode/EasyLang/averages-mode.easy create mode 100644 Task/Averages-Pythagorean-means/BQN/averages-pythagorean-means.bqn create mode 100644 Task/Averages-Pythagorean-means/EasyLang/averages-pythagorean-means.easy create mode 100644 Task/Averages-Simple-moving-average/EasyLang/averages-simple-moving-average.easy create mode 100644 Task/B-zier-curves-Intersections/Julia/b-zier-curves-intersections.julia create mode 100644 Task/B-zier-curves-Intersections/Raku/b-zier-curves-intersections.raku create mode 100644 Task/Babbage-problem/Amazing-Hopper/babbage-problem.hopper create mode 100644 Task/Babbage-problem/Maxima/babbage-problem.maxima create mode 100644 Task/Babbage-problem/S-BASIC/babbage-problem.basic create mode 100644 Task/Babbage-problem/Vedit-macro-language/babbage-problem.vedit create mode 100644 Task/Balanced-brackets/Amazing-Hopper/balanced-brackets.hopper create mode 100644 Task/Balanced-brackets/EasyLang/balanced-brackets.easy create mode 100644 Task/Balanced-brackets/MSX-Basic/balanced-brackets.basic create mode 100644 Task/Balanced-brackets/Nu/balanced-brackets.nu create mode 100644 Task/Balanced-brackets/SETL/balanced-brackets.setl create mode 100644 Task/Balanced-brackets/True-BASIC/balanced-brackets.basic create mode 100644 Task/Benfords-law/BASIC256/benfords-law.basic create mode 100644 Task/Benfords-law/EasyLang/benfords-law.easy create mode 100644 Task/Benfords-law/FutureBasic/benfords-law.basic create mode 100644 Task/Benfords-law/Yabasic/benfords-law.basic create mode 100644 Task/Bifid-cipher/EasyLang/bifid-cipher.easy create mode 100644 Task/Bifid-cipher/Quackery/bifid-cipher.quackery create mode 100644 Task/Bin-given-limits/EasyLang/bin-given-limits.easy create mode 100644 Task/Bin-given-limits/Quackery/bin-given-limits.quackery create mode 100644 Task/Binary-digits/Chipmunk-Basic/binary-digits.basic create mode 100644 Task/Binary-digits/Draco/binary-digits.draco create mode 100644 Task/Binary-digits/MACRO-11/binary-digits.macro11 create mode 100644 Task/Binary-digits/SETL/binary-digits.setl create mode 100644 Task/Binary-search/Zig/binary-search-1.zig create mode 100644 Task/Binary-search/Zig/binary-search-2.zig create mode 100644 Task/Binary-search/Zig/binary-search-3.zig create mode 100644 Task/Binary-search/Zig/binary-search-4.zig create mode 100644 Task/Bioinformatics-Sequence-mutation/BBC-BASIC/bioinformatics-sequence-mutation.basic create mode 100644 Task/Bioinformatics-base-count/BBC-BASIC/bioinformatics-base-count.basic create mode 100644 Task/Bitmap-B-zier-curves-Cubic/MiniScript/bitmap-b-zier-curves-cubic.mini create mode 100644 Task/Bitmap-B-zier-curves-Quadratic/MiniScript/bitmap-b-zier-curves-quadratic.mini create mode 100644 Task/Bitmap-Bresenhams-line-algorithm/EasyLang/bitmap-bresenhams-line-algorithm.easy create mode 100644 Task/Bitmap-Bresenhams-line-algorithm/MiniScript/bitmap-bresenhams-line-algorithm.mini create mode 100644 Task/Bitmap-Flood-fill/MiniScript/bitmap-flood-fill.mini create mode 100644 Task/Bitmap/MiniScript/bitmap.mini create mode 100644 Task/Blum-integer/BASIC256/blum-integer.basic create mode 100644 Task/Blum-integer/Gambas/blum-integer.gambas create mode 100644 Task/Blum-integer/Haskell/blum-integer.hs create mode 100644 Task/Blum-integer/Sidef/blum-integer.sidef create mode 100644 Task/Boolean-values/S-BASIC/boolean-values.basic create mode 100644 Task/Box-the-compass/Chipmunk-Basic/box-the-compass.basic create mode 100644 Task/Box-the-compass/GW-BASIC/box-the-compass.basic create mode 100644 Task/Box-the-compass/Quite-BASIC/box-the-compass.basic create mode 100644 Task/Boyer-Moore-string-search/Yabasic/boyer-moore-string-search.basic create mode 100644 Task/Bulls-and-cows-Player/FutureBasic/bulls-and-cows-player.basic create mode 100644 Task/Bulls-and-cows/Quackery/bulls-and-cows.quackery create mode 100644 Task/Bulls-and-cows/SETL/bulls-and-cows.setl rename Task/Burrows-Wheeler-transform/Sidef/{burrows-wheeler-transform.sidef => burrows-wheeler-transform-1.sidef} (100%) create mode 100644 Task/Burrows-Wheeler-transform/Sidef/burrows-wheeler-transform-2.sidef create mode 100644 Task/CUSIP/EasyLang/cusip.easy create mode 100644 Task/Caesar-cipher/EasyLang/caesar-cipher.easy create mode 100644 Task/Calculating-the-value-of-e/BBC-BASIC/calculating-the-value-of-e.basic create mode 100644 Task/Calculating-the-value-of-e/Maxima/calculating-the-value-of-e.maxima create mode 100644 Task/Calendar/EasyLang/calendar.easy create mode 100644 Task/Call-an-object-method/FutureBasic/call-an-object-method.basic create mode 100644 Task/Camel-case-and-snake-case/FutureBasic/camel-case-and-snake-case-1.basic create mode 100644 Task/Camel-case-and-snake-case/FutureBasic/camel-case-and-snake-case-2.basic create mode 100644 Task/Cantor-set/Amazing-Hopper/cantor-set-1.hopper create mode 100644 Task/Cantor-set/Amazing-Hopper/cantor-set-2.hopper create mode 100644 Task/Cantor-set/Chipmunk-Basic/cantor-set.basic create mode 100644 Task/Cantor-set/EasyLang/cantor-set.easy create mode 100644 Task/Cantor-set/MiniScript/cantor-set.mini create mode 100644 Task/Cantor-set/QBasic/cantor-set.basic create mode 100644 Task/Cantor-set/True-BASIC/cantor-set.basic create mode 100644 Task/Cantor-set/Yabasic/cantor-set.basic create mode 100644 Task/Carmichael-3-strong-pseudoprimes/Chipmunk-Basic/carmichael-3-strong-pseudoprimes.basic create mode 100644 Task/Carmichael-3-strong-pseudoprimes/EasyLang/carmichael-3-strong-pseudoprimes.easy create mode 100644 Task/Carmichael-3-strong-pseudoprimes/Gambas/carmichael-3-strong-pseudoprimes.gambas create mode 100644 Task/Case-sensitivity-of-identifiers/Zig/case-sensitivity-of-identifiers.zig create mode 100644 Task/Casting-out-nines/BASIC256/casting-out-nines.basic create mode 100644 Task/Casting-out-nines/Chipmunk-Basic/casting-out-nines.basic create mode 100644 Task/Casting-out-nines/EasyLang/casting-out-nines.easy create mode 100644 Task/Casting-out-nines/Gambas/casting-out-nines.gambas create mode 100644 Task/Casting-out-nines/MSX-Basic/casting-out-nines.basic create mode 100644 Task/Casting-out-nines/PureBasic/casting-out-nines.basic create mode 100644 Task/Casting-out-nines/QBasic/casting-out-nines.basic create mode 100644 Task/Casting-out-nines/Run-BASIC/casting-out-nines.basic create mode 100644 Task/Casting-out-nines/True-BASIC/casting-out-nines.basic create mode 100644 Task/Casting-out-nines/XBasic/casting-out-nines.basic create mode 100644 Task/Casting-out-nines/Yabasic/casting-out-nines.basic create mode 100644 Task/Catalan-numbers-Pascals-triangle/Applesoft-BASIC/catalan-numbers-pascals-triangle.basic create mode 100644 Task/Catalan-numbers-Pascals-triangle/Chipmunk-Basic/catalan-numbers-pascals-triangle.basic create mode 100644 Task/Catalan-numbers-Pascals-triangle/MSX-Basic/catalan-numbers-pascals-triangle.basic create mode 100644 Task/Catalan-numbers-Pascals-triangle/Maxima/catalan-numbers-pascals-triangle.maxima create mode 100644 Task/Catalan-numbers-Pascals-triangle/XBasic/catalan-numbers-pascals-triangle.basic create mode 100644 Task/Catalan-numbers-Pascals-triangle/Yabasic/catalan-numbers-pascals-triangle.basic create mode 100644 Task/Catamorphism/Chipmunk-Basic/catamorphism.basic create mode 100644 Task/Catamorphism/Zig/catamorphism-1.zig create mode 100644 Task/Catamorphism/Zig/catamorphism-2.zig create mode 100644 Task/Catamorphism/Zig/catamorphism-3.zig create mode 100644 Task/Catamorphism/Zig/catamorphism-4.zig create mode 100644 Task/Chaos-game/GW-BASIC/chaos-game.basic create mode 100644 Task/Chaos-game/IS-BASIC/chaos-game.basic create mode 100644 Task/Chaos-game/MSX-Basic/chaos-game.basic create mode 100644 Task/Character-codes/Chipmunk-Basic/character-codes.basic create mode 100644 Task/Character-codes/GW-BASIC/character-codes.basic create mode 100644 Task/Character-codes/MSX-Basic/character-codes.basic create mode 100644 Task/Character-codes/Uxntal/character-codes.uxnatl create mode 100644 Task/Character-codes/XBasic/character-codes.basic create mode 100644 Task/Check-input-device-is-a-terminal/Forth/check-input-device-is-a-terminal-1.fth create mode 100644 Task/Check-input-device-is-a-terminal/Forth/check-input-device-is-a-terminal-2.fth create mode 100644 Task/Check-input-device-is-a-terminal/Forth/check-input-device-is-a-terminal-3.fth create mode 100644 Task/Check-input-device-is-a-terminal/Forth/check-input-device-is-a-terminal-4.fth create mode 100644 Task/Chinese-zodiac/EasyLang/chinese-zodiac.easy rename Task/Church-numerals/Go/{church-numerals.go => church-numerals-1.go} (100%) create mode 100644 Task/Church-numerals/Go/church-numerals-2.go create mode 100644 Task/Circles-of-given-radius-through-two-points/EasyLang/circles-of-given-radius-through-two-points.easy create mode 100644 Task/Cistercian-numerals/EasyLang/cistercian-numerals.easy create mode 100644 Task/Classes/Rhovas/classes-1.rhovas create mode 100644 Task/Classes/Rhovas/classes-2.rhovas create mode 100644 Task/Closest-pair-problem/EasyLang/closest-pair-problem.easy create mode 100644 Task/Colour-bars-Display/Uxntal/colour-bars-display.uxnatl create mode 100644 Task/Colour-pinstripe-Display/EasyLang/colour-pinstripe-display.easy create mode 100644 Task/Colour-pinstripe-Display/Uxntal/colour-pinstripe-display.uxnatl create mode 100644 Task/Combinations-and-permutations/EasyLang/combinations-and-permutations.easy create mode 100644 Task/Combinations-and-permutations/Rust/combinations-and-permutations.rust create mode 100644 Task/Comma-quibbling/EasyLang/comma-quibbling.easy create mode 100644 Task/Comma-quibbling/SETL/comma-quibbling.setl create mode 100644 Task/Command-line-arguments/Nu/command-line-arguments.nu delete mode 100644 Task/Comments/11l/comments.11l create mode 100644 Task/Compare-length-of-two-strings/GW-BASIC/compare-length-of-two-strings.basic create mode 100644 Task/Compare-length-of-two-strings/Gambas/compare-length-of-two-strings.gambas create mode 100644 Task/Compare-length-of-two-strings/MSX-Basic/compare-length-of-two-strings.basic create mode 100644 Task/Compare-length-of-two-strings/MiniScript/compare-length-of-two-strings.mini create mode 100644 Task/Compare-length-of-two-strings/XBasic/compare-length-of-two-strings.basic create mode 100644 Task/Compare-sorting-algorithms-performance/Sidef/compare-sorting-algorithms-performance.sidef create mode 100644 Task/Compile-time-calculation/Scala/compile-time-calculation-1.scala rename Task/Compile-time-calculation/Scala/{compile-time-calculation.scala => compile-time-calculation-2.scala} (100%) create mode 100644 Task/Composite-numbers-k-with-no-single-digit-factors-whose-factors-are-all-substrings-of-k/EasyLang/composite-numbers-k-with-no-single-digit-factors-whose-factors-are-all-substrings-of-k.easy create mode 100644 Task/Conditional-structures/Curto/conditional-structures-1.curto create mode 100644 Task/Conditional-structures/Curto/conditional-structures-2.curto create mode 100644 Task/Conditional-structures/Ursalang/conditional-structures-1.ursa create mode 100644 Task/Conditional-structures/Ursalang/conditional-structures-2.ursa create mode 100644 Task/Consecutive-primes-with-ascending-or-descending-differences/EasyLang/consecutive-primes-with-ascending-or-descending-differences.easy create mode 100644 Task/Constrained-random-points-on-a-circle/EasyLang/constrained-random-points-on-a-circle.easy create mode 100644 Task/Convert-decimal-number-to-rational/Ol/convert-decimal-number-to-rational.ol create mode 100644 Task/Convex-hull/XPL0/convex-hull.xpl0 create mode 100644 Task/Conways-Game-of-Life/Quackery/conways-game-of-life.quackery create mode 100644 Task/Count-in-octal/Amazing-Hopper/count-in-octal.hopper create mode 100644 Task/Count-in-octal/MiniScript/count-in-octal.mini rename Task/Count-in-octal/Python/{count-in-octal.py => count-in-octal-1.py} (100%) create mode 100644 Task/Count-in-octal/Python/count-in-octal-2.py create mode 100644 Task/Count-occurrences-of-a-substring/SETL/count-occurrences-of-a-substring.setl create mode 100644 Task/Count-the-coins/Draco/count-the-coins.draco create mode 100644 Task/Count-the-coins/FOCAL/count-the-coins.focal create mode 100644 Task/Count-the-coins/MAD/count-the-coins.mad create mode 100644 Task/Count-the-coins/SETL/count-the-coins.setl create mode 100644 Task/Create-an-object-at-a-given-address/FutureBasic/create-an-object-at-a-given-address.basic create mode 100644 Task/Currency/BBC-BASIC/currency.basic create mode 100644 Task/Cyclops-numbers/BBC-BASIC/cyclops-numbers.basic create mode 100644 Task/Cyclops-numbers/EasyLang/cyclops-numbers.easy create mode 100644 Task/Cyclops-numbers/Elixir/cyclops-numbers.elixir create mode 100644 Task/Deal-cards-for-FreeCell/EasyLang/deal-cards-for-freecell.easy create mode 100644 Task/Deal-cards-for-FreeCell/Quackery/deal-cards-for-freecell.quackery create mode 100644 Task/Deceptive-numbers/AWK/deceptive-numbers.awk delete mode 100644 Task/Deceptive-numbers/J/deceptive-numbers-1.j delete mode 100644 Task/Deceptive-numbers/J/deceptive-numbers-2.j delete mode 100644 Task/Deceptive-numbers/J/deceptive-numbers-3.j create mode 100644 Task/Deceptive-numbers/J/deceptive-numbers.j create mode 100644 Task/Deepcopy/FutureBasic/deepcopy.basic create mode 100644 Task/Descending-primes/EasyLang/descending-primes.easy create mode 100644 Task/Descending-primes/Prolog/descending-primes.pro create mode 100644 Task/Determine-if-a-string-has-all-the-same-characters/Haskell/determine-if-a-string-has-all-the-same-characters-3.hs create mode 100644 Task/Determine-if-a-string-has-all-unique-characters/BASIC256/determine-if-a-string-has-all-unique-characters.basic create mode 100644 Task/Determine-if-a-string-has-all-unique-characters/Chipmunk-Basic/determine-if-a-string-has-all-unique-characters.basic create mode 100644 Task/Determine-if-a-string-has-all-unique-characters/PureBasic/determine-if-a-string-has-all-unique-characters.basic create mode 100644 Task/Determine-if-a-string-has-all-unique-characters/Quackery/determine-if-a-string-has-all-unique-characters.quackery create mode 100644 Task/Determine-if-a-string-is-collapsible/EasyLang/determine-if-a-string-is-collapsible.easy create mode 100644 Task/Determine-if-a-string-is-numeric/BQN/determine-if-a-string-is-numeric.bqn create mode 100644 Task/Determine-if-a-string-is-numeric/Nu/determine-if-a-string-is-numeric.nu create mode 100644 Task/Determine-if-a-string-is-squeezable/EasyLang/determine-if-a-string-is-squeezable.easy create mode 100644 Task/Dice-game-probabilities/EasyLang/dice-game-probabilities.easy delete mode 100644 Task/Digital-root/J/digital-root-5.j delete mode 100644 Task/Digital-root/J/digital-root-6.j create mode 100644 Task/Digital-root/MiniScript/digital-root.mini create mode 100644 Task/Digital-root/S-BASIC/digital-root.basic create mode 100644 Task/Dijkstras-algorithm/Fortran/dijkstras-algorithm.f create mode 100644 Task/Disarium-numbers/Amazing-Hopper/disarium-numbers.hopper create mode 100644 Task/Disarium-numbers/Chipmunk-Basic/disarium-numbers.basic create mode 100644 Task/Disarium-numbers/EasyLang/disarium-numbers.easy create mode 100644 Task/Disarium-numbers/MiniScript/disarium-numbers.mini create mode 100644 Task/Disarium-numbers/SETL/disarium-numbers.setl create mode 100644 Task/Discordian-date/EasyLang/discordian-date.easy create mode 100644 Task/Doomsday-rule/EasyLang/doomsday-rule.easy create mode 100644 Task/Doomsday-rule/UNIX-Shell/doomsday-rule.sh create mode 100644 Task/Dot-product/Amazing-Hopper/dot-product-1.hopper create mode 100644 Task/Dot-product/Amazing-Hopper/dot-product-2.hopper create mode 100644 Task/Dot-product/Amazing-Hopper/dot-product-3.hopper create mode 100644 Task/Draw-a-clock/Evaldraw/draw-a-clock.evaldraw create mode 100644 Task/Draw-a-clock/Quackery/draw-a-clock.quackery rename Task/Draw-a-clock/Raku/{draw-a-clock.raku => draw-a-clock-1.raku} (100%) create mode 100644 Task/Draw-a-clock/Raku/draw-a-clock-2.raku create mode 100644 Task/Draw-a-clock/Raku/draw-a-clock-3.raku rename Task/Draw-a-clock/Yabasic/{draw-a-clock.basic => draw-a-clock-1.basic} (100%) create mode 100644 Task/Draw-a-clock/Yabasic/draw-a-clock-2.basic rename Task/Draw-a-pixel/C/{draw-a-pixel.c => draw-a-pixel-1.c} (100%) create mode 100644 Task/Draw-a-pixel/C/draw-a-pixel-2.c rename Task/Draw-a-pixel/Perl/{draw-a-pixel.pl => draw-a-pixel-1.pl} (100%) create mode 100644 Task/Draw-a-pixel/Perl/draw-a-pixel-2.pl create mode 100644 Task/Draw-a-pixel/Perl/draw-a-pixel-3.pl create mode 100644 Task/Draw-a-pixel/Uxntal/draw-a-pixel.uxnatl create mode 100644 Task/Dutch-national-flag-problem/EasyLang/dutch-national-flag-problem.easy create mode 100644 Task/Egyptian-division/Chipmunk-Basic/egyptian-division.basic create mode 100644 Task/Egyptian-division/EasyLang/egyptian-division.easy create mode 100644 Task/Egyptian-division/GW-BASIC/egyptian-division.basic create mode 100644 Task/Egyptian-division/MSX-Basic/egyptian-division.basic create mode 100644 Task/Egyptian-division/XBasic/egyptian-division.basic create mode 100644 Task/Elementary-cellular-automaton/EasyLang/elementary-cellular-automaton.easy create mode 100644 Task/Elementary-cellular-automaton/MiniScript/elementary-cellular-automaton.mini create mode 100644 Task/Emirp-primes/BBC-BASIC/emirp-primes.basic create mode 100644 Task/Empty-program/EasyLang/empty-program.easy create mode 100644 Task/Empty-string/EMal/empty-string.emal create mode 100644 Task/Entropy-Narcissist/BBC-BASIC/entropy-narcissist.basic create mode 100644 Task/Entropy/SETL/entropy.setl create mode 100644 Task/Environment-variables/EMal/environment-variables.emal create mode 100644 Task/Environment-variables/Nu/environment-variables.nu create mode 100644 Task/Equal-prime-and-composite-sums/ALGOL-68/equal-prime-and-composite-sums.alg create mode 100644 Task/Equal-prime-and-composite-sums/BASIC256/equal-prime-and-composite-sums.basic create mode 100644 Task/Equal-prime-and-composite-sums/Gambas/equal-prime-and-composite-sums.gambas create mode 100644 Task/Equal-prime-and-composite-sums/Lua/equal-prime-and-composite-sums.lua create mode 100644 Task/Equal-prime-and-composite-sums/PureBasic/equal-prime-and-composite-sums.basic create mode 100644 Task/Equal-prime-and-composite-sums/Yabasic/equal-prime-and-composite-sums.basic create mode 100644 Task/Erd-s-Nicolas-numbers/Sidef/erd-s-nicolas-numbers.sidef create mode 100644 Task/Ethiopian-multiplication/Chipmunk-Basic/ethiopian-multiplication.basic create mode 100644 Task/Euclid-Mullin-sequence/EasyLang/euclid-mullin-sequence.easy create mode 100644 Task/Euclid-Mullin-sequence/SETL/euclid-mullin-sequence.setl create mode 100644 Task/Evaluate-binomial-coefficients/EasyLang/evaluate-binomial-coefficients.easy create mode 100644 Task/Events/EasyLang/events.easy create mode 100644 Task/Evolutionary-algorithm/SETL/evolutionary-algorithm.setl create mode 100644 Task/Execute-Brain-/EasyLang/execute-brain-.easy create mode 100644 Task/Execute-Brain-/R/execute-brain-.r create mode 100644 Task/Execute-Brain-/SETL/execute-brain-.setl create mode 100644 Task/Execute-Computer-Zero/EasyLang/execute-computer-zero.easy create mode 100644 Task/Execute-HQ9+/EasyLang/execute-hq9+.easy create mode 100644 Task/Execute-SNUSP/EasyLang/execute-snusp.easy create mode 100644 Task/Execute-a-Markov-algorithm/SETL/execute-a-markov-algorithm.setl create mode 100644 Task/Exponentiation-order/ALGOL-M/exponentiation-order.alg create mode 100644 Task/Exponentiation-order/EasyLang/exponentiation-order.easy create mode 100644 Task/Exponentiation-order/S-BASIC/exponentiation-order.basic create mode 100644 Task/Exponentiation-with-infix-operators-in-or-operating-on-the-base/EasyLang/exponentiation-with-infix-operators-in-or-operating-on-the-base.easy create mode 100644 Task/Extensible-prime-generator/EasyLang/extensible-prime-generator.easy create mode 100644 Task/Extreme-floating-point-values/EasyLang/extreme-floating-point-values.easy create mode 100644 Task/Factorial-base-numbers-indexing-permutations-of-a-collection/Java/factorial-base-numbers-indexing-permutations-of-a-collection.java create mode 100644 Task/Factorial-primes/EasyLang/factorial-primes.easy create mode 100644 Task/Factorial-primes/PureBasic/factorial-primes.basic create mode 100644 Task/Factorial/Nu/factorial.nu create mode 100644 Task/Factorial/Uxntal/factorial.uxnatl create mode 100644 Task/Factors-of-an-integer/Gambas/factors-of-an-integer.gambas rename Task/Factors-of-an-integer/Icon/{factors-of-an-integer.icon => factors-of-an-integer-1.icon} (100%) create mode 100644 Task/Factors-of-an-integer/Icon/factors-of-an-integer-2.icon create mode 100644 Task/Factors-of-an-integer/XBasic/factors-of-an-integer.basic create mode 100644 Task/Feigenbaum-constant-calculation/EasyLang/feigenbaum-constant-calculation.easy create mode 100644 Task/Fibonacci-sequence/BootBASIC/fibonacci-sequence.basic create mode 100644 Task/Fibonacci-sequence/J/fibonacci-sequence-3.j create mode 100644 Task/Fibonacci-sequence/Pascal/fibonacci-sequence-6.pas create mode 100644 Task/Fibonacci-word/SETL/fibonacci-word.setl create mode 100644 Task/File-input-output/Nu/file-input-output.nu create mode 100644 Task/File-input-output/S-BASIC/file-input-output.basic create mode 100644 Task/File-input-output/Uxntal/file-input-output.uxnatl create mode 100644 Task/Find-if-a-point-is-within-a-triangle/JavaScript/find-if-a-point-is-within-a-triangle.js create mode 100644 Task/Find-if-a-point-is-within-a-triangle/Rust/find-if-a-point-is-within-a-triangle.rust create mode 100644 Task/Find-limit-of-recursion/Chipmunk-Basic/find-limit-of-recursion.basic create mode 100644 Task/Find-limit-of-recursion/Gambas/find-limit-of-recursion.gambas create mode 100644 Task/Find-limit-of-recursion/Minimal-BASIC/find-limit-of-recursion.basic create mode 100644 Task/Find-limit-of-recursion/Quite-BASIC/find-limit-of-recursion.basic create mode 100644 Task/Find-limit-of-recursion/Uxntal/find-limit-of-recursion.uxnatl create mode 100644 Task/Find-limit-of-recursion/XPL0/find-limit-of-recursion.xpl0 create mode 100644 Task/Find-limit-of-recursion/Zig/find-limit-of-recursion-1.zig create mode 100644 Task/Find-limit-of-recursion/Zig/find-limit-of-recursion-2.zig create mode 100644 Task/Find-limit-of-recursion/Zig/find-limit-of-recursion-3.zig create mode 100644 Task/Find-the-last-Sunday-of-each-month/EasyLang/find-the-last-sunday-of-each-month.easy create mode 100644 Task/Find-the-last-Sunday-of-each-month/FutureBasic/find-the-last-sunday-of-each-month.basic create mode 100644 Task/First-perfect-square-in-base-n-with-n-unique-digits/Quackery/first-perfect-square-in-base-n-with-n-unique-digits.quackery create mode 100644 Task/FizzBuzz/EMal/fizzbuzz.emal delete mode 100644 Task/FizzBuzz/Euler/fizzbuzz.euler create mode 100644 Task/FizzBuzz/Mathematica/fizzbuzz-6.math create mode 100644 Task/FizzBuzz/Mathematica/fizzbuzz-7.math create mode 100644 Task/FizzBuzz/Nu/fizzbuzz.nu create mode 100644 Task/FizzBuzz/SETL/fizzbuzz.setl delete mode 100644 Task/FizzBuzz/YAMLScript/fizzbuzz-1.ys delete mode 100644 Task/FizzBuzz/YAMLScript/fizzbuzz-2.ys delete mode 100644 Task/FizzBuzz/YAMLScript/fizzbuzz-3.ys create mode 100644 Task/FizzBuzz/YAMLScript/fizzbuzz.ys create mode 100644 Task/Floyd-Warshall-algorithm/J/floyd-warshall-algorithm-5.j create mode 100644 Task/Formatted-numeric-output/Amazing-Hopper/formatted-numeric-output.hopper create mode 100644 Task/Four-bit-adder/EasyLang/four-bit-adder.easy create mode 100644 Task/Four-bit-adder/Quackery/four-bit-adder.quackery create mode 100644 Task/Four-is-magic/FutureBasic/four-is-magic.basic create mode 100644 Task/Fractal-tree/MiniScript/fractal-tree.mini create mode 100644 Task/Fusc-sequence/BBC-BASIC/fusc-sequence.basic rename Task/GUI-component-interaction/Run-BASIC/{gui-component-interaction.basic => gui-component-interaction-1.basic} (100%) create mode 100644 Task/GUI-component-interaction/Run-BASIC/gui-component-interaction-2.basic create mode 100644 Task/Gapful-numbers/Elixir/gapful-numbers.elixir create mode 100644 Task/Generate-Chess960-starting-position/BBC-BASIC/generate-chess960-starting-position.basic create mode 100644 Task/Generate-Chess960-starting-position/UNIX-Shell/generate-chess960-starting-position.sh delete mode 100644 Task/Giuga-numbers/Euler/giuga-numbers.euler create mode 100644 Task/Giuga-numbers/Lua/giuga-numbers.lua create mode 100644 Task/Giuga-numbers/Sidef/giuga-numbers.sidef rename Task/Goldbachs-comet/FreeBASIC/{goldbachs-comet-1.basic => goldbachs-comet.basic} (100%) create mode 100644 Task/Goldbachs-comet/Gambas/goldbachs-comet-1.gambas rename Task/Goldbachs-comet/{FreeBASIC/goldbachs-comet-2.basic => Gambas/goldbachs-comet-2.gambas} (100%) create mode 100644 Task/Goldbachs-comet/Yabasic/goldbachs-comet-1.basic create mode 100644 Task/Goldbachs-comet/Yabasic/goldbachs-comet-2.basic create mode 100644 Task/Golden-ratio-Convergence/Sidef/golden-ratio-convergence.sidef create mode 100644 Task/Grayscale-image/MiniScript/grayscale-image.mini create mode 100644 Task/Greatest-common-divisor/Chipmunk-Basic/greatest-common-divisor.basic create mode 100644 Task/Guess-the-number-With-feedback/Chipmunk-Basic/guess-the-number-with-feedback.basic create mode 100644 Task/Guess-the-number-With-feedback/FutureBasic/guess-the-number-with-feedback.basic create mode 100644 Task/Guess-the-number-With-feedback/GW-BASIC/guess-the-number-with-feedback.basic create mode 100644 Task/Guess-the-number-With-feedback/MSX-Basic/guess-the-number-with-feedback.basic create mode 100644 Task/HTTP/JavaScript/http-6.js create mode 100644 Task/HTTP/PowerShell/http-1.psh rename Task/HTTP/PowerShell/{http.psh => http-2.psh} (100%) create mode 100644 Task/HTTPS/JavaScript/https-3.js create mode 100644 Task/HTTPS/PowerShell/https-1.psh rename Task/HTTPS/PowerShell/{https.psh => https-2.psh} (100%) create mode 100644 Task/Hailstone-sequence/Amazing-Hopper/hailstone-sequence.hopper create mode 100644 Task/Hailstone-sequence/EasyLang/hailstone-sequence.easy create mode 100644 Task/Hailstone-sequence/MiniScript/hailstone-sequence-1.mini create mode 100644 Task/Hailstone-sequence/MiniScript/hailstone-sequence-2.mini create mode 100644 Task/Hailstone-sequence/SETL/hailstone-sequence.setl create mode 100644 Task/Harshad-or-Niven-series/EasyLang/harshad-or-niven-series.easy create mode 100644 Task/Harshad-or-Niven-series/SETL/harshad-or-niven-series.setl create mode 100644 Task/Haversine-formula/Amazing-Hopper/haversine-formula.hopper create mode 100644 Task/Haversine-formula/EasyLang/haversine-formula.easy create mode 100644 Task/Haversine-formula/Gambas/haversine-formula.gambas create mode 100644 Task/Hello-world-Graphical/MiniScript/hello-world-graphical.mini create mode 100644 Task/Hello-world-Graphical/Quackery/hello-world-graphical.quackery create mode 100644 Task/Hello-world-Graphical/Sidef/hello-world-graphical-3.sidef create mode 100644 Task/Hello-world-Newline-omission/J/hello-world-newline-omission-3.j create mode 100644 Task/Hello-world-Newline-omission/Uxntal/hello-world-newline-omission.uxnatl create mode 100644 Task/Hello-world-Standard-error/Lean/hello-world-standard-error.lean create mode 100644 Task/Hello-world-Standard-error/Nu/hello-world-standard-error.nu create mode 100644 Task/Hello-world-Standard-error/Zig/hello-world-standard-error-1.zig create mode 100644 Task/Hello-world-Standard-error/Zig/hello-world-standard-error-2.zig delete mode 100644 Task/Hello-world-Standard-error/Zig/hello-world-standard-error.zig create mode 100644 Task/Hello-world-Text/Curto/hello-world-text.curto create mode 100644 Task/Hello-world-Text/KL1/hello-world-text.kl1 create mode 100644 Task/Hello-world-Text/Nu/hello-world-text.nu create mode 100644 Task/Hello-world-Text/Rhovas/hello-world-text.rhovas create mode 100644 Task/Hello-world-Text/Ursalang/hello-world-text.ursa create mode 100644 Task/Hello-world-Text/Uxntal/hello-world-text.uxnatl create mode 100644 Task/Heronian-triangles/XPL0/heronian-triangles.xpl0 create mode 100644 Task/Hex-words/BBC-BASIC/hex-words.basic create mode 100644 Task/Hex-words/MiniScript/hex-words.mini create mode 100644 Task/Hex-words/Ring/hex-words.ring create mode 100644 Task/Hickerson-series-of-almost-integers/BBC-BASIC/hickerson-series-of-almost-integers.basic delete mode 100644 Task/Hickerson-series-of-almost-integers/Wren/hickerson-series-of-almost-integers-1.wren delete mode 100644 Task/Hickerson-series-of-almost-integers/Wren/hickerson-series-of-almost-integers-2.wren create mode 100644 Task/Hickerson-series-of-almost-integers/Wren/hickerson-series-of-almost-integers.wren create mode 100644 Task/Hofstadter-Figure-Figure-sequences/Quackery/hofstadter-figure-figure-sequences.quackery create mode 100644 Task/Hofstadter-Figure-Figure-sequences/SETL/hofstadter-figure-figure-sequences.setl create mode 100644 Task/Hofstadter-Q-sequence/EasyLang/hofstadter-q-sequence.easy create mode 100644 Task/Hofstadter-Q-sequence/SETL/hofstadter-q-sequence.setl create mode 100644 Task/Home-primes/Python/home-primes.py create mode 100644 Task/Humble-numbers/BBC-BASIC/humble-numbers.basic create mode 100644 Task/Humble-numbers/EasyLang/humble-numbers.easy create mode 100644 Task/Hunt-the-Wumpus/Quackery/hunt-the-wumpus.quackery create mode 100644 Task/I-before-E-except-after-C/BBC-BASIC/i-before-e-except-after-c.basic create mode 100644 Task/I-before-E-except-after-C/SETL/i-before-e-except-after-c.setl create mode 100644 Task/ISBN13-check-digit/MiniScript/isbn13-check-digit.mini create mode 100644 Task/Image-noise/EasyLang/image-noise.easy create mode 100644 Task/Image-noise/MiniScript/image-noise.mini create mode 100644 Task/Infinity/EasyLang/infinity.easy delete mode 100644 Task/Inheritance-Single/ActionScript/inheritance-single-1.as delete mode 100644 Task/Inheritance-Single/ActionScript/inheritance-single-2.as delete mode 100644 Task/Inheritance-Single/ActionScript/inheritance-single-3.as delete mode 100644 Task/Inheritance-Single/ActionScript/inheritance-single-4.as delete mode 100644 Task/Inheritance-Single/ActionScript/inheritance-single-5.as create mode 100644 Task/Inheritance-Single/ActionScript/inheritance-single.as delete mode 100644 Task/Inheritance-Single/Aikido/inheritance-single-1.aikido delete mode 100644 Task/Inheritance-Single/Aikido/inheritance-single-2.aikido delete mode 100644 Task/Inheritance-Single/Aikido/inheritance-single-3.aikido delete mode 100644 Task/Inheritance-Single/Aikido/inheritance-single-4.aikido delete mode 100644 Task/Inheritance-Single/Aikido/inheritance-single-5.aikido create mode 100644 Task/Inheritance-Single/Aikido/inheritance-single.aikido delete mode 100644 Task/Inheritance-Single/ChucK/inheritance-single-1.chuck delete mode 100644 Task/Inheritance-Single/ChucK/inheritance-single-2.chuck delete mode 100644 Task/Inheritance-Single/ChucK/inheritance-single-3.chuck delete mode 100644 Task/Inheritance-Single/ChucK/inheritance-single-4.chuck delete mode 100644 Task/Inheritance-Single/ChucK/inheritance-single-5.chuck create mode 100644 Task/Inheritance-Single/ChucK/inheritance-single.chuck delete mode 100644 Task/Inheritance-Single/Eiffel/inheritance-single-1.e delete mode 100644 Task/Inheritance-Single/Eiffel/inheritance-single-2.e delete mode 100644 Task/Inheritance-Single/Eiffel/inheritance-single-3.e delete mode 100644 Task/Inheritance-Single/Eiffel/inheritance-single-4.e delete mode 100644 Task/Inheritance-Single/Eiffel/inheritance-single-5.e create mode 100644 Task/Inheritance-Single/Eiffel/inheritance-single.e delete mode 100644 Task/Inheritance-Single/Groovy/inheritance-single-1.groovy delete mode 100644 Task/Inheritance-Single/Groovy/inheritance-single-2.groovy delete mode 100644 Task/Inheritance-Single/Groovy/inheritance-single-3.groovy delete mode 100644 Task/Inheritance-Single/Groovy/inheritance-single-4.groovy delete mode 100644 Task/Inheritance-Single/Groovy/inheritance-single-5.groovy create mode 100644 Task/Inheritance-Single/Groovy/inheritance-single.groovy delete mode 100644 Task/Inheritance-Single/Haxe/inheritance-single-3.haxe delete mode 100644 Task/Inheritance-Single/Haxe/inheritance-single-4.haxe delete mode 100644 Task/Inheritance-Single/Haxe/inheritance-single-5.haxe delete mode 100644 Task/Inheritance-Single/Haxe/inheritance-single-6.haxe delete mode 100644 Task/Inheritance-Single/J/inheritance-single-3.j delete mode 100644 Task/Inheritance-Single/J/inheritance-single-4.j delete mode 100644 Task/Inheritance-Single/J/inheritance-single-5.j delete mode 100644 Task/Inheritance-Single/J/inheritance-single-6.j delete mode 100644 Task/Inheritance-Single/Java/inheritance-single-1.java delete mode 100644 Task/Inheritance-Single/Java/inheritance-single-2.java delete mode 100644 Task/Inheritance-Single/Java/inheritance-single-3.java delete mode 100644 Task/Inheritance-Single/Java/inheritance-single-4.java delete mode 100644 Task/Inheritance-Single/Java/inheritance-single-5.java create mode 100644 Task/Inheritance-Single/Java/inheritance-single.java delete mode 100644 Task/Inheritance-Single/JavaScript/inheritance-single-1.js delete mode 100644 Task/Inheritance-Single/JavaScript/inheritance-single-2.js delete mode 100644 Task/Inheritance-Single/JavaScript/inheritance-single-3.js delete mode 100644 Task/Inheritance-Single/JavaScript/inheritance-single-4.js delete mode 100644 Task/Inheritance-Single/JavaScript/inheritance-single-5.js delete mode 100644 Task/Inheritance-Single/JavaScript/inheritance-single-6.js create mode 100644 Task/Inheritance-Single/JavaScript/inheritance-single.js delete mode 100644 Task/Inheritance-Single/Lingo/inheritance-single-1.lingo delete mode 100644 Task/Inheritance-Single/Lingo/inheritance-single-2.lingo delete mode 100644 Task/Inheritance-Single/Lingo/inheritance-single-3.lingo delete mode 100644 Task/Inheritance-Single/Lingo/inheritance-single-4.lingo delete mode 100644 Task/Inheritance-Single/Lingo/inheritance-single-5.lingo create mode 100644 Task/Inheritance-Single/Lingo/inheritance-single.lingo delete mode 100644 Task/Inheritance-Single/Lisaac/inheritance-single-1.lisaac delete mode 100644 Task/Inheritance-Single/Lisaac/inheritance-single-2.lisaac delete mode 100644 Task/Inheritance-Single/Lisaac/inheritance-single-3.lisaac delete mode 100644 Task/Inheritance-Single/Lisaac/inheritance-single-4.lisaac delete mode 100644 Task/Inheritance-Single/Lisaac/inheritance-single-5.lisaac create mode 100644 Task/Inheritance-Single/Lisaac/inheritance-single.lisaac delete mode 100644 Task/Inheritance-Single/OCaml/inheritance-single-1.ocaml delete mode 100644 Task/Inheritance-Single/OCaml/inheritance-single-2.ocaml delete mode 100644 Task/Inheritance-Single/OCaml/inheritance-single-3.ocaml delete mode 100644 Task/Inheritance-Single/OCaml/inheritance-single-4.ocaml delete mode 100644 Task/Inheritance-Single/OCaml/inheritance-single-5.ocaml create mode 100644 Task/Inheritance-Single/OCaml/inheritance-single.ocaml delete mode 100644 Task/Inheritance-Single/Perl/inheritance-single-1.pl delete mode 100644 Task/Inheritance-Single/Perl/inheritance-single-2.pl delete mode 100644 Task/Inheritance-Single/Perl/inheritance-single-3.pl delete mode 100644 Task/Inheritance-Single/Perl/inheritance-single-4.pl delete mode 100644 Task/Inheritance-Single/Perl/inheritance-single-5.pl delete mode 100644 Task/Inheritance-Single/Perl/inheritance-single-6.pl create mode 100644 Task/Inheritance-Single/Perl/inheritance-single.pl delete mode 100644 Task/Inheritance-Single/Self/inheritance-single-1.self delete mode 100644 Task/Inheritance-Single/Self/inheritance-single-2.self delete mode 100644 Task/Inheritance-Single/Self/inheritance-single-3.self delete mode 100644 Task/Inheritance-Single/Self/inheritance-single-4.self delete mode 100644 Task/Inheritance-Single/Self/inheritance-single-5.self create mode 100644 Task/Inheritance-Single/Self/inheritance-single.self create mode 100644 Task/Integer-comparison/Nu/integer-comparison.nu create mode 100644 Task/Integer-sequence/Java/integer-sequence-3.java create mode 100644 Task/Integer-sequence/Java/integer-sequence-4.java create mode 100644 Task/Integer-sequence/Ursalang/integer-sequence.ursa create mode 100644 Task/Introspection/Zig/introspection-1.zig create mode 100644 Task/Introspection/Zig/introspection-2.zig create mode 100644 Task/Isqrt-integer-square-root-of-X/EasyLang/isqrt-integer-square-root-of-x.easy create mode 100644 Task/Isqrt-integer-square-root-of-X/SETL/isqrt-integer-square-root-of-x.setl rename Task/JSON/Hoon/{json.hoon => json-1.hoon} (100%) create mode 100644 Task/JSON/Hoon/json-2.hoon create mode 100644 Task/Jacobi-symbol/ALGOL-68/jacobi-symbol.alg create mode 100644 Task/Jacobi-symbol/ALGOL-W/jacobi-symbol.alg create mode 100644 Task/Jacobi-symbol/Lua/jacobi-symbol.lua create mode 100644 Task/Jacobi-symbol/PL-M/jacobi-symbol.plm create mode 100644 Task/Jacobsthal-numbers/SETL/jacobsthal-numbers.setl create mode 100644 Task/Jaro-similarity/BBC-BASIC/jaro-similarity.basic delete mode 100644 Task/Jensens-Device/Euler/jensens-device.euler create mode 100644 Task/Jewels-and-stones/SETL/jewels-and-stones.setl create mode 100644 Task/Josephus-problem/EDSAC-order-code/josephus-problem.edsac rename Task/Josephus-problem/Quite-BASIC/{josephus-problem.basic => josephus-problem-1.basic} (100%) create mode 100644 Task/Josephus-problem/Quite-BASIC/josephus-problem-2.basic create mode 100644 Task/Julia-set/BBC-BASIC/julia-set.basic create mode 100644 Task/Knapsack-problem-Unbounded/XPL0/knapsack-problem-unbounded.xpl0 create mode 100644 Task/Knuth-shuffle/Amazing-Hopper/knuth-shuffle.hopper create mode 100644 Task/Knuth-shuffle/GW-BASIC/knuth-shuffle.basic create mode 100644 Task/Knuth-shuffle/Minimal-BASIC/knuth-shuffle.basic create mode 100644 Task/Knuth-shuffle/SETL/knuth-shuffle.setl create mode 100644 Task/Largest-proper-divisor-of-n/D/largest-proper-divisor-of-n.d create mode 100644 Task/Largest-proper-divisor-of-n/Lua/largest-proper-divisor-of-n.lua rename Task/Largest-proper-divisor-of-n/Pascal/{largest-proper-divisor-of-n.pas => largest-proper-divisor-of-n-1.pas} (100%) create mode 100644 Task/Largest-proper-divisor-of-n/Pascal/largest-proper-divisor-of-n-2.pas rename Task/Largest-proper-divisor-of-n/Quite-BASIC/{largest-proper-divisor-of-n-1.basic => largest-proper-divisor-of-n.basic} (100%) create mode 100644 Task/Largest-proper-divisor-of-n/Run-BASIC/largest-proper-divisor-of-n-1.basic rename Task/Largest-proper-divisor-of-n/{Quite-BASIC => Run-BASIC}/largest-proper-divisor-of-n-2.basic (100%) create mode 100644 Task/Largest-proper-divisor-of-n/Rust/largest-proper-divisor-of-n-1.rust create mode 100644 Task/Largest-proper-divisor-of-n/Rust/largest-proper-divisor-of-n-2.rust create mode 100644 Task/Largest-proper-divisor-of-n/Sidef/largest-proper-divisor-of-n.sidef create mode 100644 Task/Last-Friday-of-each-month/BBC-BASIC/last-friday-of-each-month.basic create mode 100644 Task/Last-Friday-of-each-month/EasyLang/last-friday-of-each-month.easy create mode 100644 Task/Leap-year/BQN/leap-year-1.bqn create mode 100644 Task/Leap-year/BQN/leap-year-2.bqn create mode 100644 Task/Leap-year/BQN/leap-year-3.bqn create mode 100644 Task/Leap-year/EasyLang/leap-year.easy create mode 100644 Task/Levenshtein-distance/IS-BASIC/levenshtein-distance.basic create mode 100644 Task/Levenshtein-distance/Zig/levenshtein-distance.zig delete mode 100644 Task/List-comprehensions/11l/list-comprehensions.11l delete mode 100644 Task/List-comprehensions/AppleScript/list-comprehensions-2.applescript rename Task/List-comprehensions/AppleScript/{list-comprehensions-1.applescript => list-comprehensions.applescript} (100%) delete mode 100644 Task/List-comprehensions/C/list-comprehensions-1.c delete mode 100644 Task/List-comprehensions/C/list-comprehensions-2.c rename Task/List-comprehensions/C/{list-comprehensions-3.c => list-comprehensions.c} (95%) delete mode 100644 Task/List-comprehensions/CoffeeScript/list-comprehensions-2.coffee rename Task/List-comprehensions/CoffeeScript/{list-comprehensions-1.coffee => list-comprehensions.coffee} (58%) create mode 100644 Task/Literals-Integer/Uxntal/literals-integer.uxnatl create mode 100644 Task/Logical-operations/Chipmunk-Basic/logical-operations.basic create mode 100644 Task/Logical-operations/GW-BASIC/logical-operations.basic create mode 100644 Task/Logical-operations/MSX-Basic/logical-operations.basic create mode 100644 Task/Logical-operations/Nu/logical-operations.nu create mode 100644 Task/Logical-operations/Quite-BASIC/logical-operations.basic create mode 100644 Task/Long-multiplication/J/long-multiplication-10.j create mode 100644 Task/Longest-common-substring/APL/longest-common-substring-1.apl create mode 100644 Task/Longest-common-substring/APL/longest-common-substring-2.apl create mode 100644 Task/Longest-common-substring/Cowgol/longest-common-substring.cowgol create mode 100644 Task/Longest-common-substring/Quackery/longest-common-substring.quackery create mode 100644 Task/Longest-common-substring/SETL/longest-common-substring.setl create mode 100644 Task/Longest-string-challenge/BASIC256/longest-string-challenge.basic create mode 100644 Task/Longest-string-challenge/BQN/longest-string-challenge.bqn create mode 100644 Task/Longest-string-challenge/Chipmunk-Basic/longest-string-challenge.basic create mode 100644 Task/Longest-string-challenge/GW-BASIC/longest-string-challenge.basic create mode 100644 Task/Longest-string-challenge/MSX-Basic/longest-string-challenge.basic create mode 100644 Task/Longest-string-challenge/MiniScript/longest-string-challenge.mini rename Task/Longest-string-challenge/{BASIC => QBasic}/longest-string-challenge.basic (100%) create mode 100644 Task/Longest-string-challenge/Quackery/longest-string-challenge.quackery create mode 100644 Task/Look-and-say-sequence/EasyLang/look-and-say-sequence.easy create mode 100644 Task/Look-and-say-sequence/SETL/look-and-say-sequence.setl create mode 100644 Task/Loop-over-multiple-arrays-simultaneously/EasyLang/loop-over-multiple-arrays-simultaneously.easy create mode 100644 Task/Loop-over-multiple-arrays-simultaneously/Zig/loop-over-multiple-arrays-simultaneously-1.zig create mode 100644 Task/Loop-over-multiple-arrays-simultaneously/Zig/loop-over-multiple-arrays-simultaneously-2.zig create mode 100644 Task/Loop-over-multiple-arrays-simultaneously/Zig/loop-over-multiple-arrays-simultaneously-3.zig create mode 100644 Task/Loop-over-multiple-arrays-simultaneously/Zig/loop-over-multiple-arrays-simultaneously-4.zig create mode 100644 Task/Loop-over-multiple-arrays-simultaneously/Zig/loop-over-multiple-arrays-simultaneously-5.zig delete mode 100644 Task/Loop-over-multiple-arrays-simultaneously/Zig/loop-over-multiple-arrays-simultaneously.zig create mode 100644 Task/Loops-Break/BootBASIC/loops-break.basic create mode 100644 Task/Loops-Break/Nu/loops-break.nu create mode 100644 Task/Loops-Continue/Nu/loops-continue.nu create mode 100644 Task/Loops-Do-while/Nu/loops-do-while.nu create mode 100644 Task/Loops-Downward-for/Nu/loops-downward-for.nu create mode 100644 Task/Loops-For-with-a-specified-step/EMal/loops-for-with-a-specified-step.emal create mode 100644 Task/Loops-For-with-a-specified-step/Nu/loops-for-with-a-specified-step.nu create mode 100644 Task/Loops-For/EMal/loops-for.emal create mode 100644 Task/Loops-For/Nu/loops-for.nu create mode 100644 Task/Loops-Foreach/Nu/loops-foreach.nu create mode 100644 Task/Loops-Increment-loop-index-within-loop-body/EMal/loops-increment-loop-index-within-loop-body.emal create mode 100644 Task/Loops-Infinite/Nu/loops-infinite.nu create mode 100644 Task/Loops-N-plus-one-half/BootBASIC/loops-n-plus-one-half.basic create mode 100644 Task/Loops-N-plus-one-half/EMal/loops-n-plus-one-half.emal create mode 100644 Task/Loops-N-plus-one-half/Nu/loops-n-plus-one-half.nu create mode 100644 Task/Loops-While/EMal/loops-while.emal create mode 100644 Task/M-bius-function/Amazing-Hopper/m-bius-function.hopper create mode 100644 Task/M-bius-function/EasyLang/m-bius-function.easy create mode 100644 Task/M-bius-function/Rust/m-bius-function.rust create mode 100644 Task/MAC-vendor-lookup/BBC-BASIC/mac-vendor-lookup.basic create mode 100644 Task/MAC-vendor-lookup/MiniScript/mac-vendor-lookup.mini create mode 100644 Task/MAC-vendor-lookup/Nu/mac-vendor-lookup.nu create mode 100644 Task/Magic-squares-of-doubly-even-order/Amazing-Hopper/magic-squares-of-doubly-even-order.hopper create mode 100644 Task/Magic-squares-of-doubly-even-order/EDSAC-order-code/magic-squares-of-doubly-even-order.edsac create mode 100644 Task/Magic-squares-of-odd-order/Chipmunk-Basic/magic-squares-of-odd-order.basic create mode 100644 Task/Magic-squares-of-odd-order/EDSAC-order-code/magic-squares-of-odd-order.edsac create mode 100644 Task/Magic-squares-of-odd-order/GW-BASIC/magic-squares-of-odd-order.basic create mode 100644 Task/Magic-squares-of-odd-order/MSX-Basic/magic-squares-of-odd-order.basic create mode 100644 Task/Magic-squares-of-singly-even-order/EDSAC-order-code/magic-squares-of-singly-even-order.edsac create mode 100644 Task/Magnanimous-numbers/Amazing-Hopper/magnanimous-numbers.hopper create mode 100644 Task/Magnanimous-numbers/BBC-BASIC/magnanimous-numbers.basic create mode 100644 Task/Magnanimous-numbers/EasyLang/magnanimous-numbers.easy create mode 100644 Task/Magnanimous-numbers/GW-BASIC/magnanimous-numbers.basic create mode 100644 Task/Magnanimous-numbers/SETL/magnanimous-numbers.setl create mode 100644 Task/Main-step-of-GOST-28147-89/Java/main-step-of-gost-28147-89.java create mode 100644 Task/Man-or-boy-test/Zig/man-or-boy-test.zig create mode 100644 Task/Matrix-digital-rain/Amazing-Hopper/matrix-digital-rain-1.hopper create mode 100644 Task/Matrix-digital-rain/Amazing-Hopper/matrix-digital-rain-2.hopper create mode 100644 Task/Maximum-triangle-path-sum/EasyLang/maximum-triangle-path-sum.easy create mode 100644 Task/Maximum-triangle-path-sum/F-Sharp/maximum-triangle-path-sum.fs create mode 100644 Task/Mayan-numerals/Amazing-Hopper/mayan-numerals.hopper create mode 100644 Task/Maze-generation/EDSAC-order-code/maze-generation.edsac create mode 100644 Task/McNuggets-problem/8080-Assembly/mcnuggets-problem.8080 create mode 100644 Task/McNuggets-problem/EasyLang/mcnuggets-problem.easy create mode 100644 Task/McNuggets-problem/Gambas/mcnuggets-problem.gambas create mode 100644 Task/McNuggets-problem/MACRO-11/mcnuggets-problem.macro11 create mode 100644 Task/McNuggets-problem/MiniScript/mcnuggets-problem.mini create mode 100644 Task/McNuggets-problem/Pascal/mcnuggets-problem.pas create mode 100644 Task/McNuggets-problem/SETL/mcnuggets-problem.setl create mode 100644 Task/McNuggets-problem/True-BASIC/mcnuggets-problem.basic create mode 100644 Task/Meissel-Mertens-constant/Sidef/meissel-mertens-constant.sidef create mode 100644 Task/Mertens-function/SETL/mertens-function.setl create mode 100644 Task/Middle-three-digits/Amazing-Hopper/middle-three-digits-1.hopper create mode 100644 Task/Middle-three-digits/Amazing-Hopper/middle-three-digits-2.hopper create mode 100644 Task/Middle-three-digits/Amazing-Hopper/middle-three-digits-3.hopper create mode 100644 Task/Minimum-multiple-of-m-where-digital-sum-equals-m/Chipmunk-Basic/minimum-multiple-of-m-where-digital-sum-equals-m.basic create mode 100644 Task/Minimum-multiple-of-m-where-digital-sum-equals-m/EasyLang/minimum-multiple-of-m-where-digital-sum-equals-m.easy create mode 100644 Task/Minimum-multiple-of-m-where-digital-sum-equals-m/Gambas/minimum-multiple-of-m-where-digital-sum-equals-m.gambas create mode 100644 Task/Minimum-multiple-of-m-where-digital-sum-equals-m/SETL/minimum-multiple-of-m-where-digital-sum-equals-m.setl create mode 100644 Task/Minimum-multiple-of-m-where-digital-sum-equals-m/True-BASIC/minimum-multiple-of-m-where-digital-sum-equals-m.basic create mode 100644 Task/Minimum-multiple-of-m-where-digital-sum-equals-m/XBasic/minimum-multiple-of-m-where-digital-sum-equals-m.basic create mode 100644 Task/Modular-inverse/Python/modular-inverse-3.py rename Task/Modular-inverse/Quackery/{modular-inverse.quackery => modular-inverse-1.quackery} (100%) create mode 100644 Task/Modular-inverse/Quackery/modular-inverse-2.quackery create mode 100644 Task/Monte-Carlo-methods/J/monte-carlo-methods-4.j create mode 100644 Task/Morse-code/Chipmunk-Basic/morse-code.basic create mode 100644 Task/Morse-code/Quackery/morse-code.quackery create mode 100644 Task/Motzkin-numbers/EasyLang/motzkin-numbers.easy create mode 100644 Task/Motzkin-numbers/Maxima/motzkin-numbers.maxima create mode 100644 Task/Mouse-position/Uxntal/mouse-position.uxnatl create mode 100644 Task/Multifactorial/AppleScript/multifactorial-1.applescript create mode 100644 Task/Multifactorial/AppleScript/multifactorial-2.applescript create mode 100644 Task/Multifactorial/BQN/multifactorial.bqn create mode 100644 Task/Multifactorial/Cowgol/multifactorial.cowgol create mode 100644 Task/Multifactorial/EasyLang/multifactorial.easy create mode 100644 Task/Multifactorial/Maxima/multifactorial.maxima create mode 100644 Task/Multifactorial/Ol/multifactorial-1.ol create mode 100644 Task/Multifactorial/Ol/multifactorial-2.ol create mode 100644 Task/Multifactorial/SETL/multifactorial.setl rename Task/Musical-scale/Python/{musical-scale.py => musical-scale-1.py} (100%) create mode 100644 Task/Musical-scale/Python/musical-scale-2.py create mode 100644 Task/Mutual-recursion/SETL/mutual-recursion.setl create mode 100644 Task/N-queens-problem/MiniScript/n-queens-problem.mini create mode 100644 Task/Nth-root/Dart/nth-root.dart create mode 100644 Task/Nth-root/Nu/nth-root.nu create mode 100644 Task/Nth/SETL/nth.setl create mode 100644 Task/Number-reversal-game/SETL/number-reversal-game.setl create mode 100644 Task/Numbers-which-are-not-the-sum-of-distinct-squares/ALGOL-68/numbers-which-are-not-the-sum-of-distinct-squares.alg create mode 100644 Task/Numbers-which-are-not-the-sum-of-distinct-squares/ALGOL-W/numbers-which-are-not-the-sum-of-distinct-squares.alg create mode 100644 Task/Numbers-which-are-not-the-sum-of-distinct-squares/EasyLang/numbers-which-are-not-the-sum-of-distinct-squares.easy create mode 100644 Task/Numbers-which-are-not-the-sum-of-distinct-squares/Lua/numbers-which-are-not-the-sum-of-distinct-squares.lua create mode 100644 Task/Numbers-which-are-not-the-sum-of-distinct-squares/Quackery/numbers-which-are-not-the-sum-of-distinct-squares.quackery create mode 100644 Task/Numbers-which-are-the-cube-roots-of-the-product-of-their-proper-divisors/Sidef/numbers-which-are-the-cube-roots-of-the-product-of-their-proper-divisors.sidef rename Task/Object-serialization/Haskell/{object-serialization.hs => object-serialization-1.hs} (100%) create mode 100644 Task/Object-serialization/Haskell/object-serialization-2.hs create mode 100644 Task/One-dimensional-cellular-automata/Amazing-Hopper/one-dimensional-cellular-automata-1.hopper create mode 100644 Task/One-dimensional-cellular-automata/Amazing-Hopper/one-dimensional-cellular-automata-2.hopper create mode 100644 Task/One-dimensional-cellular-automata/EasyLang/one-dimensional-cellular-automata.easy create mode 100644 Task/One-dimensional-cellular-automata/Julia/one-dimensional-cellular-automata-1.julia create mode 100644 Task/One-dimensional-cellular-automata/Julia/one-dimensional-cellular-automata-2.julia delete mode 100644 Task/One-dimensional-cellular-automata/Julia/one-dimensional-cellular-automata.julia rename Task/One-dimensional-cellular-automata/{BASIC => QBasic}/one-dimensional-cellular-automata.basic (100%) create mode 100644 Task/Order-by-pair-comparisons/MiniScript/order-by-pair-comparisons.mini create mode 100644 Task/Ordered-words/Amazing-Hopper/ordered-words.hopper create mode 100644 Task/Ormiston-triples/Ruby/ormiston-triples.rb create mode 100644 Task/Own-digits-power-sum/C++/own-digits-power-sum.cpp create mode 100644 Task/Own-digits-power-sum/Java/own-digits-power-sum.java create mode 100644 Task/Own-digits-power-sum/Rust/own-digits-power-sum-1.rust create mode 100644 Task/Own-digits-power-sum/Rust/own-digits-power-sum-2.rust create mode 100644 Task/Padovan-n-step-number-sequences/BASIC256/padovan-n-step-number-sequences.basic create mode 100644 Task/Padovan-n-step-number-sequences/Chipmunk-Basic/padovan-n-step-number-sequences.basic create mode 100644 Task/Padovan-n-step-number-sequences/EasyLang/padovan-n-step-number-sequences.easy create mode 100644 Task/Padovan-n-step-number-sequences/PureBasic/padovan-n-step-number-sequences.basic create mode 100644 Task/Padovan-n-step-number-sequences/QBasic/padovan-n-step-number-sequences.basic create mode 100644 Task/Padovan-n-step-number-sequences/Ruby/padovan-n-step-number-sequences.rb create mode 100644 Task/Padovan-n-step-number-sequences/Yabasic/padovan-n-step-number-sequences.basic create mode 100644 Task/Palindrome-detection/Rhovas/palindrome-detection-1.rhovas create mode 100644 Task/Palindrome-detection/Rhovas/palindrome-detection-2.rhovas create mode 100644 Task/Palindrome-detection/Rhovas/palindrome-detection-3.rhovas create mode 100644 Task/Particle-fountain/EasyLang/particle-fountain.easy create mode 100644 Task/Particle-fountain/Python/particle-fountain.py create mode 100644 Task/Penneys-game/Quackery/penneys-game.quackery create mode 100644 Task/Perfect-shuffle/EasyLang/perfect-shuffle.easy create mode 100644 Task/Perfect-shuffle/SETL/perfect-shuffle.setl create mode 100644 Task/Periodic-table/EasyLang/periodic-table.easy create mode 100644 Task/Periodic-table/Quackery/periodic-table.quackery create mode 100644 Task/Periodic-table/Quite-BASIC/periodic-table.basic create mode 100644 Task/Perlin-noise/EasyLang/perlin-noise.easy create mode 100644 Task/Pi/IS-BASIC/pi.basic create mode 100644 Task/Pi/MiniScript/pi.mini create mode 100644 Task/Pig-the-dice-game/Applesoft-BASIC/pig-the-dice-game.basic create mode 100644 Task/Pig-the-dice-game/Chipmunk-Basic/pig-the-dice-game.basic create mode 100644 Task/Pig-the-dice-game/EasyLang/pig-the-dice-game.easy create mode 100644 Task/Pig-the-dice-game/MSX-Basic/pig-the-dice-game.basic create mode 100644 Task/Pig-the-dice-game/SETL/pig-the-dice-game.setl create mode 100644 Task/Pig-the-dice-game/Yabasic/pig-the-dice-game.basic create mode 100644 Task/Polynomial-long-division/ALGOL-68/polynomial-long-division.alg create mode 100644 Task/Polynomial-regression/EasyLang/polynomial-regression.easy create mode 100644 Task/Population-count/EasyLang/population-count.easy create mode 100644 Task/Population-count/Ol/population-count.ol create mode 100644 Task/Population-count/Run-BASIC/population-count.basic create mode 100644 Task/Population-count/SETL/population-count.setl create mode 100644 Task/Program-name/BQN/program-name.bqn create mode 100644 Task/Pseudo-random-numbers-Middle-square-method/Amazing-Hopper/pseudo-random-numbers-middle-square-method-1.hopper create mode 100644 Task/Pseudo-random-numbers-Middle-square-method/Amazing-Hopper/pseudo-random-numbers-middle-square-method-2.hopper create mode 100644 Task/Pseudo-random-numbers-Middle-square-method/Amazing-Hopper/pseudo-random-numbers-middle-square-method-3.hopper create mode 100644 Task/Pseudo-random-numbers-Middle-square-method/Amazing-Hopper/pseudo-random-numbers-middle-square-method-4.hopper create mode 100644 Task/Pseudo-random-numbers-Middle-square-method/BQN/pseudo-random-numbers-middle-square-method-1.bqn create mode 100644 Task/Pseudo-random-numbers-Middle-square-method/BQN/pseudo-random-numbers-middle-square-method-2.bqn create mode 100644 Task/Pseudo-random-numbers-Middle-square-method/EDSAC-order-code/pseudo-random-numbers-middle-square-method.edsac create mode 100644 Task/Pseudo-random-numbers-Middle-square-method/J/pseudo-random-numbers-middle-square-method-1.j create mode 100644 Task/Pseudo-random-numbers-Middle-square-method/J/pseudo-random-numbers-middle-square-method-2.j delete mode 100644 Task/Pseudo-random-numbers-Middle-square-method/J/pseudo-random-numbers-middle-square-method.j create mode 100644 Task/Pythagoras-tree/Dart/pythagoras-tree-1.dart create mode 100644 Task/Pythagoras-tree/Dart/pythagoras-tree-2.dart create mode 100644 Task/Quoting-constructs/C++/quoting-constructs.cpp create mode 100644 Task/Radical-of-an-integer/ALGOL-68/radical-of-an-integer.alg create mode 100644 Task/Radical-of-an-integer/EasyLang/radical-of-an-integer.easy create mode 100644 Task/Radical-of-an-integer/Lua/radical-of-an-integer.lua create mode 100644 Task/Radical-of-an-integer/Python/radical-of-an-integer.py create mode 100644 Task/Radical-of-an-integer/Sidef/radical-of-an-integer.sidef create mode 100644 Task/Ramanujan-primes-twins/J/ramanujan-primes-twins.j create mode 100644 Task/Ramer-Douglas-Peucker-line-simplification/ALGOL-68/ramer-douglas-peucker-line-simplification.alg create mode 100644 Task/Ramer-Douglas-Peucker-line-simplification/EasyLang/ramer-douglas-peucker-line-simplification.easy create mode 100644 Task/Ramer-Douglas-Peucker-line-simplification/XPL0/ramer-douglas-peucker-line-simplification.xpl0 create mode 100644 Task/Rare-numbers/Racket/rare-numbers.rkt create mode 100644 Task/Read-entire-file/Zig/read-entire-file-1.zig create mode 100644 Task/Read-entire-file/Zig/read-entire-file-2.zig create mode 100644 Task/Recamans-sequence/Applesoft-BASIC/recamans-sequence.basic create mode 100644 Task/Recamans-sequence/Minimal-BASIC/recamans-sequence.basic create mode 100644 Task/Recamans-sequence/Rust/recamans-sequence.rust create mode 100644 Task/Recamans-sequence/SETL/recamans-sequence.setl create mode 100644 Task/Remove-duplicate-elements/BQN/remove-duplicate-elements.bqn create mode 100644 Task/Rep-string/SETL/rep-string.setl create mode 100644 Task/Repeat-a-string/8080-Assembly/repeat-a-string.8080 create mode 100644 Task/Repeat-a-string/Chipmunk-Basic/repeat-a-string.basic create mode 100644 Task/Repeat-a-string/EasyLang/repeat-a-string.easy create mode 100644 Task/Repeat-a-string/GW-BASIC/repeat-a-string.basic rename Task/Repeat-a-string/Inform-7/{repeat-a-string.inf => repeat-a-string-1.inf} (100%) create mode 100644 Task/Repeat-a-string/Inform-7/repeat-a-string-2.inf create mode 100644 Task/Repeat-a-string/Minimal-BASIC/repeat-a-string.basic create mode 100644 Task/Repeat-a-string/Quite-BASIC/repeat-a-string.basic create mode 100644 Task/Repeat-a-string/XBasic/repeat-a-string.basic create mode 100644 Task/Repunit-primes/J/repunit-primes.j create mode 100644 Task/Return-multiple-values/Amazing-Hopper/return-multiple-values.hopper delete mode 100644 Task/Return-multiple-values/Euler/return-multiple-values.euler create mode 100644 Task/Reverse-words-in-a-string/BQN/reverse-words-in-a-string-1.bqn create mode 100644 Task/Reverse-words-in-a-string/BQN/reverse-words-in-a-string-2.bqn create mode 100644 Task/Roman-numerals-Decode/Insitux/roman-numerals-decode.insitux create mode 100644 Task/Roots-of-a-quadratic-function/XPL0/roots-of-a-quadratic-function.xpl0 create mode 100644 Task/Rosetta-Code-Find-unimplemented-tasks/BBC-BASIC/rosetta-code-find-unimplemented-tasks.basic create mode 100644 Task/Rot-13/BQN/rot-13-1.bqn create mode 100644 Task/Rot-13/BQN/rot-13-2.bqn create mode 100644 Task/Rot-13/Uxntal/rot-13.uxnatl create mode 100644 Task/Rot-13/XBasic/rot-13.basic create mode 100644 Task/Run-length-encoding/Amazing-Hopper/run-length-encoding.hopper create mode 100644 Task/Run-length-encoding/SETL/run-length-encoding.setl create mode 100644 Task/Search-a-list/Acornsoft-Lisp/search-a-list.lisp create mode 100644 Task/Search-a-list/EasyLang/search-a-list.easy create mode 100644 Task/Search-in-paragraphs-text/C/search-in-paragraphs-text.c create mode 100644 Task/Self-numbers/XPL0/self-numbers.xpl0 create mode 100644 Task/Sequence-of-non-squares/BQN/sequence-of-non-squares.bqn create mode 100644 Task/Sequence-of-non-squares/Chipmunk-Basic/sequence-of-non-squares.basic create mode 100644 Task/Sequence-of-non-squares/MATLAB/sequence-of-non-squares-3.m create mode 100644 Task/Sequence-of-non-squares/SETL/sequence-of-non-squares.setl create mode 100644 Task/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors/BASIC256/sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors.basic create mode 100644 Task/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors/EasyLang/sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors.easy create mode 100644 Task/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors/Gambas/sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors.gambas create mode 100644 Task/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors/MiniScript/sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors.mini create mode 100644 Task/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors/PureBasic/sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors.basic create mode 100644 Task/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors/QBasic/sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors.basic create mode 100644 Task/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors/Run-BASIC/sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors.basic create mode 100644 Task/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors/XBasic/sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors.basic create mode 100644 Task/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors/Yabasic/sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors.basic create mode 100644 Task/Sequence:-smallest-number-with-exactly-n-divisors/BASIC256/sequence:-smallest-number-with-exactly-n-divisors.basic create mode 100644 Task/Sequence:-smallest-number-with-exactly-n-divisors/Chipmunk-Basic/sequence:-smallest-number-with-exactly-n-divisors.basic create mode 100644 Task/Sequence:-smallest-number-with-exactly-n-divisors/MiniScript/sequence:-smallest-number-with-exactly-n-divisors.mini create mode 100644 Task/Sequence:-smallest-number-with-exactly-n-divisors/PureBasic/sequence:-smallest-number-with-exactly-n-divisors.basic create mode 100644 Task/Sequence:-smallest-number-with-exactly-n-divisors/QBasic/sequence:-smallest-number-with-exactly-n-divisors.basic create mode 100644 Task/Sequence:-smallest-number-with-exactly-n-divisors/SETL/sequence:-smallest-number-with-exactly-n-divisors.setl create mode 100644 Task/Sequence:-smallest-number-with-exactly-n-divisors/True-BASIC/sequence:-smallest-number-with-exactly-n-divisors.basic create mode 100644 Task/Sequence:-smallest-number-with-exactly-n-divisors/XBasic/sequence:-smallest-number-with-exactly-n-divisors.basic create mode 100644 Task/Sequence:-smallest-number-with-exactly-n-divisors/Yabasic/sequence:-smallest-number-with-exactly-n-divisors.basic create mode 100644 Task/Set-consolidation/Quackery/set-consolidation.quackery create mode 100644 Task/Set-consolidation/SETL/set-consolidation.setl create mode 100644 Task/Set-puzzle/EasyLang/set-puzzle.easy create mode 100644 Task/Set-puzzle/Quackery/set-puzzle.quackery create mode 100644 Task/Set-right-adjacent-bits/Quackery/set-right-adjacent-bits.quackery create mode 100644 Task/Sierpinski-carpet/AppleScript/sierpinski-carpet-3.applescript create mode 100644 Task/Sierpinski-carpet/IS-BASIC/sierpinski-carpet.basic create mode 100644 Task/Sierpinski-triangle/SETL/sierpinski-triangle.setl create mode 100644 Task/Sieve-of-Eratosthenes/SETL/sieve-of-eratosthenes.setl rename Task/Simple-windowed-application/Sidef/{simple-windowed-application.sidef => simple-windowed-application-1.sidef} (100%) create mode 100644 Task/Simple-windowed-application/Sidef/simple-windowed-application-2.sidef create mode 100644 Task/Singly-linked-list-Element-definition/MiniScript/singly-linked-list-element-definition.mini create mode 100644 Task/Singly-linked-list-Element-insertion/MiniScript/singly-linked-list-element-insertion.mini rename Task/Singular-value-decomposition/C++/{singular-value-decomposition.cpp => singular-value-decomposition-1.cpp} (100%) create mode 100644 Task/Singular-value-decomposition/C++/singular-value-decomposition-2.cpp create mode 100644 Task/Smarandache-Wellin-primes/EasyLang/smarandache-wellin-primes.easy create mode 100644 Task/Smarandache-Wellin-primes/J/smarandache-wellin-primes.j create mode 100644 Task/Smith-numbers/Amazing-Hopper/smith-numbers.hopper create mode 100644 Task/Smith-numbers/EasyLang/smith-numbers.easy create mode 100644 Task/Smith-numbers/SETL/smith-numbers.setl create mode 100644 Task/Solve-a-Hidato-puzzle/MiniScript/solve-a-hidato-puzzle.mini create mode 100644 Task/Sort-an-integer-array/BQN/sort-an-integer-array.bqn create mode 100644 Task/Sort-disjoint-sublist/EasyLang/sort-disjoint-sublist.easy create mode 100644 Task/Sort-disjoint-sublist/MiniScript/sort-disjoint-sublist.mini create mode 100644 Task/Sort-three-variables/EasyLang/sort-three-variables.easy create mode 100644 Task/Sort-using-a-custom-comparator/Zig/sort-using-a-custom-comparator.zig create mode 100644 Task/Sorting-algorithms-Bogosort/BASIC256/sorting-algorithms-bogosort.basic create mode 100644 Task/Sorting-algorithms-Counting-sort/EasyLang/sorting-algorithms-counting-sort.easy create mode 100644 Task/Sorting-algorithms-Gnome-sort/BASIC256/sorting-algorithms-gnome-sort.basic create mode 100644 Task/Sorting-algorithms-Gnome-sort/Chipmunk-Basic/sorting-algorithms-gnome-sort.basic create mode 100644 Task/Sorting-algorithms-Gnome-sort/EDSAC-order-code/sorting-algorithms-gnome-sort.edsac create mode 100644 Task/Sorting-algorithms-Gnome-sort/EasyLang/sorting-algorithms-gnome-sort.easy create mode 100644 Task/Sorting-algorithms-Gnome-sort/GW-BASIC/sorting-algorithms-gnome-sort.basic create mode 100644 Task/Sorting-algorithms-Gnome-sort/MSX-Basic/sorting-algorithms-gnome-sort.basic create mode 100644 Task/Sorting-algorithms-Gnome-sort/MiniScript/sorting-algorithms-gnome-sort.mini create mode 100644 Task/Sorting-algorithms-Gnome-sort/Minimal-BASIC/sorting-algorithms-gnome-sort.basic create mode 100644 Task/Sorting-algorithms-Gnome-sort/PL-M/sorting-algorithms-gnome-sort.plm create mode 100644 Task/Sorting-algorithms-Gnome-sort/QBasic/sorting-algorithms-gnome-sort.basic rename Task/Sorting-algorithms-Gnome-sort/{BASIC => QuickBASIC}/sorting-algorithms-gnome-sort.basic (100%) create mode 100644 Task/Sorting-algorithms-Gnome-sort/Quite-BASIC/sorting-algorithms-gnome-sort.basic create mode 100644 Task/Sorting-algorithms-Gnome-sort/Run-BASIC/sorting-algorithms-gnome-sort.basic create mode 100644 Task/Sorting-algorithms-Gnome-sort/Yabasic/sorting-algorithms-gnome-sort.basic create mode 100644 Task/Sorting-algorithms-Insertion-sort/GW-BASIC/sorting-algorithms-insertion-sort.basic create mode 100644 Task/Sorting-algorithms-Merge-sort/Component-Pascal/sorting-algorithms-merge-sort-1.pas create mode 100644 Task/Sorting-algorithms-Merge-sort/Component-Pascal/sorting-algorithms-merge-sort-2.pas create mode 100644 Task/Sorting-algorithms-Merge-sort/Component-Pascal/sorting-algorithms-merge-sort-3.pas create mode 100644 Task/Sorting-algorithms-Merge-sort/Raku/sorting-algorithms-merge-sort-6.raku create mode 100644 Task/Sorting-algorithms-Merge-sort/SETL/sorting-algorithms-merge-sort.setl create mode 100644 Task/Sorting-algorithms-Quicksort/Chipmunk-Basic/sorting-algorithms-quicksort.basic delete mode 100644 Task/Sorting-algorithms-Quicksort/Fortran/sorting-algorithms-quicksort.f create mode 100644 Task/Sorting-algorithms-Quicksort/Zig/sorting-algorithms-quicksort-1.zig create mode 100644 Task/Sorting-algorithms-Quicksort/Zig/sorting-algorithms-quicksort-2.zig delete mode 100644 Task/Sorting-algorithms-Quicksort/Zig/sorting-algorithms-quicksort.zig rename Task/Sorting-algorithms-Selection-sort/Rust/{sorting-algorithms-selection-sort.rust => sorting-algorithms-selection-sort-1.rust} (100%) create mode 100644 Task/Sorting-algorithms-Selection-sort/Rust/sorting-algorithms-selection-sort-2.rust create mode 100644 Task/Sorting-algorithms-Stooge-sort/EasyLang/sorting-algorithms-stooge-sort.easy create mode 100644 Task/Soundex/EasyLang/soundex.easy create mode 100644 Task/Speech-synthesis/Quackery/speech-synthesis.quackery create mode 100644 Task/Spelling-of-ordinal-numbers/Quackery/spelling-of-ordinal-numbers.quackery create mode 100644 Task/Sphenic-numbers/C-sharp/sphenic-numbers.cs create mode 100644 Task/Sphenic-numbers/Sidef/sphenic-numbers.sidef create mode 100644 Task/Split-a-character-string-based-on-change-of-character/BQN/split-a-character-string-based-on-change-of-character.bqn create mode 100644 Task/Square-form-factorization/Pascal/square-form-factorization.pas create mode 100644 Task/Square-form-factorization/Sidef/square-form-factorization.sidef create mode 100644 Task/Statistics-Basic/Amazing-Hopper/statistics-basic.hopper create mode 100644 Task/Statistics-Basic/EasyLang/statistics-basic.easy create mode 100644 Task/Statistics-Normal-distribution/EDSAC-order-code/statistics-normal-distribution.edsac create mode 100644 Task/String-append/BQN/string-append.bqn create mode 100644 Task/String-append/Chipmunk-Basic/string-append.basic create mode 100644 Task/String-append/Dart/string-append.dart create mode 100644 Task/String-append/GW-BASIC/string-append.basic create mode 100644 Task/String-append/MiniScript/string-append.mini create mode 100644 Task/String-append/XBasic/string-append.basic create mode 100644 Task/String-case/Chipmunk-Basic/string-case.basic create mode 100644 Task/String-case/EMal/string-case.emal rename Task/String-interpolation-included-/ALGOL-68/{string-interpolation-included-.alg => string-interpolation-included--1.alg} (100%) create mode 100644 Task/String-interpolation-included-/ALGOL-68/string-interpolation-included--2.alg create mode 100644 Task/String-interpolation-included-/Applesoft-BASIC/string-interpolation-included-.basic create mode 100644 Task/String-interpolation-included-/Chipmunk-Basic/string-interpolation-included-.basic create mode 100644 Task/String-interpolation-included-/GW-BASIC/string-interpolation-included-.basic create mode 100644 Task/String-interpolation-included-/Minimal-BASIC/string-interpolation-included-.basic create mode 100644 Task/String-interpolation-included-/Quite-BASIC/string-interpolation-included-.basic create mode 100644 Task/String-interpolation-included-/XBasic/string-interpolation-included-.basic create mode 100644 Task/Subleq/BASIC256/subleq.basic create mode 100644 Task/Subleq/EasyLang/subleq.easy create mode 100644 Task/Subleq/Gambas/subleq.gambas create mode 100644 Task/Subleq/SETL/subleq.setl create mode 100644 Task/Subleq/Yabasic/subleq.basic create mode 100644 Task/Subtractive-generator/EasyLang/subtractive-generator.easy create mode 100644 Task/Subtractive-generator/Quackery/subtractive-generator.quackery create mode 100644 Task/Successive-prime-differences/Amazing-Hopper/successive-prime-differences.hopper create mode 100644 Task/Successive-prime-differences/EasyLang/successive-prime-differences.easy delete mode 100644 Task/Sum-and-product-of-an-array/Euler/sum-and-product-of-an-array.euler rename Task/Sum-digits-of-an-integer/Chipmunk-Basic/{sum-digits-of-an-integer.basic => sum-digits-of-an-integer-1.basic} (100%) create mode 100644 Task/Sum-digits-of-an-integer/Chipmunk-Basic/sum-digits-of-an-integer-2.basic create mode 100644 Task/Sum-digits-of-an-integer/EDSAC-order-code/sum-digits-of-an-integer.edsac create mode 100644 Task/Sum-digits-of-an-integer/Uxntal/sum-digits-of-an-integer.uxnatl create mode 100644 Task/Sum-digits-of-an-integer/XBasic/sum-digits-of-an-integer.basic create mode 100644 Task/Sum-multiples-of-3-and-5/ALGOL-60/sum-multiples-of-3-and-5.alg create mode 100644 Task/Sum-multiples-of-3-and-5/EasyLang/sum-multiples-of-3-and-5.easy create mode 100644 Task/Sum-multiples-of-3-and-5/Joy/sum-multiples-of-3-and-5.joy create mode 100644 Task/Sum-multiples-of-3-and-5/PL-I-80/sum-multiples-of-3-and-5.pli create mode 100644 Task/Sum-multiples-of-3-and-5/S-BASIC/sum-multiples-of-3-and-5.basic delete mode 100644 Task/Sum-of-squares/Euler/sum-of-squares.euler create mode 100644 Task/Super-d-numbers/Amazing-Hopper/super-d-numbers.hopper create mode 100644 Task/Super-d-numbers/Quackery/super-d-numbers.quackery create mode 100644 Task/Symmetric-difference/Amazing-Hopper/symmetric-difference.hopper create mode 100644 Task/Symmetric-difference/MiniScript/symmetric-difference.mini create mode 100644 Task/Symmetric-difference/SETL/symmetric-difference.setl create mode 100644 Task/Table-creation-Postal-addresses/C++/table-creation-postal-addresses.cpp create mode 100644 Task/Table-creation-Postal-addresses/Java/table-creation-postal-addresses.java create mode 100644 Task/Take-notes-on-the-command-line/Amazing-Hopper/take-notes-on-the-command-line.hopper create mode 100644 Task/Tau-function/EasyLang/tau-function.easy create mode 100644 Task/Tau-function/MiniScript/tau-function.mini create mode 100644 Task/Tau-number/EasyLang/tau-number.easy create mode 100644 Task/Tau-number/Gambas/tau-number.gambas create mode 100644 Task/Tau-number/IS-BASIC/tau-number.basic create mode 100644 Task/Tau-number/MiniScript/tau-number.mini rename Task/Tau-number/True-BASIC/{tau-number.basic => tau-number-1.basic} (100%) create mode 100644 Task/Tau-number/True-BASIC/tau-number-2.basic create mode 100644 Task/Tau-number/XBasic/tau-number.basic create mode 100644 Task/Test-integerness/BQN/test-integerness.bqn create mode 100644 Task/Text-processing-2/Amazing-Hopper/text-processing-2.hopper create mode 100644 Task/The-Twelve-Days-of-Christmas/GW-BASIC/the-twelve-days-of-christmas.basic create mode 100644 Task/The-Twelve-Days-of-Christmas/SETL/the-twelve-days-of-christmas.setl create mode 100644 Task/The-Twelve-Days-of-Christmas/XBasic/the-twelve-days-of-christmas.basic create mode 100644 Task/Tic-tac-toe/Koka/tic-tac-toe.koka create mode 100644 Task/Tokenize-a-string/JavaScript/tokenize-a-string-1.js create mode 100644 Task/Tokenize-a-string/JavaScript/tokenize-a-string-2.js create mode 100644 Task/Tokenize-a-string/JavaScript/tokenize-a-string-3.js delete mode 100644 Task/Tokenize-a-string/JavaScript/tokenize-a-string.js create mode 100644 Task/Total-circles-area/C++/total-circles-area.cpp create mode 100644 Task/Total-circles-area/EasyLang/total-circles-area.easy rename Task/Total-circles-area/Java/{total-circles-area.java => total-circles-area-1.java} (99%) create mode 100644 Task/Total-circles-area/Java/total-circles-area-2.java create mode 100644 Task/Totient-function/SETL/totient-function.setl create mode 100644 Task/Towers-of-Hanoi/EMal/towers-of-hanoi.emal create mode 100644 Task/Towers-of-Hanoi/SETL/towers-of-hanoi.setl create mode 100644 Task/Transliterate-English-text-using-the-Greek-alphabet/Java/transliterate-english-text-using-the-greek-alphabet.java create mode 100644 Task/Tree-traversal/EasyLang/tree-traversal.easy create mode 100644 Task/Tree-traversal/SETL/tree-traversal.setl create mode 100644 Task/Truth-table/Amazing-Hopper/truth-table-1.hopper create mode 100644 Task/Truth-table/Amazing-Hopper/truth-table-2.hopper create mode 100644 Task/Truth-table/SETL/truth-table.setl create mode 100644 Task/Twelve-statements/EasyLang/twelve-statements.easy rename Task/Twin-primes/C++/{twin-primes.cpp => twin-primes-1.cpp} (100%) create mode 100644 Task/Twin-primes/C++/twin-primes-2.cpp create mode 100644 Task/Twin-primes/EasyLang/twin-primes.easy rename Task/Twin-primes/Java/{twin-primes.java => twin-primes-1.java} (100%) create mode 100644 Task/Twin-primes/Java/twin-primes-2.java create mode 100644 Task/Twin-primes/Phix/twin-primes-1.phix create mode 100644 Task/Twin-primes/Phix/twin-primes-2.phix delete mode 100644 Task/Twin-primes/Phix/twin-primes.phix create mode 100644 Task/Ukkonen-s-suffix-tree-construction/Java/ukkonen-s-suffix-tree-construction.java create mode 100644 Task/Ulam-spiral-for-primes-/EasyLang/ulam-spiral-for-primes-.easy create mode 100644 Task/Ulam-spiral-for-primes-/Quackery/ulam-spiral-for-primes-.quackery create mode 100644 Task/Unicode-variable-names/C++/unicode-variable-names.cpp create mode 100644 Task/Unicode-variable-names/Zig/unicode-variable-names.zig create mode 100644 Task/User-input-Text/Nu/user-input-text.nu create mode 100644 Task/Vampire-number/EasyLang/vampire-number.easy create mode 100644 Task/Van-Eck-sequence/Amazing-Hopper/van-eck-sequence.hopper create mode 100644 Task/Van-Eck-sequence/BASIC256/van-eck-sequence.basic create mode 100644 Task/Van-Eck-sequence/Chipmunk-Basic/van-eck-sequence.basic create mode 100644 Task/Van-Eck-sequence/GW-BASIC/van-eck-sequence.basic create mode 100644 Task/Van-Eck-sequence/PureBasic/van-eck-sequence.basic create mode 100644 Task/Van-Eck-sequence/QBasic/van-eck-sequence.basic create mode 100644 Task/Van-Eck-sequence/SETL/van-eck-sequence.setl create mode 100644 Task/Van-Eck-sequence/XBasic/van-eck-sequence.basic create mode 100644 Task/Van-Eck-sequence/Yabasic/van-eck-sequence.basic rename Task/Variable-size-Set/C++/{variable-size-set.cpp => variable-size-set-1.cpp} (100%) create mode 100644 Task/Variable-size-Set/C++/variable-size-set-2.cpp create mode 100644 Task/Variable-size-Set/Java/variable-size-set.java create mode 100644 Task/Wagstaff-primes/Quackery/wagstaff-primes.quackery create mode 100644 Task/Wasteful-equidigital-and-frugal-numbers/C++/wasteful-equidigital-and-frugal-numbers.cpp create mode 100644 Task/Wasteful-equidigital-and-frugal-numbers/Java/wasteful-equidigital-and-frugal-numbers.java create mode 100644 Task/Wilson-primes-of-order-n/EasyLang/wilson-primes-of-order-n.easy create mode 100644 Task/Wilson-primes-of-order-n/J/wilson-primes-of-order-n.j create mode 100644 Task/Wireworld/MiniScript/wireworld.mini create mode 100644 Task/Word-wrap/Tailspin/word-wrap.tailspin create mode 100644 Task/Wordiff/C++/wordiff.cpp create mode 100644 Task/Wordiff/Java/wordiff.java create mode 100644 Task/Write-float-arrays-to-a-text-file/XPL0/write-float-arrays-to-a-text-file.xpl0 rename Task/Yin-and-yang/Dart/{yin-and-yang.dart => yin-and-yang-1.dart} (100%) create mode 100644 Task/Yin-and-yang/Dart/yin-and-yang-2.dart create mode 100644 Task/Yin-and-yang/Dart/yin-and-yang-3.dart create mode 100644 Task/Yin-and-yang/JavaScript/yin-and-yang-4.js create mode 100644 Task/Yin-and-yang/JavaScript/yin-and-yang-5.js create mode 100644 Task/Yin-and-yang/SETL/yin-and-yang.setl create mode 100644 Task/Zeckendorf-number-representation/EasyLang/zeckendorf-number-representation.easy create mode 100644 Task/Zeckendorf-number-representation/MiniScript/zeckendorf-number-representation.mini diff --git a/Conf/lang.yaml b/Conf/lang.yaml index 3e0d8b7106..425ffc3d94 100644 --- a/Conf/lang.yaml +++ b/Conf/lang.yaml @@ -179,6 +179,7 @@ Cowgol: .cowgol Crack: .crack Craft Basic: .basic Creative Basic: .basic +Curto: .curto Crystal: .crystal C sharp: .cs C Shell: .csh @@ -461,6 +462,7 @@ M2000 Interpreter: .m2000 M4: .m4 M680x0: .m680x0 MACRO-11: .macro11 +Macsyma: .macsyma MAD: .mad Make: .make Malbolge: .malbolge @@ -484,6 +486,7 @@ Mercury: .mercury Metafont: .metafont Metapost: .metapost MGS: .mgs +Mia: .mia Microsoft Small Basic: .basic Min: .min MINIL: .minil @@ -551,6 +554,7 @@ NQP: .nqp NS-HUBASIC: .basic NSIS: .nsis N/t/roff: .ntroff +Nu: .nu Nutt: .nutt Nyquist: .nyquist OASYS: .oasys @@ -836,9 +840,11 @@ UNIX Shell: .sh Unlambda: .unlambda Ursa: .ursa Ursala: .ursala +Ursalang: .ursa UScript: .u UserRPL: .rpl UTFool: .utfool +Uxntal: .uxnatl V: .v Vala: .vala Vale: .vale diff --git a/Lang/11l/Comments b/Lang/11l/Comments deleted file mode 120000 index 3585963399..0000000000 --- a/Lang/11l/Comments +++ /dev/null @@ -1 +0,0 @@ -../../Task/Comments/11l \ No newline at end of file diff --git a/Lang/11l/List-comprehensions b/Lang/11l/List-comprehensions deleted file mode 120000 index f4de0b78ad..0000000000 --- a/Lang/11l/List-comprehensions +++ /dev/null @@ -1 +0,0 @@ -../../Task/List-comprehensions/11l \ No newline at end of file diff --git a/Lang/8080-Assembly/McNuggets-problem b/Lang/8080-Assembly/McNuggets-problem new file mode 120000 index 0000000000..69d7be7c03 --- /dev/null +++ b/Lang/8080-Assembly/McNuggets-problem @@ -0,0 +1 @@ +../../Task/McNuggets-problem/8080-Assembly \ No newline at end of file diff --git a/Lang/8080-Assembly/Repeat-a-string b/Lang/8080-Assembly/Repeat-a-string new file mode 120000 index 0000000000..8f626bb358 --- /dev/null +++ b/Lang/8080-Assembly/Repeat-a-string @@ -0,0 +1 @@ +../../Task/Repeat-a-string/8080-Assembly \ No newline at end of file diff --git a/Lang/ALGOL-60/100-doors b/Lang/ALGOL-60/100-doors deleted file mode 120000 index 9bbf6f9b11..0000000000 --- a/Lang/ALGOL-60/100-doors +++ /dev/null @@ -1 +0,0 @@ -../../Task/100-doors/ALGOL-60 \ No newline at end of file diff --git a/Lang/ALGOL-60/Sum-multiples-of-3-and-5 b/Lang/ALGOL-60/Sum-multiples-of-3-and-5 new file mode 120000 index 0000000000..f733e89a1f --- /dev/null +++ b/Lang/ALGOL-60/Sum-multiples-of-3-and-5 @@ -0,0 +1 @@ +../../Task/Sum-multiples-of-3-and-5/ALGOL-60 \ No newline at end of file diff --git a/Lang/ALGOL-68/Equal-prime-and-composite-sums b/Lang/ALGOL-68/Equal-prime-and-composite-sums new file mode 120000 index 0000000000..7f8271d85e --- /dev/null +++ b/Lang/ALGOL-68/Equal-prime-and-composite-sums @@ -0,0 +1 @@ +../../Task/Equal-prime-and-composite-sums/ALGOL-68 \ No newline at end of file diff --git a/Lang/ALGOL-68/Jacobi-symbol b/Lang/ALGOL-68/Jacobi-symbol new file mode 120000 index 0000000000..6ad192d3e6 --- /dev/null +++ b/Lang/ALGOL-68/Jacobi-symbol @@ -0,0 +1 @@ +../../Task/Jacobi-symbol/ALGOL-68 \ No newline at end of file diff --git a/Lang/ALGOL-68/Numbers-which-are-not-the-sum-of-distinct-squares b/Lang/ALGOL-68/Numbers-which-are-not-the-sum-of-distinct-squares new file mode 120000 index 0000000000..b879b4a5c6 --- /dev/null +++ b/Lang/ALGOL-68/Numbers-which-are-not-the-sum-of-distinct-squares @@ -0,0 +1 @@ +../../Task/Numbers-which-are-not-the-sum-of-distinct-squares/ALGOL-68 \ No newline at end of file diff --git a/Lang/ALGOL-68/Polynomial-long-division b/Lang/ALGOL-68/Polynomial-long-division new file mode 120000 index 0000000000..792b97252e --- /dev/null +++ b/Lang/ALGOL-68/Polynomial-long-division @@ -0,0 +1 @@ +../../Task/Polynomial-long-division/ALGOL-68 \ No newline at end of file diff --git a/Lang/ALGOL-68/Radical-of-an-integer b/Lang/ALGOL-68/Radical-of-an-integer new file mode 120000 index 0000000000..18632fce6e --- /dev/null +++ b/Lang/ALGOL-68/Radical-of-an-integer @@ -0,0 +1 @@ +../../Task/Radical-of-an-integer/ALGOL-68 \ No newline at end of file diff --git a/Lang/ALGOL-68/Ramer-Douglas-Peucker-line-simplification b/Lang/ALGOL-68/Ramer-Douglas-Peucker-line-simplification new file mode 120000 index 0000000000..b719791f41 --- /dev/null +++ b/Lang/ALGOL-68/Ramer-Douglas-Peucker-line-simplification @@ -0,0 +1 @@ +../../Task/Ramer-Douglas-Peucker-line-simplification/ALGOL-68 \ No newline at end of file diff --git a/Lang/ALGOL-M/Exponentiation-order b/Lang/ALGOL-M/Exponentiation-order new file mode 120000 index 0000000000..b37e574b53 --- /dev/null +++ b/Lang/ALGOL-M/Exponentiation-order @@ -0,0 +1 @@ +../../Task/Exponentiation-order/ALGOL-M \ No newline at end of file diff --git a/Lang/ALGOL-W/100-doors b/Lang/ALGOL-W/100-doors deleted file mode 120000 index 954c02976a..0000000000 --- a/Lang/ALGOL-W/100-doors +++ /dev/null @@ -1 +0,0 @@ -../../Task/100-doors/ALGOL-W \ No newline at end of file diff --git a/Lang/ALGOL-W/Jacobi-symbol b/Lang/ALGOL-W/Jacobi-symbol new file mode 120000 index 0000000000..9d2230fbff --- /dev/null +++ b/Lang/ALGOL-W/Jacobi-symbol @@ -0,0 +1 @@ +../../Task/Jacobi-symbol/ALGOL-W \ No newline at end of file diff --git a/Lang/ALGOL-W/Numbers-which-are-not-the-sum-of-distinct-squares b/Lang/ALGOL-W/Numbers-which-are-not-the-sum-of-distinct-squares new file mode 120000 index 0000000000..d2256bcafe --- /dev/null +++ b/Lang/ALGOL-W/Numbers-which-are-not-the-sum-of-distinct-squares @@ -0,0 +1 @@ +../../Task/Numbers-which-are-not-the-sum-of-distinct-squares/ALGOL-W \ No newline at end of file diff --git a/Lang/APL/Align-columns b/Lang/APL/Align-columns new file mode 120000 index 0000000000..b966dedf04 --- /dev/null +++ b/Lang/APL/Align-columns @@ -0,0 +1 @@ +../../Task/Align-columns/APL \ No newline at end of file diff --git a/Lang/APL/Longest-common-substring b/Lang/APL/Longest-common-substring new file mode 120000 index 0000000000..dd75194fe4 --- /dev/null +++ b/Lang/APL/Longest-common-substring @@ -0,0 +1 @@ +../../Task/Longest-common-substring/APL \ No newline at end of file diff --git a/Lang/AWK/Deceptive-numbers b/Lang/AWK/Deceptive-numbers new file mode 120000 index 0000000000..8f879c57e0 --- /dev/null +++ b/Lang/AWK/Deceptive-numbers @@ -0,0 +1 @@ +../../Task/Deceptive-numbers/AWK \ No newline at end of file diff --git a/Lang/Acornsoft-Lisp/Search-a-list b/Lang/Acornsoft-Lisp/Search-a-list new file mode 120000 index 0000000000..80011d9a5b --- /dev/null +++ b/Lang/Acornsoft-Lisp/Search-a-list @@ -0,0 +1 @@ +../../Task/Search-a-list/Acornsoft-Lisp \ No newline at end of file diff --git a/Lang/Amazing-Hopper/Anagrams b/Lang/Amazing-Hopper/Anagrams new file mode 120000 index 0000000000..0666803cc3 --- /dev/null +++ b/Lang/Amazing-Hopper/Anagrams @@ -0,0 +1 @@ +../../Task/Anagrams/Amazing-Hopper \ No newline at end of file diff --git a/Lang/Amazing-Hopper/Arithmetic-evaluation b/Lang/Amazing-Hopper/Arithmetic-evaluation new file mode 120000 index 0000000000..090fde0f4b --- /dev/null +++ b/Lang/Amazing-Hopper/Arithmetic-evaluation @@ -0,0 +1 @@ +../../Task/Arithmetic-evaluation/Amazing-Hopper \ No newline at end of file diff --git a/Lang/Amazing-Hopper/Averages-Median b/Lang/Amazing-Hopper/Averages-Median new file mode 120000 index 0000000000..85188aa532 --- /dev/null +++ b/Lang/Amazing-Hopper/Averages-Median @@ -0,0 +1 @@ +../../Task/Averages-Median/Amazing-Hopper \ No newline at end of file diff --git a/Lang/Amazing-Hopper/Babbage-problem b/Lang/Amazing-Hopper/Babbage-problem new file mode 120000 index 0000000000..fbd53ae54a --- /dev/null +++ b/Lang/Amazing-Hopper/Babbage-problem @@ -0,0 +1 @@ +../../Task/Babbage-problem/Amazing-Hopper \ No newline at end of file diff --git a/Lang/Amazing-Hopper/Balanced-brackets b/Lang/Amazing-Hopper/Balanced-brackets new file mode 120000 index 0000000000..22c365c13b --- /dev/null +++ b/Lang/Amazing-Hopper/Balanced-brackets @@ -0,0 +1 @@ +../../Task/Balanced-brackets/Amazing-Hopper \ No newline at end of file diff --git a/Lang/Amazing-Hopper/Cantor-set b/Lang/Amazing-Hopper/Cantor-set new file mode 120000 index 0000000000..b7d83aa2d8 --- /dev/null +++ b/Lang/Amazing-Hopper/Cantor-set @@ -0,0 +1 @@ +../../Task/Cantor-set/Amazing-Hopper \ No newline at end of file diff --git a/Lang/Amazing-Hopper/Count-in-octal b/Lang/Amazing-Hopper/Count-in-octal new file mode 120000 index 0000000000..db01d0d594 --- /dev/null +++ b/Lang/Amazing-Hopper/Count-in-octal @@ -0,0 +1 @@ +../../Task/Count-in-octal/Amazing-Hopper \ No newline at end of file diff --git a/Lang/Amazing-Hopper/Disarium-numbers b/Lang/Amazing-Hopper/Disarium-numbers new file mode 120000 index 0000000000..ce173c6822 --- /dev/null +++ b/Lang/Amazing-Hopper/Disarium-numbers @@ -0,0 +1 @@ +../../Task/Disarium-numbers/Amazing-Hopper \ No newline at end of file diff --git a/Lang/Amazing-Hopper/Dot-product b/Lang/Amazing-Hopper/Dot-product new file mode 120000 index 0000000000..6bc7d5ea07 --- /dev/null +++ b/Lang/Amazing-Hopper/Dot-product @@ -0,0 +1 @@ +../../Task/Dot-product/Amazing-Hopper \ No newline at end of file diff --git a/Lang/Amazing-Hopper/Formatted-numeric-output b/Lang/Amazing-Hopper/Formatted-numeric-output new file mode 120000 index 0000000000..36d6f264bf --- /dev/null +++ b/Lang/Amazing-Hopper/Formatted-numeric-output @@ -0,0 +1 @@ +../../Task/Formatted-numeric-output/Amazing-Hopper \ No newline at end of file diff --git a/Lang/Amazing-Hopper/Hailstone-sequence b/Lang/Amazing-Hopper/Hailstone-sequence new file mode 120000 index 0000000000..c1e9f894b1 --- /dev/null +++ b/Lang/Amazing-Hopper/Hailstone-sequence @@ -0,0 +1 @@ +../../Task/Hailstone-sequence/Amazing-Hopper \ No newline at end of file diff --git a/Lang/Amazing-Hopper/Haversine-formula b/Lang/Amazing-Hopper/Haversine-formula new file mode 120000 index 0000000000..01efd99770 --- /dev/null +++ b/Lang/Amazing-Hopper/Haversine-formula @@ -0,0 +1 @@ +../../Task/Haversine-formula/Amazing-Hopper \ No newline at end of file diff --git a/Lang/Amazing-Hopper/Knuth-shuffle b/Lang/Amazing-Hopper/Knuth-shuffle new file mode 120000 index 0000000000..b4397143ef --- /dev/null +++ b/Lang/Amazing-Hopper/Knuth-shuffle @@ -0,0 +1 @@ +../../Task/Knuth-shuffle/Amazing-Hopper \ No newline at end of file diff --git a/Lang/Amazing-Hopper/M-bius-function b/Lang/Amazing-Hopper/M-bius-function new file mode 120000 index 0000000000..3fa2be430d --- /dev/null +++ b/Lang/Amazing-Hopper/M-bius-function @@ -0,0 +1 @@ +../../Task/M-bius-function/Amazing-Hopper \ No newline at end of file diff --git a/Lang/Amazing-Hopper/Magic-squares-of-doubly-even-order b/Lang/Amazing-Hopper/Magic-squares-of-doubly-even-order new file mode 120000 index 0000000000..3304664c75 --- /dev/null +++ b/Lang/Amazing-Hopper/Magic-squares-of-doubly-even-order @@ -0,0 +1 @@ +../../Task/Magic-squares-of-doubly-even-order/Amazing-Hopper \ No newline at end of file diff --git a/Lang/Amazing-Hopper/Magnanimous-numbers b/Lang/Amazing-Hopper/Magnanimous-numbers new file mode 120000 index 0000000000..d82f2324d0 --- /dev/null +++ b/Lang/Amazing-Hopper/Magnanimous-numbers @@ -0,0 +1 @@ +../../Task/Magnanimous-numbers/Amazing-Hopper \ No newline at end of file diff --git a/Lang/Amazing-Hopper/Matrix-digital-rain b/Lang/Amazing-Hopper/Matrix-digital-rain new file mode 120000 index 0000000000..c42a700f67 --- /dev/null +++ b/Lang/Amazing-Hopper/Matrix-digital-rain @@ -0,0 +1 @@ +../../Task/Matrix-digital-rain/Amazing-Hopper \ No newline at end of file diff --git a/Lang/Amazing-Hopper/Mayan-numerals b/Lang/Amazing-Hopper/Mayan-numerals new file mode 120000 index 0000000000..74c0c29a62 --- /dev/null +++ b/Lang/Amazing-Hopper/Mayan-numerals @@ -0,0 +1 @@ +../../Task/Mayan-numerals/Amazing-Hopper \ No newline at end of file diff --git a/Lang/Amazing-Hopper/Middle-three-digits b/Lang/Amazing-Hopper/Middle-three-digits new file mode 120000 index 0000000000..c7c41225de --- /dev/null +++ b/Lang/Amazing-Hopper/Middle-three-digits @@ -0,0 +1 @@ +../../Task/Middle-three-digits/Amazing-Hopper \ No newline at end of file diff --git a/Lang/Amazing-Hopper/One-dimensional-cellular-automata b/Lang/Amazing-Hopper/One-dimensional-cellular-automata new file mode 120000 index 0000000000..47a2f89f22 --- /dev/null +++ b/Lang/Amazing-Hopper/One-dimensional-cellular-automata @@ -0,0 +1 @@ +../../Task/One-dimensional-cellular-automata/Amazing-Hopper \ No newline at end of file diff --git a/Lang/Amazing-Hopper/Ordered-words b/Lang/Amazing-Hopper/Ordered-words new file mode 120000 index 0000000000..79f4afa7b3 --- /dev/null +++ b/Lang/Amazing-Hopper/Ordered-words @@ -0,0 +1 @@ +../../Task/Ordered-words/Amazing-Hopper \ No newline at end of file diff --git a/Lang/Amazing-Hopper/Pseudo-random-numbers-Middle-square-method b/Lang/Amazing-Hopper/Pseudo-random-numbers-Middle-square-method new file mode 120000 index 0000000000..fde29893bc --- /dev/null +++ b/Lang/Amazing-Hopper/Pseudo-random-numbers-Middle-square-method @@ -0,0 +1 @@ +../../Task/Pseudo-random-numbers-Middle-square-method/Amazing-Hopper \ No newline at end of file diff --git a/Lang/Amazing-Hopper/Return-multiple-values b/Lang/Amazing-Hopper/Return-multiple-values new file mode 120000 index 0000000000..989a978413 --- /dev/null +++ b/Lang/Amazing-Hopper/Return-multiple-values @@ -0,0 +1 @@ +../../Task/Return-multiple-values/Amazing-Hopper \ No newline at end of file diff --git a/Lang/Amazing-Hopper/Run-length-encoding b/Lang/Amazing-Hopper/Run-length-encoding new file mode 120000 index 0000000000..c9540874b6 --- /dev/null +++ b/Lang/Amazing-Hopper/Run-length-encoding @@ -0,0 +1 @@ +../../Task/Run-length-encoding/Amazing-Hopper \ No newline at end of file diff --git a/Lang/Amazing-Hopper/Smith-numbers b/Lang/Amazing-Hopper/Smith-numbers new file mode 120000 index 0000000000..9f7a72e850 --- /dev/null +++ b/Lang/Amazing-Hopper/Smith-numbers @@ -0,0 +1 @@ +../../Task/Smith-numbers/Amazing-Hopper \ No newline at end of file diff --git a/Lang/Amazing-Hopper/Statistics-Basic b/Lang/Amazing-Hopper/Statistics-Basic new file mode 120000 index 0000000000..bfa2d08b49 --- /dev/null +++ b/Lang/Amazing-Hopper/Statistics-Basic @@ -0,0 +1 @@ +../../Task/Statistics-Basic/Amazing-Hopper \ No newline at end of file diff --git a/Lang/Amazing-Hopper/Successive-prime-differences b/Lang/Amazing-Hopper/Successive-prime-differences new file mode 120000 index 0000000000..efd8572186 --- /dev/null +++ b/Lang/Amazing-Hopper/Successive-prime-differences @@ -0,0 +1 @@ +../../Task/Successive-prime-differences/Amazing-Hopper \ No newline at end of file diff --git a/Lang/Amazing-Hopper/Super-d-numbers b/Lang/Amazing-Hopper/Super-d-numbers new file mode 120000 index 0000000000..1770d7a856 --- /dev/null +++ b/Lang/Amazing-Hopper/Super-d-numbers @@ -0,0 +1 @@ +../../Task/Super-d-numbers/Amazing-Hopper \ No newline at end of file diff --git a/Lang/Amazing-Hopper/Symmetric-difference b/Lang/Amazing-Hopper/Symmetric-difference new file mode 120000 index 0000000000..1af0b3c084 --- /dev/null +++ b/Lang/Amazing-Hopper/Symmetric-difference @@ -0,0 +1 @@ +../../Task/Symmetric-difference/Amazing-Hopper \ No newline at end of file diff --git a/Lang/Amazing-Hopper/Take-notes-on-the-command-line b/Lang/Amazing-Hopper/Take-notes-on-the-command-line new file mode 120000 index 0000000000..2fd4c913c8 --- /dev/null +++ b/Lang/Amazing-Hopper/Take-notes-on-the-command-line @@ -0,0 +1 @@ +../../Task/Take-notes-on-the-command-line/Amazing-Hopper \ No newline at end of file diff --git a/Lang/Amazing-Hopper/Text-processing-2 b/Lang/Amazing-Hopper/Text-processing-2 new file mode 120000 index 0000000000..f3d3800aca --- /dev/null +++ b/Lang/Amazing-Hopper/Text-processing-2 @@ -0,0 +1 @@ +../../Task/Text-processing-2/Amazing-Hopper \ No newline at end of file diff --git a/Lang/Amazing-Hopper/Truth-table b/Lang/Amazing-Hopper/Truth-table new file mode 120000 index 0000000000..14882232f9 --- /dev/null +++ b/Lang/Amazing-Hopper/Truth-table @@ -0,0 +1 @@ +../../Task/Truth-table/Amazing-Hopper \ No newline at end of file diff --git a/Lang/Amazing-Hopper/Van-Eck-sequence b/Lang/Amazing-Hopper/Van-Eck-sequence new file mode 120000 index 0000000000..0c660f0481 --- /dev/null +++ b/Lang/Amazing-Hopper/Van-Eck-sequence @@ -0,0 +1 @@ +../../Task/Van-Eck-sequence/Amazing-Hopper \ No newline at end of file diff --git a/Lang/AppleScript/Multifactorial b/Lang/AppleScript/Multifactorial new file mode 120000 index 0000000000..9d3c79cdc6 --- /dev/null +++ b/Lang/AppleScript/Multifactorial @@ -0,0 +1 @@ +../../Task/Multifactorial/AppleScript \ No newline at end of file diff --git a/Lang/Applesoft-BASIC/Catalan-numbers-Pascals-triangle b/Lang/Applesoft-BASIC/Catalan-numbers-Pascals-triangle new file mode 120000 index 0000000000..7b0441411f --- /dev/null +++ b/Lang/Applesoft-BASIC/Catalan-numbers-Pascals-triangle @@ -0,0 +1 @@ +../../Task/Catalan-numbers-Pascals-triangle/Applesoft-BASIC \ No newline at end of file diff --git a/Lang/Applesoft-BASIC/Pig-the-dice-game b/Lang/Applesoft-BASIC/Pig-the-dice-game new file mode 120000 index 0000000000..47c16eca5c --- /dev/null +++ b/Lang/Applesoft-BASIC/Pig-the-dice-game @@ -0,0 +1 @@ +../../Task/Pig-the-dice-game/Applesoft-BASIC \ No newline at end of file diff --git a/Lang/Applesoft-BASIC/Recamans-sequence b/Lang/Applesoft-BASIC/Recamans-sequence new file mode 120000 index 0000000000..1d370af4f0 --- /dev/null +++ b/Lang/Applesoft-BASIC/Recamans-sequence @@ -0,0 +1 @@ +../../Task/Recamans-sequence/Applesoft-BASIC \ No newline at end of file diff --git a/Lang/Applesoft-BASIC/String-interpolation-included- b/Lang/Applesoft-BASIC/String-interpolation-included- new file mode 120000 index 0000000000..c235a3fcea --- /dev/null +++ b/Lang/Applesoft-BASIC/String-interpolation-included- @@ -0,0 +1 @@ +../../Task/String-interpolation-included-/Applesoft-BASIC \ No newline at end of file diff --git a/Lang/BASIC/Longest-string-challenge b/Lang/BASIC/Longest-string-challenge deleted file mode 120000 index 739abebd3a..0000000000 --- a/Lang/BASIC/Longest-string-challenge +++ /dev/null @@ -1 +0,0 @@ -../../Task/Longest-string-challenge/BASIC \ No newline at end of file diff --git a/Lang/BASIC/One-dimensional-cellular-automata b/Lang/BASIC/One-dimensional-cellular-automata deleted file mode 120000 index 91d5b5ff5e..0000000000 --- a/Lang/BASIC/One-dimensional-cellular-automata +++ /dev/null @@ -1 +0,0 @@ -../../Task/One-dimensional-cellular-automata/BASIC \ No newline at end of file diff --git a/Lang/BASIC/Sorting-algorithms-Gnome-sort b/Lang/BASIC/Sorting-algorithms-Gnome-sort deleted file mode 120000 index ce27855f21..0000000000 --- a/Lang/BASIC/Sorting-algorithms-Gnome-sort +++ /dev/null @@ -1 +0,0 @@ -../../Task/Sorting-algorithms-Gnome-sort/BASIC \ No newline at end of file diff --git a/Lang/BASIC256/21-game b/Lang/BASIC256/21-game new file mode 120000 index 0000000000..6c7c8089e2 --- /dev/null +++ b/Lang/BASIC256/21-game @@ -0,0 +1 @@ +../../Task/21-game/BASIC256 \ No newline at end of file diff --git a/Lang/BASIC256/Achilles-numbers b/Lang/BASIC256/Achilles-numbers new file mode 120000 index 0000000000..13d43c8909 --- /dev/null +++ b/Lang/BASIC256/Achilles-numbers @@ -0,0 +1 @@ +../../Task/Achilles-numbers/BASIC256 \ No newline at end of file diff --git a/Lang/BASIC256/Benfords-law b/Lang/BASIC256/Benfords-law new file mode 120000 index 0000000000..adf7036425 --- /dev/null +++ b/Lang/BASIC256/Benfords-law @@ -0,0 +1 @@ +../../Task/Benfords-law/BASIC256 \ No newline at end of file diff --git a/Lang/BASIC256/Blum-integer b/Lang/BASIC256/Blum-integer new file mode 120000 index 0000000000..6114c8c1bc --- /dev/null +++ b/Lang/BASIC256/Blum-integer @@ -0,0 +1 @@ +../../Task/Blum-integer/BASIC256 \ No newline at end of file diff --git a/Lang/BASIC256/Casting-out-nines b/Lang/BASIC256/Casting-out-nines new file mode 120000 index 0000000000..670ea3d048 --- /dev/null +++ b/Lang/BASIC256/Casting-out-nines @@ -0,0 +1 @@ +../../Task/Casting-out-nines/BASIC256 \ No newline at end of file diff --git a/Lang/BASIC256/Determine-if-a-string-has-all-unique-characters b/Lang/BASIC256/Determine-if-a-string-has-all-unique-characters new file mode 120000 index 0000000000..134627daea --- /dev/null +++ b/Lang/BASIC256/Determine-if-a-string-has-all-unique-characters @@ -0,0 +1 @@ +../../Task/Determine-if-a-string-has-all-unique-characters/BASIC256 \ No newline at end of file diff --git a/Lang/BASIC256/Equal-prime-and-composite-sums b/Lang/BASIC256/Equal-prime-and-composite-sums new file mode 120000 index 0000000000..187242266b --- /dev/null +++ b/Lang/BASIC256/Equal-prime-and-composite-sums @@ -0,0 +1 @@ +../../Task/Equal-prime-and-composite-sums/BASIC256 \ No newline at end of file diff --git a/Lang/BASIC256/Longest-string-challenge b/Lang/BASIC256/Longest-string-challenge new file mode 120000 index 0000000000..46b7ee20d4 --- /dev/null +++ b/Lang/BASIC256/Longest-string-challenge @@ -0,0 +1 @@ +../../Task/Longest-string-challenge/BASIC256 \ No newline at end of file diff --git a/Lang/BASIC256/Padovan-n-step-number-sequences b/Lang/BASIC256/Padovan-n-step-number-sequences new file mode 120000 index 0000000000..96835908bd --- /dev/null +++ b/Lang/BASIC256/Padovan-n-step-number-sequences @@ -0,0 +1 @@ +../../Task/Padovan-n-step-number-sequences/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 new file mode 120000 index 0000000000..1cfd728c9c --- /dev/null +++ b/Lang/BASIC256/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors @@ -0,0 +1 @@ +../../Task/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors/BASIC256 \ No newline at end of file diff --git a/Lang/BASIC256/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/BASIC256/Sequence:-smallest-number-with-exactly-n-divisors new file mode 120000 index 0000000000..f838adf5dc --- /dev/null +++ b/Lang/BASIC256/Sequence:-smallest-number-with-exactly-n-divisors @@ -0,0 +1 @@ +../../Task/Sequence:-smallest-number-with-exactly-n-divisors/BASIC256 \ No newline at end of file diff --git a/Lang/BASIC256/Sorting-algorithms-Bogosort b/Lang/BASIC256/Sorting-algorithms-Bogosort new file mode 120000 index 0000000000..30a3f4e141 --- /dev/null +++ b/Lang/BASIC256/Sorting-algorithms-Bogosort @@ -0,0 +1 @@ +../../Task/Sorting-algorithms-Bogosort/BASIC256 \ No newline at end of file diff --git a/Lang/BASIC256/Sorting-algorithms-Gnome-sort b/Lang/BASIC256/Sorting-algorithms-Gnome-sort new file mode 120000 index 0000000000..c4bf6071a8 --- /dev/null +++ b/Lang/BASIC256/Sorting-algorithms-Gnome-sort @@ -0,0 +1 @@ +../../Task/Sorting-algorithms-Gnome-sort/BASIC256 \ No newline at end of file diff --git a/Lang/BASIC256/Subleq b/Lang/BASIC256/Subleq new file mode 120000 index 0000000000..1129f78a82 --- /dev/null +++ b/Lang/BASIC256/Subleq @@ -0,0 +1 @@ +../../Task/Subleq/BASIC256 \ No newline at end of file diff --git a/Lang/BASIC256/Van-Eck-sequence b/Lang/BASIC256/Van-Eck-sequence new file mode 120000 index 0000000000..9c3b8e66bb --- /dev/null +++ b/Lang/BASIC256/Van-Eck-sequence @@ -0,0 +1 @@ +../../Task/Van-Eck-sequence/BASIC256 \ No newline at end of file diff --git a/Lang/BBC-BASIC/Angles-geometric-normalization-and-conversion b/Lang/BBC-BASIC/Angles-geometric-normalization-and-conversion new file mode 120000 index 0000000000..92a059e0e7 --- /dev/null +++ b/Lang/BBC-BASIC/Angles-geometric-normalization-and-conversion @@ -0,0 +1 @@ +../../Task/Angles-geometric-normalization-and-conversion/BBC-BASIC \ No newline at end of file diff --git a/Lang/BBC-BASIC/Archimedean-spiral b/Lang/BBC-BASIC/Archimedean-spiral new file mode 120000 index 0000000000..f1badc9c0e --- /dev/null +++ b/Lang/BBC-BASIC/Archimedean-spiral @@ -0,0 +1 @@ +../../Task/Archimedean-spiral/BBC-BASIC \ No newline at end of file diff --git a/Lang/BBC-BASIC/Bioinformatics-Sequence-mutation b/Lang/BBC-BASIC/Bioinformatics-Sequence-mutation new file mode 120000 index 0000000000..0c458bc910 --- /dev/null +++ b/Lang/BBC-BASIC/Bioinformatics-Sequence-mutation @@ -0,0 +1 @@ +../../Task/Bioinformatics-Sequence-mutation/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/Calculating-the-value-of-e b/Lang/BBC-BASIC/Calculating-the-value-of-e new file mode 120000 index 0000000000..5059f4885f --- /dev/null +++ b/Lang/BBC-BASIC/Calculating-the-value-of-e @@ -0,0 +1 @@ +../../Task/Calculating-the-value-of-e/BBC-BASIC \ No newline at end of file diff --git a/Lang/BBC-BASIC/Currency b/Lang/BBC-BASIC/Currency new file mode 120000 index 0000000000..93e2e05dfe --- /dev/null +++ b/Lang/BBC-BASIC/Currency @@ -0,0 +1 @@ +../../Task/Currency/BBC-BASIC \ No newline at end of file diff --git a/Lang/BBC-BASIC/Cyclops-numbers b/Lang/BBC-BASIC/Cyclops-numbers new file mode 120000 index 0000000000..5bad59ea26 --- /dev/null +++ b/Lang/BBC-BASIC/Cyclops-numbers @@ -0,0 +1 @@ +../../Task/Cyclops-numbers/BBC-BASIC \ No newline at end of file diff --git a/Lang/BBC-BASIC/Emirp-primes b/Lang/BBC-BASIC/Emirp-primes new file mode 120000 index 0000000000..83e10a9c96 --- /dev/null +++ b/Lang/BBC-BASIC/Emirp-primes @@ -0,0 +1 @@ +../../Task/Emirp-primes/BBC-BASIC \ No newline at end of file diff --git a/Lang/BBC-BASIC/Entropy-Narcissist b/Lang/BBC-BASIC/Entropy-Narcissist new file mode 120000 index 0000000000..8b3e51a12a --- /dev/null +++ b/Lang/BBC-BASIC/Entropy-Narcissist @@ -0,0 +1 @@ +../../Task/Entropy-Narcissist/BBC-BASIC \ No newline at end of file diff --git a/Lang/BBC-BASIC/Fusc-sequence b/Lang/BBC-BASIC/Fusc-sequence new file mode 120000 index 0000000000..4dbe128472 --- /dev/null +++ b/Lang/BBC-BASIC/Fusc-sequence @@ -0,0 +1 @@ +../../Task/Fusc-sequence/BBC-BASIC \ No newline at end of file diff --git a/Lang/BBC-BASIC/Generate-Chess960-starting-position b/Lang/BBC-BASIC/Generate-Chess960-starting-position new file mode 120000 index 0000000000..ab2f96f714 --- /dev/null +++ b/Lang/BBC-BASIC/Generate-Chess960-starting-position @@ -0,0 +1 @@ +../../Task/Generate-Chess960-starting-position/BBC-BASIC \ No newline at end of file diff --git a/Lang/BBC-BASIC/Hex-words b/Lang/BBC-BASIC/Hex-words new file mode 120000 index 0000000000..3149fa1db8 --- /dev/null +++ b/Lang/BBC-BASIC/Hex-words @@ -0,0 +1 @@ +../../Task/Hex-words/BBC-BASIC \ No newline at end of file diff --git a/Lang/BBC-BASIC/Hickerson-series-of-almost-integers b/Lang/BBC-BASIC/Hickerson-series-of-almost-integers new file mode 120000 index 0000000000..db668e472e --- /dev/null +++ b/Lang/BBC-BASIC/Hickerson-series-of-almost-integers @@ -0,0 +1 @@ +../../Task/Hickerson-series-of-almost-integers/BBC-BASIC \ No newline at end of file diff --git a/Lang/BBC-BASIC/Humble-numbers b/Lang/BBC-BASIC/Humble-numbers new file mode 120000 index 0000000000..73b4b7f4ea --- /dev/null +++ b/Lang/BBC-BASIC/Humble-numbers @@ -0,0 +1 @@ +../../Task/Humble-numbers/BBC-BASIC \ No newline at end of file diff --git a/Lang/BBC-BASIC/I-before-E-except-after-C b/Lang/BBC-BASIC/I-before-E-except-after-C new file mode 120000 index 0000000000..5cfe84a822 --- /dev/null +++ b/Lang/BBC-BASIC/I-before-E-except-after-C @@ -0,0 +1 @@ +../../Task/I-before-E-except-after-C/BBC-BASIC \ No newline at end of file diff --git a/Lang/BBC-BASIC/Jaro-similarity b/Lang/BBC-BASIC/Jaro-similarity new file mode 120000 index 0000000000..fe6ec92687 --- /dev/null +++ b/Lang/BBC-BASIC/Jaro-similarity @@ -0,0 +1 @@ +../../Task/Jaro-similarity/BBC-BASIC \ No newline at end of file diff --git a/Lang/BBC-BASIC/Julia-set b/Lang/BBC-BASIC/Julia-set new file mode 120000 index 0000000000..658dd765c9 --- /dev/null +++ b/Lang/BBC-BASIC/Julia-set @@ -0,0 +1 @@ +../../Task/Julia-set/BBC-BASIC \ No newline at end of file diff --git a/Lang/BBC-BASIC/Last-Friday-of-each-month b/Lang/BBC-BASIC/Last-Friday-of-each-month new file mode 120000 index 0000000000..d35bf9dc8f --- /dev/null +++ b/Lang/BBC-BASIC/Last-Friday-of-each-month @@ -0,0 +1 @@ +../../Task/Last-Friday-of-each-month/BBC-BASIC \ No newline at end of file diff --git a/Lang/BBC-BASIC/MAC-vendor-lookup b/Lang/BBC-BASIC/MAC-vendor-lookup new file mode 120000 index 0000000000..7d73c473a7 --- /dev/null +++ b/Lang/BBC-BASIC/MAC-vendor-lookup @@ -0,0 +1 @@ +../../Task/MAC-vendor-lookup/BBC-BASIC \ No newline at end of file diff --git a/Lang/BBC-BASIC/Magnanimous-numbers b/Lang/BBC-BASIC/Magnanimous-numbers new file mode 120000 index 0000000000..cdd9658301 --- /dev/null +++ b/Lang/BBC-BASIC/Magnanimous-numbers @@ -0,0 +1 @@ +../../Task/Magnanimous-numbers/BBC-BASIC \ No newline at end of file diff --git a/Lang/BBC-BASIC/Rosetta-Code-Find-unimplemented-tasks b/Lang/BBC-BASIC/Rosetta-Code-Find-unimplemented-tasks new file mode 120000 index 0000000000..c601198500 --- /dev/null +++ b/Lang/BBC-BASIC/Rosetta-Code-Find-unimplemented-tasks @@ -0,0 +1 @@ +../../Task/Rosetta-Code-Find-unimplemented-tasks/BBC-BASIC \ No newline at end of file diff --git a/Lang/BQN/00-LANG.txt b/Lang/BQN/00-LANG.txt index e77f39a3a0..9fc40a5cde 100644 --- a/Lang/BQN/00-LANG.txt +++ b/Lang/BQN/00-LANG.txt @@ -2,11 +2,14 @@ |checking=dynamic |exec=bytecode |gc=yes - |site=https://mlochbaum.github.io/BQN + |site=https://mlochbaum.github.io/BQN/ |parampass=value |safety=safe |bnf=https://mlochbaum.github.io/BQN/spec/grammar.html}}{{language programming paradigm|functional}}[[Category:Programming paradigm/Tacit]] BQN is a new (initially released 2020) [[wp:Array programming|array oriented]], [[functional_programming|functional]] programming language in the [[APL]] lineage, which aims to remove irregular and burdensome aspects of the APL tradition and put the great ideas on a firmer footing. While its use demands a solid understanding of functions and multidimensional arrays, BQN's focus on providing simple, consistent, and powerful array operations (and documentation!) makes it a good language for learning array programming and building stronger array intuition. -Documentation can be found at https://mlochbaum.github.io/BQN. \ No newline at end of file +Documentation can be found at https://mlochbaum.github.io/BQN/doc/. + +==Todo== +[[Tasks_not_implemented_in_BQN]] \ No newline at end of file diff --git a/Lang/BQN/Angle-difference-between-two-bearings b/Lang/BQN/Angle-difference-between-two-bearings new file mode 120000 index 0000000000..7a2d5afdfe --- /dev/null +++ b/Lang/BQN/Angle-difference-between-two-bearings @@ -0,0 +1 @@ +../../Task/Angle-difference-between-two-bearings/BQN \ No newline at end of file diff --git a/Lang/BQN/Apply-a-callback-to-an-array b/Lang/BQN/Apply-a-callback-to-an-array new file mode 120000 index 0000000000..0d1581adfa --- /dev/null +++ b/Lang/BQN/Apply-a-callback-to-an-array @@ -0,0 +1 @@ +../../Task/Apply-a-callback-to-an-array/BQN \ No newline at end of file diff --git a/Lang/BQN/Averages-Pythagorean-means b/Lang/BQN/Averages-Pythagorean-means new file mode 120000 index 0000000000..667a8f930b --- /dev/null +++ b/Lang/BQN/Averages-Pythagorean-means @@ -0,0 +1 @@ +../../Task/Averages-Pythagorean-means/BQN \ No newline at end of file diff --git a/Lang/BQN/Determine-if-a-string-is-numeric b/Lang/BQN/Determine-if-a-string-is-numeric new file mode 120000 index 0000000000..7756637024 --- /dev/null +++ b/Lang/BQN/Determine-if-a-string-is-numeric @@ -0,0 +1 @@ +../../Task/Determine-if-a-string-is-numeric/BQN \ No newline at end of file diff --git a/Lang/BQN/Leap-year b/Lang/BQN/Leap-year new file mode 120000 index 0000000000..b3a2268f78 --- /dev/null +++ b/Lang/BQN/Leap-year @@ -0,0 +1 @@ +../../Task/Leap-year/BQN \ No newline at end of file diff --git a/Lang/BQN/Longest-string-challenge b/Lang/BQN/Longest-string-challenge new file mode 120000 index 0000000000..bca36863c6 --- /dev/null +++ b/Lang/BQN/Longest-string-challenge @@ -0,0 +1 @@ +../../Task/Longest-string-challenge/BQN \ No newline at end of file diff --git a/Lang/BQN/Multifactorial b/Lang/BQN/Multifactorial new file mode 120000 index 0000000000..a2fe7ba313 --- /dev/null +++ b/Lang/BQN/Multifactorial @@ -0,0 +1 @@ +../../Task/Multifactorial/BQN \ No newline at end of file diff --git a/Lang/BQN/Program-name b/Lang/BQN/Program-name new file mode 120000 index 0000000000..e55b53a24c --- /dev/null +++ b/Lang/BQN/Program-name @@ -0,0 +1 @@ +../../Task/Program-name/BQN \ No newline at end of file diff --git a/Lang/BQN/Pseudo-random-numbers-Middle-square-method b/Lang/BQN/Pseudo-random-numbers-Middle-square-method new file mode 120000 index 0000000000..15e8169128 --- /dev/null +++ b/Lang/BQN/Pseudo-random-numbers-Middle-square-method @@ -0,0 +1 @@ +../../Task/Pseudo-random-numbers-Middle-square-method/BQN \ No newline at end of file diff --git a/Lang/BQN/Remove-duplicate-elements b/Lang/BQN/Remove-duplicate-elements new file mode 120000 index 0000000000..fc50c4ea75 --- /dev/null +++ b/Lang/BQN/Remove-duplicate-elements @@ -0,0 +1 @@ +../../Task/Remove-duplicate-elements/BQN \ No newline at end of file diff --git a/Lang/BQN/Reverse-words-in-a-string b/Lang/BQN/Reverse-words-in-a-string new file mode 120000 index 0000000000..b4a561c28a --- /dev/null +++ b/Lang/BQN/Reverse-words-in-a-string @@ -0,0 +1 @@ +../../Task/Reverse-words-in-a-string/BQN \ No newline at end of file diff --git a/Lang/BQN/Rot-13 b/Lang/BQN/Rot-13 new file mode 120000 index 0000000000..40de4f31ae --- /dev/null +++ b/Lang/BQN/Rot-13 @@ -0,0 +1 @@ +../../Task/Rot-13/BQN \ No newline at end of file diff --git a/Lang/BQN/Sequence-of-non-squares b/Lang/BQN/Sequence-of-non-squares new file mode 120000 index 0000000000..34c4c67548 --- /dev/null +++ b/Lang/BQN/Sequence-of-non-squares @@ -0,0 +1 @@ +../../Task/Sequence-of-non-squares/BQN \ No newline at end of file diff --git a/Lang/BQN/Sort-an-integer-array b/Lang/BQN/Sort-an-integer-array new file mode 120000 index 0000000000..0abf6c28d8 --- /dev/null +++ b/Lang/BQN/Sort-an-integer-array @@ -0,0 +1 @@ +../../Task/Sort-an-integer-array/BQN \ No newline at end of file diff --git a/Lang/BQN/Split-a-character-string-based-on-change-of-character b/Lang/BQN/Split-a-character-string-based-on-change-of-character new file mode 120000 index 0000000000..d35a0c943b --- /dev/null +++ b/Lang/BQN/Split-a-character-string-based-on-change-of-character @@ -0,0 +1 @@ +../../Task/Split-a-character-string-based-on-change-of-character/BQN \ No newline at end of file diff --git a/Lang/BQN/String-append b/Lang/BQN/String-append new file mode 120000 index 0000000000..e4188e5b03 --- /dev/null +++ b/Lang/BQN/String-append @@ -0,0 +1 @@ +../../Task/String-append/BQN \ No newline at end of file diff --git a/Lang/BQN/Test-integerness b/Lang/BQN/Test-integerness new file mode 120000 index 0000000000..da47d74420 --- /dev/null +++ b/Lang/BQN/Test-integerness @@ -0,0 +1 @@ +../../Task/Test-integerness/BQN \ No newline at end of file diff --git a/Lang/BootBASIC/00-LANG.txt b/Lang/BootBASIC/00-LANG.txt index a8f62b2d80..42d742f5c8 100644 --- a/Lang/BootBASIC/00-LANG.txt +++ b/Lang/BootBASIC/00-LANG.txt @@ -3,4 +3,8 @@ |tags=basic,bootbasic }} {{Implementation|BASIC}} -bootBASIC is an Integer BASIC interpreter created by Óscar Toledo Gutierrez that runs entirely within a boot sector on an x86-compatible machine, which is 512 bytes. \ No newline at end of file +bootBASIC is an Integer BASIC interpreter created by Óscar Toledo Gutierrez that runs entirely within a boot sector on an x86-compatible machine, which is 512 bytes. + +==See Also== +*[https://github.com/nanochess/bootBASIC bootBASIC on GitHub] +*[https://parkertomatoes.github.io/v86/?type=mbr&content=Dg4OHwcX%2FL8AgMYFDUd1%2BrwA%2F7gQfFCwPuhPAegRAQnAdA7olgGX86TD6GwACcB0WOjiAIA8DXRQv8V9igVHmEh0E5FW86Z1BljoyQD%2FJQHPR0de6%2BbotABQrDw9dDS%2BZ3zoJgHrqUAjIQ0xwFDoSwGWgDwNdAtYUOigAKzoKQF1%2BlhAPegDdeTD6IAAULA%2F6NgA6AMAX6vD6BwAgDwtdA6APCt141DoDQBZAcjr7VDoBAD32OvzRugfAIA8L3QOgDwqdcRQ6BAAWffp6%2B1Q6AcAWZGZ9%2Fnr4kboOQCsPCh1C%2Bi0%2F4A8KXQr6XL%2FPEBzBk7oOwDrHzxydQuAPG51Bq3kQLQAw%2BgFAJOLB8OsJB8AwLR%2BTkaAPCB0%2BsMx0rkKAPfxCcBSdAPo8f9YBDDreTHbrCwwPAqYk3MJuQoA9%2BEBw%2BvuTsPNIOhO%2F7kxwOhrAIH8%2Fv50BKP8%2FsNQXgUUAFDozf5YPSDOdfHD6DsAvoB%2BVl%2FoLwCqPAh1Ak9PPA118sOsPA10JjwidQ2sPCJ0D%2BgWADwNdfTDTuj9%2Fuh9%2F6w8O3UJw7QAzRY8DXUHsAroAgCwDbQOuwcAzRDDuRQA9%2BEFAIDDBG5ldwB8BWxpc3RrfARydW5MfQZwcmludIJ9BmlucHV0inwDaWYqfAVnb3RvSH0Hc3lzdGVtRn0BVao%3D Try bootBASIC in v86 in your browser] \ No newline at end of file diff --git a/Lang/BootBASIC/Fibonacci-sequence b/Lang/BootBASIC/Fibonacci-sequence new file mode 120000 index 0000000000..e7275cf6a0 --- /dev/null +++ b/Lang/BootBASIC/Fibonacci-sequence @@ -0,0 +1 @@ +../../Task/Fibonacci-sequence/BootBASIC \ No newline at end of file diff --git a/Lang/BootBASIC/Loops-Break b/Lang/BootBASIC/Loops-Break new file mode 120000 index 0000000000..6efa12814e --- /dev/null +++ b/Lang/BootBASIC/Loops-Break @@ -0,0 +1 @@ +../../Task/Loops-Break/BootBASIC \ No newline at end of file diff --git a/Lang/BootBASIC/Loops-N-plus-one-half b/Lang/BootBASIC/Loops-N-plus-one-half new file mode 120000 index 0000000000..6d9ca0cae0 --- /dev/null +++ b/Lang/BootBASIC/Loops-N-plus-one-half @@ -0,0 +1 @@ +../../Task/Loops-N-plus-one-half/BootBASIC \ No newline at end of file diff --git a/Lang/C++/ADFGVX-cipher b/Lang/C++/ADFGVX-cipher new file mode 120000 index 0000000000..98aa7139a3 --- /dev/null +++ b/Lang/C++/ADFGVX-cipher @@ -0,0 +1 @@ +../../Task/ADFGVX-cipher/C++ \ No newline at end of file diff --git a/Lang/C++/Own-digits-power-sum b/Lang/C++/Own-digits-power-sum new file mode 120000 index 0000000000..766e68b021 --- /dev/null +++ b/Lang/C++/Own-digits-power-sum @@ -0,0 +1 @@ +../../Task/Own-digits-power-sum/C++ \ No newline at end of file diff --git a/Lang/C++/Quoting-constructs b/Lang/C++/Quoting-constructs new file mode 120000 index 0000000000..85f4da28e3 --- /dev/null +++ b/Lang/C++/Quoting-constructs @@ -0,0 +1 @@ +../../Task/Quoting-constructs/C++ \ No newline at end of file diff --git a/Lang/C++/Table-creation-Postal-addresses b/Lang/C++/Table-creation-Postal-addresses new file mode 120000 index 0000000000..e821bbe93f --- /dev/null +++ b/Lang/C++/Table-creation-Postal-addresses @@ -0,0 +1 @@ +../../Task/Table-creation-Postal-addresses/C++ \ No newline at end of file diff --git a/Lang/C++/Total-circles-area b/Lang/C++/Total-circles-area new file mode 120000 index 0000000000..d9453103bd --- /dev/null +++ b/Lang/C++/Total-circles-area @@ -0,0 +1 @@ +../../Task/Total-circles-area/C++ \ No newline at end of file diff --git a/Lang/C++/Unicode-variable-names b/Lang/C++/Unicode-variable-names new file mode 120000 index 0000000000..229d06451e --- /dev/null +++ b/Lang/C++/Unicode-variable-names @@ -0,0 +1 @@ +../../Task/Unicode-variable-names/C++ \ No newline at end of file diff --git a/Lang/C++/Wasteful-equidigital-and-frugal-numbers b/Lang/C++/Wasteful-equidigital-and-frugal-numbers new file mode 120000 index 0000000000..ab51274f10 --- /dev/null +++ b/Lang/C++/Wasteful-equidigital-and-frugal-numbers @@ -0,0 +1 @@ +../../Task/Wasteful-equidigital-and-frugal-numbers/C++ \ No newline at end of file diff --git a/Lang/C++/Wordiff b/Lang/C++/Wordiff new file mode 120000 index 0000000000..13c6f44a9e --- /dev/null +++ b/Lang/C++/Wordiff @@ -0,0 +1 @@ +../../Task/Wordiff/C++ \ No newline at end of file diff --git a/Lang/C-sharp/Sphenic-numbers b/Lang/C-sharp/Sphenic-numbers new file mode 120000 index 0000000000..e745ee5efe --- /dev/null +++ b/Lang/C-sharp/Sphenic-numbers @@ -0,0 +1 @@ +../../Task/Sphenic-numbers/C-sharp \ No newline at end of file diff --git a/Lang/C/Search-in-paragraphs-text b/Lang/C/Search-in-paragraphs-text new file mode 120000 index 0000000000..11cd3d2def --- /dev/null +++ b/Lang/C/Search-in-paragraphs-text @@ -0,0 +1 @@ +../../Task/Search-in-paragraphs-text/C \ No newline at end of file diff --git a/Lang/Chipmunk-Basic/21-game b/Lang/Chipmunk-Basic/21-game new file mode 120000 index 0000000000..4144c99f1e --- /dev/null +++ b/Lang/Chipmunk-Basic/21-game @@ -0,0 +1 @@ +../../Task/21-game/Chipmunk-Basic \ No newline at end of file diff --git a/Lang/Chipmunk-Basic/Angle-difference-between-two-bearings b/Lang/Chipmunk-Basic/Angle-difference-between-two-bearings new file mode 120000 index 0000000000..a85e9ed412 --- /dev/null +++ b/Lang/Chipmunk-Basic/Angle-difference-between-two-bearings @@ -0,0 +1 @@ +../../Task/Angle-difference-between-two-bearings/Chipmunk-Basic \ No newline at end of file diff --git a/Lang/Chipmunk-Basic/Anonymous-recursion b/Lang/Chipmunk-Basic/Anonymous-recursion new file mode 120000 index 0000000000..fae9f410e3 --- /dev/null +++ b/Lang/Chipmunk-Basic/Anonymous-recursion @@ -0,0 +1 @@ +../../Task/Anonymous-recursion/Chipmunk-Basic \ No newline at end of file diff --git a/Lang/Chipmunk-Basic/Arithmetic-Integer b/Lang/Chipmunk-Basic/Arithmetic-Integer new file mode 120000 index 0000000000..b9b0d2d61f --- /dev/null +++ b/Lang/Chipmunk-Basic/Arithmetic-Integer @@ -0,0 +1 @@ +../../Task/Arithmetic-Integer/Chipmunk-Basic \ No newline at end of file diff --git a/Lang/Chipmunk-Basic/Array-length b/Lang/Chipmunk-Basic/Array-length new file mode 120000 index 0000000000..3b47a54405 --- /dev/null +++ b/Lang/Chipmunk-Basic/Array-length @@ -0,0 +1 @@ +../../Task/Array-length/Chipmunk-Basic \ No newline at end of file diff --git a/Lang/Chipmunk-Basic/Binary-digits b/Lang/Chipmunk-Basic/Binary-digits new file mode 120000 index 0000000000..f633724e32 --- /dev/null +++ b/Lang/Chipmunk-Basic/Binary-digits @@ -0,0 +1 @@ +../../Task/Binary-digits/Chipmunk-Basic \ No newline at end of file diff --git a/Lang/Chipmunk-Basic/Box-the-compass b/Lang/Chipmunk-Basic/Box-the-compass new file mode 120000 index 0000000000..a1cd1027f8 --- /dev/null +++ b/Lang/Chipmunk-Basic/Box-the-compass @@ -0,0 +1 @@ +../../Task/Box-the-compass/Chipmunk-Basic \ No newline at end of file diff --git a/Lang/Chipmunk-Basic/Cantor-set b/Lang/Chipmunk-Basic/Cantor-set new file mode 120000 index 0000000000..dff232c5bf --- /dev/null +++ b/Lang/Chipmunk-Basic/Cantor-set @@ -0,0 +1 @@ +../../Task/Cantor-set/Chipmunk-Basic \ No newline at end of file diff --git a/Lang/Chipmunk-Basic/Carmichael-3-strong-pseudoprimes b/Lang/Chipmunk-Basic/Carmichael-3-strong-pseudoprimes new file mode 120000 index 0000000000..64c40104c4 --- /dev/null +++ b/Lang/Chipmunk-Basic/Carmichael-3-strong-pseudoprimes @@ -0,0 +1 @@ +../../Task/Carmichael-3-strong-pseudoprimes/Chipmunk-Basic \ No newline at end of file diff --git a/Lang/Chipmunk-Basic/Casting-out-nines b/Lang/Chipmunk-Basic/Casting-out-nines new file mode 120000 index 0000000000..5a7c2dcac0 --- /dev/null +++ b/Lang/Chipmunk-Basic/Casting-out-nines @@ -0,0 +1 @@ +../../Task/Casting-out-nines/Chipmunk-Basic \ No newline at end of file diff --git a/Lang/Chipmunk-Basic/Catalan-numbers-Pascals-triangle b/Lang/Chipmunk-Basic/Catalan-numbers-Pascals-triangle new file mode 120000 index 0000000000..8fc59cdf4f --- /dev/null +++ b/Lang/Chipmunk-Basic/Catalan-numbers-Pascals-triangle @@ -0,0 +1 @@ +../../Task/Catalan-numbers-Pascals-triangle/Chipmunk-Basic \ No newline at end of file diff --git a/Lang/Chipmunk-Basic/Catamorphism b/Lang/Chipmunk-Basic/Catamorphism new file mode 120000 index 0000000000..db776ce5dd --- /dev/null +++ b/Lang/Chipmunk-Basic/Catamorphism @@ -0,0 +1 @@ +../../Task/Catamorphism/Chipmunk-Basic \ No newline at end of file diff --git a/Lang/Chipmunk-Basic/Character-codes b/Lang/Chipmunk-Basic/Character-codes new file mode 120000 index 0000000000..529877dba7 --- /dev/null +++ b/Lang/Chipmunk-Basic/Character-codes @@ -0,0 +1 @@ +../../Task/Character-codes/Chipmunk-Basic \ No newline at end of file diff --git a/Lang/Chipmunk-Basic/Determine-if-a-string-has-all-unique-characters b/Lang/Chipmunk-Basic/Determine-if-a-string-has-all-unique-characters new file mode 120000 index 0000000000..88c8574cc2 --- /dev/null +++ b/Lang/Chipmunk-Basic/Determine-if-a-string-has-all-unique-characters @@ -0,0 +1 @@ +../../Task/Determine-if-a-string-has-all-unique-characters/Chipmunk-Basic \ No newline at end of file diff --git a/Lang/Chipmunk-Basic/Disarium-numbers b/Lang/Chipmunk-Basic/Disarium-numbers new file mode 120000 index 0000000000..f8085142a1 --- /dev/null +++ b/Lang/Chipmunk-Basic/Disarium-numbers @@ -0,0 +1 @@ +../../Task/Disarium-numbers/Chipmunk-Basic \ No newline at end of file diff --git a/Lang/Chipmunk-Basic/Egyptian-division b/Lang/Chipmunk-Basic/Egyptian-division new file mode 120000 index 0000000000..234893fac4 --- /dev/null +++ b/Lang/Chipmunk-Basic/Egyptian-division @@ -0,0 +1 @@ +../../Task/Egyptian-division/Chipmunk-Basic \ No newline at end of file diff --git a/Lang/Chipmunk-Basic/Ethiopian-multiplication b/Lang/Chipmunk-Basic/Ethiopian-multiplication new file mode 120000 index 0000000000..bba9addcb7 --- /dev/null +++ b/Lang/Chipmunk-Basic/Ethiopian-multiplication @@ -0,0 +1 @@ +../../Task/Ethiopian-multiplication/Chipmunk-Basic \ No newline at end of file diff --git a/Lang/Chipmunk-Basic/Find-limit-of-recursion b/Lang/Chipmunk-Basic/Find-limit-of-recursion new file mode 120000 index 0000000000..45d2935cfe --- /dev/null +++ b/Lang/Chipmunk-Basic/Find-limit-of-recursion @@ -0,0 +1 @@ +../../Task/Find-limit-of-recursion/Chipmunk-Basic \ No newline at end of file diff --git a/Lang/Chipmunk-Basic/Greatest-common-divisor b/Lang/Chipmunk-Basic/Greatest-common-divisor new file mode 120000 index 0000000000..688f826236 --- /dev/null +++ b/Lang/Chipmunk-Basic/Greatest-common-divisor @@ -0,0 +1 @@ +../../Task/Greatest-common-divisor/Chipmunk-Basic \ No newline at end of file diff --git a/Lang/Chipmunk-Basic/Guess-the-number-With-feedback b/Lang/Chipmunk-Basic/Guess-the-number-With-feedback new file mode 120000 index 0000000000..02ea8c88d7 --- /dev/null +++ b/Lang/Chipmunk-Basic/Guess-the-number-With-feedback @@ -0,0 +1 @@ +../../Task/Guess-the-number-With-feedback/Chipmunk-Basic \ No newline at end of file diff --git a/Lang/Chipmunk-Basic/Logical-operations b/Lang/Chipmunk-Basic/Logical-operations new file mode 120000 index 0000000000..1eae3370d2 --- /dev/null +++ b/Lang/Chipmunk-Basic/Logical-operations @@ -0,0 +1 @@ +../../Task/Logical-operations/Chipmunk-Basic \ No newline at end of file diff --git a/Lang/Chipmunk-Basic/Longest-string-challenge b/Lang/Chipmunk-Basic/Longest-string-challenge new file mode 120000 index 0000000000..16c197c355 --- /dev/null +++ b/Lang/Chipmunk-Basic/Longest-string-challenge @@ -0,0 +1 @@ +../../Task/Longest-string-challenge/Chipmunk-Basic \ No newline at end of file diff --git a/Lang/Chipmunk-Basic/Magic-squares-of-odd-order b/Lang/Chipmunk-Basic/Magic-squares-of-odd-order new file mode 120000 index 0000000000..a9239c9a6f --- /dev/null +++ b/Lang/Chipmunk-Basic/Magic-squares-of-odd-order @@ -0,0 +1 @@ +../../Task/Magic-squares-of-odd-order/Chipmunk-Basic \ No newline at end of file diff --git a/Lang/Chipmunk-Basic/Minimum-multiple-of-m-where-digital-sum-equals-m b/Lang/Chipmunk-Basic/Minimum-multiple-of-m-where-digital-sum-equals-m new file mode 120000 index 0000000000..c3bc5a092d --- /dev/null +++ b/Lang/Chipmunk-Basic/Minimum-multiple-of-m-where-digital-sum-equals-m @@ -0,0 +1 @@ +../../Task/Minimum-multiple-of-m-where-digital-sum-equals-m/Chipmunk-Basic \ No newline at end of file diff --git a/Lang/Chipmunk-Basic/Morse-code b/Lang/Chipmunk-Basic/Morse-code new file mode 120000 index 0000000000..069e4c61b6 --- /dev/null +++ b/Lang/Chipmunk-Basic/Morse-code @@ -0,0 +1 @@ +../../Task/Morse-code/Chipmunk-Basic \ No newline at end of file diff --git a/Lang/Chipmunk-Basic/Padovan-n-step-number-sequences b/Lang/Chipmunk-Basic/Padovan-n-step-number-sequences new file mode 120000 index 0000000000..fbce2420d3 --- /dev/null +++ b/Lang/Chipmunk-Basic/Padovan-n-step-number-sequences @@ -0,0 +1 @@ +../../Task/Padovan-n-step-number-sequences/Chipmunk-Basic \ No newline at end of file diff --git a/Lang/Chipmunk-Basic/Pig-the-dice-game b/Lang/Chipmunk-Basic/Pig-the-dice-game new file mode 120000 index 0000000000..6dbe194257 --- /dev/null +++ b/Lang/Chipmunk-Basic/Pig-the-dice-game @@ -0,0 +1 @@ +../../Task/Pig-the-dice-game/Chipmunk-Basic \ No newline at end of file diff --git a/Lang/Chipmunk-Basic/Repeat-a-string b/Lang/Chipmunk-Basic/Repeat-a-string new file mode 120000 index 0000000000..dc67dccc15 --- /dev/null +++ b/Lang/Chipmunk-Basic/Repeat-a-string @@ -0,0 +1 @@ +../../Task/Repeat-a-string/Chipmunk-Basic \ No newline at end of file diff --git a/Lang/Chipmunk-Basic/Sequence-of-non-squares b/Lang/Chipmunk-Basic/Sequence-of-non-squares new file mode 120000 index 0000000000..70b50faaad --- /dev/null +++ b/Lang/Chipmunk-Basic/Sequence-of-non-squares @@ -0,0 +1 @@ +../../Task/Sequence-of-non-squares/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 new file mode 120000 index 0000000000..5df75dca56 --- /dev/null +++ b/Lang/Chipmunk-Basic/Sequence:-smallest-number-with-exactly-n-divisors @@ -0,0 +1 @@ +../../Task/Sequence:-smallest-number-with-exactly-n-divisors/Chipmunk-Basic \ No newline at end of file diff --git a/Lang/Chipmunk-Basic/Sorting-algorithms-Gnome-sort b/Lang/Chipmunk-Basic/Sorting-algorithms-Gnome-sort new file mode 120000 index 0000000000..0b812d3eff --- /dev/null +++ b/Lang/Chipmunk-Basic/Sorting-algorithms-Gnome-sort @@ -0,0 +1 @@ +../../Task/Sorting-algorithms-Gnome-sort/Chipmunk-Basic \ No newline at end of file diff --git a/Lang/Chipmunk-Basic/Sorting-algorithms-Quicksort b/Lang/Chipmunk-Basic/Sorting-algorithms-Quicksort new file mode 120000 index 0000000000..49de096b59 --- /dev/null +++ b/Lang/Chipmunk-Basic/Sorting-algorithms-Quicksort @@ -0,0 +1 @@ +../../Task/Sorting-algorithms-Quicksort/Chipmunk-Basic \ No newline at end of file diff --git a/Lang/Chipmunk-Basic/String-append b/Lang/Chipmunk-Basic/String-append new file mode 120000 index 0000000000..39fda96e4e --- /dev/null +++ b/Lang/Chipmunk-Basic/String-append @@ -0,0 +1 @@ +../../Task/String-append/Chipmunk-Basic \ No newline at end of file diff --git a/Lang/Chipmunk-Basic/String-case b/Lang/Chipmunk-Basic/String-case new file mode 120000 index 0000000000..0564614620 --- /dev/null +++ b/Lang/Chipmunk-Basic/String-case @@ -0,0 +1 @@ +../../Task/String-case/Chipmunk-Basic \ No newline at end of file diff --git a/Lang/Chipmunk-Basic/String-interpolation-included- b/Lang/Chipmunk-Basic/String-interpolation-included- new file mode 120000 index 0000000000..0fcd929e46 --- /dev/null +++ b/Lang/Chipmunk-Basic/String-interpolation-included- @@ -0,0 +1 @@ +../../Task/String-interpolation-included-/Chipmunk-Basic \ No newline at end of file diff --git a/Lang/Chipmunk-Basic/Van-Eck-sequence b/Lang/Chipmunk-Basic/Van-Eck-sequence new file mode 120000 index 0000000000..ec557b87cc --- /dev/null +++ b/Lang/Chipmunk-Basic/Van-Eck-sequence @@ -0,0 +1 @@ +../../Task/Van-Eck-sequence/Chipmunk-Basic \ No newline at end of file diff --git a/Lang/Component-Pascal/Sorting-algorithms-Merge-sort b/Lang/Component-Pascal/Sorting-algorithms-Merge-sort new file mode 120000 index 0000000000..9050341ad6 --- /dev/null +++ b/Lang/Component-Pascal/Sorting-algorithms-Merge-sort @@ -0,0 +1 @@ +../../Task/Sorting-algorithms-Merge-sort/Component-Pascal \ No newline at end of file diff --git a/Lang/Cowgol/Longest-common-substring b/Lang/Cowgol/Longest-common-substring new file mode 120000 index 0000000000..219b75f317 --- /dev/null +++ b/Lang/Cowgol/Longest-common-substring @@ -0,0 +1 @@ +../../Task/Longest-common-substring/Cowgol \ No newline at end of file diff --git a/Lang/Cowgol/Multifactorial b/Lang/Cowgol/Multifactorial new file mode 120000 index 0000000000..c8a5e64301 --- /dev/null +++ b/Lang/Cowgol/Multifactorial @@ -0,0 +1 @@ +../../Task/Multifactorial/Cowgol \ No newline at end of file diff --git a/Lang/Curto/00-LANG.txt b/Lang/Curto/00-LANG.txt new file mode 100644 index 0000000000..c2a3c801b1 --- /dev/null +++ b/Lang/Curto/00-LANG.txt @@ -0,0 +1,23 @@ +{{language|Curto +|exec=machine +|site=https://maleza.srht.site/curto.html +|gc=no +|parampass=reference +|untyped=yes +|tags=forth +}} + +Curto es una traducción completa de UF Forth al español. + +==Links== +*[https://maleza.srht.site/curto.html Sitio] + +{{Language programming paradigm|Concatenative}} +==Curto== + +Curto es una traducción completa de UF Forth al español. Actualmente el trabajo de tracucción está en progreso por lo que el código fuente aún no contiene caracteres especiales del idioma y la traducción de los comentarios aún no se ha completado. + +Este es un sistema Forth tradicional para la computadora virtual "uxn/varvara". "Curto" está escrito en Tal y Curto y provee una interface de texto interactiva y un editor de pantalla. El sistema no es enebrado, compila a código UXN nativo, pero actualmente solo un mínimo de optimizaciones son realizadas. El mapeo entre código fuente Curto e instrucciones de la VM es relativamente directo por lo que la pérformance debería ser mas que suficiente para todas salvo las más críticas de las situaciones. Las celdas son de 16 bits, el sistema completo ocupa alrededor de 25k de memoria, siendo necesarios otros 4k para memoria de pantalla y buffers. + +==Todo== +* [[Tasks not implemented in Curto]] \ No newline at end of file diff --git a/Lang/Curto/00-META.yaml b/Lang/Curto/00-META.yaml new file mode 100644 index 0000000000..ebc3825015 --- /dev/null +++ b/Lang/Curto/00-META.yaml @@ -0,0 +1,2 @@ +--- +from: http://rosettacode.org/wiki/Category:Curto diff --git a/Lang/Curto/Conditional-structures b/Lang/Curto/Conditional-structures new file mode 120000 index 0000000000..0ddebd80bc --- /dev/null +++ b/Lang/Curto/Conditional-structures @@ -0,0 +1 @@ +../../Task/Conditional-structures/Curto \ No newline at end of file diff --git a/Lang/Curto/Hello-world-Text b/Lang/Curto/Hello-world-Text new file mode 120000 index 0000000000..7e7d781c66 --- /dev/null +++ b/Lang/Curto/Hello-world-Text @@ -0,0 +1 @@ +../../Task/Hello-world-Text/Curto \ No newline at end of file diff --git a/Lang/D/Largest-proper-divisor-of-n b/Lang/D/Largest-proper-divisor-of-n new file mode 120000 index 0000000000..62b7fe70aa --- /dev/null +++ b/Lang/D/Largest-proper-divisor-of-n @@ -0,0 +1 @@ +../../Task/Largest-proper-divisor-of-n/D \ No newline at end of file diff --git a/Lang/Dart/Arithmetic-Integer b/Lang/Dart/Arithmetic-Integer new file mode 120000 index 0000000000..b0138d9c48 --- /dev/null +++ b/Lang/Dart/Arithmetic-Integer @@ -0,0 +1 @@ +../../Task/Arithmetic-Integer/Dart \ No newline at end of file diff --git a/Lang/Dart/Nth-root b/Lang/Dart/Nth-root new file mode 120000 index 0000000000..ff1dc1b2ec --- /dev/null +++ b/Lang/Dart/Nth-root @@ -0,0 +1 @@ +../../Task/Nth-root/Dart \ No newline at end of file diff --git a/Lang/Dart/Pythagoras-tree b/Lang/Dart/Pythagoras-tree new file mode 120000 index 0000000000..af9f37b604 --- /dev/null +++ b/Lang/Dart/Pythagoras-tree @@ -0,0 +1 @@ +../../Task/Pythagoras-tree/Dart \ No newline at end of file diff --git a/Lang/Dart/String-append b/Lang/Dart/String-append new file mode 120000 index 0000000000..c2bbf5b38e --- /dev/null +++ b/Lang/Dart/String-append @@ -0,0 +1 @@ +../../Task/String-append/Dart \ No newline at end of file diff --git a/Lang/Draco/Binary-digits b/Lang/Draco/Binary-digits new file mode 120000 index 0000000000..a5389aa8f6 --- /dev/null +++ b/Lang/Draco/Binary-digits @@ -0,0 +1 @@ +../../Task/Binary-digits/Draco \ No newline at end of file diff --git a/Lang/Draco/Count-the-coins b/Lang/Draco/Count-the-coins new file mode 120000 index 0000000000..f1018ebb94 --- /dev/null +++ b/Lang/Draco/Count-the-coins @@ -0,0 +1 @@ +../../Task/Count-the-coins/Draco \ No newline at end of file diff --git a/Lang/EDSAC-order-code/Josephus-problem b/Lang/EDSAC-order-code/Josephus-problem new file mode 120000 index 0000000000..bce73441c6 --- /dev/null +++ b/Lang/EDSAC-order-code/Josephus-problem @@ -0,0 +1 @@ +../../Task/Josephus-problem/EDSAC-order-code \ No newline at end of file diff --git a/Lang/EDSAC-order-code/Magic-squares-of-doubly-even-order b/Lang/EDSAC-order-code/Magic-squares-of-doubly-even-order new file mode 120000 index 0000000000..1753b89dcd --- /dev/null +++ b/Lang/EDSAC-order-code/Magic-squares-of-doubly-even-order @@ -0,0 +1 @@ +../../Task/Magic-squares-of-doubly-even-order/EDSAC-order-code \ No newline at end of file diff --git a/Lang/EDSAC-order-code/Magic-squares-of-odd-order b/Lang/EDSAC-order-code/Magic-squares-of-odd-order new file mode 120000 index 0000000000..1a44dde0cd --- /dev/null +++ b/Lang/EDSAC-order-code/Magic-squares-of-odd-order @@ -0,0 +1 @@ +../../Task/Magic-squares-of-odd-order/EDSAC-order-code \ No newline at end of file diff --git a/Lang/EDSAC-order-code/Magic-squares-of-singly-even-order b/Lang/EDSAC-order-code/Magic-squares-of-singly-even-order new file mode 120000 index 0000000000..68c523816d --- /dev/null +++ b/Lang/EDSAC-order-code/Magic-squares-of-singly-even-order @@ -0,0 +1 @@ +../../Task/Magic-squares-of-singly-even-order/EDSAC-order-code \ No newline at end of file diff --git a/Lang/EDSAC-order-code/Maze-generation b/Lang/EDSAC-order-code/Maze-generation new file mode 120000 index 0000000000..93d824a0ca --- /dev/null +++ b/Lang/EDSAC-order-code/Maze-generation @@ -0,0 +1 @@ +../../Task/Maze-generation/EDSAC-order-code \ No newline at end of file diff --git a/Lang/EDSAC-order-code/Pseudo-random-numbers-Middle-square-method b/Lang/EDSAC-order-code/Pseudo-random-numbers-Middle-square-method new file mode 120000 index 0000000000..9e378bb2f4 --- /dev/null +++ b/Lang/EDSAC-order-code/Pseudo-random-numbers-Middle-square-method @@ -0,0 +1 @@ +../../Task/Pseudo-random-numbers-Middle-square-method/EDSAC-order-code \ No newline at end of file diff --git a/Lang/EDSAC-order-code/Sorting-algorithms-Gnome-sort b/Lang/EDSAC-order-code/Sorting-algorithms-Gnome-sort new file mode 120000 index 0000000000..3be03b0294 --- /dev/null +++ b/Lang/EDSAC-order-code/Sorting-algorithms-Gnome-sort @@ -0,0 +1 @@ +../../Task/Sorting-algorithms-Gnome-sort/EDSAC-order-code \ No newline at end of file diff --git a/Lang/EDSAC-order-code/Statistics-Normal-distribution b/Lang/EDSAC-order-code/Statistics-Normal-distribution new file mode 120000 index 0000000000..8051b92f59 --- /dev/null +++ b/Lang/EDSAC-order-code/Statistics-Normal-distribution @@ -0,0 +1 @@ +../../Task/Statistics-Normal-distribution/EDSAC-order-code \ No newline at end of file diff --git a/Lang/EDSAC-order-code/Sum-digits-of-an-integer b/Lang/EDSAC-order-code/Sum-digits-of-an-integer new file mode 120000 index 0000000000..23c793fd07 --- /dev/null +++ b/Lang/EDSAC-order-code/Sum-digits-of-an-integer @@ -0,0 +1 @@ +../../Task/Sum-digits-of-an-integer/EDSAC-order-code \ No newline at end of file diff --git a/Lang/EMal/Empty-string b/Lang/EMal/Empty-string new file mode 120000 index 0000000000..a051653333 --- /dev/null +++ b/Lang/EMal/Empty-string @@ -0,0 +1 @@ +../../Task/Empty-string/EMal \ No newline at end of file diff --git a/Lang/EMal/Environment-variables b/Lang/EMal/Environment-variables new file mode 120000 index 0000000000..04065bea17 --- /dev/null +++ b/Lang/EMal/Environment-variables @@ -0,0 +1 @@ +../../Task/Environment-variables/EMal \ No newline at end of file diff --git a/Lang/EMal/FizzBuzz b/Lang/EMal/FizzBuzz new file mode 120000 index 0000000000..7a42e8cf25 --- /dev/null +++ b/Lang/EMal/FizzBuzz @@ -0,0 +1 @@ +../../Task/FizzBuzz/EMal \ No newline at end of file diff --git a/Lang/EMal/Loops-For b/Lang/EMal/Loops-For new file mode 120000 index 0000000000..ac145e5175 --- /dev/null +++ b/Lang/EMal/Loops-For @@ -0,0 +1 @@ +../../Task/Loops-For/EMal \ No newline at end of file diff --git a/Lang/EMal/Loops-For-with-a-specified-step b/Lang/EMal/Loops-For-with-a-specified-step new file mode 120000 index 0000000000..420591b041 --- /dev/null +++ b/Lang/EMal/Loops-For-with-a-specified-step @@ -0,0 +1 @@ +../../Task/Loops-For-with-a-specified-step/EMal \ No newline at end of file diff --git a/Lang/EMal/Loops-Increment-loop-index-within-loop-body b/Lang/EMal/Loops-Increment-loop-index-within-loop-body new file mode 120000 index 0000000000..d82571b9b9 --- /dev/null +++ b/Lang/EMal/Loops-Increment-loop-index-within-loop-body @@ -0,0 +1 @@ +../../Task/Loops-Increment-loop-index-within-loop-body/EMal \ No newline at end of file diff --git a/Lang/EMal/Loops-N-plus-one-half b/Lang/EMal/Loops-N-plus-one-half new file mode 120000 index 0000000000..45adbe30ec --- /dev/null +++ b/Lang/EMal/Loops-N-plus-one-half @@ -0,0 +1 @@ +../../Task/Loops-N-plus-one-half/EMal \ No newline at end of file diff --git a/Lang/EMal/Loops-While b/Lang/EMal/Loops-While new file mode 120000 index 0000000000..016c2ea1d7 --- /dev/null +++ b/Lang/EMal/Loops-While @@ -0,0 +1 @@ +../../Task/Loops-While/EMal \ No newline at end of file diff --git a/Lang/EMal/String-case b/Lang/EMal/String-case new file mode 120000 index 0000000000..8193cfe690 --- /dev/null +++ b/Lang/EMal/String-case @@ -0,0 +1 @@ +../../Task/String-case/EMal \ No newline at end of file diff --git a/Lang/EMal/Towers-of-Hanoi b/Lang/EMal/Towers-of-Hanoi new file mode 120000 index 0000000000..5771f28b4c --- /dev/null +++ b/Lang/EMal/Towers-of-Hanoi @@ -0,0 +1 @@ +../../Task/Towers-of-Hanoi/EMal \ No newline at end of file diff --git a/Lang/EasyLang/Animation b/Lang/EasyLang/Animation new file mode 120000 index 0000000000..a11bf8da48 --- /dev/null +++ b/Lang/EasyLang/Animation @@ -0,0 +1 @@ +../../Task/Animation/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Averages-Mode b/Lang/EasyLang/Averages-Mode new file mode 120000 index 0000000000..3d5aef1b7e --- /dev/null +++ b/Lang/EasyLang/Averages-Mode @@ -0,0 +1 @@ +../../Task/Averages-Mode/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Averages-Pythagorean-means b/Lang/EasyLang/Averages-Pythagorean-means new file mode 120000 index 0000000000..54e04474ad --- /dev/null +++ b/Lang/EasyLang/Averages-Pythagorean-means @@ -0,0 +1 @@ +../../Task/Averages-Pythagorean-means/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Averages-Simple-moving-average b/Lang/EasyLang/Averages-Simple-moving-average new file mode 120000 index 0000000000..526250f81a --- /dev/null +++ b/Lang/EasyLang/Averages-Simple-moving-average @@ -0,0 +1 @@ +../../Task/Averages-Simple-moving-average/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Balanced-brackets b/Lang/EasyLang/Balanced-brackets new file mode 120000 index 0000000000..5f2b730d5e --- /dev/null +++ b/Lang/EasyLang/Balanced-brackets @@ -0,0 +1 @@ +../../Task/Balanced-brackets/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Benfords-law b/Lang/EasyLang/Benfords-law new file mode 120000 index 0000000000..a907859e75 --- /dev/null +++ b/Lang/EasyLang/Benfords-law @@ -0,0 +1 @@ +../../Task/Benfords-law/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Bifid-cipher b/Lang/EasyLang/Bifid-cipher new file mode 120000 index 0000000000..00c9d65ab1 --- /dev/null +++ b/Lang/EasyLang/Bifid-cipher @@ -0,0 +1 @@ +../../Task/Bifid-cipher/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Bin-given-limits b/Lang/EasyLang/Bin-given-limits new file mode 120000 index 0000000000..cc28e3775f --- /dev/null +++ b/Lang/EasyLang/Bin-given-limits @@ -0,0 +1 @@ +../../Task/Bin-given-limits/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Bitmap-Bresenhams-line-algorithm b/Lang/EasyLang/Bitmap-Bresenhams-line-algorithm new file mode 120000 index 0000000000..5b05ee202b --- /dev/null +++ b/Lang/EasyLang/Bitmap-Bresenhams-line-algorithm @@ -0,0 +1 @@ +../../Task/Bitmap-Bresenhams-line-algorithm/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/CUSIP b/Lang/EasyLang/CUSIP new file mode 120000 index 0000000000..18e1a39668 --- /dev/null +++ b/Lang/EasyLang/CUSIP @@ -0,0 +1 @@ +../../Task/CUSIP/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Caesar-cipher b/Lang/EasyLang/Caesar-cipher new file mode 120000 index 0000000000..1d121f0b00 --- /dev/null +++ b/Lang/EasyLang/Caesar-cipher @@ -0,0 +1 @@ +../../Task/Caesar-cipher/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Calendar b/Lang/EasyLang/Calendar new file mode 120000 index 0000000000..a7149967d9 --- /dev/null +++ b/Lang/EasyLang/Calendar @@ -0,0 +1 @@ +../../Task/Calendar/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Cantor-set b/Lang/EasyLang/Cantor-set new file mode 120000 index 0000000000..3166a68c95 --- /dev/null +++ b/Lang/EasyLang/Cantor-set @@ -0,0 +1 @@ +../../Task/Cantor-set/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Carmichael-3-strong-pseudoprimes b/Lang/EasyLang/Carmichael-3-strong-pseudoprimes new file mode 120000 index 0000000000..87390cac39 --- /dev/null +++ b/Lang/EasyLang/Carmichael-3-strong-pseudoprimes @@ -0,0 +1 @@ +../../Task/Carmichael-3-strong-pseudoprimes/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Casting-out-nines b/Lang/EasyLang/Casting-out-nines new file mode 120000 index 0000000000..c70d0861aa --- /dev/null +++ b/Lang/EasyLang/Casting-out-nines @@ -0,0 +1 @@ +../../Task/Casting-out-nines/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Chinese-zodiac b/Lang/EasyLang/Chinese-zodiac new file mode 120000 index 0000000000..0eac7aa885 --- /dev/null +++ b/Lang/EasyLang/Chinese-zodiac @@ -0,0 +1 @@ +../../Task/Chinese-zodiac/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Circles-of-given-radius-through-two-points b/Lang/EasyLang/Circles-of-given-radius-through-two-points new file mode 120000 index 0000000000..86863b1617 --- /dev/null +++ b/Lang/EasyLang/Circles-of-given-radius-through-two-points @@ -0,0 +1 @@ +../../Task/Circles-of-given-radius-through-two-points/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Cistercian-numerals b/Lang/EasyLang/Cistercian-numerals new file mode 120000 index 0000000000..63eb472b3f --- /dev/null +++ b/Lang/EasyLang/Cistercian-numerals @@ -0,0 +1 @@ +../../Task/Cistercian-numerals/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Closest-pair-problem b/Lang/EasyLang/Closest-pair-problem new file mode 120000 index 0000000000..3aef86373f --- /dev/null +++ b/Lang/EasyLang/Closest-pair-problem @@ -0,0 +1 @@ +../../Task/Closest-pair-problem/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Colour-pinstripe-Display b/Lang/EasyLang/Colour-pinstripe-Display new file mode 120000 index 0000000000..2e66fb03ab --- /dev/null +++ b/Lang/EasyLang/Colour-pinstripe-Display @@ -0,0 +1 @@ +../../Task/Colour-pinstripe-Display/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Combinations-and-permutations b/Lang/EasyLang/Combinations-and-permutations new file mode 120000 index 0000000000..8cabf1d02c --- /dev/null +++ b/Lang/EasyLang/Combinations-and-permutations @@ -0,0 +1 @@ +../../Task/Combinations-and-permutations/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Comma-quibbling b/Lang/EasyLang/Comma-quibbling new file mode 120000 index 0000000000..2a8720ee6a --- /dev/null +++ b/Lang/EasyLang/Comma-quibbling @@ -0,0 +1 @@ +../../Task/Comma-quibbling/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Composite-numbers-k-with-no-single-digit-factors-whose-factors-are-all-substrings-of-k b/Lang/EasyLang/Composite-numbers-k-with-no-single-digit-factors-whose-factors-are-all-substrings-of-k new file mode 120000 index 0000000000..d18afd0e66 --- /dev/null +++ b/Lang/EasyLang/Composite-numbers-k-with-no-single-digit-factors-whose-factors-are-all-substrings-of-k @@ -0,0 +1 @@ +../../Task/Composite-numbers-k-with-no-single-digit-factors-whose-factors-are-all-substrings-of-k/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Consecutive-primes-with-ascending-or-descending-differences b/Lang/EasyLang/Consecutive-primes-with-ascending-or-descending-differences new file mode 120000 index 0000000000..4752a5c8c3 --- /dev/null +++ b/Lang/EasyLang/Consecutive-primes-with-ascending-or-descending-differences @@ -0,0 +1 @@ +../../Task/Consecutive-primes-with-ascending-or-descending-differences/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Constrained-random-points-on-a-circle b/Lang/EasyLang/Constrained-random-points-on-a-circle new file mode 120000 index 0000000000..63f4482942 --- /dev/null +++ b/Lang/EasyLang/Constrained-random-points-on-a-circle @@ -0,0 +1 @@ +../../Task/Constrained-random-points-on-a-circle/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Cyclops-numbers b/Lang/EasyLang/Cyclops-numbers new file mode 120000 index 0000000000..6df72e0544 --- /dev/null +++ b/Lang/EasyLang/Cyclops-numbers @@ -0,0 +1 @@ +../../Task/Cyclops-numbers/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Deal-cards-for-FreeCell b/Lang/EasyLang/Deal-cards-for-FreeCell new file mode 120000 index 0000000000..9d47d59041 --- /dev/null +++ b/Lang/EasyLang/Deal-cards-for-FreeCell @@ -0,0 +1 @@ +../../Task/Deal-cards-for-FreeCell/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Descending-primes b/Lang/EasyLang/Descending-primes new file mode 120000 index 0000000000..2cdfe30a0e --- /dev/null +++ b/Lang/EasyLang/Descending-primes @@ -0,0 +1 @@ +../../Task/Descending-primes/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Determine-if-a-string-is-collapsible b/Lang/EasyLang/Determine-if-a-string-is-collapsible new file mode 120000 index 0000000000..05c87ac5e5 --- /dev/null +++ b/Lang/EasyLang/Determine-if-a-string-is-collapsible @@ -0,0 +1 @@ +../../Task/Determine-if-a-string-is-collapsible/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Determine-if-a-string-is-squeezable b/Lang/EasyLang/Determine-if-a-string-is-squeezable new file mode 120000 index 0000000000..3684f2848c --- /dev/null +++ b/Lang/EasyLang/Determine-if-a-string-is-squeezable @@ -0,0 +1 @@ +../../Task/Determine-if-a-string-is-squeezable/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Dice-game-probabilities b/Lang/EasyLang/Dice-game-probabilities new file mode 120000 index 0000000000..5267c4bcfb --- /dev/null +++ b/Lang/EasyLang/Dice-game-probabilities @@ -0,0 +1 @@ +../../Task/Dice-game-probabilities/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Disarium-numbers b/Lang/EasyLang/Disarium-numbers new file mode 120000 index 0000000000..f7a091cb49 --- /dev/null +++ b/Lang/EasyLang/Disarium-numbers @@ -0,0 +1 @@ +../../Task/Disarium-numbers/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Discordian-date b/Lang/EasyLang/Discordian-date new file mode 120000 index 0000000000..637d22e417 --- /dev/null +++ b/Lang/EasyLang/Discordian-date @@ -0,0 +1 @@ +../../Task/Discordian-date/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Doomsday-rule b/Lang/EasyLang/Doomsday-rule new file mode 120000 index 0000000000..f576833747 --- /dev/null +++ b/Lang/EasyLang/Doomsday-rule @@ -0,0 +1 @@ +../../Task/Doomsday-rule/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Dutch-national-flag-problem b/Lang/EasyLang/Dutch-national-flag-problem new file mode 120000 index 0000000000..09cb24ca60 --- /dev/null +++ b/Lang/EasyLang/Dutch-national-flag-problem @@ -0,0 +1 @@ +../../Task/Dutch-national-flag-problem/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Egyptian-division b/Lang/EasyLang/Egyptian-division new file mode 120000 index 0000000000..8d011b8470 --- /dev/null +++ b/Lang/EasyLang/Egyptian-division @@ -0,0 +1 @@ +../../Task/Egyptian-division/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Elementary-cellular-automaton b/Lang/EasyLang/Elementary-cellular-automaton new file mode 120000 index 0000000000..14cf04ae05 --- /dev/null +++ b/Lang/EasyLang/Elementary-cellular-automaton @@ -0,0 +1 @@ +../../Task/Elementary-cellular-automaton/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Empty-program b/Lang/EasyLang/Empty-program new file mode 120000 index 0000000000..833f921ffb --- /dev/null +++ b/Lang/EasyLang/Empty-program @@ -0,0 +1 @@ +../../Task/Empty-program/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Euclid-Mullin-sequence b/Lang/EasyLang/Euclid-Mullin-sequence new file mode 120000 index 0000000000..465875e6ff --- /dev/null +++ b/Lang/EasyLang/Euclid-Mullin-sequence @@ -0,0 +1 @@ +../../Task/Euclid-Mullin-sequence/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Evaluate-binomial-coefficients b/Lang/EasyLang/Evaluate-binomial-coefficients new file mode 120000 index 0000000000..ca9734f276 --- /dev/null +++ b/Lang/EasyLang/Evaluate-binomial-coefficients @@ -0,0 +1 @@ +../../Task/Evaluate-binomial-coefficients/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Events b/Lang/EasyLang/Events new file mode 120000 index 0000000000..84019d59c2 --- /dev/null +++ b/Lang/EasyLang/Events @@ -0,0 +1 @@ +../../Task/Events/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Execute-Brain- b/Lang/EasyLang/Execute-Brain- new file mode 120000 index 0000000000..f895a53826 --- /dev/null +++ b/Lang/EasyLang/Execute-Brain- @@ -0,0 +1 @@ +../../Task/Execute-Brain-/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Execute-Computer-Zero b/Lang/EasyLang/Execute-Computer-Zero new file mode 120000 index 0000000000..49e608b246 --- /dev/null +++ b/Lang/EasyLang/Execute-Computer-Zero @@ -0,0 +1 @@ +../../Task/Execute-Computer-Zero/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Execute-HQ9+ b/Lang/EasyLang/Execute-HQ9+ new file mode 120000 index 0000000000..aa3358e92d --- /dev/null +++ b/Lang/EasyLang/Execute-HQ9+ @@ -0,0 +1 @@ +../../Task/Execute-HQ9+/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Execute-SNUSP b/Lang/EasyLang/Execute-SNUSP new file mode 120000 index 0000000000..d27fd2f524 --- /dev/null +++ b/Lang/EasyLang/Execute-SNUSP @@ -0,0 +1 @@ +../../Task/Execute-SNUSP/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Exponentiation-order b/Lang/EasyLang/Exponentiation-order new file mode 120000 index 0000000000..de7c440428 --- /dev/null +++ b/Lang/EasyLang/Exponentiation-order @@ -0,0 +1 @@ +../../Task/Exponentiation-order/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Exponentiation-with-infix-operators-in-or-operating-on-the-base b/Lang/EasyLang/Exponentiation-with-infix-operators-in-or-operating-on-the-base new file mode 120000 index 0000000000..131a7d1381 --- /dev/null +++ b/Lang/EasyLang/Exponentiation-with-infix-operators-in-or-operating-on-the-base @@ -0,0 +1 @@ +../../Task/Exponentiation-with-infix-operators-in-or-operating-on-the-base/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Extensible-prime-generator b/Lang/EasyLang/Extensible-prime-generator new file mode 120000 index 0000000000..6415b07f48 --- /dev/null +++ b/Lang/EasyLang/Extensible-prime-generator @@ -0,0 +1 @@ +../../Task/Extensible-prime-generator/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Extreme-floating-point-values b/Lang/EasyLang/Extreme-floating-point-values new file mode 120000 index 0000000000..8c4ae21587 --- /dev/null +++ b/Lang/EasyLang/Extreme-floating-point-values @@ -0,0 +1 @@ +../../Task/Extreme-floating-point-values/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Factorial-primes b/Lang/EasyLang/Factorial-primes new file mode 120000 index 0000000000..6eb3f0a8b6 --- /dev/null +++ b/Lang/EasyLang/Factorial-primes @@ -0,0 +1 @@ +../../Task/Factorial-primes/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Feigenbaum-constant-calculation b/Lang/EasyLang/Feigenbaum-constant-calculation new file mode 120000 index 0000000000..0bc8f6925c --- /dev/null +++ b/Lang/EasyLang/Feigenbaum-constant-calculation @@ -0,0 +1 @@ +../../Task/Feigenbaum-constant-calculation/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Find-the-last-Sunday-of-each-month b/Lang/EasyLang/Find-the-last-Sunday-of-each-month new file mode 120000 index 0000000000..967f81859a --- /dev/null +++ b/Lang/EasyLang/Find-the-last-Sunday-of-each-month @@ -0,0 +1 @@ +../../Task/Find-the-last-Sunday-of-each-month/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Four-bit-adder b/Lang/EasyLang/Four-bit-adder new file mode 120000 index 0000000000..aa95757586 --- /dev/null +++ b/Lang/EasyLang/Four-bit-adder @@ -0,0 +1 @@ +../../Task/Four-bit-adder/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Hailstone-sequence b/Lang/EasyLang/Hailstone-sequence new file mode 120000 index 0000000000..164d38791c --- /dev/null +++ b/Lang/EasyLang/Hailstone-sequence @@ -0,0 +1 @@ +../../Task/Hailstone-sequence/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Harshad-or-Niven-series b/Lang/EasyLang/Harshad-or-Niven-series new file mode 120000 index 0000000000..3452b1b733 --- /dev/null +++ b/Lang/EasyLang/Harshad-or-Niven-series @@ -0,0 +1 @@ +../../Task/Harshad-or-Niven-series/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Haversine-formula b/Lang/EasyLang/Haversine-formula new file mode 120000 index 0000000000..add760760e --- /dev/null +++ b/Lang/EasyLang/Haversine-formula @@ -0,0 +1 @@ +../../Task/Haversine-formula/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Hofstadter-Q-sequence b/Lang/EasyLang/Hofstadter-Q-sequence new file mode 120000 index 0000000000..f26e722f60 --- /dev/null +++ b/Lang/EasyLang/Hofstadter-Q-sequence @@ -0,0 +1 @@ +../../Task/Hofstadter-Q-sequence/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Humble-numbers b/Lang/EasyLang/Humble-numbers new file mode 120000 index 0000000000..8f9c0f4eae --- /dev/null +++ b/Lang/EasyLang/Humble-numbers @@ -0,0 +1 @@ +../../Task/Humble-numbers/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Image-noise b/Lang/EasyLang/Image-noise new file mode 120000 index 0000000000..da8d100ac1 --- /dev/null +++ b/Lang/EasyLang/Image-noise @@ -0,0 +1 @@ +../../Task/Image-noise/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Infinity b/Lang/EasyLang/Infinity new file mode 120000 index 0000000000..56d94eeddb --- /dev/null +++ b/Lang/EasyLang/Infinity @@ -0,0 +1 @@ +../../Task/Infinity/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Isqrt-integer-square-root-of-X b/Lang/EasyLang/Isqrt-integer-square-root-of-X new file mode 120000 index 0000000000..79ccfaeb51 --- /dev/null +++ b/Lang/EasyLang/Isqrt-integer-square-root-of-X @@ -0,0 +1 @@ +../../Task/Isqrt-integer-square-root-of-X/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Last-Friday-of-each-month b/Lang/EasyLang/Last-Friday-of-each-month new file mode 120000 index 0000000000..35882f9070 --- /dev/null +++ b/Lang/EasyLang/Last-Friday-of-each-month @@ -0,0 +1 @@ +../../Task/Last-Friday-of-each-month/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Leap-year b/Lang/EasyLang/Leap-year new file mode 120000 index 0000000000..786a015a2b --- /dev/null +++ b/Lang/EasyLang/Leap-year @@ -0,0 +1 @@ +../../Task/Leap-year/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Look-and-say-sequence b/Lang/EasyLang/Look-and-say-sequence new file mode 120000 index 0000000000..acea496bc5 --- /dev/null +++ b/Lang/EasyLang/Look-and-say-sequence @@ -0,0 +1 @@ +../../Task/Look-and-say-sequence/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Loop-over-multiple-arrays-simultaneously b/Lang/EasyLang/Loop-over-multiple-arrays-simultaneously new file mode 120000 index 0000000000..cc8922c8e4 --- /dev/null +++ b/Lang/EasyLang/Loop-over-multiple-arrays-simultaneously @@ -0,0 +1 @@ +../../Task/Loop-over-multiple-arrays-simultaneously/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/M-bius-function b/Lang/EasyLang/M-bius-function new file mode 120000 index 0000000000..8ddd81962a --- /dev/null +++ b/Lang/EasyLang/M-bius-function @@ -0,0 +1 @@ +../../Task/M-bius-function/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Magnanimous-numbers b/Lang/EasyLang/Magnanimous-numbers new file mode 120000 index 0000000000..b244e9bef4 --- /dev/null +++ b/Lang/EasyLang/Magnanimous-numbers @@ -0,0 +1 @@ +../../Task/Magnanimous-numbers/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Maximum-triangle-path-sum b/Lang/EasyLang/Maximum-triangle-path-sum new file mode 120000 index 0000000000..eed040fd4d --- /dev/null +++ b/Lang/EasyLang/Maximum-triangle-path-sum @@ -0,0 +1 @@ +../../Task/Maximum-triangle-path-sum/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/McNuggets-problem b/Lang/EasyLang/McNuggets-problem new file mode 120000 index 0000000000..4eb97330c9 --- /dev/null +++ b/Lang/EasyLang/McNuggets-problem @@ -0,0 +1 @@ +../../Task/McNuggets-problem/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Minimum-multiple-of-m-where-digital-sum-equals-m b/Lang/EasyLang/Minimum-multiple-of-m-where-digital-sum-equals-m new file mode 120000 index 0000000000..8adaf5f3b6 --- /dev/null +++ b/Lang/EasyLang/Minimum-multiple-of-m-where-digital-sum-equals-m @@ -0,0 +1 @@ +../../Task/Minimum-multiple-of-m-where-digital-sum-equals-m/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Motzkin-numbers b/Lang/EasyLang/Motzkin-numbers new file mode 120000 index 0000000000..f45ac71ffe --- /dev/null +++ b/Lang/EasyLang/Motzkin-numbers @@ -0,0 +1 @@ +../../Task/Motzkin-numbers/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Multifactorial b/Lang/EasyLang/Multifactorial new file mode 120000 index 0000000000..f917509ca1 --- /dev/null +++ b/Lang/EasyLang/Multifactorial @@ -0,0 +1 @@ +../../Task/Multifactorial/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Numbers-which-are-not-the-sum-of-distinct-squares b/Lang/EasyLang/Numbers-which-are-not-the-sum-of-distinct-squares new file mode 120000 index 0000000000..b728c3fcbc --- /dev/null +++ b/Lang/EasyLang/Numbers-which-are-not-the-sum-of-distinct-squares @@ -0,0 +1 @@ +../../Task/Numbers-which-are-not-the-sum-of-distinct-squares/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/One-dimensional-cellular-automata b/Lang/EasyLang/One-dimensional-cellular-automata new file mode 120000 index 0000000000..6cef842f96 --- /dev/null +++ b/Lang/EasyLang/One-dimensional-cellular-automata @@ -0,0 +1 @@ +../../Task/One-dimensional-cellular-automata/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Padovan-n-step-number-sequences b/Lang/EasyLang/Padovan-n-step-number-sequences new file mode 120000 index 0000000000..3c37f1b5a3 --- /dev/null +++ b/Lang/EasyLang/Padovan-n-step-number-sequences @@ -0,0 +1 @@ +../../Task/Padovan-n-step-number-sequences/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Particle-fountain b/Lang/EasyLang/Particle-fountain new file mode 120000 index 0000000000..df8fc026b9 --- /dev/null +++ b/Lang/EasyLang/Particle-fountain @@ -0,0 +1 @@ +../../Task/Particle-fountain/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Perfect-shuffle b/Lang/EasyLang/Perfect-shuffle new file mode 120000 index 0000000000..728edc88c9 --- /dev/null +++ b/Lang/EasyLang/Perfect-shuffle @@ -0,0 +1 @@ +../../Task/Perfect-shuffle/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Periodic-table b/Lang/EasyLang/Periodic-table new file mode 120000 index 0000000000..43eef9d72c --- /dev/null +++ b/Lang/EasyLang/Periodic-table @@ -0,0 +1 @@ +../../Task/Periodic-table/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Perlin-noise b/Lang/EasyLang/Perlin-noise new file mode 120000 index 0000000000..2f94e8bd94 --- /dev/null +++ b/Lang/EasyLang/Perlin-noise @@ -0,0 +1 @@ +../../Task/Perlin-noise/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Pig-the-dice-game b/Lang/EasyLang/Pig-the-dice-game new file mode 120000 index 0000000000..50b35f7797 --- /dev/null +++ b/Lang/EasyLang/Pig-the-dice-game @@ -0,0 +1 @@ +../../Task/Pig-the-dice-game/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Polynomial-regression b/Lang/EasyLang/Polynomial-regression new file mode 120000 index 0000000000..8dbd1d3e30 --- /dev/null +++ b/Lang/EasyLang/Polynomial-regression @@ -0,0 +1 @@ +../../Task/Polynomial-regression/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Population-count b/Lang/EasyLang/Population-count new file mode 120000 index 0000000000..8b6ff189cf --- /dev/null +++ b/Lang/EasyLang/Population-count @@ -0,0 +1 @@ +../../Task/Population-count/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Radical-of-an-integer b/Lang/EasyLang/Radical-of-an-integer new file mode 120000 index 0000000000..9e440b9a9f --- /dev/null +++ b/Lang/EasyLang/Radical-of-an-integer @@ -0,0 +1 @@ +../../Task/Radical-of-an-integer/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Ramer-Douglas-Peucker-line-simplification b/Lang/EasyLang/Ramer-Douglas-Peucker-line-simplification new file mode 120000 index 0000000000..e4799ac235 --- /dev/null +++ b/Lang/EasyLang/Ramer-Douglas-Peucker-line-simplification @@ -0,0 +1 @@ +../../Task/Ramer-Douglas-Peucker-line-simplification/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Repeat-a-string b/Lang/EasyLang/Repeat-a-string new file mode 120000 index 0000000000..ecd0e89fe6 --- /dev/null +++ b/Lang/EasyLang/Repeat-a-string @@ -0,0 +1 @@ +../../Task/Repeat-a-string/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Search-a-list b/Lang/EasyLang/Search-a-list new file mode 120000 index 0000000000..ccb29f0b91 --- /dev/null +++ b/Lang/EasyLang/Search-a-list @@ -0,0 +1 @@ +../../Task/Search-a-list/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 new file mode 120000 index 0000000000..b4f1a1113a --- /dev/null +++ b/Lang/EasyLang/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors @@ -0,0 +1 @@ +../../Task/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Set-puzzle b/Lang/EasyLang/Set-puzzle new file mode 120000 index 0000000000..feae2ec924 --- /dev/null +++ b/Lang/EasyLang/Set-puzzle @@ -0,0 +1 @@ +../../Task/Set-puzzle/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Smarandache-Wellin-primes b/Lang/EasyLang/Smarandache-Wellin-primes new file mode 120000 index 0000000000..bedd3c4b04 --- /dev/null +++ b/Lang/EasyLang/Smarandache-Wellin-primes @@ -0,0 +1 @@ +../../Task/Smarandache-Wellin-primes/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Smith-numbers b/Lang/EasyLang/Smith-numbers new file mode 120000 index 0000000000..101193f3b1 --- /dev/null +++ b/Lang/EasyLang/Smith-numbers @@ -0,0 +1 @@ +../../Task/Smith-numbers/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Sort-disjoint-sublist b/Lang/EasyLang/Sort-disjoint-sublist new file mode 120000 index 0000000000..eb35c6be68 --- /dev/null +++ b/Lang/EasyLang/Sort-disjoint-sublist @@ -0,0 +1 @@ +../../Task/Sort-disjoint-sublist/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Sort-three-variables b/Lang/EasyLang/Sort-three-variables new file mode 120000 index 0000000000..ffc5d5785b --- /dev/null +++ b/Lang/EasyLang/Sort-three-variables @@ -0,0 +1 @@ +../../Task/Sort-three-variables/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Sorting-algorithms-Counting-sort b/Lang/EasyLang/Sorting-algorithms-Counting-sort new file mode 120000 index 0000000000..55b1fd89b9 --- /dev/null +++ b/Lang/EasyLang/Sorting-algorithms-Counting-sort @@ -0,0 +1 @@ +../../Task/Sorting-algorithms-Counting-sort/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Sorting-algorithms-Gnome-sort b/Lang/EasyLang/Sorting-algorithms-Gnome-sort new file mode 120000 index 0000000000..4325128d9d --- /dev/null +++ b/Lang/EasyLang/Sorting-algorithms-Gnome-sort @@ -0,0 +1 @@ +../../Task/Sorting-algorithms-Gnome-sort/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Sorting-algorithms-Stooge-sort b/Lang/EasyLang/Sorting-algorithms-Stooge-sort new file mode 120000 index 0000000000..8f8f251e34 --- /dev/null +++ b/Lang/EasyLang/Sorting-algorithms-Stooge-sort @@ -0,0 +1 @@ +../../Task/Sorting-algorithms-Stooge-sort/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Soundex b/Lang/EasyLang/Soundex new file mode 120000 index 0000000000..1f0885f64a --- /dev/null +++ b/Lang/EasyLang/Soundex @@ -0,0 +1 @@ +../../Task/Soundex/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Statistics-Basic b/Lang/EasyLang/Statistics-Basic new file mode 120000 index 0000000000..5d69a2f87b --- /dev/null +++ b/Lang/EasyLang/Statistics-Basic @@ -0,0 +1 @@ +../../Task/Statistics-Basic/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Subleq b/Lang/EasyLang/Subleq new file mode 120000 index 0000000000..1401c9e3d6 --- /dev/null +++ b/Lang/EasyLang/Subleq @@ -0,0 +1 @@ +../../Task/Subleq/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Subtractive-generator b/Lang/EasyLang/Subtractive-generator new file mode 120000 index 0000000000..67b19013ad --- /dev/null +++ b/Lang/EasyLang/Subtractive-generator @@ -0,0 +1 @@ +../../Task/Subtractive-generator/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Successive-prime-differences b/Lang/EasyLang/Successive-prime-differences new file mode 120000 index 0000000000..904f218dfa --- /dev/null +++ b/Lang/EasyLang/Successive-prime-differences @@ -0,0 +1 @@ +../../Task/Successive-prime-differences/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Sum-multiples-of-3-and-5 b/Lang/EasyLang/Sum-multiples-of-3-and-5 new file mode 120000 index 0000000000..6323853305 --- /dev/null +++ b/Lang/EasyLang/Sum-multiples-of-3-and-5 @@ -0,0 +1 @@ +../../Task/Sum-multiples-of-3-and-5/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Tau-function b/Lang/EasyLang/Tau-function new file mode 120000 index 0000000000..a037a03797 --- /dev/null +++ b/Lang/EasyLang/Tau-function @@ -0,0 +1 @@ +../../Task/Tau-function/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Tau-number b/Lang/EasyLang/Tau-number new file mode 120000 index 0000000000..2164c80d5f --- /dev/null +++ b/Lang/EasyLang/Tau-number @@ -0,0 +1 @@ +../../Task/Tau-number/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Total-circles-area b/Lang/EasyLang/Total-circles-area new file mode 120000 index 0000000000..17bfc868ba --- /dev/null +++ b/Lang/EasyLang/Total-circles-area @@ -0,0 +1 @@ +../../Task/Total-circles-area/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Tree-traversal b/Lang/EasyLang/Tree-traversal new file mode 120000 index 0000000000..a81a5f8eea --- /dev/null +++ b/Lang/EasyLang/Tree-traversal @@ -0,0 +1 @@ +../../Task/Tree-traversal/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Twelve-statements b/Lang/EasyLang/Twelve-statements new file mode 120000 index 0000000000..eb9094a7a2 --- /dev/null +++ b/Lang/EasyLang/Twelve-statements @@ -0,0 +1 @@ +../../Task/Twelve-statements/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Twin-primes b/Lang/EasyLang/Twin-primes new file mode 120000 index 0000000000..7fe7d30975 --- /dev/null +++ b/Lang/EasyLang/Twin-primes @@ -0,0 +1 @@ +../../Task/Twin-primes/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Ulam-spiral-for-primes- b/Lang/EasyLang/Ulam-spiral-for-primes- new file mode 120000 index 0000000000..0cc2a340bc --- /dev/null +++ b/Lang/EasyLang/Ulam-spiral-for-primes- @@ -0,0 +1 @@ +../../Task/Ulam-spiral-for-primes-/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Vampire-number b/Lang/EasyLang/Vampire-number new file mode 120000 index 0000000000..b4339746b7 --- /dev/null +++ b/Lang/EasyLang/Vampire-number @@ -0,0 +1 @@ +../../Task/Vampire-number/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Wilson-primes-of-order-n b/Lang/EasyLang/Wilson-primes-of-order-n new file mode 120000 index 0000000000..a776d56b33 --- /dev/null +++ b/Lang/EasyLang/Wilson-primes-of-order-n @@ -0,0 +1 @@ +../../Task/Wilson-primes-of-order-n/EasyLang \ No newline at end of file diff --git a/Lang/EasyLang/Zeckendorf-number-representation b/Lang/EasyLang/Zeckendorf-number-representation new file mode 120000 index 0000000000..8198319b91 --- /dev/null +++ b/Lang/EasyLang/Zeckendorf-number-representation @@ -0,0 +1 @@ +../../Task/Zeckendorf-number-representation/EasyLang \ No newline at end of file diff --git a/Lang/Elixir/Cyclops-numbers b/Lang/Elixir/Cyclops-numbers new file mode 120000 index 0000000000..0e8897c007 --- /dev/null +++ b/Lang/Elixir/Cyclops-numbers @@ -0,0 +1 @@ +../../Task/Cyclops-numbers/Elixir \ No newline at end of file diff --git a/Lang/Elixir/Gapful-numbers b/Lang/Elixir/Gapful-numbers new file mode 120000 index 0000000000..c482e40173 --- /dev/null +++ b/Lang/Elixir/Gapful-numbers @@ -0,0 +1 @@ +../../Task/Gapful-numbers/Elixir \ No newline at end of file diff --git a/Lang/Emacs-Lisp/AVL-tree b/Lang/Emacs-Lisp/AVL-tree new file mode 120000 index 0000000000..b9212102d2 --- /dev/null +++ b/Lang/Emacs-Lisp/AVL-tree @@ -0,0 +1 @@ +../../Task/AVL-tree/Emacs-Lisp \ No newline at end of file diff --git a/Lang/Euler/FizzBuzz b/Lang/Euler/FizzBuzz deleted file mode 120000 index 407a608e21..0000000000 --- a/Lang/Euler/FizzBuzz +++ /dev/null @@ -1 +0,0 @@ -../../Task/FizzBuzz/Euler \ No newline at end of file diff --git a/Lang/Euler/Giuga-numbers b/Lang/Euler/Giuga-numbers deleted file mode 120000 index d2ecdddc43..0000000000 --- a/Lang/Euler/Giuga-numbers +++ /dev/null @@ -1 +0,0 @@ -../../Task/Giuga-numbers/Euler \ No newline at end of file diff --git a/Lang/Euler/Jensens-Device b/Lang/Euler/Jensens-Device deleted file mode 120000 index f153ab6bd3..0000000000 --- a/Lang/Euler/Jensens-Device +++ /dev/null @@ -1 +0,0 @@ -../../Task/Jensens-Device/Euler \ No newline at end of file diff --git a/Lang/Euler/Return-multiple-values b/Lang/Euler/Return-multiple-values deleted file mode 120000 index 661e0398e8..0000000000 --- a/Lang/Euler/Return-multiple-values +++ /dev/null @@ -1 +0,0 @@ -../../Task/Return-multiple-values/Euler \ No newline at end of file diff --git a/Lang/Euler/Sum-and-product-of-an-array b/Lang/Euler/Sum-and-product-of-an-array deleted file mode 120000 index da7cbd08c8..0000000000 --- a/Lang/Euler/Sum-and-product-of-an-array +++ /dev/null @@ -1 +0,0 @@ -../../Task/Sum-and-product-of-an-array/Euler \ No newline at end of file diff --git a/Lang/Euler/Sum-of-squares b/Lang/Euler/Sum-of-squares deleted file mode 120000 index 1bc1bddf09..0000000000 --- a/Lang/Euler/Sum-of-squares +++ /dev/null @@ -1 +0,0 @@ -../../Task/Sum-of-squares/Euler \ No newline at end of file diff --git a/Lang/Evaldraw/Draw-a-clock b/Lang/Evaldraw/Draw-a-clock new file mode 120000 index 0000000000..7b8f5d2c12 --- /dev/null +++ b/Lang/Evaldraw/Draw-a-clock @@ -0,0 +1 @@ +../../Task/Draw-a-clock/Evaldraw \ No newline at end of file diff --git a/Lang/F-Sharp/Maximum-triangle-path-sum b/Lang/F-Sharp/Maximum-triangle-path-sum new file mode 120000 index 0000000000..2a3b549ec5 --- /dev/null +++ b/Lang/F-Sharp/Maximum-triangle-path-sum @@ -0,0 +1 @@ +../../Task/Maximum-triangle-path-sum/F-Sharp \ No newline at end of file diff --git a/Lang/FOCAL/Count-the-coins b/Lang/FOCAL/Count-the-coins new file mode 120000 index 0000000000..6334bdc3d9 --- /dev/null +++ b/Lang/FOCAL/Count-the-coins @@ -0,0 +1 @@ +../../Task/Count-the-coins/FOCAL \ No newline at end of file diff --git a/Lang/Forth/Check-input-device-is-a-terminal b/Lang/Forth/Check-input-device-is-a-terminal new file mode 120000 index 0000000000..adf620c022 --- /dev/null +++ b/Lang/Forth/Check-input-device-is-a-terminal @@ -0,0 +1 @@ +../../Task/Check-input-device-is-a-terminal/Forth \ No newline at end of file diff --git a/Lang/Fortran/Dijkstras-algorithm b/Lang/Fortran/Dijkstras-algorithm new file mode 120000 index 0000000000..3c5355acc3 --- /dev/null +++ b/Lang/Fortran/Dijkstras-algorithm @@ -0,0 +1 @@ +../../Task/Dijkstras-algorithm/Fortran \ No newline at end of file diff --git a/Lang/Fortran/Sorting-algorithms-Quicksort b/Lang/Fortran/Sorting-algorithms-Quicksort deleted file mode 120000 index 8ce86e51d1..0000000000 --- a/Lang/Fortran/Sorting-algorithms-Quicksort +++ /dev/null @@ -1 +0,0 @@ -../../Task/Sorting-algorithms-Quicksort/Fortran \ No newline at end of file diff --git a/Lang/FutureBasic/15-puzzle-game b/Lang/FutureBasic/15-puzzle-game new file mode 120000 index 0000000000..1625f252f5 --- /dev/null +++ b/Lang/FutureBasic/15-puzzle-game @@ -0,0 +1 @@ +../../Task/15-puzzle-game/FutureBasic \ No newline at end of file diff --git a/Lang/FutureBasic/2048 b/Lang/FutureBasic/2048 new file mode 120000 index 0000000000..439bdc83e8 --- /dev/null +++ b/Lang/FutureBasic/2048 @@ -0,0 +1 @@ +../../Task/2048/FutureBasic \ No newline at end of file diff --git a/Lang/FutureBasic/Benfords-law b/Lang/FutureBasic/Benfords-law new file mode 120000 index 0000000000..0045818b61 --- /dev/null +++ b/Lang/FutureBasic/Benfords-law @@ -0,0 +1 @@ +../../Task/Benfords-law/FutureBasic \ No newline at end of file diff --git a/Lang/FutureBasic/Bulls-and-cows-Player b/Lang/FutureBasic/Bulls-and-cows-Player new file mode 120000 index 0000000000..294234e3d7 --- /dev/null +++ b/Lang/FutureBasic/Bulls-and-cows-Player @@ -0,0 +1 @@ +../../Task/Bulls-and-cows-Player/FutureBasic \ No newline at end of file diff --git a/Lang/FutureBasic/Call-an-object-method b/Lang/FutureBasic/Call-an-object-method new file mode 120000 index 0000000000..b9d3280ab9 --- /dev/null +++ b/Lang/FutureBasic/Call-an-object-method @@ -0,0 +1 @@ +../../Task/Call-an-object-method/FutureBasic \ No newline at end of file diff --git a/Lang/FutureBasic/Camel-case-and-snake-case b/Lang/FutureBasic/Camel-case-and-snake-case new file mode 120000 index 0000000000..46ad34e50a --- /dev/null +++ b/Lang/FutureBasic/Camel-case-and-snake-case @@ -0,0 +1 @@ +../../Task/Camel-case-and-snake-case/FutureBasic \ No newline at end of file diff --git a/Lang/FutureBasic/Create-an-object-at-a-given-address b/Lang/FutureBasic/Create-an-object-at-a-given-address new file mode 120000 index 0000000000..026e0dd2a5 --- /dev/null +++ b/Lang/FutureBasic/Create-an-object-at-a-given-address @@ -0,0 +1 @@ +../../Task/Create-an-object-at-a-given-address/FutureBasic \ No newline at end of file diff --git a/Lang/FutureBasic/Deepcopy b/Lang/FutureBasic/Deepcopy new file mode 120000 index 0000000000..32db2c2b0a --- /dev/null +++ b/Lang/FutureBasic/Deepcopy @@ -0,0 +1 @@ +../../Task/Deepcopy/FutureBasic \ No newline at end of file diff --git a/Lang/FutureBasic/Find-the-last-Sunday-of-each-month b/Lang/FutureBasic/Find-the-last-Sunday-of-each-month new file mode 120000 index 0000000000..b6d5b12bd1 --- /dev/null +++ b/Lang/FutureBasic/Find-the-last-Sunday-of-each-month @@ -0,0 +1 @@ +../../Task/Find-the-last-Sunday-of-each-month/FutureBasic \ No newline at end of file diff --git a/Lang/FutureBasic/Four-is-magic b/Lang/FutureBasic/Four-is-magic new file mode 120000 index 0000000000..a0162c2baa --- /dev/null +++ b/Lang/FutureBasic/Four-is-magic @@ -0,0 +1 @@ +../../Task/Four-is-magic/FutureBasic \ No newline at end of file diff --git a/Lang/FutureBasic/Guess-the-number-With-feedback b/Lang/FutureBasic/Guess-the-number-With-feedback new file mode 120000 index 0000000000..3f619de1b9 --- /dev/null +++ b/Lang/FutureBasic/Guess-the-number-With-feedback @@ -0,0 +1 @@ +../../Task/Guess-the-number-With-feedback/FutureBasic \ No newline at end of file diff --git a/Lang/GW-BASIC/Arithmetic-Integer b/Lang/GW-BASIC/Arithmetic-Integer new file mode 120000 index 0000000000..216b349b7b --- /dev/null +++ b/Lang/GW-BASIC/Arithmetic-Integer @@ -0,0 +1 @@ +../../Task/Arithmetic-Integer/GW-BASIC \ No newline at end of file diff --git a/Lang/GW-BASIC/Array-concatenation b/Lang/GW-BASIC/Array-concatenation new file mode 120000 index 0000000000..1c42f42efb --- /dev/null +++ b/Lang/GW-BASIC/Array-concatenation @@ -0,0 +1 @@ +../../Task/Array-concatenation/GW-BASIC \ No newline at end of file diff --git a/Lang/GW-BASIC/Box-the-compass b/Lang/GW-BASIC/Box-the-compass new file mode 120000 index 0000000000..29c287bb26 --- /dev/null +++ b/Lang/GW-BASIC/Box-the-compass @@ -0,0 +1 @@ +../../Task/Box-the-compass/GW-BASIC \ No newline at end of file diff --git a/Lang/GW-BASIC/Chaos-game b/Lang/GW-BASIC/Chaos-game new file mode 120000 index 0000000000..cdf457ef86 --- /dev/null +++ b/Lang/GW-BASIC/Chaos-game @@ -0,0 +1 @@ +../../Task/Chaos-game/GW-BASIC \ No newline at end of file diff --git a/Lang/GW-BASIC/Character-codes b/Lang/GW-BASIC/Character-codes new file mode 120000 index 0000000000..74eb8c93c7 --- /dev/null +++ b/Lang/GW-BASIC/Character-codes @@ -0,0 +1 @@ +../../Task/Character-codes/GW-BASIC \ No newline at end of file diff --git a/Lang/GW-BASIC/Compare-length-of-two-strings b/Lang/GW-BASIC/Compare-length-of-two-strings new file mode 120000 index 0000000000..4c75ca9227 --- /dev/null +++ b/Lang/GW-BASIC/Compare-length-of-two-strings @@ -0,0 +1 @@ +../../Task/Compare-length-of-two-strings/GW-BASIC \ No newline at end of file diff --git a/Lang/GW-BASIC/Egyptian-division b/Lang/GW-BASIC/Egyptian-division new file mode 120000 index 0000000000..b65e30d805 --- /dev/null +++ b/Lang/GW-BASIC/Egyptian-division @@ -0,0 +1 @@ +../../Task/Egyptian-division/GW-BASIC \ No newline at end of file diff --git a/Lang/GW-BASIC/Guess-the-number-With-feedback b/Lang/GW-BASIC/Guess-the-number-With-feedback new file mode 120000 index 0000000000..aeb3d5363c --- /dev/null +++ b/Lang/GW-BASIC/Guess-the-number-With-feedback @@ -0,0 +1 @@ +../../Task/Guess-the-number-With-feedback/GW-BASIC \ No newline at end of file diff --git a/Lang/GW-BASIC/Knuth-shuffle b/Lang/GW-BASIC/Knuth-shuffle new file mode 120000 index 0000000000..25475ed80d --- /dev/null +++ b/Lang/GW-BASIC/Knuth-shuffle @@ -0,0 +1 @@ +../../Task/Knuth-shuffle/GW-BASIC \ No newline at end of file diff --git a/Lang/GW-BASIC/Logical-operations b/Lang/GW-BASIC/Logical-operations new file mode 120000 index 0000000000..85f84839dc --- /dev/null +++ b/Lang/GW-BASIC/Logical-operations @@ -0,0 +1 @@ +../../Task/Logical-operations/GW-BASIC \ No newline at end of file diff --git a/Lang/GW-BASIC/Longest-string-challenge b/Lang/GW-BASIC/Longest-string-challenge new file mode 120000 index 0000000000..4b804410d2 --- /dev/null +++ b/Lang/GW-BASIC/Longest-string-challenge @@ -0,0 +1 @@ +../../Task/Longest-string-challenge/GW-BASIC \ No newline at end of file diff --git a/Lang/GW-BASIC/Magic-squares-of-odd-order b/Lang/GW-BASIC/Magic-squares-of-odd-order new file mode 120000 index 0000000000..7fa7f84f6e --- /dev/null +++ b/Lang/GW-BASIC/Magic-squares-of-odd-order @@ -0,0 +1 @@ +../../Task/Magic-squares-of-odd-order/GW-BASIC \ No newline at end of file diff --git a/Lang/GW-BASIC/Magnanimous-numbers b/Lang/GW-BASIC/Magnanimous-numbers new file mode 120000 index 0000000000..ab077acdfb --- /dev/null +++ b/Lang/GW-BASIC/Magnanimous-numbers @@ -0,0 +1 @@ +../../Task/Magnanimous-numbers/GW-BASIC \ No newline at end of file diff --git a/Lang/GW-BASIC/Repeat-a-string b/Lang/GW-BASIC/Repeat-a-string new file mode 120000 index 0000000000..c880372bbb --- /dev/null +++ b/Lang/GW-BASIC/Repeat-a-string @@ -0,0 +1 @@ +../../Task/Repeat-a-string/GW-BASIC \ No newline at end of file diff --git a/Lang/GW-BASIC/Sorting-algorithms-Gnome-sort b/Lang/GW-BASIC/Sorting-algorithms-Gnome-sort new file mode 120000 index 0000000000..c59f570055 --- /dev/null +++ b/Lang/GW-BASIC/Sorting-algorithms-Gnome-sort @@ -0,0 +1 @@ +../../Task/Sorting-algorithms-Gnome-sort/GW-BASIC \ No newline at end of file diff --git a/Lang/GW-BASIC/Sorting-algorithms-Insertion-sort b/Lang/GW-BASIC/Sorting-algorithms-Insertion-sort new file mode 120000 index 0000000000..c063728557 --- /dev/null +++ b/Lang/GW-BASIC/Sorting-algorithms-Insertion-sort @@ -0,0 +1 @@ +../../Task/Sorting-algorithms-Insertion-sort/GW-BASIC \ No newline at end of file diff --git a/Lang/GW-BASIC/String-append b/Lang/GW-BASIC/String-append new file mode 120000 index 0000000000..80a9e1cba9 --- /dev/null +++ b/Lang/GW-BASIC/String-append @@ -0,0 +1 @@ +../../Task/String-append/GW-BASIC \ No newline at end of file diff --git a/Lang/GW-BASIC/String-interpolation-included- b/Lang/GW-BASIC/String-interpolation-included- new file mode 120000 index 0000000000..64d55769d0 --- /dev/null +++ b/Lang/GW-BASIC/String-interpolation-included- @@ -0,0 +1 @@ +../../Task/String-interpolation-included-/GW-BASIC \ No newline at end of file diff --git a/Lang/GW-BASIC/The-Twelve-Days-of-Christmas b/Lang/GW-BASIC/The-Twelve-Days-of-Christmas new file mode 120000 index 0000000000..4988c40de6 --- /dev/null +++ b/Lang/GW-BASIC/The-Twelve-Days-of-Christmas @@ -0,0 +1 @@ +../../Task/The-Twelve-Days-of-Christmas/GW-BASIC \ No newline at end of file diff --git a/Lang/GW-BASIC/Van-Eck-sequence b/Lang/GW-BASIC/Van-Eck-sequence new file mode 120000 index 0000000000..5c697872ea --- /dev/null +++ b/Lang/GW-BASIC/Van-Eck-sequence @@ -0,0 +1 @@ +../../Task/Van-Eck-sequence/GW-BASIC \ No newline at end of file diff --git a/Lang/Gambas/Arithmetic-geometric-mean b/Lang/Gambas/Arithmetic-geometric-mean new file mode 120000 index 0000000000..b22e396101 --- /dev/null +++ b/Lang/Gambas/Arithmetic-geometric-mean @@ -0,0 +1 @@ +../../Task/Arithmetic-geometric-mean/Gambas \ No newline at end of file diff --git a/Lang/Gambas/Blum-integer b/Lang/Gambas/Blum-integer new file mode 120000 index 0000000000..4f2af239ed --- /dev/null +++ b/Lang/Gambas/Blum-integer @@ -0,0 +1 @@ +../../Task/Blum-integer/Gambas \ No newline at end of file diff --git a/Lang/Gambas/Carmichael-3-strong-pseudoprimes b/Lang/Gambas/Carmichael-3-strong-pseudoprimes new file mode 120000 index 0000000000..566cca6a25 --- /dev/null +++ b/Lang/Gambas/Carmichael-3-strong-pseudoprimes @@ -0,0 +1 @@ +../../Task/Carmichael-3-strong-pseudoprimes/Gambas \ No newline at end of file diff --git a/Lang/Gambas/Casting-out-nines b/Lang/Gambas/Casting-out-nines new file mode 120000 index 0000000000..8fce20d84f --- /dev/null +++ b/Lang/Gambas/Casting-out-nines @@ -0,0 +1 @@ +../../Task/Casting-out-nines/Gambas \ No newline at end of file diff --git a/Lang/Gambas/Compare-length-of-two-strings b/Lang/Gambas/Compare-length-of-two-strings new file mode 120000 index 0000000000..dbcccedaa3 --- /dev/null +++ b/Lang/Gambas/Compare-length-of-two-strings @@ -0,0 +1 @@ +../../Task/Compare-length-of-two-strings/Gambas \ No newline at end of file diff --git a/Lang/Gambas/Equal-prime-and-composite-sums b/Lang/Gambas/Equal-prime-and-composite-sums new file mode 120000 index 0000000000..1ab822204b --- /dev/null +++ b/Lang/Gambas/Equal-prime-and-composite-sums @@ -0,0 +1 @@ +../../Task/Equal-prime-and-composite-sums/Gambas \ No newline at end of file diff --git a/Lang/Gambas/Factors-of-an-integer b/Lang/Gambas/Factors-of-an-integer new file mode 120000 index 0000000000..80924d8cbd --- /dev/null +++ b/Lang/Gambas/Factors-of-an-integer @@ -0,0 +1 @@ +../../Task/Factors-of-an-integer/Gambas \ No newline at end of file diff --git a/Lang/Gambas/Find-limit-of-recursion b/Lang/Gambas/Find-limit-of-recursion new file mode 120000 index 0000000000..7e83540246 --- /dev/null +++ b/Lang/Gambas/Find-limit-of-recursion @@ -0,0 +1 @@ +../../Task/Find-limit-of-recursion/Gambas \ No newline at end of file diff --git a/Lang/Gambas/Goldbachs-comet b/Lang/Gambas/Goldbachs-comet new file mode 120000 index 0000000000..ffa4d8fa44 --- /dev/null +++ b/Lang/Gambas/Goldbachs-comet @@ -0,0 +1 @@ +../../Task/Goldbachs-comet/Gambas \ No newline at end of file diff --git a/Lang/Gambas/Haversine-formula b/Lang/Gambas/Haversine-formula new file mode 120000 index 0000000000..7321b74c0f --- /dev/null +++ b/Lang/Gambas/Haversine-formula @@ -0,0 +1 @@ +../../Task/Haversine-formula/Gambas \ No newline at end of file diff --git a/Lang/Gambas/McNuggets-problem b/Lang/Gambas/McNuggets-problem new file mode 120000 index 0000000000..4bd6b7bc10 --- /dev/null +++ b/Lang/Gambas/McNuggets-problem @@ -0,0 +1 @@ +../../Task/McNuggets-problem/Gambas \ No newline at end of file diff --git a/Lang/Gambas/Minimum-multiple-of-m-where-digital-sum-equals-m b/Lang/Gambas/Minimum-multiple-of-m-where-digital-sum-equals-m new file mode 120000 index 0000000000..b93d787a92 --- /dev/null +++ b/Lang/Gambas/Minimum-multiple-of-m-where-digital-sum-equals-m @@ -0,0 +1 @@ +../../Task/Minimum-multiple-of-m-where-digital-sum-equals-m/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 new file mode 120000 index 0000000000..c38ad7fd24 --- /dev/null +++ b/Lang/Gambas/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors @@ -0,0 +1 @@ +../../Task/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors/Gambas \ No newline at end of file diff --git a/Lang/Gambas/Subleq b/Lang/Gambas/Subleq new file mode 120000 index 0000000000..cf8593b33b --- /dev/null +++ b/Lang/Gambas/Subleq @@ -0,0 +1 @@ +../../Task/Subleq/Gambas \ No newline at end of file diff --git a/Lang/Gambas/Tau-number b/Lang/Gambas/Tau-number new file mode 120000 index 0000000000..d7a5e52f2e --- /dev/null +++ b/Lang/Gambas/Tau-number @@ -0,0 +1 @@ +../../Task/Tau-number/Gambas \ No newline at end of file diff --git a/Lang/Haskell/Blum-integer b/Lang/Haskell/Blum-integer new file mode 120000 index 0000000000..5e2fb151af --- /dev/null +++ b/Lang/Haskell/Blum-integer @@ -0,0 +1 @@ +../../Task/Blum-integer/Haskell \ No newline at end of file diff --git a/Lang/IS-BASIC/Arithmetic-geometric-mean-Calculate-Pi b/Lang/IS-BASIC/Arithmetic-geometric-mean-Calculate-Pi new file mode 120000 index 0000000000..1f2f5f0db7 --- /dev/null +++ b/Lang/IS-BASIC/Arithmetic-geometric-mean-Calculate-Pi @@ -0,0 +1 @@ +../../Task/Arithmetic-geometric-mean-Calculate-Pi/IS-BASIC \ No newline at end of file diff --git a/Lang/IS-BASIC/Chaos-game b/Lang/IS-BASIC/Chaos-game new file mode 120000 index 0000000000..d88cbbdffd --- /dev/null +++ b/Lang/IS-BASIC/Chaos-game @@ -0,0 +1 @@ +../../Task/Chaos-game/IS-BASIC \ No newline at end of file diff --git a/Lang/IS-BASIC/Levenshtein-distance b/Lang/IS-BASIC/Levenshtein-distance new file mode 120000 index 0000000000..5e8a9b92bc --- /dev/null +++ b/Lang/IS-BASIC/Levenshtein-distance @@ -0,0 +1 @@ +../../Task/Levenshtein-distance/IS-BASIC \ No newline at end of file diff --git a/Lang/IS-BASIC/Pi b/Lang/IS-BASIC/Pi new file mode 120000 index 0000000000..80838bc8eb --- /dev/null +++ b/Lang/IS-BASIC/Pi @@ -0,0 +1 @@ +../../Task/Pi/IS-BASIC \ No newline at end of file diff --git a/Lang/IS-BASIC/Sierpinski-carpet b/Lang/IS-BASIC/Sierpinski-carpet new file mode 120000 index 0000000000..432bc406d8 --- /dev/null +++ b/Lang/IS-BASIC/Sierpinski-carpet @@ -0,0 +1 @@ +../../Task/Sierpinski-carpet/IS-BASIC \ No newline at end of file diff --git a/Lang/IS-BASIC/Tau-number b/Lang/IS-BASIC/Tau-number new file mode 120000 index 0000000000..62fba6c429 --- /dev/null +++ b/Lang/IS-BASIC/Tau-number @@ -0,0 +1 @@ +../../Task/Tau-number/IS-BASIC \ No newline at end of file diff --git a/Lang/Insitux/00-LANG.txt b/Lang/Insitux/00-LANG.txt index 4ebf558e15..ffe7dc9e9e 100644 --- a/Lang/Insitux/00-LANG.txt +++ b/Lang/Insitux/00-LANG.txt @@ -1,7 +1,12 @@ -{{stub}} {{language|Insitux |site=https://insitux.github.io |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 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. + +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/Insitux/Roman-numerals-Decode b/Lang/Insitux/Roman-numerals-Decode new file mode 120000 index 0000000000..3ae13130bb --- /dev/null +++ b/Lang/Insitux/Roman-numerals-Decode @@ -0,0 +1 @@ +../../Task/Roman-numerals-Decode/Insitux \ No newline at end of file diff --git a/Lang/J/00-LANG.txt b/Lang/J/00-LANG.txt index f665b8789e..c3a67e79d5 100644 --- a/Lang/J/00-LANG.txt +++ b/Lang/J/00-LANG.txt @@ -22,6 +22,8 @@ A frequent reaction when one first encounters a J program is often something alo The flip side of this issue is that J is a dialect of APL — a language whose development started in the 1950s and which was implemented in the early 1960s. And, originally, APL was designed as a language to describe computer architecture. The implementation as a programming language was motivated by its original successes in documenting computer hardware and instructions, and the relative simplicity of its concepts. +See also https://github.com/cratelyn/j for some reflection on some of the linguistic character of J. + == Introduction == J is a notational programming language designed for interactive use. diff --git a/Lang/J/Ramanujan-primes-twins b/Lang/J/Ramanujan-primes-twins new file mode 120000 index 0000000000..beb021482d --- /dev/null +++ b/Lang/J/Ramanujan-primes-twins @@ -0,0 +1 @@ +../../Task/Ramanujan-primes-twins/J \ No newline at end of file diff --git a/Lang/J/Repunit-primes b/Lang/J/Repunit-primes new file mode 120000 index 0000000000..c742186f0c --- /dev/null +++ b/Lang/J/Repunit-primes @@ -0,0 +1 @@ +../../Task/Repunit-primes/J \ No newline at end of file diff --git a/Lang/J/Smarandache-Wellin-primes b/Lang/J/Smarandache-Wellin-primes new file mode 120000 index 0000000000..e1e398e815 --- /dev/null +++ b/Lang/J/Smarandache-Wellin-primes @@ -0,0 +1 @@ +../../Task/Smarandache-Wellin-primes/J \ No newline at end of file diff --git a/Lang/J/Wilson-primes-of-order-n b/Lang/J/Wilson-primes-of-order-n new file mode 120000 index 0000000000..7d0e5a9315 --- /dev/null +++ b/Lang/J/Wilson-primes-of-order-n @@ -0,0 +1 @@ +../../Task/Wilson-primes-of-order-n/J \ No newline at end of file diff --git a/Lang/Java/ADFGVX-cipher b/Lang/Java/ADFGVX-cipher new file mode 120000 index 0000000000..be3b3fd305 --- /dev/null +++ b/Lang/Java/ADFGVX-cipher @@ -0,0 +1 @@ +../../Task/ADFGVX-cipher/Java \ No newline at end of file diff --git a/Lang/Java/Add-a-variable-to-a-class-instance-at-runtime b/Lang/Java/Add-a-variable-to-a-class-instance-at-runtime new file mode 120000 index 0000000000..f7446f3101 --- /dev/null +++ b/Lang/Java/Add-a-variable-to-a-class-instance-at-runtime @@ -0,0 +1 @@ +../../Task/Add-a-variable-to-a-class-instance-at-runtime/Java \ No newline at end of file diff --git a/Lang/Java/Algebraic-data-types b/Lang/Java/Algebraic-data-types new file mode 120000 index 0000000000..263f871f37 --- /dev/null +++ b/Lang/Java/Algebraic-data-types @@ -0,0 +1 @@ +../../Task/Algebraic-data-types/Java \ No newline at end of file diff --git a/Lang/Java/Factorial-base-numbers-indexing-permutations-of-a-collection b/Lang/Java/Factorial-base-numbers-indexing-permutations-of-a-collection new file mode 120000 index 0000000000..e74c091aba --- /dev/null +++ b/Lang/Java/Factorial-base-numbers-indexing-permutations-of-a-collection @@ -0,0 +1 @@ +../../Task/Factorial-base-numbers-indexing-permutations-of-a-collection/Java \ No newline at end of file diff --git a/Lang/Java/Main-step-of-GOST-28147-89 b/Lang/Java/Main-step-of-GOST-28147-89 new file mode 120000 index 0000000000..1604930826 --- /dev/null +++ b/Lang/Java/Main-step-of-GOST-28147-89 @@ -0,0 +1 @@ +../../Task/Main-step-of-GOST-28147-89/Java \ No newline at end of file diff --git a/Lang/Java/Own-digits-power-sum b/Lang/Java/Own-digits-power-sum new file mode 120000 index 0000000000..52d7afdc8a --- /dev/null +++ b/Lang/Java/Own-digits-power-sum @@ -0,0 +1 @@ +../../Task/Own-digits-power-sum/Java \ No newline at end of file diff --git a/Lang/Java/Table-creation-Postal-addresses b/Lang/Java/Table-creation-Postal-addresses new file mode 120000 index 0000000000..7dc553f160 --- /dev/null +++ b/Lang/Java/Table-creation-Postal-addresses @@ -0,0 +1 @@ +../../Task/Table-creation-Postal-addresses/Java \ No newline at end of file diff --git a/Lang/Java/Transliterate-English-text-using-the-Greek-alphabet b/Lang/Java/Transliterate-English-text-using-the-Greek-alphabet new file mode 120000 index 0000000000..bf7b1fc92f --- /dev/null +++ b/Lang/Java/Transliterate-English-text-using-the-Greek-alphabet @@ -0,0 +1 @@ +../../Task/Transliterate-English-text-using-the-Greek-alphabet/Java \ No newline at end of file diff --git a/Lang/Java/Ukkonen-s-suffix-tree-construction b/Lang/Java/Ukkonen-s-suffix-tree-construction new file mode 120000 index 0000000000..8d58725601 --- /dev/null +++ b/Lang/Java/Ukkonen-s-suffix-tree-construction @@ -0,0 +1 @@ +../../Task/Ukkonen-s-suffix-tree-construction/Java \ No newline at end of file diff --git a/Lang/Java/Variable-size-Set b/Lang/Java/Variable-size-Set new file mode 120000 index 0000000000..7321e05f76 --- /dev/null +++ b/Lang/Java/Variable-size-Set @@ -0,0 +1 @@ +../../Task/Variable-size-Set/Java \ No newline at end of file diff --git a/Lang/Java/Wasteful-equidigital-and-frugal-numbers b/Lang/Java/Wasteful-equidigital-and-frugal-numbers new file mode 120000 index 0000000000..cbd9f1bf78 --- /dev/null +++ b/Lang/Java/Wasteful-equidigital-and-frugal-numbers @@ -0,0 +1 @@ +../../Task/Wasteful-equidigital-and-frugal-numbers/Java \ No newline at end of file diff --git a/Lang/Java/Wordiff b/Lang/Java/Wordiff new file mode 120000 index 0000000000..1acc7da1bd --- /dev/null +++ b/Lang/Java/Wordiff @@ -0,0 +1 @@ +../../Task/Wordiff/Java \ No newline at end of file diff --git a/Lang/JavaScript/Find-if-a-point-is-within-a-triangle b/Lang/JavaScript/Find-if-a-point-is-within-a-triangle new file mode 120000 index 0000000000..1aa2b1052e --- /dev/null +++ b/Lang/JavaScript/Find-if-a-point-is-within-a-triangle @@ -0,0 +1 @@ +../../Task/Find-if-a-point-is-within-a-triangle/JavaScript \ No newline at end of file diff --git a/Lang/Joy/Sum-multiples-of-3-and-5 b/Lang/Joy/Sum-multiples-of-3-and-5 new file mode 120000 index 0000000000..1a0f4580de --- /dev/null +++ b/Lang/Joy/Sum-multiples-of-3-and-5 @@ -0,0 +1 @@ +../../Task/Sum-multiples-of-3-and-5/Joy \ No newline at end of file diff --git a/Lang/Julia/B-zier-curves-Intersections b/Lang/Julia/B-zier-curves-Intersections new file mode 120000 index 0000000000..02cdc8ea33 --- /dev/null +++ b/Lang/Julia/B-zier-curves-Intersections @@ -0,0 +1 @@ +../../Task/B-zier-curves-Intersections/Julia \ No newline at end of file diff --git a/Lang/KL1/Hello-world-Text b/Lang/KL1/Hello-world-Text new file mode 120000 index 0000000000..a83e887280 --- /dev/null +++ b/Lang/KL1/Hello-world-Text @@ -0,0 +1 @@ +../../Task/Hello-world-Text/KL1 \ No newline at end of file diff --git a/Lang/Koka/Tic-tac-toe b/Lang/Koka/Tic-tac-toe new file mode 120000 index 0000000000..0ac61d9c06 --- /dev/null +++ b/Lang/Koka/Tic-tac-toe @@ -0,0 +1 @@ +../../Task/Tic-tac-toe/Koka \ No newline at end of file diff --git a/Lang/Lean/Hello-world-Standard-error b/Lang/Lean/Hello-world-Standard-error new file mode 120000 index 0000000000..cad633adb0 --- /dev/null +++ b/Lang/Lean/Hello-world-Standard-error @@ -0,0 +1 @@ +../../Task/Hello-world-Standard-error/Lean \ No newline at end of file diff --git a/Lang/Logo/00-LANG.txt b/Lang/Logo/00-LANG.txt index 6deea15712..6f97fd46ee 100644 --- a/Lang/Logo/00-LANG.txt +++ b/Lang/Logo/00-LANG.txt @@ -8,6 +8,6 @@ |LCT=yes}}'''Logo''' is a language invented by Seymour Papert in the 1960's designed expressly for teaching programming to children. It is well known for its built-in [[wp:turtle graphics|turtle graphics]]. Unlike other languages which attempt to fill the educational niche, like [[BASIC]], Logo has [[Lisp]]-like underpinnings, and can be used to teach structured, recursive, and functional programming. ==See Also== -*[http://logo.twentygototen.org/ papert - a Logo interpreter written in JavaScript] +*[http://rmmh.github.io/papert/static/ papert - a Logo interpreter written in JavaScript] *[http://www.calormen.com/Logo/ Another Logo interpreter written in JavaScript by Joshua Bell] *[http://lhogho.sourceforge.net/ Lhogho - a Logo compiler written in C by Pavel Boytchev] \ No newline at end of file diff --git a/Lang/Lua/Equal-prime-and-composite-sums b/Lang/Lua/Equal-prime-and-composite-sums new file mode 120000 index 0000000000..063c8635e5 --- /dev/null +++ b/Lang/Lua/Equal-prime-and-composite-sums @@ -0,0 +1 @@ +../../Task/Equal-prime-and-composite-sums/Lua \ No newline at end of file diff --git a/Lang/Lua/Giuga-numbers b/Lang/Lua/Giuga-numbers new file mode 120000 index 0000000000..a65d758127 --- /dev/null +++ b/Lang/Lua/Giuga-numbers @@ -0,0 +1 @@ +../../Task/Giuga-numbers/Lua \ No newline at end of file diff --git a/Lang/Lua/Jacobi-symbol b/Lang/Lua/Jacobi-symbol new file mode 120000 index 0000000000..bdc4c4fe10 --- /dev/null +++ b/Lang/Lua/Jacobi-symbol @@ -0,0 +1 @@ +../../Task/Jacobi-symbol/Lua \ No newline at end of file diff --git a/Lang/Lua/Largest-proper-divisor-of-n b/Lang/Lua/Largest-proper-divisor-of-n new file mode 120000 index 0000000000..7f2df1345a --- /dev/null +++ b/Lang/Lua/Largest-proper-divisor-of-n @@ -0,0 +1 @@ +../../Task/Largest-proper-divisor-of-n/Lua \ No newline at end of file diff --git a/Lang/Lua/Numbers-which-are-not-the-sum-of-distinct-squares b/Lang/Lua/Numbers-which-are-not-the-sum-of-distinct-squares new file mode 120000 index 0000000000..1fd326f10e --- /dev/null +++ b/Lang/Lua/Numbers-which-are-not-the-sum-of-distinct-squares @@ -0,0 +1 @@ +../../Task/Numbers-which-are-not-the-sum-of-distinct-squares/Lua \ No newline at end of file diff --git a/Lang/Lua/Radical-of-an-integer b/Lang/Lua/Radical-of-an-integer new file mode 120000 index 0000000000..dd64e956a2 --- /dev/null +++ b/Lang/Lua/Radical-of-an-integer @@ -0,0 +1 @@ +../../Task/Radical-of-an-integer/Lua \ No newline at end of file diff --git a/Lang/MACRO-11/Binary-digits b/Lang/MACRO-11/Binary-digits new file mode 120000 index 0000000000..a2876ce191 --- /dev/null +++ b/Lang/MACRO-11/Binary-digits @@ -0,0 +1 @@ +../../Task/Binary-digits/MACRO-11 \ No newline at end of file diff --git a/Lang/MACRO-11/McNuggets-problem b/Lang/MACRO-11/McNuggets-problem new file mode 120000 index 0000000000..2067890dbc --- /dev/null +++ b/Lang/MACRO-11/McNuggets-problem @@ -0,0 +1 @@ +../../Task/McNuggets-problem/MACRO-11 \ No newline at end of file diff --git a/Lang/MAD/Count-the-coins b/Lang/MAD/Count-the-coins new file mode 120000 index 0000000000..fc27a9f988 --- /dev/null +++ b/Lang/MAD/Count-the-coins @@ -0,0 +1 @@ +../../Task/Count-the-coins/MAD \ No newline at end of file diff --git a/Lang/MSX-Basic/Arithmetic-Integer b/Lang/MSX-Basic/Arithmetic-Integer new file mode 120000 index 0000000000..aaa58ac04e --- /dev/null +++ b/Lang/MSX-Basic/Arithmetic-Integer @@ -0,0 +1 @@ +../../Task/Arithmetic-Integer/MSX-Basic \ No newline at end of file diff --git a/Lang/MSX-Basic/Balanced-brackets b/Lang/MSX-Basic/Balanced-brackets new file mode 120000 index 0000000000..6606d4c62a --- /dev/null +++ b/Lang/MSX-Basic/Balanced-brackets @@ -0,0 +1 @@ +../../Task/Balanced-brackets/MSX-Basic \ No newline at end of file diff --git a/Lang/MSX-Basic/Casting-out-nines b/Lang/MSX-Basic/Casting-out-nines new file mode 120000 index 0000000000..496486e0bb --- /dev/null +++ b/Lang/MSX-Basic/Casting-out-nines @@ -0,0 +1 @@ +../../Task/Casting-out-nines/MSX-Basic \ No newline at end of file diff --git a/Lang/MSX-Basic/Catalan-numbers-Pascals-triangle b/Lang/MSX-Basic/Catalan-numbers-Pascals-triangle new file mode 120000 index 0000000000..0915489acf --- /dev/null +++ b/Lang/MSX-Basic/Catalan-numbers-Pascals-triangle @@ -0,0 +1 @@ +../../Task/Catalan-numbers-Pascals-triangle/MSX-Basic \ No newline at end of file diff --git a/Lang/MSX-Basic/Chaos-game b/Lang/MSX-Basic/Chaos-game new file mode 120000 index 0000000000..84ce60ae68 --- /dev/null +++ b/Lang/MSX-Basic/Chaos-game @@ -0,0 +1 @@ +../../Task/Chaos-game/MSX-Basic \ No newline at end of file diff --git a/Lang/MSX-Basic/Character-codes b/Lang/MSX-Basic/Character-codes new file mode 120000 index 0000000000..864fa47ef3 --- /dev/null +++ b/Lang/MSX-Basic/Character-codes @@ -0,0 +1 @@ +../../Task/Character-codes/MSX-Basic \ No newline at end of file diff --git a/Lang/MSX-Basic/Compare-length-of-two-strings b/Lang/MSX-Basic/Compare-length-of-two-strings new file mode 120000 index 0000000000..2d9711b8a5 --- /dev/null +++ b/Lang/MSX-Basic/Compare-length-of-two-strings @@ -0,0 +1 @@ +../../Task/Compare-length-of-two-strings/MSX-Basic \ No newline at end of file diff --git a/Lang/MSX-Basic/Egyptian-division b/Lang/MSX-Basic/Egyptian-division new file mode 120000 index 0000000000..f728e3679e --- /dev/null +++ b/Lang/MSX-Basic/Egyptian-division @@ -0,0 +1 @@ +../../Task/Egyptian-division/MSX-Basic \ No newline at end of file diff --git a/Lang/MSX-Basic/Guess-the-number-With-feedback b/Lang/MSX-Basic/Guess-the-number-With-feedback new file mode 120000 index 0000000000..fb980893ed --- /dev/null +++ b/Lang/MSX-Basic/Guess-the-number-With-feedback @@ -0,0 +1 @@ +../../Task/Guess-the-number-With-feedback/MSX-Basic \ No newline at end of file diff --git a/Lang/MSX-Basic/Logical-operations b/Lang/MSX-Basic/Logical-operations new file mode 120000 index 0000000000..ff8c74475d --- /dev/null +++ b/Lang/MSX-Basic/Logical-operations @@ -0,0 +1 @@ +../../Task/Logical-operations/MSX-Basic \ No newline at end of file diff --git a/Lang/MSX-Basic/Longest-string-challenge b/Lang/MSX-Basic/Longest-string-challenge new file mode 120000 index 0000000000..84c8411c40 --- /dev/null +++ b/Lang/MSX-Basic/Longest-string-challenge @@ -0,0 +1 @@ +../../Task/Longest-string-challenge/MSX-Basic \ No newline at end of file diff --git a/Lang/MSX-Basic/Magic-squares-of-odd-order b/Lang/MSX-Basic/Magic-squares-of-odd-order new file mode 120000 index 0000000000..f22c14f72c --- /dev/null +++ b/Lang/MSX-Basic/Magic-squares-of-odd-order @@ -0,0 +1 @@ +../../Task/Magic-squares-of-odd-order/MSX-Basic \ No newline at end of file diff --git a/Lang/MSX-Basic/Pig-the-dice-game b/Lang/MSX-Basic/Pig-the-dice-game new file mode 120000 index 0000000000..f87ec9a67c --- /dev/null +++ b/Lang/MSX-Basic/Pig-the-dice-game @@ -0,0 +1 @@ +../../Task/Pig-the-dice-game/MSX-Basic \ No newline at end of file diff --git a/Lang/MSX-Basic/Sorting-algorithms-Gnome-sort b/Lang/MSX-Basic/Sorting-algorithms-Gnome-sort new file mode 120000 index 0000000000..7f3aa97349 --- /dev/null +++ b/Lang/MSX-Basic/Sorting-algorithms-Gnome-sort @@ -0,0 +1 @@ +../../Task/Sorting-algorithms-Gnome-sort/MSX-Basic \ No newline at end of file diff --git a/Lang/Macsyma/00-LANG.txt b/Lang/Macsyma/00-LANG.txt new file mode 100644 index 0000000000..e5e1fd4a0a --- /dev/null +++ b/Lang/Macsyma/00-LANG.txt @@ -0,0 +1,4 @@ +{{language|Macsyma}} +"Project MAC's SYmbolic MAnipulator" + +Is one of the oldest general-purpose computer algebra systems. \ No newline at end of file diff --git a/Lang/Macsyma/00-META.yaml b/Lang/Macsyma/00-META.yaml new file mode 100644 index 0000000000..e65a9178cf --- /dev/null +++ b/Lang/Macsyma/00-META.yaml @@ -0,0 +1,2 @@ +--- +from: http://rosettacode.org/wiki/Category:Macsyma diff --git a/Lang/Maxima/00-LANG.txt b/Lang/Maxima/00-LANG.txt index d90dc35da7..3ca362e632 100644 --- a/Lang/Maxima/00-LANG.txt +++ b/Lang/Maxima/00-LANG.txt @@ -3,4 +3,7 @@ Maxima is the language used in the computer algebra system of the same name. [[Category:Mathematical programming languages]] -[[Category:Lisp related]] \ No newline at end of file +[[Category:Lisp related]] + +==Todo== +[[Tasks_not_implemented_in_Maxima]] \ No newline at end of file diff --git a/Lang/Maxima/Babbage-problem b/Lang/Maxima/Babbage-problem new file mode 120000 index 0000000000..8f35ad629d --- /dev/null +++ b/Lang/Maxima/Babbage-problem @@ -0,0 +1 @@ +../../Task/Babbage-problem/Maxima \ No newline at end of file diff --git a/Lang/Maxima/Calculating-the-value-of-e b/Lang/Maxima/Calculating-the-value-of-e new file mode 120000 index 0000000000..99ef3e7777 --- /dev/null +++ b/Lang/Maxima/Calculating-the-value-of-e @@ -0,0 +1 @@ +../../Task/Calculating-the-value-of-e/Maxima \ No newline at end of file diff --git a/Lang/Maxima/Catalan-numbers-Pascals-triangle b/Lang/Maxima/Catalan-numbers-Pascals-triangle new file mode 120000 index 0000000000..9cf7344fa4 --- /dev/null +++ b/Lang/Maxima/Catalan-numbers-Pascals-triangle @@ -0,0 +1 @@ +../../Task/Catalan-numbers-Pascals-triangle/Maxima \ No newline at end of file diff --git a/Lang/Maxima/Motzkin-numbers b/Lang/Maxima/Motzkin-numbers new file mode 120000 index 0000000000..5663c207ac --- /dev/null +++ b/Lang/Maxima/Motzkin-numbers @@ -0,0 +1 @@ +../../Task/Motzkin-numbers/Maxima \ No newline at end of file diff --git a/Lang/Maxima/Multifactorial b/Lang/Maxima/Multifactorial new file mode 120000 index 0000000000..46f2b49532 --- /dev/null +++ b/Lang/Maxima/Multifactorial @@ -0,0 +1 @@ +../../Task/Multifactorial/Maxima \ No newline at end of file diff --git a/Lang/Mia/00-LANG.txt b/Lang/Mia/00-LANG.txt new file mode 100644 index 0000000000..c25a056976 --- /dev/null +++ b/Lang/Mia/00-LANG.txt @@ -0,0 +1 @@ +{{stub}}{{language|Ayrch}} \ No newline at end of file diff --git a/Lang/Mia/00-META.yaml b/Lang/Mia/00-META.yaml new file mode 100644 index 0000000000..5e501a39c7 --- /dev/null +++ b/Lang/Mia/00-META.yaml @@ -0,0 +1,2 @@ +--- +from: http://rosettacode.org/wiki/Category:Mia diff --git a/Lang/MiniScript/15-puzzle-game b/Lang/MiniScript/15-puzzle-game new file mode 120000 index 0000000000..7e5c7af4af --- /dev/null +++ b/Lang/MiniScript/15-puzzle-game @@ -0,0 +1 @@ +../../Task/15-puzzle-game/MiniScript \ No newline at end of file diff --git a/Lang/MiniScript/4-rings-or-4-squares-puzzle b/Lang/MiniScript/4-rings-or-4-squares-puzzle new file mode 120000 index 0000000000..ced2ec47b4 --- /dev/null +++ b/Lang/MiniScript/4-rings-or-4-squares-puzzle @@ -0,0 +1 @@ +../../Task/4-rings-or-4-squares-puzzle/MiniScript \ No newline at end of file diff --git a/Lang/MiniScript/Abelian-sandpile-model b/Lang/MiniScript/Abelian-sandpile-model new file mode 120000 index 0000000000..204b227af1 --- /dev/null +++ b/Lang/MiniScript/Abelian-sandpile-model @@ -0,0 +1 @@ +../../Task/Abelian-sandpile-model/MiniScript \ No newline at end of file diff --git a/Lang/MiniScript/Abundant-odd-numbers b/Lang/MiniScript/Abundant-odd-numbers new file mode 120000 index 0000000000..91bcaad5c3 --- /dev/null +++ b/Lang/MiniScript/Abundant-odd-numbers @@ -0,0 +1 @@ +../../Task/Abundant-odd-numbers/MiniScript \ No newline at end of file diff --git a/Lang/MiniScript/Accumulator-factory b/Lang/MiniScript/Accumulator-factory new file mode 120000 index 0000000000..1405ff6446 --- /dev/null +++ b/Lang/MiniScript/Accumulator-factory @@ -0,0 +1 @@ +../../Task/Accumulator-factory/MiniScript \ No newline at end of file diff --git a/Lang/MiniScript/Additive-primes b/Lang/MiniScript/Additive-primes new file mode 120000 index 0000000000..9b3b9e3623 --- /dev/null +++ b/Lang/MiniScript/Additive-primes @@ -0,0 +1 @@ +../../Task/Additive-primes/MiniScript \ No newline at end of file diff --git a/Lang/MiniScript/Align-columns b/Lang/MiniScript/Align-columns new file mode 120000 index 0000000000..bf15d9e815 --- /dev/null +++ b/Lang/MiniScript/Align-columns @@ -0,0 +1 @@ +../../Task/Align-columns/MiniScript \ No newline at end of file diff --git a/Lang/MiniScript/Almost-prime b/Lang/MiniScript/Almost-prime new file mode 120000 index 0000000000..b20040bcf6 --- /dev/null +++ b/Lang/MiniScript/Almost-prime @@ -0,0 +1 @@ +../../Task/Almost-prime/MiniScript \ No newline at end of file diff --git a/Lang/MiniScript/Anagrams b/Lang/MiniScript/Anagrams new file mode 120000 index 0000000000..fa29a4485e --- /dev/null +++ b/Lang/MiniScript/Anagrams @@ -0,0 +1 @@ +../../Task/Anagrams/MiniScript \ No newline at end of file diff --git a/Lang/MiniScript/Archimedean-spiral b/Lang/MiniScript/Archimedean-spiral new file mode 120000 index 0000000000..4f733ba176 --- /dev/null +++ b/Lang/MiniScript/Archimedean-spiral @@ -0,0 +1 @@ +../../Task/Archimedean-spiral/MiniScript \ No newline at end of file diff --git a/Lang/MiniScript/Attractive-numbers b/Lang/MiniScript/Attractive-numbers new file mode 120000 index 0000000000..b4e1856e0e --- /dev/null +++ b/Lang/MiniScript/Attractive-numbers @@ -0,0 +1 @@ +../../Task/Attractive-numbers/MiniScript \ No newline at end of file diff --git a/Lang/MiniScript/Averages-Mean-angle b/Lang/MiniScript/Averages-Mean-angle new file mode 120000 index 0000000000..d2713dd5a3 --- /dev/null +++ b/Lang/MiniScript/Averages-Mean-angle @@ -0,0 +1 @@ +../../Task/Averages-Mean-angle/MiniScript \ No newline at end of file diff --git a/Lang/MiniScript/Bitmap b/Lang/MiniScript/Bitmap new file mode 120000 index 0000000000..365ee5eb36 --- /dev/null +++ b/Lang/MiniScript/Bitmap @@ -0,0 +1 @@ +../../Task/Bitmap/MiniScript \ No newline at end of file diff --git a/Lang/MiniScript/Bitmap-B-zier-curves-Cubic b/Lang/MiniScript/Bitmap-B-zier-curves-Cubic new file mode 120000 index 0000000000..f0e0eca06d --- /dev/null +++ b/Lang/MiniScript/Bitmap-B-zier-curves-Cubic @@ -0,0 +1 @@ +../../Task/Bitmap-B-zier-curves-Cubic/MiniScript \ No newline at end of file diff --git a/Lang/MiniScript/Bitmap-B-zier-curves-Quadratic b/Lang/MiniScript/Bitmap-B-zier-curves-Quadratic new file mode 120000 index 0000000000..15d71b6d75 --- /dev/null +++ b/Lang/MiniScript/Bitmap-B-zier-curves-Quadratic @@ -0,0 +1 @@ +../../Task/Bitmap-B-zier-curves-Quadratic/MiniScript \ No newline at end of file diff --git a/Lang/MiniScript/Bitmap-Bresenhams-line-algorithm b/Lang/MiniScript/Bitmap-Bresenhams-line-algorithm new file mode 120000 index 0000000000..f0f56f0d6e --- /dev/null +++ b/Lang/MiniScript/Bitmap-Bresenhams-line-algorithm @@ -0,0 +1 @@ +../../Task/Bitmap-Bresenhams-line-algorithm/MiniScript \ No newline at end of file diff --git a/Lang/MiniScript/Bitmap-Flood-fill b/Lang/MiniScript/Bitmap-Flood-fill new file mode 120000 index 0000000000..34c70cc53f --- /dev/null +++ b/Lang/MiniScript/Bitmap-Flood-fill @@ -0,0 +1 @@ +../../Task/Bitmap-Flood-fill/MiniScript \ No newline at end of file diff --git a/Lang/MiniScript/Cantor-set b/Lang/MiniScript/Cantor-set new file mode 120000 index 0000000000..de0a42ce52 --- /dev/null +++ b/Lang/MiniScript/Cantor-set @@ -0,0 +1 @@ +../../Task/Cantor-set/MiniScript \ No newline at end of file diff --git a/Lang/MiniScript/Compare-length-of-two-strings b/Lang/MiniScript/Compare-length-of-two-strings new file mode 120000 index 0000000000..c99239d3fe --- /dev/null +++ b/Lang/MiniScript/Compare-length-of-two-strings @@ -0,0 +1 @@ +../../Task/Compare-length-of-two-strings/MiniScript \ No newline at end of file diff --git a/Lang/MiniScript/Count-in-octal b/Lang/MiniScript/Count-in-octal new file mode 120000 index 0000000000..c68fe650dd --- /dev/null +++ b/Lang/MiniScript/Count-in-octal @@ -0,0 +1 @@ +../../Task/Count-in-octal/MiniScript \ No newline at end of file diff --git a/Lang/MiniScript/Digital-root b/Lang/MiniScript/Digital-root new file mode 120000 index 0000000000..05c86864b6 --- /dev/null +++ b/Lang/MiniScript/Digital-root @@ -0,0 +1 @@ +../../Task/Digital-root/MiniScript \ No newline at end of file diff --git a/Lang/MiniScript/Disarium-numbers b/Lang/MiniScript/Disarium-numbers new file mode 120000 index 0000000000..6059b2cae0 --- /dev/null +++ b/Lang/MiniScript/Disarium-numbers @@ -0,0 +1 @@ +../../Task/Disarium-numbers/MiniScript \ No newline at end of file diff --git a/Lang/MiniScript/Elementary-cellular-automaton b/Lang/MiniScript/Elementary-cellular-automaton new file mode 120000 index 0000000000..7a23621bbe --- /dev/null +++ b/Lang/MiniScript/Elementary-cellular-automaton @@ -0,0 +1 @@ +../../Task/Elementary-cellular-automaton/MiniScript \ No newline at end of file diff --git a/Lang/MiniScript/Fractal-tree b/Lang/MiniScript/Fractal-tree new file mode 120000 index 0000000000..55a8a26736 --- /dev/null +++ b/Lang/MiniScript/Fractal-tree @@ -0,0 +1 @@ +../../Task/Fractal-tree/MiniScript \ No newline at end of file diff --git a/Lang/MiniScript/Grayscale-image b/Lang/MiniScript/Grayscale-image new file mode 120000 index 0000000000..5b0c8a08a0 --- /dev/null +++ b/Lang/MiniScript/Grayscale-image @@ -0,0 +1 @@ +../../Task/Grayscale-image/MiniScript \ No newline at end of file diff --git a/Lang/MiniScript/Hailstone-sequence b/Lang/MiniScript/Hailstone-sequence new file mode 120000 index 0000000000..68089b892e --- /dev/null +++ b/Lang/MiniScript/Hailstone-sequence @@ -0,0 +1 @@ +../../Task/Hailstone-sequence/MiniScript \ No newline at end of file diff --git a/Lang/MiniScript/Hello-world-Graphical b/Lang/MiniScript/Hello-world-Graphical new file mode 120000 index 0000000000..1cbf28b019 --- /dev/null +++ b/Lang/MiniScript/Hello-world-Graphical @@ -0,0 +1 @@ +../../Task/Hello-world-Graphical/MiniScript \ No newline at end of file diff --git a/Lang/MiniScript/Hex-words b/Lang/MiniScript/Hex-words new file mode 120000 index 0000000000..5dbe9fd7cc --- /dev/null +++ b/Lang/MiniScript/Hex-words @@ -0,0 +1 @@ +../../Task/Hex-words/MiniScript \ No newline at end of file diff --git a/Lang/MiniScript/ISBN13-check-digit b/Lang/MiniScript/ISBN13-check-digit new file mode 120000 index 0000000000..717a3cde6f --- /dev/null +++ b/Lang/MiniScript/ISBN13-check-digit @@ -0,0 +1 @@ +../../Task/ISBN13-check-digit/MiniScript \ No newline at end of file diff --git a/Lang/MiniScript/Image-noise b/Lang/MiniScript/Image-noise new file mode 120000 index 0000000000..1b1884e3d1 --- /dev/null +++ b/Lang/MiniScript/Image-noise @@ -0,0 +1 @@ +../../Task/Image-noise/MiniScript \ No newline at end of file diff --git a/Lang/MiniScript/Longest-string-challenge b/Lang/MiniScript/Longest-string-challenge new file mode 120000 index 0000000000..04c596eef3 --- /dev/null +++ b/Lang/MiniScript/Longest-string-challenge @@ -0,0 +1 @@ +../../Task/Longest-string-challenge/MiniScript \ No newline at end of file diff --git a/Lang/MiniScript/MAC-vendor-lookup b/Lang/MiniScript/MAC-vendor-lookup new file mode 120000 index 0000000000..8111f80017 --- /dev/null +++ b/Lang/MiniScript/MAC-vendor-lookup @@ -0,0 +1 @@ +../../Task/MAC-vendor-lookup/MiniScript \ No newline at end of file diff --git a/Lang/MiniScript/McNuggets-problem b/Lang/MiniScript/McNuggets-problem new file mode 120000 index 0000000000..8d97a35c79 --- /dev/null +++ b/Lang/MiniScript/McNuggets-problem @@ -0,0 +1 @@ +../../Task/McNuggets-problem/MiniScript \ No newline at end of file diff --git a/Lang/MiniScript/N-queens-problem b/Lang/MiniScript/N-queens-problem new file mode 120000 index 0000000000..56fe34197f --- /dev/null +++ b/Lang/MiniScript/N-queens-problem @@ -0,0 +1 @@ +../../Task/N-queens-problem/MiniScript \ No newline at end of file diff --git a/Lang/MiniScript/Order-by-pair-comparisons b/Lang/MiniScript/Order-by-pair-comparisons new file mode 120000 index 0000000000..0647767d0b --- /dev/null +++ b/Lang/MiniScript/Order-by-pair-comparisons @@ -0,0 +1 @@ +../../Task/Order-by-pair-comparisons/MiniScript \ No newline at end of file diff --git a/Lang/MiniScript/Pi b/Lang/MiniScript/Pi new file mode 120000 index 0000000000..053fc0881f --- /dev/null +++ b/Lang/MiniScript/Pi @@ -0,0 +1 @@ +../../Task/Pi/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 new file mode 120000 index 0000000000..e32d286342 --- /dev/null +++ b/Lang/MiniScript/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors @@ -0,0 +1 @@ +../../Task/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors/MiniScript \ No newline at end of file diff --git a/Lang/MiniScript/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/MiniScript/Sequence:-smallest-number-with-exactly-n-divisors new file mode 120000 index 0000000000..d22e2a69ce --- /dev/null +++ b/Lang/MiniScript/Sequence:-smallest-number-with-exactly-n-divisors @@ -0,0 +1 @@ +../../Task/Sequence:-smallest-number-with-exactly-n-divisors/MiniScript \ No newline at end of file diff --git a/Lang/MiniScript/Singly-linked-list-Element-definition b/Lang/MiniScript/Singly-linked-list-Element-definition new file mode 120000 index 0000000000..2a87d3badd --- /dev/null +++ b/Lang/MiniScript/Singly-linked-list-Element-definition @@ -0,0 +1 @@ +../../Task/Singly-linked-list-Element-definition/MiniScript \ No newline at end of file diff --git a/Lang/MiniScript/Singly-linked-list-Element-insertion b/Lang/MiniScript/Singly-linked-list-Element-insertion new file mode 120000 index 0000000000..93fef166d0 --- /dev/null +++ b/Lang/MiniScript/Singly-linked-list-Element-insertion @@ -0,0 +1 @@ +../../Task/Singly-linked-list-Element-insertion/MiniScript \ No newline at end of file diff --git a/Lang/MiniScript/Solve-a-Hidato-puzzle b/Lang/MiniScript/Solve-a-Hidato-puzzle new file mode 120000 index 0000000000..88a97d21c2 --- /dev/null +++ b/Lang/MiniScript/Solve-a-Hidato-puzzle @@ -0,0 +1 @@ +../../Task/Solve-a-Hidato-puzzle/MiniScript \ No newline at end of file diff --git a/Lang/MiniScript/Sort-disjoint-sublist b/Lang/MiniScript/Sort-disjoint-sublist new file mode 120000 index 0000000000..73ee8d9c24 --- /dev/null +++ b/Lang/MiniScript/Sort-disjoint-sublist @@ -0,0 +1 @@ +../../Task/Sort-disjoint-sublist/MiniScript \ No newline at end of file diff --git a/Lang/MiniScript/Sorting-algorithms-Gnome-sort b/Lang/MiniScript/Sorting-algorithms-Gnome-sort new file mode 120000 index 0000000000..1859916a86 --- /dev/null +++ b/Lang/MiniScript/Sorting-algorithms-Gnome-sort @@ -0,0 +1 @@ +../../Task/Sorting-algorithms-Gnome-sort/MiniScript \ No newline at end of file diff --git a/Lang/MiniScript/String-append b/Lang/MiniScript/String-append new file mode 120000 index 0000000000..91d9564e08 --- /dev/null +++ b/Lang/MiniScript/String-append @@ -0,0 +1 @@ +../../Task/String-append/MiniScript \ No newline at end of file diff --git a/Lang/MiniScript/Symmetric-difference b/Lang/MiniScript/Symmetric-difference new file mode 120000 index 0000000000..99a920ff15 --- /dev/null +++ b/Lang/MiniScript/Symmetric-difference @@ -0,0 +1 @@ +../../Task/Symmetric-difference/MiniScript \ No newline at end of file diff --git a/Lang/MiniScript/Tau-function b/Lang/MiniScript/Tau-function new file mode 120000 index 0000000000..afdfda353c --- /dev/null +++ b/Lang/MiniScript/Tau-function @@ -0,0 +1 @@ +../../Task/Tau-function/MiniScript \ No newline at end of file diff --git a/Lang/MiniScript/Tau-number b/Lang/MiniScript/Tau-number new file mode 120000 index 0000000000..989367f598 --- /dev/null +++ b/Lang/MiniScript/Tau-number @@ -0,0 +1 @@ +../../Task/Tau-number/MiniScript \ No newline at end of file diff --git a/Lang/MiniScript/Wireworld b/Lang/MiniScript/Wireworld new file mode 120000 index 0000000000..05734b25f6 --- /dev/null +++ b/Lang/MiniScript/Wireworld @@ -0,0 +1 @@ +../../Task/Wireworld/MiniScript \ No newline at end of file diff --git a/Lang/MiniScript/Zeckendorf-number-representation b/Lang/MiniScript/Zeckendorf-number-representation new file mode 120000 index 0000000000..35edc5020d --- /dev/null +++ b/Lang/MiniScript/Zeckendorf-number-representation @@ -0,0 +1 @@ +../../Task/Zeckendorf-number-representation/MiniScript \ No newline at end of file diff --git a/Lang/Minimal-BASIC/Arithmetic-Integer b/Lang/Minimal-BASIC/Arithmetic-Integer new file mode 120000 index 0000000000..933ad3bc56 --- /dev/null +++ b/Lang/Minimal-BASIC/Arithmetic-Integer @@ -0,0 +1 @@ +../../Task/Arithmetic-Integer/Minimal-BASIC \ No newline at end of file diff --git a/Lang/Minimal-BASIC/Arithmetic-geometric-mean b/Lang/Minimal-BASIC/Arithmetic-geometric-mean new file mode 120000 index 0000000000..3a1459c995 --- /dev/null +++ b/Lang/Minimal-BASIC/Arithmetic-geometric-mean @@ -0,0 +1 @@ +../../Task/Arithmetic-geometric-mean/Minimal-BASIC \ No newline at end of file diff --git a/Lang/Minimal-BASIC/Array-concatenation b/Lang/Minimal-BASIC/Array-concatenation new file mode 120000 index 0000000000..b0d0134d77 --- /dev/null +++ b/Lang/Minimal-BASIC/Array-concatenation @@ -0,0 +1 @@ +../../Task/Array-concatenation/Minimal-BASIC \ No newline at end of file diff --git a/Lang/Minimal-BASIC/Find-limit-of-recursion b/Lang/Minimal-BASIC/Find-limit-of-recursion new file mode 120000 index 0000000000..9f4b00a477 --- /dev/null +++ b/Lang/Minimal-BASIC/Find-limit-of-recursion @@ -0,0 +1 @@ +../../Task/Find-limit-of-recursion/Minimal-BASIC \ No newline at end of file diff --git a/Lang/Minimal-BASIC/Knuth-shuffle b/Lang/Minimal-BASIC/Knuth-shuffle new file mode 120000 index 0000000000..3e28bb591e --- /dev/null +++ b/Lang/Minimal-BASIC/Knuth-shuffle @@ -0,0 +1 @@ +../../Task/Knuth-shuffle/Minimal-BASIC \ No newline at end of file diff --git a/Lang/Minimal-BASIC/Recamans-sequence b/Lang/Minimal-BASIC/Recamans-sequence new file mode 120000 index 0000000000..51e560288e --- /dev/null +++ b/Lang/Minimal-BASIC/Recamans-sequence @@ -0,0 +1 @@ +../../Task/Recamans-sequence/Minimal-BASIC \ No newline at end of file diff --git a/Lang/Minimal-BASIC/Repeat-a-string b/Lang/Minimal-BASIC/Repeat-a-string new file mode 120000 index 0000000000..cb9d6c7be2 --- /dev/null +++ b/Lang/Minimal-BASIC/Repeat-a-string @@ -0,0 +1 @@ +../../Task/Repeat-a-string/Minimal-BASIC \ No newline at end of file diff --git a/Lang/Minimal-BASIC/Sorting-algorithms-Gnome-sort b/Lang/Minimal-BASIC/Sorting-algorithms-Gnome-sort new file mode 120000 index 0000000000..7e0ae10f86 --- /dev/null +++ b/Lang/Minimal-BASIC/Sorting-algorithms-Gnome-sort @@ -0,0 +1 @@ +../../Task/Sorting-algorithms-Gnome-sort/Minimal-BASIC \ No newline at end of file diff --git a/Lang/Minimal-BASIC/String-interpolation-included- b/Lang/Minimal-BASIC/String-interpolation-included- new file mode 120000 index 0000000000..7def120cfb --- /dev/null +++ b/Lang/Minimal-BASIC/String-interpolation-included- @@ -0,0 +1 @@ +../../Task/String-interpolation-included-/Minimal-BASIC \ No newline at end of file diff --git a/Lang/Nial/00-LANG.txt b/Lang/Nial/00-LANG.txt index 9cd63d0ab0..74f94af84f 100644 --- a/Lang/Nial/00-LANG.txt +++ b/Lang/Nial/00-LANG.txt @@ -1,8 +1,8 @@ {{language|Nial |strength=strong |checking=dynamic -|site=http://www.nial.com/ +|site=https://www.nial-array-language.org/ |LCT=yes}}'''Nial''' (Nested interactive programming language) is an array programming language similar to [[APL]] and its successor [[J]]. ==References== -* [[wp:Nial|Wikipedia:Nial]] \ No newline at end of file +* [[Wikipedia:Nial]] \ No newline at end of file diff --git a/Lang/Nu/00-LANG.txt b/Lang/Nu/00-LANG.txt new file mode 100644 index 0000000000..d173c3d735 --- /dev/null +++ b/Lang/Nu/00-LANG.txt @@ -0,0 +1,3 @@ +{{stub}}{{language|Nu}} + +Nu is the programming language used by Nushell. \ No newline at end of file diff --git a/Lang/Nu/00-META.yaml b/Lang/Nu/00-META.yaml new file mode 100644 index 0000000000..99859066fe --- /dev/null +++ b/Lang/Nu/00-META.yaml @@ -0,0 +1,2 @@ +--- +from: http://rosettacode.org/wiki/Category:Nu diff --git a/Lang/Nu/A+B b/Lang/Nu/A+B new file mode 120000 index 0000000000..2da442f92b --- /dev/null +++ b/Lang/Nu/A+B @@ -0,0 +1 @@ +../../Task/A+B/Nu \ No newline at end of file diff --git a/Lang/Nu/Arithmetic-Integer b/Lang/Nu/Arithmetic-Integer new file mode 120000 index 0000000000..204092ead0 --- /dev/null +++ b/Lang/Nu/Arithmetic-Integer @@ -0,0 +1 @@ +../../Task/Arithmetic-Integer/Nu \ No newline at end of file diff --git a/Lang/Nu/Array-concatenation b/Lang/Nu/Array-concatenation new file mode 120000 index 0000000000..d98932d8bd --- /dev/null +++ b/Lang/Nu/Array-concatenation @@ -0,0 +1 @@ +../../Task/Array-concatenation/Nu \ No newline at end of file diff --git a/Lang/Nu/Array-length b/Lang/Nu/Array-length new file mode 120000 index 0000000000..5ea0b71e21 --- /dev/null +++ b/Lang/Nu/Array-length @@ -0,0 +1 @@ +../../Task/Array-length/Nu \ No newline at end of file diff --git a/Lang/Nu/Arrays b/Lang/Nu/Arrays new file mode 120000 index 0000000000..b71f014ca8 --- /dev/null +++ b/Lang/Nu/Arrays @@ -0,0 +1 @@ +../../Task/Arrays/Nu \ No newline at end of file diff --git a/Lang/Nu/Balanced-brackets b/Lang/Nu/Balanced-brackets new file mode 120000 index 0000000000..020bbe6f49 --- /dev/null +++ b/Lang/Nu/Balanced-brackets @@ -0,0 +1 @@ +../../Task/Balanced-brackets/Nu \ No newline at end of file diff --git a/Lang/Nu/Command-line-arguments b/Lang/Nu/Command-line-arguments new file mode 120000 index 0000000000..a50eb1100a --- /dev/null +++ b/Lang/Nu/Command-line-arguments @@ -0,0 +1 @@ +../../Task/Command-line-arguments/Nu \ No newline at end of file diff --git a/Lang/Nu/Determine-if-a-string-is-numeric b/Lang/Nu/Determine-if-a-string-is-numeric new file mode 120000 index 0000000000..aad071997f --- /dev/null +++ b/Lang/Nu/Determine-if-a-string-is-numeric @@ -0,0 +1 @@ +../../Task/Determine-if-a-string-is-numeric/Nu \ No newline at end of file diff --git a/Lang/Nu/Environment-variables b/Lang/Nu/Environment-variables new file mode 120000 index 0000000000..8271af8fa1 --- /dev/null +++ b/Lang/Nu/Environment-variables @@ -0,0 +1 @@ +../../Task/Environment-variables/Nu \ No newline at end of file diff --git a/Lang/Nu/Factorial b/Lang/Nu/Factorial new file mode 120000 index 0000000000..9cddb3254b --- /dev/null +++ b/Lang/Nu/Factorial @@ -0,0 +1 @@ +../../Task/Factorial/Nu \ No newline at end of file diff --git a/Lang/Nu/File-input-output b/Lang/Nu/File-input-output new file mode 120000 index 0000000000..9cf58198ab --- /dev/null +++ b/Lang/Nu/File-input-output @@ -0,0 +1 @@ +../../Task/File-input-output/Nu \ No newline at end of file diff --git a/Lang/Nu/FizzBuzz b/Lang/Nu/FizzBuzz new file mode 120000 index 0000000000..2aded0e368 --- /dev/null +++ b/Lang/Nu/FizzBuzz @@ -0,0 +1 @@ +../../Task/FizzBuzz/Nu \ No newline at end of file diff --git a/Lang/Nu/Hello-world-Standard-error b/Lang/Nu/Hello-world-Standard-error new file mode 120000 index 0000000000..717c79f030 --- /dev/null +++ b/Lang/Nu/Hello-world-Standard-error @@ -0,0 +1 @@ +../../Task/Hello-world-Standard-error/Nu \ No newline at end of file diff --git a/Lang/Nu/Hello-world-Text b/Lang/Nu/Hello-world-Text new file mode 120000 index 0000000000..10d5ca7e00 --- /dev/null +++ b/Lang/Nu/Hello-world-Text @@ -0,0 +1 @@ +../../Task/Hello-world-Text/Nu \ No newline at end of file diff --git a/Lang/Nu/Integer-comparison b/Lang/Nu/Integer-comparison new file mode 120000 index 0000000000..c2dbb46482 --- /dev/null +++ b/Lang/Nu/Integer-comparison @@ -0,0 +1 @@ +../../Task/Integer-comparison/Nu \ No newline at end of file diff --git a/Lang/Nu/Logical-operations b/Lang/Nu/Logical-operations new file mode 120000 index 0000000000..5b1ef33928 --- /dev/null +++ b/Lang/Nu/Logical-operations @@ -0,0 +1 @@ +../../Task/Logical-operations/Nu \ No newline at end of file diff --git a/Lang/Nu/Loops-Break b/Lang/Nu/Loops-Break new file mode 120000 index 0000000000..77e2ff157e --- /dev/null +++ b/Lang/Nu/Loops-Break @@ -0,0 +1 @@ +../../Task/Loops-Break/Nu \ No newline at end of file diff --git a/Lang/Nu/Loops-Continue b/Lang/Nu/Loops-Continue new file mode 120000 index 0000000000..1fffd67d1b --- /dev/null +++ b/Lang/Nu/Loops-Continue @@ -0,0 +1 @@ +../../Task/Loops-Continue/Nu \ No newline at end of file diff --git a/Lang/Nu/Loops-Do-while b/Lang/Nu/Loops-Do-while new file mode 120000 index 0000000000..c59b6e9c00 --- /dev/null +++ b/Lang/Nu/Loops-Do-while @@ -0,0 +1 @@ +../../Task/Loops-Do-while/Nu \ No newline at end of file diff --git a/Lang/Nu/Loops-Downward-for b/Lang/Nu/Loops-Downward-for new file mode 120000 index 0000000000..6e96da6bb0 --- /dev/null +++ b/Lang/Nu/Loops-Downward-for @@ -0,0 +1 @@ +../../Task/Loops-Downward-for/Nu \ No newline at end of file diff --git a/Lang/Nu/Loops-For b/Lang/Nu/Loops-For new file mode 120000 index 0000000000..2429f461c7 --- /dev/null +++ b/Lang/Nu/Loops-For @@ -0,0 +1 @@ +../../Task/Loops-For/Nu \ No newline at end of file diff --git a/Lang/Nu/Loops-For-with-a-specified-step b/Lang/Nu/Loops-For-with-a-specified-step new file mode 120000 index 0000000000..7ec15c7851 --- /dev/null +++ b/Lang/Nu/Loops-For-with-a-specified-step @@ -0,0 +1 @@ +../../Task/Loops-For-with-a-specified-step/Nu \ No newline at end of file diff --git a/Lang/Nu/Loops-Foreach b/Lang/Nu/Loops-Foreach new file mode 120000 index 0000000000..05555142ae --- /dev/null +++ b/Lang/Nu/Loops-Foreach @@ -0,0 +1 @@ +../../Task/Loops-Foreach/Nu \ No newline at end of file diff --git a/Lang/Nu/Loops-Infinite b/Lang/Nu/Loops-Infinite new file mode 120000 index 0000000000..4557475615 --- /dev/null +++ b/Lang/Nu/Loops-Infinite @@ -0,0 +1 @@ +../../Task/Loops-Infinite/Nu \ No newline at end of file diff --git a/Lang/Nu/Loops-N-plus-one-half b/Lang/Nu/Loops-N-plus-one-half new file mode 120000 index 0000000000..cce81b7894 --- /dev/null +++ b/Lang/Nu/Loops-N-plus-one-half @@ -0,0 +1 @@ +../../Task/Loops-N-plus-one-half/Nu \ No newline at end of file diff --git a/Lang/Nu/MAC-vendor-lookup b/Lang/Nu/MAC-vendor-lookup new file mode 120000 index 0000000000..93a1e321d8 --- /dev/null +++ b/Lang/Nu/MAC-vendor-lookup @@ -0,0 +1 @@ +../../Task/MAC-vendor-lookup/Nu \ No newline at end of file diff --git a/Lang/Nu/Nth-root b/Lang/Nu/Nth-root new file mode 120000 index 0000000000..818bbdff36 --- /dev/null +++ b/Lang/Nu/Nth-root @@ -0,0 +1 @@ +../../Task/Nth-root/Nu \ No newline at end of file diff --git a/Lang/Nu/User-input-Text b/Lang/Nu/User-input-Text new file mode 120000 index 0000000000..732f6a88d1 --- /dev/null +++ b/Lang/Nu/User-input-Text @@ -0,0 +1 @@ +../../Task/User-input-Text/Nu \ No newline at end of file diff --git a/Lang/Ol/Convert-decimal-number-to-rational b/Lang/Ol/Convert-decimal-number-to-rational new file mode 120000 index 0000000000..f7e6486ce6 --- /dev/null +++ b/Lang/Ol/Convert-decimal-number-to-rational @@ -0,0 +1 @@ +../../Task/Convert-decimal-number-to-rational/Ol \ No newline at end of file diff --git a/Lang/Ol/Multifactorial b/Lang/Ol/Multifactorial new file mode 120000 index 0000000000..c0b142a608 --- /dev/null +++ b/Lang/Ol/Multifactorial @@ -0,0 +1 @@ +../../Task/Multifactorial/Ol \ No newline at end of file diff --git a/Lang/Ol/Population-count b/Lang/Ol/Population-count new file mode 120000 index 0000000000..b38f7ab1ff --- /dev/null +++ b/Lang/Ol/Population-count @@ -0,0 +1 @@ +../../Task/Population-count/Ol \ No newline at end of file diff --git a/Lang/PL-0/00-LANG.txt b/Lang/PL-0/00-LANG.txt index 22766fddb9..b9e87d1426 100644 --- a/Lang/PL-0/00-LANG.txt +++ b/Lang/PL-0/00-LANG.txt @@ -1,13 +1,13 @@ {{language|PL/0 |tags=pl0}} -'''PL/0''' is an educational programming language. It was originally introduced in the book, ''Algorithms + Data Structures = Programs'', by [[Niklaus Wirth]] in 1976. Wirth uses PL/0 as an example of how to construct a compiler. This language has little constructs. Writing real applications in PL/0 is not practical, but the compiler can remain compact and simple. +'''PL/0''' is an educational programming language. It was originally introduced in the book, ''Algorithms + Data Structures = Programs'', by [[Niklaus Wirth]] in 1976. Wirth uses PL/0 as an example of how to construct a compiler. This language has simple constructs. Writing real applications in PL/0 is not practical, but the compiler can remain compact and simple. == Features == One must explicitly declare all used constants and variables. -The only data type are integer numbers. The only operators are arithmetical and comparison ones. There is a function odd which examines if the integer argument is odd. +The only data type is integer. The only operators are arithmetical and comparisons. There is a function odd that examines if its integer argument is odd. -In the original implementation presented by Wirth, there are no input and output routines. The interpreter prints the new value of each variable when it becomes changed. So, the program: +In the original implementation presented by Wirth, there are no input and output routines. The interpreter prints the new value of each variable when it changes. So, the program: var a, b; begin @@ -19,7 +19,7 @@ begin end end. -gives the output: +gives this output:
          0
         10
@@ -36,7 +36,7 @@ gives the output:
 
However, most implementations have single input and single output routines. -The flow control structures are ''if-then'' and ''while-do'' constructs, and procedures defined by the user. Procedures cannot accept any parameters. +The flow control structures are ''if-then'' and ''while-do'' constructs, and procedures are defined by the user. Procedures cannot accept any parameters. == Syntax == The syntax rules of PL/0 can be specified in [[extended Backus–Naur form|EBNF]] as follows: @@ -66,9 +66,9 @@ factor = ident | number | "(" expression ")"; Wirth in his book presents the implementation without ? ("receive an integer value and assign it to the variable") and ! ("display a value of the expression") routines. Some implementations use other routines for receiving and displaying data, usually read and write. -Due to typograhic conventions, Wirth uses non-ASCII symbols , , and . Some implementations use # for "not equal", [ for "less or equal", and ] for "greater or equal". +Due to typographic conventions, Wirth uses non-ASCII symbols , , and . Some implementations use # for "not equal", [ for "less or equal", and ] for "greater or equal". -Some implementations accept only upper-case letters or only lower-case letters in keywords and identifiers. +Some implementations accept only uppercase letters or only lowercase letters in keywords and identifiers. == External links== * Wikipedia has [[wp:PL/0|an article about PL/0]]. diff --git a/Lang/PL-I-80/Sum-multiples-of-3-and-5 b/Lang/PL-I-80/Sum-multiples-of-3-and-5 new file mode 120000 index 0000000000..dfe78f4be2 --- /dev/null +++ b/Lang/PL-I-80/Sum-multiples-of-3-and-5 @@ -0,0 +1 @@ +../../Task/Sum-multiples-of-3-and-5/PL-I-80 \ No newline at end of file diff --git a/Lang/PL-M/00-LANG.txt b/Lang/PL-M/00-LANG.txt index 266637edeb..deaa4f220a 100644 --- a/Lang/PL-M/00-LANG.txt +++ b/Lang/PL-M/00-LANG.txt @@ -11,7 +11,7 @@ The following statements from PL/1 (with some changes) were available: * assignment * CALL * DECLARE -* DO-END +* DO-END (4 forms: statement grouping, counted loops, while loops and case statements) * IF-THEN-ELSE * GOTO * PROCEDURE-END diff --git a/Lang/PL-M/Jacobi-symbol b/Lang/PL-M/Jacobi-symbol new file mode 120000 index 0000000000..9053e83f5f --- /dev/null +++ b/Lang/PL-M/Jacobi-symbol @@ -0,0 +1 @@ +../../Task/Jacobi-symbol/PL-M \ No newline at end of file diff --git a/Lang/PL-M/Sorting-algorithms-Gnome-sort b/Lang/PL-M/Sorting-algorithms-Gnome-sort new file mode 120000 index 0000000000..5fb68055e1 --- /dev/null +++ b/Lang/PL-M/Sorting-algorithms-Gnome-sort @@ -0,0 +1 @@ +../../Task/Sorting-algorithms-Gnome-sort/PL-M \ No newline at end of file diff --git a/Lang/Pascal/McNuggets-problem b/Lang/Pascal/McNuggets-problem new file mode 120000 index 0000000000..5ae885f695 --- /dev/null +++ b/Lang/Pascal/McNuggets-problem @@ -0,0 +1 @@ +../../Task/McNuggets-problem/Pascal \ No newline at end of file diff --git a/Lang/Pascal/Square-form-factorization b/Lang/Pascal/Square-form-factorization new file mode 120000 index 0000000000..83d284e7d7 --- /dev/null +++ b/Lang/Pascal/Square-form-factorization @@ -0,0 +1 @@ +../../Task/Square-form-factorization/Pascal \ No newline at end of file diff --git a/Lang/Phix/00-LANG.txt b/Lang/Phix/00-LANG.txt index f89816a59f..18c8f9c2a5 100644 --- a/Lang/Phix/00-LANG.txt +++ b/Lang/Phix/00-LANG.txt @@ -39,7 +39,7 @@ Technically Phix does not have a garbage collector, instead it is reference coun The fundamental goal of Phix is to make debugging easier, a whole subject area that does not seem to get the attention it deserves, despite several studies finding that most programmers actually spend between 70 and 90% of their time debugging. Most of us tend to think that getting just-written code to work is somehow not debugging, but that clipboard-toting researcher stood behind you would disagree. -Since 1.0.0 you can also run (many/most) Phix programs in a browser, by using pwa/p2js (as included in the distro) to transpile the program to JavaScript (plus a bit of standard HTML and CSS). If you see "'''with javascript_semantics'''" it means the program has been tested and works fine, both on the (Windows/Linux) desktop/Phix and in a browser via pwa/p2js, and in fact unix_dict() has been added to avoid reading unixdict.txt. Conversely, "without js" being present on a rosettacode entry means that (for instance) it uses the local file system, and is therefore desktop/Phix only. It is worth pointing out that "with js" and deep_copy() have proved ''staggeringly'' effective and nowhere near as painful as first feared. In just a few months (1.0.0 was released in July 2021) I have tested, fixed where necessary, and marked as javascript compatible ''[https://rosettacode.org/w/index.php?search=phixonline&title=Special%3ASearch&wprov=acrw1 over 1,200 rosettacode entries]'' for Phix, and only ''[https://rosettacode.org/w/index.php?search=notonline&title=Special%3ASearch&wprov=acrw1 one seventh]'' of that have as yet been marked incompatible, despite things like file i/o being prohibited within a web browser. The [https://rosettacode.org/wiki/Category:Phix/online Phix/online] subcategory currently lists 99 entries deemed interesting enough to bother (manually) uploading to the Phix website (ping me should any stop working), and the next goal is to get pwa/p2js itself runnning online, but obviously without using file i/o directly. Another long term goal is to get Phix running on ARM, and since that would be utterly pointless without a viable GUI, I am currently elbow deep in writing a new cross-platform GUI, as a stepping stone (for both ARM and p2js/online). +Since 1.0.0 you can also run (many/most) Phix programs in a browser, by using pwa/p2js (as included in the distro) to transpile the program to JavaScript (plus a bit of standard HTML and CSS). If you see "'''with javascript_semantics'''" it means the program has been tested and works fine, both on the (Windows/Linux) desktop/Phix and in a browser via pwa/p2js, and in fact unix_dict() has been added to avoid reading unixdict.txt. Conversely, "without js" being present on a rosettacode entry means that (for instance) it uses the local file system, and is therefore desktop/Phix only. It is worth pointing out that "with js" and deep_copy() have proved ''staggeringly'' effective and nowhere near as painful as first feared. In just a few months (1.0.0 was released in July 2021) I have tested, fixed where necessary, and marked as javascript compatible (Sorry, both links borken since move to WikiTide) ''[https://rosettacode.org/w/index.php?search=phixonline&title=Special%3ASearch&wprov=acrw1 over 1,200 rosettacode entries]'' for Phix, and only ''[https://rosettacode.org/w/index.php?search=notonline&title=Special%3ASearch&wprov=acrw1 one seventh]'' of that have as yet been marked incompatible, despite things like file i/o being prohibited within a web browser. The [https://rosettacode.org/wiki/Category:Phix/online Phix/online] subcategory currently lists 99 entries deemed interesting enough to bother (manually) uploading to the Phix website (ping me should any stop working), and the next goal is to get pwa/p2js itself runnning online, but obviously without using file i/o directly. Another long term goal is to get Phix running on ARM, and since that would be utterly pointless without a viable GUI, I am currently elbow deep in writing a new cross-platform GUI, as a stepping stone (for both ARM and p2js/online). ==See also== * [http://phix.x10.mx Phix site] diff --git a/Lang/PostScript/00-LANG.txt b/Lang/PostScript/00-LANG.txt index 32cddabaf0..8e66f5a6d8 100644 --- a/Lang/PostScript/00-LANG.txt +++ b/Lang/PostScript/00-LANG.txt @@ -1,16 +1,14 @@ {{language|PostScript}} -'''PostScript''' is a concatenative dynamically typed language with abundant meta language facilities. It allows definition of new control structures at run time, allows reflection and reification of stack, scopes, and even continuations. With Display PostScript, the language even has facilities for multi-threaded execution. Since the language is based on stack, it is suitable for combinator based programming, and all the higher order combinators (initiated by joy language) is applicable in postscript. The language also allows a form of prototype based object orientated programming using dictionaries. See {{libheader|initlib}} for implementation of higher order combinators. +'''PostScript''' is a concatenative, dynamically-typed language with abundant metalanguage facilities. It allows definition of new control structures at runtime, and supports reflection and reification of stack, scopes, and even continuations. With Display PostScript, the language even has facilities for multi-threaded execution. Since the language interpreter is essentially a stack machine, it is suitable for combinator-based programming, and all the higher-order combinators (initiated by joy language) are applicable in PostScript. The language also allows a form of prototype-based, object-orientated programming using dictionaries. See [[Category:Initlib|initlib]] for implementation of higher-order combinators. -'''PostScript''' originated as a printer definition language invented by the founders of '''Adobe'''. The language was necessitated by the increasing demands of printing and rendering jobs on the computers of the 1970s. These tasks were therefore pushed to the printers themselves, with the result that printers now had chips and built in interpreters for PostScript. With the growth of printing complexity, some printers ended up having even more powerful processors than the master systems themselves. +PostScript originated as a printer definition language invented by the founders of '''Adobe'''. The language was necessitated by the increasing demands of printing and rendering jobs on the computers of the 1970s. These tasks were therefore pushed to the printers themselves, with the result that printers now had chips and built-in interpreters for PostScript. With the growth of printing complexity, some printers ended up having even more powerful processors than the master systems themselves. -Although now almost displaced by the '''Portable Document Format''' (PDF), also developed by Adobe, PostScript's unique selling proposition lies in it's being a '''Turing complete''' language with support for the basic data types and fundamental structures and concepts of Computer Science. Many interpreters and viewers of PostScript are available, some even for free. Although primarily a language suited for 2D graphics, PostScript is complete as a language and able to handle normal computation tasks. +Although now almost displaced by the '''Portable Document Format''' (PDF), also developed by Adobe, PostScript's unique selling proposition lies in it's being a '''Turing complete''' language with support for the basic data types and fundamental structures and concepts of computer science. Many interpreters and viewers of PostScript are available, some even for free. Although primarily a language suited for 2D graphics, PostScript is complete as a language and able to handle normal computation tasks. - - -==See Also== -*[http://logand.com/sw/wps/index.html WPS - PostScript interpreter written in JavaScript.] -*[http://code.google.com/p/postcanvas/ postcanvas - Open-source PostScript interpreter written in JavaScript.] -*[http://pages.cs.wisc.edu/~ghost/ Ghostscript opensource postscript interpreter with a lot of extensions. ] -*[http://code.google.com/p/xpost/downloads/detail?name=monterey86.pdf Owen Densmore, Object-Oriented Programming in NeWS, describes the use of dictionaries for implementing single- and multiple-inheritance.] +== See Also == +* [http://logand.com/sw/wps/index.html WPS] — PostScript interpreter written in JavaScript. +* [http://www.feiri.de/pcan/ postcanvas] — Open-source PostScript interpreter written in JavaScript. +* [https://www.ghostscript.com/ GhostScript] — Open-source PostScript interpreter with a lot of extensions. +* [https://web.archive.org/web/20160711025645/http://code.google.com/p/xpost/downloads/detail?name=monterey86.pdf ''Object-Oriented Programming in NeWS''] — Paper describing single- and multiple-inheritance implementation using dictionary objects. {{Language programming paradigm|Concatenative}} \ No newline at end of file diff --git a/Lang/Prolog/Ascending-primes b/Lang/Prolog/Ascending-primes new file mode 120000 index 0000000000..80d5881c3e --- /dev/null +++ b/Lang/Prolog/Ascending-primes @@ -0,0 +1 @@ +../../Task/Ascending-primes/Prolog \ No newline at end of file diff --git a/Lang/Prolog/Descending-primes b/Lang/Prolog/Descending-primes new file mode 120000 index 0000000000..2841773f73 --- /dev/null +++ b/Lang/Prolog/Descending-primes @@ -0,0 +1 @@ +../../Task/Descending-primes/Prolog \ No newline at end of file diff --git a/Lang/PureBasic/21-game b/Lang/PureBasic/21-game new file mode 120000 index 0000000000..25d4ecce76 --- /dev/null +++ b/Lang/PureBasic/21-game @@ -0,0 +1 @@ +../../Task/21-game/PureBasic \ No newline at end of file diff --git a/Lang/PureBasic/Casting-out-nines b/Lang/PureBasic/Casting-out-nines new file mode 120000 index 0000000000..80d3cd3de2 --- /dev/null +++ b/Lang/PureBasic/Casting-out-nines @@ -0,0 +1 @@ +../../Task/Casting-out-nines/PureBasic \ No newline at end of file diff --git a/Lang/PureBasic/Determine-if-a-string-has-all-unique-characters b/Lang/PureBasic/Determine-if-a-string-has-all-unique-characters new file mode 120000 index 0000000000..317b8c1e43 --- /dev/null +++ b/Lang/PureBasic/Determine-if-a-string-has-all-unique-characters @@ -0,0 +1 @@ +../../Task/Determine-if-a-string-has-all-unique-characters/PureBasic \ No newline at end of file diff --git a/Lang/PureBasic/Equal-prime-and-composite-sums b/Lang/PureBasic/Equal-prime-and-composite-sums new file mode 120000 index 0000000000..3ab6fbad07 --- /dev/null +++ b/Lang/PureBasic/Equal-prime-and-composite-sums @@ -0,0 +1 @@ +../../Task/Equal-prime-and-composite-sums/PureBasic \ No newline at end of file diff --git a/Lang/PureBasic/Factorial-primes b/Lang/PureBasic/Factorial-primes new file mode 120000 index 0000000000..070b58c3e7 --- /dev/null +++ b/Lang/PureBasic/Factorial-primes @@ -0,0 +1 @@ +../../Task/Factorial-primes/PureBasic \ No newline at end of file diff --git a/Lang/PureBasic/Padovan-n-step-number-sequences b/Lang/PureBasic/Padovan-n-step-number-sequences new file mode 120000 index 0000000000..b9dc553ac6 --- /dev/null +++ b/Lang/PureBasic/Padovan-n-step-number-sequences @@ -0,0 +1 @@ +../../Task/Padovan-n-step-number-sequences/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 new file mode 120000 index 0000000000..a2d1f36259 --- /dev/null +++ b/Lang/PureBasic/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors @@ -0,0 +1 @@ +../../Task/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors/PureBasic \ No newline at end of file diff --git a/Lang/PureBasic/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/PureBasic/Sequence:-smallest-number-with-exactly-n-divisors new file mode 120000 index 0000000000..f415c741d2 --- /dev/null +++ b/Lang/PureBasic/Sequence:-smallest-number-with-exactly-n-divisors @@ -0,0 +1 @@ +../../Task/Sequence:-smallest-number-with-exactly-n-divisors/PureBasic \ No newline at end of file diff --git a/Lang/PureBasic/Van-Eck-sequence b/Lang/PureBasic/Van-Eck-sequence new file mode 120000 index 0000000000..5f70e418c5 --- /dev/null +++ b/Lang/PureBasic/Van-Eck-sequence @@ -0,0 +1 @@ +../../Task/Van-Eck-sequence/PureBasic \ No newline at end of file diff --git a/Lang/Python/Home-primes b/Lang/Python/Home-primes new file mode 120000 index 0000000000..f7be54d4fc --- /dev/null +++ b/Lang/Python/Home-primes @@ -0,0 +1 @@ +../../Task/Home-primes/Python \ No newline at end of file diff --git a/Lang/Python/Particle-fountain b/Lang/Python/Particle-fountain new file mode 120000 index 0000000000..0ce2df8e30 --- /dev/null +++ b/Lang/Python/Particle-fountain @@ -0,0 +1 @@ +../../Task/Particle-fountain/Python \ No newline at end of file diff --git a/Lang/Python/Radical-of-an-integer b/Lang/Python/Radical-of-an-integer new file mode 120000 index 0000000000..40dac65e59 --- /dev/null +++ b/Lang/Python/Radical-of-an-integer @@ -0,0 +1 @@ +../../Task/Radical-of-an-integer/Python \ No newline at end of file diff --git a/Lang/QBasic/21-game b/Lang/QBasic/21-game new file mode 120000 index 0000000000..1f117a71e8 --- /dev/null +++ b/Lang/QBasic/21-game @@ -0,0 +1 @@ +../../Task/21-game/QBasic \ No newline at end of file diff --git a/Lang/QBasic/Cantor-set b/Lang/QBasic/Cantor-set new file mode 120000 index 0000000000..7b09b7a9af --- /dev/null +++ b/Lang/QBasic/Cantor-set @@ -0,0 +1 @@ +../../Task/Cantor-set/QBasic \ No newline at end of file diff --git a/Lang/QBasic/Casting-out-nines b/Lang/QBasic/Casting-out-nines new file mode 120000 index 0000000000..caa06c9495 --- /dev/null +++ b/Lang/QBasic/Casting-out-nines @@ -0,0 +1 @@ +../../Task/Casting-out-nines/QBasic \ No newline at end of file diff --git a/Lang/QBasic/Longest-string-challenge b/Lang/QBasic/Longest-string-challenge new file mode 120000 index 0000000000..b81887f21d --- /dev/null +++ b/Lang/QBasic/Longest-string-challenge @@ -0,0 +1 @@ +../../Task/Longest-string-challenge/QBasic \ No newline at end of file diff --git a/Lang/QBasic/One-dimensional-cellular-automata b/Lang/QBasic/One-dimensional-cellular-automata new file mode 120000 index 0000000000..e8dd1ff8b5 --- /dev/null +++ b/Lang/QBasic/One-dimensional-cellular-automata @@ -0,0 +1 @@ +../../Task/One-dimensional-cellular-automata/QBasic \ No newline at end of file diff --git a/Lang/QBasic/Padovan-n-step-number-sequences b/Lang/QBasic/Padovan-n-step-number-sequences new file mode 120000 index 0000000000..cbcc6fa739 --- /dev/null +++ b/Lang/QBasic/Padovan-n-step-number-sequences @@ -0,0 +1 @@ +../../Task/Padovan-n-step-number-sequences/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 new file mode 120000 index 0000000000..a14432943b --- /dev/null +++ b/Lang/QBasic/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors @@ -0,0 +1 @@ +../../Task/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors/QBasic \ No newline at end of file diff --git a/Lang/QBasic/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/QBasic/Sequence:-smallest-number-with-exactly-n-divisors new file mode 120000 index 0000000000..93a8289260 --- /dev/null +++ b/Lang/QBasic/Sequence:-smallest-number-with-exactly-n-divisors @@ -0,0 +1 @@ +../../Task/Sequence:-smallest-number-with-exactly-n-divisors/QBasic \ No newline at end of file diff --git a/Lang/QBasic/Sorting-algorithms-Gnome-sort b/Lang/QBasic/Sorting-algorithms-Gnome-sort new file mode 120000 index 0000000000..739e5b845e --- /dev/null +++ b/Lang/QBasic/Sorting-algorithms-Gnome-sort @@ -0,0 +1 @@ +../../Task/Sorting-algorithms-Gnome-sort/QBasic \ No newline at end of file diff --git a/Lang/QBasic/Van-Eck-sequence b/Lang/QBasic/Van-Eck-sequence new file mode 120000 index 0000000000..37756db6e5 --- /dev/null +++ b/Lang/QBasic/Van-Eck-sequence @@ -0,0 +1 @@ +../../Task/Van-Eck-sequence/QBasic \ No newline at end of file diff --git a/Lang/Quackery/Bifid-cipher b/Lang/Quackery/Bifid-cipher new file mode 120000 index 0000000000..09f8c92cff --- /dev/null +++ b/Lang/Quackery/Bifid-cipher @@ -0,0 +1 @@ +../../Task/Bifid-cipher/Quackery \ No newline at end of file diff --git a/Lang/Quackery/Bin-given-limits b/Lang/Quackery/Bin-given-limits new file mode 120000 index 0000000000..4d4b6fb373 --- /dev/null +++ b/Lang/Quackery/Bin-given-limits @@ -0,0 +1 @@ +../../Task/Bin-given-limits/Quackery \ No newline at end of file diff --git a/Lang/Quackery/Bulls-and-cows b/Lang/Quackery/Bulls-and-cows new file mode 120000 index 0000000000..bced5948f3 --- /dev/null +++ b/Lang/Quackery/Bulls-and-cows @@ -0,0 +1 @@ +../../Task/Bulls-and-cows/Quackery \ No newline at end of file diff --git a/Lang/Quackery/Conways-Game-of-Life b/Lang/Quackery/Conways-Game-of-Life new file mode 120000 index 0000000000..f6bf0f9619 --- /dev/null +++ b/Lang/Quackery/Conways-Game-of-Life @@ -0,0 +1 @@ +../../Task/Conways-Game-of-Life/Quackery \ No newline at end of file diff --git a/Lang/Quackery/Deal-cards-for-FreeCell b/Lang/Quackery/Deal-cards-for-FreeCell new file mode 120000 index 0000000000..57f106f92f --- /dev/null +++ b/Lang/Quackery/Deal-cards-for-FreeCell @@ -0,0 +1 @@ +../../Task/Deal-cards-for-FreeCell/Quackery \ No newline at end of file diff --git a/Lang/Quackery/Determine-if-a-string-has-all-unique-characters b/Lang/Quackery/Determine-if-a-string-has-all-unique-characters new file mode 120000 index 0000000000..213c79a0dc --- /dev/null +++ b/Lang/Quackery/Determine-if-a-string-has-all-unique-characters @@ -0,0 +1 @@ +../../Task/Determine-if-a-string-has-all-unique-characters/Quackery \ No newline at end of file diff --git a/Lang/Quackery/Draw-a-clock b/Lang/Quackery/Draw-a-clock new file mode 120000 index 0000000000..961f3b71f5 --- /dev/null +++ b/Lang/Quackery/Draw-a-clock @@ -0,0 +1 @@ +../../Task/Draw-a-clock/Quackery \ No newline at end of file diff --git a/Lang/Quackery/First-perfect-square-in-base-n-with-n-unique-digits b/Lang/Quackery/First-perfect-square-in-base-n-with-n-unique-digits new file mode 120000 index 0000000000..fe9c27dfe0 --- /dev/null +++ b/Lang/Quackery/First-perfect-square-in-base-n-with-n-unique-digits @@ -0,0 +1 @@ +../../Task/First-perfect-square-in-base-n-with-n-unique-digits/Quackery \ No newline at end of file diff --git a/Lang/Quackery/Four-bit-adder b/Lang/Quackery/Four-bit-adder new file mode 120000 index 0000000000..3afb0e55b7 --- /dev/null +++ b/Lang/Quackery/Four-bit-adder @@ -0,0 +1 @@ +../../Task/Four-bit-adder/Quackery \ No newline at end of file diff --git a/Lang/Quackery/Hello-world-Graphical b/Lang/Quackery/Hello-world-Graphical new file mode 120000 index 0000000000..bbd497e545 --- /dev/null +++ b/Lang/Quackery/Hello-world-Graphical @@ -0,0 +1 @@ +../../Task/Hello-world-Graphical/Quackery \ No newline at end of file diff --git a/Lang/Quackery/Hofstadter-Figure-Figure-sequences b/Lang/Quackery/Hofstadter-Figure-Figure-sequences new file mode 120000 index 0000000000..5f784f3739 --- /dev/null +++ b/Lang/Quackery/Hofstadter-Figure-Figure-sequences @@ -0,0 +1 @@ +../../Task/Hofstadter-Figure-Figure-sequences/Quackery \ No newline at end of file diff --git a/Lang/Quackery/Hunt-the-Wumpus b/Lang/Quackery/Hunt-the-Wumpus new file mode 120000 index 0000000000..1347e3f9e8 --- /dev/null +++ b/Lang/Quackery/Hunt-the-Wumpus @@ -0,0 +1 @@ +../../Task/Hunt-the-Wumpus/Quackery \ No newline at end of file diff --git a/Lang/Quackery/Longest-common-substring b/Lang/Quackery/Longest-common-substring new file mode 120000 index 0000000000..1f341435ee --- /dev/null +++ b/Lang/Quackery/Longest-common-substring @@ -0,0 +1 @@ +../../Task/Longest-common-substring/Quackery \ No newline at end of file diff --git a/Lang/Quackery/Longest-string-challenge b/Lang/Quackery/Longest-string-challenge new file mode 120000 index 0000000000..9ed80c8f1f --- /dev/null +++ b/Lang/Quackery/Longest-string-challenge @@ -0,0 +1 @@ +../../Task/Longest-string-challenge/Quackery \ No newline at end of file diff --git a/Lang/Quackery/Morse-code b/Lang/Quackery/Morse-code new file mode 120000 index 0000000000..bb500a6fda --- /dev/null +++ b/Lang/Quackery/Morse-code @@ -0,0 +1 @@ +../../Task/Morse-code/Quackery \ No newline at end of file diff --git a/Lang/Quackery/Numbers-which-are-not-the-sum-of-distinct-squares b/Lang/Quackery/Numbers-which-are-not-the-sum-of-distinct-squares new file mode 120000 index 0000000000..444eb69298 --- /dev/null +++ b/Lang/Quackery/Numbers-which-are-not-the-sum-of-distinct-squares @@ -0,0 +1 @@ +../../Task/Numbers-which-are-not-the-sum-of-distinct-squares/Quackery \ No newline at end of file diff --git a/Lang/Quackery/Penneys-game b/Lang/Quackery/Penneys-game new file mode 120000 index 0000000000..6ee95856ce --- /dev/null +++ b/Lang/Quackery/Penneys-game @@ -0,0 +1 @@ +../../Task/Penneys-game/Quackery \ No newline at end of file diff --git a/Lang/Quackery/Periodic-table b/Lang/Quackery/Periodic-table new file mode 120000 index 0000000000..8b9c4bf377 --- /dev/null +++ b/Lang/Quackery/Periodic-table @@ -0,0 +1 @@ +../../Task/Periodic-table/Quackery \ No newline at end of file diff --git a/Lang/Quackery/Set-consolidation b/Lang/Quackery/Set-consolidation new file mode 120000 index 0000000000..d012481c58 --- /dev/null +++ b/Lang/Quackery/Set-consolidation @@ -0,0 +1 @@ +../../Task/Set-consolidation/Quackery \ No newline at end of file diff --git a/Lang/Quackery/Set-puzzle b/Lang/Quackery/Set-puzzle new file mode 120000 index 0000000000..6b2dbc8928 --- /dev/null +++ b/Lang/Quackery/Set-puzzle @@ -0,0 +1 @@ +../../Task/Set-puzzle/Quackery \ No newline at end of file diff --git a/Lang/Quackery/Set-right-adjacent-bits b/Lang/Quackery/Set-right-adjacent-bits new file mode 120000 index 0000000000..b13aa5b66e --- /dev/null +++ b/Lang/Quackery/Set-right-adjacent-bits @@ -0,0 +1 @@ +../../Task/Set-right-adjacent-bits/Quackery \ No newline at end of file diff --git a/Lang/Quackery/Speech-synthesis b/Lang/Quackery/Speech-synthesis new file mode 120000 index 0000000000..e59431a52c --- /dev/null +++ b/Lang/Quackery/Speech-synthesis @@ -0,0 +1 @@ +../../Task/Speech-synthesis/Quackery \ No newline at end of file diff --git a/Lang/Quackery/Spelling-of-ordinal-numbers b/Lang/Quackery/Spelling-of-ordinal-numbers new file mode 120000 index 0000000000..c573dbf1f0 --- /dev/null +++ b/Lang/Quackery/Spelling-of-ordinal-numbers @@ -0,0 +1 @@ +../../Task/Spelling-of-ordinal-numbers/Quackery \ No newline at end of file diff --git a/Lang/Quackery/Subtractive-generator b/Lang/Quackery/Subtractive-generator new file mode 120000 index 0000000000..1dfd5639a9 --- /dev/null +++ b/Lang/Quackery/Subtractive-generator @@ -0,0 +1 @@ +../../Task/Subtractive-generator/Quackery \ No newline at end of file diff --git a/Lang/Quackery/Super-d-numbers b/Lang/Quackery/Super-d-numbers new file mode 120000 index 0000000000..808553ed7c --- /dev/null +++ b/Lang/Quackery/Super-d-numbers @@ -0,0 +1 @@ +../../Task/Super-d-numbers/Quackery \ No newline at end of file diff --git a/Lang/Quackery/Ulam-spiral-for-primes- b/Lang/Quackery/Ulam-spiral-for-primes- new file mode 120000 index 0000000000..d0b12aefe3 --- /dev/null +++ b/Lang/Quackery/Ulam-spiral-for-primes- @@ -0,0 +1 @@ +../../Task/Ulam-spiral-for-primes-/Quackery \ No newline at end of file diff --git a/Lang/Quackery/Wagstaff-primes b/Lang/Quackery/Wagstaff-primes new file mode 120000 index 0000000000..1ff48f161f --- /dev/null +++ b/Lang/Quackery/Wagstaff-primes @@ -0,0 +1 @@ +../../Task/Wagstaff-primes/Quackery \ No newline at end of file diff --git a/Lang/QuickBASIC/Sorting-algorithms-Gnome-sort b/Lang/QuickBASIC/Sorting-algorithms-Gnome-sort new file mode 120000 index 0000000000..acc8d6f390 --- /dev/null +++ b/Lang/QuickBASIC/Sorting-algorithms-Gnome-sort @@ -0,0 +1 @@ +../../Task/Sorting-algorithms-Gnome-sort/QuickBASIC \ No newline at end of file diff --git a/Lang/Quite-BASIC/Arithmetic-Integer b/Lang/Quite-BASIC/Arithmetic-Integer new file mode 120000 index 0000000000..61ab92c6dd --- /dev/null +++ b/Lang/Quite-BASIC/Arithmetic-Integer @@ -0,0 +1 @@ +../../Task/Arithmetic-Integer/Quite-BASIC \ No newline at end of file diff --git a/Lang/Quite-BASIC/Arithmetic-geometric-mean b/Lang/Quite-BASIC/Arithmetic-geometric-mean new file mode 120000 index 0000000000..abd8fd70e0 --- /dev/null +++ b/Lang/Quite-BASIC/Arithmetic-geometric-mean @@ -0,0 +1 @@ +../../Task/Arithmetic-geometric-mean/Quite-BASIC \ No newline at end of file diff --git a/Lang/Quite-BASIC/Array-concatenation b/Lang/Quite-BASIC/Array-concatenation new file mode 120000 index 0000000000..474895b02d --- /dev/null +++ b/Lang/Quite-BASIC/Array-concatenation @@ -0,0 +1 @@ +../../Task/Array-concatenation/Quite-BASIC \ No newline at end of file diff --git a/Lang/Quite-BASIC/Box-the-compass b/Lang/Quite-BASIC/Box-the-compass new file mode 120000 index 0000000000..1e9e3a7f0c --- /dev/null +++ b/Lang/Quite-BASIC/Box-the-compass @@ -0,0 +1 @@ +../../Task/Box-the-compass/Quite-BASIC \ No newline at end of file diff --git a/Lang/Quite-BASIC/Find-limit-of-recursion b/Lang/Quite-BASIC/Find-limit-of-recursion new file mode 120000 index 0000000000..1d1a15e407 --- /dev/null +++ b/Lang/Quite-BASIC/Find-limit-of-recursion @@ -0,0 +1 @@ +../../Task/Find-limit-of-recursion/Quite-BASIC \ No newline at end of file diff --git a/Lang/Quite-BASIC/Logical-operations b/Lang/Quite-BASIC/Logical-operations new file mode 120000 index 0000000000..1906c27758 --- /dev/null +++ b/Lang/Quite-BASIC/Logical-operations @@ -0,0 +1 @@ +../../Task/Logical-operations/Quite-BASIC \ No newline at end of file diff --git a/Lang/Quite-BASIC/Periodic-table b/Lang/Quite-BASIC/Periodic-table new file mode 120000 index 0000000000..e16550052a --- /dev/null +++ b/Lang/Quite-BASIC/Periodic-table @@ -0,0 +1 @@ +../../Task/Periodic-table/Quite-BASIC \ No newline at end of file diff --git a/Lang/Quite-BASIC/Repeat-a-string b/Lang/Quite-BASIC/Repeat-a-string new file mode 120000 index 0000000000..8c2025611d --- /dev/null +++ b/Lang/Quite-BASIC/Repeat-a-string @@ -0,0 +1 @@ +../../Task/Repeat-a-string/Quite-BASIC \ No newline at end of file diff --git a/Lang/Quite-BASIC/Sorting-algorithms-Gnome-sort b/Lang/Quite-BASIC/Sorting-algorithms-Gnome-sort new file mode 120000 index 0000000000..6ce3e0bffb --- /dev/null +++ b/Lang/Quite-BASIC/Sorting-algorithms-Gnome-sort @@ -0,0 +1 @@ +../../Task/Sorting-algorithms-Gnome-sort/Quite-BASIC \ No newline at end of file diff --git a/Lang/Quite-BASIC/String-interpolation-included- b/Lang/Quite-BASIC/String-interpolation-included- new file mode 120000 index 0000000000..ac2807c77b --- /dev/null +++ b/Lang/Quite-BASIC/String-interpolation-included- @@ -0,0 +1 @@ +../../Task/String-interpolation-included-/Quite-BASIC \ No newline at end of file diff --git a/Lang/R/Abbreviations-automatic b/Lang/R/Abbreviations-automatic new file mode 120000 index 0000000000..c9558583a6 --- /dev/null +++ b/Lang/R/Abbreviations-automatic @@ -0,0 +1 @@ +../../Task/Abbreviations-automatic/R \ No newline at end of file diff --git a/Lang/R/Abbreviations-easy b/Lang/R/Abbreviations-easy new file mode 120000 index 0000000000..6053b1c5a7 --- /dev/null +++ b/Lang/R/Abbreviations-easy @@ -0,0 +1 @@ +../../Task/Abbreviations-easy/R \ No newline at end of file diff --git a/Lang/R/Abelian-sandpile-model b/Lang/R/Abelian-sandpile-model new file mode 120000 index 0000000000..dfec47d8c2 --- /dev/null +++ b/Lang/R/Abelian-sandpile-model @@ -0,0 +1 @@ +../../Task/Abelian-sandpile-model/R \ No newline at end of file diff --git a/Lang/R/Additive-primes b/Lang/R/Additive-primes new file mode 120000 index 0000000000..4c8f792a73 --- /dev/null +++ b/Lang/R/Additive-primes @@ -0,0 +1 @@ +../../Task/Additive-primes/R \ No newline at end of file diff --git a/Lang/R/Execute-Brain- b/Lang/R/Execute-Brain- new file mode 120000 index 0000000000..a21c162e0a --- /dev/null +++ b/Lang/R/Execute-Brain- @@ -0,0 +1 @@ +../../Task/Execute-Brain-/R \ No newline at end of file diff --git a/Lang/RPL/00-LANG.txt b/Lang/RPL/00-LANG.txt index baf7c8a3a4..ec09c25906 100644 --- a/Lang/RPL/00-LANG.txt +++ b/Lang/RPL/00-LANG.txt @@ -10,9 +10,9 @@ |site=https://en.wikipedia.org/wiki/RPL_(programming_language) }} -'''RPL''' (an acronym for '''Reverse Polish Lisp''') is the onboard calculator language for the HP-28 and [[wp:HP 48 series|HP 48]] lines of graphing calculators. It is a stack language (not a [[Lisp]]-like language, as its name implies), tightly integrated with the calculator system, with many instructions similar to Forth. +'''RPL''' (an acronym for '''Reverse Polish Lisp''') is the onboard calculator language for the HP-28, [[wp:HP 48 series|HP 48]] and HP-49/50 lines of graphing calculators. It is a stack language (not a [[Lisp]]-like language, as its name implies), tightly integrated with the calculator system, with many instructions similar to Forth. -It can natively handle unsigned integers (named ''binary integers''), floating-point numbers (named ''real numbers''), complex numbers, vectors and matrices (named ''arrays''), lists, character strings, and algebraic expressions. +It can natively handle unsigned integers (named ''binary integers''), floating-point numbers (named ''real numbers''), complex numbers, vectors and matrices (named ''arrays''), lists, character strings, and algebraic expressions. The HP-49/50 models can also handle long integers (up to 500 digits) and benefit from several dedicated built-in functions to work with, including testing and generation of prime numbers. There are actually two languages with the name RPL: '''User RPL''' and '''System RPL'''. System RPL is used in implementing the operating system, and User RPL is the language users use to write programs on the calculator. System RPL is highly hardware-dependent, whilst User RPL is upwardly compatible. diff --git a/Lang/Racket/Rare-numbers b/Lang/Racket/Rare-numbers new file mode 120000 index 0000000000..1d2887fcdc --- /dev/null +++ b/Lang/Racket/Rare-numbers @@ -0,0 +1 @@ +../../Task/Rare-numbers/Racket \ No newline at end of file diff --git a/Lang/Raku/B-zier-curves-Intersections b/Lang/Raku/B-zier-curves-Intersections new file mode 120000 index 0000000000..3ceca0a2d5 --- /dev/null +++ b/Lang/Raku/B-zier-curves-Intersections @@ -0,0 +1 @@ +../../Task/B-zier-curves-Intersections/Raku \ No newline at end of file diff --git a/Lang/Rhovas/Classes b/Lang/Rhovas/Classes new file mode 120000 index 0000000000..999aff3694 --- /dev/null +++ b/Lang/Rhovas/Classes @@ -0,0 +1 @@ +../../Task/Classes/Rhovas \ No newline at end of file diff --git a/Lang/Rhovas/Hello-world-Text b/Lang/Rhovas/Hello-world-Text new file mode 120000 index 0000000000..ecf43ced4a --- /dev/null +++ b/Lang/Rhovas/Hello-world-Text @@ -0,0 +1 @@ +../../Task/Hello-world-Text/Rhovas \ No newline at end of file diff --git a/Lang/Rhovas/Palindrome-detection b/Lang/Rhovas/Palindrome-detection new file mode 120000 index 0000000000..3bf0451ba7 --- /dev/null +++ b/Lang/Rhovas/Palindrome-detection @@ -0,0 +1 @@ +../../Task/Palindrome-detection/Rhovas \ No newline at end of file diff --git a/Lang/Ring/Hex-words b/Lang/Ring/Hex-words new file mode 120000 index 0000000000..d85ee8e531 --- /dev/null +++ b/Lang/Ring/Hex-words @@ -0,0 +1 @@ +../../Task/Hex-words/Ring \ No newline at end of file diff --git a/Lang/Ruby/Ormiston-triples b/Lang/Ruby/Ormiston-triples new file mode 120000 index 0000000000..db7035a22a --- /dev/null +++ b/Lang/Ruby/Ormiston-triples @@ -0,0 +1 @@ +../../Task/Ormiston-triples/Ruby \ No newline at end of file diff --git a/Lang/Ruby/Padovan-n-step-number-sequences b/Lang/Ruby/Padovan-n-step-number-sequences new file mode 120000 index 0000000000..a80e7c6ea4 --- /dev/null +++ b/Lang/Ruby/Padovan-n-step-number-sequences @@ -0,0 +1 @@ +../../Task/Padovan-n-step-number-sequences/Ruby \ No newline at end of file diff --git a/Lang/Run-BASIC/Casting-out-nines b/Lang/Run-BASIC/Casting-out-nines new file mode 120000 index 0000000000..883fdaf9c4 --- /dev/null +++ b/Lang/Run-BASIC/Casting-out-nines @@ -0,0 +1 @@ +../../Task/Casting-out-nines/Run-BASIC \ No newline at end of file diff --git a/Lang/Run-BASIC/Largest-proper-divisor-of-n b/Lang/Run-BASIC/Largest-proper-divisor-of-n new file mode 120000 index 0000000000..aa04ba2bd4 --- /dev/null +++ b/Lang/Run-BASIC/Largest-proper-divisor-of-n @@ -0,0 +1 @@ +../../Task/Largest-proper-divisor-of-n/Run-BASIC \ No newline at end of file diff --git a/Lang/Run-BASIC/Population-count b/Lang/Run-BASIC/Population-count new file mode 120000 index 0000000000..ba78b398e1 --- /dev/null +++ b/Lang/Run-BASIC/Population-count @@ -0,0 +1 @@ +../../Task/Population-count/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 new file mode 120000 index 0000000000..3ec8051a16 --- /dev/null +++ b/Lang/Run-BASIC/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors @@ -0,0 +1 @@ +../../Task/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors/Run-BASIC \ No newline at end of file diff --git a/Lang/Run-BASIC/Sorting-algorithms-Gnome-sort b/Lang/Run-BASIC/Sorting-algorithms-Gnome-sort new file mode 120000 index 0000000000..acdf9f6a32 --- /dev/null +++ b/Lang/Run-BASIC/Sorting-algorithms-Gnome-sort @@ -0,0 +1 @@ +../../Task/Sorting-algorithms-Gnome-sort/Run-BASIC \ No newline at end of file diff --git a/Lang/Rust/Combinations-and-permutations b/Lang/Rust/Combinations-and-permutations new file mode 120000 index 0000000000..804dbde6ee --- /dev/null +++ b/Lang/Rust/Combinations-and-permutations @@ -0,0 +1 @@ +../../Task/Combinations-and-permutations/Rust \ No newline at end of file diff --git a/Lang/Rust/Find-if-a-point-is-within-a-triangle b/Lang/Rust/Find-if-a-point-is-within-a-triangle new file mode 120000 index 0000000000..4666c24b6c --- /dev/null +++ b/Lang/Rust/Find-if-a-point-is-within-a-triangle @@ -0,0 +1 @@ +../../Task/Find-if-a-point-is-within-a-triangle/Rust \ No newline at end of file diff --git a/Lang/Rust/Largest-proper-divisor-of-n b/Lang/Rust/Largest-proper-divisor-of-n new file mode 120000 index 0000000000..338cb9cb51 --- /dev/null +++ b/Lang/Rust/Largest-proper-divisor-of-n @@ -0,0 +1 @@ +../../Task/Largest-proper-divisor-of-n/Rust \ No newline at end of file diff --git a/Lang/Rust/M-bius-function b/Lang/Rust/M-bius-function new file mode 120000 index 0000000000..96f9ab27ce --- /dev/null +++ b/Lang/Rust/M-bius-function @@ -0,0 +1 @@ +../../Task/M-bius-function/Rust \ No newline at end of file diff --git a/Lang/Rust/Own-digits-power-sum b/Lang/Rust/Own-digits-power-sum new file mode 120000 index 0000000000..2d8de77ac9 --- /dev/null +++ b/Lang/Rust/Own-digits-power-sum @@ -0,0 +1 @@ +../../Task/Own-digits-power-sum/Rust \ No newline at end of file diff --git a/Lang/Rust/Recamans-sequence b/Lang/Rust/Recamans-sequence new file mode 120000 index 0000000000..a23a2a87db --- /dev/null +++ b/Lang/Rust/Recamans-sequence @@ -0,0 +1 @@ +../../Task/Recamans-sequence/Rust \ No newline at end of file diff --git a/Lang/S-BASIC/Babbage-problem b/Lang/S-BASIC/Babbage-problem new file mode 120000 index 0000000000..49d0b7178e --- /dev/null +++ b/Lang/S-BASIC/Babbage-problem @@ -0,0 +1 @@ +../../Task/Babbage-problem/S-BASIC \ No newline at end of file diff --git a/Lang/S-BASIC/Boolean-values b/Lang/S-BASIC/Boolean-values new file mode 120000 index 0000000000..20f09efd14 --- /dev/null +++ b/Lang/S-BASIC/Boolean-values @@ -0,0 +1 @@ +../../Task/Boolean-values/S-BASIC \ No newline at end of file diff --git a/Lang/S-BASIC/Digital-root b/Lang/S-BASIC/Digital-root new file mode 120000 index 0000000000..859802aa50 --- /dev/null +++ b/Lang/S-BASIC/Digital-root @@ -0,0 +1 @@ +../../Task/Digital-root/S-BASIC \ No newline at end of file diff --git a/Lang/S-BASIC/Exponentiation-order b/Lang/S-BASIC/Exponentiation-order new file mode 120000 index 0000000000..e875dfd752 --- /dev/null +++ b/Lang/S-BASIC/Exponentiation-order @@ -0,0 +1 @@ +../../Task/Exponentiation-order/S-BASIC \ No newline at end of file diff --git a/Lang/S-BASIC/File-input-output b/Lang/S-BASIC/File-input-output new file mode 120000 index 0000000000..0708277559 --- /dev/null +++ b/Lang/S-BASIC/File-input-output @@ -0,0 +1 @@ +../../Task/File-input-output/S-BASIC \ No newline at end of file diff --git a/Lang/S-BASIC/Sum-multiples-of-3-and-5 b/Lang/S-BASIC/Sum-multiples-of-3-and-5 new file mode 120000 index 0000000000..e2cf16a9fe --- /dev/null +++ b/Lang/S-BASIC/Sum-multiples-of-3-and-5 @@ -0,0 +1 @@ +../../Task/Sum-multiples-of-3-and-5/S-BASIC \ No newline at end of file diff --git a/Lang/SETL/100-prisoners b/Lang/SETL/100-prisoners new file mode 120000 index 0000000000..2a5ecc360e --- /dev/null +++ b/Lang/SETL/100-prisoners @@ -0,0 +1 @@ +../../Task/100-prisoners/SETL \ No newline at end of file diff --git a/Lang/SETL/Abundant-deficient-and-perfect-number-classifications b/Lang/SETL/Abundant-deficient-and-perfect-number-classifications new file mode 120000 index 0000000000..93bdd2c092 --- /dev/null +++ b/Lang/SETL/Abundant-deficient-and-perfect-number-classifications @@ -0,0 +1 @@ +../../Task/Abundant-deficient-and-perfect-number-classifications/SETL \ No newline at end of file diff --git a/Lang/SETL/Align-columns b/Lang/SETL/Align-columns new file mode 120000 index 0000000000..2cc05e7b59 --- /dev/null +++ b/Lang/SETL/Align-columns @@ -0,0 +1 @@ +../../Task/Align-columns/SETL \ No newline at end of file diff --git a/Lang/SETL/Amicable-pairs b/Lang/SETL/Amicable-pairs new file mode 120000 index 0000000000..16018f911c --- /dev/null +++ b/Lang/SETL/Amicable-pairs @@ -0,0 +1 @@ +../../Task/Amicable-pairs/SETL \ No newline at end of file diff --git a/Lang/SETL/Arithmetic-numbers b/Lang/SETL/Arithmetic-numbers new file mode 120000 index 0000000000..e95266732d --- /dev/null +++ b/Lang/SETL/Arithmetic-numbers @@ -0,0 +1 @@ +../../Task/Arithmetic-numbers/SETL \ No newline at end of file diff --git a/Lang/SETL/Attractive-numbers b/Lang/SETL/Attractive-numbers new file mode 120000 index 0000000000..ad7b8eb1fb --- /dev/null +++ b/Lang/SETL/Attractive-numbers @@ -0,0 +1 @@ +../../Task/Attractive-numbers/SETL \ No newline at end of file diff --git a/Lang/SETL/Balanced-brackets b/Lang/SETL/Balanced-brackets new file mode 120000 index 0000000000..2bcb45bd68 --- /dev/null +++ b/Lang/SETL/Balanced-brackets @@ -0,0 +1 @@ +../../Task/Balanced-brackets/SETL \ No newline at end of file diff --git a/Lang/SETL/Binary-digits b/Lang/SETL/Binary-digits new file mode 120000 index 0000000000..d83b37df85 --- /dev/null +++ b/Lang/SETL/Binary-digits @@ -0,0 +1 @@ +../../Task/Binary-digits/SETL \ No newline at end of file diff --git a/Lang/SETL/Bulls-and-cows b/Lang/SETL/Bulls-and-cows new file mode 120000 index 0000000000..57d987184b --- /dev/null +++ b/Lang/SETL/Bulls-and-cows @@ -0,0 +1 @@ +../../Task/Bulls-and-cows/SETL \ No newline at end of file diff --git a/Lang/SETL/Comma-quibbling b/Lang/SETL/Comma-quibbling new file mode 120000 index 0000000000..d7ce0447e0 --- /dev/null +++ b/Lang/SETL/Comma-quibbling @@ -0,0 +1 @@ +../../Task/Comma-quibbling/SETL \ No newline at end of file diff --git a/Lang/SETL/Count-occurrences-of-a-substring b/Lang/SETL/Count-occurrences-of-a-substring new file mode 120000 index 0000000000..dfd90171cb --- /dev/null +++ b/Lang/SETL/Count-occurrences-of-a-substring @@ -0,0 +1 @@ +../../Task/Count-occurrences-of-a-substring/SETL \ No newline at end of file diff --git a/Lang/SETL/Count-the-coins b/Lang/SETL/Count-the-coins new file mode 120000 index 0000000000..ef2a7d61fb --- /dev/null +++ b/Lang/SETL/Count-the-coins @@ -0,0 +1 @@ +../../Task/Count-the-coins/SETL \ No newline at end of file diff --git a/Lang/SETL/Disarium-numbers b/Lang/SETL/Disarium-numbers new file mode 120000 index 0000000000..68cddb21a5 --- /dev/null +++ b/Lang/SETL/Disarium-numbers @@ -0,0 +1 @@ +../../Task/Disarium-numbers/SETL \ No newline at end of file diff --git a/Lang/SETL/Entropy b/Lang/SETL/Entropy new file mode 120000 index 0000000000..a16f82bc12 --- /dev/null +++ b/Lang/SETL/Entropy @@ -0,0 +1 @@ +../../Task/Entropy/SETL \ No newline at end of file diff --git a/Lang/SETL/Euclid-Mullin-sequence b/Lang/SETL/Euclid-Mullin-sequence new file mode 120000 index 0000000000..0a5822cf4f --- /dev/null +++ b/Lang/SETL/Euclid-Mullin-sequence @@ -0,0 +1 @@ +../../Task/Euclid-Mullin-sequence/SETL \ No newline at end of file diff --git a/Lang/SETL/Evolutionary-algorithm b/Lang/SETL/Evolutionary-algorithm new file mode 120000 index 0000000000..392a92497c --- /dev/null +++ b/Lang/SETL/Evolutionary-algorithm @@ -0,0 +1 @@ +../../Task/Evolutionary-algorithm/SETL \ No newline at end of file diff --git a/Lang/SETL/Execute-Brain- b/Lang/SETL/Execute-Brain- new file mode 120000 index 0000000000..4d94451eb9 --- /dev/null +++ b/Lang/SETL/Execute-Brain- @@ -0,0 +1 @@ +../../Task/Execute-Brain-/SETL \ No newline at end of file diff --git a/Lang/SETL/Execute-a-Markov-algorithm b/Lang/SETL/Execute-a-Markov-algorithm new file mode 120000 index 0000000000..2be6983241 --- /dev/null +++ b/Lang/SETL/Execute-a-Markov-algorithm @@ -0,0 +1 @@ +../../Task/Execute-a-Markov-algorithm/SETL \ No newline at end of file diff --git a/Lang/SETL/Fibonacci-word b/Lang/SETL/Fibonacci-word new file mode 120000 index 0000000000..493b496498 --- /dev/null +++ b/Lang/SETL/Fibonacci-word @@ -0,0 +1 @@ +../../Task/Fibonacci-word/SETL \ No newline at end of file diff --git a/Lang/SETL/FizzBuzz b/Lang/SETL/FizzBuzz new file mode 120000 index 0000000000..8636f2a4af --- /dev/null +++ b/Lang/SETL/FizzBuzz @@ -0,0 +1 @@ +../../Task/FizzBuzz/SETL \ No newline at end of file diff --git a/Lang/SETL/Hailstone-sequence b/Lang/SETL/Hailstone-sequence new file mode 120000 index 0000000000..4a8fad89a6 --- /dev/null +++ b/Lang/SETL/Hailstone-sequence @@ -0,0 +1 @@ +../../Task/Hailstone-sequence/SETL \ No newline at end of file diff --git a/Lang/SETL/Harshad-or-Niven-series b/Lang/SETL/Harshad-or-Niven-series new file mode 120000 index 0000000000..1a226e11f4 --- /dev/null +++ b/Lang/SETL/Harshad-or-Niven-series @@ -0,0 +1 @@ +../../Task/Harshad-or-Niven-series/SETL \ No newline at end of file diff --git a/Lang/SETL/Hofstadter-Figure-Figure-sequences b/Lang/SETL/Hofstadter-Figure-Figure-sequences new file mode 120000 index 0000000000..8e11ba344b --- /dev/null +++ b/Lang/SETL/Hofstadter-Figure-Figure-sequences @@ -0,0 +1 @@ +../../Task/Hofstadter-Figure-Figure-sequences/SETL \ No newline at end of file diff --git a/Lang/SETL/Hofstadter-Q-sequence b/Lang/SETL/Hofstadter-Q-sequence new file mode 120000 index 0000000000..ec34c93a76 --- /dev/null +++ b/Lang/SETL/Hofstadter-Q-sequence @@ -0,0 +1 @@ +../../Task/Hofstadter-Q-sequence/SETL \ No newline at end of file diff --git a/Lang/SETL/I-before-E-except-after-C b/Lang/SETL/I-before-E-except-after-C new file mode 120000 index 0000000000..eb551181a0 --- /dev/null +++ b/Lang/SETL/I-before-E-except-after-C @@ -0,0 +1 @@ +../../Task/I-before-E-except-after-C/SETL \ No newline at end of file diff --git a/Lang/SETL/Isqrt-integer-square-root-of-X b/Lang/SETL/Isqrt-integer-square-root-of-X new file mode 120000 index 0000000000..cdee92f277 --- /dev/null +++ b/Lang/SETL/Isqrt-integer-square-root-of-X @@ -0,0 +1 @@ +../../Task/Isqrt-integer-square-root-of-X/SETL \ No newline at end of file diff --git a/Lang/SETL/Jacobsthal-numbers b/Lang/SETL/Jacobsthal-numbers new file mode 120000 index 0000000000..e3f736b41e --- /dev/null +++ b/Lang/SETL/Jacobsthal-numbers @@ -0,0 +1 @@ +../../Task/Jacobsthal-numbers/SETL \ No newline at end of file diff --git a/Lang/SETL/Jewels-and-stones b/Lang/SETL/Jewels-and-stones new file mode 120000 index 0000000000..51fbbc70a9 --- /dev/null +++ b/Lang/SETL/Jewels-and-stones @@ -0,0 +1 @@ +../../Task/Jewels-and-stones/SETL \ No newline at end of file diff --git a/Lang/SETL/Knuth-shuffle b/Lang/SETL/Knuth-shuffle new file mode 120000 index 0000000000..004909767e --- /dev/null +++ b/Lang/SETL/Knuth-shuffle @@ -0,0 +1 @@ +../../Task/Knuth-shuffle/SETL \ No newline at end of file diff --git a/Lang/SETL/Longest-common-substring b/Lang/SETL/Longest-common-substring new file mode 120000 index 0000000000..9eb7192015 --- /dev/null +++ b/Lang/SETL/Longest-common-substring @@ -0,0 +1 @@ +../../Task/Longest-common-substring/SETL \ No newline at end of file diff --git a/Lang/SETL/Look-and-say-sequence b/Lang/SETL/Look-and-say-sequence new file mode 120000 index 0000000000..a850f015f4 --- /dev/null +++ b/Lang/SETL/Look-and-say-sequence @@ -0,0 +1 @@ +../../Task/Look-and-say-sequence/SETL \ No newline at end of file diff --git a/Lang/SETL/Magnanimous-numbers b/Lang/SETL/Magnanimous-numbers new file mode 120000 index 0000000000..53f30352fa --- /dev/null +++ b/Lang/SETL/Magnanimous-numbers @@ -0,0 +1 @@ +../../Task/Magnanimous-numbers/SETL \ No newline at end of file diff --git a/Lang/SETL/McNuggets-problem b/Lang/SETL/McNuggets-problem new file mode 120000 index 0000000000..b2aec73884 --- /dev/null +++ b/Lang/SETL/McNuggets-problem @@ -0,0 +1 @@ +../../Task/McNuggets-problem/SETL \ No newline at end of file diff --git a/Lang/SETL/Mertens-function b/Lang/SETL/Mertens-function new file mode 120000 index 0000000000..661391c87c --- /dev/null +++ b/Lang/SETL/Mertens-function @@ -0,0 +1 @@ +../../Task/Mertens-function/SETL \ No newline at end of file diff --git a/Lang/SETL/Minimum-multiple-of-m-where-digital-sum-equals-m b/Lang/SETL/Minimum-multiple-of-m-where-digital-sum-equals-m new file mode 120000 index 0000000000..a5595c5352 --- /dev/null +++ b/Lang/SETL/Minimum-multiple-of-m-where-digital-sum-equals-m @@ -0,0 +1 @@ +../../Task/Minimum-multiple-of-m-where-digital-sum-equals-m/SETL \ No newline at end of file diff --git a/Lang/SETL/Multifactorial b/Lang/SETL/Multifactorial new file mode 120000 index 0000000000..e7d0193c33 --- /dev/null +++ b/Lang/SETL/Multifactorial @@ -0,0 +1 @@ +../../Task/Multifactorial/SETL \ No newline at end of file diff --git a/Lang/SETL/Mutual-recursion b/Lang/SETL/Mutual-recursion new file mode 120000 index 0000000000..daa374d788 --- /dev/null +++ b/Lang/SETL/Mutual-recursion @@ -0,0 +1 @@ +../../Task/Mutual-recursion/SETL \ No newline at end of file diff --git a/Lang/SETL/Nth b/Lang/SETL/Nth new file mode 120000 index 0000000000..e6331e1f30 --- /dev/null +++ b/Lang/SETL/Nth @@ -0,0 +1 @@ +../../Task/Nth/SETL \ No newline at end of file diff --git a/Lang/SETL/Number-reversal-game b/Lang/SETL/Number-reversal-game new file mode 120000 index 0000000000..f1abe175ee --- /dev/null +++ b/Lang/SETL/Number-reversal-game @@ -0,0 +1 @@ +../../Task/Number-reversal-game/SETL \ No newline at end of file diff --git a/Lang/SETL/Perfect-shuffle b/Lang/SETL/Perfect-shuffle new file mode 120000 index 0000000000..25925daae7 --- /dev/null +++ b/Lang/SETL/Perfect-shuffle @@ -0,0 +1 @@ +../../Task/Perfect-shuffle/SETL \ No newline at end of file diff --git a/Lang/SETL/Pig-the-dice-game b/Lang/SETL/Pig-the-dice-game new file mode 120000 index 0000000000..6e254b1d9d --- /dev/null +++ b/Lang/SETL/Pig-the-dice-game @@ -0,0 +1 @@ +../../Task/Pig-the-dice-game/SETL \ No newline at end of file diff --git a/Lang/SETL/Population-count b/Lang/SETL/Population-count new file mode 120000 index 0000000000..705b1439fa --- /dev/null +++ b/Lang/SETL/Population-count @@ -0,0 +1 @@ +../../Task/Population-count/SETL \ No newline at end of file diff --git a/Lang/SETL/Recamans-sequence b/Lang/SETL/Recamans-sequence new file mode 120000 index 0000000000..323bd2dfbb --- /dev/null +++ b/Lang/SETL/Recamans-sequence @@ -0,0 +1 @@ +../../Task/Recamans-sequence/SETL \ No newline at end of file diff --git a/Lang/SETL/Rep-string b/Lang/SETL/Rep-string new file mode 120000 index 0000000000..e0f71aa173 --- /dev/null +++ b/Lang/SETL/Rep-string @@ -0,0 +1 @@ +../../Task/Rep-string/SETL \ No newline at end of file diff --git a/Lang/SETL/Run-length-encoding b/Lang/SETL/Run-length-encoding new file mode 120000 index 0000000000..a32119613b --- /dev/null +++ b/Lang/SETL/Run-length-encoding @@ -0,0 +1 @@ +../../Task/Run-length-encoding/SETL \ No newline at end of file diff --git a/Lang/SETL/Sequence-of-non-squares b/Lang/SETL/Sequence-of-non-squares new file mode 120000 index 0000000000..42f3e6d196 --- /dev/null +++ b/Lang/SETL/Sequence-of-non-squares @@ -0,0 +1 @@ +../../Task/Sequence-of-non-squares/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 new file mode 120000 index 0000000000..be279b1c99 --- /dev/null +++ b/Lang/SETL/Sequence:-smallest-number-with-exactly-n-divisors @@ -0,0 +1 @@ +../../Task/Sequence:-smallest-number-with-exactly-n-divisors/SETL \ No newline at end of file diff --git a/Lang/SETL/Set-consolidation b/Lang/SETL/Set-consolidation new file mode 120000 index 0000000000..68db29abe2 --- /dev/null +++ b/Lang/SETL/Set-consolidation @@ -0,0 +1 @@ +../../Task/Set-consolidation/SETL \ No newline at end of file diff --git a/Lang/SETL/Sierpinski-triangle b/Lang/SETL/Sierpinski-triangle new file mode 120000 index 0000000000..fbbf99df57 --- /dev/null +++ b/Lang/SETL/Sierpinski-triangle @@ -0,0 +1 @@ +../../Task/Sierpinski-triangle/SETL \ No newline at end of file diff --git a/Lang/SETL/Sieve-of-Eratosthenes b/Lang/SETL/Sieve-of-Eratosthenes new file mode 120000 index 0000000000..aea065e02a --- /dev/null +++ b/Lang/SETL/Sieve-of-Eratosthenes @@ -0,0 +1 @@ +../../Task/Sieve-of-Eratosthenes/SETL \ No newline at end of file diff --git a/Lang/SETL/Smith-numbers b/Lang/SETL/Smith-numbers new file mode 120000 index 0000000000..fbe0a251a7 --- /dev/null +++ b/Lang/SETL/Smith-numbers @@ -0,0 +1 @@ +../../Task/Smith-numbers/SETL \ No newline at end of file diff --git a/Lang/SETL/Sorting-algorithms-Merge-sort b/Lang/SETL/Sorting-algorithms-Merge-sort new file mode 120000 index 0000000000..c4887f3d58 --- /dev/null +++ b/Lang/SETL/Sorting-algorithms-Merge-sort @@ -0,0 +1 @@ +../../Task/Sorting-algorithms-Merge-sort/SETL \ No newline at end of file diff --git a/Lang/SETL/Subleq b/Lang/SETL/Subleq new file mode 120000 index 0000000000..8c02c191b8 --- /dev/null +++ b/Lang/SETL/Subleq @@ -0,0 +1 @@ +../../Task/Subleq/SETL \ No newline at end of file diff --git a/Lang/SETL/Symmetric-difference b/Lang/SETL/Symmetric-difference new file mode 120000 index 0000000000..0f20da20ec --- /dev/null +++ b/Lang/SETL/Symmetric-difference @@ -0,0 +1 @@ +../../Task/Symmetric-difference/SETL \ No newline at end of file diff --git a/Lang/SETL/The-Twelve-Days-of-Christmas b/Lang/SETL/The-Twelve-Days-of-Christmas new file mode 120000 index 0000000000..8cc8cd0542 --- /dev/null +++ b/Lang/SETL/The-Twelve-Days-of-Christmas @@ -0,0 +1 @@ +../../Task/The-Twelve-Days-of-Christmas/SETL \ No newline at end of file diff --git a/Lang/SETL/Totient-function b/Lang/SETL/Totient-function new file mode 120000 index 0000000000..6a46ce245e --- /dev/null +++ b/Lang/SETL/Totient-function @@ -0,0 +1 @@ +../../Task/Totient-function/SETL \ No newline at end of file diff --git a/Lang/SETL/Towers-of-Hanoi b/Lang/SETL/Towers-of-Hanoi new file mode 120000 index 0000000000..1b09a27284 --- /dev/null +++ b/Lang/SETL/Towers-of-Hanoi @@ -0,0 +1 @@ +../../Task/Towers-of-Hanoi/SETL \ No newline at end of file diff --git a/Lang/SETL/Tree-traversal b/Lang/SETL/Tree-traversal new file mode 120000 index 0000000000..57c73a640b --- /dev/null +++ b/Lang/SETL/Tree-traversal @@ -0,0 +1 @@ +../../Task/Tree-traversal/SETL \ No newline at end of file diff --git a/Lang/SETL/Truth-table b/Lang/SETL/Truth-table new file mode 120000 index 0000000000..1bc47e2171 --- /dev/null +++ b/Lang/SETL/Truth-table @@ -0,0 +1 @@ +../../Task/Truth-table/SETL \ No newline at end of file diff --git a/Lang/SETL/Van-Eck-sequence b/Lang/SETL/Van-Eck-sequence new file mode 120000 index 0000000000..6f522664da --- /dev/null +++ b/Lang/SETL/Van-Eck-sequence @@ -0,0 +1 @@ +../../Task/Van-Eck-sequence/SETL \ No newline at end of file diff --git a/Lang/SETL/Yin-and-yang b/Lang/SETL/Yin-and-yang new file mode 120000 index 0000000000..4dfaa09d59 --- /dev/null +++ b/Lang/SETL/Yin-and-yang @@ -0,0 +1 @@ +../../Task/Yin-and-yang/SETL \ No newline at end of file diff --git a/Lang/Sidef/Achilles-numbers b/Lang/Sidef/Achilles-numbers new file mode 120000 index 0000000000..19ed6a8115 --- /dev/null +++ b/Lang/Sidef/Achilles-numbers @@ -0,0 +1 @@ +../../Task/Achilles-numbers/Sidef \ No newline at end of file diff --git a/Lang/Sidef/Blum-integer b/Lang/Sidef/Blum-integer new file mode 120000 index 0000000000..9b35b73aa3 --- /dev/null +++ b/Lang/Sidef/Blum-integer @@ -0,0 +1 @@ +../../Task/Blum-integer/Sidef \ No newline at end of file diff --git a/Lang/Sidef/Compare-sorting-algorithms-performance b/Lang/Sidef/Compare-sorting-algorithms-performance new file mode 120000 index 0000000000..d575bb9466 --- /dev/null +++ b/Lang/Sidef/Compare-sorting-algorithms-performance @@ -0,0 +1 @@ +../../Task/Compare-sorting-algorithms-performance/Sidef \ No newline at end of file diff --git a/Lang/Sidef/Erd-s-Nicolas-numbers b/Lang/Sidef/Erd-s-Nicolas-numbers new file mode 120000 index 0000000000..d1d95c8581 --- /dev/null +++ b/Lang/Sidef/Erd-s-Nicolas-numbers @@ -0,0 +1 @@ +../../Task/Erd-s-Nicolas-numbers/Sidef \ No newline at end of file diff --git a/Lang/Sidef/Giuga-numbers b/Lang/Sidef/Giuga-numbers new file mode 120000 index 0000000000..23d148c386 --- /dev/null +++ b/Lang/Sidef/Giuga-numbers @@ -0,0 +1 @@ +../../Task/Giuga-numbers/Sidef \ No newline at end of file diff --git a/Lang/Sidef/Golden-ratio-Convergence b/Lang/Sidef/Golden-ratio-Convergence new file mode 120000 index 0000000000..18e029dadb --- /dev/null +++ b/Lang/Sidef/Golden-ratio-Convergence @@ -0,0 +1 @@ +../../Task/Golden-ratio-Convergence/Sidef \ No newline at end of file diff --git a/Lang/Sidef/Largest-proper-divisor-of-n b/Lang/Sidef/Largest-proper-divisor-of-n new file mode 120000 index 0000000000..7e30bcdac2 --- /dev/null +++ b/Lang/Sidef/Largest-proper-divisor-of-n @@ -0,0 +1 @@ +../../Task/Largest-proper-divisor-of-n/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/Numbers-which-are-the-cube-roots-of-the-product-of-their-proper-divisors b/Lang/Sidef/Numbers-which-are-the-cube-roots-of-the-product-of-their-proper-divisors new file mode 120000 index 0000000000..101dabd3f3 --- /dev/null +++ b/Lang/Sidef/Numbers-which-are-the-cube-roots-of-the-product-of-their-proper-divisors @@ -0,0 +1 @@ +../../Task/Numbers-which-are-the-cube-roots-of-the-product-of-their-proper-divisors/Sidef \ No newline at end of file diff --git a/Lang/Sidef/Radical-of-an-integer b/Lang/Sidef/Radical-of-an-integer new file mode 120000 index 0000000000..f3a2787e3f --- /dev/null +++ b/Lang/Sidef/Radical-of-an-integer @@ -0,0 +1 @@ +../../Task/Radical-of-an-integer/Sidef \ No newline at end of file diff --git a/Lang/Sidef/Sphenic-numbers b/Lang/Sidef/Sphenic-numbers new file mode 120000 index 0000000000..52f777ef9a --- /dev/null +++ b/Lang/Sidef/Sphenic-numbers @@ -0,0 +1 @@ +../../Task/Sphenic-numbers/Sidef \ No newline at end of file diff --git a/Lang/Sidef/Square-form-factorization b/Lang/Sidef/Square-form-factorization new file mode 120000 index 0000000000..07ff6377fc --- /dev/null +++ b/Lang/Sidef/Square-form-factorization @@ -0,0 +1 @@ +../../Task/Square-form-factorization/Sidef \ No newline at end of file diff --git a/Lang/Tailspin/Word-wrap b/Lang/Tailspin/Word-wrap new file mode 120000 index 0000000000..f70bd1df77 --- /dev/null +++ b/Lang/Tailspin/Word-wrap @@ -0,0 +1 @@ +../../Task/Word-wrap/Tailspin \ No newline at end of file diff --git a/Lang/True-BASIC/21-game b/Lang/True-BASIC/21-game new file mode 120000 index 0000000000..3e04be4a0d --- /dev/null +++ b/Lang/True-BASIC/21-game @@ -0,0 +1 @@ +../../Task/21-game/True-BASIC \ No newline at end of file diff --git a/Lang/True-BASIC/Balanced-brackets b/Lang/True-BASIC/Balanced-brackets new file mode 120000 index 0000000000..3e7fd1fa12 --- /dev/null +++ b/Lang/True-BASIC/Balanced-brackets @@ -0,0 +1 @@ +../../Task/Balanced-brackets/True-BASIC \ No newline at end of file diff --git a/Lang/True-BASIC/Cantor-set b/Lang/True-BASIC/Cantor-set new file mode 120000 index 0000000000..e1bc7d9228 --- /dev/null +++ b/Lang/True-BASIC/Cantor-set @@ -0,0 +1 @@ +../../Task/Cantor-set/True-BASIC \ No newline at end of file diff --git a/Lang/True-BASIC/Casting-out-nines b/Lang/True-BASIC/Casting-out-nines new file mode 120000 index 0000000000..8de5b0d0d1 --- /dev/null +++ b/Lang/True-BASIC/Casting-out-nines @@ -0,0 +1 @@ +../../Task/Casting-out-nines/True-BASIC \ No newline at end of file diff --git a/Lang/True-BASIC/McNuggets-problem b/Lang/True-BASIC/McNuggets-problem new file mode 120000 index 0000000000..9a5d4f9331 --- /dev/null +++ b/Lang/True-BASIC/McNuggets-problem @@ -0,0 +1 @@ +../../Task/McNuggets-problem/True-BASIC \ No newline at end of file diff --git a/Lang/True-BASIC/Minimum-multiple-of-m-where-digital-sum-equals-m b/Lang/True-BASIC/Minimum-multiple-of-m-where-digital-sum-equals-m new file mode 120000 index 0000000000..bae83d5055 --- /dev/null +++ b/Lang/True-BASIC/Minimum-multiple-of-m-where-digital-sum-equals-m @@ -0,0 +1 @@ +../../Task/Minimum-multiple-of-m-where-digital-sum-equals-m/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 new file mode 120000 index 0000000000..d0a3d58964 --- /dev/null +++ b/Lang/True-BASIC/Sequence:-smallest-number-with-exactly-n-divisors @@ -0,0 +1 @@ +../../Task/Sequence:-smallest-number-with-exactly-n-divisors/True-BASIC \ No newline at end of file diff --git a/Lang/UNIX-Shell/Doomsday-rule b/Lang/UNIX-Shell/Doomsday-rule new file mode 120000 index 0000000000..49350b93c7 --- /dev/null +++ b/Lang/UNIX-Shell/Doomsday-rule @@ -0,0 +1 @@ +../../Task/Doomsday-rule/UNIX-Shell \ No newline at end of file diff --git a/Lang/UNIX-Shell/Generate-Chess960-starting-position b/Lang/UNIX-Shell/Generate-Chess960-starting-position new file mode 120000 index 0000000000..eee0488395 --- /dev/null +++ b/Lang/UNIX-Shell/Generate-Chess960-starting-position @@ -0,0 +1 @@ +../../Task/Generate-Chess960-starting-position/UNIX-Shell \ No newline at end of file diff --git a/Lang/Ursalang/00-LANG.txt b/Lang/Ursalang/00-LANG.txt new file mode 100644 index 0000000000..e32184663d --- /dev/null +++ b/Lang/Ursalang/00-LANG.txt @@ -0,0 +1,5 @@ +{{language|Ursalang|exec=interpreted|site=https://ursalang.github.io|gc=yes}} + +Ursalang, or Ursa for short, is a "friendly, stable, general-purpose programming language" according to its [https://ursalang.github.io/ web site]. At present, it is quite new, and not yet stable, but according to its [https://github.com/ursalang/ursa#readme README], "The intention is that once it reaches version 1, the language will not change or evolve further." + +Ursa is functional (the syntax consists only of expressions), and imperative (using constructs familiar from mainstream languages) with a familiar syntax similar to JavaScript. \ No newline at end of file diff --git a/Lang/Ursalang/00-META.yaml b/Lang/Ursalang/00-META.yaml new file mode 100644 index 0000000000..4057e32e38 --- /dev/null +++ b/Lang/Ursalang/00-META.yaml @@ -0,0 +1,2 @@ +--- +from: http://rosettacode.org/wiki/Category:Ursalang diff --git a/Lang/Ursalang/Accumulator-factory b/Lang/Ursalang/Accumulator-factory new file mode 120000 index 0000000000..1ee5d49ce5 --- /dev/null +++ b/Lang/Ursalang/Accumulator-factory @@ -0,0 +1 @@ +../../Task/Accumulator-factory/Ursalang \ No newline at end of file diff --git a/Lang/Ursalang/Ackermann-function b/Lang/Ursalang/Ackermann-function new file mode 120000 index 0000000000..e0c86bfacd --- /dev/null +++ b/Lang/Ursalang/Ackermann-function @@ -0,0 +1 @@ +../../Task/Ackermann-function/Ursalang \ No newline at end of file diff --git a/Lang/Ursalang/Conditional-structures b/Lang/Ursalang/Conditional-structures new file mode 120000 index 0000000000..e8c70b7da2 --- /dev/null +++ b/Lang/Ursalang/Conditional-structures @@ -0,0 +1 @@ +../../Task/Conditional-structures/Ursalang \ No newline at end of file diff --git a/Lang/Ursalang/Hello-world-Text b/Lang/Ursalang/Hello-world-Text new file mode 120000 index 0000000000..ddd916992f --- /dev/null +++ b/Lang/Ursalang/Hello-world-Text @@ -0,0 +1 @@ +../../Task/Hello-world-Text/Ursalang \ No newline at end of file diff --git a/Lang/Ursalang/Integer-sequence b/Lang/Ursalang/Integer-sequence new file mode 120000 index 0000000000..7bf5336c2c --- /dev/null +++ b/Lang/Ursalang/Integer-sequence @@ -0,0 +1 @@ +../../Task/Integer-sequence/Ursalang \ No newline at end of file diff --git a/Lang/Uxntal/00-LANG.txt b/Lang/Uxntal/00-LANG.txt new file mode 100644 index 0000000000..362eb3d215 --- /dev/null +++ b/Lang/Uxntal/00-LANG.txt @@ -0,0 +1,21 @@ +{{language|Uxntal}} + +'''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 == + +The Uxn VM relies on stacks for managing data and control flow. There are two stacks, each containing up to 256 bytes - one for general data, and one for return addresses (or anything else you want to temporarily store there). Additionally, data can be read and written anywhere in the 64KiB main memory, including to parts of the code - self-modifying code is often useful in Uxn. + +For I/O, Uxn features two instructions DEO and DEI, which are used to access a separate block of 256 8-bit registers, split into 16 devices of 16 ports each. The Varvara specification defines a standard set of computing devices, including keyboard, mouse, and controller input, and video + audio outputs. + +The 256 opcodes are divided into 8 special instructions, and 31 regular instructions with 3 flags each. The special instructions, which do not accept flags are: BRK (break), JCI, JMI, JSI, (immediate jumps), LIT, LIT2, LITr, LIT2r (integer literals). The flags on the regular instructions are: 2 (short mode), r (use return stack), and k (keep operands). The main instructions include general stack operations, load and store operations, arithmetic operations, and jumps, as well as the two I/O instructions mentioned above. + +== Syntax == + +Instructions are written in uppercase, followed by any combination of the flags 2kr. Hex values are written with lowercase a-f. + +Code can be placed at specific addresses with the | rune, which is especially important for assembling the reset vector at address 0x100 (|0100). Padding can be inserted with the $ rune. + +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. \ No newline at end of file diff --git a/Lang/Uxntal/00-META.yaml b/Lang/Uxntal/00-META.yaml new file mode 100644 index 0000000000..099ea875db --- /dev/null +++ b/Lang/Uxntal/00-META.yaml @@ -0,0 +1,2 @@ +--- +from: http://rosettacode.org/wiki/Category:Uxntal diff --git a/Lang/Uxntal/Character-codes b/Lang/Uxntal/Character-codes new file mode 120000 index 0000000000..28a68bb2bb --- /dev/null +++ b/Lang/Uxntal/Character-codes @@ -0,0 +1 @@ +../../Task/Character-codes/Uxntal \ No newline at end of file diff --git a/Lang/Uxntal/Colour-bars-Display b/Lang/Uxntal/Colour-bars-Display new file mode 120000 index 0000000000..68d09e27cb --- /dev/null +++ b/Lang/Uxntal/Colour-bars-Display @@ -0,0 +1 @@ +../../Task/Colour-bars-Display/Uxntal \ No newline at end of file diff --git a/Lang/Uxntal/Colour-pinstripe-Display b/Lang/Uxntal/Colour-pinstripe-Display new file mode 120000 index 0000000000..e66d8cf058 --- /dev/null +++ b/Lang/Uxntal/Colour-pinstripe-Display @@ -0,0 +1 @@ +../../Task/Colour-pinstripe-Display/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/Factorial b/Lang/Uxntal/Factorial new file mode 120000 index 0000000000..54fbd0e5fa --- /dev/null +++ b/Lang/Uxntal/Factorial @@ -0,0 +1 @@ +../../Task/Factorial/Uxntal \ No newline at end of file diff --git a/Lang/Uxntal/File-input-output b/Lang/Uxntal/File-input-output new file mode 120000 index 0000000000..62c0978bde --- /dev/null +++ b/Lang/Uxntal/File-input-output @@ -0,0 +1 @@ +../../Task/File-input-output/Uxntal \ No newline at end of file diff --git a/Lang/Uxntal/Find-limit-of-recursion b/Lang/Uxntal/Find-limit-of-recursion new file mode 120000 index 0000000000..469da2fb7d --- /dev/null +++ b/Lang/Uxntal/Find-limit-of-recursion @@ -0,0 +1 @@ +../../Task/Find-limit-of-recursion/Uxntal \ No newline at end of file diff --git a/Lang/Uxntal/Hello-world-Newline-omission b/Lang/Uxntal/Hello-world-Newline-omission new file mode 120000 index 0000000000..3c0e2f741b --- /dev/null +++ b/Lang/Uxntal/Hello-world-Newline-omission @@ -0,0 +1 @@ +../../Task/Hello-world-Newline-omission/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/Literals-Integer b/Lang/Uxntal/Literals-Integer new file mode 120000 index 0000000000..cdcaff26dd --- /dev/null +++ b/Lang/Uxntal/Literals-Integer @@ -0,0 +1 @@ +../../Task/Literals-Integer/Uxntal \ No newline at end of file diff --git a/Lang/Uxntal/Mouse-position b/Lang/Uxntal/Mouse-position new file mode 120000 index 0000000000..9b9db4cee2 --- /dev/null +++ b/Lang/Uxntal/Mouse-position @@ -0,0 +1 @@ +../../Task/Mouse-position/Uxntal \ No newline at end of file diff --git a/Lang/Uxntal/Rot-13 b/Lang/Uxntal/Rot-13 new file mode 120000 index 0000000000..e4b6e170be --- /dev/null +++ b/Lang/Uxntal/Rot-13 @@ -0,0 +1 @@ +../../Task/Rot-13/Uxntal \ No newline at end of file diff --git a/Lang/Uxntal/Sum-digits-of-an-integer b/Lang/Uxntal/Sum-digits-of-an-integer new file mode 120000 index 0000000000..dce70a945e --- /dev/null +++ b/Lang/Uxntal/Sum-digits-of-an-integer @@ -0,0 +1 @@ +../../Task/Sum-digits-of-an-integer/Uxntal \ No newline at end of file diff --git a/Lang/V-(Vlang)/00-LANG.txt b/Lang/V-(Vlang)/00-LANG.txt index c6f78f0d01..9a2f5797f1 100644 --- a/Lang/V-(Vlang)/00-LANG.txt +++ b/Lang/V-(Vlang)/00-LANG.txt @@ -1,9 +1,14 @@ {{language|V (Vlang) +|exec=machine |gc=allowed |checking=static +|safety=safe |strength=strong |site=https://vlang.io -}}The V Programming Language +|hopl=no +}} +{{provides|Concurrency}}{{provides|File access}}{{provides|File system access}}{{provides|First class functions}}{{provides|Network access}}{{provides|Objects}}{{provides|Signal handling}}{{language programming paradigm|concurrent}}{{language programming paradigm|Generic}}{{language programming paradigm|Imperative}} +The V Programming Language ''Simple, fast, safe, compiled. For developing maintainable software.''
@@ -12,23 +17,23 @@ V (Vlang) is used here on Rosetta Code to disambiguate from the other language called [[:Category:V|V]]. +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 sources are published at [https://github.com/vlang/v GitHub], presently on version [https://github.com/vlang/v/releases 0.4.x]. +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 is an easier to learn, read, and use language. Its design has been influenced by Go, Oberon, Rust, Swift, Kotlin, and Python. Documentation can be found [https://github.com/vlang/v/blob/master/doc/docs.md here]. +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. +V's compiler tool is similar in implementation to a multi purpose command processor: ''prompt$ v help'' -https://vlang.io - -''prompt$ v help'' - -...for more information on V and the ''v'' compiler tool. +V language review and documentation are [https://github.com/vlang/v/blob/master/doc/docs.md here]. ==Helpful links== -* [https://www.youtube.com/watch?v=ZO3vlwqvTrc Overview and introduction to Vlang] by Erdet Nasufi -* [https://www.youtube.com/watch?v=_dIAcNp9bJs Overview and presentation about Vlang] for IBM +* [https://en.everybodywiki.com/V_(programming_language) V in Wiki] +* [https://www.youtube.com/watch?v=ZO3vlwqvTrc V language overview and introduction] by Erdet Nasufi +* [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] * More info on the below can be found at [https://modules.vlang.io/ modules used by V] diff --git a/Lang/Vedit-macro-language/A+B b/Lang/Vedit-macro-language/A+B new file mode 120000 index 0000000000..95c8144292 --- /dev/null +++ b/Lang/Vedit-macro-language/A+B @@ -0,0 +1 @@ +../../Task/A+B/Vedit-macro-language \ No newline at end of file diff --git a/Lang/Vedit-macro-language/Babbage-problem b/Lang/Vedit-macro-language/Babbage-problem new file mode 120000 index 0000000000..db5331b437 --- /dev/null +++ b/Lang/Vedit-macro-language/Babbage-problem @@ -0,0 +1 @@ +../../Task/Babbage-problem/Vedit-macro-language \ No newline at end of file diff --git a/Lang/Wren/00-LANG.txt b/Lang/Wren/00-LANG.txt index 240a2360ed..bea562a4e3 100644 --- a/Lang/Wren/00-LANG.txt +++ b/Lang/Wren/00-LANG.txt @@ -15,9 +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]. -Following the migration to Miraheze and then WikiTide, RC now uses [https://pygments.org Pygments] (rather than GeSHi) for syntax highlighting and I have written a lexer for Wren which is included in version 2.14.0. However, at the time of writing (August 2023), RC is still using version 2.11.2 and it is not known when this will be updated to the latest version. - -In the meantime 'ecmascript', which we currently use for the 'lang' attribute, is supported by virtue of a GeSHi mapping to the 'javascript' lexer and highlights all Wren 0.4.0 keywords except: ''is'', ''construct'' and ''foreign''. I suggest we continue to use that until the Wren lexer is available after which we can use the latter for new tasks and when updating existing tasks. A major effort would be needed to update all existing tasks straightaway given that there are more than 1,600 of them as at August 2023. +Following the migration to Miraheze and then WikiTide, RC now uses Pygments (rather than GeSHi) for syntax highlighting and I have written a lexer for Wren which can now be specified instead of 'ecmascipt' which was used previously. The latter was only supported by virtue of a GeSHi mapping to the 'javascript' lexer but it appears that this mapping no longer works and so all tasks/modules will need to be updated to use the 'wren' lexer in due course. As a language mainly designed for embedding, Wren's standard library is (of necessity) quite small and I have therefore decided to create some additional modules to assist with writing Rosetta Code tasks so the same code does not have to be written or copy/pasted time and time again thereby bloating a task's script code unnecessarily. The ones written so far are listed below: diff --git a/Lang/XBasic/A+B b/Lang/XBasic/A+B new file mode 120000 index 0000000000..2ae8f1e153 --- /dev/null +++ b/Lang/XBasic/A+B @@ -0,0 +1 @@ +../../Task/A+B/XBasic \ No newline at end of file diff --git a/Lang/XBasic/Arithmetic-Integer b/Lang/XBasic/Arithmetic-Integer new file mode 120000 index 0000000000..5503d60907 --- /dev/null +++ b/Lang/XBasic/Arithmetic-Integer @@ -0,0 +1 @@ +../../Task/Arithmetic-Integer/XBasic \ No newline at end of file diff --git a/Lang/XBasic/Array-length b/Lang/XBasic/Array-length new file mode 120000 index 0000000000..2333470822 --- /dev/null +++ b/Lang/XBasic/Array-length @@ -0,0 +1 @@ +../../Task/Array-length/XBasic \ No newline at end of file diff --git a/Lang/XBasic/Casting-out-nines b/Lang/XBasic/Casting-out-nines new file mode 120000 index 0000000000..dce43ee2c9 --- /dev/null +++ b/Lang/XBasic/Casting-out-nines @@ -0,0 +1 @@ +../../Task/Casting-out-nines/XBasic \ No newline at end of file diff --git a/Lang/XBasic/Catalan-numbers-Pascals-triangle b/Lang/XBasic/Catalan-numbers-Pascals-triangle new file mode 120000 index 0000000000..10339454b2 --- /dev/null +++ b/Lang/XBasic/Catalan-numbers-Pascals-triangle @@ -0,0 +1 @@ +../../Task/Catalan-numbers-Pascals-triangle/XBasic \ No newline at end of file diff --git a/Lang/XBasic/Character-codes b/Lang/XBasic/Character-codes new file mode 120000 index 0000000000..43fb37069a --- /dev/null +++ b/Lang/XBasic/Character-codes @@ -0,0 +1 @@ +../../Task/Character-codes/XBasic \ No newline at end of file diff --git a/Lang/XBasic/Compare-length-of-two-strings b/Lang/XBasic/Compare-length-of-two-strings new file mode 120000 index 0000000000..a1f14e838c --- /dev/null +++ b/Lang/XBasic/Compare-length-of-two-strings @@ -0,0 +1 @@ +../../Task/Compare-length-of-two-strings/XBasic \ No newline at end of file diff --git a/Lang/XBasic/Egyptian-division b/Lang/XBasic/Egyptian-division new file mode 120000 index 0000000000..a6aa1a2cdb --- /dev/null +++ b/Lang/XBasic/Egyptian-division @@ -0,0 +1 @@ +../../Task/Egyptian-division/XBasic \ No newline at end of file diff --git a/Lang/XBasic/Factors-of-an-integer b/Lang/XBasic/Factors-of-an-integer new file mode 120000 index 0000000000..7fae81222b --- /dev/null +++ b/Lang/XBasic/Factors-of-an-integer @@ -0,0 +1 @@ +../../Task/Factors-of-an-integer/XBasic \ No newline at end of file diff --git a/Lang/XBasic/Minimum-multiple-of-m-where-digital-sum-equals-m b/Lang/XBasic/Minimum-multiple-of-m-where-digital-sum-equals-m new file mode 120000 index 0000000000..cd100be048 --- /dev/null +++ b/Lang/XBasic/Minimum-multiple-of-m-where-digital-sum-equals-m @@ -0,0 +1 @@ +../../Task/Minimum-multiple-of-m-where-digital-sum-equals-m/XBasic \ No newline at end of file diff --git a/Lang/XBasic/Repeat-a-string b/Lang/XBasic/Repeat-a-string new file mode 120000 index 0000000000..0b1c9c7144 --- /dev/null +++ b/Lang/XBasic/Repeat-a-string @@ -0,0 +1 @@ +../../Task/Repeat-a-string/XBasic \ No newline at end of file diff --git a/Lang/XBasic/Rot-13 b/Lang/XBasic/Rot-13 new file mode 120000 index 0000000000..9a7090ef33 --- /dev/null +++ b/Lang/XBasic/Rot-13 @@ -0,0 +1 @@ +../../Task/Rot-13/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 new file mode 120000 index 0000000000..7b15cd8cd8 --- /dev/null +++ b/Lang/XBasic/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors @@ -0,0 +1 @@ +../../Task/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors/XBasic \ No newline at end of file diff --git a/Lang/XBasic/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/XBasic/Sequence:-smallest-number-with-exactly-n-divisors new file mode 120000 index 0000000000..6eb9075421 --- /dev/null +++ b/Lang/XBasic/Sequence:-smallest-number-with-exactly-n-divisors @@ -0,0 +1 @@ +../../Task/Sequence:-smallest-number-with-exactly-n-divisors/XBasic \ No newline at end of file diff --git a/Lang/XBasic/String-append b/Lang/XBasic/String-append new file mode 120000 index 0000000000..b6f1a48c3b --- /dev/null +++ b/Lang/XBasic/String-append @@ -0,0 +1 @@ +../../Task/String-append/XBasic \ No newline at end of file diff --git a/Lang/XBasic/String-interpolation-included- b/Lang/XBasic/String-interpolation-included- new file mode 120000 index 0000000000..8151e314f6 --- /dev/null +++ b/Lang/XBasic/String-interpolation-included- @@ -0,0 +1 @@ +../../Task/String-interpolation-included-/XBasic \ No newline at end of file diff --git a/Lang/XBasic/Sum-digits-of-an-integer b/Lang/XBasic/Sum-digits-of-an-integer new file mode 120000 index 0000000000..e4727e227f --- /dev/null +++ b/Lang/XBasic/Sum-digits-of-an-integer @@ -0,0 +1 @@ +../../Task/Sum-digits-of-an-integer/XBasic \ No newline at end of file diff --git a/Lang/XBasic/Tau-number b/Lang/XBasic/Tau-number new file mode 120000 index 0000000000..c3b088d383 --- /dev/null +++ b/Lang/XBasic/Tau-number @@ -0,0 +1 @@ +../../Task/Tau-number/XBasic \ No newline at end of file diff --git a/Lang/XBasic/The-Twelve-Days-of-Christmas b/Lang/XBasic/The-Twelve-Days-of-Christmas new file mode 120000 index 0000000000..98d54361e6 --- /dev/null +++ b/Lang/XBasic/The-Twelve-Days-of-Christmas @@ -0,0 +1 @@ +../../Task/The-Twelve-Days-of-Christmas/XBasic \ No newline at end of file diff --git a/Lang/XBasic/Van-Eck-sequence b/Lang/XBasic/Van-Eck-sequence new file mode 120000 index 0000000000..80aaf3c605 --- /dev/null +++ b/Lang/XBasic/Van-Eck-sequence @@ -0,0 +1 @@ +../../Task/Van-Eck-sequence/XBasic \ No newline at end of file diff --git a/Lang/XPL0/00-LANG.txt b/Lang/XPL0/00-LANG.txt index 7ac7800bc2..882639ebca 100644 --- a/Lang/XPL0/00-LANG.txt +++ b/Lang/XPL0/00-LANG.txt @@ -8,9 +8,9 @@ XPL0 compiler was written in ALGOL, which was then used to create a compiler written in XPL0's syntax. XPL0 has been implemented on more than a dozen processors, but it's -currently maintained on the Raspberry Pi and IBM-type PCs. Programs run under Linux, Windows, and DOS. Free, open-source versions of the +currently maintained on the Raspberry Pi and IBM-type PCs. Programs run under Linux, Windows, and MS-DOS. Free, open-source versions of the compilers (interpreted, assembly-code compiled, and optimizing) are -available from the official website: xpl0.org [http://www.xpl0.org/]. The 32-bit version of the DOS compiler, XPLPX, was used for most of these Rosetta Code tasks, but more recent tasks were implemented using the compilers for the Raspberry Pi. Some tasks were implemented using [[EXPL-32]]. +available from the official website: xpl0.org [http://www.xpl0.org/]. The 32-bit version of the MS-DOS compiler, XPLPX, was used for many of these Rosetta Code tasks, but more recent tasks were implemented using the compilers for the Raspberry Pi. Some tasks were implemented using [[EXPL-32]]. Here's how the traditional Hello World program is coded: @@ -30,7 +30,7 @@ outputs strings. There are over a hundred of these built-in routines that provide capabilities such as input and output, graphics, and trig functions. -The 32-bit versions of the compilers (as opposed to the older, 16-bit versions) automatically declare ''code'' declarations. Thus the above program can simply be written as: +The 32-bit versions of the compilers (as opposed to the older, 16-bit versions) automatically declare ''code'' declarations. Thus the above program can simply be rewritten as:
       Text(0, "Hello World!")
diff --git a/Lang/XPL0/Align-columns b/Lang/XPL0/Align-columns
new file mode 120000
index 0000000000..ecddcb868c
--- /dev/null
+++ b/Lang/XPL0/Align-columns
@@ -0,0 +1 @@
+../../Task/Align-columns/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Convex-hull b/Lang/XPL0/Convex-hull
new file mode 120000
index 0000000000..7a2a0c2b94
--- /dev/null
+++ b/Lang/XPL0/Convex-hull
@@ -0,0 +1 @@
+../../Task/Convex-hull/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Find-limit-of-recursion b/Lang/XPL0/Find-limit-of-recursion
new file mode 120000
index 0000000000..3f535420c0
--- /dev/null
+++ b/Lang/XPL0/Find-limit-of-recursion
@@ -0,0 +1 @@
+../../Task/Find-limit-of-recursion/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Heronian-triangles b/Lang/XPL0/Heronian-triangles
new file mode 120000
index 0000000000..6766b4c3e4
--- /dev/null
+++ b/Lang/XPL0/Heronian-triangles
@@ -0,0 +1 @@
+../../Task/Heronian-triangles/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Knapsack-problem-Unbounded b/Lang/XPL0/Knapsack-problem-Unbounded
new file mode 120000
index 0000000000..8ccce2288b
--- /dev/null
+++ b/Lang/XPL0/Knapsack-problem-Unbounded
@@ -0,0 +1 @@
+../../Task/Knapsack-problem-Unbounded/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Ramer-Douglas-Peucker-line-simplification b/Lang/XPL0/Ramer-Douglas-Peucker-line-simplification
new file mode 120000
index 0000000000..cfc7731dbf
--- /dev/null
+++ b/Lang/XPL0/Ramer-Douglas-Peucker-line-simplification
@@ -0,0 +1 @@
+../../Task/Ramer-Douglas-Peucker-line-simplification/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Roots-of-a-quadratic-function b/Lang/XPL0/Roots-of-a-quadratic-function
new file mode 120000
index 0000000000..f39052a0fc
--- /dev/null
+++ b/Lang/XPL0/Roots-of-a-quadratic-function
@@ -0,0 +1 @@
+../../Task/Roots-of-a-quadratic-function/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Self-numbers b/Lang/XPL0/Self-numbers
new file mode 120000
index 0000000000..8d7258602b
--- /dev/null
+++ b/Lang/XPL0/Self-numbers
@@ -0,0 +1 @@
+../../Task/Self-numbers/XPL0
\ No newline at end of file
diff --git a/Lang/XPL0/Write-float-arrays-to-a-text-file b/Lang/XPL0/Write-float-arrays-to-a-text-file
new file mode 120000
index 0000000000..23f438b765
--- /dev/null
+++ b/Lang/XPL0/Write-float-arrays-to-a-text-file
@@ -0,0 +1 @@
+../../Task/Write-float-arrays-to-a-text-file/XPL0
\ No newline at end of file
diff --git a/Lang/Yabasic/21-game b/Lang/Yabasic/21-game
new file mode 120000
index 0000000000..4e021becb9
--- /dev/null
+++ b/Lang/Yabasic/21-game
@@ -0,0 +1 @@
+../../Task/21-game/Yabasic
\ No newline at end of file
diff --git a/Lang/Yabasic/Arithmetic-geometric-mean b/Lang/Yabasic/Arithmetic-geometric-mean
new file mode 120000
index 0000000000..8e46032637
--- /dev/null
+++ b/Lang/Yabasic/Arithmetic-geometric-mean
@@ -0,0 +1 @@
+../../Task/Arithmetic-geometric-mean/Yabasic
\ No newline at end of file
diff --git a/Lang/Yabasic/Benfords-law b/Lang/Yabasic/Benfords-law
new file mode 120000
index 0000000000..c4443fd7c9
--- /dev/null
+++ b/Lang/Yabasic/Benfords-law
@@ -0,0 +1 @@
+../../Task/Benfords-law/Yabasic
\ No newline at end of file
diff --git a/Lang/Yabasic/Boyer-Moore-string-search b/Lang/Yabasic/Boyer-Moore-string-search
new file mode 120000
index 0000000000..b7c5418915
--- /dev/null
+++ b/Lang/Yabasic/Boyer-Moore-string-search
@@ -0,0 +1 @@
+../../Task/Boyer-Moore-string-search/Yabasic
\ No newline at end of file
diff --git a/Lang/Yabasic/Cantor-set b/Lang/Yabasic/Cantor-set
new file mode 120000
index 0000000000..f05992b834
--- /dev/null
+++ b/Lang/Yabasic/Cantor-set
@@ -0,0 +1 @@
+../../Task/Cantor-set/Yabasic
\ No newline at end of file
diff --git a/Lang/Yabasic/Casting-out-nines b/Lang/Yabasic/Casting-out-nines
new file mode 120000
index 0000000000..ad68a7c4b0
--- /dev/null
+++ b/Lang/Yabasic/Casting-out-nines
@@ -0,0 +1 @@
+../../Task/Casting-out-nines/Yabasic
\ No newline at end of file
diff --git a/Lang/Yabasic/Catalan-numbers-Pascals-triangle b/Lang/Yabasic/Catalan-numbers-Pascals-triangle
new file mode 120000
index 0000000000..dd3d68a399
--- /dev/null
+++ b/Lang/Yabasic/Catalan-numbers-Pascals-triangle
@@ -0,0 +1 @@
+../../Task/Catalan-numbers-Pascals-triangle/Yabasic
\ No newline at end of file
diff --git a/Lang/Yabasic/Equal-prime-and-composite-sums b/Lang/Yabasic/Equal-prime-and-composite-sums
new file mode 120000
index 0000000000..5f96757056
--- /dev/null
+++ b/Lang/Yabasic/Equal-prime-and-composite-sums
@@ -0,0 +1 @@
+../../Task/Equal-prime-and-composite-sums/Yabasic
\ No newline at end of file
diff --git a/Lang/Yabasic/Goldbachs-comet b/Lang/Yabasic/Goldbachs-comet
new file mode 120000
index 0000000000..8391b64a6e
--- /dev/null
+++ b/Lang/Yabasic/Goldbachs-comet
@@ -0,0 +1 @@
+../../Task/Goldbachs-comet/Yabasic
\ No newline at end of file
diff --git a/Lang/Yabasic/Padovan-n-step-number-sequences b/Lang/Yabasic/Padovan-n-step-number-sequences
new file mode 120000
index 0000000000..d7ef32db4b
--- /dev/null
+++ b/Lang/Yabasic/Padovan-n-step-number-sequences
@@ -0,0 +1 @@
+../../Task/Padovan-n-step-number-sequences/Yabasic
\ No newline at end of file
diff --git a/Lang/Yabasic/Pig-the-dice-game b/Lang/Yabasic/Pig-the-dice-game
new file mode 120000
index 0000000000..4793da4b13
--- /dev/null
+++ b/Lang/Yabasic/Pig-the-dice-game
@@ -0,0 +1 @@
+../../Task/Pig-the-dice-game/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
new file mode 120000
index 0000000000..c31a43a3b8
--- /dev/null
+++ b/Lang/Yabasic/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors
@@ -0,0 +1 @@
+../../Task/Sequence:-smallest-number-greater-than-previous-term-with-exactly-n-divisors/Yabasic
\ No newline at end of file
diff --git a/Lang/Yabasic/Sequence:-smallest-number-with-exactly-n-divisors b/Lang/Yabasic/Sequence:-smallest-number-with-exactly-n-divisors
new file mode 120000
index 0000000000..21289ba764
--- /dev/null
+++ b/Lang/Yabasic/Sequence:-smallest-number-with-exactly-n-divisors
@@ -0,0 +1 @@
+../../Task/Sequence:-smallest-number-with-exactly-n-divisors/Yabasic
\ No newline at end of file
diff --git a/Lang/Yabasic/Sorting-algorithms-Gnome-sort b/Lang/Yabasic/Sorting-algorithms-Gnome-sort
new file mode 120000
index 0000000000..0f81572e0a
--- /dev/null
+++ b/Lang/Yabasic/Sorting-algorithms-Gnome-sort
@@ -0,0 +1 @@
+../../Task/Sorting-algorithms-Gnome-sort/Yabasic
\ No newline at end of file
diff --git a/Lang/Yabasic/Subleq b/Lang/Yabasic/Subleq
new file mode 120000
index 0000000000..c9afe7bf12
--- /dev/null
+++ b/Lang/Yabasic/Subleq
@@ -0,0 +1 @@
+../../Task/Subleq/Yabasic
\ No newline at end of file
diff --git a/Lang/Yabasic/Van-Eck-sequence b/Lang/Yabasic/Van-Eck-sequence
new file mode 120000
index 0000000000..35b84733d2
--- /dev/null
+++ b/Lang/Yabasic/Van-Eck-sequence
@@ -0,0 +1 @@
+../../Task/Van-Eck-sequence/Yabasic
\ No newline at end of file
diff --git a/Lang/Zig/100-prisoners b/Lang/Zig/100-prisoners
new file mode 120000
index 0000000000..fbe8ec3d31
--- /dev/null
+++ b/Lang/Zig/100-prisoners
@@ -0,0 +1 @@
+../../Task/100-prisoners/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Binary-search b/Lang/Zig/Binary-search
new file mode 120000
index 0000000000..0144afc2f0
--- /dev/null
+++ b/Lang/Zig/Binary-search
@@ -0,0 +1 @@
+../../Task/Binary-search/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Case-sensitivity-of-identifiers b/Lang/Zig/Case-sensitivity-of-identifiers
new file mode 120000
index 0000000000..7a873961b9
--- /dev/null
+++ b/Lang/Zig/Case-sensitivity-of-identifiers
@@ -0,0 +1 @@
+../../Task/Case-sensitivity-of-identifiers/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Catamorphism b/Lang/Zig/Catamorphism
new file mode 120000
index 0000000000..d7f93bdd1e
--- /dev/null
+++ b/Lang/Zig/Catamorphism
@@ -0,0 +1 @@
+../../Task/Catamorphism/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Find-limit-of-recursion b/Lang/Zig/Find-limit-of-recursion
new file mode 120000
index 0000000000..fe08755028
--- /dev/null
+++ b/Lang/Zig/Find-limit-of-recursion
@@ -0,0 +1 @@
+../../Task/Find-limit-of-recursion/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Introspection b/Lang/Zig/Introspection
new file mode 120000
index 0000000000..7b0cfb145a
--- /dev/null
+++ b/Lang/Zig/Introspection
@@ -0,0 +1 @@
+../../Task/Introspection/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Levenshtein-distance b/Lang/Zig/Levenshtein-distance
new file mode 120000
index 0000000000..f793f74b09
--- /dev/null
+++ b/Lang/Zig/Levenshtein-distance
@@ -0,0 +1 @@
+../../Task/Levenshtein-distance/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Man-or-boy-test b/Lang/Zig/Man-or-boy-test
new file mode 120000
index 0000000000..bb1768f007
--- /dev/null
+++ b/Lang/Zig/Man-or-boy-test
@@ -0,0 +1 @@
+../../Task/Man-or-boy-test/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Read-entire-file b/Lang/Zig/Read-entire-file
new file mode 120000
index 0000000000..123de25159
--- /dev/null
+++ b/Lang/Zig/Read-entire-file
@@ -0,0 +1 @@
+../../Task/Read-entire-file/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Sort-using-a-custom-comparator b/Lang/Zig/Sort-using-a-custom-comparator
new file mode 120000
index 0000000000..d6d8d488b5
--- /dev/null
+++ b/Lang/Zig/Sort-using-a-custom-comparator
@@ -0,0 +1 @@
+../../Task/Sort-using-a-custom-comparator/Zig
\ No newline at end of file
diff --git a/Lang/Zig/Unicode-variable-names b/Lang/Zig/Unicode-variable-names
new file mode 120000
index 0000000000..2cf5330d25
--- /dev/null
+++ b/Lang/Zig/Unicode-variable-names
@@ -0,0 +1 @@
+../../Task/Unicode-variable-names/Zig
\ No newline at end of file
diff --git a/Task/100-doors/ALGOL-60/100-doors.alg b/Task/100-doors/ALGOL-60/100-doors.alg
deleted file mode 100644
index c558d5cd63..0000000000
--- a/Task/100-doors/ALGOL-60/100-doors.alg
+++ /dev/null
@@ -1,31 +0,0 @@
-begin
-
-comment - 100 doors problem in ALGOL-60;
-
-boolean array doors[1:100];
-integer i, j;
-boolean open, closed;
-
-open := true;
-closed := not true;
-
-outstring(1,"100 Doors Problem\n");
-
-comment - all doors are initially closed;
-for i := 1 step 1 until 100 do
-  doors[i] := closed;
-
-comment
-  cycle through at increasing intervals
-  and flip each door encountered;
-for i := 1 step 1 until 100 do
-  for j := i step i until 100 do
-    doors[j] := not doors[j];
-
-comment - show which doors are open;
-outstring(1,"The open doors are:");
-for i := 1 step 1 until 100 do
-  if doors[i] then
-     outinteger(1,i);
-
-end
diff --git a/Task/100-doors/ALGOL-W/100-doors.alg b/Task/100-doors/ALGOL-W/100-doors.alg
deleted file mode 100644
index 89593f1ca1..0000000000
--- a/Task/100-doors/ALGOL-W/100-doors.alg
+++ /dev/null
@@ -1,32 +0,0 @@
-begin
-    % -- find the first few squares via the unoptimised door flipping method   %
-
-    integer doorMax;
-    doorMax := 100;
-
-    begin
-        % -- need to start a new block so the array can have variable bounds   %
-
-        % -- array of doors - door( i ) is true if open, false if closed       %
-        logical array door( 1 :: doorMax );
-
-        % -- set all doors to closed                                           %
-        for i := 1 until doorMax do door( i ) := false;
-
-        % -- repeatedly flip the doors                                         %
-        for i := 1 until doorMax
-        do begin
-            for j := i step i until doorMax
-            do begin
-                door( j ) := not door( j )
-            end
-        end;
-
-        % -- display the results                                               %
-        i_w := 1; % -- set integer field width                                 %
-        s_w := 1; % -- and separator width                                     %
-        for i := 1 until doorMax do if door( i ) then writeon( i )
-
-    end
-
-end.
diff --git a/Task/100-doors/EMal/100-doors.emal b/Task/100-doors/EMal/100-doors.emal
index 6f0e0623b1..6f7b1360d1 100644
--- a/Task/100-doors/EMal/100-doors.emal
+++ b/Task/100-doors/EMal/100-doors.emal
@@ -5,27 +5,20 @@ model
   int id
   Door:State state
   new by int =id, Door:State =state do end
-  fun toggle = void by block
-    me.state = when(me.state == Door:State.CLOSED, Door:State.OPEN, Door:State.CLOSED)
-  end
-  fun asText = text by block
-    return "Door #" + me.id + " is " + when(me.state == Door:State.CLOSED, "closed", "open")
-  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
 type Main
 ^|There are 100 doors in a row that are all initially closed.|^
-List doors = Door[].with(100)
-for int i = 0; i < 100; ++i
-  doors[i] = Door(i + 1, Door:State.CLOSED)
-end
+List doors ← Door[].with(100, false);
+    var Doors := Array.allocate(100).populate::(n=>false);
     for(int i := 0, i < 100, i := i + 1)
     {
         for(int j := i, j < 100, j := j + i + 1)
diff --git a/Task/100-doors/JavaScript/100-doors-8.js b/Task/100-doors/JavaScript/100-doors-8.js
index 7378d4bae5..fdf195657b 100644
--- a/Task/100-doors/JavaScript/100-doors-8.js
+++ b/Task/100-doors/JavaScript/100-doors-8.js
@@ -4,6 +4,6 @@
   var sqrt = Math.sqrt(door);
 
   if (sqrt === (sqrt | 0)) {
-    console.log("Door %d is open", door);
+    console.log("Door " + door + " is open");
   }
 });
diff --git a/Task/100-prisoners/Phix/100-prisoners.phix b/Task/100-prisoners/Phix/100-prisoners.phix
index 16b5b65a25..88107e77e1 100644
--- a/Task/100-prisoners/Phix/100-prisoners.phix
+++ b/Task/100-prisoners/Phix/100-prisoners.phix
@@ -1,30 +1,28 @@
-(phixonline)-->
- function play(integer prisoners, iterations, bool optimal)
-     sequence drawers = shuffle(tagset(prisoners))
-     integer pardoned = 0
-     bool found = false
-     for i=1 to iterations do
-         drawers = shuffle(drawers)
-         for prisoner=1 to prisoners do
-             found = false
-             integer drawer = iff(optimal?prisoner:rand(prisoners))
-             for j=1 to prisoners/2 do
-                 drawer = drawers[drawer]
-                 if drawer==prisoner then found = true exit end if
-                 if not optimal then drawer = rand(prisoners) end if
-             end for
-             if not found then exit end if
-         end for
-         pardoned += found
-     end for
-     return 100*pardoned/iterations
- end function
+function play(integer prisoners, iterations, bool optimal)
+    sequence drawers = shuffle(tagset(prisoners))
+    integer pardoned = 0
+    bool found = false
+    for i=1 to iterations do
+        drawers = shuffle(drawers)
+        for prisoner=1 to prisoners do
+            found = false
+            integer drawer = iff(optimal?prisoner:rand(prisoners))
+            for j=1 to prisoners/2 do
+                drawer = drawers[drawer]
+                if drawer==prisoner then found = true exit end if
+                if not optimal then drawer = rand(prisoners) end if
+            end for
+            if not found then exit end if
+        end for
+        pardoned += found
+    end for
+    return 100*pardoned/iterations
+end function
 
- constant iterations = 100_000
- printf(1,"Simulation count: %d\n",iterations)
- for prisoners=10 to 100 by 90 do
-     atom random = play(prisoners,iterations,false),
-          optimal = play(prisoners,iterations,true)
-     printf(1,"Prisoners:%d, random:%g, optimal:%g\n",{prisoners,random,optimal})
- end for
-
- constant ESC=27, UP=328, LEFT=331, RIGHT=333, DOWN=336
- sequence board = tagset(15)&0, solve = board
- integer pos = 16
+constant ESC=27, UP=328, LEFT=331, RIGHT=333, DOWN=336
+sequence board = tagset(15)&0, solve = board
+integer pos = 16
 
- procedure print_board()
-     for i=1 to length(board) do
-         puts(1,iff(i=pos?"   ":sprintf("%3d",{board[i]})))
-         if mod(i,4)=0 then puts(1,"\n") end if
-     end for
-     puts(1,"\n")
- end procedure
+procedure print_board()
+    for i=1 to length(board) do
+        puts(1,iff(i=pos?"   ":sprintf("%3d",{board[i]})))
+        if mod(i,4)=0 then puts(1,"\n") end if
+    end for
+    puts(1,"\n")
+end procedure
 
- procedure move(integer d)
-     integer new_pos = pos+{+4,+1,-1,-4}[d]
-     if new_pos>=1 and new_pos<=16
-     and (mod(pos,4)=mod(new_pos,4) -- same col, or row:
-      or floor((pos-1)/4)=floor((new_pos-1)/4)) then
-         {board[pos],board[new_pos]} = {board[new_pos],0}
-         pos = new_pos
-     end if
- end procedure
+procedure move(integer d)
+    integer new_pos = pos+{+4,+1,-1,-4}[d]
+    if new_pos>=1 and new_pos<=16
+    and (mod(pos,4)=mod(new_pos,4) -- same col, or row:
+     or floor((pos-1)/4)=floor((new_pos-1)/4)) then
+        {board[pos],board[new_pos]} = {board[new_pos],0}
+        pos = new_pos
+    end if
+end procedure
 
- for i=1 to 5 do move(rand(4)) end for
- while 1 do
-     print_board()
-     if board=solve then exit end if
-     integer c = find(wait_key(),{ESC,UP,LEFT,RIGHT,DOWN})-1
-     if c=0 then exit end if
-     move(c)
- end while
- puts(1,"solved!\n")
- convierte a notación polaca \
+                    --> evalúa expresión --> despliega resultados )
+        --largo de datos
+    mientras ' largo de datos'
+
+terminar
+
+subrutinas
+
+convierte a matriz:
+
+    argumentos 'expr'
+    transformar(" ","",\
+        transformar("(-","(0-",expr)), guardar en 'expr'
+
+    l=0, #( l = len(expr) )
+    v="", num="", cte=""
+    para cada caracter (v, expr, l)
+        cuando ( #(typechar(v,"digit") || v==".")){
+             num, v, concatenar esto, guardar en 'num'
+             continuar
+        }
+        cuando ( #(typechar(v,"alpha") )){
+             cte, v, concatenar esto, guardar en 'cte'
+             continuar
+        }
+        cuando (num) {num, meter en 'q', num=""}
+        cuando (cte) {cte, meter en 'q', cte=""}
+        v, meter en 'q'
+    siguiente
+
+    cuando (num) {num, meter en 'q'}
+    cuando (cte) {cte, meter en 'q'}
+    "(", meter en 'pila'
+    ")", meter en 'q'
+  //  imprimir( "Q = {", q, "}\n" )
+
+retornar
+
+convierte a notación polaca:
+
+   l="", m=""
+
+   iterar mientras '#( not(is empty(q)) )'
+       sw = 1
+
+///imprimir("P = ",p,"\nQ = ",q,"\nPILA = ",pila,NL)
+
+       extraer tope 'q' para 'l'
+
+       // ¿es un operando?
+       cuando ' #(not( occurs(l,"+-*^/)(%") )) ' {
+           si ' se verifica constante en (l) '
+                meter en 'p'
+           sino si ' se verifica función en (l) '
+                l, meter en 'pila'
+           sino
+                #( number(l) ), meter en 'p'
+           fin si
+           continuar
+       }
+       // es un simbolo...
+
+       // es un parentesis izquierdo?
+       cuando ( #( l=="(" ) ) {
+           l, meter en 'pila'
+           continuar
+       }
+       // es un operador?
+       cuando ( #( occurs(l,"+-*^/%")) ) {
+
+           iterar mientras ' sw '
+                extraer cabeza 'pila' para 'm'
+
+                cuando ' #(m=="(") '{
+                     m,l, apilar en 'pila'
+                     sw=0, continuar
+                }
+                cuando ' #(l=="^") '{
+                     si ' #(m=="^") '
+                         //m,l, apilar en 'p'
+                         m, meter en 'p'
+                     sino
+                         m,l, apilar en 'pila'
+                         sw=0
+                     fin si, continuar
+                }
+                cuando ' #(l=="*") ' {
+                     si ' #(occurs(m, "^*/%"))'
+                         m, meter en 'p'
+                     sino
+                         m,l, apilar en 'pila'
+                         sw=0
+                     fin si, continuar
+                }
+                //cuando ' #(l=="/") ' {
+                // decisión de diseño para resto módulo
+                cuando ' #( occurs(l,"/%")) ' {
+                     si ' #( occurs(m, "/^*%") )'
+                         m, meter en 'p'
+                         l, meter en 'pila'
+                     sino
+                         m,l, apilar en 'pila'
+                     fin si
+                     sw=0, continuar
+                }
+
+                cuando ' #(occurs(l, "+-"))' {
+                     m, meter en 'p'
+                     // saber si ya hay un símbolo "-" en pila
+                     tmp=0
+                     tope(pila), mover a 'tmp'
+                     si ' #( occurs(tmp,"+-") ) '
+                          extraer cabeza (pila)
+                          meter en 'p'
+                     fin si
+                     l, meter en 'pila'
+                     sw=0
+                }
+
+           reiterar
+
+           si ' #( length (pila)==0 ) '
+                "(", meter en 'pila'
+           fin si
+
+           continuar
+       }
+      // es un paréntesis derecho?
+       cuando( #(l==")") ) {
+           extraer cabeza (pila) para 'm'
+
+           iterar mientras ' #( m<>"(") '
+               m, meter en 'p'
+               extraer cabeza 'pila' para 'm'
+           reiterar
+       }
+   reiterar
+retornar
+
+evalúa  expresión:
+
+   l = " ", a=0, b=0
+   iterar mientras ' #( not(is empty(p)) ) '
+       extraer tope 'p' para 'l'
+       si ' es numérico (l) '
+           l, meter en 'pila'
+       sino
+           si ' se verifica función en (l) '
+               extraer cabeza 'pila' para 'b'
+               seleccionar 'l'
+                   caso ("sqrt"){ #(sqrt(b)), salir }
+                   caso ("log"){ #(log10(b)), salir }
+                   caso ("ln"){ #(log(b)), salir }
+                   caso ("fact"){
+                          si ' #(int(b)<>b) '  // límite de Euler
+                             x=0,i=2, xb=1,
+                             // aproximación muy burda.
+                             #basic{
+                                 b = b + 1
+                                 x = fact(163)*(163^b)
+                                 xb = b*(b+1)
+                                 while( i<=163 )
+                                     xb = xb * ( i+b )
+                                     i+=1
+                                 wend
+                                 x/xb
+                             }
+                          sino   // normal
+                             #(fact(b))
+                          fin si
+                          salir
+                   }
+               fin seleccionar
+           sino
+               extraer cabeza 'pila' para 'b'
+               extraer cabeza 'pila' para 'a'
+               seleccionar 'l'
+                   caso ("+"){  #(a+b), salir }
+                   caso ("-"){  #(a-b), salir }
+                   caso ("*"){  #(a*b), salir }
+                  // n/0 = inf, no es necesario detectar esto:
+                   caso ("/"){  #(a/b), salir }
+                   caso ("^"){  #(a^b), salir }
+                   caso ("%"){  #(a%b), salir }
+               fin seleccionar
+           fin si
+           meter en 'pila'
+       fin si
+
+   reiterar
+
+retornar
+
+despliega resultados:
+
+   imprimir(expresión," : ", \
+            tomar si( #(length(pila)==1),pila, \
+                      #(utf8("expresión mal formada!"))), NL)
+
+retornar
+
+verificar constante (x)
+   seleccionar 'x'
+       caso ("pi"){ M_PI, 1, salir }
+       caso ("e") { M_E, 1, salir }
+       caso ("phi"){ M_PHI, 1, salir }
+       // etcétera...
+       caso por defecto{ 0, salir }
+   fin seleccionar
+retornar
+
+verificar función (f)
+   seleccionar 'f'
+       caso ("sqrt"){ '1', salir }
+       caso ("log"){ '1', salir }
+       caso ("ln"){ '1', salir }
+       caso ("fact"){ '1', salir }
+       // etcétera...
+       caso por defecto { '0', salir }
+   fin seleccionar
+retornar
+
+DATA_EXPRESIONES:
+   datos("((30+4.5) * ( 7 / 9.67 )+3)-4*(-1)")  //31.9741468459168
+   datos("1 + 2*(3 - 2*(3 - 2)*((2 - 4)*5 - 22/(7 + 2*(3 - 1)) - 1)) + 1")  // 60!
+   datos("(1 - 5) * 2 / (20 + 1)")  // -8/21
+   datos("(3 * 2) - (1 + 2) / (4")   // error!
+   datos("(3 * 2) a - (1 + 2) / 4")  // error!
+   datos("(6^2)*2/3")  //24
+   datos("6^2*2/3")  //24
+   datos("(6^2)*2/0")  //inf
+   datos("2 * (3 + ((5) / (7 - 11)))")  // 3.5
+
+   datos("1 - 5 * 2 / 20 + 1")   //1,5!
+   datos ("(1 + 2) * 10 / 100")  // 0.3
+   datos("1+3.78")  // 4.78
+   datos("2.5 * 2 + 2 * pi") // 11.28
+   datos("1 + 2 * (3 + (4 * 5 + 6 * 7 * 8) - 9) / 10") // 71
+   datos("1+1+(1+(1+(1+(1+(1+(1+(1+(1+(1+(1+(1+(1+(1+1/15)/14)/13)/12)/11)/10)/9)/8)/7)/6)/5)/4)/3)/2")  // 2.7182818284589946
+   datos("((11+15)*15)*2-(3)*4*1") // 768
+   datos(" 2*(-3)-(-4)+(-0.25)") //-2.25
+   datos(" 2-25 % 3+1")  // 2
+   datos(" 2-(25 % 3)+1")  // 2
+   datos(" (2-25) % (3+1)")  // -3
+   datos(" 2- 25 % 3 % 2")  // 1
+   datos(" 2- 25 / 3 % 2")  // 1.66666
+   datos(" 2- ((25 / 3) % 2)")  // 1.66666
+   datos(" 2- 25 / 3 / 2")  // 2.166666
+   datos(" (-23) %3")  // -2
+   datos(" (6*pi-1)^0.5-e")  // 1,506591651...
+   datos("2^2^3^4")
+   datos("(4-2*phi)*pi")  // 2,3999632297286
+   datos("( (1+sqrt(5))/2)^(2/pi)")  // 1.3584562741830
+  datos("1-(1+ln(ln(2)))/ln(2)") // 0.0860713320559
+  datos("pi / (2 * ln(1+sqrt(2)))") // 1,7822139781 ....
+  datos("( (e^(pi/8)) * sqrt(pi)) /(4 * (2^(3/4)) * (fact(1/4))^2) ") //0,47494 93799...
+  datos(" fact(1/2)") // 0.906402477055...
+back
diff --git a/Task/Arithmetic-evaluation/Wren/arithmetic-evaluation.wren b/Task/Arithmetic-evaluation/Wren/arithmetic-evaluation.wren
index dcd1678200..e72fa9ef75 100644
--- a/Task/Arithmetic-evaluation/Wren/arithmetic-evaluation.wren
+++ b/Task/Arithmetic-evaluation/Wren/arithmetic-evaluation.wren
@@ -1,4 +1,4 @@
-import "/pattern" for Pattern
+import "./pattern" for Pattern
 
 /* if string is empty, returns zero */
 var toDoubleOrZero = Fn.new { |s|
diff --git a/Task/Arithmetic-geometric-mean-Calculate-Pi/IS-BASIC/arithmetic-geometric-mean-calculate-pi.basic b/Task/Arithmetic-geometric-mean-Calculate-Pi/IS-BASIC/arithmetic-geometric-mean-calculate-pi.basic
new file mode 100644
index 0000000000..85b648074f
--- /dev/null
+++ b/Task/Arithmetic-geometric-mean-Calculate-Pi/IS-BASIC/arithmetic-geometric-mean-calculate-pi.basic
@@ -0,0 +1,14 @@
+100 PROGRAM "PI.bas"
+110 LET DIGITS=10
+120 LET AN,PN=1
+130 LET BN=SQR(.5)
+140 LET TN=.5^2
+150 DO WHILE PN<=DIGITS
+160   LET PREVAN=AN
+170   LET AN=(BN+AN)/2
+180   LET BN=SQR(BN*PREVAN)
+190   LET PREVAN=PREVAN-AN
+200   LET TN=TN-(PN*PREVAN^2)
+210   LET PN=PN+PN
+220 LOOP
+230 PRINT (AN+BN)^2/(TN*4)
diff --git a/Task/Arithmetic-geometric-mean-Calculate-Pi/Wren/arithmetic-geometric-mean-calculate-pi.wren b/Task/Arithmetic-geometric-mean-Calculate-Pi/Wren/arithmetic-geometric-mean-calculate-pi.wren
index 5dec73ab4a..5a22a9ceef 100644
--- a/Task/Arithmetic-geometric-mean-Calculate-Pi/Wren/arithmetic-geometric-mean-calculate-pi.wren
+++ b/Task/Arithmetic-geometric-mean-Calculate-Pi/Wren/arithmetic-geometric-mean-calculate-pi.wren
@@ -1,4 +1,4 @@
-import "/big" for BigRat
+import "./big" for BigRat
 
 var digits = 500
 var an = BigRat.one
diff --git a/Task/Arithmetic-geometric-mean/Gambas/arithmetic-geometric-mean.gambas b/Task/Arithmetic-geometric-mean/Gambas/arithmetic-geometric-mean.gambas
new file mode 100644
index 0000000000..475843a147
--- /dev/null
+++ b/Task/Arithmetic-geometric-mean/Gambas/arithmetic-geometric-mean.gambas
@@ -0,0 +1,19 @@
+Public Sub Main()
+
+  Print AGM(1, 1 / Sqr(2))
+
+End
+
+Function AGM(a As Float, g As Float) As Float
+
+  Dim t_a As Float
+
+  Do
+    t_a = (a + g) / 2
+    g = Sqr(a * g)
+    Swap a, t_a
+  Loop Until a = t_a
+
+  Return a
+
+End Function
diff --git a/Task/Arithmetic-geometric-mean/Minimal-BASIC/arithmetic-geometric-mean.basic b/Task/Arithmetic-geometric-mean/Minimal-BASIC/arithmetic-geometric-mean.basic
new file mode 100644
index 0000000000..1c575fc2b2
--- /dev/null
+++ b/Task/Arithmetic-geometric-mean/Minimal-BASIC/arithmetic-geometric-mean.basic
@@ -0,0 +1,11 @@
+10 LET A = 1
+20 LET G = 1 / SQR(2)
+30 GOSUB 60
+40 PRINT A
+50 STOP
+60 LET T = A
+70 LET A = (A + G) / 2
+80 LET G = SQR(T * G)
+90 IF A < T THEN 60
+100 RETURN
+110 END
diff --git a/Task/Arithmetic-geometric-mean/Quite-BASIC/arithmetic-geometric-mean.basic b/Task/Arithmetic-geometric-mean/Quite-BASIC/arithmetic-geometric-mean.basic
new file mode 100644
index 0000000000..6c5d4b963f
--- /dev/null
+++ b/Task/Arithmetic-geometric-mean/Quite-BASIC/arithmetic-geometric-mean.basic
@@ -0,0 +1,10 @@
+10 LET A = 1
+20 LET G = 1 / SQR(2)
+30 GOSUB 100
+40 PRINT A
+50 END
+100 LET T = A
+110 LET A = (A + G) / 2
+120 LET G = SQR(T * G)
+130 IF A < T THEN 100
+140 RETURN
diff --git a/Task/Arithmetic-geometric-mean/Yabasic/arithmetic-geometric-mean.basic b/Task/Arithmetic-geometric-mean/Yabasic/arithmetic-geometric-mean.basic
new file mode 100644
index 0000000000..7ea0627e4d
--- /dev/null
+++ b/Task/Arithmetic-geometric-mean/Yabasic/arithmetic-geometric-mean.basic
@@ -0,0 +1,14 @@
+print AGM(1, 1 / sqrt(2))
+end
+
+sub AGM(a, g)
+	repeat
+		ta = (a + g) / 2
+		g = sqrt(a * g)
+		x = a
+		a = ta
+		ta = x
+	until a = ta
+
+	return a
+end sub
diff --git a/Task/Arithmetic-numbers/SETL/arithmetic-numbers.setl b/Task/Arithmetic-numbers/SETL/arithmetic-numbers.setl
new file mode 100644
index 0000000000..0e04d82dc7
--- /dev/null
+++ b/Task/Arithmetic-numbers/SETL/arithmetic-numbers.setl
@@ -0,0 +1,33 @@
+program arithmetic_numbers;
+    [divsum, divcount] := calcdivsums(130000);
+
+    print("First 100 arithmetic numbers:");
+
+    loop for nth in [1..100000] do
+        loop until divsum(num) mod divcount(num) = 0 do num +:= 1; end loop;
+        comp +:= if num>1 and divsum(num) /= num+1 then 1 else 0 end if;
+
+        if nth <= 100 then
+            putchar(rpad(str num, 5));
+            if nth mod 10 = 0 then print(); end if;
+        end if;
+
+        if nth in [1000, 10000, 100000] then
+            print("The " + nth + "th arithmetic number is " + num + ".");
+            print("Of the first " + nth + " arithmetic numbers, " +
+                  comp + " are composite.");
+        end if;
+    end loop;
+
+    proc calcdivsums(m);
+        sums := [];
+        counts := [];
+        loop for d in [1..m] do
+            loop for n in [d, d*2..m] do
+                sums(n) +:= d;
+                counts(n) +:= 1;
+            end loop;
+        end loop;
+        return [sums, counts];
+    end proc;
+end program;
diff --git a/Task/Array-concatenation/GW-BASIC/array-concatenation.basic b/Task/Array-concatenation/GW-BASIC/array-concatenation.basic
new file mode 100644
index 0000000000..4ff34900e6
--- /dev/null
+++ b/Task/Array-concatenation/GW-BASIC/array-concatenation.basic
@@ -0,0 +1,23 @@
+100 U1 = 3: U2 = 4
+110 DIM A$(3)
+120 DATA "The","quick","brown","fox"
+130 FOR I = 0 TO U1 : READ A$(I) : NEXT I
+140 DIM B$(4)
+150 DATA "jumped","over","the","lazy","dog"
+160 FOR I = 0 TO U2 : READ B$(I) : NEXT I
+170 'SU2 ConcatArrays
+180   X = U1 + 1
+190   Y = U2 + 1
+200   Z = X + Y
+210   DIM C$(Z-1)
+220   FOR I = 0 TO X-1
+230      C$(I) = A$(I)
+240   NEXT I
+250   FOR I = 0 TO Y-1
+260     C$(U1+I+1) = B$(I)
+270   NEXT I
+280 '
+290 FOR I = 0 TO Z-1
+300   PRINT C$(I); " ";
+310 NEXT I
+320 END
diff --git a/Task/Array-concatenation/Minimal-BASIC/array-concatenation.basic b/Task/Array-concatenation/Minimal-BASIC/array-concatenation.basic
new file mode 100644
index 0000000000..f9a3682b39
--- /dev/null
+++ b/Task/Array-concatenation/Minimal-BASIC/array-concatenation.basic
@@ -0,0 +1,21 @@
+10 LET X = 4
+20 LET Y = 5
+30 DIM A(3)
+40 DIM B(4)
+50 DIM C(8)
+60 FOR I = 1 TO X
+70  LET A(I-1) = I
+80 NEXT I
+90 FOR I = 1 TO Y
+100  LET B(I-1) = I*10
+110 NEXT I
+120 FOR I = 1 TO X
+130  LET C(I-1) = A(I-1)
+140 NEXT I
+150 FOR I = 1 TO Y
+160  LET C(X+I-1) = B(I-1)
+170 NEXT I
+180 FOR I = 1 TO X+Y
+190  PRINT C(I-1);
+200 NEXT I
+210 END
diff --git a/Task/Array-concatenation/Nu/array-concatenation.nu b/Task/Array-concatenation/Nu/array-concatenation.nu
new file mode 100644
index 0000000000..ea26286c22
--- /dev/null
+++ b/Task/Array-concatenation/Nu/array-concatenation.nu
@@ -0,0 +1,3 @@
+let a = [1 2 3]
+let b = [4 5 6]
+[$a $b] | flatten
diff --git a/Task/Array-concatenation/Quite-BASIC/array-concatenation.basic b/Task/Array-concatenation/Quite-BASIC/array-concatenation.basic
new file mode 100644
index 0000000000..46b444d6c7
--- /dev/null
+++ b/Task/Array-concatenation/Quite-BASIC/array-concatenation.basic
@@ -0,0 +1,24 @@
+100 LET U1 = 3
+105 LET U2 = 4
+110 ARRAY A$
+120 DATA "The","quick","brown","fox"
+130 FOR I = 0 TO U1 : READ A$(I) : NEXT I
+140 ARRAY B$
+150 DATA "jumped","over","the","lazy","dog"
+160 FOR I = 0 TO U2 : READ B$(I) : NEXT I
+170 rem Sub ConcatArrays
+180   LET X = U1 + 1
+190   LET Y = U2 + 1
+200   LET Z = X + Y
+210   ARRAY C
+220   FOR I = 0 TO X-1
+230      LET C$(I) = A$(I)
+240   NEXT I
+250   FOR I = 0 TO Y-1
+260     LET C$(U1 + I + 1) = B$(I)
+270   NEXT I
+280 rem
+290 FOR I = 0 TO Z-1
+300   PRINT C$(I);" ";
+310 NEXT I
+320 END
diff --git a/Task/Array-length/Chipmunk-Basic/array-length.basic b/Task/Array-length/Chipmunk-Basic/array-length.basic
new file mode 100644
index 0000000000..fdf8f61de3
--- /dev/null
+++ b/Task/Array-length/Chipmunk-Basic/array-length.basic
@@ -0,0 +1,5 @@
+10 dim fruta$(2)
+20 read fruta$(0),fruta$(1),fruta$(2)
+30 data "apple","orange","lemon"
+40 print "The length of the array 'fruit$' is ";ubound(fruta$)+1
+50 end
diff --git a/Task/Array-length/Nu/array-length.nu b/Task/Array-length/Nu/array-length.nu
new file mode 100644
index 0000000000..b782a8ba0f
--- /dev/null
+++ b/Task/Array-length/Nu/array-length.nu
@@ -0,0 +1 @@
+[apple orange] | length
diff --git a/Task/Array-length/XBasic/array-length.basic b/Task/Array-length/XBasic/array-length.basic
new file mode 100644
index 0000000000..1e8011a201
--- /dev/null
+++ b/Task/Array-length/XBasic/array-length.basic
@@ -0,0 +1,15 @@
+PROGRAM	"Array length"
+VERSION	"0.0000"
+
+DECLARE FUNCTION  Entry ()
+
+FUNCTION  Entry ()
+  DIM F$[2]
+  F$[0] = "apple"
+  F$[1] = "orange"
+  F$[2] = "pear"
+
+  PRINT "The length of the fruit array is "; UBOUND(F$[])
+  PRINT F$[1]
+END FUNCTION
+END PROGRAM
diff --git a/Task/Arrays/Nu/arrays.nu b/Task/Arrays/Nu/arrays.nu
new file mode 100644
index 0000000000..d8f01253e4
--- /dev/null
+++ b/Task/Arrays/Nu/arrays.nu
@@ -0,0 +1,16 @@
+let x = [1 2 3]
+
+print $x
+
+# Both are equivalent
+print $x.1 ($x | get 1)
+
+# Shadowing the original x
+let x = $x | append 4
+print $x
+
+# Using mut
+mut y = [a b c]
+print $y
+$y = $y | append d
+print $y
diff --git a/Task/Ascending-primes/J/ascending-primes.j b/Task/Ascending-primes/J/ascending-primes.j
index 8b54e1ce53..4981b8c3fb 100644
--- a/Task/Ascending-primes/J/ascending-primes.j
+++ b/Task/Ascending-primes/J/ascending-primes.j
@@ -1,16 +1 @@
-   extend=: {{ y;(1+each i._1+{.y),L:0 y }}
-   $(#~ 1 p: ])10#.&>([:~.@;extend each)^:# >:i.9
-100
-   10 10$(#~ 1 p: ])10#.&>([:~.@;extend each)^:# >:i.9
-     2      3     13     23       5       7      17      37       47       67
-   127    137    347    157     257     457     167     367      467     1237
-  2347   2357   3457   1367    2467    3467    1567    4567    12347    12457
- 13457  13567  23567 123457  124567      19      29      59       79       89
-   139    239    149    349     359     269     569     179      379      479
-   389   1249   1259   1459    2459    3469    1279    1579     2579     4679
-  1289   2389   1489   2689    5689    1789    2789    4789    23459    13469
- 12569  12379  12479  13679   34679   15679   25679   12589    34589    12689
- 23689  13789  23789 123479  124679  235679  145679  345679   234589   345689
-134789 125789 235789 245789 1245689 1234789 1235789 1456789 12356789 23456789
-   timex'(#~ 1 p: ])10#.&>([:~.@;extend each)^:# >:i.9'
-0.003818
+_10 ]\ /:~ (#~ 1&p:) 10&#.@I. #: i. 513
diff --git a/Task/Ascending-primes/Prolog/ascending-primes.pro b/Task/Ascending-primes/Prolog/ascending-primes.pro
new file mode 100644
index 0000000000..f9ec20f9ea
--- /dev/null
+++ b/Task/Ascending-primes/Prolog/ascending-primes.pro
@@ -0,0 +1,31 @@
+isPrime(2).
+isPrime(N):-
+	between(3, inf, N),
+	N /\ 1 > 0,             % odd
+	M is floor(sqrt(N)) - 1, % reverse 2*I+1
+	Max is M div 2,
+	forall(between(1, Max, I), N mod (2*I+1) > 0).
+
+combi(0, _, Num, Num).
+combi(N, [X|T], Acc, Num):-
+    N > 0,
+    N1 is N - 1,
+    Acc1 is Acc * 10 + X,
+    combi(N1, T, Acc1, Num).
+combi(N, [_|T], Acc, Num):-
+    N > 0,
+    combi(N, T, Acc, Num).
+
+ascPrimes(Num):-
+	between(1, 9, N),
+	combi(N, [1, 2, 3, 4, 5, 6, 7, 8, 9], 0, Num),
+	isPrime(Num).
+
+showList(List):-
+	findnsols(10, DPrim, (member(DPrim, List), writef('%9r', [DPrim])), _),
+	nl,
+	fail.
+showList(_).
+    	
+do:-findall(DPrim, ascPrimes(DPrim), DList),
+	showList(DList).
diff --git a/Task/Ascending-primes/Wren/ascending-primes-1.wren b/Task/Ascending-primes/Wren/ascending-primes-1.wren
index 325f469dfc..cbd2f6b62e 100644
--- a/Task/Ascending-primes/Wren/ascending-primes-1.wren
+++ b/Task/Ascending-primes/Wren/ascending-primes-1.wren
@@ -1,5 +1,4 @@
 import "./math" for Int
-import "./seq"  for Lst
 import "./fmt"  for Fmt
 
 var isAscending = Fn.new { |n|
@@ -23,4 +22,4 @@ var ascPrimes = []
 for (p in primes) if (isAscending.call(p)) ascPrimes.add(p)
 ascPrimes.addAll(higherPrimes)
 System.print("There are %(ascPrimes.count) ascending primes, namely:")
-for (chunk in Lst.chunks(ascPrimes, 10)) Fmt.print("$8d", chunk)
+Fmt.tprint("$8d", ascPrimes, 10)
diff --git a/Task/Ascending-primes/Wren/ascending-primes-2.wren b/Task/Ascending-primes/Wren/ascending-primes-2.wren
index 7de1343826..a7181e1854 100644
--- a/Task/Ascending-primes/Wren/ascending-primes-2.wren
+++ b/Task/Ascending-primes/Wren/ascending-primes-2.wren
@@ -1,6 +1,5 @@
 import "./set" for Set
 import "./math" for Int
-import "./seq" for Lst
 import "./fmt" for Fmt
 
 var ascPrimes = Set.new() // avoids duplicates
@@ -23,4 +22,4 @@ for (digits in 1..9) generate.call(1, 0, digits)
 ascPrimes = ascPrimes.toList
 ascPrimes.sort()
 System.print("There are %(ascPrimes.count) ascending primes, namely:")
-for (chunk in Lst.chunks(ascPrimes, 10)) Fmt.print("$8s", chunk)
+Fmt.tprint("$8d", ascPrimes, 10)
diff --git a/Task/Associative-array-Creation/EasyLang/associative-array-creation-1.easy b/Task/Associative-array-Creation/EasyLang/associative-array-creation-1.easy
deleted file mode 100644
index fe771b6d01..0000000000
--- a/Task/Associative-array-Creation/EasyLang/associative-array-creation-1.easy
+++ /dev/null
@@ -1 +0,0 @@
-associative$[][] = [ [ 1 "associative" ] [ 2 "arrays" ] ]
diff --git a/Task/Associative-array-Creation/EasyLang/associative-array-creation-2.easy b/Task/Associative-array-Creation/EasyLang/associative-array-creation-2.easy
deleted file mode 100644
index ca9d22211a..0000000000
--- a/Task/Associative-array-Creation/EasyLang/associative-array-creation-2.easy
+++ /dev/null
@@ -1,18 +0,0 @@
-proc indexAssoc index . array[][] item .
-   for i = 1 to len array[][]
-      if array[i][1] = index
-         item = array[i][2]
-         break 2
-      .
-   .
-   item = number "nan"
-.
-proc indexStrAssoc index$ . array$[][] item$ .
-   for i = 1 to len array$[][]
-      if array$[i][1] = index$
-         item$ = array$[i][2]
-         break 2
-      .
-   .
-   item$ = ""
-.
diff --git a/Task/Associative-array-Creation/EasyLang/associative-array-creation.easy b/Task/Associative-array-Creation/EasyLang/associative-array-creation.easy
new file mode 100644
index 0000000000..1081102416
--- /dev/null
+++ b/Task/Associative-array-Creation/EasyLang/associative-array-creation.easy
@@ -0,0 +1,24 @@
+# use array of array for this
+proc hashGet ind$ . ar$[][] item$ .
+   for i to len ar$[][]
+      if ar$[i][1] = ind$
+         item$ = ar$[i][2]
+         return
+      .
+   .
+   item$ = ""
+.
+proc hashSet ind$ val$ . ar$[][] .
+   for i to len ar$[][]
+      if ar$[i][1] = ind$
+         ar$[i][2] = val$
+         return
+      .
+   .
+.
+clothing$[][] = [ [ "type" "t-shirt" ] [ "color" "red" ] ]
+clothing$[][] &= [ "size" "xl" ]
+#
+hashSet "color" "green" clothing$[][]
+hashGet "color" clothing$[][] col$
+print col$
diff --git a/Task/Associative-array-Creation/Sidef/associative-array-creation.sidef b/Task/Associative-array-Creation/Sidef/associative-array-creation.sidef
index 34cb21492b..e6d95ed66f 100644
--- a/Task/Associative-array-Creation/Sidef/associative-array-creation.sidef
+++ b/Task/Associative-array-Creation/Sidef/associative-array-creation.sidef
@@ -1,7 +1,7 @@
-var hash = Hash.new(
+var hash = Hash(
     key1 => 'value1',
     key2 => 'value2',
-);
+)
 
 # Add a new key-value pair
-hash{:key3} = 'value3';
+hash{:key3} = 'value3'
diff --git a/Task/Associative-array-Iteration/EasyLang/associative-array-iteration.easy b/Task/Associative-array-Iteration/EasyLang/associative-array-iteration.easy
index 52a7e14c0f..aa836d3626 100644
--- a/Task/Associative-array-Iteration/EasyLang/associative-array-iteration.easy
+++ b/Task/Associative-array-Iteration/EasyLang/associative-array-iteration.easy
@@ -1,13 +1,5 @@
-associative$[][] = [ [ 1 "associative" ] [ 2 "arrays" ] ]
-print "Key-value pairs:"
-for i = 1 to len associative$[][]
-   print associative$[i][1] & " " & associative$[i][2]
-.
-print "Just keys:"
-for i = 1 to len associative$[][]
-   print associative$[i][1]
-.
-print "Just values:"
-for i = 1 to len associative$[][]
-   print associative$[i][2]
+# use array of array for this
+clothing$[][] = [ [ "type" "t-shirt" ] [ "color" "red" ] [ "size" "xl" ] ]
+for i to len clothing$[][]
+   print clothing$[i][1] & ": " & clothing$[i][2]
 .
diff --git a/Task/Associative-array-Iteration/Sidef/associative-array-iteration.sidef b/Task/Associative-array-Iteration/Sidef/associative-array-iteration.sidef
index 09f5304311..830f87fb6c 100644
--- a/Task/Associative-array-Iteration/Sidef/associative-array-iteration.sidef
+++ b/Task/Associative-array-Iteration/Sidef/associative-array-iteration.sidef
@@ -1,19 +1,19 @@
-var hash = Hash.new(
+var hash = Hash(
     key1 => 'value1',
     key2 => 'value2',
 )
 
 # Iterate over key-value pairs
 hash.each { |key, value|
-    say "#{key}: #{value}";
+    say "#{key}: #{value}"
 }
 
 # Iterate only over keys
 hash.keys.each { |key|
-    say key;
+    say key
 }
 
 # Iterate only over values
 hash.values.each { |value|
-    say value;
+    say value
 }
diff --git a/Task/Atomic-updates/Wren/atomic-updates.wren b/Task/Atomic-updates/Wren/atomic-updates.wren
index 5795fad20b..7fa165ac56 100644
--- a/Task/Atomic-updates/Wren/atomic-updates.wren
+++ b/Task/Atomic-updates/Wren/atomic-updates.wren
@@ -1,7 +1,7 @@
 import "random" for Random
 import "scheduler" for Scheduler
 import "timer" for Timer
-import "/math" for Nums
+import "./math" for Nums
 
 var Rnd = Random.new()
 
diff --git a/Task/Attractive-numbers/MiniScript/attractive-numbers.mini b/Task/Attractive-numbers/MiniScript/attractive-numbers.mini
new file mode 100644
index 0000000000..dae9378ff0
--- /dev/null
+++ b/Task/Attractive-numbers/MiniScript/attractive-numbers.mini
@@ -0,0 +1,32 @@
+isPrime = function(n)
+	if n < 2 then return false
+	if n < 4 then return true
+	for i in range(2,floor(n ^ 0.5))
+		if n % i == 0 then return false
+	end for
+	return true
+end function
+
+countFactors = function(n)
+	cnt = 0
+	for i in range(2, n)
+		while n % i == 0
+			cnt += 1
+			n /= i
+		end while
+	end for
+	return cnt
+end function
+
+isAttractive = function(n)
+	if n < 1 then return false
+	factorCnt = countFactors(n)
+	return isPrime(factorCnt)
+end function
+
+numbers = []
+for i in range(2, 120)
+	if isAttractive(i) then numbers.push(i)
+end for
+
+print numbers.join(", ")
diff --git a/Task/Attractive-numbers/SETL/attractive-numbers.setl b/Task/Attractive-numbers/SETL/attractive-numbers.setl
new file mode 100644
index 0000000000..5e2b38f811
--- /dev/null
+++ b/Task/Attractive-numbers/SETL/attractive-numbers.setl
@@ -0,0 +1,28 @@
+program attractive_numbers;
+    numbers := [n in [2..120] | attractive(n)];
+    printtab(numbers, 20, 3);
+
+    proc printtab(list, cols, width);
+        lines := [list(k..cols+k-1) : k in [1, cols+1..#list]];
+        loop for line in lines do
+            print(+/[lpad(str item, width+1) : item in line]);
+        end loop;
+    end proc;
+
+    proc attractive(n);
+        return #factorize(#factorize(n)) = 1;
+    end proc;
+
+    proc factorize(n);
+        factors := [];
+        d := 2;
+        loop until d > n do
+            loop while n mod d = 0 do
+                factors with:= d;
+                n div:= d;
+            end loop;
+            d +:= 1;
+        end loop;
+        return factors;
+    end proc;
+end program;
diff --git a/Task/Attractive-numbers/Wren/attractive-numbers.wren b/Task/Attractive-numbers/Wren/attractive-numbers.wren
index 531a897979..86756803dd 100644
--- a/Task/Attractive-numbers/Wren/attractive-numbers.wren
+++ b/Task/Attractive-numbers/Wren/attractive-numbers.wren
@@ -1,5 +1,5 @@
-import "/fmt" for Fmt
-import "/math" for Int
+import "./fmt" for Fmt
+import "./math" for Int
 
 var max = 120
 System.print("The attractive numbers up to and including %(max) are:")
@@ -7,7 +7,7 @@ var count = 0
 for (i in 1..max) {
     var n = Int.primeFactors(i).count
     if (Int.isPrime(n)) {
-        System.write(Fmt.d(4, i))
+        Fmt.write("$4d", i)
         count = count + 1
         if (count%20 == 0) System.print()
     }
diff --git a/Task/Averages-Arithmetic-mean/Sidef/averages-arithmetic-mean.sidef b/Task/Averages-Arithmetic-mean/Sidef/averages-arithmetic-mean.sidef
index cb65d428f5..b76c9576df 100644
--- a/Task/Averages-Arithmetic-mean/Sidef/averages-arithmetic-mean.sidef
+++ b/Task/Averages-Arithmetic-mean/Sidef/averages-arithmetic-mean.sidef
@@ -1,10 +1,10 @@
 func avg(Array list) {
-    list.len > 0 || return 0;
-    list.sum / list.len;
+    list.len > 0 || return 0
+    list.sum / list.len
 }
 
-say avg([Math.inf, Math.inf]);
-say avg([3,1,4,1,5,9]);
-say avg([1e+20, 3, 1, 4, 1, 5, 9, -1e+20]);
-say avg([10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 0, 0, 0, 0.11]);
-say avg([10, 20, 30, 40, 50, -100, 4.7, -1100]);
+say avg([Inf, Inf])
+say avg([3,1,4,1,5,9])
+say avg([1e+20, 3, 1, 4, 1, 5, 9, -1e+20])
+say avg([10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 0, 0, 0, 0.11])
+say avg([10, 20, 30, 40, 50, -100, 4.7, -1100])
diff --git a/Task/Averages-Mean-angle/MiniScript/averages-mean-angle.mini b/Task/Averages-Mean-angle/MiniScript/averages-mean-angle.mini
new file mode 100644
index 0000000000..b76c784fce
--- /dev/null
+++ b/Task/Averages-Mean-angle/MiniScript/averages-mean-angle.mini
@@ -0,0 +1,22 @@
+atan2 = function(y, x)
+	return 2 * atan((sqrt(x^2 + y^2) - x) / y)
+end function
+
+deg2rad = function(x); return x * pi / 180; end function
+rad2deg = function(x); return x * 180 / pi; end function
+
+meanAngle = function(angles)
+	xsum = 0; ysum = 0
+	for angle in angles
+		xsum += cos(deg2rad(angle))
+		ysum += sin(deg2rad(angle))
+	end for
+	return rad2deg(atan2(ysum / angles.len, xsum / angles.len))
+end function
+
+manyAngledOnes = [[350, 10], [90, 180, 270, 360], [10, 20, 30]]
+
+for angles in manyAngledOnes
+	mean = meanAngle(angles)
+	print ["Mean of", angles, "is", mean].join(" ")
+end for
diff --git a/Task/Averages-Mean-angle/Wren/averages-mean-angle.wren b/Task/Averages-Mean-angle/Wren/averages-mean-angle.wren
index 92725a13e4..513c71a757 100644
--- a/Task/Averages-Mean-angle/Wren/averages-mean-angle.wren
+++ b/Task/Averages-Mean-angle/Wren/averages-mean-angle.wren
@@ -1,4 +1,4 @@
-import "/fmt" for Fmt
+import "./fmt" for Fmt
 
 var meanAngle = Fn.new { |angles|
     var n = angles.count
diff --git a/Task/Averages-Mean-time-of-day/Wren/averages-mean-time-of-day.wren b/Task/Averages-Mean-time-of-day/Wren/averages-mean-time-of-day.wren
index d7abcb5775..7ff2fccee8 100644
--- a/Task/Averages-Mean-time-of-day/Wren/averages-mean-time-of-day.wren
+++ b/Task/Averages-Mean-time-of-day/Wren/averages-mean-time-of-day.wren
@@ -1,4 +1,4 @@
-import "/fmt" for Fmt
+import "./fmt" for Fmt
 
 var timeToDegs = Fn.new { |time|
     var t = time.split(":")
@@ -15,7 +15,7 @@ var degsToTime = Fn.new { |d|
     var m = s % 3600
     s = m % 60
     m = (m / 60).floor
-    return "%(Fmt.d(2, h)):%(Fmt.d(2, m)):%(Fmt.d(2, s))"
+    return Fmt.swrite("$2d:$2d:$2d", h, m, s)
 }
 
 var meanAngle = Fn.new { |angles|
diff --git a/Task/Averages-Median/Amazing-Hopper/averages-median.hopper b/Task/Averages-Median/Amazing-Hopper/averages-median.hopper
new file mode 100644
index 0000000000..218e76b487
--- /dev/null
+++ b/Task/Averages-Median/Amazing-Hopper/averages-median.hopper
@@ -0,0 +1,29 @@
+#include 
+
+#proto  cálculodemediana(_X_)
+#synon  _cálculodemediana   obtenermedianade
+
+algoritmo
+
+    decimales '2'
+    matrices 'a,b'
+    '4.1, 5.6, 7.2, 1.7, 9.3, 4.4, 3.2', enlistar en 'a'
+    '4.1, 7.2, 1.7, 9.3, 4.4, 3.2', enlistar en 'b'
+
+    arr.ordenar 'a'
+    arr.ordenar 'b'
+    "A=",a,NL,"Median: ", obtener mediana de 'a', NL
+    "B=",b,NL,"Median: ", obtener mediana de 'b', NL
+    finalmente imprime
+
+terminar
+
+subrutinas
+
+cálculo de mediana (x)
+
+    dx=0
+    filas de 'x' ---copiar en 'dx'---
+    calcular si ( es par?, #( (x[ (dx/2) ]+x[ (dx/2)+1 ])/2 ),\
+                           #( x[ dx/2+1 ] ) )
+retornar
diff --git a/Task/Averages-Median/Wren/averages-median.wren b/Task/Averages-Median/Wren/averages-median.wren
index 97768cd156..975b188ee1 100644
--- a/Task/Averages-Median/Wren/averages-median.wren
+++ b/Task/Averages-Median/Wren/averages-median.wren
@@ -1,6 +1,6 @@
-import "/sort" for Sort, Find
-import "/math" for Nums
-import "/queue" for PriorityQueue
+import "./sort" for Sort, Find
+import "./math" for Nums
+import "./queue" for PriorityQueue
 
 var lists = [
     [5, 3, 4],
diff --git a/Task/Averages-Mode/EasyLang/averages-mode.easy b/Task/Averages-Mode/EasyLang/averages-mode.easy
new file mode 100644
index 0000000000..5824a333b4
--- /dev/null
+++ b/Task/Averages-Mode/EasyLang/averages-mode.easy
@@ -0,0 +1,25 @@
+proc modes . in[] r[] .
+   r[] = [ ]
+   for v in in[]
+      for i to len vals[]
+         if v = vals[i]
+            cnt[i] += 1
+            max = higher cnt[i] max
+            break 1
+         .
+      .
+      vals[] &= v
+      cnt[] &= 0
+   .
+   for i to len cnt[]
+      if cnt[i] = max
+         r[] &= vals[i]
+      .
+   .
+.
+in[] = [ 1 3 6 6 6 6 7 7 12 12 17 ]
+modes in[] mods[]
+print mods[]
+in[] = [ 1 1 2 4 4 ]
+modes in[] mods[]
+print mods[]
diff --git a/Task/Averages-Pythagorean-means/BQN/averages-pythagorean-means.bqn b/Task/Averages-Pythagorean-means/BQN/averages-pythagorean-means.bqn
new file mode 100644
index 0000000000..60b113f67b
--- /dev/null
+++ b/Task/Averages-Pythagorean-means/BQN/averages-pythagorean-means.bqn
@@ -0,0 +1,5 @@
+A ← +´÷≠
+G ← ≠√×´
+H ← A⌾÷
+
+⋈⟜(∧´ ¯1⊸↓ ≥ 1⊸↓) (A∾G∾H) 1+↕10
diff --git a/Task/Averages-Pythagorean-means/EasyLang/averages-pythagorean-means.easy b/Task/Averages-Pythagorean-means/EasyLang/averages-pythagorean-means.easy
new file mode 100644
index 0000000000..3c7c1af491
--- /dev/null
+++ b/Task/Averages-Pythagorean-means/EasyLang/averages-pythagorean-means.easy
@@ -0,0 +1,16 @@
+proc mean . v[] a g h .
+   prod = 1
+   for v in v[]
+      sum += v
+      prod *= v
+      resum += 1 / v
+   .
+   a = sum / len v[]
+   g = pow prod (1 / len v[])
+   h = len v[] / resum
+.
+a[] = [ 1 2 3 4 5 6 7 8 9 10 ]
+mean a[] a g h
+print a
+print g
+print h
diff --git a/Task/Averages-Simple-moving-average/EasyLang/averages-simple-moving-average.easy b/Task/Averages-Simple-moving-average/EasyLang/averages-simple-moving-average.easy
new file mode 100644
index 0000000000..e9bdc2bb67
--- /dev/null
+++ b/Task/Averages-Simple-moving-average/EasyLang/averages-simple-moving-average.easy
@@ -0,0 +1,29 @@
+prefix sma_
+global p[] ind[] sum[] smpl[][] .
+func new p .
+   p[] &= p
+   ind[] &= 0
+   sum[] &= 0
+   smpl[][] &= [ ]
+   return len p[]
+.
+func get id x .
+   ind[id] = (ind[id] + 1) mod1 p[id]
+   ind = ind[id]
+   if len smpl[id][] < ind
+      len smpl[id][] ind
+   else
+      sum[id] -= smpl[id][ind]
+   .
+   sum[id] += x
+   smpl[id][ind] = x
+   return sum[id] / len smpl[id][]
+.
+prefix
+#
+sma5 = sma_new 5
+sma3 = sma_new 3
+numfmt 2 4
+for v in [ 1 2 3 4 5 5 4 3 2 1 ]
+   print sma_get sma3 v & "  " & sma_get sma5 v
+.
diff --git a/Task/Averages-Simple-moving-average/Wren/averages-simple-moving-average.wren b/Task/Averages-Simple-moving-average/Wren/averages-simple-moving-average.wren
index 9d64ceec6a..1fef0db113 100644
--- a/Task/Averages-Simple-moving-average/Wren/averages-simple-moving-average.wren
+++ b/Task/Averages-Simple-moving-average/Wren/averages-simple-moving-average.wren
@@ -1,4 +1,4 @@
-import "/fmt" for Fmt
+import "./fmt" for Fmt
 
 var sma = Fn.new { |period|
     var i = 0
@@ -21,5 +21,5 @@ var sma5 = sma.call(5)
 System.print("  x     sma3   sma5")
 for (x in [1, 2, 3, 4, 5, 5, 4, 3, 2, 1]) {
     Fmt.precision = 3
-    System.print("%(Fmt.f(5, x))  %(Fmt.f(5, sma3.call(x)))  %(Fmt.f(5, sma5.call(x)))")
+    Fmt.print("$5f  $5f  $5f", x, sma3.call(x), sma5.call(x))
 }
diff --git a/Task/B-zier-curves-Intersections/Julia/b-zier-curves-intersections.julia b/Task/B-zier-curves-Intersections/Julia/b-zier-curves-intersections.julia
new file mode 100644
index 0000000000..2838e00692
--- /dev/null
+++ b/Task/B-zier-curves-Intersections/Julia/b-zier-curves-intersections.julia
@@ -0,0 +1,131 @@
+#= The control points of a planar quadratic Bézier curve form a
+   triangle--called the "control polygon"--that completely contains
+   the curve. Furthermore, the rectangle formed by the minimum and
+   maximum x and y values of the control polygon completely contain
+   the polygon, and therefore also the curve.
+
+   Thus a simple method for narrowing down where intersections might
+   be is: subdivide both curves until you find "small enough" regions
+   where these rectangles overlap.
+=#
+
+mutable struct Point
+    x::Float64
+    y::Float64
+    Point() = new(0, 0)
+end
+
+mutable struct QuadSpline # Non-parametric spline.
+    c0::Float64
+    c1::Float64
+    c2::Float64
+    QuadSpline(a = 0.0, b = 0.0, c = 0.0) = new(a, b, c)
+end
+
+mutable struct QuadCurve # Planar parametric spline.
+    x::QuadSpline
+    y::QuadSpline
+    QuadCurve(x = QuadSpline(), y = QuadSpline()) = new(x, y)
+end
+
+const Workset = Tuple{QuadCurve, QuadCurve}
+
+""" Subdivision by de Casteljau's algorithm. """
+function subdivide!(q::QuadSpline, t::Float64, u::QuadSpline, v::QuadSpline)
+    s = 1.0 - t
+    c0 = q.c0
+    c1 = q.c1
+    c2 = q.c2
+    u.c0 = c0
+    v.c2 = c2
+    u.c1 = s*c0 + t*c1
+    v.c1 = s*c1 + t*c2
+    u.c2 = s*u.c1 + t*v.c1
+    v.c0 = u.c2
+end
+
+function subdivide!(q::QuadCurve, t::Float64, u::QuadCurve, v::QuadCurve)
+    subdivide!(q.x, t, u.x, v.x)
+    subdivide!(q.y, t, u.y, v.y)
+end
+
+""" It is assumed that xa0 <= xa1, ya0 <= ya1, xb0 <= xb1, and yb0 <= yb1. """
+function rectsoverlap(xa0, ya0, xa1, ya1, xb0, yb0, xb1, yb1)
+    return xb0 <= xa1 && xa0 <= xb1 && yb0 <= ya1 && ya0 <= yb1
+end
+
+""" This accepts the point as an intersection if the boxes are small enough. """
+function testintersect(p::QuadCurve, q::QuadCurve, tol::Float64, intersect::Point)
+    pxmin = min(p.x.c0, p.x.c1, p.x.c2)
+    pymin = min(p.y.c0, p.y.c1, p.y.c2)
+    pxmax = max(p.x.c0, p.x.c1, p.x.c2)
+    pymax = max(p.y.c0, p.y.c1, p.y.c2)
+
+    qxmin = min(q.x.c0, q.x.c1, q.x.c2)
+    qymin = min(q.y.c0, q.y.c1, q.y.c2)
+    qxmax = max(q.x.c0, q.x.c1, q.x.c2)
+    qymax = max(q.y.c0, q.y.c1, q.y.c2)
+
+    exclude = true
+    accept = false
+    if rectsoverlap(pxmin, pymin, pxmax, pymax, qxmin, qymin, qxmax, qymax)
+        exclude = false
+        xmin = max(pxmin, qxmin)
+        xmax = min(pxmax, pxmax)
+        @assert xmin < xmax "Assertion failure: $xmax < $xmin"
+        if xmax-xmin <= tol
+            ymin = max(pymin, qymin)
+            ymax = min(pymax, qymax)
+            @assert ymin < ymax "Assertion failure: $ymax < $ymin"
+            if ymax-ymin <= tol
+                accept = true
+                intersect.x = 0.5*xmin + 0.5*xmax
+                intersect.y = 0.5*ymin + 0.5*ymax
+            end
+        end
+    end
+    return exclude, accept
+end
+
+""" return true if there seems to be a duplicate of xy in the intersects `isects` """
+seemsduplicate(isects, xy, sp) = any(p -> abs(p.x-xy.x) < sp && abs(p.y-xy.y) < sp, isects)
+
+""" find intersections of p and q """
+function findintersects(p, q, tol, spacing)
+    intersects = Point[]
+    workload = Workset[(p, q)]
+    while !isempty(workload)
+        work = popfirst!(workload)
+        intersect = Point()
+        exclude, accept = testintersect(first(work), last(work), tol, intersect)
+        if accept
+            # To avoid detecting the same intersection twice, require some
+            # space between intersections.
+            if !seemsduplicate(intersects, intersect, spacing)
+                pushfirst!(intersects, intersect)
+            end
+        elseif !exclude
+            p0, p1, q0, q1 = QuadCurve(), QuadCurve(), QuadCurve(), QuadCurve()
+            subdivide!(first(work), 0.5, p0, p1)
+            subdivide!(last(work), 0.5, q0, q1)
+            pushfirst!(workload, (p0, q0), (p0, q1), (p1, q0), (p1, q1))
+        end
+    end
+    return intersects
+end
+
+""" test the methods """
+function testintersections()
+    p, q = QuadCurve(), QuadCurve()
+    p.x = QuadSpline(-1.0, 0.0, 1.0)
+    p.y = QuadSpline(0.0, 10.0, 0.0)
+    q.x = QuadSpline(2.0, -8.0, 2.0)
+    q.y = QuadSpline(1.0, 2.0, 3.0)
+    tol = 0.0000001
+    spacing = tol * 10
+    for intersect in findintersects(p, q, tol, spacing)
+        println("($(intersect.x) $(intersect.y))")
+    end
+end
+
+testintersections()
diff --git a/Task/B-zier-curves-Intersections/Raku/b-zier-curves-intersections.raku b/Task/B-zier-curves-Intersections/Raku/b-zier-curves-intersections.raku
new file mode 100644
index 0000000000..22c850b83d
--- /dev/null
+++ b/Task/B-zier-curves-Intersections/Raku/b-zier-curves-intersections.raku
@@ -0,0 +1,94 @@
+# 20231025 Raku programming solution
+
+class Point { has ($.x, $.y) is rw is default(0) }
+
+class QuadSpline { has ($.c0, $.c1, $.c2) is rw is default(0) }
+
+class QuadCurve { has QuadSpline ($.x, $.y) is rw }
+
+class Workset { has QuadCurve ($.p, $.q) }
+
+sub subdivideQuadSpline($q, $t) {
+   my $s = 1.0 - $t;
+   my ($c0,$c1,$c2) = do given $q { .c0, .c1, .c2 };
+   my $u_c1 = $s*$c0 + $t*$c1;
+   my $v_c1 = $s*$c1 + $t*$c2;
+   my $u_c2 = $s*$u_c1 + $t*$v_c1;
+   return ($c0, $u_c1, $u_c2), ($u_c2, $v_c1, $c2)
+}
+
+sub subdivideQuadCurve($q, $t, $u is rw, $v is rw) {
+   with (subdivideQuadSpline($q.x,$t),subdivideQuadSpline($q.y,$t))».List.flat {
+      $u=QuadCurve.new(x => QuadSpline.new(c0 => .[0],c1 => .[1],c2 => .[2]),
+                       y => QuadSpline.new(c0 => .[6],c1 => .[7],c2 => .[8]));
+      $v=QuadCurve.new(x => QuadSpline.new(c0 => .[3],c1 => .[4],c2 => .[5]),
+                       y => QuadSpline.new(c0 => .[9],c1 => .[10],c2 => .[11]))
+   }
+}
+
+sub seemsToBeDuplicate(@intersects, $xy, $spacing) {
+   my $seemsToBeDup = False;
+   for @intersects {
+      $seemsToBeDup = abs(.x - $xy.x) < $spacing && abs(.y - $xy.y) < $spacing;
+      last if $seemsToBeDup;
+   }
+   return $seemsToBeDup;
+}
+
+sub rectsOverlap($xa0, $ya0, $xa1, $ya1, $xb0, $yb0, $xb1, $yb1) {
+   return $xb0 <= $xa1 && $xa0 <= $xb1 && $yb0 <= $ya1 && $ya0 <= $yb1
+}
+
+sub testIntersect($p,$q,$tol,$exclude is rw,$accept is rw,$intersect is rw) {
+   my $pxmin = min($p.x.c0, $p.x.c1, $p.x.c2);
+   my $pymin = min($p.y.c0, $p.y.c1, $p.y.c2);
+   my $pxmax = max($p.x.c0, $p.x.c1, $p.x.c2);
+   my $pymax = max($p.y.c0, $p.y.c1, $p.y.c2);
+   my $qxmin = min($q.x.c0, $q.x.c1, $q.x.c2);
+   my $qymin = min($q.y.c0, $q.y.c1, $q.y.c2);
+   my $qxmax = max($q.x.c0, $q.x.c1, $q.x.c2);
+   my $qymax = max($q.y.c0, $q.y.c1, $q.y.c2);
+   ($exclude, $accept) = True, False;
+
+   if rectsOverlap($pxmin,$pymin,$pxmax,$pymax,$qxmin,$qymin,$qxmax,$qymax) {
+      $exclude = False;
+      my ($xmin,$xmax) = max($pxmin, $qxmin), min($pxmax, $pxmax);
+      if ($xmax < $xmin) { die "Assertion failure: $xmax < $xmin\n" }
+      my ($ymin,$ymax) = max($pymin, $qymin), min($pymax, $qymax);
+      if ($ymax < $ymin) { die "Assertion failure: $ymax < $ymin\n" }
+      if $xmax - $xmin <= $tol and $ymax - $ymin <= $tol {
+         $accept = True;
+         given $intersect { (.x, .y) = 0.5 X* $xmin+$xmax, $ymin+$ymax }
+      }
+   }
+}
+
+sub find-intersects($p, $q, $tol, $spacing) {
+   my Point @intersects;
+   my @workload = Workset.new(p => $p, q => $q);
+
+   while my $work = @workload.pop {
+      my ($intersect,$exclude,$accept) = Point.new, False, False;
+      testIntersect($work.p, $work.q, $tol, $exclude, $accept, $intersect);
+      if $accept {
+         unless seemsToBeDuplicate(@intersects, $intersect, $spacing) {
+            @intersects.push: $intersect;
+         }
+      } elsif not $exclude {
+         my QuadCurve ($p0, $p1, $q0, $q1);
+         subdivideQuadCurve($work.p, 0.5, $p0, $p1);
+         subdivideQuadCurve($work.q, 0.5, $q0, $q1);
+         for $p0, $p1 X $q0, $q1 {
+            @workload.push: Workset.new(p => .[0], q => .[1])
+         }
+      }
+   }
+   return @intersects;
+}
+
+my $p = QuadCurve.new( x => QuadSpline.new(c0 => -1.0,c1 =>  0.0,c2 => 1.0),
+                       y => QuadSpline.new(c0 =>  0.0,c1 => 10.0,c2 => 0.0));
+my $q = QuadCurve.new( x => QuadSpline.new(c0 =>  2.0,c1 => -8.0,c2 => 2.0),
+                       y => QuadSpline.new(c0 =>  1.0,c1 =>  2.0,c2 => 3.0));
+my $spacing = ( my $tol = 0.0000001 ) * 10;
+.say for find-intersects($p, $q, $tol, $spacing);
diff --git a/Task/Babbage-problem/Amazing-Hopper/babbage-problem.hopper b/Task/Babbage-problem/Amazing-Hopper/babbage-problem.hopper
new file mode 100644
index 0000000000..97b1747335
--- /dev/null
+++ b/Task/Babbage-problem/Amazing-Hopper/babbage-problem.hopper
@@ -0,0 +1,13 @@
+#include 
+
+algoritmo
+    decimales '0'
+    número = 0, i=10
+    ciclo:
+        iterar grupo( número+=2, \
+                      #( (número^2) % 1000000 != 269696 ), ; )
+        imprimir ("The smallest number whose square ends in 269696 is: ",\
+                  número,\
+                  "\nIt's square is: ", #(número ^ 2), NL )
+    i--, jnz(ciclo)
+terminar
diff --git a/Task/Babbage-problem/Julia/babbage-problem.julia b/Task/Babbage-problem/Julia/babbage-problem.julia
index c2934aafd0..567a96e166 100644
--- a/Task/Babbage-problem/Julia/babbage-problem.julia
+++ b/Task/Babbage-problem/Julia/babbage-problem.julia
@@ -1,8 +1,13 @@
+"""
+    babbage(x::Integer)
+
+    Returns the smallest positive integer whose square ends in `x`
+"""
 function babbage(x::Integer)
-  i = big(0)
-  d = floor(log10(x)) + 1
-  while i ^ 2 % 10 ^ d != x
-    i += 1
+  i = big(0)   # start with 0 and increase by 1 until target reaached
+  d = 10^ndigits(x)  # smallest power of 10 greater than x
+  while (i * i) % d != x
+    i += 1  # try next squre of numbers 0, 1, 2, ...
   end
   return i
 end
diff --git a/Task/Babbage-problem/Maxima/babbage-problem.maxima b/Task/Babbage-problem/Maxima/babbage-problem.maxima
new file mode 100644
index 0000000000..664c8b9e40
--- /dev/null
+++ b/Task/Babbage-problem/Maxima/babbage-problem.maxima
@@ -0,0 +1,14 @@
+/* Function that returns a list of digits given a nonnegative integer */
+decompose(num) := block([digits, remainder],
+  digits: [],
+  while num > 0 do
+   (remainder: mod(num, 10),
+    digits: cons(remainder, digits),
+    num: floor(num/10)),
+  digits
+)$
+
+/* Test case */
+block(babbage_param:269696,i:isqrt(babbage_param)+1,cache_babbage:decompose(babbage_param),
+    while rest(decompose(i^2),(length(decompose(i^2))-6))#cache_babbage do i:i+2,
+    i);
diff --git a/Task/Babbage-problem/Raku/babbage-problem-1.raku b/Task/Babbage-problem/Raku/babbage-problem-1.raku
index e85c5a330e..b7e95d7dd6 100644
--- a/Task/Babbage-problem/Raku/babbage-problem-1.raku
+++ b/Task/Babbage-problem/Raku/babbage-problem-1.raku
@@ -1,4 +1,4 @@
-# For all positives integers from 1 to Infinity
+# For all positive integers from 1 to Infinity
 for 1 .. Inf -> $integer {
 
     # calculate the square of the integer
diff --git a/Task/Babbage-problem/S-BASIC/babbage-problem.basic b/Task/Babbage-problem/S-BASIC/babbage-problem.basic
new file mode 100644
index 0000000000..a38abab039
--- /dev/null
+++ b/Task/Babbage-problem/S-BASIC/babbage-problem.basic
@@ -0,0 +1,32 @@
+$lines
+
+$constant true = FFFFH
+$constant false = 0
+
+var n, sq, r = real.double
+var done = integer
+
+print "Finding smallest number whose square ends in 269696"
+
+n = 520    rem - no smaller number has a square that large
+done = false
+
+rem - no need to search beyond the number Babbage already knew
+while not done and n <= 99736.0 do
+  begin
+    sq = n * n
+    rem - compute sq mod 1000000 by repeated subtraction
+    r = sq
+    while r >= 1000000.0 do
+      r = r - 1000000.0
+    if r = 269696.0 then
+      begin
+        print using "The smallest number is ######"; n
+        print using "and its square is ##,###,###,###"; sq
+        done = true
+      end
+    rem - only even numbers can have a square ending in 6
+    n = n + 2
+  end
+
+end
diff --git a/Task/Babbage-problem/Vedit-macro-language/babbage-problem.vedit b/Task/Babbage-problem/Vedit-macro-language/babbage-problem.vedit
new file mode 100644
index 0000000000..dec48f7b81
--- /dev/null
+++ b/Task/Babbage-problem/Vedit-macro-language/babbage-problem.vedit
@@ -0,0 +1,25 @@
+// Vedit Macro Language stores numerical values in numeric registers,
+// referred as #0 to #255.
+
+// Check all positive integer values until the required value found
+for (#1 = 1; #1 < MAXNUM; #1++) {
+
+    #2 = #1 * #1		// #2 = square of the value
+
+  // The operator % is the modulo operator (the remainder of division).
+  // Modulo 1000000 gives the last 6 digits of a value.
+    #3 = #2 % 1000000
+
+    if (#3 == 269696) {
+        break			// We found it, lets stop here
+    }
+}
+
+if (#1 < MAXNUM) {
+    Message("The smallest number whose square ends in 269696 is ", NOCR)
+    Num_Type(#1)
+    Message("The square is ", NOCR)
+    Num_Type(#2)
+} else {
+    Message("Condition not satisfied before MAXNUM reached.)
+}
diff --git a/Task/Babbage-problem/Wren/babbage-problem.wren b/Task/Babbage-problem/Wren/babbage-problem.wren
index 473185a45c..37bb4a1dbf 100644
--- a/Task/Babbage-problem/Wren/babbage-problem.wren
+++ b/Task/Babbage-problem/Wren/babbage-problem.wren
@@ -4,7 +4,7 @@
     However, we can skip numbers which don't end in 4 or 6 as their squares can't end in 6.
 */
 
-import "/fmt" for Fmt                // this enables us to format numbers with thousand separators
+import "./fmt" for Fmt                // this enables us to format numbers with thousand separators
 var start = 269696.sqrt.ceil         // get the next integer higher than (or equal to) the square root
 start = (start/2).ceil * 2           // if it's odd, use the next even integer
 var i = start                        // assign it to a variable 'i' for use in the following loop
diff --git a/Task/Balanced-brackets/Amazing-Hopper/balanced-brackets.hopper b/Task/Balanced-brackets/Amazing-Hopper/balanced-brackets.hopper
new file mode 100644
index 0000000000..f6b54bdf9b
--- /dev/null
+++ b/Task/Balanced-brackets/Amazing-Hopper/balanced-brackets.hopper
@@ -0,0 +1,41 @@
+#include 
+
+algoritmo
+
+   braizq="[", brader="]" // bug de Hopper :(
+
+   largo de datos=0
+   preparar datos (DATA_BRACKET)
+   obtener tamaño de datos, menos '1', guardar en 'largo de datos'
+
+   iterar
+
+        bra="", obtener dato, guardar en 'bra'
+
+        i=1, b=0, error_pos=""
+        iterar grupo( ++i, #( i<=len(bra) && is not neg (b) ),\
+               #( b += ((bra[i]==braizq) - (bra[i]==brader)) )\
+               #( error_pos = cat(replicate(" ",i-1),"^\n") ) )
+
+        solo si ( #(is pos(b)),\
+             #( error_pos=cat(cat(" ",error_pos),"(missing closed bracket)\n\n")))
+
+        solo si ( #(is neg(b)),\
+             #( error_pos=cat(error_pos,"(extra closed bracket)\n\n")))
+
+        imprimir ( #( rpad(" ",40,bra) ), ": ", \
+                   solo si (b, "un"), "balanced\n",\
+                   solo si (b, error_pos) )
+
+   mientras ' largo de datos-- '
+
+terminar
+
+subrutinas
+
+DATA_BRACKET:
+   datos ("","[ [ ] [ [[] ][] ] [[]] ]","[[ ][[[ ][ ]]",\
+          "[][][[]]][","][[]][] [[[]]] [][]","[][]  [][][[]]",\
+          "[ a-b * [c/d] + [[10 * sin 30 ]-1] ]",\
+          "[ a-b * [c/d] + [[10 * sin 30 ]]-1] ]")
+back
diff --git a/Task/Balanced-brackets/EasyLang/balanced-brackets.easy b/Task/Balanced-brackets/EasyLang/balanced-brackets.easy
new file mode 100644
index 0000000000..9568368ca7
--- /dev/null
+++ b/Task/Balanced-brackets/EasyLang/balanced-brackets.easy
@@ -0,0 +1,29 @@
+func balanced code$ .
+   for i to len code$
+      h$ = substr code$ i 1
+      if h$ = "["
+         br += 1
+      elif h$ = "]"
+         br -= 1
+      .
+      if br < 0
+         return 0
+      .
+   .
+   return if br = 0
+.
+repeat
+   inp$ = input
+   until inp$ = "eof"
+   print inp$ & "\t" & balanced inp$
+.
+#
+input_data
+
+[]
+[][]
+[[][]]
+][
+][][
+[]][[]
+eof
diff --git a/Task/Balanced-brackets/MSX-Basic/balanced-brackets.basic b/Task/Balanced-brackets/MSX-Basic/balanced-brackets.basic
new file mode 100644
index 0000000000..f1ede266a3
--- /dev/null
+++ b/Task/Balanced-brackets/MSX-Basic/balanced-brackets.basic
@@ -0,0 +1,20 @@
+100 CLS : rem  10 HOME for Applesoft BASIC
+110 FOR N = 1 TO 7
+120   READ S$
+130   IF S$ = "" THEN PRINT"(EMPTY)";: GOTO 150
+140   PRINT S$;
+150   PRINT TAB(9);
+160   GOSUB 190
+170 NEXT N
+180 END
+190 S = 0
+200 FOR K = 1 TO LEN(S$)
+210   C$ = MID$(S$,K,1)
+220   IF C$ = "[" THEN S = S+1
+230   IF C$ = "]" THEN S = S-1
+240   IF S < 0 THEN PRINT "NOT OK": RETURN
+250 NEXT K
+260 IF S = 0 THEN PRINT "  OK": RETURN
+270 PRINT "NOT OK"
+280 RETURN
+290 DATA "", "[]", "][", "[][]", "][][", "[[][]]", "[]][[]"
diff --git a/Task/Balanced-brackets/Nu/balanced-brackets.nu b/Task/Balanced-brackets/Nu/balanced-brackets.nu
new file mode 100644
index 0000000000..bb3b9bd262
--- /dev/null
+++ b/Task/Balanced-brackets/Nu/balanced-brackets.nu
@@ -0,0 +1,12 @@
+def gen_brackets [n: int] { 1..$in | each {["[" "]"]} | flatten | shuffle | str join }
+
+def check_brackets [] {
+	split chars | reduce --fold 0 {|x, d|
+		if ($d < 0) {-1} else {
+			$d + (if ($x == "[") {1} else {-1})
+		}
+	} | $in > -1
+}
+
+
+1..10 | each {gen_brackets $in | {brackets: $in, valid: ($in | check_brackets)}} | print
diff --git a/Task/Balanced-brackets/SETL/balanced-brackets.setl b/Task/Balanced-brackets/SETL/balanced-brackets.setl
new file mode 100644
index 0000000000..c2147ea335
--- /dev/null
+++ b/Task/Balanced-brackets/SETL/balanced-brackets.setl
@@ -0,0 +1,31 @@
+program balanced_brackets;
+    setrandom(0);
+
+    loop for length in [1..10] do
+        s := generate length;
+        print(balanced s, s);
+    end loop;
+
+    op generate(n);
+        s := "["*n + "]"*n;
+        loop for i in [n*2, n*2-1..2] do
+            j := 1 + random(i - 1);
+            [s(i), s(j)] := [s(j), s(i)];
+        end loop;
+        return s;
+    end op;
+
+    op balanced(s);
+        depth := 0;
+        loop for c in s do
+            case c of
+            ("["):
+                depth +:= 1;
+            ("]"):
+                depth -:= 1;
+                if depth<0 then return false; end if;
+            end case;
+        end loop;
+        return depth = 0;
+    end op;
+end program;
diff --git a/Task/Balanced-brackets/True-BASIC/balanced-brackets.basic b/Task/Balanced-brackets/True-BASIC/balanced-brackets.basic
new file mode 100644
index 0000000000..8e6441afdd
--- /dev/null
+++ b/Task/Balanced-brackets/True-BASIC/balanced-brackets.basic
@@ -0,0 +1,26 @@
+DIM brk$(10)
+LET brk$(1)  = "[[[][]]]"
+LET brk$(2)  = "[[[]][[[][[][]]]]]"
+LET brk$(3)  = "][][]][["
+LET brk$(4)  = "[][][]"
+LET brk$(5)  = "[][]][]][[]]][[["
+LET brk$(6)  = "]][[[[]]]][]]][[[["
+LET brk$(7)  = "[[][[[]]][]]"
+LET brk$(8)  = "[]][][][[[]]"
+LET brk$(9)  = "][]][["
+LET brk$(10) = "[]][][][[]"
+
+FOR i = 1 TO 7
+    LET b$ = brk$(i)
+    DO WHILE POS(b$,"[]") <> 0
+       LET x = POS(b$,"[]")
+       IF x > 0 THEN LET b$ = (b$)[1:x-1] & (b$)[x+2:maxnum]
+    LOOP
+    IF TRIM$(b$) = "" THEN
+       PRINT "    OK ";
+    ELSE
+       PRINT "Not OK ";
+    END IF
+    PRINT brk$(i)
+NEXT i
+END
diff --git a/Task/Balanced-ternary/Wren/balanced-ternary.wren b/Task/Balanced-ternary/Wren/balanced-ternary.wren
index 6c0fca76f4..ac3e10ab26 100644
--- a/Task/Balanced-ternary/Wren/balanced-ternary.wren
+++ b/Task/Balanced-ternary/Wren/balanced-ternary.wren
@@ -1,5 +1,5 @@
-import "/big" for BigInt
-import "/trait" for Comparable
+import "./big" for BigInt
+import "./trait" for Comparable
 
 class BTernary is Comparable {
     toBT_(v) {
diff --git a/Task/Base64-decode-data/Wren/base64-decode-data.wren b/Task/Base64-decode-data/Wren/base64-decode-data.wren
index 9c8e94f12f..9b527a7be8 100644
--- a/Task/Base64-decode-data/Wren/base64-decode-data.wren
+++ b/Task/Base64-decode-data/Wren/base64-decode-data.wren
@@ -1,6 +1,6 @@
 import "io" for Stdout
-import "/fmt" for Conv, Fmt
-import "/str" for Str
+import "./fmt" for Conv, Fmt
+import "./str" for Str
 
 var alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
 
diff --git a/Task/Bell-numbers/Wren/bell-numbers.wren b/Task/Bell-numbers/Wren/bell-numbers.wren
index 5aa1fe18e1..a6064c4f83 100644
--- a/Task/Bell-numbers/Wren/bell-numbers.wren
+++ b/Task/Bell-numbers/Wren/bell-numbers.wren
@@ -1,5 +1,5 @@
-import "/big" for BigInt
-import "/fmt" for Fmt
+import "./big" for BigInt
+import "./fmt" for Fmt
 
 var bellTriangle = Fn.new { |n|
     var tri = List.filled(n, null)
diff --git a/Task/Benfords-law/BASIC256/benfords-law.basic b/Task/Benfords-law/BASIC256/benfords-law.basic
new file mode 100644
index 0000000000..406fdc921b
--- /dev/null
+++ b/Task/Benfords-law/BASIC256/benfords-law.basic
@@ -0,0 +1,34 @@
+n = 1000
+dim actual(n) fill 0
+
+for nr = 1 to n
+	num$ = string(fibonacci(nr))
+	j = int(left(num$,1))
+	actual[j] += 1
+next
+
+print "First 1000 Fibonacci numbers"
+print "Digit  ", "Actual freq  ", "Expected freq"
+for i = 1 to 9
+	freq = frequency(i)*100
+	print "  "; ljust(i,4), rjust(actual[i]/10,5), rjust(freq,5)
+next
+end
+
+function frequency(n)
+	return (log10(n+1) - log10(n))
+end function
+
+function fibonacci(f)
+	f = int(f)
+	a = 0 : b = 1 : c = 0 : n = 0
+
+	while n < f
+		a = b
+		b = c
+		c = a + b
+		n += 1
+	end while
+
+	return c
+end function
diff --git a/Task/Benfords-law/EasyLang/benfords-law.easy b/Task/Benfords-law/EasyLang/benfords-law.easy
new file mode 100644
index 0000000000..56624832fb
--- /dev/null
+++ b/Task/Benfords-law/EasyLang/benfords-law.easy
@@ -0,0 +1,50 @@
+func$ add a$ b$ .
+   for i to higher len a$ len b$
+      a = number substr a$ i 1
+      b = number substr b$ i 1
+      r = a + b + c
+      c = r div 10
+      r$ &= r mod 10
+   .
+   if c > 0
+      r$ &= c
+   .
+   return r$
+.
+#
+len fibdist[] 9
+proc mkfibdist . .
+   # generate 1000 fibonacci numbers as
+   # (reversed) strings, because 53 bit
+   # integers are too small
+   #
+   n = 1000
+   prev$ = 0
+   val$ = 1
+   fibdist[1] = 1
+   for i = 2 to n
+      h$ = add prev$ val$
+      prev$ = val$
+      val$ = h$
+      ind = number substr val$ len val$ 1
+      fibdist[ind] += 1
+   .
+   for i to len fibdist[]
+      fibdist[i] = fibdist[i] / n
+   .
+.
+mkfibdist
+#
+len benfdist[] 9
+proc mkbenfdist . .
+   for i to 9
+      benfdist[i] = log10 (1 + 1.0 / i)
+   .
+.
+mkbenfdist
+#
+numfmt 3 0
+print "Actual Expected"
+for i to 9
+   print fibdist[i] & "   " & benfdist[i]
+.
diff --git a/Task/Benfords-law/FutureBasic/benfords-law.basic b/Task/Benfords-law/FutureBasic/benfords-law.basic
new file mode 100644
index 0000000000..b9230ff827
--- /dev/null
+++ b/Task/Benfords-law/FutureBasic/benfords-law.basic
@@ -0,0 +1,64 @@
+Short t, i, j, k, m
+Double a(9), z
+Double phi, psi
+CFStringRef s
+
+print @"Benford:"
+for i = 1 to 9
+  a(i) =  log10( 1 + 1 / i )
+  print fn StringWithFormat( @"%.3f  ", a(i) ),
+next
+
+
+// Fibonacci according to DeMoivre and Binet
+for t = 1 to 9 : a(t) = 0 : next // Clean array
+phi = ( 1 + sqr(5) ) / 2
+psi = ( 1 - sqr(5) ) / 2
+for i = 1 to 1000
+  z = ( phi^i - psi^i ) / sqr( 5 )
+  s = fn StringWithFormat( @"%e", z) // Get first digit
+  t = fn StringIntegerValue( left( s, 1 ) )
+  a(t) = a(t) + 1
+next
+print @"\n\nFibonacci:"
+for i = 1 to 9
+  print fn StringWithFormat( @"%.3f  ", a(i) / 1000 ),
+next
+
+
+// Multiplication tables
+for t = 1 to 9 : a(t) = 0 : next // Clean array
+for i = 1 to 10
+  for j = 1 to 10
+    for k = 1 to 10
+      for m = 1 to 10
+        z = i * j * k * m
+        s = fn StringWithFormat( @"%e", z )
+        t = fn StringIntegerValue( left( s, 1 ) )
+        a(t) = a(t) + 1
+      next
+    next
+  next
+next
+print @"\n\nMultiplication:"
+for i = 1 to 9
+  print fn StringWithFormat( @"%.3f  ", a(i) / 1e4 ),
+next
+
+
+// Factorials according to DeMoivre and Stirling
+for t = 1 to 9 : a(t) = 0 : next // Clean array
+for i = 10 to 110
+  z = sqr(2 * pi * i ) * (i / exp(1) )^i
+  s = fn StringWithFormat( @"%e", z )
+  t = fn StringIntegerValue( left( s, 1 ) )
+  a(t) = a(t) + 1
+next
+print @"\n\nFactorials:"
+for i = 1 to 9
+  print fn StringWithFormat( @"%.2f   ", a(i) / 100 ),
+next
+
+
+handleevents
+}
diff --git a/Task/Benfords-law/Julia/benfords-law.julia b/Task/Benfords-law/Julia/benfords-law.julia
index 096f17b0d7..21483c4a19 100644
--- a/Task/Benfords-law/Julia/benfords-law.julia
+++ b/Task/Benfords-law/Julia/benfords-law.julia
@@ -2,7 +2,7 @@
 P(d) = log10(1+1/d)
 
 function benford(numbers)
-    firstdigit(n) = parse(Int, first(string(n)))
+    firstdigit(n) = last(digits(n))
     counts = zeros(9)
     foreach(n -> counts[firstdigit(n)] += 1, numbers)
     counts ./ sum(counts)
diff --git a/Task/Benfords-law/Sidef/benfords-law.sidef b/Task/Benfords-law/Sidef/benfords-law.sidef
index ac2689ebf6..f61086623c 100644
--- a/Task/Benfords-law/Sidef/benfords-law.sidef
+++ b/Task/Benfords-law/Sidef/benfords-law.sidef
@@ -1,14 +1,15 @@
 var (actuals, expected) = ([], [])
-var fibonacci = 1000.of {|i| fib(i).digit(0) }
+var fibonacci = 1000.of {|i| fib(i).digit(-1) }
 
-for i (1..9) {
+for i in (1..9) {
     var num = fibonacci.count_by {|j| j == i }
     actuals.append(num / 1000)
     expected.append(1 + (1/i) -> log10)
 }
 
 "%17s%17s\n".printf("Observed","Expected")
-for i (1..9) {
+
+for i in (1..9) {
     "%d : %11s %%%15s %%\n".printf(
             i, "%.2f".sprintf(100 *  actuals[i - 1]),
                "%.2f".sprintf(100 * expected[i - 1]),
diff --git a/Task/Benfords-law/Wren/benfords-law.wren b/Task/Benfords-law/Wren/benfords-law.wren
index c326af0c61..b528b4a306 100644
--- a/Task/Benfords-law/Wren/benfords-law.wren
+++ b/Task/Benfords-law/Wren/benfords-law.wren
@@ -1,4 +1,4 @@
-import "/fmt" for Fmt
+import "./fmt" for Fmt
 
 var fib1000 = Fn.new {
     var a = 0
diff --git a/Task/Benfords-law/Yabasic/benfords-law.basic b/Task/Benfords-law/Yabasic/benfords-law.basic
new file mode 100644
index 0000000000..edd3a6bdfd
--- /dev/null
+++ b/Task/Benfords-law/Yabasic/benfords-law.basic
@@ -0,0 +1,41 @@
+n = 1000
+dim actual(n)
+
+for nr = 1 to n
+  num$ = str$(fibonacci(nr))
+  j = val(left$(num$,1))
+  actual(j) = actual(j) + 1
+next
+
+print "First 1000 Fibonacci numbers"
+print "Digit  ", "Actual freq  ", "Expected freq"
+for i = 1 to 9
+  freq = frequency(i)*100
+  print i using("###"), "       ", (actual(i)/10) using("##.###"), "        ", freq using("##.###")
+next
+end
+
+sub frequency(n)
+   return (log10(n+1) - log10(n))
+end sub
+
+sub log10(n)
+   return log(n) / log(10)
+end sub
+
+sub fibonacci(n)
+    local n1, n2, k, sum
+	
+	n1 = 0
+    n2 = 1
+    for k = 1 to abs(n)
+        sum = n1 + n2
+        n1 = n2
+        n2 = sum
+    next k
+    if n < 0 then
+       return n1 * ((-1) ^ ((-n) + 1))
+    else
+       return n1
+    end if
+end sub
diff --git a/Task/Bernoulli-numbers/Wren/bernoulli-numbers.wren b/Task/Bernoulli-numbers/Wren/bernoulli-numbers.wren
index 4a91d97ed2..b7e6712d4f 100644
--- a/Task/Bernoulli-numbers/Wren/bernoulli-numbers.wren
+++ b/Task/Bernoulli-numbers/Wren/bernoulli-numbers.wren
@@ -1,5 +1,5 @@
-import "/fmt" for Fmt
-import "/big" for BigRat
+import "./fmt" for Fmt
+import "./big" for BigRat
 
 var bernoulli = Fn.new { |n|
     if (n < 0) Fiber.abort("Argument must be non-negative")
diff --git a/Task/Bifid-cipher/EasyLang/bifid-cipher.easy b/Task/Bifid-cipher/EasyLang/bifid-cipher.easy
new file mode 100644
index 0000000000..6404951744
--- /dev/null
+++ b/Task/Bifid-cipher/EasyLang/bifid-cipher.easy
@@ -0,0 +1,71 @@
+func$ crypt enc msg$ key$ .
+   key$[] = strchars key$
+   n = len msg$
+   for i to len msg$
+      c$ = substr msg$ i 1
+      for j to 25
+         if c$ = key$[j]
+            break 1
+         .
+      .
+      j -= 1
+      h[] &= j div 5
+      h[] &= j mod 5
+   .
+   if enc = 1
+      for i = 1 step 4 to 2 * n - 3
+         j = h[i] * 5 + h[i + 2] + 1
+         r$ &= key$[j]
+      .
+      for i = 2 step 4 to 2 * n - 2
+         j = h[i] * 5 + h[i + 2] + 1
+         r$ &= key$[j]
+      .
+   else
+      for i = 1 to n
+         j = h[i] * 5 + h[i + n] + 1
+         r$ &= key$[j]
+      .
+   .
+   return r$
+.
+func$ conv s$ .
+   for e$ in strchars s$
+      h = strcode e$
+      if h >= 97
+         h -= 32
+      .
+      if h >= 65 and h <= 91
+         if h = 74
+            h = 73
+         .
+         r$ &= strchar h
+      .
+   .
+   return r$
+.
+func$ encr msg$ key$ .
+   return crypt 1 conv msg$ key$
+.
+func$ decr msg$ key$ .
+   return crypt 0 msg$ key$
+.
+key$ = "ABCDEFGHIKLMNOPQRSTUVWXYZ"
+h$ = encr "ATTACKATDAWN" key$
+print h$
+print decr h$ key$
+print ""
+#
+key$ = "BGWKZQPNDSIOAXEFCLUMTHYVR"
+h$ = encr "FLEEATONCE" key$
+print h$
+print decr h$ key$
+print ""
+h$ = encr "ATTACKATDAWN" key$
+print h$
+print decr h$ key$
+print ""
+#
+h$ = encr "The invasion will start on the first of January" key$
+print h$
+print decr h$ key$
diff --git a/Task/Bifid-cipher/Quackery/bifid-cipher.quackery b/Task/Bifid-cipher/Quackery/bifid-cipher.quackery
new file mode 100644
index 0000000000..e26e1d6fc4
--- /dev/null
+++ b/Task/Bifid-cipher/Quackery/bifid-cipher.quackery
@@ -0,0 +1,97 @@
+  [ $ "" swap
+    witheach
+      [ upper
+        dup char I > if [ 1 - ]
+        dup char A char Z
+        within iff
+          [ char A - join ]
+        else drop ] ]               is ->0..24    (         $ --> [ )
+
+  [ $ "" swap
+    witheach
+      [ char A +
+        dup char I > if 1+
+       join ] ]                     is ->A..Z     (         [ --> $ )
+
+  [ [] 5 times
+     [ dip ->0..24 join ] ]         is makesquare ( $ $ $ $ $ --> [ )
+
+  [ dup witheach
+      [ i^ unrot poke ] ]           is makeindex  (         [ --> [ )
+
+  [ dup temp put
+    makeindex temp put
+    ->0..24
+    [] swap witheach
+      [ temp share swap peek
+        5 /mod join
+        nested join ]
+    temp release
+    transpose
+    unpack join
+    [] swap
+    dup size 2 / times
+      [ 2 split dip
+          [ nested join ] ]
+    drop
+    $ "" swap
+    witheach
+      [ unpack swap 5 * +
+        temp share swap peek
+        join ]
+    ->A..Z
+    temp release ]                  is encrypt    (       $ [ --> $ )
+
+  [ dup temp put
+    makeindex temp put
+    ->0..24
+    [] swap witheach
+      [ temp share swap peek
+        5 /mod join join ]
+    temp release
+    dup size 2 / split
+    2 pack
+    transpose
+    [] swap witheach
+      [ unpack swap 5 * +
+        temp share swap peek
+        join ]
+     ->A..Z
+    temp release ]                  is decrypt    (       $ [ --> $ )
+
+  [ $ "ABCDE"
+    $ "FGHIK"
+    $ "LMNOP"
+    $ "QRSTU"
+    $ "VWXYZ"
+    makesquare ]           constant is tasksquare (           --> [ )
+
+  [ $ "BGWKZ"
+    $ "QPNDS"
+    $ "IOAXE"
+    $ "FCLUM"
+    $ "THYVR"
+    makesquare ]           constant is wikisquare (           --> [ )
+
+  [ $ "QUACK"
+    $ "DEPTH"
+    $ "LYING"
+    $ "FORMS"
+    $ "BVWXZ"
+    makesquare ]           constant is ducksquare (           --> [ )
+
+
+  say "Using tasksquare:" cr
+  $ "Attack at dawn."                                  dup echo$ say " -> "
+  tasksquare encrypt                                   dup echo$ say " -> "
+  tasksquare decrypt                                       echo$
+  cr cr
+  say "Using wikisquare:" cr
+  $ "Flee at once."                                    dup echo$ say " -> "
+  wikisquare encrypt                                   dup echo$ say " -> "
+  wikisquare decrypt                                       echo$
+  cr cr
+  say "Using ducksquare:" cr
+  $ "The invasion will start on the first of January." dup echo$ cr say " -> "
+  ducksquare encrypt                                   dup echo$ cr say " -> "
+  ducksquare decrypt                                       echo$
diff --git a/Task/Bin-given-limits/EasyLang/bin-given-limits.easy b/Task/Bin-given-limits/EasyLang/bin-given-limits.easy
new file mode 100644
index 0000000000..77d034ea2e
--- /dev/null
+++ b/Task/Bin-given-limits/EasyLang/bin-given-limits.easy
@@ -0,0 +1,26 @@
+global limits[] data[] .
+#
+proc count . .
+   len cnt[] len limits[] + 1
+   #
+   for e in data[]
+      for i to len limits[]
+         if e < limits[i]
+            break 1
+         .
+      .
+      cnt[i] += 1
+   .
+   for i to len limits[]
+      print "< " & limits[i] & " : " & cnt[i]
+   .
+   print "Rest: " & cnt[i]
+   print ""
+.
+limits[] = [ 23 37 43 53 67 83 ]
+data[] = [ 95 21 94 12 99 4 70 75 83 93 52 80 57 5 53 86 65 17 92 83 71 61 54 58 47 16 8 9 32 84 7 87 46 19 30 37 96 6 98 40 79 97 45 64 60 29 49 36 43 55 ]
+count
+#
+limits[] = [ 14 18 249 312 389 392 513 591 634 720 ]
+data[] = [ 445 814 519 697 700 130 255 889 481 122 932 77 323 525 570 219 367 523 442 933 416 589 930 373 202 253 775 47 731 685 293 126 133 450 545 100 741 583 763 306 655 267 248 477 549 238 62 678 98 534 622 907 406 714 184 391 913 42 560 247 346 860 56 138 546 38 985 948 58 213 799 319 390 634 458 945 733 507 916 123 345 110 720 917 313 845 426 9 457 628 410 723 354 895 881 953 677 137 397 97 854 740 83 216 421 94 517 479 292 963 376 981 480 39 257 272 157 5 316 395 787 942 456 242 759 898 576 67 298 425 894 435 831 241 989 614 987 770 384 692 698 765 331 487 251 600 879 342 982 527 736 795 585 40 54 901 408 359 577 237 605 847 353 968 832 205 838 427 876 959 686 646 835 127 621 892 443 198 988 791 466 23 707 467 33 670 921 180 991 396 160 436 717 918 8 374 101 684 727 749 ]
+count
diff --git a/Task/Bin-given-limits/Quackery/bin-given-limits.quackery b/Task/Bin-given-limits/Quackery/bin-given-limits.quackery
new file mode 100644
index 0000000000..ae99972747
--- /dev/null
+++ b/Task/Bin-given-limits/Quackery/bin-given-limits.quackery
@@ -0,0 +1,61 @@
+  [ 2dup peek 1+ unrot poke ]    is inc    ( [ n --> [ )
+
+  [ dup size 1+ 0 swap of
+    swap rot witheach
+      [ over
+        findwith [ over > ] drop
+        swap dip inc ]
+    drop ]                       is ->bins ( [ [ --> [ )
+
+  [ tuck ->bins
+    say "Less than "
+    over 0 peek echo
+    say ": " behead echo cr
+    dup size 1 - times
+      [ over i^ peek echo
+        say " or more, "
+        say "but less than "
+        over i^ 1+ peek echo
+        say ": "
+        dup i^ peek echo cr ]
+    swap
+    -1 peek echo
+    say " or more: "
+    -1 peek echo cr ]            is report ( [ [ -->   )
+
+  ' [ 95 21 94 12 99  4 70 75 83 93
+      52 80 57  5 53 86 65 17 92 83
+      71 61 54 58 47 16  8  9 32 84
+       7 87 46 19 30 37 96  6 98 40
+      79 97 45 64 60 29 49 36 43 55 ]
+
+  ' [ 23 37 43 53 67 83 ]
+
+  say "Part 1" cr cr
+  report cr cr
+
+  ' [ 445 814 519 697 700 130 255 889 481 122
+      932  77 323 525 570 219 367 523 442 933
+      416 589 930 373 202 253 775  47 731 685
+      293 126 133 450 545 100 741 583 763 306
+      655 267 248 477 549 238  62 678  98 534
+      622 907 406 714 184 391 913  42 560 247
+      346 860  56 138 546  38 985 948  58 213
+      799 319 390 634 458 945 733 507 916 123
+      345 110 720 917 313 845 426   9 457 628
+      410 723 354 895 881 953 677 137 397  97
+      854 740  83 216 421  94 517 479 292 963
+      376 981 480  39 257 272 157   5 316 395
+      787 942 456 242 759 898 576  67 298 425
+      894 435 831 241 989 614 987 770 384 692
+      698 765 331 487 251 600 879 342 982 527
+      736 795 585  40  54 901 408 359 577 237
+      605 847 353 968 832 205 838 427 876 959
+      686 646 835 127 621 892 443 198 988 791
+      466  23 707 467  33 670 921 180 991 396
+      160 436 717 918   8 374 101 684 727 749 ]
+
+  ' [  14  18 249 312 389 392 513 591 634 720 ]
+
+  say "Part 2" cr cr
+  report
diff --git a/Task/Bin-given-limits/Wren/bin-given-limits.wren b/Task/Bin-given-limits/Wren/bin-given-limits.wren
index 7f6013e0b0..8c90029d9f 100644
--- a/Task/Bin-given-limits/Wren/bin-given-limits.wren
+++ b/Task/Bin-given-limits/Wren/bin-given-limits.wren
@@ -1,5 +1,5 @@
-import "/sort" for Find
-import "/fmt" for Fmt
+import "./sort" for Find
+import "./fmt" for Fmt
 
 var getBins = Fn.new { |limits, data|
     var n = limits.count
diff --git a/Task/Binary-digits/Chipmunk-Basic/binary-digits.basic b/Task/Binary-digits/Chipmunk-Basic/binary-digits.basic
new file mode 100644
index 0000000000..0aedb75173
--- /dev/null
+++ b/Task/Binary-digits/Chipmunk-Basic/binary-digits.basic
@@ -0,0 +1,15 @@
+10 for c = 1 to 3
+20 read n
+30 print n;"-> ";vin$(n)
+40 next c
+80 end
+100 sub vin$(n)
+110   b$ = ""
+120   n = abs(int(n))
+130   '
+140   b$ = str$(n mod 2)+b$
+150   n = int(n/2)
+160   if n > 0 then 130
+170   vin$ = b$
+180 end sub
+200 data 5,50,9000
diff --git a/Task/Binary-digits/Draco/binary-digits.draco b/Task/Binary-digits/Draco/binary-digits.draco
new file mode 100644
index 0000000000..3fae378dd2
--- /dev/null
+++ b/Task/Binary-digits/Draco/binary-digits.draco
@@ -0,0 +1,5 @@
+proc main() void:
+    writeln(5:b);
+    writeln(50:b);
+    writeln(9000:b);
+corp
diff --git a/Task/Binary-digits/J/binary-digits.j b/Task/Binary-digits/J/binary-digits.j
index c8ef29b83f..473f04fb1d 100644
--- a/Task/Binary-digits/J/binary-digits.j
+++ b/Task/Binary-digits/J/binary-digits.j
@@ -1,4 +1,4 @@
-   tobin=: -.&' '@":@#:
+   tobin=: '01'{~#:
    tobin 5
 101
    tobin 50
diff --git a/Task/Binary-digits/MACRO-11/binary-digits.macro11 b/Task/Binary-digits/MACRO-11/binary-digits.macro11
new file mode 100644
index 0000000000..2139a137e0
--- /dev/null
+++ b/Task/Binary-digits/MACRO-11/binary-digits.macro11
@@ -0,0 +1,25 @@
+        .TITLE  BINARY
+        .MCALL  .TTYOUT,.EXIT
+BINARY::MOV     #3$,R5
+        BR      2$
+1$:     JSR     PC,PRBIN
+2$:     MOV     (R5)+,R0
+        BNE     1$
+        .EXIT
+3$:     .WORD   ^D5, ^D50, ^D9000, 0
+
+        ; PRINT R0 AS BINARY WITH NEWLINE
+PRBIN:  MOV     #3$,R1
+1$:     MOV     #'0,R2
+        ROR     R0
+        ADC     R2
+        MOVB    R2,(R1)+
+        TST     R0
+        BNE     1$
+2$:     MOVB    -(R1),R0
+        .TTYOUT
+        BNE     2$
+        RTS     PC
+        .BYTE   0,0,12,15
+3$:     .BLKB   16              ; BUFFER
+        .END    BINARY
diff --git a/Task/Binary-digits/SETL/binary-digits.setl b/Task/Binary-digits/SETL/binary-digits.setl
new file mode 100644
index 0000000000..6cfe046536
--- /dev/null
+++ b/Task/Binary-digits/SETL/binary-digits.setl
@@ -0,0 +1,9 @@
+program binary_digits;
+    loop for n in [5, 50, 9000] do
+        print(bin n);
+    end loop;
+
+    op bin(n);
+        return reverse +/[str [n mod 2, n div:=2](1) : until n=0];
+    end op;
+end program;
diff --git a/Task/Binary-digits/Wren/binary-digits.wren b/Task/Binary-digits/Wren/binary-digits.wren
index 6c6c3d3cb3..fbae7f0348 100644
--- a/Task/Binary-digits/Wren/binary-digits.wren
+++ b/Task/Binary-digits/Wren/binary-digits.wren
@@ -1,4 +1,4 @@
-import "/fmt" for Fmt
+import "./fmt" for Fmt
 
 System.print("Converting to binary:")
 for (i in [5, 50, 9000]) Fmt.print("$d -> $b", i, i)
diff --git a/Task/Binary-search/Zig/binary-search-1.zig b/Task/Binary-search/Zig/binary-search-1.zig
new file mode 100644
index 0000000000..dd5c94912c
--- /dev/null
+++ b/Task/Binary-search/Zig/binary-search-1.zig
@@ -0,0 +1,20 @@
+pub fn binarySearch(comptime T: type, input: []const T, search_value: T) ?usize {
+    if (input.len == 0) return null;
+    if (@sizeOf(T) == 0) return 0;
+
+    var view: []const T = input;
+    const item_ptr: *const T = item_ptr: while (view.len > 0) {
+        const mid = (view.len - 1) / 2;
+        const mid_elem_ptr: *const T = &view[mid];
+
+        if (mid_elem_ptr.* > search_value)
+            view = view[0..mid]
+        else if (mid_elem_ptr.* < search_value)
+            view = view[mid + 1 .. view.len]
+        else
+            break :item_ptr mid_elem_ptr;
+    } else return null;
+
+    const distance_in_bytes = @intFromPtr(item_ptr) - @intFromPtr(input.ptr);
+    return (distance_in_bytes / @sizeOf(T));
+}
diff --git a/Task/Binary-search/Zig/binary-search-2.zig b/Task/Binary-search/Zig/binary-search-2.zig
new file mode 100644
index 0000000000..d2b5370b1d
--- /dev/null
+++ b/Task/Binary-search/Zig/binary-search-2.zig
@@ -0,0 +1,18 @@
+pub fn binarySearch(comptime T: type, input: []const T, search_value: T) ?usize {
+    return binarySearchInner(T, input, search_value, @intFromPtr(input.ptr));
+}
+
+fn binarySearchInner(comptime T: type, input: []const T, search_value: T, start_address: usize) ?usize {
+    if (input.len == 0) return null;
+    if (@sizeOf(T) == 0) return 0;
+
+    const mid = (input.len - 1) / 2;
+    const mid_elem_ptr: *const T = &input[mid];
+
+    return if (mid_elem_ptr.* > search_value)
+        binarySearchInner(T, input[0..mid], search_value, start_address)
+    else if (mid_elem_ptr.* < search_value)
+        binarySearchInner(T, input[mid + 1 .. input.len], search_value, start_address)
+    else
+        (@intFromPtr(mid_elem_ptr) - start_address) / @sizeOf(T);
+}
diff --git a/Task/Binary-search/Zig/binary-search-3.zig b/Task/Binary-search/Zig/binary-search-3.zig
new file mode 100644
index 0000000000..00f97a3123
--- /dev/null
+++ b/Task/Binary-search/Zig/binary-search-3.zig
@@ -0,0 +1,19 @@
+const math = @import("std").math;
+
+pub fn binarySearch(comptime T: type, input: []const T, search_value: T) ?usize {
+    if (input.len == 0) return null;
+    if (@sizeOf(T) == 0) return 0;
+
+    var low: usize = 0;
+    var high: usize = input.len - 1;
+    return while (low <= high) {
+        const mid = ((high - low) / 2) + low;
+        const mid_elem: T = input[mid];
+        if (mid_elem > search_value)
+            high = math.sub(usize, mid, 1) catch break null
+        else if (mid_elem < search_value)
+            low = mid + 1
+        else
+            break mid;
+    } else null;
+}
diff --git a/Task/Binary-search/Zig/binary-search-4.zig b/Task/Binary-search/Zig/binary-search-4.zig
new file mode 100644
index 0000000000..cd79a20fb7
--- /dev/null
+++ b/Task/Binary-search/Zig/binary-search-4.zig
@@ -0,0 +1,22 @@
+const math = @import("std").math;
+
+pub fn binarySearch(comptime T: type, input: []const T, search_value: T) ?usize {
+    if (input.len == 0) return null;
+    if (@sizeOf(T) == 0) return 0;
+
+    return binarySearchInner(T, input, search_value, 0, input.len - 1);
+}
+
+fn binarySearchInner(comptime T: type, input: []const T, search_value: T, low: usize, high: usize) ?usize {
+    if (low > high) return null;
+
+    const mid = ((high - low) / 2) + low;
+    const mid_elem: T = input[mid];
+
+    return if (mid_elem > search_value)
+        binarySearchInner(T, input, search_value, low, math.sub(usize, mid, 1) catch return null)
+    else if (mid_elem < search_value)
+        binarySearchInner(T, input, search_value, mid + 1, high)
+    else
+        mid;
+}
diff --git a/Task/Bioinformatics-Global-alignment/Wren/bioinformatics-global-alignment.wren b/Task/Bioinformatics-Global-alignment/Wren/bioinformatics-global-alignment.wren
index 83f87a5e4e..cee9c8ac7f 100644
--- a/Task/Bioinformatics-Global-alignment/Wren/bioinformatics-global-alignment.wren
+++ b/Task/Bioinformatics-Global-alignment/Wren/bioinformatics-global-alignment.wren
@@ -1,7 +1,7 @@
-import "/fmt" for Fmt
-import "/seq" for Lst
-import "/str" for Str
-import "/math" for Int
+import "./fmt" for Fmt
+import "./seq" for Lst
+import "./str" for Str
+import "./math" for Int
 
 /* Gets all permutations of a list of strings. */
 var getPerms = Fn.new { |input|
diff --git a/Task/Bioinformatics-Sequence-mutation/BBC-BASIC/bioinformatics-sequence-mutation.basic b/Task/Bioinformatics-Sequence-mutation/BBC-BASIC/bioinformatics-sequence-mutation.basic
new file mode 100644
index 0000000000..104ca4618b
--- /dev/null
+++ b/Task/Bioinformatics-Sequence-mutation/BBC-BASIC/bioinformatics-sequence-mutation.basic
@@ -0,0 +1,50 @@
+      Mutations     = 10
+      InitialLength = 400
+
+      @%=3
+      REM Generate sequence and Pretty Print result.
+      FOR I%=1 TO InitialLength
+        Sequence$ += FNRandomBase
+      NEXT
+      PROCDisplaySequence(Sequence$, 50)
+
+      REM Make mutations and Pretty Print result.
+      PRINT '"Mutating..."
+      FOR I%=1 TO Mutations
+        Position = RND(LENSequence$)
+        CurBase$ = MID$(Sequence$, Position, 1)
+        NewBase$ = FNRandomBase
+        CASE RND(3) OF
+          WHEN 1 REM Change a base
+            PRINT "Change base " CurBase$ " at position " Position " to base " NewBase$
+            MID$(Sequence$, Position, 1)=NewBase$
+          WHEN 2 REM Delete a base
+            PRINT "Delete base " CurBase$ " at position " Position
+            Sequence$=LEFT$(Sequence$, Position - 1) + MID$(Sequence$, Position + 1)
+          WHEN 3 REM Insert a base
+            PRINT "Insert base " NewBase$ " at position " Position
+            Sequence$=LEFT$(Sequence$, Position) + NewBase$ + MID$(Sequence$, Position + 1)
+        ENDCASE
+      NEXT
+      PROCDisplaySequence(Sequence$, 50)
+      END
+
+      DEF FNRandomBase = MID$("ACGT", RND(4), 1)
+
+      DEF PROCDisplaySequence(seq$, snap%)
+      LOCAL a, c, g, t, i%, p%
+
+      p% = !^seq$
+      FOR i%=0 TO LENseq$ - 1
+        IF i% MOD snap% == 0 PRINT 'i% ": ";
+        VDU p%?i%
+        CASE p%?i% OF
+          WHEN ASC"A" a += 1
+          WHEN ASC"C" c += 1
+          WHEN ASC"G" g += 1
+          WHEN ASC"T" t += 1
+        ENDCASE
+      NEXT
+      PRINT ' "A: " a ' "C: " c  ' "G: " g ' "T: " t
+      PRINT "Total: "; a + c + g + t
+      ENDPROC
diff --git a/Task/Bioinformatics-Sequence-mutation/Wren/bioinformatics-sequence-mutation.wren b/Task/Bioinformatics-Sequence-mutation/Wren/bioinformatics-sequence-mutation.wren
index 887effbc25..40317481f6 100644
--- a/Task/Bioinformatics-Sequence-mutation/Wren/bioinformatics-sequence-mutation.wren
+++ b/Task/Bioinformatics-Sequence-mutation/Wren/bioinformatics-sequence-mutation.wren
@@ -1,6 +1,6 @@
 import "random" for Random
-import "/fmt" for Fmt
-import "/sort" for Sort
+import "./fmt" for Fmt
+import "./sort" for Sort
 
 var rand = Random.new()
 var bases = "ACGT"
diff --git a/Task/Bioinformatics-base-count/BBC-BASIC/bioinformatics-base-count.basic b/Task/Bioinformatics-base-count/BBC-BASIC/bioinformatics-base-count.basic
new file mode 100644
index 0000000000..371c6d5020
--- /dev/null
+++ b/Task/Bioinformatics-base-count/BBC-BASIC/bioinformatics-base-count.basic
@@ -0,0 +1,27 @@
+      DNA$="CGTAAAAAATTACAACGTCCTTTGGCTATCTCTTAAACTCCTGCTAAATG" +\
+      \    "CTCGTGCTTTCCAATTATGTAAGCGTTCCGAGACGGGGTGGTCGATTCTG" +\
+      \    "AGGACAAAGGTCAAGATGGAGCGCATCGAACGCAATAAGGATCATTTGAT" +\
+      \    "GGGACGTTTCGTCGACAAAGTCTTGTTTCGAGAGTAACGGCTACCGTCTT" +\
+      \    "CGATTCTGCTTATAACACTATGTTCTTATGAAATGGATGTTCTGAGTTGG" +\
+      \    "TCAGTCCCAATGTGCGGGGTTTCTTTTAGTACGTCGGGAGTGGTATTATA" +\
+      \    "TTTAATTTTTCTATATAGCGATCTGTATTTAAGCAATTCATTTAGGTTAT" +\
+      \    "CGCCGCGATGCTCGGTTCGGACCGCCAAGCATCTGGCTCCACTGCTAGTG" +\
+      \    "TCCTAAATTTGAATGGCAAACACAAATAAGATTTAGCAATTCGTGTAGAC" +\
+      \    "GACCGGGGACTTGCATGATGGGAGCAGCTTTGTTAAACTACGAACGTAAT" + CHR$0
+
+      @%=3      : REM Width of the print zone
+      P%=!^DNA$ : REM Address of string in memory
+      WHILE ?P%
+        IF I% MOD 50 == 0 PRINT 'I% ": ";
+        VDU ?P% : REM Output ASCII value at address P%
+        CASE ?P% OF
+          WHEN ASC"A" A+=1
+          WHEN ASC"C" C+=1
+          WHEN ASC"G" G+=1
+          WHEN ASC"T" T+=1
+        ENDCASE
+        I%+=1
+        P%+=1
+      ENDWHILE
+      PRINT '' "A: " A ' "C: " C  ' "G: " G ' "T: " T
+      PRINT "Total: " A + C + G + T
diff --git a/Task/Bioinformatics-base-count/Wren/bioinformatics-base-count.wren b/Task/Bioinformatics-base-count/Wren/bioinformatics-base-count.wren
index c284aa8c14..e8b0e06487 100644
--- a/Task/Bioinformatics-base-count/Wren/bioinformatics-base-count.wren
+++ b/Task/Bioinformatics-base-count/Wren/bioinformatics-base-count.wren
@@ -1,6 +1,6 @@
-import "/fmt" for Fmt
-import "/sort" for Sort
-import "/iterate" for Stepped
+import "./fmt" for Fmt
+import "./sort" for Sort
+import "./iterate" for Stepped
 
 var dna = "CGTAAAAAATTACAACGTCCTTTGGCTATCTCTTAAACTCCTGCTAAATG" +
           "CTCGTGCTTTCCAATTATGTAAGCGTTCCGAGACGGGGTGGTCGATTCTG" +
diff --git a/Task/Biorhythms/Wren/biorhythms.wren b/Task/Biorhythms/Wren/biorhythms.wren
index 1ad3044a09..2c3eb9f2df 100644
--- a/Task/Biorhythms/Wren/biorhythms.wren
+++ b/Task/Biorhythms/Wren/biorhythms.wren
@@ -1,5 +1,5 @@
-import "/date" for Date
-import "/fmt" for Fmt
+import "./date" for Date
+import "./fmt" for Fmt
 
 var cycles = ["Physical day ", "Emotional day", "Mental day   "]
 var lengths = [23, 28, 33]
diff --git a/Task/Bitcoin-address-validation/Wren/bitcoin-address-validation.wren b/Task/Bitcoin-address-validation/Wren/bitcoin-address-validation.wren
index e86ad4e398..68a14f24fb 100644
--- a/Task/Bitcoin-address-validation/Wren/bitcoin-address-validation.wren
+++ b/Task/Bitcoin-address-validation/Wren/bitcoin-address-validation.wren
@@ -1,6 +1,6 @@
-import "/crypto" for Sha256
-import "/str" for Str
-import "/fmt" for Conv, Fmt
+import "./crypto" for Sha256
+import "./str" for Str
+import "./fmt" for Conv, Fmt
 
 class Bitcoin {
     static alphabet_ { "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz" }
diff --git a/Task/Bitcoin-public-point-to-address/Wren/bitcoin-public-point-to-address.wren b/Task/Bitcoin-public-point-to-address/Wren/bitcoin-public-point-to-address.wren
index 4f9c3fe5a4..96413686ea 100644
--- a/Task/Bitcoin-public-point-to-address/Wren/bitcoin-public-point-to-address.wren
+++ b/Task/Bitcoin-public-point-to-address/Wren/bitcoin-public-point-to-address.wren
@@ -1,6 +1,6 @@
-import "/crypto" for Sha256, Ripemd160
-import "/str" for Str
-import "/fmt" for Conv
+import "./crypto" for Sha256, Ripemd160
+import "./str" for Str
+import "./fmt" for Conv
 
 // converts an hexadecimal string to a byte list.
 var HexToBytes = Fn.new { |s| Str.chunks(s, 2).map { |c| Conv.atoi(c, 16) }.toList }
diff --git a/Task/Bitmap-B-zier-curves-Cubic/MiniScript/bitmap-b-zier-curves-cubic.mini b/Task/Bitmap-B-zier-curves-Cubic/MiniScript/bitmap-b-zier-curves-cubic.mini
new file mode 100644
index 0000000000..3a94acef9d
--- /dev/null
+++ b/Task/Bitmap-B-zier-curves-Cubic/MiniScript/bitmap-b-zier-curves-cubic.mini
@@ -0,0 +1,71 @@
+Point = {"x": 0, "y":0}
+Point.init = function(x, y)
+	p = new Point
+	p.x = x; p.y = y
+	return p
+end function
+
+drawLine = function(img, x0, y0, x1, y1, colr)
+	sign = function(a, b)
+		if a < b then return 1
+		return -1
+	end function
+	
+	dx = abs(x1 - x0)
+	sx = sign(x0, x1)
+	
+	dy = abs(y1 - y0)
+	sy = sign(y0, y1)
+	
+	if dx > dy then
+		err = dx
+	else
+		err = -dy
+	end if
+	err = floor(err / 2)
+	
+	while true
+		img.setPixel x0, y0, colr
+		if x0 == x1 and y0 == y1 then break
+		e2 = err
+		if e2 > -dx then
+			err -= dy
+			x0 += sx
+		end if
+		if e2 < dy then
+			err += dx
+			y0 += sy
+		end if
+	end while
+end function
+
+cubicBezier = function(img, p1, p2, p3, p4, numPoints, colr)
+	points = []
+	for i in range(0, numPoints)
+		t = i / numPoints
+		u = 1 - t
+		a = (1 - t)^3
+		b = 3 * t * (1 - t)^2
+		c = 3 * t^2 * (1 - t)
+		d = t^3
+		
+		x = floor(a * p1.x + b * p2.x + c * p3.x + d * p4.x)
+		y = floor(a * p1.y + b * p2.y + c * p3.y + d * p4.y)
+		points.push(Point.init(x, y))
+		img.setPixel x, y, colr
+	end for
+	
+	for i in range(1, numPoints)
+		drawLine img, points[i-1].x, points[i-1].y, points[i].x, points[i].y, colr
+	end for
+end function
+
+bezier = Image.create(480, 480)
+p1 = Point.init(50, 100)
+p2 = Point.init(200, 400)
+p3 = Point.init(360, 0)
+p4 = Point.init(300, 424)
+
+cubicBezier bezier, p1, p2, p3, p4, 20, color.red
+gfx.clear
+gfx.drawImage bezier, 0, 0
diff --git a/Task/Bitmap-B-zier-curves-Quadratic/MiniScript/bitmap-b-zier-curves-quadratic.mini b/Task/Bitmap-B-zier-curves-Quadratic/MiniScript/bitmap-b-zier-curves-quadratic.mini
new file mode 100644
index 0000000000..bfc5fbf3a5
--- /dev/null
+++ b/Task/Bitmap-B-zier-curves-Quadratic/MiniScript/bitmap-b-zier-curves-quadratic.mini
@@ -0,0 +1,69 @@
+Point = {"x": 0, "y":0}
+Point.init = function(x, y)
+	p = new Point
+	p.x = x; p.y = y
+	return p
+end function
+
+drawLine = function(img, x0, y0, x1, y1, colr)
+	sign = function(a, b)
+		if a < b then return 1
+		return -1
+	end function
+	
+	dx = abs(x1 - x0)
+	sx = sign(x0, x1)
+	
+	dy = abs(y1 - y0)
+	sy = sign(y0, y1)
+	
+	if dx > dy then
+		err = dx
+	else
+		err = -dy
+	end if
+	err = floor(err / 2)
+	
+	while true
+		img.setPixel x0, y0, colr
+		if x0 == x1 and y0 == y1 then break
+		e2 = err
+		if e2 > -dx then
+			err -= dy
+			x0 += sx
+		end if
+		if e2 < dy then
+			err += dx
+			y0 += sy
+		end if
+	end while
+end function
+
+quadraticBezier = function(img, p1, p2, p3, numPoints, colr)
+	points = []
+	for i in range(0, numPoints)
+		t = i / numPoints
+		u = 1 - t
+		a = u * u
+		b = 2 * t * u
+		c = t * t
+		
+		x = floor(a * p1.x + b * p2.x + c * p3.x)
+		y = floor(a * p1.y + b * p2.y + c * p3.y)
+		points.push(Point.init(x, y))
+		img.setPixel x, y, colr
+	end for
+	
+	for i in range(1, numPoints)
+		drawLine img, points[i-1].x, points[i-1].y, points[i].x, points[i].y, colr
+	end for
+end function
+
+bezier = Image.create(480, 480)
+p1 = Point.init(50, 100)
+p2 = Point.init(200, 400)
+p3 = Point.init(360, 55)
+
+quadraticBezier bezier, p1, p2, p3, 20, color.red
+gfx.clear
+gfx.drawImage bezier, 0, 0
diff --git a/Task/Bitmap-Bresenhams-line-algorithm/EasyLang/bitmap-bresenhams-line-algorithm.easy b/Task/Bitmap-Bresenhams-line-algorithm/EasyLang/bitmap-bresenhams-line-algorithm.easy
new file mode 100644
index 0000000000..536d330933
--- /dev/null
+++ b/Task/Bitmap-Bresenhams-line-algorithm/EasyLang/bitmap-bresenhams-line-algorithm.easy
@@ -0,0 +1,37 @@
+proc pset x y . .
+   move x / 4 y / 4
+   rect 0.25 0.25
+.
+proc drawline x0 y0 x1 y1 . .
+   dx = abs (x1 - x0)
+   sx = -1
+   if x0 < x1
+      sx = 1
+   .
+   dy = abs (y1 - y0)
+   sy = -1
+   if y0 < y1
+      sy = 1
+   .
+   err = -dy div 2
+   if dx > dy
+      err = dx div 2
+   .
+   repeat
+      pset x0 y0
+      until x0 = x1 and y0 = y1
+      e2 = err
+      if e2 > -dx
+         err -= dy
+         x0 += sx
+      .
+      if e2 < dy
+         err += dx
+         y0 += sy
+      .
+   .
+.
+drawline 200 10 100 200
+drawline 100 200 200 390
+drawline 200 390 300 200
+drawline 300 200 200 10
diff --git a/Task/Bitmap-Bresenhams-line-algorithm/MiniScript/bitmap-bresenhams-line-algorithm.mini b/Task/Bitmap-Bresenhams-line-algorithm/MiniScript/bitmap-bresenhams-line-algorithm.mini
new file mode 100644
index 0000000000..e546a12bb6
--- /dev/null
+++ b/Task/Bitmap-Bresenhams-line-algorithm/MiniScript/bitmap-bresenhams-line-algorithm.mini
@@ -0,0 +1,38 @@
+drawLine = function(img, x0, y0, x1, y1, colr)
+	sign = function(a, b)
+		if a < b then return 1
+		return -1
+	end function
+	
+	dx = abs(x1 - x0)
+	sx = sign(x0, x1)
+	
+	dy = abs(y1 - y0)
+	sy = sign(y0, y1)
+	
+	if dx > dy then
+		err = dx
+	else
+		err = -dy
+	end if
+	err = floor(err / 2)
+	
+	while true
+		img.setPixel x0, y0, colr
+		if x0 == x1 and y0 == y1 then break
+		e2 = err
+		if e2 > -dx then
+			err -= dy
+			x0 += sx
+		end if
+		if e2 < dy then
+			err += dx
+			y0 += sy
+		end if
+	end while
+end function
+
+img= Image.create(320, 320)
+drawLine img, 0, 0, 250, 300, color.red
+gfx.clear
+gfx.drawImage img, 0, 0
diff --git a/Task/Bitmap-Flood-fill/MiniScript/bitmap-flood-fill.mini b/Task/Bitmap-Flood-fill/MiniScript/bitmap-flood-fill.mini
new file mode 100644
index 0000000000..ea71b8be0a
--- /dev/null
+++ b/Task/Bitmap-Flood-fill/MiniScript/bitmap-flood-fill.mini
@@ -0,0 +1,21 @@
+floodFill = function(bmp, x, y, targetColor, replacementColor)
+	// Check if pixel is outside the bounds
+	if not(0 < x < bmp.width) or not(0 < y < bmp.height) then return
+	
+	// Check the current pixel color
+	currentColor = bmp.pixel(x, y)
+	if currentColor != targetColor then return
+	
+	// Replace the color
+	bmp.setPixel x, y, replacementColor
+	// Recursively apply to adjacent pixels
+	floodFill(bmp, x + 1, y, targetColor, replacementColor)
+	floodFill(bmp, x - 1, y, targetColor, replacementColor)
+	floodFill(bmp, x, y + 1, targetColor, replacementColor)
+	floodFill(bmp, x, y - 1, targetColor, replacementColor)
+end function
+clear
+img = file.loadImage("Unfilledcirc.png")
+gfx.drawImage img, 0, 0
+floodFill gfx, 50, 50, "#FFFFFFFF", "#00FFFFFF"
+floodFill gfx, 100, 125, "#000000FF", "#0000FFFF"
diff --git a/Task/Bitmap-Histogram/Wren/bitmap-histogram.wren b/Task/Bitmap-Histogram/Wren/bitmap-histogram.wren
index a761b397f3..17a91f84af 100644
--- a/Task/Bitmap-Histogram/Wren/bitmap-histogram.wren
+++ b/Task/Bitmap-Histogram/Wren/bitmap-histogram.wren
@@ -3,7 +3,7 @@ import "graphics" for Canvas, Color, ImageData
 
 class ImageHistogram {
     construct new(filename, filename2) {
-        _image  = ImageData.loadFromFile(filename)
+        _image  = ImageData.load(filename)
         Window.resize(_image.width, _image.height)
         Canvas.resize(_image.width, _image.height)
         Window.title = filename2
diff --git a/Task/Bitmap-Read-a-PPM-file/Wren/bitmap-read-a-ppm-file.wren b/Task/Bitmap-Read-a-PPM-file/Wren/bitmap-read-a-ppm-file.wren
index 6de8e91656..e877a8972e 100644
--- a/Task/Bitmap-Read-a-PPM-file/Wren/bitmap-read-a-ppm-file.wren
+++ b/Task/Bitmap-Read-a-PPM-file/Wren/bitmap-read-a-ppm-file.wren
@@ -24,6 +24,7 @@ class Bitmap {
 
     loadPPMFile(fileName) {
         var ppm = FileSystem.load(fileName)
+        var count = ppm.count // ensure file is fully loaded before proceeding
         if (ppm[0..1] != "P6") {
             System.print("The loaded file is not a P6 file.")
             Process.exit()
diff --git a/Task/Bitmap-Read-an-image-through-a-pipe/Wren/bitmap-read-an-image-through-a-pipe.wren b/Task/Bitmap-Read-an-image-through-a-pipe/Wren/bitmap-read-an-image-through-a-pipe.wren
index 00286f7223..bb0079e85e 100644
--- a/Task/Bitmap-Read-an-image-through-a-pipe/Wren/bitmap-read-an-image-through-a-pipe.wren
+++ b/Task/Bitmap-Read-an-image-through-a-pipe/Wren/bitmap-read-an-image-through-a-pipe.wren
@@ -31,6 +31,7 @@ class Bitmap {
 
     loadPPMFile(fileName) {
         var ppm = FileSystem.load(fileName)
+        var count = ppm.count //ensure file is fully loaded before proceeding
         if (ppm[0..1] != "P6") {
             System.print("The loaded file is not a P6 file.")
             Process.exit()
diff --git a/Task/Bitmap-Write-a-PPM-file/Wren/bitmap-write-a-ppm-file.wren b/Task/Bitmap-Write-a-PPM-file/Wren/bitmap-write-a-ppm-file.wren
index f5e11667c2..a7b0e9e575 100644
--- a/Task/Bitmap-Write-a-PPM-file/Wren/bitmap-write-a-ppm-file.wren
+++ b/Task/Bitmap-Write-a-PPM-file/Wren/bitmap-write-a-ppm-file.wren
@@ -1,6 +1,7 @@
 import "graphics" for Canvas, ImageData, Color
 import "dome" for Window, Process
 import "io" for FileSystem
+import "./str" for Strs
 
 class Bitmap {
     construct new(name, width, height) {
@@ -21,16 +22,16 @@ class Bitmap {
 
     init() {
         // write bitmap to a PPM file
-        var ppm = "P6\n%(_w) %(_h)\n255\n"
+        var ppm = ["P6\n%(_w) %(_h)\n255\n"]
         for (y in 0..._h) {
             for (x in 0..._w) {
                 var c = pget(x, y)
-                ppm = ppm + String.fromByte(c.r)
-                ppm = ppm + String.fromByte(c.g)
-                ppm = ppm + String.fromByte(c.b)
+                ppm.add(String.fromByte(c.r))
+                ppm.add(String.fromByte(c.g))
+                ppm.add(String.fromByte(c.b))
             }
         }
-        FileSystem.save("output.ppm", ppm)
+        FileSystem.save("output.ppm", Strs.concat(ppm))
         Process.exit(0)
     }
 
diff --git a/Task/Bitmap/MiniScript/bitmap.mini b/Task/Bitmap/MiniScript/bitmap.mini
new file mode 100644
index 0000000000..b9f2eed398
--- /dev/null
+++ b/Task/Bitmap/MiniScript/bitmap.mini
@@ -0,0 +1,30 @@
+// MiniMicro version of MiniScript has all the
+// necessary methods built-in to complete this task.
+width = 256
+height = 256
+colr = color.aqua
+
+// Create the image with specified width/heigh. With
+// no parameters, it defaults width/height to 64 and
+// color to black
+img = Image.create(width, height, colr)
+
+// Create a diagonal line of multiple colors. Uses
+// Cartesian coordinates so (0, 0) is lower left corner.
+for i in range(0, 255)
+	img.setPixel i, i, color.rgb(i, i, i)
+end for
+
+// Get pixel color as RGBA hex values
+print "Color at pixel (100, 100): " + img.pixel(100, 100)
+print "Color at pixel (0, 0): " + img.pixel(0, 0)
+print "Color at pixel (127, 127): " + img.pixel(127, 127)
+print "Color at pixel (255, 255): " + img.pixel(255, 255)
+
+// Display the image, resizing it to 127 x 127
+gfx.drawImage img, 0, 0, 127, 127
+
+// Save the file - accepted file extensions:
+// tga, jpg, jpeg, and png (retains transparency)
+// Optional third parameter is JPG compression quality.
+file.saveImage "/usr/test.png", img
diff --git a/Task/Blum-integer/BASIC256/blum-integer.basic b/Task/Blum-integer/BASIC256/blum-integer.basic
new file mode 100644
index 0000000000..09ef9bc466
--- /dev/null
+++ b/Task/Blum-integer/BASIC256/blum-integer.basic
@@ -0,0 +1,40 @@
+global Prime1
+n = 3
+c = 0
+
+print "The first 50 Blum integers:"
+while True
+	if isSemiprime(n) then
+		if Prime1 % 4 = 3 then
+			Prime2 = n / Prime1
+			if (Prime2 <> Prime1) and (Prime2 % 4 = 3) then
+				c += 1
+				if c <= 50 then
+					print rjust(string(n), 4);
+					if c % 10 = 0 then print
+				end if
+				if c >= 26828 then
+					print : print "The 26828th Blum integer is: "; n
+					exit while
+				end if
+			end if
+		end if
+	end if
+	n += 2
+end while
+end
+
+function isSemiprime(n)
+	d = 3
+	c = 0
+	while d*d <= n
+		while n % d = 0
+			if c = 2 then return false
+			n /= d
+			c += 1
+		end while
+		d += 2
+	end while
+	Prime1 = n
+	return c = 1
+end function
diff --git a/Task/Blum-integer/Gambas/blum-integer.gambas b/Task/Blum-integer/Gambas/blum-integer.gambas
new file mode 100644
index 0000000000..027cc6a610
--- /dev/null
+++ b/Task/Blum-integer/Gambas/blum-integer.gambas
@@ -0,0 +1,44 @@
+Public Prime1 As Integer
+
+Public Sub Main()
+
+  Dim n As Integer = 3, c As Integer = 0, Prime2 As Integer
+
+  Print "The first 50 Blum integers:"
+  Do
+    If isSemiprime(n) Then
+      If Prime1 Mod 4 = 3 Then
+        Prime2 = n / Prime1
+        If (Prime2 <> Prime1) And (Prime2 Mod 4 = 3) Then
+          c += 1
+          If c <= 50 Then
+            Print Format$(n, "####");
+            If c Mod 10 = 0 Then Print
+          End If
+          If c >= 26828 Then
+            Print "\nThe 26828th Blum integer is: "; n
+            Break
+          End If
+        End If
+      End If
+    End If
+    n += 2
+  Loop
+
+End
+
+Function isSemiprime(n As Integer) As Boolean
+
+  Dim d As Integer = 3, c As Integer = 0
+  While d * d <= n
+    While n Mod d = 0
+      If c = 2 Then Return False
+      n /= d
+      c += 1
+    Wend
+    d += 2
+  Wend
+  Prime1 = n
+  Return c = 1
+
+End Function
diff --git a/Task/Blum-integer/Haskell/blum-integer.hs b/Task/Blum-integer/Haskell/blum-integer.hs
new file mode 100644
index 0000000000..641108a516
--- /dev/null
+++ b/Task/Blum-integer/Haskell/blum-integer.hs
@@ -0,0 +1,114 @@
+{-# LANGUAGE BangPatterns        #-}
+{-# LANGUAGE DeriveFunctor       #-}
+{-# LANGUAGE ScopedTypeVariables #-}
+
+module Rosetta.BlumInteger
+    ( Stream (..)
+    , Stats (..)
+    , toList
+    , blumIntegers
+    , countLastDigits
+    ) where
+
+import           GHC.Natural              (Natural)
+import           Math.NumberTheory.Primes (Prime (..), nextPrime)
+
+-- | A stream is an infinite list.
+data Stream a = a :> Stream a
+    deriving Functor
+
+-- | Converts a stream to the corresponding infinite list.
+toList :: Stream a -> [a]
+toList (x :> xs) = x : toList xs
+
+unsafeFromList :: [a] -> Stream a
+unsafeFromList = foldr (:>) $ error "fromList: finite list"
+
+primes3mod4 :: Stream (Prime Natural)
+primes3mod4 = unsafeFromList [nextPrime 3, nextPrime 7 ..]
+
+-- Assume:
+--   * All numbers in all the streams are distinct.
+--   * Each stream is sorted.
+--   * In the stream of streams, the first element of each stream is less than the first element of the next stream.
+sortStreams :: forall a. Ord a => Stream (Stream a) -> Stream a
+sortStreams ((x :> xs) :> xss) = x :> sortStreams (insert xs xss)
+  where
+    insert :: Stream a -> Stream (Stream a) -> Stream (Stream a)
+    insert ys@(y :> _) zss@(zs@(z :> _) :> zss')
+        | y < z     = ys :> zss
+        | otherwise = zs :> insert ys zss'
+
+-- | The
+blumIntegers :: Stream Natural
+blumIntegers = sortStreams $ go $ unPrime <$> primes3mod4
+  where
+    go :: Stream Natural -> Stream (Stream Natural)
+    go (p :> ps) = ((p *) <$> ps) :> go ps
+
+data Stats a = Stats
+    { s1 :: !a
+    , s3 :: !a
+    , s7 :: !a
+    , s9 :: !a
+    } deriving (Show, Eq, Ord, Functor)
+
+lastDigit :: Natural -> Int
+lastDigit n = fromIntegral $ n `mod` 10
+
+updateCount :: Stats Int -> Natural -> Stats Int
+updateCount !dc n = case lastDigit n of
+    1 -> dc { s1 = s1 dc + 1 }
+    3 -> dc { s3 = s3 dc + 1 }
+    7 -> dc { s7 = s7 dc + 1 }
+    9 -> dc { s9 = s9 dc + 1 }
+    _ -> error "updateCount: impossible"
+
+countLastDigits :: forall a. Fractional a => Int -> Stream Natural -> Stats a
+countLastDigits n = fmap f . go Stats { s1 = 0, s3 = 0, s7 = 0, s9 = 0 } n
+  where
+    go :: Stats Int -> Int -> Stream Natural -> Stats Int
+    go !dc 0 _         = dc
+    go !dc m (x :> xs) = go (updateCount dc x) (m - 1) xs
+
+    f :: Int -> a
+    f m = fromIntegral m / fromIntegral n
+
+
+{-# LANGUAGE NumericUnderscores #-}
+{-# LANGUAGE TypeApplications   #-}
+
+module Main
+    ( main
+    ) where
+
+import           Control.Monad       (forM_)
+import           Text.Printf         (printf)
+
+import           Numeric.Natural     (Natural)
+
+import           Rosetta.BlumInteger
+
+main :: IO ()
+main = do
+    let xs = toList blumIntegers
+
+    printf "The first 50 Blum integers are:\n\n"
+    forM_ (take 50 xs) $ \x -> do
+        printf "%3d\n" x
+    printf "\n"
+
+    nth xs 26_828
+    forM_ [100_000, 200_000 .. 400_000] $ nth xs
+    printf "\n"
+
+    printf "Distribution by final digit for the first 400000 Blum integers:\n\n"
+    let Stats r1 r3 r7 r9 = countLastDigits @Double 400_000 blumIntegers
+    forM_ [(1 :: Int, r1), (3, r3), (7, r7), (9, r9)] $ \(d, r) ->
+        printf "%d: %6.3f%%\n" d $ r * 100
+    printf "\n"
+
+  where
+
+    nth :: [Natural] -> Int -> IO ()
+    nth xs n = printf "The %6dth Blum integer is %8d.\n" n $ xs !! (n - 1)
diff --git a/Task/Blum-integer/Perl/blum-integer.pl b/Task/Blum-integer/Perl/blum-integer.pl
index cd1f209fa2..cadee23b20 100644
--- a/Task/Blum-integer/Perl/blum-integer.pl
+++ b/Task/Blum-integer/Perl/blum-integer.pl
@@ -1,43 +1,23 @@
 use v5.36;
-use enum ;
-use ntheory ;
+use ntheory qw(is_square is_semiprime factor vecall);
 
-sub comma { reverse ((reverse shift) =~ s/.{3}\K/,/gr) =~ s/^,//r }
-sub table ($c, @V) { my $t = $c * (my $w = 5); ( sprintf( ('%'.$w.'d')x@V, @V) ) =~ s/.{1,$t}\K/\n/gr }
+sub comma          { reverse((reverse shift) =~ s/.{3}\K/,/gr)                      =~ s/^,//r }
+sub table ($c, @V) { my $t = $c * (my $w = 5); (sprintf(('%' . $w . 'd') x @V, @V)) =~ s/.{1,$t}\K/\n/gr }
 
 sub is_blum ($n) {
-    return false if $n < 2 or is_prime $n;
-    my $factor = find_factor($n);
-    my $div = int($n / $factor);
-    return true if is_prime($factor) && is_prime($div) && ($div != $factor) && ($factor%4 == 3) && ($div%4 == 3);
-    false;
+    ($n % 4) == 1 && is_semiprime($n) && !is_square($n) && vecall { ($_ % 4) == 3 } factor($n);
 }
 
-sub find_factor ($n, $constant = 1) {
-    my($x, $rho, $factor) = (2, 1, 1);
-    while ($factor == 1) {
-        $rho *= 2;
-        my $fixed = $x;
-        for (0..$rho) {
-            $x = ( $x * $x + $constant ) % $n;
-            $factor = gcd(($x-$fixed), $n);
-            last if 1 < $factor;
-        }
-    }
-    $factor = find_factor($n, $constant+1) if $n == $factor;
-    $factor;
-}
-
-my($i, @blum, %C);
 my @nth = (26828, 1e5, 2e5, 3e5, 4e5);
 
-while (++$i) {
+my (@blum, %C);
+for (my $i = 1 ; ; ++$i) {
     push @blum, $i if is_blum $i;
-    last if $nth[-1] == scalar @blum;
+    last if $nth[-1] == @blum;
 }
-$C{substr $_, -1, 1}++ for @blum;
+$C{$_ % 10}++ for @blum;
 
-say "The first fifty Blum integers:\n" . table 10, @blum[0..49];
-printf "The %7sth Blum integer: %9s\n", comma($_), comma $blum[$_-1] for @nth;
+say "The first fifty Blum integers:\n" . table 10, @blum[0 .. 49];
+printf "The %7sth Blum integer: %9s\n", comma($_), comma $blum[$_ - 1] for @nth;
 say '';
-printf "$_: %6d (%.3f%%)\n", $C{$_}, 100*$C{$_}/scalar @blum for <1 3 7 9>;
+printf "$_: %6d (%.3f%%)\n", $C{$_}, 100 * $C{$_} / scalar @blum for <1 3 7 9>;
diff --git a/Task/Blum-integer/Sidef/blum-integer.sidef b/Task/Blum-integer/Sidef/blum-integer.sidef
new file mode 100644
index 0000000000..233dbd2bb2
--- /dev/null
+++ b/Task/Blum-integer/Sidef/blum-integer.sidef
@@ -0,0 +1,47 @@
+func blum_integers(upto) {
+
+    var L = []
+    var P = idiv(upto, 3).primes.grep{ .is_congruent(3, 4) }
+
+    for i in (1..P.end) {
+        var p = P[i]
+        for j in (^i) {
+            var t = p*P[j]
+            break if (t > upto)
+            L << t
+        }
+    }
+
+    L.sort
+}
+
+func blum_first(n) {
+    var upto = int(4.5*n*log(n) / log(log(n)))
+    loop {
+        var B = blum_integers(upto)
+        if (B.len >= n) {
+            return B.first(n)
+        }
+        upto *= 2
+    }
+}
+
+with (50) {|n|
+    say "The first #{n} Blum integers:"
+    blum_first(n).slices(10).each { .map{ "%4s" % _ }.join.say }
+}
+
+say ''
+
+for n in (26828, 1e5, 2e5, 3e5, 4e5) {
+    var B = blum_first(n)
+    say "#{n.commify}th Blum integer: #{B.last}"
+
+    if (n == 4e5) {
+        say ''
+        for k in (1,3,7,9) {
+            var T = B.grep { .is_congruent(k, 10) }
+            say "#{k}: #{'%6s' % T.len} (#{T.len / B.len * 100}%)"
+        }
+    }
+}
diff --git a/Task/Boolean-values/S-BASIC/boolean-values.basic b/Task/Boolean-values/S-BASIC/boolean-values.basic
new file mode 100644
index 0000000000..3936ed7a7f
--- /dev/null
+++ b/Task/Boolean-values/S-BASIC/boolean-values.basic
@@ -0,0 +1,29 @@
+$constant true = 0FFFFH
+$constant false = 0
+
+var a, another = char
+var b, adult, age = integer
+var c = real
+
+repeat
+   begin
+     input "Applicant's age in years"; age
+     adult = (age >= 18)
+     if adult then
+        print "Applicant has full access"
+     else
+        print "Applicant has restricted access"
+     input "Do another (y/n)"; another
+   end
+until not another
+
+a = (2 > 3)
+b = (2 > 3)
+c = (2 > 3)
+print "2 > 3 as char: "; a
+print "2 > 3 as int : "; b
+print "not (2 > 3)  : "; not b
+print "2 > 3 as real: "; c
+print "not (2 > 3)  : "; not c
+
+end
diff --git a/Task/Box-the-compass/Chipmunk-Basic/box-the-compass.basic b/Task/Box-the-compass/Chipmunk-Basic/box-the-compass.basic
new file mode 100644
index 0000000000..3138b8ccc3
--- /dev/null
+++ b/Task/Box-the-compass/Chipmunk-Basic/box-the-compass.basic
@@ -0,0 +1,32 @@
+100 dim names$(31)
+110 restore 300
+120 for c = 0 to ubound(names$)
+130   read a$
+140   names$(c) = a$
+150 next c
+160 dim degrees(32)
+170 restore 380
+180 for c = 0 to ubound(degrees)
+190   read b
+200   degrees(c) = b
+210 next c
+220 for i = 0 to ubound(degrees)
+230   j = int((degrees(i)+5.625)/11.25)
+240   if j > 31 then j = j-32
+250   print using "####.##";degrees(i);
+260   print using "  ##  ";j;
+270   print names$(j)
+280 next i
+290 end
+300 data "North","North by east","North-northeast","Northeast by north"
+310 data "Northeast","Northeast by east","East-northeast","East by north"
+320 data "East","East by south","East-southeast","Southeast by east"
+330 data "Southeast","Southeast by south","South-southeast","South by east"
+340 data "South","South by west","South-southwest","Southwest by south"
+350 data "Southwest","Southwest by west","West-southwest","West by south"
+360 data "West","West by north","West-northwest","Northwest by west","Northwest"
+370 data "Northwest by north","North-northwest","North by west","North"
+380 data 0,16.87,16.88,33.75,50.62,50.63,67.5,84.37,84.38,101.25
+390 data 118.12,118.13,135,151.87,151.88,168.75,185.62,185.63,202.5,219.37
+400 data 219.38,236.25,253.12,253.13,270,286.87,286.88,303.75,320.62,320.63
+410 data 337.5,354.37,354.388
diff --git a/Task/Box-the-compass/GW-BASIC/box-the-compass.basic b/Task/Box-the-compass/GW-BASIC/box-the-compass.basic
new file mode 100644
index 0000000000..ddb7d421b7
--- /dev/null
+++ b/Task/Box-the-compass/GW-BASIC/box-the-compass.basic
@@ -0,0 +1,32 @@
+100 dim n$(31)
+110 restore 300
+120 for c = 0 to 31
+130   read a$
+140   n$(c) = a$
+150 next c
+160 dim d(32)
+170 restore 380
+180 for c = 0 to 32
+190   read b
+200   d(c) = b
+210 next c
+220 for i = 0 to 32
+230   j = int((d(i)+5.625)/11.25)
+240   if j > 31 then j = j-32
+250   print using "####.##";d(i);
+260   print using "  ##  ";j;
+270   print n$(j)
+280 next i
+290 end
+300 data "North","North by east","North-northeast","Northeast by north"
+310 data "Northeast","Northeast by east","East-northeast","East by north"
+320 data "East","East by south","East-southeast","Southeast by east"
+330 data "Southeast","Southeast by south","South-southeast","South by east"
+340 data "South","South by west","South-southwest","Southwest by south"
+350 data "Southwest","Southwest by west","West-southwest","West by south"
+360 data "West","West by north","West-northwest","Northwest by west","Northwest"
+370 data "Northwest by north","North-northwest","North by west","North"
+380 data 0,16.87,16.88,33.75,50.62,50.63,67.5,84.37,84.38,101.25
+390 data 118.12,118.13,135,151.87,151.88,168.75,185.62,185.63,202.5,219.37
+400 data 219.38,236.25,253.12,253.13,270,286.87,286.88,303.75,320.62,320.63
+410 data 337.5,354.37,354.38
diff --git a/Task/Box-the-compass/Quite-BASIC/box-the-compass.basic b/Task/Box-the-compass/Quite-BASIC/box-the-compass.basic
new file mode 100644
index 0000000000..cfb9ca1e07
--- /dev/null
+++ b/Task/Box-the-compass/Quite-BASIC/box-the-compass.basic
@@ -0,0 +1,28 @@
+100 array n$
+110 for c = 0 to 31
+120   read a$
+130   let n$(c) = a$
+140 next c
+150 array d
+160 for c = 0 to 33
+170   read b
+180   let d(c) = b
+190 next c
+200 for i = 1 to 33
+210   let j = int((d(i)+5.625)/11.25)
+220   if j > 31 then let j = j-32
+230   print d(i);"  ";j;"  ";n$(j)
+240 next i
+250 end
+260 data "North","North by east","North-northeast","Northeast by north"
+270 data "Northeast","Northeast by east","East-northeast","East by north"
+280 data "East","East by south","East-southeast","Southeast by east"
+290 data "Southeast","Southeast by south","South-southeast","South by east"
+300 data "South","South by west","South-southwest","Southwest by south"
+310 data "Southwest","Southwest by west","West-southwest","West by south"
+320 data "West","West by north","West-northwest","Northwest by west","Northwest"
+330 data "Northwest by north","North-northwest","North by west","North"
+340 data 0,16.87,16.88,33.75,50.62,50.63,67.5,84.37,84.38,101.25
+350 data 118.12,118.13,135,151.87,151.88,168.75,185.62,185.63,202.5,219.37
+360 data 219.38,236.25,253.12,253.13,270,286.87,286.88,303.75,320.62,320.63
+370 data 337.5,354.37,354.38
diff --git a/Task/Box-the-compass/Wren/box-the-compass.wren b/Task/Box-the-compass/Wren/box-the-compass.wren
index 4f9636894d..29895256bb 100644
--- a/Task/Box-the-compass/Wren/box-the-compass.wren
+++ b/Task/Box-the-compass/Wren/box-the-compass.wren
@@ -1,4 +1,4 @@
-import "/fmt" for Fmt
+import "./fmt" for Fmt
 
 // 'cpx' returns integer index from 0 to 31 corresponding to compass point.
 // Input heading h is in degrees.  Note this index is a zero-based index
@@ -61,6 +61,6 @@ var i = 0
 for (h in r) {
     var index = i%32 + 1  // printable index computed per pseudocode
     var d = degreesToCompassPoint.call(h)
-    System.print("%(Fmt.d(4, index))   %(Fmt.s(-19, d)) %(Fmt.f(7, h, 2))°")
+    Fmt.print("$4d  $-19s $7.2f°", index, d, h)
     i = i + 1
 }
diff --git a/Task/Boyer-Moore-string-search/Yabasic/boyer-moore-string-search.basic b/Task/Boyer-Moore-string-search/Yabasic/boyer-moore-string-search.basic
new file mode 100644
index 0000000000..817f6f4107
--- /dev/null
+++ b/Task/Boyer-Moore-string-search/Yabasic/boyer-moore-string-search.basic
@@ -0,0 +1,103 @@
+case_insensitive = false
+
+sub preBmBc(pat$)
+    local m, i
+
+    m = len(pat$)
+    redim bmBc(m)
+    for i = 1 to m-1
+        bmBc(val(mid$(pat$, i, 1))) = m - i
+    next
+end sub
+
+sub suffixes(pat$)
+    local m, g, i, f
+	
+	m = len(pat$)
+    g = m
+    redim suff(m)
+    suff(m) = m
+    for i = m-1 to 1 step -1
+        if i > g and suff(i + m - f) < i - g then
+            suff(i) = suff(i + m - f)
+        else
+            if i < g  g = i
+            f = i
+            while g >= 1 and mid$(pat$, g, 1) = mid$(pat$, g + m - f, 1)
+                g = q - 1
+            wend
+            suff(i) = f - g
+        fi
+    next
+end sub
+
+sub preBmGs(pat$)
+    local m, j, i
+	
+	m = len(pat$)
+    j = 1
+    redim suff(m)
+    redim bmGs(m)
+    for i = m to 1 step -1
+        if suff(i) = i then
+            while j < m - i
+                if bmGs(j) = m  bmGs(j) = m - i
+                j = j + 1
+            wend
+        fi
+    next
+    for i = 1 to m-1
+        bmGs(m - suff(i)) = m - i
+    next
+end sub
+
+sub BM(pat$, s$, case_insensitive)
+    local pins
+
+    pins$ = "'" + pat$ + "' in " + "'" + s$ + "'"
+    if case_insensitive then
+        pat$ = lower$(pat$)
+        s$ = lower$(s$)
+    fi
+
+    //* Preprocessing *//
+    preBmGs(pat$)
+    preBmBc(pat$)
+
+    //* Searching *//
+    j = 0
+	n = len(s$)
+	m = len(pat$)
+	i = m
+
+    while j <= n - m
+        i = i - 1
+        if mid$(pat$,i,1) <> mid$(s$,i+j,1)  break
+
+        if i < 1 then j = j + bmGs(0) else j = j + max(bmGs(i), bmBc(len(mid$(s$,i+j,1)) - m + i)) : fi
+    wend
+
+    many = instr(s$, pat$)
+    tmp$ = ""
+
+    if not many > 0 then
+        print "No ", pins$
+    else
+        while many > 0    //if not found loop will be skipped
+            tmp$ = tmp$ + str$(many) + ","
+            many = instr(s$, pat$, many + 1)
+        wend
+        print "Found ", pins$, " at indices [", tmp$, chr$(8), "]"
+    fi
+end sub
+
+BM("GCAGAGAG","GCATCGCAGAGAGTATACAGTACG")
+BM("TCTA","GCTAGCTCTACGAGTCTA")
+BM("TAATAAA","GGCTATAATGCGTA")
+BM("word","there would have been a time for such a word")
+BM("needle","needle need noodle needle")
+book$ = "InhisbookseriesTheArtofComputerProgrammingpublishedbyAddisonWesleyDKnuthusesanimaginarycomputertheMIXanditsassociatedmachinecodeandassemblylanguagestoillustratetheconceptsandalgorithmsastheyarepresented"
+BM("put",book$)
+BM("and",book$)
+farm$ = "Nearby farms grew a half acre of alfalfa on the dairy's behalf, with bales of all that alfalfa exchanged for milk."
+BM("alfalfa",farm$)
diff --git a/Task/Brazilian-numbers/Wren/brazilian-numbers.wren b/Task/Brazilian-numbers/Wren/brazilian-numbers.wren
index bebe93c21d..75e420db2a 100644
--- a/Task/Brazilian-numbers/Wren/brazilian-numbers.wren
+++ b/Task/Brazilian-numbers/Wren/brazilian-numbers.wren
@@ -1,4 +1,4 @@
-import "/math" for Int
+import "./math" for Int
 
 var sameDigits = Fn.new { |n, b|
     var f = n % b
diff --git a/Task/Brilliant-numbers/Wren/brilliant-numbers.wren b/Task/Brilliant-numbers/Wren/brilliant-numbers.wren
index 316a248147..6862926360 100644
--- a/Task/Brilliant-numbers/Wren/brilliant-numbers.wren
+++ b/Task/Brilliant-numbers/Wren/brilliant-numbers.wren
@@ -1,5 +1,4 @@
 import "./math" for Int
-import "./seq" for Lst
 import "./fmt" for Fmt
 
 var primes = Int.primeSieve(1e7-1)
@@ -35,7 +34,7 @@ System.print("First 100 brilliant numbers:")
 var brilliant = getBrilliant.call(2, 10000, false)[0]
 brilliant.sort()
 brilliant = brilliant[0..99]
-for (chunk in Lst.chunks(brilliant, 10)) Fmt.print("$4d", chunk)
+Fmt.tprint("$4d", brilliant, 10)
 System.print()
 for (k in 1..12) {
     var limit = 10.pow(k)
diff --git a/Task/Bulls-and-cows-Player/FutureBasic/bulls-and-cows-player.basic b/Task/Bulls-and-cows-Player/FutureBasic/bulls-and-cows-player.basic
new file mode 100644
index 0000000000..0008f0a2b9
--- /dev/null
+++ b/Task/Bulls-and-cows-Player/FutureBasic/bulls-and-cows-player.basic
@@ -0,0 +1,135 @@
+cgRect wndrect
+str15  guess
+short  count, x, y = 60, stock, state = 1
+
+begin enum 3
+  _bullLabel
+  _cowLabel
+  _horzLine
+  _vertLine
+  _newGameBtn
+  _help
+  _alert = 101
+end enum
+
+void local fn showGuess
+  print %(20, y)chr$(guess[2]);
+  print %(59, y)chr$(guess[3]);
+  print %(98, y)chr$(guess[4]);
+  print %(137,y)chr$(guess[5]);
+  x = 210
+end fn
+
+void local fn growWindow
+  CGRect r = fn WindowContentRect( 1 )
+  r.size.height += 32
+  r.origin.y    -= 32
+  window 1,,r
+end fn
+
+void local fn init  //Create array of possible 4-digit numbers
+  uint8 d1,d2,d3,d4
+  for d1 = 1 to 9
+    for d2 = 1 to 9
+      if d2 == d1 then continue
+      for d3 = 1 to 9
+        if d3 == d2 || d3 == d1 then continue
+        for d4 = 1 to 9
+          if d4 == d1 || d4 == d2 || d4 == d3  then continue
+          mda_add(0) = @(d1*1000 + d2*100 + d3*10 + d4)
+        next
+      next
+    next
+  next
+end fn
+
+void local fn NewGame
+  window 1,, wndrect
+  cls
+  count = mda_count(0)
+  guess = str$( mda_integer( rnd(count) - 1 ) )
+  state = 1 : stock = 0 : y = 60
+  fn growWindow
+  text @"menlo bold",24,fn ColorControlText
+  fn showGuess
+end fn
+
+local fn play( n as byte )
+  short i, r, s = 0
+  uint8 bnc
+  print %(x,y) n;
+  if state
+    if n < 4 then stock = 10*n : state-- : x = 270 : exit fn
+    s = -1
+  else
+    stock += n
+    str15 s2
+    for i = 0 to count - 1
+      bnc = 0
+      s2 = str$( mda_integer(i) )
+      for r = 2 to 5
+        n = instr$(1, s2, chr$(guess[r]) )
+        if n == r then bnc += 10 else if n then bnc++
+      next
+      if bnc == stock then mda_swap(s),(i) : s ++
+    next
+  end if
+  select s
+    case 0 : stop "There is a problem with one of your counts. ¬
+      Choose CONTINUE to start again."
+      fn newGame : exit fn
+    case 1, -1 : y = 20 : text,,fn colorRed
+      if s == 1 then guess = str$( mda_integer(0) )
+    case else   count = s
+      guess = str$( mda_integer(rnd(s)-1) )
+      y += 32 : state ++
+  end select
+  fn showGuess
+  fn growWindow
+end fn
+
+void local fn BuildWindows
+  subclass window 1, @"Bulls and cows solver", (0,0,311,114), NSWindowStyleMaskTitled + NSWindowStyleMaskClosable
+  wndrect = fn WindowContentRect( 1 )
+  textlabel _bullLabel, @"🐂", (198,59,38,40)
+  textlabel _cowLabel, @"🐄", (255,59,38,40)
+  ControlSetFontWithName( _bullLabel, NULL, 30 )
+  ControlSetFontWithName( _cowLabel, NULL, 30 )
+  box _horzLine,, (12,50,287,5), NSBoxSeparator
+  box _vertLine,, (180,12,5,90), NSBoxSeparator
+  ViewSetAutoresizingMask( _vertLine, NSViewHeightSizable )
+  button _newGameBtn,,, @"New Game", (15,15,100,32)
+  ViewSetAutoresizingMask( _newGameBtn, NSViewMaxYMargin )
+  CGRect r = fn WindowContentRect( 1 )
+  r.size.width += 120
+  r.size.height -= 20
+  r.origin.x    -= 60
+  r.origin.y    += 145
+  window 2, @"How to play",r
+  text,16
+  textlabel _help ,@"Choose a number with 4 unique digits, 1-9. ¬
+  I'll try to guess it.¬
+  \nAfter each guess, type the number (0-4) of Bulls, then of Cows.¬
+  \n    A Bull (🐂) is a correct digit in the right position.¬
+  \n    A Cow (🐄) is a correct digit in the wrong position.",(20,20,420,70),2
+end fn
+
+void local fn DoDialog( evt as long, tag as long )
+  select ( evt )
+    case _windowKeyDown  //: stop
+      CFStringRef ch = fn EventCharacters
+      if instr( 0, @"01234", ch ) < 5
+        DialogEventSetBool(YES) : fn play( intval( ch ) )
+      end if
+      //if fn StringIsEqual( ch, @"?" ) then window 2
+    case _btnClick : fn NewGame : window -2
+    case _windowWillClose : if tag == 1 then end //else window -2 : DialogEventSetBool(YES)
+  end select
+end fn
+
+on dialog fn DoDialog
+fn buildWindows
+fn init
+fn newGame
+
+HandleEvents
diff --git a/Task/Bulls-and-cows/Quackery/bulls-and-cows.quackery b/Task/Bulls-and-cows/Quackery/bulls-and-cows.quackery
new file mode 100644
index 0000000000..6cfbe91c91
--- /dev/null
+++ b/Task/Bulls-and-cows/Quackery/bulls-and-cows.quackery
@@ -0,0 +1,57 @@
+  [ size 4 = dup not if
+      [ say "Must be four digits." cr ] ]       is 4chars   (   $ --> b     )
+
+  [ true swap witheach
+      [ char 1 char 9 1+ within not if
+          [ say "Must be 1-9 only." cr
+            not conclude ] ] ]                  is 1-9      (   $ --> b     )
+
+  [ 0 9 of
+    swap witheach
+      [ 1 unrot char 1 - poke ]
+    0 swap witheach +
+    4 = dup not if
+      [ say "Must all be different." cr ] ]     is all-diff (   $ --> b     )
+
+
+  [ $ "Guess four digits, 1-9, no duplicates: "
+    input
+    dup 4chars   not iff drop again
+    dup 1-9      not iff drop again
+    dup all-diff not iff drop again ]           is guess    (   $ --> $     )
+
+  [ $ "123456789" shuffle 4 split drop ]        is rand$    (     --> $     )
+
+  [ 2 pack transpose
+    [] swap witheach
+      [ dup unpack != iff
+          [ nested join ]
+        else drop ]
+    dup [] != if
+      [ transpose unpack ]
+    4 over size - ]                             is -bulls   ( $ $ --> $ $ n )
+
+  [ join sort
+    0 swap
+    behead swap witheach
+      [ tuck = if [ dip 1+ ] ]
+    drop ]                                      is cows     ( $ $ --> n     )
+
+  [ say "Guess the four numbers." cr cr
+    say "They are all different and"
+    say " between 1 and 9 inclusive." cr cr
+    randomise rand$
+    [ guess
+      over -bulls
+      dup 4 = iff say "Correct." done
+      dup echo 1 = iff
+        [ say " bull." cr ]
+      else
+        [ say " bulls." cr ]
+      cows
+      dup echo 1 = iff
+        [ say " cow." cr ]
+      else
+        [ say " cows." cr ]
+      again ]
+      cr drop 2drop ]                           is play     (     -->       )
diff --git a/Task/Bulls-and-cows/SETL/bulls-and-cows.setl b/Task/Bulls-and-cows/SETL/bulls-and-cows.setl
new file mode 100644
index 0000000000..5ec7cb23da
--- /dev/null
+++ b/Task/Bulls-and-cows/SETL/bulls-and-cows.setl
@@ -0,0 +1,58 @@
+program bulls_and_cows;
+    setrandom(0);
+
+    print("Bulls and cows");
+    print("--------------");
+    print;
+
+    secret := make_secret();
+
+    loop do
+        guess := read_guess();
+        tries +:= 1;
+        bulls := count_bulls(guess, secret);
+        cows := count_cows(guess, secret);
+        print(bulls, "bulls,", cows, "cows.");
+        if bulls = 4 then
+            print("You win!  Tries:", tries);
+            exit;
+        end if;
+    end loop;
+
+    proc make_secret();
+        digits := [];
+        loop for i in [1..4] do
+            loop until not digit in digits do
+                digit := 1 + random(8);
+            end loop;
+            digits with:= digit;
+        end loop;
+        return digits;
+    end proc;
+
+    proc read_guess();
+        loop do
+            putchar("Guess? ");
+            flush(stdout);
+            guess := getline(stdin);
+            if exists d in guess | not d in "123456789" then
+                print("invalid input:", d);
+            elseif #guess /= #{d : d in guess} then
+                print("no duplicates allowed");
+            elseif #guess /= 4 then
+                print("need 4 digits");
+            else
+                exit;
+            end if;
+        end loop;
+        return [val d : d in guess];
+    end proc;
+
+    proc count_bulls(guess, secret);
+        return #[i : i in [1..4] | guess(i) = secret(i)];
+    end proc;
+
+    proc count_cows(guess, secret);
+        return #[d : d in guess | d in secret] - count_bulls(guess, secret);
+    end proc;
+end program;
diff --git a/Task/Burrows-Wheeler-transform/Sidef/burrows-wheeler-transform.sidef b/Task/Burrows-Wheeler-transform/Sidef/burrows-wheeler-transform-1.sidef
similarity index 100%
rename from Task/Burrows-Wheeler-transform/Sidef/burrows-wheeler-transform.sidef
rename to Task/Burrows-Wheeler-transform/Sidef/burrows-wheeler-transform-1.sidef
diff --git a/Task/Burrows-Wheeler-transform/Sidef/burrows-wheeler-transform-2.sidef b/Task/Burrows-Wheeler-transform/Sidef/burrows-wheeler-transform-2.sidef
new file mode 100644
index 0000000000..1da2b5b145
--- /dev/null
+++ b/Task/Burrows-Wheeler-transform/Sidef/burrows-wheeler-transform-2.sidef
@@ -0,0 +1,81 @@
+define LOOKAHEAD_LEN = 128
+
+func bwt_sort (String s) {    # O(n * LOOKAHEAD_LEN) space (fast)
+    ^s.len -> map {|i|
+        var t = s.slice(i, LOOKAHEAD_LEN)
+
+        if (t.len < LOOKAHEAD_LEN) {
+            t += s.slice(0, min(i, LOOKAHEAD_LEN - t.len))
+        }
+
+        [t, i]
+    }.sort {|a,b|
+        (a[0] <=> b[0]) || (s.rotate(a[1]) <=> s.rotate(b[1]))
+    }.map { .[1] }
+}
+
+func bwt_encode(String s) {
+
+    var bwt    = bwt_sort(s)
+    var ret    = bwt.map {|i| s.slice(i-1, 1) }.join
+    var prefix = s.slice(0, LOOKAHEAD_LEN)
+    var len    = prefix.len
+
+    var idx = 0;
+    for i in (bwt) {
+
+        var lookahead = s.slice(i, len)
+
+        if (lookahead.len < len) {
+            lookahead += s.slice(0, len - lookahead.len)
+        }
+
+        if (lookahead == prefix) {
+            var row = s.rotate(i)
+            if (row == s) {
+                break
+            }
+        }
+        ++idx
+    }
+
+    return (ret, idx)
+}
+
+func bwt_decode(String bwt, Number idx) {    # fast inversion
+
+    var tail = bwt.chars
+    var head = tail.sort
+
+    var indices = Hash()
+    tail.each_kv {|i,v|
+        indices{v} := [] << i
+    }
+
+    var table = []
+    head.each_kv {|i,v|
+        table[i] = indices{v}.shift
+    }
+
+    var dec = ''
+    var i = idx
+
+    head.len.times {
+        dec += head[i]
+        i = table[i]
+    }
+
+    return dec
+}
+
+var tests = [
+    "banana", "appellee", "dogwood", "TOBEORNOTTOBEORTOBEORNOT"
+    "SIX.MIXED.PIXIES.SIFT.SIXTY.PIXIE.DUST.BOXES",
+]
+
+tests.each { |str|
+    var (enc, idx) = bwt_encode(str)
+    var dec = bwt_decode(enc, idx)
+    say "BWT(#{dec.dump}) = (#{enc.dump}, #{idx})"
+    assert_eq(str, dec)
+}
diff --git a/Task/Burrows-Wheeler-transform/Wren/burrows-wheeler-transform.wren b/Task/Burrows-Wheeler-transform/Wren/burrows-wheeler-transform.wren
index a7bd08211e..87fa55f8dd 100644
--- a/Task/Burrows-Wheeler-transform/Wren/burrows-wheeler-transform.wren
+++ b/Task/Burrows-Wheeler-transform/Wren/burrows-wheeler-transform.wren
@@ -1,4 +1,4 @@
-import "/sort" for Sort
+import "./sort" for Sort
 
 var stx = "\x02"
 var etx = "\x03"
diff --git a/Task/CRC-32/Wren/crc-32.wren b/Task/CRC-32/Wren/crc-32.wren
index ba28aa8043..74eb19c7db 100644
--- a/Task/CRC-32/Wren/crc-32.wren
+++ b/Task/CRC-32/Wren/crc-32.wren
@@ -1,4 +1,4 @@
-import "/fmt" for Conv
+import "./fmt" for Conv
 
 class CRC32 {
     static init() {
diff --git a/Task/CUSIP/C++/cusip.cpp b/Task/CUSIP/C++/cusip.cpp
index 801e0800fb..12e2532ff9 100644
--- a/Task/CUSIP/C++/cusip.cpp
+++ b/Task/CUSIP/C++/cusip.cpp
@@ -12,9 +12,11 @@ bool isCusip(const std::string& s) {
         if ('0' <= c && c <= '9') {
             v = c - '0';
         } else if ('A' <= c && c <= 'Z') {
-            v = c - '@';
+            v = c - 'A' + 10;
         } else if (c = '*') {
             v = 36;
+        } else if (c = '@') {
+            v = 37;
         } else if (c = '#') {
             v = 38;
         } else {
diff --git a/Task/CUSIP/EasyLang/cusip.easy b/Task/CUSIP/EasyLang/cusip.easy
new file mode 100644
index 0000000000..f9ebc73bfc
--- /dev/null
+++ b/Task/CUSIP/EasyLang/cusip.easy
@@ -0,0 +1,29 @@
+func check inp$ .
+   for i = 1 to 8
+      c = strcode substr inp$ i 1
+      if c >= 48 and c <= 57
+         v = c - 48
+      elif c >= 65 and c <= 91
+         v = c - 64 + 9
+      elif c = 42
+         v = 36
+      elif c = 64
+         v = 37
+      elif c = 35
+         v = 38
+      .
+      if i mod 2 = 0
+         v *= 2
+      .
+      sum += v div 10 + v mod 10
+   .
+   return if (10 - (sum mod 10)) mod 10 = number substr inp$ 9 1
+.
+for s$ in [ "037833100" "17275R102" "38259P508" "594918104" "68389X106" "68389X105" ]
+   write s$ & " is "
+   if check s$ = 1
+      print "valid"
+   else
+      print "invalid"
+   .
+.
diff --git a/Task/Caesar-cipher/EasyLang/caesar-cipher.easy b/Task/Caesar-cipher/EasyLang/caesar-cipher.easy
new file mode 100644
index 0000000000..8fe83e93e8
--- /dev/null
+++ b/Task/Caesar-cipher/EasyLang/caesar-cipher.easy
@@ -0,0 +1,15 @@
+func$ crypt str$ key .
+   for c$ in strchars str$
+      c = strcode c$
+      if c >= 65 and c <= 90
+         c = (c + key - 65) mod 26 + 65
+      elif c >= 97 and c <= 122
+         c = (c + key - 97) mod 26 + 97
+      .
+      enc$ &= strchar c
+   .
+   return enc$
+.
+enc$ = crypt "Rosetta Code" 4
+print enc$
+print crypt enc$ -4
diff --git a/Task/Caesar-cipher/JavaScript/caesar-cipher-1.js b/Task/Caesar-cipher/JavaScript/caesar-cipher-1.js
index 44f68eb7d2..88ee6f5baf 100644
--- a/Task/Caesar-cipher/JavaScript/caesar-cipher-1.js
+++ b/Task/Caesar-cipher/JavaScript/caesar-cipher-1.js
@@ -1,6 +1,6 @@
 function caesar (text, shift) {
   return text.toUpperCase().replace(/[^A-Z]/g,'').replace(/./g, function(a) {
-    return String.fromCharCode(65+(a.charCodeAt(0)-65+shift)%26);
+    return String.fromCharCode(((a.charCodeAt(0) - 65 + shift) % 26 + 26) % 26 + 65);
   });
 }
 
diff --git a/Task/Caesar-cipher/JavaScript/caesar-cipher-2.js b/Task/Caesar-cipher/JavaScript/caesar-cipher-2.js
index 3d30b7a5ac..f2a3cc1a6b 100644
--- a/Task/Caesar-cipher/JavaScript/caesar-cipher-2.js
+++ b/Task/Caesar-cipher/JavaScript/caesar-cipher-2.js
@@ -2,4 +2,4 @@ var caesar = (text, shift) => text
   .toUpperCase()
   .replace(/[^A-Z]/g, '')
   .replace(/./g, a =>
-    String.fromCharCode(65 + (a.charCodeAt(0) - 65 + shift) % 26));
+    String.fromCharCode(((a.charCodeAt(0) - 65 + shift) % 26 + 26) % 26 + 65));
diff --git a/Task/Caesar-cipher/V-(Vlang)/caesar-cipher.v b/Task/Caesar-cipher/V-(Vlang)/caesar-cipher.v
index 41f5a5ece3..9390d56276 100644
--- a/Task/Caesar-cipher/V-(Vlang)/caesar-cipher.v
+++ b/Task/Caesar-cipher/V-(Vlang)/caesar-cipher.v
@@ -1,7 +1,6 @@
 import rand
 
-const
-(
+const (
 	lo_abc = 'abcdefghijklmnopqrstuvwxyz'
 	up_abc = 'ABCDEFGHIJKLMNIPQRSTUVWXYZ'
 )
@@ -27,9 +26,7 @@ fn caesar_encrypt(str string, key int) string {
 			nchr = chr + u8(offset)
 			if nchr > u8(122) {nchr -= 26}
 		}
-		else {
-			nchr = chr
-		}
+		else {nchr = chr}
 		chr_arr << nchr
 	}
 	return chr_arr.bytestr()
diff --git a/Task/Calculating-the-value-of-e/BBC-BASIC/calculating-the-value-of-e.basic b/Task/Calculating-the-value-of-e/BBC-BASIC/calculating-the-value-of-e.basic
new file mode 100644
index 0000000000..fd02c1168e
--- /dev/null
+++ b/Task/Calculating-the-value-of-e/BBC-BASIC/calculating-the-value-of-e.basic
@@ -0,0 +1,14 @@
+      @%=&1302
+      EPSILON = 1.0E-15
+      Fact    = 1
+      E       = 2.0
+      E0      = 0.0
+      N%      = 2
+      WHILE ABS(E - E0) >= EPSILON
+        E0    = E
+        Fact *= N%
+        N%   += 1
+        E    += 1.0 / Fact
+      ENDWHILE
+      PRINT "e = ";E
+      END
diff --git a/Task/Calculating-the-value-of-e/Maxima/calculating-the-value-of-e.maxima b/Task/Calculating-the-value-of-e/Maxima/calculating-the-value-of-e.maxima
new file mode 100644
index 0000000000..d86f7a0058
--- /dev/null
+++ b/Task/Calculating-the-value-of-e/Maxima/calculating-the-value-of-e.maxima
@@ -0,0 +1,4 @@
+block(cfexpand([2,1,2,1,1,4,1,1,6,1,1,8,1,1,10,1,1,12,1,1,14]),float(%%[1,1]/%%[2,1]));
+
+/* Comparing with built-in constant */
+%e,numer;
diff --git a/Task/Calculating-the-value-of-e/Raku/calculating-the-value-of-e.raku b/Task/Calculating-the-value-of-e/Raku/calculating-the-value-of-e.raku
index 5e21f9dc82..1dba38ced5 100644
--- a/Task/Calculating-the-value-of-e/Raku/calculating-the-value-of-e.raku
+++ b/Task/Calculating-the-value-of-e/Raku/calculating-the-value-of-e.raku
@@ -3,7 +3,7 @@
 # terms could be ∞. Practically, calculating an infinite
 # series takes an awfully long time so limit to 500.
 
-constant 𝑒 = [\+] 1.FatRat X/ 1, |[\*] 1..*;
+constant 𝑒 = [\+] flat 1, [\/] 1.FatRat..*;
 
 .say for 𝑒[500].comb(80);
 
diff --git a/Task/Calendar---for-REAL-programmers/Wren/calendar---for-real-programmers-1.wren b/Task/Calendar---for-REAL-programmers/Wren/calendar---for-real-programmers-1.wren
index 5f1cf2fe3c..c7071309fd 100644
--- a/Task/Calendar---for-REAL-programmers/Wren/calendar---for-real-programmers-1.wren
+++ b/Task/Calendar---for-REAL-programmers/Wren/calendar---for-real-programmers-1.wren
@@ -1,6 +1,6 @@
-IMPORT "/DATE" FOR DATE
-IMPORT "/FMT" FOR FMT
-IMPORT "/SEQ" FOR LST
+IMPORT "./DATE" FOR DATE
+IMPORT "./FMT" FOR FMT
+IMPORT "./SEQ" FOR LST
 
 VAR CALENDAR = FN.NEW { |YEAR|
     VAR SNOOPY = "🐶"
diff --git a/Task/Calendar---for-REAL-programmers/Wren/calendar---for-real-programmers-2.wren b/Task/Calendar---for-REAL-programmers/Wren/calendar---for-real-programmers-2.wren
index 3667328d51..ecad274a0e 100644
--- a/Task/Calendar---for-REAL-programmers/Wren/calendar---for-real-programmers-2.wren
+++ b/Task/Calendar---for-REAL-programmers/Wren/calendar---for-real-programmers-2.wren
@@ -1,5 +1,5 @@
 import "io" for File
-import "/str" for Str
+import "./str" for Str
 import "meta" for Meta
 
 var keywords = ["import", "for", "var", "in", "if", "else"]
diff --git a/Task/Calendar/EasyLang/calendar.easy b/Task/Calendar/EasyLang/calendar.easy
new file mode 100644
index 0000000000..610fcd6a41
--- /dev/null
+++ b/Task/Calendar/EasyLang/calendar.easy
@@ -0,0 +1,70 @@
+year = 1969
+#
+wkdays$ = "Su Mo Tu We Th Fr Sa"
+pagewide = 80
+blank$ = ""
+month$[] = [ "  January " " February " "   March  " "   April  " "   May    " "  June    " "   July   " "  August  " " September" " October  " " November " " December " ]
+days[] = [ 31 28 31 30 31 30 31 31 30 31 30 31 ]
+#
+func$ center txt$ .
+   h$ = substr blank$ 1 (pagewide - len txt$) / 2
+   return h$ & txt$ & h$
+.
+func$ makewk fst lst day .
+   for i to day - 1
+      wstr$ &= "   "
+   .
+   for i = fst to lst
+      i$ = i
+      if i <= 9
+         i$ = " " & i
+      .
+      wstr$ &= i$ & " "
+   .
+   return substr wstr$ & blank$ 1 20
+.
+proc dow y . ndow leap .
+   leap = 0
+   if y mod 4 = 0
+      leap = 1
+   .
+   if y mod 100 = 0
+      leap = 0
+   .
+   if y mod 400 = 0
+      leap = 1
+   .
+   ndow = y * 365 + y div 4 - y div 100 + y div 400 + 1
+   ndow = (ndow - leap) mod1 7
+.
+len lin$[] 8
+proc prmonth nmonth newdow monsize . .
+   lin$[1] &= "     " & month$[nmonth] & "       "
+   lin$[2] &= wkdays$ & "  "
+   lin$[3] &= makewk 1 (8 - newdow) newdow & "  "
+   for i = 4 to 7
+      lin$[i] &= makewk (9 + h - newdow) lower monsize (15 + h - newdow) 1 & "  "
+      h += 7
+   .
+   lin$[8] &= makewk (37 - newdow) monsize 1 & "  "
+   if len lin$[3] + 22 > pagewide
+      for i to 8
+         print center lin$[i]
+         lin$[i] = ""
+      .
+   .
+.
+for i to pagewide
+   blank$ &= " "
+.
+dow year newdow leap
+print center "[ picture of Snoopy goes here ]"
+print center year
+for i = 1 to 12
+   monsize = days[i]
+   if i = 2 and leap = 1
+      monsize = 29
+   .
+   prmonth i newdow monsize
+   newdow = (monsize + newdow) mod1 7
+.
diff --git a/Task/Calendar/Wren/calendar.wren b/Task/Calendar/Wren/calendar.wren
index 1dc91cb26c..03d66c8e6e 100644
--- a/Task/Calendar/Wren/calendar.wren
+++ b/Task/Calendar/Wren/calendar.wren
@@ -1,6 +1,6 @@
-import "/date" for Date
-import "/fmt" for Fmt
-import "/seq" for Lst
+import "./date" for Date
+import "./fmt" for Fmt
+import "./seq" for Lst
 
 var calendar = Fn.new { |year|
     var snoopy = "🐶"
diff --git a/Task/Calkin-Wilf-sequence/Wren/calkin-wilf-sequence.wren b/Task/Calkin-Wilf-sequence/Wren/calkin-wilf-sequence.wren
index e5b31b635d..59005917df 100644
--- a/Task/Calkin-Wilf-sequence/Wren/calkin-wilf-sequence.wren
+++ b/Task/Calkin-Wilf-sequence/Wren/calkin-wilf-sequence.wren
@@ -1,5 +1,5 @@
-import "/rat" for Rat
-import "/fmt" for Fmt, Conv
+import "./rat" for Rat
+import "./fmt" for Fmt, Conv
 
 var calkinWilf = Fn.new { |n|
     var cw = List.filled(n, null)
diff --git a/Task/Call-a-foreign-language-function/Wren/call-a-foreign-language-function-1.wren b/Task/Call-a-foreign-language-function/Wren/call-a-foreign-language-function-1.wren
index 7b3877814e..310a2356e7 100644
--- a/Task/Call-a-foreign-language-function/Wren/call-a-foreign-language-function-1.wren
+++ b/Task/Call-a-foreign-language-function/Wren/call-a-foreign-language-function-1.wren
@@ -1,4 +1,4 @@
-/* call_foreign_language_function.wren */
+/* Call_a_foreign-language_function.wren */
 
 class C {
     foreign static strdup(s)
diff --git a/Task/Call-a-foreign-language-function/Wren/call-a-foreign-language-function-2.wren b/Task/Call-a-foreign-language-function/Wren/call-a-foreign-language-function-2.wren
index 6116600f52..512f65b85d 100644
--- a/Task/Call-a-foreign-language-function/Wren/call-a-foreign-language-function-2.wren
+++ b/Task/Call-a-foreign-language-function/Wren/call-a-foreign-language-function-2.wren
@@ -64,7 +64,7 @@ int main() {
     config.bindForeignMethodFn = &bindForeignMethod;
     WrenVM* vm = wrenNewVM(&config);
     const char* module = "main";
-    const char* fileName = "call_foreign_language_function.wren";
+    const char* fileName = "Call_a_foreign-language_function.wren";
     char *script = readFile(fileName);
     WrenInterpretResult result = wrenInterpret(vm, module, script);
     switch (result) {
diff --git a/Task/Call-a-function-in-a-shared-library/Wren/call-a-function-in-a-shared-library-1.wren b/Task/Call-a-function-in-a-shared-library/Wren/call-a-function-in-a-shared-library-1.wren
index 4d26fdf3f5..f97bc294c8 100644
--- a/Task/Call-a-function-in-a-shared-library/Wren/call-a-function-in-a-shared-library-1.wren
+++ b/Task/Call-a-function-in-a-shared-library/Wren/call-a-function-in-a-shared-library-1.wren
@@ -1,4 +1,4 @@
-/* call_shared_library_function.wren */
+/* Call_a_function_in_a_shared_library.wren */
 
 var RTLD_LAZY = 1
 
diff --git a/Task/Call-a-function-in-a-shared-library/Wren/call-a-function-in-a-shared-library-3.wren b/Task/Call-a-function-in-a-shared-library/Wren/call-a-function-in-a-shared-library-3.wren
index 586de3f24f..c8a57aad3e 100644
--- a/Task/Call-a-function-in-a-shared-library/Wren/call-a-function-in-a-shared-library-3.wren
+++ b/Task/Call-a-function-in-a-shared-library/Wren/call-a-function-in-a-shared-library-3.wren
@@ -1,4 +1,4 @@
-/* gcc call_shared_library_function.c -o call_shared_library_function -ldl -lwren -lm */
+/* gcc Call_a_function_in_a_shared_library.c -o Call_a_function_in_a_shared_library -ldl -lwren -lm */
 
 #include 
 #include 
@@ -97,7 +97,7 @@ int main(int argc, char **argv) {
     config.bindForeignMethodFn = &bindForeignMethod;
     WrenVM* vm = wrenNewVM(&config);
     const char* module = "main";
-    const char* fileName = "call_shared_library_function.wren";
+    const char* fileName = "Call_a_function_in_a_shared_library.wren";
     char *script = readFile(fileName);
     WrenInterpretResult result = wrenInterpret(vm, module, script);
     switch (result) {
diff --git a/Task/Call-a-function/EasyLang/call-a-function.easy b/Task/Call-a-function/EasyLang/call-a-function.easy
index 68e19af6c4..7259ecaad6 100644
--- a/Task/Call-a-function/EasyLang/call-a-function.easy
+++ b/Task/Call-a-function/EasyLang/call-a-function.easy
@@ -1,7 +1,7 @@
 func sqr n .
    return n * n
 .
-sqr 3
+print sqr 3
 #
 proc divmod a b . q r .
    q = a div b
diff --git a/Task/Call-an-object-method/FutureBasic/call-an-object-method.basic b/Task/Call-an-object-method/FutureBasic/call-an-object-method.basic
new file mode 100644
index 0000000000..b0f49874ee
--- /dev/null
+++ b/Task/Call-an-object-method/FutureBasic/call-an-object-method.basic
@@ -0,0 +1,21 @@
+local fn FBClassDemo
+  // Class
+  ClassRef class = fn MutableStringClass
+  // Cocoa base class name as human-readable string
+  print fn StringFromClass( class )
+
+  // Instantiate
+  CFMutableStringRef mutStr = fn MutableStringNew
+
+  // Method with single argument
+  MutableStringSetString( mutStr, @"Hello, World!" )
+  print mutStr
+
+  // Method with multiple arguments
+  MutableStringReplaceAllOccurrencesOfString( mutStr, @"World", @"Rosetta Code" )
+  print mutStr
+end fn
+
+fn FBClassDemo
+
+HandleEvents
diff --git a/Task/Camel-case-and-snake-case/FutureBasic/camel-case-and-snake-case-1.basic b/Task/Camel-case-and-snake-case/FutureBasic/camel-case-and-snake-case-1.basic
new file mode 100644
index 0000000000..3956f8db63
--- /dev/null
+++ b/Task/Camel-case-and-snake-case/FutureBasic/camel-case-and-snake-case-1.basic
@@ -0,0 +1,47 @@
+include "NSLog.incl"
+local fn snake_toCamel( s as CFStringRef ) as CFStringRef
+  long r,f
+  s = fn StringByTrimmingCharactersInSet( s, fn CFCharacterSetGetPredefined(_kCFCharacterSetWhitespace ))
+  for r = 1 to len(s)-2
+    f = instr(0, @"_- ", mid(s, r, 1))
+    if f <> NSNotFound
+      s = fn stringwithformat(@"%@%@%@", left( s, r ), ucase(mid(s,r+1,1)), mid(s,r+2))
+    end if
+  next
+end fn = s
+
+local fn CamelTo_snake( s as CFStringRef ) as CFStringRef
+  long r,f
+  s = fn StringByTrimmingCharactersInSet( s, fn CFCharacterSetGetPredefined(_kCFCharacterSetWhitespace ))
+  s = fn StringByReplacingOccurrencesOfString( s, @" ", @"_")
+  s = fn StringByReplacingOccurrencesOfString( s, @"-", @"_")
+  for r = 1 to len(s)-2
+    f = instr(0, @"ABCDEFGHIJKLMNOPQRSTUVWXYZ", mid(s, r, 1))
+    if f <> NSNotFound
+      if fn StringIsEqual(@"_", mid(s, r-1, 1)) then continue
+      s = fn stringwithformat(@"%@%@%@", left( s, r ), @"_", mid(s,r))
+    end if
+  next
+  s = fn stringwithformat(@"%@%@",left( s, 1), lcase(mid(s, 1)))
+end fn = s
+
+local fn show( s1 as CFStringRef )
+  CFStringRef  s = @"                                    "
+  CFStringRef s2 = fn snake_toCamel( s1 )
+  CFStringRef s3 = fn CamelTo_snake( s1 )
+  nslog(@"  \"%@\"%@\"%@\"%@\"%@\"", s1, mid(s, len(s1)), s2, mid(s, len(s2)), s3)
+end fn
+
+nslog( @"%@",@"String                                ¬
+fn snake_toCamel                      ¬
+fn CamelTo_snake")
+fn show(@"snakeCase")
+fn show(@"snake_case")
+fn show(@"variable_10_case")
+fn show(@"variable10Case")
+fn show(@"ɛrgo rE tHis")
+fn show(@"hurry-up-joe!")
+fn show(@"c://my-docs/happy_Flag-Day/12.doc")
+fn show(@"  spaces  ")
+
+handleevents
diff --git a/Task/Camel-case-and-snake-case/FutureBasic/camel-case-and-snake-case-2.basic b/Task/Camel-case-and-snake-case/FutureBasic/camel-case-and-snake-case-2.basic
new file mode 100644
index 0000000000..bce565d1b6
--- /dev/null
+++ b/Task/Camel-case-and-snake-case/FutureBasic/camel-case-and-snake-case-2.basic
@@ -0,0 +1,9 @@
+String                      fn snake_toCamel            fn CamelTo_snake
+  "snakeCase"                 "snakeCase"                 "snake_case"
+  "snake_case"                "snakeCase"                 "snake_case"
+  "variable_10_case"          "variable10Case"            "variable_10_case"
+  "variable10Case"            "variable10Case"            "variable10_case"
+  "ɛrgo rE tHis"              "ɛrgoRETHis"                "ɛrgo_r_e_t_his"
+  "hurry-up-joe!"             "hurryUpJoe!"               "hurry_up_joe!"
+  "  spaces  "                "spaces"                    "spaces"
+  "c://my-docs/happy_Flag-Day/12.doc" "c://myDocs/happyFlagDay/12.doc" "c://my_docs/happy_flag_day/12.doc"
diff --git a/Task/Camel-case-and-snake-case/Wren/camel-case-and-snake-case.wren b/Task/Camel-case-and-snake-case/Wren/camel-case-and-snake-case.wren
index e7bdf59398..66d04c3e49 100644
--- a/Task/Camel-case-and-snake-case/Wren/camel-case-and-snake-case.wren
+++ b/Task/Camel-case-and-snake-case/Wren/camel-case-and-snake-case.wren
@@ -1,5 +1,5 @@
 import "./str" for Char
-import "/fmt" for Fmt
+import "./fmt" for Fmt
 
 var toCamel = Fn.new { |snake|
     snake = snake.trim()
diff --git a/Task/Canny-edge-detector/Wren/canny-edge-detector.wren b/Task/Canny-edge-detector/Wren/canny-edge-detector.wren
index afd47fef7f..788766699d 100644
--- a/Task/Canny-edge-detector/Wren/canny-edge-detector.wren
+++ b/Task/Canny-edge-detector/Wren/canny-edge-detector.wren
@@ -8,7 +8,7 @@ var MaxBrightness = 255
 class Canny {
     construct new(inFile, outFile) {
         Window.title = "Canny edge detection"
-        var image1 = ImageData.loadFromFile(inFile)
+        var image1 = ImageData.load(inFile)
         var w = image1.width
         var h = image1.height
         Window.resize(w * 2 + 20, h)
diff --git a/Task/Canonicalize-CIDR/Wren/canonicalize-cidr.wren b/Task/Canonicalize-CIDR/Wren/canonicalize-cidr.wren
index cc9e382b53..77aa99f6f3 100644
--- a/Task/Canonicalize-CIDR/Wren/canonicalize-cidr.wren
+++ b/Task/Canonicalize-CIDR/Wren/canonicalize-cidr.wren
@@ -1,5 +1,5 @@
-import "/fmt" for Fmt, Conv
-import "/str" for Str
+import "./fmt" for Fmt, Conv
+import "./str" for Str
 
 // canonicalize a CIDR block: make sure none of the host bits are set
 var canonicalize = Fn.new { |cidr|
diff --git a/Task/Cantor-set/Amazing-Hopper/cantor-set-1.hopper b/Task/Cantor-set/Amazing-Hopper/cantor-set-1.hopper
new file mode 100644
index 0000000000..610006e483
--- /dev/null
+++ b/Task/Cantor-set/Amazing-Hopper/cantor-set-1.hopper
@@ -0,0 +1,30 @@
+#include 
+
+#define WIDTH 81
+#define HEIGHT 5
+
+#proto cantor(_X_,_Y_,_Z_)
+
+algoritmo
+
+    decimales '0'
+    dimensionar(HEIGHT,WIDTH) matriz rellena("#",líneas)
+
+    _cantor(1, WIDTH, 2)
+
+    fijar separador 'NULO', imprimir( líneas, NL)
+
+terminar
+
+subrutinas
+
+cantor(inicio, largo, índice)
+    seg=0
+    #( seg:=(int(largo/3))), no es cero?, entonces{
+        #basic{
+            líneas[índice:HEIGHT, (inicio+seg):((inicio+seg*2)-1)] = " ")
+            cantor( inicio, seg, índice+1 ) )
+            cantor( (inicio+(seg*2)), seg, índice+1 ) )
+        }
+    }
+retornar
diff --git a/Task/Cantor-set/Amazing-Hopper/cantor-set-2.hopper b/Task/Cantor-set/Amazing-Hopper/cantor-set-2.hopper
new file mode 100644
index 0000000000..f168c7ad06
--- /dev/null
+++ b/Task/Cantor-set/Amazing-Hopper/cantor-set-2.hopper
@@ -0,0 +1,19 @@
+#include 
+
+#define HEIGHT 5
+
+algoritmo
+
+    decimales '0'
+    cantor="", j=0
+    iterar
+         i=0
+         cadenas 's,v'
+         iterar grupo ( ++i, #(i< (3^j)),\
+             #( v = occurs("1", dectobase(i,3)) ? " " : "#"; )\
+             #( s = s $ replicate(v, 3^(HEIGHT-j-1) )) )
+         #(cantor = cantor $  s $ NL)
+    mientras ' #(j<=HEIGHT); ++j '
+    imprimir(cantor)
+
+terminar
diff --git a/Task/Cantor-set/BASIC256/cantor-set.basic b/Task/Cantor-set/BASIC256/cantor-set.basic
index 11443bfaa7..a639c3badc 100644
--- a/Task/Cantor-set/BASIC256/cantor-set.basic
+++ b/Task/Cantor-set/BASIC256/cantor-set.basic
@@ -30,4 +30,4 @@ for i = 0 to alto - 1
 	next j
 	print
 next i
-End
+end
diff --git a/Task/Cantor-set/Chipmunk-Basic/cantor-set.basic b/Task/Cantor-set/Chipmunk-Basic/cantor-set.basic
new file mode 100644
index 0000000000..f210bcd116
--- /dev/null
+++ b/Task/Cantor-set/Chipmunk-Basic/cantor-set.basic
@@ -0,0 +1,34 @@
+100 cls
+110 ancho = 81
+120 alto = 5
+130 dim intervalo$(alto,ancho)
+140 '
+150 sub cantor()
+160   for i = 0 to alto-1
+170     for j = 0 to ancho-1
+180       intervalo$(i,j) = chr$(254)
+190     next j
+200   next i
+210 end sub
+220 '
+230 sub conjcantor(inicio,longitud,indice)
+240   segmento = longitud/3
+250   if segmento = 0 then exit sub
+260   for i = indice to alto-1
+270     for j = inicio+segmento to inicio+segmento*2-1
+280       intervalo$(i,j) = chr$(32)
+290     next j
+300   next i
+310   conjcantor(inicio,segmento,indice+1)
+320   conjcantor(inicio+segmento*2,segmento,indice+1)
+330 end sub
+340 '
+350 cantor()
+360 conjcantor(0,ancho,1)
+370 for i = 0 to alto-1
+380   for j = 0 to ancho-1
+390     print intervalo$(i,j);
+400   next j
+410   print
+420 next i
+430 end
diff --git a/Task/Cantor-set/EasyLang/cantor-set.easy b/Task/Cantor-set/EasyLang/cantor-set.easy
new file mode 100644
index 0000000000..61ccf82fa3
--- /dev/null
+++ b/Task/Cantor-set/EasyLang/cantor-set.easy
@@ -0,0 +1,11 @@
+color 555
+proc cantor x y sz . .
+   if sz > 0.1
+      sz3 = sz / 3
+      move x y - sz3
+      rect sz sz3
+      cantor x y - sz3 sz3
+      cantor x + 2 * sz3 y - sz3 sz3
+   .
+.
+cantor 0 80 100
diff --git a/Task/Cantor-set/MiniScript/cantor-set.mini b/Task/Cantor-set/MiniScript/cantor-set.mini
new file mode 100644
index 0000000000..b619bb4a1a
--- /dev/null
+++ b/Task/Cantor-set/MiniScript/cantor-set.mini
@@ -0,0 +1,21 @@
+cantorSet = function(start, length, depth)
+	if depth == 0 then return [[start, start+length - 1]]
+	
+	newLen = length / 3
+	
+	leftInterval = cantorSet(start, newLen, depth - 1)
+	rightInterval = cantorSet(start + 2 * newLen, newLen, depth - 1)
+	
+	return leftInterval + rightInterval
+end function
+
+for depth in range(0, 4)
+	output =[" "] * 81
+	segments = cantorSet(1, 81,depth)
+	for segment in segments
+		for x in range(segment[0] - 1, segment[1]-1)
+			output[x] = "#"
+		end for
+	end for
+	print output.join("")
+end for
diff --git a/Task/Cantor-set/QBasic/cantor-set.basic b/Task/Cantor-set/QBasic/cantor-set.basic
new file mode 100644
index 0000000000..1cea523f30
--- /dev/null
+++ b/Task/Cantor-set/QBasic/cantor-set.basic
@@ -0,0 +1,34 @@
+SUB Cantor
+    FOR i = 0 TO alto - 1
+        FOR j = 0 TO ancho - 1
+            intervalo$(i, j) = CHR$(254) '"#"
+        NEXT j
+    NEXT i
+END SUB
+
+SUB ConjCantor (inicio, longitud, indice)
+    segmento = INT(longitud / 3)
+    IF segmento = 0 THEN EXIT SUB
+    FOR i = indice TO alto - 1
+        FOR j = inicio + segmento TO inicio + segmento * 2 - 1
+            intervalo$(i, j) = CHR$(32) '" "
+        NEXT j
+    NEXT i
+    CALL ConjCantor(inicio, segmento, indice + 1)
+    CALL ConjCantor(inicio + segmento * 2, segmento, indice + 1)
+END SUB
+
+CONST ancho = 81
+CONST alto = 5
+DIM SHARED intervalo$(alto, ancho)
+
+CLS
+CALL Cantor
+CALL ConjCantor(0, ancho, 1)
+FOR i = 0 TO alto - 1
+    FOR j = 0 TO ancho - 1
+        PRINT intervalo$(i, j);
+    NEXT j
+    PRINT
+NEXT i
+END
diff --git a/Task/Cantor-set/True-BASIC/cantor-set.basic b/Task/Cantor-set/True-BASIC/cantor-set.basic
new file mode 100644
index 0000000000..b5b6e510e3
--- /dev/null
+++ b/Task/Cantor-set/True-BASIC/cantor-set.basic
@@ -0,0 +1,34 @@
+LET ancho = 81
+LET alto = 5
+DIM intervalo$(0,0)
+MAT REDIM intervalo$(0 TO alto, 0 TO ancho)
+
+SUB cantor
+    FOR i = 0 TO alto-1
+        FOR j = 0 TO ancho-1
+            LET intervalo$(i, j) = "#"      !CHR$(254)
+        NEXT j
+    NEXT i
+END SUB
+
+SUB conjcantor (inicio,longitud,indice)
+    LET segmento = INT(longitud/3)
+    IF segmento = 0 THEN EXIT SUB
+    FOR i = indice TO alto-1
+        FOR j = inicio+segmento TO inicio+segmento*2-1
+            LET intervalo$(i, j) = CHR$(32)      !" "
+        NEXT j
+    NEXT i
+    CALL conjcantor (inicio, segmento, indice+1)
+    CALL conjcantor (inicio+segmento*2, segmento, indice+1)
+END SUB
+
+CALL cantor
+CALL conjcantor (0, ancho, 1)
+FOR i = 0 TO alto-1
+    FOR j = 0 TO ancho-1
+        PRINT intervalo$(i, j);
+    NEXT j
+    PRINT
+NEXT i
+END
diff --git a/Task/Cantor-set/Yabasic/cantor-set.basic b/Task/Cantor-set/Yabasic/cantor-set.basic
new file mode 100644
index 0000000000..f24006497c
--- /dev/null
+++ b/Task/Cantor-set/Yabasic/cantor-set.basic
@@ -0,0 +1,33 @@
+ancho = 81
+alto = 5
+dim intervalo$(alto, ancho)
+
+Cantor()
+ConjCantor(0, ancho, 1)
+for i = 0 to alto - 1
+  for j = 0 to ancho - 1
+    print intervalo$(i, j);
+  next j
+  print
+next i
+end
+
+sub Cantor()
+  for i = 0 to alto - 1
+    for j = 0 to ancho - 1
+      intervalo$(i, j) = chr$(254)  //"#"
+    next j
+  next i
+end sub
+
+sub ConjCantor(inicio, longitud, indice)
+  segmento = longitud / 3
+  if segmento = 0  return
+  for i = indice to alto - 1
+    for j = inicio + segmento to inicio + segmento * 2 - 1
+      intervalo$(i, j) = " "
+    next j
+  next i
+  ConjCantor(inicio, segmento, indice + 1)
+  ConjCantor(inicio + segmento * 2, segmento, indice + 1)
+end sub
diff --git a/Task/Carmichael-3-strong-pseudoprimes/ALGOL-68/carmichael-3-strong-pseudoprimes.alg b/Task/Carmichael-3-strong-pseudoprimes/ALGOL-68/carmichael-3-strong-pseudoprimes.alg
index a949478d3b..64d945f7d8 100644
--- a/Task/Carmichael-3-strong-pseudoprimes/ALGOL-68/carmichael-3-strong-pseudoprimes.alg
+++ b/Task/Carmichael-3-strong-pseudoprimes/ALGOL-68/carmichael-3-strong-pseudoprimes.alg
@@ -30,7 +30,8 @@ FOR prime1 FROM 2 TO 61 DO
                         INT prime3 = 1 + ( prime1 * prime2 OVER h3 );
                         IF is prime[ prime3 ] THEN
                             IF ( prime2 * prime3 ) MOD ( prime1 - 1 ) = 1 THEN
-                                print( ( whole( prime1, 0 ), " ", whole( prime2, 0 ), " ", whole( prime3, 0 ), newline ) )
+                                print( ( whole( prime1, 0 ), " ", whole( prime2, 0 ), " ", whole( prime3, 0 ) ) );
+                                print( ( newline ) )
                             FI
                         FI
                     FI
diff --git a/Task/Carmichael-3-strong-pseudoprimes/Chipmunk-Basic/carmichael-3-strong-pseudoprimes.basic b/Task/Carmichael-3-strong-pseudoprimes/Chipmunk-Basic/carmichael-3-strong-pseudoprimes.basic
new file mode 100644
index 0000000000..366bdbb08c
--- /dev/null
+++ b/Task/Carmichael-3-strong-pseudoprimes/Chipmunk-Basic/carmichael-3-strong-pseudoprimes.basic
@@ -0,0 +1,36 @@
+100 cls
+110 max_sieve = 10000000 ' 10^7
+120 dim isprime(max_sieve)
+130 sub carmichael3(p1)
+140  if isprime(p1) = 0 then goto 440
+150 for h3 = 1 to p1-1
+160   t1 = (h3+p1)*(p1-1)
+170   t2 = (-p1*p1) mod h3
+180   if t2 < 0 then t2 = t2+h3
+190   for d = 1 to h3+p1-1
+200    if t1 mod d = 0 and t2 = (d mod h3) then
+210     p2 = 1+int(t1/d)
+220     if isprime(p2) = 0 then goto 270
+230     p3 = 1+int(p1*p2/h3)
+240     if isprime(p3) = 0 or ((p2*p3) mod (p1-1)) <> 1 then goto 270
+250     print format$(p1,"###");" * ";format$(p2,"####");" * ";format$(p3,"#####")
+260    endif
+270   next d
+280  next h3
+290 end sub
+300 'set up sieve
+310 for i = 3 to max_sieve step 2
+320  isprime(i) = 1
+330 next i
+340 isprime(2) = 1
+350 for i = 3 to sqr(max_sieve) step 2
+360  if isprime(i) = 1 then
+370   for j = i*i to max_sieve step i*2
+380    isprime(j) = 0
+390   next j
+400  endif
+410 next i
+420 for i = 2 to 61
+430  carmichael3(i)
+440 next i
+450 end
diff --git a/Task/Carmichael-3-strong-pseudoprimes/EasyLang/carmichael-3-strong-pseudoprimes.easy b/Task/Carmichael-3-strong-pseudoprimes/EasyLang/carmichael-3-strong-pseudoprimes.easy
new file mode 100644
index 0000000000..cbe08cb092
--- /dev/null
+++ b/Task/Carmichael-3-strong-pseudoprimes/EasyLang/carmichael-3-strong-pseudoprimes.easy
@@ -0,0 +1,30 @@
+func isprim num .
+   i = 2
+   while i <= sqrt num
+      if num mod i = 0
+         return 0
+      .
+      i += 1
+   .
+   return 1
+.
+proc carmichael3 p1 . .
+   for h3 = 1 to p1 - 1
+      for d = 1 to h3 + p1 - 1
+         if (h3 + p1) * (p1 - 1) mod d = 0 and -p1 * p1 mod h3 = d mod h3
+            p2 = 1 + (p1 - 1) * (h3 + p1) div d
+            if isprim p2 = 1
+               p3 = 1 + (p1 * p2 div h3)
+               if isprim p3 = 1 and (p2 * p3) mod (p1 - 1) = 1
+                  print p1 & " " & p2 & " " & p3
+               .
+            .
+         .
+      .
+   .
+.
+for p1 = 2 to 61
+   if isprim p1 = 1
+      carmichael3 p1
+   .
+.
diff --git a/Task/Carmichael-3-strong-pseudoprimes/Gambas/carmichael-3-strong-pseudoprimes.gambas b/Task/Carmichael-3-strong-pseudoprimes/Gambas/carmichael-3-strong-pseudoprimes.gambas
new file mode 100644
index 0000000000..f32acd05ce
--- /dev/null
+++ b/Task/Carmichael-3-strong-pseudoprimes/Gambas/carmichael-3-strong-pseudoprimes.gambas
@@ -0,0 +1,48 @@
+Public isprime[1000000] As Integer
+
+Public Sub Main()
+
+  Dim max_sieve As Integer = 1000000
+  Dim i As Integer, j As Integer
+
+  'set up sieve
+  For i = 3 To max_sieve Step 2
+    isprime[i] = 1
+  Next
+
+  isprime[2] = 1
+  For i = 3 To Sqr(max_sieve) Step 2
+    If isprime[i] = 1 Then
+      For j = i * i To max_sieve Step i * 2
+        isprime[j] = 0
+      Next
+    End If
+  Next
+
+  For i = 2 To 61
+    If isprime[i] <> 0 Then carmichael3(i)
+  Next
+
+End
+
+Sub carmichael3(p1 As Integer)
+
+  Dim h3 As Integer, d As Integer
+  Dim p2 As Integer, p3 As Integer, t1 As Integer, t2 As Integer
+
+  For h3 = 1 To p1 - 1
+    t1 = (h3 + p1) * (p1 - 1)
+    t2 = (-p1 * p1) Mod h3
+    If t2 < 0 Then t2 = t2 + h3
+    For d = 1 To h3 + p1 - 1
+      If t1 Mod d = 0 And t2 = (d Mod h3) Then
+        p2 = 1 + (t1 \ d)
+        If isprime[p2] = 0 Then Continue
+        p3 = 1 + ((p1 * p2) \ h3)
+        If isprime[p3] = 0 Or ((p2 * p3) Mod (p1 - 1)) <> 1 Then Continue
+        Print Format$(p1, "###"); " * "; Format$(p2, "####"); " * "; Format$(p3, "#####")
+      End If
+    Next
+  Next
+
+End Sub
diff --git a/Task/Carmichael-3-strong-pseudoprimes/Wren/carmichael-3-strong-pseudoprimes.wren b/Task/Carmichael-3-strong-pseudoprimes/Wren/carmichael-3-strong-pseudoprimes.wren
index ec619d33d5..dd8e7a5987 100644
--- a/Task/Carmichael-3-strong-pseudoprimes/Wren/carmichael-3-strong-pseudoprimes.wren
+++ b/Task/Carmichael-3-strong-pseudoprimes/Wren/carmichael-3-strong-pseudoprimes.wren
@@ -1,5 +1,5 @@
-import "/fmt" for Fmt
-import "/math" for Int
+import "./fmt" for Fmt
+import "./math" for Int
 
 var mod = Fn.new { |n, m| ((n%m) + m) % m }
 
diff --git a/Task/Cartesian-product-of-two-or-more-lists/Wren/cartesian-product-of-two-or-more-lists.wren b/Task/Cartesian-product-of-two-or-more-lists/Wren/cartesian-product-of-two-or-more-lists.wren
index 86ff4d5f86..513e4d875a 100644
--- a/Task/Cartesian-product-of-two-or-more-lists/Wren/cartesian-product-of-two-or-more-lists.wren
+++ b/Task/Cartesian-product-of-two-or-more-lists/Wren/cartesian-product-of-two-or-more-lists.wren
@@ -1,4 +1,4 @@
-import "/seq" for Lst
+import "./seq" for Lst
 
 var prod2 = Fn.new { |l1, l2|
     var res = []
diff --git a/Task/Case-sensitivity-of-identifiers/Zig/case-sensitivity-of-identifiers.zig b/Task/Case-sensitivity-of-identifiers/Zig/case-sensitivity-of-identifiers.zig
new file mode 100644
index 0000000000..46dbdaaf75
--- /dev/null
+++ b/Task/Case-sensitivity-of-identifiers/Zig/case-sensitivity-of-identifiers.zig
@@ -0,0 +1,9 @@
+const std = @import("std");
+
+pub fn main() void {
+    const dog = "Benjamin";
+    const Dog = "Samba";
+    const DOG = "Bernie";
+
+    std.debug.print("The three dogs are named {s}, {s}, and {s}.\n", .{ dog, Dog, DOG });
+}
diff --git a/Task/Casting-out-nines/BASIC256/casting-out-nines.basic b/Task/Casting-out-nines/BASIC256/casting-out-nines.basic
new file mode 100644
index 0000000000..a11ff0fa58
--- /dev/null
+++ b/Task/Casting-out-nines/BASIC256/casting-out-nines.basic
@@ -0,0 +1,10 @@
+base = 10
+c1 = 0
+c2 = 0
+for k = 1 to (base ^ 2) - 1
+	c1 += 1
+	if k % (base - 1) = (k * k) % (base - 1) then c2 += 1: print k; " ";
+next k
+print
+print "Trying "; c2; " numbers instead of "; c1;  " numbers saves "; 100 - (100 * c2 / c1); "%"
+end
diff --git a/Task/Casting-out-nines/Chipmunk-Basic/casting-out-nines.basic b/Task/Casting-out-nines/Chipmunk-Basic/casting-out-nines.basic
new file mode 100644
index 0000000000..b605fc071d
--- /dev/null
+++ b/Task/Casting-out-nines/Chipmunk-Basic/casting-out-nines.basic
@@ -0,0 +1,9 @@
+100 cls
+110 bs = 10 : c1 = 0 : c2 = 0
+120 for k = 1 to (bs^2)-1
+130   c1 = c1+1
+140   if k mod (bs-1) = (k*k) mod (bs-1) then c2 = c2+1 : print k;
+150 next k
+160 print
+170 print "Trying ";c2;"numbers instead of ";c1;"numbers saves ";100-(100*c2/c1);"%"
+180 end
diff --git a/Task/Casting-out-nines/EasyLang/casting-out-nines.easy b/Task/Casting-out-nines/EasyLang/casting-out-nines.easy
new file mode 100644
index 0000000000..4eb3d8d89d
--- /dev/null
+++ b/Task/Casting-out-nines/EasyLang/casting-out-nines.easy
@@ -0,0 +1,9 @@
+base = 10
+for k = 1 to base * base - 1
+   c1 += 1
+   if k mod (base - 1) = (k * k) mod (base - 1)
+      c2 += 1
+      write k & " "
+   .
+.
+print "Trying " & c2 & " numbers instead of " & c1 & " numbers saves " & 100 - 100 * c2 / c1
diff --git a/Task/Casting-out-nines/Gambas/casting-out-nines.gambas b/Task/Casting-out-nines/Gambas/casting-out-nines.gambas
new file mode 100644
index 0000000000..64769e472e
--- /dev/null
+++ b/Task/Casting-out-nines/Gambas/casting-out-nines.gambas
@@ -0,0 +1,16 @@
+Public Sub Main()
+
+  Dim base10 As Integer = 10
+  Dim c1 As Integer = 0, c2 As Integer = 0, k As Integer
+
+  For k = 1 To base10 ^ 2
+    c1 += 1
+    If (k Mod (base10 - 1) = (k * k) Mod (base10 - 1)) Then
+      c2 += 1
+      Print k; " ";
+    End If
+  Next
+
+  Print "\nTrying "; c2; " numbers instead of "; c1; " numbers saves "; 100 - (100 * c2 / c1); "%"
+
+End
diff --git a/Task/Casting-out-nines/MSX-Basic/casting-out-nines.basic b/Task/Casting-out-nines/MSX-Basic/casting-out-nines.basic
new file mode 100644
index 0000000000..e8b2011dcd
--- /dev/null
+++ b/Task/Casting-out-nines/MSX-Basic/casting-out-nines.basic
@@ -0,0 +1,9 @@
+100 CLS
+110 BS = 10 : C1 = 0 : C2 = 0
+120 FOR K = 1 TO (BS^2)-1
+130   C1 = C1+1
+140   IF K MOD (BS-1) = (K*K) MOD (BS-1) THEN C2 = C2+1 : PRINT K;
+150 NEXT K
+160 PRINT
+170 PRINT USING "Trying ## numbers instead of ### numbers saves ##.##%";C2;C1;100-(100*C2/C1)
+180 END
diff --git a/Task/Casting-out-nines/PureBasic/casting-out-nines.basic b/Task/Casting-out-nines/PureBasic/casting-out-nines.basic
new file mode 100644
index 0000000000..5428d61c14
--- /dev/null
+++ b/Task/Casting-out-nines/PureBasic/casting-out-nines.basic
@@ -0,0 +1,18 @@
+OpenConsole()
+Define.i base, c1, c2, k
+
+base = 10
+c1 = 0
+c2 = 0
+For k = 1 To Pow(base, 2) - 1
+  c1 + 1
+  If k % (base - 1) = (k * k) % (base - 1)
+    c2 + 1
+    Print(Str(k) + " ")
+  EndIf
+Next k
+
+PrintN(#CRLF$ + "Trying " + Str(c2) + " numbers instead of " + Str(c1) + " numbers saves " + Str(100 - (100 * c2 / c1)) + "%")
+
+PrintN(#CRLF$ + "Press ENTER to exit"): Input()
+CloseConsole()
diff --git a/Task/Casting-out-nines/QBasic/casting-out-nines.basic b/Task/Casting-out-nines/QBasic/casting-out-nines.basic
new file mode 100644
index 0000000000..56d9ac30e9
--- /dev/null
+++ b/Task/Casting-out-nines/QBasic/casting-out-nines.basic
@@ -0,0 +1,8 @@
+CLS
+bs = 10: c1 = 0: c2 = 0
+FOR k = 1 TO (bs ^ 2) - 1
+  c1 = c1 + 1
+  IF k MOD (bs - 1) = (k * k) MOD (bs - 1) THEN c2 = c2 + 1: PRINT k;
+NEXT k
+PRINT
+PRINT USING "Trying ## numbers instead of ### numbers saves ##.##%"; c2; c1; 100 - (100 * c2 / c1)
diff --git a/Task/Casting-out-nines/Run-BASIC/casting-out-nines.basic b/Task/Casting-out-nines/Run-BASIC/casting-out-nines.basic
new file mode 100644
index 0000000000..037b9067c8
--- /dev/null
+++ b/Task/Casting-out-nines/Run-BASIC/casting-out-nines.basic
@@ -0,0 +1,10 @@
+base = 10
+c1 = 0
+c2 = 0
+for k = 1 to (base ^ 2) - 1
+    c1 = c1 + 1
+    if k mod (base - 1) = (k * k) mod (base - 1) then c2 = c2 + 1: print k; " ";
+next k
+print
+print "Trying "; using("##", c2); " numbers instead of "; using("###", c1);  " numbers saves "; using("##.##", (100 - (100 * c2 / c1))); "%"
+end
diff --git a/Task/Casting-out-nines/True-BASIC/casting-out-nines.basic b/Task/Casting-out-nines/True-BASIC/casting-out-nines.basic
new file mode 100644
index 0000000000..b61f3b8db4
--- /dev/null
+++ b/Task/Casting-out-nines/True-BASIC/casting-out-nines.basic
@@ -0,0 +1,13 @@
+LET bs = 10
+LET c1 = 0
+LET c2 = 0
+FOR k = 1 TO (bs^2)-1
+    LET c1 = c1 + 1
+    IF REMAINDER(k,(bs-1)) = REMAINDER((k*k),(bs-1)) THEN
+       LET c2 = c2 + 1
+       PRINT k;
+    END IF
+NEXT k
+PRINT
+PRINT USING "Trying ## numbers instead of ### numbers saves ##.##%": c2, c1, 100-(100*c2/c1)
+END
diff --git a/Task/Casting-out-nines/XBasic/casting-out-nines.basic b/Task/Casting-out-nines/XBasic/casting-out-nines.basic
new file mode 100644
index 0000000000..25621a5d46
--- /dev/null
+++ b/Task/Casting-out-nines/XBasic/casting-out-nines.basic
@@ -0,0 +1,17 @@
+PROGRAM  "Casting out nines"
+VERSION  "0.0000"
+
+DECLARE FUNCTION  Entry ()
+
+FUNCTION  Entry ()
+  bs = 10
+  c1 = 0
+  c2 = 0
+  FOR k = 1 TO (bs ** 2) - 1
+    INC c1
+    IF k MOD (bs - 1) = (k * k) MOD (bs - 1) THEN INC c2: PRINT k;
+  NEXT k
+  PRINT
+  PRINT "Trying "; c2; " numbers instead of "; c1;  " numbers saves "; 100 - (100 * c2 / c1); "%"
+END FUNCTION
+END PROGRAM
diff --git a/Task/Casting-out-nines/Yabasic/casting-out-nines.basic b/Task/Casting-out-nines/Yabasic/casting-out-nines.basic
new file mode 100644
index 0000000000..502e8d6d5d
--- /dev/null
+++ b/Task/Casting-out-nines/Yabasic/casting-out-nines.basic
@@ -0,0 +1,9 @@
+base = 10
+c1 = 0
+c2 = 0
+for k = 1 to (base ^ 2) - 1
+	c1 = c1 + 1
+	if mod(k, (base - 1)) = mod((k * k), (base - 1)) then c2 = c2 + 1: print k, " "; : fi
+next k
+print "\nTrying ", c2 using("##"), " numbers instead of ", c1 using("###"),  " numbers saves ", (100 - (100 * c2 / c1)) using("##.##"), "%"
+end
diff --git a/Task/Catalan-numbers-Pascals-triangle/Applesoft-BASIC/catalan-numbers-pascals-triangle.basic b/Task/Catalan-numbers-Pascals-triangle/Applesoft-BASIC/catalan-numbers-pascals-triangle.basic
new file mode 100644
index 0000000000..3c43ec09a4
--- /dev/null
+++ b/Task/Catalan-numbers-Pascals-triangle/Applesoft-BASIC/catalan-numbers-pascals-triangle.basic
@@ -0,0 +1,12 @@
+10 HOME
+20 n = 15
+30 DIM t(n+2)
+50 t(1) = 1
+55 PRINT "The first 15 Catalan numbers are: "; CHR$(10)
+60 FOR i = 1 TO n
+70   FOR j = i TO 1 STEP -1 : t(j) = t(j) + t(j-1) : NEXT j
+80   t(i+1) = t(i)
+90   FOR j = i+1 TO 1 STEP -1 : t(j) = t(j) + t(j-1) : NEXT j
+100 PRINT i; ": "; t(i+1) - t(i)
+120 NEXT i
+130 END
diff --git a/Task/Catalan-numbers-Pascals-triangle/Chipmunk-Basic/catalan-numbers-pascals-triangle.basic b/Task/Catalan-numbers-Pascals-triangle/Chipmunk-Basic/catalan-numbers-pascals-triangle.basic
new file mode 100644
index 0000000000..1e968a5219
--- /dev/null
+++ b/Task/Catalan-numbers-Pascals-triangle/Chipmunk-Basic/catalan-numbers-pascals-triangle.basic
@@ -0,0 +1,13 @@
+100 cls
+110 n = 15
+120 dim t(n+2)
+130 t(1) = 1
+140 print "The first 15 Catalan numbers are: ";chr$(10)
+150 for i = 1 to n
+160   for j = i to 1 step -1 : t(j) = t(j)+t(j-1) : next j
+170   t(i+1) = t(i)
+180   for j = i+1 to 1 step -1 : t(j) = t(j)+t(j-1) : next j
+190 print using "###";i;": ";
+200 print using "#########";t(i+1)-t(i)
+210 next i
+220 end
diff --git a/Task/Catalan-numbers-Pascals-triangle/MSX-Basic/catalan-numbers-pascals-triangle.basic b/Task/Catalan-numbers-Pascals-triangle/MSX-Basic/catalan-numbers-pascals-triangle.basic
new file mode 100644
index 0000000000..e801b9f952
--- /dev/null
+++ b/Task/Catalan-numbers-Pascals-triangle/MSX-Basic/catalan-numbers-pascals-triangle.basic
@@ -0,0 +1,12 @@
+100 CLS
+110 N = 15
+120 DIM T(N+2)
+130 T(1) = 1
+140 PRINT "The first 15 Catalan numbers are: "; CHR$(10)
+150 FOR I = 1 TO N
+160   FOR J = I TO 1 STEP -1 : T(J) = T(J) + T(J-1) : NEXT J
+170   T(I+1) = T(I)
+180   FOR J = I+1 TO 1 STEP -1 : T(J) = T(J) + T(J-1) : NEXT J
+190 PRINT USING "###: #########";I; T(I+1) - T(I)
+200 NEXT I
+210 END
diff --git a/Task/Catalan-numbers-Pascals-triangle/Maxima/catalan-numbers-pascals-triangle.maxima b/Task/Catalan-numbers-Pascals-triangle/Maxima/catalan-numbers-pascals-triangle.maxima
new file mode 100644
index 0000000000..dd02905ec7
--- /dev/null
+++ b/Task/Catalan-numbers-Pascals-triangle/Maxima/catalan-numbers-pascals-triangle.maxima
@@ -0,0 +1,5 @@
+/* The Catalan triangle can be generated using genmatrix */
+genmatrix(lambda([n,k],if n>=k then binomial(n+k-1,k-1)-2*binomial(n+k-2,k-2) else 0),15,15)$
+
+/* The Catalan numbers are in the main diagonal */
+makelist(%[i,i],i,1,15);
diff --git a/Task/Catalan-numbers-Pascals-triangle/XBasic/catalan-numbers-pascals-triangle.basic b/Task/Catalan-numbers-Pascals-triangle/XBasic/catalan-numbers-pascals-triangle.basic
new file mode 100644
index 0000000000..9fe718d291
--- /dev/null
+++ b/Task/Catalan-numbers-Pascals-triangle/XBasic/catalan-numbers-pascals-triangle.basic
@@ -0,0 +1,26 @@
+PROGRAM	"Pascal's triangle"
+VERSION	"0.0000"
+
+
+DECLARE FUNCTION  Entry ()
+
+
+FUNCTION  Entry ()
+  N = 15
+  DIM T[N+2]
+  T[1] = 1
+
+  PRINT "The first 15 Catalan numbers are: "; CHR$(10)
+  FOR I = 1 TO N
+    FOR J = I TO 1 STEP -1
+      T[J] = T[J] + T[J-1]
+    NEXT J
+    T[I+1] = T[I]
+  FOR J = I+1 TO 1 STEP -1
+    T[J] = T[J] + T[J-1]
+  NEXT J
+  PRINT FORMAT$("###",I); ": "; FORMAT$("#########",(T[I+1] - T[I]))
+  NEXT I
+
+END FUNCTION
+END PROGRAM
diff --git a/Task/Catalan-numbers-Pascals-triangle/Yabasic/catalan-numbers-pascals-triangle.basic b/Task/Catalan-numbers-Pascals-triangle/Yabasic/catalan-numbers-pascals-triangle.basic
new file mode 100644
index 0000000000..06e235bac5
--- /dev/null
+++ b/Task/Catalan-numbers-Pascals-triangle/Yabasic/catalan-numbers-pascals-triangle.basic
@@ -0,0 +1,16 @@
+n = 15
+dim t(n+2)
+t(1) = 1
+print "The first 15 Catalan numbers are: \n"
+for i = 1 to n
+  for j = i to 1 step -1
+    t(j) = t(j) + t(j-1)
+  next j
+  t(i+1) = t(i)
+  for j = i+1 to 1 step -1
+    t(j) = t(j) + t(j-1)
+  next j
+  print i using("###");
+  print ": ";
+  print t(i+1)-t(i) using ("#########")
+next i
diff --git a/Task/Catalan-numbers/Wren/catalan-numbers.wren b/Task/Catalan-numbers/Wren/catalan-numbers.wren
index f6dc6fb42b..c70b424afb 100644
--- a/Task/Catalan-numbers/Wren/catalan-numbers.wren
+++ b/Task/Catalan-numbers/Wren/catalan-numbers.wren
@@ -1,5 +1,5 @@
-import "/fmt" for Fmt
-import "/math" for Int
+import "./fmt" for Fmt
+import "./math" for Int
 
 var catalan = Fn.new { |n|
     if (n < 0) Fiber.abort("Argument must be a non-negative integer")
diff --git a/Task/Catamorphism/Chipmunk-Basic/catamorphism.basic b/Task/Catamorphism/Chipmunk-Basic/catamorphism.basic
new file mode 100644
index 0000000000..f77c267d64
--- /dev/null
+++ b/Task/Catamorphism/Chipmunk-Basic/catamorphism.basic
@@ -0,0 +1,30 @@
+100 DIM n(10)
+110 FOR i = 1 TO 10 : n(i) = i : NEXT i
+120 SUB cat(cnt,op$)
+130  temp = n(1)
+140  FOR i = 2 TO cnt
+150   IF op$ = "+" THEN temp = temp+n(i)
+160   IF op$ = "-" THEN temp = temp-n(i)
+170   IF op$ = "*" THEN temp = temp*n(i)
+180   IF op$ = "/" THEN temp = temp/n(i)
+190   IF op$ = "^" THEN temp = temp^n(i)
+200   IF op$ = "max" THEN temp = FN MAX(temp,n(i))
+210   IF op$ = "min" THEN temp = FN MIN(temp,n(i))
+220   IF op$ = "avg" THEN temp = temp+n(i)
+230   IF op$ = "cat" THEN temp$ = temp$+STR$(n(i))
+240  NEXT i
+250  IF op$ = "avg" THEN temp = temp/cnt
+260  IF op$ = "cat" THEN temp = VAL(STR$(n(1))+temp$)
+270  cat = temp
+280 END SUB
+290 '
+300 PRINT "  +: ";cat(10,"+")
+310 PRINT "  -: ";cat(10,"-")
+320 PRINT "  *: ";cat(10,"*")
+330 PRINT "  /: ";cat(10,"/")
+340 PRINT "  ^: ";cat(10,"^")
+350 PRINT "min: ";cat(10,"min")
+360 PRINT "max: ";cat(10,"max")
+370 PRINT "avg: ";cat(10,"avg")
+380 PRINT "cat: ";cat(10,"cat")
+390 END
diff --git a/Task/Catamorphism/Zig/catamorphism-1.zig b/Task/Catamorphism/Zig/catamorphism-1.zig
new file mode 100644
index 0000000000..a6aa811419
--- /dev/null
+++ b/Task/Catamorphism/Zig/catamorphism-1.zig
@@ -0,0 +1,8 @@
+/// Asserts that `array`.len >= 1.
+pub fn reduce(comptime T: type, comptime applyFn: fn (T, T) T, array: []const T) T {
+    var val: T = array[0];
+    for (array[1..]) |elem| {
+        val = applyFn(val, elem);
+    }
+    return val;
+}
diff --git a/Task/Catamorphism/Zig/catamorphism-2.zig b/Task/Catamorphism/Zig/catamorphism-2.zig
new file mode 100644
index 0000000000..9b9f0d590a
--- /dev/null
+++ b/Task/Catamorphism/Zig/catamorphism-2.zig
@@ -0,0 +1,26 @@
+const std = @import("std");
+
+fn add(a: i32, b: i32) i32 {
+    return a + b;
+}
+
+fn mul(a: i32, b: i32) i32 {
+    return a * b;
+}
+
+fn min(a: i32, b: i32) i32 {
+    return @min(a, b);
+}
+
+fn max(a: i32, b: i32) i32 {
+    return @max(a, b);
+}
+
+pub fn main() void {
+    const arr: [5]i32 = .{ 1, 2, 3, 4, 5 };
+    std.debug.print("Array: {any}\n", .{arr});
+    std.debug.print(" * Reduce with add: {d}\n", .{reduce(i32, add, &arr)});
+    std.debug.print(" * Reduce with mul: {d}\n", .{reduce(i32, mul, &arr)});
+    std.debug.print(" * Reduce with min: {d}\n", .{reduce(i32, min, &arr)});
+    std.debug.print(" * Reduce with max: {d}\n", .{reduce(i32, max, &arr)});
+}
diff --git a/Task/Catamorphism/Zig/catamorphism-3.zig b/Task/Catamorphism/Zig/catamorphism-3.zig
new file mode 100644
index 0000000000..b2d7bfdc6e
--- /dev/null
+++ b/Task/Catamorphism/Zig/catamorphism-3.zig
@@ -0,0 +1,10 @@
+const std = @import("std");
+
+pub fn main() void {
+    const vec: @Vector(5, i32) = .{ 1, 2, 3, 4, 5 };
+    std.debug.print("Vec: {any}\n", .{vec});
+    std.debug.print(" * Reduce with add: {d}\n", .{@reduce(.Add, vec)});
+    std.debug.print(" * Reduce with mul: {d}\n", .{@reduce(.Mul, vec)});
+    std.debug.print(" * Reduce with min: {d}\n", .{@reduce(.Min, vec)});
+    std.debug.print(" * Reduce with max: {d}\n", .{@reduce(.Max, vec)});
+}
diff --git a/Task/Catamorphism/Zig/catamorphism-4.zig b/Task/Catamorphism/Zig/catamorphism-4.zig
new file mode 100644
index 0000000000..df45b5754f
--- /dev/null
+++ b/Task/Catamorphism/Zig/catamorphism-4.zig
@@ -0,0 +1,12 @@
+const std = @import("std");
+
+pub fn main() void {
+    const vec: @Vector(2, i32) = .{ std.math.minInt(i32), std.math.minInt(i32) + 1 };
+    std.debug.print("Vec: {any}\n", .{vec});
+    std.debug.print(" * Reduce with .Add: {d}\n", .{@reduce(.Add, vec)});
+    std.debug.print(" * Reduce with .Mul: {d}\n", .{@reduce(.Mul, vec)});
+
+    var zero: usize = 0; // Small trick to make compiler not emit compile error for overflow below:
+    std.debug.print(" * Reduce with regular add operator: {d}\n", .{vec[zero] + vec[1]});
+    std.debug.print(" * Reduce with regular mul operator: {d}\n", .{vec[zero] * vec[1]});
+}
diff --git a/Task/Catmull-Clark-subdivision-surface/Wren/catmull-clark-subdivision-surface.wren b/Task/Catmull-Clark-subdivision-surface/Wren/catmull-clark-subdivision-surface.wren
index b96526a682..79c0966aee 100644
--- a/Task/Catmull-Clark-subdivision-surface/Wren/catmull-clark-subdivision-surface.wren
+++ b/Task/Catmull-Clark-subdivision-surface/Wren/catmull-clark-subdivision-surface.wren
@@ -1,7 +1,7 @@
-import "/dynamic" for Tuple, Struct
-import "/sort" for Sort
-import "/math" for Int
-import "/fmt" for Fmt
+import "./dynamic" for Tuple, Struct
+import "./sort" for Sort
+import "./math" for Int
+import "./fmt" for Fmt
 
 var Point = Tuple.create("Point", ["x", "y", "z"])
 var fields = [
diff --git a/Task/Chaos-game/GW-BASIC/chaos-game.basic b/Task/Chaos-game/GW-BASIC/chaos-game.basic
new file mode 100644
index 0000000000..73af477166
--- /dev/null
+++ b/Task/Chaos-game/GW-BASIC/chaos-game.basic
@@ -0,0 +1,19 @@
+100 REM Chaos game
+110 CLS
+120 SCREEN 7    '320x200 EGA Color
+130 X = INT(RND(1) * 200)
+140 Y = INT(RND(1) * 173)
+150 FOR I=1 TO 20000
+160  V = INT(RND(1) * 3) + 1
+170  ON V GOTO 180,210,240
+180  X = X/2
+190  Y = Y/2
+200  GOTO 260
+210  X = 100 + (100-X)/2
+220  Y = 173 - (173-Y)/2
+230  GOTO 260
+240  X = 200 - (200-X)/2
+250  Y = Y/2
+260  PSET(X,Y),V
+270 NEXT I
+280 END
diff --git a/Task/Chaos-game/IS-BASIC/chaos-game.basic b/Task/Chaos-game/IS-BASIC/chaos-game.basic
new file mode 100644
index 0000000000..ab560fabbf
--- /dev/null
+++ b/Task/Chaos-game/IS-BASIC/chaos-game.basic
@@ -0,0 +1,20 @@
+100 PROGRAM "ChaosGam.bas"
+110 RANDOMIZE
+120 GRAPHICS HIRES 4
+130 LET X=RND(800):LET Y=RND(600)
+140 FOR I=1 TO 20000
+150   LET VERTEX=RND(3)
+160   SELECT CASE VERTEX
+170   CASE 0
+180     LET X=X/2
+190     LET Y=Y/2
+200   CASE 1
+210     LET X=400+(400-X)/2
+220     LET Y=600-(600-Y)/2
+230   CASE 2
+240     LET X=800-(800-X)/2
+250     LET Y=Y/2
+260   END SELECT
+270   SET INK VERTEX+1
+280   PLOT X,Y
+290 NEXT
diff --git a/Task/Chaos-game/MSX-Basic/chaos-game.basic b/Task/Chaos-game/MSX-Basic/chaos-game.basic
new file mode 100644
index 0000000000..f5d3c3748e
--- /dev/null
+++ b/Task/Chaos-game/MSX-Basic/chaos-game.basic
@@ -0,0 +1,22 @@
+100 REM Chaos game
+110 CLS
+120 SCREEN 2
+130 X = INT(RND(1) * 256)
+140 Y = INT(RND(1) * 192)
+150 FOR I=1 TO 20000
+160  V = INT(RND(1) * 3) + 1
+170  ON V GOTO 180,220,260
+180  X = X/2
+190  Y = Y/2
+200  V = 8 'red
+210  GOTO 290
+220  X = 128 + (128-X)/2
+230  Y = 192 - (192-Y)/2
+240  V = 3 'green
+250  GOTO 290
+260  X = 256 - (256-X)/2
+270  Y = Y/2
+280  V = 7 'blue
+290  PSET(X,Y),V
+300 NEXT I
+310 END
diff --git a/Task/Character-codes/Chipmunk-Basic/character-codes.basic b/Task/Character-codes/Chipmunk-Basic/character-codes.basic
new file mode 100644
index 0000000000..14eb2171df
--- /dev/null
+++ b/Task/Character-codes/Chipmunk-Basic/character-codes.basic
@@ -0,0 +1,2 @@
+10 print "a - > ";asc("a")
+20 print "98 -> ";chr$(98)
diff --git a/Task/Character-codes/GW-BASIC/character-codes.basic b/Task/Character-codes/GW-BASIC/character-codes.basic
new file mode 100644
index 0000000000..340eaa4010
--- /dev/null
+++ b/Task/Character-codes/GW-BASIC/character-codes.basic
@@ -0,0 +1,2 @@
+10 PRINT "a - > "; ASC("a")
+20 PRINT "98 -> "; CHR$(98)
diff --git a/Task/Character-codes/MSX-Basic/character-codes.basic b/Task/Character-codes/MSX-Basic/character-codes.basic
new file mode 100644
index 0000000000..340eaa4010
--- /dev/null
+++ b/Task/Character-codes/MSX-Basic/character-codes.basic
@@ -0,0 +1,2 @@
+10 PRINT "a - > "; ASC("a")
+20 PRINT "98 -> "; CHR$(98)
diff --git a/Task/Character-codes/Uxntal/character-codes.uxnatl b/Task/Character-codes/Uxntal/character-codes.uxnatl
new file mode 100644
index 0000000000..3c8894c079
--- /dev/null
+++ b/Task/Character-codes/Uxntal/character-codes.uxnatl
@@ -0,0 +1,23 @@
+|00 @System &vector $2 &expansion $2 &wst $1 &rst $1 &metadata $2 &r $2 &g $2 &b $2 &debug $1 &state $1
+|10 @Console &vector $2 &read $1 &pad $4 &type $1 &write $1 &error $1
+
+|0100
+    [ LIT "a ] print-hex
+    newline
+    #61 .Console/write DEO
+    newline
+
+    #80 .System/state DEO
+BRK
+
+@print-hex
+    DUP #04 SFT print-digit #0f AND print-digit
+JMP2r
+
+@print-digit
+    DUP #09 GTH #27 MUL ADD #30 ADD .Console/write DEO
+JMP2r
+
+@newline
+    #0a .Console/write DEO
+JMP2r
diff --git a/Task/Character-codes/XBasic/character-codes.basic b/Task/Character-codes/XBasic/character-codes.basic
new file mode 100644
index 0000000000..216d2a45b9
--- /dev/null
+++ b/Task/Character-codes/XBasic/character-codes.basic
@@ -0,0 +1,10 @@
+PROGRAM	"Character codes"
+VERSION	"0.0000"
+
+DECLARE FUNCTION  Entry ()
+
+FUNCTION  Entry ()
+    PRINT "a - >"; ASC("a")
+    PRINT "98 -> "; CHR$(98)
+END FUNCTION
+END PROGRAM
diff --git a/Task/Chat-server/Wren/chat-server-1.wren b/Task/Chat-server/Wren/chat-server-1.wren
index c8e43d7b19..0dc19c6b84 100644
--- a/Task/Chat-server/Wren/chat-server-1.wren
+++ b/Task/Chat-server/Wren/chat-server-1.wren
@@ -1,4 +1,4 @@
-/* chat_server.wren */
+/* Chat_server.wren */
 
 class Clients {
     foreign static max
diff --git a/Task/Chat-server/Wren/chat-server-2.wren b/Task/Chat-server/Wren/chat-server-2.wren
index 8df0f2373b..783eca36b5 100644
--- a/Task/Chat-server/Wren/chat-server-2.wren
+++ b/Task/Chat-server/Wren/chat-server-2.wren
@@ -1,4 +1,4 @@
-/* gcc chat_server.c -o chat_server -lpthread -lwren -lm */
+/* gcc Chat_server.c -o Chat_server -lpthread -lwren -lm */
 
 #include 
 #include 
@@ -278,7 +278,7 @@ int main(int argc, char **argv) {
     config.errorFn = &errorFn;
     config.bindForeignMethodFn = &bindForeignMethod;
     const char* module = "main";
-    const char* fileName = "chat_server.wren";
+    const char* fileName = "Chat_server.wren";
     script = readFile(fileName);
 
     /* config the VMs and interpret the script */
diff --git a/Task/Check-Machin-like-formulas/Wren/check-machin-like-formulas.wren b/Task/Check-Machin-like-formulas/Wren/check-machin-like-formulas.wren
index 1384ed0ff1..444ac4e66a 100644
--- a/Task/Check-Machin-like-formulas/Wren/check-machin-like-formulas.wren
+++ b/Task/Check-Machin-like-formulas/Wren/check-machin-like-formulas.wren
@@ -1,5 +1,5 @@
-import "/big" for BigRat
-import "/fmt" for Fmt
+import "./big" for BigRat
+import "./fmt" for Fmt
 
 /** represents a term of the form: c * atan(n / d) */
 class Term {
diff --git a/Task/Check-input-device-is-a-terminal/Forth/check-input-device-is-a-terminal-1.fth b/Task/Check-input-device-is-a-terminal/Forth/check-input-device-is-a-terminal-1.fth
new file mode 100644
index 0000000000..8f5bb867a8
--- /dev/null
+++ b/Task/Check-input-device-is-a-terminal/Forth/check-input-device-is-a-terminal-1.fth
@@ -0,0 +1 @@
+: ?tty source-id if ." not " then ." from terminal" ; ?tty bye
diff --git a/Task/Check-input-device-is-a-terminal/Forth/check-input-device-is-a-terminal-2.fth b/Task/Check-input-device-is-a-terminal/Forth/check-input-device-is-a-terminal-2.fth
new file mode 100644
index 0000000000..c3726c6670
--- /dev/null
+++ b/Task/Check-input-device-is-a-terminal/Forth/check-input-device-is-a-terminal-2.fth
@@ -0,0 +1 @@
+gforth source.f
diff --git a/Task/Check-input-device-is-a-terminal/Forth/check-input-device-is-a-terminal-3.fth b/Task/Check-input-device-is-a-terminal/Forth/check-input-device-is-a-terminal-3.fth
new file mode 100644
index 0000000000..d730e14ab8
--- /dev/null
+++ b/Task/Check-input-device-is-a-terminal/Forth/check-input-device-is-a-terminal-3.fth
@@ -0,0 +1 @@
+gforth -e ': ?tty source-id if ." not " then ." from terminal" ; ?tty bye'
diff --git a/Task/Check-input-device-is-a-terminal/Forth/check-input-device-is-a-terminal-4.fth b/Task/Check-input-device-is-a-terminal/Forth/check-input-device-is-a-terminal-4.fth
new file mode 100644
index 0000000000..8f5bb867a8
--- /dev/null
+++ b/Task/Check-input-device-is-a-terminal/Forth/check-input-device-is-a-terminal-4.fth
@@ -0,0 +1 @@
+: ?tty source-id if ." not " then ." from terminal" ; ?tty bye
diff --git a/Task/Check-output-device-is-a-terminal/Wren/check-output-device-is-a-terminal-1.wren b/Task/Check-output-device-is-a-terminal/Wren/check-output-device-is-a-terminal-1.wren
index 7f4b66a7f2..34bcd3db89 100644
--- a/Task/Check-output-device-is-a-terminal/Wren/check-output-device-is-a-terminal-1.wren
+++ b/Task/Check-output-device-is-a-terminal/Wren/check-output-device-is-a-terminal-1.wren
@@ -1,4 +1,4 @@
-/* check_output_device_is_terminal.wren */
+/* Check_output_device_is_a_terminal.wren */
 
 class C {
     foreign static isOutputDeviceTerminal
diff --git a/Task/Check-output-device-is-a-terminal/Wren/check-output-device-is-a-terminal-2.wren b/Task/Check-output-device-is-a-terminal/Wren/check-output-device-is-a-terminal-2.wren
index 6565a3ca34..a1e31b0511 100644
--- a/Task/Check-output-device-is-a-terminal/Wren/check-output-device-is-a-terminal-2.wren
+++ b/Task/Check-output-device-is-a-terminal/Wren/check-output-device-is-a-terminal-2.wren
@@ -63,7 +63,7 @@ int main() {
     config.bindForeignMethodFn = &bindForeignMethod;
     WrenVM* vm = wrenNewVM(&config);
     const char* module = "main";
-    const char* fileName = "check_output_device_is_terminal.wren";
+    const char* fileName = "Check_output_device_is_a_terminal.wren";
     char *script = readFile(fileName);
     WrenInterpretResult result = wrenInterpret(vm, module, script);
     switch (result) {
diff --git a/Task/Checkpoint-synchronization/Wren/checkpoint-synchronization.wren b/Task/Checkpoint-synchronization/Wren/checkpoint-synchronization.wren
index 3a3daa5f8e..f6a608ff5a 100644
--- a/Task/Checkpoint-synchronization/Wren/checkpoint-synchronization.wren
+++ b/Task/Checkpoint-synchronization/Wren/checkpoint-synchronization.wren
@@ -1,7 +1,7 @@
 import "random" for Random
 import "scheduler" for Scheduler
 import "timer" for Timer
-import "/ioutil" for Input
+import "./ioutil" for Input
 
 var rgen = Random.new()
 var nWorkers = 0
diff --git a/Task/Chernicks-Carmichael-numbers/Wren/chernicks-carmichael-numbers.wren b/Task/Chernicks-Carmichael-numbers/Wren/chernicks-carmichael-numbers.wren
index 0ca2622c15..6c574876ca 100644
--- a/Task/Chernicks-Carmichael-numbers/Wren/chernicks-carmichael-numbers.wren
+++ b/Task/Chernicks-Carmichael-numbers/Wren/chernicks-carmichael-numbers.wren
@@ -1,5 +1,5 @@
-import "/big" for BigInt, BigInts
-import "/fmt" for Fmt
+import "./big" for BigInt, BigInts
+import "./fmt" for Fmt
 
 var min = 3
 var max = 9
diff --git a/Task/Chinese-zodiac/EasyLang/chinese-zodiac.easy b/Task/Chinese-zodiac/EasyLang/chinese-zodiac.easy
new file mode 100644
index 0000000000..09078eb7fb
--- /dev/null
+++ b/Task/Chinese-zodiac/EasyLang/chinese-zodiac.easy
@@ -0,0 +1,30 @@
+animal$[] = [ "Rat" "Ox" "Tiger" "Rabbit" "Dragon" "Snake" "Horse" "Goat" "Monkey" "Rooster" "Dog" "Pig" ]
+element$[] = [ "Wood" "Fire" "Earth" "Metal" "Water" ]
+yingyang$[] = [ "Yang" "Yin" ]
+animal_ch$[] = strchars "子丑寅卯辰巳午未申酉戌亥"
+stem_ch$[] = strchars "甲乙丙丁戊己庚辛壬癸"
+#
+proc get year . el$ an$ yy$ anch$ stch$ .
+   idx = (year - 4) mod 10
+   el$ = element$[idx div 2 + 1]
+   stch$ = stem_ch$[idx + 1]
+   idx = (year - 4) mod 12
+   an$ = animal$[idx + 1]
+   anch$ = animal_ch$[idx + 1]
+   yy$ = yingyang$[year mod 2 + 1]
+.
+proc zodiac year . .
+   get year el$ an$ yy$ anch$ stch$
+   print year
+   cycle = (year - 1983) mod1 60
+   print "      " & el$ & " " & an$ & " " & yy$ & " " & cycle & "/60"
+   print "      " & stch$ & anch$
+   print ""
+.
+zodiac 1935
+zodiac 1938
+zodiac 1968
+zodiac 1972
+zodiac 1976
+zodiac 1984
+zodiac 2017
diff --git a/Task/Chinese-zodiac/Wren/chinese-zodiac.wren b/Task/Chinese-zodiac/Wren/chinese-zodiac.wren
index 098a0cf6f5..086a55ddc5 100644
--- a/Task/Chinese-zodiac/Wren/chinese-zodiac.wren
+++ b/Task/Chinese-zodiac/Wren/chinese-zodiac.wren
@@ -1,4 +1,4 @@
-import "/fmt" for Fmt
+import "./fmt" for Fmt
 
 class ChineseZodiac {
     static init() {
diff --git a/Task/Cholesky-decomposition/Wren/cholesky-decomposition.wren b/Task/Cholesky-decomposition/Wren/cholesky-decomposition.wren
index b166ba0f51..afd5b0c961 100644
--- a/Task/Cholesky-decomposition/Wren/cholesky-decomposition.wren
+++ b/Task/Cholesky-decomposition/Wren/cholesky-decomposition.wren
@@ -1,5 +1,5 @@
-import "/matrix" for Matrix
-import "/fmt" for Fmt
+import "./matrix" for Matrix
+import "./fmt" for Fmt
 
 var arrays = [
     [ [25, 15, -5],
diff --git a/Task/Church-numerals/Go/church-numerals.go b/Task/Church-numerals/Go/church-numerals-1.go
similarity index 100%
rename from Task/Church-numerals/Go/church-numerals.go
rename to Task/Church-numerals/Go/church-numerals-1.go
diff --git a/Task/Church-numerals/Go/church-numerals-2.go b/Task/Church-numerals/Go/church-numerals-2.go
new file mode 100644
index 0000000000..0b8a0724a4
--- /dev/null
+++ b/Task/Church-numerals/Go/church-numerals-2.go
@@ -0,0 +1,88 @@
+package main
+
+import "fmt"
+
+type Church func(Church) Church
+
+func id[X any](x X) X {
+  return x
+}
+
+func compose[X any, Y any, Z any](f func(Y) Z, g func(X) Y) func(X) Z {
+  return func(x X) Z {
+    return f(g(x))
+  }
+}
+
+func zero() Church {
+  return func(f Church) Church {
+    return id[Church]
+  }
+}
+
+func one() Church {
+  return id[Church]
+}
+
+func succ(n Church) Church {
+  return func(f Church) Church {
+    return compose(f, n(f))
+  }
+}
+
+func plus(m, n Church) Church {
+  return func(f Church) Church {
+    return compose(m(f), n(f))
+  }
+}
+
+func mult(m, n Church) Church {
+  return compose(m, n)
+}
+
+func exp(m, n Church) Church {
+  return n(m)
+}
+
+func toInt(x Church) int {
+  counter := 0
+  fCounter := func(f Church) Church {
+    counter++
+    return f
+  }
+
+  x(fCounter)(id[Church])
+  return counter
+}
+
+func toStr(x Church) string {
+  counter := ""
+  fCounter := func(f Church) Church {
+    counter += "|"
+    return f
+  }
+
+  x(fCounter)(id[Church])
+  return counter
+}
+
+func main() {
+  fmt.Println("zero =", toInt(zero()))
+
+  one := one()
+  fmt.Println("one =", toInt(one))
+
+  two := succ(succ(zero()))
+  fmt.Println("two =", toInt(two))
+
+  three := plus(one, two)
+  fmt.Println("three =", toInt(three))
+
+  four := mult(two, two)
+  fmt.Println("four =", toInt(four))
+
+  eight := exp(two, three)
+  fmt.Println("eight =", toInt(eight))
+
+  fmt.Println("toStr(four) =", toStr(four))
+}
diff --git a/Task/Circles-of-given-radius-through-two-points/EasyLang/circles-of-given-radius-through-two-points.easy b/Task/Circles-of-given-radius-through-two-points/EasyLang/circles-of-given-radius-through-two-points.easy
new file mode 100644
index 0000000000..4699db4544
--- /dev/null
+++ b/Task/Circles-of-given-radius-through-two-points/EasyLang/circles-of-given-radius-through-two-points.easy
@@ -0,0 +1,36 @@
+func$ fmt a b .
+   return "(" & a & " " & b & ")"
+.
+proc test m1x m1y m2x m2y r . .
+   print "Points: " & fmt m1x m1y & " " & fmt m2x m2y & " Radius: " & r
+   if r = 0
+      print "Radius of zero gives no circles"
+      print ""
+      return
+   .
+   x = (m2x - m1x) / 2
+   y = (m2y - m1y) / 2
+   bx = m1x + x
+   by = m1y + y
+   pb = sqrt (x * x + y * y)
+   if pb = 0
+      print "Coincident points give infinite circles"
+      print ""
+      return
+   .
+   if pb > r
+      print "Points are too far apart for the given radius"
+      print ""
+      return
+   .
+   cb = sqrt (r * r - pb * pb)
+   x1 = y * cb / pb
+   y1 = x * cb / pb
+   print "Circles: " & fmt (bx - x1) (by + y1) & " " & fmt (bx + x1) (by - y1)
+   print ""
+.
+test 0.1234 0.9876 0.8765 0.2345 2.0
+test 0.0000 2.0000 0.0000 0.0000 1.0
+test 0.1234 0.9876 0.1234 0.9876 2.0
+test 0.1234 0.9876 0.8765 0.2345 0.5
+test 0.1234 0.9876 0.1234 0.9876 0.0
diff --git a/Task/Circles-of-given-radius-through-two-points/Wren/circles-of-given-radius-through-two-points.wren b/Task/Circles-of-given-radius-through-two-points/Wren/circles-of-given-radius-through-two-points.wren
index 84483a0bd9..40bb05badb 100644
--- a/Task/Circles-of-given-radius-through-two-points/Wren/circles-of-given-radius-through-two-points.wren
+++ b/Task/Circles-of-given-radius-through-two-points/Wren/circles-of-given-radius-through-two-points.wren
@@ -1,4 +1,4 @@
-import "/math" for Math
+import "./math" for Math
 
 var Two  = "Two circles."
 var R0   = "R == 0 does not describe circles."
diff --git a/Task/Circular-primes/Wren/circular-primes-1.wren b/Task/Circular-primes/Wren/circular-primes-1.wren
index e3f1e291be..729c18d7b3 100644
--- a/Task/Circular-primes/Wren/circular-primes-1.wren
+++ b/Task/Circular-primes/Wren/circular-primes-1.wren
@@ -1,6 +1,6 @@
-import "/math" for Int
-import "/big" for BigInt
-import "/str" for Str
+import "./math" for Int
+import "./big" for BigInt
+import "./str" for Str
 
 var circs = []
 
diff --git a/Task/Circular-primes/Wren/circular-primes-2.wren b/Task/Circular-primes/Wren/circular-primes-2.wren
index e4fa68c0a0..c74e7e93ea 100644
--- a/Task/Circular-primes/Wren/circular-primes-2.wren
+++ b/Task/Circular-primes/Wren/circular-primes-2.wren
@@ -1,4 +1,4 @@
-/* circular_primes_embedded.wren */
+/* Circular_primes_embedded.wren */
 
 import "./gmp" for Mpz
 import "./math" for Int
diff --git a/Task/Cistercian-numerals/EasyLang/cistercian-numerals.easy b/Task/Cistercian-numerals/EasyLang/cistercian-numerals.easy
new file mode 100644
index 0000000000..766d24cc01
--- /dev/null
+++ b/Task/Cistercian-numerals/EasyLang/cistercian-numerals.easy
@@ -0,0 +1,56 @@
+proc cist x y n . .
+   linewidth 0.5
+   dx[] = [ 4 -4 4 -4 ]
+   dy[] = [ 4 4 -4 -4 ]
+   for i to 4
+      dx = dx[i]
+      dy = dy[i]
+      dy2 = 2 * dy
+      d = n mod 10
+      n = n div 10
+      move x y
+      #
+      line x y + 8
+      move x y - 8
+      line x y
+      if d = 1
+         move x y + dy2
+         line x + dx y + dy2
+      elif d = 2
+         move x y + dy
+         line x + dx y + dy
+      elif d = 3
+         move x y + dy2
+         line x + dx y + dy
+      elif d = 4
+         move x y + dy
+         line x + dx y + dy2
+      elif d = 5
+         move x y + dy
+         line x + dx y + dy2
+         line x y + dy2
+      elif d = 6
+         move x + dx y + dy
+         line x + dx y + dy2
+      elif d = 7
+         move x y + dy2
+         line x + dx y + dy2
+         line x + dx y + dy
+      elif d = 8
+         move x y + dy
+         line x + dx y + dy
+         line x + dx y + dy2
+      elif d = 9
+         move x y + dy
+         line x + dx y + dy
+         line x + dx y + dy2
+         line x y + dy2
+      .
+   .
+   x += 12
+.
+x = 8
+for n in [ 0 1 20 300 4000 5555 6789 2023 ]
+   cist x 80 n
+   x += 12
+.
diff --git a/Task/Cistercian-numerals/Wren/cistercian-numerals.wren b/Task/Cistercian-numerals/Wren/cistercian-numerals.wren
index d497776c1c..303022604b 100644
--- a/Task/Cistercian-numerals/Wren/cistercian-numerals.wren
+++ b/Task/Cistercian-numerals/Wren/cistercian-numerals.wren
@@ -1,4 +1,4 @@
-import "/fmt" for Fmt
+import "./fmt" for Fmt
 
 var n
 
diff --git a/Task/Classes/Rhovas/classes-1.rhovas b/Task/Classes/Rhovas/classes-1.rhovas
new file mode 100644
index 0000000000..2bc194e615
--- /dev/null
+++ b/Task/Classes/Rhovas/classes-1.rhovas
@@ -0,0 +1,8 @@
+struct Vector {
+    var x: Decimal;
+    var y: Decimal;
+
+    func magnitude(this): Decimal {
+        return Math.sqrt(this.x * this.x + this.y * this.y);
+    }
+}
diff --git a/Task/Classes/Rhovas/classes-2.rhovas b/Task/Classes/Rhovas/classes-2.rhovas
new file mode 100644
index 0000000000..9137e3105b
--- /dev/null
+++ b/Task/Classes/Rhovas/classes-2.rhovas
@@ -0,0 +1,10 @@
+class UnitVector {
+    val x: Decimal;
+    val y: Decimal;
+
+    init(direction: Vector) {
+        require direction.x != 0.0 || direction.y != 0.0;
+        val magnitude = direction.magnitude();
+        this { x: direction.x / magnitude, y: direction.y / magnitude };
+    }
+}
diff --git a/Task/Closest-pair-problem/EasyLang/closest-pair-problem.easy b/Task/Closest-pair-problem/EasyLang/closest-pair-problem.easy
new file mode 100644
index 0000000000..d9ded104e7
--- /dev/null
+++ b/Task/Closest-pair-problem/EasyLang/closest-pair-problem.easy
@@ -0,0 +1,19 @@
+# bruteforce
+numfmt 4 0
+x[] = [ 0.654682 0.409382 0.891663 0.716629 0.477721 0.925092 0.624291 0.211332 0.293786 0.839186 ]
+y[] = [ 0.925557 0.619391 0.888594 0.996200 0.946355 0.818220 0.142924 0.221507 0.691701 0.728260 ]
+n = len x[]
+min = 1 / 0
+for i to n - 1
+   for j = i + 1 to n
+      dx = x[i] - x[j]
+      dy = y[i] - y[j]
+      dsq = dx * dx + dy * dy
+      if dsq < min
+         min = dsq
+         mini = i
+         minj = j
+      .
+   .
+.
+print "distance between (" & x[mini] & " " & y[mini] & ") and (" & x[minj] & " " & y[minj] & ") is " & sqrt min
diff --git a/Task/Closest-pair-problem/Wren/closest-pair-problem.wren b/Task/Closest-pair-problem/Wren/closest-pair-problem.wren
index ec86d9d0d1..a991cdd471 100644
--- a/Task/Closest-pair-problem/Wren/closest-pair-problem.wren
+++ b/Task/Closest-pair-problem/Wren/closest-pair-problem.wren
@@ -1,5 +1,5 @@
-import "/math" for Math
-import "/sort" for Sort
+import "./math" for Math
+import "./sort" for Sort
 
 var distance = Fn.new { |p1, p2| Math.hypot(p1[0] - p2[0], p1[1] - p2[1]) }
 
diff --git a/Task/Color-quantization/Wren/color-quantization.wren b/Task/Color-quantization/Wren/color-quantization.wren
index a3bed25f50..dc91ff0eea 100644
--- a/Task/Color-quantization/Wren/color-quantization.wren
+++ b/Task/Color-quantization/Wren/color-quantization.wren
@@ -10,7 +10,7 @@ var ColorsUsed = []
 class ColorQuantization {
     construct new(filename, filename2) {
         Window.title = "Color quantization"
-        _image = ImageData.loadFromFile(filename)
+        _image = ImageData.load(filename)
         _w = _image.width
         _h = _image.height
         Window.resize(_w * 2 + 20, _h + 30)
diff --git a/Task/Colorful-numbers/Wren/colorful-numbers.wren b/Task/Colorful-numbers/Wren/colorful-numbers.wren
index 1a35ccaffd..1d03860a29 100644
--- a/Task/Colorful-numbers/Wren/colorful-numbers.wren
+++ b/Task/Colorful-numbers/Wren/colorful-numbers.wren
@@ -1,6 +1,5 @@
 import "./math" for Int, Nums
 import "./set" for Set
-import "./seq" for Lst
 import "./fmt" for Fmt
 
 var isColorful = Fn.new { |n|
@@ -57,7 +56,7 @@ countColorful = Fn.new { |taken, n|
 
 var cn = (0..99).where { |i| isColorful.call(i) }.toList
 System.print("The %(cn.count) colorful numbers less than 100 are:")
-for (chunk in Lst.chunks(cn, 10)) Fmt.print("$2d", chunk)
+Fmt.tprint("$2d", cn, 10)
 
 countColorful.call(0, "")
 System.print("\nThe largest possible colorful number is:")
diff --git a/Task/Colour-bars-Display/Uxntal/colour-bars-display.uxnatl b/Task/Colour-bars-Display/Uxntal/colour-bars-display.uxnatl
new file mode 100644
index 0000000000..ee4eb639ec
--- /dev/null
+++ b/Task/Colour-bars-Display/Uxntal/colour-bars-display.uxnatl
@@ -0,0 +1,19 @@
+|00 @System &vector $2 &expansion $2 &wst $1 &rst $1 &metadata $2 &r $2 &g $2 &b $2 &debug $1 &state $1
+|20 @Screen &vector $2 &width $2 &height $2 &auto $1 &pad $1 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1
+
+|0100
+    #0f00 .System/r DEO2
+    #00f0 .System/g DEO2
+    #000f .System/b DEO2
+
+    .Screen/width DEI2 #0004 DIV2 ,&quarter STR2
+
+    #0000 .Screen/y DEO2
+
+    #00
+    &loop
+        #00 OVR [ LIT2 &quarter $2 ] MUL2
+        .Screen/x DEO2
+        DUP #80 ORA .Screen/pixel DEO
+        INC DUP #04 NEQ ?&loop
+BRK
diff --git a/Task/Colour-pinstripe-Display/EasyLang/colour-pinstripe-display.easy b/Task/Colour-pinstripe-Display/EasyLang/colour-pinstripe-display.easy
new file mode 100644
index 0000000000..ed11ac98e6
--- /dev/null
+++ b/Task/Colour-pinstripe-Display/EasyLang/colour-pinstripe-display.easy
@@ -0,0 +1,11 @@
+k[] = [ 000 900 090 009 909 099 990 999 ]
+for i = 1 to 4
+   col = 1
+   y = 100 - i * 25
+   for x = 0 step i to 100 - i
+      color k[col]
+      move x y
+      rect i 25
+      col = (col + 1) mod1 8
+   .
+.
diff --git a/Task/Colour-pinstripe-Display/Uxntal/colour-pinstripe-display.uxnatl b/Task/Colour-pinstripe-Display/Uxntal/colour-pinstripe-display.uxnatl
new file mode 100644
index 0000000000..cd1647b7ce
--- /dev/null
+++ b/Task/Colour-pinstripe-Display/Uxntal/colour-pinstripe-display.uxnatl
@@ -0,0 +1,18 @@
+|00 @System &vector $2 &expansion $2 &wst $1 &rst $1 &metadata $2 &r $2 &g $2 &b $2 &debug $1 &state $1
+|20 @Screen &vector $2 &width $2 &height $2 &auto $1 &pad $1 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1
+
+|0100 @reset
+    #0f00 .System/r DEO2
+    #00f0 .System/g DEO2
+    #000f .System/b DEO2
+
+    .Screen/width DEI2 ,&width STR2
+
+    #0000 .Screen/y DEO2
+
+    #0000
+    &loop
+        DUP2 .Screen/x DEO2
+        DUP #03 AND #80 ORA .Screen/pixel DEO
+        INC2 DUP2 [ LIT2 &width $2 ] NEQ2 ?&loop
+BRK
diff --git a/Task/Combinations-and-permutations/EasyLang/combinations-and-permutations.easy b/Task/Combinations-and-permutations/EasyLang/combinations-and-permutations.easy
new file mode 100644
index 0000000000..b0d085f984
--- /dev/null
+++ b/Task/Combinations-and-permutations/EasyLang/combinations-and-permutations.easy
@@ -0,0 +1,64 @@
+func perm x y .
+   z = 1
+   for i = x - y + 1 to x
+      z *= i
+   .
+   return z
+.
+func fact x .
+   z = 1
+   for i = 2 to x
+      z *= i
+   .
+   return z
+.
+func comb x y .
+   if x - y < y
+      y = x - y
+   .
+   return perm x y / fact y
+.
+#
+e = 2.7182818284590452354
+func log n .
+   return log10 n / log10 e
+.
+func lstirling n .
+   if n < 10
+      return lstirling (n + 1) - log (n + 1)
+   .
+   return 0.5 * log (2 * pi * n) + n * log (n / e + 1 / (12 * e * n))
+.
+func$ tolog v .
+   h = v div log 10
+   return pow e (v - h * log 10) & "e" & h
+.
+func$ permf n k .
+   return tolog (lstirling n - lstirling (n - k))
+.
+func$ combf n k .
+   return tolog (lstirling n - lstirling (n - k) - lstirling k)
+.
+print "=> Exact results:"
+for n = 1 to 12
+   p = n div 3
+   print "P(" & n & "," & p & ")=" & perm n p
+.
+#
+# double has 53 bits for integer
+#
+for n = 10 step 10 to 50
+   p = n div 3
+   print "C(" & n & "," & p & ")=" & comb n p
+.
+#
+print ""
+print "=> Floating point approximations:"
+for n in [ 5 50 500 1000 5000 15000 ]
+   p = n div 3
+   print "P(" & n & "," & p & ")=" & permf n p
+.
+for n = 100 step 100 to 1000
+   p = n div 3
+   print "C(" & n & "," & p & ")=" & combf n p
+.
diff --git a/Task/Combinations-and-permutations/Rust/combinations-and-permutations.rust b/Task/Combinations-and-permutations/Rust/combinations-and-permutations.rust
new file mode 100644
index 0000000000..ef42c1512d
--- /dev/null
+++ b/Task/Combinations-and-permutations/Rust/combinations-and-permutations.rust
@@ -0,0 +1,34 @@
+fn perm(n: f64, k: f64) -> f64 {
+    let mut result: f64 = 1.0;
+    let mut i: f64 = 0.0;
+
+    while i < k {
+        result *= n - i;
+        i += 1.0;
+    }
+
+    result
+}
+
+fn comb(n: f64, k: f64) -> f64 {
+    perm(n, k) / perm(k, k)
+}
+
+fn main() {
+    const P: f64 = 12.0;
+    const C: f64 = 60.0;
+
+    let mut j: f64 = 1.0;
+    let mut k: f64 = 10.0;
+
+    while j < P {
+        println!("P({},{}) = {}", P, j, perm(P, j).floor());
+        j += 1.0;
+    }
+
+    while k < C {
+        println!("C({},{}) = {}", C, k, comb(C, k).floor());
+        k += 10.0;
+    }
+
+}
diff --git a/Task/Combinations-and-permutations/Wren/combinations-and-permutations.wren b/Task/Combinations-and-permutations/Wren/combinations-and-permutations.wren
index 352e2b0af1..5577af47a2 100644
--- a/Task/Combinations-and-permutations/Wren/combinations-and-permutations.wren
+++ b/Task/Combinations-and-permutations/Wren/combinations-and-permutations.wren
@@ -1,6 +1,6 @@
-import "/big" for BigInt
-import "/fmt" for Fmt
-import "/iterate" for Stepped
+import "./big" for BigInt
+import "./fmt" for Fmt
+import "./iterate" for Stepped
 
 var perm = Fn.new { |n, k|
     if (n <= 0 || k < 0) Fiber.abort("Invalid argument(s).")
diff --git a/Task/Combinations-with-repetitions/Wren/combinations-with-repetitions-1.wren b/Task/Combinations-with-repetitions/Wren/combinations-with-repetitions-1.wren
index fb47e3c35f..791340f70a 100644
--- a/Task/Combinations-with-repetitions/Wren/combinations-with-repetitions-1.wren
+++ b/Task/Combinations-with-repetitions/Wren/combinations-with-repetitions-1.wren
@@ -1,9 +1,8 @@
-var combrep // recursive
-combrep = Fn.new { |n, lst|
+var Combrep = Fn.new { |n, lst|
     if (n == 0 ) return [[]]
     if (lst.count == 0) return []
-    var r = combrep.call(n, lst[1..-1])
-    for (x in combrep.call(n-1, lst)) {
+    var r = Combrep.call(n, lst[1..-1])
+    for (x in Combrep.call(n-1, lst)) {
         var y = x.toList
         y.add(lst[0])
         r.add(y)
@@ -11,5 +10,5 @@ combrep = Fn.new { |n, lst|
     return r
 }
 
-System.print(combrep.call(2, ["iced", "jam", "plain"]))
-System.print(combrep.call(3, (1..10).toList).count)
+System.print(Combrep.call(2, ["iced", "jam", "plain"]))
+System.print(Combrep.call(3, (1..10).toList).count)
diff --git a/Task/Comma-quibbling/EasyLang/comma-quibbling.easy b/Task/Comma-quibbling/EasyLang/comma-quibbling.easy
new file mode 100644
index 0000000000..b3d7618ce4
--- /dev/null
+++ b/Task/Comma-quibbling/EasyLang/comma-quibbling.easy
@@ -0,0 +1,20 @@
+func$ tolist s$ .
+   s$[] = strsplit s$ " "
+   r$ = "{"
+   n = len s$[]
+   for i = 1 to n - 2
+      r$ &= s$[i] & ", "
+   .
+   if n > 0
+      if n > 1
+         r$ &= s$[n - 1] & " and "
+      .
+      r$ &= s$[n]
+   .
+   r$ &= "}"
+   return r$
+.
+print tolist ""
+print tolist "ABC"
+print tolist "ABC DEF"
+print tolist "ABC DEF G H"
diff --git a/Task/Comma-quibbling/SETL/comma-quibbling.setl b/Task/Comma-quibbling/SETL/comma-quibbling.setl
new file mode 100644
index 0000000000..8d332e3245
--- /dev/null
+++ b/Task/Comma-quibbling/SETL/comma-quibbling.setl
@@ -0,0 +1,27 @@
+program comma_quibbling;
+    tests := [
+        [],
+        ["ABC"],
+        ["ABC","DEF"],
+        ["ABC","DEF","G","H"]
+    ];
+
+    loop for t in tests do
+        print(t, "=", quibble(t));
+    end loop;
+
+    proc quibble(words);
+        ret := '{';
+        loop while words /= [] do
+            word fromb words;
+            ret +:= word;
+            case of
+            (#words = 1):
+                ret +:= " and ";
+            (#words > 1):
+                ret +:= ", ";
+            end case;
+        end loop;
+        return ret + '}';
+    end proc;
+end program;
diff --git a/Task/Command-line-arguments/Nu/command-line-arguments.nu b/Task/Command-line-arguments/Nu/command-line-arguments.nu
new file mode 100644
index 0000000000..dfa5746f77
--- /dev/null
+++ b/Task/Command-line-arguments/Nu/command-line-arguments.nu
@@ -0,0 +1,3 @@
+def main [...argv] {
+	$argv | print
+}
diff --git a/Task/Comments/11l/comments.11l b/Task/Comments/11l/comments.11l
deleted file mode 100644
index 93be840d01..0000000000
--- a/Task/Comments/11l/comments.11l
+++ /dev/null
@@ -1,15 +0,0 @@
-// Single line comment
-\\ Also single line comment (continuation of the comment in previous line)
-
-\[ This is
-a multi line
-comment ]
-
-\{ And
-this }
-
-\( And
-this )
-
-\‘ And
-this ’
diff --git a/Task/Compare-a-list-of-strings/Wren/compare-a-list-of-strings.wren b/Task/Compare-a-list-of-strings/Wren/compare-a-list-of-strings.wren
index 7790fc75c0..2476f60de7 100644
--- a/Task/Compare-a-list-of-strings/Wren/compare-a-list-of-strings.wren
+++ b/Task/Compare-a-list-of-strings/Wren/compare-a-list-of-strings.wren
@@ -1,4 +1,4 @@
-import "/sort" for Sort
+import "./sort" for Sort
 
 var areEqual = Fn.new { |strings|
     if (strings.count < 2) return true
diff --git a/Task/Compare-length-of-two-strings/EasyLang/compare-length-of-two-strings.easy b/Task/Compare-length-of-two-strings/EasyLang/compare-length-of-two-strings.easy
index 23dda9fbb3..02400ed56a 100644
--- a/Task/Compare-length-of-two-strings/EasyLang/compare-length-of-two-strings.easy
+++ b/Task/Compare-length-of-two-strings/EasyLang/compare-length-of-two-strings.easy
@@ -1,11 +1,10 @@
-proc stringLength a$ b$ . .
-   lineA$ = "\"" & a$ & "\" (length: " & len a$ & ")"
-   lineB$ = "\"" & b$ & "\" (length: " & len b$ & ")"
-   if len a$ >= len b$
-      print lineA$ ; print lineB$
-   else
-      print lineB$ ; print lineA$
+proc scmp a$ b$ . .
+   if len a$ < len b$
+      swap a$ b$
    .
+   print a$ & " - " & len a$
+   print b$ & " - " & len b$
+   print ""
 .
-call stringLength "Easy" "Language"
-call stringLength "Rosetta" "Code"
+scmp "Easy" "Language"
+scmp "Rosetta" "Code"
diff --git a/Task/Compare-length-of-two-strings/GW-BASIC/compare-length-of-two-strings.basic b/Task/Compare-length-of-two-strings/GW-BASIC/compare-length-of-two-strings.basic
new file mode 100644
index 0000000000..04c5862393
--- /dev/null
+++ b/Task/Compare-length-of-two-strings/GW-BASIC/compare-length-of-two-strings.basic
@@ -0,0 +1,34 @@
+10 'SAVE "SSTRING",A
+20 ' Length of a group of strings
+30 OPTION BASE 1
+40 DIM SSTRING$(10)
+50 I=0: J=1
+60 ' Begin of program cycle
+70 CLS
+80 PRINT "This program shows the length of up to 10 captured strings."
+90 PRINT "Enter an empty string to finish anytime."
+100 PRINT
+110 ' Do
+120   PRINT "Capture the string";STR$(J);": ";
+130   INPUT "", SSTRING$(J)
+140   IF SSTRING$(J)="" THEN 180  ' Exit Do
+150   IF J>1 THEN GOSUB 280 ' Autosort
+160   J = J + 1
+170 IF J < 11 THEN 110 ' Loop
+180 ' Show results
+190 CLS
+200 J = J - 1
+210 IF J<1 THEN PRINT "You entered no strings.": GOTO 260
+220 PRINT "You entered";J;"strings. Lengths are as follows:"
+230 FOR I=1 TO J
+240   PRINT USING "##. &: ## chars."; I;SSTRING$(I);LEN(SSTRING$(I))
+250 NEXT I
+260 PRINT: PRINT "End of program execution."
+270 END
+280 ' Autosort subroutine
+290   I=J
+300   WHILE I>1
+310     IF LEN(SSTRING$(I)) > LEN(SSTRING$(I-1)) THEN SWAP SSTRING$(I), SSTRING$(I-1)
+320     I=I-1
+330   WEND
+340 RETURN
diff --git a/Task/Compare-length-of-two-strings/Gambas/compare-length-of-two-strings.gambas b/Task/Compare-length-of-two-strings/Gambas/compare-length-of-two-strings.gambas
new file mode 100644
index 0000000000..e699710786
--- /dev/null
+++ b/Task/Compare-length-of-two-strings/Gambas/compare-length-of-two-strings.gambas
@@ -0,0 +1,17 @@
+Public Sub Main()
+
+  Compare("abcd", "123456789")
+
+End
+
+Sub Compare(A As String, B As String)
+
+  If Len(A) >= Len(B) Then
+    Print A, Len(A)
+    Print B, Len(B)
+  Else
+    Print B, Len(B)
+    Print A, Len(A)
+  End If
+
+End Sub
diff --git a/Task/Compare-length-of-two-strings/MSX-Basic/compare-length-of-two-strings.basic b/Task/Compare-length-of-two-strings/MSX-Basic/compare-length-of-two-strings.basic
new file mode 100644
index 0000000000..f903d77ce3
--- /dev/null
+++ b/Task/Compare-length-of-two-strings/MSX-Basic/compare-length-of-two-strings.basic
@@ -0,0 +1,8 @@
+100 LET A$ = "abcd"
+110 LET B$ = "123456789"
+120 GOSUB 140
+130 END
+140 REM SUB comp(A$, B$)
+150   IF LEN(A$) >= LEN(B$) THEN PRINT A$,LEN(A$) : PRINT B$,LEN(B$)
+180   IF LEN(A$) < LEN(B$) THEN PRINT B$,LEN(B$) : PRINT A$,LEN(A$)
+220 RETURN
diff --git a/Task/Compare-length-of-two-strings/MiniScript/compare-length-of-two-strings.mini b/Task/Compare-length-of-two-strings/MiniScript/compare-length-of-two-strings.mini
new file mode 100644
index 0000000000..5e38d2c817
--- /dev/null
+++ b/Task/Compare-length-of-two-strings/MiniScript/compare-length-of-two-strings.mini
@@ -0,0 +1,26 @@
+// Simple version
+print "Simple version:"
+s2 = "This is the first string."
+s1 = "This is string number two."
+
+if s1.len > s2.len then
+	print s1.len + ": " + s1
+	print s2.len + ": " + s2
+else
+	print s2.len + ": " + s2
+	print s1.len + ": " + s1
+end if
+
+// Extra credit. More than 2 strings
+strings = ["qwerty", "abc", "#FFFFFFFF", "255,255,255,255", "3.14159"]
+pairs = []
+for string in strings
+	pairs.push([string, string.len])
+end for
+// sort by index descending
+pairs.sort(1, false)
+print
+print "Extra credit:"
+for pair in pairs
+	print pair[1] + ": " + pair[0]
+end for
diff --git a/Task/Compare-length-of-two-strings/XBasic/compare-length-of-two-strings.basic b/Task/Compare-length-of-two-strings/XBasic/compare-length-of-two-strings.basic
new file mode 100644
index 0000000000..b6d4a1c48d
--- /dev/null
+++ b/Task/Compare-length-of-two-strings/XBasic/compare-length-of-two-strings.basic
@@ -0,0 +1,21 @@
+PROGRAM	"Compare length of two strings"
+VERSION	"0.0000"
+
+DECLARE FUNCTION  Entry ()
+DECLARE FUNCTION  comp (A$, B$)
+
+
+FUNCTION  Entry ()
+    comp("abcd", "123456789")
+END FUNCTION
+
+FUNCTION comp (A$, B$)
+    IF LEN(A$) >= LEN(B$) THEN
+       PRINT A$, LEN(A$)
+       PRINT B$, LEN(B$)
+    ELSE
+       PRINT B$, LEN(B$)
+       PRINT A$, LEN(A$)
+    END IF
+END FUNCTION
+END PROGRAM
diff --git a/Task/Compare-sorting-algorithms-performance/Sidef/compare-sorting-algorithms-performance.sidef b/Task/Compare-sorting-algorithms-performance/Sidef/compare-sorting-algorithms-performance.sidef
new file mode 100644
index 0000000000..dd65e64ea3
--- /dev/null
+++ b/Task/Compare-sorting-algorithms-performance/Sidef/compare-sorting-algorithms-performance.sidef
@@ -0,0 +1,120 @@
+class Array {
+    method radix_sort(base=10) {
+        var rounds = ([self.minmax].map{.abs}.max.ilog(base) + 1)
+        for i in (0..rounds) {
+            var buckets = (2*base -> of {[]})
+            var base_i = base**i
+            for n in self {
+                var digit = idiv(n, base_i)%base
+                digit += base if (0 <= n)
+                buckets[digit].append(n)
+            }
+            self = buckets.flat
+        }
+        return self
+    }
+
+    func merge(left, right) {
+        var result = []
+        while (left && right) {
+            result << [right,left].min_by{.first}.shift
+        }
+        result + left + right
+    }
+
+    method merge_sort {
+        var len = self.len
+        len < 2 && return self
+
+        var (left, right) = self.part(len>>1)
+
+        left  = left.merge_sort
+        right = right.merge_sort
+
+        merge(left, right)
+    }
+
+    method quick_sort {
+        self.len < 2 && return self
+        var p = self.rand          # to avoid the worst cases
+        var g = self.group_by {|x| x <=> p }
+        (g{-1} \\ []).quick_sort + (g{0} \\ []) + (g{1} \\ []).quick_sort
+    }
+
+    method shell_sort {
+        var h = self.len
+        while (h >>= 1) {
+            range(h, self.end).each { |i|
+                var k = self[i]
+                var j
+                for (j = i; (j >= h) && (k < self[j - h]); j -= h) {
+                    self[j] = self[j - h]
+                }
+                self[j] = k
+            }
+        }
+        return self
+    }
+
+    method insertion_sort {
+        { |i|
+            var j = i
+            var k = self[i+1]
+            while ((j >= 0) && (k < self[j])) {
+                self[j+1] = self[j]
+                j--
+            }
+            self[j+1] = k
+        } * self.end
+        return self
+    }
+
+    method bubble_sort {
+        loop {
+            var swapped = false
+            { |i|
+                if (self[i] > self[i+1]) {
+                    self[i, i+1] = self[i+1, i]
+                    swapped = true
+                }
+            } << ^self.end
+            swapped || break
+        }
+        return self
+    }
+}
+
+var data_size = [1e2, 1e3, 1e4, 1e5]
+var data = []
+data_size.each {|size|
+    var ary = @(1..size)
+    data << [size.of(1), ary, ary.shuffle, ary.reverse]
+}
+
+data = data.transpose
+
+var  data_type = ["set to all ones", "ascending sequence",
+                  "randomly shuffled", "descending sequence"]
+print("Array size:          ")
+say data_size.map{|size| "%9d" % size}.join
+
+data.each_kv {|i, arys|
+    say "\nData #{data_type[i]}:"
+    [:sort, :radix_sort, :quick_sort, :merge_sort,
+     :shell_sort, :insertion_sort, :bubble_sort].each {|m|
+        printf("%20s ", m)
+        var timeout = false
+        arys.each {|ary|
+            if (!timeout) {
+                var t0 = Time.micro
+                ary.clone.(m)
+                printf("  %7.3f", (var t1 = (Time.micro - t0)))
+                timeout = true if (t1 > 1.5)
+            }
+            else {
+                print("   --.---")
+            }
+        }
+        say ''
+    }
+}
diff --git a/Task/Compare-sorting-algorithms-performance/Wren/compare-sorting-algorithms-performance.wren b/Task/Compare-sorting-algorithms-performance/Wren/compare-sorting-algorithms-performance.wren
index f90ea91f7b..80c840f1c7 100644
--- a/Task/Compare-sorting-algorithms-performance/Wren/compare-sorting-algorithms-performance.wren
+++ b/Task/Compare-sorting-algorithms-performance/Wren/compare-sorting-algorithms-performance.wren
@@ -1,6 +1,6 @@
 import "random" for Random
-import "/sort" for Sort
-import "/fmt" for Fmt
+import "./sort" for Sort
+import "./fmt" for Fmt
 
 var rand = Random.new()
 
diff --git a/Task/Compile-time-calculation/Scala/compile-time-calculation-1.scala b/Task/Compile-time-calculation/Scala/compile-time-calculation-1.scala
new file mode 100644
index 0000000000..dec0d41d81
--- /dev/null
+++ b/Task/Compile-time-calculation/Scala/compile-time-calculation-1.scala
@@ -0,0 +1,6 @@
+transparent inline def factorial(inline n: Int): Int =
+  inline n match
+    case 0 => 1
+    case _ => n * factorial(n - 1)
+
+inline val factorial10/*: 3628800*/ = factorial(10)
diff --git a/Task/Compile-time-calculation/Scala/compile-time-calculation.scala b/Task/Compile-time-calculation/Scala/compile-time-calculation-2.scala
similarity index 100%
rename from Task/Compile-time-calculation/Scala/compile-time-calculation.scala
rename to Task/Compile-time-calculation/Scala/compile-time-calculation-2.scala
diff --git a/Task/Compiler-AST-interpreter/Wren/compiler-ast-interpreter.wren b/Task/Compiler-AST-interpreter/Wren/compiler-ast-interpreter.wren
index 93912f484e..12ba90c998 100644
--- a/Task/Compiler-AST-interpreter/Wren/compiler-ast-interpreter.wren
+++ b/Task/Compiler-AST-interpreter/Wren/compiler-ast-interpreter.wren
@@ -1,6 +1,6 @@
-import "/dynamic" for Enum, Struct, Tuple
-import "/fmt" for Conv
-import "/ioutil" for FileUtil
+import "./dynamic" for Enum, Struct, Tuple
+import "./fmt" for Conv
+import "./ioutil" for FileUtil
 
 var nodes = [
     "Ident",
diff --git a/Task/Compiler-code-generator/Wren/compiler-code-generator.wren b/Task/Compiler-code-generator/Wren/compiler-code-generator.wren
index f37f67774c..93935adc2e 100644
--- a/Task/Compiler-code-generator/Wren/compiler-code-generator.wren
+++ b/Task/Compiler-code-generator/Wren/compiler-code-generator.wren
@@ -1,7 +1,7 @@
-import "/dynamic" for Enum, Struct, Tuple
-import "/crypto" for Bytes
-import "/fmt" for Fmt
-import "/ioutil" for FileUtil
+import "./dynamic" for Enum, Struct, Tuple
+import "./crypto" for Bytes
+import "./fmt" for Fmt
+import "./ioutil" for FileUtil
 
 var nodes = [
     "Ident",
diff --git a/Task/Compiler-lexical-analyzer/Wren/compiler-lexical-analyzer.wren b/Task/Compiler-lexical-analyzer/Wren/compiler-lexical-analyzer.wren
index 44747c5e3a..37e5b9fea1 100644
--- a/Task/Compiler-lexical-analyzer/Wren/compiler-lexical-analyzer.wren
+++ b/Task/Compiler-lexical-analyzer/Wren/compiler-lexical-analyzer.wren
@@ -1,7 +1,7 @@
-import "/dynamic" for Enum, Struct, Tuple
-import "/str" for Char
-import "/fmt" for Fmt
-import "/ioutil" for FileUtil
+import "./dynamic" for Enum, Struct, Tuple
+import "./str" for Char
+import "./fmt" for Fmt
+import "./ioutil" for FileUtil
 import "os" for Process
 
 var tokens = [
diff --git a/Task/Compiler-syntax-analyzer/Wren/compiler-syntax-analyzer.wren b/Task/Compiler-syntax-analyzer/Wren/compiler-syntax-analyzer.wren
index 3bfdac946d..d7706bc7e5 100644
--- a/Task/Compiler-syntax-analyzer/Wren/compiler-syntax-analyzer.wren
+++ b/Task/Compiler-syntax-analyzer/Wren/compiler-syntax-analyzer.wren
@@ -1,6 +1,6 @@
-import "/dynamic" for Enum, Struct, Tuple
-import "/fmt" for Fmt
-import "/ioutil" for FileUtil
+import "./dynamic" for Enum, Struct, Tuple
+import "./fmt" for Fmt
+import "./ioutil" for FileUtil
 
 var tokens = [
     "EOI",
diff --git a/Task/Compiler-virtual-machine-interpreter/Wren/compiler-virtual-machine-interpreter.wren b/Task/Compiler-virtual-machine-interpreter/Wren/compiler-virtual-machine-interpreter.wren
index 0ecdf2ddd1..b8a4340a07 100644
--- a/Task/Compiler-virtual-machine-interpreter/Wren/compiler-virtual-machine-interpreter.wren
+++ b/Task/Compiler-virtual-machine-interpreter/Wren/compiler-virtual-machine-interpreter.wren
@@ -1,7 +1,7 @@
-import "/dynamic" for Enum
-import "/crypto" for Bytes
-import "/fmt" for Conv
-import "/ioutil" for FileUtil
+import "./dynamic" for Enum
+import "./crypto" for Bytes
+import "./fmt" for Conv
+import "./ioutil" for FileUtil
 
 var codes = [
     "fetch",
diff --git a/Task/Composite-numbers-k-with-no-single-digit-factors-whose-factors-are-all-substrings-of-k/EasyLang/composite-numbers-k-with-no-single-digit-factors-whose-factors-are-all-substrings-of-k.easy b/Task/Composite-numbers-k-with-no-single-digit-factors-whose-factors-are-all-substrings-of-k/EasyLang/composite-numbers-k-with-no-single-digit-factors-whose-factors-are-all-substrings-of-k.easy
new file mode 100644
index 0000000000..05eec49360
--- /dev/null
+++ b/Task/Composite-numbers-k-with-no-single-digit-factors-whose-factors-are-all-substrings-of-k/EasyLang/composite-numbers-k-with-no-single-digit-factors-whose-factors-are-all-substrings-of-k.easy
@@ -0,0 +1,57 @@
+fastfunc isin n k .
+   h = k
+   while n > 0
+      if h mod 10 = n mod 10
+         h = h div 10
+         if match = 0
+            match = n
+         .
+      else
+         h = k
+         if match <> 0
+            n = match
+         .
+         match = 0
+      .
+      if h = 0
+         return 1
+      .
+      n = n div 10
+   .
+   return 0
+.
+
+fastfunc test n .
+   if n mod 2 = 0 or n mod 3 = 0 or n mod 5 = 0 or n mod 7 = 0
+      return 0
+   .
+   rest = n
+   fact = 11
+   while fact <= rest
+      if rest mod fact = 0
+         while rest mod fact = 0
+            rest /= fact
+         .
+         if isin  n fact = 0
+            return 0
+         .
+         nfacts += 1
+      .
+      fact += 2
+      if fact > sqrt n and nfacts = 0
+         return 0
+      .
+   .
+   if nfacts > 1
+      return 1
+   .
+   return 0
+.
+n = 11
+while count < 10
+   if test n = 1
+      print n
+      count += 1
+   .
+   n += 2
+.
diff --git a/Task/Composite-numbers-k-with-no-single-digit-factors-whose-factors-are-all-substrings-of-k/Wren/composite-numbers-k-with-no-single-digit-factors-whose-factors-are-all-substrings-of-k.wren b/Task/Composite-numbers-k-with-no-single-digit-factors-whose-factors-are-all-substrings-of-k/Wren/composite-numbers-k-with-no-single-digit-factors-whose-factors-are-all-substrings-of-k.wren
index d56eb950b3..5eb229b75e 100644
--- a/Task/Composite-numbers-k-with-no-single-digit-factors-whose-factors-are-all-substrings-of-k/Wren/composite-numbers-k-with-no-single-digit-factors-whose-factors-are-all-substrings-of-k.wren
+++ b/Task/Composite-numbers-k-with-no-single-digit-factors-whose-factors-are-all-substrings-of-k/Wren/composite-numbers-k-with-no-single-digit-factors-whose-factors-are-all-substrings-of-k.wren
@@ -1,6 +1,6 @@
-import "/math" for Int
-import "/seq" for Lst
-import "/fmt" for Fmt
+import "./math" for Int
+import "./seq" for Lst
+import "./fmt" for Fmt
 
 var count = 0
 var k = 11 * 11
diff --git a/Task/Conditional-structures/Curto/conditional-structures-1.curto b/Task/Conditional-structures/Curto/conditional-structures-1.curto
new file mode 100644
index 0000000000..343c0a4d48
--- /dev/null
+++ b/Task/Conditional-structures/Curto/conditional-structures-1.curto
@@ -0,0 +1,2 @@
+( condición ) si ( sentencias si verdadero ) entonces
+( condición ) si ( sentencias si verdadero ) sino ( sentencias si falso ) entonces
diff --git a/Task/Conditional-structures/Curto/conditional-structures-2.curto b/Task/Conditional-structures/Curto/conditional-structures-2.curto
new file mode 100644
index 0000000000..8f761c96e1
--- /dev/null
+++ b/Task/Conditional-structures/Curto/conditional-structures-2.curto
@@ -0,0 +1,6 @@
+: menor-que-diez ( n -- )
+  10 < si
+    ." Menor que 10"
+  sino
+    ." Mayor o igual a 10"
+  entonces ;
diff --git a/Task/Conditional-structures/Ursalang/conditional-structures-1.ursa b/Task/Conditional-structures/Ursalang/conditional-structures-1.ursa
new file mode 100644
index 0000000000..70179ab111
--- /dev/null
+++ b/Task/Conditional-structures/Ursalang/conditional-structures-1.ursa
@@ -0,0 +1 @@
+if energyLevel > 9000 { "That's impossible!!!" } else { "Ok, I guess" }
diff --git a/Task/Conditional-structures/Ursalang/conditional-structures-2.ursa b/Task/Conditional-structures/Ursalang/conditional-structures-2.ursa
new file mode 100644
index 0000000000..9c0854d13e
--- /dev/null
+++ b/Task/Conditional-structures/Ursalang/conditional-structures-2.ursa
@@ -0,0 +1,3 @@
+if color == "red" { "aaaaaah!" }
+else if color == "blue" { "oooooh!" }
+else { "eeeeeeee!" }
diff --git a/Task/Conjugate-transpose/Wren/conjugate-transpose.wren b/Task/Conjugate-transpose/Wren/conjugate-transpose.wren
index 8254db62f5..e59ff4b1b6 100644
--- a/Task/Conjugate-transpose/Wren/conjugate-transpose.wren
+++ b/Task/Conjugate-transpose/Wren/conjugate-transpose.wren
@@ -1,5 +1,5 @@
-import "/complex" for Complex, CMatrix
-import "/fmt" for Fmt
+import "./complex" for Complex, CMatrix
+import "./fmt" for Fmt
 
 var cm1 = CMatrix.new(
     [
diff --git a/Task/Consecutive-primes-with-ascending-or-descending-differences/EasyLang/consecutive-primes-with-ascending-or-descending-differences.easy b/Task/Consecutive-primes-with-ascending-or-descending-differences/EasyLang/consecutive-primes-with-ascending-or-descending-differences.easy
new file mode 100644
index 0000000000..7fcb576dfd
--- /dev/null
+++ b/Task/Consecutive-primes-with-ascending-or-descending-differences/EasyLang/consecutive-primes-with-ascending-or-descending-differences.easy
@@ -0,0 +1,44 @@
+fastfunc nextprim num .
+   repeat
+      i = 2
+      while i <= sqrt num and num mod i <> 0
+         i += 1
+      .
+      until num mod i <> 0
+      num += 1
+   .
+   return num
+.
+proc getseq dir . maxprim maxcnt .
+   maxcnt = 0
+   pri = 2
+   repeat
+      prev = pri
+      pri = nextprim (pri + 1)
+      until pri > 1000000
+      d0 = d
+      d = (pri - prev) * dir
+      if d > d0
+         cnt += 1
+      else
+         if cnt > maxcnt
+            maxcnt = cnt
+            maxprim = prim0
+         .
+         prim0 = prev
+         cnt = 1
+      .
+   .
+.
+proc outseq pri max . .
+   write pri & " "
+   for i to max
+      pri = nextprim (pri + 1)
+      write pri & " "
+   .
+   print ""
+.
+getseq 1 pri max
+outseq pri max
+getseq -1 pri max
+outseq pri max
diff --git a/Task/Consecutive-primes-with-ascending-or-descending-differences/Wren/consecutive-primes-with-ascending-or-descending-differences.wren b/Task/Consecutive-primes-with-ascending-or-descending-differences/Wren/consecutive-primes-with-ascending-or-descending-differences.wren
index 80e874c3a2..ae715a3961 100644
--- a/Task/Consecutive-primes-with-ascending-or-descending-differences/Wren/consecutive-primes-with-ascending-or-descending-differences.wren
+++ b/Task/Consecutive-primes-with-ascending-or-descending-differences/Wren/consecutive-primes-with-ascending-or-descending-differences.wren
@@ -1,4 +1,4 @@
-import "/math" for Int
+import "./math" for Int
 
 var LIMIT = 999999
 var primes = Int.primeSieve(LIMIT)
diff --git a/Task/Constrained-random-points-on-a-circle/EasyLang/constrained-random-points-on-a-circle.easy b/Task/Constrained-random-points-on-a-circle/EasyLang/constrained-random-points-on-a-circle.easy
new file mode 100644
index 0000000000..3f4f491b57
--- /dev/null
+++ b/Task/Constrained-random-points-on-a-circle/EasyLang/constrained-random-points-on-a-circle.easy
@@ -0,0 +1,10 @@
+while cnt < 100
+   x = random 31 - 16
+   y = random 31 - 16
+   r = sqrt (x * x + y * y)
+   if 10 <= r and r <= 15
+      cnt += 1
+      move 50 + x * 2 50 + y * 2
+      circle 1
+   .
+.
diff --git a/Task/Constrained-random-points-on-a-circle/Sidef/constrained-random-points-on-a-circle.sidef b/Task/Constrained-random-points-on-a-circle/Sidef/constrained-random-points-on-a-circle.sidef
index cd0f8815e7..d68a865efc 100644
--- a/Task/Constrained-random-points-on-a-circle/Sidef/constrained-random-points-on-a-circle.sidef
+++ b/Task/Constrained-random-points-on-a-circle/Sidef/constrained-random-points-on-a-circle.sidef
@@ -1,13 +1,13 @@
-var points = [];
+var points = []
 while (points.len < 100) {
-    var (x, y) = 2.of{31.rand.int - 15}...;
-    var r2 = (x**2 + y**2);
+    var (x, y) = 2.of{ 30.irand - 15 }...
+    var r2 = (x**2 + y**2)
     if ((r2 >= 100) && (r2 <= 225)) {
-        points.append([x, y]);
+        points.append([x, y])
     }
 }
 
-print <<'HEAD';
+print <<'HEAD'
 %!PS-Adobe-3.0 EPSF-3.0
 %%BoundingBox 0 0 400 400
 200 200 translate 10 10 scale
@@ -19,5 +19,5 @@ print <<'HEAD';
 /pt { .1 0 360 arc fill } def
 HEAD
 
-points.each { |pt| say "#{pt.join(' ')} pt" };
-print '%%EOF';
+points.each { |pt| say "#{pt.join(' ')} pt" }
+print '%%EOF'
diff --git a/Task/Continued-fraction-Arithmetic-Construct-from-rational-number/Wren/continued-fraction-arithmetic-construct-from-rational-number.wren b/Task/Continued-fraction-Arithmetic-Construct-from-rational-number/Wren/continued-fraction-arithmetic-construct-from-rational-number.wren
index ba14b32ca2..050139b0d5 100644
--- a/Task/Continued-fraction-Arithmetic-Construct-from-rational-number/Wren/continued-fraction-arithmetic-construct-from-rational-number.wren
+++ b/Task/Continued-fraction-Arithmetic-Construct-from-rational-number/Wren/continued-fraction-arithmetic-construct-from-rational-number.wren
@@ -1,5 +1,5 @@
-import "/rat" for Rat
-import "/fmt" for Fmt
+import "./rat" for Rat
+import "./fmt" for Fmt
 
 var toContFrac = Fn.new { |r|
     var a = r.num
diff --git a/Task/Continued-fraction-Arithmetic-G-matrix-ng-continued-fraction-n-/Wren/continued-fraction-arithmetic-g-matrix-ng-continued-fraction-n-.wren b/Task/Continued-fraction-Arithmetic-G-matrix-ng-continued-fraction-n-/Wren/continued-fraction-arithmetic-g-matrix-ng-continued-fraction-n-.wren
index 09eb929ef2..36c77c4d9a 100644
--- a/Task/Continued-fraction-Arithmetic-G-matrix-ng-continued-fraction-n-/Wren/continued-fraction-arithmetic-g-matrix-ng-continued-fraction-n-.wren
+++ b/Task/Continued-fraction-Arithmetic-G-matrix-ng-continued-fraction-n-/Wren/continued-fraction-arithmetic-g-matrix-ng-continued-fraction-n-.wren
@@ -1,4 +1,4 @@
-import "/dynamic" for Tuple
+import "./dynamic" for Tuple
 
 var CFData = Tuple.create("Tuple", ["str", "ng", "r", "gen"])
 
diff --git a/Task/Convert-decimal-number-to-rational/Ol/convert-decimal-number-to-rational.ol b/Task/Convert-decimal-number-to-rational/Ol/convert-decimal-number-to-rational.ol
new file mode 100644
index 0000000000..0353713a2e
--- /dev/null
+++ b/Task/Convert-decimal-number-to-rational/Ol/convert-decimal-number-to-rational.ol
@@ -0,0 +1,8 @@
+(print (exact #i0.9054054054))
+(print (exact #i0.5185185185))
+(print (exact #i0.75))
+(print (exact #i35.000))
+(print (exact #i35.001))
+(print (exact #i0.9))
+(print (exact #i0.99))
+(print (exact #i0.909))
diff --git a/Task/Convert-decimal-number-to-rational/Wren/convert-decimal-number-to-rational.wren b/Task/Convert-decimal-number-to-rational/Wren/convert-decimal-number-to-rational.wren
index 5124730bef..313be073c0 100644
--- a/Task/Convert-decimal-number-to-rational/Wren/convert-decimal-number-to-rational.wren
+++ b/Task/Convert-decimal-number-to-rational/Wren/convert-decimal-number-to-rational.wren
@@ -1,5 +1,5 @@
-import "/rat" for Rat
-import "/fmt" for Fmt
+import "./rat" for Rat
+import "./fmt" for Fmt
 
 var tests = [0.9054054, 0.518518, 0.75]
 for (test in tests) {
diff --git a/Task/Convex-hull/Wren/convex-hull.wren b/Task/Convex-hull/Wren/convex-hull.wren
index e86719b8c6..9f9b90af50 100644
--- a/Task/Convex-hull/Wren/convex-hull.wren
+++ b/Task/Convex-hull/Wren/convex-hull.wren
@@ -1,6 +1,6 @@
-import "/sort" for Sort
-import "/trait" for Comparable
-import "/iterate" for Stepped
+import "./sort" for Sort
+import "./trait" for Comparable
+import "./iterate" for Stepped
 
 class Point is Comparable {
     construct new(x, y) {
diff --git a/Task/Convex-hull/XPL0/convex-hull.xpl0 b/Task/Convex-hull/XPL0/convex-hull.xpl0
new file mode 100644
index 0000000000..e2ec68bfd4
--- /dev/null
+++ b/Task/Convex-hull/XPL0/convex-hull.xpl0
@@ -0,0 +1,38 @@
+func real CosAng(A, B);         \Return cosine of angle between vectors A and B
+int  A, B;                      \Cos(Ang) = DotProd / (|A|*|B|)
+real DotProd, Magnitude;
+[DotProd:= float( A(0)*B(0) + A(1)*B(1));
+Magnitude:= sqrt(float( sq(B(0)-A(0)) + sq(B(1)-A(1)) ));
+return DotProd / Magnitude;
+];
+
+proc ConvexHull(N, P);
+int  N, P;
+int  Min, I, HullI, EndI, A(2), B(2), J, SJ;
+real Ang, MinAng;
+[Min:= -1>>1;           \find index of point with smallest X coordinate
+for I:= 0 to N-1 do
+    if P(I,0) < Min then
+        [Min:= P(I,0);  HullI:= I];
+EndI:= HullI;
+
+A(0):= 0;  A(1):= -1;
+repeat  ChOut(0, ^();
+        IntOut(0, P(HullI,0));  ChOut(0, ^,);  IntOut(0, P(HullI,1));
+        ChOut(0, ^));
+        MinAng:= -1e12; \find index of point with smallest diverting angle
+        for J:= 0 to N-1 do
+            [B(0):= P(J,0) - P(HullI,0);  B(1):= P(J,1) - P(HullI,1);
+            Ang:= CosAng(A, B);
+            if Ang > MinAng and J # HullI then
+                [MinAng:= Ang;  SJ:= J];
+            ];
+        A(0):= P(SJ,0) - P(HullI,0);  A(1):= P(SJ,1) - P(HullI,1);
+        HullI:= SJ;
+        if HullI # EndI then Text(0, ", ");
+until   HullI = EndI;
+];
+
+ConvexHull(20, [[16,3], [12,17], [0,6], [-4,-6], [16,6], [16,-7], [16,-3],
+                [17,-4], [5,19], [19,-8], [3,16], [12,13], [3,-4], [17,5],
+                [-3,15], [-3,-9], [0,11], [-9,-3], [-4,-2], [12,10]])
diff --git a/Task/Conways-Game-of-Life/MiniScript/conways-game-of-life.mini b/Task/Conways-Game-of-Life/MiniScript/conways-game-of-life.mini
index 0a2e12c8fc..1c4065f276 100644
--- a/Task/Conways-Game-of-Life/MiniScript/conways-game-of-life.mini
+++ b/Task/Conways-Game-of-Life/MiniScript/conways-game-of-life.mini
@@ -8,7 +8,7 @@ grids = []
 for dispIdx in [4,5]
 	display(dispIdx).mode = displayMode.tile
 	td = display(dispIdx)
-	td.cellSize = 10  // size of cells on screen
+	td.cellSize = 9  // size of cells on screen
 	td.extent = [cols, rows]
 	td.overlap = -1   // adds a small gap between cells
 	td.tileSet = img; td.tileSetTileSize = 1
diff --git a/Task/Conways-Game-of-Life/Quackery/conways-game-of-life.quackery b/Task/Conways-Game-of-Life/Quackery/conways-game-of-life.quackery
new file mode 100644
index 0000000000..90ddb5c853
--- /dev/null
+++ b/Task/Conways-Game-of-Life/Quackery/conways-game-of-life.quackery
@@ -0,0 +1,132 @@
+  [ $ "turtleduck.qky" loadfile ]  now!
+
+  [ $ \
+import time
+now = time.time()
+sleepy_time = 5/7-(now%(5/7))
+time.sleep(sleepy_time)
+\ python ]                                 is wait        (     -->   )
+
+  [ dup 1
+    [ 2dup > while + 1 >> 2dup / again ]
+    drop nip ]                             is sqrt        (   n --> n )
+
+  [ stack ]                                is width       (     --> s )
+
+  [ tuck witheach
+      [ over i^ peek + rot i^ poke swap ]
+    drop ]                                 is add         ( [ [ --> [ )
+
+  [ 1 split swap join ]                    is left        (   [ --> [ )
+
+  [ -1 split swap join ]                   is right       (   [ --> [ )
+
+  [ width share split swap join ]          is up          (   [ --> [ )
+
+  [ width share negate split swap join ]   is down        (   [ --> [ )
+
+  [ left dup up tuck add
+    swap right tuck add
+    swap right tuck add
+    swap down tuck add
+    swap down tuck add
+    swap left tuck add
+    swap left add ]                        is neighbours  (   [ --> [ )
+
+  [ [] swap
+    width share times
+      [ width share split
+        dip [ 0 swap 0 join join join ] ]
+    drop
+    2 width tally
+    0 width share of tuck join join ]      is makeborder  (   [ --> [ )
+
+  [ dup size times
+      [ 0 swap i^ poke
+        0 swap i^ width share + 1 - poke
+        width share step ]
+     width share times
+       [ 0 swap i^ poke
+         0 swap i^ 1 + negate poke ] ]     is clearborder (   [ --> [ )
+
+  [ dup neighbours
+    witheach
+      [ over i^ peek iff
+          [ 1 | 3 != if
+              [ 0 swap i^ poke ] ]
+          done
+        3 = if [ 1 swap i^ poke ] ]
+    clearborder ]                          is nextgen     (   [ --> [ )
+
+  [ 6 random
+    [ table
+      [ 200 200 255 ] [ 200 255 200 ]
+      [ 255 200 200 ] [ 200 255 255 ]
+      [ 255 200 255 ] [ 255 255 200 ] ]
+    fill
+      [ 4 times
+          [ 20 1 walk -1 4 turn ] ] ]      is block       (     -->   )
+
+
+  [ clear
+    width share 10 *
+    dup negate
+    4 - 1 fly
+    -1 4 turn
+    16 - 1 fly
+    1 4 turn
+    20 1 fly
+    ' [ 200 200 200 ] colour
+    4 times
+      [ width share 2 - 20 * 1 walk
+        1 4 turn ]
+    -20 1 fly
+    ' [ 63 63 63 ] colour
+    width share times
+      [ width share split
+        swap witheach
+          [ if block
+            20 1 fly ]
+        width share -20 * 1 fly
+        1 4 turn
+        20 1 fly
+        -1 4 turn ]
+    drop wait frame ]                      is draw        (   [ -->   )
+
+  [ turtle 0 frames 2 wide
+    dup size sqrt width put
+    makeborder
+    dup
+    [ dup draw nextgen
+      dip [ nextgen nextgen ]
+      2dup = until ]
+    5 times
+      [ dup draw nextgen 2dup = until ]
+    2drop width release ]                  is life        (   [ -->   )
+
+  ' [ 0 0 0
+      1 1 1
+      0 0 0 ] life                                 ( task requirement )
+
+  ' [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+      0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+      0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+      0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+      0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+      0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+      0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+      0 0 1 1 1 1 1 0 1 1 1 1 1 0 0
+      0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+      0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+      0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+      0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+      0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+      0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+      0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] life         ( more interesting )
+
+  randomise
+  [ []
+    1089 times
+      [ 2 random join ]
+    life
+    again ]                                        ( ... runs forever )
diff --git a/Task/Count-in-factors/Wren/count-in-factors.wren b/Task/Count-in-factors/Wren/count-in-factors.wren
index 2922635a6e..9bbc43c76a 100644
--- a/Task/Count-in-factors/Wren/count-in-factors.wren
+++ b/Task/Count-in-factors/Wren/count-in-factors.wren
@@ -1,4 +1,4 @@
-import "/math" for Int
+import "./math" for Int
 
 for (r in [1..9, 2144..2154, 9987..9999]) {
     for (i in r) {
diff --git a/Task/Count-in-octal/Amazing-Hopper/count-in-octal.hopper b/Task/Count-in-octal/Amazing-Hopper/count-in-octal.hopper
new file mode 100644
index 0000000000..a31b83147f
--- /dev/null
+++ b/Task/Count-in-octal/Amazing-Hopper/count-in-octal.hopper
@@ -0,0 +1,10 @@
+#include 
+
+algoritmo
+    x=0, tope=11
+    decimales '0'
+    iterar grupo ( ++x,#( x< tope ),\
+        x,":",justificar derecha ( 5, x ---mostrar como octal--- ),\
+        NL, imprimir, cuando( #(x==10)){ \
+        "...\n...\n",x=4294967284, tope=4294967295} )
+terminar
diff --git a/Task/Count-in-octal/J/count-in-octal-1.j b/Task/Count-in-octal/J/count-in-octal-1.j
index 867667c16d..75c5727aeb 100644
--- a/Task/Count-in-octal/J/count-in-octal-1.j
+++ b/Task/Count-in-octal/J/count-in-octal-1.j
@@ -1,2 +1,2 @@
-   disp=.([echo) ' '(-.~":)8&#.inv
-   (1+disp)^:_]0x
+disp=. ([ echo) 1 ": 8&#.inv
+(1 + disp)^:_]0x
diff --git a/Task/Count-in-octal/J/count-in-octal-2.j b/Task/Count-in-octal/J/count-in-octal-2.j
index 0da28ba575..f7d8e1bd48 100644
--- a/Task/Count-in-octal/J/count-in-octal-2.j
+++ b/Task/Count-in-octal/J/count-in-octal-2.j
@@ -1,4 +1,4 @@
-   (1+disp)^:_]0x
+   (1 + disp)^:_]0x
 0
 1
 2
diff --git a/Task/Count-in-octal/MiniScript/count-in-octal.mini b/Task/Count-in-octal/MiniScript/count-in-octal.mini
new file mode 100644
index 0000000000..f336fbecbb
--- /dev/null
+++ b/Task/Count-in-octal/MiniScript/count-in-octal.mini
@@ -0,0 +1,16 @@
+toOctal = function(n)
+	result = ""
+	while n != 0
+		octet = n % 8
+		n = floor(n / 8)
+		result = octet + result
+	end while
+	return result
+end function
+
+maxnum = 10 ^ 15 - 1
+i = 0
+while i < maxnum
+	i += 1
+	print i + " = " + toOctal(i)
+end while
diff --git a/Task/Count-in-octal/Python/count-in-octal.py b/Task/Count-in-octal/Python/count-in-octal-1.py
similarity index 100%
rename from Task/Count-in-octal/Python/count-in-octal.py
rename to Task/Count-in-octal/Python/count-in-octal-1.py
diff --git a/Task/Count-in-octal/Python/count-in-octal-2.py b/Task/Count-in-octal/Python/count-in-octal-2.py
new file mode 100644
index 0000000000..02e2c40476
--- /dev/null
+++ b/Task/Count-in-octal/Python/count-in-octal-2.py
@@ -0,0 +1,4 @@
+# Python3 count_in_oct.py by Xing216
+import sys
+for n in range(sys.maxsize):
+    print(oct(n))
diff --git a/Task/Count-in-octal/Wren/count-in-octal.wren b/Task/Count-in-octal/Wren/count-in-octal.wren
index 610a6d823f..78debd84da 100644
--- a/Task/Count-in-octal/Wren/count-in-octal.wren
+++ b/Task/Count-in-octal/Wren/count-in-octal.wren
@@ -1,4 +1,4 @@
-import "/fmt" for Conv
+import "./fmt" for Conv
 
 var i = 0
 while (true) {
diff --git a/Task/Count-occurrences-of-a-substring/SETL/count-occurrences-of-a-substring.setl b/Task/Count-occurrences-of-a-substring/SETL/count-occurrences-of-a-substring.setl
new file mode 100644
index 0000000000..1a3ee2eec3
--- /dev/null
+++ b/Task/Count-occurrences-of-a-substring/SETL/count-occurrences-of-a-substring.setl
@@ -0,0 +1,16 @@
+program count_overlapping_substrings;
+    tests := [["the three truths", "th"], ["ababababab", "abab"]];
+    loop for [s, subs] in tests do
+        print("'" + subs + "' in '" + s + "': "
+              + str countSubs(s, subs));
+    end loop;
+
+    proc countSubs(s, subs);
+        count := 0;
+        loop while s(subs) /= om do
+            s(subs) := "";
+            count +:= 1;
+        end loop;
+        return count;
+    end proc;
+end program;
diff --git a/Task/Count-the-coins/Draco/count-the-coins.draco b/Task/Count-the-coins/Draco/count-the-coins.draco
new file mode 100644
index 0000000000..81b103058e
--- /dev/null
+++ b/Task/Count-the-coins/Draco/count-the-coins.draco
@@ -0,0 +1,16 @@
+proc main() void:
+    [4]byte coins = (1, 5, 10, 25);
+    [101]byte tab;
+    word m, n;
+
+    for n from 1 upto 100 do tab[n] := 0 od;
+    tab[0] := 1;
+
+    for m from 0 upto 3 do
+        for n from coins[m] upto 100 do
+            tab[n] := tab[n] + tab[n - coins[m]]
+        od
+    od;
+
+    writeln(tab[100])
+corp
diff --git a/Task/Count-the-coins/FOCAL/count-the-coins.focal b/Task/Count-the-coins/FOCAL/count-the-coins.focal
new file mode 100644
index 0000000000..0b6d82116a
--- /dev/null
+++ b/Task/Count-the-coins/FOCAL/count-the-coins.focal
@@ -0,0 +1,6 @@
+01.10 S C(1)=1;S C(2)=5;S C(3)=10;S C(4)=25
+01.20 F N=1,100;S T(N)=0
+01.30 S T(0)=1
+01.40 F M=1,4;F N=C(M),100;S T(N)=T(N)+T(N-C(M))
+01.50 T %3,T(100),!
+01.60 Q
diff --git a/Task/Count-the-coins/MAD/count-the-coins.mad b/Task/Count-the-coins/MAD/count-the-coins.mad
new file mode 100644
index 0000000000..f1701adff7
--- /dev/null
+++ b/Task/Count-the-coins/MAD/count-the-coins.mad
@@ -0,0 +1,14 @@
+            NORMAL MODE IS INTEGER
+            DIMENSION TAB(101)
+
+            THROUGH ZERO, FOR N = 1, 1, N.G.100
+ZERO        TAB(N) = 0
+            TAB(0) = 1
+
+            THROUGH STEP, FOR VALUES OF COIN = 1, 5, 10, 25
+            THROUGH STEP, FOR N = COIN, 1, N.G.100
+STEP        TAB(N) = TAB(N) + TAB(N - COIN)
+
+            VECTOR VALUES FMT = $I3*$
+            PRINT FORMAT FMT, TAB(100)
+            END OF PROGRAM
diff --git a/Task/Count-the-coins/SETL/count-the-coins.setl b/Task/Count-the-coins/SETL/count-the-coins.setl
new file mode 100644
index 0000000000..8ddcbf80e1
--- /dev/null
+++ b/Task/Count-the-coins/SETL/count-the-coins.setl
@@ -0,0 +1,14 @@
+program count_the_coins;
+    print(count([1, 5, 10, 25], 100));
+    print(count([1, 5, 10, 25, 50, 100], 1000 * 100));
+
+    proc count(coins, n);
+        tab := {[0, 1]};
+        loop for coin in coins do
+            loop for i in [coin..n] do
+                tab(i) +:= tab(i - coin) ? 0;
+            end loop;
+        end loop;
+        return tab(n);
+    end proc;
+end program;
diff --git a/Task/Count-the-coins/Wren/count-the-coins.wren b/Task/Count-the-coins/Wren/count-the-coins.wren
index 65783f6288..25cbb9b2ac 100644
--- a/Task/Count-the-coins/Wren/count-the-coins.wren
+++ b/Task/Count-the-coins/Wren/count-the-coins.wren
@@ -1,5 +1,5 @@
-import "/big" for BigInt
-import "/fmt" for Fmt
+import "./big" for BigInt
+import "./fmt" for Fmt
 
 var countCoins = Fn.new { |c, m, n|
     var table = List.filled(n + 1, null)
diff --git a/Task/Cramers-rule/Wren/cramers-rule.wren b/Task/Cramers-rule/Wren/cramers-rule.wren
index 8d773ca1da..77b84c59eb 100644
--- a/Task/Cramers-rule/Wren/cramers-rule.wren
+++ b/Task/Cramers-rule/Wren/cramers-rule.wren
@@ -1,4 +1,4 @@
-import "/matrix" for Matrix
+import "./matrix" for Matrix
 
 var cramer = Fn.new { |a, d|
     var n = a.numRows
diff --git a/Task/Create-an-HTML-table/Wren/create-an-html-table.wren b/Task/Create-an-HTML-table/Wren/create-an-html-table.wren
index 995fe7255f..3ec9fa84b4 100644
--- a/Task/Create-an-HTML-table/Wren/create-an-html-table.wren
+++ b/Task/Create-an-HTML-table/Wren/create-an-html-table.wren
@@ -1,5 +1,5 @@
 import "random" for Random
-import "/fmt" for Fmt
+import "./fmt" for Fmt
 
 var r = Random.new()
 var sb = ""
diff --git a/Task/Create-an-object-at-a-given-address/FutureBasic/create-an-object-at-a-given-address.basic b/Task/Create-an-object-at-a-given-address/FutureBasic/create-an-object-at-a-given-address.basic
new file mode 100644
index 0000000000..c3b79eb3b6
--- /dev/null
+++ b/Task/Create-an-object-at-a-given-address/FutureBasic/create-an-object-at-a-given-address.basic
@@ -0,0 +1,24 @@
+include "NSLog.incl"
+
+
+local fn DoIt
+  NSLog( @"Dimension in integer \"x\", but do not assign it a value.\n" )
+  long x
+  // Note that the @ (at sign) prefixing x is a pointer to its machine address
+  NSLog( @"The machine address of x is: %p", @x )
+  NSLog( @"While x is unassigned, the machine address will contain a garbage value: %ld\n", x )
+
+  // Assign x a value of 1234
+  x = 1234
+  NSLog( @"When x is assigned a value of %ld, that value will be stored in the machine address: %p", x, @x )
+  NSLog( @"The machine address now contains the value: %ld\n", x )
+
+  // Reassign x a value of 5678
+  x = 5678
+  NSLog( @"Wnen x is reassigned the new value %ld, that value will be stored in the existing machine address: %p", x, @x )
+  NSLog( @"The machine address now contains the value: %ld\n", x )
+end fn
+
+fn DoIt
+
+HandleEvents
diff --git a/Task/Create-an-object-at-a-given-address/Wren/create-an-object-at-a-given-address-1.wren b/Task/Create-an-object-at-a-given-address/Wren/create-an-object-at-a-given-address-1.wren
index d71d23fd4c..a0686fcbd8 100644
--- a/Task/Create-an-object-at-a-given-address/Wren/create-an-object-at-a-given-address-1.wren
+++ b/Task/Create-an-object-at-a-given-address/Wren/create-an-object-at-a-given-address-1.wren
@@ -1,4 +1,4 @@
-/* create_object_at_given_address.wren */
+/* Create_an_object_at_a_given_address.wren */
 
 import "./fmt" for Fmt
 
diff --git a/Task/Create-an-object-at-a-given-address/Wren/create-an-object-at-a-given-address-2.wren b/Task/Create-an-object-at-a-given-address/Wren/create-an-object-at-a-given-address-2.wren
index ce8f1e121b..cb93454cc9 100644
--- a/Task/Create-an-object-at-a-given-address/Wren/create-an-object-at-a-given-address-2.wren
+++ b/Task/Create-an-object-at-a-given-address/Wren/create-an-object-at-a-given-address-2.wren
@@ -1,4 +1,4 @@
-/* gcc create_object_at_given_address.c -o create_object_at_given_address -lwren -lm */
+/* gcc Create_an_object_at_a_given_address.c -o Create_an_object_at_a_given_address -lwren -lm */
 
 #include 
 #include 
@@ -113,7 +113,7 @@ int main(int argc, char **argv) {
     config.loadModuleFn = &loadModule;
     WrenVM* vm = wrenNewVM(&config);
     const char* module = "main";
-    const char* fileName = "create_object_at_given_address.wren";
+    const char* fileName = "Create_an_object_at_a_given_address.wren";
     char *script = readFile(fileName);
     WrenInterpretResult result = wrenInterpret(vm, module, script);
     switch (result) {
diff --git a/Task/Cuban-primes/ALGOL-68/cuban-primes.alg b/Task/Cuban-primes/ALGOL-68/cuban-primes.alg
index 781a845dec..d3121f0c9c 100644
--- a/Task/Cuban-primes/ALGOL-68/cuban-primes.alg
+++ b/Task/Cuban-primes/ALGOL-68/cuban-primes.alg
@@ -2,7 +2,7 @@ BEGIN
     # find some cuban primes (using the definition: a prime p is a cuban prime if   #
     #                                                   p = n^3 - ( n - 1 )^3       #
     #                                                   for some n > 0)             #
-
+    PR read "primes.incl.a68" PR                          # include prime utilities #
     # returns a string representation of n with commas                              #
     PROC commatise = ( LONG INT n )STRING:
          BEGIN
@@ -18,32 +18,15 @@ BEGIN
             result
          END # commatise # ;
 
-    # sieve the primes                                                              #
     INT sieve max = 2 000 000;
-    [ sieve max ]BOOL sieve; FOR i TO UPB sieve DO sieve[ i ] := TRUE OD;
-    sieve[ 1 ] := FALSE;
-    FOR s FROM 2 TO ENTIER sqrt( sieve max ) DO
-        IF sieve[ s ] THEN
-            FOR p FROM s * s BY s TO sieve max DO sieve[ p ] := FALSE OD
-        FI
-    OD;
-    # count the primes, we can ignore 2, as we know it isn't a cuban prime          #
-    sieve[ 2 ] := FALSE;
-    INT prime count := 0;
-    FOR s TO UPB sieve DO IF sieve[ s ] THEN prime count +:= 1 FI OD;
-    # construct a list of the primes                                                #
-    [ 1 : prime count ]INT primes;
-    INT prime pos := LWB primes;
-    FOR s FROM LWB sieve TO UPB sieve DO
-        IF sieve[ s ] THEN primes[ prime pos ] := s; prime pos +:= 1 FI
-    OD;
+    []BOOL sieve = PRIMESIEVE sieve max;            # sieve the primes to max sieve #
 
     # find the cuban primes                                                         #
     INT       cuban count   := 0;
     LONG INT  final cuban   := 0;
     INT       max cuban      = 100 000; # mximum number of cubans to find           #
     INT       print limit    =     200; # show all cubans up to this one            #
-    print( ( "First ", commatise( print limit ), " cuban primes: ", newline ) );
+    print( ( "First ", commatise( print limit ), " cuban primes:", newline ) );
     LONG INT prev cube      := 1;
     FOR n FROM 2 WHILE
         LONG INT this cube   = ( LENG n * n ) * n;
@@ -51,15 +34,10 @@ BEGIN
         prev cube           := this cube;
         IF ODD p THEN
             # 2 is not a cuban prime so we only test odd numbers                    #
-            BOOL is prime   := TRUE;
-            INT max factor   = SHORTEN ENTIER long sqrt( p );
-            FOR f FROM LWB primes WHILE is prime AND primes[ f ] <= max factor DO
-                is prime    := p MOD primes[ f ] /= 0
-            OD;
-            IF is prime THEN
+            IF IF p <= UPB sieve THEN sieve[ SHORTEN p ] ELSE is probably prime( p ) FI
+            THEN
                 # have a cuban prime                                                #
-                cuban count +:= 1;
-                IF cuban count <= print limit THEN
+                IF ( cuban count +:= 1 ) <= print limit THEN
                     # must show this cuban                                          #
                     STRING p formatted = commatise( p );
                     print( ( "          "[ UPB p formatted : ], p formatted ) );
diff --git a/Task/Cuban-primes/Wren/cuban-primes.wren b/Task/Cuban-primes/Wren/cuban-primes.wren
index 1668614993..cde65500f3 100644
--- a/Task/Cuban-primes/Wren/cuban-primes.wren
+++ b/Task/Cuban-primes/Wren/cuban-primes.wren
@@ -1,4 +1,4 @@
-import "/fmt" for Fmt
+import "./fmt" for Fmt
 
 var start = System.clock
 var primes = [3, 5]
diff --git a/Task/Cullen-and-Woodall-numbers/Wren/cullen-and-woodall-numbers-2.wren b/Task/Cullen-and-Woodall-numbers/Wren/cullen-and-woodall-numbers-2.wren
index 939e89bc50..87748735c5 100644
--- a/Task/Cullen-and-Woodall-numbers/Wren/cullen-and-woodall-numbers-2.wren
+++ b/Task/Cullen-and-Woodall-numbers/Wren/cullen-and-woodall-numbers-2.wren
@@ -1,4 +1,4 @@
-/* cullen_and_woodall_numbers2.wren */
+/* Cullen_and_woodall_numbers_2.wren */
 
 import "./gmp" for Mpz
 
diff --git a/Task/Cumulative-standard-deviation/Wren/cumulative-standard-deviation.wren b/Task/Cumulative-standard-deviation/Wren/cumulative-standard-deviation.wren
index 2692545d75..60802fe2d4 100644
--- a/Task/Cumulative-standard-deviation/Wren/cumulative-standard-deviation.wren
+++ b/Task/Cumulative-standard-deviation/Wren/cumulative-standard-deviation.wren
@@ -1,5 +1,5 @@
-import "/fmt" for Fmt
-import "/math" for Nums
+import "./fmt" for Fmt
+import "./math" for Nums
 
 var cumStdDev = Fiber.new { |a|
     for (i in 0...a.count) {
@@ -13,5 +13,5 @@ var a = [2, 4, 4, 4, 5,  5, 7, 9]
 while (true) {
     var sd = cumStdDev.call(a)
     if (cumStdDev.isDone) return
-    System.print("Std Dev : %(Fmt.f(10, sd, 8))\n")
+    Fmt.print("Std Dev : $10.8f\n", sd)
 }
diff --git a/Task/Currency/BBC-BASIC/currency.basic b/Task/Currency/BBC-BASIC/currency.basic
new file mode 100644
index 0000000000..465c5c62e5
--- /dev/null
+++ b/Task/Currency/BBC-BASIC/currency.basic
@@ -0,0 +1,11 @@
+      REM No need for BigNum library.
+      REM This language uses 80bit (10 bytes!) for real values internally.
+      Price = 4E15 * 5.50 + 2.0 * 2.86
+      Tax   = Price * .0765
+      Total = Price + Tax
+
+      REM Number printing will use 2 decimal places and 21 positions zone
+      @%=&020215
+      PRINT "Price = $" Price
+      PRINT "Tax   = $" Tax
+      PRINT "Total = $" Total
diff --git a/Task/Currency/Wren/currency.wren b/Task/Currency/Wren/currency.wren
index 158035e3cb..56479aae74 100644
--- a/Task/Currency/Wren/currency.wren
+++ b/Task/Currency/Wren/currency.wren
@@ -1,4 +1,4 @@
-import "/big" for BigRat
+import "./big" for BigRat
 
 var hamburgers     = BigRat.new("4000000000000000")
 var milkshakes     = BigRat.two
diff --git a/Task/Curzon-numbers/Wren/curzon-numbers-1.wren b/Task/Curzon-numbers/Wren/curzon-numbers-1.wren
index 293a579016..db5ed8a00b 100644
--- a/Task/Curzon-numbers/Wren/curzon-numbers-1.wren
+++ b/Task/Curzon-numbers/Wren/curzon-numbers-1.wren
@@ -1,4 +1,4 @@
-/* curzon_numbers.wren */
+/* Curzon_numbers.wren */
 
 import "./gmp" for Mpz
 import "./fmt" for Fmt
diff --git a/Task/Cyclops-numbers/BBC-BASIC/cyclops-numbers.basic b/Task/Cyclops-numbers/BBC-BASIC/cyclops-numbers.basic
new file mode 100644
index 0000000000..82f04eefbe
--- /dev/null
+++ b/Task/Cyclops-numbers/BBC-BASIC/cyclops-numbers.basic
@@ -0,0 +1,70 @@
+      M% = 50
+      E% = 10000000
+      DIM Res%(3, M%-1), Task$(3), Exc%(3), Idx%(3), N% 15
+
+      Size%=3
+      WHILE TRUE
+        Overflow%=FALSE
+        Last%=Size% - 1
+        Zero%=Last% / 2
+        $$N%=STRING$(Size%, "1")
+        N%?Zero%=48
+        REPEAT
+          V%=VAL$$N%
+
+          IF Exc%(0) == 0 THEN
+            Idx%(0)+=1
+            IF Idx%(0) < M% Res%(0, Idx%(0))=V%
+            IF V% > E% Exc%(0)=V%
+          ENDIF
+
+          IF Exc%(2) == 0 THEN
+            IF FNIsPrime(V%) THEN
+              IF Exc%(1) == 0 THEN
+                IF Idx%(1) < M% Res%(1, Idx%(1))=V%
+                Idx%(1)+=1
+                IF V% > E% Exc%(1)=V%
+              ENDIF
+              IF FNIsPrime(VAL(LEFT$($$N%, Zero%) + $$(N% + Zero% + 1))) THEN
+                IF Idx%(2) < M% Res%(2, Idx%(2))=V%
+                Idx%(2)+=1
+                IF V% > E% Exc%(2)=V%
+              ENDIF
+            ENDIF
+          ENDIF
+
+          FOR I%=0 TO Zero%-1
+            IF N%?I% <> N%?(Last%-I%) EXIT FOR
+          NEXT
+          IF I% == Zero% IF FNIsPrime(V%) THEN
+            IF Idx%(3) < M% Res%(3, Idx%(3))=V%
+            Idx%(3)+=1
+            IF V% > E% Exc%(3)=V% EXIT WHILE
+          ENDIF
+
+          D%=Last%
+          N%?D%+=1
+          WHILE N%?D% > 57
+            N%?D%=49
+            D%-=1 IF D% == Zero% D%-=1
+            IF D% < 0 Overflow%=TRUE EXIT WHILE
+            N%?D%+=1
+          ENDWHILE
+        UNTIL Overflow%
+        Size%+=2
+      ENDWHILE
+
+      @%=&20008
+      Task$()="", " prime", " blind prime", " palindromic prime"
+      FOR I%=0 TO 3
+        PRINT "The first ";M% Task$(I%) " cyclop numbers are:"
+        FOR J%=0 TO M%-1
+          PRINT Res%(I%, J%),;
+          IF J% MOD 10 == 9 PRINT
+        NEXT
+        PRINT "First" Task$(I%) " cyclop number > ";E% \
+        \     " is ";Exc%(I%) " at index ";Idx%(I%) "." '
+      NEXT
+      END
+
+      DEF FNIsPrime(n%) FOR I%=2 TO SQRn% IF n% MOD I% == 0 THEN =FALSE ELSE NEXT =TRUE
diff --git a/Task/Cyclops-numbers/EasyLang/cyclops-numbers.easy b/Task/Cyclops-numbers/EasyLang/cyclops-numbers.easy
new file mode 100644
index 0000000000..24688034b0
--- /dev/null
+++ b/Task/Cyclops-numbers/EasyLang/cyclops-numbers.easy
@@ -0,0 +1,99 @@
+func is_cyclops n .
+   if n = 0
+      return 1
+   .
+   m = n mod 10
+   while m <> 0
+      count += 1
+      n = n div 10
+      m = n mod 10
+   .
+   n = n div 10
+   m = n mod 10
+   while m <> 0
+      count -= 1
+      n = n div 10
+      m = n mod 10
+   .
+   return if n = 0 and count = 0
+.
+fastfunc isprim num .
+   i = 2
+   while i <= sqrt num
+      if num mod i = 0
+         return 0
+      .
+      i += 1
+   .
+   return 1
+.
+func blind n .
+   m = n mod 10
+   while m <> 0
+      k = 10 * k + m
+      n = n div 10
+      m = n mod 10
+   .
+   n = n div 10
+   while k <> 0
+      m = k mod 10
+      n = 10 * n + m
+      k = k div 10
+   .
+   return n
+.
+func is_palindr n .
+   l = n
+   while l <> 0
+      m = l mod 10
+      k = 10 * k + m
+      l = l div 10
+   .
+   return if n = k
+.
+proc show . .
+   while cnt < 50
+      if is_cyclops i = 1
+         write i & " "
+         cnt += 1
+      .
+      i += 1
+   .
+   print ""
+   print ""
+   i = 2
+   cnt = 0
+   while cnt < 50
+      if is_cyclops i = 1 and isprim i = 1
+         write i & " "
+         cnt += 1
+      .
+      i += 1
+   .
+   print ""
+   print ""
+   i = 2
+   cnt = 0
+   while cnt < 50
+      if is_cyclops i = 1 and isprim i = 1
+         j = blind i
+         if isprim j = 1
+            write i & " "
+            cnt += 1
+         .
+      .
+      i += 1
+   .
+   print ""
+   print ""
+   i = 2
+   cnt = 0
+   while cnt < 50
+      if is_cyclops i = 1 and is_palindr i = 1 and isprim i = 1
+         write i & " "
+         cnt += 1
+      .
+      i += 1
+   .
+.
+show
diff --git a/Task/Cyclops-numbers/Elixir/cyclops-numbers.elixir b/Task/Cyclops-numbers/Elixir/cyclops-numbers.elixir
new file mode 100644
index 0000000000..98edf3848e
--- /dev/null
+++ b/Task/Cyclops-numbers/Elixir/cyclops-numbers.elixir
@@ -0,0 +1,62 @@
+defmodule Rosetta do
+  def cy n do
+    require Integer
+    lc1=for cl <- 100..999, d=Integer.digits(cl),[q,y,z]=d,Integer.is_odd(length(d)) and y==0 and q>0 and z>0, do: cl
+    lc2=for cl <- 10000..99999, d=Integer.digits(cl),[q1,q2,y,z1,z2]=d,Integer.is_odd(length(d)) and y==0 and q1>0 and q2>0 and z1>0 and z2>0, do: cl
+    lc3=for cl <- 1000000..9999999, d=Integer.digits(cl),[q1,q2,q3,y,z1,z2,z3]=d,Integer.is_odd(length(d)) and y==0 and q1>0 and q2>0 and q3>0 and z1>0 and z2>0 and z3>0, do: cl
+    lc4=for cl <- 100000000..999999999, d=Integer.digits(cl),[q1,q2,q3,q4,y,z1,z2,z3,z4]=d,Integer.is_odd(length(d)) and y==0 and q1>0 and q2>0 and q3>0 and q4>0 and z1>0 and z2>0 and z3>0 and z4>0, do: cl
+    lc5=lc1++lc2++lc3++lc4
+    lc6=[0|lc5]
+    Enum.take(lc6,n)
+  end
+
+  "50 cyclops num"
+
+  iex(8)> cn=Rosetta.cy 50
+[0, 101, 102, 103, 104, 105, 106, 107, 108, 109, 201, 202, 203, 204, 205, 206,
+ 207, 208, 209, 301, 302, 303, 304, 305, 306, 307, 308, 309, 401, 402, 403, 404,
+ 405, 406, 407, 408, 409, 501, 502, 503, 504, 505, 506, 507, 508, 509, 601, 602,
+ 603, 604]
+
+  def cyp cn,n do
+    cnp=for x <- cn,x>0,length(Enum.filter(1..x,fn y -> Integer.mod(x,y)==0 end))==2, do: x
+    Enum.take(cnp,n)
+  end
+
+ "50 cyclops primes"
+
+iex(11)> Rosetta.cyp(Rosetta.cy(1000),50)
+[101, 103, 107, 109, 307, 401, 409, 503, 509, 601, 607, 701, 709, 809, 907,
+11027, 11047, 11057, 11059, 11069, 11071, 11083, 11087, 11093, 12011, 12037,
+12041, 12043, 12049, 12071, 12073, 12097, 13033, 13037, 13043, 13049, 13063,
+13093, 13099, 14011, 14029, 14033, 14051, 14057, 14071, 14081, 14083, 14087,
+15013, 15017]
+
+  def cyz cn,n do
+    czn=for x <- cn, x>0,do: String.to_integer(String.replace(Integer.to_string(x),"0",""))
+    Enum.take(czn,n)
+  end
+
+  "50 blind cyclops prime"
+
+iex(13)> Rosetta.cyp(Rosetta.cyz(Rosetta.cy(5000),1000),50)
+[11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89,
+97, 1117, 1123, 1129, 1151, 1153, 1163, 1171, 1181, 1187, 1193, 1213, 1217,
+1223, 1229, 1231, 1237, 1249, 1259, 1277, 1279, 1283, 1289, 1291, 1297, 1319,
+1321, 1327, 1361, 1367]
+
+ def cypa cn,n do
+    czp=for x <- cn,Integer.to_string(x)==String.reverse(Integer.to_string(x)), do: x
+    Enum.take(czp,n)
+  end
+end
+
+  "50 palindrome prime cyclops"
+
+iex(2)> Rosetta.cyp(Rosetta.cypa(Rosetta.cy(3000000),3000),50)
+[101, 16061, 31013, 35053, 38083, 73037, 74047, 91019, 94049, 1120211, 1150511,
+1160611, 1180811, 1190911, 1250521, 1280821, 1360631, 1390931, 1490941,
+1520251, 1550551, 1580851, 1630361, 1640461, 1660661, 1670761, 1730371,
+1820281, 1880881, 1930391, 1970791, 3140413, 3160613, 3260623, 3310133,
+3380833, 3460643, 3470743, 3590953, 3670763, 3680863, 3970793, 7190917,
+7250527, 7310137, 7540457, 7630367, 7690967, 7750577, 7820287]
diff --git a/Task/Cyclops-numbers/Wren/cyclops-numbers.wren b/Task/Cyclops-numbers/Wren/cyclops-numbers.wren
index 56228e29eb..b937269744 100644
--- a/Task/Cyclops-numbers/Wren/cyclops-numbers.wren
+++ b/Task/Cyclops-numbers/Wren/cyclops-numbers.wren
@@ -1,7 +1,6 @@
-import "/math" for Int
-import "/seq" for Lst
-import "/fmt" for Fmt
-import "/str" for Str
+import "./math" for Int
+import "./fmt" for Fmt
+import "./str" for Str
 
 var findFirst = Fn.new { |list|
     var i = 0
@@ -25,14 +24,14 @@ for (r in ranges) {
 System.print("The first 50 cyclops numbers are:")
 var candidates = cyclops[0...50]
 var ni = findFirst.call(cyclops)
-for (chunk in Lst.chunks(candidates, 10)) Fmt.print("$,6d", chunk)
+Fmt.tprint("$,6d", candidates, 10)
 Fmt.print("\nFirst such number > 10 million is $,d at zero-based index $,d", ni[0], ni[1])
 
 System.print("\n\nThe first 50 prime cyclops numbers are:")
 var primes = cyclops.where { |n| Int.isPrime(n) }
 candidates = primes.take(50).toList
 ni = findFirst.call(primes)
-for (chunk in Lst.chunks(candidates, 10)) Fmt.print("$,6d", chunk)
+Fmt.tprint("$,6d", candidates, 10)
 Fmt.print("\nFirst such number > 10 million is $,d at zero-based index $,d", ni[0], ni[1])
 
 System.print("\n\nThe first 50 blind prime cyclops numbers are:")
@@ -48,11 +47,11 @@ for (p in primes) {
 }
 candidates = bpcyclops[0...50]
 ni = findFirst.call(bpcyclops)
-for (chunk in Lst.chunks(candidates, 10)) Fmt.print("$,6d", chunk)
+Fmt.tprint("$,6d", candidates, 10)
 Fmt.print("\nFirst such number > 10 million is $,d at zero-based index $,d", ni[0], ni[1])
 
 System.print("\n\nThe first 50 palindromic prime cyclops numbers are:")
 candidates = ppcyclops[0...50]
 ni = findFirst.call(ppcyclops)
-for (chunk in Lst.chunks(candidates, 8)) Fmt.print("$,9d", chunk)
+Fmt.tprint("$,9d", candidates, 8)
 Fmt.print("\nFirst such number > 10 million is $,d at zero-based index $,d", ni[0], ni[1])
diff --git a/Task/Cyclotomic-polynomial/Wren/cyclotomic-polynomial.wren b/Task/Cyclotomic-polynomial/Wren/cyclotomic-polynomial.wren
index 44000ff15e..f9ef1437dd 100644
--- a/Task/Cyclotomic-polynomial/Wren/cyclotomic-polynomial.wren
+++ b/Task/Cyclotomic-polynomial/Wren/cyclotomic-polynomial.wren
@@ -1,7 +1,7 @@
-import "/iterate" for Stepped
-import "/sort" for Sort
-import "/math" for Int, Nums
-import "/fmt" for Fmt
+import "./iterate" for Stepped
+import "./sort" for Sort
+import "./math" for Int, Nums
+import "./fmt" for Fmt
 
 var algo = 2
 var maxAllFactors = 1e5
diff --git a/Task/DNS-query/Wren/dns-query-1.wren b/Task/DNS-query/Wren/dns-query-1.wren
index bb2794c03b..728593ed2b 100644
--- a/Task/DNS-query/Wren/dns-query-1.wren
+++ b/Task/DNS-query/Wren/dns-query-1.wren
@@ -1,4 +1,4 @@
-/* dns_query.wren */
+/* DNS_query.wren */
 
 class Net {
     foreign static lookupHost(host)
diff --git a/Task/DNS-query/Wren/dns-query-2.wren b/Task/DNS-query/Wren/dns-query-2.wren
index ab5c54c060..266b61a3c3 100644
--- a/Task/DNS-query/Wren/dns-query-2.wren
+++ b/Task/DNS-query/Wren/dns-query-2.wren
@@ -1,4 +1,4 @@
-/* go run dns_query.go */
+/* go run DNS_query.go */
 
 package main
 
@@ -21,7 +21,7 @@ func lookupHost(vm *wren.VM, parameters []any) (any, error) {
 
 func main() {
     vm := wren.NewVM()
-    fileName := "dns_query.wren"
+    fileName := "DNS_query.wren"
     methodMap := wren.MethodMap{"static lookupHost(_)": lookupHost}
     classMap := wren.ClassMap{"Net": wren.NewClass(nil, nil, methodMap)}
     module := wren.NewModule(classMap)
diff --git a/Task/Damm-algorithm/Wren/damm-algorithm.wren b/Task/Damm-algorithm/Wren/damm-algorithm.wren
index bc83b601e8..688a3749a6 100644
--- a/Task/Damm-algorithm/Wren/damm-algorithm.wren
+++ b/Task/Damm-algorithm/Wren/damm-algorithm.wren
@@ -1,4 +1,4 @@
-import "/fmt" for Fmt
+import "./fmt" for Fmt
 
 var table = [
     [0, 3, 1, 7, 5, 9, 8, 6, 4, 2],
@@ -20,5 +20,5 @@ var damm = Fn.new { |input|
 }
 
 for (s in ["5724", "5727", "112946", "112949"]) {
-    System.print("%(Fmt.s(6, s))  %(damm.call(s))")
+    Fmt.print("$6s  $s", s, damm.call(s))
 }
diff --git a/Task/Date-format/Wren/date-format.wren b/Task/Date-format/Wren/date-format.wren
index e7b54bc9ad..cc489e0a19 100644
--- a/Task/Date-format/Wren/date-format.wren
+++ b/Task/Date-format/Wren/date-format.wren
@@ -1,5 +1,5 @@
 import "os" for Process
-import "/date" for Date
+import "./date" for Date
 
 var args = Process.arguments
 if (args.count != 1) {
diff --git a/Task/Date-manipulation/Wren/date-manipulation.wren b/Task/Date-manipulation/Wren/date-manipulation.wren
index 89a1454a35..bb6105dd9d 100644
--- a/Task/Date-manipulation/Wren/date-manipulation.wren
+++ b/Task/Date-manipulation/Wren/date-manipulation.wren
@@ -1,4 +1,4 @@
-import "/date" for Date
+import "./date" for Date
 
 var fmt = "mmmm| |d| |yyyy| |H|:|MM|am| |zz|"
 var d = Date.parse("March 7 2009 7:30pm EST", fmt)
diff --git a/Task/Day-of-the-week/Wren/day-of-the-week.wren b/Task/Day-of-the-week/Wren/day-of-the-week.wren
index 1c574d1878..0d0cde17a5 100644
--- a/Task/Day-of-the-week/Wren/day-of-the-week.wren
+++ b/Task/Day-of-the-week/Wren/day-of-the-week.wren
@@ -1,4 +1,4 @@
-import "/date" for Date
+import "./date" for Date
 
 System.print("Years between 2008 and 2121 when 25th December falls on Sunday:")
 for (year in 2008..2121) {
diff --git a/Task/De-Bruijn-sequences/Wren/de-bruijn-sequences.wren b/Task/De-Bruijn-sequences/Wren/de-bruijn-sequences.wren
index 0b10219897..efa38505cb 100644
--- a/Task/De-Bruijn-sequences/Wren/de-bruijn-sequences.wren
+++ b/Task/De-Bruijn-sequences/Wren/de-bruijn-sequences.wren
@@ -1,5 +1,5 @@
-import "/fmt" for Fmt
-import "/str" for Str
+import "./fmt" for Fmt
+import "./str" for Str
 
 var deBruijn = ""
 for (n in 0..99) {
diff --git a/Task/Deal-cards-for-FreeCell/EasyLang/deal-cards-for-freecell.easy b/Task/Deal-cards-for-FreeCell/EasyLang/deal-cards-for-freecell.easy
new file mode 100644
index 0000000000..fd0ce6158b
--- /dev/null
+++ b/Task/Deal-cards-for-FreeCell/EasyLang/deal-cards-for-freecell.easy
@@ -0,0 +1,33 @@
+global seed .
+func xrnd .
+   seed = (seed * 214013 + 2531011) mod 0x80000000
+   return seed div 0x10000
+.
+len cards[] 52
+proc deal game_num . .
+   print "hand " & game_num
+   seed = game_num
+   for i = 1 to 52
+      cards[i] = 52 - i
+   .
+   for i = 1 to 51
+      j = 52 - xrnd mod (53 - i)
+      swap cards[i] cards[j]
+   .
+.
+suits$[] = strchars "CDHS"
+ranks$[] = strchars "A23456789TJQK"
+#
+proc show . .
+   for idx = 1 to 52
+      rank = cards[idx] div 4 + 1
+      suit = cards[idx] mod 4 + 1
+      write ranks$[rank] & suits$[suit] & " "
+      if idx mod1 13 = 13
+         print ""
+      .
+   .
+   print ""
+.
+deal 1 ; show
+deal 617 ; show
diff --git a/Task/Deal-cards-for-FreeCell/Quackery/deal-cards-for-freecell.quackery b/Task/Deal-cards-for-FreeCell/Quackery/deal-cards-for-freecell.quackery
new file mode 100644
index 0000000000..fef9c1bff7
--- /dev/null
+++ b/Task/Deal-cards-for-FreeCell/Quackery/deal-cards-for-freecell.quackery
@@ -0,0 +1,39 @@
+  [ [ [] 52 times
+      [ i^ join ] ]
+    constant ]             is newpack  (     --> n )
+
+  [ 2dup peek
+    dip [ over -1 peek ]
+    swap 2swap poke
+    -1 poke ]              is to-end   ( [ n --> [ )
+
+  [ [] swap
+    52 times
+      [ MCR-rand
+        over size mod
+        to-end
+        -1 split
+        swap dip join ]
+     drop ]                is mixem    (   [ --> [ )
+
+  [ 4 /mod
+    $ "A23456789TJQK"
+    rot peek emit
+    $ "CDHS"
+    swap peek emit ]       is echocard (   n -->   )
+
+  [ witheach
+      [ echocard
+        i^ 8 mod 7 =
+        iff cr else sp ] ] is echopack (   [ -->   )
+
+  [ MCR-seed replace
+    newpack
+    mixem
+    echopack ]             is deal     (   n -->   )
+
+  ' [ 1 617 11982 ]
+  witheach
+    [ say "Deal #"
+      dup echo cr
+      deal cr cr ]
diff --git a/Task/Deceptive-numbers/AWK/deceptive-numbers.awk b/Task/Deceptive-numbers/AWK/deceptive-numbers.awk
new file mode 100644
index 0000000000..8d742a9243
--- /dev/null
+++ b/Task/Deceptive-numbers/AWK/deceptive-numbers.awk
@@ -0,0 +1,30 @@
+function modpow(b, e, m,   r) {
+    for (r = 1; e > 0; e = int(e / 2)) {
+        if (e % 2 == 1)
+            r = r * b % m
+        b = b * b % m
+    }
+    return r
+}
+
+function is_pseudo(n,   i, p, r) {
+    if (modpow(10, n - 1, n) == 1) {
+        r = int(sqrt(n))
+        while ((p = primes[++i]) <= r)
+            if (n % p == 0)
+                return 1
+        primes[++l] = n
+    }
+    return 0
+}
+
+BEGIN {
+    primes[l = 1] = n = 7
+    split("4 2 4 2 4 6 2 6", wheel)
+
+    do if (is_pseudo(n += wheel[i = i % 8 + 1])) {
+        printf " %u", n
+        ++c
+    } while (c != 50)
+    print
+}
diff --git a/Task/Deceptive-numbers/J/deceptive-numbers-1.j b/Task/Deceptive-numbers/J/deceptive-numbers-1.j
deleted file mode 100644
index 5c27fdfc1b..0000000000
--- a/Task/Deceptive-numbers/J/deceptive-numbers-1.j
+++ /dev/null
@@ -1,5 +0,0 @@
-R=: (10x #. #&1)"0
-deceptive=: 1&p: < 0 = ] | R@<:
-
-   2+I.deceptive 2+i.10000
-91 259 451 481 703 1729 2821 2981 3367 4141 4187 5461 6533 6541 6601 7471 7777 8149 8401 8911 10001
diff --git a/Task/Deceptive-numbers/J/deceptive-numbers-2.j b/Task/Deceptive-numbers/J/deceptive-numbers-2.j
deleted file mode 100644
index 19405b3336..0000000000
--- a/Task/Deceptive-numbers/J/deceptive-numbers-2.j
+++ /dev/null
@@ -1,17 +0,0 @@
-deceptives=: {{
-  r=.$k=.10x #.}.1#~j=.9
-  while. y>#r do.
-    if. 0<2|j do.
-      if. 0<5|j do.
-        if. 0=1 p:j do.
-          if. 0=0]j|k do.
-            r=. r, j
-          end.
-        end.
-      end.
-    end.
-    k=. 1 10x p.k
-    j=. j+1
-  end.
-  r
-}}
diff --git a/Task/Deceptive-numbers/J/deceptive-numbers-3.j b/Task/Deceptive-numbers/J/deceptive-numbers-3.j
deleted file mode 100644
index 4c4afa0533..0000000000
--- a/Task/Deceptive-numbers/J/deceptive-numbers-3.j
+++ /dev/null
@@ -1,2 +0,0 @@
-   deceptives 21
-91 259 451 481 703 1729 2821 2981 3367 4141 4187 5461 6533 6541 6601 7471 7777 8149 8401 8911 10001
diff --git a/Task/Deceptive-numbers/J/deceptive-numbers.j b/Task/Deceptive-numbers/J/deceptive-numbers.j
new file mode 100644
index 0000000000..8d91f7d19b
--- /dev/null
+++ b/Task/Deceptive-numbers/J/deceptive-numbers.j
@@ -0,0 +1,4 @@
+wheel=. 4 6 2 6 4 2 4 2
+fermat=. {{1 = 10 (y&|@^) <: y}}"0
+
+_10 ]\ (#~ fermat) (#~ 0&p:) +/\ 49 , 15e4 $ wheel
diff --git a/Task/Deceptive-numbers/V-(Vlang)/deceptive-numbers.v b/Task/Deceptive-numbers/V-(Vlang)/deceptive-numbers.v
index f4b00ce09a..176c0c35e7 100644
--- a/Task/Deceptive-numbers/V-(Vlang)/deceptive-numbers.v
+++ b/Task/Deceptive-numbers/V-(Vlang)/deceptive-numbers.v
@@ -1,22 +1,15 @@
 import math.big
 
 fn is_prime(n int) bool {
-    if n < 2 {
-        return false
-    } else if n%2 == 0 {
-        return n == 2
-    } else if n%3 == 0 {
-        return n == 3
-    } else {
+    if n < 2 {return false}
+	else if n % 2 == 0 {return n == 2}
+	else if n % 3 == 0 {return n == 3}
+	else {
         mut d := 5
-        for d*d <= n {
-            if n%d == 0 {
-                return false
-            }
+        for d * d <= n {
+            if n % d == 0 {return false}
             d += 2
-            if n%d == 0 {
-                return false
-            }
+            if n % d == 0 {return false}
             d += 4
         }
         return true
@@ -34,7 +27,7 @@ fn main() {
     hundred := big.integer_from_int(100)
     mut deceptive := []i64{}
     for count < limit {
-        if !is_prime(int(n)) && n%3 != 0 && n%5 != 0 {
+        if !is_prime(int(n)) && n % 3 != 0 && n % 5 != 0 {
             bn := big.integer_from_i64(n)
             t = repunit % bn
             if t == zero {
diff --git a/Task/Deceptive-numbers/Wren/deceptive-numbers-1.wren b/Task/Deceptive-numbers/Wren/deceptive-numbers-1.wren
index 069e3a0962..b7d1f122ba 100644
--- a/Task/Deceptive-numbers/Wren/deceptive-numbers-1.wren
+++ b/Task/Deceptive-numbers/Wren/deceptive-numbers-1.wren
@@ -1,4 +1,4 @@
-/* deceptive_numbers.wren */
+/* Deceptive_numbers.wren */
 
 import "./gmp" for Mpz
 import "./math" for Int
diff --git a/Task/Deconvolution-2D+/Wren/deconvolution-2d+.wren b/Task/Deconvolution-2D+/Wren/deconvolution-2d+.wren
index 5e5247ce7a..64f34d77f7 100644
--- a/Task/Deconvolution-2D+/Wren/deconvolution-2d+.wren
+++ b/Task/Deconvolution-2D+/Wren/deconvolution-2d+.wren
@@ -1,5 +1,5 @@
-import "/complex" for Complex
-import "/fmt" for Fmt
+import "./complex" for Complex
+import "./fmt" for Fmt
 
 var fft2 // recursive
 fft2 = Fn.new { |buf, out, n, step, start|
diff --git a/Task/Deepcopy/FutureBasic/deepcopy.basic b/Task/Deepcopy/FutureBasic/deepcopy.basic
new file mode 100644
index 0000000000..f473cfeedc
--- /dev/null
+++ b/Task/Deepcopy/FutureBasic/deepcopy.basic
@@ -0,0 +1,44 @@
+include "NSLog.incl"
+
+begin record DeepCopy
+  NSInteger   value1
+  CFStringRef value2
+  CFStringRef value3
+  Boolean     value4
+  double      value5
+end record
+
+local fn DoDeepCopy
+  DeepCopy a, b
+
+  a.value1 = 10
+  a.value2 = @"A"
+  a.value3 = @"Okay"
+  a.value4 = YES
+  a.value5 = 1.985766472453666
+
+  b = a
+  b.value1 = 20
+  b.value2 = @"B"
+  b.value3 = @"Not Okay"
+  b.value4 = NO
+  b.value5 = 3.148556644245367
+
+  NSLog( @"\nValue of 'a':" )
+  NSLog( @"a.value1: %ld",   a.value1 )
+  NSLog( @"a.value2: %@",    a.value2 )
+  NSLog( @"a.value3: %@%",   a.value3 )
+  NSLog( @"b.value4: %@",    fn BoolString( a.value4 ) )
+  NSLog( @"a.value5: %.15f", a.value5 )
+
+  NSLog( @"\nValue of 'b':" )
+  NSLog( @"b.value1: %ld",   b.value1 )
+  NSLog( @"b.value2: %@",    b.value2 )
+  NSLog( @"b.value3: %@%",   b.value3 )
+  NSLog( @"b.value4: %@",    fn BoolString( b.value4 ) )
+  NSLog( @"b.value5: %.15f", b.value5 )
+end fn
+
+fn DoDeepCopy
+
+HandleEvents
diff --git a/Task/Deepcopy/Wren/deepcopy.wren b/Task/Deepcopy/Wren/deepcopy.wren
index 02dcd714c7..39da131e00 100644
--- a/Task/Deepcopy/Wren/deepcopy.wren
+++ b/Task/Deepcopy/Wren/deepcopy.wren
@@ -1,5 +1,5 @@
-import "/trait" for Cloneable, CloneableSeq
-import "/seq" for Lst
+import "./trait" for Cloneable, CloneableSeq
+import "./seq" for Lst
 
 class MyMap is Cloneable {
     construct new (m) {
diff --git a/Task/Define-a-primitive-data-type/Sidef/define-a-primitive-data-type.sidef b/Task/Define-a-primitive-data-type/Sidef/define-a-primitive-data-type.sidef
index 70628cf88d..167eb654ab 100644
--- a/Task/Define-a-primitive-data-type/Sidef/define-a-primitive-data-type.sidef
+++ b/Task/Define-a-primitive-data-type/Sidef/define-a-primitive-data-type.sidef
@@ -1,5 +1,5 @@
 subset Integer    < Number  { .is_int }
-subset MyIntLimit < Integer { . ~~ (1 ..^ 10) }
+subset MyIntLimit < Integer { . ~~ (1 .. 10) }
 
 class MyInt(value < MyIntLimit) {
 
diff --git a/Task/Demings-funnel/Wren/demings-funnel.wren b/Task/Demings-funnel/Wren/demings-funnel.wren
index dd02fb5453..30283a9676 100644
--- a/Task/Demings-funnel/Wren/demings-funnel.wren
+++ b/Task/Demings-funnel/Wren/demings-funnel.wren
@@ -1,5 +1,5 @@
-import "/math" for Nums
-import "/fmt" for Fmt
+import "./math" for Nums
+import "./fmt" for Fmt
 
 var dxs = [
     -0.533,  0.270,  0.859, -0.043, -0.205, -0.127, -0.071,  0.275,
@@ -48,9 +48,9 @@ var experiment = Fn.new { |label, r|
     var rxs = funnel.call(dxs, r)
     var rys = funnel.call(dys, r)
     System.print("%(label)  :      x         y")
-    System.print("Mean    :  %(Fmt.f(7, Nums.mean(rxs), 4)),  %(Fmt.f(7, Nums.mean(rys), 4))")
-    System.print("Std Dev :  %(Fmt.f(7, Nums.popStdDev(rxs), 4)),  %(Fmt.f(7, Nums.popStdDev(rys), 4))")
-    System.print()
+    Fmt.print("Mean    :  $7.4f,  $7.4f", Nums.mean(rxs), Nums.mean(rys))
+    Fmt.print("Std Dev :  $7.4f,  $7.4f", Nums.popStdDev(rxs), Nums.popStdDev(rys))
+    Fmt.print()
 }
 
 experiment.call("Rule 1") { |z, dz| 0 }
diff --git a/Task/Descending-primes/EasyLang/descending-primes.easy b/Task/Descending-primes/EasyLang/descending-primes.easy
new file mode 100644
index 0000000000..2c5be433d2
--- /dev/null
+++ b/Task/Descending-primes/EasyLang/descending-primes.easy
@@ -0,0 +1,27 @@
+func isprim num .
+   if num < 2
+      return 0
+   .
+   i = 2
+   while i <= sqrt num
+      if num mod i = 0
+         return 0
+      .
+      i += 1
+   .
+   return 1
+.
+proc nextdesc n . .
+   if isprim n = 1
+      write n & " "
+   .
+   if n > 987654321
+      return
+   .
+   for d = n mod 10 - 1 downto 1
+      nextdesc n * 10 + d
+   .
+.
+for i = 9 downto 1
+   nextdesc i
+.
diff --git a/Task/Descending-primes/J/descending-primes.j b/Task/Descending-primes/J/descending-primes.j
index 1041b054de..d5e67b35fc 100644
--- a/Task/Descending-primes/J/descending-primes.j
+++ b/Task/Descending-primes/J/descending-primes.j
@@ -1,5 +1,5 @@
-   extend=: {{ y;y,L:0(1+each i.1-{:y)}}
-   ($~ q:@$)(#~ 1 p: ])10#.&>([:~.@;extend each)^:# >:i.9
-    2     3    31    43     41  431  421    5   53  541  521 5431    61   653   643   641   631  6521  6421     7     73     71    761    751     743    7643     7621     7541     7321
-76543 76541 76421 75431 764321   83  863  853  821 8761 8753 8741  8731  8641  8543  8521  8431 87643 87641 87631  87541  87421  86531 876431  865321 8765321  8764321       97      983
-  971   953   941  9871   9851 9743 9721 9643 9631 9521 9431 9421 98731 98641 98621 98543 98321 97651 96431 94321 987631 987541 986543 975421 9875321 9754321 98765431 98764321 97654321
+   NB. increase maximum output line length
+   9!:37 (512) 1} 9!:36 ''
+
+   (#~ 1&p:) (#: }. i. 512) 10&#.@# >: i. _9
+2 3 31 41 421 43 431 5 521 53 541 5431 61 631 641 6421 643 6521 653 7 71 73 7321 743 751 7541 75431 761 7621 76421 7643 764321 76541 76543 821 83 8431 8521 853 8543 863 8641 86531 865321 8731 8741 87421 8753 87541 8761 87631 87641 87643 876431 8764321 8765321 941 9421 9431 94321 9521 953 9631 9643 96431 97 971 9721 9743 975421 9754321 97651 97654321 983 98321 9851 98543 98621 98641 986543 9871 98731 9875321 987541 987631 98764321 98765431
diff --git a/Task/Descending-primes/Prolog/descending-primes.pro b/Task/Descending-primes/Prolog/descending-primes.pro
new file mode 100644
index 0000000000..94115019a5
--- /dev/null
+++ b/Task/Descending-primes/Prolog/descending-primes.pro
@@ -0,0 +1,32 @@
+isPrime(2).
+isPrime(N):-
+	between(3, inf, N),
+	N /\ 1 > 0,             % odd
+	M is floor(sqrt(N)) - 1, % reverse 2*I+1
+	Max is M div 2,
+	forall(between(1, Max, I), N mod (2*I+1) > 0).
+
+combi(0, _, []).
+combi(N, [_|T], Comb):-
+    N > 0,
+    combi(N, T, Comb).
+combi(N, [X|T], [X|Comb]):-
+    N > 0,
+    N1 is N - 1,
+    combi(N1, T, Comb).
+
+descPrimes(Num):-
+	between(1, 9, N),
+	combi(N, [9, 8, 7, 6, 5, 4, 3, 2, 1], CList),
+	atomic_list_concat(CList, Tmp), % swi specific
+	atom_number(Tmp, Num),	 % int_list_to_number
+	isPrime(Num).
+
+showList(List):-
+	findnsols(10, DPrim, (member(DPrim, List), writef('%9r', [DPrim])), _),
+	nl,
+	fail.
+showList(_).
+    	
+do:-findall(DPrim, descPrimes(DPrim), DList),
+	showList(DList).
diff --git a/Task/Descending-primes/Wren/descending-primes.wren b/Task/Descending-primes/Wren/descending-primes.wren
index 02f9a2fcbc..8d511fd1f1 100644
--- a/Task/Descending-primes/Wren/descending-primes.wren
+++ b/Task/Descending-primes/Wren/descending-primes.wren
@@ -9,4 +9,4 @@ var descPrimes = ps.skip(1).map { |s| Num.fromString(s.join()) }
                            .toList
                            .sort()
 System.print("There are %(descPrimes.count) descending primes, namely:")
-for (chunk in Lst.chunks(descPrimes, 10)) Fmt.print("$8s", chunk)
+Fmt.tprint("$8s", descPrimes, 10)
diff --git a/Task/Determinant-and-permanent/Wren/determinant-and-permanent.wren b/Task/Determinant-and-permanent/Wren/determinant-and-permanent.wren
index 5570556ad2..7cf309c124 100644
--- a/Task/Determinant-and-permanent/Wren/determinant-and-permanent.wren
+++ b/Task/Determinant-and-permanent/Wren/determinant-and-permanent.wren
@@ -1,5 +1,5 @@
-import "/matrix" for Matrix
-import "/fmt" for Fmt
+import "./matrix" for Matrix
+import "./fmt" for Fmt
 
 var arrays = [
     [ [1, 2],
diff --git a/Task/Determine-if-a-string-has-all-the-same-characters/EasyLang/determine-if-a-string-has-all-the-same-characters.easy b/Task/Determine-if-a-string-has-all-the-same-characters/EasyLang/determine-if-a-string-has-all-the-same-characters.easy
index bb2ac5c5f5..d6cf71ded9 100644
--- a/Task/Determine-if-a-string-has-all-the-same-characters/EasyLang/determine-if-a-string-has-all-the-same-characters.easy
+++ b/Task/Determine-if-a-string-has-all-the-same-characters/EasyLang/determine-if-a-string-has-all-the-same-characters.easy
@@ -23,7 +23,7 @@ repeat
    s$ = input
    until s$ = "EOF"
    print "'" & s$ & "'" & " length " & len s$
-   call samechar s$
+   samechar s$
    print ""
 .
 input_data
diff --git a/Task/Determine-if-a-string-has-all-the-same-characters/Haskell/determine-if-a-string-has-all-the-same-characters-3.hs b/Task/Determine-if-a-string-has-all-the-same-characters/Haskell/determine-if-a-string-has-all-the-same-characters-3.hs
new file mode 100644
index 0000000000..bcab76a0a5
--- /dev/null
+++ b/Task/Determine-if-a-string-has-all-the-same-characters/Haskell/determine-if-a-string-has-all-the-same-characters-3.hs
@@ -0,0 +1,10 @@
+(function check-all-chars-same string
+  (print "String (" string ") of len: " (len string))
+  (let num-same (count-while (= (0 string)) string))
+  (return-when (= num-same (len string))
+    (print "...all characters the same"))
+  (print (pad-left " " (+ 9 num-same) "^"))
+  (print "...character " num-same " differs - it is 0x"
+    (to-base 16 (char-code (num-same string)))))
+
+(map check-all-chars-same ["" "   " "2" "333" ".55" "tttTTT" "4444 444k"])
diff --git a/Task/Determine-if-a-string-has-all-the-same-characters/Wren/determine-if-a-string-has-all-the-same-characters.wren b/Task/Determine-if-a-string-has-all-the-same-characters/Wren/determine-if-a-string-has-all-the-same-characters.wren
index 58a526e829..badc4b593f 100644
--- a/Task/Determine-if-a-string-has-all-the-same-characters/Wren/determine-if-a-string-has-all-the-same-characters.wren
+++ b/Task/Determine-if-a-string-has-all-the-same-characters/Wren/determine-if-a-string-has-all-the-same-characters.wren
@@ -1,4 +1,4 @@
-import "/fmt" for Conv, Fmt
+import "./fmt" for Conv, Fmt
 
 var analyze = Fn.new { |s|
     var chars = s.codePoints.toList
diff --git a/Task/Determine-if-a-string-has-all-unique-characters/BASIC256/determine-if-a-string-has-all-unique-characters.basic b/Task/Determine-if-a-string-has-all-unique-characters/BASIC256/determine-if-a-string-has-all-unique-characters.basic
new file mode 100644
index 0000000000..f1f9e43b0f
--- /dev/null
+++ b/Task/Determine-if-a-string-has-all-unique-characters/BASIC256/determine-if-a-string-has-all-unique-characters.basic
@@ -0,0 +1,19 @@
+subroutine CaracteresUnicos (cad$)
+	lngt = length(cad$)
+	print 'Cadena = "'; cad$; '", longitud = '; lngt
+	for i = 1 to lngt
+		for j = i + 1 to lngt
+			if mid(cad$,i,1) = mid(cad$,j,1) then
+				print " Primer duplicado en las posiciones " & i & " y " & j & ", caracter = '" &  mid(cad$,i,1) & "', valor hex = " & tohex(asc(mid(cad$,i,1)))
+				return
+			end if
+		next j
+	next i
+	print " Todos los caracteres son unicos." & chr(10)
+end subroutine
+
+call CaracteresUnicos("")
+call CaracteresUnicos(".")
+call CaracteresUnicos("abcABC")
+call CaracteresUnicos("XYZ ZYX")
+call CaracteresUnicos("1234567890ABCDEFGHIJKLMN0PQRSTUVWXYZ")
diff --git a/Task/Determine-if-a-string-has-all-unique-characters/Chipmunk-Basic/determine-if-a-string-has-all-unique-characters.basic b/Task/Determine-if-a-string-has-all-unique-characters/Chipmunk-Basic/determine-if-a-string-has-all-unique-characters.basic
new file mode 100644
index 0000000000..8444c26fdd
--- /dev/null
+++ b/Task/Determine-if-a-string-has-all-unique-characters/Chipmunk-Basic/determine-if-a-string-has-all-unique-characters.basic
@@ -0,0 +1,21 @@
+100 cls
+110 sub caracteresunicos(cad$)
+120  lngt = len(cad$)
+130  print 'Cadena = "';cad$;'" longitud = ';lngt
+140  for i = 1 to lngt
+150   for j = i+1 to lngt
+160    if mid$(cad$,i,1) = mid$(cad$,j,1) then
+170     print " Primer duplicado en las posiciones ";i;" y ";j;", caracter = '";mid$(cad$,i,1);"', valor hex = ";hex$(asc(mid$(cad$,i,1)))
+180     print
+190     exit sub
+200    endif
+210   next j
+220  next i
+230  print " Todos los caracteres son unicos.";chr$(10)
+240 end sub
+250 caracteresunicos("")
+260 caracteresunicos(".")
+270 caracteresunicos("abcABC")
+280 caracteresunicos("XYZ ZYX")
+290 caracteresunicos("1234567890ABCDEFGHIJKLMN0PQRSTUVWXYZ")
+300 end
diff --git a/Task/Determine-if-a-string-has-all-unique-characters/EasyLang/determine-if-a-string-has-all-unique-characters.easy b/Task/Determine-if-a-string-has-all-unique-characters/EasyLang/determine-if-a-string-has-all-unique-characters.easy
index 83e9bfebfd..e3592264ed 100644
--- a/Task/Determine-if-a-string-has-all-unique-characters/EasyLang/determine-if-a-string-has-all-unique-characters.easy
+++ b/Task/Determine-if-a-string-has-all-unique-characters/EasyLang/determine-if-a-string-has-all-unique-characters.easy
@@ -25,7 +25,7 @@ repeat
    s$ = input
    until s$ = "EOF"
    print "'" & s$ & "'" & " length " & len s$
-   call unichar s$
+   unichar s$
    print ""
 .
 input_data
diff --git a/Task/Determine-if-a-string-has-all-unique-characters/PureBasic/determine-if-a-string-has-all-unique-characters.basic b/Task/Determine-if-a-string-has-all-unique-characters/PureBasic/determine-if-a-string-has-all-unique-characters.basic
new file mode 100644
index 0000000000..5608068016
--- /dev/null
+++ b/Task/Determine-if-a-string-has-all-unique-characters/PureBasic/determine-if-a-string-has-all-unique-characters.basic
@@ -0,0 +1,22 @@
+Procedure CaracteresUnicos(cad.s)
+  lngt.i = Len(cad)
+  PrintN("Cadena = '" + cad + "' longitud = " + Str(lngt))
+  For i.i = 1 To lngt
+    For j.i = i + 1 To lngt
+      If Mid(cad, i, 1) = Mid(cad, j, 1)
+        PrintN(" Primer duplicado en las posiciones " + Str(i) + " y " + Str(j) + ", caracter = '"  + Mid(cad, i, 1) + "', valor hex = "  + Hex(Asc(Mid(cad, i, 1))))
+        ProcedureReturn
+      EndIf
+    Next
+  Next
+  PrintN(" Todos los caracteres son unicos.")
+EndProcedure
+
+OpenConsole()
+CaracteresUnicos("")
+CaracteresUnicos(".")
+CaracteresUnicos("abcABC")
+CaracteresUnicos("XYZ ZYX")
+CaracteresUnicos("1234567890ABCDEFGHIJKLMN0PQRSTUVWXYZ")
+PrintN(#CRLF$ + "--- Press ENTER to exit ---"): Input()
+CloseConsole()
diff --git a/Task/Determine-if-a-string-has-all-unique-characters/Quackery/determine-if-a-string-has-all-unique-characters.quackery b/Task/Determine-if-a-string-has-all-unique-characters/Quackery/determine-if-a-string-has-all-unique-characters.quackery
new file mode 100644
index 0000000000..0ef3fe2108
--- /dev/null
+++ b/Task/Determine-if-a-string-has-all-unique-characters/Quackery/determine-if-a-string-has-all-unique-characters.quackery
@@ -0,0 +1,43 @@
+  [ over find swap found ]    is has         ( $ c --> b     )
+
+  [ dip [ 0 0 true ]
+    dup size 2 < iff
+      drop done
+    dup size 1 - times
+      [ behead 2dup has iff
+          [ swap find
+            dip not
+            2swap 2drop
+            i^ tuck + 1+ rot
+            0 conclude ] done
+        drop ]
+    drop ]                    is uniquechars (   $ --> n n b )
+
+  [ dup say 'String "'
+    echo$
+    say '" has length '
+    dup size echo
+    say ". "
+    dup uniquechars iff
+      [ say "There are no duplicated characters."
+        drop 2drop ]
+    else
+      [ rot over peek
+        dup say 'The character "'
+        emit
+        say '" (hex:'
+        16 base put
+        echo
+        base release
+        say ") is at positions "
+        swap echo
+        say " and "
+        echo
+        say "." ]
+    cr ]                       is task        (   $ -->       )
+
+  $ "" task
+  $ "." task
+  $ "abcABC" task
+  $ "XYZ ZYX" task
+  $ "1234567890ABCDEFGHIJKLMN0PQRSTUVWXYZ" task
diff --git a/Task/Determine-if-a-string-has-all-unique-characters/Raku/determine-if-a-string-has-all-unique-characters.raku b/Task/Determine-if-a-string-has-all-unique-characters/Raku/determine-if-a-string-has-all-unique-characters.raku
index 0fe534d8b0..194d5ae80f 100644
--- a/Task/Determine-if-a-string-has-all-unique-characters/Raku/determine-if-a-string-has-all-unique-characters.raku
+++ b/Task/Determine-if-a-string-has-all-unique-characters/Raku/determine-if-a-string-has-all-unique-characters.raku
@@ -1,8 +1,7 @@
   -> $str {
     my $i = 0;
     print "\n{$str.raku} (length: {$str.chars}), has ";
-    my %m;
-    %m{$_}.push: ++$i for $str.comb;
+    my %m = $str.comb.Bag;
     if any(%m.values) > 1 {
         say "duplicated characters:";
         say "'{.key}' ({.key.uninames}; hex ordinal: {(.key.ords).fmt: "0x%X"})" ~
diff --git a/Task/Determine-if-a-string-has-all-unique-characters/Wren/determine-if-a-string-has-all-unique-characters.wren b/Task/Determine-if-a-string-has-all-unique-characters/Wren/determine-if-a-string-has-all-unique-characters.wren
index 19b850be3d..716410342a 100644
--- a/Task/Determine-if-a-string-has-all-unique-characters/Wren/determine-if-a-string-has-all-unique-characters.wren
+++ b/Task/Determine-if-a-string-has-all-unique-characters/Wren/determine-if-a-string-has-all-unique-characters.wren
@@ -1,4 +1,4 @@
-import "/fmt" for Conv, Fmt
+import "./fmt" for Conv, Fmt
 
 var analyze = Fn.new { |s|
     var chars = s.codePoints.toList
diff --git a/Task/Determine-if-a-string-has-all-unique-characters/Yabasic/determine-if-a-string-has-all-unique-characters.basic b/Task/Determine-if-a-string-has-all-unique-characters/Yabasic/determine-if-a-string-has-all-unique-characters.basic
index c4500a9b10..4da18a4436 100644
--- a/Task/Determine-if-a-string-has-all-unique-characters/Yabasic/determine-if-a-string-has-all-unique-characters.basic
+++ b/Task/Determine-if-a-string-has-all-unique-characters/Yabasic/determine-if-a-string-has-all-unique-characters.basic
@@ -1,5 +1,6 @@
 sub caracteresunicos (cad$)
-    local lngt
+    local lngt, i, j
+
 	lngt = len(cad$)
     print "cadena = \"", cad$, "\", longitud = ", lngt
     for i = 1 to lngt
diff --git a/Task/Determine-if-a-string-is-collapsible/EasyLang/determine-if-a-string-is-collapsible.easy b/Task/Determine-if-a-string-is-collapsible/EasyLang/determine-if-a-string-is-collapsible.easy
new file mode 100644
index 0000000000..db4fb87ad1
--- /dev/null
+++ b/Task/Determine-if-a-string-is-collapsible/EasyLang/determine-if-a-string-is-collapsible.easy
@@ -0,0 +1,20 @@
+func$ collapse s$ .
+   for c$ in strchars s$
+      if c$ <> cc$
+         r$ &= c$
+      .
+      cc$ = c$
+   .
+   return r$
+.
+s$[] &= ""
+s$[] &= "\"If I were two-faced, would I be wearing this one?\" --- Abraham Lincoln "
+s$[] &= "..1111111111111111111111111111111111111111111111111111111111111117777888"
+s$[] &= "I never give 'em hell, I just tell the truth, and they think it's hell. "
+s$[] &= "                                                    --- Harry S Truman  "
+for s$ in s$[]
+   print "«««" & s$ & "»»» (" & len s$ & ")"
+   r$ = collapse s$
+   print "«««" & r$ & "»»» (" & len r$ & ")"
+   print ""
+.
diff --git a/Task/Determine-if-a-string-is-collapsible/Wren/determine-if-a-string-is-collapsible.wren b/Task/Determine-if-a-string-is-collapsible/Wren/determine-if-a-string-is-collapsible.wren
index 48f952f789..2f6cc3810d 100644
--- a/Task/Determine-if-a-string-is-collapsible/Wren/determine-if-a-string-is-collapsible.wren
+++ b/Task/Determine-if-a-string-is-collapsible/Wren/determine-if-a-string-is-collapsible.wren
@@ -1,4 +1,4 @@
-import "/fmt" for Fmt
+import "./fmt" for Fmt
 
 // Returns collapsed string, original and new lengths in
 // unicode code points (not normalized).
diff --git a/Task/Determine-if-a-string-is-numeric/BQN/determine-if-a-string-is-numeric.bqn b/Task/Determine-if-a-string-is-numeric/BQN/determine-if-a-string-is-numeric.bqn
new file mode 100644
index 0000000000..d73e79cf62
--- /dev/null
+++ b/Task/Determine-if-a-string-is-numeric/BQN/determine-if-a-string-is-numeric.bqn
@@ -0,0 +1 @@
+IsNumeric ← 1∘•ParseFloat⎊0
diff --git a/Task/Determine-if-a-string-is-numeric/Nu/determine-if-a-string-is-numeric.nu b/Task/Determine-if-a-string-is-numeric/Nu/determine-if-a-string-is-numeric.nu
new file mode 100644
index 0000000000..14761bdd6b
--- /dev/null
+++ b/Task/Determine-if-a-string-is-numeric/Nu/determine-if-a-string-is-numeric.nu
@@ -0,0 +1,3 @@
+def is-numeric [] {try {into float | true} catch {false}}
+
+["1" "12" "-3" "5.6" "-3.14" "one" "cheese"] | each {{k: $in, v: ($in | is-numeric)}}
diff --git a/Task/Determine-if-a-string-is-numeric/Wren/determine-if-a-string-is-numeric.wren b/Task/Determine-if-a-string-is-numeric/Wren/determine-if-a-string-is-numeric.wren
index 7381e2a8ae..a29be9ae3d 100644
--- a/Task/Determine-if-a-string-is-numeric/Wren/determine-if-a-string-is-numeric.wren
+++ b/Task/Determine-if-a-string-is-numeric/Wren/determine-if-a-string-is-numeric.wren
@@ -1,4 +1,4 @@
-import "/fmt" for Fmt
+import "./fmt" for Fmt
 
 System.print("Are these strings numeric?")
 
diff --git a/Task/Determine-if-a-string-is-squeezable/EasyLang/determine-if-a-string-is-squeezable.easy b/Task/Determine-if-a-string-is-squeezable/EasyLang/determine-if-a-string-is-squeezable.easy
new file mode 100644
index 0000000000..f248cf780f
--- /dev/null
+++ b/Task/Determine-if-a-string-is-squeezable/EasyLang/determine-if-a-string-is-squeezable.easy
@@ -0,0 +1,23 @@
+func$ squeeze s$ x$ .
+   for c$ in strchars s$
+      if c$ <> x$ or c$ <> cc$
+         r$ &= c$
+      .
+      cc$ = c$
+   .
+   return r$
+.
+proc do s$ x$ . .
+   print "'" & x$ & "'"
+   print "«««" & s$ & "»»» (" & len s$ & ")"
+   r$ = squeeze s$ x$
+   print "«««" & r$ & "»»» (" & len r$ & ")"
+   print ""
+.
+do "" " "
+do "\"If I were two-faced, would I be wearing this one?\" --- Abraham Lincoln " "-"
+do "..1111111111111111111111111111111111111111111111111111111111111117777888" "7"
+do "I never give 'em hell, I just tell the truth, and they think it's hell. " "."
+do "                                                    --- Harry S Truman  " " "
+do "                                                    --- Harry S Truman  " "-"
+do "                                                    --- Harry S Truman  " "r"
diff --git a/Task/Determine-if-a-string-is-squeezable/Wren/determine-if-a-string-is-squeezable.wren b/Task/Determine-if-a-string-is-squeezable/Wren/determine-if-a-string-is-squeezable.wren
index 33f431db18..576eadb2b4 100644
--- a/Task/Determine-if-a-string-is-squeezable/Wren/determine-if-a-string-is-squeezable.wren
+++ b/Task/Determine-if-a-string-is-squeezable/Wren/determine-if-a-string-is-squeezable.wren
@@ -1,4 +1,4 @@
-import "/fmt" for Fmt
+import "./fmt" for Fmt
 
 // Returns squeezed string, original and new lengths in
 // unicode code points (not normalized).
diff --git a/Task/Determine-if-two-triangles-overlap/Wren/determine-if-two-triangles-overlap.wren b/Task/Determine-if-two-triangles-overlap/Wren/determine-if-two-triangles-overlap.wren
index f5db8fef34..c0dd7beb92 100644
--- a/Task/Determine-if-two-triangles-overlap/Wren/determine-if-two-triangles-overlap.wren
+++ b/Task/Determine-if-two-triangles-overlap/Wren/determine-if-two-triangles-overlap.wren
@@ -1,4 +1,4 @@
-import "/dynamic" for Tuple, Struct
+import "./dynamic" for Tuple, Struct
 
 var Point = Tuple.create("Point", ["x", "y"])
 
diff --git a/Task/Dice-game-probabilities/EasyLang/dice-game-probabilities.easy b/Task/Dice-game-probabilities/EasyLang/dice-game-probabilities.easy
new file mode 100644
index 0000000000..a44bfe1657
--- /dev/null
+++ b/Task/Dice-game-probabilities/EasyLang/dice-game-probabilities.easy
@@ -0,0 +1,25 @@
+proc throw_die n_sides n_dice s . counts[] .
+   if n_dice = 0
+      counts[s] += 1
+      return
+   .
+   for i = 1 to n_sides
+      throw_die n_sides (n_dice - 1) (s + i) counts[]
+   .
+.
+func proba n_sides1 n_dice1 n_sides2 n_dice2 .
+   len c1[] (n_sides1 + 1) * n_dice1
+   len c2[] (n_sides2 + 1) * n_dice2
+   throw_die n_sides1 n_dice1 0 c1[]
+   throw_die n_sides2 n_dice2 0 c2[]
+   p12 = pow n_sides1 n_dice1 * pow n_sides2 n_dice2
+   for i = 1 to len c1[]
+      for j = 1 to lower (i - 1) len c2[]
+         tot += c1[i] * c2[j] / p12
+      .
+   .
+   return tot
+.
+numfmt 5 0
+print proba 4 9 6 6
+print proba 10 5 7 6
diff --git a/Task/Digital-root-Multiplicative-digital-root/Wren/digital-root-multiplicative-digital-root.wren b/Task/Digital-root-Multiplicative-digital-root/Wren/digital-root-multiplicative-digital-root.wren
index d37479e887..6ca8f6d4ab 100644
--- a/Task/Digital-root-Multiplicative-digital-root/Wren/digital-root-multiplicative-digital-root.wren
+++ b/Task/Digital-root-Multiplicative-digital-root/Wren/digital-root-multiplicative-digital-root.wren
@@ -1,5 +1,5 @@
-import "/big" for BigInt
-import "/fmt" for Fmt
+import "./big" for BigInt
+import "./fmt" for Fmt
 
 // Only valid for n > 0 && base >= 2
 var mult = Fn.new { |n, base|
diff --git a/Task/Digital-root/J/digital-root-1.j b/Task/Digital-root/J/digital-root-1.j
index b076c0148e..3cbd506e73 100644
--- a/Task/Digital-root/J/digital-root-1.j
+++ b/Task/Digital-root/J/digital-root-1.j
@@ -1,2 +1,3 @@
-digrot=: +/@(#.inv~&10)^:_
-addper=: _1 + [: # +/@(#.inv~&10)^:a:
+digrt=: 10&$: :(|&.<:^:<:)"0
+
+addps=: 10&$: :([: <:@# +/@(#.inv)^:a:)"0
diff --git a/Task/Digital-root/J/digital-root-2.j b/Task/Digital-root/J/digital-root-2.j
index acbcc10ae4..5b6b4a0311 100644
--- a/Task/Digital-root/J/digital-root-2.j
+++ b/Task/Digital-root/J/digital-root-2.j
@@ -1,5 +1,10 @@
-   (, addper, digrot)&> 627615 39390 588225 393900588225
+   (,. addps ,. digrt) 627615 39390 588225 393900588225
       627615 2 9
        39390 2 6
       588225 2 3
 393900588225 2 9
+
+   8 digrt 8b4321
+3
+   8 addps 8b4321
+2
diff --git a/Task/Digital-root/J/digital-root-5.j b/Task/Digital-root/J/digital-root-5.j
deleted file mode 100644
index bb241eae97..0000000000
--- a/Task/Digital-root/J/digital-root-5.j
+++ /dev/null
@@ -1,2 +0,0 @@
-digrt=: +/@(#.inv)^:_
-addpr=: _1 + [: # +/@(#.inv)^:a:
diff --git a/Task/Digital-root/J/digital-root-6.j b/Task/Digital-root/J/digital-root-6.j
deleted file mode 100644
index dc3de7412b..0000000000
--- a/Task/Digital-root/J/digital-root-6.j
+++ /dev/null
@@ -1,4 +0,0 @@
-   10 digrt 627615
-9
-   10 addpr 627615
-2
diff --git a/Task/Digital-root/MiniScript/digital-root.mini b/Task/Digital-root/MiniScript/digital-root.mini
new file mode 100644
index 0000000000..45476f539d
--- /dev/null
+++ b/Task/Digital-root/MiniScript/digital-root.mini
@@ -0,0 +1,27 @@
+testNumbers = [627615, 39390, 588225, 393900588225, 45, 9991]
+pad = function(n, width)
+	return (n + " " * width)[:width]
+end function
+
+getDigitalRoot = function(n)
+	persistance = 0
+	while floor(log(n)) > 0
+		sum = 0
+		while n > 0
+			sum += n % 10
+			n = floor(n / 10)
+		end while
+		n = sum
+		persistance += 1
+	end while
+	return [n, persistance]
+end function
+
+for num in testNumbers
+	digRoot = getDigitalRoot(num)
+	print pad(num, 12), ""
+	print " has a digital root ", ""
+	print digRoot[0], ""
+	print " and additive persistance ",""
+	print digRoot[1]
+end for
diff --git a/Task/Digital-root/S-BASIC/digital-root.basic b/Task/Digital-root/S-BASIC/digital-root.basic
new file mode 100644
index 0000000000..bacf6850b0
--- /dev/null
+++ b/Task/Digital-root/S-BASIC/digital-root.basic
@@ -0,0 +1,31 @@
+rem - return the digital sum of n represented as a string
+function digitalsum(nstr = string) = integer
+   var i, slen, sum = integer
+   var ch = char
+   slen = len(nstr)
+   sum = 0
+   for i = 1 to slen
+     ch = mid(nstr, i, 1)
+     rem - don't process leading or embedded spaces, etc.
+     if ch >= '0' and ch <= '9' then
+        sum = sum + (ch - '0')
+   next i
+end = sum
+
+var nstr = string
+var droot, pers = integer
+
+0again
+   rem - input1 does not advance to next line; control-C will exit
+   input1 "What number"; nstr
+   droot = digitalsum(nstr)
+   pers = 1
+   while droot > 9 do
+      begin
+         droot = digitalsum(str$(droot))
+         pers = pers + 1
+      end
+   print " digital root ="; droot; " persistence ="; pers
+   goto 0again
+
+end
diff --git a/Task/Digital-root/Wren/digital-root.wren b/Task/Digital-root/Wren/digital-root.wren
index 08ff96406b..8837a03f41 100644
--- a/Task/Digital-root/Wren/digital-root.wren
+++ b/Task/Digital-root/Wren/digital-root.wren
@@ -1,4 +1,4 @@
-import "/fmt" for Fmt
+import "./fmt" for Fmt
 
 var sumDigits = Fn.new { |n|
     var sum = 0
diff --git a/Task/Dijkstras-algorithm/Fortran/dijkstras-algorithm.f b/Task/Dijkstras-algorithm/Fortran/dijkstras-algorithm.f
new file mode 100644
index 0000000000..8e0f5c3b95
--- /dev/null
+++ b/Task/Dijkstras-algorithm/Fortran/dijkstras-algorithm.f
@@ -0,0 +1,122 @@
+program main
+! Demo of Dijkstra's algorithm.
+! Translation of Rosetta code Pascal version
+   implicit none
+!
+! PARAMETER definitions
+!
+   integer , parameter :: nr_nodes = 6 , start_index = 0
+!
+! Derived Type definitions
+!
+   enum , bind(c)
+      enumerator :: SetA , SetB , SetC
+   end enum
+!
+   type tnode
+      integer :: nodeset
+      integer :: previndex ! previous node in path leading to this node
+      integer :: pathlength ! total length of path to this node
+   end type tnode
+!
+! Local variable declarations
+!
+   integer :: branchlength , j , j_min , k , lasttoseta , minlength , nrinseta , triallength
+   character(5) :: holder
+   integer , dimension(0:nr_nodes - 1 , 0:nr_nodes - 1) :: lengths
+   character(132) :: lineout
+   type (tnode) , dimension(0:nr_nodes - 1) :: nodes
+!   character(2) , dimension(0:nr_nodes - 1) :: node_names
+   character(15),dimension(0:nr_nodes-1) :: node_names
+!   Correct values
+!Shortest paths from node a:
+!  b: length   7,  a -> b
+!  c: length   9,  a -> c
+!  d: length  20,  a -> c -> d
+!  e: length  26,  a -> c -> d -> e
+!  f: length  11,  a -> c -> f
+!
+   nodes%nodeset = 0
+   nodes%previndex = 0
+   nodes%pathlength = 0
+
+   node_names = (/'a' , 'b' , 'c' , 'd' , 'e' , 'f'/)
+!
+! lengths[j,k] = length of branch j -> k, or -1 if no such branch exists.
+   lengths(0 , :) = (/ - 1 , 7 , 9 , -1 , -1 , 14/)
+   lengths(1 , :) = (/ - 1 , -1 , 10 , 15 , -1 , -1/)
+   lengths(2 , :) = (/ - 1 , -1 , -1 , 11 , -1 , 2/)
+   lengths(3 , :) = (/ - 1 , -1 , -1 , -1 , 6 , -1/)
+   lengths(4 , :) = (/ - 1 , -1 , -1 , -1 , -1 , 9/)
+   lengths(5 , :) = (/ - 1 , -1 , -1 , -1 , -1 , -1/)
+
+
+
+   do j = 0 , nr_nodes - 1
+      nodes(j)%nodeset = SetC
+   enddo
+  ! Begin by transferring the start node to set A
+   nodes(start_index)%nodeset = SetA
+   nodes(start_index)%pathlength = 0
+   nrinseta = 1
+   lasttoseta = start_index
+  ! Transfer nodes to set A one at a time, until all have been transferred
+   do while (nrinseta=0) then
+        ! If the end node is in set B, and the path to the end node via lastToSetA
+        !   is shorter than the existing path, then update the path.
+            if (nodes(j)%nodeset==SetB) then
+               triallength = nodes(lasttoseta)%pathlength + branchlength
+               if (triallength ' // trim(lineout)
+            if (k==start_index) exit pete_loop
+         enddo pete_loop
+         write (holder , '(i0)') nodes(j)%pathlength
+         lineout = trim(adjustl(node_names(j))) // ': length ' // trim(adjustl(holder)) // ', ' // trim(lineout)
+         print * , lineout
+      endif
+   enddo
+   stop
+end program main
diff --git a/Task/Dijkstras-algorithm/J/dijkstras-algorithm-1.j b/Task/Dijkstras-algorithm/J/dijkstras-algorithm-1.j
index eb215e81f3..286dc538c2 100644
--- a/Task/Dijkstras-algorithm/J/dijkstras-algorithm-1.j
+++ b/Task/Dijkstras-algorithm/J/dijkstras-algorithm-1.j
@@ -1,6 +1,6 @@
 NB. verbs and adverb
 parse_table=: ;:@:(LF&= [;._2 -.&CR)
-mp=: $:~ :(+/ .*)                       NB. matrix product
+mp=: +/ .*~~                            NB. matrix product
 min=: <./                               NB. minimum
 Index=: (i.`)(`:6)                      NB. Index adverb
 
diff --git a/Task/Dijkstras-algorithm/Wren/dijkstras-algorithm.wren b/Task/Dijkstras-algorithm/Wren/dijkstras-algorithm.wren
index f4cf5e01e2..feb42903a1 100644
--- a/Task/Dijkstras-algorithm/Wren/dijkstras-algorithm.wren
+++ b/Task/Dijkstras-algorithm/Wren/dijkstras-algorithm.wren
@@ -1,7 +1,7 @@
-import "/dynamic" for Tuple
-import "/trait" for Comparable
-import "/sort" for Cmp, Sort
-import "/set" for Set
+import "./dynamic" for Tuple
+import "./trait" for Comparable
+import "./sort" for Cmp, Sort
+import "./set" for Set
 
 var Edge = Tuple.create("Edge", ["v1", "v2", "dist"])
 
diff --git a/Task/Dinesmans-multiple-dwelling-problem/Wren/dinesmans-multiple-dwelling-problem.wren b/Task/Dinesmans-multiple-dwelling-problem/Wren/dinesmans-multiple-dwelling-problem.wren
index ad2e7f8688..84737995c8 100644
--- a/Task/Dinesmans-multiple-dwelling-problem/Wren/dinesmans-multiple-dwelling-problem.wren
+++ b/Task/Dinesmans-multiple-dwelling-problem/Wren/dinesmans-multiple-dwelling-problem.wren
@@ -1,4 +1,4 @@
-import "/seq" for Lst
+import "./seq" for Lst
 
 var permute // recursive
 permute = Fn.new { |input|
diff --git a/Task/Disarium-numbers/Amazing-Hopper/disarium-numbers.hopper b/Task/Disarium-numbers/Amazing-Hopper/disarium-numbers.hopper
new file mode 100644
index 0000000000..57d8337969
--- /dev/null
+++ b/Task/Disarium-numbers/Amazing-Hopper/disarium-numbers.hopper
@@ -0,0 +1,29 @@
+#include 
+
+#proto encontrarunDisariumpara(_X_)
+#synon _encontrarunDisariumpara   siencontréunDisarium
+
+algoritmo
+    decimales '0'
+    iterar para ( n=3000000, n, --n )
+         si encontré un Disarium 'n', entonces{
+             imprimir( #(utf8("El número ")),n," es Disarium\n")
+         }
+    siguiente
+terminar
+
+subrutinas
+
+encontrar un Disarium para (n)
+
+    i=0
+    n, obtener tamaño parte entera, mover a 'i'
+    m=0, tn=n, d=0
+    iterar mientras ( tn )
+         último dígito de 'tn', mover a 'd,tn'
+         d, elevado a 'i', más 'm'
+         mover a 'm'
+         --i
+    reiterar
+
+retornar ' #(m==n) '
diff --git a/Task/Disarium-numbers/Chipmunk-Basic/disarium-numbers.basic b/Task/Disarium-numbers/Chipmunk-Basic/disarium-numbers.basic
new file mode 100644
index 0000000000..1cb10a143b
--- /dev/null
+++ b/Task/Disarium-numbers/Chipmunk-Basic/disarium-numbers.basic
@@ -0,0 +1,26 @@
+100 cls
+110 sub isdisarium(n)
+120   digitos = len(str$(n))
+130   suma = 0
+140   x = n
+150   while x <> 0
+160     r = (x mod 10)
+170     suma = suma+(r^digitos)
+180     digitos = digitos-1
+190     x = int(x/10)
+200   wend
+210   if suma = n then isdisarium = true else isdisarium = false
+220 end sub
+230 '
+240 limite = 19
+250 cnt = 0
+260 n = 0
+270 print "The first ";limite;" Disarium numbers are:"
+280 while cnt < limite
+290   if isdisarium(n) then
+300     print n;" ";
+310     cnt = cnt+1
+320   endif
+330   n = n+1
+340 wend
+350 end
diff --git a/Task/Disarium-numbers/EasyLang/disarium-numbers.easy b/Task/Disarium-numbers/EasyLang/disarium-numbers.easy
new file mode 100644
index 0000000000..b321c158ab
--- /dev/null
+++ b/Task/Disarium-numbers/EasyLang/disarium-numbers.easy
@@ -0,0 +1,18 @@
+func disarium x .
+   h = x
+   while h > 0
+      d[] &= h mod 10
+      h = h div 10
+   .
+   for i = 1 to len d[]
+      h += pow d[i] (len d[] - i + 1)
+   .
+   return if h = x
+.
+while count < 19
+   if disarium n = 1
+      count += 1
+      print n
+   .
+   n += 1
+.
diff --git a/Task/Disarium-numbers/J/disarium-numbers.j b/Task/Disarium-numbers/J/disarium-numbers.j
index f9bd103175..7c3eab3737 100644
--- a/Task/Disarium-numbers/J/disarium-numbers.j
+++ b/Task/Disarium-numbers/J/disarium-numbers.j
@@ -1,4 +1,5 @@
-digits=: 10 #.inv ]
-disarium=: (= (+/ .^ #\)@digits)"0
-   I.disarium i.1e4
-0 1 2 3 4 5 6 7 8 9 89 135 175 518 598 1306 1676 2427
+digits=: "."0@":
+disarium=: = (+/@:^ #\)@digits"0
+
+   I. disarium i. 27e5
+0 1 2 3 4 5 6 7 8 9 89 135 175 518 598 1306 1676 2427 2646798
diff --git a/Task/Disarium-numbers/MiniScript/disarium-numbers.mini b/Task/Disarium-numbers/MiniScript/disarium-numbers.mini
new file mode 100644
index 0000000000..1bfed1805d
--- /dev/null
+++ b/Task/Disarium-numbers/MiniScript/disarium-numbers.mini
@@ -0,0 +1,20 @@
+isDisarium = function(n)
+	num = n
+	sum = 0
+	if num == 0 then return true
+	for i in range(ceil(log(n)), 1)
+		sum +=  (n % 10) ^ i
+		n = floor(n / 10)
+	end for
+	return num == sum
+end function
+
+foundCnt = 0
+cnt = 0
+while foundCnt < 19
+	if isDisarium(cnt) then
+		foundCnt += 1
+		print cnt
+	end if
+	cnt +=1
+end while
diff --git a/Task/Disarium-numbers/SETL/disarium-numbers.setl b/Task/Disarium-numbers/SETL/disarium-numbers.setl
new file mode 100644
index 0000000000..ed7efa017f
--- /dev/null
+++ b/Task/Disarium-numbers/SETL/disarium-numbers.setl
@@ -0,0 +1,13 @@
+program disarium_numbers;
+    loop for n in [0..2700000] | disarium n do
+        print(n);
+    end loop;
+
+    op disarium(n);
+        k := n;
+        digits := [[k mod 10, k div:= 10](1) : until k=0];
+        p := #digits+1;
+        powsum := +/[d ** (p -:= 1) : d in digits];
+        return powsum = n;
+    end op;
+end program;
diff --git a/Task/Discordian-date/EasyLang/discordian-date.easy b/Task/Discordian-date/EasyLang/discordian-date.easy
new file mode 100644
index 0000000000..b619721dea
--- /dev/null
+++ b/Task/Discordian-date/EasyLang/discordian-date.easy
@@ -0,0 +1,52 @@
+seasons$[] = [ "Chaos" "Discord" "Confusion" "Bureaucracy" "The Aftermath" ]
+weekday$[] = [ "Sweetmorn" "Boomtime" "Pungenday" "Prickle-Prickle" "Setting Orange" ]
+apostle$[] = [ "Mungday" "Mojoday" "Syaday" "Zaraday" "Maladay" ]
+holiday$[] = [ "Chaoflux" "Discoflux" "Confuflux" "Bureflux" "Afflux" ]
+#
+func leap x .
+   return if x mod 400 = 0 or x mod 4 = 0 and x mod 100 <> 0
+.
+func day_of_year y m d .
+   days[] = [ 31 28 31 30 31 30 31 31 30 31 30 31 ]
+   repeat
+      m -= 1
+      until m = 0
+      d += days[m]
+      if m = 2 and leap y = 1
+         d += 1
+      .
+   .
+   return d
+.
+func$ ddate y m d .
+   doy = day_of_year y m d
+   dyear = y + 1166
+   if leap y = 1 and m = 2 and d = 29
+      return "St. Tib's Day, in the YOLD " & dyear
+   .
+   if leap y = 1 and doy >= 60
+      doy -= 1
+   .
+   dsday = doy mod1 73
+   dseason = doy div1 73
+   r$ = weekday$[doy mod1 5] & ", day " & dsday & " of " & seasons$[dseason]
+   r$ &= " in the YOLD " & dyear & "."
+   if dsday = 5
+      r$ &= " Celebrate " & apostle$[dseason] & "!"
+   elif dsday = 50
+      r$ &= " Celebrate " & holiday$[dseason] & "!"
+   .
+   return r$
+.
+proc show d$ . .
+   a[] = number strsplit d$ "-"
+   write d$ & " --> "
+   print ddate a[1] a[2] a[3]
+.
+show "2016-01-05"
+show "2016-02-28"
+show "2016-02-29"
+show "2016-03-01"
+show "2016-12-31"
+show "2025-03-19"
+show substr timestr systime 1 10
diff --git a/Task/Discordian-date/Wren/discordian-date.wren b/Task/Discordian-date/Wren/discordian-date.wren
index a74c69994e..f0eef7758f 100644
--- a/Task/Discordian-date/Wren/discordian-date.wren
+++ b/Task/Discordian-date/Wren/discordian-date.wren
@@ -1,5 +1,5 @@
-import "/date" for Date
-import "/fmt" for Fmt
+import "./date" for Date
+import "./fmt" for Fmt
 
 var seasons  = ["Chaos", "Discord", "Confusion", "Bureaucracy", "The Aftermath"]
 var weekdays = ["Sweetmorn", "Boomtime", "Pungenday", "Prickle-Prickle", "Setting Orange"]
diff --git a/Task/Display-a-linear-combination/Wren/display-a-linear-combination.wren b/Task/Display-a-linear-combination/Wren/display-a-linear-combination.wren
index 5599037bee..7a632b34f1 100644
--- a/Task/Display-a-linear-combination/Wren/display-a-linear-combination.wren
+++ b/Task/Display-a-linear-combination/Wren/display-a-linear-combination.wren
@@ -1,4 +1,4 @@
-import "/fmt" for Fmt
+import "./fmt" for Fmt
 
 var linearCombo = Fn.new { |c|
     var sb = ""
diff --git a/Task/Display-an-outline-as-a-nested-table/Wren/display-an-outline-as-a-nested-table.wren b/Task/Display-an-outline-as-a-nested-table/Wren/display-an-outline-as-a-nested-table.wren
index 8f1b9b2a00..cad9e66ce3 100644
--- a/Task/Display-an-outline-as-a-nested-table/Wren/display-an-outline-as-a-nested-table.wren
+++ b/Task/Display-an-outline-as-a-nested-table/Wren/display-an-outline-as-a-nested-table.wren
@@ -1,5 +1,5 @@
-import "/dynamic" for Struct
-import "/fmt" for Fmt
+import "./dynamic" for Struct
+import "./fmt" for Fmt
 
 var NNode = Struct.create("NNode", ["name", "children"])
 var INode = Struct.create("INode", ["level", "name"])
diff --git a/Task/Distributed-programming/Wren/distributed-programming-1.wren b/Task/Distributed-programming/Wren/distributed-programming-1.wren
index 63f8453f8b..788d3c2191 100644
--- a/Task/Distributed-programming/Wren/distributed-programming-1.wren
+++ b/Task/Distributed-programming/Wren/distributed-programming-1.wren
@@ -1,4 +1,4 @@
-/* distributed_programming_server.wren */
+/* Distributed_programming_server.wren */
 
 class Rpc {
     foreign static register()
diff --git a/Task/Distributed-programming/Wren/distributed-programming-2.wren b/Task/Distributed-programming/Wren/distributed-programming-2.wren
index 54ce693148..24b1d8aa34 100644
--- a/Task/Distributed-programming/Wren/distributed-programming-2.wren
+++ b/Task/Distributed-programming/Wren/distributed-programming-2.wren
@@ -1,4 +1,4 @@
-/* distributed_programming_server2.wren */
+/* Distributed_programming_server_2.wren */
 
 class TaxComputer {
     static tax(amount, rate) {
diff --git a/Task/Distributed-programming/Wren/distributed-programming-3.wren b/Task/Distributed-programming/Wren/distributed-programming-3.wren
index 19110a4f44..78f177af18 100644
--- a/Task/Distributed-programming/Wren/distributed-programming-3.wren
+++ b/Task/Distributed-programming/Wren/distributed-programming-3.wren
@@ -1,4 +1,4 @@
-/* go run distributed_programming_server.go */
+/* go run Distributed_programming_server.go */
 
 package main
 
@@ -16,8 +16,8 @@ type TaxComputer float64
 
 var vm2 *wren.VM
 
-var fileName  = "distributed_programming_server.wren"
-var fileName2 = "distributed_programming_server2.wren"
+var fileName  = "Distributed_programming_server.wren"
+var fileName2 = "Distributed_programming_server_2.wren"
 
 func (taxRate TaxComputer) Tax(x float64, r *float64) error {
     wrenVar, _ := vm2.GetVariable(fileName2, "TaxComputer")
diff --git a/Task/Distributed-programming/Wren/distributed-programming-4.wren b/Task/Distributed-programming/Wren/distributed-programming-4.wren
index 4bf5898c4c..7239e7f259 100644
--- a/Task/Distributed-programming/Wren/distributed-programming-4.wren
+++ b/Task/Distributed-programming/Wren/distributed-programming-4.wren
@@ -1,4 +1,4 @@
-/* distributed_programming_client.wren */
+/* Distributed_programming_client.wren */
 
 import "./fmt" for Fmt
 
diff --git a/Task/Distributed-programming/Wren/distributed-programming-5.wren b/Task/Distributed-programming/Wren/distributed-programming-5.wren
index 6a18ddb05e..477b608123 100644
--- a/Task/Distributed-programming/Wren/distributed-programming-5.wren
+++ b/Task/Distributed-programming/Wren/distributed-programming-5.wren
@@ -1,4 +1,4 @@
-/* go run distributed_programming_client.go */
+/* go run Distributed_programming_client.go */
 
 package main
 
@@ -46,7 +46,7 @@ func main() {
     cfg := wren.NewConfig()
     cfg.LoadModuleFn = moduleFn
     vm := cfg.NewVM()
-    fileName := "distributed_programming_client.wren"
+    fileName := "Distributed_programming_client.wren"
     clientMethodMap := wren.MethodMap { "call(_,_)": call }
     classMap := wren.ClassMap { "Client": wren.NewClass(dialHTTP, nil, clientMethodMap) }
     module := wren.NewModule(classMap)
diff --git a/Task/Distribution-of-0-digits-in-factorial-series/Wren/distribution-of-0-digits-in-factorial-series-1.wren b/Task/Distribution-of-0-digits-in-factorial-series/Wren/distribution-of-0-digits-in-factorial-series-1.wren
index 1760f6d245..2030f184ed 100644
--- a/Task/Distribution-of-0-digits-in-factorial-series/Wren/distribution-of-0-digits-in-factorial-series-1.wren
+++ b/Task/Distribution-of-0-digits-in-factorial-series/Wren/distribution-of-0-digits-in-factorial-series-1.wren
@@ -1,5 +1,5 @@
-import "/big" for BigInt
-import "/fmt" for Fmt
+import "./big" for BigInt
+import "./fmt" for Fmt
 
 var fact = BigInt.one
 var sum = 0
diff --git a/Task/Distribution-of-0-digits-in-factorial-series/Wren/distribution-of-0-digits-in-factorial-series-2.wren b/Task/Distribution-of-0-digits-in-factorial-series/Wren/distribution-of-0-digits-in-factorial-series-2.wren
index f3fc6d3ff3..ef06ad478c 100644
--- a/Task/Distribution-of-0-digits-in-factorial-series/Wren/distribution-of-0-digits-in-factorial-series-2.wren
+++ b/Task/Distribution-of-0-digits-in-factorial-series/Wren/distribution-of-0-digits-in-factorial-series-2.wren
@@ -1,4 +1,4 @@
-import "/fmt" for Fmt
+import "./fmt" for Fmt
 
 var rfs = [1]  // reverse factorial(1) in base 1000
 
diff --git a/Task/Diversity-prediction-theorem/Wren/diversity-prediction-theorem.wren b/Task/Diversity-prediction-theorem/Wren/diversity-prediction-theorem.wren
index 494c2bd1ad..991602f546 100644
--- a/Task/Diversity-prediction-theorem/Wren/diversity-prediction-theorem.wren
+++ b/Task/Diversity-prediction-theorem/Wren/diversity-prediction-theorem.wren
@@ -1,4 +1,4 @@
-import "/fmt" for Fmt
+import "./fmt" for Fmt
 
 var averageSquareDiff = Fn.new { |f, preds|
     var av = 0
diff --git a/Task/Doomsday-rule/EasyLang/doomsday-rule.easy b/Task/Doomsday-rule/EasyLang/doomsday-rule.easy
new file mode 100644
index 0000000000..e3313604c0
--- /dev/null
+++ b/Task/Doomsday-rule/EasyLang/doomsday-rule.easy
@@ -0,0 +1,24 @@
+func leap year .
+   return if year mod 4 = 0 and (year mod 100 <> 0 or year mod 400 = 0)
+.
+func weekday year month day .
+   normdoom[] = [ 3 7 7 4 2 6 4 1 5 3 7 5 ]
+   c = year div 100
+   r = year mod 100
+   s = r div 12
+   t = r mod 12
+   c_anchor = (5 * (c mod 4) + 2) mod 7
+   doom = (s + t + (t div 4) + c_anchor) mod 7
+   anchor = normdoom[month]
+   if leap year = 1 and month <= 2
+      anchor = (anchor + 1) mod1 7
+   .
+   return (doom + day - anchor + 7) mod 7 + 1
+.
+wkdays$[] = [ "Sunday" "Monday" "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday" ]
+dates$[] = [ "1800-01-06" "1875-03-29" "1915-12-07" "1970-12-23" "2043-05-14" "2077-02-12" "2101-04-02" ]
+for d$ in dates$[]
+   write d$ & " -> "
+   a[] = number strsplit d$ "-"
+   print wkdays$[weekday a[1] a[2] a[3]]
+.
diff --git a/Task/Doomsday-rule/UNIX-Shell/doomsday-rule.sh b/Task/Doomsday-rule/UNIX-Shell/doomsday-rule.sh
new file mode 100644
index 0000000000..10334c8be4
--- /dev/null
+++ b/Task/Doomsday-rule/UNIX-Shell/doomsday-rule.sh
@@ -0,0 +1,22 @@
+#!/usr/bin/env bash
+
+day-of-the-week()
+  if [[ "$1" =~ ([0-9]{4})-([0-9]{2})-([0-9]{2}) ]]
+  then
+    local -ra names=({Sun,Mon,Tues,Wednes,Thurs,Fri,Satur}day) doomsday=({37,41}7426415375)
+    local -i i c s t a b
+    local -i {year,month,day}=${BASH_REMATCH[++i]}
+    echo ${names[
+      c=year/100,
+      s=(year%100)/12,
+      t=(year % 100) % 12,
+      a=(5*(c%4)+2) % 7,
+      b=(s + t + (t / 4) + a ) % 7,
+      (b + day - ${doomsday[(year%4 == 0) && ((year%100) || (year%400 == 0))]:month-1:1} + 7) % 7
+    ]}
+  else return 1
+  fi
+
+for date in 1800-01-06 1875-03-29 1915-12-07 1970-12-23 2043-05-14 2077-02-12 2101-04-02
+do day-of-the-week "$date"
+done
diff --git a/Task/Doomsday-rule/Wren/doomsday-rule.wren b/Task/Doomsday-rule/Wren/doomsday-rule.wren
index bd28ec8437..559d55a03f 100644
--- a/Task/Doomsday-rule/Wren/doomsday-rule.wren
+++ b/Task/Doomsday-rule/Wren/doomsday-rule.wren
@@ -1,4 +1,4 @@
-import "/date" for Date
+import "./date" for Date
 
 var days = ["Sunday", "Monday", "Tuesday", "Wednesday","Thursday", "Friday", "Saturday"]
 
diff --git a/Task/Dot-product/Amazing-Hopper/dot-product-1.hopper b/Task/Dot-product/Amazing-Hopper/dot-product-1.hopper
new file mode 100644
index 0000000000..be8a685bb6
--- /dev/null
+++ b/Task/Dot-product/Amazing-Hopper/dot-product-1.hopper
@@ -0,0 +1,6 @@
+#include 
+
+principal  {
+    imprimir(producto punto( lst'1,3,(-5)', lst'4,(-2),(-1)' ),NL)
+    terminar
+}
diff --git a/Task/Dot-product/Amazing-Hopper/dot-product-2.hopper b/Task/Dot-product/Amazing-Hopper/dot-product-2.hopper
new file mode 100644
index 0000000000..f7dd1a53ab
--- /dev/null
+++ b/Task/Dot-product/Amazing-Hopper/dot-product-2.hopper
@@ -0,0 +1,16 @@
+#define  maincode    main: {1}do
+#define  this        {1}do
+#defn    out         {"\n"}print
+#define  dotp        mul;stats(0)
+#defn    lst(*)      {"\033"} *;mklist;
+#define  ready       {0}return
+#define  decim       _X_DECIM=0, mov(_X_DECIM),prec(_X_DECIM),{1}do
+
+main code{
+    {0}decim{
+        "A.B = "
+        this{
+            lst (1,3,(-5)), lst (4,(-2),(-1))
+        } dotp
+    } out
+} ready
diff --git a/Task/Dot-product/Amazing-Hopper/dot-product-3.hopper b/Task/Dot-product/Amazing-Hopper/dot-product-3.hopper
new file mode 100644
index 0000000000..27ecdcd5b3
--- /dev/null
+++ b/Task/Dot-product/Amazing-Hopper/dot-product-3.hopper
@@ -0,0 +1,6 @@
+#defn  dotp(_X_,_Y_)  #ATOM#CMPLX;#ATOM#CMPLX; mul; stats(0)
+#defn  lst(*)         {"\033"} *;mklist;
+#defn  out(*)         *;{"\n"}print
+#defn  code(*)        main:; *; {"0"};return
+
+code( out( dotp( lst (1,3,(-5)), lst (4,(-2),(-1)) ) ) )
diff --git a/Task/Doubly-linked-list-Definition/Wren/doubly-linked-list-definition.wren b/Task/Doubly-linked-list-Definition/Wren/doubly-linked-list-definition.wren
index 6df26a9d51..32cd3ca1e6 100644
--- a/Task/Doubly-linked-list-Definition/Wren/doubly-linked-list-definition.wren
+++ b/Task/Doubly-linked-list-Definition/Wren/doubly-linked-list-definition.wren
@@ -1,4 +1,4 @@
-import "/llist" for DLinkedList
+import "./llist" for DLinkedList
 
 var dll = DLinkedList.new()
 for (i in 1..3) dll.add(i)
diff --git a/Task/Doubly-linked-list-Element-definition/Wren/doubly-linked-list-element-definition.wren b/Task/Doubly-linked-list-Element-definition/Wren/doubly-linked-list-element-definition.wren
index d31b98b123..d37e9b8592 100644
--- a/Task/Doubly-linked-list-Element-definition/Wren/doubly-linked-list-element-definition.wren
+++ b/Task/Doubly-linked-list-Element-definition/Wren/doubly-linked-list-element-definition.wren
@@ -1,4 +1,4 @@
-import "/llist" for DNode
+import "./llist" for DNode
 
 var dn1 = DNode.new(1)
 var dn2 = DNode.new(2)
diff --git a/Task/Doubly-linked-list-Element-insertion/Wren/doubly-linked-list-element-insertion.wren b/Task/Doubly-linked-list-Element-insertion/Wren/doubly-linked-list-element-insertion.wren
index 26c952f51f..bce2a79146 100644
--- a/Task/Doubly-linked-list-Element-insertion/Wren/doubly-linked-list-element-insertion.wren
+++ b/Task/Doubly-linked-list-Element-insertion/Wren/doubly-linked-list-element-insertion.wren
@@ -1,4 +1,4 @@
-import "/llist" for DLinkedList
+import "./llist" for DLinkedList
 
 var dll = DLinkedList.new(["A", "B"])
 dll.insertAfter("A", "C")
diff --git a/Task/Doubly-linked-list-Traversal/Wren/doubly-linked-list-traversal.wren b/Task/Doubly-linked-list-Traversal/Wren/doubly-linked-list-traversal.wren
index 65abc87df2..aec802cb84 100644
--- a/Task/Doubly-linked-list-Traversal/Wren/doubly-linked-list-traversal.wren
+++ b/Task/Doubly-linked-list-Traversal/Wren/doubly-linked-list-traversal.wren
@@ -1,5 +1,5 @@
-import "/llist" for DLinkedList
-import "/fmt" for Fmt
+import "./llist" for DLinkedList
+import "./fmt" for Fmt
 
 // create a new doubly-linked list and add the first 50 positive integers to it
 var dll = DLinkedList.new(1..50)
diff --git a/Task/Draw-a-clock/Evaldraw/draw-a-clock.evaldraw b/Task/Draw-a-clock/Evaldraw/draw-a-clock.evaldraw
new file mode 100644
index 0000000000..048c92104b
--- /dev/null
+++ b/Task/Draw-a-clock/Evaldraw/draw-a-clock.evaldraw
@@ -0,0 +1,88 @@
+(){
+ cls(0);
+ drawclock(150);
+}
+drawclock(rad) {
+ hand_color = 0x6a6a6a;
+ seconds_color = 0xff0000;
+ radius_notches = rad*.95;
+ radius_numbers = rad*.85;
+ small_notch_size =rad*0.04;
+ big_notch_size = rad*0.08;
+ cx=rad+1;
+ cy=rad+1;
+
+ // Face background
+ setcol(0x5aaaaa); drawsph(cx,cy,rad);
+
+ // Highlight from stopwatch.kc
+ setcol(0xffffff); gldisable(GL_DEPTH_TEST);
+ glbegin(GL_COMPLEX); glsettex("whitepix.tga");
+ for(a=3.5;a<=4.5;a+=.25) { gltexcoord(0,0); glvertex(cos(a)*rad*.55+cx,sin(a)*rad*.55+cy); }
+ for(a=4.5;a>=3.5;a-=.25) { gltexcoord(0,0); glvertex(cos(a)*rad*.45+cx,sin(a)*rad*.45+cy); }
+ glend();
+
+ moveto(cx-4*6, cy-.5*rad);
+ setfont(6,8);
+ setcol(0); printf("Evaltime");
+
+ // Face
+ setcol(0x015151);
+ hr=0;
+ for(i=0; i<60; i++)
+ {
+   a = i/60*2*pi - pi/2;
+   ca=cos(a);
+   sa=sin(a);
+   if (i%5==0)
+   {
+     hour = hr; if (hour==0) hour=12;
+     draw_hour(cx,cy,ca,sa,radius_numbers,hour);
+     hr++;
+
+     r=radius_notches;
+     x=cx + ca*r; y=cy+sa*r;
+     drawcone(x,y,big_notch_size*.5,x+big_notch_size*ca,y+big_notch_size*sa,-big_notch_size*.5,0);
+   } else {
+    r=radius_notches;
+    x=cx + ca*r; y=cy+sa*r;
+    drawcone(x,y,small_notch_size*.5,x+small_notch_size*ca,y+small_notch_size*sa,-small_notch_size*.5,0);
+   }
+ }
+
+
+ int_hours = klock(6);
+ int_minutes = klock(7);
+ int_seconds = klock(8);
+ int_millis = klock(9);
+
+ // Hour and Minute hand
+ hours = (int_hours+int_minutes/60.0) / 24.0;
+ a = hours * 2*pi - pi/2;
+ drawhand(cx,cy,a, rad*.64, 6,4, hand_color);
+ a = ( (int_minutes+int_seconds/60+int_millis/1000/60) / 60) * 2*pi - pi/2;
+ drawhand(cx,cy,a, rad*.84, 4,2, hand_color);
+
+ a = ((int_seconds+int_millis/1000) / 60) * 2*pi - pi/2;
+ drawhand(cx,cy,a, rad*.9, 3,1, seconds_color);
+}
+
+draw_hour(cx,cy,ca,sa,r,hr) {
+  x=cx + ca*r; y=cy+sa*r;
+  ofs=0; if(hr>9 || hr==0) ofs=5;
+  setfont(9,16);
+  moveto(x-4.5-ofs,y-8);
+  printf("%g", hr);
+}
+drawhand(cx,cy,angle,forward,r0,r1,kolor) {
+ back = .19*forward;
+ sx=cx - cos(angle)*back;
+ sy=cy - sin(angle)*back;
+ ex=cx + cos(angle)*forward;
+ ey=cy + sin(angle)*forward;
+ setcol(0);
+ drawcone(sx,sy,r0+1,ex,ey,r1+1);
+ setcol(kolor);
+ drawsph(cx,cy,r0+3);
+ drawcone(sx,sy,-r0,ex,ey,r1);
+}
diff --git a/Task/Draw-a-clock/Quackery/draw-a-clock.quackery b/Task/Draw-a-clock/Quackery/draw-a-clock.quackery
new file mode 100644
index 0000000000..244a974556
--- /dev/null
+++ b/Task/Draw-a-clock/Quackery/draw-a-clock.quackery
@@ -0,0 +1,77 @@
+  [ $ "turtleduck.qky" loadfile
+    $ "bigrat.qky"     loadfile ] now!
+
+  [ $ \
+import datetime
+sec = datetime.timedelta(seconds=1)
+time_will_be = datetime.datetime.now()+sec
+hours = time_will_be.hour
+minutes = time_will_be.minute
+seconds = time_will_be.second
+to_stack([hours, minutes, seconds])
+\ python ]                                 is time+1 (   --> [ )
+
+
+  [ $ \
+import time
+current_time = time.time()
+time_to_sleep = 1.0 - (current_time % 1.0)
+time.sleep(time_to_sleep)
+\ python ]                                 is wait   (   -->   )
+
+  [ 3 wide
+    60 times
+      [  240 1 fly
+          10 1 walk
+        -250 1 fly
+          1 60 turn ]
+    7 wide
+    12 times
+      [  235 1 fly
+          12 1 walk
+        -247 1 fly
+          1 12 turn ]
+    9 wide
+    4 times
+      [  233 1 fly
+          14 1 walk
+        -247 1 fly
+           1 4 turn ]
+    1 wide
+    ' [ 0 0 0  ] fill
+      [ 10 1 circle ] ]                    is face   (   -->   )
+
+  [ 12 wide
+    unpack rot dip
+     [ 43200 rot
+       720 v+ ]
+    12 v+
+    2dup turn
+    175 1 walk
+    -175 1 fly
+    -v turn ]                              is hour   ( [ -->   )
+
+  [ 8 wide
+    unpack rot drop
+    3600 rot
+    60 v+
+    2dup turn
+    200 1 walk
+    -200 1 fly
+    -v turn ]                              is minute ( [ -->   )
+
+  [ 4 wide
+    2 peek
+    dup 60 turn
+    225 1 walk
+    -225 1 fly
+    negate 60 turn ]                       is second ( [ -->   )
+
+  [ turtle
+    0 frames
+    [ clear -1 4 turn
+      face
+      time+1 dup dup
+      second minute hour
+      wait
+      frame 1 4 turn again ] ]             is clock  (   -->   )
diff --git a/Task/Draw-a-clock/Raku/draw-a-clock.raku b/Task/Draw-a-clock/Raku/draw-a-clock-1.raku
similarity index 100%
rename from Task/Draw-a-clock/Raku/draw-a-clock.raku
rename to Task/Draw-a-clock/Raku/draw-a-clock-1.raku
diff --git a/Task/Draw-a-clock/Raku/draw-a-clock-2.raku b/Task/Draw-a-clock/Raku/draw-a-clock-2.raku
new file mode 100644
index 0000000000..6ec39305ad
--- /dev/null
+++ b/Task/Draw-a-clock/Raku/draw-a-clock-2.raku
@@ -0,0 +1,11 @@
+constant @t = < ⡎⢉⢵ ⠀⢺⠀ ⠊⠉⡱ ⠊⣉⡱ ⢀⠔⡇ ⣏⣉⡉ ⣎⣉⡁ ⠊⢉⠝ ⢎⣉⡱ ⡎⠉⢱ ⠀⠶⠀>;
+constant @b = < ⢗⣁⡸ ⢀⣸⣀ ⣔⣉⣀ ⢄⣀⡸ ⠉⠉⡏ ⢄⣀⡸ ⢇⣀⡸ ⢰⠁⠀ ⢇⣀⡸ ⢈⣉⡹ ⠀⠶⠀>;
+
+signal(SIGINT).tap: { print "\e[?25h\n"; exit }
+print "\e7\e[?25l"; # saves cursor position, make it invisible
+loop {
+    my @x = DateTime.now.Str.substr(11,8).ords X- ord('0');
+    put ~.[@x] for @t, @b;
+    sleep 1;
+    print "\e8"; # restores cursor position
+}
diff --git a/Task/Draw-a-clock/Raku/draw-a-clock-3.raku b/Task/Draw-a-clock/Raku/draw-a-clock-3.raku
new file mode 100644
index 0000000000..cd67d3a521
--- /dev/null
+++ b/Task/Draw-a-clock/Raku/draw-a-clock-3.raku
@@ -0,0 +1,10 @@
+print "\e7";
+loop {
+    my $time = DateTime.now;
+    put '#' x $_ ~ '.' x (24 - $_) given $time.hour.round;
+    put '#' x $_ ~ '.' x (60 - $_) given $time.minute.round;
+    put '#' x $_ ~ '.' x (60 - $_) given $time.second.round;
+    sleep 1;
+    print "\e8";
+}
+END put "\n";
diff --git a/Task/Draw-a-clock/Yabasic/draw-a-clock.basic b/Task/Draw-a-clock/Yabasic/draw-a-clock-1.basic
similarity index 100%
rename from Task/Draw-a-clock/Yabasic/draw-a-clock.basic
rename to Task/Draw-a-clock/Yabasic/draw-a-clock-1.basic
diff --git a/Task/Draw-a-clock/Yabasic/draw-a-clock-2.basic b/Task/Draw-a-clock/Yabasic/draw-a-clock-2.basic
new file mode 100644
index 0000000000..fa5e883c66
--- /dev/null
+++ b/Task/Draw-a-clock/Yabasic/draw-a-clock-2.basic
@@ -0,0 +1,168 @@
+#!/usr/bin/yabasic
+REM yaclock
+DEG_PER_RAD = 57.257751
+
+winx = 480
+winy = 480
+
+radius = min(winx,winy) / 2 - 1
+hx = (winx/2) - 1
+hy = (winy/2) - 1
+
+REM length of the hands (90% of the radius of the clock face)
+shand = int(radius * .9)
+mhand = int(radius * .9)
+hhand = int(radius * .5)
+
+REM drop coords by one since graphics are 0 based
+
+winx = winx - 1
+winy = winy - 1
+
+clear screen
+
+open window winx,winy
+
+clockface()
+
+do
+
+	hour = val(mid$(time$,1,2))
+	mins = val(mid$(time$,4,2))
+	sec  = val(mid$(time$,7,2))
+	
+	updatehand("sec")
+	updatehand("mins")
+	updatehand("hour")
+
+	pause .25
+
+loop
+
+sub updatehand(hand$)
+	
+	switch(hand$)
+		case "sec"
+			h_len = shand
+			angle = sec * 6
+			width = 6
+			color 255,0,0
+			ox = osx
+			oy = osy
+			oxm1 = osxm1
+			oxm2 = osxm2
+			oym1 = osym1
+			oym2 = osym2
+			break
+		case "mins"
+			h_len = mhand
+			angle = mins * 6 + int(sec/10)
+			width = 12
+			color 0,255,0
+			ox = omx
+			oy = omy
+			oxm1 = omxm1
+			oxm2 = omxm2
+			oym1 = omym1
+			oym2 = omym2
+			break
+		case "hour"
+			h_len = hhand
+			angle = ((hour * 30) + (minutes / 12) * 6) + int(mins/2)
+			width = 15
+			color 0,0,255
+			ox = ohx
+			oy = ohy
+			oxm1 = ohxm1
+			oxm2 = ohxm2
+			oym1 = ohym1
+			oym2 = ohym2
+			break
+	end switch
+
+	h_angle1 = angle - width
+	if h_angle1 < 0 then
+		h_angle1 = h_angle1 + 360
+	endif
+	h_angle1 = h_angle1 / DEG_PER_RAD
+	
+	h_angle2 = angle + width
+	if h_angle2 > 360 then
+		h_angle2 = h_angle2 - 360
+	endif	
+	h_angle2 = h_angle2 / DEG_PER_RAD
+	
+	angle = angle / DEG_PER_RAD
+	
+	x = (hx + (sin(angle) * h_len))
+	xm1 = (hx + (sin(h_angle1) * int(h_len * .2)))
+	xm2 = (hx + (sin(h_angle2) * int(h_len * .2)))
+
+	y = (hy - (cos(angle) * h_len))
+	ym1 = (hy - (cos(h_angle1) * int(h_len * .2)))
+	ym2 = (hy - (cos(h_angle2) * int(h_len * .2)))
+
+	clear line hx,hy,oxm1,oym1
+	clear line hx,hy,oxm2,oym2
+	clear line oxm1,oym1,ox,oy
+	clear line oxm2,oym2,ox,oy
+	line hx,hy,xm1,ym1
+	line hx,hy,xm2,ym2
+	line xm1,ym1,x,y
+	line xm2,ym2,x,y
+	
+	REM save off the old vals
+	switch(hand$)
+		case "sec"
+			osx = x
+			osy = y
+			osxm1 = xm1
+			osxm2 = xm2
+			osym1 = ym1
+			osym2 = ym2
+			break
+		case "mins"
+			omx = x
+			omy = y
+			omxm1 = xm1
+			omxm2 = xm2
+			omym1 = ym1
+			omym2 = ym2
+			break
+		case "hour"
+			ohx = x
+			ohy = y
+			ohxm1 = xm1
+			ohxm2 = xm2
+			ohym1 = ym1
+			ohym2 = ym2
+			break
+	end switch
+end sub
+
+sub clockface()
+	circle hx,hy,radius
+	
+	htick = radius / 10
+	mtick = htick / 2
+	
+	for z=0 to 360 step 6
+		REM  Begin at zero deg and stop before 360 deg
+
+		REM draw the hour markers
+		angle = z
+		angle = angle / DEG_PER_RAD
+		x2 = (hx + (sin(angle) * radius))
+		y2 = (hy - (cos(angle) * radius))
+		if mod(z,30) = 0 then
+			tick = htick
+		else
+			tick = mtick
+		endif
+		x3 = (hx + (sin(angle) * (radius - tick)))
+		y3 = (hy - (cos(angle) * (radius - tick)))
+		color 255,0,0
+		line x2,y2,x3,y3
+		color 0,0,0
+	next z
+end sub
diff --git a/Task/Draw-a-cuboid/Wren/draw-a-cuboid.wren b/Task/Draw-a-cuboid/Wren/draw-a-cuboid.wren
index dc62a2bb3c..0a35aca5a0 100644
--- a/Task/Draw-a-cuboid/Wren/draw-a-cuboid.wren
+++ b/Task/Draw-a-cuboid/Wren/draw-a-cuboid.wren
@@ -1,4 +1,4 @@
-import "/fmt" for Fmt
+import "./fmt" for Fmt
 
 var cubLine = Fn.new { |n, dx, dy, cde|
     Fmt.write("$*s", n + 1, cde[0])
diff --git a/Task/Draw-a-pixel/BBC-BASIC/draw-a-pixel.basic b/Task/Draw-a-pixel/BBC-BASIC/draw-a-pixel.basic
index eff5cc12bd..8c21868954 100644
--- a/Task/Draw-a-pixel/BBC-BASIC/draw-a-pixel.basic
+++ b/Task/Draw-a-pixel/BBC-BASIC/draw-a-pixel.basic
@@ -1 +1 @@
-      VDU 23, 22, 320; 240; 8, 8, 8, 0, 18, 0, 1, 25, 69, 100; 100;
+      VDU 23, 22, 320; 240; 8, 8, 8, 128, 18, 0, 9, 25, 69, 100; 100;
diff --git a/Task/Draw-a-pixel/C/draw-a-pixel.c b/Task/Draw-a-pixel/C/draw-a-pixel-1.c
similarity index 100%
rename from Task/Draw-a-pixel/C/draw-a-pixel.c
rename to Task/Draw-a-pixel/C/draw-a-pixel-1.c
diff --git a/Task/Draw-a-pixel/C/draw-a-pixel-2.c b/Task/Draw-a-pixel/C/draw-a-pixel-2.c
new file mode 100644
index 0000000000..e6e3a806bd
--- /dev/null
+++ b/Task/Draw-a-pixel/C/draw-a-pixel-2.c
@@ -0,0 +1,71 @@
+// dotrosetta.c - https://rosettacode.org/wiki/Draw_a_pixel
+
+#include 
+#include 
+#include 
+
+int
+main(void)
+	{
+	Atom wm_both_protocols[1];
+	Atom wm_delete;
+	Atom wm_protocols;
+	Display *display;
+	GC gc;
+	Window root;
+	Window window;
+	XEvent event;
+	XSetWindowAttributes attr;
+	int more = 1;
+
+	display = XOpenDisplay(NULL);
+	if(display == NULL)
+		{
+		fprintf(stderr,"Error: The display cannot be opened\n");
+		exit(1);
+		}
+	root = DefaultRootWindow(display);
+	wm_delete = XInternAtom(display, "WM_DELETE_WINDOW", False);
+	wm_protocols = XInternAtom(display, "WM_PROTOCOLS", False);
+	attr.background_pixel = 0x000000;
+	attr.event_mask = ExposureMask;
+	window = XCreateWindow(display, root,
+		0, 0, 320, 240, 0,
+		CopyFromParent, InputOutput, CopyFromParent,
+		CWBackPixel | CWEventMask,
+		&attr
+		);
+	XStoreName(display, window, "Draw a Pixel");
+	wm_both_protocols[0] = wm_delete;
+	XSetWMProtocols(display, window, wm_both_protocols, 1);
+	gc = XCreateGC(display, window, 0, NULL);
+	XSetForeground(display, gc, 0xFF0000);
+	XMapWindow(display, window);
+
+	while(more)
+		{
+		XNextEvent(display, &event);
+		switch(event.type)
+			{
+		case Expose:
+			XDrawPoint(display, window, gc, 100, 100);
+			break;
+
+		case ClientMessage: // for close request from WM
+			if(event.xclient.window == window &&
+				event.xclient.message_type == wm_protocols &&
+				event.xclient.format == 32 &&
+				event.xclient.data.l[0] == wm_delete)
+				{
+				more = 0;
+				}
+			break;
+
+		default:
+			printf("unexpected event.type %d\n", event.type);;
+			}
+		}
+
+	XCloseDisplay(display);
+	exit(0);
+	}
diff --git a/Task/Draw-a-pixel/Perl/draw-a-pixel.pl b/Task/Draw-a-pixel/Perl/draw-a-pixel-1.pl
similarity index 100%
rename from Task/Draw-a-pixel/Perl/draw-a-pixel.pl
rename to Task/Draw-a-pixel/Perl/draw-a-pixel-1.pl
diff --git a/Task/Draw-a-pixel/Perl/draw-a-pixel-2.pl b/Task/Draw-a-pixel/Perl/draw-a-pixel-2.pl
new file mode 100644
index 0000000000..6964a0063e
--- /dev/null
+++ b/Task/Draw-a-pixel/Perl/draw-a-pixel-2.pl
@@ -0,0 +1,10 @@
+#!/usr/bin/perl
+
+use strict; # https://rosettacode.org/wiki/Draw_a_pixel
+use warnings;
+use Tk;
+
+my $mw = MainWindow->new;
+my $canvas = $mw->Canvas( -width => 320, -height => 240 )->pack;
+$canvas->createRectangle( 100, 100, 100, 100, -outline => 'red' );
+MainLoop;
diff --git a/Task/Draw-a-pixel/Perl/draw-a-pixel-3.pl b/Task/Draw-a-pixel/Perl/draw-a-pixel-3.pl
new file mode 100644
index 0000000000..7d859637e7
--- /dev/null
+++ b/Task/Draw-a-pixel/Perl/draw-a-pixel-3.pl
@@ -0,0 +1,44 @@
+#!/usr/bin/perl
+
+use strict; # https://rosettacode.org/wiki/Draw_a_pixel
+use warnings;
+use X11::Protocol;
+
+my $x = new X11::Protocol or die "X11 connection failed";
+$x->CreateWindow(my $id = $x->new_rsrc, $x->root, 'InputOutput',
+	$x->root_depth, 'CopyFromParent',
+	0, 0, 320, 240, 0,
+	background_pixel => 0x000000,
+	event_mask => $x->pack_event_mask( qw( Exposure )),
+	);
+$x->ChangeProperty($id, $x->atom('WM_NAME'), $x->atom('STRING'),
+	8, 'Replace', 'Draw a Pixel');
+$x->ChangeProperty($id, $x->atom('WM_PROTOCOLS'), $x->atom('ATOM'),
+	32, 'Replace', pack('L', $x->atom('WM_DELETE_WINDOW')));
+$x->CreateGC(my $gc = $x->new_rsrc, $id, foreground => 0xff0000);
+$x->MapWindow($id);
+$x->event_handler('queue');
+
+my ($more, $name, %e) = 1;
+while($more)
+	{
+	%e = $x->next_event;
+	$name = $e{name};
+	EVENT->$name;
+	}
+
+sub EVENT::Expose { $x->PolyPoint($id, $gc, 'ORIGIN', 100, 100) }
+sub EVENT::ConfigureNotify { }
+sub EVENT::ClientMessage
+	{
+	if($e{type} == $x->atom('WM_PROTOCOLS') &&
+		unpack('L', $e{data}) == $x->atom('WM_DELETE_WINDOW'))
+		{
+		$more = 0;
+		}
+	else
+		{
+		warn "Unknown $name, $e{type}\n";
+		}
+	}
+sub EVENT::AUTOLOAD { die "Sorry, no handler for $name\n" }
diff --git a/Task/Draw-a-pixel/Uxntal/draw-a-pixel.uxnatl b/Task/Draw-a-pixel/Uxntal/draw-a-pixel.uxnatl
new file mode 100644
index 0000000000..cbf44eb805
--- /dev/null
+++ b/Task/Draw-a-pixel/Uxntal/draw-a-pixel.uxnatl
@@ -0,0 +1,16 @@
+|00 @System &vector $2 &expansion $2 &wst $1 &rst $1 &metadata $2 &r $2 &g $2 &b $2 &debug $1 &state $1
+|20 @Screen &vector $2 &width $2 &height $2 &auto $1 &pad $1 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1
+
+|0100
+    #0f00 .System/r DEO2
+    #0000 .System/g DEO2
+    #0000 .System/b DEO2
+
+    #0140 .Screen/width DEO2
+    #00f0 .Screen/height DEO2
+
+    #0064 .Screen/x DEO2
+    #0064 .Screen/y DEO2
+
+    #01 .Screen/pixel DEO
+BRK
diff --git a/Task/Duffinian-numbers/Wren/duffinian-numbers.wren b/Task/Duffinian-numbers/Wren/duffinian-numbers.wren
index 3ed0e06725..319dea5ef4 100644
--- a/Task/Duffinian-numbers/Wren/duffinian-numbers.wren
+++ b/Task/Duffinian-numbers/Wren/duffinian-numbers.wren
@@ -1,5 +1,4 @@
 import "./math" for Int
-import "./seq" for Lst
 import "./fmt" for Fmt
 
 var limit = 200000  // say
diff --git a/Task/Dutch-national-flag-problem/EasyLang/dutch-national-flag-problem.easy b/Task/Dutch-national-flag-problem/EasyLang/dutch-national-flag-problem.easy
new file mode 100644
index 0000000000..1c086c7fa7
--- /dev/null
+++ b/Task/Dutch-national-flag-problem/EasyLang/dutch-national-flag-problem.easy
@@ -0,0 +1,27 @@
+col$[] = [ "red" "white" "blue" ]
+for i to 8
+   b[] &= random 3
+.
+for b in b[]
+   write col$[b] & " "
+   if b < b0
+      not_sorted = 1
+   .
+   b0 = b
+.
+print ""
+print ""
+if not_sorted = 0
+   print "already sorted"
+else
+   for i = 1 to len b[] - 1
+      for j = i + 1 to len b[]
+         if b[j] < b[i]
+            swap b[j] b[i]
+         .
+      .
+   .
+   for b in b[]
+      write col$[b] & " "
+   .
+.
diff --git a/Task/Dutch-national-flag-problem/Wren/dutch-national-flag-problem.wren b/Task/Dutch-national-flag-problem/Wren/dutch-national-flag-problem.wren
index 71c5a9ee23..6eef39ff82 100644
--- a/Task/Dutch-national-flag-problem/Wren/dutch-national-flag-problem.wren
+++ b/Task/Dutch-national-flag-problem/Wren/dutch-national-flag-problem.wren
@@ -1,5 +1,5 @@
 import "random" for Random
-import "/sort" for Sort
+import "./sort" for Sort
 
 var colors = ["Red", "White", "Blue"]
 var colorMap = { "Red": 0, "White": 1, "Blue": 2 }
diff --git a/Task/EKG-sequence-convergence/Wren/ekg-sequence-convergence.wren b/Task/EKG-sequence-convergence/Wren/ekg-sequence-convergence.wren
index 959502e010..cea8792b48 100644
--- a/Task/EKG-sequence-convergence/Wren/ekg-sequence-convergence.wren
+++ b/Task/EKG-sequence-convergence/Wren/ekg-sequence-convergence.wren
@@ -1,6 +1,6 @@
-import "/sort" for Sort
-import "/math" for Int
-import "/fmt" for Fmt
+import "./sort" for Sort
+import "./math" for Int
+import "./fmt" for Fmt
 
 var areSame = Fn.new { |s, t|
     var le = s.count
diff --git a/Task/Earliest-difference-between-prime-gaps/Wren/earliest-difference-between-prime-gaps-1.wren b/Task/Earliest-difference-between-prime-gaps/Wren/earliest-difference-between-prime-gaps-1.wren
index 45779ef421..c54406c25d 100644
--- a/Task/Earliest-difference-between-prime-gaps/Wren/earliest-difference-between-prime-gaps-1.wren
+++ b/Task/Earliest-difference-between-prime-gaps/Wren/earliest-difference-between-prime-gaps-1.wren
@@ -1,5 +1,5 @@
 import "./math" for Int
-import "/fmt" for Fmt
+import "./fmt" for Fmt
 
 var limit = 1e9
 var gapStarts = {}
diff --git a/Task/Echo-server/Wren/echo-server-1.wren b/Task/Echo-server/Wren/echo-server-1.wren
index 80196cf662..f8469ad162 100644
--- a/Task/Echo-server/Wren/echo-server-1.wren
+++ b/Task/Echo-server/Wren/echo-server-1.wren
@@ -1,4 +1,4 @@
-/* echo_server.wren */
+/* Echo_server.wren */
 
 var MAX_ENQUEUED = 20
 var BUF_LEN = 256
diff --git a/Task/Echo-server/Wren/echo-server-2.wren b/Task/Echo-server/Wren/echo-server-2.wren
index fcd111010b..3598e22ea8 100644
--- a/Task/Echo-server/Wren/echo-server-2.wren
+++ b/Task/Echo-server/Wren/echo-server-2.wren
@@ -1,4 +1,4 @@
-/* gcc echo_server.c -o echo_server -lwren -lm  */
+/* gcc Echo_server.c -o Echo_server -lwren -lm  */
 
 #include 
 #include 
@@ -281,7 +281,7 @@ int main(int argc, char **argv) {
     config.bindForeignMethodFn = &bindForeignMethod;
     WrenVM* vm = wrenNewVM(&config);
     const char* module = "main";
-    const char* fileName = "echo_server.wren";
+    const char* fileName = "Echo_server.wren";
     char *script = readFile(fileName);
     WrenInterpretResult result = wrenInterpret(vm, module, script);
     switch (result) {
diff --git a/Task/Egyptian-division/Chipmunk-Basic/egyptian-division.basic b/Task/Egyptian-division/Chipmunk-Basic/egyptian-division.basic
new file mode 100644
index 0000000000..2a230ed1f0
--- /dev/null
+++ b/Task/Egyptian-division/Chipmunk-Basic/egyptian-division.basic
@@ -0,0 +1,24 @@
+100 dim table(32,2)
+110 let dividend = 580
+120 let divisor = 34
+130 let i = 1
+140 let table(i,1) = 1
+150 let table(i,2) = divisor
+160 do while table(i,2) < dividend
+170  let i = i+1
+180  let table(i,1) = table(i-1,1)*2
+190  let table(i,2) = table(i-1,2)*2
+200 loop
+210 let i = i-1
+220 let answer = table(i,1)
+230 let accumulator = table(i,2)
+240 do while i > 1
+250  let i = i-1
+260  if table(i,2)+accumulator <= dividend then
+270   let answer = answer+table(i,1)
+280   let accumulator = accumulator+table(i,2)
+290  endif
+300 loop
+310 print str$(dividend);" divided by ";str$(divisor);" using Egytian division";
+320 print " returns ";str$(answer);" mod(ulus) ";str$(dividend-accumulator)
+330 end
diff --git a/Task/Egyptian-division/EasyLang/egyptian-division.easy b/Task/Egyptian-division/EasyLang/egyptian-division.easy
new file mode 100644
index 0000000000..a87ea0f34c
--- /dev/null
+++ b/Task/Egyptian-division/EasyLang/egyptian-division.easy
@@ -0,0 +1,18 @@
+proc egyptdiv a b . .
+   p2 = 1
+   dbl = b
+   while dbl <= a
+      p2s[] &= p2
+      dbls[] &= dbl
+      dbl *= 2
+      p2 *= 2
+   .
+   for i = len p2s[] downto 1
+      if acc + dbls[i] <= a
+         acc += dbls[i]
+         ans += p2s[i]
+      .
+   .
+   print a & " / " & b & " = " & ans & " R " & abs (acc - a)
+.
+egyptdiv 580 34
diff --git a/Task/Egyptian-division/GW-BASIC/egyptian-division.basic b/Task/Egyptian-division/GW-BASIC/egyptian-division.basic
new file mode 100644
index 0000000000..17b9840d97
--- /dev/null
+++ b/Task/Egyptian-division/GW-BASIC/egyptian-division.basic
@@ -0,0 +1,22 @@
+100 CLS
+110 DIM T(32,2)
+120 LET A = 580
+130 LET B = 34
+140 LET I = 1
+150 LET T(I,1) = 1
+160 LET T(I,2) = B
+170 WHILE T(I,2) < A
+180  LET I = I+1
+190  LET T(I,1) = T(I-1,1)*2
+200  LET T(I,2) = T(I-1,2)*2
+210 WEND
+220 LET I = I-1
+230 LET R = T(I,1)
+240 LET S = T(I,2)
+250 WHILE I > 1
+260  LET I = I-1
+270  IF T(I,2)+S <= A THEN LET R = R+T(I,1): LET S = S+T(I,2)
+280 WEND
+290 PRINT STR$(A);" divided by ";STR$(B);" using Egytian division";
+300 PRINT " returns ";STR$(R);" mod(ulus) ";STR$(A-S)
+310 END
diff --git a/Task/Egyptian-division/MSX-Basic/egyptian-division.basic b/Task/Egyptian-division/MSX-Basic/egyptian-division.basic
new file mode 100644
index 0000000000..04fa2614c3
--- /dev/null
+++ b/Task/Egyptian-division/MSX-Basic/egyptian-division.basic
@@ -0,0 +1,18 @@
+110 DIM T(32,2)
+120 A = 580
+130 B = 34
+140 I = 1
+150 T(I,1) = 1
+160 T(I,2) = B
+170 IF T(I,2) < A THEN  I = I+1 :  T(I,1) = T(I-1,1)*2 : T(I,2) = T(I-1,2)*2
+180 IF T(I,2) >= A THEN GOTO 200
+190 GOTO 170
+200 I = I-1
+210 R = T(I,1)
+220 S = T(I,2)
+230 IF I > 1 THEN I = I-1 : IF T(I,2)+S <= A THEN R = R+T(I,1): S = S+T(I,2)
+240 IF I <= 1 THEN GOTO 260
+250 GOTO 230
+260 PRINT STR$(A);" divided by ";STR$(B);" using Egytian division";
+270 PRINT " returns ";STR$(R);" mod(ulus) ";STR$(A-S)
+280 END
diff --git a/Task/Egyptian-division/XBasic/egyptian-division.basic b/Task/Egyptian-division/XBasic/egyptian-division.basic
new file mode 100644
index 0000000000..b1c567b570
--- /dev/null
+++ b/Task/Egyptian-division/XBasic/egyptian-division.basic
@@ -0,0 +1,31 @@
+PROGRAM  "Egyptian division"
+VERSION  "0.0000"
+
+DECLARE FUNCTION  Entry ()
+
+FUNCTION  Entry ()
+	DIM T[32,2]
+	A = 580
+	B = 34
+	I = 1
+	T[I,1] = 1
+	T[I,2] = B
+	DO WHILE T[I,2] < A
+		INC I
+		T[I,1] = T[I-1,1]*2
+		T[I,2] = T[I-1,2]*2
+	LOOP
+	DEC I
+	R = T[I,1]
+	S = T[I,2]
+	DO WHILE I > 1
+		DEC I
+		IF T[I,2]+S <= A THEN
+			R = R+T[I,1]
+			S = S+T[I,2]
+		END IF
+	LOOP
+	PRINT A;" divided by";B;" using Egytian division";
+	PRINT " returns";R;" mod(ulus)"; A-S
+END FUNCTION
+END PROGRAM
diff --git a/Task/Element-wise-operations/Wren/element-wise-operations.wren b/Task/Element-wise-operations/Wren/element-wise-operations.wren
index e8277eafae..8cacb51607 100644
--- a/Task/Element-wise-operations/Wren/element-wise-operations.wren
+++ b/Task/Element-wise-operations/Wren/element-wise-operations.wren
@@ -1,5 +1,5 @@
-import "/fmt" for Fmt
-import "/matrix" for Matrix
+import "./fmt" for Fmt
+import "./matrix" for Matrix
 
 // matrix-matrix element wise ops
 class MM {
diff --git a/Task/Elementary-cellular-automaton-Infinite-length/Wren/elementary-cellular-automaton-infinite-length.wren b/Task/Elementary-cellular-automaton-Infinite-length/Wren/elementary-cellular-automaton-infinite-length.wren
index b182667014..bd90b99dbf 100644
--- a/Task/Elementary-cellular-automaton-Infinite-length/Wren/elementary-cellular-automaton-infinite-length.wren
+++ b/Task/Elementary-cellular-automaton-Infinite-length/Wren/elementary-cellular-automaton-infinite-length.wren
@@ -1,4 +1,4 @@
-import "/fmt" for Fmt
+import "./fmt" for Fmt
 
 var addNoCells = Fn.new { |s|
     var l = (s[0] == "*") ? "." : "*"
diff --git a/Task/Elementary-cellular-automaton-Random-number-generator/Wren/elementary-cellular-automaton-random-number-generator.wren b/Task/Elementary-cellular-automaton-Random-number-generator/Wren/elementary-cellular-automaton-random-number-generator.wren
index 334f7f87bb..78b8047671 100644
--- a/Task/Elementary-cellular-automaton-Random-number-generator/Wren/elementary-cellular-automaton-random-number-generator.wren
+++ b/Task/Elementary-cellular-automaton-Random-number-generator/Wren/elementary-cellular-automaton-random-number-generator.wren
@@ -1,4 +1,4 @@
-import "/big" for BigInt
+import "./big" for BigInt
 
 var n = 64
 
diff --git a/Task/Elementary-cellular-automaton/EasyLang/elementary-cellular-automaton.easy b/Task/Elementary-cellular-automaton/EasyLang/elementary-cellular-automaton.easy
new file mode 100644
index 0000000000..777a67e2ed
--- /dev/null
+++ b/Task/Elementary-cellular-automaton/EasyLang/elementary-cellular-automaton.easy
@@ -0,0 +1,37 @@
+global celln[] cell[] .
+len map[] 8
+#
+proc evolve . .
+   for i = 1 to len cell[]
+      ind = 0
+      for j = i + 1 downto i - 1
+         ind = ind * 2 + cell[j mod1 len cell[]]
+      .
+      celln[i] = map[ind + 1]
+   .
+   swap celln[] cell[]
+.
+proc show . .
+   c$[] = [ "." "#" ]
+   for v in cell[]
+      write c$[v + 1]
+   .
+   print ""
+.
+proc run map count inp[] . .
+   for i to 8
+      map[i] = map mod 2
+      map = map div 2
+   .
+   swap cell[] inp[]
+   len celln[] len cell[]
+   show
+   for i to count
+      evolve
+      show
+   .
+   print ""
+.
+run 104 9 [ 0 1 1 1 0 1 1 0 1 0 1 0 1 0 1 0 0 1 0 0 ]
+run 90 9 [ 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 ]
+run 122 15 [ 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 ]
diff --git a/Task/Elementary-cellular-automaton/Julia/elementary-cellular-automaton.julia b/Task/Elementary-cellular-automaton/Julia/elementary-cellular-automaton.julia
index 4ce65ec252..29ce623021 100644
--- a/Task/Elementary-cellular-automaton/Julia/elementary-cellular-automaton.julia
+++ b/Task/Elementary-cellular-automaton/Julia/elementary-cellular-automaton.julia
@@ -1,28 +1,21 @@
-const lines = 10
-const start = ".........#........."
-const rules = [90, 30, 14]
-
-rule2poss(rule) = [rule & (1 << (i - 1)) != 0 for i in 1:8]
-
-cells2bools(cells) = [cells[i] == '#' for i in 1:length(cells)]
-
-bools2cells(bset) = prod([bset[i] ? "#" : "." for i in 1:length(bset)])
-
-function transform(bset, ruleposs)
-    newbset = map(x->ruleposs[x],
-        [bset[i - 1] * 4 + bset[i] * 2 + bset[i + 1] + 1
-        for i in 2:length(bset)-1])
-    vcat(newbset[end], newbset, newbset[1])
+struct Automaton
+    g₀::Vector{Bool}
+    rule::Function
+    Automaton(n::Int) = new(
+        [c == '#' for c ∈ ".........#........."],
+        i -> isone.(digits(n; base = 2, pad = 8))[i])
 end
 
-const startset = cells2bools(start)
+Base.iterate(a::Automaton, g = a.g₀) =
+    g, @. a.rule(4*[g[end];g[1:end-1]] + 2*g + [g[2:end];g[1]] + 1)
 
-for rul in rules
-    println("\nUsing Rule $rul:")
-    bset = vcat(startset[end], startset, startset[1]) # wrap ends
-    rp = rule2poss(rul)
-    for _ in 1:lines
-        println(bools2cells(bset[2:end-1]))  # unwrap ends
-        bset = transform(bset, rp)
+Base.show(io::IO, a::Automaton) =
+    for g in Iterators.take(a, 10)
+        println(io, join(c ? '#' : '.' for c ∈ g))
     end
+
+for n ∈ [90, 30, 14]
+    println("rule $n:")
+    show(Automaton(n))
+    println()
 end
diff --git a/Task/Elementary-cellular-automaton/MiniScript/elementary-cellular-automaton.mini b/Task/Elementary-cellular-automaton/MiniScript/elementary-cellular-automaton.mini
new file mode 100644
index 0000000000..ba76bb6ca3
--- /dev/null
+++ b/Task/Elementary-cellular-automaton/MiniScript/elementary-cellular-automaton.mini
@@ -0,0 +1,83 @@
+ElementaryCellularAutomaton = {"state": null, "rules": [], "ruleNum": 0}
+
+ElementaryCellularAutomaton.init = function(n, state)
+	oneD = new ElementaryCellularAutomaton
+	oneD.state = state.split("")
+	oneD.ruleNum = n
+	oneD.rules = oneD.__createRules(n)
+	return oneD
+end function
+
+ElementaryCellularAutomaton.__createRules = function(n)
+	bits = self.__bitString(n)
+	rules = []
+	for i in range(7,0)
+		if bits[7-i] == "*" then rules.push(self.__bitString(i,3))
+	end for
+	return rules
+end function
+
+ElementaryCellularAutomaton.__bitString = function(n, width = 8)
+	s = ""
+	while s.len < width
+		s = char(46 - (n % 2) * 4)  + s
+		n = floor(n / 2)
+	end while
+	return s
+end function
+
+ElementaryCellularAutomaton.evolve = function
+	length = self.state.len
+	newState = []
+	for i in range(0, length - 1)
+		s = ""
+		for j in [-1,0,1]
+			s += self.state[(i + j + length) % length]
+		end for
+		if self.rules.indexOf(s) != null then
+			newState.push "*"
+		else
+			newState.push "."
+		end if
+	end for
+	self.state = newState
+end function
+
+ElementaryCellularAutomaton.getState = function
+	output = self.state.join("")
+	return output
+end function
+
+getAllStates = function(cells)
+	s = ""
+	for i in range(0, cells.len - 1)
+		s += " " + cells[i].getState
+	end for
+	return s
+end function
+
+// Main program
+automata = []
+startState = "." * 15 + "*" + "." * 15
+
+s = "    "
+for i in [30,60,90]
+	s += " " * 13 + "Rule " + i + " " * 12
+	automata.push(ElementaryCellularAutomaton.init(i, startState))
+end for
+print s
+
+for i in range(0, 99)
+	s = "0" * 2 + str(i)
+	s = s[-3:]
+	s += getAllStates(automata)
+	print s
+	for j in range(0, automata.len - 1)
+		automata[j].evolve
+	end for
+end for
+
+// display last evolution
+s = "100"
+s += getAllStates(automata)
+print s
diff --git a/Task/Elementary-cellular-automaton/Wren/elementary-cellular-automaton.wren b/Task/Elementary-cellular-automaton/Wren/elementary-cellular-automaton.wren
index 513054cb4d..e52eb7b5a8 100644
--- a/Task/Elementary-cellular-automaton/Wren/elementary-cellular-automaton.wren
+++ b/Task/Elementary-cellular-automaton/Wren/elementary-cellular-automaton.wren
@@ -1,4 +1,4 @@
-import "/fmt" for Conv
+import "./fmt" for Conv
 
 var SIZE  = 32
 var LINES = SIZE / 2
diff --git a/Task/Elliptic-Curve-Digital-Signature-Algorithm/Wren/elliptic-curve-digital-signature-algorithm.wren b/Task/Elliptic-Curve-Digital-Signature-Algorithm/Wren/elliptic-curve-digital-signature-algorithm.wren
index e655be3bb6..19166af663 100644
--- a/Task/Elliptic-Curve-Digital-Signature-Algorithm/Wren/elliptic-curve-digital-signature-algorithm.wren
+++ b/Task/Elliptic-Curve-Digital-Signature-Algorithm/Wren/elliptic-curve-digital-signature-algorithm.wren
@@ -1,7 +1,7 @@
-import "/dynamic" for Struct
-import "/big" for BigInt
-import "/fmt" for Fmt
-import "/math" for Boolean
+import "./dynamic" for Struct
+import "./big" for BigInt
+import "./fmt" for Fmt
+import "./math" for Boolean
 import "random" for Random
 
 var rand = Random.new()
diff --git a/Task/Elliptic-curve-arithmetic/Wren/elliptic-curve-arithmetic.wren b/Task/Elliptic-curve-arithmetic/Wren/elliptic-curve-arithmetic.wren
index bd7de6dba0..ffacaca194 100644
--- a/Task/Elliptic-curve-arithmetic/Wren/elliptic-curve-arithmetic.wren
+++ b/Task/Elliptic-curve-arithmetic/Wren/elliptic-curve-arithmetic.wren
@@ -1,4 +1,4 @@
-import "/fmt" for Fmt
+import "./fmt" for Fmt
 
 var C = 7
 
diff --git a/Task/Emirp-primes/BBC-BASIC/emirp-primes.basic b/Task/Emirp-primes/BBC-BASIC/emirp-primes.basic
new file mode 100644
index 0000000000..7e5ddf1d90
--- /dev/null
+++ b/Task/Emirp-primes/BBC-BASIC/emirp-primes.basic
@@ -0,0 +1,29 @@
+      REM Taking advantage of inbuilt assembler to implement ultra fast Prime tester!
+      DIM P% 127:[OPT 0
+      .F% pop eax:mov eax,0:.T% ret:.M% mov eax,ecx:xor edx,edx:div ebx:cmp edx,0:jz F%:ret
+      .E% mov ebx,2:call M%:mov ebx,3:call M%:mov ebx,5:.W% mov edx,ebx:imul edx,ebx
+      cmp edx,ecx:jg T%:call M%:add ebx,2:call M%:add ebx,4:jmp W%:]
+      DEF FNIsPrime(C%)=USRE%
+
+      N%=0
+      P%=11
+      PRINT "First 20 emirps are:";
+      WHILE N%<10000
+        P%+=2
+        IF FNIsPrime(P%) THEN
+          R%=VALFNRev(STR$P%)
+          IF P%<>R% IF FNIsPrime(R%) THEN
+            IF N%<20 OR (P%>7699 AND P%<8001) PRINT " ";P%;
+            N%+=1
+            IF N%=20 PRINT '"Emirps between 7700 and 8000 are:";
+          ENDIF
+        ENDIF
+      ENDWHILE
+      PRINT '"The 10,000th emirp is: ";P%
+      END
+
+      DEF FNRev(n$)
+      Q%=!^n$
+      L%=LENn$-1
+      FOR I%=0 TO L%/2 SWAP Q%?I%, Q%?(L%-I%) NEXT
+      =n$
diff --git a/Task/Emirp-primes/Wren/emirp-primes.wren b/Task/Emirp-primes/Wren/emirp-primes.wren
index f7ddc67c5f..4ec95957c4 100644
--- a/Task/Emirp-primes/Wren/emirp-primes.wren
+++ b/Task/Emirp-primes/Wren/emirp-primes.wren
@@ -1,4 +1,4 @@
-import "/math" for Int
+import "./math" for Int
 
 var isEmirp = Fn.new{ |n|
     if (!Int.isPrime(n)) return false
diff --git a/Task/Empty-program/EasyLang/empty-program.easy b/Task/Empty-program/EasyLang/empty-program.easy
new file mode 100644
index 0000000000..792d600548
--- /dev/null
+++ b/Task/Empty-program/EasyLang/empty-program.easy
@@ -0,0 +1 @@
+#
diff --git a/Task/Empty-string/EMal/empty-string.emal b/Task/Empty-string/EMal/empty-string.emal
new file mode 100644
index 0000000000..4dd34da9b1
--- /dev/null
+++ b/Task/Empty-string/EMal/empty-string.emal
@@ -0,0 +1,9 @@
+# Demonstrate how to assign an empty string to a variable.
+text sampleA = Text.EMPTY
+text sampleB = "hello world"
+text sampleC = ""
+List samples = text[sampleA, sampleB, sampleC]
+for each text sample in samples
+  # Demonstrate how to check that a string is empty.
+  writeLine("Is '" + sample + "' empty? " + when(sample.isEmpty(), "Yes", "No") + ".")
+end
diff --git a/Task/Entropy-Narcissist/BBC-BASIC/entropy-narcissist.basic b/Task/Entropy-Narcissist/BBC-BASIC/entropy-narcissist.basic
new file mode 100644
index 0000000000..83377f7926
--- /dev/null
+++ b/Task/Entropy-Narcissist/BBC-BASIC/entropy-narcissist.basic
@@ -0,0 +1,8 @@
+      DIM Freq%(255)
+      FOR I%=PAGE TO LOMEM Freq%(?I%)+=1 NEXT
+      Size=LOMEM - PAGE
+      FOR I%=0 TO 255
+        IF Freq%(I%) Entropy+=Freq%(I%) / Size * LN(Freq%(I%) / Size) / LN(2)
+      NEXT
+      PRINT "My size is ";Size " bytes and my entropy is ";-Entropy "!"
+      END
diff --git a/Task/Entropy/EasyLang/entropy.easy b/Task/Entropy/EasyLang/entropy.easy
index c80904ea59..3696ec469f 100644
--- a/Task/Entropy/EasyLang/entropy.easy
+++ b/Task/Entropy/EasyLang/entropy.easy
@@ -6,7 +6,7 @@ func entropy s$ .
    for cnt in d[]
       if cnt > 0
          prop = cnt / len s$
-         entr -= (prop * logn prop / logn 2)
+         entr -= (prop * log10 prop / log10 2)
       .
    .
    return entr
diff --git a/Task/Entropy/SETL/entropy.setl b/Task/Entropy/SETL/entropy.setl
new file mode 100644
index 0000000000..f77dc04c2c
--- /dev/null
+++ b/Task/Entropy/SETL/entropy.setl
@@ -0,0 +1,16 @@
+program shannon_entropy;
+    print(entropy "1223334444");
+
+    op entropy(symbols);
+        hist := {};
+        loop for symbol in symbols do
+            hist(symbol) +:= 1;
+        end loop;
+        h := 0.0;
+        loop for count = hist(symbol) do
+            f := count / #symbols;
+            h -:= f * log f / log 2;
+        end loop;
+        return h;
+    end op;
+end program;
diff --git a/Task/Enumerations/Wren/enumerations-2.wren b/Task/Enumerations/Wren/enumerations-2.wren
index 3c0a55babe..f7029fe7ad 100644
--- a/Task/Enumerations/Wren/enumerations-2.wren
+++ b/Task/Enumerations/Wren/enumerations-2.wren
@@ -1,4 +1,4 @@
-import "/dynamic" for Enum
+import "./dynamic" for Enum
 
 var Fruit = Enum.create("Fruit", ["apple", "orange", "pear", "cherry", "banana", "grape"], 1)
 System.print(Fruit.orange)
diff --git a/Task/Environment-variables/EMal/environment-variables.emal b/Task/Environment-variables/EMal/environment-variables.emal
new file mode 100644
index 0000000000..1052e86a8f
--- /dev/null
+++ b/Task/Environment-variables/EMal/environment-variables.emal
@@ -0,0 +1,6 @@
+fun showVariable =  sum p THEN
+              WHILE NOT is prime( num p +:= 2 ) DO SKIP OD;
+              sum p +:= num p;
+              n     +:= 1
+          FI;
+          IF sum p > sum c THEN
+              WHILE is prime( num c +:= 1 ) DO SKIP OD;
+              sum c +:= num c;
+              m     +:= 1
+          FI;
+          IF sum p = sum c THEN
+              print( ( whole( sum p, -16 ), whole( n, -10 ), whole( m, -11 ), newline ) );
+              count +:= 1;
+              IF count < 8 THEN
+                  WHILE is prime( num c +:= 1 ) DO SKIP OD;
+                  sum c +:= num c;
+                  m     +:= 1
+              FI
+          FI;
+          count < 8
+    DO SKIP OD
+END
diff --git a/Task/Equal-prime-and-composite-sums/BASIC256/equal-prime-and-composite-sums.basic b/Task/Equal-prime-and-composite-sums/BASIC256/equal-prime-and-composite-sums.basic
new file mode 100644
index 0000000000..3a05a15785
--- /dev/null
+++ b/Task/Equal-prime-and-composite-sums/BASIC256/equal-prime-and-composite-sums.basic
@@ -0,0 +1,33 @@
+#include "isprime.kbs"
+
+i = 0
+IndN = 1 : IndM = 1
+NumP = 2 : NumC = 4
+SumP = 2 : SumC = 4
+print "      sum  prime sum  composite sum"
+while True
+	if SumC > SumP then
+		do
+			NumP += 1
+		until isPrime(NumP)
+		SumP += NumP
+		IndN += 1
+	end if
+	if SumP > SumC then
+		do
+			NumC += 1
+		until not isPrime(NumC)
+		SumC += NumC
+		IndM += 1
+	end if
+	if SumP = SumC then
+		print rjust(string(SumP),9); " - "; rjust(string(IndN),8); " - ";rjust(string(IndM),8)
+		i += 1
+		if i >= 7 then exit while  #valor mayor tarda MUUCHO
+		do
+			NumC += 1
+		until not isPrime(NumC)
+		SumC += NumC
+		IndM += 1
+	end if
+end while
diff --git a/Task/Equal-prime-and-composite-sums/Gambas/equal-prime-and-composite-sums.gambas b/Task/Equal-prime-and-composite-sums/Gambas/equal-prime-and-composite-sums.gambas
new file mode 100644
index 0000000000..3f408a03ba
--- /dev/null
+++ b/Task/Equal-prime-and-composite-sums/Gambas/equal-prime-and-composite-sums.gambas
@@ -0,0 +1,43 @@
+'Use "isprime.bas"
+
+Public Sub Main()
+
+  Dim i As Integer = 0
+  Dim IndN As Integer = 1
+  Dim IndM As Integer = 1
+  Dim NumP As Integer = 2
+  Dim NumC As Integer = 4
+  Dim SumP As Long = 2
+  Dim SumC As Long = 4
+
+  Print "               sum    prime sum    composite sum"
+  Do
+    If SumC > SumP Then
+      Do
+        NumP += 1
+      Loop Until isPrime(NumP)
+      SumP += NumP
+      IndN += 1
+    End If
+    If SumP > SumC Then
+      Do
+        NumC += 1
+      Loop Until Not isPrime(NumC)
+      SumC += NumC
+      IndM += 1
+    End If
+    If SumP = SumC Then
+      Print Format$(Str$(SumP), "##,###,###,###,###"); " - ";
+      Print Format$(Str$(IndN), "##,###,###"); " - ";
+      Print Format$(Str$(IndM), "##,###,###")
+      i += 1
+      If i >= 9 Then Break
+      Do
+        NumC += 1
+      Loop Until Not isPrime(NumC)
+      SumC += NumC
+      IndM += 1
+    End If
+  Loop
+
+End
diff --git a/Task/Equal-prime-and-composite-sums/Lua/equal-prime-and-composite-sums.lua b/Task/Equal-prime-and-composite-sums/Lua/equal-prime-and-composite-sums.lua
new file mode 100644
index 0000000000..430cbadc7a
--- /dev/null
+++ b/Task/Equal-prime-and-composite-sums/Lua/equal-prime-and-composite-sums.lua
@@ -0,0 +1,43 @@
+do --[[ find n and m where the sums of the first n primes and first m
+        composites where the sums are equal
+   --]]
+
+    local function isPrime( n )         -- returns TRUE if n is prime
+         if   n <= 2 then return n == 2
+         elseif n % 2 == 0 then return false
+         else local prime, i, r = true, 1, math.floor( math.sqrt( n ) )
+              repeat
+                  i = i + 2
+                  if i <= r then
+                       prime = n % i ~= 0
+                  end
+              until i > r or not prime
+              return prime
+         end
+    end
+
+    local  count, n, m, sumP, sumC, numP, numC = 0, 2, 1, 5, 4, 3, 4
+    io.write( "           sum    primes composites\n" )
+
+    repeat
+        if sumC > sumP then
+            repeat numP = numP + 2 until isPrime( numP )
+            sumP = sumP + numP
+            n    = n + 1
+        end
+        if sumP > sumC then
+            repeat numC = numC + 1 until not isPrime( numC )
+            sumC = sumC + numC
+            m    = m + 1
+        end
+        if sumP == sumC then
+            io.write( string.format( "%14d", sumP ), string.format( "%10d", n ), string.format( "%11d", m ), "\n" )
+            count = count + 1;
+            if count < 8 then
+                repeat numC = numC + 1 until not isPrime( numC )
+                sumC = sumC + numC
+                m    = m + 1
+            end
+        end
+    until count >= 8
+end
diff --git a/Task/Equal-prime-and-composite-sums/PureBasic/equal-prime-and-composite-sums.basic b/Task/Equal-prime-and-composite-sums/PureBasic/equal-prime-and-composite-sums.basic
new file mode 100644
index 0000000000..94ff67594d
--- /dev/null
+++ b/Task/Equal-prime-and-composite-sums/PureBasic/equal-prime-and-composite-sums.basic
@@ -0,0 +1,43 @@
+;XIncludeFile "isprime.pb"
+
+OpenConsole()
+Define.d IndN, IndM, NumP, NumC, SumP, SumC
+i.i = 0
+IndN = 1
+IndM = 1
+NumP = 2
+NumC = 4
+SumP = 2
+SumC = 4
+PrintN("           sum  prime sum  composite sum")
+While #True
+  If SumC > SumP:
+    Repeat
+      NumP + 1
+    Until isPrime(NumP)
+    SumP + NumP
+    IndN + 1
+  EndIf
+  If SumP > SumC:
+    Repeat
+      NumC + 1
+    Until Not isPrime(NumC)
+    SumC + NumC
+    IndM + 1
+  EndIf
+  If SumP = SumC:
+    PrintN(RSet(Str(SumP),14) + " - " + RSet(Str(IndN),8) + " - " + RSet(Str(IndM),8))
+    i + 1
+    If i >= 9:
+      Break
+    EndIf
+    Repeat
+      NumC + 1
+    Until Not isPrime(NumC)
+    SumC + NumC
+    IndM + 1
+  EndIf
+Wend
+
+PrintN(#CRLF$ + "Press ENTER to exit"): Input()
+CloseConsole()
diff --git a/Task/Equal-prime-and-composite-sums/Wren/equal-prime-and-composite-sums.wren b/Task/Equal-prime-and-composite-sums/Wren/equal-prime-and-composite-sums.wren
index ac2ee2dddc..7a8f1a53f0 100644
--- a/Task/Equal-prime-and-composite-sums/Wren/equal-prime-and-composite-sums.wren
+++ b/Task/Equal-prime-and-composite-sums/Wren/equal-prime-and-composite-sums.wren
@@ -1,6 +1,6 @@
 import "./math" for Int
 import "./sort" for Find
-import "/fmt" for Fmt
+import "./fmt" for Fmt
 
 var limit = 4 * 1e8
 var c = Int.primeSieve(limit - 1, false)
diff --git a/Task/Equal-prime-and-composite-sums/Yabasic/equal-prime-and-composite-sums.basic b/Task/Equal-prime-and-composite-sums/Yabasic/equal-prime-and-composite-sums.basic
new file mode 100644
index 0000000000..39840f0362
--- /dev/null
+++ b/Task/Equal-prime-and-composite-sums/Yabasic/equal-prime-and-composite-sums.basic
@@ -0,0 +1,35 @@
+//import isprime
+
+i = 0
+IndN = 1 : IndM = 1
+NumP = 2 : NumC = 4
+SumP = 2 : SumC = 4
+print "               sum    prime sum     composite sum"
+do
+  if SumC > SumP then
+    repeat
+      NumP = NumP + 1
+    until isPrime(NumP)
+    SumP = SumP + NumP
+    IndN = IndN + 1
+  fi
+  if SumP > SumC then
+    repeat
+      NumC = NumC + 1
+    until not isPrime(NumC)
+    SumC = SumC + NumC
+    IndM = IndM + 1
+  fi
+  if SumP = SumC then
+    print SumP using ("##,###,###,###,###"), " - ", IndN using ("##,###,###"), " - ", IndM using ("##,###,###")
+    i = i + 1
+    if i >= 9  break
+    repeat
+      NumC = NumC + 1
+    until not isPrime(NumC)
+    SumC = SumC + NumC
+    IndM = IndM + 1
+  fi
+loop
+print
+end
diff --git a/Task/Equilibrium-index/Wren/equilibrium-index.wren b/Task/Equilibrium-index/Wren/equilibrium-index.wren
index 0f891108e1..ea756498b8 100644
--- a/Task/Equilibrium-index/Wren/equilibrium-index.wren
+++ b/Task/Equilibrium-index/Wren/equilibrium-index.wren
@@ -1,4 +1,4 @@
-import "/fmt" for Fmt
+import "./fmt" for Fmt
 
 var equilibrium = Fn.new { |a|
     var len = a.count
@@ -25,5 +25,5 @@ var tests = [
 
 System.print("The equilibrium indices for the following sequences are:\n")
 for (test in tests) {
-    System.print("%(Fmt.s(24, test)) -> %(equilibrium.call(test))")
+    Fmt.print("$24n -> $n", test, equilibrium.call(test))
 }
diff --git a/Task/Erd-s-Nicolas-numbers/Perl/erd-s-nicolas-numbers.pl b/Task/Erd-s-Nicolas-numbers/Perl/erd-s-nicolas-numbers.pl
index 194a3eed62..046038f25c 100644
--- a/Task/Erd-s-Nicolas-numbers/Perl/erd-s-nicolas-numbers.pl
+++ b/Task/Erd-s-Nicolas-numbers/Perl/erd-s-nicolas-numbers.pl
@@ -1,28 +1,26 @@
 use v5.36;
-use ntheory 'divisors';
-use enum qw(False True);
-use List::AllUtils ;
-
-sub proper_divisors ($n) {
-  return 1 if $n == 0;
-  my @d = divisors($n);
-  pop @d;
-  @d;
-}
+use enum    qw(False True);
+use ntheory qw(divisors divisor_sum);
 
 sub is_Erdos_Nicolas ($n) {
-    my @divisors = proper_divisors($n);
-    return False unless sum(@divisors) > $n;
-    my $sum;
-    my $key = firstidx { $_ == $n } map { $sum += $_ } @divisors;
-    $key ? 1 + $key : False;
+
+    divisor_sum($n) > 2*$n or return False;
+
+    my $sum   = 0;
+    my $count = 0;
+
+    foreach my $d (divisors($n)) {
+        ++$count;        $sum += $d;
+        return $count if ($sum == $n);
+        return False  if ($sum > $n);
+    }
 }
 
-my($n,$count) = (2,0);
+my ($n, $count) = (2, 0);
 until ($count == 8) {
     next unless 0 == ++$n % 2;
     if (my $key = is_Erdos_Nicolas $n) {
         printf "%8d == sum of its first %3d divisors\n", $n, $key;
-        $count++
+        $count++;
     }
 }
diff --git a/Task/Erd-s-Nicolas-numbers/Sidef/erd-s-nicolas-numbers.sidef b/Task/Erd-s-Nicolas-numbers/Sidef/erd-s-nicolas-numbers.sidef
new file mode 100644
index 0000000000..d85eeb5d66
--- /dev/null
+++ b/Task/Erd-s-Nicolas-numbers/Sidef/erd-s-nicolas-numbers.sidef
@@ -0,0 +1,22 @@
+func is_Erdős_Nicolas(n) {
+
+    n.is_abundant || return false
+
+    var sum   = 0
+    var count = 0
+
+    n.divisors.each {|d|
+        ++count;         sum += d
+        return count if (sum == n)
+        return false if (sum >  n)
+    }
+}
+
+var count = 8   # how many terms to compute
+
+^Inf -> by(2).each {|n|
+    if (is_Erdős_Nicolas(n)) { |v|
+        say "#{'%8s'%n} is the sum of its first #{'%3s'%v} divisors"
+        --count || break
+    }
+}
diff --git a/Task/Ethiopian-multiplication/Chipmunk-Basic/ethiopian-multiplication.basic b/Task/Ethiopian-multiplication/Chipmunk-Basic/ethiopian-multiplication.basic
new file mode 100644
index 0000000000..fb075eaaf4
--- /dev/null
+++ b/Task/Ethiopian-multiplication/Chipmunk-Basic/ethiopian-multiplication.basic
@@ -0,0 +1,26 @@
+100 sub doub(a)
+110 doub = a*2
+120 end sub
+130 sub half(a)
+140 half = int(a/2)
+150 end sub
+160 sub iseven(a)
+170 iseven = (a mod 2)-1
+180 end sub
+190 outp = 0
+200 x = 17
+210 y = 34
+220 while 1
+230   print x;chr$(9);
+240   if not (iseven(x)) then
+250     outp = outp - y
+260     print y
+270   else
+280     print
+290   endif
+300   if x < 2 then exit while
+310   x = half(x)
+320   y = doub(y)
+330 wend
+340 print "=";chr$(9);outp
+350 end
diff --git a/Task/Ethiopian-multiplication/EasyLang/ethiopian-multiplication.easy b/Task/Ethiopian-multiplication/EasyLang/ethiopian-multiplication.easy
index 6f97cb82e7..a1a8acd609 100644
--- a/Task/Ethiopian-multiplication/EasyLang/ethiopian-multiplication.easy
+++ b/Task/Ethiopian-multiplication/EasyLang/ethiopian-multiplication.easy
@@ -1,15 +1,11 @@
-x = 17
-y = 34
-tot = 0
-while x >= 1
-  write x & "\t"
-  if (x + 1) mod 2 = 0
-    tot += y
-    print y
-  else
-    print ""
-  .
-  x = x div 2
-  y = 2 * y
+func mult x y .
+   while x >= 1
+      if x mod 2 <> 0
+         tot += y
+      .
+      x = x div 2
+      y *= 2
+   .
+   return tot
 .
-print "=\t" & tot
+print mult 17 34
diff --git a/Task/Euclid-Mullin-sequence/EasyLang/euclid-mullin-sequence.easy b/Task/Euclid-Mullin-sequence/EasyLang/euclid-mullin-sequence.easy
new file mode 100644
index 0000000000..961b4a0430
--- /dev/null
+++ b/Task/Euclid-Mullin-sequence/EasyLang/euclid-mullin-sequence.easy
@@ -0,0 +1,17 @@
+limit = 8
+arr[] = [ 2 ]
+write 2 & " "
+for i = 2 to limit
+   k = 3
+   repeat
+      em = 1
+      for j = 1 to i - 1
+         em = em * arr[j] mod k
+      .
+      em = (em + 1) mod k
+      until em = 0
+      k += 2
+   .
+   arr[] &= k
+   write k & " "
+.
diff --git a/Task/Euclid-Mullin-sequence/SETL/euclid-mullin-sequence.setl b/Task/Euclid-Mullin-sequence/SETL/euclid-mullin-sequence.setl
new file mode 100644
index 0000000000..41731276ee
--- /dev/null
+++ b/Task/Euclid-Mullin-sequence/SETL/euclid-mullin-sequence.setl
@@ -0,0 +1,19 @@
+program euclid_mullin;
+    print(2);
+    product := 2;
+    loop for i in [2..16] do
+        next := smallest_factor(product + 1);
+        product *:= next;
+        print(next);
+    end loop;
+
+    op smallest_factor(n);
+        if even n then return 2; end if;
+        d := 3;
+        loop while d*d <= n do
+            if n mod d=0 then return d; end if;
+            d +:= 2;
+        end loop;
+        return n;
+    end op;
+end program;
diff --git a/Task/Euclid-Mullin-sequence/Wren/euclid-mullin-sequence-2.wren b/Task/Euclid-Mullin-sequence/Wren/euclid-mullin-sequence-2.wren
index 3723ba66fe..b0d73b9fa1 100644
--- a/Task/Euclid-Mullin-sequence/Wren/euclid-mullin-sequence-2.wren
+++ b/Task/Euclid-Mullin-sequence/Wren/euclid-mullin-sequence-2.wren
@@ -1,4 +1,4 @@
-/* euclid_mullin_gmp.wren */
+/* Euclid_mullin_sequence_2.wren */
 
 import "./gmp" for Mpz
 
diff --git a/Task/Euler-method/Wren/euler-method.wren b/Task/Euler-method/Wren/euler-method.wren
index 67ca037670..cf86fb3800 100644
--- a/Task/Euler-method/Wren/euler-method.wren
+++ b/Task/Euler-method/Wren/euler-method.wren
@@ -1,5 +1,5 @@
-import "/fmt" for Fmt
-import "/iterate" for Stepped
+import "./fmt" for Fmt
+import "./iterate" for Stepped
 
 var euler = Fn.new { |f, y, step, end|
     Fmt.write(" Step $2d: ", step)
diff --git a/Task/Eulers-identity/Wren/eulers-identity.wren b/Task/Eulers-identity/Wren/eulers-identity.wren
index 864f4ae615..057efa1d05 100644
--- a/Task/Eulers-identity/Wren/eulers-identity.wren
+++ b/Task/Eulers-identity/Wren/eulers-identity.wren
@@ -1,3 +1,3 @@
-import "/complex" for Complex
+import "./complex" for Complex
 
 System.print((Complex.new(0, Num.pi).exp + Complex.one).toString)
diff --git a/Task/Evaluate-binomial-coefficients/EasyLang/evaluate-binomial-coefficients.easy b/Task/Evaluate-binomial-coefficients/EasyLang/evaluate-binomial-coefficients.easy
new file mode 100644
index 0000000000..68811a9250
--- /dev/null
+++ b/Task/Evaluate-binomial-coefficients/EasyLang/evaluate-binomial-coefficients.easy
@@ -0,0 +1,15 @@
+func binomial n k .
+   if k > n / 2
+      k = n - k
+   .
+   numer = 1
+   for i = n downto n - k + 1
+      numer = numer * i
+   .
+   denom = 1
+   for i = 1 to k
+      denom = denom * i
+   .
+   return numer / denom
+.
+print binomial 5 3
diff --git a/Task/Evaluate-binomial-coefficients/Wren/evaluate-binomial-coefficients.wren b/Task/Evaluate-binomial-coefficients/Wren/evaluate-binomial-coefficients.wren
index 91af7b9424..61bfa38f0e 100644
--- a/Task/Evaluate-binomial-coefficients/Wren/evaluate-binomial-coefficients.wren
+++ b/Task/Evaluate-binomial-coefficients/Wren/evaluate-binomial-coefficients.wren
@@ -1,5 +1,5 @@
-import "/fmt" for Fmt
-import "/math" for Int
+import "./fmt" for Fmt
+import "./math" for Int
 
 var binomial = Fn.new { |n, k|
     if (n < 0 || k < 0) Fiber.abort("Arguments must be non-negative integers")
diff --git a/Task/Even-or-odd/Wren/even-or-odd.wren b/Task/Even-or-odd/Wren/even-or-odd.wren
index a081e12c32..b2801820b1 100644
--- a/Task/Even-or-odd/Wren/even-or-odd.wren
+++ b/Task/Even-or-odd/Wren/even-or-odd.wren
@@ -1,4 +1,4 @@
-import "/fmt" for Fmt
+import "./fmt" for Fmt
 
 var isEven1 = Fn.new { |i| i & 1 == 0 }
 
diff --git a/Task/Events/EasyLang/events.easy b/Task/Events/EasyLang/events.easy
new file mode 100644
index 0000000000..0206f41f44
--- /dev/null
+++ b/Task/Events/EasyLang/events.easy
@@ -0,0 +1,10 @@
+on timer
+   move randomf * 100 randomf * 100
+   circle 2
+   timer 1
+.
+on mouse_down
+   move mouse_x mouse_y
+   circle 2
+.
+timer 0
diff --git a/Task/Evolutionary-algorithm/SETL/evolutionary-algorithm.setl b/Task/Evolutionary-algorithm/SETL/evolutionary-algorithm.setl
new file mode 100644
index 0000000000..5148a59ccc
--- /dev/null
+++ b/Task/Evolutionary-algorithm/SETL/evolutionary-algorithm.setl
@@ -0,0 +1,40 @@
+program weasel;
+    setrandom(0);
+
+    target := "METHINKS IT IS LIKE A WEASEL";
+    charset := {c : c in " ABCDEFGHIJKLMNOPQRSTUVWXYZ"};
+    mutation_rate := 0.1;
+    generation_size := 100;
+
+    loop init
+        current := +/[random charset : c in target];
+    doing
+        print(lpad(str fitness(current, target), 3), current);
+    while current /= target do
+        current := next_generation(
+            current, target, mutation_rate, generation_size, charset);
+    end loop;
+
+    proc fitness(candidate, target);
+        return #[i : i in [1..#target] | candidate(i) /= target(i)];
+    end proc;
+
+    proc mutate(candidate, mutation_rate, charset);
+        return +/[
+            if random 1.0 < mutation_rate
+                then random charset
+                else c
+            end
+            : c in candidate
+        ];
+    end proc;
+
+    proc next_generation(
+            parent, target, mutation_rate, generation_size, charset);
+        children := {
+            [fitness(c:=mutate(parent, mutation_rate, charset), target), c]
+            : i in [1..generation_size]
+        };
+        return random children{min/domain children};
+    end proc;
+end program;
diff --git a/Task/Exceptions-Catch-an-exception-thrown-in-a-nested-call/Sidef/exceptions-catch-an-exception-thrown-in-a-nested-call.sidef b/Task/Exceptions-Catch-an-exception-thrown-in-a-nested-call/Sidef/exceptions-catch-an-exception-thrown-in-a-nested-call.sidef
index 83f8798685..d49942528f 100644
--- a/Task/Exceptions-Catch-an-exception-thrown-in-a-nested-call/Sidef/exceptions-catch-an-exception-thrown-in-a-nested-call.sidef
+++ b/Task/Exceptions-Catch-an-exception-thrown-in-a-nested-call/Sidef/exceptions-catch-an-exception-thrown-in-a-nested-call.sidef
@@ -1,14 +1,14 @@
-func baz(i) { die "U#{i}" };
-func bar(i) { baz(i)      };
+func baz(i) { die "U#{i}" }
+func bar(i) { baz(i)      }
 
 func foo {
     [0, 1].each { |i|
         try   { bar(i) }
-        catch { |_, msg|
-            msg ~~ /^U0/ ? say "Function foo() caught exception U0"
-                         : die msg;       # re-raise the exception
-        };
+        catch { |msg|
+            msg ~~ /^U0/ ? say "Function foo() caught exception U0"
+                         : die msg       # re-raise the exception
+        }
     }
 }
 
-foo();
+foo()
diff --git a/Task/Exceptions/Sidef/exceptions.sidef b/Task/Exceptions/Sidef/exceptions.sidef
index 1d17620d81..e4560cc5c3 100644
--- a/Task/Exceptions/Sidef/exceptions.sidef
+++ b/Task/Exceptions/Sidef/exceptions.sidef
@@ -1,11 +1,10 @@
 try  {
-    die "I'm dead!";        # throws an exception of type 'error'
+    die "I'm dead!"        # throws an exception
+}
+catch { |msg|
+    say "msg: #{msg}"      # msg: I'm dead! at test.sf line 2.
 }
-catch { |type, msg|
-    say "type: #{type}";    # type: error
-    say "msg: #{msg}";      # msg: I'm dead! at test.sf line 2.
-};
 
-say "I'm alive...";
-die "Now I'm dead!";        # this line terminates the program
-say "Or am I?";             # Yes, you are!
+say "I'm alive..."
+die "Now I'm dead!"        # this line terminates the program
+say "Or am I?"             # Yes, you are!
diff --git a/Task/Executable-library/Wren/executable-library-1.wren b/Task/Executable-library/Wren/executable-library-1.wren
index 13928a04ad..f94e82a732 100644
--- a/Task/Executable-library/Wren/executable-library-1.wren
+++ b/Task/Executable-library/Wren/executable-library-1.wren
@@ -1,4 +1,4 @@
-/* hailstone.wren */
+/* Executable_library.wren */
 
 var Hailstone = Fn.new { |n|
     if (n < 1) Fiber.abort("Parameter must be a positive integer.")
@@ -34,6 +34,6 @@ var libMain_ = Fn.new {
 
 // Check if it's being used as a library or not.
 import "os" for Process
-if (Process.allArguments[1] == "hailstone.wren") {  // if true, not a library
+if (Process.allArguments[1] == "Executable_library.wren") {  // if true, not a library
     libMain_.call()
 }
diff --git a/Task/Executable-library/Wren/executable-library-2.wren b/Task/Executable-library/Wren/executable-library-2.wren
index e6cc7cbd0a..f84d5804c7 100644
--- a/Task/Executable-library/Wren/executable-library-2.wren
+++ b/Task/Executable-library/Wren/executable-library-2.wren
@@ -1,6 +1,6 @@
-/* hailstone2.wren */
+/* Executable_library_2.wren */
 
-import "/hailstone" for Hailstone
+import "./Executable_library" for Hailstone
 
 var freq = {}
 for (i in 1...100000) {
diff --git a/Task/Execute-Brain-/EasyLang/execute-brain-.easy b/Task/Execute-Brain-/EasyLang/execute-brain-.easy
new file mode 100644
index 0000000000..9888328243
--- /dev/null
+++ b/Task/Execute-Brain-/EasyLang/execute-brain-.easy
@@ -0,0 +1,76 @@
+proc exec code$ . .
+   len mem[] 100
+   dp = 1
+   code$[] = strchars code$
+   ip = 1
+   while ip <= len code$[]
+      if dp > len mem[]
+         len mem[] len mem[] + 100
+      .
+      if dp < 1
+         print "programm error"
+         return
+      .
+      c$ = code$[ip]
+      if c$ = "+"
+         mem[dp] += 1
+      elif c$ = "-"
+         mem[dp] -= 1
+      elif c$ = ">"
+         dp += 1
+      elif c$ = "<"
+         dp -= 1
+      elif c$ = "."
+         write strchar mem[dp]
+      elif c$ = ","
+         print "input not implemented"
+      elif c$ = "["
+         if mem[dp] = 0
+            br = 1
+            repeat
+               ip += 1
+               if code$[ip] = "["
+                  br += 1
+               elif code$[ip] = "]"
+                  br -= 1
+               .
+               until br = 0
+            .
+         else
+            br[] &= ip
+         .
+      elif c$ = "]"
+         ip = br[len br[]] - 1
+         len br[] -1
+      .
+      ip += 1
+   .
+.
+func syntax code$ .
+   for i to len code$
+      h$ = substr code$ i 1
+      if h$ = "["
+         br += 1
+      elif h$ = "]"
+         br -= 1
+      .
+      if br < 0
+         return 0
+      .
+   .
+   return if br = 0
+.
+repeat
+   inp$ = input
+   until inp$ = ""
+   code$ &= inp$
+.
+if syntax code$ <> 1
+   print "syntax error"
+   return
+.
+exec code$
+#
+input_data
+++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>
+---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
diff --git a/Task/Execute-Brain-/R/execute-brain-.r b/Task/Execute-Brain-/R/execute-brain-.r
new file mode 100644
index 0000000000..124fb74d04
--- /dev/null
+++ b/Task/Execute-Brain-/R/execute-brain-.r
@@ -0,0 +1,50 @@
+bf <- function(code) {
+  instructions <- strsplit(code, "")[[1]]
+  tape <- c()
+  visited <- c()
+
+  pset <- function(n) {
+    if (n %in% visited)
+      p <<- n
+    else {
+      visited[length(visited)+1] <<- n
+      tape[as.character(n)] <<- 0
+      pset(n)
+    }
+  }
+
+  bracket <- function(b1, b2, x) {
+    nest <- 1
+    j <- i + x
+    while (nest != 0) {
+      if (instructions[j] == b1)
+        nest <- nest + 1
+      if (instructions[j] == b2)
+        nest <- nest - 1
+      j <- j + x
+    }
+    i <<- j
+  }
+
+  pset(0)
+  i <- 1
+  while (i <= length(instructions)) {
+    p_ <- as.character(p)
+    c <- instructions[i]
+    switch(c,
+           ">" = pset(p + 1),
+           "<" = pset(p - 1),
+           "+" = tape[p_] <- tape[p_] + 1,
+           "-" = tape[p_] <- tape[p_] - 1,
+           "." = cat(intToUtf8(tape[p_])),
+           # TODO: IMPLEMENT ","
+           "[" = if (tape[p_] == 0) {
+                   bracket("[", "]", 1)
+                   i <- i - 1 # off by one error
+                 },
+           "]" = bracket("]", "[", -1))
+    i <- i + 1
+  }
+}
+
+bf("++++++++++[>+>+++>+++++++>++++++++++<<<<-]>>>++.>+.+++++++..+++.<<++.>+++++++++++++++.>.+++.------.--------.<<+.<.")
diff --git a/Task/Execute-Brain-/SETL/execute-brain-.setl b/Task/Execute-Brain-/SETL/execute-brain-.setl
new file mode 100644
index 0000000000..57e8bd44ff
--- /dev/null
+++ b/Task/Execute-Brain-/SETL/execute-brain-.setl
@@ -0,0 +1,71 @@
+program brainfuck;
+    if command_line(1) = om then
+        print("error: no program file given");
+        stop;
+    end if;
+
+    if (f := open(command_line(1), "r")) = om then
+        print("error: cannot open file");
+        stop;
+    end if;
+
+    [pgm, loopmap] := read_program(f);
+    close(f);
+
+    mem_left := [];
+    mem_right := [];
+    mem_cur := 0;
+    pc := 1;
+    loop while pc <= #pgm do
+        case pgm(pc) of
+            ("+"): mem_cur +:= 1;
+                   mem_cur mod:= 256;
+            ("-"): mem_cur -:= 1;
+                   mem_cur mod:= 256;
+            (">"): mem_left with:= mem_cur;
+                   mem_cur frome mem_right;
+                   mem_cur ?:= 0;
+            ("<"): mem_right with:= mem_cur;
+                   mem_cur frome mem_left;
+                   mem_cur ?:= 0;
+            ("."): putchar(char mem_cur);
+            (","): mem_cur := ichar (getchar ? '\x00');
+            ("["): if mem_cur = 0 then pc := loopmap(pc); end if;
+            ("]"): if mem_cur /= 0 then pc := loopmap(pc); end if;
+        end case;
+        pc +:= 1;
+    end loop;
+
+    proc read_program(f);
+        pgm := [];
+        loop doing ch := getc(f); while ch /= om do
+            if ch in "+-<>.,[]" then
+                pgm with:= ch;
+            end if;
+        end loop;
+
+        stack := [];
+        loopmap := {};
+        loop for i in [1..#pgm] do
+            case pgm(i) of
+                ("["):
+                    stack with:= i;
+                ("]"):
+                    j frome stack;
+                    if j=om then
+                        print("mismatched brackets");
+                        stop;
+                    end if;
+                    loopmap(i) := j;
+                    loopmap(j) := i;
+            end case;
+        end loop;
+
+        if stack /= [] then
+            print("mismatched brackets");
+            stop;
+        end if;
+
+        return [pgm, loopmap];
+    end proc;
+end program;
diff --git a/Task/Execute-Computer-Zero/EasyLang/execute-computer-zero.easy b/Task/Execute-Computer-Zero/EasyLang/execute-computer-zero.easy
new file mode 100644
index 0000000000..1349a41c80
--- /dev/null
+++ b/Task/Execute-Computer-Zero/EasyLang/execute-computer-zero.easy
@@ -0,0 +1,33 @@
+proc run name$ mem[] . .
+   write name$ & ": "
+   pc = 1
+   len mem[] 32
+   repeat
+      ppc = mem[pc]
+      op = ppc div 32
+      addr = ppc mod 32 + 1
+      pc += 1
+      if op = 1
+         acc = mem[addr]
+      elif op = 2
+         mem[addr] = acc
+      elif op = 3
+         acc = (acc + mem[addr]) mod 255
+      elif op = 4
+         acc = (acc - mem[addr]) mod 255
+      elif op = 5
+         if acc = 0
+            pc = addr
+         .
+      elif op = 6
+         pc = addr
+      .
+      until op = 7 or pc > 32
+   .
+   print acc
+.
+run "2+2" [ 35 100 224 2 2 ]
+run "7*8" [ 44 106 76 43 141 75 168 192 44 224 8 7 0 1 ]
+run "Fibonacci" [ 46 79 109 78 47 77 48 145 171 80 192 46 224 1 1 0 8 1 ]
+run "List" [ 45 111 69 112 71 0 78 0 171 79 192 46 224 32 0 28 1 0 0 0 6 0 2 26 5 20 3 30 1 22 4 24 ]
+run "Prisoner" [ 0 0 224 0 0 35 157 178 35 93 174 33 127 65 194 32 127 64 192 35 93 33 126 99 ]
diff --git a/Task/Execute-HQ9+/EasyLang/execute-hq9+.easy b/Task/Execute-HQ9+/EasyLang/execute-hq9+.easy
new file mode 100644
index 0000000000..73ac035a1f
--- /dev/null
+++ b/Task/Execute-HQ9+/EasyLang/execute-hq9+.easy
@@ -0,0 +1,21 @@
+proc run code$ . .
+   for c$ in strchars code$
+      if c$ = "Q"
+         print code$
+      elif c$ = "H"
+         print "Hello, world!"
+      elif c$ = "9"
+         for b = 99 downto 1
+            print b & " bottles of beer on the wall"
+            print b & " bottles of beer"
+            print "Take one down, pass it around"
+            print b & " bottles of beer on the wall"
+            print ""
+         .
+      elif c$ = "+"
+         acc += 1
+         print acc
+      .
+   .
+.
+run "HQ9+"
diff --git a/Task/Execute-SNUSP/EasyLang/execute-snusp.easy b/Task/Execute-SNUSP/EasyLang/execute-snusp.easy
new file mode 100644
index 0000000000..0a6abce0cd
--- /dev/null
+++ b/Task/Execute-SNUSP/EasyLang/execute-snusp.easy
@@ -0,0 +1,63 @@
+proc snusp dlen raw$ . .
+   len ds[] dlen
+   is$[] = strsplit raw$ "\n"
+   for s$ in is$[]
+      is$[][] &= strchars s$
+   .
+   for ipr to len is$[][]
+      for ipc to len is$[ipr][]
+         if is$[ipr][ipc] = "$"
+            break 2
+         .
+      .
+   .
+   dp = 1
+   id = 0
+   #
+   subr step
+      if id mod 2 = 0
+         ipc += 1 - bitand id 2
+      else
+         ipr += 1 - bitand id 2
+      .
+   .
+   while ipr >= 1 and ipr <= len is$[][] and ipc >= 1 and ipc <= len is$[ipr][]
+      c$ = is$[ipr][ipc]
+      if c$ = ">"
+         dp += 1
+      elif c$ = "<"
+         dp -= 1
+      elif c$ = "+"
+         ds[dp] += 1
+      elif c$ = "-"
+         ds[dp] -= 1
+      elif c$ = "."
+         write strchar ds[dp]
+      elif c$ = ","
+         # ds[dp] = strcode input
+      elif c$ = "/"
+         id = bitxor id 3
+      elif c$ = "\\"
+         id = bitxor id 1
+      elif c$ = "!"
+         step
+      elif c$ = "?"
+         if ds[dp] = 0
+            step
+         .
+      .
+      step
+   .
+.
+s$ = input
+while s$ <> ""
+   cod$ &= "\n" & s$
+   s$ = input
+.
+snusp 5 cod$
+#
+input_data
+/++++!/===========?\>++.>+.+++++++..+++\
+\+++\ | /+>+++++++>/ /++++++++++<<.++>./
+$+++/ | \+++++++++>\ \+++++.>.+++.-----\
+      \==-<<<<+>+++/ /=.>.+>.--------.-/`
diff --git a/Task/Execute-a-Markov-algorithm/SETL/execute-a-markov-algorithm.setl b/Task/Execute-a-Markov-algorithm/SETL/execute-a-markov-algorithm.setl
new file mode 100644
index 0000000000..679a6f79b7
--- /dev/null
+++ b/Task/Execute-a-Markov-algorithm/SETL/execute-a-markov-algorithm.setl
@@ -0,0 +1,62 @@
+program markov_algorithm;
+    magic := false;
+    if command_line(1) = om then
+        print("error: no ruleset file given");
+        stop;
+    elseif command_line(2) = om then
+        print("error: no input string given");
+        stop;
+    end if;
+
+    rules := read_file(command_line(1));
+
+    input := command_line(2);
+    loop do
+        loop for [pat, repl, trm] in rules do
+            if pat in input then
+                input(pat) := repl;
+                if trm then
+                    quit;
+                else
+                    continue loop do;
+                end if;
+            end if;
+        end loop;
+        quit;
+    end loop;
+    print(input);
+
+    proc read_file(file_name);
+        if (rulefile := open(file_name, "r")) = om then
+            print("error: cannot open ruleset file");
+            stop;
+        end if;
+
+        rules := [];
+        loop doing
+            line := getline(rulefile);
+        while line /= om do
+            rule := parse_rule(line);
+            if rule /= om then rules with:= rule; end if;
+        end loop;
+        return rules;
+    end proc;
+
+    proc parse_rule(rule);
+        if rule(1) = "#" then return om; end if; $ comment
+        if " -> " notin rule then return om; end if; $ not a rule
+
+        [s, e] := mark(rule, " -> ");
+        pattern := rule(..s-1);
+        repl := rule(e+1..);
+
+        whitespace := "\t\r\n ";
+        span(pattern, whitespace);
+        rspan(pattern, whitespace);
+        span(repl, whitespace);
+        rspan(repl, whitespace);
+
+        trm := match(repl, ".") /= "";
+        return [pattern, repl, trm];
+    end proc;
+end program;
diff --git a/Task/Execute-a-Markov-algorithm/Wren/execute-a-markov-algorithm.wren b/Task/Execute-a-Markov-algorithm/Wren/execute-a-markov-algorithm.wren
index e3b8e66652..0012cfa75b 100644
--- a/Task/Execute-a-Markov-algorithm/Wren/execute-a-markov-algorithm.wren
+++ b/Task/Execute-a-Markov-algorithm/Wren/execute-a-markov-algorithm.wren
@@ -1,5 +1,5 @@
-import "/ioutil" for FileUtil, File
-import "/pattern" for Pattern
+import "./ioutil" for FileUtil, File
+import "./pattern" for Pattern
 
 var lb = FileUtil.lineBreak
 
diff --git a/Task/Execute-a-system-command/Wren/execute-a-system-command-1.wren b/Task/Execute-a-system-command/Wren/execute-a-system-command-1.wren
index a29e2c106c..c638a0983e 100644
--- a/Task/Execute-a-system-command/Wren/execute-a-system-command-1.wren
+++ b/Task/Execute-a-system-command/Wren/execute-a-system-command-1.wren
@@ -1,4 +1,4 @@
-/* run_system_command.wren */
+/* Execute_a_system_command.wren */
 class Command {
     foreign static exec(name, param) // the code for this is provided by Go
 }
diff --git a/Task/Execute-a-system-command/Wren/execute-a-system-command-2.wren b/Task/Execute-a-system-command/Wren/execute-a-system-command-2.wren
index ad43e08451..2e0ffb7e03 100644
--- a/Task/Execute-a-system-command/Wren/execute-a-system-command-2.wren
+++ b/Task/Execute-a-system-command/Wren/execute-a-system-command-2.wren
@@ -1,4 +1,4 @@
-/* run_system_command.go*/
+/* Execute_a_system_command.go*/
 package main
 
 import (
@@ -29,7 +29,7 @@ func execCommand(vm *wren.VM, parameters []any) (any, error) {
 
 func main() {
     vm := wren.NewVM()
-    fileName := "run_system_command.wren"
+    fileName := "Execute_a_system_command.wren"
     methodMap := wren.MethodMap{"static exec(_,_)": execCommand}
     classMap := wren.ClassMap{"Command": wren.NewClass(nil, nil, methodMap)}
     module := wren.NewModule(classMap)
diff --git a/Task/Exponentiation-order/ALGOL-M/exponentiation-order.alg b/Task/Exponentiation-order/ALGOL-M/exponentiation-order.alg
new file mode 100644
index 0000000000..c71c310501
--- /dev/null
+++ b/Task/Exponentiation-order/ALGOL-M/exponentiation-order.alg
@@ -0,0 +1,7 @@
+begin
+
+write("5**3**2   = ", 5**3**2);
+write("(5**3)**2 = ", (5**3)**2);
+write("5**(3**2) = ", 5**(3**2));
+
+end
diff --git a/Task/Exponentiation-order/EasyLang/exponentiation-order.easy b/Task/Exponentiation-order/EasyLang/exponentiation-order.easy
new file mode 100644
index 0000000000..8ebcdfd74f
--- /dev/null
+++ b/Task/Exponentiation-order/EasyLang/exponentiation-order.easy
@@ -0,0 +1,2 @@
+print "(5 ^ 3) ^ 2 = " & pow (pow 5 3) 2
+print "5 ^ (3 ^ 2) = " & pow 5 pow 3 2
diff --git a/Task/Exponentiation-order/S-BASIC/exponentiation-order.basic b/Task/Exponentiation-order/S-BASIC/exponentiation-order.basic
new file mode 100644
index 0000000000..cb8cdd1cd8
--- /dev/null
+++ b/Task/Exponentiation-order/S-BASIC/exponentiation-order.basic
@@ -0,0 +1,5 @@
+print "5^3^2   : "; 5 ^ 3 ^ 2
+print "(5^3)^2 : "; (5 ^ 3) ^ 2
+print "5^(3^2) : "; 5 ^ (3 ^ 2)
+
+end
diff --git a/Task/Exponentiation-with-infix-operators-in-or-operating-on-the-base/EasyLang/exponentiation-with-infix-operators-in-or-operating-on-the-base.easy b/Task/Exponentiation-with-infix-operators-in-or-operating-on-the-base/EasyLang/exponentiation-with-infix-operators-in-or-operating-on-the-base.easy
new file mode 100644
index 0000000000..81e6d8dc9c
--- /dev/null
+++ b/Task/Exponentiation-with-infix-operators-in-or-operating-on-the-base/EasyLang/exponentiation-with-infix-operators-in-or-operating-on-the-base.easy
@@ -0,0 +1,5 @@
+for x in [ -5 5 ]
+   for p in [ 2 3 ]
+      print x & "^" & p & " = " & pow x p
+   .
+.
diff --git a/Task/Exponentiation-with-infix-operators-in-or-operating-on-the-base/Wren/exponentiation-with-infix-operators-in-or-operating-on-the-base.wren b/Task/Exponentiation-with-infix-operators-in-or-operating-on-the-base/Wren/exponentiation-with-infix-operators-in-or-operating-on-the-base.wren
index 87d3efbdaa..910dab55db 100644
--- a/Task/Exponentiation-with-infix-operators-in-or-operating-on-the-base/Wren/exponentiation-with-infix-operators-in-or-operating-on-the-base.wren
+++ b/Task/Exponentiation-with-infix-operators-in-or-operating-on-the-base/Wren/exponentiation-with-infix-operators-in-or-operating-on-the-base.wren
@@ -1,4 +1,4 @@
-import "/fmt" for Fmt
+import "./fmt" for Fmt
 
 class Num2 {
     construct new(n) { _n = n }
diff --git a/Task/Extensible-prime-generator/EasyLang/extensible-prime-generator.easy b/Task/Extensible-prime-generator/EasyLang/extensible-prime-generator.easy
new file mode 100644
index 0000000000..caccaacfce
--- /dev/null
+++ b/Task/Extensible-prime-generator/EasyLang/extensible-prime-generator.easy
@@ -0,0 +1,46 @@
+fastfunc nprim num .
+   repeat
+      i = 2
+      while i <= sqrt num and num mod i <> 0
+         i += 1
+      .
+      until num mod i <> 0
+      num += 1
+   .
+   return num
+.
+prim = 2
+primcnt = 1
+proc nextprim . .
+   prim = nprim (prim + 1)
+   primcnt += 1
+.
+for i to 20
+   write prim & " "
+   nextprim
+.
+print ""
+while prim < 100
+   nextprim
+.
+while prim <= 150
+   write prim & " "
+   nextprim
+.
+print ""
+while prim < 7700
+   nextprim
+.
+while prim <= 8000
+   cnt += 1
+   nextprim
+.
+print cnt
+while primcnt < 10000
+   nextprim
+.
+print prim
+while primcnt < 100000
+   nextprim
+.
+print prim
diff --git a/Task/Extensible-prime-generator/Wren/extensible-prime-generator.wren b/Task/Extensible-prime-generator/Wren/extensible-prime-generator.wren
index c7cc4ee354..70da0b6ea9 100644
--- a/Task/Extensible-prime-generator/Wren/extensible-prime-generator.wren
+++ b/Task/Extensible-prime-generator/Wren/extensible-prime-generator.wren
@@ -1,4 +1,4 @@
-import "/fmt" for Fmt
+import "./fmt" for Fmt
 
 var primeSieve = Fn.new { |limit|
     if (limit < 2) return []
diff --git a/Task/Extreme-floating-point-values/EasyLang/extreme-floating-point-values.easy b/Task/Extreme-floating-point-values/EasyLang/extreme-floating-point-values.easy
new file mode 100644
index 0000000000..4dfc0789fb
--- /dev/null
+++ b/Task/Extreme-floating-point-values/EasyLang/extreme-floating-point-values.easy
@@ -0,0 +1,25 @@
+inf = 1 / 0
+minus_inf = -1 / 0
+minus_zero = -1 / inf
+nan = 0.0 / 0.0
+#
+# in Easylang there is -0, but when
+# converting it to a string it becomes "0"
+#
+print "positive  infinity: " & inf
+print "negative infinity: " & minus_inf
+print "negative zero: " & minus_zero
+print "not a number: " & nan
+#
+# some arithmetic
+print "+inf + 2 = " & inf + 2
+print "+inf - 10.1 = " & inf - 10.1
+print "+inf + -inf = " & inf + minus_inf
+print "0 * +inf = " & 0 * inf
+print "1/-0 = " & 1 / minus_zero
+print "NaN + 1 = " & nan + 1
+print "NaN + NaN = " & nan + nan
+#
+# some comparisons
+print "NaN == NaN = " & if nan = nan
+print "0 = -0 = " & if 0 = minus_zero
diff --git a/Task/FTP/Wren/ftp-1.wren b/Task/FTP/Wren/ftp-1.wren
index 3933f6d7d2..d2253b94fb 100644
--- a/Task/FTP/Wren/ftp-1.wren
+++ b/Task/FTP/Wren/ftp-1.wren
@@ -1,4 +1,4 @@
-/* ftp.wren */
+/* FTP.wren */
 
 var FTPLIB_CONNMODE = 1
 var FTPLIB_PASSIVE  = 1
diff --git a/Task/FTP/Wren/ftp-2.wren b/Task/FTP/Wren/ftp-2.wren
index 419f39c28e..3a4e45c1f9 100644
--- a/Task/FTP/Wren/ftp-2.wren
+++ b/Task/FTP/Wren/ftp-2.wren
@@ -131,7 +131,7 @@ int main(int argc, char **argv) {
     config.bindForeignMethodFn = &bindForeignMethod;
     WrenVM* vm = wrenNewVM(&config);
     const char* module = "main";
-    const char* fileName = "ftp.wren";
+    const char* fileName = "FTP.wren";
     char *script = readFile(fileName);
     WrenInterpretResult result = wrenInterpret(vm, module, script);
     switch (result) {
diff --git a/Task/Factorial-base-numbers-indexing-permutations-of-a-collection/Java/factorial-base-numbers-indexing-permutations-of-a-collection.java b/Task/Factorial-base-numbers-indexing-permutations-of-a-collection/Java/factorial-base-numbers-indexing-permutations-of-a-collection.java
new file mode 100644
index 0000000000..9e7609637e
--- /dev/null
+++ b/Task/Factorial-base-numbers-indexing-permutations-of-a-collection/Java/factorial-base-numbers-indexing-permutations-of-a-collection.java
@@ -0,0 +1,110 @@
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.concurrent.ThreadLocalRandom;
+import java.util.stream.Collectors;
+
+public final class FactorialBaseNumbersIndexingPermutations {
+
+	public static void main(String[] args) {
+		// Part 1
+		List elements = convertToListInteger("0.1.2.3");
+		List factoradic = convertToListInteger("0.0.0");
+		for ( int i = 0; i < factorial(4); i++ ) {	
+			List rotated = permutation(elements, factoradic);
+			System.out.println(toString(factoradic, ".") + " --> " + toString(rotated, " "));
+			increment(factoradic);
+		}
+		System.out.println();
+		
+		// Part 2		
+		System.out.println("Generating the permutations of 11 digits:");
+		final int limit = factorial(11);
+		elements = convertToListInteger("0.1.2.3.4.5.6.7.8.9.10");
+		factoradic = convertToListInteger("0.0.0.0.0.0.0.0.0.0");
+		for ( int i = 0; i < limit; i++ ) {	
+			List rotated = permutation(elements, factoradic);
+			if ( i < 3 || i > limit - 4 ) {
+				System.out.println(toString(factoradic, ".") + " --> " + toString(rotated, " "));
+			} else if ( i == 3 ) {
+				System.out.println(" [ ... ] ");
+			}
+			increment(factoradic);
+		}		
+		System.out.println("Number of permutations is 11! = " + limit + System.lineSeparator());
+		
+		// Part 3.
+		List codes = List.of(
+		    "39.49.7.47.29.30.2.12.10.3.29.37.33.17.12.31.29.34.17.25.2.4.25.4.1.14"
+		    	  + ".20.6.21.18.1.1.1.4.0.5.15.12.4.3.10.10.9.1.6.5.5.3.0.0.0",
+		    "51.48.16.22.3.0.19.34.29.1.36.30.12.32.12.29.30.26.14.21.8.12.1.3.10.4"
+		    	  + ".7.17.6.21.8.12.15.15.13.15.7.3.12.11.9.5.5.6.6.3.4.0.3.2.1" );
+		    		
+		List cards = List.of( "A♠", "K♠", "Q♠", "J♠", "10♠", "9♠", "8♠", "7♠", "6♠", "5♠", "4♠", "3♠", "2♠",
+		           					  "A♥", "K♥", "Q♥", "J♥", "10♥", "9♥", "8♥", "7♥", "6♥", "5♥", "4♥", "3♥", "2♥",
+		           					  "A♦", "K♦", "Q♦", "J♦", "10♦", "9♦", "8♦", "7♦", "6♦", "5♦", "4♦", "3♦", "2♦",
+		           					  "A♣", "K♣", "Q♣", "J♣", "10♣", "9♣", "8♣", "7♣", "6♣", "5♣", "4♣", "3♣", "2♣" );
+		
+		System.out.println("Original deck of cards:");
+		System.out.println(toString(cards, " ") + System.lineSeparator());
+		System.out.println("Task shuffles:");				
+		for ( String code : codes ) {
+			System.out.println(code + " --> ");
+			factoradic = convertToListInteger(code);
+			System.out.println(toString(permutation(cards, factoradic), " "));
+			System.out.println();
+		}
+		
+		System.out.println("Random shuffle:");
+		ThreadLocalRandom random = ThreadLocalRandom.current();
+		factoradic.clear();
+		for ( int i = 0; i < 52; i++ ) {
+			factoradic.add(random.nextInt(cards.size() - i));
+		}
+		System.out.println(toString(factoradic, ".") + " --> ");
+		System.out.println(toString(permutation(cards, factoradic), " "));
+	}	
+	
+	private static  List permutation(List elements, List factoradic) {
+		List copy = new ArrayList(elements);
+		int m = 0;
+		for ( int g : factoradic ) {		
+			Collections.rotate(copy.subList(m, m + g + 1), 1);
+			m += 1;
+		}
+		return copy;
+	}
+	
+	private static void increment(List factoradic) {
+		int index = factoradic.size() - 1;
+		while ( index >= 0 && factoradic.get(index) == factoradic.size() - index ) {
+			factoradic.set(index, 0);
+			index -= 1;
+		}
+		if ( index >= 0 ) {
+			factoradic.set(index, factoradic.get(index) + 1);
+		}
+	}	
+	
+	private static List convertToListInteger(String text) {
+		List result = new ArrayList();
+		String[] numbers = text.split("\\.");
+		for ( String number : numbers ) {
+			result.add(Integer.valueOf(number));
+		}
+		return result;
+	}
+	
+	private static int factorial(int n) {
+		int factorial = 1;
+		for ( int i = 2; i <= n; i++ ) {
+			factorial *= i;
+		}
+		return factorial;
+	}
+	
+	private static  String toString(List factoradic, String delimiter) {
+		return factoradic.stream().map(String::valueOf).collect(Collectors.joining(delimiter));
+	}
+			
+}
diff --git a/Task/Factorial-base-numbers-indexing-permutations-of-a-collection/Wren/factorial-base-numbers-indexing-permutations-of-a-collection.wren b/Task/Factorial-base-numbers-indexing-permutations-of-a-collection/Wren/factorial-base-numbers-indexing-permutations-of-a-collection.wren
index 3b66e3b3b6..395694ccdf 100644
--- a/Task/Factorial-base-numbers-indexing-permutations-of-a-collection/Wren/factorial-base-numbers-indexing-permutations-of-a-collection.wren
+++ b/Task/Factorial-base-numbers-indexing-permutations-of-a-collection/Wren/factorial-base-numbers-indexing-permutations-of-a-collection.wren
@@ -1,6 +1,6 @@
 import "random" for Random
-import "/math" for Int
-import "/fmt" for Fmt
+import "./math" for Int
+import "./fmt" for Fmt
 
 var genFactBaseNums = Fn.new { |size, countOnly|
     var results = []
diff --git a/Task/Factorial-primes/C++/factorial-primes.cpp b/Task/Factorial-primes/C++/factorial-primes.cpp
index 5d7fc43aa3..97ee8ec66d 100644
--- a/Task/Factorial-primes/C++/factorial-primes.cpp
+++ b/Task/Factorial-primes/C++/factorial-primes.cpp
@@ -5,11 +5,11 @@
 
 using big_int = mpz_class;
 
-std::string to_string(const big_int& num, size_t n) {
+std::string to_string(const big_int& num, size_t max_digits) {
     std::string str = num.get_str();
     size_t len = str.size();
-    if (len > n) {
-        str = str.substr(0, n / 2) + "..." + str.substr(len - n / 2);
+    if (len > max_digits) {
+        str.replace(max_digits / 2, len - max_digits, "...");
         str += " (";
         str += std::to_string(len);
         str += " digits)";
diff --git a/Task/Factorial-primes/EasyLang/factorial-primes.easy b/Task/Factorial-primes/EasyLang/factorial-primes.easy
new file mode 100644
index 0000000000..b12ef97ac5
--- /dev/null
+++ b/Task/Factorial-primes/EasyLang/factorial-primes.easy
@@ -0,0 +1,26 @@
+func isprim num .
+   if num < 2
+      return 0
+   .
+   i = 2
+   while i <= sqrt num
+      if num mod i = 0
+         return 0
+      .
+      i += 1
+   .
+   return 1
+.
+f = 1
+while count < 10
+   n += 1
+   f *= n
+   op$ = "-"
+   for fp in [ f - 1 f + 1 ]
+      if isprim fp = 1
+         count += 1
+         print n & "! " & op$ & " 1 = " & fp
+      .
+      op$ = "+"
+   .
+.
diff --git a/Task/Factorial-primes/Lua/factorial-primes.lua b/Task/Factorial-primes/Lua/factorial-primes.lua
index 3720b9e0cb..8c17ccd8e5 100644
--- a/Task/Factorial-primes/Lua/factorial-primes.lua
+++ b/Task/Factorial-primes/Lua/factorial-primes.lua
@@ -10,7 +10,7 @@ do -- find some factorial primes - primes that are f - 1 or f + 1
             local rootP = math.floor( math.sqrt( p ) )
             while i <= rootP and prime do
                 prime = p % i ~= 0
-                i     = i + 1
+                i     = i + 2
             end
             return prime
         end
diff --git a/Task/Factorial-primes/PureBasic/factorial-primes.basic b/Task/Factorial-primes/PureBasic/factorial-primes.basic
new file mode 100644
index 0000000000..37ad8b8d2f
--- /dev/null
+++ b/Task/Factorial-primes/PureBasic/factorial-primes.basic
@@ -0,0 +1,24 @@
+;XIncludeFile "isprime.pb"
+;XIncludeFile "factorial.pb"
+
+If OpenConsole()
+  PrintN("First 10 factorial primes:")
+  Define found.i = 0, i,i = 1, fct.i
+
+  While found < 10
+    fct = factorial (i)
+
+    If isprime(fct-1)
+      found + 1
+      PrintN(RSet(Str(found),2) + ": " + RSet(Str(i),2) + "! - 1 = " + Str(fct-1))
+    EndIf
+    If isprime(fct+1)
+      found + 1
+      PrintN(RSet(Str(found),2) + ": " + RSet(Str(i),2) + "! + 1 = " + Str(fct+1))
+    EndIf
+    i + 1
+  Wend
+
+  PrintN(#CRLF$ + "--- terminado, pulsa RETURN---"): Input()
+  CloseConsole()
+EndIf
diff --git a/Task/Factorial/Nu/factorial.nu b/Task/Factorial/Nu/factorial.nu
new file mode 100644
index 0000000000..6250a46215
--- /dev/null
+++ b/Task/Factorial/Nu/factorial.nu
@@ -0,0 +1,3 @@
+def 'math factorial' [] {[$in 1] | math max | 1..$in | math product}
+
+..10 | each {math factorial}
diff --git a/Task/Factorial/Uxntal/factorial.uxnatl b/Task/Factorial/Uxntal/factorial.uxnatl
new file mode 100644
index 0000000000..6ce1360a76
--- /dev/null
+++ b/Task/Factorial/Uxntal/factorial.uxnatl
@@ -0,0 +1,4 @@
+@factorial ( n* -: fact* )
+    ORAk ?{ POP2 #0001 JMP2r }
+    DUP2 #0001 SUB2 factorial MUL2
+JMP2r
diff --git a/Task/Factorial/Wren/factorial.wren b/Task/Factorial/Wren/factorial.wren
index a534b7f4e0..e954eb7b03 100644
--- a/Task/Factorial/Wren/factorial.wren
+++ b/Task/Factorial/Wren/factorial.wren
@@ -1,5 +1,5 @@
-import "/fmt" for Fmt
-import "/big" for BigInt
+import "./fmt" for Fmt
+import "./big" for BigInt
 
 class Factorial {
     static iterative(n) {
diff --git a/Task/Factorial/YAMLScript/factorial.ys b/Task/Factorial/YAMLScript/factorial.ys
index 6e65fa56ae..d8cd3215ed 100644
--- a/Task/Factorial/YAMLScript/factorial.ys
+++ b/Task/Factorial/YAMLScript/factorial.ys
@@ -1,4 +1,6 @@
-defn factorial(x):
-  apply(*): (2 .. x)
+!yamlscript/v0
 
-say: factorial(10)
+defn factorial(x):
+  apply *: 2..x
+
+say: factorial(20)
diff --git a/Task/Factors-of-a-Mersenne-number/Wren/factors-of-a-mersenne-number.wren b/Task/Factors-of-a-Mersenne-number/Wren/factors-of-a-mersenne-number.wren
index bd61f404e6..ffd198a930 100644
--- a/Task/Factors-of-a-Mersenne-number/Wren/factors-of-a-mersenne-number.wren
+++ b/Task/Factors-of-a-Mersenne-number/Wren/factors-of-a-mersenne-number.wren
@@ -1,5 +1,5 @@
-import "/math" for Int
-import "/fmt" for Conv, Fmt
+import "./math" for Int
+import "./fmt" for Conv, Fmt
 
 var trialFactor = Fn.new { |base, exp, mod|
     var square = 1
diff --git a/Task/Factors-of-an-integer/Gambas/factors-of-an-integer.gambas b/Task/Factors-of-an-integer/Gambas/factors-of-an-integer.gambas
new file mode 100644
index 0000000000..6887e35cae
--- /dev/null
+++ b/Task/Factors-of-an-integer/Gambas/factors-of-an-integer.gambas
@@ -0,0 +1,21 @@
+Public Sub Main()
+
+  printFactors(11)
+  printFactors(21)
+  printFactors(32)
+  printFactors(45)
+  printFactors(67)
+  printFactors(96)
+
+End
+
+Sub printFactors(n As Integer)
+
+  If n < 1 Then Return
+  Print n; " =>";
+  For i As Integer = 1 To n / 2
+    If n Mod i = 0 Then Print i; " ";
+  Next
+  Print n
+
+End Sub
diff --git a/Task/Factors-of-an-integer/Icon/factors-of-an-integer.icon b/Task/Factors-of-an-integer/Icon/factors-of-an-integer-1.icon
similarity index 100%
rename from Task/Factors-of-an-integer/Icon/factors-of-an-integer.icon
rename to Task/Factors-of-an-integer/Icon/factors-of-an-integer-1.icon
diff --git a/Task/Factors-of-an-integer/Icon/factors-of-an-integer-2.icon b/Task/Factors-of-an-integer/Icon/factors-of-an-integer-2.icon
new file mode 100644
index 0000000000..66cd992698
--- /dev/null
+++ b/Task/Factors-of-an-integer/Icon/factors-of-an-integer-2.icon
@@ -0,0 +1,4 @@
+(function factors n
+  (filter (div? n) (range 1 (inc n))))
+
+(factors 45)
diff --git a/Task/Factors-of-an-integer/MSX-Basic/factors-of-an-integer.basic b/Task/Factors-of-an-integer/MSX-Basic/factors-of-an-integer.basic
index 107f65e8ba..57949057db 100644
--- a/Task/Factors-of-an-integer/MSX-Basic/factors-of-an-integer.basic
+++ b/Task/Factors-of-an-integer/MSX-Basic/factors-of-an-integer.basic
@@ -1,5 +1,5 @@
 10 INPUT "Enter an integer: "; N
-20 IF N = 0 THEN GOTO 15
+20 IF N = 0 THEN GOTO 10
 30 N1 = ABS(N)
 40 FOR I = 1 TO N1/2
 50  IF N1 MOD I = 0 THEN PRINT I;
diff --git a/Task/Factors-of-an-integer/Quackery/factors-of-an-integer.quackery b/Task/Factors-of-an-integer/Quackery/factors-of-an-integer.quackery
index 82e9ede02d..eca2a07427 100644
--- a/Task/Factors-of-an-integer/Quackery/factors-of-an-integer.quackery
+++ b/Task/Factors-of-an-integer/Quackery/factors-of-an-integer.quackery
@@ -1,5 +1,5 @@
   [ [] swap
-    dup sqrt 0 = dip
+    dup sqrt+ 0 = dip
       [ times
         [ dup i^ 1+ /mod iff
             drop done
diff --git a/Task/Factors-of-an-integer/Run-BASIC/factors-of-an-integer.basic b/Task/Factors-of-an-integer/Run-BASIC/factors-of-an-integer.basic
index 9bf612184d..201672eec7 100644
--- a/Task/Factors-of-an-integer/Run-BASIC/factors-of-an-integer.basic
+++ b/Task/Factors-of-an-integer/Run-BASIC/factors-of-an-integer.basic
@@ -2,7 +2,7 @@ PRINT "Factors of 45 are ";factorlist$(45)
 PRINT "Factors of 12345 are "; factorlist$(12345)
 END
 
-function factorlist$(f)
+FUNCTION factorlist$(f)
 DIM L(100)
 FOR i = 1 TO SQR(f)
   IF (f MOD i) = 0 THEN
@@ -15,18 +15,18 @@ FOR i = 1 TO SQR(f)
   END IF
 NEXT i
 s = 1
-while s = 1
+WHILE s = 1
 s = 0
-for i = 0 to c-1
- if L(i) > L(i+1) and L(i+1) <> 0 then
+FOR i = 0 TO c-1
+ IF L(i) > L(i+1) AND L(i+1) <> 0 THEN
   t = L(i)
   L(i) = L(i+1)
   L(i+1) = t
   s      = 1
- end if
-next i
-wend
+ END IF
+NEXT i
+WEND
 FOR i = 0 TO c-1
   factorlist$ = factorlist$ + STR$(L(i)) + ", "
 NEXT
-end function
+END FUNCTION
diff --git a/Task/Factors-of-an-integer/True-BASIC/factors-of-an-integer.basic b/Task/Factors-of-an-integer/True-BASIC/factors-of-an-integer.basic
index a2f01a908b..ed38bdaa61 100644
--- a/Task/Factors-of-an-integer/True-BASIC/factors-of-an-integer.basic
+++ b/Task/Factors-of-an-integer/True-BASIC/factors-of-an-integer.basic
@@ -1,17 +1,16 @@
-sub printfactors(n)
-    if n < 1 then exit sub
-    print n; "=>";
-    for i = 1 to n / 2
-        if remainder(n, i) = 0 then print i;
-    next i
-    print n
-end sub
+SUB printfactors(n)
+    IF n < 1 THEN EXIT SUB
+    PRINT n; "=>";
+    FOR i = 1 TO n / 2
+        IF REMAINDER(n, i) = 0 THEN PRINT i;
+    NEXT i
+    PRINT n
+END SUB
 
-call printfactors(11)
-call printfactors(21)
-call printfactors(32)
-call printfactors(45)
-call printfactors(67)
-call printfactors(96)
-print
-end
+CALL printfactors(11)
+CALL printfactors(21)
+CALL printfactors(32)
+CALL printfactors(45)
+CALL printfactors(67)
+CALL printfactors(96)
+END
diff --git a/Task/Factors-of-an-integer/Wren/factors-of-an-integer.wren b/Task/Factors-of-an-integer/Wren/factors-of-an-integer.wren
index 3cd92e5fb0..cd182c9955 100644
--- a/Task/Factors-of-an-integer/Wren/factors-of-an-integer.wren
+++ b/Task/Factors-of-an-integer/Wren/factors-of-an-integer.wren
@@ -1,6 +1,6 @@
-import "/fmt" for Fmt
-import "/math" for Int
+import "./fmt" for Fmt
+import "./math" for Int
 
 var a = [11, 21, 32, 45, 67, 96, 159, 723, 1024, 5673, 12345, 32767, 123459, 999997]
 System.print("The factors of the following numbers are:")
-for (e in a) System.print("%(Fmt.d(6, e)) => %(Int.divisors(e))")
+for (e in a) Fmt.print("$6d => $n", e, Int.divisors(e))
diff --git a/Task/Factors-of-an-integer/XBasic/factors-of-an-integer.basic b/Task/Factors-of-an-integer/XBasic/factors-of-an-integer.basic
new file mode 100644
index 0000000000..c5f0f44b28
--- /dev/null
+++ b/Task/Factors-of-an-integer/XBasic/factors-of-an-integer.basic
@@ -0,0 +1,23 @@
+PROGRAM  "Factors of an integer"
+VERSION  "0.0000"
+
+DECLARE FUNCTION  Entry ()
+DECLARE FUNCTION printFactors (n)
+
+FUNCTION  Entry ()
+     printFactors(11)
+     printFactors(21)
+     printFactors(32)
+     printFactors(45)
+     printFactors(67)
+     printFactors(96)
+END FUNCTION
+
+FUNCTION printFactors (n)
+    PRINT n; " =>";
+    FOR i = 1 TO n / 2
+        IF n MOD i = 0 THEN PRINT i; " ";
+    NEXT i
+    PRINT n
+END FUNCTION
+END PROGRAM
diff --git a/Task/Factors-of-an-integer/Yabasic/factors-of-an-integer.basic b/Task/Factors-of-an-integer/Yabasic/factors-of-an-integer.basic
index 6ac4c75cca..9205265807 100644
--- a/Task/Factors-of-an-integer/Yabasic/factors-of-an-integer.basic
+++ b/Task/Factors-of-an-integer/Yabasic/factors-of-an-integer.basic
@@ -1,8 +1,8 @@
 sub printFactors(n)
-    if n < 1 then return 0 : fi
-    print n, " =>",
+    if n < 1  return 0
+    print n, " =>";
     for i = 1 to n / 2
-        if mod(n, i) = 0 then print i, "  "; : fi
+        if mod(n, i) = 0  print i, "  ";
     next i
     print n
 end sub
diff --git a/Task/Fairshare-between-two-and-more/Wren/fairshare-between-two-and-more.wren b/Task/Fairshare-between-two-and-more/Wren/fairshare-between-two-and-more.wren
index d3ad4222d4..88347ee4b1 100644
--- a/Task/Fairshare-between-two-and-more/Wren/fairshare-between-two-and-more.wren
+++ b/Task/Fairshare-between-two-and-more/Wren/fairshare-between-two-and-more.wren
@@ -1,5 +1,5 @@
-import "/fmt" for Fmt
-import "/sort" for Sort
+import "./fmt" for Fmt
+import "./sort" for Sort
 
 var fairshare = Fn.new { |n, base|
     var res = List.filled(n, 0)
diff --git a/Task/Farey-sequence/Wren/farey-sequence.wren b/Task/Farey-sequence/Wren/farey-sequence.wren
index 2d5d70ed7b..ca848712b5 100644
--- a/Task/Farey-sequence/Wren/farey-sequence.wren
+++ b/Task/Farey-sequence/Wren/farey-sequence.wren
@@ -1,7 +1,7 @@
-import "/math" for Int
-import "/iterate" for Stepped
-import "/fmt" for Fmt
-import "/rat" for Rat
+import "./math" for Int
+import "./iterate" for Stepped
+import "./fmt" for Fmt
+import "./rat" for Rat
 
 var f //recursive
 f = Fn.new { |l, r, n|
diff --git a/Task/Fast-Fourier-transform/Wren/fast-fourier-transform.wren b/Task/Fast-Fourier-transform/Wren/fast-fourier-transform.wren
index 814f2a00e9..3ecb5d87e7 100644
--- a/Task/Fast-Fourier-transform/Wren/fast-fourier-transform.wren
+++ b/Task/Fast-Fourier-transform/Wren/fast-fourier-transform.wren
@@ -1,5 +1,5 @@
-import "/complex" for Complex
-import "/fmt" for Fmt
+import "./complex" for Complex
+import "./fmt" for Fmt
 
 var ditfft2 // recursive
 ditfft2 = Fn.new {|x, y, n, s|
diff --git a/Task/Faulhabers-formula/Wren/faulhabers-formula.wren b/Task/Faulhabers-formula/Wren/faulhabers-formula.wren
index c9554fbece..a0de9a4dbf 100644
--- a/Task/Faulhabers-formula/Wren/faulhabers-formula.wren
+++ b/Task/Faulhabers-formula/Wren/faulhabers-formula.wren
@@ -1,5 +1,5 @@
-import "/math" for Int
-import "/rat" for Rat
+import "./math" for Int
+import "./rat" for Rat
 
 var bernoulli = Fn.new { |n|
     if (n < 0) Fiber.abort("Argument must be non-negative")
diff --git a/Task/Faulhabers-triangle/Wren/faulhabers-triangle.wren b/Task/Faulhabers-triangle/Wren/faulhabers-triangle.wren
index 5abdbbb562..50540975b0 100644
--- a/Task/Faulhabers-triangle/Wren/faulhabers-triangle.wren
+++ b/Task/Faulhabers-triangle/Wren/faulhabers-triangle.wren
@@ -1,6 +1,6 @@
-import "/fmt" for Fmt
-import "/math" for Int
-import "/big" for BigRat
+import "./fmt" for Fmt
+import "./math" for Int
+import "./big" for BigRat
 
 var bernoulli = Fn.new { |n|
     if (n < 0) Fiber.abort("Argument must be non-negative")
diff --git a/Task/Feigenbaum-constant-calculation/EasyLang/feigenbaum-constant-calculation.easy b/Task/Feigenbaum-constant-calculation/EasyLang/feigenbaum-constant-calculation.easy
new file mode 100644
index 0000000000..3b826f30aa
--- /dev/null
+++ b/Task/Feigenbaum-constant-calculation/EasyLang/feigenbaum-constant-calculation.easy
@@ -0,0 +1,18 @@
+numfmt 6 0
+a1 = 1 ; a2 = 0 ; d1 = 3.2
+ipow2 = 4
+for i = 2 to 13
+   a = a1 + (a1 - a2) / d1
+   for j = 1 to 10
+      x = 0 ; y = 0
+      for k = 1 to ipow2
+         y = 1 - 2 * y * x
+         x = a - x * x
+      .
+      a -= x / y
+   .
+   d = (a1 - a2) / (a - a1)
+   print i & " " & d
+   d1 = d ; a2 = a1 ; a1 = a
+   ipow2 *= 2
+.
diff --git a/Task/Feigenbaum-constant-calculation/Wren/feigenbaum-constant-calculation.wren b/Task/Feigenbaum-constant-calculation/Wren/feigenbaum-constant-calculation.wren
index 27775002ef..4e501ad8a6 100644
--- a/Task/Feigenbaum-constant-calculation/Wren/feigenbaum-constant-calculation.wren
+++ b/Task/Feigenbaum-constant-calculation/Wren/feigenbaum-constant-calculation.wren
@@ -1,4 +1,4 @@
-import "/fmt" for Fmt
+import "./fmt" for Fmt
 
 var feigenbaum = Fn.new {
     var maxIt = 13
diff --git a/Task/Fermat-numbers/Wren/fermat-numbers-1.wren b/Task/Fermat-numbers/Wren/fermat-numbers-1.wren
index d761a8c023..2b424e915e 100644
--- a/Task/Fermat-numbers/Wren/fermat-numbers-1.wren
+++ b/Task/Fermat-numbers/Wren/fermat-numbers-1.wren
@@ -1,4 +1,4 @@
-import "/big" for BigInt
+import "./big" for BigInt
 
 var fermat = Fn.new { |n| BigInt.two.pow(2.pow(n)) + 1 }
 
diff --git a/Task/Fermat-numbers/Wren/fermat-numbers-2.wren b/Task/Fermat-numbers/Wren/fermat-numbers-2.wren
index ed446bcdc9..9380705c96 100644
--- a/Task/Fermat-numbers/Wren/fermat-numbers-2.wren
+++ b/Task/Fermat-numbers/Wren/fermat-numbers-2.wren
@@ -1,4 +1,4 @@
-/* fermat_numbers_gmp.wren */
+/* fermat_numbers_2.wren */
 
 import "./gmp" for Mpz
 import "./ecm" for Ecm
diff --git a/Task/Fibonacci-n-step-number-sequences/Wren/fibonacci-n-step-number-sequences.wren b/Task/Fibonacci-n-step-number-sequences/Wren/fibonacci-n-step-number-sequences.wren
index 6f1fb5260f..6f0f5acfec 100644
--- a/Task/Fibonacci-n-step-number-sequences/Wren/fibonacci-n-step-number-sequences.wren
+++ b/Task/Fibonacci-n-step-number-sequences/Wren/fibonacci-n-step-number-sequences.wren
@@ -1,4 +1,4 @@
-import "/fmt" for Fmt
+import "./fmt" for Fmt
 
 var fibN = Fn.new { |initial, numTerms|
     var n = initial.count
diff --git a/Task/Fibonacci-sequence/BootBASIC/fibonacci-sequence.basic b/Task/Fibonacci-sequence/BootBASIC/fibonacci-sequence.basic
new file mode 100644
index 0000000000..0e3ee6d469
--- /dev/null
+++ b/Task/Fibonacci-sequence/BootBASIC/fibonacci-sequence.basic
@@ -0,0 +1,21 @@
+10 print "Enter a ";
+20 print "number ";
+30 print "greater ";
+40 print "than 1";
+50 print " and less";
+60 print " than 25";
+70 input z
+80 b=1
+90 a=0
+100 n=2
+110 f=a+b
+120 a=b
+130 b=f
+140 n=n+1
+150 if n-z-1 goto 110
+160 print "The ";
+170 print z ;
+180 print "th ";
+190 print "Fibonacci ";
+200 print "Number is ";
+210 print f
diff --git a/Task/Fibonacci-sequence/J/fibonacci-sequence-1.j b/Task/Fibonacci-sequence/J/fibonacci-sequence-1.j
index 52f1c2cd0d..ab7d00174c 100644
--- a/Task/Fibonacci-sequence/J/fibonacci-sequence-1.j
+++ b/Task/Fibonacci-sequence/J/fibonacci-sequence-1.j
@@ -1 +1 @@
-   fibN=: (-&2 +&$: -&1)^:(1&<) M."0
+fibN=: (-&2 +&$: <:)^:(1&<) M."0
diff --git a/Task/Fibonacci-sequence/J/fibonacci-sequence-2.j b/Task/Fibonacci-sequence/J/fibonacci-sequence-2.j
index e37a577cec..b2528b45bb 100644
--- a/Task/Fibonacci-sequence/J/fibonacci-sequence-2.j
+++ b/Task/Fibonacci-sequence/J/fibonacci-sequence-2.j
@@ -1,4 +1 @@
-   fibN 12
-144
-   fibN  i.31
-0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040
+fibN=: [: {."1 +/\@|.@]^:[&0 1
diff --git a/Task/Fibonacci-sequence/J/fibonacci-sequence-3.j b/Task/Fibonacci-sequence/J/fibonacci-sequence-3.j
new file mode 100644
index 0000000000..e37a577cec
--- /dev/null
+++ b/Task/Fibonacci-sequence/J/fibonacci-sequence-3.j
@@ -0,0 +1,4 @@
+   fibN 12
+144
+   fibN  i.31
+0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040
diff --git a/Task/Fibonacci-sequence/Pascal/fibonacci-sequence-6.pas b/Task/Fibonacci-sequence/Pascal/fibonacci-sequence-6.pas
new file mode 100644
index 0000000000..d0a65dc81f
--- /dev/null
+++ b/Task/Fibonacci-sequence/Pascal/fibonacci-sequence-6.pas
@@ -0,0 +1,62 @@
+program Fibonacci_console;
+
+{$mode objfpc}{$H+}
+
+uses SysUtils;
+
+function Fibonacci( n : word) : uint64;
+{
+Starts with the pair F[0],F[1]. At each iteration, uses the doubling formulae
+to pass from F[k],F[k+1] to F[2k],F[2k+1]. If the current bit of n (starting
+from the high end) is 1, there is a further step to F[2k+1],F[2k+2].
+}
+var
+  marker, half_n : word;
+  f, g : uint64; // pair of consecutive Fibonacci numbers
+  t, u : uint64; // -----"-----
+begin
+  // The values of F[0], F[1], F[2]  are assumed to be known
+  case n of
+    0 : result := 0;
+    1, 2 : result := 1;
+    else begin
+      half_n := n shr 1;
+      marker := 1;
+      while marker <= half_n do marker := marker shl 1;
+
+      // First time: current bit is 1 by construction,
+      //   so go straight from F[0],F[1] to F[1],F[2].
+      f := 1; // = F[1]
+      g := 1; // = F[2]
+      marker := marker shr 1;
+
+      while marker > 1 do begin
+        t := f*(2*g - f);
+        u := f*f + g*g;
+        if (n and marker = 0) then begin
+          f := t;
+          g := u;
+        end
+        else begin
+          f := u;
+          g := t + u;
+        end;
+        marker := marker shr 1;
+      end;
+
+      // Last time: we need only one of the pair.
+      if (n and marker = 0) then
+        result := f*(2*g - f)
+      else
+        result := f*f + g*g;
+    end; // end else (i.e. n > 2)
+  end; // end case
+end;
+
+// Main program
+var
+  n : word;
+begin
+  for n := 0 to 93 do
+    WriteLn( SysUtils.Format( 'F[%2u] = %20u', [n, Fibonacci(n)]));
+end.
diff --git a/Task/Fibonacci-word/SETL/fibonacci-word.setl b/Task/Fibonacci-word/SETL/fibonacci-word.setl
new file mode 100644
index 0000000000..e81db4f010
--- /dev/null
+++ b/Task/Fibonacci-word/SETL/fibonacci-word.setl
@@ -0,0 +1,30 @@
+program fibonacci_words;
+    print("N    Length     Entropy");
+    print("---- ---------- -------------------");
+    loop for n in [1..37] do
+        [zeroes, ones] := fibword := fib_word n;
+        length := zeroes + ones;
+        print(lpad(str n,4) + " " + lpad(str length,10) + " " + str entropy fibword);
+    end loop;
+
+    $ Return the amount of zeroes and ones in the N'th fibonacci word
+    op fib_word(n);
+        [a0, a1, b0, b1] := [0, 1, 1, 0];
+        loop for i in [2..n] do
+            [a0, a1, b0, b1] := [b0, b1, a0+b0, a1+b1];
+        end loop;
+        return [a0, a1];
+    end op;
+
+    op entropy(fibword);
+        [zeroes, ones] := fibword;
+        fzeroes := zeroes / (zeroes + ones);
+        fones := ones / (zeroes + ones);
+
+        if fzeroes = 0 or fones = 0 then
+            return 0;
+        end if;
+
+        return -fzeroes*log fzeroes/log 2 - fones*log fones/log 2;
+    end op;
+end program;
diff --git a/Task/Fibonacci-word/Wren/fibonacci-word.wren b/Task/Fibonacci-word/Wren/fibonacci-word.wren
index 2ff9bff05e..43f9ed1948 100644
--- a/Task/Fibonacci-word/Wren/fibonacci-word.wren
+++ b/Task/Fibonacci-word/Wren/fibonacci-word.wren
@@ -1,4 +1,4 @@
-import "/fmt" for Fmt
+import "./fmt" for Fmt
 
 var entropy = Fn.new { |s|
     var m = {}
diff --git a/Task/File-extension-is-in-extensions-list/Wren/file-extension-is-in-extensions-list.wren b/Task/File-extension-is-in-extensions-list/Wren/file-extension-is-in-extensions-list.wren
index 1194393d3d..046332897a 100644
--- a/Task/File-extension-is-in-extensions-list/Wren/file-extension-is-in-extensions-list.wren
+++ b/Task/File-extension-is-in-extensions-list/Wren/file-extension-is-in-extensions-list.wren
@@ -1,5 +1,5 @@
-import "/str" for Str
-import "/fmt" for Fmt
+import "./str" for Str
+import "./fmt" for Fmt
 
 var exts = ["zip", "rar", "7z", "gz", "archive", "A##", "tar.bz2"]
 
diff --git a/Task/File-input-output/Nu/file-input-output.nu b/Task/File-input-output/Nu/file-input-output.nu
new file mode 100644
index 0000000000..240e115f32
--- /dev/null
+++ b/Task/File-input-output/Nu/file-input-output.nu
@@ -0,0 +1,2 @@
+let text = open "input.txt"
+$text | save "output.txt"
diff --git a/Task/File-input-output/Rust/file-input-output-1.rust b/Task/File-input-output/Rust/file-input-output-1.rust
index 831bc1900b..c378b8919f 100644
--- a/Task/File-input-output/Rust/file-input-output-1.rust
+++ b/Task/File-input-output/Rust/file-input-output-1.rust
@@ -1,10 +1,4 @@
-use std::fs::File;
-use std::io::{Read, Write};
-
 fn main() {
-    let mut file = File::open("input.txt").unwrap();
-    let mut data = Vec::new();
-    file.read_to_end(&mut data).unwrap();
-    let mut file = File::create("output.txt").unwrap();
-    file.write_all(&data).unwrap();
+    let contents = std::fs::read("input.txt").expect("error reading input.txt");
+    std::fs::write("output.txt", contents).expect("error writing output.txt");
 }
diff --git a/Task/File-input-output/S-BASIC/file-input-output.basic b/Task/File-input-output/S-BASIC/file-input-output.basic
new file mode 100644
index 0000000000..ba53a1fb75
--- /dev/null
+++ b/Task/File-input-output/S-BASIC/file-input-output.basic
@@ -0,0 +1,37 @@
+comment
+   Preserve file channel #0 (the console) while declaring channels
+   #2 and #3 as sequential-access ASCII files.
+end
+files d, sa, sa
+var s = string:255
+based errcode = integer
+base errcode at 103H
+
+comment
+   CP/M expects upper case file names, but S-BASIC does not
+   automatically convert file name arguments to upper case, so we
+   have to do that ourself.
+end
+create "OUTPUT.TXT"
+open #1,"INPUT.TXT"
+open #2,"OUTPUT.TXT"
+
+comment
+   S-BASIC allows alphanumeric line "numbers" (which are treated simply
+   as labels) as the target of GOTO and GOSUB statements, but the first
+   character must be a digit
+end
+on error goto 9done
+
+rem - runtime error code 15 signals read past end of file
+while errcode <> 15 do
+  begin
+    input3 #1; s
+    print #2; s
+  end
+
+9done
+close #1
+close #2
+
+end
diff --git a/Task/File-input-output/Uxntal/file-input-output.uxnatl b/Task/File-input-output/Uxntal/file-input-output.uxnatl
new file mode 100644
index 0000000000..bc3cf45cb6
--- /dev/null
+++ b/Task/File-input-output/Uxntal/file-input-output.uxnatl
@@ -0,0 +1,25 @@
+|00 @System &vector $2 &expansion $2 &wst $1 &rst $1 &metadata $2 &r $2 &g $2 &b $2 &debug $1 &state $1
+|10 @Console &vector $2 &read $1 &pad $4 &type $1 &write $1 &error $1
+|a0 @File1 &vector $2 &success $2 &stat $2 &delete $1 &append $1 &name $2 &length $2 &read $2 &write $2
+|b0 @File2 &vector $2 &success $2 &stat $2 &delete $1 &append $1 &name $2 &length $2 &read $2 &write $2
+
+|0100
+    ;in-file .File1/name DEO2
+    ;out-file .File2/name DEO2
+
+    &loop
+        #0100 .File1/length DEO2k POP
+        ;buffer .File1/read DEO2
+        .File1/success DEI2
+
+        .File2/length DEO2k POP
+        ;buffer .File2/write DEO2
+
+        EQU2 ?&loop
+
+    #80 .System/state DEO
+BRK
+
+@in-file "input.txt 00
+@out-file "output.txt 00
+@buffer $100
diff --git a/Task/File-input-output/Zig/file-input-output.zig b/Task/File-input-output/Zig/file-input-output.zig
index 9023dba822..877fcc1dfb 100644
--- a/Task/File-input-output/Zig/file-input-output.zig
+++ b/Task/File-input-output/Zig/file-input-output.zig
@@ -1,16 +1,22 @@
 const std = @import("std");
 
-pub fn main() !void {
-    var in = try std.fs.cwd().openFile("input.txt", .{});
-    defer in.close();
-    var out = try std.fs.cwd().openFile("output.txt", .{ .mode = .write_only });
-    defer out.close();
-    var file_reader = in.reader();
-    var file_writer = out.writer();
-    var buf: [100]u8 = undefined;
-    var read: usize = 1;
-    while (read > 0) {
-        read = try file_reader.readAll(&buf);
-        try file_writer.writeAll(buf[0..read]);
-    }
+pub fn main() (error{OutOfMemory} || std.fs.File.OpenError || std.fs.File.ReadError || std.fs.File.WriteError)!void {
+    var gpa: std.heap.GeneralPurposeAllocator(.{}) = .{};
+    defer _ = gpa.deinit();
+    const allocator = gpa.allocator();
+
+    const cwd = std.fs.cwd();
+
+    var input_file = try cwd.openFile("input.txt", .{ .mode = .read_only });
+    defer input_file.close();
+
+    var output_file = try cwd.createFile("output.txt", .{});
+    defer output_file.close();
+
+    // Restrict input_file's size to "up to 10 MiB".
+    var input_file_content = try input_file.readToEndAlloc(allocator, 10 * 1024 * 1024);
+    defer allocator.free(input_file_content);
+
+    try output_file.writeAll(input_file_content);
+    return;
 }
diff --git a/Task/File-modification-time/Wren/file-modification-time-1.wren b/Task/File-modification-time/Wren/file-modification-time-1.wren
index 8c4ef70bde..258a23db27 100644
--- a/Task/File-modification-time/Wren/file-modification-time-1.wren
+++ b/Task/File-modification-time/Wren/file-modification-time-1.wren
@@ -1,4 +1,4 @@
-/* file_mod_time_wren */
+/* File_modification_time_wren */
 
 import "./date" for Date
 
diff --git a/Task/File-modification-time/Wren/file-modification-time-2.wren b/Task/File-modification-time/Wren/file-modification-time-2.wren
index ba45d7bf47..6c7de65d9d 100644
--- a/Task/File-modification-time/Wren/file-modification-time-2.wren
+++ b/Task/File-modification-time/Wren/file-modification-time-2.wren
@@ -1,4 +1,4 @@
-/* gcc file_mod_time.c -o file_mod_time -lwren -lm */
+/* gcc File_modification_time.c -o File_modification_time -lwren -lm */
 
 #include 
 #include 
@@ -136,7 +136,7 @@ int main(int argc, char **argv) {
     config.loadModuleFn = &loadModule;
     WrenVM* vm = wrenNewVM(&config);
     const char* module = "main";
-    const char* fileName = "file_mod_time.wren";
+    const char* fileName = "File_modification_time.wren";
     char *script = readFile(fileName);
     WrenInterpretResult result = wrenInterpret(vm, module, script);
     switch (result) {
diff --git a/Task/File-size-distribution/Wren/file-size-distribution.wren b/Task/File-size-distribution/Wren/file-size-distribution.wren
index 8ba4e2bb33..f627ab108e 100644
--- a/Task/File-size-distribution/Wren/file-size-distribution.wren
+++ b/Task/File-size-distribution/Wren/file-size-distribution.wren
@@ -1,7 +1,7 @@
 import "io" for Directory, File, Stat
 import "os" for Process
-import "/math" for Math
-import "/fmt" for Fmt
+import "./math" for Math
+import "./fmt" for Fmt
 
 var sizes = List.filled(12, 0)
 var totalSize = 0
diff --git a/Task/Filter/Sidef/filter.sidef b/Task/Filter/Sidef/filter.sidef
index 2c1b1668c8..f84d77b7f4 100644
--- a/Task/Filter/Sidef/filter.sidef
+++ b/Task/Filter/Sidef/filter.sidef
@@ -1,9 +1,9 @@
-var arr = [1,2,3,4,5];
+var arr = [1,2,3,4,5]
 
 # Creates a new array
-var new = arr.grep {|i| i %% 2};
-say new.dump;     # => [2, 4]
+var new = arr.grep {|i| i.is_even }
+say new    # => [2, 4]
 
 # Destructive (at variable level)
-arr.grep! {|i| i %% 2};
-say arr.dump;    # => [2, 4]
+arr.grep! {|i| i.is_even }
+say arr    # => [2, 4]
diff --git a/Task/Filter/V-(Vlang)/filter.v b/Task/Filter/V-(Vlang)/filter.v
index dfd0f68f32..a468918741 100644
--- a/Task/Filter/V-(Vlang)/filter.v
+++ b/Task/Filter/V-(Vlang)/filter.v
@@ -1,18 +1,18 @@
 fn reduce(mut a []int){
     mut last := 0
     for e in a {
-        if e%2==0 {
+        if e % 2 == 0 {
             a[last] = e
             last++
         }
     }
-    a = a[..last]
+    a = a[..last].clone()
 }
 fn main() {
-    mut nums := [5,4,8,2,4,6,5,6,34,12,21]
-    even := nums.filter(it%2==0)
-    println('orig: $nums')
-    println('even: $even')
+    mut nums := [5, 4, 8, 2, 4, 6, 5, 6, 34, 12, 21]
+    even := nums.filter(it % 2 == 0)
+    println('orig: ${nums}')
+    println('even: ${even}')
     reduce(mut nums)
-    println('dest: $nums')
+    println('dest: ${nums}')
 }
diff --git a/Task/Find-Chess960-starting-position-identifier/Wren/find-chess960-starting-position-identifier.wren b/Task/Find-Chess960-starting-position-identifier/Wren/find-chess960-starting-position-identifier.wren
index ad43b4ce4f..d0ce1c9ce7 100644
--- a/Task/Find-Chess960-starting-position-identifier/Wren/find-chess960-starting-position-identifier.wren
+++ b/Task/Find-Chess960-starting-position-identifier/Wren/find-chess960-starting-position-identifier.wren
@@ -1,4 +1,4 @@
-import "/iterate" for Indexed
+import "./iterate" for Indexed
 
 var glyphs  = "♜♞♝♛♚♖♘♗♕♔".toList
 var letters = "RNBQKRNBQK"
diff --git a/Task/Find-common-directory-path/OCaml/find-common-directory-path.ocaml b/Task/Find-common-directory-path/OCaml/find-common-directory-path.ocaml
index de4f8ffdc3..8505883aa1 100644
--- a/Task/Find-common-directory-path/OCaml/find-common-directory-path.ocaml
+++ b/Task/Find-common-directory-path/OCaml/find-common-directory-path.ocaml
@@ -1,27 +1,20 @@
-let rec aux acc paths =
-  if List.mem [] paths
-  then (List.rev acc) else
-  let heads = List.map List.hd paths in
-  let item = List.hd heads in
-  let all_the_same =
-    List.for_all ((=) item) (List.tl heads)
-  in
-  if all_the_same
-  then aux (item::acc) (List.map List.tl paths)
-  else (List.rev acc)
+let rec common_prefix xs ys = match xs, ys with
+  | x :: xs, y :: ys when x = y -> x :: common_prefix xs ys
+  | _ -> []
 
-let common_prefix sep = function
-  | [] -> invalid_arg "common_prefix"
-  | dirs ->
-      let paths = List.map (Str.split (Str.regexp_string sep)) dirs in
-      let res = aux [] paths in
-      (sep ^ (String.concat sep res))
+let common_prefix_all = function
+  | x :: xs -> List.fold_left common_prefix x xs
+  | _ -> []
 
-let () =
-  let dirs = [
+let common_ancestor ~sep paths =
+  List.map Str.(split_delim (regexp_string sep)) paths
+  |> common_prefix_all
+  |> String.concat sep
+
+let _ = assert begin
+  common_ancestor ~sep:"/" [
     "/home/user1/tmp/coverage/test";
     "/home/user1/tmp/covert/operator";
     "/home/user1/tmp/coven/members";
-  ] in
-  print_endline (common_prefix "/" dirs);
-;;
+  ] = "/home/user1/tmp"
+end
diff --git a/Task/Find-duplicate-files/Wren/find-duplicate-files.wren b/Task/Find-duplicate-files/Wren/find-duplicate-files.wren
index 7b7c8a7c6b..679635bda0 100644
--- a/Task/Find-duplicate-files/Wren/find-duplicate-files.wren
+++ b/Task/Find-duplicate-files/Wren/find-duplicate-files.wren
@@ -1,6 +1,6 @@
 import "io" for Directory, File, Stat
-import "/crypto" for Sha1
-import "/sort" for Sort
+import "./crypto" for Sha1
+import "./sort" for Sort
 
 var findDuplicates = Fn.new { |dir, minSize|
     if (!Directory.exists(dir)) Fiber.abort("Directory does not exist.")
diff --git a/Task/Find-if-a-point-is-within-a-triangle/D/find-if-a-point-is-within-a-triangle.d b/Task/Find-if-a-point-is-within-a-triangle/D/find-if-a-point-is-within-a-triangle.d
index 2b09659a97..24e96ceda2 100644
--- a/Task/Find-if-a-point-is-within-a-triangle/D/find-if-a-point-is-within-a-triangle.d
+++ b/Task/Find-if-a-point-is-within-a-triangle/D/find-if-a-point-is-within-a-triangle.d
@@ -1,4 +1,4 @@
-import std.algorithm; //.comparison for min and max
+import std.algorithm;
 import std.stdio;
 
 immutable EPS = 0.001;
@@ -79,7 +79,11 @@ void test(double x1, double y1, double x2, double y2, double x3, double y3, doub
 
 void main() {
     test(1.5, 2.4, 5.1, -3.1, -3.8, 1.2, 0, 0);
+	writeln;
+	
     test(1.5, 2.4, 5.1, -3.1, -3.8, 1.2, 0, 1);
+	writeln;
+	
     test(1.5, 2.4, 5.1, -3.1, -3.8, 1.2, 3, 1);
     writeln;
 
diff --git a/Task/Find-if-a-point-is-within-a-triangle/Evaldraw/find-if-a-point-is-within-a-triangle.evaldraw b/Task/Find-if-a-point-is-within-a-triangle/Evaldraw/find-if-a-point-is-within-a-triangle.evaldraw
index f76fa4ef4b..8773341633 100644
--- a/Task/Find-if-a-point-is-within-a-triangle/Evaldraw/find-if-a-point-is-within-a-triangle.evaldraw
+++ b/Task/Find-if-a-point-is-within-a-triangle/Evaldraw/find-if-a-point-is-within-a-triangle.evaldraw
@@ -3,58 +3,67 @@ struct line_t{a,b,c;};
 struct triangle_calc_t{
   vec2 origin;
   line_t lines[3];
-  vec2 vertices[3];
+  vec2 min,max;
   double area2;
   winding_dir; // +1 if clockwise (positive angle) -1 if negative.
 };
-//static vec2 dat[3] = {0,-2, -2,2, 4,0};
-static vec2 dat[3] = {-3,7, -6,-5, 2,2};
-static triangle_calc_t tri;
-enum{TRI_OUT=0, TRI_EDGE=1, TRI_INSIDE=2}
+//static vec2 vertices[3] = {0,-2, -2,2, 4,0};
+static vec2 vertices[3] = {-3,7, -6,-5, 2,2};
+enum{TRI_OUT, TRI_ZERO, TRI_EDGE, TRI_INSIDE}
+static triangle_calc_t triangle;
 (x,y,t,&r,&g,&b)
 {
-  if (numframes==0)
-  {
-     precalc_tri( tri, dat);
+  if (numframes==0) {
+    precalc_tri( triangle, vertices);
   }
-
-  d0 = d1 = d2 = 0;
-  side = isPointInsideTriangle(x,y,tri,d0,d1,d2);
-  if (side == TRI_EDGE) {
-    r=255; g=255; b=0;
-    return 1;
-  }
-  else if (side == TRI_INSIDE) {
-    if (tri.winding_dir == -1) {
-      swap(d0,d1);
+  d0 = d1 = d2 = 0; // Distances of point to lines
+  vec2 point = {x, y};
+  side = isPointInsideTriangle(point,triangle,d0,d1,d2);
+  if (side == TRI_INSIDE) {
+    if (triangle.winding_dir == -1) {
+      swap(d1,d2);
+      swap(d1,d0);
     }
-    factor = 255;
-    div = tri.winding_dir * tri.area2;
-    r = factor*( d1 / div);
-    g = factor*( d2 / div);
-    b = factor*( d0 / div);
-    return 1;
+    r_area = 1.0 / (triangle.winding_dir * triangle.area2);
+    r = 255 * r_area * d2;
+    g = 255 * r_area * d0;
+    b = 255 * r_area * d1; return 1;
   }
   r=0; g=0; b=0; return 0; // Set color to 0 if outside.
 }
 
 precalc_tri(triangle_calc_t t, vec2 verts[3]) {
+  t.area2 = triangleAreaTimes2(verts[0], verts[1], verts[2]);
+  if (t.area2 == 0) return;
+  t.winding_dir = sgn(t.area2);
   t.origin = verts[0];
+  vec2 relative_vertices[3];
+  t.min.x = 1e32;
+  t.min.y = 1e32;
+  t.max.x = -1e32;
+  t.max.y = -1e32;
   for(i=0; i<3; i++) {
-    t.vertices[i].x = verts[i].x + t.origin.x;
-    t.vertices[i].y = verts[i].y + t.origin.y;
+    t.min.x = min(t.min.x, verts[i].x);
+    t.min.y = min(t.min.y, verts[i].y);
+    t.max.x = max(t.max.x, verts[i].x);
+    t.max.y = max(t.max.y, verts[i].y);
+    relative_vertices[i].x = verts[i].x + t.origin.x;
+    relative_vertices[i].y = verts[i].y + t.origin.y;
   }
-  makeLine(t.lines[0], t.vertices[0], t.vertices[1]);
-  makeLine(t.lines[1], t.vertices[1], t.vertices[2]);
-  makeLine(t.lines[2], t.vertices[2], t.vertices[0]);
-  t.area2 = areaTriangleX2(t.vertices[0], t.vertices[1], t.vertices[2]);
-  t.winding_dir = sgn(tri.area2);
+  makeLine(t.lines[0], relative_vertices[0], relative_vertices[1]);
+  makeLine(t.lines[1], relative_vertices[1], relative_vertices[2]);
+  makeLine(t.lines[2], relative_vertices[2], relative_vertices[0]);
 }
-areaTriangleX2(vec2 a, vec2 b, vec2 c) { // Same as the determinant, but dont div by 2
-  s = c.x*(a.y-b.y)+a.x*(b.y-c.y)+b.x*(-a.y+c.y);
+triangleAreaTimes2(vec2 a, vec2 b, vec2 c) { // Same as the determinant, but dont div by 2
+  return c.x*(a.y-b.y)+a.x*(b.y-c.y)+b.x*(-a.y+c.y);
 }
-isPointInsideTriangle(x,y, triangle_calc_t t, &d0,&d1,&d2) {
-  vec2 p = {x + t.origin.x, y + t.origin.y };
+isPointInsideTriangle( vec2 point, triangle_calc_t t, &d0,&d1,&d2) {
+  if (t.area2 == 0) return TRI_ZERO;
+  if (point.x < t.min.x) return TRI_OUT;
+  if (point.y < t.min.y) return TRI_OUT;
+  if (point.x > t.max.x) return TRI_OUT;
+  if (point.y > t.max.y) return TRI_OUT;
+  vec2 p = {point.x + t.origin.x, point.y + t.origin.y };
   d0 = t.winding_dir * lineDist( t.lines[0], p.x, p.y);
   if (d0==0) { return TRI_EDGE; }else if ( sgn(d0) < 0 ) return TRI_OUT;
 
@@ -72,7 +81,5 @@ makeLine(line_t line, vec2 a, vec2 b) { // -dy,dx,axby-aybx
   line.b = (b.x - a.x);
   line.c = a.x*b.y - a.y*b.x;
 }
-lineDist(line_t line, x,y) {
-  x*line.a + y*line.b + line.c;
-}
+lineDist(line_t line, x,y) { return x*line.a + y*line.b + line.c; }
 swap(&a,&b) {tmp = a; a=b; b=tmp; }
diff --git a/Task/Find-if-a-point-is-within-a-triangle/JavaScript/find-if-a-point-is-within-a-triangle.js b/Task/Find-if-a-point-is-within-a-triangle/JavaScript/find-if-a-point-is-within-a-triangle.js
new file mode 100644
index 0000000000..2a6cf7b334
--- /dev/null
+++ b/Task/Find-if-a-point-is-within-a-triangle/JavaScript/find-if-a-point-is-within-a-triangle.js
@@ -0,0 +1,109 @@
+const EPS = 0.001;
+const EPS_SQUARE = EPS * EPS;
+
+function side(x1, y1, x2, y2, x, y) {
+	return (y2 - y1) * (x - x1) + (-x2 + x1) * (y - y1);
+}
+
+function naivePointInTriangle(x1, y1, x2, y2, x3, y3, x, y) {
+	const checkSide1 = side(x1, y1, x2, y2, x, y) >= 0;
+	const checkSide2 = side(x2, y2, x3, y3, x, y) >= 0;
+	const checkSide3 = side(x3, y3, x1, y1, x, y) >= 0;
+	return checkSide1 && checkSide2 && checkSide3;
+}
+
+function pointInTriangleBoundingBox(x1, y1, x2, y2, x3, y3, x, y) {
+	const xMin = Math.min(x1, Math.min(x2, x3)) - EPS;
+	const xMax = Math.max(x1, Math.max(x2, x3)) + EPS;
+	const yMin = Math.min(y1, Math.min(y2, y3)) - EPS;
+	const yMax = Math.max(y1, Math.max(y2, y3)) + EPS;
+	return !(x < xMin || xMax < x || y < yMin || yMax < y);
+}
+
+function distanceSquarePointToSegment(x1, y1, x2, y2, x, y) {
+	const p1_p2_squareLength = (x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1);
+	const dotProduct =
+		((x - x1) * (x2 - x1) + (y - y1) * (y2 - y1)) / p1_p2_squareLength;
+	if (dotProduct < 0) {
+		return (x - x1) * (x - x1) + (y - y1) * (y - y1);
+	} else if (dotProduct <= 1) {
+		const p_p1_squareLength = (x1 - x) * (x1 - x) + (y1 - y) * (y1 - y);
+		return p_p1_squareLength - dotProduct * dotProduct * p1_p2_squareLength;
+	} else {
+		return (x - x2) * (x - x2) + (y - y2) * (y - y2);
+	}
+}
+
+function accuratePointInTriangle(x1, y1, x2, y2, x3, y3, x, y) {
+	if (!pointInTriangleBoundingBox(x1, y1, x2, y2, x3, y3, x, y)) {
+		return false;
+	}
+	if (naivePointInTriangle(x1, y1, x2, y2, x3, y3, x, y)) {
+		return true;
+	}
+	if (distanceSquarePointToSegment(x1, y1, x2, y2, x, y) <= EPS_SQUARE) {
+		return true;
+	}
+	if (distanceSquarePointToSegment(x2, y2, x3, y3, x, y) <= EPS_SQUARE) {
+		return true;
+	}
+	if (distanceSquarePointToSegment(x3, y3, x1, y1, x, y) <= EPS_SQUARE) {
+		return true;
+	}
+	return false;
+}
+
+function printPoint(x, y) {
+	return "(" + x + ", " + y + ")";
+}
+
+function printTriangle(x1, y1, x2, y2, x3, y3) {
+	return (
+		"Triangle is [" +
+		printPoint(x1, y1) +
+		", " +
+		printPoint(x2, y2) +
+		", " +
+		printPoint(x3, y3) +
+		"]"
+	);
+}
+
+function test(x1, y1, x2, y2, x3, y3, x, y) {
+	console.log(
+		printTriangle(x1, y1, x2, y2, x3, y3) +
+		"Point " +
+		printPoint(x, y) +
+		" is within triangle? " +
+		(accuratePointInTriangle(x1, y1, x2, y2, x3, y3, x, y) ? "true" : "false")
+	);
+}
+
+test(1.5, 2.4, 5.1, -3.1, -3.8, 1.2, 0, 0);
+test(1.5, 2.4, 5.1, -3.1, -3.8, 1.2, 0, 1);
+test(1.5, 2.4, 5.1, -3.1, -3.8, 1.2, 3, 1);
+console.log();
+
+test(
+	0.1,
+	0.1111111111111111,
+	12.5,
+	33.333333333333336,
+	25,
+	11.11111111111111,
+	5.414285714285714,
+	14.349206349206348
+);
+console.log();
+
+test(
+	0.1,
+	0.1111111111111111,
+	12.5,
+	33.333333333333336,
+	-12.5,
+	16.666666666666668,
+	5.414285714285714,
+	14.349206349206348
+);
+console.log();
diff --git a/Task/Find-if-a-point-is-within-a-triangle/Rust/find-if-a-point-is-within-a-triangle.rust b/Task/Find-if-a-point-is-within-a-triangle/Rust/find-if-a-point-is-within-a-triangle.rust
new file mode 100644
index 0000000000..e4d0bea3de
--- /dev/null
+++ b/Task/Find-if-a-point-is-within-a-triangle/Rust/find-if-a-point-is-within-a-triangle.rust
@@ -0,0 +1,92 @@
+const EPS: f64 = 0.001;
+const EPS_SQUARE: f64 = EPS * EPS;
+
+fn side(x1: f64, y1: f64, x2: f64, y2: f64, x: f64, y: f64) -> f64 {
+    (y2 - y1) * (x - x1) + (-x2 + x1) * (y - y1)
+}
+
+fn naive_point_in_triangle(x1: f64, y1: f64, x2: f64, y2: f64, x3: f64, y3: f64, x: f64, y: f64) -> bool {
+    let check_side1 = side(x1, y1, x2, y2, x, y) >= 0.0;
+    let check_side2 = side(x2, y2, x3, y3, x, y) >= 0.0;
+    let check_side3 = side(x3, y3, x1, y1, x, y) >= 0.0;
+    check_side1 && check_side2 && check_side3
+}
+
+fn point_in_triangle_bounding_box(x1: f64, y1: f64, x2: f64, y2: f64, x3: f64, y3: f64, x: f64, y: f64) -> bool {
+    let x_min = f64::min(x1, f64::min(x2, x3)) - EPS;
+    let x_max = f64::max(x1, f64::max(x2, x3)) + EPS;
+    let y_min = f64::min(y1, f64::min(y2, y3)) - EPS;
+    let y_max = f64::max(y1, f64::max(y2, y3)) + EPS;
+    !(x < x_min || x_max < x || y < y_min || y_max < y)
+}
+
+fn distance_square_point_to_segment(x1: f64, y1: f64, x2: f64, y2: f64, x: f64, y: f64) -> f64 {
+    let p1_p2_square_length = (x2 - x1).powi(2) + (y2 - y1).powi(2);
+    let dot_product = ((x - x1) * (x2 - x1) + (y - y1) * (y2 - y1)) / p1_p2_square_length;
+    if dot_product < 0.0 {
+        (x - x1).powi(2) + (y - y1).powi(2)
+    } else if dot_product <= 1.0 {
+        let p_p1_square_length = (x1 - x).powi(2) + (y1 - y).powi(2);
+        p_p1_square_length - dot_product.powi(2) * p1_p2_square_length
+    } else {
+        (x - x2).powi(2) + (y - y2).powi(2)
+    }
+}
+
+fn accurate_point_in_triangle(x1: f64, y1: f64, x2: f64, y2: f64, x3: f64, y3: f64, x: f64, y: f64) -> bool {
+    if !point_in_triangle_bounding_box(x1, y1, x2, y2, x3, y3, x, y) {
+        return false;
+    }
+    if naive_point_in_triangle(x1, y1, x2, y2, x3, y3, x, y) {
+        return true;
+    }
+    if distance_square_point_to_segment(x1, y1, x2, y2, x, y) <= EPS_SQUARE {
+        return true;
+    }
+    if distance_square_point_to_segment(x2, y2, x3, y3, x, y) <= EPS_SQUARE {
+        return true;
+    }
+    if distance_square_point_to_segment(x3, y3, x1, y1, x, y) <= EPS_SQUARE {
+        return true;
+    }
+    false
+}
+
+fn print_point(x: f64, y: f64) {
+    print!("({}, {})", x, y);
+}
+
+fn print_triangle(x1: f64, y1: f64, x2: f64, y2: f64, x3: f64, y3: f64) {
+    print!("Triangle is [");
+    print_point(x1, y1);
+    print!(", ");
+    print_point(x2, y2);
+    print!(", ");
+    print_point(x3, y3);
+    println!("]");
+}
+
+fn test(x1: f64, y1: f64, x2: f64, y2: f64, x3: f64, y3: f64, x: f64, y: f64) {
+    print_triangle(x1, y1, x2, y2, x3, y3);
+    print!("Point ");
+    print_point(x, y);
+    print!(" is within triangle? ");
+    println!("{}", accurate_point_in_triangle(x1, y1, x2, y2, x3, y3, x, y));
+}
+
+fn main() {
+    test(1.5, 2.4, 5.1, -3.1, -3.8, 1.2, 0.0, 0.0);
+    println!();
+
+    test(1.5, 2.4, 5.1, -3.1, -3.8, 1.2, 0.0, 1.0);
+    println!();
+
+    test(1.5, 2.4, 5.1, -3.1, -3.8, 1.2, 3.0, 1.0);
+    println!();
+
+    test(0.1, 0.1111111111111111, 12.5, 33.333333333333336, 25.0, 11.11111111111111, 5.414285714285714, 14.349206349206348);
+    println!();
+
+    test(0.1, 0.1111111111111111, 12.5, 33.333333333333336, -12.5, 16.666666666666668, 5.414285714285714, 14.349206349206348);
+    println!();
+}
diff --git a/Task/Find-largest-left-truncatable-prime-in-a-given-base/Wren/find-largest-left-truncatable-prime-in-a-given-base.wren b/Task/Find-largest-left-truncatable-prime-in-a-given-base/Wren/find-largest-left-truncatable-prime-in-a-given-base.wren
index 2e885862a9..78129703db 100644
--- a/Task/Find-largest-left-truncatable-prime-in-a-given-base/Wren/find-largest-left-truncatable-prime-in-a-given-base.wren
+++ b/Task/Find-largest-left-truncatable-prime-in-a-given-base/Wren/find-largest-left-truncatable-prime-in-a-given-base.wren
@@ -1,7 +1,7 @@
-import "/big" for BigInt
-import "/fmt" for Conv, Fmt
-import "/sort" for Sort
-import "/ioutil" for Input
+import "./big" for BigInt
+import "./fmt" for Conv, Fmt
+import "./sort" for Sort
+import "./ioutil" for Input
 
 var nextLeftTruncatablePrimes = Fn.new { |n, radix, certainty|
     var probablePrimes = []
diff --git a/Task/Find-limit-of-recursion/Chipmunk-Basic/find-limit-of-recursion.basic b/Task/Find-limit-of-recursion/Chipmunk-Basic/find-limit-of-recursion.basic
new file mode 100644
index 0000000000..3f82b6ead8
--- /dev/null
+++ b/Task/Find-limit-of-recursion/Chipmunk-Basic/find-limit-of-recursion.basic
@@ -0,0 +1,6 @@
+10 sub recursion(n)
+20   print n
+30   recursion(1 + n)
+40 end sub
+50 recursion(0)
+60 end
diff --git a/Task/Find-limit-of-recursion/Gambas/find-limit-of-recursion.gambas b/Task/Find-limit-of-recursion/Gambas/find-limit-of-recursion.gambas
new file mode 100644
index 0000000000..f13d249f8c
--- /dev/null
+++ b/Task/Find-limit-of-recursion/Gambas/find-limit-of-recursion.gambas
@@ -0,0 +1,12 @@
+Public Sub Main()
+
+  Recursion(0)
+
+End
+
+Sub Recursion(n As Long)
+
+  Print n
+  Recursion(1 + n)
+
+End Sub
diff --git a/Task/Find-limit-of-recursion/Minimal-BASIC/find-limit-of-recursion.basic b/Task/Find-limit-of-recursion/Minimal-BASIC/find-limit-of-recursion.basic
new file mode 100644
index 0000000000..fc62cae148
--- /dev/null
+++ b/Task/Find-limit-of-recursion/Minimal-BASIC/find-limit-of-recursion.basic
@@ -0,0 +1,5 @@
+10 LET N = 0
+20 LET N = N + 1
+30 PRINT N
+40 GOSUB 20
+50 END
diff --git a/Task/Find-limit-of-recursion/Quite-BASIC/find-limit-of-recursion.basic b/Task/Find-limit-of-recursion/Quite-BASIC/find-limit-of-recursion.basic
new file mode 100644
index 0000000000..4b9f3f8cd6
--- /dev/null
+++ b/Task/Find-limit-of-recursion/Quite-BASIC/find-limit-of-recursion.basic
@@ -0,0 +1,4 @@
+10 LET N = 0
+20 LET N = N + 1
+30 PRINT N
+40 GOSUB 20
diff --git a/Task/Find-limit-of-recursion/Uxntal/find-limit-of-recursion.uxnatl b/Task/Find-limit-of-recursion/Uxntal/find-limit-of-recursion.uxnatl
new file mode 100644
index 0000000000..4deabd56f0
--- /dev/null
+++ b/Task/Find-limit-of-recursion/Uxntal/find-limit-of-recursion.uxnatl
@@ -0,0 +1,48 @@
+|00 @System &vector $2 &expansion $2 &wst $1 &rst $1 &metadata $2 &r $2 &g $2 &b $2 &debug $1 &state $1
+|10 @Console &vector $2 &read $1 &pad $4 &type $1 &write $1 &error $1
+
+|00 @calls $1
+
+|0100
+    #01
+    &loop
+        DUP .calls STZ
+        recurse
+        INC !&loop
+
+@recurse
+    ( keep calling recurse until stack value is 00 )
+    #01 SUB DUP #00 EQU ?&done
+
+    recurse
+
+    ( as we walk back up the stack, increment counter )
+    &done INC
+
+    ( if we go above the original call count, the stack was corrupted )
+    DUP .calls LDZ GTH ?&fail
+JMP2r
+
+&fail
+    ;msg1 print-str
+    .calls LDZ print-hex
+    ;msg2 print-str
+    #80 .System/state DEO BRK
+
+@print-str
+    &loop
+        LDAk .Console/write DEO
+        INC2 LDAk ?&loop
+    POP2
+JMP2r
+
+@print-hex
+    DUP #04 SFT print-digit #0f AND print-digit
+JMP2r
+
+@print-digit
+    DUP #09 GTH #27 MUL ADD #30 ADD .Console/write DEO
+JMP2r
+
+@msg1 "Stack 20 "overflow 20 "at 20 "# 00
+@msg2 20 "calls. 0a00
diff --git a/Task/Find-limit-of-recursion/Wren/find-limit-of-recursion.wren b/Task/Find-limit-of-recursion/Wren/find-limit-of-recursion.wren
index 63b3435244..444d4bb76d 100644
--- a/Task/Find-limit-of-recursion/Wren/find-limit-of-recursion.wren
+++ b/Task/Find-limit-of-recursion/Wren/find-limit-of-recursion.wren
@@ -1,7 +1,5 @@
-var f
-f = Fn.new { |n|
+var F = Fn.new { |n|
     if (n%500 == 0) System.print(n)  // print progress after every 500 calls
-    System.write("") // required to fix a VM recursion bug
-    f.call(n + 1)
+    F.call(n + 1)
 }
-f.call(1)
+F.call(1)
diff --git a/Task/Find-limit-of-recursion/XPL0/find-limit-of-recursion.xpl0 b/Task/Find-limit-of-recursion/XPL0/find-limit-of-recursion.xpl0
new file mode 100644
index 0000000000..546fc0eacc
--- /dev/null
+++ b/Task/Find-limit-of-recursion/XPL0/find-limit-of-recursion.xpl0
@@ -0,0 +1,11 @@
+int Lev;
+proc Recurse;
+[if (Lev & $3FF) = 0 then
+    [IntOut(0, Lev);  ChOut(0, ^ )];
+Lev:= Lev+1;
+Recurse;
+];
+
+[Lev:= 0;
+Recurse;
+]
diff --git a/Task/Find-limit-of-recursion/Zig/find-limit-of-recursion-1.zig b/Task/Find-limit-of-recursion/Zig/find-limit-of-recursion-1.zig
new file mode 100644
index 0000000000..117b27a95c
--- /dev/null
+++ b/Task/Find-limit-of-recursion/Zig/find-limit-of-recursion-1.zig
@@ -0,0 +1,14 @@
+const std = @import("std");
+
+fn recurse(i: c_uint) void {
+    std.debug.print("{d}\n", .{i});
+    // We use wrapping addition operator here to mirror C behaviour.
+    recurse(i +% 1);
+    // Line above is equivalent to:
+    // @call(.auto, recurse, .{i +% 1});
+}
+
+pub fn main() void {
+    recurse(0);
+    return;
+}
diff --git a/Task/Find-limit-of-recursion/Zig/find-limit-of-recursion-2.zig b/Task/Find-limit-of-recursion/Zig/find-limit-of-recursion-2.zig
new file mode 100644
index 0000000000..b7775315d1
--- /dev/null
+++ b/Task/Find-limit-of-recursion/Zig/find-limit-of-recursion-2.zig
@@ -0,0 +1,12 @@
+const std = @import("std");
+
+fn recurse(i: c_uint) void {
+    std.debug.print("{d}\n", .{i});
+    // We use wrapping addition operator here to mirror C behaviour.
+    @call(.never_tail, recurse, .{i +% 1});
+}
+
+pub fn main() void {
+    recurse(0);
+    return;
+}
diff --git a/Task/Find-limit-of-recursion/Zig/find-limit-of-recursion-3.zig b/Task/Find-limit-of-recursion/Zig/find-limit-of-recursion-3.zig
new file mode 100644
index 0000000000..07db56510a
--- /dev/null
+++ b/Task/Find-limit-of-recursion/Zig/find-limit-of-recursion-3.zig
@@ -0,0 +1,12 @@
+const std = @import("std");
+
+fn recurse(i: c_uint) void {
+    std.debug.print("{d}\n", .{i});
+    // We use wrapping addition operator here to mirror C behaviour.
+    @call(.always_tail, recurse, .{i +% 1});
+}
+
+pub fn main() void {
+    recurse(0);
+    return;
+}
diff --git a/Task/Find-palindromic-numbers-in-both-binary-and-ternary-bases/Wren/find-palindromic-numbers-in-both-binary-and-ternary-bases.wren b/Task/Find-palindromic-numbers-in-both-binary-and-ternary-bases/Wren/find-palindromic-numbers-in-both-binary-and-ternary-bases.wren
index 7e5a9d51bc..b11178feeb 100644
--- a/Task/Find-palindromic-numbers-in-both-binary-and-ternary-bases/Wren/find-palindromic-numbers-in-both-binary-and-ternary-bases.wren
+++ b/Task/Find-palindromic-numbers-in-both-binary-and-ternary-bases/Wren/find-palindromic-numbers-in-both-binary-and-ternary-bases.wren
@@ -1,4 +1,4 @@
-import "/fmt" for Fmt
+import "./fmt" for Fmt
 
 var isPalindrome2 = Fn.new { |n|
     var x = 0
diff --git a/Task/Find-the-intersection-of-a-line-with-a-plane/Wren/find-the-intersection-of-a-line-with-a-plane.wren b/Task/Find-the-intersection-of-a-line-with-a-plane/Wren/find-the-intersection-of-a-line-with-a-plane.wren
index d81bd09d31..79264a7968 100644
--- a/Task/Find-the-intersection-of-a-line-with-a-plane/Wren/find-the-intersection-of-a-line-with-a-plane.wren
+++ b/Task/Find-the-intersection-of-a-line-with-a-plane/Wren/find-the-intersection-of-a-line-with-a-plane.wren
@@ -1,24 +1,4 @@
-class Vector3D {
-    construct new(x, y, z) {
-        _x = x
-        _y = y
-        _z = z
-    }
-
-    x { _x }
-    y { _y }
-    z { _z }
-
-    +(v) { Vector3D.new(_x + v.x, _y + v.y, _z + v.z) }
-
-    -(v) { Vector3D.new(_x - v.x, _y - v.y, _z - v.z) }
-
-    *(s) { Vector3D.new(s * _x, s * _y, s * _z) }
-
-    dot(v) { _x * v.x + _y * v.y + _z * v.z }
-
-    toString { "(%(_x), %(_y), %(_z))" }
-}
+import "./vector" for Vector3
 
 var intersectPoint = Fn.new { |rayVector, rayPoint, planeNormal, planePoint|
     var diff  = rayPoint - planePoint
@@ -28,9 +8,9 @@ var intersectPoint = Fn.new { |rayVector, rayPoint, planeNormal, planePoint|
     return rayPoint - rayVector*prod3
 }
 
-var rv = Vector3D.new(0, -1, -1)
-var rp = Vector3D.new(0,  0, 10)
-var pn = Vector3D.new(0,  0,  1)
-var pp = Vector3D.new(0,  0,  5)
+var rv = Vector3.new(0, -1, -1)
+var rp = Vector3.new(0,  0, 10)
+var pn = Vector3.new(0,  0,  1)
+var pp = Vector3.new(0,  0,  5)
 var ip = intersectPoint.call(rv, rp, pn, pp)
 System.print("The ray intersects the plane at %(ip).")
diff --git a/Task/Find-the-last-Sunday-of-each-month/EasyLang/find-the-last-sunday-of-each-month.easy b/Task/Find-the-last-Sunday-of-each-month/EasyLang/find-the-last-sunday-of-each-month.easy
new file mode 100644
index 0000000000..0b736f6b79
--- /dev/null
+++ b/Task/Find-the-last-Sunday-of-each-month/EasyLang/find-the-last-sunday-of-each-month.easy
@@ -0,0 +1,33 @@
+func leap year .
+   return if year mod 4 = 0 and (year mod 100 <> 0 or year mod 400 = 0)
+.
+func weekday year month day .
+   normdoom[] = [ 3 7 7 4 2 6 4 1 5 3 7 5 ]
+   c = year div 100
+   r = year mod 100
+   s = r div 12
+   t = r mod 12
+   c_anchor = (5 * (c mod 4) + 2) mod 7
+   doom = (s + t + (t div 4) + c_anchor) mod 7
+   anchor = normdoom[month]
+   if leap year = 1 and month <= 2
+      anchor = (anchor + 1) mod1 7
+   .
+   return (doom + day - anchor + 7) mod 7 + 1
+.
+mdays[] = [ 31 28 31 30 31 30 31 31 30 31 30 31 ]
+proc last_sundays year . .
+   for m to 12
+      d = mdays[m]
+      if m = 2 and leap year = 1
+         d = 29
+      .
+      d -= weekday year m d - 1
+      m$ = m
+      if m < 10
+         m$ = "0" & m
+      .
+      print year & "-" & m$ & "-" & d
+   .
+.
+last_sundays 2023
diff --git a/Task/Find-the-last-Sunday-of-each-month/FutureBasic/find-the-last-sunday-of-each-month.basic b/Task/Find-the-last-Sunday-of-each-month/FutureBasic/find-the-last-sunday-of-each-month.basic
new file mode 100644
index 0000000000..e02d8fe37c
--- /dev/null
+++ b/Task/Find-the-last-Sunday-of-each-month/FutureBasic/find-the-last-sunday-of-each-month.basic
@@ -0,0 +1,36 @@
+Long y, c, d, i
+
+void local fn sunday( m as Short, nd as Short)
+  if d > nd then d -= 7 // Don't overshoot
+  print y @"–"m @"–"d
+  d = d + 35 - nd // Advance 5 weeks minus month length
+end fn
+
+void local fn month( m as Short )
+  select m
+    case 1
+      if ( y mod 4 > 0 ) or ( y mod 100 == 0 and y mod 400 > 0 )
+        fn sunday( m, 31)
+        fn sunday( m + 1, 28)
+      else
+        d += 1 // Extra day for leap year
+        fn sunday( m, 31 )
+        fn sunday( m + 1, 29 )
+      end if
+    case 3, 5, 7, 8, 10, 12
+      fn sunday( m, 31 )
+    case 4, 6, 9, 11
+      fn sunday( m, 30 )
+  end select
+end fn
+
+y = 2024
+// Concentrate from D. Knuth: CACM 1962;5:209
+c = y / 100 + 1
+d = ( 3 * c / 4 ) - ( 5 * y / 4 )
+d = ( d mod 7 ) + 36 // A Sunday in February
+for i = 1 to 12
+  fn month( i )
+next
+
+handleevents
diff --git a/Task/Find-the-last-Sunday-of-each-month/Wren/find-the-last-sunday-of-each-month.wren b/Task/Find-the-last-Sunday-of-each-month/Wren/find-the-last-sunday-of-each-month.wren
index 0afd828f58..3d9fa0678e 100644
--- a/Task/Find-the-last-Sunday-of-each-month/Wren/find-the-last-sunday-of-each-month.wren
+++ b/Task/Find-the-last-Sunday-of-each-month/Wren/find-the-last-sunday-of-each-month.wren
@@ -1,5 +1,5 @@
 import "os" for Process
-import "/date" for Date
+import "./date" for Date
 
 var args = Process.arguments
 if (args.count != 1) {
diff --git a/Task/First-class-environments/Wren/first-class-environments.wren b/Task/First-class-environments/Wren/first-class-environments.wren
index 64a78a652e..788a8e47b1 100644
--- a/Task/First-class-environments/Wren/first-class-environments.wren
+++ b/Task/First-class-environments/Wren/first-class-environments.wren
@@ -1,4 +1,4 @@
-import "/fmt" for Fmt
+import "./fmt" for Fmt
 
 var environment = Fn.new {
     class E {
diff --git a/Task/First-class-functions-Use-numbers-analogously/Wren/first-class-functions-use-numbers-analogously.wren b/Task/First-class-functions-Use-numbers-analogously/Wren/first-class-functions-use-numbers-analogously.wren
index 50a2cf4730..d8b6d872a3 100644
--- a/Task/First-class-functions-Use-numbers-analogously/Wren/first-class-functions-use-numbers-analogously.wren
+++ b/Task/First-class-functions-Use-numbers-analogously/Wren/first-class-functions-use-numbers-analogously.wren
@@ -1,4 +1,4 @@
-import "/fmt" for Fmt
+import "./fmt" for Fmt
 
 var multiplier = Fn.new { |n1, n2| Fn.new { |m| n1 * n2 * m } }
 
diff --git a/Task/First-perfect-square-in-base-n-with-n-unique-digits/Quackery/first-perfect-square-in-base-n-with-n-unique-digits.quackery b/Task/First-perfect-square-in-base-n-with-n-unique-digits/Quackery/first-perfect-square-in-base-n-with-n-unique-digits.quackery
new file mode 100644
index 0000000000..2e62ca8c6d
--- /dev/null
+++ b/Task/First-perfect-square-in-base-n-with-n-unique-digits/Quackery/first-perfect-square-in-base-n-with-n-unique-digits.quackery
@@ -0,0 +1,33 @@
+ [ dup 1
+    [ 2dup > while
+      + 1 >>
+      2dup / again ]
+    drop nip ]            is sqrt       ( n --> n )
+
+  [ base share bit 1 -
+    0 rot
+    [ dup while
+      base share /mod bit
+      rot | swap again ]
+    drop = ]              is pandigital ( n --> b )
+
+  [ base share
+    dup 2 - times
+      [ base share *
+       i^ 2 + + ] ]       is firstpan   (   --> n )
+
+  [ dup * ]               is squared    ( n --> n )
+
+  11 times
+    [ i^ 2 + base put
+      firstpan sqrt from
+        [ index squared
+          pandigital if
+            [ index end ] ]
+      base share
+      say "Base " decimal echo
+      base release
+      say ": " dup echo
+      say "^" 2 echo say " = "
+      squared echo
+      cr base release ]
diff --git a/Task/First-perfect-square-in-base-n-with-n-unique-digits/Wren/first-perfect-square-in-base-n-with-n-unique-digits.wren b/Task/First-perfect-square-in-base-n-with-n-unique-digits/Wren/first-perfect-square-in-base-n-with-n-unique-digits.wren
index 02c6759dd3..56a0a58e8d 100644
--- a/Task/First-perfect-square-in-base-n-with-n-unique-digits/Wren/first-perfect-square-in-base-n-with-n-unique-digits.wren
+++ b/Task/First-perfect-square-in-base-n-with-n-unique-digits/Wren/first-perfect-square-in-base-n-with-n-unique-digits.wren
@@ -1,6 +1,6 @@
-import "/big" for BigInt
-import "/math" for Nums
-import "/fmt" for Conv, Fmt
+import "./big" for BigInt
+import "./math" for Nums
+import "./fmt" for Conv, Fmt
 
 var maxBase  = 21
 var minSq36  = "1023456789abcdefghijklmnopqrstuvwxyz"
diff --git a/Task/First-power-of-2-that-has-leading-decimal-digits-of-12/Wren/first-power-of-2-that-has-leading-decimal-digits-of-12.wren b/Task/First-power-of-2-that-has-leading-decimal-digits-of-12/Wren/first-power-of-2-that-has-leading-decimal-digits-of-12.wren
index 592f955704..82b91afd31 100644
--- a/Task/First-power-of-2-that-has-leading-decimal-digits-of-12/Wren/first-power-of-2-that-has-leading-decimal-digits-of-12.wren
+++ b/Task/First-power-of-2-that-has-leading-decimal-digits-of-12/Wren/first-power-of-2-that-has-leading-decimal-digits-of-12.wren
@@ -1,5 +1,5 @@
-import "/fmt" for Fmt
-import "/math" for Math
+import "./fmt" for Fmt
+import "./math" for Math
 
 var ld10 = Math.ln2 / Math.ln10
 
diff --git a/Task/Five-weekends/Wren/five-weekends.wren b/Task/Five-weekends/Wren/five-weekends.wren
index c9d39d6ad4..c861488a60 100644
--- a/Task/Five-weekends/Wren/five-weekends.wren
+++ b/Task/Five-weekends/Wren/five-weekends.wren
@@ -1,5 +1,5 @@
-import "/date" for Date
-import "/seq" for Lst
+import "./date" for Date
+import "./seq" for Lst
 
 var dates = []
 var years = []
diff --git a/Task/Fivenum/Wren/fivenum.wren b/Task/Fivenum/Wren/fivenum.wren
index 760561b2cc..678c9c90ca 100644
--- a/Task/Fivenum/Wren/fivenum.wren
+++ b/Task/Fivenum/Wren/fivenum.wren
@@ -1,4 +1,4 @@
-import "/sort" for Sort
+import "./sort" for Sort
 
 var fivenum = Fn.new { |a|
     Sort.quick(a)
diff --git a/Task/Fixed-length-records/Wren/fixed-length-records-1.wren b/Task/Fixed-length-records/Wren/fixed-length-records-1.wren
index 8204923a95..877445bd26 100644
--- a/Task/Fixed-length-records/Wren/fixed-length-records-1.wren
+++ b/Task/Fixed-length-records/Wren/fixed-length-records-1.wren
@@ -1,5 +1,5 @@
 import "io" for File
-import "/str" for Str
+import "./str" for Str
 
 var records = File.read("infile.dat")
 File.create("outfile.dat") { |f|
diff --git a/Task/Fixed-length-records/Wren/fixed-length-records-2.wren b/Task/Fixed-length-records/Wren/fixed-length-records-2.wren
index 36dcba3383..6298626b1b 100644
--- a/Task/Fixed-length-records/Wren/fixed-length-records-2.wren
+++ b/Task/Fixed-length-records/Wren/fixed-length-records-2.wren
@@ -1,5 +1,5 @@
-import "/ioutil" for File, FileUtil
-import "/str" for Str
+import "./ioutil" for File, FileUtil
+import "./str" for Str
 
 var blockToText = Fn.new { |blockFileName, textFileName|
     var block = File.read(blockFileName)
diff --git a/Task/FizzBuzz/EMal/fizzbuzz.emal b/Task/FizzBuzz/EMal/fizzbuzz.emal
new file mode 100644
index 0000000000..8f763afdf9
--- /dev/null
+++ b/Task/FizzBuzz/EMal/fizzbuzz.emal
@@ -0,0 +1,10 @@
+logic isFizz, isBuzz
+for int count = 1; count <= 100; ++count
+  isFizz = count % 3 == 0
+  isBuzz = count % 5 == 0
+  if isFizz and isBuzz do writeLine("Fizz Buzz")
+  else if isFizz do writeLine("Fizz")
+  else if isBuzz do writeLine("Buzz")
+  else do writeLine(count)
+  end
+end
diff --git a/Task/FizzBuzz/Euler/fizzbuzz.euler b/Task/FizzBuzz/Euler/fizzbuzz.euler
deleted file mode 100644
index 9ca6466bdd..0000000000
--- a/Task/FizzBuzz/Euler/fizzbuzz.euler
+++ /dev/null
@@ -1,10 +0,0 @@
-begin  new i; label iLoop;
-       i <- 0;
-iLoop: if [ i <- i + 1 ] <= 100 then begin
-          out if      i mod 15 = 0 then ( "Fizz", "Buzz" )
-              else if i mod  5 = 0 then "Buzz"
-              else if i mod  3 = 0 then "Fizz"
-              else i;
-          goto iLoop
-       end else 0
-end $
diff --git a/Task/FizzBuzz/Mathematica/fizzbuzz-6.math b/Task/FizzBuzz/Mathematica/fizzbuzz-6.math
new file mode 100644
index 0000000000..499ccea402
--- /dev/null
+++ b/Task/FizzBuzz/Mathematica/fizzbuzz-6.math
@@ -0,0 +1,7 @@
+f[n_] := f[n, Mod[n, {3, 5}]]
+f[_, {0, 0}] := "FizzBuzz"
+f[_, {0, _}] := "Fizz"
+f[_, {_, 0}] := "Buzz"
+f[n_, {_, _}] := n
+
+f /@ Range[100]
diff --git a/Task/FizzBuzz/Mathematica/fizzbuzz-7.math b/Task/FizzBuzz/Mathematica/fizzbuzz-7.math
new file mode 100644
index 0000000000..f8bf5d25ae
--- /dev/null
+++ b/Task/FizzBuzz/Mathematica/fizzbuzz-7.math
@@ -0,0 +1,9 @@
+f[n_] := f[n, Mod[n, 15]]
+f[_, 0] := "FizzBuzz"
+
+f[n_, _] := f[n, Mod[n, {3, 5}]]
+f[_, {0, _}] := "Fizz"
+f[_, {_, 0}] := "Buzz"
+f[n_, {_, _}] := n
+
+f /@ Range[100]
diff --git a/Task/FizzBuzz/Nu/fizzbuzz.nu b/Task/FizzBuzz/Nu/fizzbuzz.nu
new file mode 100644
index 0000000000..93bbf53b63
--- /dev/null
+++ b/Task/FizzBuzz/Nu/fizzbuzz.nu
@@ -0,0 +1,4 @@
+(1..100
+| each {|i| $"(if $i mod 3 == 0 {"Fizz"})(if $i mod 5 == 0 {"Buzz"})"
+| if ($in == "") {$i} else {$in}}
+| str join "\n")
diff --git a/Task/FizzBuzz/SETL/fizzbuzz.setl b/Task/FizzBuzz/SETL/fizzbuzz.setl
new file mode 100644
index 0000000000..58b8c0d94c
--- /dev/null
+++ b/Task/FizzBuzz/SETL/fizzbuzz.setl
@@ -0,0 +1,10 @@
+program fizzbuzz;
+    loop for n in [1..100] do
+        print(fizzbuzz(n));
+    end loop;
+
+    proc fizzbuzz(n);
+        divs := [[3, "Fizz"], [5, "Buzz"]];
+        return +/[w : [d,w] in divs | n mod d=0] ? str n;
+    end proc;
+end program;
diff --git a/Task/FizzBuzz/Sidef/fizzbuzz-1.sidef b/Task/FizzBuzz/Sidef/fizzbuzz-1.sidef
index e604d6c84d..6c866bf35c 100644
--- a/Task/FizzBuzz/Sidef/fizzbuzz-1.sidef
+++ b/Task/FizzBuzz/Sidef/fizzbuzz-1.sidef
@@ -6,4 +6,4 @@
     }
     elsif (i %% 5) { say "Buzz" }
     else  { say i }
-} * 100
+} << 1..100
diff --git a/Task/FizzBuzz/YAMLScript/fizzbuzz-1.ys b/Task/FizzBuzz/YAMLScript/fizzbuzz-1.ys
deleted file mode 100644
index 6f6579ef4f..0000000000
--- a/Task/FizzBuzz/YAMLScript/fizzbuzz-1.ys
+++ /dev/null
@@ -1,9 +0,0 @@
-map(say):
-  map:
-  - fn (x):
-      s =:
-        str:
-        - (zero? mod(x 3)) ?: "Fizz"
-        - (zero? mod(x 5)) ?: "Buzz"
-      if (empty? s): x, s
-  - (1 .. 100)
diff --git a/Task/FizzBuzz/YAMLScript/fizzbuzz-2.ys b/Task/FizzBuzz/YAMLScript/fizzbuzz-2.ys
deleted file mode 100644
index a17a7a0aa7..0000000000
--- a/Task/FizzBuzz/YAMLScript/fizzbuzz-2.ys
+++ /dev/null
@@ -1,9 +0,0 @@
-map(say):
-  map:
-  - fn (x):
-      ???:
-        zero?(mod(x 15)) : "FizzBuzz"
-        zero?(mod(x 5))  : "Buzz"
-        zero?(mod(x 3))  : "Fizz"
-        :else: x
-  - (1 .. 100)
diff --git a/Task/FizzBuzz/YAMLScript/fizzbuzz-3.ys b/Task/FizzBuzz/YAMLScript/fizzbuzz-3.ys
deleted file mode 100644
index c7e2b66cbe..0000000000
--- a/Task/FizzBuzz/YAMLScript/fizzbuzz-3.ys
+++ /dev/null
@@ -1,13 +0,0 @@
-map(say):
-  loop [i 1, l []]:
-    if (i > 100):
-    - l
-    - ^^^:
-      - inc(i)
-      - conj:
-        - l
-        - ???:
-            zero?(mod(i 15)) : "FizzBuzz"
-            zero?(mod(i 5))  : "Buzz"
-            zero?(mod(i 3))  : "Fizz"
-            :else: i
diff --git a/Task/FizzBuzz/YAMLScript/fizzbuzz.ys b/Task/FizzBuzz/YAMLScript/fizzbuzz.ys
new file mode 100644
index 0000000000..19dfaa2cbe
--- /dev/null
+++ b/Task/FizzBuzz/YAMLScript/fizzbuzz.ys
@@ -0,0 +1,59 @@
+#!/usr/bin/env ys-0
+
+# This program has multiple implementations of "fizzbuzz".
+
+# usage: ys fizzbuzz.ys [] []
+
+# The main function runs a certain requested fizzbuzz implementation function
+# for a certain requested number (default is 100).
+
+defn main(&[count impl]):
+  count =: count || 100
+  impl =:
+    str: impl || "1"
+  fizzbuzz =: "fizzbuzz-$impl"
+
+  when-not ENV."YS_TEST":
+    say: "Running function '$fizzbuzz' with count=$count"
+
+  function =: resolve(symbol(fizzbuzz))
+  result   =: function(count)
+
+  mapv say: result
+
+
+# These implementation functions were adapted from
+# https://rosettacode.org/wiki/FizzBuzz#Clojure
+
+defn fizzbuzz-1(n):
+  map:
+    fn [x]:
+      cond:
+        zero?(mod(x 15)) "FizzBuzz"
+        zero?(mod(x 5))  "Buzz"
+        zero?(mod(x 3))  "Fizz"
+        :else            x
+    =>: (1 .. n)
+
+defn fizzbuzz-2(n):
+  loop [i 1, l []]:
+    if (i > n):
+      =>: l
+      recur:
+        inc: i
+        conj l:
+          cond:
+            zero?(mod(i 15)) "FizzBuzz"
+            zero?(mod(i 5))  "Buzz"
+            zero?(mod(i 3))  "Fizz"
+            :else            i
+
+defn fizzbuzz-3(n):
+  map:
+    fn [x]:
+      s =:
+        str:
+          when zero?(mod(x 3)): "Fizz"
+          when zero?(mod(x 5)): "Buzz"
+      if empty?(s): x s
+    rng: 1, n
diff --git a/Task/Flatten-a-list/Wren/flatten-a-list.wren b/Task/Flatten-a-list/Wren/flatten-a-list.wren
index 53ad226b88..9c1e91952a 100644
--- a/Task/Flatten-a-list/Wren/flatten-a-list.wren
+++ b/Task/Flatten-a-list/Wren/flatten-a-list.wren
@@ -1,4 +1,4 @@
-import "/seq" for Lst
+import "./seq" for Lst
 
 var a = [[1], 2, [[3, 4], 5], [[[]]], [[[6]]], 7, 8, []]
 System.print(Lst.flatten(a))
diff --git a/Task/Flipping-bits-game/Wren/flipping-bits-game.wren b/Task/Flipping-bits-game/Wren/flipping-bits-game.wren
index f17b9d0139..ddcbaaf6d0 100644
--- a/Task/Flipping-bits-game/Wren/flipping-bits-game.wren
+++ b/Task/Flipping-bits-game/Wren/flipping-bits-game.wren
@@ -1,6 +1,6 @@
 import "random" for Random
-import "/ioutil" for Input
-import "/str" for Str
+import "./ioutil" for Input
+import "./str" for Str
 
 var rand = Random.new()
 var target = List.filled(3, null)
diff --git a/Task/Floyd-Warshall-algorithm/J/floyd-warshall-algorithm-2.j b/Task/Floyd-Warshall-algorithm/J/floyd-warshall-algorithm-2.j
index e164599e6e..03dc67fc2d 100644
--- a/Task/Floyd-Warshall-algorithm/J/floyd-warshall-algorithm-2.j
+++ b/Task/Floyd-Warshall-algorithm/J/floyd-warshall-algorithm-2.j
@@ -1,12 +1 @@
-graph=: ".;._2]0 :0
-  0  _ _2 _  NB. 1->3 costs _2
-  4  0  3 _  NB. 2->1 costs 4; 2->3 costs 3
-  _  _  0 2  NB. 3->4 costs 2
-  _ _1  _ 0  NB. 4->2 costs _1
-)
-
-   floyd graph
-0 _1 _2 0
-4  0  2 4
-5  1  0 2
-3 _1  1 0
+floyd=: ]F..(]<.{"1+/{) i.@#
diff --git a/Task/Floyd-Warshall-algorithm/J/floyd-warshall-algorithm-3.j b/Task/Floyd-Warshall-algorithm/J/floyd-warshall-algorithm-3.j
index a8d86325c7..e164599e6e 100644
--- a/Task/Floyd-Warshall-algorithm/J/floyd-warshall-algorithm-3.j
+++ b/Task/Floyd-Warshall-algorithm/J/floyd-warshall-algorithm-3.j
@@ -1,33 +1,12 @@
-floydrecon=: verb define
-  n=. ($y)$_(I._=,y)},($$i.@#)y
-  for_j. i.#y do.
-    d=. y <. j ({"1 +/ {) y
-    b=. y~:d
-    y=. d
-    n=. (n*-.b)+b * j{"1 n
-  end.
+graph=: ".;._2]0 :0
+  0  _ _2 _  NB. 1->3 costs _2
+  4  0  3 _  NB. 2->1 costs 4; 2->3 costs 3
+  _  _  0 2  NB. 3->4 costs 2
+  _ _1  _ 0  NB. 4->2 costs _1
 )
 
-task=: verb define
-  dist=. floyd y
-  next=. floydrecon y
-  echo 'pair  dist   path'
-  for_i. i.#y do.
-    for_k. i.#y do.
-      ndx=. ndx{next do.
-        txt=. (":1+i),'->',(":1+k)
-        txt=. txt,_5{.":ndx{dist
-        txt=. txt,'    ',":1+i
-        j=. i
-        while. j~:k do.
-          assert. j~:(',":1+j
-        end.
-        echo txt
-      end.
-    end.
-  end.
-  i.0 0
-)
+   floyd graph
+0 _1 _2 0
+4  0  2 4
+5  1  0 2
+3 _1  1 0
diff --git a/Task/Floyd-Warshall-algorithm/J/floyd-warshall-algorithm-4.j b/Task/Floyd-Warshall-algorithm/J/floyd-warshall-algorithm-4.j
index 2218e40e3a..a8d86325c7 100644
--- a/Task/Floyd-Warshall-algorithm/J/floyd-warshall-algorithm-4.j
+++ b/Task/Floyd-Warshall-algorithm/J/floyd-warshall-algorithm-4.j
@@ -1,14 +1,33 @@
-   task graph
-pair  dist   path
-1->2   _1    1->3->4->2
-1->3   _2    1->3
-1->4    0    1->3->4
-2->1    4    2->1
-2->3    2    2->1->3
-2->4    4    2->1->3->4
-3->1    5    3->4->2->1
-3->2    1    3->4->2
-3->4    2    3->4
-4->1    3    4->2->1
-4->2   _1    4->2
-4->3    1    4->2->1->3
+floydrecon=: verb define
+  n=. ($y)$_(I._=,y)},($$i.@#)y
+  for_j. i.#y do.
+    d=. y <. j ({"1 +/ {) y
+    b=. y~:d
+    y=. d
+    n=. (n*-.b)+b * j{"1 n
+  end.
+)
+
+task=: verb define
+  dist=. floyd y
+  next=. floydrecon y
+  echo 'pair  dist   path'
+  for_i. i.#y do.
+    for_k. i.#y do.
+      ndx=. ndx{next do.
+        txt=. (":1+i),'->',(":1+k)
+        txt=. txt,_5{.":ndx{dist
+        txt=. txt,'    ',":1+i
+        j=. i
+        while. j~:k do.
+          assert. j~:(',":1+j
+        end.
+        echo txt
+      end.
+    end.
+  end.
+  i.0 0
+)
diff --git a/Task/Floyd-Warshall-algorithm/J/floyd-warshall-algorithm-5.j b/Task/Floyd-Warshall-algorithm/J/floyd-warshall-algorithm-5.j
new file mode 100644
index 0000000000..2218e40e3a
--- /dev/null
+++ b/Task/Floyd-Warshall-algorithm/J/floyd-warshall-algorithm-5.j
@@ -0,0 +1,14 @@
+   task graph
+pair  dist   path
+1->2   _1    1->3->4->2
+1->3   _2    1->3
+1->4    0    1->3->4
+2->1    4    2->1
+2->3    2    2->1->3
+2->4    4    2->1->3->4
+3->1    5    3->4->2->1
+3->2    1    3->4->2
+3->4    2    3->4
+4->1    3    4->2->1
+4->2   _1    4->2
+4->3    1    4->2->1->3
diff --git a/Task/Floyd-Warshall-algorithm/Wren/floyd-warshall-algorithm.wren b/Task/Floyd-Warshall-algorithm/Wren/floyd-warshall-algorithm.wren
index c1250137fa..79327a7b95 100644
--- a/Task/Floyd-Warshall-algorithm/Wren/floyd-warshall-algorithm.wren
+++ b/Task/Floyd-Warshall-algorithm/Wren/floyd-warshall-algorithm.wren
@@ -1,4 +1,4 @@
-import "/fmt" for Fmt
+import "./fmt" for Fmt
 
 class FloydWarshall {
     static doCalcs(weights, nVertices) {
diff --git a/Task/Floyds-triangle/Wren/floyds-triangle.wren b/Task/Floyds-triangle/Wren/floyds-triangle.wren
index 114c582d1a..10bf0dc270 100644
--- a/Task/Floyds-triangle/Wren/floyds-triangle.wren
+++ b/Task/Floyds-triangle/Wren/floyds-triangle.wren
@@ -1,4 +1,4 @@
-import "/fmt" for Fmt
+import "./fmt" for Fmt
 
 var floyd = Fn.new { |n|
    var k = 1
diff --git a/Task/Fork/Wren/fork-1.wren b/Task/Fork/Wren/fork-1.wren
index 2aa94f2287..223504c049 100644
--- a/Task/Fork/Wren/fork-1.wren
+++ b/Task/Fork/Wren/fork-1.wren
@@ -1,4 +1,4 @@
-/* fork.wren */
+/* Fork.wren */
 
 class C {
     foreign static fork()
diff --git a/Task/Fork/Wren/fork-2.wren b/Task/Fork/Wren/fork-2.wren
index 1f2b4d4eb7..53a3911d6e 100644
--- a/Task/Fork/Wren/fork-2.wren
+++ b/Task/Fork/Wren/fork-2.wren
@@ -59,7 +59,7 @@ int main(int argc, char **argv) {
     config.bindForeignMethodFn = &bindForeignMethod;
     WrenVM* vm = wrenNewVM(&config);
     const char* module = "main";
-    const char* fileName = "fork.wren";
+    const char* fileName = "Fork.wren";
     char *script = readFile(fileName);
     wrenInterpret(vm, module, script);
     wrenFreeVM(vm);
diff --git a/Task/Formal-power-series/Wren/formal-power-series.wren b/Task/Formal-power-series/Wren/formal-power-series.wren
index d904c7fdad..ed81ad557c 100644
--- a/Task/Formal-power-series/Wren/formal-power-series.wren
+++ b/Task/Formal-power-series/Wren/formal-power-series.wren
@@ -1,4 +1,4 @@
-import "/rat" for Rat
+import "./rat" for Rat
 
 class Gene {
     coef(n) {}
diff --git a/Task/Formatted-numeric-output/Amazing-Hopper/formatted-numeric-output.hopper b/Task/Formatted-numeric-output/Amazing-Hopper/formatted-numeric-output.hopper
new file mode 100644
index 0000000000..8753c42428
--- /dev/null
+++ b/Task/Formatted-numeric-output/Amazing-Hopper/formatted-numeric-output.hopper
@@ -0,0 +1,43 @@
+#include 
+
+#proto padzeros(_X_,_S_,_D_)
+#proto padmoney(_N_,_D_,_F_,_S_,_P_)
+
+algoritmo
+
+     n={}, '125, 12.39802, 0.0003221, -0.0045, 457897.789' enlistar en 'n'
+
+     fijar separador 'NL'
+     imprimir( "Express a number in decimal as a fixed-length string with leading zeros:\n\n",\
+               #(pad zeros(n,19,5)), "\n\n",\
+               #(pad zeros(n,19,0)), "\n\n",\
+               #(pad zeros( (-9873000155.584),19,1)), "\n\n",\
+               "Bonus track:\n\n",\
+               #(lpad( " ",20,string(n))), "\n\n",\
+               #(lpad( " ",20,notation(n))),"\n\n",\
+               #(pad money(n,1,".",19,"$")),"\n\n",\
+               #(pad money(1980.67,1,"_",16,"USD$"),NL))
+
+terminar
+
+subrutinas
+
+pad zeros(n, l, d)
+     decimales 'd'
+     s=0, sgn=0
+     #( s = string( n * sgn:=(sign(n)) ) )
+     #( sgn = string(sgn) )
+     si ( s, es matriz? )
+         mapear( #(sgn=="-1"), "-", sgn )
+         mapear( #(sgn=="1"), " ", sgn )
+     sino
+         #(sgn=="-1"), entonces{ "-",mover a 'sgn' }
+         #(sgn=="1"), entonces{ " ",mover a 'sgn' }
+     fin si
+     #(cat( sgn, lpad( "0",l,s)))
+     decimales normales
+retornar
+
+pad money(num, dec, fill, size, prefix)
+     #(cat(prefix,lpad(fill,size,money(dec,num))))
+retornar
diff --git a/Task/Formatted-numeric-output/Wren/formatted-numeric-output.wren b/Task/Formatted-numeric-output/Wren/formatted-numeric-output.wren
index ba19bf5ec9..6ce95585d6 100644
--- a/Task/Formatted-numeric-output/Wren/formatted-numeric-output.wren
+++ b/Task/Formatted-numeric-output/Wren/formatted-numeric-output.wren
@@ -1,4 +1,4 @@
-import "/fmt" for Fmt
+import "./fmt" for Fmt
 
 var n = 7.125
 System.print(Fmt.rjust(9, n, "0"))
diff --git a/Task/Fortunate-numbers/Wren/fortunate-numbers.wren b/Task/Fortunate-numbers/Wren/fortunate-numbers.wren
index 1867c1da0a..d32b5d38b1 100644
--- a/Task/Fortunate-numbers/Wren/fortunate-numbers.wren
+++ b/Task/Fortunate-numbers/Wren/fortunate-numbers.wren
@@ -1,8 +1,7 @@
-import "/math" for Int
-import "/big" for BigInt
-import "/sort" for Sort
-import "/seq" for Lst
-import "/fmt" for Fmt
+import "./math" for Int
+import "./big" for BigInt
+import "./seq" for Lst
+import "./fmt" for Fmt
 
 var primes = Int.primeSieve(379)
 var primorial = BigInt.one
@@ -18,7 +17,6 @@ for (prime in primes) {
         j = j + 2
     }
 }
-fortunates = Lst.distinct(fortunates)
-Sort.quick(fortunates)
+fortunates = Lst.distinct(fortunates).sort()
 System.print("After sorting, the first 50 distinct fortunate numbers are:")
-for (chunk in Lst.chunks(fortunates[0..49], 10)) Fmt.print("$3d", chunk)
+Fmt.tprint("$3d", fortunates[0..49], 10)
diff --git a/Task/Forward-difference/Wren/forward-difference.wren b/Task/Forward-difference/Wren/forward-difference.wren
index 1597c74669..0b4d32b131 100644
--- a/Task/Forward-difference/Wren/forward-difference.wren
+++ b/Task/Forward-difference/Wren/forward-difference.wren
@@ -1,4 +1,4 @@
-import "/fmt" for Fmt
+import "./fmt" for Fmt
 
 var forwardDiff = Fn.new { |a, order|
     if (order < 0) Fiber.abort("Order must be a non-negative integer.")
diff --git a/Task/Four-bit-adder/EasyLang/four-bit-adder.easy b/Task/Four-bit-adder/EasyLang/four-bit-adder.easy
new file mode 100644
index 0000000000..a7fb1f576f
--- /dev/null
+++ b/Task/Four-bit-adder/EasyLang/four-bit-adder.easy
@@ -0,0 +1,23 @@
+proc xor a b . r .
+   na = bitand bitnot a 1
+   nb = bitand bitnot b 1
+   r = bitor bitand a nb bitand b na
+.
+proc half_add a b . s c .
+   xor a b s
+   c = bitand a b
+.
+proc full_add a b c . s g .
+   half_add a c x y
+   half_add x b s z
+   g = bitor y z
+.
+proc bit4add a4 a3 a2 a1 b4 b3 b2 b1 . s4 s3 s2 s1 c .
+   full_add a1 b1 0 s1 c
+   full_add a2 b2 c s2 c
+   full_add a3 b3 c s3 c
+   full_add a4 b4 c s4 c
+.
+write "1101 + 1011 = "
+bit4add 1 1 0 1 1 0 1 1 s4 s3 s2 s1 c
+print c & s4 & s3 & s2 & s1
diff --git a/Task/Four-bit-adder/Quackery/four-bit-adder.quackery b/Task/Four-bit-adder/Quackery/four-bit-adder.quackery
new file mode 100644
index 0000000000..6781b94511
--- /dev/null
+++ b/Task/Four-bit-adder/Quackery/four-bit-adder.quackery
@@ -0,0 +1,50 @@
+  [ over not
+    over and
+    unrot not
+    and or ]                  is xor       (                     a b --> a^b           )
+
+  [ 2dup and
+    dip xor ]                 is halfadder (                     a b --> s c           )
+
+  [ halfadder
+    dip halfadder or ]        is fulladder (                   a b c --> s c           )
+
+  [ 4 pack reverse unpack
+    4 times [ temp put ]
+    4 pack reverse
+    0 swap witheach
+      [ temp take fulladder ]
+    5 pack reverse unpack ]   is 4bitadder ( b3 b2 b1 b0 a3 a2 a1 a0 --> c s3 s2 s1 s0 )
+
+    say "1100 + 1100 = "
+    1 1 0 0  1 1 0 0 4bitadder
+    5 pack witheach echo
+    cr
+    say "1100 + 1101 = "
+    1 1 0 0  1 1 0 1 4bitadder
+    5 pack witheach echo
+    cr
+    say "1100 + 1110 = "
+    1 1 0 0  1 1 1 0 4bitadder
+    5 pack witheach echo
+    cr
+    say "1100 + 1111 = "
+    1 1 0 0  1 1 1 1 4bitadder
+    5 pack witheach echo
+    cr
+    say "1101 + 0000 = "
+    1 1 0 1  0 0 0 0 4bitadder
+    5 pack witheach echo
+    cr
+    say "1101 + 0001 = "
+    1 1 0 1  0 0 0 1 4bitadder
+    5 pack witheach echo
+    cr
+    say "1101 + 0010 = "
+    1 1 0 1  0 0 1 0 4bitadder
+    5 pack witheach echo
+    cr
+    say "1101 + 0011 = "
+    1 1 0 1  0 0 1 1 4bitadder
+    5 pack witheach echo
+    cr
diff --git a/Task/Four-is-magic/FutureBasic/four-is-magic.basic b/Task/Four-is-magic/FutureBasic/four-is-magic.basic
new file mode 100644
index 0000000000..eb12b04ea0
--- /dev/null
+++ b/Task/Four-is-magic/FutureBasic/four-is-magic.basic
@@ -0,0 +1,31 @@
+include "NSLog.incl"
+
+local fn FourIsMagic( number as CFNumberRef ) as CFStringRef
+  CFMutableStringRef    result = fn MutableStringNew
+  NumberFormatterRef formatter = fn NumberFormatterWithStyle( NSNumberFormatterSpellOutStyle )
+  NumberFormatterSetLocale( formatter, fn LocaleWithIdentifier( @"en_EN" )  )
+  CFStringRef numberString = fn NumberFormatterStringFromNumber( formatter, number )
+  MutableStringAppendString( result, fn StringCapitalizedString( numberString ) )
+
+  while ( fn StringIsEqual( numberString, @"four" ) == NO )
+    numberString = fn NumberFormatterStringFromNumber( formatter, fn NumberWithInteger( len(numberString) ) )
+    MutableStringAppendString( result, fn StringWithFormat( @" is %@, %@", numberString, numberString ) )
+  wend
+  MutableStringAppendString( result, @" is magic." )
+end fn = result
+
+NSInteger   i
+CFNumberRef testInput
+CFArrayRef  testNumbers : testNumbers = @[@23, @1000000000, @20140, @100, @130, @151, @-7]
+
+NSLog( @"Outputs 0 through 9:\n" )
+for i = 0 to 9
+  NSLog( @"%@", fn FourIsMagic( fn NumberWithInteger( i ) ) )
+next
+
+NSLog( @"\nOther number tests:\n" )
+for testInput in testNumbers
+  NSLog( @"%@", fn FourIsMagic( testInput ) )
+next
+
+HandleEvents
diff --git a/Task/Four-is-the-number-of-letters-in-the-.../Wren/four-is-the-number-of-letters-in-the-....wren b/Task/Four-is-the-number-of-letters-in-the-.../Wren/four-is-the-number-of-letters-in-the-....wren
index e491b485bc..0f7728aa60 100644
--- a/Task/Four-is-the-number-of-letters-in-the-.../Wren/four-is-the-number-of-letters-in-the-....wren
+++ b/Task/Four-is-the-number-of-letters-in-the-.../Wren/four-is-the-number-of-letters-in-the-....wren
@@ -1,4 +1,4 @@
-import "/fmt" for Fmt
+import "./fmt" for Fmt
 
 var names = {
      1: "one",
diff --git a/Task/Fractal-tree/MiniScript/fractal-tree.mini b/Task/Fractal-tree/MiniScript/fractal-tree.mini
new file mode 100644
index 0000000000..4d929ce95a
--- /dev/null
+++ b/Task/Fractal-tree/MiniScript/fractal-tree.mini
@@ -0,0 +1,17 @@
+drawTree = function(x1, y1, angle, depth)
+	fork_angle = 20
+	base_len = 9
+	if depth > 0 then
+		radians = angle * pi / 180
+		x2 = x1 + cos(radians) * depth * base_len
+		y2 = y1 + sin(radians) * depth * base_len
+		gfx.line x1, y1, x2, y2, "#008000"
+		drawTree x2, y2, angle - fork_angle, depth - 1
+		drawTree x2, y2, angle + fork_angle, depth - 1
+	end if
+end function
+clear
+gfx.clear "#87CEEB"
+drawTree 480, 10, 90, 11
+img = gfx.getImage(0, 0, 960, 640)
+file.saveImage "/usr/fractalTree.png", img
diff --git a/Task/Fraction-reduction/Wren/fraction-reduction.wren b/Task/Fraction-reduction/Wren/fraction-reduction.wren
index a9cacf88b8..787a655da0 100644
--- a/Task/Fraction-reduction/Wren/fraction-reduction.wren
+++ b/Task/Fraction-reduction/Wren/fraction-reduction.wren
@@ -1,5 +1,5 @@
-import "/dynamic" for Struct
-import "/fmt" for Fmt
+import "./dynamic" for Struct
+import "./fmt" for Fmt
 
 var Result = Struct.create("Result", ["n", "nine"])
 
diff --git a/Task/Fractran/Wren/fractran.wren b/Task/Fractran/Wren/fractran.wren
index 1bcd949761..b719acd12d 100644
--- a/Task/Fractran/Wren/fractran.wren
+++ b/Task/Fractran/Wren/fractran.wren
@@ -1,4 +1,4 @@
-import "/big" for BigInt, BigRat
+import "./big" for BigInt, BigRat
 
 var isPowerOfTwo = Fn.new { |bi| bi & (bi - BigInt.one) == BigInt.zero }
 
diff --git a/Task/French-Republican-calendar/Wren/french-republican-calendar.wren b/Task/French-Republican-calendar/Wren/french-republican-calendar.wren
index 67c2ba5ccf..9c365d1f94 100644
--- a/Task/French-Republican-calendar/Wren/french-republican-calendar.wren
+++ b/Task/French-Republican-calendar/Wren/french-republican-calendar.wren
@@ -1,6 +1,6 @@
-import "/date" for Date
-import "/seq" for Lst
-import "/fmt" for Fmt
+import "./date" for Date
+import "./seq" for Lst
+import "./fmt" for Fmt
 
 class FrenchRCDate {
     /* uses the 'continuous method' for years after 1805 */
diff --git a/Task/Function-frequency/Wren/function-frequency.wren b/Task/Function-frequency/Wren/function-frequency.wren
index 2216a94725..2d2fcedef0 100644
--- a/Task/Function-frequency/Wren/function-frequency.wren
+++ b/Task/Function-frequency/Wren/function-frequency.wren
@@ -1,9 +1,9 @@
 import "io" for File
 import "os" for Process
-import "/pattern" for Pattern
-import "/set" for Bag
-import "/sort" for Sort
-import "/fmt" for Fmt
+import "./pattern" for Pattern
+import "./set" for Bag
+import "./sort" for Sort
+import "./fmt" for Fmt
 
 var args = Process.arguments
 if (args.count != 1) {
diff --git a/Task/Functional-coverage-tree/Java/functional-coverage-tree.java b/Task/Functional-coverage-tree/Java/functional-coverage-tree.java
index df0fd64987..8fd0797f54 100644
--- a/Task/Functional-coverage-tree/Java/functional-coverage-tree.java
+++ b/Task/Functional-coverage-tree/Java/functional-coverage-tree.java
@@ -1,5 +1,4 @@
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
 
 public final class FunctionalCoverageTree {
@@ -7,12 +6,12 @@ public final class FunctionalCoverageTree {
 	public static void main(String[] aArgs) {		
 		FCNode cleaning = new FCNode("Cleaning", 1, 0.0);
 		
-		List houses = Arrays.asList(
+		List houses = List.of(
 			new FCNode("House_1", 40, 0.0),
 			new FCNode("House_2", 60, 0.0) );		
 		cleaning.addChildren(houses);
 		
-		List house_1 = Arrays.asList(
+		List house_1 = List.of(
 			new FCNode("Bedrooms", 1, 0.25),
 			new FCNode("Bathrooms", 1, 0.0),
 			new FCNode("Attic", 1, 0.75),
@@ -23,33 +22,33 @@ public final class FunctionalCoverageTree {
 			new FCNode("Garden",1, 0.8) );		
 		houses.get(0).addChildren(house_1);
 		
-		List bathrooms_house_1 = Arrays.asList(
+		List bathrooms_house_1 = List.of(
 			new FCNode("Bathroom_1", 1, 0.5),
 			new FCNode("Bathroom_2", 1, 0.0),
 			new FCNode("Outside_lavatory", 1, 1.0) );
 		house_1.get(1).addChildren(bathrooms_house_1);
 		
-		List living_rooms_house_1 = Arrays.asList(
+		List living_rooms_house_1 = List.of(
 			new FCNode("lounge", 1, 0.0),
 			new FCNode("Dining_room", 1, 0.0),
 			new FCNode("Conservatory", 1, 0.0),
 			new FCNode("Playroom", 1, 1.0) );
 		house_1.get(4).addChildren(living_rooms_house_1);
 		
-		List house_2 = Arrays.asList(
+		List house_2 = List.of(
 			new FCNode("Upstairs", 1, 0.15),
 			new FCNode("Ground_floor", 1, 0.316667),
 			new FCNode("Basement", 1, 0.916667));
 		houses.get(1).addChildren(house_2);
 		
-		List upstairs = Arrays.asList(
+		List upstairs = List.of(
 			new FCNode("Bedrooms", 1, 0.0),
 			new FCNode("Bathroom", 1, 0.0),
 			new FCNode("Toilet", 1, 0.0),
 			new FCNode("Attics", 1, 0.6) );
 		house_2.get(0).addChildren(upstairs);
 		
-		List ground_floor = Arrays.asList(
+		List ground_floor = List.of(
 			new FCNode("Kitchen", 1, 0.0),
 			new FCNode("Living_rooms", 1, 0.0),
 			new FCNode("Wet_room_&_toilet", 1, 0.0),
@@ -58,20 +57,20 @@ public final class FunctionalCoverageTree {
 			new FCNode("Hot_tub_suite", 1, 1.0) );
 		house_2.get(1).addChildren(ground_floor);
 		
-		List basement = Arrays.asList(
+		List basement = List.of(
 			new FCNode("Cellars", 1, 1.0),
 			new FCNode("Wine_cellar", 1, 1.0),
 			new FCNode("Cinema", 1, 0.75) );
 		house_2.get(2).addChildren(basement);
 		
-		List bedrooms = Arrays.asList(
+		List bedrooms = List.of(
 			new FCNode("Suite_1", 1, 0.0),
 			new FCNode("Suite_2", 1, 0.0),
 			new FCNode("Bedroom_3",1, 0.0),
 			new FCNode("Bedroom_4",1, 0.0) );
 		upstairs.get(0).addChildren(bedrooms);
 		
-		List living_rooms_house_2 = Arrays.asList(
+		List living_rooms_house_2 = List.of(
 			new FCNode("lounge", 1, 0.0),
 			new FCNode("Dining_room", 1, 0.0),
 			new FCNode("Conservatory", 1, 0.0),
diff --git a/Task/Functional-coverage-tree/Wren/functional-coverage-tree.wren b/Task/Functional-coverage-tree/Wren/functional-coverage-tree.wren
index 8893209229..768ec2a2b8 100644
--- a/Task/Functional-coverage-tree/Wren/functional-coverage-tree.wren
+++ b/Task/Functional-coverage-tree/Wren/functional-coverage-tree.wren
@@ -1,4 +1,4 @@
-import "/fmt" for Fmt
+import "./fmt" for Fmt
 
 class FCNode {
     construct new(name, weight, coverage) {
diff --git a/Task/Fusc-sequence/BBC-BASIC/fusc-sequence.basic b/Task/Fusc-sequence/BBC-BASIC/fusc-sequence.basic
new file mode 100644
index 0000000000..a7abddf247
--- /dev/null
+++ b/Task/Fusc-sequence/BBC-BASIC/fusc-sequence.basic
@@ -0,0 +1,22 @@
+      DIM Idx%(4)
+      L%=1
+      F%=FNfusc(I%)
+      PRINT "First 61 numbers:"
+      WHILE L% < 5
+        IF I% < 61 PRINT;F% ",";
+        I%+=1
+        F%=FNfusc(I%)
+        IF LOGF% > L% Idx%(L%)=I% : L%+=1
+      ENDIF
+      ENDWHILE
+
+      PRINT CHR$127 ''"Number of digits in sequence increase at:"
+      FOR I%=0 TO L%-1
+      PRINT ;Idx%(I%) ",";FNfusc(Idx%(I%))
+      NEXT
+      END
+
+      DEF FNfusc(n%)
+      IF n% < 2 THEN =n%
+      IF n% AND 1 THEN =FNfusc((n%-1)/2) + FNfusc((n%+1)/2)
+      =FNfusc(n%/2)
diff --git a/Task/Fusc-sequence/Wren/fusc-sequence.wren b/Task/Fusc-sequence/Wren/fusc-sequence.wren
index c30b6e9219..7941b2748a 100644
--- a/Task/Fusc-sequence/Wren/fusc-sequence.wren
+++ b/Task/Fusc-sequence/Wren/fusc-sequence.wren
@@ -1,4 +1,4 @@
-import "/fmt" for Fmt
+import "./fmt" for Fmt
 
 System.print("The first 61 numbers in the fusc sequence are:")
 var fusc = [0, 1]
diff --git a/Task/GUI-component-interaction/Elena/gui-component-interaction-1.elena b/Task/GUI-component-interaction/Elena/gui-component-interaction-1.elena
index 62382c02fc..963127c707 100644
--- a/Task/GUI-component-interaction/Elena/gui-component-interaction-1.elena
+++ b/Task/GUI-component-interaction/Elena/gui-component-interaction-1.elena
@@ -3,55 +3,55 @@ import extensions;
 
 public class MainWindow : SDIDialog
 {
-    Button btmIncrement;
-    Button btmRandom;
-    Edit   txtNumber;
+   Button btmIncrement;
+   Button btmRandom;
+   Edit   txtNumber;
 
-    constructor new()
-        <= new()
-    {
-        btmIncrement := Button.new();
-        btmRandom    := Button.new();
-        txtNumber    := Edit.new();
+   constructor new()
+      <= super new()
+   {
+      btmIncrement := Button.new();
+      btmRandom    := Button.new();
+      txtNumber    := Edit.new();
 
-        self
-            .appendControl:btmIncrement
-            .appendControl:btmRandom
-            .appendControl:txtNumber;
+      self
+         .appendControl:btmIncrement
+         .appendControl:btmRandom
+         .appendControl:txtNumber;
 
-        self.Caption := "Rosseta Code";
-        self.setRegion(100, 100, 160, 120);
+      self.Caption := "Rosseta Code";
+      self.setRegion(100, 100, 180, 140);
 
-        txtNumber.setRegion(7, 7, 140, 25);
-        txtNumber.Caption := "0";
+      txtNumber.setRegion(20, 7, 140, 25);
+      txtNumber.Caption := "0";
 
-        btmIncrement.setRegion(7, 35, 140, 25);
-        btmIncrement.Caption := "Increment";
-        btmIncrement.onClick := (args){ self.onButtonIncrementClick() };
+      btmIncrement.setRegion(20, 35, 140, 25);
+      btmIncrement.Caption := "Increment";
+      btmIncrement.onClick := (args){ self.onButtonIncrementClick() };
 
-        btmRandom.setRegion(7, 65, 140, 25);
-        btmRandom.Caption := "Random";
-        btmRandom.onClick := (args){ self.onButtonRandomClick() };
-    }
+      btmRandom.setRegion(20, 65, 140, 25);
+      btmRandom.Caption := "Random";
+      btmRandom.onClick := (args){ self.onButtonRandomClick() };
+   }
 
-    private onButtonIncrementClick()
-    {
-        var number := txtNumber.Value.toInt();
+   private onButtonIncrementClick()
+   {
+      var number := txtNumber.Value.toInt();
 
-        number := number + 1;
-        self.changeTextBoxValue(number)
-    }
+      number := number + 1;
+      self.changeTextBoxValue(number)
+   }
 
-    private onButtonRandomClick()
-    {
-        if(messageDialog.showQuestion("Inf", "Really reset to random value?"))
-        {
-            self.changeTextBoxValue(randomGenerator.eval(99999999))
-        }
-    }
+   private onButtonRandomClick()
+   {
+      if(messageDialog.showQuestion("Inf", "Really reset to random value?"))
+      {
+         self.changeTextBoxValue(randomGenerator.nextInt(99999999))
+      }
+   }
 
-    private changeTextBoxValue(number)
-    {
-        txtNumber.Caption := number.toString()
-    }
+   private changeTextBoxValue(number)
+   {
+      txtNumber.Caption := number.toString()
+   }
 }
diff --git a/Task/GUI-component-interaction/Run-BASIC/gui-component-interaction.basic b/Task/GUI-component-interaction/Run-BASIC/gui-component-interaction-1.basic
similarity index 100%
rename from Task/GUI-component-interaction/Run-BASIC/gui-component-interaction.basic
rename to Task/GUI-component-interaction/Run-BASIC/gui-component-interaction-1.basic
diff --git a/Task/GUI-component-interaction/Run-BASIC/gui-component-interaction-2.basic b/Task/GUI-component-interaction/Run-BASIC/gui-component-interaction-2.basic
new file mode 100644
index 0000000000..75fa105ed8
--- /dev/null
+++ b/Task/GUI-component-interaction/Run-BASIC/gui-component-interaction-2.basic
@@ -0,0 +1,32 @@
+use eframe::egui;
+use rand::Rng;
+
+fn main() -> Result<(), eframe::Error> {
+    let options = eframe::NativeOptions {
+        initial_window_size: Some(egui::vec2(214.0, 100.0)),
+        ..Default::default()
+    };
+
+    // Our application state:
+    let mut value = "0".to_owned();
+
+    eframe::run_simple_native("GUI component interaction", options, move |ctx, _frame| {
+        egui::CentralPanel::default().show(ctx, |ui| {
+            ui.horizontal(|ui| {
+                let name_label = ui.label("Value: ");
+                ui.text_edit_singleline(&mut value)
+                    .labelled_by(name_label.id);
+            });
+            ui.horizontal(|ui| {
+                if ui.button("Increment").clicked() {
+                    if let Ok(v) = value.parse::() {
+                        value = (v + 1).to_string()
+                    }
+                }
+                if ui.button("Random").clicked() {
+                    value = (rand::thread_rng().gen_range(1..=10000)).to_string();
+                }
+            });
+        });
+    })
+}
diff --git a/Task/Galton-box-animation/Wren/galton-box-animation.wren b/Task/Galton-box-animation/Wren/galton-box-animation.wren
index 377d53bddf..ced4534f33 100644
--- a/Task/Galton-box-animation/Wren/galton-box-animation.wren
+++ b/Task/Galton-box-animation/Wren/galton-box-animation.wren
@@ -1,5 +1,5 @@
 import "random" for Random
-import "/iterate" for Reversed
+import "./iterate" for Reversed
 
 var boxW = 41       // Galton box width.
 var boxH = 37       // Galton box height.
diff --git a/Task/Galton-box-animation/Zig/galton-box-animation.zig b/Task/Galton-box-animation/Zig/galton-box-animation.zig
index 24301bb178..e231702ade 100644
--- a/Task/Galton-box-animation/Zig/galton-box-animation.zig
+++ b/Task/Galton-box-animation/Zig/galton-box-animation.zig
@@ -17,7 +17,7 @@ fn boardSize(comptime peg_lines: u16) u16 {
 const BOARD_SIZE = boardSize(PEG_LINES);
 
 fn stepBoard(board: *[BOARD_SIZE]u1, count: *[PEG_LINES + 1]u8) void {
-    var prng = rand.DefaultPrng.init(@bitCast(u64, time.timestamp()));
+    var prng = rand.DefaultPrng.init(@bitCast(time.timestamp()));
 
     var p: u8 = 0;
     var sum: u16 = 0;
diff --git a/Task/Gamma-function/Wren/gamma-function.wren b/Task/Gamma-function/Wren/gamma-function.wren
index 1e8e1685ab..407e6ee757 100644
--- a/Task/Gamma-function/Wren/gamma-function.wren
+++ b/Task/Gamma-function/Wren/gamma-function.wren
@@ -1,12 +1,10 @@
-import "/fmt" for Fmt
-import "/math" for Math
+import "./fmt" for Fmt
+import "./math" for Math
 
 var stirling = Fn.new { |x| (2 * Num.pi / x).sqrt * (x / Math.e).pow(x) }
 
 System.print(" x\tStirling\t\tLanczos\n")
 for (i in 1..20) {
     var d = i / 10
-    System.write("%(Fmt.f(4, d, 2))\t")
-    System.write("%(Fmt.f(16, stirling.call(d), 14))\t")
-    System.print("%(Fmt.f(16, Math.gamma(d), 14))")
+    Fmt.print("$4.2f\t$16.14f\t$16.14f", d, stirling.call(d), Math.gamma(d))
 }
diff --git a/Task/Gapful-numbers/Elixir/gapful-numbers.elixir b/Task/Gapful-numbers/Elixir/gapful-numbers.elixir
new file mode 100644
index 0000000000..dab33734af
--- /dev/null
+++ b/Task/Gapful-numbers/Elixir/gapful-numbers.elixir
@@ -0,0 +1,16 @@
+  def gapful(st,se,n) do
+    gp=for g <- st..se, d=Integer.undigits([List.first(Integer.digits(g)),List.last(Integer.digits(g))]),Integer.mod(g,d)==0, do: g
+    Enum.take(gp,n)
+  end
+
+  iex(2)> Rosetta.gapful(101,500,30)
+[105, 108, 110, 120, 121, 130, 132, 135, 140, 143, 150, 154, 160, 165, 170, 176,
+ 180, 187, 190, 192, 195, 198, 200, 220, 225, 231, 240, 242, 253, 260]
+
+iex(3)> Rosetta.gapful(1000000,1000500,15)
+[1000000, 1000005, 1000008, 1000010, 1000016, 1000020, 1000021, 1000030,
+ 1000032, 1000034, 1000035, 1000040, 1000050, 1000060, 1000065]
+
+iex(4)> Rosetta.gapful(1000000000,1000000500,10)
+[1000000000, 1000000001, 1000000005, 1000000008, 1000000010, 1000000016,
+ 1000000020, 1000000027, 1000000030, 1000000032]
diff --git a/Task/Gapful-numbers/Wren/gapful-numbers.wren b/Task/Gapful-numbers/Wren/gapful-numbers.wren
index d45923ccf8..d6fb16e4dd 100644
--- a/Task/Gapful-numbers/Wren/gapful-numbers.wren
+++ b/Task/Gapful-numbers/Wren/gapful-numbers.wren
@@ -1,4 +1,4 @@
-import "/fmt" for Fmt
+import "./fmt" for Fmt
 
 var starts = [1e2, 1e6, 1e7, 1e9, 7123]
 var counts = [30, 15, 15, 10, 25]
diff --git a/Task/Gauss-Jordan-matrix-inversion/Wren/gauss-jordan-matrix-inversion.wren b/Task/Gauss-Jordan-matrix-inversion/Wren/gauss-jordan-matrix-inversion.wren
index 93e3476431..17eee5a2d8 100644
--- a/Task/Gauss-Jordan-matrix-inversion/Wren/gauss-jordan-matrix-inversion.wren
+++ b/Task/Gauss-Jordan-matrix-inversion/Wren/gauss-jordan-matrix-inversion.wren
@@ -1,5 +1,5 @@
-import "/matrix" for Matrix
-import "/fmt" for Fmt
+import "./matrix" for Matrix
+import "./fmt" for Fmt
 
 var arrays = [
     [ [ 1,  2,  3],
diff --git a/Task/Gaussian-elimination/Wren/gaussian-elimination.wren b/Task/Gaussian-elimination/Wren/gaussian-elimination.wren
index 171e9cf5cf..2567f3a1de 100644
--- a/Task/Gaussian-elimination/Wren/gaussian-elimination.wren
+++ b/Task/Gaussian-elimination/Wren/gaussian-elimination.wren
@@ -1,4 +1,4 @@
-import "/iterate" for Stepped
+import "./iterate" for Stepped
 
 var ta = [
     [1.00, 0.00, 0.00,  0.00,  0.00,   0.00],
diff --git a/Task/General-FizzBuzz/Wren/general-fizzbuzz.wren b/Task/General-FizzBuzz/Wren/general-fizzbuzz.wren
index afb08348eb..6acc353798 100644
--- a/Task/General-FizzBuzz/Wren/general-fizzbuzz.wren
+++ b/Task/General-FizzBuzz/Wren/general-fizzbuzz.wren
@@ -1,5 +1,5 @@
 import "io" for Stdin, Stdout
-import "/sort" for Sort
+import "./sort" for Sort
 
 var n
 
diff --git a/Task/Generate-Chess960-starting-position/00-TASK.txt b/Task/Generate-Chess960-starting-position/00-TASK.txt
index 1721911501..5e682079f5 100644
--- a/Task/Generate-Chess960-starting-position/00-TASK.txt
+++ b/Task/Generate-Chess960-starting-position/00-TASK.txt
@@ -11,6 +11,6 @@ With those constraints there are '''960''' possible starting positions, thus the
 
 
 ;Task:
-The purpose of this task is to write a program that can randomly generate any one of the 960 Chess960 initial positions. You will show the result as the first rank displayed with [[wp:Chess symbols in Unicode|Chess symbols in Unicode: ♔♕♖♗♘]] or with the letters '''K'''ing '''Q'''ueen '''R'''ook '''B'''ishop k'''N'''ight.
+The purpose of this task is to write a program that can randomly generate any one of the 960 Chess960 initial positions. You will show the result as the first rank displayed using either the [[wp:Chess symbols in Unicode|chess symbols in Unicode (♔♕♖♗♘)]], the letters '''K'''ing '''Q'''ueen '''R'''ook '''B'''ishop k'''N'''ight, or the corresponding letters in a language other than English.
 

diff --git a/Task/Generate-Chess960-starting-position/BBC-BASIC/generate-chess960-starting-position.basic b/Task/Generate-Chess960-starting-position/BBC-BASIC/generate-chess960-starting-position.basic new file mode 100644 index 0000000000..517a7efb4b --- /dev/null +++ b/Task/Generate-Chess960-starting-position/BBC-BASIC/generate-chess960-starting-position.basic @@ -0,0 +1,17 @@ + VDU 23, 22, 240; 360; 8, 16, 16, 136 + *FONT Arial, 20 + FOR I% = 1 TO 10 + Rank1$ = "202" + FOR Piece = 1 TO 3 + P% = RND(LENRank1$ + 1) + Rank1$ = LEFT$(Rank1$, P% - 1) + MID$("144", Piece, 1) + MID$(Rank1$, P%) + NEXT + P% = RND(7) + Rank1$ = LEFT$(Rank1$, P% - 1) + "3" + MID$(Rank1$, P%) + IF P% > 5 P% += 1 ELSE P% += RND(4 - (P% >> 1)) * 2 - 1 + Rank1$ = LEFT$(Rank1$, P% - 1) + "3" + MID$(Rank1$, P%) + FOR Piece = 1 TO 8 + VDU &E2, &99, &94 + VALMID$(Rank1$, Piece, 1) + NEXT + PRINT + NEXT diff --git a/Task/Generate-Chess960-starting-position/UNIX-Shell/generate-chess960-starting-position.sh b/Task/Generate-Chess960-starting-position/UNIX-Shell/generate-chess960-starting-position.sh new file mode 100644 index 0000000000..c669a5172f --- /dev/null +++ b/Task/Generate-Chess960-starting-position/UNIX-Shell/generate-chess960-starting-position.sh @@ -0,0 +1,23 @@ +declare -a pieces=(♖ ♖ ♖ ♕ ♗ ♗ ♘ ♘) +declare -i i pick index +declare -ai picking_history +declare attempt + +until [[ "$attempt" =~ ♗(..)*♗ ]] +do + attempt='' + picking_history=() + for _ in {1..8} + do + while ((picking_history[pick=RANDOM%8]++)) + do : + done + attempt+="${pieces[pick]}" + done +done +for i in {0..7} +do + if [[ "${attempt:i:1}" = ♖ ]] && ((index++)) + then echo "${attempt:0:i}♔${attempt:i+1}"; break; + fi +done diff --git a/Task/Generate-Chess960-starting-position/Wren/generate-chess960-starting-position.wren b/Task/Generate-Chess960-starting-position/Wren/generate-chess960-starting-position.wren index 1a82f7ebd4..9f422a956c 100644 --- a/Task/Generate-Chess960-starting-position/Wren/generate-chess960-starting-position.wren +++ b/Task/Generate-Chess960-starting-position/Wren/generate-chess960-starting-position.wren @@ -1,6 +1,6 @@ import "random" for Random -import "/dynamic" for Tuple -import "/fmt" for Fmt +import "./dynamic" for Tuple +import "./fmt" for Fmt var Symbols = Tuple.create("Symbols", ["k", "q", "r", "b", "n"]) diff --git a/Task/Generate-random-chess-position/Wren/generate-random-chess-position.wren b/Task/Generate-random-chess-position/Wren/generate-random-chess-position.wren index 94b7db5e77..d81ee05b17 100644 --- a/Task/Generate-random-chess-position/Wren/generate-random-chess-position.wren +++ b/Task/Generate-random-chess-position/Wren/generate-random-chess-position.wren @@ -1,5 +1,5 @@ import "random" for Random -import "/fmt" for Fmt +import "./fmt" for Fmt var rand = Random.new() diff --git a/Task/Get-system-command-output/Wren/get-system-command-output-1.wren b/Task/Get-system-command-output/Wren/get-system-command-output-1.wren index e52fde5f52..4695b3d104 100644 --- a/Task/Get-system-command-output/Wren/get-system-command-output-1.wren +++ b/Task/Get-system-command-output/Wren/get-system-command-output-1.wren @@ -1,4 +1,4 @@ -/* get_system_command_output.wren */ +/* Get_system_command_output.wren */ class Command { foreign static output(name, param) // the code for this is provided by Go } diff --git a/Task/Get-system-command-output/Wren/get-system-command-output-2.wren b/Task/Get-system-command-output/Wren/get-system-command-output-2.wren index 97254c9765..0bc8713e26 100644 --- a/Task/Get-system-command-output/Wren/get-system-command-output-2.wren +++ b/Task/Get-system-command-output/Wren/get-system-command-output-2.wren @@ -1,4 +1,4 @@ -/* get_system_command_output.go */ +/* Get_system_command_output.go */ package main import ( @@ -29,7 +29,7 @@ func getCommandOutput(vm *wren.VM, parameters []any) (any, error) { func main() { vm := wren.NewVM() - fileName := "get_system_command_output.wren" + fileName := "Get_system_command_output.wren" methodMap := wren.MethodMap{"static output(_,_)": getCommandOutput} classMap := wren.ClassMap{"Command": wren.NewClass(nil, nil, methodMap)} module := wren.NewModule(classMap) diff --git a/Task/Giuga-numbers/Euler/giuga-numbers.euler b/Task/Giuga-numbers/Euler/giuga-numbers.euler deleted file mode 100644 index 5046986197..0000000000 --- a/Task/Giuga-numbers/Euler/giuga-numbers.euler +++ /dev/null @@ -1,35 +0,0 @@ -begin - new for; new n; new gCount; - for <- ` formal init; formal test; formal incr; formal body; - begin - label again; - init; -again: if test then begin body; incr; goto again end else 0 - end - ' - ; - gCount <- 0; - for( ` n <- 2 ', ` gCount < 4 ', ` n <- n + 4 ' - , ` begin - new v; new f; new isGiuga; new fCount; - v <- n % 2; - isGiuga <- true; - fCount <- 1; - for( ` f <- 3 ', ` f <= v and isGiuga ', ` f <- f + 2 ' - , ` if v mod f = 0 then begin - fCount <- fCount + 1; - isGiuga <- [ [ n % f ] - 1 ] mod f = 0; - v <- v % f - end else 0 - ' - ); - if isGiuga then begin - if fCount > 1 then begin - gCount <- gCount + 1; - out n - end else 0 - end else 0 - end - ' - ) -end $ diff --git a/Task/Giuga-numbers/Lua/giuga-numbers.lua b/Task/Giuga-numbers/Lua/giuga-numbers.lua new file mode 100644 index 0000000000..9ded1de691 --- /dev/null +++ b/Task/Giuga-numbers/Lua/giuga-numbers.lua @@ -0,0 +1,28 @@ +do --[[ find the first 4 Giuga numbers, composites n such that all their + distinct prime factors f exactly divide ( n / f ) - 1 + + each prime factor must appear only once, e.g.: for 2: + [ ( n / 2 ) - 1 ] mod 2 = 0 => n / 2 is odd => n isn't divisible by 4 + similarly for other primes + ]] + + local gCount, n = 0, 2 + while gCount < 4 do + n = n + 4 -- assume the numbers are all even + local fCount, f, isGiuga, v = 1, 1, true, math.floor( n / 2 ) + while f <= ( v - 2 ) and isGiuga do + f = f + 2 + if v % f == 0 then -- have a prime factor + fCount = fCount + 1 + isGiuga = ( math.floor( n / f ) - 1 ) % f == 0 + v = math.floor( v / f ) + end + end + if isGiuga then -- n is still a candidate, check it is not prime + if fCount > 1 then + gCount = gCount + 1 + io.write( " ", n ) + end + end + end +end diff --git a/Task/Giuga-numbers/Sidef/giuga-numbers.sidef b/Task/Giuga-numbers/Sidef/giuga-numbers.sidef new file mode 100644 index 0000000000..2d38cc8735 --- /dev/null +++ b/Task/Giuga-numbers/Sidef/giuga-numbers.sidef @@ -0,0 +1,3 @@ +4..Inf `by` 2 -> lazy.grep {|n| + n.factor.all {|p| p `divides` (n/p - 1) } +}.first(4).say diff --git a/Task/Goldbachs-comet/BASIC256/goldbachs-comet.basic b/Task/Goldbachs-comet/BASIC256/goldbachs-comet.basic index 2083729dbf..153f24f02b 100644 --- a/Task/Goldbachs-comet/BASIC256/goldbachs-comet.basic +++ b/Task/Goldbachs-comet/BASIC256/goldbachs-comet.basic @@ -26,5 +26,5 @@ function g(n) if isPrime(i) = 1 and isPrime(n - i) = 1 then cont += 1 next i end if - g = cont + return cont end function diff --git a/Task/Goldbachs-comet/FreeBASIC/goldbachs-comet-1.basic b/Task/Goldbachs-comet/FreeBASIC/goldbachs-comet.basic similarity index 100% rename from Task/Goldbachs-comet/FreeBASIC/goldbachs-comet-1.basic rename to Task/Goldbachs-comet/FreeBASIC/goldbachs-comet.basic diff --git a/Task/Goldbachs-comet/Gambas/goldbachs-comet-1.gambas b/Task/Goldbachs-comet/Gambas/goldbachs-comet-1.gambas new file mode 100644 index 0000000000..f3e283e96a --- /dev/null +++ b/Task/Goldbachs-comet/Gambas/goldbachs-comet-1.gambas @@ -0,0 +1,28 @@ +Use "isprime.bas" + +Public Sub Main() + + Print "The first 100 G numbers are:" + + Dim n As Integer, col As Integer = 1 + For n = 4 To 202 Step 2 + Print Format$(Str(g(n)), "####"); + If col Mod 10 = 0 Then Print + col += 1 + Next + + Print "\nG(1.000.000) = "; g(1000000) + +End + +Function g(n As Integer) As Integer + + Dim i As Integer, count As Integer = 0 + If n Mod 2 = 0 Then + For i = 2 To n \ 2 '(1/2) * n + If isPrime(i) And isPrime(n - i) Then count += 1 + Next + End If + Return count + +End Function diff --git a/Task/Goldbachs-comet/FreeBASIC/goldbachs-comet-2.basic b/Task/Goldbachs-comet/Gambas/goldbachs-comet-2.gambas similarity index 100% rename from Task/Goldbachs-comet/FreeBASIC/goldbachs-comet-2.basic rename to Task/Goldbachs-comet/Gambas/goldbachs-comet-2.gambas diff --git a/Task/Goldbachs-comet/Yabasic/goldbachs-comet-1.basic b/Task/Goldbachs-comet/Yabasic/goldbachs-comet-1.basic new file mode 100644 index 0000000000..effc0a4409 --- /dev/null +++ b/Task/Goldbachs-comet/Yabasic/goldbachs-comet-1.basic @@ -0,0 +1,23 @@ +import isprime + +print "The first 100 G numbers are:" + +col = 1 +for n = 4 to 202 step 2 + print g(n) using ("####"); + if mod(col, 10) = 0 print + col = col + 1 +next n + +print "\nG(1000000) = ", g(1000000) +end + +sub g(n) + count = 0 + if mod(n, 2) = 0 then + for i = 2 to (1/2) * n + if isPrime(i) and isPrime(n - i) count = count + 1 + next i + fi + return count +end sub diff --git a/Task/Goldbachs-comet/Yabasic/goldbachs-comet-2.basic b/Task/Goldbachs-comet/Yabasic/goldbachs-comet-2.basic new file mode 100644 index 0000000000..64f65b0ac9 --- /dev/null +++ b/Task/Goldbachs-comet/Yabasic/goldbachs-comet-2.basic @@ -0,0 +1,46 @@ +#include +#include +#include +#include +#include +#include + +std::vector primes; + +void initialise_primes(const int32_t& limit) { + primes.resize(limit); + for ( int32_t i = 2; i < limit; ++i ) { + primes[i] = true; + } + + for ( int32_t n = 2; n < sqrt(limit); ++n ) { + for ( int32_t k = n * n; k < limit; k += n ) { + primes[k] = false; + } + } +} + +int32_t goldbach_function(const int32_t& number) { + if ( number <= 2 || number % 2 == 1 ) { + throw std::invalid_argument("Argument must be even and greater than 2: " + std::to_string(number)); + } + + int32_t result = 0; + for ( int32_t i = 1; i <= number / 2; ++i ) { + if ( primes[i] && primes[number - i] ) { + result++; + } + } + return result; +} + +int main() { + initialise_primes(2'000'000); + + std::cout << "The first 100 Goldbach numbers:" << std::endl; + for ( int32_t n = 2; n < 102; ++n ) { + std::cout << std::setw(3) << goldbach_function(2 * n) << ( n % 10 == 1 ? "\n" : "" ); + } + + std::cout << "\n" << "The 1,000,000th Goldbach number = " << goldbach_function(1'000'000) << std::endl; +} diff --git a/Task/Golden-ratio-Convergence/Sidef/golden-ratio-convergence.sidef b/Task/Golden-ratio-Convergence/Sidef/golden-ratio-convergence.sidef new file mode 100644 index 0000000000..b4f3172e60 --- /dev/null +++ b/Task/Golden-ratio-Convergence/Sidef/golden-ratio-convergence.sidef @@ -0,0 +1,9 @@ +const phi = (1+sqrt(5))/2 +func GR(n) is cached { (n == 1) ? 1 : (1 + 1/__FUNC__(n-1)) } + +var n = (1..Inf -> first {|n| + abs(GR(n) - GR(n+1)) <= 1e-5 +}) + +say "#{n} iterations: #{GR(n+1)} (cfrac)\n#{' '*15}#{phi} (actual)" +say "The error is: #{GR(n+1) - phi}" diff --git a/Task/Graph-colouring/Wren/graph-colouring.wren b/Task/Graph-colouring/Wren/graph-colouring.wren index 0adcaee234..9793e9f9e4 100644 --- a/Task/Graph-colouring/Wren/graph-colouring.wren +++ b/Task/Graph-colouring/Wren/graph-colouring.wren @@ -1,6 +1,6 @@ -import "/dynamic" for Struct -import "/sort" for Sort -import "/fmt" for Fmt +import "./dynamic" for Struct +import "./sort" for Sort +import "./fmt" for Fmt // (n)umber of node and its (v)alence i.e. number of neighbors var NodeVal = Struct.create("NodeVal", ["n", "v"]) diff --git a/Task/Gray-code/Wren/gray-code.wren b/Task/Gray-code/Wren/gray-code.wren index 1774f73d3e..8d50662588 100644 --- a/Task/Gray-code/Wren/gray-code.wren +++ b/Task/Gray-code/Wren/gray-code.wren @@ -1,4 +1,4 @@ -import "/fmt" for Fmt +import "./fmt" for Fmt var toGray = Fn.new { |n| n ^ (n>>1) } diff --git a/Task/Grayscale-image/MiniScript/grayscale-image.mini b/Task/Grayscale-image/MiniScript/grayscale-image.mini new file mode 100644 index 0000000000..062d6fb5d8 --- /dev/null +++ b/Task/Grayscale-image/MiniScript/grayscale-image.mini @@ -0,0 +1,34 @@ +greyedColor = function(colr) + clist = color.toList(colr) + lum = [0.2126, 0.7152, 0.0722] + + red = clist[0] * lum[0] + green = clist[1] * lum[1] + blue = clist[2] * lum[2] + grey = red + green + blue + return color.fromList([grey, grey, grey, clist[3]]) +end function + +toGreyScale = function(img) + greyImg = Image.create(img.width, img.height) + for x in range(0, img.width - 1) + for y in range(0, img.height - 1) + greyed = greyedColor(img.pixel(x, y)) + greyImg.setPixel x, y, greyed + end for + end for + return greyImg +end function + +clear + +// The turtle and color wheel images are included with MiniMicro +turtle = file.loadImage("/sys/pics/animals/turtle.png") +greyTurtle = toGreyScale(turtle) +gfx.drawImage turtle, 0, 0 +gfx.drawImage greyTurtle, turtle.width, 0 + +colorWheel = file.loadImage("/sys/pics/ColorWheel.png") +greyWheel = toGreyScale(colorWheel) +gfx.drawImage colorWheel, 0, 320 +gfx.drawImage greyWheel, greyWheel.width, 320 diff --git a/Task/Greatest-common-divisor/Chipmunk-Basic/greatest-common-divisor.basic b/Task/Greatest-common-divisor/Chipmunk-Basic/greatest-common-divisor.basic new file mode 100644 index 0000000000..b633cc3739 --- /dev/null +++ b/Task/Greatest-common-divisor/Chipmunk-Basic/greatest-common-divisor.basic @@ -0,0 +1,15 @@ +100 cls +110 a = 40902 +120 b = 24140 +130 print : print "GCD(";a;", ";b;") = ";gcdi(a,b) +140 print : print "GCD(";a;", 111) = ";gcdi(a,111) +170 end + +190 sub gcdi(x,y) +200 while y +210 t = y +220 y = x mod y +230 x = t +240 wend +250 gcdi = x +260 end sub diff --git a/Task/Greatest-common-divisor/Dt/greatest-common-divisor.dt b/Task/Greatest-common-divisor/Dt/greatest-common-divisor.dt index e95a926f1c..52034fc15d 100644 --- a/Task/Greatest-common-divisor/Dt/greatest-common-divisor.dt +++ b/Task/Greatest-common-divisor/Dt/greatest-common-divisor.dt @@ -1,3 +1 @@ -[dup [dup rot % loop] swap do?] \loop def - -[loop drop] \gcd def +[[a b]: a [b a b % gcd] b do?] \gcd def diff --git a/Task/Greatest-element-of-a-list/Zig/greatest-element-of-a-list.zig b/Task/Greatest-element-of-a-list/Zig/greatest-element-of-a-list.zig index 7dad1f9dc4..ea8499a79c 100644 --- a/Task/Greatest-element-of-a-list/Zig/greatest-element-of-a-list.zig +++ b/Task/Greatest-element-of-a-list/Zig/greatest-element-of-a-list.zig @@ -1,7 +1,8 @@ -fn max( a: []const f32) f32{ - var output = a[0]; - for(a)|num|{ - output = @max(output, num); - } -return output; +/// Asserts that `input` is not empty (len >= 1). +pub fn max(comptime T: type, input: []const T) T { + var max_elem: T = input[0]; + for (input[1..]) |elem| { + max_elem = @max(max_elem, elem); + } + return max_elem; } diff --git a/Task/Greedy-algorithm-for-Egyptian-fractions/00-TASK.txt b/Task/Greedy-algorithm-for-Egyptian-fractions/00-TASK.txt index 7319ffb5ae..438c913d3d 100644 --- a/Task/Greedy-algorithm-for-Egyptian-fractions/00-TASK.txt +++ b/Task/Greedy-algorithm-for-Egyptian-fractions/00-TASK.txt @@ -38,5 +38,6 @@ For improper fractions, the integer part of any improper fraction should be firs ;Also see: *   Wolfram MathWorld™ entry: [http://mathworld.wolfram.com/EgyptianFraction.html Egyptian fraction] +*   Numberphile YouTube video: [https://youtu.be/aVUUbNbQkbQ Egyptian Fractions and the Greedy Algorithm]

diff --git a/Task/Greedy-algorithm-for-Egyptian-fractions/C++/greedy-algorithm-for-egyptian-fractions.cpp b/Task/Greedy-algorithm-for-Egyptian-fractions/C++/greedy-algorithm-for-egyptian-fractions.cpp index 392b4dbc74..2d67979bc3 100644 --- a/Task/Greedy-algorithm-for-Egyptian-fractions/C++/greedy-algorithm-for-egyptian-fractions.cpp +++ b/Task/Greedy-algorithm-for-Egyptian-fractions/C++/greedy-algorithm-for-egyptian-fractions.cpp @@ -1,21 +1,20 @@ +#include #include #include -#include -#include #include -#include +#include +#include typedef boost::multiprecision::cpp_int integer; struct fraction { - fraction(const integer& n, const integer& d) : numerator(n), denominator(d) {} + fraction(const integer& n, const integer& d) + : numerator(n), denominator(d) {} integer numerator; integer denominator; }; -integer mod(const integer& x, const integer& y) { - return ((x % y) + y) % y; -} +integer mod(const integer& x, const integer& y) { return ((x % y) + y) % y; } size_t count_digits(const integer& i) { std::ostringstream os; @@ -28,9 +27,8 @@ std::string to_string(const integer& i) { std::ostringstream os; os << i; std::string s = os.str(); - if (s.length() > max_digits) { - s = s.substr(0, max_digits/2) + "..." + s.substr(s.length()-max_digits/2); - } + if (s.length() > max_digits) + s.replace(max_digits / 2, s.length() - max_digits, "..."); return s; } @@ -42,7 +40,7 @@ void egyptian(const fraction& f, std::vector& result) { result.clear(); integer x = f.numerator, y = f.denominator; while (x > 0) { - integer z = (y + x - 1)/x; + integer z = (y + x - 1) / x; result.emplace_back(1, z); x = mod(-y, x); y = y * z; @@ -63,7 +61,7 @@ void print_egyptian(const fraction& f) { std::cout << "Egyptian fraction for " << f << ": "; integer x = f.numerator, y = f.denominator; if (x > y) { - std::cout << "[" << x/y << "] "; + std::cout << "[" << x / y << "] "; x = x % y; } std::vector result; @@ -96,11 +94,15 @@ void show_max_terms_and_max_denominator(const integer& limit) { } } } - std::cout << "Proper fractions with most terms and largest denominator, limit = " << limit << ":\n\n"; - std::cout << "Most terms (" << max_terms << "): " << max_terms_fraction.value() << " = "; + std::cout + << "Proper fractions with most terms and largest denominator, limit = " + << limit << ":\n\n"; + std::cout << "Most terms (" << max_terms + << "): " << max_terms_fraction.value() << " = "; print_egyptian(max_terms_result); - std::cout << "\nLargest denominator (" << count_digits(max_denominator_result.back().denominator) - << " digits): " << max_denominator_fraction.value() << " = "; + std::cout << "\nLargest denominator (" + << count_digits(max_denominator_result.back().denominator) + << " digits): " << max_denominator_fraction.value() << " = "; print_egyptian(max_denominator_result); } diff --git a/Task/Greedy-algorithm-for-Egyptian-fractions/Wren/greedy-algorithm-for-egyptian-fractions.wren b/Task/Greedy-algorithm-for-Egyptian-fractions/Wren/greedy-algorithm-for-egyptian-fractions.wren index ca29811b7b..296320ca07 100644 --- a/Task/Greedy-algorithm-for-Egyptian-fractions/Wren/greedy-algorithm-for-egyptian-fractions.wren +++ b/Task/Greedy-algorithm-for-Egyptian-fractions/Wren/greedy-algorithm-for-egyptian-fractions.wren @@ -1,4 +1,4 @@ -import "/big" for BigInt, BigRat +import "./big" for BigInt, BigRat var toEgyptianHelper // recursive toEgyptianHelper = Fn.new { |n, d, fracs| diff --git a/Task/Guess-the-number-With-feedback-player-/Wren/guess-the-number-with-feedback-player-.wren b/Task/Guess-the-number-With-feedback-player-/Wren/guess-the-number-with-feedback-player-.wren index 60e9fe4180..26b2300fb0 100644 --- a/Task/Guess-the-number-With-feedback-player-/Wren/guess-the-number-with-feedback-player-.wren +++ b/Task/Guess-the-number-With-feedback-player-/Wren/guess-the-number-with-feedback-player-.wren @@ -1,5 +1,5 @@ import "io" for Stdin, Stdout -import "/str" for Char +import "./str" for Char var hle var lowest = 1 diff --git a/Task/Guess-the-number-With-feedback/Chipmunk-Basic/guess-the-number-with-feedback.basic b/Task/Guess-the-number-With-feedback/Chipmunk-Basic/guess-the-number-with-feedback.basic new file mode 100644 index 0000000000..1c8f0ee3af --- /dev/null +++ b/Task/Guess-the-number-With-feedback/Chipmunk-Basic/guess-the-number-with-feedback.basic @@ -0,0 +1,16 @@ +100 cls +110 nmax = 20 +120 chosen = int(rnd(1)*nmax)+1 +130 print "Guess a whole number between 1 a ";nmax;chr$(10) +140 do +150 input "Enter your number: ",guess +160 if guess < n or guess > nmax then +170 print "That was an invalid number" +180 exit do +190 else +200 if guess < chosen then print "Sorry, your number was too low" +210 if guess > chosen then print "Sorry, your number was too high" +220 if guess = chosen then print "Well guessed!" +230 endif +240 loop until guess = chosen +250 end diff --git a/Task/Guess-the-number-With-feedback/FutureBasic/guess-the-number-with-feedback.basic b/Task/Guess-the-number-With-feedback/FutureBasic/guess-the-number-with-feedback.basic new file mode 100644 index 0000000000..f5befe119a --- /dev/null +++ b/Task/Guess-the-number-With-feedback/FutureBasic/guess-the-number-with-feedback.basic @@ -0,0 +1,49 @@ +Short n // We'll just do 1..10 to get the idea + +void local fn BuildInterface + Short i + window 1, @"Guess the number", ( 0, 0, 340, 120 ) + for i = 1 to 10 + button i,,, fn StringWithFormat(@"%d", i), ( 26 * i, 60, 40, 22 ) + ButtonSetBordered( i, No ) + next + button 11,,, @"Quit", ( 38, 10, 95, 32 ) + button 12,,, @"Again", ( 200, 10, 95, 32 ) + textlabel 13, @"Guess the number:", ( 112, 85, 200, 22 ) + textlabel 14,, ( 158, 30, 100, 22 ) // Hints here + filemenu 1 : menu 1, -1, No // Build but disable File menu + editmenu 2 : menu 2, -1, No // Build but disable Edit menu +end fn + +void local fn newGame + CFRange r = fn RangeMake( 1, 10 ) + ControlRangeSetEnabled( r, Yes ) // Enable number buttobns + button 11, No // Disable Quit button + button 12, No // Disable Again button + n = rnd( 10 ) // Choose a random number + textlabel 14, @"🔴" // Not found yet +end fn + +void local fn DoDialog( evt as Long, tag as Long ) + CFRange r = fn RangeMake( 1, 10 ) + select evt + case _btnClick + button tag, No + select tag + case 11 : end // Quit + case 12 : fn newGame // Again + case n : textlabel 14, @"🟢" // Found + ControlRangeSetEnabled( r, No ) + button 11, Yes + button 12, Yes + case < n : textlabel 14, @"➡️" + case > n : textlabel 14, @"⬅️" + end select + case _windowWillClose : end + end select +end fn + +fn buildInterface +fn newGame +on dialog fn DoDialog +handleevents diff --git a/Task/Guess-the-number-With-feedback/GW-BASIC/guess-the-number-with-feedback.basic b/Task/Guess-the-number-With-feedback/GW-BASIC/guess-the-number-with-feedback.basic new file mode 100644 index 0000000000..430058a3db --- /dev/null +++ b/Task/Guess-the-number-With-feedback/GW-BASIC/guess-the-number-with-feedback.basic @@ -0,0 +1,14 @@ +100 CLS +110 RANDOMIZE 1 +120 L = 20 +130 X = INT(RND(1)*L)+1 +140 PRINT "Guess a whole number between 1 a ";L;CHR$(10) +150 'do +160 INPUT "Enter your number: ", N +170 IF N < N OR N > L THEN PRINT "That was an invalid number" : GOTO 230 +180 'else +190 IF N < X THEN PRINT "Sorry, your number was too low" +200 IF N > X THEN PRINT "Sorry, your number was too high" +210 IF N = X THEN PRINT "Well guessed!" +220 IF N <> X THEN GOTO 150 +230 END diff --git a/Task/Guess-the-number-With-feedback/MSX-Basic/guess-the-number-with-feedback.basic b/Task/Guess-the-number-With-feedback/MSX-Basic/guess-the-number-with-feedback.basic new file mode 100644 index 0000000000..4d9af5c34d --- /dev/null +++ b/Task/Guess-the-number-With-feedback/MSX-Basic/guess-the-number-with-feedback.basic @@ -0,0 +1,13 @@ +100 CLS +120 L = 20 +130 X = INT(RND(1)*L)+1 +140 PRINT "Guess a whole number between 1 a ";L;CHR$(10) +150 'do +160 INPUT "Enter your number: "; N +170 IF N < N OR N > L THEN PRINT "That was an invalid number" : GOTO 230 +180 'else +190 IF N < X THEN PRINT "Sorry, your number was too low" +200 IF N > X THEN PRINT "Sorry, your number was too high" +210 IF N = X THEN PRINT "Well guessed!" +220 IF N <> X THEN GOTO 150 +230 END diff --git a/Task/HTTP/JavaScript/http-1.js b/Task/HTTP/JavaScript/http-1.js index 407e801e8c..2d89869726 100644 --- a/Task/HTTP/JavaScript/http-1.js +++ b/Task/HTTP/JavaScript/http-1.js @@ -1,7 +1,3 @@ -var req = new XMLHttpRequest(); -req.onload = function() { - console.log(this.responseText); -}; - -req.open('get', 'http://rosettacode.org', true); -req.send() +const response = await fetch('http://rosettacode.org'); +const text = await response.text(); +console.log(text); diff --git a/Task/HTTP/JavaScript/http-2.js b/Task/HTTP/JavaScript/http-2.js index f9e59fcce1..1a318c4898 100644 --- a/Task/HTTP/JavaScript/http-2.js +++ b/Task/HTTP/JavaScript/http-2.js @@ -1,5 +1,5 @@ -fetch('http://rosettacode.org').then(function(response) { +fetch('http://rosettacode.org').then(function (response) { return response.text(); -}).then(function(myText) { - console.log(myText); +}).then(function (text) { + console.log(text); }); diff --git a/Task/HTTP/JavaScript/http-3.js b/Task/HTTP/JavaScript/http-3.js index c6af7e95d1..407e801e8c 100644 --- a/Task/HTTP/JavaScript/http-3.js +++ b/Task/HTTP/JavaScript/http-3.js @@ -1,65 +1,7 @@ -/** - * @name _http - * @description Generic API Client using XMLHttpRequest - * @param {string} url The URI/URL to connect to - * @param {string} method The HTTP method to invoke- GET, POST, etc - * @param {function} callback Once the HTTP request has completed, responseText is passed into this function for execution - * @param {object} params Query Parameters in a JavaScript Object (Optional) - * - */ -function _http(url, method, callback, params) { - var xhr, - reqUrl; +var req = new XMLHttpRequest(); +req.onload = function() { + console.log(this.responseText); +}; - xhr = new XMLHttpRequest(); - xhr.onreadystatechange = function xhrProc() { - if (xhr.readyState == 4 && xhr.status == 200) { - callback(xhr.responseText); - } - }; - - - /** If Query Parameters are present, handle them... */ - if (typeof params === 'undefined') { - reqUrl = url; - } else { - switch (method) { - case 'GET': - reqUrl = url + procQueryParams(params); - break; - case 'POST': - reqUrl = url; - break; - default: - } - } - - - /** Send the HTTP Request */ - if (reqUrl) { - xhr.open(method, reqUrl, true); - xhr.setRequestHeader("Accept", "application/json"); - - if (method === 'POST') { - xhr.send(params); - } else { - xhr.send(); - } - } - - - /** - * @name procQueryParams - * @description Return function that converts Query Parameters from a JavaScript Object to a proper URL encoded string - * @param {object} params Query Parameters in a JavaScript Object - * - */ - function procQueryParams(params) { - return "?" + Object - .keys(params) - .map(function (key) { - return key + "=" + encodeURIComponent(params[key]) - }) - .join("&") - } -} +req.open('get', 'http://rosettacode.org', true); +req.send() diff --git a/Task/HTTP/JavaScript/http-4.js b/Task/HTTP/JavaScript/http-4.js index 1dc4829fb1..c6af7e95d1 100644 --- a/Task/HTTP/JavaScript/http-4.js +++ b/Task/HTTP/JavaScript/http-4.js @@ -1,3 +1,65 @@ -$.get('http://rosettacode.org', function(data) { - console.log(data); -}; +/** + * @name _http + * @description Generic API Client using XMLHttpRequest + * @param {string} url The URI/URL to connect to + * @param {string} method The HTTP method to invoke- GET, POST, etc + * @param {function} callback Once the HTTP request has completed, responseText is passed into this function for execution + * @param {object} params Query Parameters in a JavaScript Object (Optional) + * + */ +function _http(url, method, callback, params) { + var xhr, + reqUrl; + + xhr = new XMLHttpRequest(); + xhr.onreadystatechange = function xhrProc() { + if (xhr.readyState == 4 && xhr.status == 200) { + callback(xhr.responseText); + } + }; + + + /** If Query Parameters are present, handle them... */ + if (typeof params === 'undefined') { + reqUrl = url; + } else { + switch (method) { + case 'GET': + reqUrl = url + procQueryParams(params); + break; + case 'POST': + reqUrl = url; + break; + default: + } + } + + + /** Send the HTTP Request */ + if (reqUrl) { + xhr.open(method, reqUrl, true); + xhr.setRequestHeader("Accept", "application/json"); + + if (method === 'POST') { + xhr.send(params); + } else { + xhr.send(); + } + } + + + /** + * @name procQueryParams + * @description Return function that converts Query Parameters from a JavaScript Object to a proper URL encoded string + * @param {object} params Query Parameters in a JavaScript Object + * + */ + function procQueryParams(params) { + return "?" + Object + .keys(params) + .map(function (key) { + return key + "=" + encodeURIComponent(params[key]) + }) + .join("&") + } +} diff --git a/Task/HTTP/JavaScript/http-5.js b/Task/HTTP/JavaScript/http-5.js index b200a700c9..1dc4829fb1 100644 --- a/Task/HTTP/JavaScript/http-5.js +++ b/Task/HTTP/JavaScript/http-5.js @@ -1,19 +1,3 @@ -const http = require('http'); - -http.get('http://rosettacode.org', (resp) => { - - let data = ''; - - // A chunk of data has been recieved. - resp.on('data', (chunk) => { - data += chunk; - }); - - // The whole response has been received. Print out the result. - resp.on('end', () => { - console.log("Data:", data); - }); - -}).on("error", (err) => { - console.log("Error: " + err.message); -}); +$.get('http://rosettacode.org', function(data) { + console.log(data); +}; diff --git a/Task/HTTP/JavaScript/http-6.js b/Task/HTTP/JavaScript/http-6.js new file mode 100644 index 0000000000..b200a700c9 --- /dev/null +++ b/Task/HTTP/JavaScript/http-6.js @@ -0,0 +1,19 @@ +const http = require('http'); + +http.get('http://rosettacode.org', (resp) => { + + let data = ''; + + // A chunk of data has been recieved. + resp.on('data', (chunk) => { + data += chunk; + }); + + // The whole response has been received. Print out the result. + resp.on('end', () => { + console.log("Data:", data); + }); + +}).on("error", (err) => { + console.log("Error: " + err.message); +}); diff --git a/Task/HTTP/PowerShell/http-1.psh b/Task/HTTP/PowerShell/http-1.psh new file mode 100644 index 0000000000..7541850d03 --- /dev/null +++ b/Task/HTTP/PowerShell/http-1.psh @@ -0,0 +1 @@ +Invoke-WebRequest 'http://www.rosettacode.org' diff --git a/Task/HTTP/PowerShell/http.psh b/Task/HTTP/PowerShell/http-2.psh similarity index 100% rename from Task/HTTP/PowerShell/http.psh rename to Task/HTTP/PowerShell/http-2.psh diff --git a/Task/HTTP/Sidef/http.sidef b/Task/HTTP/Sidef/http.sidef index 0931d6ad19..d5ea01cb56 100644 --- a/Task/HTTP/Sidef/http.sidef +++ b/Task/HTTP/Sidef/http.sidef @@ -1,13 +1,12 @@ +require('HTTP::Tiny') + func get(url) { - var lwp = ( - try { require('LWP::UserAgent') } - catch { warn "'LWP::UserAgent' is not installed!"; return nil } - ) - var ua = lwp.new(agent => 'Mozilla/5.0') - if (var resp = ua.get(url); resp.is_success) { - return resp.decoded_content + static ua = %O.new(agent => 'Mozilla/5.0') + var resp = ua.get(url) + if (resp{:success}) { + return resp{:content}.decode_utf8 } return nil } -print get("http://rosettacode.org") +say get("http://rosettacode.org") diff --git a/Task/HTTP/Wren/http-1.wren b/Task/HTTP/Wren/http-1.wren index a0ee872872..68b4d13a8d 100644 --- a/Task/HTTP/Wren/http-1.wren +++ b/Task/HTTP/Wren/http-1.wren @@ -1,4 +1,4 @@ -/* http.wren */ +/* HTTP.wren */ var CURLOPT_URL = 10002 var CURLOPT_FOLLOWLOCATION = 52 diff --git a/Task/HTTP/Wren/http-2.wren b/Task/HTTP/Wren/http-2.wren index 58dc671d5a..f352990519 100644 --- a/Task/HTTP/Wren/http-2.wren +++ b/Task/HTTP/Wren/http-2.wren @@ -1,4 +1,4 @@ -/* gcc http.c -o http -lcurl -lwren -lm */ +/* gcc HTTP.c -o HTTP -lcurl -lwren -lm */ #include #include @@ -108,7 +108,7 @@ int main(int argc, char **argv) { config.bindForeignMethodFn = &bindForeignMethod; WrenVM* vm = wrenNewVM(&config); const char* module = "main"; - const char* fileName = "http.wren"; + const char* fileName = "HTTP.wren"; char *script = readFile(fileName); WrenInterpretResult result = wrenInterpret(vm, module, script); switch (result) { diff --git a/Task/HTTPS-Authenticated/Wren/https-authenticated-1.wren b/Task/HTTPS-Authenticated/Wren/https-authenticated-1.wren index 24368c46f4..57f5ccf7af 100644 --- a/Task/HTTPS-Authenticated/Wren/https-authenticated-1.wren +++ b/Task/HTTPS-Authenticated/Wren/https-authenticated-1.wren @@ -1,4 +1,4 @@ -/* https_authenticated.wren */ +/* HTTPS_Authenticated.wren */ var CURLOPT_URL = 10002 var CURLOPT_FOLLOWLOCATION = 52 diff --git a/Task/HTTPS-Authenticated/Wren/https-authenticated-2.wren b/Task/HTTPS-Authenticated/Wren/https-authenticated-2.wren index 77ad8f06f5..f57b8f7e7d 100644 --- a/Task/HTTPS-Authenticated/Wren/https-authenticated-2.wren +++ b/Task/HTTPS-Authenticated/Wren/https-authenticated-2.wren @@ -1,4 +1,4 @@ -/* gcc https_authenticated.c -o https_authenticated -lcurl -lwren -lm */ +/* gcc HTTPS_Authenticated.c -o HTTPS_Authenticated -lcurl -lwren -lm */ #include #include @@ -108,7 +108,7 @@ int main(int argc, char **argv) { config.bindForeignMethodFn = &bindForeignMethod; WrenVM* vm = wrenNewVM(&config); const char* module = "main"; - const char* fileName = "https_authenticated.wren"; + const char* fileName = "HTTPS_Authenticated.wren"; char *script = readFile(fileName); WrenInterpretResult result = wrenInterpret(vm, module, script); switch (result) { diff --git a/Task/HTTPS-Client-authenticated/Wren/https-client-authenticated-1.wren b/Task/HTTPS-Client-authenticated/Wren/https-client-authenticated-1.wren index 050d6f4b71..9bd8870f49 100644 --- a/Task/HTTPS-Client-authenticated/Wren/https-client-authenticated-1.wren +++ b/Task/HTTPS-Client-authenticated/Wren/https-client-authenticated-1.wren @@ -1,4 +1,4 @@ -/* https_client-authenticated.wren */ +/* HTTPS_Client-authenticated.wren */ var CURLOPT_URL = 10002 var CURLOPT_SSLCERT = 10025 diff --git a/Task/HTTPS-Client-authenticated/Wren/https-client-authenticated-2.wren b/Task/HTTPS-Client-authenticated/Wren/https-client-authenticated-2.wren index d7723e03c9..6cb74e498d 100644 --- a/Task/HTTPS-Client-authenticated/Wren/https-client-authenticated-2.wren +++ b/Task/HTTPS-Client-authenticated/Wren/https-client-authenticated-2.wren @@ -1,4 +1,4 @@ -/* gcc https_client-authenticated.c -o https_client-authenticated -lcurl -lwren -lm */ +/* gcc HTTPS_Client-authenticated.c -o HTTPS_Client-authenticated -lcurl -lwren -lm */ #include #include @@ -98,7 +98,7 @@ int main(int argc, char **argv) { config.bindForeignMethodFn = &bindForeignMethod; WrenVM* vm = wrenNewVM(&config); const char* module = "main"; - const char* fileName = "https_client-authenticated.wren"; + const char* fileName = "HTTPS_Client-authenticated.wren"; char *script = readFile(fileName); WrenInterpretResult result = wrenInterpret(vm, module, script); switch (result) { diff --git a/Task/HTTPS/D/https.d b/Task/HTTPS/D/https.d index 87b1f219e2..43d96bf261 100644 --- a/Task/HTTPS/D/https.d +++ b/Task/HTTPS/D/https.d @@ -1,2 +1,4 @@ +import std.stdio; +import std.net.curl; auto data = get("https://sourceforge.net"); writeln(data); diff --git a/Task/HTTPS/JavaScript/https-1.js b/Task/HTTPS/JavaScript/https-1.js index 081d7adf18..b76457ca61 100644 --- a/Task/HTTPS/JavaScript/https-1.js +++ b/Task/HTTPS/JavaScript/https-1.js @@ -1,5 +1,3 @@ -fetch("https://sourceforge.net").then(function (response) { - return response.text(); -}).then(function (body) { - return body; -}); +const response = await fetch('https://rosettacode.org'); +const text = await response.text(); +console.log(text); diff --git a/Task/HTTPS/JavaScript/https-2.js b/Task/HTTPS/JavaScript/https-2.js index 082459140c..081d7adf18 100644 --- a/Task/HTTPS/JavaScript/https-2.js +++ b/Task/HTTPS/JavaScript/https-2.js @@ -1,11 +1,5 @@ -require("https").get("https://sourceforge.net", function (resp) { - let body = ""; - resp.on("data", function (chunk) { - body += chunk; - }); - resp.on("end", function () { - console.log(body); - }); -}).on("error", function (err) { - console.error("Error: " + err.message); +fetch("https://sourceforge.net").then(function (response) { + return response.text(); +}).then(function (body) { + return body; }); diff --git a/Task/HTTPS/JavaScript/https-3.js b/Task/HTTPS/JavaScript/https-3.js new file mode 100644 index 0000000000..082459140c --- /dev/null +++ b/Task/HTTPS/JavaScript/https-3.js @@ -0,0 +1,11 @@ +require("https").get("https://sourceforge.net", function (resp) { + let body = ""; + resp.on("data", function (chunk) { + body += chunk; + }); + resp.on("end", function () { + console.log(body); + }); +}).on("error", function (err) { + console.error("Error: " + err.message); +}); diff --git a/Task/HTTPS/PowerShell/https-1.psh b/Task/HTTPS/PowerShell/https-1.psh new file mode 100644 index 0000000000..c61a2e849c --- /dev/null +++ b/Task/HTTPS/PowerShell/https-1.psh @@ -0,0 +1 @@ +Invoke-WebRequest 'https://www.rosettacode.org' diff --git a/Task/HTTPS/PowerShell/https.psh b/Task/HTTPS/PowerShell/https-2.psh similarity index 100% rename from Task/HTTPS/PowerShell/https.psh rename to Task/HTTPS/PowerShell/https-2.psh diff --git a/Task/HTTPS/Sidef/https.sidef b/Task/HTTPS/Sidef/https.sidef index aab3e6fb1d..c769f7fe02 100644 --- a/Task/HTTPS/Sidef/https.sidef +++ b/Task/HTTPS/Sidef/https.sidef @@ -1,11 +1,16 @@ -var lwp = require('LWP::UserAgent'); # LWP::Protocol::https is needed -var url = 'https://rosettacode.org'; +require('LWP::UserAgent') +require('LWP::Protocol::https') -var ua = lwp.new( - agent => 'Mozilla/5.0', - ssl_opts => Hash.new(verify_hostname => 1), -); +func get(url) { + static ua = %O.new( + agent => 'Mozilla/5.0', + ssl_opts => Hash(verify_hostname => 1), + ) + var resp = ua.get(url) + if (resp.is_success) { + return resp.decoded_content + } + die "Failed to GET #{url}: #{resp.status_line}" +} -var resp = ua.get(url); -resp.is_success || die "Failed to GET #{url.dump}: #{resp.status_line}"; -print resp.decoded_content; +say get("https://rosettacode.org") diff --git a/Task/HTTPS/Wren/https-1.wren b/Task/HTTPS/Wren/https-1.wren index 8de75b4c9d..c26b4bd296 100644 --- a/Task/HTTPS/Wren/https-1.wren +++ b/Task/HTTPS/Wren/https-1.wren @@ -1,4 +1,4 @@ -/* https.wren */ +/* HTTPS.wren */ var CURLOPT_URL = 10002 var CURLOPT_FOLLOWLOCATION = 52 diff --git a/Task/HTTPS/Wren/https-2.wren b/Task/HTTPS/Wren/https-2.wren index 55a9ed9dc1..dc70c2b81b 100644 --- a/Task/HTTPS/Wren/https-2.wren +++ b/Task/HTTPS/Wren/https-2.wren @@ -1,4 +1,4 @@ -/* gcc https.c -o https -lcurl -lwren -lm */ +/* gcc HTTPS.c -o HTTPS -lcurl -lwren -lm */ #include #include @@ -108,7 +108,7 @@ int main(int argc, char **argv) { config.bindForeignMethodFn = &bindForeignMethod; WrenVM* vm = wrenNewVM(&config); const char* module = "main"; - const char* fileName = "https.wren"; + const char* fileName = "HTTPS.wren"; char *script = readFile(fileName); WrenInterpretResult result = wrenInterpret(vm, module, script); switch (result) { diff --git a/Task/Hailstone-sequence/Amazing-Hopper/hailstone-sequence.hopper b/Task/Hailstone-sequence/Amazing-Hopper/hailstone-sequence.hopper new file mode 100644 index 0000000000..4458a6198f --- /dev/null +++ b/Task/Hailstone-sequence/Amazing-Hopper/hailstone-sequence.hopper @@ -0,0 +1,43 @@ +#include + +#proto Hailstone(_X_,_SW_) + +algoritmo + + valor=27, máxima secuencia=0, vtemp=0 + imprimir ( _Hailstone(27,1) ---copiar en 'máxima secuencia'--- , NL ) + + i=28 + iterar + _Hailstone(i,0), copiar en 'vtemp' + cuando( sea mayor que 'máxima secuencia' ) { + máxima secuencia = vtemp + valor=i + } + ++i + hasta que ' #(i==100000) ' + imprimir ( #(utf8("Máxima longitud ")),máxima secuencia,\ + " fue encontrada para Hailstone(",valor,\ + #(utf8(") para números <100,000")), NL ) + +terminar + +subrutinas + +Hailstone(n, sw) + largo_de_secuencia = 0 + v={}, n, mete(v) + iterar + tomar si ( es par(n), #(n/2), \ + tomar si ( #(n<>1), #(3*n+1), 1) ) + ---copiar en 'n'--- mete(v) + hasta que ' #(n==1) ' + #(length(v)), mover a 'largo_de_secuencia' + cuando (sw){ + decimales '0' + #( v[1:4] ), ",...,", + #( v[largo_de_secuencia-4 : largo_de_secuencia] ) + NL, #(utf8("Tamaño de la secuencia: ")) + imprime esto; decimales normales + } +retornar ' largo_de_secuencia ' diff --git a/Task/Hailstone-sequence/EasyLang/hailstone-sequence.easy b/Task/Hailstone-sequence/EasyLang/hailstone-sequence.easy new file mode 100644 index 0000000000..a5606e817c --- /dev/null +++ b/Task/Hailstone-sequence/EasyLang/hailstone-sequence.easy @@ -0,0 +1,30 @@ +proc hailstone n . list[] . + list[] = [ ] + while n <> 1 + list[] &= n + if n mod 2 = 0 + n = n / 2 + else + n = 3 * n + 1 + . + . + list[] &= 1 +. +hailstone 27 l[] +write "27 has length " & len l[] & " with " +for i to 4 + write l[i] & " " +. +write "... " +for i = len l[] - 3 to len l[] + write l[i] & " " +. +print "" +for i = 1 to 100000 + hailstone i l[] + if len l[] >= max_iter + max_i = i + max_iter = len l[] + end +end +print max_i & " has length " & max_iter diff --git a/Task/Hailstone-sequence/MiniScript/hailstone-sequence-1.mini b/Task/Hailstone-sequence/MiniScript/hailstone-sequence-1.mini new file mode 100644 index 0000000000..dcfc96c687 --- /dev/null +++ b/Task/Hailstone-sequence/MiniScript/hailstone-sequence-1.mini @@ -0,0 +1,31 @@ +getSequence = function(n) + results = [n] + while n > 1 + if n % 2 then + n = 3 * n + 1 + else + n = n / 2 + end if + results.push n + end while + return results +end function + +h = getSequence(27) +print "The hailstone sequence for 27 has 112 elements starting with" +print h[:4] +print "and ending with" +print h[-4:] + +maxSeqLen = 0 +maxSeqVal = 0 +for i in range(1,100000) + h = getSequence(i) + if h.len > maxSeqLen then + maxSeqLen = h.len + maxSeqVal = i + end if +end for +print +print "The number < 100,000 which has the longest hailstone sequence is " + maxSeqVal + "." +print "This sequence has " + maxSeqLen + " elements." diff --git a/Task/Hailstone-sequence/MiniScript/hailstone-sequence-2.mini b/Task/Hailstone-sequence/MiniScript/hailstone-sequence-2.mini new file mode 100644 index 0000000000..14269d6451 --- /dev/null +++ b/Task/Hailstone-sequence/MiniScript/hailstone-sequence-2.mini @@ -0,0 +1,45 @@ +cache = {} +calc = function(n) + if cache.hasIndex(n) then return + items = [n] + origNum = n + while n > 1 and not cache.hasIndex(n) + if n % 2 then + n = 3 * n + 1 + else + n = n /2 + end if + items.push n + end while + cache[origNum] = {"len": items.len,"items":items} +end function + +getLen = function(n) + if not cache.hasIndex(n) then calc n + if n == 1 then return 1 + return cache[n].len + getLen(cache[n].items[-1]) - 1 +end function + +getSequence = function(n) + if not cache.hasIndex(n) then calc n + if n == 1 then return [1] + return cache[n].items[:-1] + getSequence(cache[n].items[-1]) +end function + +h = getSequence(27) +print "The hailstone sequence for 27 has " + h.len + " elements starting with" +print h[:4] +print "and ending with" +print h[-4:] + +longSeq = 0 +longSeqVal =0 +for i in range(2, 100000) + seq = getLen(i) + if longSeq < seq then + longSeq = seq + longSeqVal = i + end if +end for +print "The number < 100,000 which has the longest hailstone sequence is " + longSeqVal + "." +print "This sequence has " + longSeq + " elements." diff --git a/Task/Hailstone-sequence/SETL/hailstone-sequence.setl b/Task/Hailstone-sequence/SETL/hailstone-sequence.setl new file mode 100644 index 0000000000..b0f14b69df --- /dev/null +++ b/Task/Hailstone-sequence/SETL/hailstone-sequence.setl @@ -0,0 +1,24 @@ +program hailstone_sequence; + hail27 := hailstone(27); + print("The hailstone sequence for the number 27 has", #hail27, "elements,"); + print("starting with", hail27(..4), "and ending with", hail27(#hail27-3..)); + + sizes := [#hailstone(n) : n in [1..99999]]; + maxsize := max/sizes; + maxelem := [n : n in [1..#sizes] | sizes(n) = maxsize](1); + + print("The number < 100,000 with the longest hailstone sequence is",maxelem); + print("The length of its sequence is",sizes(maxelem)); + + proc hailstone(n); + seq := []; + loop doing seq with:= n; while n/=1 do + if even n then + n div:= 2; + else + n := 3*n + 1; + end if; + end loop; + return seq; + end proc; +end program; diff --git a/Task/Hamming-numbers/Wren/hamming-numbers-1.wren b/Task/Hamming-numbers/Wren/hamming-numbers-1.wren index 650b3d95af..266c36c8c0 100644 --- a/Task/Hamming-numbers/Wren/hamming-numbers-1.wren +++ b/Task/Hamming-numbers/Wren/hamming-numbers-1.wren @@ -1,4 +1,4 @@ -import "/big" for BigInt, BigInts +import "./big" for BigInt, BigInts var primes = [2, 3, 5].map { |p| BigInt.new(p) }.toList diff --git a/Task/Handle-a-signal/Sidef/handle-a-signal.sidef b/Task/Handle-a-signal/Sidef/handle-a-signal.sidef index b77cad0bb3..41b5408755 100644 --- a/Task/Handle-a-signal/Sidef/handle-a-signal.sidef +++ b/Task/Handle-a-signal/Sidef/handle-a-signal.sidef @@ -1,11 +1,11 @@ -var start = Time.sec; -  -Sig.INT { |_| - Sys.say("Ran for #{Time.sec - start} seconds."); - Sys.exit; +var start = Time.sec + +Sig.INT { + say "Ran for #{Time.sec - start} seconds." + Sys.exit } -  + { |i| - Sys.say(i); - Sys.sleep(0.5); -} * Math.inf; + say i + Sys.sleep(0.5) +} * Inf diff --git a/Task/Harmonic-series/Wren/harmonic-series.wren b/Task/Harmonic-series/Wren/harmonic-series.wren index 1b0db45343..2d81d37a27 100644 --- a/Task/Harmonic-series/Wren/harmonic-series.wren +++ b/Task/Harmonic-series/Wren/harmonic-series.wren @@ -1,5 +1,5 @@ -import "/big" for BigRat -import "/fmt" for Fmt +import "./big" for BigRat +import "./fmt" for Fmt var harmonic = Fn.new { |n| (1..n).reduce(BigRat.zero) { |sum, i| sum + BigRat.one/i } } diff --git a/Task/Harshad-or-Niven-series/EasyLang/harshad-or-niven-series.easy b/Task/Harshad-or-Niven-series/EasyLang/harshad-or-niven-series.easy new file mode 100644 index 0000000000..def0bfe6d7 --- /dev/null +++ b/Task/Harshad-or-Niven-series/EasyLang/harshad-or-niven-series.easy @@ -0,0 +1,25 @@ +func digsum n . + while n > 0 + sum += n mod 10 + n = n div 10 + . + return sum +. +func isHarshad n . + return if n mod digsum n = 0 +. +i = 1 +repeat + if isHarshad i = 1 + write i & " " + cnt += 1 + . + until cnt = 20 + i += 1 +. +print "" +i = 1001 +while isHarshad i = 0 + i += 1 +. +print i diff --git a/Task/Harshad-or-Niven-series/SETL/harshad-or-niven-series.setl b/Task/Harshad-or-Niven-series/SETL/harshad-or-niven-series.setl new file mode 100644 index 0000000000..7361daaa91 --- /dev/null +++ b/Task/Harshad-or-Niven-series/SETL/harshad-or-niven-series.setl @@ -0,0 +1,13 @@ +program harshad; + print("First 20 Harshad numbers:", [n := next(n) : i in [1..20]]); + print("First Harshad number >1000:", next(1000)); + + proc next(n); + (until harshad(n)) n +:= 1; end; + return n; + end proc; + + proc harshad(n); + return n mod +/[val d : d in str n] = 0; + end proc; +end program; diff --git a/Task/Harshad-or-Niven-series/Sidef/harshad-or-niven-series.sidef b/Task/Harshad-or-Niven-series/Sidef/harshad-or-niven-series.sidef index 0e33a76a77..4d1917864e 100644 --- a/Task/Harshad-or-Niven-series/Sidef/harshad-or-niven-series.sidef +++ b/Task/Harshad-or-Niven-series/Sidef/harshad-or-niven-series.sidef @@ -1,17 +1,17 @@ func harshad() { - var n = 0; + var n = 0 { - ++n while !(n %% n.digits.sum); - n; + ++n while !n.digits.sum.divides(n) + n } } -var iter = harshad(); -say 20.of { iter.run }; +var iter = harshad() +say 20.of { iter.run } -var n; +var n do { n = iter.run -} while (n <= 1000); +} while (n <= 1000) -say n; +say n diff --git a/Task/Hash-join/Wren/hash-join.wren b/Task/Hash-join/Wren/hash-join.wren index 6d8003ef00..aec648fe79 100644 --- a/Task/Hash-join/Wren/hash-join.wren +++ b/Task/Hash-join/Wren/hash-join.wren @@ -1,4 +1,4 @@ -import "/fmt" for Fmt +import "./fmt" for Fmt class A { construct new(age, name) { diff --git a/Task/Haversine-formula/Amazing-Hopper/haversine-formula.hopper b/Task/Haversine-formula/Amazing-Hopper/haversine-formula.hopper new file mode 100644 index 0000000000..2990f4560e --- /dev/null +++ b/Task/Haversine-formula/Amazing-Hopper/haversine-formula.hopper @@ -0,0 +1,40 @@ +/* fórmula de Haversine para distancias en una + superficie esférica */ + +#include + +#define MIN 60 +#define SEG 3600 +#define RADIO 6372.8 +#define UNAMILLA 1.609344 + +algoritmo + + números ( lat1, lon1, lat2, lon2, dlat, dlon, millas ) + + si ' total argumentos es (9) ' // LAT1 M LON1 M LAT2 M LON2 M + #basic{ lat1 = narg(2) + narg(3)/MIN + lon1 = narg(4) + narg(5)/MIN + lat2 = narg(6) + narg(7)/MIN + lon2 = narg(8) + narg(9)/MIN } + + sino si ' total argumentos es (13) ' // LAT1 M LON1 M S LAT2 M LON2 M S + #basic{ lat1 = narg(2) + narg(3)/MIN + narg(4)/SEG + lon1 = narg(5) + narg(6)/MIN + narg(7)/SEG + lat2 = narg(8) + narg(9)/MIN + narg(10)/SEG + lon2 = narg(11) + narg(12)/MIN + narg(13)/SEG } + sino + imprimir("Modo de uso:\ndist.bas La1 M [S] Lo1 M [S] La2 M [S] Lo2 M [S]\n") + término prematuro + fin si + + #basic{ + dlat = sin(radian(lat2 - lat1)/2)^2 + dlon = sin(radian(lon2 - lon1)/2)^2 + RADIO*(2*arc sin(sqrt(dlat + cos(radian(lat1)) * cos(radian(lat2)) * dlon ))) + } + + ---copiar en 'millas'---, " km. (",millas,dividido por (UNA MILLA)," mi.)\n" + decimales '2', imprimir + +terminar diff --git a/Task/Haversine-formula/EasyLang/haversine-formula.easy b/Task/Haversine-formula/EasyLang/haversine-formula.easy new file mode 100644 index 0000000000..5f50b5807f --- /dev/null +++ b/Task/Haversine-formula/EasyLang/haversine-formula.easy @@ -0,0 +1,9 @@ +func dist th1 ph1 th2 ph2 . + r = 6371 + ph1 -= ph2 + dz = sin th1 - sin th2 + dx = cos ph1 * cos th1 - cos th2 + dy = sin ph1 * cos th1 + return 2 * r * pi / 180 * asin (sqrt (dx * dx + dy * dy + dz * dz) / 2) +. +print dist 36.12 -86.67 33.94 -118.4 diff --git a/Task/Haversine-formula/Gambas/haversine-formula.gambas b/Task/Haversine-formula/Gambas/haversine-formula.gambas new file mode 100644 index 0000000000..c330f292a2 --- /dev/null +++ b/Task/Haversine-formula/Gambas/haversine-formula.gambas @@ -0,0 +1,21 @@ +Public deg2rad As Float = Pi / 180 ' define grados a radianes 0.01745.. +Public radioTierra As Float = 6372.8 ' radio de la tierra en km + +Public Sub Main() + + Print "\n Distancia de Haversine entre BNA y LAX = "; Haversine(36.12, -86.67, 33.94, -118.4, radioTierra); " km" + +End + +Function Haversine(lat1 As Float, long1 As Float, lat2 As Float, long2 As Float, radio As Float) As Float + + Dim d_long As Float = deg2rad * (long1 - long2) + Dim theta1 As Float = deg2rad * lat1 + Dim theta2 As Float = deg2rad * lat2 + Dim dx As Float = Cos(d_long) * Cos(theta1) - Cos(theta2) + Dim dy As Float = Sin(d_long) * Cos(theta1) + Dim dz As Float = Sin(theta1) - Sin(theta2) + + Return ASin(Sqr(dx * dx + dy * dy + dz * dz) / 2) * radio * 2 + +End Function diff --git a/Task/Hello-world-Graphical/Elena/hello-world-graphical-1.elena b/Task/Hello-world-Graphical/Elena/hello-world-graphical-1.elena index e5523fa52c..56c291d7b7 100644 --- a/Task/Hello-world-Graphical/Elena/hello-world-graphical-1.elena +++ b/Task/Hello-world-Graphical/Elena/hello-world-graphical-1.elena @@ -6,7 +6,7 @@ public class MainWindow : SDIDialog Button closeButton; constructor new() - <= new() + <= super new() { self.Caption := "ELENA"; diff --git a/Task/Hello-world-Graphical/MiniScript/hello-world-graphical.mini b/Task/Hello-world-Graphical/MiniScript/hello-world-graphical.mini new file mode 100644 index 0000000000..04c7f00cd5 --- /dev/null +++ b/Task/Hello-world-Graphical/MiniScript/hello-world-graphical.mini @@ -0,0 +1,4 @@ +import "textUtil" + +hello = textUtil.Dialog.make("Hello, World Dialog", "Hello, World!") +hello.show diff --git a/Task/Hello-world-Graphical/Quackery/hello-world-graphical.quackery b/Task/Hello-world-Graphical/Quackery/hello-world-graphical.quackery new file mode 100644 index 0000000000..9c5c520264 --- /dev/null +++ b/Task/Hello-world-Graphical/Quackery/hello-world-graphical.quackery @@ -0,0 +1,17 @@ + [ $ "turtleduck.qky" loadfile ] now! + + [ $ / +import turtle +size = from_stack() +words = string_from_stack() +turtle.write(words,align="center", + font=("Arial", size, "normal")) + / python ] is write + + turtle 0 frames + 255 times + [ clear + i^ 3 of colour + $ "Goodbye, World!" + i write + frame ] diff --git a/Task/Hello-world-Graphical/Sidef/hello-world-graphical-1.sidef b/Task/Hello-world-Graphical/Sidef/hello-world-graphical-1.sidef index e388971e3b..b95db5a718 100644 --- a/Task/Hello-world-Graphical/Sidef/hello-world-graphical-1.sidef +++ b/Task/Hello-world-Graphical/Sidef/hello-world-graphical-1.sidef @@ -1,7 +1,7 @@ -var tk = require('Tk'); -var main = %s'MainWindow'.new; +var tk = require('Tk') +var main = %O.new main.Button( '-text' => 'Goodbye, World!', '-command' => 'exit', -).pack; -tk.MainLoop; +).pack +tk.MainLoop diff --git a/Task/Hello-world-Graphical/Sidef/hello-world-graphical-2.sidef b/Task/Hello-world-Graphical/Sidef/hello-world-graphical-2.sidef index 8ac4bb48f7..87e6f4940e 100644 --- a/Task/Hello-world-Graphical/Sidef/hello-world-graphical-2.sidef +++ b/Task/Hello-world-Graphical/Sidef/hello-world-graphical-2.sidef @@ -1,12 +1,12 @@ -var gtk2 = require('Gtk2') -> init; - -var window = %s'Gtk2::Window'.new; -var label = %s'Gtk2::Label'.new('Goodbye, World!'); - -window.set_title('Goodbye, World!'); -window.signal_connect(destroy => func(*_){ gtk2.main_quit }); - -window.add(label); -window.show_all; - -gtk2.main; +var gtk2 = require('Gtk2') -> init +  +var window = %O.new +var label = %O.new('Goodbye, World!') +  +window.set_title('Goodbye, World!') +window.signal_connect(destroy => { gtk2.main_quit }) +  +window.add(label) +window.show_all +  +gtk2.main diff --git a/Task/Hello-world-Graphical/Sidef/hello-world-graphical-3.sidef b/Task/Hello-world-Graphical/Sidef/hello-world-graphical-3.sidef new file mode 100644 index 0000000000..fe03fa7026 --- /dev/null +++ b/Task/Hello-world-Graphical/Sidef/hello-world-graphical-3.sidef @@ -0,0 +1,13 @@ +use('Gtk3 -init') + +var gtk3 = %O'Gtk3' +var window = %O'Gtk3::Window'.new +var label = %O'Gtk3::Label'.new('Goodbye, World!') + +window.set_title('Goodbye, World!') +window.signal_connect(destroy => { gtk3.main_quit }) + +window.add(label) +window.show_all + +gtk3.main diff --git a/Task/Hello-world-Line-printer/Wren/hello-world-line-printer-1.wren b/Task/Hello-world-Line-printer/Wren/hello-world-line-printer-1.wren index 04ec2c9a97..93d982231b 100644 --- a/Task/Hello-world-Line-printer/Wren/hello-world-line-printer-1.wren +++ b/Task/Hello-world-Line-printer/Wren/hello-world-line-printer-1.wren @@ -1,4 +1,4 @@ -/* hello_world_line_printer.wren */ +/* Hello_world_Line_printer.wren */ class C { foreign static lprint(s) diff --git a/Task/Hello-world-Line-printer/Wren/hello-world-line-printer-2.wren b/Task/Hello-world-Line-printer/Wren/hello-world-line-printer-2.wren index 8eb9651185..3c40e19b85 100644 --- a/Task/Hello-world-Line-printer/Wren/hello-world-line-printer-2.wren +++ b/Task/Hello-world-Line-printer/Wren/hello-world-line-printer-2.wren @@ -1,4 +1,4 @@ -/* gcc hello_world_line_printer.c -o hello_world_line_printer -lwren -lm */ +/* gcc Hello_world_Line_printer.c -o Hello_world_Line_printer -lwren -lm */ #include #include @@ -53,7 +53,7 @@ int main(int argc, char **argv) { config.bindForeignMethodFn = &bindForeignMethod; WrenVM* vm = wrenNewVM(&config); const char* module = "main"; - const char* fileName = "hello_world_line_printer.wren"; + const char* fileName = "Hello_world_Line_printer.wren"; char *script = readFile(fileName); WrenInterpretResult result = wrenInterpret(vm, module, script); wrenFreeVM(vm); diff --git a/Task/Hello-world-Newline-omission/EasyLang/hello-world-newline-omission.easy b/Task/Hello-world-Newline-omission/EasyLang/hello-world-newline-omission.easy index 981d22316f..2cadc12cd3 100644 --- a/Task/Hello-world-Newline-omission/EasyLang/hello-world-newline-omission.easy +++ b/Task/Hello-world-Newline-omission/EasyLang/hello-world-newline-omission.easy @@ -1 +1,2 @@ +# write omits newline write "Goodbye, World!" diff --git a/Task/Hello-world-Newline-omission/J/hello-world-newline-omission-1.j b/Task/Hello-world-Newline-omission/J/hello-world-newline-omission-1.j index 92cdc5315d..56cda30b62 100644 --- a/Task/Hello-world-Newline-omission/J/hello-world-newline-omission-1.j +++ b/Task/Hello-world-Newline-omission/J/hello-world-newline-omission-1.j @@ -1,2 +1,2 @@ - 'Goodbye, World!' 1!:3 <'/proc/self/fd/1' -Goodbye, World! + stdout +1!:2&4 diff --git a/Task/Hello-world-Newline-omission/J/hello-world-newline-omission-2.j b/Task/Hello-world-Newline-omission/J/hello-world-newline-omission-2.j index 9d6e9a27b8..9020e60dea 100644 --- a/Task/Hello-world-Newline-omission/J/hello-world-newline-omission-2.j +++ b/Task/Hello-world-Newline-omission/J/hello-world-newline-omission-2.j @@ -1,3 +1,4 @@ - load 'general/misc/prompt' - prompt 'Goodbye, World!' + put=: 0 0 $ 1!:2&4 + + put 'Goodbye, World!' Goodbye, World! diff --git a/Task/Hello-world-Newline-omission/J/hello-world-newline-omission-3.j b/Task/Hello-world-Newline-omission/J/hello-world-newline-omission-3.j new file mode 100644 index 0000000000..9d6e9a27b8 --- /dev/null +++ b/Task/Hello-world-Newline-omission/J/hello-world-newline-omission-3.j @@ -0,0 +1,3 @@ + load 'general/misc/prompt' + prompt 'Goodbye, World!' +Goodbye, World! diff --git a/Task/Hello-world-Newline-omission/Uxntal/hello-world-newline-omission.uxnatl b/Task/Hello-world-Newline-omission/Uxntal/hello-world-newline-omission.uxnatl new file mode 100644 index 0000000000..20a2d61d1e --- /dev/null +++ b/Task/Hello-world-Newline-omission/Uxntal/hello-world-newline-omission.uxnatl @@ -0,0 +1,13 @@ +|00 @System &vector $2 &expansion $2 &wst $1 &rst $1 &metadata $2 &r $2 &g $2 &b $2 &debug $1 &state $1 +|10 @Console &vector $2 &read $1 &pad $4 &type $1 &write $1 &error $1 + +|0100 + ;message + &loop + LDAk .Console/write DEO + INC2 LDAk ?&loop + POP2 + #80 .System/state DEO +BRK + +@message "Goodbye, 20 "World! 00 diff --git a/Task/Hello-world-Standard-error/J/hello-world-standard-error.j b/Task/Hello-world-Standard-error/J/hello-world-standard-error.j index 740f485e6b..26a1bd8435 100644 --- a/Task/Hello-world-Standard-error/J/hello-world-standard-error.j +++ b/Task/Hello-world-Standard-error/J/hello-world-standard-error.j @@ -1,2 +1,4 @@ -stderr =: 1!:2&4 -stderr 'Goodbye, World!' + stderr +1!:2&5 + + 0 0 $ stderr 'Goodbye, World!' diff --git a/Task/Hello-world-Standard-error/Lean/hello-world-standard-error.lean b/Task/Hello-world-Standard-error/Lean/hello-world-standard-error.lean new file mode 100644 index 0000000000..45a78e15c7 --- /dev/null +++ b/Task/Hello-world-Standard-error/Lean/hello-world-standard-error.lean @@ -0,0 +1,3 @@ +def main : IO Unit := do + let stderr ← IO.getStderr + stderr.putStrLn s!"Goodbye, World!" diff --git a/Task/Hello-world-Standard-error/Nu/hello-world-standard-error.nu b/Task/Hello-world-Standard-error/Nu/hello-world-standard-error.nu new file mode 100644 index 0000000000..7e83d5cf30 --- /dev/null +++ b/Task/Hello-world-Standard-error/Nu/hello-world-standard-error.nu @@ -0,0 +1 @@ +print -e "Goodbye, World!" diff --git a/Task/Hello-world-Standard-error/Zig/hello-world-standard-error-1.zig b/Task/Hello-world-Standard-error/Zig/hello-world-standard-error-1.zig new file mode 100644 index 0000000000..3fc6d2df3e --- /dev/null +++ b/Task/Hello-world-Standard-error/Zig/hello-world-standard-error-1.zig @@ -0,0 +1,7 @@ +const std = @import("std"); + +pub fn main() std.fs.File.WriteError!void { + const stderr = std.io.getStdErr(); + + try stderr.writeAll("Goodbye, World!\n"); +} diff --git a/Task/Hello-world-Standard-error/Zig/hello-world-standard-error-2.zig b/Task/Hello-world-Standard-error/Zig/hello-world-standard-error-2.zig new file mode 100644 index 0000000000..48d7e87f10 --- /dev/null +++ b/Task/Hello-world-Standard-error/Zig/hello-world-standard-error-2.zig @@ -0,0 +1,6 @@ +const std = @import("std"); + +pub fn main() void { + // Silently returns if writing to stderr fails. + std.debug.print("Goodbye, World!\n", .{}); +} diff --git a/Task/Hello-world-Standard-error/Zig/hello-world-standard-error.zig b/Task/Hello-world-Standard-error/Zig/hello-world-standard-error.zig deleted file mode 100644 index f93ceeda19..0000000000 --- a/Task/Hello-world-Standard-error/Zig/hello-world-standard-error.zig +++ /dev/null @@ -1,6 +0,0 @@ -const std = @import("std"); -pub fn main() !void { - try std.io.getStdErr().writer().writeAll("Goodbye, World!\n"); - // debug messages are also printed to stderr - //std.debug.print("Goodbye, World!\n"); -} diff --git a/Task/Hello-world-Text/Curto/hello-world-text.curto b/Task/Hello-world-Text/Curto/hello-world-text.curto new file mode 100644 index 0000000000..7853f96e0f --- /dev/null +++ b/Task/Hello-world-Text/Curto/hello-world-text.curto @@ -0,0 +1 @@ +." Hola, mundo!" diff --git a/Task/Hello-world-Text/KL1/hello-world-text.kl1 b/Task/Hello-world-Text/KL1/hello-world-text.kl1 new file mode 100644 index 0000000000..a8ee770c09 --- /dev/null +++ b/Task/Hello-world-Text/KL1/hello-world-text.kl1 @@ -0,0 +1,5 @@ +:- module main. + +main :- + unix:unix([stdio(normal(S))]), + S = [fwrite("Hello world\n")]. diff --git a/Task/Hello-world-Text/Nu/hello-world-text.nu b/Task/Hello-world-Text/Nu/hello-world-text.nu new file mode 100644 index 0000000000..ed708ec5fb --- /dev/null +++ b/Task/Hello-world-Text/Nu/hello-world-text.nu @@ -0,0 +1 @@ +print "Hello world!" diff --git a/Task/Hello-world-Text/Rhovas/hello-world-text.rhovas b/Task/Hello-world-Text/Rhovas/hello-world-text.rhovas new file mode 100644 index 0000000000..defc677327 --- /dev/null +++ b/Task/Hello-world-Text/Rhovas/hello-world-text.rhovas @@ -0,0 +1 @@ +print("Hello world!"); diff --git a/Task/Hello-world-Text/Ursalang/hello-world-text.ursa b/Task/Hello-world-Text/Ursalang/hello-world-text.ursa new file mode 100644 index 0000000000..d0dcf1fee9 --- /dev/null +++ b/Task/Hello-world-Text/Ursalang/hello-world-text.ursa @@ -0,0 +1 @@ +print("hello woods!") diff --git a/Task/Hello-world-Text/Uxntal/hello-world-text.uxnatl b/Task/Hello-world-Text/Uxntal/hello-world-text.uxnatl new file mode 100644 index 0000000000..abedc7f43c --- /dev/null +++ b/Task/Hello-world-Text/Uxntal/hello-world-text.uxnatl @@ -0,0 +1,22 @@ +( hello-world.tal ) +|00 @System [ &vector $2 &wst $1 &rst $1 &eaddr $2 &ecode $1 &pad $1 &r $2 &g $2 &b $2 &debug $1 &halt $1 ] +|10 @Console [ &vector $2 &read $1 &pad $5 &write $1 &error $1 ] + +( program ) +|0100 @on-reset ( -> ) + ;hello print-str + HALT +BRK + +@print-str ( str* -- ) + &while + LDAk #18 DEO + INC2 LDAk ?&while + POP2 +JMP2r + +@HALT ( -- ) + #01 .System/halt DEO +JMP2r + +@hello "Hello 20 "world! 0a 00 diff --git a/Task/Hello-world-Text/Zig/hello-world-text.zig b/Task/Hello-world-Text/Zig/hello-world-text.zig index f201775ab2..6090c0bd6c 100644 --- a/Task/Hello-world-Text/Zig/hello-world-text.zig +++ b/Task/Hello-world-Text/Zig/hello-world-text.zig @@ -1,4 +1,7 @@ const std = @import("std"); -pub fn main() !void { - try std.io.getStdOut().writer().writeAll("Hello world!\n"); + +pub fn main() std.fs.File.WriteError!void { + const stdout = std.io.getStdOut(); + + try stdout.writeAll("Hello world!\n"); } diff --git a/Task/Heronian-triangles/Wren/heronian-triangles.wren b/Task/Heronian-triangles/Wren/heronian-triangles.wren index a7db8255e5..6979977096 100644 --- a/Task/Heronian-triangles/Wren/heronian-triangles.wren +++ b/Task/Heronian-triangles/Wren/heronian-triangles.wren @@ -1,6 +1,6 @@ -import "/math" for Int, Nums -import "/sort" for Sort -import "/fmt" for Fmt +import "./math" for Int, Nums +import "./sort" for Sort +import "./fmt" for Fmt var isInteger = Fn.new { |n| n is Num && n.isInteger } diff --git a/Task/Heronian-triangles/XPL0/heronian-triangles.xpl0 b/Task/Heronian-triangles/XPL0/heronian-triangles.xpl0 new file mode 100644 index 0000000000..956365a46b --- /dev/null +++ b/Task/Heronian-triangles/XPL0/heronian-triangles.xpl0 @@ -0,0 +1,54 @@ +include xpllib; \for Min, GCD, StrSort, StrNCmp, and Print + +func Hero(A, B, C); \Return area squared of triangle with sides A, B, C +int A, B, C, S; +[S:= (A+B+C)/2; +if rem(0) = 1 then return 0; \return 0 if area is not an integer +return S*(S-A)*(S-B)*(S-C); +]; + +func Heronian(A, B, C); \Return area of triangle if sides and area are integers +int A, B, C, Area2, Area; +[Area2:= Hero(A, B, C); +Area:= sqrt(Area2); +return if Area*Area = Area2 then Area else 0; +]; + +def MaxSide = 200; +int A, B, C, Area, Count, I, J, K; +char Array(1000, 5*5); +[Format(5, 0); +Count:= 0; +for A:= 1 to MaxSide do + for B:= A to MaxSide do + for C:= B to Min(A+B-1, MaxSide) do + if GCD(GCD(B,C), A) = 1 then + [Area:= Heronian(A, B, C); + if Area > 0 then + [OpenO(8); + RlOut(8, float(Area)); + RlOut(8, float(A+B+C)); + RlOut(8, float(C)); + RlOut(8, float(B)); + RlOut(8, float(A)); + OpenI(8); + for I:= 0 to 25-1 do Array(Count,I):= ChIn(8); + Count:= Count+1; + ]; + ]; +Print("Count = %d\n", Count); +StrSort(Array, Count); +Print(" A B C Perim Area\n"); +for I:= 0 to 10-1 do + [for J:= 4 downto 0 do + Print("%5.5s", @Array(I, J*5+K)); + Print("\n"); + ]; +Print("\n"); +for I:= 0 to Count-1 do + if StrNCmp(" 210", @Array(I,0), 5) = 0 then + [for J:= 4 downto 0 do + Print("%5.5s", @Array(I, J*5+K)); + Print("\n"); + ]; +] diff --git a/Task/Hex-words/BBC-BASIC/hex-words.basic b/Task/Hex-words/BBC-BASIC/hex-words.basic new file mode 100644 index 0000000000..d865843d34 --- /dev/null +++ b/Task/Hex-words/BBC-BASIC/hex-words.basic @@ -0,0 +1,47 @@ + INSTALL @lib$ + "SORTLIB" + sort%=FN_sortinit(0, 0) + + DIM Result$(127) + *LOWERCASE ON + F%=OPENIN(@dir$ + "unixdict.txt") + WHILE TRUE + W$=GET$#F% + IF W$ < "g" ELSE EXIT WHILE + IF LENW$ > 3 IF INSTR(W$, "o") == 0 THEN + D%=EVAL("&" + W$) + IF LENW$ == LEN(STR$~D%) THEN + REPEAT + E%=0 + WHILE D% > 0 E%+=D% MOD 10 D%/=10 ENDWHILE + D%=E% + UNTIL D% < 10 + Result$(C%)=STR$D% + W$ + C%+=1 + ENDIF + ENDIF + ENDWHILE + CLOSE#F% + + CALL sort%, Result$(0) + PRINT "Root Word Base 10" + FOR I%=0 TO C% - 1 + W$=MID$(Result$(I%), 2) + PRINT " " LEFT$(Result$(I%), 1) " " W$ TAB(13) EVAL("&" + W$) + E%=0 + FOR J%=ASC"a" TO ASC"f" + IF INSTR(W$, CHR$J%) E%+=1 + NEXT + IF E% > 3 THEN + Result$(I%)="z" + STR$LENResult$(I%) + W$ + LEFT$(Result$(I%), 1) + N%+=1 + ENDIF + NEXT + PRINT "Total: ";C% ' + + CALL sort%, Result$(0) + PRINT "Root Word Base 10" + FOR I%=C% - 1 TO C% - N% STEP -1 + W$=LEFT$(MID$(Result$(I%), 3)) + PRINT " " RIGHT$(Result$(I%)) " " W$ TAB(13) EVAL("&" + W$) + NEXT + PRINT "Total: ";N% diff --git a/Task/Hex-words/MiniScript/hex-words.mini b/Task/Hex-words/MiniScript/hex-words.mini new file mode 100644 index 0000000000..abf5fabcc3 --- /dev/null +++ b/Task/Hex-words/MiniScript/hex-words.mini @@ -0,0 +1,83 @@ +pad = function(n, width, rightJustify = false) + if rightJustify then + s = (" " * width + n)[-width:] + else + s = (n + " " * width)[:width] + end if + return s +end function + +getDigitalRoot = function(n) + while floor(log(n)) > 0 + sum = 0 + while n > 0 + sum += n % 10 + n = floor(n / 10) + end while + n = sum + end while + return sum +end function + +hexToDec = function(hex) + digits = "0123456789abcdef" + result = digits.indexOf(hex[0]) + + for hdigit in hex[1:] + result *= 16 + result += digits.indexOf(hdigit) + end for + return result +end function + +isHexWord = function(word) + for ch in word.split("") + if "abcdef".indexOf(ch) == null then return false + end for + return true +end function + +distinctLetters = function(word) + letters = {} + for ch in word.split("") + letters[ch] = 1 + end for + return letters.indexes +end function + +wordList = http.get("http://wiki.puzzlers.org/pub/wordlists/unixdict.txt").split(char(10)) +//wordList = file.readLines("unixdict.txt") + +hexWords = [] +for word in wordList + if word.len > 3 and isHexWord(word) then hexWords.push word +end for + +roots = [] +for hex in hexWords + decimal = hexToDec(hex) + root = getDigitalRoot(decimal) + roots.push [root, hex, decimal] +end for +roots.sort(0) + +print "Hex words in unixdict.txt:" +print pad("Root", 6) + pad("Word",10) + "Base 10" +print "-" * 23 +for root in roots + print pad(root[0],6) + pad(root[1],7) + pad(root[2],9,true) +end for +print "Total count of words: " + roots.len + +cnt = 0 +print +print "Hext words with > 3 distinct letters:" +print pad("Root", 6) + pad("Word",10) + "Base 10" +print "-" * 23 +for root in roots + if distinctLetters(root[1]).len > 3 then + cnt += 1 + print pad(root[0],6) + pad(root[1],7) + pad(root[2],9,true) + end if +end for +print "Total count of these words: " + cnt diff --git a/Task/Hex-words/Raku/hex-words.raku b/Task/Hex-words/Raku/hex-words.raku index e867798b2e..8dff61e592 100644 --- a/Task/Hex-words/Raku/hex-words.raku +++ b/Task/Hex-words/Raku/hex-words.raku @@ -1,4 +1,4 @@ -sub dr (Int $_ is copy) { $_ = dr(.comb.sum) while .chars > 1; $_ } +sub dr (Int $_ is copy) { $_ = .comb.sum while .chars > 1; $_ } my %hex = './unixdict.txt'.IO.slurp.words.grep( *.chars > 3 )\ .grep({ not / <-[abcdef]> / }).map: { $_ => dr :16($_).comb.sum } diff --git a/Task/Hex-words/Ring/hex-words.ring b/Task/Hex-words/Ring/hex-words.ring new file mode 100644 index 0000000000..c3392c5576 --- /dev/null +++ b/Task/Hex-words/Ring/hex-words.ring @@ -0,0 +1,124 @@ +Author = "Gál Zsolt (CalmoSoft)" + +load "stdlib.ring" +Words = [] +HexWords = ["a","b","c","d","e","f"] +cstr = read("unixdict.txt") +Unix = str2list(cstr) +Unix2 = [] +for n = 1 to len(Unix) + uStr = Unix[n] + for m = 1 to len(uStr) + flag =1 + ind = find(HexWords,uStr[m]) + if ind = 0 + flag = 0 + exit + ok + next + if flag = 1 and len(Unix[n]) > 3 + add(Words,Unix[n]) + add(Unix2,Unix[n]) + ok +next + +Unix1 = newlist(len(Words),2) +for n = 1 to len(Words) + num = dec(Words[n]) + dr = digRoot(num) + Unix1[n][1] = dr + Unix1[n][2] = Words[n] +next + +Unix1 = sortFirstSecondStr(Unix1,1) + +see "Root" + space(2) + "Word" + space(5) + "Base 10" + nl +see "====" + space(2) + "====" + space(5) + "=======" + nl +for n = 1 to len(Unix1) + decnr = dec(Unix1[n][2]) + see string(Unix1[n][1]) + space(5) + Unix1[n][2] + space(9-len(Unix1[n][2])) + decnr + nl +next + +see nl + "Table length: " + len(Unix1) + nl + nl + nl + +see "Root" + space(2) + "Word" + space(5) + "Base 10" + nl +see "====" + space(2) + "====" + space(5) + "=======" + nl + +for n = 1 to len(Unix2) + str = Unix2[n] + str2 = sortStr(str) + flag = 0 + for p = 1 to len(str2)-1 + st1 = substr(str2,p,1) + st2 = substr(str2,p+1,1) + if dec(st1) < dec(st2) + flag += 1 + ok + next + if flag < 4 + del(Unix2,n) + ok +next + +DecSort = [] +for n = 1 to len(Unix2) + ds = dec(Unix2[n]) + add(DecSort,ds) +next +DecSort = sort(DecSort) +DecSort = reverse(DecSort) + +for n = 1 to len(DecSort) + root = digRoot(DecSort[n]) + word = hex(DecSort[n]) + decnum = DecSort[n] + see "" + root + space(5) + word + space(9-len(word)) + decnum + nl +next + +see nl + "Table length: " + len(DecSort) + nl + +func digRoot(num2) + while true + strnr = string(num2) + sum = 0 + for n = 1 to len(strnr) + sum += number(strnr[n]) + next + if sum < 10 + exit + else + num2 = sum + ok + end +return sum + +func sortStr(str2) + for p = 1 to len(str2) + for q = p+1 to len(str2) + if strcmp(str2[q],str2[p]) < 0 + temp = str2[p] + str2[p] = str2[q] + str2[q] = temp + ok + next + next + return str2 + +func sortFirstSecondStr(aList,ind) + aList = sort(aList,ind) + if (ind = 1) + nr = 2 + else + nr = 1 + ok + for n=1 to len(alist)-1 + for m=n+1 to len(aList) + if (alist[n][ind] = alist[m][ind]) and + (strcmp(alist[m][nr],alist[n][nr]) < 0) + temp = alist[m] + alist[m] = alist[n] + alist[n] = temp + ok + next + next + return aList diff --git a/Task/Hickerson-series-of-almost-integers/BBC-BASIC/hickerson-series-of-almost-integers.basic b/Task/Hickerson-series-of-almost-integers/BBC-BASIC/hickerson-series-of-almost-integers.basic new file mode 100644 index 0000000000..756702168e --- /dev/null +++ b/Task/Hickerson-series-of-almost-integers/BBC-BASIC/hickerson-series-of-almost-integers.basic @@ -0,0 +1,10 @@ + Fac=1 + FOR I%=1 TO 17 + Fac*=I% + @%=&1420300 + Hick$=RIGHT$(STRING$(17, " ") + STR$(Fac / (2 * LN2 ^ (I% + 1))), 22) + @%=2 + PRINT "H(" I% ") = " Hick$ " which is "; + IF MID$(Hick$, 20, 1) <> "0" IF MID$(Hick$, 20, 1) <> "9" PRINT "NOT "; + PRINT "an almost integer." + NEXT diff --git a/Task/Hickerson-series-of-almost-integers/Wren/hickerson-series-of-almost-integers-1.wren b/Task/Hickerson-series-of-almost-integers/Wren/hickerson-series-of-almost-integers-1.wren deleted file mode 100644 index c4f3d4b9a1..0000000000 --- a/Task/Hickerson-series-of-almost-integers/Wren/hickerson-series-of-almost-integers-1.wren +++ /dev/null @@ -1,20 +0,0 @@ -import "/math" for Int -import "/fmt" for Fmt -import "/big" for BigInt - -var hickerson = Fn.new { |n| - var fact = BigInt.new(Int.factorial(n)) // accurate up to n == 18 - var ln2 = BigInt.new("693147180559945309417232121458176568075500134360255254120680009") // 63 digits - var mult = BigInt.new("1e64").pow(n+1) // 64 == ln2 digit count + 1 - return fact * mult /(BigInt.two * ln2.pow(n+1)) -} - -System.print("Values of h(n), truncated to 1 dp, and whether 'almost integers' or not:") -for (i in 1..17) { - var h = hickerson.call(i).toString - var hl = h.count - var k = hl - i - 1 - var ai = (h[k] == "0" || h[k] == "9") - var s = h[0...k] + "." + h[k] - Fmt.print("$2d: $20s $s", i, s, ai) -} diff --git a/Task/Hickerson-series-of-almost-integers/Wren/hickerson-series-of-almost-integers-2.wren b/Task/Hickerson-series-of-almost-integers/Wren/hickerson-series-of-almost-integers-2.wren deleted file mode 100644 index 54063bbf2f..0000000000 --- a/Task/Hickerson-series-of-almost-integers/Wren/hickerson-series-of-almost-integers-2.wren +++ /dev/null @@ -1,17 +0,0 @@ -import "/math" for Int -import "/fmt" for Fmt -import "/big" for BigRat - -var hickerson = Fn.new { |n| - var fact = BigRat.new(Int.factorial(n)) - var ln2 = BigRat.fromDecimal("0.693147180559945309417232121458176568075500134360255254120680009") - return fact / (BigRat.two * ln2.pow(n+1)) -} - -System.print("Values of h(n), truncated to 1 dp, and whether 'almost integers' or not:") -for (i in 1..17) { - var h = hickerson.call(i).toDecimal(1, false) - var hl = h[-1] - var ai = (hl == "0" || hl == "9") - Fmt.print("$2d: $20s $s", i, h, ai) -} diff --git a/Task/Hickerson-series-of-almost-integers/Wren/hickerson-series-of-almost-integers.wren b/Task/Hickerson-series-of-almost-integers/Wren/hickerson-series-of-almost-integers.wren new file mode 100644 index 0000000000..b0ad815dc0 --- /dev/null +++ b/Task/Hickerson-series-of-almost-integers/Wren/hickerson-series-of-almost-integers.wren @@ -0,0 +1,17 @@ +import "./fmt" for Fmt +import "./big" for BigInt, BigDec + +var hickerson = Fn.new { |n| + var fact = BigDec.fromBigInt(BigInt.factorial(n), 64) + var ln2 = BigDec.ln2 // precise to 64 decimal digits + return fact / (BigDec.two * ln2.pow(n+1)) +} + +System.print("Values of h(n), truncated to 1 dp, and whether 'almost integers' or not:") +for (i in 1..17) { + // truncate to 1 d.p and show final zero if any + var h = hickerson.call(i).toString(1, false, true) + var k = h.count - 1 + var ai = (h[k] == "0" || h[k] == "9") + Fmt.print("$2d: $20s $s", i, h, ai) +} diff --git a/Task/Higher-order-functions/Elena/higher-order-functions.elena b/Task/Higher-order-functions/Elena/higher-order-functions.elena index b2911dbbe5..374b1ae88f 100644 --- a/Task/Higher-order-functions/Elena/higher-order-functions.elena +++ b/Task/Higher-order-functions/Elena/higher-order-functions.elena @@ -3,6 +3,6 @@ import extensions; public program() { var first := (f => f()); - var second := {"second"}; + var second := { ^ "second" }; console.printLine(first(second)) } diff --git a/Task/Hofstadter-Conway-$10-000-sequence/Wren/hofstadter-conway-$10-000-sequence.wren b/Task/Hofstadter-Conway-$10-000-sequence/Wren/hofstadter-conway-$10-000-sequence.wren index f820518255..2a7f2954a2 100644 --- a/Task/Hofstadter-Conway-$10-000-sequence/Wren/hofstadter-conway-$10-000-sequence.wren +++ b/Task/Hofstadter-Conway-$10-000-sequence/Wren/hofstadter-conway-$10-000-sequence.wren @@ -1,4 +1,4 @@ -import "/fmt" for Fmt +import "./fmt" for Fmt var limit = 1<<20 + 1 var a = List.filled(limit, 0) diff --git a/Task/Hofstadter-Figure-Figure-sequences/Quackery/hofstadter-figure-figure-sequences.quackery b/Task/Hofstadter-Figure-Figure-sequences/Quackery/hofstadter-figure-figure-sequences.quackery new file mode 100644 index 0000000000..821cae3b4a --- /dev/null +++ b/Task/Hofstadter-Figure-Figure-sequences/Quackery/hofstadter-figure-figure-sequences.quackery @@ -0,0 +1,45 @@ + [ ' [ 1 3 7 ] + ' [ 2 4 5 6 ] ] is initialise ( --> r s ) + + [ over size 1 - + over swap peek + dip [ over -1 peek ] + + swap dip join + over -2 split nip do + temp put + 1 + from + [ temp share + index = iff + end done + index join ] + temp release ] is extend ( r s --> r s ) + + [ temp put + [ over size + temp share < while + extend again ] + over + temp take 1 - peek ] is ffr ( r s n --> r s n ) + + [ temp put + [ dup size + temp share < while + extend again ] + dup + temp take 1 - peek ] is ffs ( r s n --> r s n ) + + initialise + say "R(1)..R(10): " + 10 times + [ i^ 1+ ffr echo sp ] + cr cr + 960 ffs drop + 960 split drop + dip [ 40 split drop ] + join sort + [] 1000 times + [ i^ 1+ join ] + != + say "All integers from 1 to 1000" + if say " not" + say " found once and only once." diff --git a/Task/Hofstadter-Figure-Figure-sequences/SETL/hofstadter-figure-figure-sequences.setl b/Task/Hofstadter-Figure-Figure-sequences/SETL/hofstadter-figure-figure-sequences.setl new file mode 100644 index 0000000000..0f8d6e335b --- /dev/null +++ b/Task/Hofstadter-Figure-Figure-sequences/SETL/hofstadter-figure-figure-sequences.setl @@ -0,0 +1,24 @@ +program figure_figure; + init R := [1], S := [2]; + + print("R(1..10):", [ffr(n) : n in [1..10]]); + print("R(1..40) + S(1..960) = {1..1000}:", + {ffr(n) : n in {1..40}} + {ffs(n) : n in {1..960}} = {1..1000}); + + proc ffr(n); + loop while n > #R do + nextR := R(#R) + S(#R); + S +:= [S(#S)+1 .. nextR-1]; + R with:= nextR; + S with:= nextR + 1; + end loop; + return R(n); + end proc; + + proc ffs(n); + loop while n > #S do + ffr(#R + 1); + end loop; + return S(n); + end proc; +end program; diff --git a/Task/Hofstadter-Q-sequence/EasyLang/hofstadter-q-sequence.easy b/Task/Hofstadter-Q-sequence/EasyLang/hofstadter-q-sequence.easy new file mode 100644 index 0000000000..4a1d578fcb --- /dev/null +++ b/Task/Hofstadter-Q-sequence/EasyLang/hofstadter-q-sequence.easy @@ -0,0 +1,21 @@ +proc hofstadter limit . q[] . + q[] = [ 1 1 ] + for n = 3 to limit + q[] &= q[n - q[n - 1]] + q[n - q[n - 2]] + . +. +proc count . q[] cnt . + for i = 2 to len q[] + if q[i] < q[i - 1] + cnt += 1 + . + . +. +hofstadter 100000 hofq[] +for i = 1 to 10 + write hofq[i] & " " +. +print "" +print hofq[1000] +count hofq[] cnt +print cnt diff --git a/Task/Hofstadter-Q-sequence/SETL/hofstadter-q-sequence.setl b/Task/Hofstadter-Q-sequence/SETL/hofstadter-q-sequence.setl new file mode 100644 index 0000000000..d01b79474d --- /dev/null +++ b/Task/Hofstadter-Q-sequence/SETL/hofstadter-q-sequence.setl @@ -0,0 +1,10 @@ +program hofstadter_q; + q := [1,1]; + loop for n in [3..100000] do + q(n) := q(n-q(n-1)) + q(n-q(n-2)); + end loop; + + print("First 10 terms: " + q(1..10)); + print("1000th term: " + q(1000)); + print("q(x) < q(x-1): " + #[x : x in [2..#q] | q(x) < q(x-1)]); +end program; diff --git a/Task/Holidays-related-to-Easter/Wren/holidays-related-to-easter.wren b/Task/Holidays-related-to-Easter/Wren/holidays-related-to-easter.wren index f6eb5af1bd..4e79976f3c 100644 --- a/Task/Holidays-related-to-Easter/Wren/holidays-related-to-easter.wren +++ b/Task/Holidays-related-to-Easter/Wren/holidays-related-to-easter.wren @@ -1,6 +1,6 @@ -import "/date" for Date -import "/fmt" for Fmt -import "/iterate" for Stepped +import "./date" for Date +import "./fmt" for Fmt +import "./iterate" for Stepped var holidayOffsets = [ ["Easter", 0], diff --git a/Task/Home-primes/Python/home-primes.py b/Task/Home-primes/Python/home-primes.py new file mode 100644 index 0000000000..74c0e60571 --- /dev/null +++ b/Task/Home-primes/Python/home-primes.py @@ -0,0 +1,39 @@ +# home_primes.py by Xing216 +def primeFactors(n: int) -> list[int]: + primeFactorsL = [] + while n % 2 == 0: + primeFactorsL.append(2) + n = n // 2 + for i in range(3,int(n**0.5)+1,2): + while n % i== 0: + primeFactorsL.append(i) + n = n // i + if n > 2: + primeFactorsL.append(n) + return primeFactorsL +def list_to_int(l: list[int]) -> int: + return int(''.join(str(i) for i in l)) +def home_prime_chain(i:int) -> list[int]: + pf_int = i + chain = [] + while True: + pf = primeFactors(pf_int) + pf_int = list_to_int(pf) + if len(pf) == 1: + return chain + else: + chain.append(pf_int) +for i in range(2,21): + chain_list = home_prime_chain(i) + chain_len = len(chain_list) + chain_idx_list = list(range(chain_len))[::-1] + j = chain_len + if chain_list != []: + print(f"HP{i}({chain_len}) =", end=" ") + for k,l in list(zip(chain_list, chain_idx_list)): + if l == 0: + print(f"{k}") + else: + print(f"HP{k}({l}) =", end=" ") + else: + print(f"HP{i}(1) = {i}") diff --git a/Task/Home-primes/Wren/home-primes-1.wren b/Task/Home-primes/Wren/home-primes-1.wren index b6e9f880cb..cc969881e2 100644 --- a/Task/Home-primes/Wren/home-primes-1.wren +++ b/Task/Home-primes/Wren/home-primes-1.wren @@ -1,5 +1,5 @@ -import "/math" for Int -import "/big" for BigInt +import "./math" for Int +import "./big" for BigInt var list = (2..20).toList list.add(65) diff --git a/Task/Home-primes/Wren/home-primes-2.wren b/Task/Home-primes/Wren/home-primes-2.wren index 12d32c94fc..8913c8d422 100644 --- a/Task/Home-primes/Wren/home-primes-2.wren +++ b/Task/Home-primes/Wren/home-primes-2.wren @@ -1,4 +1,4 @@ -/* home_primes_gmp.wren */ +/* Home_primes_2.wren */ import "./gmp" for Mpz import "./math" for Int diff --git a/Task/Horizontal-sundial-calculations/Wren/horizontal-sundial-calculations.wren b/Task/Horizontal-sundial-calculations/Wren/horizontal-sundial-calculations.wren index 23020309c9..157143fe08 100644 --- a/Task/Horizontal-sundial-calculations/Wren/horizontal-sundial-calculations.wren +++ b/Task/Horizontal-sundial-calculations/Wren/horizontal-sundial-calculations.wren @@ -1,5 +1,5 @@ import "io" for Stdin, Stdout -import "/fmt" for Fmt +import "./fmt" for Fmt var getNum = Fn.new { |prompt| while (true) { diff --git a/Task/Host-introspection/Wren/host-introspection-1.wren b/Task/Host-introspection/Wren/host-introspection-1.wren index dd2d929e70..4854454c72 100644 --- a/Task/Host-introspection/Wren/host-introspection-1.wren +++ b/Task/Host-introspection/Wren/host-introspection-1.wren @@ -1,4 +1,4 @@ -/* host_introspection.wren */ +/* Host_introspection.wren */ class C { foreign static wordSize diff --git a/Task/Host-introspection/Wren/host-introspection-2.wren b/Task/Host-introspection/Wren/host-introspection-2.wren index 279e6c225c..021cb35fae 100644 --- a/Task/Host-introspection/Wren/host-introspection-2.wren +++ b/Task/Host-introspection/Wren/host-introspection-2.wren @@ -77,7 +77,7 @@ int main() { config.bindForeignMethodFn = &bindForeignMethod; WrenVM* vm = wrenNewVM(&config); const char* module = "main"; - const char* fileName = "host_introspection.wren"; + const char* fileName = "Host_introspection.wren"; char *script = readFile(fileName); WrenInterpretResult result = wrenInterpret(vm, module, script); switch (result) { diff --git a/Task/Hostname/Wren/hostname-1.wren b/Task/Hostname/Wren/hostname-1.wren index df3013e660..ef379c81bb 100644 --- a/Task/Hostname/Wren/hostname-1.wren +++ b/Task/Hostname/Wren/hostname-1.wren @@ -1,4 +1,4 @@ -/* hostname.wren */ +/* Hostname.wren */ class Host { foreign static name() // the code for this is provided by Go } diff --git a/Task/Hostname/Wren/hostname-2.wren b/Task/Hostname/Wren/hostname-2.wren index 005c8616d4..4227ab6330 100644 --- a/Task/Hostname/Wren/hostname-2.wren +++ b/Task/Hostname/Wren/hostname-2.wren @@ -1,4 +1,4 @@ -/* hostname.go */ +/* Hostname.go */ package main import ( @@ -15,7 +15,7 @@ func hostname(vm *wren.VM, parameters []any) (any, error) { func main() { vm := wren.NewVM() - fileName := "hostname.wren" + fileName := "Hostname.wren" methodMap := wren.MethodMap{"static name()": hostname} classMap := wren.ClassMap{"Host": wren.NewClass(nil, nil, methodMap)} module := wren.NewModule(classMap) diff --git a/Task/Hough-transform/Wren/hough-transform.wren b/Task/Hough-transform/Wren/hough-transform.wren index 5c55ec51ae..511e3e23d0 100644 --- a/Task/Hough-transform/Wren/hough-transform.wren +++ b/Task/Hough-transform/Wren/hough-transform.wren @@ -88,7 +88,7 @@ class HoughTransform { } readInputFromImage(filename) { - var inputImage = ImageData.loadFromFile(filename) + var inputImage = ImageData.load(filename) var width = inputImage.width var height = inputImage.height var rgbData = [] diff --git a/Task/Huffman-coding/Wren/huffman-coding.wren b/Task/Huffman-coding/Wren/huffman-coding.wren index 7c8e55d9fc..2d03485581 100644 --- a/Task/Huffman-coding/Wren/huffman-coding.wren +++ b/Task/Huffman-coding/Wren/huffman-coding.wren @@ -1,4 +1,4 @@ -import "/queue" for PriorityQueue +import "./queue" for PriorityQueue class HuffmanTree { construct new(freq) { diff --git a/Task/Humble-numbers/BBC-BASIC/humble-numbers.basic b/Task/Humble-numbers/BBC-BASIC/humble-numbers.basic new file mode 100644 index 0000000000..a9ecf04dbf --- /dev/null +++ b/Task/Humble-numbers/BBC-BASIC/humble-numbers.basic @@ -0,0 +1,30 @@ + MaxDigs%=8 + DIM Humble%(MaxDigs% - 1) + I%=1 + @%=4 + + PRINT "The first 50 humble numbers:" + WHILE TRUE + IF FNIsHumble(I%) THEN + IF C% < 50 PRINT ;I% " "; + C%+=1 + S%=LENSTR$I% + IF S% > MaxDigs% EXIT WHILE + Humble%(S%-1)+=1 + ENDIF + I%+=1 + ENDWHILE + + PRINT ''"Of the first ";C% " humble numbers:" + FOR I%=0 TO MaxDigs% - 1 + PRINT Humble%(I%) " have ";I% + 1 LEFT$(" digits", I% + 6) + NEXT + END + + DEF FNIsHumble(i%) + IF i% <= 1 THEN =TRUE + IF i% MOD 2 == 0 THEN =FNIsHumble(i% / 2) + IF i% MOD 3 == 0 THEN =FNIsHumble(i% / 3) + IF i% MOD 5 == 0 THEN =FNIsHumble(i% / 5) + IF i% MOD 7 == 0 THEN =FNIsHumble(i% / 7) + =FALSE diff --git a/Task/Humble-numbers/EasyLang/humble-numbers.easy b/Task/Humble-numbers/EasyLang/humble-numbers.easy new file mode 100644 index 0000000000..294a66c460 --- /dev/null +++ b/Task/Humble-numbers/EasyLang/humble-numbers.easy @@ -0,0 +1,39 @@ +fastfunc humble i . + if i <= 1 + return 1 + . + if i mod 2 = 0 + return humble (i / 2) + . + if i mod 3 = 0 + return humble (i / 3) + . + if i mod 5 = 0 + return humble (i / 5) + . + if i mod 7 = 0 + return humble (i / 7) + . + return 0 +. +fastfunc next_humble n . + repeat + n += 1 + until humble n = 1 + . + return n +. +len arr[] 9 +while cnt < 5193 + n = next_humble n + arr[log10 n + 1] += 1 + cnt += 1 + if cnt <= 50 + write n & " " + . +. +print "" +print "" +for i to 9 + print arr[i] & " with " & i & " digits" +. diff --git a/Task/Humble-numbers/Wren/humble-numbers.wren b/Task/Humble-numbers/Wren/humble-numbers.wren index bed71678a5..d9ca0da8b1 100644 --- a/Task/Humble-numbers/Wren/humble-numbers.wren +++ b/Task/Humble-numbers/Wren/humble-numbers.wren @@ -1,6 +1,6 @@ -import "/fmt" for Fmt -import "/math" for Int, Nums -import "/sort" for Find +import "./fmt" for Fmt +import "./math" for Nums +import "./sort" for Find var humble = Fn.new { |n| var h = List.filled(n, 0) @@ -40,9 +40,9 @@ var h = humble.call(n) System.print("The first 50 humble numbers are:") System.print(h[0..49]) -var f = Find.all(h, Int.maxSafe) // binary search +var f = Find.all(h, Num.maxSafeInteger) // binary search var maxUsed = f[0] ? f[2].min + 1 : f[2].min -var maxDigits = 16 // Int.maxSafe (2^53 -1) has 16 digits +var maxDigits = 16 // Num.maxSafeInteger (2^53 -1) has 16 digits var counts = List.filled(maxDigits + 1, 0) var digits = 1 var pow10 = 10 diff --git a/Task/Hunt-the-Wumpus/00-TASK.txt b/Task/Hunt-the-Wumpus/00-TASK.txt index d01fe12b94..c59a0f8a9f 100644 --- a/Task/Hunt-the-Wumpus/00-TASK.txt +++ b/Task/Hunt-the-Wumpus/00-TASK.txt @@ -1,5 +1,5 @@ {{Clarify_task}} -Create a simple implementation of the classic textual game [http://en.wikipedia.org/wiki/Hunt_the_Wumpus Hunt The Wumpus]. +Create a simple implementation of the classic textual game [[w:Hunt the Wumpus|Hunt the Wumpus]]. The rules are: diff --git a/Task/Hunt-the-Wumpus/Quackery/hunt-the-wumpus.quackery b/Task/Hunt-the-Wumpus/Quackery/hunt-the-wumpus.quackery new file mode 100644 index 0000000000..831dc08b10 --- /dev/null +++ b/Task/Hunt-the-Wumpus/Quackery/hunt-the-wumpus.quackery @@ -0,0 +1,138 @@ + [ table + [ 1 4 7 ] [ 0 2 9 ] [ 1 3 11 ] [ 2 4 13 ] + [ 0 3 5 ] [ 4 6 14 ] [ 5 7 16 ] [ 0 6 8 ] + [ 7 9 17 ] [ 1 8 10 ] [ 9 11 18 ] [ 2 10 12 ] + [ 11 13 19 ] [ 3 12 14 ] [ 5 13 15 ] [ 14 16 19 ] + [ 6 15 17 ] [ 8 16 18 ] [ 10 17 19 ] [ 12 15 18 ] ] is adjacent ( n --> [ ) + + [ stack ] is player ( --> s ) + [ stack ] is arrows ( --> s ) + [ stack ] is wumpus ( --> s ) + [ stack ] is bat1 ( --> s ) + [ stack ] is bat2 ( --> s ) + [ stack ] is pit1 ( --> s ) + [ stack ] is pit2 ( --> s ) + + [ over find swap found ] is has ( [ n --> b ) + + [ dup dup size random peek join ] is addrand ( [ --> [ ) + + [ trim reverse trim reverse + $->n not if [ drop -1 ] ] is validate ( $ --> n ) + + [ say "A giant bat transports you to chamber " + 20 random dup echo say "." cr + player replace + 20 random swap replace ] is relocate ( s --> ) + + [ player share + dup bat1 share = iff + [ drop bat1 relocate ] again + dup bat2 share = iff + [ drop bat2 relocate ] again + dup pit1 share = + over pit2 share = or iff + [ say "You fell into a bottomless pit." + drop false ] + done + dup wumpus share = iff + [ say "The Wumpus eats you." drop false ] + done + say "You are in chamber " dup echo say "." cr + say "Adjacent chambers are: " + adjacent dup witheach + [ echo i 0 = iff [ say "." cr ] + else + [ say ", " + i 1 = if [ say "and " ] ] ] + say "You have " arrows share echo say " arrows." cr + dup wumpus share has if + [ say "You smell something terrible nearby." cr ] + dup bat1 share has + over bat2 share has or if + [ say "You hear a rustling." cr ] + dup pit1 share has + swap pit2 share has or if + [ say "You feel a cold wind " + say "blowing from a nearby chamber." cr ] + true ] is report ( --> b ) + + [ $ "Move to which chamber? " input validate + player share adjacent + dup addrand unrot find + peek player put true ] is move ( --> b ) + + [ true + $ "Shoot into which chambers? " input nest$ + dup [] = if [ drop ' [ [ -1 ] ] ] + player share swap witheach + [ $->n not if [ drop -1 ] + swap adjacent + dup addrand unrot find peek + say "The arrow enters chamber " + dup echo say "." cr + dup player share = iff + [ say "You shot yourself." cr + dip not conclude ] + done + dup wumpus share = iff + [ say "You shot the Wumpus." cr + dip not conclude ] + done ] + drop dup while + say "You did not hit anything." cr + 4 random 0 != if + [ wumpus take adjacent + 3 random peek wumpus put ] + -1 arrows tally + arrows share 0 = if + [ say "You have run out of arrows." cr not ] ] is shoot ( --> b ) + + [ $ "Move or shoot? " input space join + 0 peek upper dup char M = iff [ drop move ] done + char S = iff shoot done + again ] is action ( b --> b ) + + [ cr + say "Your mission is to anaesthetise an ailing " + say "Wumpus so that it can be healed." cr + say "It is in a dodecahedral labyrinth " + say "that is fraught with dangers." cr + say "The labyrinth has 20 chambers numbered 0 to " + say "19 which are connected by tunnels." cr cr + say "- The Wumpus will eat you if it sees you." cr + say "- Two of the chambers are bottomless pits." cr + say "- There are two giant bats that will " + say "transport you to a random chamber." cr cr + say "You can smell the Wumpus from an adjoining " + say "chamber. It smells terrible." cr + say "When you are in a chamber next to a bottomless " + say "pit you can feel a cold wind." cr + say "You can hear the giant bats rustle from a " + say "chamber away." cr cr + say "You are equipped with five progammable arrows." cr + say "They can be programmed with up to five " + say "adjoining chambers." cr + say "If a destination is invalid the arrow will move " + say "to a random adjoining chamber." cr cr + say "Be careful! Do not shoot yourself. Wumpus " + say "anasthetic is lethal to humans." cr + say "If you miss the Wumpus it will probably wake " + say "and move to an adjoining chamber." cr cr ] is rules ( --> ) + + [ say "Hunt the Wumpus, the Quackery cut." cr cr + randomise + 5 arrows put + [] 20 times [ i join ] shuffle + ' [ player wumpus bat1 bat2 pit1 pit2 ] + witheach [ dip behead put ] + drop + $ "Would you like to see the rules? " input + space join 0 peek upper char Y = if rules + [ report while + action while + cr again ] + ' [ player arrows wumpus bat1 bat2 pit1 pit2 ] + witheach release ] is play ( --> ) + + play diff --git a/Task/Hunt-the-Wumpus/Wren/hunt-the-wumpus.wren b/Task/Hunt-the-Wumpus/Wren/hunt-the-wumpus.wren index ad665375ea..f053916bea 100644 --- a/Task/Hunt-the-Wumpus/Wren/hunt-the-wumpus.wren +++ b/Task/Hunt-the-Wumpus/Wren/hunt-the-wumpus.wren @@ -1,7 +1,7 @@ import "random" for Random -import "/fmt" for Fmt -import "/ioutil" for Input -import "/str" for Str +import "./fmt" for Fmt +import "./ioutil" for Input +import "./str" for Str var cave = { 1: [ 2, 3, 4], 2: [ 1, 5, 6], 3: [ 1, 7, 8], 4: [ 1, 9, 10], diff --git a/Task/I-before-E-except-after-C/BBC-BASIC/i-before-e-except-after-c.basic b/Task/I-before-E-except-after-C/BBC-BASIC/i-before-e-except-after-c.basic new file mode 100644 index 0000000000..dbef67d8e6 --- /dev/null +++ b/Task/I-before-E-except-after-C/BBC-BASIC/i-before-e-except-after-c.basic @@ -0,0 +1,39 @@ + F%=OPENIN"unixdict.txt" + IF F% == 0 ERROR 100, "unixdict not found!" + + CI=0 : XI=0 : CE=0 : XE=0 + WHILE NOT EOF#F% + Line$=GET$#F% + + P%=INSTR(Line$, "ie") + WHILE P% + IF MID$(Line$, P% - 1, 1) == "c" CI+=1 ELSE XI+=1 + P%=INSTR(Line$, "ie", P% + 1) + ENDWHILE + + P%=INSTR(Line$, "ei") + WHILE P% + IF MID$(Line$, P% - 1, 1) == "c" CE+=1 ELSE XE+=1 + P%=INSTR(Line$, "ei", P% + 1) + ENDWHILE + ENDWHILE + CLOSE#F% + + PRINT "Instances of 'ie', proceeded by a 'c' = ";CI + PRINT "Instances of 'ie', NOT proceeded by a 'c' = ";XI + P1%=XI * 2 > CI + PRINT "Therefore 'I before E when not preceded by C' is" FNTest(P1%) + PRINT + + PRINT "Instances of 'ei', proceeded by a 'c' = ";CE + PRINT "Instances of 'ei', NOT proceeded by a 'c' = ";XE + P2%=CE * 2 > XE + PRINT "Therefore 'E before I when preceded by C' is" FNTest(P2%) + PRINT + + IF P1% AND P2% PRINT "B"; ELSE PRINT "Not b"; + PRINT "oth sub-phrases are plausible, therefore the phrase " +\ + \ "'I before E, except after C' can be said to be" FNTest(P1% AND P2%) "!" + END + + DEF FNTest(plausible%)=MID$(" not plausible", 1 - 4 * plausible%) diff --git a/Task/I-before-E-except-after-C/SETL/i-before-e-except-after-c.setl b/Task/I-before-E-except-after-C/SETL/i-before-e-except-after-c.setl new file mode 100644 index 0000000000..1632b84178 --- /dev/null +++ b/Task/I-before-E-except-after-C/SETL/i-before-e-except-after-c.setl @@ -0,0 +1,34 @@ +program i_before_e_except_after_c; + init cie := 0, xie := 0, cei := 0, xei := 0; + + dict := open("unixdict.txt", "r"); + loop doing word := getline(dict); while word /= om do + classify(word); + end loop; + close(dict); + + p := + plausible("I before E when not preceded by C", xie, cie) and + plausible("E before I when preceded by C", cei, xei); + print; + print("I before E, except after C:" + (if p then "" else " not" end) + + " plausible."); + + proc classify(word); + if "ie" in word then + if "cie" in word then cie +:= 1; + else xie +:= 1; + end if; + elseif "ei" in word then + if "cei" in word then cei +:= 1; + else xei +:= 1; + end if; + end if; + end proc; + + proc plausible(clause, feature, opposite); + p := 2 * feature > opposite; + print(clause + ":" + (if p then "" else " not" end) + " plausible."); + return p; + end proc; +end program; diff --git a/Task/I-before-E-except-after-C/Wren/i-before-e-except-after-c-1.wren b/Task/I-before-E-except-after-C/Wren/i-before-e-except-after-c-1.wren index 6e6559d8b1..3de929e85b 100644 --- a/Task/I-before-E-except-after-C/Wren/i-before-e-except-after-c-1.wren +++ b/Task/I-before-E-except-after-C/Wren/i-before-e-except-after-c-1.wren @@ -1,6 +1,6 @@ import "io" for File -import "/pattern" for Pattern -import "/fmt" for Fmt +import "./pattern" for Pattern +import "./fmt" for Fmt var yesNo = Fn.new { |b| (b) ? "yes" : "no" } diff --git a/Task/I-before-E-except-after-C/Wren/i-before-e-except-after-c-2.wren b/Task/I-before-E-except-after-C/Wren/i-before-e-except-after-c-2.wren index 37daa47fae..f7ef9f5868 100644 --- a/Task/I-before-E-except-after-C/Wren/i-before-e-except-after-c-2.wren +++ b/Task/I-before-E-except-after-C/Wren/i-before-e-except-after-c-2.wren @@ -1,6 +1,6 @@ import "io" for File -import "/pattern" for Pattern -import "/fmt" for Fmt +import "./pattern" for Pattern +import "./fmt" for Fmt var yesNo = Fn.new { |b| (b) ? "yes" : "no" } diff --git a/Task/IBAN/Wren/iban.wren b/Task/IBAN/Wren/iban.wren index 48e708cff9..e674e8176d 100644 --- a/Task/IBAN/Wren/iban.wren +++ b/Task/IBAN/Wren/iban.wren @@ -1,4 +1,4 @@ -import "/big" for BigInt +import "./big" for BigInt var countryCodes = "AD24 AE23 AL28 AT20 AZ28 BA20 BE16 BG22 BH22 BR29 " + diff --git a/Task/ISBN13-check-digit/MiniScript/isbn13-check-digit.mini b/Task/ISBN13-check-digit/MiniScript/isbn13-check-digit.mini new file mode 100644 index 0000000000..0dbc147f8f --- /dev/null +++ b/Task/ISBN13-check-digit/MiniScript/isbn13-check-digit.mini @@ -0,0 +1,16 @@ +isISBN13 = function(n) + n = n.replace("-","").replace(" ","") + s = 0 + for i in range(0, n.len-1,2) + s += n[i].val + end for + for i in range(1, n.len-1,2) + s += n[i].val * 3 + end for + return not (s % 10) +end function + +testValues = "978-0596528126 978-0596528120 978-1788399081 978-1788399083".split(" ") +for val in testValues + print val + " " + ["bad", "good"][isISBN13(val)] +end for diff --git a/Task/Identity-matrix/Wren/identity-matrix.wren b/Task/Identity-matrix/Wren/identity-matrix.wren index da703414a2..9e717f28f2 100644 --- a/Task/Identity-matrix/Wren/identity-matrix.wren +++ b/Task/Identity-matrix/Wren/identity-matrix.wren @@ -1,5 +1,5 @@ -import "/matrix" for Matrix -import "/fmt" for Fmt +import "./matrix" for Matrix +import "./fmt" for Fmt var numRows = 10 // say Fmt.mprint(Matrix.identity(numRows), 2, 0) diff --git a/Task/Im-a-software-engineer-get-me-out-of-here/Wren/im-a-software-engineer-get-me-out-of-here-1.wren b/Task/Im-a-software-engineer-get-me-out-of-here/Wren/im-a-software-engineer-get-me-out-of-here-1.wren index bd12bdf16c..c9fefb5e85 100644 --- a/Task/Im-a-software-engineer-get-me-out-of-here/Wren/im-a-software-engineer-get-me-out-of-here-1.wren +++ b/Task/Im-a-software-engineer-get-me-out-of-here/Wren/im-a-software-engineer-get-me-out-of-here-1.wren @@ -1,5 +1,5 @@ -import "/dynamic" for Struct -import "/fmt" for Fmt +import "./dynamic" for Struct +import "./fmt" for Fmt var gmooh = """ .........00000......... diff --git a/Task/Im-a-software-engineer-get-me-out-of-here/Wren/im-a-software-engineer-get-me-out-of-here-2.wren b/Task/Im-a-software-engineer-get-me-out-of-here/Wren/im-a-software-engineer-get-me-out-of-here-2.wren index ecad55c8d7..ac03dae18c 100644 --- a/Task/Im-a-software-engineer-get-me-out-of-here/Wren/im-a-software-engineer-get-me-out-of-here-2.wren +++ b/Task/Im-a-software-engineer-get-me-out-of-here/Wren/im-a-software-engineer-get-me-out-of-here-2.wren @@ -1,4 +1,4 @@ -import "/fmt" for Fmt +import "./fmt" for Fmt var gmooh = """ .........00000......... diff --git a/Task/Image-convolution/Wren/image-convolution.wren b/Task/Image-convolution/Wren/image-convolution.wren index 28f3075ccc..1c14c31381 100644 --- a/Task/Image-convolution/Wren/image-convolution.wren +++ b/Task/Image-convolution/Wren/image-convolution.wren @@ -76,7 +76,7 @@ class ImageConvolution { } getArrayDatasFromImage(filename) { - var inputImage = ImageData.loadFromFile(filename) + var inputImage = ImageData.load(filename) inputImage.draw(0, 0) Canvas.print(filename, _width * 1/6, _height * 5/6, Color.white) var width = inputImage.width diff --git a/Task/Image-noise/EasyLang/image-noise.easy b/Task/Image-noise/EasyLang/image-noise.easy new file mode 100644 index 0000000000..002181b964 --- /dev/null +++ b/Task/Image-noise/EasyLang/image-noise.easy @@ -0,0 +1,24 @@ +proc pset x y c . . + color c + move x / 3.2 y / 3.2 + rect 0.3 0.3 +. +on animate + fr += 1 + if systime - t0 >= 1 + move 10 78 + color -2 + rect 80 20 + color -1 + move 10 80 + text fr / (systime - t0) & " fps" + t0 = systime + fr = 0 + . + col[] = [ 000 999 ] + for x = 0 to 319 + for y = 0 to 199 + pset x y col[random 2] + . + . +. diff --git a/Task/Image-noise/MiniScript/image-noise.mini b/Task/Image-noise/MiniScript/image-noise.mini new file mode 100644 index 0000000000..4f747fce37 --- /dev/null +++ b/Task/Image-noise/MiniScript/image-noise.mini @@ -0,0 +1,37 @@ +clear +tileSetLength = 32 +width = 320 +height = 240 +cellSize = [960/width, 600/height] +colors = [color.black, color.white] + +newImg = function + img = Image.create(tileSetLength, 1) + for i in range(0, tileSetLength - 1) + img.setPixel i, 0, colors[rnd * 2] + end for + return img +end function + +display(5).mode = displayMode.tile +td = display(5) +td.cellSize = cellSize +td.extent = [width, height] +td.tileSetTileSize = 1 +for x in range(0, width - 1) + for y in range(0, height - 1) + td.setCell x, y, rnd * tileSetLength + end for +end for +frames = 0 +startTime = time +while true + td.tileSet = newImg + frames += 1 + dt = time - startTime + if dt >= 1 then + text.row = 25; print "FPS: " + round(frames / dt, 2) + frames = 0 + startTime = time + end if +end while diff --git a/Task/Image-noise/Python/image-noise.py b/Task/Image-noise/Python/image-noise.py index 2f0bb119fb..2ef19f4849 100644 --- a/Task/Image-noise/Python/image-noise.py +++ b/Task/Image-noise/Python/image-noise.py @@ -1,53 +1,58 @@ import time import random -import Tkinter -import Image, ImageTk # PIL libray +import tkinter +from PIL import Image +from PIL import ImageTk -class App(object): + +class App: def __init__(self, size, root): self.root = root self.root.title("Image Noise Test") - self.img = Image.new("RGB", size) - self.label = Tkinter.Label(root) + self.img = Image.new("1", size) + self.label = tkinter.Label(root) self.label.pack() self.time = 0.0 self.frames = 0 self.size = size + self.n_pixels = self.size[0] * self.size[1] + self.loop() def loop(self): - self.ta = time.time() - # 13 FPS boost. half integer idea from C#. - rnd = random.random - white = (255, 255, 255) - black = (0, 0, 0) - npixels = self.size[0] * self.size[1] - data = [white if rnd() > 0.5 else black for i in xrange(npixels)] - self.img.putdata(data) - self.pimg = ImageTk.PhotoImage(self.img) - self.label["image"] = self.pimg - self.tb = time.time() + start_time = time.time() - self.time += (self.tb - self.ta) + self.img.putdata( + [255 if b > 127 else 0 for b in random.randbytes(self.n_pixels)] + ) + + self.bitmap_image = ImageTk.BitmapImage(self.img) + self.label["image"] = self.bitmap_image + + end_time = time.time() + self.time += end_time - start_time self.frames += 1 if self.frames == 30: try: - self.fps = self.frames / self.time - except: - self.fps = "INSTANT" - print ("%d frames in %3.2f seconds (%s FPS)" % - (self.frames, self.time, self.fps)) + fps = self.frames / self.time + except ZeroDivisionError: + fps = "INSTANT" + + print(f"{self.frames} frames in {self.time:3.2f} seconds ({fps} FPS)") self.time = 0 self.frames = 0 self.root.after(1, self.loop) + def main(): - root = Tkinter.Tk() + root = tkinter.Tk() app = App((320, 240), root) root.mainloop() -main() + +if __name__ == "__main__": + main() diff --git a/Task/Imaginary-base-numbers/Wren/imaginary-base-numbers.wren b/Task/Imaginary-base-numbers/Wren/imaginary-base-numbers.wren index 81348d35f7..c962b83e03 100644 --- a/Task/Imaginary-base-numbers/Wren/imaginary-base-numbers.wren +++ b/Task/Imaginary-base-numbers/Wren/imaginary-base-numbers.wren @@ -1,5 +1,5 @@ -import "/complex" for Complex -import "/fmt" for Fmt +import "./complex" for Complex +import "./fmt" for Fmt class QuaterImaginary { construct new(b2i) { diff --git a/Task/Include-a-file/Wren/include-a-file.wren b/Task/Include-a-file/Wren/include-a-file.wren index ff507b39a2..02cfd3fd48 100644 --- a/Task/Include-a-file/Wren/include-a-file.wren +++ b/Task/Include-a-file/Wren/include-a-file.wren @@ -1,4 +1,4 @@ import "./fmt" for Fmt // imports the Fmt module and makes the 'Fmt' class available -import "./math" for Int // imports the Math module and makes the 'Int' class available +import "./math" for Math // imports the Math module and makes the 'Math' class available -Fmt.print("The maximum safe integer in Wren is $,d.", Int.maxSafe) +Fmt.print("The value of 'e' to 6 d.p. is $,f.", Math.e) diff --git a/Task/Increasing-gaps-between-consecutive-Niven-numbers/Wren/increasing-gaps-between-consecutive-niven-numbers.wren b/Task/Increasing-gaps-between-consecutive-Niven-numbers/Wren/increasing-gaps-between-consecutive-niven-numbers.wren index 78533d1112..be42b0397a 100644 --- a/Task/Increasing-gaps-between-consecutive-Niven-numbers/Wren/increasing-gaps-between-consecutive-niven-numbers.wren +++ b/Task/Increasing-gaps-between-consecutive-Niven-numbers/Wren/increasing-gaps-between-consecutive-niven-numbers.wren @@ -1,4 +1,4 @@ -import "/fmt" for Fmt +import "./fmt" for Fmt var newSum // recursive newSum = Fn.new { @@ -40,7 +40,7 @@ var n = h.call() while (n <= 1e9) { var g = n - pn if (g > pg) { - System.print("%(Fmt.d(3, g)) %(Fmt.dc(13, i)) %(Fmt.dc(14, pn))") + Fmt.print("$3d $,13d $,14d", g, i, pn) pg = g } pn = n diff --git a/Task/Index-finite-lists-of-positive-integers/Wren/index-finite-lists-of-positive-integers.wren b/Task/Index-finite-lists-of-positive-integers/Wren/index-finite-lists-of-positive-integers.wren index 532e7d1d4a..6f434c695d 100644 --- a/Task/Index-finite-lists-of-positive-integers/Wren/index-finite-lists-of-positive-integers.wren +++ b/Task/Index-finite-lists-of-positive-integers/Wren/index-finite-lists-of-positive-integers.wren @@ -1,4 +1,4 @@ -import "/big" for BigInt +import "./big" for BigInt // Separates each integer in the list with an 'a' then encodes in base 11. // Empty list mapped to '-1'. diff --git a/Task/Infinity/EasyLang/infinity.easy b/Task/Infinity/EasyLang/infinity.easy new file mode 100644 index 0000000000..f99adbe2fb --- /dev/null +++ b/Task/Infinity/EasyLang/infinity.easy @@ -0,0 +1,3 @@ +print number "inf" +# or +print 1 / 0 diff --git a/Task/Infinity/Zig/infinity.zig b/Task/Infinity/Zig/infinity.zig index 7a949a8e1a..6c1a9a46cf 100644 --- a/Task/Infinity/Zig/infinity.zig +++ b/Task/Infinity/Zig/infinity.zig @@ -1,34 +1,17 @@ const std = @import("std"); -const debug = std.debug; const math = std.math; test "infinity" { - const infinite_f16 = math.inf(f16); - const infinite_f32 = math.inf(f32); - const infinite_f64 = math.inf(f64); - const infinite_f128 = math.inf(f128); + const expect = std.testing.expect; - // Any other types besides these four floating types are not implemented. + const float_types = [_]type{ f16, f32, f64, f80, f128, c_longdouble }; + inline for (float_types) |T| { + const infinite_value: T = comptime std.math.inf(T); - debug.assert(math.isInf(infinite_f16)); - debug.assert(math.isInf(infinite_f32)); - debug.assert(math.isInf(infinite_f64)); - debug.assert(math.isInf(infinite_f128)); - - debug.assert(math.isPositiveInf(infinite_f16)); - debug.assert(math.isPositiveInf(infinite_f32)); - debug.assert(math.isPositiveInf(infinite_f64)); - debug.assert(math.isPositiveInf(infinite_f128)); - - debug.assert(math.isNegativeInf(-infinite_f16)); - debug.assert(math.isNegativeInf(-infinite_f32)); - debug.assert(math.isNegativeInf(-infinite_f64)); - debug.assert(math.isNegativeInf(-infinite_f128)); - - debug.assert(!math.isFinite(infinite_f16)); - debug.assert(!math.isFinite(infinite_f32)); - debug.assert(!math.isFinite(infinite_f64)); - // isFinite(f128) is not implemented. - //debug.assert(!math.isFinite(infinite_f128)); + try expect(math.isInf(infinite_value)); + try expect(math.isPositiveInf(infinite_value)); + try expect(!math.isNegativeInf(infinite_value)); + try expect(!math.isFinite(infinite_value)); + } } diff --git a/Task/Inheritance-Single/ActionScript/inheritance-single-1.as b/Task/Inheritance-Single/ActionScript/inheritance-single-1.as deleted file mode 100644 index 6387368cd0..0000000000 --- a/Task/Inheritance-Single/ActionScript/inheritance-single-1.as +++ /dev/null @@ -1,3 +0,0 @@ -public class Animal { - // ... -} diff --git a/Task/Inheritance-Single/ActionScript/inheritance-single-2.as b/Task/Inheritance-Single/ActionScript/inheritance-single-2.as deleted file mode 100644 index 4228426382..0000000000 --- a/Task/Inheritance-Single/ActionScript/inheritance-single-2.as +++ /dev/null @@ -1,3 +0,0 @@ -public class Cat extends Animal { - // ... -} diff --git a/Task/Inheritance-Single/ActionScript/inheritance-single-3.as b/Task/Inheritance-Single/ActionScript/inheritance-single-3.as deleted file mode 100644 index a0c3682349..0000000000 --- a/Task/Inheritance-Single/ActionScript/inheritance-single-3.as +++ /dev/null @@ -1,3 +0,0 @@ -public class Dog extends Animal { - // ... -} diff --git a/Task/Inheritance-Single/ActionScript/inheritance-single-4.as b/Task/Inheritance-Single/ActionScript/inheritance-single-4.as deleted file mode 100644 index 09c68cf42a..0000000000 --- a/Task/Inheritance-Single/ActionScript/inheritance-single-4.as +++ /dev/null @@ -1,3 +0,0 @@ -public class Lab extends Dog { - // ... -} diff --git a/Task/Inheritance-Single/ActionScript/inheritance-single-5.as b/Task/Inheritance-Single/ActionScript/inheritance-single-5.as deleted file mode 100644 index f85ebadc50..0000000000 --- a/Task/Inheritance-Single/ActionScript/inheritance-single-5.as +++ /dev/null @@ -1,3 +0,0 @@ -public class Collie extends Dog { - // ... -} diff --git a/Task/Inheritance-Single/ActionScript/inheritance-single.as b/Task/Inheritance-Single/ActionScript/inheritance-single.as new file mode 100644 index 0000000000..5926e9c68d --- /dev/null +++ b/Task/Inheritance-Single/ActionScript/inheritance-single.as @@ -0,0 +1,15 @@ +public class Animal { + // ... +} +public class Cat extends Animal { + // ... +} +public class Dog extends Animal { + // ... +} +public class Lab extends Dog { + // ... +} +public class Collie extends Dog { + // ... +} diff --git a/Task/Inheritance-Single/Aikido/inheritance-single-1.aikido b/Task/Inheritance-Single/Aikido/inheritance-single-1.aikido deleted file mode 100644 index 61c1249fcd..0000000000 --- a/Task/Inheritance-Single/Aikido/inheritance-single-1.aikido +++ /dev/null @@ -1,3 +0,0 @@ -class Animal{ - //functions go here... -} diff --git a/Task/Inheritance-Single/Aikido/inheritance-single-2.aikido b/Task/Inheritance-Single/Aikido/inheritance-single-2.aikido deleted file mode 100644 index 55525e1792..0000000000 --- a/Task/Inheritance-Single/Aikido/inheritance-single-2.aikido +++ /dev/null @@ -1,3 +0,0 @@ -class Dog extends Animal { - //functions go here... -} diff --git a/Task/Inheritance-Single/Aikido/inheritance-single-3.aikido b/Task/Inheritance-Single/Aikido/inheritance-single-3.aikido deleted file mode 100644 index d5b298dd30..0000000000 --- a/Task/Inheritance-Single/Aikido/inheritance-single-3.aikido +++ /dev/null @@ -1,3 +0,0 @@ -class Cat extends Animal { - //functions go here... -} diff --git a/Task/Inheritance-Single/Aikido/inheritance-single-4.aikido b/Task/Inheritance-Single/Aikido/inheritance-single-4.aikido deleted file mode 100644 index 613262bae7..0000000000 --- a/Task/Inheritance-Single/Aikido/inheritance-single-4.aikido +++ /dev/null @@ -1,3 +0,0 @@ -class Lab extends Dog { - //functions go here... -} diff --git a/Task/Inheritance-Single/Aikido/inheritance-single-5.aikido b/Task/Inheritance-Single/Aikido/inheritance-single-5.aikido deleted file mode 100644 index 7e540af997..0000000000 --- a/Task/Inheritance-Single/Aikido/inheritance-single-5.aikido +++ /dev/null @@ -1,3 +0,0 @@ -class Collie extends Dog { - //functions go here... -} diff --git a/Task/Inheritance-Single/Aikido/inheritance-single.aikido b/Task/Inheritance-Single/Aikido/inheritance-single.aikido new file mode 100644 index 0000000000..fdf9381977 --- /dev/null +++ b/Task/Inheritance-Single/Aikido/inheritance-single.aikido @@ -0,0 +1,15 @@ +class Animal{ + //functions go here... +} +class Dog extends Animal { + //functions go here... +} +class Cat extends Animal { + //functions go here... +} +class Lab extends Dog { + //functions go here... +} +class Collie extends Dog { + //functions go here... +} diff --git a/Task/Inheritance-Single/ChucK/inheritance-single-1.chuck b/Task/Inheritance-Single/ChucK/inheritance-single-1.chuck deleted file mode 100644 index 4591276d5a..0000000000 --- a/Task/Inheritance-Single/ChucK/inheritance-single-1.chuck +++ /dev/null @@ -1,3 +0,0 @@ -public class Drums{ - //functions go here... -} diff --git a/Task/Inheritance-Single/ChucK/inheritance-single-2.chuck b/Task/Inheritance-Single/ChucK/inheritance-single-2.chuck deleted file mode 100644 index b23fab7309..0000000000 --- a/Task/Inheritance-Single/ChucK/inheritance-single-2.chuck +++ /dev/null @@ -1,3 +0,0 @@ -public class LatinKit extends Drums{ - //functions go here... -} diff --git a/Task/Inheritance-Single/ChucK/inheritance-single-3.chuck b/Task/Inheritance-Single/ChucK/inheritance-single-3.chuck deleted file mode 100644 index 87730d0974..0000000000 --- a/Task/Inheritance-Single/ChucK/inheritance-single-3.chuck +++ /dev/null @@ -1,3 +0,0 @@ -public class ElectronicKit extends Drums{ - //functions go here... -} diff --git a/Task/Inheritance-Single/ChucK/inheritance-single-4.chuck b/Task/Inheritance-Single/ChucK/inheritance-single-4.chuck deleted file mode 100644 index 0169cbe14e..0000000000 --- a/Task/Inheritance-Single/ChucK/inheritance-single-4.chuck +++ /dev/null @@ -1,3 +0,0 @@ -public class Congas extends LatinKit{ - //functions go here... -} diff --git a/Task/Inheritance-Single/ChucK/inheritance-single-5.chuck b/Task/Inheritance-Single/ChucK/inheritance-single-5.chuck deleted file mode 100644 index 7bb0dca290..0000000000 --- a/Task/Inheritance-Single/ChucK/inheritance-single-5.chuck +++ /dev/null @@ -1,3 +0,0 @@ -public class TechnoDrums extends ElectronicKit{ - //functions go here... -} diff --git a/Task/Inheritance-Single/ChucK/inheritance-single.chuck b/Task/Inheritance-Single/ChucK/inheritance-single.chuck new file mode 100644 index 0000000000..fa400771e5 --- /dev/null +++ b/Task/Inheritance-Single/ChucK/inheritance-single.chuck @@ -0,0 +1,15 @@ +public class Drums{ + //functions go here... +} +public class LatinKit extends Drums{ + //functions go here... +} +public class ElectronicKit extends Drums{ + //functions go here... +} +public class Congas extends LatinKit{ + //functions go here... +} +public class TechnoDrums extends ElectronicKit{ + //functions go here... +} diff --git a/Task/Inheritance-Single/Eiffel/inheritance-single-1.e b/Task/Inheritance-Single/Eiffel/inheritance-single-1.e deleted file mode 100644 index 90e75ff409..0000000000 --- a/Task/Inheritance-Single/Eiffel/inheritance-single-1.e +++ /dev/null @@ -1,3 +0,0 @@ -class - ANIMAL -end diff --git a/Task/Inheritance-Single/Eiffel/inheritance-single-2.e b/Task/Inheritance-Single/Eiffel/inheritance-single-2.e deleted file mode 100644 index 3f0e17fcdc..0000000000 --- a/Task/Inheritance-Single/Eiffel/inheritance-single-2.e +++ /dev/null @@ -1,5 +0,0 @@ -class - DOG -inherit - ANIMAL -end diff --git a/Task/Inheritance-Single/Eiffel/inheritance-single-3.e b/Task/Inheritance-Single/Eiffel/inheritance-single-3.e deleted file mode 100644 index a24eb4893a..0000000000 --- a/Task/Inheritance-Single/Eiffel/inheritance-single-3.e +++ /dev/null @@ -1,5 +0,0 @@ -class - CAT -inherit - ANIMAL -end diff --git a/Task/Inheritance-Single/Eiffel/inheritance-single-4.e b/Task/Inheritance-Single/Eiffel/inheritance-single-4.e deleted file mode 100644 index 0d2984ebc1..0000000000 --- a/Task/Inheritance-Single/Eiffel/inheritance-single-4.e +++ /dev/null @@ -1,5 +0,0 @@ -class - LAB -inherit - DOG -end diff --git a/Task/Inheritance-Single/Eiffel/inheritance-single-5.e b/Task/Inheritance-Single/Eiffel/inheritance-single-5.e deleted file mode 100644 index 27e7d0354d..0000000000 --- a/Task/Inheritance-Single/Eiffel/inheritance-single-5.e +++ /dev/null @@ -1,5 +0,0 @@ -class - COLLIE -inherit - DOG -end diff --git a/Task/Inheritance-Single/Eiffel/inheritance-single.e b/Task/Inheritance-Single/Eiffel/inheritance-single.e new file mode 100644 index 0000000000..593ae6ceea --- /dev/null +++ b/Task/Inheritance-Single/Eiffel/inheritance-single.e @@ -0,0 +1,23 @@ +class + ANIMAL +end +class + DOG +inherit + ANIMAL +end +class + CAT +inherit + ANIMAL +end +class + LAB +inherit + DOG +end +class + COLLIE +inherit + DOG +end diff --git a/Task/Inheritance-Single/Groovy/inheritance-single-1.groovy b/Task/Inheritance-Single/Groovy/inheritance-single-1.groovy deleted file mode 100644 index 0117832299..0000000000 --- a/Task/Inheritance-Single/Groovy/inheritance-single-1.groovy +++ /dev/null @@ -1,3 +0,0 @@ -class Animal{ - //contents go here... -} diff --git a/Task/Inheritance-Single/Groovy/inheritance-single-2.groovy b/Task/Inheritance-Single/Groovy/inheritance-single-2.groovy deleted file mode 100644 index 21ceba530f..0000000000 --- a/Task/Inheritance-Single/Groovy/inheritance-single-2.groovy +++ /dev/null @@ -1,3 +0,0 @@ -class Dog extends Animal{ - //contents go here... -} diff --git a/Task/Inheritance-Single/Groovy/inheritance-single-3.groovy b/Task/Inheritance-Single/Groovy/inheritance-single-3.groovy deleted file mode 100644 index d2060ef0a0..0000000000 --- a/Task/Inheritance-Single/Groovy/inheritance-single-3.groovy +++ /dev/null @@ -1,3 +0,0 @@ -class Cat extends Animal{ - //contents go here... -} diff --git a/Task/Inheritance-Single/Groovy/inheritance-single-4.groovy b/Task/Inheritance-Single/Groovy/inheritance-single-4.groovy deleted file mode 100644 index a167b50871..0000000000 --- a/Task/Inheritance-Single/Groovy/inheritance-single-4.groovy +++ /dev/null @@ -1,3 +0,0 @@ -class Lab extends Dog{ - //contents go here... -} diff --git a/Task/Inheritance-Single/Groovy/inheritance-single-5.groovy b/Task/Inheritance-Single/Groovy/inheritance-single-5.groovy deleted file mode 100644 index ff13fcd29d..0000000000 --- a/Task/Inheritance-Single/Groovy/inheritance-single-5.groovy +++ /dev/null @@ -1,3 +0,0 @@ -class Collie extends Dog{ - //contents go here... -} diff --git a/Task/Inheritance-Single/Groovy/inheritance-single.groovy b/Task/Inheritance-Single/Groovy/inheritance-single.groovy new file mode 100644 index 0000000000..4e84138218 --- /dev/null +++ b/Task/Inheritance-Single/Groovy/inheritance-single.groovy @@ -0,0 +1,15 @@ +class Animal{ + //contents go here... +} +class Dog extends Animal{ + //contents go here... +} +class Cat extends Animal{ + //contents go here... +} +class Lab extends Dog{ + //contents go here... +} +class Collie extends Dog{ + //contents go here... +} diff --git a/Task/Inheritance-Single/Haxe/inheritance-single-1.haxe b/Task/Inheritance-Single/Haxe/inheritance-single-1.haxe index f17bc4fcb5..68157409be 100644 --- a/Task/Inheritance-Single/Haxe/inheritance-single-1.haxe +++ b/Task/Inheritance-Single/Haxe/inheritance-single-1.haxe @@ -1,3 +1,15 @@ class Animal { // ... } +class Cat extends Animal { + // ... +} +class Dog extends Animal { + // ... +} +class Lab extends Dog { + // ... +} +class Collie extends Dog { + // ... +} diff --git a/Task/Inheritance-Single/Haxe/inheritance-single-2.haxe b/Task/Inheritance-Single/Haxe/inheritance-single-2.haxe index 3618c13c0c..3dc34fe62a 100644 --- a/Task/Inheritance-Single/Haxe/inheritance-single-2.haxe +++ b/Task/Inheritance-Single/Haxe/inheritance-single-2.haxe @@ -1,3 +1,14 @@ -class Cat extends Animal { - // ... -} +class Animal () +end + +class Dog : Animal () +end + +class Cat : Animal () +end + +class Lab : Dog () +end + +class Collie : Dog () +end diff --git a/Task/Inheritance-Single/Haxe/inheritance-single-3.haxe b/Task/Inheritance-Single/Haxe/inheritance-single-3.haxe deleted file mode 100644 index 0d99a08b87..0000000000 --- a/Task/Inheritance-Single/Haxe/inheritance-single-3.haxe +++ /dev/null @@ -1,3 +0,0 @@ -class Dog extends Animal { - // ... -} diff --git a/Task/Inheritance-Single/Haxe/inheritance-single-4.haxe b/Task/Inheritance-Single/Haxe/inheritance-single-4.haxe deleted file mode 100644 index 27cdb2e1f1..0000000000 --- a/Task/Inheritance-Single/Haxe/inheritance-single-4.haxe +++ /dev/null @@ -1,3 +0,0 @@ -class Lab extends Dog { - // ... -} diff --git a/Task/Inheritance-Single/Haxe/inheritance-single-5.haxe b/Task/Inheritance-Single/Haxe/inheritance-single-5.haxe deleted file mode 100644 index 7be8fb60d0..0000000000 --- a/Task/Inheritance-Single/Haxe/inheritance-single-5.haxe +++ /dev/null @@ -1,3 +0,0 @@ -class Collie extends Dog { - // ... -} diff --git a/Task/Inheritance-Single/Haxe/inheritance-single-6.haxe b/Task/Inheritance-Single/Haxe/inheritance-single-6.haxe deleted file mode 100644 index 3dc34fe62a..0000000000 --- a/Task/Inheritance-Single/Haxe/inheritance-single-6.haxe +++ /dev/null @@ -1,14 +0,0 @@ -class Animal () -end - -class Dog : Animal () -end - -class Cat : Animal () -end - -class Lab : Dog () -end - -class Collie : Dog () -end diff --git a/Task/Inheritance-Single/J/inheritance-single-1.j b/Task/Inheritance-Single/J/inheritance-single-1.j index f55d7df342..c3f6d34d4b 100644 --- a/Task/Inheritance-Single/J/inheritance-single-1.j +++ b/Task/Inheritance-Single/J/inheritance-single-1.j @@ -1 +1,9 @@ coclass 'Animal' +coclass 'Dog' +coinsert 'Animal' +coclass 'Cat' +coinsert 'Animal' +coclass 'Lab' +coinsert 'Dog' +coclass 'Collie' +coinsert 'Dog' diff --git a/Task/Inheritance-Single/J/inheritance-single-2.j b/Task/Inheritance-Single/J/inheritance-single-2.j index 429574fdef..0da990cedc 100644 --- a/Task/Inheritance-Single/J/inheritance-single-2.j +++ b/Task/Inheritance-Single/J/inheritance-single-2.j @@ -1,2 +1,4 @@ -coclass 'Dog' -coinsert 'Animal' +coinsert_Dog_ 'Animal' +coinsert_Cat_ 'Animal' +coinsert_Lab_ 'Dog' +coinsert_Collie_ 'Dog' diff --git a/Task/Inheritance-Single/J/inheritance-single-3.j b/Task/Inheritance-Single/J/inheritance-single-3.j deleted file mode 100644 index 8dc97737e9..0000000000 --- a/Task/Inheritance-Single/J/inheritance-single-3.j +++ /dev/null @@ -1,2 +0,0 @@ -coclass 'Cat' -coinsert 'Animal' diff --git a/Task/Inheritance-Single/J/inheritance-single-4.j b/Task/Inheritance-Single/J/inheritance-single-4.j deleted file mode 100644 index 5f9c8f9e9a..0000000000 --- a/Task/Inheritance-Single/J/inheritance-single-4.j +++ /dev/null @@ -1,2 +0,0 @@ -coclass 'Lab' -coinsert 'Dog' diff --git a/Task/Inheritance-Single/J/inheritance-single-5.j b/Task/Inheritance-Single/J/inheritance-single-5.j deleted file mode 100644 index c8d03b5e2b..0000000000 --- a/Task/Inheritance-Single/J/inheritance-single-5.j +++ /dev/null @@ -1,2 +0,0 @@ -coclass 'Collie' -coinsert 'Dog' diff --git a/Task/Inheritance-Single/J/inheritance-single-6.j b/Task/Inheritance-Single/J/inheritance-single-6.j deleted file mode 100644 index 0da990cedc..0000000000 --- a/Task/Inheritance-Single/J/inheritance-single-6.j +++ /dev/null @@ -1,4 +0,0 @@ -coinsert_Dog_ 'Animal' -coinsert_Cat_ 'Animal' -coinsert_Lab_ 'Dog' -coinsert_Collie_ 'Dog' diff --git a/Task/Inheritance-Single/Java/inheritance-single-1.java b/Task/Inheritance-Single/Java/inheritance-single-1.java deleted file mode 100644 index e13d2fbed1..0000000000 --- a/Task/Inheritance-Single/Java/inheritance-single-1.java +++ /dev/null @@ -1,3 +0,0 @@ -public class Animal{ - //functions go here... -} diff --git a/Task/Inheritance-Single/Java/inheritance-single-2.java b/Task/Inheritance-Single/Java/inheritance-single-2.java deleted file mode 100644 index 2b37466f89..0000000000 --- a/Task/Inheritance-Single/Java/inheritance-single-2.java +++ /dev/null @@ -1,3 +0,0 @@ -public class Dog extends Animal{ - //functions go here... -} diff --git a/Task/Inheritance-Single/Java/inheritance-single-3.java b/Task/Inheritance-Single/Java/inheritance-single-3.java deleted file mode 100644 index 3c4f1890ea..0000000000 --- a/Task/Inheritance-Single/Java/inheritance-single-3.java +++ /dev/null @@ -1,3 +0,0 @@ -public class Cat extends Animal{ - //functions go here... -} diff --git a/Task/Inheritance-Single/Java/inheritance-single-4.java b/Task/Inheritance-Single/Java/inheritance-single-4.java deleted file mode 100644 index 2f4a9192ae..0000000000 --- a/Task/Inheritance-Single/Java/inheritance-single-4.java +++ /dev/null @@ -1,3 +0,0 @@ -public class Lab extends Dog{ - //functions go here... -} diff --git a/Task/Inheritance-Single/Java/inheritance-single-5.java b/Task/Inheritance-Single/Java/inheritance-single-5.java deleted file mode 100644 index 0db27f4ba2..0000000000 --- a/Task/Inheritance-Single/Java/inheritance-single-5.java +++ /dev/null @@ -1,3 +0,0 @@ -public class Collie extends Dog{ - //functions go here... -} diff --git a/Task/Inheritance-Single/Java/inheritance-single.java b/Task/Inheritance-Single/Java/inheritance-single.java new file mode 100644 index 0000000000..297952ff6a --- /dev/null +++ b/Task/Inheritance-Single/Java/inheritance-single.java @@ -0,0 +1,15 @@ +public class Animal{ + //functions go here... +} +public class Dog extends Animal{ + //functions go here... +} +public class Cat extends Animal{ + //functions go here... +} +public class Lab extends Dog{ + //functions go here... +} +public class Collie extends Dog{ + //functions go here... +} diff --git a/Task/Inheritance-Single/JavaScript/inheritance-single-1.js b/Task/Inheritance-Single/JavaScript/inheritance-single-1.js deleted file mode 100644 index 9b9dc72989..0000000000 --- a/Task/Inheritance-Single/JavaScript/inheritance-single-1.js +++ /dev/null @@ -1,3 +0,0 @@ -function Animal() { - // ... -} diff --git a/Task/Inheritance-Single/JavaScript/inheritance-single-2.js b/Task/Inheritance-Single/JavaScript/inheritance-single-2.js deleted file mode 100644 index 7650a5a90c..0000000000 --- a/Task/Inheritance-Single/JavaScript/inheritance-single-2.js +++ /dev/null @@ -1,4 +0,0 @@ -function Dog() { - // ... -} -Dog.prototype = new Animal(); diff --git a/Task/Inheritance-Single/JavaScript/inheritance-single-3.js b/Task/Inheritance-Single/JavaScript/inheritance-single-3.js deleted file mode 100644 index 6fcae50358..0000000000 --- a/Task/Inheritance-Single/JavaScript/inheritance-single-3.js +++ /dev/null @@ -1,4 +0,0 @@ -function Cat() { - // ... -} -Cat.prototype = new Animal(); diff --git a/Task/Inheritance-Single/JavaScript/inheritance-single-4.js b/Task/Inheritance-Single/JavaScript/inheritance-single-4.js deleted file mode 100644 index 0952ab3704..0000000000 --- a/Task/Inheritance-Single/JavaScript/inheritance-single-4.js +++ /dev/null @@ -1,4 +0,0 @@ -function Collie() { - // ... -} -Collie.prototype = new Dog(); diff --git a/Task/Inheritance-Single/JavaScript/inheritance-single-5.js b/Task/Inheritance-Single/JavaScript/inheritance-single-5.js deleted file mode 100644 index 0881782d4b..0000000000 --- a/Task/Inheritance-Single/JavaScript/inheritance-single-5.js +++ /dev/null @@ -1,4 +0,0 @@ -function Lab() { - // ... -} -Lab.prototype = new Dog(); diff --git a/Task/Inheritance-Single/JavaScript/inheritance-single-6.js b/Task/Inheritance-Single/JavaScript/inheritance-single-6.js deleted file mode 100644 index 4152f16f61..0000000000 --- a/Task/Inheritance-Single/JavaScript/inheritance-single-6.js +++ /dev/null @@ -1,4 +0,0 @@ -Animal.prototype.speak = function() {print("an animal makes a sound")}; - -var lab = new Lab(); -lab.speak(); // shows "an animal makes a sound" diff --git a/Task/Inheritance-Single/JavaScript/inheritance-single.js b/Task/Inheritance-Single/JavaScript/inheritance-single.js new file mode 100644 index 0000000000..389b032030 --- /dev/null +++ b/Task/Inheritance-Single/JavaScript/inheritance-single.js @@ -0,0 +1,28 @@ +function Animal() { + // ... +} + +function Dog() { + // ... +} +Dog.prototype = new Animal(); + +function Cat() { + // ... +} +Cat.prototype = new Animal(); + +function Collie() { + // ... +} +Collie.prototype = new Dog(); + +function Lab() { + // ... +} +Lab.prototype = new Dog(); + +Animal.prototype.speak = function() {print("an animal makes a sound")}; + +var lab = new Lab(); +lab.speak(); // shows "an animal makes a sound" diff --git a/Task/Inheritance-Single/Lingo/inheritance-single-1.lingo b/Task/Inheritance-Single/Lingo/inheritance-single-1.lingo deleted file mode 100644 index a9812d19b4..0000000000 --- a/Task/Inheritance-Single/Lingo/inheritance-single-1.lingo +++ /dev/null @@ -1,2 +0,0 @@ --- parent script "Animal" --- ... diff --git a/Task/Inheritance-Single/Lingo/inheritance-single-2.lingo b/Task/Inheritance-Single/Lingo/inheritance-single-2.lingo deleted file mode 100644 index 4f7044e6bd..0000000000 --- a/Task/Inheritance-Single/Lingo/inheritance-single-2.lingo +++ /dev/null @@ -1,7 +0,0 @@ --- parent script "Dog" -property ancestor - -on new (me) - me.ancestor = script("Animal").new() - return me -end diff --git a/Task/Inheritance-Single/Lingo/inheritance-single-3.lingo b/Task/Inheritance-Single/Lingo/inheritance-single-3.lingo deleted file mode 100644 index cba8cb51f7..0000000000 --- a/Task/Inheritance-Single/Lingo/inheritance-single-3.lingo +++ /dev/null @@ -1,7 +0,0 @@ --- parent script "Cat" -property ancestor - -on new (me) - me.ancestor = script("Animal").new() - return me -end diff --git a/Task/Inheritance-Single/Lingo/inheritance-single-4.lingo b/Task/Inheritance-Single/Lingo/inheritance-single-4.lingo deleted file mode 100644 index 564e77fd72..0000000000 --- a/Task/Inheritance-Single/Lingo/inheritance-single-4.lingo +++ /dev/null @@ -1,7 +0,0 @@ --- parent script "Lab" -property ancestor - -on new (me) - me.ancestor = script("Dog").new() - return me -end diff --git a/Task/Inheritance-Single/Lingo/inheritance-single-5.lingo b/Task/Inheritance-Single/Lingo/inheritance-single-5.lingo deleted file mode 100644 index 006e54bd8d..0000000000 --- a/Task/Inheritance-Single/Lingo/inheritance-single-5.lingo +++ /dev/null @@ -1,7 +0,0 @@ --- parent script "Collie" -property ancestor - -on new (me) - me.ancestor = script("Dog").new() - return me -end diff --git a/Task/Inheritance-Single/Lingo/inheritance-single.lingo b/Task/Inheritance-Single/Lingo/inheritance-single.lingo new file mode 100644 index 0000000000..c0b70ec719 --- /dev/null +++ b/Task/Inheritance-Single/Lingo/inheritance-single.lingo @@ -0,0 +1,34 @@ +-- parent script "Animal" +-- ... + +-- parent script "Dog" +property ancestor + +on new (me) + me.ancestor = script("Animal").new() + return me +end + +-- parent script "Cat" +property ancestor + +on new (me) + me.ancestor = script("Animal").new() + return me +end + +-- parent script "Lab" +property ancestor + +on new (me) + me.ancestor = script("Dog").new() + return me +end + +-- parent script "Collie" +property ancestor + +on new (me) + me.ancestor = script("Dog").new() + return me +end diff --git a/Task/Inheritance-Single/Lisaac/inheritance-single-1.lisaac b/Task/Inheritance-Single/Lisaac/inheritance-single-1.lisaac deleted file mode 100644 index 7d70a03615..0000000000 --- a/Task/Inheritance-Single/Lisaac/inheritance-single-1.lisaac +++ /dev/null @@ -1,3 +0,0 @@ -Section Header -+ name := ANIMAL; -// ... diff --git a/Task/Inheritance-Single/Lisaac/inheritance-single-2.lisaac b/Task/Inheritance-Single/Lisaac/inheritance-single-2.lisaac deleted file mode 100644 index 2bdefbc173..0000000000 --- a/Task/Inheritance-Single/Lisaac/inheritance-single-2.lisaac +++ /dev/null @@ -1,5 +0,0 @@ -Section Header -+ name := CAT; -Section Inherit -- parent : ANIMAL := ANIMAL; -// ... diff --git a/Task/Inheritance-Single/Lisaac/inheritance-single-3.lisaac b/Task/Inheritance-Single/Lisaac/inheritance-single-3.lisaac deleted file mode 100644 index 13337359b9..0000000000 --- a/Task/Inheritance-Single/Lisaac/inheritance-single-3.lisaac +++ /dev/null @@ -1,5 +0,0 @@ -Section Header -+ name := DOG; -Section Inherit -- parent : ANIMAL := ANIMAL; -// ... diff --git a/Task/Inheritance-Single/Lisaac/inheritance-single-4.lisaac b/Task/Inheritance-Single/Lisaac/inheritance-single-4.lisaac deleted file mode 100644 index 5b2119bebe..0000000000 --- a/Task/Inheritance-Single/Lisaac/inheritance-single-4.lisaac +++ /dev/null @@ -1,5 +0,0 @@ -Section Header -+ name := LAB; -Section Inherit -- parent : DOG := DOG; -// ... diff --git a/Task/Inheritance-Single/Lisaac/inheritance-single-5.lisaac b/Task/Inheritance-Single/Lisaac/inheritance-single-5.lisaac deleted file mode 100644 index a110336d69..0000000000 --- a/Task/Inheritance-Single/Lisaac/inheritance-single-5.lisaac +++ /dev/null @@ -1,5 +0,0 @@ -Section Header -+ name := COLLIE; -Section Inherit -- parent : DOG := DOG; -// ... diff --git a/Task/Inheritance-Single/Lisaac/inheritance-single.lisaac b/Task/Inheritance-Single/Lisaac/inheritance-single.lisaac new file mode 100644 index 0000000000..6e5a161915 --- /dev/null +++ b/Task/Inheritance-Single/Lisaac/inheritance-single.lisaac @@ -0,0 +1,23 @@ +Section Header ++ name := ANIMAL; +// ... +Section Header ++ name := CAT; +Section Inherit +- parent : ANIMAL := ANIMAL; +// ... +Section Header ++ name := DOG; +Section Inherit +- parent : ANIMAL := ANIMAL; +// ... +Section Header ++ name := LAB; +Section Inherit +- parent : DOG := DOG; +// ... +Section Header ++ name := COLLIE; +Section Inherit +- parent : DOG := DOG; +// ... diff --git a/Task/Inheritance-Single/OCaml/inheritance-single-1.ocaml b/Task/Inheritance-Single/OCaml/inheritance-single-1.ocaml deleted file mode 100644 index d859c733ba..0000000000 --- a/Task/Inheritance-Single/OCaml/inheritance-single-1.ocaml +++ /dev/null @@ -1,4 +0,0 @@ -class animal = - object (self) - (*functions go here...*) - end diff --git a/Task/Inheritance-Single/OCaml/inheritance-single-2.ocaml b/Task/Inheritance-Single/OCaml/inheritance-single-2.ocaml deleted file mode 100644 index 675e40d385..0000000000 --- a/Task/Inheritance-Single/OCaml/inheritance-single-2.ocaml +++ /dev/null @@ -1,5 +0,0 @@ -class dog = - object (self) - inherit animal - (*functions go here...*) - end diff --git a/Task/Inheritance-Single/OCaml/inheritance-single-3.ocaml b/Task/Inheritance-Single/OCaml/inheritance-single-3.ocaml deleted file mode 100644 index 78fd9a1469..0000000000 --- a/Task/Inheritance-Single/OCaml/inheritance-single-3.ocaml +++ /dev/null @@ -1,5 +0,0 @@ -class cat = - object (self) - inherit animal - (*functions go here...*) - end diff --git a/Task/Inheritance-Single/OCaml/inheritance-single-4.ocaml b/Task/Inheritance-Single/OCaml/inheritance-single-4.ocaml deleted file mode 100644 index be67ea4460..0000000000 --- a/Task/Inheritance-Single/OCaml/inheritance-single-4.ocaml +++ /dev/null @@ -1,5 +0,0 @@ -class lab = - object (self) - inherit dog - (*functions go here...*) - end diff --git a/Task/Inheritance-Single/OCaml/inheritance-single-5.ocaml b/Task/Inheritance-Single/OCaml/inheritance-single-5.ocaml deleted file mode 100644 index 4ffa2cd6ed..0000000000 --- a/Task/Inheritance-Single/OCaml/inheritance-single-5.ocaml +++ /dev/null @@ -1,5 +0,0 @@ -class collie = - object (self) - inherit dog - (*functions go here...*) - end diff --git a/Task/Inheritance-Single/OCaml/inheritance-single.ocaml b/Task/Inheritance-Single/OCaml/inheritance-single.ocaml new file mode 100644 index 0000000000..098a802c87 --- /dev/null +++ b/Task/Inheritance-Single/OCaml/inheritance-single.ocaml @@ -0,0 +1,24 @@ +class animal = + object (self) + (*functions go here...*) + end +class dog = + object (self) + inherit animal + (*functions go here...*) + end +class cat = + object (self) + inherit animal + (*functions go here...*) + end +class lab = + object (self) + inherit dog + (*functions go here...*) + end +class collie = + object (self) + inherit dog + (*functions go here...*) + end diff --git a/Task/Inheritance-Single/Perl/inheritance-single-1.pl b/Task/Inheritance-Single/Perl/inheritance-single-1.pl deleted file mode 100644 index 2c4efca79f..0000000000 --- a/Task/Inheritance-Single/Perl/inheritance-single-1.pl +++ /dev/null @@ -1,3 +0,0 @@ -package Animal; -#functions go here... -1; diff --git a/Task/Inheritance-Single/Perl/inheritance-single-2.pl b/Task/Inheritance-Single/Perl/inheritance-single-2.pl deleted file mode 100644 index b651105092..0000000000 --- a/Task/Inheritance-Single/Perl/inheritance-single-2.pl +++ /dev/null @@ -1,5 +0,0 @@ -package Dog; -use Animal; -@ISA = qw( Animal ); -#functions go here... -1; diff --git a/Task/Inheritance-Single/Perl/inheritance-single-3.pl b/Task/Inheritance-Single/Perl/inheritance-single-3.pl deleted file mode 100644 index 78ef3f6807..0000000000 --- a/Task/Inheritance-Single/Perl/inheritance-single-3.pl +++ /dev/null @@ -1,5 +0,0 @@ -package Cat; -use Animal; -@ISA = qw( Animal ); -#functions go here... -1; diff --git a/Task/Inheritance-Single/Perl/inheritance-single-4.pl b/Task/Inheritance-Single/Perl/inheritance-single-4.pl deleted file mode 100644 index 130b725fa0..0000000000 --- a/Task/Inheritance-Single/Perl/inheritance-single-4.pl +++ /dev/null @@ -1,5 +0,0 @@ -package Lab; -use Dog; -@ISA = qw( Dog ); -#functions go here... -1; diff --git a/Task/Inheritance-Single/Perl/inheritance-single-5.pl b/Task/Inheritance-Single/Perl/inheritance-single-5.pl deleted file mode 100644 index 81d089c8bc..0000000000 --- a/Task/Inheritance-Single/Perl/inheritance-single-5.pl +++ /dev/null @@ -1,5 +0,0 @@ -package Collie; -use Dog; -@ISA = qw( Dog ); -#functions go here... -1; diff --git a/Task/Inheritance-Single/Perl/inheritance-single-6.pl b/Task/Inheritance-Single/Perl/inheritance-single-6.pl deleted file mode 100644 index f72c02b753..0000000000 --- a/Task/Inheritance-Single/Perl/inheritance-single-6.pl +++ /dev/null @@ -1,17 +0,0 @@ -use MooseX::Declare; - -class Animal { - # methods go here... -} -class Dog extends Animal { - # methods go here... -} -class Cat extends Animal { - # methods go here... -} -class Lab extends Dog { - # methods go here... -} -class Collie extends Dog { - # methods go here... -} diff --git a/Task/Inheritance-Single/Perl/inheritance-single.pl b/Task/Inheritance-Single/Perl/inheritance-single.pl new file mode 100644 index 0000000000..0e38ffc35f --- /dev/null +++ b/Task/Inheritance-Single/Perl/inheritance-single.pl @@ -0,0 +1,47 @@ +package Animal; +#functions go here... +1; + +package Dog; +use Animal; +@ISA = qw( Animal ); +#functions go here... +1; + +package Cat; +use Animal; +@ISA = qw( Animal ); +#functions go here... +1; + +package Lab; +use Dog; +@ISA = qw( Dog ); +#functions go here... +1; + +package Collie; +use Dog; +@ISA = qw( Dog ); +#functions go here... +1; + +# The same using the [http://search.cpan.org/perldoc?MooseX::Declare MooseX::Declare] module: + +use MooseX::Declare; + +class Animal { + # methods go here... +} +class Dog extends Animal { + # methods go here... +} +class Cat extends Animal { + # methods go here... +} +class Lab extends Dog { + # methods go here... +} +class Collie extends Dog { + # methods go here... +} diff --git a/Task/Inheritance-Single/Phix/inheritance-single.phix b/Task/Inheritance-Single/Phix/inheritance-single.phix index 3e38ca0f66..6ced986fa7 100644 --- a/Task/Inheritance-Single/Phix/inheritance-single.phix +++ b/Task/Inheritance-Single/Phix/inheritance-single.phix @@ -1,14 +1,12 @@ -(notonline)--> - without js -- (class) - class Animal - private string species - end class - class Dog extends Animal - public procedure bark() - puts(1,"woof\n") - end procedure - end class - class Lab extends Dog end class - class Collie extends Dog end class - class Cat extends Animal end class - n n ) + nip swap ] is sqrt+ ( n --> n n ) -( sqrt returns the integer square root and remainder ) -( i.e. isqrt of 28 is 5 remainder 3 as (5^2)+3 = 28 ) -( To make it task compliant change the last line to ) -( "nip nip ] is sqrt ( n --> n )" ) +( sqrt+ returns the integer square root and remainder ) +( i.e. isqrt+ of 28 is 5 remainder 3 as (5^2)+3 = 28 ) +( To make it task compliant change the last line to ) +( "nip nip ] is sqrt+ ( n --> n )" ) - 66 times [ i^ sqrt drop echo sp ] cr cr + 66 times [ i^ sqrt+ drop echo sp ] cr cr 73 times - [ 7 i^ 1+ ** sqrt drop + [ 7 i^ 1+ ** sqrt+ drop number$ +commas 41 justify echo$ cr 2 step ] diff --git a/Task/Isqrt-integer-square-root-of-X/SETL/isqrt-integer-square-root-of-x.setl b/Task/Isqrt-integer-square-root-of-X/SETL/isqrt-integer-square-root-of-x.setl new file mode 100644 index 0000000000..5e3febc620 --- /dev/null +++ b/Task/Isqrt-integer-square-root-of-X/SETL/isqrt-integer-square-root-of-x.setl @@ -0,0 +1,31 @@ +program isqrt; + loop for i in [1..65] do + putchar(lpad(str isqrt(i), 5)); + if i mod 13=0 then print(); end if; + end loop; + + print(); + loop for p in [1, 3..73] do + sqrtp := isqrt(7 ** p); + print("sqrt(7^" + lpad(str p,2) + ") = " + lpad(str sqrtp, 32)); + end loop; + + proc isqrt(x); + q := 1; + loop while q<=x do + q *:= 4; + end loop; + z := x; + r := 0; + loop while q>1 do + q div:= 4; + t := z-r-q; + r div:= 2; + if t>=0 then + z := t; + r +:= q; + end if; + end loop; + return r; + end proc; +end program; diff --git a/Task/Isqrt-integer-square-root-of-X/Wren/isqrt-integer-square-root-of-x.wren b/Task/Isqrt-integer-square-root-of-X/Wren/isqrt-integer-square-root-of-x.wren index f58ad29843..1bbb9e421c 100644 --- a/Task/Isqrt-integer-square-root-of-X/Wren/isqrt-integer-square-root-of-x.wren +++ b/Task/Isqrt-integer-square-root-of-X/Wren/isqrt-integer-square-root-of-x.wren @@ -1,5 +1,5 @@ -import "/big" for BigInt -import "/fmt" for Fmt +import "./big" for BigInt +import "./fmt" for Fmt var isqrt = Fn.new { |x| if (!(x is BigInt && x >= BigInt.zero)) { diff --git a/Task/JSON/Hoon/json.hoon b/Task/JSON/Hoon/json-1.hoon similarity index 100% rename from Task/JSON/Hoon/json.hoon rename to Task/JSON/Hoon/json-1.hoon diff --git a/Task/JSON/Hoon/json-2.hoon b/Task/JSON/Hoon/json-2.hoon new file mode 100644 index 0000000000..e6bf3102b2 --- /dev/null +++ b/Task/JSON/Hoon/json-2.hoon @@ -0,0 +1,7 @@ +(var object {:a 1 :b "Hello, world!" [1 2 3] :c} + serialised (to-json object) + deserialised (from-json serialised)) + +(print "Object: " object) +(print "Serialised: " serialised) +(str "Deserialised: " deserialised) diff --git a/Task/JSON/Sidef/json.sidef b/Task/JSON/Sidef/json.sidef index a0474dcdbc..070d729760 100644 --- a/Task/JSON/Sidef/json.sidef +++ b/Task/JSON/Sidef/json.sidef @@ -1,5 +1,5 @@ -var json = require('JSON').new; -var data = json.decode('{"blue": [1, 2], "ocean": "water"}'); -say data; -data{:ocean} = Hash.new(water => %w[fishy salty]); -say json.encode(data); +var json = require('JSON::PP').new +var data = json.decode('{"blue": [1, 2], "ocean": "water"}') +say data +data{:ocean} = Hash(water => %w[fishy salty]) +say json.encode(data) diff --git a/Task/Jacobi-symbol/ALGOL-68/jacobi-symbol.alg b/Task/Jacobi-symbol/ALGOL-68/jacobi-symbol.alg new file mode 100644 index 0000000000..b20358e0fb --- /dev/null +++ b/Task/Jacobi-symbol/ALGOL-68/jacobi-symbol.alg @@ -0,0 +1,34 @@ +BEGIN # Jacobi symbol - translation of the Wren sample # + + PROC jacobi = ( INT a in, n in )INT: + IF n in <= 0 OR NOT ODD n in THEN + print( ( "The 'n' parameter of jacobi must be an odd positive integer.", newline ) ); + stop + ELSE + INT a := a in MOD n in, n := n in; + INT result := 1; + WHILE a /= 0 DO + WHILE NOT ODD a DO + a OVERAB 2; + INT nm8 = n MOD 8; + IF nm8 = 3 OR nm8 = 5 THEN result := - result FI + OD; + INT t = a; + a := n; + n := t; + IF a MOD 4 = 3 AND n MOD 4 = 3 THEN result := - result FI; + a MODAB n + OD; + IF n = 1 THEN result ELSE 0 FI + FI # jacobi # ; + + print( ( "Table of jacobi(a, n):", newline ) ); + print( ( "n/a 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15", newline ) ); + print( ( "---------------------------------------------------------------", newline ) ); + FOR n BY 2 TO 29 DO + print( ( whole( n, -3 ) ) ); + FOR a TO 15 DO print( ( whole( jacobi( a, n ), -4 ) ) ) OD; + print( ( newline ) ) + OD + +END diff --git a/Task/Jacobi-symbol/ALGOL-W/jacobi-symbol.alg b/Task/Jacobi-symbol/ALGOL-W/jacobi-symbol.alg new file mode 100644 index 0000000000..e4e30ca8e9 --- /dev/null +++ b/Task/Jacobi-symbol/ALGOL-W/jacobi-symbol.alg @@ -0,0 +1,33 @@ +begin % Jacobi symbol % + + integer procedure jacobi( integer value aIn, nIn ) ; + if nIn <= 0 or not odd( nIn ) then begin + write( "The 'n' parameter of jacobi must be an odd positive integer." ); + 0 + end + else begin + integer a, n, js; + a := aIn rem nIn; n := nIn; js := 1; + while a not = 0 do begin + while a rem 2 = 0 do begin + integer nm8; + a := a div 2; + nm8 := n rem 8; + if nm8 = 3 or nm8 = 5 then js := - js; + end while_a_rem_2_eq_0 ; + begin integer t; t := a; a := n; n := t end; + if a rem 4 = 3 and n rem 4 = 3 then js := - js; + a := a rem n + end; + if n = 1 then js else 0 + end jacobi ; + + write( "Table of jacobi(a, n):" );; + write( "n/a 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15" ); + write( "---------------------------------------------------------------" ); + for n := 1 step 2 until 29 do begin + write( i_w := 3, s_w := 0, n ); + for a := 1 until 15 do writeon( i_w := 4, s_w := 0, jacobi( a, n ) ); + end + +end. diff --git a/Task/Jacobi-symbol/Lua/jacobi-symbol.lua b/Task/Jacobi-symbol/Lua/jacobi-symbol.lua new file mode 100644 index 0000000000..4cc6b75de2 --- /dev/null +++ b/Task/Jacobi-symbol/Lua/jacobi-symbol.lua @@ -0,0 +1,33 @@ +do -- Jacobi symbol - translation of the Algol 68 sample + + + local function jacobi( aIn, nIn ) + if nIn <= 0 or nIn % 2 == 0 then + print( "The 'n' parameter of jacobi must be an odd positive integer." ) + return 0 + else + local a, n, result = aIn % nIn, nIn, 1 + while a ~= 0 do + while a % 2 == 0 do + a = math.floor( a / 2 ) + local nm8 = n % 8 + if nm8 == 3 or nm8 == 5 then result = - result end + end + a, n = n, a; + if a % 4 == 3 and n % 4 == 3 then result = - result end + a = a % n + end + return n == 1 and result or 0 + end + end + + print( "Table of jacobi(a, n):" ); + print( "n/a 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15" ) + print( "---------------------------------------------------------------" ) + for n = 1, 29, 2 do + io.write( string.format( "%3d", n ) ) + for a = 1, 15 do io.write( string.format( "%4d", jacobi( a, n ) ) ) end + io.write( "\n" ) + end + +end diff --git a/Task/Jacobi-symbol/PL-M/jacobi-symbol.plm b/Task/Jacobi-symbol/PL-M/jacobi-symbol.plm new file mode 100644 index 0000000000..f1575f8307 --- /dev/null +++ b/Task/Jacobi-symbol/PL-M/jacobi-symbol.plm @@ -0,0 +1,69 @@ +100H: /* JACOBI SYMBOL */ + + /* CP/M BDOS SYSTEM CALLS AND I/O ROUTINES */ + BDOS: PROCEDURE( FN, ARG ); DECLARE FN BYTE, ARG ADDRESS; GOTO 5; END; + PR$CHAR: PROCEDURE( C ); DECLARE C BYTE; CALL BDOS( 2, C ); END; + PR$STRING: PROCEDURE( S ); DECLARE S ADDRESS; CALL BDOS( 9, S ); END; + PR$NL: PROCEDURE; CALL PR$STRING( .( 0DH, 0AH, '$' ) ); END; + PR$NUMBER: PROCEDURE( N ); /* PRINTS A NUMBER IN THE MINIMUN FIELD WIDTH */ + DECLARE N ADDRESS; + DECLARE V ADDRESS, N$STR ( 6 )BYTE, W BYTE; + V = N; + W = LAST( N$STR ); + N$STR( W ) = '$'; + N$STR( W := W - 1 ) = '0' + ( V MOD 10 ); + DO WHILE( ( V := V / 10 ) > 0 ); + N$STR( W := W - 1 ) = '0' + ( V MOD 10 ); + END; + CALL PR$STRING( .N$STR( W ) ); + END PR$NUMBER; + + /* TASK */ + + JACOBI: PROCEDURE( A$IN, N$IN )BYTE; + DECLARE ( A$IN, N$IN ) ADDRESS; + IF N$IN MOD 2 <> 1 THEN DO; + CALL PR$STRING( .'JACOBI PARAMETER NOT ODD$' ); + RETURN 0; + END; + ELSE DO; + DECLARE ( A, N, NM8, T ) ADDRESS; + DECLARE JS BYTE; + A = A$IN MOD N$IN; N = N$IN; JS = 1; + DO WHILE A <> 0; + DO WHILE A MOD 2 = 0; + A = A / 2; + NM8 = N MOD 8; + IF NM8 = 3 OR NM8 = 5 THEN JS = - JS; + END; + T = A; A = N; N = T; + IF A MOD 4 = 3 AND N MOD 4 = 3 THEN JS = - JS; + A = A MOD N; + END; + IF N = 1 THEN RETURN JS; + ELSE RETURN 0; + END; + END JACOBI ; + + DECLARE ( A, N )ADDRESS; + DECLARE JS BYTE; + + CALL PR$STRING( .'TABLE OF JACOBI(A, N):$' );CALL PR$NL; + CALL PR$STRING( .'N/A 1 2 3 4 5 6 7$' ); + CALL PR$STRING( .' 8 9 10 11 12 13 14 15$' );CALL PR$NL; + CALL PR$STRING( .'-------------------------------$' ); + CALL PR$STRING( .'--------------------------------$' );CALL PR$NL; + DO N = 1 TO 29 BY 2; + CALL PR$CHAR( ' ' ); + IF N < 10 THEN CALL PR$CHAR( ' ' ); + CALL PR$NUMBER( N ); + DO A = 1 TO 15; + JS = JACOBI( A, N ); + IF JS = 0 THEN CALL PR$STRING( .' 0$' ); + ELSE IF JS = 1 THEN CALL PR$STRING( .' 1$' ); + ELSE CALL PR$STRING( .' -1$' ); + END; + CALL PR$NL; + END; + +EOF diff --git a/Task/Jacobi-symbol/Sidef/jacobi-symbol.sidef b/Task/Jacobi-symbol/Sidef/jacobi-symbol.sidef index 2fb009178d..4120d6d798 100644 --- a/Task/Jacobi-symbol/Sidef/jacobi-symbol.sidef +++ b/Task/Jacobi-symbol/Sidef/jacobi-symbol.sidef @@ -1,20 +1,22 @@ -func jacobi(n, k) { +func jacobi(a, n) { - assert(k > 0, "#{k} must be positive") - assert(k.is_odd, "#{k} must be odd") + assert(n > 0, "#{n} must be positive") + assert(n.is_odd, "#{n} must be odd") var t = 1 - while (n %= k) { - var v = n.valuation(2) - t *= (-1)**v if (k%8 ~~ [3,5]) - n >>= v - (n,k) = (k,n) - t = -t if ([n%4, k%4] == [3,3]) + while (a %= n) { + if (a.is_even) { + var v = a.valuation(2) + t *= (-1)**v if (n%8 ~~ [3,5]) + a >>= v + } + (a,n) = (n,a) + t = -t if ([a%4, n%4] == [3,3]) } - k==1 ? t : 0 + n==1 ? t : 0 } -for n in (0..50), k in (0..50) { - assert_eq(jacobi(n, 2*k + 1), kronecker(n, 2*k + 1)) +for a in (0..50), n in (0..50) { + assert_eq(jacobi(a, 2*n + 1), kronecker(a, 2*n + 1)) } diff --git a/Task/Jacobi-symbol/Wren/jacobi-symbol.wren b/Task/Jacobi-symbol/Wren/jacobi-symbol.wren index 7afabc593d..31ba62b095 100644 --- a/Task/Jacobi-symbol/Wren/jacobi-symbol.wren +++ b/Task/Jacobi-symbol/Wren/jacobi-symbol.wren @@ -1,4 +1,4 @@ -import "/fmt" for Fmt +import "./fmt" for Fmt var jacobi = Fn.new { |a, n| if (!n.isInteger || n <= 0 || n%2 == 0) { @@ -26,8 +26,8 @@ System.print("n/a 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15") System.print("---------------------------------------------------------------") var n = 1 while (n < 31) { - System.write(Fmt.d(3, n)) - for (a in 1..15) System.write(Fmt.d(4, jacobi.call(a, n))) + Fmt.write("$3d", n) + for (a in 1..15) Fmt.write("$4d", jacobi.call(a, n)) System.print() n = n + 2 } diff --git a/Task/Jacobsthal-numbers/SETL/jacobsthal-numbers.setl b/Task/Jacobsthal-numbers/SETL/jacobsthal-numbers.setl new file mode 100644 index 0000000000..1eaf2c7287 --- /dev/null +++ b/Task/Jacobsthal-numbers/SETL/jacobsthal-numbers.setl @@ -0,0 +1,40 @@ +program jacobsthal_numbers; + print("First 30 Jacobsthal numbers:"); + printseq([j n : n in [0..29]]); + print; + + print("First 30 Jacobsthal-Lucas numbers:"); + printseq([jl n : n in [0..29]]); + print; + + print("First 20 Jacobsthal oblong numbers:"); + printseq([jo n : n in [0..19]]); + print; + + print("First 10 Jacobsthal primes:"); + printseq([j n : n in [0..31] | prime j n]); + + proc printseq(seq); + loop for n in seq do + nprint(lpad(str n, 14)); + if (i +:= 1) mod 5 = 0 then print; end if; + end loop; + end proc; + + op j(n); + return (2**n - (-1)**n) div 3; + end op; + + op jl(n); + return 2**n + (-1)**n; + end op; + + op jo(n); + return j n * j (n+1); + end op; + + op prime(n); + if n<=4 then return n in {2,3}; end if; + return not exists d in [2..floor sqrt n] | n mod d = 0; + end op; +end program; diff --git a/Task/Jacobsthal-numbers/Wren/jacobsthal-numbers.wren b/Task/Jacobsthal-numbers/Wren/jacobsthal-numbers.wren index 46d2588fbb..282c98f8ce 100644 --- a/Task/Jacobsthal-numbers/Wren/jacobsthal-numbers.wren +++ b/Task/Jacobsthal-numbers/Wren/jacobsthal-numbers.wren @@ -8,15 +8,15 @@ var jacobsthalLucas = Fn.new { |n| (BigInt.one << n) + ((n%2 == 0) ? 1 : -1) } System.print("First 30 Jacobsthal numbers:") var js = (0..29).map { |i| jacobsthal.call(i) }.toList -for (chunk in Lst.chunks(js, 5)) Fmt.print("$,12i", chunk) +Fmt.tprint("$,12i", js, 5) System.print("\nFirst 30 Jacobsthal-Lucas numbers:") var jsl = (0..29).map { |i| jacobsthalLucas.call(i) }.toList -for (chunk in Lst.chunks(jsl, 5)) Fmt.print("$,12i", chunk) +Fmt.tprint("$,12i", jsl, 5) System.print("\nFirst 20 Jacobsthal oblong numbers:") var oblongs = (0..19).map { |i| js[i] * js[i+1] }.toList -for (chunk in Lst.chunks(oblongs, 5)) Fmt.print("$,14i", chunk) +Fmt.tprint("$,14i", oblongs, 5) var primes = js.where { |j| j.isProbablePrime(10) }.toList var count = primes.count diff --git a/Task/Jaro-Winkler-distance/Wren/jaro-winkler-distance.wren b/Task/Jaro-Winkler-distance/Wren/jaro-winkler-distance.wren index 228ab55939..87a78b8156 100644 --- a/Task/Jaro-Winkler-distance/Wren/jaro-winkler-distance.wren +++ b/Task/Jaro-Winkler-distance/Wren/jaro-winkler-distance.wren @@ -1,6 +1,6 @@ import "io" for File -import "/fmt" for Fmt -import "/sort" for Sort +import "./fmt" for Fmt +import "./sort" for Sort var jaroSim = Fn.new { |s1, s2| var le1 = s1.count diff --git a/Task/Jaro-similarity/BBC-BASIC/jaro-similarity.basic b/Task/Jaro-similarity/BBC-BASIC/jaro-similarity.basic new file mode 100644 index 0000000000..e0da18a505 --- /dev/null +++ b/Task/Jaro-similarity/BBC-BASIC/jaro-similarity.basic @@ -0,0 +1,45 @@ + PRINT "Jaro similarity between the two strings:" + PROCDescribeJaro("MARTHA", "MARHTA") + PROCDescribeJaro("DIXON", "DICKSONX") + PROCDescribeJaro("JELLYFISH", "SMELLYFISH") + PROCDescribeJaro("DWAYNE", "DUANE") + PROCDescribeJaro("a", "b") + PROCDescribeJaro("", "") + END + + DEF FNMax(a, b)=(a + b + ABS(a - b)) / 2 + DEF FNMin(a, b)=(a + b - ABS(a - b)) / 2 + + DEF PROCDescribeJaro(word1$, word2$) + LOCAL d%, i%, j%, k%, l1%, l2%, m%, t% + + PRINT " '" word1$ "' and '" word2$ "'" TAB(30) "= "; + IF word1$ == "" IF word2$ == "" PRINT;1 : ENDPROC + l1%=LENword1$ + l2%=LENword2$ + IF l1% < l2% SWAP l1%, l2% SWAP word1$, word2$ + + d%=l1% / 2 - 1 + j%=1 + FOR i%=1 TO l2% + IF MID$(word2$, i%, 1) == MID$(word1$, j%, 1) THEN + m%+=1 + MID$(word1$, j%)=" " + ELSE + FOR k%=FNMax(1, i% - d%) TO FNMin(l1%, i% + d%) + IF MID$(word2$, i%, 1) == MID$(word1$, k%, 1) THEN + t%+=1 + m%+=1 + MID$(word1$, k%)=" " + IF k% > j% j%=k% + ENDIF + NEXT + ENDIF + j%+=1 + NEXT + IF m% == 0 THEN + PRINT;0 + ELSE + PRINT;(m% / l2% + m% / l1% + ((m% - (t% >> 1)) / m%)) / 3 + ENDIF + ENDPROC diff --git a/Task/Jaro-similarity/Wren/jaro-similarity.wren b/Task/Jaro-similarity/Wren/jaro-similarity.wren index 0d38e91ae0..cc8c8b3e21 100644 --- a/Task/Jaro-similarity/Wren/jaro-similarity.wren +++ b/Task/Jaro-similarity/Wren/jaro-similarity.wren @@ -1,4 +1,4 @@ -import "/fmt" for Fmt +import "./fmt" for Fmt var jaro = Fn.new { |s1, s2| var le1 = s1.count diff --git a/Task/Jensens-Device/Euler/jensens-device.euler b/Task/Jensens-Device/Euler/jensens-device.euler deleted file mode 100644 index e7bbd63e11..0000000000 --- a/Task/Jensens-Device/Euler/jensens-device.euler +++ /dev/null @@ -1,17 +0,0 @@ -begin - new i; new sum; - sum <- ` formal i; formal lo; formal hi; formal term; - begin - new temp; label loop; - temp <- 0; - i <- lo; -loop: begin - temp <- temp + term; - if [ i <- i + 1 ] <= hi then goto loop else 0 - end; - temp - end - '; - - out sum( @i, 1, 100, `1/i' ) -end $ diff --git a/Task/Jensens-Device/Sidef/jensens-device.sidef b/Task/Jensens-Device/Sidef/jensens-device.sidef index 1a35f982df..d21745e690 100644 --- a/Task/Jensens-Device/Sidef/jensens-device.sidef +++ b/Task/Jensens-Device/Sidef/jensens-device.sidef @@ -1,9 +1,9 @@ -var i; +var i func sum (i, lo, hi, term) { - var temp = 0; + var temp = 0 for (*i = lo; *i <= hi; (*i)++) { - temp += term.run; - }; - return temp; -}; -say sum(\i, 1, 100, { 1 / i }); + temp += term.run + } + return temp +} +say sum(\i, 1, 100, { 1 / i }) diff --git a/Task/Jewels-and-stones/SETL/jewels-and-stones.setl b/Task/Jewels-and-stones/SETL/jewels-and-stones.setl new file mode 100644 index 0000000000..8cdd39b4bd --- /dev/null +++ b/Task/Jewels-and-stones/SETL/jewels-and-stones.setl @@ -0,0 +1,13 @@ +program count_jewels; + show("aA", "aAAbbbb"); + show("z", "ZZ"); + + proc show(jewels, stones); + print("'" + jewels + "' in '" + stones + "': " + count(jewels, stones)); + end proc; + + proc count(jewels, stones); + jewels := {j : j in jewels}; + return #[s : s in stones | s in jewels]; + end proc; +end program; diff --git a/Task/JortSort/Wren/jortsort.wren b/Task/JortSort/Wren/jortsort.wren index 11f285cfe4..8a3128d5fd 100644 --- a/Task/JortSort/Wren/jortsort.wren +++ b/Task/JortSort/Wren/jortsort.wren @@ -1,4 +1,4 @@ -import "/sort" for Sort +import "./sort" for Sort var jortSort = Fn.new { |a| var b = Sort.merge(a) diff --git a/Task/Josephus-problem/EDSAC-order-code/josephus-problem.edsac b/Task/Josephus-problem/EDSAC-order-code/josephus-problem.edsac new file mode 100644 index 0000000000..bdfd28b2ce --- /dev/null +++ b/Task/Josephus-problem/EDSAC-order-code/josephus-problem.edsac @@ -0,0 +1,109 @@ +[Jospehus problem - Rosetta Code + EDSAC program (Initial Orders 2)] + + [Arrange the storage] + T45K P56F [H parameter: library subroutine R4 to read integer] + T46K P80F [N parameter: subroutine to print 17-bit non-neg integer] + T47K P160F [M parameter: main routine] + T51K P128F [G parameter: subroutine to find last survivor] + +[Library subroutine M3, runs at load time and is then overwritten. + Prints header; here, last character sets teleprinter to figures.] + PF GK IF AF RD LF UF OF E@ A6F G@ E8F EZ PF + *!!!!N!!!!!K!!!!SURVIVOR@&#..PZ + +[============== G parameter: Subroutine to find last survivor ============== + Input: 4F = n = number of prisoners + 5F = k = executioner's step + Output: 0F = 0-based index of last survivor] + + [Pascal equivalent: + z := 0; // solution when n = 1 + for j := 2 to n do z := (z + k) mod j; + result := z;] + E25K TG GK + A3F T22@ [plant return link as usual] + T23@ [z := 0] + A2F T24@ [j := 2] + E16@ [jump to middle of loop] + [6] TF [clear acc] + A23@ A5F [acc := z + k] + [Get residue modulo j by repeatedly subtracting j. + The number of subtractions is usually small.] + [9] S24@ E9@ [subtract j till result < 0] + A24@ [add back the last j] + T23@ [update z] + A24@ A25@ T24@ [inc(j)] + [16] A4F S24@ [acc := n - j] + E6@ [loop back if j <= n] + TF [done: clear acc] + A23@ TF [return z (last survivor) to caller in 0F] + [22] ZF [(planted) jump back to caller] + [Storage] + [23] PF [Pascal z] + [24] PF [Pascal j] + [25] PD [constant 1] + +[====================== M parameter: Main routine ======================] + E25K TM GK + [0] PF [negative data count] + [1] PF [number of prisoners] + [2] PF [executioner's step] + [3] !F [space] + [4] @F [carriage return] + [5] &F [line feed] + [6] K4096F [null character] +[Enter with acc = 0] + [7] A7@ GH [call subroutine R4, sets 0D := count of (n,k) pairs] + SF [acc := count negated; it's assumed that count < 2^16] + E46@ [exit if count = 0] + LD [shift count into address field] + [12] T@ [update negative loop counter] + A13@ GH [call library subroutine R4, 0D := number of prisoners] + AF T1@ [store number of prisoners, assumed < 2^16] + A17@ GH [call library subroutine R4, 0D := executioner's step] + AF T2@ [store executioner's step, assumed < 2^16] + A3@ T1F [to print leading 0's as spaces] + A1@ TF [pass number of prisoners to print subroutine] + A25@ GN O3@ [print number of prisoners, plus space] + A2@ TF [same for executioner's step] + A30@ GN O3@ + A1@ T4F [pass number of prisoners to "last survivor" subroutine] + A2@ T5F [same for executioner's step] + A37@ GG [call subroutine, 0F := 0-based index of last survivor] + A39@ GN O4@ O5@ [print last survivor, plus CR,LF] + A@ A2F [increment negative counter] + G12@ [loop back if still negative] + [46] O6@ [print null to flush printer buffer] + ZF [halt the machine] + +[The next 3 lines put the entry address into location 50, + so that it can be accessed via the X parameter (see end of program).] + T50K + P7@ + T7Z + +[================== H parameter: Library subroutine R4 ================== + Input of one signed integer, returned in 0D. + 22 locations.] + E25K TH GK + GKA3FT21@T4DH6@E11@P5DJFT6FVDL4FA4DTDI4FA4FS5@G7@S5@G20@SDTDT6FEF + +[============================= N parameter ============================== + Subroutine to print non-negative 17-bit integer. + Input: 0F = integer to be printed (not preserved) + 1F = character for leading zero (preserved) + Workspace: 4F..7F, 38 locations] + E25K TN + GKA3FT34@A1FT7FS35@T6FT4#FAFT4FH36@V4FRDA4#FR1024FH37@E23@O7FA2F + T6FT5FV4#FYFL8FT4#FA5FL1024FUFA6FG16@OFTFT7FA6FG17@ZFP4FZ219DTF + +[========================================================================== + On the original EDSAC, the following (without the whitespace and comments) + might have been input on a separate tape.] + E25K TX GK + EZ [define entry point] + PF [acc = 0 on entry] +[Count of (n,k) pairs, then the pairs, to be read by library subroutine R4. + Note that sign comes *after* value.] +10+5+2+12+4+41+3+50+2+60+3+71+47+123+3+123+47+10201+17+23482+3343+ diff --git a/Task/Josephus-problem/Quite-BASIC/josephus-problem.basic b/Task/Josephus-problem/Quite-BASIC/josephus-problem-1.basic similarity index 100% rename from Task/Josephus-problem/Quite-BASIC/josephus-problem.basic rename to Task/Josephus-problem/Quite-BASIC/josephus-problem-1.basic diff --git a/Task/Josephus-problem/Quite-BASIC/josephus-problem-2.basic b/Task/Josephus-problem/Quite-BASIC/josephus-problem-2.basic new file mode 100644 index 0000000000..ce27c3470b --- /dev/null +++ b/Task/Josephus-problem/Quite-BASIC/josephus-problem-2.basic @@ -0,0 +1,19 @@ + REM Josephus problem + + LET N = 41 + LET K = 3 + LET M = 0 + GOSUB 10 + PRINT "N = ", N + PRINT "K = ", K + PRINT "FINAL SURVIVOR = ", S + END + REM ** JOSEPHUS +10 LET S = M + LET I = M + 1 +20 IF I = N THEN GOTO 30 + LET S = S + K - ((S + K) / I) * I + LET I = I + 1 + GOTO 20 +30 RETURN + diff --git a/Task/Juggler-sequence/Wren/juggler-sequence-1.wren b/Task/Juggler-sequence/Wren/juggler-sequence-1.wren index 8780e99523..fac60664f7 100644 --- a/Task/Juggler-sequence/Wren/juggler-sequence-1.wren +++ b/Task/Juggler-sequence/Wren/juggler-sequence-1.wren @@ -1,5 +1,5 @@ -import "/fmt" for Fmt -import "/big" for BigInt +import "./fmt" for Fmt +import "./big" for BigInt var one = BigInt.one diff --git a/Task/Juggler-sequence/Wren/juggler-sequence-2.wren b/Task/Juggler-sequence/Wren/juggler-sequence-2.wren index c6d4a46142..b0f3b36693 100644 --- a/Task/Juggler-sequence/Wren/juggler-sequence-2.wren +++ b/Task/Juggler-sequence/Wren/juggler-sequence-2.wren @@ -1,4 +1,4 @@ -/* juggler-gmp.wren */ +/* Juggler_sequence_2.wren */ import "./gmp" for Mpz import "./fmt" for Fmt diff --git a/Task/Julia-set/BBC-BASIC/julia-set.basic b/Task/Julia-set/BBC-BASIC/julia-set.basic new file mode 100644 index 0000000000..cbf20c6082 --- /dev/null +++ b/Task/Julia-set/BBC-BASIC/julia-set.basic @@ -0,0 +1,18 @@ + DIM Pix&(11) + $^Pix&(0)="@$%#*+=-:. " : REM Let's inverse :-) + FOR Y=-1.0 TO 1.0 STEP 1/15 + FOR X=-1.5 TO 1.5 STEP 3/100 + ZR=X + ZI=Y + I%=0 + WHILE I% < 100 + ZR1=ZR * ZR - ZI * ZI - .79 + ZI=ZR * ZI * 2 + .15 + ZR=ZR1 + IF ZR * ZR + ZI * ZI > 4 EXIT WHILE + I%+=1 + ENDWHILE + VDU Pix&(I% / 10) + NEXT + PRINT + NEXT diff --git a/Task/K-d-tree/Wren/k-d-tree.wren b/Task/K-d-tree/Wren/k-d-tree.wren index 3158203fe8..88f01c3981 100644 --- a/Task/K-d-tree/Wren/k-d-tree.wren +++ b/Task/K-d-tree/Wren/k-d-tree.wren @@ -1,7 +1,7 @@ -import "/dynamic" for Tuple -import "/math" for Nums -import "/seq" for Lst -import "/sort" for Sort +import "./dynamic" for Tuple +import "./math" for Nums +import "./seq" for Lst +import "./sort" for Sort import "random" for Random // A Point is represented by a 2 element List of Nums diff --git a/Task/K-means++-clustering/Wren/k-means++-clustering.wren b/Task/K-means++-clustering/Wren/k-means++-clustering.wren index a35659540a..d3d83caa7b 100644 --- a/Task/K-means++-clustering/Wren/k-means++-clustering.wren +++ b/Task/K-means++-clustering/Wren/k-means++-clustering.wren @@ -1,6 +1,6 @@ import "random" for Random -import "/dynamic" for Struct -import "/fmt" for Fmt +import "./dynamic" for Struct +import "./fmt" for Fmt var Point = Struct.create("Point", ["x", "y", "group"]) diff --git a/Task/Kaprekar-numbers/Wren/kaprekar-numbers.wren b/Task/Kaprekar-numbers/Wren/kaprekar-numbers.wren index 16f3e2bc84..6a06288420 100644 --- a/Task/Kaprekar-numbers/Wren/kaprekar-numbers.wren +++ b/Task/Kaprekar-numbers/Wren/kaprekar-numbers.wren @@ -1,4 +1,4 @@ -import "/fmt" for Fmt, Conv +import "./fmt" for Fmt, Conv var kaprekar = Fn.new { |n, base| var order = 0 diff --git a/Task/Kernighans-large-earthquake-problem/Wren/kernighans-large-earthquake-problem.wren b/Task/Kernighans-large-earthquake-problem/Wren/kernighans-large-earthquake-problem.wren index 3ab9e7e4cf..315e23b549 100644 --- a/Task/Kernighans-large-earthquake-problem/Wren/kernighans-large-earthquake-problem.wren +++ b/Task/Kernighans-large-earthquake-problem/Wren/kernighans-large-earthquake-problem.wren @@ -1,6 +1,6 @@ import "io" for File import "os" for Process -import "/pattern" for Pattern +import "./pattern" for Pattern var args = Process.arguments if (args.count != 1) Fiber.abort("Please pass just the name of the date file.") diff --git a/Task/Keyboard-macros/Wren/keyboard-macros-1.wren b/Task/Keyboard-macros/Wren/keyboard-macros-1.wren index 8093c22627..e0624f2845 100644 --- a/Task/Keyboard-macros/Wren/keyboard-macros-1.wren +++ b/Task/Keyboard-macros/Wren/keyboard-macros-1.wren @@ -1,4 +1,4 @@ -/* keyboard_macros.wren */ +/* Keyboard_macros.wren */ var GrabModeAsync = 1 var Mod1Mask = 1 << 3 diff --git a/Task/Keyboard-macros/Wren/keyboard-macros-2.wren b/Task/Keyboard-macros/Wren/keyboard-macros-2.wren index 777e6122c5..c39cd919d3 100644 --- a/Task/Keyboard-macros/Wren/keyboard-macros-2.wren +++ b/Task/Keyboard-macros/Wren/keyboard-macros-2.wren @@ -157,7 +157,7 @@ int main(int argc, char **argv) { config.bindForeignMethodFn = &bindForeignMethod; WrenVM* vm = wrenNewVM(&config); const char* module = "main"; - const char* fileName = "keyboard_macros.wren"; + const char* fileName = "Keyboard_macros.wren"; char *script = readFile(fileName); WrenInterpretResult result = wrenInterpret(vm, module, script); switch (result) { diff --git a/Task/Knapsack-problem-0-1/Wren/knapsack-problem-0-1.wren b/Task/Knapsack-problem-0-1/Wren/knapsack-problem-0-1.wren index 695fabf0c5..573b722435 100644 --- a/Task/Knapsack-problem-0-1/Wren/knapsack-problem-0-1.wren +++ b/Task/Knapsack-problem-0-1/Wren/knapsack-problem-0-1.wren @@ -1,4 +1,4 @@ -import "/fmt" for Fmt +import "./fmt" for Fmt var wants = [ ["map", 9, 150], diff --git a/Task/Knapsack-problem-Bounded/Wren/knapsack-problem-bounded.wren b/Task/Knapsack-problem-Bounded/Wren/knapsack-problem-bounded.wren index bbda7cc52c..4d178b5a07 100644 --- a/Task/Knapsack-problem-Bounded/Wren/knapsack-problem-bounded.wren +++ b/Task/Knapsack-problem-Bounded/Wren/knapsack-problem-bounded.wren @@ -1,4 +1,4 @@ -import "/fmt" for Fmt +import "./fmt" for Fmt class Item { construct new(name, weight, value, count) { diff --git a/Task/Knapsack-problem-Continuous/Wren/knapsack-problem-continuous.wren b/Task/Knapsack-problem-Continuous/Wren/knapsack-problem-continuous.wren index 3436662716..ccf7dfbc4a 100644 --- a/Task/Knapsack-problem-Continuous/Wren/knapsack-problem-continuous.wren +++ b/Task/Knapsack-problem-Continuous/Wren/knapsack-problem-continuous.wren @@ -1,6 +1,6 @@ -import "/fmt" for Fmt -import "/math" for Math -import "/sort" for Sort +import "./fmt" for Fmt +import "./math" for Math +import "./sort" for Sort class Item { construct new(name, weight, value) { diff --git a/Task/Knapsack-problem-Unbounded/Wren/knapsack-problem-unbounded.wren b/Task/Knapsack-problem-Unbounded/Wren/knapsack-problem-unbounded.wren index 3e663b0455..c73f634e26 100644 --- a/Task/Knapsack-problem-Unbounded/Wren/knapsack-problem-unbounded.wren +++ b/Task/Knapsack-problem-Unbounded/Wren/knapsack-problem-unbounded.wren @@ -1,4 +1,4 @@ -import "/fmt" for Fmt +import "./fmt" for Fmt class Item { construct new(name, value, weight, volume) { diff --git a/Task/Knapsack-problem-Unbounded/XPL0/knapsack-problem-unbounded.xpl0 b/Task/Knapsack-problem-Unbounded/XPL0/knapsack-problem-unbounded.xpl0 new file mode 100644 index 0000000000..1565370d2d --- /dev/null +++ b/Task/Knapsack-problem-Unbounded/XPL0/knapsack-problem-unbounded.xpl0 @@ -0,0 +1,26 @@ +func Min(A, B); +real A, B; +return fix(if A < B then A else B); + +int Panacea, Ichor, Gold, Panacea_, Ichor_, Gold_, Val, Max; +real Weight, Volume; +[Max:= 0; +for Panacea:= 0 to Min(25.0/0.3, 0.25/0.025) do + [for Ichor:= 0 to Min(25.0/0.2, 0.25/0.015) do + [for Gold:= 0 to Min(25.0/2.0, 0.25/0.002) do + [Val:= Panacea*3000 + Ichor*1800 + Gold*2500; + Weight:= float(Panacea)*0.3 + float(Ichor)*0.2 + float(Gold)*2.0; + Volume:= float(Panacea)*0.025 + float(Ichor)*0.015 + float(Gold)*0.002; + if Val>Max and Weight<=25.0 and Volume<= 0.25 then + [Max:= Val; + Panacea_:= Panacea; Ichor_:= Ichor; Gold_:= Gold; + ]; + ]; + ]; + ]; +Text(0, "The traveler carries "); +IntOut(0, Panacea_); Text(0, " vials of panacea, "); +IntOut(0, Ichor_); Text(0, " ampules of ichor, and "); +IntOut(0, Gold_); Text(0, " bars of gold"); CrLf(0); +Text(0, "for a maximum value of "); IntOut(0, Max); CrLf(0); +] diff --git a/Task/Knuth-shuffle/Amazing-Hopper/knuth-shuffle.hopper b/Task/Knuth-shuffle/Amazing-Hopper/knuth-shuffle.hopper new file mode 100644 index 0000000000..1f39a77868 --- /dev/null +++ b/Task/Knuth-shuffle/Amazing-Hopper/knuth-shuffle.hopper @@ -0,0 +1,11 @@ +#include + +algoritmo + + v={},n=19 + '0,1,2,3,4,5,6,7,8,9,"\t","\v","\v","A","B","C","D","E","F"' enlistar en 'v' + + imprimir ("Original:\n[",v,"]\n\n") + imprimir (rareti( n, #(ceil(rand(n))), n, intercambiar en (v)),\ + "Processed:\n[", v,"]\n" ) +terminar diff --git a/Task/Knuth-shuffle/C++/knuth-shuffle-1.cpp b/Task/Knuth-shuffle/C++/knuth-shuffle-1.cpp index a97da62f90..4c5ee70f29 100644 --- a/Task/Knuth-shuffle/C++/knuth-shuffle-1.cpp +++ b/Task/Knuth-shuffle/C++/knuth-shuffle-1.cpp @@ -4,6 +4,9 @@ template void knuthShuffle(RandomAccessIterator begin, RandomAccessIterator end) { + if(begin == end) { + return; + } for(unsigned int n = end - begin - 1; n >= 1; --n) { unsigned int k = rand() % (n + 1); if(k != n) { diff --git a/Task/Knuth-shuffle/Elena/knuth-shuffle.elena b/Task/Knuth-shuffle/Elena/knuth-shuffle.elena index 63be1ca813..7ab6fcba87 100644 --- a/Task/Knuth-shuffle/Elena/knuth-shuffle.elena +++ b/Task/Knuth-shuffle/Elena/knuth-shuffle.elena @@ -11,7 +11,7 @@ extension randomOp for(int i := 0, i < max, i += 1) { - var j := randomGenerator.eval(i,max); + var j := randomGenerator.nextInt(i,max); self.exchange(i,j) }; diff --git a/Task/Knuth-shuffle/GW-BASIC/knuth-shuffle.basic b/Task/Knuth-shuffle/GW-BASIC/knuth-shuffle.basic new file mode 100644 index 0000000000..088957611e --- /dev/null +++ b/Task/Knuth-shuffle/GW-BASIC/knuth-shuffle.basic @@ -0,0 +1,19 @@ +100 CLS +110 RANDOMIZE TIMER +120 DIM CARDS(51) +130 PRINT "before:" +140 FOR L0 = 0 TO 51 +150 CARDS(L0) = L0 +160 PRINT STR$(CARDS(L0));" "; +170 NEXT L0 +180 FOR L0 = 51 TO 0 STEP -1 +190 CARD = INT(RND(1)*(L0+1)) +200 IF CARD <> L0 THEN T = CARDS(CARD) : CARDS(CARD) = CARDS(L0) : CARDS(L0) = T +210 NEXT L0 +220 PRINT : PRINT +230 PRINT "after:" +240 FOR L0 = 0 TO 51 +250 PRINT STR$(CARDS(L0));" "; +260 NEXT L0 +270 PRINT +280 END diff --git a/Task/Knuth-shuffle/Minimal-BASIC/knuth-shuffle.basic b/Task/Knuth-shuffle/Minimal-BASIC/knuth-shuffle.basic new file mode 100644 index 0000000000..3456c75fa2 --- /dev/null +++ b/Task/Knuth-shuffle/Minimal-BASIC/knuth-shuffle.basic @@ -0,0 +1,24 @@ +100 REM Knuth shuffle +110 RANDOMIZE +120 DIM B(51) +130 PRINT "BEFORE:" +140 FOR L0 = 0 TO 51 +150 LET B(L0) = L0 +160 PRINT B(L0);" "; +170 NEXT L0 +180 FOR L0 = 51 TO 0 STEP -1 +190 LET C = INT(RND*(L0+1)) +200 IF C <> L0 THEN 220 +210 GOTO 250 +220 LET T = B(C) +230 LET B(C) = B(L0) +240 LET B(L0) = T +250 NEXT L0 +260 PRINT +270 PRINT +280 PRINT "AFTER:" +290 FOR L0 = 0 TO 51 +300 PRINT B(L0);" "; +310 NEXT L0 +320 PRINT +330 END diff --git a/Task/Knuth-shuffle/SETL/knuth-shuffle.setl b/Task/Knuth-shuffle/SETL/knuth-shuffle.setl new file mode 100644 index 0000000000..c90614f87b --- /dev/null +++ b/Task/Knuth-shuffle/SETL/knuth-shuffle.setl @@ -0,0 +1,15 @@ +program knuth_shuffle; + setrandom(0); + + array := [1..10]; + print("Before shuffling:", array); + shuffle(array); + print("After shuffling: ", array); + + proc shuffle(rw tup); + loop for i in [1..#tup-1] do + j := random [i+1..#tup]; + [tup(i), tup(j)] := [tup(j), tup(i)]; + end loop; + end proc; +end program; diff --git a/Task/Knuths-algorithm-S/Elena/knuths-algorithm-s.elena b/Task/Knuths-algorithm-S/Elena/knuths-algorithm-s.elena index 152b2a7235..f2da8ba5ef 100644 --- a/Task/Knuths-algorithm-S/Elena/knuths-algorithm-s.elena +++ b/Task/Knuths-algorithm-S/Elena/knuths-algorithm-s.elena @@ -16,17 +16,17 @@ extension algorithmOp { counter.append:1; - if (__target.Length < n) + if (weak self.Length < n) { - __target.append:i + weak self.append:i } else { if(randomGenerator.nextInt:counter < n) - { __target[randomGenerator.nextInt:n] := i } + { weak self[randomGenerator.nextInt:n] := i } }; - ^ __target.Value + ^ weak self.Value } }) } diff --git a/Task/Knuths-power-tree/Wren/knuths-power-tree.wren b/Task/Knuths-power-tree/Wren/knuths-power-tree.wren index 717a51003b..8017c0a461 100644 --- a/Task/Knuths-power-tree/Wren/knuths-power-tree.wren +++ b/Task/Knuths-power-tree/Wren/knuths-power-tree.wren @@ -1,5 +1,5 @@ -import "/big" for BigRat -import "/fmt" for Fmt +import "./big" for BigRat +import "./fmt" for Fmt var p = { 1: 0 } var lvl = [[1]] diff --git a/Task/Kronecker-product-based-fractals/Wren/kronecker-product-based-fractals.wren b/Task/Kronecker-product-based-fractals/Wren/kronecker-product-based-fractals.wren index b9e18ae4bc..bd01d2877f 100644 --- a/Task/Kronecker-product-based-fractals/Wren/kronecker-product-based-fractals.wren +++ b/Task/Kronecker-product-based-fractals/Wren/kronecker-product-based-fractals.wren @@ -1,4 +1,4 @@ -import "/matrix" for Matrix +import "./matrix" for Matrix var kroneckerPower = Fn.new { |m, n| var pow = m.copy() diff --git a/Task/Kronecker-product/Wren/kronecker-product.wren b/Task/Kronecker-product/Wren/kronecker-product.wren index 7235761315..fb72ac1e72 100644 --- a/Task/Kronecker-product/Wren/kronecker-product.wren +++ b/Task/Kronecker-product/Wren/kronecker-product.wren @@ -1,5 +1,5 @@ -import "/fmt" for Fmt -import "/matrix" for Matrix +import "./fmt" for Fmt +import "./matrix" for Matrix var a1 = [ [1, 2], diff --git a/Task/LU-decomposition/Sidef/lu-decomposition.sidef b/Task/LU-decomposition/Sidef/lu-decomposition.sidef index 7eb8a2e787..0cbccbedfe 100644 --- a/Task/LU-decomposition/Sidef/lu-decomposition.sidef +++ b/Task/LU-decomposition/Sidef/lu-decomposition.sidef @@ -1,36 +1,34 @@ func is_square(m) { m.all { .len == m.len } } func matrix_zero(n, m=n) { m.of { n.of(0) } } -func matrix_ident(n) { n.of {|i| n.of {|j| i==j ? 1 : 0 } } } -  +func matrix_ident(n) { n.of {|i| [i.of(0)..., 1, (n - i - 1).of(0)...] } } + func pivotize(m) { var size = m.len var id = matrix_ident(size) - for i (^size) { + for i in (^size) { var max = m[i][i] var row = i - for j (i .. size-1) { + for j in (i ..^ size) { if (m[j][i] > max) { max = m[j][i] row = j } } - if (row != i) { + if (row != i) { id.swap(row, i) } } return id } -  + func mmult(a, b) { var p = [] - for r,c (^a ~X ^b[0]) { - for i (^b) { - p[r][c] := 0 += (a[r][i] * b[i][c]) - } + for r in ^a, c in ^b[0], i in ^b { + p[r][c] := 0 += (a[r][i] * b[i][c]) } return p } -  + func lu(a) { is_square(a) || die "Defined only for square matrices!"; var n = a.len @@ -38,23 +36,23 @@ func lu(a) { var Aʼ = mmult(P, a) var L = matrix_ident(n) var U = matrix_zero(n) - for i,j (^n ~X ^n) { + for i in ^n, j in ^n { if (j >= i) { - U[i][j] = (Aʼ[i][j] - ({ U[_][j] * L[i][_] }.map(^i).sum)) + U[i][j] = (Aʼ[i][j] - sum(^i, { U[_][j] * L[i][_] })) } else { - L[i][j] = (Aʼ[i][j] - ({ U[_][j] * L[i][_] }.map(^j).sum))/U[j][j] + L[i][j] = ((Aʼ[i][j] - sum(^j, { U[_][j] * L[i][_] })) / U[j][j]) } } return [P, Aʼ, L, U] } -  + func say_it(message, array) { say "\n#{message}" array.each { |row| say row.map{"%7s" % .as_rat}.join(' ') } } -  + var t = [[ %n(1 3 5), %n(2 4 7), @@ -65,10 +63,10 @@ var t = [[ %n( 3 17 18 1), %n( 2 5 7 1), ]] -  -for test (t) { - say_it('A Matrix', test); - for a,b (['P Matrix', 'Aʼ Matrix', 'L Matrix', 'U Matrix'] ~Z lu(test)) { + +t.each { |test| + say_it('A Matrix', test) + for a,b in (['P Matrix', 'Aʼ Matrix', 'L Matrix', 'U Matrix'] ~Z lu(test)) { say_it(a, b) } } diff --git a/Task/LZW-compression/EMal/lzw-compression.emal b/Task/LZW-compression/EMal/lzw-compression.emal index 9685fa6363..39b7af47fd 100644 --- a/Task/LZW-compression/EMal/lzw-compression.emal +++ b/Task/LZW-compression/EMal/lzw-compression.emal @@ -1,38 +1,43 @@ -fun compress = List by text uncompressed - Map dictionary = text%int[].with(256, i)) - text w - List result = int[] +type LzwCompression +fun compress ← List by text uncompressed + List output ← int[] + text working ← Text.EMPTY + Map symbolTable ← text%int[].with(256, i)) for each text c in uncompressed - text wc = w + c - if dictionary.has(wc) - w = wc + text augmented ← working + c + if symbolTable.has(augmented) + working ← augmented else - result.append(dictionary[w]) - dictionary.insert(wc, dictionary.length) - w = c - end + symbolTable.insert(augmented, symbolTable.length) + int i ← symbolTable[working] + output.append(i) + working ← c + end end - if not w.isEmpty() do result.append(dictionary[w]) end - return result + if not working.isEmpty() + int i ← symbolTable[working] + output.append(i) + end + return output end -fun decompress = text by List compressed - Map dictionary = int%text[].with(256, chr(i))) - text w = chr(compressed[0]) - text result = *w - for each int k in compressed.extract(1) - text entry - if dictionary.has(k) - entry = dictionary[k] - else if k == dictionary.length - entry = w + w[0] +fun decompress ← text by List compressed + Map symbolTable ← int%text[].with(256, chr(i))) + text working ← symbolTable[compressed[0]] + text output ← *working + for each int i in compressed.extract(1) + text s + if symbolTable.has(i) + s ← symbolTable[i] + else if i æ symbolTable.length # cScSc problem + s ← working + working[0] else error(65, "Error decompressing") end - result.append(entry) - dictionary.insert(dictionary.length, w + entry[0]) - w = entry + output.append(s) + symbolTable.insert(symbolTable.length, working + s[0]) + working ← s end - return result + return output end List compressed = compress("TOBEORNOTTOBEORTOBEORNOT") writeLine(compressed) diff --git a/Task/Lah-numbers/Wren/lah-numbers.wren b/Task/Lah-numbers/Wren/lah-numbers.wren index cfbfb9e931..c484bbc833 100644 --- a/Task/Lah-numbers/Wren/lah-numbers.wren +++ b/Task/Lah-numbers/Wren/lah-numbers.wren @@ -1,4 +1,4 @@ -import "/fmt" for Fmt +import "./fmt" for Fmt var fact = Fn.new { |n| if (n < 2) return 1 @@ -17,10 +17,10 @@ var lah = Fn.new { |n, k| System.print("Unsigned Lah numbers: l(n, k):") System.write("n/k") -for (i in 0..12) System.write("%(Fmt.d(10, i)) ") +for (i in 0..12) Fmt.write("$10d ", i) System.print("\n" + "-" * 145) for (n in 0..12) { - System.write("%(Fmt.d(2, n)) ") - for (k in 0..n) System.write("%(Fmt.d(10, lah.call(n, k))) ") + Fmt.write("$2d ", n) + for (k in 0..n) Fmt.write("$10d ", lah.call(n, k)) System.print() } diff --git a/Task/Largest-int-from-concatenated-ints/Wren/largest-int-from-concatenated-ints.wren b/Task/Largest-int-from-concatenated-ints/Wren/largest-int-from-concatenated-ints.wren index 3bb8b2211d..8b853e2f7d 100644 --- a/Task/Largest-int-from-concatenated-ints/Wren/largest-int-from-concatenated-ints.wren +++ b/Task/Largest-int-from-concatenated-ints/Wren/largest-int-from-concatenated-ints.wren @@ -1,4 +1,4 @@ -import "/sort" for Sort +import "./sort" for Sort var cmp = Fn.new { |x, y| var xy = Num.fromString(x.toString + y.toString) diff --git a/Task/Largest-proper-divisor-of-n/ANSI-BASIC/largest-proper-divisor-of-n.basic b/Task/Largest-proper-divisor-of-n/ANSI-BASIC/largest-proper-divisor-of-n.basic index 083a827165..ec16bc648f 100644 --- a/Task/Largest-proper-divisor-of-n/ANSI-BASIC/largest-proper-divisor-of-n.basic +++ b/Task/Largest-proper-divisor-of-n/ANSI-BASIC/largest-proper-divisor-of-n.basic @@ -7,7 +7,7 @@ 160 IF MOD(I, J) = 0 THEN 170 PRINT USING "###": J; 180 EXIT FOR -290 END IF +190 END IF 200 NEXT J 210 IF MOD(I, 10) = 0 THEN PRINT 220 NEXT I diff --git a/Task/Largest-proper-divisor-of-n/D/largest-proper-divisor-of-n.d b/Task/Largest-proper-divisor-of-n/D/largest-proper-divisor-of-n.d new file mode 100644 index 0000000000..964dee0a0c --- /dev/null +++ b/Task/Largest-proper-divisor-of-n/D/largest-proper-divisor-of-n.d @@ -0,0 +1,23 @@ +import std.stdio; +import std.range; +import std.algorithm; + +uint lpd(uint n) { + if (n <= 1) { + return 1; + } + + auto divisors = array(iota(1, n).filter!(i => n % i == 0)); + + return divisors.empty ? 1 : divisors[$ - 1]; +} + +void main() { + foreach (i; 1 .. 101) { + writef("%3d", lpd(i)); + + if (i % 10 == 0) { + writeln(); + } + } +} diff --git a/Task/Largest-proper-divisor-of-n/EasyLang/largest-proper-divisor-of-n.easy b/Task/Largest-proper-divisor-of-n/EasyLang/largest-proper-divisor-of-n.easy index f1defbc5d5..a32231a975 100644 --- a/Task/Largest-proper-divisor-of-n/EasyLang/largest-proper-divisor-of-n.easy +++ b/Task/Largest-proper-divisor-of-n/EasyLang/largest-proper-divisor-of-n.easy @@ -7,10 +7,6 @@ func lpdiv v . . return r . -numfmt 0 3 for i = 1 to 100 - write lpdiv i - if i mod 10 = 0 - print "" - . + write lpdiv i & " " . diff --git a/Task/Largest-proper-divisor-of-n/J/largest-proper-divisor-of-n.j b/Task/Largest-proper-divisor-of-n/J/largest-proper-divisor-of-n.j index 39efca84d2..73fa9984d9 100644 --- a/Task/Largest-proper-divisor-of-n/J/largest-proper-divisor-of-n.j +++ b/Task/Largest-proper-divisor-of-n/J/largest-proper-divisor-of-n.j @@ -1 +1 @@ - lpd =: (1 |.!.1 ])&.q: +lpd=: }.&.q: diff --git a/Task/Largest-proper-divisor-of-n/Lua/largest-proper-divisor-of-n.lua b/Task/Largest-proper-divisor-of-n/Lua/largest-proper-divisor-of-n.lua new file mode 100644 index 0000000000..4a0b72f628 --- /dev/null +++ b/Task/Largest-proper-divisor-of-n/Lua/largest-proper-divisor-of-n.lua @@ -0,0 +1,11 @@ +for n = 1, 100 do -- show the largest proper divisors for n = 1..100 + local largestProperDivisor, j = 1, math.floor( n / 2 ) + while j >= 2 and largestProperDivisor == 1 do + if n % j == 0 then + largestProperDivisor = j + end + j = j - 1 + end + io.write( string.format( "%3d", largestProperDivisor ) ) + if n % 10 == 0 then io.write( "\n" ) end +end diff --git a/Task/Largest-proper-divisor-of-n/Pascal/largest-proper-divisor-of-n.pas b/Task/Largest-proper-divisor-of-n/Pascal/largest-proper-divisor-of-n-1.pas similarity index 100% rename from Task/Largest-proper-divisor-of-n/Pascal/largest-proper-divisor-of-n.pas rename to Task/Largest-proper-divisor-of-n/Pascal/largest-proper-divisor-of-n-1.pas diff --git a/Task/Largest-proper-divisor-of-n/Pascal/largest-proper-divisor-of-n-2.pas b/Task/Largest-proper-divisor-of-n/Pascal/largest-proper-divisor-of-n-2.pas new file mode 100644 index 0000000000..0177ed0ce1 --- /dev/null +++ b/Task/Largest-proper-divisor-of-n/Pascal/largest-proper-divisor-of-n-2.pas @@ -0,0 +1,58 @@ +program LPD; +(* +Displays largest proper divisor for each integer in range 1..limit. +Command line: + LPD limit items_per_line + or LPD limit // items_per_line defaults to 10 + or LPD // limit defaults to 100 +*) +{$mode objfpc}{$H+} + +uses SysUtils; +var + limit, items_per_line, nr_items, j, p : integer; + a : array of integer; +begin + // Set up defaults + limit := 100; + items_per_line := 10; + // Overwrite defaults with command-line parameters, if present + if ParamCount > 0 then + limit := SysUtils.StrToInt( ParamStr(1)); + if ParamCount > 1 then + items_per_line := SysUtils.StrToInt( ParamStr(2)); + WriteLn( 'Largest proper divisors 1..', limit); + // Dynamic arrays are 0-based. To keep it simple, we ignore a[0] + // and use a[j] for the integer j, 1 <= j <= limit + SetLength( a, limit + 1); + for j := 1 to limit do a[j] := 1; // stays at 1 if j is 1 or prime + + // Sieve; if j is composite then a[j] := smallest prime factor of j + p := 2; // p = next prime + while p*p < limit do begin + j := 2*p; + while j <= limit do begin + if a[j] = 1 then a[j] := p; + inc( j, p); + end; + repeat + inc(p); + until (p > limit) or (a[p] = 1); + end; + + // If j is composite, divide j by its smallest prime factor + for j := 1 to limit do + if a[j] > 1 then a[j] := j div a[j]; + + // Write the array to the console + nr_items := 0; + for j := 1 to limit do begin + Write( a[j]:5); + inc( nr_items); + if nr_items = items_per_line then begin + WriteLn; + nr_items := 0; + end; + end; + if nr_items > 0 then WriteLn; +end. diff --git a/Task/Largest-proper-divisor-of-n/Quite-BASIC/largest-proper-divisor-of-n-1.basic b/Task/Largest-proper-divisor-of-n/Quite-BASIC/largest-proper-divisor-of-n.basic similarity index 100% rename from Task/Largest-proper-divisor-of-n/Quite-BASIC/largest-proper-divisor-of-n-1.basic rename to Task/Largest-proper-divisor-of-n/Quite-BASIC/largest-proper-divisor-of-n.basic diff --git a/Task/Largest-proper-divisor-of-n/Run-BASIC/largest-proper-divisor-of-n-1.basic b/Task/Largest-proper-divisor-of-n/Run-BASIC/largest-proper-divisor-of-n-1.basic new file mode 100644 index 0000000000..18c966bd1c --- /dev/null +++ b/Task/Largest-proper-divisor-of-n/Run-BASIC/largest-proper-divisor-of-n-1.basic @@ -0,0 +1,10 @@ +print "Largest proper divisor of n is:" +print chr$(10)+" 1 1"; +for i = 3 to 100 + for j = i-1 to 1 step -1 + if i mod j = 0 then print using("###",j); : goto [exit] + next j +[exit] + if i mod 10 = 0 then print +next i +end diff --git a/Task/Largest-proper-divisor-of-n/Quite-BASIC/largest-proper-divisor-of-n-2.basic b/Task/Largest-proper-divisor-of-n/Run-BASIC/largest-proper-divisor-of-n-2.basic similarity index 100% rename from Task/Largest-proper-divisor-of-n/Quite-BASIC/largest-proper-divisor-of-n-2.basic rename to Task/Largest-proper-divisor-of-n/Run-BASIC/largest-proper-divisor-of-n-2.basic diff --git a/Task/Largest-proper-divisor-of-n/Rust/largest-proper-divisor-of-n-1.rust b/Task/Largest-proper-divisor-of-n/Rust/largest-proper-divisor-of-n-1.rust new file mode 100644 index 0000000000..901fb05440 --- /dev/null +++ b/Task/Largest-proper-divisor-of-n/Rust/largest-proper-divisor-of-n-1.rust @@ -0,0 +1,22 @@ +fn largest_proper_divisor(n: i32) -> i32 { + for i in 2..=(n as f64).sqrt() as i32 { + if n % i == 0 { + return n / i; + } + } +} + +fn main() { + println!("The largest proper divisors for numbers in the interval [1, 100] are:"); + print!(" 1 "); + for n in 2..=100 { + if n % 2 == 0 { + print!("{:2} ", n / 2); + } else { + print!("{:2} ", largest_proper_divisor(n)); + } + if n % 10 == 0 { + println!(); + } + } +} diff --git a/Task/Largest-proper-divisor-of-n/Rust/largest-proper-divisor-of-n-2.rust b/Task/Largest-proper-divisor-of-n/Rust/largest-proper-divisor-of-n-2.rust new file mode 100644 index 0000000000..067920f51e --- /dev/null +++ b/Task/Largest-proper-divisor-of-n/Rust/largest-proper-divisor-of-n-2.rust @@ -0,0 +1,17 @@ +fn lpd(n: u32) -> u32 { + if n <= 1 { + 1 + } else { + (1..n).rev().find(|&i| n % i == 0).unwrap_or(1) + } +} + +fn main() { + for i in 1..=100 { + print!("{:3}", lpd(i)); + + if i % 10 == 0 { + println!(); + } + } +} diff --git a/Task/Largest-proper-divisor-of-n/Sidef/largest-proper-divisor-of-n.sidef b/Task/Largest-proper-divisor-of-n/Sidef/largest-proper-divisor-of-n.sidef new file mode 100644 index 0000000000..17cb3adc7c --- /dev/null +++ b/Task/Largest-proper-divisor-of-n/Sidef/largest-proper-divisor-of-n.sidef @@ -0,0 +1,3 @@ +1..100 -> map {|n| proper_divisors(n).tail \\ 1 }.slices(10).each {|a| + a.map{ '%3s' % _ }.join(' ').say +} diff --git a/Task/Largest-proper-divisor-of-n/Wren/largest-proper-divisor-of-n.wren b/Task/Largest-proper-divisor-of-n/Wren/largest-proper-divisor-of-n.wren index b0ce8e41b4..ee14f701ee 100644 --- a/Task/Largest-proper-divisor-of-n/Wren/largest-proper-divisor-of-n.wren +++ b/Task/Largest-proper-divisor-of-n/Wren/largest-proper-divisor-of-n.wren @@ -1,5 +1,5 @@ -import "/math" for Int -import "/fmt" for Fmt +import "./math" for Int +import "./fmt" for Fmt System.print("The largest proper divisors for numbers in the interval [1, 100] are:") System.write(" 1 ") diff --git a/Task/Last-Friday-of-each-month/BBC-BASIC/last-friday-of-each-month.basic b/Task/Last-Friday-of-each-month/BBC-BASIC/last-friday-of-each-month.basic new file mode 100644 index 0000000000..2b25f5e505 --- /dev/null +++ b/Task/Last-Friday-of-each-month/BBC-BASIC/last-friday-of-each-month.basic @@ -0,0 +1,9 @@ + INSTALL @lib$ + "DATELIB" + + INPUT "What year to calculate (YYYY)? " Year% + + PRINT '"Last Fridays in ";Year% " are on:" + FOR Month%=1 TO 12 + PRINT Year% "-" RIGHT$("0" + STR$Month%, 2) "-"; \ + \ FN_dim(Month%, Year%) - (FN_dow(FN_mjd(FN_dim(Month%, Year%), Month%, Year%)) + 2) MOD 7 + NEXT diff --git a/Task/Last-Friday-of-each-month/EasyLang/last-friday-of-each-month.easy b/Task/Last-Friday-of-each-month/EasyLang/last-friday-of-each-month.easy new file mode 100644 index 0000000000..364661b6c1 --- /dev/null +++ b/Task/Last-Friday-of-each-month/EasyLang/last-friday-of-each-month.easy @@ -0,0 +1,33 @@ +func leap year . + return if year mod 4 = 0 and (year mod 100 <> 0 or year mod 400 = 0) +. +func weekday year month day . + normdoom[] = [ 3 7 7 4 2 6 4 1 5 3 7 5 ] + c = year div 100 + r = year mod 100 + s = r div 12 + t = r mod 12 + c_anchor = (5 * (c mod 4) + 2) mod 7 + doom = (s + t + (t div 4) + c_anchor) mod 7 + anchor = normdoom[month] + if leap year = 1 and month <= 2 + anchor = (anchor + 1) mod1 7 + . + return (doom + day - anchor + 7) mod 7 + 1 +. +mdays[] = [ 31 28 31 30 31 30 31 31 30 31 30 31 ] +proc last_fridays year . . + for m to 12 + d = mdays[m] + if m = 2 and leap year = 1 + d = 29 + . + d -= (weekday year m d - 6) mod 7 + m$ = m + if m < 10 + m$ = "0" & m + . + print year & "-" & m$ & "-" & d + . +. +last_fridays 2023 diff --git a/Task/Last-Friday-of-each-month/Wren/last-friday-of-each-month.wren b/Task/Last-Friday-of-each-month/Wren/last-friday-of-each-month.wren index 65d00dc667..8d78b151f9 100644 --- a/Task/Last-Friday-of-each-month/Wren/last-friday-of-each-month.wren +++ b/Task/Last-Friday-of-each-month/Wren/last-friday-of-each-month.wren @@ -1,5 +1,5 @@ import "os" for Process -import "/date" for Date +import "./date" for Date var args = Process.arguments if (args.count != 1) { diff --git a/Task/Leap-year/BQN/leap-year-1.bqn b/Task/Leap-year/BQN/leap-year-1.bqn new file mode 100644 index 0000000000..52359d30c1 --- /dev/null +++ b/Task/Leap-year/BQN/leap-year-1.bqn @@ -0,0 +1 @@ +Leap ← 0=4|100÷˜⍟(0=|)¨⊢ diff --git a/Task/Leap-year/BQN/leap-year-2.bqn b/Task/Leap-year/BQN/leap-year-2.bqn new file mode 100644 index 0000000000..bc17f109b0 --- /dev/null +++ b/Task/Leap-year/BQN/leap-year-2.bqn @@ -0,0 +1 @@ +Leap ← -˝0=4‿100‿400|⌜⊢ diff --git a/Task/Leap-year/BQN/leap-year-3.bqn b/Task/Leap-year/BQN/leap-year-3.bqn new file mode 100644 index 0000000000..1b1b3f4efe --- /dev/null +++ b/Task/Leap-year/BQN/leap-year-3.bqn @@ -0,0 +1 @@ +Leap 1900‿1996‿1998‿1999‿2000‿2024‿2100 diff --git a/Task/Leap-year/EasyLang/leap-year.easy b/Task/Leap-year/EasyLang/leap-year.easy new file mode 100644 index 0000000000..05f2cbfa18 --- /dev/null +++ b/Task/Leap-year/EasyLang/leap-year.easy @@ -0,0 +1,7 @@ +func leapyear y . + if y mod 4 = 0 and (y mod 100 <> 0 or y mod 400 = 0) + return 1 + . + return 0 +. +print leapyear 2000 diff --git a/Task/Levenshtein-distance/IS-BASIC/levenshtein-distance.basic b/Task/Levenshtein-distance/IS-BASIC/levenshtein-distance.basic new file mode 100644 index 0000000000..5092736bc7 --- /dev/null +++ b/Task/Levenshtein-distance/IS-BASIC/levenshtein-distance.basic @@ -0,0 +1,23 @@ +100 PROGRAM "Levensht.bas" +110 LET S1$="kitten":LET S2$="sitting" +120 PRINT "The Levenshtein distance between """;S1$;""" and """;S2$;""" is:";LEVDIST(S1$,S2$) +130 DEF LEVDIST(S$,T$) +140 LET N=LEN(T$):LET M=LEN(S$) +150 NUMERIC D(0 TO M,0 TO N) +160 FOR I=0 TO M +170 LET D(I,0)=I +180 NEXT +190 FOR J=0 TO N +200 LET D(0,J)=J +210 NEXT +220 FOR J=1 TO N +230 FOR I=1 TO M +240 IF S$(I)=T$(J) THEN +250 LET D(I,J)=D(I-1,J-1) +260 ELSE +270 LET D(I,J)=MIN(D(I-1,J)+1,MIN(D(I,J-1)+1,D(I-1,J-1)+1)) +280 END IF +290 NEXT +300 NEXT +310 LET LEVDIST=D(M,N) +320 END DEF diff --git a/Task/Levenshtein-distance/Zig/levenshtein-distance.zig b/Task/Levenshtein-distance/Zig/levenshtein-distance.zig new file mode 100644 index 0000000000..8194ea0dae --- /dev/null +++ b/Task/Levenshtein-distance/Zig/levenshtein-distance.zig @@ -0,0 +1,34 @@ +const std = @import("std"); + +fn levenshtein(s: []const u8, t: []const u8) usize { + // If either string is empty, difference is inserting all chars + // from the other + if (s.len == 0) return t.len; + if (t.len == 0) return s.len; + + // If last letters are the same, the difference is whatever is + // required to edit the rest of the strings + if (s[s.len - 1] == t[t.len - 1]) + return levenshtein(s[0 .. s.len - 1], t[0 .. t.len - 1]); + + // Else try: + // changing last letter of s to that of t; or + // remove last letter of s; or + // remove last letter of t, + // any of which is 1 edit plus editing the rest of the strings + const a = levenshtein(s[0 .. s.len - 1], t[0 .. t.len - 1]); + const b = levenshtein(s, t[0 .. t.len - 1]); + const c = levenshtein(s[0 .. s.len - 1], t); + + return @min(a, b, c) + 1; +} + +pub fn main() std.fs.File.WriteError!void { + const stdout = std.io.getStdOut(); + const stdout_w = stdout.writer(); + + const s1 = "rosettacode"; + const s2 = "raisethysword"; + try stdout_w.print("distance between '{s}' and '{s}': {d}\n", .{ s1, s2, levenshtein(s1, s2) }); + return; +} diff --git a/Task/List-comprehensions/11l/list-comprehensions.11l b/Task/List-comprehensions/11l/list-comprehensions.11l deleted file mode 100644 index 19b6a27360..0000000000 --- a/Task/List-comprehensions/11l/list-comprehensions.11l +++ /dev/null @@ -1 +0,0 @@ -print(cart_product(1..20, 1..20, 1..20).filter((x, y, z) -> x ^ 2 + y ^ 2 == z ^ 2 & y C x .. z)) diff --git a/Task/List-comprehensions/AppleScript/list-comprehensions-2.applescript b/Task/List-comprehensions/AppleScript/list-comprehensions-2.applescript deleted file mode 100644 index d2e40a7400..0000000000 --- a/Task/List-comprehensions/AppleScript/list-comprehensions-2.applescript +++ /dev/null @@ -1 +0,0 @@ -{{3, 4, 5}, {5, 12, 13}, {6, 8, 10}, {7, 24, 25}, {8, 15, 17}, {9, 12, 15}, {12, 16, 20}, {15, 20, 25}} diff --git a/Task/List-comprehensions/AppleScript/list-comprehensions-1.applescript b/Task/List-comprehensions/AppleScript/list-comprehensions.applescript similarity index 100% rename from Task/List-comprehensions/AppleScript/list-comprehensions-1.applescript rename to Task/List-comprehensions/AppleScript/list-comprehensions.applescript diff --git a/Task/List-comprehensions/C/list-comprehensions-1.c b/Task/List-comprehensions/C/list-comprehensions-1.c deleted file mode 100644 index 2ca50ef542..0000000000 --- a/Task/List-comprehensions/C/list-comprehensions-1.c +++ /dev/null @@ -1 +0,0 @@ -for (int i = f + 1; i <= t; i ++) { e = e->nx = listNew(sizeof i, &i); } diff --git a/Task/List-comprehensions/C/list-comprehensions-2.c b/Task/List-comprehensions/C/list-comprehensions-2.c deleted file mode 100644 index cf77936a44..0000000000 --- a/Task/List-comprehensions/C/list-comprehensions-2.c +++ /dev/null @@ -1,2 +0,0 @@ -int i; -for (i = f + 1; i <= t; i ++) { e = e->nx = listNew(sizeof i, &i); } diff --git a/Task/List-comprehensions/C/list-comprehensions-3.c b/Task/List-comprehensions/C/list-comprehensions.c similarity index 95% rename from Task/List-comprehensions/C/list-comprehensions-3.c rename to Task/List-comprehensions/C/list-comprehensions.c index 350161e4a2..0bf44c63eb 100644 --- a/Task/List-comprehensions/C/list-comprehensions-3.c +++ b/Task/List-comprehensions/C/list-comprehensions.c @@ -54,7 +54,9 @@ List * listAppend(List * l, int sz, void * val) { } List * intRangeList(int f, int t) { List * l = listNew(sizeof f, &f), * e = l; - for (int i = f + 1; i <= t; i ++) { e = e->nx = listNew(sizeof i, &i); } + for (int i = f + 1; i <= t; i ++) { e = e->nx = listNew(sizeof i, &i); } // C11 compliant +//int i; +//for (i = f + 1; i <= t; i ++) { e = e->nx = listNew(sizeof i, &i); } // use this for C99 return l; } diff --git a/Task/List-comprehensions/CoffeeScript/list-comprehensions-2.coffee b/Task/List-comprehensions/CoffeeScript/list-comprehensions-2.coffee deleted file mode 100644 index 697bea7d7a..0000000000 --- a/Task/List-comprehensions/CoffeeScript/list-comprehensions-2.coffee +++ /dev/null @@ -1 +0,0 @@ -pyth = (n) -> flatten (flatten ([x, y, z] for z in [y..n] when x*x + y*y is z*z for y in [x..n]) for x in [1..n]) diff --git a/Task/List-comprehensions/CoffeeScript/list-comprehensions-1.coffee b/Task/List-comprehensions/CoffeeScript/list-comprehensions.coffee similarity index 58% rename from Task/List-comprehensions/CoffeeScript/list-comprehensions-1.coffee rename to Task/List-comprehensions/CoffeeScript/list-comprehensions.coffee index bf92e3d83e..f4f9ff5457 100644 --- a/Task/List-comprehensions/CoffeeScript/list-comprehensions-1.coffee +++ b/Task/List-comprehensions/CoffeeScript/list-comprehensions.coffee @@ -6,5 +6,7 @@ pyth = (n) -> for z in [y..n] when x*x + y*y is z*z [x, y, z] )) +# pyth can also be written more concisely as +# pyth = (n) -> flatten (flatten ([x, y, z] for z in [y..n] when x*x + y*y is z*z for y in [x..n]) for x in [1..n]) console.dir pyth 20 diff --git a/Task/Literals-Floating-point/Elena/literals-floating-point.elena b/Task/Literals-Floating-point/Elena/literals-floating-point.elena index 65c58a5ba7..461cb5530f 100644 --- a/Task/Literals-Floating-point/Elena/literals-floating-point.elena +++ b/Task/Literals-Floating-point/Elena/literals-floating-point.elena @@ -1,3 +1,3 @@ real r := 1; -r := 23.2r; +r := 23.2; r := 1.2e+11r; diff --git a/Task/Literals-Integer/Uxntal/literals-integer.uxnatl b/Task/Literals-Integer/Uxntal/literals-integer.uxnatl new file mode 100644 index 0000000000..3f8734d6e0 --- /dev/null +++ b/Task/Literals-Integer/Uxntal/literals-integer.uxnatl @@ -0,0 +1,2 @@ +#2a ( byte literal ) +#c0de ( short literal ) diff --git a/Task/Logical-operations/Chipmunk-Basic/logical-operations.basic b/Task/Logical-operations/Chipmunk-Basic/logical-operations.basic new file mode 100644 index 0000000000..8b46c17187 --- /dev/null +++ b/Task/Logical-operations/Chipmunk-Basic/logical-operations.basic @@ -0,0 +1,8 @@ +120 b1 = false 'value of 0 +130 b2 = true 'value of 1 +140 print b1 and b2 +150 print b1 or b2 +160 print b1 xor b2 +170 print b1 eqv b2 +180 print b1 imp b2 +190 print not b2 diff --git a/Task/Logical-operations/GW-BASIC/logical-operations.basic b/Task/Logical-operations/GW-BASIC/logical-operations.basic new file mode 100644 index 0000000000..9ba0f1bd84 --- /dev/null +++ b/Task/Logical-operations/GW-BASIC/logical-operations.basic @@ -0,0 +1,11 @@ +100 LET FALSE = 0 +110 LET TRUE = -1 +120 PRINT TRUE +130 PRINT FALSE +120 PRINT TRUE AND FALSE +150 PRINT TRUE OR FALSE +160 PRINT TRUE XOR FALSE +170 PRINT TRUE EQV FALSE +180 PRINT TRUE IMP FALSE +190 PRINT NOT TRUE +200 END diff --git a/Task/Logical-operations/MSX-Basic/logical-operations.basic b/Task/Logical-operations/MSX-Basic/logical-operations.basic new file mode 100644 index 0000000000..b304e75ba7 --- /dev/null +++ b/Task/Logical-operations/MSX-Basic/logical-operations.basic @@ -0,0 +1,8 @@ +120 b1 = false 'value of 0 +130 b2 = not false 'value of -1 +140 print b1 and b2 +150 print b1 or b2 +160 print b1 xor b2 +170 print b1 eqv b2 +180 print b1 imp b2 +190 print not b2 diff --git a/Task/Logical-operations/Nu/logical-operations.nu b/Task/Logical-operations/Nu/logical-operations.nu new file mode 100644 index 0000000000..40124f8e74 --- /dev/null +++ b/Task/Logical-operations/Nu/logical-operations.nu @@ -0,0 +1,3 @@ +def ops [a b] {{A: $a, B: $b, "Not A": (not $a), OR: ($a or $b), AND: ($a and $b), XOR: ($a xor $b)}} + +[true false] | each {[[true $in] [false $in]]} | flatten | each {ops $in.0 $in.1} diff --git a/Task/Logical-operations/Quite-BASIC/logical-operations.basic b/Task/Logical-operations/Quite-BASIC/logical-operations.basic new file mode 100644 index 0000000000..1badf31cf8 --- /dev/null +++ b/Task/Logical-operations/Quite-BASIC/logical-operations.basic @@ -0,0 +1,4 @@ +120 LET b1 = 0 +130 LET b2 = -1 +140 PRINT b1 AND b2 +150 PRINT b1 OR b2 diff --git a/Task/Long-multiplication/J/long-multiplication-10.j b/Task/Long-multiplication/J/long-multiplication-10.j new file mode 100644 index 0000000000..957a860e32 --- /dev/null +++ b/Task/Long-multiplication/J/long-multiplication-10.j @@ -0,0 +1,2 @@ + 10 #. 1 4 10 12 9 +15129 diff --git a/Task/Longest-common-substring/APL/longest-common-substring-1.apl b/Task/Longest-common-substring/APL/longest-common-substring-1.apl new file mode 100644 index 0000000000..f3bb1eef68 --- /dev/null +++ b/Task/Longest-common-substring/APL/longest-common-substring-1.apl @@ -0,0 +1,5 @@ +lcs←{ + sb←∪⊃,/{⌽¨,\⌽⍵}¨,\⍵ + match←(sb(∨/⍷)¨⊂⍺)/sb + ⊃((⌈/=⊢)≢¨match)/match +} diff --git a/Task/Longest-common-substring/APL/longest-common-substring-2.apl b/Task/Longest-common-substring/APL/longest-common-substring-2.apl new file mode 100644 index 0000000000..ca103cbd22 --- /dev/null +++ b/Task/Longest-common-substring/APL/longest-common-substring-2.apl @@ -0,0 +1,2 @@ + 'testing123testing' lcs 'thisisatest' +test diff --git a/Task/Longest-common-substring/Cowgol/longest-common-substring.cowgol b/Task/Longest-common-substring/Cowgol/longest-common-substring.cowgol new file mode 100644 index 0000000000..43de9f308b --- /dev/null +++ b/Task/Longest-common-substring/Cowgol/longest-common-substring.cowgol @@ -0,0 +1,48 @@ +include "cowgol.coh"; +include "strings.coh"; + +sub Contains(s1: [uint8], s2: [uint8]): (r: uint8) is + r := 0; + while [s1] != 0 loop + var a := s1; + var b := s2; + while [b] != 0 and [a] == [b] loop + a := @next a; + b := @next b; + end loop; + if [b] == 0 then + r := 1; + return; + end if; + s1 := @next s1; + end loop; +end sub; + +sub LCS(s1: [uint8], s2: [uint8], outbuf: [uint8]) is + if StrLen(s1) < StrLen(s2) then + var temp := s1; + s1 := s2; + s2 := temp; + end if; + + var maxlen := StrLen(s2); + var length := maxlen; + while length > 0 loop + var start: intptr := 0; + while start + length <= maxlen loop + MemCopy(s2 + start, length, outbuf); + [outbuf + length + 1] := 0; + if Contains(s1, outbuf) != 0 then + return; + end if; + start := start + 1; + end loop; + length := length - 1; + end loop; + [outbuf] := 0; +end sub; + +var lcs: uint8[64]; +LCS("thisisatest", "testing123testing", &lcs[0]); +print(&lcs[0]); +print_nl(); diff --git a/Task/Longest-common-substring/Quackery/longest-common-substring.quackery b/Task/Longest-common-substring/Quackery/longest-common-substring.quackery new file mode 100644 index 0000000000..21212547ae --- /dev/null +++ b/Task/Longest-common-substring/Quackery/longest-common-substring.quackery @@ -0,0 +1,31 @@ + [ 0 temp put + 0 temp put + tuck dup size times + [ 2dup swap + 0 temp put + 0 swap witheach + [ unrot + over size + over = iff + [ drop + conclude ] + done + rot dip + [ 2dup peek ] + = tuck * + + dup temp take + max temp put ] + 2drop + temp take + dup temp share > iff + [ temp release + i^ temp replace + temp put ] + else drop + behead drop ] + 2drop + temp take dip + [ temp take split nip ] + split drop ] is lcs ( $ $ --> $ ) + + $ "thisisatest" $ "testing123testing" lcs echo$ cr diff --git a/Task/Longest-common-substring/SETL/longest-common-substring.setl b/Task/Longest-common-substring/SETL/longest-common-substring.setl new file mode 100644 index 0000000000..e98fed0954 --- /dev/null +++ b/Task/Longest-common-substring/SETL/longest-common-substring.setl @@ -0,0 +1,17 @@ +program longest_common_substring; + print(lcs("thisisatest", "testing123testing")); + + proc lcs(s1, s2); + if #s1 < #s2 then [s1, s2] := [s2, s1]; end if; + + loop for l in [#s2, #s2-1..1] do + loop for s in [1..#s2-l+1] do + if (substr := s2(s..s+l)) in s1 then + return substr; + end if; + end loop; + end loop; + + return ""; + end proc; +end program; diff --git a/Task/Longest-string-challenge/BASIC256/longest-string-challenge.basic b/Task/Longest-string-challenge/BASIC256/longest-string-challenge.basic new file mode 100644 index 0000000000..c7940f5e39 --- /dev/null +++ b/Task/Longest-string-challenge/BASIC256/longest-string-challenge.basic @@ -0,0 +1,14 @@ +dim test = {"a", "bb", "ccc", "ddd", "ee", "f", "ggg"} +test1 = "" + +for c = 0 to test[?]-1 + if length(test[c]) > length(test1) Then + test1 = test[c] + test2 = test1 & chr(10) + else + if length(test[c]) = length(test1) then test2 += test[c] & chr(10) + end if +next c + +print test2 +end diff --git a/Task/Longest-string-challenge/BQN/longest-string-challenge.bqn b/Task/Longest-string-challenge/BQN/longest-string-challenge.bqn new file mode 100644 index 0000000000..13522ad98d --- /dev/null +++ b/Task/Longest-string-challenge/BQN/longest-string-challenge.bqn @@ -0,0 +1,18 @@ +Cmp ← { + ⟨⟩ 𝕊 ⟨⟩: 0; · 𝕊 ⟨⟩: 1; ⟨⟩ 𝕊 ·: 2; + 𝕨 𝕊○(1⊸↓) 𝕩 +} + +cr←@+10 + +•Out {𝕊: + (•Getline@){ + @ Longest 𝕩: 𝕩.str; + 𝕨 Longest 𝕩: + (•Getline@) Longest 𝕨 {𝕨Cmp𝕩.curr}◶⟨ + {curr⇐𝕨,str⇐𝕩.str∾cr∾𝕨} + {curr⇐𝕨,str⇐𝕨} + ⊢ + ⟩ 𝕩 + }𝕩 +}{curr⇐"",str⇐""} diff --git a/Task/Longest-string-challenge/Chipmunk-Basic/longest-string-challenge.basic b/Task/Longest-string-challenge/Chipmunk-Basic/longest-string-challenge.basic new file mode 100644 index 0000000000..8d84fee91a --- /dev/null +++ b/Task/Longest-string-challenge/Chipmunk-Basic/longest-string-challenge.basic @@ -0,0 +1,8 @@ +10 data "a","bb","ccc","ddd","ee","f","ggg","~" : ' la tilde es solo para mantener el código compacto +20 restore +30 read test$ +40 if test$ = "~" then goto 70 +50 if len(test$) > len(test1$) then test1$ = test$ : test2$ = test1$+chr$(10) else if len(test$) = len(test1$) then test2$ = test2$+test$+chr$(10) +60 goto 30 +70 print test2$ +80 end diff --git a/Task/Longest-string-challenge/GW-BASIC/longest-string-challenge.basic b/Task/Longest-string-challenge/GW-BASIC/longest-string-challenge.basic new file mode 100644 index 0000000000..a515e54956 --- /dev/null +++ b/Task/Longest-string-challenge/GW-BASIC/longest-string-challenge.basic @@ -0,0 +1,9 @@ +10 DATA "a","bb","ccc","ddd","ee","f","ggg","~" +20 RESTORE +30 READ TEST$ +40 IF TEST$ = "~" THEN GOTO 80 +50 IF LEN(TEST$) > LEN(TEST1$) THEN LET TEST1$ = TEST$ : LET TEST2$ = TEST1$ + CHR$(10) : GOTO 30 +60 IF LEN(TEST$) = LEN(TEST1$) THEN LET TEST2$ = TEST2$ + TEST$ + CHR$(10) +70 GOTO 30 +80 PRINT TEST2$ +90 END diff --git a/Task/Longest-string-challenge/MSX-Basic/longest-string-challenge.basic b/Task/Longest-string-challenge/MSX-Basic/longest-string-challenge.basic new file mode 100644 index 0000000000..73af070eb8 --- /dev/null +++ b/Task/Longest-string-challenge/MSX-Basic/longest-string-challenge.basic @@ -0,0 +1,8 @@ +10 DATA "a","bb","ccc","ddd","ee","f","ggg","~" +30 READ T$ +40 IF T$ = "~" THEN GOTO 80 +50 IF LEN(T$) > LEN(T1$) THEN LET T1$ = T$ : LET T2$ = T1$ + CHR$(10) : GOTO 30 +60 IF LEN(T$) = LEN(T1$) THEN LET T2$ = T2$ + T$ + CHR$(10) +70 GOTO 30 +80 PRINT T2$ +90 END diff --git a/Task/Longest-string-challenge/MiniScript/longest-string-challenge.mini b/Task/Longest-string-challenge/MiniScript/longest-string-challenge.mini new file mode 100644 index 0000000000..3856d32bf8 --- /dev/null +++ b/Task/Longest-string-challenge/MiniScript/longest-string-challenge.mini @@ -0,0 +1,21 @@ +string.isLonger = function(s) + return self.hasIndex(s.len) +end function + +longest = "" +lines = "" + +current = input +while current + if current.isLonger(longest) then + lines = current + longest = current + else if not longest.isLonger(current) then + lines += current + end if + current = input +end while + +for i in range(0, lines.len, longest.len) + print lines[i:i + longest.len] +end for diff --git a/Task/Longest-string-challenge/BASIC/longest-string-challenge.basic b/Task/Longest-string-challenge/QBasic/longest-string-challenge.basic similarity index 100% rename from Task/Longest-string-challenge/BASIC/longest-string-challenge.basic rename to Task/Longest-string-challenge/QBasic/longest-string-challenge.basic diff --git a/Task/Longest-string-challenge/Quackery/longest-string-challenge.quackery b/Task/Longest-string-challenge/Quackery/longest-string-challenge.quackery new file mode 100644 index 0000000000..9812ba552f --- /dev/null +++ b/Task/Longest-string-challenge/Quackery/longest-string-challenge.quackery @@ -0,0 +1,32 @@ + [ 0 ] is alonger + [ 1 ] is blonger + [ 2 ] is a&bsame + + [ [] swap witheach + [ drop blonger join ] + [] rot witheach + [ drop alonger join ] + over dip dup + witheach [ drop -1 split drop ] + unrot + witheach [ drop -1 split drop ] + join + a&bsame join + 0 peek ] is comparison ( $ $ --> c ) + + [ say "Enter an empty string to end." + cr cr + $ "" $ "" + [ $ "Enter a string: " input + dup $ "" comparison + [ table + true true false ] do while + carriage join + 2dup comparison + [ table + [ drop ] + [ dip [ 2drop $ "" ] ] + [ dip join ] ] + do again ] + cr say "Result:" cr + drop join echo$ ] is task ( --> ) diff --git a/Task/Look-and-say-sequence/EasyLang/look-and-say-sequence.easy b/Task/Look-and-say-sequence/EasyLang/look-and-say-sequence.easy new file mode 100644 index 0000000000..2a924dee19 --- /dev/null +++ b/Task/Look-and-say-sequence/EasyLang/look-and-say-sequence.easy @@ -0,0 +1,22 @@ +proc lookandsay . a$ . + s$ = "" + c = 1 + p$ = substr a$ 1 1 + for i = 2 to len a$ + if p$ = substr a$ i 1 + c += 1 + else + s$ &= c & p$ + p$ = substr a$ i 1 + c = 1 + . + . + s$ &= c & p$ + swap a$ s$ +. +b$ = 1 +print b$ +for k = 1 to 10 + lookandsay b$ + print b$ +. diff --git a/Task/Look-and-say-sequence/SETL/look-and-say-sequence.setl b/Task/Look-and-say-sequence/SETL/look-and-say-sequence.setl new file mode 100644 index 0000000000..31c8cbd598 --- /dev/null +++ b/Task/Look-and-say-sequence/SETL/look-and-say-sequence.setl @@ -0,0 +1,23 @@ +program looksay; + s := "1"; + loop for i in [1..10] do + print(s); + s := looksay(s); + end loop; + + proc looksay(s); + loop for c in s do; + if cur /= c then + if count /= om then + r +:= count + cur; + end if; + cur := c; + count := 1; + else + count +:= 1; + end if; + end loop; + r +:= count + cur; + return r; + end proc; +end looksay; diff --git a/Task/Loop-over-multiple-arrays-simultaneously/EasyLang/loop-over-multiple-arrays-simultaneously.easy b/Task/Loop-over-multiple-arrays-simultaneously/EasyLang/loop-over-multiple-arrays-simultaneously.easy new file mode 100644 index 0000000000..d1f17ce868 --- /dev/null +++ b/Task/Loop-over-multiple-arrays-simultaneously/EasyLang/loop-over-multiple-arrays-simultaneously.easy @@ -0,0 +1,6 @@ +a$[] = [ "a" "b" "c" ] +b$[] = [ "A" "B" "C" ] +c[] = [ 1 2 3 ] +for i = 1 to 3 + print a$[i] & b$[i] & c[i] +. diff --git a/Task/Loop-over-multiple-arrays-simultaneously/Zig/loop-over-multiple-arrays-simultaneously-1.zig b/Task/Loop-over-multiple-arrays-simultaneously/Zig/loop-over-multiple-arrays-simultaneously-1.zig new file mode 100644 index 0000000000..ac849ba722 --- /dev/null +++ b/Task/Loop-over-multiple-arrays-simultaneously/Zig/loop-over-multiple-arrays-simultaneously-1.zig @@ -0,0 +1,14 @@ +const std = @import("std"); + +const arr1 = [_]u8{ 'a', 'b', 'c' }; +const arr2 = [_]u8{ 'A', 'B', 'C' }; +const arr3 = [_]u8{ '1', '2', '3' }; + +pub fn main() std.fs.File.WriteError!void { + const stdout = std.io.getStdOut(); + const stdout_w = stdout.writer(); + const n = std.math.min3(arr1.len, arr2.len, arr3.len); + for (arr1[0..n]) |arr1_e, i| { + try stdout_w.print("{c} {c} {c}\n", .{ arr1_e, arr2[i], arr3[i] }); + } +} diff --git a/Task/Loop-over-multiple-arrays-simultaneously/Zig/loop-over-multiple-arrays-simultaneously-2.zig b/Task/Loop-over-multiple-arrays-simultaneously/Zig/loop-over-multiple-arrays-simultaneously-2.zig new file mode 100644 index 0000000000..aec258cbd3 --- /dev/null +++ b/Task/Loop-over-multiple-arrays-simultaneously/Zig/loop-over-multiple-arrays-simultaneously-2.zig @@ -0,0 +1,14 @@ +const std = @import("std"); + +const arr1 = [_]u8{ 'a', 'b', 'c' }; +const arr2 = [_]u8{ 'A', 'B', 'C' }; +const arr3 = [_]u8{ '1', '2', '3' }; + +pub fn main() std.fs.File.WriteError!void { + const stdout = std.io.getStdOut(); + const stdout_w = stdout.writer(); + const n = @min(arr1.len, arr2.len, arr3.len); + for (arr1[0..n], arr2[0..n], arr3[0..n]) |arr1_e, arr2_e, arr3_e| { + try stdout_w.print("{c} {c} {c}\n", .{ arr1_e, arr2_e, arr3_e }); + } +} diff --git a/Task/Loop-over-multiple-arrays-simultaneously/Zig/loop-over-multiple-arrays-simultaneously-3.zig b/Task/Loop-over-multiple-arrays-simultaneously/Zig/loop-over-multiple-arrays-simultaneously-3.zig new file mode 100644 index 0000000000..f48393ac32 --- /dev/null +++ b/Task/Loop-over-multiple-arrays-simultaneously/Zig/loop-over-multiple-arrays-simultaneously-3.zig @@ -0,0 +1,13 @@ +const std = @import("std"); + +const arr1 = [_]u8{ 'a', 'b', 'c' }; +const arr2 = [_]u8{ 'A', 'B', 'C' }; +const arr3 = [_]u8{ '1', '2', '3' }; + +pub fn main() std.fs.File.WriteError!void { + const stdout = std.io.getStdOut(); + const stdout_w = stdout.writer(); + for (arr1) |arr1_e, i| { + try stdout_w.print("{c} {c} {c}\n", .{ arr1_e, arr2[i], arr3[i] }); + } +} diff --git a/Task/Loop-over-multiple-arrays-simultaneously/Zig/loop-over-multiple-arrays-simultaneously-4.zig b/Task/Loop-over-multiple-arrays-simultaneously/Zig/loop-over-multiple-arrays-simultaneously-4.zig new file mode 100644 index 0000000000..c55787de60 --- /dev/null +++ b/Task/Loop-over-multiple-arrays-simultaneously/Zig/loop-over-multiple-arrays-simultaneously-4.zig @@ -0,0 +1,13 @@ +const std = @import("std"); + +const arr1 = [_]u8{ 'a', 'b', 'c' }; +const arr2 = [_]u8{ 'A', 'B', 'C' }; +const arr3 = [_]u8{ '1', '2', '3' }; + +pub fn main() std.fs.File.WriteError!void { + const stdout = std.io.getStdOut(); + const stdout_w = stdout.writer(); + for (arr1, 0..) |arr1_e, i| { + try stdout_w.print("{c} {c} {c}\n", .{ arr1_e, arr2[i], arr3[i] }); + } +} diff --git a/Task/Loop-over-multiple-arrays-simultaneously/Zig/loop-over-multiple-arrays-simultaneously-5.zig b/Task/Loop-over-multiple-arrays-simultaneously/Zig/loop-over-multiple-arrays-simultaneously-5.zig new file mode 100644 index 0000000000..cdb62f6408 --- /dev/null +++ b/Task/Loop-over-multiple-arrays-simultaneously/Zig/loop-over-multiple-arrays-simultaneously-5.zig @@ -0,0 +1,13 @@ +const std = @import("std"); + +const arr1 = [_]u8{ 'a', 'b', 'c' }; +const arr2 = [_]u8{ 'A', 'B', 'C' }; +const arr3 = [_]u8{ '1', '2', '3' }; + +pub fn main() std.fs.File.WriteError!void { + const stdout = std.io.getStdOut(); + const stdout_w = stdout.writer(); + for (arr1, arr2, arr3) |arr1_e, arr2_e, arr3_e| { + try stdout_w.print("{c} {c} {c}\n", .{ arr1_e, arr2_e, arr3_e }); + } +} diff --git a/Task/Loop-over-multiple-arrays-simultaneously/Zig/loop-over-multiple-arrays-simultaneously.zig b/Task/Loop-over-multiple-arrays-simultaneously/Zig/loop-over-multiple-arrays-simultaneously.zig deleted file mode 100644 index 45268d05b6..0000000000 --- a/Task/Loop-over-multiple-arrays-simultaneously/Zig/loop-over-multiple-arrays-simultaneously.zig +++ /dev/null @@ -1,10 +0,0 @@ -const std = @import("std"); - -const a1: []const u8 = &[_]u8{ 'a', 'b', 'c' }; -const a2: []const u8 = &[_]u8{ 'A', 'B', 'C' }; -const a3: []const u8 = &[_]u8{ '1', '2', '3' }; - -pub fn main() !void { - for (a1) |_, i| - try std.io.getStdOut().writer().print("{c} {c} {d}\n", .{ a1[i], a2[i], a3[i] }); -} diff --git a/Task/Loops-Break/BootBASIC/loops-break.basic b/Task/Loops-Break/BootBASIC/loops-break.basic new file mode 100644 index 0000000000..6d4372dbaa --- /dev/null +++ b/Task/Loops-Break/BootBASIC/loops-break.basic @@ -0,0 +1,9 @@ +10 a=rnd/13 +20 print a ; +30 if a-10 goto 50 +40 goto 100 +50 a=rnd/13 +55 print ", "; +60 print a +70 goto 10 +100 print diff --git a/Task/Loops-Break/Nu/loops-break.nu b/Task/Loops-Break/Nu/loops-break.nu new file mode 100644 index 0000000000..eeec08c787 --- /dev/null +++ b/Task/Loops-Break/Nu/loops-break.nu @@ -0,0 +1,6 @@ +while true { + let a = random int 0..19 + print $a + if $a == 10 {break} + print (random int 0..19) +} diff --git a/Task/Loops-Continue/Nu/loops-continue.nu b/Task/Loops-Continue/Nu/loops-continue.nu new file mode 100644 index 0000000000..9bad19b6ae --- /dev/null +++ b/Task/Loops-Continue/Nu/loops-continue.nu @@ -0,0 +1,8 @@ +for i in 1..10 { + print -n $i + if $i mod 5 == 0 { + print "" + continue + } + print -n ", " +} diff --git a/Task/Loops-Do-while/Nu/loops-do-while.nu b/Task/Loops-Do-while/Nu/loops-do-while.nu new file mode 100644 index 0000000000..80a40d2dbe --- /dev/null +++ b/Task/Loops-Do-while/Nu/loops-do-while.nu @@ -0,0 +1,6 @@ +mut n = 0 +while true { + $n += 1 + print $n + if $n mod 6 == 0 {break} +} diff --git a/Task/Loops-Downward-for/Nu/loops-downward-for.nu b/Task/Loops-Downward-for/Nu/loops-downward-for.nu new file mode 100644 index 0000000000..71581095d2 --- /dev/null +++ b/Task/Loops-Downward-for/Nu/loops-downward-for.nu @@ -0,0 +1 @@ +for i in 10..0 {print $i} diff --git a/Task/Loops-For-with-a-specified-step/EMal/loops-for-with-a-specified-step.emal b/Task/Loops-For-with-a-specified-step/EMal/loops-for-with-a-specified-step.emal new file mode 100644 index 0000000000..5574533dc1 --- /dev/null +++ b/Task/Loops-For-with-a-specified-step/EMal/loops-for-with-a-specified-step.emal @@ -0,0 +1,2 @@ +for int i = 2; i <= 8; i+= 2 do write(i + ", ") end +writeLine("who do we appreciate?") diff --git a/Task/Loops-For-with-a-specified-step/Nu/loops-for-with-a-specified-step.nu b/Task/Loops-For-with-a-specified-step/Nu/loops-for-with-a-specified-step.nu new file mode 100644 index 0000000000..98098f0f95 --- /dev/null +++ b/Task/Loops-For-with-a-specified-step/Nu/loops-for-with-a-specified-step.nu @@ -0,0 +1 @@ +for i in (0..10 | each {} | every 2) {print $i} diff --git a/Task/Loops-For/EMal/loops-for.emal b/Task/Loops-For/EMal/loops-for.emal new file mode 100644 index 0000000000..ae977cb15a --- /dev/null +++ b/Task/Loops-For/EMal/loops-for.emal @@ -0,0 +1,4 @@ +for int i = 0; i < 5; ++i + for int j = 0; j <= i; ++j do write("*") end + writeLine() +end diff --git a/Task/Loops-For/Nu/loops-for.nu b/Task/Loops-For/Nu/loops-for.nu new file mode 100644 index 0000000000..c09cd06c69 --- /dev/null +++ b/Task/Loops-For/Nu/loops-for.nu @@ -0,0 +1,6 @@ +for i in 1..5 { + for j in 1..$i { + print -n "*" + } + print "" +} diff --git a/Task/Loops-Foreach/Nu/loops-foreach.nu b/Task/Loops-Foreach/Nu/loops-foreach.nu new file mode 100644 index 0000000000..6c4b8ffda7 --- /dev/null +++ b/Task/Loops-Foreach/Nu/loops-foreach.nu @@ -0,0 +1,2 @@ +let l = [a b c d] +for x in $l {print $x} diff --git a/Task/Loops-Increment-loop-index-within-loop-body/EMal/loops-increment-loop-index-within-loop-body.emal b/Task/Loops-Increment-loop-index-within-loop-body/EMal/loops-increment-loop-index-within-loop-body.emal new file mode 100644 index 0000000000..a889e3d9de --- /dev/null +++ b/Task/Loops-Increment-loop-index-within-loop-body/EMal/loops-increment-loop-index-within-loop-body.emal @@ -0,0 +1,19 @@ +int LIMIT = 42 +fun isPrime = logic by int n + if n % 2 == 0 do return n == 2 end + if n % 3 == 0 do return n == 3 end + int d = 5 + while d * d <= n + if n % d == 0 do return false end + d += 2 + if n % d == 0 do return false end + d += 4 + end + return true +end +for int i = LIMIT, int n = 0; n < LIMIT; ++i + if not isPrime(i) do continue end + ++n + writeLine("n = " + n + ",\ti = " + i) + i += i - 1 +end diff --git a/Task/Loops-Infinite/Nu/loops-infinite.nu b/Task/Loops-Infinite/Nu/loops-infinite.nu new file mode 100644 index 0000000000..8994974584 --- /dev/null +++ b/Task/Loops-Infinite/Nu/loops-infinite.nu @@ -0,0 +1 @@ +while true {print SPAM} diff --git a/Task/Loops-N-plus-one-half/BootBASIC/loops-n-plus-one-half.basic b/Task/Loops-N-plus-one-half/BootBASIC/loops-n-plus-one-half.basic new file mode 100644 index 0000000000..66df03b93d --- /dev/null +++ b/Task/Loops-N-plus-one-half/BootBASIC/loops-n-plus-one-half.basic @@ -0,0 +1,8 @@ +10 a=1 +20 print a ; +30 if a-10 goto 100 +40 goto 130 +100 print ", "; +110 a=a+1 +120 goto 20 +130 print diff --git a/Task/Loops-N-plus-one-half/EMal/loops-n-plus-one-half.emal b/Task/Loops-N-plus-one-half/EMal/loops-n-plus-one-half.emal new file mode 100644 index 0000000000..74cda2e152 --- /dev/null +++ b/Task/Loops-N-plus-one-half/EMal/loops-n-plus-one-half.emal @@ -0,0 +1,7 @@ +int LAST_ITERATION = 10 +for int i = 1; i <= LAST_ITERATION ; ++i + write(i) + if i == LAST_ITERATION do break end + write(", ") +end +writeLine() diff --git a/Task/Loops-N-plus-one-half/Nu/loops-n-plus-one-half.nu b/Task/Loops-N-plus-one-half/Nu/loops-n-plus-one-half.nu new file mode 100644 index 0000000000..0ac5db30a5 --- /dev/null +++ b/Task/Loops-N-plus-one-half/Nu/loops-n-plus-one-half.nu @@ -0,0 +1,8 @@ +for i in 1.. { + print -n $i + if $i == 10 { + print "" + break + } + print -n ", " +} diff --git a/Task/Loops-While/EMal/loops-while.emal b/Task/Loops-While/EMal/loops-while.emal new file mode 100644 index 0000000000..7e6d4bb2a8 --- /dev/null +++ b/Task/Loops-While/EMal/loops-while.emal @@ -0,0 +1,5 @@ +int i = 1024 +while i > 0 + writeLine(i) + i /= 2 +end diff --git a/Task/M-bius-function/Amazing-Hopper/m-bius-function.hopper b/Task/M-bius-function/Amazing-Hopper/m-bius-function.hopper new file mode 100644 index 0000000000..0092784e8a --- /dev/null +++ b/Task/M-bius-function/Amazing-Hopper/m-bius-function.hopper @@ -0,0 +1,34 @@ +#include + +#proto cálculodeMobius(_X_) +#synon _cálculodeMobius calcularMobius + +algoritmo + + imprimir ("Mobius numbers from 1..199\n") + i=0, s=1 + iterar grupo( ++i, #(i<=199), calcular Mobius (i), \ + solo si (#( iszero(s%20) ), NL;s=0 ), imprimir, ++s ) + saltar +terminar + +subrutinas + +cálculo de Mobius (n) + si( #(n==0) ) ; tomar '" "' + sino si( #(n==1) ); tomar '" 1"' + sino; p=0 + iterar para (i=1, #(i<=n+1), ++i) + si ( #( iszero(n%i) && isprime(i)) ) + cuando ( #( iszero(n%(i*i)) ) ){ + tomar '" 0"'; ir a (herejía) /* ¡! */ + } ++p + fin si + siguiente + tomar si ( es impar(p), " -1", " 1" ) + fin si + +/* ¡Dios! ¡Purifica esta mierda! ----+ */ + /* | */ +herejía: /* <----------------------+ */ + retornar diff --git a/Task/M-bius-function/EasyLang/m-bius-function.easy b/Task/M-bius-function/EasyLang/m-bius-function.easy new file mode 100644 index 0000000000..2826147573 --- /dev/null +++ b/Task/M-bius-function/EasyLang/m-bius-function.easy @@ -0,0 +1,34 @@ +mu_max = 100000 +sqroot = floor sqrt mu_max +# +for i to mu_max + mu[] &= 1 +. +for i = 2 to sqroot + if mu[i] = 1 + for j = i step i to mu_max + mu[j] *= -i + . + for j = i * i step i * i to mu_max + mu[j] = 0 + . + . +. +for i = 2 to mu_max + if mu[i] = i + mu[i] = 1 + elif mu[i] = -i + mu[i] = -1 + elif mu[i] < 0 + mu[i] = 1 + elif mu[i] > 0 + mu[i] = -1 + . +. +numfmt 0 3 +for i = 1 to 100 + write mu[i] + if i mod 10 = 0 + print "" + . +. diff --git a/Task/M-bius-function/J/m-bius-function-1.j b/Task/M-bius-function/J/m-bius-function-1.j index 56fcf86626..dba449e582 100644 --- a/Task/M-bius-function/J/m-bius-function-1.j +++ b/Task/M-bius-function/J/m-bius-function-1.j @@ -1 +1 @@ -mu=: ({{*/1-y>1}} * _1 ^ 2|+/)@q:~&_ +mu=: */@:-@~:@q: diff --git a/Task/M-bius-function/J/m-bius-function-2.j b/Task/M-bius-function/J/m-bius-function-2.j index 1b59599a95..48f8b4b4f1 100644 --- a/Task/M-bius-function/J/m-bius-function-2.j +++ b/Task/M-bius-function/J/m-bius-function-2.j @@ -1,4 +1,4 @@ - mu 1+i.10 20 + mu >: i. 10 20 1 _1 _1 0 _1 1 _1 0 0 1 _1 0 _1 1 1 0 _1 0 _1 0 1 1 _1 0 0 1 0 0 _1 _1 _1 0 1 1 1 0 _1 1 1 0 _1 _1 _1 0 0 1 _1 0 0 0 1 0 _1 0 1 0 1 1 _1 0 diff --git a/Task/M-bius-function/Rust/m-bius-function.rust b/Task/M-bius-function/Rust/m-bius-function.rust new file mode 100644 index 0000000000..75f788b2b4 --- /dev/null +++ b/Task/M-bius-function/Rust/m-bius-function.rust @@ -0,0 +1,78 @@ +fn moebius(mut x: u64) -> i8 { + let mut prime_count = 0; + + // If x is divisible by the given factor this macro counts the factor and divides it out. + // It then returns zero if x is still divisible by the factor. + macro_rules! divide_x_by { + ($factor:expr) => { + if x % $factor == 0 { + x /= $factor; + prime_count += 1; + if x % $factor == 0 { + return 0; + } + } + }; + } + + // Handle 2 and 3 separately, + divide_x_by!(2); + divide_x_by!(3); + + // then use a wheel sieve to check the remaining factors <= √x. + for i in (5..=isqrt(x)).step_by(6) { + divide_x_by!(i); + divide_x_by!(i + 2); + } + + // There can exist one prime factor larger than √x, + // in that case we can check if x is still larger than one, and then count it. + if x > 1 { + prime_count += 1; + } + + if prime_count % 2 == 0 { + 1 + } else { + -1 + } +} + +/// Returns the largest integer smaller than or equal to `√n` +const fn isqrt(n: u64) -> u64 { + if n <= 1 { + n + } else { + let mut x0 = u64::pow(2, n.ilog2() / 2 + 1); + let mut x1 = (x0 + n / x0) / 2; + while x1 < x0 { + x0 = x1; + x1 = (x0 + n / x0) / 2; + } + x0 + } +} + +fn main() { + const ROWS: u64 = 10; + const COLS: u64 = 20; + println!( + "Values of the Möbius function, μ(x), for x between 0 and {}:", + COLS * ROWS + ); + for i in 0..ROWS { + for j in 0..=COLS { + let x = COLS * i + j; + let μ = moebius(x); + if μ >= 0 { + // Print an extra space if there's no minus sign in front of the output + // in order to align the numbers in a nice grid. + print!(" "); + } + print!("{μ} "); + } + println!(); + } + let x = u64::MAX; + println!("\nμ({x}) = {}", moebius(x)); +} diff --git a/Task/MAC-vendor-lookup/BBC-BASIC/mac-vendor-lookup.basic b/Task/MAC-vendor-lookup/BBC-BASIC/mac-vendor-lookup.basic new file mode 100644 index 0000000000..ae2fdcdc32 --- /dev/null +++ b/Task/MAC-vendor-lookup/BBC-BASIC/mac-vendor-lookup.basic @@ -0,0 +1,29 @@ + DIM Block% 599 : REM Memory buffer to receive GET info + INSTALL @lib$ + "SOCKLIB" : PROC_initsockets + + READ Mac$ + WHILE Mac$ > "" + WAIT 100 : REM 1 sec pause to avoid 'Too Many Requests' errors + Socket=FN_tcpconnect("api.macvendors.com", "80") + I%=FN_writelinesocket(Socket, "GET /" + Mac$ + " HTTP/1.0") + I%=FN_writelinesocket(Socket, "") + REPEAT N%=FN_readsocket(Socket, Block%, 600) UNTIL N% > 0 + PROC_closesocket(Socket) + PRINT Mac$ TAB(24); + CASE LEFT$($(Block% + 9), 3) OF + WHEN "200" + Block%?N%=0 : REM Add terminating 0x00 + REPEAT N%-=1 UNTIL Block%?N% < 32 : REM Leave only last line + PRINT $$(Block% + N% + 1) : REM Print string from memory + WHEN "404" + PRINT "N/A" + OTHERWISE + PRINT "ERROR" + ENDCASE + READ Mac$ + ENDWHILE + + PROC_exitsockets + END + + DATA 88:53:2E:67:07:BE, FC:FB:FB:01:FA:21, D4:F4:6F:C9:EF:8D, 10-11-22-33-44-55, diff --git a/Task/MAC-vendor-lookup/MiniScript/mac-vendor-lookup.mini b/Task/MAC-vendor-lookup/MiniScript/mac-vendor-lookup.mini new file mode 100644 index 0000000000..6001063b22 --- /dev/null +++ b/Task/MAC-vendor-lookup/MiniScript/mac-vendor-lookup.mini @@ -0,0 +1,9 @@ +macList = ["88:53:2E:67:07:BE", "FC:FB:FB:01:FA:21", "00:02:55:00:00:00", + "D4:F4:6F:C9:EF:8D", "23:45:67", "18:93:D7", "1C:A6:81"] + +for mac in macList + ret = http.get("http://api.macvendors.com/"+mac) + if ret == "HTTP/1.1 404 Not Found" then ret = "N/A" + print ret + wait 1 +end for diff --git a/Task/MAC-vendor-lookup/Nu/mac-vendor-lookup.nu b/Task/MAC-vendor-lookup/Nu/mac-vendor-lookup.nu new file mode 100644 index 0000000000..114d866a86 --- /dev/null +++ b/Task/MAC-vendor-lookup/Nu/mac-vendor-lookup.nu @@ -0,0 +1,21 @@ +let mactable = http get "http://standards-oui.ieee.org/oui/oui.csv" | from csv --no-infer + +def get-mac-org [] { + let assignment = $in | str upcase | str replace --all --regex "[^A-Z0-9]" "" | str substring 0..6 + $mactable | where Assignment == $assignment | try {first | get "Organization Name"} catch {"N/A"} +} + +# Test cases from the Ada entry +let macs = [ + # Should succeed + "88:53:2E:67:07:BE" + "D4:F4:6F:C9:EF:8D" + "FC:FB:FB:01:FA:21" + "4c:72:b9:56:fe:bc" + "00-14-22-01-23-45" + # Should fail + "23-45-67" + "foobar" +] + +$macs | each {{MAC: $in, Vendor: ($in | get-mac-org)}} diff --git a/Task/Magic-squares-of-doubly-even-order/Amazing-Hopper/magic-squares-of-doubly-even-order.hopper b/Task/Magic-squares-of-doubly-even-order/Amazing-Hopper/magic-squares-of-doubly-even-order.hopper new file mode 100644 index 0000000000..436371588b --- /dev/null +++ b/Task/Magic-squares-of-doubly-even-order/Amazing-Hopper/magic-squares-of-doubly-even-order.hopper @@ -0,0 +1,51 @@ +/* + Magic squares of doubly even order. Rosettacode.org + By Mr. Dalien. +*/ + +#include + +#proto cuadradomágico(_X_) +#synon _cuadradomágico generarcuadradomágico + +principal { + decimales '0', fijar separador 'NULO' + + malla de bits(bits,'1;0;0;1','0;1;1;0','0;1;1;0','1;0;0;1') + + borrar pantalla + iterar para( i=1; n=4, #(i<=3), ++i; #(n=4*i) ) + dim( #(n*n) ) matriz de ceros 'sqr' + generar cuadrado mágico (n); + ir a sub ( meter en tabla, sqr, #(n+1) ), para 'sqr' + imprimir '"Magic square order ",n,\ + "\nMagic constant : ",#((n * n + 1) * n / 2),\ + NL,sqr,NL,NL' + luego limpiar 'sqr' + siguiente + terminar +} + +subrutinas + +sub( meter en tabla, s, n ) { + i=n,rareti(i, 'i') + retener 'n', insertar columnas en 's' + insertar filas en 's' + #basic{ + s[1:2:2*n-1,1:_end_] = "---" + s[1:_end_, 1:2:2*n-1] = "|" + s[1:2:_end_,1:2:_end_] = "+" + } + retornar 's' +} + +cuadrado mágico ( n ) + iterar para ( cr=0;i=0, #(cr "" then save magic square in a file +190 ' filename$ can contain directory name +200 ' if filename$ exist it will be overwriten, no error checking +210 dim sq(size,size)' array to hold square +220 ' start in the middle of the first row +230 nr = 1 +240 x = size-int(size/2) +250 y = 1 +260 max = size*size +270 ' create format string for using +280 for c = 1 to len(str$(max))+1 : frmt$ = frmt$+"#" : next c +290 'main loop for creating magic square +300 do +310 if sq(x,y) = 0 then +320 sq(x,y) = nr +330 if nr mod size = 0 then +340 y = y+1 +350 else +360 x = x+1 +370 y = y-1 +380 endif +390 nr = nr+1 +400 endif +410 if x > size then +420 x = 1 +430 do while sq(x,y) <> 0 +440 x = x+1 +450 loop +460 endif +470 if y < 1 then +480 y = size +490 do while sq(x,y) <> 0 +500 y = y-1 +510 loop +520 endif +530 loop until nr > max +540 ' printing square's bigger than 19 result in a wrapping of the line +550 print "Odd magic square size: ";size;"*";size +560 print "The magic sum = ";int((max+1)/2)*size +570 print +580 for y = 1 to size +590 for x = 1 to size +600 print using "####";val(sq(x,y)); +610 next x +620 print +630 next y +640 print +650 ' output magic square to a file with the name provided +660 if filename$ <> "" then +670 nr = freefile +680 open filename$ for output as #1 +690 print #1,"Odd magic square size: ";size;"*";size +700 print #1,"The magic sum = ";int((max+1)/2)*size +710 print #1, +720 for y = 1 to size +730 for x = 1 to size +740 print #1,using frmt$;sq(x,y); +750 next x +760 print #1, +770 next y +780 endif +790 close #1 +800 end sub +810 input "Enter N: ",number +820 magicsq(number) +830 end diff --git a/Task/Magic-squares-of-odd-order/EDSAC-order-code/magic-squares-of-odd-order.edsac b/Task/Magic-squares-of-odd-order/EDSAC-order-code/magic-squares-of-odd-order.edsac new file mode 100644 index 0000000000..8d0c6a5e50 --- /dev/null +++ b/Task/Magic-squares-of-odd-order/EDSAC-order-code/magic-squares-of-odd-order.edsac @@ -0,0 +1,172 @@ +[Magic squares of odd order, for Rosetta Code. + EDSAC program, Initial Orders 2.] + +[The entries in a magic square of side n can be written as n*u + v + 1, + where u and v range independently over 0, ..., n - 1. + Let the cells be labelled by (x, y) coordinates, where + x = column (left = 0), y = row (bottom = 0). + If n is odd then magic squares can be constructed by setting + u = c*x + d*y + h (mod n) + v = e*x + f*y + k (mod n) + where c, d, e, f, h, k are suitable constants. + Define m = (n - 1)/2. The values of c, ..., k for various methods + of construction are as follows: + c, d, e, f, h, k + Bachet: m + 1, m, m + 1, m + 1, m, 0 + De la Loubere: 1, 2m, 2, 2m, m, 0 + Conway (lozenge): 1, 2m, 1, 1, m, m + 1 + Rosetta Code C: 2m, 2m - 1, 1, 2m - 1, 2m - 1, 2m +------------------------------------------------------------------------------] + [Arrange the storage] + T45K P56F [H parameter: subroutine to print string] + T46K P100F [N parameter: subroutine to print number] + T47K P200F [M parameter: main routine + high-level subroutine] + +[Main routine + non-library subroutine] + E25K TM GK +[Rows are printed in the order y = n - 1 (top) to y = 0 (bottom). + Row y = n is a fictitious row used during initialization.] + [Locations set up by main routine; some are changed by subroutine] + [0] PF [m] + [1] PF [n] + [2] PF [n^2] + [3] PF [n * 2^11] + [4] PF [c, changed to n*(n - c) = dec to n*u on inc(x)] + [5] PF [d, changed to n*d = dec to n*u on dec(y)] + [6] PF [e, changed to n - e = dec to v on inc(x)] + [7] PF [f = dec to v when dec(y)] + [8] PF [h, changed to n*u for start of current row] + [9] PF [k, changed to v for start of current row] + [Locations used only by subroutine] + [10] PF [n*u] + [11] PF [v] + [12] PF [x count] + [13] PF [y count] + +[Subroutine to print magic square, using parameters set up by main routine.] + [14] A3F T77@ [plant return link as usual] + A80@ T1F [set to print leading zeros as spaces] + A1@ S6@ T6@ [replace e by n - e] + A1@ S4@ T4@ [replace c by n - c] + [Multiply certain values by n. To maintain the integer scaling, + products have to be shifted 16 left before storing.] + H3@ V8@ [acc := (n << 11)*h] + L8F T8@ [shift 5 more left and store n*h] + V5@ L8F T5@ [similarly n*d] + V4@ L8F T4@ [similarly n*(n - c)] +[Loop round rows y := n - 1 down to 0. At the moment y = n.] + S1@ T13@ [initialize negative count of rows (y values)] + [Start of a row. Here acc = 0] + [36] S1@ T12@ [inititialize negative count of columns (x values)] + A8@ S5@ [decrement n*u by n*d] + E42@ [skip if n*u >= 0] + A2@ [else inc n*u by n^2] + [42] U8@ [store updated n*u for next time] + T10@ [also copy to initialize this row] + A9@ S7@ [decrement v by f] + E48@ [skip if v >= 0] + A1@ [else inc v by n] + [48] U9@ [store updated v at for next time] + U11@ [also copy to initialize this row] + [Next column. Here acc = v] + [50] A10@ A78@ TF [cell value v + n*u + 1 to 0F for printing] + [53] A53@ GN [call subroutine to print cell value] + A12@ A78@ [increment negative column count] + E70@ [jump if row is complete] + T12@ [else update count] + A10@ S4@ [dec n*u by n*n - c)] + E63@ [skip if n*U >= 0] + A2@ [else inc n*u by n^2] + [63] T10@ [store updated n*u for next time] + A11@ S6@ [dec v by n - e] + E68@ [skip if v >= 0] + A1@ [else inc v by n] + [68] U11@ [store updated v, keep v in acc] + E50@ [loop back for next cell in row] +[Row finished] + [70] O81@ O82@ [print CR LF] + A13@ A78@ [inc negative row count] + E77@ [exit if done all rows] + T13@ E36@ [else update count and loop back] + [77] ZF [(planted) jump back to caller] +[Constants] + [78] PD [17-bit 1] + [79] K4096F [null] + [80] !F [space] + [81] @F [carriage return] + [82] &F [line feed] + [83] P10F [for testing number of phone pulses] +[Strings for printing. K2048F sets letters mode; K4096F is EDSAC null.] + [84] K2048FMFAFGFIFCF!FSFQFUFAFRFEF!FOFFF!FOFRFDFEFRF!F#FWF*FMF#FZFQF@F&FK4096F + [117] K2048FDFIFAFLF!FMF!F#FKFPF!F*FTFOF!FCFAFNFCFEFLF#FLF@F&FK4096F + [144] K2048FBFAFCFHFEFTF#FCF@F&FK4096F + [156] K2048FDFEF!FLFAF!FLFOFUFBFEFRFEF#FCF@F&FK4096F + [175] K2048FCFOFNFWFAFYF#FCF@F&FK4096F + [187] K2048FRFOFSFEFTFTFAF!FCFOFDFEF!FCF#FCF@F&FK4096F + +[Enter with acc = 0] + [207] A207@ GH A84@ [print heading] + [210] A210@ GH A117@ [prompt user to dial m, where n = 2m + 1] + ZF [halt program; restarts when user dials] +[Here acc holds number of pulses in address field. + Number of pulses = 10 if user dialled '0', else = number that user dialled.] + S83@ E292@ [test for '0', jump to exit if so] + A83@ [restore acc after test] + L512F [shift m to top 5 bits for printing] + UF [temp to 0F] + OF O81@ O82@ [print digit m, plus CR LF] + R512F [restore m in address field, same as 2m right-justified] + A78@ U1@ [make and store n = 2m + 1, right justified] + RD T@ [make and store m right-justified] + A1@ L512F T3@ [make and store n << 11] + H3@ V1@ [acc := (n << 11)*n] + L8F [shift 5 left for integer scaling] + T2@ [store n^2] +[Bachet's method] + [234] A234@ GH A144@ [print name of method] + A@ U5@ U8@ [d, h := m] + A78@ U4@ U6@ T7@ [c, e, f := m + 1] + T9@ [k := 0] + [245] A245@ G14@ [call s/r to print square] +[De la Loubere's (miscalled Siamese) method] + [247] A247@ GH A156@ [print name of method] + A78@ U4@ [c := 1] + LD T6@ [e := 2] + A@ U8@ [h := m] + LD U5@ T7@ [d, f := 2m] + T9@ [k := 0 ] + [260] A260@ G14@ [call s/r to print square] +[Conway's lozenge method turns out to be of this type] + [262] A262@ GH A175@ [print name of method] + A78@ U4@ U6@ U7@ [c, e, f := 1] + A@ T9@ [k := m + 1] + A@ U8@ [h := m] + LD T5@ [d := 2m] + [275] A275@ G14@ [call s/r to print square] +[C solution on Rosetta Code website] + [277] A277@ GH A187@ [print name of method] + A78@ T6@ [e := 1] + A@ LD U4@ U9@ [c, k := 2m] + S78@ U5@ U7@ T8@ [d, f, h := 2m - 1] + [290] A290@ + G14@ [call s/r to print square] + [292] O79@ [done; print null to flush teleprinter buffer] + ZF [halt the machine] + E25K TH +[Subroutine to print a string. + Input: A order for first character must follow subroutine call (G order). + String is terminated with EDSAC null, which is sent to the teleprinter.] + GKA18@U17@S19@T4@AFT6@AFUFOFE12@A20@G16@TFA6@A2FG5@TFZFU3FU1FK2048F + + E25K TN +[Subroutine to print non-negative 17-bit integer. + Parameters: 0F = integer to be printed (not preserved) + 1F = character for leading zero (preserved) + Workspace: 4F..7F, 38 locations] + GKA3FT34@A1FT7FS35@T6FT4#FAFT4FH36@V4FRDA4#FR1024FH37@E23@O7FA2F + T6FT5FV4#FYFL8FT4#FA5FL1024FUFA6FG16@OFTFT7FA6FG17@ZFP4FZ219DTF + +[================ M parameter again ================] + E25K TM GK + E207Z [define entry point] + PF [acc = 0 on entry] diff --git a/Task/Magic-squares-of-odd-order/GW-BASIC/magic-squares-of-odd-order.basic b/Task/Magic-squares-of-odd-order/GW-BASIC/magic-squares-of-odd-order.basic new file mode 100644 index 0000000000..64741f0e7d --- /dev/null +++ b/Task/Magic-squares-of-odd-order/GW-BASIC/magic-squares-of-odd-order.basic @@ -0,0 +1,11 @@ +100 REM Magic squares of odd order +110 INPUT "The square order: ", N +115 'INPUT "The square order:"; N ' for MSX Basic +120 IF (N AND 1) = 0 OR N < 3 THEN PRINT "error: size is not odd or size is smaller then 3" : GOTO 100 +130 FOR I = 1 TO N +140 FOR J = 1 TO N +150 PRINT USING " ###"; ((I*2-J+N-1) MOD N) * N + ((I*2+J-2) MOD N) + 1; +160 NEXT J +170 PRINT +180 NEXT I +190 PRINT "The magic number is: "; N * (N^2+1) / 2 diff --git a/Task/Magic-squares-of-odd-order/MSX-Basic/magic-squares-of-odd-order.basic b/Task/Magic-squares-of-odd-order/MSX-Basic/magic-squares-of-odd-order.basic new file mode 100644 index 0000000000..76c7f988f8 --- /dev/null +++ b/Task/Magic-squares-of-odd-order/MSX-Basic/magic-squares-of-odd-order.basic @@ -0,0 +1,10 @@ +100 REM Magic squares of odd order +110 INPUT "The square order:"; N +120 IF (N AND 1) = 0 OR N < 3 THEN PRINT "error: size is not odd or size is smaller then 3" : GOTO 100 +130 FOR I = 1 TO N +140 FOR J = 1 TO N +150 PRINT USING " ###"; ((I*2-J+N-1) MOD N) * N + ((I*2+J-2) MOD N) + 1; +160 NEXT J +170 PRINT +180 NEXT I +190 PRINT "The magic number is:"; N * (N^2+1) / 2 diff --git a/Task/Magic-squares-of-odd-order/Sidef/magic-squares-of-odd-order.sidef b/Task/Magic-squares-of-odd-order/Sidef/magic-squares-of-odd-order.sidef index eaebaba706..a006052e2d 100644 --- a/Task/Magic-squares-of-odd-order/Sidef/magic-squares-of-odd-order.sidef +++ b/Task/Magic-squares-of-odd-order/Sidef/magic-squares-of-odd-order.sidef @@ -1,6 +1,6 @@ func magic_square(n {.is_pos && .is_odd}) { var i = 0 - var j = int(n/2) + var j = idiv(n, 2) var magic_square = [] for l in (1 .. n**2) { @@ -25,7 +25,7 @@ func print_square(sq) { } } -var(n=5) = ARGV»to_i»()... +var(n=5) = ARGV»to_i()»... var sq = magic_square(n) print_square(sq) diff --git a/Task/Magic-squares-of-singly-even-order/EDSAC-order-code/magic-squares-of-singly-even-order.edsac b/Task/Magic-squares-of-singly-even-order/EDSAC-order-code/magic-squares-of-singly-even-order.edsac new file mode 100644 index 0000000000..9e74bb24b6 --- /dev/null +++ b/Task/Magic-squares-of-singly-even-order/EDSAC-order-code/magic-squares-of-singly-even-order.edsac @@ -0,0 +1,174 @@ +[Magic squares of singly even order, for Rosetta Code. + EDSAC program, Initial Orders 2.] +[=============================================================================] +[Uses Strachey's method, but with the square rotated 90 degrees clockwise. + Let the side be 2q. The square is divided into 4 quadrants each of side q. + In each quadrant, a 0-based magic square is created by De la Loubere's rule. + The final square is got by adding k*q^2 + 1 to each entry, where 0 <= k <= 3.] +[=============================================================================] + [Arrange the storage] + T45K P56F [H parameter: subroutine to print string] + T46K P100F [N parameter: subroutine to print number] + T47K P200F [M parameter: main routine] +[Main routine] + E25K TM GK +[Variables] + [0] PF [m, where side of square = 4*m + 2] + [1] PF [q = side of a quadrant = 2*m + 1] + [2] PF [q^2] + [3] PF [negative counter for columns] + [4] PF [negative counter for rows] + [5] PF [q*u for De la Loubere's method] + [6] PF [v for De la Loubere's method] + [7] PF [value of q*u at start of row] + [8] PF [ditto v] + [9] PF [add-on k*q^2 + 1 for left half of row] + [10] PF [add-on k*q^2 + 1 for right half of row] + [In the top two quadrants, the left and right add-ons are swapped for + "special" cells: (1) centre cell of top row (2) centre cell of quadrant.] + [11] PF [EDSAC null if left & right add-ons are to be swapped; else 0] + [12] PF [value of current special cell] +[Constants] + [13] K4096F [EDSAC null, i.e. 10000000000000000 binary] + [14] !F [space] + [15] @F [carriage return] + [16] &F [line feed] + [17] PD [17-bit constant 1] + [18] P10F [10 in address field (test for '0' on phone dial)] +[Strings, terminated by EDSAC null] + [19] K2048FMFAFGFIFCF!FSFQFUFAFRFEF!FOFFF!FOFRFDFEFRF!F#FRF*FMF#FZFWF@F&FK4096F + [52] K2048FDFIFAFLF!FMF!F#FKFPF!F*FTFOF!FCFAFNFCFEFLF#FLF!FK4096F + [78] K2048FSFTFRFAFCFHFEFYF!F#FKF*FRFOFTFAFTFEFDF#FLFCF@F&FK4096F +[Enter with acc = 0] + [104] A104@ GH A19@ [print header: says side of square = 4*m + 2] + [107] A107@ GH A52@ [prompt user to enter m on phone dial] + ZF [halt machine, restarts when user dials] + [Here acc holds number of pulses in address field] + S18@ [test wheter user dialled '0' (10 pulses)] + E183@ [jump to exit if so] + A18@ [restore acc after test] + L512F UF [shift 11 left, to 0F for printing] + OF O15@ O16@ [print m followed by CR, LF] + R512F [shift back 11 right; acc = 2m right-justified] + A17@ U1@ [store q = 2m + 1 = n/2, right justified] + RD T@ [shift 1 right, store m right-justified] + H1@ V1@ [acc := q^2] + L64F L64F [16 left to adjust scaling after mult.] + T2@ [store q^2] + [129] A129@ GH A78@ [print 'STRACHEY (ROTATED):'] + A14@ T1F [use space for leading zeros when printing] +[In each quadrant, use De la Loubere's method. 0-based entry is q*u + v + where u, v are digits in base q. Example for m = 2, q = 2*m + 1 = 5: + u = 2 1 0 4 3 v = 0 4 3 2 1 At top left, u = m, v = 0 + 3 2 1 0 4 2 1 0 4 3 Moving right, u and v decrease by 1 mod q + 4 3 2 1 0 4 5 2 1 0 Moving down, u increases by 1 mod q + 0 4 3 2 1 1 0 4 3 2 v increases by 2 mod q + 1 0 4 3 2 3 2 1 0 4] + H1@ V@ [acc := q*m] + L64F L64F [16 left to adjust integer scaling scaling after mult.] + T7@ [store q*u at start of top row] + T8@ [v at start of top row := 0] +[At the start of each stage, set counter to m - (number of rows in that stage)] +[Stage 1, m rows] + T4@ [counter := 0] + A17@ T9@ [add-on for left half of row = 1] + A2@ LD A2@ [acc := 3*q^2] + A17@ T10@ [add-on for right half of row = 3q^2 + 1] + [Special cell is centre of top row; value is m + 1] + A@ A17@ T12@ [special pass m + 1 to subroutine] + [151] A151@ G185@ [call subroutine to do stage 1] +[Stage 2, m + 1 rows] + S17@ T4@ [counter := -1] + A10@ T9@ [add-on for left half of row = 3q^2 + 1] + A17@ T10@ [add-on for right half of row = 1] + [Special cell is at centre of quadrant; value id (q^2 - 1)/2] + A2@ RD T12@ [shift q^2 1 right to get value (since q is pdd)] + [162] A162@ G185@ [call subroutine to do stage 2] +[Stage 3, m + 2 rows. Here acc = 0.] + S2F T4@ [counter := -2] + A9@ S2@ U10@ [add-on for right half of row = 2q^2 + 1] + S2@ T9@ [add-on for left half of row = q^2 + 1] + S17@ T12@ [no special cell (value < 0) in stages 3 & 4] + [173] A173@ G185@ [call subroutine to do stage 3] +[Stage 4, m - 1 rows] + A17@ T4@ [counter := 1] + A10@ U9@ [add-on for left half of row = 2q^2 + 1] + S2@ T10@ [add-on for right half of row = q^2 + 1] + [181] A181@ G185@ [call subroutine to do stage 4] + [183] O13@ [done; print null] + ZF [halt the machine] +[Subroutine to write the rows in one of the 4 stages. + Shares storage with the main routine.] + [185] A3F T256@ [plant return link as usual] + S@ [negative row counter := -m] + A4@ [plus adjustment set by caller] + E256@ [exit if nothing to do (happens for 6x6, stage 4)] + [190] T4@ [outer loop: update row counter] + [Start of a row. Goes across 2 quadrants. + Recall that 0-based entry is q*u + v where u, v are digits in base q] + S1@ LD T3@ [negative column counter := -2*q] + A7@ T5@ [reset q*u for start of row] + A8@ U6@ [same for v] + [Next column. Here acc contains v (the second digit)] + [198] A5@ [inner loop: add q*u where u = first digit] + T4F [park 0-based entry in 4F] + [Add on an amount depending on whether it's left or right quadrant. + In stages 1 and 2, the left and right add-ons are swapped for certain cells.] + T11@ [say not swapped] + A12@ [load special cell if any] + G210@ [jump if none (value < 0)] + S4F [compare with cell entry] + G210@ S17@ E210@ [jump if different] + TF A13@ T11@ [set flag in sign bit to reverse comparison] + [210] TF [clear acc] + A3@ A1@ [test for left or right quadrant] + A11@ [reverse test if flag was set above] + E218@ [jump if right quadrant] + TF [clear acc] + A9@ [load add-on for left quadrant] + E220@ [join common code] + [218] TF [clear acc] + A10@ [load add-on for right quadrant] + [220] A4F TF [common: final value of entry to 0F for printing] + [222] A222@ GN [print] + A3@ A17@ [inc negative column count] + E239@ [jump if row is complete] + T3@ [update column count] + [Next cell in row] + A5@ S1@ E232@ [dec q*u by q, skip if result >= 0] + A2@ [else wrap round by adding q^2] + [232] T5@ [update q*u] + A6@ S17@ E237@ [dec v by 1, skip if result >= 0] + A1@ [else wrap round by adding q] + [237] U6@ [update v, keep new v in acc] + E198@ [loop back] + [Here when row finished] + [239] O15@ O16@ [print CR, LF] + A7@ A1@ [update value of u at start of row] + S2@ E246@ [if >= q^2 then subtract q^2] + A2@ [else restore acc after test] + [246] T7@ [update value mod q^2] + A8@ A2F [similarly inc v mod q] + S1@ E252@ A1@ + [252] T8@ + A4@ A17@ G190@ [inc negative row count, loop till done] + [256] ZF [(planted) jump back to caller] + +[Subroutine to print a string. + Input: A order for first character must follow subroutine call. + String is terminated with EDSAC null, which is sent to the teleprinter.] + E25K TH + GKA18@U17@S19@T4@AFT6@AFUFOFE12@A20@G16@TFA6@A2FG5@TFZFU3FU1FK2048F + +[Subroutine to print non-negative 17-bit integer. + Parameters: 0F = integer to be printed (not preserved) + 1F = character for leading zero (preserved) + Workspace: 4F..7F, 38 locations] + E25K TN + GKA3FT34@A1FT7FS35@T6FT4#FAFT4FH36@V4FRDA4#FR1024FH37@E23@O7FA2F + T6FT5FV4#FYFL8FT4#FA5FL1024FUFA6FG16@OFTFT7FA6FG17@ZFP4FZ219DTF + +[================ M parameter again ================] + E25K TM GK + E104Z [define entry point] + PF [acc = 0 on entry] diff --git a/Task/Magnanimous-numbers/Amazing-Hopper/magnanimous-numbers.hopper b/Task/Magnanimous-numbers/Amazing-Hopper/magnanimous-numbers.hopper new file mode 100644 index 0000000000..5e2c3dd053 --- /dev/null +++ b/Task/Magnanimous-numbers/Amazing-Hopper/magnanimous-numbers.hopper @@ -0,0 +1,30 @@ +#include + +#proto encontrarunMagnanimouspara(_X_) +#synon _encontrarunMagnanimouspara siencontréunMagnanimousen + +algoritmo + + decimales '0' + + res={}, i=0 + iterar grupo( ++i, #(length(res)<400), \ + i, meter según ( si encontré un Magnanimous en 'i', res )) + + #(utf8("Primeros 45 números magnánimos:\n")), #(res[1:45]) + #(utf8("\n\nNúmeros magnánimos 241 - 250:\n")), #(res[241:250]) + #(utf8("\n\nNúmeros magnánimos 391 - 400:\n")), #(res[391:400]), NL + luego imprime esto + +terminar + +subrutinas + +encontrar un Magnanimous para(n) + tn=n, d=0, i=0, pd=0 + iterar + último dígito de 'tn', mover a 'd,tn' + cuando ' tn ' { #( pd += ( d * 10^i ) ) } + mientras ' #( tn && is prime(tn+pd) ); ++i ' + +retornar ' #(not(tn)) ' diff --git a/Task/Magnanimous-numbers/BBC-BASIC/magnanimous-numbers.basic b/Task/Magnanimous-numbers/BBC-BASIC/magnanimous-numbers.basic new file mode 100644 index 0000000000..de04026f6a --- /dev/null +++ b/Task/Magnanimous-numbers/BBC-BASIC/magnanimous-numbers.basic @@ -0,0 +1,22 @@ + DIM Sieve% 1E5 + Prime%=2 + WHILE Prime%^2 < 1E5 + FOR S%=Prime%*2 TO 1E5 STEP Prime% Sieve%?S%=1 NEXT + REPEAT Prime%+=1 UNTIL Sieve%?Prime%=0 + ENDWHILE + Sieve%?1=1 + + PRINT "First 45 magnanimous numbers" + REPEAT + IF M% > 9 THEN + FOR I%=LOGM% TO 1 STEP -1 + IF Sieve%?((M% DIV 10^I%) + (M% MOD 10^I%)) EXIT FOR + NEXT + ENDIF + IF I% == 0 THEN + N%+=1 + IF N% == 240 OR N% == 390 PRINT '"Magnanimous numbers ";N% + 1 "-";N% + 10 + IF N% < 46 OR (N% > 240 AND N% < 251) OR (N% > 390 AND N% < 401) PRINT;M% " "; + ENDIF + M%+=1 + UNTIL N% > 400 diff --git a/Task/Magnanimous-numbers/EasyLang/magnanimous-numbers.easy b/Task/Magnanimous-numbers/EasyLang/magnanimous-numbers.easy new file mode 100644 index 0000000000..10295a4f34 --- /dev/null +++ b/Task/Magnanimous-numbers/EasyLang/magnanimous-numbers.easy @@ -0,0 +1,45 @@ +fastfunc isprim num . + if num < 2 + return 0 + . + i = 2 + while i <= sqrt num + if num mod i = 0 + return 0 + . + i += 1 + . + return 1 +. +func ismagnan n . + if n < 10 + return 1 + . + p = 10 + repeat + q = n div p + r = n mod p + if isprim (q + r) = 0 + return 0 + . + until q < 10 + p *= 10 + . + return 1 +. +proc magnan start stop . . + write start & "-" & stop & ":" + while count < stop + if ismagnan i = 1 + count += 1 + if count >= start + write " " & i + . + . + i += 1 + . + print "" +. +magnan 1 45 +magnan 241 250 +magnan 391 400 diff --git a/Task/Magnanimous-numbers/GW-BASIC/magnanimous-numbers.basic b/Task/Magnanimous-numbers/GW-BASIC/magnanimous-numbers.basic new file mode 100644 index 0000000000..ea11deac5c --- /dev/null +++ b/Task/Magnanimous-numbers/GW-BASIC/magnanimous-numbers.basic @@ -0,0 +1,23 @@ +100 DEFINT A-Z +110 CLS +120 LET L = N +130 LET R = 0 +140 LET S = 1 +150 IF L < 10 THEN GOTO 300 +160 LET R = R+(L MOD 10)*S +170 LET L = L\10 +180 LET S = S*10 +190 LET P = R+L +200 IF P = 1 THEN GOTO 280 ELSE FOR D = 2 TO SQR(P) +210 IF P MOD D = 0 THEN GOTO 280 +250 NEXT D +270 GOTO 150 +280 LET N = N+1 +290 GOTO 120 +300 LET I = I+1 +310 IF I = 1 THEN PRINT "1 - 45:" ELSE IF I = 241 THEN PRINT : PRINT "241 - 250:" +320 IF I <= 45 OR I > 240 THEN PRINT N, +330 LET N = N+1 +340 IF I < 250 THEN GOTO 120 +350 PRINT +360 END diff --git a/Task/Magnanimous-numbers/SETL/magnanimous-numbers.setl b/Task/Magnanimous-numbers/SETL/magnanimous-numbers.setl new file mode 100644 index 0000000000..faf5ee8d90 --- /dev/null +++ b/Task/Magnanimous-numbers/SETL/magnanimous-numbers.setl @@ -0,0 +1,42 @@ +program magnanimous; + n := -1; + loop for i in [1..400] do + loop until magnanimous(n) do n +:= 1; end loop; + + case i of + (1): print("1 - 45:"); + (241): print; print("241 - 250:"); + (391): print; print("391 - 400:"); + end case; + + if i in [1..45] or i in [241..250] or i in [391..400] then + putchar(lpad(str n, 7)); + if i mod 5 = 0 then print; end if; + end if; + end loop; + + proc magnanimous(n); + return forall k in splitsums(n) | prime(k); + end proc; + + proc splitsums(n); + s := str n; + return [val s(..i) + val s(i+1..) : i in [1..#s-1]]; + end proc; + + proc prime(n); + if n<2 then return false; + elseif even n then return(n = 2); + elseif n mod 3=0 then return(n = 3); + else + d := 5; + loop while d*d <= n do + if n mod d=0 then return false; end if; + d +:= 2; + if n mod d=0 then return false; end if; + d +:= 4; + end loop; + return true; + end if; + end proc; +end program; diff --git a/Task/Main-step-of-GOST-28147-89/Java/main-step-of-gost-28147-89.java b/Task/Main-step-of-GOST-28147-89/Java/main-step-of-gost-28147-89.java new file mode 100644 index 0000000000..ec768fdf8f --- /dev/null +++ b/Task/Main-step-of-GOST-28147-89/Java/main-step-of-gost-28147-89.java @@ -0,0 +1,219 @@ +import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.List; +import java.util.function.IntUnaryOperator; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +/** + * Encrypt and decrypt messages in unicode characters using the GOST 28147-89 (Magma) algorithm. + * + * For further information visit https://en.wikipedia.org/wiki/GOST_(block_cipher) + */ +public final class MainStepGOST28147_89 { + + public static void main(String[] aArgs) { + // Initialisation + String plainText = "The spy 我 lives in Iž"; + GOST28147_89 gost = new GOST28147_89(plainText); + + // Display the plain text and the plain text bytes + System.out.println("The plain text is: \"" + plainText + "\"" + System.lineSeparator()); + String plainTextBinary = gost.getPlainTextBinary(); + displayBytesFromBinary("The plain text bytes are: ", plainTextBinary); + + // Encryption + String encryptedBinary = gost.gostAlgorithm(plainTextBinary, Cryptation.ENCRYPT); + + // Display the encrypted text bytes and the encrypted text + List encryptedChars = displayBytesFromBinary("The encrypted text bytes are: ", encryptedBinary); + String encryptedText = encryptedChars.stream().map(String::valueOf).collect(Collectors.joining()); + System.out.println("The encrypted text is: \"" + encryptedText + "\"" + System.lineSeparator()); + + // Decryption + String decryptedBinary = gost.gostAlgorithm(encryptedBinary, Cryptation.DECRYPT); + + // Display the decrypted text bytes and the decrypted text + List decryptedChars = displayBytesFromBinary("The decrypted text bytes are: ", decryptedBinary); + byte[] bytes = new byte[decryptedChars.size()]; + IntStream.range(0, decryptedChars.size()).forEach( i -> bytes[i] = (byte) decryptedChars.get(i).charValue() ); + System.out.println("The decrypted text is: \"" + new String(bytes) + "\"" + System.lineSeparator()); + } + + /** + * Display the given tile string together with a list of bytes obtained from the given binary string. + * Return a list of characters obtained from the given binary string. + */ + private static List displayBytesFromBinary(String aTitle, String aBinaryBlock) { + List chars = new ArrayList(); + List bytes = new ArrayList(); + for ( int i = 0; i < aBinaryBlock.length(); i += 8 ) { + char ch = (char) Integer.parseInt(aBinaryBlock.substring(i, i + 8), 2); + chars.add(ch); + bytes.add(String.format("%2s", Integer.toHexString(ch)).replace(" ", "0")); + } + + System.out.println(aTitle); + for ( int i = 0; i < bytes.size(); i += 8 ) { + System.out.print(bytes.subList(i, i + 8)); + } + System.out.println(System.lineSeparator()); + + return chars; + } + +} + +enum Cryptation { ENCRYPT, DECRYPT } + +final class GOST28147_89 { + + public GOST28147_89(String aPlainText) { + createSbox(); + createKeys(); + plainTextBinary = convertCharactersToBinary(aPlainText, StandardCharsets.UTF_8); + } + + /** + * Encrypt or decrypt the given binary string according to the value of the given enum, + * using the GOST 28147-89 (Magma) algorithm. + */ + public String gostAlgorithm(String aBinaryBlock, Cryptation aCryptation) { + StringBuilder stringBuilder = new StringBuilder(); + for ( int i = 0; i < aBinaryBlock.length(); i += 64 ) { + String one = reverse(aBinaryBlock.substring(i, i + 32)); + String two = reverse(aBinaryBlock.substring(i + 32, i + 64)); + + List pair; + switch ( aCryptation ) { + case ENCRYPT -> { pair = mainStep(one, two, 24, k -> k % 8); + pair = mainStep(pair.get(0), pair.get(1), 8, k -> 7 - k); + stringBuilder.append(reverse(pair.get(0))); + stringBuilder.append(reverse(pair.get(1))); + } + case DECRYPT -> { pair = mainStep(two, one, 8, k -> k); + pair = mainStep(pair.get(0), pair.get(1), 24, k -> 7 - k % 8); + stringBuilder.append(reverse(pair.get(1))); + stringBuilder.append(reverse(pair.get(0))); + } + }; + } + + return stringBuilder.toString(); + } + + public String getPlainTextBinary() { + return plainTextBinary; + } + + // PRIVATE // + + /** + * Perform the main step of the GOST 28147-89 (Magma) algorithm. + */ + private List mainStep(String aLeft, String aRight, int aIterations, IntUnaryOperator aOperator) { + for ( int i = 0; i < aIterations; i++ ) { + long sum = Long.parseLong(aRight, 2) + Integer.parseInt(keys.get(aOperator.applyAsInt(i)), 2); + sum %= Math.pow(2, 32); + String newSum = String.format("%32s", Long.toBinaryString(sum)).replace(" ", "0"); + newSum = shiftLeft(sBoxFunction(newSum)); + + String temp = aLeft; + aLeft = aRight; + long xor = Long.parseLong(newSum, 2) ^ Long.parseLong(temp, 2); + aRight = String.format("%32s", Long.toBinaryString(xor)).replace(" ", "0"); + } + + return List.of(aLeft, aRight); + } + + /** + * Convert each byte in the given string to its ASCII code value as a binary number, + * and concatenate these binary numbers into a single string. + * Pad the resulting string so that its length is a multiple of 8 bytes which is 64 bits. + */ + private String convertCharactersToBinary(String aBytes, Charset aCharset) { + StringBuilder stringBuilder = new StringBuilder(); + for ( byte bbyte : aBytes.getBytes(aCharset) ) { + String binary = String.format("%8s", Integer.toBinaryString(bbyte & 0xff)).replace(" ", "0"); + stringBuilder.append(binary); + } + String binaryBlock = stringBuilder.toString(); + + while ( binaryBlock.length() % 64 > 0 ) { + binaryBlock += "00100000"; // The ASCII code for the space character as a binary number. + } + + return binaryBlock; + } + + /** + * Left shift the given string by 11 bits. + */ + private String shiftLeft(String aBinaryBlock) { + return aBinaryBlock.substring(11) + aBinaryBlock.substring(0, 11); + } + + /** + * Return the reverse of the given string. + */ + private String reverse(String aText) { + return new StringBuilder(aText).reverse().toString(); + } + + /** + * Convert the 32 character KEY_TEXT into a 256 bit binary string. + * Then convert this string into 8 keys each consisting of a 32 bit string. + */ + private void createKeys() { + if ( KEY_TEXT.length() != 32 ) { + throw new AssertionError("The KEY_TEXT must contain exactly 32 characters"); + } + + String binaryKey = convertCharactersToBinary(KEY_TEXT, StandardCharsets.UTF_8); + keys = new ArrayList(); + for ( int i = 0; i < 256; i += 32 ) { + keys.add( new String(binaryKey.substring(i, i + 32)) ); + } + } + + /** + * Split the given 32 bit string into 8 parts, + * and replace each part with its respective hexadecimal number from the sBox. + */ + private String sBoxFunction(String aBinaryBlock) { + StringBuilder result = new StringBuilder(); + for ( int i = 0; i < 32; i += 4 ) { + int number = Integer.parseInt(aBinaryBlock.substring(i, i + 4), 2); + int boxNumber = Integer.parseInt(sBox.get(i / 4).substring(number, number + 1), 16); + String binary = Integer.toBinaryString(boxNumber).replace(" ", "0"); + result.append(binary); + } + + return result.toString(); + } + + /** + * Create a list of strings of hexadecimal digits. + */ + private void createSbox() { + sBox = List.of( + "4A92D80E6B1C7F53", + "EB4C6DFA23810759", + "581DA342EFC7609B", + "7DA1089FE46CB253", + "6C715FD84A9E03B2", + "4BA0721D36859CFE", + "DB413F590AE7682C", + "1FD057A4923E6B8C"); + } + + private List sBox; + private List keys; + private String plainTextBinary; + + // The KEY_TEXT must contain exactly 32 characters. + private final String KEY_TEXT = "Kriptografi Metode GOST, Andysah"; + +} diff --git a/Task/Make-directory-path/OCaml/make-directory-path.ocaml b/Task/Make-directory-path/OCaml/make-directory-path.ocaml index 3991887759..6d378c24a8 100644 --- a/Task/Make-directory-path/OCaml/make-directory-path.ocaml +++ b/Task/Make-directory-path/OCaml/make-directory-path.ocaml @@ -1,14 +1,7 @@ -#load "unix.cma" - -let mkdir_p ~path ~perms = - let ps = String.split_on_char '/' path in - let rec aux acc = function [] -> () - | p::ps -> - let this = String.concat Filename.dir_sep (List.rev (p::acc)) in - Unix.mkdir this perms; - aux (p::acc) ps - in - aux [] ps - -let () = - mkdir_p "path/to/dir" 0o700 +let rec mkdir_p path perm = + if path <> "" then + try Unix.mkdir path perm with + | Unix.Unix_error (EEXIST, _, _) when Sys.is_directory path -> () + | Unix.Unix_error (ENOENT, _, _) -> + mkdir_p (Filename.dirname path) perm; + Unix.mkdir path perm diff --git a/Task/Man-or-boy-test/Zig/man-or-boy-test.zig b/Task/Man-or-boy-test/Zig/man-or-boy-test.zig new file mode 100644 index 0000000000..64e124ecc6 --- /dev/null +++ b/Task/Man-or-boy-test/Zig/man-or-boy-test.zig @@ -0,0 +1,81 @@ +const Record = struct { + yieldFn: *const fn (record: *Record) i32, + + k: *i32 = undefined, + x1: *Record = undefined, + x2: *Record = undefined, + x3: *Record = undefined, + x4: *Record = undefined, + x5: *Record = undefined, + + inline fn run(record: *Record) i32 { + return record.yieldFn(record); + } + + pub fn A(record: *Record) i32 { + return if (record.k.* <= 0) + record.x4.run() + record.x5.run() + else + record.B(); + } + + fn B(record: *Record) i32 { + record.k.* -= 1; + + var k_copy_on_stack: i32 = record.k.*; + + var b: Record = .{ + .yieldFn = &Record.B, + + .k = &k_copy_on_stack, + .x1 = record, + .x2 = record.x1, + .x3 = record.x2, + .x4 = record.x3, + .x5 = record.x4, + }; + return b.A(); + } +}; + +const numbers = struct { + fn positiveOne(unused_record: *Record) i32 { + _ = unused_record; + return 1; + } + + fn zero(unused_record: *Record) i32 { + _ = unused_record; + return 0; + } + + fn negativeOne(unused_record: *Record) i32 { + _ = unused_record; + return -1; + } +}; + +const std = @import("std"); + +pub fn main() void { + var i: u31 = 0; + while (i <= 31) : (i += 1) { + var k: i32 = i; + var @"+1_record": Record = .{ .yieldFn = &numbers.positiveOne }; + var @"0_record": Record = .{ .yieldFn = &numbers.zero }; + var @"-1_record": Record = .{ .yieldFn = &numbers.negativeOne }; + + var record: Record = .{ + .yieldFn = &Record.B, + + .k = &k, + .x1 = &@"+1_record", + .x2 = &@"-1_record", + .x3 = &@"-1_record", + .x4 = &@"+1_record", + .x5 = &@"0_record", + }; + + std.debug.print("[{d:>3}] = {d}\n", .{ i, record.A() }); + } +} diff --git a/Task/Mandelbrot-set/Python/mandelbrot-set-8.py b/Task/Mandelbrot-set/Python/mandelbrot-set-8.py index 960c57501e..09666f5ed1 100644 --- a/Task/Mandelbrot-set/Python/mandelbrot-set-8.py +++ b/Task/Mandelbrot-set/Python/mandelbrot-set-8.py @@ -21,8 +21,8 @@ for k in range(n+1): print("The reference sequence diverges within %s iterations." % k) break -x = np.linspace(0, 2, num=d+1) -y = np.linspace(0, 2 * h / d, num=h+1) +x = np.linspace(0, 2, num=d+1, dtype=np.float64) +y = np.linspace(0, 2 * h / d, num=h+1, dtype=np.float64) A, B = np.meshgrid(x * np.pi, y * np.pi) C = 8.0 * np.exp((A + B * 1j) * 1j) diff --git a/Task/Matrix-digital-rain/Amazing-Hopper/matrix-digital-rain-1.hopper b/Task/Matrix-digital-rain/Amazing-Hopper/matrix-digital-rain-1.hopper new file mode 100644 index 0000000000..dceb48d17a --- /dev/null +++ b/Task/Matrix-digital-rain/Amazing-Hopper/matrix-digital-rain-1.hopper @@ -0,0 +1,55 @@ +#include + +#proto desplegarmatrixrain(_X_,_Y_,_Z_,_W_) + +algoritmo + + permitir interrupción + + dimensionar (80) matriz aleatoria entera ( -50, t ) + + y=0 + + color(232,232) + borrar pantalla + + enfatizado + + iterar + + iterar para(i=1, #(i<=80), ++i ) + cuando ( #(t[i]>50) ){ #(t[i]=0) } + #basic{ + t[i] += 1 + y = t[i] + desplegar matrix rain(232,232,i,(y-10)) + desplegar matrix rain(22,232,i,(y-9)) + desplegar matrix rain(22,232,i,(y-8)) + desplegar matrix rain(22,232,i,(y-7)) + desplegar matrix rain(28,232,i,(y-6)) + desplegar matrix rain(28,232,i,(y-5)) + desplegar matrix rain(34,232,i,(y-4)) + desplegar matrix rain(34,232,i,(y-3)) + desplegar matrix rain(40,232,i,(y-2)) + desplegar matrix rain(46,232,i,(y-1)) + desplegar matrix rain(232,40,i,y) + } + siguiente + + microsegundos(5000) + hasta que una tecla sea presionada + + color(7,0) + borrar pantalla +terminar + +subrutinas + +desplegar matrix rain(p,s,x,y) + + si ( y, está entre-excluyendo-(0,41) ) + color (p,s) + imprimir en ( y,x, #(utf8(chr(33+((x*y) % 200)) )) ) + fin si + +retornar diff --git a/Task/Matrix-digital-rain/Amazing-Hopper/matrix-digital-rain-2.hopper b/Task/Matrix-digital-rain/Amazing-Hopper/matrix-digital-rain-2.hopper new file mode 100644 index 0000000000..0b68948a2a --- /dev/null +++ b/Task/Matrix-digital-rain/Amazing-Hopper/matrix-digital-rain-2.hopper @@ -0,0 +1,46 @@ +#include + +#proto desplegarmatrixrain(_X_,_Y_) + +algoritmo + + dimensionar con (80) matriz aleatoria entera ( -50, t ) + matrices (ctexto, cfondo) + '232,22,22,22,22,28,28,28,34,34,40,40,46,232' enlistar en 'ctexto' + '232,232,232,232,232,232,232,232,232,232,232,232,232,40' enlistar en 'cfondo' + + color(232,232) + borrar pantalla + + enfatizado + + iterar + + iterar para(i=1, #(i<=80), ++i ) + cuando ( #(t[i]>53) ){ #(t[i]=rand(-50)) } + #basic{ + t[i] += 1 + desplegar matrix rain(i,t[i]) + } + siguiente + + microsegundos(50000) + + hasta que una tecla sea presionada + + color(7,0) + borrar pantalla +terminar + +subrutinas + +desplegar matrix rain(x,y) + i=13, j=1 + iterar + si ( #(y-i), está entre-excluyendo-(0,41) ) + color ( #(ctexto[j]), #(cfondo[j]) ) + imprimir en ( #(y-i),x, #(utf8(chr(33+((x*(y-i)) % 200)) )) ) + fin si + --i, ++j + mientras ' no es negativo(i)' +retornar diff --git a/Task/Maximum-triangle-path-sum/EasyLang/maximum-triangle-path-sum.easy b/Task/Maximum-triangle-path-sum/EasyLang/maximum-triangle-path-sum.easy new file mode 100644 index 0000000000..7ff134def3 --- /dev/null +++ b/Task/Maximum-triangle-path-sum/EasyLang/maximum-triangle-path-sum.easy @@ -0,0 +1,39 @@ +a[] = [ 0 0 ] +repeat + s$ = input + until s$ = "" + i = 1 + while substr s$ i 1 = " " + i += 1 + . + s$ = "0 " & substr s$ i -1 & " 0" + b[] = number strsplit s$ " " + for i = 2 to len b[] - 1 + b[i] = higher (b[i] + a[i - 1]) (b[i] + a[i]) + . + swap a[] b[] +. +for v in a[] + max = higher max v +. +print max +# +input_data + 55 + 94 48 + 95 30 96 + 77 71 26 67 + 97 13 76 38 45 + 07 36 79 16 37 68 + 48 07 09 18 70 26 06 + 18 72 79 46 59 79 29 90 + 20 76 87 11 32 07 07 49 18 + 27 83 58 35 71 11 25 57 29 85 + 14 64 36 96 27 11 58 56 92 18 55 + 02 90 03 60 48 49 41 46 33 36 47 23 + 92 50 48 02 36 59 42 79 72 20 82 77 42 + 56 78 38 80 39 75 02 71 66 66 01 03 55 72 + 44 25 67 84 71 67 11 61 40 57 58 89 40 56 36 + 85 32 25 85 57 48 84 35 47 62 17 01 01 99 89 52 + 06 71 28 75 94 48 37 10 23 51 06 48 53 18 74 98 15 +27 02 92 23 08 71 76 84 15 52 92 63 81 10 44 10 69 93 diff --git a/Task/Maximum-triangle-path-sum/Elena/maximum-triangle-path-sum.elena b/Task/Maximum-triangle-path-sum/Elena/maximum-triangle-path-sum.elena index 48fe4f80a3..e57a0dc472 100644 --- a/Task/Maximum-triangle-path-sum/Elena/maximum-triangle-path-sum.elena +++ b/Task/Maximum-triangle-path-sum/Elena/maximum-triangle-path-sum.elena @@ -27,7 +27,7 @@ public program() int i := 0; int j := 0; - input.splitBy(forward newLine).forEach:(string line) + input.splitBy(newLineConstant).forEach:(string line) { j := 0; line.trim().splitBy(" ").forEach:(string num) diff --git a/Task/Maximum-triangle-path-sum/F-Sharp/maximum-triangle-path-sum.fs b/Task/Maximum-triangle-path-sum/F-Sharp/maximum-triangle-path-sum.fs new file mode 100644 index 0000000000..62be6033ac --- /dev/null +++ b/Task/Maximum-triangle-path-sum/F-Sharp/maximum-triangle-path-sum.fs @@ -0,0 +1,5 @@ +// Maximum triangle path sum. Nigel Galloway: October 23rd., 2023 +let g=[[27;02;92;23;08;71;76;84;15;52;92;63;81;10;44;10;69;93];[06;71;28;75;94;48;37;10;23;51;06;48;53;18;74;98;15];[85;32;25;85;57;48;84;35;47;62;17;01;01;99;89;52];[44;25;67;84;71;67;11;61;40;57;58;89;40;56;36];[56;78;38;80;39;75;02;71;66;66;01;03;55;72];[92;50;48;02;36;59;42;79;72;20;82;77;42];[02;90;03;60;48;49;41;46;33;36;47;23];[14;64;36;96;27;11;58;56;92;18;55];[27;83;58;35;71;11;25;57;29;85];[20;76;87;11;32;07;07;49;18];[18;72;79;46;59;79;29;90];[48;07;09;18;70;26;06];[07;36;79;16;37;68];[97;13;76;38;45];[77;71;26;67];[95;30;96];[94;48];[55]] +let fG n g=List.map2(fun (n1,n2) g->(max n1 n2)+g) (n|>List.pairwise) g +let rec fN=function n::g::t->fN ((fG n g)::t) |n::_->List.head n +printfn "%d" (fN g) diff --git a/Task/Mayan-numerals/Amazing-Hopper/mayan-numerals.hopper b/Task/Mayan-numerals/Amazing-Hopper/mayan-numerals.hopper new file mode 100644 index 0000000000..212cff985a --- /dev/null +++ b/Task/Mayan-numerals/Amazing-Hopper/mayan-numerals.hopper @@ -0,0 +1,66 @@ +#include + +algoritmo + + muestra="" + obtener total argumentos + cuando ' sea distinto a( 2 ) '{ terminar } + obtener parámetro alfanumérico (2), guardar en 'muestra' + + lsimb={}, '" "," . "," .. ","... ","...."'#(utf8("────")), enlistar en 'lsimb' + + largo=0, #( largo = len(muestra)) + sdígitos={}, separar( muestra, sdígitos, "") + ndígitos=0, #( ndígitos = number(sdígitos) ) + + m=0, t=0 + #( m = largo-1) + + // convertir dígitos a base 20,la base de los mayas: + iterar para( j=m, #(j>=1), --j ) + iterar para( i=1, #(i<=j), ++i ) + bit.and( #(ndígitos[i]), 1 ), por '10', + guardar en 't' + #( ndígitos[i+1] += t ) + #( ndígitos[i] = int(ndígitos[i]/2) ) + siguiente + siguiente + + s=1 + iterar mientras ( #( ndígitos[s]==0 && s=0), --l ) + + imprimir (#(utf8("║"))) + iterar para ( i=s, #(i<=largo), ++i ) + si ( bit.or ( #(ndígitos[i]), l ), es igual a '0' ) + imprimir ( #(utf8("│ Θ ")) ) + + sino + guardar ' #(ndígitos[i]-5*l) ' en 'n' + si ( #(n>5) ) + n=5 + sino si ( n, es negativo? ) + n=0 + fin si + imprimir( #(utf8("│")), #(lsimb[n+1]) ) + + fin si + siguiente + imprimir (#(utf8("│║")),NL) + + siguiente + + imprimir ( #(utf8("║└────")),#(replicate( utf8("┴────"), largo-s) ), #(utf8("┘║")), NL,\ + #(utf8("╚═════")),#(replicate( utf8("═════"), largo-s) ), #(utf8("═╝")), NL ) + saltar + +terminar diff --git a/Task/Maze-generation/EDSAC-order-code/maze-generation.edsac b/Task/Maze-generation/EDSAC-order-code/maze-generation.edsac new file mode 100644 index 0000000000..2a77aa9107 --- /dev/null +++ b/Task/Maze-generation/EDSAC-order-code/maze-generation.edsac @@ -0,0 +1,310 @@ +[Maze generation for Rosetta Code. + EDSAC program, Initial Orders 2. + + Cells, horizontal walls, and vertical walls are numbered + as shown in this example: + +---1---+---2---+---3---+ + | | | | + 1 1 2 2 3 3 4 N + | | | | | + +---5---+---6---+---7---+ W---+---E + | | | | | + 5 5 6 6 7 7 8 S + | | | | + +---9---+--10---+--11---+ + +Maze data are held in a single 1-based array of 17-bit values +(equivalent to an array of records in a high-level language). +In each entry, fields for cells and walls are as shown in "Flags" below.] + + [Arrange the storage] + T51K P56F [G parameter: generator for pseudo-random numbers] + T47K P100F [M parameter: main routine + dependent subroutines] + T45K P398F [H parameter: storage for maze] + [The following once-only code can be overwritten by the maze data.] + T46K P398F [N parameter: library subroutine R4 to read data] + T50K P420F [X parameter: code executed at start-up only] + +[=========== Executed at start-up, then overwritten ================] + E25K TX GK + [Enter with acc = 0] + [0] A@ GN [read 35-bit maze width into 0D] + AF TM [load and store width, assuming high word = 0] + [4] A4@ GN AF T1M [same for height] + [Initialize linear congruential generator for pseudo-random numbers] + [8] A8@ GN [read seed for LCG into 0D] + AD T4D [pass seed to LCG in 4D] + [12] A12@ GG [initialize LCG] + [Choose a random cell in the maze, for use later.] + [Also update storage of width and height.] + T4D [clear the whole of 4D, including sandwich bit] + AM U4F [load 17-bit width, pass to LCG as 35-bit value] + LD A2F TM [width to address field, add 1, store] + [20] A20@ G1G [call LCG, 0D := random in 0..(width - 1)] + AF T3M [save random to temporary store] + T4D A1M U4F [pass height of maze to LCG] + LD A2F T1M [height to address field, add 1, store] + [30] A30@ G1G [call LCG, 0D := random in 0..(height - 1)] + HF VM L64F L32F [acc := random*(width + 1)] + A3M LD A2F [add first random, shift to address, add 1] + T3M [save random index for use below] + HM V1M L64F L32F T2M [store (width+1)*(height+1)] + E65M [jump to main routine with acc = 0] + +[================ Main routine ====================] + E25K TM GK +[Variables] + [0] PF [initially maze width; then (width + 1) in address field] + [1] PF [initially maze height; then (height + 1) in address field] +[List of up to four E orders to move N, S, W, E.] +[The first two are also used as temporary store at program start] + [2] PF + [3] PF PF PF + [6] TF [T order to store E order in list] +[Constants] + [7] T2@ [initial value of T order] + [8] TH [order to store into array{0}] + [9] AH [order to load from array{0}] + [10] C1H [order to collate with array{1};] + [also teleprinter colon in figures mode] + [11] MF [add to T order to make A order with same address] + [12] LF [add to T order to make C order with same address] +[Flags] + [13] K4096F [horizontal wall deleted, 10000 hex] + [14] IF [vertical wall deleted, 8000 hex] + [15] RF [no north neighbour, 4000 hex] + [16] WF [no south neighbour, 2000 hex] + [17] QF [no west neighbour, 1000 hex] + [18] P1024F [no east neighbour, 0800 hex] + [19] PD [cell visited, 0001 hex] + [20] V2047F [mask to clear visited bit] + [21] P1023F [mask to select EDSAC address field, which contains + index of previous cell for backtracking (0 if none). +[Teleprinter] + [22] #F [set figures mode] + [23] !F [space] + [24] @F [carriage return] + [25] &F [line feed] + +[Subroutine called to set flag "no north neighbour" in cells along north edge, + similarly for east, south and west edges (order must be N, E, S, W). + Input: 4F = negative count of cells + 5F = step in array index + 6F = flag to be set] + [26] A3F T42@ [plant return link as usual] + A36@ + G34@ [jump into middle of loop (since A < 0)] + [30] T4F [loop: update megative count] + A36@ A5F U36@ + [34] S11@ T38@ +[The following order initially refers to the NW corner cell. + First call leaves it referring to NE corner; second call to SE corner, etc. + Hence the need for calls to be in the order N, E, S, W.] + [36] A1H [planted; loaded as A1H] + A6F + [38] TF + A4F A2F [add 1 to negative count] + G30@ [if not yet 0, loop back] + [42] ZF + +[Subroutine to test for unvisited neighbour of current cell in a given direction. + Input: 4F = E order to be added to list if unvisited neighbour is found + 5F = step in array index to reach neighbour + 6F = flag to test for no neighbour in this direction] + [43] A3F T64@ [plant return link as usual] + S6F H6F CH [if no neighbour then acc = 0, else acc < 0] + E64@ [exit if no neighbour] + TF A118@ + A5F T55@ + S19@ H19@ + [55] CF E64@ + TF A6@ U63@ + A2F T6@ + A4F [load jump to execute move] + [63] TF [store in list of moves] + [64] ZF [(planted) jump back to caller] + +[Jump to here from once-only code, with acc = 0] + [Clear maze array] + [65] S2@ + [66] TF [use 0F as loop counter] + [67] TH [planted, loaded as TH] + A67@ A2F T67@ + AF A2F G66@ + + [Set flag "no north neighbour" in cells along northern edge] + S@ A2F T4F [count = width, pass in 4F] + A2F T5F [step in array index = 1, pass in 5F] + A15@ T6F [pass flag in 6F] + [81] A81@ G26@ [call subroutine to set flag] + + [Repeat for east, south, west edges (must be in that order)] + S1@ A2F T4F A@ T5F A18@ T6F + [90] A90@ G26@ + S@ A2F T4F S2F T5F A16@ T6F + [99] A99@ G26@ + S1@ A2F T4F S@ T5F A17@ T6F + [108] A108@ G26@ + + [Start with the random cell chosen at program start (X parameter)] + A3@ A8@ + [Loop: here acc = T order for current cell] + [112] U121@ [plant T order] + A12@ T118@ [make and plant C order, same address] + + [Initialize storing in list of moves] + A7@ T6@ + H20@ + [118] CF A19@ [mark cell as visited] + UH [store flags of current cell in array{0} for easy access] + [121] TF [and also in the body of the array] + + [If cell has unvisited North neighbour, add North to list of possible moves] + A177@ T4F + S@ T5F + A15@ T6F + [128] A128@ G43@ + [Repeat for South, West, East neighbours] + A178@ T4F + A@ T5F + A16@ T6F + [136] A136@ G43@ + A179@ T4F + S2F T5F + A17@ T6F + [144] A144@ G43@ + A180@ T4F + A2F T5F + A18@ T6F + [152] A152@ G43@ + + [List now has 0..4 possible moves. If more than one, choose randomly.] + T4D [clear whole of 4D, including sandwich bit, for randomizer] + A6@ S7@ [address field := count of moves] + S2F G225@ [jump if none] + S2F G169@ [jump if one only] + RD A2F T4F [pass count, right-justified, to randomizer] + [164] A164@ G1G [0F := random value 0..(count - 1)] + AF LD E170@ + [169] TF [only one move, must be at list{0}] + [170] A7@ A11@ T173@ + [173] AF T176@ + A121@ [common to all moves] + [176] EF [jump to move N,S,E, or W with acc = 0] + [177] E181@ + [178] E190@ + [179] E199@ + [180] E208@ + + [Move North and delete horizontal wall] + [181] U186@ A11@ T184@ + [184] AF A13@ + [186] TF A121@ S@ E216@ + + [Move South and delete horizontal wall] + [190] A@ U196@ A11@ T194@ + [194] AF A13@ + [196] TF A196@ E216@ + + [Move West and delete vertical wall] + [199] U204@ A11@ T202@ + [202] AF A14@ + [204] TF A121@ S2F E216@ + + [Move East and delete vertical wall] + [208] A2F U214@ A11@ T212@ + [212] AF A14@ + [214] TF A214@ + [fall through] + + [Set index of current cell as previous to the new cell. + Here with T order for new cell in acc.] + [216] U222@ A11@ T221@ + A121@ S8@ + [221] AF + [222] TF + A222@ E112@ + + [No unvisited neighbour, backtrack if possible] + [225] TF [clear acc, needed] + H21@ CH [get index of previous cell (in address field)] + S2F [is it 0?] + G233@ [if so, maze is complete, jump to print] + A2F [restore] + A8@ [make T order] + E112@ + +[Print the maze created above] + [233] O22@ [set teleprinter to figures mode] + TF [clear acc] + S1@ T5F + [Outer 'loop and a half' with 5F as negative counter. + h + 1 rows for horizontal walls plus h rows for vertical walls] + [237] + [Print row for horizontal walls] + O296@ [print leading + sign] + S@ A2F [set inner loop counter in 4F] + H13@ + [241] T4F [4F := negative count of horizontal walls per row] + S13@ [has current horizontal wall been deleted?] + [243] C1H [planted; loaded as C1H] + G247@ [jump if not] + A23@ G249@ + [247] T1F [clear acc] + [248] A248@ [load hyphen (since A = minus in figures mode)] + [249] TF OF OF OF [print 3 spaces or 3 minus] + O296@ [print plus sign] + A243@ A2F T243@ [inc address in C order] + A4F A2F G241@ + [Here with acc = 0 after printing one row] + A243@ A2F T243@ [skip next element in array] + O24@ O25@ [print CR, LF] + A5F A2F E295@ + T5F + [Print row for vertical walls] + S@ + T4F + H14@ + [272] S14@ + [273] C1H [planted; loaded as C1H] + G277@ + A23@ G279@ + [277] T1F [clear acc] + A10@ [colon in figures mode] + [279] TF OF [print colon or space] + A273@ A2F T273@ [update C order] + A4F A2F [inc negative counter for inner loop] + E292@ [jump out of loop if counter = 0] + T4F [update counter] + O23@ O23@ O23@ [print 3 spaces] + E272@ +[Exit from inner loop for vertical walls] + [292] O24@ O25@ [print CR, LF] + E237@ +[Exit] + [295] O22@ [dummy character to flush print buffer] + [296] ZF [(1) halt program (2) plus sign in figures mode] + +[==================== Generator for pseudo-random numbers ===========] +[Linear congruential generator, same algorithm as Delphi 7 LCG + 38 locations] + E25K TG + GKG10@G15@T2#ZPFT2ZI514DP257FT4#ZPFT4ZPDPFT6#ZPFT6ZPFRFA6#@S4#@ + T6#@E25FE8ZPFT8ZPFPFA3FT14@A4DT8#@ZFA3FT37@H2#@V8#@L512FL512F + L1024FA4#@T8#@H6#@C8#@T8#@S4DG32@TDA8#@E35@H4DTDV8#@L1FTDZF + +[==================== LIBRARY SUBROUTINE ============================] + E25K TN +[R4 Input of one signed integer. + 22 storage locations; working positions 4, 5, and 6.] + GKA3FT21@T4DH6@E11@P5DJFT6FVDL4FA4DTDI4FA4FS5@G7@S5@G20@SDTDT6FEF + +[===================================================================] +[The following, without the comments and white space, might have + been input from a separate tape.] + E25K TX GK + EZ [define entry point] + PF [acc = 0 on entry] +[Integers supplied by user: maze width, maze height, seed for LCG. + To be read by library subroutine R4; sign comes after value.] + 12+8+987654321+ diff --git a/Task/Maze-generation/Sidef/maze-generation.sidef b/Task/Maze-generation/Sidef/maze-generation.sidef index ac20bd4596..6f908213f0 100644 --- a/Task/Maze-generation/Sidef/maze-generation.sidef +++ b/Task/Maze-generation/Sidef/maze-generation.sidef @@ -7,8 +7,8 @@ var ver = (1..h -> map {["| "] * w }) var hor = (0..h -> map {["+--"] * w }) func walk(x, y) { - cell[y][x] = false; - avail-- > 0 || return; # no more bottles, er, cells + cell[y][x] = false + avail-- > 0 || return nil # no more cells var d = [[-1, 0], [0, 1], [1, 0], [0, -1]] while (!d.is_empty) { diff --git a/Task/McNuggets-problem/8080-Assembly/mcnuggets-problem.8080 b/Task/McNuggets-problem/8080-Assembly/mcnuggets-problem.8080 new file mode 100644 index 0000000000..72a6cd1c94 --- /dev/null +++ b/Task/McNuggets-problem/8080-Assembly/mcnuggets-problem.8080 @@ -0,0 +1,43 @@ + org 100h + lxi h,200h ; Zero out a page to keep nugget flags + xra a +znugs: mov m,a + inr l + jnz znugs + lxi b,101 ; B = 6 stepper, C = 101 (limit) +loopa: mov d,b ; D = 9 stepper +loopb: mov l,d ; L = 20 stepper +loopc: inr m ; Mark nugget + mvi a,20 ; 20 step + add l + mov l,a + cmp c + jc loopc + mvi a,9 ; 9 step + add d + mov d,a + cmp c + jc loopb + mvi a,6 ; 6 step + add b + mov b,a + cmp c + jc loopa + mov l,c ; Find largest number not seen +scan: dcr l + dcr m + jp scan + mov a,l + mvi b,'0'-1 ; B = high digit +digit: inr b + sui 10 + jnc digit + adi '0'+10 ; A = low digit + lxi h,digits+1 + mov m,a ; Store digits + dcx h + mov m,b + xchg + mvi c,9 ; CP/M print string + jmp 5 +digits: db 0,0,'$' ; Placeholder for output diff --git a/Task/McNuggets-problem/EasyLang/mcnuggets-problem.easy b/Task/McNuggets-problem/EasyLang/mcnuggets-problem.easy new file mode 100644 index 0000000000..16fb638242 --- /dev/null +++ b/Task/McNuggets-problem/EasyLang/mcnuggets-problem.easy @@ -0,0 +1,17 @@ +len l[] 100 +for a = 0 to 100 div 6 + for b = 0 to 100 div 9 + for c = 0 to 100 div 20 + n = a * 6 + b * 9 + c * 20 + if n >= 1 and n <= 100 + l[n] = 1 + . + . + . +. +for n = 100 downto 1 + if l[n] = 0 + print n + break 1 + . +. diff --git a/Task/McNuggets-problem/Gambas/mcnuggets-problem.gambas b/Task/McNuggets-problem/Gambas/mcnuggets-problem.gambas new file mode 100644 index 0000000000..6b5d0f0c32 --- /dev/null +++ b/Task/McNuggets-problem/Gambas/mcnuggets-problem.gambas @@ -0,0 +1,22 @@ +Public l[101] As Integer + +Public Sub Main() + + Dim a As Integer, b As Integer, c As Integer, n As Integer + + For a = 0 To 100 / 6 + For b = 0 To 100 / 9 + For c = 0 To 100 / 20 + n = a * 6 + b * 9 + c * 20 + If n <= 100 Then l[n] = True + Next + Next + Next + For n = 100 To 1 Step -1 + If Not l[n] Then + Print "Maximum non-McNuggets number is: "; n + Break + End If + Next + +End diff --git a/Task/McNuggets-problem/MACRO-11/mcnuggets-problem.macro11 b/Task/McNuggets-problem/MACRO-11/mcnuggets-problem.macro11 new file mode 100644 index 0000000000..b1f01e1806 --- /dev/null +++ b/Task/McNuggets-problem/MACRO-11/mcnuggets-problem.macro11 @@ -0,0 +1,35 @@ + .TITLE NUGGET + .MCALL .TTYOUT,.EXIT +NUGGET::MOV #^D50,R1 + MOV #NUGBUF,R0 +CLEAR: CLR (R0)+ ; CLEAR BUFFER + SOB R1,CLEAR +MARK: MOV #^D100,R5 ; R5 = LIMIT + CLR R0 ; R0 = 6 STEPPER +1$: MOV R0,R1 ; R1 = 9 STEPPER +2$: MOV R1,R2 ; R2 = 20 STEPPER +3$: INCB NUGBUF(R2) ; MARK + ADD #^D20,R2 ; 20 STEP + CMP R2,R5 + BLT 3$ + ADD #^D9,R1 ; 9 STEP + CMP R1,R5 + BLT 2$ + ADD #^D6,R0 ; 6 STEP + CMP R0,R5 + BLT 1$ +SCAN: MOV #NUGBUF+^D100,R0 +1$: DEC R5 + MOVB -(R0),R1 + BNE 1$ +DIGIT: MOV #'0-1,R0 ; SPLIT DIGITS +1$: INC R0 + SUB #^D10,R5 + BCC 1$ + .TTYOUT ; HIGH DIGIT + MOV R5,R0 + ADD #'0+^D10,R0 + .TTYOUT ; LOW DIGIT + .EXIT +NUGBUF: .BLKB ^D100 + .END NUGGET diff --git a/Task/McNuggets-problem/MiniScript/mcnuggets-problem.mini b/Task/McNuggets-problem/MiniScript/mcnuggets-problem.mini new file mode 100644 index 0000000000..f00ff7bed6 --- /dev/null +++ b/Task/McNuggets-problem/MiniScript/mcnuggets-problem.mini @@ -0,0 +1,12 @@ +n = range(0, 100) +for six in range(0, 100, 6) + for nine in range(0, 100, 9) + for twenty in range(0, 100, 20) + mcnuggets = six + nine + twenty + ix = n.indexOf(mcnuggets) + if ix != null then n.remove(ix) + end for + end for +end for + +print "The largest non-McNugget number is " + n[-1] diff --git a/Task/McNuggets-problem/Pascal/mcnuggets-problem.pas b/Task/McNuggets-problem/Pascal/mcnuggets-problem.pas new file mode 100644 index 0000000000..0d19616459 --- /dev/null +++ b/Task/McNuggets-problem/Pascal/mcnuggets-problem.pas @@ -0,0 +1,28 @@ +program McNuggets; + +{$mode objfpc}{$H+} + +const + ARRAY_SIZE_STEP = 20; // small, to demonstrate extending array dynamically +var + i, nr_consec : integer; + can_do : array of boolean; +begin + SetLength( can_do, ARRAY_SIZE_STEP); + can_do[0] := true; + nr_consec := 0; + i := 0; + repeat + inc(i); + if i >= Length( can_do) then SetLength( can_do, i + ARRAY_SIZE_STEP); + can_do[i] := ((i >= 6) and can_do[i - 6]) + or ((i >= 9) and can_do[i - 9]) + or ((i >= 20) and can_do[i - 20]); + if can_do[i] then begin + if can_do[i - 1] then inc( nr_consec) + else nr_consec := 1; + end + else nr_consec := 0; + until nr_consec = 6; + WriteLn ('Max that can''t be represented is ', i - 6); +end. diff --git a/Task/McNuggets-problem/SETL/mcnuggets-problem.setl b/Task/McNuggets-problem/SETL/mcnuggets-problem.setl new file mode 100644 index 0000000000..5667516977 --- /dev/null +++ b/Task/McNuggets-problem/SETL/mcnuggets-problem.setl @@ -0,0 +1,8 @@ +program mcnuggets; + nuggets := +/+/ {{{ x + y + z + : x in [0, 6..100] } + : y in [0, 9..100] } + : z in [0, 20..100] }; + + print(max/{n : n in [1..100] | not n in nuggets}); +end program; diff --git a/Task/McNuggets-problem/True-BASIC/mcnuggets-problem.basic b/Task/McNuggets-problem/True-BASIC/mcnuggets-problem.basic new file mode 100644 index 0000000000..982aa97188 --- /dev/null +++ b/Task/McNuggets-problem/True-BASIC/mcnuggets-problem.basic @@ -0,0 +1,22 @@ +OPTION BASE 0 +DIM nuggets(100) +FOR n = 0 TO 100 + LET nuggets(n) = 0 +NEXT n + +FOR six = 0 TO 100/6 + FOR nine = 0 TO 100/9 + FOR twenty = 0 TO 100/20 + LET n = six*6 + nine*9 + twenty*20 + IF n <= 100 THEN LET nuggets(n) = 1 + NEXT twenty + NEXT nine +NEXT six + +FOR n = 100 TO 1 STEP -1 + IF nuggets(n) <> 1 THEN + PRINT "Maximum non-McNuggets number is: "; n + EXIT FOR + END IF +NEXT n +END diff --git a/Task/Meissel-Mertens-constant/Perl/meissel-mertens-constant.pl b/Task/Meissel-Mertens-constant/Perl/meissel-mertens-constant.pl index 80e7ad38c5..ab4c4fb919 100644 --- a/Task/Meissel-Mertens-constant/Perl/meissel-mertens-constant.pl +++ b/Task/Meissel-Mertens-constant/Perl/meissel-mertens-constant.pl @@ -1,6 +1,6 @@ use v5.36; -use ntheory 'is_prime'; +use ntheory qw(forprimes); my $s; -is_prime $_ and $s += log(1 - 1/$_)+1/$_ for 2 .. 10**9; +forprimes { $s += log(1 - 1/$_)+1/$_ } 1e9; say my $result = $s + .57721566490153286; diff --git a/Task/Meissel-Mertens-constant/Sidef/meissel-mertens-constant.sidef b/Task/Meissel-Mertens-constant/Sidef/meissel-mertens-constant.sidef new file mode 100644 index 0000000000..d475d9de02 --- /dev/null +++ b/Task/Meissel-Mertens-constant/Sidef/meissel-mertens-constant.sidef @@ -0,0 +1,7 @@ +var sum = 0 +1e7.each_prime {|p| + with (1f/p) {|t| + sum += (log(1 - t) + t) + } +} +say sum+Num.EulerGamma diff --git a/Task/Mertens-function/SETL/mertens-function.setl b/Task/Mertens-function/SETL/mertens-function.setl new file mode 100644 index 0000000000..99257965dd --- /dev/null +++ b/Task/Mertens-function/SETL/mertens-function.setl @@ -0,0 +1,19 @@ +program mertens; + m := [1] * 1000; + loop for n in [1..#m] do + m(n) -:= 0 +/[m(n div k) : k in [2..n]]; + end loop; + + print("The first 99 Mertens numbers:"); + putchar(" "); + loop for n in [1..99] do + putchar(lpad(str m(n), 3)); + if n mod 10=9 then print; end if; + end loop; + + zero := #[n : n in [1..#m] | m(n) = 0]; + cross := #[n : n in [1..#m] | m(n) = 0 and m(n-1) /= 0]; + + print("M(N) is zero " + str zero + " times."); + print("M(N) crosses zero " + str cross + " times."); +end program; diff --git a/Task/Middle-three-digits/Amazing-Hopper/middle-three-digits-1.hopper b/Task/Middle-three-digits/Amazing-Hopper/middle-three-digits-1.hopper new file mode 100644 index 0000000000..d5bf153211 --- /dev/null +++ b/Task/Middle-three-digits/Amazing-Hopper/middle-three-digits-1.hopper @@ -0,0 +1,21 @@ +#include + +algoritmo + + n=0, c="" + temp = 0, candidatos={} + + '123, 12345, 1234567, 987654321, 10001, -10001,-123' + '-100, 100, -12345,1, 2, -1, -10, 2002, -2002, 0' + enlistar en 'candidatos' + + decimales '0' + + #basic{ + temp = string(candidatos * sign(candidatos)) + n = len( temp ) + c = replicate (temp, n>=3 && not(is even(n))) + toksep(NL) + print (cat( lpad(" ",11,string(candidatos)), cat(" : ", copy( 3, (n/2-1), c ))),NL) + } +terminar diff --git a/Task/Middle-three-digits/Amazing-Hopper/middle-three-digits-2.hopper b/Task/Middle-three-digits/Amazing-Hopper/middle-three-digits-2.hopper new file mode 100644 index 0000000000..7197fb204e --- /dev/null +++ b/Task/Middle-three-digits/Amazing-Hopper/middle-three-digits-2.hopper @@ -0,0 +1,25 @@ +#include + +algoritmo + + n=0, c="", + temp = 0, candidatos={} + + '123, 12345, 1234567, 987654321, 10001, -10001,-123' + '-100, 100, -12345,1, 2, -1, -10, 2002, -2002, 0' + enlistar en 'candidatos' + + decimales '0' + + tomar 'candidatos', quitar el signo + convertir a cadena ---retener---, obtener largo, mover a 'n', + guardar en 'temp' + + guardar ' replicar ( temp, #(n>=3 && not(is even(n))))' en 'c' + token.separador(NL) + + justificar derecha(11,#(string(candidatos))), " : ", concatenar esto + #( copy( 3, (n/2-1), c ) ), unir esto + + luego imprime +terminar diff --git a/Task/Middle-three-digits/Amazing-Hopper/middle-three-digits-3.hopper b/Task/Middle-three-digits/Amazing-Hopper/middle-three-digits-3.hopper new file mode 100644 index 0000000000..d3f2017f3b --- /dev/null +++ b/Task/Middle-three-digits/Amazing-Hopper/middle-three-digits-3.hopper @@ -0,0 +1,29 @@ +#include + +algoritmo + + n=0, c="", m=0, + candidatos={} + + '123, 12345, 1234567, 987654321, 10001, -10001,-123' + '-100, 100, -12345,1, 2, -1, -10, 2002, -2002, 0' + enlistar en 'candidatos' + + decimales '0' + para cada elemento (v,candidatos,17) + tomar'v' ---copiar en 'm'---, quitar el signo + guardar en 'v' + + #(len( c:=(string(v)) ) ), mover a 'n' + "Num: ",justificar derecha(10,#(string(m))),"(",n,")\t" + + si ' #( n>=3 && not(is even(n))) ' + " puede ser procesado : " + tomar si ( #(n==3), 'c', #( copy( 3, (n/2-1), c )) ), NL + sino + "no puede ser procesado\n" + fin si + luego imprime + siguiente + +terminar diff --git a/Task/Middle-three-digits/Elena/middle-three-digits.elena b/Task/Middle-three-digits/Elena/middle-three-digits.elena index 7ca5e71938..1a5cbb174f 100644 --- a/Task/Middle-three-digits/Elena/middle-three-digits.elena +++ b/Task/Middle-three-digits/Elena/middle-three-digits.elena @@ -24,6 +24,6 @@ public program() new int[]{123, 12345, 1234567, 987654321, 10001, -10001, -123, -100, 100, -12345, 1, 2, -1, -10, 2002, -2002, 0} .forEach:(n) { - console.printLine("middleThreeDigits(",n,"):",middleThreeDigits(n) | on:(e => e.Message)) + console.printLine("middleThreeDigits(",n,"):",middleThreeDigits(n) \\ on:(e => e.Message)) } } diff --git a/Task/Minimum-multiple-of-m-where-digital-sum-equals-m/Chipmunk-Basic/minimum-multiple-of-m-where-digital-sum-equals-m.basic b/Task/Minimum-multiple-of-m-where-digital-sum-equals-m/Chipmunk-Basic/minimum-multiple-of-m-where-digital-sum-equals-m.basic new file mode 100644 index 0000000000..5c05faf5c0 --- /dev/null +++ b/Task/Minimum-multiple-of-m-where-digital-sum-equals-m/Chipmunk-Basic/minimum-multiple-of-m-where-digital-sum-equals-m.basic @@ -0,0 +1,21 @@ +100 cls +110 c = 0 +120 n = 1 +130 while c < 70 +140 m = 1 +150 while 1 +160 nm = n*m +170 t = 0 +180 while nm +190 t = t + nm mod 10 +200 nm = floor(nm / 10) +210 wend +220 if t = n then exit while +230 m = m +1 +240 wend +260 c = c +1 +270 print using "########"; m; +280 if c mod 10 = 0 then print +290 n = n +1 +300 wend +310 end diff --git a/Task/Minimum-multiple-of-m-where-digital-sum-equals-m/EasyLang/minimum-multiple-of-m-where-digital-sum-equals-m.easy b/Task/Minimum-multiple-of-m-where-digital-sum-equals-m/EasyLang/minimum-multiple-of-m-where-digital-sum-equals-m.easy new file mode 100644 index 0000000000..e2116740cb --- /dev/null +++ b/Task/Minimum-multiple-of-m-where-digital-sum-equals-m/EasyLang/minimum-multiple-of-m-where-digital-sum-equals-m.easy @@ -0,0 +1,17 @@ +fastfunc f n . + m = 1 + repeat + h = m * n + sum = 0 + while h > 0 + sum += h mod 10 + h = h div 10 + . + until sum = n + m += 1 + . + return m +. +for n = 1 to 70 + write f n & " " +. diff --git a/Task/Minimum-multiple-of-m-where-digital-sum-equals-m/Gambas/minimum-multiple-of-m-where-digital-sum-equals-m.gambas b/Task/Minimum-multiple-of-m-where-digital-sum-equals-m/Gambas/minimum-multiple-of-m-where-digital-sum-equals-m.gambas new file mode 100644 index 0000000000..5f2494c23b --- /dev/null +++ b/Task/Minimum-multiple-of-m-where-digital-sum-equals-m/Gambas/minimum-multiple-of-m-where-digital-sum-equals-m.gambas @@ -0,0 +1,22 @@ +Public Sub Main() + + Dim c As Integer = 0, n As Integer = 1 + + Do While c < 70 + Dim m As Integer = 1 + Do + Dim nm As Integer = n * m, t As Integer = 0 + While nm + t += nm Mod 10 + nm = Floor(nm / 10) + Wend + If t = n Then Break + m += 1 + Loop + c += 1 + Print Format(m, "######## "); + If c Mod 10 = 0 Then Print + n += 1 + Loop + +End diff --git a/Task/Minimum-multiple-of-m-where-digital-sum-equals-m/SETL/minimum-multiple-of-m-where-digital-sum-equals-m.setl b/Task/Minimum-multiple-of-m-where-digital-sum-equals-m/SETL/minimum-multiple-of-m-where-digital-sum-equals-m.setl new file mode 100644 index 0000000000..2eb118ba0a --- /dev/null +++ b/Task/Minimum-multiple-of-m-where-digital-sum-equals-m/SETL/minimum-multiple-of-m-where-digital-sum-equals-m.setl @@ -0,0 +1,16 @@ +program minimum_multiple_of_m_where_digit_sum_equals_m; + loop for n in [1..70] do + putchar(lpad(str minmult n, 9)); + if n mod 10=0 then print; end if; + end loop; + + op minmult(m); + n := 1; + (while digsum(n*m) /= m) n +:= 1; end; + return n; + end op; + + op digsum(n); + return +/[[n mod 10, n div:=10](1) : until n=0]; + end op; +end program; diff --git a/Task/Minimum-multiple-of-m-where-digital-sum-equals-m/True-BASIC/minimum-multiple-of-m-where-digital-sum-equals-m.basic b/Task/Minimum-multiple-of-m-where-digital-sum-equals-m/True-BASIC/minimum-multiple-of-m-where-digital-sum-equals-m.basic new file mode 100644 index 0000000000..fa985dd897 --- /dev/null +++ b/Task/Minimum-multiple-of-m-where-digital-sum-equals-m/True-BASIC/minimum-multiple-of-m-where-digital-sum-equals-m.basic @@ -0,0 +1,21 @@ +LET c = 0 +LET n = 1 + +DO WHILE c < 70 + LET m = 1 + DO + LET nm = n*m + LET t = 0 + DO WHILE nm<>0 + LET t = t+REMAINDER(nm,10) + LET nm = IP(nm/10) + LOOP + IF t = n THEN EXIT DO + LET m = m+1 + LOOP + LET c = c+1 + PRINT USING "######## ": m; + IF REMAINDER(c,10) = 0 THEN PRINT + LET n = n+1 +LOOP +END diff --git a/Task/Minimum-multiple-of-m-where-digital-sum-equals-m/XBasic/minimum-multiple-of-m-where-digital-sum-equals-m.basic b/Task/Minimum-multiple-of-m-where-digital-sum-equals-m/XBasic/minimum-multiple-of-m-where-digital-sum-equals-m.basic new file mode 100644 index 0000000000..839b72d036 --- /dev/null +++ b/Task/Minimum-multiple-of-m-where-digital-sum-equals-m/XBasic/minimum-multiple-of-m-where-digital-sum-equals-m.basic @@ -0,0 +1,27 @@ +PROGRAM "program name" +VERSION "0.0000" + +DECLARE FUNCTION Entry () + +FUNCTION Entry () + c = 0 + n = 1 + DO WHILE c < 70 + m = 1 + DO WHILE 1 + nm = n * m + t = 0 + DO WHILE nm + t = t + nm MOD 10 + nm = INT((nm / 10)+.5) + LOOP + IF t = n THEN EXIT DO + INC m + LOOP + INC c + PRINT FORMAT$("######## ", m); + IF c MOD 10 = 0 THEN PRINT + INC n + LOOP +END FUNCTION +END PROGRAM diff --git a/Task/Modular-inverse/Python/modular-inverse-1.py b/Task/Modular-inverse/Python/modular-inverse-1.py index bd9e52904c..98064c095c 100644 --- a/Task/Modular-inverse/Python/modular-inverse-1.py +++ b/Task/Modular-inverse/Python/modular-inverse-1.py @@ -1,18 +1,2 @@ ->>> def extended_gcd(aa, bb): - lastremainder, remainder = abs(aa), abs(bb) - x, lastx, y, lasty = 0, 1, 1, 0 - while remainder: - lastremainder, (quotient, remainder) = remainder, divmod(lastremainder, remainder) - x, lastx = lastx - quotient*x, x - y, lasty = lasty - quotient*y, y - return lastremainder, lastx * (-1 if aa < 0 else 1), lasty * (-1 if bb < 0 else 1) - ->>> def modinv(a, m): - g, x, y = extended_gcd(a, m) - if g != 1: - raise ValueError - return x % m - ->>> modinv(42, 2017) +>>> pow(42, -1, 2017) 1969 ->>> diff --git a/Task/Modular-inverse/Python/modular-inverse-2.py b/Task/Modular-inverse/Python/modular-inverse-2.py index 60ef510a52..bd9e52904c 100644 --- a/Task/Modular-inverse/Python/modular-inverse-2.py +++ b/Task/Modular-inverse/Python/modular-inverse-2.py @@ -1,91 +1,18 @@ -from functools import (reduce) -from itertools import (chain) +>>> def extended_gcd(aa, bb): + lastremainder, remainder = abs(aa), abs(bb) + x, lastx, y, lasty = 0, 1, 1, 0 + while remainder: + lastremainder, (quotient, remainder) = remainder, divmod(lastremainder, remainder) + x, lastx = lastx - quotient*x, x + y, lasty = lasty - quotient*y, y + return lastremainder, lastx * (-1 if aa < 0 else 1), lasty * (-1 if bb < 0 else 1) +>>> def modinv(a, m): + g, x, y = extended_gcd(a, m) + if g != 1: + raise ValueError + return x % m -# modInv :: Int -> Int -> Maybe Int -def modInv(a): - return lambda m: ( - lambda ig=gcdExt(a)(m): ( - lambda i=ig[0]: ( - Just(i + m if 0 > i else i) if 1 == ig[2] else ( - Nothing() - ) - ) - )() - )() - - -# gcdExt :: Int -> Int -> (Int, Int, Int) -def gcdExt(x): - def go(a, b): - if 0 == b: - return (1, 0, a) - else: - (q, r) = divmod(a, b) - (s, t, g) = go(b, r) - return (t, s - q * t, g) - return lambda y: go(x, y) - - -# TEST --------------------------------------------------- - -# Numbers between 2010 and 2015 which do yield modular inverses for 42: - -# main :: IO () -def main(): - print ( - mapMaybe( - lambda y: bindMay(modInv(42)(y))( - lambda mInv: Just((y, mInv)) - ) - )( - enumFromTo(2010)(2025) - ) - ) - -# -> [(2011, 814), (2015, 48), (2017, 1969), (2021, 1203)] - - -# GENERIC ABSTRACTIONS ------------------------------------ - - -# enumFromTo :: Int -> Int -> [Int] -def enumFromTo(m): - return lambda n: list(range(m, 1 + n)) - - -# bindMay (>>=) :: Maybe a -> (a -> Maybe b) -> Maybe b -def bindMay(m): - return lambda mf: ( - m if m.get('Nothing') else mf(m.get('Just')) - ) - - -# Just :: a -> Maybe a -def Just(x): - return {'type': 'Maybe', 'Nothing': False, 'Just': x} - - -# mapMaybe :: (a -> Maybe b) -> [a] -> [b] -def mapMaybe(mf): - return lambda xs: reduce( - lambda a, x: maybe(a)(lambda j: a + [j])(mf(x)), - xs, - [] - ) - - -# maybe :: b -> (a -> b) -> Maybe a -> b -def maybe(v): - return lambda f: lambda m: v if m.get('Nothing') else ( - f(m.get('Just')) - ) - - -# Nothing :: Maybe a -def Nothing(): - return {'type': 'Maybe', 'Nothing': True} - - -# MAIN --- -main() +>>> modinv(42, 2017) +1969 +>>> diff --git a/Task/Modular-inverse/Python/modular-inverse-3.py b/Task/Modular-inverse/Python/modular-inverse-3.py new file mode 100644 index 0000000000..60ef510a52 --- /dev/null +++ b/Task/Modular-inverse/Python/modular-inverse-3.py @@ -0,0 +1,91 @@ +from functools import (reduce) +from itertools import (chain) + + +# modInv :: Int -> Int -> Maybe Int +def modInv(a): + return lambda m: ( + lambda ig=gcdExt(a)(m): ( + lambda i=ig[0]: ( + Just(i + m if 0 > i else i) if 1 == ig[2] else ( + Nothing() + ) + ) + )() + )() + + +# gcdExt :: Int -> Int -> (Int, Int, Int) +def gcdExt(x): + def go(a, b): + if 0 == b: + return (1, 0, a) + else: + (q, r) = divmod(a, b) + (s, t, g) = go(b, r) + return (t, s - q * t, g) + return lambda y: go(x, y) + + +# TEST --------------------------------------------------- + +# Numbers between 2010 and 2015 which do yield modular inverses for 42: + +# main :: IO () +def main(): + print ( + mapMaybe( + lambda y: bindMay(modInv(42)(y))( + lambda mInv: Just((y, mInv)) + ) + )( + enumFromTo(2010)(2025) + ) + ) + +# -> [(2011, 814), (2015, 48), (2017, 1969), (2021, 1203)] + + +# GENERIC ABSTRACTIONS ------------------------------------ + + +# enumFromTo :: Int -> Int -> [Int] +def enumFromTo(m): + return lambda n: list(range(m, 1 + n)) + + +# bindMay (>>=) :: Maybe a -> (a -> Maybe b) -> Maybe b +def bindMay(m): + return lambda mf: ( + m if m.get('Nothing') else mf(m.get('Just')) + ) + + +# Just :: a -> Maybe a +def Just(x): + return {'type': 'Maybe', 'Nothing': False, 'Just': x} + + +# mapMaybe :: (a -> Maybe b) -> [a] -> [b] +def mapMaybe(mf): + return lambda xs: reduce( + lambda a, x: maybe(a)(lambda j: a + [j])(mf(x)), + xs, + [] + ) + + +# maybe :: b -> (a -> b) -> Maybe a -> b +def maybe(v): + return lambda f: lambda m: v if m.get('Nothing') else ( + f(m.get('Just')) + ) + + +# Nothing :: Maybe a +def Nothing(): + return {'type': 'Maybe', 'Nothing': True} + + +# MAIN --- +main() diff --git a/Task/Modular-inverse/Quackery/modular-inverse.quackery b/Task/Modular-inverse/Quackery/modular-inverse-1.quackery similarity index 100% rename from Task/Modular-inverse/Quackery/modular-inverse.quackery rename to Task/Modular-inverse/Quackery/modular-inverse-1.quackery diff --git a/Task/Modular-inverse/Quackery/modular-inverse-2.quackery b/Task/Modular-inverse/Quackery/modular-inverse-2.quackery new file mode 100644 index 0000000000..2ce999def8 --- /dev/null +++ b/Task/Modular-inverse/Quackery/modular-inverse-2.quackery @@ -0,0 +1,25 @@ + [ dup 0 = iff + [ 2drop 1 0 ] + done + dup unrot /mod + dip swap recurse + tuck 2swap * + dip swap - ] is egcd ( n n --> n n ) + + [ dup 0 < if negate + over 0 < if + [ swap negate + over tuck mod + - swap ] + dup rot 2dup egcd + 2swap 2over rot * + unrot * + 1 != iff + [ drop 2drop -1 ] + done + nip swap mod ] is modinv ( n n --> n ) + +say " 42 2017 modinv --> " 42 2017 modinv echo cr ( --> 1969 ) +say " 40 1 modinv --> " 40 1 modinv echo cr ( --> 0 ) +say " 52 -217 modinv --> " 52 -217 modinv echo cr ( --> 96 ) +say "-486 217 modinv --> " -486 217 modinv echo cr ( --> 121 ) +say " 40 2018 modinv --> " 40 2018 modinv echo cr ( --> -1 ) diff --git a/Task/Monte-Carlo-methods/J/monte-carlo-methods-4.j b/Task/Monte-Carlo-methods/J/monte-carlo-methods-4.j new file mode 100644 index 0000000000..498eaaec88 --- /dev/null +++ b/Task/Monte-Carlo-methods/J/monte-carlo-methods-4.j @@ -0,0 +1,9 @@ +pimct=. (4 * +/ % #)@:(1 >: |)@:(? j. ?)@:($&0)"0 + + (,. pimct) 10 ^ 3 + i.6 + 1000 3.168 + 10000 3.122 +100000 3.13596 + 1e6 3.1428 + 1e7 3.14158 + 1e8 3.14154 diff --git a/Task/Morse-code/Chipmunk-Basic/morse-code.basic b/Task/Morse-code/Chipmunk-Basic/morse-code.basic new file mode 100644 index 0000000000..5d1c48c490 --- /dev/null +++ b/Task/Morse-code/Chipmunk-Basic/morse-code.basic @@ -0,0 +1,24 @@ +10 rem Morse code +20 dim c$(54) +30 for f = 1 to 54 +40 read l$ : read m$ +50 d$ = d$+l$ : c$(f) = m$ +60 next f +100 line input "Message? ";t$ +105 t$ = ucase$(t$) +110 for f = 1 to len(t$) +120 p = instr(d$,mid$(t$,f,1)) +130 if p > 0 then print c$(p); else print "?"; +140 next f +150 print +160 goto 100 +1000 data "A","._","B","_...","C","_._.","D","_..","E",".","F",".._." +1010 data "G","__.","H","....","I","..","J",".___","K","_._","L","._.." +1020 data "M","__","N","_.","O","___","P",".__.","Q","__._","R","._." +1030 data "S","...","T","_","U",".._","V","..._","W",".__","X","_.._" +1040 data "Y","_.__","Z","__..","1",".____","2","..___","3","...__" +1050 data "4","...._","5",".....","6","_....","7","__...","8","___.." +1060 data "9","____.","0","_____",".","._._._",",","__..__","?","..__.." +1070 data "'",".____.","!","_._.__","/","_.._.","(","_.__.",")","_.__._" +1080 data "&","._...",":","___...",";","_._._.","=","_..._","+","._._.","-","_...._" +1090 data "_","..__._","\","._.._.","$","..._.._","@",".__._." diff --git a/Task/Morse-code/Quackery/morse-code.quackery b/Task/Morse-code/Quackery/morse-code.quackery new file mode 100644 index 0000000000..0092915de3 --- /dev/null +++ b/Task/Morse-code/Quackery/morse-code.quackery @@ -0,0 +1,44 @@ + [ $ / +import subprocess +subprocess.run(["say", +string_from_stack()]) + / python ] is speak ( $ --> ) + + [ 3 times [ $ " " speak ] ] is pause ( --> ) + + [ [] swap witheach + [ char - = iff + [ $ "dash " join ] + else [ $ "dot " join ] ] + space join ] is dotdash ( $ --> $ ) + + [ table ] is letter ( n --> $ ) + $ ".- -... -.-. -.. . ..-. + --. .... .. .--- -.- + .-.. -- -. --- .--. + --.- .-. ... - ..- ...- + .-- -..- -.-- --.." + nest$ witheach + [ dotdash ' letter put ] + + + [ table ] is number ( n --> $ ) + $ "----- .---- ..--- ...-- + ....- ..... -.... --... + ---.. ----." + nest$ witheach + [ dotdash ' number put ] + + [ witheach + [ dup space = iff + [ drop pause ] done + dup char 0 char 9 1+ + within iff + [ char 0 - + number speak ] done + upper + dup char A char Z 1+ + within iff + [ char A - + letter speak ] done + drop ] ] is morse ( $ --> ) diff --git a/Task/Motzkin-numbers/EasyLang/motzkin-numbers.easy b/Task/Motzkin-numbers/EasyLang/motzkin-numbers.easy new file mode 100644 index 0000000000..1f7f417988 --- /dev/null +++ b/Task/Motzkin-numbers/EasyLang/motzkin-numbers.easy @@ -0,0 +1,25 @@ +fastfunc isprim num . + i = 2 + while i <= sqrt num + if num mod i = 0 + return 0 + . + i += 1 + . + return 1 +. +m[] = [ 1 1 ] +print 1 ; print 1 +len m[] 39 +arrbase m[] 0 +for n = 2 to 38 + m[n] = m[n - 1] + for i = 0 to n - 2 + m[n] += m[i] * m[n - 2 - i] + . + if isprim m[n] = 1 + print m[n] & " is a prime" + else + print m[n] + . +. diff --git a/Task/Motzkin-numbers/Maxima/motzkin-numbers.maxima b/Task/Motzkin-numbers/Maxima/motzkin-numbers.maxima new file mode 100644 index 0000000000..e240a156e0 --- /dev/null +++ b/Task/Motzkin-numbers/Maxima/motzkin-numbers.maxima @@ -0,0 +1,8 @@ +motzkin[0]:1$ +motzkin[1]:1$ +motzkin[n]:=((2*n+1)*motzkin[n-1]+(3*n-3)*motzkin[n-2])/(n+2)$ + +/* Test cases */ +makelist(motzkin[i],i,0,41); + +sublist(%,primep); diff --git a/Task/Mouse-position/Uxntal/mouse-position.uxnatl b/Task/Mouse-position/Uxntal/mouse-position.uxnatl new file mode 100644 index 0000000000..5e484335dd --- /dev/null +++ b/Task/Mouse-position/Uxntal/mouse-position.uxnatl @@ -0,0 +1,27 @@ +|00 @System &vector $2 &expansion $2 &wst $1 &rst $1 &metadata $2 &r $2 &g $2 &b $2 &debug $1 &state $1 +|10 @Console &vector $2 &read $1 &pad $4 &type $1 &write $1 &error $1 +|20 @Screen &vector $2 &width $2 &height $2 &auto $1 &pad $1 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1 +|90 @Mouse &vector $2 &x $2 &y $2 &state $1 &pad $3 &scrollx $2 &scrolly $2 + +|0100 + ;on-mouse .Mouse/vector DEO2 +BRK + +@on-mouse + .Mouse/x DEI2 print-hex2 + #20 .Console/write DEO + .Mouse/y DEI2 print-hex2 + #0a .Console/write DEO +BRK + +@print-hex + DUP #04 SFT print-digit #0f AND print-digit +JMP2r + +@print-hex2 + SWP print-hex print-hex +JMP2r + +@print-digit + DUP #09 GTH #27 MUL ADD #30 ADD .Console/write DEO +JMP2r diff --git a/Task/Multifactorial/AppleScript/multifactorial-1.applescript b/Task/Multifactorial/AppleScript/multifactorial-1.applescript new file mode 100644 index 0000000000..53ee0b2088 --- /dev/null +++ b/Task/Multifactorial/AppleScript/multifactorial-1.applescript @@ -0,0 +1,21 @@ +on multifactorial(n, d) + set f to 1 + repeat with n from n to 2 by -d + set f to f * n + end repeat + return f +end multifactorial + +on task() + set table to "" + repeat with degree from 1 to 5 + set row to linefeed & "Degree " & degree & ":" + repeat with n from 1 to 10 + set row to row & (space & multifactorial(n, degree)) + end repeat + set table to table & row + end repeat + return table +end task + +task() diff --git a/Task/Multifactorial/AppleScript/multifactorial-2.applescript b/Task/Multifactorial/AppleScript/multifactorial-2.applescript new file mode 100644 index 0000000000..c55bc51e53 --- /dev/null +++ b/Task/Multifactorial/AppleScript/multifactorial-2.applescript @@ -0,0 +1,6 @@ +" +Degree 1: 1 2 6 24 120 720 5040 40320 362880 3628800 +Degree 2: 1 2 3 8 15 48 105 384 945 3840 +Degree 3: 1 2 3 4 10 18 28 80 162 280 +Degree 4: 1 2 3 4 5 12 21 32 45 120 +Degree 5: 1 2 3 4 5 6 14 24 36 50" diff --git a/Task/Multifactorial/BQN/multifactorial.bqn b/Task/Multifactorial/BQN/multifactorial.bqn new file mode 100644 index 0000000000..6a871a9b7c --- /dev/null +++ b/Task/Multifactorial/BQN/multifactorial.bqn @@ -0,0 +1,3 @@ +MultiFact ← ×´⊣-↕∘⌈∘÷×⊢ + +MultiFact⌜⟜(5⊸↑) 1+↕10 diff --git a/Task/Multifactorial/Cowgol/multifactorial.cowgol b/Task/Multifactorial/Cowgol/multifactorial.cowgol new file mode 100644 index 0000000000..86727a6008 --- /dev/null +++ b/Task/Multifactorial/Cowgol/multifactorial.cowgol @@ -0,0 +1,24 @@ +include "cowgol.coh"; + +sub multifac(n: uint32, d: uint32): (r: uint32) is + r := 1; + loop + r := r * n; + if n <= d then break; end if; + n := n - d; + end loop; +end sub; + +var d: uint32 := 1; +while d <= 5 loop + print_i32(d); + print(": "); + var n: uint32 := 1; + while n <= 10 loop + print_i32(multifac(n, d)); + print(" "); + n := n + 1; + end loop; + print_nl(); + d := d + 1; +end loop; diff --git a/Task/Multifactorial/EasyLang/multifactorial.easy b/Task/Multifactorial/EasyLang/multifactorial.easy new file mode 100644 index 0000000000..8ddd7f4b88 --- /dev/null +++ b/Task/Multifactorial/EasyLang/multifactorial.easy @@ -0,0 +1,15 @@ +func mfact n k . + r = 1 + while n > 1 + r *= n + n -= k + . + return r +. +for k = 1 to 5 + write "degree " & k & ":" + for n = 1 to 10 + write " " & mfact n k + . + print "" +. diff --git a/Task/Multifactorial/Maxima/multifactorial.maxima b/Task/Multifactorial/Maxima/multifactorial.maxima new file mode 100644 index 0000000000..dbf883e238 --- /dev/null +++ b/Task/Multifactorial/Maxima/multifactorial.maxima @@ -0,0 +1,8 @@ +multifactorial(x,n):=genfact(x,x/n,n)$ + +/* Test case */ +makelist(multifactorial(i,1),i,1,10); +makelist(multifactorial(i,2),i,1,10); +block(makelist(mod(i,3),i,1,10),at(%%,0=1),%%*makelist(multifactorial(i,3),i,1,10)); +block(makelist(mod(i,4),i,1,10),at(%%,0=1),%%*makelist(multifactorial(i,4),i,1,10)); +block(makelist(mod(i,5),i,1,10),at(%%,0=1),%%*makelist(multifactorial(i,5),i,1,10)); diff --git a/Task/Multifactorial/Ol/multifactorial-1.ol b/Task/Multifactorial/Ol/multifactorial-1.ol new file mode 100644 index 0000000000..39b9b79105 --- /dev/null +++ b/Task/Multifactorial/Ol/multifactorial-1.ol @@ -0,0 +1,13 @@ +(define (multifactorial n d) + (fold * 1 (iota (div n d) n (negate d)))) + +(for-each (lambda (i) + (display "Degree ") + (display i) + (display ":") + (for-each (lambda (n) + (display " ") + (display (multifactorial n i))) + (iota 10 1)) + (print)) + (iota 5 1)) diff --git a/Task/Multifactorial/Ol/multifactorial-2.ol b/Task/Multifactorial/Ol/multifactorial-2.ol new file mode 100644 index 0000000000..c3c6334522 --- /dev/null +++ b/Task/Multifactorial/Ol/multifactorial-2.ol @@ -0,0 +1,11 @@ +(define (!!!!! n) (multifactorial n 5)) +(print (!!!!! 74)) + +(import (math infix-notation)) +; register !!!!! as a postfix function +(define \\postfix-functions (put \\postfix-functions '!!!!! #t)) + +; now use "\\" as usual +(print (\\ + 2 + 74!!!!! +)) diff --git a/Task/Multifactorial/SETL/multifactorial.setl b/Task/Multifactorial/SETL/multifactorial.setl new file mode 100644 index 0000000000..6f57d6b3cb --- /dev/null +++ b/Task/Multifactorial/SETL/multifactorial.setl @@ -0,0 +1,9 @@ +program multifactorial; + loop for d in [1..5] do + print(d, ":", [multifac(n, d) : n in [1..10]]); + end loop; + + proc multifac(n, d); + return */{n, (n-d)..1}; + end proc; +end program; diff --git a/Task/Musical-scale/Python/musical-scale.py b/Task/Musical-scale/Python/musical-scale-1.py similarity index 100% rename from Task/Musical-scale/Python/musical-scale.py rename to Task/Musical-scale/Python/musical-scale-1.py diff --git a/Task/Musical-scale/Python/musical-scale-2.py b/Task/Musical-scale/Python/musical-scale-2.py new file mode 100644 index 0000000000..77dc2ea4e2 --- /dev/null +++ b/Task/Musical-scale/Python/musical-scale-2.py @@ -0,0 +1,48 @@ +import sys +import ctypes +import math +import time +import struct +import sdl2 +import sdl2.sdlmixer as mixer + + +def create_sound(frequency, duration): + """Create a buffer with sound at given frequency and duration""" + num_samples = int(48000 * duration) + wave = struct.pack( + f"<{num_samples}i", + *[ + int(2**30 * math.sin(2 * math.pi * frequency / 48000 * t)) + for t in range(num_samples) + ] + ) + length = num_samples * 4 + sound_buffer = (ctypes.c_ubyte * length).from_buffer_copy(wave) + sound = mixer.Mix_QuickLoad_RAW( + ctypes.cast(sound_buffer, ctypes.POINTER(ctypes.c_ubyte)), length + ) + return sound + + +def main(): + """Play sine wave""" + mixer.Mix_Init(0) + + mixer.Mix_OpenAudioDevice(48000, sdl2.AUDIO_S32, 1, 2048, None, 0) + + note = 261.63 + semitone = math.pow(2, 1 / 12) + duration = 0.5 # seconds + + for step in [0, 2, 2, 1, 2, 2, 2, 1]: + note *= semitone**step + sound = create_sound(note, duration) + mixer.Mix_PlayChannel(0, sound, 1) + time.sleep(duration) + + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/Task/Mutual-recursion/SETL/mutual-recursion.setl b/Task/Mutual-recursion/SETL/mutual-recursion.setl new file mode 100644 index 0000000000..c9259f0f94 --- /dev/null +++ b/Task/Mutual-recursion/SETL/mutual-recursion.setl @@ -0,0 +1,12 @@ +program mutual_recursion; + print("F", [f(n) : n in [0..14]]); + print("M", [m(n) : n in [0..14]]); + + proc f(n); + return {[0,1]}(n) ? n - m(f(n-1)); + end proc; + + proc m(n); + return {[0,0]}(n) ? n - f(m(n-1)); + end proc; +end program; diff --git a/Task/N-queens-problem/MiniScript/n-queens-problem.mini b/Task/N-queens-problem/MiniScript/n-queens-problem.mini new file mode 100644 index 0000000000..72ac620c8c --- /dev/null +++ b/Task/N-queens-problem/MiniScript/n-queens-problem.mini @@ -0,0 +1,88 @@ +clear +N = 8 +SOLUTIONCOUNT = 0 + +getTileDisplay = function + gfx.clear + queen = file.loadImage("/sys/pics/gamePieces/blackQueen.png") + gfx.color = color.white + gfx.fillRect 0, 0, 80, 80 + gfx.fillRect 160, 0, 80, 80 + gfx.color = color.brown + gfx.fillRect 80, 0, 80, 80 + gfx.fillRect 240, 0, 80, 80 + gfx.drawImage queen, 172, 14 + gfx.drawImage queen, 252, 14 + tiles = gfx.getImage(0,0, 320, 80) + gfx.clear + display(4).mode = displayMode.tile + td = display(4) + td.cellSize = 640 / N + td.extent = [N, N] + td.overlap = 0 + td.tileSet = tiles + td.tileSetTileSize = 80 + td.scrollX = -160 + td.clear + return td + +end function + +updateBoard = function(td, arr) + for y in range(0, N - 1) + ix = y % 2 + for x in range(0, N - 1) + td.setCell x, y, ix + ix += 1 + ix %= 2 + end for + end for + + y = 0 + for x in arr + td.setCell x, y, td.cell(x, y) + 2 + y += 1 + end for + yield +end function + +list.has = function(n) + return self.indexOf(n) != null +end function + +queens = function(n, i, a, b, c, td) + solutions = [] + updateBoard(td, a) + if i < n then + for j in range(0, n - 1) + if not a.has(j) and not b.has(i + j) and not c.has(i - j) then + solution = queens(n, i + 1, a + [j], b + [i + j], c + [i - j], td) + if solution != null then solutions += solution + end if + end for + else + globals.SOLUTIONCOUNT += 1 + text.row = 25 + text.print "SOLUTIONS" + text.print globals.SOLUTIONCOUNT + solutions.push(a) + end if + return solutions +end function + +td = getTileDisplay +solutions = queens(N, 0, [], [], [], td) +ix = 0 +while true + text.row = 25 + text.print "SOLUTION # " + text.print (ix + 1) + (" " * 10) + text.print + text.print char(17) + "/" + char(18) + " keys" + updateBoard(td, solutions[ix]) + k = key.get + kcode = code(k) + if kcode == 27 then break + ix = ix - (kcode == 17) + (kcode == 18) + solutions.len + ix %= solutions.len +end while diff --git a/Task/Nested-function/Elena/nested-function.elena b/Task/Nested-function/Elena/nested-function.elena index 2308d0f79f..effa3c6a28 100644 --- a/Task/Nested-function/Elena/nested-function.elena +++ b/Task/Nested-function/Elena/nested-function.elena @@ -4,7 +4,7 @@ MakeList(separator) { var counter := 1; - var makeItem := (item){ var retVal := counter.toPrintable() + separator + item + (forward newLine); counter += 1; ^ retVal }; + var makeItem := (item){ var retVal := counter.toPrintable() + separator + item + newLineConstant; counter += 1; ^ retVal }; ^ makeItem("first") + makeItem("second") + makeItem("third") } diff --git a/Task/Nth-root/Dart/nth-root.dart b/Task/Nth-root/Dart/nth-root.dart new file mode 100644 index 0000000000..74ddb21ee8 --- /dev/null +++ b/Task/Nth-root/Dart/nth-root.dart @@ -0,0 +1,11 @@ +import 'dart:math' show pow; + +num nroot(num value, num degree) { + return pow(value, (1 / degree)); +} + +void main() { + int n = 15; + num x = pow(-3.14159, 15); + print('root($n, $x) = ${nroot(n, x)}'); +} diff --git a/Task/Nth-root/Nu/nth-root.nu b/Task/Nth-root/Nu/nth-root.nu new file mode 100644 index 0000000000..77b8b0c28b --- /dev/null +++ b/Task/Nth-root/Nu/nth-root.nu @@ -0,0 +1,7 @@ +def "math root" [n] {$in ** (1 / $n)} + +1..10 | each {|it| + 1..10 | reduce --fold {index: $it} {|root acc| + $acc | insert $"root ($root)" ($it | math root $root | into string --decimals 4 ) + } +} diff --git a/Task/Nth/SETL/nth.setl b/Task/Nth/SETL/nth.setl new file mode 100644 index 0000000000..1fd9f9bab9 --- /dev/null +++ b/Task/Nth/SETL/nth.setl @@ -0,0 +1,23 @@ +program nth; + loop for r in [[0..25], [250..265], [1000..1025]] do + showrange(r); + end loop; + + proc showrange(r); + i := 0; + loop for s in [nth(n) : n in r] do + putchar(rpad(s, 8)); + if (i +:= 1) mod 6 = 0 then print(); end if; + end loop; + print(); + end proc; + + proc nth(n); + sfx := {[1,"st"], [2,"nd"], [3,"rd"]}; + return str n + + if n div 10 mod 10 = 1 + then "th" + else sfx(n mod 10) ? "th" + end if; + end proc; +end program; diff --git a/Task/Number-names/Quackery/number-names.quackery b/Task/Number-names/Quackery/number-names.quackery index b789911ce7..65f25e5730 100644 --- a/Task/Number-names/Quackery/number-names.quackery +++ b/Task/Number-names/Quackery/number-names.quackery @@ -1,4 +1,4 @@ - [ [ table +[ [ table $ "zero" $ "one" $ "two" $ "three" $ "four" $ "five" $ "six" $ "seven" $ "eight" @@ -6,13 +6,13 @@ $ "twelve" $ "thirteen" $ "fourteen" $ "fifteen" $ "sixteen" $ "seventeen" - $ "eighteen" $ "nineteen" ] do ] is units ( n --> $ ) + $ "eighteen" $ "nineteen" ] do ] is units ( n --> $ ) [ [ table $ "nonety" $ "tenty" $ "twenty" $ "thirty" $ "fourty" $ "fifty" $ "sixty" $ "seventy" $ "eighty" - $ "ninety" ] do ] is tens ( n --> $ ) + $ "ninety" ] do ] is tens ( n --> $ ) [ $ "" swap dup 99 > if @@ -29,11 +29,32 @@ over size 0 > if [ over -1 peek space != if [ dip [ space join ] ] ] - units join ] is triplet ( n --> $ ) + units join ] is triplet ( n --> $ ) [ $ "" swap + dup 999999999999999 > if + [ 1000000000000000 /mod swap triplet + $ " quadrillion" join + swap dip join + dup 0 = iff drop ]done[ ] + dup 999999999999 > if + [ over size 0 > if + [ dip [ $ ", " join ] ] + 1000000000000 /mod swap triplet + $ " trillion" join + swap dip join + dup 0 = iff drop ]done[ ] + dup 999999999 > if + [ over size 0 > if + [ dip [ $ ", " join ] ] + 1000000000 /mod swap triplet + $ " billion" join + swap dip join + dup 0 = iff drop ]done[ ] dup 999999 > if - [ 1000000 /mod swap triplet + [ over size 0 > if + [ dip [ $ ", " join ] ] + 1000000 /mod swap triplet $ " million" join swap dip join dup 0 = iff drop ]done[ ] @@ -46,10 +67,17 @@ dup 0 = iff drop ]done[ ] over size 0 > if [ dip [ $ ", " join ] ] - triplet join ] is name$ ( n --> $ ) + triplet join + dup reverse witheach + [ char , = if + [ i split + behead drop + $ " and" swap + join join + conclude ] ] ] is name$ ( n --> $ ) - 10 times - [ 10 9 random + 10 times + [ 10 18 random 1+ ** random dup echo say " is:" diff --git a/Task/Number-reversal-game/SETL/number-reversal-game.setl b/Task/Number-reversal-game/SETL/number-reversal-game.setl new file mode 100644 index 0000000000..7a156b2240 --- /dev/null +++ b/Task/Number-reversal-game/SETL/number-reversal-game.setl @@ -0,0 +1,30 @@ +program number_reversal_game; + setrandom(0); + tries := 0; + state := shuffled_numbers(); + + loop until state = "123456789" do + tries +:= 1; + swapat := read_step(tries, state); + state := reverse state(..swapat) + state(swapat+1..); + end loop; + print(state + " - You win in " + str tries + " tries."); + + proc read_step(tries, state); + loop until r in [str d : d in [1..9]] do + putchar(state + " - Reverse how many? "); + flush(stdout); + r := getline(stdin); + end loop; + return val r; + end proc; + + proc shuffled_numbers(); + digits := "123456789"; + loop until out /= digits do + dset := {d : d in digits}; + out := +/[[d := random dset, dset less:= d](1) : until dset = {}]; + end loop; + return out; + end proc; +end program; diff --git a/Task/Numbers-which-are-not-the-sum-of-distinct-squares/ALGOL-68/numbers-which-are-not-the-sum-of-distinct-squares.alg b/Task/Numbers-which-are-not-the-sum-of-distinct-squares/ALGOL-68/numbers-which-are-not-the-sum-of-distinct-squares.alg new file mode 100644 index 0000000000..40dc1e5f42 --- /dev/null +++ b/Task/Numbers-which-are-not-the-sum-of-distinct-squares/ALGOL-68/numbers-which-are-not-the-sum-of-distinct-squares.alg @@ -0,0 +1,38 @@ +CO find the integers that can't be expressed as the sum of distinct squares + it can be proved that if 120-324 can be expressed as the sum of distinct + squares then all integers greater than 129 can be so expressed + (see the link in the Wren sample) so we need to check that 129-324 can + be so expressed and find the numbers below 129 that can't be so expressed +CO +BEGIN + INT max number = 324; + [ 0 : max number ]BOOL is sum; FOR i FROM LWB is sum TO UPB is sum DO is sum[ i ] := FALSE OD; + INT max square = ENTIER sqrt( 324 ); + [ 0 : max square ]INT square; FOR i FROM LWB square TO UPB square DO square[ i ] := i * i OD; + + PROC flag sum = ( INT curr sum, sq pos )VOID: + IF INT next sum = curr sum + square[ sq pos ]; + next sum <= UPB is sum + THEN + is sum[ next sum ] := TRUE; + FOR i FROM sq pos + 1 TO UPB square DO + flag sum( next sum, i ) + OD + FI # flag sum # ; + + FOR i FROM LWB square TO UPB square DO + flag sum( 0, i ) + OD; + # show the numbers that can't be formed from a sum of distinct squares # + # and check 129-324 can be so formed # + INT unformable := 0; + FOR i FROM LWB is sum TO UPB is sum DO + IF NOT is sum[ i ] THEN + print( ( whole( i, -4 ) ) ); + IF ( unformable +:= 1 ) MOD 12 = 0 THEN print( ( newline ) ) FI; + IF i > 128 THEN + print( ( newline, "**** unexpected unformable number: ", whole( i, 0 ), newline ) ) + FI + FI + OD +END diff --git a/Task/Numbers-which-are-not-the-sum-of-distinct-squares/ALGOL-W/numbers-which-are-not-the-sum-of-distinct-squares.alg b/Task/Numbers-which-are-not-the-sum-of-distinct-squares/ALGOL-W/numbers-which-are-not-the-sum-of-distinct-squares.alg new file mode 100644 index 0000000000..202c1925f0 --- /dev/null +++ b/Task/Numbers-which-are-not-the-sum-of-distinct-squares/ALGOL-W/numbers-which-are-not-the-sum-of-distinct-squares.alg @@ -0,0 +1,39 @@ +begin comment find the integers that can't be expressed as the sum of distinct squares + it can be proved that if 120-324 can be expressed as the sum of distinct + squares then all integers greater than 129 can be so expressed + (see the link in the Wren sample) so we need to check that 129-324 can + be so expressed and find the numbers below 129 that can't be so expressed + ; + integer MAX_NUMBER, MAX_SQUARE; + MAX_NUMBER := 324; + MAX_SQUARE := entier( sqrt( MAX_NUMBER ) ); + + begin + logical array isSum ( 0 :: MAX_NUMBER ); + integer array square ( 0 :: MAX_SQUARE ); + integer unformable; + + procedure flagSum ( integer value currSum, sqPos ) ; begin + integer nextSum; + nextSum := currSum + square( sqPos ); + if nextSum <= MAX_NUMBER then begin + isSum( nextSum ) := true; + for i := sqPos + 1 until MAX_SQUARE do flagSum( nextSum, i ) + end of_nextSum_le_MAX_NUMBER + end flagSum ; + + for i := 0 until MAX_NUMBER do isSum( i ) := false; + for i := 0 until MAX_SQUARE do square( i ) := i * i; + for i := 0 until MAX_SQUARE do flagSum( 0, i ); + % show the numbers that can't be formed from a sum of distinct squares % + % and check 129-324 can be so formed % + unformable := 0; + for i := 0 until MAX_NUMBER do + if not isSum( i ) then begin + writeon( i_w := 4, s_w := 0, i ); + unformable := unformable + 1; + if unformable rem 12 = 0 then write(); + if i > 128 then write( i_w := 1, s_w := 0, "**** unexpected unformable number: ", i ) + end if_not_isSum__i + end +end. diff --git a/Task/Numbers-which-are-not-the-sum-of-distinct-squares/EasyLang/numbers-which-are-not-the-sum-of-distinct-squares.easy b/Task/Numbers-which-are-not-the-sum-of-distinct-squares/EasyLang/numbers-which-are-not-the-sum-of-distinct-squares.easy new file mode 100644 index 0000000000..4c7612257a --- /dev/null +++ b/Task/Numbers-which-are-not-the-sum-of-distinct-squares/EasyLang/numbers-which-are-not-the-sum-of-distinct-squares.easy @@ -0,0 +1,21 @@ +maxNumber = 324 +len isSum[] maxNumber +maxSquare = floor sqrt maxNumber +# +proc flagSum currSum sqPos . . + nextSum = currSum + sqPos * sqPos + if nextSum <= maxNumber + isSum[nextSum] = 1 + for i = sqPos + 1 to maxSquare + flagSum nextSum i + . + . +. +for i = 1 to maxSquare + flagSum 0 i +. +for i = 1 to maxNumber + if isSum[i] = 0 + write i & " " + . +. diff --git a/Task/Numbers-which-are-not-the-sum-of-distinct-squares/Lua/numbers-which-are-not-the-sum-of-distinct-squares.lua b/Task/Numbers-which-are-not-the-sum-of-distinct-squares/Lua/numbers-which-are-not-the-sum-of-distinct-squares.lua new file mode 100644 index 0000000000..db1525d554 --- /dev/null +++ b/Task/Numbers-which-are-not-the-sum-of-distinct-squares/Lua/numbers-which-are-not-the-sum-of-distinct-squares.lua @@ -0,0 +1,39 @@ +do --[[ find the integers that can't be expressed as the sum of distinct squares + it can be proved that if 120-324 can be expressed as the sum of distinct squares + then all integers greater than 129 can be so expressed (see the link in + the Wren sample) so we need to check that 129-324 can be so expressed + and find the numbers below 129 that can't be so expressed + --]] + local maxNumber = 324 + local isSum = {} + local maxSquare = math.floor( math.sqrt( 324 ) ) + local square = {} for i = 0,maxSquare do square[ i ] = i * i end + + local function flagSum ( currSum, sqPos ) + local nextSum = currSum + square[ sqPos ] + if nextSum <= maxNumber then + isSum[ nextSum ] = true + for i = sqPos + 1, maxSquare do + flagSum( nextSum, i ) + end + end + end + + for i = 0,maxSquare do + flagSum( 0, i ) + end + --[[ show the numbers that can't be formed from a sum of distinct squares + and check 129-324 can be so formed + --]] + local unformable = 0 + for i = 0, maxNumber do + if not isSum[ i ] then + io.write( string.format( "%4d", i ) ) + unformable = unformable + 1 + if unformable % 12 == 0 then io.write( "\n" ) end + if i > 128 then + io.write( "\n", "**** unexpected unformable number: ", i, "\n" ) + end + end + end +end diff --git a/Task/Numbers-which-are-not-the-sum-of-distinct-squares/Quackery/numbers-which-are-not-the-sum-of-distinct-squares.quackery b/Task/Numbers-which-are-not-the-sum-of-distinct-squares/Quackery/numbers-which-are-not-the-sum-of-distinct-squares.quackery new file mode 100644 index 0000000000..4495fc1a82 --- /dev/null +++ b/Task/Numbers-which-are-not-the-sum-of-distinct-squares/Quackery/numbers-which-are-not-the-sum-of-distinct-squares.quackery @@ -0,0 +1,51 @@ + [ [] swap + behead swap + witheach + [ 2dup = iff + drop done + dip join ] + join ] is unique ( [ --> [ ) + + [ stack ] is cut ( --> s ) + + [ -1 cut put + 1 temp put + 1 swap + behead swap + witheach + [ tuck - -1 = iff + [ dip 1+ + over temp share + > if + [ over temp replace + i^ cut replace ] ] + else + [ nip 1 swap ] ] + 2drop + temp take cut take ] is maxrun ( [ --> n n ) + + [ [] swap 0 over + witheach [ bit | ] + swap -1 peek times + [ dup i^ bit & not if + [ dip [ i^ join ] ] ] + drop ] is missing ( [ --> [ ) + + 1 temp put + ' [ 0 ] + 1 from + [ dup witheach + [ temp share + + join ] + sort unique + dup maxrun drop + index 2 + temp tally + temp share > iff + end done + 2 incr ] + temp release + dup maxrun + nip split + drop missing + say "Numbers that are not the sum of distinct squares:" + cr echo diff --git a/Task/Numbers-which-are-the-cube-roots-of-the-product-of-their-proper-divisors/Sidef/numbers-which-are-the-cube-roots-of-the-product-of-their-proper-divisors.sidef b/Task/Numbers-which-are-the-cube-roots-of-the-product-of-their-proper-divisors/Sidef/numbers-which-are-the-cube-roots-of-the-product-of-their-proper-divisors.sidef new file mode 100644 index 0000000000..ff6f56c9cb --- /dev/null +++ b/Task/Numbers-which-are-the-cube-roots-of-the-product-of-their-proper-divisors/Sidef/numbers-which-are-the-cube-roots-of-the-product-of-their-proper-divisors.sidef @@ -0,0 +1,5 @@ +say ("First 50 terms: ", 50.by { .proper_divisors.prod == .cube }.join(' ')) + +for n in (5e2, 5e3, 5e4) { + say "#{'%6s'%n.commify}th term: #{n.th{ .proper_divisors.prod == .cube }}" +} diff --git a/Task/Object-serialization/Haskell/object-serialization.hs b/Task/Object-serialization/Haskell/object-serialization-1.hs similarity index 100% rename from Task/Object-serialization/Haskell/object-serialization.hs rename to Task/Object-serialization/Haskell/object-serialization-1.hs diff --git a/Task/Object-serialization/Haskell/object-serialization-2.hs b/Task/Object-serialization/Haskell/object-serialization-2.hs new file mode 100644 index 0000000000..1bef0fd67c --- /dev/null +++ b/Task/Object-serialization/Haskell/object-serialization-2.hs @@ -0,0 +1,7 @@ +(var object {:a 1 :b "Hello, world!" [1 2 3] :c} + serialised (str object) + deserialised (safe-eval serialised)) + +(print "Object: " object) +(print "Serialised: " serialised) +(str "Deserialised: " deserialised) diff --git a/Task/One-dimensional-cellular-automata/Amazing-Hopper/one-dimensional-cellular-automata-1.hopper b/Task/One-dimensional-cellular-automata/Amazing-Hopper/one-dimensional-cellular-automata-1.hopper new file mode 100644 index 0000000000..f687c04e2c --- /dev/null +++ b/Task/One-dimensional-cellular-automata/Amazing-Hopper/one-dimensional-cellular-automata-1.hopper @@ -0,0 +1,21 @@ +#include + +algoritmo + tamaño de pila 65 + x = 0 + enlistar (0,0,1,1,1,0,0,1,1,0,1,0,1,1,0,1,1,1,0,0,\ + 1,1,1,1,1,1,0,1,1,1,0,1,1,1,1,1,0,1,0,0,\ + 1,1,0,0,0,0,0,1,0,1,0,1,1,1,1,1,1,1,0,0) mover a 'x' + x2 = x + decimales '0', token.separador ("") + iterar para ( k=1, #(k<=15), ++k ) + imprimir ' #(utf8("Generación #")),k, "\t", x, NL ' + iterar para ( j=2, #(j<60), ++j ) + #(x2[j] = 0) + cuando ( #( (x[j-1]+x[j]+x[j+1])==2 ) ){ + #(x2[j]=1) + } + siguiente + x = x2 + siguiente +terminar diff --git a/Task/One-dimensional-cellular-automata/Amazing-Hopper/one-dimensional-cellular-automata-2.hopper b/Task/One-dimensional-cellular-automata/Amazing-Hopper/one-dimensional-cellular-automata-2.hopper new file mode 100644 index 0000000000..8d34647272 --- /dev/null +++ b/Task/One-dimensional-cellular-automata/Amazing-Hopper/one-dimensional-cellular-automata-2.hopper @@ -0,0 +1,18 @@ +#include + +algoritmo + x={} + '0,0,1,1,1,0,0,1,1,0,1,0,1,1,0,1,1,1,0,0' anidar en lista 'x' + '1,1,1,1,1,1,0,1,1,1,0,1,1,1,1,1,0,1,0,0' anidar en lista 'x' + '1,1,0,0,0,0,0,1,0,1,0,1,1,1,1,1,1,1,0,0' anidar en lista 'x' + + x2 = x, k=10 + decimales '0', token.separador ("") + iterar + imprimir ' #(utf8("Generación #")), #(11-k), "\t", x, NL ' + iterar para ( j=2, #(j<60), ++j ) + #( x2[j] = ((x[j-1]+x[j]+x[j+1])==2) ) + siguiente + x = x2 + mientras ' k-- ' +terminar diff --git a/Task/One-dimensional-cellular-automata/EasyLang/one-dimensional-cellular-automata.easy b/Task/One-dimensional-cellular-automata/EasyLang/one-dimensional-cellular-automata.easy new file mode 100644 index 0000000000..a5e70f7c97 --- /dev/null +++ b/Task/One-dimensional-cellular-automata/EasyLang/one-dimensional-cellular-automata.easy @@ -0,0 +1,25 @@ +map[] = [ 0 0 0 1 0 1 1 0 ] +cell[] = [ 0 1 1 1 0 1 1 0 1 0 1 0 1 0 1 0 0 1 0 0 ] +len celln[] len cell[] +proc evolve . . + for i = 2 to len cell[] - 1 + ind = cell[i - 1] + 2 * cell[i] + 4 * cell[i + 1] + 1 + celln[i] = map[ind] + . + swap celln[] cell[] +. +proc show . . + for v in cell[] + if v = 1 + write "#" + else + write "." + . + . + print "" +. +show +for i to 9 + evolve + show +. diff --git a/Task/One-dimensional-cellular-automata/Julia/one-dimensional-cellular-automata-1.julia b/Task/One-dimensional-cellular-automata/Julia/one-dimensional-cellular-automata-1.julia new file mode 100644 index 0000000000..1c92159b98 --- /dev/null +++ b/Task/One-dimensional-cellular-automata/Julia/one-dimensional-cellular-automata-1.julia @@ -0,0 +1,7 @@ +automaton(g::Vector{Bool}) = + for i ∈ 0:9 + println(join(alive ? '#' : '_' for alive ∈ g)) + g = ([false; g[1:end-1]] .+ g .+ [g[2:end]; false]) .== 2 + end + +automaton([c == '#' for c ∈ "_###_##_#_#_#_#__#__"]) diff --git a/Task/One-dimensional-cellular-automata/Julia/one-dimensional-cellular-automata-2.julia b/Task/One-dimensional-cellular-automata/Julia/one-dimensional-cellular-automata-2.julia new file mode 100644 index 0000000000..57e90503fb --- /dev/null +++ b/Task/One-dimensional-cellular-automata/Julia/one-dimensional-cellular-automata-2.julia @@ -0,0 +1,9 @@ +struct Automaton g₀::Vector{Bool} end + +Base.iterate(a::Automaton, g = a.g₀) = + g, ([false; g[1:end-1]] .+ g .+ [g[2:end]; false]) .== 2 + +Base.show(io::IO, a::Automaton) = for g in Iterators.take(a, 10) + println(io, join(alive ? '#' : '_' for alive ∈ g)) end + +Automaton([c == '#' for c ∈ "_###_##_#_#_#_#__#__"]) diff --git a/Task/One-dimensional-cellular-automata/Julia/one-dimensional-cellular-automata.julia b/Task/One-dimensional-cellular-automata/Julia/one-dimensional-cellular-automata.julia deleted file mode 100644 index 5e9146eab3..0000000000 --- a/Task/One-dimensional-cellular-automata/Julia/one-dimensional-cellular-automata.julia +++ /dev/null @@ -1,35 +0,0 @@ -function next_gen(a::BitArray{1}, isperiodic=false) - b = copy(a) - if isperiodic - ncnt = prepend!(a[1:end-1], [a[end]]) + append!(a[2:end], [a[1]]) - else - ncnt = prepend!(a[1:end-1], [false]) + append!(a[2:end], [false]) - end - b[ncnt .== 0] = false - b[ncnt .== 2] = ~b[ncnt .== 2] - return b -end - -function show_gen(a::BitArray{1}) - s = join([i ? "\u2588" : " " for i in a], "") - s = "\u25ba"*s*"\u25c4" -end - -hi = 70 -a = bitrand(hi) -b = falses(hi) -println("A 1D Cellular Atomaton with ", hi, " cells and empty bounds.") -while any(a) && any(a .!= b) - println(" ", show_gen(a)) - b = copy(a) - a = next_gen(a) -end -a = bitrand(hi) -b = falses(hi) -println() -println("A 1D Cellular Atomaton with ", hi, " cells and periodic bounds.") -while any(a) && any(a .!= b) - println(" ", show_gen(a)) - b = copy(a) - a = next_gen(a, true) -end diff --git a/Task/One-dimensional-cellular-automata/BASIC/one-dimensional-cellular-automata.basic b/Task/One-dimensional-cellular-automata/QBasic/one-dimensional-cellular-automata.basic similarity index 100% rename from Task/One-dimensional-cellular-automata/BASIC/one-dimensional-cellular-automata.basic rename to Task/One-dimensional-cellular-automata/QBasic/one-dimensional-cellular-automata.basic diff --git a/Task/Order-by-pair-comparisons/MiniScript/order-by-pair-comparisons.mini b/Task/Order-by-pair-comparisons/MiniScript/order-by-pair-comparisons.mini new file mode 100644 index 0000000000..db08761375 --- /dev/null +++ b/Task/Order-by-pair-comparisons/MiniScript/order-by-pair-comparisons.mini @@ -0,0 +1,22 @@ +insertSort = function(arr, item) + lo = 0 + hi = arr.len + while lo < hi + mid = floor((lo + hi) / 2) + ans = input("Is " + item + " less than " + arr[mid] + "? y/n: ") + ans = ans[0].lower + if ans == "y" then + hi = mid + else + lo = mid + 1 + end if + end while + arr.insert(lo, item) +end function + +items = "violet red green indigo blue yellow orange".split +ordered = [] +for item in items + insertSort(ordered, item) +end for +print ordered diff --git a/Task/Order-disjoint-list-items/Sidef/order-disjoint-list-items.sidef b/Task/Order-disjoint-list-items/Sidef/order-disjoint-list-items.sidef index 34f7e040a7..742ab193e2 100644 --- a/Task/Order-disjoint-list-items/Sidef/order-disjoint-list-items.sidef +++ b/Task/Order-disjoint-list-items/Sidef/order-disjoint-list-items.sidef @@ -14,5 +14,5 @@ func dsort(m, n) { A B B A | B A EOT var (a, b) = line.split('|').map{.words}... - say "#{a.to_s} | #{b.to_s} -> #{dsort(a.clone, b.clone).to_s}" + say "#{a.join(' ')} | #{b.join(' ')} -> #{dsort(a.clone, b.clone).join(' ')}" } diff --git a/Task/Ordered-words/Amazing-Hopper/ordered-words.hopper b/Task/Ordered-words/Amazing-Hopper/ordered-words.hopper new file mode 100644 index 0000000000..8b6c012178 --- /dev/null +++ b/Task/Ordered-words/Amazing-Hopper/ordered-words.hopper @@ -0,0 +1,33 @@ +#include + +#define MAX_LINE 30 + +algoritmo + + fd=0 + word={}, result={} + old_word="",new_word="" + + fijar separador (NULO) + + abrir para leer("basica/unixdict.txt",fd) + + iterar mientras ' no es fin de archivo (fd) ' + usando 'MAX_LINE', leer línea desde(fd), + ---copiar en 'old_word'---, separar para 'word ' + word, ---retener--- ordenar esto, + encadenar en 'new_word' + + new_word, meter según (#(old_word == new_word), result) + + reiterar + + cerrar archivo(fd) + + result ---retener---, obtener largo ---retener--- + obtener máximo valor, es mayor o igual?, replicar esto + compactar esto + + fijar separador 'NL', luego imprime todo + +terminar diff --git a/Task/Ormiston-triples/Ruby/ormiston-triples.rb b/Task/Ormiston-triples/Ruby/ormiston-triples.rb new file mode 100644 index 0000000000..2aac841554 --- /dev/null +++ b/Task/Ormiston-triples/Ruby/ormiston-triples.rb @@ -0,0 +1,13 @@ +require 'prime' + +def all_anagram?(arr) + sorted = arr.first.digits.sort + arr[1..].all?{|a| a.digits.sort == sorted} +end + +res = Prime.each.each_cons(3).lazy.filter_map{|ar| ar.first if all_anagram?(ar)}.first(25) +res.each_slice(5){|slice| puts slice.join(", ")} + +n = 1E9 +res = Prime.each(n).each_cons(3).count {|ar| all_anagram?(ar)} +puts "\nThere are #{res} Ormiston triples below #{n}" diff --git a/Task/Own-digits-power-sum/C++/own-digits-power-sum.cpp b/Task/Own-digits-power-sum/C++/own-digits-power-sum.cpp new file mode 100644 index 0000000000..7c05954dd7 --- /dev/null +++ b/Task/Own-digits-power-sum/C++/own-digits-power-sum.cpp @@ -0,0 +1,54 @@ +#include +#include +#include +#include + +int main() { + std::vector powers = { 0, 1, 4, 9, 16, 25, 36, 49, 64, 81 }; + + std::cout << "Own digits power sums for N = 3 to 9 inclusive:" << std::endl; + + for ( uint32_t n = 3; n <= 9; ++n ) { + for ( uint32_t d = 2; d <= 9; ++d ) { + powers[d] *= d; + } + + uint64_t number = std::pow(10, n - 1); + uint64_t maximum = number * 10; + uint32_t last_digit = 0; + uint32_t digit_sum = 0; + + while ( number < maximum ) { + if ( last_digit == 0 ) { + digit_sum = 0; + uint64_t copy = number; + while ( copy > 0 ) { + digit_sum += powers[copy % 10]; + copy /= 10; + } + } else if ( last_digit == 1 ) { + digit_sum++; + } else { + digit_sum += powers[last_digit] - powers[last_digit - 1]; + } + + if ( digit_sum == number ) { + std::cout << number << std::endl; + if ( last_digit == 0 ) { + std::cout << number + 1 << std::endl; + } + number += 10 - last_digit; + last_digit = 0; + } else if ( digit_sum > number ) { + number += 10 - last_digit; + last_digit = 0; + } else if ( last_digit < 9 ) { + number++; + last_digit++; + } else { + number++; + last_digit = 0; + } + } + } +} diff --git a/Task/Own-digits-power-sum/Java/own-digits-power-sum.java b/Task/Own-digits-power-sum/Java/own-digits-power-sum.java new file mode 100644 index 0000000000..a04b3ce874 --- /dev/null +++ b/Task/Own-digits-power-sum/Java/own-digits-power-sum.java @@ -0,0 +1,53 @@ +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +public final class OwnDigitsPowerSum { + + public static void main(String[] args) { + List powers = IntStream.rangeClosed(0, 9).boxed().map( i -> i * i ).collect(Collectors.toList()); + + System.out.println("Own digits power sums for N = 3 to 9 inclusive:"); + + for ( int n = 3; n <= 9; n++ ) { + for ( int d = 2; d <= 9; d++ ) { + powers.set(d, powers.get(d) * d); + } + + long number = (long) Math.pow(10, n - 1); + long maximum = number * 10; + int lastDigit = 0; + int sum = 0; + + while ( number < maximum ) { + if ( lastDigit == 0 ) { + sum = String.valueOf(number) + .chars().map(Character::getNumericValue).map( i -> powers.get(i) ).sum(); + } else if ( lastDigit == 1 ) { + sum += 1; + } else { + sum += powers.get(lastDigit) - powers.get(lastDigit - 1); + } + + if ( sum == number ) { + System.out.println(number); + if ( lastDigit == 0 ) { + System.out.println(number + 1); + } + number += 10 - lastDigit; + lastDigit = 0; + } else if ( sum > number ) { + number += 10 - lastDigit; + lastDigit = 0; + } else if ( lastDigit < 9 ) { + number += 1; + lastDigit += 1; + } else { + number += 1; + lastDigit = 0; + } + } + } + } + +} diff --git a/Task/Own-digits-power-sum/Rust/own-digits-power-sum-1.rust b/Task/Own-digits-power-sum/Rust/own-digits-power-sum-1.rust new file mode 100644 index 0000000000..bb086ff30a --- /dev/null +++ b/Task/Own-digits-power-sum/Rust/own-digits-power-sum-1.rust @@ -0,0 +1,18 @@ +fn is_own_digits_power_sum(n: u32) -> bool { + let n_str = n.to_string(); + n_str.chars() + .map(|c| { + let digit = c.to_digit(10).unwrap(); + digit.pow(n_str.len() as u32) + }) + .sum::() + == n +} + +fn main() { + let result: Vec = (10u32.pow(2)..10u32.pow(9)) + .filter(|&n| is_own_digits_power_sum(n)) + .collect(); + + println!("{:?}", result); +} diff --git a/Task/Own-digits-power-sum/Rust/own-digits-power-sum-2.rust b/Task/Own-digits-power-sum/Rust/own-digits-power-sum-2.rust new file mode 100644 index 0000000000..e21d69e0ef --- /dev/null +++ b/Task/Own-digits-power-sum/Rust/own-digits-power-sum-2.rust @@ -0,0 +1,49 @@ +fn main() { + let mut powers = vec![0, 1, 4, 9, 16, 25, 36, 49, 64, 81]; + + println!("Own digits power sums for N = 3 to 9 inclusive:"); + + for n in 3..=9 { + for d in 2..=9 { + powers[d] *= d; + } + + let mut i = 10u64.pow(n - 1); + let max = i * 10; + let mut last_digit = 0; + let mut sum = 0; + let mut digits: Vec; + + while i < max { + if last_digit == 0 { + digits = i.to_string() + .chars() + .map(|c| c.to_digit(10).unwrap()) + .collect(); + sum = digits.iter().map(|&d| powers[d as usize]).sum(); + } else if last_digit == 1 { + sum += 1; + } else { + sum += powers[last_digit as usize] - powers[(last_digit - 1) as usize]; + } + + if sum == i.try_into().unwrap() { + println!("{}", i); + if last_digit == 0 { + println!("{}", i + 1); + } + i += 10 - last_digit; + last_digit = 0; + } else if sum > i.try_into().unwrap() { + i += 10 - last_digit; + last_digit = 0; + } else if last_digit < 9 { + i += 1; + last_digit += 1; + } else { + i += 1; + last_digit = 0; + } + } + } +} diff --git a/Task/Padovan-n-step-number-sequences/BASIC256/padovan-n-step-number-sequences.basic b/Task/Padovan-n-step-number-sequences/BASIC256/padovan-n-step-number-sequences.basic new file mode 100644 index 0000000000..65293589ee --- /dev/null +++ b/Task/Padovan-n-step-number-sequences/BASIC256/padovan-n-step-number-sequences.basic @@ -0,0 +1,36 @@ +global t +t = 15 +global p +dim p(t) + +print "First"; t; " terms of the Padovan n-step number sequences:" +for n = 2 to 8 + print n; ":"; + + call padovanN(n, p) + + for i = 0 to t-1 + print rjust(p[i],4); + next i + print +next n +end + +subroutine padovanN(n, p) + if n < 2 or t < 3 then + for i = 0 to t-1 + p[i] = 1 + next i + return + end if + + call padovanN(n-1, p) + + for i = n + 1 to t-1 + p[i] = 0 + for j = i - 2 to i-n-1 step -1 + p[i] += p[j] + next j + next i + return +end subroutine diff --git a/Task/Padovan-n-step-number-sequences/Chipmunk-Basic/padovan-n-step-number-sequences.basic b/Task/Padovan-n-step-number-sequences/Chipmunk-Basic/padovan-n-step-number-sequences.basic new file mode 100644 index 0000000000..fd73e9c38c --- /dev/null +++ b/Task/Padovan-n-step-number-sequences/Chipmunk-Basic/padovan-n-step-number-sequences.basic @@ -0,0 +1,29 @@ +100 CLS +110 t = 15 +120 DIM p(t) +130 SUB padovann(n,p()) +140 IF n < 2 OR t < 3 THEN +150 FOR i = 0 TO t-1 +160 p(i) = 1 +170 NEXT i +180 EXIT SUB +190 endif +200 padovann(n-1,p()) +210 FOR i = n+1 TO t-1 +220 p(i) = 0 +230 FOR j = i-2 TO i-n-1 STEP -1 +240 p(i) = p(i)+p(j) +250 NEXT j +260 NEXT i +270 EXIT SUB +280 END SUB +290 PRINT "First";t;" terms of the Padovan n-step number sequences:" +300 FOR n = 2 TO 8 +310 PRINT n;":"; +320 padovann(n,p()) +330 FOR i = 0 TO t-1 +340 PRINT USING "### ";p(i); +350 NEXT i +360 PRINT +370 NEXT n +380 END diff --git a/Task/Padovan-n-step-number-sequences/EasyLang/padovan-n-step-number-sequences.easy b/Task/Padovan-n-step-number-sequences/EasyLang/padovan-n-step-number-sequences.easy new file mode 100644 index 0000000000..81f4aba3ea --- /dev/null +++ b/Task/Padovan-n-step-number-sequences/EasyLang/padovan-n-step-number-sequences.easy @@ -0,0 +1,26 @@ +t = 15 +len p[] t +# +proc padovan n . . + if n < 2 or t < 3 + for i = 1 to t + p[i] = 1 + . + return + . + padovan n - 1 + for i = n + 2 to t + p[i] = 0 + for j = i - 2 downto i - n - 1 + p[i] += p[j] + . + . +. +for n = 2 to 8 + padovan n + write n & ": " + for i = 1 to t + write p[i] & " " + . + print "" +. diff --git a/Task/Padovan-n-step-number-sequences/FreeBASIC/padovan-n-step-number-sequences.basic b/Task/Padovan-n-step-number-sequences/FreeBASIC/padovan-n-step-number-sequences.basic index 0f2f789503..90ac6f5aa1 100644 --- a/Task/Padovan-n-step-number-sequences/FreeBASIC/padovan-n-step-number-sequences.basic +++ b/Task/Padovan-n-step-number-sequences/FreeBASIC/padovan-n-step-number-sequences.basic @@ -1,3 +1,6 @@ +' Rosetta Code problem: https://rosettacode.org/wiki/Padovan_n-step_number_sequences +' by Jjuanhdez, 05/2023 + Const t = 15 Dim Shared As Integer p(t) @@ -19,7 +22,6 @@ Sub padovanN(n As Integer, p() As Integer) p(i) += p(j) Next j Next i - Exit Sub End Sub Print "First"; t; " terms of the Padovan n-step number sequences:" diff --git a/Task/Padovan-n-step-number-sequences/PureBasic/padovan-n-step-number-sequences.basic b/Task/Padovan-n-step-number-sequences/PureBasic/padovan-n-step-number-sequences.basic new file mode 100644 index 0000000000..4ef98dc9e7 --- /dev/null +++ b/Task/Padovan-n-step-number-sequences/PureBasic/padovan-n-step-number-sequences.basic @@ -0,0 +1,36 @@ +Global.i t = 15, Dim p(t) + +Procedure.i padovanN(n, Array p(1)) + If n < 2 Or t < 3 + For i = 0 To t - 1 + p(i) = 1 + Next i + ProcedureReturn + EndIf + + padovanN(n - 1, p()) + + For i.i = n + 1 To t - 1 + p(i) = 0 + For j.i = i - 2 To i - n - 1 Step -1 + p(i) = p(i) + p(j) + Next j + Next i +EndProcedure + +If OpenConsole() + PrintN("First" + Str(t) + " terms of the Padovan n-step number sequences:") + For n.i = 2 To 8 + Print(Str(n) + ":") + + padovanN(n, p()) + + For i.i = 0 To t - 1 + Print(RSet(Str(p(i)),4)) + Next i + PrintN("") + Next n + + PrintN(#CRLF$ + "--- terminado, pulsa RETURN---"): Input() + CloseConsole() +EndIf diff --git a/Task/Padovan-n-step-number-sequences/QBasic/padovan-n-step-number-sequences.basic b/Task/Padovan-n-step-number-sequences/QBasic/padovan-n-step-number-sequences.basic new file mode 100644 index 0000000000..83f28f96bc --- /dev/null +++ b/Task/Padovan-n-step-number-sequences/QBasic/padovan-n-step-number-sequences.basic @@ -0,0 +1,33 @@ +DECLARE SUB padovanN (n!, p!()) +CONST t = 15 +DIM SHARED p(t) + +PRINT "First"; t; " terms of the Padovan n-step number sequences:" +FOR n = 2 TO 8 + PRINT n; ":"; + + CALL padovanN(n, p()) + + FOR i = 0 TO t - 1 + PRINT USING "### "; p(i); + NEXT i + PRINT +NEXT n + +SUB padovanN (n, p()) + IF n < 2 OR t < 3 THEN + FOR i = 0 TO t - 1 + p(i) = 1 + NEXT i + EXIT SUB + END IF + + CALL padovanN(n - 1, p()) + + FOR i = n + 1 TO t - 1 + p(i) = 0 + FOR j = i - 2 TO i - n - 1 STEP -1 + p(i) = p(i) + p(j) + NEXT j + NEXT i +END SUB diff --git a/Task/Padovan-n-step-number-sequences/Ruby/padovan-n-step-number-sequences.rb b/Task/Padovan-n-step-number-sequences/Ruby/padovan-n-step-number-sequences.rb new file mode 100644 index 0000000000..0ecbc42b19 --- /dev/null +++ b/Task/Padovan-n-step-number-sequences/Ruby/padovan-n-step-number-sequences.rb @@ -0,0 +1,15 @@ +def padovan(n_step) + return to_enum(__method__, n_step) unless block_given? + ar = [1, 1, 1] + loop do + yield sum = ar[..-2].sum + ar.shift if ar.size > n_step + ar << sum + end +end + +t = 15 +(2..8).each do |n| + print "N=#{n} :" + puts "%5d"*t % padovan(n).take(t) +end diff --git a/Task/Padovan-n-step-number-sequences/Yabasic/padovan-n-step-number-sequences.basic b/Task/Padovan-n-step-number-sequences/Yabasic/padovan-n-step-number-sequences.basic new file mode 100644 index 0000000000..de45ab6a6e --- /dev/null +++ b/Task/Padovan-n-step-number-sequences/Yabasic/padovan-n-step-number-sequences.basic @@ -0,0 +1,36 @@ +t = 15 +dim p(t) + +print "First", t, " terms of the Padovan n-step number sequences:" +for n = 2 to 8 + print n, ":"; + + padovanN(n, p()) + + for i = 0 to t-1 + print p(i) using ("###"); + next i + print +next n +end + +sub padovanN(n, p()) + local i, j + + if n < 2 or t < 3 then + for i = 0 to t-1 + p(i) = 1 + next i + return + fi + + padovanN(n-1, p()) + + for i = n + 1 to t-1 + p(i) = 0 + for j = i - 2 to i-n-1 step -1 + p(i) = p(i) + p(j) + next j + next i + return +end sub diff --git a/Task/Palindrome-detection/Rhovas/palindrome-detection-1.rhovas b/Task/Palindrome-detection/Rhovas/palindrome-detection-1.rhovas new file mode 100644 index 0000000000..db1981f331 --- /dev/null +++ b/Task/Palindrome-detection/Rhovas/palindrome-detection-1.rhovas @@ -0,0 +1,3 @@ +func isPalindromeReverse(string: String): Boolean { + return string == string.reverse(); +} diff --git a/Task/Palindrome-detection/Rhovas/palindrome-detection-2.rhovas b/Task/Palindrome-detection/Rhovas/palindrome-detection-2.rhovas new file mode 100644 index 0000000000..2e61f8b74f --- /dev/null +++ b/Task/Palindrome-detection/Rhovas/palindrome-detection-2.rhovas @@ -0,0 +1,7 @@ +func isPalindromeChars(chars: List): Boolean { + match (chars) { + []: return true; + [elem]: return true; + [first, middle*, last]: return first == last && isPalindromeChars(middle); + } +} diff --git a/Task/Palindrome-detection/Rhovas/palindrome-detection-3.rhovas b/Task/Palindrome-detection/Rhovas/palindrome-detection-3.rhovas new file mode 100644 index 0000000000..05fa97e25c --- /dev/null +++ b/Task/Palindrome-detection/Rhovas/palindrome-detection-3.rhovas @@ -0,0 +1,15 @@ +func isPalindrome(string: String): Boolean { + return isPalindromeReverse(string) && isPalindromeChars(string.chars); +} + +assert isPalindrome(""); +assert isPalindrome("f"); +assert isPalindrome("noon"); +assert isPalindrome("kayak"); +assert isPalindrome("step on no pets"); +assert !isPalindrome("palindrome"); +assert !isPalindrome("A man, a plan, a canal - Panama!"); //inexact + +assert isPalindrome("§★♖★§"); //single utf16 code points +assert isPalindromeReverse("🗲"); //string reverse handles surrogates +assert !isPalindromeChars("🗲".chars); //.chars splits surrogates into two chars diff --git a/Task/Particle-fountain/EasyLang/particle-fountain.easy b/Task/Particle-fountain/EasyLang/particle-fountain.easy new file mode 100644 index 0000000000..986a21d1ce --- /dev/null +++ b/Task/Particle-fountain/EasyLang/particle-fountain.easy @@ -0,0 +1,23 @@ +rad = 0.125 +n = 6000 +# +len x[] n ; len y[] n +len vx[] n ; len vy[] n +background 479 +color 999 +on animate + for i = 1 to 32 + ind = (ind + 1) mod1 n + x[ind] = 50 + randomf + y[ind] = i / 4 + vx[ind] = (randomf - 0.5) * 0.4 + vy[ind] = 2 + randomf * 0.1 + . + clear + for i = 1 to n + move x[i] y[i] + circle rad + x[i] += vx[i] ; y[i] += vy[i] + vy[i] -= 0.025 + . +. diff --git a/Task/Particle-fountain/Python/particle-fountain.py b/Task/Particle-fountain/Python/particle-fountain.py new file mode 100644 index 0000000000..e285f52776 --- /dev/null +++ b/Task/Particle-fountain/Python/particle-fountain.py @@ -0,0 +1,187 @@ +# Using SDL2 library: # pip install PySDL2 + +import sys +import random +import time +import math + +import sdl2 +import sdl2.ext + +FPS = 60 +NEW_PARTICLES_PER_FRAME = 10 +MAX_PARTICLES = 5_000 +GRAVITY = 100 +WIDTH = 640 +HEIGHT = 480 + + +def clamp(value, min_, max_): + """Return value clamped between min and max""" + return max(min_, min(value, max_)) + + +class Particle: + """Particle obeying gravity law.""" + + def __init__(self): + self.x = 0 + self.y = 0 + self.v_x = 0 + self.v_y = 0 + + def update(self, dtime: float) -> None: + """Move particle and update speed with gravity""" + self.x = self.x + self.v_x * dtime + self.y = self.y + self.v_y * dtime + self.v_y = self.v_y + GRAVITY * dtime + + def set(self, x, y, v_x, v_y): + """Set particle values""" + self.x = x + self.y = y + self.v_x = v_x + self.v_y = v_y + + +class Fountain: + """The fountain""" + + def __init__(self, max_particles: int, particles_per_frame: int): + self.particles_per_frame = particles_per_frame + self.max_particles = max_particles + self.spread = 10.0 + self.range = math.sqrt(2 * GRAVITY * (HEIGHT - 20 - self.spread)) + self.saturation = 155 + self.reciprocate = False + self.reciprocating_time = 0.0 + self.particles = [ + self.init_particle(Particle()) for _ in range(self.particles_per_frame) + ] + + def update(self, dtime) -> None: + """Update particles""" + if self.reciprocate: + self.reciprocating_time += dtime + + for particle in self.particles: + particle.update(dtime) + if particle.y > HEIGHT - 10: + self.init_particle(particle) + + if len(self.particles) < self.max_particles: + for _ in range(self.particles_per_frame): + self.particles.append(self.init_particle(Particle())) + # print(len(particles)) + + def render(self, renderer: sdl2.ext.renderer.Renderer) -> None: + """Render particles""" + points = [(particle.x, particle.y) for particle in self.particles] + + renderer.clear() + renderer.draw_point( + points, sdl2.ext.Color(self.saturation, self.saturation, 255) + ) + renderer.present() + + def step_parameter(self, param, step): + """Change parameters""" + if param == "spread": + self.spread = clamp(self.spread + step, 0, 50) + elif param == "range": + self.range = clamp(self.range + step, 0, 300) + elif param == "color": + self.saturation = clamp(self.saturation + step, 0, 255) + elif param == "reciprocate": + self.reciprocate = not self.reciprocate + self.reciprocating_time = 0.0 + + def init_particle(self, particle: Particle) -> Particle: + """Move particle at initial position with a random-y speed""" + radius = random.random() * self.spread + direction = random.random() * math.pi * 2 + v_x = radius * math.cos(direction) + math.sin(self.reciprocating_time) * 20.0 + v_y = -self.range + radius * math.sin(direction) + particle.set(WIDTH // 2, HEIGHT - 10, v_x, v_y) + return particle + + +def make_renderer() -> sdl2.ext.renderer.Renderer: + """Initialise SDL and make renderer""" + sdl2.ext.init() + + window = sdl2.ext.Window("Particle Fountain", size=(WIDTH, HEIGHT)) + window.show() + + renderer = sdl2.ext.renderer.Renderer(window) + + return renderer + + +def limit_frame_rate(fps: float, cur_time: int) -> bool: + """Limit frame rate""" + dtime = time.monotonic_ns() - cur_time + frame_duration = 1e9 / fps + if dtime < frame_duration: + time.sleep((frame_duration - dtime) / 1e9) + return True + return False + + +def handle_events(fountain: Fountain): + """Act on events""" + key_actions = { + sdl2.SDL_SCANCODE_PAGEUP: lambda: fountain.step_parameter("color", 5), + sdl2.SDL_SCANCODE_PAGEDOWN: lambda: fountain.step_parameter("color", -5), + sdl2.SDL_SCANCODE_UP: lambda: fountain.step_parameter("range", 1), + sdl2.SDL_SCANCODE_DOWN: lambda: fountain.step_parameter("range", -1), + sdl2.SDL_SCANCODE_LEFT: lambda: fountain.step_parameter("spread", -1), + sdl2.SDL_SCANCODE_RIGHT: lambda: fountain.step_parameter("spread", 1), + sdl2.SDL_SCANCODE_SPACE: lambda: fountain.step_parameter("reciprocate", 1), + } + + events = sdl2.ext.get_events() + for event in events: + if event.type == sdl2.SDL_QUIT: + return False + if event.type == sdl2.SDL_KEYDOWN: + if event.key.keysym.scancode in key_actions: + key_actions[event.key.keysym.scancode]() + elif event.key.keysym.scancode == sdl2.SDL_SCANCODE_Q: + return False + return True + + +def main_loop(renderer: sdl2.ext.renderer.Renderer, fountain: Fountain) -> None: + """Main animation loop""" + running = True + + cur_time = time.monotonic_ns() + while running: + running = handle_events(fountain) + + fountain.render(renderer) + + if not limit_frame_rate(FPS, cur_time): + print(f"Didn't make it in time with {len(fountain.particles)} particles.") + + dtime = (time.monotonic_ns() - cur_time) / 1e9 # in seconds + fountain.update(dtime) + cur_time = time.monotonic_ns() + + sdl2.ext.quit() + + +def run(): + """Start!""" + + renderer = make_renderer() + fountain = Fountain(MAX_PARTICLES, NEW_PARTICLES_PER_FRAME) + + main_loop(renderer, fountain) + + return 0 + + +if __name__ == "__main__": + sys.exit(run()) diff --git a/Task/Penneys-game/Quackery/penneys-game.quackery b/Task/Penneys-game/Quackery/penneys-game.quackery new file mode 100644 index 0000000000..3273f3ef6f --- /dev/null +++ b/Task/Penneys-game/Quackery/penneys-game.quackery @@ -0,0 +1,65 @@ + [ 2 random iff char H else char T ] is flip ( --> c ) + + [ 3 times flip join join ] is randstart ( --> $ ) + + [ -1 split drop + dup -1 peek + char T = iff char H else char T + swap join ] is beststart ( $ --> $ ) + + [ stack ] is playergoal ( --> s ) + [ stack ] is computergoal ( --> s ) + + [ say "This is Penney's game." + cr cr + say "We each guess a different " + say "sequence of three coin " + say "flips." + cr + say "I will releatedly flip " + say "a coin until one of the " + say "sequences happens." + cr + say "The winner is the one who " + say "guesses the sequence that " + say "happens first." + cr cr + say "Please enter your sequence " + say "carefully as there is no " + say "error checking." + cr + say 'For example, for "heads ' + say 'tails heads" type "HTH".' + cr cr ] is intro ( --> ) + + [ intro + randomise + flip char H = iff + [ say "I start. My guess is: " + randstart dup echo$ + computergoal put + cr + $ "Please enter your guess: " + input playergoal put ] + else + [ say "You start. " + $ "Please enter your guess: " + input dup playergoal put + beststart dup + say "I guess: " echo$ + computergoal put + cr ] + cr + $ "" + [ flip join + dup -3 split nip dup + computergoal share = iff + [ drop say "I win." ] done + playergoal share = iff + [ say "You win." ] done + again ] + cr + say "The complete sequence was: " + echo$ cr + computergoal release + playergoal release ] is play ( --> ) diff --git a/Task/Pentagram/Sidef/pentagram.sidef b/Task/Pentagram/Sidef/pentagram.sidef index ce34a3ff05..da971f6516 100644 --- a/Task/Pentagram/Sidef/pentagram.sidef +++ b/Task/Pentagram/Sidef/pentagram.sidef @@ -7,19 +7,15 @@ func pentagram(dim=200, sides=5) { EOT - func cis(x) { - cos(x) + sin(x).i - } - func pline(q) { <<-EOT - EOT } - var v = sides.range.map {|k| 0.9 * dim * cis(k * Num.tau / sides) } + var v = {|k| 0.9 * dim * cis(k * Num.tau / sides) }.map(^sides) pentagram += pline([v[range(0, v.end, 2)], v[range(1, v.end, 2)]].map{.reals}) pentagram += '' diff --git a/Task/Perfect-shuffle/EasyLang/perfect-shuffle.easy b/Task/Perfect-shuffle/EasyLang/perfect-shuffle.easy new file mode 100644 index 0000000000..9873feded1 --- /dev/null +++ b/Task/Perfect-shuffle/EasyLang/perfect-shuffle.easy @@ -0,0 +1,23 @@ +proc pshuffle . deck[] . + mp = len deck[] / 2 + in[] = deck[] + for i = 1 to mp + deck[2 * i - 1] = in[i] + deck[2 * i] = in[i + mp] + . +. +proc test size . . + for i to size + deck0[] &= i + . + deck[] = deck0[] + repeat + pshuffle deck[] + cnt += 1 + until deck[] = deck0[] + . + print cnt +. +for size in [ 8 24 52 100 1020 1024 10000 ] + test size +. diff --git a/Task/Perfect-shuffle/SETL/perfect-shuffle.setl b/Task/Perfect-shuffle/SETL/perfect-shuffle.setl new file mode 100644 index 0000000000..1a9fc65f39 --- /dev/null +++ b/Task/Perfect-shuffle/SETL/perfect-shuffle.setl @@ -0,0 +1,22 @@ +program faro_shuffle; + loop for test in [8, 24, 52, 100, 1020, 1024, 10000] do + print(lpad(str test, 5) + " cards: " + lpad(str cycle [1..test], 4)); + end loop; + + op cycle(l); + start := l; + loop until l = start do + l := shuffle l; + n +:= 1; + end loop; + return n; + end op; + + op shuffle(l); + return [l(mapindex(i,#l)) : i in [1..#l]]; + end op; + + proc mapindex(i, size); + return if odd i then i div 2+1 else (i+size) div 2 end; + end proc; +end program; diff --git a/Task/Periodic-table/EasyLang/periodic-table.easy b/Task/Periodic-table/EasyLang/periodic-table.easy new file mode 100644 index 0000000000..99c61ba5bf --- /dev/null +++ b/Task/Periodic-table/EasyLang/periodic-table.easy @@ -0,0 +1,16 @@ +proc mpos n . . + a[] = [ 1 2 5 13 57 72 89 104 ] + b[] = [ -1 15 25 35 72 21 58 7 ] + i = len a[] + while a[i] > n + i -= 1 + . + m = n + b[i] + r = m div 18 + 1 + c = m mod 18 + 1 + print "Atomic number " & n & "-> " & r & ", " & c +. +elem[] = [ 1 2 29 42 57 58 59 71 72 89 90 103 113 ] +for e in elem[] + mpos e +. diff --git a/Task/Periodic-table/Quackery/periodic-table.quackery b/Task/Periodic-table/Quackery/periodic-table.quackery new file mode 100644 index 0000000000..4b4a898fcc --- /dev/null +++ b/Task/Periodic-table/Quackery/periodic-table.quackery @@ -0,0 +1,19 @@ + [ dup 1 119 within not if + [ $ "Unknown element." fail ] + [ table 0 + [ 118 times + [ i^ 1+ + ' [ 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 - 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 + 87 88 - 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 + - - - 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 + - - - 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 ] + find 18 /mod 1+ dip 1+ + join nested swap dip join ] ] now! ] ] is task ( n --> [ ) + + ' [ 1 2 29 42 57 58 59 71 72 89 90 103 113 ] + witheach [ dup echo say " -> " task echo cr ] diff --git a/Task/Periodic-table/Quite-BASIC/periodic-table.basic b/Task/Periodic-table/Quite-BASIC/periodic-table.basic new file mode 100644 index 0000000000..6902cb2d2e --- /dev/null +++ b/Task/Periodic-table/Quite-BASIC/periodic-table.basic @@ -0,0 +1,39 @@ +10 REM Periodic table +20 GOSUB 200 +30 FOR J = 0 TO 9 +40 READ N +50 GOSUB 400 +60 NEXT J +70 END +190 REM Set arrays A, B. +200 ARRAY A +210 LET A[0] = 1 +215 LET A[1] = 2 +220 LET A[2] = 5 +225 LET A[3] = 13 +230 LET A[4] = 57 +235 LET A[5] = 72 +240 LET A[6] = 89 +245 LET A[7] = 104 +246 ARRAY B +250 LET B[0] = -1 +255 LET B[1] = 15 +260 LET B[2] = 25 +265 LET B[3] = 35 +270 LET B[4] = 72 +275 LET B[5] = 21 +280 LET B[6] = 58 +285 LET B[7] = 7 +290 RETURN +390 REM Show row and column for element +400 LET I = 7 +410 IF A(I) <= N THEN 440 +420 LET I = I-1 +430 GOTO 410 +440 LET M = N+B(I) +450 LET R = INT(M/18)+1 +460 LET C = M-INT(M/18)*18+1 +470 PRINT N; " -> "; R; " "; C +480 RETURN +1030 REM Example elements (atomic numbers). +1040 DATA 1, 2, 29, 42, 57, 58, 72, 89, 90, 103 diff --git a/Task/Perlin-noise/00-TASK.txt b/Task/Perlin-noise/00-TASK.txt index c9df3219ca..70584af5e0 100644 --- a/Task/Perlin-noise/00-TASK.txt +++ b/Task/Perlin-noise/00-TASK.txt @@ -1,9 +1,8 @@ -The   '''[[wp:Perlin noise|Perlin noise]]'''   is a kind of   [[wp:gradient noise|gradient noise]]   invented by   [[wp:Ken Perlin|Ken Perlin]]   around the end of the twentieth century and still currently heavily used in   [[wp:computer graphics|computer graphics]],   most notably to procedurally generate textures or heightmaps. +The '''[[wp:Perlin noise|Perlin noise]]''' is a kind of [[wp:gradient noise|gradient noise]] invented by [[wp:Ken Perlin|Ken Perlin]] around the end of the twentieth century and still currently heavily used in [[wp:computer graphics|computer graphics]], most notably to procedurally generate textures or heightmaps. -The Perlin noise is basically a   [[random numbers|pseudo-random]]   mapping of   \R^d   into   \R   with an integer   d   which can be arbitrarily large but which is usually   2,   3,   or   4. - -Either by using a dedicated library or by implementing the algorithm, show that the Perlin noise   (as defined in 2002 in the Java implementation below)   of the point in 3D-space with coordinates     3.14,   42,   7     is     0.13691995878400012. +The Perlin noise is basically a [[random numbers|pseudo-random]] mapping of \R^d into \R with an integer d which can be arbitrarily large but which is usually 2, 3, or 4. +Either by using a dedicated library or by implementing the algorithm, show that the Perlin noise (as defined in 2002 in the Java implementation below) of the point in 3D-space with coordinates 3.14, 42, 7 is 0.13691995878400012. ''Note: this result assumes 64 bit IEEE-754 floating point calculations. If your language uses a different floating point representation, make a note of it and calculate the value accurate to 15 decimal places, or your languages accuracy threshold if it is less. Trailing zeros need not be displayed.''

diff --git a/Task/Perlin-noise/EasyLang/perlin-noise.easy b/Task/Perlin-noise/EasyLang/perlin-noise.easy new file mode 100644 index 0000000000..4b0f9dda52 --- /dev/null +++ b/Task/Perlin-noise/EasyLang/perlin-noise.easy @@ -0,0 +1,75 @@ +p[] = [ 151 160 137 91 90 15 131 13 201 95 96 53 194 233 7 225 140 36 103 30 69 142 8 99 37 240 21 10 23 190 6 148 247 120 234 75 0 26 197 62 94 252 219 203 117 35 11 32 57 177 33 88 237 149 56 87 174 20 125 136 171 168 68 175 74 165 71 134 139 48 27 166 77 146 158 231 83 111 229 122 60 211 133 230 220 105 92 41 55 46 245 40 244 102 143 54 65 25 63 161 1 216 80 73 209 76 132 187 208 89 18 169 200 196 135 130 116 188 159 86 164 100 109 198 173 186 3 64 52 217 226 250 124 123 5 202 38 147 118 126 255 82 85 212 207 206 59 227 47 16 58 17 182 189 28 42 223 183 170 213 119 248 152 2 44 154 163 70 221 153 101 155 167 43 172 9 129 22 39 253 19 98 108 110 79 113 224 232 178 185 112 104 218 246 97 228 251 34 242 193 238 210 144 12 191 179 162 241 81 51 145 235 249 14 239 107 49 192 214 31 181 199 106 157 184 84 204 176 115 121 50 45 127 4 150 254 138 236 205 93 222 114 67 29 24 72 243 141 128 195 78 66 215 61 156 180 ] +for i to 256 + p[] &= p[i] +. +func fade t . + return t * t * t * (t * (t * 6 - 15) + 10) +. +func lerp t a b . + return a + t * (b - a) +. +func grad hash x y z . + h = hash mod 16 + if h = 0 or h = 12 + return x + y + elif h = 1 or h = 14 + return y - x + elif h = 2 + return x - y + elif h = 3 + return -x - y + elif h = 4 + return x + z + elif h = 5 + return z - x + elif h = 6 + return x - z + elif h = 7 + return -x - z + elif h = 8 + return y + z + elif h = 9 or h = 13 + return z - y + elif h = 10 + return y - z + . + return -y - z +. +func noise x y z . + a = floor x mod 256 + b = floor y mod 256 + c = floor z mod 256 + xx = x mod 1 + yy = y mod 1 + zz = z mod 1 + u = fade xx + v = fade yy + w = fade zz + a0 = p[a + 1] + b + a1 = p[a0 + 1] + c + a2 = p[a0 + 2] + c + b0 = p[a + 2] + b + b1 = p[b0 + 1] + c + b2 = p[b0 + 2] + c + k1 = grad p[a1 + 1] xx yy zz + k2 = grad p[b1 + 1] (xx - 1) yy zz + k3 = grad p[a2 + 1] xx (yy - 1) zz + k4 = grad p[b2 + 1] (xx - 1) (yy - 1) zz + k5 = grad p[a1 + 2] xx yy (zz - 1) + k6 = grad p[b1 + 2] (xx - 1) yy (zz - 1) + k7 = grad p[a2 + 2] xx (yy - 1) (zz - 1) + k8 = grad p[b2 + 2] (xx - 1) (yy - 1) (zz - 1) + return lerp w (lerp v (lerp u k1 k2) (lerp u k3 k4)) (lerp v (lerp u k5 k6) (lerp u k7 k8)) +. +numfmt 17 0 +print noise 3.14 42 7 +# +# demo +for y = 0 to 199 + for x = 0 to 199 + p = noise (x / 30) (y / 30) 0.1 + move x / 2 y / 2 + color3 p p p + rect 0.6 0.6 + . +. diff --git a/Task/Permutations/Sidef/permutations-1.sidef b/Task/Permutations/Sidef/permutations-1.sidef index a6ed8f2ce8..0ad2fca05b 100644 --- a/Task/Permutations/Sidef/permutations-1.sidef +++ b/Task/Permutations/Sidef/permutations-1.sidef @@ -1,3 +1,3 @@ -[0,1,2].permutations { |p| - say p +[0,1,2].permutations { |*a| + say a } diff --git a/Task/Permutations/Sidef/permutations-2.sidef b/Task/Permutations/Sidef/permutations-2.sidef index 4a7fb305d3..e3ef9e1b86 100644 --- a/Task/Permutations/Sidef/permutations-2.sidef +++ b/Task/Permutations/Sidef/permutations-2.sidef @@ -2,7 +2,7 @@ func forperm(callback, n) { var idx = @^n loop { - callback([idx...]) + callback(idx...) var p = n-1 while (idx[p-1] > idx[p]) {--p} @@ -18,4 +18,4 @@ func forperm(callback, n) { return() } -forperm({|p| say p }, 3) +forperm({|*p| say p }, 3) diff --git a/Task/Permutations/Sidef/permutations-3.sidef b/Task/Permutations/Sidef/permutations-3.sidef index 81d0f2bc59..2a02a5f14c 100644 --- a/Task/Permutations/Sidef/permutations-3.sidef +++ b/Task/Permutations/Sidef/permutations-3.sidef @@ -1,8 +1,8 @@ func permutations(callback, set, perm=[]) { - set.is_empty && callback(perm) + set || callback(perm) for i in ^set { __FUNC__(callback, [ - set[(0 ..^ i)..., (i+1 ..^ set.len)...] + set[^i, i+1 ..^ set.len] ], [perm..., set[i]]) } return() diff --git a/Task/Pi/IS-BASIC/pi.basic b/Task/Pi/IS-BASIC/pi.basic new file mode 100644 index 0000000000..03f948a093 --- /dev/null +++ b/Task/Pi/IS-BASIC/pi.basic @@ -0,0 +1,49 @@ +100 PROGRAM "PI.bas" +110 LET N=100 ! Nuber of digits +120 LET LN=INT(10*N/3)+16 +130 DIM A(LN) +140 LET PD,N9=0:LET ND=1 +150 FOR J=1 TO LN +160 LET A(J-1)=2 +170 NEXT +180 FOR J=1 TO N +190 LET Q=0 +200 FOR I=LN TO 1 STEP-1 +210 LET X=10*A(I-1)+Q*I +220 LET A(I-1)=X-(2*I-1)*INT(X/(2*I-1)) +230 LET Q=INT(X/(2*I-1)) +240 NEXT +250 LET A(0)=Q-10*INT(Q/10) +260 LET Q=INT(Q/10) +270 SELECT CASE Q +280 CASE 9 +290 LET N9=N9+1 +300 CASE 10 +310 LET D=PD+1:CALL WRITE +320 IF N9>0 THEN +330 FOR K=1 TO N9 +340 LET D=0:CALL WRITE +350 NEXT +360 END IF +370 LET PD,N9=0 +380 CASE ELSE +390 LET D=PD:CALL WRITE +400 LET PD=Q +410 IF N9<>0 THEN +420 FOR K=1 TO N9 +430 LET D=9:CALL WRITE +440 NEXT +450 LET N9=0 +460 END IF +470 END SELECT +480 NEXT +490 PRINT STR$(PD)(1) +500 END +510 DEF WRITE +520 IF ND=0 THEN +530 PRINT STR$(D)(1); +540 ELSE IF D<>0 THEN +550 PRINT STR$(D)(1);"."; +560 LET ND=0 +570 END IF +580 END DEF diff --git a/Task/Pi/MiniScript/pi.mini b/Task/Pi/MiniScript/pi.mini new file mode 100644 index 0000000000..3252d6f584 --- /dev/null +++ b/Task/Pi/MiniScript/pi.mini @@ -0,0 +1,50 @@ +digits = input("Enter number of digits to calculate after decimal point: ").val +// I've seen variations of this "precision" calculation from +// 10 * digits +// to +// floor(10 * digits / 3) + 16 +// A larger value provides a more precise calculation but also +// takes longer to run. Based on my testing, this calculation +// below for precision produces accurate output for inputs +// from 1 to 4000 - haven't tried larger than this. +precision = floor(10 * digits / 3) + 4 +A = [2] * precision +nines = 0 +predigit = 0 +cnt = 0 +while cnt <= digits + carry = 0 + for i in range(precision - 1, 1, -1) + temp = 10 * A[i] + carry * i + A[i] = temp % (2 * i - 1) + carry = floor(temp/(2 * i - 1)) + end for + A[1] = carry % 10 + carry = floor(carry / 10) + current = carry + if current == 9 then + nines += 1 + else if current == 10 then + print (predigit+1), "" + cnt += 1 + if nines > 0 then + print "9" * nines, "" + cnt += nines + end if + predigit = 0 + nines = 0 + else + // the first digit produced is always a zero + // don't need to see that + if cnt != 0 then print predigit, "" + cnt += 1 + predigit = current + if nines > 0 then + print "9" * nines, "" + cnt += nines + end if + nines = 0 + end if + if cnt == 2 then print ".", "" +end while +print str(predigit) * (cnt < digits + 2) diff --git a/Task/Pick-random-element/Elena/pick-random-element.elena b/Task/Pick-random-element/Elena/pick-random-element.elena index 3266b4e93e..029f2d2a15 100644 --- a/Task/Pick-random-element/Elena/pick-random-element.elena +++ b/Task/Pick-random-element/Elena/pick-random-element.elena @@ -3,7 +3,7 @@ import extensions; extension listOp { randomItem() - = self[randomGenerator.eval(self.Length)]; + = self[randomGenerator.nextInt(self.Length)]; } public program() diff --git a/Task/Pig-the-dice-game-Player/Sidef/pig-the-dice-game-player.sidef b/Task/Pig-the-dice-game-Player/Sidef/pig-the-dice-game-player.sidef index e7aa296e65..6ec36e7fc3 100644 --- a/Task/Pig-the-dice-game-Player/Sidef/pig-the-dice-game-player.sidef +++ b/Task/Pig-the-dice-game-Player/Sidef/pig-the-dice-game-player.sidef @@ -1,60 +1,60 @@ var (games=100) = ARGV.map{.to_i}... -define DIE = 1..6; -define GOAL = 100; +define DIE = 1..6 +define GOAL = 100 class Player(score=0, ante=0, rolls=0, strategy={false}) { method turn { - rolls = 0; - ante = 0; + rolls = 0 + ante = 0 loop { - rolls++; - given (var roll = DIE.rand) { + rolls++ + given (DIE.rand) { |roll| when (1) { - ante = 0; - break; + ante = 0 + break } case (roll > 1) { - ante += roll; + ante += roll } } - ((score + ante >= GOAL) || strategy) && break; + ((score + ante >= GOAL) || strategy) && break } - score += ante; + score += ante } } -var players = []; +var players = [] # default, go-for-broke, always roll again -players[0] = Player.new; +players[0] = Player() # try to roll 5 times but no more per turn -players[1] = Player.new( strategy: { players[1].rolls >= 5 } ); +players[1] = Player( strategy: { players[1].rolls >= 5 } ) # try to accumulate at least 20 points per turn -players[2] = Player.new( strategy: { players[2].ante > 20 } ); +players[2] = Player( strategy: { players[2].ante > 20 } ) # random but 90% chance of rolling again -players[3] = Player.new( strategy: { 1.rand < 0.1 } ); +players[3] = Player( strategy: { 1.rand < 0.1 } ) # random but more conservative as approaches goal -players[4] = Player.new( strategy: { 1.rand < ((GOAL - players[4].score) * 0.6 / GOAL) } ); +players[4] = Player( strategy: { 1.rand < ((GOAL - players[4].score) * 0.6 / GOAL) } ) -var wins = [0]*players.len; +var wins = players.len.of(0) games.times { - var player = -1; + var player = -1 loop { - player++; - var p = players[player % players.len]; - p.turn; - p.score >= GOAL && break; + player++ + var p = players[player % players.len] + p.turn + p.score >= GOAL && break } - wins[player % players.len]++; - players.map{.score}.join("\t").say; - players.each { |p| p.score = 0 }; + wins[player % players.len]++ + players.map{.score}.join("\t").say + players.each { |p| p.score = 0 } } -say "\nSCORES: for #{games} games"; -say wins.join("\t"); +say "\nSCORES: for #{games} games" +say wins.join("\t") diff --git a/Task/Pig-the-dice-game/Applesoft-BASIC/pig-the-dice-game.basic b/Task/Pig-the-dice-game/Applesoft-BASIC/pig-the-dice-game.basic new file mode 100644 index 0000000000..1c9edc02db --- /dev/null +++ b/Task/Pig-the-dice-game/Applesoft-BASIC/pig-the-dice-game.basic @@ -0,0 +1,35 @@ +100 NJ = 2 +110 MP = 100 +120 DIM APT(3) +130 APT(1) = 1 +140 APT(2) = 1 +150 HOME +160 PRINT "The game of PIG" +170 PRINT "===============";CHR$(13);CHR$(10) +180 PRINT "Si jugador saca un 1, no anota nada y se convierte en el turno del oponente." +190 PRINT "Si jugador saca 2-6, se agrega al total del turno y su turno continua." +200 PRINT "Si jugador elige 'mantener', su total de puntos se anade a su puntuacion,"; +210 PRINT " y se convierte en el turno del siguiente jugador.";CHR$(10) +220 PRINT "El primer jugador en anotar 100 o mas puntos gana.";CHR$(13);CHR$(10) +230 FOR J = 1 TO 2 +250 PT = 0 +260 IF APT(J) > MP THEN GOTO 370 +270 PRINT +280 PRINT "j";J;": (";APT(J);",";PT;")"; +290 INPUT " Tirada? (Sn) ";NT$ +300 IF NT$ = "S" OR NT$ = "s" THEN GOTO 400 +310 REM opcion N +320 APT(J) = APT(J)+PT +330 PRINT " Te quedas con: ";APT(J) +340 IF APT(J) >= MP THEN PRINT CHR$(10);"Gana el j";J;" con ";APT(J);" puntos." : END +350 GOTO 370 +360 GOTO 260 +370 NEXT J +380 GOTO 230 +390 END +400 REM opcion S +410 TIRA = INT(RND(1)*5)+1 +420 PRINT " tirada:";TIRA +430 IF TIRA = 1 THEN PRINT CHR$(10);"!Pierdes tu turno! j";J;" pero mantienes tu puntuacion anterior de ";APT(J) : GOTO 370 +440 PT = PT+TIRA +450 GOTO 360 diff --git a/Task/Pig-the-dice-game/Chipmunk-Basic/pig-the-dice-game.basic b/Task/Pig-the-dice-game/Chipmunk-Basic/pig-the-dice-game.basic new file mode 100644 index 0000000000..05d1ec161b --- /dev/null +++ b/Task/Pig-the-dice-game/Chipmunk-Basic/pig-the-dice-game.basic @@ -0,0 +1,42 @@ +100 numjugadores = 2 +110 maxpuntos = 100 +120 dim almacenpuntos(3) +130 almacenpuntos(1) = 1 +140 almacenpuntos(2) = 1 +150 cls +160 print "The game of PIG" +170 print "===============";chr$(13);chr$(10) +180 print "Si jugador saca un 1, no anota nada y se convierte en el turno del oponente." +190 print "Si jugador saca 2-6, se agrega al total del turno y su turno continúa." +200 print "Si jugador elige 'mantener', su total de puntos se añade a su puntuación,"; +210 print " y se convierte en el turno del siguiente jugador.";chr$(10) +220 print "El primer jugador en anotar 100 o más puntos gana.";chr$(13);chr$(10) +230 while +240 for jugador = 1 to 2 'numjugadores +250 puntos = 0 +260 while almacenpuntos(jugador) <= maxpuntos +270 print +280 print "Jugador ";jugador;": (";almacenpuntos(jugador);",";puntos;")"; +290 input " ¿Tirada? (Sn) ",nuevotiro$ +300 if ucase$(nuevotiro$) = "S" then +310 tirada = int(rnd(1)*5)+1 +320 print " Tirada:";tirada +330 if tirada = 1 then +340 print chr$(10);"¡Pierdes tu turno! jugador ";jugador; +350 print " pero mantienes tu puntuación anterior de ";almacenpuntos(jugador) +360 exit while +370 endif +380 puntos = puntos+tirada +390 else +400 almacenpuntos(jugador) = almacenpuntos(jugador)+puntos +410 print " Te quedas con: ";almacenpuntos(jugador) +420 if almacenpuntos(jugador) >= maxpuntos then +430 print chr$(10);"Gana el Jugador ";jugador;" con ";almacenpuntos(jugador);" puntos." +440 end +450 endif +460 exit while +470 endif +480 wend +490 next jugador +500 wend false +510 end diff --git a/Task/Pig-the-dice-game/EasyLang/pig-the-dice-game.easy b/Task/Pig-the-dice-game/EasyLang/pig-the-dice-game.easy new file mode 100644 index 0000000000..6cab7a1c42 --- /dev/null +++ b/Task/Pig-the-dice-game/EasyLang/pig-the-dice-game.easy @@ -0,0 +1,128 @@ +col[] = [ 997 977 ] +subr initvars + sum = 0 + stat = 0 + sum[] = [ 0 0 ] + player = 1 +. +proc btn x y txt$ . . + color 666 + linewidth 18 + move x y + line x + 15 y + move x - 4 y - 3 + color 000 + textsize 10 + text txt$ +. +proc show . . + background col[player] + clear + move 8 78 + color 000 + textsize 10 + text "Player-" & player + textsize 8 + move 8 66 + text "Total: " & sum[player] + textsize 5 + # + h = 3 - player + color col[h] + move 65 63 + rect 30 19 + move 68 74 + color 000 + text "Player-" & h + textsize 4 + move 68 67 + text "Total: " & sum[h] + # + btn 20 20 "Roll" + btn 70 20 "Hold" +. +proc nxtplayer . . + sum[player] += sum + if sum > 0 + sum = 0 + show + . + move 10 92 + textsize 7 + color 000 + if sum[player] >= 100 + text "You won !" + stat = 3 + else + text "Switch player ..." + player = 3 - player + stat = 2 + . + timer 2 +. +on timer + if stat = 1 + # roll + if tmcnt = 0 + move 44 37 + color col[player] + rect 30 10 + if dice > 1 + sum += dice + stat = 0 + else + sum = 0 + . + color 000 + text sum + if dice = 1 + nxtplayer + . + else + color 555 + move 24 34 + rect 13 13 + color 000 + move 27 37 + dice = random 6 + text dice + tmcnt -= 1 + if tmcnt = 0 + timer 0.5 + else + timer 0.1 + . + . + elif stat = 2 + stat = 0 + show + elif stat = 3 + move 0 0 + color col[player] + rect 100 30 + color 000 + move 10 30 + text "Click for new game" + stat = 4 + . +. +proc roll . . + stat = 1 + tmcnt = 10 + textsize 10 + timer 0 +. +on mouse_down + if stat = 0 + if mouse_x > 10 and mouse_x < 45 and mouse_y > 10 and mouse_y < 30 + roll + elif mouse_x > 60 and mouse_x < 95 and mouse_y > 10 and mouse_y < 30 + nxtplayer + . + elif stat = 4 + initvars + show + . +. +initvars +show diff --git a/Task/Pig-the-dice-game/MSX-Basic/pig-the-dice-game.basic b/Task/Pig-the-dice-game/MSX-Basic/pig-the-dice-game.basic new file mode 100644 index 0000000000..5df4069b6f --- /dev/null +++ b/Task/Pig-the-dice-game/MSX-Basic/pig-the-dice-game.basic @@ -0,0 +1,36 @@ +100 NJ = 2 +110 MP = 100 +120 DIM APT(3) +130 APT(1) = 1 +140 APT(2) = 1 +150 CLS +160 PRINT "The game of PIG" +170 PRINT "===============";CHR$(13);CHR$(10) +180 PRINT "Si jugador saca un 1, no anota nada y se convierte en el turno del oponente." +190 PRINT "Si jugador saca 2-6, se agrega al total del turno y su turno continua." +200 PRINT "Si jugador elige 'mantener', su total de puntos se anade a su puntuacion,"; +210 PRINT " y se convierte en el turno del siguiente jugador.";CHR$(10) +220 PRINT "El primer jugador en anotar 100 o mas puntos gana.";CHR$(13);CHR$(10) +230 'while +240 FOR J = 1 TO 2 'nj +250 PT = 0 +260 IF APT(J) > MP THEN GOTO 370 +270 PRINT +280 PRINT "j";J;": (";APT(J);",";PT;")"; +290 INPUT " Tirada? (Sn) ";NT$ +300 IF NT$ = "S" OR NT$ = "s" THEN GOTO 400 +310 REM opcion N +320 APT(J) = APT(J)+PT +330 PRINT " Te quedas con: ";APT(J) +340 IF APT(J) >= MP THEN PRINT CHR$(10);"Gana el j";J;"con";APT(J);"puntos." : END +350 GOTO 370 'exit while +360 GOTO 260 +370 NEXT J +380 GOTO 230 +390 END +400 REM opcion S +410 TIRA = INT(RND(1)*5)+1 +420 PRINT " tirada:";TIRA +430 IF TIRA = 1 THEN PRINT CHR$(10);"!Pierdes tu turno! j";J;"pero mantienes tu puntuacion anterior de";APT(J) : GOTO 370 'exit while +440 PT = PT+TIRA +450 GOTO 360 diff --git a/Task/Pig-the-dice-game/SETL/pig-the-dice-game.setl b/Task/Pig-the-dice-game/SETL/pig-the-dice-game.setl new file mode 100644 index 0000000000..eaf820a2e9 --- /dev/null +++ b/Task/Pig-the-dice-game/SETL/pig-the-dice-game.setl @@ -0,0 +1,46 @@ +program pig; + setrandom(0); + scores := {[1,0], [2,0]}; + + t := 1; + loop until exists n = scores(p) | n >= 100 do + print("Current score: player 1 = " + str scores(1) + + ", player 2 = " + str scores(2)); + scores(t) +:= turn(t); + t := 3-t; + end loop; + + print("Player " + str p + " wins!"); + print("Final score: player 1 = " + str scores(1) + + ", player 2 = " + str scores(2)); + + proc turn(p); + score := 0; + loop do + putchar("Player " + str p + " - " + str score + " - R)oll or H)old? "); + loop doing + flush(stdout); + choice := to_upper getline(stdin); + while choice notin {"R","H"} do + putchar("Invalid input. R)oll or H)old? "); + end loop; + + if choice = "H" then + print("Player " + str p + "'s turn ends with " + str score + " points."); + return score; + end if; + + if (die := roll()) = 6 then + print("You rolled a 6. You lose your points and your turn ends."); + return 0; + end if; + + print("You rolled a " + str die + "."); + score +:= die; + end loop; + end proc; + + proc roll(); + return 1 + random(5); + end proc; +end program; diff --git a/Task/Pig-the-dice-game/Yabasic/pig-the-dice-game.basic b/Task/Pig-the-dice-game/Yabasic/pig-the-dice-game.basic new file mode 100644 index 0000000000..bd6e464239 --- /dev/null +++ b/Task/Pig-the-dice-game/Yabasic/pig-the-dice-game.basic @@ -0,0 +1,43 @@ +numjugadores = 2 +maxpuntos = 100 +dim almacenpuntos(3) +almacenpuntos(1) = 1 +almacenpuntos(2) = 1 + +clear screen +print "The game of PIG" +print "===============", chr$(13), chr$(10) +print "Si jugador saca un 1, no anota nada y se convierte en el turno del oponente." +print "Si jugador saca 2-6, se agrega al total del turno y su turno continúa." +print "Si jugador elige 'mantener', su total de puntos se añade a su puntuación,"; +print " y se convierte en el turno del siguiente jugador.", chr$(10) +print "El primer jugador en anotar 100 o más puntos gana.", chr$(13), chr$(10) + +repeat + for jugador = 1 to 2 //numjugadores + puntos = 0 + + while almacenpuntos(jugador) <= maxpuntos + print "\nJugador ", jugador, ": (", almacenpuntos(jugador), ",", puntos, ")"; + input " Tirada? (Sn) " nuevotiro$ + if upper$(nuevotiro$) = "S" then + tirada = int(ran(5)) + 1 + print " Tirada:", tirada + if tirada = 1 then + print chr$(10), "¡Pierdes tu turno! jugador ", jugador; + print " pero mantienes tu puntuación anterior de ", almacenpuntos(jugador) + break + fi + puntos = puntos + tirada + else + almacenpuntos(jugador) = almacenpuntos(jugador) + puntos + print " Te quedas con: ", almacenpuntos(jugador) + if almacenpuntos(jugador) >= maxpuntos then + print chr$(10), "Gana el Jugador ", jugador, " con ", almacenpuntos(jugador), " puntos." + end + fi + break + fi + wend + next jugador +until false diff --git a/Task/Polymorphism/Elena/polymorphism.elena b/Task/Polymorphism/Elena/polymorphism.elena index 87bf7a0164..03bd130d3d 100644 --- a/Task/Polymorphism/Elena/polymorphism.elena +++ b/Task/Polymorphism/Elena/polymorphism.elena @@ -2,8 +2,8 @@ import extensions; class Point { - prop int X; - prop int Y; + int X : prop; + int Y : prop; constructor new(int x, int y) { @@ -19,7 +19,7 @@ class Point class Circle : Point { - prop int R; + int R : prop; constructor new() <= new(0); @@ -28,7 +28,7 @@ class Circle : Point <= new(0, 0, r); constructor new(int x, int y, int r) - <= new(x, y) + <= super new(x, y) { R := r } diff --git a/Task/Polynomial-long-division/ALGOL-68/polynomial-long-division.alg b/Task/Polynomial-long-division/ALGOL-68/polynomial-long-division.alg new file mode 100644 index 0000000000..a6d2bbb09f --- /dev/null +++ b/Task/Polynomial-long-division/ALGOL-68/polynomial-long-division.alg @@ -0,0 +1,107 @@ +BEGIN # polynomial division # + # in this polynomials are represented by []INT items where # + # the coefficients are in order of increasing powers, i.e., # + # element 0 = coefficient of x^0, element 1 = coefficient of # + # x^1, etc. # + + # returns the degree of the polynomial p, the highest index of # + # p where the element is non-zero or - max int if all # + # elements of p are 0 # + OP DEGREE = ( []INT p )INT: + BEGIN + INT result := - max int; + FOR i FROM LWB p TO UPB p DO + IF p[ i ] /= 0 THEN result := i FI + OD; + result + END # DEGREE # ; + + MODE POLYNOMIALDIVISIONRESULT = STRUCT( FLEX[ 1 : 0 ]INT q, r ); + + # in-place multiplication of the elements of a by b returns a # + OP *:= = ( REF[]INT a, INT b )REF[]INT: + BEGIN + FOR i FROM LWB a TO UPB a DO + a[ i ] *:= b + OD; + a + END # *:= # ; + # subtracts the corresponding elements of b from those of a, # + # a and b must have the same bounds - returns a # + OP -:= = ( REF[]INT a, []INT b )REF[]INT: + BEGIN + FOR i FROM LWB a TO UPB a DO + a[ i ] -:= b[ i ] + OD; + a + END # -:= # ; + # returns the polynomial a right-shifted by shift, the bounds # + # are unchanged, so high order elements are lost # + OP SHR = ( []INT a, INT shift )[]INT: + BEGIN + INT da = DEGREE a; + [ LWB a : UPB a ]INT result; + FOR i FROM LWB result TO shift - ( LWB result + 1 ) DO result[ i ] := 0 OD; + FOR i FROM shift - LWB result TO UPB result DO result[ i ] := a[ i - shift ] OD; + result + END # SHR # ; + + # polynomial long disivion of n in by d in, returns q and r # + OP / = ( []INT n in, d in )POLYNOMIALDIVISIONRESULT: + IF DEGREE d < 0 THEN + print( ( "polynomial division by polynomial with negative degree", newline ) ); + stop + ELSE + [ LWB d in : UPB d in ]INT d := d in; + [ LWB n in : UPB n in ]INT n := n in; + [ LWB n in : UPB n in ]INT q; FOR i FROM LWB q TO UPB q DO q[ i ] := 0 OD; + INT dd in = DEGREE d in; + WHILE DEGREE n >= dd in DO + d := d in SHR ( DEGREE n - dd in ); + q[ DEGREE n - dd in ] := n[ DEGREE n ] OVER d[ DEGREE d ]; + # DEGREE d is now DEGREE n # + d *:= q[ DEGREE n - dd in ]; + n -:= d + OD; + ( q, n ) + FI # / # ; + + # displays the polynomial p # + OP SHOWPOLYNOMIAL = ( []INT p )VOID: + BEGIN + BOOL first := TRUE; + FOR i FROM UPB p BY - 1 TO LWB p DO + IF INT e = p[ i ]; + e /= 0 + THEN + print( ( IF e < 0 AND first THEN "-" + ELIF e < 0 THEN " - " + ELIF first THEN "" + ELSE " + " + FI + , IF ABS e = 1 THEN "" ELSE whole( ABS e, 0 ) FI + ) + ); + IF i > 0 THEN + print( ( "x" ) ); + IF i > 1 THEN print( ( "^", whole( i, 0 ) ) ) FI + FI; + first := FALSE + FI + OD; + IF first THEN + # degree is negative # + print( ( "(negative degree)" ) ) + FI + END # SHOWPOLYNOMIAL # ; + + []INT n = ( []INT( -42, 0, -12, 1 ) )[ AT 0 ]; + []INT d = ( []INT( -3, 1, 0, 0 ) )[ AT 0 ]; + + POLYNOMIALDIVISIONRESULT qr = n / d; + + SHOWPOLYNOMIAL n; print( ( " divided by " ) ); SHOWPOLYNOMIAL d; + print( ( newline, " -> Q: " ) ); SHOWPOLYNOMIAL q OF qr; + print( ( newline, " R: " ) ); SHOWPOLYNOMIAL r OF qr + +END diff --git a/Task/Polynomial-long-division/Jq/polynomial-long-division.jq b/Task/Polynomial-long-division/Jq/polynomial-long-division.jq index 3065022ca5..706c35f440 100644 --- a/Task/Polynomial-long-division/Jq/polynomial-long-division.jq +++ b/Task/Polynomial-long-division/Jq/polynomial-long-division.jq @@ -22,7 +22,7 @@ def divrem($divisor): .curr[.base + $i] += (- $res * $divisor[$i]) ) | .base += -1 ) - | (.result | reverse), (.curr | canonical)]; + | [(.result | reverse), (.curr | canonical)]; def demo($num; $den): {$num, $den, diff --git a/Task/Polynomial-long-division/Phix/polynomial-long-division.phix b/Task/Polynomial-long-division/Phix/polynomial-long-division.phix index f788e39f42..af19082e05 100644 --- a/Task/Polynomial-long-division/Phix/polynomial-long-division.phix +++ b/Task/Polynomial-long-division/Phix/polynomial-long-division.phix @@ -1,73 +1,71 @@ -(phixonline)--> - -- demo\rosetta\Polynomial_long_division.exw - with javascript_semantics +-- demo\rosetta\Polynomial_long_division.exw +with javascript_semantics - function degree(sequence p) - for i=length(p) to 1 by -1 do - if p[i]!=0 then return i end if - end for - return -1 - end function +function degree(sequence p) + for i=length(p) to 1 by -1 do + if p[i]!=0 then return i end if + end for + return -1 +end function - function poly_div(sequence n, d) - d = deep_copy(d) - while length(d)<length(n) do d &=0 end while - integer dn = degree(n), - dd = degree(d) - if dd<0 then throw("divide by zero") end if - sequence quo = repeat(0,dn), - rem = deep_copy(n) - while dn>=dd do - integer k = dn-dd, qk = rem[dn]/d[dd] - sequence d2 = d[1..length(d)-k] - quo[k+1] = qk - for i=1 to length(d2) do - integer mi = -i - rem[mi] -= d2[mi]*qk - end for - dn = degree(rem) - end while - return {quo,rem} - end function +function poly_div(sequence n, d) + d = deep_copy(d) + while length(d)=dd do + integer k = dn-dd, qk = rem[dn]/d[dd] + sequence d2 = d[1..length(d)-k] + quo[k+1] = qk + for i=1 to length(d2) do + integer mi = -i + rem[mi] -= d2[mi]*qk + end for + dn = degree(rem) + end while + return {quo,rem} +end function - function poly(sequence si) - -- display helper - string r = "" - for t=length(si) to 1 by -1 do - integer sit = si[t] - if sit!=0 then - if sit=1 and t>1 then - r &= iff(r=""? "":" + ") - elsif sit=-1 and t>1 then - r &= iff(r=""?"-":" - ") - else - if r!="" then - r &= iff(sit<0?" - ":" + ") - sit = abs(sit) - end if - r &= sprintf("%d",sit) - end if - r &= iff(t>1?"x"&iff(t>2?sprintf("^%d",t-1):""):"") - end if - end for - if r="" then r="0" end if - return r - end function +function poly(sequence si) + -- display helper + string r = "" + for t=length(si) to 1 by -1 do + integer sit = si[t] + if sit!=0 then + if sit=1 and t>1 then + r &= iff(r=""? "":" + ") + elsif sit=-1 and t>1 then + r &= iff(r=""?"-":" - ") + else + if r!="" then + r &= iff(sit<0?" - ":" + ") + sit = abs(sit) + end if + r &= sprintf("%d",sit) + end if + r &= iff(t>1?"x"&iff(t>2?sprintf("^%d",t-1):""):"") + end if + end for + if r="" then r="0" end if + return r +end function - constant tests = {{{-42,0,-12,1},{-3,1}}, - {{-3,1},{-42,0,-12,1}}, - {{-42,0,-12,1},{-3,1,1}}, - {{2,3,1},{1,1}}, - {{3,5,6,-4,1},{1,2,1}}, - {{3,0,7,0,0,0,0,0,3,0,0,1},{1,0,0,5,0,0,0,1}}, - {{-56,87,-94,-55,22,-7},{2,0,1}}, - } +constant tests = {{{-42,0,-12,1},{-3,1}}, + {{-3,1},{-42,0,-12,1}}, + {{-42,0,-12,1},{-3,1,1}}, + {{2,3,1},{1,1}}, + {{3,5,6,-4,1},{1,2,1}}, + {{3,0,7,0,0,0,0,0,3,0,0,1},{1,0,0,5,0,0,0,1}}, + {{-56,87,-94,-55,22,-7},{2,0,1}}, + } - constant fmt = "%40s / %-16s = %25s rem %s\n" +constant fmt = "%40s / %-16s = %25s rem %s\n" - for i=1 to length(tests) do - sequence {num,den} = tests[i], - {quo,rem} = poly_div(num,den) - printf(1,fmt,apply({num,den,quo,rem},poly)) - end for - { ) + + [ say "{" 0 swap + [ dup 0 != while + dup 1 & if [ over emit ] + 1 >> dip 1+ again ] + 2drop say "} " ] is echoset ( { --> ) + + [ [] swap dup size 1 - times + [ behead over witheach + [ 2dup & iff + [ | swap i^ poke + [] conclude ] + else drop ] + swap dip join ] + join ] is consolidate ( [ --> [ ) + + [ dup witheach echoset + say "--> " + consolidate witheach echoset + cr ] is task ( [ --> ) + + $ "AB" ->set + $ "CD" ->set join + task + $ "AB" ->set + $ "BD" ->set join + task + $ "AB" ->set + $ "CD" ->set join + $ "DB" ->set join + task + $ "HIK" ->set + $ "AB" ->set join + $ "CD" ->set join + $ "DB" ->set join + $ "FGH" ->set join + task diff --git a/Task/Set-consolidation/SETL/set-consolidation.setl b/Task/Set-consolidation/SETL/set-consolidation.setl new file mode 100644 index 0000000000..96836e2883 --- /dev/null +++ b/Task/Set-consolidation/SETL/set-consolidation.setl @@ -0,0 +1,26 @@ +program set_consolidation; + tests := [ + {{'A','B'}, {'C','D'}}, + {{'A','B'}, {'B','D'}}, + {{'A','B'}, {'C','D'}, {'D','B'}}, + {{'H','I','K'}, {'A','B'}, {'C','D'}, {'D','B'}, {'F','G','H'}} + ]; + + loop for t in tests do + print(consolidate(t)); + end loop; + + proc consolidate(sets); + outp := {}; + loop while sets /= {} do + set_ from sets; + loop until overlap = {} do + overlap := {s : s in sets | exists el in s | el in set_}; + set_ +:= {} +/ overlap; + sets -:= overlap; + end loop; + outp with:= set_; + end loop; + return outp; + end proc; +end program; diff --git a/Task/Set-puzzle/EasyLang/set-puzzle.easy b/Task/Set-puzzle/EasyLang/set-puzzle.easy new file mode 100644 index 0000000000..876402c56a --- /dev/null +++ b/Task/Set-puzzle/EasyLang/set-puzzle.easy @@ -0,0 +1,75 @@ +attr$[][] &= [ "one " "two " "three" ] +attr$[][] &= [ "solid " "striped" "open " ] +attr$[][] &= [ "red " "green " "purple" ] +attr$[][] &= [ "diamond" "oval" "squiggle" ] +# +subr init + for card = 0 to 80 + pack[] &= card + . +. +proc card2attr card . attr[] . + attr[] = [ ] + for i to 4 + attr[] &= card mod 3 + 1 + card = card div 3 + . +. +proc printcards cards[] . . + for card in cards[] + card2attr card attr[] + for i to 4 + write attr$[i][attr[i]] & " " + . + print "" + . + print "" +. +proc getsets . cards[] set[] . + set[] = [ ] + for i to len cards[] + card2attr cards[i] a[] + for j = i + 1 to len cards[] + card2attr cards[j] b[] + for k = j + 1 to len cards[] + card2attr cards[k] c[] + ok = 1 + for at to 4 + s = a[at] + b[at] + c[at] + if s <> 3 and s <> 6 and s <> 9 + ok = 0 + . + . + if ok = 1 + set[] &= cards[i] + set[] &= cards[j] + set[] &= cards[k] + . + . + . + . +. +proc run ncards nsets . . + # + repeat + init + cards[] = [ ] + for i to ncards + ind = random len pack[] + cards[] &= pack[ind] + pack[ind] = pack[len pack[]] + len pack[] -1 + . + getsets cards[] set[] + until len set[] = 3 * nsets + . + print "Cards:" + printcards cards[] + print "Sets:" + for i = 1 step 3 to 3 * nsets - 2 + printcards [ set[i] set[i + 1] set[i + 2] ] + . +. +run 9 4 +print " --------------------------" +run 12 6 diff --git a/Task/Set-puzzle/Quackery/set-puzzle.quackery b/Task/Set-puzzle/Quackery/set-puzzle.quackery new file mode 100644 index 0000000000..551ec31590 --- /dev/null +++ b/Task/Set-puzzle/Quackery/set-puzzle.quackery @@ -0,0 +1,18 @@ + [ temp put + [ dup cards dup + sets dup size + temp share != while + 2drop again ] + swap + say "Cards:" cr + witheach echocard + cr + say "Sets:" cr + witheach + [ witheach echocard cr ] + drop + temp release ] is task ( n n --> ) + + basic task + cr + advanced task diff --git a/Task/Set-right-adjacent-bits/Quackery/set-right-adjacent-bits.quackery b/Task/Set-right-adjacent-bits/Quackery/set-right-adjacent-bits.quackery new file mode 100644 index 0000000000..7f75b03dcf --- /dev/null +++ b/Task/Set-right-adjacent-bits/Quackery/set-right-adjacent-bits.quackery @@ -0,0 +1,48 @@ + [ 2 base put + nextword dup + $ '' = if + [ $ '"bin" needs a number after it.' + message put + bail ] + dup $->n iff + [ nip swap dip join ] + else + [ drop + char " swap join + $ '" is not binary.' + join message put + bail ] + base release ] builds bin ( [ $ --> [ $ ) + + [ [] unrot + times + [ dup 1 & + rot join swap + 1 >> ] + drop + witheach echo ] is echobin ( n n --> ) + + + [ dip dup times + [ 1 >> tuck | swap ] + drop ] is setrightbits ( n --> n ) + + say "n = 2; Width e = 4:" + cr cr + ' [ bin 1000 bin 0100 + bin 0010 bin 0001 ] + witheach + [ say "Input b: " + dup 4 echobin cr + say "Result: " + 2 setrightbits + 4 echobin cr cr ] + 4 times + [ say "n = " i^ echo + say " Width e = 66:" cr + say "Input b: " + bin 010000000000100000000010000000010000000100000010000010000100010010 + dup 66 echobin cr + say "Result: " + i^ setrightbits + 66 echobin cr cr ] diff --git a/Task/Sierpinski-carpet/AppleScript/sierpinski-carpet-3.applescript b/Task/Sierpinski-carpet/AppleScript/sierpinski-carpet-3.applescript new file mode 100644 index 0000000000..d7a1d6f190 --- /dev/null +++ b/Task/Sierpinski-carpet/AppleScript/sierpinski-carpet-3.applescript @@ -0,0 +1,31 @@ +on SierpinskiCarpet(n, char) + if (n < 0) then return {} + script o + property lst1 : {char} + property lst2 : missing value + end script + + set gap to space + repeat with k from 0 to (n - 1) + copy o's lst1 to o's lst2 + repeat with i from 1 to (3 ^ k) + set str to o's lst1's item i + set o's lst1's item i to str & str & str + set o's lst2's item i to str & gap & str + end repeat + set o's lst1 to o's lst1 & o's lst2 & o's lst1 + set gap to gap & gap & gap + end repeat + + return join(o's lst1, linefeed) +end SierpinskiCarpet + +on join(lst, delim) + set astid to AppleScript's text item delimiters + set AppleScript's text item delimiters to delim + set txt to lst as text + set AppleScript's text item delimiters to astid + return txt +end join + +return SierpinskiCarpet(3, "#") diff --git a/Task/Sierpinski-carpet/IS-BASIC/sierpinski-carpet.basic b/Task/Sierpinski-carpet/IS-BASIC/sierpinski-carpet.basic new file mode 100644 index 0000000000..982e7bd998 --- /dev/null +++ b/Task/Sierpinski-carpet/IS-BASIC/sierpinski-carpet.basic @@ -0,0 +1,15 @@ +100 PROGRAM "Sierpins.bas" +110 LET O=3 +120 LET SZ=3^O +130 FOR Y=0 TO SZ-1 +140 FOR X=0 TO SZ-1 +150 LET CH$=CHR$(159) +160 LET X1=X:LET Y1=Y +170 DO UNTIL X1=0 +180 IF MOD(X1,3)=1 AND MOD(Y1,3)=1 THEN LET CH$=" ":EXIT DO +190 LET X1=INT(X1/3):LET Y1=INT(Y1/3) +200 LOOP +210 PRINT CH$; +220 NEXT +230 PRINT +240 NEXT diff --git a/Task/Sierpinski-triangle/SETL/sierpinski-triangle.setl b/Task/Sierpinski-triangle/SETL/sierpinski-triangle.setl new file mode 100644 index 0000000000..1c53804941 --- /dev/null +++ b/Task/Sierpinski-triangle/SETL/sierpinski-triangle.setl @@ -0,0 +1,13 @@ +program sierpinski; + const size = 4; + + loop for i in [0..size*4-1] do + putchar(' ' * (size*4-1-i)); + c := 1; + loop for j in [0..i] do + putchar(if c mod 2=0 then " " else " *" end); + c := c*(i-j) div (j+1); + end loop; + print; + end loop; +end program; diff --git a/Task/Sieve-of-Eratosthenes/SETL/sieve-of-eratosthenes.setl b/Task/Sieve-of-Eratosthenes/SETL/sieve-of-eratosthenes.setl new file mode 100644 index 0000000000..24eb271759 --- /dev/null +++ b/Task/Sieve-of-Eratosthenes/SETL/sieve-of-eratosthenes.setl @@ -0,0 +1,14 @@ +program eratosthenes; + print(sieve 100); + + op sieve(n); + numbers := [1..n]; + numbers(1) := om; + loop for i in [2..floor sqrt n] do + loop for j in [i*i, i*i+i..n] do + numbers(j) := om; + end loop; + end loop; + return [n : n in numbers | n /= om]; + end op; +end program; diff --git a/Task/Simple-windowed-application/Elena/simple-windowed-application.elena b/Task/Simple-windowed-application/Elena/simple-windowed-application.elena index 708f98c2f0..5646f7c497 100644 --- a/Task/Simple-windowed-application/Elena/simple-windowed-application.elena +++ b/Task/Simple-windowed-application/Elena/simple-windowed-application.elena @@ -10,7 +10,7 @@ public class MainWindow : SDIDialog int clicksCount; constructor new() - <= new() + <= super new() { lblClicks := Label.new(); btmClickMe := Button.new(); diff --git a/Task/Simple-windowed-application/Sidef/simple-windowed-application.sidef b/Task/Simple-windowed-application/Sidef/simple-windowed-application-1.sidef similarity index 100% rename from Task/Simple-windowed-application/Sidef/simple-windowed-application.sidef rename to Task/Simple-windowed-application/Sidef/simple-windowed-application-1.sidef diff --git a/Task/Simple-windowed-application/Sidef/simple-windowed-application-2.sidef b/Task/Simple-windowed-application/Sidef/simple-windowed-application-2.sidef new file mode 100644 index 0000000000..8e053f0eed --- /dev/null +++ b/Task/Simple-windowed-application/Sidef/simple-windowed-application-2.sidef @@ -0,0 +1,27 @@ +use('Gtk3 -init') + +# Window. +var window = %O'Gtk3::Window'.new +window.signal_connect('destroy' => { %O'Gtk3'.main_quit }) + +# VBox. +var vbox = %O'Gtk3::VBox'.new(0, 0) +window.add(vbox) + +# Label. +var label = %O'Gtk3::Label'.new('There have been no clicks yet.') +vbox.add(label) + +# Button. +var count = 0 +var button = %O'Gtk3::Button'.new(' Click Me '); +vbox.add(button) +button.signal_connect('clicked' => { + label.set_text(++count) +}) + +# Show. +window.show_all + +# Main loop. +%O'Gtk3'.main diff --git a/Task/Singly-linked-list-Element-definition/Elena/singly-linked-list-element-definition.elena b/Task/Singly-linked-list-Element-definition/Elena/singly-linked-list-element-definition.elena index d8b5381509..b067799398 100644 --- a/Task/Singly-linked-list-Element-definition/Elena/singly-linked-list-element-definition.elena +++ b/Task/Singly-linked-list-Element-definition/Elena/singly-linked-list-element-definition.elena @@ -1,7 +1,7 @@ class Link { - prop int Item; - prop Link Next; + int Item : prop; + Link Next : prop; constructor(int item, Link next) { diff --git a/Task/Singly-linked-list-Element-definition/MiniScript/singly-linked-list-element-definition.mini b/Task/Singly-linked-list-Element-definition/MiniScript/singly-linked-list-element-definition.mini new file mode 100644 index 0000000000..07bb1b226e --- /dev/null +++ b/Task/Singly-linked-list-Element-definition/MiniScript/singly-linked-list-element-definition.mini @@ -0,0 +1,45 @@ +Node = {"item": null, "next": null} +Node.init = function(item) + node = new Node + node.item = item + return node +end function + +LinkedList = {"head": null, "tail": null} +LinkedList.append = function(item) + newNode = Node.init(item) + if self.head == null then + self.head = newNode + self.tail = self.head + else + self.tail.next = newNode + self.tail = self.tail.next + end if +end function + +LinkedList.insert = function(aftItem, item) + newNode = Node.init(item) + cursor = self.head + while cursor.item != aftItem + print cursor.item + cursor = cursor.next + end while + newNode.next = cursor.next + cursor.next = newNode +end function + +LinkedList.traverse = function + cursor = self.head + while cursor != null + // do stuff + print cursor.item + cursor = cursor.next + end while +end function + +test = new LinkedList +test.append("A") +test.append("B") +test.insert("A","C") + +test.traverse diff --git a/Task/Singly-linked-list-Element-insertion/MiniScript/singly-linked-list-element-insertion.mini b/Task/Singly-linked-list-Element-insertion/MiniScript/singly-linked-list-element-insertion.mini new file mode 100644 index 0000000000..565e10b4f9 --- /dev/null +++ b/Task/Singly-linked-list-Element-insertion/MiniScript/singly-linked-list-element-insertion.mini @@ -0,0 +1,7 @@ +> myList = [100, 101, 102] +> myList.push 103 +[100, 101, 102, 103] +> myList.insert 0, 99 +[99, 100, 101, 102, 103] +> myList.insert 3,101.5 +[99, 100, 101, 101.5, 102, 103] diff --git a/Task/Singular-value-decomposition/C++/singular-value-decomposition.cpp b/Task/Singular-value-decomposition/C++/singular-value-decomposition-1.cpp similarity index 100% rename from Task/Singular-value-decomposition/C++/singular-value-decomposition.cpp rename to Task/Singular-value-decomposition/C++/singular-value-decomposition-1.cpp diff --git a/Task/Singular-value-decomposition/C++/singular-value-decomposition-2.cpp b/Task/Singular-value-decomposition/C++/singular-value-decomposition-2.cpp new file mode 100644 index 0000000000..2309de5861 --- /dev/null +++ b/Task/Singular-value-decomposition/C++/singular-value-decomposition-2.cpp @@ -0,0 +1,23 @@ +#include +#include +#include +#include + +int main() { + using namespace Eigen; + int rows, columns; + if (!(std::cin >> rows >> columns)) + return EXIT_FAILURE; + MatrixXd matrix(rows, columns); + for (int row = 0; row < rows; ++row) { + for (int column = 0; column < columns; ++column) { + if (!(std::cin >> matrix(row, column))) + return EXIT_FAILURE; + } + } + auto svd = matrix.bdcSvd().compute(matrix, ComputeFullU | ComputeFullV); + std::cout << std::setprecision(15) << std::fixed << svd.matrixU() << "\n\n" + << svd.singularValues() << "\n\n" + << svd.matrixV() << '\n'; + return EXIT_SUCCESS; +} diff --git a/Task/Smarandache-Wellin-primes/C++/smarandache-wellin-primes.cpp b/Task/Smarandache-Wellin-primes/C++/smarandache-wellin-primes.cpp index 8f36145054..f2e370145c 100644 --- a/Task/Smarandache-Wellin-primes/C++/smarandache-wellin-primes.cpp +++ b/Task/Smarandache-Wellin-primes/C++/smarandache-wellin-primes.cpp @@ -46,10 +46,10 @@ bool is_probably_prime(const big_int& n) { return mpz_probab_prime_p(n.get_mpz_t(), 25) != 0; } -std::string abbreviate(const std::string& str, size_t n) { +std::string abbreviate(std::string str, size_t max_digits) { size_t len = str.size(); - if (len > n) - return str.substr(0, n / 2) + "..." + str.substr(len - n / 2); + if (len > max_digits) + str.replace(max_digits / 2, len - max_digits, "..."); return str; } diff --git a/Task/Smarandache-Wellin-primes/EasyLang/smarandache-wellin-primes.easy b/Task/Smarandache-Wellin-primes/EasyLang/smarandache-wellin-primes.easy new file mode 100644 index 0000000000..eb08f5141d --- /dev/null +++ b/Task/Smarandache-Wellin-primes/EasyLang/smarandache-wellin-primes.easy @@ -0,0 +1,50 @@ +fastfunc isprim num . + i = 2 + while i <= sqrt num + if num mod i = 0 + return 0 + . + i += 1 + . + return 1 +. +func nextprim num . + while isprim num = 0 + num += 1 + . + return num +. +len digs[] 10 +prim = 1 +while len prsw[] < 3 or len prdsw[] < 3 + prim = nextprim (prim + 1) + h = prim + h[] = [ ] + while h > 0 + d = h mod 10 + digs[d + 1] += 1 + h[] &= d + h = h div 10 + . + for i = len h[] downto 1 + sw = sw * 10 + h[i] + . + if isprim sw = 1 + prsw[] &= sw + . + dsw = 0 + for i to 10 + if digs[i] = 0 + h = 10 + else + h = 1 + floor log10 digs[i] + h = pow 10 h + . + dsw = dsw * h + digs[i] + . + if isprim dsw = 1 + prdsw[] &= dsw + . +. +print prsw[] +print prdsw[] diff --git a/Task/Smarandache-Wellin-primes/J/smarandache-wellin-primes.j b/Task/Smarandache-Wellin-primes/J/smarandache-wellin-primes.j new file mode 100644 index 0000000000..579451d421 --- /dev/null +++ b/Task/Smarandache-Wellin-primes/J/smarandache-wellin-primes.j @@ -0,0 +1,27 @@ + derive=. [: <:@#/.~ i.@10 , ] + digits=. ;@:(<@("."0@":)"0) + + (#~ 1&p:) 10&#.@digits\ p: i. 10 +2 23 2357 + + (#~ 1 p: {:"1) (# , 10x&#.@digits@derive@digits)\ p: i. 1200 + 32 4194123321127 + 72 547233879626521 + 73 547233979727521 + 134 13672766322929571043 + 225 3916856106393739943689 + 303 462696313560586013558131 + 309 532727113760586013758133 + 363 6430314317473636515467149 + 462 8734722823685889120488197 + 490 9035923128899919621189209 + 495 9036023329699969621389211 + 522 9337023533410210710923191219 + 538 94374237357103109113243102223 + 624 117416265406198131121272110263 + 721 141459282456260193137317129313 + 738 144466284461264224139325131317 + 790 156483290479273277162351153339 + 852 164518312512286294233375158359 +1087 208614364610327343341589284471 +1188 229667386663354357356628334581 diff --git a/Task/Smith-numbers/Amazing-Hopper/smith-numbers.hopper b/Task/Smith-numbers/Amazing-Hopper/smith-numbers.hopper new file mode 100644 index 0000000000..74f40f9160 --- /dev/null +++ b/Task/Smith-numbers/Amazing-Hopper/smith-numbers.hopper @@ -0,0 +1,46 @@ +#include + +#proto muestranúmeroencontrado(_X_) + +algoritmo + + resultado={}, primos="", suma1=0, suma2=0 , i=1 + temp_primos=0, + + fijar separador 'NULO' + decimales '0' + + iterar para ( num=4, #(num<=10000), ++num ) + ir por el siguiente si ' es primo(num) ' + obtener divisores de (num); + luego obtener los primos de esto para 'primos' + + sumar los dígitos de 'num'; guardar en 'suma2' + + /* análisis p-ádico */ + guardar 'primos' en 'temp_primos' + iterar para(q=1, #( q<=length(temp_primos) ) , ++q ) + iterar para( r=2, #( (num % (temp_primos[q]^r)) == 0 ), ++r ) + #(temp_primos[q]); meter en 'primos' + siguiente + siguiente + + sumar dígitos de cada número de 'primos' + guardar en 'suma1' + + 'suma1' respecto a 'suma2' son iguales? + entonces{ + _muestra número encontrado 'num' + } + siguiente +terminar + +subrutinas + +muestra número encontrado (x) + imprimir ( #(lpad(" ",4,string(x))), solo si ( #(i<8), " " ) ) + ++i + cuando ( #(i>8) ){ + saltar, guardar '1' en 'i' + } +retornar diff --git a/Task/Smith-numbers/EasyLang/smith-numbers.easy b/Task/Smith-numbers/EasyLang/smith-numbers.easy new file mode 100644 index 0000000000..fd160e7f16 --- /dev/null +++ b/Task/Smith-numbers/EasyLang/smith-numbers.easy @@ -0,0 +1,32 @@ +proc prim_fact x . pf[] . + pf[] = [ ] + p = 2 + repeat + if x mod p = 0 + pf[] &= p + x = x div p + else + p += 1 + . + until x = 1 + . +. +func digsum x . + while x > 0 + sum += x mod 10 + x = x div 10 + . + return sum +. +for i = 2 to 9999 + prim_fact i pf[] + if len pf[] >= 2 + sum = 0 + for e in pf[] + sum += digsum e + . + if digsum i = sum + write i & " " + . + . +. diff --git a/Task/Smith-numbers/SETL/smith-numbers.setl b/Task/Smith-numbers/SETL/smith-numbers.setl new file mode 100644 index 0000000000..9a08a4c01f --- /dev/null +++ b/Task/Smith-numbers/SETL/smith-numbers.setl @@ -0,0 +1,38 @@ +program smith_numbers; + loop for s in [n : n in [2..9999] | smith(n)] do + putchar(lpad(str s, 5)); + if (i +:= 1) mod 16=0 then print; end if; + end loop; + print; + + proc smith(n); + facs := factors(n); + return #facs /= 1 and +/digits(n) = +/[+/digits(f) : f in facs]; + end proc; + + proc digits(n); + d := []; + loop while n > 0 do + d with:= n mod 10; + n div:= 10; + end loop; + return d; + end proc; + + proc factors(n); + f := []; + loop while even n do + n div:= 2; + f with:= 2; + end loop; + d := 3; + loop while d <= n do + loop while n mod d = 0 do + n div:= d; + f with:= d; + end loop; + d +:= 2; + end loop; + return f; + end proc; +end program; diff --git a/Task/Solve-a-Hidato-puzzle/MiniScript/solve-a-hidato-puzzle.mini b/Task/Solve-a-Hidato-puzzle/MiniScript/solve-a-hidato-puzzle.mini new file mode 100644 index 0000000000..d9f424f444 --- /dev/null +++ b/Task/Solve-a-Hidato-puzzle/MiniScript/solve-a-hidato-puzzle.mini @@ -0,0 +1,107 @@ +string.splitBySpaces = function + s = self.split + while s.indexOf("") != null + s.remove(s.indexOf("")) + end while + return s +end function + +Hidato = {"board": [], "given": [], "start": [], "maxNum": 0} +Hidato.__emptyBoard = function(nRows, nCols) + self.board = [] + emptyRow = [] + for c in range(1,nCols + 2) + emptyRow.push(-1) + end for + for r in range(1,nRows + 2) + self.board.push(emptyRow[:]) + end for +end function + +Hidato.setup = function(s) + lines = s.split(char(13)) + cols = lines[0].splitBySpaces.len + rows = lines.len + + // create empty board with room + // for the wall at the edge + self.__emptyBoard(rows,cols) + board = self.board + + // fill board with start puzzle + for r in range(0, rows - 1) + for c in range(0, cols - 1) + cell = (lines[r].splitBySpaces)[c] + if cell == "__" then + board[r+1][c+1] = 0 // unknown + else if cell == "." then + continue // -1 for blocked + else + num = cell.val + + board[r+1][c+1] = num + self.given.push(num) + if num == 1 then + self.start = [r+1,c+1] + end if + if num > self.maxNum then self.maxNum = num + end if + end for + end for + self.given.sort +end function + +Hidato.solve = function(n, pos = null, next = 0) + if n > self.given[-1] then return true + if pos == null then pos = self.start + r = pos[0] + c = pos[1] + + board = self.board + if board[r][c] and board[r][c] != n then return false + if board[r][c] == 0 and self.given[next] == n then return false + back = 0 + if board[r][c] == n then + next += 1 + back = n + end if + board[r][c] = n + for i in range(-1, 1) + for j in range(-1,1) + if self.solve(n + 1, [r + i, c + j], next) then return true + end for + end for + board[r][c] = back + return false +end function + +Hidato.print = function + board = self.board + maxLen = str(self.maxNum).len + 1 + padding = " " * maxLen + for row in board[1:-1] + s = "" + for cell in row[1:-1] + c = padding + "__" * (cell == 0) + str(cell) * (cell > 0) + s += c[-maxLen:] + end for + print s + end for +end function + +puzzle = "__ 33 35 __ __ . . ." + char(13) +puzzle += "__ __ 24 22 __ . . ." + char(13) +puzzle += "__ __ __ 21 __ __ . ." + char(13) +puzzle += "__ 26 __ 13 40 11 . ." + char(13) +puzzle += "27 __ __ __ 9 __ 1 ." + char(13) +puzzle += " . . __ __ 18 __ __ ." + char(13) +puzzle += " . . . . __ 7 __ __" + char(13) +puzzle += " . . . . . . 5 __" + +Hidato.setup(puzzle) +print "The initial puzzle board:" +Hidato.print +print +Hidato.solve(1) +print "The puzzle solved:" +Hidato.print diff --git a/Task/Sort-an-integer-array/BQN/sort-an-integer-array.bqn b/Task/Sort-an-integer-array/BQN/sort-an-integer-array.bqn new file mode 100644 index 0000000000..3d51dc650d --- /dev/null +++ b/Task/Sort-an-integer-array/BQN/sort-an-integer-array.bqn @@ -0,0 +1 @@ +∧ [4, 1, 2, ¯9, ¯5, 3, 6, 9, ¯2] diff --git a/Task/Sort-disjoint-sublist/EasyLang/sort-disjoint-sublist.easy b/Task/Sort-disjoint-sublist/EasyLang/sort-disjoint-sublist.easy new file mode 100644 index 0000000000..2d788e4778 --- /dev/null +++ b/Task/Sort-disjoint-sublist/EasyLang/sort-disjoint-sublist.easy @@ -0,0 +1,18 @@ +val[] = [ 7 6 5 4 3 2 1 0 ] +ind[] = [ 7 2 8 ] +# +for i = 1 to len ind[] - 1 + for j = i + 1 to len ind[] + if ind[j] < ind[i] + swap ind[j] ind[i] + . + . +. +for i = 1 to len ind[] - 1 + for j = i + 1 to len ind[] + if val[ind[j]] < val[ind[i]] + swap val[ind[j]] val[ind[i]] + . + . +. +print val[] diff --git a/Task/Sort-disjoint-sublist/MiniScript/sort-disjoint-sublist.mini b/Task/Sort-disjoint-sublist/MiniScript/sort-disjoint-sublist.mini new file mode 100644 index 0000000000..2a5bbf075e --- /dev/null +++ b/Task/Sort-disjoint-sublist/MiniScript/sort-disjoint-sublist.mini @@ -0,0 +1,16 @@ +sortDisjointSublist = function(arr, indexes) + indexes.sort + newArr = arr[:] + sublist = [] + for i in indexes + sublist.push(arr[i]) + end for + sublist.sort + for i in range(0, indexes.len - 1) + arrIx = indexes[i] + newArr[arrIx] = sublist[i] + end for + return newArr +end function + +print sortDisjointSublist([7,6,5,4,3,2,1,0], [6,1,7]) diff --git a/Task/Sort-three-variables/EasyLang/sort-three-variables.easy b/Task/Sort-three-variables/EasyLang/sort-three-variables.easy new file mode 100644 index 0000000000..99eeed717e --- /dev/null +++ b/Task/Sort-three-variables/EasyLang/sort-three-variables.easy @@ -0,0 +1,35 @@ +proc sort3 . a b c . + if a > c + swap a c + . + if b > c + swap b c + . + if a > b + swap a b + . +. +x = 77444 +y = -12 +z = 0 +sort3 x y z +print x & " " & y & " " & z +# +proc sort3str . a$ b$ c$ . + if strcmp a$ c$ > 0 + swap a$ c$ + . + if strcmp b$ c$ > 0 + swap b$ c$ + . + if strcmp a$ b$ > 0 + swap a$ b$ + . +. +x$ = "lions, tigers, and" +y$ = "bears, oh my!" +z$ = "(from the \"Wizard of OZ\")" +sort3str x$ y$ z$ +print x$ +print y$ +print z$ diff --git a/Task/Sort-using-a-custom-comparator/Zig/sort-using-a-custom-comparator.zig b/Task/Sort-using-a-custom-comparator/Zig/sort-using-a-custom-comparator.zig new file mode 100644 index 0000000000..dd85303ec1 --- /dev/null +++ b/Task/Sort-using-a-custom-comparator/Zig/sort-using-a-custom-comparator.zig @@ -0,0 +1,38 @@ +const std = @import("std"); + +/// Sort by descending length and ascending lexicographical order. +/// If true, element will remain on it's place. +fn lessThanFn(context: void, left: []const u8, right: []const u8) bool { + _ = context; + // Sort by descending length + switch (std.math.order(left.len, right.len)) { + .lt => return false, + .eq => {}, + .gt => return true, + } + + // If length is equal, sort by ascending lexicographical order + return switch (std.ascii.orderIgnoreCase(left, right)) { + .lt => true, + .eq => false, + .gt => false, + }; +} + +pub fn main() void { + var words = [_][]const u8{ "Here", "are", "some", "sample", "strings", "to", "be", "sorted" }; + + std.debug.print("Before: [ ", .{}); + for (words) |word| { + std.debug.print("\"{s}\" ", .{word}); + } + std.debug.print("]\n", .{}); + + std.mem.sort([]const u8, &words, {}, lessThanFn); + + std.debug.print("After: [ ", .{}); + for (words) |word| { + std.debug.print("\"{s}\" ", .{word}); + } + std.debug.print("]\n", .{}); +} diff --git a/Task/Sorting-algorithms-Bogosort/BASIC256/sorting-algorithms-bogosort.basic b/Task/Sorting-algorithms-Bogosort/BASIC256/sorting-algorithms-bogosort.basic new file mode 100644 index 0000000000..f41e5455d7 --- /dev/null +++ b/Task/Sorting-algorithms-Bogosort/BASIC256/sorting-algorithms-bogosort.basic @@ -0,0 +1,42 @@ +global array +dim array = {10, 1, 2, -6, 3} +lb = array[?,]-1 : ub = array[?]-1 + +print "unsort "; +for i = lb to ub + print rjust(array[i], 4); +next i + +call Bogosort(array) # ordenar el array + +print chr(10); " sort "; +for i = lb to ub + print rjust(array[i], 4); +next i +end + +subroutine shuffle(array) + n = array[?] : m = array[?]*2 + + for k = 1 to m + i = int(Rand*n) + j = int(Rand*n) + tmp = array[i] #swap lb(i), lb(j) + array[i] = array[j] + array[j] = tmp + next k +end subroutine + +function inorder(array) + n = array[?] + for i = 0 to n-2 + if array[i] > array[i+1] then return false + next i + return true +end function + +subroutine Bogosort(array) + while not inorder(array) + call shuffle(array) + end while +end subroutine diff --git a/Task/Sorting-algorithms-Bogosort/Insitux/sorting-algorithms-bogosort.insitux b/Task/Sorting-algorithms-Bogosort/Insitux/sorting-algorithms-bogosort.insitux index 56d84c6fb0..170d612fc9 100644 --- a/Task/Sorting-algorithms-Bogosort/Insitux/sorting-algorithms-bogosort.insitux +++ b/Task/Sorting-algorithms-Bogosort/Insitux/sorting-algorithms-bogosort.insitux @@ -1,6 +1,6 @@ (function bogo-sort order list - (return-when (empty? list) []) - (if (.. order list) + (return-unless (1 list) []) + (if (... order list) list (recur order (shuffle list)))) diff --git a/Task/Sorting-algorithms-Bogosort/Yabasic/sorting-algorithms-bogosort.basic b/Task/Sorting-algorithms-Bogosort/Yabasic/sorting-algorithms-bogosort.basic index 6b8736b4d6..c4c230b9cf 100644 --- a/Task/Sorting-algorithms-Bogosort/Yabasic/sorting-algorithms-bogosort.basic +++ b/Task/Sorting-algorithms-Bogosort/Yabasic/sorting-algorithms-bogosort.basic @@ -1,3 +1,13 @@ +dim a(5) +a (0) = 10: a (1) = 1: a (2) = 2: a (3) = -6: a (4) = 3 + +Bogosort(a()) + +for i = 0 to arraysize(a(),1) - 1 + print a(i), " "; +next i +end + sub shuffle(a()) n = arraysize(a(),1) m = arraysize(a(),1)*2 @@ -15,7 +25,7 @@ sub inorder(a()) n = arraysize(a(),1) for i = 0 to n-2 - if a(i) > a(i+1) then return false : fi + if a(i) > a(i+1) return false next i return true end sub @@ -25,13 +35,3 @@ sub Bogosort(a()) shuffle(a()) wend end sub - -dim a(5) -a (0) = 10: a (1) = 1: a (2) = 2: a (3) = -6: a (4) = 3 - -Bogosort(a()) - -for i = 0 to arraysize(a(),1) - 1 - print a(i), " "; -next i -end diff --git a/Task/Sorting-algorithms-Counting-sort/EasyLang/sorting-algorithms-counting-sort.easy b/Task/Sorting-algorithms-Counting-sort/EasyLang/sorting-algorithms-counting-sort.easy new file mode 100644 index 0000000000..76f36523ee --- /dev/null +++ b/Task/Sorting-algorithms-Counting-sort/EasyLang/sorting-algorithms-counting-sort.easy @@ -0,0 +1,19 @@ +proc countsort min max . d[] . + len count[] max - min + 1 + for n in d[] + count[n - min + 1] += 1 + . + z = 1 + for i = min to max + while count[i - min + 1] > 0 + d[z] = i + z += 1 + count[i - min + 1] -= 1 + . + . +. +for i = 1 to 100 + d[] &= random 1000 +. +countsort 1 1000 d[] +print d[] diff --git a/Task/Sorting-algorithms-Counting-sort/Elena/sorting-algorithms-counting-sort.elena b/Task/Sorting-algorithms-Counting-sort/Elena/sorting-algorithms-counting-sort.elena index 0f6f85e3cb..0d72fcdc44 100644 --- a/Task/Sorting-algorithms-Counting-sort/Elena/sorting-algorithms-counting-sort.elena +++ b/Task/Sorting-algorithms-Counting-sort/Elena/sorting-algorithms-counting-sort.elena @@ -30,7 +30,7 @@ extension op public program() { - var list := new Range(0, 10).selectBy:(i => randomGenerator.eval(10)).toArray(); + var list := new Range(0, 10).selectBy:(i => randomGenerator.nextInt(10)).toArray(); console.printLine("before:", list.asEnumerable()); console.printLine("after :", list.countingSort().asEnumerable()) diff --git a/Task/Sorting-algorithms-Gnome-sort/BASIC256/sorting-algorithms-gnome-sort.basic b/Task/Sorting-algorithms-Gnome-sort/BASIC256/sorting-algorithms-gnome-sort.basic new file mode 100644 index 0000000000..fbb680e046 --- /dev/null +++ b/Task/Sorting-algorithms-Gnome-sort/BASIC256/sorting-algorithms-gnome-sort.basic @@ -0,0 +1,41 @@ +arraybase 1 +global array +dim array(15) +a = array[?,] +b = array[?] +for i = a to b + array[i] = int(rand * 100) +next i + +print "unsort "; +for i = a to b + print rjust(array[i], 4); +next i + +call gnomeSort(array) + +print chr(10); " sort "; +for i = a to b + print rjust(array[i], 4); +next i +end + +subroutine gnomeSort (array) + i = array[?,] + 1 + j = i + 1 + while i <= array[?] + if array[i - 1] <= array[i] then + i = j + j += 1 + else + temp = array[i - 1] + array[i - 1] = array[i] + array[i] = temp + i -= 1 + if i = array[?,] then + i = j + j += 1 + end if + end if + end while +end subroutine diff --git a/Task/Sorting-algorithms-Gnome-sort/Chipmunk-Basic/sorting-algorithms-gnome-sort.basic b/Task/Sorting-algorithms-Gnome-sort/Chipmunk-Basic/sorting-algorithms-gnome-sort.basic new file mode 100644 index 0000000000..8187e52133 --- /dev/null +++ b/Task/Sorting-algorithms-Gnome-sort/Chipmunk-Basic/sorting-algorithms-gnome-sort.basic @@ -0,0 +1,29 @@ +100 RANDOMIZE TIMER +110 DIM array(18) +120 ' Init Array +130 FOR i = 0 TO UBOUND(array) +140 array(i) = INT(RND(1)*98)+1 +150 NEXT i +160 PRINT "unsort: "; : GOSUB 200 +170 GOSUB 260 : ' gnomeSort +180 PRINT " sort: "; : GOSUB 200 +190 END +200 ' Write Array +210 FOR i = 0 TO UBOUND(array) +220 PRINT array(i); +230 NEXT i +240 PRINT +250 RETURN +260 ' gnomeSort +270 i = 1 +280 j = i+1 +290 WHILE i <= UBOUND(array) +300 IF array(i-1) <= array(i) THEN +310 i = j : j = j+1 +320 ELSE +330 t = array(i-1) : array(i-1) = array(i) : array(i) = t : ' swap +340 i = i-1 +350 IF i = 0 THEN i = j : j = j+1 +360 ENDIF +370 WEND +380 RETURN diff --git a/Task/Sorting-algorithms-Gnome-sort/EDSAC-order-code/sorting-algorithms-gnome-sort.edsac b/Task/Sorting-algorithms-Gnome-sort/EDSAC-order-code/sorting-algorithms-gnome-sort.edsac new file mode 100644 index 0000000000..472f1b1981 --- /dev/null +++ b/Task/Sorting-algorithms-Gnome-sort/EDSAC-order-code/sorting-algorithms-gnome-sort.edsac @@ -0,0 +1,152 @@ +[Gnome sort - Rosetta Code + EDSAC program (Initial Orders 2) to read and sort an array + of 17-bit integers, using gnome sort. + Values are read from tape, preceded by an integer count.] + + [Arrange the storage] + T45K P100F [H parameter: library subroutine R4 to read integer] + T46K P200F [N parameter: modified library s/r P7 to print integer] + T47K P300F [M parameter: main routine] + T51K P500F [G parameter: subroutine for gnome sort] + T55K P700F [V parameter: storage for values] + +[Library subroutine M3, runs at load time and is then overwritten. + Prints header; here, last character sets teleprinter to figures.] + PF GK IF AF RD LF UF OF E@ A6F G@ E8F EZ PF + *BEFORE!AND!AFTER@&#..PZ + +[======== G parameter: Subroutine to sort an array by gnome sort ========] +[Input: 0F = A order for array{0} + 1F = length of array, in address field + Output: Array is sorted] + +[This code conforms to the original description of gnome sort, in which it's + assumed that the gnome can't remember anything and has to move one step + at a time (cf. the alternative name "stupid sort"). + The gnome's position is defined by an A order which refers to that position, + and which is indicated below by an arrow. + The code could easily be modified to use 35-bit integers.] + E25K TG GK + A3F T41@ [plant return link as usual] + AF U21@ [initialize gnome's position to start of array] + A1F T44@ [store A order for exclusive end of array] + [Here the gnome moves one step forward] + [6] T45@ [clear acc] + A21@ A2F T21@ [inc address in the defining A order] + [Loop. Assume here with acc = 0.] + [The gnome considers his position] + [10] A21@ [acc := A order for position] + S44@ [is he at the end?] + E41@ [if so, jump to exit with acc = 0] + T45@ [clear acc] + AF [load A order for start] + S21@ [is he at the start?] + E6@ [if so, jump to move 1 step forward] + [Gnome isn't at start or end, so he has to compare values] + T45@ [clear acc] + A21@ [load A order for gnome's psotion] + A42@ [convert to S order for previous position] + T22@ [plant S order] + [21] AF [<============ this planted A order defines the gnome's position] + [22] SF [(planted) acc := (current value) - (previous value)] + E6@ [if current >= previous then jump to move 1 step forward] + [Here the gnome must swap the values and move 1 step backward] + T45@ [clear acc] + A21@ U34@ [plant copy of defining A order] + S2F U36@ [plant A order for gnome's new position] + U21@ [also update defining A order] + A43@ U39@ [plant T order for new position] + A2F T37@ [plant T order for old position] + [34] AF [(planted) acc := array{i}] + T45@ [copy array{i} to temp store] + [36] AF [(planted) acc := array{i-1}] + [37] TF [(planted) copy to array{i}] + A45@ [acc := old array{i}] + [39] TF [(planted) copy to array{i-1}] + E10@ [loop back (always, since acc = 0)] + [41] ZF [(planted) jump back to caller] + [42] K4095F [add to A order to make S order with adderss 1 less] + [43] OF [add to A order to make T order with same address] + [44] AV [A order for exclusive end of array] + [45] PF [(1) dump to clear accumulator (2) temporary for swapping] + +[====================== M parameter: Main routine ======================] + E25K TM GK + [0] PF [data count] + [1] PF [negative loop counter] + [2] TV [order to store acc in array{0}] + [3] AV [order to load acc from array{0}] + [4] AV [A order for end of array + [5] !F [space] + [6] @F [carriage return] + [7] &F [linefeed] +[Entry] + [8] A2@ T21@ [initialize order to store value] + A10@ GH [call library subroutine R4, sets 0D := data count N] + [One way of looping a given number of times: use a negative counter] + [(Wilkes, Wheeler & Gill, 1951 edition, pp.164-5)] + AF [acc := data count, assumed to fit into 17 bits] + LD T@ [shift count into address field, and store it] + S@ [acc := negative count] + E38@ [exit if count = 0] + [17] T1@ [update negative loop counter] + A18@ GH [call library subroutine R4, 0D := next value] + AF [acc := value. assumed to fit into 17 bits] + [21] TF [store value in array] + A21@ A2F T21@ [increment address in store order] + A1@ A2F [increment negative loop counter] + G17@ [loop back if still < 0] + A28@ G39@ [print values] + A3@ TF [pass A order for array{0} to gnome sort] + A@ T1F [pass count to gnome sort] + A34@ GG [call gnome sort] + A36@ G39@ [print values again] + [38] ZF [halt the machine] + +[------ Subroutine of main routine, to print the array -------] + [39] A3F T60@ + A3@ U49@ [initialize load order] + [Another way of looping a given number of times: use a variable order] + [as a counter (Wilkes, Wheeler & Gill, 1951 edition, p.166)] + A@ T4@ [make and plant A order for end of array] + E48@ [don't print a space the first time] + [46] O5@ TF [print space, clear acc] + [48] TD [clear whole of 0D including sandwich bit] + [49] AV [(planted) load value from array <------ order used as counter] + TF [to 0F, so 0D = value extended to 35 bits] + A51@ GN [print value] + A49@ A2F U49@ [update load order] + S4@ G46@ [test for done, loop back if not] + O6@ O7@ [print CR, LF] + [60] EF [(planted) jump back to caller woth acc = 0] +[The next 3 lines put the entry address into location 50, + so that it can be accessed via the X parameter (see end of program).] + T50K + P8@ + T8Z + +[================== H parameter: Library subroutine R4 ==================] +[Input of one signed integer, returned in 0D. + 22 locations.] + E25K TH GK + GKA3FT21@T4DH6@E11@P5DJFT6FVDL4FA4DTDI4FA4FS5@G7@S5@G20@SDTDT6FEF + +[================== N parameter: Library subroutine P7 ==================] +[Library subroutine P7: print strictly positive integer in 0D. + Patched to print left-justified (no-op instead of order to print space) + 35 locations, even address] + E25K TN GK + GKA3FT26@H28#@NDYFLDT4DS27@TFH8@S8@T1FV4DAFG31@SFLDUFOFFFSF + L4FT4DA1FA27@G11@T28#ZPFT27ZP1024FP610D@524D!FXFSFL8FE22@ + +[==========================================================================] +[On the original EDSAC, the following (without the whitespace and comments) + might have been input on a separate tape.] + + E25K TX GK + EZ [define entry point] + PF [acc = 0 on entry] + +[Counts and data values to be read by library subroutine R4. + Note that sign comes *after* value.] +16+ 98+36+2+78+5+81+32+90+73+21+94+28+53+25+10+99+ diff --git a/Task/Sorting-algorithms-Gnome-sort/EasyLang/sorting-algorithms-gnome-sort.easy b/Task/Sorting-algorithms-Gnome-sort/EasyLang/sorting-algorithms-gnome-sort.easy new file mode 100644 index 0000000000..4fe89983da --- /dev/null +++ b/Task/Sorting-algorithms-Gnome-sort/EasyLang/sorting-algorithms-gnome-sort.easy @@ -0,0 +1,20 @@ +proc sort . d[] . + i = 2 + j = 3 + while i <= len d[] + if d[i - 1] <= d[i] + i = j + j += 1 + else + swap d[i - 1] d[i] + i -= 1 + if i = 1 + i = j + j += 1 + . + . + . +. +data[] = [ 29 4 72 44 55 26 27 77 92 5 ] +sort data[] +print data[] diff --git a/Task/Sorting-algorithms-Gnome-sort/GW-BASIC/sorting-algorithms-gnome-sort.basic b/Task/Sorting-algorithms-Gnome-sort/GW-BASIC/sorting-algorithms-gnome-sort.basic new file mode 100644 index 0000000000..1f4d640d4e --- /dev/null +++ b/Task/Sorting-algorithms-Gnome-sort/GW-BASIC/sorting-algorithms-gnome-sort.basic @@ -0,0 +1,25 @@ +100 REM GnomeSrt.bas +110 RANDOMIZE TIMER 'remove it for Just BASIC +120 DIM ARRAY(18) +130 ' Init Array +140 FOR I = 0 TO 18 +150 LET ARRAY(I) = INT(RND(1)*98)+1 +160 NEXT I +170 PRINT "unsort: "; : GOSUB 210 +180 GOSUB 270 : REM gnomeSort +190 PRINT " sort: "; : GOSUB 210 +200 END +210 ' Write Array +220 FOR I = 0 TO 18 +230 PRINT ARRAY(I); +240 NEXT I +250 PRINT +260 RETURN +270 ' gnomeSort +280 LET I = 1 +290 LET J = I+1 +300 WHILE I <= 18 +310 IF ARRAY(I-1) <= ARRAY(I) THEN LET I = J : LET J = J+1 : GOTO 330 +320 IF ARRAY(I-1) > ARRAY(I) THEN LET T = ARRAY(I-1) : LET ARRAY(I-1) = ARRAY(I) : LET ARRAY(I) = T : LET I = I-1 : IF I = 0 THEN LET I = J : LET J = J+1 +330 WEND +340 RETURN diff --git a/Task/Sorting-algorithms-Gnome-sort/MSX-Basic/sorting-algorithms-gnome-sort.basic b/Task/Sorting-algorithms-Gnome-sort/MSX-Basic/sorting-algorithms-gnome-sort.basic new file mode 100644 index 0000000000..e7c1b64194 --- /dev/null +++ b/Task/Sorting-algorithms-Gnome-sort/MSX-Basic/sorting-algorithms-gnome-sort.basic @@ -0,0 +1,23 @@ +100 CLS +110 U = 8 +120 DIM A(U+1) +130 FOR I = 0 TO U +140 A(I) = INT(RND(1)*98) +150 NEXT I +160 PRINT "unsort: "; : GOSUB 200 +170 GOSUB 260 : REM gnomeSort +180 PRINT " sort: "; : GOSUB 200 +190 END +200 REM Write Array +210 FOR I = 0 TO U +220 PRINT A(I); +230 NEXT I +240 PRINT +250 RETURN +260 REM gnomeSort +270 I = 1 +280 J = I+1 +290 IF I <= U THEN IF A(I-1) <= A(I) THEN I = J : J = J+1 : GOTO 290 +300 IF I > U THEN RETURN +310 IF A(I-1) > A(I) THEN T = A(I-1) : A(I-1) = A(I) : A(I) = T : I = I-1 : IF I = 0 THEN I = J : J = J+1 +320 GOTO 290 diff --git a/Task/Sorting-algorithms-Gnome-sort/MiniScript/sorting-algorithms-gnome-sort.mini b/Task/Sorting-algorithms-Gnome-sort/MiniScript/sorting-algorithms-gnome-sort.mini new file mode 100644 index 0000000000..3a12650457 --- /dev/null +++ b/Task/Sorting-algorithms-Gnome-sort/MiniScript/sorting-algorithms-gnome-sort.mini @@ -0,0 +1,22 @@ +gnomesort = function(a) + i = 1 + j = 2 + while i < a.len + if a[i-1] <= a[i] then + i = j + j = j + 1 + else + k = a[i-1] + a[i-1] = a[i] + a[i] = k + i = i - 1 + if i == 0 then + i = j + j = j + 1 + end if + end if + end while +end function +a = [3, 7, 4, 2, 5, 1, 6] +gnomesort(a) +print a diff --git a/Task/Sorting-algorithms-Gnome-sort/Minimal-BASIC/sorting-algorithms-gnome-sort.basic b/Task/Sorting-algorithms-Gnome-sort/Minimal-BASIC/sorting-algorithms-gnome-sort.basic new file mode 100644 index 0000000000..1ec6ac1c57 --- /dev/null +++ b/Task/Sorting-algorithms-Gnome-sort/Minimal-BASIC/sorting-algorithms-gnome-sort.basic @@ -0,0 +1,42 @@ +10 REM Rosetta Code problem: https://rosettacode.org/wiki/Sorting_algorithms/Gnome_sort +20 REM by Jjuanhdez, 10/2023 +100 RANDOMIZE +110 LET U = 8 +120 DIM A(9) +130 FOR I = 0 TO U +140 LET A(I) = INT(RND*98) +150 NEXT I +160 PRINT "UNSORT: "; +170 GOSUB 220 +180 GOSUB 280 +190 PRINT " SORT: "; +200 GOSUB 220 +210 STOP +220 REM WRITE ARRAY +230 FOR I = 0 TO U +240 PRINT A(I); +250 NEXT I +260 PRINT +270 RETURN +280 REM GNOMESORT +290 LET I = 1 +300 LET J = I+1 +310 IF I <= U THEN 350 +320 IF I > U THEN 190 +330 IF A(I-1) > A(I) THEN 400 +340 GOTO 310 +350 IF A(I-1) <= A(I) THEN 370 +360 GOTO 320 +370 LET I = J +380 LET J = J+1 +390 GOTO 310 +400 LET T = A(I-1) +410 LET A(I-1) = A(I) +420 LET A(I) = T +430 LET I = I-1 +440 IF I = 0 THEN 460 +450 GOTO 310 +460 LET I = J +470 LET J = J+1 +480 GOTO 310 +490 END diff --git a/Task/Sorting-algorithms-Gnome-sort/PL-M/sorting-algorithms-gnome-sort.plm b/Task/Sorting-algorithms-Gnome-sort/PL-M/sorting-algorithms-gnome-sort.plm new file mode 100644 index 0000000000..7bb7d2b733 --- /dev/null +++ b/Task/Sorting-algorithms-Gnome-sort/PL-M/sorting-algorithms-gnome-sort.plm @@ -0,0 +1,60 @@ +100H: /* GNOME SORT */ + + /* IN-PLACE GNOME SORT THE FIRST SIZE ELEMENTS OF THE */ + /* ARRAY POINTED TO BY A$PTR */ + GNOME$SORT: PROCEDURE( A$PTR, SIZE ); + DECLARE ( A$PTR, SIZE ) ADDRESS; + DECLARE A BASED A$PTR ( 0 )ADDRESS; + DECLARE ( I, J ) ADDRESS; + I = 1; + J = 2; + DO WHILE I < SIZE; + IF A( I - 1 ) <= A( I ) THEN DO; + I = J; + J = J + 1; + END; + ELSE DO; + DECLARE SWAP ADDRESS; + SWAP = A( I - 1 ); + A( I - 1 ) = A( I ); + A( I ) = SWAP; + I = I - 1; + IF I = 0 THEN DO; + I = J; + J = J + 1; + END; + END; + END; + END GNOME$SORT ; + + /* CP/M BDOS SYSTEM CALLS AND I/O ROUTINES */ + BDOS: PROCEDURE( FN, ARG ); DECLARE FN BYTE, ARG ADDRESS; GOTO 5; END; + PR$CHAR: PROCEDURE( C ); DECLARE C BYTE; CALL BDOS( 2, C ); END; + PR$STRING: PROCEDURE( S ); DECLARE S ADDRESS; CALL BDOS( 9, S ); END; + PR$NL: PROCEDURE; CALL PR$STRING( .( 0DH, 0AH, '$' ) ); END; + PR$NUMBER: PROCEDURE( N ); /* PRINTS A NUMBER IN THE MINIMUN FIELD WIDTH */ + DECLARE N ADDRESS; + DECLARE V ADDRESS, N$STR ( 6 )BYTE, W BYTE; + V = N; + W = LAST( N$STR ); + N$STR( W ) = '$'; + N$STR( W := W - 1 ) = '0' + ( V MOD 10 ); + DO WHILE( ( V := V / 10 ) > 0 ); + N$STR( W := W - 1 ) = '0' + ( V MOD 10 ); + END; + CALL PR$STRING( .N$STR( W ) ); + END PR$NUMBER; + + DO; /* TEST GNOME$SORT */ + DECLARE N ( 11 )ADDRESS, N$POS BYTE; + N( 0 ) = 4; N( 1 ) = 65; N( 2 ) = 2; N( 3 ) = 31; N( 4 ) = 0; + N( 5 ) = 99; N( 6 ) = 2; N( 7 ) = 8; N( 8 ) = 3; N( 9 ) = 783; + N( 10 ) = 1; + CALL GNOME$SORT( .N, 11 ); + DO N$POS = 0 TO 10; + CALL PR$CHAR( ' ' ); + CALL PR$NUMBER( N( N$POS ) ); + END; + END; + +EOF diff --git a/Task/Sorting-algorithms-Gnome-sort/QBasic/sorting-algorithms-gnome-sort.basic b/Task/Sorting-algorithms-Gnome-sort/QBasic/sorting-algorithms-gnome-sort.basic new file mode 100644 index 0000000000..3257e98efa --- /dev/null +++ b/Task/Sorting-algorithms-Gnome-sort/QBasic/sorting-algorithms-gnome-sort.basic @@ -0,0 +1,43 @@ +RANDOMIZE TIMER 'RANDOMIZE for True BASIC +DIM array(-5 TO 12) +CALL iniciarray(array()) +PRINT "unsort: "; +CALL escritura(array()) +CALL gnomeSort(array()) +PRINT +PRINT " sort: "; +CALL escritura(array()) +END + +SUB escritura (array()) + FOR i = LBOUND(array) TO UBOUND(array) + PRINT array(i); + NEXT i + PRINT +END SUB + +SUB gnomeSort (array()) + LET i = LBOUND(array) + 1 + LET j = i + 1 + DO WHILE i <= UBOUND(array) + IF array(i - 1) <= array(i) THEN + LET i = j + LET j = j + 1 + ELSE + LET T = array(i - 1) + LET array(i - 1) = array(i) + LET array(i) = T + LET i = i - 1 + IF i = LBOUND(array) THEN + LET i = j + LET j = j + 1 + END IF + END IF + LOOP +END SUB + +SUB iniciarray (array()) + FOR i = LBOUND(array) TO UBOUND(array) + LET array(i) = (RND * 98) + 1 + NEXT i +END SUB diff --git a/Task/Sorting-algorithms-Gnome-sort/BASIC/sorting-algorithms-gnome-sort.basic b/Task/Sorting-algorithms-Gnome-sort/QuickBASIC/sorting-algorithms-gnome-sort.basic similarity index 100% rename from Task/Sorting-algorithms-Gnome-sort/BASIC/sorting-algorithms-gnome-sort.basic rename to Task/Sorting-algorithms-Gnome-sort/QuickBASIC/sorting-algorithms-gnome-sort.basic diff --git a/Task/Sorting-algorithms-Gnome-sort/Quite-BASIC/sorting-algorithms-gnome-sort.basic b/Task/Sorting-algorithms-Gnome-sort/Quite-BASIC/sorting-algorithms-gnome-sort.basic new file mode 100644 index 0000000000..66c4ee8d3c --- /dev/null +++ b/Task/Sorting-algorithms-Gnome-sort/Quite-BASIC/sorting-algorithms-gnome-sort.basic @@ -0,0 +1,40 @@ +100 CLS +110 LET U = 8 +120 ARRAY A +130 FOR I = 0 TO U +140 LET A(I) = INT(RAND(1)*98) +150 NEXT I +160 PRINT "UNSORT: "; +170 GOSUB 220 +180 GOSUB 280 +190 PRINT " SORT: "; +200 GOSUB 220 +210 STOP +220 REM WRITE ARRAY +230 FOR I = 0 TO U +240 PRINT A(I); " "; +250 NEXT I +260 PRINT +270 RETURN +280 REM GNOMESORT +290 LET I = 1 +300 LET J = I+1 +310 IF I <= U THEN 350 +320 IF I > U THEN 190 +330 IF A(I-1) > A(I) THEN 400 +340 GOTO 310 +350 IF A(I-1) <= A(I) THEN 370 +360 GOTO 320 +370 LET I = J +380 LET J = J+1 +390 GOTO 310 +400 LET T = A(I-1) +410 LET A(I-1) = A(I) +420 LET A(I) = T +430 LET I = I-1 +440 IF I = 0 THEN 460 +450 GOTO 310 +460 LET I = J +470 LET J = J+1 +480 GOTO 310 +490 END diff --git a/Task/Sorting-algorithms-Gnome-sort/Run-BASIC/sorting-algorithms-gnome-sort.basic b/Task/Sorting-algorithms-Gnome-sort/Run-BASIC/sorting-algorithms-gnome-sort.basic new file mode 100644 index 0000000000..f30f3198c5 --- /dev/null +++ b/Task/Sorting-algorithms-Gnome-sort/Run-BASIC/sorting-algorithms-gnome-sort.basic @@ -0,0 +1,33 @@ + dim A(18) +[initArray] + for i = 0 to 18 + A(i) = int(rnd(1)*98)+1 + next i + print "unsort: "; + gosub [writeArray] + gosub [gnomeSort] + print " sort: "; + gosub [writeArray] + end + +[writeArray] + for i = 0 to 18 + print A(i); " "; + next i + print + return + +[gnomeSort] + i = 1 + j = i+1 + while i <= 18 + if A(i-1) <= A(i) then + i = j + j = j+1 + else + t = A(i-1) : A(i-1) = A(i) : A(i) = t + i = i-1 + if i = 0 then i = j : j = j+1 + end if + wend + return diff --git a/Task/Sorting-algorithms-Gnome-sort/True-BASIC/sorting-algorithms-gnome-sort.basic b/Task/Sorting-algorithms-Gnome-sort/True-BASIC/sorting-algorithms-gnome-sort.basic index 608712f752..8858753c3c 100644 --- a/Task/Sorting-algorithms-Gnome-sort/True-BASIC/sorting-algorithms-gnome-sort.basic +++ b/Task/Sorting-algorithms-Gnome-sort/True-BASIC/sorting-algorithms-gnome-sort.basic @@ -1,4 +1,4 @@ -RANDOMIZE !RAMDOMZE TIMER en QBASIC +RANDOMIZE !RAMDOMIZE TIMER en QBASIC DIM array(-5 TO 12) CALL iniciarray(array()) PRINT "unsort: "; diff --git a/Task/Sorting-algorithms-Gnome-sort/Yabasic/sorting-algorithms-gnome-sort.basic b/Task/Sorting-algorithms-Gnome-sort/Yabasic/sorting-algorithms-gnome-sort.basic new file mode 100644 index 0000000000..41c9ad059e --- /dev/null +++ b/Task/Sorting-algorithms-Gnome-sort/Yabasic/sorting-algorithms-gnome-sort.basic @@ -0,0 +1,42 @@ +dim array(15) +a = 0 +b = arraysize(array(),1) + +print "unsort: "; +for i = a to b + array(i) = int(ran(98))+1 + print array(i), " "; +next i +print "\n sort: "; + +gnomeSort(array()) + +for i = a to b + print array(i), " "; +next i +print "\n" +end + +sub gnomeSort(array()) + local ub, ul, i, j, temp + + lb = 0 : ub = arraysize(array(),1) + i = lb +1 : j = lb +2 + + while i <= ub + // replace "<=" with ">=" for downwards sort + if array(i -1) <= array(i) then + i = j + j = j + 1 + else + temp = array(i -1) + array(i -1) = array(i) + array(i) = temp + i = i - 1 + if i = lb then + i = j + j = j + 1 + fi + fi + wend +end sub diff --git a/Task/Sorting-algorithms-Heapsort/Sidef/sorting-algorithms-heapsort.sidef b/Task/Sorting-algorithms-Heapsort/Sidef/sorting-algorithms-heapsort.sidef index b10a9affd3..ee5ee9998f 100644 --- a/Task/Sorting-algorithms-Heapsort/Sidef/sorting-algorithms-heapsort.sidef +++ b/Task/Sorting-algorithms-Heapsort/Sidef/sorting-algorithms-heapsort.sidef @@ -1,39 +1,39 @@ func sift_down(a, start, end) { - var root = start; + var root = start while ((2*root + 1) <= end) { - var child = (2*root + 1); + var child = (2*root + 1) if ((child+1 <= end) && (a[child] < a[child + 1])) { - child += 1; + child += 1 } if (a[root] < a[child]) { - a[child, root] = a[root, child]; - root = child; + a[child, root] = a[root, child] + root = child } else { - return; + return nil } } } func heapify(a, count) { - var start = ((count - 2) / 2); + var start = ((count - 2) / 2) while (start >= 0) { - sift_down(a, start, count-1); - start -= 1; + sift_down(a, start, count-1) + start -= 1 } } func heap_sort(a, count) { - heapify(a, count); - var end = (count - 1); + heapify(a, count) + var end = (count - 1) while (end > 0) { - a[0, end] = a[end, 0]; - end -= 1; + a[0, end] = a[end, 0] + end -= 1 sift_down(a, 0, end) } return a } -var arr = (1..10 -> shuffle); # creates a shuffled array -say arr; # prints the unsorted array -heap_sort(arr, arr.len); # sorts the array in-place -say arr; # prints the sorted array +var arr = (1..10 -> shuffle) # creates a shuffled array +say arr # prints the unsorted array +heap_sort(arr, arr.len) # sorts the array in-place +say arr # prints the sorted array diff --git a/Task/Sorting-algorithms-Insertion-sort/GW-BASIC/sorting-algorithms-insertion-sort.basic b/Task/Sorting-algorithms-Insertion-sort/GW-BASIC/sorting-algorithms-insertion-sort.basic new file mode 100644 index 0000000000..2d6cf8deb4 --- /dev/null +++ b/Task/Sorting-algorithms-Insertion-sort/GW-BASIC/sorting-algorithms-insertion-sort.basic @@ -0,0 +1,32 @@ +10 'SAVE "INSERTGW",A +20 DEFINT A-Z +30 OPTION BASE 1 +40 N=20: R=100: I=0: Y=0: V=0: P=0 +50 DIM A(N) +60 ' Creates the disordered array +70 CLS: PRINT "This program sorts by Insertion a list of randomly generated numbers." +80 PRINT: PRINT "Unsorted list:" +90 RANDOMIZE TIMER +100 FOR I = 1 TO N +110 A(I) = INT(RND * R) + 1 +120 NEXT I +130 GOSUB 260 +140 PRINT: PRINT "Sorted list." +150 ' Insertion Sort +160 FOR I=1 TO N +170 V=A(I): P=I-1: S=1 +180 WHILE P>0 AND S=1 +185 S=0 +190 IF A(P) > V THEN A(P+1)=A(P): P=P-1: S=1 +200 WEND +210 A(P+1) = V +220 NEXT I +230 GOSUB 260 +240 PRINT: PRINT "End of program execution." +250 END +260 ' Print list routine +270 FOR I=1 TO N +280 PRINT A(I); +290 NEXT I +300 PRINT +310 RETURN diff --git a/Task/Sorting-algorithms-Insertion-sort/IS-BASIC/sorting-algorithms-insertion-sort.basic b/Task/Sorting-algorithms-Insertion-sort/IS-BASIC/sorting-algorithms-insertion-sort.basic index a3fb4a3949..f371c7e8fa 100644 --- a/Task/Sorting-algorithms-Insertion-sort/IS-BASIC/sorting-algorithms-insertion-sort.basic +++ b/Task/Sorting-algorithms-Insertion-sort/IS-BASIC/sorting-algorithms-insertion-sort.basic @@ -1,4 +1,4 @@ - 100 PROGRAM "InserSrt.bas" +100 PROGRAM "InserSrt.bas" 110 RANDOMIZE 120 NUMERIC ARRAY(5 TO 21) 130 CALL INIT(ARRAY) diff --git a/Task/Sorting-algorithms-Merge-sort/Component-Pascal/sorting-algorithms-merge-sort-1.pas b/Task/Sorting-algorithms-Merge-sort/Component-Pascal/sorting-algorithms-merge-sort-1.pas new file mode 100644 index 0000000000..9bb226227d --- /dev/null +++ b/Task/Sorting-algorithms-Merge-sort/Component-Pascal/sorting-algorithms-merge-sort-1.pas @@ -0,0 +1,66 @@ +MODULE RosettaMergeSort; + + TYPE Template* = ABSTRACT RECORD END; + + (* Abstract Procedures: *) + + (* Return TRUE if `front` comes before `rear` in the sorted order, FALSE otherwise *) + (* For the sort to be stable `front` comes before `rear` if they are equal *) + PROCEDURE (IN t: Template) Before- (front, rear: ANYPTR): BOOLEAN, NEW, ABSTRACT; + + (* Return the next element in the list after `s` *) + PROCEDURE (IN t: Template) Next- (s: ANYPTR): ANYPTR, NEW, ABSTRACT; + + (* Update the next pointer of `s` to the value of `next` - Return the modified `s` *) + PROCEDURE (IN t: Template) Set- (s, next: ANYPTR): ANYPTR, NEW, ABSTRACT; + + (* Return the total number of elements in the list starting from `s` *) + PROCEDURE (IN t: Template) Length* (s: ANYPTR): INTEGER, NEW; + VAR n: INTEGER; + BEGIN + n := 0; (* Initialize the count of elements to 0 *) + WHILE s # NIL DO (* While not at the end of the list *) + INC(n); (* Increment the count of elements *) + s := t.Next(s) (* Move to the next element in the linked list *) + END; + RETURN n (* Return the total number of elements in the linked list *) + END Length; + + (* Merge sorted lists `front` and `rear` - Return the merged sorted list *) + PROCEDURE (IN t: Template) Merge (front, rear: ANYPTR): ANYPTR, NEW; + BEGIN + IF front = NIL THEN RETURN rear END; + IF rear = NIL THEN RETURN front END; + IF t.Before(front, rear) THEN + RETURN t.Set(front, t.Merge(t.Next(front), rear)) + ELSE + RETURN t.Set(rear, t.Merge(front, t.Next(rear))) + END + END Merge; + + (* Perform a merge sort on `s` - Return the sorted list *) + PROCEDURE (IN t: Template) Sort* (s: ANYPTR): ANYPTR, NEW; + + (* Take a positive integer `n` and an occupied list `s` *) + (* Sort the initial segment of `s` of length `n` and return the result *) + (* Update `s` to the list which remain when the first `n` elements are removed *) + PROCEDURE TakeSort (n: INTEGER; VAR s: ANYPTR): ANYPTR; + VAR k: INTEGER; h, front, rear: ANYPTR; + BEGIN + IF n = 1 THEN (* base case: if n = 1, return the head of `s` *) + h := s; s := t.Next(s); RETURN t.Set(h, NIL) + END; + (* Divide the first n elements of the list into two sorted halves *) + k := n DIV 2; + front := TakeSort(k, s); + rear := TakeSort(n - k, s); + RETURN t.Merge(front, rear) (* Merge and return the halves *) + END TakeSort; + + BEGIN + IF s = NIL THEN RETURN s END; (* If `s` in empty, return `s` *) + (* Calculate the length of the list and call TakeSort *) + RETURN TakeSort(t.Length(s), s) (* Return the sorted list *) + END Sort; + +END RosettaMergeSort. diff --git a/Task/Sorting-algorithms-Merge-sort/Component-Pascal/sorting-algorithms-merge-sort-2.pas b/Task/Sorting-algorithms-Merge-sort/Component-Pascal/sorting-algorithms-merge-sort-2.pas new file mode 100644 index 0000000000..9cfb2d0a2d --- /dev/null +++ b/Task/Sorting-algorithms-Merge-sort/Component-Pascal/sorting-algorithms-merge-sort-2.pas @@ -0,0 +1,12 @@ +DEFINITION RosettaMergeSort; + + TYPE + Template = ABSTRACT RECORD + (IN t: Template) Before- (front, rear: ANYPTR): BOOLEAN, NEW, ABSTRACT; + (IN t: Template) Length (s: ANYPTR): INTEGER, NEW; + (IN t: Template) Next- (s: ANYPTR): ANYPTR, NEW, ABSTRACT; + (IN t: Template) Set- (s, next: ANYPTR): ANYPTR, NEW, ABSTRACT; + (IN t: Template) Sort (s: ANYPTR): ANYPTR, NEW + END; + +END RosettaMergeSort. diff --git a/Task/Sorting-algorithms-Merge-sort/Component-Pascal/sorting-algorithms-merge-sort-3.pas b/Task/Sorting-algorithms-Merge-sort/Component-Pascal/sorting-algorithms-merge-sort-3.pas new file mode 100644 index 0000000000..605a4ef261 --- /dev/null +++ b/Task/Sorting-algorithms-Merge-sort/Component-Pascal/sorting-algorithms-merge-sort-3.pas @@ -0,0 +1,85 @@ +MODULE RosettaMergeSortUse; + + (* Import Modules: *) + IMPORT Sort := RosettaMergeSort, Log := StdLog; + + (* Type Definitions: *) + TYPE + (* a linked list node containing an integer and a pointer to the next node *) + List = POINTER TO RECORD + value: INTEGER; + next: List + END; + + (* Implement the abstract record type Sort.Template *) + Template = RECORD (Sort.Template) END; + + (* Abstract Procedure Implementations: *) + + (* Compare integers in the list nodes to determine their order in the sorted list *) + (* For the sort to be stable `front` comes before `rear` if they are equal *) + PROCEDURE (IN t: Template) Before (front, rear: ANYPTR): BOOLEAN; + BEGIN RETURN front(List).value <= rear(List).value END Before; + + (* Return the next node in the linked list *) + PROCEDURE (IN t: Template) Next (s: ANYPTR): ANYPTR; + BEGIN RETURN s(List).next END Next; + + (* Set the next pointer of a list node *) + PROCEDURE (IN t: Template) Set (s, next: ANYPTR): ANYPTR; + BEGIN + IF next = NIL THEN + s(List).next := NIL + ELSE + s(List).next := next(List) + END; + RETURN s + END Set; + + (* Helper Procedures: *) + + (* Prefix a node to a list *) + PROCEDURE Prefix (value: INTEGER; s: List): List; + VAR new: List; + BEGIN + NEW(new); new.value := value; new.next := s; RETURN new + END Prefix; + + (* Write a list *) + PROCEDURE Show (s: List); + VAR count: INTEGER; + BEGIN + count := 0; + WHILE s # NIL DO + IF count = 10 THEN + Log.Ln; (* Insert a newline after displaying 10 numbers *) + count := 0 + END; + Log.IntForm(s.value, Log.decimal, 4, ' ', Log.hideBase); + s := s.next; + INC(count) + END + END Show; + + (* Main Procedure: *) + PROCEDURE Use*; + VAR t: Template; s: List; + (* Calls Prefix to add integers to the beginning of the list `s` *) + PROCEDURE b (value: INTEGER); BEGIN s := Prefix(value, s) END b; + BEGIN + (* Use the `b` procedure to add the integers to the list `s` *) + b(663); b(085); b(534); b(066); b(038); b(323); b(727); b(651); + b(625); b(706); b(149); b(956); b(804); b(626); b(106); b(230); + b(314); b(249); b(758); b(236); b(775); b(399); b(701); b(296); + b(770); b(380); b(403); b(760); b(159); b(551); b(153); b(297); + b(130); b(866); b(937); b(226); b(298); b(029); b(149); b(381); + b(590); b(255); b(101); b(485); b(801); b(223); b(645); b(458); + b(068); b(683); + Log.String("Before:"); Log.Ln; + Show(s); Log.Ln; + s := t.Sort(s)(List); + Log.String("After:"); Log.Ln; + Show(s); Log.Ln + END Use; + +END RosettaMergeSortUse. diff --git a/Task/Sorting-algorithms-Merge-sort/Raku/sorting-algorithms-merge-sort-1.raku b/Task/Sorting-algorithms-Merge-sort/Raku/sorting-algorithms-merge-sort-1.raku index 9cba63a48e..f112397fc1 100644 --- a/Task/Sorting-algorithms-Merge-sort/Raku/sorting-algorithms-merge-sort-1.raku +++ b/Task/Sorting-algorithms-Merge-sort/Raku/sorting-algorithms-merge-sort-1.raku @@ -1,23 +1,23 @@ #| Recursive, single-thread, mergesort implementation sub mergesort ( @a ) { - return @a if @a <= 1; + return @a if @a <= 1; - # recursion step - my $m = @a.elems div 2; - my @l = samewith @a[ 0 ..^ $m ]; - my @r = samewith @a[ $m ..^ @a ]; + # recursion step + my $m = @a.elems div 2; + my @l = samewith @a[ 0 ..^ $m ]; + my @r = samewith @a[ $m ..^ @a ]; - # short cut - in case of no overlapping left and right parts + # short cut - in case of no overlapping in left and right parts return flat @l, @r if @l[*-1] !after @r[0]; return flat @r, @l if @r[*-1] !after @l[0]; # merge step - return flat gather { - take @l[0] before @r[0] - ?? @l.shift - !! @r.shift - while @l and @r; + return flat gather { + take @l[0] before @r[0] + ?? @l.shift + !! @r.shift + while @l and @r; - take @l, @r; - } + take @l, @r; + } } diff --git a/Task/Sorting-algorithms-Merge-sort/Raku/sorting-algorithms-merge-sort-3.raku b/Task/Sorting-algorithms-Merge-sort/Raku/sorting-algorithms-merge-sort-3.raku index e49569c1f7..86b3ffd329 100644 --- a/Task/Sorting-algorithms-Merge-sort/Raku/sorting-algorithms-merge-sort-3.raku +++ b/Task/Sorting-algorithms-Merge-sort/Raku/sorting-algorithms-merge-sort-3.raku @@ -1,26 +1,29 @@ -#| Recursive, naive parallel, mergesort implementation -proto mergesort-parallel-naive(| --> Positional) {*} -multi mergesort-parallel-naive(@unsorted where @unsorted.elems < 2) { @unsorted } -multi mergesort-parallel-naive(@unsorted where @unsorted.elems == 2) { - @unsorted[0] after @unsorted[1] - ?? (@unsorted[1], @unsorted[0]) - !! @unsorted -} -multi mergesort-parallel-naive(@unsorted) { - my $mid = @unsorted.elems div 2; - my Promise $left-sorted = start { flat samewith @unsorted[ 0 ..^ $mid ] }; - my @right-sorted = flat samewith @unsorted[ $mid ..^ @unsorted.elems ]; +#| Recursive, naive multi-thread, mergesort implementation +sub mergesort-parallel-naive ( @a ) { + return @a if @a <= 1; - await $left-sorted andthen my @left-sorted = $left-sorted.result; + my $m = @a.elems div 2; - return flat @left-sorted, @right-sorted if @left-sorted[*-1] !after @right-sorted[0]; - return flat @right-sorted, @left-sorted if @right-sorted[*-1] !after @left-sorted[0]; + # recursion step launching new thread + my @l = start { samewith @a[ 0 ..^ $m ] }; - return flat gather { - take @left-sorted[0] before @right-sorted[0] - ?? @left-sorted.shift - !! @right-sorted.shift - while @left-sorted.elems and @right-sorted.elems; - take @left-sorted, @right-sorted; + # meanwhile recursively sort right side + my @r = samewith @a[ $m ..^ @a ] ; + + # as we went parallel on left side, we need to await the result + await @l[0] andthen @l = @l[0].result; + + # short cut - in case of no overlapping left and right parts + return flat @l, @r if @l[*-1] !after @r[0]; + return flat @r, @l if @r[*-1] !after @l[0]; + + # merge step + return flat gather { + take @l[0] before @r[0] + ?? @l.shift + !! @r.shift + while @l and @r; + + take @l, @r; } } diff --git a/Task/Sorting-algorithms-Merge-sort/Raku/sorting-algorithms-merge-sort-4.raku b/Task/Sorting-algorithms-Merge-sort/Raku/sorting-algorithms-merge-sort-4.raku index b670a05add..d669264c96 100644 --- a/Task/Sorting-algorithms-Merge-sort/Raku/sorting-algorithms-merge-sort-4.raku +++ b/Task/Sorting-algorithms-Merge-sort/Raku/sorting-algorithms-merge-sort-4.raku @@ -1,47 +1,31 @@ -constant $BATCH-SIZE = 2**10; -my atomicint $worker = $*KERNEL.cpu-cores; +#| Recursive, batch tuned multi-thread, mergesort implementation +sub mergesort-parallel ( @a, $batch = 2**9 ) { + return @a if @a <= 1; -#| Recursive, parallel, tuned, mergesort implementation -proto mergesort-parallel(| --> Positional) {*} -multi mergesort-parallel(@unsorted where @unsorted.elems < 2) { @unsorted } -multi mergesort-parallel(@unsorted where @unsorted.elems == 2) { - @unsorted[0] after @unsorted[1] - ?? (@unsorted[1], @unsorted[0]) - !! @unsorted -} -multi mergesort-parallel(@unsorted) { - my $mid = @unsorted.elems div 2; + my $m = @a.elems div 2; - # atomically decide if we run left side on a new thread - my $left-sorted = ⚛$worker > 0 && - $mid > $BATCH-SIZE - ?? ( - $worker⚛--; - start { - LEAVE $worker⚛++; - samewith @unsorted[ 0 ..^ $mid ] - } - ) - !! samewith @unsorted[ 0 ..^ $mid ]; + # recursion step + my @l = $m >= $batch + ?? start { samewith @a[ 0 ..^ $m ], $batch } + !! samewith @a[ 0 ..^ $m ], $batch ; - # recursion on the right side using current thread - my @right-sorted = samewith @unsorted[ $mid ..^ @unsorted.elems ]; + # meanwhile recursively sort right side + my @r = samewith @a[ $m ..^ @a ], $batch; - # await calculation of left side - await $left-sorted andthen $left-sorted = flat $left-sorted.result - if $left-sorted ~~ Promise; - my @left-sorted = flat $left-sorted; + # if we went parallel on left side, we need to await the result + await @l[0] andthen @l = @l[0].result if @l[0] ~~ Promise; # short cut - in case of no overlapping left and right parts - return flat @left-sorted, @right-sorted if @left-sorted[*-1] !after @right-sorted[0]; - return flat @right-sorted, @left-sorted if @right-sorted[*-1] !after @left-sorted[0]; + return flat @l, @r if @l[*-1] !after @r[0]; + return flat @r, @l if @r[*-1] !after @l[0]; # merge step return flat gather { - take @left-sorted[0] before @right-sorted[0] - ?? @left-sorted.shift - !! @right-sorted.shift - while @left-sorted.elems and @right-sorted.elems; - take @left-sorted, @right-sorted; + take @l[0] before @r[0] + ?? @l.shift + !! @r.shift + while @l and @r; + + take @l, @r; } } diff --git a/Task/Sorting-algorithms-Merge-sort/Raku/sorting-algorithms-merge-sort-5.raku b/Task/Sorting-algorithms-Merge-sort/Raku/sorting-algorithms-merge-sort-5.raku index c3b2fb2e68..882e1b5b82 100644 --- a/Task/Sorting-algorithms-Merge-sort/Raku/sorting-algorithms-merge-sort-5.raku +++ b/Task/Sorting-algorithms-Merge-sort/Raku/sorting-algorithms-merge-sort-5.raku @@ -1,31 +1,18 @@ +say "x" x 10 ~ " Testing " ~ "x" x 10; use Test; +my @functions-under-test = &mergesort, &mergesort-parallel-naive, &mergesort-parallel; my @testcases = () => (), .List => .List, => , - => , - => , + ("b", "a", 3) => (3, "a", "b"), => , - (2, 3, 1, 4, 5) => (1, 2, 3, 4, 5), => .sort ; -my @implementations = &mergesort, &mergesort-parallel, &mergesort-parallel-naive; -plan @testcases.elems * @implementations.elems; -for @implementations -> &fun { + +plan @testcases.elems * @functions-under-test.elems; +for @functions-under-test -> &fun { say &fun.name; is-deeply &fun(.key), .value, .key ~ " => " ~ .value for @testcases; } done-testing; - -use Benchmark; -my $elem-length = 8; -my @unsorted of Str = ('a'..'z').roll($elem-length).join xx 10 * $worker * $BATCH-SIZE; -my $runs = 10; - -say "Benchmarking by $runs times sorting {@unsorted.elems} strings of size $elem-length - using batches of $BATCH-SIZE strings and $worker workers for mergesort-parallel()."; -say "Hint: watch the number of Raku threads in Activity Monitor on Mac, Ressource Monitor on Windows or htop on Linux."; -for @implementations -> &fun { - print &fun.name, " => avg: "; - my ($start, $end, $diff, $avg) = timethis $runs, sub { &fun(@unsorted) } - say "$avg secs, total $diff secs"; -} diff --git a/Task/Sorting-algorithms-Merge-sort/Raku/sorting-algorithms-merge-sort-6.raku b/Task/Sorting-algorithms-Merge-sort/Raku/sorting-algorithms-merge-sort-6.raku new file mode 100644 index 0000000000..698047f491 --- /dev/null +++ b/Task/Sorting-algorithms-Merge-sort/Raku/sorting-algorithms-merge-sort-6.raku @@ -0,0 +1,27 @@ +use Benchmark; +my $runs = 5; +my $elems = 10 * Kernel.cpu-cores * 2**10; +my @unsorted of Str = ('a'..'z').roll(8).join xx $elems; +my UInt $l-batch = 2**13; +my UInt $m-batch = 2**11; +my UInt $s-batch = 2**9; +my UInt $t-batch = 2**7; + +say "elements: $elems, runs: $runs, cpu-cores: {Kernel.cpu-cores}, large/medium/small/tiny-batch: $l-batch/$m-batch/$s-batch/$t-batch"; + +my %results = timethese $runs, { + single-thread => { mergesort(@unsorted) }, + parallel-naive => { mergesort-parallel-naive(@unsorted) }, + parallel-tiny-batch => { mergesort-parallel(@unsorted, $t-batch) }, + parallel-small-batch => { mergesort-parallel(@unsorted, $s-batch) }, + parallel-medium-batch => { mergesort-parallel(@unsorted, $m-batch) }, + parallel-large-batch => { mergesort-parallel(@unsorted, $l-batch) }, +}, :statistics; + +my @metrics = ; +my $msg-row = "%.4f\t" x @metrics.elems ~ '%s'; + +say @metrics.join("\t"); +for %results.kv -> $name, %m { + say sprintf($msg-row, %m{@metrics}, $name); +} diff --git a/Task/Sorting-algorithms-Merge-sort/SETL/sorting-algorithms-merge-sort.setl b/Task/Sorting-algorithms-Merge-sort/SETL/sorting-algorithms-merge-sort.setl new file mode 100644 index 0000000000..ebb16ff1fb --- /dev/null +++ b/Task/Sorting-algorithms-Merge-sort/SETL/sorting-algorithms-merge-sort.setl @@ -0,0 +1,31 @@ +program merge_sort; + test := [-8, 241, 9, 316, -6, 3, 413, 9, 10]; + print(test, '=>', mergesort(test)); + + proc mergesort(m); + if #m <= 1 then + return m; + end if; + + middle := #m div 2; + left := mergesort(m(..middle)); + right := mergesort(m(middle+1..)); + if left(#left) <= right(1) then + return left + right; + end if; + return merge(left, right); + end proc; + + proc merge(left, right); + result := []; + loop while left /= [] and right /= [] do + if left(1) <= right(1) then + item fromb left; + else + item fromb right; + end if; + result with:= item; + end loop; + return result + left + right; + end proc; +end program; diff --git a/Task/Sorting-algorithms-Quicksort/Chipmunk-Basic/sorting-algorithms-quicksort.basic b/Task/Sorting-algorithms-Quicksort/Chipmunk-Basic/sorting-algorithms-quicksort.basic new file mode 100644 index 0000000000..2d2e5ef0bc --- /dev/null +++ b/Task/Sorting-algorithms-Quicksort/Chipmunk-Basic/sorting-algorithms-quicksort.basic @@ -0,0 +1,38 @@ +100 dim array(15) +110 a = 0 +120 b = ubound(array) +130 randomize timer +140 for i = a to b +150 array(i) = rnd(1)*1000 +160 next i +170 print "unsort "; +180 for i = a to b +190 print using "####";array(i); +200 if i = b then print ""; else print ", "; +210 next i +220 quicksort(array(),a,b) +230 print : print " sort "; +240 for i = a to b +250 print using "####";array(i); +260 if i = b then print ""; else print ", "; +270 next i +280 print +290 end +300 sub quicksort(array(),l,r) +310 size = r-l+1 +320 if size < 2 then return +330 i = l +340 j = r +350 pivot = array(l+int(size/2)) +360 rem repeat +370 while array(i) < pivot +380 i = i+1 +390 wend +400 while pivot < array(j) +410 j = j-1 +420 wend +430 if i <= j then temp = array(i) : array(i) = array(j) : array(j) = temp : i = i+1 : j = j-1 +440 if i <= j then goto 360 +450 if l < j then quicksort(array(),l,j) +460 if i < r then quicksort(array(),i,r) +470 end sub diff --git a/Task/Sorting-algorithms-Quicksort/Fortran/sorting-algorithms-quicksort.f b/Task/Sorting-algorithms-Quicksort/Fortran/sorting-algorithms-quicksort.f deleted file mode 100644 index 605845186e..0000000000 --- a/Task/Sorting-algorithms-Quicksort/Fortran/sorting-algorithms-quicksort.f +++ /dev/null @@ -1,100 +0,0 @@ -MODULE qsort_mod - - IMPLICIT NONE - - TYPE group - INTEGER :: order ! original order of unsorted data - REAL :: VALUE ! values to be sorted by - END TYPE group - -CONTAINS - - RECURSIVE SUBROUTINE QSort(a,na) - - ! DUMMY ARGUMENTS - INTEGER, INTENT(in) :: nA - TYPE (group), DIMENSION(nA), INTENT(in out) :: A - - ! LOCAL VARIABLES - INTEGER :: left, right - REAL :: random - REAL :: pivot - TYPE (group) :: temp - INTEGER :: marker - - IF (nA > 1) THEN - - CALL random_NUMBER(random) - pivot = A(INT(random*REAL(nA-1))+1)%VALUE ! Choice a random pivot (not best performance, but avoids worst-case) - left = 1 - right = nA - ! Partition loop - DO - IF (left >= right) EXIT - DO - IF (A(right)%VALUE <= pivot) EXIT - right = right - 1 - END DO - DO - IF (A(left)%VALUE >= pivot) EXIT - left = left + 1 - END DO - IF (left < right) THEN - temp = A(left) - A(left) = A(right) - A(right) = temp - END IF - END DO - - IF (left == right) THEN - marker = left + 1 - ELSE - marker = left - END IF - - CALL QSort(A(:marker-1),marker-1) - CALL QSort(A(marker:),nA-marker+1) WARNING CAN GO BEYOND END OF ARRAY DO NOT USE THIS IMPLEMENTATION - - END IF - - END SUBROUTINE QSort - -END MODULE qsort_mod - -! Test Qsort Module -PROGRAM qsort_test - USE qsort_mod - IMPLICIT NONE - - INTEGER, PARAMETER :: nl = 10, nc = 5, l = nc*nl, ns=33 - TYPE (group), DIMENSION(l) :: A - INTEGER, DIMENSION(ns) :: seed - INTEGER :: i - REAL :: random - CHARACTER(LEN=80) :: fmt1, fmt2 - ! Using the Fibonacci sequence to initialize seed: - seed(1) = 1 ; seed(2) = 1 - DO i = 3,ns - seed(i) = seed(i-1)+seed(i-2) - END DO - ! Formats of the outputs - WRITE(fmt1,'(A,I2,A)') '(', nc, '(I5,2X,F6.2))' - WRITE(fmt2,'(A,I2,A)') '(3x', nc, '("Ord. Num.",3x))' - PRINT *, "Unsorted Values:" - PRINT fmt2, - CALL random_SEED(put = seed) - DO i = 1, l - CALL random_NUMBER(random) - A(i)%VALUE = NINT(1000*random)/10.0 - A(i)%order = i - IF (MOD(i,nc) == 0) WRITE (*,fmt1) A(i-nc+1:i) - END DO - PRINT * - CALL QSort(A,l) - PRINT *, "Sorted Values:" - PRINT fmt2, - DO i = nc, l, nc - IF (MOD(i,nc) == 0) WRITE (*,fmt1) A(i-nc+1:i) - END DO - STOP -END PROGRAM qsort_test diff --git a/Task/Sorting-algorithms-Quicksort/Python/sorting-algorithms-quicksort-1.py b/Task/Sorting-algorithms-Quicksort/Python/sorting-algorithms-quicksort-1.py index 48cfd980de..ae865c3225 100644 --- a/Task/Sorting-algorithms-Quicksort/Python/sorting-algorithms-quicksort-1.py +++ b/Task/Sorting-algorithms-Quicksort/Python/sorting-algorithms-quicksort-1.py @@ -1,21 +1,21 @@ -def quickSort(arr): - less = [] - pivotList = [] - more = [] - if len(arr) <= 1: - return arr - else: - pivot = arr[0] - for i in arr: - if i < pivot: - less.append(i) - elif i > pivot: - more.append(i) - else: - pivotList.append(i) - less = quickSort(less) - more = quickSort(more) - return less + pivotList + more +def quick_sort(sequence): + lesser = [] + equal = [] + greater = [] + if len(sequence) <= 1: + return sequence + pivot = sequence[0] + for element in sequence: + if element < pivot: + lesser.append(element) + elif element > pivot: + greater.append(element) + else: + equal.append(element) + lesser = quick_sort(lesser) + greater = quick_sort(greater) + return lesser + equal + greater + a = [4, 65, 2, -31, 0, 99, 83, 782, 1] -a = quickSort(a) +a = quick_sort(a) diff --git a/Task/Sorting-algorithms-Quicksort/Raku/sorting-algorithms-quicksort-1.raku b/Task/Sorting-algorithms-Quicksort/Raku/sorting-algorithms-quicksort-1.raku index bdd140ac28..b492742a20 100644 --- a/Task/Sorting-algorithms-Quicksort/Raku/sorting-algorithms-quicksort-1.raku +++ b/Task/Sorting-algorithms-Quicksort/Raku/sorting-algorithms-quicksort-1.raku @@ -1,7 +1,6 @@ -#| Recursive, single-thread, single-pass, quicksort implementation -multi quicksort(@unsorted where @unsorted.elems < 2) { @unsorted } -multi quicksort(@unsorted) { - my $pivot = @unsorted.pick; - my %class{Order} is default([]) = @unsorted.classify: * cmp $pivot; - |samewith(%class{Less}), |%class{Same}, |samewith(%class{More}) +#| Recursive, single-thread, random pivot, single-pass, quicksort implementation +multi quicksort(\a where a.elems < 2) { a } +multi quicksort(\a, \pivot = a.pick) { + my %prt{Order} is default([]) = a.classify: * cmp pivot; + |samewith(%prt{Less}), |%prt{Same}, |samewith(%prt{More}) } diff --git a/Task/Sorting-algorithms-Quicksort/Raku/sorting-algorithms-quicksort-2.raku b/Task/Sorting-algorithms-Quicksort/Raku/sorting-algorithms-quicksort-2.raku index 17210b50cd..62295e10db 100644 --- a/Task/Sorting-algorithms-Quicksort/Raku/sorting-algorithms-quicksort-2.raku +++ b/Task/Sorting-algorithms-Quicksort/Raku/sorting-algorithms-quicksort-2.raku @@ -1,9 +1,8 @@ -#| 7-Line, recursive, parallel, single-pass, quicksort implementation -multi seven-line-quicksort-parallel(@unsorted where @unsorted.elems < 2) { @unsorted } -multi seven-line-quicksort-parallel(@unsorted) { - my $pivot = @unsorted.pick; - my %partitions{Order} is default([]) = @unsorted.classify( * cmp $pivot ); - my Promise $less = start { samewith(%partitions{Less}) } - my $more = samewith(%partitions{More}); - await $less andthen |$less.result, |%partitions{Same}, |$more; +#| Recursive, parallel, random pivot, single-pass, quicksort implementation +multi quicksort-parallel-naive(\a where a.elems < 2) { a } +multi quicksort-parallel-naive(\a, \pivot = a.pick) { + my %prt{Order} is default([]) = a.classify: * cmp pivot; + my Promise $less = start { samewith(%prt{Less}) } + my $more = samewith(%prt{More}); + await $less andthen |$less.result, |%prt{Same}, |$more; } diff --git a/Task/Sorting-algorithms-Quicksort/Raku/sorting-algorithms-quicksort-3.raku b/Task/Sorting-algorithms-Quicksort/Raku/sorting-algorithms-quicksort-3.raku index e4d56f34ba..347d18f72a 100644 --- a/Task/Sorting-algorithms-Quicksort/Raku/sorting-algorithms-quicksort-3.raku +++ b/Task/Sorting-algorithms-Quicksort/Raku/sorting-algorithms-quicksort-3.raku @@ -1,31 +1,22 @@ -constant $BATCH-SIZE = 2**10; -my atomicint $worker = $*KERNEL.cpu-cores; -#| Recursive, parallel, tuned, single-pass, quicksort implementation -proto quicksort-parallel(| --> Positional) {*} -multi quicksort-parallel(@unsorted where @unsorted.elems < 2) { @unsorted } -multi quicksort-parallel(@unsorted) { - # separate unsorted input into Order Less, Same and More compared to a random $pivot - my $pivot = @unsorted.pick; - my %partitions{Order} is default([]) = @unsorted.classify( * cmp $pivot ); +#| Recursive, parallel, batch tuned, single-pass, quicksort implementation +sub quicksort-parallel(@a, $batch = 2**9) { + return @a if @a.elems < 2; - # atomically decide if we sort the Less partition on a new thread - my $less = ⚛$worker > 0 && - %partitions{Less}.elems > $BATCH-SIZE - ?? ( - $worker⚛--; - start { - LEAVE $worker⚛++; - samewith(%partitions{Less}) - } - ) - !! samewith(%partitions{Less}); + # separate unsorted input into Order Less, Same and More compared to a random $pivot + my $pivot = @a.pick; + my %prt{Order} is default([]) = @a.classify( * cmp $pivot ); + + # decide if we sort the Less partition on a new thread + my $less = %prt{Less}.elems >= $batch + ?? start { samewith(%prt{Less}, $batch) } + !! samewith(%prt{Less}, $batch); # meanwhile use current thread for sorting the More partition - my $more = samewith(%partitions{More}); + my $more = samewith(%prt{More}, $batch); # if we went parallel, we need to await the result await $less andthen $less = $less.result if $less ~~ Promise; # concat all sorted partitions into a list and return - |$less, |%partitions{Same}, |$more; + |$less, |%prt{Same}, |$more; } diff --git a/Task/Sorting-algorithms-Quicksort/Raku/sorting-algorithms-quicksort-4.raku b/Task/Sorting-algorithms-Quicksort/Raku/sorting-algorithms-quicksort-4.raku index 9a312c91c5..2587d37a7c 100644 --- a/Task/Sorting-algorithms-Quicksort/Raku/sorting-algorithms-quicksort-4.raku +++ b/Task/Sorting-algorithms-Quicksort/Raku/sorting-algorithms-quicksort-4.raku @@ -1,17 +1,17 @@ +say "x" x 10 ~ " Testing " ~ "x" x 10; use Test; +my @functions-under-test = &quicksort, &quicksort-parallel-naive, &quicksort-parallel; my @testcases = () => (), .List => .List, => , - => , - => , + ("b", "a", 3) => (3, "a", "b"), => , - (2, 3, 1, 4, 5) => (1, 2, 3, 4, 5), => .sort -; -my @implementations = &quicksort, &seven-line-quicksort-parallel, &quicksort-parallel; -plan @testcases.elems * @implementations.elems; -for @implementations -> &fun { + ; + +plan @testcases.elems * @functions-under-test.elems; +for @functions-under-test -> &fun { say &fun.name; is-deeply &fun(.key), .value, .key ~ " => " ~ .value for @testcases; } diff --git a/Task/Sorting-algorithms-Quicksort/Raku/sorting-algorithms-quicksort-5.raku b/Task/Sorting-algorithms-Quicksort/Raku/sorting-algorithms-quicksort-5.raku index 3a8383e288..5287953494 100644 --- a/Task/Sorting-algorithms-Quicksort/Raku/sorting-algorithms-quicksort-5.raku +++ b/Task/Sorting-algorithms-Quicksort/Raku/sorting-algorithms-quicksort-5.raku @@ -1,9 +1,28 @@ -my $elem-length = 8; -my @large of Str = ('a'..'z').roll($elem-length).join xx 10 * $worker * $BATCH-SIZE; +say "x" x 11 ~ " Benchmarking " ~ "x" x 11; +use Benchmark; +my $runs = 5; +my $elems = 10 * Kernel.cpu-cores * 2**10; +my @unsorted of Str = ('a'..'z').roll(8).join xx $elems; +my UInt $l-batch = 2**13; +my UInt $m-batch = 2**11; +my UInt $s-batch = 2**9; +my UInt $t-batch = 2**7; -say "Benchmarking by sorting {@large.elems} strings of size $elem-length - using batches of $BATCH-SIZE strings and $worker workers."; -my @benchmark = gather for @implementations -> &fun { - &fun(@large); - take (&fun.name => now - ENTER now); +say "elements: $elems, runs: $runs, cpu-cores: {Kernel.cpu-cores}, large/medium/small/tiny-batch: $l-batch/$m-batch/$s-batch/$t-batch"; + +my %results = timethese $runs, { + single-thread => { quicksort(@unsorted) }, + parallel-naive => { quicksort-parallel-naive(@unsorted) }, + parallel-tiny-batch => { quicksort-parallel(@unsorted, $t-batch) }, + parallel-small-batch => { quicksort-parallel(@unsorted, $s-batch) }, + parallel-medium-batch => { quicksort-parallel(@unsorted, $m-batch) }, + parallel-large-batch => { quicksort-parallel(@unsorted, $l-batch) }, +}, :statistics; + +my @metrics = ; +my $msg-row = "%.4f\t" x @metrics.elems ~ '%s'; + +say @metrics.join("\t"); +for %results.kv -> $name, %m { + say sprintf($msg-row, %m{@metrics}, $name); } -say @benchmark; diff --git a/Task/Sorting-algorithms-Quicksort/Zig/sorting-algorithms-quicksort-1.zig b/Task/Sorting-algorithms-Quicksort/Zig/sorting-algorithms-quicksort-1.zig new file mode 100644 index 0000000000..b10335d617 --- /dev/null +++ b/Task/Sorting-algorithms-Quicksort/Zig/sorting-algorithms-quicksort-1.zig @@ -0,0 +1,27 @@ +const std = @import("std"); + +pub fn quickSort(comptime T: type, arr: []T, comptime compareFn: fn (T, T) bool) void { + if (arr.len < 2) return; + + const pivot_index = partition(T, arr, compareFn); + quickSort(T, arr[0..pivot_index], compareFn); + quickSort(T, arr[pivot_index + 1 .. arr.len], compareFn); +} + +fn partition(comptime T: type, arr: []T, comptime compareFn: fn (T, T) bool) usize { + const pivot_index = arr.len / 2; + const last_index = arr.len - 1; + + std.mem.swap(T, &arr[pivot_index], &arr[last_index]); + + var store_index: usize = 0; + for (arr[0 .. arr.len - 1]) |*elem_ptr| { + if (compareFn(elem_ptr.*, arr[last_index])) { + std.mem.swap(T, elem_ptr, &arr[store_index]); + store_index += 1; + } + } + + std.mem.swap(T, &arr[store_index], &arr[last_index]); + return store_index; +} diff --git a/Task/Sorting-algorithms-Quicksort/Zig/sorting-algorithms-quicksort-2.zig b/Task/Sorting-algorithms-Quicksort/Zig/sorting-algorithms-quicksort-2.zig new file mode 100644 index 0000000000..21666eae7e --- /dev/null +++ b/Task/Sorting-algorithms-Quicksort/Zig/sorting-algorithms-quicksort-2.zig @@ -0,0 +1,24 @@ +const std = @import("std"); + +pub fn main() void { + const print = std.debug.print; + + var arr = [_]i16{ 4, 65, 2, -31, 0, 99, 2, 83, 782, 1 }; + print("Before: {any}\n\n", .{arr}); + + print("Sort numbers in ascending order.\n", .{}); + quickSort(i16, &arr, struct { + fn sortFn(left: i16, right: i16) bool { + return left < right; + } + }.sortFn); + print("After: {any}\n\n", .{arr}); + + print("Sort numbers in descending order.\n", .{}); + quickSort(i16, &arr, struct { + fn sortFn(left: i16, right: i16) bool { + return left > right; + } + }.sortFn); + print("After: {any}\n\n", .{arr}); +} diff --git a/Task/Sorting-algorithms-Quicksort/Zig/sorting-algorithms-quicksort.zig b/Task/Sorting-algorithms-Quicksort/Zig/sorting-algorithms-quicksort.zig deleted file mode 100644 index 87ae8d2421..0000000000 --- a/Task/Sorting-algorithms-Quicksort/Zig/sorting-algorithms-quicksort.zig +++ /dev/null @@ -1,45 +0,0 @@ -const std = @import("std"); - -pub fn quicksort(comptime t: type, arr: []t) void { - if (arr.len < 2) return; - var pivot = arr[@as(usize, @intFromFloat(@floor(@as(f64, @floatFromInt(arr.len)) / 2)))]; - var left: usize = 0; - var right: usize = arr.len - 1; - - while (left <= right) { - while (arr[left] < pivot) { - left += 1; - } - while (arr[right] > pivot) { - right -= 1; - } - if (left <= right) { - const tmp = arr[left]; - arr[left] = arr[right]; - arr[right] = tmp; - left += 1; - right -= 1; - } - } - - quicksort(t, arr[0 .. right + 1]); - quicksort(t, arr[left..]); -} - -pub fn main() !void { - const LIST_TYPE = i16; - var arr: [10]LIST_TYPE = [_]LIST_TYPE{ 4, 65, 2, -31, 0, 99, 2, 83, 782, 1 }; - var i: usize = 0; - - while (i < arr.len) : (i += 1) { - std.debug.print("{d} ", .{arr[i]}); - } - std.debug.print("\n", .{}); - - i = 0; - quicksort(LIST_TYPE, &arr); - while (i < arr.len) : (i += 1) { - std.debug.print("{d} ", .{arr[i]}); - } - std.debug.print("\n", .{}); -} diff --git a/Task/Sorting-algorithms-Selection-sort/Rust/sorting-algorithms-selection-sort.rust b/Task/Sorting-algorithms-Selection-sort/Rust/sorting-algorithms-selection-sort-1.rust similarity index 100% rename from Task/Sorting-algorithms-Selection-sort/Rust/sorting-algorithms-selection-sort.rust rename to Task/Sorting-algorithms-Selection-sort/Rust/sorting-algorithms-selection-sort-1.rust diff --git a/Task/Sorting-algorithms-Selection-sort/Rust/sorting-algorithms-selection-sort-2.rust b/Task/Sorting-algorithms-Selection-sort/Rust/sorting-algorithms-selection-sort-2.rust new file mode 100644 index 0000000000..add9a81ed0 --- /dev/null +++ b/Task/Sorting-algorithms-Selection-sort/Rust/sorting-algorithms-selection-sort-2.rust @@ -0,0 +1,12 @@ +fn selection_sort(arr: &mut [T]) { + for i in 0 .. arr.len() { + let unsorted = &mut arr[i..]; + let mut unsorted_min: usize = 0; + for (j, entry) in unsorted.iter().enumerate() { + if *entry < unsorted[unsorted_min] { + unsorted_min = j; + } + } + unsorted.swap(0, unsorted_min); + } +} diff --git a/Task/Sorting-algorithms-Stooge-sort/EasyLang/sorting-algorithms-stooge-sort.easy b/Task/Sorting-algorithms-Stooge-sort/EasyLang/sorting-algorithms-stooge-sort.easy new file mode 100644 index 0000000000..09be1a07d4 --- /dev/null +++ b/Task/Sorting-algorithms-Stooge-sort/EasyLang/sorting-algorithms-stooge-sort.easy @@ -0,0 +1,16 @@ +proc stsort left right . d[] . + if d[left] > d[right] + swap d[left] d[right] + . + if right - left + 1 > 2 + t = (right - left + 1) div 3 + stsort left right - t d[] + stsort left + t right d[] + stsort left right - t d[] + . +. +for i = 1 to 100 + d[] &= random 1000 +. +stsort 1 len d[] d[] +print d[] diff --git a/Task/Sorting-algorithms-Stooge-sort/Elena/sorting-algorithms-stooge-sort.elena b/Task/Sorting-algorithms-Stooge-sort/Elena/sorting-algorithms-stooge-sort.elena index f127a21a5f..a85d6a45df 100644 --- a/Task/Sorting-algorithms-Stooge-sort/Elena/sorting-algorithms-stooge-sort.elena +++ b/Task/Sorting-algorithms-Stooge-sort/Elena/sorting-algorithms-stooge-sort.elena @@ -24,7 +24,7 @@ extension op public program() { - var list := new Range(0, 15).selectBy:(n => randomGenerator.eval(20)).toArray(); + var list := new Range(0, 15).selectBy:(n => randomGenerator.nextInt(20)).toArray(); console.printLine("before:", list.asEnumerable()); console.printLine("after:", list.stoogeSort().asEnumerable()) diff --git a/Task/Soundex/EasyLang/soundex.easy b/Task/Soundex/EasyLang/soundex.easy new file mode 100644 index 0000000000..e33d4a9a74 --- /dev/null +++ b/Task/Soundex/EasyLang/soundex.easy @@ -0,0 +1,23 @@ +trans$ = "01230120022455012623010202" +func$ code c$ . + c = strcode c$ - 64 + if c > 26 + c -= 32 + . + return substr trans$ c 1 +. +func$ soundex s$ . + code$ = substr s$ 1 1 + prev$ = code code$ + for i = 2 to len s$ + cur$ = code substr s$ i 1 + if cur$ <> "" and cur$ <> "0" and cur$ <> prev$ + code$ &= cur$ + . + prev$ = cur$ + . + return substr code$ & "0000" 1 4 +. +for v$ in [ "Soundex" "Example" "Sownteks" "Ekzampul" ] + print soundex v$ +. diff --git a/Task/Speech-synthesis/Quackery/speech-synthesis.quackery b/Task/Speech-synthesis/Quackery/speech-synthesis.quackery new file mode 100644 index 0000000000..5324793b20 --- /dev/null +++ b/Task/Speech-synthesis/Quackery/speech-synthesis.quackery @@ -0,0 +1,7 @@ + [ $ / +import subprocess +subprocess.run(["say", +string_from_stack()]) + / python ] is speak ( $ --> ) + +$ "This is an example of speech synthesis" speak diff --git a/Task/Spelling-of-ordinal-numbers/Quackery/spelling-of-ordinal-numbers.quackery b/Task/Spelling-of-ordinal-numbers/Quackery/spelling-of-ordinal-numbers.quackery new file mode 100644 index 0000000000..a042dd703d --- /dev/null +++ b/Task/Spelling-of-ordinal-numbers/Quackery/spelling-of-ordinal-numbers.quackery @@ -0,0 +1,26 @@ + [ name$ + dup -2 split nip + [ switch + $ "ne" case + [ -3 split drop + $ "first" join ] + $ "wo" case + [ -3 split drop + $ "second" join ] + $ "ee" case + [ -3 split drop + $ "ird" join ] + $ "ve" case + [ -2 split drop + $ "fth" join ] + $ "ht" case + [ $ "h" join ] + $ "ty" case + [ -1 split drop + $ "ieth" join ] + otherwise + [ $ "th" join ] ] ] is nameth$ ( n --> $ ) + + ' [ 1 2 3 4 5 11 65 100 101 272 23456 8007006005004003 ] + witheach + [ dup echo say " = " nameth$ echo$ cr ] diff --git a/Task/Sphenic-numbers/C-sharp/sphenic-numbers.cs b/Task/Sphenic-numbers/C-sharp/sphenic-numbers.cs new file mode 100644 index 0000000000..8730dcb0c4 --- /dev/null +++ b/Task/Sphenic-numbers/C-sharp/sphenic-numbers.cs @@ -0,0 +1,62 @@ +using System.Linq; +using System.Collections.Generic; +using static System.Console; + +public static class SphenicNumbers +{ + public static void Main() + { + var numbers = FindSphenicNumbers(1_000_000).OrderBy(t => t.N).ToList(); + var triplets = numbers.Select(t => t.N).Consecutive().ToList(); + + WriteLine("Sphenic numbers up to 1 000"); + numbers.Select(t => t.N).TakeWhile(n => n < 1000).Chunk(15) + .Select(row => row.Delimit()).ForEach(WriteLine); + WriteLine(); + + WriteLine("Sphenic triplets up to 10 000"); + triplets.TakeWhile(n => n < 10_000).Select(n => (n-2, n-1, n)).Chunk(3) + .Select(row => row.Delimit()).ForEach(WriteLine); + WriteLine(); + + WriteLine($"Number of sphenic numbers < 1 000 000: {numbers.Count}"); + WriteLine($"Number of sphenic triplets < 1 000 000: {triplets.Count}"); + var (n, (a, b, c)) = numbers[199_999]; + WriteLine($"The 200 000th sphenic number: {n} = {a} * {b} * {c}"); + int t = triplets[4_999]; + WriteLine($"The 5 000th sphenic triplet: {(t-2, t-1, t)}"); + } + + static IEnumerable<(int N, (int, int, int) Factors)> FindSphenicNumbers(int bound) + { + var primes = PrimeMath.Sieve(bound / 6).ToList(); + for (int i = 0; i < primes.Count; i++) { + for (int j = i + 1; j < primes.Count; j++) { + int p = primes[i] * primes[j]; + if (p >= bound) break; + for (int k = j + 1; k < primes.Count; k++) { + if (primes[k] > bound / p) break; + int n = p * primes[k]; + yield return (n, (primes[i], primes[j], primes[k])); + } + } + } + } + + static IEnumerable Consecutive(this IEnumerable source) + { + var (a, b, c) = (0, 0, 0); + foreach (int d in source) { + (a, b, c) = (b, c, d); + if (b - a == 1 && c - b == 1) yield return c; + } + } + + static string Delimit(this IEnumerable source, string separator = " ") => + string.Join(separator, source); + + static void ForEach(this IEnumerable source, Action action) + { + foreach (T element in source) action(element); + } +} diff --git a/Task/Sphenic-numbers/Sidef/sphenic-numbers.sidef b/Task/Sphenic-numbers/Sidef/sphenic-numbers.sidef new file mode 100644 index 0000000000..0f7f11e771 --- /dev/null +++ b/Task/Sphenic-numbers/Sidef/sphenic-numbers.sidef @@ -0,0 +1,26 @@ +func sphenic_numbers(upto) { + 3.squarefree_almost_primes(upto) +} + +func sphenic_triplets(upto) { + var S = sphenic_numbers(upto) + S.grep_kv {|k,v| v+2 == S[k+2] }.map{ [_, _+1, _+2] } +} + +with (1e3) {|n| + say "Sphenic numbers less than #{n.commify}:" + sphenic_numbers(n-1).slices(15).each{.map{'%4s' % _}.join.say} +} + +with (1e4) {|n| + say "\nSphenic triplets less than #{n.commify}:" + sphenic_triplets(n-1).each{.say} +} + +with (1e6) {|n| + var triplets = sphenic_triplets(n-1) + say "\nThere are #{3.squarefree_almost_prime_count(n-1)} sphenic numbers less than #{n.commify}." + say "There are #{triplets.len} sphenic triplets less than #{n.commify}." + with (2e5) {|n| say "The #{n.commify}th sphenic number is: #{nth_squarefree_almost_prime(n, 3)}." } + with (5e3) {|n| say "The #{n.commify}th sphenic triplet is: #{triplets[n-1]}." } +} diff --git a/Task/Split-a-character-string-based-on-change-of-character/BQN/split-a-character-string-based-on-change-of-character.bqn b/Task/Split-a-character-string-based-on-change-of-character/BQN/split-a-character-string-based-on-change-of-character.bqn new file mode 100644 index 0000000000..43a9ec7f0c --- /dev/null +++ b/Task/Split-a-character-string-based-on-change-of-character/BQN/split-a-character-string-based-on-change-of-character.bqn @@ -0,0 +1,4 @@ +Split ← (+`⊏⊸»⊸≠)⊸⊔ +Join ← {∾⟜𝕨⊸∾´𝕩} + +", " Join⟜Split "gHHH5YY++///\" diff --git a/Task/Square-form-factorization/Pascal/square-form-factorization.pas b/Task/Square-form-factorization/Pascal/square-form-factorization.pas new file mode 100644 index 0000000000..a9fba11d4d --- /dev/null +++ b/Task/Square-form-factorization/Pascal/square-form-factorization.pas @@ -0,0 +1,293 @@ +program SquFoF_console; + +{$mode objfpc}{$H+} + +uses SquFoF_utils; + +type TResultKind = + (rkPrelim, // a factor was found by the preliminary routine + rkMain, // a factor was found by the main algorithm + rkFail); // no factor was found +type TAlgoResult = record + Kind : TResultKind; + Mult : word; + Factor : UInt64; +end; + +// Preliminary to G-W algorithm. Returns D and S of the algorithm. +// Also returns a non-trivial factor if found, else returns factor = 1. +procedure GWPrelim( N : UInt64; // number to be factorized + m : word; // multiplier + out D, S, factor : UInt64); +var + sqflag : boolean; +begin + D := m*N; + sqflag := SquFoF_utils.IsSquare( D, S); + if m = 1 then + if sqflag then factor := S + else factor := 1 + else + factor := GCD( N,m); +end; + +// Tries to factorize N by applying Gower-Wagstaff alsorithm to m*N. +function GW_with_multiplier( N : UInt64; + m : word) : TAlgoResult; +var + D, S, P, P_prev, Q, L, B: Uint64; + r : UInt64; + i, j, k : integer; + f, g : UInt64; + sqrtD : double; + endCycle : boolean; +// Queue is not much used, so make it a simple array. +type TQueueItem = record + Left, Right : UInt64; +end; +const QUEUE_CAPACITY = 50; // as suggested by Gower & Wagstaff +var + queue : array [0..QUEUE_CAPACITY - 1] of TQueueItem; + queueCount : integer; +begin + result.Mult := m; + +// Filter out special cases (differs from Gower & Wagstaff). Note: +// (1) multiplier m is assumed to be squarefree; +// (2) if we proceed to the main algorithm, mN must not be square +// (otherwise Q = 0 and division by Q causes an error). + GWPrelim( N, m, {out} D, S, f); + if f > 1 then begin + result.Kind := rkPrelim; + result.Factor := f; + exit; + end; +// Not special, proceed to main algorithm + result.Kind := rkMain; + result.Mult := m; + result.Factor := 1; + queueCount := 0; // Clear queue + P := S; + Q := 1; + i := -1; // keep i same as in G & W; algo fails if i > B + sqrtD := SquFoF_utils.FSqrt( D); +// L := Trunc( 2.0*Sqrt( 2.0*sqrtD)); + L := Trunc( Sqrt( 2.0*sqrtD)); // as in Section 5.2 of G&W paper + B := 2*L; + + // Start forward cycle + endCycle := false; + while not endCycle do begin + // We update Q here, P at the end of the loop + Q := (D - P*P) div Q; + if (not Odd(i)) and SquFoF_utils.IsSquare( Q, r) then begin + // Q is square for even i. + // Possibly (?probably?) ends the forward cycle, + // but we need to inspect the queue first. + endCycle := true; + j := queueCount; // working backwards down the queue + if r = 1 then begin // the method may fail + while (j > 0) and (result.Kind <> rkFail) do begin + dec( j); + if queue[j].Left = 1 then result.Kind := rkFail; + end; + if result.Kind = rkFail then exit; + end + else begin // if r > 1 + while (j > 0) and (endCycle) do begin + dec( j); + if (queue[j].Left = r) + and ((P - queue[j].Right) mod r = 0) then begin + // Deleting up to the *last* item in the list that + // satisfies the condition, Should it be the *first* ? + // Delete queue items 0..j inclusive + inc(j); k := 0; + while j < queueCount do begin + queue[k] := queue[j]; + inc(j); inc(k); + end; + queueCount := k; + endCycle := false; + end; // if + end; + end; + end; // if i even and Q square + if not endCycle then begin + g := Q div SquFoF_utils.GCD( Q, 2*m); + if g <= L then begin + if queueCount < QUEUE_CAPACITY then begin + with queue[queueCount] do begin + Left := g; Right := P mod g; + end; + inc( queueCount); + end + else begin // queue overflow, fail + result.Kind := rkFail; + exit; + end; + end; + inc(i); + if i > B then begin + result.Kind := rkFail; + exit; + end; + end; + P := S - ((S + P) mod Q); + end; // while not endCycle + Assert( (D - P*P) mod r = 0); // optional check + P := S - ((S + P) mod r); + Q := r; + // Start backward cycle + endCycle := false; + while not endCycle do begin + P_prev := P; + Q := (D - P*P) div Q; + P := S - ((S + P) mod q); + endCycle := (P = P_prev); + end; // while not endCycle + // Finished + result.Factor := Q div SquFoF_utils.GCD( Q, 2*m); +end; + +const NR_RC_VALUES = 28; +RC_VALUES : array [0..NR_RC_VALUES - 1] of UInt64 = +( 2501, 12851, 13289, 75301, 120787, 967009, 997417, 7091569, 13290059, + 42854447, 223553581, 2027651281, 11111111111, 100895598169, 1002742628021, + 60012462237239, 287129523414791, 9007199254740931, 11111111111111111, + 314159265358979323, 384307168202281507, 419244183493398773, + 658812288346769681, 922337203685477563, 1000000000000000127, + 1152921505680588799, 1537228672809128917, 4611686018427387877); + +type TMultAndMaxN = record + Mult : word; // small multiplier + MaxN : UInt64; // maximum N for that multiplier (N*multiplier < 2^64) +end; +const NR_MULTIPLIERS = 16; +const MULTIPLIERS : array [0..NR_MULTIPLIERS - 1] of TMultAndMaxN = +((Mult: 1; MaxN: 18446744073709551615), + (Mult: 3; MaxN: 6148914691236517205), + (Mult: 5; MaxN: 3689348814741910323), + (Mult: 7; MaxN: 2635249153387078802), + (Mult: 11; MaxN: 1676976733973595601), + (Mult: 15; MaxN: 1229782938247303441), + (Mult: 21; MaxN: 878416384462359600), + (Mult: 33; MaxN: 558992244657865200), + (Mult: 35; MaxN: 527049830677415760), + (Mult: 55; MaxN: 335395346794719120), + (Mult: 77; MaxN: 239568104853370800), + (Mult: 105; MaxN: 175683276892471920), + (Mult: 165; MaxN: 111798448931573040), + (Mult: 231; MaxN: 79856034951123600), + (Mult: 385; MaxN: 47913620970674160), + (Mult: 1155; MaxN: 15971206990224720)); + +function GowerWagstaff( N : UInt64) : TAlgoResult; +var + j : integer; +begin + j := 0; + result.Kind := rkFail; + while (result.Kind = rkFail) + and (j < NR_MULTIPLIERS) + and (N <= MULTIPLIERS[j].MaxN) do + begin + result := GW_with_multiplier( N, MULTIPLIERS[j].Mult); + if result.Kind = rkFail then inc(j); + end; +end; + +// Main program +var + j : integer; + ar : TAlgoResult; + kindStr : string; + N, cofactor : UInt64; +begin + WriteLn( ' Number Mult M/P Factorization'); + for j := 0 to NR_RC_VALUES - 1 do begin + N := RC_VALUES[j]; + ar := GowerWagstaff( N); + if ar.Kind = rkFail then + WriteLn( N:20, ' No factor found') + else begin + case ar.Kind of + rkPrelim: kindStr := 'Prelim'; + rkMain : kindStr := 'Main '; + end; + cofactor := N div ar.Factor; + Assert( cofactor * ar.Factor = N); // check that all has gone well + WriteLn( N:20, ar.Mult:5, ' ', + kindStr:6, ' ', ar.Factor, ' * ', cofactor); + end; + end; +end. + +unit SquFoF_utils; + +{$mode objfpc}{$H+} + +interface + +// Returns floating-point square root of 64-bit unsigned integer. +function FSqrt( x : UInt64) : double; + +// Returns whether a 64-bit unsigned integer is a perfect square. +// In either case, returns floor(sqrt(x)) in the out parameter. +function IsSquare( x : UInt64; out iroot : UInt64) : boolean; + +// Returns g.c.d. of 64-bit and 16-bit unsigned integer. +function GCD( u : UInt64; x : word) : word; + +implementation + +function FSqrt( x : UInt64) : double; +// Both Free Pascal and Delphi 7 seem unreliable when casting +// a 64-bit integer to floating point. We use a workaround. +type TSplitUint64 = packed record case boolean of + true: (All : UInt64); + false: (Lo, Hi : longword); // longword is 32-bit unsigned +end; +var + temp : TSplitUInt64; +begin + temp.All := x; + result := Sqrt( 1.0*temp.Lo + 4294967296.0*temp.Hi); +end; + +// Based on Rosetta Code ISqrt, solution for Modula-2. +// Trunc of the f.p. square root won't do, bacause of rounding errors.. +function IsSquare( x : UInt64; out iroot : UInt64) : boolean; +var + Xdiv4, q, r, s, z : UInt64; +begin + Xdiv4 := X shr 2; + q := 1; + while q <= Xdiv4 do q := q shl 2; + z := x; + r := 0; + repeat + s := q + r; + r := r shr 1; + if z >= s then begin + z := z - s; + r := r + q; + end; + q := q shr 2; + until q = 0; + iroot := r; + result := (z = 0); +end; + +function GCD( u : UInt64; x : word) : word; +var + y, t : word; +begin + y := u mod x; + while y <> 0 do begin + t := x mod y; + x := y; + y := t; + end; + result := x; +end; +end. diff --git a/Task/Square-form-factorization/Sidef/square-form-factorization.sidef b/Task/Square-form-factorization/Sidef/square-form-factorization.sidef new file mode 100644 index 0000000000..b61e0afc18 --- /dev/null +++ b/Task/Square-form-factorization/Sidef/square-form-factorization.sidef @@ -0,0 +1,56 @@ +const multipliers = divisors(3*5*7*11).grep { _ > 1 } + +func sff(N) { + + N.is_prime && return 1 # n is prime + N.is_square && return N.isqrt # n is square + + multipliers.each {|k| + + var P0 = isqrt(k*N) # P[0]=floor(sqrt(N) + var Q0 = 1 # Q[0]=1 + var Q = (k*N - P0*P0) # Q[1]=N-P[0]^2 & Q[i] + var P1 = P0 # P[i-1] = P[0] + var Q1 = Q0 # Q[i-1] = Q[0] + var P = 0 # P[i] + var Qn = 0 # P[i+1] + var b = 0 # b[i] + + while (!Q.is_square) { # until Q[i] is a perfect square + b = idiv(isqrt(k*N) + P1, Q) # floor(floor(sqrt(N+P[i-1])/Q[i]) + P = (b*Q - P1) # P[i]=b*Q[i]-P[i-1] + Qn = (Q1 + b*(P1 - P)) # Q[i+1]=Q[i-1]+b(P[i-1]-P[i]) + (Q1, Q, P1) = (Q, Qn, P) + } + + b = idiv(isqrt(k*N) + P, Q) # b=floor((floor(sqrt(N)+P[i])/Q[0]) + P1 = (b*Q0 - P) # P[i-1]=b*Q[0]-P[i] + Q = (k*N - P1*P1)/Q0 # Q[1]=(N-P[0]^2)/Q[0] & Q[i] + Q1 = Q0 # Q[i-1] = Q[0] + + loop { + b = idiv(isqrt(k*N) + P1, Q) # b=floor(floor(sqrt(N)+P[i-1])/Q[i]) + P = (b*Q - P1) # P[i]=b*Q[i]-P[i-1] + Qn = (Q1 + b*(P1 - P)) # Q[i+1]=Q[i-1]+b(P[i-1]-P[i]) + break if (P == P1) # until P[i+1]=P[i] + (Q1, Q, P1) = (Q, Qn, P) + } + with (gcd(N,P)) {|g| + return g if g.is_ntf(N) + } + } + + return 0 +} + +[ 11111, 2501, 12851, 13289, 75301, 120787, 967009, 997417, 4558849, 7091569, 13290059, + 42854447, 223553581, 2027651281, 11111111111, 100895598169, 1002742628021, 60012462237239, + 287129523414791, 11111111111111111, 384307168202281507, 1000000000000000127, 9007199254740931, + 922337203685477563, 314159265358979323, 1152921505680588799, 658812288346769681, + 419244183493398773, 1537228672809128917 +].each {|n| + var v = sff(n) + if (v == 0) { say "The number #{n} is not factored." } + elsif (v == 1) { say "The number #{n} is a prime." } + else { say "#{n} = #{[n/v, v].sort.join(' * ')}" } +} diff --git a/Task/Statistics-Basic/Amazing-Hopper/statistics-basic.hopper b/Task/Statistics-Basic/Amazing-Hopper/statistics-basic.hopper new file mode 100644 index 0000000000..e11bc26126 --- /dev/null +++ b/Task/Statistics-Basic/Amazing-Hopper/statistics-basic.hopper @@ -0,0 +1,116 @@ +#include + +#define TOTAL_BINES 10 + +algoritmo + + /* verifica y obtiene argumento: tamaño de muestra*/ + tamaño muestra=0 + //obtener total argumentos + //es distinto a '2', entonces{ terminar } + //obtener parámetro numérico(2), mover a 'tamaño muestra' + /* algo menos natural, pero más claro para una mente formal: */ + obtener total argumentos + si ' es distinto a( 2 ) ' + terminar + sino + guardar ' parám numérico(2)' en 'tamaño muestra' + fin si + + /* establece la escala para desplegar barras */ + escala = 1.0 + si ' #(tamaño muestra > 50) ' + #( escala = 50.0 / tamaño muestra ) + fin si + + /* Generar muestra de tamaño "tamaño muestra" */ + dimensionar con ( tamaño muestra) matriz aleatoria entera ( 10, muestra ) + + decimales '3' + + /* Genera tabla de clases con 10 bines */ + tabla de clases=0 + bines(TOTAL_BINES, muestra), mover a 'tabla de clases' + + /* Imprime tabla de clases */ + ir a subrutina( desplegar tabla de clases) + + /* Calcula promedio según tabla de clases */ + promedio tabla=0, FREC=0, MC=0 + ir a subrutina ( calcular promedio de tabla de clases ) + + /* Calcula desviación estándar y varianza */ + desviación estándar=0, varianza=0 + ir a subrutina ( calcular desviación estándar y varianza ) + + /* Calcula promedio de la muestra completa e imprime medidas */ + ir a subrutina ( desplegar medidas y medias ) + + /* Construye barras */ + tamaño barras=0, barras=0 + ir a subrutina( construir barras para histograma ), mover a 'barras' + + /* arma histograma de salida */ + sMC=0 + ir a subrutina( construir y desplegar histograma ) + +terminar + +subrutinas + +desplegar tabla de clases: + token.separador '"\t"' + imprimir '#(utf8("Tamaño de la muestra = ")), tamaño muestra,NL,NL,\ + #(utf8("Números entre 0 y 10\n\n")),\ + " --RANGO--\tM.DE C.\tFREC.\tF.R\t F.A.\tF.R.A.\n",\ + "-----------------------------------------------------\n"' + imprimir 'justificar derecha(5,#(string(tabla de clases))), NL' + +retornar + +desplegar medidas y medias: + promedio muestra=0 + muestra, promediar, mover a 'promedio muestra' + + imprimir ' "Media de la muestra = ", promedio muestra, NL,\ + "Media de la tabla = ", promedio tabla, NL,\ + "Varianza = ", varianza, NL,\ + #(utf8("Desviación estandar = ")), desviación estándar,NL' +retornar + +construir barras para histograma: + #(tamaño barras = int(FREC * escala * 5)) + + dimensionar con (TOTAL_BINES) matriz rellena ("*", barras) + #(barras = replicate( barras, tamaño barras)) +retornar ' barras ' + +construir y desplegar histograma: + #(sMC = string(MC)) + unir columnas( sMC, sMC, justificar derecha(5,#(string(FREC))), barras ) + + /* Imprime histograma */ + token.separador '" "' + imprimir ( " M.C. FREC.\n-----------\n",\ + sMC,NL ) + +retornar + +calcular promedio de tabla de clases: + //[1:filasde(tabla de clases), 3] coger (tabla de clases), mover a 'MC' + //[1:filasde(tabla de clases), 4] coger (tabla de clases), mover a 'FREC' + /* un poco menos natural, pero más claro para una mente formal: */ + #basic{ + MC = tabla de clases[ 1:TOTAL_BINES, 3] + FREC = tabla de clases[ 1:TOTAL_BINES, 4] + } + borrar intervalo + multiplicar(MC,FREC), calcular sumatoria, dividir entre (tamaño muestra), + mover a 'promedio tabla' +retornar + +calcular desviación estándar y varianza: + restar( MC, promedio tabla), elevar al cuadrado, por (FREC), + calcular sumatoria, dividir entre(tamaño muestra), copiar en 'varianza' + calcular raíz, mover a 'desviación estándar' +retornar diff --git a/Task/Statistics-Basic/EasyLang/statistics-basic.easy b/Task/Statistics-Basic/EasyLang/statistics-basic.easy new file mode 100644 index 0000000000..d0ce26771f --- /dev/null +++ b/Task/Statistics-Basic/EasyLang/statistics-basic.easy @@ -0,0 +1,45 @@ +global list[] . +proc mklist n . . + list[] = [ ] + for i = 1 to n + list[] &= randomf + . +. +func mean . + for v in list[] + sum += v + . + return sum / len list[] +. +func stddev . + avg = mean + for v in list[] + squares += (avg - v) * (avg - v) + . + return sqrt (squares / len list[]) +. +proc histo . . + len hist[] 10 + for v in list[] + ind = floor (v * 10) + 1 + hist[ind] += 1 + . + for v in hist[] + h = floor (v / len list[] * 200 + 0.5) + s$ = substr "========================================" 1 h + print v & " " & s$ + . +. +numfmt 4 5 +proc stats size . . + mklist size + print "Size: " & size + print "Mean: " & mean + print "Stddev: " & stddev + histo + print "" +. +stats 100 +stats 1000 +stats 10000 +stats 100000 diff --git a/Task/Statistics-Basic/Sidef/statistics-basic.sidef b/Task/Statistics-Basic/Sidef/statistics-basic.sidef index 8fa7bf2a71..1a0316356a 100644 --- a/Task/Statistics-Basic/Sidef/statistics-basic.sidef +++ b/Task/Statistics-Basic/Sidef/statistics-basic.sidef @@ -1,26 +1,26 @@ func generate_statistics(n) { - var(sum=0, sum2=0); - var hist = 10.of(0); - + var(sum=0, sum2=0) + var hist = 10.of(0) +  n.times { - var r = 1.rand; - sum += r; - sum2 += r**2; - hist[10*r] += 1; + var r = 1.rand + sum += r + sum2 += r**2 + hist[10*r] += 1 } - - var mean = sum/n; - var stddev = Math.sqrt(sum2/n - mean**2); - - say "size: #{n}"; - say "mean: #{mean}"; - say "stddev: #{stddev}"; - - var max = hist.max; - hist.range.each {|i| - printf("%.1f:%s\n", 0.1*i, "=" * 70*hist[i]/max); +  + var mean = sum/n + var stddev = sqrt(sum2/n - mean**2) +  + say "size: #{n}" + say "mean: #{mean}" + say "stddev: #{stddev}" +  + var max = hist.max + for i in ^hist { + printf("%.1f:%s\n", 0.1*i, "=" * 70*hist[i]/max) } - print "\n"; + print "\n" } - +  [100, 1000, 10000].each {|n| generate_statistics(n) } diff --git a/Task/Statistics-Normal-distribution/EDSAC-order-code/statistics-normal-distribution.edsac b/Task/Statistics-Normal-distribution/EDSAC-order-code/statistics-normal-distribution.edsac new file mode 100644 index 0000000000..ad59c5e4a9 --- /dev/null +++ b/Task/Statistics-Normal-distribution/EDSAC-order-code/statistics-normal-distribution.edsac @@ -0,0 +1,219 @@ +[Normal distribution for Rosetta Code + EDSAC program, Initial Orders 2] + +[================================================================================== + Uses an accept-reject method, which requires only logarithms (no trig functions). + Let u, v be independent uniform variates in (0, 1). Let x = -ln(u), y = -ln(v). + Accept x iff (x - 1)^2 <= 2y. If x is accepted, negate it with probability 1/2. + Then x is normally distributed with mean 0 and standard deviation 1. + The algorithm is modified for this EDSAC version: + (1) Uses EDSAC library subroutine L1 to calculate (1/32)log_2() rather than ln() + (2) Since real numbers on EDSAC are restricted to the interval [-1, 1), scales so + that the standard deviation is 1/4, and reject values >= 4 s.d. from the mean. + In the histogram, counts are divided by 16, with rounding. + On the EDSAC PC simulator, takes 2.75 EDSAC hours to find 4096 normal variates. +[=================================================================================] + + [Arrange the storage] + T46K P70F [N parameter: library subroutine P1 to print +ve fraction] + T47K P200F [M parameter: main routine and dependent subroutines] + T49K P92F [L parameter: library subroutine L1 to calculate log_2] + T51K P130F [G parameter: generator for pseudo-random numbers] + T52K P168F [A parameter: library subroutine S2 for square root] + T54K P190F [C parameter: constants read in by library subroutine R9] + +[Library subroutine R9, reads non-negative integers at load time. + Fractions can be read by converting to integers (multiply by 2^34). + 15 locations, must be loaded at location 56.] + T56KGKT20FVDL8FA40DUDTFI40FA40FS39FG@S2FG23FA5@T5@E4@ + +[Library subroutine M3, prints header at load time. + M3 and header are then overwritten.] + PFGKIFAFRDLFUFOFE@A6FG@E8FEZPF + *MEAN#!K0BL!!*SD#!K0M25BL@&#..PZ + +[========================== C parameter ==========================] + [Tell R9 where to store integers read from tape] + E69K T#C ['T m D' in WWG, but this also works] + [List of integers; separated by F; end list with #TZ] +123456789F5F1549082005F11908177887F858993#TZ + [0] [seed for random number generator] + [2] [minimum argument for library subroutine L1] + [4] [1/(16*ln(2)) for accept-reject] + [6] [ln(2) for scaling standard deviation] + [8] [0.00005 for rounding in print routine] + +[========================== M parameter ==========================] + E25K TM GK + [0] P4096F [number of data, in address field; code below assumes 4096] + [1] PF [negative count of data] + [2] PF [worlspace, low word] + [3] PF [workspace, high word] + [4] PF PF [auxiliary for accept-reject algorithm] + [6] PF PF [sum of value/count, for mean] + [8] PF PF [sum of value^2/count, for variance] + [10] PFPFPFPFPFPFPFPFPFPFPFPFPFPFPFPF [16 bins for histogram] + [26] CF [11110...0 binary, to isolate bin index; also prints colon] + [27] A10@ [A order for bin{0}] + [28] AF [A order for bin{16}] + [29] P8F [8 in address field] + [30] MF [subtract from A order to make T order; also prints dot] + [31] WF [1/8] + [32] FF [-15/16, mid value of histogram bin{0}] + [33] PF [mid value of current bin] +[Teleprinter] + [34] #F [set figures mode] + [35] PF + [36] AF [minus (in figures mode)] + [37] !F [space] + [38] @F [carriage return] + [39] &F [line feed] + [Enter with acc = 0] + [40] + S@ T1@ [store negated data count in address field] + A#C T4D [copy seed to 4D for PRNG] + [44] A44@ GG [initialize PRNG] + T6#@ T8#@ [clear sum and sum of squares] + O34@ [set teleprinter to figures] + [Start of loop to generate normal variates] + [49] TF [clear acc] + [Calculate and store logarithms of uniform variates] + [50] A50@ G176@ SD T2#@ [corresponds to x = -ln(u)] + [54] A54@ G176@ SD T4#@ [corresponds to y = -ln(v)] + [Accept or reject] + A4#C RD [acc := (1/32*ln(2))] + S2#@ [subtract x] + TD HD ND [acc := negated square] + H4#C V4#@ [add 2*(auxiliary value)] + G49@ [reject if result < 0] + [First log is accepted; multiply by 8*ln(2) so that s.d. becomes 0.25] + [Reject values outside (-1,1) (that is >= 4 s.d. from mean, unlikely)] + T6F [clear acc] + H6#C V2#@ [times ln(2)] + S31@ E49@ [if product >= 1/8 (unlikely) reject and try again] + A31@ [restore acc after test] + L2F [shift 3 left to complete scaling] + YF T2#@ [round and store back] + [Finally change sign with probability 1/2] + T6F T4D A2F T4F [pass range = 2 to PRNG] + [80] A80@ G1G [call PRNG, 0 or 1 returned in 0D] + SD E87@ [don't change sign if 0D = 0] + T6F S2#@ T2#@ [change sign, so value < 0] + [87] [Here with acc = 0.] + [To print the values, replace the following jump with a no-op (X F)] + E94@ + A2#@ TD [pass abs(value) to print routine] + [90] A90@ G191@ + O38@ O39@ [print CR, LF] + [94] A2#@ R1024F YF [load value, divide by count, round] + A6#@ T6#@ [update sum] + H2#@ V2#@ R1024F YF + A8#@ T8#@ [update sum of squares] + [Inc count in appropriate bin] + H26@ [mult reg := mask to isolate bin index] + C3@ [acc := top 4 bits of value] + R1024F [12 right, get bin -8..7 in address field] + A29@ [add 8 to address, bin index now 0..15] + A27@ [make A order for bin] + U113@ [plant in code] + S30@ [convert to T order] + T115@ [plant in code] + [113] AF [(planted) acc := count in bin] + A2F [inc by 1 in address field] + [115] TF [(planted) store updated bin count] + A1@ A2F U1@ [inc negative count of variates] + G49@ [loop till got required number] + [Print mean and standard deviation] + A6#@ TD [pass mean to print subroutine] + [122] A122@ G191@ + O37@ O37@ O37@ [print spaces] + A8#@ H6#@ + N6#@ T4D [calc variance, pass to square root s/r] + [131] A131@ GA [4D := standard deviation] + A4D U8#@ TD [pass to print subroutine] + [136] A136@ G191@ [print s.d.] + O38@ O39@ O38@ O39@ [print CR, LF twice] + [Print histogram] + A29@ LD A27@ [make A order for exclusive end bin] + T28@ [store as test for end] + A32@ T33@ [initialize mid-value of bin] + A27@ [A order for bin{0}] + [149] T158@ [loop: plant A order for current bin] + TD A33@ U1F [0D = mid-value of bin, extended to 35 bits] + A31@ T33@ [update mid-value for next time] + [155] A155@ G191@ [print mid-value] + O26@ [print colon] + [158] AF [(planted) load number of hits in address field] + A29@ [add 8 for rounding] + R4F [divide by 16] + E163@ [jump to middle of loop] + [162] O175@ [print plus sign] + [163] S2F E162@ [loop till printed enough plus signs] + O38@ O39@ [print CR, LF] + TF [clear acc] + A158@ A2F [make A order for next bin] + S28@ [compare with end order] + E174@ [exit if no more bins] + A28@ [restore acc after test] + G149@ [loop back (A order is negative)] + [174] O34@ [dummy character to flush print buffer] + [175] ZF [halt program; also serves as plus sign] + +[Subroutine of main routine. Sets 0D := (1/32)log_2 of uniform variate] + [176] A3F T188@ [plant return link as usual] + [178] T4D [pass range = 0 to PRNG] + [179] A179@ G1G [0D := uniform variate] + AD S2#C [test for too small (unlikely)] + G189@ [jump to try again if so] + A2#C T6D [OK, pass uniform variate to logarithm subroutine] + [186] A186@ GL [0D := logarithm] + [188] ZF [(planted) return to caller] + [189] TF E178@ [if failed, clear acc and try again] + +[Subroutine of main routine; prints signed fraction in 0D to 4 decimals.] +[Wrapper for library subroutine P1; adds sign, rounding, layout.] + [191] A3F T207@ [plant return link as usual] + AD G197@ [acc := value, jump if < 0] + O37@ E200@ [print space, jump to common code] + [197] O36@ [value < 0, print minus] + TD SD [acc := abs(valus)] + [200] A8#C TD [add 0.00005 for rounding, pass to P1 in 0D] + O35@ O30@ [print '0.'] + [204] A204@ GN P4F [call P1 to print 5 decimals] + [207] ZF [(planted) jump back to caller] + +[========================== G parameter ==========================] +[Linear congruential generator, same algorithm as Delphi 7 LCG.] +[38 storage locations.] +[Initialize: Call 0G with 35-bit seed in 4D.] +[Input: Call 1G with 35-bit range in 4D.] +[Output: if range > 0, 0D := random 35-bit integer in 0..(range - 1).] + [if range = 0, 0D := random 35-bit real in [0, 1)] + E25K TG + GKG10@G15@T2#ZPFT2ZI514DP257FT4#ZPFT4ZPDPFT6#ZPFT6ZPFRFA6#@S4#@ + T6#@E25FE8ZPFT8ZPFPFA3FT14@A4DT8#@ZFA3FT37@H2#@V8#@L512FL512FL1024F + A4#@T8#@H6#@C8#@T8#@S4DG32@TDA8#@E35@H4DTDV8#@L1FTDZF + +[==================== Library subroutines ============================] + E25K TL +[L1: Logarithm to base 2.] +[0D := (1/32)*log_2(6D), provided 6D > 2^(-32)] +[38 storage locations; working positions 4D and 8F.] + GKA3FT33@E11@IFP1024FP512FA3@LDT6DADS4@TDS3@A6DG6@T8FS5@T4D + H6DV6DS3@E34@A3@LDYFT6DA4DADTDA4DRDYFG17@EFA3@YFT6DE29@ + + E25K TN +[P1: Print non-negative fraction in 0D, without layout or rounding] +[21 storage locations.] + GKA18@U17@S20@T5@H19@PFT5@VDUFOFFFSFL4FTDA5@A2FG6@EFU3FJFM1F + + E25K TA +[S2: square root.] +[Closed: 22 storage locations, working position 0D.] +[Forms sqrt( C(4D)) where C(4D) > 0, and places result in 4D.] + GKA3FT20@A4DS9@A6@UDHDR1FS21@TDN4DRDA4DYFT4DVDTDVDYFG5@EFSF + +[======================= M parameter again ======================] + E25K TM GK + E40Z [define entry point] + PF [acc = 0 on entry] diff --git a/Task/Statistics-Normal-distribution/PARI-GP/statistics-normal-distribution-1.parigp b/Task/Statistics-Normal-distribution/PARI-GP/statistics-normal-distribution-1.parigp index 4e25c621c5..24e34ee744 100644 --- a/Task/Statistics-Normal-distribution/PARI-GP/statistics-normal-distribution-1.parigp +++ b/Task/Statistics-Normal-distribution/PARI-GP/statistics-normal-distribution-1.parigp @@ -1,6 +1,6 @@ rnormal()={ - my(u1=random(1.),u2=random(1.); - sqrt(-2*log(u1))*cos(2*Pi*u1) + my(u1=random(1.),u2=random(1.)); + sqrt(-2*log(u1))*cos(2*Pi*u2) \\ Could easily be extended with a second normal at very little cost. }; mean(v)={ diff --git a/Task/String-append/BQN/string-append.bqn b/Task/String-append/BQN/string-append.bqn new file mode 100644 index 0000000000..1a2f911ba3 --- /dev/null +++ b/Task/String-append/BQN/string-append.bqn @@ -0,0 +1,5 @@ +str ← "oneTwo" + +•Out str ∾↩ "Three" + +str diff --git a/Task/String-append/Chipmunk-Basic/string-append.basic b/Task/String-append/Chipmunk-Basic/string-append.basic new file mode 100644 index 0000000000..3f75160dd7 --- /dev/null +++ b/Task/String-append/Chipmunk-Basic/string-append.basic @@ -0,0 +1,3 @@ +10 a$ = "Hello" +20 a$ = a$ + " World!" +30 print a$ diff --git a/Task/String-append/Dart/string-append.dart b/Task/String-append/Dart/string-append.dart new file mode 100644 index 0000000000..9144f68ca2 --- /dev/null +++ b/Task/String-append/Dart/string-append.dart @@ -0,0 +1,5 @@ +void main() { + String str = "Hello"; + str = str + " World!"; + print(str); +} diff --git a/Task/String-append/GW-BASIC/string-append.basic b/Task/String-append/GW-BASIC/string-append.basic new file mode 100644 index 0000000000..7a3e88f17c --- /dev/null +++ b/Task/String-append/GW-BASIC/string-append.basic @@ -0,0 +1,3 @@ +10 LET a$ = "Hello" +20 LET a$ = a$ + " World!" +30 PRINT a$ diff --git a/Task/String-append/MiniScript/string-append.mini b/Task/String-append/MiniScript/string-append.mini new file mode 100644 index 0000000000..e9550736c8 --- /dev/null +++ b/Task/String-append/MiniScript/string-append.mini @@ -0,0 +1,4 @@ +s1 = "Hello" +s1 = s1 + ", " +s1 += "World!" +print s1 diff --git a/Task/String-append/XBasic/string-append.basic b/Task/String-append/XBasic/string-append.basic new file mode 100644 index 0000000000..e7ebfb1140 --- /dev/null +++ b/Task/String-append/XBasic/string-append.basic @@ -0,0 +1,11 @@ +PROGRAM "String append" +VERSION "0.0000" + +DECLARE FUNCTION Entry () + +FUNCTION Entry () + a$ = "Hello" + a$ = a$ + " World!" + PRINT a$ +END FUNCTION +END PROGRAM diff --git a/Task/String-case/Chipmunk-Basic/string-case.basic b/Task/String-case/Chipmunk-Basic/string-case.basic new file mode 100644 index 0000000000..15b0a3f4be --- /dev/null +++ b/Task/String-case/Chipmunk-Basic/string-case.basic @@ -0,0 +1,4 @@ +10 s$ = "alphaBETA" +20 print "Original string: ";s$ +30 print "To Lower case: ";lcase$(s$) +40 print "To Upper case: ";ucase$(s$) diff --git a/Task/String-case/EMal/string-case.emal b/Task/String-case/EMal/string-case.emal new file mode 100644 index 0000000000..043a329745 --- /dev/null +++ b/Task/String-case/EMal/string-case.emal @@ -0,0 +1,7 @@ +var samples = text["alphaBETA", "ação", "o'hare O'HARE o’hare don't", "Stroßbùrri", "ĥåçýджк", "DŽLjnj"] +for each var sample in samples + writeLine(" original : " + sample) + writeLine(" lower : " + sample.lower()) + writeLine(" upper : " + sample.upper()) + writeLine() +end diff --git a/Task/String-case/Elena/string-case.elena b/Task/String-case/Elena/string-case.elena index a7fd988927..cdeb06961f 100644 --- a/Task/String-case/Elena/string-case.elena +++ b/Task/String-case/Elena/string-case.elena @@ -4,11 +4,6 @@ public program() { string s1 := "alphaBETA"; - // Alternative 1 - console.writeLine(s1.lowerCase()); - console.writeLine(s1.upperCase()); - - // Alternative 2 console.writeLine(s1.toLower(currentLocale)); console.writeLine(s1.toUpper(currentLocale)); console.readChar() diff --git a/Task/String-comparison/Wren/string-comparison.wren b/Task/String-comparison/Wren/string-comparison.wren index 0ede2bd90b..9b718e85a7 100644 --- a/Task/String-comparison/Wren/string-comparison.wren +++ b/Task/String-comparison/Wren/string-comparison.wren @@ -1,4 +1,4 @@ -import "/str" for Str +import "./str" for Str var compareStrings = Fn.new { |a, b, sens| System.write("Comparing '%(a)' and '%(b)', ") diff --git a/Task/String-interpolation-included-/ALGOL-68/string-interpolation-included-.alg b/Task/String-interpolation-included-/ALGOL-68/string-interpolation-included--1.alg similarity index 100% rename from Task/String-interpolation-included-/ALGOL-68/string-interpolation-included-.alg rename to Task/String-interpolation-included-/ALGOL-68/string-interpolation-included--1.alg diff --git a/Task/String-interpolation-included-/ALGOL-68/string-interpolation-included--2.alg b/Task/String-interpolation-included-/ALGOL-68/string-interpolation-included--2.alg new file mode 100644 index 0000000000..e24eff63a5 --- /dev/null +++ b/Task/String-interpolation-included-/ALGOL-68/string-interpolation-included--2.alg @@ -0,0 +1,21 @@ +BEGIN + FILE str file; + STRING mhl; + associate( str file, mhl ); + + STRING extra := "little"; + TO 2 DO + putf( str file, ( $"Mary had a "g" lamb."$, extra ) ); + print( ( "1 result is: {{", mhl, "}}", newline ) ); + mhl := ""; + "supposedlly-" +=: extra + OD; + + FORMAT extraf := $"little"$; + TO 2 DO + putf( str file, ( $"Mary had a "f(extraf)" lamb."$ ) ); + print( ( "2 result is: {{", mhl, "}}", newline ) ); + mhl := ""; + extraf := $"medium-sized"$ + OD +END diff --git a/Task/String-interpolation-included-/Applesoft-BASIC/string-interpolation-included-.basic b/Task/String-interpolation-included-/Applesoft-BASIC/string-interpolation-included-.basic new file mode 100644 index 0000000000..49b63be477 --- /dev/null +++ b/Task/String-interpolation-included-/Applesoft-BASIC/string-interpolation-included-.basic @@ -0,0 +1,2 @@ +10 x$ = "big" +20 print "Mary had a "; x$; " lamb" diff --git a/Task/String-interpolation-included-/Chipmunk-Basic/string-interpolation-included-.basic b/Task/String-interpolation-included-/Chipmunk-Basic/string-interpolation-included-.basic new file mode 100644 index 0000000000..49b63be477 --- /dev/null +++ b/Task/String-interpolation-included-/Chipmunk-Basic/string-interpolation-included-.basic @@ -0,0 +1,2 @@ +10 x$ = "big" +20 print "Mary had a "; x$; " lamb" diff --git a/Task/String-interpolation-included-/GW-BASIC/string-interpolation-included-.basic b/Task/String-interpolation-included-/GW-BASIC/string-interpolation-included-.basic new file mode 100644 index 0000000000..a38728e0e0 --- /dev/null +++ b/Task/String-interpolation-included-/GW-BASIC/string-interpolation-included-.basic @@ -0,0 +1,5 @@ +10 X$ = "big" +20 PRINT "Mary had a "; X$; " lamb" +30 X$ = "little" +40 PRINT USING "Mary also had a & lamb"; X$ +50 END diff --git a/Task/String-interpolation-included-/Minimal-BASIC/string-interpolation-included-.basic b/Task/String-interpolation-included-/Minimal-BASIC/string-interpolation-included-.basic new file mode 100644 index 0000000000..5748925fe9 --- /dev/null +++ b/Task/String-interpolation-included-/Minimal-BASIC/string-interpolation-included-.basic @@ -0,0 +1,3 @@ +10 LET X$ = "BIG" +20 PRINT "MARY HAD A "; X$; " LAMB" +30 END diff --git a/Task/String-interpolation-included-/Quite-BASIC/string-interpolation-included-.basic b/Task/String-interpolation-included-/Quite-BASIC/string-interpolation-included-.basic new file mode 100644 index 0000000000..49fa7b219e --- /dev/null +++ b/Task/String-interpolation-included-/Quite-BASIC/string-interpolation-included-.basic @@ -0,0 +1,2 @@ +10 LET X$ = "BIG" +20 PRINT "Mary had a "; x$; " lamb" diff --git a/Task/String-interpolation-included-/XBasic/string-interpolation-included-.basic b/Task/String-interpolation-included-/XBasic/string-interpolation-included-.basic new file mode 100644 index 0000000000..20a2167fab --- /dev/null +++ b/Task/String-interpolation-included-/XBasic/string-interpolation-included-.basic @@ -0,0 +1,9 @@ +PROGRAM "String append" +VERSION "0.0000" + +DECLARE FUNCTION Entry () +FUNCTION Entry () + X$ = "big" + PRINT "Mary had a "; X$; " lamb" +END FUNCTION +END PROGRAN diff --git a/Task/Subleq/BASIC256/subleq.basic b/Task/Subleq/BASIC256/subleq.basic new file mode 100644 index 0000000000..c59883b9ac --- /dev/null +++ b/Task/Subleq/BASIC256/subleq.basic @@ -0,0 +1,30 @@ +dim memoria(255) +contador = 0 + +input "SUBLEQ> ", codigo + +while instr(codigo, " ") + memoria[contador] = int(left(codigo, instr(codigo, " ") - 1)) + codigo = mid(codigo, instr(codigo, " ") + 1, length(codigo)) + contador += 1 +end while + +memoria[contador] = int(codigo) +contador = 0 +do + a = memoria[contador] + b = memoria[contador + 1] + c = memoria[contador + 2] + contador += 3 + if a = -1 then + input "SUBLEQ> ", caracter + memoria[b] = asc(caracter) + else + if b = -1 then + print chr(memoria[a]); + else + memoria[b] -= memoria[a] + if memoria[b] <= 0 then contador = c + end if + end if +until contador < 0 diff --git a/Task/Subleq/EasyLang/subleq.easy b/Task/Subleq/EasyLang/subleq.easy new file mode 100644 index 0000000000..d1c65d1470 --- /dev/null +++ b/Task/Subleq/EasyLang/subleq.easy @@ -0,0 +1,43 @@ +global inpos inp$ . +func inp . + if inpos = 0 + inp$ = input + if error = 1 + return 255 + . + inpos = 1 + . + if inpos <= len inp$ + h = strcode substr inp$ inpos 1 + inpos += 1 + return h + . + inpos = 0 + return 10 +. +proc subleq . mem[] . + repeat + a = mem[p] + b = mem[p + 1] + c = mem[p + 2] + p += 3 + if a = -1 + mem[b] = inp + elif b = -1 + write strchar mem[a] + else + mem[b] -= mem[a] + if mem[b] <= 0 + p = c + . + . + until p < 0 + . +. +prog[] = [ 15 17 -1 17 -1 -1 16 1 -1 16 3 -1 15 15 0 0 -1 72 101 108 108 111 44 32 119 111 114 108 100 33 10 0 ] +arrbase prog[] 0 +# +subleq prog[] +# +input_data +dummy data diff --git a/Task/Subleq/Gambas/subleq.gambas b/Task/Subleq/Gambas/subleq.gambas new file mode 100644 index 0000000000..b8b1abf899 --- /dev/null +++ b/Task/Subleq/Gambas/subleq.gambas @@ -0,0 +1,38 @@ +Public memoria[255] As Integer + +Public Sub Main() + + Dim contador As Integer = 0 + Dim codigo As String, caracter As String + + Print "SUBLEQ> "; + Input codigo + + While InStr(codigo, " ") + memoria[contador] = Val(Left(codigo, InStr(codigo, " ") - 1)) + codigo = Mid(codigo, InStr(codigo, " ") + 1) + contador += 1 + Wend + + memoria[contador] = Val(codigo) + contador = 0 + Do + Dim a As Integer = memoria[contador] + Dim b As Integer = memoria[contador + 1] + Dim c As Integer = memoria[contador + 2] + contador += 3 + If a = -1 Then + Print "SUBLEQ> "; + Input caracter + memoria[b] = Asc(caracter) + Else + If b = -1 Then + Print Chr(memoria[a]); + Else + memoria[b] -= memoria[a] + If memoria[b] <= 0 Then contador = c + End If + End If + Loop Until contador < 0 + +End diff --git a/Task/Subleq/SETL/subleq.setl b/Task/Subleq/SETL/subleq.setl new file mode 100644 index 0000000000..82a1927de5 --- /dev/null +++ b/Task/Subleq/SETL/subleq.setl @@ -0,0 +1,38 @@ +program subleq; + if command_line(1) = om then + print("error: no file given"); + stop; + end if; + + mem := readprog(command_line(1)); + + loop init ip := 0; while ip >= 0 do + a := mem(ip) ? 0; + b := mem(ip+1) ? 0; + c := mem(ip+2) ? 0; + ip +:= 3; + if a = -1 then + mem(b) := ichar (getchar ? "\0"); + elseif b = -1 then + putchar(char ((mem(a) ? 0) mod 256)); + elseif (mem(b) +:= -(mem(a) ? 0)) <= 0 then + ip := c; + end if; + end loop; + + proc readprog(fname); + if (f := open(fname, "r")) = om then + print("error: cannot open file"); + stop; + end if; + + mem := {}; + mp := 0; + loop doing getb(f, n); while n/=om do + mem(mp) := n; + mp +:= 1; + end loop; + close(f); + return mem; + end proc; +end program; diff --git a/Task/Subleq/Yabasic/subleq.basic b/Task/Subleq/Yabasic/subleq.basic new file mode 100644 index 0000000000..9e025f96ad --- /dev/null +++ b/Task/Subleq/Yabasic/subleq.basic @@ -0,0 +1,29 @@ +dim memoria(255) +contador = 0 +input "SUBLEQ> " codigo$ +while instr(codigo$, " ") + memoria(contador) = val(left$(codigo$, instr(codigo$, " ") - 1)) + codigo$ = mid$(codigo$,instr(codigo$," ")+1,len(codigo$)) + contador = contador + 1 +wend + +memoria(contador) = val(codigo$) +contador = 0 +repeat + a = memoria(contador) + b = memoria(contador+ 1) + c = memoria(contador+ 2) + contador = contador + 3 + if a = -1 then + input "SUBLEQ> " caracter$ + memoria(b) = asc(caracter$) + else + if b = -1 then + print chr$(memoria(a)); + else + memoria(b) = memoria(b) - memoria(a) + if memoria(b) <= 0 contador = c + fi + fi +until contador < 0 +end diff --git a/Task/Subtractive-generator/EasyLang/subtractive-generator.easy b/Task/Subtractive-generator/EasyLang/subtractive-generator.easy new file mode 100644 index 0000000000..105948c2ab --- /dev/null +++ b/Task/Subtractive-generator/EasyLang/subtractive-generator.easy @@ -0,0 +1,36 @@ +MOD = 1000000000 +len state[] 55 +arrbase state[] 0 +global si sj . +funcdecl subrand . +proc subrand_seed p1 . . + p2 = 1 + state[0] = p1 mod MOD + j = 21 + for i = 1 to 54 + state[j] = p2 + p2 = (p1 - p2) mod MOD + p1 = state[j] + j = (j + 21) mod 55 + . + si = 0 + sj = 24 + for i = 0 to 164 + h = subrand + h = h + . +. +func subrand . + if si = sj + subrand_seed 0 + . + si = (si - 1) mod 55 + sj = (sj - 1) mod 55 + x = (state[si] - state[sj]) mod MOD + state[si] = x + return x +. +subrand_seed 292929 +for i to 10 + print subrand +. diff --git a/Task/Subtractive-generator/Quackery/subtractive-generator.quackery b/Task/Subtractive-generator/Quackery/subtractive-generator.quackery new file mode 100644 index 0000000000..de1f44723b --- /dev/null +++ b/Task/Subtractive-generator/Quackery/subtractive-generator.quackery @@ -0,0 +1,23 @@ + [ stack ] is randoms ( --> s ) + + ' [ 292929 1 ] + 53 times + [ dup -2 peek + over -1 peek + - 1000000000 mod + join ] + dup witheach + [ swap + i^ 34 * 1 - 55 mod + poke ] + randoms put + + [ randoms take + behead over 30 peek + - 1000000000 mod + tuck join + randoms put ] is rand ( --> n ) + + 165 times [ rand drop ] + + 10 times [ rand echo cr ] diff --git a/Task/Successive-prime-differences/Amazing-Hopper/successive-prime-differences.hopper b/Task/Successive-prime-differences/Amazing-Hopper/successive-prime-differences.hopper new file mode 100644 index 0000000000..28b6c7ebcd --- /dev/null +++ b/Task/Successive-prime-differences/Amazing-Hopper/successive-prime-differences.hopper @@ -0,0 +1,111 @@ +#proto buscarprimos(_X_,_Y_) + +#include + +algoritmo + + pila de trabajo 50 + decimales '0' + + números( dif 1, dif 2, dif 22, dif 24, dif 42, dif 642) + cadenas( inicio1, inicio2, inicio22, inicio24, inicio42, inicio642,\ + final1, final2, final22, final24, final42, final642 ) + + sw1=1, sw2=1, sw22=1, sw24=1, sw42=1, sw642=1 + + i=2 + iterar + i, es primo?, entonces { + i2 = i, i4=i, i6=i + + ++i2; i2, es primo?, entonces{ + ++dif 1 + sw1, entonces{ + #( string(i)),#(string(i2)), unir en 'inicio1' + sw1=0 + } + #( string(i)),#(string(i2)), unir en 'final1' + } + ++i2; i2, es primo?, entonces{ + ++dif 2 + sw2, entonces{ + #( string(i)),#(string(i2)), unir en 'inicio2' + sw2=0 + } + #( string(i)),#(string(i2)), unir en 'final2' + + i2+=2; i2, es primo?, entonces{ + ++dif 22 + sw22, entonces{ + #( string(i)),#(string(i2-2)),#(string(i2)) + unir en 'inicio22' + sw22=0 + } + #( string(i)),#(string(i2-2)),#(string(i2)) + unir en 'final22' + } + i2+=2; i2, es primo?, entonces{ + ++dif 24 + sw24, entonces{ + #( string(i)),#(string(i2-4)),#(string(i2)) + unir en 'inicio24' + sw24=0 + } + #( string(i)),#(string(i2-4)),#(string(i2)) + unir en 'final24' + } + } + i4+=4, i4, es primo?, entonces{ + i4+=2, i4, es primo?, entonces{ + ++dif 42 + sw42, entonces{ + #( string(i)),#(string(i4-2)),#(string(i4)) + unir en 'inicio42' + sw42=0 + } + #( string(i)),#(string(i4-2)),#(string(i4)) + unir en 'final42' + } + } + /* aquí, debido al espaciamiento, pueden haber primos entre 'i' + e 'i+12', y debo chequear eso */ + i6+=6, i6, es primo?, entonces{ + i6+=4, i6, es primo?, entonces{ + i6+=2, i6, es primo?, entonces{ + si '#(buscar primos( (i+1),(i6-6) ) && buscar primos( (i6-5),i6-2))' + sw642, entonces{ + #( string(i)),#(string(i6-6)),#(string(i6-2)),#(string(i6)) + unir en 'inicio642' + sw642=0 + } + ++dif 642 + fin si + + #( string(i)),#(string(i6-6)),#(string(i6-2)),#(string(i6)) + unir en 'final642' + } + } + } + } + ++i + hasta que '#(i == 1000000)' + imprimir( "Diff Sequence\tCount\t\tFirst\tLast\n") + imprimir( "[ 1 ] \t", dif 1, "\t", #(lpad(" ",13,inicio1))," ",final1,\ + "\n[ 2 ] \t", dif 2, "\t", #(lpad(" ",13,inicio2))," ",final2,\ + "\n[ 2-2 ] \t", dif22, "\t", #(lpad(" ",13,inicio22))," ",final22,\ + "\n[ 2-4 ] \t", dif 24,"\t", #(lpad(" ",13,inicio24))," ",final24,\ + "\n[ 4-2 ] \t", dif 42,"\t", #(lpad(" ",13,inicio42))," ",final42,\ + "\n[ 6-4-2 ]\t", dif 642,"\t", #(lpad(" ",13,inicio642))," ",final642,"\n") + +terminar + +subrutinas + +buscar primos(x,y) + sw=1 + iterar para( i=x, #(sw && i n + d[i] + return 0 + . + n += d[i] + . + return 1 +. +proc print_set n d[] . . + write "( " & n & " " + for i = 1 to len d[] + write n + d[i] & " " + n += d[i] + . + print ")" +. +proc show max d[] . . + write "Differences of " + for d in d[] + write d & " " + . + print "" + for n = 2 to max - d[len d[]] + if spd n d[] = 1 + c += 1 + if c = 1 + print_set n d[] + . + last = n + . + . + print_set last d[] + print "Number of occurrences: " & c + print "" +. +show 1000000 [ 2 ] +show 1000000 [ 1 ] +show 1000000 [ 2 2 ] +show 1000000 [ 2 4 ] +show 1000000 [ 4 2 ] +show 1000000 [ 6 4 2 ] diff --git a/Task/Sum-and-product-of-an-array/Euler/sum-and-product-of-an-array.euler b/Task/Sum-and-product-of-an-array/Euler/sum-and-product-of-an-array.euler deleted file mode 100644 index 648a3180cf..0000000000 --- a/Task/Sum-and-product-of-an-array/Euler/sum-and-product-of-an-array.euler +++ /dev/null @@ -1,28 +0,0 @@ -begin - new sumAndProduct; - new sumField; new productField; - sumAndProduct - <- ` formal array; - begin - new sum; new product; new i; new v; label arrayLoop; - v <- array; - sum <- 0; - product <- 1; - i <- 0; -arrayLoop: if [ i <- i + 1 ] <= length array then begin - sum <- sum + v[ i ]; - product <- product * v[ i ]; - goto arrayLoop - end else 0; - sumField <- 1; - productField <- 2; - ( sum, product ) - end - '; - begin - new sp; - sp <- sumAndProduct( ( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ) ); - out sp[ sumField ]; - out sp[ productField ] - end -end $ diff --git a/Task/Sum-digits-of-an-integer/Chipmunk-Basic/sum-digits-of-an-integer.basic b/Task/Sum-digits-of-an-integer/Chipmunk-Basic/sum-digits-of-an-integer-1.basic similarity index 100% rename from Task/Sum-digits-of-an-integer/Chipmunk-Basic/sum-digits-of-an-integer.basic rename to Task/Sum-digits-of-an-integer/Chipmunk-Basic/sum-digits-of-an-integer-1.basic diff --git a/Task/Sum-digits-of-an-integer/Chipmunk-Basic/sum-digits-of-an-integer-2.basic b/Task/Sum-digits-of-an-integer/Chipmunk-Basic/sum-digits-of-an-integer-2.basic new file mode 100644 index 0000000000..ed8b1ecfad --- /dev/null +++ b/Task/Sum-digits-of-an-integer/Chipmunk-Basic/sum-digits-of-an-integer-2.basic @@ -0,0 +1,12 @@ +(define dsum (lambda (x base) + (let ((number (if (string? x) (string->number x base) x))) + (if (= (string-length (number->string number)) 1) number + (+ (mod number base) (dsum (div number base) base)))))) +> (dsum 123 10) +6 +> (dsum "fe" 16) +29 +> (dsum "f0e" 16) +29 +> (dsum 1234 10) +10 diff --git a/Task/Sum-digits-of-an-integer/EDSAC-order-code/sum-digits-of-an-integer.edsac b/Task/Sum-digits-of-an-integer/EDSAC-order-code/sum-digits-of-an-integer.edsac new file mode 100644 index 0000000000..8f685ad360 --- /dev/null +++ b/Task/Sum-digits-of-an-integer/EDSAC-order-code/sum-digits-of-an-integer.edsac @@ -0,0 +1,114 @@ +[Sum of digits of a number in a given base - Rosetta Code + EDSAC program (Initial Orders 2)] + + [Arrange the storage] + T45K P56F [H parameter: library subroutine R4 to read integer] + T46K P80F [N parameter: subroutine to print 35-bit positive integer] + T47K P180F [M parameter: main routine] + T48K P120F [& (Delta) parameter: subroutine for integer division] + T51K P157F [G parameter: subroutine to find sum of digits] + +[Library subroutine M3, runs at load time and is then overwritten. + Prints header; here, last character sets teleprinter to figures.] + PF GK IF AF RD LF UF OF E@ A6F G@ E8F EZ PF + *!!!!NUMBER!!!!!!!BASE!!!SUM!OF!DIGITS@&#..PZ + +[============== G parameter: Subroutine find sum of digits ============== + Input: 4D = non-negative number (not preserved) + 6D = base (not preserved) + Output: 0D = sum of digits + Workspace: 8D (in called subroutine), 10D, 12D] + E25K TG GK + A3F T22@ [plant return link as usual] + A6D T10D [store base in 10D] + T12D [sum of digits in 12D, initialize to 0] + A4D [acc := number] + E17@ [jump into middle of loop] + [Start of loop. Next dividend is already in 4D.] + [7] TF [clear acc] + A10D T6D [pass base as divisor] + [10] A10@ G& [call division subroutine] + A4D A12D T12D [remainder is next digit; add to result] + A6D U4D [quotient becomes next dividend] + [17] S10D [is dividend >= base?] + E7@ [if so, loop back to do division] + [Here if dividend < base. Means that dividend = top digit.] + A10D [restore digit after test] + A12D [add to sum of digits] + TD [return sum of digits in 0D] + [22] ZF [(planted) jump back to caller] + +[====================== M parameter: Main routine ======================] + E25K TM GK +[Load at even addess; put 35-bit values first] + [0] PF PF [number] + [2] PF PF [base] + [4] PF [negative data count] + [5] !F [space] + [6] @F [carriage return] + [7] &F [line feed] + [8] K4096F [null character] +[Enter with acc = 0] + [9] A9@ GH [call subroutine R4, sets 0D := count of (n,k) pairs] + SF [acc := count negated; it's assumed that count < 2^16] + E48@ [exit if count = 0] + LD [shift count into address field] + [14] T4@ [update negative loop counter] + [15] A15@ GH [call library subroutine R4, 0D := number] + AD T#@ [store number] + [19] A19@ GH [call library subroutine R4, 0D := base] + AD T2#@ [store base] + A#@ TD [pass number to print subroutine] + [25] A25@ GN O5@ [print number, plus space] + A2#@ TD [pass base to print subroutine] + [30] A30@ GN O5@ O5@ O5@ [print base, plus spaces] + A#@ T4D [pass number to sum-of-digits subroutine] + A2#@ T6D [same for base] + [39] A39@ GG [call subroutine, 0D := sum of digits] + [41] A41@ GN O6@ O7@ [print sum of digits, plus CR,LF] + A4@ A2F [increment negative counter] + G14@ [loop back if still negative] + [48] O8@ [done; print null to flush printer buffer] + ZF [halt the machine] + +[The next 3 lines put the entry address into location 50, + so that it can be accessed via the X parameter (see end of program).] + T50K + P9@ + T9Z + +[================== H parameter: Library subroutine R4 ================== + Input of one signed integer, returned in 0D. + 22 locations.] + E25K TH GK + GKA3FT21@T4DH6@E11@P5DJFT6FVDL4FA4DTDI4FA4FS5@G7@S5@G20@SDTDT6FEF + +[============================= N parameter ============================== + Library subroutine P7, prints long strictly positive integer in 0D. + 10 characters, right justified, padded left with spaces. + Even address; 35 storage locations; working position 4D.] + E25K TN + GKA3FT26@H28#@NDYFLDT4DS27@TFH8@S8@T1FV4DAFG31@SFLDUFOFFFSFL4F + T4DA1FA27@G11@XFT28#ZPFT27ZP1024FP610D@524D!FO30@SFL8FE22@ + +[========================== & (Delta) parameter ==========================] +[The following subroutine is not in the EDSAC library. + Division subroutine for positive 35-bit integers, + returning quotient and remainder. + Input: dividend at 4D, divisor at 6D + Output: remainder at 4D, quotient at 6D. + 37 locations; working locations 0D, 8D.] + E25K T& + GKA3FT35@A6DU8DTDA4DRDSDG13@T36@ADLDE4@T36@T6DA4DSDG23@ + T4DA6DYFYFT6DT36@A8DSDE35@T36@ADRDTDA6DLDT6DE15@EFPF + +[==========================================================================] +[On the original EDSAC, the following (without the whitespace and comments)] +[might have been input on a separate tape.] + E25K TX GK + EZ [define entry point] + PF [acc = 0 on entry] +[Count of (n,k) pairs, then the pairs, to be read by library subroutine R4.] +[Note that sign comes *after* value.] +10+1+10+1234+10+254+16+3854+16+2186+3+2187+3+123045+50+2003579+36+ +123456789+1000+1234567890+100000+ diff --git a/Task/Sum-digits-of-an-integer/Run-BASIC/sum-digits-of-an-integer.basic b/Task/Sum-digits-of-an-integer/Run-BASIC/sum-digits-of-an-integer.basic index b075b8271d..6307aaeb5e 100644 --- a/Task/Sum-digits-of-an-integer/Run-BASIC/sum-digits-of-an-integer.basic +++ b/Task/Sum-digits-of-an-integer/Run-BASIC/sum-digits-of-an-integer.basic @@ -14,4 +14,3 @@ print "1 base 10 : "; SumDigits(1, 10) print "1234 base 10 : "; SumDigits(1234, 10) print "fe base 16 : "; SumDigits(hexdec("FE"), 16) print "f0e base 16 : "; SumDigits(hexdec("F0E"), 16) -end diff --git a/Task/Sum-digits-of-an-integer/Uxntal/sum-digits-of-an-integer.uxnatl b/Task/Sum-digits-of-an-integer/Uxntal/sum-digits-of-an-integer.uxnatl new file mode 100644 index 0000000000..3653abf956 --- /dev/null +++ b/Task/Sum-digits-of-an-integer/Uxntal/sum-digits-of-an-integer.uxnatl @@ -0,0 +1,7 @@ +@sum-digits ( num* base* -: sum* ) + #0000 STH2 + &loop + OVR2 OVR2 DIV2k MUL2 SUB2 + STH2r ADD2 STH2 + DIV2k ORAk ?{ POP2 POP2 POP2 STH2r JMP2r } + SWP2 ROT2 POP2 !&loop diff --git a/Task/Sum-digits-of-an-integer/XBasic/sum-digits-of-an-integer.basic b/Task/Sum-digits-of-an-integer/XBasic/sum-digits-of-an-integer.basic new file mode 100644 index 0000000000..17617deca4 --- /dev/null +++ b/Task/Sum-digits-of-an-integer/XBasic/sum-digits-of-an-integer.basic @@ -0,0 +1,26 @@ +PROGRAM "Sum digits of an integer" +VERSION "0.0000" + +DECLARE FUNCTION Entry () +DECLARE FUNCTION SumDigits (number, nBase) + +FUNCTION Entry () + PRINT "The sums of the digits are:" + PRINT + PRINT "1 base 10 : "; SumDigits(1, 10) + PRINT "1234 base 10 : "; SumDigits(1234, 10) + PRINT "fe base 16 : "; SumDigits(0xfe, 16) + PRINT "f0e base 16 : "; SumDigits(0xf0e, 16) +END FUNCTION + +FUNCTION SumDigits (number, nBase) + IF number < 0 THEN number = -number + IF nBase < 2 THEN nBase = 2 + sum = 0 + DO WHILE number > 0 + sum = sum + (number MOD nBase) + number = number / nBase + LOOP + RETURN sum +END FUNCTION +END PROGRAM diff --git a/Task/Sum-multiples-of-3-and-5/ALGOL-60/sum-multiples-of-3-and-5.alg b/Task/Sum-multiples-of-3-and-5/ALGOL-60/sum-multiples-of-3-and-5.alg new file mode 100644 index 0000000000..93de2f496c --- /dev/null +++ b/Task/Sum-multiples-of-3-and-5/ALGOL-60/sum-multiples-of-3-and-5.alg @@ -0,0 +1,20 @@ +begin + +comment - return n mod m; +integer procedure mod(n,m); + value n, m; integer n, m; +begin + mod := n - m * entier(n / m); +end; + +integer i, limit; +real sum; + +limit := 1000; +sum := 0; +for i := 1 step 1 until (limit - 1) do + if mod(i, 3) = 0 or mod(i, 5) = 0 then + sum := sum + i; +outreal(1,sum); + +end diff --git a/Task/Sum-multiples-of-3-and-5/EasyLang/sum-multiples-of-3-and-5.easy b/Task/Sum-multiples-of-3-and-5/EasyLang/sum-multiples-of-3-and-5.easy new file mode 100644 index 0000000000..92961abdd3 --- /dev/null +++ b/Task/Sum-multiples-of-3-and-5/EasyLang/sum-multiples-of-3-and-5.easy @@ -0,0 +1,9 @@ +func msum35 n . + for i = 1 to n + if i mod 3 = 0 or i mod 5 = 0 + sum += i + . + . + return sum +. +print msum35 999 diff --git a/Task/Sum-multiples-of-3-and-5/Joy/sum-multiples-of-3-and-5.joy b/Task/Sum-multiples-of-3-and-5/Joy/sum-multiples-of-3-and-5.joy new file mode 100644 index 0000000000..0d1cf5299f --- /dev/null +++ b/Task/Sum-multiples-of-3-and-5/Joy/sum-multiples-of-3-and-5.joy @@ -0,0 +1,11 @@ +DEFINE divisor == rem 0 = ; + mul3or5 == [3 divisor] [5 divisor] cleave or ; + when == swap [] ifte . + +"The sum of the multiples of 3 or 5 below 1000 is " putchars + +0 999 [0 =] [pop] +[ + [dup rollup + swap] [mul3or5] when + pred +] tailrec . diff --git a/Task/Sum-multiples-of-3-and-5/PL-I-80/sum-multiples-of-3-and-5.pli b/Task/Sum-multiples-of-3-and-5/PL-I-80/sum-multiples-of-3-and-5.pli new file mode 100644 index 0000000000..c5043caff8 --- /dev/null +++ b/Task/Sum-multiples-of-3-and-5/PL-I-80/sum-multiples-of-3-and-5.pli @@ -0,0 +1,43 @@ +sum35_demo: proc options (main); + dcl limit fixed bin; + limit = 1000; + put skip list ('Sum of all multiples of 3 and 5 below', limit); + put skip edit ('Sum = ', sum35(limit)) ((a),(f(6))); + put skip edit ('Also: ', sum35alt(limit)) ((a),(f(6))); + +stop; + +sum35: + proc(limit) returns (float bin); + dcl + (limit, i) fixed bin, + sum float bin; + sum = 0; + do i=1 to (limit-1); + if mod(i,3) = 0 | mod(i,5) = 0 then + sum = sum + i; + end; + return (sum); +end sum35; + +sum35alt: + proc(limit) returns (float bin); + dcl + limit fixed bin, + sum float bin; + sum = sum_of_multiples(3, limit) + + sum_of_multiples(5, limit) - + sum_of_multiples(15, limit); + return (sum); +end sum35alt; + +sum_of_multiples: + proc(n, limit) returns (float bin); + dcl + (n, limit, i) fixed bin, + m float bin; + m = (limit - 1) / n; + return (n * m * (m + 1) / 2); +end sum_of_multiples; + +end sum35_demo; diff --git a/Task/Sum-multiples-of-3-and-5/S-BASIC/sum-multiples-of-3-and-5.basic b/Task/Sum-multiples-of-3-and-5/S-BASIC/sum-multiples-of-3-and-5.basic new file mode 100644 index 0000000000..a5f092c458 --- /dev/null +++ b/Task/Sum-multiples-of-3-and-5/S-BASIC/sum-multiples-of-3-and-5.basic @@ -0,0 +1,16 @@ +rem - return n mod m +function mod(n, m = integer) = integer +end = n - m * (n / m) + +var i, limit = integer +var sum = real + +limit = 1000 +sum = 0 +for i = 1 to limit-1 + if (mod(i,3) = 0) or (mod(i, 5) = 0) then + sum = sum + i +next i +print using "Sum = #######"; sum + +end diff --git a/Task/Sum-multiples-of-3-and-5/Zig/sum-multiples-of-3-and-5.zig b/Task/Sum-multiples-of-3-and-5/Zig/sum-multiples-of-3-and-5.zig index 80f9f79590..6177bdc9d7 100644 --- a/Task/Sum-multiples-of-3-and-5/Zig/sum-multiples-of-3-and-5.zig +++ b/Task/Sum-multiples-of-3-and-5/Zig/sum-multiples-of-3-and-5.zig @@ -1,16 +1,36 @@ const std = @import("std"); -const stdout = std.io.getStdOut().writer(); -fn sumdiv(n: i64, d: i64) i128 { - var m: i128 = @divFloor(n, d); +fn DoubleWide(comptime n: anytype) type { + const Signedness = std.builtin.Signedness; + switch (@typeInfo(@TypeOf(n))) { + .Int => |t| + return std.meta.Int(t.signedness, t.bits * 2), + .ComptimeInt => { + const sz = @as(u16, @intFromFloat(@log2(@as(f64, @floatFromInt(n))))) + 1; + return std.meta.Int(Signedness.signed, sz * 2); + }, + else => + @compileError("must have integral type for DoubleWide") + } +} + +fn sumdiv(n: anytype, d: anytype) DoubleWide(n) { + var m: DoubleWide(n) = @divFloor(n, d); return @divExact(m * (m + 1), 2) * d; } -fn sum3or5(n: i64) i128 { +fn sum3or5(n: anytype) DoubleWide(n) { return sumdiv(n, 3) + sumdiv(n, 5) - sumdiv(n, 15); } pub fn main() !void { - try stdout.print("The sum of the multiples of 3 and 5 below 1000 is {}\n", .{sum3or5(999)}); - try stdout.print("The sum of the multiples of 3 and 5 below 1e18 is {}\n", .{sum3or5(999_999_999_999_999_999)}); + const stdout = std.io.getStdOut().writer(); + + var s: usize = 0; + for (1..1000) |n| { + if (n % 3 == 0 or n % 5 == 0) + s += n; + } + try stdout.print("The sum of the multiples of 3 and 5 below 1000 is {}\n", .{s}); + try stdout.print("The sum of the multiples of 3 and 5 below 1e20 is {}\n", .{sum3or5(99_999_999_999_999_999_999)}); } diff --git a/Task/Sum-of-squares/Euler/sum-of-squares.euler b/Task/Sum-of-squares/Euler/sum-of-squares.euler deleted file mode 100644 index 4513f5aaea..0000000000 --- a/Task/Sum-of-squares/Euler/sum-of-squares.euler +++ /dev/null @@ -1,18 +0,0 @@ -begin - new i; new A; new sum; - sum <- ` formal i; formal lo; formal hi; formal term; - begin - new temp; label loop; - temp <- 0; - i <- lo; -loop: begin - temp <- temp + term; - if [ i <- i + 1 ] <= hi then goto loop else 0 - end; - temp - end - '; - - A <- ( 1, 2, 3, 4, 5 ); - out sum( @i, 1, length A, `A[i]*A[i]' ) -end $ diff --git a/Task/Super-d-numbers/Amazing-Hopper/super-d-numbers.hopper b/Task/Super-d-numbers/Amazing-Hopper/super-d-numbers.hopper new file mode 100644 index 0000000000..5c3f67c24f --- /dev/null +++ b/Task/Super-d-numbers/Amazing-Hopper/super-d-numbers.hopper @@ -0,0 +1,29 @@ +#include + +algoritmo + + decimales '0' + d=2 + ir a sub mientras ( #(d<=8), encontrar súperd ) + +terminar + +subrutinas + +sub( encontrar súperd ) + imprimir("First 10 super-",d," numbers:\n") + count=0, j = 3.0, target="" + #(target = replicate( chr( 48 + d), d )) + iterar mientras ' #(count < 10) ' + cuando( #(occurs(target, string( (j^d) * d ))) ){ + si ( #( find(target,string( (j^d) * d ))<=16-d+1 ) ) + ++count, #((j^d) * d ),";"#(int(j)),"\n", imprimir + sino + imprimir("Error by limited floating-point\n") + fin si + } + ++j + reiterar + saltar + ++d +retornar diff --git a/Task/Super-d-numbers/Quackery/super-d-numbers.quackery b/Task/Super-d-numbers/Quackery/super-d-numbers.quackery new file mode 100644 index 0000000000..67e615c069 --- /dev/null +++ b/Task/Super-d-numbers/Quackery/super-d-numbers.quackery @@ -0,0 +1,19 @@ + [ over findseq swap found ] is hasseq ( [ x --> b ) + + [ [] swap + [ 10 /mod + rot join swap + dup 0 = until ] + drop ] is digits ( n --> [ ) + + [ over ** over * digits + swap dup of hasseq ] is superd ( n --> b ) + + [] 5 times + [ [] 1 from + [ i^ 2 + index + superd if [ index join ] + dup size 10 = if end ] + nested join ] + witheach + [ i^ 2 + echo say " -> " echo cr ] diff --git a/Task/Symmetric-difference/Amazing-Hopper/symmetric-difference.hopper b/Task/Symmetric-difference/Amazing-Hopper/symmetric-difference.hopper new file mode 100644 index 0000000000..8cbc503963 --- /dev/null +++ b/Task/Symmetric-difference/Amazing-Hopper/symmetric-difference.hopper @@ -0,0 +1,14 @@ +#include + +algoritmo + + matrices (A, B) + "John", "Bob", "Mary", "Serena", enlistar en 'A' + "Jim", "Mary", "John", "Bob", enlistar en 'B' + + " A XOR B: {", diferencia simétrica(A,B), "}\n" + " A \ B: {", diferencia(A,B), "}\n" + " B \ A: {", diferencia(B,A), "}\n" + imprimir + +terminar diff --git a/Task/Symmetric-difference/EasyLang/symmetric-difference.easy b/Task/Symmetric-difference/EasyLang/symmetric-difference.easy index 49d34eaee1..542b070ef2 100644 --- a/Task/Symmetric-difference/EasyLang/symmetric-difference.easy +++ b/Task/Symmetric-difference/EasyLang/symmetric-difference.easy @@ -1,21 +1,16 @@ a$[] = [ "John" "Bob" "Mary" "Serena" ] b$[] = [ "Jim" "Mary" "John" "Bob" ] +# for i to 2 for a$ in a$[] for b$ in b$[] if a$ = b$ + a$ = "" break 1 . . - if a$ <> b$ - for c$ in c$[] - if c$ = a$ - break 1 - . - . - if c$ <> a$ - c$[] &= a$ - . + if a$ <> "" + c$[] &= a$ . . swap a$[] b$[] diff --git a/Task/Symmetric-difference/MiniScript/symmetric-difference.mini b/Task/Symmetric-difference/MiniScript/symmetric-difference.mini new file mode 100644 index 0000000000..80bc620ae2 --- /dev/null +++ b/Task/Symmetric-difference/MiniScript/symmetric-difference.mini @@ -0,0 +1,53 @@ +Set = new map +Set["set"] = {} + +Set.init = function(items) + set = new Set + set.set = {} + for item in items + set.add(item) + end for + return set +end function + +Set.contains = function(item) + return self.set.hasIndex(item) +end function + +Set.items = function + return self.set.indexes +end function + +Set.add = function(item) + self.set[item] = true +end function + +Set.union = function(other) + result = Set.init + result.set = self.set + other.set + return result +end function + +Set.difference = function(other) + result = Set.init + for item in self.items + if not other.contains(item) then result.add(item) + end for + return result +end function + +Set.symmetricDifference = function(other) + diff1 = self.difference(other) + diff2 = other.difference(self) + return diff1.union(diff2) +end function + +a = ["John", "Serena", "Bob", "Mary", "Serena"] +b = ["Jim", "Mary", "John", "Jim", "Bob"] + +A1 = Set.init(a) +B1 = Set.init(b) + +print "A XOR B " + A1.symmetricDifference(B1).items +print "A - B " + A1.difference(B1).items +print "B - A " + B1.difference(A1).items diff --git a/Task/Symmetric-difference/SETL/symmetric-difference.setl b/Task/Symmetric-difference/SETL/symmetric-difference.setl new file mode 100644 index 0000000000..297648329b --- /dev/null +++ b/Task/Symmetric-difference/SETL/symmetric-difference.setl @@ -0,0 +1,8 @@ +program symmetric_difference; + A := {"John", "Bob", "Mary", "Serena"}; + B := {"Jim", "Mary", "John", "Bob"}; + + print("A - B:", A - B); + print("B - A:", B - A); + print("Symmetric difference:", (A-B) + (B-A)); +end program; diff --git a/Task/Table-creation-Postal-addresses/C++/table-creation-postal-addresses.cpp b/Task/Table-creation-Postal-addresses/C++/table-creation-postal-addresses.cpp new file mode 100644 index 0000000000..ed82937551 --- /dev/null +++ b/Task/Table-creation-Postal-addresses/C++/table-creation-postal-addresses.cpp @@ -0,0 +1,63 @@ +#include +#include +#include +#include +#include + +class Address { +public: + Address(const std::string& aName, const std::string& aStreet, const std::string& aCity, + const std::string& aState, const std::string& aZipCode) + : name(aName), street(aStreet), city(aCity), state(aState), zipCode(aZipCode) {} + + std::string address_record() { + std::string record; + record += fixed_length(name, 30); + record += fixed_length(street, 30); + record += fixed_length(city, 15); + record += fixed_length(state, 5); + record += fixed_length(zipCode, 10); + return record; + } + + static constexpr uint32_t RECORD_LENGTH = 90; + +private: + std::string fixed_length(const std::string& text, const uint64_t& size) { + return ( text.length() > size ) ? text.substr(0, size) : text + std::string(size - text.length(), ' '); + } + + std::string name, street, city, state, zipCode; +}; + +int main() { + std::vector
addresses = { + Address("FSF Inc.", "51 Franklin Street", "Boston", "MA", "02110-1301"), + Address("The White House", "1600 Pennsylvania Avenue NW", "Washington", "DC", "20500"), + Address("National Security Council", "1700 Pennsylvania Avenue NW", "Washington", "DC", "20500") + }; + + std::fstream file("addresses.dat", std::ios::app | std::ios::in | std::ios::out); + if ( ! file ) { + std::cerr << "Error. Cannot open file." << std::endl; + exit(EXIT_FAILURE); + } + + for ( uint64_t i = 0; i < addresses.size(); ++i ) { + file.seekp(i * Address::RECORD_LENGTH, std::ios::beg); + file << addresses[i].address_record(); + } + + for ( uint64_t i = 0; i < addresses.size(); ++i ) { + file.seekg(i * Address::RECORD_LENGTH, std::ios::beg); + char ch; + std::string address; + while ( address.length() < Address::RECORD_LENGTH ) { + file.get(ch); + address += ch; + } + std::cout << address << std::endl; + } + + file.close(); +} diff --git a/Task/Table-creation-Postal-addresses/Java/table-creation-postal-addresses.java b/Task/Table-creation-Postal-addresses/Java/table-creation-postal-addresses.java new file mode 100644 index 0000000000..9f69186512 --- /dev/null +++ b/Task/Table-creation-Postal-addresses/Java/table-creation-postal-addresses.java @@ -0,0 +1,61 @@ +import java.io.IOException; +import java.nio.ByteBuffer; +import java.nio.channels.FileChannel; +import java.nio.file.Path; +import java.nio.file.StandardOpenOption; + +public final class TableCreationPostalAddresses { + + public static void main(String[] args) throws IOException { + Address[] addresses = new Address[] { + new Address("FSF Inc.", "51 Franklin Street", "Boston", "MA", "02110-1301"), + new Address("The White House", "1600 Pennsylvania Avenue NW", "Washington", "DC", "20500"), + new Address("National Security Council", "1700 Pennsylvania Avenue NW", "Washington", "DC", "20500") + }; + + Path path = Path.of("addresses.dat"); + FileChannel fileChannel = FileChannel.open(path, StandardOpenOption.CREATE, + StandardOpenOption.READ, + StandardOpenOption.WRITE); + for ( int i = 0; i < addresses.length; i++ ) { + byte[] data = addresses[i].addressRecord().getBytes(); + ByteBuffer writeBuffer = ByteBuffer.wrap(data); + fileChannel.position(i * Address.RECORD_LENGTH); + while ( writeBuffer.hasRemaining() ) { + fileChannel.write(writeBuffer); + } + } + + for ( int i = 0; i < addresses.length; i++ ) { + fileChannel.position(i * Address.RECORD_LENGTH); + ByteBuffer readBuffer = ByteBuffer.allocate(Address.RECORD_LENGTH); + fileChannel.read(readBuffer); + System.out.println( new String(readBuffer.array()) ); + } + + fileChannel.close(); + } + +} + +final class Address { + + public Address(String aName, String aStreet, String aCity, String aState, String aZipCode) { + name = aName; street = aStreet; city = aCity; state = aState; zipCode = aZipCode; + } + + public String addressRecord() { + String record = ""; + record += String.format("%-30s", name); + record += String.format("%-30s", street); + record += String.format("%-15s", city); + record += String.format("%-5s", state); + record += String.format("%-10s", zipCode); + return record; + } + + public static final int RECORD_LENGTH = 30 + 30 + 15 + 5 + 10; + + private String name, street, city, state, zipCode; + +} diff --git a/Task/Take-notes-on-the-command-line/Amazing-Hopper/take-notes-on-the-command-line.hopper b/Task/Take-notes-on-the-command-line/Amazing-Hopper/take-notes-on-the-command-line.hopper new file mode 100644 index 0000000000..4d9050e3c0 --- /dev/null +++ b/Task/Take-notes-on-the-command-line/Amazing-Hopper/take-notes-on-the-command-line.hopper @@ -0,0 +1,21 @@ +/* +Take notes on the command line. Rosettacode.org +*/ +#include + +algoritmo + + cuando ' no existe el archivo ("NOTES.txt") ' { + sys = `touch NOTES.txt`; luego limpiar 'sys' + } + + si ' total argumentos es (1) ' + cargar cadena desde ("NOTES.txt"); luego imprime + sino + msg=""; obtener todos los parámetros, guardar en 'msg' + #( msg = strtran("@","\n\t",msg) ) + fijar separador 'NULO' + fecha y hora, "\n\t", msg, "\n\n", unir esto; + añadir al final de ("NOTES.txt") + fin si +terminar diff --git a/Task/Tau-function/EasyLang/tau-function.easy b/Task/Tau-function/EasyLang/tau-function.easy new file mode 100644 index 0000000000..ed10f3470d --- /dev/null +++ b/Task/Tau-function/EasyLang/tau-function.easy @@ -0,0 +1,16 @@ +func cntdiv n . + i = 1 + while i <= sqrt n + if n mod i = 0 + cnt += 1 + if i <> n div i + cnt += 1 + . + . + i += 1 + . + return cnt +. +for i to 100 + write cntdiv i & " " +. diff --git a/Task/Tau-function/MiniScript/tau-function.mini b/Task/Tau-function/MiniScript/tau-function.mini new file mode 100644 index 0000000000..eb1b733ed5 --- /dev/null +++ b/Task/Tau-function/MiniScript/tau-function.mini @@ -0,0 +1,20 @@ +tau = function(n) + ans = 0 + i = 1 + while i * i <= n + if n % i == 0 then + ans += 1 + j = floor(n / i) + if j != i then ans += 1 + end if + i += 1 + end while + return ans +end function + +taus = [] +for n in range(1, 100) + taus.push(tau(n)) +end for + +print taus.join(", ") diff --git a/Task/Tau-number/BASIC256/tau-number.basic b/Task/Tau-number/BASIC256/tau-number.basic index 33e7a33491..5e973d9ea6 100644 --- a/Task/Tau-number/BASIC256/tau-number.basic +++ b/Task/Tau-number/BASIC256/tau-number.basic @@ -12,7 +12,7 @@ while num < limit if n mod tau = 0 then num += 1 if num mod 10 = 1 then print - print n; " "; + print rjust(string(n), 6); end if end while end diff --git a/Task/Tau-number/EasyLang/tau-number.easy b/Task/Tau-number/EasyLang/tau-number.easy new file mode 100644 index 0000000000..f36302af63 --- /dev/null +++ b/Task/Tau-number/EasyLang/tau-number.easy @@ -0,0 +1,21 @@ +func cntdiv n . + i = 1 + while i <= sqrt n + if n mod i = 0 + cnt += 1 + if i <> n div i + cnt += 1 + . + . + i += 1 + . + return cnt +. +i = 1 +while n < 100 + if i mod cntdiv i = 0 + write i & " " + n += 1 + . + i += 1 +. diff --git a/Task/Tau-number/Gambas/tau-number.gambas b/Task/Tau-number/Gambas/tau-number.gambas new file mode 100644 index 0000000000..d481068f9e --- /dev/null +++ b/Task/Tau-number/Gambas/tau-number.gambas @@ -0,0 +1,32 @@ +Public Sub Main() + + Dim c As Integer = 0, i As Integer = 1 + + Print "The first 100 tau numbers are:\n" + While c < 100 + If isTau(i) Then + Print Format$(i, "######"); + c += 1 + If c Mod 10 = 0 Then Print + End If + i += 1 + Wend + +End + +Function numdiv(n As Integer) As Integer + + Dim c As Integer = 2 + For i As Integer = 2 To (n + 1) \ 2 + If n Mod i = 0 Then c += 1 + Next + Return c + +End Function + +Function isTau(n As Integer) As Boolean + + If n = 1 Then Return True + Return IIf(n Mod numdiv(n) = 0, True, False) + +End Function diff --git a/Task/Tau-number/IS-BASIC/tau-number.basic b/Task/Tau-number/IS-BASIC/tau-number.basic new file mode 100644 index 0000000000..6545ec20bd --- /dev/null +++ b/Task/Tau-number/IS-BASIC/tau-number.basic @@ -0,0 +1,12 @@ +100 PROGRAM "TauNr.bas" +110 LET LIMIT=100 +120 LET N,NUM=0 +130 PRINT "The first";LIMIT;"tau numbers are:" +140 DO WHILE NUM 0 THEN GOTO 30 + LET T = T + 1 +30 LET M = M + 1 + IF M < C + 1 THEN GOTO 20 + IF C - (C / T) * T <> 0 THEN GOTO 40 + LET N = N + 1 + PRINT C +40 IF N < X THEN GOTO 10 + END + diff --git a/Task/Tau-number/XBasic/tau-number.basic b/Task/Tau-number/XBasic/tau-number.basic new file mode 100644 index 0000000000..f6d0560f29 --- /dev/null +++ b/Task/Tau-number/XBasic/tau-number.basic @@ -0,0 +1,25 @@ +PROGRAM "Tau number" +VERSION "0.0000" + +DECLARE FUNCTION Entry () + +FUNCTION Entry () + PRINT "The first 100 tau numbers are:" + + n = 0 + num = 0 + limit = 100 + DO WHILE num < limit + INC n + tau = 0 + FOR m = 1 TO n + IF n MOD m = 0 THEN INC tau + NEXT m + IF n MOD tau = 0 THEN + INC num + IF num MOD 10 = 1 THEN PRINT + PRINT FORMAT$("######", n); + END IF + LOOP +END FUNCTION +END PROGRAM diff --git a/Task/Ternary-logic/Elena/ternary-logic.elena b/Task/Ternary-logic/Elena/ternary-logic.elena index 8fe9e03026..a309c1e58a 100644 --- a/Task/Ternary-logic/Elena/ternary-logic.elena +++ b/Task/Ternary-logic/Elena/ternary-logic.elena @@ -4,52 +4,61 @@ import system'collections; sealed class Trit { - bool _value; + bool _value; - bool cast() = _value; + bool cast() = _value; - constructor(v) - { - if (v != nil) - { - _value := cast bool(v); - } - } + constructor(object v) + { + if (v != nil) + { + _value := cast bool(v); + } + } - Trit equivalent(b) - = _value.equal(cast bool(b)) \ back:nilValue; + Trit equivalent(b) + { + var val2 := cast bool(b) \ back:nil; - Trit Inverted - = _value.Inverted \ back:nilValue; + if (val2 != nil && _value != nil) + { + ^ _value.equal(val2) + }; - Trit and(b) - { - if (nil == _value) - { - ^ b.and:nil \ back:nilValue - } - else - { - ^ _value.and((lazy:cast bool(b))) \ back:nilValue - } - } + ^ nilValue; + } - Trit or(b) - { - if (nil == _value) - { - ^ b.or:nilValue \ back:nilValue - } - else - { - ^ _value.or((lazy:cast bool(b))) \ back:nilValue - } - } + Trit Inverted + = _value.Inverted \ back:nilValue; - Trit implies(b) - = self.Inverted.or(b); + Trit and(b) + { + if (nil == _value) + { + ^ b.and:nil \ back:nilValue + } + else + { + ^ _value.and(/*$lazy cast bool(*/b/*)*/) \ back:nilValue + } + } - string toPrintable() = _value.toPrintable() \ back:"maybe"; + Trit or(b) + { + if (nil == _value) + { + ^ b.or:nilValue \ back:nilValue + } + else + { + ^ _value.or(/*$lazy cast bool(*/b/*)*/) \ back:nilValue + } + } + + Trit implies(b) + = self.Inverted.or(b); + + string toPrintable() = _value.toPrintable() \ back:"maybe"; } public program() diff --git a/Task/Test-integerness/BQN/test-integerness.bqn b/Task/Test-integerness/BQN/test-integerness.bqn new file mode 100644 index 0000000000..7fa203c57f --- /dev/null +++ b/Task/Test-integerness/BQN/test-integerness.bqn @@ -0,0 +1,3 @@ +IsInt ← ⊢(0=|˜)⍟⊢1=•Type + +IsInt¨⊸≍˘ ⟨+, 0, ∞, ⊘, ¯∞, 'q', ¯42, ∞-∞, "BQN", 1e¯300, 9e15, π⟩ diff --git a/Task/Text-processing-1/Sidef/text-processing-1.sidef b/Task/Text-processing-1/Sidef/text-processing-1.sidef index bc15040269..47c411ae75 100644 --- a/Task/Text-processing-1/Sidef/text-processing-1.sidef +++ b/Task/Text-processing-1/Sidef/text-processing-1.sidef @@ -5,8 +5,7 @@ ARGF.each { |line| var (date, *readings) = line.words...; var valid = []; var hour = 0; - readings.map{.to_n}.each_slice(2, { |slice| - var(reading, flag) = slice...; + readings.map{.to_n}.each_slice(2, { |reading, flag| if (flag > 0) { valid << reading; if (previous == :invalid) { diff --git a/Task/Text-processing-2/Amazing-Hopper/text-processing-2.hopper b/Task/Text-processing-2/Amazing-Hopper/text-processing-2.hopper new file mode 100644 index 0000000000..1f1d98205a --- /dev/null +++ b/Task/Text-processing-2/Amazing-Hopper/text-processing-2.hopper @@ -0,0 +1,20 @@ +#include + +algoritmo + + número de campos correcto = `awk 'NF != 49' basica/readings.txt` + + fechas repetidas = `awk '++count[$1] >= 2{print $1, "(",count[$1],")"}' basica/readings.txt` + + resultados buenos = `awk '{rec++;ok=1; for(i=0;i<24;i++){if($(2*i+3)<1){ok=0}}; recordok += ok} END {print "Total records",rec,"OK records", recordok, "or", recordok/rec*100,"%"}' basica/readings.txt` + + + "Check field number by line: ", #( !(number(número de campos correcto)) ? "Ok\n" : "Nok\n";),\ + "\nCheck duplicated dates:\n", fechas repetidas,NL, \ + "Number of records have good readings for all instruments:\n",resultados buenos,\ + "(including " + fijar separador( NL ) + contar tokens en 'fechas repetidas' + " duplicated records)\n", luego imprime todo + +terminar diff --git a/Task/The-Twelve-Days-of-Christmas/GW-BASIC/the-twelve-days-of-christmas.basic b/Task/The-Twelve-Days-of-Christmas/GW-BASIC/the-twelve-days-of-christmas.basic new file mode 100644 index 0000000000..3b2e75058b --- /dev/null +++ b/Task/The-Twelve-Days-of-Christmas/GW-BASIC/the-twelve-days-of-christmas.basic @@ -0,0 +1,26 @@ +100 CLS : REM 100 HOME for Applesoft BASIC +110 DIM D$(12) +120 DIM G$(12) +130 FOR I = 1 TO 12 : READ D$(I) : NEXT I +140 FOR I = 1 TO 12 : READ G$(I) : NEXT I +150 FOR I = 1 TO 12 +160 PRINT "On the ";D$(I);" day of Christmas," +170 PRINT "My true love gave to me:" +180 FOR J = I TO 1 STEP -1 : PRINT G$(J) : NEXT J +190 PRINT +200 NEXT I +210 END +220 DATA "first","second","third","fourth","fifth","sixth" +230 DATA "seventh","eighth","ninth","tenth","eleventh","twelfth" +240 DATA "A partridge in a pear tree." +250 DATA "Two turtle doves and" +260 DATA "Three french hens" +270 DATA "Four calling birds" +280 DATA "Five golden rings" +290 DATA "Six geese a-laying" +300 DATA "Seven swans a-swimming" +310 DATA "Eight maids a-milking" +320 DATA "Nine ladies dancing" +330 DATA "Ten lords a-leaping" +340 DATA "Eleven pipers piping" +350 DATA "Twelve drummers drumming" diff --git a/Task/The-Twelve-Days-of-Christmas/SETL/the-twelve-days-of-christmas.setl b/Task/The-Twelve-Days-of-Christmas/SETL/the-twelve-days-of-christmas.setl new file mode 100644 index 0000000000..82781707bf --- /dev/null +++ b/Task/The-Twelve-Days-of-Christmas/SETL/the-twelve-days-of-christmas.setl @@ -0,0 +1,31 @@ +program christmas; + ordinals := [ + "first", "second", "third", "fourth", "fifth", + "sixth", "seventh", "eight", "ninth", "tenth", + "eleventh", "twelfth" + ]; + + verses := [ + "A partridge in a pear tree.", + "Two turtle doves and", + "Three french hens", + "Four calling birds", + "Five golden rings", + "Six geese a-laying", + "Seven swans a-swimming", + "Eight maids a-milking", + "Nine ladies dancing", + "Ten lords a-leaping", + "Eleven pipers piping", + "Twelve drummers drumming" + ]; + + loop for i in [1..12] do + print("On the " + ordinals(i) + " day of Christmas,"); + print("My true love gave to me"); + loop for j in [i, i-1..1] do + print(verses(j)); + end loop; + print; + end loop; +end program; diff --git a/Task/The-Twelve-Days-of-Christmas/XBasic/the-twelve-days-of-christmas.basic b/Task/The-Twelve-Days-of-Christmas/XBasic/the-twelve-days-of-christmas.basic new file mode 100644 index 0000000000..08c7423c2d --- /dev/null +++ b/Task/The-Twelve-Days-of-Christmas/XBasic/the-twelve-days-of-christmas.basic @@ -0,0 +1,44 @@ +PROGRAM "The Twelve Days of Christmas" +VERSION "0.0000" + +DECLARE FUNCTION Entry () + +FUNCTION Entry () + DIM day$[11] + day$[0] = "first" + day$[1] = "second" + day$[2] = "third" + day$[3] = "fourth" + day$[4] = "fifth" + day$[5] = "sixth" + day$[6] = "seventh" + day$[7] = "eighth" + day$[8] = "ninth" + day$[9] = "tenth" + day$[10] = "eleventh" + day$[11] = "twelfth" + + DIM gift$[11] + gift$[0] = "A partridge in a pear tree." + gift$[1] = "Two turtle doves and" + gift$[2] = "Three french hens" + gift$[3] = "Four calling birds" + gift$[4] = "Five golden rings" + gift$[5] = "Six geese a-laying" + gift$[6] = "Seven swans a-swimming" + gift$[7] = "Eight maids a-milking" + gift$[8] = "Nine ladies dancing" + gift$[9] = "Ten lords a-leaping" + gift$[10] = "Eleven pipers piping" + gift$[11] = "Twelve drummers drumming" + + FOR i = 0 TO 11 + PRINT "On the "; day$[i]; " day of Christmas," + PRINT "My true love gave to me:" + FOR J = i TO 0 STEP -1 + PRINT gift$[J] + NEXT J + PRINT + NEXT i +END FUNCTION +END PROGRAM diff --git a/Task/Tic-tac-toe/Koka/tic-tac-toe.koka b/Task/Tic-tac-toe/Koka/tic-tac-toe.koka new file mode 100644 index 0000000000..1c31fb4069 --- /dev/null +++ b/Task/Tic-tac-toe/Koka/tic-tac-toe.koka @@ -0,0 +1,407 @@ +import std/os/readline + +fun member(x: a, xs: list, compare: (a, a) -> bool) : bool + match xs + Nil -> False + Cons(y, ys) -> x.compare(y) || member(x, ys,compare) + +fun member(xs: list, x: a, compare: (a, a) -> bool) : bool + x.member(xs, compare) + + +struct coord + x: int + y: int + +fun show(c: coord) : string { + "(" ++ c.x.show() ++ ", " ++ c.y.show() ++ ")" +} + + +fun (==)(c1: coord, c2: coord) : bool + c1.x == c2.x && c1.y == c2.y + + +effect ctl eject(): a + + +fun parse(str : string, moves : list) : coord + match str.list() + Cons('0', Cons(' ', Cons('0', Nil))) -> Coord(0,0) + Cons('0', Cons(' ', Cons('1', Nil))) -> Coord(0,1) + Cons('0', Cons(' ', Cons('2', Nil))) -> Coord(0,2) + Cons('1', Cons(' ', Cons('0', Nil))) -> Coord(1,0) + Cons('1', Cons(' ', Cons('1', Nil))) -> Coord(1,1) + Cons('1', Cons(' ', Cons('2', Nil))) -> Coord(1,2) + Cons('2', Cons(' ', Cons('0', Nil))) -> Coord(2,0) + Cons('2', Cons(' ', Cons('1', Nil))) -> Coord(2,1) + Cons('2', Cons(' ', Cons('2', Nil))) -> Coord(2,2) + Cons('0', Cons(',', Cons('0', Nil))) -> Coord(0,0) + Cons('0', Cons(',', Cons('1', Nil))) -> Coord(0,1) + Cons('0', Cons(',', Cons('2', Nil))) -> Coord(0,2) + Cons('1', Cons(',', Cons('0', Nil))) -> Coord(1,0) + Cons('1', Cons(',', Cons('1', Nil))) -> Coord(1,1) + Cons('1', Cons(',', Cons('2', Nil))) -> Coord(1,2) + Cons('2', Cons(',', Cons('0', Nil))) -> Coord(2,0) + Cons('2', Cons(',', Cons('1', Nil))) -> Coord(2,1) + Cons('2', Cons(',', Cons('2', Nil))) -> Coord(2,2) + Cons('q', Nil) -> eject() + _ -> + println("Invalid move, please try again") + gen_move(moves) + +fun gen_move(moves : list) : coord + val move : coord = parse(readline(), moves) + + if moves.any() fn (c : coord) { c == move } then { + println("Invalid move, please try again") + gen_move(moves) + } else { + move + } + +fun create-board() : list> { + [['.','.','.'],['.','.','.'],['.','.','.']] +} + +fun show(grid: list>) : string + var line := 0 + grid.foldl(" 0 1 2\n") fn(acc, row: list) + + val out = row.foldl(acc ++ line.show() ++ " ") fn(acc, col: char) + acc ++ col.string() ++ " " + ++ "\n" + line := line + 1 + out + + + +fun get_board_position(board : list>, coord : coord) : maybe { + match board[coord.y] { + Nothing -> Nothing + Just(row) -> row[coord.x] + } +} + +fun mark_board(board: list>,coord: coord, mark: char): maybe>> + val new_row: maybe> = match board[coord.y] + Nothing -> Nothing + Just(row) -> Just(row.take(coord.x) ++ mark.Cons(row.drop(coord.x + 1))) + + match new_row + Nothing -> Nothing + Just(row) -> Just(board.take(coord.y) ++ row.Cons(board.drop(coord.y + 1))) + + +effect ctl not_full() : () + +fun check_full(board: list>) : bool + fun helper() + var full := True + board.foreach() fn(row) + if '.'.member(row) fn (a, b) a == b then { + not_full() + } + full + + with ctl not_full() False + helper() + +fun check_win(board: list>, mark: char) : bool + + var win := False + var i := 0 + while {i < 3} { + if board.get_board_position(Coord(i,0)).unwrap() == mark && board.get_board_position(Coord(i,1)).unwrap() == mark && board.get_board_position(Coord(i,2)).unwrap() == mark then { + win := True + } + if board.get_board_position(Coord(0,i)).unwrap() == mark && board.get_board_position(Coord(1,i)).unwrap() == mark && board.get_board_position(Coord(2,i)).unwrap() == mark then { + win := True + } + i := i + 1 + } + if board.get_board_position(Coord(0,0)).unwrap() == mark && board.get_board_position(Coord(1,1)).unwrap() == mark && board.get_board_position(Coord(2,2)).unwrap() == mark then { + win := True + } + if board.get_board_position(Coord(0,2)).unwrap() == mark && board.get_board_position(Coord(1,1)).unwrap() == mark && board.get_board_position(Coord(2,0)).unwrap() == mark then { + win := True + } + + win + + + +fun human_logic(board: list>, moves: list, mark: char, other_mark: char) : coord + gen_move(moves) + + +fun ai_logic(board: list>, moves: list, mark: char, other_mark: char) + board.gen_ai_move(moves,mark, other_mark) + + +struct move + move : coord + score: int + +fun (==)(m1 : move, m2 : move) : bool { + m1.move == m2.move && m1.score == m2.score +} + +fun eval_board(board : list>, mark: char, other-mark : char) { + if board.check_win(mark) then { + 10 + } + elif board.check_win(other-mark) then { + -10 + } + else { + 0 + } +} + +fun maximum-move(a : move, b : move) : move { + if a.score > b.score then { + a + } + else { + b + } +} + + +fun gen_ai_move(board : list>, moves : list, mark : char, other-mark : char) { + val best_move : move = Move(Coord(-1,-1), -1000) + [0,1,2].foldl(best_move) fn (bstMove : move, i : int) { + [0,1,2].foldl(bstMove) fn (bstMve : move, j : int) { + if Coord(i,j).member(moves) fn (a,b) {a == b} then { + bstMve + } + else { + val new_board : list> = board.mark_board(Coord(i,j), mark).unwrap() + val new-max = maximum-move(bstMve, Move(Coord(i,j), new_board.minimax(moves ++ [Coord(i,j)], 0, False, mark, other-mark))) + new-max + } + } + }.move +} + +fun unwrap(x: maybe): a + match x + Just(a) -> a + Nothing -> throw("value was Nothing") + +// A basic implementation of Minimax +// This uses brace style to show that it is possible +fun minimax(board : list>, moves: list, depth : int, isMaximizingPlayer : bool, mark : char, other-mark : char) : int { + val score : int = board.eval_board(mark, other-mark) + if score == 10 then { + score + } + elif score == -10 then { + score + } + elif board.check_full() then { + 0 + } + else { + if isMaximizingPlayer then { + val bestVal: int = -1000 + [0,1,2].foldl(bestVal) fn (bstVal : int, i : int) { + [0,1,2].foldl(bstVal) fn (bstVl : int, j : int) { + if Coord(i,j).member(moves) fn(a, b) {a == b} then { + bstVl + } + else { + val new_board : list> = board.mark_board(Coord(i,j), mark).unwrap() + val value : int = new_board.minimax(moves ++ [Coord(i,j)], depth + 1, !isMaximizingPlayer, mark, other-mark) + max(bstVl, value) + } + } + } + } + else { + val bestVal: int = 1000 + [0,1,2].foldl(bestVal) fn (bstVal : int, i : int) { + [0,1,2].foldl(bstVal) fn (bstVl : int, j : int) { + if Coord(i,j).member(moves) fn(a,b) {a == b} then { + bstVl + } + else { + val new_board : list> = board.mark_board(Coord(i,j), other-mark).unwrap() + val value : int = new_board.minimax(moves ++ [Coord(i,j)], depth + 1, !isMaximizingPlayer, mark, other-mark) + min(bstVl, value) + } + } + } + } + } +} + +// The main business logic of the entire game +// This function checks if there is a draw or a win +fun play_game() + val board = get_board() + + if board.check_full() then + println("Draw!") + println("Final board:") + board.show().println + else + "Next Turn:".println + board.show().println + val current_mark = get_current_mark() + val other_mark = get_other_mark() + play_turn(current_mark, other_mark) + val new_board = get_board() + + if new_board.check_win(current_mark) then + println("Player " ++ current_mark.show() ++ " wins!") + println("Final board:") + new_board.show().println + else + flip() + play_game() + + +effect human_turn + fun play_human_turn(pair: (list>, list), marks: (char, char)) : coord +effect ai_turn + fun play_ai_turn(pair: (list>, list), marks: (char, char)) : coord + +effect player1 + fun player1_turn(pair: (list>, list), marks: (char, char)) : coord + fun get_player1_mark() : char +effect player2 + fun player2_turn(pair: (list>, list), marks: (char, char)) : coord + fun get_player2_mark() : char + + +effect turn + // Changes the current player to a different one + fun flip() : () + // Calls the appropriate code for the current player + fun play_turn(mark: char, other_mark: char) : () + // Gets the symbol of the active player + fun get_current_mark(): char + // Gets the symbol of the inactive player + fun get_other_mark(): char + // This allows us to access the board + fun get_board() : list> + // This allows us to access the moves that have been made + fun get_moves(): list + + + +type player + Human + AI + +type players + One + Two + +// This function encapsulates the state of the entire game +// Think of it as calling a method on an object but with pure functions +fun initialize_and_start_game(game_type: int) + var current_player := One + var current_board := create-board() + var all_moves := [] + + var player1 := Human + var player2 := AI + + match game_type + 1 -> { + player1 := Human + player2 := Human + } + 2 -> { + player1 := Human + player2 := AI + } + 3 -> { + player1 := AI + player2 := AI + } + _ -> throw("invalid game type") + + + with handler + ctl eject() + println("Have a nice day.") + with fun play_human_turn(pair: (list>, list), marks: (char, char)) + human_logic(pair.fst,pair.snd,marks.fst,marks.snd) + with fun play_ai_turn(pair: (list>, list), marks: (char, char)) + ai_logic(pair.fst,pair.snd,marks.fst,marks.snd) + with handler + fun player1_turn(pair: (list>, list), marks: (char, char)) + match player1 + Human -> play_human_turn(pair, marks) + AI -> play_ai_turn(pair, marks) + fun get_player1_mark() + 'X' + with handler + fun player2_turn(pair: (list>, list), marks: (char, char)) + match player2 + Human -> play_human_turn(pair, marks) + AI -> play_ai_turn(pair, marks) + fun get_player2_mark() + 'O' + with handler + return(x) () + fun flip() + match current_player + One -> current_player := Two + Two -> current_player := One + fun play_turn(mark: char, other_mark: char) + match current_player + One -> { + val coord = player1_turn((current_board, all_moves), (mark, other_mark)) + current_board := mark_board(current_board,coord,get_player1_mark()).unwrap + + all_moves := Cons(coord, all_moves) + () + } + Two -> { + val coord = player2_turn((current_board, all_moves), (mark, other_mark)) + + current_board := mark_board(current_board,coord,get_player2_mark()).unwrap + + all_moves := Cons(coord, all_moves) + () + } + fun get_current_mark() match current_player + One -> get_player1_mark() + Two -> get_player2_mark() + fun get_other_mark() match current_player + Two -> get_player1_mark() + One -> get_player2_mark() + fun get_board() current_board + fun get_moves() all_moves + play_game() + + + +fun prompt_game_type() + match readline().list() + Cons('1', Nil) -> 1 + Cons('2', Nil) -> 2 + Cons('3', Nil) -> 3 + _ -> + println("Invalid game mode, please try again") + prompt_game_type() + + +fun main () + println("Welcome to Tic Tac Toe!") + println("Please select a game mode:") + println("1. Two player") + println("2. One player") + println("3. Zero player") + println("Enter the number of the game mode you want to play") + + val game_type = prompt_game_type() + + "Enter your input as 'x y' or 'x,y' when selecting a spot".println + + initialize_and_start_game(game_type) diff --git a/Task/Tokenize-a-string/BQN/tokenize-a-string.bqn b/Task/Tokenize-a-string/BQN/tokenize-a-string.bqn index 69bc5bf458..e99953f4f4 100644 --- a/Task/Tokenize-a-string/BQN/tokenize-a-string.bqn +++ b/Task/Tokenize-a-string/BQN/tokenize-a-string.bqn @@ -1,4 +1,3 @@ - Split←((⊢-˜+`׬)∘=⊔⊢) -(⊢-˜+`׬)∘=⊔⊢ - ∾⟜'.'⊸∾´','Split"Hello,How,Are,You,Today" -"Hello.How.Are.You.Today" +Split ← (+`׬)⊸-∘= ⊔ ⊢ + +∾⟜'.'⊸∾´ ',' Split "Hello,How,Are,You,Today" diff --git a/Task/Tokenize-a-string/EasyLang/tokenize-a-string.easy b/Task/Tokenize-a-string/EasyLang/tokenize-a-string.easy index 3a40548fef..5f9e3b6e86 100644 --- a/Task/Tokenize-a-string/EasyLang/tokenize-a-string.easy +++ b/Task/Tokenize-a-string/EasyLang/tokenize-a-string.easy @@ -1,3 +1,5 @@ s$ = "Hello,How,Are,You,Today" a$[] = strsplit s$ "," -print a$[] +for s$ in a$[] + write s$ & "." +. diff --git a/Task/Tokenize-a-string/JavaScript/tokenize-a-string-1.js b/Task/Tokenize-a-string/JavaScript/tokenize-a-string-1.js new file mode 100644 index 0000000000..4d2a093b0e --- /dev/null +++ b/Task/Tokenize-a-string/JavaScript/tokenize-a-string-1.js @@ -0,0 +1,5 @@ +console.log( + "Hello,How,Are,You,Today" + .split(",") + .join(".") +); diff --git a/Task/Tokenize-a-string/JavaScript/tokenize-a-string-2.js b/Task/Tokenize-a-string/JavaScript/tokenize-a-string-2.js new file mode 100644 index 0000000000..bfdb171013 --- /dev/null +++ b/Task/Tokenize-a-string/JavaScript/tokenize-a-string-2.js @@ -0,0 +1,74 @@ +const Tokeniser = (function () { + const numberRegex = /-?(\d+\.d+|\d+\.|\.\d+|\d+)((e|E)(\+|-)?\d+)?/g; + return { + settings: { + operators: ["<", ">", "=", "+", "-", "*", "/", "?", "!"], + separators: [",", ".", ";", ":", " ", "\t", "\n"], + groupers: ["(", ")", "[", "]", "{", "}", '"', '"', "'", "'"], + keepWhiteSpacesAsTokens: false, + trimTokens: true + }, + isNumber: function (value) { + if (typeof value === "number") { + return true; + } else if (typeof value === "string") { + return numberRegex.test(value); + } + return false; + }, + closeGrouper: function (grouper) { + if (this.settings.groupers.includes(grouper)) { + return this.settings.groupers[this.settings.groupers.indexOf(grouper) + 1]; + } + return null; + }, + tokenType: function (char) { + if (this.settings.operators.includes(char)) { + return "operator"; + } else if (this.settings.separators.includes(char)) { + return "separator"; + } else if (this.settings.groupers.includes(char)) { + return "grouper"; + } + return "other"; + }, + parseString: function (str) { + if (typeof str !== "string") { + if (str === null) { + return "null"; + } if (typeof str === "object") { + str = JSON.stringify(str); + } else { + str = str.toString(); + } + } + let tokens = [], _tempToken = ""; + for (let i = 0; i < str.length; i++) { + if (this.tokenType(_tempToken) !== this.tokenType(str[i]) || this.tokenType(str[i]) === "separator") { + if (_tempToken.trim() !== "") { + tokens.push(this.settings.trimTokens ? _tempToken.trim() : _tempToken); + } else if (this.settings.keepWhiteSpacesAsTokens) { + tokens.push(_tempToken); + } + _tempToken = str[i]; + if (this.tokenType(_tempToken) === "separator") { + if (_tempToken.trim() !== "") { + tokens.push(this.settings.trimTokens ? _tempToken.trim() : _tempToken); + } else if (this.settings.keepWhiteSpacesAsTokens) { + tokens.push(_tempToken); + } + _tempToken = ""; + } + } else { + _tempToken += str[i]; + } + } + if (_tempToken.trim() !== "") { + tokens.push(this.settings.trimTokens ? _tempToken.trim() : _tempToken); + } else if (this.settings.keepWhiteSpacesAsTokens) { + tokens.push(_tempToken); + } + return tokens.filter((token) => token !== ""); + } + }; +})(); diff --git a/Task/Tokenize-a-string/JavaScript/tokenize-a-string-3.js b/Task/Tokenize-a-string/JavaScript/tokenize-a-string-3.js new file mode 100644 index 0000000000..4dada54e9d --- /dev/null +++ b/Task/Tokenize-a-string/JavaScript/tokenize-a-string-3.js @@ -0,0 +1,3 @@ +Tokeniser.parseString("Hello,How,Are,You,Today"); + +// -> ['Hello', ',', 'How', ',', 'Are', ',', 'You', ',', 'Today'] diff --git a/Task/Tokenize-a-string/JavaScript/tokenize-a-string.js b/Task/Tokenize-a-string/JavaScript/tokenize-a-string.js deleted file mode 100644 index 1818d0bc04..0000000000 --- a/Task/Tokenize-a-string/JavaScript/tokenize-a-string.js +++ /dev/null @@ -1 +0,0 @@ -alert( "Hello,How,Are,You,Today".split(",").join(".") ); diff --git a/Task/Tonelli-Shanks-algorithm/C++/tonelli-shanks-algorithm.cpp b/Task/Tonelli-Shanks-algorithm/C++/tonelli-shanks-algorithm.cpp index 0b3ebd2aba..f04a61b183 100644 --- a/Task/Tonelli-Shanks-algorithm/C++/tonelli-shanks-algorithm.cpp +++ b/Task/Tonelli-Shanks-algorithm/C++/tonelli-shanks-algorithm.cpp @@ -24,7 +24,7 @@ uint64_t multiply_modulus(uint64_t a, uint64_t b, const uint64_t& modulus) { if ( a % 2 == 1 ) { result = ( result + b ) % modulus; }; - b = ( b * 2 ) % modulus; + b = ( b << 1 ) % modulus; a >>= 1; } return result; diff --git a/Task/Top-rank-per-group/Elena/top-rank-per-group.elena b/Task/Top-rank-per-group/Elena/top-rank-per-group.elena index 3f37432d4c..197f080a9f 100644 --- a/Task/Top-rank-per-group/Elena/top-rank-per-group.elena +++ b/Task/Top-rank-per-group/Elena/top-rank-per-group.elena @@ -6,10 +6,10 @@ import extensions'text; class Employee { - prop string Name; - prop string ID; - prop int Salary; - prop string Department; + string Name : prop; + string ID : prop; + int Salary : prop; + string Department : prop; string toPrintable() = new StringWriter() diff --git a/Task/Total-circles-area/C++/total-circles-area.cpp b/Task/Total-circles-area/C++/total-circles-area.cpp new file mode 100644 index 0000000000..507c94fc76 --- /dev/null +++ b/Task/Total-circles-area/C++/total-circles-area.cpp @@ -0,0 +1,98 @@ +#include +#include +#include +#include +#include +#include +#include + +struct Pair_X { + double x1; + double x2; + + bool operator <(const Pair_X& pair_x) const { + return x1 < pair_x.x1; + } +}; + +struct Circle { + double centre_x; + double centre_y; + double radius; +}; + +const std::vector circles = { + Circle( 1.6417233788, 1.6121789534, 0.0848270516), + Circle(-1.4944608174, 1.2077959613, 1.1039549836), + Circle( 0.6110294452, -0.6907087527, 0.9089162485), + Circle( 0.3844862411, 0.2923344616, 0.2375743054), + Circle(-0.2495892950, -0.3832854473, 1.0845181219), + Circle( 1.7813504266, 1.6178237031, 0.8162655711), + Circle(-0.1985249206, -0.8343333301, 0.0538864941), + Circle(-1.7011985145, -0.1263820964, 0.4776976918), + Circle(-0.4319462812, 1.4104420482, 0.7886291537), + Circle( 0.2178372997, -0.9499557344, 0.0357871187), + Circle(-0.6294854565, -1.3078893852, 0.7653357688), + Circle( 1.7952608455, 0.6281269104, 0.2727652452), + Circle( 1.4168575317, 1.0683357171, 1.1016025378), + Circle( 1.4637371396, 0.9463877418, 1.1846214562), + Circle(-0.5263668798, 1.7315156631, 1.4428514068), + Circle(-1.2197352481, 0.9144146579, 1.0727263474), + Circle(-0.1389358881, 0.1092805780, 0.7350208828), + Circle( 1.5293954595, 0.0030278255, 1.2472867347), + Circle(-0.5258728625, 1.3782633069, 1.3495508831), + Circle(-0.1403562064, 0.2437382535, 1.3804956588), + Circle( 0.8055826339, -0.0482092025, 0.3327165165), + Circle(-0.6311979224, 0.7184578971, 0.2491045282), + Circle( 1.4685857879, -0.8347049536, 1.3670667538), + Circle(-0.6855727502, 1.6465021616, 1.0593087096), + Circle( 0.0152957411, 0.0638919221, 0.9771215985) +}; + +Pair_X horizontal_section(const Circle& circle, const double& y) { + const double value = circle.radius * circle.radius - ( y - circle.centre_y ) * ( y - circle.centre_y ); + double delta_x = std::sqrt(value); + return Pair_X(circle.centre_x - delta_x, circle.centre_x + delta_x); +} + +double area_scan(const double& precision) { + std::vector y_values; + for ( const Circle& circle : circles ) { + y_values.emplace_back(circle.centre_y + circle.radius); + } + for ( const Circle& circle : circles ) { + y_values.emplace_back(circle.centre_y - circle.radius); + } + + const double min = *min_element(y_values.begin(), y_values.end()); + const double max = *max_element(y_values.begin(), y_values.end()); + const int64_t min_y = std::floor(min / precision); + const int64_t max_y = std::ceil(max / precision); + + double total_area = 0.0; + for ( int64_t i = min_y; i <= max_y; ++i ) { + double y = i * precision; + double right = -DBL_MAX; + + std::vector pairs_x; + for ( const Circle& circle : circles ) { + if ( std::fabs(y - circle.centre_y) < circle.radius ) { + pairs_x.emplace_back(horizontal_section(circle, y)); + } + } + std::sort(pairs_x.begin(), pairs_x.end()); + + for ( const Pair_X& pair_x : pairs_x ) { + if ( pair_x.x2 > right ) { + total_area += pair_x.x2 - std::max(pair_x.x1, right); + right = pair_x.x2; + } + } + } + return total_area * precision; +} + +int main() { + const double precision = 0.00001; + std::cout << "Approximate area = " << std::setprecision(9) << area_scan(precision); +} diff --git a/Task/Total-circles-area/EasyLang/total-circles-area.easy b/Task/Total-circles-area/EasyLang/total-circles-area.easy new file mode 100644 index 0000000000..3dcb2fd239 --- /dev/null +++ b/Task/Total-circles-area/EasyLang/total-circles-area.easy @@ -0,0 +1,77 @@ +# with Montecarlo sampling +repeat + s$ = input + until s$ = "" + c[][] &= number strsplit s$ " " +. +# mark inner circles +for i to len c[][] + for j to len c[][] + if i <> j + dx = abs (c[i][1] - c[j][1]) + dy = abs (c[i][2] - c[j][2]) + d = sqrt (dx * dx + dy * dy) + if d + c[j][3] < c[i][3] + c[j][3] = 0 + . + . + . +. +# find bounding box and remove marked circles +i = len c[][] +while i >= 1 + if 0 = 1 and c[i][3] = 0 + swap c[i][] c[len c[][]][] + len c[][] -1 + else + maxx = higher (c[i][1] + c[i][3]) maxx + minx = lower (c[i][1] - c[i][3]) minx + maxy = higher (c[i][2] + c[i][3]) maxy + miny = lower (c[i][2] - c[i][3]) miny + c[i][3] = c[i][3] * c[i][3] + . + i -= 1 +. +ntry = 10000000 +print ntry & " samples ..." +for try to ntry + px = (maxx - minx) * randomf + minx + py = (maxy - miny) * randomf + miny + for i to len c[][] + dx = px - c[i][1] + dy = py - c[i][2] + if dx * dx + dy * dy <= c[i][3] + inside += 1 + break 1 + . + . +. +numfmt 4 0 +print inside / ntry * (maxx - minx) * (maxy - miny) +# +input_data +1.6417233788 1.6121789534 0.0848270516 +-1.4944608174 1.2077959613 1.1039549836 +0.6110294452 -0.6907087527 0.9089162485 +0.3844862411 0.2923344616 0.2375743054 +-0.2495892950 -0.3832854473 1.0845181219 +1.7813504266 1.6178237031 0.8162655711 +-0.1985249206 -0.8343333301 0.0538864941 +-1.7011985145 -0.1263820964 0.4776976918 +-0.4319462812 1.4104420482 0.7886291537 +0.2178372997 -0.9499557344 0.0357871187 +-0.6294854565 -1.3078893852 0.7653357688 +1.7952608455 0.6281269104 0.2727652452 +1.4168575317 1.0683357171 1.1016025378 +1.4637371396 0.9463877418 1.1846214562 +-0.5263668798 1.7315156631 1.4428514068 +-1.2197352481 0.9144146579 1.0727263474 +-0.1389358881 0.1092805780 0.7350208828 +1.5293954595 0.0030278255 1.2472867347 +-0.5258728625 1.3782633069 1.3495508831 +-0.1403562064 0.2437382535 1.3804956588 +0.8055826339 -0.0482092025 0.3327165165 +-0.6311979224 0.7184578971 0.2491045282 +1.4685857879 -0.8347049536 1.3670667538 +-0.6855727502 1.6465021616 1.0593087096 +0.0152957411 0.0638919221 0.9771215985 diff --git a/Task/Total-circles-area/Java/total-circles-area.java b/Task/Total-circles-area/Java/total-circles-area-1.java similarity index 99% rename from Task/Total-circles-area/Java/total-circles-area.java rename to Task/Total-circles-area/Java/total-circles-area-1.java index 7cd0cdc995..cb6721415e 100644 --- a/Task/Total-circles-area/Java/total-circles-area.java +++ b/Task/Total-circles-area/Java/total-circles-area-1.java @@ -1,4 +1,4 @@ -public class CirclesTotalArea { +public class TotalCirclesArea { /* * Rectangles are given as 4-element arrays [tx, ty, w, h]. diff --git a/Task/Total-circles-area/Java/total-circles-area-2.java b/Task/Total-circles-area/Java/total-circles-area-2.java new file mode 100644 index 0000000000..1873240796 --- /dev/null +++ b/Task/Total-circles-area/Java/total-circles-area-2.java @@ -0,0 +1,86 @@ +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +public final class TotalCirclesArea { + + public static void main(String[] args) { + final double precision = 0.000_001; + System.out.println(String.format("%s%.8f", "Approximate area = ", areaScan(precision))); + } + + private static double areaScan(double precision) { + List valuesY = new ArrayList(); + for ( Circle circle : circles ) { + valuesY.add(circle.centreY + circle.radius); + } + for ( Circle circle : circles ) { + valuesY.add(circle.centreY - circle.radius); + } + + final double min = valuesY.stream().min(Double::compare).get(); + final double max = valuesY.stream().max(Double::compare).get(); + final long minY = (long) Math.floor(min / precision); + final long maxY = (long) Math.ceil(max / precision); + + double totalArea = 0.0; + for ( long i = minY; i <= maxY; i++ ) { + final double y = i * precision; + double right = Double.NEGATIVE_INFINITY; + + List pairsX = new ArrayList(); + for ( Circle circle : circles ) { + if ( Math.abs(y - circle.centreY) < circle.radius ) { + pairsX.add(horizontalSection(circle, y)); + } + } + Collections.sort(pairsX, (one, two) -> Double.compare(one.x1, two.x1) ); + + for ( PairX pairX : pairsX ) { + if ( pairX.x2 > right ) { + totalArea += pairX.x2 - Math.max(pairX.x1, right); + right = pairX.x2; + } + } + } + return totalArea * precision; + } + + private static PairX horizontalSection(Circle circle, double y) { + final double value = circle.radius * circle.radius - ( y - circle.centreY ) * ( y - circle.centreY ); + final double deltaX = Math.sqrt(value); + return new PairX(circle.centreX - deltaX, circle.centreX + deltaX); + } + + private static record PairX(double x1, double x2) {} + private static record Circle(double centreX, double centreY, double radius) {} + + private static final List circles = List.of( + new Circle( 1.6417233788, 1.6121789534, 0.0848270516), + new Circle(-1.4944608174, 1.2077959613, 1.1039549836), + new Circle( 0.6110294452, -0.6907087527, 0.9089162485), + new Circle( 0.3844862411, 0.2923344616, 0.2375743054), + new Circle(-0.2495892950, -0.3832854473, 1.0845181219), + new Circle( 1.7813504266, 1.6178237031, 0.8162655711), + new Circle(-0.1985249206, -0.8343333301, 0.0538864941), + new Circle(-1.7011985145, -0.1263820964, 0.4776976918), + new Circle(-0.4319462812, 1.4104420482, 0.7886291537), + new Circle( 0.2178372997, -0.9499557344, 0.0357871187), + new Circle(-0.6294854565, -1.3078893852, 0.7653357688), + new Circle( 1.7952608455, 0.6281269104, 0.2727652452), + new Circle( 1.4168575317, 1.0683357171, 1.1016025378), + new Circle( 1.4637371396, 0.9463877418, 1.1846214562), + new Circle(-0.5263668798, 1.7315156631, 1.4428514068), + new Circle(-1.2197352481, 0.9144146579, 1.0727263474), + new Circle(-0.1389358881, 0.1092805780, 0.7350208828), + new Circle( 1.5293954595, 0.0030278255, 1.2472867347), + new Circle(-0.5258728625, 1.3782633069, 1.3495508831), + new Circle(-0.1403562064, 0.2437382535, 1.3804956588), + new Circle( 0.8055826339, -0.0482092025, 0.3327165165), + new Circle(-0.6311979224, 0.7184578971, 0.2491045282), + new Circle( 1.4685857879, -0.8347049536, 1.3670667538), + new Circle(-0.6855727502, 1.6465021616, 1.0593087096), + new Circle( 0.0152957411, 0.0638919221, 0.9771215985) + ); + +} diff --git a/Task/Total-circles-area/Julia/total-circles-area.julia b/Task/Total-circles-area/Julia/total-circles-area.julia index 0b3938fd75..dba0e4c1f9 100644 --- a/Task/Total-circles-area/Julia/total-circles-area.julia +++ b/Task/Total-circles-area/Julia/total-circles-area.julia @@ -31,8 +31,8 @@ function main(xc::Vector{<:Real}, yc::Vector{<:Real}, r::Vector{<:Real}, ngrid:: # Keep a counter. inside = 0 # For every point in my grid. - for x in linspace(xmin, xmax, ngrid), y = linspace(ymin, ymax, ngrid) - inside += any(r2 .> (x - xc) .^ 2 + (y - yc) .^ 2) + for x in LinRange(xmin, xmax, ngrid), y = LinRange(ymin, ymax, ngrid) + inside += any(r2 .> (x .- xc) .^ 2 + (y .- yc) .^ 2) end boxarea = (xmax - xmin) * (ymax - ymin) return boxarea * inside / ngrid ^ 2 diff --git a/Task/Totient-function/SETL/totient-function.setl b/Task/Totient-function/SETL/totient-function.setl new file mode 100644 index 0000000000..b5ee881449 --- /dev/null +++ b/Task/Totient-function/SETL/totient-function.setl @@ -0,0 +1,36 @@ +program totient; + loop for n in [1..1000000] do + tot := totient(n); + if tot = n-1 then prime +:= 1; end if; + + if n <= 25 then + print(lpad(str n, 2), " ", + lpad(str tot, 2), " ", + if tot = n-1 then "prime" else "" end if); + end if; + + if n in [1000,10000,100000,1000000] then + print(lpad(str prime,8), "primes up to" + lpad(str n,8)); + end if; + end loop; + + proc totient(n); + tot := n; + i := 2; + loop while i*i <= n do + if n mod i = 0 then + loop while n mod i = 0 do + n div:= i; + end loop; + tot -:= tot div i; + end if; + if i=2 then i:=3; + else i+:=2; + end if; + end loop; + if n>1 then + tot -:= tot div n; + end if; + return tot; + end proc; +end program; diff --git a/Task/Towers-of-Hanoi/EMal/towers-of-hanoi.emal b/Task/Towers-of-Hanoi/EMal/towers-of-hanoi.emal new file mode 100644 index 0000000000..abc73f4dd7 --- /dev/null +++ b/Task/Towers-of-Hanoi/EMal/towers-of-hanoi.emal @@ -0,0 +1,10 @@ +fun move = void by int n, int from, int to, int via + if n == 1 + writeLine("Move disk from pole " + from + " to pole " + to) + return + end + move(n - 1, from, via, to) + move(1, from, to, via) + move(n - 1, via, to, from) +end +move(3, 1, 2, 3) diff --git a/Task/Towers-of-Hanoi/SETL/towers-of-hanoi.setl b/Task/Towers-of-Hanoi/SETL/towers-of-hanoi.setl new file mode 100644 index 0000000000..e38ebd8b9f --- /dev/null +++ b/Task/Towers-of-Hanoi/SETL/towers-of-hanoi.setl @@ -0,0 +1,12 @@ +program hanoi; + loop for [src, dest] in move(4, 1, 2, 3) do + print("Move disk from pole " + src + " to pole " + dest); + end loop; + + proc move(n, src, via, dest); + if n=0 then return []; end if; + return move(n-1, src, dest, via) + + [[src, dest]] + + move(n-1, via, src, dest); + end proc; +end program; diff --git a/Task/Transliterate-English-text-using-the-Greek-alphabet/Java/transliterate-english-text-using-the-greek-alphabet.java b/Task/Transliterate-English-text-using-the-Greek-alphabet/Java/transliterate-english-text-using-the-greek-alphabet.java new file mode 100644 index 0000000000..ce63f65b55 --- /dev/null +++ b/Task/Transliterate-English-text-using-the-Greek-alphabet/Java/transliterate-english-text-using-the-greek-alphabet.java @@ -0,0 +1,47 @@ +import java.util.List; + +public final class TransliterateEnglishTextUsingTheGreekAlphabet { + + public static void main(String[] args) { + List tests = List.of( + "The quick brown fox jumps over the lazy dog.", // Note: "jumps" not "jumped" + """ + I was looking at some rhododendrons in my back garden, + dressed in my khaki shorts, when the telephone rang. + + As I answered it, I cheerfully glimpsed that the July sun + caused a fragment of black pine wax to ooze on the velvet quilt + laying in my patio.""", + "sphinx of black quartz, judge my vow."); + + String[][] pairs = new String[][] { + { "CH", "Χ" }, { "Ch", "Χ" }, { "ch", "χ" }, { "CK", "Κ" }, { "Ck", "Κ" }, { "ck", "κ" }, + { "EE", "Η" }, { "Ee", "Η" }, { "ee", "η" }, { "KH", "Χ" }, { "Kh", "Χ" }, { "kh", "χ" }, + { "OO", "Ω" }, { "Oo", "Ω" }, { "oo", "ω" }, { "PH", "Φ" }, { "Ph", "Φ" }, { "ph", "ϕ" }, + { "PS", "Ψ" }, { "Ps", "Ψ" }, { "ps", "ψ" }, { "RH", "Ρ" }, { "Rh", "Ρ" }, { "rh", "ρ" }, + { "TH", "Θ" }, { "Th", "Θ" }, { "th", "θ" }, { "A", "Α" }, { "a", "α" }, { "B", "Β" }, + { "b", "β" }, { "C", "Κ" }, { "c", "κ" }, { "D", "Δ" }, { "d", "δ" }, { "E", "Ε" }, { "e", "ε" }, + { "F", "Φ" }, { "f", "ϕ" }, { "G", "Γ" }, { "g", "γ" }, { "H", "Ε" }, { "h", "ε" }, { "I", "Ι" }, + { "i", "ι" }, { "J", "Ι" }, { "j", "ι" }, { "K", "Κ" }, { "k", "κ" }, { "L", "Λ" }, { "l", "λ" }, + { "M", "Μ" }, { "m", "μ" }, { "N", "Ν" }, { "n", "ν" }, { "O", "Ο" }, { "o", "ο" }, { "P", "Π" }, + { "p", "π" }, { "Q", "Κ" }, { "q", "κ" }, { "R", "Ρ" }, { "r", "ρ" }, { "S", "Σ" }, { "s", "σ" }, + { "T", "Τ" }, { "t", "τ" }, { "U", "Υ" }, { "u", "υ" }, { "V", "Β" }, { "v", "β" }, { "W", "Ω" }, + { "w", "ω" }, { "X", "Ξ" }, { "x", "ξ" }, { "Y", "Υ" }, { "y", "υ" }, { "Z", "Ζ" }, { "z", "ζ" } }; + + for ( String test : tests ) { + String greek = test; + for ( int i = 0; i < greek.length(); i++ ) { + if ( greek.charAt(i) == 's' && ! Character.isAlphabetic(greek.charAt(i + 1)) ) { + greek = greek.substring(0, i) + 'ς' + greek.substring(i + 1); + } + } + + for ( String[] pair : pairs ) { + greek = greek.replace(pair[0], pair[1]); + } + System.out.println(test + System.lineSeparator() + " =>" + System.lineSeparator() + greek); + System.out.println("=".repeat(65)); + } + } + +} diff --git a/Task/Tree-traversal/EasyLang/tree-traversal.easy b/Task/Tree-traversal/EasyLang/tree-traversal.easy new file mode 100644 index 0000000000..4495de81f5 --- /dev/null +++ b/Task/Tree-traversal/EasyLang/tree-traversal.easy @@ -0,0 +1,72 @@ +tree[] = [ 1 2 3 4 5 6 -1 7 -1 -1 -1 8 9 ] +# +proc preorder ind . . + if ind > len tree[] or tree[ind] = -1 + return + . + write " " & tree[ind] + preorder ind * 2 + preorder ind * 2 + 1 +. +write "preorder:" +preorder 1 +print "" +# +proc inorder ind . . + if ind > len tree[] or tree[ind] = -1 + return + . + inorder ind * 2 + write " " & tree[ind] + inorder ind * 2 + 1 +. +write "inorder:" +inorder 1 +print "" +# +proc postorder ind . . + if ind > len tree[] or tree[ind] = -1 + return + . + postorder ind * 2 + postorder ind * 2 + 1 + write " " & tree[ind] +. +write "postorder:" +postorder 1 +print "" +# +global tail head queue[] . +proc initqu n . . + len queue[] n + tail = 1 + head = 1 +. +proc enqu v . . + queue[tail] = v + tail = (tail + 1) mod1 len queue[] +. +func dequ . + if head = tail + return -1 + . + h = head + head = (head + 1) mod1 len queue[] + return queue[h] +. +initqu len tree[] +proc levelorder n . . + enqu n + repeat + ind = dequ + until ind = -1 + if ind < len tree[] and tree[ind] <> -1 + write " " & tree[ind] + enqu ind * 2 + enqu ind * 2 + 1 + . + . +. +write "level-order:" +levelorder 1 +print "" diff --git a/Task/Tree-traversal/Elena/tree-traversal.elena b/Task/Tree-traversal/Elena/tree-traversal.elena index dc1fa57b0d..ca89c84ab6 100644 --- a/Task/Tree-traversal/Elena/tree-traversal.elena +++ b/Task/Tree-traversal/Elena/tree-traversal.elena @@ -10,9 +10,9 @@ singleton DummyNode class Node { - rprop int Value; - rprop Node Left; - rprop Node Right; + int Value : rprop; + Node Left : rprop; + Node Right : rprop; constructor new(int value) { @@ -82,7 +82,7 @@ class Node { bool next() = queue.isNotEmpty(); - get() + get Value() { Node item := queue.pop(); Node left := item.Left; diff --git a/Task/Tree-traversal/SETL/tree-traversal.setl b/Task/Tree-traversal/SETL/tree-traversal.setl new file mode 100644 index 0000000000..e599b7215d --- /dev/null +++ b/Task/Tree-traversal/SETL/tree-traversal.setl @@ -0,0 +1,37 @@ +program tree_traversal; + tree := [1, [2, [4, [7]], [5]], [3, [6, [8], [9]]]]; + + print("preorder ", preorder(tree)); + print("inorder ", inorder(tree)); + print("postorder ", postorder(tree)); + print("level-order ", levelorder(tree)); + + proc preorder(tree); + if tree = om then return []; end if; + [item, left, right] := tree; + return [item] + preorder(left) + preorder(right); + end proc; + + proc inorder(tree); + if tree = om then return []; end if; + [item, left, right] := tree; + return inorder(left) + [item] + inorder(right); + end proc; + + proc postorder(tree); + if tree = om then return []; end if; + [item, left, right] := tree; + return postorder(left) + postorder(right) + [item]; + end proc; + + proc levelorder(tree); + items := []; + loop init queue := [tree]; while queue /= [] do + [item, left, right] fromb queue; + items with:= item; + if left /= om then queue with:= left; end if; + if right /= om then queue with:= right; end if; + end loop; + return items; + end proc; +end program; diff --git a/Task/Truth-table/Amazing-Hopper/truth-table-1.hopper b/Task/Truth-table/Amazing-Hopper/truth-table-1.hopper new file mode 100644 index 0000000000..a9e73c8d00 --- /dev/null +++ b/Task/Truth-table/Amazing-Hopper/truth-table-1.hopper @@ -0,0 +1,106 @@ +#include basica/booleanos.h + +#include + + +algoritmo + + variables( R0,R1,R2,R3,R4,T0,T1,T2,T3,T4,T5,T6 ) + + VARS=3 + preparar valores de verdad + + preparar cabecera { + + "A","B","C","|","[A=>B","&","B=>C]","=>","A=>C" + + } enlistar en 'cabecera' + + expresión lógica a evaluar { + + OP=>( A, B ), :: 'R1' + OP=>( B, C ), :: 'R2' + OP&( R1, R2 ), :: 'R0' + OP=>( A, C ), :: 'R3' + OP=>( R0, R3 ) + + } :: 'R4' + + unir columnas( tabla, tabla, separador tabla, R1, R0, R2, R4, R3 ) + + insertar cabecera y desplegar tabla + + /* =============== otro ================== */ + + VARS=2, preparar valores de verdad + + preparar cabecera { + "A","B","|","value: A=>B <=> ~AvB" + } enlistar en 'cabecera' + + expresión lógica a evaluar { + OP<=>( OP=>(A,B), OP|(OP~(A), B) ) + + } :: 'R0' + + unir columnas( tabla, tabla, separador tabla, R0 ) + + insertar cabecera y desplegar tabla + + /* =============== otro ================== */ + + VARS=4, preparar valores de verdad + + preparar cabecera { + "A","B","C","D","|","[~AvB","&","A=>C","&","(B","=>","(C=>D))]","=>","A=>C" + } enlistar en 'cabecera' + expresión lógica a evaluar { + + OP|( OP~(A), B) :: 'R0' + OP=>(A,C) :: 'R1' + OP&( R0, R1 ) :: 'T0' + OP=>( C,D ) :: 'R2' + OP=>( B, R2 ) :: 'T2' + OP&( T0, T2 ) :: 'T3' + OP=>( T3, R1) + + } :: 'T4' + + unir columnas( tabla, tabla, separador tabla, R0, T0,R1, T3, B, T2, R2, T4, R1) + + insertar cabecera y desplegar tabla + + /* =============== otro ================== */ + + VARS=2, preparar valores de verdad + preparar cabecera { + "A","B","~A","~B","A&B","AvB","A^B","A=>B","A<=>B","A~&B","A~vB" + } enlistar en 'cabecera' + + expresión lógica a evaluar { + + OP~(A) :: 'R0' + OP~(B) :: 'R1' + OP&(A,B) :: 'T0' + OP|(A,B) :: 'T1' + OP^(A,B) :: 'T2' + OP=>(A,B) :: 'T3' + OP<=>(A,B) :: 'T4' + OP~&(A,B) :: 'T5' + OP~|(A,B) :: 'T6' + + } + + unir columnas( tabla, tabla, R0,R1,T0,T1,T2,T3,T4, T5, T6) + + insertar cabecera y desplegar tabla + + /* =============== otro ================== */ + + VARS=1, preparar valores de verdad + preparar cabecera { "A","~A" } enlistar en 'cabecera' + + unir columnas( tabla, tabla, OP~(A) ) + + insertar cabecera y desplegar tabla +terminar diff --git a/Task/Truth-table/Amazing-Hopper/truth-table-2.hopper b/Task/Truth-table/Amazing-Hopper/truth-table-2.hopper new file mode 100644 index 0000000000..6093947b23 --- /dev/null +++ b/Task/Truth-table/Amazing-Hopper/truth-table-2.hopper @@ -0,0 +1,69 @@ +/* BOOLEANOS.H */ +#context-free preparaciondedatos + fijar separador (NULO) + + c="" + tamaño binario (VARS) + + #( lpad("0",VARS,"0") ), separar para (tabla) + #( TOTCOMB = 2^VARS ) + iterar para (i=1, #(i< TOTCOMB), ++i) + + i, cambiar a base(2), quitar laterales, mover a 'c', + #( lpad("0",VARS,c) ); separar para (fila) + unir filas ( tabla, tabla, fila ) + + siguiente + + replicar( "|", TOTCOMB ), separar para (separador tabla) + +retornar\\ + +#define A V(1) +#define B V(2) +#define C V(3) +#define D V(4) +#define E V(5) +#define F V(6) +#define G V(7) +#define H V(8) +// etcétera +#define V(_X_) {1}{_X_}loc2;{TOTCOMB}{0}offset2;get(tabla);xtonum + +#define-a :: mov + +#defn OP<=>(_X_,_Y_) #RAND; _V1_#RNDV_=0;_V2_#RNDV_=0;#ATOM#CMPLX;\ + cpy(_V1_#RNDV_);\ + #ATOM#CMPLX;cpy(_V2_#RNDV_);and;{_V1_#RNDV_}not;\ + {_V2_#RNDV_}not;and;or; %RAND; +#defn OP=>(_X_,_Y_) #ATOM#CMPLX;not;#ATOM#CMPLX;or; +#defn OP&(_X_,_Y_) #ATOM#CMPLX;#ATOM#CMPLX;and; +#defn OP|(_X_,_Y_) #ATOM#CMPLX;#ATOM#CMPLX;or; +#defn OP^(_X_,_Y_) #ATOM#CMPLX;#ATOM#CMPLX;xor; +#defn OP~&(_X_,_Y_) #ATOM#CMPLX;#ATOM#CMPLX;nand; +#defn OP~|(_X_,_Y_) #ATOM#CMPLX;#ATOM#CMPLX;nor; +#defn OP~(_X_) #ATOM#CMPLX;not; + +#defn variables(*) #GENCODE $$$*$$$ #LIST={#VOID};#ENDGEN + +#define expresiónlógicaaevaluar {1}do +#synon expresiónlógicaaevaluar prepararcabecera + +#define centrar ;padcenter; + +#define insertarcabeceraydesplegartabla {cabecera}length;\ + mov(LENTABLA); \ + dim (LENTABLA) matriz rellena ("-----",vsep),\ + unir filas ( cabecera, cabecera, vsep,tabla ) \ + {" ",7,cabecera}, convertir a cadena, centrar,\ + mover a 'cabecera'\ + transformar("1","T", transformar("0","F", cabecera)) \ + guardar en 'cabecera',\ + imprimir( cabecera, NL ) + +#define prepararvaloresdeverdad decimales '0' \ + tabla={#VOID}, fila={#VOID}, separador tabla={#VOID},\ + cabecera={#VOID}, TOTCOMB=0, LENTABLA=0,\ + preparacion de datos + +/* EOF */ diff --git a/Task/Truth-table/SETL/truth-table.setl b/Task/Truth-table/SETL/truth-table.setl new file mode 100644 index 0000000000..11e7132d82 --- /dev/null +++ b/Task/Truth-table/SETL/truth-table.setl @@ -0,0 +1,133 @@ +program truth_table; + exprstr := "" +/ command_line; + if exprstr = "" then + print("Enter a Boolean expression on the command line."); + else + showtable(exprstr); + end if; + + proc showtable(exprstr); + if (toks := tokenize(exprstr)) = om then return; end if; + if (bexp := parse(toks)) = om then return; end if; + vars := [v : v in getvars(bexp)]; $ fix the variable order + + $ show table header + tabh := ""; + loop for v in vars do + tabh +:= v + " "; + end loop; + print(tabh +:= "| " + exprstr); + print('-' * #tabh); + + $ show table rows + loop for inst in instantiations(vars) do + loop for v in vars do + putchar(rpad(showbool(inst(v)), #v) + " "); + end loop; + print("| " + showbool(booleval(bexp, inst))); + end loop; + end proc; + + proc showbool(b); return if b then "1" else "0" end if; end proc; + + proc instantiations(vars); + insts := []; + loop for i in [0..2**#vars-1] do + inst := {}; + loop for v in vars do + inst(v) := i mod 2 /= 0; + i div:= 2; + end loop; + insts with:= inst; + end loop; + return insts; + end proc; + + proc booleval(tokens, inst); + stack := []; + loop for token in tokens do + case token of + ("~"): x frome stack; stack with:= not x; + ("&"): y frome stack; x frome stack; stack with:= x and y; + ("|"): y frome stack; x frome stack; stack with:= x or y; + ("^"): y frome stack; x frome stack; stack with:= x /= y; + ("=>"): y frome stack; x frome stack; stack with:= x impl y; + ("0"): stack with:= false; + ("1"): stack with:= true; + else stack with:= inst(token); + end case; + end loop; + answer frome stack; + return answer; + end proc; + + proc getvars(tokens); + return {tok : tok in tokens | to_upper(tok(1)) in "ABCDEFGHIJKLMNOPQRSTUVWXYZ_"}; + end proc; + + proc parse(tokens); + ops := {["~", 4], ["&", 3], ["|", 2], ["^", 2], ["=>", 1]}; + stack := []; + queue := []; + loop for token in tokens do + if token in domain ops then + loop while stack /= [] + and (top := stack(#stack)) /= "(" + and ops(top) > ops(token) do + oper frome stack; + queue with:= oper; + end loop; + stack with:= token; + elseif token = "(" then + stack with:= token; + elseif token = ")" then + loop doing + if stack = [] then + print("Missing (."); + return om; + end if; + oper frome stack; + while oper /= "(" do + queue with:= oper; + end loop; + elseif token(1) in "23456789" then + print("Invalid boolean ", token); + return om; + else + queue with:= token; + end if; + end loop; + + loop while stack /= [] do + oper frome stack; + if oper = "(" then + print("Missing )."); + return om; + end if; + queue with:= oper; + end loop; + return queue; + end proc; + + proc tokenize(s); + varchars := "abcdefghijklmnopqrstuvwxyz"; + varchars +:= to_upper(varchars); + varchars +:= "0123456789_"; + + tokens := []; + + loop doing span(s, " \t\n"); while s /= "" do + if (tok := any(s, "()&|~^")) /= "" $ brackets/single char operators + or (tok := match(s, "=>")) /= "" $ implies (=>) + or (tok := span(s, "0123456789")) /= "" $ numbers + or (tok := span(s, varchars)) /= "" $ variables + then + tokens with:= tok; + else + print("Parse error at", s); + return om; + end if; + end loop; + return tokens; + end proc; +end program; diff --git a/Task/Twelve-statements/EasyLang/twelve-statements.easy b/Task/Twelve-statements/EasyLang/twelve-statements.easy new file mode 100644 index 0000000000..0e802d1d1a --- /dev/null +++ b/Task/Twelve-statements/EasyLang/twelve-statements.easy @@ -0,0 +1,69 @@ +len t[] 12 +func f n . + if n = 1 + return if 12 = 12 + elif n = 2 + for i = 7 to 12 + s += t[i] + . + return if s = 3 + elif n = 3 + for i = 2 step 2 to 12 + s += t[i] + . + return if s = 2 + elif n = 4 + if t[5] = 1 + return if t[6] + t[7] = 2 + . + return 1 + elif n = 5 + for i = 2 to 4 + s += t[i] + . + return if s = 0 + elif n = 6 + for i = 1 step 2 to 11 + s += t[i] + . + return if s = 4 + elif n = 7 + return if t[2] + t[3] = 1 + elif n = 8 + if t[7] = 1 + return if t[5] + t[6] = 2 + . + return 1 + elif n = 9 + for i = 1 to 6 + s += t[i] + . + return if s = 3 + elif n = 10 + return if t[11] + t[12] = 2 + elif n = 11 + for i = 7 to 9 + s += t[i] + . + return if s = 1 + elif n = 12 + for i = 1 to 11 + s += t[i] + . + return if s = 4 + . +. +for tst = 0 to 4095 + h = tst + for i to 12 + t[i] = h mod 2 + h = h div 2 + . + s = 0 + for i to 12 + s += if f i = t[i] + . + if s = 12 + print t[] + . +. diff --git a/Task/Twin-primes/C++/twin-primes.cpp b/Task/Twin-primes/C++/twin-primes-1.cpp similarity index 100% rename from Task/Twin-primes/C++/twin-primes.cpp rename to Task/Twin-primes/C++/twin-primes-1.cpp diff --git a/Task/Twin-primes/C++/twin-primes-2.cpp b/Task/Twin-primes/C++/twin-primes-2.cpp new file mode 100644 index 0000000000..4ee1b30fc8 --- /dev/null +++ b/Task/Twin-primes/C++/twin-primes-2.cpp @@ -0,0 +1,42 @@ +#include +#include +#include +#include +#include + +const uint32_t limit = 1'000'000'000; +std::bitset primes; + +void sieve_primes(uint32_t limit) { + primes.set(); + primes.reset(0); primes.reset(1); + + for ( uint32_t p = 2; p * p <= limit; ++p ) { + if ( primes.test(p) ) { + for ( uint32_t i = p * p; i <= limit; i += p ) { + primes.reset(i); + } + } + } +} + +int main() { + sieve_primes(limit); + + uint32_t target = 10; + uint32_t count = 0; + bool last = false; + bool first = true; + + for ( uint32_t index = 5; index <= limit; index += 2 ) { + last = first; + first = primes[index]; + if ( last && first ) { + count += 1; + } + if ( index + 1 == target ) { + std::cout << std::setw(8) << count << " twin primes below " << index + 1 << std::endl; + target *= 10; + } + } +} diff --git a/Task/Twin-primes/EasyLang/twin-primes.easy b/Task/Twin-primes/EasyLang/twin-primes.easy new file mode 100644 index 0000000000..a9c3c4574e --- /dev/null +++ b/Task/Twin-primes/EasyLang/twin-primes.easy @@ -0,0 +1,31 @@ +fastfunc isprim num . + if num mod 2 = 0 and num > 2 + return 0 + . + i = 3 + while i <= sqrt num + if num mod i = 0 + return 0 + . + i += 2 + . + return 1 +. +func count limit . + p2 = 1 + p3 = 1 + for i = 5 to limit + p3 = p2 + p2 = p1 + p1 = isprim i + if p3 = 1 and p1 = 1 + cnt += 1 + . + . + return cnt +. +n = 1 +for i = 1 to 6 + n *= 10 + print "twin prime pairs < " & n & " : " & count n +. diff --git a/Task/Twin-primes/J/twin-primes.j b/Task/Twin-primes/J/twin-primes.j index 05e25437e5..e684b37cfb 100644 --- a/Task/Twin-primes/J/twin-primes.j +++ b/Task/Twin-primes/J/twin-primes.j @@ -1,9 +1,6 @@ -tp=: 3 : '+/ (*. _2&(|.!.0)) 1 p: i. y' +tp=: (_2 +/@:= 2 -/\ i.&.(p:inv))"0 -NB. 3 : '' explicitly define a "monad" (a one-argument function) -NB. i. y list integers up to the provided argument -NB. 1 p: create list of 0s, 1s where those ints are prime -NB. _2&(|.!.0) "shift" that list to the right by two, filling left side with 0 -NB. (*. g) y create a "hook". "and" together the original and shifted lists -NB. the result will have a 1 only if that i, and i-2, are both prime -NB. +/ sum the and-ed list (get the number of twin pairs) +NB. i.&.(p:inv) generate a list of primes below the given limit +NB. 2 -/\ pairwise subtract adjacent primes (create a list of differences) +NB. _2 +/@:= compare these differences to -2, and +NB. sum up the resulting boolean list (get the number of twin pairs) diff --git a/Task/Twin-primes/Java/twin-primes.java b/Task/Twin-primes/Java/twin-primes-1.java similarity index 100% rename from Task/Twin-primes/Java/twin-primes.java rename to Task/Twin-primes/Java/twin-primes-1.java diff --git a/Task/Twin-primes/Java/twin-primes-2.java b/Task/Twin-primes/Java/twin-primes-2.java new file mode 100644 index 0000000000..83c1c71f5b --- /dev/null +++ b/Task/Twin-primes/Java/twin-primes-2.java @@ -0,0 +1,39 @@ +import java.util.BitSet; + +public final class TwinPrimes { + + public static void main(String[] args) { + final int limit = 1_000_000_000; + sievePrimes(limit); + + int target = 10; + int count = 0; + boolean last = false; + boolean first = true; + + for ( int index = 5; index <= limit; index += 2 ) { + last = first; + first = primes.get(index); + if ( last && first ) { + count += 1; + } + if ( index + 1 == target ) { + System.out.println(String.format("%8d%s%d", count, " twin primes below ", index + 1)); + target *= 10; + } + } + } + + private static void sievePrimes(int aLimit) { + primes = new BitSet(aLimit + 1); + primes.set(2, aLimit + 1); + for ( int i = 2; i <= Math.sqrt(aLimit); i = primes.nextSetBit(i + 1) ) { + for ( int j = i * i; j <= aLimit; j += i ) { + primes.clear(j); + } + } + } + + private static BitSet primes; + +} diff --git a/Task/Twin-primes/Phix/twin-primes-1.phix b/Task/Twin-primes/Phix/twin-primes-1.phix new file mode 100644 index 0000000000..5d30fb164d --- /dev/null +++ b/Task/Twin-primes/Phix/twin-primes-1.phix @@ -0,0 +1,25 @@ +with javascript_semantics +atom t0 = time() +function twin_primes(integer maxp, bool both=true) + integer n = 0, -- result + pn = 2, -- next prime index + p, -- a prime, <= maxp + prev_p = 2 + while true do + p = get_prime(pn) + if both and p>=maxp then exit end if + n += (prev_p = p-2) + if (not both) and p>=maxp then exit end if + prev_p = p + pn += 1 + end while + return n +end function +integer mp = 6 -- prompt_number("Enter limit:") +printf(1,"Twin prime pairs less than %,d: %,d\n",{mp,twin_primes(mp)}) +printf(1,"Twin prime pairs less than %,d: %,d\n",{mp,twin_primes(mp,false)}) +for p=1 to 9 do + integer p10 = power(10,p) + printf(1,"Twin prime pairs less than %,d: %,d\n",{p10,twin_primes(p10)}) +end for +?elapsed(time()-t0) diff --git a/Task/Twin-primes/Phix/twin-primes-2.phix b/Task/Twin-primes/Phix/twin-primes-2.phix new file mode 100644 index 0000000000..128d5dd8a8 --- /dev/null +++ b/Task/Twin-primes/Phix/twin-primes-2.phix @@ -0,0 +1,20 @@ +requires(WINDOWS) +requires(64,true) +include builtins/primesieve.e +atom t0 = time() +integer n = 0, p = 2, prev_p = 2 +function twin_primes(integer maxp, bool both=true) + while true do + if both and p>=maxp then exit end if + n += (prev_p = p-2) + if (not both) and p>=maxp then exit end if + prev_p = p + p = primesieve_next_prime() + end while + return n +end function +for i=1 to 11 do + integer p10 = power(10,i) + printf(1,"Twin prime pairs less than %,d: %,d\n",{p10,twin_primes(p10)}) +end for +?elapsed(time()-t0) diff --git a/Task/Twin-primes/Phix/twin-primes.phix b/Task/Twin-primes/Phix/twin-primes.phix deleted file mode 100644 index bf6d70f9f2..0000000000 --- a/Task/Twin-primes/Phix/twin-primes.phix +++ /dev/null @@ -1,27 +0,0 @@ -(phixonline)--> - with javascript_semantics - atom t0 = time() - function twin_primes(integer maxp, bool both=true) - integer n = 0, -- result - pn = 2, -- next prime index - p, -- a prime, <= maxp - prev_p = 2 - while true do - p = get_prime(pn) - if both and p>=maxp then exit end if - n += (prev_p = p-2) - if (not both) and p>=maxp then exit end if - prev_p = p - pn += 1 - end while - return n - end function - integer mp = 6 -- prompt_number("Enter limit:") - printf(1,"Twin prime pairs less than %,d: %,d\n",{mp,twin_primes(mp)}) - printf(1,"Twin prime pairs less than %,d: %,d\n",{mp,twin_primes(mp,false)}) - for p=1 to 9 do - integer p10 = power(10,p) - printf(1,"Twin prime pairs less than %,d: %,d\n",{p10,twin_primes(p10)}) - end for - ?elapsed(time()-t0) - n ) + + [] 3 from + [ 2 incr + index prime while + index wagstaff prime while + index join + dup size 24 = if end ] + 10 split swap + witheach + [ dup say "p = " echo + wagstaff + say ", w(p) = " echo cr ] + witheach + [ say "p = " echo cr ] diff --git a/Task/Wasteful-equidigital-and-frugal-numbers/C++/wasteful-equidigital-and-frugal-numbers.cpp b/Task/Wasteful-equidigital-and-frugal-numbers/C++/wasteful-equidigital-and-frugal-numbers.cpp new file mode 100644 index 0000000000..506597d1d5 --- /dev/null +++ b/Task/Wasteful-equidigital-and-frugal-numbers/C++/wasteful-equidigital-and-frugal-numbers.cpp @@ -0,0 +1,134 @@ +#include +#include +#include +#include +#include +#include +#include + +enum Category { WASTEFUL, EQUIDIGITAL, FRUGAL }; +const std::vector categories = { Category::WASTEFUL, Category::EQUIDIGITAL, Category::FRUGAL }; + +struct Count { + uint32_t lower_count; + uint32_t upper_count; +}; + +std::vector> factors; + +std::string to_string(const Category& category) { + std::string result; + switch ( category ) { + case Category::WASTEFUL : result = "wasteful"; break; + case Category::EQUIDIGITAL : result = "equidigital"; break; + case Category::FRUGAL : result = "frugal"; break; + } + return result; +} + +/** + * Return the number of digits in the given number written in the given base + */ +uint32_t digit_count(uint32_t number, const uint32_t& base) { + uint32_t result = 0; + while ( number != 0 ) { + result++; + number /= base; + } + return result; +} + +/** + * Return the total number of digits used in the prime factorisation + * of the given number written in the given base + */ +uint32_t factor_count(const uint32_t& number, const uint32_t& base) { + uint32_t result = 0; + for ( const auto& [key, value] : factors[number] ) { + result += digit_count(key, base); + if ( value > 1 ) { + result += digit_count(value, base); + } + } + return result; +} + +/** + * Return the category of the given number written in the given base + */ +Category category(const uint32_t& number, const uint32_t& base) { + const uint32_t digit = digit_count(number, base); + const uint32_t factor = factor_count(number, base); + return ( digit < factor ) ? Category::WASTEFUL : + ( digit > factor ) ? Category::FRUGAL : Category::EQUIDIGITAL; +} + +/** + * Factorise the numbers from 1 (inclusive) to limit (exclusive) + */ +void create_factors(const uint32_t& limit) { + factors.assign(limit, std::unordered_map()); + factors[1].emplace(1, 1); + + for ( uint32_t n = 1; n < limit; ++n ) { + if ( factors[n].empty() ) { + uint64_t n_copy = n; + while ( n_copy < limit ) { + for ( uint64_t i = n_copy; i < limit; i += n_copy ) { + if ( factors[i].find(n) == factors[i].end() ) { + factors[i].emplace(n, 1); + } else { + factors[i][n]++; + } + } + n_copy *= n; + } + } + } +} + +int main() { + create_factors(2'700'000); + + const uint32_t tiny_limit = 50; + const uint32_t lower_limit = 10'000; + const uint32_t upper_limit = 1'000'000; + + for ( uint32_t base : { 10, 11 } ) { + std::unordered_map counts = { { Category::WASTEFUL, Count(0, 0) }, + { Category::EQUIDIGITAL, Count(0, 0) }, { Category::FRUGAL, Count(0,0) } }; + + std::unordered_map> lists = { { Category::WASTEFUL, std::vector() }, + { Category::EQUIDIGITAL, std::vector() }, { Category::FRUGAL, std::vector() } }; + + uint32_t number = 1; + std::cout << "FOR BASE " << base << ":" << std::endl << std::endl; + while ( std::any_of(counts.begin(), counts.end(), + [](const std::pair& pair) { return pair.second.lower_count < lower_limit; }) ) { + Category cat = category(number, base); + if ( counts[cat].lower_count < tiny_limit || counts[cat].lower_count == lower_limit - 1 ) { + lists[cat].emplace_back(number); + } + counts[cat].lower_count++; + if ( number < upper_limit ) { + counts[cat].upper_count++; + } + number++; + } + + for ( const Category& category : categories ) { + std::cout << "First " << tiny_limit << " " + to_string(category) << " numbers:" << std::endl; + for ( uint32_t i = 0; i < tiny_limit; ++i ) { + std::cout << std::setw(4) << lists[category][i] << ( i % 10 == 9 ? "\n" : " " ); + } + std::cout << std::endl; + std::cout << lower_limit << "th " << to_string(category) << " number: " + << lists[category][tiny_limit] << std::endl << std::endl; + } + + std::cout << "For natural numbers less than " << upper_limit << ", the breakdown is as follows:" << std::endl; + std::cout << " Wasteful numbers : " << counts[Category::WASTEFUL].upper_count << std::endl; + std::cout << " Equidigital numbers : " << counts[Category::EQUIDIGITAL].upper_count << std::endl; + std::cout << " Frugal numbers : " << counts[Category::FRUGAL].upper_count << std::endl << std::endl; + } +} diff --git a/Task/Wasteful-equidigital-and-frugal-numbers/Java/wasteful-equidigital-and-frugal-numbers.java b/Task/Wasteful-equidigital-and-frugal-numbers/Java/wasteful-equidigital-and-frugal-numbers.java new file mode 100644 index 0000000000..317b9ce907 --- /dev/null +++ b/Task/Wasteful-equidigital-and-frugal-numbers/Java/wasteful-equidigital-and-frugal-numbers.java @@ -0,0 +1,130 @@ +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +public final class WastefulEquidigitalAndFrugalNumbers { + + public static void main(String[] args) { + createFactors(2_700_000); + + final int tinyLimit = 50; + final int lowerLimit = 10_000; + final int upperLimit = 1_000_000; + + for ( int base : List.of( 10, 11 ) ) { + Map counts = Arrays.stream(Category.values()) + .collect(Collectors.toMap( Function.identity(), value -> new Count(0, 0) )); + Map> lists = Arrays.stream(Category.values()) + .collect(Collectors.toMap( Function.identity(), value -> new ArrayList() )); + + int number = 1; + System.out.println("FOR BASE " + base + ":" + System.lineSeparator()); + while ( counts.values().stream().anyMatch( count -> count.lowerCount < lowerLimit ) ) { + Category category = category(number, base); + Count count = counts.get(category); + if ( count.lowerCount < tinyLimit || count.lowerCount == lowerLimit - 1 ) { + lists.get(category).add(number); + } + count.lowerCount += 1; + if ( number < upperLimit ) { + count.upperCount += 1; + } + number += 1; + } + + for ( Category category : Category.values() ) { + System.out.println("First " + tinyLimit + " " + category + " numbers:"); + for ( int i = 0; i < tinyLimit; i++ ) { + System.out.print(String.format("%4d%s", lists.get(category).get(i), (i % 10 == 9 ? "\n" : " "))); + } + System.out.println(); + System.out.println(lowerLimit + "th " + category + " number: " + lists.get(category).get(tinyLimit)); + System.out.println(); + } + + System.out.println("For natural numbers less than " + upperLimit + ", the breakdown is as follows:"); + System.out.println(" Wasteful numbers : " + counts.get(Category.Wasteful).upperCount); + System.out.println(" Equidigital numbers : " + counts.get(Category.Equidigital).upperCount); + System.out.println(" Frugal numbers : " + counts.get(Category.Frugal).upperCount); + System.out.println(); + } + } + + private enum Category { Wasteful, Equidigital, Frugal } + + /** + * Factorise the numbers from 1 (inclusive) to limit (exclusive) + */ + private static void createFactors(int limit) { + factors = IntStream.rangeClosed(0, limit).boxed() + .map( integer -> new HashMap() ).collect(Collectors.toList()); + factors.get(1).put(1, 1); + + for ( int n = 1; n < limit; n++ ) { + if ( factors.get(n).isEmpty() ) { + long nCopy = n; + while ( nCopy < limit ) { + for ( long i = nCopy; i < limit; i += nCopy ) { + factors.get((int) i).merge(n, 1, Integer::sum); + } + nCopy *= n; + } + } + } + } + + /** + * Return the number of digits in the given number written in the given base + */ + private static int digitCount(int number, int base) { + int result = 0; + while ( number != 0 ) { + result += 1; + number /= base; + } + return result; + } + + /** + * Return the total number of digits used in the prime factorisation + * of the given number written in the given base + */ + private static int factorCount(int number, int base) { + int result = 0; + for ( Map.Entry entry : factors.get(number).entrySet() ) { + result += digitCount(entry.getKey(), base); + if ( entry.getValue() > 1 ) { + result += digitCount(entry.getValue(), base); + } + } + return result; + } + + /** + * Return the category of the given number written in the given base + */ + private static Category category(int number, int base) { + final int digitCount = digitCount(number, base); + final int factorCount = factorCount(number, base); + return ( digitCount < factorCount ) ? Category.Wasteful : + ( digitCount > factorCount ) ? Category.Frugal : Category.Equidigital; + } + + private static class Count { + + public Count(int aLowerCount, int aUpperCount) { + lowerCount = aLowerCount; upperCount = aUpperCount; + } + + private int lowerCount, upperCount; + + } + + private static List> factors; + +} diff --git a/Task/Wilson-primes-of-order-n/EasyLang/wilson-primes-of-order-n.easy b/Task/Wilson-primes-of-order-n/EasyLang/wilson-primes-of-order-n.easy new file mode 100644 index 0000000000..524e8a6c1a --- /dev/null +++ b/Task/Wilson-primes-of-order-n/EasyLang/wilson-primes-of-order-n.easy @@ -0,0 +1,39 @@ +func isprim num . + i = 2 + while i <= sqrt num + if num mod i = 0 + return 0 + . + i += 1 + . + return 1 +. +func is_wilson n p . + if p < n + return 0 + . + prod = 1 + p2 = p * p + for i = 1 to n - 1 + prod = prod * i mod p2 + . + for i = 1 to p - n + prod = prod * i mod p2 + . + prod = (p2 + prod - pow -1 n) mod p2 + if prod = 0 + return 1 + . + return 0 +. +print "n: Wilson primes" +print "-----------------" +for n = 1 to 11 + write n & " " + for p = 3 step 2 to 10099 + if isprim p = 1 and is_wilson n p = 1 + write p & " " + . + . + print "" +. diff --git a/Task/Wilson-primes-of-order-n/J/wilson-primes-of-order-n.j b/Task/Wilson-primes-of-order-n/J/wilson-primes-of-order-n.j new file mode 100644 index 0000000000..849e67588e --- /dev/null +++ b/Task/Wilson-primes-of-order-n/J/wilson-primes-of-order-n.j @@ -0,0 +1,26 @@ + wilson=. 0 = (*:@] | _1&^@[ -~ -~ *&! <:@[)^:<: + + (>: i. 11x) ([ ;"0 wilson"0/ <@# ]) i.&.(p:inv) 11000 +┌──┬───────────────┐ +│1 │5 13 563 │ +├──┼───────────────┤ +│2 │2 3 11 107 4931│ +├──┼───────────────┤ +│3 │7 │ +├──┼───────────────┤ +│4 │10429 │ +├──┼───────────────┤ +│5 │5 7 47 │ +├──┼───────────────┤ +│6 │11 │ +├──┼───────────────┤ +│7 │17 │ +├──┼───────────────┤ +│8 │ │ +├──┼───────────────┤ +│9 │541 │ +├──┼───────────────┤ +│10│11 1109 │ +├──┼───────────────┤ +│11│17 2713 │ +└──┴───────────────┘ diff --git a/Task/Wireworld/Elena/wireworld.elena b/Task/Wireworld/Elena/wireworld.elena index 17a3820be8..5cc684ffbb 100644 --- a/Task/Wireworld/Elena/wireworld.elena +++ b/Task/Wireworld/Elena/wireworld.elena @@ -25,7 +25,7 @@ const int electronTail = 3; wireWorldRuleSet = new RuleSet { - proceed(Space s, int x, int y, ref int retVal) + int proceed(Space s, int x, int y) { int cell := s.at(x, y); @@ -35,23 +35,23 @@ wireWorldRuleSet = new RuleSet int number := s.LiveCell(x, y, electronHead); if (number == 1 || number == 2) { - retVal := electronHead + ^ electronHead } else { - retVal := conductor + ^ conductor } } electronHead { - retVal := electronTail + ^ electronTail } electronTail { - retVal := conductor + ^ conductor } :{ - retVal := cell + ^ cell } } }; @@ -62,12 +62,13 @@ sealed class Model constructor load(string stateString, int maxX, int maxY) { - var strings := stateString.splitBy(newLine).selectBy:(s => s.toArray()).toArray(); + var strings := stateString.splitBy(newLineConstant).selectBy:(s => s.toArray()).toArray(); theSpace := IntMatrixSpace.allocate(maxX, maxY, RuleSet { - proceed(Space s, int x, int y, ref int retVal) + int proceed(Space s, int x, int y) { + int retVal := 0; if (x < strings.Length) { var l := strings[x]; @@ -87,8 +88,9 @@ sealed class Model else { retVal := empty - } + }; + ^ retVal } }) } diff --git a/Task/Wireworld/MiniScript/wireworld.mini b/Task/Wireworld/MiniScript/wireworld.mini new file mode 100644 index 0000000000..0799126f65 --- /dev/null +++ b/Task/Wireworld/MiniScript/wireworld.mini @@ -0,0 +1,97 @@ +colors = [color.black, color.yellow, color.aqua, color.red] +deltas = [[-1,-1], [-1,0], [-1,1], + [ 0,-1], [ 0,1], + [ 1,-1], [ 1,0], [ 1,1]] + +displayGrid = function(grid, td) + for y in range(0, grid.len - 1) + for x in range(0, grid[0].len - 1) + td.setCell x,y, grid[y][x] + end for + end for +end function + +buildGrid = function(s) + lines = s.split(char(13)) + nRows = lines.len + nCols = 0 + for line in lines + if line.len > nCols then nCols = line.len + end for + + grid = [] + emptyRow = [] + for c in range(1,nCols) + emptyRow.push(0) + end for + + for line in lines + row = emptyRow[:] + for i in range(0, line.len - 1) + row[i] = " .Ht".indexOf(line[i]) + end for + grid.push(row) + end for + return grid +end function + +getNewState = function(td, x, y) + cellState = td.cell(x, y) + if cellState == 3 then + return 1 + else if cellState == 2 then + return 3 + else if cellState == 1 then + sum = 0 + for delta in deltas + x1 = x + delta[0] + y1 = y + delta[1] + if td.cell(x1, y1) == 2 then sum += 1 + end for + if sum == 1 or sum == 2 then + return 2 + else + return 1 + end if + end if + return cellState +end function + +clear + +wireWorldProgram = "tH........." + char(13) +wireWorldProgram += ". ." + char(13) +wireWorldProgram += " ..." + char(13) +wireWorldProgram += ". ." + char(13) +wireWorldProgram += "Ht.. ......" +grid = buildGrid(wireWorldProgram) + +// Prepare a tile display +// Generate image used for the tiles from the colors defined above. +img = Image.create(colors.len, 1); +for i in range(0, colors.len - 1) + img.setPixel(i, 0, colors[i]) +end for + +cols = grid[0].len +rows = grid.len +display(4).mode = displayMode.tile +td = display(4) +cSize = 25 +td.cellSize = cSize // size of cells on screen +td.scrollX = -(960 - cols * (cSize + 1)) / 2 +td.scrollY = -(640 - rows * (cSize + 1)) / 2 +td.extent = [cols, rows] +td.overlap = -1 // adds a small gap between cells +td.tileSet = img; td.tileSetTileSize = 1 +td.clear 0 + +while true + displayGrid(grid, td) + for y in range(0, rows - 1) + for x in range(0, cols - 1) + grid[y][x] = getNewState(td, x, y) + end for + end for + wait 0.5 +end while diff --git a/Task/Word-wrap/Elena/word-wrap.elena b/Task/Word-wrap/Elena/word-wrap.elena index ba7a69a556..0cb029e6a3 100644 --- a/Task/Word-wrap/Elena/word-wrap.elena +++ b/Task/Word-wrap/Elena/word-wrap.elena @@ -28,7 +28,7 @@ extension wrapOp { currentWidth := word.Length + 1; - ^ newLine + word + " " + ^ newLineConstant + word + " " } else { diff --git a/Task/Word-wrap/Tailspin/word-wrap.tailspin b/Task/Word-wrap/Tailspin/word-wrap.tailspin new file mode 100644 index 0000000000..7c95ac0299 --- /dev/null +++ b/Task/Word-wrap/Tailspin/word-wrap.tailspin @@ -0,0 +1,22 @@ +templates break&{width:} + composer words + * (*) + rule word: (*) [<'\S'>+] + end words + def chars: [$ -> words]; + @: $chars(first); + [$chars(first~..last)... -> #] -> '$... -> '$;$#10;';$@...;' ! + + when <[](..~($width-$@::length))> do ..|@: ' '; $... -> ..|@: $; + otherwise '$@...;' ! @: $; +end break + +'In olden times when wishing still helped one, there lived a king whose + daughters were all beautiful, but the youngest was so beautiful that the + sun itself, which has seen so much, was astonished whenever it shone in + her face. Close by the king''s castle lay a great dark forest, and under + an old lime-tree in the forest was a well, and when the day was very + warm, the king''s child went out into the forest and sat down by the side + of the cool fountain, and when she was bored she took a golden ball, and + threw it up on high and caught it, and this ball was her favorite + plaything.' -> break&{width: 80} -> !OUT::write diff --git a/Task/Wordiff/C++/wordiff.cpp b/Task/Wordiff/C++/wordiff.cpp new file mode 100644 index 0000000000..eb16dc7835 --- /dev/null +++ b/Task/Wordiff/C++/wordiff.cpp @@ -0,0 +1,112 @@ +#include +#include +#include +#include +#include +#include +#include + +std::vector request_player_names() { + std::vector player_names; + std::string player_name; + for ( uint32_t i = 0; i < 2; ++i ) { + std::cout << "Please enter the player's name: "; + std::getline(std::cin, player_name); + player_names.emplace_back(player_name); + } + return player_names; +} + +bool is_letter_removed(const std::string& previous_word, const std::string& current_word) { + for ( uint64_t i = 0; i < previous_word.length(); ++i ) { + if ( current_word == previous_word.substr(0, i) + previous_word.substr(i + 1) ) { + return true; + } + } + return false; +} + +bool is_letter_added(const std::string& previous_word, const std::string& current_word) { + return is_letter_removed(current_word, previous_word); +} + +bool is_letter_changed(const std::string& previous_word, const std::string& current_word) { + if ( previous_word.length() != current_word.length() ) { + return false; + } + + uint32_t difference_count = 0; + for ( uint64_t i = 0; i < current_word.length(); ++i ) { + difference_count += ( current_word[i] == previous_word[i] ) ? 0 : 1; + } + return difference_count == 1; +} + +bool is_wordiff(const std::string& current_word, + const std::vector& words_used, + const std::vector& dictionary) { + if ( std::find(dictionary.begin(), dictionary.end(), current_word) == dictionary.end() + || std::find(words_used.begin(), words_used.end(), current_word) != words_used.end() ) { + return false; + } + + std::string previous_word = words_used.back(); + return is_letter_changed(previous_word, current_word) + || is_letter_removed(previous_word, current_word) || is_letter_added(previous_word, current_word); +} + +std::vector could_have_entered(const std::vector& words_used, + const std::vector& dictionary) { + std::vector result; + for ( const std::string& word : dictionary ) { + if ( std::find(words_used.begin(), words_used.end(), word) == words_used.end() + && is_wordiff(word, words_used, dictionary) ) { + result.emplace_back(word); + } + } + return result; +} + +int main() { + std::vector dictionary; + std::vector starters; + std::fstream file_stream; + file_stream.open("../unixdict.txt"); + std::string word; + while ( file_stream >> word ) { + dictionary.emplace_back(word); + if ( word.length() == 3 || word.length() == 4 ) { + starters.emplace_back(word); + } + } + + std::random_device rand; + std::mt19937 mersenne_twister(rand()); + std::shuffle(starters.begin(), starters.end(), mersenne_twister); + std::vector words_used; + words_used.emplace_back(starters[0]); + + std::vector player_names = request_player_names(); + bool playing = true; + uint32_t playerIndex = 0; + std::string current_word; + std::cout << "The first word is: " << words_used.back() << std::endl; + + while ( playing ) { + std::cout << player_names[playerIndex] << " enter your word: "; + std::getline(std::cin, current_word); + if ( is_wordiff(current_word, words_used, dictionary) ) { + words_used.emplace_back(current_word); + playerIndex = ( playerIndex == 0 ) ? 1 : 0; + } else { + std::cout << "You have lost the game, " << player_names[playerIndex] << std::endl; + std::vector missed_words = could_have_entered(words_used, dictionary); + std::cout << "You could have entered: ["; + for ( uint64_t i = 0; i < missed_words.size() - 1; ++i ) { + std::cout << missed_words[i] << ", "; + } + std::cout << missed_words.back() << "]" << std::endl; + playing = false; + } + } +} diff --git a/Task/Wordiff/Java/wordiff.java b/Task/Wordiff/Java/wordiff.java new file mode 100644 index 0000000000..819f064b14 --- /dev/null +++ b/Task/Wordiff/Java/wordiff.java @@ -0,0 +1,96 @@ +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Scanner; +import java.util.stream.Collectors; + +public final class Wordiff { + + public static void main(String[] args) throws IOException { + List dictionary = Files.lines(Path.of("unixdict.txt")).toList(); + List starters = dictionary.stream() + .filter( word -> word.length() == 3 || word.length() == 4 ).collect(Collectors.toList()); + Collections.shuffle(starters); + List wordsUsed = new ArrayList(); + wordsUsed.add(starters.get(0)); + + Scanner scanner = new Scanner(System.in); + List playerNames = requestPlayerNames(scanner); + boolean playing = true; + int playerIndex = 0; + System.out.println("The first word is: " + wordsUsed.get(wordsUsed.size() - 1)); + + while ( playing ) { + System.out.println(playerNames.get(playerIndex) + " enter your word: "); + String currentWord = scanner.nextLine(); + if ( isWordiff(currentWord, wordsUsed, dictionary) ) { + wordsUsed.add(currentWord); + playerIndex = ( playerIndex == 0 ) ? 1 : 0; + } else { + System.out.println("You have lost the game, " + playerNames.get(playerIndex)); + System.out.println("You could have entered: " + couldHaveEntered(wordsUsed, dictionary)); + playing = false; + } + } + scanner.close(); + } + + private static boolean isWordiff(String currentWord, List wordsUsed, List dictionary) { + if ( ! dictionary.contains(currentWord) || wordsUsed.contains(currentWord) ) { + return false; + } + + String previousWord = wordsUsed.get(wordsUsed.size() - 1); + return isLetterChanged(previousWord, currentWord) + || isLetterRemoved(previousWord, currentWord) || isLetterAdded(previousWord, currentWord); + } + + private static boolean isLetterRemoved(String previousWord, String currentWord) { + for ( int i = 0; i < previousWord.length(); i++ ) { + if ( currentWord.equals(previousWord.substring(0, i) + previousWord.substring(i + 1)) ) { + return true; + } + } + return false; + } + + private static boolean isLetterAdded(String previousWord, String currentWord) { + return isLetterRemoved(currentWord, previousWord); + } + + private static boolean isLetterChanged(String previousWord, String currentWord) { + if ( previousWord.length() != currentWord.length() ) { + return false; + } + + int differenceCount = 0; + for ( int i = 0; i < currentWord.length(); i++ ) { + differenceCount += ( currentWord.charAt(i) == previousWord.charAt(i) ) ? 0 : 1; + } + return differenceCount == 1; + } + + private static List couldHaveEntered(List wordsUsed, List dictionary) { + List result = new ArrayList(); + for ( String word : dictionary ) { + if ( ! wordsUsed.contains(word) && isWordiff(word, wordsUsed, dictionary) ) { + result.add(word); + } + } + return result; + } + + private static List requestPlayerNames(Scanner scanner) { + List playerNames = new ArrayList(); + for ( int i = 0; i < 2; i++ ) { + System.out.print("Please enter the player's name: "); + String playerName = scanner.nextLine().trim(); + playerNames.add(playerName); + } + return playerNames; + } + +} diff --git a/Task/World-Cup-group-stage/Elena/world-cup-group-stage.elena b/Task/World-Cup-group-stage/Elena/world-cup-group-stage.elena index 22c905ea3a..64dac2ec37 100644 --- a/Task/World-Cup-group-stage/Elena/world-cup-group-stage.elena +++ b/Task/World-Cup-group-stage/Elena/world-cup-group-stage.elena @@ -18,7 +18,7 @@ public singleton program ^ true } - closure() + function() { var points := IntMatrix.allocate(4, 10); diff --git a/Task/Write-float-arrays-to-a-text-file/XPL0/write-float-arrays-to-a-text-file.xpl0 b/Task/Write-float-arrays-to-a-text-file/XPL0/write-float-arrays-to-a-text-file.xpl0 new file mode 100644 index 0000000000..598aa3a20c --- /dev/null +++ b/Task/Write-float-arrays-to-a-text-file/XPL0/write-float-arrays-to-a-text-file.xpl0 @@ -0,0 +1,8 @@ +include xpllib; \for Print +real X, Y; +int N; +[X:= [1., 2., 3., 1e11]; + Y:= [1., 1.4142135623730951, 1.7320508075688772, 316227.76601683791]; + for N:= 0 to 3 do + Print("%1.2g\t%1.4g\n", X(N), Y(N)); +] diff --git a/Task/Yin-and-yang/Dart/yin-and-yang.dart b/Task/Yin-and-yang/Dart/yin-and-yang-1.dart similarity index 100% rename from Task/Yin-and-yang/Dart/yin-and-yang.dart rename to Task/Yin-and-yang/Dart/yin-and-yang-1.dart diff --git a/Task/Yin-and-yang/Dart/yin-and-yang-2.dart b/Task/Yin-and-yang/Dart/yin-and-yang-2.dart new file mode 100644 index 0000000000..59488f37dc --- /dev/null +++ b/Task/Yin-and-yang/Dart/yin-and-yang-2.dart @@ -0,0 +1,36 @@ +import 'dart:math'; +import 'package:flutter/material.dart'; + +Path yinYang(double r, double x, double y, [double th = 1.0]) { + cR(double dY, double radius) => Rect.fromCircle(center: Offset(x, y + dY), radius: radius); + return Path() + ..fillType = PathFillType.evenOdd + ..addOval(cR(0, r + th)) + ..addOval(cR(r / 2, r / 6)) + ..addOval(cR(-r / 2, r / 6)) + ..addArc(cR(0, r), -pi / 2, -pi) + ..addArc(cR(r / 2, r / 2), pi / 2, pi) + ..addArc(cR(-r / 2, r / 2), pi / 2, -pi); +} + +void main() => runApp(const MainApp()); + +class MainApp extends StatelessWidget { + const MainApp({super.key}); + @override + Widget build(BuildContext context) => CustomPaint(painter: YinYangPainter()); +} + +class YinYangPainter extends CustomPainter { + @override + void paint(Canvas canvas, Size size) { + final fill = Paint()..style = PaintingStyle.fill; + canvas + ..drawColor(Colors.white, BlendMode.src) + ..drawPath(yinYang(50.0, 60, 60), fill) + ..drawPath(yinYang(20.0, 140, 30), fill); + } + + @override + bool shouldRepaint(CustomPainter oldDelegate) => true; +} diff --git a/Task/Yin-and-yang/Dart/yin-and-yang-3.dart b/Task/Yin-and-yang/Dart/yin-and-yang-3.dart new file mode 100644 index 0000000000..63a279e248 --- /dev/null +++ b/Task/Yin-and-yang/Dart/yin-and-yang-3.dart @@ -0,0 +1,30 @@ +import 'package:flutter/material.dart'; + +const colors = [Colors.black, Colors.white]; + +Container cR(int iClr, double r, {Widget? child, Clip clip = Clip.none}) => Container( + width: r * 2, + height: r * 2, + decoration: ShapeDecoration(color: colors[iClr], shape: const CircleBorder()), + clipBehavior: clip, + child: Center(child: child)); + +Container yinYang(double r, [double th = 1.0]) => cR(0, r + th, + clip: Clip.hardEdge, + child: cR(1, r, + child: Stack(alignment: Alignment.center, children: [ + Container(color: colors[0], margin: EdgeInsets.only(left: r)), + Column(children: List.generate(2, (i) => cR(1 - i, r / 2, child: cR(i, r / 6)))) + ]))); + +void main() => runApp(const MainApp()); + +class MainApp extends StatelessWidget { + const MainApp({super.key}); + @override + Widget build(BuildContext context) => MaterialApp( + home: Container( + color: colors[1], + padding: const EdgeInsets.all(10), + child: Wrap(children: [yinYang(50), yinYang(20)]))); +} diff --git a/Task/Yin-and-yang/JavaScript/yin-and-yang-4.js b/Task/Yin-and-yang/JavaScript/yin-and-yang-4.js new file mode 100644 index 0000000000..cd8f27b58f --- /dev/null +++ b/Task/Yin-and-yang/JavaScript/yin-and-yang-4.js @@ -0,0 +1,20 @@ +function svgEl(tagName, attrs) { + const el = document.createElementNS('http://www.w3.org/2000/svg', tagName); + for (const key in attrs) el.setAttribute(key, attrs[key]); + return el; +} + +function yinYang(r, x, y, th = 1) { + const cR = (dY, rad) => `M${x},${y + dY + rad} a${rad},${rad},0,1,1,.1,0z `; + const arc = (dY, rad, cw = 1) => `A${rad},${rad},0,0,${cw},${x},${y + dY} `; + const d = cR(0, r + th) + cR(r / 2, r / 6) + cR(-r / 2, r / 6) + + `M${x},${y} ` + arc(r, r / 2, 0) + arc(-r, r) + arc(0, r / 2); + return svgEl('path', {d, 'fill-rule': 'evenodd'}); +} + +const dialog = document.body.appendChild(document.createElement('dialog')); +const svg = dialog.appendChild(svgEl('svg', {width: 170, height: 120})); + +svg.appendChild(yinYang(50.0, 60, 60)); +svg.appendChild(yinYang(20.0, 140, 30)); +dialog.showModal(); diff --git a/Task/Yin-and-yang/JavaScript/yin-and-yang-5.js b/Task/Yin-and-yang/JavaScript/yin-and-yang-5.js new file mode 100644 index 0000000000..9d87d46c3e --- /dev/null +++ b/Task/Yin-and-yang/JavaScript/yin-and-yang-5.js @@ -0,0 +1,18 @@ +function yinYang(r, x, y, th = 1) { + const PI = Math.PI; + const path = new Path2D(); + const cR = (dY, radius) => { path.arc(x, y + dY, radius, 0, PI * 2); path.closePath() }; + cR(0, r + th); + cR(r / 2, r / 6); + cR(-r / 2, r / 6); + path.arc(x, y, r, PI / 2, -PI / 2); + path.arc(x, y - r / 2, r / 2, -PI / 2, PI / 2); + path.arc(x, y + r / 2, r / 2, -PI / 2, PI / 2, true); + return path; +} + +document.documentElement.innerHTML = ''; +const canvasCtx = document.querySelector('canvas').getContext('2d'); + +canvasCtx.fill(yinYang(50.0, 60, 60), 'evenodd'); +canvasCtx.fill(yinYang(20.0, 140, 30), 'evenodd'); diff --git a/Task/Yin-and-yang/SETL/yin-and-yang.setl b/Task/Yin-and-yang/SETL/yin-and-yang.setl new file mode 100644 index 0000000000..99cffa4aae --- /dev/null +++ b/Task/Yin-and-yang/SETL/yin-and-yang.setl @@ -0,0 +1,23 @@ +program yin_yang; + print(taijitu 4); + print(taijitu 8); + + op taijitu(r); + return +/[+/[pixel(x,y,r) : x in [-2*r..2*r]] + "\n" : y in [-r..r]]; + end op; + + proc pixel(x,y,r); + return if circle(x,y,-r/2,r/6) then '#' + elseif circle(x,y,r/2,r/6) then '.' + elseif circle(x,y,-r/2,r/2) then '.' + elseif circle(x,y,r/2,r/2) then '#' + elseif circle(x,y,0,r) then + if x<0 then '.' else '#' end + else ' ' + end; + end proc; + + proc circle(x,c,y,r); + return r*r >= (x/2)**2 + (y-c)**2; + end proc; +end program; diff --git a/Task/Zeckendorf-arithmetic/Elena/zeckendorf-arithmetic.elena b/Task/Zeckendorf-arithmetic/Elena/zeckendorf-arithmetic.elena index 1a7e22c4ae..9d758e4d1b 100644 --- a/Task/Zeckendorf-arithmetic/Elena/zeckendorf-arithmetic.elena +++ b/Task/Zeckendorf-arithmetic/Elena/zeckendorf-arithmetic.elena @@ -45,7 +45,7 @@ sealed struct ZeckendorfNumber dLen := i }; - int v := (dVal $shr (i * 2)) && 3; + int v := (dVal $shr (i * 2)) & 3; v => 0 { ^ self } 1 { ^ self } @@ -61,8 +61,8 @@ sealed struct ZeckendorfNumber } 3 { int tmp := 3 $shl (i * 2); - tmp := tmp.xor(-1); - dVal := dVal && tmp; + tmp := tmp.bxor(-1); + dVal := dVal & tmp; self.b((i+1)*2) }; @@ -89,7 +89,7 @@ sealed struct ZeckendorfNumber } else { - dVal := dVal && (1 $shl pos).Inverted; + dVal := dVal & (1 $shl pos).BInverted; self.b(pos + 1); int arg := pos - ((pos > 1) ? 2 : 1); self.b(/*pos - ((pos > 1) ? 2 : 1)*/arg) @@ -101,9 +101,9 @@ sealed struct ZeckendorfNumber if ((dVal $shr pos).allMask:1) { int tmp := 1 $shl pos; - tmp := tmp.xor(-1); + tmp := tmp.bxor(-1); - dVal := dVal && tmp; + dVal := dVal & tmp; ^ self }; @@ -125,9 +125,12 @@ sealed struct ZeckendorfNumber int mVal := 0; int mLen := 0; - n.readContent(ref dVal, ref dLen); + n.readContent(ref int v, ref int l); m.readContent(ref mVal, ref mLen); + dVal := v; + dLen := l; + for(int GN := 0, GN < (mLen + 1) * 2, GN += 1) { if ((mVal $shr GN).allMask:1) @@ -142,9 +145,12 @@ sealed struct ZeckendorfNumber int mVal := 0; int mLen := 0; - n.readContent(ref dVal, ref dLen); + n.readContent(ref int v, ref int l); m.readContent(ref mVal, ref mLen); + dVal := v; + dLen := l; + for(int GN := 0, GN < (mLen + 1) * 2, GN += 1) { if ((mVal $shr GN).allMask:1) @@ -153,7 +159,7 @@ sealed struct ZeckendorfNumber } }; - while (((dVal $shr (dLen*2)) && 3) == 0 || dLen == 0) + while (((dVal $shr (dLen*2)) & 3) == 0 || dLen == 0) { dLen -= 1 } @@ -161,7 +167,10 @@ sealed struct ZeckendorfNumber internal constructor product(ZeckendorfNumber n, ZeckendorfNumber m) { - n.readContent(ref dVal, ref dLen); + n.readContent(ref int v, ref int l); + + dVal := v; + dLen := l; ZeckendorfNumber Na := m; ZeckendorfNumber Nb := m; @@ -170,7 +179,7 @@ sealed struct ZeckendorfNumber for(int i := 0, i < (dLen + 1) * 2, i += 1) { - if (((dVal $shr i) && 1) > 0) + if (((dVal $shr i) & 1) > 0) { Nr += Nb }; @@ -179,7 +188,10 @@ sealed struct ZeckendorfNumber Na := Nt }; - Nr.readContent(ref dVal, ref dLen); + Nr.readContent(ref v, ref l); + + dVal := v; + dLen := l; } internal constructor newInternal(int v, int l) @@ -193,11 +205,11 @@ sealed struct ZeckendorfNumber if (dVal == 0) { ^ "0" }; - string s := dig1[(dVal $shr (dLen * 2)) && 3]; + string s := dig1[(dVal $shr (dLen * 2)) & 3]; int i := dLen - 1; while (i >= 0) { - s := s + dig[(dVal $shr (i * 2)) && 3]; + s := s + dig[(dVal $shr (i * 2)) & 3]; i-=1 }; diff --git a/Task/Zeckendorf-number-representation/EasyLang/zeckendorf-number-representation.easy b/Task/Zeckendorf-number-representation/EasyLang/zeckendorf-number-representation.easy new file mode 100644 index 0000000000..ed432b91e5 --- /dev/null +++ b/Task/Zeckendorf-number-representation/EasyLang/zeckendorf-number-representation.easy @@ -0,0 +1,29 @@ +proc mkfibs n . fib[] . + fib[] = [ ] + last = 1 + current = 1 + while current <= n + fib[] &= current + nxt = last + current + last = current + current = nxt + . +. +func$ zeckendorf n . + mkfibs n fib[] + for pos = len fib[] downto 1 + if n >= fib[pos] + zeck$ &= "1" + n -= fib[pos] + else + zeck$ &= "0" + . + . + if zeck$ = "" + return "0" + . + return zeck$ +. +for n = 0 to 20 + print " " & n & " " & zeckendorf n +. diff --git a/Task/Zeckendorf-number-representation/MiniScript/zeckendorf-number-representation.mini b/Task/Zeckendorf-number-representation/MiniScript/zeckendorf-number-representation.mini new file mode 100644 index 0000000000..4f53646506 --- /dev/null +++ b/Task/Zeckendorf-number-representation/MiniScript/zeckendorf-number-representation.mini @@ -0,0 +1,27 @@ +fibonacci = function(val) + if val < 1 then return [] + fib = [] + a = 1; b = 2 + while a <= val + fib.insert(0, a) + next = a + b + a = b + b = next + end while + return fib +end function + +zeckendorf = function(val) + seq = fibonacci(val) + s = "" + for i in seq + onOff = val >= i and (s == "" or s[-1] == "0") + s += str(onOff) + val -= (i*onOff) + end for + return s +end function + +for i in range(1, 20) + print [i, zeckendorf(i)] +end for diff --git a/Task/Zhang-Suen-thinning-algorithm/Elena/zhang-suen-thinning-algorithm.elena b/Task/Zhang-Suen-thinning-algorithm/Elena/zhang-suen-thinning-algorithm.elena index dbebf3c049..909e4f4c4d 100644 --- a/Task/Zhang-Suen-thinning-algorithm/Elena/zhang-suen-thinning-algorithm.elena +++ b/Task/Zhang-Suen-thinning-algorithm/Elena/zhang-suen-thinning-algorithm.elena @@ -23,13 +23,13 @@ const string[] image = new string[]{ " ######## ####### ###### ############# ###### ", " "}; -int[][] nbrs = new int[][] +static int[][] nbrs = new int[][] { new int[]{0, -1}, new int[]{1, -1}, new int[]{1, 0}, new int[]{1, 1}, new int[]{0, 1}, new int[]{-1, 1}, new int[]{-1, 0}, new int[]{-1, -1}, new int[]{0, -1} }; -int[][][] nbrGroups = new int[][][] +static int[][][] nbrGroups = new int[][][] { new int[][]{new int[]{0, 2, 4}, new int[]{2, 4, 6}}, new int[][]{new int[]{0, 2, 6}, new int[]{0, 4, 6}} @@ -62,9 +62,9 @@ extension zhangsuenOp : Matrix { int count := 0; - for (int i := 0, i < nbrs.Length, i += 1) + for (int i := 0, i < nbrs.Length - 1, i += 1) { - if (self[r + nbrs[i][1]][c + nbrs[i][0]] == $35) + if (self[r + nbrs[i][1]][c + nbrs[i + 1][0]] == $35) { count += 1 } }; @@ -75,7 +75,7 @@ extension zhangsuenOp : Matrix { int count := 0; - for (int i := 0, i < nbrs.Length, i += 1) + for (int i := 0, i < nbrs.Length - 1, i += 1) { if (self[r + nbrs[i][1]][c + nbrs[i][0]] == $32) { @@ -93,16 +93,14 @@ extension zhangsuenOp : Matrix { int count := 0; var group := nbrGroups[step]; - for(int i := 0, i < 3, i += 1) + for(int i := 0, i < 2, i += 1) { for(int j := 0, j < group[i].Length, j += 1) { var nbr := nbrs[group[i][j]]; if (self[r + nbr[1]][c + nbr[0]] == $32) - { count := count + 1; ^ true }; - - ^ false + { count := count + 1; $break; }; } }; @@ -120,9 +118,9 @@ extension zhangsuenOp : Matrix hasChanged := false; firstStep := firstStep.Inverted; - for(int r := 1, r < self.Rows, r += 1) + for(int r := 1, r < self.Rows - 1, r += 1) { - for(int c := 1, c < self.Columns, c += 1) + for(int c := 1, c < self.Columns - 1, c += 1) { if(self.proceed(r,c,toWhite,firstStep)) { hasChanged := true }