এটি কি হার্ডি-রামানুজন-সংখ্যা-ইশ হর্ষদ সংখ্যা?


16

পটভূমি

1729 নম্বরটি হার্ডি-রামানুজন নম্বর। এর একটি আশ্চর্যজনক সম্পত্তি আবিষ্কার করেছিলেন এস রামানুজন (যাকে সর্বকালের সর্বশ্রেষ্ঠ ভারতীয় গণিতবিদ 1 হিসাবে বিবেচনা করা হয় ), যখন জি এইচ হার্ডি একটি হাসপাতালে তাঁর সাথে দেখা করেছিলেন। হার্ডির নিজস্ব কথায়:

আমার মনে আছে তিনি একবার পুত্নিতে অসুস্থ অবস্থায় তাঁকে দেখতে গিয়েছিলেন to আমি ১ cab২২-এর ট্যাক্সি ক্যাবটিতে চড়েছিলাম এবং মন্তব্য করেছিলাম যে নম্বরটি আমার চেয়ে নিস্তেজ মনে হয়েছে এবং আমি আশা করি এটি কোনও প্রতিকূল শুভ নয়। "না," তিনি উত্তর দিয়েছিলেন, "এটি একটি খুব আকর্ষণীয় সংখ্যা; এটি দুটি পৃথক উপায়ে দুটি কিউবের সমষ্টি হিসাবে স্বল্পতম সংখ্যা" "

তা ছাড়াও এর আরও অনেক আশ্চর্যজনক বৈশিষ্ট্য রয়েছে। এরকম একটি সম্পত্তি হ'ল এটি একটি হর্ষাদ নম্বর, অর্থাত্ এর অঙ্কগুলির যোগফল (1 + 7 + 2 + 9 = 19) এটির একটি কারণ। তাও, একটি বিশেষ। যেমনটি মাসাহিকো ফুজিওয়ারা দেখিয়েছেন, 1729 একটি ধনাত্মক পূর্ণসংখ্যা যা তার অঙ্কগুলি যখন এক সাথে যুক্ত করা হয় তখন একটি যোগফল তৈরি করে, যখন তার বিপরীতে বহুগুণ হলে মূল সংখ্যাটি পাওয়া যায়:

1 + 7 + 2 + 9 = 19

19 × 91 = 1729

একটি ধনাত্মক পূর্ণসংখ্যা যেমন সম্পত্তি থাকার আমি হার্ডি-Ramanujan- কি সংজ্ঞায়িত হয় পর হরশাদ নম্বর, এই পোস্টের উদ্দেশ্যে নয়। (এটির জন্য কোনও প্রযুক্তিগত শব্দ থাকতে পারে তবে আমি এটি A110921 এর সদস্য না হলে খুঁজে পাই না )


কাজটি

একটি ধনাত্মক পূর্ণসংখ্যা দেওয়া nইনপুট, আউটপুট কিনা ইনপুটের ভিত্তিতে একটি truthy বা falsey মান nএকটি হার্ডি-Ramanujan- হয় পর হরশাদ সংখ্যা। আউটপুট সত্য, এটি যদি হয়। অন্যথায়, আউটপুট মিথ্যা।

লক্ষ্য করুন মাত্র চারটি হার্ডি-Ramanujan- পর হরশাদ নাম্বার অস্তিত্ব ( 1, 81, 1458এবং 1729), এবং আপনি কোড লিখতে পারেন যা তাদের সঙ্গে সমানতা জন্য চেক। তবে আমি মনে করি না যে মজা হবে।


ইনপুট

আপনার প্রোগ্রামটি ইতিবাচক পূর্ণসংখ্যার (একটি প্রাকৃতিক সংখ্যা, অন্য কথায়) নেওয়া উচিত। এটি কোনও ভেরিয়েবলের উপস্থিতি ধরে নেওয়া ছাড়া এটি যে কোনও উপায়ে নিতে পারে। মডেল উইন্ডো, ইনপুট বাক্স, কমান্ড লাইন, ফাইল ইত্যাদি থেকে পড়া অনুমোদিত। ফাংশন আর্গুমেন্ট হিসাবে ইনপুট নেওয়াও অনুমোদিত।


আউটপুট

আপনার প্রোগ্রামটি সত্যবাদী বা মিথ্যা মান আউটপুট করা উচিত। তাদের ধারাবাহিক হওয়ার দরকার নেই। আপনার প্রোগ্রামটি ভেরিয়েবলের আউটপুট লেখার ব্যতীত যে কোনও উপায়ে আউটপুট দিতে পারে। স্ক্রিন, কমান্ড লাইন, ফাইল ইত্যাদিতে লেখার অনুমতি রয়েছে। ফাংশন সহ আউটপুটিংও returnঅনুমোদিত।


