আকাশে তাকান! এটি একটি সুপার ডুপার অ্যারে!


39

কোড রিভিউতে আমাদের প্রতিদ্বন্দ্বী বন্ধুদের কাছ থেকে এই প্রশ্নের দ্বারা অনুপ্রাণিত ।

সংজ্ঞা

একটি সুপার অ্যারে এমন একটি অ্যারে যেখানে অ্যারের প্রতিটি নতুন উপাদান পূর্ববর্তী সমস্ত উপাদানের যোগফলের চেয়ে বড়। {2, 3, 6, 13}একটি সুপার অ্যারে কারণ

3 > 2
6 > 3 + 2 (5)
13 > 6 + 3 + 2 (11)

{2, 3, 5, 11}হয় না একটি সুপার অ্যারে, কারণ

3 > 2
5 == 3 + 2
11 > 5 + 3 + 2

একটি ডুপার অ্যারে এমন একটি অ্যারে যেখানে অ্যারেতে প্রতিটি নতুন উপাদান পূর্ববর্তী সমস্ত উপাদানগুলির চেয়ে বড়। {2, 3, 7, 43, 1856}একটি সুপার অ্যারে, তবে এটি পরেও একটি ডুপার অ্যারে

3 > 2
7 > 3 * 2 (6)
43 > 7 * 3 * 2 (42)
1856 > 43 * 7 * 3 * 2 (1806)

চ্যালেঞ্জ

এমন একটি ফাংশন বা প্রোগ্রাম লিখুন যা আপনার ভাষার নেটিভ তালিকার বিন্যাসে কোনও অ্যারে ইনপুট হিসাবে নেয় এবং অ্যারেটি কতটা দুর্দান্ত তা নির্ধারণ করে। আপনি বিকল্পভাবে একটি অ্যারে দৈর্ঘ্যের ইনপুটও নিতে পারেন (সি / সি ++ এর মতো ভাষার জন্য)। এছাড়াও, আপনি অনুমান করতে পারেন যদি একটি যে তালিকায় সংখ্যার সব পূর্ণসংখ্যার 0. তার চেয়ে অনেক বেশী হতে হবে সুপার এরে, আপনি প্রিন্ট আবশ্যক It's a super array!যদি একটি হয় সুপার duper এরে, আপনি প্রিন্ট আবশ্যক It's a super duper array!এটা একটি অ্যারের duper- হতে জন্যও সম্ভব অ সুপার। উদাহরণস্বরূপ {1, 2, 3}, এই ক্ষেত্রে আপনার মুদ্রণ করা উচিত It's a duper array!যদি অ্যারে সুপার বা ডুপার না হয় তবে আপনি একটি মিথ্যা মান মুদ্রণ করতে পারেন।

যথারীতি, এটি কোড গল্ফ, সুতরাং মানক লুফোলগুলি প্রয়োগ হয় এবং বাইটের মধ্যে সংক্ষিপ্ত উত্তর w


9
আমি চটজলদি I / O ফর্ম্যাটটি পছন্দ করি না তবে এখন পরিবর্তন হতে দেরি হতে পারে।
lirtosiast

1
আমি নিশ্চিত আপনি {1, 2, 3}অ্যারের জন্য "ডুপার-অ-সুপার" বোঝাতে চেয়েছিলেন ?
ড্যারেল হফম্যান

1
@ ডিজেএমসিএমহেম উফ, আমি একরকম আমার মাথায় 2 * 1সমান 3হয়ে গেলাম ।
আলেকজান্ডার রেভো

4
এটি একটি মন্তব্যে উঠে এসেছে : আপনার অনুমান অনুসারে যদি অ্যারে সুপার বা ডুপার না হয় তবে আপনি একটি মিথ্যা মান মুদ্রণ করতে পারেনএর অর্থ কি আমাদের অবশ্যই একটি মিথ্যা মান মুদ্রণ করতে হবে ?
ডেনিস

