하나 더 프로그램하고 나왔습니다!


21

양의 정수 중첩 수준을 감안할 때 n문자열 s인쇄 가능한 ASCII 문자 (의 ~같은 언어로 실행하면, 프로그램을 출력하는 프로그램을 출력하고, 출력하는 프로그램... 문자열을 출력합니다 s.

n프로그램이 생성되어야하며, 모든 프로그램은 답변과 동일한 언어로 실행되어야합니다.

참고 : 기본적으로 제출로 허용되는 모든 프로그램 또는 기능을 출력 할 수 있습니다.

s이스케이프 문자로 입력 할 수 있으며 , 언어로 된 프로그램이나 함수가 일반적으로 문자열을 입력하는 방식입니다.


예를 들어, 주어진 n=1and s="recursion", Python 2 프로그램은 다음을 출력 할 수 있습니다.

print "recursion"

이것을 실행하면 다음과 같이 출력됩니다.

recursion

주어 n=2와의 = "PPCG", 파이썬이 프로그램의 힘 출력 :

print "print \"PPCG\" "

이 출력을 실행하면

print "PPCG"

이 출력을 실행하면

PPCG

관련 (+ 제목 영감) : 하나 더 LUL 그리고 나

또한 관련 (샌드 박스에서-이제 삭제되었지만 여전히 평판이 좋은 것으로 볼 수 있음) : 소스 코드 재귀

테스트 사례

코드가 다음 테스트 사례 (한 줄에 하나씩)에서 작동하는지 확인하십시오.

n s
2 PPCG
4 Robert'); DROP TABLE Students;--
17 Deep
2 Spaces In Here
3 "Don't forget quotes!"
5 'Backt`cks might be a h`tch'
6 5%s
8 [Brackets]<Are>(Great){Usually}
3 !"#$%&'()*+,-./ 0123456789:;<=>?@ABCDEFGHIJKLMN
6 OPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
7 THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG
3 the quick brown fox jumps over the lazy dog
code-golf  recursion  code-golf  kolmogorov-complexity  board-game  code-golf  number-theory  polynomials  code-golf  code-golf  array-manipulation  polyglot  alphabet  answer-chaining  code-golf  sequence  math  atomic-code-golf  abstract-algebra  proof-golf  code-golf  internet  code-golf  internet  code-golf  ascii-art  kolmogorov-complexity  code-golf  math  ascii-art  number  integer  code-golf  decision-problem  binary-matrix  code-golf  number  sequence  number-theory  code-golf  math  decision-problem  matrix  abstract-algebra  code-golf  string  keyboard  code-golf  fractal  code-golf  math  sequence  combinatorics  hello-world  vim  code-golf  sequence  code-golf  graphical-output  image-processing  code-golf  decision-problem  matrix  linear-algebra  code-golf  ascii-art  code-golf  math  code-golf  ascii-art  graphical-output  code-golf  string  code-golf  string  substitution  code-golf  string  ascii-art  code-golf  arithmetic  code-golf  number  array-manipulation  decision-problem  code-golf  kolmogorov-complexity  code-generation  fractal  code-golf  ascii-art  kolmogorov-complexity  code-golf  ascii-art  code-golf  string  array-manipulation  code-golf  music  code-golf  array-manipulation  code-golf  internet  stack-exchange-api  math  fastest-algorithm  code-golf  binary  bitwise  code-golf  date  code-golf  string  code-golf  sequence  integer  code-golf  arithmetic  number-theory  code-golf  string  random 

1
도전 과제를 읽었을 때 "이봐 요. 매우 친숙해 보입니다."라고 말한 다음 "내 관련 (샌드 박스) : 소스 코드 영감 "을 내 샌드 박스 질문에 확인했습니다. :) 지금은 내 질문을 남겨 두 겠지만 몇 주 후에 삭제하겠습니다. 정수 매개 변수를 추가하는 것을 제외하고는 기본적으로 동일합니다.
Kevin Cruijssen

