Seite 2 von 2

Verfasst: Sonntag 31. August 2008, 09:14
von audax
in meiner Lösung tu ich das. Ich benutz auch wirklich nur Generatoren :o

Verfasst: Sonntag 31. August 2008, 09:33
von Darii
Ja ist klar yipyip tut das ja auch, ist aber noch lange kein Grund yield zu verschmähen.

Verfasst: Sonntag 31. August 2008, 09:43
von EyDu
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

Verfasst: Sonntag 31. August 2008, 11:38
von audax
Darii hat geschrieben:Ja ist klar yipyip tut das ja auch, ist aber noch lange kein Grund yield zu verschmähen.
Du baust allerdings nur xrange nach :o

@Ey:
Endlich mal ein ordentlicher Ansatz ;)

Verfasst: Sonntag 31. August 2008, 11:47
von name
Hier hätten wir mal die Lösung in Haskell. Wobei 150 die Zahl ist und 5 die Wiederholungen.

Code: Alles auswählen

sum (take 5 [150..])
Bzw als Funktion:

Code: Alles auswählen

foo x y = sum (take x [y..])
In Python hätt ichs so gemacht:

Code: Alles auswählen

x, y = (150, 5)
sum(xrange(x, x+y))

Verfasst: Sonntag 31. August 2008, 12:16
von BlackJack
In Io:

Code: Alles auswählen

foo := method(x, y, x to(x + y - 1) asList sum)

Verfasst: Sonntag 31. August 2008, 15:26
von yipyip
In Prolog:

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.
:wink:
yipyip

Verfasst: Sonntag 31. August 2008, 16:28
von BlackJack
Da füge ich mal noch Scheme hinzu:

Code: Alles auswählen

(define (foo a b) (if (= b 0) 0 (+ a (foo (+ a 1) (- b 1)))))
Edit: Assembler (NASM-Format):

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
Edit2: Assemblerquelltext durch Variante ohne Schleife ersetzt.