-2 যেহেতু আমাদের আর খালি তালিকা হ্যান্ডেল করার দরকার নেই
-1 যোগদান থেকে স্যুইচিং j@
, কনকানেটেট করার জন্য, ;
(মিস করা আইটেমটি নিযুক্ত পদ্ধতিটির জন্য মাঝখানে মুখোমুখি হওয়ার দরকার নেই , ত্রয়ীর শুরুতে থাকা ভাল )
-2 থেকে সুইচিং P¬aSH
করতে oSH
যেহেতু আমরা চেপ্টা (ঠিক আছে দুই ফলাফল আছে, অর্ধেক 1
হয় 0.5
যা বাইরে যাহাই হউক না কেন ফিল্টার করা হয়, এবং একাধিক সমান ফলাফল থাকার কোন পারেন পদ্ধতি নিযুক্ত প্রভাবিত করেছে)
-1 জনাব Xcoder ধন্যবাদ (0-ইন্ডেক্স ইনপুট অনুমোদিত)
d3ZIỊoSH;µƝFf9Ḷ¤Q⁼
একটি মোনাডিক লিঙ্কটি পূর্ণসংখ্যার তালিকা গ্রহণ করে [0,8]
এবং 1
আইনী হলে সত্যবাদী মান ( ) এবং ফেরত 0
না হলে মিথ্যা মান ( ) দেয়।
এটি অনলাইন চেষ্টা করুন! অথবা একটি পরীক্ষা-স্যুট দেখুন ।
কিভাবে?
ইনপুট তালিকার প্রতিটি 0-সূচিযুক্ত নোডের সংলগ্ন জোড়া দেখে। যদি দুটিগুলির মধ্যে তিনটির দ্বারা পূর্ণসংখ্যা বিভাগ 2 দ্বারা পৃথক হয় তবে তারা শীর্ষ এবং নীচে সারিগুলিতে থাকে, যদি দুটির মধ্যে তিনটি দ্বারা মডিউল দুটি পৃথক হয় তবে তারা বাম এবং ডান কলামে রয়েছে। দুটি দ্বারা বিভাজক হওয়া এই জাতীয় জোড়াগুলির যোগটি হয় তিন-নোড-লাইনের 0-সূচকযুক্ত মধ্য নোড বা একটি অ-পূর্ণসংখ্যার মান হয় - সুতরাং এই মানগুলি প্রথমে 0-সূচী জুটির সামনে সন্নিবেশ করা হয় এবং তারপরে যেকোনও বোগাস নোড (যেমন 0.5
বা3.5
) অপসারণ করা হয়, ফলাফলগুলির তালিকার তালিকাটি সমতল করে ডি-ডুপ্লিকেট করা হয় (অর্ডার-সংরক্ষিত, অনন্য এন্ট্রি প্রদান করতে) এবং শেষ পর্যন্ত ইনপুটটির সাথে তুলনা করা হয় - আইনী সোয়াইপের জন্য এগুলি সমস্ত অবৈধ থাকাকালীন শেষ হবে এগুলি মিড-নোডগুলি অনুপস্থিত যুক্ত করবে এবং / বা সদৃশ নোডগুলি মুছে ফেলবে (দ্রষ্টব্য যে কোনও দৈর্ঘ্যের ইনপুট তালিকার জন্য কোনও বিশেষ আবরণের প্রয়োজন নেই কারণ এর কোনও সংলগ্ন जोड নেই):
d3ZIỊoSH;µƝFf9Ḷ¤Q⁼ - left input is a list of integers e.g. [3,4,7,1,2,8,3]
µƝ - perform the chain to the left for adjacent pairs:
- e.g. for [a,b] in: [3,4] [4,7] [7,1] [1,2] [2,8] [8,3]
d3 - divmod by 3 [[1,0],[1,1]] [[1,1],[2,1]] [[2,1],[0,1]] [[0,1],[0,2]] [[0,2],[2,2]] [[2,2],[1,0]]
Z - transpose [[1,1],[0,1]] [[1,2],[1,1]] [[2,0],[1,1]] [[0,0],[1,2]] [[0,2],[2,2]] [[2,1],[2,0]]
I - differences [0,1] [1,0] [-2,0] [0,1] [2,0] [-1,-2]
Ị - abs(v)<=1 [1,1] [1,1] [0,1] [1,1] [0,1] [1,0]
S - sum (of [a,b]) 7 11 8 3 10 11
o - OR (vectorises) [1,1] [1,1] [8,1] [1,1] [10,1] [1,11]
H - halve (vectorises) [0.5,0.5] [0.5,0.5] [4,0.5] [0.5,0.5] [5,0.5] [0.5,5.5]
; - concatenate [0.5,0.5,3,4] [0.5,0.5,4,7] [4,0.5,7,1] [0.5,0.5,1,2] [5,0.5,2,8] [0.5,5.5,8,3]
F - flatten [0.5,0.5,3,4, 0.5,0.5,4,7, 4,0.5,7,1, 0.5,0.5,1,2, 5,0.5,2,8, 0.5,5.5,8,3]
¤ - nilad followed by link(s) as a nilad:
9 - literal nine
Ḷ - lowered range = [0,1,2,3,4,5,6,7,8]
f - filter keep [ 3,4, 4,7, 4, 7,1, 1,2, 5, 2,8, ,8,3]
Q - deduplicate [3,4,7,1,2,5,8]
⁼ - equal to the input? e.g. 0 (here because 5 was introduced AND because 3 was removed from the right)
পূর্ববর্তী পদ্ধতি
জেলি , 36 35 বাইট
9s3;Z$;“Æ7a‘DZ¤;U$;©0m€2iị®oµƝFQ⁼ȧȦ
এটি অনলাইন চেষ্টা করুন! অথবা একটি পরীক্ষা-স্যুট দেখুন ।
কিভাবে?
উপরের মতই তবে তিনটি নোড-লাইন সম্ভাবনাগুলি তৈরি করে এবং চেহারাটি সম্পাদন করে (এটি পরীক্ষা করার জন্য ডিভোডম ব্যবহার করে পরীক্ষা করা এবং মিড-নোডের জন্য যোগফল অর্ধেক করার চেয়ে বরং পরীক্ষা করা) than
প্রথমত তিন নোড-লাইনগুলির তালিকা তৈরি করা:
9s3;Z$;“Æ7a‘DZ¤;U$;©0
9s3 - nine (implicit range) split into threes = [[1,2,3],[4,5,6],[7,8,9]]
$ - last two links as a monad:
Z - transpose = [[1,4,7],[2,5,8],[6,7,9]]
; - concatenate = [[1,2,3],[4,5,6],[7,8,9],[1,4,7],[2,5,8],[3,6,9]]
¤ - nilad followed by link(s) as a nilad:
“Æ7a‘ - code-page index list = [13,55,97]
D - decimal (vectorises) = [[1,3],[5,5],[9,7]]
Z - transpose = [[1,5,9],[3,5,7]]
; - concatenate = [[1,2,3],[4,5,6],[7,8,9],[1,4,7],[2,5,8],[3,6,9],[1,5,9],[3,5,7]]
$ - last two links as a monad:
U - upend = [[3,2,1],[6,5,4],[9,8,7],[7,4,1],[8,5,2],[9,6,3],[9,5,1],[7,5,3]]
; - concatenate = [[1,2,3],[4,5,6],[7,8,9],[1,4,7],[2,5,8],[3,6,9],[1,5,9],[3,5,7],[3,2,1],[6,5,4],[9,8,7],[7,4,1],[8,5,2],[9,6,3],[9,5,1],[7,5,3]]
0 - literal zero (to cater for non-matches in the main link since ị, index into, is 1-based and modular the 0th index is the rightmost)
; - concatenate = [[1,2,3],[4,5,6],[7,8,9],[1,4,7],[2,5,8],[3,6,9],[1,5,9],[3,5,7],[3,2,1],[6,5,4],[9,8,7],[7,4,1],[8,5,2],[9,6,3],[9,5,1],[7,5,3],0]
© - copy the result to the register
এখন সিদ্ধান্ত গ্রহণ:
...m€2iị®oµƝFQ⁼ȧȦ - left input is a list of integers e.g. [4,5,8,2,3,9,4]
µƝ - perform the chain to the left for adjacent pairs:
- i.e. for [a,b] in [[4,5],[5,8],[8,2],[2,3],[3,9],[9,4]]
... - perform the code described above = [[1,2,3],[4,5,6],[7,8,9],[1,4,7],[2,5,8],[3,6,9],[1,5,9],[3,5,7],[3,2,1],[6,5,4],[9,8,7],[7,4,1],[8,5,2],[9,6,3],[9,5,1],[7,5,3],0]
m€2 - modulo-2 slice €ach = [[1,3],[4,6],[3,9],[1,7],[2,8],[6,9],[1,9],[3,7],[3,1],[6,4],[9,7],[7,1],[8,2],[9,3],[9,1],[7,3],[0]]
i - index of [a,b] in that (or 0 if not there) e.g. [0,0,13,0,6,0]
® - recall from register = [[1,2,3],[4,5,6],[7,8,9],[1,4,7],[2,5,8],[3,6,9],[1,5,9],[3,5,7],[3,2,1],[6,5,4],[9,8,7],[7,4,1],[8,5,2],[9,6,3],[9,5,1],[7,5,3],0]
ị - index into (1-based & modular) e.g. [0,0,[8,5,2],0,[3,6,9],0]
o - OR [a,b] e.g. [[4,5],[5,8],[8,5,2],[2,3],[3,6,9],[9,4]]
F - flatten e.g. [4,5,5,8,8,5,2,2,3,3,6,9,9,4]
Q - deduplicate e.g. [4,5,8,2,3,6,9]
⁼ - equal to the input? e.g. 0 (here because 6 was introduced AND because 4 was removed from the right)
Ȧ - any and all? (0 if input is empty [or contains a falsey value when flattened - no such input], 1 otherwise)
ȧ - AND (to force an empty input to evaluate as 1 AND 0 = 0)