पॉलिंड्रोम पॉलीग्लॉट


15

आपका कार्य एक प्रोग्राम लिखना है जो दो अलग-अलग भाषाओं में चलता है, और निम्नलिखित कार्य करता है:

  • एक भाषा में, यह किसी दिए गए तार को तालबद्ध करता है।
    • तार ले लो। abcde
    • स्ट्रिंग को उल्टा करें। edcba
    • पहला पात्र निकालें। dcba
    • इसे मूल स्ट्रिंग पर गोंद करें। abcdedcba
  • किसी अन्य भाषा में, यह एक दिए गए स्ट्रिंग को चित्रित करता है।
    • उपर्युक्त विधि द्वारा एक स्ट्रिंग पैलीरोमोइड लें। abcdedcba
    • शुरू से लेकर बीच तक के पात्रों को प्राप्त करें। abcde

याद रखें, यह , इसलिए सबसे कम वर्ण वाला कोड (बाइट्स नहीं) वाले कोड जीतते हैं।

लीडरबोर्ड

यहां एक नियमित लीडरबोर्ड और भाषा के अनुसार विजेताओं का अवलोकन करने के लिए एक स्टैक स्निपेट है।

यह सुनिश्चित करने के लिए कि आपका उत्तर दिखाई दे रहा है, कृपया अपना उत्तर शीर्षक मार्कडाउन टेम्पलेट का उपयोग करके शीर्षक के साथ शुरू करें:

# Language 1/Language 2, N bytes

Nआपके सबमिशन का आकार कहां है। यदि आप अपने स्कोर में सुधार करते हैं, तो आप पुराने अंकों को हेडलाइन में रख सकते हैं , उनके माध्यम से स्ट्राइक करके। उदाहरण के लिए:

# Ruby/Python, <s>104</s> <s>101</s> 96 bytes

यदि आप अपने हेडर में कई संख्याओं को शामिल करना चाहते हैं (जैसे कि आपका स्कोर दो फ़ाइलों का योग है या आप अलग से झंडा लगाने वाले दंड को सूचीबद्ध करना चाहते हैं), तो सुनिश्चित करें कि हेडर में वास्तविक स्कोर अंतिम संख्या है:

# Perl/C, 43 + 2 (-p flag) = 45 bytes

आप भाषा के नाम को एक लिंक भी बना सकते हैं जो लीडरबोर्ड स्निपेट में दिखाई देगा:

# [><>](http://esolangs.org/wiki/Fish)/Python, 121 bytes


@LuisMendo एक सेकंड ...
ओलिवर नी

@LuisMendo ठीक है, मैंने
ओलिवर नी

क्या स्ट्रिंग में कभी नयापन होगा?
आउटगोल्फर

क्या इनपुट प्रारूप दो भाषाओं में भिन्न हो सकता है? एन्कोडिंग उद्धरण के साथ या उनके बिना एक स्ट्रिंग की तरह
लुइस मेंडो

@LuisMendo हाँ।
ओलिवर नी

जवाबों:


14

05AB1E / MATL , 10 9 वर्ण

9LQ2/)%¹û

05AB1E में यह palindromizes । MATL में यह depalindromizes

05AB1E में स्पष्टीकरण

कोड का यह हिस्सा कुछ भी नहीं करता (विश्व स्तर पर):

9L    Pushes array [1, 2, ... 9]
Q     Consumes the array, takes the input implicitly, and produces no output
2/    With no further input to take implicitly, this gives no output
)     Wrap stack into an array: gives an empty array
%     Consumes that array and, with no further input to take implicitly, gives no ouput 

यह वह भाग है जो कार्य करता है:

¹     Push input again
û     Palindromize. Implicitly display

MATL में स्पष्टीकरण

यह वह भाग है जो कार्य करता है:

9L    Push array [0, 1j]
Q2/   Add 1, divide by two: transforms into [1/2, (1+1j)/2]
)     Use as index into implicit input. [1/2, (1+1j)/2] is interpreted as
      1/2:(end+1)/2, which is rounded to 1:(end+1)/2. So this takes elements
      from first to half, including both. Implicitly display

इसे नजरअंदाज किया जाता है:

%¹û   Everything after '%' is a comment

12

05AB1E / जेली , 6 वर्ण

