Nhắn tin cho Brain-Flak


13

Thách thức của bạn là biến văn bản đầu vào thành mã não sẽ xuất văn bản.

Hướng dẫn lấy từ đây với sự cho phép ở đây

Brain-Flak có hai ngăn xếp, được gọi là 'trái' và 'phải'. Ngăn xếp hoạt động bắt đầu ở bên trái. Nếu một ngăn xếp trống được bật lên, nó sẽ trả về 0. Đó là nó. Không có biến khác. Khi chương trình bắt đầu, mỗi đối số dòng lệnh được đẩy vào ngăn xếp hoạt động.

Các ký tự hợp lệ duy nhất trong chương trình Brain-Flak là ()[]{}<>và chúng phải luôn được cân bằng. Có hai loại chức năng: NiladsMonads . Một nilad là một hàm có 0 đối số. Dưới đây là tất cả các con số không:

  • () Đánh giá một.
  • [] Đánh giá chiều cao của ngăn xếp hiện tại.
  • {}Pop ngăn xếp hoạt động. Đánh giá giá trị popped.
  • <>Chuyển đổi ngăn xếp hoạt động. Đánh giá bằng không.

Chúng được nối với nhau khi chúng được đánh giá. Vì vậy, nếu chúng tôi có '3' trên đầu ngăn xếp hoạt động, đoạn mã này:

()(){}

sẽ đánh giá 1 + 1 + active.pop()mà sẽ đánh giá đến 5.

Các đơn vị lấy một đối số, một đoạn mã Brain-Flak. Dưới đây là tất cả các đơn nguyên:

  • (n) Nhấn 'n' trên ngăn xếp hoạt động.
  • [n] Đánh giá âm 'n'
  • {foo} Trong khi số 0 không nằm trên đỉnh của ngăn xếp, hãy thực hiện foo.
  • <foo> Thực thi foo, nhưng đánh giá nó là 0.

Các hàm này cũng sẽ trả về giá trị bên trong chúng, vì vậy

(()()())

Sẽ đẩy 3 nhưng

((()()()))

Sẽ đẩy 3 lần .

Các {}sẽ đánh giá để tổng của tất cả chạy. Vì vậy, nếu chúng ta có '3' và '4' trên đỉnh của ngăn xếp:

{{}}

sẽ đánh giá là 7.

Khi chương trình được thực thi xong, mỗi giá trị còn lại trên ngăn xếp hoạt động sẽ được in, với một dòng mới ở giữa. Các giá trị trên ngăn xếp khác được bỏ qua.

Quy tắc

  • Bạn có thể cho rằng Brain-Flak đang được chạy với ascii. ( -A)
  • Mã não phải KHÔNG yêu cầu đầu vào
  • Tất cả các quy tắc tiêu chuẩn được áp dụng
  • Mã phải chạy trong vòng 1 phút cho bất kỳ đầu vào nào lên tới 1024 byte trên TIO. (Nếu không có đầu ra TIO, hãy cung cấp trình thông dịch và tôi sẽ chạy nó trên máy của mình (máy của tôi sẽ có thể đến gần TIO)).
  • Bạn phải hỗ trợ đầu vào chiều dài tùy ý.
  • Bạn có thể lấy đầu vào từ một tập tin.
  • Tối ưu hóa cho các trường hợp thử nghiệm không được phép
  • Đầu ra xác định là cần thiết
  • Các chương trình không cần phải được dọn sạch

Các trường hợp thử nghiệm (thử mã của bạn về những điều này, các văn bản chấm điểm thực tế sẽ được phát hành sau 1-2 tuần sau khi thử thách được đăng)

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.

Chiến thắng

Để giành chiến thắng, bạn phải cung cấp tổng chiều dài của mã não được cung cấp bởi mỗi trường hợp thử nghiệm sẽ được phát hành 1-2 tuần sau ngày đăng. Tổng chiều dài ngắn nhất chiến thắng.

GHI CHÚ!!!!!!:

