अधिकतम के आधार पर चार पूर्णांक, रिटर्न शब्द की तुलना करें


9

यह समारोह चार पूर्णांक आदानों (लेना चाहिए a, b, c, d) आधार पर मूल्यों चार की अधिकतम बराबर और एक द्विआधारी शब्द वापस जाएँ।

वापसी मान 1और के बीच होगा 0xF

उदाहरण के लिए:

a = 6, b = 77, c = 1, d = 4

रिटर्न 2(द्विआधारी 0010, केवल दूसरा-कम से कम महत्वपूर्ण बिट bएकमात्र अधिकतम मूल्य होने के लिए निर्धारित है )

a = 4, b = 5, c = 10, d = 10

रिटर्न 0xC(द्विआधारी 1100; 3 जी और 4-कम से कम महत्वपूर्ण बिट्स अधिकतम मूल्य के बराबर cऔर dबराबर सेट )

a = 1, b = 1, c = 1, d = 1

रिटर्न 0xF(बाइनरी 1111, सभी चार बिट सेट क्योंकि सभी मान अधिकतम के बराबर हैं)

यहाँ एक सरल कार्यान्वयन है:

int getWord(int a, int b, int c, int d)
{
    int max = a;
    int word = 1;
    if (b > max)
    {
        max = b;
        word = 2;
    }
    else if (b == max)
    {
        word |= 2;
    }
    if (c > max)
    {
        max = c;
        word = 4;
    }
    else if (c == max)
    {
        word |= 4;
    }
    if (d > max)
    {
        word = 8;
    }
    else if (d == max)
    {
        word |= 8;
    }
    return word;
}

रिटर्न वैल्यू 0 और 1, बूल / बिट वेक्टर, या पूर्णांक की स्ट्रिंग हो सकती है


2
मेरे पास एक गोल्फ भाषा में एक समाधान है, जो बिल्टर्स रिवर्स, मैक्सिमम, इक्विटी-चेक, जॉइन, बाइनरी से पूर्णांक में कन्वर्ट, पूर्णांक से हेक्साडेसिमल में कन्वर्ट का उपयोग करता है। क्या इसका मतलब समानता-जांच के कारण मेरा स्कोर 1 है? मुझे लग रहा है कि यह नियमित भाषाओं पर बहुत अधिक केंद्रित है, और यहां तक ​​कि उन लोगों के लिए भी यह 100% स्पष्ट नहीं है कि स्कोरिंग के लिए अधिकतम-
बिल्ड

1
मैं आपको सुझाव देना चाहूंगा: 1. इस प्रश्न को कोड-गोल्फ में बदलें, जो केवल बाइट्स की संख्या के बारे में परवाह करता है। 2. या, कुछ निश्चित भाषा (संकलक / दुभाषिया का निश्चित संस्करण) तक सीमित करें, और अनुमत सभी बयानों और ऑपरेटरों को सूचीबद्ध करें, और उन्हें कैसे स्कोर करें।
tsh

5
1 एक बेहतर विकल्प है, IMO। मुझे लगता है कि यह एक पूरी तरह से अच्छा कोड-गोल्फ प्रश्न बनाता है और मैं कोई भी लाभ नहीं देख सकता हूं जो उत्तर के लिए उपलब्ध भाषाओं को प्रतिबंधित करने से आएगा
senox13

2
मैंने मापदंड हटाने के लिए अपना प्रश्न अपडेट किया। मुझे बताएं कि यह अभी भी स्पष्ट नहीं है
श्री एंडरसन

5
क्या मुझे दशमलव संख्या का उत्पादन करना चाहिए? या मैं इसके बजाय 4 बाइनरी अंक का उत्पादन कर सकता हूं?
tsh

जवाबों:



5

आर , 17 बाइट्स

max(a<-scan())==a

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

बूलियन का एक वेक्टर लौटाता है। चूंकि इस आउटपुट की पुष्टि की गई है, यह संख्यात्मक आउटपुट पर बेहतर है, क्योंकि यह लगभग दो बार लंबा है:

आर , 33 बाइट्स

sum(2^which(max(a<-scan())==a)/2)

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


4

एपीएल (Dyalog यूनिकोड) , 4 बाइट्स SBCS

बेनामी tacit उपसर्ग समारोह। [a,b,c,d]तर्क के रूप में लेता है। थोड़ा-सा बूलियन सरणी देता है। *

⌈/=⌽

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

⌈/ अधिकतम तर्क करता है

= बराबर (वेक्टरिज़)

 तर्क का उलटा

* ध्यान दें कि एपीएल एक बिट प्रति मूल्य का उपयोग करके बूलियंस के सरणियों को संग्रहीत करता है, इसलिए यह प्रदर्शन फ़ॉर्म होने के बावजूद वास्तव में 4-बिट शब्द वापस करता है 0 0 1 0


3

हास्केल , 20 18 बाइट्स

2 बाइट्स ने गर्व हैस्केलर के लिए धन्यवाद बचाया

map=<<(==).maximum

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


आप एक स्ट्रिंग आउटपुट कर सकते हैं
आदम

1
के mapबजाय लेखन (<$>)दो बाइट्स कम होगा!
गर्व हैस्केलर

@proudhaskeller अच्छा कैच। विश्वास नहीं कर सकता कि मैंने वह नहीं देखा।
तदर्थ गार्फ हंटर

2

पर्ल 6 , 12 बाइट्स

{$_ X==.max}

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

अनाम कोड ब्लॉक जो पूर्णांकों की सूची लेता है और बूलियन्स की सूची लौटाता है। यदि हमें एक संख्या के रूप में वापस जाने की आवश्यकता है, तो कोड ब्लॉक के अंदर लपेटने के लिए +4 बाइट्स है 2:[...]

स्पष्टीकरण:

{          }  # Anonymous code block
 $_           # With the input
    X==       # Which values are equal
       .max   # To the maximum element

ओपी अब कहता है कि आपको लपेटने की जरूरत नहीं है।
आदम

2

जाप, ५

m¶Urw

कोशिश करो!

-4 बाइट्स @ @ ओलिवर को धन्यवाद!
-2 बाइट्स @ शुग्गी को धन्यवाद!

इनपुट निम्नलिखित प्रारूप में एक 4-तत्व सरणी है:

[d, c, b, a]

आउटपुट बिट्स की एक सरणी है।


बेशक वहाँ है;) सीखने के लिए जाहिर तौर पर बहुत सारे शॉर्टकट हैं।
दाना

यदि बूलियन सरणी एक स्वीकार्य आउटपुट है, तो यह 7 बाइट्स हो सकता है
ओलिवर

@ ओलिवर, 5 बाइट ;)
झबरा

आप लोग बहुत अच्छे हैं :) यह दिलचस्प है कि कैसे बार-बार अधिकतम प्राप्त करके कम करने के rwलिए धर्मान्तरित r("w")होता है। में परिवर्तित होने के साथ भी U.m("===", ...)। किसी भी मामले में, सुझावों के लिए धन्यवाद!
दाना

2

x86 मशीन कोड (MMX / SSE1), 26 बाइट्स (4x int16_t)

x86 मशीन कोड (SSE4.1), 28 बाइट्स (4x int32_t या uint32_t)

x86 मशीन कोड (SSE2), 24 बाइट्स (4x फ्लोट 32) या 27B intvt को c32

(अंतिम संस्करण जो फ्लोट को int32 में परिवर्तित करता है, एक ही फ्लोट के लिए जाने वाले बड़े पूर्णांकों के लिए बिल्कुल सही नहीं है। फ्लोट इनपुट के साथ, राउंडिंग कॉलर की समस्या है और यह फ़ंक्शन सही ढंग से काम करता है अगर कोई NaN नहीं हैं, तो फ्लोट की पहचान करना = तुलना करना == अधिकतम करने के लिए। पूर्णांक संस्करण सभी इनपुट के लिए काम करते हैं, उन्हें हस्ताक्षरित 2 के पूरक के रूप में मानते हैं।)

