Kepentingan

28

Latar Belakang

Person of Interest adalah drama kriminal di CBS, dan acara TV favorit saya, pada akhir-akhir ini.

Acara ini tentang seorang pria bernama Harold Finch, seorang programmer miliarder, dan rekannya John Reese, seorang veteran pasukan khusus dan mantan operasi CIA. Programmer ini menciptakan AI makhluk hidup yang disebut "The Machine" yang memprediksi kejahatan kekerasan sebelum terjadi. Ini melacak setiap orang di Bumi setiap saat dengan memantau dan menganalisis semua kamera pengintai dan komunikasi elektronik di seluruh dunia.

Harold membangun Mesin untuk pemerintah Amerika Serikat untuk mendeteksi aktivitas teroris sebelum fakta. Ini membagi kejahatan yang diprediksi menjadi daftar berdasarkan apakah mereka relevan dengan keamanan nasional. Kasus-kasus yang relevan ditangani oleh pemerintah, sementara daftar "tidak relevan" diprogram untuk dihapus setiap hari.

Harold membuat pintu belakang kecil untuk dirinya sendiri dengan harapan untuk berurusan dengan daftar "tidak relevan", dirinya sendiri. Pintu belakang ini menyebabkan Mesin untuk memanggil telepon umum terdekat Harold (sekali setiap hari atau lebih) dan membacakan nomor Jaminan Sosial kepadanya. SSN ini milik seseorang yang hidupnya dalam bahaya sebagai bagian dari kejahatan terencana, atau seseorang yang merencanakan kejahatan semacam itu.


Tantangan

Tulis program yang tidak memerlukan input, dan mengeluarkan 30 nomor telepon acak & SSN (lihat di bawah).


Keluaran

Ada dua baris teks yang akan dicetak setiap "hari".

  1. Crime predicted: 555-55-5555
  2. Calling: 1-555-555-5555 diikuti oleh baris baru

Proses ini harus diulang selama satu "bulan" (30 "hari").


Nomor telepon

Setiap nomor telepon harus memiliki elemen berikut:

  • Harus memiliki kode negara Amerika Serikat (digit pertama).

  • Harus memiliki kode area acak (set pertama tiga digit).

  • Tiga digit pertama dari nomor telepon itu sendiri harus555 , diikuti oleh 4 digit acak.

Berikut adalah contoh yang beranotasi:

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

Nomor Jaminan Sosial

Setiap SSN harus terdiri dari 9 digit acak dalam format berikut.

342-98-1613

Contoh

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

...

Berlanjut untuk 27 siklus lagi.


Papan angka

Agar skor Anda muncul di papan tulis, itu harus dalam format ini:

# Language, Bytes

Dicoret tidak seharusnya menyebabkan masalah.

Zach Gates
sumber
3
Juga, apa nilai yang valid untuk kode negara AS / kode area?
mınxomaτ
2
Saya telah menghapus batasan waktu. Sehubungan dengan pertanyaan kedua Anda, kode negara AS secara eksplisit a 1. Adapun kode area, tiga digit akan dilakukan, untuk keperluan tantangan ini. @minxomat
Zach Gates
1
@LuisMendo ada konsensus tentang meta tentang apa arti acak jika tidak sepenuhnya ditentukan
FryAmTheEggman
5
Tentu saja, menghasilkan angka-angka dalam format yang sebenarnya ditransmisikan oleh The Machine dalam pertunjukan akan menjadi lebih rumit ...;)
Mason Wheeler
1
Siapa yang akan kamu telepon? @ DTI-Matt
Zach Gates

Jawaban:

10

CJam, 68 66 64 byte

Terima kasih kepada Dennis karena telah menghemat 2 byte!

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

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

Copypasting tidak akan berfungsi karena ada beberapa unsintables (satu menggantikan masing-masing kelompok acak), jadi inilah xxd dump:

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

Untuk membalikkannya, rekatkan ke file dan luncurkan xxd -r in_file > out_file. Anda juga dapat mencobanya online .

Penjelasan

"..."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
Andrea Biondo
sumber
Saya tidak akan pernah memikirkan hal ini sendiri, tetapi tampaknya dua byte lebih pendek di Pyth.
FryAmTheEggman
@FryAmTheEggman Saya mungkin harus belajar Pyth, seringkali lebih pendek dari CJam. Anda dapat memposting jawaban itu jika Anda mau :)
Andrea 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)

