সমষ্টি


17

চলুন (ইনপুট)এন=42

তারপরে বিভাজনগুলি হ'ল: 1, 2, 3, 6, 7, 14, 21, 42

প্রতিটি বিভাজককে স্কোয়ার করা: 1, 4, 9, 36, 49, 196, 441, 1764

যোগফল নেওয়া (যোগ করা): 2500

যেহেতু আমরা সত্যবাদী মানটি ফিরিয়ে দিই। এটি যদি নিখুঁত বর্গক্ষেত্র না হয় তবে মিথ্যা মানটি ফিরিয়ে দিন।50×50=2500

উদাহরণ:

42  ---> true
1   ---> true
246 ---> true
10  ---> false
16  ---> false

এটি তাই প্রতিটি ভাষার জয়ের জন্য বাইটের মধ্যে সংক্ষিপ্ততম কোড

ক্রমটি নির্দেশ করার জন্য @ আরনাউল্ডকে ধন্যবাদ: A046655


2
ফলাফলটি সত্য হলে প্রোগ্রামটি আউটপুট 0 এবং ফলাফলটি মিথ্যা হলে অন্য কোনও সংখ্যা কী করতে পারে?
জোশিহায়ারানওয়ান

উত্তর:


6

আর , 39 37 বাইট

!sum((y=1:(x=scan()))[!x%%y]^2)^.5%%1

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

বর্গমূলের অ-অবিচ্ছেদ্য অংশ S^.5%%1গ্রহণ করে এবং এর যৌক্তিক অবহেলা গ্রহণ করে ক্লাসিক "পরীক্ষাটি নিখুঁত বর্গক্ষেত্র" পদ্ধতির ব্যবহার করে কারণ এটি শূন্য (নিখুঁত বর্গক্ষেত্র) থেকে TRUEননজারো মানচিত্র করে FALSE

কয়েকটা বাইট সংরক্ষণের জন্য রবার্ট এসকে ধন্যবাদ !


1
আপনি scan()কয়েক বাইট সংরক্ষণ করতে ব্যবহার করতে পারেন ?
রবার্ট এস

3
@RobertS। Doh! আমি ইদানীং খুব বেশি "আসল" আর কোডিং করছি!
জিউসেপে

6

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

1 হেডিকে ধন্যবাদ 1 বাইট সংরক্ষণ করা হয়েছে

n=>!((g=d=>d&&d*d*!(n%d)+g(d-1))(n)**.5%1)

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

মন্তব্য

n =>             // n = input
  !(             // we will eventually convert the result to a Boolean
    (g = d =>    // g is a recursive function taking the current divisor d
      d &&       //   if d is equal to 0, stop recursion 
      d * d      //   otherwise, compute d²
      * !(n % d) //   add it to the result if d is a divisor of n
      + g(d - 1) //   add the result of a recursive call with the next divisor
    )(n)         // initial call to g with d = n
    ** .5 % 1    // test whether the output of g is a perfect square
  )              // return true if it is or false otherwise

1
আপনার সাথে এক বাইট সংরক্ষণ করতে পারবেন dথেকে যাচ্ছে nকরার 0পরিবর্তে 2করতে n: এই মতn=>!((g=d=>d?d*d*!(n%d)+g(d-1):0)(n)**.5%1)
Hedi


5

শেক্সপিয়ার প্রোগ্রামিং ল্যাঙ্গুয়েজ , 434 428 415 বাইট

,.Ajax,.Ford,.Puck,.Act I:.Scene I:.[Enter Ajax and Ford]Ford:Listen tothy.Scene V:.Ajax:You be the sum ofyou a cat.Ford:Is the remainder of the quotient betweenyou I worse a cat?[Exit Ajax][Enter Puck]Ford:If soyou be the sum ofyou the square ofI.[Exit Puck][Enter Ajax]Ford:Be you nicer I?If solet usScene V.[Exit Ford][Enter Puck]Puck:Is the square ofthe square root ofI worse I?You zero.If notyou cat.Open heart

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

