パブリック解決:秘密のメッセージのデコード


サンタは超怪しいメールを得ました、そして、最初に、彼は彼がハッキングされたかもしれないと思いました.
しかし、それはちょうどサンタに彼の手紙を見るために市民を望まないクールなハッカー子供でした.
しかし、サンタはコンピュータについてあまり知りませんでした、そして、私たちに彼が受け取ったメッセージを解読するよう頼みました.
You can find the complete puzzle here.

解決策を考える
最初に見てみましょう.このように見えるメッセージがあるようです.
01001010
01101001
01101110
01100111
01101100
01100101
00100000
01100010
01100101
01101100
01101100
01110011
あなたがどんな基本的なコンピュータサイエンス・クラスを通っていたならば、これはbinary codeです.
それは唯一のものとゼロを知っているので、何かあなたのコンピュータは水中を使用します.
これを知って、私たちは、各々の線が実は特定のシンボルであるのを見ることができます.これは文字、記号、数字、またはスペースであるかもしれません.
私たちはアッカーマンのように感じることができるので、この問題を解決する権利を取得しましょう.


バイナリメッセージのデコード
まず最初にしたいことは、すべての個々の行にアクセスできることを確認することです.
彼らがすべて異なる線であるということを知って、我々はそうように新しい線で分裂するために、 split methodを使うことができます.
input.split('\n')
これはバイナリコードの配列を与えます.
そして、それが現在配列であるのを見て、我々はオールアラウンド優れた reduce methodを使うことができます.
return input.split('\n').reduce((string, binary) => {
    // todo
}, '');
減少は2つの引数をとります:アキュムレータ(string)と現在のループ要素(binary).
最後にアキュムレータのデフォルト値を設定し、空の文字列として設定します.
文字列を返し、デコードされたシンボルをこのバイナリコードの中に追加する必要があります.
バイナリコードをデコードするには、次のJavaScript関数を使用できます.
String.fromCharCode(parseInt(binary, 2))
つのことが起こっている
  • parseInt :この作品はバイナリコードを文字コードに変換します.
  • String.fromCharCode文字コードを文字列に変換します.
  • 次のバイナリコードを取り、どうなるかを見ましょう.
    const binary = '01001010'
    const charCode = parseInt(binary, 2)
    // 74
    const symbol = String.fromCharCode(charCode)
    // J
    
    このバイナリ範囲がJという意味です.
    さあ、これを使いましょう.
    return input.split('\n').reduce((string, binary) => {
        return (string += String.fromCharCode(parseInt(binary, 2)));
    }, '');
    
    そして、それ!
    今ではJavaScriptのバイナリデコーダを持っています😎.
    私たちをハッカーと見てください.
    もう1つしかありません.
    テストを実行します.


    読んでいただきありがとうございます、接続しましょう!
    私のブログを読んでくれてありがとう.私の電子メール会報を購読して、Facebook