Pessoa de interesse

28

fundo

Person of Interest é um drama policial na CBS, e meu programa de TV favorito, ultimamente.

O programa é sobre um homem chamado Harold Finch, um programador bilionário, e seu parceiro John Reese, um veterano das forças especiais e ex-agente da CIA. Este programador criou uma inteligência artificial chamada "The Machine" que prevê crimes violentos antes que eles aconteçam. Ele rastreia todas as pessoas na Terra o tempo todo, monitorando e analisando todas as câmeras de vigilância e comunicações eletrônicas em todo o mundo.

Harold construiu The Machine para o governo dos Estados Unidos para detectar atividades terroristas antes do fato. Ele divide os crimes previstos em listas com base na relevância ou não da segurança nacional. Os casos relevantes são tratados pelo governo, enquanto a lista "irrelevante" é programada para ser excluída diariamente.

Harold fez uma pequena porta dos fundos para si mesmo, na esperança de lidar com a lista "irrelevante". Essa porta dos fundos faz com que o equipamento ligue para o telefone público mais próximo de Harold (uma vez por dia ou mais) e leia um número do Seguro Social para ele. Esse SSN pertence a alguém cuja vida está em perigo como parte de um crime premeditado ou de alguém que está planejando esse crime.


O desafio

Escreva um programa que não aceite nenhuma entrada e produz 30 números de telefone aleatórios e SSNs (veja abaixo).


Saída

Existem duas linhas de texto que serão impressas todos os "dias".

  1. Crime predicted: 555-55-5555
  2. Calling: 1-555-555-5555 seguido por uma nova linha

Esse processo deve se repetir por um "mês" (30 "dias").


Números de telefone

Todo número de telefone deve ter os seguintes elementos:

  • Deve ter o código do país dos Estados Unidos (o primeiro dígito).

  • Deve ter um código de área aleatório (primeiro conjunto de três dígitos).

  • Os três primeiros dígitos do número de telefone devem ser555 seguidos por 4 dígitos aleatórios.

Aqui está um exemplo anotado:

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

Números de Segurança Social

Todo SSN deve ter 9 dígitos aleatórios no seguinte formato.

342-98-1613

Exemplo

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

...

Continuando por mais 27 ciclos.


Placar

Para que sua pontuação apareça no quadro, ela deve estar neste formato:

# Language, Bytes

Tacadas não devem causar problemas.

Zach Gates
fonte
3
Além disso, quais são os valores válidos para os códigos de país / área dos EUA?
mınxomaτ 18/09/2015
2
Eu removi a restrição de tempo. Em relação à sua segunda pergunta, o código do país dos EUA é explicitamente a 1. Quanto aos códigos de área, quaisquer três dígitos servirão para os propósitos deste desafio. @minxomat
Zach Gates
1
@LuisMendo há um consenso sobre meta sobre o que significa aleatórios se não totalmente definido
FryAmTheEggman
5
Claro, gerando os números no formato que eles estão realmente transmitida pela máquina no show seria complicado ainda mais ...;)
Mason Wheeler
1
Para quem você vai ligar? @ DTI-Matt
Zach Gates

Respostas:

10

CJam, 68 66 64 bytes

Agradecimentos a Dennis por economizar 2 bytes!

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

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

O copipasting não funcionará, pois existem alguns não imprimíveis (um no lugar de cada grupo aleatório), então aqui está um xxddespejo:

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

Para revertê-lo, cole-o em um arquivo e inicie-o xxd -r in_file > out_file. Você também pode experimentá-lo online .

Explicação

"..."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
fonte
Eu nunca teria pensado nisso, mas parece ser dois bytes mais curto em Pyth.
FryAmTheEggman 18/09/2015
@FryAmTheEggman Eu provavelmente deveria aprender Pyth, geralmente é mais curto que o CJam. Você pode enviar essa resposta, se você quiser :)
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)

Um método ingênuo. Leva a mensagem

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

e copia 30 vezes. Em seguida, substitui cada xum por um dígito aleatório randint(0,9), mantendo todos os outros caracteres iguais.

xnor
fonte
6

Python 2, 151 bytes

Agradeça ao senhor (e @Dennis) por %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))
Beta Decay
fonte
6

Perl, 85 bytes, graças a Dennis e grc!

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

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

Perl original, 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
fonte
1
@ Dennis aw, eu estava prestes a postar isso até ver esta resposta. Eu tinha $_="..."x30;s/_/0|rand 10/eg;printque salva a /rbandeira.
grc
Obrigado @Dennis e @grc! É habitual incorporar as mudanças sugeridas nos comentários (com a atribuição, é claro)? Caso contrário, vou reverter minha edição. Mas, de qualquer forma, obrigado! Eu tinha me esquecido totalmente do 0|rand ...truque e do operador de repetição que agora estou usando para repetidamente bater na minha cabeça por perder isso!
type_outcast
2
Sim, é habitual. Se ainda não o fez, consulte as Dicas para jogar golfe no Perl? . É um ótimo recurso.
Dennis
5

