জাল বিভাজকের যোগফল বহুগুণ


23

কাজটি

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

0, 1, 1, 3, 1, 6, 1, 7, 4, 8

তদ্ব্যতীত, আপনার প্রোগ্রামটি অবশ্যই একটি জাল বহুবিদ , যার অর্থ নিম্নলিখিত the এটা অন্য প্রোগ্রামিং ল্যাঙ্গুয়েজ জন্য একটি বৈধ প্রোগ্রাম এল ' , এবং প্রতিটি ইনপুট জন্য 1 ≤ এন ≤ 10 (টেস্ট উপরে ক্ষেত্রে), এটা সঠিক ভাজক এর সমষ্টি ফেরৎ এন , কিন্তু কিছু বিদ্যমান 11 ≤ এন ≤ 10 000 , যার জন্য এটি সঠিক ফলাফল দেয় না। এটি ভুল কিছু, চিরকালের জন্য লুপ, ক্রাশ ইত্যাদি ফিরিয়ে আনতে পারে It এটি সমস্ত n ≥ 11 এর মধ্যে কিছু বা কেবল একটির জন্য একটি ভুল ফলাফল দিতে পারে ।

বিধি এবং স্কোরিং

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

মনে রাখবেন যে আপনি যদি নন-এএসসিআইআই এনকোডিংগুলির সাথে প্রোগ্রামিং ভাষাগুলি ব্যবহার করেন (যেমন অনেকেই এই সাইটে করেন) তবে উভয় ভাষার জন্য বাইটের একই ক্রম অবশ্যই ব্যবহার করা উচিত। এর অর্থ হ'ল আপনি হয় সম্ভাব্য বিভিন্ন কোড পৃষ্ঠাগুলির মধ্যে রূপান্তর করতে হবে বা বহু-বাইট ইউনিকোড অক্ষরের জন্য শাস্তি ভোগ করতে হবে।

অতিরিক্ত পরীক্ষার মামলা

20 -> 22
36 -> 55
180 -> 366
997 -> 1
2875 -> 869
10000 -> 14211

উত্তর:


10

জাভাস্ক্রিপ্ট ( ইএস 6 ), ভি 8 / স্পাইডারমনকি বনাম চক্র , 66 63 বাইট

n=>[...Array(n)].map((_,d)=>s+=n%d?0:d,[0,n>10].sort(x=>s=x))|s

ডেমো

আউটপুট

ক্রোম এবং ফায়ারফক্সে উপরের স্নিপেটের আউটপুট (সমস্ত সঠিক):

[0,1,1,3,1,6,1,7,4,8,1,16,1,10,9,15,1,21,1,22]

প্রান্তে আউটপুট (1 দ্বারা বন্ধ, n = 11 থেকে শুরু হবে):

[0,1,1,3,1,6,1,7,4,8,2,17,2,11,10,16,2,22,2,23]

কেন?

.sort()পদ্ধতির স্পেসিফিকেশন দ্বারা কোনও অ্যালগরিদম চাপানো হয়নি । এমনকি এটি স্থিতিশীল হওয়ার প্রয়োজন নেই। সুতরাং, প্রতিটি জাভাস্ক্রিপ্ট ইঞ্জিন এর নিজস্ব বাস্তবায়ন ব্যবহার করে।

তবে সমস্ত ইঞ্জিন দিয়ে [0,1].sort(x=>x)দেয় [0,1]with

তাহলে পার্থক্য কী?

এখানে যা ঘটছে তা হ'ল চক্র 1কলব্যাক ফাংশনটিতে প্রথম (এবং কেবল) পুনরাবৃত্তির প্রথম প্যারামিটার হিসাবে চলেছে ( 1সাথে তুলনা করার জন্য জিজ্ঞাসা করছে 0), যখন ভি 8 এবং স্পাইডারমোনকি পাশ করছে 0(এর 0সাথে তুলনা জিজ্ঞাসা করছে 1)।

আপনার ব্রাউজারটি কী করছে তা পরীক্ষা করতে আপনি নীচের স্নিপেট ব্যবহার করতে পারেন।


1
এটি একটি গ্রহণযোগ্য সমাধান। আমি মূল পোস্টে এটি স্পষ্ট করব।
জাগারব

