Data update
This commit is contained in:
parent
29a5eea0d4
commit
5c1bb7bfa9
2011 changed files with 35081 additions and 3229 deletions
88
Task/Caesar-cipher/Elm/caesar-cipher.elm
Normal file
88
Task/Caesar-cipher/Elm/caesar-cipher.elm
Normal file
|
|
@ -0,0 +1,88 @@
|
|||
module Main exposing (main)
|
||||
|
||||
import Browser
|
||||
import Html exposing (Html, h2, div, p, input, button, text, textarea)
|
||||
import Html.Attributes exposing (style, class, placeholder, value)
|
||||
import Html.Events exposing (onInput, onClick)
|
||||
|
||||
|
||||
-- MAIN
|
||||
|
||||
main =
|
||||
Browser.sandbox { init = init, update = update, view = view }
|
||||
|
||||
|
||||
-- MODEL
|
||||
|
||||
type alias Model =
|
||||
{ codeKey : Int
|
||||
, normtext : String
|
||||
}
|
||||
|
||||
|
||||
init : Model
|
||||
init =
|
||||
{ codeKey = 3
|
||||
, normtext = "" }
|
||||
|
||||
|
||||
-- UPDATE
|
||||
|
||||
type Msg
|
||||
= Change String
|
||||
| DecKey
|
||||
| IncKey
|
||||
|
||||
|
||||
update : Msg -> Model -> Model
|
||||
update msg model =
|
||||
case msg of
|
||||
DecKey ->
|
||||
{ model | codeKey = model.codeKey - 1}
|
||||
IncKey ->
|
||||
{ model | codeKey = model.codeKey + 1}
|
||||
Change newContent ->
|
||||
{ model | normtext = String.toUpper newContent }
|
||||
|
||||
|
||||
|
||||
encodeChar : Int -> Char -> Char
|
||||
encodeChar codeKey character =
|
||||
if Char.isUpper character then
|
||||
Char.fromCode (modBy 26 (Char.toCode character - 65 + codeKey) + 65)
|
||||
|
||||
else if Char.isLower character then
|
||||
Char.fromCode (modBy 26 (Char.toCode (Char.toUpper character) - 65 + codeKey) + 65)
|
||||
|
||||
else
|
||||
character
|
||||
|
||||
|
||||
encodeText : Int -> String -> String
|
||||
encodeText codeKey normtext =
|
||||
String.map (encodeChar codeKey) normtext
|
||||
|
||||
|
||||
subheads aKey =
|
||||
if aKey > 0 then "Original"
|
||||
else if aKey < 0 then "Encrypted text"
|
||||
else "?"
|
||||
|
||||
-- VIEW
|
||||
|
||||
view : Model -> Html Msg
|
||||
view model =
|
||||
div []
|
||||
[ div []
|
||||
[h2 [class "h2style"] [text (subheads model.codeKey)]
|
||||
, textarea [ class "textframe", placeholder "Write here your text!"
|
||||
, value model.normtext, onInput Change ] []
|
||||
]
|
||||
, div []
|
||||
[h2 [class "h2style"] [text (subheads (negate model.codeKey))]
|
||||
, textarea [ class "textframe", value (encodeText model.codeKey model.normtext) ] []]
|
||||
, div [class "keystyle"] [ button [ class "butstyle", onClick DecKey ] [ text "-1" ]
|
||||
, text (" Key " ++ String.fromInt model.codeKey)
|
||||
, button [ class "butstyle", onClick IncKey ] [ text "+1" ]
|
||||
]
|
||||
]
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
val .rot = fn(.s, .key) {
|
||||
cp2s map(fn(.c) rotate(rotate(.c, .key, 'a'..'z'), .key, 'A'..'Z'), s2cp .s)
|
||||
val rot = fn(s, key) {
|
||||
cp2s map(fn(c) { rotate(rotate(c, key, 'a'..'z'), key, 'A'..'Z') }, s2cp(s))
|
||||
}
|
||||
|
||||
val .s = "A quick brown fox jumped over something."
|
||||
val .key = 3
|
||||
val s = "A quick brown fox jumped over something, you know."
|
||||
val key = 3
|
||||
|
||||
writeln " original: ", .s
|
||||
writeln "encrypted: ", .rot(.s, .key)
|
||||
writeln "decrypted: ", .rot(.rot(.s, .key), -.key)
|
||||
writeln " original: ", s
|
||||
writeln "encrypted: ", rot(s, key)
|
||||
writeln "decrypted: ", rot(rot(s, key), -key)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue