পাঁচ কিউবের যোগফল


33

একটি পূর্ণসংখ্যা দেওয়া হয়েছে, পাঁচটি নিখুঁত কিউবস আউটপুট করুন যার যোগফল inte নোট করুন কিউবস ইতিবাচক, নেতিবাচক বা শূন্য হতে পারে। উদাহরণ স্বরূপ,

-10 == -64 - 64 + 64 + 27 + 27

সুতরাং ইনপুট জন্য -10আপনি আউটপুট পারে [-64, -64, 64, 27, 27], যদিও অন্যান্য সমাধান সম্ভব। মনে রাখবেন আপনার কিউবগুলি আউটপুট করা উচিত, সংখ্যাগুলি কিউব করা হচ্ছে না।

একটি সমাধান সর্বদা বিদ্যমান - আপনি নিজের জন্য এটি বিস্মিত হতে পারে। এটি আরও অনুমান করা হয়েছে যে চার কিউব যথেষ্ট।


দুটি প্রশ্ন: আমরা কোনও ফলাফল আউটপুট করতে পারি, বা শুধুমাত্র সবচেয়ে ছোট? জন্য -10আরেকটি সম্ভাব্য সমাধান হতে পারে -1000+4574296+4410944-4492125-4492125উদাহরণস্বরূপ। এবং এটা আউটপুট করার অনুমতি দেওয়া হয় --বা +-পরিবর্তে +/ -যথাক্রমে (অর্থাত 3 = 27+-27+-125--64--64পরিবর্তে 3 = 27-27-135+64+64)?
কেভিন ক্রুইজসেন

@ কেভিন ক্রুজসেন যে কোনও ফলাফল ঠিক আছে। যদি আপনি আউটপুট পছন্দ করেন তবে --5আমি কোনও অভিব্যক্তি আউটপুট নেওয়ার নিয়ম অনুসারে বলব না ।
এক্সএনআর

@ কেভিন ক্রুইজসেন আপনার +চিহ্নের সাথে কেবল একটি সংখ্যা প্রকাশ করতে হবে না just
xnor

-10 = -64 - 64 + 64 + 27 + 27বা-10 = -343 + 0 -8 +125 +216
অ্যাঙ্গস

3
আকর্ষণীয় দ্রষ্টব্য: 3 টি পর্যাপ্ত নয় (কিছু সংখ্যক উপস্থাপনযোগ্য নয়) তবে কিছু নম্বর রয়েছে যার প্রতিনিধিত্ব অজানা (যেমন 33)।
এএসএলং ফলস

উত্তর:


16

ব্র্যাচল্যাগ , 18 বাইট

∧5~lLȧᵐ≥₁∧L^₃ᵐ.+?∧

এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

আমরা মূলত সমস্যাটি বর্ণনা করি, অতিরিক্ত সীমাবদ্ধতার সাথে আমরা আউটপুট তালিকাটি মাত্রার পরিপ্রেক্ষিতে বৃদ্ধি না করানো চাই: এটি ব্র্যাচল্যাগকে শেষের মানটির উপর অসীম ব্যাকট্র্যাকিংয়ের পরিবর্তে 5 টি মানের সমস্ত সম্ভাব্য সংমিশ্রণে সঠিকভাবে ব্যাকট্র্যাক করতে বাধ্য করে তালিকার উপাদান।

∧                ∧    (disable some implicit stuff)
 5~lL                 L is a list of length 5
    Lȧᵐ≥₁             L must be a non-increasing list in terms of magnitude
         ∧
          L^₃ᵐ.       The output is L with each element cubed
              .+?     The sum of the output is the input

বিভিন্ন সমাধান সন্ধান করা

একটি সংযোজন দ্বারা , বাড়ানো মাপের সাথে সমস্ত সমাধান সন্ধানের জন্য এই প্রাকটিকেটটি ব্যবহার করা সম্ভব: উদাহরণস্বরূপ, এখানে প্রথম 10 টি সমাধান রয়েছে42


14

ব্র্যাচল্যাগ , 11 বাইট

ধন্যবাদ একটি বাইট সংরক্ষণের জন্য ফ্যাটালাইজ