CJam, 73 71 70 bytes

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

Experimente on-line no intérprete CJam .

Como funciona

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
fonte
5

ß, 121 118 112 bytes

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

Substitui basicamente 0 por um número aleatório cada e chama a si próprio 30 vezes.

Teste usando o terminal on - line :

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

Edit (112B): Usando $$(algo como sprintf) e operador ternário.

mınxomaτ
fonte
Você poderia fornecer um link para as especificações desse idioma?
LegionMammal978
@ LegionMammal978 Leva algum tempo para escrever. Em termos simples: tem todos os recursos que o AutoIt possui.
mınxomaτ 19/09/15
4

Pyth, 66

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

Usa Xpara traduzir as últimas 5 letras do alfabeto (>5G == 'vwxyz' ) nos 5 números aleatórios. Usa o mesmo RNG encontrado por Sok.

Experimente online aqui

FryAmTheEggman
fonte
4

Pyth, 62

Uma implementação da fantástica resposta CJam de Andrea .

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

"

Observe que existem vários caracteres não imprimíveis na origem e não deve haver um final ". Isso foi adicionado ao SE para que pareça um pouco mais legível. Ainda não consegui obter um hexdump, mas o link abaixo funciona e você poderá copiar e colar nele.

Experimente online aqui

FryAmTheEggman
fonte
3

CJam, 74 bytes

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

"e%}*

Não é um vencedor, mas é pelo menos um pouco parecido com o que Dennis tem até agora, e está usando uma abordagem diferente. Então pensei que valeria a pena postar de qualquer maneira.

Isso usa o e%operador CJam , que gera saída com uma sequência de formato no estilo 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
fonte
Woah, eu pensei que você era @DavidCarraher com esse avatar!
Beta Decay
@BetaDecay This? codegolf.stackexchange.com/users/3967/david-carraher . Nem mesmo o mesmo animal! :) As cores são quase as mesmas, no entanto.
Reto Koradi
Se combinarmos nossas abordagens, podemos chegar a 70 bytes: permalink
Dennis
@ Dennis Sinta-se livre para fazer isso. Você me ajudou muitas vezes.
Reto Koradi
@RetoKoradi Perto o suficiente;)
Decay Beta
3

Matlab / Octave, 108 172 bytes

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

Experimente online

Luis Mendo
fonte
3

JavaScript (ES6), 142

A resposta mixmat de nota lateral em ß mostra uma maneira muito melhor de realizar essa tarefa e pode ser facilmente implementada em JS, dando uma pontuação melhor. Eu gostaria de ter pensado sobre isso.

Editar Adicionado o texto ausente (eu interpretei mal o desafio)

Teste a execução do snippet abaixo em um navegador compatível com 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
fonte
Solução muito boa! No entanto, a última parte do número de telefone ocasionalmente possui menos de 4 dígitos; mesmo com a segunda e terceira partes do SSN.
ETHproductions
@ETHproductions ratos! Revertendo para a versão anterior!
Edc65 18/09/2015
3

Fourier, 166 142 bytes

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

Essa é uma das contagens de bytes mais altas, mas sou um grande fã de Fourier e queria tentar minha solução. Não é muito otimizado.

Dividindo:

45~d

Define a variável d como 45, o código ASCII para um hífen. Esse caractere é impresso tanto que salva alguns bytes para declará-lo aqui.

030(...)

Define o acumulador como zero e circula entre parênteses até atingir 30.

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

Imprima "Crime previsto:".

999roda99roda9999ro10a

Imprima uma nova linha SSN + aleatória.

67a97a108aa-3a+5a-7a58a32a

Imprima "Ligando:".

1oda999roda5oooda9999ro

Imprima um número de telefone que siga as diretrizes: 1-xxx-555-xxxx

10aa

Imprima duas novas linhas para começar de novo.

bkul
fonte
1
Ei, você pode estar interessado em que agora existe um intérprete on-line em fourier.tryitonline.net (e também labs.turbo.run/beta/fourier )
Decay Beta
2

Pitão, 67 bytes

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

As novas linhas são importantes e estão incluídas na contagem de bytes. Experimente aqui .

                                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
fonte
2

Haskell, 150 bytes

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
fonte
2

JavaScript (ES6), 130 123 bytes

Levando a solução ß do minxomat um passo adiante, substituí os 0s pelo número de 0s que estariam lá. O código usa esses números para obter o número correto de dígitos Math.random(), economizando um bom bocado de bytes no processo.

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

Experimente:

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

Como sempre, sugestões são bem-vindas!

