ক্রমবর্ধমান, হ্রাস, কিছুই না সব?


9

দুটি ইনপুট, একটি খালি ভেক্টর / তালিকা ডিজিটের ধারণকারী নিন 1এবং 2এবং একটি স্ট্রিং (কোন, তাই না লাগতে পারে 0/1পরিবর্তে)। স্ট্রিং নিম্নলিখিতগুলির মধ্যে একটি হবে (ছোট হাতের অক্ষরে, ঠিক নীচে লেখা:

increasing
decreasing
ones
twos
all
none

যদি স্ট্রিংটি ____ হয় তবে আপনি সূচকগুলি ফিরিয়ে আনবেন ___:

  • increasing... যেখানে তালিকাটি পরিবর্তিত 1হয় 2( 2এগুলির পরে সরাসরি অনুসরণ করা প্রতিটি 1)
  • decreasing... যেখানে তালিকাটি পরিবর্তিত 2হয় 1( 1এগুলির পরে সরাসরি অনুসরণ করা প্রতিটি 2)
  • ones ... সমস্ত অঙ্কের 1
  • twos ... সমস্ত অঙ্কের 2
  • all ... সব অঙ্ক
  • none... অঙ্কের কিছুই নয়। 0তালিকাটি যদি 1-সূচকযুক্ত হয় তবে তা ঠিক আছে। তালিকাটি 0-সূচকযুক্ত হলে একটি নেতিবাচক সংখ্যা জরিমানা। আপনি খালি তালিকা বা স্ট্রিং আউটপুটও করতে পারেন।

পরীক্ষার কেস:

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

--------------------------------
Vector:
1 1 2 2 2 1 2 2 1 1 2

String       - Output
increasing   - 3, 7, 11
decreasing   - 6, 9
ones         - 1, 2, 6, 9, 10 
twos         - 3, 4, 5, 7, 8, 11
all          - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
none         - 0 / []

------------------------------------
Vector:
1

String:
ones         - 1
all          - 1
decreasing / increasing / twos / none  - 0 / []

স্কোরিং

এই যেমন , কমপক্ষে বাইটস সহ উত্তর জিতেছে।

ব্যাখ্যা উত্সাহিত হয়!


@ রবার্তো গ্রাহাম হ্যাঁ
স্টিভি গ্রিফিন

@ কেভিন ক্রুইজসেন আপনি একজন ভাল গেসার :)
স্টিভি গ্রিফিন

এখনও পর্যন্ত উত্তরগুলির কোনও উদাহরণ উদাহরণ হিসাবে দেখানো হয়েছে একটি তালিকা আউটপুট বলে মনে হচ্ছে না। (উদাহরণস্বরূপ, কোনও পেছনের ডিলিমিটার ছাড়াই "," দ্বারা যোগদান করেছেন)। চ্যালেঞ্জের পাঠ্যটি তালিকাটি কতটা নমনীয় হতে পারে তা না বলে, সাধারণত এই জাতীয় চ্যালেঞ্জগুলির জন্য কী গ্রহণ করা হয়?
তাহগ

এটি সাধারণত খুব নমনীয়। যতক্ষণ না এটি সংখ্যার একটি তালিকা আপনি ভাল আছেন।
স্টিভি গ্রিফিন

উত্তর:


7

জাভাস্ক্রিপ্ট (ফায়ারফক্স 30-57), 74 73 বাইট

(a,[s],i=0,p)=>[for(e of a)if({i:e>p,d:e<p,o:e<2,t:e>1,a:1}[p=e,i++,s])i]

এরে comprehensions মিশ্রন একটি ঝরঝরে উপায় mapএবং filterএক বারেই। সম্পাদনা: @ বর্ধিত 1 বাইট ধন্যবাদ @ edc65।


3

পাইথন 2 , 136 131 119 108 97 বাইট

