ボトル品質問題のJavaコード実装
同じ瓶が12本あり、そのうちの1本の重さは他の瓶とは違います.
1つの天秤で、3回量って、その瓶を区別して、他の瓶より重いのか軽いのかを説明します.
+++++++++++++++++++++++++++++++
まず瓶番号1、2、3、4、5、6、7、8、9、10、11、12の計12本~~~~~~
一秤:
(1、2、3、4)Vs.(5、6、7、8)
×××××××××××
×××××××××××
一秤平は1、2、3、4、5、6、7、8本が正常であることを示しています...すなわち、問題瓶は9、10、11、12にある.
二秤:
(1、9)Vs.(10、11)
二秤平これは9、10、11本が正常であることを示しています...
三秤:(1)Vs.(12)12軽または重を得る
二秤の不平は問題瓶が9、10、11にあることを説明します...
三秤:
(10)Vs.(11)
平則は9本の重さを判断できる
不平であり、天秤の傾斜方向と二秤の方向比は変わらない.11は問題瓶兵で、軽重を判断することができます.の不平であり、天秤の傾斜方向と二秤の方向比が変化する.10は問題瓶兵が軽重を判断できる.
×××××××××××
×××××××××××
秤が平らでないと、問題瓶が1、2、3、4、5、6、7、8の中にあることを示します.
二秤:
(1、6、9)Vs.(5、2、3)
二秤平は問題瓶が4、7、8の中にあることを説明します...
三秤:
(7)Vs.(8)
三秤平は4本の重さを判断できる
平らではなく、天秤の傾斜方向が秤の方向に比べて変わらない.7は問題瓶兵で、軽重を判断することができます.の平らで天秤の傾斜方向が秤の方向に比べて変化する.問題の瓶兵は軽重を判断することができる.
二秤は平らではなく、天秤の傾斜方向と二秤の方向比は変わらない.問題瓶は1、5にあることを示します.
三秤:
(1)Vs.(9)
三秤は平ければ5本の重さを判断でき、三秤は平ければ1の重さを判断できる.
二秤は平らではなく、天秤の傾斜方向と二秤の方向比が変化する.問題瓶は2、3、6にあることを示します.
三秤:
(2)Vs.(3)
三秤平は6本の軽重を判断することができ、三秤が平らで傾斜方向が二秤方向に比べて変わらないことは3本が問題瓶であり軽重を判断することができ、三秤が平らで傾斜方向が二秤方向に比べて変化することは2本が問題瓶であり軽重を判断することができることを説明する.
1つの天秤で、3回量って、その瓶を区別して、他の瓶より重いのか軽いのかを説明します.
+++++++++++++++++++++++++++++++
まず瓶番号1、2、3、4、5、6、7、8、9、10、11、12の計12本~~~~~~
一秤:
(1、2、3、4)Vs.(5、6、7、8)
×××××××××××
×××××××××××
一秤平は1、2、3、4、5、6、7、8本が正常であることを示しています...すなわち、問題瓶は9、10、11、12にある.
二秤:
(1、9)Vs.(10、11)
二秤平これは9、10、11本が正常であることを示しています...
三秤:(1)Vs.(12)12軽または重を得る
二秤の不平は問題瓶が9、10、11にあることを説明します...
三秤:
(10)Vs.(11)
平則は9本の重さを判断できる
不平であり、天秤の傾斜方向と二秤の方向比は変わらない.11は問題瓶兵で、軽重を判断することができます.の不平であり、天秤の傾斜方向と二秤の方向比が変化する.10は問題瓶兵が軽重を判断できる.
×××××××××××
×××××××××××
秤が平らでないと、問題瓶が1、2、3、4、5、6、7、8の中にあることを示します.
二秤:
(1、6、9)Vs.(5、2、3)
二秤平は問題瓶が4、7、8の中にあることを説明します...
三秤:
(7)Vs.(8)
三秤平は4本の重さを判断できる
平らではなく、天秤の傾斜方向が秤の方向に比べて変わらない.7は問題瓶兵で、軽重を判断することができます.の平らで天秤の傾斜方向が秤の方向に比べて変化する.問題の瓶兵は軽重を判断することができる.
二秤は平らではなく、天秤の傾斜方向と二秤の方向比は変わらない.問題瓶は1、5にあることを示します.
三秤:
(1)Vs.(9)
三秤は平ければ5本の重さを判断でき、三秤は平ければ1の重さを判断できる.
二秤は平らではなく、天秤の傾斜方向と二秤の方向比が変化する.問題瓶は2、3、6にあることを示します.
三秤:
(2)Vs.(3)
三秤平は6本の軽重を判断することができ、三秤が平らで傾斜方向が二秤方向に比べて変わらないことは3本が問題瓶であり軽重を判断することができ、三秤が平らで傾斜方向が二秤方向に比べて変化することは2本が問題瓶であり軽重を判断することができることを説明する.
class Pingzi{
private int weight;
private boolean flag;//
public Pingzi(){
this.weight=100;
this.flag=true;
}
public int getWeight(){return this.weight;}
public boolean getFlag(){return this.flag;}
public void setWeight(int w){this.weight=w;}
public void setFlag(boolean f){this.flag=f;}
}
public class PingziTest{
public static void main(String[] args){
int badFlag;
Pingzi [] pingzi=new Pingzi[12];
Pingzi total_pingzi_1=new Pingzi();
Pingzi total_pingzi_2=new Pingzi();
for(int i=0;i<12;i++){
pingzi[i]=new Pingzi();
}
badFlag=(int)(12*Math.random());
pingzi[badFlag].setWeight((int)(200*Math.random()));
System.out.println(" :");
for(int i=0;i<12;i++){
System.out.print(pingzi[i].getWeight()+" ");
}
System.out.println();
total_pingzi_1.setWeight(pingzi[0].getWeight()+pingzi[1].getWeight()+pingzi[2].getWeight()+pingzi[3].getWeight());
total_pingzi_2.setWeight(pingzi[4].getWeight()+pingzi[5].getWeight()+pingzi[6].getWeight()+pingzi[7].getWeight());
if(total_pingzi_1.getWeight()==total_pingzi_2.getWeight()){
Pingzi total_pingzi_1_1=new Pingzi();
Pingzi total_pingzi_1_2=new Pingzi();
total_pingzi_1_1.setWeight(pingzi[0].getWeight()+pingzi[8].getWeight());
total_pingzi_1_2.setWeight(pingzi[9].getWeight()+pingzi[10].getWeight());
if (total_pingzi_1_1.getWeight()==total_pingzi_1_2.getWeight()) {
pingzi[11].setFlag(false);
}
else if(total_pingzi_1_1.getWeight()>total_pingzi_1_2.getWeight()){
if(pingzi[9].getWeight()==pingzi[10].getWeight()){
pingzi[8].setFlag(false);
}else if (pingzi[9].getWeight()>pingzi[10].getWeight()) {
pingzi[10].setFlag(false);
}else if (pingzi[9].getWeight()<pingzi[10].getWeight()) {
pingzi[9].setFlag(false);
}
}else if(total_pingzi_1_1.getWeight()<total_pingzi_1_2.getWeight()){
if (pingzi[9].getWeight()==pingzi[10].getWeight()) {
pingzi[8].setFlag(false);
}else if (pingzi[9].getWeight()>pingzi[10].getWeight()) {
pingzi[9].setFlag(false);
}else if (pingzi[9].getWeight()<pingzi[10].getWeight()) {
pingzi[10].setFlag(false);
}
}
}
else if(total_pingzi_1.getWeight()>total_pingzi_2.getWeight()){
Pingzi total_pingzi_2_1=new Pingzi();
Pingzi total_pingzi_2_2=new Pingzi();
total_pingzi_2_1.setWeight(pingzi[0].getWeight()+pingzi[5].getWeight()+pingzi[8].getWeight());
total_pingzi_2_2.setWeight(pingzi[4].getWeight()+pingzi[1].getWeight()+pingzi[2].getWeight());
if(total_pingzi_2_1.getWeight()==total_pingzi_2_2.getWeight()){
if (pingzi[6].getWeight()==pingzi[7].getWeight()) {
pingzi[3].setFlag(false);
}else if (pingzi[6].getWeight()>pingzi[7].getWeight()) {
pingzi[7].setFlag(false);
}else if (pingzi[6].getWeight()<pingzi[7].getWeight()) {
pingzi[6].setFlag(false);
}
}else if(total_pingzi_2_1.getWeight()>total_pingzi_2_2.getWeight()){
if (pingzi[0].getWeight()==pingzi[8].getWeight()) {
pingzi[4].setFlag(false);
}else{
pingzi[0].setFlag(false);
}
}else if(total_pingzi_2_1.getWeight()<total_pingzi_2_2.getWeight()){
if (pingzi[1].getWeight()==pingzi[2].getWeight()) {
pingzi[5].setFlag(false);
}else if (pingzi[1].getWeight()>pingzi[2].getWeight()) {
pingzi[1].setFlag(false);
}else if (pingzi[1].getWeight()<pingzi[2].getWeight()) {
pingzi[2].setFlag(false);
}
}
}
else if(total_pingzi_1.getWeight()<total_pingzi_2.getWeight()){
Pingzi total_pingzi_2_1=new Pingzi();
Pingzi total_pingzi_2_2=new Pingzi();
total_pingzi_2_1.setWeight(pingzi[0].getWeight()+pingzi[5].getWeight()+pingzi[8].getWeight());
total_pingzi_2_2.setWeight(pingzi[4].getWeight()+pingzi[1].getWeight()+pingzi[2].getWeight());
if(total_pingzi_2_1.getWeight()==total_pingzi_2_2.getWeight()){
if (pingzi[6].getWeight()==pingzi[7].getWeight()) {
pingzi[3].setFlag(false);
}else if (pingzi[6].getWeight()>pingzi[7].getWeight()) {
pingzi[6].setFlag(false);
}else if (pingzi[6].getWeight()<pingzi[7].getWeight()) {
pingzi[7].setFlag(false);
}
}else if(total_pingzi_2_1.getWeight()<total_pingzi_2_2.getWeight()){
if (pingzi[0].getWeight()==pingzi[8].getWeight()) {
pingzi[4].setFlag(false);
}else{
pingzi[0].setFlag(false);
}
}else if(total_pingzi_2_1.getWeight()>total_pingzi_2_2.getWeight()){
if (pingzi[1].getWeight()==pingzi[2].getWeight()) {
pingzi[5].setFlag(false);
}else if (pingzi[1].getWeight()<pingzi[2].getWeight()) {
pingzi[1].setFlag(false);
}else if (pingzi[1].getWeight()>pingzi[2].getWeight()) {
pingzi[2].setFlag(false);
}
}
}
for (int i=0;i<12 ;i++ ) {
if (pingzi[i].getFlag()==false) {
System.out.println(" "+(i+1)+" "+" :"+pingzi[i].getWeight());
}
}
}
}