চারটি পূর্ণসংখ্যার তুলনা করুন, সর্বাধিকের উপর ভিত্তি করে শব্দ প্রত্যাবর্তন করুন


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; 3rd- এবং 4 র্থ-অন্তত উল্লেখযোগ্য বিট সংশ্লিষ্ট সেট cএবং dসর্বোচ্চ মান equaling)

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
আমি আপনাকে পরামর্শ দেওয়ার পরামর্শ দিচ্ছি: ১. এই প্রশ্নটি কোড-গল্ফে পরিবর্তন করুন, যা কেবলমাত্র বাইটের সংখ্যা সম্পর্কে যত্নশীল। 2. বা, কিছু নির্দিষ্ট ভাষার সীমাবদ্ধ (সংকলক / দোভাষী অনুগ্রহ করে কিছু সংস্করণ), এবং সমস্ত বিবৃতি এবং অপারেটরদের অনুমোদিত তালিকাবদ্ধ করুন এবং সেগুলি কীভাবে স্কোর করবেন।
tsh

5
আইএমও, 1 আরও ভাল বিকল্প। আমি মনে করি এটি একটি পুরোপুরি ভাল কোড-গল্ফ প্রশ্ন তৈরি করেছে এবং আমি উত্তরগুলির জন্য উপলভ্য ভাষাগুলি সীমাবদ্ধ করে আসা কোনও উপকার দেখতে পাচ্ছি না
সেনক্স 13

2
আমি আমার প্রশ্নটি মাপদণ্ডটি সরিয়ে দিতে আপডেট করেছি। এটি এখনও অস্পষ্ট আমাকে জানতে দিন
মিঃ অ্যান্ডারসন

5
আমার দশমিক সংখ্যা আউটপুট করা উচিত? বা আমি পরিবর্তে 4 বাইনারি অঙ্ক আউটপুট করতে পারি?
tsh

উত্তর:



5

আর , 17 বাইট

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

এটি অনলাইন চেষ্টা করুন!

বুলিয়ানগুলির একটি ভেক্টর প্রদান করে। যেহেতু এই আউটপুটটি নিশ্চিত হয়ে গেছে, এটি সংখ্যার আউটপুটের চেয়ে বেশি ভাল, কারণ এটি প্রায় দ্বিগুণ দীর্ঘ:

আর , 33 বাইট

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

এটি অনলাইন চেষ্টা করুন!


4

এপিএল (ডায়ালগ ইউনিকোড) , 4 বাইট এসবিসিএস

বেনামে ট্যাসিট প্রিফিক্স ফাংশন। লাগে [a,b,c,d]আর্গুমেন্ট হিসাবে। একটি বিট-বুলিয়ান অ্যারে প্রদান করে *

⌈/=⌽

এটি অনলাইন চেষ্টা করুন!

⌈/ যুক্তি সর্বাধিক করে

= সমান (ভেক্টরাইজস)

 যুক্তির বিপরীত?

* নোট করুন যে এপিএল বুলিয়ান্সের অ্যারেগুলি মূল্য অনুসারে এক বিট ব্যবহার করে সঞ্চয় করে, সুতরাং এটি প্রদর্শন ফর্ম থাকা সত্ত্বেও 4-বিট শব্দটি ফিরিয়ে দেয় 0 0 1 0


3

হাস্কেল , 20 18 বাইট

2 বাইট গর্বিত হাস্কেল্লারকে ধন্যবাদ সংরক্ষণ করেছে

map=<<(==).maximum

এটি অনলাইন চেষ্টা করুন!


আপনি একটি স্ট্রিং আউটপুট করতে পারেন
অ্যাডম

1
লেখার mapবদলে (<$>)দুই বাইট খাটো হবে!
অভিমানী হাসেল্লার

পছন্দ করুন বিশ্বাস করতে পারি না যে আমি সেটিকে দেখিনি।
অ্যাডহক গার্ফ হান্টার

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 বাইট ধন্যবাদ!
-২ বাইট @ শাগগিকে ধন্যবাদ!

ইনপুটটি নিম্নলিখিত ফর্ম্যাটে একটি 4-উপাদান অ্যারে:

[d, c, b, a]

আউটপুট বিটের একটি অ্যারে is


অবশ্যই আছে;) স্পষ্টতই শিখার অনেক শর্টকাট রয়েছে।
দানা

