İlgili kişi


28

Arka fon

İlgilenilen Kişi, geç saatlerden beri CBS'de yayınlanan bir suç draması ve en sevdiğim TV programı.

Gösteri, milyarder bir programcı Harold Finch adında bir adam ve özel kuvvetler ve eski CIA ajanı olan ortağı John Reese ile ilgili. Bu programcı, şiddetli suçları gerçekleşmeden önce tahmin eden "Makine" adında duyarlı bir AI yarattı. Tüm dünyadaki tüm güvenlik kameralarını ve elektronik haberleşmeleri izleyerek ve analiz ederek dünyadaki her insanı izler.

Harold daha önce terör eylemlerini tespit etmesi için Amerika Birleşik Devletleri hükümetine Makineyi kurdu. Ulusal güvenlikle ilgili olup olmadıklarına dayanarak öngördüğü suçları listeler halinde ayırır. İlgili davalar hükümet tarafından idare edilirken, "ilgisiz" listesinin günlük olarak silinmesi için programlanmıştır.

Harold kendisi için "alakasız" listeyle başa çıkmayı ümit ederek küçük bir arka kapı yaptı. Bu arka kapı, Makine'nin en yakın Harold telefonuna çağrı yapmasına (günde bir kez) ve ona bir Sosyal Güvenlik numarası okumasına neden olur. Bu SSN, hayatı önceden belirlenmiş bir suçun parçası olarak tehlikede olan birine ya da böyle bir suçu planlayan birine aittir.


Meydan okuma

Giriş yapmayan ve 30 rasgele telefon numarası ve SSN çıktısı veren bir program yazın (aşağıya bakın).


Çıktı

Her "günde" basılacak iki satır metin vardır.

  1. Crime predicted: 555-55-5555
  2. Calling: 1-555-555-5555 ardından newline

Bu işlem bir "ay" (30 "gün") için tekrarlanmalıdır.


Telefon numaraları

Her telefon numarasının aşağıdaki unsurları içermesi gerekir:

  • Amerika Birleşik Devletleri ülke koduna sahip olmalı (ilk hane).

  • Rastgele bir alan koduna sahip olmalısınız (ilk önce üç hane grubu).

  • Telefon numarasının ilk üç basamağının ardından 4 rasgele basamağın gelmesi gerekir555 .

İşte açıklamalı bir örnek:

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

Sosyal Güvenlik Numaraları

Her SSN, aşağıdaki biçimde 9 rastgele basamaktan oluşmalıdır.

342-98-1613

Örnek

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 döngü daha devam ediyor.


sayı tahtası

Puanınızın tahtada görünmesi için, bu biçimde olması gerekir:

# Language, Bytes

Üstü çizilmeler bir soruna neden olmamalıdır.


3
Ayrıca, ABD ülke kodları / alan kodları için geçerli değerler nelerdir?
mınxomaτ

2
Zaman kısıtlamasını kaldırdım. İkinci sorunuza gelince, ABD ülke kodu açıkça a 1. Alan kodlarına gelince, bu zorluğun amaçları için herhangi üç hane yapacaktır. @minxomat
Zach Gates,

1
@LuisMendo tam olarak tanımlanmadığı takdirde rastgele ne anlama geldiği konusunda meta üzerinde bir fikir birliği var
FryAmTheEggman 18:15

5
Tabi ki, The Show tarafından makinede gerçekten ilettikleri formatta sayıları üretmek daha da karmaşık olurdu ...;)
Mason Wheeler

Yanıtlar:


10

CJam, 68 66 64 bayt

2 bayt kaydettiğiniz için Dennis'e teşekkürler!

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

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

Kopyalama işlemi, yazdırılamayan birkaç tane (her rasgele grubun yerine bir tane) bulunduğundan çalışmaz, işte burada bir xxddökümü:

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

Tersine çevirmek için bir dosyaya yapıştırın ve başlatın xxd -r in_file > out_file. Ayrıca çevrimiçi deneyebilirsiniz .

