Saat ini di tempat kerja saya, kami pindah ke gedung baru. Itu seharusnya menjadi canggih dan memiliki lampu otomatis, jendela gulung otomatis, dan sekarang dikenal sebagai bangunan paling ramah lingkungan di kota ini.
Namun, itu tidak benar-benar bekerja dengan baik .. Jendela gulung kadang turun pada hari berawan dan naik ketika matahari mulai bersinar, dan lampu kadang-kadang menyebabkan efek disko dengan bergantian menghidupkan dan mematikan setiap 5-10 menit. Juga, kami tidak memiliki cara manual untuk mengendalikan jendela gulung ini, atau suhunya, TETAPI kami memiliki remote untuk lampu.
Namun remote ini datang tanpa instruksi manual dan mengandung sedikit lebih dari 20 tombol melakukan semua jenis hal kecuali untuk apa yang Anda inginkan ..
PS: Saya menulis tantangan ini 1,5 bulan yang lalu di Sandbox. Saat ini kami, agaknya, tahu bagaimana remote bekerja.
Satu keuntungan besar tentang bangunan ini, berada di luar 30 derajat Celcius, tetapi di dalamnya tetap berada pada suhu 21 kamar yang sama setiap saat.
Jadi, itulah intro, dan remote control untuk lampu menginspirasi tantangan ini.
Tantangan:
Katakanlah kita awalnya mematikan lampu:
L
Kemudian kami menekan semua jenis tombol dan mengeluarkan status lampu sesudahnya.
Kami menggunakan angka-angka berikut untuk berbagai fungsi kendali jarak jauh untuk lampu. Ketika simbol minus ada di depan angka itu, kita melakukan yang sebaliknya.
1
= ON;-1
= MATI.2
= Meningkatkan kekuatan sebesar 25%;-2
= Penurunan (redup) kekuatan sebesar 25%.3
= Tingkatkan spread sebesar 50%;-3
= Kurangi penyebaran sebesar 50%.4
= Mengalihkan jenis cahaya.
Jadi, ini semua cukup kabur, jadi mari kita sedikit lebih dalam tentang apa arti setiap hal:
Jadi, -1
(MATI) cukup jelas, dan 1
akan masuk ke keadaan ON awal (50% untuk 2
dan 50% untuk 3
):
//
//
L ====
\\
\\
2
dan -2
seberapa jauh perjalanan cahaya ( ==
ditambahkan untuk setiap 25%):
0% (equal to a light bulb that is OFF)
L
25%
L ==
50%
L ====
75%
L ======
100%
L ========
3
dan -3
seberapa jauh cahayanya menyebar:
0%:
L ====
50%:
//
//
L ====
\\
\\
100%:
|| //
||//
L ====
||\\
|| \\
(CATATAN: Kapan 2
dan 3
keduanya 100%, Anda akan memiliki status ini:
|| //
|| //
|| //
||//
L ========
||\\
|| \\
|| \\
|| \\
4
adalah untuk mengaktifkan jenis cahaya.
Default:
//
L ==
\\
After toggling (note the single space before '/' instead of two):
/
L --
\
Memasukkan:
Anda akan menerima input yang berisi kemungkinan penekanan tombol. Sebagai contoh:
12-34
Keluaran:
Keadaan lampu lampu setelah semua tombol input ditekan sub-sekuensial. Jadi dengan contoh input di atas, kami memiliki output sebagai berikut:
L ------
Aturan tantangan:
- Input hanya berisi
1234-
(dan tidak pernah-
sebelumnya4
). - Anda tidak akan pernah bisa di bawah 0% atau di atas 100%. Jika suatu angka akan naik / turun di luar batas ini, Anda dapat mengabaikannya.
- Ketika lampu dimatikan, Anda dapat mengabaikan tindakan apa pun dan ketika dinyalakan kembali, lampu akan kembali ke kondisi ON-awal (50% untuk keduanya
2
dan3
, dan default4
). Sebagai contoh:12-1-341
hanya akan mencetak keadaan ON awal yang disebutkan di atas. (TIPS: Anda dapat mengabaikan semuanya sebelum1
input final - tidak termasuk-1
.) - Jarak spasi yang sama dengan panjang cahaya atau satu garis trailing baru tidak dibatasi. Namun menambahkan baris baru yang tidak perlu tambahan.
- Anda diizinkan mengambil input sebagai daftar bilangan bulat alih-alih satu string. Jadi alih-alih
12-34
, Anda bisa memiliki[1,2,-3,4]
input.
Aturan umum:
- Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang.
Jangan biarkan bahasa kode-golf mencegah Anda memposting jawaban dengan bahasa non-codegolf. Cobalah untuk memberikan jawaban sesingkat mungkin untuk bahasa pemrograman 'apa pun'. - Aturan standar berlaku untuk jawaban Anda, jadi Anda diperbolehkan menggunakan STDIN / STDOUT, fungsi / metode dengan parameter yang tepat, program lengkap. Panggilanmu.
- Celah default tidak diperbolehkan.
- Jika memungkinkan, silakan tambahkan tautan dengan tes untuk kode Anda.
- Juga, silakan tambahkan penjelasan jika perlu.
Kasus uji:
12-34
L ------
12-1-341
//
//
L ====
\\
\\
14-3224333-2
|| //
|| //
||//
L ======
||\\
|| \\
|| \\
142-1-314-3-322
L --------
1324-2-3
/
/
L ----
\
\
134
| /
|/
L ----
|\
| \
1-2-2-214-3-3-3
L ----
134
?4
). Terima kasih untuk bertanya.1
ditekan, apakah parameternya diatur ulang?Jawaban:
Python 2, 221 byte
Ini akhirnya menjadi lebih lama dari yang saya harapkan. Baris pertama menghitung status lampu, sisanya menerapkan pencetakan.
Input diberikan melalui STDIN dalam bentuk array.
Lihat kasus uji pada ideone
sumber
R,
323320 byteTidak Disatukan:
membaca sebaris input (bilangan bulat dipisahkan dengan spasi)
menginisialisasi variabel a (on-ness), b (kecerahan), c (lebar), d (tipe balok).
d
adalah nol atau dua, yang berarti kita dapat memanggil jika (d) lebih lama daripada jika lebih lama (d> 1) atau serupa dan menyimpan beberapa byte.Cara menulis golf-y di
while(length(z))
mana z adalah vektor integer.Sisa baris pertama menangani input melalui
switch
pernyataan. Baris kedua dicetak.Ada kemungkinan bahwa beberapa
<-
dapat diganti dengan=
, tapi saya pikir Anda dimakan hidup-hidup dengan pelingkupan leksikal ...Perhatikan juga bahwa dalam R, backslash perlu di lepas.
c*(c>0)
adalah cara menulis golf-ymax(c,0)
yang menyelamatkan karakter.Jika lampu tidak menyala, maka karena
*
memiliki prioritas lebih rendah daripada:
,for(i in a*b:-b)
loop hanya beralih0:0
.Memperbarui; disimpan 3 byte dengan mengganti loop di baris pertama dengan for (daripada sementara). Perhatikan bahwa
1:sum(1|z)
karakter lebih sedikit daripada1:length(z)
atauseq_along(z)
.seq(z)
akan bekerja dalam banyak kasus, tetapi tidak ketikaz
panjangnya satu. Solusi yang diberikan tidak akan bekerja untuk input dengan panjang nol tapi saya harap itu di luar lingkup kompetisi.sumber
Kotlin , 445 byte
Golf Kotlin pertama saya, 38 byte kurang dari Java :)
Dengan ruang putih dan tes:
Menariknya, daripada mendefinisikan fungsi secara normal dan
print
ataureturn
string yang dibuat, itu lebih pendek untuk menggunakan penugasan fungsi (yangfun f() =
dari lambda yang dievaluasi. (Apakah deskripsi itu masuk akal?)Saya hanya berharap SE memiliki highlight sintaksis Kotlin yang tepat
sumber
Java 8,
484483452446440 byteAkhirnya .. Ok, tantangan saya sendiri sedikit lebih sulit dari yang saya harapkan ..; P
Ini tanpa diragukan lagi dapat golf dengan menggunakan pendekatan yang sama sekali berbeda .. Saya sekarang pertama-tama menentukan apa yang harus dilakukan, dan kemudian mencetaknya. Pencetakan sebenarnya adalah yang paling sulit dari tantangan ini, imho.
-6 byte terima kasih kepada @ceilingcat .
Penjelasan:
Coba di sini.
sumber
Batch, 552 byte
Catatan:
set v=
mengandung satu spasi tambahan danset s=
mengandung tiga. Ini benar-benar aneh, karena Anda tidak dapat dengan mudah mencetak sejumlah variabel|
dalam Batch, jadi Anda harus menggunakan placeholder dan menggantinya dalam pernyataan gema.sumber
05AB1E , 106 byte
Input sebagai daftar bilangan bulat.
Cobalah secara online atau verifikasi semua kasus uji .
Penjelasan:
Kami sekarang memiliki string:
Maka kita akan:
Lihat ini 05AB1E ujung tambang (bagian Cara kompres bilangan bulat besar? Dan Cara daftar bilangan bulat kompres? ) Untuk memahami mengapa
•Wθ¨S9ƒTª»þúÙ•6в
adalah[5,3,2,2,2,2,2,2,2,2,4,1,1,0,0,4,1,1,3,0,0,4,1,1,3,3,0,0,4,1,1,3,3,3,0,0]
; danŽ8Ã
adalah2234
.sumber