কত কিউব নির্মিত যেতে পারে


20

কাজের

আপনার টাস্কটি কিউব দিয়ে কাঠামো তৈরি করা । কিউবগুলির ভলিউম নিম্নলিখিত ক্রমটি অনুসরণ করে (নীচে -> শীর্ষে)n

n3,(n1)3,(n2)3,...,13

ইনপুট

কাঠামোর মোট ভলিউম ( )।V

আউটপুট

( ) এর মান , অর্থাত: কিউবের মোট সংখ্যা।n

V=n3+(n1)3+....+13

মন্তব্য

  • ইনপুট সর্বদা একটি পূর্ণসংখ্যার হবে।
  • কখনও কখনও অনুক্রম অনুসরণ করা সম্ভব হয় না, যেমন: n এর জন্য একটি নির্দিষ্ট মান উপস্থাপন করে না । সেই ইভেন্টে ফেরত -1, বা আপনার নির্বাচনের একটি মিথ্যা মান (যদিও ধারাবাহিকতা প্রয়োজন)।Vn
  • এটি তাই প্রতিটি ভাষার জয়ের জন্য বাইটে সংক্ষিপ্ত উত্তর।
  • উল্লিখিত কারণে কোনও উত্তর গ্রহণযোগ্য হিসাবে চিহ্নিত হবে না।

অনুরোধ

  • এটি সাইটে আমার প্রথম চ্যালেঞ্জ তাই আমার সাথে সহ্য করুন, এবং আমার যে কোনও ভুল হয়েছে তা ক্ষমা করুন (এবং আমাকে বলুন)।
  • দয়া করে কোনও লিঙ্ক সরবরাহ করুন যাতে আপনার কোডটি পরীক্ষা করা যায়।
  • যদি আপনি পারেন তবে দয়া করে আপনার কোডটি কীভাবে কাজ করে সে সম্পর্কে একটি ব্যাখ্যা লিখুন, যাতে অন্যরা আপনার কাজ বুঝতে এবং তাদের প্রশংসা করতে পারে।

উদাহরণ

input  : 4183059834009
output : 2022

input  : 2391239120391902
output : -1

input  : 40539911473216
output : 3568

এর সংযোগের জন্য @ আরনাউল্ডকে ধন্যবাদ:

কি সুন্দর না?

অরিয়েন্টিয়াল লিঙ্ক : লিঙ্ক


2
এটি একটি সুন্দরভাবে লেখা প্রথম চ্যালেঞ্জ। যাইহোক, আমি দৃ add়ভাবে কয়েকটি পরীক্ষার কেস যুক্ত করার পরামর্শ দেব।
আর্নৌল্ড

1
@ আরনাউল্ড, ঠিক এখনই এটিতে কাজ করছেন এবং ধন্যবাদ :)
কোনও 3 বছর বয়সী ব্যবহারকারী


আপনি দয়া করে ব্যাখ্যা করতে পারেন কীভাবে ইনপুট 4183059834009আউটপুট দেয় 2022?
DimChtz

2
@ সুপারজেডি ২২৪ এএফআইএইচ ডিফল্ট নিয়মটি হ'ল "আপনার ভাষার প্রাকৃতিক পূর্ণসংখ্যার প্রকারের পরিসর যাই হোক না কেন" অবশ্যই লুফোলের জন্য ছোট পরিসরটি ব্যবহার না করে - কমপক্ষে আমি আমার উত্তরে ধরে
নিয়েছিলাম

উত্তর:


19

জাভাস্ক্রিপ্ট (ES7), 31 বাইট

একটি সরাসরি সূত্র। 0কোনও সমাধান না হলে ফিরে আসে ।

v=>(r=(1+8*v**.5)**.5)%1?0:r>>1

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

কিভাবে?

সমষ্টি প্রথম এন কিউব দেওয়া হয়:এসএনএন

এসএন=(এন(এন+ +1)2)2=(এন2+ +এন2)2

(এটি A000537 This এই সূত্রটি সহজেই আনয়ন দ্বারা প্রমাণিত করা যায় S এস 5 এর একটি দুর্দান্ত গ্রাফিকাল উপস্থাপনা এখানে )এস5

