Exactly three adjacent 3 in lists

func contains_n_consecutive_objs(arr, n, obj) {
 
    # In Sidef >= 3.99, we can also say:
    # arr.contains(n.of(obj)...)
 
    arr.each_cons(n, {|*a|
        if (a.all { _ == obj }) {
            return true
        }
    })
 
    return false
}
 
var lists = [
    [9,3,3,3,2,1,7,8,5],
    [5,2,9,3,3,7,8,4,1],
    [1,4,3,6,7,3,8,3,2],
    [1,2,3,4,5,6,7,8,9],
    [4,6,8,7,2,3,3,3,1],
]
 
lists.each {|list|
    say (list, " => ", contains_n_consecutive_objs(list, 3, 3))
}

Output:

Last updated

Was this helpful?