가짜 소스 코드


23

소스 코드의 각 문자에 대해 임의의 문자 하나를 출력합니다 (아래 그림 참조). 각 문자의 확률은 원래 소스 코드의 빈도입니다. 따라서 출력은 quine과 유사한 가짜 소스 코드가됩니다.

사양

  • 제한 사항
    • 표준 제한이 적용됩니다. 빈 프로그램이나 기능이 없습니다. 또한 자신의 소스를 읽을 수 없습니다.
  • 산출
    • 출력되는 문자 수는 소스 코드의 문자 수와 정확히 일치해야합니다.
    • 출력 문자는 무작위로 선택해야합니다
    • 어떤 캐릭터를 선택할 확률은 (occurrences in source) / (length of source)
    • 이것은 단항 솔루션조차도 1확률 로 '무작위로'선택해야한다는 것을 의미합니다 1. 즉, 출력을 하드 코딩 할 수 없습니다.
  • 승리
    • 이것은 코드 골프이므로 가장 적은 바이트가 이깁니다.

Program           Frequency           Probability           Possible Output
-------           ---------           -----------           ---------------           
 a@!@              a - 1               a - 25%               @@a@
                   ! - 1               ! - 25%
                   @ - 2               @ - 50%
Program           Frequency           Probability           Possible Output
-------           ---------           -----------           ---------------
caBaDBcDaBDB       a - 3               a - 25%               aaaBBBBccDDD
                   B - 4               B - 33%
                   c - 2               c - 17%
                   D - 3               D - 25%

단일 문자 퀴는 허용됩니까?
Nathan Merrill

@NathanMerrill 예, 단일 문자 (및 기타 단항) 솔루션이 허용됩니다. 그러나 출력은 여전히 ​​임의로 선택해야합니다.
NonlinearFruit

파일을 읽을 수 없다면 파일에서 문자의 출현을 어떻게 찾을 수 있습니까?
Titus

1
코드 골프 입니까?
OldBunny2800

1
@VolAnd No. 각 문자가 나타날 확률 은 문자 빈도를 기준으로합니다. 동전을 두 번 뒤집어 놓고 머리에 한 번 떨어지면 두 번째로 꼬리를 건드릴 필요 가 없습니다 .
wizzwizz4

답변:


8

CJam , 14 바이트

