Texte à Brain-Flak

13

Votre défi est de transformer le texte d'entrée en code de flak de cerveau qui produira le texte.

Tutoriel tiré d' ici avec autorisation ici

Brain-Flak a deux piles, appelées «gauche» et «droite». La pile active commence à gauche. Si une pile vide est sautée, elle retournera 0. C'est tout. Pas d'autres variables. Lorsque le programme démarre, chaque argument de ligne de commande est poussé vers la pile active.

Les seuls caractères valides d'un programme Brain-Flak le sont ()[]{}<>et ils doivent toujours être équilibrés. Il existe deux types de fonctions: Nilades et Monades . Un nilad est une fonction qui prend 0 arguments. Voici toutes les nilades:

  • () Évalue à un.
  • [] Évalue à la hauteur de la pile actuelle.
  • {}Pop la pile active. Évalue la valeur sautée.
  • <>Basculez la pile active. Évalue à zéro.

Ceux-ci sont concaténés ensemble lorsqu'ils sont évalués. Donc, si nous avions un «3» au-dessus de la pile active, cet extrait de code:

()(){}

évaluerait 1 + 1 + active.pop() qui évaluerait à 5.

Les monades prennent un argument, un morceau de code Brain-Flak. Voici toutes les monades:

  • (n) Appuyez sur 'n' sur la pile active.
  • [n] Évalue à «n» négatif
  • {foo} Bien que zéro ne soit pas au sommet de la pile, faites-le.
  • <foo> Exécutez foo, mais évaluez-le à 0.

Ces fonctions renverront également la valeur à l'intérieur d'eux, donc

(()()())

Poussera 3 mais

((()()()))

Poussera 3 fois .

L' {}évaluera à la somme de tous les runs. Donc, si nous avions «3» et «4» en haut de la pile:

{{}}

serait évalué comme 7.

Une fois le programme exécuté, chaque valeur restante sur la pile active est imprimée, avec une nouvelle ligne entre. Les valeurs de l'autre pile sont ignorées.

