বিল্টিনগুলি ব্যবহার না করে একটি অ্যারেতে সর্বনিম্ন এবং সর্বাধিক পূর্ণসংখ্যার সন্ধান করুন


15

চ্যালেঞ্জ

স্ট্যাডিন, ফাংশন আর্গুমেন্ট, প্রোগ্রাম আর্গুমেন্ট বা অন্য কোনও পদ্ধতি থেকে প্রাপ্ত পূর্ণসংখ্যার অ্যারে দেওয়া:

আউটপুট শুধুমাত্র অ্যারের মধ্যে সর্বনিম্ন এবং সর্বোচ্চ সংখ্যা, একটি ফিরতি মান, stdout- এ, বা অন্যান্য ফিটিং পদ্ধতিগুলির মাধ্যমে।

উদাহরণ সেশন

> minmax( {0, 15, 2, 3, 7, 18, -2, 9, 6, -5, 3, 8, 9, -14} )
-14 18

রেফারেন্স বাস্তবায়ন

// C++14

void minmax(std::vector<int> v) {
    int min = v[0]; int max = v[0];
    for(auto it : v) {
        if (*it < min)
            min = *it;
        if (*it > max)
            max = *it;
    }
    std::cout << min << ' ' << max << std::endl;
}

বিধি

  • মানগুলি গণনা করার জন্য আপনি বিল্ট-ইন ফাংশনটি ব্যবহার করতে পারেন না।
  • স্ট্যান্ডার্ড লুফোলগুলি অনুমোদিত নয়।
  • সৃজনশীল বাস্তবায়ন উত্সাহিত।
  • এটি , সংক্ষিপ্ত উত্তর জিতলেও নির্বাচন করা হবে না।

ব্যাখ্যা

  • অ্যারেতে যদি 1 টি উপাদান থাকে তবে আপনার এটির দুবার আউটপুট করা দরকার।
  • যদি সর্বনিম্ন এবং সর্বাধিক মানগুলি একই হয় তবে আপনাকে সেগুলি উভয়ই আউটপুট করতে হবে।

12
এই হল ওয়াই চ্যালেঞ্জ ছাড়া কি এক্স , যা বিশেষ করে আকর্ষণীয় নয়।
মেগো

5
@ দিমিত্রিকুডিয়াভটসেভ পরের বার স্যান্ডবক্স ব্যবহার করে দেখুন ।
মেগো

5
সিরিয়াসলি, স্যান্ডবক্স ব্যবহার করুন । চ্যালেঞ্জে আপনার পরিবর্তনগুলি প্রতিটি একক উত্তরকে অবৈধ করেছে।
মেগো

1
আমি সৃজনশীল পদ্ধতিগুলিকে উত্সাহ দিয়েছি না, আপনি এটি সংক্ষিপ্ত সমাধানগুলিকে ট্যাগ করে উত্সাহিত করেছেনcode golf
লুইস মেন্ডো

1
যেমনটি লুইস মেন্ডো হ্যাঁ বলেছে, প্রত্যেকে স্রেফ "আমি একটি বিল্ট-ইন ব্যবহার করে আপনার অ্যারে বাছাই করে প্রথমে এবং শেষটি নিয়েছি" পোস্ট করছি, সত্যই সৃজনশীল নয়: x
সাজিয়েছি নিয়েছি ওয়ালফ্র্যাট

উত্তর:


29

জেলি , 3 বাইট

Ṣ.ị

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

অ্যারে বাছাই করুন এবং তারপরে 0.5-তম উপাদানটি গ্রহণ করুন।

জেলি 1-ইনডেক্সিং ব্যবহার করে এবং ভাসমান পয়েন্টগুলি সূচীকরণ মানে তার তল এবং এর সিলটি নিন।

সুতরাং 0.5-তম উপাদানটি আপনাকে 0 তম উপাদান এবং 1 ম উপাদান সরবরাহ করবে।

0 তম উপাদানটি হ'ল শেষ উপাদান।


