-2 चूंकि अब हमें खाली सूची को संभालने की आवश्यकता नहीं है -
-1 से जुड़ने से स्विच j@
करने के लिए, समवर्ती करने के लिए, ;
और मिस्ड आइटम को नियोजित विधि के लिए बीच में सामना करने की आवश्यकता नहीं है, तिकड़ी की शुरुआत में ठीक है )
-2 से स्विच P¬aSH
करने के लिए oSH
के बाद से हम समतल (ठीक दो परिणाम है, के आधे 1
है 0.5
जो बाहर वैसे भी फ़िल्टर किया जाता है, और कई बराबर परिणाम होने कोई भी विधि कार्यरत पर को प्रभावित किया है)
-1 श्री Xcoder के लिए धन्यवाद (0 अनुक्रमित इनपुट की अनुमति है)
d3ZIỊoSH;µƝFf9Ḷ¤Q⁼
कानूनी और एक गलत मूल्य ( ) अगर नहीं में [0,8]
एक पूर्णांक की सूची ले रहा है 1
और एक सत्य मान ( 0
) लौटा रहा है ।
इसे ऑनलाइन आज़माएं! या एक परीक्षण-सूट देखें ।
कैसे?
इनपुट सूची में 0-अनुक्रमित नोड्स के प्रत्येक आसन्न जोड़ी को देखता है। यदि पूर्णांक विभाजन दो में से दो से भिन्न होता है, तो वे ऊपर और नीचे की पंक्तियों पर होते हैं, यदि दो में से तीन द्वारा modulo 2 से भिन्न होता है तो वे बाएं और दाएं कॉलम में होते हैं। दो से विभाजित ऐसी जोड़ियों का योग या तो तीन-नोड-लाइन के 0-अनुक्रमित मध्य-नोड या एक गैर-पूर्णांक मान है - इसलिए इन मूल्यों को पहले 0-अनुक्रमित जोड़ी के सामने डाला जाता है और फिर किसी भी बोगस नोड्स (जैसे 0.5
या3.5
) को हटा दिया जाता है, सूचियों की परिणामी सूची को समतल कर दिया जाता है और फिर डी-डुप्लिकेट किया जाता है (ऑर्डर-संरक्षित, अद्वितीय प्रविष्टियों को प्राप्त करने के लिए) और अंत में इनपुट की तुलना में - एक कानूनी स्वाइप के लिए यह सब गैर-कानूनी होने के दौरान समाप्त हो जाएगा। लोग गुम मध्य नोड्स और / या डुप्लिकेट नोड्स को हटा देंगे (ध्यान दें कि लंबाई 1 की इनपुट सूची के लिए कोई विशेष आवरण आवश्यक नहीं है क्योंकि इसमें कोई निकटवर्ती जोड़े नहीं हैं):
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⁼ȧȦ
इसे ऑनलाइन आज़माएं! या एक परीक्षण-सूट देखें ।
कैसे?
उपरोक्त के समान लेकिन सभी तीन-नोड-लाइन संभावनाओं का निर्माण करता है और लुक-अप करता है (मिड-नोड के लिए राशि का परीक्षण करने और रोकने के लिए डिमॉड का उपयोग करने के बजाय जाँच करता है)।
सबसे पहले तीन-नोड-लाइनों की सूची का निर्माण:
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)