Règles

  • Vous pouvez supposer que le Brain-Flak est exécuté avec ascii out. (-A )
  • Le code brain-flak ne doit PAS nécessiter d'entrée
  • Toutes les règles standard s'appliquent
  • Le code doit s'exécuter dans 1 minute pour toute entrée jusqu'à 1024 octets sur TIO. (Si aucune sortie TIO n'est disponible, fournissez un interprète et je l'exécuterai sur ma machine (ma machine devrait pouvoir s'approcher de TIO)).
  • Vous devez prendre en charge la saisie de longueur arbitraire.
  • Vous pouvez prendre des entrées à partir d'un fichier.
  • L'optimisation pour les cas de test n'est pas autorisée
  • Une sortie déterministe est requise
  • Les programmes n'ont pas besoin d'être propres

Cas de test (essayez votre code sur ceux-ci, les textes de notation réels seront publiés dans les 1-2 semaines après la publication du défi)

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.

Gagnant

Pour gagner, vous devez donner la longueur totale du code brain-flak donné par chacun des cas de test qui sera publié 1 à 2 semaines après la date du post. La longueur totale la plus courte l'emporte.

REMARQUE!!!!!!:

Ce n'est pas du , la longueur de votre code n'affectera en aucun cas votre score final. Faire du code lisible est apprécié. Merci!

Cas de test

ici

Christophe
la source
Boxofsand
Christopher
4
Les mèmes TNB sont les plus mèmes.
Urne de poulpe magique
1
J'aimerais pouvoir doubler +1, mais je vais offrir une prime parce que je veux savoir comment cela était censé être fait. La première réponse qui obtient <your brain-flak code here>moins de 1000 est récompensée par la prime. Que je ne peux pas poster pour un autre jour, oups; n'a pas remarqué à quel point c'était nouveau.
Urne de poulpe magique le
1
De plus, si la plage d'entrée n'est pas limitée à l'ASCII imprimable, vous devez inclure des cas de test qui ont chaque valeur d'octet, y compris les octets NUL.
mbomb007
2
"Faire du code propre et lisible est apprécié" à la hâte dans 05AB1E
Urne Magic Octopus le

Réponses:

13

Brain-Flak , 130 octets

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

Essayez-le en ligne!

Sortie pour <your brain-flak code here>: 5045 octets

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

Essayez-le en ligne!

HyperNeutrino
la source
1
Intensification du
Urne de poulpe magique
1
@MagicOctopusUrn metaflakking : D
HyperNeutrino
Les cas de test sont sortis
Christopher
7

Python 3 , 17744 octets

Edit: J'ai ajouté quelques options pour aider le golf dans des situations de stack sécurisé.

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)

Essayez-le en ligne!

Une solution récursive simple que je continuerai d'améliorer encore. Cela fonctionne très bien avec des entrées plus petites, mais perd la réponse Ruby de MegaTom pour des entrées plus longues.

Remarques:

  • Cela nécessite une pile propre pour fonctionner, sinon les améliorations []deviennent inutiles (bien qu'elles puissent être désactivées en commentant quelques lignes, et elles ne l'améliorent que d' environ 100 octets). un peu).
  • Comme il s'agit d'un algorithme récursif, cela prendra plus de temps pour les caractères avec de grandes valeurs. Par exemple, le caractère ÿ (valeur 255) prend 9 secondes à évaluer, où chaque cas de test prend à la fois 1,6 seconde.Cache implémenté!
  • Idée de vérifier l'inverse empruntée sans vergogne à la réponse d' HyperNeutrino , économisant 800 octets du total.
  • J'ai changé le total de tous les cas de test à la fois pour le total de chaque cas de test. Cela permet d'économiser quelques octets en ajoutant d'autres utilisations pour l'opérateur de longueur de pile ([] )
  • ~ 200 octets de choisir le minimum de préfixer la différence entre les caractères, ou de les ajouter (encore une fois, cela économise des octets via l'opérateur de longueur de pile)
  • Implémentation d'un cache (qui met en cache les valeurs en fonction de la longueur de la pile), ce qui m'a permis de vérifier plus d'avenues possibles sans dépasser le délai. Cela a sauvé 1500 octets du total.
    • De plus, j'ai changé le tiret cadratin du scénario de test de Shakespeare en normal -. Cela a coupé quelques octets, et beaucoup de temps étant donné la valeur de ce tiret em était 8212: o.
  • Supprimez 1 200 octets des cas de test les plus longs en les découpant en tranches et en vérifiant s'il était plus court de passer à l'autre pile, de le construire à l'envers et de le repousser à la première pile. Ensuite, encore plus de découpage et gagnez du temps en optimisant la plage de découpage minimale.
  • Combiné la fonction de génération de nombres avec la vérification de l'efficacité avec la partie de caractère précédente en une fonction récursive. Il y a quelques sections ici qui économisent quelques octets, mais étendent l'exécution du programme un peu au-delà de la limite d'une minute.
    • Décommenter ces parties peut le réduire à 11394 octets ... mais prend environ 16 minutes.

Exemples de sorties:

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

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

Essayez-le en ligne!

Hello, World!( 142 octets [Remarque: le meilleur précédent actuel était de 148 octets , et est maintenant de 136 octets]):

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

Essayez-le en ligne!

Jo King
la source
vérifier l'inversion économise 800 octets? o_O
HyperNeutrino
vous devez également mettre en cache les résultats de votre fonction récursive; économiserait tellement de temps
HyperNeutrino
@HyperNeutrino Caching signifie que je ne peux pas utiliser l'opérateur de longueur de pile, ce qui économise beaucoup, en particulier pour les entrées plus courtes
Jo King
1
@HyperNeutrino Je viens de réaliser que je peux avoir un cache, tant que je crée des caches séparés pour chaque hauteur de pile
Jo King
1
Votre méta-golfeur brain-flak a surpassé la meilleure réponse pour un golf régulier brain-flak? Quoi.
Urne de poulpe magique
5

Ruby , 17398 octets pour tous les (nouveaux) cas de test

# 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

Essayez-le en ligne!


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

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

Essayez-le en ligne!

MegaTom
la source
Votre code prend plus d'une minute pour tous les cas de test à la fois (~ 950 octets). C'est bien qu'il produise du code assez court pour les cas de test individuels plus longs.
Jo King
@JoKing c'est bien que cela prenne plus de temps pour tous les cas: P
Christopher
@Christopher Je faisais référence à la Must run under 1 minute for inputs up to 1024 bytesrègle (bien que ce soit beaucoup plus rapide maintenant)
Jo King
1
Bien que cela n'ait pas d'importance pour l'exécution du code, un objet qui stocke des données pour une utilisation ultérieure est appelé a cache, not cash; p
Value Ink
Les cas de test sont sortis
Christopher
4

Python 3 , 16222 octets

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))

Essayez-le en ligne!

Premier en dessous de 1000 pour <your brain-flak code here>: D

Brain-Flak , 448 octets

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

Essayez-le en ligne!

(à l'origine 827 pour <your brain-flak code here>)

HyperNeutrino
la source
Bounty inc, bientôt.
Magic Octopus Urn
@MagicOctopusUrn cool ty: D
HyperNeutrino
Vous êtes maintenant à 16222 octets au total
Jo King
Hope 250 était cool.
Urne de poulpe magique
@MagicOctopusUrn 250 est génial: D tyvm
HyperNeutrino
3

05AB1E , trop d'octets (Mon premier BF quoi que ce soit)

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

Essayez-le en ligne!


Tentative extrêmement simple de jouer au golf en utilisant un code Brain-flak prédéfini de "multiplication". Tout cela ne fait que trouver la paire de diviseurs la plus petite somme pour chaque point de code ASCII, puis pousse ces deux paires de diviseurs sous forme de nombres. Le code Brainflak ({}<>)({<({}[()])><>({})<>}{}<><{}>)est ensuite ajouté et exécuté en boucle jusqu'à ce que toutes les valeurs se trouvent sur la pile alternative.


Liste des personnes que je remercie:

  • DJMcMayhem pour avoir souligné (()())(()()())= ((()())())(-252 bytes )
  • DJMcMayhem pour m'avoir montré comment les boucles devraient fonctionner ( -927 bytes).

Exemple de golf <your brain-flak code here>à 3470 3218 2291 octets:

Brain-Flak , 2291 octets

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

Essayez-le en ligne!


Chaque ligne représente un personnage en cours de golf, ce qui bat la solution de base que j'ai publiée de 60% , et en sachant littéralement rien sur Brainflak, je pense que c'est une bonne ligne de base de ce qu'il ne faut pas faire. Je vais marquer la réponse dans un petit moment, au milieu de quelque chose d'autre et je suis sûr que je peux améliorer cela. (J'inclus les nouvelles lignes dans le nombre d'octets parce que je ne m'attends pas à ce que cela gagne).

Urne de poulpe magique
la source
Voici quelques conseils: 1) Si vous appuyez sur deux nombres (disons 4 et 5 pour obtenir 20), vous pouvez les rapprocher pour économiser des octets. Comparer (()()()())(()()()()())et ((()()()())())2) La multiplication par une constante peut être beaucoup plus courte que push(); multiply();. Par exemple, pour doubler un nombre, vous pouvez faire (({}){})plutôt que (()())({}<>)({<({}[()])><>({})<>}{}<><{}>). Mais ce n'est pas une terrible référence. Si vous voulez plus d'informations, je suis toujours heureux de discuter dans la troisième pile
James
@DJMcMayhem Je cherchais honnêtement à utiliser des deltas entre les nombres, en redémarrant après chaque delta négatif. Mais je vois aussi l'idée de différences ... J'incorpore ça maintenant ... il y a aussi d'autres problèmes avec ça que je corrige. De plus, le code 05AB1E lui-même n'est pas golfé, ce n'est pas important, mais je veux le refaire aussi.
Urne Magic Octopus
Les cas de score ne sont pas encore sortis. Pingera dans une semaine ou 2 lorsque je
Christopher
@DJMcMayhem Les diviseurs de deltas seraient-ils bons?
Magic Octopus Urn
Les cas de test sont sortis
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
([]){({}[()]<({}<>)<>>)}{}<>

Essayez-le en ligne!

Sortie pour <your brain-flak code here>, 582 octets:

([()((()(()(()()()){}){}){}){}]((()(()()){}){}([(()()()){}](()(()){}((()(((()(()()){}){}){}){}){}([(()((((()()){}){}){}){}){}]([(((()()){}){}){}](()(((()()){}){}){}([((()()){}){}]([()(()()){}](()(((((()()){}){}){}){}){}([()(((()(()()()){}){}){}){}]([(()()()){}](()(()(()()){}){}([(()(()()){}){}](()(()((()((()()){}){}){}){}){}([()(()((((()()){}){}){}){}){}]([((()()()){}){}](()(()(()()){}){}([()](()((()(((()()){}){}){}){}){}([(((()((()()){}){}){}){}){}](()(()){}([()((()()()){}){}](()((()()()){}){}(()(()(()((()()){}){}){}){}((()(()(()(()()()){}){}){}){})))))))))))))))))))))))))))
Post Rock Garf Hunter
la source