diff --git a/site/projects/hbcht/hbcht-0.1.0.tar.gz b/site/projects/hbcht/hbcht-0.1.0.tar.gz new file mode 100644 index 0000000..91d8846 Binary files /dev/null and b/site/projects/hbcht/hbcht-0.1.0.tar.gz differ diff --git a/site/projects/hbcht/index.org b/site/projects/hbcht/index.org new file mode 100644 index 0000000..ff72343 --- /dev/null +++ b/site/projects/hbcht/index.org @@ -0,0 +1,85 @@ +#+title: Half-Broken Car in Heavy Traffic +#&summary +An esoteric programming language with compiler/interpreter +#& +#+license: bysa, text +#+license: agpl 3+, program +#&toc + +* Half-Broken Car in Heavy Traffic + +Half-Broken Car in Heavy Traffic is a difficult programming language with only +5 combined operators and direction "signs" for 2D grids. + +hbcht is a Python 3.1+ combined compiler/interpreter for the language. + +** Language documentation + +This is the official documentation of HBCHT. + +HBCHT is a 2D grid-based programming language. You are a car fighting to get to +the exit of a very chaotic highway. You have to follow the signs, but whenever +you do that, you also change your memory. The value of your current memory cell +can be incremented or decremented and your memory cell index can change. You +can also find signs that tell you to turn either right or not turn at all, +depending on your memory. + +The car can drive in four directions: up, right, down, and left. Because of the +chaos, you never know which direction the car is headed when the program +starts. This makes it easy to randomize the output. + +To make things worse (actually, it's to make programming in HBCHT possible), +you cannot turn left because your car is half-broken. You can drive straight +ahead, you can turn right, and you can reverse. + +*** Markers + +: o car +: # exit, return/print + +*** Operations + +: > go right, next memory cell +: < go left, previous memory cell +: ^ go up, increment +: v go down, decrement +: / go right if the current memory cell has the same value as the previous +: memory cell, else continue (if the previous memory cell does not exist, +: its value is zero) + +*** Rules + ++ There can be only one car and only one exit ++ The car cannot turn left; any relative left turns will be ignored along with + their memory effects ++ The program always starts at memory cell #0 ++ All memory cells have the value 0 by default ++ Input values cannot be negative, but values returned by a program can ++ The car cannot go out of bound; if it exits to the right, it reenters to the + left, etc. ++ Values cannot be input to memory cells below memory cell #0, but the program + can set values in these ++ Values can be arbitrarily large. An interpreter or compiler without this + feature is valid, but not perfect (note that hbcht's C translator uses + 32-bit ints and is thereby not perfect). + +A semicolon denotes a comment. Anything from the semicolon to the end of the +line is ignored. + +If a program file contains a line that starts with =@intext=, it will see +input as text and convert the text to ordinals before running the core +function. + +If a program file contains a line that starts with =@outtext=, it will show +output as a text string instead of a list of numbers. + + +** Download + +hbcht is released under the AGPLv3+. + +[[hbcht-0.1.0.tar.gz][Download]]. + +hbcht can also be found in the [[http://pypi.python.org/pypi/hbcht][Python Package Index]]. hbcht has its code at +Gitorious; see [[http://gitorious.org/hbcht]]. +