1.0.1 • Published 4 years ago
halfwit v1.0.1
Halfwit
Halfwit is an experimental golfing language that fits most commands in half a byte. It's stack-based.
Usage
npm install halfwit
node main.js <filename> [single string of flags] [inputs]Or in node.js:
const halfwit = require('halfwit')Or in a website:
<script src='/path/to/halfwit.js'></script>Flags
Halfwit has several flags:
e- execute the filename as codeA- print as charsc- print compiled codeC- count source length in Halfwit codepages- compress list / intt- print tokensp- print parsed tokensh- print flag help menu
Builtins
Some builtins take up .5 bytes, some 1, and some 1.5.
.5 bytes
[- condition ([...;)M- map (M...;){- while (condition) do stuff ({...;...;), condition = first part;; - terminate structure+- Addition, vectorising*- Multiplication, vectorisingJ- join - append / prepend / pair>- Starts a compressed int ->...</ adds to a compressed int list>...>...<<- end int / intlist (see above) / length / range 0...n-1N- negate / reversef- flatten / squareb- base conversion:- Int, int -> to_base
- Int, list -> to-custom-base
- List, int -> from-base
- list, list -> from-custom-base
:- Duplicate$- Swap?- Take inputk- Digraph modifier
Note that all of these can be represented as a single character as well as the encoding.
1 byte
k*/e- exponentiation, vectorisingk+//- floor divisionk[/|-[...|...;else in an if block, otherwise|...;-> if notkM/(-> for (same stack) -(...;k;/%- modulo (vectorising)k{/E- Eqiuvalent of(nkN/n-- in
(/M/F: Push context (loop var) - in global scope: Push 1
- in
kJ/S- Sum / is primek?/i- index value (s) into list / bitwise xork</l- Comparison (less than)kf/F- Filter -F...;kb/R- ReduceR...;k:/_- Pop stackk>/}- rotate stack rightk$/r- range (inclusive)kk: useful constants
1.5 bytes
kk[/0- 100kkM/1- 256kk{/2- 26kk;/3- 50kk+/4- 0, 1kk*/5- 128kkJ/6- 64kk>/7- 32kk</8- 16kkN/9- 1000
kkf/s- sort / prime factorskkb/Z:- list, list -> zip
- int, list -> repeat (vectorised)
- list, int -> repeat
- int, int -> repeat
kk:/D- is a divisible by B? (vectorising)kk$/W- stack = stackkk?/,- prettyprint with trailing newlinekkk/.- Print as chars without trailing newline
Not scored
These are debugging instructions that aren't included in the codepage.
x- Print stack
1.0.1
4 years ago