게시판 인덱스

 
 FAQFAQ   검색검색   멤버리스트멤버리스트   사용자 그룹사용자 그룹   사용자 등록하기사용자 등록하기 
 개인 정보개인 정보   비공개 메시지를 확인하려면 로그인하십시오비공개 메시지를 확인하려면 로그인하십시오   로그인로그인 

조교님이 올려주신 5-2 튜링머신 테스트셋
페이지로 1, 2  다음
 
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.210 Principles of Programming (Fall 2011)
이전 주제 보기 :: 다음 주제 보기  
글쓴이 메시지
kernys



가입: 2011년 10월 26일
올린 글: 10

올리기올려짐: 2011년10월30일 0:48    주제: 조교님이 올려주신 5-2 튜링머신 테스트셋 인용과 함께 답변

(define rt (empty-ruletable))
(set! rt (add-rule (make-rule 's0 'one (cons 'write 'one) 'left 's0) rt))
(set! rt (add-rule (make-rule 's0 'plus (cons 'write 'one) 'left 's1) rt))
(set! rt (add-rule (make-rule 's1 'one (cons 'write 'one) 'left 's1) rt))
(set! rt (add-rule (make-rule 's1 'BLANK (cons 'write 'BLANK) 'right 's2) rt))
(set! rt (add-rule (make-rule 's2 'one (cons 'write 'BLANK) 'right 's3) rt))
(set! rt (add-rule (make-rule 's3 'one (cons 'write 'one) 'right 's3) rt))
(set! rt (add-rule (make-rule 's3 'BLANK (cons 'write 'BLANK) 'left 's4) rt))