Metode naif. Menerima pesan

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

dan salin 30 kali. Lalu, ganti masing-masingx - dengan digit acak randint(0,9), jaga agar semua karakter lain tetap sama.

Tidak
sumber
6

Python 2, 151 byte

Terima kasih Tuhan (dan @Dennis) untuk %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))
Peluruhan Beta
sumber
6

Perl, 85 Bytes, terima kasih untuk Dennis dan grc!

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

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

Perl Asli, 91 92 Bytes

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

"=~s/N/int rand 10/egr for 1..30
type_outcast
sumber
1
@ Dennis aw, saya akan memposting itu sampai saya melihat jawaban ini. Saya punya $_="..."x30;s/_/0|rand 10/eg;printyang menyimpan /rbendera.
grc
Terima kasih @Dennis dan @grc! Apakah biasa untuk memasukkan perubahan yang disarankan dalam komentar (dengan atribusi tentu saja)? Jika tidak, saya akan mengembalikan hasil edit saya. Tetapi, bagaimanapun juga, terima kasih! Aku benar-benar lupa tentang 0|rand ...trik dan operator pengulangan yang sekarang aku gunakan untuk menampar kepalaku berulang kali karena melewatkan itu!
type_outcast
2
Ya, itu biasa. Jika Anda belum melakukannya, Anda harus melihat Tips untuk bermain golf di Perl? . Ini sumber yang bagus.
Dennis
5

CJam, 73 71 70 byte

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

Cobalah online di juru bahasa CJam .

Bagaimana itu bekerja

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#
Dennis
sumber
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)°)°)

Pada dasarnya masing-masing menggantikan 0 dengan nomor acak dan menyebut dirinya sendiri 30 kali.

Uji menggunakan terminal online :

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

Sunting (112B): Menggunakan $$(seperti sprintf) & operator ternary.

mınxomaτ
sumber
Bisakah Anda memberikan tautan ke spesifikasi bahasa ini?
LegionMammal978
@ LegionMammal978 Butuh waktu untuk menulis. Secara sederhana: Apakah setiap fitur memiliki AutoIt.
mınxomaτ
4

Pyth, 66

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

Menggunakan Xuntuk menerjemahkan 5 huruf terakhir dari alfabet (>5G == 'vwxyz' ) ke 5 angka acak. Menggunakan RNG yang sama dengan yang ditemukan Sok.

Cobalah online di sini

FryAmTheEggman
sumber
4

Pyth, 62

Sebuah implementasi dari jawaban CJam yang fantastis dari Andrea .

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

"

Perhatikan bahwa ada beberapa karakter yang tidak patut dicetak dalam sumber, dan tidak boleh ada trailing ". Itu ditambahkan untuk SE sehingga sepertinya sedikit lebih mudah dibaca. Saya belum bisa mendapatkan hexdump, tetapi tautan di bawah berfungsi dan Anda harus dapat menyalin-menempelkannya.

Cobalah online di sini

FryAmTheEggman
sumber
3

CJam, 74 byte

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

"e%}*

Bukan pemenang, tapi setidaknya agak dekat dengan apa yang dimiliki Dennis sejauh ini, dan itu menggunakan pendekatan yang berbeda. Jadi saya pikir itu layak diposkan.

Ini menggunakan e%operator CJam , yang menghasilkan output dengan string format gaya 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.
Reto Koradi
sumber
Woah, saya pikir kamu adalah @DavidCarraher dengan avatar itu!
Beta Decay
@BetaDecay Ini? codegolf.stackexchange.com/users/3967/david-carraher . Bahkan bukan binatang yang sama! :) Tapi warnanya hampir sama.
Reto Koradi
Jika kita menggabungkan pendekatan kita, kita bisa mencapai 70 byte: permalink
Dennis
@ Dennis Merasa bebas untuk melakukannya. Anda telah banyak membantu saya.
Reto Koradi
@RetoKoradi Cukup dekat;)
Beta Decay
3

Matlab / Oktaf, 108 172 byte

disp(sprintf('Crime predicted: %i%i%i-%i%i-%i%i%i%i\nCalling: 1-%i%i%i-555-%i%i%i%i\n\n',randi(10,1,480)-1))

