Mã nguồn giả


23

Xuất một ký tự ngẫu nhiên cho mỗi ký tự của mã nguồn (như minh họa bên dưới). Xác suất của mỗi ký tự là tần số của nó trong mã nguồn gốc. Do đó, đầu ra sẽ là mã nguồn giả giống như một quine.

Đặc điểm kỹ thuật

  • Hạn chế
    • Hạn chế tiêu chuẩn áp dụng. Không có chương trình hoặc chức năng trống. Cũng không đọc nguồn của riêng bạn.
  • Đầu ra
    • Số lượng ký tự đầu ra phải chính xác là số lượng ký tự trong mã nguồn
    • Mỗi ký tự đầu ra nên được chọn ngẫu nhiên
    • Xác suất chọn bất kỳ nhân vật nào bằng (occurrences in source) / (length of source)
    • Điều này có nghĩa là ngay cả một giải pháp đơn phương cũng cần phải 'chọn ngẫu nhiên' 1với xác suất 1. Điều đó có nghĩa là đầu ra không thể được mã hóa cứng.
  • Chiến thắng
    • Đây là mã golf, vì vậy ít byte nhất sẽ thắng

Thí dụ

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%

Các quines đơn nhân vật được phép?
Nathan Merrill

@NathanMerrill Có, các giải pháp ký tự đơn (và đơn nguyên khác) được cho phép. Tuy nhiên, đầu ra của họ vẫn cần phải được chọn ngẫu nhiên.
Phi tuyến

Làm thế nào tôi có thể tìm thấy sự xuất hiện của các ký tự trong một tệp nếu tôi không được phép đọc nó?
Tít

1
Đây có phải là mã golf ?
OldBunny2800

1
@VolAnd Số Xác suất của mỗi ký tự xuất hiện dựa trên tần số ký tự. Nếu bạn lật một đồng xu hai lần và nó rơi trúng đầu một lần, nó sẽ không phải vẫy đuôi lần thứ hai.
wizzwizz4

Câu trả lời:


8

CJam , 14 byte

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

Hãy thử trực tuyến!

Giải trình

Mỗi nhân vật xuất hiện chính xác hai lần, vì vậy xác suất của các nhân vật nên giống nhau.

{           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

Thạch , 13 byte

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

Hãy thử trực tuyến!

Làm thế nào nó hoạt động

“;⁾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

Perl, 59 byte

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

Tôi đã sử dụng một quine hiện có làm cơ sở và sửa đổi nó để in các ký tự ngẫu nhiên từ nội dung nguồn.

Sử dụng

Lưu dưới dạng faux-source-code.plvà chạy bằng cách sử dụng:

perl faux-source-code.pl

Sản xuất một cái gì đó như sau:

$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}

Trong một thử nghiệm ngắn, ~ 3% kết quả của chương trình evalthành công. Tôi không chắc những gì nói về Perl ...


Ahah, nhận xét đó về 3% thành công eval! Đẹp quá ;-)
Dada

@Dada Nghiêm túc! Các bài nộp trong câu trả lời thực sự làm việc! Tôi đã rất ấn tượng ...
Dom Hastings

Hy vọng, từ những gì tôi đã thấy, nó chỉ xuất phát từ đầu ra là toàn bộ một chuỗi trích dẫn (có 'hoặc q//, q{}v.v.)!
Dada

@Dada Vâng, hoặc một trận đấu regex. Làm tôi cười thầm mặc dù! :)
Dom Hastings

1
Rất vui khi thấy bạn chơi golf một lần nữa btw! :)
Dada

4

Japt , 22 byte

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

Kiểm tra nó trực tuyến!

Làm thế nào nó hoạt động

"+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

Bình, 16 byte

smO+N"m1NOs+6"16

thử trực tuyến!

Chứa mỗi char hai lần do đó xác suất giống như thể mỗi lần chỉ ở đó một lần.

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 byte

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)];