যদি কোনও বুলিয়ান অ্যারে গ্রহণযোগ্য আউটপুট হয় তবে এটি 7 বাইট হতে পারে
অলিভার

@ অলিভার, 5 বাইট ;)
শেগি

আপনি ছেলেরা বেশ ভাল :) এটি আকর্ষণীয় যে কীভাবে বার বার সর্বাধিকতা অর্জন করে হ্রাস rwকরতে r("w")পারে। রূপান্তরিত হওয়ার সাথে একই U.m("===", ...)। যাই হোক না কেন, টিপস জন্য ধন্যবাদ!
দানা

2

x86 মেশিন কোড (এমএমএক্স / এসএসই 1), 26 বাইট (4x ইনট 16_t)

x86 মেশিন কোড (এসএসই 4.1), 28 বাইট (4x ইনট 32_ টি বা ইউএনটি 32_t)

x86 মেশিন কোড (এসএসই 2), 24 বাইট (4x ফ্লোট 32) বা 27 বি সিটি ভি 32 থেকে

(সর্বশেষ সংস্করণ যা ইন্টি 32-কে ফ্লোটে রূপান্তরিত করে একই বৃহত পূর্ণসংখ্যার জন্য একই ধাপে পুরোপুরি সঠিক নয় flo ফ্লোট ইনপুট সহ, গোল করা কলারের সমস্যা এবং কোনও এনএএন না থাকলে এই ফাংশনটি সঠিকভাবে কাজ করে যা তুলনামূলকভাবে ফ্লোটগুলি সনাক্ত করে == সর্বোচ্চটিতে। পূর্ণসংখ্যা সংস্করণগুলি সমস্ত ইনপুটগুলির জন্য কাজ করে, তাদেরকে স্বাক্ষরযুক্ত 2 এর পরিপূরক হিসাবে গণ্য করে))

এই সমস্তগুলি একই মেশিন কোড সহ 16/32/64-বিট মোডে কাজ করে।

একটি স্ট্যাক-আরগস কলিং কনভেনশনটি দু'বার আর্গুমেন্টগুলি লুপ করা সম্ভব করে তোলে (সর্বাধিক সন্ধান এবং তারপরে তুলনা করা), সম্ভবত আমাদের আরও একটি ছোট বাস্তবায়ন দেয়, তবে আমি সেই পদ্ধতির চেষ্টা করি নি।

x86 সিমডে ভেক্টর-> একটি একক নির্দেশ ( pmovmskbবা movmskpsবা পিডি) হিসাবে পূর্ণসংখ্যার বিটম্যাপ রয়েছে , সুতরাং এমএমএক্স / এসএসই নির্দেশনা কমপক্ষে 3 বাইট দীর্ঘ হলেও এটির জন্য এটি স্বাভাবিক ছিল। এসএসইএস 3 এবং পরবর্তী নির্দেশাবলী এসএসই 2 এর চেয়ে দীর্ঘ এবং এমএমএক্স / এসএসই 1 নির্দেশাবলী সবচেয়ে কম। pmax*এসএসই 1 (এমএমএক্স রেগের জন্য) এবং এসএসই 2 (এক্সএমএম রেগের জন্য) কেবল স্বাক্ষরযুক্ত শব্দ (16-বিট) এবং স্বাক্ষরবিহীন বাইট সহ বিভিন্ন সময়ে (প্যাকড-ইন্টিজার ভার্টিকাল ম্যাক্স) বিভিন্ন সংস্করণ প্রবর্তিত হয়েছিল।

( pshufwএবং pmaxswএমএমএক্স-এ রেজিস্টারগুলি কাটমাই পেন্টিয়াম III এর সাথে নতুন, তাই তাদের কেবল এসএমই 1 প্রয়োজন, কেবলমাত্র এমএমএক্স সিপিইউ বৈশিষ্ট্য নয়))

