Text zu Brain-Flak


13

Ihre Herausforderung besteht darin, Eingabetext in Brain-Flak-Code umzuwandeln, der den Text ausgibt.

Tutorial von hier mit freundlicher Genehmigung hier genommen

Brain-Flak hat zwei Stapel, die als "links" und "rechts" bekannt sind. Der aktive Stapel beginnt links. Wenn ein leerer Stapel abgelegt wird, wird 0 zurückgegeben. Das war's. Keine anderen Variablen. Wenn das Programm gestartet wird, wird jedes Befehlszeilenargument auf den aktiven Stapel übertragen.

Die einzigen gültigen Zeichen in einem Brain-Flak-Programm sind ()[]{}<>, und sie müssen immer ausgeglichen sein. Es gibt zwei Arten von Funktionen: Niladen und Monaden . Ein Nilad ist eine Funktion, die 0 Argumente akzeptiert . Hier sind alle Niladen:

  • () Wertet zu eins aus.
  • [] Wertet auf die Höhe des aktuellen Stapels aus.
  • {}Pop den aktiven Stapel. Wertet den gepoppten Wert aus.
  • <>Schaltet den aktiven Stapel um. Wertet auf Null aus.

Diese werden bei der Auswertung miteinander verkettet. Wenn wir also eine '3' über dem aktiven Stapel hatten, ist dieser Ausschnitt:

()(){}

würde auswerten, zu 1 + 1 + active.pop()dem 5 auswerten würde.

Die Monaden nehmen ein Argument, einen Teil des Brain-Flak-Codes. Hier sind alle Monaden:

  • (n) Drücken Sie 'n' auf dem aktiven Stapel.
  • [n] Wertet zu negativem 'n' aus
  • {foo} Während sich Null nicht oben auf dem Stapel befindet, tun Sie foo.
  • <foo> Foo ausführen, aber mit 0 bewerten.

Diese Funktionen geben also auch den Wert in ihnen zurück

(()()())

Will aber 3 schieben

((()()()))

Schiebt 3 zweimal .

Der {}wird zur Summe aller Läufe ausgewertet. Wenn wir also "3" und "4" oben auf dem Stapel hätten:

{{}}

würde mit 7 bewertet.

Wenn das Programm ausgeführt ist, wird jeder auf dem aktiven Stapel verbleibende Wert mit einem Zeilenumbruch zwischen gedruckt. Werte auf dem anderen Stapel werden ignoriert.

