Saya lapar. Mari kita microwave sesuatu. Diberikan input numerik antara 1 dan 4 digit, hasilkan jumlah detik yang harus dijalankan microwave.
Detail
Triknya adalah mencari tahu apakah pengguna memasukkan detik atau kombinasi detik dan menit. Yang dan puluhan tempat harus ditafsirkan sebagai detik dan ratusan dan ribuan tempat harus menit. Misalnya, nilai 1234
harus ditafsirkan sebagai 12 menit, 34 detik dan 9876
harus 98 menit, 76 detik. Mengetik 130
dan 90
keduanya menghasilkan waktu memasak 90 detik.
Berikut adalah beberapa input dan output lainnya:
- 1 = 1
- 11 = 11
- 111 = 71
- 1111 = 671
- 9 = 9
- 99 = 99
- 999 = 639
- 9999 = 6039
Aturan
Ini adalah kode-golf , jadi program terpendek dalam byte menang. Tidak ada celah standar. Entri yang menang harus mengembalikan jawaban yang benar ketika diberikan input integer dari 1 hingga 9999.
9876
?190
?Jawaban:
Python 2 , 19 byte
Cobalah online!
sumber
Japt , 6 byte
Uji secara online!
ìL
mengkonversi ke basis-100, danì60
mengkonversi kembali ke basis 60, menghasilkanfloor(n/100)*60 + n%100
. Juga berfungsi dengan jam (10000 -> 3600
, jumlah detik dalam satu jam).sumber
C, C ++, Java, C #, D: 36 byte
D: 35 byte
C: 28 byte
Pertama kali saya punya jawaban sesingkat itu!
D dapat memiliki optimasi khusus karena sistem template golf:
C memiliki optimasi khusus dengan int implisit:
Kode untuk diuji
Dalam C (harus menyertakan
stdio.h
):TIO Link
Dalam C ++ (harus menyertakan
iostream
):Cobalah online!
Di Jawa :
Cobalah online!
Dalam C #
Di D (harus mengimpor
std.stdio
) (tepatnya, saya tidak tahu cara menggunakan array di D):TIO Link
sumber
foreach
dalam D, saya hanya lupa bagaimana menggunakannya dengan sedih)Pyth -
98 byteMengonversi input ke basis 100, lalu mengartikannya sebagai basis 60 angka.
Test Suite .
sumber
TI-Basic (83 series), 8 byte
Membutuhkan OS versi 1.15 atau lebih tinggi.
sumber
dc , 10 byte
Cobalah online!
Penjelasan: di dc ketika Anda mendorong sth. pada tumpukan itu berjalan di atas
sumber
Bash bc + sed,
3028 byte-2 byte terima kasih kepada @seshoumara .
Cobalah online!
Mengambil input dari stdin. Pergi untuk pendekatan yang lebih kreatif: menyisipkan
*60+
sebelum 1 atau 2 digit terakhir, dan menambahkan0
ke awal untuk memperhitungkan input dengan hanya 1 atau 2 digit. Hasilnya kemudian diteruskan kebc
.sumber
-r
dan menggunakan\?
, Anda bisa kehilangan 2 byte.C (gcc) , 50 byte
Cobalah online!
sumber
f(t){return t%100+t/100*60;}
. Fungsi diizinkan untuk mengambil input sebagai argumen dan output melalui nilai kembalinya.f(i,x){x=i/100*60+i%100;}
f(i,x){x=i-i/100*40;}
Perl 5, 15 + 1 (-p) byte
Cobalah online
sumber
Java 8, 13 byte
Port rumus luar biasa Python 2 @ovs .
Coba di sini.
sumber
JavaScript, 21 byte
Cobalah online!
sumber
J , 12 byte
Ini adalah solusi Python 2 ovs yang dinyatakan dalam J. Terdiri dari hook dan fork:
Cobalah online!
sumber
60#.0 100#:]
.Batch, 23 byte
sumber
Haskell , 18 byte
Cobalah online!
Pelabuhan Anotha.
Solusi pointfree, 21 byte
sumber
Labirin , 19 byte
Cobalah online!
Penjelasan
IP kemudian mencapai jalan buntu dan mulai bergerak mundur. Ketika mencapai
/
itu mencoba divisi dengan nol yang mengakhiri program.sumber
Jeli , 5 byte
Sebagai tautan monadik (terima kasih untuk informasi sebelumnya, caird!):
Cobalah online!
... Atau sebagai program lengkap:
Ini dapat diangkut dengan mudah ke 05AB1E, jadi:
05AB1E , 5 byte
Cobalah online!
Cukup konversikan integer input ke basis 100 dan kemudian ubah hasilnya dari basis 60 ke integer. Oleh karena itu, ini setara dengan Input% 100 + 60 * ⌊ Input / 100⌋
sumber
Excel VBA, 29 Bytes
Fungsi jendela langsung VBE anonim yang mengambil input dari jarak
[A1]
dan keluaran ke jendela langsung VBE.sumber
APL (Dyalog) ,
1110 byteCobalah online!
Bagaimana?
0 100⊤
- disandikan di basis 100, berhenti di LSB kedua, memproduksi secara efektifn ÷ 100, n % 100
.60⊥
- dekode di basis 60sumber
PARI / GP , 16 byte
Mudah:
Sayangnya metode yang bagus ini terlalu panjang untuk digunakan:
sumber
Memaksa ,
109 byteKevin mengungguli saya dalam bahasa saya sendiri ... (menggunakan pendekatan dari jawaban ovs )
Cobalah online!
10 byte
Cobalah online!
11 byte
Untuk satu byte lagi kita bisa menggunakan
Input % 100 + 60 * ⌊Input / 100⌋
pendekatan:Cobalah online!
sumber
2dH/40*-#
. Belum pernah diprogram di Pushy sebelumnya, tetapi sepertinya bahasa yang cukup keren. :)05AB1E , 9 byte
Cobalah online!
Penjelasan:
Mungkin ada beberapa trik dengan konversi basis yang dapat dicapai di 05AB1E, tetapi saya tidak dapat menemukannya.
sumber
bash, 20 byte
Cobalah online
sumber
Retina , 11 byte
Cobalah online!
Input dan output di unary . Test suite mengkonversi dari dan ke desimal untuk kenyamanan.
Melakukan konversi basis semacam ini hanya untuk dua digit sangat mudah dilakukan di unary. Kami hanya mencocokkan run 100
1
dan menggantinya dengan 601
detik. Apa pun yang tersisa akan sesuai dengan dua digit terakhir dalam representasi desimal dan tetap tidak berubah.sumber
Alice , 19 byte
Cobalah online!
Penjelasan
Sayang sekali saya menghapus divmod dari bahasa, saya kira ...
Ini hanya kerangka kerja biasa untuk program linier dengan I / O desimal yang beroperasi murni dalam mode Kardinal (aritmatika).
sumber
Bima Sakti , 10 byte
pemakaian:
./mw code.mwg -i 9999
Penjelasan:
sumber
R , 21 byte
Cobalah online!
sumber
scan
karena sebagian besar jawaban hanya menganggap variabel sudah ditentukan.Common Lisp, 34 byte
Cobalah online!
Port lain dari formula @ovs .
sumber
REXX, 25 byte
(Hanya terjemahan lain dari @ovs)
sumber
05AB1E , 7 byte
Cobalah online!
Penjelasan
sumber
Python Simbolik , 66 byte
Cobalah online!
Penjelasan
sumber