Avangs

  • 게임 정보
    • 게임 소개
    • 게임 리뷰
    • 게임 실황
    • 게임 공략
    • 모바일 테스트
  • 게임 작품new
    • 완성작 게임
    • 체험판 게임
    • 한글판 게임new
    • 온라인 게임
    • 추천작 제작자 저장소
  • 투표선정 작품
    • 아방스 추천작
    • 완성 기대작
    • 투표 신청
    • 투표소
    • 투표 결과
  • 강좌
    • 아방스 칼럼
    • 비주얼노벨 강좌
    • 알만툴 강좌
      • MZ 강좌
      • MV 강좌
      • VX Ace 강좌
      • VX 강좌
      • XP 강좌
      • 2003 강좌
      • 2000 강좌
    • 게임메이커 강좌
    • 울프툴 강좌
    • 3D 게임제작 강좌
    • 2D 게임제작 강좌
    • 그래픽 제작 강좌
    • 기타 강좌
  • 질문과 답변
    • 자주 묻는 질문
    • 질문과 답변
    • 제작의뢰
  • 커뮤니티
    • 구인·구직·외주
    • 테스트 요청
    • 자유게시판
    • 게임계 소식
    • 유머&정보
    • 사이트링크
    • 이벤트&대회
  • 창작
    • 게임 기획
    • 맵배치
    • 글쓰기
    • 그리기
    • 음악
  • 자료실
    • 게임제작툴
    • 예제 및 샘플
    • 그래픽 소재
      • 오리지널 소재
      • 이차창작 소재
      • 수정·개조 소재
      • 외부 소재
    • 사운드 소재
    • 확장·플러그인·스크립트
      • MZ 플러그인
      • MV 플러그인
      • Ace 스크립트
      • VX 스크립트
      • XP 스크립트
      • 2k3 플러그인
      • VN 플러그인·확장
    • 외부 소재사이트
    • 기타 자료
      • 한글화툴
      • 무료 폰트
      • 유틸리티
    • 디자인 참고자료
  • 고객센터
    • 공지사항
    • 건의 및 신고
    • 핫 이슈
로그인 회원가입
Avangs
  • 게임 정보
    • 게임 소개
    • 게임 리뷰
    • 게임 실황
    • 게임 공략
    • 모바일 테스트
  • 게임 작품new
    • 완성작 게임
    • 체험판 게임
    • 한글판 게임new
    • 온라인 게임
    • 추천작 제작자 저장소
  • 투표선정 작품
    • 아방스 추천작
    • 완성 기대작
    • 투표 신청
    • 투표소
    • 투표 결과
  • 강좌
    • 아방스 칼럼
    • 비주얼노벨 강좌
    • 알만툴 강좌
      • MZ 강좌
      • MV 강좌
      • VX Ace 강좌
      • VX 강좌
      • XP 강좌
      • 2003 강좌
      • 2000 강좌
    • 게임메이커 강좌
    • 울프툴 강좌
    • 3D 게임제작 강좌
    • 2D 게임제작 강좌
    • 그래픽 제작 강좌
    • 기타 강좌
  • 질문과 답변
    • 자주 묻는 질문
    • 질문과 답변
    • 제작의뢰
  • 커뮤니티
    • 구인·구직·외주
    • 테스트 요청
    • 자유게시판
    • 게임계 소식
    • 유머&정보
    • 사이트링크
    • 이벤트&대회
  • 창작
    • 게임 기획
    • 맵배치
    • 글쓰기
    • 그리기
    • 음악
  • 자료실
    • 게임제작툴
    • 예제 및 샘플
    • 그래픽 소재
      • 오리지널 소재
      • 이차창작 소재
      • 수정·개조 소재
      • 외부 소재
    • 사운드 소재
    • 확장·플러그인·스크립트
      • MZ 플러그인
      • MV 플러그인
      • Ace 스크립트
      • VX 스크립트
      • XP 스크립트
      • 2k3 플러그인
      • VN 플러그인·확장
    • 외부 소재사이트
    • 기타 자료
      • 한글화툴
      • 무료 폰트
      • 유틸리티
    • 디자인 참고자료
  • 고객센터
    • 공지사항
    • 건의 및 신고
    • 핫 이슈
