শহরে দুটি নতুন শেরিফ রয়েছে - ডিজেএমসিমেগো জোড়া সনাক্তকরণ!


59

শহরে, মেগো এবং ডিজেএমসিমেহেমে আমাদের কয়েকটি নতুন শেরিফ মডারেটর রয়েছে । তাদের নতুন অবস্থানের জন্য তাদের যথাযথভাবে সম্মান জানাতে আমাদের একটি চ্যালেঞ্জ দরকার, তাই আমরা সেখানে যাই।

এখানে এমন কিছু যা তাদের প্রোফাইলগুলিতে সময় আমার দৃষ্টি আকর্ষণ করেছে - তাদের ব্যবহারকারীর আইডিগুলি এবং । আপনি যদি ডিজিট-ভিত্তিক বিয়োগফল সম্পাদন করেন তবে আপনি বেশ উত্তেজনাপূর্ণ কিছু লক্ষ্য করবেন (অবশ্যই পরম পার্থক্য গ্রহণ করে):3171645941

3|1|7|1|6
4|5|9|4|1
-+-+-+-+- (-)
1|4|2|3|5

উপরের অ্যালগরিদমের দ্বারা উত্পন্ন সংখ্যাটি 14235 । এই পূর্ণসংখ্যা সম্পর্কে বিশেষ কিছু রয়েছে: এটি কেবল একটানা সংখ্যা নিয়ে গঠিত হয় কেবল আরোহী ক্রমে সাজানো, তবে ঠিক একটি অঙ্কটি সঠিকভাবে স্থাপন করা হয় না - 4

আমরা যদি ডিজিট-ভিত্তিক পরম পার্থক্যগুলি ধারাবাহিক পূর্ণসংখ্যার হিসাবে আরোহণের ক্রমে সাজানো হয় তবে আমরা একটি জোড়কে ধনাত্মক পূর্ণসংখ্যার (ক, খ) কল করব but এটি হ'ল অঙ্ক-বিয়োগ বিয়োগের ফলাফলের ঠিক এক অঙ্ককে অন্য অবস্থানে নিয়ে যাওয়া সম্ভব, যেমন প্রাপ্ত পূর্ণসংখ্যার কেবল ধারাবাহিক অঙ্ক থাকে, আরোহী ক্রম অনুসারে সাজানো।(a,b)

আমাদের উপরের উদাহরণে, জুটি একটি ডিজেএমসিমেগো জুটি, কারণ যদি থেকে মধ্যে সরানো হয় তবে ফলাফলটি যা মানদণ্ডটি পূরণ করে। মনে রাখবেন যে, ফলে সংখ্যা ডিজিটের না এ শুরু করতে , তারা শুধু পরপর করা কর্তব্য। যখন তাদের মধ্যে কী সিদ্ধান্ত নেওয়া উচিত সে সম্পর্কে কেউ যখন অনিশ্চিত থাকে, তখন তারা সর্বদা জিনিসগুলি বাছাই করতে অন্যের সহায়তার উপর নির্ভর করতে পারে।4 3 5 12345 1(31716,45941)435123451

আপনার কাজ হ'ল ইনপুট হিসাবে দেওয়া ধনাত্মক পূর্ণ সংখ্যার একজোড়া কোনও ডিজেএমসিমেগো জুটি কিনা তার উপর নির্ভর করে একটি সত্য / মিথ্যা মান আউটপুট করা ।

  • আপনি গ্যারান্টিযুক্ত যে এবং এর সমান সংখ্যা থাকবে সর্বদা কমপক্ষে 4।ab

  • আপনি যেকোন যুক্তিসঙ্গত বিন্যাসে পূর্ণসংখ্যা নিতে পারেন (যেমন দেশীয় পূর্ণসংখ্যা, স্ট্রিং, অঙ্কগুলির তালিকা ইত্যাদি)

  • আপনি যে কোনও প্রোগ্রামিং ভাষায় প্রতিযোগিতা করতে পারেন এবং যে কোনও মানক পদ্ধতির মাধ্যমে ইনপুট নিতে এবং আউটপুট সরবরাহ করতে পারেন , যখন এই লুফোলগুলি ডিফল্টরূপে নিষিদ্ধ। এটি , তাই প্রতিটি ভাষার জন্য সংক্ষিপ্ততম জমা (বাইটে) জিততে পারে।

পরীক্ষার মামলা

a, b -> Output

31716, 45941 -> Truthy
12354, 11111 -> Truthy
56798, 22222 -> Truthy
23564, 11111 -> Truthy
1759,  2435  -> Truthy
12345, 11111 -> Falsy
3333,  2101  -> Falsy
22354, 22222 -> Falsy
31717, 45941 -> Falsy
14325, 11111 -> Falsy
89789, 78865 -> Falsy
14954, 61713 -> Falsy
25631, 11114 -> Falsy

অথবা, অন্য ফর্ম্যাটে


আমরা কি নন-ডিজেএমসিমেগো জোড়গুলির জন্য সত্যবাদী এবং ডিজেএমসিমেগো জুটির জন্য মিথ্যা আউটপুট দিতে পারি? এছাড়াও সত্যবাদী / মিথ্যা মানগুলি কি সামঞ্জস্যপূর্ণ হওয়া দরকার?
dylnan

6
@Blacksilver আমি করেছি এটা তাকে পেটানো পি:
DJMcMayhem

2
@ মিঃ এক্সকোডার "সত্যবাদী / মিথ্যা মানগুলিকে অদলবদল করার জন্য ডিফল্টরূপে অনুমতি দেওয়া হয়" এটি আসলে কোনও জিনিস?
মার্টিন ইন্ডার

2
@ মিঃ এক্সকোডার শিওর, অনেক চ্যালেঞ্জ এটির অনুমতি দেয় তবে "এটি ডিফল্টরূপে অনুমোদিত" বলে আমার বোঝা যায় যে এটি সম্পর্কে কোথাও একটি মেটা পোস্ট রয়েছে।
মার্টিন ইন্ডার

1
25631, 11114উদাহরণ হিসাবে যোগ করতে পারেন । পার্থক্যগুলি 14523যা বর্তমান বেশ কয়েকটি প্রোগ্রামকে বিভ্রান্ত করে
টন হসপেল

উত্তর:


7

আপনার সম্ভবত একটি নোট যুক্ত করা উচিত যা 105AB1E-এ একমাত্র সত্যবাদী সংখ্যা; মিঃ এক্সকোডার যদি আমাকে এই সত্য সম্পর্কে অবহিত না করতেন তবে আমি এই সমাধানের বৈধতা নিয়ে প্রশ্ন করতাম। আপনি সময় আছে যখন আপনি একটি ব্যাখ্যা যোগ করতে পারেন?
শেগি

@ শেগি আপনি এর মধ্যে আমার সমাধানের ব্যাখ্যাটি একবার দেখে নিতে পারেন: এটি এনিগমার মতো দক্ষ নয় তবে আমরা বেশিরভাগ একই ফাংশনটি ব্যবহার করছি।
কাল্ডো

@ শেগি: আমি এটি পোস্ট করার সময় কোনও ব্যাখ্যা যুক্ত করার মতো সময় পাইনি,
বুটি

এটি নতুন পরীক্ষার ক্ষেত্রে, 14325, 11111 (মিথ্যা) ব্যর্থ।
ডেনিস

@ ডেনিস: ধন্যবাদ, এখনই ঠিক করা উচিত (অনেকগুলি বাইটের দামে)। এটি পরে চেষ্টা এবং গল্ফ করতে হবে।
এমিগনা

7

সি (জিসিসি) , 259 258 254 253 250 248 233 বাইট

  • একটি বাইট গল্ফ অনুপ্রাণিত করার জন্য স্ট্যান স্ট্রামকে ধন্যবাদ ।
  • কিছু পরিবর্তনশীল সূচনা জাগল করে চারটি বাইট সংরক্ষণ করা।
  • Golfing দ্বারা একটি বাইট সংরক্ষিত for(...;l++)b*=B[l]==-~B[l-1];করার for(...;b*=B[l]==-~B[~-l++]);(সম্ভবত, অনির্ধারিত আচরণের উপর নির্ভর প্রয়োজন হিসাবে এটি প্রথম মূল্যায়ন B[l]দ্বারা অনুসরণ -~B[~-l++])।
  • সংরক্ষিত তিনটি পাঁচটি বাইট।
  • সিলিংক্যাটকে ধন্যবাদ পনেরো বাইট সংরক্ষণ করা
j,k,l,L,r,b;f(char*A,char*B){for(j=r=0;A[L=j];)A[j++]=-~abs(A[j]-B[j]);for(j=0;j-L;j++)for(k=~0;L-++k;r|=!b)if(j-k){strcpy(B,A);for(l=j;A[l];B[~-l]=B[++l]);for(l=L;l-k;B[-~l]=B[--l]);B[k]=A[j];for(l=b=0;B[++l];b|=B[l]+~B[~-l]);}A=r;}

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

ব্যাখ্যা (248 বাইট সংস্করণ)

j,k,l,L,r,b;                            // global variables
f(char*A,char*B){                       // function takes two strings
 for(j=r=0;A[j];L=j)                    // loop through A, compute array length L
  A[j++]=-~abs(A[j]-B[j]);              // set every entry in A to the absolute
                                        // difference of A and B at that position
                                        /* Test out all possible movements of        *
                                         * characters and see if any one             *
                                         * results in a sorted list => DJMcMego pair */
 for(j=0;j-L;j++)                       // loop through array
  for(k=~0;L-++k;r|=!b)                 // loop through array
   if(j-k){                             // j is not equal to k
    for(l=0;A[l];B[l++]=A[l]);          // copy A to B
    for(l=j;A[l];B[~-l]=B[++l]);        // shift part of B
    for(l=L;l-k;B[-~l]=B[--l]);         // shift part of B
    B[k]=A[j];                          // insert character at correct position
    for(l=b=0;B[++l];b|=B[l]+~B[~-l]);} // test if B is sorted
 A=r;}                                  // return if there was a DJMcMego pair found

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


শুধুমাত্র 1 বার চালিত লুপগুলির জন্য, আপনি j=041 তম চর হিসাবে এড়িয়ে যেতে পারেন
স্টান স্ট্রুম

@ স্ট্যানস্ট্রাম আমি মোটামুটি নিশ্চিত যে আপনি তারপরে jএমন মান রাখার উপর নির্ভর করছেন 0যা বেশ কয়েকটি কল করার পরেও প্রয়োজন হয় না। একটি ফাংশন, তবে, ইচ্ছামত প্রায়শই কলযোগ্য এবং এখনও চ্যালেঞ্জ সমাধান করা উচিত ( প্রাসঙ্গিক মেটা পোস্ট )।
জোনাথন ফ্রেচ

@ স্ট্যানস্ট্রাম আপনি jলুপের আগে শূন্য হতে সংজ্ঞা দিতে পারেন এবং এইভাবে একটি বাইট সংরক্ষণ করতে পারেন।
জোনাথন ফ্রেচ

