Osoba zainteresowana


28

tło

Osoba zainteresowana to dramat kryminalny w CBS i mój ulubiony program telewizyjny.

Spektakl opowiada o człowieku o nazwisku Harold Finch, programista miliarder i jego partner John Reese, weteran sił specjalnych i były agent CIA. Ten programista stworzył czującą sztuczną inteligencję zwaną „Maszyną”, która przewiduje brutalne zbrodnie, zanim się one zdarzą. Przez cały czas śledzi każdą osobę na Ziemi, monitorując i analizując wszystkie kamery monitorujące i komunikację elektroniczną na całym świecie.

Harold zbudował Maszynę dla rządu Stanów Zjednoczonych w celu wykrycia działalności terrorystycznej przed faktem. Podział przestępstw, które przewiduje, dzieli na listy w oparciu o to, czy mają one znaczenie dla bezpieczeństwa narodowego. Odpowiednie sprawy są rozpatrywane przez rząd, podczas gdy „nieistotna” lista jest zaprogramowana do codziennego usuwania.

Harold zrobił dla siebie mały backdoor w nadziei, że sam sobie poradzi z „nieistotną” listą. To tylne wejście powoduje, że Maszyna dzwoni do automatu telefonicznego najbliższego Harolda (raz dziennie) i odczytuje mu numer ubezpieczenia społecznego. Ten SSN należy do osoby, której życie jest zagrożone w ramach przestępstwa z premedytacją lub osoby, która planuje takie przestępstwo.


Wyzwanie

Napisz program, który nie przyjmuje danych wejściowych i generuje 30 losowych numerów telefonów i numerów SSN (patrz poniżej).


Wydajność

Istnieją dwa wiersze tekstu, które będą drukowane każdego „dnia”.

  1. Crime predicted: 555-55-5555
  2. Calling: 1-555-555-5555 po którym następuje nowa linia

Proces ten należy powtarzać przez jeden „miesiąc” (30 „dni”).


Numery telefoniczne

Każdy numer telefonu musi zawierać następujące elementy:

  • Musi mieć kod kraju Stanów Zjednoczonych (pierwsza cyfra).

  • Musi mieć losowy numer kierunkowy (pierwszy zestaw trzech cyfr).

  • Pierwsze trzy cyfry samego numeru telefonu powinny być555 , a następnie 4 losowe cyfry.

Oto przykład z adnotacjami:

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

Numery ubezpieczenia społecznego

Każdy SSN musi składać się z 9 losowych cyfr w następującym formacie.

342-98-1613

Przykład

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

...

Kontynuacja przez kolejne 27 cykli.


Tablica wyników

Twój wynik powinien pojawić się na tablicy, powinien mieć następujący format:

# Language, Bytes

Przekreślenia nie powinny powodować problemów.


3
Jakie są prawidłowe wartości dla kodów krajów / numerów kierunkowych w USA?
mınxomaτ

2
Usunąłem ograniczenie czasowe. W odniesieniu do drugiego pytania kod kraju w Stanach Zjednoczonych jest wyraźnie oznaczony jako 1. Jeśli chodzi o numery kierunkowe, na potrzeby tego wyzwania wystarczą trzy cyfry. @minxomat
Zach Gates

1
@LuisMendo istnieje konsensus w sprawie meta na temat tego, co losowy oznacza, jeśli nie w pełni zdefiniowany
FryAmTheEggman

5
Oczywiście generowanie liczb w formacie, który faktycznie przekazują Maszyna w serialu, byłoby jeszcze bardziej skomplikowane ...;)
Mason Wheeler

Odpowiedzi:


10

CJam, 68 66 64 bajtów

Dzięki Dennis za oszczędność 2 bajtów!

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

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

Kopiowanie nie działa, ponieważ istnieje kilka niedrukowalnych elementów (po jednym w każdej losowej grupie), więc oto xxdzrzut:

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

