छिपे हुए संदेश को डिकोड करें!


11

परिचय

एक दिन, आप सीआईए में अपने कार्यालय में आराम कर रहे थे, जब अचानक आप अपने कंप्यूटर पर अलर्ट देखते हैं। आपके कार्यक्रमों ने अभी-अभी सैकड़ों कूट संदेशों को इंटरसेप्ट किया है! एक त्वरित परीक्षा एन्कोडिंग के लिए नियम का खुलासा करती है, लेकिन आपको तेजी से डिकोड करने के लिए एक कार्यक्रम की आवश्यकता होती है।

चुनौती

आपको कॉमा द्वारा अलग किए गए स्ट्रिंग्स की एक सूची दी जाएगी। प्रत्येक तार में या तो होगा:

  • कोडित संदेश का हिस्सा
    • यदि यह फॉर्म में नहीं है तो यह कोडित संदेश का हिस्सा है a=b। ध्यान दें कि यदि यह है तो यह संदेश का हिस्सा है ab=c। इस स्ट्रिंग को कोडित संदेश में जोड़ें।
  • एन्कोडिंग योजना का हिस्सा
    • यह के रूप में होगा a=b। इसका मतलब है कि संदेश में सभी को b के द्वारा प्रतिस्थापित किया जाना चाहिए। ध्यान दें कि यह हो सकता है a==, जिसका अर्थ है कि सभी `को प्रतिस्थापित किया जाना चाहिए।

आपके कार्यक्रम को तब संदेश का उत्पादन करना चाहिए, जो इस योजना का उपयोग करके डिकोड किया गया है।

अन्य जानकारी: आपके इनपुट में केवल स्ट्रिंग्स को अलग करने के लिए अल्पविराम होगा। इसमें अन्य वर्ण शामिल हो सकते हैं, जैसे 1 #, आदि इसमें अपरकेस अक्षर नहीं होंगे। डिकोडिंग जानकारी के बिट्स एक दूसरे को डिकोड नहीं करते हैं। डिकोडिंग सूचना से केवल संदेश प्रभावित होता है। प्रत्येक चरित्र के लिए केवल एक प्रतिस्थापन दिया जाएगा, उदा"io,"i=u","i=g"

उदाहरण

इनपुट:"ta","y=s","y","a=e","b=t","b"," ","j","j=1"

आउटपुट:test 1

इनपुट:"z=p","zota","g=e","yugkb","y=t","u=o","k=s","li","fg","b=="

आउटपुट:potatoes=life

इनपुट:"p","=","==n","ot","p=a","hiz","i=e","z=r"

आउटपुट:another

यह , इसलिए बाइट्स में सबसे कम जवाब जीतता है!


अरे हाँ, क्षमा करें! editting
pydude

परिवर्तनशीलता और वृत्ताकारता के बारे में क्या, उदाहरण "massega","e=a","a=e"और पसंद?
जोनाथन एलन

1
डिकोडिंग जानकारी के बिट्स एक दूसरे को डिकोड नहीं करते हैं। डिकोडिंग सूचना से केवल संदेश प्रभावित होता है।
pydude

1
इसके अलावा, प्रत्येक चरित्र के लिए केवल एक प्रतिस्थापन दिया जाएगा, उदाहरण के लिए नहीं"io,"i=u","i=g"
pydude

1
धन्यवाद, मैं इस जानकारी को विनिर्देश में जोड़ने का सुझाव देता हूं।
जोनाथन एलन

जवाबों:


1

जेली , 19 बाइट्स

ḊṖ⁼“=”
ÇÐfKm2yÇÐḟF$

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

कैसे?

ḊṖ⁼“=” - Link 1, isMappngElement?: string
Ḋ      - dequeue
 Ṗ     - pop
   “=” - char-list,['=']
  ⁼    - equal?

ÇÐfKm2yÇÐḟF$ - Main link: list of strings
 Ðf          - filter keep:
Ç            -     last link (1) as a monad
   K         - join with spaces
    m2       - modulo 2 slice (every other character)
           $ - last two links as a monad:
        Ðḟ   -     filter discard:
       Ç     -         last link (1) as a monad
          F  -     flatten
      y      - translate right according to the mapping of left

बहुत दिलचस्प है, एम 2 "मॉडुलो 2 स्लाइस" का क्या मतलब है?
मैजिक ऑक्टोपस Urn

mएक डाईएडिक परमाणु है जो बाएं * के प्रत्येक दाएं-वें तत्व को लेता है। यहाँ, उदाहरण के लिए, ['x','=','y','<space>','a','=','b']m2उपज होगी ['x','y','a','b']। (* जब तक कि शून्य सही नहीं है जब इसके बजाय एक प्रतिबिंब को जोड़ते हैं।)
जोनाथन एलन

5

पायथन 3, 98

lambda l:''.join(x*('='!=x[1:-1])for x in l).translate({'='!=x[1:-1]or ord(x[0]):x[2:]for x in l})

यह lambdaफ़ंक्शन स्ट्रिंग्स (इनपुट) की एक सूची प्राप्त करता है और एक स्ट्रिंग (डीकोड किया गया संदेश) देता है।

उदाहरण:

>>> f(['ta', 'y=s', 'y', 'a=e', 'b=t', 'b', ' ', 'j', 'j=1'])
'test 1'
>>> f(['z=p', 'zota', 'g=e', 'yugkb', 'y=t', 'u=o', 'k=s', 'li', 'fg', 'b=='])
'potatoes=life'
>>> f(['p', '=', '==n', 'ot', 'p=a', 'hiz', 'i=e', 'z=r'])
'another'

क्या आपको जरूरत है: -1 या होगा: 2 काम?
DSM

1
@ मुझे लगता है कि इसकी आवश्यकता है क्योंकि '=' == x[1:2]यह सच होगा x = 'a=bc', जो एन्कोडिंग योजना का हिस्सा नहीं है
vaultah

1
आह, अच्छी बात है!
DSM

2

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

f x=[(a,b)|[a,'=',b]<-x]
h x=map(\v->maybe v id$lookup v$f x)$concat[c|c<-x,[]==f[c]]

प्रयोग

>h ["p","=","==n","ot","p=a","hiz","i=e","z=r"]
>"another"

विवरण

f लुकअप टेबल बनाता है।

concat[c|c<-x,[]==f[c]] संदेश निकालता है।

map(\v->maybe v id$lookup v$f x) लुकअप को परफैक्ट करता है।


2

जावास्क्रिप्ट (ईएस 6), 87 बाइट्स

(l,s='',d={})=>l.map(v=>/.=./.test(v)?d[v[0]]=v[2]:s+=v)&&[...s].map(c=>d[c]||c).join``

<input id=a oninput="try{b.innerText=((l,s='',d={})=>l.map(v=>/.=./.test(v)?d[v[0]]=v[2]:s+=v)&&[...s].map(c=>d[c]||c).join``)(eval(`[${a.value}]`))}catch(e){}"/>
<p id=b />


1

रेटिना, 84 82 77 74 बाइट्स

इनपुट के रूप में अल्पविराम से अलग की गई सूची लेता है। अनुगामी न्यूलाइन पर ध्यान दें

^ | $
,,
+ `, (। =।) (। *)
$ 2 $ 1
एम एंड `* ,, * \ 1 =! (।) |।।।। +,
% `*, $ (।) |।। * (।)
$ 1 $ 2
\ N |,

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