로그인 회원가입

NOTICE

공지사항
더보기
  • 서버 안정성 및 보안 강화 조치 04.20

Recently Added Games

최근 등록 게임
  • 어드벤쳐 고철에 파묻힌 데모나 (屑鉄まとうデモナ) newfile 08.19
  • 어드벤쳐 비올레 저택의 시온 : 꽃눈의 저택|RPG Maker MZ 단편 심리공포 어드벤처 file 08.17
  • 기타 (똥 주의)그저 똥을 누러 가는 게임 Re:Boot updatefile 08.16
  • 롤플레잉 SACCHARINE SYNC (DEMO) 배포 file 08.12
  • 기타 (완성작) 야구장에 가자4 file 2 07.07
기타
2010.10.03 19:26

프로그래밍 스킴 Scheme 4 "3두개 7두개로 24를 만들려면?" 프로그래밍으로 풀기 2

profile
정체불명
조회 수 2523 추천 수 0 댓글 0
크게 작게 위로 아래로 댓글로 가기 인쇄
크게 작게 위로 아래로 댓글로 가기 인쇄
3두개 7두개로 24를 만들려면?을 스킴(Scheme) 프로그래밍으로 풀기 2

자 여기까지 왔다.

===그럼 나머지 함수들을 알아보자.===
let if begin = 정도 밖에 안남았다. 
대부분 직관적으로 이해 가능한 것이므로 쉽게쉽게 읽어보자.
===if와 = 그리고 begin을 알아보자===
if는 (if () () ())와 같은 구조다 첫번째 괄호는 조건이 들어가고 두번째 괄호에는 조건이 참일때 실행될 식이 들어간다. 세번째 괄호에는 그 외의 경우에 실행할 식이 들어간다.
식을 적을때 그냥 순서대로 실행 했으면 할때가 아주 많이 있다.
예를들어서
((print "1") (newline) (print "2") (newline) (print "3") (newline))
과 같은 식을 실행하면 
1
2
3
이렇게 출력된 후에
(print "1")의 리턴값을 함수로 인식하고(괄호 제일 앞에 왔으니깐) 
newline의 리턴값 print "2"의 리턴값 등등을 인자로 해서 또 실행을 하려고 한다.
===확인하고 싶은 분들을 위해서===
에러의 내용을 보면 알수있다. 
procedure application: expected procedure, given: #<void>; arguments were: #<void> #<void> #<void> #<void> #<void> 
프로시져(함수)를 예상했는데 #<void>가 주어졌고 인자로 다섯개의 #<void>를 받았다.
라는 뜻이 되겠다.
=================================
이럴때 앞에다가 begin만 써주면 절차지향적(순서대로)으로 실행한다.
(begin (print "1") (newline) (print "2") (newline) (print "3") (newline))
오류없이 잘 출력된다.
===그럼 이번에는 let 을 알아보자===
let의 구조는 다음과 같다.
(let ((변수1 값1)(변수2 값2)(변수3 값3)(변수4 값4)) (변수를 사용하는 식))
변수를 하나만 적을수도 있다. 
하지만 그럴때에도 
(let ((변수1 값1)) (변수를 사용하는 식))과 같이 변수 대입하는 괄호밖에 또 괄호를 적어줘야 한다.
====================================

