Текст до Брейн-Флак


13

Ваше завдання полягає в тому, щоб перетворити вхідний текст на код, який буде виводити текст.

Підручник, взятий звідси з дозволу тут

Brain-Flak має дві стеки, відомі як "лівий" і "правий". Активний стек починається зліва. Якщо спливе порожній стек, він повернеться 0. Це все. Ніяких інших змінних. Коли програма запускається, кожен аргумент командного рядка висувається на активний стек.

Єдиними дійсними символами програми Brain-Flak є ()[]{}<>, і вони завжди повинні бути врівноваженими. Є два типи функцій: Nilads і монади . Nilad це функція , яка приймає 0 аргументів. Ось усі нилади:

  • () Оцінюється до одного.
  • [] Оцінює до висоти поточного стеку.
  • {}Поп активного стека. Оцінюється до спливаючого значення.
  • <>Увімкніть активний стек. Оцінюється до нуля.

Вони об'єднуються разом, коли вони оцінюються. Отже, якщо у нас був "3" поверх активного стека, цей фрагмент:

()(){}

оцінив би, до 1 + 1 + active.pop()якого оцінив би 5.

Монади беруть один аргумент, шматок коду Брейн-Флак. Ось усі монади:

  • (n) Натисніть «n» на активний стек.
  • [n] Оцінюється до мінус 'n'
  • {foo} Поки нуль не знаходиться у верхній частині стека, виконайте foo.
  • <foo> Виконайте foo, але оцініть його як 0.

Ці функції також повернуть значення всередині них, так

(()()())

Буде натискати 3, але

((()()()))

Буде натискати 3 двічі .

{}Оцінюватиме на суму всіх прогонів. Отже, якщо у нас було "3" і "4" у верхній частині стека:

{{}}

оцінили б як 7.

Коли програма виконана, кожне значення, що залишилося в активному стеку, друкується, між ними є новий рядок. Значення в іншій стеці ігноруються.

Правила

  • Ви можете припустити, що "Мозок-Флак" запускається з ассі. ( -A)
  • Код головного мозку НЕ повинен вимагати введення
  • Діють усі стандартні правила
  • Код повинен працювати протягом 1 хвилини для будь-якого вводу до 1024 байтів на TIO. (Якщо немає виводу TIO, надайте інтерпретатор, і я запускаю його на своїй машині (моя машина повинна мати можливість наблизитися до TIO)).
  • Ви повинні підтримувати введення довільної довжини.
  • Ви можете взяти дані з файлу.
  • Оптимізація для тестових випадків заборонена
  • Детермінований вихід необхідний
  • Програми не потребують чистого стеку

Тестові приклади (спробуйте свій код на цих, фактичні підрахунки тексту будуть опубліковані через 1-2 тижні після публікації виклику)

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.

Перемога

Щоб виграти, ви повинні вказати загальну тривалість коду, що задається головним мозком, який дається кожним із тестових випадків, який буде випущений через 1-2 тижні після дати публікації. Виграє найкоротша загальна довжина.

ПРИМІТКА!!!!!!:

Це не з кодом, довжина коду жодним чином не вплине на ваш остаточний рахунок. Оцінка чистого коду для читання. Спасибі!

Тестові справи

тут



4
Меми ТНБ - найбезпечніші з мемів.
Чарівний восьминога Урна

1
Хочеться, щоб я міг подвоїти це +1, замість цього я запропоную щедро, бо хочу знати, як це потрібно зробити. Перша відповідь, яка отримує <your brain-flak code here>менше 1000, - це нагорода. Що я не можу публікувати ще один день, отак; не помітив, як це було новим.
Чарівна восьминога Урна

1
Крім того, якщо діапазон вводу не обмежений для друку ASCII, то вам слід включити тестові випадки, які мають кожне значення байтів, включаючи байти NUL.
mbomb007

2
" Очищення читного
Чарівний восьминога

Відповіді:


13

Мозок-Флак , 130 байт

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

Спробуйте в Інтернеті!

Вихід <your brain-flak code here>: 5045 байт

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

Спробуйте в Інтернеті!


1
Шум мозку посилюється
Чарівний восьминіг Урна

1
@MagicOctopusUrn metaflakking : D
HyperNeutrino

Тестові справи вийшли
Крістофер

7