açıklama

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

Bunu kendim asla düşünmezdim, ama Pyth'te iki bayt daha kısa görünüyor .
FryAmTheEggman 18:15

@FryAmTheEggman Muhtemelen Pyth'i öğrenmeliyim, genellikle CJam'dan daha kısadır. İstersen bu cevabı gönderebilirsin :)
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)

Saf bir yöntem. Mesajı alır

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

ve 30 kez kopyalar. Ardından, diğer tüm karakterleri aynı tutarken her birini xrastgele bir rakamla değiştirir randint(0,9).


6

Python 2, 151 bayt

Tanrıya şükür (ve @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 Bayt, Dennis ve grc sayesinde!

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

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

Orijinal Perl, 91 92 Bayt

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

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

1
@Dennis aw, ben bu cevabı görene kadar bunu göndermek üzereydim. Bayrağı $_="..."x30;s/_/0|rand 10/eg;printkurtaran bende vardı /r.
grc

@Dennis ve @grc teşekkürler! Yorumlarda önerilen değişikliklerin dahil edilmesi geleneksel midir? Olmazsa, düzenlememi geri alırım. Ancak, her durumda, teşekkürler! Bu 0|rand ...numarayı ve tekrarlama operatörünü şimdi unutmuşum, şu an tekrar tekrar kafamı kaçırdım.
type_outcast

2
Evet, alışılmış. Henüz yapmadıysanız, Perl'de golf oynamak için ipuçları göz atmalısınız ? . Harika bir kaynak.
Dennis,

5

CJam, 73 71 70 bayt

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

CJam tercümanında çevrimiçi olarak deneyin .

Nasıl çalışır

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 bayt

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

Temel olarak 0'ın her birini rastgele bir sayı ile değiştirir ve kendisini 30 kez çağırır.

Çevrimiçi terminali kullanarak test edin :

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

Düzenleme (112B): $$(sprintf gibi bir şey) ve üçlü operatörün kullanılması.


Bu dilin özelliklerine bir link verebilir misiniz?
LegionMammal978

@ LegionMammal978 Yazması biraz zaman alıyor. Basit bir ifadeyle: AutoIt sahip olduğu her özelliğe sahiptir.
mınxomaτ

4

Pyth, 66

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

Kullanımları Xalfabenin (son 5 harf çevirmek için >5G == 'vwxyz'5 rastgele sayılar üzerine). Sok ile aynı RNG'yi kullanır.

Burada çevrimiçi deneyin


4

Pyth, 62

Andrea'nın fantastik CJam cevabının bir uygulaması .

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

"

Kaynakta yazdırılamayan birkaç karakter bulunduğunu ve sonun olmaması gerektiğini unutmayın ". Bu SE için eklenmiştir, böylece biraz daha okunaklı görünmektedir. Henüz bir hexdump alamadım, ancak aşağıdaki bağlantı çalışıyor ve kopyalayıp yapıştırabilmelisiniz.

Burada çevrimiçi deneyin


3

CJam, 74 bayt

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

"e%}*

Bir kazanan değil, ama en azından Dennis'in şu ana kadarki şeye biraz yakın, ve farklı bir yaklaşım kullanıyor. Bu yüzden yine de göndermeye değer olduğunu düşündüm.

Bu, e%printf stil biçiminde bir dizeyle çıktı üreten CJam operatörünü kullanır .

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.

Woah, seni bu avatarla @DavidCarraher sanıyordum!
Beta Çürüğü

@BetaDecay Bu? codegolf.stackexchange.com/users/3967/david-carraher . Aynı hayvan bile değil! :) Yine de renkler neredeyse aynı.
Reto Koradi

Eğer yaklaşımlarımızı birleştirirsek, 70 byte'a ulaşabiliriz: permalink
Dennis

@Dennis Bunun için gitmek için çekinmeyin. Bana birçok kez yardım ettin.
Reto Koradi