ये सभी एक ही मशीन कोड के साथ 16/32/64-बिट मोड में काम करते हैं।

एक स्टैंग-आर्ग्स कन्वेंशन जिसे कॉल करना संभव है, दो बार आर्गन्स पर लूप करना संभव है (अधिकतम और फिर तुलना करना), संभवतः हमें एक छोटा कार्यान्वयन दे रहा है, लेकिन मैंने उस दृष्टिकोण की कोशिश नहीं की है।

x86 SIMD में एकल निर्देश ( pmovmskbया movmskpsया पीडी) के रूप में वेक्टर-> पूर्णांक बिटमैप है , इसलिए MMX / SSE निर्देश कम से कम 3 बाइट्स लंबे होते हुए भी इसके लिए स्वाभाविक था। SSSE3 और बाद के निर्देश SSE2 से अधिक लंबे हैं, और MMX / SSE1 निर्देश सबसे कम हैं। pmax*SSE1 (mmx regs के लिए) और SSE2 (xmm regs के लिए) केवल हस्ताक्षरित शब्द (16-बिट) और अहस्ताक्षरित बाइट के साथ (पैक-पूर्णांक लंबवत अधिकतम) के विभिन्न संस्करणों को पेश किया गया था।

( pshufwऔर pmaxswएमएमएक्स रजिस्टर पर कैटमी पेंटियम III के साथ नए हैं, इसलिए वास्तव में उन्हें एसएसई 1 की आवश्यकता है, न कि केवल एमएमएक्स सीपीयू फीचर बिट।)

यह C3 से unsigned max4_mmx(__m64)i386 सिस्टम V ABI के साथ कॉल करने योग्य है, जो एक __m64arg को पास करता है mm0। (नहीं x86-64 सिस्टम V, जो में गुजरता __m64है xmm0!)

   line         code bytes
    num  addr   
     1                         global max4_mmx
     2                             ;; Input 4x int16_t in mm0
     3                             ;; output: bitmap in EAX
     4                             ;; clobbers: mm1, mm2
     5                         max4_mmx:
     6 00000000 0F70C8B1           pshufw    mm1, mm0, 0b10110001   ; swap adjacent pairs
     7 00000004 0FEEC8             pmaxsw    mm1, mm0
     8                         
     9 00000007 0F70D14E           pshufw    mm2, mm1, 0b01001110   ; swap high/low halves
    10 0000000B 0FEECA             pmaxsw    mm1, mm2
    11                         
    12 0000000E 0F75C8             pcmpeqw   mm1, mm0               ; 0 / -1
    13 00000011 0F63C9             packsswb  mm1, mm1               ; squish word elements to bytes, preserving sign bit
    14                         
    15 00000014 0FD7C1             pmovmskb  eax, mm1          ; extract the high bit of each byte
    16 00000017 240F               and       al, 0x0F          ; zero out the 2nd copy of the bitmap in the high nibble
    17 00000019 C3                 ret

size = 0x1A = 26 bytes

अगर वहाँ था pmovmskw, packsswbऔर and(3 + 2 बाइट्स) को क्या बचाया होगा । हमें जरूरत नहीं है and eax, 0x0fक्योंकि pmovmskbMMX रजिस्टर पर पहले से ही ऊपरी बाइट्स शून्य हैं। MMX रजिस्टर केवल 8 बाइट्स चौड़े हैं, इसलिए 8-बिट AL सभी संभव गैर-शून्य बिट्स को कवर करता है।

अगर हमें पता था कि हमारे इनपुट गैर-नकारात्मक थे, तो हमpacksswb mm1, mm0 ऊपरी 4 बाइट्स में गैर-नकारात्मक हस्ताक्षरित बाइट्स का उत्पादन कर सकते थे mm1, andबाद की आवश्यकता से बचते हुए pmovmskbइस प्रकार 24 बाइट।