lambda l,m:[j for j,k in enumerate(l)if[1,j*k<j*l[~-j],0,j*k>j*l[~-j],0,k<2,k>1][ord(m[0])/3-32]]

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


ইনপুট সর্বদা যেহেতু 1বা 2, আপনি পরিবর্তন করতে পারেন (l[j]>1)*(l[~-j]<2)করার (l[j]>l[~-j]) জন্য 119 বাইট
TFeld

এছাড়াও, আপনি 0-
সূচিযুক্ত

@ টিফিল্ড ধন্যবাদ; যদিও আমি মনে করি আমি 1অনিচ্ছাকৃত সাথে লেগে থাকব।
জোনাথন ফ্রেচ

108 বাইট , ব্যবহার করেenumerate()
মিস্টার এক্সকোডার

3

পাইথন 2 , 117 111 110 99 97 92 বাইট

lambda l,t:[i for i,v in enumerate(l)if[l[i+i/~i]<v,0,v<2,v>1,1,l[i+i/~i]>v][ord(t[0])/3%7]]

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

0-indexed

জোনাথনের সূচক ব্যবহার করতে স্যুইচ করা হয়েছে এবং এতে গল্ফ ord(m[0])/3-32হয়েছেord(t[0])/3%7


আপনি গল্ফ l[i]==2করতে পারেন l[i]>1
জোনাথন ফ্রেচ


2

এমএটিএল , 32 31 30 29 বাইট

dQ~fQGqfOOGofGd1=fQGfO[]Xhjs)

আউটপুটটি 1-ভিত্তিক, বা খালি।

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

ব্যাখ্যা

কোডটি অ্যারের ইনপুটটির জন্য ছয়টি সম্ভাব্য আউটপুটগুলি গণনা করে এবং তারপরে স্ট্রিং ইনপুটটির উপর নির্ভর করে উপযুক্ত আউটপুট নির্বাচন করে।

আউটপুট নির্বাচন করতে, স্ট্রিং ইনপুটটির সমস্ত অক্ষরের ASCII কোড পয়েন্ট যুক্ত করা হয়। ফলাফলের মডিউল 9 দেয় 6, 1, 5, 2, 7, 0যথাক্রমে জন্য 'increasing', 'decreasing', 'ones', 'twos', 'all', 'none'। যেহেতু ফলাফলের সমস্ত সংখ্যা পৃথক, এটি নির্বাচনের মানদণ্ড হিসাবে ব্যবহার করা যেতে পারে।

প্রকৃতপক্ষে যোগফলের 9 টি অপারেশন করার পরিবর্তে সম্ভাব্য ইনপুটগুলির তালিকা 9 টি এন্ট্রি (যার মধ্যে কিছু ডামি) পর্যন্ত প্রসারিত হয়, এবং সুতরাং সেই তালিকায় সূচীকরণ স্বয়ংক্রিয়ভাবে মডুলো 9 করা হয়।

d     % Implicit input: numeric vector. Push vector of consecutive differences.
      % Contains -1, 0 or 1
Q~    % For each entry: add 1, negate. This turns -1 into 1, other values into 0
f     % Push indices of nonzeros
Q     % Add 1 to each entry (compensates the fact that computing consecutive
      % differences removes one entry). This the output for 'decreasing'
Gq    % Push input again. Subtract 1 from the code points
f     % Push indices of nonzeros. This is the output for 'twos'
OO    % Push two zeros. These are used as placeholders
Go    % Push input and compute parity of each entry
f     % Push indices of nonzeros. This is the output for 'ones'
Gd    % Push input and compute consecutive differences
1=    % Test each entry for equality with 1
f     % Push indices of nonzeros 
Q     % Add 1. This is the output for 'increasing'
Gf    % Push indices for all input (nonzero) entries. This is the output for 'all'
O     % Push zeros. Used as placeholder
[]    % Push empty array. This is the output for 'none'
Xh    % Concatenate stack into a cell array
j     % Input a string
s     % Sum of code points
)     % Use as an index into the cell aray. Implicitly display


