একটি সংখ্যা কি এর প্রতিটি অঙ্ক দ্বারা বিভাজ্য?


47

আমার বন্ধু এবং আমি আমাদের এপি কম্পিউটার সায়েন্স ক্লাসে একটি ল্যাবে কাজ করছিলাম এবং আমরা গল্ফকে একটির সমস্যা সমাধান করার সিদ্ধান্ত নিয়েছিলাম যেহেতু আমরা শেষ করার পরেও অর্ধেক ক্লাসটি ফ্রি ছিল। এখানে প্রশ্ন:

একটি সংখ্যা দেওয়া হয়েছে, n এর প্রতিটি অঙ্ক দ্বারা বিভাজ্য?

উদাহরণস্বরূপ, 128 এই পরীক্ষায় উত্তীর্ণ হবে - এটি 1,2 এবং 8 দ্বারা বিভাজ্য হবে কোনও শূন্য সহ যে কোনও সংখ্যা স্বয়ংক্রিয়ভাবে নম্বরটিকে অযোগ্য ঘোষণা করবে। আপনি যদি চান অন্য ভাষা ব্যবহার করতে পারেন এবং সেগুলির সাথে সমাধানগুলি পোস্ট করতে পারেন, তবে আমরা ক্লাসে ভাষাটি ব্যবহার করি তেমন কমপ্যাক্ট লোকেরা জাভাতে কীভাবে প্রোগ্রামটি তৈরি করতে পারে তা দেখতে আমরা আগ্রহী। এখনও অবধি, আমাদের দুজনেরই রয়েছে 51. এখানে আমার বর্তমান কোডটি রয়েছে:

public boolean dividesSelf(int n){for(int p=n;n%10>0;)n/=p%(n%10)>0?.1:10;return n<1;}
// 51 characters

// Breakdown:
// for(int p=n;         Saves one semicolon to put declaration into for loop
// n%10>0;)             Basic check-for-zero
// n/=                  Pretty simple, discarding one number off of n at a time
// p%(n%10)>0?          If p (the given value) is not divisible by n%10 (the current digit)...
// .1:10;               Divide by .1 (multiply by 10) so it fails the check next iteration. If it is divisible, divide by 10 to truncate the last digit
// return n<1           If the number was fully divisible, every digit would be truncated, and n would be 0. Else, there would still be non-zero digits.

আবশ্যকতা

পদ্ধতির স্বাক্ষর আপনি যা চান তা হতে পারে। শুধু ফাংশন বডি গণনা। যদিও নিশ্চিত হয়ে নিন যে পদ্ধতিটি একটি বুলিয়ান মান দেয় এবং কেবল একটি সংখ্যাসূচক প্যারামিটারে যায় (স্ট্রিং নয়)।

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

128 -> true
 12 -> true
120 -> false
122 -> true
 13 -> false
 32 -> false
 22 -> true
 42 -> false
212 -> true
213 -> false
162 -> true
204 -> false

এছাড়াও, আমরা গণ্য করা হবে না হোয়াইটস্পেস, তাই, একই কাজ করতে দ্বিধা বোধ করবেন না যদি না হোয়াইটস্পেস প্রোগ্রামের কাজ অপরিহার্য (তাই জাভা নতুন লাইন গণনা করা হয় না, কিন্তু এর মধ্যে একটি একক স্থান intএবং x=1সৌভাগ্য কামনা করছি না গণনা।) !


18
পিপিসিজিতে আপনাকে স্বাগতম! কয়েকটি পরামর্শ: ১. কার্যকরী সাদা স্থান গণনা না করা একটি খারাপ ধারণা। হোয়াইটস্পেসে লিখিত কোনও উত্তর স্বয়ংক্রিয়ভাবে জিতবে। 2. উচিত আমাদের জমা মুদ্রণ / রিটার্ন trueএবং falseবা হয় truthy / falsy মান ঠিক আছে হিসাবে ভাল? ৩. javaট্যাগটি এখানে সত্যিই প্রযোজ্য নয়, কারণ চ্যালেঞ্জটি নিজেই জাভা সম্পর্কিত নয় re
ডেনিস

ঠিক আছে. সমস্যাগুলির জন্য দুঃখিত। কেবল এটি পরিষ্কার করার জন্য, আপনি কি 'int p = n' এর স্থানটিকে কার্যক্ষম বলে বিবেচনা করবেন, কারণ আমি আগে করি নি। আপনার নির্দেশিত অন্যান্য সমস্যাগুলি আমি ঠিক করব।
ম্যাথিউ কিরশবাউম

5
কোডটি কাজ করার জন্য প্রয়োজনীয় সমস্ত শ্বেত স্পেস কার্যক্ষম।
FryAmTheEggman

ঠিক আছে, প্রতিক্রিয়া জন্য ধন্যবাদ!
ম্যাথিউ কিরশবাউম

1
@ রিকিডিমার: যেহেতু 0 ক্ষেত্রে এক্ষেত্রে ব্যতিক্রমী ইনপুট হবে (এটি 0সংখ্যাগুলির মধ্যে একমাত্র সংখ্যা যা তাদের প্রত্যেকের একাধিক) তাই আমি ধারণা করি যে বেশিরভাগ উত্তর কেবল এটির জন্য একটি চেক অন্তর্ভুক্ত করার জন্য একটি অনিচ্ছাকৃত উপায়ে আরও দীর্ঘতর হবে। সুতরাং আমি শিরোনাম দ্বারা উত্সাহিত হিসাবে সমস্যাটি আরও ভাল পছন্দ করে (এর অঙ্কগুলির দ্বারা একাধিক হওয়ার চেয়ে এটির সংখ্যাগুলি দ্বারা বিভাজ্য, যা 0 বাদ দেয়)।
জেরোইন মোস্টার্ট

উত্তর:


23

পার্ল 6, 13

sub golf($_) {
   $_%%.comb.all
}

অন্তর্ভুক্ত পরিবর্তনশীল ব্যবহার করে $_- $_ %% .comb.allএর সমতুল্য $_ %% all($_.comb)%%এটি "বিভাজ্য" অপারেটর এবং combকোনও অতিরিক্ত যুক্তি ছাড়াই একটি স্ট্রিং-এর অক্ষরের একটি তালিকা প্রদান করে। উদাহরণস্বরূপ, যদি তর্কটি 123 হয় তবে ফাংশনটি মূল্যায়ন করে

123 %% all(123.comb)

