Personne d'intérêt


28

Contexte

Person of Interest est un drame policier sur CBS, et mon émission de télévision préférée, récemment.

L'émission parle d'un homme nommé Harold Finch, un programmeur milliardaire, et de son partenaire John Reese, un vétéran des forces spéciales et ancien membre de la CIA. Ce programmeur a créé une intelligence artificielle appelée "La Machine" qui prédit les crimes violents avant qu'ils ne se produisent. Il suit chaque personne sur Terre à tout moment en surveillant et en analysant toutes les caméras de surveillance et les communications électroniques à travers le monde.

Harold a construit The Machine pour que le gouvernement des États-Unis détecte les activités terroristes avant le fait. Il divise les crimes qu'il prédit en listes en fonction de leur pertinence ou non pour la sécurité nationale. Les cas concernés sont traités par le gouvernement, tandis que la liste "non pertinente" est programmée pour être supprimée quotidiennement.

Harold s'est fait une petite porte dérobée dans l'espoir de gérer lui-même la liste "non pertinente". Cette porte dérobée oblige The Machine à appeler le publiphone le plus proche de Harold (une fois par jour environ) et à lui lire un numéro de sécurité sociale. Ce SSN appartient à quelqu'un dont la vie est en danger dans le cadre d'un crime prémédité, ou à quelqu'un qui planifie un tel crime.


Le défi

Écrivez un programme qui ne prend aucune entrée et génère 30 numéros de téléphone et SSN aléatoires (voir ci-dessous).


Sortie

Il y a deux lignes de texte qui seront imprimées tous les "jours".

  1. Crime predicted: 555-55-5555
  2. Calling: 1-555-555-5555 suivi d'une nouvelle ligne

Ce processus devrait se répéter pendant un "mois" (30 "jours").


Les numéros de téléphone

Chaque numéro de téléphone doit comporter les éléments suivants:

  • Doit avoir le code de pays des États-Unis (le premier chiffre).

  • Doit avoir un indicatif régional aléatoire (premier ensemble de trois chiffres).

  • Les trois premiers chiffres du numéro de téléphone lui-même doivent être555 suivis de 4 chiffres aléatoires.

Voici un exemple annoté:

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

Numéros de sécurité sociale

Chaque SSN doit être composé de 9 chiffres aléatoires dans le format suivant.

342-98-1613

Exemple

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

...

Continuant pendant 27 cycles supplémentaires.


Tableau d'affichage

Pour que votre score apparaisse sur le tableau, il doit être dans ce format:

# Language, Bytes

Les barrés ne devraient pas poser de problème.


3
En outre, quelles sont les valeurs valides pour les codes de pays / codes de zone américains?
mınxomaτ

2
J'ai supprimé la restriction de temps. En ce qui concerne votre deuxième question, le code de pays américain est explicitement a 1. En ce qui concerne les indicatifs régionaux, trois chiffres suffiront pour les besoins de ce défi. @minxomat
Zach Gates

1
@LuisMendo il y a un consensus sur la méta sur ce que signifie aléatoire s'il n'est pas complètement défini
FryAmTheEggman

5
Bien sûr, générer les nombres dans le format qu'ils sont réellement transmis par The Machine dans l'émission serait encore plus compliqué ...;)
Mason Wheeler

Réponses:


10

CJam, 68 66 64 octets

Merci à Dennis d'avoir économisé 2 octets!

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

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

Le copypasting ne fonctionnera pas car il y a quelques non imprimables (un à la place de chaque groupe aléatoire), voici donc un xxdvidage:

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

Pour l'inverser, collez-le dans un fichier et lancez xxd -r in_file > out_file. Vous pouvez également l' essayer en ligne .

Explication

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

Je n'y aurais jamais pensé moi-même, mais il semble être deux octets plus court en Pyth.
FryAmTheEggman

@FryAmTheEggman Je devrais probablement apprendre Pyth, c'est souvent plus court que CJam. Vous pouvez poster cette réponse si vous le souhaitez :)
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)

Une méthode naïve. Prend le message

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

et le copie 30 fois. Ensuite, remplace chacun xpar un chiffre aléatoire randint(0,9), en gardant tous les autres caractères identiques.


6

Python 2, 151 octets

Remerciez le seigneur (et @Dennis) pour %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 octets, merci à Dennis et grc!

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

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

Perl d'origine, 91 92 octets

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

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

1
@ Dennis aw, j'étais sur le point de poster ça jusqu'à ce que je voie cette réponse. J'avais $_="..."x30;s/_/0|rand 10/eg;printqui sauve le /rdrapeau.
grc

Merci @Dennis et @grc! Est-il habituel d'incorporer les modifications suggérées dans les commentaires (avec attribution bien sûr)? Sinon, je reviendrai sur ma modification. Mais en tout cas merci! J'avais totalement oublié l' 0|rand ...astuce et l'opérateur de répétition que j'utilise maintenant pour me gifler répétitivement la tête pour avoir raté ça!
type_outcast du