1

জেলি , 27 বাইট

>2\0;
NÇ
Ị
=2

ḟ
⁹Ḣ“hɠ»iµĿT

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

-3 জনাথন অ্যালানকে ধন্যবাদ ।


"ডায়োটা" শব্দটি ব্যবহার করে তিনটি বাইট সংরক্ষণ করুন - নোটটি 0টি সঠিক হয়ে উঠছে তা নোট করুন, তবে আপনি আবার পুনরায় অর্ডার করতে পারেন এবং "প্রতিষেধক" বা এই জাতীয় শব্দ ব্যবহার করতে পারেন এবং আপনার পরীক্ষার জোতাটিকে আবার কাজ করতে দিয়েছিলেন।
জোনাথন অ্যালান

@ জোনাথন অ্যালান আমি ভেবেছিলাম লিঙ্কটি 0নীচের দিকের লিঙ্ক, তবে দৃশ্যত এটির মতো Çতবে অযৌক্তিক, ধন্যবাদ! (এছাড়াও আমি সবেমাত্র একটি নতুন শব্দ শিখেছি: পি)
এরিক দি আউটগলফার

1

হুশ , 27 বাইট

`fN!+mmëI=2ε¬moΘẊe><€¨Ÿȧö¨←

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

-9 এইচ.পি.উইজকে ধন্যবাদ ।

আমি এই উত্তরটি নিয়ে বেশ গর্বিত।


Golfed ব্যবহার করে বেশিরভাগই ΘẊ>এবং ΘẊ<এবং`fN
H.PWiz

@ এইচ.পি.উইজ কীভাবে আমি সেগুলি সত্যই
দেখিনি

-1 বাইট এ তালিকাবদ্ধ একটি তালিকা 0হ'ল শেষ উপাদান।
এইচ.পি.উইজ

@ এইচ.পি.উইজ ওহ আমি ভেবেছিলাম যে সংকীর্ণ স্ট্রিং ¨₆Żσa¨এর পরিবর্তে হবে তাই আমি এই বৈশিষ্ট্যটি ব্যবহার করিনি, ধন্যবাদ। এবং এখন আমি বলতে পারি এটি জেলির সাথে সম্পর্কযুক্ত
এরিক আউটগল্ফার

1

জাভা (ওপেনজেডিকে 8) , 266 217 213 205 172 171 155 131 বাইট

s->a->{int i=0,l=0,c=s.charAt(0)-97;for(int e:a){if(++i>1&(c==8&e>l|c==3&e<l)|c==14&(l=e)<2|c>18&l>1|c<1)System.out.print(i+",");}}

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


আপনি সংজ্ঞায়িত তাহলে yহিসেবে char, আপনি গলফ সমতা পরীক্ষা পছন্দ করতে পারেন y.equals("a")থেকে y=='a', y==97বা এমনকি y<98
জোনাথন ফ্রেচ

@ জোনাথনফ্রেচ কেবল এটিকে পরিবর্তন
রবার্তো গ্রাহাম

টিআইও কমপক্ষে আউটপুট আশা করব না। যখন কেবল উদাহরণ দিয়ে দেওয়া হয়েছে, তালিকার জন্য উপাদানগুলির মধ্যে একটি স্থান প্রয়োজন এবং কোনও অনুবর্তী কমা নেই।
তাহগ

যেহেতু 19হল cএর সর্বোচ্চ মান, c==19সমান c>18
জোনাথন ফ্রেচ

2
131 বাইট:s->a->{int i=0,l=0,c=s.charAt(0)-97;for(int e:a){if(++i>1&(c==8&e>l|c==3&e<l)|c==14&(l=e)<2|c>18&l>1|c<1)System.out.print(i+",");}}
নেভায়ে

1

জকি 1.5 , 131 বাইট