हस्ताक्षर किए गए संतृप्ति के साथ x86 पैक हस्ताक्षर किए गए इनपुट और आउटपुट का व्यवहार करता है, इसलिए यह हमेशा साइन बिट को संरक्षित करता है। ( https://www.felixcloutier.com/x86/packsswb:packssdw )। मज़ेदार तथ्य: अहस्ताक्षरित संतृप्ति के साथ x86 पैक अभी भी व्यवहार करता है इनपुट के रूप में हस्ताक्षर किए। यह PACKUSDWSSE4.1 तक पेश नहीं किया गया था, जबकि MMX / SSE2 के बाद से आकार और हस्ताक्षर के अन्य 3 संयोजन मौजूद थे।


या एक एक्सएमएम रजिस्टर (और pshufdइसके बजाय pshufw) में 32-बिट पूर्णांक के साथ , प्रत्येक निर्देश को movmskpsपैक / और के स्थान को छोड़कर एक और उपसर्ग बाइट की आवश्यकता होगी । लेकिन pmaxsd/ pmaxudएक अतिरिक्त अतिरिक्त बाइट की आवश्यकता ...

C86 सेunsigned max4_sse4(__m128i); x86-64 सिस्टम V, या MSVC वेक्टरकॉल ( -Gv) के साथ कॉल करने योग्य है , जो दोनों XMM में पास __m128i/ __m128d/ __m128args के साथ शुरू होते हैं xmm0

    20                         global max4_sse4
    21                             ;; Input 4x int32_t in xmm0
    22                             ;; output: bitmap in EAX
    23                             ;; clobbers: xmm1, xmm2
    24                         max4_sse4:
    25 00000020 660F70C8B1         pshufd    xmm1, xmm0, 0b10110001   ; swap adjacent pairs
    26 00000025 660F383DC8         pmaxsd    xmm1, xmm0
    27                         
    28 0000002A 660F70D14E         pshufd    xmm2, xmm1, 0b01001110   ; swap high/low halves
    29 0000002F 660F383DCA         pmaxsd    xmm1, xmm2
    30                         
    31 00000034 660F76C8           pcmpeqd   xmm1, xmm0               ; 0 / -1
    32                         
    33 00000038 0F50C1             movmskps  eax, xmm1          ; extract the high bit of each dword
    34 0000003B C3                 ret

size = 0x3C - 0x20 = 28 bytes

या यदि हम इनपुट को स्वीकार करते हैं float, तो हम SSE1 निर्देशों का उपयोग कर सकते हैं। floatप्रारूप पूर्णांक मूल्यों की एक विस्तृत श्रृंखला का प्रतिनिधित्व कर सकते हैं ...

या अगर आपको लगता है कि नियम बहुत दूर 0F 5B C0 cvtdq2ps xmm0, xmm0झुक रहे हैं, तो कन्वर्ट करने के लिए 3-बाइट से शुरुआत करें, 27-बाइट फंक्शन बनाते हुए, जो कि सभी पूर्णांकों के लिए काम करता है, जो IEEE बाइनरी 32 के रूप में प्रतिनिधित्व करते हैं।float , और इनपुट के कई संयोजन जहां कुछ इनपुट मिलते हैं रूपांतरण के दौरान 2, 4, 8, या जो भी हो, के कई पर गोल किया गया। (तो यह SSE4.1 संस्करण की तुलना में 1 बाइट छोटा है, और केवल SSE2 के साथ किसी भी x86-64 पर काम करता है।)

यदि फ्लोट इनपुट में से कोई भी NaN है, तो ध्यान दें कि maxps a,bवास्तव में लागू होता है (a<b) ? a : b, जो कि 2 ऑपरेंड से तत्व को अनियंत्रित रखता है । इसलिए गैर-शून्य बिटमैप के साथ वापस लौटना संभव हो सकता है, भले ही इनपुट में कुछ NaN शामिल हों, यह निर्भर करता है कि वे कहाँ हैं।

unsigned max4_sse2(__m128);

    37                         global max4_sse2
    38                             ;; Input 4x float32 in xmm0
    39                             ;; output: bitmap in EAX
    40                             ;; clobbers: xmm1, xmm2
    41                         max4_sse2:
    42                         ;    cvtdq2ps  xmm0, xmm0
    43 00000040 660F70C8B1         pshufd    xmm1, xmm0, 0b10110001   ; swap adjacent pairs
    44 00000045 0F5FC8             maxps     xmm1, xmm0
    45                         
    46 00000048 660F70D14E         pshufd    xmm2, xmm1, 0b01001110   ; swap high/low halves
    47 0000004D 0F5FCA             maxps     xmm1, xmm2
    48                         
    49 00000050 0FC2C800           cmpeqps   xmm1, xmm0               ; 0 / -1
    50                         
    51 00000054 0F50C1             movmskps  eax, xmm1          ; extract the high bit of each dword
    52 00000057 C3                 ret

size = 0x58 - 0x40 = 24 bytes

कॉपी-एंड-फेरबदल pshufdअभी भी हमारी सबसे अच्छी शर्त है: shufps dst,src,imm8निम्न से आधे के लिए इनपुट पढ़ता dst है dst । और हमें दोनों बार एक गैर-विनाशकारी प्रतिलिपि-और-फेरबदल की आवश्यकता है, इसलिए 3-बाइट movhlpsऔर unpckhps/ पीडी दोनों बाहर हैं। यदि हम एक स्केलर अधिकतम तक सीमित कर रहे थे, तो हम उन का उपयोग कर सकते थे, लेकिन अगर हमारे पास पहले से ही सभी तत्वों में अधिकतम नहीं है, तो तुलना करने से पहले इसे प्रसारित करने के लिए एक और निर्देश का खर्च आता है।


संबंधित: SSE4.1 एक एक्सएमएम रजिस्टर में phminposuwन्यूनतम की स्थिति और मूल्य पा सकते हैं uint16_t। मुझे नहीं लगता कि इसे अधिकतम के लिए उपयोग करने के लिए 65535 से घटाना एक जीत है, लेकिन अधिकतम बाइट्स या हस्ताक्षरित पूर्णांक के लिए इसका उपयोग करने के बारे में एक एसओ उत्तर देखें ।


1

पायथन 3.8 (पूर्व-रिलीज़) , 67 बाइट्स

लैम्ब्डा फ़ंक्शन जो 4 पूर्णांकों में होता है, पायथन 3.8 के नए असाइनमेंट ऑपरेटर की मदद से अधिकतम मूल्य के मुकाबले उनकी तुलना के बूलियन परिणाम को थोड़ा शिफ्ट करता है , और बिटवाइज़ या परिणामों की वापसी करता है

lambda a,b,c,d:((m:=max(a,b,c,d))==d)<<3|(m==c)<<2|(m==b)<<2|(a==m)

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


: = मुझे पुराने दिनों की याद दिलाता है, जहाँ लोटस नोट्स फॉर्मूला का असाइनमेंट ऑपरेटर था। मुझे लगता है कि मुझे पुराने समय के लिए 3.8 पर एक नज़र रखना होगा :)
ElPedro