chạy với php -d

  1. tạo một chuỗi chứa mã mà không có dấu ngoặc kép
  2. và nối dấu ngoặc kép một lần bằng cách sử dụng ord
    (cùng xác suất như thể tôi sẽ nhân đôi chuỗi và thêm hai dấu ngoặc kép);
  3. sau đó lặp qua hai lần chiều dài của chuỗi để lấy các ký tự ngẫu nhiên từ nó.

Có thể có thể chơi gôn xa hơn, nhưng những nỗ lực của tôi về eval nơi vô ích cho đến nay.
Tôi có lẽ sẽ không đi sâu hơn ở đây.


1
The probability of each character is its frequency in the original source code.Tôi có thể sai, nhưng có vẻ như mục này không đáp ứng yêu cầu này.
Sản phẩm ETH

Oh tôi đã bỏ lỡ điểm đó. Quay lại với biên tập viên. Làm thế nào điều này có thể được thực hiện mà không cần đọc mã?
Tít

Sử dụng này , tôi đã nhận được một syntax error, unexpected '<'. Nhưng tôi không quen thuộc với PHP, làm cách nào để kiểm tra điều này?
Phi tuyến

@NonlinearFbean: Bạn đã sử dụng cờ -d? Điều này được cho là được lưu vào một tệp và sau đó được gọi có phphoặc php-cgikhông có bất kỳ cờ nào. Có lẽ bạn có thể sử dụng một di sản.
Tít

@NonlinearFnut: ... hoặc chỉ cần loại bỏ hàng đầu <?để sử dụng với -d.
Tít

3

Python 2, 88 byte

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

Tất cả công đức thực sự trong việc đạt được điều này đến với mbomb007 - cảm ơn sự giúp đỡ của bạn (và con trỏ về dấu gạch chéo ngược)


1
Đây là một thử thách giống như quine, không cần nhập hoặc đọc mã nguồn của bạn (giả sử nó ndài ký tự), bạn cần in ncác ký tự ngẫu nhiên. Trong đó xác suất của một biểu tượng cđược chọn là bằng (number of times c occurs in your solution) / n.
Phi tuyến

Vì vậy, nhiều hơn như thế này? exec("""s = 'from random import choice; print "".join([choice(s) for c in s])'; exec(s)""")
dùng59421

Bạn chưa bao gồm các trích dẫn duy nhất và bạn không cần dấu ngoặc vuông trong join.
mbomb007

Cảm ơn - và đúng, tôi đã có một chút bị cuốn vào sự vội vã tiến gần hơn đến giải pháp
user59421

1
Ở đây bạn đi : s='''from random import*;print"".join(choice(s)for c in s+"s='';''exec s''")''';exec s. Tôi ước tôi đã nghĩ về điều đó.
mbomb007

3

Ruby, 47 byte

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

Điều này dựa trên tiêu chuẩn eval:

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

Đó là một byte dài hơn so với quine ngắn nhất, nhưng nó thường là lựa chọn tốt hơn cho các quine tổng quát, bởi vì bất kỳ tính toán nào được thực hiện trên chuỗi mã nguồn không cần phải sao chép. Trong khi trong quine thông thường, mọi tính toán bổ sung cần phải đi cả bên trong và bên ngoài chuỗi chính, chỉ cần bên trong chuỗi chính cho loại quine này.

Đối với những gì mã thực sự làm: sau khi có được một chuỗi đại diện cho toàn bộ mã nguồn, chúng ta chỉ cần chọn một ký tự ngẫu nhiên (bằng cách chọn một chỉ mục ngẫu nhiên) 47 lần và in riêng từng ký tự.


3

Ngôn ngữ Wolfram / Mathicala, 109 Byte

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

đầu ra mẫu:

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

Ôi những dấu ngoặc vuông.


2

Thạch, 44 byte

Tôi hy vọng tôi đã giải thích tất cả các quy tắc một cách chính xác (tôi không khá chắc chắn về "carry tải trọng" Vấn đề là ở meta hoặc nếu nó thậm chí còn liên quan đến thách thức này).

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

Kiểm tra nó tại TryItOnline

