college/ss2012/AlgoAnim/Teil 2/aufgabe2_2.asu
2012-05-07 14:53:55 +02:00

258 lines
8.2 KiB
Plaintext

%Animal 2.3
title "Russische Bauernmultiplikation"
author "Michael Scholz, Ulf Gebhardt"
{
text "header" "Russische Bauernmultiplikation" at (20, 30) font SansSerif size 24 bold
text "straight" "Das hier vorgestellte Verfahren eignet sich für die Multiplikation zweier ganzer Zahlen." at (20, 85) font SansSerif size 18 italic
text "straight" "Die Funktionsweise lässt sich in die folgenden fünf Schritte gliedern:" at (20, 150) font SansSerif size 18
text "straight" "1. Schreibe die beiden zu multiplizierenden Zahlen nebeneinander." at (20, 180) font SansSerif size 18
text "straight" "2. Die linke Zahl wird halbiert (Reste werden abgerundet), die rechte Zahl wird verdoppelt." at (20, 205) font SansSerif size 18
text "straight" "Die beiden berechneten Zahlen werden in die darauffolgende Zeile geschrieben." at (43, 230) font SansSerif size 18
text "straight" "3. Schritt 2 wird solange wiederholt, bis in der linken Spalte eine 1 steht." at (20, 255) font SansSerif size 18
text "straight" "4. Nun streicht man alle Zeilen, in denen die linke Zahl gerade ist." at (20, 280) font SansSerif size 18
text "straight" "5. Schlussendlich werden alle übrigen Zahlen der rechten Spalte addiert." at (20, 305) font SansSerif size 18
}
{
hideAll
text "header" "Russische Bauernmultiplikation" at (20, 30) font SansSerif size 24 bold
codeGroup "code" at (10, 147) color black highlightColor red
addCodeLine "public int russe(int a, int b){" to "code"
addCodeLine "\t \t if(a == 1){" to "code"
addCodeLine "\t \t \t \t return b; " to "code"
addCodeLine "\t \t }" to "code"
addCodeLine "\t \t if(a % 2 == 1){" to "code"
addCodeLine "\t \t \t \t return b + russe(a/2, b*2);" to "code"
addCodeLine "\t \t }else{" to "code"
addCodeLine "\t \t \t \t return russe(a/2, b*2);" to "code"
addCodeLine "\t \t }" to "code"
addCodeLine "}" to "code"
}
{
grid "tb1" (270, 100 ) lines 6 columns 3 style table cellWidth 100
setGridColor "tb1 [] []" fillColor white
# setGridColor "tb1 [] []" highlightBackColor red // doesn't work
setGridValue "tb1 [ 0 ] [ 0 ]" "A-Seite"
setGridValue "tb1 [ 0 ] [ 1 ]" "B-Seite"
setGridValue "tb1 [ 0 ] [ 2 ]" "addieren"
setGridValue "tb1 [ 1 ] [ 0 ]" "27"
setGridValue "tb1 [ 1 ] [ 1 ]" "82"
grid "tb2" (270, 280) lines 7 columns 1 style table cellWidth 200
setGridColor "tb2 [] []" fillColor white
# setGridColor "tb2 [] []" highlightBackColor red // doesn't work
setGridValue "tb2 [ 0 ] [ 0 ]" "Summe"
}
{
highlightCode on "code" line 0
}
{
unhighlightCode on "code" line 0
highlightCode on "code" line 1
}
{
unhighlightCode on "code" line 1
highlightCode on "code" line 4
}
{
unhighlightCode on "code" line 4
highlightCode on "code" line 5
highlightGridCell "tb1 [ 1 ] [ 2 ]" within 100ms
highlightGridCell "tb2 [ 1 ] [ 0 ]" within 100ms
setGridValue "tb1 [ 1 ] [ 2 ]" "Ja"
setGridValue "tb2 [ 1 ] [ 0 ]" "82"
}
{
unhighlightCode on "code" line 5
highlightCode on "code" line 0
unhighlightGridCell "tb1 [ 1 ] [ 2 ]"
unhighlightGridCell "tb2 [ 1 ] [ 0 ]"
highlightGridCell "tb1 [ 2 ] [ 0 ]" within 100ms
highlightGridCell "tb1 [ 2 ] [ 1 ]" within 100ms
setGridValue "tb1 [ 2 ] [ 0 ]" "13"
setGridValue "tb1 [ 2 ] [ 1 ]" "164"
}
{
unhighlightGridCell "tb1 [ 2 ] [ 0 ]"
unhighlightGridCell "tb1 [ 2 ] [ 1 ]"
unhighlightCode on "code" line 0
highlightCode on "code" line 1
}
{
unhighlightCode on "code" line 1
highlightCode on "code" line 4
}
{
unhighlightCode on "code" line 4
highlightCode on "code" line 5
highlightGridCell "tb1 [ 2 ] [ 2 ]" within 100ms
highlightGridCell "tb2 [ 2 ] [ 0 ]" within 100ms
setGridValue "tb1 [ 2 ] [ 2 ]" "Ja"
setGridValue "tb2 [ 2 ] [ 0 ]" "82+164"
}
{
unhighlightCode on "code" line 5
highlightCode on "code" line 0
unhighlightGridCell "tb1 [ 2 ] [ 2 ]"
unhighlightGridCell "tb2 [ 2 ] [ 0 ]"
highlightGridCell "tb1 [ 3 ] [ 0 ]" within 100ms
highlightGridCell "tb1 [ 3 ] [ 1 ]" within 100ms
setGridValue "tb1 [ 3 ] [ 0 ]" "6"
setGridValue "tb1 [ 3 ] [ 1 ]" "328"
}
{
unhighlightGridCell "tb1 [ 3 ] [ 0 ]"
unhighlightGridCell "tb1 [ 3 ] [ 1 ]"
unhighlightCode on "code" line 0
highlightCode on "code" line 1
}
{
unhighlightCode on "code" line 1
highlightCode on "code" line 4
}
{
unhighlightCode on "code" line 4
highlightCode on "code" line 7
highlightGridCell "tb1 [ 3 ] [ 2 ]" within 100ms
setGridValue "tb1 [ 3 ] [ 2 ]" "Nein"
setGridValue "tb2 [ 3 ] [ 0 ]" "82+164"
}
{
unhighlightCode on "code" line 7
highlightCode on "code" line 0
unhighlightGridCell "tb1 [ 3 ] [ 2 ]"
unhighlightGridCell "tb2 [ 3 ] [ 0 ]"
highlightGridCell "tb1 [ 4 ] [ 0 ]" within 100ms
highlightGridCell "tb1 [ 4 ] [ 1 ]" within 100ms
setGridValue "tb1 [ 4 ] [ 0 ]" "3"
setGridValue "tb1 [ 4 ] [ 1 ]" "656"
}
{
unhighlightGridCell "tb1 [ 4 ] [ 0 ]"
unhighlightGridCell "tb1 [ 4 ] [ 1 ]"
unhighlightCode on "code" line 0
highlightCode on "code" line 1
}
{
unhighlightCode on "code" line 1
highlightCode on "code" line 4
}
{
unhighlightCode on "code" line 4
highlightCode on "code" line 5
highlightGridCell "tb1 [ 4 ] [ 2 ]" within 100ms
highlightGridCell "tb2 [ 4 ] [ 0 ]" within 100ms
setGridValue "tb1 [ 4 ] [ 2 ]" "Ja"
setGridValue "tb2 [ 4 ] [ 0 ]" "82+164+656"
}
{
unhighlightCode on "code" line 5
highlightCode on "code" line 0
unhighlightGridCell "tb1 [ 4 ] [ 2 ]"
unhighlightGridCell "tb2 [ 4 ] [ 0 ]"
highlightGridCell "tb1 [ 5 ] [ 0 ]" within 100ms
highlightGridCell "tb1 [ 5 ] [ 1 ]" within 100ms
setGridValue "tb1 [ 5 ] [ 0 ]" "1"
setGridValue "tb1 [ 5 ] [ 1 ]" "1312"
}
{
unhighlightGridCell "tb1 [ 5 ] [ 0 ]"
unhighlightGridCell "tb1 [ 5 ] [ 1 ]"
unhighlightCode on "code" line 0
highlightCode on "code" line 1
}
{
unhighlightCode on "code" line 1
highlightCode on "code" line 2
}
{
highlightCode on "code" line 2
highlightGridCell "tb1 [ 5 ] [ 2 ]" within 100ms
highlightGridCell "tb2 [ 5 ] [ 0 ]" within 100ms
setGridValue "tb1 [ 5 ] [ 2 ]" "Ja"
setGridValue "tb2 [ 5 ] [ 0 ]" "82+164+656+1312"
}
{
unhighlightGridCell "tb1 [ 5 ] [ 2 ]"
unhighlightGridCell "tb2 [ 5 ] [ 0 ]"
highlightGridCell "tb2 [ 6 ] [ 0 ]" within 100ms
setGridValue "tb2 [ 6 ] [ 0 ]" "82+164+656+1312"
}
{
unhighlightCode on "code" line 2
highlightCode on "code" line 5
unhighlightGridCell "tb2 [ 6 ] [ 0 ]"
highlightGridCell "tb2 [ 6 ] [ 0 ]" within 100ms
setGridValue "tb2 [ 6 ] [ 0 ]" "82+164+1968"
}
{
unhighlightGridCell "tb2 [ 6 ] [ 0 ]"
unhighlightCode on "code" line 5
highlightCode on "code" line 7
}
{
unhighlightCode on "code" line 7
highlightCode on "code" line 5
unhighlightGridCell "tb2 [ 6 ] [ 0 ]"
highlightGridCell "tb2 [ 6 ] [ 0 ]" within 100ms
setGridValue "tb2 [ 6 ] [ 0 ]" "82+2132"
}
{
# setGridColor "tb2 [] []" highlightBackColor red // doesn't work
unhighlightGridCell "tb2 [ 6 ] [ 0 ]"
highlightGridCell "tb2 [ 6 ] [ 0 ]" within 100ms
setGridValue "tb2 [ 6 ] [ 0 ]" "2214"
text "straight" "Ergebnis:" at (190, 422) font SansSerif size 15 bold
}
{
hideAll
hide "tb1"
hide "tb2"
text "header" "Russische Bauernmultiplikation" at (20, 30) font SansSerif size 24 bold
text "straight" "Erklärung:" at (20, 85) font SansSerif size 18 bold \br
text "straight" "Die Idee des Verfahrens kann man mit Hilfe des Dualsystems verdeutlichen." at (20, 115) font SansSerif size 18
text "straight" "Hierbei wird eine Zahl in ihre Zweierpotenzen zerlegt." at (20, 140) font SansSerif size 18
#text "straight" "0" at (204, 153) font SansSerif size 10
text "test" "82 * 27 \t = 82 * (2^0 + 2^1 + 0 * 2^2 + 2^3 + 2^4 )" at (43, 172) font SansSerif size 18
# text "straight" "0" offset (30, 0) from "test" NW font SansSerif size 10
#text "straight" "1" at (242, 162) font SansSerif size 10
#text "straight" "2" at (312, 162) font SansSerif size 10
#text "straight" "3" at (350, 162) font SansSerif size 10
#text "straight" "4" at (385, 162) font SansSerif size 10
#text "straight" "0" at (200, 180) font SansSerif size 10
#text "straight" "1" at (282, 189) font SansSerif size 10
#text "straight" "3" at (441, 189) font SansSerif size 10
#text "straight" "4" at (520, 189) font SansSerif size 10
text "straight" "\t \t \t \t \t \t \t \t \t = 82 * 2^0 + 82 * 2^1 + 82 * 0 + 82 * 2^3 + 82 * 2^4" at (20, 200) font SansSerif size 18
text "straight" "\t \t \t \t \t \t \t \t \t = 82 + 164 + 0 + 656 + 1312" at (20, 221) font SansSerif size 18
text "straight" "\t \t \t \t \t \t \t \t \t = 2214" at (20, 246) font SansSerif size 18 bold
}