विरोधाभासी पॉलीग्लॉट्स


19

वैसे तो सभी को पॉलिग्लॉट्स बहुत पसंद होते हैं । आपको दो पूर्णांक दिए जाएंगे, किसी भी मानक रूप में इनपुट (कोई हार्डकोडिंग नहीं)। आपका कार्य एक पॉलीग्लॉट लिखना है जो एक भाषा में न्यूनतम मान और दूसरी भाषा में दो नंबरों के बीच अधिकतम मूल्य पाता है, और निम्नलिखित ऑपरेशन करता है:

  • कोड जो अधिकतम मान पाता है, उन्हें भी अपनी राशि की गणना करनी चाहिए।
  • जो प्रोग्राम न्यूनतम मान पाता है, उसे उनके घटाव के परिणाम की गणना भी करनी चाहिए ( max - min)
  • यहाँ "ट्रिकी पार्ट" है : यदि दो संख्याएँ समान हैं, तो दोनों प्रोग्रामों को आउटपुट (कुछ भी STDOUTऔर STDERRया किसी अन्य returnविधि से) कुछ भी आउटपुट / रिटर्न नहीं करना चाहिए।
  • स्वरूपण के बारे में अधिक जानकारी के लिए आउटपुट चश्मा अनुभाग देखें

इनपुट

जैसा कि ऊपर कहा गया है, दो पूर्णांकों को किसी भी मानक विधि में इनपुट के रूप में लिया जाता है , दोनों भाषाओं के लिए सामान्य।

आउटपुट चश्मा

  • जो प्रोग्राम पाता है max, उसके लिए प्रारूप होना चाहिए:max_value, addition result
  • जो प्रोग्राम पाता है min, उसके लिए प्रारूप होना चाहिएmin_value, subtraction result (max - min)
  • परिणाम किसी भी स्पष्ट सीमांकक (साथ मुद्रित किया जा सकता , \n, ,या जो कुछ भी कहीं भी आप चाहते हैं), एक स्ट्रिंग परिसीमक के साथ या संख्याओं की एक सूची के रूप में दो की उम्मीद मूल्यों से युक्त के रूप में समारोह से लौट आए (जैसे: [max_value,sum])

उदाहरण:

Input   || Max Language Output || Min Language Output

100, 40 || 100, 140            || 40, 60
63, 67  || 67, 130             || 63, 4
-45, -5 || -5, -50             || -45, 40
21, 21  ||                     ||
-1, 1   || 1, 0                || -1, 2 

स्कोरिंग:

यह , इसलिए वांछित परिणाम प्राप्त करने के लिए सबसे छोटा कोड लिखने का प्रयास करें, जबकि ध्यान दें कि स्टैंडर्ड लोफॉल्स को कड़ाई से अस्वीकृत किया गया है। आपको दो अलग-अलग भाषाओं का उपयोग करना चाहिए, न कि एक ही भाषा के अन्य संस्करणों (जैसे: Python 2- Python 3जोड़े मान्य नहीं हैं)


@downvoter वह क्यों था?
श्री एक्सकोडर

6
मैं कम से कम कुछ दिनों के लिए सैंडबॉक्स पर सवाल रखने की सलाह दूंगा ताकि वे मुख्य पोस्ट करने से पहले पर्याप्त ध्यान प्राप्त कर सकें। मैं नीचे नहीं था।
एरिक आउटोलॉफ़र

गोड्डममिट, ने Py2 / Py3 उत्तर लिखा और जैसा मैं पोस्ट करने वाला था, मैंने नियम को देखा। 30 मिनट मैं कभी भी हाहा नहीं करूंगा।
सागिस्प्स

जवाबों:


6

05AB1E / जेली , 21 20 बाइट्स