পারস্পরিকভাবে, যদি প্রথম x কিউবের যোগফল হয় তবে নিম্নলিখিত সমীকরণটি একটি ধনাত্মক, পূর্ণসংখ্যার সমাধান স্বীকার করে:বনামএক্স

(এক্স2+ +এক্স2)2=বনাম

কারণ ইতিবাচক, এটি বাড়ে:(এক্স2+ +এক্স)/2

এক্স2+ +এক্স-2বনাম=0

যার ইতিবাচক সমাধানটি দিয়েছেন:

Δ=1+ +8বনামএক্স=-1+ +Δ2

যদি একটি পূর্ণসংখ্যা, এটি একটি বিজোড় এক হতে নিশ্চিত করা হয় কারণΔনিজেই বিজোড় হয়। সুতরাং, সমাধানটি হিসাবে প্রকাশ করা যেতে পারে:R=ΔΔ

এক্স=R2

মন্তব্য

v =>                    // v = input
  ( r =                 //
    (1 + 8 * v ** .5)   // delta = 1 + 8.sqrt(v)
    ** .5               // r = sqrt(delta)
  ) % 1 ?               // if r is not an integer:
    0                   //   return 0
  :                     // else:
    r >> 1              //   return floor(r / 2)

পুনরাবৃত্ত সংস্করণ, 36 35 বাইট

NaNকোনও সমাধান না হলে ফিরে আসে ।

f=(v,k=1)=>v>0?1+f(v-k**3,k+1):0/!v

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

মন্তব্য

f = (v,                   // v = input
        k = 1) =>         // k = current value to cube
  v > 0 ?                 // if v is still positive:
    1 +                   //   add 1 to the final result
    f(                    //   do a recursive call with:
      v - k ** 3,         //     the current cube subtracted from v
      k + 1               //     the next value to cube
    )                     //   end of recursive call
  :                       // else:
    0 / !v                //   add either 0/1 = 0 if v is zero, or 0/0 = NaN if v is
                          //   non-zero (i.e. negative); NaN will propagate all the
                          //   way to the final output

হাই, আমি একটি উত্তর (আমার নিজের প্রশ্নের) লিঙ্ক তৈরি করেছি , যেহেতু আপনি প্রথম প্রকাশ করেছিলেন আমি জিজ্ঞাসা করতে চেয়েছিলাম যে একই ভাষায় দু'বার প্রকাশ করা ভাল?
Any3nymous ব্যবহারকারী

@ Any3nymoususer একই ভাষায় বেশ কয়েকটি উত্তর পোস্ট করা পুরোপুরি ঠিক। নিজের চ্যালেঞ্জের জবাব দেওয়া কয়েক দিনের আগে করা উচিত নয়, তবে আমার ধারণা এখন তা ঠিক আছে।
আর্নৌল্ড

ওহ, সেই ক্ষেত্রে আমাকে বলার জন্য
থ্যাঙ্কস

7

05 এ বি 1 ই , 6 বাইট

ÝÝOnIk

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

জোনাথনের জেলি উত্তর বন্দরের। [0 ... n] এর যোগফল যোগ করুন , প্রতিটি বর্গাকার করুন এবং ভি এর সূচকটি সন্ধান করুন ।


05 এ বি 1 ই , 7 বাইট

ÝÝ3mOIk

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

কিভাবে এটা কাজ করে

ÝÝ3mOIk – Full program.
ÝÝ      – Yield [[0], [0, 1], [0, 1, 2], ... [0, 1, 2, ... V]].
  3mO   – Raise to the 3rd power.
     Ik – And find the index of the input therein. Outputs -1 if not found.

8-বাইট বিকল্প: ÝÝÅΔ3mOQ


কেন আমি জানি না কেন 3mOএবং উভয়ই nOকাজ করে ... সম্ভবত উল্লেখ -1 হ'ল মিথ্যা মান।
ম্যাজিক অক্টোপাস আরন

6

আর , 42 40 বাইট

-2 বাইট জিউসেপ্পিকে ধন্যবাদ