2
Oui, c'est habituel. Si vous ne l'avez pas déjà fait, vous devriez consulter les conseils pour jouer au golf à Perl? . C'est une excellente ressource.
Dennis

5

CJam, 73 71 70 octets

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

Essayez-le en ligne dans l' interpréteur CJam .

Comment ça marche

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 octets

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

Remplace essentiellement 0 par un nombre aléatoire chacun et s'appelle 30 fois.

Testez-le à l'aide du terminal en ligne :

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): Utilisation $$(quelque chose comme sprintf) et opérateur ternaire.


Pourriez-vous fournir un lien vers les spécifications de cette langue?
LegionMammal978

@ LegionMammal978 Prend un certain temps à écrire. En termes simples: possède toutes les fonctionnalités d'AutoIt.
mınxomaτ

4

Pyth, 66

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

Permet Xde traduire les 5 dernières lettres de l'alphabet ( >5G == 'vwxyz') sur les 5 nombres aléatoires. Utilise le même RNG que Sok a trouvé.

Essayez-le en ligne ici


4

Pyth, 62

Une implémentation de la fantastique réponse CJam d' Andrea .

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

"

Notez qu'il y a plusieurs caractères non imprimables dans la source et qu'il ne devrait pas y avoir de fin ". Cela a été ajouté pour SE afin qu'il semble un peu plus lisible. Je n'ai pas encore pu obtenir un hexdump, mais le lien ci-dessous fonctionne et vous devriez pouvoir le copier-coller.

Essayez-le en ligne ici


3

CJam, 74 octets

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

"e%}*

Pas un gagnant, mais c'est au moins un peu proche de ce que Dennis a jusqu'à présent, et il utilise une approche différente. J'ai donc pensé que cela valait la peine d'être publié de toute façon.

Celui-ci utilise l' e%opérateur CJam , qui génère une sortie avec une chaîne de format de style 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.

Woah, je pensais que tu étais @DavidCarraher avec cet avatar!
Beta Decay

@BetaDecay This? codegolf.stackexchange.com/users/3967/david-carraher . Pas même le même animal! :) Les couleurs sont cependant presque les mêmes.
Reto Koradi

Si nous combinons nos approches, nous pouvons atteindre 70 octets: permalien
Dennis

@Dennis N'hésitez pas à y aller. Vous m'avez aidé de nombreuses fois.
Reto Koradi

@RetoKoradi Assez proche;)
Beta Decay

3

Matlab / Octave, 108 172 octets

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

Essayez-le en ligne


3

JavaScript (ES6), 142

La réponse du mixmat de note latérale en ß montre une meilleure façon d'accomplir cette tâche, et pourrait facilement être implémentée dans JS en donnant un meilleur score. J'aurais aimé y avoir pensé.