05AB1E में Palindromizes।
जेली में डिप्लिंड्रोमाइसेस।

œs2Ḣ¹û

इसे 05AB1E में आज़माएँ

05AB1E स्पष्टीकरण

œ       # compute powerset of input
 s      # swap (does nothing)
  2     # push 2
   Ḣ    # does nothing
    ¹û  # palindromize input

इसे जेली में आज़माएं

जेली स्पष्टीकरण

œs2     # split input in 2 chunks (first chunk is larger for odd length strings)
   Ḣ    # head, take first
    ¹û  # does nothing

6

पायथन 3 / जावास्क्रिप्ट, 83 वर्ण

सहेजे गए 2 बाइट्स @LevitatingLion की बदौलत

1//2;x=input();print(x+x[-2::-1]);"""
x=prompt();alert(x.slice(0,-x.length/2))//"""

अजगर palindromizes , जावास्क्रिप्ट depalindromizes

मैंने दोनों के बीच अधिक कोड स्थिर रखने की कोशिश की, लेकिन मैं .sliceपायथन में घुसने का एक अच्छा तरीका नहीं समझ पाया । यहाँ एक वैकल्पिक विधि है:

1//2;prompt=input,alert=print
x=prompt();1//2;x+=x[-2::-1]);"""
x=x.slice(0,-x.length/2))//"""
alert(x)

आप बदल सकते हैं x[::-1][1:]के साथ x[-2::-1]करने के लिए सेव दो वर्ण।
LevitatingLion

@LevitatingLion धन्यवाद! मैंने यह पता लगाने की कोशिश की कि दो स्लाइस को कैसे मिलाया जाए, लेकिन कुछ भी काम नहीं आया।
ETHproductions

5

स्काला / जावास्क्रिप्ट, 106 बाइट्स

/*\u002A/print(args(0)+args(0).reverse.tail)//*/
/*/**/
alert((s=prompt()).slice(0,-s.length/2))//\u000A*/

स्केला में पलिंड्रोमाइज करता है और जावास्क्रिप्ट में डिपलाइंड्रोमाइज करता है।

इसे आइडोन (स्कैला) पर आज़माएं - चेतावनी: गलत सिंटैक्स हाइलाइटिंग

इसे jsfiddle (जावास्क्रिप्ट) पर आज़माएं ।

स्पष्टीकरण:

जावा की तरह स्कैला, सब कुछ होने से पहले यूनिकोड से बच जाता है, इसलिए स्केल इस तरह कोड देखता है:

/**/                                //\u002A is as asterisk, results in an empty block comment
print(args(0)+args(0).reverse.tail) //scala code
//*/                                //a line comment
/*                                  //scala supports nested block comments, so this comment...
  /*
  */
  alert((s=prompt()).slice(0,-s.length/2)) 
  //                                  //\u000A (newline) inserted here
*/                                  //...ends here

जावास्क्रिप्ट इस तरह से पार्स हो जाता है:

/*\u002A/print(args(0)+args(0).reverse.tail)//*/ //block comment
/*                                               //a block comment...
  /*
*/                                               //...ending here, no nesting
alert((s=prompt()).slice(0,-s.length/2))         //code
//\u000A*/                                       //line comment

4

CJam / MATL , 18 वर्ण