Xcali এর পদ্ধতির ভিত্তিতে যেহেতু স্ট্রিংয়ের মিলটি ছোট হয় তারপরে আমার অ্যারের সংস্করণ।

def D(s):[.[1]|gsub(" ";"")|match(s;"g").offset+(s|length)];./"
"|{i:D("12"),d:D("21"),o:D("1"),t:D("12"),a:D("."),n:[]}[.[0][0:1]]

ধরে নিই জেকি -Rsবিকল্পের সাথে ডাকা হয় এবং ইনপুট দুটি লাইনে প্রদর্শিত হয় যেমন eg

decreasing
1 1 2 2 2 1 2 2 1 1 2

সম্প্রসারিত:

def D(s): [
      .[1]                              # find where s appears
    | gsub(" ";"")                      # in the input and add
    | match(s;"g").offset + (s|length)  # length to get ending index
  ]
;

  ./"\n"                                # split on newline
| {i:D("12"),                           # increasing
   d:D("21"),                           # decreasing
   o:D("1"),                            # ones
   t:D("2"),                            # twos
   a:D("."),                            # all
   n:[]                                 # none
  }[.[0][0:1]]

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


1

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

(c:_)!l=[i|(i,y,x)<-zip3[1..]l$l!!0:l,c/='i'||x<y,c>'d'||x>y,c/='o'||y<2,c<'t'||y>1,c/='n']

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

লাইকোনি একটা বাইট বাঁচালেন।


1
আপনি এটি দিয়ে একটি বাইট সংরক্ষণ করতে পারেন (i,y,x)<-zip3[1..]l$l!!0:l
লাইকনি


1

জে, 73 বাইট

g=.[:I.[=0,2-/\]
(_1 g])`(1 g])`(1=])`(2=])`(i.@#@])`_1:@.('idotan'i.{.@[)

এটি কীভাবে উল্লেখযোগ্যভাবে ঘনীভূত হতে পারে তা জানতে আগ্রহী হবে - আমি বিশ্বাস করি এটি করতে পারে (কেবলমাত্র সমস্ত এজেন্ডা পেরেনগুলির জন্য 10 টি অক্ষর!)

  • g- ক্রমবর্ধমান এবং হ্রাসের জন্য সহায়ক ক্রিয়া যা \আকার 2 এর ইনফিক্স রানের মানগুলির সাথে তুলনা করার মতোই
  • বাকিরা কেবল "কমান্ড" থেকে প্রথম চরিত্রটি ধরে এবং এজেন্ডা ব্যবহার করে সংশ্লিষ্ট কেসটি কার্যকর করে @.

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


কি 1=]এবং 2=]না কাজ করে? এছাড়াও, যদি gকোনও সংখ্যাটিকে তার বাম আর্গুমেন্ট হিসাবে এবং তার তালিকাটিকে তার ডান আর্গুমেন্ট হিসাবে গ্রহণ করে এবং তালিকাগুলি যেখানে 2-/\ বাম আর্গুমেন্টের সমান হয় সেখানে সূচকগুলি ফিরিয়ে দেয় what এইভাবে আপনি এটি পাস করতে পারেন _1বা 1কোনও বিজ্ঞাপনবাণী ব্যবহারের পরিবর্তে হ্রাস এবং বৃদ্ধি পেতে পারেন।
কোলে

@ কোল ভাল মন্তব্য। আমি পরিবর্তনগুলি করেছি, এবং ফলাফলটি আরও পরিচ্ছন্ন, যদিও 73৩ টি এখনও উচ্চ বাইট গণনার মতো বলে মনে হচ্ছে। মানে জে এখানে জেএস বেঁধে রাখছে .... লজ্জা!
জোনা 18

0

জাভা 8, 233 229 216 বাইট

l->s->{int i=s.charAt(0)-97,k=0,j=1;for(s=(l+"").replaceAll("[^12]","");s.length()*j>0;System.out.print(j++<0?"":(k+=j)+","),s=s.substring(j))j=i<1?0:s.indexOf(i<4?"21":i<9?"12":i<14?" ":i<15?"1":"2")+(i>2&i<9?1:0);}

