Serial TV 80-an Knight Rider menampilkan mobil yang cerdas dan sadar diri yang disebut KITT. Salah satu aspek khas dari mobil ini adalah bar pemindai yang dipasang di depan yang memungkinkan KITT untuk "melihat" (dan yang mencurigakan akrab bagi penggemar serial TV lain sebelumnya ).
Pemindai memiliki delapan lampu seperti yang terlihat dalam gambar ini:
Lampu "bergerak" seperti yang ditunjukkan dalam gambar animasi ini .
Tugas Anda, seperti yang sudah Anda tebak sekarang, itu untuk membuat ulang bar pemindai dengan lampu bergerak dalam seni ASCII.
Tantangan
Diberikan bilangan bulat t
, mengeluarkan status bilah pemindai saat itu juga, yang didefinisikan sebagai berikut:
- Pemindai terdiri dari delapan lampu.
- Setiap saat salah satu lampu aktif , dan ditampilkan sebagai
#
. Lampu yang aktif pada waktut-1
dant-2
sekarang redup , dan ditampilkan sebagai+
; kecuali mereka bertepatan dengan yang aktif saat ini. Sisa lampu mati , dan ditampilkan sebagai-
. - Lampu aktif bergerak dari kiri ke kanan, lalu ke kanan ke kiri.
Output yang tepat untuk masing-masing t
dirinci di bawah ini.
0 --> #++----- % The leftmost light is active, and it just came from the right.
% The two neighbouring lights are dimmed
1 --> +#------ % The active light has bounced to the right, and it is covering
% one of the two lights that should be dimmed. So there is only
% one dimmed light
2 --> ++#----- % The active light has moved one more step to the right, and the
% two trailing dimmed lights are visible
3 --> -++#----
7 --> -----++#
8 --> ------#+ % The active light has bounced to the left
9 --> -----#++
10 --> ----#++-
13 --> -#++----
14 --> #++----- % Same as 0
15 --> +#------ % Same as 1
Untuk nilai negatif dari t
siklus diperpanjang:
-1 --> -#++---- % Same as 13
-2 --> --#++--- % Same as 12
Aturan tambahan
Anda dapat menulis suatu program atau fungsi.
Output dapat berisi spasi spasi tambahan dan baris baru terkemuka.
Kode terpendek dalam byte menang.
Jawaban:
Jelly ,
2822 byte-6 byte berkat bantuan @Dennis! (terbalik dulu, lalu gabungkan)
TryItOnline
Atau lakukan empat osilasi dengan bonus easter egg !!
Bagaimana?
sumber
JavaScript (ES6),
6567 byteEDIT - Tetap untuk nilai negatif. Sekarang mendukung
N >= -8,000,000,000
, yang seharusnya memberikan perpanjangan waktu operasi yang cukup baik dalam mode AUTO CRUISE. :-)Versi animasi
Tampilkan cuplikan kode
sumber
n>=7
bukannyan/7&1
n
ada di[0 ... 13]
, tetapi tidak.JavaScript (ES6),
9087 byte"- + ##" diindeks oleh bitmask, di mana bit 1 menandakan cahaya aktif dan bit 0 menandakan cahaya redup. Aktif / meredup sekarang dihitung dengan menambah dan mengurangi posisi saat ini dari posisi yang diinginkan dan melihat apakah salah satu hasilnya dapat dibagi 14.
sumber
Python, 53 byte
Membuat string
-----++#------
, membutuhkan jendela panjang-8 tergantung pada modulo input 7, membalikkan untuk input modulo 14 yang terletak antara 1 dan 7.sumber
> <> , 51 + 3 = 54 byte
Input diharapkan pada stack saat program mulai, jadi +3 byte untuk
-v
flag.Cobalah online!
sumber
MATL,
343027 byte7 byte disimpan berkat @Luis
Cobalah secara Online!
Contoh lain dengan 25 langkah pertama
Penjelasan
sumber
Pyth,
3328 byteDisimpan 5 byte dengan menghitung semua lampu dengan cara yang sama.
Mulai dengan lampu mati semua dan menyalakannya satu per satu.
Cobalah online!
sumber
JavaScript, 204 byte
Uji
sumber
JavaScript (ES6), 72
Kurang golf
Uji
sumber
Perl, 65 byte
Termasuk +1 untuk
-n
Jalankan dengan nomor di STDIN:
kitt.pl
:Tidak terlalu kompetitif tetapi pantas mendapat posting karena metode yang aneh
sumber
Perl,
5655 byteTermasuk +3 untuk
-p
Jalankan dengan nomor di STDIN:
kitt.pl
:Masukkan ini ke dalam file tanpa baris terakhir (tambahkan final
;
ke program jika Anda tidak ingin repot dengan itu). Sayangnya menggunakan literal^F
tidak berhasilProgram ini berisi 2 karakter komentar (abaikan
#!
baris). Salah satunya adalah komentar dan sebenarnya mendapatkan satu byte ....Menerapkan algoritma sisa cahaya aktual
sumber
Kanvas , 23 byte
Coba di sini!
sumber