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


13

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

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

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

Brain-Flak 프로그램에서 유일하게 유효한 문자는 ()[]{}<>이며 항상 균형을 유지해야합니다. 함수에는 Nilads 와 Monads 의 두 가지 유형이 있습니다 . 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.