Đây không phải là , độ dài mã của bạn sẽ không ảnh hưởng đến điểm số cuối cùng của bạn dưới bất kỳ hình thức nào. Làm cho mã sạch có thể đọc được đánh giá cao. Cảm ơn!

Các trường hợp thử nghiệm

đây



4
Các memes TNB là những meme mạnh nhất.
Bạch tuộc ma thuật Urn

1
Ước gì tôi có thể nhân đôi +1 này, thay vào đó tôi sẽ đưa ra một khoản tiền thưởng vì tôi muốn biết làm thế nào để thực hiện việc này. Câu trả lời đầu tiên nhận được <your brain-flak code here>dưới 1000 được trao tiền thưởng. Mà tôi không thể đăng cho một ngày khác, rất tiếc; đã không nhận thấy làm thế nào mới này.
Bạch tuộc ma thuật Urn

1
Ngoài ra, nếu phạm vi đầu vào không giới hạn ở ASCII có thể in, thì bạn nên bao gồm các trường hợp thử nghiệm có mọi giá trị byte, bao gồm các byte NUL.
mbomb007

2
"Làm cho mã sạch, dễ đọc được đánh giá cao" vội vàng thực hiện thử thách trong 05AB1E
Magic Octopus Urn

Câu trả lời:


13

Brain-Flak , 130 byte

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

Hãy thử trực tuyến!

Đầu ra cho <your brain-flak code here>: 5045 byte

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

Hãy thử trực tuyến!



1
@MagicOctopusUrn metaflakking : D
HyperNeutrino 15/03/18

Các trường hợp thử nghiệm đã được đưa ra
Christopher

7

Python 3 , 17744 byte

Chỉnh sửa: Tôi đã thêm một vài tùy chọn để giúp chơi gôn trong các tình huống an toàn.

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)

Hãy thử trực tuyến!

Một giải pháp đệ quy đơn giản mà tôi sẽ tiếp tục cải thiện hơn nữa. Điều này rất tốt với đầu vào nhỏ hơn, nhưng mất đi câu trả lời Ruby của MegaTom cho các đầu vào dài hơn.

Ghi chú:

  • Điều này cần một ngăn xếp sạch để hoạt động, nếu không thì các cải tiến []trở nên vô dụng (mặc dù chúng có thể bị vô hiệu hóa bằng cách nhận xét một vài dòng và chúng chỉ cải thiện nó khoảng 100 byte một chút).
  • Vì đây là một thuật toán đệ quy, sẽ mất nhiều thời gian hơn cho các ký tự có giá trị lớn. Ví dụ: ký tự (giá trị 255) mất 9 giây để đánh giá, trong đó mỗi trường hợp kiểm tra cùng một lúc mất 1,6 giây.Cache được triển khai!
  • Ý tưởng kiểm tra ngược lại không biết xấu hổ mượn từ câu trả lời của HyperNeutrino , tiết kiệm 800 byte trong tổng số.
  • Tôi đã thay đổi tổng số từ tất cả các trường hợp thử nghiệm cùng một lúc thành tổng số của từng trường hợp thử nghiệm. Điều này tiết kiệm một số byte bằng cách thêm nhiều sử dụng cho toán tử độ dài ngăn xếp ([] )
  • ~ 200 byte từ việc chọn mức tối thiểu để thêm vào sự khác biệt giữa các ký tự hoặc nối thêm chúng (một lần nữa, điều này sẽ lưu byte thông qua toán tử độ dài ngăn xếp)
  • Đã triển khai bộ đệm (lưu trữ các giá trị dựa trên chiều dài ngăn xếp), cho phép tôi kiểm tra các con đường có thể hơn mà không đi quá giới hạn thời gian. Điều này đã lưu 1500 byte từ tổng số.
    • Ngoài ra, tôi đã chuyển em dash trong trường hợp thử nghiệm Shakespeare sang bình thường -. Điều này cắt ra một vài byte và rất nhiều thời gian cho giá trị của dấu gạch ngang đó là 8212: o.
  • Cắt ra 1200 byte từ các trường hợp thử nghiệm dài hơn bằng cách cắt chúng thành các lát và kiểm tra xem nó có ngắn hơn để chuyển sang ngăn xếp khác hay không, xây dựng ngược lại và đẩy nó trở lại ngăn xếp đầu tiên. Tiếp theo, thậm chí cắt nhiều hơn và tiết kiệm thời gian bằng cách tối ưu hóa phạm vi cắt tối thiểu.
  • Kết hợp chức năng tạo số với việc kiểm tra tính hiệu quả với phần ký tự trước đó thành một hàm đệ quy. Có một vài phần ở đây để lưu một số byte, nhưng kéo dài thời gian chạy của chương trình vượt quá giới hạn một phút.
    • Việc bỏ qua các phần đó có thể cắt giảm xuống còn 11394 byte ... nhưng mất khoảng 16 phút.