자!! 그럼 소스를 보자. 
나머지는 다 위에서 배웠으므로 신경 써서 볼곳은 ;;;;;;들로 둘러쌓인 부분 뿐이다.
재귀호출을 사용했다. 
그러면 무한루프가 될거라 예상하겠지만 
실제로는 EOF(파일의 끝)을 만나면 에러가 나면서 끝이 난다. 
파일의 끝을 만났을때 끝난다니 원하던바다 -_-;;
원래 에러처리를 해줘야 더 깔끔하고 좋지만 사실 필자가 이 에러처리를 잘 못해서 그냥 뒀다.
뭐 더 간단해졌으니까 그냥 두자.(핑계다 ㅠㅠ)
#lang scheme
(define out (open-output-file "test.txt"))

(for ([strings
       (for*/list ([b '(#()]
                   [op1 '(#+ #- #* #/)]
                   [s " "]
                   [b '(#()]
                   [op2 '(#+ #- #* #/)]
                   [s " "]
                   [b '(#()]
                   [op3 '(#+ #- #* #/)]
                   [s " "]
                   [b '(#()]
                   [op4 '(#+ #-)]
                   [s " "]
                   [ts1 '(#3 #7)]
                   [cb '(#))]
                   [s " "]
                   [b '(#()]
                   [op5 '(#+ #-)]
                   [s " "]
                   [st1 '(#7 #3)]
                   [cb '(#))]
                   [cb '(#))]
                   [s " "]
                   [ts2 '(#3 #7)]
                   [cb '(#))]
                   [s " "]
                   [ts3 '(#3 #7)]
                   [cb '(#))]   )
         (list->string (list b op1 s b op2 s b op3 s b op4 s ts1 cb s b op5 s st1 cb cb s ts1 cb s ts3 cb)))])
  (begin (display strings out) (display "rn" out)) )


(define ns (make-base-namespace))

(define in (open-input-file "test.txt"));
;;;;;;;신경써서 보도록 하자.;;;;;;;;;;;;;;;;;
(define (findsol)
  (let ((found (read in)))
    (if (= (eval found ns) 24) 
        (begin (display found)(newline)(findsol))
        (findsol))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(findsol)
(close-output-port out)

===그래서 답이 뭐라규?===
다음과 같이 출력될 것이다. 
(+ (+ (+ (+ 7) (+ 7)) 7) 3)
(+ (+ (+ (+ 7) (+ 7)) 7) 3)
(+ (+ (+ (+ 7) (+ 3)) 7) 7)
(+ (+ (+ (+ 7) (+ 3)) 7) 7)
(+ (+ (- (+ 7) (- 7)) 7) 3)
(+ (+ (- (+ 7) (- 7)) 7) 3)
(+ (+ (- (+ 7) (- 3)) 7) 7)
(+ (+ (- (+ 7) (- 3)) 7) 7)
(- (* (* (+ 3) (+ 3)) 3) 3)
(- (* (* (+ 3) (+ 3)) 3) 3)
(- (* (* (- 3) (- 3)) 3) 3)
(- (* (* (- 3) (- 3)) 3) 3)
(* (+ (/ (+ 3) (+ 7)) 3) 7)
(* (+ (/ (+ 3) (+ 7)) 3) 7)
(* (+ (/ (+ 7) (+ 7)) 7) 3)
(* (+ (/ (+ 7) (+ 7)) 7) 3)
(* (+ (/ (- 3) (- 7)) 3) 7)
(* (+ (/ (- 3) (- 7)) 3) 7)
(* (+ (/ (- 7) (- 7)) 7) 3)
(* (+ (/ (- 7) (- 7)) 7) 3)
. . =: expects type <number> as 1st argument, given: #<eof>; other arguments were: 24
마지막 줄은 파일의 끝(EOF)을 만났다는 에러이고 나머지는
2번씩 출력되기도하고 7이 3개인게 나오기도하고 그런 결과다.
앞에서 말한바와 같이 필자가 코드를 잘못 짰다. 
하지만 답이 안에 있고 찾는데 어려움 없으니 그냥 봐주도록 하자.하하...^^;
3두개 7두개인것을 고르고 중복된것을 무시하면 
(* (+ (/ (+ 3) (+ 7)) 3) 7)
(* (+ (/ (- 3) (- 7)) 3) 7)
요 두개가 나온다.
계산기로 계산해 보면 (3나누기7 더하기3 곱하기7)
답이 맞다는걸 알수있다. 후훗..!

Who's 정체불명

profile

두팔과 의지가 있는데 무엇을 못 하겠는가!

< http://mpnp.tistory.com >

0 추천 0 비추천
위로 아래로 댓글로 가기 인쇄
에디터 선택하기
✔ 텍스트 모드 ✔ 에디터 모드
?
댓글 쓰기 권한이 없습니다. 로그인 하시겠습니까?
Comment '0'

Category
  • css
  • C언어
  • XpressEngine
  • 게임기획
  • Vegas Pro
  • 시네마4D
  • 어도비 프리미어
  • 에프터 이펙트
    • 템플릿
    • 플러그인
  • 웹디자인 관련
  • 플래시
  • 기타
  • 메이킹 영상
  • OSX (맥)
  • 어플개발
  • 파이널컷X
List of Articles
분류 제목 글쓴이 날짜 조회 수
Vegas Pro 베가스 강좌 목록 아방스 2017.09.28 2445
파이널컷X 파컷 강좌 목록 아방스 2017.06.18 1850
기타 [C++] 게임엔진 가이드 3 App Class 쿼티만세12345 2017.01.01 339
기타 [C++] 게임엔진 가이드 2 App Layer. 쿼티만세12345 2017.01.01 598
기타 [C++] 게임엔진 가이드 1. 게임 엔진이란? 쿼티만세12345 2017.01.01 325
기타 [Windows] 윈도우 무비 메이커 2012 다운로드 링크 file 아방스 2016.11.19 848
기타 특별한 게임제작 특강! '게임제작, 어렵지 않아요!' 수퍼말이오 2015.10.28 393
기타 [mac/win] 어도비 cc 2014 오프라인 업데이트 파일 다운로드 주소 file 아방스 2015.05.10 542
기타 폴더 100개 일괄적으로 만들기 정체불명 2014.11.02 800
기타 에러 메세지를 텍스트로 복사하기 1 file 값싼뭉크 2014.04.26 935
기타 [RPGXP] 기술 데이터 읽기 실패 해결법 2 file 맵만드는중.. 2014.02.17 1805
기타 윈도우 게임을 휴대폰이나 태블릿으로 돌려보자 폰으로컴퓨터하기 2014.01.21 1495
기타 [루비] 프로그래밍 공부하는 법 1 자연철학의수학적원리 2013.10.25 1777
기타 [루비][네트워크] 다른 컴퓨터에서 명령어 받아서 실행후 결과 돌려주는 서버 자연철학의수학적원리 2013.10.25 1803
기타 [루비][네트워크][GUI] 서버에 명령어 보내서 실행결과 얻는 클라이언트 file 자연철학의수학적원리 2013.10.25 1541
기타 [루비][네트워크] 간단한 서버테스트하기 file 자연철학의수학적원리 2013.10.25 1473
기타 [루비][네트워크] 간단한 서버 만들기 자연철학의수학적원리 2013.10.25 1578
기타 [루비][GUI] 텍스트입력박스와 버튼, 이벤트 연결 file 자연철학의수학적원리 2013.10.25 1484
기타 [루비][GUI]텍스트입력상자 만들기 자연철학의수학적원리 2013.10.25 1403
기타 [루비][GUI] 버튼에 이벤트 연결하기 file 자연철학의수학적원리 2013.10.25 1430
기타 [루비][GUI] 버튼 만들기 file 자연철학의수학적원리 2013.10.25 1502
기타 [루비][GUI]윈도우 창을띄우기 file 자연철학의수학적원리 2013.10.25 2134
쓰기
Board Pagination Prev 1 2 3 4 5 6 Next
/ 6
AVANGS

게임 제작, 창작, 자료, 강좌를 연결하는 커뮤니티

  • 개인정보 취급방침

Copyright © 2026 Avangs