Điều này xây dựng một chuỗi để chọn các ký tự. Chuỗi ban đầu có tất cả các ký tự được sử dụng ngoại trừ dấu ngoặc kép mở và đóng. Sau đó, nó nhân đôi chuỗi đó và nối một trong các dấu ngoặc kép mở và đóng từ các lệnh (do đó cần phải tăng gấp đôi các ký tự khác). Cuối cùng, nó liên tục chọn các ký tự ngẫu nhiên từ chuỗi tổng hợp đến độ dài của chương trình.


1
@NonlinearF fruit Oops - Tôi đã cập nhật để thêm một ký tự bị bỏ lỡ từ chuỗi của mình nhưng không cập nhật lên 44 - cảm ơn!
Jonathan Allan

2

Pyke, 35 byte

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

Hãy thử nó ở đây!

Để kiểm tra: xóa chuỗi cuối cùng Hvà chuỗi kết quả chứa đúng số của mỗi ký tự (có thêm H)

Điều này KHÔNG sử dụng một quine tổng quát hoặc trong thực tế một quine cả. Nó phụ thuộc vào việc có thể tạo một chuỗi chứa tất cả các ký tự trong nguồn. Nó sẽ có thể làm điều đó cho bất kỳ mã nào, nhưng mỗi ký tự logarit tăng kích thước mã. Số lần duy nhất một ký tự được phép trong nguồn là 2 hoặc 7


2

Ruby, 81 67 byte

Đã lưu một loạt byte bằng cách ăn cắp một số thủ thuật từ giải pháp của Martin

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

Tôi đã không nhận ra rằng bạn phải chọn ngẫu nhiên mỗi lần; Tôi nghĩ rằng một shuffle sẽ làm điều đó. Điều này có thể có thể được chơi golf, nhưng nó là ngắn nhất tôi có thể nhận được nó.

Tiêu chuẩn Ruby quine với một vài sửa đổi để nó in ra chuỗi xáo trộn. Tôi buồn vì phải mất mười lăm phút để tìm ra các quirks định dạng trước khi tôi nhận ra rằng dù sao tôi cũng đã đánh cắp nó trong tiềm thức.

Tôi nghĩ việc xáo trộn chuỗi có thể được rút ngắn nhưng tôi không biết làm thế nào; Tôi cũng có thể chỉnh sửa định dạng thành ngắn hơn một khi tôi suy nghĩ về nó. Trợ giúp sẽ được đánh giá cao.

Hãy thử trực tuyến!


Tôi nghĩ (giống như câu trả lời của tôi), không cần thiết phải sử dụng một tiêu chuẩn làm cơ sở. Một cổng trực tiếp của giải pháp CJam của tôi cung cấp 64 byte:64.times{$><<"64.times{$><<.inspect[rand 32]}".inspect[rand 32]}
Martin Ender

Không bao giờ, căn cứ vào một tiêu chuẩn ngắn hơn, nhưng bạn sẽ phải sử dụng câu hỏi dựa trên eval:eval r="47.times{$><<('eval r=%p'%r)[rand 47]}"
Martin Ender

@MartinEnder Điều đó đủ khác biệt để xứng đáng với câu trả lời của riêng mình, tôi nghĩ vậy. Nếu bạn không đồng ý, vui lòng chỉnh sửa nó thành của tôi, nhưng trong lúc này tôi sẽ chỉ ăn cắp một vài thủ thuật từ bạn để lưu một vài byte trong tôi.
Vụ kiện của Quỹ Monica

2

C, 125 byte

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 byte cho golf nhưng không mã quine lấy bất kỳ chuỗi nào

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

Trong khi đếm các ký tự, giải pháp của tôi cần 86:

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

Nó không nên? Có lẽ tôi không hiểu các quy tắc của bài kiểm tra này. My flấy chuỗi và in ra đầu ra tiêu chuẩn: chuỗi có thể là bất kỳ chuỗi ký tự nào.
VolAnd

