চিকেন ম্যাকনুগেট নম্বর


29

বিবরণ

চিকেন ম্যাকনুগেট নম্বরগুলি এমন সংখ্যা যা 6, 9 বা 20 এর যোগফল হিসাবে প্রকাশ করা যেতে পারে - ম্যাকডোনাল্ডস দ্বারা বিক্রি করা বিখ্যাত চিকেন ম্যাকনগেটস বাক্সের প্রাথমিক মাপের আকার । এই যোগফলে, একটি সংখ্যা একাধিকবার সংঘটিত হতে পারে, 6 + 6 = 12তেমন একটি সংখ্যাও এটির মতো এবং সংখ্যায় অবশ্যই উল্লিখিত আকারের কমপক্ষে একটি "ধারণ" করতে হবে। প্রথম চিকেন ম্যাকনুগেট নম্বরগুলি হ'ল:

6
9
6 + 6 = 12
6 + 9 = 15
9 + 9 = 6 + 6 + 6 = 18
20
6 + 6 + 9 = 21
...

চ্যালেঞ্জ

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

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

6 -> true
7 -> false
12 -> true
15 -> true
21 -> true
40 -> true
42 -> true

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


15
এটি লক্ষ করা উচিত যে "সমস্ত পূর্ণসংখ্যা হ'ল ম্যাকনুগেট সংখ্যা 1, 2, 3, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19, 22, 23, 25, 28, 31, 34, 37 এবং 43. " ( mathworld )
নুন

1
ঠিক আছে, তবে আসুন এটি একটি সংক্ষেপণ চ্যালেঞ্জ হিসাবে গ্রহণ করি, তবে দ্রষ্টব্যটির জন্য ধন্যবাদ
রেসার 290

3
এর জন্য কারওও ওইআইএস লিঙ্ক আছে ???
ক্রেগআর 8806

2
4 টুকরা নুগেট প্যাকের বিরুদ্ধে আপনার কী আছে? mcdonalds.com/us/en-us/product/chicken-mcnuggets-4-piece.html
ড্যান নিলি

উত্তর:


37

পাইথন, 27 বাইট

lambda n:0x82492cb6dbf>>n&1

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



আপনি মুছে ফেলতে পারেন ~কারণ আপনি আউটপুটগুলি অদলবদল করতে পারেন।
ফাঁস নুন

1
এছাড়াও, ( 8953174650303একই সাথে কম পাঠযোগ্য) এর একই দৈর্ঘ্য রয়েছে । 0x82492cb6dbf
ফাঁস নুন

2
@ হাইপারনিউট্রিনো ম্যাজিক নম্বরটিতে কেবলমাত্র সেই বিট সেট রয়েছে যা চিকেন ম্যাকনুগেট সংখ্যা নয় এমন সংখ্যার সাথে মিল রাখে । এর বাইনারি উপস্থাপনা দেখুন এবং এটি আরও পরিষ্কার হবে।
ডেভিড জেড

1
লজ্জাজনকভাবে আপনি বেস 64 এর সাথে এই একই ধারণাটি সহজে ব্যবহার করতে পারবেন না
জ্যাকব গার্বি

29

পাইথন 3 , 24 বাইট

lambda n:0<=n--n%3*20!=3

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

ব্যাখ্যা

চ্যালেঞ্জ সম্পর্কে ওভিএসের মন্তব্যে যেমন বলা হয়েছে , এককভাবে 6এবং সমস্ত 9একক দিয়ে সমস্ত সংখ্যাকে বিভাজ্য করে তুলতে পারে 3যা এর চেয়ে বেশি 3হয় । ধারণা করা হয় যে এটিও তৈরি করতে পারে । উপসংহারে, একটি করতে পারেন ।00,6,9,12,15,...

এক নিদর্শনের সঙ্গে 20, এক করতে পারেন: 20,26,29,32,35,...

দুই স্থানেই সঙ্গে 20, এক করতে পারেন: 40,46,49,52,55,...

তিন দৃষ্টান্ত জন্য, কখনও প্রয়োজন 3 x 20 = 10 x 6


