ডেনিস সংখ্যা ২.০


54

পিপিসিজি ব্যবহারকারী এবং নির্বাচিত মোড, @ ডেনিস এখন মাত্র ১০০ কে-র বেশি আয় করার জন্য দ্বিতীয় দ্বিতীয় ব্যবহারকারী হয়েছেন!

এখানে চিত্র বর্ণনা লিখুন

এটি সম্পূর্ণরূপে মূল ধারণা, যে আমি অন্য কারও কাছ থেকে পাই নি , তবে আসুন আমরা তার ব্যবহারকারীর আইডি থেকে একটি চ্যালেঞ্জ তৈরি করি, 12012শ্রদ্ধা হিসাবে!

এটির দিকে তাকালে, আপনি লক্ষ্য করবেন যে তার আইডিতে দুটি স্বতন্ত্র "বিভাগ" রয়েছে।

12

এবং

012

এই বিভাগ দুটি উভয় একটি 3 যোগ। এটি একটি সুন্দর আকর্ষণীয় সম্পত্তি।

আসুন একটি "ডেনিস ২.০ নম্বর" কে যেকোন ধনাত্মক পূর্ণসংখ্যা হিসাবে সংজ্ঞায়িত করুন যেখানে কঠোরভাবে সংখ্যা বাড়ানোর প্রতিটি সর্বাধিক অনুপাত একই সংখ্যায় যোগ হয়। উদাহরণ স্বরূপ,

123

ডেনিস ২.০ নম্বর এটি হ'ল কঠোরভাবে বর্ধিত অঙ্কগুলির একমাত্র সর্বোচ্চ উপ তালিকা রয়েছে এবং এটির পরিমাণ 6. হয় 6. অতিরিক্ত হিসাবে ২,৮ 2,6,১45৫ একটি ডেনিস ২.০ নম্বরও কারণ বর্ধমান অঙ্কের তিনটি সর্বাধিক তালিকা

28
46
145

সমস্ত যোগফল 10। অতিরিক্ত হিসাবে, কেবল একই অঙ্কটি পুনরাবৃত্তি করে এমন সংখ্যাগুলি অবশ্যই ডেনিস 2.0 নম্বর হতে পারে কারণ উদাহরণস্বরূপ, 777এটি বিভক্ত হতে পারে

7
7
7

যা পরিষ্কারভাবে সাতটি যোগফল।

বেশ কয়েকটি যেমন 42হয় না একটি ডেনিস 2.0 নম্বর, যেহেতু এটি বিভক্ত করা হয়

4
2

যা পরিষ্কারভাবে একই সংখ্যার সমষ্টি হয় না।

চ্যালেঞ্জ

প্রদত্ত নম্বরটি ডেনিস ২.০ নম্বর কিনা তা নির্ধারণ করতে আপনাকে অবশ্যই একটি প্রোগ্রাম বা ফাংশন লিখতে হবে। আপনি কোনও যুক্তিসঙ্গত ইনপুট ফর্ম্যাটে ইনপুট এবং আউটপুট নিতে পারেন, যেমন স্ট্রিং হিসাবে একটি সংখ্যা হিসাবে, কোনও ফাইল থেকে, মজাদার আর্গুমেন্ট / রিটার্ন, এসটিডিআইএন / এসটিডিআউট ইত্যাদি থেকে এবং তারপরে সত্যবাদী মানটি ফিরিয়ে আনতে পারেন যদি এই সংখ্যাটি ডেনিস ২.০ হয় সংখ্যা এবং একটি মিথ্যা মান যদি এটি না হয়। রেফারেন্সের জন্য, এখানে প্রতি ডেনিস ২.০ নম্বরটি 1,000 পর্যন্ত রয়েছে:

1
2
3
4
5
6
7
8
9
11
12
13
14
15
16
17
18
19
22
23
24
25
26
27
28
29
33
34
35
36
37
38
39
44
45
46
47
48
49
55
56
57
58
59
66
67
68
69
77
78
79
88
89
99
101
111
123
124
125
126
127
128
129
134
135
136
137
138
139
145
146
147
148
149
156
157
158
159
167
168
169
178
179
189
202
222
234
235
236
237
238
239
245
246
247
248
249
256
257
258
259
267
268
269
278
279
289
303
312
333
345
346
347
348
349
356
357
358
359
367
368
369
378
379
389
404
413
444
456
457
458
459
467
468
469
478
479
489
505
514
523
555
567
568
569
578
579
589
606
615
624
666
678
679
689
707
716
725
734
777
789
808
817
826
835
888
909
918
927
936
945
999

স্ট্যান্ডার্ড লুফোলগুলি প্রয়োগ হয় এবং বাইট জিতে পরিমাপ করা সংক্ষিপ্ত উত্তর!


1
কেবলমাত্র রেফারেন্সের জন্য, মার্টিন ইন্ডার হলেন সর্বপ্রথম 100k প্রতিনিধি।
এরিক আউটগল্ফার

1
12366 একটি বৈধ 2.0 নম্বর? (123 | 6 | 6 বনাম 1236 | 6)
Sp3000

2
@ sp3000 অর্থাৎ না একটি ডেনিস সংখ্যা। এটি হবে1236|6
ডিজেএমসিএমহেম

এটির ,মধ্যে একটির সাথে অদৃশ্য প্রতিনিধিত্ব করার কারণে আমি কি প্রতিটি অঙ্ক নিতে পারি ? এটি সম্ভবত এটি অনেক প্রসারিত করছে।
রিলে

13
আমি ভয় পেয়েছি ডেনিস তবুও এই চ্যালেঞ্জের মধ্যে আমাদের সকলকে ধ্বংস করবে
ডাউনরেপ_নেশন

উত্তর:


15

জেলি, 13 12 বাইট

@ ডেনিসকে 1 বাইট ধন্যবাদ।

DIṠ’0;œṗDS€E

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

ব্যাখ্যা

DIṠ’0;œṗDS€E    Main link. Argument: N
D               Convert N to its digits.
 I              Find the differences between the elements.
  Ṡ             Find the sign of each difference. This yields 1 for locations where the
                list is strictly increasing and 0 or -1 elsewhere.
   ’            Decrement. This yields 0 for locations where the list is strictly
                increasing and -1 or -2 elsewhere.
    0;          Prepend a 0.
        D       Get another list of digits.
      œṗ        Split the list of digits at truthy positions, i.e. the -1s and -2s.
         S€     Sum each sublist.
           E    Check if all values are equal.

16

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

ইনপুট হিসাবে একটি স্ট্রিং লাগে। হয় মিথ্যা বা সত্যবাদী মান (যা একটি সংখ্যা হতে পারে) প্রদান করে।

এটি একটি ইনপুট স্ট্রিং যেমন এর "2846145"মধ্যে রূপান্তর করতে একটি নিয়মিত প্রকাশ ব্যবহার করে:

"(a=2+8)&&(a==4+6)&&(a==1+4+5)"

তারপরে eval()এই অভিব্যক্তিতে ডাকে ।

let f =

n=>eval(n.replace(/./g,(v,i)=>(v>n[i-1]?'+':i?')&&(a==':'(a=')+v)+')')

console.log(f("101"));
console.log(f("102"));
console.log(f("777"));
console.log(f("2846145"));


দুর্দান্ত, এটি সত্যিই স্মার্ট ধারণা। :-)
ETH প্রোডাকশনগুলি

সেই আইডিয়াটিও পছন্দ করুন! তবে এটি কাজ করছে না: কনসোল.লগ (চ ("2011")); // ভুয়া কনসোল.লগ (চ ("189")); // 18
user470370

3
@ ব্যবহারকারী470370 - আমি মনে করি এটি আসলেই সঠিক। সংজ্ঞাটি "কঠোরভাবে সংখ্যা বাড়ানোর উপকণাগুলি " উল্লেখ করে , সুতরাং এটি ডি 2.0 সংখ্যা 2011হিসাবে বিভক্ত হয় 2 / 01 / 1। যেমন 189এটি একটি ডি 2.0 সংখ্যা এবং 18এটি সত্যবাদী মান।
আর্নৌল্ড

