브레인 플락에게 보내는 텍스트


13

당신의 도전은 입력 텍스트를 텍스트를 출력 할 뇌-플래그 코드로 바꾸는 것입니다.

여기 에서 권한을 가지고 여기 에서 가져온 튜토리얼

Brain-Flak에는 '왼쪽'과 '오른쪽'으로 알려진 두 개의 스택이 있습니다. 활성 스택은 왼쪽에서 시작합니다. 빈 스택이 튀어 나오면 0을 반환합니다. 그게 다입니다. 다른 변수는 없습니다. 프로그램이 시작되면 각 명령 행 인수가 활성 스택으로 푸시됩니다.

Brain-Flak 프로그램에서 유일하게 유효한 문자는 ()[]{}<>이며 항상 균형을 유지해야합니다. 함수에는 NiladsMonads 의 두 가지 유형이 있습니다 . nilad은 0 인수를 취하는 함수이다. 모든 nilads는 다음과 같습니다.

  • () 하나로 평가합니다.
  • [] 현재 스택의 높이로 평가합니다.
  • {}활성 스택을 팝하십시오. 팝된 값으로 평가합니다.
  • <>활성 스택을 토글합니다. 0으로 평가됩니다.

이들은 평가 될 때 함께 연결됩니다. 따라서 활성 스택 위에 '3'이 있으면이 스 니펫은 다음과 같습니다.

()(){}

로 평가 될 것이다 1 + 1 + active.pop()5로 평가 것이다.

모나드는 브레인-플락 (Brain-Flak) 코드 덩어리라는 하나의 주장을 취합니다. 다음은 모든 모나드입니다.

  • (n) 활성 스택에서 'n'을 누릅니다.
  • [n] 음수 'n'으로 평가
  • {foo} 스택의 맨 위에 0이없는 동안 foo를 수행하십시오.
  • <foo> foo를 실행하지만 0으로 평가하십시오.

이 함수는 내부의 값도 반환하므로

(()()())

3을 밀어 주지만

((()()()))

3을 두 번 누릅니다 .

{}모든 실행의 합계로 평가합니다. 따라서 스택 맨 위에 '3'과 '4'가 있다면 :

{{}}

7로 평가됩니다

프로그램 실행이 완료되면 활성 스택에 남은 각 값이 줄 바꿈으로 인쇄됩니다. 다른 스택의 값은 무시됩니다.

규칙

  • Brain-Flak이 ASCII로 실행되고 있다고 가정 할 수 있습니다. ( -A)
  • brain-flak 코드는 입력을 요구해서는 안됩니다
  • 모든 표준 규칙이 적용됩니다
  • TIO에서 최대 1024 바이트를 입력하려면 1 분 이내에 코드를 실행해야합니다. (사용 가능한 TIO 출력이없는 경우 통역사를 제공하고이를 내 컴퓨터에서 실행할 것입니다 (내 컴퓨터는 TIO에 가까워 야합니다)).
  • 임의의 길이 입력을 지원해야합니다.
  • 파일에서 입력을받을 수 있습니다.
  • 테스트 사례에 대한 최적화는 허용되지 않습니다
  • 결정적 출력이 필요합니다
  • 프로그램은 스택 정리할 필요가 없습니다

시험 케이스

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
TNB 밈은 멍청한 밈입니다.
Magic Octopus Urn

1
내가 이것을 +1로 할 수 있으면 좋겠다. 대신 어떻게해야하는지 알고 싶어서 현상금을 줄 것이다. <your brain-flak code here>1000 점 미만인 첫 번째 답변 에 현상금이 수여됩니다. 다른 날에는 게시 할 수없는 이것이 얼마나 새로운 것인지 알지 못했습니다.
Magic Octopus Urn

1
또한 입력 범위가 인쇄 가능한 ASCII로 제한되지 않으면 NUL 바이트를 포함하여 모든 바이트 값이있는 테스트 사례를 포함해야합니다.
mbomb007

2
"깨끗하고 읽을 수있는 코드를 만드는 것이 좋습니다
Magic Octopus Urn

답변:


13

Brain-Flak , 130 바이트

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

온라인으로 사용해보십시오!

출력 <your brain-flak code here>: 5045 바이트

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

온라인으로 사용해보십시오!


1
두뇌 타격이 강렬 해짐
Magic Octopus Urn

1
@MagicOctopusUrn 메타 플래 : D
HyperNeutrino

테스트 사례가 종료 됨
Christopher

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)

온라인으로 사용해보십시오!