Aby odwrócić, wklej go do pliku i uruchom xxd -r in_file > out_file. Możesz także spróbować online .

Wyjaśnienie

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

Nigdy bym o tym nie pomyślał, ale wydaje się, że w Pyth jest o dwa bajty krótszy .
FryAmTheEggman

@FryAmTheEggman Powinienem prawdopodobnie nauczyć się Pytha, często jest on krótszy niż CJam. Możesz opublikować tę odpowiedź, jeśli chcesz :)
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)

Naiwna metoda. Bierze wiadomość

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

i kopiuje to 30 razy. Następnie zastępuje każdą xlosową cyfrą randint(0,9), zachowując wszystkie pozostałe znaki bez zmian.


6

Python 2, 151 bajtów

Podziękuj lordowi (i @Dennisowi) za %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 bajtów, dzięki Dennis i grc!

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

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

Oryginalny Perl, 91 92 bajtów

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

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

1
@Dennis aw, miałem zamiar to opublikować, dopóki nie zobaczyłem tej odpowiedzi. Miałem, $_="..."x30;s/_/0|rand 10/eg;printktóry ratuje /rflagę.
grc,

Dzięki @Dennis i @grc! Czy zwyczajem jest wprowadzanie zmian sugerowanych w komentarzach (z przypisaniem oczywiście)? Jeśli nie, cofnę edycję. Ale w każdym razie dzięki! Zupełnie zapomniałem o 0|rand ...triku i operatorze powtarzania, którego teraz używam, by wielokrotnie uderzać mnie w głowę za to, że tego przegapiłem!
type_outcast

2
Tak, to jest zwyczajowe. Jeśli jeszcze tego nie zrobiłeś, powinieneś sprawdzić Wskazówki dotyczące gry w golfa w Perlu? . To świetny zasób.
Dennis

5

CJam, 73 71 70 bajtów

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

Wypróbuj online w interpretatorze CJam .

Jak to działa

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 bajtów

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

Zasadniczo zastępuje 0 losową liczbą i wywołuje się 30 razy.

Przetestuj za pomocą terminala 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...>

Edycja (112B): Używanie $$(coś jak sprintf) i operatora trójskładnikowego.


Czy możesz podać link do specyfikacji tego języka?
LegionMammal978,

@ LegionMammal978 Pisanie zajmuje trochę czasu. Krótko mówiąc: ma wszystkie funkcje, które ma AutoIt.
mınxomaτ

4

Pyth, 66

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

Używa Xtłumaczenia ostatnich 5 liter alfabetu ( >5G == 'vwxyz') na 5 liczb losowych. Używa tego samego RNG, co Sok.

Wypróbuj online tutaj


4

Pyth, 62

Implementacja fantastycznej odpowiedzi Andrei na CJam.

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

"

Zauważ, że w źródle znajduje się kilka niedrukowalnych znaków i nie powinno być końca ". Zostało to dodane do SE, więc wydaje się bardziej czytelne. Nie udało mi się jeszcze uzyskać zrzutu heksadecymalnego, ale poniższy link działa i powinieneś być w stanie go skopiować i wkleić.

Wypróbuj online tutaj


3

CJam, 74 bajty

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

"e%}*

Nie jest zwycięzcą, ale jest co najmniej nieco zbliżony do tego, co dotychczas Dennis, i stosuje inne podejście. Pomyślałem więc, że i tak warto to opublikować.

Używa to e%operatora CJam , który generuje dane wyjściowe za pomocą łańcucha formatu stylu 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, myślałem, że jesteś @DavidCarraher z tym awatarem!
Beta Decay

@BetaDecay This? codegolf.stackexchange.com/users/3967/david-carraher . Nawet to samo zwierzę! :) Kolory są jednak prawie takie same.
Reto Koradi,

Jeśli połączymy nasze podejście, możemy uzyskać 70 bajtów: bezpośredni link
Dennis