@RetoKoradi Yeterince yakın;)
Beta Decay


3

JavaScript (ES6), 142

Yan not içinde mixmat cevap ß bir o kadar daha iyi bir yol gösterir bu görevi başarmak için ve kolayca JS daha iyi bir skor veren uygulanan olabilir. Keşke bunu düşünebilseydim.

Düzenle Eksik metin eklendi (Meydan okumayı yanlış okudum)

Aşağıdaki pasajı EcmaScript 6 uyumlu bir tarayıcıda çalıştırma testi

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


Çok güzel bir çözüm! Bununla birlikte, telefon numarasının son kısmı zaman zaman 4 haneden azdır; SSN’nin ikinci ve üçüncü bölümleriyle aynıdır.
ETHProductions

@ETHproductions fareler! Önceki sürüme dönülüyor!
edc65

3

Fourier, 166 142 bayt

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

Bu, en yüksek bayt sayımlarından birine sahip, ancak ben Fourier'in büyük bir hayranıyım ve elimi bir çözümde denemek istedim. Çok optimize edilmemiş.

Yıkılıyor:

45~d

Değişken d'yi 45, tire için ASCII kodu olarak ayarlar. Bu karakter o kadar basılmıştır ki burada belirtilmesi için bazı baytları kaydeder.

030(...)

Akümülatörü sıfıra ayarlar ve parantez içinde 30'a ulaşana kadar döngüler.

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

"Suç tahmini:" yazdırabilirsiniz.

999roda99roda9999ro10a

Tamamen rastgele bir SSN + newline yazdırın.

67a97a108aa-3a+5a-7a58a32a

"Aramak:" yazdırın.

1oda999roda5oooda9999ro

Yönergeleri izleyen bir telefon numarası yazdırın: 1-xxx-555-xxxx

10aa

Baştan başlamak için iki yeni satır yazdırın.


1
Hey, bir çevrimiçi tercüman şimdi var olduğunu ilgilenen olabilir fourier.tryitonline.net (ve ayrıca labs.turbo.run/beta/fourier )
Beta bozunumu

2

Pyth, 67 bayt

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

Yeni satırlar önemlidir ve bayt sayısına dahil edilir. Burada dene .

                                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 bayt

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 bayt

Minxomat'ın ß çözümünü bir adım daha ileri götürerek, 0s'yi 0orada olacak olan s sayısıyla değiştirdim . Kod, bu sayıları doğru sayıdaki rakamları çıkarmak için kullanır ve bu Math.random()sayede işlem sırasında iyi miktarda bayt tasarrufu sağlar.

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

Denemek:

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

Her zaman olduğu gibi, öneriler hoş geldiniz!


2

Java, 246 bayt

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

Satır sonları ile:

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

Bu bir başlangıç. Rasgele rakam üretmek yerine rasgele 3 rakam veya 4 rakam rakam kullandım.


2

R, 151 146 veya 144 Bayt

kod

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

Çevrimiçi olarak test edin .

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

Geliştirilecek çok yer olduğunu düşünüyorum, ancak R'de dizelerle uğraşmam iyi değil.

Düzenleme 1: değişmiş runif(16,max=10)için runif(16,,10).

Başka bir kod ( 147 144 bayt) sprintfyaptım ama bunun R benzeri bir kod olduğunu sanmıyorum.

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

Başka bir yaklaşım (149 bayt):

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 Bayt

<?=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 bayt

golfed:

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

Girintili'ye:

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'taki yeni, ipuçları açıktır!


Programlama Bulmacaları ve Kod Golf'üne Hoş Geldiniz! Ben C # aşina değilim ama .NET esas beri PowerShell olduğu gibi, bence h(999)bir numara üretecektir 000için 998araçlar bu kalmaması, kapsayıcı oldukça şartnamelerin ruhunu çarptı. Ben de aynı konuya girdim .
AdmBorkBork 21:15

Haklısın, şimdi düzelteceğim!
anthonytimmers