ওপস course অবশ্যই, আপনি ঠিক বলেছেন। আগে পাইনি। আমি মনে করি, আমাকে নিজের সমাধানটি পুনরায় কাজ করতে হবে: D
user470370

15

পাইথন, 50 বাইট

r='0'
for d in input():r=d+'=+'[r<d]*2+r
1/eval(r)

আশা input()একটি স্ট্রিং নির্ণয়, তাই ইনপুট পাইথন মধ্যে পার্শ্ববর্তী কোট প্রয়োজন 2. আউটপুট মারফত প্রস্থান কোড , যেখানে 0 সাফল্য (truthy) এবং ইঙ্গিত 1 ইঙ্গিত ব্যর্থতা (falsy)।

আইডিয়নে এটি পরীক্ষা করুন ।

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

আমরা আরম্ভ স্ট্রিং 0 এবং সব সংখ্যার উপর বারবার ইনপুট হবে।

  • যদি ডি প্রথম অঙ্কের আর এর চেয়ে বড় হয় (প্রাথমিকভাবে 0 , তবে ডি এর আগের মানের সমান ), সত্য এবং ফলনকে r<dমূল্যায়ন করে ।'=+'[r<d]*2++

  • তাহলে প্রথম অঙ্ক চেয়ে ছোট , '=+'[r<d]*2উৎপাদনের ==

  • তাহলে প্রথম অঙ্ক সমান , চেয়ে Singleton স্ট্রিং দীর্ঘতর হতে হবে , তাই '=+'[r<d]*2উৎপাদনের আবার ==

সমস্ত ক্ষেত্রে, অঙ্ক d এবং দুটি উত্পন্ন দুটি অক্ষর আর-তে চাপিয়ে দেওয়া হয় ।

সমস্ত ইনপুট অঙ্কগুলি প্রক্রিয়া করা হয়ে eval(r)গেলে উত্পন্ন অভিব্যক্তিটির মূল্যায়ন করে।

  • যদি ইনপুটটিতে (ধনাত্মক) ডিজিটের একক কঠোরভাবে ক্রমবর্ধমান ক্রম থাকে তবে অভিব্যক্তিটি তাদের যোগফলকে মূল্যায়ন করে।

    উদাহরণস্বরূপ, পূর্ণসংখ্যা 12345 এর প্রকাশের ফলাফল হয় 5++4++3++2++1++0, যা মূল্যায়নের সময় 15 দেয় । নোট করুন যে প্রতি সেকেন্ডে + একটি অবিচ্ছিন্ন প্লাস, সুতরাং এটি ফলাফলকে প্রভাবিত করে না। ডিভাইডিং 1 দ্বারা 15 (ফলাফলের গুরুত্বপূর্ণ নয়) বৈধ; প্রোগ্রামটি স্বাভাবিকভাবেই প্রস্থান করে।

  • যদি ইনপুটটিতে দুটি অঙ্কের ক্রমবর্ধমান ক্রম থাকে তবে অভিব্যক্তিটি একটি সাধারণ তুলনা করে।

    উদাহরণস্বরূপ, পূর্ণসংখ্যা 12012 এর অভিব্যক্তিতে ফলাফল হয় 2++1++0==2++1++0, যা উভয় পদটির যোগফল 3 হওয়ার পরে যখন মূল্যায়ন করা হয় ঠিক তখন ফলন হয় । ডিভাইডিং 1 দ্বারা সত্য ( 1 ) বৈধ (ফলাফলের গুরুত্বপূর্ণ নয়) হয়; প্রোগ্রামটি স্বাভাবিকভাবেই প্রস্থান করে।

    অন্যদিকে, পূর্ণসংখ্যার 12366 এর প্রকাশের ফলাফল হয় 6==6++3++2++1++0, যা শর্তগুলির 6 এবং 12 এর পরিমানের থেকে মূল্যায়ন করার সময় ফলস দেয় । ডিভাইডিং 1 দ্বারা মিথ্যা ( 0 ) একটি উত্থাপন ZeroDivisionError ; প্রোগ্রামটি একটি ত্রুটি সহ প্রস্থান করে।

  • যদি ইনপুটটিতে অঙ্কগুলির তিন বা ততোধিক ক্রমবর্ধমান ক্রম থাকে তবে অভিব্যক্তিটি একটি শৃঙ্খলাবদ্ধ তুলনা নিয়ে গঠিত , যা সত্য এবং যদি সমস্ত জড়িত তুলনা সত্যটি প্রত্যাবর্তন করে তবেই সত্যটি ফিরে আসে ।

    উদাহরণস্বরূপ, পূর্ণসংখ্যা 94536 এর অভিব্যক্তিতে ফলাফল হয় 6++3==5++4==9++0, যা সমস্ত শর্তের 9 হিসাবে মূল্যায়ন করলে সত্য ফলন করে । আগের মত, প্রোগ্রামটি স্বাভাবিকভাবেই প্রস্থান করে।

    অন্যদিকে, পূর্ণসংখ্যার 17263 এর অভিব্যক্তিতে ফলাফল হয় 3==6++2==7++1++0, যা শর্তগুলির 3 , 8 , এবং 8 এর সমষ্টি হওয়ার কারণে মূল্যায়ন করলে মিথ্যা ফল দেয় । আগের মত, প্রোগ্রামটি একটি ত্রুটি সহ প্রস্থান করে।


