Daftar bilangan bulat yang diberikan {0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4}
. Bagi mereka yang tertarik angka-angka ini digunakan dalam perhitungan hari kerja.
Hari Kerja = (m[n] + d + y + y>>2 + y/400 - y/100) % 7;
, di mana m[n]
- ekspresi yang saya cari, d
- hari dalam sebulan, y
-year - (month <= 2)
.
Bangun ekspresi yang terdiri dari operator aritmatika, logika, dan bitwise, yang akan menghasilkan bilangan n
bulat integer positif m
sehingga m % 7
sama dengan angka ke-n dalam daftar.
Cabang, operator ternary, pencarian tabel dan pointer tidak diperbolehkan.
Nilai:
1 - untuk | & ^ ~ >> <<
operator
1.1 - untuk + - < > <= >= == != ! && ||
operator
1.2 - untuk *
operator
1.4 - untuk / %
operator
Jawab dengan kemenangan skor terendah.
Secara pribadi saya telah menemukan:
(41*n)>>4+((n+61)>>4)<<2
dengan skor 6.4. Saya pikir ini akan sulit ditemukan sehingga disediakan ekspresi sendiri untuk memulai.
sumber
table lookups
Ungkapan menarik saya kira ...Jawaban:
2
2.2Saya suka aritmatika presisi sewenang-wenang.
Atau, jika Anda tidak suka hex,
Uji:
sumber
4*n
saja, dan menyimpan 0,2 poin dengan menuliskannyan<<2
?7
. Kandidat terbaik saya dari divisi lantai integerconst/n
mengalami kontradiksi dengann=4
dann=8
.const%n
yang bisa memuaskan semuanya kecuali n = 1,2 dan 3.2.0
atau (skor 2.2):
Semua ditemukan dengan kekerasan :-)
sumber
for
loop ganda , menguji semua nilai p, q untuk formula(p >> i) ^ q
, kemudian pergi untuk minum kopi, dan 10 mn setelah datang untuk membaca hasilnya.35.3
Saya menduga ini mungkin metode yang paling tidak efisien untuk membuat daftar:
Saya baru saja menghitung regresi polinomial. Saya tergoda untuk melihat metode mengerikan apa yang bisa dicoba.
Khususnya, saya bisa menghemat 3,3 poin jika hasilnya dibulatkan. Pada titik ini, saya pikir itu tidak penting.
sumber
3.2
Solusi berbasis nol:
Satu solusi berbasis:
Saya awalnya berpikir bahwa
%7
operasi akan dihitung juga dan%
menjadi operasi yang mahal di sini, saya mencoba menyelesaikannya tanpa itu.Saya sampai pada hasil 3,2 seperti ini:
Saya akan tertarik pada optimasi menggunakan pendekatan ini (tanpa
%
). Terima kasih.sumber
(0426415305230 >> (i*3)) & 7
? Anda dapat melihat digit output dalam urutan terbalik.Python (3)
Karena ada beberapa dari pertanyaan-pertanyaan ini hari ini, saya memutuskan untuk membuat program untuk secara otomatis menyelesaikannya dalam 3 (atau 2) token. Inilah hasil untuk tantangan ini:
Bukti bahwa ini bekerja:
sumber
&
.