前に「3桁÷2桁=2桁あまり2桁」で1から9までの数字をすべて使うというパズルをとり上げましたが、今回は次の通り。
「4桁÷4桁=1桁(あまりゼロ)」となる計算で、1から9までの数字をすべて使う場合を見つけろ。
そしても今回もしらみつぶし法で解いてみました。
as = [];
for (a = 1234; a <= 9876; a++) {
for (c = 1; c <= 9; c++) {
b = Math.floor(a / c);
d = a % c;
if (d == 0) {
for (i = 0; i < 4; i++) {
as[i] = ("" + a).substr(i, 1);
}
for (i = 0; i < 4; i++) {
as[i + 4] = ("" + b).substr(i, 1);
}
as[8] = c;
if (checker(as) == 0) {
document.write(a + " ÷ " + b + " = " + c + " … " + d + "<br>");
}
}
}
}
function checker(rs) {
rs.sort();
for (h = 0; h < 9; h++) {
if (rs[h] != h + 1) {
return (1);
}
}
return (0);
}
for (a = 1234; a <= 9876; a++) {
for (c = 1; c <= 9; c++) {
b = Math.floor(a / c);
d = a % c;
if (d == 0) {
for (i = 0; i < 4; i++) {
as[i] = ("" + a).substr(i, 1);
}
for (i = 0; i < 4; i++) {
as[i + 4] = ("" + b).substr(i, 1);
}
as[8] = c;
if (checker(as) == 0) {
document.write(a + " ÷ " + b + " = " + c + " … " + d + "<br>");
}
}
}
}
function checker(rs) {
rs.sort();
for (h = 0; h < 9; h++) {
if (rs[h] != h + 1) {
return (1);
}
}
return (0);
}
「4桁÷4桁=1桁」の代わりに「4桁÷1桁=4桁」に置き換えています。
その結果は次の通り。
2通りしかありませんので、数学的に解けるかもしれません。
実行結果
6952 ÷ 1738 = 4 … 0
7852 ÷ 1963 = 4 … 0
2022年6月22日追記
Pythonで書いてみました。かなり短くなります。
import itertools
l = range(1, 10)
p = itertools.permutations(l, 9)
for v in p:
a = v[0] * 1000 + v[1] * 100 + v[2] * 10 + v[3] * 1
b = v[4] * 1000 + v[5] * 100 + v[6] * 10 + v[7] * 1
c = v[8]
if a / b == c:
print(a, b, c)
l = range(1, 10)
p = itertools.permutations(l, 9)
for v in p:
a = v[0] * 1000 + v[1] * 100 + v[2] * 10 + v[3] * 1
b = v[4] * 1000 + v[5] * 100 + v[6] * 10 + v[7] * 1
c = v[8]
if a / b == c:
print(a, b, c)
実行結果
6952 1738 4
7852 1963 4
コメント
お世話になります。突然のコメントで大変失礼いたします
私、日本テレビでクイズ番組を制作しております、
中川と申します。
この度、スマホで答えを検索するというクイズ番組内で
計算式のクイズ問題の出題をしまして、
その際、下記サイト及び画像を使用させて頂きたく思っております。
https://stabucky.com/wp/archives/1684
つきましては、番組の概要およびご相談内容を記載した企画書を
お送りさせて頂きたく思っておりますので
下記メールアドレスまでご返信頂けますと幸いです。
編集段階の番組ですので放送に使用させて頂くかは未定となっております。
放送日が近くなりましたら、またご連絡させて頂きます。
ご不明な点等ございましたら、
下記連絡先まで、ご連絡いただければと思います。
中川様
了解しました。
よろしくお願いします。