2017-09-14 14 views
1

私は宿題の助けを求めていません、正しい方向に押してください!偽のラテンジェネレータPHP

最近、大学でPHPを学び始めました。演習の1つは、偽のラテンジェネレータを作成することでした。

すべての単語がそれの後に置かカンマを持っていることの1 10でチャンスを持っています

パラメータは以下の通りでなければなりませんでした。
すべての文には8〜25語が含まれていなければなりません。
すべての段落に3〜7文が含まれている必要があります。
すべてのページに3〜5の段落が含まれている必要があります。
すべての開始文は大文字で始まる必要があります。

次のように私のコードは:

<?php 
$latin_words = array("lorem", "ipsum", "dolor", "sit", "amet", "consectetuer", "adipiscing", "elit", "sed", "diam", "nonummy", "nibh", "euismod", "tincidunt", "ut", 
        "laoreet", "dolore", "magna", "aliquam", "erat", "volutpat", "ut", "wisi", "enim", "ad", "minim", "veniam", "quis", "nostrud", 
        "exerci", "tation", "ullamcorper", "suscipit", "lobortis", "ni", "sl", "ut", "aliquip", "ex", "ea", "commodo", "consequat", "duis", "autem", 
        "vel", "eum", "iriure", "dolor", "in", "hendrerit", "in", "vulputate", "velit", "esse", "molestie", "consequat", "vel", "illum", "dolore", "eu", 
        "feugiat", "nulla", "facilisis", "at", "vero", "eros", "et", "accumsan", "et", "iusto", "odio", "dignissim", "qui", "blandit", "praesent", "luptatum", "zzril", 
        "delenit", "augue", "duis", "dolore", "te", "feugait", "nulla", "facilisi", "ut", "wisi", "enim", "ad", "minim", "veniam", "quis", "nostrud", "exerci", "tation", "ullamcorper", 
        "suscipit", "lobortis", "nisl", "ut", "aliquip", "ex", "ea", "commodo", "consequat", "duis", "autem", "vel", "eum", "iriure", "dolor", "in", "hendrerit", "in", "vulputate", 
        "velit", "esse", "molestie", "consequat", "vel", "illum", "dolore", "eu", "feugiat", "nulla", "facilisis", "at", "vero", "eros", "et", "accumsan", "et", "iusto", "odio", 
        "dignissim", "qui", "blandit", "praesent", "luptatum", "delenit", "augue", "duis", "dolore", "te", "feugait", "nulla", "facilisi"); 

$max = count($latin_words); 
for($pagelen = rand(3,5); $pagelen != 6; $pagelen++) 
{ 
    $word = rand(0,$max - 1); 
    for($para = rand(3,7); $para != 8; $para++) 
    { 
     echo ucfirst($latin_words[$word]); 
     for($sentlen = rand(8,25); $sentlen != 26; $sentlen++) 
     { 
      $word = rand(0,$max - 1); 
      echo " " . $latin_words[$word]; 
      for($comchance = rand(1,10); $comchance == 10; $comchance++) 
      { 
       echo ","; 
      } 
     } 
     echo ". "; 
    } 
    echo "<br/><br/>"; 
} 
?> 

  • 私は時々、1ページあたり1段落を得ていたことに気付い開始まで、私はそれをすべての権利を持っていたと思いました。

  • 私はまた、文の最後にカンマが続くのを止める方法もわかりません - 私はスイッチがうまくいくかもしれないと読んだが、これをカバーしていなかったので、私は1つを追加することに注意した。
  • 正しい方向へのプッシュは大変ありがとう!

    ここ
    +0

    あなたのループはアップの代わりにカウントダウンするべきです。 – EvanM

    +0

    @EvanMループがカウントダウンされた場合、標的に達することは決してありません –

    +0

    HackerRankウェブサイトの問題として追加することを検討することがあります。 –

    答えて

    1

    は、このことができます願っています:

    $latin_words = array("lorem", "ipsum", "dolor", "sit", "amet", "consectetuer", "adipiscing", "elit", "sed", "diam", "nonummy", "nibh", "euismod", "tincidunt", "ut", 
             "laoreet", "dolore", "magna", "aliquam", "erat", "volutpat", "ut", "wisi", "enim", "ad", "minim", "veniam", "quis", "nostrud", 
             "exerci", "tation", "ullamcorper", "suscipit", "lobortis", "ni", "sl", "ut", "aliquip", "ex", "ea", "commodo", "consequat", "duis", "autem", 
             "vel", "eum", "iriure", "dolor", "in", "hendrerit", "in", "vulputate", "velit", "esse", "molestie", "consequat", "vel", "illum", "dolore", "eu", 
             "feugiat", "nulla", "facilisis", "at", "vero", "eros", "et", "accumsan", "et", "iusto", "odio", "dignissim", "qui", "blandit", "praesent", "luptatum", "zzril", 
             "delenit", "augue", "duis", "dolore", "te", "feugait", "nulla", "facilisi", "ut", "wisi", "enim", "ad", "minim", "veniam", "quis", "nostrud", "exerci", "tation", "ullamcorper", 
             "suscipit", "lobortis", "nisl", "ut", "aliquip", "ex", "ea", "commodo", "consequat", "duis", "autem", "vel", "eum", "iriure", "dolor", "in", "hendrerit", "in", "vulputate", 
             "velit", "esse", "molestie", "consequat", "vel", "illum", "dolore", "eu", "feugiat", "nulla", "facilisis", "at", "vero", "eros", "et", "accumsan", "et", "iusto", "odio", 
             "dignissim", "qui", "blandit", "praesent", "luptatum", "delenit", "augue", "duis", "dolore", "te", "feugait", "nulla", "facilisi"); 
    
    
    $max = count($latin_words); 
    for($pagelen = 0; $pagelen < rand(3,5); $pagelen++) 
    { 
        for($para = 0; $para < rand(3,7); $para++) 
        { 
         // first word here, so the max nr. of words in the next for statement will be rand(7,24) 
         echo ucfirst($latin_words[rand(0,$max - 1)]); 
         $nr_words = rand(7,24); 
         for($sentlen = 0; $sentlen < $nr_words; $sentlen++) 
         { 
          // if this is not the last word 
          if($sentlen < $nr_words - 1) 
          { 
           $word = $latin_words[rand(0,$max - 1)]; 
           echo " " . $word; 
           // 10% chance 
           if(rand(1,10) == 1) echo ","; 
          } 
          else 
          { 
           // this is the last word so echo a full stop 
           echo ". "; 
          } 
         } 
        } 
        echo "<br><br>"; 
    }      
    
    2

    私は私が時々1ページあたり1段落を得ていたことに気付い開始まで、私はそれをすべての権利を持っていたと思いました。

    は、あなたのループ条件を考えてみましょう:

    for($pagelen = rand(3,5); $pagelen != 6; $pagelen++) 
    

    これは3と5の間の乱数を設定し、それが6に等しくなるまでその数を増やします。

    これは、は時々$pagelen5に設定されることを、ループはその後、$pagelen++セット6から$pagelen、一度だけ実行されるので、$pagelen != 6が偽になり、あなたのループが終了します。

    代わりに、あなたはゼロから始まり、そしてあなたの他のループは、同じ問題を抱えている3,5

    for($i = 0, $pagelen = rand(3,5); $i < $pagelen; $i++) 
    

    間の乱数までインクリメントする必要があります。これで完全に修正されるわけではありませんが、うまくいけば正しい方向へのプッシュでうまくいくでしょう。