週間チャレンジ082


Challenge 082
これらの課題の両方とも、要件が2つの値に一致していても、私のソリューションは2つ以上の値で動作します.

タスク・ノー1
与えられた数の要因を生成する数学::関数があるかもしれないが、私はそれが毎週の課題のポイントを破るという信念のです.Perlコアの一部であるList ::Util関数だけを使用する傾向があります.
これは比較的まっすぐ進むタスクです.指定された値の1から最小値までループを作成します(これより大きい値は、最小値の要素ではありません).私は、それから数によるすべての入力の除算が残りで結果としてならないならば、その数を結果に加えます.


» ./ch-1.pl 12 18
1, 2, 3, 6

» ./ch-1.pl 18 23
1

担当研究員:松原茂
私は、他のチームPWCメンバーによってこの仕事の解決策を見るのを本当に楽しみにしています.私は私のソリューションが最高のものであることを確信していませんが、それは動作します.私も、map functionの賞賛を歌わせてください.スライスしたパンから最高のもの.
ターゲットの長さが他の文字列の長さでない場合は、0を返すようにコードを短絡します.このシナリオでは解決策はありません.
私が取ったアプローチは、@remainingと呼ばれる任意の配列を持っていた.各列は、各文字列から利用可能な残りの文字を表します.すべての文字列を表す1行から始まります.
それから、私は、目標ストリングの各々の手紙を通して働きます.マップ関数を使用して、その文字で始まる文字列から最初の文字を取り出します.
例えば、第1の例(「XY X XXY」)では@remainingから(('XY', 'X'))から始まる.最初のランの後、両方のストリングが『x』で始まるので、@remaining(('Y', 'X'), ('XY', ''))になります.第2の反復は、第2の' x 'を除去する(('Y', ''), ('Y', ''))となる.最終的な実行は、(('', ''), ('', ''))が最後のキャラクタのYを取り除く結果になります.
残りの値がない場合は0を返します.一旦すべての手紙を使い果たしたならば、我々は彼らが解決であるということを知っています.


» ./ch-2.pl XY X XXY
1

» ./ch-2.pl XXY XXZ XXXXZY
1

» ./ch-2.pl YX X XXY
0