যা হলো

123 %% all(1, 2, 3)

জংশন অটোথ্রেডিং এটি করে

all(123 %% 1, 123 %% 2, 123 %% 3)

যা হলো

all(True, False, True)

যা বুলিয়ান প্রসঙ্গে মিথ্যা কারণ এটি একটি "সমস্ত" জংশন এবং স্পষ্টতই এর সমস্ত উপাদান সত্য নয়।

Boolফাংশন স্বাক্ষর করে কলকারীর কাছ থেকে জংশন-নেসকে রিটার্নের মানটি জোর করা এবং আড়াল করা সম্ভব হওয়া উচিত sub golf($_ --> Bool()), তবে ফাংশন স্বাক্ষরে জোর দিয়ে রাকুদোতে এখনও কাজ করে না। ফেরতের মানটি এখনও সঠিকভাবে সত্য বা মিথ্যা, এটি ঠিক নয় Trueবা হয় False


আপনি যদি এটি ফিরিয়ে আনতে চান তবে কোডের সামনের দিকে কিছু Boolযোগ করুন । soso$_%%.comb.all
ব্র্যাড গিলবার্ট বিবিগিল

21

সি # এবং সিস্টেম.লিঙ্ক - 26/40

নিয়ম অনুসারে, পদ্ধতি ঘোষণা নিজেই গণনা করা হচ্ছে না।

bool dividesSelf(int i) { 
    return(i+"").All(d=>i%(d-48d)<1);
}

আবার দেখানো হচ্ছে, জাভা বিবেচনাধীন যখন সি # উচ্চতর পছন্দ ... আমি বাচ্চা, আমি ছাগলছানা!

দুর্ভাগ্যক্রমে, এই ফাংশনটি (এবং অন্যান্য উত্তরে অনেকগুলি) নেতিবাচক ইনপুটটির জন্য সঠিক ফলাফল আনবে না। আমরা এটিকে ঠিক করতে পারি, তবে সমাধানটি তার মনোযোগ অনেক হারিয়ে ফেলে (এবং দৈর্ঘ্যে 46 টি অক্ষরে বৃদ্ধি পায়):

return(i+"").All(d=>d>48&&i%(d-48)==0||d==45);

সম্পাদনা করুন : টিমের পরামর্শের সাথে একটি চরিত্র মুণ্ডন করা হয়েছে।

সম্পাদনা করুন : সি # 6 তে অভিব্যক্তি-দেহী সদস্যদের পরিচয় দিয়ে , আমরা এটিকে আরও কেটে ফেলাতে পারি return:

bool dividesSelf(int i) =>
    (i+"").All(d=>i%(d-48d)<1);

মোট ২ characters টি অক্ষরের জন্য (আমার মতে, =>ধনুর্বন্ধনীগুলির চেয়ে আরও বেশি কিছু অন্তর্ভুক্ত করা উচিত নয়)। Negativeণাত্মক সংখ্যার হ্যান্ডলিং সংস্করণটি একইভাবে সংক্ষিপ্ত করা যেতে পারে।


কেন .0? পূর্ণসংখ্যা মডুলাস ব্যতীত অন্য কোনও কিছুর প্রয়োজন নেই।
পিটার টেলর

3
@ পিটারটেলর: আপনি যদি সংক্ষিপ্ততম প্রোগ্রাম চান - একটি পূর্ণসংখ্যার i % 0সাথে iএকটি দেয় DivideByZeroException
জেরোইন মোস্টার্ট

2
এবং একটি ডাবল এটি NAN দেয়! নিস!
পিটার টেলর

2
48dএকই 48.0, তবে একটি কম অক্ষর (ডাবল জন্য d)।
টিম এস

1
@ স্টুয়ার্টএলসি: ল্যাম্বডাস পদ্ধতি নয়; তাদের ক্ষেত্রটি আলাদা, তাই আমি মনে করি এটি বিধিগুলি খুব বেশি বাঁকানো। তবে সি # ((যা এই উত্তরটির পূর্বাভাস দেয়), আমাদের কাছে এক্সপ্রেশন দেহযুক্ত সদস্য রয়েছে, যা আমাদের সংজ্ঞা সংক্ষিপ্ত করতে দেয় do নেতিবাচক ক্ষেত্রে, আমরা ব্যবহার করতে পারি না &, স্পষ্টভাবে কারণ &শর্ট সার্কিট নয় - আপনি এর উপর শূন্য ব্যতিক্রম দ্বারা একটি বিভাজন পাবেন %। আমরা এটিকে একটি দ্বিগুণ (দিয়ে d) তৈরি করে ঠিক করতে পারি , তবে তারপরে আমরা আবার একটি অক্ষর হারিয়েছি।
জেরোইন মোস্টার্ট

18

এপিএল ( 13 11)

(স্পষ্টত বন্ধনী গণনা করা হয় না)

{0∧.=⍵|⍨⍎¨⍕⍵}

ব্যাখ্যা:

  • ⍎¨⍕⍵: স্ট্রিং প্রতিনিধিত্ব প্রতিটি অক্ষর মূল্যায়ন
  • ⍵|⍨: তাদের প্রত্যেকের জন্য, এর মডুলোটি সন্ধান করুন এবং
  • 0∧.=: দেখুন যে এই সমস্তগুলি সমান কিনা 0

Testcases:

      N,[.5] {0∧.=⍵|⍨⍎¨⍕⍵} ¨ N←128 12 120 122 13 32 22 42 212 213 162 204
128 12 120 122 13 32 22 42 212 213 162 204
  1  1   0   1  0  0  1  0   1   0   1   0

এপিএল করতে পারে X%0? ছোঁড়া ছাড়াই?
অপ্টিমাইজার

@ অপ্টিমাইজার: হ্যাঁ 0|Xদেয় X
মেরিনাস

মিষ্টি। এছাড়াও আপনার উত্তরটি 11 বাইট নয় 13 টি
অপ্টিমাইজার

9
কেবলমাত্র এপিএল 0 দ্বারা
মডিউলগুলিতে

3
Dfn পরিবর্তে একটি ট্রেন সঙ্গে খাটো একটি অক্ষর:(0∧.=⍎¨∘⍕|⊢)
ngn

14

পাইথন 2: 43 টি অক্ষর

f=lambda n:any(n%(int(d)or.3)for d in`n`)<1