~+l₅≥₁.√₃ᵐ∧

এটি অনলাইন চেষ্টা করুন!

প্রথমে ~+প্রয়োগ করে যে আউটপুট ( .) অবশ্যই ইনপুট যোগ করতে পারে। l₅আবার আউটপুটকে সীমাবদ্ধ করে, নির্দেশ করে যে এর দৈর্ঘ্য ৫ ≥₁হতে হবে decla ঘোষণা করে যে তালিকাটি অবশ্যই ক্রমহ্রাসমান হতে হবে (আমি বিশ্বাস করি যে এটি অসীম লুপে প্রবেশের প্রোগ্রামটি থামাতে প্রয়োজনীয়)

.আউটপুট ভেরিয়েবলের সাথে আমরা এই তালিকাটি স্পষ্টতই একীভূত করছি কারণ আমাদের পরবর্তী প্রাকটিক্যাল তালিকার অভ্যন্তরের মানগুলিকে "পরিবর্তন" করবে। তারপরে তালিকার প্রতিটি মানের কিউব রুটটি আমরা নিই √₃ᵐ। যেহেতু ব্র্যাচল্যাগ সহজাতভাবে পূর্ণসংখ্যার ভিত্তিক, তাই নির্দেশ করে যে তালিকার সমস্ত সংখ্যা কিউব সংখ্যা numbers

অবশেষে, আমরা ব্যবহার করি কারণ .প্রতিটি লাইনের শেষে একটি অন্তর্নিহিত যোগ রয়েছে। যেহেতু আমরা .কিউব শিকড়গুলির তালিকার সাথে একীভূত হতে চাই না , আমরা এর আগে এটি একীভূত করেছি এবং শেষে এটি একত্রিত করার জন্য ব্যবহার করি।


10

পাইথন 2 , 58 57 54 বাইট

def f(n):k=(n**3-n)/6;return[v**3for v in~k,1-k,n,k,k]

এটি অনলাইন চেষ্টা করুন!


  • -২ বাইট, রডকে ধন্যবাদ
  • -1 বাইট, নীলকে ধন্যবাদ

1
আপনি সিগন্যাল অদলবদল 2 বাইট সংরক্ষণ করতে পারেনk=-(n-n**3)/6;[v**3for v in~k,1-k,n,k,k]
রড

1
@ রড -(n-n**3)আপনি কি ব্যবহার করতে পারবেন না (n**3-n)?
নীল

@ নিল হ্যাঁ, আপনি পারেন
রড

9

পাইথন 3 , 65 বাইট

def f(n):k=(n-n**3)//6;return[n**3,(k+1)**3,(k-1)**3,-k**3,-k**3]

এটি অনলাইন চেষ্টা করুন!

আমি বলতে চাইছি, একটি স্পষ্ট সূত্র এখানেও রয়েছে (যদিও তিনি অস্তিত্বের পিছনে নির্মাণের বিষয়টি বাতিল করেছেন)


kআপনার সমীকরণটি উল্টিয়ে এবং পুনর্লিখনের মাধ্যমে আপনি ঠিক এক বাইট সংরক্ষণ করতে পারেন । এটি অনলাইন চেষ্টা করুন!
জেফ ফ্রিম্যান

কেন বারবার ঘনক্ষেত দিয়ে বিরক্ত করবেন? অর্থাত্ কোডগল্ফ.স্ট্যাকেক্সেঞ্জিং.com
161235/

7

জাভা 8, 178 87 73 71 65 বাইট

n->new long[]{n*n*n,(n=(n-n*n*n)/6+1)*n*n--,--n*n*n,n=-++n*n*n,n}

-6 বাইট ধন্যবাদ @ অলিভিগ্রগ্রোয়ারকে ধন্যবাদ ।

নীচে একই ব্যাখ্যা, তবে আমি পূর্বে ব্যবহৃত উত্সটির পরিবর্তে বেস সমীকরণটি ব্যবহার করছি ( অন্তর্নিহিত টিপের জন্য @ ল্যাকিয়ুনের পাইথন 3 জবাবকে ধন্যবাদ ):

