모바일 오유 바로가기
http://m.todayhumor.co.kr
분류 게시판
베스트
  • 베스트오브베스트
  • 베스트
  • 오늘의베스트
  • 유머
  • 유머자료
  • 유머글
  • 이야기
  • 자유
  • 고민
  • 연애
  • 결혼생활
  • 좋은글
  • 자랑
  • 공포
  • 멘붕
  • 사이다
  • 군대
  • 밀리터리
  • 미스터리
  • 술한잔
  • 오늘있잖아요
  • 투표인증
  • 새해
  • 이슈
  • 시사
  • 시사아카이브
  • 사회면
  • 사건사고
  • 생활
  • 패션
  • 패션착샷
  • 아동패션착샷
  • 뷰티
  • 인테리어
  • DIY
  • 요리
  • 커피&차
  • 육아
  • 법률
  • 동물
  • 지식
  • 취업정보
  • 식물
  • 다이어트
  • 의료
  • 영어
  • 맛집
  • 추천사이트
  • 해외직구
  • 취미
  • 사진
  • 사진강좌
  • 카메라
  • 만화
  • 애니메이션
  • 포니
  • 자전거
  • 자동차
  • 여행
  • 바이크
  • 민물낚시
  • 바다낚시
  • 장난감
  • 그림판
  • 학술
  • 경제
  • 역사
  • 예술
  • 과학
  • 철학
  • 심리학
  • 방송연예
  • 연예
  • 음악
  • 음악찾기
  • 악기
  • 음향기기
  • 영화
  • 다큐멘터리
  • 국내드라마
  • 해외드라마
  • 예능
  • 팟케스트
  • 방송프로그램
  • 무한도전
  • 더지니어스
  • 개그콘서트
  • 런닝맨
  • 나가수
  • 디지털
  • 컴퓨터
  • 프로그래머
  • IT
  • 안티바이러스
  • 애플
  • 안드로이드
  • 스마트폰
  • 윈도우폰
  • 심비안
  • 스포츠
  • 스포츠
  • 축구
  • 야구
  • 농구
  • 바둑
  • 야구팀
  • 삼성
  • 두산
  • NC
  • 넥센
  • 한화
  • SK
  • 기아
  • 롯데
  • LG
  • KT
  • 메이저리그
  • 일본프로야구리그
  • 게임1
  • 플래시게임
  • 게임토론방
  • 엑스박스
  • 플레이스테이션
  • 닌텐도
  • 모바일게임
  • 게임2
  • 던전앤파이터
  • 마비노기
  • 마비노기영웅전
  • 하스스톤
  • 히어로즈오브더스톰
  • gta5
  • 디아블로
  • 디아블로2
  • 피파온라인2
  • 피파온라인3
  • 워크래프트
  • 월드오브워크래프트
  • 밀리언아서
  • 월드오브탱크
  • 블레이드앤소울
  • 검은사막
  • 스타크래프트
  • 스타크래프트2
  • 베틀필드3
  • 마인크래프트
  • 데이즈
  • 문명
  • 서든어택
  • 테라
  • 아이온
  • 심시티5
  • 프리스타일풋볼
  • 스페셜포스
  • 사이퍼즈
  • 도타2
  • 메이플스토리1
  • 메이플스토리2
  • 오버워치
  • 오버워치그룹모집
  • 포켓몬고
  • 파이널판타지14
  • 배틀그라운드
  • 기타
  • 종교
  • 단어장
  • 자료창고
  • 운영
  • 공지사항
  • 오유운영
  • 게시판신청
  • 보류
  • 임시게시판
  • 메르스
  • 세월호
  • 원전사고
  • 2016리오올림픽
  • 2018평창올림픽
  • 코로나19
  • 2020도쿄올림픽
  • 게시판찾기
  • 게시물ID : science_58034
    작성자 : 양궁
    추천 : 16
    조회수 : 5360
    IP : 218.158.***.9
    댓글 : 15개
    등록시간 : 2016/03/30 08:48:48
    http://todayhumor.com/?science_58034 모바일
    [스압]사칙연산, 10 만들기 경우의 수를 전부 풀어봤어요
    옵션
    • 창작글

    새벽 오유는 이렇게 무서운것입니다 여러분..

    베오베의 '다시보는 과게 레전드'라는 글을 읽고 1부터 9까지 네개의 서로다른 수를 골라서 10이 되게 사칙연산을 만드는걸 해보았습니다.


    ## 결과 ##

    1234 : ['((2*4-1)+3)', '(4+(2*3))*1', '(1*2*3+4)', '(1+(3/2))*4', '((3+(2*4))-1)', '(2/1*3+4)', '1+2+3+4', '(3/1*4-2)', '(1*3*4-2)', '(3-(1/2))*4']
    1235 : ['(1-2+3)*5', '(2+3+5)*1', '(3*(5-1)-2)', '((2/1+3)+5)', '(2+3+5)/1', '((2*3-1)+5)', '(1+3)/2*5', '((1*2+3)+5)', '((5+(2*3))-1)', '((2+(1*3))+5)', '((2+(3/1))+5)']
    1236 : ['(2*(3-1)+6)', '((3-1)*6-2)', '(1+(2/3))*6', '(2-(1/3))*6', '2-1+3+6', '(2/3+1)*6', '((1+(2*6))-3)']
    1237 : ['(1-3+7)*2', '(3*7-1)/2', '((2-1)*3+7)', '(1-3)*(2-7)', '(3/(2-1)+7)']
    1238 : ['(8-(1*3))*2', '(8-(3/1))*2', '((1+3)/2+8)', '2/1*(8-3)', '1*2*(8-3)', '1-2+3+8']
    1239 : ['(9-1-3)*2', '((1+2)/3+9)', '(3-2+9)*1', '((3-(2/1))+9)', '((3-(1*2))+9)', '(3-2+9)/1', '(1/(3-2)+9)', '((1*3-2)+9)']
    1245 : ['(4-(2/1))*5', '4/1/2*5', '(4/1-2)*5', '(4-(1*2))*5', '2-1+4+5', '(1*4-2)*5', '1/2*4*5']
    1246 : ['(1-6)*(2-4)', '((1+6)*2-4)', '(4/(2-1)+6)', '4/2*(6-1)']
    1247 : ['((4/2+1)+7)', '(1*2*7-4)', '1-2+4+7', '((1+(4/2))+7)', '(2/1*7-4)']
    1248 : ['((1*4-2)+8)', '(1/2*4+8)', '(8+(4/2))*1', '((4/1-2)+8)', '(4-2+8)/1', '((4-(1*2))+8)', '(2*(8-1)-4)', '(1-4+8)*2', '(8+(4/2))/1', '(4/1/2+8)', '((4-(2/1))+8)']
    1249 : ['1*2*(9-4)', '(9-(4/1))*2', '((9+(4/2))-1)', '(9-(1*4))*2', '4-1-2+9', '2/1*(9-4)', '((4/2-1)+9)']
    1256 : ['5/(1+2)*6', '1-2+5+6', '(6/2-1)*5']
    1257 : ['(5-2+7)*1', '((1*5-2)+7)', '(5-2+7)/1', '((1+5)/2+7)', '((5/1-2)+7)', '((5-(2/1))+7)', '((1+(2*7))-5)']
    1258 : ['((8/2+1)+5)', '5-1-2+8', '((5-1)/2+8)', '((1+(8/2))+5)', '((2*8-1)-5)']
    1259 : ['(1-5+9)*2', '((1+9)/2+5)']
    1267 : ['6-1-2+7', '(7+(6/2))*1', '(6/1/2+7)', '(1/2*6+7)', '((1+7)*2-6)', '(7+(6/2))/1', '((1+7)/2+6)']
    1268 : ['((6/2-1)+8)', '(6+(8/2))*1', '((8+(6/2))-1)', '(2/1*8-6)', '(6/(1+2)+8)', '((1+2)*6-8)', '(6+(8/2))/1', '(1/2*8+6)', '(8/1/2+6)', '(1*2*8-6)']
    1269 : ['(2*(9-1)-6)', '((9-1)/2+6)']
    1278 : ['((1+(2*8))-7)', '((2*8+1)-7)', '((8/2-1)+7)', '((7+(8/2))-1)']
    1279 : ['(9/(1+2)+7)', '((2*9-1)-7)']
    1289 : ['(1*2*9-8)', '(2/1*9-8)']
    1345 : ['4/(3-1)*5', '((3*5-1)-4)', '(1-3+4)*5', '((1+4)*3-5)']
    1346 : ['(1+4)/3*6', '((1+3)*4-6)']
    1347 : ['(3*(7-4)+1)', '((3-1)*7-4)']
    1348 : ['(4/(3-1)+8)', '1-3+4+8']
    1349 : ['(1/(4-3)+9)', '(4-3+9)*1', '((4-(3/1))+9)', '((1+3)/4+9)', '(1-3)*(4-9)', '((4-(1*3))+9)', '((1*4-3)+9)', '(4-3+9)/1']
    1356 : ['(6-1-3)*5', '5/1/3*6', '(1-6)*(3-5)', '((3*5+1)-6)', '1/3*5*6', '((1+(3*5))-6)']
    1357 : ['1-3+5+7', '5/3*(7-1)']
    1358 : ['(5-3+8)/1', '(5-3+8)*1', '((5/1-3)+8)', '((5-(3/1))+8)', '((1+5)*3-8)', '((1+5)/3+8)', '5/(1+3)*8', '((5-(1*3))+8)']
    1359 : ['5-1-3+9', '(9/3-1)*5']
    1367 : ['(6-3+7)/1', '(6-3+7)*1', '((3*6-1)-7)', '((6-(3/1))+7)', '((1+(6/3))+7)', '((6/3+1)+7)', '((6-(1*3))+7)', '((1*6-3)+7)', '((6/1-3)+7)']
    1368 : ['(8/(3-1)+6)', '((3-1)*8-6)', '(6/1/3+8)', '(1/3*6+8)', '(8+(6/3))/1', '6-1-3+8', '(8+(6/3))*1', '(1*3*6-8)', '(3/1*6-8)']
    1369 : ['((3*6+1)-9)', '((9+(6/3))-1)', '((1+(3*6))-9)', '((6/3-1)+9)', '((1+(9/3))+6)', '((9/3+1)+6)']
    1378 : ['((7-1)/3+8)', '(3*(7-1)-8)', '((1+8)/3+7)']
    1379 : ['(1/3*9+7)', '(7+(9/3))/1', '(9/1/3+7)', '(7+(9/3))*1']
    1389 : ['((3-1)*9-8)', '((8+(9/3))-1)', '((9/3-1)+8)']
    1456 : ['(4*(5-1)-6)', '(6-(4/1))*5', '1*5*(6-4)', '(6-(1*4))*5', '5/1*(6-4)']
    1457 : ['(7-1-4)*5', '(1+7)/4*5', '(1+4)*(7-5)']
    1458 : ['1-4+5+8', '1/4*5*8', '5/1/4*8']
    1459 : ['((5-(4/1))+9)', '(1/(5-4)+9)', '((4*5-1)-9)', '((5-(1*4))+9)', '((1+4)/5+9)', '(5-4+9)/1', '5/4*(9-1)', '((1*5-4)+9)', '(5-4+9)*1']
    1467 : ['1-4+6+7']
    1468 : ['((6/1-4)+8)', '(1+4)*(8-6)', '((4-1)*6-8)', '((6-(1*4))+8)', '(6-4+8)*1', '((6-(4/1))+8)', '(6-4+8)/1', '(6-1)/4*8']
    1469 : ['(1+(9/6))*4', '(9/6+1)*4', '6-1-4+9']
    1478 : ['((1+(8/4))+7)', '7-1-4+8', '((1+7)/4+8)']
    1479 : ['(9/(4-1)+7)', '(1+4)*(9-7)']
    1489 : ['((8/4-1)+9)', '(9/4-1)*8', '((9+(8/4))-1)']
    1567 : ['(1-6)*(5-7)', '(1-6+7)*5']
    1568 : ['(8-(6/1))*5', '1*5*(8-6)', '1-5+6+8', '(8-(1*6))*5', '5/1*(8-6)']
    1569 : ['(6-5+9)/1', '((6-(1*5))+9)', '((1*6-5)+9)', '(6-5+9)*1', '((1+5)/6+9)', '((6-(5/1))+9)', '(1/(6-5)+9)', '(9-1-6)*5']
    1578 : ['((1*7-5)+8)', '((7/1-5)+8)', '((7-(1*5))+8)', '(1-7+8)*5', '(7-5+8)/1', '((7-(5/1))+8)']
    1579 : ['(9-(7/1))*5', '(9-(1*7))*5', '7-1-5+9', '5/1*(9-7)', '1*5*(9-7)']
    1589 : ['(1-8+9)*5', '((1+9)/5+8)']
    1678 : ['1-6+7+8']
    1679 : ['((1+6)/7+9)', '(1-6)*(7-9)', '(1/(7-6)+9)', '(7-6+9)*1', '((7-(1*6))+9)', '((1*7-6)+9)', '((7-(6/1))+9)', '(7-6+9)/1']
    1689 : ['8-1-6+9']
    1789 : ['((8-(7/1))+9)', '((1*8-7)+9)', '((8-(1*7))+9)', '(8-7+9)/1', '(8-7+9)*1', '(1/(8-7)+9)', '((1+7)/8+9)']
    2345 : ['((4/2+3)+5)', '(2+4)/3*5', '(2*3-4)*5', '3-2+4+5', '2/(4-3)*5', '((2*4-3)+5)', '((3+(4/2))+5)', '((5+(2*4))-3)']
    2346 : ['(3-4+6)*2', '(2+3)*(6-4)', '(4/(3-2)+6)', '(2+(3/6))*4', '(4*(6-3)-2)', '((6/2+3)+4)', '(3/6+2)*4', '((3+(6/2))+4)']
    2347 : ['(3*4-7)*2', '(2+(4*7))/3', '(4*7+2)/3', '2-3+4+7']
    2348 : ['((2+4)/3+8)', '(2/(4-3)+8)', '(2-4)*(3-8)', '(3+(8/4))*2', '(3*8-4)/2', '(2+3)/4*8', '(2-(3/4))*8', '((8+(2*3))-4)', '((2*3-4)+8)']
    2349 : ['((3-(4/2))+9)', '2+3-4+9', '((3+9)/2+4)', '(4/3*9-2)', '(2/3*9+4)']
    2356 : ['((3+(2*6))-5)', '(2*(3+5)-6)', '2-3+5+6', '((5-3)*6-2)', '((3+5)/2+6)']
    2357 : ['5/2*(7-3)', '((2+(3*5))-7)', '(3-5+7)*2', '(2+3)*(7-5)', '(7-2-3)*5', '(2-7)*(3-5)', '((3+7)/2+5)']
    2358 : ['5/3*(8-2)', '(8-(2*3))*5']
    2359 : ['((2+3)/5+9)', '(2/(5-3)+9)', '((2+(9/3))+5)', '((2*9-3)-5)', '((2*3-5)+9)', '((9+(2*3))-5)']
    2367 : ['6/3*(7-2)', '(7-(6/3))*2']
    2368 : ['((6+8)/2+3)', '(8/6+2)*3', '(2*(3+6)-8)', '(2+(8/6))*3', '(3-6+8)*2']
    2369 : ['(2*3/6+9)', '(2-(3/9))*6', '6-2-3+9', '(6/2/3+9)']
    2378 : ['7-2-3+8', '((7-3)/2+8)', '2/3*(7+8)']
    2379 : ['((7-(2*3))+9)', '(2+3)*(9-7)', '((3*7-2)-9)', '(3-7+9)*2', '(3*9-7)/2', '((9-3)/2+7)']
    2389 : ['(3+8+9)/2', '((8/2-3)+9)', '((3+(2*8))-9)', '(8-(9/3))*2', '((2*8+3)-9)', '((9+(8/2))-3)']
    2456 : ['(2*4-6)*5', '(4-5+6)*2', '((4+6)/2+5)', '(2+6)/4*5']
    2457 : ['((5+7)/2+4)', '2-4+5+7', '((5-(4/2))+7)', '((2*4-5)+7)', '((7+(2*4))-5)']
    2458 : ['(2*(4+5)-8)', '(2/(5-4)+8)', '(8-2-4)*5', '((4*5-2)-8)', '5/2*(8-4)']
    2459 : ['2+4-5+9']
    2467 : ['(6*7-2)/4', '(2/4*6+7)', '(6/(4-2)+7)', '(6-(7/2))*4', '(2-7)*(4-6)', '(4-6+7)*2']
    2468 : ['(2/4*8+6)', '((2*4-6)+8)', '(8/(4-2)+6)', '((8+(2*4))-6)', '((2+(8/4))+6)', '((4-2)*8-6)', '((2+6)/4+8)', '(4/2*8-6)']
    2469 : ['(2*(9-6)+4)', '((2+4)/6+9)', '((4-(6/2))+9)', '(4*(9-6)-2)', '(2/(6-4)+9)']
    2478 : ['((2*7+4)-8)', '(7-(8/4))*2', '((4+(2*7))-8)', '(4*7-8)/2', '(4-7+8)*2']
    2479 : ['(7-(9/2))*4', '((2*4-7)+9)', '((9+(2*4))-7)', '(4+7+9)/2', '7-2-4+9']
    2489 : ['(4-8+9)*2', '(2*4/8+9)', '(8/2/4+9)', '(4/2*9-8)', '((4-2)*9-8)']
    2567 : ['2*5*(7-6)', '2-5+6+7', '(6*(7-5)-2)', '((2*6+5)-7)', '((5+(2*6))-7)', '2*5/(7-6)']
    2568 : ['(2/(6-5)+8)', '(2*(6-5)+8)', '((5-2)*6-8)', '(6-(8/2))*5', '(6*8+2)/5', '5/(6-2)*8', '((5-(6/2))+8)', '(2+(6*8))/5']
    2569 : ['2+5-6+9', '(5+6+9)/2']
    2578 : ['(5+7+8)/2', '2*5*(8-7)', '2*5/(8-7)']
    2579 : ['(2/(7-5)+9)', '((2*7+5)-9)', '((2+5)/7+9)', '((5+(2*7))-9)']
    2589 : ['2*5*(9-8)', '2*5/(9-8)', '8-2-5+9', '((9-5)/2+8)', '((5-(8/2))+9)']
    2678 : ['(6+7-8)*2', '(2*(7-6)+8)', '(2-7)*(6-8)', '(2/(7-6)+8)']
    2679 : ['((7+(2*6))-9)', '2+6-7+9', '(6*(9-7)-2)', '(2/6*9+7)', '((2*6+7)-9)']
    2689 : ['(6+8-9)*2', '(8/6*9-2)', '(2/(8-6)+9)', '((2+6)/8+9)']
    2789 : ['2+7-8+9', '(8*9-2)/7']
    3456 : ['3*4*5/6', '(4-(6/3))*5', '3-4+5+6']
    3457 : ['((4*5-3)-7)', '((5+(3*4))-7)', '((4+5)/3+7)', '((3*4+5)-7)', '(3/(5-4)+7)']
    3458 : ['((3+5)/4+8)', '((3+(8/4))+5)', '3+4-5+8', '(4/(5-3)+8)']
    3459 : ['((4+(3*5))-9)', '(3-5)*(4-9)', '((3*5+4)-9)', '(9-3-4)*5']
    3467 : ['(4-(7/3))*6', '(6/3*7-4)', '(4*(7-3)-6)']
    3468 : ['(3*4/6+8)', '((4+8)/3+6)', '(3-8)*(4-6)', '((6+(3*4))-8)', '((4-(6/3))+8)', '((3*4+6)-8)']
    3469 : ['(4-(6/9))*3', '(4*9-6)/3', '3+4-6+9']
    3478 : ['(3-(7/4))*8']
    3479 : ['((3+4)/7+9)', '(3/(7-4)+9)', '((3*4+7)-9)', '((7+(3*4))-9)']
    3489 : ['((3-(8/4))+9)', '8-3-4+9']
    3567 : ['((5+7)/3+6)', '((5-(6/3))+7)', '((3*7-5)-6)', '(3+6-7)*5', '(3*(6-5)+7)', '(3/(6-5)+7)']
    3568 : ['3+5-6+8', '(8/(5-3)+6)', '((5-3)*8-6)']
    3569 : ['(3+9)*5/6', '3*5*6/9', '((6+9)/3+5)']
    3578 : ['5/(7-3)*8', '((3+7)/5+8)', '(3-8)*(5-7)', '(3+7-8)*5']
    3579 : ['3+5-7+9']
    3589 : ['((5-(9/3))+8)', '(3/(8-5)+9)', '(3+8-9)*5', '((3*8-5)-9)', '((3+5)/8+9)']
    3678 : ['3+6-7+8']
    3679 : ['(7*9-3)/6', '(9/(6-3)+7)', '((6-(9/3))+7)']
    3689 : ['((3+9)/6+8)', '3+6-8+9', '(3*6/9+8)', '(6/3*9-8)']
    3789 : ['(3-8)*(7-9)', '(3+7)*(9-8)', '(3+7)/(9-8)']
    4567 : ['5*6/(7-4)', '4+5-6+7']
    4568 : ['((4+6)/5+8)', '4*5/(8-6)', '(4+6-8)*5', '(4+8)*5/6']
    4569 : ['((4*6-5)-9)', '(6*9-4)/5']
    4578 : ['(4/(7-5)+8)', '((5-(8/4))+7)', '4+5-7+8']
    4579 : ['(4+7-9)*5', '(4-9)*(5-7)', '4*5/(9-7)']
    4589 : ['4+5-8+9']
    4678 : ['(6*(7-4)-8)', '4/6*(7+8)', '(4+(7*8))/6', '(4+6)*(8-7)', '(4+6)/(8-7)']
    4679 : ['((7+9)/4+6)']
    4689 : ['(4-9)*(6-8)', '(4+6)*(9-8)', '(4+6)/(9-8)']
    4789 : ['4+7+8-9', '(4/(9-7)+8)']
    5678 : ['5*(6+8)/7', '((7-5)*8-6)', '(8+(6*7))/5', '5+6+7-8', '(7*8-6)/5', '(8/(7-5)+6)', '((5+7)/6+8)']
    5679 : ['((6+9)/5+7)']
    5689 : ['5+6+8-9']
    5789 : ['((5+9)/7+8)', '((7-5)*9-8)', '(9/(8-5)+7)', '5*(7+9)/8']
    6789 : ['6*(7+8)/9', '(8*(9-7)-6)', '(8/(9-7)+6)']

    ##

    당연히 손으로 풀어서 했을리는 없죠. 지나가던 전산과는 에디터를 끄적여 봅니다..

    C++? 파이썬? LISP? MATLAB?

    과게인분들도 아실법한 것은 매트랩이나 파이썬일텐데, 좀더 대중성있는 파이썬으로 갑니다. 버전은 3.4.3

    ##

    어떻게 풀까 고민하다가 역시 요새 핫 하다는 함수형프로그래밍으로 풀어야겠습니다.

    일단 1234부터 6789까지의 수열을 만드는 것부터 일이네요.

    파이썬의 멋진 기능 list comprehension을 써봅시다.

    1.PNG

    수열이 간단하게 완성이 되었습니다.

    잠깐, 4자리수말고 n자리수를 계산할 수 있게하는건 어떨까 생각이 들었습니다. 올바른 전산학도는 하드코딩을 보고 그냥 지나치지 않지요

    123123.PNG

    수열생성기는 앞서 짜둔 코드가 있기에 함수형 프로그래밍 대신 eval을 사용하는 코드로 만들었습니다.

    ##

    프로그램까지 쓰는데 단순히 수열마다 사칙연산 식을 하나씩만 구한다면 아쉬울것 같네요

    가능한 모든 식을 계산해서, 출력하도록 하겠습니다.

    괄호까지 생각하려니 머리가 핑핑 돕니다.. 일단 1234라는 수가 주어지면 이를 가능한 모든 수식을 뽑아내는 함수를 만들어야겠습니다

    12314.PNG

    1234라는 수가 주어지면 이를 1234, 1243, 1324, 1342 .... 4321 로 뽑아내는 함수입니다. 사칙연산은 우선순위가 있기 때문이죠

    ##

    이제 연산결과가 10이 되는 식을 뽑아내는 함수를 만들어봅시다

    to_ten.PNG

    함수의 인자는 앞서 만들었던 list_of_orders에서 오는 배열을 받아서 함수 내부에 정의된 generate라는 함수로 넘겨줍니다.

    generate라는 내부함수는 식을 연산해서 10일경우  to_ten_exps라는 배열에 식을 저장할 수 있고

    숫자를 하나씩 넘겨주면서 식을 생성하고 생성된 식을 계속 넘겨받아 재귀호출되게 만들었습니다.

    귀도 반 로섬형이 tail call optimization을 지원하지 않게 만들어놔서 tail call optimization은 들어가지 않았습니다.

    ##

    이제 실제로 수식을 생성하는 make_expression 함수를 만들어봅시다.

    make_ex.PNG

    제일 시간이 많이 걸린 부분입니다. 중간에 결과를 확인하니 3478 : ['(3-(7/4))*8'] 이라는 수식을 생성하지 못했습니다.

    왜일까 고민하다가 발견한 것이, 하나씩 숫자를 받아와 생성을 하기 때문에  (3-7)  /  4 라는 입력에서 3-(7/4)를 만들어내지 못했던 것입니다

    덕분에 위에 generate함수도 좀 고치고 make_expression에서 방금과 같은 경우도 생성할 수 있도록 분기를 하나 더 늘려줍니다.

    사실 이 함수는 4자리수에 최적화된 함수입니다. 왜냐하면 모든 경우를 계산하려니 불필요한 연산이 너무 많아졌기 떄문이죠

    ## 

    결과가 제대로 나오기 시작합니다. 이제 중복되는 식을 없애봅시다. 사람이 보기엔 '4+3+2+1' 이나 '1+2+3+4'나 같은 식이겠지만 컴퓨터에게는 그렇지 않습니다.

    remove_du.PNG

    잠깐 커피를 마시며 고민하다가 해법을 발견합니다. 수식을 char단위로 쪼갠다음 sort를 해주면 될 것같습니다. 이를 다시 합쳐 문자열로 만들면 훌륭한 해시값이 될 것 같네요. 주저없이 dictionary의 키값으로 써줍니다.

    ##

    마지막으로 괄호가 너무 많으니 수식이 보기 좋지가 않네요. 특히나 (1+2+3+4) 같은 식의 마지막 괄호는 필요가 없는 것 같습니다. 과감히 날려줍시다.

    remove_brac.PNG

    이제 필요한 함수들이 완성이 되었습니다.

    하나로 합쳐봅시다

    fin.PNG

    지금까지 작성한 함수들이 generate_exp에서 합쳐지는걸 보니 당장 due가 내일인 프로젝트가 있었다는 사실도 까먹게됩니다..

    ##

    끝났습니다.. 

    과게에 올릴까 프게에 올릴까 고민을 했는데요, 결국 과게에서 나온 이슈이기에 과게에 올립니다.

    만들고보니 완전히 함수형 프로그래밍이라고 하기엔 무리가 있네요. state를 저장하고 참조하기 보다는 재귀적으로 인자를 넘겨준다는데 촛점을 맞췄습니다. 중간중간에 람다식을 써가며 코드골프라는 도전과제를 쫓고싶은 욕망이 절 유혹했지만, 가독성을 아예 우주끝으로 날려버리는 짓을 하면 귀도형에게 혼날 것 같아서 관뒀습니다. 

    사실 10을 구하는 수식이 있다는것을 단순히 증명하는 것이라면 훨씬 코드가 간결해질텐데, 제 목표는 가능한 수식들을 '아름답게' 보여주는 것이었습니다. 그렇기에 가능한 식들을 모두 생성하는 과정을 거쳐야했던 것이죠. dynamic programming을 함수형과 병행하기엔 상당히 귀찮은 도전과제가 될 것 같아서 충분한 최적화를 구현하진 못했습니다. 특히나 복잡한 재귀연산 덕분에 복잡도를 구하기도 힘들어져버렸네요

    full 소스코드는 출처란에 첨부했습니다. 혹시나 궁금하신분들을 위해

    물론 n자리 식도 계산할수 있게 만들었지만 왠만하면 시도하지 않으시는 것을 추천합니다. 식을 생성하는 함수가 4자리수에 적합하게 짜여있을 뿐더러 다섯자리의 수식은 생각만해도 가짓수가 어마어마합니다. 

    시간이 나면 좀더 간결한 코드로 만들어 보려고 합니다. 어디까지나 취미이니까요. 식을 생성하는 함수를 짜면서, 좀 더 알아보고 시작할걸 이라는 생각이 많이 들었습니다. 네자리수로 가능한 식이 그리 많지는 않을텐데요


    새벽 오유는 이렇게 무서운것입니다 여러분..



    출처 베오베글 : http://todayhumor.com/?science_58014

    소스코드 : http://todayhumor.com/?databox_63257
    양궁의 꼬릿말입니다
    KakaoTalk_20141215_024022141.jpg

    이 게시물을 추천한 분들의 목록입니다.
    [1] 2016/03/30 08:52:32  119.202.***.51  노동부  175237
    [2] 2016/03/30 08:54:04  180.224.***.119  메시의오른발  104646
    [3] 2016/03/30 09:23:58  128.134.***.85  헐랭날라리  442035
    [4] 2016/03/30 09:34:04  112.168.***.27  동글몽실  76474
    [5] 2016/03/30 09:39:00  115.21.***.194  스톤골렘  22945
    [6] 2016/03/30 09:59:14  119.199.***.26  워노  134821
    [7] 2016/03/30 10:02:24  203.237.***.247  헌혈  27641
    [8] 2016/03/30 10:05:55  223.194.***.95  움짤성애자  592795
    [9] 2016/03/30 10:24:56  39.7.***.33  길냥이땅콩  90368
    [10] 2016/03/30 10:26:21  175.223.***.9  응아응가응아  102221
    푸르딩딩:추천수 3이상 댓글은 배경색이 바뀝니다.
    (단,비공감수가 추천수의 1/3 초과시 해당없음)

    죄송합니다. 댓글 작성은 회원만 가능합니다.

    번호 제 목 이름 날짜 조회 추천
    68803
    삼체문제가 이해가 안되서 질문드려요 [6] 본인삭제금지 Oh_My!_Girl 24/04/24 12:42 611 1
    68802
    “빅뱅이론 시효 끝나“... ‘우리가 알고 있던 우주‘가 흔들린다 [12] 펌글 89.1㎒ 24/04/22 18:54 825 5
    68801
    이중슬릿 실험 반박 [5] visualwhit 24/04/21 13:56 700 0
    68800
    관상, 사주팔자, 손금 다 과학이라고 생각하는데.. [4] 철철대마왕 24/04/19 17:34 571 1
    68799
    인간의 유전자는 퇴화되고 있다는 논문 [10] visualwhit 24/04/19 16:14 816 1
    68798
    요즘들어 부쩍 과학에 대한 관심이 높아진듯 [3] 창작글 wanimemine 24/04/12 15:52 622 2
    68797
    국사선생이라서 괜찮아 [2] ㅗㅠㅑ 24/04/12 13:16 584 1
    68796
    수학선생이라서 괜찮아 [1] ㅗㅠㅑ 24/04/12 13:13 577 2
    68795
    중력파를 측정한 방법이 저의 머리론 이해가 잘 안돼요 [7] 열정사랑니 24/04/05 01:26 894 1
    68794
    1m × 1m × 1m 부피의 증류수의 무게는? [11] ㅗㅠㅑ 24/04/01 10:53 909 2
    68793
    gpt4와 클로드3의 대화입니다 (충격주의) [1] 창작글 일단짤라 24/03/11 20:45 1224 3
    68792
    주말에 비올 확률 15% 에 관한 수학 숙제 [1] Rekiel 24/03/07 07:40 1168 3
    68791
    [펌] AI 행렬연산? 그까이꺼 적당히 반올림 하고 계산하면 되잖아? [2] 펌글 Young.K 24/03/06 21:32 1000 3
    68790
    전기에 대한 오해: 실제 전기가 작동하는 방식 [2] 펌글 우가가 24/02/29 18:43 1315 3
    68789
    할로겐화합물 및 불활성기체의 화학식 [4] 뉴체어맨66 24/02/13 14:05 1231 0
    68788
    소방수리학 수두손실 해석필요 합니다. [2] 뉴체어맨66 24/02/01 07:14 1355 0
    68787
    [가설] 중력이 발생하는 이유. [7] Young.K 24/01/29 13:34 1727 2
    68786
    우주로 증발한 물은 어디로 갔을까요? [18] Young.K 24/01/19 00:15 2255 10
    68785
    만약 전인류가 고도비만이 된다면 환경문제가 생길까요? [2] 창작글 씨스루감자떡 24/01/04 00:49 1708 0
    68784
    (유투브) 흙, 미생물, 식물 [4] 펌글 솔로궁디Lv99 23/12/17 19:18 1750 4
    68783
    이산화탄소로 불끄기 펌글 우가가 23/12/15 17:47 1807 2
    68782
    방사능검사 관련하여 질문있습니다. [5] 푸루루딩딩 23/12/04 17:24 1756 0
    68781
    「지적 호기심을 위한 뇌과학 만화」셀프 책 홍보(하는 만화) 창작글 이즐라 23/11/30 14:03 1857 4
    68780
    최적멈춤문제 - 소개팅에서 성공하는 방법에 대하여 Rekiel 23/11/24 00:29 2129 8
    68779
    이 벌레 뭔가요 [2] 도시샤 23/11/03 14:58 2541 1
    68778
    무한동력 발전기 개발이 가능한가요? [7] 쌍파리 23/11/01 19:13 2760 4
    68777
    파동은 진공속에서 일정한 속도를 가질수있나요? [3] 뽀송아빠 23/10/31 18:40 2222 3
    68776
    쓰레기산이나 쓰레기섬에 밀웜 수백억마리 그냥 뿌리면 안되나요? [4] Oh_My!_Girl 23/10/28 16:53 2467 6
    68775
    노화치료ㆍ혹은 역노화가 예상시기에 대해 [3] 반다미 23/10/21 16:21 2222 0
    68772
    병같새 "반출생주의자" 들 [3] Oh_My!_Girl 23/10/15 22:45 2159 0
    [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [다음10개▶]
    단축키 운영진에게 바란다(삭제요청/제안) 운영게 게시판신청 자료창고 보류 개인정보취급방침 청소년보호정책 모바일홈