# H - Q -

Jump to navigation
Jump to search

H - Q - is a golfing language based on 05AB1E, GolfScript and HQ9+.

Feel free to add any instructions you want, but please follow these rules:

- Add your username (unless the instruction is added by me)
- Please don't add any implementation-defined/UB instructions.
- Please stick to the format.

## Datatypes

Type How to push Notes Number 123.45 Numbers are 64-bit floating-point values. 456_ (negative values) String "Hello, World!" Escape codes are ¶ (newline), → (tab), · (vertical tab), ← (backspace) and \xxxx (2/4/6 character unicode escape). 'Hello, World!' Use \ to escape these characters (including quotes and the \ itself) ′f (one char string)

Numbers and strings are equal types, which means one will be converted into the other if the data is in the wrong type.

## Commands

Literals H - Push "Hello World" on stack (by User:LEOMOK) Q - Push "Q" (I'm sorry) N - Push lyrics of "99 bottles of beer" Í - Infinity (=1/0) Ñ - NaN (=0/0) P - Pi E - Euler's Number Operators + - Pop a, b, push b plus a. , - Pop a, b, push b concatenated to a. - - Pop a, b, push b minus a. * - Pop a, b, push b times a. × - Pop a, b, push b repeated a times. / - Pop a, b, push b divided by a (float division). ÷ - Pop a, b, push b integer divided by a. % - Pop a, b, push b remainder a. : - Pop a, b, push b to the power of a. √ - Pop a, push square root of a. ; - Pop a, b, push log base b of a. i - Same as 1+. d - Same as 1-. _ - Negate top of stack. a - Pop a, push absolute value of a. f - Pop a, push floor of a. c - Pop a, push ceiling of a. p - Pop a, push -1 if a is prime, else 0. \ - Pop a, b, push character at position a of b. l - Pop a, push length of a. j - Pop a, b, push integer indicating first instance of a in b. s - Pop a, b, c, push all characters between positions a and b of c. v - Pop a, b, c, push c with all b's replaced by a. [ - Pop a, push Unicode of a. ] - Pop a, push Unicode character with value a. { - Pop a, b, push string representation of a in base b. } - Pop a, b, parse a in base b, then push the result. ( - Same as 10{. ) - Same as 10}. = - Pop a, b, push -1 if b equals a, else 0 (NaN is equal to NaN). < - Same as =, but greater than. > - Same as =, but less than. & - Pop a, b, push bitwise and of a and b. | - Same as &, but bitwise or. ^ - Same as &, but bitwise xor. ~ - Pop a, push bitwise not of a. Σ - Sum up the whole stack. Π - Multiply up the whole stack. R - Pop a, b, push random integer between a and b (both included) ¿ - Push random floating point number between 0 and 1. r - Pop a, b, push integers from a to b onto stack. Stack manipulation D - Duplicate top value of stack. Đ - Pop a, b, push a b times. V - Pop. S - Swap. Š - Pop a, reverse the top a items. W - Pop a, dup the a stack item. Ŵ - Pop a, swap the a and top stack items Ř - Reverse the stack. ↑ - Move bottom value up. ↓ - Move top value down. ` - Do the next instruction without popping the stack Control Flow $ - Pop string, then run as code. J - If statement. Pop a, b, if a is true (not zero, empty or NaN), run b. ? - If Else statement. Pop a, b, c, if a is true, run b, else run c. F - For loop, pop a and b, run b for (C=0, C<a+1, C++) W - While loop, pop b, run b until top of stack is false. T - Try catch. Pop a, b, if an error occurs while running a, run b instead. @ - Reduce. Pop a, run it until it can't be done anymore. Ï - Infinite loop. Pop a, run a forever. Č - Pop a, eval as JavaScript code, and push the stringified result. ß - Break out of loop (end program if not in loop) Þ - Loop continue. C - Loop counter. Input and output O - Print top of stack with a newline. Ø - Print top of stack without a newline. I - Push the next line of input. Ĭ - Pop a, open file named a Ö - Pop a, b, write b to last opened file and close it Implicit input: The first line of input is pushed to the stack. Implicit output: if nothing is printed when the program ends, print the pop of the stack. Variables ← - Pop a, b, set variable named b to a. → - Pop a, push value of variable named a. All variables are set to empty string on default. Bonus Ṝ - Push the lyrics of https://www.youtube.com/watch?v=dQw4w9WgXcQ.

Version 2 adds a standard library (`Å`

) and these commands:

Œ - Pop from the stack and push to the clipboard. œ - Pop from the clipboard and push to the stack. « - Pop a, b, push a left shifted by b. » - Pop a, b, push a right shifted by b ÅE - Pop a, write a to stderr. ÅN - Apply JS isNaN to top stack value. Equivalent to )Ñ= Åe - Push Number.EPSILON. ÅM - Push Number.MAX_SAFE_INTEGER. Åm - Push Number.MAX_VALUE.

## Examples

"C'\"FizzBuzz!\"OÞ'15%~J '\"Fizz!\"OÞ'D3%~J '\"Buzz!\"OÞ'D5%~J `O"F

(Fizzbuzz until input value)

"VD2% '2/O' '3*i`O' ? 1`=′ßJ "Ï

(Collatz sequence starting from input value)

1 0"`O`+"IF

(Fibonacci sequence until input value)

1r1Π

(Factorial of input value)

Q

(Quine)

1

(Another quine)

694201337

(A third quine)

Ṝ

(Whatever you do, DON'T RUN THIS)