1

05AB1E , 3 2 बाइट्स

ZQ

[d,c,b,a]बुलियन की सूची के रूप में आउटपुट, की एक सूची के रूप में इनपुट ।

इसे ऑनलाइन आज़माएं या सभी परीक्षण मामलों को सत्यापित करें

स्पष्टीकरण:

Z    # Take the maximum of the implicit input-list
 Q   # Check for each in the (implicit) input-list if it equals this value
     # (and output implicitly as result)

ओपी अपडेट किया गया है - आपको हेक्स में बदलने की आवश्यकता नहीं है।
आदम

1

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

के रूप में इनपुट लेता है ([d,c,b,a])। 4 बूलियन मान लौटाता है।

a=>a.map(x=>x==Math.max(...a))

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


1
ओपी ने स्पष्ट किया है कि आप वास्तव में 4 बुलियन मूल्यों को वापस कर सकते हैं।
आदम


1

पायथन 3 , 59 बाइट्स 66 बाइट्स

def f(l):
 n=max(a)
 for i in 0,1,2,3:a[i]=a[i]==n
 return a[::-1]

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

इनपुट के रूप में लेता है [a,b,c,d]और बूलियंस की सूची को आउटपुट करता है।

एक उचित कार्य करने के लिए संपादित किया गया, फिर सशर्त के चारों ओर कोष्ठक को हटाकर 2 बाइट्स को बचाया गया।