function(v,n=((1+8*v^.5)^.5-1)/2)n*!n%%1

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

Arnauld এর জাভাস্ক্রিপ্ট উত্তর পোর্ট । কোনও সমাধান না হলে 0 প্রদান করে।


জিউসেপ্পে ভাল ক্যাচ!
ডাকমায়ের


@ জিউসেপ শেষ!
ডাকমায়ের

5

জেলি ,  5  4 বাইট

RIJi

একটি monadic লিঙ্ক, 0সম্ভব না হলে ফলন ।

এটি অনলাইন চেষ্টা করুন! উপায় পরীক্ষার ক্ষেত্রে খুব অদক্ষ! (ও (ভি) স্থান: পি)

এখানে একটি 8-বাইট সংস্করণ রয়েছে যা এর পরিবর্তে ও (ভি V (1/3)) বানাতে প্রথমে ভি এর কিউব-রুট সম্পাদন করে। এখানে 8-বাইট সংস্করণ ব্যবহার করা একটি পরীক্ষা-স্যুট

কিভাবে?

Σআমি=1আমি=এনআমি3=(Σআমি=1আমি=এনআমি)2
RIJi - Link: integer, V
R    - range of v -> [1,2,3,...,V]
 Ä   - cumulative sums -> [1,3,6,...,(1+2+3+...+V)]
  ²  - square -> [1,9,36,...,(1+2+3++...+V)²] ( =[1³,1³+2³,1³+2³+3³,...,(1³+2³+3³+...+V³)] )
   i - first 1-based index of v? (0 if not found)

এটা কি বৈধ? যেহেতু এটি পরীক্ষার ক্ষেত্রে প্রদর্শিত ইনপুটটি পরিচালনা করতে পারে না? (আমি কোনও ধারণা পাইনি)
কোনও 3 বছর বয়সী ব্যবহারকারী

1
এটি বৈধ, এটি কেবলমাত্র পরিসীমা যা সেই পরীক্ষার ক্ষেত্রে মেমরির ত্রুটি দেয়। ছোট মানগুলি ব্যবহার করে দেখুন36
মিঃ এক্সকোডার

1
@ ফাইভ্রেফিশ973 হ্যাঁ, কোড-গল্ফের বাইট-কাউন্টের জন্য ব্যবহারযোগ্যতা / দক্ষতা / ইত্যাদি ত্যাগ করা একেবারেই স্বাভাবিক ( আপনার পরীক্ষার ক্ষেত্রে কাজ করে এমন একটির জন্য 9-বাইট সংস্করণ দেখুন।
জোনাথন অ্যালান

@ জোনাথন অ্যালান দুর্দান্ত, আমি এই সম্প্রদায়ের বিধিগুলি কী পরামর্শ দেয় সে সম্পর্কে আমি অবগত ছিলাম না। যদি এটি বৈধ হয় তবে এটি বৈধ। চিয়ার্স
যেকোনও অজানা ব্যবহারকারীর

খুব খারাপ IJiআচরণ করে ²⁼( অন্য কথায়)।
এরিক আউটগল্ফার

4

এলিক্সির , 53 বাইট

&Enum.find_index 0..&1,fn n->&1*4==n*n*(n+1)*(n+1)end

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

জোনাথনের জেলি উত্তর বন্দরের।


এলিক্সির , 74 বাইট

fn v->Enum.find_index 0..v,&v==Enum.sum Enum.map(0..&1,fn u->u*u*u end)end

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

অবশ্যই সাব-অনুকূল। তবে আমি মাত্র এক এলিক্সির নবাগত! :) এর nil"অবৈধ" মানের জন্য ফিরে আসে V



3

কিউবিক্স , 27 বাইট (বা ভলিউম 27?)

এই ভাষার জন্য সঠিক জায়গা বলে মনে হচ্ছে।

I@.1OW30pWpP<s)s;;q\.>s-.?/

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

নিম্নলিখিত হিসাবে এটি একটি 3x3x3 ঘনক্ষেতের উপরে মোড়ানো

      I @ .
      1 O W
      3 0 p
