Gà McNugget số


29

Sự miêu tả

Số gà McNugget là số có thể được biểu thị bằng tổng 6, 9 hoặc 20 - kích thước ban đầu của các hộp Gà McNuggets nổi tiếng được bán bởi McDonald. Trong tổng đó, một số có thể xảy ra nhiều hơn một lần, 6 + 6 = 12số đó cũng vậy và số đó phải "chứa" ít nhất một trong các kích thước được đề cập. Số gà McNugget đầu tiên là:

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

Thử thách

Nhiệm vụ của bạn là viết một chương trình hoặc hàm, với một số nguyên dương, xác định xem số này có thể được biểu thị theo cách được mô tả hay không, do đó là số Gà McNugget. Sau đó, nó sẽ tạo ra một giá trị trung thực hoặc giả dựa trên quyết định của nó.

Các trường hợp thử nghiệm

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

Đây là , vì vậy câu trả lời ngắn nhất bằng byte thắng và các sơ hở tiêu chuẩn được áp dụng!


15
Cần lưu ý rằng "Tất cả các số nguyên là các số McNugget ngoại trừ 1, 2, 3, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19, 22, 23, 25, 28, 31, 34, 37 và 43. " ( mathworld )
Leaky Nun

1
Chà, vậy thì hãy coi đó là một thử thách nén, nhưng cảm ơn bạn đã lưu ý
racer290 16/07/17

3
Bất cứ ai cũng có một liên kết OEIS cho điều này ???
CraigR8806

2
Bạn có gì để chống lại gói nugget 4 mảnh? mcdonalds.com/us/en-us/product/chicken-mcnuggets-4-unch.html
Dan Neely

Câu trả lời:


37

Python, 27 byte

lambda n:0x82492cb6dbf>>n&1

Hãy thử trực tuyến!


11
Mã ma thuật này là gì o_O, điều này thật tuyệt vời
HyperNeutrino

Bạn có thể loại bỏ ~bởi vì bạn có thể trao đổi đầu ra.
Rò rỉ Nun

1
Ngoài ra, 8953174650303có cùng độ dài với 0x82492cb6dbf(mặc dù ít đọc hơn ).
Rò rỉ Nun

2
@HyperNeutrino, số ma thuật chỉ có các bit được đặt tương ứng với các số không phải là số Gà McNugget. Nhìn vào biểu diễn nhị phân của nó và nó sẽ rõ ràng hơn nhiều.
David Z

1
Thật xấu hổ, bạn không thể dễ dàng sử dụng ý tưởng tương tự với cơ sở 64
Jacob Garby 18/07/17

29

Python 3 , 24 byte

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

Hãy thử trực tuyến!

Giải trình

Với 69một mình, người ta có thể làm cho tất cả các số nguyên chia hết cho số 3lớn hơn 3, như đã nêu trong nhận xét của ovs đối với thách thức . Người ta cũng cho rằng người ta cũng có thể thực hiện 0. Trong kết luận, người ta có thể thực hiện 0,6,9,12,15,....

Với một ví dụ 20, người ta có thể thực hiện : 20,26,29,32,35,....

Với hai trường hợp 20, người ta có thể thực hiện : 40,46,49,52,55,....

Ba trường hợp là không bao giờ cần thiết, cho 3 x 20 = 10 x 6.


Lưu ý rằng các trường hợp không 20cần cũng chia hết cho 3; các trường hợp 20cần thiết để lại một phần còn lại 2; trường hợp hai 20là cần thiết để lại một phần còn lại 1.

Số lượng 20cần thiết do đó có thể được tính bằng (-n)%3. Sau đó, chúng tôi làm n-(((-n)%3)*20)để loại bỏ số lượng 20cần thiết từ số. Sau đó chúng tôi kiểm tra xem con số này là không âm, nhưng không phải 3.



@ Mr.Xcoder cập nhật.
Leaky Nun

f=lambda n:n%3<1<n-2or n>20and f(n-20)có hoạt động không
Zacharý

@ Zacharý cảm ơn, cập nhật.
Leaky Nun

