คนที่น่าสนใจ


28

พื้นหลัง

บุคคลที่น่าสนใจคือละครเรื่องอาชญากรรมใน CBS และรายการทีวีที่ฉันโปรดปรานในช่วงปลายปี

การแสดงเป็นเรื่องเกี่ยวกับชายคนหนึ่งชื่อแฮโรลด์ฟินช์โปรแกรมเมอร์มหาเศรษฐีและหุ้นส่วนของเขาจอห์นรีสซึ่งเป็นทหารผ่านศึกกองกำลังพิเศษและอดีตซีไอเอ โปรแกรมเมอร์คนนี้ได้สร้างไอซีที่เรียกว่า "เครื่องจักร" ซึ่งจะทำนายอาชญากรรมที่รุนแรงก่อนที่จะเกิดขึ้น ติดตามทุกคนบนโลกได้ตลอดเวลาโดยตรวจสอบและวิเคราะห์กล้องวงจรปิดและการสื่อสารทางอิเล็กทรอนิกส์ทั่วโลก

Harold ได้สร้าง The Machine ให้กับรัฐบาลสหรัฐอเมริกาเพื่อตรวจจับการก่อการร้ายก่อนหน้าความจริง มันแบ่งอาชญากรรมที่คาดการณ์ไว้เป็นรายการตามความเกี่ยวข้องกับความมั่นคงของชาติหรือไม่ รัฐบาลจัดการคดีที่เกี่ยวข้องในขณะที่รายการ "ไม่เกี่ยวข้อง" ถูกตั้งโปรแกรมให้ลบทุกวัน

แฮโรลด์ทำแบ็คดอร์เล็ก ๆ เพื่อหวังว่าจะจัดการกับรายการ "ไม่เกี่ยวข้อง" ด้วยตัวเอง แบ็คดอร์ตัวนี้ทำให้เครื่องโทรหาแฮ็คโฟนที่ใกล้ที่สุด (ทุกวันหรือมากกว่านั้น) และอ่านหมายเลขประกันสังคมให้เขา SSN นี้เป็นของใครบางคนที่มีชีวิตอยู่ในอันตรายซึ่งเป็นส่วนหนึ่งของอาชญากรรมที่ไตร่ตรองไว้ล่วงหน้าหรือจากคนที่กำลังวางแผนอาชญากรรมดังกล่าว


ความท้าทาย

เขียนโปรแกรมที่ไม่มีอินพุตและส่งออกหมายเลขโทรศัพท์สุ่ม 30 หมายเลข & SSN


เอาท์พุต

มีข้อความสองบรรทัดที่จะพิมพ์ทุก ๆ "วัน"

  1. Crime predicted: 555-55-5555
  2. Calling: 1-555-555-5555 ตามด้วยการขึ้นบรรทัดใหม่

กระบวนการนี้ควรทำซ้ำเป็นเวลาหนึ่ง "เดือน" (30 "วัน")


เบอร์โทรศัพท์

หมายเลขโทรศัพท์ทุกหมายเลขจะต้องมีองค์ประกอบต่อไปนี้:

  • ต้องมีรหัสประเทศสหรัฐอเมริกา (ตัวเลขตัวแรก)

  • ต้องมีรหัสพื้นที่แบบสุ่ม (ชุดแรกของสามหลัก)

  • ตัวเลขสามตัวแรกของหมายเลขโทรศัพท์นั้นควรเป็นตัวอักษร555ตามด้วยตัวเลขสุ่ม 4 หลัก

นี่คือตัวอย่างที่มีคำอธิบายประกอบ:

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

หมายเลขประกันสังคม

SSN ทุกตัวต้องเป็นตัวเลขสุ่ม 9 หลักในรูปแบบต่อไปนี้

342-98-1613

ตัวอย่าง

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

...

ต่อเนื่องไปอีก 27 รอบ


ป้ายบอกคะแนน

เพื่อให้คะแนนของคุณปรากฏบนกระดานควรอยู่ในรูปแบบนี้:

# Language, Bytes

ขีดทับไม่ควรทำให้เกิดปัญหา


3
นอกจากนี้ค่าที่ถูกต้องสำหรับรหัสประเทศ / รหัสพื้นที่ของสหรัฐอเมริกาคืออะไร
mınxomaτ