W p P < s ) s ; ; q \ .
> s - . ? / . . . . . .
. . . . . . . . . . . .
      . . .
      . . .
      . . .

এটি চালান দেখুন

ইনপুট থেকে ক্রমবর্ধমান কিউব গ্রহণ করে এটি প্রয়োজনীয় জঞ্জাল বাহিনী। যদি এটি শূন্যের nফলস্বরূপ হয় তবে অন্যথায় নেতিবাচক ফলাফল থাকলে আউটপুট , 0 মুদ্রণ করুন এবং প্রস্থান করুন।


2

পার্ল 6 , 30 29 26 বাইট

-4 বাইট জো কিংকে ধন্যবাদ

{first :k,.sqrt,[\+] ^1e4}

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

এন <10000 এর জন্য ব্রুট-ফোর্স সলিউশন Jon জোনাথন অ্যালান এর উত্তর থেকে সমীকরণটি ব্যবহার করে। বৃহত্তর এন এর জন্য 37 36 বাইট সমাধান ( -1 বাইট জো কিংকে ধন্যবাদ ):

{!.[*-1]&&$_-2}o{{$_,*-$++³...1>*}}

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

Falseকোনও সমাধান না হলে ফিরে আসে ।

ব্যাখ্যা

               o  # Combination of two anonymous Blocks
                {                 }  # 1st Block
                 {               }   # Reset anonymous state variable $
                  $_,*-$++³...1>*    # Sequence n,n,n-1³,n-1³-2³,... while positive
{             }  # 2nd Block
 !.[*-1]&&       # Return False if last element is non-zero
          $_-2   # Return length of sequence minus two otherwise

নিষ্ঠুর বলয়ের জন্য, আপনি 0..$_যদি সমস্ত সংখ্যার জন্য বৈধ হতে পারেন, এমনকি এটি বৃহত্তরগুলির সাথে সময় শেষ হয়ে যায়। সাধারণ গল্ফিংয়ের জন্য, আপনি .প্রথমটি থেকে সরিয়ে দ্বিতীয়টি পরিবর্তন করতে 0>=*পারেন1>*
জো কিং


2

জাভাস্ক্রিপ্ট (নোড.জেএস) , 28 বাইট

a=>a**.5%1?0:(2*a**.5)**.5|0

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

আমি জানি এটি আমার নিজের প্রশ্ন এবং সমস্ত, তবে আমার কাছে আরও ভাল উত্তর ছিল (এই ল্যাংয়ের জন্য) তখন উপস্থিত রয়েছে, তাই আমি পোস্ট করেছি। আশা করি ঠিক আছে



1

মতলব, 27 বাইট

@(v)find(cumsum(1:v).^2==v)

ফেরত পাঠায় nবিদ্যমান বা একটি খালি ম্যাট্রিক্স যদি না পারেন।

কিভাবে এটা কাজ করে

            1:v            % Creates a 1xV matrix with values [1..V]
     cumsum(   )           % Cumulative sum
                .^2        % Power of 2 for each matrix element
                   ==v     % Returns a 1xV matrix with ones where equal to V
find(                 )    % Returns a base-1 index of the first non-zero element

অনলাইনে চেষ্টা করে দেখুন!

দ্রষ্টব্যv স্মৃতি সীমাবদ্ধতার কারণে এটি বৃহত্তর জন্য ব্যর্থ হয় ।


1

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

lambda V:[*[(n*-~n/2)**2for n in range(V+1)],V].index(V)%-~V

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

-6 মিঃ এক্সকোডারকে ধন্যবাদ ।

যদি আমরা কোনও ত্রুটি ফেলতে পারি তবে সেখানে কিছু নেই এন একটি নির্দিষ্ট জন্য ভী, আমরা এটি 51 বাইটে নামাতে পারি:

lambda V:[(n*-~n/2)**2for n in range(V+1)].index(V)

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



1

ডিসি , 19 বাইট

4*dvvdddk*+d*-0r^K*

ইনপুট এবং আউটপুট স্ট্যাক থেকে, সমাধান না হলে 0 প্রদান করে।

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

