আমি কি আপনার পক্ষে যথেষ্ট ভাল না?


29

পটভূমি:

বর্তমান পারফেক্ট নাম্বার চ্যালেঞ্জটি বরং ত্রুটিযুক্ত এবং জটিল, কারণ এটি আপনাকে সংখ্যার কারণগুলির সাথে জড়িত একটি জটিল বিন্যাসে আউটপুট করতে বলে। এটি চ্যালেঞ্জের খাঁটি পুনরায় পোস্ট।

চ্যালেঞ্জ

যে কোনও স্ট্যান্ডার্ড ইনপুট ফর্ম্যাটটির মাধ্যমে একটি ধনাত্মক পূর্ণসংখ্যা দেওয়া হয়েছে , এটি নিখুঁত কিনা তা মধ্যে পার্থক্য করুন

একটি নিখুঁত সংখ্যা হ'ল এমন একটি সংখ্যা যা এর যথাযথ বিভাজকের যোগফলের সমান (তার ইতিবাচক বিভাজক নিজের চেয়ে কম)। উদাহরণস্বরূপ, হ'ল একটি নিখুঁত সংখ্যা, যেহেতু এর বিভাজকগুলি , যা সমষ্টি , যখন তার বিভাজক ( ) এর সমষ্টি থেকে নিখুঁত সংখ্যা নয় , নয় ।61,2,36121,2,3,4,61612

পরীক্ষার কেস:

Imperfect:
1,12,13,18,20,1000,33550335

Perfect:
6,28,496,8128,33550336,8589869056

বিধি

  • আপনার প্রোগ্রামে মেমরি বা সময়ের সীমাবদ্ধতা থাকলে বৃহত্তর পরীক্ষার কেসগুলি সম্পন্ন করতে হবে না, তবে এটি আরও মেমরি / সময় দেওয়া থাকলে তাত্ত্বিকভাবে এটি সক্ষম হওয়া উচিত।
  • আউটপুট কোনও অনুমোদিত আউটপুট বিন্যাসের মাধ্যমে দুটি স্বতন্ত্র এবং সামঞ্জস্যপূর্ণ মান হতে পারে । পারফেক্ট / অপূর্ণটিকে প্রতিনিধিত্ব করে এমনটি যদি তা অবিলম্বে পরিষ্কার না হয় তবে দয়া করে আপনার উত্তরে নির্দিষ্ট করে দিন।

অপেক্ষা করুন, সুতরাং সত্য যে মানগুলি নিখুঁত নয়, এবং মিথ্যা সেগুলি মানগুলির জন্য?
ফলটি Esolanging

2
@ টিভিডি 1 সঠিক বিভাজকদের সংখ্যার চেয়ে কম 1হতে হবে , অন্যথায় কোনও সংখ্যা নিখুঁত হবে না, যেহেতু প্রতিটি সংখ্যা 1এবং নিজেই বিভাজ্য । যথাযথ ভাজক এর সমষ্টি 1হল0
জো রাজা

3
@ গ্রিমি কেবল যদি আপনি এটি প্রমাণ করতে পারেন । শুভকামনা! (যদিও আমি ভাবছি কীভাবে এটি বাইটগুলি সংরক্ষণ করবে)
জো কিং

1
সুতরাং না, খুব খারাপ। এটি একটি ইসিএমএ রেজেক্স উত্তরের আকারটি প্রায় 3
টির

3
"আউটপুট দুটি স্বতন্ত্র এবং সামঞ্জস্যপূর্ণ মান হতে পারে" - আমরা কি এখানে "সত্যবাদী বনাম মিথ্যা" ব্যবহার করতে পারি না (উদাহরণস্বরূপ পাইথন শূন্য বনাম শূন্য ব্যবহার করে; খালি তালিকা বনাম সামগ্রী সহ একটি তালিকা এবং এর সংমিশ্রণ)?
জোনাথন অ্যালান

উত্তর:


16

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

fk+?

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

প্রাকটিকটি নিখুঁত ইনপুটগুলির জন্য সাফল্য অর্জন করে এবং অসম্পূর্ণ ইনপুট, প্রিন্টিং true.বা false.সম্পূর্ণ প্রোগ্রাম হিসাবে চালিত হলে ( টিআইওতে এক মিনিটেরও বেশি সময় লাগে এমন শেষ টেস্টের ক্ষেত্রে বাদে )।

        The input's
f       factors
 k      without the last element
  +     sum to
   ?    the input.

1
কোডটি কীভাবে বলেছে তা আমি পছন্দ করি fk: x
ইসমাইল মিগুয়েল

9

নিম , 3 বাইট

𝐕𝐬𝔼

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