1
여기 에서 제안한 것처럼 프로그램 대신 익명 함수를 반환 할 수 있습니까?
Arnauld

1
"양의 정수"는 포함 0합니까?
Felix Palmen

1
이유로 프로그램을 선택 했습니까? 기본값은 기능 또는 프로그램입니까? 기능을 인쇄하는 기능이 있습니까?
Kevin Cruijssen

1
하위 표현식이나 중첩 프로그램에서 이스케이프 처리하는 데 문제가있을 수 있으므로 @StewieGriffin (및 누군가 샌드 박스에서 견적 테스트 케이스를 요청 함).
fireflame241

답변:


19

젤리 , 2 바이트

Ṿ¡

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

Ṿ¡  Main link; left argument (text) is x, right argument (repetitions) is y
 ¡  Repeat y times:
Ṿ   Uneval x; produce code that outputs x

hehe 내장


"hi"는 "hi"가 아닌 hi를 생성합니다
Tahg

10
@Tahg Jelly 입력은 오류가 발생하지 않으면 Python 코드로 자동 평가됩니다. 그렇다면 문자열 일뿐입니다. '"hi"'예상 결과를 확인 해야 합니다
HyperNeutrino

19

자바 스크립트 (ES6), 47 44 바이트

@HermanLauenstein 덕분에 3 바이트 절약

카레 구문으로 입력을 (n)(s)받습니다.

n=>g=s=>`alert(atob("${btoa(--n?g(s):s)}"))`

f(2)('PPCG')

출력합니다 :

'alert(atob("YWxlcnQoYXRvYigiVUZCRFJ3PT0iKSk="))'

다음과 같이 인쇄됩니다.

'alert(atob("UFBDRw=="))'

다음과 같이 인쇄됩니다.

'PPCG'

데모

alert()중간 결과가 콘솔에 인쇄되고 자동으로 실행되도록 재정 의 된보다 복잡한 예 입니다.


대체 버전, 40 바이트

@Shaggy의 추천

이것은 전체 프로그램 대신 익명 함수를 반환합니다.

n=>g=s=>`_=>atob("${btoa(--n?g(s):s)}")`

alert? 를 사용하는 대신 익명 함수를 반환 할 수 있습니까? 41 바이트
얽히고 설킨

@Shaggy 나는 정말로 모른다. 나는 OP에게 물었다.
Arnauld

그렇지 않은 경우 45 바이트 대신 IIFE를 사용할 수 있습니다.
얽히고 설킨

커리를 사용한 -3 바이트 : n=>g=s=>BTalert(atob("${btoa(--n?g(s):s)}"))BT(BT를 백틱으로 대체)
Herman L

@HermanLauenstein 감사합니다! :)
Arnauld

10

sh + coreutils, 31 바이트

yes exec sed 1d \$0|sed $1q;cat

소요 n명령 줄 매개 변수로와 sSTDIN에.


8
이 코드는 "그렇습니다. 반드시 저를 처형해야합니다."라고 말합니다.
RedClover

설명을 추가 할 수 있습니까? 나는 문제가 밖으로 작업 데
JoshRagem

1
@JoshRagem yes은 명령 행을 반복적으로 인쇄합니다 exec sed 1d $0( $쉘 메타 문자이므로 인용해야 함). 라인 sed $1q다음에 인쇄를 중지합니다 $1(예 n:). cat그런 다음 입력 문자열을 복사합니다. 결과 파일은 sh쉘에게 sed매개 변수 1d와 스크립트 파일 이름 을 가진 사본으로 교체 하도록하는 스크립트입니다. sed그런 다음 파일의 첫 번째 줄을 건너 뛰고 나머지를 출력합니다. 각 스크립트에는 실행 exec sed 1d $0n원래 입력 만 인쇄 될 때까지 하나의 접두사 가 없습니다.


5

하스켈, 17 바이트

내가 글을 쓸 때, 이것은 골프 이외의 언어에 대한 가장 짧은 대답입니다 .