ব্যাখ্যা

যদি কোনও সমাধান এন থাকে তবে ইনপুটটি হয় ((n^2+n)^2)/4। সুতরাং আমরা যেমন একটি ট্রায়াল সমাধান নিরূপণ করব n=sqrt(sqrt(4*input)), বর্গাকার শিকড় ডিসি এর ডিফল্ট 0 দশমিক স্থান স্পষ্টতা ব্যবহার করে, তারপর তুলনা (n^2+n)^2করতে 4*inputহলে এটা আসলে একটি সমাধান দেখতে।

4*dvv         Calculate a trial solution n (making a copy of 4*input for later use)
dddk          Store the trial solution in the precision and make a couple copies of it
*+d*          Calculate (n^2+n)^2
-             Subtract from our saved copy of 4*input - now we have 0 iff n is a solution
0r^           Raise 0 to that power - we now have 1 if n is a solution, 0 if not
K*            Multiply by our saved trial solution

পেনাল্টিমেট লাইনটি 0^x=0সমস্ত ননজারো x(এমনকি নেতিবাচক x!) এর জন্য , ডিসি করার মতো স্পষ্ট সত্যের উপর নির্ভর করে 0^0=1


1

পাইথন 3 , 53 48 বাইট

f=lambda V,n=1:V>0and f(V-n**3,n+1)or(not V)*n-1

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

জো কিং থেকে -3 বাইট

রিটার্নস -1কোন উত্তর জন্য।

কেবলমাত্র n=997ডিফল্ট পুনরাবৃত্তি সীমাতে কাজ করে।

বারবার ভলিউম থেকে বড় এবং বড় কিউব লাগে যতক্ষণ না এটি শূন্যের আগমন হয় (সাফল্য, কিউব সরানো সংখ্যা), বা aণাত্মক সংখ্যা (কোনও উত্তর নেই)।

ব্যাখ্যা:

f=lambda V,n=1: # f is a recursive lambda taking the volume and the cube size (defaulting to 1)

               V>0and               # if the volume is positive
                      f(V-n**3,n+1) # then we are not to the right cube size yet, try again with n+1, removing the volume of the nth cube

                                   or # if V is not positive
                                     (not V)*n-1
                         # case V == 0:
                         # (not V)*n == n; return n-1, the number of cubes
                         # case V < 0:
                         # (not V)*n == 0; return -1, no answer

and/orবা তালিকাগুলি সাধারণত তুলনায় কম হয় if/else50 বাইট
জো কিং

@ জোকিং ধন্যবাদ! আমি আরও দুটি বাইট বন্ধ পেয়েছিলাম।
pizzapants 184

not V=> V==0বাV>-1
জো কিং

0

gvm (কমিট 2612106 ) বাইটকোড, 70 59 বাইট

(-11 বাইটগুলি দ্বিগুণ করার জন্য কোডটি লেখার পরিবর্তে একটি লুপে গুণ করে)

Hexdump:

> hexdump -C cubes.bin
00000000  e1 0a 00 10 00 1a 03 d3  8a 00 f6 2a fe 25 c8 d3  |...........*.%..|
00000010  20 02 2a 04 0a 01 1a 02  00 00 20 08 4a 01 fc 03  | .*....... .J...|
00000020  d1 6a 02 52 02 cb f8 f4  82 04 f4 e8 d1 6a 03 0a  |.j.R.........j..|
00000030  03 fc d5 a8 ff c0 1a 00  a2 00 c0                 |...........|
0000003b

টেস্ট রান:

> echo 0 | ./gvm cubes.bin
0
> echo 1 | ./gvm cubes.bin
1
> echo 2 | ./gvm cubes.bin
-1
> echo 8 | ./gvm cubes.bin
-1
> echo 9 | ./gvm cubes.bin
2
> echo 224 | ./gvm cubes.bin
-1
> echo 225 | ./gvm cubes.bin
5

