individuelle Zahl x mal erneut um 1 erhöhen
Man kann das Problem natürlich auch geometrisch auffassen:
Code: Alles auswählen
a = int(raw_input("Vorhanden: "))
n = int(raw_input("Benoetigt: "))
print n*(2*a+n-1)/2
Hier hätten wir mal die Lösung in Haskell. Wobei 150 die Zahl ist und 5 die Wiederholungen.
Bzw als Funktion:
In Python hätt ichs so gemacht:
Code: Alles auswählen
sum (take 5 [150..])
Code: Alles auswählen
foo x y = sum (take x [y..])
Code: Alles auswählen
x, y = (150, 5)
sum(xrange(x, x+y))
Zuletzt geändert von name am Sonntag 31. August 2008, 12:30, insgesamt 2-mal geändert.
Ohloh | Mein Blog | Jabber: segfaulthunter@swissjabber.eu | asynchia – asynchrone Netzwerkbibliothek
In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.
In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.
In Prolog:
yipyip
Code: Alles auswählen
adder_acc(A, 0, 0).
adder_acc(A, N, A+M+REST) :-
N > 0,
M is N-1,
adder_acc(A, M, REST).
adder(A, N, RESULT) :-
adder_acc(A, N, M),
RESULT is M.
yipyip
Da füge ich mal noch Scheme hinzu:
Edit: Assembler (NASM-Format):
Edit2: Assemblerquelltext durch Variante ohne Schleife ersetzt.
Code: Alles auswählen
(define (foo a b) (if (= b 0) 0 (+ a (foo (+ a 1) (- b 1)))))
Code: Alles auswählen
; extern unsigned int foo(unsigned int a, int b);
global foo
foo:
mov eax, [esp+4]
shl eax, 1
dec eax
mov ebx, [esp+8]
add eax, ebx
mul ebx
shr eax, 1
.return:
ret