Пітон 3 , 17744 байт

Редагувати: я додав кілька варіантів, щоб допомогти гольфу в безпечних ситуаціях.

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)

Спробуйте в Інтернеті!

Просте рекурсивне рішення , яке я буду продовжувати подальше вдосконалення. Це дуже добре з меншими входами, але втрачає відповідь Ruby від MegaTom на довші введення.

Примітки:

  • Для роботи потрібен чистий стек, інакше поліпшення []стануть марними (хоча їх можна відключити, коментуючи пару рядків, і вони лише покращують її приблизно на 100 байт ).
  • Оскільки це рекурсивний алгоритм, для знаків з великими значеннями знадобиться більше часу. Наприклад, символу ÿ (значення 255) потрібно 9 секунд на оцінку, де кожен тестовий випадок за один раз займає 1,6 секунди. Кеш реалізований!
  • Ідея перевірити реверс безсоромно запозичена з відповіді HyperNeutrino , заощадивши 800 байт від загальної кількості.
  • Я змінив загальну суму від усіх тестових випадків одночасно на загальну кількість кожного тестового випадку. Це економить кілька байтів, додавши більше використання для оператора довжини стека ( [])
  • ~ 200 байт, вибираючи мінімум, попередньо додавши різницю між символами, або додаючи їх (знову ж, це економить байти через оператора довжини стека)
  • Реалізовано кеш (який кешує значення на основі довжини стека), що дозволило мені перевірити більше можливих проспектів, не переходячи часовий ліміт. Це врятувало 1500 байт від загальної кількості.
    • Крім того, я переключив ем тире в тестовому випадку Шекспіра на нормальний -. Це вирізало кілька байт, і багато часу, враховуючи значення цього ем тире, було 8212: o.
  • Виріжте 1200 байт з довших тестових кейсів, розрізавши їх на фрагменти і перевіривши, чи не було коротше перехід на інший стек, сконструюйте його в зворотному напрямку і знову натисніть на перший стек. Далі, ще більше нарізки та економія часу шляхом оптимізації мінімального діапазону нарізки.
  • Комбінована функція генерування чисел із перевіркою ефективності з попередньою символьною частиною в одну рекурсивну функцію. Тут є кілька розділів, які заощаджують кілька байтів, але продовжують час виконання програми трохи перевищувати обмеження на одну хвилину.
    • Відміняючи ці частини, ви можете скоротити її до 11394 байт ..., але це займає близько 16 хвилин.

Приклади виходів:

<your brain-flak code here> (312 байт):

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

Спробуйте в Інтернеті!

Hello, World!( 142 байти [Примітка. Поточний попередній кращий показник становив 148 байт , а зараз 136 байт]):

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

Спробуйте в Інтернеті!


перевірка розвороту економить 800 байт? o_O
HyperNeutrino

також слід кешувати результати своєї рекурсивної функції; заощадив би стільки часу
HyperNeutrino

@HyperNeutrino кешування означає, що я не можу використовувати оператор довжини стека, що фактично економить багато, особливо для коротших входів
Jo King

1
@HyperNeutrino Я щойно зрозумів, що я можу мати кеш, якщо я роблю окремі кеші на кожну висоту стека
Jo King,

1
Ваш головоломковий метагольфіст з головного мозку найкращий варіант відповіді на регулярний гольф, що має мозок? Що.
Чарівний восьминога Урна

5

Ruby , 17398 байт для всіх (нових) тестових випадків

# 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

Спробуйте в Інтернеті!


<your brain-flak code here>, 362 358 байт

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

Спробуйте в Інтернеті!


Ваш код займає більше 1 хвилини для всіх тестових випадків одночасно (~ 950 байт). Добре, що він створює досить короткий код для більш довгих окремих тестових випадків.
Джо Кінг

@JoKing Цілком зрозуміло, що це займає більше часу для кожного випадку: P
Крістофер

@Christopher Я мав на увазі Must run under 1 minute for inputs up to 1024 bytesправило (хоча зараз це набагато швидше)
Джо Кінг,

1
Хоча насправді це не має значення для виконання коду, об'єкт, який зберігає дані для подальшого використання, називається a cache, not cash; p
значення чорнила

Тестові справи вийшли
Крістофер

4

Пітон 3 , 16222 байт

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

Спробуйте в Інтернеті!