1
Bạn có thể loại bỏ f=ngay bây giờ vì nó không đệ quy.
notjagan

8

Python 2 , 28 byte

lambda n:-n%3-n/20<(n%20!=3)

Hãy thử trực tuyến!


Sử dụng một số lỗi và thử và ánh xạ phần đầu tiên vào phạm vi, tôi có một ý tưởng sơ bộ về cách thức hoạt động của nó. Tuy nhiên, tôi muốn biết làm thế nào bạn đưa ra giải pháp này.
Rò rỉ Nun

@LeakyNun Hài hước, tôi nghĩ đây là phương pháp tự nhiên và bạn là người thông minh :). Tôi lưu ý các giá trị có thể có (n%3,n/20)từ danh sách loại trừ của bạn là {(2, 0), (1, 0), (1, 1)}. Sử dụng -n%3thay vì đã cho một sự bất bình đẳng n/20>=(-n)%3. Từ đó, tôi {3,23,43}loay hoay một lúc để đảo ngược 3 mod 20 mà không ảnh hưởng đến 63,83, ... Tôi thấy việc thay đổi điểm cuối bất bình đẳng cho những hoạt động tốt nhất này.
xnor

Chà, phương pháp của tôi liên quan đến việc thực sự giải quyết vấn đề trong khi phương pháp của bạn đang thay đổi các giá trị trong danh sách bị loại trừ, vì vậy tôi nói rằng phương pháp của tôi tự nhiên hơn :)
Leaky Nun

7

Thạch , 11 byte

ṗ3’æ.“©µÞ‘ċ

Hãy thử trực tuyến!

Làm thế nào nó hoạt động

ṗ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
Gà McNuggets ™ và Jelly! Ừm !!!
CJ Dennis

@CJDennis Thật ra đó là Gà McNuggets © và Jelly.
caird coinheringaahing

@cairdcoinheringaahing Thật ra đó là Gà McNuggets® và Jelly.
Dan

5

Haskell , 36 byte

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

Hãy thử trực tuyến!

Giải trình

Giải pháp này là đơn giản như nó có thể nhận được. Dòng đầu tiên tuyên bố rằng với bất kỳ số nào nhỏ hơn 1 thì đó là số McNugget nếu n==0. Đó là để nói rằng đó 0là một số McNugget và tất cả các số âm thì không.

Dòng thứ hai tuyên bố rằng đối với tất cả các số khác, nlà số McNugget nếu nó trừ bất kỳ kích thước Nugget nào là số McNugget.

Đây là một tìm kiếm đệ quy khá đơn giản.



3

Thạch , 11 byte

_20$%3$¿o>3

Hãy thử trực tuyến!

Cổng câu trả lời Python của tôi , nhưng được sửa đổi một chút: trừ 20cho đến khi chia hết 3, sau đó kiểm tra xem nó có thuộc về 0,6,9,...ánh xạ 0tới đầu vào không (bằng cách sử dụng or), sau đó kiểm tra xem nó có lớn hơn không 3.

Ba số duy nhất tạo ra 0khi hoàn thành bước đầu tiên là 0, 20hoặc 40, với số đầu tiên nằm ngoài miền và phần còn lại lớn hơn 3.


Tôi không biết cách nhập dữ liệu đầu vào ..
racer290 16/07/17

@ racer290 Đối số dòng lệnh.
Erik các Outgolfer

3

Toán học, 53 byte

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

Có lẽ bạn có thể sử dụng FrobeniusSolvechức năng.
alephalpha


3

Toán học, 20 byte

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

Chức năng ẩn danh. Lấy một số làm đầu vào và trả về Truehoặc Falselà đầu ra. Logic được sao chép từ câu trả lời của Leaky Nun , với một số lạm dụng Inequality.


3

Mã máy x86-64, 22 byte

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

Các byte trên xác định một hàm trong mã máy 64 bit x86 xác định xem giá trị đầu vào có phải là số Gà McNugget hay không. Tham số nguyên dương duy nhất được truyền vào thanh ECXghi, theo quy ước gọi 64 bit của Microsoft được sử dụng trên Windows. Kết quả là một giá trị Boolean được trả về trong thanh EAXghi.