{{E*`mR}`mR}E*

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

설명

각 문자는 정확히 두 번 나타나므로 문자의 확률은 모두 같아야합니다.

{           e# Repeat this block 14 times.
  {E*`mR}   e# Push this (nonsensical) block.
  `         e# Stringify it, giving the string "{E*`mR}", which contains each of the
            e# seven characters once.
  mR        e# Select one of the characters at random.
}E*

7

젤리 , 13 바이트

“;⁾vṾWṁ$X€”vṾ

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

작동 원리

“;⁾vṾWṁ$X€”vṾ  Main link. No arguments.

“;⁾vṾWṁ$X€”    Set the argument and return value to the string s := ';⁾vṾWṁ$X€'.
            Ṿ  Uneval; construct a string representation of s.
               This yields r := '“;⁾vṾWṁ$X€”'.
           v   Dyadic eval; evaluate s with argument r.


 ;⁾vṾWṁ$X€     Evaluated link (s). Argument: r

  ⁾vṾ          Yield 'vṾ'.
 ;             Concatenate r with 'vṾ'.
               This yields t := '“;⁾vṾWṁ$X€”vṾ', i.e., the original source code.
       $       Combine the previous two links into a monadic chain.
     W           Wrap; yield ['“;⁾vṾWṁ$X€”vṾ'].
      ṁ          Mold; repeat ['“;⁾vṾWṁ$X€”vṾ'] once for each charcter in t.
        X€     Random each; select a character, uniformly at random, of each
               of the 13 repetitions of t.

6

펄, 59 바이트

$_=q{$_.='$_=q{};eval';@a=/./g;s/./$a[rand@a]/g;print};eval

기존 quine을 기본으로 사용하고 소스 내용에서 임의의 문자를 인쇄하도록 수정했습니다.

용법

다른 이름으로 저장 faux-source-code.pl하고 다음을 사용하여 실행 하십시오 .

perl faux-source-code.pl

다음과 같은 것을 생성합니다.

$d='=a{f.gng$d._{{{ag{ed{aa;ae/r$no{a]_q}/$;_}lrq=r_=;_;=$'
vptr.q'ap.vaa@}@{iel];na;f.o/qon/fa}ie;=e{/a}/ag.$vaiqa_gv'
$_..'daq;.;/./.@._ogd;@aapqirv/;nrp=}@$}a/i;vq;.l.l@i}g]qq'
va==/t@dl.fe'}ar.l@n;_tve@=n$;$}$.l'p{a@qv._qag@dgr_$/.$/;v
q{/@d;@a;a_=g_r$r/.qar{=[gnr';@;$qgvad;$===/$//i]}g[tr@@.q}

간단한 테스트에서 프로그램 결과의 ~ 3 %가 eval성공적으로 수행되었습니다. 펄에 대해 무슨 말을하는지 모르겠습니다 ...


아아, 그 성공의 3 %에 대한 논평 eval! 좋은 것! ;-)
Dada

@Dada 진지하게! 답변의 제출은 진정으로 작동합니다! 나는 꽤 ... 감명을 받았습니다
돔 헤이스팅스을

희망은, 내가 본 것과, 그냥 (와 전체 단일 인용 문자열 인 출력에서 오는 '또는 q//, q{}등)!
Dada

@Dada 예 또는 정규식 일치. 그래도 나를 괴롭혔다! :)
Dom Hastings

1
당신이 btw 다시 골프를 보게되어 기쁘다! :)
Dada

4

apt , 22 바이트

"+Q ²£ZgMqB"+Q ²£ZgMqB

온라인으로 테스트하십시오!

작동 원리

"+Q ²£ZgMqB"+Q ²£ZgMqB  // Implicit: B = 11
"+Q ²£ZgMqB"            // Take this string.
            +Q          // Append a quotation mark.
               ²        // Double the result.
                £       // Replace each char in the result Z with
                 Zg     //  the char in Z at index
                   MqB  //   random integer in the range [0, 11).
                        // Implicit: output last expression

4

Pyth, 16 바이트

smO+N"m1NOs+6"16

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

각 문자를 두 번 포함하므로 확률이 각 문자가 한 번만있는 것처럼 같습니다.

smO+N"m1NOs+6"16     #
   +N"m1NOs+6"       # Add a quotation mark to the string: "m1NOs+6
  O                  # random choice from the string
 m            16     # do this 16 times.
s                    # join the list into a string

3

PHP, 71 140 110 124 140 120 바이트

for($i=2*$n=strlen($s='for($i=2*$n=strlen($s=.chr(39));$i--;)echo$s[rand(0,$n-1)];'.chr(39));$i--;)echo$s[rand(0,$n-1)];

와 실행 php -d

  1. 따옴표없이 코드를 포함하는 문자열을 만듭니다.
  2. 을 사용하여 따옴표를 한 번 연결합니다 ord
    (문자열을 두 배로하고 두 따옴표를 추가하는 것과 동일한 확률).
  3. 그런 다음 문자열 길이의 두 배를 반복하여 임의의 문자를 얻습니다.

더 골프를 칠 수는 있지만, 지금까지 헛된 곳에서 평가하려고합니다.
아마 여기에 더 깊이 가지 않을 것입니다.


1
The probability of each character is its frequency in the original source code.틀렸을 수도 있지만이 항목이이 요구 사항을 충족하는 것 같지는 않습니다.
ETHproductions

오, 그 시점을 놓쳤다. 편집기로 돌아갑니다. 코드를 읽지 않고 어떻게 할 수 있습니까?
Titus

이것을 사용 하여 syntax error, unexpected '<'. 하지만 PHP에 익숙하지 않습니다. 어떻게 테스트합니까?
NonlinearFruit

@NonlinearFruit : -d 플래그를 사용 했습니까? 이것은 파일에 저장된 다음 플래그를 사용 php하거나 사용 php-cgi하지 않고 호출 해야합니다. 아마 당신은 heredoc을 사용할 수 있습니다.
Titus

@NonlinearFruit : ... 또는를 <?사용 하여 행간 을 제거하십시오 -d.
Titus

3

파이썬 2, 88 바이트

s='''from random import*; print "".join(choice(s) for c in "s='"+s+"';exec s")''';exec s

모든 실제 이 점점 장점까지 mbomb007로 이동 - 덕분에 당신의 도움 (그리고 백 슬래시에 대한 포인터)에 대한


1
이것은 소스 코드를 입력하거나 읽지 않고 ( n문자 길이 가 길다) n임의의 문자 를 인쇄 해야하는 기발한 과제 입니다. 기호 c가 선택 될 확률 이 같습니다 (number of times c occurs in your solution) / n.
NonlinearFruit

이처럼 더? exec("""s = 'from random import choice; print "".join([choice(s) for c in s])'; exec(s)""")
user59421

작은 따옴표를 아직 포함하지 않았으며에서 작은 괄호가 필요하지 않습니다 join.
mbomb007

고마워-그리고 맞아, 나는 솔루션에 더 가까이
쏟아져

1
여기 있습니다 : s='''from random import*;print"".join(choice(s)for c in s+"s='';''exec s''")''';exec s. 나는 그것을 생각했으면 좋겠다.
mbomb007

3

루비, 47 바이트

eval r="47.times{$><<('eval r=%p'%r)[rand 47]}"

이것은 표준 evalquine을 기반으로합니다 .

eval r="$><<'eval r=%p'%r"

가장 짧은 quine보다 1 바이트 길지만 소스 코드 문자열에서 수행 된 계산을 복제 할 필요가 없기 때문에 일반적으로 quine을 선택하는 것이 좋습니다. 일반적인 quine에서 모든 추가 계산은 기본 문자열의 내부와 외부로 진행되어야하지만 이러한 종류의 quine에 대해서는 기본 문자열 내부에서만 필요합니다.

코드가 실제로하는 일 : 전체 소스 코드를 나타내는 문자열을 얻은 후에는 임의의 문자 (임의의 인덱스를 선택하여)를 47 번 선택하고 각 문자를 개별적으로 인쇄합니다.


3

볼프람 언어 / 수학, 109 바이트

Function[Print[StringJoin[RandomChoice[StringSplit[StringJoin[ToString[FullForm[Slot[0]]],"[]"],""],109]]]][]

샘플 출력 :

niPi[no,ili[Siu[,Sdoio9nthg"t ginuu[1[o]"i,icgi[0TncrS"[ln"o0]r,i][Jon[[et]0"]m [ri"a[]motrin,iFoFnultnnno,Jl

아 대괄호.


2

젤리, 44 바이트

나는 (내가 아니에요 내가 제대로 모든 규칙을 해석 한 희망을 확실히 확인 "캐리 페이로드"일이 메타에 어떤 또는이 도전도 관련이있는 경우).

“ẋ2;8220Ọ;8221ỌXµ44СḊ”ẋ2;8220Ọ;8221ỌXµ44СḊ

TryItOnline 에서 테스트

문자를 선택할 문자열을 구성합니다. 초기 문자열에는 여는 따옴표와 닫는 따옴표를 제외한 모든 문자가 사용됩니다 . 그런 다음 해당 문자열을 두 배로 늘리고 서수에서 여는 따옴표와 닫는 따옴표 중 하나를 연결 합니다 (따라서 다른 문자를 두 배로 늘려야 함). 마지막으로 구성된 문자열에서 프로그램 길이까지 임의의 문자를 반복적으로 선택합니다.


1
@NonlinearFruit 죄송합니다-문자열에서 누락 된 문자를 추가하도록 업데이트되었지만 44로 업데이트되지 않았습니다-감사합니다!
Jonathan Allan

2

파이크, 35 바이트

35F\";"\\+3322 5**F;H)s"\"2*+2* H)s

여기 사용해보십시오!

확인하려면 : 마지막을 제거하고 H결과 문자열에는 각 문자의 올바른 숫자가 포함됩니다 (추가 문자 포함 H)

이것은 일반화 된 quine을 사용하지 않거나 실제로는 quine을 전혀 사용하지 않습니다. 소스의 모든 문자를 포함하는 문자열을 작성할 수 있어야합니다. 해야 코드을 위해 그것을 할 수 있지만, 각 문자는 대수적으로 코드 크기를 증가시킵니다. 소스에서 문자가 허용되는 유일한 횟수는 2 또는 7입니다.


2

루비, 81 67 바이트

Martin의 솔루션에서 몇 가지 트릭을 훔쳐서 많은 바이트를 절약했습니다.

s="s=%p;67.times{$><<(s%%s)[rand 67]}";67.times{$><<(s%s)[rand 67]}

나는 매번 무작위로 선택해야한다는 것을 몰랐다. 나는 셔플이 트릭을 할 것이라고 생각했다. 이것은 아마도 골프를 칠 수 있지만, 내가 얻을 수있는 가장 짧은 것입니다.

약간 수정 된 표준 Ruby quine 은 섞인 문자열을 인쇄합니다. 나는 어쨌든 내가 무의식적으로 그것을 훔치고 있다는 것을 깨닫기 전에 15 분 정도의 포맷 문제를 파악하기 때문에 슬 sad습니다.

줄 셔플 링을 줄일 수 있다고 생각하지만 방법을 모르겠습니다. 생각을 한 후에는 서식을 더 짧게 만들 수 있습니다. 도움을 주시면 감사하겠습니다.

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


내 CJam과 같은 대답은 표준 quine을 기본으로 사용할 필요가 없다고 생각합니다. CJam 솔루션의 직접 포트는 64 바이트를 제공합니다.64.times{$><<"64.times{$><<.inspect[rand 32]}".inspect[rand 32]}
Martin Ender

표준 quine을 기반으로하는 것은 짧지 만 eval-based quine을 사용해야합니다.eval r="47.times{$><<('eval r=%p'%r)[rand 47]}"
Martin Ender

@MartinEnder 그 자체의 답을 얻을만큼 충분히 다릅니다. 동의하지 않으면 자유롭게 편집하십시오.하지만 그 동안 몇 바이트를 절약하기 위해 몇 가지 트릭을 훔칩니다.
Fund Monica의 소송

2

C, 125 바이트

char*s="char*s;l,i;f(){l=i=strlen(s);while(i--)putchar(s[rand()%l]);}";l,i;f(){l=i=strlen(s);while(i--)putchar(s[rand()%l]);}

C, 60 바이트는 골프를 타지 만 문자열을 취하는 퀴네 코드는 아닙니다.

l,i;f(char*s){l=i=strlen(s);while(i--)putchar(s[rand()%l]);}

문자 수를 계산하는 동안 내 솔루션에 86이 필요했습니다.

c[256];i;f(char*s){i=256;while(*s)c[*s++]++;while(--i)while(c[i]?c[i]--:0)putchar(i);}

안 돼요? 아마도이 퀴즈의 규칙을 이해하지 못할 수도 있습니다. My f는 문자열을 가져와 표준 출력으로 인쇄합니다. string은 모든 문자 시퀀스 일 수 있습니다.
VolAnd

@NonlinearFruit 확률은 계산되지 않지만 식은에서 rand()%LENGTH_OF_STRING제공 한 정규 분포를 가진 해당 문자의 확률에 따라 문자를 사용합니다 rand(). 아마도, 나는 quineC.에 대한 접근 방식을 이해하지 못합니다 .
VolAnd

+1 새로운 솔루션은 거의 정확합니다. s포함해야합니다 char*s="";. 나는 이와 같은 char*s="char*s=l,i;f(){l=i=strlen(s);while(i--)putchar(s[rand()%l]);};+''"+'""'것이 그렇게 할 것이라고 생각한다 (그러나 나는 C에 익숙하지 않다).
NonlinearFruit

답변이 현재 상태에서 유효하지 않으면 삭제해야합니다.
mbomb007

@ mbomb007 당신의 판단을 설명하고 조언을 해 줄 수 있습니까?
VolAnd

2

자바 스크립트, 128 바이트

a=";a+=uneval(a);alert(a.replace(/./g,_=>a[Math.random()*64|0]))a=";a+=uneval(a);alert(a.replace(/./g,_=>a[Math.random()*64|0]))

참고 :를 사용하기 때문에 Firefox에서만 작동합니다 uneval.

샘플 실행 :

)a(rgc=d6m_a4uar=hp(lll(,d=m=dee(M(gtraoan0)(M(aaaa(M]c)e)/M()/u//M6_n/a"*unea(/>atugrn(a=nav"|;)|=)/,ataa,aaangtue;am)t0;|ctoa/
=lvct;eee,,a.e=6r0;);Mtaaoa.aeea4)a[r.6]e/ll+l.)=)|a[(c"rao4ea/=_acaMh=veerva"a(_(d(l)lgn.;rM">=ea40a*).e(h(laa6r)4a)rhlar=t(ta[
[rt]ll]n))aota.e)g;>ae*;..4tt];l[;].*lnr4(mnM|alg(a.ag(.=e(a>>aa>.hga;a/pat+elc];apc=(ag)tao.).ll4u)dah]r(ul)>lr;,)ret(e/g(=_c*r
M.r)_;.a(lraalg("mac>dmrlr"0/ah(a()ead|/0a(m.|u0)(a(0_[dn)a]/raal;eata)a.ataeaa*l)=ra()la=(a)*aaea>n;.a.)ca)orM(tm*a,a=)p;(>r)aa

나는 이것이 JS에서 보이는 것보다 Perl에서 더 유효한 코드를 생성했다는 사실에 정말 놀랐습니다! gtraoan거의 신음하는 것을 제외하고 는 여기에 많은 재미있는 단어가 아닙니다 .
Dom Hastings

1
@DomHastings 음, 펄보다 더 JS 구두점 매쉬이다)
ETHproductions

명확히! 구두점 공장에서의 폭발보다 구두점의 혼란이 더 많습니다! 그러나 나는 그것을 아주 좋아합니다!
돔 헤이스팅스

않습니다 "게재 될 확률이?
NonlinearFruit

1
트윗 담아 가기 첫 번째, 두 번째 및 마지막 예제 출력에는 하나 이상이 있습니다.
ETHproductions

1

파이썬 3, 134132 바이트

소스 코드의 모든 문자를 문자열 내에서 올바른 횟수만큼 사용한 다음 문자열에 2를 곱하여 자체를 포함시킵니다. 프로그램은 코드의 각 문자에 대해 해당 문자열에서 임의의 문자를 인쇄합니다 (길이는 하드 코딩되어 있음).

from random import*
for i in[0]*134:print(choice("""from random import*
for i in[0]*134:print(choice(""*""2""),end='')"""*2),end='')

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

전염병처럼 백 슬래시를 피했습니다. 즉시 코드가 포함로 \n또는 \"이 두 개의 백 슬래시 걸리기 때문에, 당신은 문자열이 아직 백 슬래시가 포함되어 있지 않기 때문에 당신은 또한 사람들을 추가해야하므로, 문제가 있지만, 별도의 문자열에 더 높은 수를 곱한 값을 나타내는 ( \\).

출력 예 :

i(tc*"3]i o''r=,,,h34t"r
ri"](fco t)niap)t "it2nc0o  npoi3'"nto(*4 i(ido' r*4f"oi]d rm ,i"eif)m"d
m emi
dfr n*p 3*(i""r1d"dr menc hio'

FlogScript를 생각 나게합니다.


1

PowerShell v2 +, 175 바이트

$d='$d={0}{1}{0}{2}-join(0..174|%{3}[char[]]($d-f [char]39,$d,"`n",[char]123,[char]125)|Random{4})'
-join(0..174|%{[char[]]($d-f [char]39,$d,"`n",[char]123,[char]125)|Random})

문자열 교체 구분하기 때문에 PowerShell의 Quines는 빨아 {}당신이 사용할 필요도 나타낸다 루프와 이것 저것, 너무 무리char에들 -f코드를 bloats 연산자.

모든 라인 답변에 대한 Quine와 비슷 합니다. 기본적으로 우리는 루프 0에 대한 174각각의 반복 재 계산한다 quine는 $d, A와 캐스팅 char-array하고 꺼내 Random입력으로부터 균일하게 선택된 요소. 정의에 (occurrences in source) / (length of source)따라 필요한대로 확률이 제공 됩니다. 이 문자들은 괄호 안에 캡슐화되어 -join다시 문자열로 연결됩니다.

PS C:\Tools\Scripts\golfing> .\faux-souce-code.ps1
}}[${hr[`ini}}] [5i,=[]0,j2($=n4(dm]jh]jc]]7
}..j"rnj9|fn,4r]{9]('["jdh0}$rd,-f,a.c"}{h1 ]5d,),0n5|nh(]73a9da4aRi[5}a}430}}rd$,$r)-hhr%or79-R.R-`'r'aa|=1f0][|[{7}do1]$ja0 rd{h

(예, 출력의 줄 바꿈입니다. 줄 바꿈을 포함하는 문자열이 char-array'd 일 때 -array는 바이트 코드의 배열이므로 1 / 175th `n도 있으므로 문자로 취급됩니다. char선택 될 수 있습니다.)


1

Dyalog APL , 20 바이트

f←{(,⎕CR'f')[?⍴⍨20]}

f←{... f를 다음 과 같이 }정의하십시오

(,⎕CR'f')listified ( ,) C haracter (표) R의 epresentation ( ⎕CR)의 F ( 'f')

[?⍴⍨20]( [... ]) 임의 ?반복 ( ) 반복 자체 시간 ( ⍴⍨20)으로 색인 생성

몇 번 (가상 인수로) 실행 해 보자.

      f
)0'0](⍨(([],}⎕))⎕'f2
      f
{'['}f[←R[)2←?}⍨]}C2
      f
,,⍨←?2}⍴?'⍨}C,'{⎕(C0

좋아요,하지만 배포가 맞습니까? 10,000 개의 더미 인수로 실행하고 각 문자가 몇 번 나오는지 확인하십시오.

      {⍺ , 1E¯4× ⍴⍵}⌸  f¨ 1E4
C 0.9952
 0.9996
' 1.9777
f 2.004 
← 1.0018
⍨ 1.0173
0 1.0213
] 1.0049
[ 0.9988
2 0.9943
{ 0.9895
) 1.0093
R 1.0054
, 1.0029
? 0.9943
} 0.9861
⍴ 1.0032
( 0.9944

분명히, f그리고 '단지 원래의 소스 코드에서와 같이, 다른 문자로 두 배 자주 발생합니다.

우리는 어떻게 했습니까?

{⍺ , 1E¯4× ⍴⍵}⌸  f¨ 1E4`

⍳1E4 처음 10,000 개의 정수를 생성합니다

해당 숫자 각각에 대해 f 를 실행 합니다.

모든 의사 퀸을 단일 200,000 자 문자열로 평탄화

오른쪽 데이터의 각 고유 문자에 대해 왼쪽 함수에 고유 한 요소를 왼쪽 인수로 피드하고 해당 문자가 오른쪽 인수로 나타나는 인덱스를 제공하는 고차 함수입니다. 왼쪽 기능은

{⍺ , 1E¯4× ⍴⍵}

왼쪽 인수, 즉 고유 문자

, 뒤에

1E¯4× 1 × 10⁻⁴ 배

⍴⍵ 오른쪽 인수의 모양 (발생 색인), 즉 발생 횟수

마지막으로 테이블에 모두 넣습니다.


1

C #, 277 (280) 268 바이트.

using System;class a{static void Main(){var s="using System;class a{static void Main(){var s=\"x5Cx5C\x5C\x5C\";Random d=new Random();for(int i=0;i++<268;)Console.Write(s[d.Next(0,134)]);}}";Random d=new Random();for(int i=0;i++<268;)Console.Write(s[d.Next(0,134)]);}}

언 골프 드 :

using System;
class a
{
    static void Main()
    {
        var s="using System;class a{static void Main(){var s=\"x5Cx5C\x5C\x5C\";Random d=new Random();for(int i=0;i++<268;)Console.Write(s[d.Next(0,134)]);}}";
        Random d=new Random();
        for(int i=0;i++<268;)
            Console.Write(s[d.Next(0,134)]);
    }
}

이것이 제대로 작동하는지 확인하십시오.

샘플 출력 :

    fn;i)(]ns;<ftt08et]i+ii8]m[W}dr{rmte,)t edayid 2s cmsee\;ta["e n;o}]iolys;t sftoR{.=g vs8;(sd isWrecn++iia]iuf"avs\i<{ee vfs[ensin\s i]0a(We.0ns R(2roo=ldxil\{t(o"aistt.;.  r w"m1];idi}Ctitiindnn;M[,[+0(,o"]mca[rmnm)<;n"8ReaystinRsanr([(d,n\.ateiR sd.=[=;ttn.;wna)cCt[=+t{Wxs(\}rg

@NonlinearFruit 감사합니다, 그 공간을 놓쳤습니다. 또한 몇 바이트를 추가하는 foreach 루프를 사용할 수 없음을 의미합니다. 다른 곳에서 사용하지
못함

아아 아아아 아아아 아아아 아아아 아아아 아아아 아아아 약간 수정됩니다.
Yodle

좋아, 이제 나타납니다!
Yodle

1
흠, 그때 흥미로운 문제입니다. \\를 계속 추가 할 수 없거나 항상 짧을 것입니다. 대신 \에 ASCII 코드를 사용하겠습니다.
Yodle

합니까의 (new Random()).Next(0,134)]작업? 몇 바이트를 절약 할 수 있습니다.
NonlinearFruit

1

C, 136 바이트

main(a){for(a=136;a--;)rand()%68?putchar("main(a){for(a=136;a--;)rand()%68?putchar([rand()%67]):putchar(34);}"[rand()%67]):putchar(34);}

출력 예 :

;%7c(u)"r4-hd)nnr-%n6;6(4or(n4(6(a:=a3r-:()hp(:aa%;4rru}h;(a()3mh3rdi7));a-u36:r3on[4?p((]6n6?()-6t736unhr%:[%[[d(p:[ru)-n(6r=:](p-})8"]

이 프로그램은 136자를 무작위로 출력합니다.

전체 소스 코드 ( "따옴표가 적음")는 문자열에 포함되어 있으며 프로그램은 따옴표를 2/136으로 출력 할 확률을 결정하고 그렇지 않으면 다른 67 자 중 하나를 임의로 출력합니다.

프로그램에서 문자열에 각 문자가 두 번 나타납니다. 문자열에서 문자를 출력 할 확률은 134/136입니다. 문자열에서 특정 문자를 선택할 확률은 1/67입니다. 따라서 문자열에서 문자를 출력 할 가능성은 134/136 * 1/67 = 2/136입니다. 프로그램에서 각 문자열 문자가 두 번 발생하므로 프로그램에서 각 발생에 대한 문자를 출력 할 확률은 1/136입니다.

문자열 내부의 기호 순서는 중요하지 않습니다.

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