Datenstruktur korrigiert und vereinfacht.

This commit is contained in:
Jim Martens 2013-11-21 14:07:22 +01:00
parent 5d3323e75e
commit 2b4c538135
1 changed files with 92 additions and 118 deletions

View File

@ -13,131 +13,105 @@ Abgebende: Jim 2martens, Britta 2noack, Jan-Simon 0giesel
; Die Rückgabe einer Liste mit dem Buchstaben an erster Stelle und einer
; Liste als zweitem Element, die wiederum den Schlüssel an erster Stelle
; enthält, erlaubt ein einfaches Auswerten der Zuordnung.
(define (daten char)
(case (char->integer char)
([65] (list char 'Alfa))
([66] (list char 'Bravo))
([67] (list char 'Charlie))
([68] (list char 'Delta))
([69] (list char 'Echo))
([70] (list char 'Foxtrott))
([71] (list char 'Golf))
([72] (list char 'Hotel))
([73] (list char 'India))
([74] (list char 'Juliett))
([75] (list char 'Kilo))
([76] (list char 'Lima))
([77] (list char 'Mike))
([78] (list char 'November))
([79] (list char 'Oscar))
([80] (list char 'Papa))
([81] (list char 'Quebec))
([82] (list char 'Romeo))
([83] (list char 'Sierra))
([84] (list char 'Tango))
([85] (list char 'Uniform))
([86] (list char 'Viktor))
([87] (list char 'Whiskey))
([88] (list char 'X-ray))
([89] (list char 'Yankee))
([90] (list char 'Zulu))
([48] (list char 'Nadazero))
([49] (list char 'Unaone))
([50] (list char 'Bissotwo))
([51] (list char 'Terrathree))
([52] (list char 'Kartefour))
([53] (list char 'Pantafive))
([54] (list char 'Sosisix))
([55] (list char 'Setteseven))
([56] (list char 'Oktoeight))
([57] (list char 'Novenine))
([44] (list char 'Decimal))
([46] (list char 'Stop))
)
)
(define buchstabiertafel
'((#\A . Alfa)
(#\B . Bravo)
(#\C . Charlie)
(#\D . Delta)
(#\E . Echo)
(#\F . Foxtrott)
(#\G . Golf)
(#\H . Hotel)
(#\I . India)
(#\J . Juliett)
(#\K . Kilo)
(#\L . Lima)
(#\M . Mike)
(#\N . November)
(#\O . Oscar)
(#\P . Papa)
(#\Q . Quebec)
(#\R . Romeo)
(#\S . Sierra)
(#\T . Tango)
(#\U . Uniform)
(#\V . Viktor)
(#\W . Whiskey)
(#\X . X-ray)
(#\Y . Yankee)
(#\Z . Zulu)
(#\0 . Nadazero)
(#\1 . Unaone)
(#\2 . Bissotwo)
(#\3 . Terrathree)
(#\4 . Kartefour)
(#\5 . Pantafive)
(#\6 . Sosisix)
(#\7 . Setteseven)
(#\8 . Oktoeight)
(#\9 . Novenine)
(#\, . Decimal)
(#\. . Stop)
))
; 1.2
(define (char->schlüssel char)
(car (cdr (daten char))))
(define (char->schlüssel char tafel)
(cdr (assoc (char->upper char) tafel)))
; 1.3
(define char_to_upperCase (λ (myChar)
; x als ASCII Wert für myChar definieren
(define x (char->integer myChar))
; y als x-32 definieren
(define y (- x 32))
; wenn x < 91 (bereits upperCase) myChar direkt zurückgeben
(if (< x 91)
; wenn myChar bereits upperCase ist, direkt zurückgeben
myChar
; andernfalls wird y zurückgegeben
(when (> x 96)
; y stellt den gleichen Buchstaben wie x dar, bloß in upperCase
; daher wird y zurückgegeben
(integer->char y)))))
(define (char->upper char)
(let ([charInt (char->integer char)])
(cond ([<= 96 charInt 122] (integer->char (- charInt 32)))
([<= 65 charInt 90] (integer->char charInt))
(else char))))
; 1.4
(define (buchstabiere text)
(let ([xs (string->list text)])
(if [empty? xs]
'()
(cons (char->schlüssel (char_to_upperCase(car xs))) (buchstabiere (list->string (cdr xs))))
)
))
(define (buchstabiere text tafel)
(letrec ((rec (λ (xs)
(if (null? xs)
null
(cons (char->schlüssel (car xs) tafel)
(rec (cdr xs)))))))
(rec (string->list text))))
(require se3-bib/flaggen-module)
; 2.1
; Analoger Entwurf wie bei 1.1, diesmal mit den Flaggen.
(define (flaggenData char)
(case (char->integer char)
([65] (list char A))
([66] (list char B))
([67] (list char C))
([68] (list char D))
([69] (list char E))
([70] (list char F))
([71] (list char G))
([72] (list char H))
([73] (list char I))
([74] (list char J))
([75] (list char K))
([76] (list char L))
([77] (list char M))
([78] (list char N))
([79] (list char O))
([80] (list char P))
([81] (list char Q))
([82] (list char R))
([83] (list char S))
([84] (list char T))
([85] (list char U))
([86] (list char V))
([87] (list char W))
([88] (list char X))
([89] (list char Y))
([90] (list char Z))
([48] (list char Z0))
([49] (list char Z1))
([50] (list char Z2))
([51] (list char Z3))
([52] (list char Z4))
([53] (list char Z5))
([54] (list char Z6))
([55] (list char Z7))
([56] (list char Z8))
([57] (list char Z9))
)
)
; 2.2
(define (char->flagge char)
(car (cdr (flaggenData char))))
; 2.3
(define (buchstabiereFlagge text)
(let ([xs (string->list text)])
(if [empty? xs]
'()
(cons (char->flagge (char_to_upperCase(car xs))) (buchstabiereFlagge (list->string (cdr xs))))
)
(define flaggentafel
`((#\A . ,A)
(#\B . ,B)
(#\C . ,C)
(#\D . ,D)
(#\E . ,E)
(#\F . ,F)
(#\G . ,G)
(#\H . ,H)
(#\I . ,I)
(#\J . ,J)
(#\K . ,K)
(#\L . ,L)
(#\M . ,M)
(#\N . ,N)
(#\O . ,O)
(#\P . ,P)
(#\Q . ,Q)
(#\R . ,R)
(#\S . ,S)
(#\T . ,T)
(#\U . ,U)
(#\V . ,V)
(#\W . ,W)
(#\X . ,X)
(#\Y . ,Y)
(#\Z . ,Z)
(#\0 . ,Z0)
(#\1 . ,Z1)
(#\2 . ,Z2)
(#\3 . ,Z3)
(#\4 . ,Z4)
(#\5 . ,Z5)
(#\6 . ,Z6)
(#\7 . ,Z7)
(#\8 . ,Z8)
(#\9 . ,Z9)
))