2
ฉันได้ลบการ จำกัด เวลา 1ในเรื่องที่เกี่ยวกับคำถามที่สองของคุณสหรัฐอเมริการหัสประเทศเป็นอย่างชัดเจน สำหรับรหัสพื้นที่ตัวเลขสามหลักใด ๆ ที่จะทำเพื่อความท้าทายนี้ @minxomat
Zach Gates

1
@ LuisMendo มีฉันทามติเกี่ยวกับเมตาเกี่ยวกับสิ่งที่หมายถึงแบบสุ่มถ้าไม่ได้กำหนดไว้อย่างสมบูรณ์
FryAmTheEggman

5
แน่นอนว่าการสร้างตัวเลขในรูปแบบที่พวกเขาส่งผ่านโดย The Machine ในการแสดงจะมีความซับซ้อนมากขึ้น ... ;)
Mason Wheeler

คำตอบ:


10

CJam, 68 66 64 ไบต์

ขอบคุณเดนนิสที่ช่วยประหยัด 2 ไบต์!

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

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

การคัดลอกจะไม่ทำงานเนื่องจากมี unprintables ไม่กี่ (หนึ่งในแต่ละกลุ่มสุ่ม) ดังนั้นนี่คือการxxdถ่ายโอนข้อมูล:

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}&}/

หากต้องการย้อนกลับให้วางลงในไฟล์และเริ่มต้น xxd -r in_file > out_fileเพื่อย้อนกลับไปมันวางลงในไฟล์และการเปิดตัวคุณสามารถลองออนไลน์ได้เช่นกัน

คำอธิบาย

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

ฉันไม่เคยคิดเรื่องนี้มาก่อนเลย แต่ดูเหมือนว่ามันจะสั้นกว่าสองไบต์ใน Pyth
FryAmTheEggman

@FryAmTheEggman ฉันน่าจะเรียน Pyth บ่อยครั้งมันสั้นกว่า CJam คุณสามารถโพสต์คำตอบว่าถ้าคุณต้องการ :)
อันเดรีย Biondo

8

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

วิธีการที่ไร้เดียงสา รับข้อความ

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

และคัดลอก 30 ครั้ง จากนั้นแทนที่xด้วยตัวเลขสุ่มแต่ละตัวrandint(0,9)ทำให้ตัวละครอื่น ๆ ทั้งหมดเหมือนกัน


6

Python 2, 151 ไบต์

ขอบคุณท่าน (และ @Dennis) สำหรับ%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 ไบต์ขอบคุณ Dennis และ grc!

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

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

Perl ต้นฉบับ, 91 92 ไบต์

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

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

1
@Dennis awh ฉันกำลังจะโพสต์จนกว่าฉันจะเห็นคำตอบนี้ ฉันมี$_="..."x30;s/_/0|rand 10/eg;printที่จะบันทึก/rธง
grc

ขอบคุณ @Dennis และ @grc! เป็นเรื่องปกติหรือไม่ที่จะรวมการเปลี่ยนแปลงที่เสนอในความคิดเห็น (ที่มีการระบุแหล่งที่มาของหลักสูตร) ถ้าไม่ใช่ฉันจะยกเลิกการแก้ไขของฉัน แต่ในกรณีใด ๆ ขอบคุณ! ฉันลืมเรื่อง0|rand ...กลอุบายและผู้ปฏิบัติงานซ้ำ ๆ ที่ฉันใช้เพื่อตบหัวของฉันซ้ำ ๆ
type_outcast

2
ใช่มันเป็นธรรมเนียม หากคุณยังไม่ได้ทำคุณควรตรวจสอบเคล็ดลับสำหรับการเล่นกอล์ฟใน Perl หรือไม่? . มันเป็นทรัพยากรที่ยอดเยี่ยม
เดนนิส

5

CJam, 73 71 70 ไบต์

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

ลองใช้ออนไลน์ในล่าม CJamล่าม

มันทำงานอย่างไร

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 ไบต์

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

โดยทั่วไปแทนที่ 0 ด้วยตัวเลขสุ่มแต่ละตัวและเรียกตัวเอง 30 ครั้ง

