Latar Belakang
Person of Interest adalah drama kriminal di CBS, dan acara TV favorit saya, pada akhir-akhir ini.
Acara ini tentang seorang pria bernama Harold Finch, seorang programmer miliarder, dan rekannya John Reese, seorang veteran pasukan khusus dan mantan operasi CIA. Programmer ini menciptakan AI makhluk hidup yang disebut "The Machine" yang memprediksi kejahatan kekerasan sebelum terjadi. Ini melacak setiap orang di Bumi setiap saat dengan memantau dan menganalisis semua kamera pengintai dan komunikasi elektronik di seluruh dunia.
Harold membangun Mesin untuk pemerintah Amerika Serikat untuk mendeteksi aktivitas teroris sebelum fakta. Ini membagi kejahatan yang diprediksi menjadi daftar berdasarkan apakah mereka relevan dengan keamanan nasional. Kasus-kasus yang relevan ditangani oleh pemerintah, sementara daftar "tidak relevan" diprogram untuk dihapus setiap hari.
Harold membuat pintu belakang kecil untuk dirinya sendiri dengan harapan untuk berurusan dengan daftar "tidak relevan", dirinya sendiri. Pintu belakang ini menyebabkan Mesin untuk memanggil telepon umum terdekat Harold (sekali setiap hari atau lebih) dan membacakan nomor Jaminan Sosial kepadanya. SSN ini milik seseorang yang hidupnya dalam bahaya sebagai bagian dari kejahatan terencana, atau seseorang yang merencanakan kejahatan semacam itu.
Tantangan
Tulis program yang tidak memerlukan input, dan mengeluarkan 30 nomor telepon acak & SSN (lihat di bawah).
Keluaran
Ada dua baris teks yang akan dicetak setiap "hari".
Crime predicted: 555-55-5555
Calling: 1-555-555-5555
diikuti oleh baris baru
Proses ini harus diulang selama satu "bulan" (30 "hari").
Nomor telepon
Setiap nomor telepon harus memiliki elemen berikut:
Harus memiliki kode negara Amerika Serikat (digit pertama).
Harus memiliki kode area acak (set pertama tiga digit).
Tiga digit pertama dari nomor telepon itu sendiri harus
555
, diikuti oleh 4 digit acak.
Berikut adalah contoh yang beranotasi:
1-814-555-3857
| | | |
| | | |
| | | +----------> random four digits
| | |
| | +--------------> the set 555
| |
| +------------------> area code
|
+---------------------> country code
Nomor Jaminan Sosial
Setiap SSN harus terdiri dari 9 digit acak dalam format berikut.
342-98-1613
Contoh
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
...
Berlanjut untuk 27 siklus lagi.
Papan angka
Agar skor Anda muncul di papan tulis, itu harus dalam format ini:
# Language, Bytes
Dicoret tidak seharusnya menyebabkan masalah.
1
. Adapun kode area, tiga digit akan dilakukan, untuk keperluan tantangan ini. @minxomatJawaban:
CJam,
686664 byteTerima kasih kepada Dennis karena telah menghemat 2 byte!
Copypasting tidak akan berfungsi karena ada beberapa unsintables (satu menggantikan masing-masing kelompok acak), jadi inilah
xxd
dump:Untuk membalikkannya, rekatkan ke file dan luncurkan
xxd -r in_file > out_file
. Anda juga dapat mencobanya online .Penjelasan
sumber
Python 2, 129
Metode naif. Menerima pesan
dan salin 30 kali. Lalu, ganti masing-masing
x
- dengan digit acakrandint(0,9)
, jaga agar semua karakter lain tetap sama.sumber
Python 2, 151 byte
Terima kasih Tuhan (dan @Dennis) untuk
%0nd
: Dsumber
Perl, 85 Bytes, terima kasih untuk Dennis dan grc!
Perl Asli,
9192 Bytessumber
$_="..."x30;s/_/0|rand 10/eg;print
yang menyimpan/r
bendera.0|rand ...
trik dan operator pengulangan yang sekarang aku gunakan untuk menampar kepalaku berulang kali karena melewatkan itu!CJam,
737170 byteCobalah online di juru bahasa CJam .
Bagaimana itu bekerja
sumber
ß,
121118112 bytePada dasarnya masing-masing menggantikan 0 dengan nomor acak dan menyebut dirinya sendiri 30 kali.
Uji menggunakan terminal online :
Sunting (112B): Menggunakan
$$
(seperti sprintf) & operator ternary.sumber
Pyth, 66
Menggunakan
X
untuk menerjemahkan 5 huruf terakhir dari alfabet (>5G == 'vwxyz'
) ke 5 angka acak. Menggunakan RNG yang sama dengan yang ditemukan Sok.Cobalah online di sini
sumber
Pyth, 62
Sebuah implementasi dari jawaban CJam yang fantastis dari Andrea .
Perhatikan bahwa ada beberapa karakter yang tidak patut dicetak dalam sumber, dan tidak boleh ada trailing
"
. Itu ditambahkan untuk SE sehingga sepertinya sedikit lebih mudah dibaca. Saya belum bisa mendapatkan hexdump, tetapi tautan di bawah berfungsi dan Anda harus dapat menyalin-menempelkannya.Cobalah online di sini
sumber
CJam, 74 byte
Bukan pemenang, tapi setidaknya agak dekat dengan apa yang dimiliki Dennis sejauh ini, dan itu menggunakan pendekatan yang berbeda. Jadi saya pikir itu layak diposkan.
Ini menggunakan
e%
operator CJam , yang menghasilkan output dengan string format gaya printf.sumber
Matlab / Oktaf, 108
172byteCobalah online
sumber
JavaScript (ES6), 142
Side note mixmat jawaban dalam ß menunjukkan cara yang lebih baik untuk menyelesaikan tugas ini, dan dapat dengan mudah diimplementasikan di JS memberikan skor yang lebih baik. Saya berharap saya telah memikirkannya.
Edit Menambahkan teks yang hilang (saya salah membaca tantangan)
Tes menjalankan cuplikan di bawah ini di peramban yang mendukung EcmaScript 6
sumber
Fourier,
166142 byteIni memiliki salah satu jumlah byte tertinggi, tetapi saya penggemar berat Fourier dan ingin mencoba solusi saya. Tidak terlalu dioptimalkan.
Hancurkan:
Setel variabel d menjadi 45, kode ASCII untuk tanda hubung. Karakter ini dicetak sangat banyak sehingga menghemat beberapa byte untuk mendeklarasikannya di sini.
Atur akumulator ke nol dan loop di dalam tanda kurung sampai mencapai 30.
Cetak "Prediksi kejahatan:".
Cetak SSN + baris baru yang benar-benar acak.
Cetak "Memanggil:".
Cetak nomor telepon yang mengikuti pedoman: 1-xxx-555-xxxx
Cetak dua baris baru untuk memulai kembali.
sumber
Pyth, 67 byte
Baris baru itu penting, dan termasuk dalam jumlah byte. Cobalah di sini .
sumber
Haskell, 150 byte
sumber
JavaScript (ES6),
130123 byteMengambil solusi ß minxomat selangkah lebih maju, saya telah mengganti
0
s dengan jumlah0
s yang seharusnya ada di sana. Kode menggunakan angka-angka itu untuk menarik jumlah digit yang benarMath.random()
, menghemat bit dalam proses.Cobalah:
Seperti biasa, saran diterima!
sumber
Java, 246 byte
Dengan jeda baris:
Ini awal. Alih-alih menghasilkan angka acak saya menggunakan angka 3 digit atau 4 digit acak.
sumber
R,
151146 atau 144 BytesKode
Uji secara online .
Tidak disatukan
Saya pikir ada banyak ruang untuk memperbaiki tetapi saya tidak baik bermain-main dengan R.
Sunting 1: ubah
runif(16,max=10)
kerunif(16,,10)
.Saya telah melakukan kode lain (
147144 bytes) dengansprintf
tetapi saya tidak berpikir itu banyak kode R-like.Pendekatan lain (149 byte):
sumber
PHP ,
144143 Bytessumber
GolfScript, 91 byte
Cobalah online.
sumber
C #,
280263246 byteGolf:
Bertakuk:
Baru di Codegolf, kiatnya diterima!
sumber
h(999)
akan menghasilkan nomor dari000
ke998
inklusif, sehingga berarti ini tidak cukup memukul semangat spesifikasi. Saya mengalami masalah yang sama .Hassium , 230 Bytes
Diperluas:
sumber
Ruby, 98 karakter
Contoh dijalankan:
sumber
JavaScript,
146141sumber
pra-ES6 Javascript, 128
Saya merasa seperti garis dapat dihapus entah bagaimana, tetapi tidak yakin.
sumber
Pyth, 73 byte
Demo
sumber
Julia, 120 byte
Tidak Terkumpul:
sumber
Ruby,
9088 byteCobalah online.
sumber
?N
saja. Tidak perlu tanda kurung, di sekitarrand
parameter.PowerShell,
120108103102 BytesDipersingkat beberapa byte lagi dengan mengatur split-loop sebagai gantinya menjadi blok kode yang output ke array@(..)
dan bergabung kembali.Dieliminasi
@
dengan mengingat bahwa(...)
menunjuk kode yang dieksekusi sebelum-join''
pula.Ini menghilangkan kebutuhan untuk menetapkan
$a
variabel. Juga memperhatikan bahwa karena cara kerja-split
fungsionalitas, kode sebelumnya mengeluarkan terlalu banyak digit untuk nomor telepon, jadi dapatkan penghematan byte gratis di sana dengan menyusut ke1-XXX-555-XXX
. Itu dibuat untuk kesalahanRandom 9
yang benar-benar mengambil secara acak0-8
, jadi kita perlu menentukanRandom 10.
Sooo dang dekat dengan dua digit, tapi saya tidak yakin di mana dimungkinkan untuk bermain golf dari
empat3 byte ...Sebelumnya, 108
Persingkat kode beberapa byte dengan bukannya memisahkan string pada
X
, kemudian mengulang kembali melalui array string yang dihasilkan dan menyatukan setiap entri denganRandom
digit untuk membangun string keluaran akhir kami$a
. Perhatikan bahwa kami tidak dapat melakukan sesuatu seperti"string".replace("x",$(Random 9))
karenaRandom
hanya akan dipanggil sekali, jadi Anda akan memiliki1-222-555-2222
nomor telepon, misalnya.Sebelumnya, 120
Cukup kompetitif untuk bahasa verbal, berkat spesifikasi keluaran yang luas (yaitu,
000-00-0001
diperlakukan sebagai SSN yang valid) dan.ToString()
algoritma pemformatan yang sangat kuat yang digunakan PowerShell. PowerShell juga mengeluarkan\r\n
setelah setiap keluaran string, sehingga persyaratan untuk baris baru di antara iterasi hanya sederhana""
.Perhatikan bahwa ini menggunakan yang tersirat
Get-
di depanRandom
, jadi ini mungkin sangat lambat pada beberapa platform / implementasi.sumber
Befunge-98, 170
Saya pikir ini masih bisa diturunkan sedikit. Tapi setidaknya saya mengalahkan C #. Diuji di befungius.aurlien.net .
sumber
Python 2,
151150 byteGolf seperti yang saya bisa dapatkan metode ini.
sumber