저는 방금 CS 클래스에서 Quine 프로그램에 대해 최근에 배웠습니다. 나는 그들이 자신의 소스 코드를 출력하거나 "자기 복제"하는 프로그램이라는 것을 이해한다. 그러나 내가 얻지 못하는 것은, 능력과 논리를 코딩하는 좋은 테스트가되는 것 외에, 요점은 무엇인가? 이러한 유형의 프로그램을 실생활에서 사용할 수 있습니까? 실제 단어에 적용 할 수 있습니까?
다음 프로그램은 자신을 호출하는 C 매크로처럼 보입니다. #define q(k)int puts();int main(){puts(#k"\nq("#k")");}
q(#define q(k)int puts();int main(){puts(#k"\nq("#k")");})
It compiles and runs fine. 그것은 스스로를 인쇄합니다. 이 코드는 실
퀸 (quines)을 연구하면서이 문제가 발생했습니다. 나는 %%가에서 무엇을 알고 궁금 다음 print '%r k%%k'%'a' 내가 %의 R (이 경우 'A') 전달되는 인수의 캐릭터 라인 표현을 받아와 문자열에 추가 이해 따옴표가 붙어 있으므로이 경우 'a'k % k를 출력합니다. k %% k는 무엇을하는지 알 수 없습니까? % 기호 중 하나를 제거하
나는 다음과 같은 public class Quine
{
public static void main(String[] args)
{
char q = 34; // Quotation mark character
String[] l = { // Array of source code
"public class Quine",
하스켈에서 "ap"모나드를 사용하는 적절한 방법은 무엇입니까? 나는이 비슷한 싶지 : main = (putStr . ap (++) show) "main = (putStr . ap (++) show) "
을하지만 난 오류 "뿐만 범위 :. 'AP'를" "import Control.Monad"를 사용하면 아무런 효과가 없습니다. 내가 "ap :: Monad
내가 같은 멀티 quine을 정의하고있다 : 더 입력을 제공하지 않을 때 그들의 각 하나는, 정확한 소스 코드를 출력하도록 N 서로 다른 프로그래밍 언어에서 N 프로그램의 집합, n을 입력하면 * n * 번째 프로그램의 소스 코드를 출력합니다. 첫 번째 프로그램이 출력 될 때까지 각 프로그램이 다음 프로그램의 소스 코드를 출력하는 프로그램의 순환 순서와 혼
Ruby에서 위키 백과에서이 코드 블록을 발견했습니다 (자체적으로 인쇄하는 프로그램). puts <<2*2,2
puts <<2*2,2
2
그러나 어떻게 작동하는지 알 수 없습니다. 특히 내가 얻지 못하는 것은 마지막 줄을 제거하면 다음과 같은 오류가 발생한다는 것입니다. syntax error, unexpected $end, expecting tST