ब्रेन-फ्लैक को टेक्स्ट


13

आपकी चुनौती इनपुट टेक्स्ट को ब्रेन-फ्लैक कोड में बदलना है जो टेक्स्ट को आउटपुट करेगा।

से लिया ट्यूटोरियल यहाँ अनुमति के साथ यहाँ

ब्रेन-फ्लैक में दो स्टैक होते हैं, जिन्हें 'लेफ्ट' और 'राइट' के रूप में जाना जाता है। सक्रिय स्टैक बाईं ओर शुरू होता है। यदि कोई खाली स्टैक पॉप अप होता है, तो यह 0. वापस आ जाएगा। कोई अन्य चर नहीं। जब प्रोग्राम शुरू होता है, तो प्रत्येक कमांड लाइन तर्क सक्रिय स्टैक पर धकेल दिया जाता है।

ब्रेन-फ्लैक कार्यक्रम में केवल मान्य वर्ण हैं ()[]{}<>, और उन्हें हमेशा संतुलित होना चाहिए। दो प्रकार के कार्य हैं: नीलाड्स और मोनाड्स । एक निलाद एक फ़ंक्शन है जो 0 तर्क लेता है। यहाँ सभी निलाद हैं:

  • () एक का मूल्यांकन करता है।
  • [] वर्तमान स्टैक की ऊंचाई का मूल्यांकन करता है।
  • {}सक्रिय स्टैक पॉप। पॉपप किए गए मान का मूल्यांकन करता है।
  • <>सक्रिय स्टैक को टॉगल करें। शून्य का मूल्यांकन करता है।

जब उनका मूल्यांकन किया जाता है तो ये एक साथ मिल जाते हैं। इसलिए यदि हमारे पास सक्रिय स्टैक के शीर्ष पर '3' है, तो यह स्निपेट:

()(){}

मूल्यांकन करेगा 1 + 1 + active.pop()जो 5 का मूल्यांकन करेगा।

भिक्षु एक तर्क लेते हैं, ब्रेन-फ्लैक कोड का एक हिस्सा। यहाँ सभी मठ हैं:

  • (n) सक्रिय स्टैक पर 'एन' पुश करें।
  • [n] नकारात्मक 'n' का मूल्यांकन
  • {foo} जबकि शून्य स्टैक के शीर्ष पर नहीं है, फू करें।
  • <foo> फूको का निष्पादन करें, लेकिन इसका मूल्यांकन 0 के रूप में करें।

ये फ़ंक्शन उनके अंदर मूल्य भी लौटाएंगे, इसलिए

(()()())

3 धक्का देंगे लेकिन

((()()()))

3 बार धक्का देगा ।

{}सभी रन के योग के मूल्यांकन करेंगे। तो अगर हम ढेर के शीर्ष पर '3' और '4' थे:

{{}}

7 के रूप में मूल्यांकन करेगा।

जब प्रोग्राम निष्पादित किया जाता है, तो सक्रिय स्टैक पर छोड़े गए प्रत्येक मान को बीच की एक नई रेखा के साथ मुद्रित किया जाता है। दूसरे स्टैक पर मानों की अनदेखी की जाती है।