Düzeltme işleminden sonra 280 bayta gitti, sonra biçimlendirme işleyicide biçimlendirme yapmayı düşündükten sonra 263 bayta geri indirdi.
anthonytimmers

1

Hassium , 230 Bayt

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

Expanded:

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

Yakut, 98 karakter

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

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

Örnek çalışma:

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

Aynı dilde sizinkinden daha az karakter içeren bir cevap var.
Jakuje

@ Jakuje diğer cevabı henüz yaygın olarak bulunmayan ES6 kullanıyor
Peleg

O zaman muhtemelen tamam. Cevabınızda bunu belirtmek iyi olurdu.
Jakuje

1
@ Jakuje İnsanlar istediklerini gönderebilir! Bu, diğerlerini yenmekle olduğu kadar zorluklarla ilgili.
ErikE,

1

ES6 öncesi 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}))

Çizgilerin bir şekilde kaldırılabileceğini hissediyorum ama emin değilim.


1
Birkaç hata: 1) rastgele parçalar doğru uzunlukta değil (ve denemeye bile değil) 2) "1-" eksik.
edc65

1

Pyth, 73 bayt

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

gösteri


1

Julia, 120 bayt

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 bayt

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

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

Çevrimiçi deneyin.


1
Dize gösterimi için gerek yok, sadece karakter ?Nyeterli. Paranteze gerek yok, etrafındaki randparametre.
Manatwork

1

PowerShell, 120 108 103 102 Bayt

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

Split-loop'u bir diziye çıkan bir kod bloğu olarak ayarlayarak birkaç bayt daha kısalttı @(..) ve yeniden birleştirilen .

@Bunu hatırlayarak ortadan kaldırdı.(...) daha önce yürütülen bir kod bloğu atar -join''oldu Neyse.

Bu, $adeğişkenin atanması gereğini ortadan kaldırır . Ayrıca, -splitfonksiyonelliğin nasıl çalıştığı nedeniyle , önceki kodun telefon numarası için çok fazla rakam verdiğini, bu nedenle küçülterek oradan tasarruf eden ücretsiz bir bayt aldığını fark ettim 1-XXX-555-XXX. Bu Random 9aslında rastgele seçtikleri hatalı için yapılmış0-8 , bu yüzden bunun yerine belirtmemiz gerekiyorRandom 10.

Sooo iki haneye yaklaşıyor, ama başka bir dört 3 byte'ı atmanın nerden mümkün olduğunu bilmiyorum ...


Önceki, 108

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

Bir dize bölerek kodunu bir kaç bayt kısalttı X s 'sine böldükten sonra sonuçta ortaya çıkan dizge dizisini tekrar geçirip Randomson girdi dizimizi oluşturmak için her bir rakamı bir rakamla birleştirelim $a. Bunun gibi bir şey yapamayacağımıza dikkat edin "string".replace("x",$(Random 9))çünkü o Randomzaman sadece bir kez aranır, bu nedenle 1-222-555-2222örneğin bir telefon numarası alırsınız .


Önceki, 120

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

Cömert çıktı özellikleri (yani 000-00-0001geçerli bir SSN olarak kabul edilir) ve .ToString()PowerShell'in kullandığı gerçekten sağlam biçimlendirme algoritması sayesinde ayrıntılı bir dil için rekabet gücü oldukça yüksektir . PowerShell ayrıca \r\nher dizge çıktısından sonra da çıktı verir, bu nedenle yinelemeler arasında yeni bir satırın olması sadece basittir "".

Bunun Get-önünde bir ima kullandığına dikkat edin, bu Randomnedenle bazı platformlarda / uygulamalarda gerçekten yavaş olabilir .


0

Befunge-98, 170

Bu hala biraz aşağı golf olabilir düşünüyorum. Ama en azından C # 'yı yendim. Befungius.aurlien.net adresinde test edilmiştir .

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 bayt

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

Bu yöntemi bulabildiğim kadar golf oynadım.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.