Cara untuk mendapatkan nomornya


10

Mengingat masukan dari angka pertama dan angka kedua (keduanya bilangan bulat positif, zero dikenakan pemotongan), menentukan dalam berapa banyak cara Anda bisa membuat keluar kedua dari yang pertama, menggunakan tindakan berikut: +1, +2dan *3. Operasi hanya diterapkan dari kiri ke kanan.

Contoh:

  1. Input: 1 2. Output: 1. Yaitu, Anda hanya bisa mendapatkan 2dengan melakukan +1, jadi satu cara.

  2. Input: 1 3. Output: 3. Yaitu, Anda bisa mendapatkan 3 dengan melakukan +2atau +1+1, atau*3

  3. Input: 1 4. Output: 4.

  4. Input: 2 6. Output: 6.

  5. Input: 2 7. Output: 9.

  6. Input: 1 10. Output: 84.

Dalam hal tidak ada cara, misalnya 100 100, atau 100 80, output 0.

Anda juga bisa mengambil input sebagai array, atau string dengan pemisah yang nyaman.

Solusi terpendek menang.


Sepertinya itu bisa menjadi penipuan, maaf jika itu - tidak menemukan pertanyaan serupa.
nicael

4
Bagaimana dengan input yang jawabannya harus tidak terbatas? Misalnya input apa pun di mana bilangan bulat pertama negatif, karena Anda dapat mengalikan tiga dan kemudian bertambah kembali ke nomor asli dan ulangi sebanyak yang Anda inginkan.
Peter Taylor

1
@ Patrick: Memang masuk akal. Mulai dari -1 dan pergi ke 0, Anda dapat menerapkan *3 +2 +1sebanyak yang Anda inginkan, kemudian melamar +1untuk mendapatkan 0.
Deusovi

@Peter Fair berkomentar, terbatas pada angka positif.
nicael

Jawaban:


1

Pyth - 26 24 byte

Tampaknya ada bug di Pyth yang membuatnya mengambil input dengan urutan yang salah, tetapi toh itu tidak masalah.

/m.vj;+sdzs^Lc3"+1+2*3"S

Test Suite .

( 1 10kehabisan waktu online, tetapi berfungsi di komputer saya).


Habis waktu, dengan jumlah kecil seperti itu? Hah.
nicael

@nicael ya, hanya ada 59K cara yang saya periksa 10, tetapi pyth slooooooow
Maltysen

6

Javascript ES6, 45 44 byte

f=(a,b=B)=>a<(B=b)?f(a+1)+f(a+2)+f(a*3):a==b

Contoh berjalan:

f(1,2)  -> 1
f(2,6)  -> 6
f(1 10) -> 84

1
Penggunaan parameter default yang menarik, meskipun diakui tidak menyimpan byte di sini. =Bdan (B=)( bdihilangkan dengan sengaja) adalah 6 karakter dan alternatifnya dilewatkan ,b3 kali untuk panggilan rekursif yang juga 6 karakter. Ngomong-ngomong, kerja bagus.
Patrick Roberts

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.