ทดสอบโดยใช้เทอร์มินัลออนไลน์ :

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...>

แก้ไข (112B): การใช้$$(บางอย่างเช่น sprintf) และตัวดำเนินการที่ประกอบไปด้วยสามส่วน


คุณสามารถให้ลิงค์ไปยังข้อมูลจำเพาะของภาษานี้ได้หรือไม่
LegionMammal978

@ LegionMammal978 ใช้เวลาในการเขียน กล่าวง่ายๆ: มีคุณสมบัติ AutoIt ทุกอย่าง
mınxomaτ


4

Pyth, 62

การใช้งานคำตอบ CJam อันน่าทึ่งของ Andrea

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

"

ทราบว่ามีตัวละครหลาย unprintable "ในแหล่งที่มาและไม่ควรมีต่อท้าย ที่เพิ่มเข้ามาสำหรับ SE เพื่อให้อ่านได้ง่ายขึ้น ฉันยังไม่สามารถรับ hexdump ได้ แต่ลิงก์ด้านล่างใช้งานได้และคุณควรจะสามารถคัดลอก - วางได้

ลองออนไลน์ได้ที่นี่


3

CJam, 74 ไบต์

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

"e%}*

ไม่ใช่ผู้ชนะ แต่อย่างน้อยก็ใกล้เคียงกับที่เดนนิสมีอยู่จนถึงตอนนี้และใช้วิธีการที่แตกต่างออกไป ดังนั้นฉันคิดว่ามันคุ้มค่าต่อการโพสต์

ใช้ตัวe%ดำเนินการCJam ซึ่งสร้างผลลัพธ์ด้วยสตริงรูปแบบลักษณะ 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.

ว้าวฉันคิดว่าคุณเป็น @DavidCarraher กับอวตารนั้น!
สลายตัวเบต้า

@BetaDecay นี้หรือไม่ codegolf.stackexchange.com/users/3967/david-carraher ไม่แม้แต่สัตว์ตัวเดียวกัน! :) สีต่างกันเกือบเท่ากัน
Reto Koradi

หากเรารวมวิธีการของเราเข้าด้วยกันเราสามารถเพิ่มได้ถึง 70 ไบต์: Permalink
Dennis

@Dennis รู้สึกอิสระที่จะไปกับมัน คุณช่วยฉันหลายครั้ง
Reto Koradi

@RetoKoradi ใกล้พอ;)
สลายตัวเบต้า


3

JavaScript (ES6), 142

ข้อความด้านข้างคำตอบผสมในในßแสดงวิธีที่ดีกว่าในการทำภารกิจนี้ให้สำเร็จและสามารถนำไปใช้อย่างง่ายดายใน JS ให้คะแนนที่ดีขึ้น ฉันหวังว่าฉันจะคิดเกี่ยวกับมัน

แก้ไขเพิ่มข้อความที่หายไป (ฉันเข้าใจผิดการท้าทาย)

ทดสอบการเรียกใช้ตัวอย่างข้อมูลด้านล่างในเบราว์เซอร์ที่สอดคล้องกับ 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>


ทางออกที่ดีมาก! อย่างไรก็ตามส่วนสุดท้ายของหมายเลขโทรศัพท์มีบางครั้งน้อยกว่า 4 หลัก เหมือนกับส่วนที่สองและสามของ SSN
ETHproductions

@ETHproductions หนู! เปลี่ยนกลับเป็นเวอร์ชันก่อนหน้า!
edc65

3

ฟูเรียร์, 166 142 ไบต์

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

นี่เป็นหนึ่งในจำนวนไบต์สูงสุด แต่ฉันเป็นแฟนตัวยงของฟูริเยร์และอยากลองใช้วิธีแก้ปัญหา ไม่ได้รับการปรับให้เหมาะสมมาก

ทำลายมันลง:

45~d

ตั้งค่าตัวแปร d เป็น 45 ซึ่งเป็นรหัส ASCII สำหรับยัติภังค์ ตัวละครนี้ถูกพิมพ์ออกมามากจนช่วยประหยัดบางไบท์เพื่อประกาศได้ที่นี่

030(...)

ตั้งค่าตัวสะสมให้เป็นศูนย์และวนลูปภายในวงเล็บจนกระทั่งถึง 30

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