Ma thuật lắp ráp bất khả xâm phạm:

; 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

Rõ ràng, điều này đóng vai trò rất lớn đối với giải pháp của Anders Kaseorg trong Python , ở chỗ nó dựa trên một trường bit đại diện cho các giá trị là các số Gà McNugget. Cụ thể, mỗi bit trong trường này tương ứng với số Gà McNugget hợp lệ được đặt thành 1; tất cả các bit khác được đặt thành 0. (Điều này coi 0 là số Gà McNugget hợp lệ, nhưng nếu bạn không thích điều đó, thì sở thích của bạn là một sửa đổi một bit.)

Chúng tôi bắt đầu bằng cách tải giá trị này vào một thanh ghi. Đó là một giá trị 64 bit, đã mất 8 byte để mã hóa, cộng với chúng ta cần một tiền tố REX.W một byte, vì vậy chúng tôi thực sự rất tốn kém về mặt byte, nhưng đây là trung tâm của giải pháp, vì vậy Tôi đoán nó đáng giá.

Sau đó chúng ta chuyển trường ngay theo giá trị đầu vào. * Cuối cùng, chúng tôi che dấu tất cả trừ bit thứ tự thấp nhất và điều đó trở thành kết quả Boolean của chúng tôi.

Tuy nhiên, vì bạn không thể thay đổi nhiều hơn số bit thực sự trong giá trị, nên điều này chỉ hoạt động đối với các đầu vào từ 0 Nott63. Để hỗ trợ các giá trị đầu vào cao hơn, chúng tôi chèn một bài kiểm tra ở đầu hàm phân nhánh xuống dưới cùng của giá trị đầu vào là> = 64. Điều thú vị duy nhất về điều này là chúng tôi tải trước hằng số trường bit trong RAXvà sau đó phân nhánh theo hướng dẫn che đi bit thứ tự thấp nhất, do đó đảm bảo rằng chúng ta luôn trả về 1.

Hãy thử trực tuyến!
(Cuộc gọi hàm C có chú thích với một thuộc tính khiến GCC gọi nó bằng cách sử dụng quy ước gọi của Microsoft mà mã lắp ráp của tôi sử dụng. Nếu TIO đã cung cấp MSVC, điều này sẽ không cần thiết.)

__
* Thay thế cho một ca làm việc, chúng ta có thể đã sử dụng lệnh x86 BT, nhưng đó là 1 byte dài hơn để mã hóa, do đó không có lợi thế. Trừ khi chúng tôi buộc phải sử dụng một quy ước gọi khác mà không thuận tiện vượt qua giá trị đầu vào trong thanh ECXghi. Đây sẽ là một vấn đề vì SHR yêu cầu toán hạng nguồn của nó phải có CLsố lần dịch chuyển động. Do đó, một quy ước gọi khác nhau sẽ yêu cầu chúng tôi MOVchỉnh sửa giá trị đầu vào từ bất kỳ đăng ký nào được truyền vào ECX, sẽ tiêu tốn của chúng tôi 2 byte. Lệnh BTcó thể sử dụng bất kỳ thanh ghi nào làm toán hạng nguồn, với chi phí chỉ 1 byte. Vì vậy, trong tình huống đó, nó sẽ được ưa thích hơn.BTđặt giá trị của bit tương ứng vào cờ mang (CF), vì vậy bạn sẽ sử dụng một SETClệnh để nhận giá trị đó trong một thanh ghi số nguyên như ALvậy để nó có thể được trả về cho người gọi.


Thực hiện thay thế, 23 byte

Dưới đây là một triển khai thay thế sử dụng các phép toán modulo và phép nhân để xác định xem giá trị đầu vào có phải là số Chicken McNugget hay không.

Nó sử dụng quy ước gọi System64 AMD64 , vượt qua giá trị đầu vào trong thanh EDIghi. Kết quả vẫn là Boolean, được trả lại EAX.

Tuy nhiên, lưu ý rằng không giống như đoạn mã trên, đây là Boolean nghịch đảo (để thuận tiện cho việc triển khai). Nó trả về falsenếu giá trị đầu vào là số Gà McNugget hoặc truenếu giá trị đầu vào không phải là số Gà McNugget.

                    ; 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