1
কোথাও একটি শব্দের মধ্যে 2 স্পেস আছে তা কি ব্যাপার? super[space][space]arrayঅনুমতি পেলে আমি আরও বেশি সঞ্চয় করতে পারতাম ।
শে

উত্তর:


20

জেলি , 47 45 4̷4̷ 42 বাইট

+\,×\<ḊZṖP“sd”x;€“uper ”;/“It's a ”,“¥ṫɲ»j

এটি সুপার বা ডুপার নয় এমন অ্যারেগুলির জন্য একটি খালি স্ট্রিং (মিথ্যা) মুদ্রণ করে। এটি অনলাইন চেষ্টা করুন!

কিভাবে এটা কাজ করে

+\,×\<ḊZṖP“sd”x;€“uper ”  Main link (first half). Argument: A (array)

+\                        Compute all partial sums of A.

   ×\                     Compute all partial products of A.
  ,                       Pair the results to the left and to the right.
     <Ḋ                   Perform vectorized comparison with A[1:].
                          This yields a 2D array of Booleans.
       Z                  Zip; pair the Booleans corresponding to each integer.
        Ṗ                 Remove the last pair.
                          (Nothing is compared with the last sum/product.)
         P                Take the product of each column.
          “sd”x           Perform vectorized character repetition.
                          This yields ['s', d'], ['s'], ['d'], or [].
               ;€“uper ”  Append the string "uper " to each character.


;/“It's a ”,“¥ṫɲ»j        Main link (second half).

;/                        Reduce the resulting array of strings by concatenation.
                          This will fail for an empty array, exiting immediately.
  “It's a ”,“¥ṫɲ»         Push ['It's a ', 'array!'].
                 j        Join that array, separating by the super duper string.

1
যথারীতি দুর্দান্তভাবে, ডেনিস :) কিছুক্ষণের জন্য চলে গেলেন, জেলি ডকস পড়ার সময়;)
কেড

জেলিতে স্ট্রিং কম্প্রেশন কীভাবে কাজ করে এমন কোনও ডকুমেন্টেশন আছে?
লুইস মেন্ডো

@ LuisMendo এখনই না Not সেখানে বর্তমান সংক্ষেপণ পদ্ধতিটি পরীক্ষামূলক এবং আমি শীঘ্রই এটি পরিবর্তন করব। একটি দ্রুত ওভারভিউ: কোড পৃষ্ঠায় সূচকগুলি ব্যবহার করে , সংক্ষেপিত স্ট্রিংটি বাইজেক্টিক বেস 250 থেকে পূর্ণসংখ্যায় রূপান্তরিত হয়। প্রতিটি পদক্ষেপ হয় মুদ্রণযোগ্য ASCII অক্ষর বা অভিধানের একটি শব্দে ডিকোড হয়, পরিবর্তিত কেস এবং / অথবা এর আগে কোনও স্থান দিয়ে সম্ভব।
ডেনিস

9

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

@ETH প্রোডাকশনগুলিতে একটি বাইট ধন্যবাদ সংরক্ষণ করা হয়েছে !

a=>a.map((n,i)=>i&&(s=s&&n>s&&s+n,d*=d&&n>d&&n),s=d=a[0])|s|d&&`It's a ${s?"super ":""}${d?"duper ":""}array!`

ব্যাখ্যা

সংখ্যার একটি অ্যারে নেয়, একটি স্ট্রিং বা মিথ্যাটির জন্য নম্বর দেয় 0

a=>
  a.map((n,i)=>      // for each number n at index i
    i&&(             // skip the first number (because s and d are initialised to it)
      s=s&&n>s&&s+n, // if it is still super and n > s, s += n, else s = false
      d*=d&&n>d&&n   // if it is still duper and n > d, d *= n, else d = false
    ),
    s=               // s = sum of previous numbers if super, else false
    d=               // d = product of previous numbers if duper, else false
      a[0]           // initialise s and d to the first number
  )
  |s|d               // if it is neither super or duper, output 0

  // Output the appropriate string
  &&`It's a ${s?"super ":""}${d?"duper ":""}array!`

