Descripción
Resta los siguientes números P de un número N. El siguiente número de N es N + 1.
Mira los ejemplos para entender lo que quiero decir.
Ejemplos:
Input: N=2,P=3
Calculate: n - (n+1) - (n+2) - (n+3) //Ending with 3, because P=3
Calculate: 2 - 2+1 - 2+2 - 2+3 //Replacing N with 2 from Input
Calculate: 2 - 3 - 4 - 5
Output: -10
Input: N=100,P=5
Calculate: n - (n+1) - (n+2) - (n+3) - (n+4) - (n+5)
Calculate: 100- 101 - 102 - 103 - 104 - 105
Output: -415
Input: N=42,P=0
Calculate: n
Calculate: 42
Output: 42
Input: N=0,P=3
Calculate: n - (n+1) - (n+2) - (n+3)
Calculate: 0 - 1 - 2 - 3
Output: -6
Input: N=0,P=0
Calulate: n
Calculate: 0
Output: 0
Entrada:
N : entero, positivo, negativo o 0
P : entero, positivo o 0, no negativo
Salida:
Entero o cadena, 0 inicial permitido, nueva línea final permitida
Reglas:
- Sin lagunas
- Este es el código de golf, por lo que gana el código más corto en bytes
- La entrada y la salida deben ser como se describe
code-golf
math
arithmetic
Paul Schmitz
fuente
fuente
Input: N=0,P=3
ejemplo, su expansión tiene algunos negativos dobles extrañosN * (P-1)
. Esa es prácticamente la definición de trivial .Respuestas:
05AB1E ,
53 bytesGuardado 2 bytes gracias a Adnan
Explicación
Toma P y luego N como entrada.
fuente
Ý+Æ
:).P
va primero)Ý
... pensé que solo existía un rango basado en 1.Python 2,
26 2423 bytes-2 bytes gracias a @Adnan (reemplazar
p*(p+1)/2
conp*-~p/2
)-1 byte gracias a @MartinEnder (reemplazar
-p*-~p/2
con+p*~p/2
Las pruebas están en ideone
fuente
CJam, 8 bytes
Banco de pruebas.
Lástima que la solución de forma cerrada sea más larga. : |
Explicación
fuente
Haskell, 21 bytes
fuente
Javascript (ES6),
201918 bytesGuardado 1 byte al curry, como sugiere Zwei
Guardado 1 byte gracias al usuario 81655
Prueba
fuente
n=>p=>...
y llamando a la función conf(n)(p)
(n,p)=>n-p*(++p/2+n)
También funcionará en C #.n-p*(++p/2+n)
es equivalente an+p*(~p/2-n)
.Jalea , 4 bytes
Pruébalo en línea!
Cómo funciona
fuente
Haskell,
1918 bytesSoluciones anteriores de 19 bytes
fuente
C #,
2120 bytesEditar: guardado un byte gracias a TheLethalCoder
Pruébalo en línea!
Fuente completa, incluidos los casos de prueba:
fuente
N=>P=>
lugar de(N,P)=>
guardar 1 byteMathematica, 15 bytes
Una función sin nombre que recibe
P
yn
como sus parámetros en ese orden.Utiliza la solución de forma cerrada
n - n*p - p(p+1)/2
.fuente
Perl,
2322 bytesIncluye +1 para
-p
Dé nyp (en ese orden) en líneas separadas de STDIN:
subtract.pl
:(usando
''
comillas para guardar los\
invoca una penalización de 2 bytes porque no se puede combinar con-e
)Misma idea y longitud:
Sorprendentemente, hacer el cálculo real es más corto que usar la fórmula directa (estos son
$
realmente perjudiciales para la aritmética)fuente
C ++,
5451 bytes[] (int N, int P) {int F; for (F = N; P; F - = ++ N, P -); return F;}Prueba:
fuente
f;g(n,p){f=n;while(p--)f-=++n;return f;}
usando su algoritmoint
Pyke, 6 bytes
Pruébalo aquí!
fuente
Brachylog ,
1917 bytesExplicación
fuente
MATL , 5 bytes
Las entradas son
P
y luegoN
.¡Pruébalo en MATL Online!
Explicación
fuente
Lote, 30 bytes
Toma
n
yp
como parámetros de línea de comandos e imprime el resultado sin una nueva línea final.fuente
SILOS , 80 bytes
Pruébelo en línea con casos de prueba:
2,3
100,5
42,0
0,3
0,0
fuente
R,
1714 bytesGracias a billywob por jugar al golf 3 bytes. Respuesta anterior:
Tenga en cuenta que 1: 0 se expande al vector (1,0), por lo que necesitamos la condición if (P) (o para usar
seq_len
, pero eso es más bytes). Sin la condición, obtendríamos la salida incorrecta si P = 0.Si P es cero, entonces la suma se expande a
sum(N+NULL)
, entonces asum(numeric(0))
, que es cero.fuente
n-n*p-sum(0:p)
sería más corto de todos modos :)function(N,P){...}
oN=scan();P=scan();...
PHP, 33 bytes
fuente
<?php
o abreviar<?
PHP-Code. Por favor edite su respuesta.Jalea , 7 bytes
Los argumentos son Pruébelo
P, N
en TryItOnline
¿Cómo?
fuente
Pyth - 6 bytes
Test Suite .
fuente
Adelante, 36 bytes
Cálculo simple de
n - (p*n + (p^2+p) / 2)
Pruébalo en línea
fuente
Java,
67, 63 bytesGolfizado:
Sin golf:
Básicamente hice algo de matemática en la fórmula. La
n - p*n
parte se encarga de todon
en la fórmula. Luego usé una propiedad súper divertida de sumar juntos un conjunto de números enteros que aumentan linealmente (series aritméticas): utilicé la suma del primer y último número entero y luego lo multipliqué porset.length / 2
(también verifico la paridad y la manejo adecuadamente).Pruébelo: https://ideone.com/DEd85A
fuente
int n,int p
para guardar un byte. Además, puede cambiarp%2==0
ap%2<1
para guardar otro byte. - No sabía que ya había publicado una respuesta Java cuando publiqué mi variante más corta con for-loop . Sin embargo, me gusta tu fórmula matemática, así que +1 de mi parte. :)p%2>0
y cambiando el orden en el ternario puede guardar un carácter.p/2 *(p+2)
es igual ap*p/2+p
Java 7,
4340 bytesJava 8, 19 bytes
Descaradamente robado de la increíble fórmula Python 2 de @JonathanAllan .
Respuesta original (
6160 bytes):Sin golf y casos de prueba:
Pruébalo aquí
Salida:
fuente
int c(int n,int p){...}
. Si hubiera sido Java 8 (o 9) podría haber sido(n,p)->n-p*n+p*~p/2
( 19 bytes )Fourier , 34 bytes
Pruébalo en línea!
fuente
Laberinto , 15 bytes
o
Utiliza la solución de forma cerrada
n - n*P - P*(P+1)/2
.fuente
php, 38 bytes
fuente
Pyth, 11 bytes
Una función
g
que toma entrada den
yp
vía argumento e imprime el resultado. Se puede llamar en el formulariogn p
.Pruébalo en línea
Cómo funciona
fuente
C89,
38,35, 33 bytesPruébalo en Coliru .
fuente
Arce, 19 bytes
Uso:
fuente
Perl 6 , 21 bytes
Explicación:
fuente