1

「行全体でXステッチ数を均等に増やす」というパターン命令に直面したときに、編み手が増加の間に配置するステッチ数を決定できるように、JavaScriptウィジェットを作成しています。問題はここで説明されています。

これまでのところ、結果が偶数である限り、私のコードは機能します。

数が均等でない場合にそれを機能させる方法を見つけようとして立ち往生しています。私がする必要があるのは、ステッチのグループの数を配列に入力し、配列をインクリメントして、残りがなくなるまで各グループに1を追加することだと思います。

しかし、次の方法がわかりません。a)配列に可変数のアイテムを入力します。例:ステッチのグループはいくつありますか?配列内にその数のアイテムが必要です。b)配列内の各アイテムの各グループのステッチ数を保存します。c)残りが0になるまで、配列内の各アイテムに1を追加します。

私も他のアプローチを受け入れています。

これが私がこれまでに持っているコードです。if / else条件をまだ追加しておらず、forループも追加していません。どんな考えやアイデアも大歓迎です。前もって感謝します!

$('#calculateIncrease').submit(function() {
//get the number of stitches in the row
var stitchesInRow = $('input#stitchesInRow').val();
//get the number of stitches to increase by
var increaseByHowMany = $('input#increaseByHowMany').val();
//add one to this number
var divideBy = parseInt(increaseByHowMany,10) + 1;
//divide the number of stitches in row by increase plus one
var stitchesBetween = parseInt(stitchesInRow,10)/divideBy;
var leftover = stitchesInRow % divideBy;
//if there is no leftover
//return the result
$('#howManyStitches').html("Put " + stitchesBetween + " stitches between each increase.");
//if there is a leftover
var stitchesPerGroup = Math.floor(stitchesBetween);
//take divideBy, which is also the number of groups of stitches
//create an array that contains the number of groups (divideBy)
var stitchesArray = new Array(divideBy);
//each array item populated by the integer that is the first half of the division
//for each array item, add 1 until leftover = 0
//there should be some groups that get one added and others that do not
return false;
});
4

1 に答える 1

0

これは、現在定式化されており(akonsuはすでにコメントで質問のタイトルに回答している)、その質問について直接話しているわけではないため、質問に対する回答ではありません。

しかし、私は彼女が何を達成しようとしているのかを理解しているので(そして彼女は他のアプローチを受け入れています)、これは本質的に本当に良い質問だと思います
。彼女が投稿したコードと、アルゴリズムのバリエーションと最終結果/出力が何であるか/あるべきかをより詳細に定義するのに役立ちます。

彼女は、x個(1行あたりの余分なステッチ数)をy個(前の行のステッチ数)にできるだけ均等に配分したいと考えています。

img

彼女の現在の基本式は次のとおりです。次のy/(x+1)
結果になる丸めを含める:

----------10針
----- + -----5ごとに1を追加
--- + ---- +---3.3333ごとに2を追加
--- +-+ ---+-2.5ごとに3を追加
-+-+-+-+-2ごとに4を追加
-+-+-+-+-+-1.6667ごとに5を追加

(jsFiddleの)実際の例は次のようになります
。Javascript

function handler(){
  var i, d=document,                                    //saving some code
      base=Number(d.getElementById('base').value),      //get row input
       add=Number(d.getElementById('add').value) + 1,   //get stitches to add
       ret='',          //return var
       tmp=0,           //temp var
       crr=0,           //carry var
       per=base/add;    //calculate period

  for (i = 1; i < add; i++) {   //start at 1 instead of 0
    tmp=Math.round(i * per);    //round first period
    ret+=tmp-crr+' + ';         //first period with previous period
    crr=tmp;                    //carry period
  }
  ret+=Math.round(add * per)-crr;          //last normal stitches
  d.getElementById('out').innerHTML=ret;   //output result
}

HTML:

Stitches on row: <input type="text" 
                          id="base" 
                       value="10"
                    onchange="handler();"
                 >
<br>
Stitches to add: <input type="text" 
                          id="add" 
                       value="1"
                    onchange="handler();"
                 >
<br>
<button onclick="handler();">calculate</button>
<br>
  Every + is a extra stitch: <br>
<div id="out">&nbsp;</div>

彼女が現在期待しているように、それはうまくいくと思います。しかし、そうすればその中にパターンを見つけることができると思いますし、それを簡単な方法で行う方法がわかりません。誰?

しかし、これは左から右にのみ機能し、セーターの袖のような円では機能しないものにのみ機能すると思います。次に、彼女は「カルーセル」にもう少し似たものが必要になる場合があります。

「カルーセル」スタイル(式:) ((y+x)/x)-1

----------10針
----------+10ごとに1を追加
----- + -----+5ごとに2を追加
--- + ---- + ---+3.3333ごとに3を追加
-+ --- +-+ ---+3.5ごとに4を追加
-+-+-+-+-+2ごとに5を追加

ご覧のとおり、分布は異なります。

あなたのプロジェクトで頑張ってください!

于 2013-01-08T11:15:13.577 に答える