(আমি আসলে পরীক্ষার সমস্ত মামলা কীভাবে চালাতে পারি তা আমি জানি না, যেহেতু আমি প্রায় পনের মিনিট আগে নিমকে শিখতে শুরু করেছি, তবে আমি স্বতন্ত্রভাবে সেগুলি পরীক্ষা করে দেখেছি।)

অসম্পূর্ণ জন্য 0 মুদ্রণ, নিখুঁত জন্য 1।

𝐕      Pop an int from the stack and push its proper divisors,
       implicitly reading the int from a line of input as the otherwise absent top of the stack.
 𝐬     Pop a list from the stack and push the sum of the values it contains.
  𝔼    Pop two ints from the stack and push 1 if they are equal, 0 if they are not;
       implicitly reading the same line of input that was already read as the second int, I guess?
       Implicitly print the contents of the stack, or something like that.

2
" আমি অনুমান করি? "; " বা এরকম কিছু " " আপনি নিজেই কী লিখেছেন তা যখন আপনি নিশ্চিত নন, হাহা। ;) তবে হ্যাঁ, বাস্তবে এটি কীভাবে কাজ করে। আমি নিমকে চিনি না, তবে ইনপুটটি এর মতো স্পষ্টভাবে ব্যবহার করা এবং অন্তর্নিহিতভাবে অন্তর্নির্মিতভাবে আউটপুট করা 05AB1E এর মতোই।
কেভিন ক্রুইজসেন

কেমন আছে 𝔼1 বাইট? নিম কি কেবল 128 টির মতো নন-স্ট্যান্ডার্ড অক্ষর ব্যবহার করে?
kajacx

3
@ kajacx নিমের নিজস্ব কোড পৃষ্ঠা রয়েছে । অতএব কোড কোডটিতে উপস্থিত 256 টি অক্ষরের প্রত্যেককে 1 বাইট ব্যবহার করে এনকোড করা যায়।
মিঃ এক্সকোডার

8

আর , 33 29 বাইট

!2*(n=scan())-(x=1:n)%*%!n%%x

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

TRUEনিখুঁত সংখ্যার FALSEজন্য এবং অপূর্ণ ব্যক্তিদের জন্য ফেরত দেয়।


একটানা 2! গুলি আপনাকে কী পেতে পারে?
সিটি হল

@ সিটিএইচটি সমস্ত আমি অনুমানটি ভুলভাবে লিখেছি; এগুলিতে তারা ম্যাপিং করেছেন 0(নিখুঁত) FALSEএবং এতে ননজারো TRUEকিন্তু আমি ম্যাপিংটি উল্টাতে তাদের একটিকে সরিয়েছি। এটা তোলে থেকে কাস্ট করার জন্য একটি দরকারী golfing চালাকি numericকরার logicalপ্রায়ই সাথে whichবা [
জিউসেপ


7

জাপট -! , 4 বাইট

¥â¬x
-----------------
            Implicit Input U
¥           Equal to
   x        Sum of
 â          Factors of U
  ¬         Without itself

কোনও কারণে ¦টিওতে কাজ করে না তাই আমার -!পতাকাটি ব্যবহার করা উচিত এবং ¥তার পরিবর্তে

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


এটি টিআইওর সমস্যা নয়; Uএর আগে স্বয়ংক্রিয়ভাবে sertedোকানো হবে না !
শেগি

6

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

lambda x:sum(i for i in range(1,x)if x%i<1)==x

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

নিষ্ঠুর বল, সমতা জন্য কারণসমূহ এবং চেকস যোগফল।


2
আপনার পুনরাবৃত্তকরণ ভেরিয়েবলের জন্য মুখোশ হিসাবে বোঝার শর্তটি ব্যবহার করা একটি বাইট সংরক্ষণ করতে পারে।
জোনাথন ফ্রেচ

যেহেতু আপনি অসম্পূর্ণ সংখ্যার জন্য সত্যবাদিতা ফিরিয়ে দিতে পারেন, lambda x:sum(i for i in range(1,x)if x%i<1)^xতেমনি কাজ করা উচিত।
nedla2004

5

পাইথন , 45 বাইট

lambda n:sum(d*(n%d<1)for d in range(1,n))==n

Trueনিখুঁত জন্য Falseঅন্যদের জন্য (এটি দিয়ে স্যুইচ করুন ==-> !=)

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

 44 42  41 বাইট (-2 ovs কে ধন্যবাদ) যদি আমরা "সত্যবাদি বনাম মিথ্যা" ব্যবহার করে ফলাফল দিতে পারি:

f=lambda n,i=1:i/n or-~f(n,i+1)-(n%i<1)*i

(মিথ্যা ( 0)) নিখুঁত জন্য; সত্যবাদী (একটি শূন্যের পূর্ণসংখ্যার) অন্যথায়


যদি দ্বিতীয় আউটপুট ফর্ম্যাটটি বৈধ হয় তবে এটি 42 বাইটে করা যেতে পারে ।
ovs

@ ওহস আহ, সুন্দরভাবে সম্পন্ন হয়েছে।
জোনাথন অ্যালান

@ ওভস .. এবং অন্যটি সে থেকে রক্ষা পেয়েছে - ধন্যবাদ!
জোনাথন অ্যালান

5

অক্টাভা , 25 বাইট

@(n)~mod(n,t=1:n)*t'==2*n

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

ব্যাখ্যা

@(n)~mod(n,t=1:n)*t'==2*n

@(n)                        % Define anonymous function with input n
             1:n            % Row vector [1,2,...,n]
           t=               % Store in variable t
     mod(n,     )           % n modulo [1,2,...,n], element-wise. Gives 0 for divisors
    ~                       % Logical negate. Gives 1 for divisors
                  t'        % t transposed. Gives column vector [1;2;...;n]
                 *          % Matrix multiply
                      2*n   % Input times 2
                    ==      % Equal? This is the output value

4

জাভাস্ক্রিপ্ট, 38 বাইট

n=>eval("for(i=s=n;i--;)n%i||!(s-=i)")

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

(টিআইওতে শেষ টেস্টকেস সময়সীমা শেষ)


@ আর্নল্ড f=একটি পুনরাবৃত্তি ফাংশন থেকে রূপান্তর করার পরে কেবল সরাতে ভুলে গেছেন ।
tsh

শুধু কৌতূহলের বাইরে, কেন একটি পুনরাবৃত্তি সংস্করণ নিয়ে যাচ্ছেন না? (এটি 34 বাইট হবে))
আরনল্ড

