2017-02-07 7 views
0

ウェブ上では、足の高さと靴のサイズの間に変換テーブルがたくさんあります。ここのようにhttp://www.shoesize.com/men/sizechart/私はidに、これらの2つのパラメータの間に数学関数があるか質問したいと思います。 fuctionは次のようになります必要があります。足の高さ(cm)と靴のサイズeuの間の関数

function getShoeSize(height in cm){ 

    ...type magic here... 

    return shoeSize; //size in EU format 
} 
+1

これは国際的な靴のサイズ基準に関するものであり、プログラミングそのものではないので、この質問をトピックとしてクローズすることにしました。 – Quentin

+0

私はそれがプログラミングであると思います。なぜなら、計算されたサイズがどのように計算されるべきなのかということです。したがって、国際的な靴のサイズ基準だけではありません。 –

答えて

1

依存性は非常に滑らかではないことは明らかである: enter image description here

ですから、バイナリ検索を配列に最も近いセンチの大きさを見つけ、ネイバーサイズ26.5センチバイナリ検索のために、例えば(接近しているかどうかを確認することができます見つけることができますより小さな値としての表の値26、しかし26.7はより近いので、42.5のサイズはより良くフィットします)。または、上位の値を検出するバイナリ検索の実装を使用します。

編集:非常に小さい配列のため、線形検索を使用する方が簡単です。擬似コード:

idx = 0 
while (CmSize[idx] < Foot_len) && (idx < CmSize.Length) 
    idx++ 
return EUSize[idx] 
+0

はい、これは良い方法だと思います。 –

2

私はそれを行うための簡単な数学的な方法は、(私はそれが可能であると確信していますが、それはおそらく平均的な開発者のための読めないだろう)があるとは思いません。

あなたができることが示唆しているものは、簡単に作成できます。あなたは靴のサイズの配列を作るのですか?(すべてのサイズの例はhttp://www.shoesizingcharts.com/ともっと多くのサイトにあります)。その配列を使用してcmeuro sizeに変換します。

配列は次のようになります:

var shoeSizeMap = [ 
    { cm: 20.8, euroSize: '35' }, 
    { cm: 21.3, euroSize: '35' }, 
    { cm: 21.6, euroSize: '35/36' }, 
    ... etc 
] 

をそして、それが好き見つけるために関数を使用します。

function findEuroSizeByCm(cm) { 
    var result = shoeSizeMap.find(function(shoeSize) { 
    return shoeSize.cm == cm; 
    }); 

    return result ? result.euroSize : 'unknown size'; 
} 


findEuroSizeByCm(20.8); // returns 35 

PS。この例では数値を「浮動小数点数」として入力したことに注意してください。データソースが文字列を提供している場合は、文字列として比較したいかもしれません。cm: 20.8からcm: '20.8'に変更してください。

+0

ありがとう、これは私が使用できるより簡単なソリューションです。しかし、私はそこに数学的な解決策があるのだろうかと疑問に思っています。なぜなら、それらの靴のサイズは明確な方法ではないように見えるからです。 –

関連する問題