सामान्य और दृश्य स्ट्रिंग प्रत्यावर्तन


17

कुछ कोड लिखें जो एक बिल्ली कार्यक्रम के रूप में कार्य करता है। यही है, एक स्ट्रिंग इनपुट करने के लिए और इसे आउटपुट के रूप में है। लेकिन आपके कोड के सामान्य प्रत्यावर्तन को इनपुट स्ट्रिंग के सामान्य प्रत्यावर्तन को आउटपुट करना होगा। और आपके कोड के दृश्य प्रत्यावर्तन को इनपुट स्ट्रिंग के दृश्य प्रत्यावर्तन को आउटपुट करना होगा।

सामान्य प्रत्यावर्तन एक स्ट्रिंग का उलटा चरित्र अनुक्रम है। दृश्य प्रत्यावर्तन क्रमशः ()[]{}<>द्वारा प्रतिस्थापित पात्रों के साथ सामान्य प्रत्यावर्तन )(][}{><है।

आप वर्णों ()[]{}<>को परिभाषित करने के लिए किसी भी कोडपेज का उपयोग कर सकते हैं और इस चुनौती से पहले प्रकाशित किया जाता है। आपको अपने सभी कोड के लिए एक ही कोडपेज का उपयोग करना होगा। इस कोडपेज में आपका मूल कोड मान्य होना चाहिए, और अपने उलटे कोड में से किसी को भी आवेदन करना चाहिए, जिससे उपज मिलनी चाहिए।

यह , बाइट्स जीत में सबसे छोटा कोड है।

उदाहरण

स्ट्रिंग के लिए AB(XY), अपनी सामान्य और दृश्य reversions हैं )YX(BAऔर (YX)BAक्रमशः।

यदि आपका कोड (एक काल्पनिक भाषा में) है AB(XY), तो कोड )YX(BAऔर (YX)BAइनपुट स्ट्रिंग के सामान्य और दृश्य प्रतिक्षेप क्रमशः आउटपुट करना चाहिए। और AB(XY)एक बिल्ली कार्यक्रम के रूप में कार्य करना चाहिए।


क्या यह अपेक्षा की जाती है कि इनपुट स्ट्रिंग में नई सीमाएँ हो सकती हैं?
डिजिटल ट्रामा

@DigitalTrauma ने इस बारे में नहीं सोचा ... आपके प्रोग्राम को आपके द्वारा उपयोग किए जाने वाले इनपुट रूटीन का समर्थन करना चाहिए (जब तक कि यह एक स्ट्रिंग लौटाता है)। और इसे मूल कोड पर ही काम करना चाहिए।
jimmy23013

जवाबों:


9

05AB1E , 16 बाइट्स

इस तथ्य का उपयोग करता है कि 05AB1E के पास निरंतर पूर्वनिर्धारित है "()<>[]{}"और यह नेत्रहीन प्रत्यावर्तन को प्रभावित नहीं करता है।

कोड:

,q‡"}{][><)("užR

स्पष्टीकरण:

,                 # Pop and print the input.
 q                # Quit.
  ‡"}{][><)("užR  # This part is ignored.

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


उलट:

Ržu"()<>[]{}"‡q,

स्पष्टीकरण:

R                 # Reverse the input.
 žu               # Short for "()<>[]{}".
   "()<>[]{}"     # Push this string.
             ‡    # Transliterate (no-op, since everything is transliterated to itself).
              q   # Quit and implicitly print.
               ,  # This part is ignored.

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


दृष्टि से उलट:

Ržu")(><][}{"‡q,

स्पष्टीकरण:

R                 # Reverse the input.
 žu               # Short for "()<>[]{}".
   ")(><][}{"     # Push this string.   
             ‡    # Transliterate (giving the visually reversed string).
              q   # Quit and implicitly print.
               ,  # This part is ignored.       

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

CP-1252 एन्कोडिंग का उपयोग करता है ।


6

सीजेएम, 21 बाइट्स

qe#ere$_"}{][><)("%Wq

इसका परीक्षण यहां करें।

सामान्य प्रत्यावर्तन:

qW%"()<>[]{}"_$ere#eq

इसका परीक्षण यहां करें।

दृश्य प्रत्यावर्तन:

qW%")(><][}{"_$ere#eq

इसका परीक्षण यहां करें।

व्याख्या

सबसे पहले, सामान्य कोड:

qe#ere$_"}{][><)("%Wq

यह सरल है: qसभी इनपुट को पढ़ता है, e#कार्यक्रम के शेष को टिप्पणी करता है, और इनपुट अंत में स्पष्ट रूप से मुद्रित होता है।

अब सामान्य प्रत्यावर्तन:

q            e# Read all input.
W%           e# Reverse it.
"()<>[]{}"   e# Push this string.
_$           e# Duplicate and sort it. However, the string is already sorted
             e# so we just get two copies of it.
er           e# Transliteration (i.e. character-wise substitution). But since the
             e# source and target string are identical, the reversed input
             e# is left unchanged.
e#eq            Just a comment...

और अंत में, दृश्य प्रत्यावर्तन:

q            e# Read all input.
W%           e# Reverse it.
")(><][}{"   e# Push this string.
_$           e# Duplicate and sort it. This gives us "()<>[]{}", i.e. the
             e# same string with each bracket pair swapped.
er           e# Transliteration (i.e. character-wise substitution). This
             e# time, this toggles all the brackets in the reversed input
             e# completing the visual reversion.
e#eq            Just a comment...

मेरे पास स्वयं यह कोड था।
jimmy23013

6

हास्केल, 124 बाइट्स

आगे:

f=id
--esrever.q pam=2>1|esrever=2<1|f;x=x q;')'='(' q;'('=')' q;']'='[' q;'['=']' q;'>'='<' q;'<'='>' q;'}'='{' q;'{'='}' q

सामान्य रिवर्स:

q '}'='{';q '{'='}';q '>'='<';q '<'='>';q ']'='[';q '['=']';q ')'='(';q '('=')';q x=x;f|1<2=reverse|1>2=map q.reverse--
di=f

दृश्य रिवर्स:

q '{'='}';q '}'='{';q '<'='>';q '>'='<';q '['=']';q ']'='[';q '('=')';q ')'='(';q x=x;f|1>2=reverse|1<2=map q.reverse--
di=f

प्रत्येक संस्करण एक फ़ंक्शन को परिभाषित करता है fजो एक स्ट्रिंग लेता है और वापस करता है। आगे मोड fमें पहचान समारोह है id, बाकी कोड एक टिप्पणी है। सामान्य रिवर्स मोड में गार्ड 1<2होता fहै True, इसलिए reverseइसे लागू किया जाता है। दृश्य रिवर्स मोड में, <को स्विच किया जाता है >और गार्ड होता है False। दूसरा गार्ड सिर्फ और सिर्फ Trueविज़ुअल मोड में है, इसलिए अतिरिक्त रूप qसे लागू किया जाता है जो स्विच करता है "() <> {} []"।

f|1<2=reverse|1>2=map q.reverse      -- normal reverse mode
f|1>2=reverse|1<2=map q.reverse      -- visual reverse mode

इसके अलावा <और >में गार्ड, मेरी कोड कोष्ठक में से किसी का उपयोग नहीं करता, तो वे में गड़बड़ नहीं किया जा सकता।


6

बैश + आम लिनक्स उपयोगिताओं, 51

  • 2 बाइट्स @ jimmy23013 की बदौलत बच गए
  • 2 बाइट्स @AdamKatz की बदौलत बच गए
#'><}{][)(' `P5BD706D5AC79E196iFe- cd` rt|ver|
\cat

सामान्य प्रत्यावर्तन:

tac\
|rev|tr `dc -eFi691E97CA5D607DB5P` '()[]{}<>'#

दृश्य प्रत्यावर्तन:

tac\
|rev|tr `dc -eFi691E97CA5D607DB5P` ')(][}{><'#

यहां मुख्य चाल यह है कि स्ट्रिंग ()[]{}<>को 691E97CA5D607DB5 (आधार 15) के रूप में एन्कोड किया गया है। परिणामी dcकमांड या तो इसी तरह के परिणाम को उलट देगी। हालांकि '()[]{}<>'स्ट्रिंग शाब्दिक उलट प्रकार के प्रति संवेदनशील है।

tacइनपुट लाइनों के आदेश revको उलटने के लिए आवश्यक है और प्रत्येक लाइन के पात्रों को उलटने के लिए आवश्यक है। कोई भी ASCII इनपुट स्वीकार्य होना चाहिए।


5

MATL, 26 24 22 16 बाइट्स

आगे

DPEXSt'><}{][)('

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

स्पष्टीकरण:

                % Implicitly grab the input as a string
D               % Pop the top of the stack and display it
P               % Tries to flip the top element on the stack but errors out
                % because the stack is empty. Program terminates.
EXSt'><}{][)('  % Not executed

सामान्य प्रत्यावर्तन:

'()[]{}<>'tSXEPD

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

स्पष्टीकरण:

            % Implicitly grab input as a string
'()[]{}<>'  % String literal (search string)
tS          % Duplicate and sort to create the replacement string: '()[]{}<>'
XE          % Replace all entries in the input using the search and replacement strings. 
            % Corresponding characters in the strings are used for the replacement.
            % Effectively a no-op
P           % Flip the string
D           % Explicitly display result

दृश्य प्रत्यावर्तन:

')(][}{><'tSXEPD

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

स्पष्टीकरण:

            % Implicitly grab the input as a string
')(][}{><'  % String literal (search string)
tS          % Duplicate and sort to create the replacement string: '()[]{}<>'
XE          % Replace all entries in the input using the search and replacement strings. 
            % Corresponding characters in the strings are used for the replacement. 
P           % Flip the result
D           % Explicitly display the result

दृश्य प्रत्यावर्तन क्रमशः द्वारा प्रतिस्थापित पात्रों के साथ सामान्य प्रत्यावर्तन है। ()[]{}<>)(][}{><
1927

@ ΈριΈνσταντόποςλο। अपडेट किया गया।
स्वेअर

3

GolfScript, 32 28 बाइट्स

#%{=1-[=-\7?@.`{[(<>)]}.}%1-

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

सामान्य प्रत्यावर्तन:

-1%}.}])><([{`.@?7\-=[-1={%#

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

दृश्य प्रत्यावर्तन:

-1%{.{[(<>)]}`.@?7\-=]-1=}%#

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

तथ्य यह है कि एक बेजोड़ }गोल्फ गोल्फ में कार्यक्रम समाप्त करता है, यह काफी सरल बना दिया। हालाँकि, मुझे पूरा यकीन है कि कोष्ठक की अदला-बदली के लिए मेरा कोड अभी तक इष्टतम नहीं है।