r_W%(;
"j9LQ2/)%";

CJam में इस palindromizes । MATL में यह depalindromizes

CJam में स्पष्टीकरण

काम कर हिस्सा:

r           Read string
_           Duplicate
W%          Reverse
(;          Remove first element

डमी भाग:

"j9LQ2/)%"  Push this string
;           Remove it from the stack
            Implicitly display both strings obtained previously

MATL में स्पष्टीकरण

डमी भाग:

r           Push random number between 0 and 1
_           Negate
W           2 raised to that
%(;  Comment (ignored)

काम कर हिस्सा:

"           For each element in the array at the top of the stack. Since it is a number,
            which is the same as a length-1 array, the following is executed once
  j         Input string
  9L        Push array [0, 1j]
  Q2/       Add 1, divide by 2: transforms into [1/2, (1+1j)/2]
  )         Use as index. [1/2, (1+1j)/2] is interpreted as 1/2:(end+1)/2, which is
            rounded to 1:(1+end)/2. So this takes elements from first to half,
            including both

एक और डमी हिस्सा:

   %";      Comment (ignored)
            Implicitly display the previously obtained string

4

𝔼𝕊𝕄𝕚𝕟 / जावास्क्रिप्ट ES6, 55 वर्ण

this._?Σ(`ï+ï.Ħ⬮.Đ1`):(x=prompt()).slice(0,-x.length/2)

Try it here (ES6 browsers only).

𝔼𝕊𝕄𝕚𝕟 में Palindromizes, जावास्क्रिप्ट ES6 में depalindromizes।

मैं हालांकि यह आसान होने जा रहा था, क्योंकि most ES6 से संकलन करता है और ES6 में से अधिकांश को 6 में चलाया जा सकता है। जाहिर है, मैं पूरी तरह से गलत हूं।

व्याख्या

this._यह देखने के लिए कि क्या _वैश्विक दायरे में चर मौजूद है; Lod लॉडश का उपयोग करता है और इसलिए _संग्रहीत किया गया है, लेकिन शुद्ध ES6 नहीं है।

That खंड - Σ(`ï+ï.Ħ⬮.Đ1`)- स्ट्रिंग का मूल्यांकन उस कोड से करता है जो इनपुट को तालबद्ध करता है। आम तौर पर, कोड होगा ï+ïĦ⬮Đ1, लेकिन मैंने कंपाइलर को खुश करने के लिए डॉट्स डाल दिए ।

जावास्क्रिप्ट सेगमेंट - (x=prompt()).slice(0,-x.length/2)- एक संकेत से एक स्ट्रिंग depalindromizes।


मैं एक फ़ंक्शन का उपयोग करने जा रहा था (इसलिए मुझे इससे निपटना नहीं था prompt), लेकिन evaluation का मूल्यांकन फ़ंक्शन ऐसा नहीं था, इसलिए मैंने कंपाइलर को खुशprompt करने के लिए उपयोग किया और कोई फ़ंक्शन नहीं था ।


वाह, कम्पाइलर की पिकी।
हाइपरन्यूट्रिनो 20

4

जावास्क्रिप्ट ईएस 6 / जावास्क्रिप्ट ईएस 3, 143 बाइट्स

function(x){'use strict';function a(){return x+x.split('').reverse().slice(1).join('')}{function a(){return x.slice(0,-x.length/2)}}return a()}

जावास्क्रिप्ट ईएस 6 में पॉलिंड्रोमाइसेस, जावास्क्रिप्ट ईएस 3 में डीलाइंड्रोमाइसेस। गैर प्रतिस्पर्धी , यह केवल एक ही भाषा के दो संस्करणों के लिए एक बहुभुज बनाने की कोशिश है।

ब्लॉक में ES3 फ़ंक्शंस की अनुमति है, लेकिन ब्लॉक स्कोप को परिभाषित नहीं करते हैं क्योंकि नया फ़ंक्शन केवल पहले फ़ंक्शन को बदलता है। ES5 सख्त मोड में यह विफल हो जाता है क्योंकि यह फ़ंक्शन को ब्लॉकों में परिभाषित करने की अनुमति नहीं देता है। ES6 में इसकी अनुमति है और, क्योंकि ब्लॉक अब स्कोप को परिभाषित करते हैं, पहला फ़ंक्शन प्रतिस्थापित नहीं होता है।

ES3 के लिए ES3 और Node.JS और Firefox के लिए Internet Explorer 5 (उत्सर्जित) में परीक्षण किया गया।


4

जेली / सीजेएम, 15 14 वर्ण

q_,2./m]<e#¶ŒB

42545 (ETHproductions) के लिए -1 चार धन्यवाद

इसे ऑनलाइन आज़माएं! (जेली) (पलिंड्रोमाइजेशन)

CJam दुभाषिया (अवसादन)

जेली स्पष्टीकरण:

जेली में, जैसा है वैसा ही है \n, इसलिए जेली देखती है:

q_,2./m]<e#
ṖṚṭ

ṖṚṭ         Main link. Arguments: z
Ṗ           Pop
 Ṛ          Reverse
  ṭ         Append
   ⁸        (implicit) z

CJam स्पष्टीकरण:

CJam में, e#एक लाइन के बाद सब कुछ एक टिप्पणी है। तो, यह वही है जो सीजेएम देखता है:

q_,2./m]< Code
q         All input
 _        Duplicate
  ,       Length
   2.     2.0
     /    Float division
      m]  Ceil
        < Take

@ETHproductions हूप्स, मैं इसे भूल गया! इसे "बाउंस" कहा जाता है, इसीलिए।
निकोलफॉर्वर

4

पर्ल / जावास्क्रिप्ट, 73 बाइट्स

पर्ल इनपुट स्ट्रिंग में एक पैलिंड्रोम और जावास्क्रिप्ट 'de-palindromizes' देता है।

s=prompt();console.log(s.slice(0,-s.length/2));eg=1;t=eg;s=$=reverse$_=eg

जावास्क्रिप्ट

मान लेता है कि स्ट्रिंग पहले से ही एक मान्य पैलिंड्रोम है।

सभी कार्य पहले खंड में होते हैं:

s=prompt();console.log(s.slice(0,-s.length/2));

स्टोर इनपुट s, फिर स्ट्रिंग का पहला आधा (गोल-अप) लौटाता है। बाकी स्क्रिप्ट व्यर्थ चर कार्य है:

eg=1;t=eg;s=$=reverse$_=eg

इसे यहाँ आज़माएँ:

s=prompt();console.log(s.slice(0,-s.length/2));eg=1;t=eg;s=$=reverse$_=eg

पर्ल

के साथ चलाया जाना चाहिए -pl, जैसे:

perl -ple 's=prompt();console.log(s.slice(0,-s.length/2));eg=1;t=eg;s=$=reverse$_=eg' <<< 'test'
# returns testtset

कोड मूल रूप से दो प्रतिस्थापन ( s///) है, लेकिन =इसके बजाय सीमांकक के रूप में उपयोग किया जा रहा है /:

s/prompt();console.log(s.slice(0,-s.length\/2));eg/1;t/eg;s/$/reverse$_/eg

पहला, रिप्लेसिंग prompt();console.log(s.slice(0,-s.length\/2));eg(जो, माना जाता है कि आपकी स्ट्रिंग को गड़बड़ कर देगा अगर इसमें कुछ ऐसा है "prompt;console.logs.slice0,-s.length/2;eg"...) 1;tजिसके साथ evalएड है, तो वापस आ रहा है t, दूसरा स्ट्रिंग के अंत को बदल देता है ( $) reverse$_जिसके साथ फिर evalएड भी है और मूल स्रोत को जोड़ता है स्ट्रिंग उलट।

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


3

पायथन 2 / निम , 76 74 बाइट्स

#[
s=input();print s+s[-2::-1]#let s=stdin.readLine;echo s[0..s.len div 2]

पाइथन में पैलिंड्रोमाइज़, निम में डिपलाइंड्रोमाइज़ करता है। गालियाँ कमेंट सिंटेक्स।

अजगर और निम दोनों ही #टिप्पणियों के लिए उपयोग करते हैं। पायथन ब्लॉक कमेंट्स का समर्थन बिल्कुल नहीं करता (सिवाय मल्टीलाइन स्ट्रिंग्स को छोड़कर """), लेकिन निम करता है #[ comment ]#

हम निम के लिए पायथन (शुरुआत में) टिप्पणी करने के लिए इसका दुरुपयोग करते हैं, फिर ]पायथन के लिए एक टिप्पणी की तरह, निम कोड शुरू करने के लिए पायथन में अनुगामी का उपयोग करें ।

पायथन कोड को इसके इनपुट की आवश्यकता होती है जो उद्धरणों से घिरा होता है। निम कोड में यह प्रतिबंध नहीं है।

पायथन 2.7.8 और निम 0.14.2 पर परीक्षण किया गया।

Ideone यह! - पायथन 2, पैलिंड्रोमाइजिंग

Ideone यह! - निम, depalindromizing निमरली संस्करण निम Ideone का उपयोग करता है (0.11.2) बहुस्तरीय टिप्पणियों का समर्थन नहीं करता है। निम 0.14.2 पर काम करता है।




2

जाप / जावास्क्रिप्ट, 63 वर्ण

दिन का पाठ: जाप / जावास्क्रिप्ट बहुवचन हमेशा एक बुरा विचार है ...

$Oq=1;$Oq &&0
alert(($U=prompt()).slice(0*$U,-$U.length/2));$Uê

