HQ9-
Jump to navigation
Jump to search
HQ9- is a derivative of HQ9+ by User:None1.
Commands
HQ9- and HQ9+ has only 2 diffenerces:
- HQ9-'s accumulator only supports non-positive numbers.
- HQ9- has the
-
command for decrement instead of the+
command for increment in HQ9+.
Example Programs
Hello World
H
Quine
Q
99 bottles of beer
9
Decrements the accumulator
-
From an end user's perspective, it is equivalent to doing nothing.
Decreases the accumulator by 3
---
From an end user's perspective, it is equivalent to doing nothing.
Implementation
Based on the work of User:A
#include <stdio.h> int main() { unsigned long accumulator = 0; char c[1000]; for(int i=0;;i++) { scanf("%c",&c[i]); if(c[i]=='\n') break; } for(int i=0;c[i]!='\0';i++) { if(c[i]=='H') printf("Hello, World!\n"); else if(c[i]=='Q') printf("%.*s", (int)sizeof c, c); else if(c[i]=='9') { for(int j=99;j>0;j--) { printf("%d bottles of beer on the wall,\n%d bottles of beer.\n", j, j); printf("Take one down, pass it around,\n%d bottles of beer on the wall.\n", j-1); } printf("1 bottle of beer on the wall,\n1 bottle of beer.\nTake one down, pass it around,\nno more bottles of beer on the wall.\n"); } else if(c[i]=='-') accumulator--; } return 0; }
An interpreter in Java maded by PSTF and his 文心一言:
import java.util.HashMap; import java.util.Map; import java.util.Scanner; public class HQ9MinusInterpreter { private static int counter = 0; private static Map<String, Runnable> commands = new HashMap<>(); static { commands.put("H", () -> System.out.println("Hello, world!")); commands.put("Q", () -> System.out.println("Q")); commands.put("9", () -> { String s = "s"; for (int beers=99; beers>-1;){ System.out.print(beers + " bottle" + s + " of beer on the wall, "); System.out.println(beers + " bottle" + s + " of beer, "); if (beers==0){ System.out.print("Go to the store, buy some more, "); System.out.println("99 bottles of beer on the wall.\n"); } else{ System.out.print("Take one down, pass it around, "); s = (--beers == 1)?"":"s"; System.out.println(beers + " bottle" + s + " of beer on the wall.\n"); } } }); commands.put("-", () -> counter--); } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("The HQ9+ interpreter by PrySigneToFry"); System.out.println("Enter HQ9+ commands (type 'exit' to quit):\n"); while (true) { System.out.print("> "); String command = scanner.nextLine(); if (command.equalsIgnoreCase("exit")) { break; } Runnable action = commands.get(command); if (action != null) { action.run(); } else { System.out.println("Unknown command: " + command); } // Print the current counter value after each command (except for '9' which is too verbose) if (!command.equals("9")) { System.out.println("Counter: " + counter); } } scanner.close(); } }
An interpreter by Python made by PSTF:
class HQ9MinusInterpreter: def __init__(self): self.counter = 0 def interpret(self, code): lines = code.split('\n') for line in lines: line = line.strip() if line == 'H': print("Hello, world!") elif line == 'Q': print(code) elif line == '9': for i in range(99, -1, -1): print(i) # This command is simply print a number sequence count from 99 to 0. elif line == '-': self.counter -= 1 print(f"Counter is now: {self.counter}") else: print(f"Unknown command: {line}") # Example usage: print("HQ9- interpreter by PSTF") interpreter = HQ9MinusInterpreter() while True: code = input("Enter the command: ") if code == "exit": print("Thank you for using!") break else: interpreter.interpret(code)