অতিরিক্ত বিধি

  • টাস্কটি সম্পাদনের জন্য আপনাকে অবশ্যই কোনও অন্তর্নির্মিত ব্যবহার করা উচিত নয় (আমি ভাবছি যে কোনও ভাষায় এমন বিল্ট-ইন থাকবে তবে তার পরে ম্যাথমেটিকা ​​... )

  • স্ট্যান্ডার্ড লুফোলস প্রযোজ্য।


পরীক্ষার কেস

Input        Output
1            Truthy (because 1 × 1 (reverse of 1) = 1)
2            Falsey
3            Falsey
4            Falsey
5            Falsey
81           Truthy (because 9 (8 + 1) × 9 (reverse of 9) = 81)
1458         Truthy (because 18 (1 + 4 + 5 + 8) × 81 (reverse of 18) = 1458)
1729         Truthy (because 19 (1 + 7 + 2 + 9) × 91 (reverse of 19) = 1729)
1730         Falsey
2017         Falsey

বিজয়ী মানদণ্ড

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


1 প্রতি বছর, 22 য় ডিসেম্বর, শ্রীনিবাস রামানুজন এর জন্মদিন, জাতীয় গণিত দিবস ভারতে পালন করা হয়। তাঁর সহকর্মীরা, কেমব্রিজের লোকেরা তাঁকে তুলনা করেছিলেন জ্যাকোবি, অয়লার এবং এমনকি নিউটনের সাথেও। এত বড় হওয়ার পাশাপাশি তাঁর খাঁটি গণিতে প্রায় কোনও আনুষ্ঠানিক প্রশিক্ষণ ছিল না , তবুও তিনি গাণিতিক বিশ্লেষণ , সংখ্যা তত্ত্ব , অসীম ধারা এবং অবিরত ভগ্নাংশে গুরুত্বপূর্ণ অবদান রেখেছিলেন । দুর্ভাগ্যক্রমে, তিনি মনে মনে হাজারো গাণিতিক আবিষ্কার নিয়ে 32 বছর বয়সে মারা গিয়েছিলেন। তাঁর উপর একটি চলচ্চিত্রও নির্মিত হয়েছিল , যা তাঁর জীবনী অবলম্বনে তৈরি হয়েছিল ,দ্য ম্যান হু ইনফিনিটি


4
"তবে আপনাকে অবশ্যই কোড লিখবেন না যা তাদের সাথে সমতার জন্য পরীক্ষা করে।" এটি একটি অ-পর্যবেক্ষণযোগ্য প্রোগ্রাম প্রয়োজনীয়তা
মার্টিন ইন্ডার

@ মার্টিনেেন্ডার তবে তারপরে সংখ্যাটি 1729, 1458, 81 বা 1 এর সমান হবে । আমি মনে করি না যে এটি কোন মজা হবে।
অর্জুন

2
ডাউনভোটস কেন?
অর্জুন

প্রুফ: n সংখ্যা সহ একটি সংখ্যার সর্বাধিক ডিজিটাল যোগফল 9n। 9n এর বিপরীতে সর্বাধিক 90n হবে। সুতরাং, পণ্যটি সর্বাধিক 810n ^ 2 হবে, যার অবশ্যই n সংখ্যা হবে, সুতরাং এটি অবশ্যই কমপক্ষে 10 ^ (এন -1) হওয়া উচিত। যখন এন =,, এটি বেশ সম্পন্ন হয়েছে, তাই কেবলমাত্র 999999 পর্যন্ত পরীক্ষা করা উচিত
লিকি নুন

6
আমি মনে করি আপনার সাথে তাদের সমতুল্যতা পরীক্ষা করার অনুমতি দেওয়া উচিত। এই ধরণের উত্তরগুলি যাইহোক ডাউনবোটগুলি পেতে পারে এবং সম্ভবত কিছু ক্ষেত্রে এটি দীর্ঘতর হবে।
Okx

উত্তর:


12

নিম , 5 বাইট

𝐬D𝐫𝕋𝔼

ব্যাখ্যা:

Example input: 1729
𝐬      Implicitly convert to digit list and 𝐬um the digits [19]
 D     Duplicate [19, 19]
  𝐫    𝐫everse [19, 91]
   𝕋   mul𝕋iply [1729]
    𝔼  check for 𝔼quality with input [1]