(define tm (make-tm (list 'one 'one 'one 'plus 'one 'one) (list 's4) 's0 rt))
(run-tm tm)



(set! rt (empty-ruletable))
(set! rt (add-rule (make-rule 's0 'a (cons 'write 'a_1) 'left 's1) rt))
(set! rt (add-rule (make-rule 's0 'b (cons 'write 'b_1) 'left 's2) rt))
(set! rt (add-rule (make-rule 's1 'a (cons 'write 'a) 'left 's1) rt))
(set! rt (add-rule (make-rule 's1 'b (cons 'write 'b) 'left 's1) rt))
(set! rt (add-rule (make-rule 's1 'a_2 (cons 'write 'a_2) 'left 's1) rt))
(set! rt (add-rule (make-rule 's1 'b_2 (cons 'write 'b_2) 'left 's1) rt))
(set! rt (add-rule (make-rule 's1 'BLANK (cons 'write 'a_2) 'right 's3) rt))
(set! rt (add-rule (make-rule 's2 'a (cons 'write 'a) 'left 's2) rt))
(set! rt (add-rule (make-rule 's2 'b (cons 'write 'b) 'left 's2) rt))
(set! rt (add-rule (make-rule 's2 'a_2 (cons 'write 'a_2) 'left 's2) rt))
(set! rt (add-rule (make-rule 's2 'b_2 (cons 'write 'b_2) 'left 's2) rt))
(set! rt (add-rule (make-rule 's2 'BLANK (cons 'write 'b_2) 'right 's3) rt))
(set! rt (add-rule (make-rule 's3 'a_2 (cons 'write 'a_2) 'right 's3) rt))
(set! rt (add-rule (make-rule 's3 'b_2 (cons 'write 'b_2) 'right 's3) rt))
(set! rt (add-rule (make-rule 's3 'a (cons 'write 'a ) 'right 's_noend) rt))
(set! rt (add-rule (make-rule 's3 'b (cons 'write 'b ) 'right 's_noend) rt))
(set! rt (add-rule (make-rule 's3 'a_1 (cons 'write 'a_1) 'left 's_semifinal) rt))
(set! rt (add-rule (make-rule 's3 'b_1 (cons 'write 'b_1) 'left 's_semifinal) rt))
(set! rt (add-rule (make-rule 's_noend 'a (cons 'write 'a ) 'right 's_noend) rt))
(set! rt (add-rule (make-rule 's_noend 'b (cons 'write 'b ) 'right 's_noend) rt))
(set! rt (add-rule (make-rule 's_noend 'a_1 (cons 'write 'a_1) 'left 's0) rt))
(set! rt (add-rule (make-rule 's_noend 'b_1 (cons 'write 'b_1) 'left 's0) rt))
(set! rt (add-rule (make-rule 's_semifinal 'a_2 (cons 'write 'a_2) 'left 's_semifinal) rt))
(set! rt (add-rule (make-rule 's_semifinal 'b_2 (cons 'write 'b_2) 'left 's_semifinal) rt))
(set! rt (add-rule (make-rule 's_semifinal 'BLANK (cons 'write 'BLANK) 'right 's_ff) rt))
(set! rt (add-rule (make-rule 's_ff 'a_2 (cons 'write 'a ) 'right 's_ff) rt))
(set! rt (add-rule (make-rule 's_ff 'a_1 (cons 'write 'a ) 'right 's_ff) rt))
(set! rt (add-rule (make-rule 's_ff 'b_2 (cons 'write 'b ) 'right 's_ff) rt))
(set! rt (add-rule (make-rule 's_ff 'b_1 (cons 'write 'b ) 'right 's_ff) rt))
(set! rt (add-rule (make-rule 's_ff 'BLANK (cons 'write 'BLANK) 'left 's_final) rt))

(define tm (make-tm (list 'b 'a 'a 'a 'a 'a 'b 'a 'b) (list 's_final) 's0 rt))
(run-tm tm)

-- RESULT
one one one one one
b a a a a a b a b b a a a a a b a b

마지막 꺼는 인풋을 약간 바꾸었습니다.. 저게 잘되면 다른 것도 잘 될거예요..

값 중심, 물건 중심 둘다 동일한 결과..

p.s) 김원배 입니다...
회원가입시 설정한 이름 어떻게 바꾸나요..


kernys 가 2011년11월1일 0:47에 수정함, 총 1 번 수정됨
위로
사용자 정보 보기 비밀 메시지 보내기
김상우



가입: 2011년 9월 10일
올린 글: 50

올리기올려짐: 2011년10월30일 1:23    주제: BLANK는 erase로 해야될 것 같은데요? 인용과 함께 답변

숙제에
"todo는 ’erase 거나 ’write와 symbol의 cons-쌍"
이라고 나와있는데
'write 'BLANK가 아닌 'erase가 되어야 하지 않을까요?

전 이렇게 돌렸습니다

(define a1 (make-rule 's0 'one (cons 'write 'one) 'left 's0))
(define a2 (make-rule 's0 'plus (cons 'write 'one) 'left 's1))
(define a3 (make-rule 's1 'one (cons 'write 'one) 'left 's1))
(define a4 (make-rule 's1 'BLANK 'erase 'right 's2))
(define a5 (make-rule 's2 'one 'erase 'right 's3))
(define a6 (make-rule 's3 'one (cons 'write 'one) 'right 's3))
(define a7 (make-rule 's3 'BLANK 'erase 'left 's4))

(define rt (add-rule a1 (add-rule a2 (add-rule a3 (add-rule a4 (add-rule a5 (add-rule a6 (add-rule a7 (empty-ruletable)))))))))

(define tm1 (make-tm (list 'one 'one 'one 'plus 'one 'one) (list 's4) 's0 rt))

(run-tm tm1)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define rt2 (list
(make-rule 's0 'a (cons 'write 'a_1) 'left 's1)
(make-rule 's0 'b (cons 'write 'b_1) 'left 's2)
(make-rule 's1 'a (cons 'write 'a) 'left 's1)
(make-rule 's1 'b (cons 'write 'b) 'left 's1)
(make-rule 's1 'a_2 (cons 'write 'a_2) 'left 's1)
(make-rule 's1 'b_2 (cons 'write 'b_2) 'left 's1)
(make-rule 's1 'BLANK (cons 'write 'a_2) 'right 's3)
(make-rule 's2 'a (cons 'write 'a) 'left 's2)
(make-rule 's2 'b (cons 'write 'b) 'left 's2)
(make-rule 's2 'a_2 (cons 'write 'a_2) 'left 's2)
(make-rule 's2 'b_2 (cons 'write 'b_2) 'left 's2)
(make-rule 's2 'BLANK (cons 'write 'b_2) 'right 's3)
(make-rule 's3 'a_2 (cons 'write 'a_2) 'right 's3)
(make-rule 's3 'b_2 (cons 'write 'b_2) 'right 's3)
(make-rule 's3 'a (cons 'write 'a) 'right 's_noend)
(make-rule 's3 'b (cons 'write 'b) 'right 's_noend)
(make-rule 's3 'a_1 (cons 'write 'a_1) 'left 's_semifinal)
(make-rule 's3 'b_1 (cons 'write 'b_1) 'left 's_semifinal)
(make-rule 's_noend 'a (cons 'write 'a) 'right 's_noend)
(make-rule 's_noend 'b (cons 'write 'b) 'right 's_noend)
(make-rule 's_noend 'a_1 (cons 'write 'a_1) 'left 's0)
(make-rule 's_noend 'b_1 (cons 'write 'b_1) 'left 's0)
(make-rule 's_semifinal 'a_2 (cons 'write 'a_2) 'left 's_semifinal)
(make-rule 's_semifinal 'b_2 (cons 'write 'b_2) 'left 's_semifinal)
(make-rule 's_semifinal 'BLANK 'erase 'right 's_ff)
(make-rule 's_ff 'a_2 (cons 'write 'a) 'right 's_ff)
(make-rule 's_ff 'a_1 (cons 'write 'a) 'right 's_ff)
(make-rule 's_ff 'b_2 (cons 'write 'b) 'right 's_ff)
(make-rule 's_ff 'b_1 (cons 'write 'b) 'right 's_ff)
(make-rule 's_ff 'BLANK 'erase 'left 's_final)
))

;이 ruletable 부분은 원래 add-rule로 일일이 다 더해줘야합니다.
;그 작업이 너무 힘든 관계로 리스트형태로 받게해서 테스트했습니다
;실제로 학우님들이 테스트하실땐 add-rule로 해주세요!!
;조언해주신 이상호학우님 감사합니다!^^

(define tm1 (make-tm (list 'a 'b 'a) (list 's_final) 's0 rt2))

(run-tm tm1)


김상우 가 2011년10월30일 2:32에 수정함, 총 1 번 수정됨
위로
사용자 정보 보기 비밀 메시지 보내기
kernys



가입: 2011년 10월 26일
올린 글: 10

올리기올려짐: 2011년10월30일 2:07    주제: 인용과 함께 답변

정정 감사합니다, 김상우 학우님.
위로
사용자 정보 보기 비밀 메시지 보내기
권민혁



가입: 2011년 10월 30일
올린 글: 8

올리기올려짐: 2011년10월30일 9:17    주제: 감사합니다. 인용과 함께 답변

누군가 이렇게 해주실줄 알았습니다.^^

감사합니다.

김원배, 김상우 학우님들. (아 그리고 상호도)
위로
사용자 정보 보기 비밀 메시지 보내기
현.철



가입: 2011년 9월 27일
올린 글: 35

올리기올려짐: 2011년10월30일 10:50    주제: 인용과 함께 답변

empty-ruletable은 함수가 아니어야 할 것 같습니다.
(empty-ruletable) 가 아니라 empty-ruletable로 쓰여야 하지 않을까요?
위로
사용자 정보 보기 비밀 메시지 보내기
김상우



가입: 2011년 9월 10일
올린 글: 50

올리기올려짐: 2011년10월30일 14:13    주제: 숙제pdf에 함수라고 써져있어서 일단 함수로 만들었습니다. 인용과 함께 답변

작동규칙표를 만들고 사용하는 함수들:
empty-ruletable : ruletable

이렇게 되있네요
위로
사용자 정보 보기 비밀 메시지 보내기
이영석



가입: 2011년 9월 5일
올린 글: 103

올리기올려짐: 2011년10월30일 14:52    주제: 인용과 함께 답변

제대로 돌아가니 다행이군요.

사실 손으로 짠거라 제대로 안돌아갈지 걱정이었는데 ㅎ
위로
사용자 정보 보기 비밀 메시지 보내기
현.철



가입: 2011년 9월 27일
올린 글: 35

올리기올려짐: 2011년10월30일 15:28    주제: 인용과 함께 답변

함수라면
void -> ruletable아닌가요?
위로
사용자 정보 보기 비밀 메시지 보내기
방정호



가입: 2011년 9월 19일
올린 글: 40

올리기올려짐: 2011년10월31일 0:22    주제: 첫번째 테스트 셋 인용과 함께 답변

첫번째 테스트 셋 결과가
[ one one one one one ]
이어야 되는 것 같아요.

앞 뒤에 넣어놓는 BLANK 를 제외한다면,
결과 데이터는 one one one one one BLANK 가 되어야 할 것 같습니다.


원래 테이프에서
one one one 까지 s0 상태였다가
plus 를 만나면 s1 상태가 되고,
여기까지 테이프에는 계속 one 을 쓰고요.

s1 상태에서 blank를 만나면(오늘쪽 맨 끝까지 가면) 방향을 반대로 가고
그 상태에서 one을 만나면 (방향 바꾸자마자 처음) BLANK 로 바꿉니다.
그 다음부터는 반대쪽 끝까지 쭉 가서 끝나네요.

그러면
one one one one one BLANK
여야 될 것 같은데,
맞는걸까요?
위로
사용자 정보 보기 비밀 메시지 보내기
이태영



가입: 2011년 9월 19일
올린 글: 34

올리기올려짐: 2011년10월31일 1:07    주제: 인용과 함께 답변

방정호님 말씀이 맞는 것 같아요. 처음에 쭉 훑고 가면서 plus를 one으로 바꿔서 one이 여섯개였다가. 맨 끝 BLANK를 만나면 맨 오른쪽 one을 지우니까 그 자리가 BLANK가 되겠네요
위로
사용자 정보 보기 비밀 메시지 보내기 이메일 보내기
이상선



가입: 2011년 9월 27일
올린 글: 26

올리기올려짐: 2011년10월31일 21:32    주제: 인용과 함께 답변

empty-ruletable의 경우에
제 생각에도 현.철님 말씀처럼 함수가 아니라 그냥 정의가 되어야할 것 같습니다.

이전 숙제에서

black : 무늬
white : 무늬

위 두개를 함수로 하지않고 단순히 정의만 했으니까요
위로
사용자 정보 보기 비밀 메시지 보내기
kkhseed



가입: 2011년 9월 27일
올린 글: 21

올리기올려짐: 2011년10월31일 22:04    주제: 인용과 함께 답변

이태영 씀:
방정호님 말씀이 맞는 것 같아요. 처음에 쭉 훑고 가면서 plus를 one으로 바꿔서 one이 여섯개였다가. 맨 끝 BLANK를 만나면 맨 오른쪽 one을 지우니까 그 자리가 BLANK가 되겠네요

제가 이해한 바로는, 튜링 머신에 집어넣는 tape의 경우에는 왼쪽으로도, 오른쪽으로도 무한하게 BLANK가 존재하는 것으로 알고 있습니다.
따라서
one one one one one BLANK

one one one one one
과 같겠죠.
print-tm 을 돌려보셔서 동일한 결과가 나오면 맞는 게 아닐까요?

추가: 첫 번째 테스트셋 결과가 틀린 것을 못 봤네요. 어쨌든 형식에 상관없이 one이 다섯 개 나오는 것이 맞는 것 같습니다.
_________________
//강기환
위로
사용자 정보 보기 비밀 메시지 보내기
kernys



가입: 2011년 10월 26일
올린 글: 10

올리기올려짐: 2011년11월1일 0:47    주제: 인용과 함께 답변

아 그렇네요... write 'BLANK 명령을 왜 무시했었는지...

one one one one one 이네요..
위로
사용자 정보 보기 비밀 메시지 보내기
이승중



가입: 2010년 6월 22일
올린 글: 561

올리기올려짐: 2011년11월1일 2:23    주제: 인용과 함께 답변

함수들 목록에 나와있지만 타입이 함수가 아니네요

하지만 물건중심으로 프로그래밍 하려면 함수로 하는게 좋을 것 같습니다.

empty-ruletable: void -> ruletable 로 고쳐주세요
위로
사용자 정보 보기 비밀 메시지 보내기
유.강민



가입: 2011년 3월 22일
올린 글: 38

올리기올려짐: 2011년11월1일 20:32    주제: RE 인용과 함께 답변

저도 테스트셋 하나 위키에 있는 예제 따라 만들어봤습니다. 테이프에 있는 1들을 좌우 대칭으로 복사하는 함수입니다. 문제있으면 지적 해주세요.
코드:

(define (convert_rulelist_to_ruletable lst )
  (cond ((null? lst) (empty-ruletable))
        (else
         (let* ((rule (first lst))
                (cstate (list-ref rule 0))
                (csymbol (list-ref rule 1))
                (todo (list-ref rule 2))
                (move (list-ref rule 3))
                (nstate (list-ref rule 4)))
         (add-rule (make-rule cstate csymbol todo move nstate)
                   (convert_rulelist_to_ruletable (rest lst)))))))

(print-tm (run-tm (make-tm (list 'one 'one 'one 'one 'one) (list 'H) 's1
                           (convert_rulelist_to_ruletable
                            (list (list 's1 'BLANK 'erase 'stay 'H)
                                  (list 's1 'one 'erase 'left 's2)
                                  (list 's2 'BLANK 'erase 'left 's3)
                                  (list 's2 'one (cons 'write 'one) 'left 's2)
                                  (list 's3 'BLANK (cons 'write 'one) 'right 's4)
                                  (list 's3 'one (cons 'write 'one) 'left 's3)
                                  (list 's4 'BLANK 'erase 'right 's5)
                                  (list 's4 'one (cons 'write 'one) 'right 's4)
                                  (list 's5 'BLANK (cons 'write 'one) 'left 's1)
                                  (list 's5 'one (cons 'write 'one) 'right 's5))))))

;답: one one one one one BLANK one one one one one
위로
사용자 정보 보기 비밀 메시지 보내기
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.210 Principles of Programming (Fall 2011) 시간대: GMT + 9 시간(한국)
페이지로 1, 2  다음
페이지 12

 
건너뛰기:  
새로운 주제를 올릴 수 없습니다
답글을 올릴 수 없습니다
주제를 수정할 수 없습니다
올린 글을 삭제할 수 없습니다
투표를 할 수 없습니다


Powered by phpBB 2.0.21-7 (Debian) © 2001, 2005 phpBB Group
Translated by kss & drssay