ETHproductions
fonte
2

Java, 246 bytes

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

Com quebras de linha:

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

É um começo. Em vez de produzir dígitos aleatórios, usei números aleatórios de 3 ou 4 dígitos.

TNT
fonte
2

R, 151 146 ou 144 bytes

Código

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

Teste online .

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

Eu acho que há muito espaço para melhorar, mas eu não sou bom em mexer com cordas em R.

Editar 1: mudou runif(16,max=10)para runif(16,,10).

Eu criei outro código ( 147 144 bytes) sprintfmas não acho que seja um código semelhante ao 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))))))

Outra abordagem (149 bytes):

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
fonte
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
fonte
2

GolfScript, 91 bytes

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

"}30*

Experimente online.

dinamitado
fonte
2

C #, 280 263 246 bytes

Golfe:

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

Recuado:

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

Novidade no Codegolf, dicas são bem-vindas!

anthonytimmers
fonte
Bem-vindo à programação de quebra-cabeças e código de golfe! Eu não estou intimamente familiarizado com C #, mas uma vez que é baseada em .NET como PowerShell é, acho que o h(999)irá gerar um número 000para 998inclusive, o que significa isso não bastante acertar o espírito das especificações. Corri para o mesmo problema .
AdmBorkBork 21/09
Você está certo, eu vou consertar agora!
Anthonytimmers
Chegou a 280 bytes após a correção e pensou em fazer a formatação no manipulador de delegados, reduzindo-o novamente para 263 bytes.
Anthonytimmers
1

Hássio , 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;}

Expandido:

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;
}
Jacob Misirian
fonte
1

Ruby, 98 caracteres

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

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

Exemplo de execução:

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
homem a trabalhar
fonte
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
fonte
já existe resposta no mesmo idioma com menos caracteres que o seu.
Jakuje 18/09/2015
@Jakuje a outra resposta usa ES6 que não está amplamente disponível ainda
Peleg
Então provavelmente está ok. Mencionar isso na sua resposta seria bom.
Jakuje 18/09/2015
1
@Jakuje As pessoas podem enviar o que quiserem! É tanto sobre o desafio quanto sobre vencer os outros.
precisa saber é o seguinte
1

Javascript pré-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}))

Sinto que os traços podem ser removidos de alguma forma, mas não tenho certeza.

user70585
fonte
1
Vários erros: 1) partes aleatórias não têm o tamanho correto (e nem tentam) 2) faltam "1".
edc65 21/09/2015
1

Pitão, 73 bytes

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

Demo

aplaudir
fonte
1

Julia, 120 bytes

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

Ruby, 90 88 bytes

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

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

Experimente online.

dinamitado
fonte
1
Não há necessidade de notação de string, apenas caracteres ?Nsão suficientes. Não há necessidade de parênteses, ao redor randdo parâmetro.
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'';""}

Encurtou mais alguns bytes, definindo o loop dividido como um bloco de código que gera uma matriz @(..)e é reconectado.

Eliminado o @lembrando que (...)designa um bloco de código executado antes do -join''mesmo.

Isso elimina a necessidade de atribuir a $avariável. Também notei que, devido à forma como a -splitfuncionalidade funciona, o código anterior estava digitando muitos dígitos para o número de telefone; portanto, obtivemos um byte gratuito economizando lá diminuindo para1-XXX-555-XXX . Isso compensou o erro Random 9que realmente escolhe aleatoriamente 0-8, então precisamos especificarRandom 10.

Sooo dang perto de dois dígitos, mas não tenho certeza de onde é possível jogar golfe em outro quatro 3 bytes ...


Anterior, 108

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

Encurtou o código em alguns bytes dividindo uma string em X's' e, em seguida, repetindo a seqüência resultante de strings e concatenando cada entrada com um Randomdígito para criar nossa string de saída final $a. Observe que não poderíamos fazer algo como, "string".replace("x",$(Random 9))porque, então, eles Randomseriam chamados apenas uma vez; portanto, você teria 1-222-555-2222um número de telefone, por exemplo.


Anterior-er, 120

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

Bastante competitivo para uma linguagem detalhada, graças às especificações de saída generosas (isto 000-00-0001é , é tratado como um SSN válido) e ao .ToString()algoritmo de formatação realmente robusto que o PowerShell usa. O PowerShell também gera \r\napós cada saída de string, portanto, o requisito para uma nova linha entre as iterações é simples "".

Observe que isso usa um implícito Get-na frente Random, portanto, isso pode ser muito lento em algumas plataformas / implementações.

AdmBorkBork
fonte
0

Befunge-98, 170

Eu acho que isso ainda pode ser um pouco de golfe. Mas pelo menos eu bati em c #. Testado em 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
fonte
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()

O mais golfista que eu pude obter esse método.

Zach Gates
fonte