Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Clear category for Hacker Language by freeman_lex
import re
class HackerLanguage:
pattern = r"(\d{2}\.\d{2}\.\d{4}|\d{2}:\d{2})"
def __init__(self):
self.decr = ""
def write(self, message):
self.decr += message
def delete(self, num):
self.decr = self.decr[:-num]
def send(self):
res = ""
lst = re.split(self.pattern, self.decr)
for part in lst:
if re.match(f"^{self.pattern}$", part):
res += part
continue
for char in part:
if char in ".:!?@$%":
res += char
else:
res += bin(ord(char))[2:] + "0"*(char == " ")
return res
def read(self, encr):
res = ""
while encr:
if re.match(self.pattern, encr):
_, part, encr = re.split(pattern, encr, 1)
res += part
elif encr[0] in ".:!?@$%":
res += encr[0]
encr = encr[1:]
else:
char = encr[:7]
encr = encr[7:]
if char == "1000000":
char = char[:6]
res += chr(int("0b" + char, 2))
return res
if __name__ == '__main__':
#These "asserts" using only for self-checking and not necessary for auto-testing
message_1 = HackerLanguage()
message_1.write("secrit")
message_1.delete(2)
message_1.write("et")
message_2 = HackerLanguage()
assert message_1.send() == "111001111001011100011111001011001011110100"
assert message_2.read("11001011101101110000111010011101100") == "email"
print("Coding complete? Let's try tests!")
April 4, 2023
Comments: