ファーストトゥー・ダブル


どのように私はアルゴスに反応する


ああ、何をしたの?Reactoと「反応する」ああ、決して気に!これはReactoに関する記事です、そして、どのように、私は問題を解決するためにこの一般的なアプローチが好きかについて知りました.

何がReactoですか?


簡単に言えば、Reactoは、このメソッドで問題解決の段階を表す頭字語です.次の手順を実行します.

  • 再出発

  • 例:例

  • Aアプローチ

  • Cコード

  • T :テスト

  • 最適化
  • はい、その順序で.あなたが考え嵐で迷子にならないように、手順に従うことは重要です🌩️. このアプローチでは、フォーカスを維持し、さらにはコーディングを開始する前に、ソリューションへのパスを照らす!我々の自然本能がちょうど攻撃の計画をする前にコードに飛び込むことになっているので、トリックはすぐにコーディングするのを止めることです.

    プロンプト


    さて、あなたの選択のアルゴリズムリポジトリからプロンプトを得ると言う今、何?私たちがあまりにもコード化部分であまりに得られないように、私が見つけることができる最も単純なプロンプトのうちの1つから始めましょう.
    以下はプロンプトです.

    Create a function that, when given some input, will take this input and return the first instance of double characters. Input will be a string. If there are no double characters found in the input the function should return boolean false.


    これはとても簡単です.始めましょう!

    プロンプトを再表示する


    /*
    Restate,
    
    Create a function
    - takes input type of string
    - return the first instance of double characters
    Input may be a string
    If there are no double characters found in the input the function should return `false`.
    */
    
    これはここではかなり簡単ですが、実際にインタビューをしている場合は、インタビュアーからのプロンプトを聞くことができます.あなたが積極的にプロンプトを聞いていることを確認し、質問を明確に求めることを忘れないでください.たとえば、数値が関数または文字列に渡されるかどうかを尋ねたかもしれません.この場合、入力は文字列値に制限されます.このポストを読んでいる間、あなたはより多くの質問を考え出すかもしれません.私もまだ学んでいる!

    例:例


    ここでは、視覚的に後であなたのアプローチであなたを助けるためにいくつかの例を書き留めたい場所です.あなたのインタビュアーはあなたにいくつかの例を与えるべきです.されていない場合、今はそれらを求める時間です!あなたがCodeWarsのようなオンラインソースからプロンプトを取っているならば、彼らは利用できる例があります.
    再び、私はこれらをリセッションセクションの直後のコメントとして書きます.以下、この関数に名前を付けますfirstDouble .
    /*
    ...
    
    Examples,
    
    firstDouble("aardvark") >> "aa"
    firstDouble("1-800-257-8999") >> "00"
    firstDouble("pamphlet") >> false
    */
    

    Aアプローチ


    ここで解決策をコーディングする方法を書く必要があります.ここでは擬似コードを書くか、単にコーディング言語を使わずにあなたの計画を書きます.このプランをコメントに加えましょう.
    まず、関数に引数が渡され、文字列であることを知っています.マッチが見つからなかった場合、booleanを返しますfalse . さて、あなたが駆動された開発をテストするために使用しているならば、あなたはたぶん最初にテストを書いて、それからテストを満たすコードを書きます.この場合、T :テストステップを待っています.関数名と引数を関数に渡します.
    /*
    ...
    
    Approach,
    
    - create function firstDouble(stringArg)
    */
    
    さて、それはJavaScriptのように多く見ます、しかし、私はアプローチステップでそれよりあまり深くなりません.どのような引数が関数と関数に渡されるかを知っています.入力を解析し始める方法についてもう少し詳しく説明しましょう.
    /*
    ...
    
    Approach,
    
    - create function firstDouble(stringArg)
    - iterate over the input
    -- check if the current character is the same as the previous character
    */
    
    今、私が実現するとき、私は現在の反復を最後のものと比較する必要があるとわかります.それで、ループの前にアプローチの第2段階でこの考慮を含むアプローチを編集します.私がそれにいる間、私は現在のキャラクタのためにループで変数を宣言する必要があると付け加えます.このループが終了すると、現在の文字の値を前の文字変数に代入できます.
    /*
    ...
    
    Approach,
    
    - create function firstDouble(stringArg)
    - declare variable to hold value of character from previous loop (lastCharacter)
    - iterate over the input
    -- declare variable for current character (currentCharacter)
    -- check if the current character is the same as the previous character
    */
    
    何回、我々はループしますか?よく、それは入力長と同じくらい長くなければなりません.私は、それを私のアプローチに加えます.さて、次のようにループを考えています.
  • 入力の終わりまでループする
  • 各ループは現在の文字を設定し、最後の文字と比較します
  • 現在の文字と最後の文字が同じであれば、

  • またはマッチしなかった場合、最後の文字の値を現在の文字に設定する
  • ループ再び
  • を返します.false
  • では、このアプローチを見てみましょう.
    /*
    ...
    
    Approach,
    
    - create function firstDouble(stringArg)
    - declare variable to hold value of character from previous loop (lastCharacter)
    - iterate over the input for the length of the input
    -- declare variable for current character (currentCharacter)
    -- check if the currentCharacter has the same value as the lastCharacter
    ---- if they match, return them both together as a string
    ---- else if they don't match, 
         set value of last character to equal current character
    -- loop again
    - if no matches found after looping ends, return boolean false
    */
    
    それは間違いなくプロンプトを解決するために必要なすべてのようです.現在、これはReactoのレアが見える方法です:
    /*
    Restate,
    
    Create a function
    - takes input type of string
    - return the first instance of double characters
    Input may be a string
    If there are no double characters found in the input the function should return `false`.
    Examples,
    
    firstDouble("aardvark") > "aa"
    firstDouble("1-800-257-8999") > "00"
    firstDouble("pamphlet") > false
    
    Approach,
    
    - create function firstDouble(stringArg)
    - declare variable to hold value of character from previous loop (lastCharacter)
    - iterate over the input for the length of the input
    -- declare variable for current character (currentCharacter)
    -- check if the currentCharacter has the same value as the lastCharacter
    ---- if they match, return them both together as a string
    ---- else if they don't match, 
         set value of last character to equal current character
    -- loop again
    - if no matches found after looping ends, return boolean false
    */
    

    Cコード


    最後にコーディングステップのCに移りましょう!この手順では、コードはコメントではありませんが、コードのセクションを示すために、上記の小さなコメントを残します.以下に作成した関数のコードステップを示します.
    /*
    ...
    */
    
    /*
     ** Code,
     */
    
    function firstDouble(stringArg) {}
    
    うわー、我々はほとんどそこにある!😎 前のステップでレイアウトされたアプローチを実装するだけで、関数をテストできます.私は時々ガイドとして機能するために機能体に私のアプローチコメントをペーストします.
    function firstDouble(stringArg) {
      //- create function firstDouble(stringArg)
      //- declare variable to hold value of character from previous loop (lastCharacter)
      //- iterate over the input for the length of the input
      //-- declare variable for current character (currentCharacter)
      //-- check if the currentCharacter has the same value as the lastCharacter
      //---- if they match, return them both together as a string
      //---- else if they don't match,
      //    set value of last character to equal current character
      //-- loop again
      //- if no matches found after looping ends, return boolean false
    }
    
    関数の作成に関連しているので、関数の最初のコメントを移動しましょう.それから、コーディングを開始します.
    //- create function firstDouble(stringArg)
    function firstDouble(stringArg) {
      //- declare variable to hold value of character from previous loop (lastCharacter)
      let lastCharacter;
    
      //- iterate over the input for the length of the input
      for (let i = 0; i < stringArg.length; i++) {
        //-- declare variable for current character (currentCharacter)
        const currentCharacter = stringArg[i];
    
        //-- check if the currentCharacter has the same value as the lastCharacter
        if (currentCharacter === lastCharacter) {
          //---- if they match, return them both together as a string
          return `${lastCharacter}${currentCharacter}`;
        } else {
          //---- else if they don't match, set value of last character to equal current character
          lastCharacter = currentCharacter;
        }
        //-- loop again
      }
    
      //- if no matches found after looping ends, return boolean false
      return false;
    }
    
    OK、C :コードが完了しました.コメントを削除するので、読みやすくなります.
    function firstDouble(stringArg) {
      let lastCharacter;
    
      for (let i = 0; i < stringArg.length; i++) {
        const currentCharacter = stringArg[i];
    
        if (currentCharacter === lastCharacter) {
          return `${lastCharacter}${currentCharacter}`;
        } else {
          lastCharacter = currentCharacter;
        }
      }
    
      return false;
    }
    
    今、私はあなたがこの問題を解決することができたと考えているかもしれないことを知っているかもしれません.問題が複雑さの増加につれて、このアプローチが彼らをより扱いやすいようにするということを知ってください.
    次の手順は、コードをテストすることです!

    T :テスト


    今すぐコードをテストする時間が来る.好きなテストライブラリを使えます.私はここでcodepenをリンクするつもりですconsole.log() 結果を示す.
    上記のCodepenで、JSタブをクリックしてテストを見ます.それらは単純なログ文です.ここでは、e :例からです.
    > firstDouble("aardvark");
    aa
    > firstDouble("1-800-257-8999");
    00
    > firstDouble("pamphlet");
    false
    
    

    最適化


    我々は自分のテストに合格!🎉 ああ!可能ならば最適化しましょう.
    function firstDouble(stringArg) {
      let lastCharacter;
    
      for (let char in stringArg) {
        const currentCharacter = stringArg[char];
        if (currentCharacter === lastCharacter) {
          return `${lastCharacter}${currentCharacter}`;
        } else {
          lastCharacter = currentCharacter;
        }
      }
      return false;
    }
    
    アム、それはあまり変化しませんでした、そして、機能を最適化しませんでした、しかし、それはよりきちんと見えます.これは私たちがこれを取る必要がある限りです.🎉 おめでとう、あなたは非常に長いポストを読んできたし、私の最初の1つ!あなたがどんなヒントを共有したいと思うならば、貼り付けて、非常にコメントしてください!どこかで散らかった?どうか私に知らせてください.
    また、このコードをさらに回避したい場合check it out the Codepen .