Implicit output: 1

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


অন্য 4 টি বাইট কি অপূরণীয়? আমি 1 বাইট গণনা করছি
GamrCorps

1
@ গ্যামার কর্পস মনে হচ্ছে এগুলি আপনার ব্রাউজার দ্বারা সমর্থিত নয়। এখানে একটি চিত্র: puu.sh/wpETt/9f92af18e0.png
Okx

1
ভাল, কিন্তু 5 এনকোডিং বাইট? :-) এখানে 5 টি অক্ষরের মধ্যে U (U + 1D42C ম্যাথমেটিকাল বোল্ড স্মল এস) , 𝐫 (ইউ + 1D42 বি ম্যাথিম্যাটিকাল বোল্ড স্মার্ট আর) , 𝕋 (ইউ + 1D54 বি ম্যাথেমিকাল ডাবল-স্ট্রাক ক্যাপিটাল টি) এবং 𝔼 (ইউ + 1 ডি 5 ) ডাবল-স্ট্রাক ক্যাপিটাল ই) প্রতিটি ইউটিএফ -8 (ইউটিএফ -16 এবং স্পষ্টতই) ইউটিএফ -32-তে 4 বাইট নেয়। সুতরাং এটি আসলে 17 বাইট, যদিও আমি অনুমান করি যে কেউ এএসসিআইআই + এর অক্ষরগুলির জন্য অনুকূলিত একটি কাস্টম এনকোডিং সংজ্ঞায়িত করতে পারে।
শ্রীভাতসারআর

3
@ শ্রীভাতসার আর নেইম নিজের কোড পৃষ্ঠাটি
দ্য_লোন_ডভিল

@ দ্য_লোন_ডভিল আহ যে এটি ব্যাখ্যা করবে, ধন্যবাদ!
শ্রীভাতসারআর

15

আর্নল্ডসি, 888 বাইট

IT'S SHOWTIME
HEY CHRISTMAS TREE i
YOU SET US UP 0
GET YOUR ASS TO MARS i
DO IT NOW
I WANT TO ASK YOU A BUNCH OF QUESTIONS AND I WANT TO HAVE THEM ANSWERED IMMEDIATELY
HEY CHRISTMAS TREE a
YOU SET US UP 0
GET TO THE CHOPPER a
HERE IS MY INVITATION 1
YOU ARE NOT YOU YOU ARE ME i
ENOUGH TALK
HEY CHRISTMAS TREE b
YOU SET US UP 0
GET TO THE CHOPPER b
HERE IS MY INVITATION 81
YOU ARE NOT YOU YOU ARE ME i
ENOUGH TALK
HEY CHRISTMAS TREE c
YOU SET US UP 0
GET TO THE CHOPPER c
HERE IS MY INVITATION 1458
YOU ARE NOT YOU YOU ARE ME i
ENOUGH TALK
HEY CHRISTMAS TREE d
YOU SET US UP 0
GET TO THE CHOPPER d
HERE IS MY INVITATION 1729
YOU ARE NOT YOU YOU ARE ME i
ENOUGH TALK
HEY CHRISTMAS TREE res
YOU SET US UP 0
GET TO THE CHOPPER res
HERE IS MY INVITATION a
CONSIDER THAT A DIVORCE b
CONSIDER THAT A DIVORCE c
CONSIDER THAT A DIVORCE d
ENOUGH TALK
TALK TO THE HAND res
YOU HAVE BEEN TERMINATED

আমি জানি, আমি কেবল সাম্যতা পরীক্ষা করে দেখি, তবে প্রোগ্রামটির মজাদার অংশ হওয়া উচিত নয়।

এটি পড়তে উপভোগ করুন। :)

সহজ পাঠযোগ্যতার জন্য সেখানে কিছু নতুন লাইন যুক্ত করা হয়েছে:

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


6
আমি তোমাকে পছন্দ করি. এই কারণেই আমি আপনাকে শেষমেষ হত্যা করব।
ডেভিড কনরাড

12

x86 সমাবেশ, 55 35 33 31 বাইট:

একটি এবিআই ধরে নেয় যেখানে রিটার্নের মান EAX এ থাকে এবং প্যারামিটারগুলি স্ট্যাকের উপর চাপ দেওয়া হয় ... সুতরাং প্রায় সবগুলিই।

