Person von Interesse


28

Hintergrund

Person of Interest ist ein Krimidrama in CBS und seit kurzem meine Lieblingssendung im Fernsehen.

Die Show handelt von einem Mann namens Harold Finch, einem Milliardärsprogrammierer, und seinem Partner John Reese, einem Veteranen der Special Forces und Ex-CIA-Agenten. Dieser Programmierer hat eine empfindungsfähige KI namens "The Machine" erstellt, die Gewaltverbrechen vorhersagt, bevor sie eintreten. Es verfolgt jeden Menschen auf der Erde zu jeder Zeit, indem es alle Überwachungskameras und die elektronische Kommunikation auf der ganzen Welt überwacht und analysiert.

Harold baute die Maschine für die Regierung der Vereinigten Staaten, um terroristische Aktivitäten im Vorfeld aufzudecken. Es unterteilt die von ihm vorhergesagten Straftaten in Listen, je nachdem, ob sie für die nationale Sicherheit relevant sind oder nicht. Die relevanten Fälle werden von der Regierung behandelt, während die "irrelevante" Liste so programmiert ist, dass sie täglich gelöscht wird.

Harold machte eine kleine Hintertür für sich in der Hoffnung, sich selbst mit der "irrelevanten" Liste zu befassen. Diese Hintertür veranlasst The Machine, den nächstgelegenen Harold anzurufen (etwa einmal täglich) und ihm eine Sozialversicherungsnummer vorzulesen. Diese SSN gehört jemandem, dessen Leben als Teil eines vorsätzlichen Verbrechens in Gefahr ist, oder jemandem, der ein solches Verbrechen plant.


Die Herausforderung

Schreiben Sie ein Programm, das keine Eingaben akzeptiert und 30 zufällige Telefonnummern und SSNs ausgibt (siehe unten).


Ausgabe

Es gibt zwei Textzeilen, die jeden "Tag" gedruckt werden.

  1. Crime predicted: 555-55-5555
  2. Calling: 1-555-555-5555 gefolgt von einem Zeilenumbruch

Dieser Vorgang sollte sich für einen "Monat" (30 "Tage") wiederholen.


Telefonnummern

Jede Telefonnummer muss folgende Elemente enthalten:

  • Muss den US-amerikanischen Ländercode (die erste Ziffer) haben.

  • Muss eine zufällige Vorwahl haben (erster dreistelliger Satz).

  • Die ersten drei Ziffern der Telefonnummer selbst sollten555 gefolgt von 4 zufälligen Ziffern sein.

Hier ist ein kommentiertes Beispiel:

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

Sozialversicherungsnummern

Jede SSN muss aus 9 zufälligen Ziffern im folgenden Format bestehen.

342-98-1613

Beispiel

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

...

Fortsetzung für 27 weitere Zyklen.


Anzeigetafel

Damit Ihre Partitur auf der Tafel erscheint, sollte sie in folgendem Format vorliegen:

# Language, Bytes

Durchgestrichene Symbole sollten kein Problem verursachen.


3
Was sind die gültigen Werte für US-Ländervorwahlen / Ortsvorwahlen?
Mittwoch,

2
Ich habe die zeitliche Beschränkung aufgehoben. In Bezug auf Ihre zweite Frage lautet die US-Landesvorwahl ausdrücklich a 1. Bezüglich der Ortsvorwahl genügen drei beliebige Ziffern für die Zwecke dieser Herausforderung. @minxomat
Zach Gates

1
@ LuisMendo gibt es einen Konsens über Meta, was Zufall bedeutet, wenn nicht vollständig definiert
FryAmTheEggman

5
Natürlich wäre es noch komplizierter , die Zahlen in dem Format zu generieren, in dem sie tatsächlich von The Machine in der Show übertragen wurden ...;)
Mason Wheeler,

Antworten:


10

CJam, 68 66 64 Bytes

Danke an Dennis für das Speichern von 2 Bytes!

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

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

Copypasting funktioniert nicht, da es einige nicht druckbare Dateien gibt (eine anstelle jeder zufälligen Gruppe). Hier ist also ein xxdSpeicherauszug:

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