খেয়াল করুন যে যেখানে মামলা নেই 20 প্রয়োজন হয় না সেগুলিও 3 দ্বারা বিভাজ্য; যে ক্ষেত্রে একটির 20প্রয়োজন হয় তার অবশিষ্টাংশ ছেড়ে যায় 2; যে দুটি ক্ষেত্রে দুটি 20প্রয়োজন রয়েছে তার একটি অবশিষ্ট অংশ ছেড়ে যায় 1

20প্রয়োজনীয় সংখ্যা তাই হিসাব করা যায় (-n)%3। তারপরে, আমরা n-(((-n)%3)*20)সংখ্যাটি সরিয়ে ফেলতে পারি20 প্রয়োজনীয় । আমরা তখন পরীক্ষা করে দেখি যে এই সংখ্যাটি অ-নেতিবাচক, তবে তা নয় 3



@ মিঃ এক্সকোডার আপডেট হয়েছে।
লিকি নুন

f=lambda n:n%3<1<n-2or n>20and f(n-20)ওইটা কি কাজ করে?
জাকারি

@ জ্যাচারý ধন্যবাদ, আপডেট হয়েছে।
লিকি নুন

1
এটি f=এখন অপসারণ করতে পারে যেহেতু এটি পুনরাবৃত্ত হয় না।
notjagan

8

কিছু ট্রায়াল-অ্যান্ড-ত্রুটি ব্যবহার করে এবং প্রথম অংশটিকে পরিসীমাটিতে ম্যাপিং করা হচ্ছে, এটি কীভাবে কাজ করে তা সম্পর্কে আমার মোটামুটি ধারণা রয়েছে। তবে আমি জানতে চাই আপনি কীভাবে এই সমাধানটি নিয়ে এসেছেন।
ফাঁস নুন

@ ল্যাকিয়ুন ফানি, আমি ভেবেছিলাম এটি প্রাকৃতিক পদ্ধতি এবং আপনার চালাকটি :)। আমি উল্লেখ করেছি (n%3,n/20)আপনার বাম তালিকা থেকে সম্ভাব্য মানগুলি {(2, 0), (1, 0), (1, 1)}-n%3পরিবর্তে ব্যবহার করা একটি বৈষম্য দিয়েছে n/20>=(-n)%3। সেখান থেকে, আমি বিপরীতে কিছুক্ষণ {3,23,43}বেঁধেছিলাম যা mod৩,৮৩ টি প্রভাবিত না করে 3 মড 20 হয় ... আমি এই অসম্পূর্ণ পরিবেশনের জন্য অসমতার শেষ বিন্দুটি সরিয়ে দেখতে পেয়েছি।
xnor

ঠিক আছে, আমার পদ্ধতিটি সত্যই সমস্যা সমাধানের সাথে জড়িত যেখানে আপনার পদ্ধতিটি বাদ দেওয়া তালিকার মানগুলির সাথে ফিড করছে, তাই আমি বলব যে আমার পদ্ধতিটি আরও প্রাকৃতিক :) :)
লিকি নুন

7

জেলি , 11 বাইট

ṗ3’æ.“©µÞ‘ċ

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

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

ṗ3’æ.“©µÞ‘ċ  Main link. Argument: n

ṗ3           Cartesian power; yield all 3-tuples over [1, ..., n].
  ’          Decrement all coordinates.
     “©µÞ‘   Yield [6, 9, 20].
   æ.        Take the dot product of each 3-tuple and [6, 9, 20].
          ċ  Count the occurrences of n (Positive for Chicken McNuggets numbers).

4
চিকেন ম্যাকনুগেটস ™ এবং জেলি! MMMM !!!
সিজে ডেনিস

@ সিজেডেনিস আসলে এটি চিকেন ম্যাকনগেটস © এবং জেলি।
কেয়ার্ড কোইনারিংহিংহ

@ কায়ারডকোইনরিঙ্গিংহিং আসলে এটি চিকেন ম্যাকনগেটস এবং জেলি।
ড্যান

5

হাস্কেল , 36 বাইট

f n|n<1=n==0
f n=any(f.(n-))[6,9,20]

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

ব্যাখ্যা

এই সমাধানটি এটি পেতে পারে হিসাবে প্রায় সহজ। প্রথম লাইন ঘোষণা করে যে 1 এর চেয়ে কম সংখ্যার জন্য এটি যদি ম্যাকনুগেট নম্বর হয় n==0। এর অর্থ 0এটি একটি ম্যাকনুগেট নম্বর এবং সমস্ত নেতিবাচক সংখ্যা নেই।

দ্বিতীয় লাইনটি ঘোষণা করে যে অন্যান্য সমস্ত সংখ্যার জন্য, nএটি ম্যাকনুগেট নম্বর, যদি এটি কোনও ন্যুগেট আকারের ম্যাকনুগেট নম্বর হয়।

এটি একটি দুর্দান্ত সরল পুনরাবৃত্তি অনুসন্ধান।



3

জেলি , 11 বাইট

_20$%3$¿o>3

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

আমার পাইথনের উত্তরটির পোর্ট , তবে কিছুটা সংশোধন করা হয়েছে: 20দ্বারা বিভাজ্য হওয়া পর্যন্ত বিয়োগ করুন 3, তারপরে এটি পরীক্ষা করে কিনা তা পরীক্ষা করুন0,6,9,... ম্যাপিং 0(ব্যবহার করে or) ম্যাপ করার মাধ্যমে পরীক্ষা করুন এবং তারপরে এটির চেয়ে বড় কিনা তা পরীক্ষা করুন 3

মাত্র তিন নম্বর যে উত্পাদন 0প্রথম পদক্ষেপ সম্পন্ন অধিষ্ঠান করেন 0, 20অথবা 40প্রথম এক ডোমেইন হচ্ছে আউট, এবং বাকি তার চেয়ে অনেক বেশী হচ্ছে, 3


কীভাবে ইনপুট প্রবেশ করতে হবে তা আমি পাই না ..
রেসার 290

@ racer290 কমান্ড-লাইনের যুক্তি।
এরিক আউটগল্ফার

3

গণিত, 53 বাইট