간단한 내가 계속 재귀 솔루션을 더욱 향상시킬 수 있습니다. 이것은 않는 매우 작은 입력 잘하지만에게 손실 MegaTom의 루비 답 이상 입력합니다.

노트:

  • 이것은 깨끗한 스택이 필요합니다. 그렇지 않으면 개선 사항 []이 쓸모 없게됩니다 (두 줄을 주석 처리하여 비활성화 할 수는 있지만 약 100 바이트 만큼 향상시킬 수 있습니다 ).
  • 이 알고리즘은 재귀 알고리즘이므로 값이 큰 문자의 경우 시간이 더 걸립니다. 예를 들어, 문자 ÿ (값 255)는 평가하는 데 9 초가 걸리며 모든 테스트 케이스는 한 번에 1.6 초가 걸립니다. 캐시 구현!
  • HyperNeutrino의 답변 에서 뻔뻔스럽게 빌린 역전을 확인하는 아이디어 는 총 800 바이트를 절약합니다.
  • 한 번에 모든 테스트 사례에서 각 테스트 사례의 총계로 총계를 변경했습니다. 스택 길이 연산자 ( [])에 더 많은 용도를 추가하여 일부 바이트를 절약합니다.
  • 문자 간의 차이를 추가하거나 추가하는 최소값을 선택하거나 추가하여 200 바이트 (다시 말하면 스택 길이 연산자를 통해 바이트를 절약 함)
  • 캐시 (스택 길이를 기준으로 값을 캐시)를 구현하여 시간 제한을 초과하지 않고도 가능한 길을 확인할 수있었습니다. 이것은 총 1500 바이트를 절약했습니다.
    • 또한 셰익스피어 테스트 사례에서 em 대시를 normal로 전환했습니다 -. 이것은 몇 바이트를 잘라 냈고 em 대시 값이 8212 : o 인 경우 많은 시간이 걸렸습니다.
  • 더 긴 테스트 사례에서 1200 바이트를 잘라서 조각으로 자르고 다른 스택으로 전환하는 것이 더 짧은 지 확인하여 반대 스택으로 구성한 후 다시 첫 번째 스택으로 푸시합니다. 다음으로 최소 슬라이싱 범위를 최적화하여 더 많은 슬라이싱 및 시간 절약.
  • 숫자 생성 기능과 이전 문자 부분의 효율성 확인 기능을 하나의 재귀 함수로 결합했습니다. 여기에는 약간의 바이트를 절약하는 몇 개의 섹션이 있지만 1 분 제한을 초과하여 프로그램의 런타임을 약간 연장합니다.
    • 해당 부분을 주석 해제하면 11394 바이트로 줄일 수 있지만 약 16 분이 걸립니다.

출력 예 :

<your brain-flak code here> (312 바이트) :

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

온라인으로 사용해보십시오!

Hello, World!( 142 바이트 [참고 : 현재 이전 최고는 148 바이트 였으며 현재 는 136 바이트입니다]) :

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

온라인으로 사용해보십시오!


반전을 확인하면 800 바이트가 절약됩니까? o_O
HyperNeutrino

또한 재귀 함수의 결과를 캐시해야합니다. 너무 많은 시간을 절약 할 것입니다
HyperNeutrino

@HyperNeutrino 캐싱은 실제로 특히 짧은 입력에 대해, 많이 저장하지 스택 길이 연산자를 사용 할 수 없음을 의미
조 왕

1
@HyperNeutrino 난 그냥 내가 실현 만큼 내가 각각의 적재 높이에 대해 별도의 캐시을 같이 캐시를 가지고
조 왕

1
당신의 브레인 플랙 메타 골퍼가 브레인 플랙 정규 골프에 대한 최고의 해답을 뛰어 넘었습니까? 뭐.
Magic Octopus Urn

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 바이트). 더 긴 개별 테스트 사례에 대해 매우 짧은 코드를 생성하는 것이 좋습니다.
Jo King

@JoKing 모든 경우에 더 오래 걸리는 것이 좋습니다 : P
Christopher

@Christopher 저는 Must run under 1 minute for inputs up to 1024 bytes규칙 을 언급하고있었습니다 (지금은 훨씬 빠르지 만)
Jo King

1
실제로 나중에 사용하기 위해 저장 데이터를 호출하는 코드 실행, 오브젝트에 대한 문제가되지 않지만 cache,하지 cash의 피,
값 잉크

테스트 사례가 종료 됨
Christopher

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

온라인으로 사용해보십시오!

<your brain-flak code here>: D의 경우 1000 미만