কে = (এন - এন 3 ) / 6
এন == এন 3 + (কে + 1) 3 + (কে -1) 3 - কে 3 - কে 3

এটি অনলাইনে চেষ্টা করুন।


পুরাতন 178 বাইট উত্তর:

n->{for(long k=0,a,b,c,d;;){if(n==(a=n*n*n)+(b=(d=k+1)*d*d)+(c=(d=k-1)*d*d)-(d=k*k*k++)-d)return a+","+b+","+c+","+-d+","+-d;if(n==a-b-c+d+d)return-a+","+-b+","+-c+","+d+","+d;}}

এটি অনলাইনে চেষ্টা করুন।

ব্যাখ্যা:

kকোনও সমাধান না পাওয়া পর্যন্ত আমি 0 থেকে উপরের দিকে লুপ করছি । প্রতিটি পুনরাবৃত্তিতে এটি এই দুটি সমীকরণ পরীক্ষা করবে:

  • ধনাত্মক k: n == n 3 + (কে + 1) 3 + (কে-1) 3 - কে 3 - কে 3
  • Gণাত্মক k: n == n 3 - (কে + 1) 3 - (কে-1) 3 + কে 3 + কে 3

কেন?

যেহেতু এন - এন 3 = এন * (1-এন) * (1 + এন) এবং তারপরে 6 | (এনএন 3 ) , এটি এন - এন 3 = 6 কে হিসাবে লেখা যেতে পারে ।
6 কে = (কে + 1) 3 + (কে -1) 3 - কে 3 - কে 3
এবং সেইজন্য n = n 3 + (কে + 1) 3 + (কে-1) 3 - কে 3 - কে 3 কিছু কে
সূত্র.


1
65 বাইট : n->new long[]{n*n*n,(n=(n-n*n*n)/6+1)*n*n--,--n*n*n,n=-++n*n*n,n}(বা 64 কম সুনির্দিষ্ট ফলাফলের জন্য ints ব্যবহার করে)
অলিভিয়ার গ্রাগোয়ার

6

জেলি , 13 বাইট

‘c3µ;;C;~;³*3

এটি অনলাইন চেষ্টা করুন!

সূত্রটি স্বতন্ত্রভাবে বের করুন। (x + 1) 3 + (x-1) 3 - 2 × x 3 == 6 × x।


 === Explanation ===
‘c3µ;;C;~;³*3   Main link. Input: (n).
‘               Increment.
 c3             Calculate (n+1)C3 = (n+1)×n×(n-1)÷6.
   µ            Start a new monadic link. Current value: (k=(n³-n)÷6)
    ;           Concatenate with itself.
     ;C         Concatenate with (1-k).
       ;~       Concatenate with bitwise negation of (k), that is (-1-k)
         ;³     Concatenate with the input (n).
           *3   Raise the list [k,k,1-k,-1-k,n] to third power.
                End of program, implicit print.

বিকল্প 13 বাইট: এটি অনলাইন চেষ্টা করুন!


‘c3µ³;;;C;~*3(n ^ 3-n) / 6 = C (n + 1, 3)
মাইল

5

অক্টাভা , 47 40 33 বাইট

@(n)[k=(n^3-n)/6,k,-k-1,1-k,n].^3

এটি অনলাইন চেষ্টা করুন!

জিউসেপিকে ধন্যবাদ 6 বাইট সংরক্ষণ করা, যেহেতু আমি কিছু পুরানো বন্ধনী অপসারণ করতে ভুলে গিয়েছিলাম। চিহ্নগুলি পরিবর্তন করে আরেকটি বাইট সংরক্ষণ করা হয়েছে, ধন্যবাদ রাফা 11111।

লিঙ্কযুক্ত গণিতের সূত্রটি ব্যবহার করুন se পোস্টে :

  1. যেহেতু এন - এন ^ 3 = এন (1-এন) (1 + এন) তখন 6 | (n - n ^ 3) এবং আমরা এন - এন ^ 3 = 6 কে লিখতে পারি
  2. 6 কে = (কে + 1) ^ 3 + (কে -1) ^ 3 - কে ^ 3 - কে ^ 3