नियम

  • आप मान सकते हैं कि ब्रेन-फ्लैक को आस्की के साथ चलाया जा रहा है। ( -A)
  • मस्तिष्क-फ्लैक कोड को इनपुट की आवश्यकता नहीं होनी चाहिए
  • सभी मानक नियम लागू होते हैं
  • TIO पर 1024 बाइट्स तक किसी भी इनपुट के लिए कोड 1 मिनट के भीतर चलना चाहिए। (यदि कोई 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
TNB मेम मेमों के सबसे खतरनाक हैं।
मैजिक ऑक्टोपस Urn

1
काश मैं इसे दोगुना कर सकता था, इसके बजाय मैं एक इनाम की पेशकश करूंगा क्योंकि मुझे पता है कि यह कैसे करना चाहिए था। पहला उत्तर जो <your brain-flak code here>1000 से कम में मिलता है उसे इनाम से सम्मानित किया जाता है। जिसे मैं एक और दिन के लिए पोस्ट नहीं कर सकता, जो वूप्स करता है; ध्यान नहीं दिया कि यह कितना नया था।
मैजिक ऑक्टोपस Urn

1
इसके अलावा, यदि इनपुट की सीमा मुद्रण योग्य एएससीआईआई तक सीमित नहीं है, तो आपको ऐसे परीक्षण मामलों को शामिल करना चाहिए जिनमें प्रत्येक बाइट मान हो, जिसमें एनयूएल बाइट्स शामिल हैं।
mbomb007

2
"स्वच्छ, पठनीय कोड की सराहना की जाती है" जल्दबाजी में 05AB1E में चुनौती देता है
मैजिक ऑक्टोपस Urn

जवाबों:


13

ब्रेन-फ्लैक , 130 बाइट्स

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

इसे ऑनलाइन आज़माएं!

आउटपुट के लिए <your brain-flak code here>: 5045 बाइट्स

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

इसे ऑनलाइन आज़माएं!


1
ब्रेन-फ्लैकिंग तेज हो जाता है
मैजिक ऑक्टोपस Urn

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)

इसे ऑनलाइन आज़माएं!

एक सरल पुनरावर्ती समाधान जिसे मैं आगे सुधारना जारी रखूंगा। यह छोटे इनपुट के साथ बहुत अच्छी तरह से करता है, लेकिन अधिक इनपुट के लिए मेगाटॉम के रूबी जवाब के लिए खो देता है ।

टिप्पणियाँ:

  • इसे संचालित करने के लिए एक स्वच्छ स्टैक की आवश्यकता होती है, अन्यथा []बेकार हो जाने के साथ सुधार (हालांकि उन्हें कुछ पंक्तियों को टिप्पणी करके अक्षम किया जा सकता है, और वे केवल इसे लगभग 100 बाइट्स द्वारा काफी सुधार करते हैं )।
  • चूंकि यह एक पुनरावर्ती एल्गोरिथ्म है, इसलिए बड़े मूल्यों वाले वर्णों में अधिक समय लगेगा। उदाहरण के लिए, वर्ण ÿ (मूल्य 255) का मूल्यांकन करने में 9 सेकंड लगते हैं, जहां हर परीक्षण का समय एक बार 1.6 सेकंड लेता है। कैश लागू!
  • हाइपरनेउटरिनो के जवाब से रिवर्स बेशर्मी से उधार की जांच करने का विचार , कुल मिलाकर 800 बाइट्स की बचत।
  • मैंने सभी परीक्षण मामलों से एक बार में प्रत्येक परीक्षण के मामले में कुल को बदल दिया। यह स्टैक लंबाई ऑपरेटर के लिए अधिक उपयोग जोड़कर कुछ बाइट्स बचाता है ( [])
  • ~ 200 बाइट्स वर्णों के बीच के अंतर को कम करने के लिए चुनने से, या उन्हें जोड़कर (फिर से, यह बाइट्स को स्टैक ऑपरेटर के माध्यम से बचाता है)
  • एक कैश लागू किया (जो स्टैक लंबाई के आधार पर मूल्यों को कैश करता है), जिसने मुझे समय सीमा से अधिक जाने के बिना अधिक संभावित रास्ते की जांच करने की अनुमति दी। इसने कुल 1500 बाइट्स बचाए।
    • इसके अलावा, मैंने शेक्सपियर परीक्षण मामले में एम डैश को एक सामान्य स्थिति में बदल दिया -। इसने कुछ बाइट्स को काट दिया, और उस एम डैश के मूल्य को देखते हुए बहुत समय हो गया 8212: o।
  • 1200 बाइट्स को लंबे समय तक परीक्षण के मामलों में से काटकर स्लाइस में काट लें और जांच लें कि क्या यह दूसरे स्टैक पर स्विच करने के लिए छोटा था, इसका निर्माण उल्टा करें और इसे फिर से पहले स्टैक पर वापस धकेलें। अगला, और भी अधिक टुकड़ा करने की क्रिया, और न्यूनतम स्लाइसिंग रेंज का अनुकूलन करके समय की बचत।
  • एक पुनरावर्ती फ़ंक्शन में पिछले चरित्र भाग के साथ दक्षता के लिए जाँच के साथ संख्या उत्पन्न करने वाले फ़ंक्शन को मिलाया। यहां कुछ खंड हैं जो कुछ बाइट्स को बचाते हैं, लेकिन कार्यक्रम के रनटाइम को एक मिनट की सीमा से थोड़ा आगे बढ़ाते हैं।
    • उन भागों को जोड़ने से यह 11394 बाइट्स तक कट सकता है ... लेकिन इसमें लगभग 16 मिनट लगते हैं।