พิมพ์ "อาชญากรรมที่คาดการณ์ไว้:"

999roda99roda9999ro10a

พิมพ์ SSN + บรรทัดใหม่แบบสุ่มสมบูรณ์

67a97a108aa-3a+5a-7a58a32a

พิมพ์ "การโทร:"

1oda999roda5oooda9999ro

พิมพ์หมายเลขโทรศัพท์ที่เป็นไปตามหลักเกณฑ์: 1-xxx-555-xxxx

10aa

พิมพ์สองบรรทัดใหม่เพื่อเริ่มต้นใหม่


1
สวัสดีคุณอาจสนใจว่าตอนนี้มีล่ามออนไลน์ที่fourier.tryitonline.net (และlabs.turbo.run/beta/fourier )
เบต้าสลายตัว

2

Pyth, 67 ไบต์

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

บรรทัดใหม่มีความสำคัญและรวมอยู่ในจำนวนไบต์ ลองที่นี่

                                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

JavaScript (ES6), 130 123 ไบต์

ด้วยการใช้สารละลายßของ minxomat อีกหนึ่งก้าวฉันได้แทนที่0s ด้วยจำนวน0s ที่น่าจะอยู่ที่นั่น รหัสใช้ตัวเลขเหล่านั้นเพื่อดึงตัวเลขที่ถูกต้องออกจากMath.random()การบันทึกบิตที่ดีในกระบวนการ

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

ลองดูสิ:

// 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>

เช่นเคยข้อเสนอแนะยินดีต้อนรับ!


2

Java, 246 ไบต์

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

ด้วยตัวแบ่งบรรทัด:

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

มันเป็นการเริ่มต้น แทนที่จะสร้างตัวเลขสุ่มฉันใช้ตัวเลข 3 หลักหรือ 4 หลักแบบสุ่ม


2

R, 151 146 หรือ 144 Bytes

รหัส

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

ทดสอบมัน ออนไลน์ออนไลน์

Ungolfed

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

ฉันคิดว่ามีหลายห้องที่ต้องปรับปรุง แต่ฉันก็ไม่ยุ่งกับสตริงใน R

แก้ไข 1: เปลี่ยนrunif(16,max=10)ไปrunif(16,,10)ไป

ฉันได้ทำรหัสอื่น ( 147 144 ไบต์) ด้วยsprintfแต่ฉันไม่คิดว่ามันเป็นรหัสที่คล้าย 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))))))

วิธีอื่น (149 ไบต์):

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

C #, 280 263 246 ไบต์

แข็งแรงเล่นกอล์ฟ:

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

เยื้อง:

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

ใหม่ใน Codegolf ยินดีต้อนรับเคล็ดลับ!


ยินดีต้อนรับสู่ Programming Puzzles & Code Golf! ฉันไม่ได้สนิทสนมคุ้นเคยกับ C # แต่เนื่องจากมันบอกกล่าวกับ .NET เช่น PowerShell คือผมคิดว่าh(999)จะสร้างตัวเลขจาก000การ998รวมเพื่อให้วิธีการนี้ไม่ได้ค่อนข้างตีจิตวิญญาณของรายละเอียดที่ ฉันวิ่งเข้าไปในปัญหาเดียวกัน
AdmBorkBork

คุณพูดถูกฉันจะแก้ไขทันที!
anthonytimmers

เพิ่มขึ้นถึง 280 ไบต์หลังจากการแก้ไขจากนั้นคิดว่าการจัดรูปแบบในตัวจัดการผู้รับมอบสิทธิ์ลดกลับเป็น 263 ไบต์
anthonytimmers

1

ฮัสเซียม , 230 ไบต์

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

ขยาย:

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 ตัวอักษร

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

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

วิ่งตัวอย่าง:

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

มีคำตอบในภาษาเดียวกันที่มีอักขระน้อยกว่าของคุณ
Jakuje

@Jakuje คำตอบอื่น ๆ ใช้ ES6 ซึ่งไม่สามารถใช้ได้อย่างกว้างขวางเลย
Peleg

ถ้าอย่างนั้นก็โอเค พูดถึงเรื่องนี้ในคำตอบของคุณจะดี
Jakuje