!Flatten@Table[Tr/@Tuples[{6,9,20},i],{i,#}]~FreeQ~#&

হতে পারে আপনি FrobeniusSolveফাংশনটি ব্যবহার করতে পারেন ।
আলেফাল্ফ


3

গণিত, 20 বাইট

0<=#-20Mod[-#,3]!=3&

বেনামে ফাংশন। ইনপুট এবং রিটার্ন হিসাবে Trueবা Falseআউটপুট হিসাবে একটি সংখ্যা নেয় । লিকি লিক নুনের উত্তর থেকে অনুলিপি করেছেন, এতে কিছু যোগ হয়েছে অপব্যবহারের সাথে Inequality


3

x86-64 মেশিন কোড, 22 বাইট

48 B8 41 92 34 6D DB F7 FF FF 83 F9 40 7D 03 48 D3 E8 83 E0 01 C3

উপরের বাইটগুলি 64-বিট x86 মেশিন কোডে একটি ফাংশন সংজ্ঞায়িত করে যা ইনপুট মানটি চিকেন ম্যাকনুগেট নম্বর কিনা তা নির্ধারণ করে। উইন্ডোজটিতে ব্যবহৃত মাইক্রোসফ্ট 64৪-বিট কলিং কনভেনশনECX অনুসরণ করে একটি একক পজিটিভ পূর্ণসংখ্যা প্যারামিটারটি রেজিস্টারে পাস করা হয় । ফলাফলটি বুলিয়ান মানটিতে ফিরে আসেEAX রেজিস্টারে ।

অবহেলিত সমাবেশ মেমোনমিক্স:

; bool IsMcNuggetNumber(int n)
; n is passed in ECX
    movabs  rax, 0xFFFFF7DB6D349241   ; load a 64-bit constant (the bit field)
    cmp     ecx, 64
    jge     TheEnd                    ; if input value >= 64, branch to end
    shr     rax, cl
TheEnd:
    and     eax, 1                    ; mask off all but LSB
    ret

স্পষ্টতই, এটি প্রচন্ডভাবে বন্ধ রয়েছে পাইথনের অ্যান্ডারস কাসেরগের সমাধান থেকে , এটি চিকেন ম্যাকনুগেট সংখ্যার মানকে উপস্থাপন করার জন্য একটি বিট-ফিল্ডের চারপাশে তৈরি। বিশেষত, এই ক্ষেত্রের প্রতিটি বিট যা একটি বৈধ চিকেন ম্যাকনুগেট সংখ্যার সাথে মিলে যায়; অন্যান্য সমস্ত বিট 0 তে সেট করা আছে (এটি 0 টি একটি বৈধ চিকেন ম্যাকনুগেট নম্বর হিসাবে বিবেচনা করে তবে আপনি যদি এটি পছন্দ না করেন তবে আপনার পছন্দটি একক-বিট পরিবর্তন হবে))

আমরা খালি একটি রেজিস্টার এ মান লোড করে শুরু। এটি একটি -৪-বিটের মান, যা ইতিমধ্যে এনকোড করতে by বাইট লাগে, এবং আমাদের একটি বাইট রেক্স.ডাব্লু উপসর্গ প্রয়োজন, তাই আমরা বাইটের ক্ষেত্রে সত্যই বেশ ব্যয় করছি, তবে এটি সমাধানের হৃদয়, তাই আমার ধারণা এটি মূল্যবান worth

তারপরে আমরা ইনপুট মান দ্বারা ক্ষেত্রটি ডানদিকে সরান। * অবশেষে, আমরা সর্বনিম্ন-অর্ডার বিট ব্যতীত অন্য সবকেই মুখোশ করি এবং এটি আমাদের বুলিয়ান ফলাফল হয়ে যায়।

তবে, যেহেতু আপনি বাস্তবে বিটের সংখ্যার চেয়ে বেশি পরিমাণে স্থানান্তর করতে পারবেন না, এটি কেবল 0-63 থেকে ইনপুটগুলির জন্য কাজ করে। উচ্চতর ইনপুট মানগুলিকে সমর্থন করার জন্য, আমরা ফাংশনের শীর্ষে একটি পরীক্ষা সন্নিবেশ করি যা ইনপুট মানটির নীচে শাখা হয়> = 64 this এটি সম্পর্কে আকর্ষণীয় কেবলমাত্র আমরা বিট-ফিল্ডের ধ্রুবকে প্রিললোড করি RAXএবং তারপরে শাখা করি branch নীচে যে নির্দেশটি সর্বনিম্ন-অর্ডার বিটটি বন্ধ করে দেয়, এটি নিশ্চিত করে যে আমরা সর্বদা 1 এ ফিরে আসছি।

এটি অনলাইন চেষ্টা করুন!
(সেখানকার সি ফাংশন কলটি এমন একটি বৈশিষ্ট্যের সাথে টীকাযুক্ত করা হয়েছে যার ফলে আমার এসেম্বলি কোডটি মাইক্রোসফ্ট কলিং কনভেনশন ব্যবহার করে জিসিসি কল করেছে। টিআইও যদি এমএসভিসি সরবরাহ করে তবে এটি প্রয়োজনীয় হবে না))

__
* শিফটের বিকল্প হিসাবে, আমরা x86 BTনির্দেশ ব্যবহার করতে পারতাম , তবে এনকোড করতে এটি 1 বাইট বেশি দীর্ঘ, সুতরাং কোনও সুবিধা নেই। আমরা না হলে বাধ্য হয়ে আলাদা কলিং কনভেনশন ব্যবহার করা হয় যা ECXনিবন্ধে ইনপুট মানটি স্বাচ্ছন্দ্যে পাস করে না। এই সমস্যা হবে কারণ SHR প্রয়োজন যে তার উত্স হতে প্রতীক CLএকটি গতিশীল শিফট গণনা জন্য। অতএব, একটি ভিন্ন কলিং কনভেনশনের জন্য আমাদের যে MOVকোনও নিবন্ধ ECXযা পাস করে তা থেকে ইনপুট মানটি সম্পাদন করা দরকার , যার জন্য আমাদের 2 বাইট খরচ পড়বে। BTনির্দেশ ব্যবহার করতে পারেন কোন মাত্র 1 বাইট একটি খরচে, একটি উৎস প্রতীক হিসাবে নিবন্ধিত। সুতরাং, এই পরিস্থিতিতে, এটি আরও ভাল হবে।BTআনুষঙ্গিক বিটের মান ক্যারি ফ্ল্যাগে (সিএফ) রাখে, যাতে আপনি সেই ব্যবহার করেনSETCকোনও পূর্ণসংখ্যার রেজিষ্টারে এই মানটি পাওয়ার নির্দেশনা ALযাতে এটি কলারের কাছে ফিরিয়ে দেওয়া যায়।