Regeln

  • Sie können davon ausgehen, dass der Brain-Flak mit Ascii-Out ausgeführt wird. ( -A)
  • Der Brain-Flak-Code muss NICHT eingegeben werden
  • Es gelten alle Standardregeln
  • Der Code muss innerhalb von 1 Minute für jede Eingabe von bis zu 1024 Bytes auf TIO ausgeführt werden. (Wenn kein TIO-Ausgang verfügbar ist, liefern Sie einen Interpreter und ich werde ihn auf meinem Computer ausführen (mein Computer sollte in der Lage sein, TIO nahe zu kommen).
  • Sie müssen die Eingabe einer beliebigen Länge unterstützen.
  • Sie können Eingaben aus einer Datei übernehmen.
  • Eine Optimierung für Testfälle ist nicht zulässig
  • Deterministische Ausgabe ist erforderlich
  • Programme müssen nicht stapelrein sein

Testfälle (versuchen Sie Ihren Code auf diesen, die tatsächlichen Bewertungstexte werden in 1-2 Wochen nach der Veröffentlichung der Herausforderung veröffentlicht)

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

The meaning of brain-flak is to flak your brain with pain.

`1234567890-=qwertyuiop[]\asdfghjkl;'zxcvbnm,./~!@#$%^&*()_+QWERTYUIOP{}|ASDFGHJKL:"ZXCVBNM<>?

To be, or not to be, that is the question:
Whether 'tis nobler in the mind to suffer
The slings and arrows of outrageous fortune,
Or to take arms against a sea of troubles
And by opposing end them. To die-to sleep,
No more; and by a sleep to say we die

<your brain-flak code here>

The fitness pacer test is a multi stage test. Avacado Avacado Avacadad Avacadad carrot.bat carrot.jar carrot.carrot Quack Quack Quack Quack Quack Quack Quack Quack Quack downgoat doawngoat down down gaot



This challenge came from a online program that turned text into brain-fuck. However brain-fuck has limitations and it is not nearly as cool as brain-flak. I really am looking forward to cool programs :) I am glad you took the time to read this and look forward to seeing your answer.

Gewinnen

Um zu gewinnen, müssen Sie die Gesamtlänge des Brain-Flak-Codes für jeden Testfall angeben, der 1-2 Wochen nach dem Post-Datum veröffentlicht wird. Die kürzeste Gesamtlänge gewinnt.

HINWEIS!!!!!!:

Dies ist kein , die Länge Ihres Codes hat keinen Einfluss auf Ihr Endergebnis. Es wird geschätzt, sauberen lesbaren Code zu erstellen. Vielen Dank!

Testfälle

Hier



4
TNB-Memes sind die besten Memes.
Magic Octopus Urn

1
Ich wünschte, ich könnte dies um +1 verdoppeln, stattdessen biete ich ein Kopfgeld an, weil ich wissen möchte, wie das gemacht werden sollte. Die erste Antwort, die <your brain-flak code here>unter 1000 fällt, wird mit dem Kopfgeld belohnt. Was ich für einen weiteren Tag nicht posten kann, whoops; Ich habe nicht bemerkt, wie neu das war.
Magic Octopus Urn

1
Wenn der Eingabebereich nicht auf druckbares ASCII beschränkt ist, sollten Sie auch Testfälle einbeziehen, die jeden Bytewert enthalten, einschließlich NUL-Bytes.
mbomb007

2
"Sauberer, lesbarer Code wird geschätzt" fordert in 05AB1E
Magic Octopus Urn am

Antworten:


13

Brain-Flak , 130 Bytes

{({}<>)<>}<>{((((()()()()()){}){}){}<>)<>{(((((()()()()()){}){}){}<>)())<>({}[()])}<>((((()()()()()){}){}){}())<>{}}<>{({}<>)<>}<>

Probieren Sie es online!

Ausgabe für <your brain-flak code here>: 5045 Bytes

(()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())(()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())(()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())(()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())(()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())(()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())(()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())(()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())(()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())(()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())(()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())(()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())(()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())(()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())(()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())(()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())(()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())(()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())(()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())(()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())(()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())(()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())(()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())(()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())(()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())(()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())(()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())

Probieren Sie es online!


1
Brain-Flakking intensiviert
Magic Octopus Urn

1
@MagicOctopusUrn Metaflakking : D
HyperNeutrino

Testfälle sind out
Christopher

7

Python 3 , 17744 Bytes

Bearbeiten: Ich habe einige Optionen hinzugefügt, um das Golfen in stapelsicheren Situationen zu unterstützen.

import sys
sys.setrecursionlimit(1000000)
import time

def copy(n, code):
	if n == 1: return code
	for x in range(2, n):
		if n%x == 0: return '('*(x-1) + copy(n//x, code) + ')'*(x-1) + '{}'*(x-1)
	return '('*(n-1) + code + ')'*(n-1) + '{}'*(n-1)

letterCache = {}
def letterGen(n, stackLen, prev=0, enclosed=0):
	if (n, stackLen, prev, enclosed) in letterCache: return letterCache[(n, stackLen, prev, enclosed)]
	if n == 0: return ''
	if n == 1: return '()'
	if n == stackLen: return '[]'
	f = []
	if n < 0:
		f.append('[%s]'%letterGen(-n, stackLen, prev, enclosed))
	else:
		if prev != 0:
			diff = n-prev
			#Saves ~200 bytes but 20x longer
			#for x in range(min(diff, 0)-stackLen, max(diff, 0)+stackLen+1):
				#f.append(letterGen(x, stackLen - enclosed) + 's' + letterGen(diff - x, stackLen))

			f.append('s' + letterGen(diff, stackLen))
			f.append(letterGen(diff, stackLen - enclosed) + 's')
		x = 2
		while x*x < n:
			f.append(copy(x, letterGen(n//x, stackLen, prev, enclosed)) + letterGen(n%x, stackLen, prev, enclosed))
			x += 1
		f.append(letterGen(n-1, stackLen, prev, enclosed)+'()')
		if abs(n-stackLen) < n and stackLen > 1: f.append(letterGen(n-stackLen, stackLen, prev, enclosed) + '[]')
	letterCache[(n, stackLen, prev, enclosed)] = min(f, key=len)
	return letterCache[(n, stackLen, prev, enclosed)]

def s2BrainFlak(c, checkReverse = True):
	g = []
	c = c[::-1]
	stack = []
	out = []
	enclosed = 0

	if checkReverse:
		g.append(''.join(out) + s2BrainFlak(c, False) + '{({}<>)<>}<>')
		#for x in range(1,11): g.append(s2BrainFlak(list(c)+[chr(0)]*x, False) + '{({}<>)<>}<>')
	#if c and c[0] == chr(0):
	#	out.append('<>')
	#	while c[0] == chr(0):
	#		stack.append(0)
	#		out[0] = '(' + out[0] + ')'
	#		c = c[1:]


	for letter in range(len(c)):
		char = ord(c[letter])
		x = '(%s)'%letterGen(char, len(stack), stack[-1] if stack else 0, enclosed)

		if 's' in x:
			out[-1] = x.replace('s', out[-1])
			enclosed += 1
		else:
			out.append(x)
			enclosed = 1
		if checkReverse and c[letter+1:]:
			g.append(''.join(out) + '<>' + s2BrainFlak(c[letter+1:], False) + '{({}<>)<>}<>')
			m = min(list(map(ord, c[letter+1:])))-1
			#for i in range(1,m): g.append(''.join(out) + '<>' + s2BrainFlak(list(map(lambda x: chr(ord(x)-i), c[letter+1:])), False) + "{({}%s<>)<>}<>"%letterGen(i, 0))
			g.append(''.join(out) + '<>' + s2BrainFlak(list(map(lambda x: chr(ord(x)-m), c[letter+1:])), False) + "{({}%s<>)<>}<>"%letterGen(m, 0))
			#for x in range(1,11): g.append(''.join(out) + s2BrainFlak(list(c)+[chr(0)]*x, False) + '{({}<>)<>}<>')
		stack.append(char)
	g.append(''.join(out))
	return min(g, key=len)

Probieren Sie es online!

Eine einfache rekursive Lösung, die ich weiter verbessern werde. Dies funktioniert sehr gut mit kleineren Eingängen, verliert jedoch die Antwort von MegaTom auf Ruby bei längeren Eingaben .

Anmerkungen:

  • Dies erfordert einen sauberen Stack, um zu funktionieren, da sonst die Verbesserungen []unbrauchbar werden (obwohl sie durch Auskommentieren einiger Zeilen deaktiviert werden können und nur durch etwa 100 Bytes erheblich ).
  • Da dies ein rekursiver Algorithmus ist, dauert es bei Zeichen mit großen Werten länger. Zum Beispiel dauert die Auswertung des Zeichens takes (Wert 255) 9 Sekunden, wobei jeder Testfall gleichzeitig 1,6 Sekunden dauert.Cache implementiert!
  • Idee der Überprüfung der Rückseite schamlos ausgeliehen HyperNeutrinos Antwort , um 800 Bytes von der Gesamtsumme einzusparen .
  • Ich habe die Summe aller Testfälle auf einmal in die Summe aller Testfälle geändert. Dies spart einige Bytes, indem mehr Verwendungen für den Stapellängenoperator hinzugefügt werden ([] )
  • ~ 200 Bytes aus der Auswahl des Minimums für das Voranstellen oder Anhängen des Unterschieds zwischen Zeichen (dies spart wiederum Bytes durch den Stapellängenoperator)
  • Es wurde ein Cache implementiert (der Werte basierend auf der Stapellänge zwischenspeichert), mit dem ich mehr mögliche Wege prüfen konnte, ohne das Zeitlimit zu überschreiten. Dies sparte 1500 Bytes von der Gesamtsumme.
    • Außerdem habe ich den Em-Dash im Shakespeare-Testfall auf Normal geschaltet -. Dies hat ein paar Bytes herausgeschnitten und viel Zeit in Anbetracht des Wertes dieses Bindestrichs war 8212: o.
  • Schneiden Sie 1200 Bytes aus den längeren Testfällen aus, indem Sie sie in Scheiben schneiden und prüfen, ob es kürzer war, auf den anderen Stapel umzuschalten, ihn in umgekehrter Reihenfolge zu konstruieren und ihn wieder auf den ersten Stapel zurückzuschieben. Als nächstes noch mehr Schneiden und Zeitersparnis durch Optimierung des minimalen Schneidebereichs.
  • Kombiniert die Zahlenerzeugungsfunktion mit der Prüfung auf Effizienz mit dem vorherigen Zeichenteil zu einer rekursiven Funktion. Es gibt hier einige Abschnitte, die einige Bytes einsparen, aber die Laufzeit des Programms ein wenig über das 1-Minuten-Limit hinaus verlängern.
    • Wenn Sie diese Teile nicht kommentieren, können Sie sie auf 11394 Byte reduzieren. Dies dauert jedoch ungefähr 16 Minuten.

Beispielausgaben:

<your brain-flak code here> (312 Byte):

(()(((((((((()()()){}()){}()){}){})){}())[(()[][]){}])[][])[[]])([]((((([]((()[][][]){})[][]){})(()[]){})[()[][]])[()][]))([()][]([[]]((((([][]){}())){}[])(()()()){})))([()()()][]((((((()()[[][]]([()()()()][]((([][])[]){}()))[])())[((()()[])){}{}])[()()][]){})[()()()]))(([][]){}())((()()()()()[]){}){({}<>)<>}<>

Probieren Sie es online!

Hello, World!( 142 Bytes [Hinweis: Die derzeitige Bestleistung betrug 148 Bytes und beträgt jetzt 136 Bytes]):

((()(((((((((()()()()){}){}){}()))){}{}())([][]){})[][])[[]])[((()[]){}){}])([()[]](((()(()[]([][]((()[][]){}[]))){}[])[()()()])))(([][][]){})

Probieren Sie es online!


Überprüfung der Umkehrung spart 800 Bytes? o_O
HyperNeutrino

Außerdem sollten Sie die Ergebnisse Ihrer rekursiven Funktion zwischenspeichern. würde so viel Zeit sparen
HyperNeutrino

@HyperNeutrino Caching bedeutet, dass ich den Stapellängenoperator nicht verwenden kann, der tatsächlich viel spart, insbesondere für kürzere Eingaben
Jo King

1
@HyperNeutrino ich gerade erkannte ich kann einen Cache haben, solange ich getrennte Caches für jeden Stapelhöhe machen
Jo König

1
Ihr Brain-Flak-Meta-Golfer hat die beste Antwort auf ein Brain-Flak-Standardgolf gefunden? Was.
Magic Octopus Urn

5

Ruby , 17398 Bytes für alle (neuen) Testfälle

# cache for holding shortest push results
$p_cache = {} 

# Get code to push a number "a" to the stack,
#  given top of stack "b" and stack height "h"
def push a,b=nil,h=0
  return $p_cache[[a,b,h]] if $p_cache[[a,b,h]]
  arr = []
  if b
    arr.push "(({})#{add(a-b,h)})"
  end
  arr.push "(#{add a,h}  )"
  arr.push "([]#{add a-h,h}  )"
  i=2
  while i*i<=a && i<4
    arr.push "#{'('*(i-1)}#{push a/i,b,h}#{')'*(i-2)+'{}'*(i-1)}#{add(a%i,h)})"
    i+=1
  end
  $p_cache[[a,b,h]] = arr.min_by(&:length)
end


$cache = {}

# Get code to add a number "n" to the 3rd stack
#  given stack height "h" 

def add n,h=0
  return $cache[[n,h]] if $cache[[n,h]]
  arr = []
  if n > 0
    arr.push("()"*n)
  elsif n == 0
    return ""
  else
    if h > 0
      1.upto(-n/h){|i|
        arr.push "[#{'[]'*i}]#{add(h*i+n,h)}"
      }
    end
    arr.push "[#{add(-n,h)}]"
    return ($cache[[n,h]] = arr.min_by &:length)
  end
  
  if h > 0
    if n > h
      arr.push "[]#{add n-h,h}"
    else
      arr.push "[]#{add n-h}"
    end
  end
  
  i=2
  while i*i<=n && i<4
    arr.push "#{'('*(i-1)}#{add n/i,h}#{')'*(i-1)+'{}'*(i-1)}#{add(n%i,h)}"
    x=n-h-i+1
    if x > 0
      arr.push "#{'('*(i-1)}#{add x/i,h}#{')'*(i-1)}[]#{'{}'*(i-1)}#{add(x%i)}"
    end
    i+=1
  end
  $cache[[n,h]] = arr.min_by &:length
end

def push_arr(arr)
  i=0
  code = push(arr[0]) + "\n" + 
  arr.each_cons(2).map{|r|
    i+=1;push r[1],r[0],i
  }.join(?\n)
  
  while code =~ /^\((.*)\)\n(\(*)\{\}/
    code.gsub!(/^\((.*)\)\n(\(*)\{\}/, '\2\1')
  end
  
  code.split(/\n| /).join
end

# push a string to the stack
def push_string(text)
  push_arr text.chars.map(&:ord)
end

$str_cache = {}
# Push a string in reverse order
def push_string_r(text)
  return $str_cache[text] if $str_cache[text]
  a = [push_string(text)+"{({}<>)<>}<>", push_string(text.reverse)]
  
  min = text.bytes.min-1
  a.push push_arr(text.bytes.map{|x|x-min}) + "{({}<>#{add min})<>}<>"

  # Try cutting it into bits
  3.upto([text.length/20, 10].min)do|x|
    spl = x*9
    a.push push_string_r(text[spl..-1]) + "<>" + 
      push_string(text[0...spl]) + "{({}<>)<>}<>"
    spl = x*10
    a.push push_string_r(text[spl..-1]) + "<>" + 
      push_string(text[0...spl]) + "{({}<>)<>}<>"
  end
  
  a.map!{|code|code.gsub("<><>","")}

  $str_cache[text] = a.min_by &:length
end

Probieren Sie es online!


<your brain-flak code here>, 362 358 Bytes

((((((((((()()()){}()){}()){}){})){}())[[][][][][]])[][])[()()()])((((((((([][][]()){}))){}{}()())[][]()())[[][]()])[][()])()()()()())([][][][]())(((([]([]())[]{}){})(()()()){})[[][()()()]])([]([][][]()){})((([][])[]){}())([]([][]())[]{})((([][]()())[]{})())((((((()()()()())[]{})[][()()]){})[()()()])((()()()){}){}())([][][][]())(((()())[]{}){}){({}<>)<>}<>

Probieren Sie es online!


Ihr Code benötigt mehr als 1 Minute für alle Testfälle gleichzeitig (~ 950 Byte). Es ist jedoch gut, dass es für die längeren einzelnen Testfälle ziemlich kurzen Code erzeugt.
Jo King

@JoKing es ist in Ordnung, dass es in jedem Fall länger dauert: P
Christopher

@ Christopher Ich bezog mich auf die Must run under 1 minute for inputs up to 1024 bytesRegel (obwohl es jetzt viel schneller ist)
Jo King

1
Obwohl es für die Codeausführung eigentlich keine Rolle spielt, wird ein Objekt, das Daten für die spätere Verwendung speichert, als a cache, not cash; p
Value Ink

Testfälle sind out
Christopher

4

Python 3 , 16222 Bytes

cache = {}

def generate_number(num, height, level = 0, output = False): # Idea to use Stack Height inspired by Jo King
	if output: print(" " * level + str(num) + " " + str(height))
	if (num, height) in cache: return cache[(num, height)]
	if num == 0: return ""
	if num < 0: return "[" + generate_number(-num, height, level + 1, output) + "]"
	if num == height: return "[]"
	value = min((["[]" + generate_number(num - height, height, level + 1, output)] if height > num * 2 and abs(num - height) < num else []) + ["()" + generate_number(num - 1, height, level + 1, output)] + ["(%s)%s{}" % (generate_number(num // i, height, level + 1, output), "({})" * (i - 2)) for i in range(2, num) if num % i == 0], key = len)
	cache[(num, height)] = value
	return value

generate_number(256, 0, 0, False)

def generate_string(array):
	string = ""
	last = 0
	for height, num in enumerate(array):
		string = min("(" + string + generate_number(num - last, height) + ")", "<" + string + ">" + "(" + generate_number(num, height) + ")", key = len)
		last = num
	return string

a = lambda s: generate_string(list(map(ord, s)))

i = sys.stdin.read()
j = i[::-1]

print(min(a(j), a(i) + "{({}<>)<>}<>", key = len))

Probieren Sie es online!

Zuerst unter 1000 für <your brain-flak code here>: D

Brain-Flak , 448 Bytes

<((((((<(((<((((<((((<((((((()(()(()(()()()){}){}){}){})(()((()()[]){}){})({}){})()((()[]){}){})[()(([]){}){}])()()())>((()([])({}){}){})()((()(()()[]){}){}){})[()])()()()[])[()()()[]])>(()()([])({}){})(()(()[]){})({}){})[(()()()()()){}])()(()()()()()){})[(()()()){}])>(([])({}){})()(([]){}){})[()()()()()])[(()()()()){}])>((([])({}){}){})[((()()()()){}){}])[(()[])({}){}])()(()()()()()[])({}){})()()())[(()()()){}])(()()()()()){})>((()()()()[]){})

Probieren Sie es online!

(ursprünglich 827 für <your brain-flak code here>)


Bounty Inc., bald.
Magic Octopus Urn

@MagicOctopusUrn cool ty: D
HyperNeutrino

Sie sind jetzt bei 16222 Bytes insgesamt
Jo King

Hoffe 250 war cool.
Magic Octopus Urn

@MagicOctopusUrn 250 ist großartig: D Tyvm
HyperNeutrino

3

05AB1E , zu viele Bytes (Mein erstes BF irgendetwas)

ÇεDÑDg;<èUX÷VX"()"×"(ÿ)"YX-"()"׫"(ÿ)"}»"{({}<>)({<({}[()])><>({})<>}{}<><{}><>)<>}<>"«

Probieren Sie es online!


Extrem einfacher Golfversuch mit dem vorgefertigten "Multiplikations" -Brain-Flak-Code. Es wird nur das Divisorenpaar mit der kleinsten Summe für jeden ASCII-Codepunkt gefunden und anschließend beide Divisorenpaare als Zahlen übertragen. Der Brainflak-Code({}<>)({<({}[()])><>({})<>}{}<><{}>) wird dann angehängt und in einer Schleife ausgeführt, bis sich alle Werte auf dem alternativen Stapel befinden.


Liste der Leute, denen ich danke:

  • DJMcMayhem für das Hervorheben (()())(()()())= ((()())())(-252 bytes )
  • DJMcMayhem dafür, dass er mir gezeigt hat, wie Loops funktionieren sollten ( -927 bytes).

Beispiel Golf von <your brain-flak code here>at 3470 3218 2291 Bytes:

Brain-Flak , 2291 Bytes

((()()()()()())()()()())
((())()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())
((()()())()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())
((()()()()()()()()())()()()())
((()()()()()())()()()()()()()()()()()()())
((()()()())()()()())
((()()()()()()())()()()()()()())
((()()()()()())()()()()()()()()()()()()())
((())()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())
((()()()()()()())()()()()()()()())
((()()()()()()()()()())())
((()()()()())()()()())
((()()()()()())()()()()()()()()()()())
((()()()()()()()()())()()())
((())()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())
((())()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())
((()()()())()()()())
((()()()()()()()()())()())
((()()())()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())
((()()()()())()()()()()()()()()()()()()()())
((())()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())
((()()()())()()()())
((()()()()()()()())()()()()())
((())()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())
((()()()()()())()()()()()()()()()()()()())
((())()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())
((()())()()()()()()()()()()()()()()()()()()()()()()()()()()()()()){({}<>)({<({}[()])><>({})<>}{}<><{}><>)<>}<>

Probieren Sie es online!


Jede Zeile stellt einen Charakter dar, der gerade Golf spielt, das ist 60% besser als die Grundlösung, die ich veröffentlicht habe , und wenn ich buchstäblich nichts über Brainflak weiß, ist dies meiner Meinung nach eine gute Grundlage dafür, was ich nicht tun soll. Ich werde die Antwort in Kürze treffen, mitten in etwas anderem, und ich bin mir sicher, dass ich das verbessern kann. (Ich beziehe die Zeilenumbrüche in die Byteanzahl ein, weil ich nicht erwarte, dass dies gewinnt).


Hier sind einige Tipps: 1) Wenn Sie zwei Zahlen drücken (sagen Sie 4 und 5, um 20 zu erhalten), können Sie sie zusammenschieben, um Bytes zu sparen. Vergleichen (()()()())(()()()()())und ((()()()())())2) Die Multiplikation mit einer Konstanten kann viel kürzer sein alspush(); multiply(); . Um beispielsweise eine Zahl zu verdoppeln, können Sie dies (({}){})eher tun als (()())({}<>)({<({}[()])><>({})<>}{}<><{}>). Aber das ist keine schreckliche Grundlinie. Wenn du mehr Input willst,
chatte

@DJMcMayhem Ich habe ehrlich gesagt versucht, Deltas zwischen Zahlen zu verwenden und nach jedem negativen Delta neu zu starten. Aber ich sehe die Idee für Unterschiede auch ... Ich beziehe das jetzt ein ... es gibt auch einige andere Probleme damit, die ich behebe. Auch der 05AB1E-Code selbst ist ungolfed, nicht dass es darauf ankommt, aber ich möchte das auch wiederholen.
Magic Octopus Urn

Die Score Cases sind noch nicht erschienen. Wird in einer Woche oder 2
Christopher

@DJMcMayhem Wären Teiler von Deltas gut?
Magic Octopus Urn

Testfälle sind out
Christopher

2

Brain-Flak

For each character (main loop)
(([])<{({}[()]<

Get the difference between the top two characters
(({}<>)<>[({})]<><({}<>)>)

Push an open paren on the other stack
<>(((((()()){}()){}){}){})

Retrieve difference
(<>{}<>)

Greater than zero
([(({})[(())])](<>)){({}())<>}{}{((<{}>))<>{}}{}<>{}

If
{{}

While non-zero
({

Add value if not 1
<(({})[()])>{()(<{}>)}{}

<

Divmod 2
({}(())(<()>)){({}[()]<({}([{}]()))>)}{}({}[({})])

Hold the div
({}<

Push the mod part
{({}[()]<
((((((()()){}()){}){}){})())
>)}{}

Put div down
>)

Open paren if div non-zero
(({}))
{(<({}<{}
(((((()()){}()){}){}){})
>)>)}{}

Less than 4
([([({})[()()()()](())])](<>)){({}())<>}{}{((<{}>))<>{}}{}<>{}

If
{{}

Make that many 1s
{({}[()]<
((((((()()){}()){}){}){})())
>)}{}

End if
((<()>))}{}

End loop puting number of times run on the stack
>}{})

For each close push and pop
{({}[()]<
((((()()()()()){}){}){}())(((((((()()()()()){}){}){}())){}{})()())
>)}{}

End if
((<()>))}{}

Less than zero
([([({})(())])](<>)){({}())<>}{}{((<{}>))<>{}}{}<>{}

If
{{}

([{}]<

Push open bracket
((((((()()){}()){}()){}){}()){}())

>)

While non-zero
({

Add value if not 1
<(({})[()])>{()(<{}>)}{}

<

Divmod 2
({}(())(<()>)){({}[()]<({}([{}]()))>)}{}({}[({})])

Hold the div
({}<

Push the mod part
{({}[()]<
((((((()()){}()){}){}){})())
>)}{}

Put div down
>)

Open paren if div non-zero
(({}))
{(<({}<{}
(((((()()){}()){}){}){})
>)>)}{}

Less than 4
([([({})[()()()()](())])](<>)){({}())<>}{}{((<{}>))<>{}}{}<>{}

If
{{}

Make that many 1s
{({}[()]<
((((((()()){}()){}){}){})())
>)}{}

End if
((<()>))}{}

End loop puting number of times run on the stack
>}{})

For each close push and pop
{({}[()]<
((((()()()()()){}){}){}())(((((((()()()()()){}){}){}())){}{})()())
>)}{}

Push close bracket
((((((()()){}()){}()){}()){}){}())

Endif
((<()>))}{}{}

Remove top character
<>{}

End of main loop
>)}{}{}

Close the open parens
<>>){({}[()]<(((((()()){}()){}){}){}())>)}{}

Reverse code
([]){({}[()]<({}<>)<>>)}{}<>

Probieren Sie es online!

Ausgabe für <your brain-flak code here>582 Bytes:

([()((()(()(()()()){}){}){}){}]((()(()()){}){}([(()()()){}](()(()){}((()(((()(()()){}){}){}){}){}([(()((((()()){}){}){}){}){}]([(((()()){}){}){}](()(((()()){}){}){}([((()()){}){}]([()(()()){}](()(((((()()){}){}){}){}){}([()(((()(()()()){}){}){}){}]([(()()()){}](()(()(()()){}){}([(()(()()){}){}](()(()((()((()()){}){}){}){}){}([()(()((((()()){}){}){}){}){}]([((()()()){}){}](()(()(()()){}){}([()](()((()(((()()){}){}){}){}){}([(((()((()()){}){}){}){}){}](()(()){}([()((()()()){}){}](()((()()()){}){}(()(()(()((()()){}){}){}){}((()(()(()(()()()){}){}){}){})))))))))))))))))))))))))))
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.