diff --git a/se3/G08_B03_Jim-2martens_Britta-2noack_Jan-Simon-0giesel.rkt b/se3/G08_B03_Jim-2martens_Britta-2noack_Jan-Simon-0giesel.rkt index c8606b3..bb9f150 100644 --- a/se3/G08_B03_Jim-2martens_Britta-2noack_Jan-Simon-0giesel.rkt +++ b/se3/G08_B03_Jim-2martens_Britta-2noack_Jan-Simon-0giesel.rkt @@ -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) )) \ No newline at end of file