Uma matriz insignificante é uma matriz de números inteiros positivos, em que as diferenças absolutas entre elementos consecutivos são menores ou iguais a 1 .
Por exemplo, a seguinte matriz é insignificante:
[1, 2, 3, 4, 3, 4, 5, 5, 5, 4]
Porque as diferenças correspondentes (absolutas) são:
[1, 1, 1, 1, 1, 1, 0, 0, 1]
Quais são todos menores ou iguais a 1 .
Sua tarefa é determinar se uma determinada matriz de números inteiros é insignificante.
- Você pode assumir que a matriz sempre contém pelo menos dois elementos.
- Regras de entrada e saída padrão se aplicam. Você pode receber entrada (e saída) em qualquer formato razoável.
- As brechas padrão são proibidas.
- Os valores de verdade / falsidade devem ser distintos e consistentes.
- Isso é código-golfe , então a resposta mais curta em bytes vence.
Casos de teste
Entrada -> Saída [1, 2, 3, 4, 3, 4, 5, 5, 5, 4] -> verdadeiro [1, 2, 3, 4, 5, 6, 7, 8, 9, 8] -> verdadeiro [3, 3, 3, 3, 3, 3, 3] -> verdadeiro [3, 4, 4, 4, 3, 3, 3, 4, 4, 4] -> verdadeiro [1, 2, 3, 4] -> verdadeiro [5, 4, 3, 2] -> verdadeiro [1, 3, 5, 7, 9, 7, 5, 3, 1] -> false [1, 1, 1, 2, 3, 4, 5, 6, 19] -> false [3, 4, 5, 6, 7, 8, 7, 5] -> falso [1, 2, 4, 10, 18, 10, 100] -> false [10, 20, 30, 30, 30] -> falso
Eu usei os valores true
e false
.
code-golf
number
array-manipulation
decision-problem
Martin Ender
fonte
fonte
Respostas:
Gelatina , 3 bytes
Experimente online!
Quão?
Apenas o desafio perfeito para Jelly.
fonte
P
não funcionaria, porque se todas as diferenças fossem1
produzidas1
, mas se uma delas fosse0
produzidas0
? E se uma diferença fosse5
apenas uma0
, ainda faria0
?JavaScript (ES7),
3329 bytesGuardado 4 bytes graças a @JohanKarlsson
Quão?
Quando coagidos
Number
, matrizes de pelo menos dois elementos são avaliadasNaN
. Ao reutilizar a entrada a como a variável que mantém o valor anterior, a primeira iteração de some () sempre resulta em ([v0, v1, ...] - a [0]) ** 2 = NaN , independentemente da valor de um [0] . Portanto, o primeiro teste é sempre falso e as comparações reais começam na 2ª iteração, exatamente como pretendem.Casos de teste
Mostrar snippet de código
fonte
a=>!a.some(v=>(a-(a=v))**2>1)
Python 3 , 40 bytes
Experimente online!
fonte
Mathematica, 24 bytes
fonte
#==Clip@#&@*Differences
é um byte mais curto.Python 2 , 35 bytes
Existe com o código de status 1 para matrizes insignificantes, com o código de status 0 caso contrário.
Experimente online!
fonte
Casca , 4 bytes
Experimente online!
Explicação:
fonte
Oitava , 21 bytes
Função anônima que insere um vetor numérico e gera,
1
se insignificante ou0
não.Experimente online!
fonte
Haskell ,
3433 bytesExperimente online! -1 byte graças a @ user1472751
A solução sem pontos é
umdoisnovamente, apenas um byte ( graças a -1 byte de @Dennis ) menor que a abordagem recursiva:Experimente online!
fonte
Pitão , 6 bytes
Verifique todos os casos de teste.
Pitão , 8 bytes
Experimente online!
Explicação
fonte
I#
vez deM
.Próton , 41 bytes
Experimente online!
-16 bytes graças ao Sr. Xcoder
-2 bytes
-6 bytes graças ao Sr. Xcoder
fonte
<2 for
pode ser omitível.Japonês , 6 bytes
Experimente online!
Explicação
fonte
C # (.NET Core) ,
514544 + 18 bytes-1 byte graças a Jeppe Stig Nielsen
A contagem de bytes também inclui:
Experimente online!
Explicação:
fonte
a=>a.Zip(a.Skip(1),(x,y)=>x-y).All(x=>x*x<4)
evita a negação!
.Perl 6 , 25 bytes
Experimente online!
Isso deve ser bem legível. A única coisa menos óbvia aqui é que o operador zip
Z
irá parar de fechar quando a lista mais curta estiver esgotada (removemos o primeiro elemento da lista à direita) e que o subscrito vazio.[]
, chamado fatia Zen, fornece toda a lista..skip
retorna a lista sem o primeiro elemento.fonte
.rotate
não é necessário aqui.-2<
vez de-1≤
e em<2
vez de≤1
salvar mais quatro bytes.2>...>-2
para evitar interpretá<
-las de maneira incorreta.R ,
3026 bytesExperimente online!
fonte
function(a)all(diff(a)^2<2)
economiza 3 bytes.all(diff(scan())^2<2)
scan
, mas ainda salva um byte!05AB1E , 5 bytes
Experimente online!
Explicação
fonte
[5,2]
por exemplo.Ohm v2 , 4 bytes
Experimente online!
Quão?
fonte
PowerShell , 62 bytes
Experimente online!
O PowerShell não tem um
.map
ou.some
comando ou similar, então aqui estamos verificando individualmente cada delta.Tomamos entrada
$a
e definimos$l
igual ao primeiro elemento. Em seguida, percorremos$a
e retiramos cada elemento em que|?{...}
a diferença$_-$l
é-in
o intervalo1,0,-1
. Em seguida, definimos$l
igual ao elemento atual. Portanto, agora temos uma coleção de elementos em que o delta entre o vizinho anterior é 1. Nós analisamos.count
isso e verificamos se é-eq
ual para.count
o conjunto como um todo. Se for, todo delta é 1 ou menos, portanto é uma matriz insignificante. Esse resultado booleano é deixado no pipeline e a saída é implícita.fonte
$l=($a=$args)[0]
$l
para ser toda a matriz de entrada da sua sugestão.$args
é ele mesmo toda a matriz. Exemplo$args
. Se você chamasse um script ou função com uma série de argumentos separados como espaços, ele entraria como elementos separados$args
e, para o TIO, é assim que emular isso. Eu pessoalmente usado dessa maneira muitas vezes antes, mas a cada um o seu próprio :)Python 3 , 45 bytes
Experimente online! ou Experimente a suíte de testes.
Agradecimentos a Jonathan Frech por -2 bytes.
fonte
abs(x-y)<2
->-2<x-y<2
.Java (OpenJDK 8) , 78 bytes
Experimente online!
fonte
MATL ,
65 bytes-1 byte graças a Giuseppe
Experimente online! ou Verifique todos os casos de teste
fonte
d|2<
, pois uma matriz com um valor zero é falsey no MATL.d|2<A
para algo mais próximo da sua resposta original.anyfix , 9 bytes
Experimente online!
Esta é principalmente uma porta da solução 05AB1E, exceto terrível, porque anyfix não possui autovectorização e outras coisas legais
fonte
C,
6156 bytesObrigado a @scottinet por salvar cinco bytes!
Experimente online!
C (gcc), 47 bytes
Experimente online!
fonte
r
vez de devolvê-lo. :-)Clojure, 35 bytes
Quão legal é isso?
fonte
TI-Basic,
67 bytesou, 5 bytes se os erros contam como valor de retorno válido (retorna
ERR:ARGUMENT
se insignificante, caso contrárioERR:DOMAIN
)fonte
abs(ΔList(Ans
, ou então cai em mais de 1 (como em {5,3,1} ou no caso de teste {3,4,5,6,7,8,7,5}) não obtém detectou.JavaScript (ES6),
3736 bytesEdit: Salvo 1 byte, roubando o truque de @ Arnauld.
fonte
a=>u=>!a.some(e=>(e-=(u=e))>1|e<-1)
Pitão, 7 bytes
Suíte de teste
Retorna verdadeiro / falso.
Explicação:
fonte
Mathematica, 34 bytes
Explicação
fonte
Java (OpenJDK 8) , 60 bytes
Experimente online!
fonte
r
o loop para calcular(p-n)
apenas uma vez,>>1
pode ser/2
removido ou removido se usar em|
vez de+
:a->{int r=1,p=a[0];for(int i:a)r|=(r=p-(p=i))*r;return r<2;}
(60 bytes).Swift 4, 52 bytes
Suíte de teste:
fonte
APL, 13 bytes
Primeira resposta da APL \ o /
Nota: Eu sou um bot de propriedade da Hyper Neutrino. Eu existo principalmente para testes de bate-papo.
Explicação
fonte
∧/2>(|2-/⊢)