週間チャレンジ093


Challenge 093

タスク・ワン・ポイント

タスク
あなたは、調整のセットを与えられます@N .
スクリプトを2次元平面上でプロットを与えられたときに直線上の最大点をカウントするために書き込みます.

マイソリューション
私はこの仕事をもっと小さな部分に分けた.
  • 入力を数値の配列に分割し、偶数の値があることを確認します.
  • ポイントをプロットする@grid それぞれの値を1つ取る.これがポイント(0,0) 右下.
  • グラフを作成します.タスクの一部ではありませんが、コードの4行のみです.
  • と同じようにword search task , つの方向(上、右、斜め、右、斜めと右)の各ポイントを通過し、その出発点から最長のポイントを見つける.他の4つの方向には、上記の4つの反対としてはポイントがない.
  • 画面に最長のポイントを印刷します.


  • » ./ch-1.pl "(1,1), (2,2), (3,3)"
    |     x
    |   x
    | x
    + - - -
    
    Output is: 3
    
    » ./ch-1.pl "(1,1), (2,2), (3,1), (1,3), (5,3)"
    |     x
    |
    | x
    |   x
    | x   x
    + - - -
    
    Output is: 3
    

    タスク△2周和パス

    タスク
    番号を含むバイナリツリーが与えられます0-9 のみ.
    ルートからリーフまでのすべての経路を合計するためにスクリプトを書きます.

    マイソリューション
    この仕事は思ったより少し複雑だった.それは、私が私が把握するのにしばらくかかった私のコードで少しのバグがあったのを助けませんでした.
    たとえ私の解決策が64行であるとしても、それはかなりまっすぐ前方です.
  • 最初にstdinからの入力を読みます.
  • 次に、コードのコアを再帰的に呼び出します_walk_path 現在のパスを格納するサブルーチン@$this_path 配列.我々がノードの終わりを打ったならば@$paths 配列.
  • 最後に、合計を表示し、私たちが訪れたパス.


  • (ウェブサイトの例を使う)
    » ./ch-2.pl < example-1.txt 
    Output is 13
    Paths: (1, 2, 3), (1, 2, 4)
    
    » ./ch-2.pl < example-2.txt 
    Output is 26
    Paths: (1, 2, 4), (1, 3, 5), (1, 3, 6)