जावास्क्रिप्ट

पहली पंक्ति $Oq1 के लिए चर सेट करती है, फिर एक नो-ऑप करती है $Oq &&0

दूसरी पंक्ति उपयोगकर्ता को एक इनपुट स्ट्रिंग के लिए संकेत देती है, इसे चर को निर्दिष्ट करती है $U, फिर इसे सूचकांक 0*$U(हमेशा 0) से सूचकांक तक स्लाइस करती है -$U.length/2। यह आवश्यक depalindromization करता है; परिणाम तो alertएड है। प्रोग्राम एक संदर्भ पर समाप्त होता है क्योंकि चर $Uêको परिभाषित नहीं किया गया है।

Japt

जाप में, डॉलर के संकेतों के बीच कुछ भी सीधे ट्रांसपोंड स्रोत कोड में डाला जाता है। इसके अलावा, प्रत्येक लोअरकेस पत्र उदाहरण के लिए ट्रांसपाइल करता है .q(, जब तक कि पिछले चार अन्य लोअरकेस अक्षर नहीं होता है, जिस स्थिति में यह बन जाता है "q"। एक स्थान को स्थानांतरित कर दिया जाता है ), और सभी लापता परियों को स्वचालित रूप से जोड़ा जाता है। उपरोक्त कार्यक्रम लगभग:

Oq=1;O.q()&&0
.a("l".e("r".t((U=prompt()).slice(0*U,-U.length/2))));U.ê()

इसे तब जावास्क्रिप्ट के रूप में निष्पादित किया जाता है। Oq=1;चर Oqको 1 पर सेट करता है। इसका उपयोग फिर कभी नहीं किया जाता है, इसलिए यह एक नो-ऑप है। O.q()एक फ़ंक्शन है जो STDOUT और रिटर्न को साफ़ करता है undefined; यह मिथ्या है, इसलिए पूरे &&0 .a("l".e(...भाग को निष्पादित नहीं किया गया है।

एकमात्र हिस्सा जो वास्तव में मायने रखता है U.ê()। इंप्लिक्ट इनपुट इनपुट स्ट्रिंग को अंदर डालता है U, .ê()इसे पलिंड्रोम में बदल देता है, और निहित आउटपुट परिणाम को STDOUT में भेजता है।


यदि फ़ंक्शन प्रविष्टियों की अनुमति है, तो निम्न 34 वर्णों के लिए काम करेगा:

X=>($X=X).slice(0,-X.length/2);$Uê

पहला भाग ES6 फ़ंक्शन को परिभाषित करता है, लेकिन यह अभी भी Japt में एक पूर्ण प्रोग्राम है। इसे ऑनलाइन टेस्ट करें!


2

जावा / ब्रेनफक, 71 बाइट्स

/*+[,>]<[<]>[.>]<<[.<][*/a->a.substring(0,Math.ceil(a.length()/2d));//]

BF में Palindromizes, जावा में depalindromizes।

स्पष्टता के लिए, यह बीएफ दुभाषिया के लिए मायने रखता है:

+[,>]<[<]>[.>]<<[.<][->,..]

जहां जावा लैंबडा के वर्णों वाला अंतिम लूप छोड़ दिया जाता है क्योंकि सूचक उस बिंदु पर एक अशक्त वर्ण को इंगित करता है।


0

05AB1E / जावा 8, 102 चार्ट

//¹ûq
interface M{static void main(String[]a){System.out.print(a[0].substring(0,a[0].length()/2+1));}}

05AB1E में Palindromize।
जावा 8 में डिपेंडलाइरोमाइज करें।

स्पष्टीकरण 05AB1E:

//     # No-ops
¹      # First input
 û     # Palindromize it
  q    # Terminate the program
interface M{static void main(String[]a){System.out.print(a[0].substring(0,a[0].length()/2+1));}}
       # No-ops

स्पष्टीकरण जावा 8:

//¹ûq                           // No-ops
interface M{                    // Class
  static void main(String[]a){  //  Mandatory main-method
    System.out.print(           //   Print to STDOUT:
      a[0].substring(0,         //    The substring of the input-argument from index 0 to
        a[0].length()/2+1));}}  //    the length of the input integer-divided by 2 plus 1
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.