0

पायथन 2.7, 208 बाइट्स

आगे

import sys#
print''.join(sys.stdin)#
#0:tpecxe
#"]1-::[)nidts.sys(nioj.'' tnirp"cexe:yrt
#0:tpecxe
#"(('<>{}[]()','><}{][)(')snartekam.s)etalsnart.[1-::](nidts.sys)nioj.'' tnirp"cexe:yrt
#s sa gnirts,sys tropmi

सामान्य प्रत्यावर्तन

import sys,string as s#
try:exec"print''.join)sys.stdin(]::-1[.translate)s.maketrans)'()[]{}<>',')(][}{><'(("#
except:0#
try:exec"print''.join(sys.stdin)[::-1]"#
except:0#
#)nidts.sys(nioj.''tnirp
#sys tropmi

https://eval.in/574639

दृश्य का उलटा

import sys,string as s#
try:exec"print''.join(sys.stdin)[::-1].translate(s.maketrans(')(][}{><','()[]{}<>'))"#
except:0#
try:exec"print''.join)sys.stdin(]::-1["#
except:0#
#(nidts.sys)nioj.''tnirp
#sys tropmi

https://eval.in/574638

स्टड से EOF तक सभी दिशाओं को पढ़ा।

यहां कुछ भी सुपर स्मार्ट नहीं है। अनुगामी टिप्पणियों को केवल बैकवर्ड कोड बनाम फॉरवर्ड निष्पादित करने के लिए, फिर execदो अलग-अलग रिवर्सल के लिए सिंटैक्स त्रुटियों को पकड़ने की कोशिश ब्लॉक में एक स्टेटमेंट।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.