এটি আই unsigned max4_mmx(__m64)386 সিস্টেম ভি এবিআইয়ের মতো সি থেকে কলযোগ্য , যা একটি __m64আর্গ পাস করে mm0। (না x86-64 সিস্টেম ভী, যা পাসের __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কারণ pmovmskbএমএমএক্স নিবন্ধে ইতিমধ্যে উপরের বাইটগুলি শূন্য করে। এমএমএক্স রেজিস্টারগুলি কেবল 8 বাইট প্রশস্ত, সুতরাং 8-বিট AL সমস্ত সম্ভাব্য নন-শূন্য বিটগুলি কভার করে।

যদি আমরা জানতাম যে আমাদের ইনপুটগুলি অ-নেতিবাচক ছিল, তবে আমরা পরবর্তীpacksswb mm1, mm0 4 টি বাইটে অ-নেতিবাচক স্বাক্ষরিত বাইটগুলি উত্পাদন করতে পারতামmm1 , andপরে প্রয়োজনীয়তা এড়িয়ে pmovmskbএইভাবে 24 বাইট।

স্বাক্ষরিত স্যাচুরেশন সহ x86 প্যাকটি ইনপুট এবং আউটপুটটিকে স্বাক্ষরিত হিসাবে বিবেচনা করে, তাই এটি সর্বদা সাইন বিট সংরক্ষণ করে। ( https://www.felixcloutier.com/x86/packsswb:packssdw )। মজার বিষয়: স্বাক্ষরবিহীন সম্পৃক্তি সঙ্গে এক্স 86 প্যাক এখনও একইরূপে ইনপুট হিসাবে স্বাক্ষর করেন। এটি হতে পারে কেন PACKUSDWএসএসই 4.1 অবধি প্রবর্তন করা হয়নি, অন্যদিকে 3 টি আকার এবং স্বাক্ষরের সংমিশ্রণ এমএমএক্স / এসএসই 2-এর পরে থেকেই ছিল।


অথবা একটি এক্সএমএম রেজিস্টারে 32-বিট ইন্টিজার সহ (এবং pshufdপরিবর্তে pshufw), প্রতিটি নির্দেশের জন্য movmskpsপ্যাকটি প্রতিস্থাপন এবং / এবং বাদ দিয়ে আরও একটি উপসর্গ বাইট প্রয়োজন । তবে pmaxsd/ pmaxudঅতিরিক্ত অতিরিক্ত বাইটের প্রয়োজন ...

unsigned max4_sse4(__m128i);x86-64 সিস্টেম ভি, বা এমএসভিসি ভেক্টরক্যাল ( -Gv) এর সাথে সি থেকে কলযোগ্য , উভয়ই এক্সএমএম রেগগুলিতে পাস __m128i/ __m128d/ __m128আরগস দিয়ে শুরু হয় 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এসএসই 1 নির্দেশাবলী ব্যবহার করতে পারি। floatবিন্যাস পূর্ণসংখ্যা মান বিস্তৃত উপস্থাপন করতে পারেন ...

বা যদি আপনি মনে করেন যে নিয়মগুলি খুব দূরে বাঁকানো 0F 5B C0 cvtdq2ps xmm0, xmm0হয়েছে, রূপান্তর করতে 3 বাইট দিয়ে শুরু করুন , 27-বাইট ফাংশন তৈরি করুন যা সমস্ত পূর্ণসংখ্যার জন্য কাজ করে যা আইইইই বাইনারি 32 হিসাবে হুবহু উপস্থাপনযোগ্যfloat এবং ইনপুটগুলির বেশ কয়েকটি সংমিশ্রণ যেখানে কিছু ইনপুট পায় রূপান্তরকালে 2, 4, 8, বা যাই হোক না কেন একাধিকতে গোল হয়। (সুতরাং এটি এসএসই 4.1 সংস্করণের চেয়ে 1 বাইট ছোট এবং কেবল এসএসই 2 দিয়ে কোনও x86-64 এ কাজ করে))

ভাসা ইনপুট কোন নান নোট হন যে maxps a,bঠিক কার্যকরী (a<b) ? a : b, unordered উপর 2nd প্রতীক থেকে উপাদান পালন । সুতরাং ইনপুটটিতে কিছু NaN রয়েছে কিনা তা নির্ভর করে এমনকি কোনও শূন্য নন বিটম্যাপটি দিয়ে ফিরে আসা তার পক্ষে সম্ভব হতে পারে on

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 কম অর্ধেকের জন্য ইনপুট পড়ে । এবং আমাদের উভয়বার একটি অ-ধ্বংসাত্মক অনুলিপি-এবং- বদল প্রয়োজন , সুতরাং 3-বাইট এবং / পিডি উভয়ই আউট। আমরা যদি একটি স্কেলার সর্বাধিক সংকীর্ণ হয়ে থাকি তবে আমরা সেগুলি ব্যবহার করতে পারি, তবে ইতিমধ্যে সমস্ত উপাদানগুলির মধ্যে আমাদের সর্বোচ্চ না থাকলে তুলনা করার আগে সম্প্রচারের জন্য আরও একটি নির্দেশনার দরকার পড়ে costsdst dstmovhlpsunpckhps


সম্পর্কিত: এসএসই 4.1 একটি এক্সএমএম রেজিস্ট্রারে নূন্যতমের phminposuwঅবস্থান এবং মান খুঁজে পেতে পারে uint16_t। আমি মনে করি না যে এটি 65535 থেকে বিয়োগ করে এটি সর্বোচ্চের জন্য ব্যবহার করতে হবে তবে এটি সর্বাধিক বাইট বা স্বাক্ষরিত পূর্ণসংখ্যার জন্য ব্যবহার করার জন্য একটি এসও উত্তর দেখুন ।


1

পাইথন 3.8 (প্রাক রিলিজ) , 67 বাইট

ল্যাম্বদা ফাংশন যা 4 টি পূর্ণসংখ্যার মধ্যে নিয়ে যায়, পাইথন 3.8 এর নতুন অ্যাসাইনমেন্ট অপারেটরের সাহায্যে সর্বাধিক মানের সাথে তাদের তুলনার বুলিয়ান ফলাফলটিকে কিছুটা স্থানান্তরিত করে এবং ফলাফলের বিটওয়াইস বা OR প্রদান করে

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

এটি অনলাইন চেষ্টা করুন!


: = আমাকে সেই পুরানো দিনগুলির কথা মনে করিয়ে দেয় যেখানে লোটাস নোটসের সূত্র সহ অ্যাসাইনমেন্ট অপারেটর ছিল। মনে করুন আমাকে পুরানো সময়ের জন্য 3.8 এ একবার দেখতে হবে :)
এলপেড্রো


