Dados dois números inteiros, A e B, a saída A se AB (A menos B) estiver em AB (A a B), caso contrário, a saída B.
"A menos B" é subtração padrão.
"A a B" é o intervalo de números inteiros começando em A e terminando em B, incluindo A e B. Por exemplo:
1 to 4: 1, 2, 3, 4
-2 to 5: -2, -1, 0, 1, 2, 3, 4, 5
3 to -1: 3, 2, 1, 0, -1
7 to 7: 7
O código mais curto em bytes vence.
Casos de teste
A B Output
1 4 4
-2 5 5
3 -1 -1
7 7 7
90 30 90
90 -30 -30
-90 30 30
-90 -30 -90
-2 -2 -2
-2 -1 -2
-2 0 -2
-2 1 1
-2 2 2
-1 -2 -2
-1 -1 -1
-1 0 -1
-1 1 1
-1 2 2
0 -2 -2
0 -1 -1
0 0 0
0 1 1
0 2 2
1 -2 -2
1 -1 -1
1 0 1
1 1 1
1 2 2
2 -2 -2
2 -1 -1
2 0 2
2 1 2
2 2 2
fonte
PHP, 58 bytes
fonte
$b
tarefa não precisa de parênteses.JavaScript (ES6), 24 bytes
Casos de teste
fonte
Python 2, 37 bytes
Invocar como
f(B, A)
.fonte
Python2,
555251 bytesExperimente online!
Lida com todos os casos de teste que o OP mencionou (no momento da publicação), como sugere o TIO.
fonte
JavaScript ES6,
4037 bytesExplicado:
Economizou 3 bytes graças a Arnauld.
fonte
Mathematica, 16 bytes
Função pura, tendo dois argumentos na ordem oposta à OP (por exemplo
If[2#^2>1##,##]&[B,A]
). Uma porta da resposta Python do xnor .fonte
R,
493028 bytesUsa a lógica do @ xnor para determinar se ab está em a: b.
fonte
pryr::f(match(a-b,a:b,b))
Clojure,
7141 bytes-30 bytes usando
<=
emin
/ emmax
vez derange
s.Verifica se
(a - b)
está no intervalo dea
atéb
, despachando um retorno em conformidade.fonte
PHP (7.1), 55 bytes
usa a nova sintaxe de destruição de matriz:
Corra com
-r
, forneça números como argumentos de linha de comando.fonte
PowerShell ,
373532 bytesExperimente online!
Conversão literal do problema no PowerShell usando o
-notin
operador Economizou três bytes usando várias atribuições e encapsulamento. Isso funciona porque-
tem uma precedência de operador mais alta que-notin
e a( )
parte do código é executada primeiro e retornada como uma matriz@($a,$b)
. No entanto, como é$a,$b
mais do que$b,$a
isso, precisamos usar-notin
para virar / flop o resultado da saída.fonte
Lote, 107 bytes
fonte
Pitão - 9 bytes
Esperava usar mais entradas implícitas ... :(
Experimente online aqui .
fonte
Röda , 30 bytes
Experimente online!
Ele usa a fórmula usada na resposta do xnor.
Outra solução (37 bytes):
Experimente online!
fonte
> <> , 21 bytes
Faz uso do truque de @ xnor . Usamos
-v B A
para preencher previamente a pilha. (-v A B
é +1 byte).Experimente online!
Explicação
fonte
Ruby ,
2722 bytesExperimente online!
Nada inovador aqui. A matemática simples por trás disso:
pode ser escrito como
isto é: se A-2B tem o mesmo sinal que B, estamos no intervalo.
fonte
SpecBAS - 38 btes
IIF
é um inline-IF-THEN-ELSE, para imprimir o valor correto.fonte
Haskell, 21 bytes
Experimente online!
Legível
Explicação
Usa a fórmula do @ xnor para verificar se ab está no intervalo. Nada de especial além disso.
fonte
Haskell, 58 bytes
Recentemente, eu me apaixonei por flechas novamente. Infelizmente, eles exigem que trabalhemos com tuplas em vez de funções binárias. E é claro que Haskell não tem uma
range
função simétrica .fonte
PHP 7 - 45 bytes
fonte
Oitava, 55bytes
Provavelmente isso poderia ser otimizado ainda mais. Vou adicionar uma explicação mais tarde.
fonte
Nim, 60 bytes
Experimente online!
Bastante padrão no que diz respeito às respostas, sem grandes truques neste.
fonte
Swift -
38.3022 bytesEconomizou 8 bytes graças a @Matt
Experimente na IBM Swift Sandbox online!
Ou 21 bytes:
(graças à fórmula de @xnor ) e salvou 8 bytes graças a @Matt
O Swift não é o melhor idioma para o golfe (é muito rígido), por isso, se você vir outra oportunidade de golfe, editarei totalmente a resposta.
fonte
Java 7,
846058 bytesJava 8, 37 bytes
Explicação:
Código do teste: Experimente aqui.
fonte
Ti-Basic (TI-84 Plus CE),
26 2423 bytesTI-Basic é uma linguagem tokenizada; todos os tokens usados são de um byte .
Prompt
solicita os dois números.A-B≥A and A-B≤B
verifica se AB está entre A e B (inclusive); isso retorna 1 se verdadeiro e zero se falso, que é armazenado emAns
.Como retornamos A se AB estiver entre A e B, multiplicamos A por Ans, que será A se devemos retornar A e 0 caso contrário.
Em seguida, adicionamos
Bnot(Ans
a isso. Se Ans foi 1 (na verdade),not(
obtemos 0 e obtemos 0, portanto, nossa soma é A. Se Ans foi 0 (falsy),not(
obtemos 1, que multiplicamos por B e adicionamos 0 para obter B.A última avaliação no TI-Basic é retornada implicitamente.
-2 bytes graças a Scott Milner
fonte
Y
e apenas usandoAns
a quarta linha.Pyt , 32 bytes
Toma A e B de stdin como duas entradas separadas
Explicação:
AABB -> ABBA -> ABAB -> ABABB -> ABBBA -> ABBBAA -> ABAABB -> ABABBA -> ABABC -> ABCBA -> ABCAB -> ABC [A, ..., B] -> ABD -> ABDD - > ADDB -> ADBD -> AD {B * (1-D)} -> {B * (1-D)} AD -> {B * (1-D)} + {A * D}
onde: C = BA e D = C∈ [A, ..., B] (1 se verdadeiro, 0 se falso)
fonte
Ohm , 10 bytes (CP437)
Provavelmente existe uma maneira mais eficiente de fazer isso, mas a natureza estritamente tipificada do Ruby torna isso difícil.
fonte
Perl 6 ,
31 2924 bytesTente
Tente
Tente
fonte