Спочатку нижче 1000 для <your brain-flak code here>: D

Мозок-Флак , 448 байт

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

Спробуйте в Інтернеті!

(спочатку 827 для <your brain-flak code here>)


Скоро Баунті вкл.
Чарівний восьминога Урна

@MagicOctopusUrn cool ty: D
HyperNeutrino

Зараз у вас 16222 байт
Jo King

Сподіваюся, 250 було круто.
Чарівний восьминога Урна

@MagicOctopusUrn 250 - це чудово: D tyvm
HyperNeutrino

3

05AB1E , занадто багато байтів (Мій перший BF що-небудь)

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

Спробуйте в Інтернеті!


Надзвичайно основна спроба гри в гольф, використовуючи попередньо «множення» коду мозку. Все це робить - знаходить пару дільниць найменшої суми для кожної точки коду ASCII, а потім висуває обидві ці пари дільниць як числа. Потім код Brainflak ({}<>)({<({}[()])><>({})<>}{}<><{}>)додається і виконується в циклі, поки всі значення не опиняться на альтернативному стеку.


Список людей, яким я дякую:

  • DJMcMayhem для вказівки (()())(()()())= ((()())())( -252 bytes)
  • DJMcMayhem, що показав мені, як повинні працювати петлі ( -927 bytes).

Приклад гольфу <your brain-flak code here>на 3470 3218 2291 байт:

Мозг-Флак , 2291 байт

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

Спробуйте в Інтернеті!


Кожен рядок являє собою одного персонажа, який займається гольфом, це перемагає основне рішення, яке я опублікував на 60% , і, розуміючи, що про Brainflak буквально нічого не знаю, я відчуваю, що це хороша база того, що не потрібно робити. Я відповім через деякий час, посеред чогось іншого, і я впевнений, що зможу покращити це. (Я включаю нові рядки в число байтів, тому що не очікую, що це переможе).


Ось кілька порад: 1) Якщо ви натискаєте два числа (скажімо, 4 і 5, щоб отримати 20), то ви можете зсунути їх, щоб зберегти байти. Порівняйте (()()()())(()()()()())та ((()()()())())2) Множення на константу може бути набагато коротшим, ніж push(); multiply();. Наприклад, щоб подвоїти число, ви можете зробити, (({}){})а не (()())({}<>)({<({}[()])><>({})<>}{}<><{}>). Але це не страшна базова лінія. Якщо ви хочете отримати більше інформації, я завжди радий поспілкуватися в третій групі
Джеймс

@DJMcMayhem Я чесно хотів використовувати дельта між числами, перезавантажуючись після кожної негативної дельти. Але я також бачу ідею для відмінностей ... Я включаю, що зараз ... є деякі інші проблеми з цим, а також, які я вирішую. Крім того, код 05AB1E сам по собі не перероблений, що не має значення, але я хочу також повторити це.
Чарівний восьминога Урна

Шкільні випадки ще не вийшли. Буде пінг через тиждень чи 2, коли я публікую повідомлення (уникайте рішення щодо оптимізації тестових випадків)
Крістофер

@DJMcMayhem Чи добре би дільникам дельти?
Чарівний восьминога Урна

Тестові справи вийшли
Крістофер

3

Мозок-Флак

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
([]){({}[()]<({}<>)<>>)}{}<>

Спробуйте в Інтернеті!

Вихід для <your brain-flak code here>582 байт:

([()((()(()(()()()){}){}){}){}]((()(()()){}){}([(()()()){}](()(()){}((()(((()(()()){}){}){}){}){}([(()((((()()){}){}){}){}){}]([(((()()){}){}){}](()(((()()){}){}){}([((()()){}){}]([()(()()){}](()(((((()()){}){}){}){}){}([()(((()(()()()){}){}){}){}]([(()()()){}](()(()(()()){}){}([(()(()()){}){}](()(()((()((()()){}){}){}){}){}([()(()((((()()){}){}){}){}){}]([((()()()){}){}](()(()(()()){}){}([()](()((()(((()()){}){}){}){}){}([(((()((()()){}){}){}){}){}](()(()){}([()((()()()){}){}](()((()()()){}){}(()(()(()((()()){}){}){}){}((()(()(()(()()()){}){}){}){})))))))))))))))))))))))))))
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.