commit 72d218235f7aea602635ec611bb24edc8317b39e Author: Ingy döt Net Date: Wed Jun 28 13:59:20 2023 -0400 Initial framework commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000..26ab3c8d09 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +/Cache/ +/Meta/ +/rosettacode.log diff --git a/.rc b/.rc new file mode 100644 index 0000000000..8b3f01cb57 --- /dev/null +++ b/.rc @@ -0,0 +1,6 @@ +# shellcheck shell=bash disable=2086 + +RCD_ROOT=$(cd "$(dirname "${BASH_SOURCE[0]:-$0}")" && pwd) +PATH=$RCD_ROOT/bin:$PATH + +export PATH RCD_ROOT diff --git a/Conf/lang.yaml b/Conf/lang.yaml new file mode 100644 index 0000000000..556c3865f2 --- /dev/null +++ b/Conf/lang.yaml @@ -0,0 +1,907 @@ +'0815': '.0815' +11l: .11l +1C: .1c +360 Assembly: '.360' +4D: .4d +4DOS Batch: .4dos +6502 Assembly: '.6502' +68000 Assembly: '.68000' +6800 Assembly: '.6800' +80386 Assembly: '.80386' +8051 Assembly: '.8051' +8080 Assembly: '.8080' +8086 Assembly: '.8086' +8 1/2: .8half +8th: .8th +A+: .a+ +AArch64 Assembly: .aarch64 +ABAP: .abap +ACL2: .acl2 +Action!: .action +ActionScript: .as +Acurity Architect: .acurity +Ada: .ada +Agda: .agda +Agda2: .agda2 +Agena: .agena +AHDL: .ahdl +Aikido: .aikido +Aime: .aime +Algae: .algae +ALGOL: .alg +ALGOL 60: .alg +ALGOL 68: .alg +ALGOL-M: .alg +ALGOL W: .alg +Alice ML: .alice +Alore: .alore +Amazing Hopper: .hopper +AmbientTalk: .ambient +AmigaBASIC: .basic +AmigaE: .amiga +AMPL: .ampl +AngelScript: .angel +ANSI BASIC: .basic +ANT: .ant +ANTLR: .antlr +Anyways: .anyways +Apex: .apex +APL: .apl +App Inventor: .app +AppleScript: .applescript +Applesoft BASIC: .basic +Application Master: .app +Apricot: .apricot +Aquarius BASIC: .basic +Arbre: .arbre +Arc: .arc +Arendelle: .arendelle +Argile: .argile +ARM Assembly: .arm +ArnoldC: .arnoldc +Arturo: .arturo +AsciiDots: .asciidots +ASIC: .asic +ASP: .asp +AspectC++: .acpp +AspectJ: .aspectj +ASP.Net: .asp +Assembly: .as +AssemblyScript: .asmscript +Astro: .astro +Asymptote: .asymptote +Atari BASIC: .basic +ATS: .ats +AutoHotkey: .ahk +AutoIt: .autoit +AutoLISP: .l +Avail: .avail +AWK: .awk +Axe: .axe +Axiom: .axiom +Axum: .axum +Ayrch: .ayrch +B: .b +B4J: .b4j +B4X: .b4x +Babel: .pb +BaCon: .bacon +Bait: .bait +Ballerina: .ballerina +Bas: .bas +BASIC: .basic +Basic09: .basic +BASIC256: .basic +Batari Basic: .basic +Batch File: .bat +Battlestar: .battlestar +BBC BASIC: .basic +Bc: .bc +BCPL: .bcpl +Beads: .beads +Beef: .beef +Beeswax: .beeswax +Befunge: .bf +Beta: .beta +Biferno: .biferno +Binary Lambda Calculus: .blc +Bird: .bird +Blade: .blade +Blast: .blast +BLISS: .bliss +BlitzMax: .blitz +BlooP: .bloop +Blue: .blue +Blz: .blz +BML: .bml +Boo: .boo +BootBASIC: .basic +Bori: .bori +BQN: .bqn +Brace: .brace +Bracmat: .bracmat +Brainf***: .bf +Brat: .brat +Brlcad: .brlcad +Burlesque: .blq +C++: .cpp +C: .c +C0H: .c0h +C1R: .c1r +C2: .c2 +C3: .c3 +CafeOBJ: .cafeobj +Caml: .caml +Casio BASIC: .basic +Cat: .cat +CB80: .cb80 +C++/CLI: .cpp +Cduce: .cduce +Cecil: .cecil +Ceylon: .ceylon +CFEngine: .cfengine +Chapel: .chapel +Chef: .chef +Chipmunk Basic: .basic +CHR: .chr +ChucK: .chuck +Cilk++: .cilk++ +Cilk: .cilk +Cind: .cind +Clarion: .clarion +Clay: .clay +Clean: .clean +Clio: .clio +Clipper: .clipper +Clipper/XBase++: .clipper++ +CLIPS: .clips +Clojure: .clj +CLU: .clu +CMake: .cmake +COBOL: .cobol +Cobra: .cobra +Coco: .coco +Coconut: .coconut +CoffeeScript: .coffee +ColdFusion: .cfm +Comal: .comal +Comefrom0x10: .0x10 +Commodore BASIC: .basic +Common Lisp: .lisp +Component Pascal: .pas +Computer/zero Assembly: .0asm +ContextFree: .cf +Coq: .coq +Corescript: .core +Cowgol: .cowgol +Crack: .crack +Craft Basic: .basic +Creative Basic: .basic +Crystal: .crystal +C sharp: .cs +C Shell: .csh +Cubescript: .cube +Curry: .curry +D: .d +Dafny: .dafny +Dao: .dao +Dart: .dart +Datalog: .datalog +DataWeave: .dw +DBL: .dbl +Dc: .dc +DCL: .dcl +DDNC: .ddnc +Delphi: .delphi +Deluge: .deluge +DeviousYarn: .dy +DIBOL-11: .dibol-11 +Diego: .diego +Diesel: .diesel +DIV Games Studio: .dgs +DM: .dm +DMS: .dms +Dodo0: .dodo0 +Draco: .draco +Dragon: .dragon +DUP: .dup +DWScript: .dw +Dyalect: .dyalect +Dylan: .dylan +Dylan.NET: .dylan +E: .e +EasyLang: .easy +EC: .ec +EchoLisp: .l +ECL: .ecl +Ecstasy: .ecstasy +EDSAC order code: .edsac +Eero: .eero +Efene: .efene +Egel: .egel +Egison: .egison +EGL: .egl +EhBASIC: .basic +Eiffel: .e +Ela: .ela +Elan: .elan +ElastiC: .elastic +Elena: .elena +Elisa: .elisa +Elixir: .elixir +ELLA: .ella +Elm: .elm +Emacs Lisp: .l +EMal: .emal +Emojicode: .emojicode +Enguage: .enguage +Epigram: .epigram +Epoxy: .epoxy +Erlang: .erl +ERRE: .erre +Es: .es +ESQL: .esql +Euler: .euler +Euphoria: .euphoria +Excel: .excel +Explore: .explore +Extended BrainF***: .ebf +Ezhil: .ezhil +F: .f +Factor: .factor +Falcon: .falcon +'FALSE': .false +Fan: .fan +Fancy: .fancy +Fantom: .fantom +FAUST: .faust +FBSL: .fbsl +Fe: .fe +FeatureC++: .cpp +Felix: .felix +Fennel: .fennel +Ferite: .ferite +Fermat: .fermat +Fexl: .fexl +Fhidwfe: .fhidwfe +Fish: .fish +FLORA-2: .flora2 +Florid: .florid +FOCAL: .focal +FormulaOne: .f1 +Forth: .fth +Fortran: .f +Fortress: .fortress +FP: .fp +FPI: .fpi +FreeBASIC: .basic +FreeMat: .freemat +Free Pascal/Lazarus: .pas +Frege: .frege +Friendly interactive shell: .fish +Frink: .frink +FRISC Assembly: .frisc +F Sharp: .fs +FTCBASIC: .basic +FunL: .funl +Furor: .furor +Futhark: .futhark +FutureBasic: .basic +FUZE BASIC: .basic +Gambas: .gambas +GAP: .gap +Gastona: .gastona +GB BASIC: .basic +GDScript: .gd +Gecho: .gecho +Gema: .gema +Genie: .genie +Gentee: .gentee +Genyris: .genyris +GEORGE: .george +Gerbil: .gerbil +GFA Basic: .basic +G-fu: .gfu +Glagol: .glagol +GLBasic: .basic +Glee: .glee +Global Script: .global +GlovePIE: .glovepie +GLSL: .glsl +GML: .gml +Gnuplot: .gnuplot +Go!: .go +Go: .go +Goaldi: .goaldi +Golfscript: .golf +Golo: .golo +Goo: .goo +Gosu: .gosu +Grain: .grain +Gri: .gri +Groovy: .groovy +Guile: .guile +Guish: .guish +GUISS: .guiss +GW-BASIC: .basic +Hack: .hack +Halon: .halon +Harbour: .harbour +Hare: .hare +Haskell: .hs +Haxe: .haxe +Heron: .heron +Hexiscript: .hexi +HicEst: .hicest +HLA: .hla +HolyC: .holyc +Hoon: .hoon +Hope: .hope +HPPPL: .hpppl +HQ9+: .hq9+ +Huginn: .huginn +Hy: .hy +HyperTalk: .ht +I: .i +Icon: .icon +IDL: .idl +Idris: .idris +Inform 6: '.inf' +Inform 7: '.inf' +Informix 4GL: .4gl +Inko: .inko +Integer BASIC: .basic +Intercal: .ical +Io: .io +Ioke: .ioke +IPL Loader Config: .ipl +Iptscrae: .iptscrae +Isabelle: .isabelle +IS-BASIC: .basic +IWBASIC: .basic +J: .j +Jabaco: .jabaco +Jack: .jack +Jacquard Loom: .jacquard +Jakt: .jakt +JAMES II/Rule-based Cellular Automata: .james +Janet: .janet +Java: .java +JavaFX Script: .javafx +JavaScript: .js +JCL: .jcl +Jinja: .jinja +JoCaml: .jocaml +JOVIAL: .jovial +Joy: .joy +Jq: .jq +JScript.NET: .jscript +JSE: .jse +Jsish: .jsish +JudoScript: .judo +Julia: .julia +K: .k +Kabap: .kabap +Kamailio Script: .kamailio +KAP: .kap +Kaya: .kaya +Keg: .keg +KeyList Databasing: .keylist +Kite: .kite +Kitten: .kitten +KL1: .kl1 +Klingphix: .klingphix +Klong: .klong +Koka: .koka +KonsolScript: .konsol +Kotlin: .kotlin +KQL: .kql +Ksh: .ksh +L++: .l++ +LabVIEW: .labview +Lambda Prolog: .pro +Lambdatalk: .lambdatalk +Lang: .lang +Lang5: .lang5 +Langur: .langur +Lasso: .lasso +LAST: .last +LaTeX: .tex +Latitude: .latitude +LC2200 Assembly: .lc2200 +LC3 Assembly: .lc3 +LDPL: .ldpl +Lean: .lean +Leon: .leon +LFE: .lfe +Lhogho: .lhogho +Liberty BASIC: .basic +LibreOffice Basic: .basic +LIL: .lil +Lily: .lily +Lilypond: .lily +Limbo: .limbo +Lingo: .lingo +L.in.oleum: .lin +Lisaac: .lisaac +Lisp: .l +Little: .little +Little Man Computer: .lmc +LiveCode: .livecode +LiveScript: .live +LLP: .llp +LLVM: .llvm +Lobster: .lobster +Locomotive Basic: .basic +Loglan82: .loglan82 +Logo: .logo +Logtalk: .logtalk +LOLCODE: .lol +Lolli: .lolli +Lotus 123 Macro Scripting: .lotus123 +LotusScript: .lotus +Lout: .lout +LSE: .lse +LSE64: .lse64 +LSL: .lsl +LSTS: .lsts +Lua: .lua +Lucid: .lucid +Luck: .luck +Luna: .luna +Lush: .lush +Lychen: .lychen +Lygon: .lygon +M2000 Interpreter: .m2000 +M4: .m4 +M680x0: .m680x0 +MACRO-11: .macro11 +MAD: .mad +Make: .make +Malbolge: .malbolge +MANOOL: .manool +Maple: .maple +MAPPER: .mapper +Mathcad: .mathcad +MathCortex: .mathcortex +Mathematica: .math +Mathprog: .math +MATLAB: .m +Maude: .maude +Maxima: .maxima +MAXScript: .max +MBS: .mbs +MDL: .mdl +ME10 macro: .me10 +MEL: .mel +MelonBasic: .basic +Mercury: .mercury +Metafont: .metafont +Metapost: .metapost +MGS: .mgs +Microsoft Small Basic: .basic +Min: .min +MINIL: .minil +Minimal BASIC: .basic +MiniScript: .mini +MiniZinc: .minizinc +MIPS Assembly: .mips +Mirah: .mirah +Miranda: .miranda +MIRC Scripting Language: .mirc +Mirelle: .mirelle +ML: .ml +ML/I: .mli +MLite: .mlite +MMIX: .mmix +Modula-2: .mod2 +Modula-3: .mod3 +Mond: .mond +Monicelli: .monicelli +Monkey: .monkey +Monte: .monte +MontiLang: .monti +MOO: .moo +MoonScript: .moon +Morfa: .morfa +Mosaic: .mosaic +Motoko: .motoko +MPIF90: .mpif90 +MS SQL: .sql +MSSQL: .sql +MSX Basic: .basic +MUF: .muf +MUMPS: .mumps +Myrddin: .myrddin +MyrtleScript: .myrtle +MySQL: .sql +Mython: .mython +Mythryl: .mythryl +Nanoquery: .nanoquery +Nascom BASIC: .basic +NASL: .nasl +NATURAL: .natural +Neat: .neat +Neko: .neko +Nemerle: .nemerle +NESL: .nesl +NetLogo: .netlogo +NetRexx: .netrexx +Never: .never +NewLISP: .l +NewtonScript: .newton +NGS: .ngs +Nial: .nial +Nice: .nice +Nickle: .nickle +Night: .night +Nim: .nim +Nit: .nit +Niue: .niue +Nix: .nix +NLP++: .nlp++ +NOWUT: .nowut +NQP: .nqp +NS-HUBASIC: .basic +NSIS: .nsis +N/t/roff: .ntroff +Nutt: .nutt +Nyquist: .nyquist +OASYS: .oasys +OASYS Assembler: .oasys +Oberon: .oberon +Objeck: .objeck +ObjectIcon: .oi +Objective-C: .m +Object Pascal: .pas +OCaml: .ocaml +Occam: .occam +Octave: .octave +Odin: .odin +Oforth: .fth +Ol: .ol +Omega: .omega +Onyx: .onyx +OOC: .ooc +OOCalc: .oocalc +OoRexx: .rexx +Opa: .opa +OpenC++: .openc++ +OpenEdge/Progress: .openedge +OpenLisp: .l +Openscad: .scad +OPL: .opl +Order: .order +Owl Lisp: .l +OxygenBasic: .basic +Oxygene: .oxy +Oz: .oz +Palo Alto Tiny BASIC: .basic +Panda: .panda +Panoramic: .panoramic +Pare: .pare +PARI/GP: .parigp +Pascal: .pas +PascalABC.NET: .pas +PASM: .pasm +PDP-11 Assembly: .pdp11 +Pebble: .pebble +Peloton: .peloton +Pentium Assembly: .pentium +PeopleCode: .peoplecode +PepsiScript: .pepsi +Peri: .peri +Perl: .pl +Perl5i: .p5i +Perl 6: .pl6 +Peylang: .peylang +Phix: .phix +Phixmonti: .phixmonti +PHL: .phl +PHP: .php +Picat: .picat +PicoLisp: .l +Pict: .pict +Piet: .piet +Pike: .pike +PILOT: .pilot +PIR: .pir +Pixilang: .pixilang +PL/0: .pl0 +Plain English: .plain +PlainTeX: .tex +Plan: .plan +PL/B: .plb +PL/I: .pli +PL/I-80: .pli +PL/M: .plm +PL/pgSQL: .sql +PL/SQL: .sql +PLUS: .plus +PLZ/SYS: .plz +Pointless: .pointless +Polyglot: .polyglot +Pony: .pony +Pop11: .pop11 +Portugol: .portugol +PostScript: .ps +Potion: .potion +POV-Ray: .povray +PowerBASIC: .basic +Powerbuilder: .powerbuilder +PowerPC Assembly: .ppc +PowerShell: .psh +PPL: .ppl +Processing: .processing +Processing Python mode: .processing-py +Processing.R: .processing-r +ProDOS: .dos +Prolog: .pro +PROMAL: .promal +PSQL: .psql +Pure: .pure +PureBasic: .basic +Pure Data: .puredata +Purity: .purity +Pyret: .pyret +Python: .py +Q: .q +QB64: .qb64 +QBasic: .basic +Qi: .qi +.QL: .ql +QL SuperBASIC: .basic +Qore: .qore +Quackery: .quackery +QuakeC: .c +QuickBASIC: .basic +Quill: .quill +Quite BASIC: .basic +Quorum: .quorum +R: .r +Ra: .ra +Racket: .rkt +Raku: .raku +RapidQ: .rapidq +Rapira: .rapira +Rascal: .rascal +RASEL: .rasel +RATFOR: .ratfor +Raven: .raven +REALbasic: .basic +Reason: .reason +REBOL: .rebol +Red: .red +Reduce: .reduce +Refal: .refal +Relation: .relation +ReScript: .re +Retro: .retro +Revolution: .rev +REXX: .rexx +Rhope: .rhope +Rhovas: .rhovas +Ring: .ring +RISC-V Assembly: .asm +RLaB: .rlab +RLSL: .rlsl +Robotic: .robotic +Rockstar: .rockstar +RPG: .rpg +RPGIV: .rpgiv +RPL: .rpl +RPL/2: .rpl2 +RTL/2: .rtl2 +RTSL: .rtsl +Rubylog: .rubylog +Ruby: .rb +Run BASIC: .basic +Rust: .rust +S++: .s++ +Sage: .sage +Salmon: .salmon +SAS: .sas +SASL: .sasl +Sass/SCSS: .sass +Sather: .sa +S-BASIC: .basic +Scala: .scala +Scheme: .ss +Scilab: .scilab +Scratch: .scratch +ScratchScript: .scratch +Script3D: .3d +Script Basic: .basic +ScriptBasic: .basic +Sed: .sed +Seed7: .seed7 +Self: .self +SenseTalk: .sensetalk +SequenceL: .sequencel +SETL: .setl +Setl4: .setl4 +Set lang: .set +Shale: .shale +SheerPower 4GL: .4gl +Shen: .shen +Shiny: .shiny +Sidef: .sidef +SimpleCode: .simplecode +SimpleLang: .simple +SIMPOL: .simpol +Simula: .simula +Sinclair ZX81 BASIC: .basic +Sing: .sing +Sisal: .sisal +Skew: .skew +SkookumScript: .skookum +S-lang: .slang +Slate: .slate +Slope: .slope +Smalltalk: .st +Smart BASIC: .basic +SMEQL: .smeql +SmileBASIC: .basic +Snobol: .sno +SNOBOL4: .sno +SNUSP: .snusp +Soar: .soar +Soda: .soda +SoneKing Assembly: .soneking +SPAD: .spad +SPARC Assembly: .sparc +SparForte: .sparforte +SPARK: .spark +Sparkling: .sparkling +Spin: .spin +SPL: .spl +SPSS: .spss +SQL: .sql +SQL PL: .sql +Squirrel: .nut +SSEM: .ssem +Standard ML: .ml +Star: .star +Stata: .stata +Stax: .stax +StreamIt: .streamit +Suneido: .suneido +Superbase BASIC: .basic +SuperCollider: .sc +Supernova: .supernova +SuperTalk: .supertalk +Swahili: .swahili +Swift: .swift +SWI-Prolog: .pro +Symsyn: .symsyn +SystemVerilog: .v +TailDot: .taildot +Tailspin: .tailspin +TAL: .tal +Tbas: .tbas +Tcl: .tcl +TechBASIC: .basic +Teco: .teco +TeLa: .tela +Tern: .tern +Terra: .terra +Terraform: .terraform +TestML: .tml +Thistle: .thistle +Thyrd: .thyrd +TI-57: .ti57 +TI-83 BASIC: .basic +TI-83 Hex Assembly: .asm +TI-89 BASIC: .basic +Tiny BASIC: .basic +Tiny Craft Basic: .basic +TIS-100: .tis100 +TIScript: .ti +TI SR-56: .tisr56 +TMG: .tmg +Tobbisk: .tobbisk +ToffeeScript: .toffee +Toka: .toka +TorqueScript: .torque +Tosh: .tosh +TPP: .tpp +Transact-SQL: .sql +Transd: .transd +TransFORTH: .fth +Trith: .trith +True BASIC: .basic +TSE SAL: .tse +Turbo-Basic XL: .basic +Turing: .turing +TUSCRIPT: .tu +TutorialD: .tutoriald +Twelf: .twelf +TXR: .txr +Typed Racket: .rkt +TypeScript: .ts +UC++: .uc++ +Ultimate++: .ultimate++ +Unicon: .unicon +Uniface: .uniface +Unison: .unison +UnixPipes: .up +UNIX Shell: .sh +Unlambda: .unlambda +Ursa: .ursa +Ursala: .ursala +UScript: .u +UserRPL: .rpl +UTFool: .utfool +V: .v +Vala: .vala +Vale: .vale +VAX Assembly: .vax +VB6: .vb6 +VBA: .vba +VBScript: .vb +Vedit macro language: .vedit +Verbexx: .verbexx +Verilog: .v +VHDL: .vhdl +Vim Script: .vim +Visual Basic: .vb +Visual Basic .NET: .vb +Visual FoxPro: .fvp +Visual Objects: .vobj +Visual Prolog: .pro +Viua VM assembly: .viua +Vorpal: .vorpal +Vox: .vox +VRML: .vrml +VTL-2: .vtl-2 +V (Vlang): .v +Wart: .wart +WDTE: .wdte +WebAssembly: .wasm +Wee Basic: .basic +Whenever: .whenever +Whitespace: .ws +Wisp: .wisp +WML: .wml +Wollok: .wollok +Woma: .woma +Wortel: .wortel +Wrapl: .wrapl +Wren: .wren +X10: .x10 +X86-64 Assembly: .x86-64 +X86 Assembly: .x86 +Xanadu: .xanadu +XBase: .xbase +XBasic: .basic +XBS: .xbs +XEec: .xeec +XL: .xl +XLISP: .l +Xojo: .xojo +XPath 2.0: .xpath +XPL0: .xpl0 +XProc: .xproc +XProfan: .xprofan +XQuery: .xquery +XS: .xs +XSLT: .xslt +XSLT 1.0: .xslt +XSLT 2.0: .xslt +XTalk: .xtalk +XUL: .xul +Ya: .ya +Yabasic: .basic +Yacas: .yacas +YAMLScript: .ys +Yorick: .yorick +Z80 Assembly: .z80 +ZED: .zed +Zig: .zig +Zkl: .zkl +Zoea: .zoea +Zoea Visual: .zoea +Zonnon: .zonnon +Zoomscript: .zoom +ZPL: .zpl +ZX Spectrum Basic: .basic diff --git a/Conf/task.yaml b/Conf/task.yaml new file mode 100644 index 0000000000..5ffafe7ad6 --- /dev/null +++ b/Conf/task.yaml @@ -0,0 +1,1228 @@ +"100 doors": +"100 prisoners": +"15 puzzle game": +"15 puzzle solver": +"2048": +"21 game": +"24 game": +"24 game/Solve": +"4-rings or 4-squares puzzle": +"99 bottles of beer": +"9 billion names of God the integer": +"A+B": +"Abbreviations, automatic": +"Abbreviations, easy": +"Abbreviations, simple": +"ABC problem": +"Abelian sandpile model": +"Abelian sandpile model/Identity": +"Abstract type": +"Abundant, deficient and perfect number classifications": +"Abundant odd numbers": +"Accumulator factory": +"Achilles numbers": +"Ackermann function": +"Active Directory/Connect": +"Active Directory/Search for a user": +"Active object": +"Add a variable to a class instance at runtime": +"Additive primes": +"Address of a variable": +"ADFGVX cipher": +"AKS test for primes": +"Algebraic data types": +"Align columns": +"Aliquot sequence classifications": +"Almkvist-Giullera formula for pi": +"Almost prime": +"Amb": +"Amicable pairs": +"Anagrams": +"Anagrams/Deranged anagrams": +"Angle difference between two bearings": +"Angles (geometric), normalization and conversion": +"Animate a pendulum": +"Animation": +"Anonymous recursion": +"Anti-primes": +"Append a record to the end of a text file": +"Apply a callback to an array": +"Apply a digital filter (direct form II transposed)": +"Approximate equality": +"Arbitrary-precision integers (included)": +"Archimedean spiral": +"Arena storage pool": +"Arithmetic/Complex": +"Arithmetic derivative": +"Arithmetic evaluation": +"Arithmetic-geometric mean": +"Arithmetic-geometric mean/Calculate Pi": +"Arithmetic/Integer": +"Arithmetic numbers": +"Arithmetic/Rational": +"Array concatenation": +"Array length": +"Arrays": +"Ascending primes": +"ASCII art diagram converter": +"Assertions": +"Associative array/Creation": +"Associative array/Iteration": +"Associative array/Merging": +"Atomic updates": +"Attractive numbers": +"Average loop length": +"Averages/Arithmetic mean": +"Averages/Mean angle": +"Averages/Mean time of day": +"Averages/Median": +"Averages/Mode": +"Averages/Pythagorean means": +"Averages/Root mean square": +"Averages/Simple moving average": +"AVL tree": +"Babbage problem": +"Babylonian spiral": +"Balanced brackets": +"Balanced ternary": +"Barnsley fern": +"Base64 decode data": +"Bell numbers": +"Benford's law": +"Bernoulli numbers": +"Best shuffle": +"Bézier curves/Intersections": +"Bifid cipher": +"Binary digits": +"Binary search": +"Binary strings": +"Bin given limits": +"Bioinformatics/base count": +"Bioinformatics/Global alignment": +"Bioinformatics/Sequence mutation": +"Biorhythms": +"Bitcoin/address validation": +"Bitcoin/public point to address": +"Bitmap": +"Bitmap/Bézier curves/Cubic": +"Bitmap/Bézier curves/Quadratic": +"Bitmap/Bresenham's line algorithm": +"Bitmap/Flood fill": +"Bitmap/Histogram": +"Bitmap/Midpoint circle algorithm": +"Bitmap/PPM conversion through a pipe": +"Bitmap/Read an image through a pipe": +"Bitmap/Read a PPM file": +"Bitmap/Write a PPM file": +"Bitwise IO": +"Bitwise operations": +"Blum integer": +"Boolean values": +"Box the compass": +"Boyer-Moore string search": +"Brace expansion": +"Brazilian numbers": +"Break OO privacy": +"Brilliant numbers": +"Brownian tree": +"Bulls and cows": +"Bulls and cows/Player": +"Burrows–Wheeler transform": +"Caesar cipher": +"Calculating the value of e": +"Calendar": +'Calendar - for "REAL" programmers': +"Calkin-Wilf sequence": +"Call a foreign-language function": +"Call a function": +"Call a function in a shared library": +"Call an object method": +"Camel case and snake case": +"Canny edge detector": +"Canonicalize CIDR": +"Cantor set": +"Carmichael 3 strong pseudoprimes": +"Cartesian product of two or more lists": +"Case-sensitivity of identifiers": +"Casting out nines": +"Catalan numbers": +"Catalan numbers/Pascal's triangle": +"Catamorphism": +"Catmull–Clark subdivision surface": +"Chaocipher": +"Chaos game": +"Character codes": +"Chat server": +"Check input device is a terminal": +"Check Machin-like formulas": +"Check output device is a terminal": +"Checkpoint synchronization": +"Check that file exists": +"Chernick's Carmichael numbers": +"Cheryl's birthday": +"Chinese remainder theorem": +"Chinese zodiac": +"Cholesky decomposition": +"Chowla numbers": +"Church numerals": +"Circles of given radius through two points": +"Circular primes": +"Cistercian numerals": +"Classes": +"Closest-pair problem": +"Closures/Value capture": +"Collections": +"Colorful numbers": +"Color of a screen pixel": +"Color quantization": +"Color wheel": +"Colour bars/Display": +"Colour pinstripe/Display": +"Colour pinstripe/Printer": +"Combinations": +"Combinations and permutations": +"Combinations with repetitions": +"Command-line arguments": +"Comma quibbling": +"Commatizing numbers": +"Comments": +"Compare a list of strings": +"Compare length of two strings": +"Compare sorting algorithms' performance": +"Compiler/AST interpreter": +"Compiler/code generator": +"Compiler/lexical analyzer": +"Compiler/syntax analyzer": +"Compiler/virtual machine interpreter": +"Compile-time calculation": +"Composite numbers k with no single digit factors whose factors are all substrings of k": +"Compound data type": +"Concurrent computing": +"Conditional structures": +"Conjugate transpose": +"Consecutive primes with ascending or descending differences": +"Constrained genericity": +"Constrained random points on a circle": +"Continued fraction": +"Continued fraction/Arithmetic/Construct from rational number": +"Continued fraction/Arithmetic/G(matrix ng, continued fraction n)": +"Convert decimal number to rational": +"Convert seconds to compound duration": +"Convex hull": +"Conway's Game of Life": +"Copy a string": +"Copy stdin to stdout": +"Count in factors": +"Count in octal": +"Count occurrences of a substring": +"Count the coins": +"Cramer's rule": +"CRC-32": +"Create a file": +"Create a file on magnetic tape": +"Create an HTML table": +"Create an object at a given address": +"Create a two-dimensional array at runtime": +"CSV data manipulation": +"CSV to HTML translation": +"Cuban primes": +"Cullen and Woodall numbers": +"Cumulative standard deviation": +"Currency": +"Currying": +"Curzon numbers": +"CUSIP": +"Cut a rectangle": +"Cyclops numbers": +"Cyclotomic polynomial": +"Damm algorithm": +"Date format": +"Date manipulation": +"Day of the week": +"Deal cards for FreeCell": +"Death Star": +"De Bruijn sequences": +"Deceptive numbers": +"Deconvolution/1D": +"Deconvolution/2D+": +"Deepcopy": +"Define a primitive data type": +"Delegates": +"Delete a file": +"Deming's funnel": +"Department numbers": +"Descending primes": +"Detect division by zero": +"Determinant and permanent": +"Determine if a string has all the same characters": +"Determine if a string has all unique characters": +"Determine if a string is collapsible": +"Determine if a string is numeric": +"Determine if a string is squeezable": +"Determine if only one instance is running": +"Determine if two triangles overlap": +"Determine sentence type": +"Dice game probabilities": +"Digital root": +"Digital root/Multiplicative digital root": +"Dijkstra's algorithm": +"Dinesman's multiple-dwelling problem": +"Dining philosophers": +"Disarium numbers": +"Discordian date": +"Display a linear combination": +"Display an outline as a nested table": +"Distance and Bearing": +"Distributed programming": +"Distribution of 0 digits in factorial series": +"Diversity prediction theorem": +"DNS query": +"Documentation": +"Dominoes": +"Doomsday rule": +"Dot product": +"Doubly-linked list/Definition": +"Doubly-linked list/Element definition": +"Doubly-linked list/Element insertion": +"Doubly-linked list/Traversal": +"Dragon curve": +"Draw a clock": +"Draw a cuboid": +"Draw a pixel": +"Draw a rotating cube": +"Draw a sphere": +"Duffinian numbers": +"Dutch national flag problem": +"Dynamic variable names": +"Earliest difference between prime gaps": +"Eban numbers": +"Echo server": +"Eertree": +"Egyptian division": +"EKG sequence convergence": +"Elementary cellular automaton": +"Elementary cellular automaton/Infinite length": +"Elementary cellular automaton/Random number generator": +"Element-wise operations": +"Elliptic curve arithmetic": +"Elliptic Curve Digital Signature Algorithm": +"Emirp primes": +"Empty directory": +"Empty program": +"Empty string": +"Enforced immutability": +"Entropy": +"Entropy/Narcissist": +"Enumerations": +"Environment variables": +"Equal prime and composite sums": +"Equilibrium index": +"Erdős-Nicolas numbers": +"Erdös-Selfridge categorization of primes": +"Esthetic numbers": +"Ethiopian multiplication": +"Euclid-Mullin sequence": +"Euler method": +"Euler's constant 0.5772...": +"Euler's identity": +"Euler's sum of powers conjecture": +"Evaluate binomial coefficients": +"Even or odd": +"Events": +"Evolutionary algorithm": +"Exceptions": +"Exceptions/Catch an exception thrown in a nested call": +"Executable library": +"Execute a Markov algorithm": +"Execute a system command": +"Execute Brain****": +"Execute Computer/Zero": +"Execute HQ9+": +"Execute SNUSP": +"Exponentiation operator": +"Exponentiation order": +"Exponentiation with infix operators in (or operating on) the base": +"Extend your language": +"Extensible prime generator": +"Extreme floating point values": +"Faces from a mesh": +"Factorial": +"Factorial base numbers indexing permutations of a collection": +"Factorial primes": +"Factorions": +"Factors of a Mersenne number": +"Factors of an integer": +"Fairshare between two and more": +"Farey sequence": +"FASTA format": +"Fast Fourier transform": +"Faulhaber's formula": +"Faulhaber's triangle": +"Feigenbaum constant calculation": +"Fermat numbers": +"Fibonacci n-step number sequences": +"Fibonacci sequence": +"Fibonacci word": +"Fibonacci word/fractal": +"File extension is in extensions list": +"File input/output": +"File modification time": +"File size": +"File size distribution": +"Filter": +"Find Chess960 starting position identifier": +"Find common directory path": +"Find duplicate files": +"Find if a point is within a triangle": +"Find largest left truncatable prime in a given base": +"Find limit of recursion": +"Find palindromic numbers in both binary and ternary bases": +"Find the intersection of a line with a plane": +"Find the intersection of two lines": +"Find the last Sunday of each month": +"Find the missing permutation": +"First class environments": +"First-class functions": +"First-class functions/Use numbers analogously": +"First perfect square in base n with n unique digits": +"First power of 2 that has leading decimal digits of 12": +"Fivenum": +"Five weekends": +"Fixed length records": +"FizzBuzz": +"Flatten a list": +"Flipping bits game": +"Flow-control structures": +"Floyd's triangle": +"Floyd-Warshall algorithm": +"Forest fire": +"Fork": +"Formal power series": +"Formatted numeric output": +"Fortunate numbers": +"Forward difference": +"Four bit adder": +"Four is magic": +"Four is the number of letters in the ...": +"Fractal tree": +"Fraction reduction": +"Fractran": +"French Republican calendar": +"FTP": +"Functional coverage tree": +"Function composition": +"Function definition": +"Function frequency": +"Function prototype": +"Fusc sequence": +"Galton box animation": +"Gamma function": +"Gapful numbers": +"Gaussian elimination": +"Gauss-Jordan matrix inversion": +"General FizzBuzz": +"Generate Chess960 starting position": +"Generate lower case ASCII alphabet": +"Generate random chess position": +"Generator/Exponential": +"Generic swap": +"Get system command output": +"Giuga numbers": +"Globally replace text in several files": +"Go Fish": +"Goldbach's comet": +"Golden ratio/Convergence": +"Gotchas": +"Graph colouring": +"Gray code": +"Grayscale image": +"Greatest common divisor": +"Greatest element of a list": +"Greatest subsequential sum": +"Greedy algorithm for Egyptian fractions": +"Greyscale bars/Display": +"Guess the number": +"Guess the number/With feedback": +"Guess the number/With feedback (player)": +"GUI component interaction": +"GUI enabling/disabling of controls": +"GUI/Maximum window dimensions": +"Hailstone sequence": +"Halt and catch fire": +"Hamming numbers": +"Handle a signal": +"Happy numbers": +"Harmonic series": +"Harshad or Niven series": +"Hash from two arrays": +"Hash join": +"Haversine formula": +"Hello world/Graphical": +"Hello world/Line printer": +"Hello world/Newbie": +"Hello world/Newline omission": +"Hello world/Standard error": +"Hello world/Text": +"Hello world/Web server": +"Here document": +"Heronian triangles": +"Hex words": +"Hickerson series of almost integers": +"Higher-order functions": +"Hilbert curve": +"History variables": +"Hofstadter-Conway $10,000 sequence": +"Hofstadter Figure-Figure sequences": +"Hofstadter Q sequence": +"Holidays related to Easter": +"Home primes": +"Honeycombs": +"Horizontal sundial calculations": +"Horner's rule for polynomial evaluation": +"Host introspection": +"Hostname": +"Hough transform": +"HTTP": +"HTTPS": +"HTTPS/Authenticated": +"HTTPS/Client-authenticated": +"Huffman coding": +"Humble numbers": +"Hunt the Wumpus": +"IBAN": +"I before E except after C": +"Identity matrix": +"Idiomatically determine all the characters that can be used for symbols": +"Idiomatically determine all the lowercase and uppercase letters": +"Image convolution": +"Image noise": +"Imaginary base numbers": +"I'm a software engineer, get me out of here": +"Include a file": +"Increasing gaps between consecutive Niven numbers": +"Increment a numerical string": +"Index finite lists of positive integers": +"Infinity": +"Inheritance/Multiple": +"Inheritance/Single": +"Input loop": +"Integer comparison": +"Integer overflow": +"Integer sequence": +"Interactive programming (repl)": +"Intersecting number wheels": +"Introspection": +"Inverted index": +"Inverted syntax": +"ISBN13 check digit": +"Isograms and heterograms": +"Isqrt (integer square root) of X": +"Iterated digits squaring": +"Jacobi symbol": +"Jacobsthal numbers": +"Jaro similarity": +"Jaro-Winkler distance": +"Jensen's Device": +"Jewels and stones": +"Jordan-Pólya numbers": +"JortSort": +"Josephus problem": +"Joystick position": +"JSON": +"Juggler sequence": +"Julia set": +"Jump anywhere": +"Kaprekar numbers": +"K-d tree": +"Kernighans large earthquake problem": +"Keyboard input/Flush the keyboard buffer": +"Keyboard input/Keypress check": +"Keyboard input/Obtain a Y or N response": +"Keyboard macros": +"K-means++ clustering": +"Knapsack problem/0-1": +"Knapsack problem/Bounded": +"Knapsack problem/Continuous": +"Knapsack problem/Unbounded": +"Knight's tour": +"Knuth's algorithm S": +"Knuth shuffle": +"Knuth's power tree": +"Koch curve": +"Kolakoski sequence": +"Kosaraju": +"Kronecker product": +"Kronecker product based fractals": +"Lah numbers": +"Langton's ant": +"Largest int from concatenated ints": +"Largest number divisible by its digits": +"Largest proper divisor of n": +"Last Friday of each month": +"Last letter-first letter": +"Latin Squares in reduced form": +"Law of cosines - triples": +"Leap year": +"Least common multiple": +"Left factorials": +"Legendre prime counting function": +"Leonardo numbers": +"Letter frequency": +"Levenshtein distance": +"Levenshtein distance/Alignment": +"Linear congruential generator": +"List comprehensions": +"List rooted trees": +"Literals/Floating point": +"Literals/Integer": +"Literals/String": +"Logical operations": +"Logistic curve fitting in epidemiology": +"Longest common subsequence": +"Longest common substring": +"Longest increasing subsequence": +"Longest string challenge": +"Long literals, with continuations": +"Long multiplication": +"Long primes": +"Long year": +"Look-and-say sequence": +"Loop over multiple arrays simultaneously": +"Loops/Break": +"Loops/Continue": +"Loops/Do-while": +"Loops/Downward for": +"Loops/For": +"Loops/Foreach": +"Loops/For with a specified step": +"Loops/Increment loop index within loop body": +"Loops/Infinite": +"Loops/Nested": +"Loops/N plus one half": +"Loops/While": +"Loops/With multiple ranges": +"Loops/Wrong ranges": +"Lucas-Lehmer test": +"Lucky and even lucky numbers": +"LU decomposition": +"Ludic numbers": +"Luhn test of credit card numbers": +"Lychrel numbers": +"LZW compression": +"Machine code": +"MAC vendor lookup": +"Mad Libs": +"Magic 8-ball": +"Magic constant": +"Magic squares of doubly even order": +"Magic squares of odd order": +"Magic squares of singly even order": +"Magnanimous numbers": +"Main step of GOST 28147-89": +"Make directory path": +"Mandelbrot set": +"Man or boy test": +"Map range": +"Mastermind": +"Matrix chain multiplication": +"Matrix digital rain": +"Matrix-exponentiation operator": +"Matrix multiplication": +"Matrix transposition": +"Maximum triangle path sum": +"Mayan calendar": +"Mayan numerals": +"Maze generation": +"Maze solving": +"McNuggets problem": +"MD4": +"MD5": +"MD5/Implementation": +"Median filter": +"Meissel–Mertens constant": +"Memory allocation": +"Memory layout of a data structure": +"Menu": +"Merge and aggregate datasets": +"Mertens function": +"Metallic ratios": +"Metaprogramming": +"Metered concurrency": +"Metronome": +"Mian-Chowla sequence": +"Middle three digits": +"Miller–Rabin primality test": +"Mind boggling card trick": +"Minesweeper game": +"Minimal steps down to 1": +"Minimum multiple of m where digital sum equals m": +"Minimum positive multiple in base 10 using only 0 and 1": +"Minkowski question-mark function": +"Möbius function": +"Modified random distribution": +"Modular arithmetic": +"Modular exponentiation": +"Modular inverse": +"Monads/List monad": +"Monads/Maybe monad": +"Monads/Writer monad": +"Monte Carlo methods": +"Monty Hall problem": +"Morse code": +"Motzkin numbers": +"Mouse position": +"Move-to-front algorithm": +"Multi-base primes": +"Multi-dimensional array": +"Multifactorial": +"Multiple distinct objects": +"Multiple regression": +"Multiplication tables": +"Multiplicative order": +"Multisplit": +"Munchausen numbers": +"Munching squares": +"Musical scale": +"Mutex": +"Mutual recursion": +"Named parameters": +"Naming conventions": +"Narcissist": +"Narcissistic decimal number": +"Natural sorting": +"Nautical bell": +"Negative base numbers": +"Nested function": +"Nested templated data": +"Next highest int from digits": +"Nim game": +"Non-continuous subsequences": +"Non-decimal radices/Convert": +"Non-decimal radices/Input": +"Non-decimal radices/Output": +"Nonoblock": +"Nonogram solver": +"Non-transitive dice": +"N-queens problem": +"N-smooth numbers": +"N'th": +"Nth root": +"Null object": +"Number names": +"Number reversal game": +"Numbers which are not the sum of distinct squares": +"Numbers which are the cube roots of the product of their proper divisors": +"Numbers with equal rises and falls": +"Numerical and alphabetical suffixes": +"Numerical integration": +"Numerical integration/Gauss-Legendre Quadrature": +"Numeric error propagation": +"Object serialization": +"Odd word problem": +"Old lady swallowed a fly": +"Old Russian measure of length": +"OLE automation": +"One-dimensional cellular automata": +"One of n lines in a file": +"One-time pad": +"OpenGL": +"OpenWebNet password": +"Operator precedence": +"Optional parameters": +"Order by pair comparisons": +"Order disjoint list items": +"Ordered partitions": +"Ordered words": +"Order two numerical lists": +"Ormiston triples": +"Own digits power sum": +"P-Adic numbers, basic": +"P-Adic square roots": +"Padovan n-step number sequences": +"Padovan sequence": +"Palindrome dates": +"Palindrome detection": +"Palindromic gapful numbers": +"Pancake numbers": +"Pangram checker": +"Paraffins": +"Parallel brute force": +"Parallel calculations": +"Parameterized SQL statement": +"Parametric polymorphism": +"Parse an IP Address": +"Parsing/RPN calculator algorithm": +"Parsing/RPN to infix conversion": +"Parsing/Shunting-yard algorithm": +"Partial function application": +"Particle fountain": +"Partition an integer x into n primes": +"Partition function P": +"Pascal matrix generation": +"Pascal's triangle": +"Pascal's triangle/Puzzle": +"Password generator": +"Pathological floating point problems": +"Peaceful chess queen armies": +"Peano curve": +"Pell numbers": +"Pell's equation": +"Penney's game": +"Pentagram": +"Pentomino tiling": +"Percentage difference between images": +"Percolation/Bond percolation": +"Percolation/Mean cluster density": +"Percolation/Mean run density": +"Percolation/Site percolation": +"Perfect numbers": +"Perfect shuffle": +"Perfect totient numbers": +"Periodic table": +"Peripheral drift illusion": +"Perlin noise": +"Permutations": +"Permutations by swapping": +"Permutations/Derangements": +"Permutations/Rank of a permutation": +"Permutation test": +"Pernicious numbers": +"Phrase reversals": +"Pi": +"Pick random element": +"Pierpont primes": +"Pig the dice game": +"Pig the dice game/Player": +"Pinstripe/Display": +"Pinstripe/Printer": +"Pisano period": +"Plasma effect": +"Playfair cipher": +"Playing cards": +"Play recorded sounds": +"Plot coordinate pairs": +"Pointers and references": +"Poker hand analyser": +"Polymorphic copy": +"Polymorphism": +"Polynomial long division": +"Polynomial regression": +"Polyspiral": +"Population count": +"Power set": +"Pragmatic directives": +"Price fraction": +"Primality by trial division": +"Primality by Wilson's theorem": +"Prime conspiracy": +"Prime decomposition": +"Prime numbers whose neighboring pairs are tetraprimes": +"Primes - allocate descendants to their ancestors": +"Prime triangle": +"Primorial numbers": +"Priority queue": +"Probabilistic choice": +"Problem of Apollonius": +"Program name": +"Program termination": +"Proper divisors": +"Pseudo-random numbers/Combined recursive generator MRG32k3a": +"Pseudo-random numbers/Middle-square method": +"Pseudo-random numbers/PCG32": +"Pseudo-random numbers/Splitmix64": +"Pseudo-random numbers/Xorshift star": +"P-value correction": +"Pythagoras tree": +"Pythagorean quadruples": +"Pythagorean triples": +"QR decomposition": +"Quaternion type": +"Queue/Definition": +"Queue/Usage": +"Quickselect algorithm": +"Quine": +"Quoting constructs": +"Radical of an integer": +"Ramanujan primes/twins": +"Ramanujan's constant": +"Ramer-Douglas-Peucker line simplification": +"Random Latin squares": +"Random number generator (device)": +"Random number generator (included)": +"Random numbers": +"Random sentence from book": +"Range consolidation": +"Range expansion": +"Range extraction": +"Ranking methods": +"Rare numbers": +"Rate counter": +"Ray-casting algorithm": +"RCRPG": +"Read a configuration file": +"Read a file character by character/UTF8": +"Read a file line by line": +"Read a specific line from a file": +"Read entire file": +"Real constants and functions": +"Recaman's sequence": +"Record sound": +"Reduced row echelon form": +"Reflection/Get source": +"Reflection/List methods": +"Reflection/List properties": +"Regular expressions": +"Remove duplicate elements": +"Remove lines from a file": +"Rename a file": +"Rendezvous": +"Repeat": +"Repeat a string": +"Rep-string": +"Repunit primes": +"Resistor mesh": +"Respond to an unknown method call": +"Retrieve and search chat history": +"Return multiple values": +"Reverse a string": +"Reverse words in a string": +"Rhonda numbers": +"RIPEMD-160": +"Rock-paper-scissors": +"Roman numerals/Decode": +"Roman numerals/Encode": +"Roots of a function": +"Roots of a quadratic function": +"Roots of unity": +"Rosetta Code/Count examples": +"Rosetta Code/Find bare lang tags": +"Rosetta Code/Find unimplemented tasks": +"Rosetta Code/Fix code tags": +"Rosetta Code/Rank languages by number of users": +"Rosetta Code/Rank languages by popularity": +"Rot-13": +"RPG attributes generator": +"RSA code": +"Runge-Kutta method": +"Run-length encoding": +"Runtime evaluation": +"Runtime evaluation/In an environment": +"Ruth-Aaron numbers": +"Safe addition": +"Safe primes and unsafe primes": +"Sailors, coconuts and a monkey problem": +"Same fringe": +"Scope/Function names and labels": +"Scope modifiers": +"Search a list": +"Search a list of records": +"Search in paragraph's text": +"Secure temporary file": +"SEDOLs": +"Selectively replace multiple instances of a character within a string": +"Self-describing numbers": +"Self numbers": +"Semiprime": +"Semordnilap": +"Send an unknown method call": +"Send email": +"Sequence: nth number with exactly n divisors": +"Sequence of non-squares": +"Sequence of primes by trial division": +"Sequence of primorial primes": +"Sequence: smallest number greater than previous term with exactly n divisors": +"Sequence: smallest number with exactly n divisors": +"Set": +"Set consolidation": +"Set of real numbers": +"Set puzzle": +"Set right-adjacent bits": +"Seven-sided dice from five-sided dice": +"S-expressions": +"Sexy primes": +"SHA-1": +"SHA-256": +"SHA-256 Merkle tree": +"Shell one-liner": +"Shoelace formula for polygonal area": +"Short-circuit evaluation": +"Shortest common supersequence": +"Show ASCII table": +"Show the epoch": +"Sierpinski arrowhead curve": +"Sierpinski carpet": +"Sierpinski pentagon": +"Sierpinski square curve": +"Sierpinski triangle": +"Sierpinski triangle/Graphical": +"Sieve of Eratosthenes": +"Sieve of Pritchard": +"Simple database": +"Simple turtle graphics": +"Simple windowed application": +"Simulate input/Keyboard": +"Simulate input/Mouse": +"Singleton": +"Singly-linked list/Element definition": +"Singly-linked list/Element insertion": +"Singly-linked list/Traversal": +"Singular value decomposition": +"Sisyphus sequence": +"Sleep": +"Sleeping Beauty problem": +"Smallest number k such that k+2^m is composite for all m less than k": +"Smarandache prime-digital sequence": +"Smarandache-Wellin primes": +"Smith numbers": +"Snake": +"SOAP": +"Sockets": +"Sokoban": +"Soloway's recurring rainfall": +"Solve a Hidato puzzle": +"Solve a Holy Knight's tour": +"Solve a Hopido puzzle": +"Solve a Numbrix puzzle": +"Solve the no connection puzzle": +"Sort a list of object identifiers": +"Sort an array of composite structures": +"Sort an integer array": +"Sort an outline at every level": +"Sort disjoint sublist": +"Sorting algorithms/Bead sort": +"Sorting algorithms/Bogosort": +"Sorting algorithms/Bubble sort": +"Sorting Algorithms/Circle Sort": +"Sorting algorithms/Cocktail sort": +"Sorting algorithms/Cocktail sort with shifting bounds": +"Sorting algorithms/Comb sort": +"Sorting algorithms/Counting sort": +"Sorting algorithms/Gnome sort": +"Sorting algorithms/Heapsort": +"Sorting algorithms/Insertion sort": +"Sorting algorithms/Merge sort": +"Sorting algorithms/Pancake sort": +"Sorting algorithms/Patience sort": +"Sorting algorithms/Permutation sort": +"Sorting algorithms/Quicksort": +"Sorting algorithms/Radix sort": +"Sorting algorithms/Selection sort": +"Sorting algorithms/Shell sort": +"Sorting algorithms/Sleep sort": +"Sorting algorithms/Stooge sort": +"Sorting algorithms/Strand sort": +"Sort numbers lexicographically": +"Sort stability": +"Sort three variables": +"Sort using a custom comparator": +"Soundex": +"Sparkline in unicode": +"Special characters": +"Special variables": +"Speech synthesis": +"Spelling of ordinal numbers": +"Sphenic numbers": +"Spinning rod animation/Text": +"Spiral matrix": +"Split a character string based on change of character": +"SQL-based authentication": +"Square but not cube": +"Square form factorization": +"Square-free integers": +"Stable marriage problem": +"Stack": +"Stack traces": +"Stair-climbing puzzle": +"Start from a main routine": +"State name puzzle": +"Statistics/Basic": +"Statistics/Normal distribution": +"Steffensen's method": +"Stem-and-leaf plot": +"Stern-Brocot sequence": +"Stirling numbers of the first kind": +"Stirling numbers of the second kind": +"Straddling checkerboard": +"Strassen's algorithm": +"Stream merge": +"String append": +"String case": +"String comparison": +"String concatenation": +"String interpolation (included)": +"String length": +"String matching": +"String prepend": +"Strip a set of characters from a string": +"Strip block comments": +"Strip comments from a string": +"Strip control codes and extended characters from a string": +"Strip whitespace from a string/Top and tail": +"Strong and weak primes": +"Subleq": +"Substitution cipher": +"Substring": +"Substring/Top and tail": +"Subtractive generator": +"Successive prime differences": +"Sudan function": +"Sudoku": +"Suffixation of decimal numbers": +"Sum and product of an array": +"Sum and product puzzle": +"Sum digits of an integer": +"Summarize and say sequence": +"Summarize primes": +"Sum multiples of 3 and 5": +"Sum of a series": +"Sum of elements below main diagonal of matrix": +"Sum of squares": +"Sum to 100": +"Super-d numbers": +"Superellipse": +"Superpermutation minimisation": +"Sutherland-Hodgman polygon clipping": +"Sylvester's sequence": +"Symmetric difference": +"Synchronous concurrency": +"System time": +"Table creation/Postal addresses": +"Take notes on the command line": +"Tarjan": +"Tau function": +"Tau number": +"Taxicab numbers": +"Teacup rim text": +"Temperature conversion": +"Terminal control/Clear the screen": +"Terminal control/Coloured text": +"Terminal control/Cursor movement": +"Terminal control/Cursor positioning": +"Terminal control/Dimensions": +"Terminal control/Display an extended character": +"Terminal control/Hiding the cursor": +"Terminal control/Inverse video": +"Terminal control/Positional read": +"Terminal control/Preserve screen": +"Terminal control/Ringing the terminal bell": +"Terminal control/Unicode output": +"Ternary logic": +"Test a function": +"Test integerness": +"Textonyms": +"Text processing/1": +"Text processing/2": +"Text processing/Max licenses in use": +"The Name Game": +"The sieve of Sundaram": +"The Twelve Days of Christmas": +"Thiele's interpolation formula": +"Thue-Morse": +"Tic-tac-toe": +"Time a function": +"Tokenize a string": +"Tokenize a string with escaping": +"Tonelli-Shanks algorithm": +"Topic variable": +"Topological sort": +"Top rank per group": +"Topswops": +"Total circles area": +"Totient function": +"Towers of Hanoi": +"Trabb Pardo–Knuth algorithm": +"Transliterate English text using the Greek alphabet": +"Tree datastructures": +"Tree from nesting levels": +"Tree traversal": +"Trigonometric functions": +"Tropical algebra overloading": +"Truncatable primes": +"Truncate a file": +"Truth table": +"Twelve statements": +"Twin primes": +"Two bullet roulette": +"Two's complement": +"Ukkonen’s suffix tree construction": +"Ulam spiral (for primes)": +"Ultra useful primes": +"Unbias a random generator": +"Undefined values": +"Unicode strings": +"Unicode variable names": +"Universal Turing machine": +"Unix/ls": +"Unprimeable numbers": +"Untouchable numbers": +"UPC": +"Update a configuration file": +"URL decoding": +"URL encoding": +"URL parser": +"Use another language to call a function": +"User input/Graphical": +"User input/Text": +"UTF-8 encode and decode": +"Validate International Securities Identification Number": +"Vampire number": +"Van der Corput sequence": +"Van Eck sequence": +"Variable declaration reset": +"Variable-length quantity": +"Variables": +"Variable size/Get": +"Variable size/Set": +"Variadic function": +"Vector": +"Vector products": +"Verhoeff algorithm": +"Verify distribution uniformity/Chi-squared test": +"Verify distribution uniformity/Naive": +"Video display modes": +"Vigenère cipher": +"Vigenère cipher/Cryptanalysis": +"Visualize a tree": +"Vogel's approximation method": +"Voronoi diagram": +"Wagstaff primes": +"Walk a directory/Non-recursively": +"Walk a directory/Recursively": +"War card game": +"Wasteful, equidigital and frugal numbers": +"Water collected between towers": +"Web scraping": +"Weird numbers": +"Wieferich primes": +"Wilson primes of order n": +"Window creation": +"Window creation/X11": +"Window management": +"Wireworld": +"Word frequency": +"Wordiff": +"Word ladder": +"Word search": +"Word wheel": +"Word wrap": +"World Cup group stage": +"Write entire file": +"Write float arrays to a text file": +"Write language name in 3D ASCII": +"Write to Windows event log": +"Xiaolin Wu's line algorithm": +"XML/DOM serialization": +"XML/Input": +"XML/Output": +"XML/XPath": +"Yahoo! search interface": +"Y combinator": +"Yellowstone sequence": +"Yin and yang": +"Zebra puzzle": +"Zeckendorf arithmetic": +"Zeckendorf number representation": +"Zero to the zero power": +"Zhang-Suen thinning algorithm": +"Zig-zag matrix": +"Zumkeller numbers": diff --git a/Makefile b/Makefile new file mode 100644 index 0000000000..230b0a7405 --- /dev/null +++ b/Makefile @@ -0,0 +1,9 @@ +SHELL := bash + +default: + +build: + time rosettacode sync + +clean: + $(RM) -r Meta/ rosettacode.log diff --git a/ReadMe.md b/ReadMe.md new file mode 100644 index 0000000000..74312994f4 --- /dev/null +++ b/ReadMe.md @@ -0,0 +1,88 @@ +RosettaCode Data Project +======================== + +This git repository contains (almost) all of the code samples available on +http://rosettacode.org organized by Language and Task. + + +## Getting the Data + +All of the data is in this repository, so you can just run: + + git clone https://github.com/acmeism/RosettaCodeData + +*However...* + +It's a lot of data! + +If you just want the latest data, the quickest thing to do is: + + git clone https://github.com/acmeism/RosettaCodeData --single-branch --depth=1 + + +## Tools + +This repository's data content is created by a Perl program called +`rosettacode`. + +You can install it with this command: + + cpanm RosettaCode + +You can rebuild the data with: + + make build + + +This repository has a `bin` directory with various tools for working with the +data. + +* `rcd-api-list-all-langs` + + List all the programming language names directly from rosettacode.org + +* `rcd-api-list-all-tasks` + + List all the programming task names directly from rosettacode.org + +* `rcd-new-langs` + + List the RosettaCode languages not yet add to Conf + +* `rcd-new-tasks` + + List the RosettaCode tasks not yet add to Conf + +* `rcd-samples-per-lang` + + Show the number of code samples per language + +* `rcd-samples-per-task` + + Show the number of code samples per task + +* `rcd-tasks-per-lang` + + Show the number of tasks with code samples per language + +* `rcd-langs-per-task` + + Show the number of languages with code samples per task + + +## To Do + +Pull requests welcome! + +This project is not a perfect representation of RosettaCode yet. +It has a few uncicode issues. +It also has to deal with various formatting mistakes in the mediawiki source +pages. + +* Fix bugs + +* Support names with non-ascii characters + +* Add more bin tools + +* Address errors reported in rosettacode.log after running `make build` diff --git a/bin/rcd-api-list-all-langs b/bin/rcd-api-list-all-langs new file mode 100755 index 0000000000..85815aa2d0 --- /dev/null +++ b/bin/rcd-api-list-all-langs @@ -0,0 +1,29 @@ +#!/usr/bin/env bash + +set -e -u -o pipefail + +params=( + action=query + list=categorymembers + cmtitle=Category%3AProgramming_Languages + cmprop=title + cmlimit=1500 + format=json +) + +url=https://rosettacode.org/w/api.php?$(IFS='&'; echo "${params[*]}") + +more='' + +while true; do + json=$(curl -s "$url$more") + + <<<"$json" jq -r '.query .categorymembers | .[] .title' | + grep -E '^Category:[.a-zA-Z0-9]' | + sed 's/^Category://' + + cmcontinue=$(<<<"$json" jq -r .continue.cmcontinue) + [[ $cmcontinue == null ]] && break + + more="&cmcontinue=$cmcontinue" +done diff --git a/bin/rcd-api-list-all-tasks b/bin/rcd-api-list-all-tasks new file mode 100755 index 0000000000..bc1094241b --- /dev/null +++ b/bin/rcd-api-list-all-tasks @@ -0,0 +1,27 @@ +#!/usr/bin/env bash + +set -e -u -o pipefail + +params=( + action=query + list=categorymembers + cmtitle=Category%3AProgramming_Tasks + cmprop=title + cmlimit=1500 + format=json +) + +url=https://rosettacode.org/w/api.php?$(IFS='&'; echo "${params[*]}") + +more='' + +while true; do + json=$(curl -s "$url$more") + + <<<"$json" jq -r '.query .categorymembers | .[] .title' + + cmcontinue=$(<<<"$json" jq -r .continue.cmcontinue) + [[ $cmcontinue == null ]] && break + + more="&cmcontinue=$cmcontinue" +done diff --git a/bin/rcd-langs-per-task b/bin/rcd-langs-per-task new file mode 100755 index 0000000000..674fab3653 --- /dev/null +++ b/bin/rcd-langs-per-task @@ -0,0 +1,18 @@ +#!/usr/bin/env bash + +set -e -u -o pipefail + +root=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd -P) + +cd "$root" + +total=0 + +for task in Task/*; do + count=$(find "$task" -type d | wc -l) + count=$((count-1)) + printf '%06d %s\n' "$count" "${task#Task/}" + total=$((total+count)) +done + +printf '%06d %s\n' "$total" Total diff --git a/bin/rcd-new-langs b/bin/rcd-new-langs new file mode 100755 index 0000000000..817c84bf3a --- /dev/null +++ b/bin/rcd-new-langs @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +set -e -u -o pipefail + +root=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd -P) + +cd "$root" + +bin/rcd-api-list-all-langs | +while read -r lang; do + re=${lang//\\/\\\\} + re=${re//+/\\+} + re=${re//\*/\\*} + re=${re//\(/\\\(} + grep -Eq "^'?$re'?: '?\." Conf/lang.yaml || + echo "$lang" +done | + grep -Ev '([éæ:]|Languages by Feature|Programming Language|Oberon-2|Free Pascal)' || + true diff --git a/bin/rcd-new-tasks b/bin/rcd-new-tasks new file mode 100755 index 0000000000..aae5cf47bf --- /dev/null +++ b/bin/rcd-new-tasks @@ -0,0 +1,18 @@ +#!/usr/bin/env bash + +set -e -u -o pipefail + +root=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd -P) + +cd "$root" + +bin/rcd-api-list-all-tasks | +while read -r lang; do + re=${lang//\\/\\\\} + re=${re//+/\\+} + re=${re//\*/\\*} + re=${re//\(/\\\(} + grep -Eq "^\"$re\":$" Conf/task.yaml || + echo "$lang" +done | + grep -v '[^"$^]' diff --git a/bin/rcd-samples-per-lang b/bin/rcd-samples-per-lang new file mode 100755 index 0000000000..f16d88e6d6 --- /dev/null +++ b/bin/rcd-samples-per-lang @@ -0,0 +1,17 @@ +#!/usr/bin/env bash + +set -e -u -o pipefail + +root=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd -P) + +cd "$root" + +total=0 + +for lang in Lang/*; do + count=$(find -L "$lang" -type f -not -name '00-*' | wc -l) + printf '%06d %s\n' "$count" "${lang#Lang/}" + total=$((total+count)) +done + +printf '%06d %s\n' "$total" Total diff --git a/bin/rcd-samples-per-task b/bin/rcd-samples-per-task new file mode 100755 index 0000000000..f6a5704e60 --- /dev/null +++ b/bin/rcd-samples-per-task @@ -0,0 +1,17 @@ +#!/usr/bin/env bash + +set -e -u -o pipefail + +root=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd -P) + +cd "$root" + +total=0 + +for task in Task/*; do + count=$(find "$task" -type f -not -name '00-*' | wc -l) + printf '%06d %s\n' "$count" "${task#Task/}" + total=$((total+count)) +done + +printf '%06d %s\n' "$total" Total diff --git a/bin/rcd-tasks-per-lang b/bin/rcd-tasks-per-lang new file mode 100755 index 0000000000..41abc7b64a --- /dev/null +++ b/bin/rcd-tasks-per-lang @@ -0,0 +1,17 @@ +#!/usr/bin/env bash + +set -e -u -o pipefail + +root=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd -P) + +cd "$root" + +total=0 + +for lang in Lang/*; do + count=$(find "$lang" -type l | wc -l) + printf '%06d %s\n' "$count" "${lang#Lang/}" + total=$((total+count)) +done + +printf '%06d %s\n' "$total" Total