Turing Complete: 지연 회로 가이드로 안전하게 저장하기

Turing Complete에서 grep하기 가장 어려운 레벨 중 하나에 대한 연습입니다.

 

1단계: 우리는 무엇을 해야 합니까?

우리의 긴 코를 가진 외계인 친구에 따르면, 우리는 값을 저장할 수 있는 회로를 만들고 있으며 현재 저장된 값은 무엇이든 출력할 수 있습니다.

좀 더 세분화하면 여기에서 실제로 수행해야 하는 몇 가지 다른 작업이 있습니다. 첫째, 어떻게든 값을 영원히 저장해야 합니다. 둘째, "저장" 비트(상단 입력)가 켜져 있으면 "저장"된 모든 것을 하단 비트의 값으로 대체해야 합니다.

두 번째 부분은 까다롭게 들리지만 첫 번째 부분부터 시작하여 이를 기반으로 하는 방법을 살펴보겠습니다.

2단계: 저장이 꺼져 있다고 가정하고 이전에 해결한 문제를 해결합니다.

'홀수 틱' 문제 기억하시나요? 그 문제에서는 먼저 꺼짐 을 출력 하고 NOT 연산자를 사용해서 켜짐을 "저장"한 다음 , 다음 틱에서 반대 값으로 똑같은 작업을 반복했죠. 복잡하게 들릴 수 있으니 그림으로 설명해 드릴게요.


이 경우 본질적으로 결과를 저장하고 있었습니다. 않습니다. 마지막 틱 값. 이것에 대해 생각하는 한 가지 방법은 지연 회로, 다음 틱에 대해 원하는 출력을 지연 회로. 따라서 여기에 값을 저장하는 확실한 방법은 자체적으로 루프백하는 것입니다. 그것을 시도하자.


좋습니다. 이제 저장 루프가 있습니다. 에서 출력되는 것은 무엇이든 지연 회로 그것에 다시 먹일 것이고 우리는 황금이 될 것입니다. 단순화를 위해 지연 회로에 보내는 모든 입력을 입력을 "저장"이라고 합니다.

이거 테스트해 볼까요? 물론이죠, 좋은 생각이에요. 꺼진 상태로 실행하면 잘 작동해요 (아래 테스트가 실패하기 전까지는요. 하지만 갑자기 켜지고 켜짐 신호 를 출력할 이유는 없어 보여요 ). 켜짐 신호 생성기를 추가해서 켜짐 신호 를 저장하는지 확인해 볼게요.


물론 쉽지 않을 것입니다 :/ 친절한 것은 없습니다 OR 고칠 수 없습니다.


그게 낫다! 나는 알아 On 해낼거야 on 관계없이, 하지만 바라건대 당신은 우리가 그것을 취할 수 있더라도 볼 수 있기를 바랍니다. on 떨어져, 하단 입력 OR 그것을 영원히 유지할 것입니다.

실제로 다음과 같은 경우에 입력 저장 is 오프, 이것이 바로 우리가 원하는 동작입니다! 또는 그것을 다른 표현으로 표현하면, 입력 저장 is 오프 Audiencegain과 저장된 값은 on, 다음을 보내십시오 on 부터 지연 회로, 또는 입력 저장 is 오프 Audiencegain과 저장된 값은 오프, 출력 오프. 우리는 그것을 조금 단순화할 수 있습니다. 만약 입력 저장 is 오프, 다음 내용을 보내십시오. 지연 회로 다음 틱에 출력할 수 있도록 다시 자기 자신으로 돌아갑니다.

진리표(주어진 입력에 대한 출력이 무엇인지 보여 주는 이전 레벨의 것들)를 만들 수 있습니다.

입력 저장
저장된 루프 입력
산출

직접 시도하고 구축하는 것이 좋지만 다음과 같이 보일 수 있습니다.


여기서는 주황색을 사용하여 저장 루프를 나타내고 연한 파란색을 사용하여 입력 저장. 저는 와이어를 이와 같이 논리적 그룹으로 색칠하는 습관을 들이는 것이 좋습니다. 나중에 레벨에서 하면 기쁠 것입니다 🙂

3단계: 알겠습니다. 저장한 내용을 변경하는 기능을 추가하겠습니다.

좋아, 문제의 절반은 해결됐어. 이제 저장 입력란이 켜져 있을 때 저장된 값은 무시하고 , 대신 값 입력란 에 있는 값만 저장하는 방법을 알아내야 해 . 어려워 보이지만, 한번 시도해 보자.


사실, 회로를 다시 살펴보면 문제의 절반 이상이 해결되었습니다! 만약 입력 저장 is on, 그 다음에 및 우리가 저장한 모든 것이 다음으로 설정되었는지 확인합니다. 오프. 이 경우 우리가 해야 할 일은 다음에서 값을 가져오는 것입니다. 값 입력 그리고 그것을 쓰십시오 지연 회로.


아, 우리는 매우 가깝지만 여기에 오류가 있습니다. 우리는 값 입력, 심지어 입력 저장 설정되어 있지 않습니다. 다음 경우에만 해당 값을 저장하고 싶습니다. 입력 저장 켜져 있으므로 몇 가지 논리를 다시 사용하여 방법을 알아보겠습니다.

입력 저장
값 입력
산출

우리의 저장 로직을 되돌아보면, 저장 입력이 꺼져 있을 때 저장된 값을 원했습니다. 여기서는 저장 입력이 켜져 있을 때 입력 된 값 을 원합니다 . 상당히 유사해 보이므로 다시 AND 게이트를 사용해 보겠습니다.


재생을 누르고... 끝입니다!

다른

이것은 레벨을 해결하는 가장 효율적인 방법은 아니지만 요점은 아닙니다. 레벨을 이해하고 "건너뛰기" 버튼만 받는 것이 아니라 스스로 해결할 수 있는 단계를 보여주고 싶었습니다. 그러나 설명하는 것은 제 가장 강력한 기술이 아니므로 여전히 불분명하거나 클릭하게 만든 다른 생각이 있다면 아래 의견에 공유해 주세요!

이 수준은 어려운 이유는 문제를 하위 문제로 분류해야 한다는 것을 분명히 하지 않으면서 문제를 세분화해야 하는 첫 번째 수준이기 때문입니다. 문제를 보고 더 작고 더 쉬운 하위 문제로 단순화할 수 있다는 것은 CS 학위나 컴퓨팅 배경보다 이 게임에서 더 많은 것을 얻을 수 있도록 하므로 문제가 더 커질 미래 수준에서 이를 염두에 두는 것이 좋습니다. 더 큰.

Renwallz 제공

"Turing Complete: 지연 회로 가이드로 우아하게 절약하기"에 대한 1개의 생각

  1. 어머나! 이 솔루션은 매우 정교하고 만족스럽습니다. 매우 감사합니다. 이 레벨을 통과하는 데 많은 도움이 되었습니다. 엄지척!

    댓글

코멘트 남김

ArabicEnglishFrenchGermanItalianJapaneseKoreanPortugueseSpanish