11
প্রায় সময় আমি এই চ্যালেঞ্জের কাছে জমা দিয়েছিলাম ...
ডেনিস

7

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

~c@e:{<+}a!#=

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

ব্যাখ্যা

~c               Find a list of integers which when concatenated result in the Input
  @e             Split the integers into lists of digits
    :{<+}a       Each list of digit is stricly increasing, and compute its sum
          !      Discard all other choice points (prevents backtracking for smaller sublists)
           #=    All sums must be equal

~c প্রথম বৃহত্তম সাবলিস্টগুলির সাথে একত্রিত হবে।



6

পাওয়ারশেল ভি 2 +, 100 64 61 বাইট

-join([char[]]$args[0]|%{("+$_","-eq$_")[$_-le$i];$i=$_})|iex

একটি আক্ষরিক এক-লাইনার, কারণ এটি সমস্ত একটি পাইপলাইন। স্ট্রিং হিসাবে ইনপুট নেয় $args[0]। এটি- charঅ্যারে হিসাবে লুপ করে , প্রতিটি পুনরাবৃত্তি বর্তমানের উপাদানটি পূর্ববর্তী মানের থেকে প্রকারের চেয়ে কম বা কোয়ালিটি কিনা তার ভিত্তিতে পাইপলাইনে বর্তমান উপাদানটিকে একটি +বা তার -eqসামনে রাখে । এই স্ট্রিংগুলি একসাথে এডিট করা হয় এবং এতে পাইপ করা হয় (এর জন্য সংক্ষিপ্ত এবং অনুরূপ example উদাহরণস্বরূপ, ইনপুটটির জন্য এটি যা হিসাবে মূল্যায়ন করা হবে ।-le$i-joiniexInvoke-Expressioneval2846145+2+8-eq4+6-eq1+4+5True

যে বুলিয়ান পাইপলাইনে রেখে গেছে, এবং True/ Falseপ্রোগ্রামের সমাপ্তিতে স্পষ্টভাবে লেখা আছে।

এনবি - একক-অঙ্কের ইনপুটটির জন্য, ফলাফলটি পাইপলাইনে রেখে যায়, যা পাওয়ারশেলের সত্যবাদী মান।

উদাহরণ

PS C:\Tools\Scripts\golfing> 2846145,681,777,12366,2|%{"$_ -> "+(.\dennis-number-20.ps1 "$_")}
2846145 -> True
681 -> False
777 -> True
12366 -> False
2 -> 2

6

GNU সেড 217 বা 115

উভয়ই + -র জন্য +1 অন্তর্ভুক্ত

217:

s/./&,/g;s/^/,/g;:;s,0,,;s,2,11,;s,3,21,;s,4,31,;s,5,41,;s,6,51,
s,7,61,;s,8,71,;s,9,81,;t;s/(,1*)(1*)\1,/\1\2X\1,/;t;s/,//g
s,1X1(1*),X\1a,;t;/^1.*X/c0
/Xa*$/s,a*$,,;y,a,1,;/1X1/b;/1X|X1/c0
c1

সাধারণ দশমিক ইনপুট নেয়

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


115:

s/^|$/,/g;:;s/(,1*)(1*)\1,/\1\2X\1,/;t;s/,//g
s,1X1(1*),X\1a,;t;/^1.*X/c0
/Xa*$/s,a*$,,;y,a,1,;/1X1/b;/1X|X1/c0
c1

আনারিতে সংখ্যার অঙ্কের কমা দ্বারা পৃথক করা তালিকা হিসাবে ইনপুট নেয়। যেমন 123হবে1,11,111

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


5

পার্ল, 38 + 3 ( -p) = 41 বাইট

-9 বাইটস @ টন হসপেলকে ধন্যবাদ !

s%.%2x$&.(~$&le~$')%eg;$_=/^(2+1)\1*$/

যেহেতু একটি আছে তাই $'কোডটি চালানোর জন্য কোনও ফাইলে থাকা দরকার। সুতরাং -p3 বাইট জন্য গণনা। সংখ্যাটি ডেনিস ২.০ নম্বর হলে আউটপুট ১ বা অন্যথায় খালি স্ট্রিং:

$ cat dennis_numbers.pl
s%.%2x$&.(~$&le~$')%eg;$_=/^(2+1)\1*$/
$ perl -p dennis_numbers.pl <<< "1
10
12315
12314"

1
আমি মনে করি এটা সম্ভবত Perl ভাল পন্থা, কিন্তু আপনি 42 গলফ নিচে যা করতে পারেন: s%.%2x$&.($&.O ge$')%eg;$_=/^(2+1)\1*$/সঙ্গে -pবিকল্প (+3 কোড আছে কারণ $')
টন Hospel

প্রকৃতপক্ষে, এলোমেলো পরিবর্তে তুলনার ফলাফল ব্যবহার Aকরা আরও ভাল! ধন্যবাদ! .Oযদিও আমি বুঝতে পারি না ... এটি ছাড়া কিছু ক্ষেত্রে এটি ব্যর্থ হয়, তবে কেন তা আমি দেখতে পাচ্ছি না।
দাদা

$'পরের অঙ্ক এবং এর পরে সমস্তগুলি। তাই যেমন মধ্যে 778এটি তুলনা 7করতে 78যা ltএকটি ক্রমবর্ধমান ক্রম মত দেখায়। Oবিরতি এবং তুলনা 7Oকরতে 78 (উপরে কিছু 9হওয়া ASCII কাজে)
টন Hospel

ওহ, ঠিক আছে! আমি $' or $আমার ক্যাপচার গ্রুপগুলির পরিবর্তে use ব্যবহার করার উপায় খুঁজছিলাম, তবে এটি "এবং তার পরে সমস্তগুলি" বলে এটি খুঁজে পেলাম না। ভকভগক!
দাদা

মিমি, ~$&le~$'1 টি আরও ছোট হতে হবে
টন হসপেল

5

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

@ Edc65 ধন্যবাদ 2 বাইট সংরক্ষণ করা

x=>[...x,p=t=z=0].every(c=>p>=(t+=+p,p=c)?(z?z==t:z=t)+(t=0):1)

স্ট্রিং হিসাবে ইনপুট নেয়। পুরানো সংস্করণ (শুধুমাত্র ফায়ারফক্স 30+ এ কাজ করে):

x=>[for(c of(p=t=0,x))if(p>=(t+=+p,p=c))t+(t=0)].every(q=>q==+p+t)

ইঙ্গিত: [...x,0]->[...x,p=t=z=0]
edc65

@ edc65 ধন্যবাদ, আমি এটা ভেবে দেখিনি!
ETH প্রোডাকশনগুলি

3

গণিত, 38 বাইট

Equal@@Tr/@IntegerDigits@#~Split~Less&

বেনামে ফাংশন। ইনপুট, এবং আয় হিসাবে নম্বর লাগে Trueবা Falseআউটপুট।


3

ব্র্যাচল্যাগ 2, 10 বাইট, ভাষা পোস্টডেটস চ্যালেঞ্জ

ẹ~c<₁ᵐ!+ᵐ=

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

এটি মূলত @ ফ্যাটালাইজের জবাবের মতো একই অ্যালগরিদম (যা আমি এটি লেখার আগে পর্যন্ত দেখিনি), তবে ব্র্যাচল্যাগ 2 এর বাক্য গঠনতে এটি গল্ফিয়ার করতে কিছুটা পুনর্বিন্যাস করা হয়েছিল।

এটি একটি সম্পূর্ণ প্রোগ্রাম, ফিরে false.যদি এটি একটি ডেনিস 2.0 নম্বর নয়, অথবা trueযদি তা না হয়।

ব্যাখ্যা

ẹ~c<₁ᵐ!+ᵐ=
ẹ           Interpret the input number as a list of digits
      !     Find the first (in default order)
 ~c           partition of the digits
   <₁ᵐ        such that each is in strictly increasing order
         =  Assert that the following are all equal:
       +ᵐ     the sums of each partition

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


2

এমএটিএল, 24 23 20 18 16 বাইট

Tjdl<vYsG!UlXQ&=

একটি ফেরত পাঠায় falsey এর truthy ম্যাট্রিক্স

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

এছাড়াও, ডেনিসকে অভিনন্দন!

ব্যাখ্যা

T       % Push a literal TRUE to the stack
        %   STACK: {1}
j       % Explicitly grab the input as a string
        %   STACK: {1, '2846145'}
d       % Compute the difference between successive ASCII codes
        %   STACK: {1, [6 -4 2 -5 3 1]}
l<      % Find where that difference is less than 1
        %   STACK: {1, [0 1 0 1 0 0]}
v       % Prepend the TRUE value we pushed previously
        %   STACK: {[1 0 1 0 1 0 0]}
Ys      % Compute the cumulative sum. This assigns a unique integer label to
        % each set of increasing numbers
        %   STACK: {[1 1 2 2 3 3 3]}
G!U     % Grab the input as numeric digits
        %   STACK: {[1 1 2 2 3 3 3], [2 8 4 6 1 4 5]}
lXQ     % Compute the sum of each group of increasing digits
        %   STACK: {[10 10 10]}
&=      % Computes element-wise equality (automatically broadcasts). A
        % truthy value in MATL is a matrix of all ones which is only the case
        % when all elements are equal:
        %   STACK: {[1 1 1
        %            1 1 1
        %            1 1 1]}
        % Implicitly display the result

ভাল ব্যবহার &=!
লুইস মেন্ডো

2

পিএইচপি, 108 105 92 বাইট

$p=-1;foreach(str_split("$argv[1].")as$d)$p>=$d?$r&&$s-$r?die(1):($r=$s)&$s=$p=$d:$s+=$p=$d;

যুক্তি থেকে ইনপুট নেয়, 0ডেনিস -২.০ নম্বর সহ অন্যটির সাথে প্রস্থান করে 1

ভাঙ্গন

$p=-1;                              // init $p(revious digit) to -1
foreach(str_split("$argv[1].")as$d) // loop $d(igit) through input characters
                                    // (plus a dot, to catch the final sum)
    $p>=$d                              // if not ascending:
        ?$r                             // do we have a sum remembered 
        &&$s-$r                         // and does it differ from the current sum?
                ?die(1)                     // then exit with failure
                :($r=$s)&$s=$p=$d           // remember sum, set sum to digit, remember digit
        :$s+=$p=$d                      // ascending: increase sum, remember digit
    ;
// 

2

05 এ বি 1 ই , 18 বাইট

SD¥X‹X¸«DgL*ꥣOÙg

ব্যাখ্যা

N = 12012 উদাহরণ হিসাবে ব্যবহৃত।

                    # implicit input N = 12012
S                   # split input number to list of digits  
                    # STACK: [1,2,0,1,2]
 D                  # duplicate
                    # STACK: [1,2,0,1,2], [1,2,0,1,2]
  ¥                 # reduce by subtraction
                    # STACK: [1,2,0,1,2], [1,-2,1,1]
   X‹               # is less than 1
                    # STACK: [1,2,0,1,2], [0,1,0,0]
     X¸«            # append 1
                    # STACK: [1,2,0,1,2], [0,1,0,0,1]
        DgL*        # multiply by index (1-indexed)
                    # STACK: [1,2,0,1,2], [0,2,0,0,5]
            ê       # sorted unique
                    # STACK: [1,2,0,1,2], [0,2,5]
             ¥      # reduce by subtraction
                    # STACK: [1,2,0,1,2], [2,3]
              £     # split into chunks
                    # STACK: [[1,2],[0,1,2]]
               O    # sum each
                    # STACK: [3,3]
                Ù   # unique
                    # STACK: [3]
                 g  # length, 1 is true in 05AB1E
                    # STACK: 1

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


2

রুবি 2.3, 56 বাইট

p !gets.chars.chunk_while(&:<).map{|a|eval a*?+}.uniq[1]

এটি করার মতো প্রায় গল্ফস্টিস্ট উপায় নয়, তবে এটি কিছু দুর্দান্ত ভাষার বৈশিষ্ট্য দেখায়।

(নিউলাইন-সহনশীল নয়, তাই চালানো ruby dennis2.rb <<< '12012')


1

পিএইচপি, 144 বাইট

<?php preg_match_all("/0?1?2?3?4?5?6?7?8?9?/",$argv[1],$n);foreach($n[0]as$i)if(strlen($i)&&($a=array_sum(str_split($i)))!=$s=$s??$a)die;echo 1;

আমি নিশ্চিত যে এটি করার জন্য অনেক চালক (এবং সংক্ষিপ্ত) উপায় আছে তবে এটি এখনই করবে।


1

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

স্ট্রিং হিসাবে ইনপুট নেয়।

lambda I:len(set(eval(reduce(lambda x,y:x+',+'[y>x[-1]]+y,I+' '))))<2

ব্যাখ্যা:

প্রাক্তন 1201212012

অঙ্কের তালিকায় রূপান্তর করে:

1+2,0+1+2,1+2,0+1+2,

Evals এবং সেট করতে রূপান্তর।

set([3])

যদি সেটটির দৈর্ঘ্য 1 হয় তবে সমস্ত অঙ্ক একই হয়।


1

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

s=>![...s,z=x=p=0].some(c=>[c>p?0:z-=(x=x||z),z-=p=c][0])

আমার খুব কমই দরকারী টিপ https://codegolf.stackexchange.com/a/49967/21348 প্রয়োগ করা হচ্ছে

এটি আরোহী অক্ষরের রান চিহ্নিত করে চরটি চরকে স্ক্যান করে, প্রতিটি রামের শেষে এটি পরীক্ষা করে যে যোগফল সর্বদা একই থাকে কিনা

  • সি: বর্তমান চর
  • পি: পূর্ববর্তী চর
  • জেড: চলমান যোগফল, একটি রান শেষে তুলনা করা হবে ...
  • x: তুলনা করার সমষ্টি, প্রথম রানে কেবল z এর সমান হয়

পরীক্ষা

f=
s=>![...s,z=x=p=0].some(c=>[c>p?0:z-=(x=x||z),z-=p=c][0])

function run()
{
  var i=I.value
  O.textContent = i + ' -> ' + f(i)
}

run()

test=`1 2 3 4 5 6 7 8 9 11 12 13 14 15 16 17 18 19 22 23 24 25 26 27 28 29 33 34 35 36 37 38 39 44 45 46 47 48 49 55 56 57 58 59 66 67 68 69 77 78 79 88 89 99 101 111 123 124 125 126 127 128 129 134 135 136 137 138 139 145 146 147 148 149 156 157 158 159 167 168 169 178 179 189 202 222 234 235 236 237 238 239 245 246 247 248 249 256 257 258 259 267 268 269 278 279 289 303 312 333 345 346 347 348 349 356 357 358 359 367 368 369 378 379 389 404 413 444 456 457 458 459 467 468 469 478 479 489 505 514 523 555 567 568 569 578 579 589 606 615 624 666 678 679 689 707 716 725 734 777 789 808 817 826 835 888 909 918 927 936 945 999`.split` `

numerr=0
for(i=1; i<1000; i++)
{
  v = i + '';
  r = f(v);
  ok = r == (test.indexOf(v) >= 0)
  if (!ok) console.log('Error',++numerr, v)
}  
if(!numerr) console.log('All test 1..999 ok')
<input id=I value=612324 type=number oninput='run()'>
<pre id=O>



0

রুবি, 117 105 85 বাইট

# original (117):
j,k=0,?0;"#{i}".chars.group_by{|n|n>k||j=j+1;k=n;j}.values.map{|a|a.map(&:to_i).reduce(&:+)}.reduce{|m,n|n==m ?m:nil}

# inspired by PHP regexp approach (105):
"#{i}".scan(/0?1?2?3?4?5?6?7?8?9?/).map{|a|a.chars.map(&:to_i).reduce(&:+)}.reduce{|m,n|!n||n==m ?m:nil}

# some number comparison simplification (85):
!"#{i}".scan(/0?1?2?3?4?5?6?7?8?9?/).map{|a|a.chars.map(&:to_i).reduce(&:+)}.uniq[1]

এটি এই ডেনিস সংখ্যার পূর্ণসংখ্যার সাথে ফেরত দেবে বা ডেনিস নম্বর nilনা হলে। সমস্ত পূর্ণসংখ্যা রুবিতে সত্য হিসাবে বিবেচিত হবে এবং nilএটি মিথ্যাও বলে বিবেচিত হবে। iপূর্ণসংখ্যা যা পরীক্ষা করা হচ্ছে।

তৃতীয় সংস্করণ আসলে ফিরে আসে trueএবং false

PS উত্তর হিসাবে 1 থেকে 1000 পর্যন্ত 172 পূর্ণসংখ্যা ফেরত পরীক্ষা করেছে।


0

এপিএল, 23 বাইট

{1=≢∪+/↑N⊂⍨1,2>/N←⍎¨⍕⍵}

ব্যাখ্যা:

  • N←⍎¨⍕⍵: ইনপুটটিতে স্বতন্ত্র অঙ্কগুলি পান, সঞ্চয় করুন N
  • N⊂⍨1,2>/N: কঠোরভাবে সংখ্যা বাড়ানোর সাবলিস্টগুলি সন্ধান করুন N
  • +/↑: প্রতিটি সাবলিস্ট যোগফল
  • 1=≢∪: দেখুন ফলাফলের তালিকায় কেবলমাত্র একটি অনন্য উপাদান রয়েছে কিনা

0

++ , 109 বাইট যুক্ত করুন

D,g,@@#,BF1_B
D,k,@@#,bR$d@$!Q@BFB
D,f,@,BDdVÑ_€?1€_0b]$+€?dbLRBcB*BZB]GbL1+b]+qG€gd€bLÑ_0b]$+BcB]£k€¦+Ñ=1$ª=

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

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

fgkf

f(x)

x1[4,4,4]0110A010

[1,2,...length(A)]0AAAAA

ggA

g(x,y)

g(x,y)x:=[1,2,0,1,2]y=33AA10x=12012A=[3,6]3A6x

g([1,2,0,1,2],3)[1 2 0 1 2 2][1,2]g

g(x,y)yAx:=12012g

[[[1 2] [1 2 0 1 2]]]

[2,5]A10[0,3]gB

k(x,n)

k[[1,2],[3,4],[5,6]]

[[[1,2],0],[[1,2,0,1,2],3]]kk([1,2,0,1,2],3)

k(x,n)gn=0[n,x,n]n=0[[2,1,0,1,2],3]nxxB

[0,1,2][2,1,0]

k(x,n)(x,n)B1

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