Người quan tâm


28

Lý lịch

Person of Interest là một bộ phim tội phạm trên CBS, và chương trình truyền hình yêu thích của tôi, tính đến cuối.

Chương trình nói về một người đàn ông tên Harold Finch, một lập trình viên tỷ phú, và đối tác của anh ta John Reese, một cựu chiến binh lực lượng đặc biệt và cựu nhân viên CIA. Lập trình viên này đã tạo ra một AI có tình cảm gọi là "The Machine" dự đoán các tội ác bạo lực trước khi chúng xảy ra. Nó theo dõi mọi người trên Trái đất mọi lúc bằng cách theo dõi và phân tích tất cả các camera giám sát và thông tin liên lạc điện tử trên toàn cầu.

Harold đã chế tạo Máy cho chính phủ Hoa Kỳ để phát hiện hoạt động khủng bố trước thực tế. Nó phân chia các tội ác mà nó dự đoán thành các danh sách dựa trên việc chúng có liên quan đến an ninh quốc gia hay không. Các trường hợp liên quan được xử lý bởi chính phủ, trong khi danh sách "không liên quan" được lập trình để xóa hàng ngày.

Harold đã tạo ra một cửa hậu nhỏ cho chính mình với hy vọng đối phó với danh sách "không liên quan". Cửa hậu này khiến Máy gọi điện thoại tới Harold gần nhất (mỗi ngày một lần hoặc lâu hơn) và đọc số An sinh Xã hội cho anh ta. SSN này thuộc về một người có cuộc sống đang gặp nguy hiểm như là một phần của tội phạm được dự tính trước, hoặc của một người đang lên kế hoạch cho một tội ác như vậy.


Các thách thức

Viết chương trình không có đầu vào và xuất ra 30 số điện thoại & SSN ngẫu nhiên (xem bên dưới).


Đầu ra

Có hai dòng văn bản sẽ được in mỗi "ngày".

  1. Crime predicted: 555-55-5555
  2. Calling: 1-555-555-5555 theo sau là một dòng mới

Quá trình này sẽ lặp lại trong một "tháng" (30 "ngày").


Số điện thoại

Mỗi số điện thoại phải có các yếu tố sau:

  • Phải có mã quốc gia Hoa Kỳ (chữ số đầu tiên).

  • Phải có mã vùng ngẫu nhiên (bộ ba chữ số đầu tiên).

  • Ba chữ số đầu tiên của chính số điện thoại nên có555 , sau đó là 4 chữ số ngẫu nhiên.

Đây là một ví dụ chú thích:

1-814-555-3857
|  |   |   |
|  |   |   |
|  |   |   +---------->   random four digits
|  |   |
|  |   +-------------->   the set 555
|  |
|  +------------------>   area code
|
+--------------------->   country code

Số an sinh xã hội

Mỗi SSN phải có 9 chữ số ngẫu nhiên theo định dạng sau.

342-98-1613

Thí dụ

Crime predicted: 234-72-8311
Calling: 1-633-555-0188

Crime predicted: 135-77-0910
Calling: 1-202-555-4719

Crime predicted: 722-90-6653
Calling: 1-466-555-1069

...

Tiếp tục cho 27 chu kỳ nữa.


Bảng điểm

Để điểm số của bạn xuất hiện trên bảng, nó phải ở định dạng này:

# Language, Bytes

Strikethroughs không gây ra vấn đề.


3
Ngoài ra, các giá trị hợp lệ cho mã quốc gia / mã vùng của Hoa Kỳ là gì?
mınxomaτ

2
Tôi đã loại bỏ giới hạn thời gian. Liên quan đến câu hỏi thứ hai của bạn, mã quốc gia Hoa Kỳ rõ ràng là a 1. Đối với mã vùng, bất kỳ ba chữ số sẽ làm, cho mục đích của thách thức này. @minxomat
Zach Gates

1
@LuisMendo có sự đồng thuận về meta về ý nghĩa ngẫu nhiên nếu không được xác định đầy đủ
FryAmTheEggman

5
Tất nhiên, việc tạo các số theo định dạng mà chúng thực sự được The Machine truyền tải trong chương trình thậm chí còn phức tạp hơn ...;)
Mason Wheeler

