분할 성 테스트


39

태스크

두 엄격히 양의 정수 주어 ND 입력으로서 여부를 결정 n이 있다 나누어 의해 D 정수가 존재하는 경우, 즉 , Q가 되도록 n = qd.

당신은 쓸 수 있습니다 프로그램이나 기능을 하고, 우리의 사용 표준 방법 입력을 수신하고 출력을 제공합니다.

결과는 진실이거나 거짓 값이어야합니다 . nd 로 나눌 수 있으면 진실하고 그렇지 않으면 거짓입니다.

부호있는 모든 8 비트 정수에 대해 작동하는 한 코드는 기본적으로 나타낼 수있는 정수 만 처리해야합니다. 그러나 알고리즘 은 임의로 큰 정수에 대해 작동 해야 합니다 .

모든 프로그래밍 언어를 사용할 수 있지만 이러한 허점 은 기본적으로 금지되어 있습니다.

이것은 이므로 바이트 단위로 측정 된 가장 짧은 유효한 답변이 이깁니다.

테스트 사례

 n,  d    output

 1,  1    truthy
 2,  1    truthy
 6,  3    truthy
17, 17    truthy
22,  2    truthy
 1,  2    falsy
 2,  3    falsy
 2,  4    falsy
 3,  9    falsy
15, 16    falsy

리더 보드

이 게시물의 맨 아래에있는 스택 스 니펫은 답변 a) 언어 당 가장 짧은 솔루션 목록으로, b) 전체 리더 보드로 카탈로그를 생성합니다.

답변이 표시되도록하려면 다음 마크 다운 템플릿을 사용하여 헤드 라인으로 답변을 시작하십시오.

## Language Name, N bytes

N제출물의 크기는 어디에 있습니까 ? 당신이 당신의 점수를 향상시킬 경우에, 당신은 할 수 있습니다 를 통해 눈에 띄는에 의해, 헤드 라인에 오래된 점수를 유지한다. 예를 들어 :

## Ruby, <s>104</s> <s>101</s> 96 bytes

헤더에 여러 숫자를 포함하려는 경우 (예 : 점수가 두 파일의 합계이거나 인터프리터 플래그 페널티를 별도로 나열하려는 경우) 실제 점수가 헤더 의 마지막 숫자 인지 확인하십시오 .

## Perl, 43 + 3 (-p flag) = 45 bytes

언어 이름을 링크로 만들면 스 니펫에 표시됩니다.

## [><>](http://esolangs.org/wiki/Fish), 121 bytes


이 대화는 채팅 으로 이동 되었습니다 .
Dennis

답변:



29

Brain-Flak , 72 70 64 62 58 46 바이트

{({}[()]{(<()>)}{}<({}[()]<({}())>)>)}{}{{}}{}

배당 및 제수를 (순서대로) 입력으로 취하여 제수 (트러스트)를 인쇄하거나 아무것도 인쇄하지 않습니다. 각 스택에는 암시적이고 무한한 양의 0이 있으므로 빈 출력은 거짓으로 간주해야합니다.

스택 정리는 아니지만이 솔루션은 단일 스택 만 사용합니다.

온라인으로 사용해보십시오!

2 바이트를 골라내는 @WheatWizard에게 감사합니다!

작동 원리

                INPUT: a (dividend), b (divisor)
                INITIAL STACK: n = a, d = b, r = 0
                               An infinite amount of zeroes follows.

{               While n is non-zero:
  (
    {}              Pop n from the stack.
    [()]            Yield -1.
    {               While the top of the stack (initially, d) is non-zero:
      (<()>)          Push 0.
    }
    {}              Pop 0. This will remove d from the stack if d = 0, leaving r
                    on top. We can think of this as performing the assignment
                    (d, r) = (r, d) if d = 0.
    <
      (
        {}              Pop d.
        [()]            Yield -1.
        <
          (
            {}              Pop r.
            ()              Yield 1.
          )               Push r + 1.
        >               Yield 0.
      )               Push d + (-1) + 0 = d - 1.
    >               Yield 0.
  )               Push n + (-1) + 0 + 0 + 0 = n - 1.
}               Each iteration decrements n, swaps d and r if d = 0, decrements d,
                and increments r.
                FINAL VALUES: n = 0
                              d = b - r
                              r = a % b if a % b > 0 else b
{}              Pop n.
{               While the top of the stack is non-zero:
  {}              Pop it.
}               This pops d and r if d > 0 (and, thus, a % b > 0) or noting at all.
{}              Pop d or a 0, leaving r if r = b and, thus, a % b = 0.

계수 계산, 42 바이트

위의 전체 프로그램은 모듈러스를 대신 계산하기 위해 사소한 방식으로 수정 될 수 있습니다.

{({}[()]<({}[()]<({}())>)>{(<()>)}{})}{}{}

이전과 마찬가지로이 방법은 스택을 청소하지 않지만 단일 스택 만 사용합니다. 계수가 0이면 스택을 비워두고 0 을 떠나는 것과 거의 같습니다 . 각 스택에는 무한한 0이 포함됩니다.

온라인으로 사용해보십시오!

작동 원리

나누기 테스터의 두 루프와 계수 계산기를 비교하십시오.

{({}[()]{(<()>)}{}<({}[()]<({}())>)>)}
{({}[()]<({}[()]<({}())>)>{(<()>)}{})}

유일한 차이의 위치 {(<()>)}{}교환이 거라고R 경우 D = 0 . 계수를 계산하기 위해 d 감소 시키고 r을 증가 시킨 후에이 스왑 수행합니다 .

이러한 변화는 결과에 영향을주지 않으면 %의 B> 0 이지만 경우 % B = 0 , 그 잎 (N, D, R) = (0, B, 0) - 아닌 (N, D, R) = (0, 0, b) – 스택에서.

따라서 모듈러스를 얻으려면 nd 만으로 팝 하면 됩니다 {}{}.

스택 클린 모듈러스 계산, 64 바이트

42 바이트 모듈러스 알고리즘은 스택 정리가 아니므로 모든 프로그램에서 그대로 사용할 수 없습니다. 다음 버전은 활성 스택에서 배당 및 제수를 (순서대로) 팝하고 모듈러스를 반환합니다. 다른 부작용이 없습니다.

({}(<()>)){({}[()]<(({}()[({})])){{}(<({}({}))>)}{}>)}({}{}<{}>)

이 솔루션은 주로 @WheatWizard의 이전 72 바이트 레코드를 기반으로하지만 스택을 전환하지 않아도 6 바이트를 절약합니다.

온라인으로 사용해보십시오!

작동 원리

             INPUT: a (dividend), b (divisor)
             INITIAL STACK: n = a, b

(
  {}         Pop and yield n = a.
  (<()>)       Push d = 0.
)              Push n + 0 = n.
             STACK: n, d = 0, b
{(           While n in non-zero:
  {}           Pop and yield n.
  [()]         Yield -1.
  <
   ((
     {}         Pop and yield d.
     ()         Yield 1.
     [({})]     Pop b, push it back on the stack, and yield -b.
   ))         Push d + 1 + -b = d + 1 - b twice.
   {          While/if d + 1 - b is non-zero, i.e., if d < b - 1
     {}         Pop d + 1 - b (second copy).
     (<(
       {}         Pop d + 1 - b (first copy).
       ({})       Pop b and push it back on the stack.
     )>)        Push d + 1 - b + b = d + 1, then 0.
   }          If the loop wasn't skipped entirely, pushing 0 breaks out.
              If d < b - 1, it essentially performs the assignment d = d + 1.
              However, if d = b - 1, we get d = d + 1 - b = b - 1 + 1 - b = 0.
              In all cases, we wind up with d = (d + 1) % b.
   {}         Pop 0.
  >         Yield 0.
)}        Push n + -1 + 0 = n - 1. Break if n - 1 = 0.
          STACK: n = 0, d = a % b, b
(
  {}        Pop and yield n = 0.
  {}        Pop and d = a % b.
  <{}>      Pop b, but yield 0.
)         Push 0 + a % b + 0 = a % b.

20

x86_32 기계 코드, 8 바이트

08048550 <div7>:
 8048550:   99                      cdq   
 8048551:   f7 f9                   idiv   %ecx
 8048553:   85 d2                   test   %edx,%edx
 8048555:   0f 94 c0                sete   %al

이것은 나의 첫 번째 코드 골프 답변이므로 모든 규칙을 따르기를 바랍니다.

먼저 cdq를 호출하여 edx 레지스터를 지우고 ecx 레지스터에서 부호있는 나누기를 수행하고 나머지는 edx에 저장합니다. 테스트 edx, edx 행은 edx가 0 인 경우 0 플래그를 설정하고 edx가 0이 아닌 경우 sete는 0을 false로 설정하고 edx가 0 인 경우 1을 true로 설정합니다.

이 바이트 수에 기여,하지만 테스트를 위해 것을 바로 코드입니다 여기에 나는 그것이 I / O를 처리 할 수있는이 방법은 쉽게 조립하기 때문에 인라인으로 쓴 C 코드입니다.


2
PPCG에 오신 것을 환영합니다. 좋은 첫 답변입니다!
Leaky Nun

전체 프로그램이어야합니까? 나는 떨어져 좀 내 대답을 포맷 된 이 답변 . 그리고 고마워요! 더 많은 코드 골프를 위해 어셈블리 / 기계 코드를 더 잘하고 싶습니다!
davey

1
어셈블리의 지정된 레지스터에서 입력 및 출력은 기본적으로 input , output 입니다. 이것은 완벽하게 수용 가능한 제출입니다. PPCG에 오신 것을 환영합니다!
Mego

환상적인! 감사합니다!
davey

17

16 진수, 15, 13, 12 10 바이트

모두가 좋아하는 육각형 언어! :디

TL; DR은 바이트 수를 줄이면서 형식화되지 않은 마술 솔루션을 사용합니다.

?{?..>1'%<.@!'/
?{?!1\.'%<@.>
?{?\!1@'%\!(
?{?!1\@'%<

@MartinEnder의 레이아웃 마법사 덕분에 2 바이트가 절약되었습니다.

@FryAmTheEggman은보다 창의적으로 모서리를 사용하여 1 바이트를 절약했습니다.

@MartinEnder와 @FryAmTheEggman은 모두 잘못된 값을 인쇄하지 않는 10 바이트 솔루션을 고안했습니다.

내 솔루션 (15) :

형식화되지 않은 :

?{?..>1'%<.@!'/

형식화 :

  ? { ?
 . . > 1
' % < . @
 ! ' / .
  . . .

@Martin Ender의 솔루션 (13) :

형식화되지 않은 :

?{?!1\.'%<@.>

형식화 :

  ? { ?
 ! 1 \ .
' % < @ .
 > . . .
  . . .

설명:

먼저, 입력을 받고 모듈러스를 취합니다.

  ? { ?
 . . . .
' % . . .
 . . . .
  . . .

그런 다음 계수가 0인지 여부를 확인합니다. 만약 그렇다면, IP는 60도 왼쪽으로 돌리고, 거울을 반사하며, 셀을 1로 설정하고 인쇄합니다.

그런 다음 IP는 네 번째 행으로 계속됩니다. >셀에 도달하면 셀의 값이 1이므로 대신 오른쪽으로 바뀝니다. 그것은 오른쪽으로 향하고 오른쪽 하단 모서리 NW로 돌아옵니다. IP가에 <도달하고 맨 위 행으로 이동 한 다음 오른쪽 모서리로 돌아와를 @눌러 프로그램을 중지합니다.

  . . .
 ! 1 \ .
. . < @ .
 > . . .
  . . .

계수가 양으로 판명되면 IP가 오른쪽으로 60도 회전합니다. 오른쪽 아래 모서리를 벗어나면 Hexagony의 줄 바꿈 규칙으로 인해 왼쪽 아래 모서리에서 계속됩니다. 이 '는 IP가 0으로 셀에 갈 수 있도록 재사용된다. 그런 다음 IP가 네 번째 행을 따라 이동하고 두 번째 행으로 줄 바꿈하여 인쇄를 시작하여에 반영됩니다 <. 에 대한 나머지 경로 @는 동일합니다.

  . . .
 ! . \ .
' . < @ .
 > . . .
  . . .

그것은 심각한 마법사입니다.

@FryAmTheEggman의 솔루션 (12) :

형식화되지 않은 :

?{?\!1@'%\!(

형식화 :

  ? { ?
 \ ! 1 @
' % \ ! (
 . . . .
  . . .

설명:

다른 솔루션과 마찬가지로 입력을 받고 모듈러스를 사용합니다.

  ? { ?
 . . . .
' % . . .
 . . . .
  . . .

그런 다음 IP가 하단 모서리로 편향됩니다. 계수가 양수이면 왼쪽 상단으로 이동합니다. 는 ?그것이이 0으로 설정되도록 셀 더 이상의 입력을 갖는 !다음 0을 출력하고,이 @프로그램을 종료한다.

  ? . .
 \ ! . @
. . \ . .
 . . . .
  . . .

모듈러스가 0 인 경우 상황이 훨씬 까다로워집니다. 우선 감소하고 0으로 재설정 한 다음 1로 설정 한 다음 인쇄합니다. 그런 다음 1은 0으로 감소합니다. 그 후 프로그램은 시작하려고 할 때까지 프로그램이 실행되는 것처럼 실행됩니다 0%0. 그러면 자동 오류가 발생하고 종료됩니다.

  ? { ?
 . . 1 .
' % \ ! (
 . . . .
  . . .

나는 조용한 오류 트릭을 정말로 좋아하지만 IP를 처음으로 통과하지만 두 번째 로 반영되도록 더 간단한 방법으로를 대체하는 것 (입니다 ./@

협업 솔루션 (10) :

형식화되지 않은 :

?{?!1\@'%<

형식화 :

  ? { ?
 ! 1 \ @
' % < . .
 . . . .
  . . .

이 프로그램은 다른 모든 프로그램과 동일하게 시작하여 입력을 받고 모드를 변경합니다.

입력이 0이면 IP에 도달하면 IP가 왼쪽으로 바뀝니다 <. 로 편향되어 1!@1을 인쇄하고 종료합니다.

  . . .
 ! 1 \ @
. . < . .
 . . . .
  . . .

입력이 양수이면 IP에 맞을 때 IP가 바로 켜 <집니다. 모퉁이를 빠져 나가고 인쇄하지 않고 @를 치는 오른쪽 상단 가장자리를 따라갑니다.

  . . ?
 . . . @
. . < . .
 . . . .
  . . .

6
답을 다르게 형식화해야한다고 생각합니다. 단일 코드 블록에 네 개의 답변이 있으면 바이트 수가 잘못 된 것처럼 보입니다.
mbomb007

17

Brain-flak 102, 98, 96 바이트

(({}<>))<>{({}[()])<>(({}[()])){{}(<({}[({})])>)}{}({}({}))<>}{}<>([{}]{}){<>(([()])())}({}{}())

와우. 심한. 설명을 게시 할 수도 있지만 직접 이해하지는 못합니다. 이 언어는 내 뇌를 아프게합니다.

온라인으로 사용해보십시오!

모듈러스 예제 를 제공 한 github 사용자 @Wheatwizard 에게 감사합니다 . 나는 아마 그것을 알아낼 수 없었다!

또한 더 짧은 대답은 여기에 있습니다 .

아마도 틀린 설명 :

(({}<>))                    #Push this element onto the other stack
<>                          #Move back to stack one.
{                           #While the top element is non-zero:
 ({}[()])                   #  Decrement the number on top
 <>                         #  Move to the other stack
 (({}[()]))                 #  Push the top element minus one twice
 {                          #  While the top element is non-zero:
  {}                        #    Pop the top element
  (<          >)            #    Push a zero
        ({})                #    Push the second from top element
       [    ]               #    Evalue this second from top element as negative
    ({}      )              #    And push that negative plus the top element
 }
 {}                         #  Pop the top element
 ({}({}))                   #  Push the top element plus the second from the top, AND push the second from top
 <>                         #  Switch stacks
}

{}                          #Pop the stack
<>                          #Switch to the other stack
([{}]{})                    #And push the top element minus the second element.

나머지는 매우 간단합니다.

{              }            #While the top element is non-zero:
 <>                         #Move to the other stack
   (([()])  )               #Push a negative one
          ()                #AND push the previously pushed value + 1 (e.g. 0)

                 (      )   #Push:
                  {}{}      #The top two elements added together
                      ()    #Plus one

The rest is pretty straightforward.그래, 그런 것 같아
Outgolfer Erik

각 brainflak 명령어를 바이트로 계산하면 24 바이트입니다.
noɥʇʎԀʎzɐɹƆ

12

자바 스크립트 (ES6) 17 12 11 바이트

a=>b=>a%b<1
  • 편집 : 'a> 0'이 예상되어 5 바이트가 제거되었습니다.
  • EDIT2 : Downgoat 덕분에 1 바이트가 제거 되었습니다 .

커링을 사용하여 1 바이트를 저장하십시오. a => b =>
Downgoat

어떻게 이것을 실행합니까? JS 콘솔에서 d=a=>b=>a%b<1다음을 시도하면 d(32,2)... 간단히 응답을 function b=>a%b<1
받습니다

@WallyWest 이것은 카레를 사용하므로을 입력하십시오 d(32)(2). 때문에 d(32)제공합니다 function b=>a%b<1, 당신은 다음에 그 함수를 호출 할 b
Cyoce

9

Vim, 11 번의 키 입력

C<C-r>=<C-r>"<C-Left>%<C-Right><1<cr>

문자열 만 처리하는 언어에는 나쁘지 않습니다. :디


무엇을 <C-Left>합니까? Mac에서 창을 전환하기 때문에 테스트 할 수 없습니다> _>
Downgoat

1
@ Downgoat ctrl 또는 command를 사용하고 있습니까? 어느 쪽이든 삽입 모드에서도 작동한다는 점을 제외하면 "b"와 같습니다.
DJMcMayhem

pedantic하기 위해서, 그것은 (와 + 는 동등하다) B보다는 동등하다 -차이점은 단어가 아닌 문자와 다르지만,이 경우에는 정확히 같은 일을한다 :) vimdoc.sourceforge.net/htmldoc/motion. html # <C-Left >bCtrlRightW
Christian Rondeau

9

수학 -17 13 3 바이트

많은 바이트를 절약 한 @MartinEnder에게 감사합니다!


그게 무슨 캐릭터 야?
Cyoce

@Cyoce 나는 현재 전화에서 유니 코드 코드를 모르지만에 대한 짧은 연산자입니다 Divisible[].
Yytsi

@Cyoce Shift + 백 슬래시라고도하는 파이프 기호라고 생각합니다.
Pavel

파이프 기호 인 경우 @Pavel은 3 바이트가 아닙니다.
Cyoce


8

레티 나, 12 바이트

^(1+)\1* \1$

124 로 나눌 수 111111111111 1111있는지 확인하는 것처럼 공백으로 구분 된 입력을 단항으로 가져옵니다 . 1 (true) 또는 0 (false)을 인쇄 합니다 .

온라인으로 사용해보십시오!

FryAmTheEggman은 2 바이트를 절약했습니다. 죄송합니다. 올바른 순서로 인수를 취하기 위해 내 답변을 다시 작성했습니다. (그런 다음 튀김은 의견에 나를 이겼다. 나는 정규식에 느리다!)


주문을 고치기 위해 필요한 경우에는 효과가 있다고 생각 ^(1+)\1* \1$합니다.
FryAmTheEggman

나는 새로운 스펙으로, 반대 입력 순서가 다시 괜찮다고 생각합니다.
Martin Ender

8

배치, 20 바이트

@cmd/cset/a!(%1%%%2)

1성공, 0실패시 출력 .


8

C #, 27 13 12 바이트

a=>b=>a%b<1;

익명의 람다를 지적한 TuukkaX에게 감사드립니다. 내가 알지도 못하는 카레를 알려주는 David Conrad에게 감사의 말을 전했다.

짧고 달콤합니다. 정수만 다루기 때문에 전체 바이트를 저장하는 <1대신 사용할 수 있습니다 ==0.


확실하지 않지만 람다를 사용할 수 있다고 생각합니다 (a,b)=>a%b<1;. +1.
Yytsi

@ TuukkaX, 확실하지 않아서 고맙습니다.
JustinM-복원 모니카

또한,이 사용 태닝의 JS 버전은 1 바이트를 줄이기 위해, 그것은 C #을 위해 일해야합니다 a=>b=>a%b<1;(참고 : 당신이 다음에 전화로해야한다 f(a)(b)가 아니라 f(a,b))
데이비드 콘래드에게

1
@DavidConrad oo 깔끔합니다. 감사합니다.
JustinM-복원 모니카

7

brainfuck, 53 바이트

입력을 바이트로 취하고 출력은 0x00또는 의 바이트 값입니다 0x01. 그것은이다 DivMod 알고리즘 다음 부울 부정 .

,>,<[->-[>+>>]>[+[-<+>]>+>>]<<<<<]>,>[<+>,]+<[>-<-]>.

온라인으로 사용해보십시오 -+끝 부분에 여분의 여분이있어서 ASCII로 출력을 볼 수 있습니다.


바이트를 절약하기 위해 "div"부분을 제거 할 수 있습니까?
Leaky Nun

1
@LeakyNun 이것은 모듈러스를 제공하는 가장 짧은 알려진 알고리즘입니다. 임시 셀이 더 필요하기 때문에 일부를 제거하면 실제로 더 길어집니다. 나누지 않으면 모듈러스를 찾을 수 없습니다.
mbomb007

감사합니다.
Leaky Nun

@LeakyNun Division 알고리즘의 길이를 살펴보십시오 .
mbomb007

아마도 더 짧은 것들이있을 것입니다. 그렇다면 아무도 찾지 못했거나 게시하지 않았습니다.
mbomb007

7

Brain-Flak , 88 86 바이트

(<({}<>)>)<>{({}[()])<>(({}()[({})])){{}(<({}({}))>)}{}<>}<>(({}<{}>)){{}{}(<(())>)}{}

이것은 Green Eggs 박사와 Iron Man DJMcMayhem이 저술 한 독창적 인 Brain-Flak divisibility 테스트 알고리즘 의보다 밀집된 버전입니다 .

작동 방식에 대한 간략한 설명은 다음과 같습니다.

  ({}<>)        #Move the top of the stack to the other stack #Start Mod
(<      >)      #Push zero
<>              #Switch stacks
{               #While the top of the stack is not zero
 ({}[()])       #Subtract one from the top of the stack
 <>             #Switch stacks
   {}()         #Pop the top, add one and ...
       [({})]   #Subtract the second element on the stack
 ((          )) #Push twice
 {              #If the top is not zero
  {}            #Pop the duplicate
    ({}({}))    #Add the second element to the first
  (<        >)  #Push zero
 }              #End if
 {}             #Pop the zero
 <>             #Switch back
}               #End While
<>              #Switch to the other stack
 ({}<{}>)       #Remove the second value on the stack         #End Mod
(        )      #Duplicate the result of modulation
{               #If the top is not zero
 {}{}           #Pop the top two elements
 (<(())>)       #Push a one and a zero
}               #End if
{}              #Pop the zero

온라인으로 사용해보십시오!


온라인 통역사와 연결 하시겠습니까?
Leaky Nun

잘 했어! 또한 사이트에 오신 것을 환영합니다! 나는 당신이 여기 재미를 바랍니다.
DJMcMayhem

좋은 첫 답변, PPCG에 오신 것을 환영합니다!
Leaky Nun

6

LOLCODE, 74 64 바이트

HOW IZ I f YR a AN YR b
BOTH SAEM MOD OF a AN b AN 0
IF U SAY SO

그것은 완전한 프로그램이며, 현재 구현은 HAI와 KTHXBYE를 요구하지 않습니다
OldBunny2800

그래 시도해 볼께. 1 초…
OldBunny2800

아니요, 2 바이트 더 깁니다.
OldBunny2800

O RLY?나는 그것을 몰랐다! 작고 보기 흉한 사람.
OldBunny2800

BTW 여기 골프 팁이 있습니다.
Leaky Nun

6

C, 60 바이트

#include <stdio.h>
main(){int a,b;scanf("%d %d",&a,&b);a%b==0;}

1
왜 -1입니까? 설명해주십시오
Ronronner

3
아무도 공감하지 않았을 가능성이 있습니다. 이 답변은 짧은 답변이므로 품질이 낮게 표시되어 편집 한 것입니다. 어떤 이유로, 이것은 자동 downvote를 캐스팅합니다 . 미안합니다. +1나에게서. 또한 우리는 기능을 허용하므로 쉽게 단축 int f(a,b){return !(a%b);}하거나 더 짧게 할 수 있습니다 .
DJMcMayhem

3
아니, 내 요점은 그것이 완전한 프로그램 일 필요는 없다는 것이다. 대신 함수 만 제출하면됩니다. int f(a,b){return!(a%b);}25 바이트이며 올바른 컴파일러를 사용하면 f(a,b){return!(a%b);}21 바이트 도 할 수 있습니다.
DJMcMayhem

3
더 짧은 함수 제출 : #define f(a,b)!(a%b)( ideon link )
Mego

2
스 니펫뿐만 아니라 함수 나 프로그램을 정의해야합니다.
Leaky Nun


5

R, 22 20 바이트

a=scan();!a[1]%%a[2]

일반적으로 빈 줄로 끝나는 입력에서 두 개의 숫자를 읽습니다.

업데이트 : 2 바이트를 깎아 준 Jarko Dubbeldam 에게 감사드립니다 (편집이 거부되었다는 사실에도 불구하고 매우 도움이되었습니다!).


5

자바 8, 11 바이트

a->b->a%b<1

도대체 JS와 C # 버전이 있는데 왜 Java 버전도 아닌가?

용법:

import java.util.function.Function;

public class Program {
    public static void main(String[] args) {
        System.out.printf("%d, %d %b%n", 9, 3, divides(9, 3, a->b->a%b<1));
        System.out.printf("%d, %d %b%n", 3, 9, divides(3, 9, a->b->a%b<1));
    }

    public static boolean divides(int a, int b,
            Function<Integer, Function<Integer, Boolean>> f) {
        return f.apply(a).apply(b);
    }
}

a->b->a%b<1구문 오류가 발생합니까?
dorukayhan 님이 Monica 님을

2
아니요. 유효한 Java 8입니다.
David Conrad

때로는 자바조차도 펄처럼 보인다.
Mega Man

네, Java 8 전용입니다.)
Magic Octopus Urn

따라서 Java 8에서는 전체 클래스 및 함수 상용구가 아닌 람다 식 바이트 만 계산해야합니다.
Sikorski

4

파이썬, 16 바이트

lambda D,d:D%d<1

1
음의 정수가 허용 된 경우에는 작동하지 않습니다. 운 좋게도 입력은 엄격하게 양수입니다.
TLW

나는 lambda a,b:1.*a/b==a/b했지만 매우 감동했습니다. 이것은 매우 복잡한 코드 조각입니다.
Erik the Outgolfer





3

포트란 95, 78 바이트

function f(i,j)result(k)
integer::i,j,k
k=merge(1,0,MOD(i,j)<1)
end function f

3

MarioLANG, 121 (109) 107 바이트

Martin Ender 덕분에 14 바이트 절약

;>(-)-)+(([!)
)"=========#[
; +(![-)< )<!+
  ==#==="  "#:
>!< >(+ !![(<
=#"="===##=:"
  !      <
  #======"

온라인으로 사용해보십시오!

설명

이 알고리즘은 뺀 유지하는 것입니다 d에서 n당신이 그것을 정수 번을 더 나머지를 가질 수 있는지.

;
)
;

>
=
 
 

먼저 입력이 수집됩니다. n첫 번째 셀 d에 있고 두 번째 셀에 있습니다.

 >(-)-)+(([!
 "=========#
          )<
           "
 !
 #"="===##=
  
  

이것은 본질적으로 메인 루프입니다. 첫 번째와 두 번째 셀을 줄이고 세 번째 셀을 증가시킵니다.

           [!)
           =#[
             !+
             #:
            (<
            :"
 
 

이것이 최종 출력입니다. 증가 / 감소 후에 첫 번째 셀이 0이면 제거했습니다 n. 이 후 두 번째 셀 ( d)이 0이면 고르게 d들어갑니다 n. 증가하고 인쇄합니다 ( 1). 그렇지 않으면 첫 번째 셀 ()로 돌아가서 0인쇄하십시오.

 
 
  +(![-)<  
  ==#==="  
 !< >(+ !![
 #"="===##=
  !      <
  #======"

이 루프는 두 번째 셀이 0증가 및 감소한 후에 발생합니다 . 세 번째 셀을 두 번째 셀에 복사합니다. 셀이 아닌 경우 맨 아래 부분은 루프를 우회하는 것 0입니다.


3

Tcl, 34 바이트

ge stdin a
ge stdin b
exp $a%$b<1

codegolf에서의 첫 번째 / * 성공한 * / 시도! 이 코드는 Tcl shell에서 실행해야합니다. 그렇지 않으면 작동하지 않습니다.

@Lynn 덕분에 1 바이트.

@Lynn과 @LeakyNun 덕분에 4 바이트 (지금은 그가 무엇을 의미하는지 이해했습니다)!


생략 할 수 있습니까 ?1:0?
Leaky Nun

@LeakyNun 그것은 삼항 연산입니다. sth가 눈에 띄면 sth를 반환한다는 의미입니까?

무엇이 $a%$b==0돌아 올까요?
Leaky Nun

1
내 말은, 당신의 세 번째 줄은 그냥있을 수 exp $a%$b==0있습니까?
Leaky Nun

1
아니면 exp $a%$b<1?
Lynn

3

PHP, 23 22 바이트

<?=$argv[1]%$argv[2]<1

1이면 true, 빈 문자열 (= nothing)은 false

와 CLI에서 호출 nd인수로


고대 PHP의 경우 10 바이트 : <?=$n%$d<1


PHP4.1을 사용하지 않아도되는 경우 : <?=!($A%$B). 값은 당신의 한 부분으로 전달 될 수있는 $_SESSION, $_COOKIE, $_POST, $_GET또는 (내가 잘못 아니에요 경우) 이상 $_ENV.
Ismael Miguel

@Ismael Miguel : 사실은 아니지만 고대 PHP 버전을 게시하고 추가하는 데 지쳤습니다 for PHP<5.4 with register_globals=On. 하지만 참고로 추가하겠습니다.
Titus

실제로는 " for PHP<5.4 with register_globals=On" 라고 말할 수 없습니다 . php.ini포함 된 파일 의 바이트 수를 계산해야하기 때문 register_globals=On입니다. 그러나 PHP4.1은 특별한 경우입니다. register_globals=On기본값 인 마지막 버전 이며 대부분의 기능은 PHP4.1 이상에서 사용할 수 있습니다. 이 버전은 또한 경고 ereg와 같은 다른 기능을 사용할 수 있습니다 split.
Ismael Miguel

3

J, 3 바이트

0=|

용법:

2 (0=|) 10 

돌아갑니다 1. 그리고 의사 코드와 같습니다10 MOD 2 EQ 0

J는 APL에서 많은 영향을 받기 때문에 APL 답변 과 매우 유사합니다.


좋은 첫 답변, PPCG에 오신 것을 환영합니다!
Leaky Nun

@LeakyNun 감사합니다, 나는 항상 주변을 둘러 보았습니다.
emiflake

3

PowerShell v2 +, 20 바이트

!($args-join'%'|iex)

두 개의 명령 라인 인수로 입력을 받아 $args, -join이있는 스트링으로 함께 S는 %세퍼레이터로서, 파이프 것과 iex(짧은 Invoke-Expression과 유사 eval). 결과는 어느 인 0우리가 아닌 부울를 취할 수 있도록, 비 - 제로 !하는 수단 중 어느 하나, 그 결과 $TRUE또는 $FALSE(truthy를 PowerShell의 영이 아닌 정수이다). 해당 부울은 파이프 라인에 남아 있으며 출력은 암시 적입니다.

대체 버전, 각 20 바이트

param($a,$b)!($a%$b)
!($args[0]%$args[1])

입력을 구성하는 방식이 약간 다릅니다. 이를 제공하는 @DarthTwon에게 감사합니다.

PS C:\Tools\Scripts\golfing> .\divisibility-test.ps1 24 12
True

PS C:\Tools\Scripts\golfing> .\divisibility-test.ps1 24 13
False

PS C:\Tools\Scripts\golfing> .\divisibility-test.ps1 12 24
False

나는이 질문에 골프 시도 다른 방법의 모두에서, 나는 또한 20 바이트에있어 : param($a,$b)!($a%$b)!($args[0]%$args[1])
ThePoShWolf

@DarthTwon 실제로. 적은 양의 연산을 처리 할 때 일반적으로 입력 인수를 취하는 여러 가지 방법으로 최대 1 바이트 또는 2 바이트의 차이가 있습니다.
AdmBorkBork

나는 더 짧은 것을 제안하기를 바랐다 : P, 그렇다. 특히 PS에서 고양이를 껍질을 벗기는 여러 가지 방법이 항상있다.
ThePoShWolf

3

하스켈, 13 11 바이트

((1>).).mod

이것은 새로운 기능을 정의합니다 (!) :: Integral n => n -> n -> Bool. 및 mod n m양수인 경우 양수 만 반환 하므로 대신을 사용하여 바이트를 절약 할 수 있습니다 .nm1>0==

용법:

ghci> let n!d=1>mod n d
ghci> 100 ! 2
True
ghci> 100 ! 3
False

포인트 프리로 가서 2 바이트를 절약 할 수 있습니다 ((1>).).mod.
nimi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.