-13 বাইট ধন্যবাদ জো কিং!

আউটপুট 1 সত্য ফলাফলের জন্য, আউটপুট 0মিথ্যা ফলাফলের জন্য।


তৃতীয় চরিত্রের সাথে 415 বাইট
জো কিং



3

সি (জিসিসি) , 67 63 60 59 বাইট

-1 বাইটস @ জোনাথনফ্রেচকে ধন্যবাদ

i,s;f(n){for(s=i=0;i++<n;)s+=n%i?0:i*i;n=sqrt(s);n=n*n==s;}

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


1
হতে ++i<=nপারে i++<n?
জোনাথন ফ্রেচ

@ জোনাথানফ্রেচ যে কাজ করছে বলে মনে হচ্ছে, ধন্যবাদ।
ক্লাব্ল্যাঙ্ক

3

ব্র্যাচল্যাগ , 12 8 বাইট

f^₂ᵐ+~^₂

-4 বাইটগুলি ফেটালাইজ করার কারণে ধন্যবাদ আমি বুঝতে পারি নি ব্র্যাচল্যাগের একটি কার্যকারিতা রয়েছে

ব্যাখ্যা

f^₂ᵐ+~^₂            #   full code
f                   #       get divisors
 ^₂ᵐ                #           square each one
    +               #       added together
      ~^₂           #       is the result of squaring a number

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


f^₂ᵐ4 বাইটের চেয়ে কম সংক্ষিপ্তḋ{⊇×^₂}ᵘ
12:14

3

ম্যাথগল্ফ , 5 4 বাইট

─²Σ°

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

ব্যাখ্যা

─     Get all divisors as list (implicit input)
 ²    Square (implicit map)
  Σ   Sum
   °  Is perfect square?

অন্যান্য উত্তরগুলির সাথে খুব সমান, 05AB1E এর তুলনায় আমি আমার "ইজ পারফেক্ট স্কোয়ার" অপারেটরের জন্য একটি বাইট অর্জন করি।


আপনি জানেন, "ম্যাথগল্ফ" নামে পরিচিত এমন কোনও কিছুতে অবশ্যই আদর্শ অপারেটর থাকা উচিত ... যা আপনাকে 3 বাইটে নামিয়ে আনত :)
মিশা লাভরভ

@ মিশালাভরভ এটি কোনও খারাপ ধারণা নয়! এই মুহুর্তে আমার কাছে যতটা ভেক্টর অপারেশন রয়েছে তা এখনই নেই, এই দিনগুলির মধ্যে একটিতে আমি এটি পরিবর্তন করব
ম্যাক্সবি


2

পাওয়ারশেল , 68 56 বাইট

param($n)1..$n|%{$a+=$_*$_*!($n%$_)};1..$a|?{$_*$_-eq$a}

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

দীর্ঘ মনে হচ্ছে ...
-12 বাইট মজির জন্য ধন্যবাদ

যা টিনটিতে লেখা তাই করে। 1ইনপুট থেকে ব্যাপ্তি নেয় $nএবং বর্গগুণে $_*$_এটি বিভাজক কিনা তা গুণিত করে !($n%$_)। এটি বিভাজকগুলিকে একটি ননজারো সংখ্যার সমান এবং বিভাজকগুলিকে শূন্যের সমান করে তোলে। তারপরে আমরা আমাদের সংযোজকটির সাথে তাদের যোগফল নিই $a। এরপরে, আমরা 1উপরে থেকে আবার লুপ করব $aএবং সেই সংখ্যাগুলি যেখানে |?{...}এটি বর্গক্ষেত্রের থেকে -eqবর্গক্ষেত্র হয় তা টেনে আনব $a। এটি পাইপলাইনে রেখে গেছে এবং আউটপুট অন্তর্ভুক্ত।

সত্যের জন্য একটি ধনাত্মক পূর্ণসংখ্যার ফলস্বরূপ এবং মিথ্যার পক্ষে কিছুই হয় না।