বিকল্প বাস্তবায়ন, 23 বাইট

ইনপুট মানটি চিকেন ম্যাকনুগেট নম্বর কিনা তা নির্ধারণ করতে এখানে একটি বিকল্প প্রয়োগ রয়েছে যা মডুলো এবং গুণক ক্রিয়াকলাপগুলি ব্যবহার করে।

এটি সিস্টেম ভি এমডি 64 কলিং কনভেনশন ব্যবহার করে , যা EDIরেজিস্টারে ইনপুট মানটি পাস করে । ফলাফলটি এখনও একটি বুলিয়ান, ফিরে এসেছিল EAX

দ্রষ্টব্য, যদিও, উপরের কোডটির বিপরীতে, এটি একটি বিপরীত বুলিয়ান (বাস্তবায়নের সুবিধার জন্য)। falseইনপুট মানটি যদি চিকেন ম্যাকনুগেট নম্বর হয় বা trueইনপুট মানটি যদি চিকেন ম্যাকনুগেট নম্বর না হয় তবে এটি ফিরে আসে ।

                    ; bool IsNotMcNuggetNumber(int n)
                    ; n is passed in EDI
8D 04 3F            lea    eax, [rdi+rdi*1]   ; multiply input by 2, and put result in EAX
83 FF 2B            cmp    edi, 43
7D 0E               jge    TheEnd             ; everything >= 43 is a McNugget number
99                  cdq                       ; zero EDX in only 1 byte
6A 03               push   3
59                  pop    rcx                ; short way to put 3 in ECX for DIV
F7 F1               div    ecx                ; divide input value by 3
6B D2 14            imul   edx, edx, 20       ; multiply remainder of division by 20
39 D7               cmp    edi, edx
0F 9C C0            setl   al                 ; AL = (original input) < (input % 3 * 20)
                 TheEnd:
C3                  ret

এ সম্পর্কে কুৎসিত কী তা হ'ল শীর্ষে তুলনা-এবং-শাখার মাধ্যমে স্পষ্টভাবে ইনপুট মানগুলি> = 43 পরিচালনা করতে হবে। এটি করার স্পষ্টরূপে অন্যান্য উপায় রয়েছে যেগুলি যেমন শাখার প্রয়োজন হয় না স্পষ্টরূপে কায়ার্ড কইনারিংহিংয়ের অ্যালগরিদমের মতো , তবে এটি অনেক সময় নেয় এনকোড করতে আরও বাইট লাগবে, সুতরাং এটি কোনও যুক্তিসঙ্গত সমাধান নয়। আমি অনুভব করেছি যে আমি সম্ভবত কিছু বিট-টুইডলিং ট্রিক মিস করছি যা এই কাজটি আরও মার্জিতভাবে তৈরি করবে এবং উপরের বিটফিল্ড-ভিত্তিক সমাধানের চেয়ে কম বাইট হবে (যেহেতু বিটফিল্ডটি এনকোডিং করার ফলে অনেকগুলি বাইট লাগে) তবে আমি এটির জন্য গবেষণা করেছি কিছুক্ষণ পরেও তা দেখতে পাচ্ছে না।

ওহ ভাল, যাইহোক এটি অনলাইন চেষ্টা করুন !


3

05 এ বি 1 ই , 17 16 বাইট

ŽGç₂в©IED®âO«]I¢

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

ব্যাখ্যা

  ŽGç₂в                 The list [6, 9, 20]
       ©                Store this list in register_c
        IE              Loop <input> number of times
           ®â           Cartesian product stack contents with list in register_c
             O          Sum up the contents of each sub array
          D   «         List duplicated before taking Cartesian product, concat
               ]        End for loop
                I¢      Count occurences of input