Cobalah online

Luis Mendo
sumber
3

JavaScript (ES6), 142

Side note mixmat jawaban dalam ß menunjukkan cara yang lebih baik untuk menyelesaikan tugas ini, dan dapat dengan mudah diimplementasikan di JS memberikan skor yang lebih baik. Saya berharap saya telah memikirkannya.

Edit Menambahkan teks yang hilang (saya salah membaca tantangan)

Tes menjalankan cuplikan di bawah ini di peramban yang mendukung 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>

edc65
sumber
Solusi yang sangat bagus! Namun, bagian terakhir dari nomor telepon kadang-kadang memiliki kurang dari 4 digit; sama dengan bagian kedua dan ketiga dari SSN.
ETHproduksi
@ ETHproduk tikus! Mengembalikan ke versi sebelumnya!
edc65
3

Fourier, 166 142 byte

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

Ini memiliki salah satu jumlah byte tertinggi, tetapi saya penggemar berat Fourier dan ingin mencoba solusi saya. Tidak terlalu dioptimalkan.

Hancurkan:

45~d

Setel variabel d menjadi 45, kode ASCII untuk tanda hubung. Karakter ini dicetak sangat banyak sehingga menghemat beberapa byte untuk mendeklarasikannya di sini.

030(...)

Atur akumulator ke nol dan loop di dalam tanda kurung sampai mencapai 30.

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

Cetak "Prediksi kejahatan:".

999roda99roda9999ro10a

Cetak SSN + baris baru yang benar-benar acak.

67a97a108aa-3a+5a-7a58a32a

Cetak "Memanggil:".

1oda999roda5oooda9999ro

Cetak nomor telepon yang mengikuti pedoman: 1-xxx-555-xxxx

10aa

Cetak dua baris baru untuk memulai kembali.

bkul
sumber
1
Hai, Anda mungkin tertarik bahwa sekarang ada juru bahasa online di fourier.tryitonline.net (dan juga labs.turbo.run/beta/fourier )
Beta Decay
2

Pyth, 67 byte

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

Baris baru itu penting, dan termasuk dalam jumlah byte. Cobalah di sini .

                                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
Sok
sumber
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"
Lynn
sumber
2

JavaScript (ES6), 130 123 byte

Mengambil solusi ß minxomat selangkah lebih maju, saya telah mengganti 0s dengan jumlah 0s yang seharusnya ada di sana. Kode menggunakan angka-angka itu untuk menarik jumlah digit yang benarMath.random() , menghemat bit dalam proses.

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

Cobalah:

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

Seperti biasa, saran diterima!

Produksi ETH
sumber
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);}}

Dengan jeda baris:

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

Ini awal. Alih-alih menghasilkan angka acak saya menggunakan angka 3 digit atau 4 digit acak.

TNT
sumber
2

R, 151 146 atau 144 Bytes

Kode

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

Uji secara online .

Tidak disatukan

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

Saya pikir ada banyak ruang untuk memperbaiki tetapi saya tidak baik bermain-main dengan R.

Sunting 1: ubah runif(16,max=10)kerunif(16,,10) .

Saya telah melakukan kode lain ( 147 144 bytes) dengan sprintftetapi saya tidak berpikir itu banyak kode R-like.

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

Pendekatan lain (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))))
Mutador
sumber
2

PHP , 144 143 Bytes

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

",30));
Lern2Golf
sumber
2

GolfScript, 91 byte

{9rand}+:r;{"Crime Predicted: "{r}3*"-"{r}2*"-"{r}4*"
Calling: 1-"{r}3*"-555-"{r}4*"

"}30*

Cobalah online.

dinamitereed
sumber
2

C #, 280 263 246 byte

Golf:

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

Bertakuk:

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

Baru di Codegolf, kiatnya diterima!

anthonytimmers
sumber
Selamat Datang di Programming Puzzles & Code Golf! Saya tidak akrab dengan C #, tapi karena itu didasarkan pada NET seperti PowerShell adalah, saya pikir h(999)akan menghasilkan nomor dari 000ke 998inklusif, sehingga berarti ini tidak cukup memukul semangat spesifikasi. Saya mengalami masalah yang sama .
AdmBorkBork
Anda benar, saya akan memperbaikinya sekarang!
anthonytimmers
Pergi hingga 280 byte setelah perbaikan, kemudian berpikir untuk melakukan pemformatan dalam pengendali delegasi, menguranginya kembali menjadi 263 byte.
anthonytimmers
1

Hassium , 230 Bytes

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

Diperluas:

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;
}
Yakub Misirian
sumber
1