$args[0]সংক্ষিপ্ত যেখানে বিরল ঘটনা :)1..$args[0]|%{$a+=$_*$_*!($n%$_)};1..$a|?{$_*$_-eq$a}
mazzy

1
@ মমজি এটি নয়, কারণ আপনার প্রয়োজন $n ভিতরে!($n%$_) । তবে, আপনার যোগফলের পুনর্লিখনটি 12 বাইট সংরক্ষণ করেছে, তাই ধন্যবাদ!
অ্যাডমবর্কবার্ক

কি লজ্জা. তাই আমি একটি $args[0]সংক্ষিপ্ত যেখানে একটি মামলা সন্ধান করতে চাই :)
mazzy

2

জাপট , 11 9 7 বাইট

@ জিউজ্পে -2 বাইট এবং @ শেগি থেকে অন্য -2

â x²¬v1

â x²¬v1             Full program. Implicity input U
â                   get all integer divisors of U
  x²                square each element and sum
    ¬               square root result
     v1           return true if divisible by 1

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



2

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

0=1|.5*⍨2+.*⍨∘∪⍳∨⊢

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

নামবিহীন ল্যাম্বদা। সত্যবাদীর জন্য 1 এবং মিথ্যা বলার জন্য 0 প্রদান করে (টিআইওতে পরীক্ষার কেস পূর্বনির্ধারিত)।

4 বাইটের জন্য @ এইচ.পি.উইজে শাটআউট!

কিভাবে:

0=1|.5*⍨2+.*⍨∘∪⍳∨⊢    Main function, argument   42
                ∨⊢    Greatest common divisor (∨) between  (⊢)
                      and the range (⍳) [1..⍵]
                     Get the unique items (all the divisors of 42; 1 2 3 6 7 14 21 42)
                      Then
                      Swap arguments of
        2+.*           dot product (.) of sum (+) and power (*) between the list and 2 
                       (sums the result of each element in the vector squared)
                      Use the result vector as base
    .5*                Take the square root
  1|                   Modulo 1
0=                     Equals 0

আপনি কি বাইট সংরক্ষণ করার notচেয়ে সমতুল্য করতে পারেন 0=?
স্ট্রিস্টার

দুর্ভাগ্যক্রমে @ স্ট্রিস্টস্টার, আমি 2 কারণে করতে পারি না। প্রথমত, এপিএল'র notঅপারেটর ( ~) যখন একাকীভাবে ব্যবহার করা হয়, কেবলমাত্র বুলিয়ানগুলির সাথে কাজ করে (হয় 0 বা 1)। যেহেতু যে কোনও সংখ্যার মডুলো 1 কখনই 1 এর সমান হয় ~না 0=, আমি এর পরিবর্তে যদি ব্যবহার করি তবে আমি domain errorযে কোনও সংখ্যায় একটি পূর্ণ বর্গক্ষেত্র নয় এমন একটি নম্বর পেয়ে যাব , যেহেতু দশমিক মানগুলি ~এর ডোমেনের বাইরে থাকে। তদ্ব্যতীত, আমি কেবল 0=এটিকে বাদ দিতে পারি না , যেহেতু এপিএলের সত্যবাদী মানটি 0 নয়, এবং এটি মিথ্যা মানগুলির জন্য একটি সুসংগত আউটপুট রাখে না।
জে স্যালা

2

কে (ওকে) , 26 25 22 বাইট

সমাধান:

{~1!%+/x*x*~1!x%:1+!x}

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

ব্যাখ্যা:

{~1!%+/x*x*~1!x%:1+!x} / the solution
{                    } / lambda taking x as input
                   !x  / range 0..x-1                        \
                 1+    / add 1                               |
              x%:      / x divided by and save result into x |
            1!         / modulo 1                            | get divisors
           ~           / not                                 |
         x*            / multiply by x                       /
       x*              / multiply by x (aka square)          > square
     +/                / sum up                              > sum up
    %                  / square root                         \  
  1!                   / modulo 1                            | check if a square
 ~                     / not                                 / 