1
नमस्कार और पीपीसीजी में आपका स्वागत है। जैसा कि यह खड़ा है, आपके उत्तर में एक स्निपेट का रूप है, जो अस्वीकृत है। कृपया हमारे I / O सर्वसम्मति के अनुरूप अपने उत्तर को ठीक करें , अर्थात इसे एक फ़ंक्शन या पूर्ण कार्यक्रम बनाएं।
जोनाथन फ्रीच

1
संपादित। पहली बार के आसपास। सिर की सराहना करो!
19 को बॉनसड

एक लैम्ब्डा के भीतर इस सूची की समझ का उपयोग करके आप इसे 37 बाइट्स तक कम कर सकते हैं । PPCG में आपका स्वागत है, और अपने प्रवास का आनंद लें!
वैल्यू इंक

@ValueInk शानदार व्हाट्सएप को हटाने से एक और बाइट बचती है।
जोनाथन फ्रीच

1

1. पायथन 3.5, 90 बाइट्स

मापदंडों के रूप में संख्याओं का क्रम लेता है। "बाइनरी" स्ट्रिंग लौटाता है

import sys;v=[*map(int,sys.argv[1:])];m=max(v);s=""
for e in v:s=str(int(e==m))+s
print(s)

उदाहरण:

$ ./script.py 6 77 1 4 77
10010

व्याख्या

import sys
# convert list of string parameters to list of integers
v=[*map(int,sys.argv[1:])]
# get max
m=max(v)
# init outstring
s=""
# walk through list
for e in v:
    # prepend to outstring: int(True)=>1, int(False)=>0
    s=str(int(e==m))+s
# print out result
print(s)

1

सी # (विजुअल सी # इंटरएक्टिव कंपाइलर) , 26 बाइट्स

n=>n.Select(a=>a==n.Max())

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

प्रारूप में इनपुट लेता है [d,c,b,a]। नीचे दिए गए सभी अन्य इनपुट के रूप में लेते हैं[a,b,c,d]

सी # (विजुअल सी # इंटरएक्टिव कंपाइलर) , 35 बाइट्स

n=>n.Select((a,b)=>n[3-b]==n.Max())

रिटर्न ए IEnumerable<bool>

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

सी # (विजुअल सी # इंटरएक्टिव कंपाइलर) , 39 बाइट्स

n=>n.Select((a,b)=>n[3-b]==n.Max()?1:0)

एक रिटर्न देता है IEnumerable<int>, जो बिट्स का प्रतिनिधित्व करता है।

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

सी # (विजुअल सी # इंटरएक्टिव कंपाइलर) , 49 बाइट्स

n=>{for(int i=4;i-->0;Write(n[i]==n.Max()?1:0));}

बाइनरी स्ट्रिंग को STDOUT में प्रिंट करता है।

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


IEnumerable<bool> है स्वीकार्य।
आदम


0

यहाँ एक JS संस्करण है जो बाइनरी के रूप में आउटपुट करता है

अद्यतन: शामिल होने के साथ छोटा, और लुकअप के बिना:

जावास्क्रिप्ट (Node.js) , 42 बाइट्स

a=>a.map(x=>+(x==Math.max(...a))).join('')

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

पिछला, लुकअप के साथ, 49 बाइट्स