@ আরনাউল্ড কারণ পুনরাবৃত্ত সংস্করণ স্ট্যাক ওভারফ্লোর কারণে বড় টেস্টকেসের জন্য কেবল ব্যর্থ হবে। এটি কার্যকর করতে আমার কঠোর মোডে কিছু পরিবেশের ডিফল্ট প্রয়োজন।
tsh

2
পর্যাপ্ত পরিমাণে, তবে আপনার প্রোগ্রামটিকে বৃহত্তর পরীক্ষার কেসগুলি (যা আমি যাইহোক, ডিফল্ট নিয়ম বলে মনে করি) শেষ করতে হবে না।
আরনাউল্ড

4

সি # (ভিজ্যুয়াল সি # ইন্টারেক্টিভ সংকলক) , 46 বাইট

n=>Enumerable.Range(1,n).Sum(x=>n%x<1?x:0)^n*2

নিখুঁত হলে 0 প্রদান করে, অন্যথায় ইতিবাচক সংখ্যাটি দেয়। আমি জানি না যে দুটি পৃথক সত্যবাদী এবং মিথ্যা মানের জায়গায় বিভিন্ন ধরণের পূর্ণসংখ্যার আউটপুট তৈরি করার অনুমতি দেওয়া হয় এবং সে সম্পর্কে মেটা সম্পর্কিত কোনও আলোচনা খুঁজে পেল না। যদি এটি অবৈধ হয় তবে আমি এটি সরিয়ে দেব।

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

সি # (ভিজ্যুয়াল সি # ইন্টারেক্টিভ সংকলক) , 49 47 বাইট

n=>Enumerable.Range(1,n).Sum(x=>n%x<1?x:0)==n*2

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



3

টিআই-বেসিক (টিআই -84), 30 23 বাইট

