วิธีรับจำนวน


10

ได้รับการป้อนข้อมูลของหมายเลขแรกและจำนวนที่สอง (ทั้งจำนวนเต็มบวกศูนย์ exluded) ที่กำหนดในหลายวิธีที่คุณสามารถทำออกมาสองคนแรกที่ใช้การดำเนินการดังต่อไปนี้+1, และ+2 *3การดำเนินการถูกนำไปใช้เพียงแค่จากซ้ายไปขวา

ตัวอย่าง:

  1. อินพุต: 1 2. ผลลัพธ์: 1. คือคุณทำได้แค่2ทำ+1อย่างเดียว

  2. อินพุต: 1 3. ผลลัพธ์: 3. เช่นคุณสามารถรับ 3 โดยทำ+2หรือ+1+1, หรือ*3

  3. อินพุต: 1 4. ผลลัพธ์: 4.

  4. อินพุต: 2 6. ผลลัพธ์: 6.

  5. อินพุต: 2 7. ผลลัพธ์: 9.

  6. อินพุต: 1 10. ผลลัพธ์: 84.

ในกรณีที่มีอยู่ไม่มีวิธีเช่น100 100หรือเอาท์พุทเป็น100 800

คุณสามารถป้อนข้อมูลเป็นอาร์เรย์หรือสตริงด้วยตัวคั่นที่สะดวกได้

ทางออกที่สั้นที่สุดชนะ


ดูเหมือนว่ามันอาจเป็นล่อลวงขอโทษถ้าเป็น - ไม่พบคำถามที่คล้ายกัน
nicael

4
สิ่งที่เกี่ยวกับอินพุตที่คำตอบควรจะไม่มีที่สิ้นสุด? เช่นอินพุตใด ๆ ที่จำนวนเต็มแรกเป็นลบเพราะคุณสามารถคูณสามแล้วเพิ่มกลับเป็นหมายเลขเดิมและทำซ้ำหลาย ๆ ครั้งตามที่คุณต้องการ
Peter Taylor

1
@ แพทริค: มันทำให้รู้สึกว่า ตั้งแต่วันที่ -1 ถึง 0 คุณสามารถสมัครได้*3 +2 +1หลายครั้งเท่าที่คุณต้องการจากนั้นสมัคร+1เพื่อรับ 0
Deusovi

@ คำพูดจากงาน Fair, จำกัด อยู่ที่ตัวเลขในเชิงบวก
nicael

คำตอบ:


1

Pyth - 26 24 ไบต์

ดูเหมือนว่าจะมีข้อผิดพลาดใน Pyth ที่ทำให้การป้อนข้อมูลในลำดับที่ไม่ถูกต้อง แต่ก็ไม่ควรสำคัญ

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

Test Suite

( 1 10หมดเวลาออนไลน์ แต่ใช้งานบนคอมพิวเตอร์ของฉัน)


หมดเวลาแล้วด้วยจำนวนน้อย ๆ เหรอ? ฮะ.
nicael

@nicael ใช่มีเพียง 59K วิธีที่ฉันตรวจสอบ10แต่ pyth เป็น slooooooow
Maltysen

6

Javascript ES6, 45 44 ไบต์

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

ตัวอย่างการทำงาน:

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

1
การใช้พารามิเตอร์เริ่มต้นที่น่าสนใจ แต่เป็นที่ยอมรับว่าจะไม่บันทึกไบต์ใด ๆ ที่นี่ =Bและ(B=)( bละเว้นตามวัตถุประสงค์) คือ 6 ตัวอักษรและทางเลือกจะผ่าน,b3 ครั้งไปยังการโทรซ้ำซึ่งเป็น 6 ตัวอักษร อย่างไรก็ตามงานที่ดี
Patrick Roberts

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.