a=>a.map(x=>[0,1][+(x==Math.max(...a))]).join('')

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

पिछला, कम करके, 52 बाइट्स:

a=>a.reduce((y,x)=>y+[0,1][+(x==Math.max(...a))],'')

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

fa=>a.map(x=>+(x==Math.max(...a))).join('')
console.log(f([ 4, 1,77, 6])) // 0010
console.log(f([10,10, 5, 4])) // 1100
console.log(f([ 1, 1, 1, 1])) // 1111


1
आप सुरक्षित रूप से हटा सकते हैं [0,1][...]क्योंकि आप पहले से ही एक इंडेक्स का उपयोग कर रहे हैं0 या 1
अरनौलद

@ अर्नुलद अब स्पष्ट लगता है। धन्यवाद!
प्यूरफेरेट

0

सी # (विजुअल सी # इंटरएक्टिव कंपाइलर) , 51 बाइट्स

x=>{for(int m=x.Max(),i=4;i-->0;)x[i]=x[i]==m?1:0;}

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

ऊपर एक अनाम फ़ंक्शन है जो किसी तर्क को संशोधित करके आउटपुट करता है । आउटपुट 1 और 0 का एक सरणी है।

नीचे एक पुनरावर्ती फ़ंक्शन है जो पूर्णांक को आउटपुट करता है।

सी # (विजुअल सी # इंटरएक्टिव कंपाइलर) , 60 बाइट्स

int f(int[]x,int i=3)=>i<0?0:2*f(x,i-1)|(x[i]==x.Max()?1:0);

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

दोनों कार्य 4-तत्व सरणी के रूप में इनपुट लेते हैं।

[d, c, b, a]

आपको एक पूर्णांक आउटपुट करने की आवश्यकता नहीं है।
आदम

@ एडम - धन्यवाद :) मुझे यह महसूस करने के बाद पोस्ट किया गया जब मैं अपने दूसरे उत्तर पर काम कर रहा था। इससे पहले कि मुझे बदलने का मौका मिले, एक और C # जवाब था जिसमें बहुत सारी अच्छी ट्रिक्स का इस्तेमाल किया गया था।
दाना

0

पायथन 2 , 35 बाइट्स

lambda i:[int(x==max(i))for x in i]

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

Adám के स्वीकृत उत्तर के साथ [d, c, b, a] प्रारूप में इनपुट लेता है, इसलिए मुझे लगता है कि यह ठीक है।

41 के लिए वैकल्पिक अगर यह नहीं है ...

पायथन 2 , 41 बाइट्स

lambda i:[int(x==max(i))for x in i][::-1]

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


0

पायथन 3 , 42 बाइट्स

f=lambda a:list(map(lambda x:x==max(a),a))

बस एक सूची देता है कि इनपुट में प्रत्येक तत्व के लिए तत्व अधिकतम है या नहीं। -2 बाइट्स यदि आप f=असाइनमेंट की गिनती नहीं करते हैं ।

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


f=पुनरावर्ती कार्यों को छोड़कर गिनती नहीं करता है
केवल

0

बैच, 92 बाइट्स

@set m=%1
@set f=@for %%i in (%*)do @
%f%set/a"m=m+(m-=%%i)*(m>>31)
%f%cmd/cset/a!(m-%%i)

रिवर्स ऑर्डर में कमांड-लाइन मापदंडों के रूप में तर्क देता है। अंकगणितीय रूप से पैरामीटर की अधिकतम गणना करके उन पर कम करके और चल रहे अधिकतम से केवल सकारात्मक अंतरों को जोड़कर काम करता है, फिर प्रत्येक पैरामीटर पर मैपिंग इस बार फिर से अधिकतम की तुलना करता है। आसानी से cmd/cset/aएक नई पंक्ति का उत्पादन नहीं होता है, इसलिए परिणाम स्वचालित रूप से एक साथ समाप्‍त हो जाते हैं। %f%बस क्या एक दोहराया निर्माण होगा पर 5 बाइट्स बचाता है।

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