이 얻어 함수 sn그 순서 및 결과 나 검사시 다음의 소스 코드를 반환하는 식의 소스 코드를 반환한다.

(!!).iterate show

이것이 중요한 이유에 대한 논쟁 :

  1. 솔루션은 기능 할 수 있습니다.
  2. 그들의 출력은 기능이 될 수 있습니다.
  3. 이러한 기능에는 매개 변수가 없습니다.
  4. Haskell에서는 게으르고 모든 것이 커지기 때문에 실제 프로그래밍 목적으로 가장 자연스러운 0 매개 변수 함수의 정의는 결과와 동일합니다. 가장 가까운 대안, 매개 변수를 무시하는 1 매개 변수 함수는 바보입니다.

경우 f부여 PPCG하고 2그 파라미터로서, 결과는 텍스트이다 "\"PPCG\""(제 1 생성 기능)을 평가하는 경우에 반환 텍스트 "PPCG"(초 연료 소모량 생성), 그 평가 될 때 반환 PPCG.

단축을 제안 해준 nimi 에게 감사합니다 .


Haskell에는 인수가없는 함수 문제에 관한 메타 질문이 있지만 아직 그다지 주목을받지 않았으며 여전히 미심쩍은
Laikoni

3

APL (Dyalog) , 24 23 바이트

ngn 덕분에 -1입니다.

이 프로그램은 프롬프트를 표시 s한 다음 nSTDOUT을 인쇄하고 인쇄 하는 전체 프로그램입니다 .

''''{⍺,⍨⍺,⍵/⍨1+⍵=⍺}⍣⎕⊢⍞

온라인으로 사용해보십시오! (17 깊은 경우는 TIO의 출력 제한을 초과하므로 생략됩니다-오프라인으로 작동)

묻다 s

 그 수율 (분리하도록 하고 )

''''{… 이 람다를 여러 번 왼쪽 인수로 작은 따옴표로 }⍣⎕ 프롬프트 n하고 적용하십시오. 왼쪽 인수 (따옴표) 를 나타내고 오른쪽 인수 (입력 텍스트)를 나타냅니다.

⍵=⍺ 텍스트가 따옴표와 같은 부울

1+ 하나 추가

⍵/⍨ 인수의 각 문자를 해당 횟수만큼 복제

⍺, 따옴표를 붙이다

⍺,⍨ 견적을 추가하다

이것은 APL의 문자열이 '구분되고 문자열의 작은 따옴표가 두 배가되는 반면 다른 문자는 이스케이프 처리 할 필요 가 없기 때문에 작동합니다 .


Dyalog APL에는 또한 유틸리티 ( ⎕SE.Dyalog.Utils.repObj)가 포함되어 있으며 ( Jelly 's ununeval 과 유사한) 인수로 평가되는 APL 표현식을 생성합니다 . 따라서 다음 프로그램은 위와 동일하지만 모든 배열에서 작동 합니다.

SE.Dyalog.Utils.repObj⍣⎕⊢⎕

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


APLX는 "단일 인용"문자열뿐만 아니라 "의심하게"를 허용한다고 생각합니다. 나머지가 작동하면 바이트를 저장할 수 있습니다 :) ngn / apl을 사용했지만 최근에 ""를 제거했습니다.
ngn

따옴표를 .- 로 전달하여 바이트를 저장하십시오.
ngn

@ngn 감사하지만 APLX에는 dfn이 없습니다. NARS2000에는 큰 따옴표와 dfn이 모두 있지만 문자는 각각 2 바이트입니다.
Adám

2

Firefox JavaScript, 41 35 바이트

f=(s,n)=>"_=>"+uneval(--n?f(s,n):s)

Firefox에는 nice uneval가 있는데, 이는 주어진 객체 (이 경우 문자열)와 같은 소리를냅니다.


2

자바 8, 95 93 바이트

String c(String s,int n){return"v->\""+(n-->1?c(s,n).replaceAll("[\\\\\"]","\\\\$0"):s)+'"';}

@Lynn 덕분에 -2 바이트 .

