ब्रेनफक , 116 112 बाइट्स
>>>>,[[<]<<+>>>[>],]<[<]<+<[>>+<[-<-<+>>]<<++[->>+<<]>]>[-]>>[<[->.[-]<[->+<]<+[->+<]>>]++++++++++.[-]<[->+<]>>]
इसे ऑनलाइन आज़माएं!
बीएफ के स्वादों में सुरक्षित है जो कोशिकाओं के साथ मुखौटा 256
नहीं करता है, अशक्त बाइट्स का समर्थन नहीं करता है।
यदि बचाए गए 4 बाइट्स के लिए स्वाद नकारात्मक मेमोरी का समर्थन करता है, तो प्रारंभिक दायां तीर निकालें।
व्याख्या
कार्यक्रम को 3 चरणों में विभाजित किया गया है:
Stage 1: >>>>,[[<]<<+>>>[>],]<[<]
Stage 2: <+<[>>+<[-<-<+>>]<<++[->>+<<]>]>[-]>>
Stage 3: [<[->.[-]<[->+<]<+[->+<]>>]++++++++++.[-]<[->+<]>>]
चरण 1
इस चरण में, हम सभी वर्णों को टेप पर रखते हैं, जबकि वर्णों की संख्या को ध्यान में रखते हुए।
इस टेप के abcdefghi
बाद इनपुट के लिए यह टेप है:
000 009 000 000 095 096 097 098 099 100 101 102 103
^
009
गिनती है।
प्रत्येक वर्ण के लिए, हम पहले शून्य को बाईं ओर ले जाते हैं [<]
और फिर एक को गिनती में जोड़ते हैं <<+>>>
, और फिर [>]
अगले वर्ण के लिए तैयार होने के लिए सबसे दाहिने शून्य पर जाते हैं।
चरण 2
यह चरण दूसरी कोशिका में संग्रहीत लंबाई का वर्गमूल करता है।
1, 3, 5, 7, ...
पुनरावृत्तियों की संख्या की जांच करते हुए, यह संख्या शून्य तक पहुंचने तक घटाता रहता है ।
यह काम करता है क्योंकि वर्ग संख्या के रूप में व्यक्त किया जा सकता है 1 + 3 + 5 + ...
।
स्टेज 3
ऊपर वर्णित लंबाई के वर्गमूल को निरूपित करें n
।
यह चरण n
एक समय में वर्णों को आउटपुट करता है, और तब तक एक नई पंक्ति का उत्पादन करता है, जब तक टेप साफ नहीं हो जाता।