( ͡° ͜ʖ ͡°)fuck
Jump to navigation
Jump to search
( ͡° ͜ʖ ͡°)fuck is a derivate of Brainfuck+3 but with lenny faces.
Commands
| Instruction | Lenny-counterpart |
|---|---|
+
|
( ͡° ͜ʖ ͡°) |
-
|
(> ͜ʖ<) |
.
|
(♥ ͜ʖ♥) |
,
|
ᕙ( ͡° ͜ʖ ͡°)ᕗ |
<
|
(∩ ͡° ͜ʖ ͡°)⊃━☆゚.* |
>
|
ᕦ( ͡°ヮ ͡°)ᕥ |
^
|
ᕦ( ͡° ͜ʖ ͡°)ᕥ |
v
|
( ͡°╭͜ʖ╮ ͡°) |
x
|
ಠ_ಠ |
[
|
( ͡°( |
]
|
) ͡°) |
Examples
Hello, World!
The following program prints Hello World! (taken from Brainfuck).
( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)( ͡°(ᕦ( ͡°ヮ ͡°)ᕥ( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°) ( ͡°(ᕦ( ͡°ヮ ͡°)ᕥ( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)ᕦ( ͡°ヮ ͡°)ᕥ( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)ᕦ( ͡°ヮ ͡°)ᕥ( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)ᕦ( ͡°ヮ ͡°)ᕥ ( ͡° ͜ʖ ͡°)(∩ ͡° ͜ʖ ͡°)⊃━☆゚.*(∩ ͡° ͜ʖ ͡°)⊃━☆゚.*(∩ ͡° ͜ʖ ͡°)⊃━☆゚.*(∩ ͡° ͜ʖ ͡°)⊃━☆゚.*(> ͜ʖ<)) ͡°)ᕦ( ͡°ヮ ͡°)ᕥ( ͡° ͜ʖ ͡°)ᕦ( ͡°ヮ ͡°)ᕥ( ͡° ͜ʖ ͡°) ᕦ( ͡°ヮ ͡°)ᕥ(> ͜ʖ<)ᕦ( ͡°ヮ ͡°)ᕥᕦ( ͡°ヮ ͡°)ᕥ( ͡° ͜ʖ ͡°)( ͡°((∩ ͡° ͜ʖ ͡°)⊃━☆゚.*) ͡°)(∩ ͡° ͜ʖ ͡°)⊃━☆゚.*(> ͜ʖ<)) ͡°)ᕦ( ͡°ヮ ͡°)ᕥᕦ( ͡°ヮ ͡°)ᕥ(♥ ͜ʖ♥) ᕦ( ͡°ヮ ͡°)ᕥ(> ͜ʖ<)(> ͜ʖ<)(> ͜ʖ<)(♥ ͜ʖ♥)( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)(♥ ͜ʖ♥)(♥ ͜ʖ♥)( ͡° ͜ʖ ͡°) ( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)(♥ ͜ʖ♥)ᕦ( ͡°ヮ ͡°)ᕥᕦ( ͡°ヮ ͡°)ᕥ(♥ ͜ʖ♥)(∩ ͡° ͜ʖ ͡°)⊃━☆゚.*(> ͜ʖ<)(♥ ͜ʖ♥)(∩ ͡° ͜ʖ ͡°)⊃━☆゚.*(♥ ͜ʖ♥)( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°) (♥ ͜ʖ♥)(> ͜ʖ<)(> ͜ʖ<)(> ͜ʖ<)(> ͜ʖ<)(> ͜ʖ<)(> ͜ʖ<)(♥ ͜ʖ♥)(> ͜ʖ<)(> ͜ʖ<)(> ͜ʖ<)(> ͜ʖ<)(> ͜ʖ<)(> ͜ʖ<)(> ͜ʖ<)(> ͜ʖ<)(♥ ͜ʖ♥)ᕦ( ͡°ヮ ͡°)ᕥᕦ( ͡°ヮ ͡°)ᕥ ( ͡° ͜ʖ ͡°)(♥ ͜ʖ♥)ᕦ( ͡°ヮ ͡°)ᕥ( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)(♥ ͜ʖ♥)ಠ_ಠ
This is code so that instead of going left and right, it goes up and down.
( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)( ͡°( ᕦ( ͡° ͜ʖ ͡°)ᕥ( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)( ͡°(ᕦ( ͡° ͜ʖ ͡°)ᕥ( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)ᕦ( ͡° ͜ʖ ͡°)ᕥ ( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)ᕦ( ͡° ͜ʖ ͡°)ᕥ( ͡° ͜ʖ ͡°) ( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)ᕦ( ͡° ͜ʖ ͡°)ᕥ( ͡° ͜ʖ ͡°)( ͡°╭͜ʖ╮ ͡°)( ͡°╭͜ʖ╮ ͡°)( ͡°╭͜ʖ╮ ͡°)( ͡°╭͜ʖ╮ ͡°)(> ͜ʖ<)) ͡°) ᕦ( ͡° ͜ʖ ͡°)ᕥ( ͡° ͜ʖ ͡°)ᕦ( ͡° ͜ʖ ͡°)ᕥ( ͡° ͜ʖ ͡°)ᕦ( ͡° ͜ʖ ͡°)ᕥ(> ͜ʖ<)ᕦ( ͡° ͜ʖ ͡°)ᕥᕦ( ͡° ͜ʖ ͡°)ᕥ( ͡° ͜ʖ ͡°) ( ͡°(( ͡°╭͜ʖ╮ ͡°)) ͡°)( ͡°╭͜ʖ╮ ͡°)(> ͜ʖ<)) ͡°)ᕦ( ͡° ͜ʖ ͡°)ᕥᕦ( ͡° ͜ʖ ͡°)ᕥ(♥ ͜ʖ♥)ᕦ( ͡° ͜ʖ ͡°)ᕥ(> ͜ʖ<)(> ͜ʖ<) (> ͜ʖ<)(♥ ͜ʖ♥)( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)(♥ ͜ʖ♥)(♥ ͜ʖ♥) ( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)(♥ ͜ʖ♥)ᕦ( ͡° ͜ʖ ͡°)ᕥᕦ( ͡° ͜ʖ ͡°)ᕥ(♥ ͜ʖ♥)( ͡°╭͜ʖ╮ ͡°) (> ͜ʖ<)(♥ ͜ʖ♥)( ͡°╭͜ʖ╮ ͡°)(♥ ͜ʖ♥)( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)(♥ ͜ʖ♥)(> ͜ʖ<) (> ͜ʖ<)(> ͜ʖ<)(> ͜ʖ<)(> ͜ʖ<)(> ͜ʖ<)(♥ ͜ʖ♥)(> ͜ʖ<)(> ͜ʖ<)(> ͜ʖ<)(> ͜ʖ<) (> ͜ʖ<)(> ͜ʖ<)(> ͜ʖ<)(> ͜ʖ<)(♥ ͜ʖ♥)ᕦ( ͡° ͜ʖ ͡°)ᕥᕦ( ͡° ͜ʖ ͡°)ᕥ( ͡° ͜ʖ ͡°)(♥ ͜ʖ♥) ᕦ( ͡° ͜ʖ ͡°)ᕥ( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)(♥ ͜ʖ♥)ಠ_ಠ
Implementations
This is one implementation written in Python.
def run_lenny(code: str, actually_run = False) -> None:
pointer = 0 # for instructions
row = 0 # for up and down tape
column = 0 # for left and right tape
tape = [[0]]
input_string = chr(10) # allows multiple inputs easily
corresponding_bracket = {} # dictionary where the values are the corresponding bracket positions of the keys
bracket_stack = [] # acts as a stack for the last bracket
for num in range(len(code)):
if code[num:num+5] == '( ͡°(':
bracket_stack.append(num)
elif code[num:num+5] == ') ͡°)':
assert len(bracket_stack) > 0, 'unmatched ) ͡°)'
corresponding_bracket[num] = bracket_stack[-1]
corresponding_bracket[bracket_stack[-1]] = num
bracket_stack.pop()
assert balance == 0, 'unmatched ( ͡°('
while pointer < len(code):
skip = 1
if code[pointer:pointer+11] == 'ᕦ( ͡°ヮ ͡°)ᕥ':
column += 1
if column == len(tape[row]):
for row_number in range(len(tape)):
tape[row_number].append(0)
skip = 11
elif code[pointer:pointer+18] == '(∩ ͡° ͜ʖ ͡°)⊃━☆゚.*':
column -= 1
if column < 0:
for row_number in range(len(tape)):
tape[row_number] = [0] + tape[row_number]
column += 1
skip = 18
elif code[pointer:pointer+12] == '( ͡°╭͜ʖ╮ ͡°)':
row += 1
if row == len(tape):
tape.append([0]*(column+1))
skip = 12
elif code[pointer:pointer+13] == 'ᕦ( ͡° ͜ʖ ͡°)ᕥ':
row -= 1
if row < 0:
tape = [[0]*(column+1)] + tape
row += 1
skip = 13
elif code[pointer:pointer+11] == '( ͡° ͜ʖ ͡°)':
tape[row][column] = (tape[row][column] + 1) % 256
skip = 11
elif code[pointer:pointer+7] == '(> ͜ʖ<)':
tape[row][column] = (tape[row][column] - 1) % 256
skip = 7
elif code[pointer:pointer+7] == '(♥ ͜ʖ♥)':
print(chr(tape[row][column]),end='')
skip = 7
elif code[pointer:pointer+13] == 'ᕙ( ͡° ͜ʖ ͡°)ᕗ':
if input_string == chr(10):
input_string = input(">>") + chr(10)
if len(input_string) > 0 and ord(input_string[0]) != chr(10):
tape[row][column] = ord(input_string[0])
input_string = input_string[1:]
skip = 13
elif code[pointer:pointer+5] == '( ͡°(':
if tape[location] == 0:
pointer = corresponding_bracket[pointer]
skip = 5
elif code[pointer:pointer+5] == ') ͡°)':
if tape[location] == 0:
pointer = corresponding_bracket[pointer]
elif code[pointer:pointer+3] == 'ಠ_ಠ':
break
pointer += skip