1
@Jakuje ผู้คนสามารถส่งสิ่งที่พวกเขาต้องการ! มันเกี่ยวกับความท้าทายมากพอ ๆ กับการเอาชนะผู้อื่น
ErikE

1

pre-ES6 Javascript, 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}))

ฉันรู้สึกว่าขีดกลางสามารถลบออกได้ แต่ไม่แน่ใจ


1
ข้อผิดพลาดหลายประการ: 1) ส่วนที่สุ่มไม่ได้มีความยาวที่ถูกต้อง (และไม่พยายาม) 2) ขาด "1"
edc65


1

จูเลีย 120 ไบต์

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

Ungolfed:

# 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 ไบต์

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

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

ลองออนไลน์


1
ไม่จำเป็นต้องมีเครื่องหมายสตริงเพียงอักขระ?Nก็เพียงพอแล้ว ไม่จำเป็นต้องใส่วงเล็บล้อมรอบrandพารามิเตอร์
จัดการ

1

PowerShell, 120 108 103 102 ไบต์

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

สั้นลงอีกสองสามไบต์โดยการตั้งค่าการแบ่งลูปเป็นบล็อกโค้ดที่ส่งออกไปยังอาเรย์แทน @(..)และเข้าร่วมอีกครั้งแทน

กำจัด@โดยจำได้ว่า(...)กำหนดให้บล็อกโค้ดดำเนินการก่อนหน้า-join''นี้หรือไม่

สิ่งนี้ทำให้ไม่จำเป็นต้องกำหนด$aตัวแปร นอกจากนี้ยังสังเกตเห็นว่าเนื่องจากวิธีการทำงานของฟังก์ชั่นรหัสก่อนหน้านี้ได้รับการคายออกตัวเลขมากเกินไปสำหรับหมายเลขโทรศัพท์เพื่อให้มีการประหยัดโดยมีการหดตัวจะไบต์ฟรี-split 1-XXX-555-XXXสิ่งนั้นประกอบไปด้วยความผิดพลาดRandom 9ที่สุ่มเลือกมา0-8ดังนั้นเราจึงต้องระบุRandom 10.

Soooแดงใกล้กับคู่ตัวเลข แต่ฉันไม่แน่ใจว่าที่มันเป็นไปได้ที่จะปิดกอล์ฟอีกสี่ 3 ไบต์ ...


ก่อนหน้านี้ 108

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

สั้นลงรหัสคู่ไบต์โดยแยกแทนสตริงบนX's แล้วอีกครั้งวนลูปผ่านอาร์เรย์ผลลัพธ์ของสตริงและเชื่อมโยงแต่ละรายการมีหลักในการสร้างสตริงผลลัพธ์สุดท้ายของเราRandom $aโปรดทราบว่าเราไม่สามารถทำอะไรเช่น"string".replace("x",$(Random 9))นั้นเพราะสิ่งนั้นRandomจะถูกเรียกเพียงครั้งเดียวดังนั้นคุณจึงมี1-222-555-2222หมายเลขโทรศัพท์เช่น


ก่อนหน้านี้ 120

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

แดงมีความสามารถในการแข่งขันสำหรับภาษา verbose เนื่องจากมีข้อกำหนดคุณสมบัติเอาท์พุทที่กว้างขวาง (เช่น000-00-0001ถือเป็น SSN ที่ถูกต้อง) และ.ToString()อัลกอริธึมการจัดรูปแบบที่แข็งแกร่งจริงๆที่ PowerShell ใช้ PowerShell ยังผลหลังจากการส่งออกสตริงทุกครั้งเพื่อความต้องการสำหรับการขึ้นบรรทัดใหม่ในระหว่างการทำซ้ำเป็นเพียงง่ายๆ\r\n""

โปรดทราบว่าการใช้งานนี้โดยนัยGet-ในด้านหน้าของRandomดังนั้นนี้อาจจะช้าจริงๆในบางแพลตฟอร์ม / การใช้งาน


0

Befunge-98, 170

ฉันคิดว่าสิ่งนี้ยังคงสามารถลงกอล์ฟได้เล็กน้อย แต่อย่างน้อยฉันก็เอาชนะ C # ทดสอบที่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 bytes

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

อย่างที่ฉันได้วิธีนี้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.