स्पष्टीकरण:

सबसे पहले, हम फॉर्म के सभी एक्सप्रेशंस .=.को स्ट्रिंग के अंत तक ले जाते हैं और इन्हें डबल कॉमा ( ,,) के साथ संदेश से अलग करते हैं । ऐसा इसलिए है कि अगले चरण में, हम जाँच कर सकते हैं कि क्या प्रत्येक वर्ण आगे ,,एक मिलान के =.बाद है। यह हासिल किया जाता है, M!&`(.).*,,.*\1=.|.+,जो ऐसे सभी मैचों को ढूंढता है और उन्हें स्ट्रिंग्स की एक अलग सूची में शामिल करता है। हम तब प्रत्येक स्ट्रिंग को केवल एक अनएन्कोडेड वर्ण या वर्ण के एन्कोडेड संस्करण में शामिल करते हैं। अंत में हम सभी लाइनफीड्स और कॉमा को खाली स्ट्रिंग से बदल देते हैं ताकि हमारा आउटपुट अच्छी तरह से फॉर्मेट हो जाए।


0

बैच, 188 बाइट्स

@echo off
set/pm=
set c=
for %%s in (%m%)do call:c %%s "%%c%%%%~s" not
for %%s in (%m%)do call:c %%s "%%c:%%~s%%"
echo %c%
exit/b
:c
set s=%~1
if %3 "%s:~1,1%"=="=" call set c=%~2

स्पष्टीकरण: दो बार तार की सूची के माध्यम से लूप (आसानी forसे सीएसवी प्रारूप में एक स्ट्रिंग को पसंद करता है)। पहली बार, उन स्ट्रिंग्स की तलाश करता है जिनमें एक =दूसरे चरित्र के रूप में नहीं होता है , और उन्हें परिणाम के लिए संक्षिप्त करता है। दूसरी बार, उन स्ट्रिंग्स की तलाश करता है जिनमें एक =दूसरे चरित्र के रूप में होता है, और प्रतिस्थापन करता है। (और भी आसानी से, प्रतिस्थापन बैच प्रारूप में पहले से ही है।)



0

PHP, 89 87 बाइट्स

दो संस्करण:

while(a&$s=$argv[++$i])3==strlen($s)&"="==$s[1]?$t[$s[0]]=$s[2]:$m.=$s;echo strtr($m,$t);
while(a&$s=$argv[++$i])preg_match("#^.=.$#",$s)?$t[$s[0]]=$s[2]:$m.=$s;echo strtr($m,$t);

कमांड लाइन तर्कों से इनपुट लेता है; साथ चलाना -nr

  • तर्कों के माध्यम से लूप पैरामीटर बनाने के लिए strtr
    (अनुवाद में यदि तर्क शामिल है =, संदेश और है)।
  • प्रदर्शन करते हैं strtr

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