মন্তব্য:

  • -1 পাওয়ারশেল সমাধান থেকে অনুপ্রেরণা নিয়ে বাইট
  • -৩ এপিএল সমাধান থেকে অনুপ্রেরণা নিয়ে বাইট


2

মতলব, 39 37 বাইট

@(v)~mod(sqrt(sum(divisors(v).^2)),1)

দুর্ভাগ্যক্রমে, এটি অকটাভে (টিওতে) কাজ করে না তাই কোনও টিও লিঙ্ক নেই।

দ্রষ্টব্য যেমন @ লুইস মেন্ডো বলেছেন, divisors()সিম্বলিক টুলবক্সের অন্তর্গত।


1
দেখে মনে হচ্ছে divisorsএটি সিম্বলিক টুলবক্সের অন্তর্গত। আপনার এটি শিরোনামে বলা উচিত। এছাড়াও, আপনি এর ~···পরিবর্তে···==0
লুইস মেন্ডো

আপনি এর sum(...)^.5পরিবর্তেsqrt(sum(...))
Sanchise

2

হাস্কেল , 78 64 53 বাইট

-14 বাইট ধন্যবাদ আর্জন জোহানসেনকে । -11 বাইট ovs ধন্যবাদ ।

f x=sum[i^2|i<-[1..x],x`mod`i<1]`elem`map(^2)[1..x^2]

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

আরে, কিছুক্ষণ হয়ে গেছে ... আমি কোনও কোড লিখেছি , তাই আমার হাস্কেল এবং গল্ফিং কিছুটা মরিচা হতে পারে। আমি কষ্টকর হাস্কেল সংখ্যার প্রকারগুলি ভুলে গেছি। : P: P


1
অন্য তালিকা বোধগম্য সহ বর্গমূলের অনুসন্ধান করে এই রূপান্তরগুলি এড়াতে এটি আরও কম (তবে ধীর) er এটি অনলাইন চেষ্টা করুন!
janrjan জোহানসেন

1
অপেক্ষাকৃত ছোট: FX | গুলি <-sum [আমি ^ 2 | আমি <- [1..x], গেলিক ভাষার এক্স আমি <1] = বৃত্তাকার (বর্গমূল $ toEnum গুলি) ^ 2 == গুলি
ডেমিয়েন

2
Orjan Johansen এর পরামর্শের উপর তৈরী, এই 53 বাইট জন্য কাজ করা উচিত।
ovs

2

পাইট , 7 বাইট

ð²ƩĐř²∈

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

ব্যাখ্যা

            Implicit input
ð           Get list of divisors
 ²          Square each element
  Ʃ         Sum the list [n]
   Đ        Duplicate the top of the stack
    ř²      Push the first n square numbers
      ∈     Is n in the list of square numbers?
            Implicit output

ð²Ʃ√ĐƖ=

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

ব্যাখ্যা

            Implicit input
ð           Get list of divisors
 ²          Square each element
  Ʃ         Sum the list [n]
   √        Take the square root of n
    Đ       Duplicate the top of the stack
     Ɩ      Cast to an integer
      =     Are the top two elements on the stack equal to each other?
            Implicit output

ð²Ʃ√1%¬

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

ব্যাখ্যা

            Implicit input
ð           Get list of divisors
 ²          Square each element
  Ʃ         Sum the list [n]
   √        Take the square root of n
    1%      Take the square root of n modulo 1
      ¬     Negate [python typecasting ftw :)]
            Implicit output




1

গণিত, 32 বাইট