1
আপনার সদৃশ টিআইও লিঙ্ক রয়েছে have
অজ্ঞতার মূর্ত প্রতীক

1
চমৎকার উত্তর. পিপিসিজি এবং 05AB1E এর বিশ্বে আপনাকে স্বাগতম। :) গল্ফ একটা জিনিষ ব্যবহার করা স্ট্রিং এর জন্য (সেখানে 1-, 2-, এবং 3 গৃহস্থালির কাজ স্ট্রিং জন্য buitins হয়, হচ্ছে ', এবং যথাক্রমে)। আমার আরও বোধ হয় আরও গল্ফ করা যায়, সম্ভবত কোনও ভিন্ন পদ্ধতির ব্যবহার করে, তবে নির্বিশেষে এটি একটি দুর্দান্ত প্রথম উত্তর। আমার কাছ থেকে +1
কেভিন ক্রুইজসেন

1
সত্যিই সঠিক ছিল। Builtin ব্যবহার দ্বারা একটি 12-byter পাওয়া Åœ: … ÇIÅœåPOĀ। এটি সম্পূর্ণ আলাদা পদ্ধতির, সুতরাং আপনি যদি নিজের গল্ফের পরিবর্তে আমাকে আলাদা উত্তর হিসাবে পোস্ট করতে চান তবে আমাকে জানান। PS: আমি 05 % নিশ্চিত নই যদি 05AB1E কোডেপে প্রিন্টেবলগুলি অনুমোদিত হয় । সেক্ষেত্রে এটি অন্য কোনও এনকোডিংয়ের মধ্যে থাকতে পারে, যা কিছু অক্ষরকে পরিবর্তে প্রতিটি প্রতি 2 বাইট হিসাবে গণ্য করবে .. ŽBo21вসেক্ষেত্রে +1 বাইটের বিকল্প হতে পারে।
কেভিন ক্রুইজসেন

কেভিন উল্লেখ করেছেন, আপনার স্ট্রিংয়ের 3 টি বাইট উভয়ই 05ab1e কোড পৃষ্ঠাতে নেই এবং সুতরাং পুরো প্রোগ্রামটি utf-8 এ গণনা করা ছাড়া এটি ব্যবহার করা যাবে না যা এটি অনেক দীর্ঘায়িত করবে। আপনি ŽGç₂вএকই সাথে প্রক্রিয়াটিতে বাইট সংরক্ষণ করার সময় স্ট্রিংয়ের পরিবর্তে ব্যবহার করতে পারেন ।
এমিগিনা

কেভিন, এটি জন্য যান। বিভিন্ন পন্থা দেখে ভাল লাগবে। Emigna, ধন্যবাদ আপনি পরামর্শ জন্য, আমি পরিবর্তন করতে হবে
Rev

2

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

n=>'ABCDEFHIKLNOQRTWXZ]`cfl'.includes(String.fromCharCode(n+65))

অন্যথায় falseচিকেন ম্যাকনুগেট নম্বরগুলির আউটপুট true


আমি কমপক্ষে একটি "চেষ্টা করে দেখুন" লিঙ্কটি চাই ..
রেসার 290

@ racer290 যোগ করেছেন
darrylyeo

n=>~'ABCDEFHIKLNOQRTWXZ]`cfl'.search(String.fromCharCode(n+65))63 বাইটের জন্য
ওকি

2

জাভা, 21 57 24 বাইট

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

Golfed:

n->(n-=n*2%3*20)>=0&n!=3

Ungolfed:

import java.util.*;

public class ChickenMcNuggetNumbers {

  private static final Set<Integer> FALSE_VALUES = new HashSet<>(Arrays.asList(
    new Integer[] { 0, 1, 2, 3, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19, 22, 23,
    25, 28, 31, 34, 37, 43 }));

  public static void main(String[] args) {
    for (int i = 0; i < 45; ++i) {
      System.out.println(i + " -> expected=" + !FALSE_VALUES.contains(i)
        + ", actual=" + f(n->(n-=n*2%3*20)>=0&n!=3, i));
    }
  }

  public static boolean f(java.util.function.Function<Integer, Boolean> f, int n) {
    return f.apply(n);
  }
}

ফলাফলের জন্য ভুল 26 = 20 + 6
ফাঁস নুন

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


1
24 বাইট (উপরে দেখুন)
লিকি নুন

1
@ লিকিউন ধন্যবাদ! গল্ফিং সম্পর্কে আমার এখনও অনেক কিছু শেখার আছে।



1

Haskell,, 64 56 বাইট

আমি কোনও বিট কৌশলই করি নি, তবে অন্যান্য উত্তরগুলির দিকে তাকালে এটি Bitsমডিউলটি আমদানি করতে এবং সেই পদ্ধতিগুলি ব্যবহার করতে সংক্ষিপ্ততর হতে পারে । এই পদ্ধতির আরও অনেক বেশি সরাসরি পরীক্ষা করে দেখুন।

f x=(\l->elem x[i*6+j*9+k*20|i<-l,j<-l,k<-l,x/=0])[0..x]

1
বাইট গণনা হয় 66না 64। তবে আপনি প্রচুর বন্ধনী সংরক্ষণ করতে পারেন এবং x/=0কিছু বাইট সংরক্ষণ করতে একটি প্রহরী রাখতে পারেন, দেখুন এখানে
21

1

জাভাস্ক্রিপ্ট, 92 78 72 বাইট

* 14 জন বাইট সংরক্ষণ করেছেন @ জোনাসউকে ধন্যবাদ

a=>!(a in[0,1,2,3,4,5,7,8,10,11,13,14,16,17,19,22,23,25,28,31,34,37,43])

"1, 2, 3, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19, 22, 23, 25, 28, 31, 34 ব্যতীত সমস্ত সংখ্যক ম্যাকনুগেট সংখ্যা হ'ল" , 37, এবং 43. " @ LeakyNun এর মন্তব্য থেকে


একটি সাধারণ অ্যারে ব্যবহার করা। স্প্লিট ... এর জন্য বাইটগুলি সংরক্ষণ করতে পারে ...
জোনাস

@ জোনাস অ্যারে 108 বাইট, বিভক্ত স্ট্রিং 73 বাইট
সুপারস্টোরমার




1

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

D,f,@,A6$%0=@20$%0=A3$%0=A8<A43<s1<

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

মা দেখুন, কিছুক্ষণ লুপস না। বা স্ট্রিং। বা তালিকা। বা সত্যই এমন কিছু যা বাইটস সংরক্ষণে সহায়তা করে। তবে মূলত কারণ অ্যাড ++ এগুলির কোনওটি কী তা জানেন না।

3 মাস পরে, আমি বুঝতে পারি যে এটি অবৈধ। একরকম, এটি 13 বাইট দ্বারা গল্ফ করেছে। এটি একটি ফাংশন যা একটি যুক্তি নেয় এবং পরীক্ষা করে যে আর্গুমেন্টটি চিকেন ম্যাকনুজেট নম্বর কিনা।

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

D,f,@,                        - Create a monadic (one argument) function called f (example argument: 3)
A                             - Push the argument again; STACK = [3 3]
 6                            - Push 6;                  STACK = [3 3 6]
  $                           - Swap the top two values; STACK = [3 6 3]
   %                          - Modulo;                  STACK = [3 3]
    0                         - Push 0;                  STACK = [3 3 0]
     =                        - Are they equal?          STACK = [3 0]
      @                       - Reverse the stack;       STACK = [0 3]
       20                     - Push 20;                 STACK = [0 3 20]
         $                    - Swap the top two values; STACK = [0 20 3]
          %                   - Modulo;                  STACK = [0 3]
           0                  - Push 0;                  STACK = [0 3 0]
            =                 - Are they equal?          STACK = [0 0]
             A                - Push the argument;       STACK = [0 0 3]
              3               - Push 3;                  STACK = [0 0 3 3]
               $              - Swap the top two values; STACK = [0 0 3 3]
                %             - Modulo;                  STACK = [0 0 0]
                 0            - Push 0;                  STACK = [0 0 0 0]
                  =           - Are they equal?          STACK = [0 0 1]
                   A          - Push the argument;       STACK = [0 0 1 3]
                    8         - Push 8;                  STACK = [0 0 1 3 8]
                     <        - Less than;               STACK = [0 0 1 0]
                      A       - Push the argument;       STACK = [0 0 1 0 3]
                       43     - Push 43;                 STACK = [0 0 1 0 3 43]
                         <    - Less than;               STACK = [0 0 1 0 0]
                          s   - Sum;                     STACK = [1]
                           1  - Push 1;                  STACK = [1 1]
                            < - Less than;               STACK = [0]

1

এক্সেল, 87 বাইট

=AND(OR(MOD(A1,3)*MOD(A1,20)*IF(A1>43,MOD(A1-40,3),1)*IF(A1>23,MOD(A1-20,3),1)=0),A1>5)

বিকল্পভাবে, 92 বাইট:

=CHOOSE(MOD(A1,3)+1,A1>3,IF(A1>43,MOD(A1-40,3)=0,A1=40),IF(A1>23,MOD(ABS(A1-20),3)=0,A1=20))




0

জাভাস্ক্রিপ্ট 37 বাইট

চিকেন ম্যাকনুগেট নম্বর এবং অন্যদের জন্য একটি ধনাত্মক পূর্ণসংখ্যার nএবং আউটপুট নেয় ।truefalse

F=n=>!(n<0||(n%6&&!F(n-9)&&!F(n-20)))

ব্যাখ্যা

F=n=>!(            // negate the internal test for non-Chicken McNugget numbers
    n<0 || (       // if n < 0, or
        n%6 &&     // if n % 6 is truthy,
        !F(n-9) && // and n-9 is not a Chicken McNugget number
        !F(n-20)   // and n-20 is not a Chicken McNugget number
                   // then n is not a Chicken McNugget number
    )
)

এই ফাংশনটিতে পুনরাবৃত্তি জঘন্য এবং কোনও পর্যায়ে বড়র জন্য n, আপনি কল স্ট্যাকের সীমা ছাড়িয়ে যাবেন। এখানে এমন একটি সংস্করণ যা এই সীমাগুলি এড়িয়ে চলে যে nচেকেন ম্যাকনুগেটের বৃহত্তম নম্বরের চেয়ে বড় কিনা (43 বাইটস [সবচেয়ে বড় চিকেন ম্যাকনুগেট নম্বর হওয়ার জন্য বোনাস পয়েন্ট?]):

F=n=>n>43||!(n<0||(n%6&&!F(n-9)&&!F(n-20)))


0

জাভাস্ক্রিপ্ট ES5, 46 বাইট

n=>n>5&&(!(n%20)||(n<24?!(n%3):n<44?n%3-1:1));

সুস্পষ্ট বুলিয়ান উত্তর, 50 বাইট:

n=>!!(n>5&&(!(n%20)||(n<24?!(n%3):n<44?n%3-1:1)));

আনাড়ি, তবে কাজটি হয়ে যায়। 0, 1, 2, 3, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19, 22, 23, 25, 28, 31, 34 এর মান falseবা প্রত্যাখ্যান 0করে , 37, বা 43, এবং true, -1বা 1অন্য সব কিছুর জন্য।

সুস্পষ্ট সমাধান ফিরে আসে trueবা falseশুধুমাত্র।

n=>!!(                                          ); forces Boolean type (optional)
      n>5                                          false for 0, 1, 2, 3, 4, 5 (and negative inputs)
            !(n%20)                                explicit true for 20, 40
                      n<24?!(n%3)                  false for 7, 8, 10, 11, 13, 14, 16, 17, 19, 22, 23
                                  n<44?n%3-1       false for 25, 28, 31, 34, 37, 43

0

ক্লোজার 33 বাইট

ঠিক আছে দ্রুত চেষ্টা: #(-> %(rem 20)(rem 9)(rem 6)(= 0))


0

পরী / জিপি , 48 বাইট

0মিথ্যা হয়। বাকি সব সত্য।

n->n*Vec(1/(1-x^6)/(1-x^9)/(1-x^20)+O(x^n++))[n]

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


অপ্রাসঙ্গিক মন্তব্য: আপনার এই উত্তরটিতে কী সমস্যা ছিল? # ~ সেটপ্রিসিশন ~ 1 &?
J42161217

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