এই সংখ্যার কোনও ননজারো বাকী অংশ রয়েছে কিনা তা পরীক্ষা করে এটি পরীক্ষা করে এবং এটির উপেক্ষাকে আউটপুট করে। জিরো ডিজিটগুলি অদ্ভুতভাবে পরিচালনা করা হয়: যেহেতু কম্পিউটিংয়ের %0ফলে ত্রুটির সৃষ্টি হয়, এর সাথে অঙ্কগুলি 0প্রতিস্থাপন করা হয় .3যা ভাসমান পয়েন্টের ভুলগুলির কারণে সর্বদা একটি ননজারো ফলাফল দেয় বলে মনে হয়।

ফাংশন বডি 32 অক্ষর।


14

পার্ল - 27 বাইট

sub dividesSelf{
    $_=pop;s/./!$&||$_%$&/ger<1
}

নির্দেশ মতো ফাংশনের স্বাক্ষর গণনা করা হচ্ছে না।

নমুনা ব্যবহার:

use Data::Dump qw(dump);
for $i (128, 12, 120, 122, 13, 32, 22, 42, 212, 213, 162, 204) {
  printf "%3d -> %s\n", $i, dump(dividesSelf $i);
}

নমুনা আউটপুট:

128 -> 1
 12 -> 1
120 -> ""
122 -> 1
 13 -> ""
 32 -> ""
 22 -> 1
 42 -> ""
212 -> 1
213 -> ""
162 -> 1
204 -> ""

অ্যাড্রেসিং সমস্যা স্পেসিফিকেশন: "শুধু বুলিয়ান সত্য এবং মিথ্যা মান গণনা Truthy / falsey মান না। না গণনা।"

use Data::Dump qw(dump);
dump(1 == 1);
dump(0 == 1);

আউটপুট:

1
""

'সত্য' এবং 'মিথ্যা' হিসাবে 1এবং হিসাবে সংজ্ঞায়িত করা হয়েছে ""

ত্রুটি-বিচ্যুতি:
হিসাবে ব্র্যাড গিলবার্ট ন্যায়ত তুলে ধরে , পার্ল সংজ্ঞায়িত সত্য স্কেলের যা উভয় পূর্ণসংখ্যা হিসাবে 1এবং স্ট্রিং "1"একযোগে, এবং মিথ্যা স্কেলের যা উভয় পূর্ণসংখ্যা হিসাবে 0এবং স্ট্রিং ""একযোগে।


এই ব্যবহার করছেন না দ্বারা সংক্ষিপ্ত করা যেতে পারে $_: pop=~s///ger<1। ওপি তাতে সম্মত হবে কিনা 1এবং ""বৈধ ফলাফল কিনা তা আমি জানি না । যদি তা না হয় তবে এটি আরও দুটি বাইট সহ স্থির করা যেতে পারে: কেবল যুক্ত করুন |0
এইচডিভি

perl -pe'$_=s/./!$&||$_%$&/ger<1|0'পতাকা |0এবং -pপতাকা সহ 26 বাইট । আপনাকে কোনও ফাংশন ব্যবহার করতে হবে না।
hmatt1

1
আসলে সত্য এবং মিথ্যা মান আরো ভালো হয় dualvar(1,'1')এবং dualvar(0,'')
ব্র্যাড গিলবার্ট বিবিগিল

1
@ ব্র্যাডগিলবার্ট এটি আকর্ষণীয়। আমি ভ্রষ্টদের সাথে যুক্তিসঙ্গতভাবে পরিচিত, তবে আমি জানতাম না যে সত্য এবং মিথ্যা বিশেষভাবে কেসযুক্ত ছিল। এগুলি আসলে 'ট্রিপল স্কেলার', SVIV(ইনট), SVNV(ডাবল) এবং SVPV(স্ট্রিং) হিসাবে চিহ্নিত ।
primo