@Dennis Zapraszam do skorzystania z niego. Wiele razy mi pomagałeś.
Reto Koradi,

@RetoKoradi Wystarczająco blisko;)
Rozpad Beta

3

Matlab / Octave, 108 172 bajtów

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

Wypróbuj online


3

JavaScript (ES6), 142

Dodatkowa uwaga odpowiedź mixmat w ß pokazuje tak lepszy sposób na wykonanie tego zadania i może być łatwo zaimplementowana w JS, dając lepszy wynik. Chciałbym o tym pomyśleć.

Edytuj Dodano brakujący tekst (źle odczytałem wyzwanie)

Przetestuj poniższy fragment kodu w przeglądarce zgodnej z 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>


Bardzo fajne rozwiązanie! Jednak ostatnia część numeru telefonu ma czasami mniej niż 4 cyfry; to samo z drugą i trzecią częścią SSN.
ETHprodukcje

@ETHproductions szczury! Wracam do poprzedniej wersji!
edc65

3

Fourier, 166 142 bajtów

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

Jest to jeden z najwyższych bajtów, ale jestem wielkim fanem Fouriera i chciałem spróbować swoich sił w rozwiązaniu problemu. Niezbyt zoptymalizowany.

Podział:

45~d

Ustawia zmienną d na 45, kod ASCII dla łącznika. Ten znak jest drukowany tak bardzo, że oszczędza kilka bajtów, aby go tutaj zadeklarować.

030(...)

Ustawia akumulator na zero i zapętla się w nawiasach, aż osiągnie 30.

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

Drukuj „Przewidywane przestępstwa:”.

999roda99roda9999ro10a

Wydrukuj całkowicie losowy numer SSN + nowa linia.

67a97a108aa-3a+5a-7a58a32a

Wydrukuj „Dzwonienie:”.

1oda999roda5oooda9999ro

Wydrukuj numer telefonu zgodnie z wytycznymi: 1-xxx-555-xxxx

10aa

Wydrukuj dwa nowe wiersze, aby zacząć od nowa.


1
Hej, możesz być zainteresowany, że teraz jest tłumacz online na fourier.tryitonline.net (a także labs.turbo.run/beta/fourier )
Rozpad Beta

2

Pyth, 67 bajtów

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

Nowe wiersze są ważne i są uwzględnione w liczbie bajtów. Wypróbuj tutaj .

                                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 bajtów

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 bajtów

Idąc krok dalej w rozwiązaniu ß minxomata, zastąpiłem 0s liczbą 0s, która byłaby tam. Kod używa tych liczb do pobrania poprawnej liczby cyfr Math.random(), co pozwala zaoszczędzić sporo bajtów.

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

Wypróbuj to:

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

Jak zawsze sugestie mile widziane!


2

Java, 246 bajtów

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

Z podziałami linii:

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

To poczatek. Zamiast tworzyć losowe cyfry, użyłem losowych liczb 3-cyfrowych lub 4-cyfrowych.


2

R, 151 146 lub 144 bajtów

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

Przetestuj online .

Nie golfił

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

Myślę, że jest dużo miejsca do poprawy, ale nie mam problemów z napisami w R.

Edit 1: zmienił runif(16,max=10)się runif(16,,10).

Zrobiłem inny kod ( 147 144 bajtów), sprintfale nie sądzę, że jest to kod podobny do 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))))))

Inne podejście (149 bajtów):

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 bajtów

<?=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 bajtów

Gra w golfa:

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

Zębaty:

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

Nowości w Codegolf, wskazówki są mile widziane!


Witamy w Programowaniu Puzzle i Code Golf! Nie jestem do końca zaznajomiony z C #, ale ponieważ jest on oparty na .NET, podobnie jak PowerShell, myślę, że h(999)wygeneruje liczbę od 000do 998włącznie, więc oznacza to, że nie jest to zgodne z duchem specyfikacji. Natrafiłem na ten sam problem .
AdmBorkBork,

