防旋转安全绳


17

编写一个适当的quine,其每个旋转本身就是一个适当的quine。

例如,如果您的源代码是abcdef,则:

  • abcdef 将输出 abcdef
  • bcdefa 将输出 bcdefa
  • cdefab 将输出 cdefab
  • defabc 将输出 defabc
  • efabcd 将输出 efabcd
  • fabcde 将输出 fabcde

旋转“是通过将字符串分成两部分并颠倒其顺序来进行的”

计分

这是。以字节为单位的最短答案将获胜。有标准漏洞


所以我可以编写程序aaabbb,可以说下一个轮换是bbbaaa?还是必须进行下一个轮换baaabb
Beta Decay's

1
下一个旋转是baaabb
Leaky Nun

1
旁注,标准的Fission quine是可安全旋转的另一种quine:无论如何旋转,它始终会打印原始源代码。
马丁·恩德

1
如果一种语言中的奎因是一个字节,那是作弊吗?
MD XF

1
一个适当的奎因?
tsh

Answers:


10

摩托罗拉MC14500B机器代码,1个字节

1字节分数来自两个4位指令:

0000 0010

说明

摩托罗拉MC145008是一款单芯片,一位静态CMOS处理器,针对面向决策的任务进行了优化。该处理器采用16引脚封装,并具有16个四位指令。指令对出现在一位双向数据线上的数据和ICU中一位累加结果寄存器中的数据执行逻辑运算。所有操作均在位级别执行。

处理器的针脚编号:

引脚分配

指令被提供给芯片上的4个指令销,( ,I0I1I2),I3以及被锁存到指令寄存器,(IR),对X1的下降沿。

用外行的术语来说,引脚4至7用于向指令寄存器提供指令,但位的解释顺序相反。例如,指令0001将使引脚#7处于高状态,而引脚6至4处于低状态。

指令在控制逻辑(CTL)中解码,然后将适当的逻辑命令发送到LU。在CTL还进行进一步的解码来发送多个输出标志(JMPRTNFLGOFLGF),以通过12这些被用作外部控制信号和保持活性X1的下降沿之后的完整的时钟周期销9。

或者,简单地说,销9至12是输出标志FLGFFLGORTN,和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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.