모바일 오유 바로가기
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
    조회수 : 5696
    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 초과시 해당없음)

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

    번호 제 목 이름 날짜 조회 추천
    68873
    식기들 끓는물 소독 & 다시 흐르는 물에 씻기 [2] 눙물이눙물이 24/11/22 12:29 656 2
    68872
    질문? 대기권 재진입 내열타일 실험할 때 산소도 공급하나요? [3] Young.K 24/11/21 15:31 450 2
    68871
    현직 물리학 교수가 올린 수학 잘하는 법 [3] 제임스Bond 24/11/20 18:04 731 1
    68870
    아인슈타인도 예측하지 못했던 천체현상의 발견 [3] ㅗㅠㅑ 24/11/11 16:43 951 3
    68869
    수십1년간 묵혀졌던 궁금증이 ChatGPT를 통해 해소 됐습니다. [2] ㅗㅠㅑ 24/11/10 22:56 1096 3
    68868
    0.9999.... = 1 그럼 ....999999999 는??? [4] Young.K 24/11/08 14:47 922 3
    68866
    이 덩치큰녀석 언제 다 올렸지 신기하다 [3] dogcat 24/11/05 16:11 993 2
    68865
    우리가 사는 세상이 가상현실이라는 증거 [1] ㅗㅠㅑ 24/11/05 13:26 854 3
    68864
    대기 중 CO2 획기적 제거 신물질 'COF-999' 개발 "눈길" [5] 펌글 우가가 24/11/04 00:01 998 3
    68863
    김범준 교수님이 했던 기억에 남는말, 물질이 빛보다 빠를 수 없는 이유 [2] Oh_My!_Girl 24/10/29 16:57 1154 2
    68861
    귀신(?)에 대한 공포는 사람이 아닌 다른 동물들도 마찬가지인걸까요? [2] Oh_My!_Girl 24/10/28 11:29 1053 2
    68856
    물리학에서 질량은 우주어디에서나 변함없이 같다 .특수상대성이론은 [4] dogcat 24/10/21 20:41 1105 0
    68855
    우주의 크기는 대략 140억광년이다. [6] dogcat 24/10/21 20:03 1385 2
    68854
    블랙홀과 열역학 [4] 달음 24/10/17 00:24 1425 0
    68853
    음식무게와 살찌는 체중증가의 관계? [6] 리버풀7 24/10/16 20:57 1201 0
    68852
    [도움] 수학문제 풀이가능하신분 ! [5] 유전자몰빵 24/10/09 17:06 1322 0
    68851
    [잡설] 양자얽힘과 초공간과 암흑물질과. [2] Young.K 24/10/01 22:39 1451 0
    68850
    음악 자주 듣는 분들 과학적 꿀팁 [2] 사나이직각 24/09/28 22:49 1644 2
    68848
    등가원리가 맞다면, 가속도 운동도 시공간휨을 발생시키는가? [2] 본인삭제금지 arevo 24/09/22 01:00 1616 1
    68847
    폴라리스 던. 극궤도 유인 탐사 1400km 돌파! +EVA [1] 펌글 Young.K 24/09/11 17:45 1582 0
    68846
    무한히 작은 확률을 31%까지 끌어올리는 방법 [2] 펌글 우가가 24/09/04 23:14 2228 5
    68845
    [소식] 스타라이너 스피커에서 나는 소리가 해결되었다고 합니다. [2] Young.K 24/09/02 11:04 1920 1
    68844
    [펌] 시카노코노코노코 Young.K 24/08/31 17:16 1740 1
    68843
    프리 노벨상 인체물리학 24/08/30 10:39 1742 0
    68842
    안녕하세요 오랜만에 질문드리네요! 삼차함수 미분문제 풀어주실분 계실까요? [2] 창작글본인삭제금지 난선생너학생 24/08/29 14:39 1714 1
    68841
    [펌] 팰컨9 B1062 부스터가 착륙에 실패하여 파괴되었습니다(추가3) [2] Young.K 24/08/29 00:52 1903 1
    68840
    [펌] 스타라이너 승무원들은 Crew-9으로 복귀합니다. [4] Young.K 24/08/25 04:07 2104 1
    68839
    비행기가 뜨는 양력 이론 쉽게 이해 하기. [11] 나비의아이 24/08/14 06:50 2437 3
    68838
    슈퍼컴퓨터로 지진운의 과학적 입증? [6] 나비의아이 24/08/14 04:52 2284 0
    68837
    [펌] 보잉 스타라이너 CST-100 승무원 대체 귀환 고려 중. [6] 펌글 Young.K 24/08/08 18:33 2218 1
    [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [다음10개▶]
    단축키 운영진에게 바란다(삭제요청/제안) 운영게 게시판신청 자료창고 보류 개인정보취급방침 청소년보호정책 모바일홈