Modifier Ajout du texte manquant (j'ai mal lu le défi)

Testez l'exécution de l'extrait ci-dessous dans un navigateur compatible 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>


Très belle solution! Cependant, la dernière partie du numéro de téléphone comporte parfois moins de 4 chiffres; idem pour les deuxième et troisième parties du SSN.
ETHproductions

@ETHproductions rats! Revenir à la version précédente!
edc65

3

Fourier, 166 142 octets

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

Cela a l'un des nombres d'octets les plus élevés, mais je suis un grand fan de Fourier et je voulais essayer une solution. Pas très optimisé.

Décomposer:

45~d

Définit la variable d sur 45, le code ASCII d'un trait d'union. Ce caractère est tellement imprimé qu'il économise quelques octets pour le déclarer ici.

030(...)

Met l'accumulateur à zéro et passe à l'intérieur des parenthèses jusqu'à ce qu'il atteigne 30.

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

Imprimer "Crime prédit:".

999roda99roda9999ro10a

Imprimez une nouvelle ligne SSN + complètement aléatoire.

67a97a108aa-3a+5a-7a58a32a

Imprimez "Appel:".

1oda999roda5oooda9999ro

Imprimez un numéro de téléphone conforme aux directives: 1-xxx-555-xxxx

10aa

Imprimez deux nouvelles lignes pour recommencer.


1
Hé, vous pourriez être intéressé par le fait qu'il existe maintenant un interprète en ligne sur fourier.tryitonline.net (et aussi labs.turbo.run/beta/fourier )
Beta Decay

2

Pyth, 67 octets

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

Les sauts de ligne sont importants et sont inclus dans le nombre d'octets. Essayez-le ici .

                                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 octets

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 octets

Prenant la solution ß de minxomat un peu plus loin, j'ai remplacé le 0s par le nombre de 0s qui auraient été là. Le code utilise ces chiffres pour extraire le nombre correct de chiffres Math.random(), économisant ainsi un bon nombre d'octets dans le processus.

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

Essaye le:

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

Comme toujours, les suggestions sont les bienvenues!


2

Java, 246 octets

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

Avec des sauts de ligne:

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

C'est un début. Au lieu de produire des chiffres aléatoires, j'ai utilisé des nombres aléatoires à 3 ou 4 chiffres.


2

R, 151 146 ou 144 octets

Code

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

Testez-le en ligne .

Non golfé

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

Je pense qu'il y a beaucoup de place pour s'améliorer mais je ne suis pas bon avec les cordes en R.

Edit 1: changé le runif(16,max=10)en runif(16,,10).

J'ai fait un autre code ( 147 144 octets) avec sprintfmais je ne pense pas que ce soit beaucoup un code de type 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))))))

Une autre approche (149 octets):

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 octets

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

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

Dentelé:

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

Nouveau sur Codegolf, les conseils sont les bienvenus!


Bienvenue sur Programmation Puzzles & Code Golf! Je ne connais pas intimement C #, mais comme il est basé sur .NET comme PowerShell, je pense que h(999)cela générera un nombre de 000à 998inclusif, ce qui signifie que cela ne correspond pas tout à fait à l'esprit des spécifications. J'ai rencontré le même problème .
AdmBorkBork

Tu as raison, je vais le réparer maintenant!
anthonytimmers

A augmenté jusqu'à 280 octets après le correctif, puis a pensé à faire le formatage dans le gestionnaire de délégués, en le réduisant à 263 octets.
anthonytimmers

1

Hassium , 230 octets

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

Étendu:

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 caractères

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

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

Exemple d'exécution:

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

il y a déjà une réponse dans la même langue avec moins de caractères que la vôtre.
Jakuje

@Jakuje, l'autre réponse utilise ES6 qui n'est pas encore largement disponible
Peleg

Alors c'est probablement ok. Mentionner cela dans votre réponse serait une bonne chose.
Jakuje

1
@Jakuje Les gens peuvent soumettre ce qu'ils veulent! Il s'agit autant du défi que de battre les autres.
ErikE

1

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

J'ai l'impression que les tirets pourraient être supprimés d'une manière ou d'une autre, mais je n'en suis pas sûr.


1
Plusieurs erreurs: 1) les parties aléatoires ne sont pas de longueur correcte (et n'essaient même pas) 2) il manque "1-".
edc65

1

Pyth, 73 octets

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

Démo


1

Julia, 120 octets

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

Non golfé:

# 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

Rubis, 90 88 octets

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

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

Essayez-le en ligne.


1
Pas besoin de notation de chaîne, juste un caractère ?Nsuffit. Pas besoin de parenthèses, autour randdu paramètre de.
manatwork du

1

PowerShell, 120 108 103 102 Octets

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

Raccourci de quelques octets supplémentaires en définissant la boucle de séparation à la place comme un bloc de code qui sort vers un tableau @(..)et est à nouveau joint.

Éliminé @en se souvenant que (...)désigne un bloc de code exécuté avant le de -join''toute façon.

Cela évite d'avoir à affecter la $avariable. A également remarqué qu'en raison du -splitfonctionnement de la fonctionnalité, le code précédent crachait trop de chiffres pour le numéro de téléphone, donc a obtenu un octet gratuit en y réduisant en se rétrécissant 1-XXX-555-XXX. Cela a compensé l'erreur Random 9qui choisit réellement au hasard 0-8, nous devons donc plutôt spécifierRandom 10.

Sooo dang près de deux chiffres, mais je ne sais pas où il est possible de jouer au golf sur quatre autres 3 octets ...


Précédent, 108

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

Raccourci le code de quelques octets en divisant une chaîne à Xla place, puis en bouclant à nouveau le tableau de chaînes résultant et en concaténant chaque entrée avec un Randomchiffre pour construire notre chaîne de sortie finale $a. Notez que nous ne pouvions pas faire quelque chose comme ça "string".replace("x",$(Random 9))car alors le Randomne serait appelé qu'une seule fois, donc vous auriez 1-222-555-2222un numéro de téléphone, par exemple.


Précédent-er, 120

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

Assez compétitif pour un langage verbeux, grâce à des spécifications de sortie généreuses (c'est-à-dire qu'il 000-00-0001est traité comme un SSN valide) et à l' .ToString()algorithme de formatage vraiment robuste utilisé par PowerShell. PowerShell \r\ngénère également une sortie après chaque sortie de chaîne, donc l'exigence d'une nouvelle ligne entre les itérations est juste simple "".

Notez que cela utilise un implicite Get-devant Random, donc cela peut être vraiment lent sur certaines plates-formes / implémentations.


0

Befunge-98, 170

Je pense que cela peut encore être joué un peu. Mais au moins, j'ai battu C #. Testé sur 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 octets

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

Aussi golfé que j'ai pu obtenir cette méthode.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.