Como remover sublistas cujo último dígito é ímpar?

Sep 02 2020

Quero remover todas as sublistas cujo último dígito seja ímpar. Minha tentativa abaixo não parece elegante porque eu converto cada sublista de dígitos em um número primeiro e, em seguida, removo os números ímpares.

Questão

Como posso filtrar inputverificando o último dígito em cada sub-lista? Usando um único, DeleteCasesse preferir.

Tentativa

ClearAll[input, output, final]
input = Permutations@IntegerDigits@444123;
output = FromDigits /@ DeleteCases[input, {___, 4, 4 .., ___}];
final = DeleteCases[output, x_?OddQ]

Respostas

4 SjoerdC.deVries Sep 02 2020 at 03:18
input={{4, 4, 4, 1, 2, 3}, {4, 4, 4, 1, 3, 2}, {4, 4, 4, 2, 1, 3}, {4, 4, 4, 2, 3, 1}, {4, 4, 4, 3, 1, 2}};
DeleteCases[input, _List?(OddQ[#[[-1]]] &)]

(*{{4, 4, 4, 1, 3, 2}, {4, 4, 4, 3, 1, 2}}*)

ou

DeleteCases[input, {___, a_} /; OddQ[a]]
4 ciao Sep 02 2020 at 03:30
Pick[input, BitAnd[1, input[[All, -1]]], 0]

Deve ser bem rápido em listas grandes.

3 OkkesDulgerci Sep 02 2020 at 03:51
Pick[input, Mod[Last /@ input, 2], 0]
Pick[input, EvenQ[Last /@ input]]
1 user1066 Sep 02 2020 at 03:26
input//Pick[#,OddQ@#[[All,-1]],False]&

ou

input//Pick[#,Divisible[#[[All,-1]],2]]&