diff --git a/src/inc/trigger/lib/brainfuck.js b/src/inc/trigger/lib/brainfuck.js index 09ef2e8..eb4c31d 100644 --- a/src/inc/trigger/lib/brainfuck.js +++ b/src/inc/trigger/lib/brainfuck.js @@ -1,80 +1,13 @@ -function gcd(a, b) { - if (b === 0) - return a; - else - return gcd(b, a % b); +function bfgen(text) { + let out = "+".repeat(10) + "["; + let repeat = 0; + for (let i = 0; i < text.length; i++) + repeat = text.charCodeAt(i) - text.charCodeAt(i) % 10; + out += repeat > 10 ? '>' + "+".repeat(repeat / 10) : null; + out += "<".repeat(out.split(">").length - 1) + "-]"; + for (let i = 0; i < text.length; i++) + out += ">" + "+".repeat(text.charCodeAt(i) % 10) + "."; + return out; } -function inverse_mod(n, m) { - var inv1 = 1, - inv2 = 0, - tmp; - while (m) { - tmp = inv1; - inv1 = inv2; - inv2 = tmp - inv2 * (n / m | 0); - tmp = n; - n = m; - m = tmp % m; - } - return inv1; -} - -function shortest_str(arr) { - var min = 0; - for (var i = 1; i < arr.length; i++) - if (arr[i].length < arr[min].length) - min = i; - return min; -} - -var map = [], - plus_map = [""], - minus_map = [""], - iter = true, - repeat = 2, - start; - -for (var i = 1; i < 256; i++) { - plus_map[i] = plus_map[i - 1] + "+"; - minus_map[i] = minus_map[i - 1] + "-"; -} - -for (var x = 0; x < 256; x++) { - map[x] = []; - for (var y = 0; y < 256; y++) { - var delta = y - x; - if (delta > 128) - delta -= 256; - if (delta < -128) - delta += 256; - if (delta >= 0) - map[x][y] = plus_map[delta]; - else - map[x][y] = minus_map[-delta]; - } -} - -function generate(str) { - var last = 0, - len = str.length, - char_map, - result = "", - memory = [0], - index = 0; - for (var i = 0; i < len; i++) { - var - chr = str.charCodeAt(i) & 255, - options = [ - ">" + map[0][chr], - map[last][chr], - ], - shortest; - shortest = shortest_str(options); - result += options[shortest] + "."; - last = chr; - } - return result; -} - -export default { generate }; \ No newline at end of file +export default { bfgen }; \ No newline at end of file diff --git a/src/inc/trigger/sandbox.js b/src/inc/trigger/sandbox.js index 23edcac..c43baf4 100644 --- a/src/inc/trigger/sandbox.js +++ b/src/inc/trigger/sandbox.js @@ -1,4 +1,4 @@ -import { generate as bfgen } from "./lib/brainfuck.js"; +import { bfgen } from "./lib/brainfuck.js"; const vm = require("vm") , request = require("request"); @@ -42,7 +42,7 @@ module.exports = bot => { }, hs: { "LanguageChoice": "11", - "Program": "main = " + code, + "Program": "{-# LANGUAGE UnicodeSyntax #-}\r\nmain = " + code, "Input": "", "CompilerArgs": "-o a.out source_file.hs" }, @@ -148,7 +148,8 @@ module.exports = bot => { clients: ["irc", "tg"], f: e => { let args = e.message.trim().substring(7); - e.reply(bfgen(args)); + let output = bfgen(args); + e.reply(output.length > maxoutput ? `holy fuck, Ausgabe wäre viel zu lang! (${output.length} Zeichen :DDDDDD)` : output); } }); };