IntegerQ@Sqrt[2~DivisorSigma~#]&

খাঁটি ফাংশন। ইনপুট এবং রিটার্ন হিসাবে Trueবা Falseআউটপুট হিসাবে একটি সংখ্যা নেয় । নিখুঁত স্কোয়ারগুলি পরীক্ষা করার জন্য একটি ছোট পদ্ধতি আছে কিনা তা সম্পূর্ণ নিশ্চিত নয় sure






1

এফ #, 111 বাইট

let d n=Seq.where(fun v->n%v=0){1..n}
let u n=
 let m=d n|>Seq.sumBy(fun x->x*x)
 d m|>Seq.exists(fun x->x*x=m)

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

সুতরাং d1 এবং nসমেতের মধ্যে সমস্ত সংখ্যার জন্য বিভাজন পান । মূল ফাংশনে u, প্রথম লাইনটি সমস্ত স্কোয়ার বিভাজকের যোগফল নির্ধারিত করে m। দ্বিতীয় লাইনে বিভাজক পায় mএবং তাদের কোনও শ্রেণীর সমান কিনা তা নির্ধারণ করে m


1

পার্ল 5, 47 বাইট

$a+=$_*$_*!($n%$_)for 1..$n;$a=!($a**.5=~/\D/); 

সত্যের জন্য 1 প্রদান করে এবং মিথ্যের জন্য কিছুই দেয় না।

ব্যাখ্যা:

$a+=              for 1..$n;                      sum over i=1 to n
    $_*$_                                         square each component of the sum
         *!($n%$_)                                multiply by 1 if i divides n.
                            $a=                   a equals
                                ($a**.5           whether the square root of a
                               !       =~/\D/);   does not contain a non-digit.

1

গ্রোভি , 47 বাইট

একটি ল্যাম্বদা একটি সংখ্যার যুক্তি গ্রহণ করছে।

n->s=(1..n).sum{i->n%i?0:i*i}
!(s%Math.sqrt(s))

ব্যাখ্যা

(1..n) 1 থেকে n এর মানগুলির একটি অ্যারে তৈরি করে

n%iযদি বাকীটি ছাড়াই iবিভাজন হয় তবে nএটি মিথ্যা (যেমন 0 টি মিথ্যা)

n%i ? 0 : i*iমানটির বর্গক্ষেত্রের যোগফল iযদি nএটি বাকী ছাড়াই বিভাজক হয়, অন্যথায় 0 হয়

sum{ i-> n%i ? 0 : i*i }iঅ্যারেতে সমস্ত পূর্ববর্তী ফলাফলের যোগফল দেয় ।

s%Math.sqrt(s)মিথ্যা (যেমন 0 টি মিথ্যা) যদি স্কয়ার্টটি বাকী অংশ ছাড়াই sবিভাজন করেs

!(s%Math.sqrt(s))ল্যাম্বদা থেকে ফিরে ( returnশেষ বিবৃতিতে অন্তর্নিহিত) !falseযখন স্কয়ার্টটি বাকী ছাড়াই sবিভাজন করেs

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


1

জাভা 8, 75 70 বাইট

n->{int s=0,i=0;for(;++i<=n;)s+=n%i<1?i*i:0;return Math.sqrt(s)%1==0;}

-5 বাইটস @ archangel.mjj ধন্যবাদ ।

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

ব্যাখ্যা:

n->{             // Method with integer parameter and boolean return-type
  int s=0,       //  Sum-integer, starting at 0
      i=0;       //  Divisor integer, starting at 0
  for(;++i<=n;)  //  Loop `i` in the range [1, n]
    s+=n%i<1?    //   If `n` is divisible by `i`:
        i*i      //    Increase the sum by the square of `i`
       :         //   Else:
        0;       //    Leave the sum the same by adding 0
  return Math.sqrt(s)%1==0;}
                 //  Return whether the sum `s` is a perfect square

1
হাই, আপনি টি ভেরিয়েবলটি সরিয়ে 5 বাইট কাটতে পারেন (লুপটির মূল অংশের মধ্যে ইওল এবং অ্যাসাইনমেন্টটি করুন), এর মতো: n->{int s=0,i=0;for(;++i<=n;)s+=n%i<1?i*i:0;return Math.sqrt(s)%1==0;}
archangel.mjj

@ archangel.mjj আহ, অবশ্যই। আমি কীভাবে এটি মিস করেছি তা নিশ্চিত নয়। ধন্যবাদ! :)
কেভিন ক্রুইজসেন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.