Um es umzukehren, fügen Sie es in eine Datei ein und starten Sie sie xxd -r in_file > out_file. Sie können es auch online ausprobieren .

Erläuterung

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

Ich hätte selbst nie daran gedacht, aber es scheint in Pyth zwei Bytes kürzer zu sein.
FryAmTheEggman

@FryAmTheEggman Ich sollte wahrscheinlich Pyth lernen, es ist oft kürzer als CJam. Sie können diese Antwort posten, wenn Sie wollen :)
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)

Eine naive Methode. Nimmt die Nachricht auf

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

und kopiert es 30 mal. Ersetzt dann jedes Zeichen xdurch eine zufällige Ziffer randint(0,9), wobei alle anderen Zeichen gleich bleiben.


6

Python 2, 151 Bytes

Danke dem Herrn (und @Dennis) für %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 Bytes, danke an Dennis und grc!

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

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

Original Perl, 91 92 Bytes

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

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

1
@ Tennis aw, ich wollte das posten, bis ich diese Antwort sah. Ich hatte $_="..."x30;s/_/0|rand 10/eg;printwas die /rFlagge rettet .
Grc

Danke @Dennis und @grc! Ist es üblich, in Kommentaren vorgeschlagene Änderungen einzubeziehen (natürlich mit Namensnennung)? Wenn nicht, mache ich meine Bearbeitung wieder rückgängig. Aber auf jeden Fall danke! Ich hatte den 0|rand ...Trick und den Wiederholungsoperator, den ich jetzt benutze, völlig vergessen, um mir wiederholt auf den Kopf zu schlagen, weil ich das verpasst habe!
type_outcast

2
Ja, das ist üblich. Wenn Sie es noch nicht getan haben, sollten Sie sich Tipps zum Golfen in Perl ansehen. . Es ist eine großartige Ressource.
Dennis

5

CJam, 73 71 70 Bytes

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

Probieren Sie es online in der CJam-Interpreter aus .

Wie es funktioniert

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 Bytes

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

Ersetzt im Grunde genommen jeweils 0 durch eine Zufallszahl und ruft sich selbst 30 Mal auf.

Testen Sie es mit dem Online-Terminal :

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

Bearbeiten (112B): Mit $$(so etwas wie sprintf) und ternärem Operator.


Können Sie einen Link zur Spezifikation dieser Sprache angeben?
LegionMammal978

@ LegionMammal978 Das Schreiben nimmt einige Zeit in Anspruch. In einfachen Worten: Hat jede Funktion, die AutoIt hat.
Mittwoch,

4

Pyth, 66

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

Verwendet X, um die letzten 5 Buchstaben des Alphabets ( >5G == 'vwxyz') auf die 5 Zufallszahlen zu übersetzen. Verwendet das gleiche RNG wie Sok.

Probieren Sie es hier online aus


4

Pyth, 62

Eine Implementierung von Andrea's fantastischer CJam-Antwort.

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

"

Beachten Sie, dass sich mehrere nicht druckbare Zeichen in der Quelle befinden und dass kein nachgestelltes Zeichen vorhanden sein sollte ". Das wurde für SE hinzugefügt, damit es ein bisschen lesbarer erscheint. Ich konnte noch keinen Hexdump bekommen, aber der unten stehende Link funktioniert und Sie sollten in der Lage sein, ihn zu kopieren und einzufügen.

Probieren Sie es hier online aus


3

CJam, 74 Bytes

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

"e%}*

Kein Gewinner, aber es ist zumindest etwas ähnlich zu dem, was Dennis bisher hat, und es verwendet einen anderen Ansatz. Also dachte ich, dass es sich trotzdem lohnt, etwas zu posten.

Dies verwendet den CJam- e%Operator, der die Ausgabe mit einer printf- Formatzeichenfolge generiert.

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, ich dachte du wärst @DavidCarraher mit diesem Avatar!
Beta Decay

@BetaDecay Das? codegolf.stackexchange.com/users/3967/david-carraher . Nicht einmal das gleiche Tier! :) Die Farben sind jedoch fast gleich.
Reto Koradi