8

পাইথন 2 এবং পাইথন 3, 58 বাইট

পাইথন 2 এর জন্য টিআইও

পাইথন 3 এর জন্য টিআইও

lambda n:sum(i*(n<11or''==b'')for i in range(1,n)if n%i<1)

এটি অজগর 2 তে কাজ করে তবে প্রতিটি এন> 10 এর জন্য এটি পাইথন 3 এ 0 আউটপুট দেয়
All

  • পাইথন 2 এ '' == b''
  • পাইথন 3 এ '' != b''

7

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

function($n){for($d=$i=0;++$i<$n;)$d+=$i*!($n%$i);return"$n">10?0:$d;}

উভয় ভাষায়, এটি একটি বেনামে ফাংশন। জাভাস্ক্রিপ্ট সঠিক ফলাফল দেয় তবে পিএইচপি সমস্ত এন> = 11 এর জন্য 0 দেয় ।

এটি চেষ্টা করুন জেএস!

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

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

, বারবার 1 থেকে এন -1 সব সংখ্যার একটি চলমান সমষ্টি পালন: উভয় ভাষায় প্রথমে একই জিনিস করে আমি যার জন্য এন% i = 0

আচরণের পার্থক্যের কারণ কী তা হ'ল চূড়ান্ত অংশ:

return"$n">10?0:$d;

জাভাস্ক্রিপ্টে, "$n"কেবল একটি স্ট্রিং আক্ষরিক। সংখ্যার >সাথে তুলনা 10এটি সুস্পষ্টভাবে একটি সংখ্যায় কাস্ট করে, তবে যেহেতু এটি কোনও সংখ্যার মতো দেখাচ্ছে না, এটি NaN হয়ে যায়। কোনওভাবে কোনও সংখ্যার সাথে তুলনা করা হলে এনএএন মিথ্যা দেয়। ফলস্বরূপ, $dসর্বদা ফিরে আসে।

তবে, পিএইচপি-তে, "$n"একটি স্ট্রিং যা এর মান যুক্ত করে $n। যখন পিএইচপি এটি কোনও সংখ্যায় কাস্ট করে, এটি কেবলমাত্র এর মান হয়ে যায় $n। যদি এটি এর চেয়ে বেশি হয় 10তবে 0তার পরিবর্তে ফিরে আসে $d


7

05 এ বি 1 ই / জেলি ,  9  8 বাইট

বাইট-কোড (হেক্সাডেসিমাল):

d1 a8 4f 71 0d ad 53 fa

ব্যবহার জেলি এর কোড পৃষ্ঠার ফেরৎ কোন ভুল ফলাফল অত্যধিক সংখ্যা (যেমন এর একটি ইনপুট 12 আয় 12বদলে 16):

ẎƭOqÆḌS«

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

05AB1E এর কোড পৃষ্ঠা ব্যবহার করে সঠিক ফলাফল ফিরে আসে:

ѨOqмλSú

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

কিভাবে?

05AB1E 71( q) কে পার্স করে এবং ( যা) ছাড়ার নির্দেশ দেয় এবং তারপরে পার্সিং বন্ধ করে দেয়:

ѨOq - Takes input from stdin
Ñ    - get divisors
 ¨   - remove right-most (the input value itself - yielding proper divisors)
  O  - sum
   q - quit (causing an implicit print of the top of the stack)
...мλSú is never parsed

নির্ধারিত অর্থ ব্যতীত বাইটের প্রভাবের কারণে ƭএবং qডিলিমেটার হিসাবে অভিনয় করার কারণে জেলি পুরো প্রোগ্রামটিকে তিনটি লিঙ্ক হিসাবে আপ-ফ্রন্টকে পার্স করে । কোনও প্রোগ্রামের এন্ট্রি পয়েন্টটি এটি চূড়ান্ত লিঙ্ক:

Ẏ - Link 1 (never used), tighten list
...ƭ delimits links 1 & 2)

O - Link 2 (never used), cast from characters to their ordinals
...q delimits link 2 and the main link

ÆḌS« - Main link: number, n
ÆḌ   - proper divisors
  S  - sum
   « - minimum of that and n
     - as a full-program: implicit print