00000000: 8B 44 24 04        mov         eax,dword ptr [esp+4]
00000004: 48                 dec         eax
00000005: 74 16              je          0000001D
00000007: 83 E8 50           sub         eax,50h
0000000A: 74 11              je          0000001D
0000000C: 2D 61 05 00 00     sub         eax,561h
00000011: 74 0A              je          0000001D
00000013: 2D 0F 01 00 00     sub         eax,10Fh
00000018: 74 03              je          0000001D
0000001A: 33 C0              xor         eax,eax
0000001C: C3                 ret
0000001D: 40                 inc         eax
0000001E: C3                 ret



4

জাভাস্ক্রিপ্ট ES6, 59 57 বাইট

x=>(q=eval([...x].join`+`)+'')*[...q].reverse().join``==x

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

মূলত অঙ্কের অ্যারেতে বিভক্ত হয় এবং এর সাথে যোগ হয় +এবং মূলত অঙ্কগুলি যোগ করতে সেই অভিব্যক্তিটি প্রকাশ করে। string*stringস্ট্রিংগুলি স্বয়ংক্রিয়ভাবে ইনসে রূপান্তরিত করবে। স্ট্রিং হিসাবে ইনপুট নেয়



2

রুবি, 69 বাইট

ইনপুট হিসাবে পূর্ণসংখ্যার সাথে প্রথমে চেষ্টা করুন:

->i{(x=i.to_s.split'').inject(0){|s,a|s+a.to_i}*(x[-1]+x[0]).to_i==i}

ইনপুট হিসাবে স্ট্রিং সহ দ্বিতীয় চেষ্টা করুন:

->i{(x=i.split('').map &:to_i).inject(0,&:+)*(x[-1]*10+x[0])==i.to_i}

.split('')তৈরি করা যায়.chars
কনার ও'ব্রায়ান

2

ব্যাচ, 164 বাইট

@set/an=%1,s=0
:s
@set/as+=n%%10,n/=10
@if %n% gtr 0 goto s
@set/an=s,r=0
:r
@set/ar=r*10+n%%10,n/=10
@if %n% gtr 0 goto r
@set/an=%1-r*s
@if %n%==0 echo 1

সাফল্যে 1 টি মুদ্রণ, ব্যর্থতার কোনও আউটপুট নেই।


2

জাভাস্ক্রিপ্ট (ES6), 72 বাইট

এটি বৈধ ES6 জমা দেওয়া। যোগ f=শুরু ও ডাকা মত এf(arg)

n=>(y=[...`${n}`].reduce((c,p)=>+c+ +p))*[...`${y}`].reverse().join``==n

পরীক্ষার স্নিপেট:

let f =

n=>(y=[...`${n}`].reduce((c,p)=>+c+ +p))*[...`${y}`].reverse().join``==n

console.log(1 + " -> " + f(1))
console.log(81 + " -> " + f(81))
console.log(1458 + " -> " + f(1458))
console.log(1729 + " -> " + f(1729))
console.log((randomNum = Math.floor(Math.random() * 10000) + 1) + " -> " + f(randomNum))


যেমনটি আমি সম্প্রতি শিখেছি, তত্ক্ষণাত আপনার নিজের চ্যালেঞ্জের জবাব দেওয়া উচিত নয়।
শেগি

@ শেগি তবে বৈধ।
Okx

3
এবং আমি সাধারণত তাদেরকে নীচে ফেলেছি যারা এই সম্প্রদায়ের বিষয়ে চিন্তা করে না।
লিকি নুন

1
@ ওক্স, এমন লোকদের মতে নয় যারা এই কাজটি করার জন্য আমাকে তাত্ক্ষণিকভাবে উজ্জীবিত করেছিল এবং ব্রেইট করেছিল। এই অনুশীলন অনুমোদিত কিনা তা নিয়ে আমাদের ধারাবাহিক হওয়া দরকার।
শেগি

3
আমি মনে করি এটি কারণ কারণ এটি চ্যালেঞ্জ পোস্টারটিকে একটি যথাযথ সময় সুবিধা দেয় কারণ তারা সম্ভব একটি চ্যালেঞ্জ তৈরি করতে পারে, সমাধান করতে পারে এবং তারপরে পোস্ট করতে পারে।
সম্পূর্ণরূপে

2

কোটলিন, 111 108 বাইট

fun main(a:Array<String>)=print(a[0].sumBy{c->"$c".toInt()}.run{"${this*"$this".reversed().toInt()}"}==a[0])

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

