Aufsummieren mal anders

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Wirklich elegant lässt sich sowas doch nur in Opal implementieren:

Sum.sign

Code: Alles auswählen

SIGNATURE Sum

IMPORT Nat ONLY nat
       Seq ONLY seq


FUN sum : seq[nat] -> nat
Sum.impl

Code: Alles auswählen

IMPLEMENTATION Sum

IMPORT Nat COMPLETELY
       Seq COMPLETELY
       SeqReduce COMPLETELY


DEF sum(ns) == (+, 0) \ ns
BlackJack

Iterativ in 6510-Assembler:

Code: Alles auswählen

!zone
; In:   A = n
; Out:  A/X = sum from 1 to n
;       Y = 0
; Uses: A, X, Y, r1
sum:
        ldx #0
        tay
        cpy #0
        beq .exit
        stx r1
-
        clc
        tya
        adc r1
        sta r1
        bcc +
        inx
+
        dey
        bne -

        lda r1
.exit:
        rts
Antworten