1
আসলে আপনি যখন প্রথমবার স্ট্রিংটিকে একটি সংখ্যা বা একটি সংখ্যা হিসাবে স্ট্রিং হিসাবে ব্যবহার করেন তখন অতিরিক্ত তথ্যটি ধরে রাখতে ভেরিয়েবলটি সংশোধিত হয়। এই কারণেই আপনি কেবল প্রথমবার 'abc'সংখ্যার হিসাবে ব্যবহার করার জন্য একটি সতর্কতা পেয়েছেন (ধরে use warnings;
নিলেন

13

সিজেম, 11 10 বাইট

{
    _Ab:df%:+!
}:F;

এটি নামের একটি ফাংশন সংজ্ঞায়িত করে Fএবং স্ট্যাক থেকে ব্লকটিকে বিচ্ছিন্ন করে।

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

পরীক্ষার মামলা

$ cjam <(echo '{_Ab:df%:+!}:F;[128 12 120 122 13 32 22 42 212 213 162 204]{F}%p')
[1 1 0 1 0 0 1 0 1 0 1 0]

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

_      " Copy the integer on the stack.                                          ";
Ab     " Push the array of its digits in base 10.                                ";
:d     " Cast each digit to Double.                                              ";
f%     " Take the integer on the stack modulus each of its digits.               ";
:+     " Add the results.                                                        ";
!      " Push the logical NOT of the sum.                                        ";

প্রশ্নটি লেখার সময় 10 বাইট সমাধানের জন্য সিজেএমের বৈশিষ্ট্যগুলি কী ছিল?
lirtosiast

@ থমাসকওয়া: হ্যাঁ তা হয়েছে। আমি কোডটি 0.6.2 সংস্করণে পরীক্ষা করেছি, যা জুলাই 2014 এ প্রকাশিত হয়েছিল।
ডেনিস

12

জাভাস্ক্রিপ্ট ES6, 39 32 28 বাইট

v=>[...""+v].every(x=>v%x<1)

ধন্যবাদ পরামর্শের প্রতিস্থাপন জন্য core1024 (""+v).split("")সঙ্গে [...""+v], এবং ব্যবহার পরামর্শ জন্য openorclose everyফাংশন।

উত্তরে বর্তমানে আমার কোডের একটি বিট নেই O

পূর্ববর্তী সমাধান

v=>[...""+v].filter(x=>v%x|!+x)==""

==""কোনও অ্যারে খালি কিনা তা যাচাই করার বৈধ উপায় নয়, যেহেতু [""]==""রিটার্ন আসে trueতবে অ্যারেটি খালি স্ট্রিং না রাখার গ্যারান্টিযুক্ত, সুতরাং এটি এখানে কাজ করে।

বাকিগুলি জাভাস্ক্রিপ্টে বেশ স্ট্যান্ডার্ড শর্টহ্যান্ড টাইপ রূপান্তর।


1
আপনি প্রতিস্থাপন করে কিছু characteras সংরক্ষণ করতে পারবেন (""+v).split("")সঙ্গে [...""+v]
কোর 1024

1
everyপদ্ধতিটি ব্যবহার করবেন না কেন ? v=>[...""+v].every(x=>v%x<1);
ওপেনক্র্লোজ

@ ওপেনরোক্লোজ: ধন্যবাদ এটি কখনই জেএসে ব্যবহার করার সুযোগ হয়নি, তাই আমি কখনই এই জাতীয় ক্রিয়াকলাপটি অনুসন্ধান করার কথা ভাবিনি।
n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳

v=>![...""+v].some(x=>v%x)
l4m2

@ l4m2 যেহেতু v%0রিটার্ন দেয় NaNএবং NaN == falseতাই আপনার কেস নম্বরগুলিতে 0 থাকে যেমন 10ফিরে আসতে পারে true
Shieru Asakoto


8

পাইথ, 12 বাইট

!f|!vT%vzvTz

এটি শূন্য ( !vT) বা ইনপুট ( %vzvT) ভাগ না করার জন্য স্ট্রিংয়ের অক্ষরগুলি ফিল্টার করে , তারপরে ফলাফলের তালিকার যৌক্তিক নয়।

এখানে চেষ্টা করুন।


না, কোনও ফাংশন ব্যবহার না করা হলে আমি ভাল আছি। আমি কেবল এমন কারও দিকে ইঙ্গিত করতে চেয়েছিলাম যা ফাংশন ব্যবহার করছে যা তাদের ঘোষণাপত্রটি গণনার দরকার নেই, এবং কেবলমাত্র ভিতরে কোড।
ম্যাথিউ কিরশবাউম

8

রুবি, 44 বাইট (ফাংশন বডি: 37)

সম্ভবত আরও গল্ফ হওয়ার সম্ভাবনা রয়েছে।

f=->n{n.to_s.chars.all?{|x|x>?0&&n%x.hex<1}}

ফাংশনের মাধ্যমে নেওয়া ইনপুট f। ব্যবহারের উদাহরণ:

f[128] # => true
f[12]  # => true
f[120] # => false
...

1
আপনি পরিবর্তন .to_iকরতে পারেন .hex, যেহেতু একক-অঙ্কের সংখ্যাগুলি বেস 16 এ সমান, এবং এতে পরিবর্তন ==0করতে পারে <1
হিস্টোক্র্যাট

8

পাইথন - 59 50 49 47 বাইট

f=lambda n:all(c>'0'and 0==n%int(c)for c in`n`)

আমি নিশ্চিত একটি দ্রুত উপায় আছে ... ওহ ভাল।

সম্পাদনা করুন - গল্ফিং টিপসের জন্য FryAmTheEggman কে ধন্যবাদ।

সম্পাদনা 2 - FryAmTheEggman পাশাপাশি এই সময়ে এটি লিখতে পারে, উফ

3 সম্পাদনা করুন - আপনি জেনেক্সপগুলিও জানতেন না তবে হাত আপ। ... শুধু আমি?


ওহ্ তোমাকে অনেক ধন্যবাদ! আমি এই সমস্ত জিনিস সম্পর্কে ভুলে যেতে রাখা। (আমি
বুঝতেও

ওহ, যুক্তিবিজ্ঞান আলোকসম্পাতের এটি একটি বিট কমান বলে মনে হয়: f=lambda n:all([c>'0'and 0==n%int(c)for c in`n`])। এবং কোনও সমস্যা নেই :)
FryAmTheEggman

ওহ, আমি বুঝতে পারি না যে এমনকি একটি পদ্ধতি ছিলall
কাসরান

চান 1>n%int(c)কাজ করে?
Sp3000

3
তালিকা-বোধগম্যতা কেন? জেন এক্সপ ব্যবহার করে: all(c>'0'and 0==n%int(c)for c in`n`)2 চর কম করে এমনকি তালিকার বরাদ্দ সংরক্ষণ করেও ঠিক একই কাজ করা হয়।
বাকুরিউ

8

পাইথ 11

!f%Q|vT.3`Q

এটি @ ইজ্যাক এবং @ xnor এর উত্তরগুলি একত্রিত করে । এটির মান পরীক্ষা করে ইনপুট থেকে অঙ্কগুলি ফিল্টার করে input % (eval(current_digit) or .3)। তারপরে এটি পরীক্ষিত ফলাফলটি স্ট্রিং ফাঁকা আছে কিনা তা যাচাই করে।

অন্য একটি দম্পতি একই দৈর্ঘ্যের রূপগুলি জুড়ে এসেছিল:

!f%Q|T.3jQT
!f|!T%QTjQT

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


5

বাশ + কোর্টিলস, 44 বাইট

সম্পূর্ণ ফাংশন সংজ্ঞা:

f()((`tr 0-9 \10<<<$1``sed "s/./||$1%&/g"<<<$1`))

আমি নিশ্চিত না যে কীভাবে এটি স্কোর করা যায় কারণ সাধারণত শেল ফাংশনগুলি একক সেট ব্যবহার করে {}বা ()ফাংশন বডি রাখে। আমি এখানে পেয়েছি আমি (())ফাংশন বডি ধারণ করতে ডাবলও ব্যবহার করতে পারি যা পাটিগণিতের বিস্তারের কারণ হয় যা আমার এখানে প্রয়োজন। সুতরাং আপাতত আমি এই বন্ধনীগুলির মধ্যে কেবল একটি জোড়া গণনা করছি - এর আরও আলোচনা স্বাগত।

আউটপুট:

$ for i in 128 12 120 122 13 32 22 42 212 213 162 204; do f $i; printf "%d " $?; done
1 1 0 1 0 0 1 0 1 0 1 0 $
$

উহ - তার আমার কাছে পরিষ্কার না কিনা 1s এবং 0 সেঃ গ্রহণযোগ্য বা প্রিন্ট করতে যদি আমার থাকে true/ false?
ডিজিটাল ট্রমা

4

জে - 14 চর

ফাংশন বডি এর পরে অংশ হয় =:। যদি আমরা পুরো ফাংশনটির জন্য চরিত্রের সংখ্যা হ্রাস করতে চাই তবে এটি 15 চর */@(0=,.&.":|])

f=:0*/@:=,.&.":|]

,.&.":সংখ্যাটি দশমিক অঙ্কের তালিকায় সংখ্যার আকারে প্রসারিত করার সংক্ষিপ্ততম উপায়: স্ট্রিংয়ে রূপান্তর করুন, অঙ্কগুলি পৃথক করুন এবং প্রতিটি অঙ্ককে একটি সংখ্যায় ফিরে রূপান্তর করুন। এই সংখ্যাগুলি ,.&.":|]ইনপুট নম্বর ( ]) মডুলো ( |) নেয় । 0*/@:=সমস্ত ফলাফল যদি 0 হয় সত্য হয়, অন্যথায় একটি মিথ্যা দেয়।

   f 162
1
   f every 204 212 213
0 1 0

3

জাভা - 121 102 97 79 78 বাইট

আমি কেবল জানি এটি পরে ক্লোবারড হয়ে যাবে। আচ্ছা ভালো.

boolean b(int a){int m=10,j,t=1;for(;m<a*10;m*=10){j=10*(a%m)/m;if(j==0||a%j>0)t=0;}return t>0;}

আমি ফিরে আসবো.


1
আপনি এখন যা চান তা আপনার ফাংশনটির নাম দিতে পারেন। আমি নিয়মগুলি পরিবর্তন করেছি যাতে আপনি কেবল আসল ফাংশনের অভ্যন্তরে গণনাগুলি গণনা করেন তবে ফাংশনটি অবশ্যই একটি বুলিয়ান টাইপ ফিরিয়ে দেয়। সুতরাং যে বর্তমানে 86 অক্ষর এ।
ম্যাথিউ কিরশবাউম

3

হাস্কেল - 100 54 38

f x=all(\y->y>'0'&&x`mod`read[y]<1)$show x

এখনও শেখা, সমালোচকদের প্রশংসা


আমার এখানে একটি মন্তব্য ছিল, তবে আমি দুর্ঘটনাক্রমে এটি কোনওভাবে মুছে ফেলেছি ... যাইহোক, কিছু পরামর্শ: 1) lengthগুলি ফেলে দিন, তারা অপ্রয়োজনীয় are 2) tএর সংজ্ঞা দ্বারা প্রতিস্থাপন । 3) elem y sঅপ্রয়োজনীয়। 4) /='0'এর জায়গায় বাম ফিল্টারে সরানো যেতে পারে elem y s। 5) এই ক্ষেত্রে, /='0'সমান >'0', যেহেতু প্রতিটি অক্ষর একটি ডিজিট হয়। 6) modব্যাকটিকস রাখুন , তাই এটি infix হয়ে যায়। )) সবকিছুকে একটি লাইনে রাখুন।
জাগারব

1 এবং 3 তখন থেকে ছিল যখন আমি এটি অন্যভাবে করার চেষ্টা করছিলাম এবং উদ্ধারকৃত কোড ছিল। টিপস জন্য ধন্যবাদ।
globby

1
আমার পরামর্শ: পরিবর্তে s==filter(...)sআপনার ব্যবহার করা উচিত all(...)s। এখন, যেহেতু sকেবল একবার প্রকাশে উপস্থিত হয়, আপনি এটির সংজ্ঞা এবং ড্রপ দিয়ে প্রতিস্থাপন করতে পারেন where। এছাড়াও, পরিবর্তে ==0আপনি ব্যবহার করতে পারে <1
গর্বিত হাসেলেলার

প্রথম সংস্করণ থেকে দুর্দান্ত উন্নতি!
গর্বিত হাসেলেলার

আমার মনে হয় আপনি এখনো হারান এক বাইট আপনি প্রতিস্থাপন করতে পারেন যদি all(\y->...)$show xদ্বারা and[...|y<-show x]
জাগারব

2

সিজেম, 15 বাইট

{_Abf{_g{%}*}:|!}

এটি একটি ব্লক, সিজেমে কোনও ফাংশনের নিকটতম জিনিস। আমি কেবল দেহ গণনা করছি (অর্থাত্ বন্ধনীগুলি বাদ দিচ্ছি)। আপনি নিম্নলিখিত হিসাবে এটি ব্যবহার করতে পারেন:

128{_Abf{_g{%}*}:|!}~

অথবা আপনি যদি ইনপুটগুলির একটি সিরিজ পরীক্ষা করতে চান তবে আপনি এটি করতে পারেন

[128 12 120 122 13 32 22 42 212 213 162 204]{{_Abf{_g{%}*}:|!}~}%

ফলটি ইঙ্গিত করতে ব্লকের পাতাগুলি 0(মিথ্যা) বা 1(সত্যবাদী) স্ট্যাকের উপরে। (সিজেমে কোনও বুলিয়ান টাইপ নেই))

এটি এখানে পরীক্ষা করুন।

ব্যাখ্যা:

_               "Duplicate input.";
 Ab             "Get base-10 digits.";
   f{      }    "This maps the block onto the list of digits, supplying the input each time.";
     _g         "Duplicate digit, get signum S (0 or 1).";
       { }*     "Repeat this block S times.";
        %       "Take input modulo digit.";
                "This leaves an array of zeroes for divisible digits, non-zeroes
                 for non-divisible digits, and non-zero junk for zeroes.";
            :|  "Fold OR onto this list. One could also sum the list with :+";
              ! "Logical NOT. Turns 0 into 1, and non-zero values into 0.";

বিকল্প, এছাড়াও 15 বাইট

{:XAb{X\_X)?%},!}

ব্যাখ্যা

:X              "Store input in X.";
  Ab            "Get base-10 digits.";
    {       },  "Filter this list by the result of the block.";
     X\         "Push another copy of X, swap with digit.";
       _        "Duplicate digit.";
        X)      "Push X+1.";
          ?     "Select digit itself or X+1, depending on whether digit is 0 or not.";
           %    "Take modulo. X%(X+1) will always be nonzero for positive integers.";
              ! "Logical NOT. Turns an empty list into 1 and a non-empty list into 0.";

2

সিজেম, 15 বাইট

{_Abf{_{%}1?}1b!}

{}সিজেমে কোনও ফাংশনের নিকটতম জিনিস। আমি শুধু ফাংশনটির শরীর গণনা করছি

এটি এর মতো ব্যবহার করুন:

128{_Abf{_{%}1?}1b!}~

হয় পেতে 1(যদি সংখ্যাটি বিভাজ্য হয়) বা 0(যদি সংখ্যাটি তার সংখ্যা দ্বারা বিভাজ্য না হয়)।

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

ব্যাখ্যা

_Ab                "Copy the number and split it to its digits";
   f{      }       "For each digit, run this code block on the number";
     _{%}1?        "If the digit is 0, put 1, otherwise perform number modulus digit";
            1b     "We now have an array of modulus corresponding to each digit. Sum it up";
              !    "Negate the sum. If all digits were divisible, sum of modules will be"
                   "0, thus answer should be 1 and vice versa";

আমি হয়ত কিছু মিস করছি, তবে দ্রুত সিজেমে পড়ার পরে কিছু বিষয় বোধগম্য নয় বলে মনে হচ্ছে: কীভাবে Abঅঙ্কগুলি বিভক্ত করবেন? এটি কেবল এটি বেস 10 এ রূপান্তরিত বলে মনে হচ্ছে এছাড়াও,% কীভাবে সংখ্যায় মোড করতে জানে এবং কেবল পরবর্তী অঙ্ক নয়, যেহেতু মনে হয় যে পরবর্তী অঙ্কটি স্ট্যাকের পাশে থাকবে?
ম্যাথিউ কিরশবাউম

আপনার সমস্ত প্রশ্নের উত্তর দেওয়া জটিল হবে। কোডটিতে প্রতিটি অক্ষরের পরে এড রেখে শিখতে পারা খুব সহজ হবে। চলমান চেষ্টা করুন128{ed_edAedbedf{ed_ed{ed%ed}1ed?ed}ed1edbed!ed}~
অপ্টিমাইজার

1
নির্দিষ্ট প্রশ্নের উত্তর: বেস 10 করা বেস 10 রুপান্তরিত সংখ্যার একটি অ্যারে দেয় যা এ ক্ষেত্রে নিজেই অঙ্কগুলি। %কেবল সর্বশেষ দুটি সংখ্যা নিন (এই ক্ষেত্রে) এবং মোড গণনা করুন। এখানে শেষ দুটি সংখ্যা
অপ্টিমাইজার

ঠিক আছে, পরামর্শের জন্য ধন্যবাদ!
ম্যাথিউ কিরশবাউম

2

সি 89, 43 বাইট

unsigned char d(int n, int c) {
        int a=n%10;return!n||a&&!(c%a)&&d(n/10,c);
}

C89 এর মধ্যে বুলিয়ান টাইপ নেই। আশা করি কাজ করে। এছাড়াও আমি স্ট্যাকের মাধ্যমে মূল সংখ্যাটির একটি অনুলিপি পাস করার জন্য একটি দ্বিতীয় প্যারামিটার ব্যবহার করেছি, তবে সংজ্ঞাটি যে কোনও কিছু হতে পারে। সঠিক ফলাফল পেতে আপনাকে উভয় প্যারামিটারের জন্য একই মান সহ ফাংশনটি কল করতে হবে ( d(128, 128))।

সম্পাদনা: অনামী ব্যবহারকারীর দ্বারা প্রস্তাবিত সম্পাদনাগুলি প্রয়োগ করা হয়েছে


কটাক্ষপাত codegolf.stackexchange.com/review/suggested-edits/17160 , কেউ আপনাকে কিছু golfing পরামর্শ দিলেন
জাস্টিন

বিশেষত বিধি বিপরীতে। একটি প্যারামিটার।
edc65

হ্যাঁ, এই পোস্টটি আসলে কেন আমি সেই নিয়মটি স্থির করার সিদ্ধান্ত নিয়েছিলাম, কারণ প্রোগ্রামটির পরিবর্তে ব্যবহারকারীর সদৃশটি করা উচিত বলে মনে হয় না।
ম্যাথিউ কিরশবাউম

আমার ধারণা আমি একটি মোড়ক ফাংশন যোগ করতে হবে। এই ফাংশনটির ঘোষণাপত্রটি কী বাইট গণনাতে যুক্ত হবে?
মার্কডেফিয়ান্ট

2

সি 11 - ফাংশন বডিতে 44 বাইট

আর একটি সি সংস্করণ, পুনরাবৃত্তিযোগ্য এবং ভাসমান বিন্দু ব্যতিক্রম ছাড়াই।

bool digit_multiple(int i)
{
    for(int n=i;i%10&&n%(i%10)<1;i/=10);return!i;
}

এটি সি ++, জাভা এবং অন্যান্য বেশিরভাগ সি-জাতীয় ভাষায়ও কাজ করবে।

প্রিমোর মন্তব্যের উন্নতি অন্তর্ভুক্ত করার জন্য সম্পাদিত।


1
একটি সংস্করণ যা জাভাতে সংকলিত হয়েছে (1.7.0_45-বি 18): ওপির কোডের int n=i;for(;i%10>0&&n%(i%10)<1;i/=10);return i<1;চেয়ে এক বাইট কম।
প্রিমো

2

জুলিয়া 32 25 23

অঙ্ক ব্যবহার করে উন্নত

নেতিবাচক সংখ্যাগুলির সাথে সমস্যাও সমাধান করে

selfDivides(x)=sum(x%digits(x).^1.)==0

পুরানো পদ্ধতি

সমস্ত অঙ্কের বিভাজন যদি সমস্ত অবশিষ্টাংশের যোগফল 0 হয় তবে অন্যদের মতো, negativeণাত্মক সংখ্যায় সমস্যা আছে।

selfDivides(x)=sum(x.%(Float64["$x"...]-48))==0

আউটপুট

[selfDivides(x) for x in [128,12,120,122,13,32,22,42,212,213,162,204]]
12-element Array{Any,1}:
  true
  true
 false
  true
 false
 false
  true
 false
  true
 false
  true
 false

উন্নত পদ্ধতি বিগইন্টকেও পরিচালনা করে

selfDivides(BigInt(11111111111111111111111111111111111111112))
true

যাহোক

selfDivides(BigInt(11111111111111111111111111111111111111113))
false

কারণ

BigInt(11111111111111111111111111111111111111113) %3
1

2

সি / সি ++, 58 বাইট (শরীরে 44)

অনির্ধারিত আচরণের আহ্বান (মন্তব্য দেখুন)

int d(int i){int j=i;while(i&&!(j%(i%10)))i/=10;return!i;}

trueএবং false হয় 1 এবং 0, কিন্তু স্বাক্ষর করার একটি অক্ষর যোগ করার জন্য একটি ফিরতি বিনা দ্বিধায় bool

এবং মজাদার জন্য, একটি পুনরাবৃত্তি সংস্করণ যা আপনি ফর্মের কলকে অনুমতি দিলে এটি আরও ছোট r(128,128)

সম্পাদনা করুন : এখন বিধি দ্বারা অনুমোদিত নয়:

সি / সি ++, 53 বাইট (33 টি দেহে)

int r(int i,int j){return!i||!(j%(i%10))&&r(i/10,j);}


2
# 1 সহ 0 টি সংখ্যার জন্য ভাসমান পয়েন্ট ব্যতিক্রম সহ মারা যান কারণ জ% (i% 10) i% 10 = 0. এর জন্য অবৈধ হবে
এসবিআই

একটি ভাসমান পয়েন্ট ব্যতিক্রম? রহস্যময়। এটি আমার সংকলকটিতে পুরোপুরি কাজ করে তবে আপনি সঠিক, এটি অপরিবর্তিত আচরণ। সংকলক নির্ভর ইউবি সম্পর্কে সাধারণ পিসিজি অবস্থান কী তা নিশ্চিত নয় Not

"সংকলক নির্ভর ইউবি" কী? হয় এটি ইউবি হয় বা এটি হয় না (এবং শূন্য দ্বারা বিভাজন, বা পরিবর্তিত শূন্য, প্রকৃতপক্ষে ইউবি হয়)। ইউবিকে অনুমতি দেওয়া উচিত নয় কারণ আক্ষরিক অর্থে কিছু হতে পারে। আমরা ধরে নিতে পারি যে আপনার প্রোগ্রামটি এমন একটি মেশিনে চলবে যা শূন্যের সাথে বিভাজন ঘটলে চারপাশের সবাইকে ফুটিয়ে তুলবে এবং হত্যা করবে। এখন, আমি নিশ্চিত আপনি আমাদের সবাইকে বাঁচতে চান ... সি এর বাস্তবায়ন-সংজ্ঞায়িত আচরণের ধারণা আছে, তবে শূন্য দ্বারা ভাগ করা তার অধীনে আসে না।
জেরোইন মোস্টার্ট

2
@etheranger: 0 দ্বারা বিভাগ ঐতিহাসিক কারণে ফ্লোটিং পয়েন্ট ব্যতিক্রম বলা হয়: stackoverflow.com/questions/16928942/...
n̴̖̋h̷͉a̷̭̿h̸̡̅ẗ̵̨d̷̰ĥ̷̳

2
@ জিরোয়ানমোস্টার্ট: আমি এই সাইটের 90% এরও বেশি উত্তর উত্তরকে ইউবি অনুরোধ করব। যতক্ষণ না এটি কোনও মেশিনে কিছু সংকলক নিয়ে কাজ করে , উত্তরটি বৈধ বলে বিবেচিত হবে।
ডেনিস

2

আর: 72 67 65

কাজ

f<-function(a)!(anyNA(a%%(d=as.double(strsplit(paste0(a),"")[[1]])))|sum(a%%d))

সঞ্চয়ের জন্য @ অ্যালেক্সা এবং @ প্ল্যানাপ্যাপাসকে ধন্যবাদ

টেস্ট রান

i=c(128,12,120,122,13,32,22,42,212,213,162,204)
for(a in i){print(f(a))}
[1] TRUE
[1] TRUE
[1] FALSE
[1] TRUE
[1] FALSE
[1] FALSE
[1] TRUE
[1] FALSE
[1] TRUE
[1] FALSE
[1] TRUE
[1] FALSE

আমি বর্তমানে আপনার ফাংশন বডিটিতে 70 বাইটগুলি গণনা করছি, 72 নয় But তবে আপনি এটি ব্যবহার করে 67 এ নামিয়ে ফেলতে পারেন d=as.double(strsplit(toString(a),"")[[1]]);!(anyNA(a%%d)|sum(a%%d))। :)
অ্যালেক্স এ।

@AlexA। ধন্যবাদ। আমার প্রথম
প্রয়াসের সাথে আর.ই

@ মিকিটি এর paste(a)পরিবর্তে toString(a)একই ফলাফল দেয়।
প্ল্যানাপাস

@ প্ল্যানাপাস ধন্যবাদ, ঝরঝরে সামান্য কৌশল অবশ্যই এটি মনে রাখতে হবে
মিকিটি

1

জিএনইউ অ্যাওক: 53 টি অক্ষর

গণিত অংশ:

for(;++i<=split($1,a,//);)r=r||!a[i]||v%a[i];return!r

পুরো ফাংশন:

function self_divisible(v, i, r)
{
    for (; ++i <= split($1, a, //); )
        r = r || ! a[i] || v % a[i]

    return ! r
}

যেমন আউকের কোনও বুলিয়ান মান নেই, তাই 1 টর সত্য এবং 0 টি মিথ্যা বলে দেয়।


1

জাভাস্ক্রিপ্ট (ES6) 30

একটি সংখ্যার পরামিতি সহ ফাংশন। % এবং বিয়োগফল ব্যবহার করে, '0' এর বিশেষ কেস করার দরকার নেই কারণ 0% 0 জাভাস্ক্রিপ্টে NaN।

সম্পাদনা সংরক্ষিত 1 গৃহস্থালির কাজ ধন্যবা DocMax

F=n=>[for(d of t=n+'')t-=n%d]&&t==n 

কেবল মজাদার জন্য, ফাংশনের স্বাক্ষর গণনা না করা সম্পর্কে নিয়মটি গালাগাল করে 4

Check=(n,t=n+'',q=[for(d of t)n-=t%d])=>t==n

টেস্ট ফায়ারফক্স / ফায়ারবাগ কনসোলটি

console.log([128, 12, 120, 122, 13, 32, 22, 42, 212, 213, 162, 204]
.map(x=>+x + ' -> ' + F(x)).join('\n'))

আউটপুট

128 -> true
12 -> true
120 -> false
122 -> true
13 -> false
32 -> false
22 -> true
42 -> false
212 -> true
213 -> false
162 -> true
204 -> false

আমি একটি স্ট্রিং ইনপুট না করতে বলতে যাচ্ছি।
ম্যাথিউ কিরশবাউম

1
ফায়ারফক্স কনসোলের প্রতিস্থাপন সঙ্গে খুশি of(t=n+'')কেবল of t=n+''1. সংরক্ষণ করতে
DocMax

1

পিএইচপি: 85 বাইট (শরীরে 64 বাইট)

এই ফাংশনটি কাজ করার জন্য, কেবল একটি স্ট্রিং বা একটি সংখ্যা পাস করুন।

0 সঠিকভাবে মিথ্যা ফিরে আসবে।

কোড:

function f($n,$i=0){for($n.='';$n[$i]&&$t=!($n%$n[$i++]););return$t&&$i==strlen($n);}

দয়া করে, 2 তম প্যারামিটার সেট করবেন না!

জাভাস্ক্রিপ্ট: 76 বাইট (শরীরে 61 বাইট)

এটি পূর্ববর্তী ফাংশনের পুনর্লিখন।

উভয় সংস্করণের মধ্যে খুব বেশি পরিবর্তন হয়নি।

কোডটি এখানে:

function f(n){for(i=0,n+='';n[i]/1&&(t=!(n%n[i++])););return t&&i==n.length}

বহুভোগ: জাভাস্ক্রিপ্ট + পিএইচপি 187 217 বাইটস (76 বয়লারপ্লেট ব্যতীত 84 বাইট):

কেন আমি এটি তৈরি?

কারণ কারণ এবং সম্ভবত কারণ আমি পারে!

কেবল পিএইচপি-তে ত্রুটিটিকে উপেক্ষা করুন: এটি যেভাবেই কাজ করে!
আর প্রয়োজন নেই, এটি 3 বাইট অপসারণ দ্বারা স্থির করা হয়েছিল।

এখানে মাস্টারপিস:

if('\0'=="\0"){function strlen($s){return $s['length'];}}
function toString(){return'';}
function f($n){for($i=0,$n=$n.toString();$n[$i]/1&&($t=!($n%$n[$i++])););return $t&&$i==strlen($n);}

আপনি এই কোডটি আপনার কনসোল এবং পিএইচপি ইন্টারপ্রেটার উভয়ভাবে চালাতে পারেন!


পুরাতন রুপ:

if('\0'=="\0"){function strlen($s){return $s['length'];}}
function s($s){return('\0'=="\0")?$s+'':str_replace('','',$s);}
function f($n,$i){for($i=0,$n=s($n);$n[$i]/1&&($t=!($n%$n[$i++])););return $t&&$i==strlen($n);}

"এবং কেবলমাত্র একটি সংখ্যাসূচক প্যারামিটারে যায়"। এই ছাড়া Eval পারেন ($ x) এর ও এক্স $ পুরো কোড পাস
abc667

@ abc667 দুঃখিত, তবে আমি এটি পাই না।
ইসমাইল মিগুয়েল

1

অক্টাভা, 33 (39 টি ফাংশন সেটআপ সহ)

সংখ্যার থেকে ম্যাট্রিক্স রূপান্তর ব্যবহার:

f=@(a)sum(mod(a./(num2str(a)-48),1))==0

সংখ্যাটি ম্যাট্রিক্স এক্স দ্বারা বিভাজন করুন যেখানে এক্সটি সংখ্যাকে স্ট্রিংয়ে রূপান্তর করে এবং এএসসিআইআই মান থেকে আবার সংখ্যায় যেতে 48 কে বিয়োগ করে তৈরি করা হয়। প্রতিটি বিভাগের দশমিক অংশ পেতে মডুলো 1 নিন, নিশ্চিত করুন যে এগুলি সমস্ত শূন্য (যদি কোনও 0 / এর কারণে NaN হয় তবে যোগফল NaN হবে এবং সুতরাং শূন্য নয়)।

Www.octave-online.net ব্যবহার করে নমুনা ইনপুট:

f=@(a)sum(mod(a./(num2str(a)-48),1))==0
for j=[128,12,120,122,13,32,22,42,212,213,162,204]
f(j)
end

আউটপুট:

ans =  1
ans =  1
ans = 0
ans =  1
ans = 0
ans = 0
ans =  1
ans = 0
ans =  1
ans = 0
ans =  1
ans = 0

আমরা কীভাবে এটি পরীক্ষা করতে পারি?
ইসমাইল মিগুয়েল

অক্টাভঅনলাইন.নেট - উপরে থেকে কোড সংজ্ঞাটি প্রবেশ করান এবং তারপরে (উদাহরণস্বরূপ) চ (128)। আউটপুট যুক্ত করবে
Jørgen

আমি সংকলকটি খুঁজে পেয়েছিলাম এবং জিজ্ঞাসার আগে এটি চেষ্টা করেছিলাম। তবে এটি ঠিক কাজ করছে বলে মনে হচ্ছে (এটি বাদে f(123), যা 1, 2 এবং 3 দ্বারা বিভাজ্য)। তবে প্রদত্ত পরীক্ষার ক্ষেত্রে এটি কাজ করে।
ইসমাইল মিগুয়েল

1

ম্যাটল্যাব - 39 টি অক্ষর

function [b] = dividesSelf(i)
b=all(~mod(i,sscanf(num2str(i),'%1d')))
end

1

BASH - 117 টি অক্ষর

f(){ [[ $1 =~ 0 ]]&& return 0 || r=;n=$1;for((i=0;i<${#n};i++));do r=$(($r+${n}%${n:$i:1}));done;return $(($r==0));}

পরীক্ষা

for N in 128 12 120 122 13 32 22 42 212 213 162 204; do
  f $N
  echo "${N} ->  $?"
done

128 ->  1
12 ->  1
120 ->  0
122 ->  1
13 ->  0
32 ->  0
22 ->  1
42 ->  0
212 ->  1
213 ->  0
162 ->  1
204 ->  0

1

পিএইচপি - 74 71 64 অক্ষর

Golfed:

function t($n){while($n>1){if(!($b=$n%10)||($n%$b)){return 0;}$n/=10;}return 1;}

কম গল্ফড:

function t($n){
    while($n>1){
        if( !($b=$n%10) || ($n%$b) )
            { return 0; }
        $n/=10;
    }
    return 1;
}

পরীক্ষার ফলাফল:

(কোড)

$ans = array(128,12,120,122,13,32,22,42,212,213,162,204);
foreach($ans as $a)
{ echo "$a -> ".(t($a)?"True":"False").PHP_EOL; }

(আউটপুট)

128 -> True
12 -> True
120 -> False
122 -> True
13 -> False
32 -> True
22 -> True
42 -> True
212 -> True
213 -> True
162 -> False
204 -> False
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.