Brain-Flak , 448 바이트

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

온라인으로 사용해보십시오!

(에 대한 원래 827 <your brain-flak code here>)


바운티 주식회사.
Magic Octopus Urn

@MagicOctopusUrn cool ty : D
HyperNeutrino

현재 총 16222 바이트
Jo King

희망 250은 시원했다.
Magic Octopus Urn

@MagicOctopusUrn 250 대단하다 : D tyvm
HyperNeutrino

3

05AB1E , 너무 많은 바이트 (내 첫 BF 무엇이든)

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

온라인으로 사용해보십시오!


미리 만들어진 "곱셈"Brain-flak 코드를 사용하여 골프를 치는 매우 기본적인 시도. 이 모든 작업은 각 ASCII 코드 포인트에 대해 가장 작은 합계 제수 쌍을 찾은 다음 두 제수 쌍을 숫자로 푸시합니다. ({}<>)({<({}[()])><>({})<>}{}<><{}>)그런 다음 Brainflak 코드 가 추가되고 모든 값이 대체 스택에 올 때까지 루프로 실행됩니다.


내가 고마워하는 사람들의 목록 :

  • 지적을위한 DJMcMayhem (()())(()()())= ((()())())( -252 bytes)
  • 루프 작동 방식을 보여주는 DJMcMayhem ( -927 bytes).

예 골프 <your brain-flak code here>에서 3470 3218 2291 바이트 :

Brain-Flak , 2291 바이트

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

온라인으로 사용해보십시오!


각 행은 골프를 타는 한 캐릭터를 나타냅니다. 이것은 내가 게시 한 기본 솔루션보다 60 % 뛰어납니다 .Brainflak에 대해 말 그대로 아무것도 알지 못하는 것은 이것이하지 말아야 할 것에 대한 좋은 기준이라고 생각합니다. 나는 다른 어떤 것의 중간에 잠시 동안 답을 채점 할 것이고 나는 이것을 향상시킬 수 있다고 확신합니다. (이것이 이길 것으로 기대하지 않기 때문에 바이트 수에 줄 바꿈을 포함시키고 있습니다).


다음은 몇 가지 팁입니다. 1) 두 개의 숫자 (예 : 4와 5를 20으로 설정)를 밀면 바이트를 절약하기 위해 함께 밀어 넣을 수 있습니다. 비교 (()()()())(()()()()())((()()()())())2) 상수에 의한 곱셈이보다 짧을 수 있습니다 push(); multiply();. 예를 들어, 숫자를 두 배로 늘리려면 (({}){})대신에 할 수 있습니다 (()())({}<>)({<({}[()])><>({})<>}{}<><{}>). 그러나 이것은 끔찍한 기준이 아닙니다. 더 많은 정보를 원한다면 저는 항상 세 번째 스택
James

@DJMcMayhem 솔직히 숫자 사이에 델타를 사용하고 각 음의 델타 후에 다시 시작하려고했습니다. 그러나 차이점에 대한 아이디어도 보았습니다 ... 지금 통합하고 있습니다 ...이 문제와 관련하여 다른 문제가 있습니다. 또한, 05AB1E 코드 자체는 문제가되지 않지만, 다시 실행하고 싶습니다.
Magic Octopus Urn

점수 사례는 아직 나오지 않았습니다. 게시 할 때 1 주일 또는 2 주 후에 핑 (테스트 사례 최적화 솔루션 제외)
Christopher

@DJMcMayhem 델타 제수가 좋을까요?
Magic Octopus Urn

테스트 사례가 종료 됨
Christopher

2

브레인 플락

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 바이트 출력 :

([()((()(()(()()()){}){}){}){}]((()(()()){}){}([(()()()){}](()(()){}((()(((()(()()){}){}){}){}){}([(()((((()()){}){}){}){}){}]([(((()()){}){}){}](()(((()()){}){}){}([((()()){}){}]([()(()()){}](()(((((()()){}){}){}){}){}([()(((()(()()()){}){}){}){}]([(()()()){}](()(()(()()){}){}([(()(()()){}){}](()(()((()((()()){}){}){}){}){}([()(()((((()()){}){}){}){}){}]([((()()()){}){}](()(()(()()){}){}([()](()((()(((()()){}){}){}){}){}([(((()((()()){}){}){}){}){}](()(()){}([()((()()()){}){}](()((()()()){}){}(()(()(()((()()){}){}){}){}((()(()(()(()()()){}){}){}){})))))))))))))))))))))))))))
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.