728x90

문제

 We * love = CodelQ

 W = 7 e =4 l =3 o = 8 v =0 C =2 d =1 l =9 Q =6

 74*3804=281496

 

다음 식을 만족하는 숫자 대입 방법은 몇 가지 있는지 구해 보세요. (단 최상위 문자에 0은 들어가지 않고 다른 문자에는 다른 숫자가 대입됩니다)

 

READ + WRITE + TALK = SKILL

 

난이도

IQ 80

 

목표시간

20분

 

풀이(c#,VS)

1. 

-

 

문제정답(사용언어:python)

 

1.

  r e a d
w r i t e
  t a l k
s k i l l
w+1=s or w+2=s   e+a=8 or e+a=9 or e+a=10 a+t=8 or a+t=9 or a+t=10

(d+e+k)%10 = l

((a+t+l)*10+d+e+k)%100 = l*11

#풀이1
from itertools import permutations

count =0;
for (r,e,a,d,w,i,t,l,k,s) in permutations(range(10)):
    if r==0 or w==0 or t==0 or s==0:
        continue

    read = r*1000 + e*100 + a*10 +d
    write = w*10000 + r*1000 +i*100 + t*10 + e
    talk = t*1000 + a*100 + l*10 + k
    skill = s*10000 + k*1000 +i*100 + l*10 + l
    if read+write+talk==skill:
        count +=1

print(count)

#풀이2    디버깅이 안된다.. 예제 소스(책 소스랑 좀 다르다) 찾아서 받아서 돌려봤는대도 안된다..
import re
from itertools import permutations
from collections import OrderedDict

count =0

for(e,a,d,t,k,l) in permutations(range(0,10),6):
    if ((a+t==8) or (a+t==9) or (a+t==10)) and\
       ((a+e==8) or (a+e==9) or (a+e==10)) and\
       ((d+e+k)%10==1) and\
       (((a+t+l)*10+d+e+k)%100==l*11):
       
        temp = [item for item in range(0,10) if item not in [k,e,d,l,t,a]]
        for(i,r,s,w) in permutations(temp,4):
            if((r!=0) and (w!=0) and (t!=0)) and\
                ((s==w+1)or(s==w+2)):
                   
                    read = r*1000 + e*100 + a*10 +d
                    write = w*10000 + r*1000 +i*100 + t*10 + e
                    talk = t*1000 + a*100 + l*10 + k
                    skill = s*10000 + k*1000 +i*100 + l*10 + l
                    print("{}+{}+{}={}".format(read,write,talk,skill))
                    if read+write+talk==skill:
                        print("d{}+{}+{}={}".format(read,write,talk,skill))
                        count +=1

print(count)

 

책 제목 그대로... 코딩 퍼즐? 같은 느낌이다.. 쓰기 위한 코드? 알고리즘이라기 보단 다양한 방법으로 끼워 맞추는 놀이같은 문제다.. ㅜㅜ...

 

 

728x90

+ Recent posts