Câu trả lời:


10

CJam, 68 66 64 byte

Cảm ơn Dennis vì đã tiết kiệm 2 byte!

"Crime predicted: --
Calling: 1--555-

"30*{_5<{iAa*:mr}&}/

Sao chép sẽ không hoạt động vì có một vài dấu vết không thể in được (một thay cho mỗi nhóm ngẫu nhiên), vì vậy đây là một xxdbãi chứa:

00000000: 2243 7269 6d65 2070 7265 6469 6374 6564  "Crime predicted
00000010: 3a20 032d 022d 040a 4361 6c6c 696e 673a  : .-.-..Calling:
00000020: 2031 2d03 2d35 3535 2d04 0a0a 2233 302a   1-.-555-..."30*
00000030: 7b5f 353c 7b69 4161 2a3a 6d72 7d26 7d2f  {_5<{iAa*:mr}&}/

Để đảo ngược nó, dán nó vào một tập tin và khởi chạy xxd -r in_file > out_file. Bạn cũng có thể thử nó trực tuyến .

Giải trình

"..."30*     Push the string 30 times
{ ... }/     For each character in the string:
_5<{ ... }&    If the ASCII code is < 5:
iAa*             Push an array of as many 10s as the ASCII code
:mr              For each 10, choose a random 0-9 number

Tôi sẽ không bao giờ nghĩ về điều này bản thân mình, nhưng dường như nó ngắn hơn hai byte trong Pyth.
FryAmTheEggman

@FryAmTheEggman Có lẽ tôi nên học Pyth, nó thường ngắn hơn CJam. Bạn có thể đăng câu trả lời đó nếu bạn muốn :)
Andrea Biondo

8

Con trăn 2, 129

from random import*
print''.join([c,`randint(0,9)`][c>'w']for c in'Crime predicted: xxx-xx-xxxx\nCalling: 1-xxx-555-xxxx\n\n'*30)

Một phương pháp ngây thơ. Nhận tin nhắn

Crime predicted: xxx-xx-xxxx
Calling: 1-xxx-555-xxxx

và sao chép nó 30 lần. Sau đó, thay thế mỗi xbằng một chữ số ngẫu nhiên randint(0,9), giữ cho tất cả các ký tự khác giống nhau.


6

Python 2, 151 byte

Cảm ơn chúa (và @Dennis) vì %0nd: D

from random import randrange as r
for i in[1]*30:print"Crime predicted: %03d-%02d-%04d\nCalling: 1-%03d-555-%04d\n"%(r(1e3),r(100),r(1e4),r(1e3),r(1e4))

6

Perl, 85 Byte, cảm ơn Dennis và grc!

$_="Crime Predicted: NNN-NN-NNNN 
Calling: 1-NNN-555-NNNN 

"x30;s/N/0|rand 10/eg;print

Perl gốc, 91 92 byte

print"Crime Predicted: NNN-NN-NNNN
Calling: 1-NNN-555-NNNN

"=~s/N/int rand 10/egr for 1..30

1
@Dennis aw, tôi đã định đăng nó cho đến khi tôi thấy câu trả lời này. Tôi đã có $_="..."x30;s/_/0|rand 10/eg;printmà lưu /rcờ.
grc

Cảm ơn @Dennis và @grc! Có phải là thông lệ để kết hợp các thay đổi được đề xuất trong các bình luận (với sự ghi nhận của khóa học)? Nếu không tôi sẽ hoàn nguyên bản chỉnh sửa của mình. Nhưng, trong mọi trường hợp, cảm ơn! Tôi hoàn toàn quên mất 0|rand ...mánh khóe và toán tử lặp lại mà tôi hiện đang sử dụng để tát vào đầu mình vì đã bỏ lỡ điều đó!
gõ vào

2
Vâng, đó là thông lệ. Nếu bạn chưa có, bạn nên xem Mẹo chơi gôn ở Perl? . Đó là một nguồn tài nguyên tuyệt vời.
Dennis

5

CJam, 73 71 70 byte

