バストとカップサイズからアンダーバストの求め方

(このエントリーは,数式で表現する試みの一環です)

バストとカップサイズはわかってるんだけど,アンダーバストの大きさはわからない.そういうときには計算して求めてしまいましょう.

アンダーとトップとの差が2.5センチ大きくなるごとに,一つカップサイズがあがります.例えば差が10cmの時はAカップですが,12.5cmになるとBカップになります.

カップサイズをC=\{'A', 'B', 'C', ...., 'Z'\}と全順序集合として表現すると,カップサイズからアンダーとトップの差を求める関数は再帰的に定義できます.なお式中のiはC中でのカップサイズの位置です.例えばAなら0,Cなら2になります.

f(C_i) = f(C_0) + 2.5 * i
f(C_0) = 10

今回欲しいのはアンダーバストです.先ほど述べたように,カップ数はアンダーとトップとの差として定義されています.よってアンダーとトップとの差は先ほど定義した関数を使って次のように表現できます.(式中のtはトップ大きさ,uはアンダーの大きさです)

t - u = f(C_i)

これを変形するとアンダーバストは次の式で表現できます

\begin{eqnarray}u &=& t - f(C_i)\\&=& t - (f(C_0) + 2.5 * i)\\&=& t - 2.5*(i+4)\end{eqnarray}

これでトップの大きさとカップサイズがわかればアンダーバストの大きさがわかる式になりました.これを素直にPerlで実装すると次のような関数になります.

sub calcUnderBust{
  my($top, $cup) = @_;
  my $under = 0;
  if($top && $cup && $top =~ /^\d+$/ && $cup =~ /^[A-Z]$/){
     $under = $top - 2.5 * (ord($cup) - ord('A') + 4);
  }
  return $under;
}

式中のiを文字から求める必要があります.今回はカップを表す文字のコードと'A'のコードとの差によって求めてみました.この手法はAAやAAAカップなどには適用できませんが,Aカップ以上には使えると思います.