उदाहरण आउटपुट:

<your brain-flak code here> (312 बाइट्स):

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

इसे ऑनलाइन आज़माएं!

Hello, World!( 142 बाइट्स [नोट: वर्तमान पिछला सबसे अच्छा 148 बाइट्स था , और अब 136 बाइट्स है))

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

इसे ऑनलाइन आज़माएं!


रिवर्सल की जाँच करने से 800 बाइट बचती हैं? o_O
हाइपरनेत्रिनो

आपको अपने पुनरावर्ती कार्य के परिणामों को भी कैश करना चाहिए; इतना समय
बचाएगी

@ हैपरनेट्रिनो कैशिंग का मतलब है कि मैं स्टैक लंबाई ऑपरेटर का उपयोग नहीं कर सकता, जो वास्तव में बहुत बचत करता है, विशेष रूप से छोटे इनपुट के लिए
जो किंग

1
@ हाइपर न्यूट्रिनो मुझे बस एहसास हुआ कि मेरे पास एक कैश हो सकता है, जब तक कि मैं प्रत्येक स्टैक की ऊँचाई के लिए अलग-अलग कैश नहीं बना देता
जो किंग

1
आपके मस्तिष्क-फ्लैक मेटा-गोल्फर ने एक मस्तिष्क-फ्लेक नियमित गोल्फ के लिए सबसे अच्छा जवाब दिया? क्या।
मैजिक ऑक्टोपस Urn

5

रूबी , सभी (नए) परीक्षण मामलों के लिए 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 बाइट्स

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

इसे ऑनलाइन आज़माएं!


आपका कोड एक बार (~ 950 बाइट्स) पर सभी परीक्षण मामलों के लिए 1 मिनट से अधिक समय लेता है। यह अच्छा है कि यह लंबे समय तक व्यक्तिगत परीक्षण मामलों के लिए काफी कम कोड का उत्पादन करता है।
जो किंग

@ यह ठीक है कि यह हर मामले में अधिक समय लेता है: पी
क्रिस्टोफर

@ क्रिस्टोफर मैं Must run under 1 minute for inputs up to 1024 bytesनियम का उल्लेख कर रहा था (हालांकि अब यह बहुत तेज है)
जो किंग

1
हालाँकि यह वास्तव में कोड निष्पादन के लिए मायने नहीं रखता है, एक वस्तु जो बाद के उपयोग के लिए डेटा स्टोर करती है, उसे कहा जाता है ; cacheनहींcash
मूल्य इंक

टेस्ट के मामले बाहर हैं
क्रिस्टोफर

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>: डी

ब्रेन-फ्लैक , 448 बाइट्स

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

इसे ऑनलाइन आज़माएं!

(मूल रूप से 827 के लिए <your brain-flak code here>)


बाउंटी इंक, जल्द ही।
मैजिक ऑक्टोपस Urn

@MagicOctopusUrn cool ty: D
हाइपरएनुट्रीनो

अब आप 16222 बाइट्स पर हैं
जो किंग

आशा थी 250 मस्त थी।
मैजिक ऑक्टोपस Urn

@MagicOctopusUrn 250 महान है: डी tyvm
HyperNeutrino

3

05AB1E , बहुत सारे बाइट्स (मेरा पहला बीएफ कुछ भी)

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

