회전 안전 퀴네


17

쓰기 적절한 quine 그 모든 회전 자체가 적절한 quine입니다.

예를 들어 소스 코드가 abcdef인 경우 :

  • abcdef 출력 할 것이다 abcdef
  • bcdefa 출력 할 것이다 bcdefa
  • cdefab 출력 할 것이다 cdefab
  • defabc 출력 할 것이다 defabc
  • efabcd 출력 할 것이다 efabcd
  • fabcde 출력 할 것이다 fabcde

회전은 "줄을 두 조각으로 나누고 순서를 반대로하여 이루어진다 " .

채점

이것은 입니다. 바이트 단위의 최단 답변이 이깁니다. 표준 허점이 적용됩니다.


그래서 나는 프로그램을 가질 aaabbb수 있었고 다음 회전은 bbbaaa? 아니면 다음 회전이되어야 baaabb합니까?
Beta Decay

1
다음 회전은 baaabb입니다.
Leaky Nun

1
참고로 표준 핵분열 퀴인 은 다른 회전 안전 퀴인입니다. 회전 방법에 관계없이 항상 원본 소스 코드가 인쇄됩니다.
마틴 엔더

1
언어의 quine이 1 바이트라면 부정 행위입니까?
MD XF

1
적절한 quine?
tsh

답변:


10

Motorola MC14500B 기계 코드 , 1 바이트

1 바이트 점수는 두 개의 4 비트 명령어에서 파생됩니다.

0000 0010

설명

Motorola MC145008은 의사 결정 작업에 최적화 된 단일 칩, 1 비트 정적 CMOS 프로세서입니다. 프로세서는 16 핀 패키지로 제공되며 16 개의 4 비트 명령어가 있습니다. 이 명령어는 1 비트 양방향 데이터 라인에 나타나는 데이터와 ICU 내의 1 비트 누적 결과 레지스터의 데이터에 대한 논리 연산을 수행합니다. 모든 작업은 비트 수준에서 수행됩니다.

프로세서의 핀 번호는 다음과 같습니다.

핀 할당

지침의 지시 4 핀의 칩에 제공된다 ( I0, I1, I2, I3)와 X1의 네거티브 진행 에지에서 명령 레지스터 (IR)에 래치된다.

일반인의 말로, 핀 4에서 7까지는 명령어를 명령어 레지스터에 표시하는 데 사용되지만 비트는 역순으로 해석됩니다. 예를 들어, 명령어 0001는 하이 상태의 핀 # 7과 로우 상태의 핀 6 ~ 4를 갖습니다.

명령은 CTL (Control Logic)에서 디코딩되어 적절한 논리 명령을 LU에 보냅니다. 또한, 복호화는 출력 플래그들을 전송하기 위해 CTL 행한다 ( JMP, RTN, FLGO, FLGF)이 외부 제어 신호로 사용 X1의 네거티브 진행 에지 이후 완전한 클록주기 동안 활성 상태로 남아있다 (12)를 통해 핀 (9).

또는 간단히 말해, 핀 (9) (12)를 통해 출력 플래그는 FLGF, FLGO, RTN,와 JMP, 각각. 데이터는 일반적으로 WRITE핀 (핀 # 2) 으로 멀티플렉싱됩니다 . 출력 플래그 핀은 다른 언어의 종료 코드와 유사합니다.

각 ICU의 명령어는 단일 클록주기에서 실행됩니다.

회전

초기 위치

0000    NOPO
0010    LDC

시계 기간 :

  1. NOPO명령은 핀 # 10 ( FLGO)을 하이 상태로 둡니다 . 다음 클럭주기 전에 출력 플래그 핀이 다시 로우 상태로 돌아갑니다.
  2. LDC명령은 출력 플래그 핀에 영향을주지 않고 데이터 버스의 값의 보수를 결과 레지스터에로드합니다.

따라서 프로그램의 두 클럭주기 동안 출력 플래그 핀은 0100 0000(입력 핀과 같이 역순으로 읽음) 0000 0010또는 원래 명령으로 표시됩니다.

첫 회전

0010    LDC
0000    NOPO

시계 기간 :

  1. 데이터 버스의 보완은 출력 플래그 핀의 영향없이 결과 레지스터에로드됩니다.
  2. 핀 # 10이 하이 상태로 전환되었습니다.

이 두 클럭주기 동안, 출력 플래그 핀이 표시 0000 0100되는데, 반전되면 명령 0010 0000입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.