Uma sequência de n> 0 inteiros é chamada jumper jolly se os valores absolutos da diferença entre elementos sucessivos assumirem todos os valores de 1 a n-1.
Portanto, a sequência [4,1,2,4] possui diferenças absolutas [3,1,2], o que equivale ao conjunto [1,2,3] (1 a n-1 onde n é o comprimento da sequência original) portanto, é um jumper alegre.
Sequências têm comprimento n> 0.
Suponha que n = 1 é um jumper alegre.
Modo Fácil: Não se preocupe com stdin / stdout. Apenas uma função que aceita argumentos no entanto e retorna algo que indica alegre ou não
Modo Hard: Entrada em stdin (espaço separado) e a saída é "Jolly" / "Not jolly". Problemas de capitalização.
Isso é código de golfe.
EDIT: As seqüências podem conter números inteiros negativos e a entrada no stdin é separada por espaço.
$ jolly 2 -1 0 2
Jolly
$ jolly 19 22 24 25
Jolly
$ jolly 19 22 24 21
Not jolly
Respostas:
Haskell
Fácil 4 caracteres
Retorna uma lista de inteiros alegres se e somente se uma lista de inteiros alegres for fornecida como entrada. Isso é legal com base em "Apenas uma função que aceita argumentos e retorna algo que indica alegre ou não".
Solução fácil alternativa com 61 caracteres:
Pega uma lista e retorna a lista vazia se a sequência for alegre.
fonte
[1,3]
não é alegre, é? Eu acho que você deve iterarlength n-1
.Ruby,
9293 caracteresA versão hard com entrada no STDIN.
Se você iniciá-lo com
-pa
(conta como 4), poderá salvar 5 caracteres:fonte
-pa
.Java (rígido)
Assume que a entrada é fornecida através do stdin. (não através de argumentos de linha de comando, como por exemplo)
Golfe - 325
Un-Golfed
fonte
Scala, modo fácil, 123 caracteres
Para executar ou testar em ideone.com:
fonte
Golfscript, modo fácil,
2118 caracteresAceita argumentos como uma matriz de entradas na pilha, com mais nada na pilha; deixa 1 na pilha se for alegre e 0 em caso contrário. Para receber a entrada no stdin como uma lista de entradas separada por espaço, preencha
e para produzir "Jolly" / "Not jolly" (assumindo que estamos transformando isso em um programa)
fonte
[4 1 2 4]
, não4 1 2 4
).J (fácil), 18
J (difícil), 68
fonte
Brachylog , 11 bytes (fácil)
Experimente online!
s₂ᶠ-ᵐ
- diferenças consecutivasȧᵐ
- Valores absolutoso
- Ordenar~⟦₁
- O resultado é de 1 a alguma coisa?fonte
J, 30
26modo fácil, 8176modo difíciledit: manipula listas menores que 3, corrige a leitura stdin
A primeira linha cuida do modo fácil, a segunda adiciona o modo difícil.
J lê geralmente da direita para a esquerda:
2-/\
: para cada dois números sucessivos na lista, faça a diferença|
: valor absoluto/:~
: classificar em ordem crescente>:@i.@#
: 1 a n , para uma lista de n números=
: compare as diferenças classificadas com a sequência (usando um "garfo" J)*/
: multiplique todos os booleanos em termos de elementos; se todas as comparações foram 1, o produto deles é 1, então é alegrefonte
1 3
.Ruby, 97
102106(difícil)Pode ser, já que todo mundo é:
Entrada tirada no stdin.
fonte
(1..d.size).to_a
por[*1..d.size]
. Agora é possível trocar operandos, salva outro (total de -5 caracteres).D
fácil (
10383 caracteres)retorna soma de 1..i.length em Jolly algum outro número, se não (um pouco de regras aqui)
difícil (142 caracteres)
entrada é delimitada por espaço em branco e termina no EOF
fonte
Groovy
Fácil: 78
Difícil: 151
fonte
PowerShell, rígido, 117
126História:
$null
para uma variável inexistentefonte
Scala
Uma facada rápida - provavelmente há melhorias possíveis.
Fácil: 77
Difícil: 124
fonte
Q, 64 (difícil), 30 (fácil)
Difícil
fácil
fonte
J (fácil), 19 caracteres
Uso:
Variam de maneira semelhante à resposta de DCharness , e eu apenas a adicionaria como comentário, mas pelo fato de ele não ter visitado desde 23 de fevereiro.
2-/\
leva a diferença entre pares sucessivos de números,|
obtém o valor absoluto de cada número,/:~
classifica em ordem crescente,<:
diminui cada número em 1,(=i.@#)
um gancho J que gera a sequência de números de 0 ao comprimento da lista de diferenças - 1 (i.@#
) e a compara com essa lista=
.*/
múltiplos da lista de1
s e0
s gerado pelo verbo anterior.fonte
x-:y
vez de*/x=y
salvar um personagem.Scala easy: 138
153, 170(foi incorreta, melhorou mais tarde)ungolfed:
A idéia é que construamos a segunda derivação:
Scala hard 172
182, 205(foi incorreto / aprimorado):mais ou menos o mesmo que acima.
fonte
4 1 2 5
retorna verdadeira. Ainda não consegui me conformar com isso deixou vezes embora ...readLine
leva entrada do console, e não o stdin ... (mas você pode usarargs
em vez)j("1")
jogaUnsupportedOperationException: empty.max
PHP, fácil, 129
Para uma determinada matriz
$s
de números inteiros:A versão não destruída:
fonte
Geléia ,
76 bytes (fácil)Experimente online!
Recebe entrada como números separados por vírgula no primeiro argumento. Retorna 1 se a sequência for alegre e 0 se não for!
Solução de 7 bytes:
Experimente online!
Recebe entrada como números separados por vírgula no primeiro argumento. Não retorna nada se a lista for uma sequência de jumper alegre e algo se não for.
A adição desta linha faz com que ela funcione com as especificações rígidas:
Geléia ,
2722 bytes (muito, feedback bem-vindo!)Experimente online!
Solução de 27 bytes (difícil):
Experimente online!
Coloca em números separados por espaço
stdin
e gera "Jolly" ou "Not jolly".Explicação:
Qualquer feedback muito apreciado!
fonte
LR
éJ
. Se você escrever algo comoIAṢ⁼J$
você obtém um bom resultado 1/0, e pode usá-lo para indexar em“Not jolly“Jolly”
:ɠḲVIAṢ⁼J$ị“¢⁼D“¡KṀȥƘạ»
⁼
átomo também, útil para comparar apenas partes de listas.Haskell ,
5957 bytesModo fácil, retorna a alegria como um booleano. Obrigado a @Laikoni por dois bytes.
Experimente online!
fonte
Japt ,
3230 bytes Difícil-2 bytes de @Shaggy
Experimente online!
fonte
Python 3, 117 (difícil)
Experimente online!
fonte
JavaScript: 105 (modo fácil)
Golfe:
Sem golfe:
fonte
Perl, 89 (difícil)
86 caracteres de código + 3 para execução com a
-p
opçãofonte
Javascript (difícil): 138
fonte
fonte
R, Fácil, 110
Uso:
fonte
Python, 72 (fácil), 114 (difícil)
Fácil:
Difícil :
fonte
Python, 255 caracteres
fonte
C, 119 (difícil), 97 (fácil)
A solução fácil lê a entrada dos argumentos e retorna um 0 como código de saída se a entrada for uma sequência de jumper alegre:
fonte
APL (
504947, difícil)Fácil (24):
A função pega uma matriz e retorna 0 ou 1.
fonte