इसे ऑनलाइन आज़माएं!


प्रीमियर "गुणन" ब्रेन-फ्लैक कोड का उपयोग करके गोल्फिंग में अत्यधिक बुनियादी प्रयास। यह सब कुछ ASCII कोड बिंदु के लिए सबसे छोटी राशि वाले जोड़ीदार को पाता है, फिर उन दोनों भाजक जोड़े को संख्या के रूप में धकेलता है। Brainflak कोड ({}<>)({<({}[()])><>({})<>}{}<><{}>)तब जोड़ा जाता है और एक लूप में निष्पादित किया जाता है जब तक कि सभी मान वैकल्पिक स्टैक पर न हों।


जिन लोगों को मैं धन्यवाद दे रहा हूं, उनकी सूची:

  • DJMcMayhem को इंगित करने के लिए (()())(()()())= ((()())())( -252 bytes)
  • मुझे दिखाने के लिए DJMcMayhem कैसे काम करना चाहिए ( -927 bytes)।

का उदाहरण गोल्फ <your brain-flak code here>में 3470 3218 2291 बाइट्स:

ब्रेन-फ्लैक , 2291 बाइट्स

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

इसे ऑनलाइन आज़माएं!


प्रत्येक पंक्ति एक वर्ण को गढ़ा जाने का प्रतिनिधित्व करती है, यह 60% द्वारा पोस्ट किए गए मूल समाधान को धड़कता है , और ब्रेनफ्लैक के बारे में शाब्दिक रूप से कुछ भी नहीं जानने में मुझे लगता है कि यह एक अच्छा आधार है जो नहीं करना है। मैं थोड़ी देर में, किसी और चीज के बीच में जवाब दूंगा और मुझे यकीन है कि मैं इस पर सुधार कर सकता हूं। (मैं बाइट-काउंट में नई कहानियों को शामिल करता हूं क्योंकि मुझे इस जीत की उम्मीद नहीं है)।


यहां कुछ युक्तियां दी गई हैं: 1) यदि आप दो संख्याओं को कहते हैं (20 पाने के लिए 4 और 5 कहते हैं), तो आप उन्हें बाइट बचाने के लिए एक साथ धक्का दे सकते हैं। तुलना (()()()())(()()()()())और ((()()()())())2) एक स्थिरांक से गुणा कई गुना कम हो सकता है push(); multiply();। उदाहरण के लिए, एक संख्या को दोगुना करने के लिए, आप इसके (({}){})बजाय कर सकते हैं (()())({}<>)({<({}[()])><>({})<>}{}<><{}>)। लेकिन यह एक भयानक आधार रेखा नहीं है। यदि आप अधिक इनपुट चाहते हैं, तो मैं हमेशा तीसरे ढेर
जेम्स

@DJMcMayhem मैं ईमानदारी से संख्याओं के बीच डेल्टा का उपयोग करना चाह रहा था, प्रत्येक नकारात्मक डेल्टा के बाद पुनः आरंभ। लेकिन मैं मतभेदों के लिए विचार भी देखता हूं ... अब मैं इसमें शामिल हूं ... इसके साथ कुछ अन्य समस्याओं को भी हल करता हूं जो मैं ठीक कर रहा हूं। इसके अलावा, 05AB1E कोड अपने आप में अपुष्ट है, ऐसा नहीं है कि यह मायने रखता है, लेकिन मैं इसे फिर से करना चाहता हूं।
मैजिक ऑक्टोपस Urn

स्कोर के मामले अभी तक बाहर नहीं हैं। एक या दो सप्ताह में पिंग करूंगा जब मैं पोस्ट करूंगा (टेस्ट केस ऑप्टिमाइज़ेशन सॉल्यूशन से बचें)
क्रिस्टोफर

@DJMcMayhem क्या डेल्टास के दिव्यांग अच्छे होंगे?
मैजिक ऑक्टोपस Urn

टेस्ट के मामले बाहर हैं
क्रिस्टोफर

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 Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.