Pertanyaan ini diajukan kepada Anda oleh permainan yang ingin saya mainkan ketika terjebak dalam rapat telepon yang panjang.
Diberikan dua kali dari jam 24 jam (dari 00:00 hingga 23:59), berapa banyak persamaan matematika yang valid dapat dihasilkan dengan semua waktu di antara hanya menggunakan operasi aritmatika dasar?
Input: dua string empat digit (tanpa titik dua) mewakili waktu yang valid dalam siklus 24 jam.
Contoh:
Untuk input = 0000, 1300
03:26 produces: "0+3*2=6" and "03*2=6" etc.
11:10 produces quite a few, including: "1*1=1+0" and "1=1=1^0" and "1=11^0" etc.
12:24 produces: "1/2=2/4" and "1=(2*2)/4" etc.
Operasi yang valid adalah:
- tambahan
- pengurangan
- perkalian
- pembagian (floating point)
- eksponensial
- faktorial
Simbol yang diijinkan lainnya
- Tanda kurung
- Tanda-tanda yang sama
Kode terpendek menang.
Catatan
- Tujuannya adalah untuk menemukan jumlah ekspresi yang valid antara dua kali, bukan jumlah kali yang berisi ekspresi yang valid.
- Dua kali yang diberikan sebagai input termasuk dalam rentang waktu.
- Anda dapat mengelompokkan digit dengan cara apa pun yang memungkinkan, jadi "1223" dapat menjadi "12 23" atau "1 2 23" atau "1 223" dll. Dll.
- Anda dapat menggunakan sebanyak mungkin tanda kurung.
- Anda dapat menggunakan lebih dari satu
=
tanda. Misalnya, waktu11:11
memiliki ekspresi yang valid1=1=1=1
. - Jika pertama kali terjadi secara kronologis setelah kedua kalinya, rentang waktu akan membungkus seolah-olah menyeberang ke hari berikutnya.
- Angka-angka harus tetap dalam urutan aslinya - Anda tidak dapat memesan ulang digit.
- Saat mengelompokkan angka, angka nol mungkin benar-benar digit paling depan, dalam hal ini, angka tersebut diabaikan ("0303" dikelompokkan sebagai "03 03" hanya dua digit dengan nilai 3.)
- Anda TIDAK BISA menggunakan tanda minus sebagai negasi unary. Karena itu, "12:01" TIDAK menghasilkan "1-2 = - (01)", tetapi TIDAK menghasilkan "1-2 = 0-1".
- Anda TIDAK BISA menambahkan titik desimal ke angka. Karena itu, "12:05" TIDAK menghasilkan "1/2 = 0,5".
- Tidak ada rantai faktorial - satu digit dapat diikuti oleh paling banyak satu "!", Tidak lebih, jika tidak, berkali-kali akan memiliki solusi tak terbatas. Mis: "5!" valid tetapi "5 !!" tidak valid.
code-golf
expression-building
clock
nobillygreen
sumber
sumber
0000 1300
haruskah persamaan berasal0000
dan1300
dimasukkan dalam hitungan?Jawaban:
Python3, 363 karakter
Karena tidak ada jawaban yang diberikan sampai hari ini, saya menyerahkan apa yang saya dapatkan. Sayangnya, coba / kecuali blok terlalu gemuk, saya tidak menemukan cara untuk menyelamatkan karakter di sana. Ini benar-benar rumit dengan loop bersarang di sana, tidak semua dapat dilakukan dengan pemahaman daftar saya pikir, tapi mungkin seseorang dapat memberitahu saya caranya.
Namun, saya membatasi tantangan saya sendiri hanya menggunakan matematika dasar '+ - * /' dan tidak ada tanda kurung.
Kode lengkap saya (harap sesuatu yang jelas) pada CodeGolf ini dapat ditemukan di pastebin saya .
sumber