30{"Crime predicted: x-x-x
Calling: 1-x-555-x
"'x/[ZY4Z4]Aaf*::mr.+N}*

Hãy thử trực tuyến trong trình thông dịch CJam .

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

30{     e# Repeat 30 times:

e# Push the following string:

"Crime predicted: x-x-x
Calling: 1-x-555-x
"

'x/     e# Split at x's.
[ZY4Z4] e# Push the array [3 2 4 3 4].
Aaf*    e# For each integer in that array, repeat [10] that many times.
        e# This pushes [[10 10 10][10 10][10 10 10 10][10 10 10][10 10 10 10]].
::mr    e# For each 10, select a random integer between 0 and 9 (inclusive).
.+      e# Vectorized concatenation.
        e# This places the digits at the spots of the x's.
N       e# Push a linefeed.
}*      e#

5

ß, 121 118 112 byte

°/N=1°(30°/M°=ß$-ß$$'Crime predicted: 000-00-0000\nCalling: 1-000-555-0000\n\n'),'',3)µ€(M='0')?ß!G0,9,1):M)°)°)

Về cơ bản thay thế 0 bằng một số ngẫu nhiên mỗi số và gọi chính nó 30 lần.

Kiểm tra nó bằng thiết bị đầu cuối trực tuyến :

sharps:~$ "<ctrl+v the code here>"                       
Crime predicted: 214-59-4707                              
Calling: 1-850-555-8529                                   

Crime predicted: 722-97-6832                              
Calling: 1-864-555-6965                                   

<and so on...>

Chỉnh sửa (112B): Sử dụng $$(một cái gì đó như sprintf) & toán tử ternary.


Bạn có thể cung cấp một liên kết đến thông số kỹ thuật của ngôn ngữ này?
LegionMammal978

@ LegionMammal978 Mất một thời gian để viết. Nói một cách đơn giản: Có mọi tính năng AutoIt có.
mınxomaτ

4

Bình dương, 66

V30sX"Crime Predicted: v-w-x
Calling: 1-y-555-z
">5GmjkmOTdj32434T

Sử dụng Xđể dịch 5 chữ cái cuối cùng của bảng chữ cái ( >5G == 'vwxyz') lên 5 số ngẫu nhiên. Sử dụng RNG giống như tìm thấy.

Dùng thử trực tuyến tại đây


4

Bình thường, 62

Một triển khai của câu trả lời CJam tuyệt vời của Andrea .

sm?<Cd5jkmOTCdd*30"Crime Predicted: --
Calling: 1--555-

"

Lưu ý rằng có một số ký tự không thể in được trong nguồn và không nên có dấu ". Điều đó đã được thêm vào cho SE để nó có vẻ dễ đọc hơn một chút. Tôi chưa thể có được một hexdump, nhưng liên kết dưới đây hoạt động và bạn sẽ có thể sao chép-dán ra khỏi nó.

Dùng thử trực tuyến tại đây


3

CJam, 74 byte

30{[ZY4Z4]{Aa*:mrs}%"Crime predicted: %s-%s-%s
Calling: 1-%s-555-%s

"e%}*

Không phải là người chiến thắng, nhưng ít nhất nó cũng gần với những gì Dennis có từ trước đến nay và nó sử dụng một cách tiếp cận khác. Vì vậy, tôi nghĩ rằng nó là giá trị đăng bài anyway.

Điều này sử dụng e%toán tử CJam , tạo ra đầu ra với chuỗi định dạng kiểu printf.

30      Repeat count for whole output.
{       Start loop.
  [ZY4Z4] Build list of random number lengths: [3 2 4 3 4].
  {       Start loop over all random number lengths.
    Aa*     Build list of [10 ... ] with the random number length.
            E.g. for length 3, this will be [10 10 10].
    :mr     Apply the random number operator to the list. This will generate
            a list of random numbers between 0 and 9, with the given length.
    s       Convert it to a string.
  }%      End of loop over random number lengths.
  "..."   Format string, with a %s for each random number.
  e%      Apply printf style formatting.
}*      End of main repeat loop.

Ái chà, tôi nghĩ bạn là @DavidCarraher với hình đại diện đó!
Beta Decay

@BetaDecay này? codegolf.stackexchange.com/users/3967/david-carraher . Thậm chí không phải cùng một con vật! :) Màu sắc gần như giống nhau, mặc dù.
Reto Koradi