আপনি f(char*A,char*B){-> দিয়ে বাইট শেভ করতে পারেন f(A,B)char*A,*B;{
লাম্বদাবেতা

@ ল্যাম্বদাবেতা এই দুটি স্নিপেট সমান দৈর্ঘ্যের।
জোনাথন ফ্রেচ

4

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

কারিটিং সিনট্যাক্সে অঙ্কের দুটি অ্যারে হিসাবে ইনপুট নেয় (a)(b)। একটি বুলিয়ান ফেরত দেয়।

a=>b=>a.some((_,i)=>a.some((_,j)=>i-j&&!(A=a.map((v,i)=>Math.abs(v-b[i]))).some(v=>v-A[~k--]-1,A.splice(i,0,A.splice(j,1)[k=0]))))

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


4

এসডাব্লুআই-প্রোলগ, 157 বাইট

খুব সংক্ষিপ্ত নয় তবে সমস্যাটি ঘোষণামূলক পূর্বাভাস, পরিবর্তনশীল বাঁধাই এবং পুনরাবৃত্তি, অর্থাত্ প্রোলোগ :) এর জন্য বিশেষভাবে উপযুক্ত বলে মনে হয়েছে

n(T,Y):-s(T,Q,I,J),s(Y,W,I,J),m(Q,W).
s(T,Q,I,J):-nth0(I,T,X,R),nth0(J,Q,X,R),I\=J.
m([A,B|T],[C,D|Y]):-1 is abs(B-D)-abs(A-C),m([B|T],[D|Y]).
m([_],[_]).

সাথে কল করুন, যেমন, n([3,1,7,1,6],[4,5,9,4,1]).

ব্যাখ্যা: উভয় তালিকার একটি উপাদানকে একটি নতুন অবস্থানে নিয়ে যান (এসডাব্লুআই-প্রোলগ nth0অন্তর্নির্মিত ব্যবহার করে ) এবং পরীক্ষা করুন যে নতুন তালিকার পার্থক্য ধারাবাহিকভাবে কিনা।

s(T,Q,I,J)    % switch (yet unbounded) index I and J in list T, store in Q
s(Y,W,I,J)    % switch (now bounded) I and J in list Y
m(Q,W)        % check new lists
s(T,Q,I,J) :- nth0(I,T,X,R) % X (unbounded) is the I-th (unbounded) element 
                            % of list T with rest R (=prefix+postfix) 
nth0(J,Q,X,R) % the same X is the J-th element in list Q with the same rest R
I\=J          % I and J are unequal
m([A,B|T],[C,D|Y]) :-  % consider first two elements of both lists
1 is abs(B-D)-abs(A-C) % check if differences are consecutive                          
m([B|T],[D|Y])         % recursion starting with the second element
m([_],[_]).            % stop recursion at last element in the list

4

জে , 27 বাইট

ফ্রাউনফ্রোগের জন্য −8 বাইট ধন্যবাদ

1"0(-:(2-/\|\:|),1#.2>/\|)-

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

প্রাথমিক সমাধান:

জে , 35 বাইট

[:((1=[:*/2-/\\:~)*1=1#.0<2-/\])|@-

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

ব্যাখ্যা

ইনপুট হিসাবে অঙ্কের তালিকা নেয়

|@- তালিকার অঙ্কগুলির মধ্যে সম্পূর্ণ পার্থক্য খুঁজে পায়

1=1#.0<2-/\]শুধুমাত্র একটি অঙ্ক তার স্থান থেকে দূরে রয়েছে কিনা তা পরীক্ষা করে। প্রথমে আমি সংযুক্ত সংখ্যার সমস্ত জোড়ার মধ্যে পার্থক্য খুঁজে পাই এবং তাদের মধ্যে কেবল একটিই ইতিবাচক কিনা তা পরীক্ষা করে দেখুন।

* উপরের পরীক্ষাটি (1 বা 0) থেকে নিম্নলিখিত পরীক্ষার সাথে ফলাফলটি গুণ করুন:

1=[:*/2-/\\:~সব অঙ্ক কি একটানা? আমি তালিকাটি নীচে সাজিয়েছি, সংযুক্ত সংখ্যার সমস্ত জোড়াগুলির জন্য পার্থক্য নিয়েছি, তাদেরকে বহুগুণ এবং এটি 1 এর সমান কিনা তা পরীক্ষা করব


25634 11111(অন্যান্য অনেক জমা দেওয়ার মতো) এর জন্য ব্যর্থ হয়
টন হসপেল

@ টন হসপেল - হ্যাঁ, আপনি ঠিক বলেছেন। আমি টিআই কীভাবে এটি ঠিক করব তা পরীক্ষা করব।
গ্যালেন ইভানভ

আমি এটি ঠিক করিনি, কেবল গল্ফ করলাম।
ফ্রাউনফ্রগ

নিবন্ধন করুন আমি এই সমস্যাটি ভুলে গেছি
গ্যালেন ইভানভ

4

জেলি , 14 বাইট

ạµṢ_JEċ@Œ¿-Ƥ%L

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

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

ạµṢ_JEċ@Œ¿-Ƥ%L  Main link. Arguments: A, B (digit arrays)

ạ               Take the elementwise absolute difference. Call the result R.
 µ              New chain. Argument: R
  Ṣ             Sort R.
    J           Indices; yield [1, ..., len(R)].
   _            Take the elementwise difference.
     E          Test if all differences are equal.
                The result is 1 if R consists of consecutive digits, 0 otherwise.
          -Ƥ    For all outfixes of R, generated by dropping one of its elements:
        Œ¿        Get its permutation index (1 if sorted, higher if not).
      ċ@        Count the number of times the Boolean from the left appears in the
                array to the right. If the Boolean is 1, the count represents the
                number of ways a single digit can be deleted to yield a sorted
                array. The count has to be positive for a DJMcMego pair, but less
                than the length of R, since R may not be sorted.
            %L  Take the result modulo len(R), mapping len(R) to 0.

3

জাপট , 18 বাইট

কয়েক ঘন্টা ধরে আমার এই পোস্ট করা উচিত কিনা তা নিয়ে বিতর্ক শুরু হয়েছে। গতকাল গভীর রাতে এটির সাথে দ্রুত উপস্থিত হয়েছিল তবে এটি সঠিকভাবে পরীক্ষা করার সময় নেই ( এবং আমি ভেবেছিলাম এটি খুব দীর্ঘ হতে পারে!)। অলিভার তখন থেকে একটি অনুরূপ সমাধান পোস্ট করেছে (যা ছিল এটি যখন মূলত পোস্ট করা হয়েছিল, অবৈধ) তাই যদি তিনি বা সম্প্রদায় মনে করেন যে এটি খুব সাদৃশ্যপূর্ণ তবে আমি আনন্দের সাথে মুছে ফেলব।

2 অঙ্ক অ্যারে, আউটপুট হিসাবে ইনপুট লাগে 0জন্য trueবা অন্য কোনো সংখ্যা false

íaV
ä> x*Un än × É

এটি ব্যবহার করে দেখুন বা সমস্ত পরীক্ষার কেস পরীক্ষা করুন


ব্যাখ্যা

                   :Implicit input of digit arrays U and V               :[3,1,7,1,6],[4,5,9,4,1]
í V                :Interleave V with U                                  :[[3,4],[1,5],[7,9],[1,4],[6,1]]
 a                 :Get the absolute difference of each pair             :[1,4,2,3,5]
\n                 :Assign that new array to variable U
ä>                 :Is each element greater than the next?               :[false,true,false,false]
     Un            :Sort U                                               :[1,2,3,4,5]
        än         :Get the deltas                                       :[1,1,1,1]
           ×       :Reduce by multiplication                             :1
    *              :Multiply each element in the boolean array by that   :[0,1,0,0]
   x               :Reduce by addition                                   :1
             É     :Subtract 1                                           :0

এবং, আরও কয়েকটি পরীক্ষার ক্ষেত্রে সেই প্রক্রিয়াটি অনুসরণ করতে:

---------------------------------------------------------------
| U   | [2,3,5,6,4] | [1,2,3,4,5] | [3,1,7,1,7] | [1,4,9,5,4] |
| V   | [1,1,1,1,1] | [1,1,1,1,1] | [4,5,9,4,1] | [6,1,7,1,3] |
|-----|-------------|-------------|-------------|-------------|
| íaV | [1,2,4,5,3] | [0,1,2,3,4] | [1,4,2,3,6] | [5,3,2,4,1] |
|-----|-------------|-------------|-------------|-------------|
| ä>  | [F,F,F,T]   | [F,F,F,F]   | [F,T,F,F]   | [T,T,F,T]   |
|-----|-------------|-------------|-------------|-------------|
| Un  | [1,2,3,4,5] | [0,1,2,3,4] | [1,2,3,4,6] | [1,2,3,4,5] |
| än  | [1,1,1,1]   | [1,1,1,1]   | [1,1,1,2]   | [1,1,1,1]   |
| ×   | 1           | 1           | 2           | 1           |
|-----|-------------|-------------|-------------|-------------|
| *   | [0,0,0,1]   | [0,0,0,0]   | [0,2,0,0]   | [1,1,0,1]   |
| x   | 1           | 0           | 2           | 3           |
| É   | 0           | -1          | 1           | 2           |
---------------------------------------------------------------

2
25634 11111(অন্যান্য অনেক জমা দেওয়ার মতো) এর জন্য ব্যর্থ হয়
টন হসপেল

2

পার্ল, 121 118 বাইট

($a,$b)=map[split//],@ARGV;
$s+=$l>$_,$l=$_ for@c=map abs($$a[$i]-$$b[$i++]),@$a;
@c=sort@c;
say$s==1&&$c[-1]-$c[0]==$#$a

ব্যাশে পরীক্ষা:

function golf {
   perl -E'($a,$b)=map[split//],@ARGV;$s+=$l>$_,$l=$_ for@c=map abs($$a[$i]-$$b[$i++]),@$a;@c=sort@c;say$s==1&&$c[-1]-$c[0]==$#$a' $1 $2
}
golf 31716 45941       #says 1, true
golf 12354 11111       #says 1, true
golf 56798 22222       #says 1, true
golf 46798 22222       #says nothing, false
golf 22354 22222       #says nothing, false
golf 1759 2435         #says 1, true
golf 12345 11111       #says nothing, false
golf 89789 78865       #says nothing, false
golf 14954 61713       #says nothing, false

25634 11111(অন্যান্য অনেকগুলি জমা দেওয়ার মতো) এর জন্য ব্যর্থ হয়
টন হসপেল

2

জাভা 8 , 245 227 223 194 188 বাইট

কেভিনকে 29 ডলার বাইট সংরক্ষণ করার জন্য ধন্যবাদ

কেভিনকে আবার আরও 6 বাইটের জন্য ধন্যবাদ

 z->{int l=z.length/2,c[]=new int[l],i=0,j=0;for(;i<l;)c[i]=Math.abs(z[i]-z[i+++l]);java.util.Arrays.sort(z=c.clone());for(i=0;i<l-1;j+=z[i]-z[i-1]!=1?1:0)j+=c[i]-c[++i]>0?1:0;return j==1;}

গ্যালেন তাঁর জে উত্তরটির জন্য একই প্যাটার্নটি অনুসরণ করেছিলেন।

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


1
আপনি এর মতো আরও কয়েকটি জিনিস গল্ফ করতে পারেন ( 194 বাইট ): z->{int l=z.length/2,c[]=new int[l],i=0,j=0,d[];for(;i<l;)c[i]=Math.abs(z[i]-z[i+++l]);java.util.Arrays.sort(d=c.clone());for(i=0;i<l-1;j+=d[i+1]-d[i++]!=1?1:0)j+=c[i]-c[i+1]>0?1:0;return j==1;}আমি শুরুতে intএবং সংযুক্ত করেছিলাম int[]; l=z.length/2একবার ব্যবহার এবং l4 বার পরিবর্তে পুনরায় ব্যবহার; এটিকে পরিবর্তন করা if(...)j++হয়েছে j+=...?1:0যাতে এগুলি লুপের ভিতরে স্থাপন করা যায় এবং বন্ধনী এবং দ্বিতীয় আধা-কোলন সরানো যায়; সরানো হয়েছে i++এবং লুপের ++শেষের দিকে সরাসরি করুন i; ইত্যাদি
কেভিন ক্রুইজসেন

1
188 বাইট : z->{int l=z.length/2,c[]=new int[l],i=0,j=0;for(;i<l;)c[i]=Math.abs(z[i]-z[i+++l]);java.util.Arrays.sort(z=c.clone());for(i=0;i<l-1;j+=z[i]-z[i-1]!=1?1:0)j+=c[i]-c[++i]>0?1:0;return j==1;}। সরানো d[]এবং পুনরায় ব্যবহৃত ইনপুট zআপনার আর প্রয়োজন নেই; পরিবর্তিত j+=c[i]-c[i+1]?1:0;এবং j+=d[i+1]-d[i++]!=1?1:0করতে j+=c[i]-c[++i]?1:0;এবং j+=z[i]-z[i-1]?1:0। আমার কাছ থেকে +1, যদিও। চমৎকার উত্তর! :)
কেভিন ক্রুইজসেন

1
ধন্যবাদ কেভিন, যতবার আপনি মন্তব্য করেছিলেন আমি ইতিমধ্যে একে একে নিচে ফেলেছি এমন অনেক উপায়ে কেবল একটি বা দু'টি খুঁজে পেয়েছি: পি আপনি আমার চেয়ে অনেক দ্রুত! সাহায্যের জন্য অনেক ধন্যবাদ!
ডেভেলপিং

2
হিহ :) এই সমস্ত অভিজ্ঞতা নিয়ে আসে, আমার ধারণা। আমি ইতিমধ্যে প্রায় দুই বছর ধরে জাভাতে গল্ফ করছি। আপনি এটি যত বেশি করেন, এই ধরণের জিনিসগুলি ততই সহজ see এবং এমনকি আমার উত্তরগুলি অলিভিগ্রগ্রোগায়ার, নেভে এবং আরও কিছু লোক সারাক্ষণ দারুণভাবে ঝাপিয়ে পড়ে। ওহ, আপনি সম্ভবত ইতিমধ্যেই তাদের দেখা করেছি, কিন্তু জাভা golfing জন্য টিপস এবং <সমস্ত ভাষা> এ golfing জন্য টিপস প্রশংসনীয় মাধ্যমে পড়তে আকর্ষণীয়।
কেভিন ক্রুইজসেন

1
25634 11111(অন্যান্য অনেকগুলি জমা দেওয়ার মতো) এর জন্য ব্যর্থ
টন হসপেল

2

রেটিনা , ১০২ বাইট

+`(.)(.*¶)(.)(.*)
$2$4;$1,$3
\d
*
(_*),\1
_
L$w`(;_+\b)(.*)(;_+\b)
$%`$2$3$1$%"$3$1$2$'
m`(^;_+|\1_)+$

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

+`(.)(.*¶)(.)(.*)
$2$4;$1,$3

অঙ্কগুলি সংযুক্ত করুন।

\d
*

অ্যানারিতে রূপান্তর করুন।

(_*),\1
_

পার্থক্যটি ধরুন, তবে তারপরে 1 যুক্ত করুন কারণ রেটিনার শূন্যের সাথে কাজ করা শক্ত ™

L$w`(;_+\b)(.*)(;_+\b)
$%`$2$3$1$%"$3$1$2$'

ঠিক এক অঙ্কে সরে গিয়ে প্রাপ্ত অঙ্কগুলির সমস্ত ক্রম তালিকাবদ্ধ করুন।

m`(^;_+|\1_)+$

একটানা সংখ্যার জন্য পরীক্ষা করুন।


2

পার্ল 5 , -F 87 84 83 বাইট

পুরানো শৈলীর গণনা: 86 বাইট ( +3জন্য -F)

পেছনের নতুন লাইন ছাড়াই শেষ লাইনে এসটিডিনে তাকে 2 লাইন হিসাবে নম্বর দিন।

সত্যের জন্য 2 বারের মধ্যে পার্থক্যটির স্ট্রিং প্রিন্ট করে, মিথ্যের জন্য কিছুই হয় না

দীর্ঘ A0123456789স্ট্রিং সত্যিই বিরক্তিকর।

#!/usr/bin/perl -F
$_=<>;s%.%abs$&-$F[pos]%eg;s%%"'$`$''=~s:|:A0123456789=~/\$`$&\$'/>//&&say:reg"%eeg

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

আমি 79বৈধ হিসাবে গণনা করা হয় যদি আমি ব্যবহার করি :

$_=<>;s%.%abs$&-$F[pos]%eg;s,,$a=$&;"$`$'"=~s:|:A0123456789=~/$`$a$'/%//:reg,eg

এটি কোনও বৈধ জোড়ার জন্য ক্র্যাশ হয়ে যায়, সুতরাং আপনি একটি শূন্য নয় প্রস্থান কোড পান। তা থেকে প্রস্থান কোড 0. আমি প্রস্থান কোড অনুমতি দেওয়া হয় মাধ্যমে ফলাফলের ফিরে চেনেন তাদের সাথে একজোড়া করে প্রস্থান করে কিছুই যদি না, কিন্তু তারা সঠিকভাবে truthy এবং falsy বা আসলে বিপরীত হয় (জন্য শেল 0সত্য)?


2

রুবি , 124 113 99 95 বাইট

->l,b,d=-1{m=l.map!{|i|(i-b[d+=1]).abs}.sort;l.any?{|*i|m-i==l-i}&&m!=l&&/#{m*''}/=~[*0..9]*''}

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


25634 11111(অন্যান্য অনেক জমা দেওয়ার মতো) এর জন্য ব্যর্থ
টন হসপেল

@ টনহোপেল এটি স্থির করেছে, ধন্যবাদ
অসোন তুহিদ ২

অসাধারণ রিবাউন্ড। একটি রয়েছে +1:-)
টন হসপেল

1

পাইট , 20 18 বাইট

ą←ą-ÅĐʁ>Ʃ1=⇹ş₋Π1=∧

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

ব্যাখ্যা:

       Implicitly get the first number
ą      Convert to list of digits
←      Get the second number
ą      Convert to list of digits
-Å     Take the absolute value of the differences of the lists element-wise
Đ      Duplicate the list of differences
ʁ>     Reduce by greater than
Ʃ1=    Is the sum of that array equal to 1
⇹      Swap the top two items on the stack
ş      Sort the top of the stack ascending
₋      Reduce by subtraction (from the right)
Π1=    Is the product of the array equal to 1
∧      bitwise-AND (in this case, also logical AND) the top two items on the stack
       Implicit print

1
25634 11111(অন্যান্য অনেকগুলি জমা দেওয়ার মতো) এর জন্য ব্যর্থ হয়
টন হসপেল

1

++ , 105 বাইট যুক্ত করুন

D,w,@~,Ñ_€|BSVcGbU1b]2b]+º=
D,k,@,BPB*
L,BcB_€|B]dBkbUBSVcGbU£>sVcGB]VBKB#BKBcB_0º>b]GBK{w}b]++b*1=BK{k}*

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

ল্যাম্বদা ফাংশনটি সংজ্ঞায়িত করে যা ইনপুট হিসাবে দুটি অঙ্কের তালিকা নেয়। অন্যথায় 0 , DJMcMego জোড়া জন্য 24 1 দ্বারা ভাগ করে নেওয়া যায় এমন একটি ধনাত্মক পূর্ণসংখ্যা আউটপুট দেয় ।

1: এটি খুব সীমাবদ্ধ থাকলে এটি ডিজেএমসিমেগো জোড়গুলির জন্য একটি ধনাত্মক পূর্ণসংখ্যার ফলাফল দেয় এবং অন্যথায় 0 হয়

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

ইনপুটটি বৈধ কিনা তা নির্ধারণ করতে আমরা এখানে 4 টি চেক করি perform এই চেকগুলি করে এমন কোডের অংশগুলি

BcB_€|B]dBkbUBSVcGbU£>sVcGB]V

এখানে, আমরা নিখুঁত অঙ্কের পার্থক্যের তালিকাটি নিই, তারপরে ক্রমবর্ধমান ক্রমে সাজানো ওভারল্যাপিং জোড়াগুলির সংখ্যা গণনা করুন count প্রতিটি ডিজেএমসিমেগো জুটি 1 এর ফলাফল উত্পন্ন করে তবে তারা এই দিক থেকে অনন্য নয়। বাইটগুলি পরে সংরক্ষণ করতে, আমরা ইনপুটগুলির পরম অঙ্কের পার্থক্যও সঞ্চয় করি। এই অ্যারে জুড়ে A হিসাবে উল্লেখ করা হবে ।

BKB#BKBcB_0º>b]

এরপরে, আমরা এবং এ এর মধ্যে বাছাইয়ের মৌলিক পার্থক্যগুলি গ্রহণ করি , জোর করার আগে এই পার্থক্যের মধ্যে কমপক্ষে একটি নেতিবাচক।

D,w,@~,Ñ_€|BSVcGbU1b]2b]+º=
GBK{w}b]

তৃতীয়, আমরা [1, 2] জোড়া A এর অগ্রগতিতে অন্তর্ভুক্ত আছে কিনা তা পরীক্ষা করে দেখি । এই পরীক্ষা যে অন্তত এক অবস্থানে একটি , এটা অনুসারে বাছাই করা হয়, যা DJMcMego বিদ্যমান জোড়া জন্য একটি নির্ণায়ক হয়।

D,k,@,BPB*
BK{k}

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

অবশেষে, আমরা পরীক্ষা করে দেখি যে এই পরীক্ষার মধ্যে প্রথম তিনটি 1 ফিরে এসেছে এবং চতুর্থটি x ≠ 0 এর মতো একটি এক্স x প্রদান করেছে

কোডের মাধ্যমে পদক্ষেপের জন্য একটি পদক্ষেপ নিম্নরূপ

D,w,		; Define a function w;
		;   This takes an array of integers
		;   Returns whether the pair [1, 2] appears in the absolute forward differences
		;
	@	; Take one argument
	~,	; Splat that argument to the stack
		;   Example argument:		[1 4 2 3 5]
		;
	Ñ_	; Increments;		STACK = [3 -2 1 2]
	€|	; Magnitudes;		STACK = [3 2 1 2]
	BSVcGbU	; Overlapping pairs;	STACK = [[3 2] [2 1] [1 2]]
	1b]2b]+	; Push [1 2];		STACK = [[3 2] [2 1] [1 2] [1 2]]
	º=	; Any equal [1 2];	STACK = [1]

; ============= ;

D,k,		; Define a function k;
		;   This function takes an array of integers
		;   Returns whether the second element is 0;
		;
	@,	; Take one argument and push to the stack
		;   Example argument:		[[1 4 2 3 5]]
		;
	BP	; Behead;		STACK = [[4 2 3 5]] 
	B*	; Product;		STACK = [120]
		;
		; In DJMcMego pairs, A may begin with a 0
		; For example, 12354 and 11111, so we need to remove the first element
		; Taking the product yields 0 if any element is 0
		; However, in order to be a DJMcMego pair, two digits at the same index
		;   cannot be the same, otherwise their digit-wise difference will be 0

; ============= ;

L,		; Define a lambda function
		;
		; This lambda function takes two arrays of digits as input
		; Returns an integer to determine if those digits represent a DJMcMego pair
		;
		; A lambda function is shorter to define than a normal function
		; However, when called inside functions with the ] command,
		;   they consume the entire stack as arguments, meaning that using functions
		;   allows us to preserve important values
		;
		; Example arguments:		[[3 1 7 1 6] [4 5 9 4 1]]
		;
		; First check:
		;
	BcB_	; Digit differences;	STACK = [-1 -4 -2 -3 5]
	€|	; Magnitudes;		STACK = [1 4 2 3 5]
	B]dBkbU	; Save a copy, A	STACK = [1 4 2 3 5]			A: [1 4 2 3 5]
	BSVcGbU	; Overlapping pairs;	STACK = [[1 4] [4 2] [2 3] [3 5]]
	£>	; Sorted descendingly?	STACK = [0 1 0 0]
	sVcG	; How many?		STACK = [1]
	B]V	; Save a copy;		STACK = []				Register: [1]
		;
		; Second check:
		;
	BK	; Retrieve A;		STACK = [[1 4 2 3 5]]
	B#	; Sort;			STACK = [[1 2 3 4 5]]
	BK	; Retrieve A;		STACK = [[1 2 3 4 5] [1 4 2 3 5]]
	BcB_	; Element differences;	STACK = [0 -2 1 1 0]
	0º>b]	; Any negatives;	STACk = [[1]]
		;
		; Third and fourth checks:
		;
	G	; Retrieve register;	STACK = [[1] [1]]
	BK	; Retreive A;		STACK = [[1] [1] [1 4 2 3 5]]
	{w}b]	; Run w;		STACK = [[1] [1] [1]]
	++	; Concatenate;		STACK = [[1 1 1]]
	b*1=	; Product = 1;		STACK = [1]
	BK{k}	; Run k;		STACK = [1 120]
	*	; Multiply;		STACK = [120]

		; To force output as 1 and 0 values,
		;   append a ? to the end, to output the sign (forces boolean conversion)

1

আর , 110 106 84 বাইট

function(x,y,z=abs(x-y),w=z-min(z)+1)adist(p(1:max(w)),p(w),c("s"=9))==2
p=intToUtf8

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

একটি হাস্যকর 22 বাইট সংরক্ষণ করুন @ জয়সি!

এখানে ওয়ার্কহর্স হ'ল adist, যা দুটি স্ট্রিংয়ের মধ্যে একটি "জেনারেলাইজড লেভেনস্টাইন সম্পাদনা দূরত্ব" দেয়। ডিফল্টরূপে দূরত্ব হ'ল একটি স্ট্রিংকে অন্য স্ট্রিংয়ে রূপান্তর করতে প্রয়োজনীয় সংখ্যার অন্তর্ভুক্তি, মুছে ফেলা এবং বিকল্পগুলির গণনা। তবে adistআপনি নিজের পছন্দ মতো জিনিসগুলিকে ওজন করতে পারবেন - সুতরাং আমি প্রতিটি প্রতিস্থাপনকে 1 এর চেয়ে 9 টি দূরত্বে যুক্ত করতে ওজন করেছি This এটি কার্যকরভাবে অ্যালগরিদমকে কেবল সন্নিবেশ এবং মুছে ফেলার সন্ধান করতে বাধ্য করে।

এই কোডটি পূর্ণসংখ্যার ভেক্টর গ্রহণ করে, নিখুঁত উপাদান অনুসারে পার্থক্য গণনা করে এবং ফলাফলটিকে 1 এ শুরু করে অনুবাদ করে এটি কল করে w

তারপর কাস্টম পরিমেয় Levenshtein দূরত্ব মধ্যে গণনা করা হয় wএকসঙ্গে আটকানো একটি স্ট্রিং এবং স্ট্রিং করতে "1234..."(আসলে UTF-8 "\001\002\003\004..."কিন্তু adistহিসাবে একই সংখ্যক অক্ষর সঙ্গে গ্রাহ্য না করে।) w

স্ট্রিংয়ের ঠিক এক ডিজিটের বাইরে যাওয়ার একমাত্র উপায় হ'ল যদি আপনি একটি মুছে ফেলা এবং একটি সন্নিবেশ তৈরি করেন, 2 এর দূরত্ব দিন।


এটি নতুন পরীক্ষার ক্ষেত্রে, 14325, 11111 (মিথ্যা) ব্যর্থ।
ডেনিস

আমি মনে করি paste0শুধু হতে পারে pasteসেখানে যেহেতু শুধুমাত্র একটি ইনপুট।
জিউসেপে

p=intToUtf8 ?
জয়সি

আমি ভেবেছিলাম আমার w=z-min(z)+1)adist(p(1:max(w))সাথে প্রতিস্থাপন করা একটি গল্ফ আছে w=z-min(z))adist(p(0:max(w))তবে এটি শুভ হওয়ায় এটি কাজ করে না intToUtf8(\000)
জয়সি

এটি একটি আকর্ষণীয় সমাধান যা আরও বেশি অগ্রাধিকারের দাবি রাখে .... আমি মনে করি কোডগল্ফের উর্ধ্বতনগুলির ভবিষ্যদ্বাণী করা এআইয়ের পরবর্তী সীমান্ত :)
জেসি

0

জাভাস্ক্রিপ্ট, 137 136 135 134 132 123 বাইট

বাক্য গঠনের ক্ষেত্রে অঙ্কের দুটি অ্যারে হিসাবে ইনপুট নেয়, এর 0জন্য আউটপুট trueএবং অন্য কোনও সংখ্যার জন্য false

a=>b=>(c=a.map((x,y)=>(x-=b[y])<0?-x:x)).map(x=>t+=x>c[++j]&(d=[...c].sort()).slice(i=0,-1).every(x=>d[++i]-x&1),t=j=0)|t^1

পরীক্ষার মামলা

f=
a=>b=>(c=a.map((x,y)=>(x-=b[y])<0?-x:x)).map(x=>t+=x>c[++j]&(d=[...c].sort()).slice(i=0,-1).every(x=>d[++i]-x&1),t=j=0)|t^1
o.innerText=`${l=`-`.repeat(21)}\n|   #1  |   #2  | f |${m=`\n|${`|`.padStart(8,`-`).repeat(2)}---|\n`}${[[31716,45941],[12354,11111],[56798,22222],[23564,11111],[1759,2435],[12345,11111],[3333,2101],[22354,22222],[31717,45941],[89789,78865],[14954,61713]].map(([x,y])=>`| ${JSON.stringify(x).padEnd(6)}| ${JSON.stringify(y).padEnd(6)}| ${f([...``+x])([...``+y])} |`).join(m)}\n`+l
<pre id=o></pre>


1
[...u].sort(y=0)অবৈধ জাভাস্ক্রিপ্ট, সাজানোর পক্ষে যুক্তিটি একটি ফাংশন হতে হবে
edc65

@ edc65, দীর্ঘকাল সম্পাদনা করা হয়েছে। এটি যেমনটি হতে পারে তেমনি অবৈধ, যদিও এটি কাজ করেছিল! ;)
শেগি

1
" 25634 11111(অন্যান্য অনেকগুলি জমা দেওয়ার জন্যও ব্যর্থ হয়েছে )" - টন হসপেল
অসোন তুহিদ

0

পাইথন 2 , 116 119 106 বাইট

কাটনের জন্য মিঃ এক্সকোডারকে ধন্যবাদ 116->84, তবে আমি পেয়েছি যে আমি "একটানা সংখ্যা" মানদণ্ডটি মিস করেছি, সুতরাং সেই উদ্দেশ্যে 26 বাইট যুক্ত করা হয়েছে :(

এর পরে, -1 আরও ধন্যবাদ মিঃ এক্সকোডার এবং -13 ধন্যবাদ ওভসকে ধন্যবাদ

def m(a,b):l=[abs(x-y)for x,y in zip(a,b)];print sum(e>f for e,f in zip(l,l[1:]))==1==len(l)-max(l)+min(l)

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

এটি নীচে এক 25634 - 11111সমস্যার সমাধান করেছে কিন্তু দ্বিগুণ দৈর্ঘ্যের সাথে ( 211 206 145 142 বি) ... গল্ফিং ...

def m(a,b):l=[abs(x-y)for x,y in zip(a,b)];r=[l[i]-i-min(l)for i in range(len(l))];print(sum(r)==0)&(len([x for x in r if abs(x)>1])<2)&any(r)

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

এবং নতুন মডারেটরদের অভিনন্দন :)

ব্যাখ্যা:

l=[abs(x-y)for x,y in zip(a,b)]

অঙ্কগুলির পরম পার্থক্যগুলির তালিকা তৈরি করে।

r=[l[i]-i-min(l)for i in range(len(l))]

যথাযথ অবস্থান থেকে অফসেট গণনা করে।

sum(r)==0

যদি ক্রমটি ধারাবাহিক না হয়, তবে অফসেট যোগফল "সাধারণত" 0 হয় না But তবে এটি 0 এর সমান হলেও, পরবর্তীগুলি সেগুলি ব্লক করে দেবে।

len([x for x in r if abs(x)>1])<2

কেবল 0 বা 1 আইটেমের 1 টির চেয়ে বড় অফসেট থাকবে (ভুল পজিশনের সাথে একটিটি 0 এর মতো 1,2,3,5,4)

any(r)

সংখ্যাগুলি সঠিক অবস্থানে থাকলে কেস ব্লক করে


এটা তোলে ব্যর্থ বলে মনে হয় m([3,3,3,3],[2,1,0,1])(রিটার্ন True) Tio
Asone Tuhid

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

1
25634 11111(অন্যান্য অনেক জমা দেওয়ার মতো) এর জন্য ব্যর্থ
টন হসপেল

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

0

হাস্কেল , 182 163 162 132 বাইট

(#)=zipWith(-)
a&b|s<-abs<$>a#b=or[all(==1)$tail a#a|(x,h:y)<-p s,(q,r)<-p$x++y,a<-[q++h:r],a/=s]
p l=[splitAt k l|k<-[0..length l]]

অঙ্কের তালিকা হিসাবে ইনপুট নেয়। সহায়ক ফাংশন pযা কোনও তালিকাকে দুটি ভাগে বিভক্ত করার সমস্ত সম্ভাব্য উপায় দেয় কোনও উপাদান বের করে আবার অন্য জায়গায় toোকাতে ব্যবহৃত হয়।

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

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