Wenn wir unsere Ansätze kombinieren, können wir bis zu 70 Bytes erreichen: Permalink
Dennis

@ Tennis Fühlen Sie sich frei, es zu versuchen. Du hast mir oft geholfen.
Reto Koradi

@RetoKoradi Nah genug;)
Beta Decay


3

JavaScript (ES6), 142

Randnotiz mixmat Antwort in ß zeigt einen besseren Weg, um diese Aufgabe zu erfüllen, und könnte leicht in JS implementiert werden, um eine bessere Punktzahl zu erzielen. Ich wünschte, ich hätte darüber nachgedacht.

Bearbeiten Fehlenden Text hinzugefügt (ich habe die Herausforderung falsch verstanden)

Testen Sie das folgende Snippet in einem EcmaScript 6-kompatiblen Browser

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


Sehr schöne Lösung! Der letzte Teil der Telefonnummer besteht jedoch gelegentlich aus weniger als 4 Ziffern. Gleiches gilt für den zweiten und dritten Teil der SSN.
ETHproductions

@ETHproductions Ratten! Zurück zur vorherigen Version!
EDC65

3

Fourier, 166 142 Bytes

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

Dies hat eine der höchsten Bytezahlen, aber ich bin ein großer Fan von Fourier und wollte mich an einer Lösung versuchen. Nicht sehr optimiert.

Brechen sie ab:

45~d

Setzt die Variable d auf 45, den ASCII-Code für einen Bindestrich. Dieses Zeichen wird so oft gedruckt, dass es einige Bytes spart, um es hier zu deklarieren.

030(...)

Setzt den Akku auf Null und durchläuft die Klammer, bis 30 erreicht ist.

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

Print "Verbrechen vorhergesagt:".

999roda99roda9999ro10a

Drucken Sie eine völlig zufällige SSN + Newline.

67a97a108aa-3a+5a-7a58a32a

Drucken Sie "Anrufen:".

1oda999roda5oooda9999ro

Drucken Sie eine Telefonnummer, die den Richtlinien entspricht: 1-xxx-555-xxxx

10aa

Drucken Sie zwei neue Zeilen, um von vorne zu beginnen.


1
Hey, es könnte dich interessieren, dass es jetzt einen Online-Dolmetscher unter fourier.tryitonline.net (und auch labs.turbo.run/beta/fourier ) gibt
Beta Decay

2

Pyth, 67 Bytes

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

Die Zeilenumbrüche sind wichtig und gehen in die Byteanzahl ein. Probieren Sie es hier aus .

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

2

JavaScript (ES6), 130 123 Byte

Nachdem ich die ß-Lösung von minxomat weiterentwickelt habe, habe ich die 0s durch die Anzahl der 0s ersetzt, die dort gewesen wären. Der Code verwendet diese Zahlen, um die korrekte Anzahl von Ziffern zu ermitteln Math.random()und dabei ein gutes Stück Bytes zu sparen.

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

Versuch es:

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

Wie immer sind Vorschläge willkommen!


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

Mit Zeilenumbrüchen:

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

Es ist ein Anfang. Anstatt zufällige Ziffern zu erzeugen, habe ich zufällige 3-stellige oder 4-stellige Zahlen verwendet.


2

R 151 146 oder 144 Bytes

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

Testen Sie es 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")
  }

Ich denke, es gibt viel Raum für Verbesserungen, aber ich bin nicht gut darin, mit Streichern in R herumzuspielen.

Edit 1: änderte das runif(16,max=10)zu runif(16,,10).

Ich habe einen anderen Code ( 147 144 Bytes) mit gemachtsprintf aber ich denke nicht, dass es viel ein R-ähnlicher Code ist.

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

Ein anderer Ansatz (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))))

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


2

C #, 280 263 246 Bytes

Golf gespielt:

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

Eingerückt:

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

Neu bei Codegolf, Tipps sind willkommen!


Willkommen bei Programming Puzzles & Code Golf! Ich bin mit C # nicht sehr vertraut, aber da es wie PowerShell auf .NET basiert, wird es meiner Meinung h(999)nach eine Zahl von 000bis 998einschließlich generieren , was bedeutet, dass dies nicht ganz dem Geist der Spezifikationen entspricht. Ich bin auf dasselbe Problem gestoßen .
AdmBorkBork

