러시아 중첩 Quine


18

러시아 중첩 인형은로 알려진 더 일반적으로 마트 료 시카 , 자신의 작은 버전 포함 된 인형입니다 후 자신의 또 다른 작은 버전을 포함, 자신의 작은 버전이 포함되어 자체의 작은 버전을 포함 하는 더 작은 버전의 자체를 포함합니다 ...- 마지막까지 마지막 버전 은 비어 있습니다. 예를 들면 :

마트 료 시카 인형 <3

오늘 당신의 목표는 N 번을 포함 할 때 자체의 N-1 사본을 포함하는 프로그램이나 함수를 작성함으로써이 러시아 전통을 모방하는 것입니다.

예를 들어, 인형 프로그램 abcd에는 N = 3 프로그램 abababcdcdcd이 있으며, N = 2 프로그램 ababcdcd을 인쇄하면 원래 N = 1 프로그램 abcd이 인쇄되고 마지막으로 비어있는 N = 0이 인쇄됩니다. 이것은 이론적으로 N의 합리적인 가치를 위해 작동해야합니다.

규칙 :

  • 다음은 프로그램을 기반으로 인형 프로그램을 생성하는 데 도움 이되는 TIO 프로그램입니다.
  • 표준 Quine 규칙이 적용됩니다
  • 표준 허점 적용
  • '포함'은 이전 버전의 중앙에 직접 있음을 의미하므로 솔루션에는 양의 바이트 수가 있어야합니다. 길이가 10 인 프로그램은 5 번째 바이트 뒤에 삽입 된 다음 10 번째 바이트 뒤에 삽입 된 원본의 사본을 갖습니다.
  • 출력에서 단일 후행 공백이 허용됩니다.
  • 이것은 이므로 N = 1 프로그램을 최대한 짧게 만드는 것이 목표입니다.
  • 귀하의 코드에 대한 설명을 부탁드립니다


N코드 크기는 무엇 입니까?
flawr

@flawr N = 1 .....
Jo King


12
그 애니메이션이 정말로 필요한가요?!
Shaggy

답변:



9

자바 스크립트, 36 32 바이트

Function.prototype.toString()인수 를 취하지 않으므로 전달 된 것을 무시 한다는 사실 을 이용합니다.

user202729의 솔루션에서 부분적으로 영감을 얻었습니다 .

f=_=>f.toString( ).slice(14,-16)

시도 해봐

o.innerHTML=["<span>Five</span>",(f=_=>f.toString(f=_=>f.toString(f=_=>f.toString(f=_=>f.toString(f=_=>f.toString( ).slice(14,-16) ).slice(14,-16) ).slice(14,-16) ).slice(14,-16) ).slice(14,-16))(),"<span>Four</span>",(f=_=>f.toString(f=_=>f.toString(f=_=>f.toString(f=_=>f.toString( ).slice(14,-16) ).slice(14,-16) ).slice(14,-16) ).slice(14,-16))(),"<span>Three</span>",(f=_=>f.toString(f=_=>f.toString(f=_=>f.toString( ).slice(14,-16) ).slice(14,-16) ).slice(14,-16))(),"<span>Two</span>",(f=_=>f.toString(f=_=>f.toString( ).slice(14,-16) ).slice(14,-16))(),"<span>One</span>",(f=_=>f.toString( ).slice(14,-16))(),"<span>Thunderbirds Are Go!</span>"].join`\n`
span{font-weight:bold;font-size:16px;line-height:1.5em;text-transform:uppercase;}span:last-child{font-size:8px;}
<pre id=o></pre>


7

자바 스크립트 (Node.js) , 46 바이트

전체 프로그램. 그래서 console.log필요하다.

이 답변 의 아이디어를 사용하여 일부 바이트를 저장하십시오.

l=console.log;   g=_=>{};l((''+g).slice(4,-1))

온라인으로 사용해보십시오! 온라인으로 두 번 시도하십시오! 온라인으로 세 번 시도하십시오!


내 접근 방식은 Kevin Cruijssen의 답변 에서 사용 된 것과 유사합니다 . 중첩 가능한 구조 (이 경우 함수)를 찾으십시오.


5

젤리 , 16 바이트

Ṿḣ-9Ḋð}“““““““““

온라인으로 사용해보십시오!

두 배로 : 온라인으로 사용해보십시오!

트리플 : 온라인으로 사용해보십시오!


젤리는 중첩 가능한 구조는 없지만 문자열 리터럴은 자동 종료됩니다.


Ṿḣ-9Ḋ    First chain. (monadic)
Ṿ        Uneal. (to string)
 ḣ-9     Take the ead, ends at the -9'th character.
    Ḋ    equeue, remove the first character.

     ð             Terminate the first chain, start a new one.
      }            Convert the last monadic chain to a dyadic one.
       “““““““““   String literal.
                   This matches the pattern <dyad> <nilad>, so applies
                   the the corresponding rules. This way a link can take data
                   to the right of it.

그들이 더 짧은 수 있는지 알아보기 위해 다른 접근법을 시도합니다.




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