Masz rację, naprawię to teraz!
anthonytimmers,

Po poprawce poszedł do 280 bajtów, a następnie pomyślał o sformatowaniu w module obsługi delegatów, zmniejszając go z powrotem do 263 bajtów.
anthonytimmers,

1

Sód , 230 bajtów

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

Rozszerzony:

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 znaków

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

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

Przykładowy przebieg:

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

odpowiedź jest już w tym samym języku i zawiera mniej znaków niż Twój.
Jakuje

@Jakuje druga odpowiedź używa ES6, który nie jest jeszcze powszechnie dostępny
Peleg

To chyba jest w porządku. Dobrze byłoby wspomnieć o tym w swojej odpowiedzi.
Jakuje

1
@Jakuje Ludzie mogą przesyłać co tylko chcą! Chodzi zarówno o wyzwanie, jak i o pokonanie innych.
ErikE

1

JavaScript wcześniejszy niż 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}))

Wydaje mi się, że kreski można jakoś usunąć, ale nie jestem pewien.


1
Kilka błędów: 1) losowe części nie mają właściwej długości (a nawet nie próbują) 2) brakuje „1”.
edc65


1

Julia, 120 bajtów

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

Nie golfowany:

# 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

Rubinowy, 90 88 bajtów

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

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

Wypróbuj online.


1
Nie ma potrzeby notowania ciągów, wystarczy znak ?N. Nie ma potrzeby stosowania nawiasów wokół randparametru.
manatwork

1

PowerShell, 120 108 103 102 bajtów

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

Skrócono kilka dodatkowych bajtów, ustawiając pętlę podziału na blok kodu, który wysyła dane do tablicy @(..)i jest ponownie łączony.

Wyeliminowano @poprzez zapamiętywanie, które (...)wyznacza blok kodu wykonany przedtem -join''.

Eliminuje to konieczność przypisywania $azmiennej. Zauważyłem również, że ze względu na działanie tej -splitfunkcji poprzedni kod wyrzucał zbyt wiele cyfr dla numeru telefonu, więc uzyskałem tam darmowy zapis bajtów, zmniejszając się do 1-XXX-555-XXX. To zrekompensowało błąd, Random 9który faktycznie wybiera losowe 0-8, więc zamiast tego musimy sprecyzowaćRandom 10.

Sooo dang blisko dwucyfrowych, ale nie jestem pewien, gdzie można grać w golfa na kolejne cztery 3 bajty ...


Poprzedni, 108

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

Skróciliśmy kod o kilka bajtów, zamiast tego dzieląc ciąg znaków na X, a następnie ponownie zapętlając wynikową tablicę ciągów i łącząc każdy wpis Randomcyfrą, aby zbudować nasz końcowy ciąg wyjściowy $a. Pamiętaj, że nie moglibyśmy zrobić czegoś takiego, "string".replace("x",$(Random 9))ponieważ wtedy Randomzadzwonilibyśmy tylko raz, więc miałbyś 1-222-555-2222na przykład numer telefonu.


Poprzednio, 120

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

Dang konkurencyjna dla pełnego języka, dzięki hojnym specyfikacjom wyjściowym (tj. 000-00-0001Jest traktowany jako prawidłowy SSN) i naprawdę solidny .ToString()algorytm formatowania, którego używa PowerShell. PowerShell generuje również \r\npo każdym wyjściu łańcucha, więc wymóg wprowadzenia nowej linii pomiędzy iteracjami jest po prostu prosty "".

Zauważ, że używa to domniemania Get-przed Random, więc może to być naprawdę powolne na niektórych platformach / implementacjach.


0

Befunge-98, 170

Myślę, że można to jeszcze trochę pograć w golfa. Ale przynajmniej pokonałem C #. Testowany na 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 bajtów

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

Tak dobrze jak grałem w golfa.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.