এটা 05AB1E / জেলি?
এরিক আউটগল্ফার

হ্যাঁ, স্থির, ধন্যবাদ; আমি শুধু ব্যাখ্যা লিখছিলাম।
জোনাথন অ্যালান

ÆḌSDএকটি বাইট সংরক্ষণ করে।
ডেনিস

@ ডেনিস বা আরও ভাল ÆḌSṚ
এরিক আউটগল্ফার

@ ডেনিস - ধন্যবাদ, খাওয়ার সময় অন্যরকম উপায় নিয়ে ভাবেন :)
জোনাথন অ্যালান

6

পাইথন 3 / পাইথন 2 , 64 60 58 বাইট

2 অফ বাইট বন্ধের জন্য @officialaimm ধন্যবাদ

lambda n:sum(d*(round((n>10)*.5)==n%d)for d in range(1,n))

পাইথন 3 এ এটি সঠিক ফলাফল দেয়। পাইথন 2 এ ইনপুট ছাড়িয়ে যাওয়ার জন্য আউটপুটটি ভুল 10। কোডটি ব্যাঙ্কারের গোলকে কাজে লাগায়, যা পাইথন 3 দ্বারা করেছে তবে পাইথন 2 দ্বারা নয়।

এটি অনলাইন চেষ্টা করুন! পাইথন 3 (সঠিক), পাইথন 2 (এর জন্য ভুল n > 10)।


আপনি প্রয়োজন হবে না [ ]
অফিসিয়ালাইম

6

পাইথন 3 / পাইথন 2 , 47 বাইট

lambda n:sum(d*(n%d<1)for d in range(10/n>0,n))

পাইথন 2 এ একটি নামহীন ফাংশন, জাল।

পাইথন 3 বা পাইথন 2 এর জন্য এটি অনলাইনে ব্যবহার করে দেখুন

পাইথন 2 /এ পূর্ণসংখ্যার যুক্তিগুলির সাথে পূর্ণসংখ্যা বিভাগ হয়, যেখানে পাইথন 3 এ এটি বিভাগ হয়।

পাইথন 2- তে 10 মূল্যায়ন 0n ছাড়িয়ে গেলে , কিন্তু পাইথন 3-তে একটি সামান্য ধনাত্মক সংখ্যায় (এটি অবশ্যই কমপক্ষে 10,000 এর সর্বোচ্চ প্রয়োজনের ক্ষেত্রে সত্য )) 10/n

যেমন 10/n>0মূল্যায়ণ Trueপাইথন 3 জন্য এবং range(10/n>0,n)সমতূল্য range(1,n)যখন পাইথন 2 10/n>0মূল্যায়ণ করতে Falseযখন nঅতিক্রম করে 10 যাহার ফলে range(10/n>0,n)সমতূল্য হয়ে range(0,n)ঘটাচ্ছে n%dমডিউল গাণিতিক শূন্য, একটি উত্থাপন সঞ্চালন করার প্রচেষ্টা ZeroDivisionError


5

জেলি / 05 এএবি 1 ই , 12 বাইট

জেলি কি দেখেছে:

11⁻iẎƭO}qÆḌS

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

ব্যাখ্যা:

qজেলিতে অসমর্থিত, তাই জেলি কেবল তার পরে "কী" দেখায় q

ÆḌS
ÆḌ  Proper divisors
  S Sum

05AB1E কী দেখেছে:

11‹iѨO}qмλS

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

ব্যাখ্যা:

11‹iѨO}qмλS Implicit input multiple times
11           Push 11
  ‹          Less than 11?
   i   }     If equals 1, then
    Ñ         Divisors
     ¨        Remove last
      O       Sum
       q     Implicit print and quit
        м    Negative filter
         λ   Undefined, ignored error
          S  Split into chars

অবশ্যই "ছাড়ার" পরে সমস্ত কিছু ঘটে না।


ইচ্ছে ÆḌSকরে নিজেই বৈধ হয়ে যেত ... অসাধারণ উত্তর!
মিঃ এক্সকোডার 14

@ মিঃ এক্সকোডার আমি নিশ্চিত না যে 05 এবি 1 ই-এ কীভাবে мλSকাজ করবে।
এরিক আউটগল্ফার

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