এই স্ট্রিং অ্যাপ্রোচটি আমার প্রত্যাশার চেয়ে বেশি সময় শেষ হয়েছিল .. তবে এমন কি ভেবেছিল যে আমি অন্যান্য জাভা 8 এর উত্তর দ্বারা প্রচুর পরিমাণে ছড়িয়ে পড়েছি , যাইহোক এটি পোস্ট করার সিদ্ধান্ত নিয়েছি।
এটি অবশ্যই গল্ফ করা যেতে পারে, এমনকি এই পদ্ধতির সাথে .. "" কিছুই নয় "এবং" বৃদ্ধি / হ্রাস "মূলত কিছুটা বেকায়দায় পড়েছিল যার জন্য কিছু বাইট খরচ পড়ে ..

ফলাফলটি 1-সূচকযুক্ত।

ব্যাখ্যা:

এখানে চেষ্টা করুন।

l->s->{                          // Method with List and String parameters
  int i=s.charAt(0)-97,          //  First character of the String - 97
                                 //   (i=8; d=3; o=14; t=19; a=0; n=13)
      k=0,                       //  Total counter
      j=1;                       //  Index integer
  for(s=(l+"")                   //  toString of the List,
         .replaceAll("[^12]","");//   and leave only the 1s and 2s 
      s.length()*j>0             //  Loop as long as `j` and the size of the String
                                 //  are both larger than 0
      ;                          //   After every iteration:
      System.out.print(          //    Print:
       j++<0?                    //     If `j` is -1:
        ""                       //      Print nothing
       :                         //     Else:
        (k+=j)+",")              //      Print the current index
      ,s=s.substring(j))         //    And then remove the part of the String we've checked
    j=i<1?                       //   If "all":
                                 //    Change `j` to 0
      :                          //   Else:
       s.indexOf(                //    Replace `j` with the next index of:
        i<1?                     //     If "all":
         s.charAt(0)+""          //      The next character
        :i<4?                    //     Else-if "decreasing":
         "21"                    //      Literal "21"
        :i<9?                    //     Else-if "increasing":
         "12"                    //      Literal "12"
        :i<14?                   //     Else-if "none":
         " "                     //      Literal space (any char that isn't present)
        :i<15?                   //     Else-if "one":
         "1"                     //      Literal "1"
        :                        //     Else(-if "two"):
         "2")                    //      Literal "2"
       +(i>2&i<9?1:0);           //     +1 if it's "increasing"/"decreasing"
                                 //  End of loop (implicit / single-line body)
}                                // End of method

0

পার্ল 5 , 71 + 2 ( -nl) = 73 বাইট

$p=/l/?'.':/t/?2:/^o/?1:/d/?21:/i/?12:0;$_=<>;s/ //g;say pos while/$p/g

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

সংশোধিত যুক্তি কার্যকরভাবে নীচের ব্যাখ্যার মতো, তবে প্যাটার্নের মিলগুলি সংক্ষিপ্ত করা হয়েছে।

পূর্বে:

$p=/all/?'.':/^o/?1:/^t/?2:/^d/?21:/^i/?12:0;$_=<>;s/ //g;say pos while/$p/g

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

মানদণ্ডের মিল না হলে আউটপুট কিছুই না।

ব্যাখ্যা:

$p=          # set the pattern to seach based on the input string
  /all/?'.'  # any character
 :/^o/?1     # starts with 'o', find ones
 :/^t/?2     # starts with 't', find twos
 :/^d/?21    # starts with 'd', find decreasing
 :/^i/?12    # starts with 'i', find increasing
 :0;         # anything else: create pattern that won't match
$_=<>;s/ //g;# read the digits and remove spaces
say pos while/$p/g # output position(s) of all matches
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.