Điều xấu ở đây là cần phải xử lý rõ ràng các giá trị đầu vào> = 43 bằng cách so sánh và phân nhánh ở trên cùng. Rõ ràng có nhiều cách khác để làm điều này không yêu cầu phân nhánh, như thuật toán của caird coinheringaahing , nhưng điều này sẽ tốn nhiều byte hơn để mã hóa, vì vậy không phải là một giải pháp hợp lý. Tôi nghĩ rằng tôi có thể thiếu một số mẹo xoay vòng bit để làm cho công việc này trở nên thanh lịch hơn và ít byte hơn so với giải pháp dựa trên bitfield ở trên (vì việc mã hóa bitfield mất rất nhiều byte), nhưng tôi đã nghiên cứu điều này cho một thời gian và vẫn không thể nhìn thấy nó.

Oh tốt, thử nó trực tuyến nào!


3

05AB1E, 17 16 byte

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

Hãy thử trực tuyến!

Giải trình

  Ž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
Bạn có các liên kết TIO trùng lặp.
Hiện thân của sự thiếu hiểu biết

1
Câu trả lời tốt đẹp. Chào mừng bạn đến với PPCG và thế giới của 05AB1E. :) Một điều cần golf là để sử dụng cho chuỗi (có buitins cho chuỗi 1-, 2-, và 3 char, là ', tương ứng). Tôi có cảm giác có thể chơi golf nhiều hơn, có lẽ bằng cách sử dụng một cách tiếp cận khác, nhưng bất kể đây là câu trả lời đầu tiên tốt đẹp. +1 từ tôi.
Kevin Cruijssen

1
Đã thực sự chính xác. Tìm thấy 12-byter bằng cách sử dụng nội dung Åœ: … ÇIÅœåPOĀ. Đó là một cách tiếp cận hoàn toàn khác, vì vậy nếu bạn muốn tôi đăng nó dưới dạng một câu trả lời riêng biệt hơn là một sân golf của bạn, hãy cho tôi biết. PS: Tôi không chắc chắn 100% nếu không thể in được cho phép trong bảng mã 05AB1E . Nó có thể phải ở dạng mã hóa khác trong trường hợp đó, điều này sẽ làm cho một số ký tự được tính là 2 byte mỗi ký tự thay thế .. Trong trường hợp đó ŽBo21вcó thể là một thay thế cho byte 1.
Kevin Cruijssen

Giống như Kevin đề cập, cả 3 byte trong chuỗi của bạn đều không nằm trong trang mã 05ab1e và do đó không thể được sử dụng mà không tính toàn bộ chương trình trong utf-8 sẽ khiến nó dài hơn rất nhiều. Tuy nhiên, bạn có thể sử dụng ŽGç₂вthay vì chuỗi trong khi đồng thời lưu một byte trong quy trình.
Emigna

Kevin, đi cho nó. Thật tuyệt khi thấy các cách tiếp cận khác nhau. Emigna, cảm ơn bạn đã gợi ý, tôi sẽ thực hiện thay đổi
rev

2

JavaScript (ES6), 69 64 byte

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

Đầu ra falsecho số gà McNugget, truenếu không.


Tôi muốn ít nhất một liên kết "dùng thử" ..
racer290

@ racer290 Đã thêm.
darrylyeo

n=>~'ABCDEFHIKLNOQRTWXZ]`cfl'.search(String.fromCharCode(n+65))cho 63 byte
Oki

2

Java, 21 57 24 byte

Hãy thử trực tuyến!

Chơi gôn

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

Ung dung:

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);
  }
}

Kết quả là sai cho 26 = 20 + 6.
Rò rỉ Nun

@LeakyNun Thuật toán đã quá ngây thơ. Tôi đã phải đi với kế hoạch B đã thêm một số byte, nhưng dường như lúc nào cũng tạo ra kết quả chính xác. Tôi nên lặp lại tất cả các giá trị để bắt đầu thay vì dựa vào các trường hợp thử nghiệm trong câu hỏi.