-1 बाइट कुछ मदद मांगने के बाद - थैंक्स एमिग्ना! ( `होगा push(uwrapped(pop())))

कच्चे बाइट्स (डंप सही दिखाता है कि मेरी विंडोज मशीन क्या प्रदर्शित करती है):

60 ca 69 b9 5a 73 4f 29 71 93 18 fa 2c d3 f7 d3    `Êi¹ZsO)q..ú,Ó÷Ó
cd 04 18 2f                                         Í../

दोनों एसटीडीआईएन से इनपुट लेते हैं और एक सूची प्रतिनिधित्व के रूप में एसटीडीयूइट के लिए आउटपुट [x, y]

अधिकतम भाषा 05AB1E है:

`Êi¹ZsO)q“.ú,Ó÷ÓÍ../

जहाँ .यह कोडपेज ( cp1252 ) में अनपेक्षित बाइट्स का प्रतिनिधित्व करता है , और शायद यहाँ जो भी आप उपयोग कर रहे हैं (0x18 = CANऔर 0x04 = EOT)।

05AB1E संस्करण का प्रयास करें

न्यूनतम भाषा जेली है:

İ__iỤZs0)qƓð«,ạẋạṠ¥ð/

जेली संस्करण का प्रयास करें ।

कैसे?

05AB1E:

`Êi¹ZsO)q“.ú,Ó÷ÓÍ../ - parsed left to right, executed as parsed
                     - implicit input taken
  i                  - If:
`                    -     push(unwrapped(pop()))
 Ê                   -     push(pop()!=pop())
                     - ...Then:
   ¹                 -     push(1st item from input history)
    Z                -     push(max(top of stack))
     s               -     push(reverse(pop(),pop()))
      O              -     push(sum(pop()))
       )             -     wrap(pop())
        q            -     quit - implicit print of top of stack
         “.ú,Ó÷ÓÍ../ - unexecuted and unparsed string

जेली:

`ȮiỤZs0)qƓð«,ạẋạṠ¥ð/ - parsed left to right, not executed until parsed
`ȮiỤZs0              - a dyadic chain which would error if executed (monad from dyad, index of, grade up, transpose, split into chunks of length 0)
       )q            - currently unassigned code points each currently creates a new link
         Ɠ           - read and evaluate a line of input
          ð       ð  - dyadic chain separations
                   / - reduce by:
           «         -     minimum(left, right)
             ạ       -     absolute difference(left, right)
            ,        -     pair(result)
                 ¥   -     last two links as a dyad:
               ạ     -         absolute difference(left, right)
                Ṡ    -         sign(result) (i.e. {0:0, +x:1, -x:-1} but -x never happens)
              ẋ      -     repeat list left right times
                     - implicit print

18

सी और सी ++ (जीसीसी), 117 107 बाइट्स

-10 बाइट्स @ थैंक्सबॉक्स की बदौलत!

#include<stdio.h>
int f(int a,int b){auto c=.5;a-b&&printf("%d %d",c?b<a?b:a:a>b?a:b,c?a-b>0?a-b:b-a:a+b);}

स्पष्टीकरण: सी में, auto c=.5ऑटो स्टोरेज क्लास (जो डिफ़ॉल्ट है) के साथ एक पूर्णांक चर की घोषणा करता है, जिसे बाद में 0 से प्रारंभ किया जाता है, जबकि C ++ 11 में यह एक डबल घोषित करता है, जो 0.5 के लिए प्रारंभिक है। तो चर का मान C ++ में सत्य और C में मिथ्या होगा।

सी - अधिकतम भाषा: इसे ऑनलाइन आज़माएं!

C ++ - न्यूनतम भाषा: इसे ऑनलाइन आज़माएं!


2
बहुत ही स्मार्ट उपाय है। मुझे यह तथ्य पसंद है कि किसी भी टिप्पणी का उपयोग नहीं किया गया था।
मिस्टर एक्सकोडर

5
कुछ बाइट्स को बचाने के लिए, आप एक चर घोषित कर सकते हैं auto c=.5, और फिर cइसके बजाय उपयोग कर सकते हैं sizeof'a'-1। सी में, auto c=.5ऑटो स्टोरेज क्लास (जो डिफ़ॉल्ट है) के साथ एक पूर्णांक चर की घोषणा करता है, जिसे बाद में 0 से प्रारंभ किया जाता है, जबकि C ++ 11 में यह एक डबल घोषित करता है, जो 0.5 के लिए प्रारंभिक है। तो चर का मान C ++ में
सत्य

9

पायथन 3 / जेली , 42 बाइट्स

फ़ाइल को एन्कोड करने के लिए जेली के कोड-पेज का उपयोग करना ।

कच्चे बाइट्स:

6c 61 6d 62 64 61 20 78 2c 79 3a 5b 6d 61 78 28    lambda x,y:[max(
78 2c 79 29 2c 78 2b 79 5d 2a 28 78 21 3d 79 29    x,y),x+y]*(x!=y)
0a 23 7f fa 2c d3 f7 d3 cd 04                      .#.ú,Ó÷ÓÍ.

दोनों एक अनाम डायैडिक फ़ंक्शन को परिभाषित करते हैं।

अजगर (अधिकतम भाषा) देखता है:

lambda x,y:[max(x,y),x+y]*(x!=y)
#\x7fú,Ó÷ÓÍ\x04

पायथन के रूप में टेस्ट

जेली (न्यूनतम भाषा) देखती है:

lambda x,y:[max(x,y),x+y]*(x!=y)½#
«,ạẋạṠ¥

जेली के रूप में टेस्ट

कैसे?

जैली ने 0x0a की ½, वर्गमूल परमाणु की, जबकि पायथन की व्याख्या एक नई रेखा के रूप में की है। जेली में 0x7f को लिंक (फ़ंक्शंस) के बीच एक पृथक्करण के रूप में व्याख्या किया गया है और इसे कोडलाइन में एक नई पंक्ति या एक पायलट द्वारा दर्शाया गया है। जेली के लिए अंतिम लिंक मुख्य कार्य है - यहां यह ऊपर दिए गए लिंक को कॉल नहीं करता है (जो दुभाषिया को अभी भी सही तरीके से पार्सल करने की आवश्यकता है)। पायथन 0x23 में, #निर्देश देता है कि इसके बाद और 0x0a से पहले कुछ भी, एक नई पंक्ति, एक टिप्पणी है।

पायथन कोड जो निष्पादित हो जाता है:

lambda x,y:[max(x,y),x+y]*(x!=y)
lambda x,y:                      - A function taking two inputs, x and y
           [        ,   ]        - A list with two items
            max(x,y)             - take the maximum of x and y
                     x+y         - x plus y
                           x!=y  - x not equal to y?
                         *(    ) - multiply - True is treated as if it were 1, False as if it were 0

जेली कोड जो निष्पादित हो जाता है:

«,ạẋạṠ¥ - A dyadic link (function of two variables): x, y
«       - minimum(x, y)
  ạ     - absolute difference(x, y)
 ,      - pair left with right (creating a list)
      ¥ - last two links as a dyad:
     ạ  -     absolute difference(x, y)
    Ṡ   -     sign(result) (i.e. {0:0, +x:1, -x:-1} but -x never happens)
   ẋ    - repeat the list to the left right times (either the same list or an empty list)
        - return the result

दिलचस्प भाषा विकल्प
मिस्टर एक्सकोडर

यह लगभग निश्चित रूप से संभव है कि बेली काउंट डाउन करने के लिए जेली कोड को किसी अन्य गोल्फिंग भाषा के साथ संयोजित किया जाए।
जोनाथन एलन

उम्म ... आपके कोड स्निपेट्स अलग दिखाई देते हैं।
एरिक आउटगॉल्फर

1
@EriktheOutgolfer उन कोड ब्लॉक कच्चे बाइट्स का प्रतिनिधित्व करते हैं (इसलिए \x7fऔर \x04पायथन में unprintables के लिए)।
जोनाथन एलन

1
@JonathanAllan नहीं, मेरा मतलब है कि आपके स्निपेट्स वास्तव में अलग हैं। बस हर एक के लिए पायथन कोड देखें।
एर्ग आउटफोलर

8

रूबी / पायथन 3, 102 बाइट्स

रूबी अधिकतम / राशि लौटाता है, पाइथन न्यूनतम / अंतर देता है। इनपुट एक सरणी वस्तु है जिसे STDIN से पढ़ा जाता है।

a=eval((0and gets or input()))
b=a.sort()
x,y=(b or a)
z=0 or 1
x==y or print([[y,x][z],[x+y,y-x][z]])

इसे ऑनलाइन आज़माएं: रूबी

इसे ऑनलाइन आज़माएँ: पायथन

यहां इस्तेमाल किया जाने वाला मुख्य क्विक 0रूबी में सत्य का उपयोग होता है, जो अजगर में झूठा है। उल्लेख के लायक दूसरी बात यह है कि पाइथन का sortकार्य सूची को इन-प्लेस और रिटर्न को संशोधित करता है None, जबकि रूबी नहीं करता है और सॉर्ट किए गए सरणी को वापस करता है, इसलिए b or aमिन / अधिकतम प्राप्त करने के लिए उपयोग करने की आवश्यकता है ।

पाइथन 3 की आवश्यकता है क्योंकि पाइथन 2 शिकायत करता है यदि आप अंतिम पंक्ति में बयान के printबाद कॉल करने का प्रयास करते हैं or


यह चालाकी है! +1
अर्जुन

4

जावा / एडब्ल्यूके , 219 217 212 196 बाइट्स

/*#\/* /
{$0=((x=$1)<y=$2)?x" "y-x:y" "x-y}x!=y
#*/interface B{static void main(String[]A){Integer x=Integer.parseInt(A[0]);int y=x.parseInt(A[1]);System.out.print(x==y?"":(x<y?y:x)+" "+(x+y));}}

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

जावा अधिकतम और राशि, AWK मिनट और अंतर को आउटपुट करता है। इनपुट के समान होने पर या तो कोई आउटपुट नहीं।

यह मेरा पहला बहुवचन है और पहला TIO :)


3

जावास्क्रिप्ट (ES6) / QBasic, 172 171 बाइट्स

'';f=x=>{m=Math.max(...x);s=Math.min(...x);if(x[0]!=x[1])alert([m,m-s])}/*
INPUT c
LET m=c
LET s=c
INPUT n
IF n>c THEN m=n
IF n<c THEN s=n
IF n<>c THEN PRINT m,m+s
END
'*/

इसी तरह के प्रश्न के खदान के इस समाधान पर आधारित

यह समाधान भी टिप्पणी दृष्टिकोण का उपयोग करें!

जावास्क्रिप्ट न्यूनतम भाषा है। यह एक सरणी में इनपुट के रूप में संख्याओं को लेता है। आउटपुट दो संख्याओं से अलग होता है ,(पहला नंबर इनपुट-एरे का सबसे छोटा मान है और दूसरा नंबर alert()आईएनजी द्वारा इनपुट और एरे के सबसे बड़े और सबसे छोटे मूल्यों का अंतर है) । alert()संख्याओं के बराबर होने पर कुछ नहीं करता । आप फ़ंक्शन को कॉल कर सकते हैं जैसे f([100,40])

QBasic अधिकतम भाषा है। बार-बार इनपुट मांगता है, दो बार। इनपुट-संख्याओं की सबसे बड़ी संख्या के साथ-साथ सबसे बड़ी और सबसे छोटी संख्या के योग को भी प्रिंट करता है। PRINTसंख्याओं के बराबर होने पर कुछ नहीं करता ।


यह कैसे काम करता है?

QBasic में (संरचित BASIC परिवार की भाषा; इसमें पंक्ति संख्या की आवश्यकता नहीं होती है), 'एक टिप्पणी की शुरुआत को चिह्नित करता है जो पंक्ति के अंत तक जाती है। जबकि जावास्क्रिप्ट में, यह एक स्ट्रिंग की शुरुआत को चिह्नित करता है। तो, पूरी पहली पंक्ति को QBasic में एक टिप्पणी के रूप में चिह्नित किया गया है, लेकिन जावास्क्रिप्ट में, इस पंक्ति को निष्पादित किया जाता है (और इस लाइन में जावास्क्रिप्ट भाग होता है जो सबसे छोटी संख्या और सबसे बड़ी और सबसे छोटी संख्या के अंतर की गणना करता है, साथ ही साथ /*अंत में भी। जो जावास्क्रिप्ट दुभाषिया से शेष QBasic कोड को छिपाने के लिए एक टिप्पणी शुरू करता है।)

दूसरी पंक्ति से दूसरी-अंतिम पंक्ति के कोड में सबसे बड़ी संख्या की गणना करने के लिए QBasic कोड और सबसे बड़ी और सबसे छोटी संख्या का योग होता है (कोड बहुत ही आत्म-व्याख्यात्मक होता है)।

अंतिम पंक्ति में सम्‍मिलित है '*/'QBasic दुभाषिया के कारण निम्नलिखित कोड को एक टिप्पणी के रूप में व्याख्या करता है, जबकि जावास्क्रिप्ट में, इसका कोई प्रभाव नहीं पड़ता है क्योंकि यह एक टिप्पणी का एक हिस्सा है (जो पहली पंक्ति के अंत में शुरू किया गया था)। निम्नलिखित कोड ( */) जावास्क्रिप्ट का कारण बनता है टिप्पणी को समाप्त करने के लिए जिसे पहली पंक्ति में शुरू किया गया था, लेकिन इसे QBasic में निष्पादित नहीं किया गया है क्योंकि QBasic को लगता है कि यह एक टिप्पणी का एक हिस्सा है।


परीक्षण के मामलों

जावास्क्रिप्ट (न्यूनतम-भाषा):

'';f=x=>{m=Math.max(...x);s=Math.min(...x);if(x[0]!=x[1])alert([m,m-s])}/*
INPUT c
LET m=c
LET s=c
INPUT n
IF n>c THEN m=n
IF n<c THEN s=n
IF n<>c THEN PRINT m,m+s
END
'*/

f([100,40]);

QBasic (अधिकतम-भाषा):

इस वेबसाइट पर जाएं । निम्नलिखित कोड को उनके टेक्स्ट-एडिटर में कॉपी पेस्ट करें:

1 '';f=x=>{m=Math.max(...x);s=Math.min(...x);if(x[0]!=x[1])alert([m,m-s])}/*
2 INPUT c
3 LET m=c
4 LET s=c
5 INPUT n
6 IF n>c THEN m=n
7 IF n<c THEN s=n
8 IF n<>c THEN PRINT m,m+s
9 END
10 '*/

लाइन नंबर की आवश्यकता क्यों है इसका कारण यह है कि जिस वेबसाइट का मैंने उल्लेख किया है वह केवल असंरचित बुनियादी भाषाओं का समर्थन करती है। और वह वेबसाइट केवल सभ्य ऑनलाइन बुनियादी व्याख्याकार है जो मुझे मिल सकती है। हालांकि, पोस्ट के शीर्ष में मौजूद कोड को चलाने (लाइन नंबर के बिना कोड) को किसी भी अच्छे QBasic दुभाषिया में ठीक काम करना चाहिए जो संरचित BASIC का समर्थन करता है और 'टिप्पणी-स्टार्टर के रूप में (कुछ नहीं, सबसे करते हैं, हालांकि)

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