Tarefa
Dado dois inteiros positivos (divid e nd e divis de o r), calcular o q uotient e o r emainder.
Normalmente, seria calculado como e = o*q+r
onde q*o<=e
e 0<=r<o
.
Para este desafio ainda, e = o*q+r
mas q*o>=e
e -o<r<=0
.
Por exemplo e=20
e o=3
, normalmente 20/3 -> 20=3*6+2
, desde 18<=20
e 0<=2<3
. Aqui será 20/3 -> 20=3*7-1
onde 21>=20
e-3<-1<=0
Casos de teste
Input -> Output
20, 3 -> 7, -1
10, 5 -> 2, 0
7, 20 -> 1, -13
100, 13 -> 8, -4
Você não precisa lidar o=0
.
r
como negação do realr
para idiomas que usam bytes não assinados para armazenar dados ou assumir transbordamento? (-1
→1
/255
)Respostas:
Python 3 ,
3926 bytesMartin Ender salvou 13 bytes
Experimente online!
Python 2 , 25 bytes
Experimente online!
fonte
x%-y
para obter o restante.(-(x//-y),x%-y)
Geléia , 3 bytes
Experimente online!
Como funciona
Abusando do divmod novamente \ o /. Olha ma 'nenhum unicode!
fonte
Haskell , 25 bytes
Experimente online!
fonte
Mathematica, 21 bytes
Experimente online!
fonte
⌈#/#2⌉
calcula o teto de sua divisão e o armazena em uma variávels
e, em seguida, subtrai o argumento 2 * s do argumento 1.05AB1E , 4 bytes
Experimente online!
5 bytes
Experimente online!
Como eles trabalham
Abusa do módulo do Python! \ o /
fonte
J
não é? Nunca vi isso antes. Definitivamente poderia ser útil.J
antes: P5)6
dá['5']6
:) #Alice , 15 bytes
Experimente online!
Explicação
A divisão inteira e o módulo de Ruby (nos quais Alice é implementada) são definidos de tal forma que o uso de um divisor negativo já faz o que queremos. Se negamos o divisor, obtemos automaticamente o módulo correto e menos o quociente que queremos. Portanto, a maneira mais fácil de resolver isso é negando vários números:
fonte
Pari / GP , 18 bytes
Experimente online!
fonte
Julia , 18 bytes
Experimente online!
.-
é uma negação sábia do elemento efldmod
retorna uma tupla feita com os resultados da divisão no piso e resíduo correspondente.fonte
MATL ,
54 bytesExperimente online!
-1 byte graças a Luis Mendo
fonte
J , 16 bytes
Esta é essencialmente a solução Mathematica de Jenny_mathy, reescrita em J.
Como funciona:
a=.>.@%
Encontra o teto da divisão dos argumentos esquerdo e direito e o armazena na variável a,~
concatenado para (invertido)([-]*a)
subtrai um argumento * direito do argumento esquerdoExperimente online!
fonte
R ,
3129 bytes-2 bytes graças a Giuseppe
Experimente online!
fonte
-c(e%/%-o,-e%%o)
Lisp comum, 7 bytes
A função
ceiling
interna retorna dois valores: o teto do quociente e o restante para corresponder:fonte
JavaScript (ES6),
3731292725 bytesGuardado 2 bytes graças a @Rod
Economizou 2 bytes graças a @ETHproductions
Recebe entrada na sintaxe de currying. Retorna [q, r] .
Casos de teste
Mostrar snippet de código
fonte
q=(a+b-1)/b+|0
vez dissoq=a/b+.9|0
Perl 5 , 30 + 1 (
-p
) = 31 bytesExperimente online!
fonte
4 ,
5550 bytesExperimente online!
Representa o lembrete por sua negação (em
10
vez de-10
), pois o idioma usa entrada e saída de bytes, considerada válida pelo comentário do OP.fonte
Comentador , 90 bytes
Experimente online!
Gera o restante e, em seguida, o quociente, nova linha separada.
fonte
C (gcc) , 43 bytes
Uso
Experimente online!
fonte
Java (OpenJDK 8) , 30 bytes
Experimente online!
fonte
Adicione ++ , 35 bytes
Experimente online!
fonte
C (gcc) 41 bytes
Isso pode ser trapaça, usando duas funções e pode falhar em outros testes?
Experimente online
fonte
Rápido , 47 bytes
fonte
SNOBOL4 (CSNOBOL4) ,
124123105 bytesExperimente online!
Recebe a entrada como
E
, entãoO
, separada por uma nova linha e imprimeQ
, entãoR
, separada por uma nova linha.fonte
TXR: 8 bytes
Função incorporada
ceil-rem
. Por exemplo,(ceil-rem 20 7)
rendimentos(7 -1)
.fonte
Limpo , 42 bytes
Experimente online!
fonte
Deorst , 23 bytes
Experimente online!
Como funciona
fonte