2
খুব চতুর আমি অপেক্ষা করছি .... জেলি!
রোহান ঝুনঝুনওয়ালা

ওহ, যাতে এটি মাঝারি তুচ্ছ আবিষ্কার করতে পারে।
অ্যাডম

1
@KonradRudolph এই
লিকি নুন

1
যদি আপনি চান না প্রথম এবং শেষ উপাদান, বরং প্রথম দুই উপাদানের? নাকি আমি আপনার ব্যাখ্যা ভুল বুঝেছি?
টবি স্পিড

1
@ টবিস্পাইট 1-ভিত্তিক সূচিতে 0 তম উপাদানটি শেষ উপাদান।
লিকি নুন

12

পাইথন, 61 49 37 36 34 31 বাইট

lambda s:s.sort()or[s[0],s[-1]]

-12 বাইটস রুটটোকে ধন্যবাদ

আরেকটি -12 বাইট চেইনারকে ধন্যবাদ

-2 বাইট ধন্যবাদ জনলতে ধন্যবাদ

-3 বাইট ধন্যবাদ জনলতে ধন্যবাদ


1
আমি পাইথনে শিরোনাম পরিবর্তন করেছি কারণ এটি পাইথন 3-তেও কাজ করে।
লিকি নুন

1
আপনি এক ডজন বাইট বন্ধ করতে পারেন: [::(len(s)-1)or 1]প্রথম সাবস্ক্রিপ্টের জন্য ব্যবহার করুন । এবং দ্বিতীয় মেয়াদটি সংক্ষিপ্ত করা যেতে পারে s[:len(s)<2]
রুটটউ

তালিকা দুইবার বাছাই খরচে, আপনি অন্য 12 বাইট বন্ধ শেভ করতে পারেন: lambda s:sorted(s)[:1]+sorted(s)[-1:]
চিপনার

6 বাইট দ্বারা রক্ষা করুনlambda s:sorted(s)[::len(s)-1]
অ্যারন

বর্তমান সংস্করণ ( lambda s:sorted(s)[::len(s)-1]) একটি উপাদান ( ValueError: slice step cannot be zero) সহ অ্যারেগুলির জন্য কাজ করে না । একটি সম্ভাব্য স্থিরতা lambda s:sorted(s*2)[::len(s*2)-1](34 বাইট) হবে।
জনলেট

8

ব্রেন-ফ্লাক 220 218 বাইট

(({}))([]){({}[()]<(([])<{({}[()]<([([({}<(({})<>)<>>)<><({}<>)>]{}<(())>)](<>)){({}())<>}{}({}<><{}{}>){{}<>(<({}<({}<>)<>>)<>({}<>)>)}{}({}<>)<>>)}{}<>{}>[()]){({}[()]<({}<>)<>>)}{}<>>)}{}({}<((())){{}{}([][()])}{}>)

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

ব্যাখ্যা

প্রথমে এটি শীর্ষ মানের দ্বিগুণ হয় (তালিকায় কেবলমাত্র একটি দীর্ঘ)

(({}))

তারপরে এটি আমার বুদ্বুদ সাজানোর অ্যালগরিদম ব্যবহার করে:

([]){({}[()]<(([])<{({}[()]<([([({}<(({})<>)<>>)<><({}<>)>]{}<(())>)](<>)){({}())<>}{}({}<><{}{}>){{}<>(<({}<({}<>)<>>)<>({}<>)>)}{}({}<>)<>>)}{}<>{}>[()]){({}[()]<({}<>)<>>)}{}<>>)}{}

তারপরে এটি স্ট্যাকের শীর্ষ মানটি তুলবে (অর্থাত্ মিনিট)

({}<...>)

তারপরে এটি স্ট্যাকের উচ্চতা এক হওয়া পর্যন্ত পপ হবে:

((())){{}{}([][()])}{}

8

জাভাস্ক্রিপ্ট (ES6), 34 বাইট

a=>[a.sort((x,y)=>x-y)[0],a.pop()]

sortজায়গায় জায়গায় popসাজান , সুতরাং আমি কেবলমাত্র [0] সূচকটি নিম্নতম মান এবং অ্যারের থেকে সর্বোচ্চ মানের জন্য উল্লেখ করতে পারি , তবে এটি ডিফল্ট অনুসারে একটি স্ট্রিং সাজায় তাই আমাকে তুলনামূলক পাস করতে হবে।


বিল্টিন হিসাবে ডিফল্ট অ্যালগরিদম গণনা (x,y)=>x-yনা করে আপনার অংশটি প্রয়োজন বলে আমি মনে করি না sort()
স্কট

1
@ স্কট তবে আমি কোনও লেজিকাল সাজ চাই না ...
নীল

ঠিক আছে ... আমি এটি সংখ্যা> 10 বা <0. দিয়ে পরীক্ষা করিনি তবে আমি জানতাম না sort()অভ্যন্তরীণভাবে সমস্ত কিছুকে স্ট্রিং হিসাবে ব্যবহার করে - দুঃখিত!
স্কট



5

এআরএম মেশিন কোড, 26 বাইট

হেক্স ডাম্প (ছোট এন্ডিয়ান):

6810 4601 f852 cb04 4560 bfc8 4660 4561 bfb8 4661 3b01 d8f5 4770

এটি কোনও ফাংশন, কোনও সিস্টেম কল বা লাইব্রেরি নির্ভরতা না করে। এনকোডিংটি থাম্ব -২, 32-বিট এআরএমের জন্য একটি ভেরিয়েবল (2 বা 4 বাইট) এনকোডিং। যেহেতু কেউ কল্পনা করতে পারেন, এখানে প্রথম এবং শেষ উপাদানগুলি বাছাই এবং বেছে নেওয়ার সহজ উপায় নেই। সামগ্রিকভাবে এখানে অভিনব ঘটনাটি ঘটছে না, এটি রেফারেন্স বাস্তবায়নের মতো কমবেশি একই রকম same

অবহেলিত সমাবেশ (জিএনইউ সিনট্যাক্স):