@NonlinearFbean Xác suất không được tính nhưng biểu thức rand()%LENGTH_OF_STRINGlấy ký tự theo xác suất của ký tự đó với phân phối bình thường được cung cấp bởi rand(). Có lẽ, tôi không hiểu quinecách tiếp cận cho C ....
VolAnd

+1 Giải pháp mới gần như đúng. sChỉ cần chứa char*s="";. Tôi nghĩ rằng một cái gì đó như thế này char*s="char*s=l,i;f(){l=i=strlen(s);while(i--)putchar(s[rand()%l]);};+''"+'""'sẽ làm điều đó (nhưng tôi không quen thuộc với C).
Phi tuyến

Nếu câu trả lời không hợp lệ ở trạng thái hiện tại, thì nó sẽ bị xóa.
mbomb007

@ mbomb007 Bạn có thể giải thích phán đoán của mình và có thể cung cấp lời khuyên đến không?
Voland

2

JavaScript, 128 byte

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]))

Lưu ý: chỉ hoạt động trong Firefox do sử dụng uneval.

Chạy mẫu:

)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

Bây giờ tôi thực sự ngạc nhiên khi mã này tạo ra nhiều mã hợp lệ trong Perl hơn nó xuất hiện trong JS! gtraoanTôi đoán không có nhiều từ thú vị ở đây, ngoại trừ gần như một tiếng rên rỉ tôi đoán ...
Dom Hastings

1
@DomHastings Chà, Perl giống như một dấu chấm câu hơn là JS;)
ETHproductions

Chắc chắn rồi! Đó là một mớ hỗn độn của dấu chấm câu hơn là một vụ nổ trong một nhà máy chấm câu! nhưng tôi khá thích điều đó
Dom Hastings

"xác suất hiển thị?
Phi tuyến

1
@NonlinearFup Yup. Có ít nhất một trong các đầu ra ví dụ đầu tiên, thứ hai và cuối cùng.
Sản xuất ETH

1

Python 3, 134 132 byte

Tôi sử dụng mỗi ký tự trong mã nguồn của mình trong chuỗi số lần chính xác, sau đó nhân chuỗi đó với hai lần để bao gồm chính nó. Chương trình in một ký tự ngẫu nhiên từ chuỗi đó cho mỗi ký tự trong mã (độ dài được mã hóa cứng.)

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

Dùng thử trực tuyến

Tôi tránh được dấu gạch chéo ngược như bệnh dịch hạch. Ngay khi mã chứa \nhoặc \", bạn gặp sự cố, vì chuỗi chưa chứa dấu gạch chéo ngược, do đó bạn phải thêm các mã đó, nhưng trong một chuỗi riêng được nhân với số cao hơn, vì phải có hai dấu gạch chéo ngược để biểu thị một ( \\).

Ví dụ đầu ra:

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'

Tôi phải nói rằng, nó làm tôi nhớ đến FlogScript.


1

PowerShell v2 +, 175 byte

$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})

Quines trong PowerShell hút, bởi vì delimiters chuỗi thay thế {}cũng vòng biểu thị và không có điều gì, vì vậy bạn cần phải sử dụng một loạt các chars trong -fđiều hành, mà bloats mã.

Tương tự như câu trả lời Quine của tôi trên mỗi dòng . Về cơ bản, chúng ta lặp từ 0đến 174và mỗi lần lặp lại tính toán lại quine $d, đặt nó dưới dạng char-array và rút ra một Randomphần tử được chọn thống nhất từ ​​đầu vào. Theo định nghĩa, điều này đưa ra xác suất (occurrences in source) / (length of source)theo yêu cầu. Những ký tự đó được gói gọn trong các ô và chỉnh -joinlại thành một chuỗi.

Thí dụ

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