এটা আর হতে যদি আমি চেষ্টা প্রদর্শিত সমাধান সমীকরণ: (NN ^ 3) = (ট + 1) ^ 3 + (K-1) ^ 3 - ট ^ 3 - ট ^ 3 বিষয়ে পরিবর্তে মাত্র সমীকরণ ব্যবহার করে।


3

মাইনক্রাফ্ট ফাংশন (18w11a, 1.13 স্ন্যাপশট), 813 বাইট

মাইনক্রাফ্ট মধ্যে নিখুঁত কিউব

ছয়টি ফাংশন ব্যবহার করে:

একটি

scoreboard objectives add k dummy
scoreboard objectives add b dummy
scoreboard objectives add c dummy
scoreboard players operation x k = x n
function d
function f
scoreboard players operation x k -= x b
scoreboard players set x b 6
scoreboard players operation x k /= x b
scoreboard players set x b 1
function d
scoreboard players operation x c += x b
function f
scoreboard players set x b 1
function d
scoreboard players operation x c -= x b
function f
function d
function e
scoreboard players operation x b -= x c
scoreboard players operation x b -= x c
function c
function b

tellraw @s {"score":{"name":"x","objective":"b"}}

scoreboard players operation x b *= x c
scoreboard players operation x b *= x c
function b

scoreboard players operation x c = x k

scoreboard players operation x b = x c

function e
function c

নামের স্কোরবোর্ড উদ্দেশ্য থেকে "ইনপুট নেয়" nএটি দিয়ে তৈরি করুন /scoreboard objectives add n dummyএবং তারপরে এটি ব্যবহার করে সেট করুন /scoreboard players set x n 5। তারপরে ফাংশনটি কল করে কল করুন/function a

এই গণিতের সূত্রটি ব্যবহার করুন se উত্তরটি




2

হাস্কেল , 43 42 বাইট

p n|k<-div(n^3-n)6=map(^3)[n,-k-1,1-k,k,k]

হাস্কেলের কাছে অনুবাদ করা কেবল জনপ্রিয় উত্তর। বাইট সংরক্ষণের জন্য @ rafa11111 ধন্যবাদ!

এটি অনলাইন চেষ্টা করুন!


2
আপনি kঅ্যাসাইনমেন্টে সাইন পরিবর্তন করে একটি বাইট সংরক্ষণ করতে পারেন ...
rafa11111

2

হুশ , 12 বাইট

ḟo=⁰Σπ5m^3İZ

এটি অনলাইন চেষ্টা করুন!

5 টি কিউবার সমস্ত সম্ভাব্য তালিকা চেষ্টা করে এবং প্রথমটিকে সঠিক যোগফল দিয়ে দেয়।

ব্যাখ্যা