Kết quả ví dụ:

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

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

Hãy thử trực tuyến!

Hello, World!( 142 byte [Lưu ý: Mức tốt nhất trước đây hiện tại148 byte và hiện là 136 byte]):

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

Hãy thử trực tuyến!


kiểm tra đảo ngược tiết kiệm 800 byte? o_O
HyperNeutrino

bạn cũng nên lưu trữ kết quả của hàm đệ quy; sẽ tiết kiệm rất nhiều thời gian
HyperNeutrino

@HyperNeutrino Bộ nhớ đệm có nghĩa là tôi không thể sử dụng toán tử độ dài ngăn xếp, điều này thực sự tiết kiệm rất nhiều, đặc biệt là cho các đầu vào ngắn hơn
Jo King

1
@HyperNeutrino Tôi mới nhận ra tôi có thể có bộ đệm, miễn là tôi tạo bộ đệm riêng cho mỗi chiều cao ngăn xếp
Jo King

1
Người chơi golf siêu năng lực của bạn đã chơi golf câu trả lời tốt nhất cho một môn đánh gôn thông thường? Gì.
Bạch tuộc ma thuật Urn

5

Ruby , 17398 byte cho tất cả các trường hợp thử nghiệm (mới)

# 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

Hãy thử trực tuyến!


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

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

Hãy thử trực tuyến!


Mã của bạn mất hơn 1 phút cho tất cả các trường hợp thử nghiệm cùng một lúc (~ 950 byte). Thật tốt khi nó tạo ra mã khá ngắn cho các trường hợp thử nghiệm riêng lẻ dài hơn.
Jo King

@JoKing cũng tốt, nó mất nhiều thời gian hơn cho mọi trường hợp: P
Christopher

@Christopher Tôi đã đề cập đến Must run under 1 minute for inputs up to 1024 bytesquy tắc (mặc dù bây giờ nhanh hơn nhiều)
Jo King

1
Mặc dù nó không thực sự quan trọng đối với việc thực thi mã, một đối tượng lưu trữ dữ liệu để sử dụng sau này được gọi là a cache, không cash; p
Value Ink

Các trường hợp thử nghiệm đã được đưa ra
Christopher

4

Python 3 , 16222 byte

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

Hãy thử trực tuyến!

Đầu tiên dưới 1000 cho <your brain-flak code here>: D

Brain-Flak , 448 byte

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

Hãy thử trực tuyến!

(ban đầu là 827 cho <your brain-flak code here>)


Bounty inc, sớm.
Bạch tuộc ma thuật Urn

@MagicOctopusUrn mát mẻ ty: D
HyperNeutrino

Bây giờ bạn có tổng số 16222 byte
Jo King

Hy vọng 250 là mát mẻ.
Bạch tuộc ma thuật Urn

@MagicOctopusUrn 250 thật tuyệt: D
tyvm

3

05AB1E , quá nhiều byte (BF đầu tiên của tôi)

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

Hãy thử trực tuyến!