Nếu chúng ta kết hợp các cách tiếp cận của mình, chúng ta có thể nhận được tới 70 byte: permalink
Dennis

@Dennis Hãy thoải mái đi cho nó. Bạn đã giúp tôi rất nhiều lần.
Reto Koradi

@RetoKoradi Đóng đủ;)
Beta Decay


3

JavaScript (ES6), 142

Câu trả lời hỗn hợp ghi chú bên trong ß cho thấy một cách tốt hơn để hoàn thành nhiệm vụ này và có thể dễ dàng thực hiện trong JS cho điểm cao hơn. Tôi ước tôi đã nghĩ về nó.

Chỉnh sửa Đã thêm văn bản bị thiếu (Tôi đọc sai thử thách)

Kiểm tra chạy đoạn mã dưới đây trong trình duyệt tuân thủ EcmaScript 6

/* TEST redirect console.log */ console.log=x=>O.innerHTML+=x+'\n'

for(i=30;i--;)console.log(`Crime predicted: ${(R=d=>(1e-9+Math.random()+'').substr(2,d))(3)}-${R(2)}-${R(4)}
Calling: 1-${R(3)}-555-${R(4)}
`)
<pre id=O></pre>


Giải pháp rất hay! Tuy nhiên, phần cuối của số điện thoại thỉnh thoảng có ít hơn 4 chữ số; tương tự với phần thứ hai và thứ ba của SSN.
Sản xuất ETH

@ETHproductions chuột! Trở lại phiên bản trước!
edc65

3

Fourier, 166 142 byte

45~d030(~i67a114a-9a+4a-8a32a112a^^a101ava+5a-6a116a101ava58a32a999roda99roda9999ro10a67a97a108aa-3a+5a-7a58a32a1oda999roda5oooda9999ro10aai^)

Điều này có một trong những số byte cao nhất, nhưng tôi là một fan hâm mộ lớn của Fourier và muốn thử sức mình với một giải pháp. Không tối ưu lắm.

Phá vỡ nó:

45~d

Đặt biến d thành 45, mã ASCII cho dấu gạch nối. Ký tự này được in nhiều đến mức nó lưu một số byte để khai báo ở đây.

030(...)

Đặt bộ tích lũy về 0 và các vòng lặp bên trong dấu ngoặc cho đến khi đạt 30.

67a114a-9a+4a-8a32a112a^^a101ava+5a-6a116a101ava58a32a

In "Tội phạm dự đoán:".

999roda99roda9999ro10a

In một dòng mới SSN + hoàn toàn ngẫu nhiên.

67a97a108aa-3a+5a-7a58a32a

In "Gọi:".

1oda999roda5oooda9999ro

In một số điện thoại theo hướng dẫn: 1-xxx-555-xxxx

10aa

In hai dòng mới để bắt đầu lại.


1
Xin chào, bạn có thể quan tâm rằng giờ đây đã có một thông dịch viên trực tuyến tại fourier.tryitonline.net (và cả labs.turbo.run/beta/fourier )
Beta Decay

2

Bình thường, 67 byte

V30s.ic"Crime predicted: |-|-|
Calling: 1-|-555-|
"\|mjkmOTdj32434T

Các dòng mới là quan trọng và được bao gồm trong số byte. Hãy thử nó ở đây .

                                Implicit: T=10, k=''
       "..."                    The output string
      c     \|                  Split on '|' placeholders
                     j32434T    32434 to base ten -> [3,2,4,3,4]
              m                 Map for d in the above:
                 mOTd             Generate d random numbers from 0-9
               jk                 Concatenate into string (join on empty string)
    .i                          Interleave segments of output string with random strings
   s                            Concatenate and output
V30                             Perform the above 30 times

2

Haskell, 150 byte

import System.Random
p '#'=putChar=<<randomRIO('0','9')
p x=putChar x
main=mapM p$[1..30]>>"Crime predicted: ###-##-####\nCalling: 1-###-555-####\n\n"

2

JavaScript (ES6), 130 123 byte

Đưa giải pháp ß của minxomat tiến thêm một bước, tôi đã thay thế 0s bằng số 0s sẽ có ở đó. Mã này sử dụng các số đó để rút số chữ số chính xác ra Math.random(), tiết kiệm một bit byte tốt trong quy trình.