Du hast recht, ich werde es jetzt beheben!
Anthonytimmers

Nach dem Fix wurden bis zu 280 Bytes verbraucht, und dann wurde überlegt, die Formatierung im Delegate-Handler vorzunehmen, um sie wieder auf 263 Bytes zu reduzieren.
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;}

Erweitert:

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 Zeichen

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

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

Probelauf:

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

Es gibt bereits eine Antwort in derselben Sprache mit weniger Zeichen als Ihrer.
Jakuje

@ Jakuje die andere Antwort verwendet ES6, die noch nicht weit verbreitet ist
Peleg

Dann ist es wohl ok. Dies in Ihrer Antwort zu erwähnen wäre gut.
Jakuje

1
@ Jakuje Leute können einreichen, was sie wollen! Es geht genauso um die Herausforderung wie darum, andere zu schlagen.
ErikE

1

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

Ich habe das Gefühl, dass die Striche irgendwie entfernt werden könnten, bin mir aber nicht sicher.


1
Mehrere Fehler: 1) Zufällige Teile haben nicht die richtige Länge (und versuchen es auch nicht) 2) fehlende "1-".
edc65

1

Pyth, 73 Bytes

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

Demo


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

1

Ruby, 90 88 Bytes

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

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

Probieren Sie es online aus.


1
Es ist keine Zeichenkettennotation erforderlich, nur Zeichen ?Nsind ausreichend. Keine Klammern erforderlich, um randden Parameter.
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'';""}

Verkürzung um einige Bytes, indem die Teilschleife als Codeblock festgelegt wurde, der an ein Array ausgegeben wird @(..) und wieder verbunden wird.

Beseitigt die @durch das Erinnern daran(...) ein vor dem -join''sowieso ausgeführter Codeblock bezeichnet .

Dadurch muss die $aVariable nicht mehr zugewiesen werden. Außerdem wurde festgestellt, dass -splitder vorherige Code aufgrund der Funktionsweise zu viele Ziffern für die Telefonnummer ausspuckte, sodass dort durch Verkleinern auf ein freies Byte gespart wurde 1-XXX-555-XXX. Das glich die Fehler aus Random 9, die tatsächlich zufällig ausgewählt wurden0-8 , , sodass wir stattdessen angeben müssenRandom 10.

Soooo, fast zweistellig, aber ich bin mir nicht sicher, wo es möglich ist, weitere vier zu gewinnen 3 Bytes ...


Zurück, 108

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

Verkürzte den Code um ein paar Bytes, indem stattdessen eine Zeichenfolge aufgespalten Xwurde. Anschließend wurde die resultierende Zeichenfolge erneut durchlaufen und jeder Eintrag mit einer RandomZiffer verkettet , um die endgültige Ausgabezeichenfolge zu erstellen $a. Beachten Sie, dass wir so etwas nicht machen konnten, "string".replace("x",$(Random 9))da das Randomdann nur einmal aufgerufen würde, also hätten Sie es1-222-555-2222 zum Beispiel eine Telefonnummer.


Vorherige, 120

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

Ziemlich konkurrenzfähig für eine ausführliche Sprache, dank großzügiger Ausgabespezifikationen (dh 000-00-0001wird als gültige SSN behandelt) und dem wirklich robusten .ToString()Formatierungsalgorithmus, den PowerShell verwendet. PowerShell gibt auch \r\nnach jeder Zeichenfolgenausgabe aus, sodass das Erfordernis eines Zeilenumbruchs zwischen den Iterationen einfach ist"" .

Beachten Sie, dass dies ein implizites Get-vor verwendet Random, so dass dies auf einigen Plattformen / Implementierungen sehr langsam sein kann .


0

Befunge-98, 170

Ich denke, das kann noch ein bisschen runter gespielt werden. Aber zumindest habe ich C # geschlagen. Getestet bei 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()

So golfen, wie ich diese Methode bekommen konnte.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.