স্ট্যাটিকালি সংকলিত জেভিএম সমাধানগুলির জন্য যেমন আদর্শ, ঠিক মূল ফাংশন ডিক্লেয়ারেশন এবং কলিং প্রিন্ট () এ প্রচুর বাইট হারিয়ে যায়। ফাংশনটির মাংস ish০ টি বাইট, যা কোটলিনের মতো স্ট্যাটিকভাবে টাইপ করা ভাষার জন্য সাধারণ উদ্দেশ্যে মোটেই খারাপ নয়।

কোটলিন, বিরক্তিকর সমাধান, 69 বাইট

fun main(a:Array<String>)=print(a[0].toInt()in setOf(1,81,1458,1729))

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


1

বিফুরকেট অবশ্যই। DSODR*Qদেখার আগে আমার যা ছিল
যাদু অক্টোপাস উরন

@ কারাসোকম্পুটিং নিশ্চিত নয় কেন আপনার প্রথম প্রয়োজন D
এরিক আউটগল্ফার

1

পাইথন 2 , 55 বাইট

def f(n):x=sum(map(int,`n`));return x*int(`x`[::-1])==n

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

ব্যাখ্যা

def f(n):                           # define a function f that takes an argument n
    x = sum(                        # assign to x the sum of...
            map(int, `n`))          # ...the integer conversion of all elements in stringified n
    return x * int(                 # return True if x times the integer conversion of...
                   `x`[::-1])       # ...the stringified x reversed...
                              == n  # ...equals n

একটি eval()সমাধান হয় বিট 2 বাইট আর ...

def f(n):x=eval('+'.join(`n`));return x*int(`x`[::-1])==n

বিকল্প (অবৈধ?) সমাধান, 42 29 বাইট

এই সমাধানটি সমস্ত সংখ্যার বিপরীতে সাম্যের জন্য পরীক্ষা করে।

lambda n:n in[1,81,1458,1729]

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


বিকল্প বিকল্প সমাধান, একই দৈর্ঘ্য:[1,81,1458,1729].__contains__
musicman523


1

নিউস্ট্যাক , 16 বাইট

ḟᵢ¹f YΣ©Eᴙx| ∏=f

ভাঙ্গন:

উদাহরণ হিসাবে 1729 ব্যবহার করে Using

ḟᵢ                 Define new function equal to input.               []
  ¹                Add 1 to stack.                                   [1]
   f               Multiply stack by the function.                   [1729]
     Y             Split the stack into digits.                      [1,7,2,9]
      Σ            Sum the stack.                                    [19]
       ©           Duplicate stack.                                  [19,19]
        E  |       Define new value for the first element            [19,19]
         ᴙx        Reverse first element.                            [91,19]
             ∏     Take the product.                                 [1729]
              =f   Remove from stack if not equal to the function.   [1729]

মিথ্যা হিসাবে কিছুই প্রিন্ট করে না, এবং সত্যটি যদি আসল ইনপুট থাকে।


ফাংশনটি দিয়ে স্ট্যাককে গুণ করুন । আমি তা পেলাম না। তার মানে কি ইনপুট?
অর্জুন

হ্যাঁ এবং না, পরে ¹, স্ট্যাকটি গঠিত [1]। এবং যেহেতু আমরা আপনার ইনপুটটিকে সংজ্ঞায়িত করেছি fবা f(x)সমান করতে পারি তাই ফাংশন দ্বারা স্ট্যাকের প্রতিটি উপাদানকে গুণিত করা আমাদের ইনপুট দিয়ে fমূলত প্রতিস্থাপন করা হয় 1। (কারণ [1] * f(x)= [f])
গ্রাভিটন

1

এমএটিএল , 11 বাইট

tV!UstVPU*=

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

t - ইনপুট নিন এবং এটি সদৃশ করুন

V!U - স্বতন্ত্র অঙ্কগুলিতে বিভক্ত করুন

s - অঙ্কগুলি যোগ করুন

t - সেই অঙ্কটির সদৃশ করুন

VP - এটিকে স্ট্রিংয়ে পরিণত করুন, এটি বাম থেকে ডানদিকে উল্টান

U - এটি একটি সংখ্যায় ফিরিয়ে দিন

* - শেষ দুটি মানগুলি (অঙ্ক-যোগফল এবং তার বাম থেকে ডানদিকে ডানদিকে উল্টানো সংস্করণ) গুণ করুন

= - এটি আসল ইনপুট সমান কিনা তা পরীক্ষা করুন (যা স্ট্যাকের মধ্যে কেবলমাত্র অন্যান্য মান)








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