1

05 এ বি 1 , 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

জাভাস্ক্রিপ্ট (ES6), 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 fixকমত্যের সাথে সামঞ্জস্য করার জন্য দয়া করে আপনার উত্তরটি ঠিক করুন , অর্থাত এটি একটি ফাংশন বা সম্পূর্ণ প্রোগ্রাম করুন।
জোনাথন ফ্রেঞ্চ 9

1
সম্পাদনা করা হয়েছে। প্রথমবারের মতো। মাথা আপ প্রশংসা!
সোসাইন্ড

ল্যাম্বডায় এই তালিকাটি বোঝার জন্য আপনি এটি 37 বাইটে হ্রাস করতে পারেন । পিপিসিজিতে স্বাগতম, এবং আপনার থাকার উপভোগ করুন!
মান কালি

@ ভ্যালিউইঙ্ক অতিমাত্রায় সাদা সাদা স্থান সরিয়ে ফেলা অন্য একটি বাইট সংরক্ষণ করে।
জোনাথন ফ্রেচ

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

এখানে একটি জেএস সংস্করণ রয়েছে যা বাইনারি হিসাবে আউটপুট করে

আপডেট: যোগদানের সাথে সংক্ষিপ্ত এবং চেহারা ছাড়াই:

জাভাস্ক্রিপ্ট (নোড.জেএস) , 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]

আপনার পূর্ণসংখ্যা আউটপুট করার দরকার নেই।
অ্যাডাম

@ অ্যাডাম - ধন্যবাদ :) আমি আমার অন্যান্য উত্তরের উপর কাজ করার সময় পোস্ট করার পরে এটি উপলব্ধি করেছিলাম। আমার পরিবর্তনের সুযোগ পাওয়ার আগে আরও একটি সি # উত্তর ছিল যা প্রচুর ভাল কৌশল ব্যবহার করেছিল।
ডানা

0

পাইথন 2 , 35 বাইট

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

এটি অনলাইন চেষ্টা করুন!

অ্যাডামের গৃহীত উত্তর হিসাবে [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))

ইনপুটটিতে প্রতিটি উপাদানটির জন্য উপাদানটি সর্বাধিক কিনা তা কেবল কেবল একটি তালিকা দেয়। -২ বাইটস যদি আপনি f=অ্যাসাইনমেন্টটি গণনা করেন না ।

এটি অনলাইন চেষ্টা করুন!


f=পুনরাবৃত্তির কাজগুলি ব্যতীত গণনা করা হয় না
ASCII- কেবল

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 বাইট পরিমাণ সঞ্চয় হয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.