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]]&
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
George Harrison ficou chateado por suas letras de 'Hurdy Gurdy Man' de Donovan não terem sido usadas