Erlang

2013-04-19 7 views
5

में foreach को समझना और उपयोग करना मेरे पास 7 भाषाओं में एक सीज़र साइफर को पूरा करने के लिए असाइनमेंट है। मैं वर्तमान में Erlang इसे पूरा करने पर काम कर रहा हूँ। मुझे पहले कार्यात्मक भाषाओं से अवगत कराया गया है, इसलिए मैं आम तौर पर समझता हूं कि मुझे क्या करना है। मुझे विशेष रूप से Erlang में foreach समारोह के उपयोग को समझने में परेशानी हो रही है। मुझे पता है कि जब आप साइड इफेक्ट में रुचि रखते हैं तो इसका उपयोग किया जाता है, इसलिए मुझे पूरा यकीन है कि यह वही करने का "सही" तरीका है जो मैं चाहता हूं। मैंने this answer पढ़ा है और एरलांग भाषा संदर्भ here में foreach की परिभाषा पढ़ी है। हालांकि, मैं अभी भी थोड़ा उलझन में हूं और सिंटैक्स को सही करने में परेशानी है।Erlang

-module(caesar). 
-export([main/2]). 

enc(Char,Key) when (Char >= $A) and (Char =< $Z) or 
       (Char >= $a) and (Char =< $z) -> 
Offset = $A + Char band 32, N = Char - Offset, 
Offset + (N + Key) rem 26; 

enc(Char, _Key) -> Char. 

encMsg(Msg, Key) -> 
    lists:map(fun(Char) -> enc(Char, Key) end, Msg). 

main(Message, Key) -> 

Encode = (Key), 
Decode = (-Key), 
Range = lists:seq(1,26), 

io:format("Message: : ~s~n", [Message]), 
Encrypted = encMsg(Message, Encode), 
Decrypted = encMsg(Encrypted, Decode), 

io:format("Encrypted: ~s~n", [Encrypted]), 
io:format("Decrypted: ~s~n", [Decrypted]), 
io:format("Solution: "). 
    %% Foreach belongs here, should execute Encrypted = encMsg(Message, N) where 
    %% N is the value in Range for each value in the list, and then print Encrypted. 

उत्तर

10

वाक्यविन्यास सूचियों के समान है: नक्शा जिसे आपने पहले ही लिखा है। यह एक मजेदार और सूची लेता है। मज़ा एक तर्क लेना चाहिए। इसे सूची में प्रत्येक मान को गुजरने के लिए बुलाया जाएगा।

lists:foreach(fun(N) -> 
         Encr = encMsg(Message, N), 
         io:format("Key:~p Encrypted: ~p",[N,Encr]) 
       end, Range). 
+0

बिल्कुल सही, इसे मेरे लिए साफ़ कर दिया। धन्यवाद! – NickAbbey