Tavuk McNugget Numaraları


29

Açıklama

Chicken McNugget sayıları, McDonald's tarafından satılan ünlü Chicken McNuggets kutularının ilk boyutları olan 6, 9 veya 20 arasında toplam olarak ifade edilebilecek sayılardır . Bu toplamda, bir sayı birden fazla olabilir, bu 6 + 6 = 12da böyle bir sayıdır ve sayının belirtilen boyutlardan en az birini "içermesi" gerekir. İlk Chicken McNugget sayıları:

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

Meydan okuma

Göreviniz, pozitif bir tamsayı verildiğinde, bu sayının açıklanan şekilde ifade edilip edilemeyeceğini belirleyen bir program veya işlev yazmaktır, bu nedenle böyle bir Tavuk McNugget numarasıdır. Daha sonra kararına dayanarak bir hakikat veya sahte değer vermelidir.

Test durumları

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

Bu , yani bayt cinsinden en kısa cevap kazanır ve standart boşluklar uygulanır!


15
"Tüm tamsayılar 1, 2, 3, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19, 22, 23, 25, 28, 31 dışındaki McNugget sayılarıdır. 34, 37 ve 43. " ( mathworld )
Leaky Nun

1
Peki, o zaman bir sıkıştırma mücadelesi olarak kabul edelim, ama not için teşekkürler
racer290

3
Bunun için OEIS bağlantısı olan var mı ???
CraigR8806

2
4 parçalı külçe paketine karşı neyin var? mcdonalds.com/us/en-us/product/chicken-mcnuggets-4-piece.html
Dan Ne De

Yanıtlar:


37

Python, 27 bayt

lambda n:0x82492cb6dbf>>n&1

Çevrimiçi deneyin!


11
Bu sihirli kod nedir o_O this amazing
HyperNeutrino

Sen kaldırabilirsiniz ~sen çıkışları takas çünkü.
Leaky Nun

1
Ayrıca, 8953174650303aynı uzunluğa sahiptir 0x82492cb6dbf( daha az okunabilir olsa da ).
Leaky Nun

2
@HyperNeutrino, sihirli sayının yalnızca Chicken McNugget sayıları olmayan sayılara karşılık gelen bit kümelerine sahiptir . İkili gösterimine bakın, çok daha net olacaktır.
David Z

1
Bu aynı fikri temel 64 ile kolayca kullanamazsınız
Jacob Garby

29

Python 3 , 24 bayt

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

Çevrimiçi deneyin!

açıklama

Yalnız 6ve 9tek başına, tüm tamsayılar , ovs'nin mücadeleye yaptığı yorumda da belirtildiği gibi bölünebilir hale 3getirilebilir . Bunun da yapabileceği varsayılmaktadır . Sonuç olarak, biri yapabilir .300,6,9,12,15,...

Biri bir örneğiyle 20, tek yapabilirsiniz: 20,26,29,32,35,....

İki örneğini sayesinde 20, tek yapabilirsiniz: 40,46,49,52,55,....

Üç örnek hiçbir zaman gerekli değildir 3 x 20 = 10 x 6.


20İhtiyaç duyulmayan durumların da 3 ile bölünebilir olduğuna dikkat edin ; birinin 20ihtiyaç duyduğu durumlar kalanını bırakır 2; 20İkisine ihtiyaç duyulan durumlar geri kalanını bırakır 1.

20İhtiyaç duyulan sayı bundan dolayı hesaplanabilir (-n)%3. Ardından, gerekli n-(((-n)%3)*20)sayıyı sayıdan kaldırmak için yapıyoruz 20. Daha sonra bu sayının negatif olmadığını kontrol ediyoruz 3.



@ Mr.Xcoder güncellendi.
Leaky Nun

f=lambda n:n%3<1<n-2or n>20and f(n-20)İşe yarıyor mu?
Zacharý

@ Zacharý teşekkürler, güncellendi.
Leaky Nun

1
f=Özyinelemeli olmadığı için şimdi kaldırabilirsiniz .
notjagan

8

Python 2,28 bayt

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

Çevrimiçi deneyin!


Bazı deneme yanılma kullanarak ve ilk kısmı menzile eşleştirerek, nasıl çalıştığı hakkında kabaca bir fikrim var. Ancak, bu çözümü nasıl bulduğunuzu bilmek istiyorum.
Leaky Nun

@LeakyNun Komik, bunun doğal bir yöntem olduğunu düşündüm ve seninki zekice biriydi :). (n%3,n/20)Dışlanan listenizdeki olası değerlerin olduğunu not aldım {(2, 0), (1, 0), (1, 1)}. -n%3Bunun yerine kullanılması bir eşitsizlik verdi n/20>=(-n)%3. Oradan, {3,23,43}3,8 20 olan ve 63,83'ü etkilemeden tersine çevirmek için bir süre uğraştım, ... Bu işe yarayan en güzeller için eşitsizlik uç noktasını değiştirmeyi buldum.
xnor

Benim yöntemim gerçekten problemi çözmeyi içerir, yönteminiz hariç tutulan listedeki değerlere uyuyor, bu yüzden yöntemimin daha doğal olduğunu söyleyebilirim :)
Leaky Nun

7

Jöle , 11 bayt

ṗ3’æ.“©µÞ‘ċ

Çevrimiçi deneyin!

Nasıl çalışır

ṗ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
Tavuk McNuggets ™ ve Jöle! Mmmm !!!
CJ Dennis

@CJDennis Aslında Tavuk McNuggets © ve Jelly.
caird coinheringaahing

@cairdcoinheringaahing Aslında bu, Chicken McNuggets® ve Jelly.
Dan

5

Haskell , 36 bayt

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

Çevrimiçi deneyin!

açıklama

Bu çözüm olabildiğince basittir. İlk satır, 1'den küçük herhangi bir sayı için eğer bir McNugget numarası olduğunu açıklar n==0. Yani bu 0bir McNugget numarası ve tüm negatif sayılar değil.

İkinci satır, diğer tüm sayılar niçin Nugget boyutlarından herhangi birinin eksi bir McNugget numarası olması durumunda bir McNugget numarası olduğunu açıklar.

Bu oldukça basit bir özyinelemeli arama.



3

Jöle , 11 bayt

_20$%3$¿o>3

Çevrimiçi deneyin!

Python'umun limanı yanıtlıyor , fakat biraz değiştirilmiş: bölülene 20kadar 3çıkartın, daha sonra girişe 0,6,9,...eşleştirerek ait olup olmadığını kontrol edin 0(kullanarak or) ve sonra büyük olup olmadığını kontrol edin 3.

Üreten tek üç sayı 0birinci adım tamamlandıktan sonra olduğu 0, 20ya da 40birinci bir etki alanı dışında olmak ve geri kalan daha fazla olacak şekilde, 3.


Girdi nasıl girilir
bilmiyorum

@ racer290 Komut satırı argümanı.
Outgolfer Erik,

3

Mathematica, 53 bayt

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

Belki FrobeniusSolveişlevi kullanabilirsiniz .
alephalpha


3

Mathematica, 20 bayt

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

Anonim işlev Bir sayıyı girdi olarak alır ve geri döndürür Trueveya Falseçıktı olarak alır. Mantık Leaky Nun'un cevabından kopyalandı, bazıları da kötüye kullanıldı Inequality.


3

x86-64 Makine Kodu, 22 bayt

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

Yukarıdaki baytlar, giriş değerinin bir Chicken McNugget numarası olup olmadığını belirleyen 64 bit x86 makine kodunda bir işlev tanımlar. Tekli pozitif tamsayı parametresi, Windows'ta kullanılan Microsoft 64 bit arama kuralınıECX izleyerek kayıt defterine iletilir . Sonuç, kayıt defterinde döndürülen bir Boolean değeridir .EAX

Ungolfed montaj anımsatıcıları:

; 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

Açıkçası, bu, Anders Kaseorg'un Python'daki çözümünden büyük ölçüde etkilendiği için, Chicken McNugget sayıları olan değerleri temsil eden bir bit alanı üzerine kuruludur. Spesifik olarak, bu alandaki geçerli bir Chicken McNugget numarasına karşılık gelen her bir bit 1 olarak ayarlanır; diğer tüm bitler 0 olarak ayarlanır (Bu, 0 değerini geçerli bir Chicken McNugget numarası olarak kabul eder, ancak bundan hoşlanmıyorsanız tercihiniz uzaktaki tek bitlik bir değişikliktir.)

Bu değeri basitçe bir sicile yükleyerek başlıyoruz. Zaten kodlamak için 8 bayt alan 64 bitlik bir değer, artı bir baytlık REX.W ön ekine ihtiyacımız var, bu yüzden baytlar açısından gerçekten oldukça boşuna gidiyoruz, ama bu çözümün kalbi, yani Sanırım buna değer.

Daha sonra alanı giriş değeri ile sağa kaydırırız. * Sonunda, en düşük dereceli biti hariç hepsini gizleriz ve bu Boole sonucumuz olur.

Ancak, aslında değerdeki bit sayısından daha fazla kayma yapamadığınız için, bu yalnızca 0-63 arasındaki girişlerde işe yarar. Daha yüksek giriş değerlerini desteklemek için, giriş değerinin en altına dallanan fonksiyonun üstüne bir test ekleriz: = 64. Bu konuda ilginç olan tek şey bit alan sabitini önyüklememizdir , RAXsonra dallanma en düşük sıradaki biti maskeleyen talimata kadar, böylece her zaman geri dönmemizi sağlayın 1.

Çevrimiçi deneyin!
(Oradaki C işlevi çağrısı, GCC'nin derleme kodumun kullandığı Microsoft çağrı kuralını kullanarak aramasına neden olan bir niteliğe açıklamalıdır. TIO MSVC sağlamışsa, bu gerekli olmaz.)

__
* Bir vardiyaya alternatif olarak, x86 BTkomutunu kullanabilirdik, ama kodlamak için 1 bayt daha uzun, bu yüzden avantaj yok. Biz edildi sürece zorla rahatlıkla giriş değerini geçemedi farklı bir arama kuralını kullanmayı ECXkayıt. Bu bir problem olacaktır, çünkü kaynak işlenenin dinamik bir kayma sayımı için SHR olmasını gerektirirCL . Bu nedenle, farklı bir çağrı kuralı MOV, giriş değerini, hangi kayıttan geçirildiyse ECXgirmemizi gerektirecek ve bu da bize 2 bayta mal olacaktır. BTTalimat kullanabilirsiniz herhangi yalnızca 1 byte bir maliyetle, bir kaynak işlenen olarak kayıt. Yani, bu durumda, tercih edilir.BTİlgili bitin değerini taşıma bayrağına (CF) koyar, böylece SETCbu değeri bir tamsayı kaydında almak için bir talimat kullanırsınız, böylece ALarayan kişiye geri döndürülebilir.


Alternatif uygulama, 23 bayt

Giriş değerinin bir Chicken McNugget numarası olup olmadığını belirlemek için modulo ve çarpma işlemlerini kullanan alternatif bir uygulama.

Kayıt defterindeki giriş değerini geçen System V AMD64 arama kuralını kullanır EDI. Sonuç hala bir Boolean, geri döndü EAX.

Bununla birlikte, yukarıdaki koddan farklı olarak, bunun ters bir Boole olduğuna dikkat edin (uygulama kolaylığı için). Bu döndüren falsegiriş değeri bir tavuk McNugget sayı ise veya truegiriş değeri ise değil bir tavuk McNugget numarası.

                    ; 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

Bu konuda çirkin olan şey, giriş değerlerinin> = 43 üstte bir karşılaştır ve dalla tarafından açıkça işlenmesi gereğidir. Açıkçası bunu yapmanın, caird coinheringaahing'in algoritması gibi dallanma gerektirmeyen başka yolları da var , ancak bu kodlamanın kodlaması çok daha fazla bayt alacaktır , bu yüzden makul bir çözüm değildir. Muhtemelen bu işi daha zarif bir şekilde halledecek ve yukarıdaki bitfield tabanlı çözümden daha az bayt olacak bir bit çırpma hilesi eksik olduğumu düşünüyorum (çünkü bit alanın kodlanması çok fazla bayt alır), ancak bunun için çalıştım. Bir süre ve hala göremiyorum.

Oh, yine de çevrimiçi deneyin !


3

05AB1E, 17 16 bayt

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

Çevrimiçi deneyin!

açıklama

  Ž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
Yinelenen TIO bağlantılarınız var.
Cehalet

1
Güzel cevap PPCG'ye ve 05AB1E dünyasına hoş geldiniz. :) golf için bir şey kullanmaktır dizesi (buitins 1-, 2-, ve 3-karakter dizileri için bulunmaktadır, olan ', ve sırasıyla). Belki de farklı bir yaklaşım kullanarak daha çok golf oynayabileceğimi hissediyorum, ancak bu ne olursa olsun güzel bir cevap. Benden +1.
Kevin Cruijssen

1
Gerçekten de haklıydı. Yerleşiğini yararlanarak 12 Byter Bulunan Åœ: … ÇIÅœåPOĀ. Bu tamamen farklı bir yaklaşım, bu yüzden sizinkini golf yerine ayrı bir cevap olarak göndermemi istiyorsanız, bana bildirin. Not: 05AB1E kod sayfasında yazdırılamaz özelliklere izin verilip verilmediğinden% 100 emin değilim . Bu durumda farklı bir kodlamada olması gerekebilir, bu da bazı karakterlerin her birinin yerine 2 bayt sayılmasını sağlar. Bu durumda ŽBo21в+1 bayt için bir alternatif olabilir.
Kevin Cruijssen

Kevin'in dediği gibi, dizginizdeki 3 bayttan hiçbiri 05ab1e kod sayfasında değildir ve bu nedenle, utf-8'deki tüm programı saymadan, bu daha uzun sürecek şekilde kullanılamaz. Bununla birlikte ŽGç₂в, işlem sırasında bir byte'ı eşzamanlı olarak kaydederken dize yerine kullanabilirsiniz .
Emigna

Kevin, git hadi. Farklı yaklaşımları görmek güzel olurdu. Emigna, teşekkürler öneri için, ben değişiklik yapacak
rev

2

JavaScript (ES6), 69 64 bayt

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

Aksi takdirde false, Chicken McNugget sayıları için çıktılar true.


En azından bir "dene" linkini istiyorum ..
racer290

@ racer290 Eklendi.
darrylyeo

n=>~'ABCDEFHIKLNOQRTWXZ]`cfl'.search(String.fromCharCode(n+65))63 bayt için
Oki

2

Java, 21 57 24 bayt

Çevrimiçi deneyin!

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

Sonuç yanlış 26 = 20 + 6.
Leaky Nun

@LeakyNun Algoritması çok saftı. Bazı baytlar ekleyen B planıyla gitmek zorunda kaldım, ancak şimdi her zaman doğru sonuçlar ortaya koyuyor. Söz konusu test durumlarına güvenmek yerine, başlangıç ​​için tüm değerleri yinelemeliydim.


1
24 bayt (yukarıya bakın)
Leaky Nun

1
@LeakyNun teşekkürler! Hala golf hakkında daha çok şey öğreneceğim var.

1

Python 2 , 51 bayt

@LeakyNun sayesinde -1 bayt

lambda n:max(n>43,25<n>n%3>1,5<n>n%3<1,n in[20,40])

Çevrimiçi deneyin! Altbilgi tüm McNugget olmayan numaraları yazdırır


n%3sadece 0 veya 1 veya 2 olabilir, bu yüzden n%3==2eşdeğerdir n%3>1.
Leaky Nun


1

Haskell, 64 56 bayt

Biraz hile yapmadım, ama diğer cevaplara bakmak, Bitsmodülü içe aktarmak ve bu yöntemleri kullanmak için daha kısa olabilir . Bu yaklaşım doğrudan çok daha fazla kontrol eder.

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

1
Bayt sayısı 66değil 64. Ama çok parantez x/=0biriktirebilir ve bazı baytları kurtarmak için bir koruma koyabilirsiniz , buraya bakın .
17:17

1

Javascript, 92 78 72 bayt

* @Jonasw sayesinde 14 byte kurtarıldı

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

"Tüm tamsayılar 1, 2, 3, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19, 22, 23, 25, 28, 31, 34 dışındaki tüm McNugget sayılarıdır. , 37 ve 43. " @ LeakyNun adlı kullanıcının yorumu


basit bir dizi kullanmak baytları .split için saklardı ...
Jonas Wilms

@Jonas dizisi 108 bayttır, bölünmüş dize 73 bayttır
SuperStormer




1

++ , 35 bayt ekle

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

Çevrimiçi deneyin!

Bak anne, hayır, döngüler yok. Veya dizeleri. Veya listeler. Ya da gerçekten bayt kurtarmaya yardımcı olan bir şey. Ancak esas olarak Add ++ bunlardan ne olduğunu bilmiyor.

3 ay sonra bunun geçersiz olduğunu anladım ve düzelttim. Her nasılsa, bu 13 bayt tarafından golf oynadı. Bu, bir argüman alan ve bu argümanın Chicken McNugget numarası olup olmadığını test eden bir fonksiyondur.

Nasıl çalışır

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 bayt

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

Alternatif olarak, 92 bayt:

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

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

1Chicken McNugget Numarası için çıkar 0.

Pipe ile çalıştırın -nveya çevrimiçi deneyin .



0

Mathematica, 59 bayt

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

0

Javascript 37 bayt

Olumlu bir tamsayı alır nve trueChicken McNugget sayıları ve falsediğerleri için çıktılar .

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

açıklama

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

Bu işlevin özyinelemesinin belirsiz olduğu ve yeterince büyük olan her biri için nçağrı yığını sınırlarını aşacaksınız. İşte en nbüyük Chicken McNugget olmayan numaradan daha büyük olup olmadığını kontrol ederek bu limitleri önleyen bir sürüm (43 bayt [en büyük Chicken McNugget olmayan numara olması için bonus puan?]):

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


0

JavaScript ES5, 46 bayt

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

Açık boolean cevap, 50 bayt:

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

Sakar, ama işi halleder. 0, 1, 2, 3, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19, 22, 23, 25, 28, 31, 34 olmayan her değer için döner falseveya 037 ya da 43, ve true, -1veya 1diğer her şey için.

Açık çözüm geri döner trueya da falsesadece.

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 bayt

Tamam hızlı bir girişimde: #(-> %(rem 20)(rem 9)(rem 6)(= 0))


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.