সত্যিকারের নিম্ন স্কোর নয়, gvmএখানে পরীক্ষার জন্য এই দুর্দান্ত প্রশ্নটি ব্যবহার করে ;) প্রতিশ্রুতি অবশ্যই প্রশ্নের চেয়ে পুরানো। নোট করুন এটি একটি 8 বিট ভার্চুয়াল মেশিন, সুতরাং কিছু প্রাকৃতিক স্বাক্ষরবিহীন সংখ্যা পরিসীমা পরিচালনা করে এমন কোড ব্যবহার করে 0-255, প্রশ্নে দেওয়া পরীক্ষার কেসগুলি কাজ করবে না।

এটি থেকে ম্যানুয়ালি একত্রিত:

0100  e1         rud                     ; read unsigned decimal
0101  0a 00      sta     $00             ; store to $00 (target sum to reach)
0103  10 00      ldx     #$00            ; start searching with n = #0
0105  1a 03      stx     $03             ; store to $03 (current cube sum)
0107  d3         txa                     ; X to A
                   loop:
0108  8a 00      cmp     $00             ; compare with target sum
010a  f6 2a      beq     result          ; equal -> print result
010c  fe 25      bcs     error           ; larger -> no solution, print -1
010e  c8         inx                     ; increment n
010f  d3         txa                     ; as first factor for power
0110  20 02      ldy     #$02            ; multiply #02 times for ...
0112  2a 04      sty     $04             ; ... power (count in $04)
                   ploop:
0114  0a 01      sta     $01             ; store first factor to $01 ...
0116  1a 02      stx     $02             ; ... and second to $02 for multiplying
0118  00 00      lda     #$00            ; init product to #0
011a  20 08      ldy     #$08            ; loop over 8 bits
                   mloop1:
011c  4a 01      lsr     $01             ; shift right first factor
011e  fc 03      bcc     noadd1          ; shifted bit 0 -> skip adding
0120  d1         clc                     ; 
0121  6a 02      adc     $02             ; add second factor to product
                   noadd1:
0123  52 02      asl     $02             ; shift left second factor
0125  cb         dey                     ; next bit
0126  f8 f4      bpl     mloop1          ; more bits -> repeat
0128  82 04      dec     $04             ; dec "multiply counter" for power
012a  f4 e8      bne     ploop           ; not 0 yet -> multiply again
012c  d1         clc
012d  6a 03      adc     $03             ; add power to ...
012f  0a 03      sta     $03             ; ... current cube sum
0131  fc d5      bcc     loop            ; repeat unless adding overflowed
                   error:
0133  a8 ff      wsd     #$ff            ; write signed #$ff (-1)
0135  c0         hlt                     ; 
                   result:
0136  1a 00      stx     $00             ; store current n to $00
0138  a2 00      wud     $00             ; write $00 as unsigned decimal
013a  c0         hlt

সম্পাদন করা : আমি শুধুমাত্র একটি বাগ সংশোধন করা হয়েছেgvm; এই ফিক্স ব্যতীত, পাঠ্য মোডেgvm বাইনারি প্রোগ্রামগুলি পড়ার চেষ্টা করা হয়েছে , যা ভেঙে যেতে পারে (উপরের কোডটিতে কোনও বাইট নেই তাই এই ফিক্স ব্যতীত উইন্ডোতে ভাঙবে না)।0xd


0

কে (ওকে) , 21 বাইট

{(,_r%2)@1!r:%1+8*%x}

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

আর্নৌল্ডের জেএস উত্তর বন্দর

কিভাবে:

{(,_r%2)@1!r:%1+8*%x} # Main function, argument x
             %1+8*%x  # sqrt(1+(8*(sqrt(x)))
           r:         # Assign to r
         1!           # r modulo 1
        @             # index the list:
 (,_r%2)              # enlist (,) the floor (_) of r modulo 2.

ফাংশনটি (_r%2)iff ফিরে আসবে 1!r == 0, অন্যথায় এটি নাল ( 0N) প্রদান করে। এটি তালিকার একক উপাদানটির কারণে সূচক 0 রয়েছে এবং 0 টি বাদে অন্য কোনও সংখ্যার সাথে তালিকাকে সূচী করে দেওয়ার চেষ্টা করা বাতিল হয়ে যাবে।

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