2016-11-02 6 views
1

は、私は以下のスクリプトを使用するコードのパズルに取り組んでいます:( 'メッセージの各文字のために:機能(アスキー、a、b、c)は、ASCIIコードのパズル

function(ascii,a,b,c) { 
     for(i=0;i<ascii.length;i++) { 
      if(i%3==0){ascii[i]=(ascii[i]+a)%256;} 
      if(i%3==1){ascii[i]=(ascii[i]+b)%256;} 
      if(i%3==2){ascii[i]=(ascii[i]+c)%256;} 
     } 
     return ascii; 
    } 

私はそれを言うと思いますまたはメッセージが配列の場合は配列の各要素iに対して)、その位置mod3を計算し、結果に応じて文字のASCII値にa、bまたはcを追加し、その値mod 256を返します。これは正しい解釈ですか?

+1

'ASCII [i]は'文字ではなく、ASCII値になります。 'ascii'が文字列であると仮定すると、それはです。 – vlaz

+1

これは、asciiが文字列ではなく配列である場合にのみ意味を持ちます。文字列は不変であるため、 'ascii [i] = ascii [i] + a'は文字列内の何も変更しません。だから私はasciiが 'someWord.split( '')'によって形成された配列であると思っていますが、それは各文字のascii値を表す数字の配列になると思っています。文字列も意味をなさない。 '[45,78,52,55,78,99]'のようなもの? – Shilly

+0

@ Shilly私は配列に関する編集をしました - 質問のために、私の解釈は正しいですか? – TMrtSmith

答えて

1

characters (0-255)を表す数字のarrayをとるencoding functionと思われます。次に、文字をa,b, and c by modding by 3として指定された長さだけシフトします。出力はmodded by 255なので、有効な文字値のままです。最後に結果の符号化array of numbers representing charactersが返されます。以下は

はコードです:

function encodeIt(ascii,a,b,c) { 
    for(i=0;i<ascii.length;i++) { 
     if(i%3==0){ascii[i]=(ascii[i]+a)%256;} 
     if(i%3==1){ascii[i]=(ascii[i]+b)%256;} 
     if(i%3==2){ascii[i]=(ascii[i]+c)%256;} 
    } 
    return ascii; 
} 

function encodeString(myString,myAdjustments) 
{ 
    var myArray = []; 
    for(var i=0;i<myString.length;i++) 
    { 
     myArray.push(myString.charCodeAt(i)); 
    } 
    var myArray = encodeIt(myArray,myAdjustments[0],myAdjustments[1],myAdjustments[2]); 
    var myEncodedString = ""; 
    for(var i=0;i<myArray.length;i++) 
    { 
     myEncodedString+=String.fromCharCode(myArray[i]); 
    } 
    return myEncodedString; 
} 

var encodedString = encodeString("Hello World!",[30,80,-13]); 
alert(encodedString); 
var decodedString = encodeString(encodedString,[-30,-80,13]); 
alert(decodedString); 

とフィドル:

https://jsfiddle.net/3p79bxv2/

+0

あなたのフィドルを待っています! – TMrtSmith

+0

@TMrtSmith:投稿する...ほとんど完了... – Thalaivar

+0

@TMrtSmith:投稿とフィドルを更新しました... – Thalaivar

関連する問題