পরীক্ষা


এটি করার একটি চতুর উপায়! আমি মনে করি আপনি দুটি বাইট সংরক্ষণ করতে পারবেনs+=s&&n>s&&n,d*=d&&n>d&&n
ETH প্রপুটেশন

@ETHproductions sচাহিদা এই ভাবে কাজ করতে হবে কারণ এটি সেট করতে হবে falseযদি n>s, কিন্তু d*falseএকই প্রভাব যাতে এক কাজ হয়েছে। ধন্যবাদ!
ব্যবহারকারী81655

5

জাভা, 183 182 বাইট

String w(int[]a){boolean s=1<2,d=s;int m=a[0],p=m,k=a.length,i=0,e;if(k>0)for(;++i<k;s&=e>m,d&=e>p,m+=e,p*=e)e=a[i];return d|s?"It's a "+(s?"super ":"")+(d?"duper ":"")+"array!":"";}

আমি নিম্নলিখিত অনুমানগুলি করেছি:

  • ফলাফলটি রিটার্ন মান দ্বারা হয়।
  • খালি স্ট্রিং ""একটি মিথ্যা মান।

এর মধ্যে যদি কোনওটি ভুল হয় তবে দয়া করে আমাকে বলুন।

যাইহোক, আমি এই অনুভূতিটি কাঁপতে পারি না যে ভেরিয়েবলের পরিমাণ নিয়ে আমি ওভারবোর্ডে গিয়েছি।

সম্পাদনা করুন: @ অপরিবর্তিতফুনশনে ধন্যবাদ, একটি বাইট সংরক্ষণ করতে পরিচালিত


1
এটা কি পরিবর্তন করা সম্ভব boolean s=trueহবে boolean s=1<2?
21:51

@ সংজ্ঞায়িত ফাংশন হ্যাঁ, ভাল ক্যাচ
ইসিএস

4

এমএটিএল , 66 বাইট

Ys5L)G6L)XK<?' super']GYp5L)K<?' duper']N?N$h'It''s a'wh' array!'h

বর্তমান প্রকাশ (10.0.3) ব্যবহার করে , যা এই চ্যালেঞ্জের চেয়ে আগের।

ইনপুট স্টিডিনের। সুপার বা ডুপার না হলে আউটপুট খালি (যা মিথ্যা)।

সম্পাদনা (এপ্রিল 7, 2016) : ভাষার প্রকাশের 16.0.0 পরিবর্তনের কারণে, 5Lএবং 6Lপ্রতিস্থাপন 3Lএবং প্রতিস্থাপন করা 4Lদরকার। অনলাইন সংকলকটির লিঙ্কটিতে সেই পরিবর্তনগুলি অন্তর্ভুক্ত রয়েছে।

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

ব্যাখ্যা

Ys             % implicit input. Cumulative sum
5L)            % remove last element
G6L)           % push input. Remove first element
XK             % copy to clipboard K
<?             % if all elements are smaller
  ' super'     % push string
]              % end
GYp            % push input. Cumulative product
5L)            % remove last element
K              % push input except first element
<?             % if all elements are smaller
  ' duper'     % push string
]              % end
N?             % if stack not empty
  N$h          % concatenate all elements (will be one or two strings)
  'It''s a'    % string
  wh           % prepend
  ' array!'    % string
  h            % concatenate. Implicit end. Implicit display

3

সি ++ 14, 178, ..., 161 157 বাইট

এটিকে আরও খাটো করার কোনও উপায় সম্পর্কে ভাবা যায় না। দেখে মনে হচ্ছে উন্নতির জন্য সর্বদা কিছু জায়গা রয়েছে!

