Beschreibung
Subtrahieren Sie die nächsten P-Zahlen von einer N-Zahl. Die nächste Zahl von N ist N + 1.
Schauen Sie sich die Beispiele an, um zu verstehen, was ich meine.
Beispiele:
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
Eingang:
N : Ganzzahlig, positiv, negativ oder 0
P : Ganzzahl, positiv oder 0, nicht negativ
Ausgabe:
Ganzzahl oder Zeichenfolge, führende 0 zulässig, nachfolgende Newline zulässig
Regeln:
- Keine Lücken
- Das ist Code-Golf, also gewinnt der kürzeste Code in Bytes
- Ein- und Ausgang müssen wie beschrieben sein
code-golf
math
arithmetic
Paul Schmitz
quelle
quelle
Input: N=0,P=3
Beispiel hat Ihre Erweiterung einige irrelevante Doppel-NegativeN * (P-1)
. Das ist quasi die Definition von Trivialität .Antworten:
05AB1E ,
53 Bytes2 Bytes gespart dank Adnan
Erläuterung
Nimmt P und dann N als Eingabe.
quelle
Ý+Æ
:).P
geht zuerst)Ý
... Ich dachte, es gibt nur 1-basierten Bereich.Python 2,
26 2423 Bytes-2 Bytes dank @Adnan (ersetzen
p*(p+1)/2
durchp*-~p/2
)-1 Bytes dank @MartinEnder (ersetzen
-p*-~p/2
durch+p*~p/2
Tests sind auf ideone
quelle
CJam, 8 Bytes
Testsuite.
Schade, dass die geschlossene Lösung länger ist. : |
Erläuterung
quelle
Haskell, 21 Bytes
quelle
Javascript (ES6),
201918 Bytes1 Byte durch Currying gespeichert, wie von Zwei vorgeschlagen
1 Byte dank user81655 gespeichert
Prüfung
quelle
n=>p=>...
und Aufruf der Funktion mitf(n)(p)
(n,p)=>n-p*(++p/2+n)
funktioniert auch in C #.n-p*(++p/2+n)
ist äquivalent zun+p*(~p/2-n)
.Gelee , 4 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
Haskell,
1918 BytesVorherige 19-Byte-Lösungen
quelle
C #,
21 -20 BytesBearbeiten: Dank TheLethalCoder ein Byte gespeichert
Probieren Sie es online!
Vollständige Quelle, einschließlich Testfällen:
quelle
N=>P=>
anstelle von(N,P)=>
1 Byte zu speichernMathematica, 15 Bytes
Eine unbenannte Funktion, die
P
undn
als Parameter in dieser Reihenfolge empfängt .Verwendet die geschlossene Lösung
n - n*p - p(p+1)/2
.quelle
Perl,
2322 BytesBeinhaltet +1 für
-p
Geben Sie n und p (in dieser Reihenfolge) in separaten Zeilen von STDIN an:
subtract.pl
:(Verwenden von
''
Anführungszeichen zum Speichern von\
Aufrufen mit einer 2-Byte-Strafe, da diese nicht mit kombiniert werden kann.-e
)Gleiche Idee und Länge:
Überraschenderweise ist die eigentliche Berechnung kürzer als die Verwendung der direkten Formel (dies ist
$
für die Arithmetik wirklich schmerzhaft).quelle
C ++,
5451 Bytes[] (int N, int P) {int F; für (F = N; P; F - = ++ N, P -); Rückgabe F;}Prüfung:
quelle
f;g(n,p){f=n;while(p--)f-=++n;return f;}
mit Ihrem Algorithmusint
Pyke, 6 Bytes
Probieren Sie es hier aus!
quelle
Brachylog ,
1917 BytesErläuterung
quelle
MATL , 5 Bytes
Eingänge sind
P
und dannN
.Probieren Sie es bei MATL Online!
Erläuterung
quelle
Batch, 30 Bytes
Übernimmt
n
undp
als Kommandozeilenparameter und druckt das Ergebnis ohne nachfolgende Newline.quelle
SILOS , 80 Bytes
Probieren Sie es online mit Testfällen:
2,3
100,5
42,0
0,3
0,0
quelle
R,
17-14BytesVielen Dank an billywob für die 3 Bytes. Vorherige Antwort:
Beachten Sie, dass 1: 0 zum Vektor (1,0) expandiert, sodass wir die if (P) -Bedingung benötigen (oder verwenden müssen
seq_len
, aber das sind mehr Bytes). Ohne die Bedingung würden wir die falsche Ausgabe erhalten, wenn P = 0 ist.Wenn P Null ist, dann expandiert die Summe zu
sum(N+NULL)
, dann zusum(numeric(0))
, was Null ist.quelle
n-n*p-sum(0:p)
wäre die Verwendung kürzer :)function(N,P){...}
oderN=scan();P=scan();...
PHP, 33 Bytes
quelle
<?php
oder kurz<?
für PHP-Code verwenden. Bitte bearbeiten Sie Ihre Antwort.Gelee , 7 Bytes
Argumente sind
P, N
Testen Sie es auf TryItOnline
Wie?
quelle
Pyth - 6 Bytes
Test Suite .
quelle
Viertens 36 Bytes
Einfache Berechnung von
n - (p*n + (p^2+p) / 2)
Probieren Sie es online aus
quelle
Java,
67, 63 BytesGolf gespielt:
Ungolfed:
Grundsätzlich habe ich ein bisschen nachgerechnet. Das
n - p*n
Teil kümmert sich um das Alln
in der Formel. Dann habe ich eine super lustige Eigenschaft verwendet, um eine linear ansteigende Menge von Ganzzahlen zu summieren (arithmetische Reihe): Ich habe die Summe aus erster und letzter Ganzzahl verwendet und dann mit multipliziertset.length / 2
(ich überprüfe auch die Parität und behandle sie entsprechend).Probieren Sie es aus: https://ideone.com/DEd85A
quelle
int n,int p
, um ein Byte zu speichern. Außerdem können Sie die Änderungp%2==0
aufp%2<1
ein anderes Byte zu speichern. - Ich wusste nicht, dass Sie bereits eine Java-Antwort gepostet hatten, als ich meine kürzere Variante mit for-loop gepostet habe . Ich mag deine mathematische Formel, also +1 von mir. :)p%2>0
und Ändern der Reihenfolge im Ternär können Sie ein Zeichen speichern.p/2 *(p+2)
ist auch gleichp*p/2+p
Java 7,
4340 BytesJava 8, 19 Bytes
Schamlos aus @ JonathanAllans erstaunlicher Python 2-Formel gestohlen .
Ursprüngliche Antwort (
6160 Bytes):Ungolfed & Testfälle:
Probieren Sie es hier aus.
Ausgabe:
quelle
int c(int n,int p){...}
. Wenn es Java 8 (oder 9) gewesen wäre, hätte es(n,p)->n-p*n+p*~p/2
( 19 Bytes ) sein könnenFourier , 34 Bytes
Probieren Sie es online!
quelle
Labyrinth , 15 Bytes
oder
Verwendet die geschlossene Lösung
n - n*P - P*(P+1)/2
.quelle
PHP, 38 Bytes
quelle
Pyth, 11 Bytes
Eine Funktion
g
, die Eingaben vonn
undp
über Argumente entgegennimmt und das Ergebnis ausgibt. Es kann im Formular aufgerufen werdengn p
.Probieren Sie es online aus
Wie es funktioniert
quelle
C89,
38,35, 33 BytesTeste es auf Coliru .
quelle
Ahorn, 19 Bytes
Verwendung:
quelle
Perl 6 , 21 Bytes
Erläuterung:
quelle