(Vâng, đó là một dòng mới trong đầu ra - khi một chuỗi chứa một dòng mới được char-array'd thì `nđược coi là một nhân vật, vì một char-array chỉ là một mảng của các mã byte, vì vậy nó cũng có một 1/175 cơ hội được chọn.)


1

APL Dyalog , 20 byte

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

f←{... }xác định f

(,⎕CR'f')liệt kê ( ,) C haracter (bảng) R epresentation ( ⎕CR) của f ('f' )

[?⍴⍨20]được lập chỉ mục với ( [... ]) ngẫu nhiên lên (? ) lặp lại chính nó ( ⍴⍨) của hai mươi

Hãy để chúng tôi chạy nó (với một đối số giả) một vài lần:

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

Tốt, nhưng phân phối có đúng không? Chúng ta hãy chạy nó trên 10.000 đối số giả và xem mỗi nhân vật xảy ra bao nhiêu lần:

      {⍺ , 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

Thông suốt, f'xảy ra thường xuyên gấp đôi so với các ký tự khác, giống như trong mã nguồn ban đầu.

chúng tôi đã làm nó như thế nào?

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

⍳1E4 tạo ra 10.000 số nguyên đầu tiên

chạy f trên mỗi số đó

làm phẳng tất cả các chuỗi giả thành một chuỗi 200.000 ký tự

là một hàm bậc cao hơn, cho mỗi ký tự duy nhất trong dữ liệu bên phải, cung cấp cho hàm bên trái phần tử duy nhất là đối số bên trái và các chỉ số trong đó ký tự đó xuất hiện dưới dạng đối số phải. Hàm bên trái là

{⍺ , 1E¯4× ⍴⍵}

đối số trái, tức là ký tự duy nhất

, theo dõi bởi

1E¯4× 1 × 10⁻⁴ lần

⍴⍵ hình dạng của đối số đúng (các chỉ số xuất hiện), iehow nhiều lần nó xảy ra

Cuối cùng, đặt tất cả lại với nhau trong một bảng.


1

C #, 277 280 268 byte.

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)]);}}

Ung dung:

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)]);
    }
}

Khá chắc chắn rằng điều này hoạt động chính xác.

Đầu ra mẫu:

    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

@NonlinearFnut Cảm ơn, đã bỏ lỡ không gian đó. Cũng có nghĩa là tôi không thể sử dụng vòng lặp foreach có thêm một vài byte :(. Tuy nhiên, tôi nghĩ rằng tôi đã "bao gồm chính xác với hai trích dẫn đã thoát trong chuỗi, vì chúng xuất hiện trong đầu ra một vài lần, trừ khi tôi ' m thiếu sử dụng của họ ở một nơi khác.
Yodle

Ahh, tôi nghĩ rằng họ đã không đếm nếu họ ở trong chuỗi, xấu của tôi. Sẽ sửa trong chốc lát.
Yodle

Được rồi, bây giờ cũng xuất hiện!
Yodle

1
Hừm, vấn đề thú vị rồi. Không thể tiếp tục thêm \ hoặc tôi sẽ luôn luôn là một ngắn. Thay vào đó, tôi sẽ sử dụng mã ascii cho \.
Yodle

(new Random()).Next(0,134)]hoạt động không? Nó sẽ tiết kiệm một vài byte.
Phi tuyến

1

C, 136 byte

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);}

Ví dụ đầu ra:

;%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"]

Chương trình này xuất ra 136 ký tự ngẫu nhiên.

Toàn bộ mã nguồn (ít "dấu ngoặc kép) được chứa trong một chuỗi. Chương trình xác định xác suất xuất ra dấu ngoặc kép là 2/136, nếu không thì xuất ngẫu nhiên một trong 67 ký tự khác.

Có hai lần xuất hiện của mỗi ký tự trong chuỗi trong chương trình. Xác suất xuất ra một ký tự từ chuỗi là 134/136. Xác suất chọn một ký tự cụ thể trong chuỗi là 1/67. Vì vậy, cơ hội xuất ra một ký tự trong chuỗi là 134/136 * 1/67 = 2/136. Có hai lần xuất hiện của mỗi ký tự chuỗi trong chương trình, do đó, có xác suất 1/136 xuất ra một ký tự cho mỗi lần xuất hiện trong chương trình.

Thứ tự của các ký hiệu bên trong chuỗi không quan trọng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.