আপডেট 1 : আমি নিরাপদ কোডের জন্য সবই, তবে একটি কাঁচা অ্যারে এবং এর আকারটি ফাংশন আর্গুমেন্ট হিসাবে গ্রহণ করা ভেক্টর নেওয়ার চেয়ে 9 বাইট কম ছোট :(

আপডেট 2: এখন 8 বাইটের ব্যয়ে খালি স্ট্রিংটিকে ভুয়া-মান হিসাবে প্রদান করে।

আপডেট 3: 165 বাইটে ফিরে আসুন, কমপুশিপের মন্তব্যে ধন্যবাদ।

আপডেট 4: কমপ্যাকশিপের আরও একটি মন্তব্য, আরও 4 বাইট বন্ধ।

5 আপডেট করুন: কমপ্যাকশিপের অন্য পরামর্শের autoপরিবর্তে ব্যবহার stringকরে কোডটি ছাড়িয়ে আরও 4 বাইট শেভ করে।

auto f(int*a,int n){int s,p,d=1,e=1,r;for(s=p=*a;--n;s+=r,p*=r)r=*++a,e=r>s?e:0,d=r>p?d:0;return e|d?"It's a "s+(e?"super ":"")+(d?"duper ":"")+"array!":"";}

পরীক্ষার কেস সহ অসম্পূর্ণ পুরো প্রোগ্রাম:

#include <iostream>
#include <string>
#include <vector>

using namespace std::literals::string_literals;

auto f(int* a, int n)
{
    int s,p,d=1,e=1,r;

    for(s=p=*a; --n; s+=r, p*=r)
        r=*++a, e=r>s?e:0, d=r>p?d:0;

    return e|d ? "It's a "s + (e?"super ":"") + (d?"duper ":"") + "array!" : "";
}

int main()
{
    std::vector<std::vector<int>> test_cases = {{2,3,6,13},
                                                {2,3,5,11},
                                                {2,3,7,43,1856},
                                                {1,2,3}
                                               };

    for(auto& test_case : test_cases)
    {
        std::cout << f(test_case.data(), test_case.size()) << '\n';
    }
}

আউটপুট:

It's a super array!

It's a super duper array!
It's a duper array!

2
মেটা সম্পর্কিত আমাদের সংজ্ঞা অনুসারে স্ট্রিংটি It's a array!সত্যবাদী ( প্রমাণ ) ।
ডেনিস

@ ডেনিস আসলে এটি একটি সংকলন ত্রুটি (আমি একটি সি ++ 14 স্ট্যান্ড :: স্ট্রিং আক্ষরিক ব্যবহার করছি, কাঁচা চরিত্রের অ্যারে নয়) যা কোনওটি নয়। যাইহোক, আমি এখনই একটি খালি স্ট্রিং মুদ্রণের জন্য আমার উত্তর আপডেট করছি, কারণ এটি অন্যান্য সমাধানগুলিতে ব্যবহৃত হয়।
আলেকজান্ডার রেভো

1
দৈর্ঘ্যের if ... >= তুলনাটি হারাতে পারলে আপনি আরও কয়েকটি বাইট শেভ করতে পারেন : আমি মনে করি e=r>s?e:0এর সমতুল্য if(r<=s)e=0
কম্পিউশিপ

1
@ আলেকজান্ডাররেভো for(s=p=*a;--n;s+=r,p*=r)r=*++aকাজের মতো কিছু করে না ? আপনাকে iপুরোপুরি ড্রপ করার অনুমতি দেবে
CompuChip

1
আপনি কি একটি বৃদ্ধি এড়াতে পারবেন না? ইনিশিয়ালাইজারটিতে যে অপ্রয়োজনীয় মনে হচ্ছে? বা এটি আপনাকে একটি লুপ পুনরাবৃত্তিটি অনেক বেশি দেয়?
কমস্কিপ

2

সি, 150 বাইট

#define M(N,O)N(int*d,int c){return*d?*d>c?N(d+1,c O*d):0:1;}
M(S,+)M(D,*)Z(int*d){printf("It's a %s%s array!\n",S(d,0)?"super":"",D(d,0)?"duper":"");}

প্রতিটি ইনপুট a দ্বারা সমাপ্ত হয় 0। পরীক্ষার মূল:

#include <stdio.h>

int main() {
  int test_data[4][6] = {
    {2, 3, 7, 43, 1856, 0}, // superduper
    {2, 3, 5, 11, 0}, // not super
    {2, 3, 6, 13, 0}, // super
    {1, 2, 3, 0} // duper not super
  };

  for (int i = 0; i < 4; ++i) {
    Z(test_data[i]);
  }
}

বোনাস যদি আমাদের আরও কমপ্যাক্ট আউটপুট বিন্যাসের অনুমতি দেওয়া হয় তবে আমরা এটিকে 107 বাইটে কাটাতে পারি :

#define M(N,O)N(int*d,int c){return*d?*d>c?N(d+1,c O*d):0:1;}
M(S,+)M(D,*)Z(int*d){return S(d,0)*2^D(d,0);}

এই ক্ষেত্রে, Zরিটার্ন 3superduper জন্য, 2সুপার জন্য, 1duper এবং 0কেউ জন্য।


1

পাইথ - 54 52 বাইট

স্ট্রিং ফর্ম্যাটিং অংশটি সম্ভবত গল্ফ করা যেতে পারে তবে আমি সুপার-ডুপার পরীক্ষার পদ্ধতির পছন্দ করি।

jd++"It's a"fT*V+R"uper""sd"m*F>VtQd,sMK._Q*MK"array

টেস্ট স্যুট


1
c2"superduper"গল্ফ করা যায়+R"uper""sd"
isaacg

@ আইস্যাক যা সত্যিই স্মার্ট
মালটিসেন

3
আপনি
বিস্মৃত

4
@TrangOul lang-pythঅস্তিত্ব নেই।
ডেনিস

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

1

পাইথন 3, 127

FryAmTheEggman ধন্যবাদ 5 বাইট সংরক্ষণ করা।

মোটামুটি প্রাথমিক সমাধান এখনই, খুব অভিনব কিছু নয়। মোট চলমান মোট যোগফল এবং পণ্য চালনা এবং প্রতিটি উপাদান পরীক্ষা করুন।

def f(a):
 s=p=a[0];e=d=1
 for x in a[1:]:e&=x>s;d&=x>p;s+=x;p*=x
 return"It's a %s array!"%('super'*e+' '*e*d+'duper'*d)*(e|d)

এখানে অন্য কেউ যদি আমার স্কোরকে হারাতে চেষ্টা করতে চায় তবে পরীক্ষার কেসগুলি এখানে।

assert f([2, 3, 6, 13]) == "It's a super array!"
assert f([2, 3, 5, 11]) == ''
assert f([2, 3, 7, 43, 1856]) == "It's a super duper array!"
assert f([1, 2, 3]) == "It's a duper array!"
print('All passed')

1

এডাব্লুকে - 140 বাইট

awk 'BEGIN{d[1]=" super";e[1]=" duper";RS=" ";p=1;a=1;b=1}{a=a&&$1>s;b=b&&$1>p;s+=$1;p*=$1}END{printf "It'\''s a%s%s array!\n",d[a],e[b]}'

যারা AWK জানেন না তাদের জন্য, রেকর্ডগুলি ভেরিয়েবলের ভিত্তিতে লাইনগুলিতে স্বয়ংক্রিয়ভাবে পার্স হয় RSএবং লাইনগুলি স্বয়ংক্রিয়ভাবে ভেরিয়েবলের ভিত্তিতে ক্ষেত্রগুলিতে পার্স হয় FS। এছাড়াও স্বাক্ষরযুক্ত ভেরিয়েবলগুলি "" যা একটি # টির মতো 0 টির মতো যুক্ত করা হয় যখন BEGINকোনও রেকর্ড / ক্ষেত্রগুলি বিশ্লেষণ করার আগে বিভাগটি ঠিক একবার বলা হয়। প্রতিটি ভাষা রেকর্ডে প্রতিটি ম্যাচিং কোড ব্লক প্রয়োগ হওয়ার সাথে বাকী ভাষা মোটামুটি সি-এর মতো। আরও তথ্যের জন্য http://www.gnu.org/software/gawk/manual/gawk.html# দেখুন গেটটিং- স্টার্টড।

উদাহরণস্বরূপ রান 'code'উপরোক্ত যেখানে : echo 1 2 6 | 'code'

ফাইলনাম নামের একটি ফাইলে অ্যারে রাখতে পারে এবং এটি চালানো যেতে পারে: 'code' Filename

কোডটি প্রায়শই চালাতে হয় তবে এটি সম্পাদনযোগ্য স্ক্রিপ্ট ফাইলে স্থাপন করা যেতে পারে। এটি এনকোলেসিং সরিয়ে ফেলবে ' 'এবং awkকমান্ডটি ফাইলের শীর্ষে এইভাবে স্থাপন করা হবে:#!/bin/awk -f


আমি এডাব্লুকে জানি না, কেউ কেন এটিকে নিম্নমানের বলে ব্যাখ্যা করতে পারে?
আলেকজান্ডার রেভো

আমি ছিলাম না, তবে আমি কোডটির ব্যাখ্যা চাই। আইডিকে এডাব্লু কে।
mbomb007

এই It's a array!অ্যারেগুলির জন্য প্রিন্টগুলি সুপার বা ডুপার নয়, যা মেটায় আমাদের সংজ্ঞা অনুসারে সত্যবাদী স্ট্রিং ।
ডেনিস

পরীক্ষার চেষ্টা করুন:echo 1 2 6 | <the above code>
রবার্ট বেনসন

2
@ ডেনিস এটি নাইটপিকিংয়ের মতো নয়, তবে চ্যালেঞ্জটি বলেছে "যদি অ্যারে সুপার বা ডুপার না হয় তবে আপনি একটি মিথ্যা মান মুদ্রণ করতে পারেন ।" , অন্য ক্ষেত্রে অবশ্যই পরিবর্তে ব্যবহার করা উচিত । আমি বলব, যতক্ষণ না আউটপুটটি অন্য ক্ষেত্রেগুলি থেকে পরিষ্কারভাবে আলাদা করা যায় এবং সঠিক হয়, ততক্ষণ তা ঠিক হওয়া উচিত। আমি এটিতে ওপি শব্দটি পছন্দ করি।
স্টেফানো সানফিলিপো

1

পিএইচপি, 144 ... 113 112 বাইট

$x=super;$d=duper;foreach($a as$v){$v>$s||$x="";$v>$p||$d="";$s+=$v;$p=$p*$v?:$v;}echo$x.$d?"It.s a $x $d $a!":0;

ব্যাখ্যা:

// Initiate `$s` to prevent isset calls. Leaving this out yields PHP
// notices, but doesn't functionally change the code.
$s = 0;

// Set product to 1, so when multiplying with the first value, `$p` will
// equal `$v`.
$p = 1;

// Not existing constants `super` and `duper` yield PHP notices
// but are interpreted as strings.
$x = super;
$d = duper;

// Iterate over input (register_globals).
foreach ($a as $v) {
    // Check if current value "breaks" [sd]uper-ness: `value` not greater
    // than current sum or product. If so, unset the string.
    $v > $s || $x = "";
    $v > $p || $d = "";

    // Update sum.
    $s += $v;
    // Update product.
    $p *= $v;
}

// Check if super or duper strings are set, if so, wrap output in the
// appropriate string. Otherwise, output falsy value `0`.
echo $x . $d ? "It's a $x $d $a!" : 0;

গ্লোবালগুলি নিবন্ধ ছাড়া এটি (118 বাইট) হবে:

php -r '$x=super;$d=duper;for($p=1;$v=$argv[++$i];$p*=$v){$v>$s||$x="";$v>$p||$d="";$s+=$v;}echo$x.$d?"It.s a $x $d array!":0;' 2 3 7 43 1856 2>/dev/null;echo
  • আউটপুটটিতে অতিরিক্ত স্থান সম্পর্কে যত্ন না নিয়ে আরও 3 বাইট সংরক্ষণ করেছেন
  • মুদ্রণের মাধ্যমে 3 বাইট সংরক্ষণ করা হয়েছে $a(স্ট্রিং রূপান্তর উত্পাদনে অ্যারে Array)
  • $p1 থেকে আরম্ভ করে একটি বাইট সংরক্ষণ করা হয়েছে, তাই পণ্যটির আপিং কম খরচ হয়।

সুন্দর সমাধান। কয়েকটি নোট: আপনি নিজের ইনপুটটি পরিচালনা না করে এটি কোনও সম্পূর্ণ প্রোগ্রাম বা কোনও কার্য নয় $a। আপনাকে বিজ্ঞপ্তি এবং স্টাফ সম্পর্কে চিন্তা করতে হবে না - কেবল এই সাইটে এগুলি উপেক্ষা করুন।
সন্নিবেশকৃত নাম

পরিবর্তে আমি কি এটি $ আরগভি [1] দিয়ে প্রতিস্থাপন করব? পিএইচপি (বা সাধারণভাবে) জন্য গ্রহণযোগ্য ইনপুট সম্পর্কে মেটাতে কোনও পোস্ট আছে কি? এটি আমার প্রথম গল্ফ
21:55

2
@ আরসস আপনি এখানে যান এর রয়েছে পিএইচপি সম্পর্কে এই বিশেষভাবে কিন্তু এটা মনোযোগ অনেক না পেয়েছি । সাধারণভাবে, STDIN এবং কমান্ড-লাইন আর্গুমেন্টগুলি ন্যায্য খেলা game আপনি একটি কার্য হিসাবে আপনার কোড জমা দিতে পারেন।
মার্টিন এেন্ডার

আমি মনে করি সাথে যেতে $argv[1]একটি ভাল বিকল্প। বলা হচ্ছে, এই চ্যালেঞ্জটি এটির মধ্যে এবং আউটপুট ফর্ম্যাটগুলি সম্পর্কে অত্যন্ত অস্পষ্ট। তবে এই পদ্ধতির সাহায্যে আপনাকে অন্যান্য চ্যালেঞ্জের জন্য শাস্তি দেওয়া যেতে পারে। এবং হার্ড কোডিং ইনপুটটি আসলে গ্রহণযোগ্য নয় - যদিও এটির কিছু ব্যতিক্রম রয়েছে। আমি জানি পিএইচপি-তে পড়ার ইনপুটটি খুব ব্যয়বহুল, এ কারণেই আমি এটি সম্পর্কে মেটাতে অনুরূপ প্রশ্ন জিজ্ঞাসা করেছি
সন্নিবেশকৃত নাম

আমার স্ক্রিপ্টটি এতে কাজ করবে register_globalsতবে আমি পরিবর্তে ভবিষ্যতের গল্ফগুলি ফাংশন হিসাবে লিখব। ওহ কেন শর্ট_ক্লোজারগুলি বাতিল করা হয়েছিল ?
13

1

আর , 115 বাইট

function(x)cat("It's a",c("super","duper")[sapply(c(cumsum,cumprod),function(f)all(rev(x[-1]>f(x))[-1]))],"array!")

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

মিথ্যা মান: ফাংশনগুলির তালিকায় It's a array! ব্যবহার sapplyকরা ছাড়া এখানে খুব বেশি অভিনব কিছু নেই ।


0

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

def f(a:Seq[Int])={var q=" super"
var w=" duper"
val x=a.head
a.drop(1).foldLeft((x,x)){case ((s,p),a)=>{if(s>=a)q=""
if(p>=a)w=""
(a+s,a*p)}}
println(s"It's a $q$w array")}

অসম্পূর্ণ (যদিও এটি করার মতো খুব বেশি কাজ এখনও নেই):

def f(input:Seq[Int])={
    var super=" super"
    var duper=" duper"
    val head=input.head
    input.drop(1).foldLeft((head,head)){
        case ((sum,product),val)=>
        {
            if(sum>=val)super=""
            if(product>=val)duper=""
                (val+sum,val*product)
        }
    }
    println(s"It's a $super$duper array")
}

0

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

s o t=snd.foldl(\(s,b)x->(o s x,b&&x>s))(t,1>0)
f x="It's a "++(if s(+)0x then"super "else"")++(if s(*)1x then"duper "else"")++"array!"

fপ্রয়োজনীয় ফাংশন। মনে রাখবেন যে খালি সমষ্টি 0 এবং খালি পণ্যটি 1 যা কেন [0]সুপার বা ডুপার নয়।

sএকটি স্বেচ্ছাসেবক অপারেটর oএবং একটি স্বেচ্ছাসেবক নিরপেক্ষ উপাদান গ্রহণ করে সুপার বা ডুপার পরীক্ষা করার সাধারণ কাঠামোটি ক্যাপচার করে tfoldrTuples ট্র্যাক রাখে (s,b)যেখানে sঅপারেটর সঙ্গে সব দেখা উপাদান chaining ফল oএবং bবলছেন কিনা, এ পর্যন্ত দিকে তাকিয়ে প্রতিটি উপাদান জন্য, এই উপাদান পূর্বে নির্ণিত সমষ্টি / পণ্য চেয়ে বড় ছিল।

আউটপুটটি খুব বেশি গল্ফ হয় না এবং কেউ আরও ভাল ধারণা অবদান রাখলে আমি এটির প্রশংসা করব!

সামান্য আরও পঠনযোগ্য সংস্করণ:

s :: (Integer -> Integer -> Integer) -> Integer -> [Integer] -> Bool
s o t = snd . (foldl (\(s,b) x -> (s `o` x, b && x>s)) (t, True))

f :: [Integer] -> [Char]
f x = "It's a " ++ (if s (+) 0 x then "super " else "")
      ++ (if s (*) 1 x then "duper " else "") ++ "array!"

0

05AB1E , 53 51 বাইট

"It's"'a„dsIη©εRćsO›}Pè.•dwā•UX¦«®εRćsP›}PiX}„¦È!ðý

এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা:

"It's"             # Push string "It's"
'a                 # Push string "a"
„ds                # Push string "ds"
   Iη              # Get the prefixes of the input-list
     ©             # Store it in the register (without popping)
      ε     }      # Map each sub-list to:
       R           #  Reverse the list
        ć          #  Take the head extracted
         sO        #  Swap and take the sum
           ›       #  Check if the head is larger than the sum of the rest
             P     # Then check this is truthy for all sub-lists, resulting in 0 or 1
              è    # And use this to index into the "ds" string
.•dwā•             # Push string "duper"
      U            # Store it in variable `X` (with popping unfortunately)
       X¦          # Push `X` and remove the first character
         «         # Then merge it with the "d" or "s"
®εRćsP›}P          # Do the same as explained above, but with the product instead of sum
         i }       # If this resulted in 1:
          X        #  Push variable `X` ("duper")
„¦È!               # Push string "array!"
ðý                 # Join all strings on the stack by spaces (and output implicitly)

.•dwā•"ডুপার" কীভাবে „¦È!হয় এবং "অ্যারে" কীভাবে হয় তার ব্যাখ্যার জন্য এখানে দেখুন ।


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