Ruby, 98 karakter

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

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

Contoh dijalankan:

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
manatwork
sumber
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)}))
Peleg
sumber
sudah ada jawaban dalam bahasa yang sama dengan karakter yang kurang dari milik Anda.
Jakuje
@ Yakuje jawaban lain menggunakan ES6 yang belum tersedia secara luas
Peleg
Maka itu mungkin ok. Menyebutkan ini dalam jawaban Anda akan baik.
Jakuje
1
@Jakuje Orang dapat mengirim apa pun yang mereka inginkan! Ini tentang tantangan seperti halnya mengalahkan orang lain.
ErikE
1

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

Saya merasa seperti garis dapat dihapus entah bagaimana, tetapi tidak yakin.

pengguna70585
sumber
1
Beberapa kesalahan: 1) bagian acak tidak memiliki panjang yang benar (dan bahkan tidak berusaha) 2) hilang "1-".
edc65
1

Pyth, 73 byte

V30FGPc"Crime predicted: xxx-xx-xxxx\nCalling: 1-xxx-555-xxxx"\xpGpOT)pb"

Demo

tepuk
sumber
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

Tidak Terkumpul:

# 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
Alex A.
sumber
1

Ruby, 90 88 byte

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

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

Cobalah online.

dinamitereed
sumber
1
Tidak perlu notasi string, cukup karakter ?Nsaja. Tidak perlu tanda kurung, di sekitar randparameter.
manatwork
1

PowerShell, 120 108 103 102 Bytes

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

Dipersingkat beberapa byte lagi dengan mengatur split-loop sebagai gantinya menjadi blok kode yang output ke array @(..)dan bergabung kembali.

Dieliminasi @dengan mengingat bahwa (...)menunjuk kode yang dieksekusi sebelum-join'' pula.

Ini menghilangkan kebutuhan untuk menetapkan $avariabel. Juga memperhatikan bahwa karena cara kerja -splitfungsionalitas, kode sebelumnya mengeluarkan terlalu banyak digit untuk nomor telepon, jadi dapatkan penghematan byte gratis di sana dengan menyusut ke 1-XXX-555-XXX. Itu dibuat untuk kesalahan Random 9yang benar-benar mengambil secara acak0-8 , jadi kita perlu menentukanRandom 10.

Sooo dang dekat dengan dua digit, tapi saya tidak yakin di mana dimungkinkan untuk bermain golf dari empat 3 byte ...


Sebelumnya, 108

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

Persingkat kode beberapa byte dengan bukannya memisahkan string pada X, kemudian mengulang kembali melalui array string yang dihasilkan dan menyatukan setiap entri dengan Randomdigit untuk membangun string keluaran akhir kami $a. Perhatikan bahwa kami tidak dapat melakukan sesuatu seperti "string".replace("x",$(Random 9))karena Randomhanya akan dipanggil sekali, jadi Anda akan memiliki 1-222-555-2222nomor telepon, misalnya.


Sebelumnya, 120

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

Cukup kompetitif untuk bahasa verbal, berkat spesifikasi keluaran yang luas (yaitu, 000-00-0001diperlakukan sebagai SSN yang valid) dan .ToString()algoritma pemformatan yang sangat kuat yang digunakan PowerShell. PowerShell juga mengeluarkan \r\nsetelah setiap keluaran string, sehingga persyaratan untuk baris baru di antara iterasi hanya sederhana "".

Perhatikan bahwa ini menggunakan yang tersirat Get-di depan Random, jadi ini mungkin sangat lambat pada beberapa platform / implementasi.

AdmBorkBork
sumber
0

Befunge-98, 170

Saya pikir ini masih bisa diturunkan sedikit. Tapi setidaknya saya mengalahkan C #. Diuji di 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<
MegaTom
sumber
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()

Golf seperti yang saya bisa dapatkan metode ini.

Zach Gates
sumber