ḟo=⁰Σπ5m^3İZ
          İZ    List of all integers [0,1,-1,2,-2,3,-3...
       m^3      Cube of each integer [0,1,-1,8,-8,27,-27...
     π5         Cartesian power with exponent 5. This returns a list of all possible
                lists built by taking 5 elements from the input list. This infinite
                list is ordered in such a way that any arbitrary result occurs at a 
                finite index.
ḟo              Find and return the first element where...
    Σ             the sum of the five values
  =⁰              is equal to the input



1

পাইথন 3, 65 61 60 বাইট

lambda N:[n**3for k in[(N**3-N)//6]for n in[N,-k-1,1-k,k,k]]

সম্পাদনা: কিছু অপ্রয়োজনীয় স্পেস বাদ দিয়েছে।

সম্পাদনা করুন: রাফা 11111 এর স্মার্ট পুনঃনির্মাণের জন্য ধন্যবাদ।

দ্বারা অনুপ্রাণিত এই

এটি অনলাইন চেষ্টা করুন!


আপনি একটি বাইট ব্যবহার করে সংরক্ষণ করতে পারেন (N**3-N)এবং[N,1-k,-1-k,k,k]
rafa11111

1
@ rafa11111 স্মার্ট পুনঃক্রম। ধন্যবাদ।
গুয়িয়াং কিন


1

এপিএল (ডায়ালগ ইউনিকোড) , 30 26 বাইট

3*⍨⊢,∘(1 ¯1∘+,2⍴-)6÷⍨⊢-*∘3

এটি অনলাইন চেষ্টা করুন!

LeakyNun এর উত্তরের এপিএল অনুবাদ ।

সুস্পষ্টভাবে 4 বাইটের জন্য অ্যাডমকে ধন্যবাদ।

কিভাবে?

3*⍨⊢,∘(1 ¯1∘+,2⍴-)6÷⍨⊢-*∘3  Tacit function
                   6÷⍨⊢-*∘3  (n-n^3)/6 (our k)
                 -)          Negate
               2            Repeat twice; (yields -k -k)
       (1 ¯1∘+,              Append to k+1, k-1
     ,∘                      Then append to
                            n
3*⍨                          And cube everything

দুঃখিত যদি আমি কিছু মিস করি তবে: 1) টিওতে যেহেতু একটি অ্যাসাইনমেন্ট রয়েছে, আপনার উত্তরটি এখানে কেবল একটি স্নিপেট নয়? 2) যদিও আপনি 30 টি অক্ষর ব্যবহার করেছেন, যেহেতু এটি ইউনিকোডে রয়েছে, এটি টিওতে নির্দেশিত হিসাবে 43 বাইট ব্যবহার করছে না?
rafa11111

1
@ rafa11111 না এবং না: এপিএল টিআইওতে অদ্ভুতভাবে কাজ করে। "কোড" ক্ষেত্রে অ্যাসাইনমেন্টটি আসলে "ইনপুট" ক্ষেত্রে ফাংশনটি ব্যবহার করতে কেবল একটি শর্টকাট; আসল কোডটি কাজ করার জন্য এটি সম্পূর্ণ অপ্রয়োজনীয়। এছাড়াও, আমরা প্রতিটি চরিত্রকে একটি বাইট হিসাবে গণ্য করি কারণ ডায়ালগ এপিএল এর জন্য, আমরা @ অ্যাডেমের এসবিসিএস ব্যবহার করি। আমি পরে এটি ব্যাখ্যা করে মেটা পোস্টে লিঙ্কটি যুক্ত করতে পারি তবে আমি এখনই মোবাইলে।
জে। স্যালি 21

আচ্ছা বুঝলাম. আমি এই সম্পর্কে জানতাম না। ব্যাখ্যা করার জন্য ধন্যবাদ!
rafa11111

1

হুশ , 20 বাইট

m^3m‼:_:→:←;K¹÷6Ṡ-^3

এটি অনলাইন চেষ্টা করুন!

এই পোস্ট থেকে সূত্র ব্যবহার করে ।

ব্যাখ্যা

m^3m‼:_:→:←;K¹÷6Ṡ-^3  Implicit input
                Ṡ-    Subtract itself from it
                   ^3    raised to the third power
              ÷6       Divide by six
   m                   Map over the value with a list of functions:
           ;             Create a singleton list with
            K¹             the function of replace by the input
         :←              Append the function of decrement
       :→                Append the function of increment
    ‼:_                  Append the function of negate twice
m^3                    Cube the numbers of the list

1

x86, 41 39 বাইট

ecxস্ট্যাকের ইনপুট এবং আউটপুট সহ সূত্রটির বেশিরভাগ সরল বাস্তবায়ন ।

মজার বিষয় হ'ল আমি একটি কিউবিং ফাংশন ব্যবহার করেছি তবে যেহেতু call label5 বাইট , তাই আমি লেবেলের ঠিকানাটি সঞ্চয় করি এবং 2 বাইট ব্যবহার করি call reg। এছাড়াও, যেহেতু আমি আমার ফাংশনটিতে মানগুলিকে চাপ দিচ্ছি, আমি এর jmpপরিবর্তে একটি ব্যবহার করি ret। এটি খুব সম্ভব যে লুপের সাথে চালাক এবং স্ট্যাক পুরোপুরি কল করা এড়াতে পারে।

আমি কিউবিংয়ের সাথে কোনও অভিনব ট্রিকস করিনি, যেমন ব্যবহার করার মতো (k+1)^3 = k^3 + 3k^2 + 3k + 1

পরিবর্তণের:

  • / এর notপরিবর্তে ব্যবহার করে বাইট গণনা ঠিক করুনnegdec

  • -২ বাইটগুলি xorইনগ না করেই edxসম্ভবত এটি 0 থেকে imul

.section .text
.globl main

main:
        mov     $10, %ecx   # n = 10

start:
        lea     (cube),%edi # save function pointer
        call    *%edi       # output n^3

        sub     %ecx, %eax  # n^3 - n
                            # edx = 0 from cube
        push    $6
        pop     %ebx        # const 6        
        idiv    %ebx        # k = (n^3 - n)/6
        mov     %eax, %ecx  # save k

        call    *%edi       # output k^3
        push    %eax        # output k^3

        not     %ecx        # -k-1        
        call    *%edi       # output (-k-1)^3

        inc     %ecx        
        inc     %ecx        # -k+1
        call    *%edi       # output (-k+1)^3

        ret

cube:                       # eax = ecx^3
        pop     %esi 
        mov     %ecx, %eax
        imul    %ecx
        imul    %ecx

        push    %eax        # output cube
        jmp     *%esi       # ret

Objdump:

00000005 <start>:
   5:   8d 3d 22 00 00 00       lea    0x22,%edi
   b:   ff d7                   call   *%edi
   d:   29 c8                   sub    %ecx,%eax
   f:   6a 06                   push   $0x6
  11:   5b                      pop    %ebx
  12:   f7 fb                   idiv   %ebx
  14:   89 c1                   mov    %eax,%ecx
  16:   ff d7                   call   *%edi
  18:   50                      push   %eax
  19:   f7 d1                   not    %ecx
  1b:   ff d7                   call   *%edi
  1d:   41                      inc    %ecx
  1e:   41                      inc    %ecx
  1f:   ff d7                   call   *%edi
  21:   c3                      ret    

00000022 <cube>:
  22:   5e                      pop    %esi
  23:   89 c8                   mov    %ecx,%eax
  25:   f7 e9                   imul   %ecx
  27:   f7 e9                   imul   %ecx
  29:   50                      push   %eax
  2a:   ff e6                   jmp    *%esi

এখানে আমার পরীক্ষার সংস্করণটি রয়েছে যা শেষে সমস্ত কিউবিং করে। মানগুলি স্ট্যাকের দিকে ঠেলে দেওয়ার পরে কিউব লুপ স্ট্যাকের মানগুলি ওভাররাইট করে। এটি বর্তমানে 42 বাইট বাইট তবে কোথাও কোথাও কিছু উন্নতি হওয়া উচিত।

.section .text
.globl main

main:
        mov     $10, %ecx       # n = 10

start:
        push    %ecx            # output n

        mov     %ecx, %eax
        imul    %ecx
        imul    %ecx
        sub     %ecx, %eax      # n^3 - n
                                # edx = 0 from imul

        push    $6
        pop     %ecx            # const 6        
        idiv    %ecx            # k = (n^3 - n)/6

        push    %eax            # output k
        push    %eax            # output k

        not     %eax            # -k-1        
        push    %eax            # output -k-1

        inc     %eax            
        inc     %eax            # -k+1
        push    %eax            # output -k+1

        dec     %ecx            # count = 5
        add     $20, %esp
cube:           
        mov     -4(%esp),%ebx   # load num from stack
        mov     %ebx, %eax
        imul    %ebx
        imul    %ebx            # cube 
        push    %eax            # output cube
        loop    cube            # --count; while (count)

        ret




0

পাওয়ারশেল কোর , 52 বাইট

$o,(1-($k=($o*$o-1)*$o/6)),(-$k-1),$k,$k|%{$_*$_*$_}

এটি অনলাইন চেষ্টা করুন!

সমীকরণটি ব্যবহার করে o=o^3 + (1-k)^3 + (-k-1)^3 + k^3 + k^3, যেখানে k=o^3 - o; এটি জনপ্রিয় l=o-o^3(সহ k=-l) এর একটি গৌণ রিফ্যাক্টরিং ।

পার্শ্ব নোট হিসাবে, অভিব্যক্তিটি l=o-o^3একটি আঘাতপ্রাপ্ত কানের সাথে বিড়ালের মতো দেখাচ্ছে।


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.