1
24 byte (xem ở trên)
Leaky Nun

1
@LeakyNun cảm ơn! Tôi vẫn còn nhiều điều để học về golf.



1

Haskell, 64 56 byte

Tôi đã không làm bất kỳ thủ thuật bit nào, nhưng nhìn vào các câu trả lời khác, nó thực sự có thể ngắn hơn để nhập Bitsmô-đun và sử dụng các phương thức đó. Cách tiếp cận này kiểm tra trực tiếp hơn nhiều.

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

1
Số lượng byte là 66không 64. Nhưng bạn có thể tiết kiệm rất nhiều dấu ngoặc đơn và đặt một bộ x/=0bảo vệ để lưu một số byte, xem tại đây .
ბიმო

1

Javascript, 92 78 72 byte

* đã lưu 14 byte nhờ @Jonasw

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])

Sử dụng thực tế là "Tất cả các số nguyên là các số McNugget ngoại trừ 1, 2, 3, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19, 22, 23, 25, 28, 31, 34 , 37 và 43. " từ bình luận của @ LeakyNun


sử dụng một mảng đơn giản sẽ tiết kiệm các byte cho .split ...
Jonas Wilms

Mảng @Jonas là 108 byte, chuỗi được chia là 73 byte
SuperStormer 17/07/17




1

Thêm ++ , 35 byte

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

Hãy thử trực tuyến!

Nhìn ma, không có vòng lặp. Hoặc chuỗi. Hoặc danh sách. Hoặc thực sự bất cứ điều gì giúp tiết kiệm byte. Nhưng chủ yếu là vì Add ++ không biết những thứ đó là gì.

3 tháng sau, tôi nhận ra rằng điều này không hợp lệ và đã sửa nó. Bằng cách nào đó, nó đánh gôn 13 byte. Đây là một hàm lấy một đối số và kiểm tra xem đối số đó có phải là số Gà McNugget hay không.

Làm thế nào nó hoạt động

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

Excel, 87 byte

=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)

Ngoài ra, 92 byte:

=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))

1

PHP, 69 + 1 byte

for($n=$argn;$n>0;$n-=20)if($n%3<1)for($k=$n;$k>0;$k-=9)$k%6||die(1);

thoát với 1số McNugget gà, 0khác.

Chạy như ống với -nhoặc thử trực tuyến .



0

Toán học, 59 byte

!Select[IntegerPartitions@#,{6,9,20}~SubsetQ~#&]=={}&&#!=0&

0

Javascript 37 byte

Lấy một số nguyên dương nvà đầu ra truecho các số Gà McNugget và falsecho các số khác.

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

Giải trình

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
    )
)

Đệ quy về chức năng này là rất lớn và đối với bất kỳ đủ lớn n, bạn sẽ vượt quá giới hạn ngăn xếp cuộc gọi. Đây là phiên bản tránh các giới hạn đó bằng cách kiểm tra xem ncó lớn hơn số McNugget không phải Gà lớn nhất không (43 byte [điểm thưởng để trở thành số McNugget không phải Gà lớn nhất?]):

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


0

JavaScript ES5, 46 byte

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

Câu trả lời boolean rõ ràng, 50 byte:

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

Lóng ngóng, nhưng nó hoàn thành công việc Trả về falsehoặc 0cho mọi giá trị không phải là 0, 1, 2, 3, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19, 22, 23, 25, 28, 31, 34 , 37 tuổi, hoặc 43, và true, -1hoặc 1cho mọi thứ khác.

Giải pháp rõ ràng trả về truehoặc falsechỉ.

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

Clojure 33 byte

Một nỗ lực nhanh chóng ok: #(-> %(rem 20)(rem 9)(rem 6)(= 0))


0

Pari / GP , 48 byte

0là giả. mọi thứ khác là sự thật.

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

Hãy thử trực tuyến!


Nhận xét không liên quan: vấn đề với câu trả lời này của bạn là gì? # ~ SetPrecision ~ 1 &?
J42161217

@Jenny_mathy Nó không thành công trong 0.25trường hợp thử nghiệm.
alephalpha
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.