특수 문자를 이스케이프 처리하는 것은 Java에서 매우 성가시다 ..

여기 에서 시도하고 결과 방법을 시도하십시오 .

설명:

String c(String s,int n){  // Method with String and int parameters and String return-type
  return"v->\""+           //  Return literal "v->" + a leading double-quote +
   (n-->1?                 //   If `n` is larger than 1:
     c(s,n)                //    Recursive-call,
      .replaceAll("[\\\\\"]","\\\\$0")
                           //    with all double-quotes ('"') and slashes ('\') escaped
    :                      //   Else:
     s)                    //    The input String
   +'"';                   //   + a trailing double quote
}                          // End of method 

정규식 교체에 대한 추가 설명 :

.replaceAll("[\\\\\"]","\\\\$0")
.replaceAll("        ","      ")  // Replace the match of the 1st String, with the 2nd
             [      ]             //  One of these inner characters:
              \\\\                //   Escaped slash ('\')
                  \"              //   Escaped double-quote ('"')
                                  //  And replace them with:
                        \\\\      //   Escaped slash ('\'),
                            $0    //   plus found match

왜이 모든 슬래시?

\   →  \\       // Escapes a single slash for the regex
\\  →  \\\\     // Escapes both regex-escaped slashes for the String
"   →  \"       // Escapes a double-quote for the String

1
"정규식 문자 클래스에서 탈출해야한다고 생각하지 않으므로 \\\\\"(5 개의 백 슬래시) 괜찮습니다.
Lynn



1

QuadR , 8 바이트

ngn 's answer의 간단한 번역 .

소요 n인수로하고 s입력한다.

^|'|$
'&

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

PCRE R은 모든 인스턴스를 eplace

^|'|$ 줄의 시작 또는 견적 또는 줄의 끝

'& 견적과 전체 일치

인수는 변환을 반복 할 횟수를 지정합니다.


아, 이제 나는 그 언어가 무엇인지 알고 있습니다 :)
ngn

1

R , 62 바이트

f=function(n,s){"if"(n,{formals(f)$n=n-1;formals(f)$s=s;f},s)}

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

그래서처럼 전화 : f(n,s)다음 n의 사본()

명명 된 함수 익명 함수를 반환합니다. 그 결과 는 formalsof 의 기본값을 수정하여 f결과 함수를 호출 할 수 있습니다 (그런 다음 호출 된 결과, n시간). 에 n도달하면를 0반환합니다 s.

R은 실제로 탈출하는 데 너무 나쁘지 않습니다! 그것은 당신이 그냥 입력을 교체해야하므로, 탈출 C-스타일을 사용 "하여 \"\함께 \\, 다음에 전체를 감싸 " ".





0

Excel VBA (32 비트), 67 바이트

2^i64 비트 VBA가 아닌 32 비트 VBA에서는 오류없이 평가 되므로 32 비트 Excel VBA로 버전이 제한됨

익명 VBE 즉시 창 함수는 입력 ns범위에서 가져 [A1]오고 [B1]터미널로만 평가 될 때 ( n반복 후 ) s해당 터미널 로만 출력되는 익명 함수를 출력합니다.

For i=0To[A1-1]:q=q+"?"+String(2^i,34):Next:?q[B1]Replace(q,"?","")

샘플 입력 / 출력

[A1:B1]=Array(7, "PPCG")
For i=0To[A1-1]:q=q+"?"+String(2^i,34):Next:?q[B1]Replace(q,"?","")
?"?""?""""?""""""""?""""""""""""""""?""""""""""""""""""""""""""""""""?""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""PPCG"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
?"?""?""""?""""""""?""""""""""""""""?""""""""""""""""""""""""""""""""PPCG"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
?"?""?""""?""""""""?""""""""""""""""PPCG"""""""""""""""""""""""""""""""
?"?""?""""?""""""""PPCG"""""""""""""""
?"?""?""""PPCG"""""""
?"?""PPCG"""
?"PPCG"
PPCG
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.