:2Ans=sum(seq(Ans/Xnot(remainder(Ans,X)),X,1,Ans,1

মারাত্মকভাবে অদক্ষ, তবে এটি কার্যকর হয়।
বাইটোক্যান্ট হ্রাস করা প্রোগ্রামকে প্রচুর গতি বাড়িয়েছে।
ইনপুট রয়েছে Ans
আউটপুট হয় Ansএবং স্বয়ংক্রিয়ভাবে আউট ছাপা হয় যখন প্রোগ্রাম সমাপ্ত হবে।

ব্যাখ্যা:
(টিআই-বেসিকের কোনও মন্তব্য নেই, সুতরাং ধরে নিন যে ;কোনও মন্তব্য করেছে)

:2Ans=sum(seq(Ans/Xnot(remainder(Ans,X)),X,1,Ans    ;Full program

 2Ans                                               ;double the input
          seq(                                      ;generate a list
                                         X,          ;using the variable X,
                                           1,        ;starting at 1,
                                             Ans     ;and ending at the input
                                                     ;with an implied increment of 1
              Ans/X                                 ;from the input divided by X
                   not(                ),           ;multiplied by the negated result of
                       remainder(Ans,X)              ;the input modulo X
                                                     ;(result: 0 or 1)
      sum(                                          ;sum up the elements in the list
     =                                              ;equal?

উদাহরণ:

6
            6
prgmCDGF2
            1
7
            7
prgmCDGF2
            0

দ্রষ্টব্য: একটি প্রোগ্রামের বাইট গণনাটি [এমইএম] > [২] > []] (৩ by বাইট) এর পরে প্রোগ্রামের নামের দৈর্ঘ্য CDGF2,, (৫ বাইট) বিয়োগ করে এবং অতিরিক্ত 8 বাইট ব্যবহার করে মূল্যায়ন করা হয় প্রোগ্রাম সংরক্ষণ করা:

36 - 5 - 8 = 23 বাইট


3

জাভা (জেডিকে) , 54 বাইট

n->{int s=0,d=0;for(;++d<n;)s+=n%d<1?d:0;return s==n;}

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

যদিও সংখ্যার সাথে মিলে খাঁটি সংখ্যার জন্য, নিম্নলিখিতগুলি একই মানগুলি প্রদান করবে তবে এটি কেবল 40 বাইট।

n->n==6|n==28|n==496|n==8128|n==33550336

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


বিধিগুলি বলেYour program doesn't have to complete the larger test cases, if there's memory or time constraints, but it should be theoretically able to if it were given more memory/time.
জো কিং

@ জোকিং এর অর্থ কি এই যে আমি জাভা মোটেও ব্যবহার করতে পারি না int, বরং একটি BigInteger? কারণ জাভা আছে BigIntegers, তবে intএর মধ্যে স্বাক্ষরিত 31 টিরও বেশি বিট থাকবে না, যা এখানে প্রতিনিধিত্বকারীদের চেয়ে অন্য কোনও মূল্য ধরে রাখতে পারে না ...
অলিভিয়ার গ্রাগোয়ার

না, তবে প্রোগ্রামটি এখনও কাজ করা উচিত যদি intটাইপটি সীমাহীন করা হয়
জো কিং

1
@ জোকিং ওকে, আমি প্রথমে গণনাটি করতে আবার দুটি সমাধান স্যুইচ করেছি।
অলিভিয়ার গ্রাগোয়ার

3

x86 সমাবেশ, 45 43 বাইট।

6A 00 31 C9 31 D2 41 39  C1 7D 0B 50 F7 F9 58 85
D2 75 F1 51 EB EE 31 D2  59 01 CA 85 C9 75 F9 39
D0 75 05 31 C0 40 EB 02  31 C0 C3

ব্যাখ্যা (ইন্টেল সিনট্যাক্স):

PUSH $0          ; Terminator for later
XOR ECX, ECX        ; Clear ECX
.factor:
    XOR EDX, EDX    ; Clear EDX
    INC ECX
    CMP ECX, EAX    ; divisor >= input number?
    JGE .factordone ; if so, exit loop.
    PUSH EAX        ; backup EAX
    IDIV ECX        ; divide EDX:EAX by ECX, store result in EAX and remainder in EDX
    POP EAX         ; restore EAX
    TEST EDX, EDX   ; remainder == 0?
    JNZ .factor     ; if not, jump back to loop start
    PUSH ECX        ; push factor
    JMP .factor     ; jump back to loop start
.factordone:
XOR EDX, EDX        ; clear EDX
.sum:
    POP ECX         ; pop divisor
    ADD EDX, ECX    ; sum into EDX
    TEST ECX, ECX   ; divisor == 0?
    JNZ .sum        ; if not, loop.
CMP EAX, EDX        ; input number == sum?
JNE .noteq          ; if not, skip to .noteq
    XOR EAX, EAX    ; clear EAX
    INC EAX         ; increment EAX (sets to 1)
JMP .return         ; skip to .return
.noteq:
    XOR EAX, EAX    ; clear EAX
.return:
RETN

ইনপুট সরবরাহ করা উচিত EAX
ফাংশন নিখুঁত এবং অপূর্ণদের EAXজন্য সেট করে ।10

সম্পাদনা : এবং এর MOV EAX, $1সাথে প্রতিস্থাপন করে দুটি দ্বারা বাইট-কাউন্ট কমিয়ে আনা হয়েছেXOR EAX, EAXINC EAX


1
আমি একটি ম্যাক্রো অ্যাসেম্বলি ব্যবহার করি তাই আমি নিশ্চিতভাবে জানি না তবে মন্তব্যটি "; বিভাজক> ইনপুট নম্বর" আমার জন্য হবে "; বিভাজক> = ইনপুট নম্বর"
রোজলুপা

এসেম্বলির সহজ ক্রিয়াকলাপ রয়েছে
যেগুলি

@ রসলুপি আমি কোডটিতে মন্তব্যটি স্থির করেছি (ধন্যবাদ), তবে আপনার দ্বিতীয় মন্তব্যে আপনি কী বোঝাতে চেয়েছেন তা আমি জানি না।
Fayti1703

3

ভোল্টেজ , 80 বাইট

?::`}:("(!@
perfect:
{:{:;%"}
+puts; "
}zero: "
}else{(:
"negI"  _~
""""""{{{"!@

লাতিন অক্ষরগুলি perfect puts zero else neg Iআসলে কেবল মন্তব্য *।
অর্থাত্ যদি ইনপুট নিখুঁত হয় তবে একটি 0মুদ্রিত হয়, অন্যথায় -1

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


* সুতরাং এটি বা এই কাজটিও ...

?::`}:("(!@               ?::`}:("(!@
       :                  BEWARE :
{:{:;%"}                  {:{:;%"}
+    ; "                  +LAIR; "
}    : "                  } OF : "
}    {(:                  }MINO{(:
"    "  _~                "TAUR"  _~
""""""{{{"!@              """"""{{{"!@

কিভাবে?

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

?::`}:(শুধুমাত্র মৃত্যুদন্ড শুরুতে একবার চালাতেই:

?::`}:(                                                      Main,Aux
?       - take an integer from STDIN and place it onto Main  [[n],[]]
 :      - duplicate top of Main                            [[n,n],[]]
  :     - duplicate top of Main                          [[n,n,n],[]]
   `    - negate top of Main                            [[n,n,-n],[]]
    }   - place top of Main onto Aux                       [[n,n],[-n]]
     :  - duplicate top of Main                          [[n,n,n],[-n]]
      ( - decrement top of Main                        [[n,n,n-1],[-n]]

পরবর্তী নির্দেশনাটি, "একটি অপশন নয়, তবে আমাদের তিনটি প্রতিবেশী নির্দেশ রয়েছে সুতরাং আমরা মেইনের শীর্ষে মান অনুসারে শাখা করি, শূন্য আমাদের এগিয়ে নিয়ে যায়, যখন শূন্য নয় আমাদের ডানে নিয়ে যায়।

যদি ইনপুটটি থাকে তবে 1আমরা এগিয়ে যাই কারণ মেইনের শীর্ষটি শূন্য:

(!@                                                          Main,Aux
(   - decrement top of Main                             [[1,1,-1],[-1]]
 !  - print top of Main, a -1
  @ - exit the labyrinth

তবে যদি ইনপুটটি 1আমাদের ডানদিকে ঘোরার চেয়ে বেশি হয় কারণ মেইনের শীর্ষটি শূন্য নয়:

:}                                                           Main,Aux
:  - duplicate top of Main                         [[n,n,n-1,n-1],[-n]]
 } - place top of Main onto Aux                        [[n,n,n-1],[-n,n-1]]

এই মুহুর্তে আমাদের একটি তিন-প্রতিবেশী শাখা রয়েছে, তবে আমরা জানি n-1যে শূন্য নয়, তাই আমরা ডানদিকে ঘুরলাম ...

"%                                                           Main,Aux
"  - no-op                                             [[n,n,n-1],[-n,n-1]]
 % - place modulo result onto Main                   [[n,n%(n-1)],[-n,n-1]]
   - ...i.e we've got our first divisibility indicator n%(n-1), an
   -    accumulator, a=-n, and our potential divisor p=n-1:
   -                                                 [[n,n%(n-1)],[a,p]]

আমরা এখন আরও তিনটি প্রতিবেশী শাখায় রয়েছি %

যদি ফলাফলটি %শূন্যহীন হয় তবে আমরা আমাদের সম্ভাব্য বিভাজক হ্রাস করতে চলে যাই p=p-1, এবং সঞ্চালকটিকে aযেমন রাখি তেমনি:

;:{(:""}"                                                    Main,Aux
;          - drop top of Main                                [[n],[a,p]]
 :         - duplicate top of Main                         [[n,n],[a,p]]
  {        - place top of Aux onto Main                  [[n,n,p],[a]]
           - three-neighbour branch but n-1 is non-zero so we turn left
   (       - decrement top of Main                     [[n,n,p-1],[a]]
    :      - duplicate top of Main                 [[n,n,p-1,p-1],[a]]
     ""    - no-ops                                [[n,n,p-1,p-1],[a]]
       }   - place top of Main onto Aux                [[n,n,p-1],[a,p-1]]
        "  - no-op                                     [[n,n,p-1],[a,p-1]]
         % - place modulo result onto Main           [[n,n%(p-1)],[a,p-1]]
           - ...and we branch again according to the divisibility
           -    of n by our new potential divisor, p-1

... তবে যদি ফলাফলটি %শূন্য হয় (কেবলমাত্র প্রথম পাসের জন্য কেবল তখনই n=2) আমরা সরাসরি উভয় দিকে চলে যাই আমাদের সংযোজকের সাথে বিভাজক যুক্ত করে a=a+p, এবং আমাদের সম্ভাব্য বিভাজক হ্রাস করে p=p-1:

;:{:{+}}""""""""{(:""}                                       Main,Aux
;                      - drop top of Main                    [[n],[a,p]]
 :                     - duplicate top of Main             [[n,n],[a,p]]
  {                    - place top of Aux onto Main      [[n,n,p],[a]]
   :                   - duplicate top of Main         [[n,n,p,p],[a]]
    {                  - place top of Aux onto Main  [[n,n,p,p,a],[]]
     +                 - perform addition            [[n,n,p,a+p],[]]
      }                - place top of Main onto Aux      [[n,n,p],[a+p]]
       }               - place top of Main onto Aux        [[n,n],[a+p,p]]
        """""""        - no-ops                            [[n,n],[a+p,p]]
                       - a branch, but n is non-zero so we turn left
               "       - no-op                             [[n,n],[a+p,p]]
                {      - place top of Aux onto Main      [[n,n,p],[a+p]]
                       - we branch, but p is non-zero so we turn right
                 (     - decrement top of Main         [[n,n,p-1],[a+p]]
                  :    - duplicate top of Main     [[n,n,p-1,p-1],[a+p]]
                   ""  - no-ops                    [[n,n,p-1,p-1],[a+p]]
                     } - place top of Main onto Aux    [[n,n,p-1],[a+p,p-1]]

এই মুহুর্তে যদি p-1এখনও শূন্য থাকে তবে আমরা বাম দিকে ঘুরে:

"%                                                           Main,Aux
"  - no-op                                             [[n,n,p-1],[a+p,p-1]]
 % - modulo                                          [[n,n%(p-1)],[a+p,p-1]]
   - ...and we branch again according to the divisibility
   -    of n by our new potential divisor, p-1

... তবে p-1শূন্য হিট হলে আমরা :গোলকধাঁধার দ্বিতীয় লাইনে সরাসরি চলে যাই (আপনি এর আগে সমস্ত নির্দেশাবলী দেখেছেন, তাই আমি তাদের বিবরণগুলি রেখে যাচ্ছি এবং কেবল তাদের প্রভাব দিচ্ছি):

:":}"":({):""}"%;:{:{+}}"""""""{{{                           Main,Aux
:                                  -                   [[n,n,0,0],[a,0]]
 "                                 -                   [[n,n,0,0],[a,0]]
                                   - top of Main is zero so we go straight
                                   -  ...but we hit the wall and so turn around
  :                                -                 [[n,n,0,0,0],[a,0]]
   }                               -                   [[n,n,0,0],[a,0,0]]
                                   - top of Main is zero so we go straight
    ""                             -                   [[n,n,0,0],[a,0,0]]
      :                            -                 [[n,n,0,0,0],[a,0,0]]
       (                           -                [[n,n,0,0,-1],[a,0,0]]
        {                          -              [[n,n,0,0,-1,0],[a,0]]
                                   - top of Main is zero so we go straight
                                   -  ...but we hit the wall and so turn around
         (                         -             [[n,n,0,0,-1,-1],[a,0]]
          :                        -          [[n,n,0,0,-1,-1,-1],[a,0]]
           ""                      -          [[n,n,0,0,-1,-1,-1],[a,0]]
             }                     -             [[n,n,0,0,-1,-1],[a,0,-1]]
                                   - top of Main is non-zero so we turn left
              "                    -             [[n,n,0,0,-1,-1],[a,0,-1]]
               %                   - (-1)%(-1)=0     [[n,n,0,0,0],[a,0,-1]]
                ;                  -                   [[n,n,0,0],[a,0,-1]]
                 :                 -                 [[n,n,0,0,0],[a,0,-1]]
                  {                -              [[n,n,0,0,0,-1],[a,0]]
                   :               -           [[n,n,0,0,0,-1,-1],[a,0]]
                    {              -         [[n,n,0,0,0,-1,-1,0],[a]]
                     +             -           [[n,n,0,0,0,-1,-1],[a]]
                      }            -              [[n,n,0,0,0,-1],[a,-1]]
                       }           -                 [[n,n,0,0,0],[a,-1,-1]]
                        """""""    -                 [[n,n,0,0,0],[a,-1,-1]]
                                   - top of Main is zero so we go straight
                               {   -              [[n,n,0,0,0,-1],[a,-1]]
                                {  -           [[n,n,0,0,0,-1,-1],[a]]
                                 { -         [[n,n,0,0,0,-1,-1,a],[]]

এখন {এর তিনটি প্রতিবেশী নির্দেশ রয়েছে, তাই ...

... যদি aশূন্য হয়, যা এটি নিখুঁত হবে n, তবে আমরা সরাসরি যাব:

"!@                                                          Main,Aux
"   -                                        [[n,n,0,0,0,-1,-1,a],[]]
    - top of Main is a, which is zero, so we go straight
 !  - print top of Main, which is a, which is a 0
  @ - exit the labyrinth

... যদি aঅ-শূন্য হয়, যা এটি নিখুঁত জন্য হবে n, তবে আমরা বাম দিকে ফিরে যাব:

_~"!@                                                        Main,Aux
_     - place a zero onto Main             [[n,n,0,0,0,-1,-1,a,0],[]]
 ~    - bitwise NOT top of Main (=-1-x)   [[n,n,0,0,0,-1,-1,a,-1],[]]
  "   -                                   [[n,n,0,0,0,-1,-1,a,-1],[]]
      - top of Main is NEGATIVE so we turn left
   !  - print top of Main, which is -1
    @ - exit the labyrinth


2

জাভাস্ক্রিপ্ট, 62

n=>n==[...Array(n).keys()].filter(a=>n%a<1).reduce((a,b)=>a+b)

ব্যাখ্যা (যদিও এটি বেশ সহজ)

n=> //return function that takes n
  n== //and returns if n is equal to
    [...Array(n).keys()] //an array [0..(n-1)]...
      .filter(a=>n%a<1) //where all of the elements that are not divisors of n are taken out...
      .reduce((a,b)=>a+b) //summed up

উন্নয়নের জন্য জো কিংকে ধন্যবাদ !



2

পাওয়ারশেল, 46 বাইট 43 বাইট

param($i)1..$i|%{$o+=$_*!($i%$_)};$o-eq2*$i

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

সম্পাদনা করুন: -৩ বাইট @ অ্যাডমবার্কবার্ককে ধন্যবাদ


লুপের মধ্যে সংযোজকটি ঘুরিয়ে 43 বিট এবং 2*$iবিয়োগের প্যারেন্সগুলি বাদ দেওয়ার জন্য পরীক্ষা করে ns
অ্যাডমবর্কবার্ক

2

সি (জিসিসি) , 41 বাইট

f(n,i,s){for(i=s=n;--i;s-=n%i?0:i);n=!s;}

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

1: 0
12: 0
13: 0
18: 0
20: 0
1000: 0
33550335: 0
6: 1
28: 1
496: 1
8128: 1
33550336: 1
-65536: 0 <---- Unable to represent final test case with four bytes, fails

চূড়ান্ত মামলার সেই ব্যর্থতা যদি কোনও সমস্যা হয় তবে আমাকে জানান।



2
"যে কোনও অনুমোদিত আউটপুট বিন্যাসের মাধ্যমে আউটপুট দুটি স্বতন্ত্র এবং সামঞ্জস্যপূর্ণ মান হতে পারে।" আপনি কোনও দুটি স্বতন্ত্র মান প্রত্যাবর্তন করছেন না।
অলিভিয়ার গ্রাগোয়ার

2
@ অলিভিয়ারগ্রোওয়ের সৌভাগ্যক্রমে যে স্থানটি একটি বিস্মৃত চিহ্নের সাহায্যে সহজেই সংশোধন করা যেতে পারে!
নীল

1
এখনও নিল বেটার, এটি 5 বাইট সংরক্ষণ করার n=!s;পরিবর্তে স্থির করা যেতে পারে return!s;

@ অলিভিয়েরগ্রোওরে আহ, আমি এই বিষয়টি ভুলে গেছি এছাড়াও, উন্নত কোড সহ আপডেট করেছেন। আমি অনুরূপ কিছু চেষ্টা করেছিলাম, তবে আমি যে নির্বোধ আমি তা করেছিলাম s=sযা সম্ভবত সম্ভাব্যতার চেয়ে বেশি অনুকূল ছিল।
মার্কোস


2

ফোর্থ (গফার্থ) , 45 বাইট

: f 0 over 1 ?do over i mod 0= i * - loop = ;

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

ব্যাখ্যা

1 থেকে এন -1 পর্যন্ত প্রতিটি সংখ্যার উপরে লুপ করে, সমস্ত মানকে পুরোপুরি যোগ করে যা n কে পুরোপুরি বিভক্ত করে। সমষ্টি n সমান হলে সত্যটি ফেরত দেয়

কোড ব্যাখ্যা

: f                \ start word definition
  0 over 1         \ create a value to hold the sum and setup the bounds of the loop
  ?do              \ start a counted loop from 1 to n. (?do skips if start = end)
    over           \ copy n to the top of the stack
    i mod 0=       \ check if i divides n perfectly
    i * -          \ if so, use the fact that -1 = true in forth to add i to the sum
  loop             \ end the counted loop
  =                \ check if the sum and n are equal
;                  \ end the word definition

2

পাইথ , 9 13 বাইট

qsf!%QTSt

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

গল্ফ সাহায্যের জন্য মন্তব্যকারীদের ধন্যবাদ

ইনপুটটির সমস্ত উপাদান খুঁজে বের করে, তাদের যোগফল দেয় এবং এটিকে মূল ইনপুটটির সাথে তুলনা করে।


আপনার জন্য কয়েকটি গল্ফ - এর q0সাথে প্রতিস্থাপন করা যেতে পারে !এবং SQব্যাপ্তি তৈরি করা যায় [1-Q], যাতে [1-Q)ব্যবহার করে পরিসীমাটি তৈরি করা যায় StQ। যেহেতু Qএখন প্রোগ্রামটির শেষে রয়েছে সেগুলি উভয়ই বাদ দেওয়া যেতে পারে। ফেটলেড সংস্করণ, 9 বাইট -qsf!%QTSt
সোক করুন

1

ব্যাচ, 81 বাইট

@set s=-%1
@for /l %%i in (1,1,%1)do @set/as+=%%i*!(%1%%%%i)
@if %s%==%1 echo 1

nকমান্ড-লাইন প্যারামিটার হিসাবে নেয় এবং 1যদি এটি একটি নিখুঁত সংখ্যা হয়। ব্রুট ফোর্স পদ্ধতিটি, যোগফলটি শুরু করে -nযাতে এটি nনিজেকে লুপে অন্তর্ভুক্ত করতে পারে ।


1

কাঠকয়লা , 13 বাইট

Nθ⁼θΣΦθ∧ι¬﹪θι

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। -নিখুঁত সংখ্যার জন্য আউটপুট । নিষ্ঠুর শক্তি ব্যবহার করে। ব্যাখ্যা:

Nθ              Numeric input
     Φθ         Filter on implicit range
        ι       Current value (is non-zero)
       ∧        Logical And
           θ    Input value
          ﹪     Modulo
            ι   Current value
         ¬      Is zero
    Σ           Sum of matching values
  ⁼             Equals
   θ            Input value


1

পাইথ, 8 বাইট

qs{*MPyP

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

qs{*MPyPQQ   Implicit: Q=eval(input())
             Trailing QQ inferred
       PQ    Prime factors of Q
      y      Powerset
     P       Remove last element - this will always be the full prime factorisation
   *M        Take product of each
  {          Deduplicate
 s           Sum
q        Q   Is the above equal to Q? Implicit print

1

রেটিনা 0.8.2 , 44 বাইট

.+
$*
M!&`(.+)$(?<=^\1+)
+`^1(1*¶+)1
$1
^¶+$

এটি অনলাইন চেষ্টা করুন! নিষ্ঠুর শক্তি ব্যবহার করে, তাই লিঙ্কটিতে কেবল দ্রুত পরীক্ষার কেস অন্তর্ভুক্ত রয়েছে। ব্যাখ্যা:

.+
$*

অ্যানারিতে রূপান্তর করুন।

M!&`(.+)$(?<=^\1+)

ইনপুটটির সমস্ত উপাদানগুলির সাথে মিল দিন। এটি ওভারল্যাপিং মোড ব্যবহার করে, যার রেটিনা ০.৮.২ এ সমস্ত অবস্থানের বিভিন্ন পজিশনে শুরু হওয়া দরকার, সুতরাং ম্যাচগুলি আসল ইনপুট দিয়ে শুরু করে অবতরণ ক্রমে ফিরে আসে।

+`^1(1*¶+)1
$1

ইনপুট থেকে যথাযথ কারণগুলি বিয়োগ করুন।

^¶+$

ফলাফলটি শূন্য কিনা তা পরীক্ষা করে দেখুন।



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