258 lines
8.2 KiB
Plaintext
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
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|