for(i=30;i--;)console.log(`Crime predicted: 3-2-4
Calling: 1-3-555-4
`.replace(/[2-4]/g,x=>`${Math.random()}`.substr(2,x)))

Dùng thử:

// redirecting console.log() for this demonstration
console.log=x=>O.innerHTML+=x+'\n';
O.innerHTML='';

for(i=30;i--;)console.log(`Crime predicted: 3-2-4
Calling: 1-3-555-4
`.replace(/[2-4]/g,x=>`${Math.random()}`.substr(2,x)))
<pre id=O>

Như mọi khi, đề nghị chào đón!


2

Java, 246 byte

import java.util.*;class C{static{Random r=new Random();for(int i=0;i++<30;)System.out.printf("Crime predicted: %s-%s-%s\nCalling: 1-%s-555-%s\n\n",r.nextInt(900)+100,r.nextInt(90)+10,r.nextInt(900)+100,r.nextInt(900)+100,r.nextInt(9000)+1000);}}

Với ngắt dòng:

import java.util.*;
class C{
    static{
       Random r = new Random();
       for(int i = 0; i++<30;)
           System.out.printf("Crime predicted: %s-%s-%s\nCalling: 1-%s-555-%s\n\n",r.nextInt(900)+100,r.nextInt(90)+10,r.nextInt(900)+100,r.nextInt(900)+100,r.nextInt(9000)+1000);
    }
}

Đó là một sự khởi đầu. Thay vì tạo ra các chữ số ngẫu nhiên, tôi đã sử dụng các số có 3 chữ số hoặc 4 chữ số ngẫu nhiên.


2

R, 151 146 hoặc 144 byte

for(l in 1:30)cat(sep="","Crime predicted: ",(i=floor(runif(16,,10)))[1:3],"-",i[4:5],"-",i[6:9],"\nCalling: 1-",i[10:12],"-555-",i[13:16],"\n\n")

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

Bị đánh cắp

for(l in 1:30) {
  i=floor(runif(16,,10))
  cat(sep="","Crime predicted: ",
      i[1:3],"-",i[4:5],"-",i[6:9],
      "\nCalling: 1-",i[10:12],"-555-",
      i[13:16],"\n\n")
  }

Tôi nghĩ rằng có rất nhiều chỗ để cải thiện nhưng tôi không có vấn đề gì với chuỗi trong R.

Chỉnh sửa 1: thay đổi runif(16,max=10)thành runif(16,,10).

Tôi đã thực hiện một mã khác ( 147 144 byte) sprintfnhưng tôi không nghĩ đó là mã giống như R.

for(l in 1:30)cat(do.call(sprintf,as.list(c('Crime predicted: %s%s%s-%s%s-%s%s%s%s\nCalling: 1-%s%s%s-555-%s%s%s%s\n\n',floor(runif(16,,10))))))

Một cách tiếp cận khác (149 byte):

for(p in 1:30)cat(sep="",replace(s<-strsplit("Crime predicted: '''-''-''''\nCalling: 1-'''-555-''''\n\n","")[[1]],which(s<"-"),floor(runif(16,,10))))

2

PHP , 144 143 byte

