python 3学習1>>1、2、3、4、5、6、7、8、9を3つの3桁に組み合わせ、数字ごとに1回だけ使用し、3桁ごとに完全な平方数にすることを要求します.この3つの3桁を小さい順に出力します.
13086 ワード
pythonバージョンのソリューションが見つからなかった
隣の男の簡単な書き方
import math
lt = []
#
for i in range(1,10):
for j in range(1,10):
if i == j:
continue
for x in range(1,10):
if i == x or j == x:
continue
hh = i*100+j*10+x
b = math.sqrt(hh)
yy, y = math.modf(b)
if yy == 0 :
# print(i, j, x)
lt.append(hh)
# print(lt)
import itertools
#
lt2 = itertools.permutations(lt,3)
# print(list(lt2))
#
for i in lt2:
xx = ''
for j in i:
xx +=str(j)
yy = sorted(xx)
if len(set(yy)) == 9:
print(xx[:3])
print(xx[3:6])
print(xx[6:])
print('************')
#
break
隣の男の簡単な書き方
# a s
def choose_number(a, s):
a = str(a)
if a[0] != a[1] and a[0] != a[2] and a[1] != a[2]:
s.append(int(a))
#
def choose_three(a, b, c):
a1 = str(a)
b1 = str(b)
c1 = str(c)
d = a1+b1+c1
d = set(d)
if len(d) == 9:
return 1
else:
return 0
s = []
for i in range(10, 32):
# print(i)
choose_number(i*i, s)
for i in range(len(s)-2):
for j in range(i+1, len(s)-1):
for k in range(j+1, len(s)):
if choose_three(s[i], s[j], s[k]) == 1:
print(s[i], s[j], s[k])
# print(choose_number(10*10,s))