awkでパズルを解く(小町算part2)

前回の続き。
今度は小町分数(2)ということで、
○○○○÷○○○○○=4/5 をやってみる。
4/5ということはa / b = 4 / 5で考えると、b = a * 5 / 4となる。
bは当然整数だから、余りを使って整数判定を入れている。


BEGIN{
a = 8000; #aの最小値
while(a <= 9876){
b = a * 5 / 4;
if(b % 1 == 0){
if(keisan1(a,b)){
print "ans=",a,b;
}
}
a++;
}
}

function keisan1(a,b){
keta[0] = int(a / 1000);
keta[1] = int((a - keta[0] * 1000) / 100);
keta[2] = int((a - keta[0] * 1000 - keta[1] * 100) / 10);
keta[3] = (a - keta[0] * 1000 - keta[1] * 100) % 10;
keta[4] = int(b / 10000);
keta[5] = int((b - keta[4] * 10000) / 1000);
keta[6] = int((b - keta[4] * 10000 - keta[5] * 1000) / 100);
keta[7] = int((b - keta[4] * 10000 - keta[5] * 1000 - keta[6] * 100) / 10);
keta[8] = (b - keta[4] * 10000 - keta[5] * 1000 - keta[6] * 100) % 10;
for(i = 0;i <= 8;i++){
for(j = i + 1;j <= 8;j++){
if(keta[i] == keta[j]){
return 0;
}else if(keta[i] == 0 || keta[j] == 0){
return 0;
}
}
}
return 1;
}

実行してみる


ans= 9876 12345

今回は答えが1つだけだった。