<?=preg_replace_callback('/x/',function($x){return chr(rand(48,57));},str_repeat("Crime predicted: xxx-xx-xxxx
Calling: 1-xxx-555-xxxx

",30));


2

C #, 280 263 246 byte

Chơi gôn

using System;class C{static string G(){var r=new Random();var s="";n h=x=>r.Next(x).ToString("D"+x);for(int i=0;i++<30;){s+="Crime predicted: "+h(3)+"-"+h(2)+"-"+h(4)+"\nCalling: 1-"+h(3)+"-555-"+h(4)+"\n\n";}return s;}delegate string n(int x);}

Thụt lề:

using System;
class C
{
    static string G()
    {
        Random r = new Random();
        string s = "";
        Func<int, string> f = x => r.Next((int)Math.Pow(10, x)).ToString("D" + x);            

        for (int i = 0; i++ < 30;)
        {
            s += "Crime predicted: " + f(3) + "-" + f(2) + "-" + f(4) + "\nCalling: 1-" + f(3) + "-555-" + f(4) + "\n\n";
        }
        return s;
    }
}

Mới trên Codegolf, lời khuyên được chào đón!


Chào mừng bạn đến với Câu đố lập trình & Code Golf! Tôi không quen thuộc với C #, nhưng kể từ khi nó được xác định trên NET như PowerShell là, tôi nghĩ rằng h(999)sẽ tạo ra một số từ 000để 998bao gồm, vì vậy mà phương tiện này không khá nhấn tinh thần của thông số kỹ thuật. Tôi gặp vấn đề tương tự .
admBorkBork

Bạn nói đúng, tôi sẽ sửa nó ngay!
anthonytimmer

Đã lên tới 280 byte sau khi sửa lỗi, sau đó nghĩ đến việc thực hiện định dạng trong trình xử lý ủy nhiệm, giảm nó xuống còn 263 byte.
anthonytimmer

1

Kali , 230 byte

func main(){foreach(x in range(1,31){println("Crime predicted: "+r(3)+"-"+r(2)+"-"+r(4));println("Calling: 1-"+r(3)+"-555-"+r(4)+"\n");}}
func r(l){z=new Random();a="";foreach(y in range(1,l))a+=z.next(0,10).toString();return a;}

Mở rộng:

func main () {
        foreach (x in range(1, 31) {
                println("Crime predicted: " + r(3) + "-" + r(2) + "-" + r(4));
                println("Calling: 1-" + r(3) + "-555-" + r(4) + "\n");
        }
}
func r (l) {
        z = new Random();
        a = "";
        foreach (y in range(1, l))
                a += z.next(0, 10).toString();
        return a;
}

1

Ruby, 98 ký tự

30.times{puts"Crime Predicted: DEF-GH-IJKL
Calling: 1-MNO-555-QRST

".tr"D-OQ-T",rand.to_s[2..-1]}

Chạy mẫu:

bash-4.3$ ruby -e '30.times{puts"Crime Predicted: DEF-GH-IJKL\nCalling: 1-MNO-555-QRST\n\n".tr"D-OQ-T",rand.to_s[2..-1]}' | head
Crime Predicted: 867-29-2637
Calling: 1-278-555-5424

Crime Predicted: 913-31-6306
Calling: 1-744-555-8188

Crime Predicted: 868-36-4612
Calling: 1-926-555-3576

Crime Predicted: 988-06-1643

1

JavaScript, 146 141

console.log(Array(30).join("Crime predicted: 3-2-3\nCalling: 1-3-555-4\n\n").replace(/[2-4]/g,function(m){return(m+Math.random()).substr(3,m)}))

đã có câu trả lời trong cùng một ngôn ngữ với ít ký tự hơn của bạn.
Jakuje

@Jakuje câu trả lời khác sử dụng ES6 chưa có sẵn rộng rãi
Peleg

Thì có lẽ là ok. Đề cập đến điều này trong câu trả lời của bạn sẽ tốt.
Jakuje

1
@Jakuje Mọi người có thể gửi bất cứ điều gì họ muốn! Đó là nhiều về thử thách cũng như về việc đánh bại người khác.
ErikE

1

Javascript trước ES6, 128

for(i=30;i--;)console.log('Crime predicted: x-x-x\nCalling: x-555-x\n'.replace(/x/g, function(){return 1e3*Math.random()|0}))

Tôi cảm thấy như dấu gạch ngang có thể được loại bỏ bằng cách nào đó, nhưng không chắc chắn.


1
Một số lỗi: 1) các phần ngẫu nhiên không có độ dài chính xác (và thậm chí không cố gắng) 2) thiếu "1-".
edc65


1

Julia, 120 byte

R(n)=lpad(rand(0:10^n-1),n,0)
for i=1:30 println("Crime Predicted: "R(3)"-"R(2)"-"R(4)"\nCalling: 1-"R(3)"-555-"R(4))end

Ung dung:

# Define a function for returning a random number with a
# specified number of digits
function R(n::Int)
    lpad(rand(0:10^n-1), n, 0)
end

# Print 30 times
for i = 1:30
    println("Crime Predicted: " R(3) "-" R(2) "-" R(4)
            "\nCalling: 1-" R(3) "-555-" R(4))
end

1

Ruby, 90 88 byte

30.times{puts"Crime predicted: NNN-NN-NNNN
Calling: 1-NNN-555-NNNN

".gsub(?N){rand 10}}

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


1
Không cần ký hiệu chuỗi, chỉ cần ký tự ?Nlà đủ. Không cần dấu ngoặc đơn, xung quanh randtham số.
manatwork

1

PowerShell, 120 108 103 102 byte

0..29|%{("Crime predicted: XXX-XX-XXXX`nCalling: 1-XXX-555-XXX"-split"X"|%{$_+(Random 10)})-join'';""}

Rút ngắn thêm một vài byte bằng cách đặt vòng lặp tách thành một khối mã xuất ra một mảng @(..)và được nối lại.

Loại bỏ @bằng cách nhớ rằng (...)chỉ định một khối mã được thực thi trước -join''dù sao đi nữa.

Điều này giúp loại bỏ việc chỉ định $abiến. Cũng nhận thấy rằng do cách thức -splithoạt động của chức năng, mã trước đó đã tạo ra quá nhiều chữ số cho số điện thoại, do đó, có một lưu byte miễn phí ở đó bằng cách thu nhỏ lại 1-XXX-555-XXX. Điều đó bù đắp cho sai lầm Random 9thực sự chọn ngẫu nhiên 0-8, vì vậy chúng ta cần chỉ địnhRandom 10.

Sooo dang gần hai chữ số, nhưng tôi không chắc nơi nào có thể đánh gôn thêm 4 byte nữa ...


Trước đó, 108

0..29|%{$a="";"Crime predicted: XXX-XX-XXXX`nCalling: 1-XXX-555-XXXX"-split"x"|%{$a+="$_$(Random 9)"};$a;""}

Thay vào đó, rút ​​ngắn mã một vài byte bằng cách tách một chuỗi trên X, sau đó lặp lại qua chuỗi chuỗi kết quả và nối từng mục với một Randomchữ số để xây dựng chuỗi đầu ra cuối cùng của chúng tôi $a. Lưu ý rằng chúng tôi không thể làm một cái gì đó như "string".replace("x",$(Random 9))bởi vì sau đó Randomsẽ chỉ được gọi một lần, vì vậy 1-222-555-2222, ví dụ như bạn có một số điện thoại.


Trước đó, 120

0..29|%{"Crime predicted: "+(Random 1e9).ToString("000-00-0000");"Calling: "+(Random 1e7).ToString("1-000-555-0000");""}

Khá nguy hiểm cạnh tranh cho một ngôn ngữ dài dòng, nhờ các thông số kỹ thuật đầu ra hào phóng (nghĩa 000-00-0001là được coi là SSN hợp lệ) và .ToString()thuật toán định dạng thực sự mạnh mẽ mà PowerShell sử dụng. PowerShell cũng xuất ra \r\nsau mỗi đầu ra chuỗi, do đó, yêu cầu cho một dòng mới ở giữa các lần lặp chỉ là một đơn giản "".

Lưu ý rằng điều này sử dụng một ngụ ý Get-ở phía trước Random, vì vậy điều này có thể thực sự chậm trên một số nền tảng / triển khai.


0

Befunge-98, 170

Tôi nghĩ rằng điều này vẫn có thể được đánh golf xuống một chút. Nhưng ít nhất tôi đã đánh bại C #. Đã thử nghiệm tại befungius.aurlien.net .

a3*>  82*v>":detciderp emirC">:#,_$...'-,..'-,....av
>1 -:!#;_v^;v,,,"-555-"...,,,,,,,,,,,"Calling: 1-",<
\  ^v< <2?1v,
+    ^;^3<;<,
^ <0?3vv....<
^;^6<;<>a,v
   v_@#:-1<

0

Python 2, 151 150 byte

from random import*
p="Crime predicted: xxx-xx-xxxx\nCalling: 1-xxx-555-xxxx\n\n"*30
while'x'in p:p=p.replace('x',str(randint(0,9)),1)
print p.strip()

Như chơi golf như tôi có thể có được phương pháp này.

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.