靈符
Jump to navigation
Jump to search
靈符 is designed by PSTF and his ChatGPT.
Commands
The language operates on a tape of cells, each containing an integer.
The program consists of a series of Chinese characters, each representing a different operation.
Instructions:
- 移 (Yí) - Move the data pointer to the next cell to the right.
- 靈 (Líng) - Move the data pointer to the next cell to the left.
- 增 (Zēng) - Increment the value at the current cell by 1.
- 減 (Jiǎn) - Decrement the value at the current cell by 1.
- 若 (Ruò) - If the value at the current cell is 0, jump forward to the character after the matching 則 (Zé).
- 則 (Zé) - Go back to the matching 若 (Ruò) if the value at the current cell is not zero.
- 輸 (Shū) - Output the ASCII character represented by the value at the current cell.
- 讀 (Dú) - Input a character and store its ASCII value at the current cell.
(This is just a Brainfuck deriative!)
Example(Written by myself)
Hello, World!
增增增增增增增增增增增若移增增增增增增移增增增增增 增增增增移增增增增增增增增移增增增增移增增增移增靈 靈靈靈靈靈減則移增增增增增增輸移增增輸增增增增增增 增輸輸增增增輸移移輸移減輸靈靈減輸靈輸增增增輸減減 減減減減輸減減減減減減減減輸移移移增輸移減輸
Cat program
讀若輸讀則
Implementation
import sys def lingfu(code): s=[] matches={} tape=[0]*1000000 for i,j in enumerate(code): if j=='若': s.append(i) if j=='則': m=s.pop() matches[m]=i matches[i]=m cp=0 p=0 while cp<len(code): if code[cp]=='增': tape[p]=(tape[p]+1)%256 if code[cp]=='減': tape[p]=(tape[p]-1)%256 if code[cp]=='輸': c=sys.stdin.read(1) tape[p]=(ord(c) if c else 0)%256 if code[cp]=='讀': print(chr(tape[p]),end='') if code[cp]=='靈': p-=1 if code[cp]=='移': p+=1 if code[cp]=='若': if not tape[p]: cp=matches[cp] if code[cp]=='則': if tape[p]: cp=matches[cp] cp+=1 lingfu(sys.stdin.read())