Nỗ lực cực kỳ cơ bản trong việc chơi golf bằng cách sử dụng mã Brain-flak "nhân". Tất cả điều này là tìm cặp ước số tổng nhỏ nhất cho mỗi điểm mã ASCII, sau đó đẩy cả hai cặp ước đó thành số. Mã Brainflak ({}<>)({<({}[()])><>({})<>}{}<><{}>)sau đó được nối thêm và được thực thi trong một vòng lặp cho đến khi tất cả các giá trị nằm trên ngăn xếp thay thế.


Danh sách những người tôi đang cảm ơn:

  • DJMcMayhem để chỉ ra (()())(()()())= ((()())())( -252 bytes)
  • DJMcMayhem đã cho tôi thấy các vòng lặp nên hoạt động như thế nào (-927 bytes ).

Ví dụ golf <your brain-flak code here>3470 3218 2291 byte:

Brain-Flak , 2291 byte

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

Hãy thử trực tuyến!


Mỗi hàng đại diện cho một nhân vật được chơi golf, điều này đánh bại giải pháp cơ bản tôi đã đăng 60% và không biết gì về Brainflak theo nghĩa đen. Tôi cảm thấy đây là cơ sở tốt của những việc không nên làm. Tôi sẽ chấm điểm câu trả lời trong một thời gian ngắn, ở giữa một thứ khác và tôi chắc chắn rằng tôi có thể cải thiện vấn đề này. (Tôi đang bao gồm các dòng mới trong số byte vì tôi không hy vọng điều này sẽ thắng).


Dưới đây là một số mẹo: 1) Nếu bạn đang đẩy hai số (giả sử 4 và 5 để lấy 20), thì bạn có thể đẩy chúng lại với nhau để lưu byte. So sánh (()()()())(()()()()())((()()()())())2) Phép nhân với hằng số có thể ngắn hơn nhiều push(); multiply();. Ví dụ, để nhân đôi một số, bạn có thể làm (({}){})hơn là (()())({}<>)({<({}[()])><>({})<>}{}<><{}>). Nhưng đây không phải là một cơ sở khủng khiếp. Nếu bạn muốn có thêm đầu vào, tôi luôn vui vẻ trò chuyện trong ngăn xếp thứ ba
DJMcMayhem

@DJMcMayhem Tôi thực sự muốn sử dụng deltas giữa các số, khởi động lại sau mỗi delta âm. Nhưng tôi cũng thấy ý tưởng cho sự khác biệt ... Tôi đang kết hợp rằng bây giờ ... có một số vấn đề khác với điều này cũng như tôi đang sửa chữa. Ngoài ra, bản thân mã 05AB1E là vô căn cứ, không phải là vấn đề, nhưng tôi cũng muốn làm lại điều đó.
Bạch tuộc ma thuật Urn

Các trường hợp điểm chưa ra. Sẽ ping trong một hoặc hai tuần khi tôi đăng bài (tránh giải pháp tối ưu hóa trường hợp thử nghiệm)
Christopher

@DJMcMayhem Liệu ước số của deltas có tốt không?
Bạch tuộc ma thuật Urn

Các trường hợp thử nghiệm đã hết
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
([]){({}[()]<({}<>)<>>)}{}<>

Hãy thử trực tuyến!

Đầu ra cho <your brain-flak code here>, 582 byte:

([()((()(()(()()()){}){}){}){}]((()(()()){}){}([(()()()){}](()(()){}((()(((()(()()){}){}){}){}){}([(()((((()()){}){}){}){}){}]([(((()()){}){}){}](()(((()()){}){}){}([((()()){}){}]([()(()()){}](()(((((()()){}){}){}){}){}([()(((()(()()()){}){}){}){}]([(()()()){}](()(()(()()){}){}([(()(()()){}){}](()(()((()((()()){}){}){}){}){}([()(()((((()()){}){}){}){}){}]([((()()()){}){}](()(()(()()){}){}([()](()((()(((()()){}){}){}){}){}([(((()((()()){}){}){}){}){}](()(()){}([()((()()()){}){}](()((()()()){}){}(()(()(()((()()){}){}){}){}((()(()(()(()()()){}){}){}){})))))))))))))))))))))))))))
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.