-2 අපට තවදුරටත් හිස් ලැයිස්තුවක් හැසිරවීමට අවශ්ය නොවන බැවින්
-1 සම්බන්ධ වීමෙන්, සංක්ෂිප්තව මාරුවීම j@
, ;
(මඟ හැරුණු අයිතමය භාවිතා කරන ක්රමවේදය සඳහා මැදට පැමිණීමට අවශ්ය නොවේ , තිදෙනා ආරම්භයේදීම සිටීම හොඳයි )
-2 සිට මාරු P¬aSH
කිරීමට oSH
(අපි නැතත් සිට ප්රතිඵල දෙකක් ඇති හරි, හරි අඩක් 1
එනම් 0.5
කෙසේ හෝ අතරින් ප්රේරණය වන, හා බහු සමාන ප්රතිඵල සහිත කිසිදු එක්කෝ යොදාගත් ක්රමය මත බලපාන කර ඇත)
-1 Xcoder මහතා ස්තුති (0-සුචිගත ආදානය සඳහා අවසර ඇත)
-1 (නව) විචල්යතාව ඉක්මන් Ƒ
, සහ පෙරහන්-ක්ෂණික අන්වර්ථය භාවිතා කරමින් Ƈ
.
d3ZIỊoSH;µƝFḞƑƇQ⁼
මොනාඩික් සබැඳියක් පූර්ණ සංඛ්යා ලැයිස්තුවක් [0,8]
ගෙන සත්ය වටිනාකමක් ( 1
) නීත්යානුකූල නම් සහ වැරදි අගයක් ( 0
) නොමැති නම් ආපසු ලබා දේ.
එය මාර්ගගතව උත්සාහ කරන්න! හෝ පරීක්ෂණ කට්ටලයක් බලන්න .
කොහොමද?
ආදාන ලැයිස්තුවේ එක් එක් යාබද යුගල 0 දර්ශක නෝඩ් දෙස බලයි. නිඛිල සංඛ්යා දෙකෙන් තුනකින් 2 කින් වෙනස් වුවහොත් ඒවා ඉහළ සහ පහළ පේළි වල වේ, මොඩියුලය දෙකෙන් තුනකින් 2 කින් වෙනස් වේ නම් ඒවා වම් සහ දකුණු තීරුවල වේ. එවැනි යුගලවල එකතුව දෙකකින් බෙදූ විට ත්රි-නෝඩ් රේඛාවක 0-සුචිගත කළ මැද-නෝඩ් හෝ පූර්ණ සංඛ්යා නොවන අගයක් වේ - එබැවින් මෙම අගයන් පළමුව 0-සුචිගත කරන ලද යුගලයට ඉදිරියෙන් ඇතුළු කරනු ලැබේ. ව්යාජ නෝඩ් (වැනි0.5
හෝ3.5
. ඒවා අතුරුදහන් වූ මැද නෝඩ් එකතු කරන අතර / හෝ අනුපිටපත් ඉවත් කරයි (යාබද යුගල නොමැති බැවින් දිග 1 ආදාන ලැයිස්තුවක් සඳහා විශේෂ ආවරණයක් අවශ්ය නොවන බව සලකන්න):
d3ZIỊoSH;µƝFḞƑƇ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]
Ƈ - keep those for which:
Ƒ - is invariant under?:
Ḟ - floor [ 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)