.syntax unified
.text
.global minmax
.thumb_func
minmax:
    @Input: @r0 and r1 are dummy parameters (they don't do anything)
    @r2 - Pointer to list of integers (int*)
    @r3 - Number of integers to sort (size_t)
    @Output:
    @Minimum of the list in r0 (int)
    @Maximum in r1 (int)
    ldr r0,[r2] @min=r2[0]
    mov r1,r0 @max=min
    loop:
        @ip is intra-procedure call register, a.k.a. r12
        ldr ip,[r2],#4 @ip=*r2++
        cmp r0,ip
        it gt @if (r0>ip)
        movgt r0,ip @r0=ip
        cmp r1,ip
        it lt @if (r1<ip)
        movlt r1,ip @r1=ip
        subs r3,r3,#1
        bhi loop @while (--r3>0)
    bx lr @Return

রাস্পবেরি পাই 3 তে পরীক্ষিত; টেস্টিং স্ক্রিপ্টটি এখানে রয়েছে (সি 99, আরজিভির মাধ্যমে ইনপুট):

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
//First 2 arguments are dummies.
uint64_t minmax(int,int,int* array,size_t size);

int main(int argc,char** argv) {
    int i;
    int array[argc-1];
    for (i=1;i<argc;i++) {
        array[i-1]=atoi(argv[i]);
    }
    uint64_t result = minmax(0,0,array,argc-1);
    printf("Minimum is %d, maximum is %d.\n",(unsigned)result,(unsigned)(result>>32));
}

4

হাস্কেল, 27 বাইট

f x=(`foldl1`x)<$>[min,max]

হাস্কেলে, minএবং maxকোনও তালিকা নয়, সর্বনিম্ন এবং সর্বাধিক দুটি আর্গুমেন্ট দিন। এটি অস্বীকার করা হয়েছে কিনা তা আমি বলতে পারিনি (কেবল এটির পরিবর্তে minimumএবং এটি অস্বীকার করা হবে বলে মনে হয় maximum) সুতরাং দয়া করে আমাকে তারা জানান কিনা এবং আমি এই উত্তরটি তাত্ক্ষণিকভাবে মুছে ফেলব।


@ নিমিমি এফজিআইটিডাব্লু ইফেক্ট, দুঃখের সাথে ...
থ্রিএফএক্স

3

অক্টাভা, 20 বাইট

@(n)sort(n)([1,end])

এটি ইনপুট ভেক্টরকে বাছাই করে এবং প্রথম এবং শেষ মানটি আউটপুট করে।






3

সি, 83 81 79 বাইট

m,M;f(a,s)int*a;{for(m=M=*a;s--;++a)*a<m?m=*a:*a>M?M=*a:0;pr‌​intf("%i %i",m,M);}

1
ঘোষণা মধ্যে চালু করতে পারেন ...f(a,s)int*a{...প্রতি এই
বিড়াল

1
আপনি আরও 2 বাইট m,M;f(a,s)int*a;{for(m=M=*a;s--;++a)*a<m?m=*a:*a>M?M=*a:0;printf("%i %i",m,M);}
ছাড়ার জন্য ত্রৈমাসিক ভাবগুলি

ইন gccআপনি প্রতিস্থাপন করতে পারেন *a>M?M=*a:0সঙ্গে*a<M?:M=*a
ceilingcat


2

ভি , 12 বাইট

:sor
ò2Gjkd

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

এর জন্য কৃতিত্ব ডিজেএমসিএমহেমকে।


1
\o/হ্যাঁ, আমি এই ভাষাটি ব্যবহার করার মতো একমাত্র ব্যক্তি আর নেই!
জেমস

1
যদি ইনপুটটি কোনও একক সংখ্যা হয় তবে সেই সংখ্যাটি এখনও দু'বার আউটপুট হতে হবে
লুইস মেন্ডো

@ লুইস মেন্ডো এইচএম, এটিতে কাজ করবে।
Rɪᴋᴇʀ

2

সিজোম, 10 9 বাইট

q~$_(p;W>

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

আমি সিজেমে আসলেই ভাল নই।

q~          e# eval input
  $         e# sort
   _        e# duplicate
    (       e# pop first
     p      e# print
      ;     e# remove array
       W>   e# get last element

তালিকার প্রথম উপাদানটি পাওয়ার স্বাভাবিক উপায় হ'ল 0=(তবে দুর্ভাগ্যক্রমে এটি কোনও বাইট সংরক্ষণ করে না)। অন্য দুটি 9 বাইট সমাধান: 0W]q~$f=pবা নামবিহীন ব্লক {$2*_,(%}
মার্টিন ইন্ডার

8 বাইট: q~$(p)p;। আপনি প্রথমটি পেতে )আপনার মতো সর্বশেষ উপাদানটি (পেতে ব্যবহার করতে পারেন।
বিড়াল বিড়াল

@ বিজনেসগেট এটি আমার কাছে প্রথমটি ছিল তবে এটি একক-উপাদান ইনপুট জন্য ব্যর্থ।
পুর্কাকুডারী

@ পিটু ১৯৯৮: ওহ, আপনি ঠিক বলেছেন। আমি তা খেয়াল করিনি।
বিড়াল বিড়াল


2

পিএইচপি, 44 বাইট

function a($a){sort($a);echo $a[0].end($a);}

2

প্রসেসিং, 59 52 বাইট

void m(int[]x){x=sort(x);print(x[0],x[x.length-1]);}

প্রসেসিংটি আসলে স্টিডিনের কাছ থেকে আমাকে খুঁজে পেতে দেয় না যে আমি খুঁজে পেতে পেরেছি, এবং আমি জানি না যে এর অভ্যন্তরীণ জাভা সংকলক লাম্বডাসকে সমর্থন করে (এবং এটি এত দীর্ঘ হয়েছে যেহেতু আমি গুরুতর জাভা লিখতে পেরেছিলাম যা আমি করি না মনে নেই কীভাবে)।


আপনি পরে স্পেসগুলি সরিয়ে বাইটস সংরক্ষণ করতে পারেনint[]
ক্রিটসি লিথোস


1

সি #, 60 বাইট

n=>{System.Array.Sort(n);return new[]{n[0],n[n.Length-1]};};

93 বাইটে একটি নির্বোধ পদ্ধতি:

n=>{var r=new[]{n[0],n[0]};foreach(int i in n){if(i<r[0])r[0]=i;if(i>r[1])r[1]=i;}return r;};


1

অক্টাভা , 35 বাইট

@(x)[x(all(t=x<=x')) x(sum(t)==1)]

এটি একটি anoynymous ফাংশন। এটি আদর্শে চেষ্টা করুন

কোড বাছাই ব্যবহার এড়ানো হয়। যথা, এটি সমস্ত জোড়ায় ইনপুট উপাদানগুলির মধ্যে "কম বা সমান" তুলনা করে। সর্বনিম্ন হ'ল উপাদান যা জন্য সমস্ত তুলনা সত্য। সর্বাধিক হ'ল যার জন্য কেবল একটি তুলনা সত্য।


1

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

lambda s:sorted(s+s[:1])[::len(s)]

বিকল্প সংস্করণ:

lambda s:sorted(s+s)[::len(s)*2-1]

পুরানো সংস্করণ, 35 বাইট।

lambda s:sorted(s+[s[0]])[::len(s)]

মোটামুটি সহজ: ইনপুট তালিকাটি নিন, প্রথম উপাদানটি সংযোজন করুন, এটি সাজান, তারপরে ফলাফলের তালিকার প্রথম এবং (দৈর্ঘ্য) তম উপাদানটি নিন। যেহেতু কোনও উপাদান যুক্ত করার পরে ইনপুটটির দৈর্ঘ্য +1 হয়, এটি সর্বনিম্ন এবং সর্বাধিক উপাদান হিসাবে তালিকাভুক্ত তালিকার প্রথম এবং শেষ উপাদান গ্রহণ করে।


1
পাইথনের সংক্ষিপ্ত উত্তর না হলেও এটি অত্যন্ত সৃজনশীল! +1
mbomb007

পাইথন 3-এ 34-বাইট এক কাজ করে না; এটি 2 এবং 3 উভয় ক্ষেত্রেই কাজ করে Also এছাড়াও, এটি এটির পরে পোস্ট করা হয়েছিল।
TLW

@ mbomb007 - সূক্ষ্ম, গল্ফড এটি এখন সংক্ষিপ্ততম পাইথন বাস্তবায়নের জন্য আবদ্ধ এবং বোনাস হিসাবে এটি 2 এবং 3 উভয় ক্ষেত্রেই কাজ করে
TLW

1

zsh, 22 বাইট

(){echo $1 $_} ${(n)@}

একটি ল্যাম্বডা ফাংশন সংজ্ঞায়িত করে যা এর প্রথম আরগ ( $1) এবং পূর্ববর্তী কমান্ড ( $_) এর সর্বশেষ যুক্তি মুদ্রণ করে এবং এটি পাস করে$@ বাছাই করার পরে করে যাতে পূর্ববর্তী কমান্ডটি সেই ল্যাম্বদার আবেদনে পরিণত হয়


zsh, 21 বাইট

এটি কেবলমাত্র কাজ করে যদি 1 টির বেশি যুক্তি থাকে :(

<<<"${${(n)@}/ * / }"

বাছাই করে $@, এটিকে একটি স্ট্রিং তৈরি করে এবং প্রথম স্থান থেকে শেষের সব কিছুকে একটি একক স্পেসের সাথে প্রতিস্থাপন করে, তারপরে এটি বিড়ালের সাথে ইনপুট হিসাবে পাস করে<<<


ব্যবহার:

$ ./minmax 23 342 21 10
10 342

1

স্কালা, 55 বাইট

val s=args.map(_.toInt).sorted
print(s.head+" "+s.last)

চালানো:

$ scala minmax.scala 1 2 3 4 5 6 7 8 9


1

বাশ + কোর্টিলস, 30 বাইট

tr \  \\n|sort -n|sed '$p;1!d'

সিড স্ক্রিপ্ট প্রিন্ট করে, ইনপুটটি সাজানোর পরে, প্রথম এবং শেষের পূর্ণসংখ্যাগুলি।


1

ডিসি, 110 বাইট

?ddsMsmzdsAsa[z1-:az0<S]dsSx[>R]s?[la;asM]sR[lM]sQ[lQxla1-dsa;al?xla0<N]dsNxlAsa[<R]s?[la;asm]sR[lm]sQlNxlmlMf

আমাকে সাহায্য করুন, এর dc! আপনি আমার একমাত্র আশা!

সেই বাগটি খুঁজে পাওয়ার জন্য @ সেশৌমারাকে ধন্যবাদ!

আমি পরে একটি ব্যাখ্যা যোগ করব। এখানে এটি কিছুটা ভেঙে গেছে:

?dd sM sm
zd sA sa
[z 1- :a z0<S]dsSx
 [>R]s?
 [la;asM]sR
 [lM]sQ
[lQx la 1- dsa ;a l?x la0<N]dsNx
lA sa
 [<R]s?
 [la;a sm]sR
 [lm]sQ
lNx
lm lM f

আমি কীভাবে এটি প্রার্থনা করব তা আমি রেকর্ড করি নি এবং এখন আমার মনে নেই আমি এখন যা-ই করছি, আমি এটি ভুল করছি, কারণ এটি সর্বদা ক্ষুদ্রতম উপাদান হিসাবে ফিরে আসে।
জো

1
Pfew! এটি এতে অভিনয় করে কিছুটা সময় নিয়েছিল তবে আপনার কোডটিতে বাগটি খুঁজে পেয়েছে। এটি প্রথম অক্ষর (0) যা আপনি নকল করে এবং নিবন্ধগুলি আরম্ভ করেন Mএবং m। তবে যদি ইনপুট তালিকায় কোনও সংখ্যা এর চেয়ে ছোট না হয় m=0, বা কোনও সংখ্যা এর চেয়ে বেশি না হয় M=0তবে আপনি একটি ভুল ফল পাবেন কারণ আপনি কৃত্রিমভাবে নমুনা সংখ্যায় 0 যুক্ত করেছেন। সমাধানটি সেই প্রথম 0 এর সাথে প্রতিস্থাপন করা হয় ?d, যা সংখ্যাগুলি পড়ে এবং আরম্ভ করে Mএবং mশেষ সংখ্যাটি দিয়ে, যাতে এটি নমুনার একটি অংশ করে। তারপরে কোডটি চালান: প্রতিধ্বনি "8 8 5" | ডিসি-ই "? ডিডিএসএমএস ...."।
সেশোমারা

বাহ, ধন্যবাদ, @ সশৌমারা! আমি কখনই তা খেয়াল করতাম না! (আমি এই প্রশ্নটিও ভুলে গেছি, পি: পি)
জো

1

জাভা, 115 বাইট

String f(int[]i){int t=i[0],a=t,b=t;for(int c=0;c<i.length;c++){a=i[c]<a?i[c]:a;b=i[c]>b?i[c]:b;}return""+a+" "+b;}

Ungolfed:

String f(int[] i) {
    int t=i[0], a=t, b=t; // assigns a and b to i[0]
    for (int c=0; c < i.length; c++) { // loop through the array
        a=(i[c]<a) ? i[c] : a;
        b=(i[c]>b) ? i[c] : b; // assignment with ternary operator
    }
    return ""+a+" "+b; // returns a string
}

আমার প্রথম কোড "গল্ফ" সমাধান।

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